本書講解計算機(jī)底層的物理原理。一方面,晶體管正在逐漸縮小到納米尺度;另一方面,大規(guī)模計算機(jī)及其數(shù)據(jù)中心的耗能在大幅增長。這使得實現(xiàn)計算機(jī)的性能、功耗和可靠性變得越來越困難。本書描述的物理原理涵蓋了計算機(jī)的所有抽象層次,使讀者從一個嶄新的視角來理解計算機(jī)系統(tǒng)以及軟件和硬件的設(shè)計。
前 言The Physics of Computing本書試圖從更廣泛、更基礎(chǔ)的角度來描述計算機(jī)工程。一直以來,計算機(jī)系統(tǒng)設(shè)計采用的都是示例驅(qū)動的方法,大量軟件都遵循從理論到實現(xiàn)的設(shè)計過程——比如排序算法。以前,我們并不能十分確定計算機(jī)系統(tǒng)設(shè)計中的一些關(guān)鍵問題,因此需要針對特定的系統(tǒng)需求進(jìn)行分析研究,但是現(xiàn)在,我們已經(jīng)能夠?qū)ζ渲械脑S多問題進(jìn)行普適描述。本書中計算機(jī)工程設(shè)計方法的核心則是那些更基礎(chǔ)的理論。
數(shù)字系統(tǒng)的基本原理是我們學(xué)習(xí)的重中之重,因為現(xiàn)在我們已經(jīng)很難再觸摸到或看到邏輯電路層面的操作。當(dāng)我還是學(xué)生的時候,大多數(shù)系統(tǒng)由電路板搭建而成,而電路板則由小規(guī)模集成(SSI)邏輯電路和中規(guī)模集成(MSI)邏輯電路組成。我們當(dāng)時別無選擇,必須通過分析電路和信號波形來解決問題。而現(xiàn)在,所有東西都隱藏在一塊芯片里面,即使對于電路板來說,連線也更細(xì)并且更難以分析。今天,許多學(xué)生只知道芯片中處理的是“0”和“1”,而對計算機(jī)系統(tǒng)中的電壓與電流毫無概念。
本書并不要求學(xué)生設(shè)計任何東西,而是將帶領(lǐng)學(xué)生研究決定計算機(jī)系統(tǒng)設(shè)計空間的基本原理。我認(rèn)為這些基本原理相對于計算機(jī)系統(tǒng)就像控制面板上的旋鈕相對于儀表一樣:改變旋鈕的設(shè)置會導(dǎo)致儀表數(shù)值發(fā)生變化,并且一個旋鈕可能會影響幾個儀表數(shù)值。想想看,這就像是降低MOS電介質(zhì)厚度之后的連鎖效應(yīng):晶體管跨導(dǎo)發(fā)生變化,進(jìn)而縮短門電路的延遲,卻增大了泄漏電流。
工程師不能只在理想情況下進(jìn)行系統(tǒng)設(shè)計,而應(yīng)該關(guān)注一系列的指標(biāo)或需求。計算機(jī)架構(gòu)設(shè)計的經(jīng)典指標(biāo)是性能,或者更準(zhǔn)確地說是吞吐量。但實際設(shè)計時還必須兼顧一些其他指標(biāo),其中最重要的就是能耗以及可靠性。性能、功耗和可靠性都是底層物理現(xiàn)象的基礎(chǔ),并與物理實現(xiàn)有著千絲萬縷的聯(lián)系:改善其中一個指標(biāo)可能會導(dǎo)致其他指標(biāo)惡化。就像一句老話,天下沒有免費的午餐,這也同樣適用于計算機(jī)系統(tǒng)設(shè)計領(lǐng)域。
計算機(jī)工程是一個相對較新的研究領(lǐng)域,剛開始時往往專注于如何設(shè)計與歸類——如實現(xiàn)某個系統(tǒng),或者通過不同方式實現(xiàn)某個系統(tǒng)。隨著該領(lǐng)域的逐漸成熟,現(xiàn)在可以開始研究其基本原理了。生物學(xué)家E. O. Wilson曾說過,“一個領(lǐng)域最初由提出的問題定義,但最終則由這個問題的答案確定!庇嬎銠C(jī)工程設(shè)計領(lǐng)域經(jīng)過70年的發(fā)展,是時候開始思考這個答案了。
我關(guān)注計算機(jī)系統(tǒng)設(shè)計領(lǐng)域很長時間了。多年來,性能一直是計算機(jī)系統(tǒng)設(shè)計最重要的指標(biāo),當(dāng)然,在ASIC設(shè)計領(lǐng)域則更關(guān)注面積(也就是成本)。在Perry Cook教授和我開設(shè)的關(guān)于普適信息系統(tǒng)的課程中,我開始更加認(rèn)真地考慮其他限制因素,特別是功耗。佐治亞理工學(xué)院的這門新課程推動我把這一思路完善成合乎邏輯的結(jié)論。
這門課程涵蓋了計算機(jī)系統(tǒng)的工程設(shè)計與物理實現(xiàn)。一些在計算機(jī)架構(gòu)甚至軟件設(shè)計中最基本的現(xiàn)象,比如內(nèi)存墻、電源墻、快速暗場(race to dark)等問題,都與其物理基礎(chǔ)有關(guān)。要想理解這些專業(yè)的計算問題,僅有肖克利半導(dǎo)體理論是遠(yuǎn)遠(yuǎn)不夠的,我們還需要了解熱力學(xué)、靜電學(xué)以及大量的電路理論知識。
當(dāng)我思考本書內(nèi)容時,我意識到玻耳茲曼常數(shù)k是一個關(guān)鍵概念。k隨處可見:二極管方程、阿倫尼烏斯方程、溫度等,數(shù)不勝數(shù)。玻耳茲曼常數(shù)將溫度和能耗聯(lián)系在一起,因此它理所應(yīng)當(dāng)?shù)嘏c本書主題緊密相關(guān)。
本書中的某些內(nèi)容僅針對現(xiàn)代CMOS技術(shù),比如漏電機(jī)制,而其他內(nèi)容則可能適用于大量電路與元器件技術(shù)。對于計算機(jī)工程師而言,即使CMOS被其他技術(shù)所取代,邏輯線網(wǎng)延遲、亞穩(wěn)態(tài)以及可靠性基礎(chǔ)也仍然屬于應(yīng)掌握的基礎(chǔ)知識。
一些讀者可能會覺得本書中的部分內(nèi)容過于簡單和精練,但我希望這些讀者能夠在本書的其他部分找到濃縮和高深的感覺。理解計算機(jī)工作原理的唯一途徑就是了解所有相關(guān)主題之間的關(guān)聯(lián),即使在剛開始時關(guān)聯(lián)性表現(xiàn)得并不明顯。我們知道設(shè)計過程中的一些關(guān)鍵點是相互聯(lián)系的,因為當(dāng)調(diào)節(jié)其中一個參數(shù)來優(yōu)化設(shè)計時,卻往往發(fā)現(xiàn)其副作用會抵消其他優(yōu)勢。本書將用盡可能簡單的方式來描述概念,希望讀者能夠?qū)λ鼈冇谢镜牧私狻8信d趣的讀者可以自行深入學(xué)習(xí),不過本書的主要目的是為計算機(jī)物理實現(xiàn)提供統(tǒng)一的描述。
本書同時適用于計算機(jī)工程師和電子工程師。但這兩類讀者具有的知識背景差異很大:計算機(jī)工程師往往缺乏電路設(shè)計經(jīng)驗,即便他們知道基爾霍夫定律,但仍不擅長電路分析;而電子工程師則往往對計算機(jī)體系結(jié)構(gòu)所知甚少。本書寫作過程中的一個挑戰(zhàn)就是為每一類讀者都提供足夠多的知識背景。
本書涵蓋了大量的發(fā)現(xiàn)史和發(fā)明史。首先,回顧那些影響當(dāng)下技術(shù)的設(shè)計方案,能夠使我們認(rèn)識到一個問題總有多種解決方案,并且能夠令我們關(guān)注那些經(jīng)過歷史沉淀下來的方案的真正優(yōu)勢。其次,20世紀(jì)一些最重要的發(fā)明都來自于半導(dǎo)體物理和計算機(jī)工程領(lǐng)域。這些發(fā)明在未來的幾個世紀(jì)里仍然有用,但我們不能因為習(xí)慣了而忘記對這些發(fā)明以及發(fā)明家致以深深的敬意。
本書的最初靈感來源于Richard Feynman所著的《Lectures on Computing》一書,但那本書主要講述量子計算,并沒有考慮太多傳統(tǒng)計算領(lǐng)域的問題。比如,F(xiàn)eynman并沒有提及的亞穩(wěn)態(tài)其實是計算機(jī)系統(tǒng)設(shè)計中的一個基本物理現(xiàn)象。我們對Feynman在計算機(jī)物理本質(zhì)方面的早期認(rèn)知致以崇高的敬意,并感謝他所著的《Lectures on Physics》一書,這本書為我們認(rèn)識計算機(jī)底層的基本物理現(xiàn)象提供了一個清晰且簡潔的思路。
本書在寫作過程中得到了許多人的幫助,他們是:我的朋友及同事Saibal Mukhopodhyay開設(shè)了“Physical Foundations of Computer Engineering”課程,他提供了許多具體建議,尤其在可靠性及漏電機(jī)制方面,在此對他的耐心及洞察力表示衷心的感謝;Dave Coelho慷慨地提供了有關(guān)配電系統(tǒng)的相關(guān)信息;Kees Vissers提出了弧焊機(jī)電流比較法;Alec Ishii在時鐘分配方面提供了建議;Kevin Cao給出了如何最有效地利用預(yù)測技術(shù)模型(Predictive Technology Model)的建議;Bruce Jacob對DRAM提供了見解;Srini Devadas為附錄D提供了建議;Tom Conte提供了關(guān)于內(nèi)核存儲、Pentium Pro的內(nèi)容,并針對當(dāng)今及未來計算展開了討論。感謝審稿人的寶貴意見,感謝編輯Nate McFadden為本書的開發(fā)及出版提供的指導(dǎo)意見。若你發(fā)現(xiàn)本書中的任何錯誤,可以直接聯(lián)系我。
瑪里琳·沃爾夫(Marilyn Wolf)亞特蘭大
目 錄
The Physics of Computing
出版者的話
譯者序
前言
第1章 電子計算機(jī) 1
1.1 引言 1
1.2 計算機(jī)發(fā)展史 1
1.2.1 機(jī)械式計算設(shè)備 1
1.2.2 計算理論 3
1.2.3 電子計算機(jī) 5
1.3 計算機(jī)系統(tǒng)指標(biāo) 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 半導(dǎo)體材料 19
2.4 固態(tài)器件 24
2.4.1 半導(dǎo)體二極管 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 光刻技術(shù) 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ū)動與負(fù)載 69
3.5 功耗與能量 70
3.6 縮放原理 74
3.7 可靠性 78
3.8 小結(jié) 80
第4章 時序機(jī) 83
4.1 引言 83
4.2 組合邏輯 83
4.2.1 事件模型 83
4.2.2 網(wǎng)絡(luò)模型 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 串?dāng)_ 104
4.3.4 布線復(fù)雜度與蘭特規(guī)則 105
4.4 時序機(jī) 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 服務(wù)器系統(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章 新興技術(shù) 183
7.1 引言 183
7.2 碳納米管 183
7.3 量子計算機(jī) 185
7.4 小結(jié) 189
附錄A 常量與公式 190
附錄B 電路 193
附錄C 概率 201
附錄D 高級主題 203
參考文獻(xiàn) 213