黃博文
近年來多核心CPU的發(fā)展勢頭非常迅猛,在消費(fèi)級PC市場上4-8核心處理器產(chǎn)品已成為很常見的產(chǎn)品,同時再加上像超線程這類新技術(shù)的出現(xiàn)與幫助,使得普通用戶就能享受到8~16 CPU線程同時運(yùn)算的快感,處理器的多線程計算性能得到極大的提升。然而另一方面則是CPU單線程性能長時間的“毫無作為”,雖然CPU單線程性能也在進(jìn)步,但與多線程性能的進(jìn)步幅度相比則可謂不值一提。同時很多消費(fèi)級軟件對CPU單線程的依賴,如大量游戲、PhotoShop圖片處理等也使得用戶深感CPU單線程性能的不足。為此,廣大用戶非??是驝PU的單線程性能也能獲得大幅升級,甚至在去年很多人為Skylake處理器“幻想”出了一個可以聯(lián)合多個CPU線程,用于執(zhí)行單一任務(wù)的“逆向超線程”新技術(shù)。
而令人興奮的是,從本刊在2015年10月下刊《解析CPU逆向超線程技術(shù)可行性》一文中的分析,可以看到要想大幅提升CPU單線程性能并非不可能,逆向超線程技術(shù)并非完全虛構(gòu),很多科技人員早就在從事這項(xiàng)研究。而近期一家名為SoftMachines的公司更拿出了切實(shí)的解決方案,號稱能實(shí)現(xiàn)IPC倍增式的提高,接下來就讓我們走進(jìn)CPU單線程性能的提升利器——VISC CPU架構(gòu)。
不簡單的“新人”Soft Machines和VISC
IPC倍增式的提高,這樣的豪言壯語究竟出自何方神圣?可能很多人是頭—次聽說Soft Machines公司的大名。這是一家位于硅谷的創(chuàng)業(yè)公司,在2006、2007年左右成立。一般來說初創(chuàng)階段的公司會刻意在相當(dāng)長的一段時間里保持低調(diào),也就是所謂的“秘密階段”(Stealth mode),在具有一定成果了之后,突然釋放出爆炸性消息來吸引關(guān)注,當(dāng)年設(shè)計超長指令字結(jié)構(gòu)+動態(tài)二進(jìn)制翻譯的全美達(dá)公司也曾玩過這個手段,其公司網(wǎng)站曾在兩年半的時間里面只掛著一句話“網(wǎng)頁還沒建好”(This web page is not yet here.),然而私下里卻簽署了超過2000份保密協(xié)議來確保公司的技術(shù)和商業(yè)目標(biāo)不被泄露。從這點(diǎn)上來說,Soft Machines選擇了和當(dāng)年全美達(dá)類似的路線,直到2014年才脫離“秘密創(chuàng)業(yè)階段”(Stealth mode),走向前臺。這家公司迄今為止收到了一億多美元的投資,投資者包括三星、GlobalFoundries、AMD,擁有75項(xiàng)專利,大約250名雇員,包括前Intel、AMD、高通公司的工程師。Soft Machines試圖通過推動CPU單線程性能的增長,使用全新的結(jié)構(gòu)(被稱為VISC)來達(dá)到IPC倍增。
這一目標(biāo)不可不謂宏大,加之先前的刻意保密形成的助推,Soft Machines公司剛剛走入公眾視線就是大紅大紫的狀態(tài),特別是IPC倍增的高調(diào)聲明尤為吸引眼球。日前該公司召開了一次媒體發(fā)布會,公布了一些可供玩味的資料,使得我們可以窺探其結(jié)構(gòu)內(nèi)部的細(xì)節(jié)、初步分析該技術(shù)的前景。
變化不大 指令翻譯依賴軟件層
讓我們先來分析一下Soft Machines提出VISC的技術(shù)背景,一個要讓IPC倍增的結(jié)構(gòu)應(yīng)該長成什么樣子?這是不是在吹牛?
無數(shù)歷史經(jīng)驗(yàn)表明,一個全新的結(jié)構(gòu)如果想要獲取軟件層面的支持,修改指令集層面是需要慎之又慎的,指令集保持不變才能最大限度地兼容現(xiàn)有的種種軟件,包括操作系統(tǒng)和普通應(yīng)用程序。所以在VISC的結(jié)構(gòu)框架里,所有的軟件線程需要原封不動地在整個系統(tǒng)棧中向下傳遞,這是Soft Machines唯一的選擇,不出意外地,我們最終看到Soft Machines設(shè)計的VISC也的確是原封不動地接受上層軟件的代碼。但是這樣一來就限制了后繼優(yōu)化的發(fā)揮,如何從這些原封不動的軟件線程中抽取指令級并行度呢?
包括全美達(dá)在內(nèi)的一批上世紀(jì)90年代的先驅(qū)者們已經(jīng)探索出一條路線:指令翻譯層。在VISC的執(zhí)行框架中,既有指令集的指令會被一個中間翻譯層翻譯為VlSC硬件特有的硬件指令格式。目前Soft Machines確認(rèn)支持將兩種上層指令集翻譯成VISC專屬的硬件格式,其中之一是ARMv8,另外一個坊間傳聞可能是x86,但是Soft Machines未予確認(rèn)。這個軟件翻譯層會帶來多大的翻譯開銷是一個對性能至關(guān)重要的問題,但此次并未在公開資料中提及。
這個中間翻譯層和Intel的 ClSC x86指令轉(zhuǎn)RlSC uops指令格式不同,Intel的翻譯是完全基于硬件完成,優(yōu)勢是翻譯速度,缺點(diǎn)是喪失了靈活性。也就是說如果翻譯部分需要更新,就需要修改硬件,只能等待下一代芯片,而全美達(dá)和VISC都選擇把翻譯層做在軟件上,好處是降低了設(shè)計復(fù)雜度,允許軟件層面的補(bǔ)丁來持續(xù)更新翻譯部分,壞處是性能會受到影響,畢竟每一條指令都要經(jīng)過翻譯。為了減少這一負(fù)面影響,全美達(dá)使用了兩種技術(shù),也就是動態(tài)翻譯代碼緩存和分層的反饋式代碼優(yōu)化來解決這個問題,這項(xiàng)技術(shù)后來也被NVIDIA做進(jìn)了丹佛計劃中的自研核心上。Soft Machines在這個問題上則處理得比較含糊,在VISC的媒體通氣會上公布的一頁P(yáng)PTA出現(xiàn)了與全美達(dá)和丹佛類似的Dynamic optimization動態(tài)優(yōu)化流程,但是沒有更進(jìn)一步披露的情況下,也無法確認(rèn)這個設(shè)計是否暗示著采用了與全美達(dá)和丹佛類似的流程。
但是可以確定的是,即便這個動態(tài)優(yōu)化流程存在,也沒有設(shè)計得如同全美達(dá)和丹佛那樣激進(jìn)。據(jù)外媒報道,Soft Machines曾表態(tài)不應(yīng)該在軟件層面上投入過多的優(yōu)化精力來追求性能。這是一句非常耐人尋味的話。為什么Soft Machines沒有選擇和以往的幾個設(shè)計一樣,在軟件層面做大量的優(yōu)化來追求性能呢?這就是VISC結(jié)構(gòu)最有意思的地方:Soft Machines雖然吸收了前輩們的經(jīng)驗(yàn)引入了軟件翻譯層,但是卻不在軟件層面上做性能優(yōu)化,它的秘密武器藏在硬件微結(jié)構(gòu)上。
實(shí)現(xiàn)指令切分與核心融合 VISC核心微結(jié)構(gòu)解析
在Soft Machines設(shè)計的這種執(zhí)行框架下,軟件翻譯層翻譯完的指令會通過一個全局共享的硬件前端(Global Front End),指令序列會在這里被切分成多個虛擬硬件線程,然后繼續(xù)遞交給多個執(zhí)行核心。endprint
指令序列如何切分呢?我們可以看看這個直觀的例子,以下四條指令看似是只能逐一執(zhí)行的單線程任務(wù),但通過指令切分,VISC結(jié)構(gòu)可以讓它實(shí)現(xiàn)部分并行運(yùn)算。
1.寄存器1=寄存器2+寄存器3
2.寄存器4=寄存器2+寄存器4
3.將地址01的值裝入寄存器1
4.寄存器仁寄存器1+寄存器4
首先在允許寄存器重命名的情況下,前三條指令可以單獨(dú)開辟一個硬件線程來執(zhí)行。我們來分析一下為什么:第一條指令之前沒有任何指令,肯定可以獨(dú)立開來并行執(zhí)行;第二條指令只需要讀取寄存器2的值,只要寄存器堆的讀寫端口足夠多,同時讀一個寄存器的值沒有問題,因此也可以獨(dú)立開來并行執(zhí)行,第三條指令需要對寄存器1做寫操作,看上去與指令1有沖突,但是通過寄存器重命名可以將第一條指令的寄存器1和第三條指令的寄存器1分別重命名成兩個不同的物理寄存器,因此也可以獨(dú)立開來并行執(zhí)行。但是第四條指令需要用到寄存器1的最新值,也就是剛剛從地址01裝載上來的值,這是一個真實(shí)的數(shù)據(jù)相關(guān)關(guān)系,不能通過寄存器重命名變換來消除掉,所以第四條指令不再能夠并行。
這個例子演示了最簡單的一個硬件指令切分,從上個世紀(jì)60年代開始,業(yè)界就在苦苦追求能夠進(jìn)行全程序范圍的指令分析,從而設(shè)計出并行度達(dá)到理論最大值的架構(gòu),這種架構(gòu)被稱為數(shù)據(jù)流架構(gòu)(Dataflow architecture)。但是截至目前為止,數(shù)據(jù)流架構(gòu)仍然沒有在CPU這個層面邁向?qū)嵱没?,事?shí)上,傳統(tǒng)硬件亂序多發(fā)射也正是這樣分析指令相關(guān)性、抽取指令級并行度的,但是硬件受限于規(guī)模,只能在有限的范圍內(nèi)做這樣的相關(guān)性分析,這個范圍被稱為亂序執(zhí)行窗口的大小。在Intel的最新一代的Skylake微結(jié)構(gòu)上,這個窗口大小約為200多條指令,也就是說,即便考慮進(jìn)指令融合,目前的硬件分析處理極限也就是在200~300多條指令的范圍上。因此,現(xiàn)在廣泛流行的硬件亂序多發(fā)射實(shí)際上是一個經(jīng)過弱化、分析范圍受到極大限制的數(shù)據(jù)流架構(gòu)?;谲浖姆治隹梢钥朔布治龇秶蛔愕膯栴},目前的軟件分析可以借助自身的靈活性去分析幾乎無窮大范圍的指令序列,相關(guān)的一些優(yōu)化也做進(jìn)了標(biāo)準(zhǔn)的編譯優(yōu)化流程里,只是分析速度會比硬件有數(shù)量級程度的落后。
那么VISC的這個解決方案最厲害的部分在哪里呢?注意框架圖中的全局共享前端部件,它畫在Virtual Cores的框架內(nèi)部,也就是說它同樣是通過硬件進(jìn)行指令分析。這個硬件分析流程能做到多快的分析速度,能分析多大范圍的指令,在公開資料中都沒有披露,但筆者仍為此感到興奮,因?yàn)檫@個設(shè)計有著暗含的一層意思:如果VISC的設(shè)計方案,沒有信心在指令級并行度的抽取范圍上超越傳統(tǒng)的硬件亂序多發(fā)射,他們就不會選擇把這個關(guān)鍵部件做在硬件上,否則就失去了創(chuàng)新技術(shù)的意義??梢詷酚^地估計,VISC的設(shè)計將可以在指令級并行度的抽取能力上大大超越傳統(tǒng)框架下的亂序多發(fā)射,可能更加逼近數(shù)據(jù)流架構(gòu)的完全形態(tài),亦或者是業(yè)界長期困擾無法解決的線程級推測執(zhí)行的硬件實(shí)現(xiàn)版。無論這個設(shè)計方案最后能否達(dá)到設(shè)計預(yù)期,都是一個非常值得欽佩,也非常值得關(guān)注的大膽嘗試。
除了硬件切分以外,這個核心微結(jié)構(gòu)里面還存在著另一個亮點(diǎn)。在全局共享前端切分了執(zhí)行序列以后,被分隔開的各個獨(dú)立執(zhí)行線程可以被動態(tài)地分配給下面的多個物理執(zhí)行核心,分配粒度達(dá)到了幾個時鐘周期的級別,并且含糊地提到了可以動態(tài)地追蹤各個核心中的數(shù)據(jù)流向。這是令筆者感到興奮的第二個亮點(diǎn):業(yè)界一直在探索的另外一個方向,核心融合,在VISC的微結(jié)構(gòu)中現(xiàn)身了?!昂诵娜诤稀睂?shí)際上就是坊間流傳很久的“逆向超線程”技術(shù),將多個核心的執(zhí)行資源合并成一個來使用,也是VISC結(jié)構(gòu)的重點(diǎn)。在往期的《微型計算機(jī)》也曾介紹過,核心融合技術(shù)的一大難題是如何實(shí)現(xiàn)各個核心問的低延遲通信。在上面的那個指令切分例子中,如果我們把前三條指令放到三個不同核心上執(zhí)行,到了第四條指令的時候,就要把負(fù)責(zé)指令1的核心和負(fù)責(zé)指令3的核心中產(chǎn)生的新數(shù)據(jù)傳遞給負(fù)責(zé)指令4的核心,如果低延遲通信不能實(shí)現(xiàn),逆向超線程實(shí)際上也就是鏡中花水中月。Soft Machines宣稱可以在幾個周期的延遲下通過寄存器堆和一級緩存交換數(shù)據(jù),尤為令人震驚。
另一個值得關(guān)注的問題是推測執(zhí)行(Speculative Execution)?,F(xiàn)代高性能微結(jié)構(gòu)大量地使用推測執(zhí)行來提高性能,例如往期介紹過的訪存地址反別名的推測性分析,以及分支預(yù)測。如何進(jìn)行精準(zhǔn)的推測,以及如何從錯誤推測中快速回退也是非常重要的高性能設(shè)計技術(shù)。Soft Machines披露,VISC結(jié)構(gòu)可以在個位數(shù)的執(zhí)行周期中從錯誤預(yù)測的分支中回退,但是除此以外沒有披露其他有用的信息。從核心內(nèi)部的流水線上來看,分派(Dispatch)、寄存器讀與執(zhí)行和傳統(tǒng)流水線區(qū)別并不大,但是整個流水線的前半段才是VISC的不同之處。硬件虛擬線程的形成(formation)、執(zhí)行資源的分配(aIlocation)、調(diào)度(scheduling)花了9-12個周期的時間,對比傳統(tǒng)的硬件亂序多發(fā)射流水線,指令從取出到解碼、重命名、推入保留站也需要大約十個時鐘周期左右,從流水線深度上來說VISC與傳統(tǒng)解決方案可能是互相持平。Soft Machines認(rèn)為自己的設(shè)計應(yīng)該算是短流水,對此筆者不敢茍同,在流水線深度上來說VISC結(jié)構(gòu)并不占優(yōu)勢。硬件虛擬線程的處理也是頗為核心的要素,可惜的是Soft Machines到目前為止也沒有公布更多的信息,使得外界的判斷多半流于猜測。雖然許多關(guān)鍵細(xì)節(jié)缺失,但從目前已知的信息來看,VISC的這個設(shè)計基本已經(jīng)靠攏了大家想象中的“逆向超線程”,由一個全局共享前端對一個單線程的指令切分成多個虛擬硬件線程,然后多核心的執(zhí)行資源互相協(xié)作執(zhí)行,允許低延遲地相互傳遞數(shù)據(jù),可以說“逆向超線程”是描述這種設(shè)計的最好解釋。
可信度不高 疑云重重的測試數(shù)據(jù)
從設(shè)計框架上來看,VISC確實(shí)非常超前,實(shí)踐了至少兩個目前仍處于探索階段、未見大規(guī)模工業(yè)化量產(chǎn)的結(jié)構(gòu)設(shè)計點(diǎn),那么它的實(shí)測性能如何呢?從VISC開始放出消息到現(xiàn)在,許多人為它宣稱的IPC成倍提高感到震驚,后來更是由震驚轉(zhuǎn)而懷疑。Soft Machines于今年向媒體公布了一組測試數(shù)據(jù),但是仍未能打消懷疑,反而引來了更多外界的質(zhì)疑。如上一頁右下圖,這組數(shù)據(jù)的橫軸是SPEC2006的性能測試分?jǐn)?shù),縱軸是這個SPEC分?jǐn)?shù)水平背后對應(yīng)的單位能量消耗。乍看之下,VISC的新設(shè)計似乎在性能和能耗上完全碾壓了現(xiàn)有亂序多發(fā)射設(shè)計中的幾個代表性樣本,但實(shí)際上并非如此。這張圖被詬病最多的一點(diǎn)就是:圖中的SPEC2006測試分?jǐn)?shù)不是SPECint也不是SPECfp,而是SPECin和SPECfp的幾何平均數(shù),使得其真實(shí)性能水平被蓋上了一層偽裝。endprint
SPECint和SPECfp是SPECCPU基準(zhǔn)測試程序中的兩大組件,包括截然不同的一批測試項(xiàng)目,分別統(tǒng)計整數(shù)性能和浮點(diǎn)性能。由于整數(shù)和浮點(diǎn)測試集的性能特征差別太大,一般來說這兩個分?jǐn)?shù)是各自獨(dú)立計算的。Soft Machines將這兩者混合統(tǒng)計是一個明顯、不可辨駁的錯誤,也讓外界對VISC產(chǎn)品的性能解讀變得更加困難。當(dāng)年基于超長指令字結(jié)構(gòu)的安騰系列CPU就是在浮點(diǎn)上領(lǐng)先同時代其他硬件的亂序多發(fā)射設(shè)計,但是整數(shù)性能則十分孱弱。筆者懷疑Soft Machines的這個錯誤是為了掩蓋整數(shù)性能的落后,而有意為之。
即便忽視了混合SPECint和SPECfp這個嚴(yán)重錯誤,SoftMachines的測試仍舊如同篩子一樣滿是疑點(diǎn)和漏洞。Soft Machines聲稱所有的參測CPU都按照某種“業(yè)界標(biāo)準(zhǔn)”把測試分?jǐn)?shù)按照Last-Level-Cache(即處理器的最后一級緩存,如普通CPU的三級緩存)1MB大小的設(shè)定進(jìn)行了調(diào)整。筆者從未聽說過有這個“業(yè)界標(biāo)準(zhǔn)”的存在,SPEC測試集中的測試程序有的對Last-LeveI-Cache極其敏感,如429.mcf,在一定Last-Level-Cache容量范圍以內(nèi)它的執(zhí)行性能幾乎是隨著容量呈現(xiàn)線性增長的,也有的如同403.gcc,在不同的Last-LeveI-Cache大小下性能只有個位數(shù)百分點(diǎn)的小幅波動,幾乎可以忽略不計。這個“業(yè)界標(biāo)準(zhǔn)”就算是真的存在,又要如何去處理這種情況呢?對不同的測試子項(xiàng)進(jìn)行不同的加權(quán)處理嗎?
另外,目前Soft Machines已經(jīng)有了TSMC 28nm工藝生產(chǎn)的第一代產(chǎn)品原型,運(yùn)行頻率為500MHz,可以啟動Linux系統(tǒng),也就是說可以肯定Soft Machines已經(jīng)脫離了紙面設(shè)計的階段,至少有了可以完整工作的初步原型。但是Soft Machines的所有性能測試都是基于RTL仿真進(jìn)行的,即便我們大度地假定這個RTL仿真是加入了完整正確時序信息的后仿真、并且忽視后仿真和實(shí)際流片之間的差距,這個測試方法也令人難以接受。目前Soft Machines手上只有500MHz的原型,在這個節(jié)點(diǎn)上使用簡單的插值推算2GHz及其以上性能水平是很危險的做法。主頻的跨越式提高往往需要借助結(jié)構(gòu)設(shè)計與邏輯的變動,但是這樣的變動也同時意味著IPC的值會同時發(fā)生變化。具體變動幅度有多大,只有做完了高主頻設(shè)計、再重新進(jìn)行測試評估才能知道。Soft MachiDes認(rèn)為這樣的仿真測試與真實(shí)設(shè)計之間只會有5%~10%的差距,在沒有進(jìn)一步證據(jù)予以佐證的情況下,筆者認(rèn)為這一點(diǎn)存在不可回避的漏洞。
基于這一份公開數(shù)據(jù),Soft Machines的VISC概念和原型系統(tǒng)是無法說服業(yè)界的,甚至由于數(shù)據(jù)的呈現(xiàn)方式上出現(xiàn)了重大錯誤,不由得讓人懷疑這樣的數(shù)據(jù)背后是不是有著某種掩飾性的考量,所以這次的性能披露非但沒有說明什么問題,反而是令Soft Machines的公信力蒙受損失。
保持樂觀態(tài)度 如何看待Soft Machines?
雖然測試數(shù)據(jù)無法令人信服,結(jié)構(gòu)設(shè)計的要點(diǎn)也是存有模糊,但是筆者仍然堅持認(rèn)為對于Soft Machines以及它的VISC產(chǎn)品抱持寬容態(tài)度。為什么呢?這要從微結(jié)構(gòu)的發(fā)展歷史與目前的行業(yè)現(xiàn)狀來解釋一番。
微結(jié)構(gòu)設(shè)計和研發(fā),直觀地說,其實(shí)非常像是在一片泥濘不堪、布滿深坑和陷阱的地域上尋找埋藏的寶藏。在上世紀(jì)八九十年代,業(yè)界剛剛開始邁過高性能微結(jié)構(gòu)門檻的時候(九十年代初才誕生第一個基于CMOS的多發(fā)射設(shè)計),可以說整個業(yè)界對這片地域是所知不多的,當(dāng)時的微結(jié)構(gòu),即便是量產(chǎn)化的工業(yè)級設(shè)計,背后的實(shí)驗(yàn)支持和理論分析都遠(yuǎn)沒有今天這么雄厚,因此帶有很強(qiáng)的探索性質(zhì)?;仡^翻閱當(dāng)時的發(fā)展歷史不難看出,有無數(shù)瘋狂的概念設(shè)計倒在了初步模擬實(shí)驗(yàn)的階段,未能更進(jìn)一步,頗具代表性的例子就是值預(yù)測(Value Prediction)技術(shù)的研究。這種技術(shù)期望于通過程序執(zhí)行地址、循環(huán)執(zhí)行次數(shù)等信息,在實(shí)際計算完成前就預(yù)測計算結(jié)果,但由于準(zhǔn)確率確實(shí)不佳,至今未能得到主流認(rèn)可,投入在這個方向上的大量經(jīng)費(fèi)和結(jié)構(gòu)設(shè)計專家的人力資源可以說算是掉進(jìn)坑里了。但是這些投入完全沒有任何意義嗎?
不盡然。這些不成功的設(shè)計有兩個作用:其一,明確告訴后人,這里有坑,謹(jǐn)慎繞行;其二,從中可以抽取出有用的實(shí)驗(yàn)數(shù)據(jù)并加以分析,有可能得到意外收獲。例如在值預(yù)測這個大坑旁邊,光筆者所知就有至少兩個被證明有價值的礦點(diǎn):訪存地址反別名分析(memorv disambiguation)以及循環(huán)指令緩存(loop cache)的執(zhí)行次數(shù)預(yù)測。
隨著時間推移,越來越多的實(shí)驗(yàn)數(shù)據(jù)和理論分析積累,有一個大礦點(diǎn)被系統(tǒng)地發(fā)掘出來,其附近地域也被公認(rèn)為安全地帶。這個大礦點(diǎn)就是由上世紀(jì)60年代的CDC6600首創(chuàng),IBM 360/91加強(qiáng)的硬件亂序多發(fā)射設(shè)計框架。在硬件亂序多發(fā)射優(yōu)勢尚不穩(wěn)固的時候,亦有一批先驅(qū)者奔向其他可能的礦區(qū)開始試探性采掘,這里面最有代表性的例子就是超長指令字(VLIW)結(jié)構(gòu)。而隨著Intel Itanium系列的失敗,這片礦點(diǎn)就被公認(rèn)為價值不如硬件亂序多發(fā)射,只在少量場合下繼續(xù)使用。隨著越來越多的資源投入到對硬件亂序多發(fā)射的開掘,這片礦區(qū)的身價進(jìn)一步水漲船高,最終超越了所有其他選擇,并且在大多數(shù)應(yīng)用場景下至今仍保持壓倒性優(yōu)勢。截止到這個時間點(diǎn)上,硬件亂序多發(fā)射框架就變成了事實(shí)上的第一選擇以及近乎是唯一選擇。除了屈指可數(shù)的幾個異類以外(全美達(dá)、NVIDlA丹佛、Intel安騰,IBM Power6),硬件亂序多發(fā)射變成了高性能CPU的立足點(diǎn)。脫離這個框架,踩在其他區(qū)域嘗試探索起步的設(shè)計幾乎最后都宣告失敗。只有踩在硬件亂序多發(fā)射圈定范圍內(nèi)的設(shè)計才能存活,頗有點(diǎn)《切爾諾貝利:晴空》那片輻射變異地帶里安全區(qū)的味道。
從2005年前后開始,硬件亂序多發(fā)射的增長潛力開始放緩。從Dothan到Merom到Nehalem到最近的Skylake,主體結(jié)構(gòu)基本上沒有出現(xiàn)多少變化,性能的增長只是來源于在同一個結(jié)構(gòu)框架下的小幅調(diào)優(yōu),每年帶來10%上下的改進(jìn),僅此而已。這片安全區(qū)仍然安全,能夠保證設(shè)計框架的大方向不會出現(xiàn)重大錯誤,但是寶藏也挖空了。
從這個尺度上來說,在傳統(tǒng)硬件亂序多發(fā)射框架以外進(jìn)行探索的這些努力就顯得特別珍貴。并不是每個研究機(jī)構(gòu)、公司都有這樣的信心去挑戰(zhàn)傳統(tǒng)硬件亂序多發(fā)射框架幾十年積累下來的優(yōu)勢,嘗試做出一些顛覆性的改變。在這幾十年中,偏離硬件亂序多發(fā)射框架的“探路者”們其實(shí)數(shù)目不少,但是做得有聲有色、一度曾讓人燃起希望的則少之又少。像VISC這樣的個例,盡管已經(jīng)顯露出有很大的不靠譜可能性,但是筆者仍然堅持推崇其探索的努力,在挑戰(zhàn)傳統(tǒng)這件事情上,失敗是常態(tài),成功是偶爾。
也有一些外界批評認(rèn)為,VISC目前的第一代產(chǎn)品原型只能運(yùn)行在500MHz的頻率上,這是否說明其結(jié)構(gòu)設(shè)計的流水化存在問題,使得頻率暴降?這的確有可能,要讓多個物理核心同時追蹤較大范圍的指令相關(guān)性,低頻可能是不可避免的,但同時也要看到,作為原型設(shè)計推出的東西,而且又是第一代,往往不是以性能為第一設(shè)計考量。原型系統(tǒng)的第一目的是測試整個執(zhí)行框架是否可工作、是否可行,時序只要收斂就好,并不太追求高頻率,以原型系統(tǒng)的頻率來評判其量產(chǎn)頻率是不對的。如果Soft Machines后繼的幾代系統(tǒng)都只能工作在低頻下,才能比較有力地說明其結(jié)構(gòu)流水線確實(shí)存在問題。以新結(jié)構(gòu)為賣點(diǎn)的創(chuàng)業(yè)公司尤為艱難,當(dāng)年的全美達(dá)公司幾乎一直處于燒錢狀態(tài),盈利很少,希望Soft Machines能堅持下去。同時筆者也希望Soft Machines如果萬一也不幸走到失敗地步,能夠以更加開放一些的態(tài)度提供更加詳細(xì)的結(jié)構(gòu)設(shè)計資料和測試數(shù)據(jù),為可能出現(xiàn)的下一個、下一批勇敢闖出安全區(qū)的人亮起一座燈塔。endprint