Mikroprogramlama ve Makine Dili programlama


10

Mikroprogramlama düzeyi ile makine dili düzeyi arasında biraz kafam karıştı. Örneğin:

  1. Yürütülürken her iki program türü de nerede bulunur?
  2. Ya montaj dili gerçek-op talimatları için 1: 1 eşleme var mı?
  3. Her ikisinin biçimi işlemci mimarisi tarafından tanımlanmış mı?

4
Henüz okumadıysanız, [Wikipedia] [1] makalesine göz atın; harika. [1]: en.wikipedia.org/wiki/Microcode
Shawn J. Goff

5
Mikrokod muhtemelen bahsettiğiniz şey değildir. Kendi CPU'nuzu tasarlamadığınız sürece, muhtemelen mikrokodla ilgilenmeyeceksiniz. 'Mikrokod' içindeki 'mikro'yu' mikrodenetleyici 'ile karıştırıyor olabilirsiniz, ancak bunlar aynı şey değildir.
davr

1
Hayır, mikrokod alıyorum. CPU dahili çalışıyorum ve mikrokod gibi en düşük katmanları anlamaya çalışıyorum.

Yanıtlar:


7

Mikro kod, makine kodunun ötesinde bir soyutlama seviyesidir. Gerçek CPU mikrokodu çalıştırıyor ve bir çeviri motoru makine kodunu anında mikrokod haline getiriyor. Bu, daha hızlı, daha küçük işlemciler, daha az hata ayıklama ile karmaşık bir işlemci oluşturmak ve geriye doğru uyumluluk gibi çeşitli nedenlerle yapılır. Örneğin, x86 yönerge kümesi, nadiren kullanılan bazı dize işleme yönergeleri içerir. Bununla birlikte, geriye dönük olarak uyumlu kalmak için, modern x86 işlemcilerde hala mevcut olmalıdır. Bu talimatlar için bir yürütme yolunu kablolamak yerine, mikro koda dönüştürülür ve yürütülür. Bu, silikondan tasarruf sağlarken, geriye dönük olarak uyumlu kalır.

Yürütülürken her iki program türü de nerede bulunur?

