新聞中心
例如,在20世紀(jì)60年代早期,IBM 有四個(gè)不兼容的計(jì)算機(jī)系列,面向小企業(yè)、大企業(yè)、科學(xué)和實(shí)時(shí)處理的市場(chǎng)細(xì)分,每個(gè)系列都有自己的 ISA、軟件棧和 I/O 系統(tǒng)。能否創(chuàng)建一個(gè)單一的 ISA來(lái)有效地統(tǒng)一起來(lái)呢?數(shù)據(jù)路徑是處理器的“肌肉”,執(zhí)行算術(shù)運(yùn)算,相對(duì)容易拓展,最大挑戰(zhàn)是處理器的擴(kuò)展。受到軟件編程的啟發(fā),莫里斯 · 威爾克斯提出了簡(jiǎn)化控制的方法??刂破鞅恢付橐粋€(gè)二維數(shù)組,稱(chēng)之為“控制存儲(chǔ)區(qū)”,數(shù)組的每一列對(duì)應(yīng)一條控制線(xiàn),每一行對(duì)應(yīng)一條微指令,寫(xiě)微指令的過(guò)程稱(chēng)為微程序設(shè)計(jì)。控制存儲(chǔ)器是通過(guò)內(nèi)存實(shí)現(xiàn)的,這比邏輯門(mén)的成本要低得多。在微程序設(shè)計(jì)的幫助下,IBM 新的 ISA 徹底改變計(jì)算機(jī)行業(yè),并主導(dǎo)了它的市場(chǎng),以至于幾十年前的大型機(jī)家族現(xiàn)在仍然每年帶來(lái)百億美元以上的收入。

