一、概念釋義
按指令長度是否可變,將cpu中執行的指令集分為 cisc(complex instruction set computing 複雜指令集,指令長度可變)和 risc(reduced instruction set computing 精簡指令集,指令程度不可變)。
二、cisc 和 risc歷史脈絡
最初,cpu指令集其實都是risc,這是因為一方面要考慮硬體的限制,出於效能的需要,許多功能直接通過硬體電路來完成;另一方面,為了節省捉襟見肘的記憶體資源,指令也被設計為一部分較短的常用指令和另一部分較長的不常用指令,這樣可以在有限的儲存空間裡面儲存更多的指令。
後來,計算機硬體效能越來越好,記憶體空間也越來越充足,大衛帕特森教授發現,cpu在80%的時間裡都在執行20%的較短指令,因此他提出risc理念,risc指令集開始蓬勃發展。
相比於cisc指令集,risc指令集主要由以下特點:
要支援越多的複雜指令,cpu電路的設計就會越複雜、功耗散熱問題越嚴重、編譯優化也越困難,而只支援較少簡單指令的risc指令集表現比較好。
risc 架構的指令數量較少,意味著同樣功能的程式會需要執行更多數量的指令,就需要更多從記憶體讀取資料到暫存器的過程,因此需要更多的通用暫存器。
risc 下 cpu可以把更多的電晶體資源用於執行分支**等這樣的幫助實際執行效率的功能。
不要忘了 程式執行時間 = 指令數 * cpi * 指令週期,因此risc架構下的cpu提高執行效率的思路是減少cpi,因為更簡單的指令意味著所需要的執行時間更短;而cisc架構是通過減少實際執行指令數這個思路來提高執行效率。
三、intel 的微指令架構,risc 和 cisc 相容性問題
intel 的x86 cpu指令集做的太成功了,以至於想要轉向risc架構指令集面臨很沉重的向前相容性問題,因此intel 通過修改指令集使得cisc指令集可以在risc架構的cpu上執行,它是如何做到的呢?其實這頗似程式設計中的介面卡模式。
從pentium pro開始,intel 引入了微指令(micro - instruction)架構:
這種架構下,一條cisc指令被指令解碼器轉換成系統功能的多條risc指令存放在微指令緩衝區中,然後再分發給後面的超標量,同時也是亂序執行的流水線裡面。為了減輕解碼器轉換負擔和cpu功耗,引入來cpu 的l0緩衝區來快取已經解碼結果,這一點也體現了區域性優化的思路。
四、arm 和 risc-v ,cpu 未來展望
arm雖然只授權使用卻不開源,因此近年來有一些開源硬體專案逐漸發展起來,如 risc-v專案。
CISC和RISC的區別
risc 精簡指令集計算機 和cisc 複雜指令集計算機 是當前cpu的兩種架構。它們的區別在於不同的cpu設計理念和方法。早期的cpu全部是cisc架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在cisc架構的cpu上,您可能需要這樣一條指令 mul addra...
RISC和CISC的區別
risc 和cisc 是目前設計製造微處理器的兩種典型技術,雖然它們都是試圖在體系結構 操作執行 軟體硬體 編譯時間和執行時間等諸多因素中做出某種平衡,以求達到高效的目的,但採用的方法不同,因此,在很多方面差異很大,它們主要有 1 指令系統 risc 設計者把主要精力放在那些經常使用的指令上,盡量使...
CISC和RISC的區別
cisc complex instruction set computers,複雜指令集計算集 和risc reduced instruction set computers 是兩大類主流的cpu指令集型別,其中cisc以intel,amd的x86 cpu為代表,而risc以arm,ibm powe...