複製鏈接
請複製以下鏈接發送給好友

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裏的其他目錄,完成!