本書講解計算機底層的物理原理。一方面,晶體管正在逐漸縮小到納米尺度;另一方面,大規(guī)模計算機及其數(shù)據(jù)中心的耗能在大幅增長。這使得實現(xiàn)計算機的性能、功耗和可靠性變得越來越困難。本書描述的物理原理涵蓋了計算機的所有抽象層次,使讀者從一個嶄新的視角來理解計算機系統(tǒng)以及軟件和硬件的設計。
前 言The Physics of Computing本書試圖從更廣泛、更基礎的角度來描述計算機工程。一直以來,計算機系統(tǒng)設計采用的都是示例驅(qū)動的方法,大量軟件都遵循從理論到實現(xiàn)的設計過程——比如排序算法。以前,我們并不能十分確定計算機系統(tǒng)設計中的一些關鍵問題,因此需要針對特定的系統(tǒng)需求進行分析研究,但是現(xiàn)在,我們已經(jīng)能夠?qū)ζ渲械脑S多問題進行普適描述。本書中計算機工程設計方法的核心則是那些更基礎的理論。
數(shù)字系統(tǒng)的基本原理是我們學習的重中之重,因為現(xiàn)在我們已經(jīng)很難再觸摸到或看到邏輯電路層面的操作。當我還是學生的時候,大多數(shù)系統(tǒng)由電路板搭建而成,而電路板則由小規(guī)模集成(SSI)邏輯電路和中規(guī)模集成(MSI)邏輯電路組成。我們當時別無選擇,必須通過分析電路和信號波形來解決問題。而現(xiàn)在,所有東西都隱藏在一塊芯片里面,即使對于電路板來說,連線也更細并且更難以分析。今天,許多學生只知道芯片中處理的是“0”和“1”,而對計算機系統(tǒng)中的電壓與電流毫無概念。
本書并不要求學生設計任何東西,而是將帶領學生研究決定計算機系統(tǒng)設計空間的基本原理。我認為這些基本原理相對于計算機系統(tǒng)就像控制面板上的旋鈕相對于儀表一樣:改變旋鈕的設置會導致儀表數(shù)值發(fā)生變化,并且一個旋鈕可能會影響幾個儀表數(shù)值。想想看,這就像是降低MOS電介質(zhì)厚度之后的連鎖效應:晶體管跨導發(fā)生變化,進而縮短門電路的延遲,卻增大了泄漏電流。
工程師不能只在理想情況下進行系統(tǒng)設計,而應該關注一系列的指標或需求。計算機架構(gòu)設計的經(jīng)典指標是性能,或者更準確地說是吞吐量。但實際設計時還必須兼顧一些其他指標,其中最重要的就是能耗以及可靠性。性能、功耗和可靠性都是底層物理現(xiàn)象的基礎,并與物理實現(xiàn)有著千絲萬縷的聯(lián)系:改善其中一個指標可能會導致其他指標惡化。就像一句老話,天下沒有免費的午餐,這也同樣適用于計算機系統(tǒng)設計領域。
計算機工程是一個相對較新的研究領域,剛開始時往往專注于如何設計與歸類——如實現(xiàn)某個系統(tǒng),或者通過不同方式實現(xiàn)某個系統(tǒng)。隨著該領域的逐漸成熟,現(xiàn)在可以開始研究其基本原理了。生物學家E. O. Wilson曾說過,“一個領域最初由提出的問題定義,但最終則由這個問題的答案確定!庇嬎銠C工程設計領域經(jīng)過70年的發(fā)展,是時候開始思考這個答案了。
我關注計算機系統(tǒng)設計領域很長時間了。多年來,性能一直是計算機系統(tǒng)設計最重要的指標,當然,在ASIC設計領域則更關注面積(也就是成本)。在Perry Cook教授和我開設的關于普適信息系統(tǒng)的課程中,我開始更加認真地考慮其他限制因素,特別是功耗。佐治亞理工學院的這門新課程推動我把這一思路完善成合乎邏輯的結(jié)論。
這門課程涵蓋了計算機系統(tǒng)的工程設計與物理實現(xiàn)。一些在計算機架構(gòu)甚至軟件設計中最基本的現(xiàn)象,比如內(nèi)存墻、電源墻、快速暗場(race to dark)等問題,都與其物理基礎有關。要想理解這些專業(yè)的計算問題,僅有肖克利半導體理論是遠遠不夠的,我們還需要了解熱力學、靜電學以及大量的電路理論知識。
當我思考本書內(nèi)容時,我意識到玻耳茲曼常數(shù)k是一個關鍵概念。k隨處可見:二極管方程、阿倫尼烏斯方程、溫度等,數(shù)不勝數(shù)。玻耳茲曼常數(shù)將溫度和能耗聯(lián)系在一起,因此它理所應當?shù)嘏c本書主題緊密相關。
本書中的某些內(nèi)容僅針對現(xiàn)代CMOS技術,比如漏電機制,而其他內(nèi)容則可能適用于大量電路與元器件技術。對于計算機工程師而言,即使CMOS被其他技術所取代,邏輯線網(wǎng)延遲、亞穩(wěn)態(tài)以及可靠性基礎也仍然屬于應掌握的基礎知識。
一些讀者可能會覺得本書中的部分內(nèi)容過于簡單和精練,但我希望這些讀者能夠在本書的其他部分找到濃縮和高深的感覺。理解計算機工作原理的唯一途徑就是了解所有相關主題之間的關聯(lián),即使在剛開始時關聯(lián)性表現(xiàn)得并不明顯。我們知道設計過程中的一些關鍵點是相互聯(lián)系的,因為當調(diào)節(jié)其中一個參數(shù)來優(yōu)化設計時,卻往往發(fā)現(xiàn)其副作用會抵消其他優(yōu)勢。本書將用盡可能簡單的方式來描述概念,希望讀者能夠?qū)λ鼈冇谢镜牧私狻8信d趣的讀者可以自行深入學習,不過本書的主要目的是為計算機物理實現(xiàn)提供統(tǒng)一的描述。
本書同時適用于計算機工程師和電子工程師。但這兩類讀者具有的知識背景差異很大:計算機工程師往往缺乏電路設計經(jīng)驗,即便他們知道基爾霍夫定律,但仍不擅長電路分析;而電子工程師則往往對計算機體系結(jié)構(gòu)所知甚少。本書寫作過程中的一個挑戰(zhàn)就是為每一類讀者都提供足夠多的知識背景。
本書涵蓋了大量的發(fā)現(xiàn)史和發(fā)明史。首先,回顧那些影響當下技術的設計方案,能夠使我們認識到一個問題總有多種解決方案,并且能夠令我們關注那些經(jīng)過歷史沉淀下來的方案的真正優(yōu)勢。其次,20世紀一些最重要的發(fā)明都來自于半導體物理和計算機工程領域。這些發(fā)明在未來的幾個世紀里仍然有用,但我們不能因為習慣了而忘記對這些發(fā)明以及發(fā)明家致以深深的敬意。
本書的最初靈感來源于Richard Feynman所著的《Lectures on Computing》一書,但那本書主要講述量子計算,并沒有考慮太多傳統(tǒng)計算領域的問題。比如,F(xiàn)eynman并沒有提及的亞穩(wěn)態(tài)其實是計算機系統(tǒng)設計中的一個基本物理現(xiàn)象。我們對Feynman在計算機物理本質(zhì)方面的早期認知致以崇高的敬意,并感謝他所著的《Lectures on Physics》一書,這本書為我們認識計算機底層的基本物理現(xiàn)象提供了一個清晰且簡潔的思路。
本書在寫作過程中得到了許多人的幫助,他們是:我的朋友及同事Saibal Mukhopodhyay開設了“Physical Foundations of Computer Engineering”課程,他提供了許多具體建議,尤其在可靠性及漏電機制方面,在此對他的耐心及洞察力表示衷心的感謝;Dave Coelho慷慨地提供了有關配電系統(tǒng)的相關信息;Kees Vissers提出了弧焊機電流比較法;Alec Ishii在時鐘分配方面提供了建議;Kevin Cao給出了如何最有效地利用預測技術模型(Predictive Technology Model)的建議;Bruce Jacob對DRAM提供了見解;Srini Devadas為附錄D提供了建議;Tom Conte提供了關于內(nèi)核存儲、Pentium Pro的內(nèi)容,并針對當今及未來計算展開了討論。感謝審稿人的寶貴意見,感謝編輯Nate McFadden為本書的開發(fā)及出版提供的指導意見。若你發(fā)現(xiàn)本書中的任何錯誤,可以直接聯(lián)系我。
瑪里琳·沃爾夫(Marilyn Wolf)亞特蘭大
目 錄
The Physics of Computing
出版者的話
譯者序
前言
第1章 電子計算機 1
1.1 引言 1
1.2 計算機發(fā)展史 1
1.2.1 機械式計算設備 1
1.2.2 計算理論 3
1.2.3 電子計算機 5
1.3 計算機系統(tǒng)指標 7
1.4 本書一覽 8
1.5 小結(jié) 9
第2章 晶體管與集成電路 10
2.1 引言 10
2.2 電子器件和電子電路 10
2.2.1 早期的真空管器件 10
2.2.2 真空三極管 11
2.3 材料物理 15
2.3.1 金屬材料 15
2.3.2 玻耳茲曼常數(shù)與溫度 18
2.3.3 半導體材料 19
2.4 固態(tài)器件 24
2.4.1 半導體二極管 24
2.4.2 MOS電容器 27
2.4.3 MOSFET的基本操作 30
2.4.4 MOSFET的高級特征 37
2.5 集成電路 40
2.5.1 摩爾定律 41
2.5.2 制造工藝 42
2.5.3 光刻技術 45
2.5.4 良品率 47
2.5.5 特征分離 48
2.6 小結(jié) 49
第3章 邏輯門 52
3.1 引言 52
3.2 CMOS反相器 53
3.3 門電路的靜態(tài)特性 55
3.4 延遲 60
3.4.1 晶體管模型 60
3.4.2 RC模型的延遲 63
3.4.3 驅(qū)動與負載 69
3.5 功耗與能量 70
3.6 縮放原理 74
3.7 可靠性 78
3.8 小結(jié) 80
第4章 時序機 83
4.1 引言 83
4.2 組合邏輯 83
4.2.1 事件模型 83
4.2.2 網(wǎng)絡模型 84
4.2.3 增益與可靠性 86
4.2.4 增益與延遲 88
4.2.5 延遲與功耗 91
4.2.6 邏輯與互連中的噪聲和可靠性 91
4.2.7 電源與可靠性 92
4.2.8 噪聲與輸入/輸出耦合 97
4.3 互連 98
4.3.1 寄生阻抗 98
4.3.2 傳輸線 99
4.3.3 串擾 104
4.3.4 布線復雜度與蘭特規(guī)則 105
4.4 時序機 107
4.4.1 時序模型 107
4.4.2 寄存器 109
4.4.3 時鐘 112
4.4.4 亞穩(wěn)態(tài) 117
4.5 小結(jié) 120
第5章 處理器與系統(tǒng) 124
5.1 引言 124
5.2 系統(tǒng)可靠性 125
5.3 處理器 127
5.3.1 微處理器的特性 128
5.3.2 總線和互連 129
5.3.3 全局通信 133
5.3.4 時鐘 135
5.4 存儲器 139
5.4.1 存儲器結(jié)構(gòu) 140
5.4.2 存儲器系統(tǒng)的性能 143
5.4.3 DRAM系統(tǒng) 145
5.4.4 DRAM的可靠性 146
5.5 大容量存儲器 147
5.5.1 磁盤驅(qū)動器 147
5.5.2 閃存 148
5.5.3 存儲和性能 151
5.6 系統(tǒng)功耗 151
5.6.1 服務器系統(tǒng) 152
5.6.2 便攜系統(tǒng)與電池 154
5.6.3 功耗管理 157
5.7 熱傳遞 157
5.7.1 熱傳遞的特性 158
5.7.2 熱傳遞的模型 160
5.7.3 熱與可靠性 165
5.7.4 熱管理 166
5.8 小結(jié) 167
第6章 輸入和輸出 169
6.1 引言 169
6.2 顯示器 169
6.3 圖像傳感器 174
6.4 觸摸傳感器 178
6.5 傳聲器 179
6.6 加速度計和慣性傳感器 180
6.7 小結(jié) 181
第7章 新興技術 183
7.1 引言 183
7.2 碳納米管 183
7.3 量子計算機 185
7.4 小結(jié) 189
附錄A 常量與公式 190
附錄B 電路 193
附錄C 概率 201
附錄D 高級主題 203
參考文獻 213