Makine kodu önbellekte bulunur (RAM'den çekildikten sonra). Mikro kod, belirli makine mimarisine bağlı olarak bir mikro kod önbelleğinde bulunur. Önbellek, yalnızca dönüştürülen mikrokodu mümkün olan en büyük makine kodu yönergesinden alacak kadar mikrokodu tutacak kadar büyük olabilir veya birçok makine kodunun dönüştürülmüş sonuçlarını depolayan daha büyük bir önbellek olabilir, böylece tümünü yeniden dönüştürmeye gerek kalmaz küçük döngüler için her bir yinelemedeki makine kodu.

Bazı mimarilerde dönüştürülen mikrokod hiçbir yerde saklanmaz - getirme / tercüme ünitesi şu anda yürütülen makine koduna göre bir dizi mikrokod talimatı verir. Bu durumda, mikrokod bir çeşit ROM'dan yürütülmektedir ve makine kodu esasen ROM'a bir indekstir - makine kodu talimatını tam olarak yürütmek için çalıştırılması gereken mikrokod talimatları serisine işaret etmektedir.

Ya montaj dili gerçek-op talimatları için 1: 1 eşleme var mı?

Makine kodu ve montaj kodu genel olarak montaj talimatlarına uygun olarak 1: 1 eşleştirilir. Montajcıya bağlıdır. Yüksek seviyeli montajcıların, bir montaj satırı satırı yazmasına izin veren büyük bir makro seti olabilir ve montajcı çeşitli makine kodları üretecektir.

Ancak genel olarak "saf" montaj dili, işlemci kılavuzundaki talimat kümesi tablosu kullanılarak doğrudan makine koduna dönüştürülebilir.

Gerçi "true-op talimatları" ile ne demek istediğinden emin değilim. Belki referansı açıklayabilirsiniz.

Her ikisinin biçimi işlemci mimarisi tarafından tanımlanmış mı?

Hem makine kodunun hem de mikro kodun formatı işlemci mimarisi tarafından tanımlanır.


'true-op' ile, sentetik veya sözde montaj dili talimatları DEĞİL talimatlar kastediyorum. 2. soru için, mikrokod talimatlarının montaj dili gerçek-op talimatları ile eşleşip eşleşmediğini sormak istedim.

@Louis - Genel olarak, mikrokodun 1: 1 çevirisi olan yayınlanmış bir montaj kodu yoktur. Intel ve AMD (ve diğerleri), işlemcinin iç mimarisi hakkında çok güçlü bir fikir verdiği için mikrokodlarını tescilli tutar. Bazı özel amaçlar için, örneğin araştırmacılara bu konuda bilgi vermeye istekli olduklarını duydum, böylece belirli uygulamalar için performansın son% 1'ini makineden çıkarabilirler, ancak çoğunlukla yalnızca yayınlanan spesifikasyonlar makine kodunu ve genel mimari tanımını içerir.
Adam Davis

8

Temel olarak, mikrokod, donanımda uygulanması zahmetli, ancak mevcut talimatlarla inşa edilmesi nispeten kolay olan daha yüksek seviye talimatları içerecek şekilde sınırlı bir CPU talimatı seti genişletir. Mikrokod, küçük bir talimat setine sahip bir işlemcinin daha büyük bir talimat setine sahip gibi çalışmasını sağlar.

Bir MARIE komut kümesiyle çalıştığınızı ve Add x, y işlevini istediğinizi varsayalım, ancak mimari yalnızca bir Add x (yalnızca şu anda x'te kayıtta bulunanı ekleyen) ekler, böylece bir mikro kod talimatı eklersiniz:

LOAD x //Load x into the register
ADD y //Add y to the value in the register

Şimdi makine dil kodunuz dediğinde:

ADD x,y

ROM'a (mikrokodunuza) eklediğiniz ADD işlevini arar ve çalıştırır. Bu harika çünkü daha okunabilir makine koduna izin veren talimat setinizi arttırıyor ve mikro kodunuz ROM'da saklandığından, LOAD ve ADD'yi RAM'den çağırmaktan biraz daha hızlı.

Eskiden eski sistemlerinde çok yüksek hızlarda özel ölçümler yapmak için mikrokod yazan bir şirkette çalışıyordum. Bununla birlikte, FPGA'lardaki ilerlemelerle, çok daha hızlı olanlara geçtiler (ROM yerine donanımda "özel talimatları" uyguladığınızdan).


mikrokodu nasıl yazdınız ve çalıştırdınız?
Erik Kaplun

@ErikAllik Bunu ancak kendi bilgisayarınızı sıfırdan oluşturarak yapabilirsiniz.
user253751

5

Birçok işlemci, geçiş sırası yürütülmekte olan talimatlardan etkilenen bir durum makinesi tarafından çalıştırılır. Mikrokod "talimatlar" genellikle çeşitli kayıtlar ve otobüsler arasındaki etkileşimleri programcı tarafından görülmeyecek şekilde belirtir.

Örneğin, # 1 durumundaki 8 bit CPU için bir mikro kod talimatı, program sayacının her iki yarısı için de çıkışın etkin olması gerektiğini belirtebilir (program sayacının üst ve alt dahili adres veri yolunda çıkmasına neden olur), program-karşı-artış sinyali aktif olmalı, harici adres mandalı sinyalleri aktif olmalıdır (böylece harici adres veri yolu dahili olanı takip edecektir) ve RAM okuma sinyali aktif olmalı ve kontrolör # 2 durumuna geçmelidir.

Durum # 2'de, harici veri yolu dahili birincil veri yoluna beslenmeli ve bu veriyolundan okunan talimat yazmacı yüklenmelidir. Program sayacı daha önce olduğu gibi adres veri yolunun her iki yarısında ve başka bir RAM okuması verilmiş olmalıdır. Talimat kaydının 5-7 bitleri durum kontrolörünün 0-2 bitlerine yüklenmelidir, talimat kaydının 1-7 bitleri ayarlanmadığı ve durum kaydının diğer bitleri ayarlanmadığı sürece durum kaydının bit 3'ü ayarlanmalıdır. net sonuç olmalıdır, net sonuç bir sonraki durum # 7- # 15 olacaktır.

Mikrokodun gerçekten talimatlar açısından değil, kontrol sinyallerinin kombinasyonları açısından tanımlandığını unutmayın. Donanım, mikrokodda genel amaçlı talimatlara izin verecek şekilde değil, oturdukları veri yollarına / veri yollarına çeşitli kayıtlar yüklemek veya çıktı vermek ya da farklı veri yollarını birbirine bağlamak ve çeşitli bit veya kombinasyonlarını kullanmak farklı durumlar seçin. Tasarımın birçok yönü sabit kablolanmış olacaktır (örneğin, FE ve FF opcodesleri mikro kod yerine donanımda özel olarak kaplanmış olabilir). Mikrokod ile ilgili fikir programları çalıştırmak değil, mantığı değiştirmek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.