MMIX - MMIX
tasarımcı | Donald Knuth |
---|---|
bitler | 64 bit |
tanıtıldı | 1999 |
Tasarım | RISC |
kodlama | Sabit |
Dallanma | Koşul Kodu |
endianness | Büyük |
Açık | Evet ve telifsiz |
Kayıtlar | |
32 özel amaçlı kayıt | |
Genel amaç | 256 |
MMIX (telaffuz em-karışım bir olan) 64 bit bilgi işlem azaltılmış komut seti (RISC) mimarisi ile tasarlanan Donald Knuth tarafından önemli katkıları ile, John L. Hennessy (tasarımına katkıda MIPS mimarisi () ve Richard L. Siteleri kim bir mimardı Alfa ) mimarisi. Knuth'un söylediği
MMIX, programlamanın makine düzeyindeki yönlerini göstermeyi amaçlayan bir bilgisayardır. Benim kitaplarda Bilgisayar Programlama Sanatı , yerini aldığı MIX ben öğrenmesi kolay olan makine dili sade ve zarif olacağını böylece MMIX tasarlamak için çabaladı ve ... eskiden böyle bir rol oynadığını 1960'ların tarzında bir makineyi. Aynı zamanda, MMIX'in prensipte kurulabilmesi ve hatta belki de piyasadaki en hızlı genel amaçlı bilgisayarlardan bazılarıyla rekabet edebilmesi için pratikte yüksek performans elde etmek için gereken tüm karmaşıklıkları dahil etmeye özen gösterdim."
Knuth, MMIX'in tasarımına 1999'da başladı ve tasarımın kararlı sürümünü 2011'de yayınladı. İşlemci "2009" olarak numaralandırıldı ve Knuth bunun diğer bilgisayar mimarilerinin sayılarının aritmetik ortalaması olduğunu açıklıyor ; Roma rakamlarıyla "MMIX" olmanın yanı sıra .
Mimari
MMIX, 256 64-bit genel amaçlı kayıt, 32 64-bit özel amaçlı kayıt, sabit uzunluklu 32-bit talimatlar ve 64-bit sanal adrese sahip, büyük endian 64-bit azaltılmış komut seti bilgisayarıdır (RISC). boşluk . MMIX komut seti, biri gelecekteki genişleme için ayrılmış 256 işlem kodu içerir. MMIX, IEEE 754 kayan noktalı sayıları kullanır .
Talimatlar
Tüm talimatların ilişkili bir anımsatıcısı vardır. Örneğin, talimat #20 (32 ondalık) ADD ile ilişkilidir. Çoğu komut sembolik forma sahiptir OP X,Y,Z
, burada OP komut türünü belirtir, X komutun sonucunu saklamak için kullanılan kaydı belirtir ve geri kalanı komutun işlenenlerini belirtir. Bu alanların her biri sekiz bit genişliğindedir. Örneğin, ADD $0,$1,3
"$0'ı 1 ve 3'ün toplamına ayarla" anlamına gelir.
Çoğu talimat ya anlık değerler alabilir ya da içerikleri kaydedebilir; bu nedenle tek bir komut anımsatıcısı iki işlem kodundan birine karşılık gelebilir.
MMIX programları tipik olarak MMIXAL derleme dili kullanılarak oluşturulur. Aşağıdaki, " Hello, world! " dizesini yazdıran basit bir MMIXAL programıdır :
LOC #100 % Set the address of the program
% initially to 0x100.
Main GETA $255,string % Put the address of the string
% into register 255.
TRAP 0,Fputs,StdOut % Write the string pointed to by
% register 255 to the standard
% output file.
TRAP 0,Halt,0 % End process.
string BYTE "Hello, world!",#a,0 % String to be printed. #a is
% newline, 0 terminates the
% string.
Kayıtlar
Bir MMIX yongasında, 0 ile 255 ABD Doları arasında belirlenmiş 256 doğrudan adreslenebilir genel amaçlı mimari kayıt ve 32 özel amaçlı mimari kayıt vardır. Özel amaçlı registerlara GET ve PUT komutları ile ulaşılabilir. Özel kayıtlardan ikisi, rL ve rG, genel kayıtlardan hangilerinin yerel ve hangilerinin küresel olduğunu belirler. $$' dan ([rL] − 1) tüm kayıtlar yerel kayıtlardır ve dahili kayıt yığınına açılan bir pencereyi temsil eder . [rL]... ([rG] − 1)'den gelen kayıtlar "marjinal kayıtlardır", bir işlemde kaynak olarak kullanılıyorlarsa her zaman 0 döndürürler. Bir işlemin hedefi olarak bir marjinal kaydın kullanılması, makinenin bu kaydı dahil etmek için rL'yi otomatik olarak artırmasına neden olur. Tüm kayıtlar [rG]... 255 $ global kayıtlar olarak adlandırılır ve kayıt yığınının parçası değildir.
Yerel kayıt yığını
Yerel kayıt yığını, her bir alt programa $0 ile $(rL − 1) arasında belirtilen kendi rL yerel kayıtlarını sağlar . Bir alt program çağrıldığında, bir dizi yerel kayıt yığından aşağı itilir (pencerenin başlangıcı kaydırılarak). Çağrılan alt yordamın argümanları kalan yerel kayıtlarda bırakılır. Bir alt program sona erdiğinde, daha önce basılan kayıtları açar. Dahili yığın yalnızca sınırlı sayıda kayıt içerebildiğinden, yığının bir kısmını bellekte depolamak gerekebilir. Bu, yerel kayıt yığınının hangi bölümünün bellekte olduğunu ve hangi bölümünün hala yerel fiziksel kayıtlarda olduğunu kaydeden özel kayıtlar rO ve rS ile gerçekleştirilir. Kayıt yığını, hızlı alt program bağlantısı sağlar.
Özel kayıtlar
32 özel fiziksel mimari kayıt aşağıdaki gibidir:
- rB, önyükleme kaydı (yolculuk)
- Açarken, rB ← 255 $ ve 255 $ ← rJ. Böylece rJ'yi genel bir kayıt defterine kaydeder.
-
rd, temettü kaydı
- İşaretsiz tamsayı bölme, bunu diğer işlenen tarafından bölünecek olan 128 bitlik girişin sol yarısı olarak kullanır.
-
rE, epsilon kaydı
- Epsilon'a göre değişken karşılaştırmalar için kullanılır.
-
rH, himult kaydı
- İşaretsiz tamsayı çarpmasının 128 bitlik sonucunun sol yarısını saklamak için kullanılır.
-
rJ, dönüş atlama kaydı
- PUSH'lar ve bir PUSH'dan geri dönmek için POP tarafından bir sonraki talimatın adresini kaydetmek için kullanılır.
-
rM, multipleks maske kaydı
- Multiplex komutu tarafından kullanılır.
-
rR, kalan kayıt
- Tamsayı bölümünün kalanına ayarlanır.
-
rBB, önyükleme kaydı (tuzak)
- Yakalarken, rBB ← 255 $ ve 255 $ ← rJ. Böylece rJ'yi genel bir kayıt defterine kaydetmek
-
rC, döngü sayacı
- Her döngüde artırıldı.
-
rN, seri numarası
- Bu belirli MMIX işlemcisini tanımlayan bir sabit.
-
rO, kayıt yığını ofseti
- Kayıt yığınını uygulamak için kullanılır.
-
rS, kayıt yığını işaretçisi
- Kayıt yığınını uygulamak için kullanılır.
-
rI, aralık sayacı
- Her döngüde azaltıldı. Sıfır olduğunda kesintiye neden olur.
-
rT, tuzak adres kaydı
- Gezi vektörünün adresini saklamak için kullanılır.
-
rTT, dinamik tuzak adres kaydı
- Tuzak vektörünün adresini saklamak için kullanılır.
-
rK, kesme maskesi kaydı
- Belirli kesmeleri etkinleştirmek ve devre dışı bırakmak için kullanılır.
-
rQ, kesme isteği kaydı
- Kesintileri meydana geldikçe kaydetmek için kullanılır.
-
rU, kullanım sayacı
- Yürütülen komutların sayısını tutmak için kullanılır.
-
rV, sanal çeviri kaydı
- Sanal adresleri fiziksel adreslere çevirmek için kullanılır. Segmentlerin boyutunu ve sayısını, sayfa tablosunun kök konumunu ve adres alanı numarasını içerir.
-
rG, küresel eşik kaydı
- rG'ye eşit veya daha büyük bir sayıya sahip tüm genel kayıt referansları, global kayıtlara atıfta bulunur.
-
rL, yerel eşik kaydı
- rL'den küçük bir sayıya sahip tüm genel kayıt referansları, yerel kayıtlara atıfta bulunur.
-
rA, aritmetik durum kaydı
- Taşma ve sıfıra bölme gibi aritmetik istisnaları kaydetmek, etkinleştirmek ve devre dışı bırakmak için kullanılır.
-
rF, arıza yeri kaydı
- Hataya neden olan talimatın adresini saklamak için kullanılır.
-
rP, tahmin kaydı
- Koşullu takas (CSWAP) tarafından kullanılır.
-
rW, nerede-kesilen kayıt (trip)
- Açma sırasında, kesintiye uğrayandan sonraki talimatın adresini saklamak için kullanılır.
-
rX, yürütme kaydı (trip)
- Açılırken, kesilen talimatı saklamak için kullanılır.
-
rY, Y işleneni (yolculuk)
- Açma sırasında, kesilen talimatın Y işlenenini saklamak için kullanılır.
-
rZ, Z işleneni (açma)
- Açma sırasında, kesilen komutun Z işlenenini saklamak için kullanılır.
-
rWW, nerede-kesilen kayıt (tuzak)
- Yakalarken, kesintiye uğrayandan sonraki talimatın adresini saklamak için kullanılır.
-
rXX, yürütme kaydı (trap)
- Yakalarken, kesilen talimatı saklamak için kullanılır.
-
rYY, Y işleneni (tuzak)
- Yakalarken, kesilen komutun Y işlenenini saklamak için kullanılır.
-
rZZ, Z işleneni (tuzak)
- Yakalarken, kesilen komutun Z işlenenini saklamak için kullanılır.
Neredeyse tüm diğer CPU'larda çalışan programlar gibi, MMIX programları da çeşitli şekillerde kesilebilir . Zamanlayıcılar gibi harici donanımlar, yaygın bir önalım (bilgi işlem) kesintileri kaynağıdır . Birçok talimat bazı istisnai durumlarda kesintiye neden olur; gibi bellek koruma sayfa hatası sanal bellek ve kayan nokta uygulamak için kullanılan istisnalar durum işleme . MMIX'in 2 tür kesmesi vardır: "tripler" ve "traps". "Açmalar" ve "tuzaklar" arasındaki temel fark, tuzakların kontrolü işletim sistemindeki bir "tuzak işleyici" programına göndermesi (bindirme), ancak açmaların denetimi kullanıcı uygulamasındaki bir "açma işleyici" programına göndermesidir (açma). Kullanıcılar ayrıca , diğer bilgisayar sistemlerindeki bazı tuzak türlerine benzer şekilde, herhangi bir kesme işleyicisini açık yazılım kesme talimatları TRIP ve TRAP ile çalışmaya zorlayabilir . Özellikle, bir kullanıcı programından işletim sistemine yapılan bir sistem çağrısı , bir TRAP komutu kullanır.
Donanım uygulamaları
Ekim 2015 itibariyle, MMIX komut seti mimarisinin bilinen hiçbir donanım uygulaması mevcut değildir. Ancak, fpgammix projesi, MMIX'i Verilog'da uygulayarak, sahada programlanabilir bir geçit dizisi kullanarak uygulamayı mümkün kılar .
Yazılım araçları
MMIX komut seti mimarisi, bilgisayar mimarisi araştırma ve yazılım geliştirme için bir dizi yazılım aracı tarafından desteklenir.
Simülatörler ve montajcı
- MMIXware – Donald Knuth'un MMIX-SIM basit (davranışsal) simülatörü, MMIXAL montajcısı, test takımı, örnek programlar, tam belgeler ve MMIX mimari (boru hattı) simülatörü (
gzipped
tar
dosya). - MMIXX – MIT'nin Teorik Fizik Merkezi'nden Andrew Pochinsky'nin katkıda bulunduğu X11 tabanlı bir grafik paketi , yukarıdaki MMIXware kaynaklarıyla birleştirildiğinde, MMIX sanal makinesini 640×480 piksel , gerçek renkli 'sanal ekran' ile zenginleştirir ( UNIX/Linux için).
Derleyici
GNU Compiler Collection bir MMIX içeren arka uç onun için C / C ++ Hans-Peter Nilsson ve Kasım 2017 sonlarında 2001 As beri ana GCC dağıtımının parçası katkıda derleyicinde, GCC için MMIX arka uç aktif olmaya devam ediyor gönüllüler tarafından geliştirilmiş ve sürdürülmüştür.
- Hans-Peter Nilsson'dan GCC + MMIX araçları için kurulum talimatları.
- §3.17.26. GNU GCC sürüm 7.2.0 için MMIX Seçenekleri (GNU GCC Web sitesi).
- §9.28. İçin MMIX bağımlı Özellikler GNU olarak gelen GNU Binutils sürümü 2.29, GNU GCC için montajcı arka uç (GNU Binutils İnternet sitesi).
Yukarıdaki araçlar teorik olarak tüm bir FreeBSD , Linux veya diğer benzer işletim sistemi çekirdeğini MMIX donanımına derlemek, oluşturmak ve önyüklemek için kullanılabilir , böyle bir donanım mevcuttu.
Ayrıca bakınız
- Eğitim programlama dili
- DLX
- LC-3
- küçük adam bilgisayar
- MikroSim
- KARIŞIM
- NAR 2 , bir profesör tarafından öğrencilerin öğrenmesine yardımcı olmak için tasarlanan başka bir işlemci.
Referanslar
- Donald E. Knuth (2005). Bilgisayar Programlama Sanatı Cilt 1 Fasikül 1: Yeni Binyıl için MMIX Bir RISC Bilgisayarı . Addison-Wesley. ISBN 0-201-85392-2 ( hata hatası )
Dış bağlantılar
- MMIX Ana Sayfası
- Donald Knuth'un MMIX sayfası — MMIX'e kısa bir giriş ve Knuth'un TAoCP'de varsayımsal bir derleme dili kullanma nedenleri .
- Donald Knuth MMIX haber sayfası - Bir açık kaynak yazılmış simülatör CWEB , bir programcı manuel ve örnek programların.
- MMIXmasters web sitesi — TAOCP, Cilt 1-3'teki tüm programları eski MIX'ten yeni MMIX'e dönüştüren gönüllüler (MMIXmasters) için bir web sitesi.
- VMMMIX — VMMMIX, MMIX sanal makinesidir. Konsol, HDD ve Ethernet I/O'larına sahiptir. Şu anda, bu sanal makine yalnızca Windows üzerinde çalışır. Ve Linux bu MMIX sanal makinesinde çalışır.
- VMB Ana Sayfası — Sanal Anakart Projesi, MMIX CPU'nun uygun bir sürümüyle kullanılabilen bir tak ve çalıştır aygıt koleksiyonu sunar.