這篇文章我原本發表在部落格分部,不過因為那套pLog系統實在是太爛了,讓我整篇文章費了九牛二虎之力、甚至還被迫用Google Desktop把暫存檔挖出來,才順利張貼成功,弄得一卵葩火,所以乾脆也貼到這裡。如果再沒改善,我會認真評估撤掉第二個blog的可能性。
昨天hotball兄的文章,讓我回想起五年前的往事。
這標題,原本是在2000年In-Stat/MDR的Microprocessor Forum中,HP的William Worley與Jerry Huck所共同發表的文章。他們認為,現有處理器的OOO(Out-Of-Order)機制與RISC指令集皆早已不合時宜,指令集應該提供 compiler發掘更高parallelism的空間,當然毫無意外的,這個指令集就是IA-64。後來IBM的Martin Hopkins同時發表"A Critical Look on IA-64",從code density的角度強烈批判IA-64的必要性,其中某段話還被P&H第三版收錄為第四章的引言。他講了什麼,應該不需要我提醒了。
不過,姑且不論IA-64到底好不好、有沒有必要投入如此之高的resource去追求ILP(雖然有人認為IA-64的精神,是為了追求「thread內部的parallelism」)、現有的RISC是否真的落伍,現在看來,OOO似乎真的已經出現"Out-Of-Date"的跡象。
Google的Luiz André Barroso發表了一篇名為"An Economic Case for Chip Multiprocessing"的文章。簡而言之,他認為未來的資料中心不需要OOO,而應採用大量簡單的In-Order CPU。這篇文章的重點大致如下:
.耗電量已經成為伺服器重要的成本因素,但近年來處理器廠商(包含Intel、AMD和IBM)所努力宣揚的Performance/Watt,卻一直停滯不前。以低階x86伺服器來說,只要使用四年,電費成本就高達硬體採購成本的40%。
.為了攤平硬體研發成本,往往個人電腦所使用的桌上型處理器和伺服器處理器採用相同的核心,例如AMD Opteron和Athlon 64都是K8微架構、Intel Xeon與Pentium 4皆為NetBurst、IBM PowerPC 970沿用Power4等等。但事實上,兩者的應用環境有很大的差異,伺服器環境不但需要較高的TLP(Thread Level Parallelism),而且也早已具備大量高度平行化的應用程式,個人市場則反。換言之,目前這些伺服器處理器,並不見得適合「實際上的應用」。
其實Luiz André Barroso本人在DEC/Compaq時,就是負責Piranha計畫,採用8個簡單的in-order/single issue的Alpha處理器,整合理論頻寬12.8GB/s的Direct Rambus記憶體控制器與Protocol Engine,以追求TLP的效能與最高的Performance/Watt。
後來正如大家所知道的,Alpha死掉了,Piranha計畫無疾而終,但現在很多人應該也注意到了,Sun的Niagara與RMI的XLR就是這種觀念下的產物。近期盛傳Sun正與Google洽談Niagara系統的生意,看來並不是空穴來風。
現在不少人就在猜測,一直堅稱OOO結合SMT仍具備高度效益的IBM,會不會真的把超高時脈的Power6作成in-order。如果沒有意外,明年二月的ISSCC 2006就可以看到答案了。
同樣的一個標題,相隔五年,意義竟然是如此的大不同。
5 則留言:
放棄ooo的設計對一般的使用者是好還是壞勒?
@@@
OOO在x86 CPU上應該還會存活很長很長一段時間...
當初Centaur的Glenn Henry曾在1998年的In-Stat/MDR Microprocessor Forum發表Win Chip 4時,說過一句名言:"Register renaming is the work of devil"。後來的下場,大家也都看到了。
x86指令集的register真的太少,就算是x86-64增加一倍,也只是勉強剛好而已,不實作register renaming,真的很難達成高效能。
看到Cell 只花260M Transistor Counts 搭配XDR,真的流口水
照這樣說, 說不一定哪一天x86-64指令會
再一次擴增也不一定
張貼留言