thread_26.sh

Intel 8086 işlemcinin aritmetik-mantık birimine ilişkin notlar

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

1978'de Intel, modern x86 mimarisine öncülük eden devrim niteliğinde bir çip olan 8086 işlemciyi tanıttı. Ancak modern 64 bit işlemcilerin aksine 8086, 16 bitlik bir yongadır. Aritmetik/mantık birimi (ALU) 16 bitlik değerler üzerinde çalışarak toplama, çıkarma gibi aritmetik işlemleri gerçekleştirir, bit düzeyinde AND, OR ve XOR dahil olmak üzere mantıksal işlemlerin yanı sıra. 8086'nın ALU'su çipin karmaşık bir parçasıdır ve toplamda 28 işlem gerçekleştirir.1

Bu yazıda, ALU'yu kontrol eden, uygun kontrol sinyallerini üreten devreyi tartışıyorum. özel operasyon. Süreç beklediğinizden daha karmaşıktır. İlk olarak, bir makine kodu talimatı birden fazla işlemin yürütülmesiyle sonuçlanır. mikro kod talimatları. ALU'yu kullanmak iki adımlı bir işlemdir: bir mikro kod talimatı (mikro talimat), ALU'yu istenen işlem için yapılandırır, bir saniye kadar Mikro talimat sonuçları ALU'dan alır. Ayrıca, hem mikrokod mikro talimatına hem de makine kodu talimatına dayalı olarak kontrol devresi, ALU'ya kontrol sinyalleri gönderir. İstenilen işlem için yeniden yapılandırılması. Böylece bu devre, mikro talimatlar ile ALU arasında "tutkal" sağlar.

Aşağıdaki kalıp fotoğrafı 8086 işlemciyi mikroskop altında göstermektedir. Anahtar işlevsel blokları etiketledim. Mimari olarak çip, üstte Veri Yolu Arayüz Birimi (BIU) ve altta Yürütme Birimi (AB) olarak bölünmüştür. BIU, veri yolu ve bellek aktivitesinin yanı sıra talimatların önceden getirilmesini yönetirken, Yürütme Birimi (AB) talimatları yürütür. Sağ alt köşede, mikro kod ROM'u mikro talimatları tutar. ALU sol alt köşededir, 7-0'ın üst kısmında ve 15-8'in bitleri alttadır ve durum bayrağı devresini sıkıştırır. Çipin alt kısmında kırmızıyla vurgulanan ALU kontrol devresi bu makalenin odak noktasıdır.

The die of the 8086 with the metal layer removed to show the silicon and polysilicon underneath. Click this image (or any other) for a larger version.

8086'nın kalıbı. Daha büyük bir versiyon için bu resme (veya başka bir resme) tıklayın.

Mikro kod

