thread_28.sh

Intel 8087 kayan nokta çipinin yığın devresi, tersine mühendislikle geliştirildi

0 replies 3 views {"en": "Reverse Engineering", "tr": "Tersine Mühendislik", "ru": "Реверс-инжиниринг"}
righto.com
righto.com
OP
user
2025-12-09 17:54:00

İlk mikroişlemciler kayan noktalı sayılarla çalışırken çok yavaştı. Ancak 1980'de Intel, 8087 kayan noktalı yardımcı işlemciyi tanıttı. kayan nokta işlemleri yukarı 100 kat daha hızlı. Bu, IBM PC için büyük bir avantajdı AutoCAD, elektronik tablolar ve uçuş simülatörleri gibi uygulamalar. 8087 o kadar etkiliydi ki günümüz bilgisayarları hala 8087'yi temel alan kayan nokta sistemini kullanıyor.1

8087, zamanına göre son derece karmaşık bir çipti; Kaynağa bağlı olarak 40.000 ve 75.000 transistör.28087'nin nasıl çalıştığını keşfetmek için bir çip açtım ve silikon kalıbın mikroskopla çok sayıda fotoğrafını çektim. Kalıbın kenarlarında çipi 40 harici pime bağlayan saç inceliğinde bağ tellerini görebilirsiniz. Kalıp üzerindeki karmaşık desenler, altındaki polisilikon ve silikonun yanı sıra metal kablolaması tarafından oluşturulmaktadır. Çipin alt yarısı, 80 bitlik kayan nokta değerleri üzerinde hesaplamalar gerçekleştiren devre olan "veri yolu"dur. Veri yolunun solunda birsabit ROMπ gibi önemli sabitleri tutar. Sağda yığın kontrol devresi ile birlikte yığını oluşturan sekiz kayıt bulunmaktadır.

Die of the Intel 8087 floating point unit chip, with main functional blocks labeled. The die is 5mm×6mm.  Click for a larger image.

Ana işlevsel blokların etiketlendiği Intel 8087 kayan nokta birimi yongasının kalıbı. Kalıp 5mm × 6mm'dir. Daha büyük bir resim için tıklayın.

Çipin talimatları büyük harflerle tanımlanır.mikro kod ROM'uortada. Bu ROM çok sıra dışı; yarı analogdur ve dört transistör boyutunu kullanarak transistör başına iki bit depolar. Kayan noktalı bir talimatı yürütmek için 8087, talimatın kodunu çözer ve mikro kod motoru yürütmeye başlar. Mikrokod ROM'daki uygun mikro talimatlar. ROM'un sağındaki kod çözme devresi, her mikro talimattan uygun kontrol sinyallerini üretir. Veri yolu kayıtları ve kontrol devresi, ana 8086 işlemci ve sistemin geri kalanıyla etkileşimi yönetir. Son olarak,önyargı üreteciçipin alt tabakasını, yani altta yatan silikonu saptırmak için negatif bir voltaj oluşturmak üzere bir şarj pompası kullanır.

Yığın kayıtları ve kontrol devresi (yukarıda kırmızı renkte) bu blog yazısının konusudur. Çoğu işlemciden farklı olarak 8087, kayıtlarını bir yığın halinde düzenler ve yönergeler yığının en üstünde çalışır. Örneğin, karekök komutu yığının en üstündeki değeri kareköküyle değiştirir. Ayrıca yığının tepesine göre bir kayda da erişebilirsiniz; örneğin, en üstteki değeri, üstten iki konum aşağıdaki değere ekleyerek. Yığın tabanlı mimarinin amacı komut setini geliştirmek, derleyici tasarımını basitleştirmek ve işlev yapmaktı. umulduğu kadar işe yaramasa da aramalar daha verimli oldu.

The stack on the 8087. From The 8087 Primer, page 60.

8087'deki yığın.8087 Astarı, sayfa 60.

Yukarıdaki diyagram yığının nasıl çalıştığını göstermektedir. Yığın sekiz kayıttan oluşur ve Yığın Üstü (ST) yığının mevcut üst noktasını gösterir. Kayan noktalı bir değeri yığına göndermek için Yığın Üstü azaltılır ve ardından değer yeni üst kayıtta saklanır. Yığın tepesinden değer kopyalanarak ve ardından Yığın Üstü artırılarak bir pop gerçekleştirilir. Buna karşılık, çoğu işlemci kayıtları doğrudan belirtir, dolayısıyla kayıt 2 her zaman aynı kayıttır.

Kayıtlar

