MMIX

MMIX是一種64位的RISC晶片,它有32個專用暫存器和至少256個通用暫存器

基本介紹

  • 外文名:MMIX
  • 類型:第三個千年設計的計算機
  • 用途:長期的科研和教學價值
  • 特點:64位的RISC晶片
  • 用以代替:老版本taocp中的MIX
MMIX: 為第三個千年設計的計算機
喜愛計算機科學的同學,你是否為沒有自己的RISC計算機而遺憾?現在好了,新版的"The Art Of Computer Programming" (以下簡稱 taocp)中,著名計算機科學家高德納(D.E.Knuth) 為我們設計了一個先進的計算機: MMIX. 用以代替老版本taocp中的MIX.
用途
這個處理器的設計有長期的科研和教學價值。
很多大學計算機系的彙編語言課現在還在講 8086 彙編語言。我們知道 8086 以及後來的 80286,386,486,Pentium,…… Pentium 4,…… 不管它們主頻怎么高,速度如何快,它們的設計可以說都是非常糟糕的。因為 Intel 在設計 8086 的時候就沒有設計好,沒有考慮到將來的擴展。到了後來為了保持自己的市場,為了兼容以前的程式,不得不加入很多難懂的“高超技術”。很多人以懂得 80486, Pentium 的“先進指令” 為豪,很多學校的彙編語言課也加入了一些 386, 486 的東西,使用“宏彙編”,認為這就是趕上了 “時代潮流”。但是,其實我們正在往我們的學生腦子裡灌輸一些他們完全沒有必要知道的東西。當然 80x86 不好不等於 Intel 不好, Intel 也有很好的處理器,不過它們跟 80x86 有很大差別。
一個計算機系的學生如果“深刻理解”了 80x86 的設計,而且很感興趣,那么他就會花很多時間去“鑽研” 80x86 裡面一些“高級機密”,並且引以為豪。在將來的設計中就會效仿 80x86 的很多不好的東西。他很難再理解和接受乾淨的,優雅的設計。再加上 Windows 系統,那么這個學生就會認為計算機就是如此麻煩,如此矛盾,如此醜陋,如此朝生暮死的東西。他如果當了老師,甚至會對一個學生髮脾氣:“你連擴展記憶體是什麼都不知道?你的彙編語言是怎么學的!” 他的學生就會覺得自己為什麼這么傻,然後就認為一台計算機一定有“基本記憶體”和“擴展記憶體”之分…… 這是一件可怕的事情。
現在好了,你正在認識一個優雅,乾淨,先進的處理器。MMIX 就是改變你對處理器的看法的起點。MMIX 比現在所有的處理器設計都要乾淨利落,而且溶合了各種處理器的優點。你一旦明白了它是怎樣工作,你就很容易的明白當今現實生活中最先進的處理器是怎樣工作的。你會認識一些非常強大的指令,你會認識什麼才是一個真正優秀的彙編語言,你甚至會很樂意的用這種彙編語言寫程式!比較一下:想一想你是多么的不原意看到 80x86 的彙編語言吧 :)
現在有了 MMIX 的模擬程式,你就可以分析這台機器的每一個周期,每一條指令,流水線,指令快取數據快取,…… 你可以欣賞一台計算機的美!
And now I see with eye serene, the very pulse of the machine. — WILLIAM WORDSWORTH
特點
遵循RISC思想, 只加入了必須或者是很有用的指令, 參見指令表。
子程式調用採用"暫存器棧", 整個操作在一個周期完成, 相當於有很多個可變大小,可變重疊區大小的RISC II暫存器視窗, 棧的內容大部分時間不需進入記憶體,這比普通的"存儲器棧"快的多, 而且比RISC II式的暫存器使用效率高。進程切換時只需要把用過的暫存器入棧,加速了切換。
具有強大的整數運算能力, 具有其它晶片沒有的強大的MOR和MXOR指令。
具有大量通用暫存器(至少256個), 大大減少MMIX程式的長度和對記憶體的訪問次數。
對IEEE浮點數的FINT和FREM指令非常高效。
指令格式統一,所有指令很容易手工彙編
MMIX的程式可以很容易的翻譯成可在 Cray I, IBM801, RISC II, Clipper C300, AMD29K, Motorola 88K, IBM 601, Intel i960, Alpha21164, POWER2, MIPS R4000, HitachiSuper H4, StrongARM110, Sparc64 等真實機器上運行的程式。
資源
MMIX的詳細描述可在這裡下載fasc1.ps.gz
Knuth教授鼓勵大家幫他找出其中的錯誤,不論是技術上的,歷史上的,打字上的,或是政治上的,每發現一個新的錯誤獎勵2.56美元。
Knuth設計了一個模擬程式, 可以在大多數機器上模擬MMIX以及運行其上的一個原始的作業系統。
這個程式是非常複雜的程式,它涉及了計算機體系結構的許多重要方面,包括機器周期,指令編碼,超長整數運算,浮點運算,流水線,虛擬記憶體,高速快取管理,彙編最佳化器,執行檔格式... 從這個程式你可以發現,Knuth是比我們高明得多的程式設計師,他總是用最好的辦法解決所有問題,哪怕是最簡單的問題。你能從他的代碼學到很多東西,當然要看他的程式,有時你不得不參閱 taocp。
這個處理器具有長期科學研究的價值. 你甚至可以為它增加虛擬彩色顯示卡! Knuth 教授專門就MMIX做了演講。
模擬器程式是用CWEB程式語言寫的,要這個模擬器的同學可以在這裡下載。Knuth的主頁上還有很多有趣的CWEB程式,包括各種算法,還有一個叫"Colossal Cave Adventure"的遊戲。
模擬程式安裝方法:
請先下載CWEB( 解壓後make, 然後把執行檔(cweave 和 ctangle) 拷貝到 /usr/bin/ 或是PATH里的其他目錄,準備用它們來編譯MMIX模擬器)
然後用它編譯MMIX模擬器:點擊這裡下載MMIX 。解開mmix.tar.gz, make all, 把執行檔拷貝到/usr/bin/ 或是PATH里的其他目錄,完成!

相關詞條

熱門詞條

聯絡我們