thread_39.sh

386 işlemcinin kayıtları için saçma derecede karmaşık devre

0 replies 2 views {"en": "General Discussion", "tr": "Genel Tartışma", "ru": "Общее обсуждение"}
righto.com
righto.com
OP
user
2025-05-01 17:04:00

Çığır açan Intel 386 işlemci (1985), x86 mimarisindeki ilk 32 bit işlemciydi. Çoğu işlemci gibi 386 da çok sayıda kayıt içerir; kayıtlar işlemcinin önemli bir parçasıdır çünkü ana bellekten çok daha hızlı depolama sağlarlar. 386'nın kayıt seti genel amaçlı kayıtları, indeks kayıtlarını ve bölüm seçicileri de içerir Bellek yönetimi ve işletim sistemi uygulaması için özel işlevlere sahip kayıtlar olarak. Bu blog yazısında 386'nın silikon kalıbına bakıp işlemcinin ana kayıtlarını nasıl uyguladığını anlatacağım.

386'nın kayıtlarını uygulayan devrenin beklenenden çok daha karmaşık olduğu ortaya çıktı. İncelediğim 30 kayıt için standart devre kullanmak yerine 386sixfarklı devre kullanıyor, her biri kaydın belirli özelliklerine göre optimize edilmiştir. Intel, bazı kayıtlar için depolama kapasitesini iki katına çıkarmak amacıyla kayıt hücrelerini bir araya getiriyor. Diğer kayıtlar aynı anda 8, 16 veya 32 bitlik erişimi destekler. Kayıt dosyasının çoğu "üç portlu" olup, bir değer yazılırken iki kaydın aynı anda okunmasına olanak tanır üçüncü bir kayda. Son olarak, yazmaçların bitleri sırayla saklamadığını görünce şaşırdım: her yazmacın alt 16 biti serpiştirilirken üst 16 biti doğrusal olarak depolanır.

Aşağıdaki fotoğraf, 386'nın tırnak büyüklüğündeki parlak silikon kalıbını özel bir metalurjik mikroskop altında göstermektedir. Ana işlevsel blokları etiketledim. Bu yazı için çipin sol alt çeyreğindeki Veri Birimi ilgili bileşendir. 32 bitlik aritmetik mantık biriminden (ALU) oluşur. işlemcinin ana kayıt bankasıyla (altta kırmızıyla vurgulanmıştır). Veri yolu adı verilen devre, işlemcinin kalbi olarak görülebilir.

This die photo of the 386 shows the location of the registers. Click this image (or any other) for a larger version.

386'nın bu kalıp fotoğrafı kayıtların yerini gösteriyor. Daha büyük bir versiyon için bu görsele (veya başka bir görsele) tıklayın.

Veri yolu düzenli bir yapıyla inşa edilmiştir: her kayıt veya ALU işlevsel birimi yatay bir devre şerididir, görüntüde görünen yatay bantları oluşturur. Çoğunlukla bu devre, işlemcinin her biti için bir kez olmak üzere 32 kez kopyalanan, dikkatlice optimize edilmiş bir devreden oluşur. Bir bit için her devre tam olarak aynı genişliktedir (60 µm), böylece fonksiyonel bloklar mikroskobik gibi bir arada istiflenebilir LEGO tuğlaları. Bu devreleri bağlamak için metal veri yolu hatları veri yolundan 32'li gruplar halinde dikey olarak geçerek verilerin bloklar arasında yukarı ve aşağı akmasına olanak tanır. Bu arada, kontrol hatları yatay olarak çalışarak ALU işlemlerini veya kayıt okuma ve yazma işlemlerini mümkün kılar; düzensiz devre Veri Biriminin sağ tarafında bu kontrol hatları için sinyaller üretilerek uygun kontrolün etkinleştirilmesi sağlanır. Her talimat için satırlar.

Veri yolu, kalıp üzerindeki alanını en aza indirirken performansı en üst düzeye çıkaracak şekilde yüksek düzeyde yapılandırılmıştır. Aşağıda bu yapıya göre kayıtların nasıl uygulandığına bakacağım.

386'nın kayıtları

Bir işlemcinin kayıtları, işlemci mimarisinin en görünür özelliklerinden biridir. 386 işlemci, uygulama programcıları tarafından kullanılmak üzere 16 kayıt içerir; bu, modern standartlara göre az sayıdadır. ama o zamana yetecek kadar büyük. Aşağıdaki şemada sekiz adet 32 ​​bitlik genel amaçlı kayıtlar gösterilmektedir. En üstte EAX, EBX, ECX ve EDX adı verilen dört kayıt vardır. Bu yazmaçlar 32 bitlik yazmaçlar olmasına rağmen, geriye doğru kayıtlar için 16 veya 8 bitlik yazmaçlar olarak da ele alınabilirler. önceki işlemcilerle uyumluluk. Örneğin, EAX'in alt yarısına 16 bitlik yazmaç AX olarak erişilebilirken, EAX'in alt baytı 8 bitlik AL yazmacı olarak erişilebilir. Ayrıca 15-8 bitlerine AH adı verilen 8 bitlik bir kayıt olarak da erişilebilir. Başka bir deyişle, EAX kaydına erişmenin dört farklı yolu vardır ve benzer şekilde diğer üç kayıt için de geçerlidir. Görüleceği üzere bu özellikler kayıt kümesinin uygulanmasını zorlaştırmaktadır.

