尋寶處理器的引人入勝之旅
當出版社的編輯介紹萬木楊的這本書給我時,我對書名《大話處理器》是有一定擔心的,其一:處理器和計算機的發(fā)展幾十年來風起云涌,其間有天才的創(chuàng)新、看似偶然的分叉和囿于商業(yè)市場考量的成功與失敗,一部技術(shù)發(fā)展史絕不比波譎云詭的社會史遜色。一部“大話”處理器的書會不會流于一部圍繞處理器發(fā)展種種軼事的大話技術(shù)史?讀書時固然會津津樂道,興趣斐然,然而掩卷沉思后,會不會仍然無法對處理器的體系結(jié)構(gòu)有更清晰的認識?其二:處理器的發(fā)展是和軟件、操作系統(tǒng)的發(fā)展互為作用的,其中很多技術(shù)點和概念都值得深入討論。采用“大話”的方式能否既保證技術(shù)書籍敘述的準確性,又不至于陷入對某些概念旁征博引的“Rat hole”式的羅列,而變得像很多剪貼式編著的IT書籍一樣?
但其后數(shù)次斷續(xù)讀稿時沉浸其中的體驗打消了我的顧慮。我?guī)状伍喿x書稿都是在出差途中(如飛機上),一個很深的體驗是一旦開始閱讀就不愿終止,一直讀到不得不將書稿收起走路為止。另一個體驗是,從任何一個間斷點,都可以把本書當作入口,去找尋別的書籍進一步深入學習其中的一些關(guān)鍵技術(shù),就好像函數(shù)調(diào)用一般,這是我所期望的帶領(lǐng)讀者進入處理器世界的導(dǎo)游書籍,因此非常愿意向廣大的讀者推薦這本書。
在技術(shù)書籍的閱讀中,我偏愛愛因斯坦闡釋的方法——“在所閱讀的書中,找出可以把自己引向深入的東西,把其他的一切統(tǒng)統(tǒng)拋掉。”這就是拋掉使大腦負擔過重和把自己誘離要點的一切。
萬木楊的這本書,在選材上圍繞處理器的核心技術(shù),從計算機發(fā)展的形態(tài)、歷史展開敘述,在簡略介紹了處理器的周邊設(shè)備后,迅速深入處理器的抽象模型,以計算機軟件生態(tài)系統(tǒng)中最重要的指令集體系結(jié)構(gòu)ISA切入到探索處理器的微架構(gòu),對處理器微架構(gòu)的一些核心技術(shù),如流水線、亂序執(zhí)行、指令級并行、線程級并行、緩存結(jié)構(gòu)和算法、緩存一致性等概念,言簡意賅地做了原理闡釋。而了解這些核心概念,是理解其后第六章優(yōu)化代碼效率的基礎(chǔ)。竊以為這些章節(jié)是本書的“hardcore”,很值得一讀。
在本書的寫作風格上,作者運用了很多嶄新的網(wǎng)絡(luò)元素和鮮活的比擬來厘清概念,比如用《我的兄弟叫順溜》中的順溜裝配子彈的例子來開展指令流水線的討論,既不流于表面、為舉例而舉例,又一以貫之地將每個案例充分展開、把問題說透,這樣的例子在本書中比比皆是,也是我推薦該書的原因之一。這體現(xiàn)了“拋掉使大腦負擔過重”的原則,以及作者對所敘述的技術(shù)的深度把握。沒有這種把握,是很難用好這種比擬的,反而容易變成“畫虎不成反類犬”。
由于長期從事性能優(yōu)化工作,此前也出版了一本針對并行優(yōu)化指南的書,因此對本書中闡述并行處理和編寫高效代碼的章節(jié)仍覺意猶未盡,這讓我想起了兩件事:
其一,我在2001年左右從事針對多核DSP的手寫匯編代碼優(yōu)化工作,就是本書里所總結(jié)的VLIW并行實現(xiàn)機制,當時一個很深的感觸是,人類大腦的并行度很低,至少在匯編這個層級,能夠持續(xù)對多個計算單元實現(xiàn)高效并行處理編程的上限恐怕就是四級并行了,人的大腦有所謂“一心不可二用”的限制,因此,此后在IA平臺上,多核、多進程一直到大規(guī)模集群的并行開發(fā)的方向就很清楚了,就是必須依賴高級語言的開發(fā)工具,支持并行實現(xiàn)的編譯器、數(shù)學庫和線程,MPI進程追蹤工具和類似Vtune這樣的指令微架構(gòu)行為的示波器,來解放人的大腦。另一方面就是開發(fā)新的并行編程模型和語言,進一步釋放多核處理器的性能。
其二,在一本論述并行超級計算機體系架構(gòu)的英文專著上,我曾讀到一段話,似可借來總結(jié)處理器性能發(fā)展的方向。即,要做快、做好一件事,基本上有三種方法。一是把事情本身縮短、少做事,這就是處理器流水線效率、分支預(yù)測命中率等等技術(shù)的發(fā)展,體現(xiàn)在軟件上就是更好的算法和更短的代碼關(guān)鍵路徑。二是做得更快、更勤些,這就是處理器上更多的浮點計算單元、更高效的緩存、新的高效指令集直到AVX這樣的高密度向量計算指令。三是讓別人去做或者和別人一起做,這就是并行,多線程和多進程的并行工作。處理器的發(fā)展,從性能上看,基本上也可以歸為上述三點,比照本書的結(jié)構(gòu),讀者也可以做個歸納。
未來的發(fā)展,我們看到了SOC的興起,我們看到CPU和GPU的混合計算,我們也看到英特爾即將推出的、針對大規(guī)模并行應(yīng)用、集成眾核架構(gòu)的協(xié)處理模式的處理器。正如丘吉爾所言,“你能看見多久的過去,就能看見多遠的未來”?;仡櫛緯刑岬降哪切┮巳雱俚奶幚砥骷夹g(shù)的來龍去脈,背后的技術(shù)原因或是市場競爭要素,奇妙之處在于,處理器的技術(shù)史是我們創(chuàng)造出來的,而身處其中之人卻難以知曉,那就讓我們“把其他的一切統(tǒng)統(tǒng)拋掉”,一起踏上本書尋寶處理器的引人入勝之旅!是為序。
何萬青 博士
英特爾數(shù)據(jù)中心產(chǎn)品部 高性能計算/工作站架構(gòu)師