Yığın kayıtları 8087'nin kalıbı üzerinde önemli bir alan kaplar çünkü kayan nokta sayıları birçok bit alır. Kayan noktalı sayı, kesirli bir bölümden (bazen mantis veya anlamlı olarak da adlandırılır) oluşur. üs kısmı; üs, kayan noktalı sayıların aşırı küçükten aşırıya kadar bir aralığı kapsamasına izin verir büyük. 8087'de kayan noktalı sayılar 80 bittir: 64 bit anlamlı, 15 bit üs ve bir işaret biti. 8 bitlik veya 16 bitlik bilgisayarların çağında 80 bitlik bir kayıt çok büyüktü; 8087'deki sekiz kayıt 8086 işlemcideki 40 kayda eşdeğer olacaktır.

The registers in the 8087 form an 8×80 grid of cells. The close-up shows an 8×8 block. I removed the metal layer with acid to reveal the underlying silicon circuitry.

8087'deki kayıtlar 8x80'lik bir hücre ızgarası oluşturur. Yakın plan 8x8'lik bir bloğu göstermektedir. Alttaki silikon devreyi ortaya çıkarmak için metal tabakayı asitle çıkardım.

Kayıtlar her biti statik bir RAM hücresinde saklar. Her hücrede bir döngüye bağlı iki invertör bulunur. Bu devre, bir invertörün açık ve bir invertörün kapalı olduğu sabit bir geri besleme döngüsü oluşturur. Hangi invertörün açık olduğuna bağlı olarak devre 0 veya 1 değerini saklar. Devreye yeni bir değer yazmak için hatlardan biri aşağıya çekilerek döngü istenilen duruma döndürülür. İşin püf noktası, her invertörün çıkışı yükseğe çekmek için çok zayıf bir transistör kullanması, dolayısıyla çıkışının kolayca aşırı güçlenmesidir. durumu değiştirmek için.

Two inverters in a loop can store a 0 or a 1.

Bir döngüdeki iki invertör 0 veya 1'i saklayabilir.

Bu invertör çiftleri, 80 bitlik sekiz kelimeyi uygulayan 8 × 80'lik bir ızgarada düzenlenmiştir. 80 satırın her birinde iki tane varbit hatlarıbu biraz erişim sağlar. Bit hatları, bir bit'e hem okuma hem de yazma erişimi sağlar; bit hattı çifti, her iki invertörün de istenen bit değerini depolamak için aşağı çekilmesine olanak tanır. Sekiz dikeysöz satırlarıbir kelimeye, 80 bitlik bir sütuna erişimi etkinleştirin. Her kelime satırı, bit hatlarını seçilen sütundaki invertörlere bağlayan 160 geçiş transistörünü açar. Böylece, bir kelime satırı etkinleştirildiğinde, bit hatları o kelimeyi okumak veya yazmak için kullanılabilir.

Çip iki boyutlu görünse de aslında birden fazla katmandan oluşuyor. Alt katman silikondur. Aşağıdaki pembemsi bölgeler, silikonun elektriksel özelliklerini değiştirmek için "katkılandığı" ve onu aktif hale getirdiği yerdir. devrenin bir parçası. Katkılı silikon, ortada daha büyük katkılı bölgelere sahip, yatay ve dikey kablolardan oluşan bir ızgara oluşturur. Silikonun üstünde polisilikon kablolama iki işlev sağlar. İlk olarak, devreyi bağlamak için bir kablolama katmanı sağlar. Ancak daha da önemlisi, polisilikon katkılı silikonla karşılaştığında bir transistör oluşturur. Polisilikon, transistörü açıp kapatan geçidi sağlar. Bu fotoğrafta polisilikon zar zor görülebiliyor, bu yüzden bir kısmını kırmızıyla vurguladım. Son olarak, yatay metal teller üçüncü bir ara bağlantı kabloları katmanı sağlar. Normalde metal, alttaki devreyi gizler, bu yüzden bu fotoğraf için metali asitle çıkardım. Metal katmanı temsil etmek için mavi çizgiler çizdim. Kişiler çeşitli katmanlar arasında bağlantı sağlar.

A close-up of a storage cell in the registers. The metal layer and most of the polysilicon have been removed to show the underlying silicon.

Kayıtlardaki bir depolama hücresinin yakından görünümü. Alttaki silikonu göstermek için metal katman ve polisilikonun büyük kısmı çıkarıldı.

Katmanlar, aşağıda noktalı çizgiyle gösterilen bir bellek hücresinin invertörlerini ve seçim transistörlerini oluşturmak üzere birleşir. Polisilikon'un katkılı silikonla kesiştiği altı transistör (sarı) vardır. Her invertörün bir transistörü vardır. çıkışı düşük çeker ve çıkışı yükseğe çekmek için zayıf bir transistör kullanır. Kelime satırı (dikey polisilikon) aktif olduğunda, seçilen invertörleri iki seçim yoluyla bit hatlarına (yatay metal) bağlar. transistörler. Bu, bitin okunmasına veya yazılmasına izin verir.