這是架構(gòu)創(chuàng)新的成功,也往往需要大量的工程投資。
從集成電路到8086
當(dāng)計(jì)算機(jī)開(kāi)始使用集成電路時(shí),摩爾定律意味著控制存儲(chǔ)可能會(huì)變得更大,反過(guò)來(lái)允許更復(fù)雜的 ISA。微處理器在20世紀(jì)70年代仍然處于8位時(shí)代(如英特爾8080) ,主要用匯編語(yǔ)言編程,競(jìng)爭(zhēng)對(duì)手通過(guò)匯編語(yǔ)言的例子來(lái)展示他們的優(yōu)勢(shì)。
英特爾的8800 ISA 是一個(gè)雄心勃勃的計(jì)算機(jī)架構(gòu)項(xiàng)目,它具有基于32位能力的尋址、面向?qū)ο蟮捏w系結(jié)構(gòu)、可變位長(zhǎng)度的指令,以及用當(dāng)時(shí)新的編程語(yǔ)言 Ada 編寫(xiě)的操作系統(tǒng)。然而,英特爾在1979年緊急更換16位微處理器,新團(tuán)隊(duì)用52周的時(shí)間來(lái)開(kāi)發(fā)新的“8086”ISA,設(shè)計(jì)并制造芯片。由于時(shí)間緊迫,設(shè)計(jì) ISA 只有10個(gè)人/周,主要是將8080的8位寄存器和指令集擴(kuò)展到16位,這個(gè)團(tuán)隊(duì)按計(jì)劃完成了8086。IBM 正在開(kāi)發(fā)一種個(gè)人電腦來(lái)與蘋(píng)果 II 競(jìng)爭(zhēng),并且需要一個(gè)16位微處理器。IBM 感興趣的是摩托羅拉68000,但它落后于 IBM 的開(kāi)發(fā)計(jì)劃,轉(zhuǎn)而使用了8086。后來(lái)IBM PC大賣(mài),為英特爾 的8086 ISA帶來(lái)了一個(gè)非常光明的未來(lái)。
最初的8800項(xiàng)目在1986年停止使用,那一年英特爾在80386中將16位8086 ISA 擴(kuò)展到32位,其寄存器也從16位擴(kuò)展到32位,x86的 ISA 成功了,因?yàn)槭袌?chǎng)是很少有耐心的。
從復(fù)雜指令集到精簡(jiǎn)指令集
20世紀(jì)80年代早期,業(yè)界對(duì)大型控制存儲(chǔ)器的復(fù)雜指令集計(jì)算機(jī)(CISC)進(jìn)行了多項(xiàng)研究。隨著 Unix 操作系統(tǒng)使用高級(jí)語(yǔ)言編寫(xiě),關(guān)鍵問(wèn)題就變成了: “編譯器會(huì)生成什么指令?”,硬件/軟件界面的顯著提升為架構(gòu)創(chuàng)新創(chuàng)造了機(jī)會(huì)。
如果編譯器只使用簡(jiǎn)單的寄存器操作和加載/存儲(chǔ)數(shù)據(jù)傳輸,避免了更復(fù)雜的指令, 使用簡(jiǎn)單指令子集的程序運(yùn)行速度要快三倍。這樣的實(shí)驗(yàn)和向高級(jí)語(yǔ)言的轉(zhuǎn)變導(dǎo)致了從 CISC 轉(zhuǎn)向 RISC 的機(jī)會(huì)。首先,簡(jiǎn)化了 RISC 指令,因此不需要微代碼解釋器。RISC 指令通常像微指令一樣簡(jiǎn)單,可以直接由硬件執(zhí)行。其次,原來(lái)用于 CISC ISA 微碼解釋器的存儲(chǔ)器被重新用作 RISC 指令的緩存。第三,基于圖形著色方案的寄存器分配器使編譯器更容易有效地使用寄存器。最后,可以在單個(gè)芯片中包括一個(gè)完整的32位數(shù)據(jù)通路,以及指令和數(shù)據(jù)緩存。在類(lèi)似的技術(shù)中,CISC 每個(gè)指令周期執(zhí)行了5到6個(gè)時(shí)鐘,而 RISC 的速度大約提高了4倍。
接下來(lái)的 ISA 創(chuàng)新是顯式并行指令集,在每條指令中捆綁多個(gè)獨(dú)立的操作。如果一條指令可以指定,編譯器技術(shù)可以有效地將操作分配到多個(gè)指令槽中,硬件就可以變得更簡(jiǎn)單。與 RISC 方法一樣,將工作從硬件轉(zhuǎn)移到了編譯器。但基于這一思想的64位處理器,雖然在高度結(jié)構(gòu)化的浮點(diǎn)程序中運(yùn)行良好,但是對(duì)于分支較少的整數(shù)程序來(lái)說(shuō),它很難實(shí)現(xiàn)高性能。市場(chǎng)最終再次失去了耐心,導(dǎo)致出現(xiàn)了 x86的64位版本。
從PC時(shí)代到后PC時(shí)代
AMD 和英特爾使用了眾多資源和卓越的半導(dǎo)體技術(shù)來(lái)縮小 x86和 RISC 之間的性能差距。指令解碼器再次受到簡(jiǎn)單指令性能優(yōu)勢(shì)的啟發(fā),在運(yùn)行過(guò)程中將復(fù)雜的 x86指令翻譯成類(lèi)似于 RISC的內(nèi)部微指令,然后流水線(xiàn)執(zhí)行 RISC 微指令。任何在 RISC上用于執(zhí)行/分離指令和數(shù)據(jù)緩存、芯片上的二級(jí)緩存、深層管道以及同時(shí)獲取并執(zhí)行多條指令的想法都可以并入 x86,在2011年前后,PC時(shí)代差不多到了巔峰時(shí)期。
PC軟件成為了一個(gè)巨大的市場(chǎng),盡管 Unix 市場(chǎng)的軟件供應(yīng)商會(huì)針對(duì)不同的商用 ISA 提供不同的軟件版本,但 PC 市場(chǎng)只有一個(gè) ISA,所以軟件開(kāi)發(fā)商提供的軟件只能與 x86 ISA 二進(jìn)制兼容。龐大的軟件規(guī)模,相似的性能和更低的價(jià)格使得 x86主導(dǎo)了臺(tái)式計(jì)算機(jī)和小型服務(wù)器市場(chǎng)。
2007年,蘋(píng)果推出了 iPhone,開(kāi)啟了后PC時(shí)代。智能手機(jī)公司沒(méi)有購(gòu)買(mǎi)微處理器,而是使用其他公司的設(shè)計(jì),主要是 ARM 的 RISC 處理器,在芯片上建立自己的系統(tǒng)(SoC)。移動(dòng)設(shè)備設(shè)計(jì)人員認(rèn)為芯片大小和能源效率與性能同樣重要,這使得 CISC 的 ISA 處于不利地位。此外,物聯(lián)網(wǎng)的到來(lái)極大地增加了處理器的數(shù)量以及在芯片尺寸、功耗、成本和性能方面所需的權(quán)衡。這種趨勢(shì)增加了設(shè)計(jì)時(shí)間和成本,進(jìn)一步使 CISC 處理器處于不利地位。在如今的后 PC 時(shí)代,x86的出貨量自2011年以來(lái)幾乎每年下降10% ,而帶有 RISC 處理器的芯片則在飆升。如今,99% 的32位和64位處理器是 RISC。
回顧之后,市場(chǎng)解決了 RISC/CISC 的爭(zhēng)論, CISC 贏得了 PC 時(shí)代的后期階段,但 RISC 贏得了后 PC 時(shí)代。
當(dāng)從單核時(shí)代到多核時(shí)代
“如果一個(gè)問(wèn)題沒(méi)有解決方案,它可能不是一個(gè)問(wèn)題,而是一個(gè)不需要解決的事實(shí),而是需要隨著時(shí)間的推移加以解決?!?/p>
自20世紀(jì)70年代末以來(lái),選擇的技術(shù)是基于金屬氧化物半導(dǎo)體(MOS)的集成電路,首先是nMOS ,然后是CMOS。MOS 技術(shù)的驚人改進(jìn)速度成為驅(qū)動(dòng)因素,使得有更積極的方法來(lái)實(shí)現(xiàn)給定 ISA 的性能。由于晶體管密度隨著速度線(xiàn)性增長(zhǎng)而二次增長(zhǎng),人們使用了更多的晶體管來(lái)提高性能。雖然摩爾定律已經(jīng)持續(xù)了幾十年 ,但在2000年左右開(kāi)始放緩,到2018年,摩爾定律的預(yù)測(cè)與當(dāng)前能力之間的差距大約為15倍,隨著 CMOS 技術(shù)接近基本極限,差距將繼續(xù)擴(kuò)大。
在1986年到2002年之間,開(kāi)發(fā)平行指令的層級(jí)是獲得性能的主要結(jié)構(gòu)方法,隨著晶體管速度的提高,導(dǎo)致每年性能提高約50% 。為了保持流水線(xiàn)滿(mǎn)負(fù)荷運(yùn)行,預(yù)測(cè)分支投機(jī)性地將代碼放入流水線(xiàn)以便執(zhí)行。這種預(yù)測(cè)的使用既是性能的來(lái)源,也是效率低下的原因。當(dāng)分支預(yù)測(cè)對(duì)的時(shí)候,可以提高性能,只需要很少的額外能量,甚至可以節(jié)省能量。但是當(dāng)它“錯(cuò)誤預(yù)測(cè)”分支時(shí),處理器必須丟棄錯(cuò)誤推測(cè)的指令,這時(shí)的計(jì)算工作和能量都被浪費(fèi)了。處理器的內(nèi)部狀態(tài)還必須恢復(fù)到錯(cuò)誤預(yù)測(cè)分支之前的狀態(tài),從而消耗額外的時(shí)間和能量。實(shí)際上,沒(méi)有什么程序能夠有能夠如此精確預(yù)測(cè)的分支。這導(dǎo)致了多核時(shí)代的誕生。
多核技術(shù)將確定并行性的責(zé)任轉(zhuǎn)移到了程序員和操作系統(tǒng)身上,無(wú)法解決能源效率的挑戰(zhàn)。無(wú)論是否有效地提高了計(jì)算效率,每個(gè)活躍的內(nèi)核都在燃燒能量,而且并行計(jì)算的加速受限于順序運(yùn)算的部分。真正的程序有更復(fù)雜的結(jié)構(gòu),允許在任何時(shí)刻使用不同數(shù)量的處理器。盡管如此,需要周期性地進(jìn)行通信和同步,這意味著大多數(shù)應(yīng)用程序都只能有效使用一小部分處理器。此外,多核處理器受到熱耗散功率(TDP)或封裝和冷卻系統(tǒng)的限制。TDP 的限制直接導(dǎo)致了處理器將放慢時(shí)鐘頻率并關(guān)閉空閑內(nèi)核以防止過(guò)熱。
從通用處理到特定領(lǐng)域
那些掩飾成無(wú)法解決的問(wèn)題是擺在我們面前的驚人機(jī)遇。
通用處理器固有的低效率,使得人們不可能在通用處理器中保持顯著的性能改進(jìn)。鑒于提高性能以支持新的軟件功能的重要性, 還有哪些方法可能有前途呢?
一種更加以硬件為中心的方法是設(shè)計(jì)針對(duì)特定問(wèn)題領(lǐng)域的計(jì)算機(jī)體系結(jié)構(gòu),并為該領(lǐng)域提供顯著的性能提升,因此被稱(chēng)為“特定領(lǐng)域的體系結(jié)構(gòu)”(DSA),這是一類(lèi)為特定領(lǐng)域可編程的處理器通常是圖靈完整的,但是針對(duì)特定類(lèi)別的應(yīng)用進(jìn)行了定制。它們不同于特定于應(yīng)用程序的集成電路(ASIC) ,后者通常用于一個(gè)代碼很少更改的單一功能。DSA通常稱(chēng)為加速器,數(shù)據(jù)應(yīng)用系統(tǒng)可以取得更好的性能,包括圖形處理單元(GPU)、用于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)處理器和用于軟件定義網(wǎng)絡(luò)(SDN)的處理器。
DSA 為特定領(lǐng)域開(kāi)發(fā)了一種更有效的并行形式,可以更有效地利用內(nèi)存,而內(nèi)存訪(fǎng)問(wèn)比算術(shù)計(jì)算成本高得多。通用 CPU 通常支持32位和64位整數(shù)和浮點(diǎn)數(shù)數(shù)據(jù)。對(duì)于機(jī)器學(xué)習(xí)和圖形學(xué)中的許多應(yīng)用來(lái)說(shuō),這比需要的精確度更高。例如,在DNN中,推理通常使用4位、8位或16位整數(shù),從而提高了數(shù)據(jù)和計(jì)算的吞吐量。同樣,對(duì)于 DNN 訓(xùn)練應(yīng)用程序,F(xiàn)P 是有用的,但是32位可能就足夠了,16位是通常可以工作的。
DSA需要針對(duì)體系結(jié)構(gòu)的高級(jí)操作,但是試圖從通用語(yǔ)言(如 Python、 Java、 c 等)中提取這種結(jié)構(gòu)和信息是非常困難的。領(lǐng)域特定語(yǔ)言(DSL)支持這個(gè)過(guò)程,并使高效地編寫(xiě) DSA 成為可能。例如,DSL 可以使向量、稠密矩陣和稀疏矩陣的操作顯式化,從而使 DSL 編譯器能夠有效地將操作映射到處理器。DSL的例子包括 Matlab、 TensorFlow、 P4(一種用于編寫(xiě) SDN 程序的語(yǔ)言) ,以及 Halide等。
使用 DSL 時(shí)的挑戰(zhàn)是如何保持足夠的獨(dú)立性,使用 DSL 編寫(xiě)的軟件可以移植到不同的架構(gòu),同時(shí)實(shí)現(xiàn)高效地將軟件映射到底層 DSA。例如,將 Tensorflow 轉(zhuǎn)換為使用 Nvidia GPU 或TPU的異構(gòu)處理器。對(duì)于語(yǔ)言設(shè)計(jì)者、編譯器工作者和 DSA 架構(gòu)師來(lái)說(shuō),在各個(gè)ISA之間平衡可移植性和效率是一個(gè)較大的挑戰(zhàn)。
上圖所示,TPU 與通用處理器完全不同。主要的計(jì)算單元是一個(gè)矩陣單元,多種技術(shù)的結(jié)合是多重累加計(jì)算大約是通用單核 CPU 的100倍。與緩存不同,TPU 使用24兆字節(jié)的本地內(nèi)存,大約是2015年通用 CPU 的兩倍功耗。使用基于 Google 六個(gè)常見(jiàn)推理問(wèn)題的加權(quán)算術(shù)平均,TPU 比通用 CPU 快29倍。TPU 對(duì)于這種工作負(fù)載的能量效率比通用CPU 高出80倍以上。
從開(kāi)放式體系結(jié)構(gòu)到敏捷硬件開(kāi)發(fā)
受到開(kāi)源軟件成功的啟發(fā),為了創(chuàng)建一個(gè)“ Linux for 處理器”,需要行業(yè)標(biāo)準(zhǔn)的開(kāi)放式 ISA,這樣社區(qū)就可以創(chuàng)建開(kāi)源核心。如果許多組織使用相同的 ISA 設(shè)計(jì)處理器,更大的競(jìng)爭(zhēng)可能驅(qū)動(dòng)更快的創(chuàng)新。
第一個(gè)例子是 RISC-V ,RISC-V 的社區(qū)在 RISC-V 基金會(huì)的管理下維護(hù)著這個(gè)架構(gòu) http://riscv.org/。開(kāi)放式的 ISA 演變發(fā)生在公開(kāi)的場(chǎng)合,硬件和軟件專(zhuān)家在最終決定之前進(jìn)行合作。RISC-V 是一個(gè)模塊化的指令集,一小部分指令運(yùn)行在開(kāi)源軟件棧上,然后是可選的標(biāo)準(zhǔn)擴(kuò)展,可以根據(jù)需要包含或省略這些擴(kuò)展,基線(xiàn)版本包括32位和64位的版本。RISC-V 只能通過(guò)可選的擴(kuò)展來(lái)增長(zhǎng),;即使不采用新的擴(kuò)展,軟件棧仍然運(yùn)行良好。RISC-V 的顯著特點(diǎn)是 ISA 的簡(jiǎn)單性,與 ARM 公司開(kāi)發(fā)的 armv8相比,RISC-V 只有很少的指令,以及較少的指令格式。RISC-V的指令格式只有6種,而 armv8至少有14種。由于 RISC-V 的目標(biāo)范圍從數(shù)據(jù)中心芯片到物聯(lián)網(wǎng)設(shè)備,設(shè)計(jì)驗(yàn)證可以成為開(kāi)發(fā)成本的一個(gè)重要部分。簡(jiǎn)單性降低了設(shè)計(jì)處理器和驗(yàn)證硬件正確性的工作量。RISC-V 是一個(gè)干凈的設(shè)計(jì),避免了微架構(gòu)或技術(shù)相關(guān)特性,這些特性已經(jīng)被編譯器技術(shù)的進(jìn)步所取代。RISC-V還通過(guò)為自定義加速器保留大量操作碼空間來(lái)支持 DSA。
除了RISC-V,Nvidia 還在2017年宣布推出了一個(gè)免費(fèi)開(kāi)放的架構(gòu),名為NVDLA ,這是一個(gè)可擴(kuò)展的、可配置的 DSA,用于機(jī)器學(xué)習(xí)推理。配置選項(xiàng)包括數(shù)據(jù)類(lèi)型(int8、 int16或 fp16)和二維乘法矩陣的大小,ISA、軟件棧和實(shí)現(xiàn)都是開(kāi)放的。
再次受到軟件開(kāi)發(fā)流程的啟發(fā),ECAD工具提高了抽象層次,支持敏捷開(kāi)發(fā),這種更高層次的抽象增加了設(shè)計(jì)之間的重用。
上圖圖概述了敏捷開(kāi)發(fā)方法如何通過(guò)在適當(dāng)?shù)膶哟紊细淖冊(cè)蛠?lái)工作,最內(nèi)層是軟件模擬器,如果一個(gè)模擬器能夠滿(mǎn)足一個(gè)迭代,那么軟件模擬器是進(jìn)行改變最容易和最快捷的地方。下一個(gè)級(jí)別是FPGA,它可以比一個(gè)詳細(xì)的軟件模擬器快幾百倍。FPGA可以運(yùn)行操作系統(tǒng)和類(lèi)似于SPEC的完整基準(zhǔn),允許對(duì)原型進(jìn)行更精確的評(píng)估。AWS在云中提供了FPGA服務(wù),因此可以直接使用而無(wú)需首先購(gòu)買(mǎi)硬件和建立實(shí)驗(yàn)室。下一個(gè)外層使用 ECAD 工具來(lái)生成芯片的布局。即使在工具運(yùn)行之后,在準(zhǔn)備生產(chǎn)新的處理器之前,也需要一些手動(dòng)步驟來(lái)精煉結(jié)果。如果目標(biāo)是制造一個(gè)大型芯片,那么最外層的設(shè)計(jì)是昂貴的。
小結(jié)
軟件創(chuàng)新可以給計(jì)算機(jī)體系架構(gòu)的創(chuàng)新帶來(lái)啟發(fā),提高硬件/軟件接口的抽象層為創(chuàng)新提供了機(jī)會(huì),市場(chǎng)最終決定了計(jì)算機(jī)體系結(jié)構(gòu)的爭(zhēng)論。摩爾定律的終結(jié)不是必須要解決的問(wèn)題,而是被認(rèn)識(shí)到的事實(shí),特定于領(lǐng)域的語(yǔ)言和體系結(jié)構(gòu)使人們從專(zhuān)有指令集的鏈條中解放出來(lái)。在開(kāi)源生態(tài)系統(tǒng)的幫助下,靈活開(kāi)發(fā)的芯片將展示先進(jìn)的技術(shù),從而加速商業(yè)應(yīng)用,處理器的 ISA 很可能是 RISC-V,流程也可能演進(jìn)到敏捷硬件開(kāi)發(fā)中來(lái)。
當(dāng)前文章:計(jì)算機(jī)體系結(jié)構(gòu)的一知半解
分享路徑:http://www.dlmjj.cn/article/dpioigh.html


咨詢(xún)
建站咨詢(xún)