8086 işlemci, makine talimatlarının her adımı için bir mikro talimatla birlikte, çoğu makine talimatını mikro kodda uygular. (8086'nın mikro kodunu ayrıntılı olarak tartışıyorumhere.) 8086 mikro kod için ilginç bir mimari kullanıyor: her mikro talimat birbiriyle ilgisiz iki işlemi gerçekleştirir. İlk işlem, verileri bir kaynak ve bir hedef arasında taşır. İkinci işlem, atlama veya alt program çağrısından hafıza okuma/yazma veya ALU işlemine kadar değişebilir. Bir ALU işlemi, belirli bir işlemi belirtmek için beş bitlik bir alana ve belirtmek için iki bitlik bir alana sahiptir. hangi geçici kayıt girişi sağlar. Aşağıda göreceğiniz gibi bu iki alan ALU devresinde önemli bir rol oynamaktadır.

Çoğu durumda, 8086'nın mikro talimatı ALU işlemini belirtmez ve ayrıntıların makine talimat işlem kodundan değiştirilmesini sağlar. Örneğin ADD, SUB, ADC, SBB, AND, OR, XOR ve CMP makine talimatları aynı mikro kodu paylaşır, donanım ise ALU işlemini talimat işlem kodundan seçer. Benzer şekilde, artırma ve azaltma talimatları, DAA ve DAS ondalık ayarlama talimatlarıyla aynı mikro kodu kullanır ve ASCII, AAA ve AAS talimatlarını ayarlar. Mikro talimatın içinde tüm bu işlemler, XI adı verilen (bazı nedenlerden dolayı) "sözde" bir ALU işlemiyle gerçekleştirilir. Mikro kod bir XI ALU işlemini belirtiyorsa, donanım bunu talimatta belirtilen ALU işlemiyle değiştirir. Mikrokodun bir diğer önemli özelliği ise ALU'nun çalışmasını yapılandırmak için bir ALU mikro talimatını gerçekleştirmeniz gerekir, ancak sonuç sonucu bir hedefe taşıyan daha sonraki bir mikro talimata kadar kullanılabilir. Bunun sonucunda donanımın ALU işlemini hatırlaması gerekir.

Bunu somut hale getirmek için, aşağıdaki gibi tipik bir aritmetik talimatını uygulayan mikro kodu burada bulabilirsiniz:ADD AL, BL or XOR [BX+DI], CX. Bu mikro kod üç mikro talimattan oluşur. Her mikro talimatın sol yarısı, önce iki argümanı ALU geçici kayıtlarına taşıyan bir veri hareketini belirtir ve ardından ALU sonucunun saklanması (Σ olarak adlandırılır). Her mikro talimatın sağ yarısı ikinci görevi yerine getirir. İlk olarak, ALU bir işlemi gerçekleştirecek şekilde yapılandırılmıştır.XIgeçici kayıt A'yı kullanan işlem. Bunu hatırlayınXIALU işlemini gösterir makine talimatından doldurulur; aynı mikro kodun sekiz farklı makine talimatını bu şekilde ele almasıdır. İkinci mikro komutta, hafızaya geri yazma gerekmediği sürece bir sonraki makine komutu başlatılır (WB). Son mikro talimatRNI(Sonraki Talimatı Çalıştır) yeni bir makine talimatını başlatmak için. Aynı zamanda şunu da belirtir: işlemci durumu bayrakları (F) ALU sonucunun sıfır, pozitif, taşma vb. olup olmadığını gösterecek şekilde güncellenmelidir.2

M → tmpa   XI   tmpa  İlk argümanı yükleyin, ALU'yu yapılandırın.
R → tmpb   WB,NXT     İkinci argümanı yükleyin, hafızaya geri yazma yoksa Sonraki talimata başlayın
Σ → M      RNI  F     ALU sonucunu saklayın, Sonraki Talimatı Çalıştırın, durumu güncelleyin Bayraklar

ALU devresi

ALU, aritmetik ve mantık işlemlerini gerçekleştiren bir işlemcinin kalbidir. 1970'lerin mikroişlemcileri tipik olarak toplama ve çıkarmayı destekliyordu; mantıksal VE, VEYA ve XOR; ve çeşitli bit kaydırma işlemleri. (8086'nın çarpma ve bölme talimatları olmasına rağmen bunlar ALU'da değil mikro kodda uygulandı.) Bir ALU hem büyük hem de performans açısından kritik olduğundan, çip mimarları onun tasarımını optimize etmeye çalışır. Sonuç olarak, farklı mikroişlemciler oldukça farklı ALU tasarımlarına sahiptir. Örneğin 6502 mikroişlemcisinde toplama ve her mantıksal işlem için ayrı devreler bulunur; bir çoklayıcı uygun olanı seçer çıktı. Öte yandan Intel 8085, kontrol sinyallerine dayalı olarak istenen işlemi gerçekleştiren optimize edilmiş bir geçit kümesi kullanır (detaylar), Z80'in 4-bit ALU'su farklı bir kapı kümesi kullanır (detaylar).

8086, ALU'daki her bit için taşıma ve çıkış sinyallerini oluşturmak üzere iki arama tablosu (diğer geçitlerle birlikte) kullanarak farklı bir yaklaşım benimser. Arama tablolarının uygun şekilde ayarlanmasıyla ALU, istenen işlemi gerçekleştirecek şekilde yapılandırılabilir. (Bu, bir FPGA'nın arama tabloları aracılığıyla isteğe bağlı işlevleri nasıl uyguladığına benzer.) Aşağıdaki şema ALU'nun bir bitine ait devreyi göstermektedir. Bu devreyi daha önce anlattığım için detaylı anlatmayacağım.daha önceki bir makale.3Bu devrenin ilgili kısmı soldaki altı kontrol sinyalidir. İki çoklayıcı (yamuk semboller), çıkışları seçmek için iki giriş argüman bitini kullanarak arama tablolarını uygular. taşıma oluşumunu ve taşıma yayılımını kontrol etmek için kontrol sinyalleri. Böylece, ALU'ya uygun kontrol sinyallerini besleyerek 8086, ALU'yu istenen işlemi gerçekleştirecek şekilde yeniden yapılandırabilir. Örneğin, bir dizi kontrol sinyaliyle bu devre eklenecektir. Diğer kontrol sinyalleri setleri devrenin eksiltmesine neden olur veya AND veya XOR gibi mantıksal bir işlemi hesaplayın. 8086 bu devrenin 16 kopyasına sahip olduğundan 16 bitlik değerlerde çalışmaktadır.