The function of the circuitry in a storage cell.

Bir depolama hücresindeki devrenin işlevi.

Her kayıt kendisiyle ilişkilendirilmiş iki etiket bitine sahiptir; bu, alışılmadık bir meta veri biçimidir. kayıt boşsa, sıfır içeriyorsa, geçerli bir değer içeriyorsa veya sonsuzluk gibi özel bir değer içerir. Etiket bitleri performansı dahili olarak optimize etmek için kullanılır ve çoğunlukla programcıyla ilgisi yoktur. Bir yazmaçla erişilmesinin yanı sıra, etiket bitlerine 16 bitlik bir "Etiket Kelimesi" olarak paralel olarak erişilebilir. Bu, etiketlerin 8087'nin durumunun bir parçası olarak kaydedilmesine veya yüklenmesine olanak tanır; örneğin, kesinti yönetimi sırasında.

Kod çözücü

Kayıt dosyasının ortasına sıkıştırılmış kod çözücü devresi, kayıtlardan birini seçer. Bir kayıt dahili olarak 3 bitlik bir değerle belirtilir. Kod çözücü devresi sekiz kayıt seçiminden birine enerji verir Bu değere göre satırlar.

Kod çözücü devresi basittir: sekiz bitlik modellerden birine uyacak sekiz adet 3 girişli NOR kapısı vardır. Seçim hattı daha sonra büyük transistörler kullanan yüksek akımlı bir sürücü aracılığıyla çalıştırılır. (Aşağıdaki fotoğrafta büyük serpantin sürücü transistörlerini bir bit hücresindeki küçük transistörlerle karşılaştırabilirsiniz.)

The decoder circuitry has eight similar blocks to drive the eight select lines.

Kod çözücü devresinde sekiz seçim hattını çalıştırmak için sekiz benzer blok bulunur.

Kod çözücünün ilginç bir elektriksel optimizasyonu var. Daha önce gösterildiği gibi, kayıt seçme çizgileri dikey olarak uzanan sekiz polisilikon çizgiden oluşur; kayıt dosyası. Ne yazık ki, polisilikon oldukça yüksek dirence sahiptir; silikondan daha iyidir ancak metalden çok daha kötüdür. Sorun şu ki, uzun polisilikon hattın direnci sistemi yavaşlatacaktır. Yani, transistör kapılarının kapasitansı yüksek dirençle birlikte sinyalde RC (dirençli-kapasitif) gecikmeye neden olur.

Çözüm, kayıt seçme satırlarının aynı zamanda metal katmanda da çalışmasıdır; ikinci bir satır seti hemen Kayıt dosyasının sağında. Bu çizgiler kayıt dosyasından yaklaşık 1/3 oranında ayrılır, aşağıya doğru ilerler ve sonra tekrar bağlanır. alttaki polisilikon seçme çizgilerine. Bu, bir seçme hattı boyunca maksimum direnci azaltarak hızı artırır.

A diagram showing how 8 metal lines run parallel to the main select lines. The register file is much taller than shown; the middle has been removed to make the diagram fit.

8 metal çizginin ana seçim çizgilerine nasıl paralel ilerlediğini gösteren bir diyagram. Kayıt dosyası gösterilenden çok daha uzundur; Diyagramın sığması için orta kısım kaldırıldı.

Yığın kontrol devresi

Bir yığın, normal bir kayıt dosyasından daha fazla kontrol devresine ihtiyaç duyar, çünkü devrenin, yığının üst kısmının konumu.3 Kontrol devresi, değerler itildikçe veya atıldıkça yığının tepesi (TOS) işaretçisini artırır ve azaltır (mor).4 Ayrıca, bir 8087 talimatı, ofsetine dayalı olarak bir kayda erişebilir, örneğin üçüncü kayıt üstten. Bunu desteklemek için kontrol devresi geçici olarak yığının üst konumuna (yeşil) bir ofset ekleyebilir. Çoklayıcı (kırmızı), yığının üst kısmını veya toplayıcı çıkışını seçer ve bunu kod çözücüye (mavi) besler. açıklandığı gibi kayıt dosyasındaki (sarı) sekiz yığın kaydından birini seçer ...




⚠️ Bu konu righto.com botu tarafindan otomatik olarak ice aktarilmistir.

🔗 Kaynak Baglantisi: http://www.righto.com/2025/12/8087-stack-circuitry.html

Thread Statistics

Views 3
Replies 0
Author righto.com
Created 2025-12-09
Status
Open