近年來多核心CPU的發展勢頭非常迅猛,在消費級PC市場上4~8核心處理器產品已成為很常見的產品,同時再加上像超線程這類新技術的出現與幫助,使得普通用戶就能享受到8~16 CPU線程同時運算的快感,處理器的多線程計算性能得到極大的提升。然而另一方面則是CPU單線程性能長時間的“毫無作為”,雖然CPU單線程性能也在進步,但與多線程性能的進步幅度相比則可謂不值一提。同時很多消費級軟件對CPU單線程的依賴,如大量游戲、PhotoShop圖片處理等也使得用戶深感CPU單線程性能的不足。為此,廣大用戶非??是驝PU的單線程性能也能獲得大幅升級,甚至在去年很多人為Skylake處理器“幻想”出了一個可以聯合多個CPU線程,用于執行單一任務的“逆向超線程”新技術。
而令人興奮的是,從本刊在2015年10月下刊《解析CPU逆向超線程技術可行性》一文中的分析,可以看到要想大幅提升CPU單線程性能并非不可能,逆向超線程技術并非完全虛構,很多科技人員早就在從事這項研究。而近期一家名為Soft Machines的公司更拿出了切實的解決方案,號稱能實現IPC倍增式的提高,接下來就讓我們走進CPU單線程性能的提升利器一VISC CPU架構。
IPC倍增式的提高,這樣的豪言壯語究竟出自何方神圣?可能很多人是頭一次聽說Soft Machines公司的大名。這是一家位于硅谷的創業公司,在2006、2007年左右成立。一般來說初創階段的公司會刻意在相當長的一段時間里保持低調,也就是所謂的“秘密階段”(Stealth mode),在具有一定成果了之后,突然釋放出爆炸性消息來吸引關注,當年設計超長指令字結構+動態二進制翻譯的全美達公司也曾玩過這個手段,其公司網站曾在兩年半的時間里面只掛著一句話“網頁還沒建好”(This web page is not yet here.),然而私下里卻簽署了超過2000份保密協議來確保公司的技術和商業目標不被泄露。從這點上來說,Soft Machines選擇了和當年全美達類似的路線,直到2014年才脫離“秘密創業階段”(Stealth mode),走向前臺。這家公司迄今為止收到了一億多美元的投資,投資者包括三星、GlobalFoundries、AMD,擁有75項專利,大約250名雇員,包括前Intel、AMD、高通公司的工程師。Soft Machines試圖通過推動CPU單線程性能的增長,使用全新的結構(被稱為VISC)來達到IPC倍增。
Soft Machines公布的第一代VISC架構處理器產品原型照片
這一目標不可不謂宏大,加之先前的刻意保密形成的助推,Soft Machines公司剛剛走入公眾視線就是大紅大紫的狀態,特別是IPC倍增的高調聲明尤為吸引眼球。日前該公司召開了一次媒體發布會,公布了一些可供玩味的資料,使得我們可以窺探其結構內部的細節、初步分析該技術的前景。
因為每一條指令執行前都要經過翻譯,但是自我修改代碼(也就是代碼會修改代碼自身)的情況很少,所以可以把已經翻譯完的代碼保存在一個緩存里面,以供下次使用。除此之外,因為全美達的代碼優化工作主要在軟件上完成,因此對于總是執行、經常執行、不太執行、偶爾執行的代碼,全美達設置了四種不同的優化閾值。對于總是執行的代碼,花費多的時間做深的優化,雖然時間花費多,但是執行起來以后可以補回優化浪費的時間;對于執行很少的代碼,就不做優化或者只花費少量時間做很淺的優化,以此來降低軟件層面的開銷。這兩種優化技術都被NVIDIA吸收,應用在丹佛計劃的自研核心上,往期的《微型計算機》也做過專門解析。
讓我們先來分析一下Soft Machines提出VISC的技術背景,一個要讓IPC倍增的結構應該長成什么樣子?這是不是在吹牛?
無數歷史經驗表明,一個全新的結構如果想要獲取軟件層面的支持,修改指令集層面是需要慎之又慎的,指令集保持不變才能大限度地兼容現有的種種軟件,包括操作系統和普通應用程序。所以在VISC的結構框架里,所有的軟件線程需要原封不動地在整個系統棧中向下傳遞,這是Soft Machines唯一的選擇,不出意外地,我們終看到Soft Machines設計的VISC也的確是原封不動地接受上層軟件的代碼。但是這樣一來就限制了后繼優化的發揮,如何從這些原封不動的軟件線程中抽取指令級并行度呢?
VISC執行框架
VISC的軟件架構,圖中出現的Dynamic Optimization動態優化有可能是借鑒了全美達、NVIDIA丹佛的設計。
包括全美達在內的一批上世紀90年代的先驅者們已經探索出一條路線:指令翻譯層。在VISC的執行框架中,既有指令集的指令會被一個中間翻譯層翻譯為VISC硬件特有的硬件指令格式。目前Soft Machines確認支持將兩種上層指令集翻譯成VISC專屬的硬件格式,其中之一是ARMv8,另外一個坊間傳聞可能是x86,但是Soft Machines未予確認。這個軟件翻譯層會帶來多大的翻譯開銷是一個對性能至關重要的問題,但此次并未在公開資料中提及。