The general purpose registers in the 386. From 80386 Programmer's Reference Manual, page 2-8.

386'daki genel amaçlı kayıtlar.80386 Programcının Referans Kılavuzu, sayfa 2-8.

Diyagramın alt yarısı, 32 bitlik EBP, ESI, EDI ve ESP kayıtlarının aynı zamanda 16 bitlik BP, SI, DI ve SP kayıtları olarak da ele alınabileceğini göstermektedir. Önceki kayıtlardan farklı olarak bunlar 8 bitlik kayıtlar olarak değerlendirilemez. 386 ayrıca, bellek bölümlerinin başlangıcı; bunlar 16 bitlik kayıtlardır. 16 uygulama kaydı durum bayrakları ve talimat işaretçisi (EIP) ile tamamlanır; 32 bitlik yazmaçlar olarak görülürler ancak uygulanmaları daha karmaşıktır. 386'nın ayrıca işletim sistemi programlaması için çok sayıda kaydı vardır, ancak bunları burada tartışmayacağım çünkü bunlar muhtemelen çipin diğer kısımlarındadır.1 Son olarak, 386'nın programcı tarafından görülemeyen ancak mikro kod tarafından kullanılan çok sayıda geçici kaydı vardır. karmaşık talimatları gerçekleştirmek için.

6T ve 8T statik RAM hücreleri

386'nın kayıtları, bir bit tutabilen bir devre olan statik RAM hücreleriyle uygulanır. Bu hücreler, birden fazla kayıt sağlamak için bir ızgara halinde düzenlenmiştir. Statik RAM, bilgisayarların ana bellekleri için kullandığı dinamik RAM ile karşılaştırılabilir: Dinamik RAM her bir biti küçük bir kapasitörde tutarken, statik RAM daha hızlı ancak daha büyük ve daha karmaşık bir devre kullanır. Ana bellek gigabaytlarca veri barındırdığından, yoğun ve ucuz depolama sağlamak için dinamik RAM kullanır. Ancak kayıtlar için ödünleşimler farklıdır: depolama kapasitesi küçüktür, ancak hız çok önemlidir. Bu nedenle kaydediciler aşağıda anlatacağım statik RAM devresini kullanırlar.

Statik bir RAM hücresinin arkasındaki konsept, iki invertörü bir döngüye bağlamaktır. Bir invertörün girişi "0" ise, çıkış "1" olacaktır ve bunun tersi de geçerlidir. Böylece invertör döngüsü kararlı olacak, bir invertör açık ve bir invertör kapalı ve her invertör diğerini destekliyor. Hangi invertörün açık olduğuna bağlı olarak devre, aşağıda gösterildiği gibi 0 veya 1'i saklar. Böylece, invertör çifti bir bitlik bellek sağlar.

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

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

Bununla birlikte, faydalı olması için, invertör döngüsünün, depolanan biti okumanın yanı sıra, içine bir bit depolamanın bir yoluna ihtiyacı vardır. Devreye yeni bir değer yazmak için iki sinyal beslenir ve invertörleri istenen yeni değerlere zorlar. Bir evirici yeni bit değerini alırken diğer evirici tamamlayıcı bit değerini alır. Bu, biti güncellemenin kaba kuvvet yöntemi gibi görünebilir, ancak işe yarıyor. İşin püf noktası, hücredeki invertörlerin küçük ve zayıf olması, giriş sinyallerinin ise daha yüksek akım olmasıdır. invertörlere aşırı güç verebilir.2 Bu sinyaller "bit hatları" adı verilen kablolama yoluyla beslenir; bit satırları değeri okumak için de kullanılabilir hücrede saklanır.

By adding two pass transistors to the circuit, the cell can be read and written.

Devreye iki geçişli transistör eklenerek hücre okunabilir ve yazılabilir.

Kayda erişimi kontrol etmek için, bit hatları invertörlere anahtar görevi gören geçiş transistörleri aracılığıyla bağlanır. İnvertör döngüsüne erişimi kontrol edin.3 Geçiş transistörleri açıkken Yazma hatlarındaki sinyaller invertörlere geçebilir. Ancak geçiş transistörleri kapalı olduğunda, invertörler yazma hatlarından izole edilmiştir. Geçiş transistörleri, bir sözcüğe erişimi kontrol ettiğinden "kelime satırı" adı verilen bir kontrol sinyaliyle açılır. kayıt defterinde saklanması. Her invertör iki transistörden oluştuğu için yukarıdaki devre altı transistörden oluşur; dolayısıyla bu devreye "6T" hücre adı verilir.

