
Intel 8087-nin tangens alqoritmi tərs mühəndisliklə araşdırıldı: CORDIC-dən çoxu
Ken Şirriff Intel 8087 riyazi köməkçi prosessorunun kristalını və mikrokodunu araşdırıb; FPTAN əmrinin 64 bit dəqiqliyə çatmaq üçün 16 bitlik CORDIC-i Padé rasional yaxınlaşması ilə birləşdirdiyini müəyyən edib.
1980-ci ildə təqdim edilən Intel 8087 riyazi köməkçi prosessoru IBM PC-də sürüşən nöqtə hesablamalarını xeyli sürətləndirdi: tangens 8086-da təxminən 13 000 mikrosaniyə çəkirdisə, 8087-də bu müddət 90 mikrosaniyəyə düşdü. Ken Şirriff çipin kristalını və mikrokodunu araşdıraraq FPTAN əmrinin alqoritmini bərpa edib: 8087 yalnız CORDIC ilə kifayətlənməyib.
CORDIC: B-58-dən 8087-yə
Çip 1956-cı ildə Cek Volderin B-58 Hustler bombardmançısı üçün hazırladığı CORDIC alqoritmindən istifadə edirdi. CORDIC yalnız sürüşdürmə, toplama və əvvəlcədən hesablanmış xüsusi bucaqlar cədvəli (arctan(2^-n)) tələb edir; vurma və bölmə lazım deyil: (1, 0) vektorunu bu bucaqlarla fırlatmaqla (X, Y) nöqtəsi alınır, tangens Y/X-dir.

Niyə rasional çoxhədli
16 CORDIC addımı təqribən 16 bit verir, 64 bit üçün isə 64 addım lazım olardı. Buna görə 8087 qalıq bucağı (təqribən 2^-16) Padé yaxınlaşması ilə hesablayır: xətası x⁴ kimi artan və 2^-64-dən aşağı qalan 3x/(3-x²) nisbəti. İki çoxhədlinin nisbəti tangensi Teylor sırasından daha yaxşı təsvir edir, çünki funksiya π/2-də sonsuzluğa gedir; FPTAN surəti və məxrəci ayrı qaytardığı üçün bölmə heç nəyə başa gəlmir.
Mikrokodda üç mərhələ
Mikrokodun ROM-u 1648 mikro əmr saxlayır və FPTAN #1039 ünvanından başlayır. Yalançı bölmə mərhələsi giriş bucağını saxlanılan CORDIC bucaqları ilə müqayisə edir və qərarları 16 bitlik sürüşdürmə registrinə yazır; 0,95 radian üçün ardıcıllıq 10010101 00100111 olur. Sonra rasional yaxınlaşma gəlir, ardınca yalançı vurma: fırlanmalar sürüşdürmə və toplama ilə, yuvarlaqlaşdırma xətasını azaltmaq üçün tərs qaydada, ən kiçikdən başlayaraq tətbiq olunur. Hesablamaların çoxu gizli eksponentlərlə 64 bitlik tam ədəd arifmetikasıdır; ən bahalı əməliyyat bucağın kvadratının alınmasıdır.

Apparat və məhsuldarlıq
Ədədlər 80 bitlik «temporary real» formatında saxlanılır: işarə biti, 15 bitlik sürüşdürülmüş eksponent və 64 bitlik mantissa; yığının hər registrinin etiketi var: zero, valid, special və ya empty. FPTAN adətən 450 takt çəkir; 0,95 üçün vaxtın 33%-i yalançı bölməyə, 15%-i çoxhədliyə, 47%-i yalançı vurmaya, 5%-i əlavə xərclərə gedir. Intel Pentium üçün çoxhədli yaxınlaşmalara keçdi.
Tədqiqat «Opcode Collective» üzvləri ilə birlikdə aparılıb: ROM təsvirləri maşın öyrənməsi klassifikatoru ilə mikrokod məlumatlarına çevrilib.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.