
Intel 8087 kayan nokta toplama ve çıkarma mikrokodu ve veri yolu
Intel 8087 çipi kayan nokta toplamayı neredeyse 100 kat hızlandırdı ve toplama ile çıkarma için mikrokod, bir tamsayı tolayıcı, kaydırıcı, üstel mantık ve 80 bit geçici gerçel biçim kullandı.
8087 neden önemliydi
Intel, 8087'yi 1980'de IBM PC ve diğer sistemlerde kayan nokta işlemlerini çok daha hızlı hale getirmek için tanıttı. Çip, tanjant, karekök ve logaritma gibi gelişmiş işlemleri destekliyordu, ancak toplama ve çıkarma, veri yolunun nasıl çalıştığını gösterir. 8087, 8086 işlemciye kıyasla toplamayı neredeyse 100 kat hızlandırdı; karmaşık işlemlerde iyileşme daha da fazlaydı.
Çipin içinde mikrokod ROM'u 1648 mikro komut barındırıyordu. Yonganın alt yarısı, 80 bit değerlerin işlendiği veri yoluydu. Ana blok, merkeze yakın 69 bit tamsayı tolayıcıydı. B kayıtçısından bir, geçici kayıtçılar veya yığın kayıtçıları gibi bloklardan diğerini alıyor ve sonucu toplama kayıtçısına gönderiyordu.
Temel aritmetik için veri yolu blokları
Kayan nokta toplamayı, önce üsler eşitlenene kadar küçük üslü değeri kaydırarak ikili noktaları hizalar. Anlamlı kısımlar tamsayılar olarak toplandıktan sonra, anlamlı kısmın 1 bitiyle başlaması için sonuçun normalize edilmesi gerekebilir. Bir toplama fazladan yüksek bir bit ürettiyse, değer sağa kaydırılır ve üs artar. Çıkarma pozitif, negatif veya sıfır sonuç üretebilir ve normalize etme büyük bir sola kaydırma gerektirebilir. Negatif anlamlı kısım pozitif yapılır ve işaret ters çevrilir; sıfır sonucuna uygun şekilde artı veya eksi sıfır döndürülür.
Kaydırıcı, 68 bit değeri sola veya sağa rastgele sayıda konum taşıyordu ve kaydırmaların hızlı olması gerektiği için yonga üzerinde geniş yer kaplıyordu. Ön sıfır devresi, soldaki sıfır bitleri veya baytları sayarak kaydırılabilmelerini sağlıyordu. Bir üs dönüştürücüsü üsleri işledi ve taşma ile aşırı küçülmeyi algıladı. Hizalama için CREATE_DENORM mikro alt programı, ikinci argümanı toplama kayıtçısında aktarılan üs farkı kadar kaydırdı.
Kayıtçılar, mikrokod akışı ve özel değerler
8087, dahili olarak işaret biti, 16383 kaydırmalı 15 bit üs ve 64 bit anlamlı kısım içeren 80 bit geçici gerçel biçimi kullandı. Sekiz kayıtçı bir yığın oluşturdu ve her değerin sıfır, geçerli, özel veya boş etiketi vardı. Dahili geçici kayıtçılar tmpA ve tmpB'nin yanı sıra 68 bit anlamlı kısım ve koruma, yuvarlama ve yapışkan bitler içeren tmpC'yi kapsıyordu.
Temel matematik işlemleri 0001 mikrokod adresinden başladı, iki argümanı tmpA ve tmpB'ye taşıdı, ardından komut türüne göre seçilen bir hedefi çağırdı. Toplama ve çıkarma 0232 adresinden yürütüldü. Mikrokod sıfır durumlarını işledi, üsleri karşılaştırdı, gerektiğinde argümanların yerini değiştirdi ve işaret değişimlerini işaret mandalında izledi. Ardından işlenenlerin işaretlerine ve işleme göre işaretsiz toplamayı veya işaretsiz çıkarmayı seçti.
İşaretsiz toplama yolunda, hizalanmış anlamlı kısımlar toplanır, elde bir bit sağa kaydırmayı ve üs ayarını tetikledi, hassasiyet 80, 64 veya 32 bit değerler için kırpıldı ve üs taşma veya aşırı küçülme için kontrol edildi. İşaretsiz çıkarmada, toplayıcı tmpA eksi tmpB'yi hesapladı, yuvarlama bitleri düşük sonucu belirleyebilir ve ön sıfır işleme bayt ve bit kaydırmaları üretti. Ortak kod ayrıca sonsuzları, sayı olmayan değerleri, denormal değerleri, sıfırları, yığın çıkarma davranışını ve normalleştirilmeyen değerler için kesmeleri de işledi.
Kaynaklar: righto.com
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.