计算机组成与架构综述学习报告
計算機(jī)組成與架構(gòu)綜述學(xué)習(xí)報告
計算機(jī)系統(tǒng)的指令集ISA的演進(jìn)過程是怎樣的?
第一階段關(guān)鍵詞:集成電路、CISC、432、8086、IBM PC
集成電路在摩爾定律的預(yù)言下快速發(fā)展,使得CPU的控制單元的存儲空間變大,從而能實現(xiàn)更復(fù)雜的指令集(CISC)。戈登·摩爾(因特爾的創(chuàng)始人之一)啟動了iAPX-432項目,并在上面投入了大量的人力物力,對其寄予厚望,希望該指令集延續(xù)英特爾的一生。但其存在嚴(yán)重的性能問題,最終在1986年停止使用。與此同時,由于該項目未能在指定時間按時交付,Intel給了新團(tuán)隊52周的時間來開發(fā)新的ISA用于交付,于1978年推出大名鼎鼎的"8086"。8086在三年后為IBM所選用,之后Intel與微軟公司結(jié)成了所謂的Windows-Intel(Wintel)商業(yè)聯(lián)盟,壟斷了個人計算機(jī)軟硬件平臺至今幾十年獲得了豐厚的利潤,x86架構(gòu)也因此幾乎成為了個人計算機(jī)的標(biāo)準(zhǔn)處理器架構(gòu)。
第二階段關(guān)鍵詞:從CISC到RISC
CISC不僅包含了處理器常用的指令,還包含了許多不常用的特殊指令。其指令數(shù)目比較多,所以稱為復(fù)雜指令集。RISC僅包含處理器常用的指令,而對于不常用的操作,則通過執(zhí)行多條常用指令的方式來達(dá)到同樣的效果。由于其指令數(shù)目比較精簡,所以稱為精簡指令集。CPU誕生的早期,CISC曾是主流,因為它可以使用較少的指令完成較多的操作。但是隨著指令集的發(fā)展,越來越多的特殊指令被添加到CISC指令集中,CISC的很多缺點開始暴露出來,如:
- 典型程序的運算過程中所使用到的80%指令,只占所有指令類型的20%,即CISC指令集定義的指令,只有20%被經(jīng)常用到,而有80%則很少被用到。
- 那些很少被用到的特殊指令尤其讓CPU設(shè)計變得極為復(fù)雜,大大增加了硬件設(shè)計的時間成本與面積開銷。
在使用RISC后專家發(fā)現(xiàn),程序運行速度顯著快于基于CISC的CPU,由于上述原因,自RISC誕生之后,基本上所有現(xiàn)代指令集架構(gòu)都選擇使用RISC架構(gòu)。
第三階段關(guān)鍵詞:VLIW EPIC Itanium
VLIW:(Very Long Instruction Word)超長指令字是一種非常長的指令組合,它把許多條指令連在一起,增加了運算的速度。超長指令字(VLIW)是指令級并行,超線程是線程級并行,而多內(nèi)核則是芯片級并行。這三種方式都是提高并行計算性能的有效途徑。其中,VLIW(超長指令字)體系結(jié)構(gòu)是美國Multiflow和Cydrome公司于20世紀(jì)80年代設(shè)計的體系結(jié)構(gòu),EPIC體系結(jié)構(gòu)就是從VLIW中衍生出來的,與RISC的優(yōu)化思路一樣,VLIW和EPIC都是將工作從硬件轉(zhuǎn)移到了編譯器上。其中第一個EPIC處理器被命名為Itanium,但現(xiàn)實是事與愿違的,Itanium對編譯器的要求太高了,實現(xiàn)不了,項目夭折了。最終還是64bit的X86而非Itanium接替了32bit的X86。
VLIW在CPU領(lǐng)域算是失敗的,但卻在DSP領(lǐng)域獲得了成功。根本原因是DSP特殊的應(yīng)用場景正好發(fā)揮了VLIW結(jié)構(gòu)的優(yōu)勢,避開了它的短處。由于數(shù)字信號處理領(lǐng)域的算法比較單一穩(wěn)定,同時是運算密集型程序,并不需要通用場景下的實時控制。并且其程序運行有嚴(yán)格的時間要求,cache這種不可控時間的結(jié)構(gòu)就不適合了,通常采用固定周期的TCM作為緩存,這樣內(nèi)存訪問時間就固定了。有了上述的特征,靜態(tài)編譯在通用場合下面臨的那些困難就不存在了,而其更高效的并行運算能力和簡化的硬件結(jié)構(gòu)被完全發(fā)揮出來。
第四階段關(guān)鍵詞:PC與后PC時代RISC與CISC的較量
雖然自RISC提出以來,RISC已經(jīng)取代CISC成為現(xiàn)代指令集架構(gòu)的主流,但是,由于Intel公司的巨大成功與維護(hù)軟件的向后兼容性,x86作為一種CISC的架構(gòu)被一直保留下來。事實上,Intel公司通過內(nèi)部“微碼化”的方法克服掉了CISC架構(gòu)的部分缺點,加上Intel高超的CPU設(shè)計水平與工藝制造水平,使得x86處理器在PC時代一直保持著旺盛的戰(zhàn)斗力,不斷刷新個人計算機(jī)處理器芯片性能的極限。所謂“微碼化”是指將復(fù)雜的CISC指令先用硬件解碼器翻譯成對應(yīng)的內(nèi)部簡單指令(微碼)序列,然后送給處理器流水執(zhí)行的方法。但是額外的硬件解碼器同樣也為帶來額外的復(fù)雜度與面積開銷,這是x86架構(gòu)作為一種CISC架構(gòu)不得不付出的代價。
2007年,蘋果借助iPhone推動了后PC時代的到來。智能手機(jī)公司使用其他公司的設(shè)計構(gòu)建自己的系統(tǒng)而非直接購買微處理器,移動設(shè)備設(shè)計人員重視芯片面積、能效與性能,這對CISC指令集架構(gòu)不利。自2011年的峰值以來,x86的出貨量每年下降了近10%,而帶有RISC處理器的芯片的數(shù)量飆升至200億。如今,99%的32位和64位的處理器都是RISC指令集架構(gòu)。CISC贏得了PC時代的后期階段,而RISC贏得了后PC時代。
當(dāng)前以馮諾依曼為基礎(chǔ)的計算機(jī)體系結(jié)構(gòu)面臨著哪些挑戰(zhàn)?
遇到的挑戰(zhàn)主要為摩爾定律和登納德縮放定律的失效。摩爾定律已經(jīng)持續(xù)了幾十年,但它在2000年左右開始放緩,到了 2018 年,實際結(jié)果與摩爾定律的預(yù)測相差了15倍,之后這一差距還將持續(xù)增大,因為CMOS工藝已經(jīng)接近極限。
與摩爾定律相伴的是由羅伯特·登納德預(yù)測的登納德縮放定律;Robert Dennard 在 1974 年提出,晶體管不斷變小,但芯片的功率密度不變。隨著晶體管密度的增加,每個晶體管的能耗將降低,因此硅芯片上每平方毫米上的能耗幾乎保持恒定。登納德縮放定律從 2007 年開始大幅放緩,大概在2012 年接近失效。1986年至2002年間,使用指令級并行(ILP)是提高架構(gòu)性能的主要方法,為了充分利用流水線,需要預(yù)測分支,并根據(jù)推測將代碼放入流水線以便執(zhí)行。如果分支預(yù)測達(dá)到完美推測就能提高ILP性能,如果分支預(yù)測出現(xiàn)失誤,計算所耗能量就會被浪費。在測試后大家發(fā)現(xiàn)分支預(yù)測導(dǎo)致能量浪費情況更加嚴(yán)重,于是架構(gòu)師需要一種不同的方法來實現(xiàn)性能改進(jìn),于是迎來了多核時代。
多核并未解決節(jié)能的挑戰(zhàn),而這種挑戰(zhàn)因登納德縮放定律終結(jié)更加嚴(yán)峻。每個活躍的核都會消耗能量,無論其對計算是否有有效貢獻(xiàn)。應(yīng)用多核處理的一個主要的障礙為在并行計算中用多處理器的應(yīng)用加速受限于程序所需的串行時間百分比。如果程序所需的串行時間過長,那么被浪費的能量也是巨大的。此外多核處理器還受限于熱耗散功率(TDP),即封裝和冷卻系統(tǒng)在最大負(fù)載時的驅(qū)散熱量的最大限度。
登納德縮放定律的結(jié)束,摩爾定律放緩以及阿姆達(dá)爾定律正當(dāng)其時,意味著低效性將每年的性能改進(jìn)限制在幾個百分點。想要獲得高的性能改進(jìn)就需要新的架構(gòu)方法,新方法應(yīng)當(dāng)能更加高效地利用集成電路。
目前處理器面臨的安全性有哪些方面的問題?
推測分支功能給許多處理器帶來了未知但明顯的安全缺陷,Meltdown和Spectre安全漏洞利用體系結(jié)構(gòu)中的漏洞與硬件的缺陷導(dǎo)致受保護(hù)信息泄露,這兩種漏洞都使用了旁路攻擊。2018 年,研究者展示了在攻擊者不將代碼加載到目標(biāo)處理器的情況下,如何利用 Spectre 變體導(dǎo)致網(wǎng)絡(luò)信息泄露。盡管這次名為NetSpectre的攻擊泄露信息速度較慢,但它會使同一局域網(wǎng)中的所有機(jī)器都受到攻擊,這會產(chǎn)生許多新的漏洞。
處理器架構(gòu)師如何定義什么是正確的ISA是一個源頭的難題,因為標(biāo)準(zhǔn)中并未說明執(zhí)行指令序列的性能影響。架構(gòu)師需要重新思考ISA正確實現(xiàn)的定義,以避免類似的安全漏洞。
計算機(jī)體系結(jié)構(gòu)未來的發(fā)展趨勢
為通用計算設(shè)計的微處理器效率注定較低,再加上登納德縮放定律和摩爾定律走向終結(jié),所以處理器架構(gòu)師和設(shè)計師們很有可能再也無法讓通用處理器的性能以之前那樣的速度繼續(xù)大幅提高。是否有其他有潛力的方案呢?
執(zhí)行性能優(yōu)化:現(xiàn)代軟件的編寫中大量使用了高級語言,但這些語言的編譯和執(zhí)行是非常低效的。Leiserson 等人用矩陣乘法的小例子說明了這種低效性,一個運行在英特爾多核處理器上的、經(jīng)過高度優(yōu)化過的程序可以比最初的 Python 版本快超過6萬倍。所以我們可以考慮其中的一些性能差異是否可以用更好的編譯器技術(shù)來補(bǔ)上,同時也搭配一些計算架構(gòu)的改進(jìn)。雖然高效的語言翻譯確實有很大困難,但潛在的性能收益也是巨大的。
設(shè)計專用硬件:該方案更加以硬件為中心,為某個特定的領(lǐng)域問題設(shè)計專用的的計算架構(gòu),從而為這些問題帶來顯著的性能提升。DSA[domain-specific architectures]描述的就是這種為特定的領(lǐng)域問題而專門定制設(shè)計的處理器,它們可編程,但只適用于特定的某一類問題。DSA可以達(dá)到高得多的性能表現(xiàn)和高的多的能量效率是由于以下四個原因:
領(lǐng)域?qū)S谜Z言:DSA 需要把編程語言中的高級操作對應(yīng)到硬件架構(gòu)上去,但若想從Python、C這樣的為通用計算設(shè)計的語言提取出這樣的結(jié)構(gòu)和信息實在有點難,領(lǐng)域?qū)S谜Z言(DSL)讓這個過程變得可以實現(xiàn),而且也讓我們有機(jī)會高效地為 DSA 編程。
使用DSL的時候也有挑戰(zhàn),就是如何讓硬件架構(gòu)設(shè)計保持足夠的獨立性,這樣在一種DSL編寫的軟件可以遷移到不同的硬件架構(gòu),同時把軟件映射到下方的DSA的時候還能保持足夠高的效率,這是一個有意思的科研挑戰(zhàn)。
總結(jié)
以上是生活随笔為你收集整理的计算机组成与架构综述学习报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己动手写CPU(3)逻辑、移位操作与空
- 下一篇: 自己动手写CPU(4)移动操作指令的实现