The circuit that implements one bit in the 8086's ALU.

8086'nın ALU'sundaki bir biti uygulayan devre.

8086 karmaşık bir işlemcidir ve talimatlarının birçok özel durumu vardır, dolayısıyla ALU'yu kontrol etmek yukarıda anlatılandan daha karmaşık. Örneğin, karşılaştırma işlemi çıkarma işlemiyle aynıdır; ancak karşılaştırmanın sayısal sonucu atılır; sadece durum bayrakları güncellendi. Ekleme ve taşıma ile ekleme talimatları, bit 0'a taşıma için farklı değerler gerektirirken çıkarma işlemi, Ödünç alma olarak değerlendirildiğinden ters çevrilecek bayrak taşır. 8086'nın ALU'su artırma ve azaltma işlemlerini destekler, ancak aynı zamanda bit olarak bir artış sinyali gerektiren 2'lik artırma ve azaltma işlemlerini de destekler Bit 0 yerine 1. Bit kaydırma işlemlerinin tümü özel işlem gerektirir. Örneğin, bir döndürme, taşıma bitini kullanabilir veya taşıma bitini hariç tutabilir; ve aritmetik sağa kaydırma, üstteki bitin kopyalanmasını gerektirir. Sonuç olarak, ALU, altı arama tablosu (LUT) kontrol sinyalinin yanı sıra, ayarını yapmak için çok sayıda kontrol sinyaline de ihtiyaç duyar. Belirli talimatlara yönelik davranış. Bir sonraki bölümde bu kontrol sinyallerinin nasıl oluşturulduğunu açıklayacağım.

Kalıp üzerindeki ALU kontrol devresi

Aşağıdaki diyagram, kalıp üzerinde göründükleri haliyle ALU kontrol mantığının bileşenlerini göstermektedir. Mikro talimattan gelen bilgiler sağ tarafa girer ve mandallarda saklanır. PLA'lar (Programlanabilir Mantık Dizileri) talimatın kodunu çözer ve kontrol sinyallerini üretir. Bu sinyaller ALU'yu kontrol ettikleri sola doğru akar.

The ALU control logic as it appears on the die. I removed the metal layer to show the underlying polysilicon and silicon. The reddish lines are remnants of the metal.

Kalıpta göründüğü şekliyle ALU kontrol mantığı. Alttaki polisilikon ve silikonu göstermek için metal tabakayı kaldırdım. Kırmızımsı çizgiler metalin kalıntılarıdır.

Daha önce açıklandığı gibi, mikro kodXIişlemini belirtiyorsa, işlem alanı, makine talimatı işlem koduna dayalı bir değerle değiştirilir. Bu değiştirme, değer işlem mandalında saklanmadan önceXIçoklayıcı tarafından gerçekleştirilir. 8086 komut setinin karmaşıklığı nedeniyleXIişlemi beklediğiniz kadar basit değildir. Bu çoklayıcı, "X" kaydı adı verilen özel bir kayıttan üç talimat biti alır; başka bir talimat biti de talimattan gelir. kaydı ve Grup Kod Çözme ROM'u adı verilen kod çözme devresinden gelen son bit.4

