-
>
公路車寶典(ZINN的公路車維修與保養(yǎng)秘籍)
-
>
晶體管電路設(shè)計(jì)(下)
-
>
基于個(gè)性化設(shè)計(jì)策略的智能交通系統(tǒng)關(guān)鍵技術(shù)
-
>
花樣百出:貴州少數(shù)民族圖案填色
-
>
山東教育出版社有限公司技術(shù)轉(zhuǎn)移與技術(shù)創(chuàng)新歷史叢書中國高等技術(shù)教育的蘇化(1949—1961)以北京地區(qū)為中心
-
>
鐵路機(jī)車概要.交流傳動(dòng)內(nèi)燃.電力機(jī)車
-
>
利維坦的道德困境:早期現(xiàn)代政治哲學(xué)的問題與脈絡(luò)
軟件定義芯片(下冊(cè)) 版權(quán)信息
- ISBN:9787030687807
- 條形碼:9787030687807 ; 978-7-03-068780-7
- 裝幀:一般膠版紙
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>>
軟件定義芯片(下冊(cè)) 內(nèi)容簡介
《軟件定義芯片》共分上、下兩冊(cè),本書為下冊(cè)。通過回溯現(xiàn)代通用處理器和編程模型協(xié)同演化歷程分析了軟件定義芯片編程模型的研究重點(diǎn),介紹了如何利用軟件定義芯片的動(dòng)態(tài)可重構(gòu)特性提升芯片硬件安全性和可靠性,分析了軟件定義芯片面臨的挑戰(zhàn)并展望未來實(shí)現(xiàn)技術(shù)突破的發(fā)展方向,涵蓋了軟件定義芯片在人工智能、密碼計(jì)算、5G通信等領(lǐng)域的近期新研究以及面向未來的新興應(yīng)用方向。 《軟件定義芯片》適合電子科學(xué)與技術(shù)和計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的科研人員、高年級(jí)研究生,以及相關(guān)行業(yè)的工程師閱讀。
軟件定義芯片(下冊(cè)) 目錄
上冊(cè)
序
前言
第1章 緒論 1
1.1 概念演變 2
1.1.1 半導(dǎo)體集成電路發(fā)展背景 4
1.1.2 計(jì)算芯片體系架構(gòu)發(fā)展背景 5
1.1.3 軟件定義芯片VS.可編程器件 7
1.1.4 軟件定義芯片VS.動(dòng)態(tài)可重構(gòu)計(jì)算 7
1.2 可編程器件發(fā)展 10
1.2.1 歷史發(fā)展分析 10
1.2.2 FPGA的技術(shù)原理 11
1.2.3 FPGA發(fā)展面臨的問題 14
1.2.4 軟件定義芯片的顛覆性 16
1.3 國內(nèi)外研究與產(chǎn)業(yè)現(xiàn)狀 17
1.3.1 經(jīng)典可編程器件的發(fā)展現(xiàn)狀和趨勢(shì) 17
1.3.2 軟件定義芯片的研究現(xiàn)狀 18
參考文獻(xiàn) 20
第2章 軟件定義芯片概述 24
2.1 基本原理 25
2.1.1 必要性分析 25
2.1.2 技術(shù)實(shí)現(xiàn)方法 28
2.1.3 技術(shù)對(duì)比 45
2.2 特性分析 51
2.2.1 高計(jì)算效率 51
2.2.2 編程門檻低 56
2.2.3 容量不受限 57
2.2.4 高硬件安全 57
2.3 關(guān)鍵研究問題 59
2.3.1 編程模型與靈活性 62
2.3.2 硬件架構(gòu)與高效性 63
2.3.3 編譯方法與易用性 64
參考文獻(xiàn) 65
第3章 硬件架構(gòu)與電路 69
3.1 軟件定義架構(gòu)的設(shè)計(jì)原語 70
3.1.1 計(jì)算和控制 70
3.1.2 片上存儲(chǔ) 96
3.1.3 對(duì)外接口 105
3.1.4 片上互連 111
3.1.5 配置系統(tǒng) 117
3.1.6 小結(jié) 121
3.2 軟件定義架構(gòu)的開發(fā)框架 122
3.2.1 架構(gòu)設(shè)計(jì)空間探索 123
3.2.2 敏捷硬件開發(fā)實(shí)例 134
3.2.3 小結(jié) 148
3.3 軟件定義電路的設(shè)計(jì)空間 148
3.3.1 可調(diào)電路探索 149
3.3.2 模擬計(jì)算探索 152
3.3.3 近似計(jì)算探索 157
3.3.4 概率計(jì)算探索 165
3.3.5 小結(jié) 166
參考文獻(xiàn) 166
第4章 編譯系統(tǒng) 174
4.1 編譯系統(tǒng)概述 175
4.1.1 靜態(tài)編譯流程 175
4.1.2 動(dòng)態(tài)編譯流程 178
4.2 靜態(tài)編譯方法 179
4.2.1 中間表達(dá)形式 179
4.2.2 映射問題抽象與建模 186
4.2.3 軟件流水與模調(diào)度 192
4.2.4 整數(shù)線性規(guī)劃 212
4.2.5 非規(guī)則的任務(wù)映射 223
4.3 動(dòng)態(tài)編譯方法 241
4.3.1 硬件資源虛擬化 242
4.3.2 基于指令流的動(dòng)態(tài)編譯 248
4.3.3 基于配置流的動(dòng)態(tài)編譯 257
參考文獻(xiàn) 270
彩圖
下冊(cè)
序
前言
第1章 編程模型 1
1.1 軟件定義芯片的編程模型困境 2
1.2 三條路線 3
1.3 三大障礙 5
1.3.1 馮 諾依曼架構(gòu)與隨機(jī)存取機(jī)模型 6
1.3.2 內(nèi)存墻 8
1.3.3 功耗墻 12
1.3.4 I/O墻 21
1.4 三元悖論 24
1.5 三類探索 27
1.5.1 空域并行性與非規(guī)則應(yīng)用 27
1.5.2 空域并行性的編程模型 31
1.6 本章小結(jié)與展望 60
參考文獻(xiàn) 62
第2章 硬件安全性和可靠性 65
2.1 安全性 66
2.1.1 故障攻擊防御技術(shù) 66
2.1.2 抗側(cè)信道攻擊防御技術(shù) 70
2.1.3 基于軟件定義芯片的PUF 技術(shù) 79
2.2 可靠性 89
2.2.1 基于*大流算法的拓?fù)浣Y(jié)構(gòu)重構(gòu)方法 90
2.2.2 可重構(gòu)片上網(wǎng)絡(luò)多目標(biāo)聯(lián)合映射優(yōu)化方法 99
參考文獻(xiàn) 115
第3章 技術(shù)難點(diǎn)與發(fā)展趨勢(shì) 120
3.1 技術(shù)難點(diǎn)分析 120
3.1.1 靈活性:軟硬件協(xié)同的可編程性設(shè)計(jì) 121
3.1.2 高效性:硬件并行性和利用率的權(quán)衡 123
3.1.3 易用性:軟件調(diào)度的虛擬化硬件優(yōu)化 127
3.2 發(fā)展趨勢(shì)展望 129
3.2.1 應(yīng)用驅(qū)動(dòng)的軟硬件一體化設(shè)計(jì) 129
3.2.2 存算融合的多層次并行化設(shè)計(jì) 132
3.2.3 軟件透明的硬件動(dòng)態(tài)優(yōu)化設(shè)計(jì) 139
參考文獻(xiàn) 142
第4章 當(dāng)前應(yīng)用領(lǐng)域 148
4.1 應(yīng)用領(lǐng)域分析 148
4.2 人工智能 151
4.2.1 算法分析 151
4.2.2 人工智能芯片研究現(xiàn)狀 154
4.2.3 軟件定義人工智能芯片 165
4.3 5G通信基帶 173
4.3.1 算法分析 173
4.3.2 通信基帶芯片研究現(xiàn)狀 178
4.3.3 軟件定義通信基帶芯片 184
4.4 密碼計(jì)算 191
4.4.1 密碼算法分析 192
4.4.2 密碼芯片研究現(xiàn)狀 197
4.4.3 軟件定義密碼芯片 201
4.5 處理器硬件安全 207
4.5.1 概念及研究現(xiàn)狀 207
4.5.2 CPU硬件安全威脅分析 207
4.5.3 現(xiàn)有應(yīng)對(duì)方案 209
4.5.4 基于軟件定義芯片的CPU 硬件安全技術(shù) 210
4.6 圖計(jì)算 217
4.6.1 圖算法的背景介紹 218
4.6.2 圖計(jì)算的編程模型 222
4.6.3 圖計(jì)算硬件架構(gòu)研究進(jìn)展 226
4.6.4 展望 238
4.7 網(wǎng)絡(luò)協(xié)議 239
4.7.1 軟件定義網(wǎng)絡(luò)協(xié)議 240
4.7.2 軟件定義網(wǎng)絡(luò)芯片研究現(xiàn)狀 245
4.7.3 軟件定義網(wǎng)絡(luò)芯片技術(shù) 255
參考文獻(xiàn) 259
第5章 未來應(yīng)用前景 268
5.1 可演化智能計(jì)算 269
5.1.1 可演化智能計(jì)算的概念與應(yīng)用 269
5.1.2 可演化智能計(jì)算的歷史與現(xiàn)狀 270
5.1.3 軟件定義可演化智能計(jì)算芯片 274
5.2 后量子密碼 275
5.2.1 后量子密碼算法的概念與應(yīng)用 276
5.2.2 后量子密碼芯片研究現(xiàn)狀 280
5.2.3 軟件定義后量子密碼芯片 284
5.3 全同態(tài)加密 285
5.3.1 全同態(tài)加密的概念與應(yīng)用 286
5.3.2 全同態(tài)加密芯片研究現(xiàn)狀 288
5.3.3 軟件定義全同態(tài)加密計(jì)算芯片 290
參考文獻(xiàn) 297
彩圖
軟件定義芯片(下冊(cè)) 節(jié)選
第1章 編程模型 All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection. 計(jì)算機(jī)科學(xué)中幾乎所有的難題都可以通過增加中間層解決,但計(jì)算機(jī)科學(xué)的難題在于已經(jīng)有了太多中間層。—— David Wheeler[1] 軟件定義芯片與 ASIC的*大區(qū)別在于,軟件定義芯片需要像通用處理器那樣執(zhí)行用戶編寫的軟件。 ASIC僅針對(duì)特定應(yīng)用,它只需提供專用的 API,無須考慮程序員如何對(duì)其進(jìn)行編程的問題。而軟件定義芯片的功能,*終是靠程序員來實(shí)現(xiàn)的。一套硬件能吸引大量用戶投入精力開發(fā)軟件的一個(gè)必要條件是硬件上的軟件是向前兼容的:即使新一代的硬件設(shè)計(jì)發(fā)生了翻天覆地的變化,之前用戶編寫的軟件依然可以在新的芯片上正確運(yùn)行。軟件與硬件間進(jìn)行對(duì)話的“語言”即編程模型。 廣義的編程模型是指從應(yīng)用到芯片之間的所有抽象層次。通用處理器芯片在漫長的發(fā)展過程中,逐漸形成了由編程語言、編譯器中間表示、指令集架構(gòu)等抽象層次構(gòu)成的復(fù)雜的層次化中間層(indirection)模型。在這些模型中,上層中間層依次掩藏下層中間層的復(fù)雜性。例如,為了掩藏指令集架構(gòu)層指令計(jì)數(shù)器可以任意跳轉(zhuǎn)(如 x86指令集中的 jump類指令)所帶來的復(fù)雜流程控制,編程語言層提供了多種流程控制語句,如 C語言中的語句。這樣程序員在開發(fā)應(yīng)用時(shí),只需要面向特定中間層開發(fā)應(yīng)用,而無須考慮底層實(shí)現(xiàn)的復(fù)雜性。 然而,作為一種與通用處理器和 ASIC在芯片架構(gòu)和編程模型設(shè)計(jì)上都不同的新興計(jì)算架構(gòu),軟件定義芯片的編程模型面臨著“先有雞還是先有蛋”的困境:沒有軟件定義芯片的編程模型,軟件定義芯片的芯片設(shè)計(jì)如“無源之水”,缺少指引芯片設(shè)計(jì)方向的軟件;沒有軟件定義芯片的芯片設(shè)計(jì),軟件定義芯片的編程模型設(shè)計(jì)如“無本之木”,缺少檢驗(yàn)編程模型有效性的硬件。 為了破解這個(gè)僵局,本章將回溯現(xiàn)代通用處理器體系結(jié)構(gòu)和編程模型協(xié)同演化的歷程。1.1節(jié)詳細(xì)分析僵局的成因和影響。1.2節(jié)考察現(xiàn)代編程模型的中間層結(jié)構(gòu),然后從中歸納出三種編程模型的設(shè)計(jì)路線。1.3節(jié)考察芯片設(shè)計(jì)和編程模型應(yīng)當(dāng)如何應(yīng)對(duì)半導(dǎo)體器件工藝發(fā)展不平衡帶來的“三堵高墻”,即“內(nèi)存墻”、“功耗墻”和“I/O墻”。越來越復(fù)雜的硬件催生了五花八門的編程模型。1.4節(jié)將從編程模型的演化歷程總結(jié)“編程模型三元悖論”:新的編程模型無法同時(shí)獲得高通用性、高開發(fā)效率和高執(zhí)行效率,*多只能同時(shí)實(shí)現(xiàn)兩個(gè)目標(biāo),而放棄另一個(gè)目標(biāo)。結(jié)合計(jì)算系統(tǒng)抽象層次對(duì)硬件復(fù)雜性的處理方法,可以經(jīng)驗(yàn)性地說明三元悖論的合理性。*后,1.5節(jié)基于“三元悖論”,針對(duì)軟件定義芯片的編程模型困境提出三個(gè)可能的研究方向。 1.1 軟件定義芯片的編程模型困境 在過去60年里,人類創(chuàng)造了一個(gè)指數(shù)增長的奇觀:芯片性能持續(xù)指數(shù)增長,芯片之上的應(yīng)用愈發(fā)復(fù)雜多樣。編程模型作為芯片與應(yīng)用之間的契約,借由契約的前后一致性,確保了過去的應(yīng)用可以方便地移植到未來的芯片上。但摩爾定律的終結(jié),如釜底抽薪,破壞了計(jì)算產(chǎn)業(yè)的奇觀。對(duì)于軟件定義芯片,必須將芯片設(shè)計(jì)從舊的契約中解放出來,重新思考芯片、編程模型和應(yīng)用的關(guān)系。 沒有軟件定義芯片編程模型,軟件定義芯片的體系結(jié)構(gòu)設(shè)計(jì)如“無源之水”,缺少指引硬件設(shè)計(jì)方向的軟件。體系結(jié)構(gòu)研究中,對(duì)硬件范式轉(zhuǎn)換*直接的應(yīng)對(duì)方法是發(fā)明一種新的(領(lǐng)域定制)編程模型。盡管新編程模型在短期內(nèi)很有吸引力,但這通常意味著程序員必須重新編寫代碼,并且會(huì)給軟件開發(fā)團(tuán)隊(duì)帶來嚴(yán)重的理解、交流障礙,令學(xué)習(xí)曲線變得陡峭。而在硬件架構(gòu)快速迭代的階段,直接花費(fèi)大量人力物力,針對(duì)不斷演化的體系結(jié)構(gòu)設(shè)計(jì)開發(fā)自動(dòng)化的編譯器也不現(xiàn)實(shí)。這導(dǎo)致在設(shè)計(jì)新硬件范式時(shí),目標(biāo)應(yīng)用難以對(duì)硬件設(shè)計(jì)中的決策進(jìn)行快速響應(yīng),因而通常面臨無軟件可用的困境。 沒有軟件定義芯片體系結(jié)構(gòu),軟件定義芯片的編程模型設(shè)計(jì)如“無本之木”,缺少給編程模型開發(fā)提供著力點(diǎn)的硬件。編程模型的作用是掩藏復(fù)雜的硬件機(jī)制。在摩爾定律對(duì)增強(qiáng)通用處理器性能還有效的時(shí)代,編程模型的設(shè)計(jì)遠(yuǎn)比今天簡單。雖然處理器的硬件機(jī)制可能在代際之間發(fā)生巨變,但是新一代處理器的指令集架構(gòu)(instruction set architecture,ISA)只需要增加少數(shù)幾條或幾類指令。因此,上一代的編程模型、編譯器和編程語言只需要做少許改動(dòng)便可應(yīng)用在新一代處理器上。然而,隨著摩爾定律在增強(qiáng)處理器性能方向上的失效,定制化成為新一代硬件*重要的性能來源。這些定制化硬件很難用一套統(tǒng)一的或者類似的 ISA進(jìn)行抽象。所以,不同的新硬件都需要不同的編程模型。在新興硬件范式還沒有定型之時(shí),編程模型難以明確到底要掩藏哪些硬件機(jī)制。 如果無法解決這個(gè)“先有雞或者先有蛋”的悖論,軟件定義芯片的發(fā)展將會(huì)面臨兩種結(jié)局,即要么由軟件無法適應(yīng)而導(dǎo)致硬件發(fā)展停滯,要么軟件無法利用硬件進(jìn)行創(chuàng)新。為了打破這種僵局,需要從根本上重新思考如何設(shè)計(jì)、編程和使用軟件定義芯片。 我們相信,通過回溯現(xiàn)代通用處理器體系結(jié)構(gòu)和編程模型協(xié)同演化的歷程,對(duì)歷史經(jīng)驗(yàn)進(jìn)行反思和概念探討,可以克服常識(shí)的零散和碎片化,進(jìn)而更為連貫一致地理解軟件定義芯片編程模型的設(shè)計(jì)方法。 1.2 三條路線 正如本章引言所述,中間層是計(jì)算行業(yè)增長和生產(chǎn)力進(jìn)步的主要驅(qū)動(dòng)力。如今大多數(shù)計(jì)算機(jī)專業(yè)從業(yè)者可能都不知道現(xiàn)代微處理器的工作原理和半導(dǎo)體制程的工藝流程。但是通過維護(hù)這些層層相扣的中間層,計(jì)算機(jī)專業(yè)從業(yè)者可以在更高的抽象層次,如使用 Python,高效率地進(jìn)行編碼工作。由此才使得今天的應(yīng)用得以百花齊放。 圖1-1展示了當(dāng)代計(jì)算行業(yè)中,自頂(應(yīng)用)向下(芯片)的典型中間層。按照傳統(tǒng)的軟硬件劃分方法,自 ISA以上是軟件, ISA以下是硬件。越靠上的中間層抽象層次越高,程序的開發(fā)效率越高;越靠下的中間層復(fù)雜度越高,程序的執(zhí)行效率越高。引入新的中間層的目的,就是要掩藏其下方中間層的復(fù)雜性,從而提高開發(fā)效率。 圖1-1 計(jì)算機(jī)科學(xué)中自頂(應(yīng)用)向下(芯片)的典型中間層示意 如果說整個(gè)計(jì)算行業(yè)琳瑯滿目的應(yīng)用像是鱗次櫛比的高樓大廈,那么每一個(gè)中間層就是一層樓,編程模型就是黏合這些瓊臺(tái)玉宇的水泥。狹義的編程模型是指從應(yīng)用層到微架構(gòu)層中,層與層之間的契約。具體而言,編程模型規(guī)定了上層的哪些行為合法,以及每個(gè)行為在下一層的執(zhí)行機(jī)制。微架構(gòu)層到物理層中同樣存在類似的契約,如寄存器傳輸層到器件層之間使用網(wǎng)表文件作為契約。由于應(yīng)用開發(fā)者不會(huì)與這些契約打交道,因此它們不屬于本章討論的編程模型范疇。 但是,正如本章引言的后半句所言,過多的中間層是一個(gè)難以解決的問題。這里的一個(gè)關(guān)鍵問題在于,每一個(gè)中間層的引入都會(huì)對(duì)應(yīng)用在芯片上的性能造成損失。中間層越多,性能損失越大。因此,抽象層次極高的編程語言,如 Python、JavaScript等,主要的設(shè)計(jì)目標(biāo)都是提高開發(fā)效率和擴(kuò)大應(yīng)用范圍。為了達(dá)到這兩個(gè)目標(biāo),高抽象層次語言具有許多共同的特征,例如,通常被單線程地解釋,以及具有基于引用計(jì)數(shù)等簡單算法的垃圾回收機(jī)制等。因?yàn)檫@些特征,高抽象層次語言的執(zhí)行效率極為低下。2020年《科學(xué)》雜志刊登了一篇計(jì)算機(jī)體系結(jié)構(gòu)的論文《頂部還有足夠的空間》[2],其中的一個(gè)例子表明,使用 Python編寫的矩陣乘法程序的運(yùn)行時(shí)間是同等水平開發(fā)者使用高度優(yōu)化的 C語言編寫的程序運(yùn)行時(shí)間的100~60000倍,如表1-1所示。不僅如此,高抽象層次語言執(zhí)行時(shí)也需要更大的內(nèi)存。例如, Python中的整數(shù)占用的是24個(gè)字節(jié),而不是 C語言的4個(gè)字節(jié)(因?yàn)槊總(gè)對(duì)象都攜帶類型信息、引用計(jì)數(shù)等),而列表或字典等數(shù)據(jù)結(jié)構(gòu)的內(nèi)存開銷則是 C++開銷的4倍以上。當(dāng)然,這些高抽象層次語言的設(shè)計(jì)目標(biāo)并不是高效地利用硬件。但當(dāng)芯片的性能不再隨著摩爾定律的前進(jìn)而增長時(shí),高抽象層次語言和高性能語言之間的執(zhí)行效率差距就成為尚未充分發(fā)掘的金礦。 表1-1 不同程序執(zhí)行4096×4096矩陣乘法運(yùn)算的加速對(duì)比[2] 注:每個(gè)版本代表了一種對(duì) Python源碼的連續(xù)改進(jìn)。運(yùn)行時(shí)間是該版本的運(yùn)行時(shí)間。 GFLOPS是該版本每秒執(zhí)行64位浮點(diǎn)操作的次數(shù)(單位為十億)。絕對(duì)加速是相對(duì) Python的速度,而在展示中有附加精度位數(shù)的相對(duì)加速則是相比前一版本的加速。峰值占比是相比于計(jì)算機(jī)的835 GFLOPS的占比。 根據(jù)開發(fā)過程中開發(fā)者主要使用哪個(gè)中間層,將計(jì)算產(chǎn)業(yè)的從業(yè)者大致分為四種類型(圖1-1):硬件開發(fā)者,負(fù)責(zé)設(shè)計(jì)電路和制造芯片,主要在電路的層次設(shè)計(jì) ALU、高速緩存等模塊;架構(gòu)設(shè)計(jì)師,負(fù)責(zé)設(shè)計(jì)微架構(gòu) ISA,利用硬件開發(fā)者設(shè)計(jì)的模塊搭建計(jì)算系統(tǒng),并將計(jì)算系統(tǒng)的功能以 ISA或者 API的形式提供給上層開發(fā)者;編譯設(shè)計(jì)師,根據(jù)應(yīng)用需求和架構(gòu)特性,負(fù)責(zé)設(shè)計(jì)編程語言和編譯工具鏈,從而可以將應(yīng)用開發(fā)者編寫的應(yīng)用自動(dòng)地轉(zhuǎn)化為目標(biāo)架構(gòu)可以執(zhí)行的機(jī)器碼;應(yīng)用開發(fā)者,使用編程語言開發(fā)應(yīng)用。參照前面的定義,編程模型可以看成應(yīng)用開發(fā)者與硬件開發(fā)者進(jìn)行對(duì)話的語言,該語言由架構(gòu)設(shè)計(jì)師和編譯設(shè)計(jì)師設(shè)計(jì)。 考慮到負(fù)責(zé)掩藏復(fù)雜硬件機(jī)制從業(yè)者類型的不同,可以簡要地歸納出三種編程模型的設(shè)計(jì)路線。首先,有些硬件機(jī)制只需要交給架構(gòu)設(shè)計(jì)師考慮,一般不需要編譯器的干預(yù)。例如,當(dāng)今流行的領(lǐng)域定制加速單元,通常都是由架構(gòu)設(shè)計(jì)師提供一組簡單的 API或者專用指令,供上層的編譯器和應(yīng)用開發(fā)者直接調(diào)用。其次,有些硬件機(jī)制可以交由編譯設(shè)計(jì)師處理,而不需要讓應(yīng)用開發(fā)者了解。例如, CPU中成百上千個(gè)寄存器,都可以由編譯器自動(dòng)完成分配。*后,很多硬件機(jī)制的性能潛力,必須由應(yīng)用開發(fā)者根據(jù)應(yīng)用的需求編寫程序才能被充分開發(fā)。例如,多線程處理器的并發(fā)執(zhí)行機(jī)制需要應(yīng)用開發(fā)者使用并行編程語言編寫程序才能被充分利用。 三種設(shè)計(jì)路線給編程模型帶來截然不同的特征。編程模型的發(fā)展歷程就是這三條路線相互角力達(dá)到平衡的過程。下面將按照時(shí)間順序回溯典型硬件機(jī)制的設(shè)計(jì)動(dòng)機(jī)和編程方法。 1.3 三大障礙 Gene Amdahl因“Amdahl定律”[3]而舉世聞名。這個(gè)定律指出,并行計(jì)算性能隨著線程數(shù)的增加,邊際收益遞減。但 Amdahl于1967年同時(shí)提出了第二條原則[3],稱為“ Amdahl經(jīng)驗(yàn)法則”或“ Amdahl的另一條定律”:硬件架構(gòu)設(shè)計(jì)需要平衡算力、內(nèi)存帶寬和 I/O帶寬,理想的處理器計(jì)算性能、內(nèi)存帶寬與 I/O帶寬的比例為1∶1∶1,即每秒百萬條指令數(shù)(million instructions per second,MIPS)的處理器計(jì)算性能需要1MB的內(nèi)存和1 Mbit/s的 I/O帶寬。 圖1-2 1980~2020年 CPU計(jì)算性能、內(nèi)存帶寬、磁盤帶寬和網(wǎng)絡(luò)帶寬隨時(shí)間的變化(當(dāng)硬件性能錯(cuò)位的張力無法在之前的體系結(jié)構(gòu)-編程模型的設(shè)計(jì)中得以解決時(shí),計(jì)算系統(tǒng)遇到了“內(nèi)存墻”、“功耗墻”和“ I/O墻”[4])(見彩圖) “Amdahl經(jīng)驗(yàn)法則”在提出時(shí)曾被作為金科玉律,但時(shí)至今日已鮮為人知。其原因在于,自1985年,由于集成電路工藝的發(fā)展,計(jì)算系統(tǒng)的內(nèi)存帶寬與 I/O帶寬的比例,無法與計(jì)算性能維持在1∶1∶1的理想比例。如圖1-2所示,在不同的時(shí)間段, CPU計(jì)算性能、內(nèi)存帶寬、磁盤帶寬和網(wǎng)絡(luò)帶寬的增速各有不同。如同地殼運(yùn)動(dòng)中兩個(gè)板塊間的錯(cuò)位會(huì)形成懸崖峭壁,計(jì)算系統(tǒng)中不同模塊的性能錯(cuò)位也會(huì)形成一堵堵“高墻”。集成電路誕生60年后的今天,產(chǎn)業(yè)界和學(xué)術(shù)界公認(rèn)三堵“高墻”分別為:1995年后內(nèi)存性能和 CPU性能錯(cuò)位形成的“內(nèi)存墻”(memory wall)、2005年后 CPU性能和芯片功耗錯(cuò)位形成的“功耗墻”(power wall)和2015年后 CPU性能和 I/O帶寬錯(cuò)
- >
人文閱讀與收藏·良友文學(xué)叢書:一天的工作
- >
山海經(jīng)
- >
史學(xué)評(píng)論
- >
姑媽的寶刀
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
煙與鏡
- >
有舍有得是人生
- >
上帝之肋:男人的真實(shí)旅程