複製鏈接
請複製以下鏈接發送給好友

複雜指令集

鎖定
複雜指令集,也稱為CISC指令集,英文名是CISC,(Complex Instruction Set Computing的縮寫)。在CISC微處理器中,程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。其實它是英特爾生產的x86系列(也就是IA-32架構)CPU及其兼容CPU,如AMD、VIA的。即使是現在新起的X86-64(也被稱為AMD64)都是屬於CISC的範疇。 [1] 
中文名
複雜指令集
外文名
Complex Instruction Set Computing
也稱為
CISC指令集
簡    稱
CISC

複雜指令集發展背景

CISC早期的計算機部件比較昂貴,主頻低,運算速度慢。為了提高運算速度,人們不得不將越來越多的複雜指令加入到指令系統中,以提高計算機的處理效率,這就逐步形成複雜指令集計算機體系。為了在有限的指令長度內實現更多的指令,人們又設計了操作碼擴展。然後,為了達到操作碼擴展的先決條件——減少地址碼,設計師又發現了各種尋址方式,如基址尋址相對尋址等,以最大限度地壓縮地址長度,為操作碼留出空間。Intel公司的X86系列CPU是典型的CISC體系的結構,從最初的8086到後來的Pentium系列,每出一代新的CPU,都會有自己新的指令,而為了兼容以前的CPU平台上的軟件,舊的CPU的指令集又必須保留,這就使指令的解碼系統越來越複雜。CISC可以有效地減少編譯代碼中指令的數目,使取指操作所需要的內存訪問數量達到最小化。此外CISC可以簡化編譯器結構,它在處理器指令集中包含了類似於程序設計語言結構的複雜指令,這些複雜指令減少了程序設計語言機器語言之間的語義差別,而且簡化了編譯器的結構。
為了支持複雜指令集,CISC通常包括一個複雜的數據通路和一個微程序控制 CISC器。微程序控制器由一個微程序存儲器、一個微程序計數器(MicroPC)和地址選擇邏輯構成。在微程序存儲器中的每一個字都表示一個控制字,並且包含了一個時鐘週期內所有數據通路控制信號的值。這就意味着控制字中的每一位表示一個數據通路控制線的值。例如,它可以用於加載寄存器或者選擇ALU中的一個操作。此外每個處理器指令都由一系列的控制字組成。當從內存中取出這樣的一條指令時,首先把它放在指令寄存器中,然後地址選擇邏輯再根據它來確定微程序存儲器中相應的控制字順序起始地址。當把該起始地址放入MicroPC中後,就從微程序內存中找到相應的控制字,並利用它在數據通路中把數據從一個寄存器傳送到另一個寄存器。由於MicroPC中的地址併發遞增來指向下一個控制字,因此對於序列中的每個控制器都會重複一遍這一步驟。最終,當執行完最後一個控制字時,就從內存中取出一條新的指令,整個過程會重複進行。
由此可見,控制字的數量及時鐘週期的數目對於每一條指令都可以是不同的。因此在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設計的,並一直沿用。桌面計算機流行的x86體系結構即使用CISC。微處理器(CPU)廠商一直在走CISC的發展道路,包括Intel、AMD,還有其他一些現在已經更名的廠商,如TI(德州儀器)、Cyrix以及VIA威盛)等。CISC架構的服務器主要以IA-32架構(IntelArchitecture,英特爾架構)為主,而且多數為中低檔服務器所採用。 [2] 

複雜指令集缺點

採用複雜指令系統的計算機有着較強的處理高級語言的能力.這對提高計算機的性能是有益的.當計算機的設計沿着這條道路發展時.有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統的做法:IBM公司設在紐約Yorktown的JhomasI.Wason研究中心於1975年組織力量研究指令系統的合理性問題.因為它當時已感到,日趨龐雜的指令系統不但不易實現.而且還可能降低系統性能。1979年以帕特遜教授為首的一批科學家也開始在美國加州大學伯克利分校開展這一研究.結果表明,CISC存在許多缺點. 首先.在這種計算機中.各種指令的使用率相差懸殊:一個典型程序的運算過程所使用的80%指令.只佔一個處理器指令系統的20%.事實上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣一來,長期致力於複雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器.
同時.複雜的指令系統必然帶來結構的複雜性.這不但增加了設計的時間與成本還容易造成設計失誤.此外.儘管VLSI技術現在已達到很高的水平,但也很難把CISC的全部硬件做在一個芯片上,這也妨礙單片計算機的發展.在CISC中,許多複雜指令需要極複雜的操作,這類指令多數是某種高級語言的直接翻版,因而通用性差.由於採用二級的微碼執行方式,它也降低那些被頻繁調用的簡單指令系統的運行速度. 因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的設想即指令系統應當只包含那些使用頻率很高的少量指令.並提供一些必要的指令以支持操作系統和高級語言.按照這個原則發展而成的計算機被稱為精簡指令集計算機(ReducedInstructionSetComputer-RISC).簡稱RISC. [3] 

複雜指令集競爭對手RISC

RISC是簡化指令集計算機的簡略縮寫,其風格是強調計算機結構的簡單性和高效性。RISC設計是從足夠的不可缺少的指令集開始的。它的速度比那些具有傳統複雜指令組計算機結構的機器快得多,而且RISC機由於其較簡潔的設計,較易使用,故具有更短的研製開發週期。RISC結構一般具有如下的一些特點:
①單週期的執行: 它統一用單週期指令。從根本上克服了CISC指令週期數有長有短,造成運行中偶發性不確定,致使運行失常的問題。
②採用高效的流水線操作:使指令在流水線中並行地操作,從而提高處理數據和指令的速度。
③無微代碼的硬連線控制:微代碼的使用會增加複雜性和每條指令的執行週期
指令格式的規格化和簡單化:為與流水線結構相適應且提高流水線的效率,指令的格式必須趨於簡單和固定的規式。比如指令採用16位或32位的固定的長度,並且指令中的操作碼字段、操作數字段都儘可能具有統一的格式。此外,儘量減少尋址方式,從而使硬件邏輯部件簡化且縮短譯碼時間,同時也提高了機器執行效率和可靠性。
⑤採用面向寄存器堆的指令:RISC結構採用大量的寄存器—— 寄存器操作指令,使指令系統更為精簡。控制部件更為簡化,指令執行速度大大提高。由於VLSI技術的迅速發展,使得在一個芯片上做大量的寄存器成為可能。這也促成了RISC結構的實現。
⑥採用裝入/存儲指令結構:在CISC結構中。大量設置存儲器—— 存儲器操作指令,頻繁地訪問內存,將會使執行速度降低。RISC結構的指令系統中,只有裝入/存儲指令可以訪問內存,而其它指令均在寄存器之間對數據進行處理。用裝入指令從內存中將數據取出,送到寄存器;在寄存器之間對數據進行快速處理,並將它暫存在那裏,以便再有需要時。不必再次訪問內存。在適當的時候,使用一條存儲指令再將這個數據送回內存。採用這種方法可以提高指令執行的速度。 [3] 
參考資料