[轉]計算機架構設計的8個偉大思想

“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.” --- David A. Patterson


1.面向摩爾定律設計(Design for Moore's Law)

計算機設計師的一個常數是快速變化,這在很大程度上是由摩爾定律驅動的。它指出,集成電路資源每 18-24 個月翻一番。摩爾定律源於 1965 年英特爾創始人之一戈登·摩爾(Gordon Moore)對 IC 容量增長的預測。由於計算機設計可能需要數年時間,因此在項目開始和結束之間,每個芯片的可用資源很容易翻倍或四倍。

就像飛碟射手一樣,計算機架構師必須預測設計完成時技術的位置,而不是設計開始的位置。我們使用“向上和向右”摩爾定律圖來表示快速變化的設計。

半導體行業大致按照摩爾定律發展了半個多世紀,對二十世紀後半葉的世界經濟增長做出了貢獻,並驅動了一系列科技創新、社會改革、生產效率的提高和經濟增長。

個人電腦、因特網、智能手機等技術改善和創新都離不開摩爾定律的延續。如今單個處理器已經很難適應摩爾定律了(主要包括隨着更多晶體管被裝入芯片當中,相應會出現電子能量外泄和熱量散發的現象),但云計算興起,算力網絡起飛,在某種程度延續了摩爾定律。

 

2.使用抽象簡化設計(Use Abstraction to simplify design)

計算機架構師和程序員都必須發明技術來提高自己的生產力,否則設計時間會隨着摩爾定律的資源增長而顯着延長。硬件和軟件的主要生產力技術是使用抽象來表示不同級別的設計。隱藏較低級別的細節以在較高級別提供更簡單的模型。我們將使用抽象繪畫圖標來代表第二個偉大的想法。

抽象思維一直推動着計算機技術不斷向前發展,科學技術本身就是現實世界的抽象和演繹:

電路信號->01二進制->指令彙編->高級編程->模塊設計->框架設計->單機系統->分佈式系統-->雲計算,計算機領域有句名言:“計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決”。

 

3.快速做普通案例(Make the Common case fast)

使常見情況變得更快往往會比優化罕見情況能更有效地提高性能。具有諷刺意味的是,常見情況通常比罕見情況更簡單,因此通常更容易增強。這種常識性建議意味着你知道常見情況是什麼,這隻有通過仔細的實驗和測量才能實現。我們使用跑車作爲快速製作普通案例的圖標,因爲最常見的旅行只有一兩個乘客,而且製作快速轎車肯定比快速小型貨車更容易。

計算機大多數時間都是運作在常見情況下,符合2/8定律,所以首先我們針對常見情況進行優化改進,加速大概率事件,效果更快。

 

4.通過並行提高性能(Performance via parallelism)

自從計算出現以來,計算機架構師就提供了通過並行執行操作來獲得更高性能的設計。我們使用飛機的多個噴氣發動機作爲並行性能的標誌。

並行設計思想一直是提升性能的核心思想,多進程,多線程,多核-SMP,SIMD,NUMA,MIPS,向量機,GPU等等。

 

5.通過流水線提高性能(Performance via pipelining)

有一種特殊的並行模式在計算機體系結構中非常普遍,它有自己的名字:流水線。例如,在消防車出現之前,“水桶大隊”會對火災做出反應,許多牛仔電影都會以這種方式來應對惡棍的卑鄙行爲。城鎮居民形成一條人鏈來攜帶水源生火,因爲他們可以更快地將水桶向上移動,而不是個人來回奔跑。我們的管道圖標是一系列管道,每個部分代表管道的一個階段。

不管硬件設計還是軟件設計,流水線設計(pipeline)都是計算機領域最重要設計思想之一,這種思想是一種用面積換速度的思想,用更多的資源來實現高速。

 

6.通過預測提高性能(Performance via prediction)

遵循“請求寬恕比請求許可更好”的說法,下一個好主意是預測。在某些情況下,假設從錯誤預測中恢復的機制不是太昂貴並且你的預測相對準確,那麼平均而言,猜測並開始工作可能比等到你確定知道時更快。我們使用算命先生的水晶球作爲我們的預測圖標。

現在流行大數據+AI算法預測和CPU的分支預測技術在思想上是不是有異曲同工之妙。

 

7.存儲的層次設計(Hierarchy of memories)

程序員希望內存快速、大且便宜,因爲內存速度通常會影響性能,容量限制了可以解決的問題的大小,而今天的內存成本通常在計算機的成本中佔大部分。架構師發現他們可以通過內存層次結構來解決這些相互衝突的需求,在層次結構的頂部,每比特最快、最小和最昂貴的內存,而在底部每比特最慢、最大和最便宜的內存。

高速緩存給程序員一種錯覺,即主存儲器幾乎與層次結構的頂部一樣快,並且幾乎與層次結構的底部一樣大且便宜。我們使用分層的三角形圖標來表示內存層次結構。形狀表示速度、成本和大小:越靠近頂部,內存越快,每比特成本越高;層的底部越寬。

cache層次思想是計算機軟硬件非常偉大思想,一直延伸到現在Redis緩存MySQL,本地緩存遠端網絡等等。

 

8.通過冗餘提高可靠性(Dependability via redundancy)

計算機不僅需要速度快;他們還需要可靠。由於任何物理設備都可能發生故障,因此我們通過包含冗餘組件來使系統可靠,這些組件可以在發生故障時接管並幫助檢測故障。我們使用拖拉機拖車作爲我們的標誌,因爲其後軸兩側的雙輪胎允許卡車在一個輪胎失效的情況下繼續行駛。(據推測,卡車司機會立即前往維修設施,以便修復漏氣的輪胎,從而恢復冗餘!)

提高可靠性最笨的辦法,也是最有效的方法就是冗餘設計,大到飛機的雙引擎設計,小到數據庫冗餘備份模型,服務器熱備,冷備,異地多活等等。

 

 

 

大衛 A·帕特森博士,自 1977 年加入該學院以來,David A. Patterson博士一直在加州大學伯克利分校教授計算機體系結構,並擔任 Pardee 計算機科學主席。他的教學曾獲得加州大學傑出教學獎、ACM 卡爾斯特倫獎、IEEE穆里根教育獎章和本科教學獎,世界上最大的技術進步專業協會。Patterson 博士因對 RISC 的貢獻而獲得 IEEE 技術成就獎和 ACM Eckert-Mauchly 獎,並因對 RAID 的貢獻而分享了 IEEE 約翰遜信息存儲獎。他還與合著者 John Hennessy 博士分享了 IEEE 約翰·馮·諾依曼獎章和 C&C 獎。

 

原文出處:https://mp.weixin.qq.com/s/Zog-bv84VhLriPLw2760Ng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章