software和hardware之間總是存在tradeoff:要麼是hardware結構複雜,software靈活。要麼是hardware結構保持簡潔清晰,software幹一些髒活累活。VLIW就是屬於後一種。
與Superscalar架構不同,VLIW將檢查指令依賴關係的工作全部交給了編譯器:編譯器將沒有依賴關係的指令打包成一個bundle,hardware不需要動態排程,只是負責取指、執行。
VLIW創始人Josh Fisher於1983年發表的論文Very Long Instruction Word architectures and the ELI-512提出了VLIW的Trace Scheduling思想,優化程式碼中最經常執行的路徑。不過當時很多科學家對這種方式持懷疑態度,也許從學術角度來看這種思想有點意思,但人們壓根不相信,可以建造一臺依靠software而不是hardware來提速的計算機。但是Josh Fisher一直相信VLIW架構遠遠超出了一個學術專案範疇,它有潛力改變所有的科學計算。(Josh Fisher也發明了Instruction-level Parallelism這個術語)
Trace Scheduling
第一個VLIW編譯器Bulldog由Josh Fisher和他的研究生John Ellis、Alex Nicolau和John Ruttenberg編寫。John Ellis在1984年發表了博士論文Bulldog: A Compiler for VLIW Architectures,這篇論文被評選為ACM年度最佳電腦科學論文。
The Bulldog VLIW Compiler
Multiflow
也是1984年,Josh Fisher離開了耶魯大學建立了Multiflow公司。他認為,為了追求利潤,工業界會比固守計算機理論的學界同行對新技術更感興趣 。不過生意並沒有想象中的好做,這期間,計算機行業正在發生變化,硬體變得更便宜,以賈伯斯的NeXT公司為代表生產的個人電腦可以執行許多科學應用,Multiflow公司遇到了嚴重的資金困難。到1990年公司關門為止,Multiflow一共只賣了125臺機器(資料來源:Multiflow),Josh Fishe也加入了惠普實驗室。
但是,故事到這裡遠遠沒有結束。
Itanium
當時,還有另外一家從事VLIW相關研究的公司Cydrome,在幾年的經營後,也發現無以為繼。其首席構架師以及聯合創始人Bob Rau也加入了惠普。Bob Rau和Josh Fisher兩個對處理器發展方向有著相同看法的人碰到了一起。他們依然相信,VLIW將成為未來主流的處理器指令集架構。
當時惠普內部開始覺得自己單獨開發生產處理器的成本太高,於是找到了英特爾一起合作。當年英特爾有一個如鯁在喉的對手——AMD,促使英特爾其想跳出自己的X86構架,另闢道路發展。到1994年,英特爾和AMD兩家公司一家花費了約2億美元的法律費用,兩家公司已經勢如水火。此時惠普提出的新的處理器計劃採用了和市場上其他廠商完全不同的方案,當時的英特爾認為找到了新的市場來甩掉這些跟屁蟲。
1994年英特爾和惠普簽訂協議,宣佈共同開發面向高效能運算(HPC)的處理器,也就是後來的Itanium,安騰。他們以VLIW指令作為基礎,提出了顯式並行指令集運算EPIC( Explicitly parallel instruction computing)。
由於這兩個企業影響力巨大,他們的聯合引起了整個行業的關注,各大軟硬體企業紛紛表示此後將支援這個新的構架。除了發起方惠普和英特爾以外,漸漸的包括IBM、Novell、微軟、Sun、甲骨文、紅帽、DELL等一眾企業都紛紛表示將支援新的構架。
至此,Josh Fisher和Bob Rau終於完成了自己創業時未完成的使命,把自己的技術理想打造成了萬眾矚目的工業標準。
但,這也是一段噩夢的開始。上面提到,VLIW將複雜的指令排程交給編譯器,處理器硬體只要在意效能,但英特爾和惠普忽略了在軟體構造上的巨大挑戰,這種難度完全超乎了想象。原計劃1997年釋出的首個安騰版本一直拖到了2001年才釋出。
安騰最初的目的是通過降低硬體的複雜度大大提高硬體的效率,但是在實際開發中,發現軟體優化實在太難了,實際上安騰最後還是保留了之前希望砍掉的分支預測功能,以保證整個軟硬體系統協調運作。2002年,英特爾釋出了第二代安騰處理器,有評論認為這是一款批著EPIC外衣的RISC處理器,安騰設計複雜度更高,功耗不降反升。
從1994年到2002年,8年時間,安騰的發展舉步維艱,但是科技行業的發展瞬息萬變。
2000年,AMD釋出了基於X86的64位擴充套件技術AMD64,這個擴充套件允許64位和32位程式都可以在同一個處理器上執行。2003年,AMD推出面向伺服器的產品Opteron(皓龍)的時候,大家似乎看到了新的希望。因為Opteron良好的效能,對原有32位程式的完美相容,AMD很快開啟了市場。
而英特爾這時候意識到,安騰也許不是一條正確的道路。英特爾在內部搞起了現在網際網路公司常用的田忌賽馬戰術。2004年,英特爾宣佈在其另外一條伺服器產品線至強旗下引入 x86-64技術(實際上就是AMD64的翻版),以應對AMD的競爭。此時的英特爾,雖然還在履行和惠普的合約,繼續更新安騰,但多少已經心不在焉,主要精力都轉到主戰場至強上去了。
安騰弱勢的表現,讓主流大廠商都已經停止對安騰的支援。而英特爾憑藉強大技的術和生產製造能力,後來居上,最終將AMD再次碾壓,安騰對英特爾來說也沒有了價值。2010年,英特爾停止在自己新的C++編譯器裡面新增安騰支援,這基本上是判了安騰的死刑。
從1994年惠普和英特爾宣佈啟動處理器合作專案開始,到最後一代安騰釋出,整整經過了23年時間。這期間英特爾換了4個CEO,惠普換了6任CEO。
回過頭來看,安騰有幾個比較嚴重的問題:
- 不相容。如果你想讓你的應用在IA64的安騰伺服器上執行,你需要重新編譯一份IA64的應用。早期的安騰雖然相容IA-32,但是效能很低。
- 當處理器的執行寬度(execution width),指令執行延遲時間,執行單元個數(function unit)改變時,需要重新編譯程式來適應。但是Superscalar卻不需要。
- 安騰緩慢的發展期間,AMD64的崛起,讓英特爾不得不調整方向。
但是VLIW真的無藥可救嗎?現在可能無法下出定論。VLIW在DSP以及ATI GPU都有應用。後續如果有新的應用場景、其他技術的發展,說不定會重新帶動VLIW。Google的TPU也用到了VLIW,而且它用到的systolic array技術在1979年被H. T. Kung和Charles E. Leiserson在論文Introduction to VLSI Systems中描述,而早在1944年的Colossus Mark II就採取了類似的技術。