簡介 CISC是指採用一整套計算機指令進行操作的計算機。而後又出現了精簡指令集計算機,它精簡了指令集,只保留了那些常用的指令,這樣計算機能以更快的速度執行操作。
CISC CISC早期的計算機部件比較昂貴,主頻低,運算速度慢。為了提高
運算速度 ,人們不得不將越來越多的複雜指令加入到
指令系統 中,以提高計算機的處理效率,這就逐步形成
複雜指令集 計算機體系。為了在有限的
指令長度 內實現更多的指令,人們又設計了
操作碼 擴展。然後,為了達到操作碼擴展的先決條件——減少
地址碼 ,設計師又發現了各種
定址方式 ,如
基址定址 、相對定址等,以最大限度地壓縮地址長度,為操作碼留出空間。Intel公司的X86系列CPU是典型的CISC體系的結構,從最初的8086到後來的Pentium系列,每出一代新的CPU,都會有自己新的指令,而為了兼容以前的CPU平台上的軟體,舊的CPU的指令集又必須保留,這就使指令的解碼系統越來越複雜。CISC可以有效地減少編譯代碼中指令的數目,使取指操作所需要的記憶體訪問數量達到最小化。此外CISC可以簡化
編譯器 結構,它在處理器指令集中包含了類似於
程式設計語言 結構的複雜指令,這些複雜指令減少了程式設計語言和
機器語言 之間的語義差別,而且簡化了編譯器的結構。
為了支持
複雜指令集 ,CISC通常包括一個複雜的數據通路和一個微程式控制器。
微程式控制器 由一個微程式
存儲器 、一個微程式計數器(MicroPC)和地址選擇邏輯構成。在
微程式 存儲器中的每一個字都表示一個控制字,並且包含了一個
時鐘周期 內所有
數據通路 控制信號 的值。這就意味著控制字中的每一位表示一個數據通路控制線的值。例如,它可以用於載入
暫存器 或者選擇ALU中的一個操作。此外每個
處理器指令 都由一系列的控制字組成。當從記憶體中取出這樣的一條指令時,首先把它放在
指令暫存器 中,然後地址選擇邏輯再根據他來確定微程式
存儲器 中相應的控制字順序起始地址。當把該起始地址放入MicroPC中後,就從微程式記憶體中找到相應的控制字,並利用它在數據通路中把數據從一個暫存器傳送到另一個暫存器。由於MicroPC中的地址並發遞增來指向下一個控制字,因此對於序列中的每個控制器都會重複一遍這一步驟。最終,當執行完最後一個控制字時,就從記憶體中取出一條新的指令,整個過程會重複進行。
CISC 由此可見,控制字的數量及
時鐘周期 的數目對於每一條指令都可以是不同的。因此在CISC中很難實現指令流水操作。另外,速度相對較慢的
微程式 存儲器需要一個較長的時鐘周期。由於指令流水和短的時鐘周期都是快速執行程式的必要條件,因此CISC體系結構對於高效處理器而言不太合適的。
(百度名片內容和圖片來源:)
發展歷史 在計算機
指令系統 的最佳化發展過程中,出現過兩個截然不同的最佳化方向:CISC技術和
RISC技術 。CISC是指
複雜指令系統計算機 (Complex Instruction Set Computer);RISC是指精簡指令系統計算機(Reduced Instruction Set Computer)。這裡的
計算機指令系統 指的是計算機的最低層的
機器指令 ,也就是CPU能夠直接識別的指令。隨著計算機系統的複雜,要求計算機指令系統的構造能使計算機的整體性能更快更穩定。最初,人們採用的最佳化方法是通過設定一些功能複雜的指令,把一些原來由軟體實現的、常用的功能改用硬體的
指令系統 實現,以此來提高計算機的執行速度,這種計算機系統就被稱為
複雜指令系統計算機 ,即Complex Instruction Set Computer,簡稱CISC。另一種最佳化方法是在20世紀80年代才發展起來的,其基本思想是儘量簡化
計算機指令 功能,只保留那些功能簡單、能在一個節拍內執行完成的指令,而把較複雜的功能用一段子程式來實現,這種計算機系統就被稱為精簡
指令系統 計算機.即Reduced Instruction Set Computer,簡稱RISC。RISC技術的精華就是通過簡化計算機指令功能,使指令的平均執行周期減少,從而提高計算機的工作主頻,同時大量使用
通用暫存器 來提高子程式執行的速度。
CISC 從計算機誕生以來,人們一直沿用
CISC指令集 方式。早期的
桌面軟體 是按CISC設計的,並一直沿用。桌面計算機流行的x86體系結構即使用CISC。微處理器(CPU)廠商一直在走CISC的發展道路,包括
Intel 、AMD,還有其他一些現在已經更名的廠商,如TI(
德州儀器 )、Cyrix以及VIA(
威盛 )等。在CISC微處理器中,程式的各條指令是按順序串列執行的,每條指令中的各個操作也是按順序串列執行的。
順序執行 的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。CISC架構的伺服器主要以IA-32架構(IntelArchitecture,
英特爾架構 )為主,而且多數為中低檔伺服器所採用。
區別 CISC(
複雜指令集 計算機)和RISC(
精簡指令集計算機 )是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。早期的CPU全部是CISC架構,它的設計目的是要用最少的
機器語言 指令來完成所需的計算任務。RISC和CISC是設計製造
微處理器 的兩種典型技術,雖然它們都是試圖在
體系結構 、操作運行、軟體硬體、
編譯時間 和
運行時間 等諸多因素中做出某種平衡,以求達到高效的目的,但採用的方法不同,因此,在很多方面差異很大,它們主要有:
CISC (1)
指令系統 :RISC設計者把主要精力放在那些經常使用的指令上,儘量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。因此,在RISC機器上實現特殊功能時,效率可能較低。但可以利用流水技術和
超標量技術 加以改進和彌補。而CISC計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。
(2)存儲器操作:RISC對存儲器操作有限制,使控制簡單化;而CISC機器的存儲器操作指令多,操作直接。
(3)程式:RISC
彙編語言 程式一般需要較大的記憶體空間,實現特殊功能時程式複雜,不易設計;而CISC彙編語言程式編程相對簡單,科學計算及複雜操作的程式設計相對容易,效率較高。
(4)中斷:RISC機器在一條指令執行的適當地方可以回響中斷;而CISC機器是在一條指令執行結束後回響中斷。
CISC (5)
CPU :RISCCPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強、面積大、功耗大。
(6)設計周期:RISC
微處理器 結構簡單,布局緊湊,設計周期短,且易於採用最新技術;CISC微處理器結構複雜,設計周期長。
(7)用戶使用:RISC微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構複雜,功能強大,實現特殊功能容易。
(8)套用範圍:由於RISC
指令系統 的確定與特定的套用領域有關,故RISC機器更適合於專用機;而CISC機器則更適合於通用機。
特點 指令系統 龐大,指令功能複雜,指令格式、
定址方式 多;絕大多數指令需多個
機器周期 完成;各種指令都可訪問
存儲器 ;採用
微程式 控制;有專用
暫存器 ,少量;難以用最佳化編譯技術生成高效的
目標代碼 程式;CISC存在的問題 :指令系統龐大,指令功能複雜,
指令格式 、定址方式多;執行速度慢;難以最佳化編譯,
編譯程式 複雜; 80%的指令在20%的運行時間內使用;無法並行;無法兼容。
導致CISC指令系統複雜的主要原因 :減少語義差距減少存儲空間,提高速度為了
向上兼容 帶來的後果是電路複雜,編譯效率低無法並行;無法兼容。
典型的CISC產品 項目 VAX11/780 1978年 Intel80386 1985年 MC68020 1984年 指令條數 304 111 101 定址方式 24 11 16 指令格式 變長(2-57byte) 變長(1-17byte)16。
從CISC到RISC CISC指令系統存在的問題:20%與80%規律 CISC中,大約20%的指令占據了80%的
處理機 時間。其餘80%指令:使用頻度只占20%的處理機運行時間
VLSI技術的發展引起的問題 :VLSI工藝要求規整性,RISC正好適應了VLSI工藝的要求主存與控存的速度相當,簡單指令沒有必要用
微程式 實現,複雜指令用微程式實現與用簡單指令組成的
子程式 實現沒有多大區別;由於VLSI的集成度迅速提高,使得生產單晶片處理機成為可能。 軟硬體的功能分配問題複雜的指令使指令的執行周期大大加長,一般CISC
處理機 的指令平均執行周期都在4以上,有些在10以上 。CISC增強了
指令系統 功能,簡化了軟體,但硬體複雜了,設計周期加長。
缺點 採用複雜
指令系統 的計算機有著較強的處理高級語言的能力.這對提高計算機的性能是有益的.當計算機的設計沿著這條道路發展時.有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統的做法:IBM公司設在紐約Yorktown的JhomasI.Wason研究中心於1975年組織力量研究指令系統的合理性問題.因為它當時已感到,日趨龐雜的指令系統不但不易實現.而且還可能降低系統性能。1979年以帕特遜教授為首的一批科學家也開始在
美國加州大學 伯克利分校開展這一研究.結果表明,CISC存在許多缺點. 首先.在這種計算機中.各種指令的使用率相差懸殊:一個典型程式的運算過程所使用的80%指令.只占一個處理器指令系統的20%.事實上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣-來,長期致力於複雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器.
CISC
同時.複雜的
指令系統 必然帶來結構的複雜性.這不但增加了設計的時間與成本還容易造成設計失誤.此外.儘管VLSI技術現在已達到很高的水平,但也很難把CISC的全部硬體做在一個晶片上,這也妨礙
單片計算機 的發展.在CISC中,許多複雜指令需要極複雜的操作,這類指令多數是某種高級語言的直接翻版,因而通用性差.由於採用二級的微碼執行方式,它也降低那些被頻繁調用的簡單指令系統的運行速度. 因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的構想即指令系統應當只包含那些使用頻率很高的少量指令.並提供一些必要的指令以支持作業系統和高級語言.按照這個原則發展而成的計算機被稱為
精簡指令集計算機 (ReducedInstructionSetComputer-RISC).簡稱RISC.
問題 (1)指令的2/8規律
CISC計算機系統中,各種指令的使用頻率相差懸殊。大量的統計數字表明,大概有20%的比較簡單的指令被反覆使用,使用量約占整個程式的80%;而有80%左右的指令則很少使用,其使用量約占整個程式的20%。
VLSI製造工藝要求CPU控制邏輯的規整性
進入20世紀80年代後,VLSI技術的發展非常迅速,往往每3到4年集成度就提高了一個數量級。VLSI工藝要求規整性,而CISC處理器中,為了實現大量複雜的指令,控制邏輯極不規整,給VLSI工藝造成很大困難。
此外,以CISC處理器中,大量使用
微程式 技術以實現複雜的
指令系統 。20世紀70年代之前一般採用磁芯做主存儲器,採用半導體做
控制存儲器 ,兩者的速度相差5~10倍。從70年代後期開始,大量使用DRAM(
動態隨機存儲器 )做主存儲器,使主存與控制存儲器的速度相當,從而使許多簡單指令沒有必要用微程式來實現。而複雜的指令,用微程式實現和簡單指令組成的
子程式 實現已經沒有多大區別。
軟硬體的功能劃分
在CISC中,為了支持
目標程式 的最佳化,支持高級語言和
編譯程式 ,增加了許多複雜的指令,用一條指令來替代一串指令。這些複雜指令簡化目標程式,縮小了高級語言與
機器指令 之間的語義差距。但是,增加了這些複雜指令並不等於縮短了程式的執行時間。
為了實現複雜的指令,不僅增加了硬體的複雜程式,而且使指令的執行周期大大加長。例如,為了支持編譯程式的對稱性要求,一般的運算型指令都能直接訪問
主存儲器 ,從而使指令的執行周期數增加,數據的重複利用率降低。據統計,一般CISC處理器的指令平均執行周期都在4以上,有些在10以上,如Intel公司的8088等。
這裡有一個軟體與硬體的功能如何恰當分配的問題。在CISC中,通過增強
指令系統 的功能,簡化了軟體,增加了硬體的複雜程度。然而,由於指令複雜了,指令的執行時間必然加長,從而有可能使整個程式的執行時間反而增加,因此,在
計算機體系結構 設計中,軟硬體功能劃分必須核實。
RISC 和CISC 是目前設計製造微處理器的兩種典型技術,雖然它們都是試圖在體系結構、操作運行、軟體硬體、編譯時間和運行時間等諸多因素中做出某種平衡,以求達到高效
的目的,但採用的方法不同,因此,在很多方面差異很大,它們主要有:
(1)
指令系統 :RISC 設計者把主要精力放在那些經常使用的指令上,儘量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。因此,在RISC 機器上實現特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而CISC 計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。
(2)
存儲器 操作:RISC 對存儲器操作有限制,使控制簡單化;而CISC 機器的存儲器操作指令多,操作直接。
(3) 程式:RISC
彙編語言程式 一般需要較大的記憶體空間,實現特殊功能時程式複雜,不易設計;而CISC 彙編語言程式編程相對簡單,科學計算及複雜操作的程式讓設計相對容易,效率較高。
(4) 中斷:RISC 機器在一條指令執行的適當地方可以回響中斷;而CISC 機器是在一條指令執行結束後回響中斷。
(5) CPU:RISC CPU 包含有較少的單元電路,因而面積小、功耗低;而CISC CPU 包含有豐富的電路單元,因而功能強、面積大、功耗大。
(6) 設計周期:RISC
微處理器 結構簡單,布局緊湊,設計周期短,且易於採用最新技術;CISC 微處理器結構複雜,設計周期長。
(7) 用戶使用:RISC 微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構複雜,功能強大,實現特殊功能容易。
(8) 套用範圍:由於RISC
指令系統 的確定與特定的套用領域有關,故RISC 機器更適合於專用機;而CISC 機器則更適合於通用機。