Bir mikro talimatın ALU işlemini belirlediğini ve daha sonraki bir mikro talimatın sonuca eriştiğini hatırlayın. Böylece, ALU kontrol devresinin daha sonra kullanılabilmesi için belirtilen işlemi hatırlaması gerekir. Özellikle kontrol devresinin gerçekleştirilecek ALU işlemini ve belirtilen geçici kaydı takip etmesi gerekir. Kontrol devresi, belirtilen geçici kaydı takip etmek için her kayıt için bir flip-flop olmak üzere üç flip-flop kullanır. Mikro talimat, geçici kaydı belirten iki bitlik bir alan içerir. Kontrol devresi bu alanın kodunu çözer ve İlgili flip-flop'u etkinleştirir. Bu flip-flopların çıkışları ALU'ya gider ve ilgili geçici kaydı etkinleştirir. Her makine komutunun başlangıcında,5flip-floplar sıfırlanır, böylece geçici kayıt A varsayılan olarak seçilir.

Kontrol devresi, mikro talimattan gelen beş bitlik işlem alanını depolamak için beş flip-flop kullanır. Her makine komutunun başlangıcında, flip-floplar sıfırlanır, böylece işlem 0 (ADD) varsayılan olarak belirtilir. Önemli bir sonuç, ALU'yu yapılandırmak için bir mikro talimat olmadan bir ekleme işleminin potansiyel olarak gerçekleştirilebilmesidir. Mikro kodun bir mikro talimat kısaltılması ve böylece talimat süresinin bir döngü kısaltılması.

Flip-flop operasyonlarından gelen beş bitlik çıktı, operasyonun kodunu çözen PLA (Programlanabilir Mantık Dizisi)7operasyonuna gider 27 kontrol sinyaline bölünür.6Bu sinyallerin çoğu ALU'ya gider ve burada özel durumlar için ALU'nun davranışını kontrol ederler. Bu sinyallerin yaklaşık 15'i, ALU için altı arama tablosu sinyali üreten Arama Tablosuna (LUT) PLA'ya gider. LUT PLA'nın sol tarafında, özel yüksek akım sürücü devreleri, kontrol sinyallerini ALU'ya gönderilmeden önce güçlendirir. Bu sürücülere ilişkin ayrıntılar dipnotlarda yer almaktadır.8

Sonuçlar

Ne zaman 8086 işlemcinin devrelerine baksam, RISC çipi ile CISC çipi arasındaki farkları görüyorum. ARM gibi bir RISC (İndirgenmiş Komut Seti Bilgisayarı) işlemcisinde, komut kod çözme, işlemci devresi gibi basittir. Ancak bir CISC (Karmaşık Komut Seti Bilgisayarı) işlemcisi olan 8086'da, her yerde köşe durumları ve zorluklar var. Örneğin, bir 8086 makine talimatı bazen ALU işlemini ilk baytta, bazen de ikinci baytta belirtir. ve bazen başka yerlerde, bu nedenle X kayıt mandalı, XI çoklayıcı ve Grup Kod Çözme ROM'una ihtiyaç vardır. 8086'nın ALU'su, dört tip BCD ayarlaması ve yedi tip vardiya dahil olmak üzere belirsiz işlemleri içerir ve ALU'yu daha fazla hale getirir. karmaşık. Elbette x86'nın devam eden başarısı, bu karmaşıklığın da faydaları olduğunu gösteriyor.

Bu makale 8086'nın ALU'sunun ayrıntılarına derinlemesine bir bakış niteliğindedir, ancak umarım ilginizi çekmiştir. Eğer çoksa...




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

🔗 Kaynak Baglantisi: http://www.righto.com/2026/01/notes-on-intel-8086-processors.html

Thread Statistics

Views 0
Replies 0
Author righto.com
Created 2026-01-23
Status
Open