MMIX
MMIX belirgin /ɛm.mɪks/ ve genellikle dizgi bir de yazı için sabit genişlikte ( MMIX) 'nin bir iki komut seti 64 bit RISC ve BT mimarisinin tarafından tasarlanan Donald Knuth gelen önemli yardımı ile, John LeRoy Hennessy , tasarımcıların birine MIPS mimarisi ve Alpha mimarisinin tasarımcılarından Richard L. Sites . Knuth bu projeyi şu sözlerle sunar:
" MMIXMakine düzeyinde programlamanın yönlerini göstermesi amaçlanan bir bilgisayardır. Kitaplarımda The Art of Computer Programming , 1960'ların tarzını taklit eden bir makine olan ve öyle bir rol oynayan MIX'in yerini alıyor ... MMIXMakine dili basit, zarif ve öğrenmesi kolay olacak şekilde tasarlamaya çalıştım. . Aynı zamanda, pratikte yüksek performans elde etmek için gerekli tüm karmaşıklıkları dahil etmeye özen gösterdim, böylece MMIXilke olarak oluşturulabilir ve muhtemelen ticari olarak mevcut en hızlı genel dillerden bazılarıyla rekabet edebilirdi. "
Mimari
BT mimarisi açısından, MMIX256 yazmaçlı Genel 64 bit ve 32 bit yazmaçları 64 özel kullanıma sahip bir 64-bit RISC bilgisayarıdır . 32-bit talimatlara ve 64-bit sanal adres alanına sahip MMIXbir big-endian makinedir . Onun komut kümesi potansiyel gelecekte kullanılmak üzere ayrılmıştır biri 256 opcodes içerir. Kayan nokta numaraları, IEEE 754 standardına göre uygulanır .
Talimatlar
Talimatların MMIXtümü , genellikle onaltılık biçimde yazılan bir baytlık sayı olan işlem kodundan tanımlanır ve kullanılabilir . Bununla birlikte, montaj kodunun okunabilirliğini geliştirmek için , kodların her biri ile benzersiz bir anımsatıcı etiket ilişkilendirilir. Dolayısıyla etiket , eklemenin operatör kodu olan talimat numarası 20 16'ya eşdeğerdir . Çoğu komut biçimi olan operatör XYZ , operatör talimat belirtir, X bir şekilde kullanılan bir kaydedici bulunmaktadır; akümülatörün , yani talimat sonucu depolamak için kullanılır, ve Y ve Z olarak kullanılan kayıtları ifade işlenen talimat için. Örneğin aracı atamak için Sum (aritmetik) kaydı içinde saklanan sayısının ve sayısı .
ADDADD $0,$1,3$0$13
Çoğu talimat ya anlık değerleri alabilir ya da bir kaydın içeriğini kullanabilir; bu nedenle tek bir anımsatıcı, bir veya iki işlem koduna karşılık gelebilir.
Tipik olarak, programlar AssemblyMMIX dili kullanılarak oluşturulur . Aşağıdaki örnek yazılmış bir programdır Yazdırabilen Merhaba dünya :
MMIXALMMIXAL
Main GETA $255,string ; Get the address of the string
; in register 255.
TRAP 0,Fputs,StdOut ; Put the string pointed to
; by register 255 to file StdOut.
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
Mimari bir çip içinde MMIXkendi gelen not edilen referanslarda tarafından erişilen 256 genel kayıt vardır $0için $255ve 32 özel kayıt. Özel kayıtları ikisi, rLve rGbelirlemek hangi yerel olduğunu ve hangilerinin geneldir. Bütün kayıtlar, $0için yerel kayıtlarıdır. [RL] ile [rG] -1 arasındaki kayıtlar , bir işlemde kaynak olarak kullanılırlarsa her zaman 0 döndüren marjinal kayıtlardır . Bir işlemin hedefi olarak bir marjinal kayıt kullanmak , bu kaydı dahil etmek için otomatik bir artışı tetikleyecektir . [RG] 'den tüm kayıtlara global kayıtlar denir ve kayıt yığınına kaydedilmezler.
$(rL-1)rL$255
Yerel kayıt defteri yığını
Yerel kayıt yığını, her prosedüre, ilerL arasında not edilen kendi yerel kayıtlarını $0sağlar . Bir prosedür çağrılırsa, yerel kayıtlar yığına eklenir. Prosedürün argümanları kalan yerel kayıtlara yerleştirilir. Bir prosedür sona erdiğinde, önceden eklenen kayıtları kaldırır. Yalnızca 256 fiziksel kayıt olduğundan, yığının bir kısmını bellekte depolamak gerekebilir. Bu eylem özel kayıtlarla uygulanır ve yerel kayıt yığınının hangi kısmının depolandığını ve yerel fiziksel kayıtlarda ne kadarının hala ne kadarının saklandığını kaydeder. Yığın kaydı ayrıca hızlı bağlantı prosedürleri (giriş) sağlar .
$(rL - 1)rOrS
Özel kayıtlar
Fiziksel mimarinin 32 özel kaydı aşağıdaki şekilde tanımlanmıştır:
-
rBb ile önyükleme kaydı (tetikleyici), İngilizce'deki gibib ootstrap :
bir tetikleme meydana geldiğinde, rBkayıtta saklanan değer atanır ve kayıt $255defterinde $255saklanan değer atanır rJ, böylece rJgenel bir kayıtta kaydedilir.
-
rDKayıt ve ividend: tamsayı bölme işaretsiz payda (bölen) bölünür 128 bit ile kodlanır kullanımları pay (kar) sol yarısında bu kaydı.
-
rE, E Psilon'u kaydedin veya marj e rreur'a kaydedin:
Bir hata payını tolere eden kayan nokta sayılarının karşılaştırılmasında kullanılır
-
rH, himult registerı : /haɪ.mʌlt/ olarak telaffuz edilen himult
terimi , İngilizce yüksek çarpma , kelimenin tam anlamıyla yüksek çarpma işleminin kısaltılmasıdır; burada haute , temsili birkaç ayrı alana dağıtılmış olan depolanmış bir sayının en önemli bitlerini içeren kısmını önerir. kayıtlar. Bu kayıt sağ yarısını saklamak için kullanılır ürünün ait işaretsiz tamsayı çarpma .
-
rJ, İngilizce'de olduğu gibi j ile geri dönüş kaydıj ump :
Bu kayıt, a'dan döndükten sonra bir sonraki komutun adresini kaydetmek için PUSHve tarafından kullanılır .POPPUSH
-
rMkayıt edilir maske ait multiplexing'i
Bu kayıt multiplexes talimatlar tarafından kullanılır MUXve MUXI.
-
rRyazmacı r este:
bölümler tarafından gerçekleştirilen zaman o geri kalan değeri atanmıştır DIV, DIVI, DIVU, DIVUIya da FDIV.
-
rBB, çekirdek önyükleme kaydı , BB olarakb ootstrap b ise :
talimatla bir yakalama sırasında TRAP, tuzak bir belirlenmesinden yakalama cihazı İngilizce olarak, rBBkayıt atanır $255ve sicil $255kayıtlı değeri atanır rJ, böylece tasarruf rJgenel defterine.
-
rCC döngüsü ompteur:
Her artırılır döngüsü .
-
rN, seri numarası kaydı: Mevcut
işlemciyi tanımlayan bir sabit MMIX.
-
rOVe yazmaç ofset bir yığın
Bu Kayıt yığın uygulamak için kullanılır.
-
rSBir ile s gibis tack , stack in English:
Bu , yığının mevcut adresine bir gösterici depolamak için kullanılan kayıttır.
-
rI, İ nterval sayacı :
Her döngüde azaltılır ve sıfıra ulaştığında bir kesinti tetikler .
-
rT, t gibit rap , İngilizce yakalama aygıtı : Tetikleyici vektörün
adresini saklamak için kullanılır .
-
rTTBir ile t İngilizce referans dat rap , ancak dinamik tetikleyici yazmacı ( dinamik tuzak adres yazmacı ) bu kez vektör tetikleyicinin
adresini saklamak için kullanılır .
-
rK, kesinti maskesi kaydı, kesinti mas k kaydı :
Bu kayıt, belirli kesintileri tetiklemek ve tetiklemek için kullanılır.
-
rQRegister re q uête interrupt:
Kesintileri meydana geldikçe kaydetmek için kullanılır.
-
rUSayaç u şarkı:
infaz talimatlarının sayısının sayımı kayıt saklanır.
-
rVKayıt çevirisi v irtuelle: Sanal adresler ve fiziksel adresler
arasında çeviri için kullanılır . Segment sayısını, her segment için ayrılan boyutu, sayfa tablosunun kökünün konumunu ve adres boşluklarının sayısını (inç) depolar .
-
rGEşik yazmacı g lobal:
Tanımlanmış eşikten daha büyük veya ona eşit bir eşikle kodlanmış genel yazmaçların tüm referansları, genel yazmaçları rGifade eder.
-
rL, eşik yazmacı l ocal: Yerel kayıtlara atıfta bulunarak
tanımlanan eşikten kesinlikle daha düşük bir sayı ile kodlanan tüm genel kayıt referansları rL.
-
rAdurum kaydı rithmétique'e sahiptir :
Bu kayıt, aritmetik istisnaların kaydedilmesi, açılması ve kapatılması için kullanılır. Bu istisnalar, aritmetik taşma ( içeri ) ve sıfıra bölmeyi içerir .
-
rFhata konumlandırma kaydı:
Sistem, bir komutun doğru şekilde yürütülmediğini tespit ettiğinde, komutun adresi bu kayıt defterinde saklanır. Anımsatıcı f , İngilizce ile ilgilidirf ailure konum kaydı , başarısızlık konum tescil başarısızlık olarak tercüme edilebilir. Fransızca'da f redaine veya f aux-pas kelimelerine başvurabiliriz .
-
rP, Kayıt tahmini :
Bu komutu tarafından kullanılır CSWAPve permütasyon koşullu .
-
rW, kesinti konumu
kayıt listesi : Bu kayıt, bir tetikleme sırasında kesilen komutun adresini saklamak için kullanılır. W İngilizce adı ifade ederw burada kesintiye uğramış kayıt , tam anlamıyla nerede kesintiye uğramış kayıt .
-
rXE kayıt X ecution (tetikleyici):
tetikleyici kesildi talimat saklamak için, bu yazmaç kullanılır.
-
rYY operatörü (tetikleyici):
Bu kayıt, bir tetikleme sırasında komutun ilk işlenenini saklamak için kullanılır. Y , matematikte yaygın olan genel adı ifade eder.
-
rZİşlenen Z (tetikleyici):
Bu kayıt, bir tetikleme sırasında komutun ilk işlenenini saklamak için kullanılır. Z , matematikte yaygın olan genel adı ifade eder.
-
rWW, kesme konumu yazmacı (yakalama):
Bir yakalama sırasında, kesilen komuttan sonraki talimatın adresini saklamak için kullanılır. W, kelimeye işaret eder burada daha önce olduğu gibi,.
-
rXX, yürütme yazmacı (yakalama): Yakalama
sırasında kesilen talimatı saklamak için kullanılır.
-
rYY, Y işleneni (yakalama):
Bir yakalama sırasında, kesilen komutun Y işlenenini saklamak için kullanılır.
-
rZZ, Z işleneni (yakalama):
Bir yakalama sırasında, kesilen komutun Z işlenenini saklamak için kullanılır.
Donanım uygulaması
Şu anda komut kümesi mimarisinin donanım uygulaması yoktur MMIX. Bununla birlikte, sağlanan fpgammix projesi , onu programlanabilir bir mantık devresinde kullanma olasılığını açan bir Verilog uygulamasını gerçekleştirir .
Yazılım araçları
Komut seti mimarisi MMIX, yazılım geliştirme ve bilgisayar mimarisi araştırması için çeşitli yazılım araçlarında kullanılabilir.
Simülatörler ve montajcılar
Knuth, MMIXwarebasit bir davranışsal makine simülatörü ve MMIXALmontaj yazılımı, bir test paketi, örnek programlar, kapsamlı dokümantasyon ve bir mimari boru hattı simülatörü içeren adlandırılmış bir yazılım paketi geliştirdi MMIX.
Andrew Pochinsky , içinde Teorik Araştırma Merkezi'nde ekibin üyesi Fizik at Massachusetts Teknoloji Enstitüsü geliştirmiştir MMIXXbir paket bir uygulama X11- tabanlı grafik sunucusu . Sanal makine ile kombine edilebilir bir görüntü sağlamak için 640 × 480 piksel içinde gerçek renk için Linux ve Unix .
MMIXware
Derleyici
Proje GNU Compiler Collection (GCC) bazı baş içeren MMIXonun için derleyici C / C ++ aslen tarafından geliştirilen, Hans-Peter Nilsson ve geç beri projenin standart dağıtımının bir parçası olan 2001 . Gönüllüler tarafından aktif olarak geliştirilmeye ve sürdürülmeye devam ediyor .
Mevcut araçlar seti teorik olarak, eğer bir donanım uygulaması varsa , bir işlemci üzerinde Linux gibi bir işletim sistemi çekirdeğini derlemeyi, oluşturmayı ve önyüklemeyi mümkün kılmalıdır MMIX.
Ayrıca görün
Dış bağlantılar
Notlar ve referanslar
Tercüme
-
(inç) " MMIX, programlamanın makine düzeyindeki yönlerini göstermeyi amaçlayan bir bilgisayardır. The Art of Computer Programming kitaplarımda , daha önce böyle bir rol oynayan 1960'lar tarzı makine olan MIX'in yerini alıyor ... Makine dilinin basit, zarif ve öğrenmesi kolay olması için tasarlamaya çalıştım . Aynı zamanda, pratikte yüksek performans elde etmek için gereken tüm karmaşıklıkları dahil etmeye özen gösterdim, böylece ilke olarak inşa edilebilir ve hatta piyasadaki en hızlı genel amaçlı bilgisayarlardan bazılarıyla rekabet edebilirdi. MMIXMMIX "
-
İşte ters bir olarak kullanılan arka uç çeviri bir karşıt olarak, bir arka plan fikrini ifade, ön uç çevrilecektir ön yüz ,, ön plan fikrini dile getirdi.
Referanslar
-
(inç) Donald E. Knuth , mmixware: Üçüncü Binyıl İçin Bir RISC Bilgisayarı , cilt. 1750, Heidelberg, Springer-Verlag , cilt. " Bilgisayar Bilimi Eğitiminde Ders Notları ",Ekim 1999( ISBN 3-540-66938-8 ).
-
MMIX İşlem Kodları
-
Resmi fpgammix web sitesi
-
MMIXware resmi web sitesi
Dış bağlantılar
-
( fr ) Donald Knuth, MMIX 2009 MMIX'e kısa bir giriş ve yazarın Bilgisayar Programlama Sanatı'nı (TAOCP) MMIXyazmak için icat edip kullandığı nedenleri .
-
(tr) Donald Knuth, MMIX News , CWEB ile yazılmış ücretsiz bir simülatör , bir kullanıcı kılavuzu ve örnek programlar.
-
(tr) MMIXmasters , tüm TAOCP programlarını, Cilt 1'den 3'e, MIX dilinden dile çeviren gönüllüler ( MMIXmasters ) için bir site .MMIX
-
(tr) VMMMIX , bir MMIXkonsol ve aygıtların ve aygıtların eterneti için giriş / çıkışların bulunduğu sanal bir makinedir . Şu anda yalnızca Windows üzerinde yürütülebilir, ancak bir ortamda bir Linux çekirdeğini çalıştırmak için kullanılabilir .MMIX
-
(fr) projesinin resmi sitesiMMIX , bu göç Stanford için Münih , 2011 yılında.
-
Resmi sitesi VMB projesi , Sanal Anakart Projesi , sanal anakart projesi, bir koleksiyon sunuyor tak ve çevre birimleri işlemcinin uygun sürümleri ile kullanılabilir MMIX.