“These are eight great ideas that computer architects have invented in the last 60 years of computer design. They are so powerful they have lasted long after the first computer that used them, with newer architects demonstrating their admiration by imitating their predecessors.”
---大衛(wèi) A.帕特森博士
大衛(wèi) A.帕特森博士,自 1977 年加入該學(xué)院以來, David A. Patterson博士一直在加州大學(xué)伯克利分校教授計算機體系結(jié)構(gòu),并擔(dān)任 Pardee 計算機科學(xué)主席闲延。他的教學(xué)曾獲得加州大學(xué)杰出教學(xué)獎、ACM 卡爾斯特倫獎膳音、IEEE穆里根教育獎?wù)潞捅究平虒W(xué)獎嫉晶,世界上最大的技術(shù)進步專業(yè)協(xié)會叶洞。Patterson 博士因?qū)?RISC 的貢獻而獲得 IEEE 技術(shù)成就獎和 ACM Eckert-Mauchly 獎余掖,并因?qū)?RAID 的貢獻而分享了 IEEE 約翰遜信息存儲獎寸爆。他還與合著者 John Hennessy 博士分享了 IEEE 約翰·馮·諾依曼獎?wù)潞?C&C 獎。
1盐欺、面向摩爾定律設(shè)計
計算機設(shè)計師的一個常數(shù)是快速變化赁豆,這在很大程度上是由摩爾定律驅(qū)動的。它指出冗美,集成電路資源每 18-24 個月翻一番魔种。摩爾定律源于 1965 年英特爾創(chuàng)始人之一戈登·摩爾 (Gordon Moore) 對 IC 容量增長的預(yù)測。由于計算機設(shè)計可能需要數(shù)年時間粉洼,因此在項目開始和結(jié)束之間节预,每個芯片的可用資源很容易翻倍或四倍。就像飛碟射手一樣属韧,計算機架構(gòu)師必須預(yù)測設(shè)計完成時技術(shù)的位置心铃,而不是設(shè)計開始的位置。我們使用“向上和向右”摩爾定律圖來表示快速變化的設(shè)計挫剑。
半導(dǎo)體行業(yè)大致按照摩爾定律發(fā)展了半個多世紀,對二十世紀后半葉的世界經(jīng)濟增長做出了貢獻柱衔,并驅(qū)動了一系列科技創(chuàng)新樊破、社會改革、生產(chǎn)效率的提高和經(jīng)濟增長唆铐。個人電腦哲戚、因特網(wǎng)、智能手機等技術(shù)改善和創(chuàng)新都離不開摩爾定律的延續(xù)艾岂。如今單個處理器已經(jīng)很難適應(yīng)摩爾定律了(主要包括隨著更多晶體管被裝入芯片當(dāng)中顺少,相應(yīng)會出現(xiàn)電子能量外泄和熱量散發(fā)的現(xiàn)象),但云計算興起,算力網(wǎng)絡(luò)起飛脆炎,在某種程度延續(xù)了摩爾定律梅猿。
2、使用抽象簡化設(shè)計
計算機架構(gòu)師和程序員都必須發(fā)明技術(shù)來提高自己的生產(chǎn)力秒裕,否則設(shè)計時間會隨著摩爾定律的資源增長而顯著延長袱蚓。硬件和軟件的主要生產(chǎn)力技術(shù)是使用抽象來表示不同表示級別的設(shè)計。隱藏較低級別的細節(jié)以在較高級別提供更簡單的模型几蜻。我們將使用抽象繪畫圖標來代表第二個偉大的想法喇潘。
抽象思維一直推動著計算機技術(shù)不斷向前發(fā)展,科學(xué)技術(shù)本身就是現(xiàn)實世界的抽象和演繹:
電路信號->01二進制->指令匯編->高級編程->模塊設(shè)計->框架設(shè)計->單機系統(tǒng)->分布式系統(tǒng)-->云計算梭稚,計算機領(lǐng)域有句名言:“計算機科學(xué)領(lǐng)域的任何問題都可以通過增加一個間接的中間層來解決”颖低。
3、快速做普通案例
使常見情況變得更快往往會比優(yōu)化罕見情況更有效地提高性能弧烤。具有諷刺意味的是忱屑,常見情況通常比罕見情況更簡單,因此通常更容易增強扼褪。這種常識性建議意味著您知道常見情況是什么想幻,這只有通過仔細的實驗和測量才能實現(xiàn)。我們使用跑車作為快速制作普通案例的圖標话浇,因為最常見的旅行只有一兩個乘客脏毯,而且制作快速轎車肯定比快速小型貨車更容易。
計算機大多數(shù)時間都是運作在常見情況下幔崖,符合2/8定律食店,所以首先我們針對常見情況進行優(yōu)化改進,加速大概率事件赏寇,效果更快吉嫩。
4、通過并行提高性能
自從計算出現(xiàn)以來嗅定,計算機架構(gòu)師就提供了通過并行執(zhí)行操作來獲得更高性能的設(shè)計自娩。我們將在本書中看到許多并行性的例子。我們使用飛機的多個噴氣發(fā)動機作為并行性能的標志渠退。
并行設(shè)計思想一直是提升性能的核心思想忙迁,多進程,多線程碎乃,多核-SMP姊扔,SIMD,NUMA梅誓,MIPS恰梢,向量機佛南,GPU等等。
5嵌言、通過流水線提高性能
一種特殊的并行模式在計算機體系結(jié)構(gòu)中如此普遍嗅回,以至于它有自己的名字:流水線。例如呀页,在消防車出現(xiàn)之前妈拌,“水桶大隊”會對火災(zāi)做出反應(yīng),許多牛仔電影都會以這種方式來應(yīng)對惡棍的卑鄙行為蓬蝶。城鎮(zhèn)居民形成一條人鏈來攜帶水源生火尘分,因為他們可以更快地將水桶向上移動,而不是個人來回奔跑丸氛。我們的管道圖標是一系列管道培愁,每個部分代表管道的一個階段。
不管硬件設(shè)計還是軟件設(shè)計缓窜,流水線設(shè)計(pipeline)都是計算機領(lǐng)域最重要設(shè)計思想之一定续,這種思想是一種用面積換速度的思想,用更多的資源來實現(xiàn)高速禾锤。
6私股、通過預(yù)測提高性能
遵循“請求寬恕比請求許可更好”的說法,下一個好主意是預(yù)測恩掷。在某些情況下倡鲸,假設(shè)從錯誤預(yù)測中恢復(fù)的機制不是太昂貴并且您的預(yù)測相對準確,那么平均而言黄娘,猜測并開始工作可能比等到您確定知道時更快峭状。我們使用算命先生的水晶球作為我們的預(yù)測圖標。
現(xiàn)在流行大數(shù)據(jù)+AI算法預(yù)測和CPU的分支預(yù)測技術(shù)在思想上是不是有異曲同工之妙逼争。
(CPU的分支預(yù)測技術(shù)优床,簡單說CPU在遇到分支指令時,會先預(yù)測分支條件的結(jié)果誓焦,并根據(jù)預(yù)測的結(jié)果胆敞,提前去執(zhí)行分支后面的指令序列)CPU分支預(yù)測
7、存儲的層次設(shè)計
程序員希望內(nèi)存快速杂伟、大且便宜竿秆,因為內(nèi)存速度通常會影響性能,容量限制了可以解決的問題的大小稿壁,而今天的內(nèi)存成本通常是計算機成本的大部分。架構(gòu)師發(fā)現(xiàn)他們可以通過內(nèi)存層次結(jié)構(gòu)來解決這些相互沖突的需求歉备,在層次結(jié)構(gòu)的頂部傅是,每比特最快、最小和最昂貴的內(nèi)存,而在底部每比特最慢喧笔、最大和最便宜的內(nèi)存帽驯。高速緩存給程序員一種錯覺,即主存儲器幾乎與層次結(jié)構(gòu)的頂部一樣快书闸,并且?guī)缀跖c層次結(jié)構(gòu)的底部一樣大且便宜尼变。我們使用分層的三角形圖標來表示內(nèi)存層次結(jié)構(gòu)。形狀表示速度浆劲、成本和大邢邮酢:越靠近頂部,內(nèi)存越快牌借,每比特成本越高度气;層的底部越寬。(越上部膨报,越小磷籍、越快、成本越高现柠;越到底部院领,越慢、越大够吩、成本越低)
cache層次思想是計算機軟硬件非常偉大思想比然,一直延伸到現(xiàn)在redis緩存MySQL,本地緩存遠端網(wǎng)絡(luò)等等废恋。
8谈秫、通過冗余提高可靠性
計算機不僅需要速度快;他們需要可靠鱼鼓。由于任何物理設(shè)備都可能發(fā)生故障拟烫,因此我們通過包含冗余組件來使系統(tǒng)可靠,這些組件可以在發(fā)生故障時接管并幫助檢測故障迄本。我們使用拖拉機拖車作為我們的標志硕淑,因為其后軸兩側(cè)的雙輪胎允許卡車在一個輪胎失效的情況下繼續(xù)行駛。(據(jù)推測嘉赎,卡車司機會立即前往維修設(shè)施置媳,以便修復(fù)漏氣的輪胎,從而恢復(fù)冗余9酢)
?提高可靠性最笨的辦法拇囊,也是最有效的方法就是冗余設(shè)計,大到飛機的雙引擎設(shè)計靶橱,小到數(shù)據(jù)庫冗余備份模型寥袭,服務(wù)器熱備路捧,冷備,異地多活等等传黄。