6T hücresi okuma ve yazma için aynı bit hatlarını kullanır, dolayısıyla kayıtları aynı anda okuyup yazamazsınız. Ancak iki transistör eklemek, tek bir kayıttan okumanıza izin veren bir "8T" devresi oluşturur ve aynı anda başka bir kayda yazın. (Teknik açıdan kayıt dosyası iki portludur.) Aşağıdaki 8T şemasında okuma için iki ek transistör (G ve H) kullanılmıştır. Transistör G hücrenin değerini tamponlar; eğer invertör çıkışı yüksekse açılır ve okuma çıkışı bit hattını düşük seviyeye çeker.4Transistör H, bu kayıtta bir okuma gerçekleştirilene kadar bu sinyali bloke eden bir geçiş transistörüdür; okunan bir kelime satırı tarafından kontrol edilir. Yazmak için iki bit hattının (daha önce olduğu gibi) yanı sıra okumak için bir bit hattının bulunduğunu unutmayın.

Schematic of a storage cell. Each transistor is labeled with a letter.

Bir depolama hücresinin şeması. Her transistör bir harfle etiketlenmiştir.

Kayıtları (veya belleği) oluşturmak için bu hücrelerden bir ızgara oluşturulur. Her satır bir kayda karşılık gelirken, her sütun bir bit konumuna karşılık gelir. Yatay çizgiler hangi kelimeye erişileceğini seçen kelime satırlarıdır. dikey çizgiler, bitlerin kayıtların içine veya dışına iletildiği bit hatlarıdır. Bir yazma için dikey bit hatları 32 biti (tamamlayıcılarıyla birlikte) sağlar. Okuma için dikey bit hatları kayıttan 32 bit alır. Seçilen kaydı okumak veya yazmak için bir kelime satırı etkinleştirilir. Özetlemek gerekirse: her satır bir kayıttır, veriler dikey olarak akar ve kontrol sinyalleri yatay olarak akar.

Static memory cells (8T) organized into a grid.

Bir ızgara halinde düzenlenmiş statik bellek hücreleri (8T).

386'da altı yazmaç devresi

Aşağıdaki kalıp fotoğrafı, 386 işlemcinin sol alt köşesindeki yazmaç devresini yakınlaştırıyor. Depolama hücrelerinin düzenini bir ızgara halinde görebilirsiniz ancak desenin satırdan satıra değiştiğini unutmayın. Bu devre 30 kayıt uygular: Kayıtların 22'si 32 bit tutarken, alttakiler 16 bitlik kayıtlardır. Zarı inceleyerek altı farklı yazmaç devresi olduğunu belirledim. bunu keyfi olarak (a) (f) olarak etiketledim. Bu bölümde bu altı kayıt türünü anlatacağım.

The 386's main register bank, at the bottom of the datapath.  The numbers show how many bits of the register can be accessed.

386'nın ana kayıt bankası, veri yolunun altındadır. Sayılar, kaydın kaç bitine erişilebileceğini gösterir.

En alttan en basit devreyle başlayacağım: type (f) adını verdiğim sekiz adet 16 bitlik kayıt. Kayıt dosyasının sol tarafında bir "çentik" görebilirsiniz çünkü bu kayıtlar diğer kayıtların yarısı kadar genişliktedir (16 bit'e karşı 32 bit). Bu kayıtlar, daha önce açıklanan 8T devresiyle uygulanır ve bu da onları çift bağlantı noktalı hale getirir: bir kayıt okunurken başka bir kayıt yazılır. Daha önce açıklandığı gibi, her bitten üç dikey veri yolu hattı geçer: okuma için bir bit hattı ve iki bit hattı (zıt kutuplu) yazmak için. Her kaydın iki kontrol satırı (sözcük satırları) vardır: biri okuma için bir kayıt seçmek için, diğeri ise yazmak için bir kayıt seçmek için.

Aşağıdaki fotoğraf, çip üzerinde dört hücre tipinin (f) nasıl uygulandığını göstermektedir. Bu görüntüde, çipin iki metal katmanı, polisilikon kabloların çoğuyla birlikte çıkarılmış ve altta yatan silikon görülüyor. Koyu çizgiler katkılı silikon bölgelerini gösterirken katkılı bölge boyunca şeritler transistöre karşılık gelir kapılar. Her transistörü önceki şemaya karşılık gelen bir harfle etiketledim. Alt yarının düzeninin üst yarının yansıtılmış bir kopyası olduğuna ve biraz yer tasarrufu sağladığına dikkat edin. Sol ve sağ taraflar yaklaşık olarak yansıtılmıştır; Düzensiz şekil, ayrı okuma ve yazma kelime satırlarına izin verir çarpışmadan sol ve sağ yarıları kontrol etmek.

Four memory cells of type (f), separated by dotted lines. The small irregular squares are remnants of polysilicon
that weren't fully removed.

(f) türünde dört bellek hücresi, noktalı çizgilerle ayrılmış. Küçük düzensiz kareler...



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

🔗 Kaynak Baglantisi: http://www.righto.com/2025/05/intel-386-register-circuitry.html

Thread Statistics

Views 2
Replies 0
Author righto.com
Created 2025-05-01
Status
Open