Geri Dön
Intel 8087'nin tanjant algoritması tersine mühendislikle çözüldü: CORDIC'ten fazlası
SiTech AI Team2 წთ. საკითხავი

Intel 8087'nin tanjant algoritması tersine mühendislikle çözüldü: CORDIC'ten fazlası

Ken Shirriff, Intel 8087 matematik yardımcı işlemcisinin kalıbını ve mikrokodunu inceledi; FPTAN komutunun 64 bit doğruluğa ulaşmak için 16 bit CORDIC'i Padé rasyonel yaklaşımıyla birleştirdiğini buldu.

1980'de tanıtılan Intel 8087 matematik yardımcı işlemcisi, IBM PC'de kayan nokta aritmetiğini büyük ölçüde hızlandırdı: bir tanjant 8086'da yaklaşık 13.000 mikrosaniye sürerken 8087'de 90 mikrosaniyeye indi. Ken Shirriff, çipin kalıbını ve mikrokodunu inceleyerek FPTAN tanjant komutunun arkasındaki algoritmayı çözdü; sonuç, 8087'nin yalnızca CORDIC kullanmadığını gösteriyor.

CORDIC: B-58'den 8087'ye

Çip, Jack Volder'ın 1956'da B-58 Hustler bombardıman uçağı için geliştirdiği CORDIC'i kullanıyordu. CORDIC yalnızca kaydırma, toplama ve önceden hesaplanmış özel açılar tablosu (arctan(2^-n)) gerektirir; çarpma ya da bölme gerekmez: (1, 0) vektörünün bu açılarla döndürülmesi (X, Y) noktasını verir ve tanjant Y/X'tir.

CORDIC'te yalancı bölme, 0,95 radyan girdisiyle. Çizim: Ken Shirriff

Neden rasyonel polinom

16 CORDIC adımı yaklaşık 16 bit doğruluk verir; 64 bit için 64 adım gerekirdi. Bu yüzden 8087, küçük kalan açıyı (yaklaşık 2^-16) bir Padé yaklaşımıyla hesaplar: hata payı x⁴ ile büyüyen ve 2^-64'ün altında kalan 3x/(3-x²) oranı. İki polinomun oranı, fonksiyon π/2'de sonsuza gittiği için tanjanta Taylor serisinden daha iyi uyar; FPTAN payı ve paydayı ayrı ayrı döndürdüğü için bölme bedavaya gelir.

Mikrokodda üç aşama

Mikrokod ROM'u 1648 mikro komut tutuyor ve FPTAN #1039 adresinde başlıyor. Yalancı bölme aşaması girdi açısını saklanan CORDIC açılarıyla karşılaştırıp kararları 16 bitlik kaydırma yazmacına yazar; 0,95 radyan için dizi 10010101 00100111 olur. Ardından rasyonel yaklaşım gelir, sonra da yalancı çarpma: döndürmeler kaydırma ve toplamayla, yuvarlama hatasını azaltmak için ters sırada, en küçükten başlanarak uygulanır. Aritmetiğin çoğu örtük üslerle 64 bitlik tamsayı matematiğidir ve en pahalı işlem açının karesini almaktır.

Yalancı çarpma: vektör kaydırma ve toplamayla döner. Çizim: Ken Shirriff

Donanım ve başarım

Sayılar 80 bitlik «temporary real» biçiminde tutulur: işaret biti, 15 bitlik kaydırılmış üs ve 64 bitlik anlamlı kısım; her yığın yazmacının bir etiketi vardır: zero, valid, special veya empty. FPTAN tipik olarak 450 saat çevrimi sürer; 0,95 için sürenin %33'ü yalancı bölmeye, %15'i polinoma, %47'si yalancı çarpmaya, %5'i ek yüke gider. Intel, Pentium'da polinom yaklaşımlarına geçti.

Çalışma «Opcode Collective» üyeleriyle yürütüldü: ROM görüntüleri bir makine öğrenmesi sınıflandırıcısıyla mikrokod verisine dönüştürüldü.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.