在計算機工業的歷史,一說到「眾人皆知的處理器效能王者」,很難不第一時間想到充滿傳奇色彩、而且對後世影響深遠的DEC Alpha處理器,在1990年代曾叱吒風雲一時,尤其在AMD的x86處理器發展史,更處處可見Alpha研發團隊留下的遺產。
在諸多RISC諸神之中,有別於IBM的Power、Sun的SPARC、HP的PA-RISC和SGI時代的MIPS,Alpha也是唯一「一剛誕生就非常厲害」者。更誇張的是,1992年發布的Alpha指令集架構,打從一開始就是如假包換的64位元架構,包括64位元的平面記憶體定址、64位元長度的整數資料暫存器與64位元浮點資料暫存器。
因問世較晚,而且DEC又以追求極致效能為出發點,目標在25年內可以提昇1000倍效能 (10倍來自提高時脈、10倍來自超純量管線、10倍來自多處理器架構),希望徹底的從「電腦的語言」指令集架構層面,消滅任何妨礙高效能微架構的潛在限制,結果就催生了簡潔到走火魔的Alpha指令集,稱之為「RISC (精簡指令集電腦) 中的RISC」真的一點都不為過。
做為電腦軟硬體與硬體「界面」的指令集架構,基本上在不同的時代背景,就會有迥異的設計思維。具有科班背景、熟知CISC (複雜指令集電腦) 與RISC (精簡指令集第腦) 差異的科科們 (CISC),或多或少也知道CISC的背後因素是「記憶體容量很少 + 高階程式語言尚未成熟 + 電腦很少很貴 + 製程技術限制」,而RISC則是奠基於完全相反的因素。講的不誇張,說「最CISC」的VAX和「最RISC」的Alpha都出自於DEC之手,一點都不偶然,因為後者就是對前者的極端反動。
在理解Alpha的設計理念前,各位需要先瞧瞧被歸類成CISC的VAX (Virtual Address eXtension),究竟有多麼誇張,連Intel 80x86都小巫見大巫。基本上,論指令集「毫無道理可尋的複雜度」,假若VAX要排第二,那恐怕就沒人敢排第一了。好吧,Intel失敗的「32位元迷你大型主機」iAPX432或許有機會可以一拼。
VAX就有一個非常經典的指令叫做「ADD6」,可將「六個」不限定暫存器或記憶體的運算元「通通加起來」。習慣使用組合語言的程式設計師,可能會覺得很方便,但是對處理器設計者就是一場大災難了,光指令解碼器要如何迅速搞清楚到底有哪些運算元、計算出這些運算元的有效位址,就是天大的麻煩,而VAX極度複雜的資料定址模式 (Addressing Mode),更讓問題雪上加霜。
此外,設計處理器最棘手之處,在於發生中斷 (Interrupt) 或例外 (Exception) 時,保存處理器「當下的執行狀況」,並當中斷例外處理流程結束後,再將處理器回復到先前的狀態。這也難怪當代兩位計算機結構大師David Patterson和John Hennessy,會在其著作中特別強調「難以想像VAX相容處理器的設計者究竟是怎麼工作的」,「把東西做出來並驗證完畢」已經相當困難,更罔論「作的又快又便宜」。
以1987年的VAX-8400來說,總計有300多個指令、20種定址模式、指令長度從1到54 Bytes,光是要實做這些指令,就需要400到500Kbits的唯讀記憶體(ROM) 容量去存放微碼 (Microcode)。問世於1992年的Pentium,其微碼ROM也「只不過」47kB (376Kbits)。
如果腦袋還轉不過來,科科們可以想像一下:乘法指令可以用一連串的加法取而代之,但你現在會選擇這樣的作法嗎?但Alpha還真的很有這樣的味道呢。科科。
5 則回應
line.me/ti/g2/UjRs_A9N-p9fG0LeWdyp3dTPTBa_MTxUPfXp0g
line.me/ti/g2/UjRs_A9N-p9fG0LeWdyp3dTPTBa_MTxUPfXp0g
line.me/ti/g2/UjRs_A9N-p9fG0LeWdyp3dTPTBa_MTxUPfXp0g
line.me/ti/g2/UjRs_A9N-p9fG0LeWdyp3dTPTBa_MTxUPfXp0g
line.me/ti/g2/UjRs_A9N-p9fG0LeWdyp3dTPTBa_MTxUPfXp0g