Cortex-a9 gibi ARM işlemcileri mikrokod kullanıyor mu?


12

ARM işlemcileri (yeni ve eski) mikro kod kullanıyor mu? Eğer öyleyse, ne için? Talimatları mikro-op'lara çevrilmeden doğrudan yürütülecek kadar basit değil mi?

Yanıtlar:


14

TL, DR; ARM işlemciler microcoded CPU'lar benzer kavramlar kullanırken (örneğin bir veya daha fazla içine şifresini çözer talimatları bir donanım bloğu vardır mikro operasyonlar , bunlar edilir) değil geleneksel anlamda microcoded kullanımları bir ROM her bir mikro-öğretim depolamak için bunu, ne de bu mikro talimatlar / işlemler gerçek donanımda üretildikten sonra değiştirilebilir mi? Gerçekten de, ARM işlemcileri , mikro işlemler oluşturmak için komut kod çözücüsünde kablolu kablolu kontrol kullanır .

Bununla birlikte, uygulamada, talimat kod çözücüsünün değiştirilmesi, mikro kodlu bir işlemcinin değiştirilmesine benzer olabilir, çünkü ARM , CPU mimarilerinin donanım açıklama dilini ( HDL ) kaynak kodunu ayrı üreticilere lisanslar ve donanım düzeyinde değişikliklerin uygulanmasını önemli ölçüde kolaylaştırır. Tipik RISC ve CISC talimat kod çözücüleri arasında daha fazla farklılık için Mikroişlemci Tasarımı Wikibook'daki Talimat Kod Çözücü bölümüne bakın .


ARM mimarisi kendisi iken değil geleneksel anlamda microcoded, bireysel talimatlar vardır daha küçük mikro operasyonları içine deşifre . Modern bir ARM işlemcisi "basit" olmaktan uzaktır - talimatların kendileri çok dik olmasına rağmen, birçok modern teknoloji vardır (örneğin, boru hattı, süperskalar talimatlar, sıra dışı yürütme, önbellekleme, kayan nokta birimleri gibi genişletilmiş karmaşık talimatlar) veya NEON talimatları) içerir. Gerçekten de herhangi bir işlemci mikro-işlemlere çeviri yapmadan yürütmek için yeterince basit olabilir, ancak bu aslında "tüm yumurtalarınızı bir sepete" koyar - talimat setindeki olası hataları düzeltemez veya üretimden sonra genişletemez / değiştiremezsiniz.

Biz sadece bahsediyoruz Ancak, talimat kod çözme aşamasında, daha sonra gerçekten de birçok ARM işlemciler vardır değil modifikasyonu sağlayan bir şekilde microcoded olaydan sonra, ARM teknolojisini lisanslama çoğu üretici fiili erişimi verilir çünkü bu olsa da donanım kaynak kodu (HDL ile yazılmış). Bu, bir mikrokod aşaması gerekmediğinden güç tüketimini azaltır, ancak bireysel talimatlar gerçek donanım bloklarına "derlenir". Bu aynı zamanda her üretici tarafından hata düzeltmesine izin verir.

Gerçekten de, hatta bir CISC tabanlı CPU (örneğin x86) içinde, hiçbir orada gereklilik mikrokoda kullanımı için. Bununla birlikte, pratikte, talimat setinin karmaşıklığı, lisanslama, güç tüketimi ve uygulamalardaki çeşitli farklılıklarla birleştiğinde, mikrokod seçimini x86 için ideal kılmaktadır. Ancak ARM durumunda, komut setindeki (kod çözücü) değişikliklerin donanımın kendisi açısından uygulanması ve kontrolü çok daha kolay olduğundan (üretici tarafından özelleştirilebileceği için) daha az yararlıdır.


(Her kullanıcı gerçek donanım karşı bir "mikro program" olarak olduğu gibi) mikro kod olan, aslında bazı durumlarda işlemcinin tasarımı basitleştirmek, ancak, bu durum, sadece bir talimat kod çözücü (örneğin, başparmak-2 uzantısı , izin variable- ARM talimat kod çözücüsüyle aynı satırda ayrı bir komut kod çözücüsü ekleyerek var olan uzunluk talimatlarını ). İşlevsel olarak bu birimler mikrokod kullanılarak uygulanabilse de, gerek olmasa bile CPU'nun kendisindeki her kontrol sinyali için çıkışı tanımlamanız gerektiğinden, bu güç tüketimi açısından akıllıca olmaz. Bu değil Bununla birlikte, ARM çekirdeklerinin bir kişinin beklediği tüm modern yapılara sahip olduğu için (boru hattı, talimat / veri önbellekleri, mikro-TLB tamponları, şube tahmini, sanal bellek, vb.) ).

Talimat setinin dikliği dikkate alındığında, ARM durumunda, böyle bir mikro kodlu yaklaşımın uygulanmasındaki karmaşıklık, ilgili donanımın doğrudan talimat kod çözücü bloğunda değiştirilmesinin avantajlarından daha ağır basacaktır. Bu kesinlikle mümkün olsa da, donanımdaki değişiklikleri doğrudan değiştirme (ve derleme / test etme / taklit etme) yeteneğine sahipseniz, sözde "tekerleği yeniden icat etmek" ile sonuçlanır.


Bu durumda ARM kaynak kodunun kendisini bir tür mikro kodlama olarak "düşünebilirsiniz", ancak her mikro operasyonu / mikro programı gerçeğin ardından değiştirilebilen bir ROM'da saklamak yerine doğrudan kod çözücüde donanım. Talimat kod çözücünün kendisi VHDL / Verilog'da yazıldığından, mevcut talimatlarda değişiklik yapmak kaynak kodunu değiştirmek, yeni donanımı yeniden derlemek ve test etmek kadar basittir (örneğin bir FPGA veya simülatörde). Bu, geliştirme sırasında test edilmesi / simüle edilmesi çok daha zor ve üretimden sonra değiştirilmesi daha da zor olan modern x86 donanımının karmaşıklığı ile çelişmektedir (çünkü transistörler açısından boyut, en pahalı modernin bile içinde çalışabilecekleri çok aşmaktadır. FPGA'lar, böylece bir mikro kod deposu kullanımına bir avantaj ekler).FPGA kullanarak fiziksel donanım.


ARM'nin mikrokodu donanımda bulunuyor, değil mi?
Kraken

1
@ Bir anlamda Kraken, evet; bir mikrosquencer kullanmak yerine , her bir talimat, talimat kod çözücü tarafından doğrudan o opcode için ayrı mikro-işlemlere / mikro-talimatlara (bir veya daha fazla saat çevrimi) çevrilir. Talimat Dekoder makale Mikroişlemci Tasarımı kitabu dan da tipik RISC ve CISC talimat kod çözücüleri arasındaki farkları açıklayan yararlıdır.
Atılım

Teşekkürler. Bu benim için çok şey açıklıyor. Tekrar teşekkürler. Çaba için +1.
Kraken
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.