RISC CPU 架構總結(歷史,現狀,未來)

2021-06-28 04:24:38 字數 2679 閱讀 4903

曾幾何時,我把熟悉cpu架構作為我自豪的一件事,也做過寫cpu model模擬cpu的**的工作。如今,熟悉cpu架構只不過是我一種底層知識豐富一種憑證而已。但我今日以這篇博文祭奠我逝去的青春。

演算法大神knuth的大作計算機程式設計藝術中也設計一套cpu彙編語法來闡述他的演算法思想,正因為如此令很多讀者對此敬而遠之。

相信有些人拜讀過henssessy 和patternson先生的 computer architecture 這本大作,這兩位巨人是risc 的設計和實現者,henssessy是standford大學的教授,在80年代主持並實現mips處理器架構設計, 並掀起80年代的risc和cisc之爭, csic的代表是x86架構, risc代表是mips和arm,powerpc等

70年代cisc架構的一些特點 1) 指令不定長 2)指令複雜, 主張簡化編譯器, 但實際上根據80-20原理, cpu執行80%時間執行的指令都是20%的指令集,如基本的算術邏輯運算, 和跳轉控制指令。load/store指令。太複雜的指令實無必要.

因此henssessy提出risc 架構, 主張簡化指令集, 定長指令長度和指令碼(簡化cpu的數位電路實現) ,並提出多種優化cpu架構的方法, 如1)深化流水線以提高cpu的主頻, 2)cpu內部增加cache以提高讀寫記憶體效能等。3)增加暫存器 使得80年代risc cpu 大部分佔據高效能計算機市場。 但是intel 通過x86佔據pc市場後,基本上吸收了risc架構的優點,又因為佔據pc市場的原因,大部分pc程式都是x86機器碼,程式存在相容性問題。因此intel pc 壯大後通過x86佔據高效能處理器市場, risc 日漸式微,轉而轉入嵌入式系統. 近期手機平板的興起 arm(risc)與x86(cisc)架構分庭抗禮.

1. cpu流水線技術

一條指令的執行可以分為一下幾個步驟

1. 從rom中獲得指令

2. 從對指令進行解碼,指令指令碼和暫存器, 指令碼識別是哪條指令(是加減乘除還是跳轉指令) 暫存器碼識別要操作的暫存器.

3. 執行指令,(實現所需要的運算)

4. 把執行結果寫到目標暫存器 ,或者寫到記憶體

數位電路中這些都會造成延時,從而限制cpu的最大工作頻率(主頻),因此為提高cpu的主頻,可以把指令的執行步驟分割開來,即可以在第一條指令在進行解碼的時候,第二條指令執行在取指階段,如果流水線分為四個階段,理論上與沒有流水線的cpu主頻可提高四倍

但流水線技術會帶來一些問題, 同時增加流水級間的暫存器,從而增大cpu的電晶體數量以及功耗, 這是最基本的空間和時間的折中了。

1) data hazard

指令序列之間一般是有依賴的,後一條指令的運算元一般來自前一條指令的結果,如果僅僅是暫存器操作,一般可以用bypass技術解決,前一條指令位得到結果的同時,並把結果分給後一條指令,但前一條指令是load指令,這就可能不易解決了。這涉及到cache的問題

2) branch hazard

試想在流水線執行的分支指令,會帶來較大的問題,由於分支的結果要在較後階段才得知結果,那麼要取的指令是跳轉後的指令還是不跳轉的指令,這當然可以進行**,但一旦**失敗,就要把後面的指令無效的掉,這無疑會帶來效能損失。而且這也是流水線技術無法進一步深化流水級的瓶頸,當流水級分得越多,一旦分支**失敗,損失的效能越大.

3)異常處理

流水線技術還會讓cpu異常處理複雜化, cpu異常(最常見的是外設中斷)出現一般都在偏後的流水級出現,一旦出現,必須無效後面流水級指令。這是乙個問題,更複雜的問題這裡就不說了

另外流水線技術還有超標量,亂序執行等技術,這裡就不說了.

2. cache技術

cpu在之前的儲存架構中,只是出現暫存器- 記憶體-磁碟的架構, 但隨著cpu的速度提公升和記憶體速度提公升不同步, load/store指令逐漸成為瓶頸. 基於程式區域性性原理,即80%的時間都是在執行20%程式和資料。 因此cache就因此產生了,成為現代cpu的一部分,出現暫存器-cache-記憶體-磁碟的儲存架構

現代處理器中,一般都會有指令cache和資料cache,可以同時訪問資料和指令, 現在手機或者pc上的cache一般是32kb或者64kb

cache一般分為data ram(儲存資料ram) tag ram(儲存高位記憶體實體地址),select ram(cache 替換處理)

cache定址方式同記憶體一樣,都是用記憶體的實體地址,但cache不可能儲存所有記憶體資料,所以用把實體地址拆分,低位用於index,查詢cache,高位用於與tag ram做比較

,一旦相同即cache命中。

cache還有塊大小的概念,指一次替換cache替換一整個block,一般乙個cache block為32b或者, 這又是區域性性原理,一般都寫乙個cache block的乙個位址,後續的位址都會使用,後續的位址就會cache hit

cache的優化技術有三種1)減少cache命中時間 2)減少cache miss rate 3)減少cache miss 時間

一般可以想到增大cache容量來減少cache rate,但現在的處理器內部中一級cache很難再增大,晶元上32kb或者64kb ram已經占用較大的面積,同時增大cache容量會同時讓一級cache的讀取時間增大,從而增加cache的命中命中時間.

cache組相聯技術可以提高cache,即同一位址index可索引資料數個cache組,再通過高位物理記憶體位址與cache組的tag ram比較判斷哪乙個cache hit. 現代處理器中一般採用4或8路組相聯.

cache優化技術已成熟比較長一段時間,現代cpu均已採用成熟的cache技術

3.對稱處理器架構(smp)

qt歷史與現狀

qt是乙個多平台的c 圖形使用者介面應用程式框架。它提供給應用程式開發者建立藝術級的圖形使用者介面所需的所用功能。qt是完全物件導向的很容易擴充套件,並且允許真正地元件程式設計。自從1996年早些時候,qt進入商業領域,它已經成為全世界範圍內數千種成功的應用程式的基礎。qt也是流行的linux桌面環...

人工智慧 歷史 應用 現狀

人工智慧 artificial intelligence 英文縮寫為ai 人工智慧 一詞最初是在1956 年dartmouth學會上提出的。從那以後,研究者們發展了眾多理論和原理,人工智慧的概念也隨之擴充套件。人工智慧是一門極富挑戰性的科學,從事這項工作的人必須懂得計算機知識,心理學和哲學。人工智慧...

SVM發展歷史 現狀 未來趨勢

svm support victor machine 1963年,vapnik在解決模式識別問題時提出了支援向量方法。起決定性作用的樣本為支援向量 1971年,kimeldorf構造基於支援向量構建核空間的方法 1995年,vapnik等人正式提出統計學習理論。理論改進 參考 演算法改進 目前支援向...