"It's not about perfect. It's about effort. And when you implement that effort into your life… every single day, that's where transformation happens. That's how change occurs. Keep going, remember why you started."
星期一, 10月 24, 2005
MOVE32Int:Transport Triggered Architecture
昨天晚上才剛喝下兩公升啤酒,某個「老戰友」丟給我看這玩意,酒馬上就醒了。
基本上,這個MOVE Machine有幾個主要特點:
一、只有一個指令「move」。
二、program counter是採用memory mapping實作的visible設計。所謂的jump動作,就是將一個值、搬移到PC內,一個unconditional jump就是「move destination PC」,subroutine linkage則反。換言之,沒有條件控制流程指令。
三、VLIW架構,將四個指令包在一起。
四、full guarding,每個指令都有3 bits欄位標示guard條件碼。
問題來了,這個MOVE指令集有什麼缺點?
第一個比較明顯的是:code density太低,像一個add r1,r2,r3的簡單加法動作(Oint <= R2; Tadd1 <= R3; R1 <= Rint1),在MOVE上就需要三個指令。換句話說,需要48 bits長度,這個還比IA-64(41 bits)來得高。
另外一個問題是:register file的複雜度,MOVE這種架構需要很多register,如果減少register的數量,將會需要更多的指令去進行運算工作;但如果實作成集中式的register file,可能會有困難,因為register file的port數會隨著issue rate而線性成長,直接增加複雜度。
更重要的是,大多數的register file都會被拿去作為控制用途之類的特殊register,實際上的GPR反而不多,以MOVEint32為例,GPR只有10個(hardwired zero的r0不算)。
最後,就我自己的感覺,雖然這是1990年代的東西,但MOVE架構的例外處理機制一定不簡單,這地方我得再好好想想,很久沒碰這些東西了。
我真的很期待他努力多年的成果:要如何設計出一個兼具MOVE優點與高code density的指令集?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言