計算機介紹
精簡指令集計算機:(RISC:Reduced Instruction Set Computing)一種
指令長度較短的計算機,其運行速度比CISC要快。
RISC和
CISC是 CPU 從指令集的特點上可以分為兩類 :CISC 和 RISC 。 RISC 是英文 Reduced Instruction Set Computing 的縮寫 , 就是 " 精簡指令運算集 ” , CISC就是 " 複雜指令運算集 " 。RISC 的
指令系統相對簡單,它只要求硬體執行很有限且最常用的那部分指令,大部分複雜的操作則使用成熟的
編譯技術,由簡單指令合成。目前在中高檔伺服器中普遍採用這一
指令系統的 CPU ,特別是高檔伺服器全都採用 RISC
指令系統的 CPU 。在中高檔伺服器中採用 RISC 指令的 CPU 主要有 Compaq (
康柏,即新惠普)公司的 Alpha 、 HP 公司的 PA-RISC 、 IBM 公司的 Power PC 、 MIPS 公司的 MIPS 和 SUN 公司的 Sparc 。
RISC是相對於複雜指令集計算機(CISC)而言的。所謂複雜指令集計算機是依靠增加機器的硬體結構來滿足對計算機日益增加的性能要求。計算機結構的發展一直是被複雜性越來越高的處理機壟斷著,為了減少計算機操作與高級語言的差別,為了改善機器的運行特性,機器指令越來越多,指令系統也越來越複雜.特別是早期的較高速度的CPU和較慢速度的存儲器間的矛盾,為了儘量減少存取數據的次數,提高機器的速度,大大發展了複雜指令集,但隨著半導體工藝技術的發展,存儲器的速度不斷提高,特別是高速緩衝的使用,使計算機體系結構發生了根本性的變化,硬體工藝技術提高的同時,軟體方面也發生了同等重要的進展,出現了最佳化編譯程式,使程式的執行時間儘可能減少!並使機器語言所占的記憶體減至最小,在具有先進的存儲器技術和先進的編譯程式的條件下,CISC體系結構已不再適用了,因而誕生了RISC體系結構,RISC技術的基本出發點就是通過精減機器指令系統來減少硬體設計的複雜程度,提高指令執行速度,在RISC中,計算機實際上每一個機器周期里都執行指令,無論簡單或複雜的操作,均由簡單指令的程式塊完成,具有較強的仿真能力。
在RISC機器中,要求在`單機器周期’時間內執行所有的指令,而系統最根本的吞吐率限制是由程式運行中訪存時間比例所決定的,因此,只要CPU執行指令的時間與取指時間相同,即可獲得最大的系統吞吐率。(對於一個機器周期執行一條指令而言)。RISC機器中,採用遷件控例以實現認速哪一指令解碼,並採用較少的指令和簡單定址模式,通過固定均指令格式來最佳化指分解碼和控制邏輯。另外,RISC設計是以複雜的設計最佳化來求取簡單的硬體晶片環境.編譯最佳化可以改善HLL程式的運行效率。
R1SC設計消除了微碼的例行程式,把機器代級控制交給軟體處理.即用較快的RAM代替處理器中的微碼ROM作為指令的快取(Cache),計算機的控趕駐存在指令Cache,從而使得計算機系統和編譯器產生的指令流使高級語言的需求和硬體性能密切配合。
計算機的性能可以用完成一特定任務所需的時間來衡量,這個時間等於CXTXl。
C=完成每條指令所需的周期數
T=每個周期的時間
I=每個任務的指令數
RISC技術就是努力使C和T減至最小,C和T的減小可能導致I的增匆,但最佳化編譯技術和其他技術的採用可以彌補由於I的增加對機器性能的影響.RISC技術之所由很快由一種新見解發展成為前景廣娜的計算機市場,主要有如下幾方面的原因:一是RISC結構適應只新月異的VLSI技術發展;二是RISC簡化了處理器結構,實現和調試較容易,因而設計代價低,開發周期短;三是簡化了結構,處理器占據了較小的晶片面積,從而可在同一晶片上集成進較大的暫存器檔案,翻譯後備緩衝器(TLB)、協處理器和快速乘膝器等,使得處理器獲得更高的性能;四是RISC對HLL程式的支持優於以往的複雜指令系旅計算機,可以使用戶(程式設計師)很容易使用統一的指令集,很容易估算代碼最佳化所起的作用,使程式設計師對硬體的正確性有了更多的信任感。
分類
採用多級指令流水線結構
採用
流水線技術可使每一時刻都有多條指令重疊執行,以減小 CPI 的值,使 CPU 不浪費空周期。實例: Pentium Ⅱ /Pro/Celeron 可同時發出執行五條指令, AMD - K6/K6 - 2 可同時發出六條指令。
機器中使用頻率高的簡單指令及部分複雜指令
這樣可減小時鐘周期數量,提高 CPU 速度,其實質是減小 CPI 下的值實現。實例:選取運算指令、載入、存儲指令和轉移指令作主指令集。
採用載入 (Load) 、存儲 (Store) 結構
只允許 Load 和 Store 指令執行
存儲器操作,其餘指令均對
暫存器操作。實例: Amd - K6/K6 - 2 、 P Ⅱ /Celeron/Pro 均支持對
暫存器的
直接操作和重新命名,並大大增加
通用暫存器的數量。
延遲載入指令和轉移指令
由於數據從
存儲器到暫存器存在二者速度差、轉移指令要進行入口地址的計算,這使 CPU 執行速度大大受限,因此, RISC 技術為保證流水線高速運行,在它們之間允許加一條不相關的可立即執行的指令,以提高速度。
實例:主要體現於
預測執行、非順序執行和數據傳輸等方面,除 Intel P54/55C 不支持,像 K6 - 2 、 P Ⅱ均支持。
採用高速快取 (cache) 結構
為保證指令不間斷地傳送給 CPU
運算器, CPU 設定了一定大小的 Cache 以擴展
存儲器的頻寬,滿足 CPU 頻繁取指需求,一般有兩個獨立 Cache ,分別存放“指令+數據”。
實例: P Ⅱ /Celeron:16K + 16K , AMD - K6/K6 - 2 為 32K + 32K , Cyrix M Ⅱ :64K( 實也為 2 個 32K Cache ,此作共享 Cache) , P Ⅱ還加了 L2 Cache,更是大幅提高了 CPU 速度。
RISC的特點
RISC的特點是指令及其格式精少,操作和控制簡捷。具體有下列幾個方面。
精簡指令集
RISC結構採用精簡的,長短劃一的指令集,使大多數的操作獲得了儘可能高的效率。某些在傳統結構中要用多周期指令實現的操作,在RISC結構中,通過機器語言編程,就代之以多條單周期指令了。精簡的指令集大大改善了處理器的性能,並推動了RISC的設計。對於到底精簡到什麼程度的問題,沒有一定的回答。將現有RISC系統與CISC系統作一對比,便可見大概。通常,對RISC而言:
指令數少,不超過128條。
定址方式少,不超過4種。
指令格式少,不超過4種。
處理關於擴充指令集的建議是非常慎重的,要經過認真的權衡,驗證,在看它們是否真正提高計算機的性能。例如,MIPS採用了一條規則:增加一條指令必須使性能在一定的套用範圍內得到1%的增益,否則這條指令將被拒絕。
指令時鐘周期,指令長度相等
如果每一條指令要執行的任務既簡單又明了,則執行每一條指令所的時間可以被壓縮周期數也可減少。RISC的設計目標是實現一個機器周期執行一條指令,使得系統操作更加有效。接近這個目標的技術包括指令流水線及特定的裝/存結構等。典型的指令可包括取指、解碼、執行和存裝果等階段。單周期指可通過讓所有指令為標準長短來實現。標準指令長短應與計算機系統的基本字長相等,通常與系統中數據線數相等。
在任何取指周期,完整的單個指令要傳給CPU。例如,如果基字長是32位,且系統匯流排的數據部分是32線,則標準指令長度是32位。要讓所有指令的執行時間一致較困難。有些指令,包含簡單的在CPU暫存器上的邏輯操作(清暫存器等),則可容易地在一個CPU時鐘周期內執行;其它指令可能包含記憶體存取(對記憶體的讀寫、取數等)或多周期操作(乘、除等),可能無法在單周期內執行。這給設計者提出了這樣的要求;讓大多數經常使用的指令得以在一個單周期內執行。
指令流水線
減少執行一條指令所需周期數的方法是重疊執行多條指令。指令流水線採用這樣的工作方式:將每條指令的執行分為幾個離散部分,然後同時執行多條指令。任何指令的取指和執行階段占據相同時間,理想的是一個單周期。這可說是RISC最重要的一條設計原則。所有從記憶體到CPU執行的指令,都遵循一種恆定的流的形式。每條指令都以同樣的步調執行,無等待的指令。CPU始終是忙的。達到流水線操作的必要條件是:
例SPARC晶片等採用了取指、解碼、執行和寫入結果四級流水線結構,以最大限度來提高處理器性能。在每一個時鐘周期的頭上,都可以開始執行一條新的指令,這就保證了每個機器周期從存貯器平均取出一條新的指令,從而,總體看,大多數指令能在單周期內實現。指令流水線技術可以比作一條裝配線—指令象是被加工的產品一樣,從一道工序流到下一道工序,一直到它執行完為止。
因此,指令流水線利用一個等於其流水線深度的因子,來減少指令周期數是可能的,但這樣的話,要求流水線始終充滿有用指令且沒有任何東西阻礙指令通過流水線,這樣的需求給結構增加了一定的負擔。例如,對於ALU等資源的競爭,阻止了流水線中指令的流動。長短不一的執行時間所引起的不良後果更是顯而易見,這也是為什麼RISC要定義一個有前面所述特點的指令集的原因。
裝入和存數(LOAD/Store)結構
執行與記憶體有關的操作指令,不是要求增加每個周期的時間,就是要求增加指令的周期數,二者必取其一。因為這些指令要計算運算元的地址,將所需的運算元從記憶體中讀出,計算得出結果,再把結果送回記憶體,所以它們執行的時間就長得多。為了消除這種指令的負作用,RISC採用了這樣的裝入和存數結構:只有裝入(Load)和存數(Store)指令才去訪間記憶體,所有其它操作只訪問保存在處理器暫存器中的運算元。其優點在於:
所有這些都有助於RISC實現的每個周期執行一條指令的目標。儘管如此,裝入和存數指令仍阻礙著IRSC設計目標的實現。用最佳化編譯技術處理裝入指令和分支指令的延遲,有助問題的解決。最佳化編譯技術雖不是專門面向RISC結構的,但最佳化編譯器依賴於RISC結構完成其出色的任務,RISC結構又依賴於最佳化編譯器得到它們更完善的性能。編釋器要能分析數據和控制流,並在此基礎上調整指令的執行順序,巧妙安排暫存器的用法。前一種作用可減少CPU的空閒時間,後一種作用可以提高暫存器中所保存的數據的可再用率,減少訪存次數,縮短數據通路的長度。
擁有較大暫存器組
為了便於實現多數指令在暫存器之間的操作,即所謂的暫存器到暫存器操作,必須有足夠量的CPU通用暫存器。足量的暫存器使得在隨後操作中需作為操作用的中間結果暫存在CPU暫存器中,因而就減少了對記憶體的裝入和存數,加快了運行速度。工業化RISC系統中至少採用32個通用CPU暫存器。
採用硬連線控制
由於微程式設計給設計者提供的靈活性,許多CISC系統是微程式控制的。不同的指令通常具有不同長度的微程式,這意味著每條指令執行的周期數不一樣,這與所有指令一致的、流線的處理原則相矛盾。但這可由硬連線控制來解決,而且速度會更快。因此RISC應該是硬連線線控制的。當每條指令與一單條微指令有一對一相相符合的關係時可有例外,也就是每個微程式由一單個控制字組成。這種設計可與用硬連線控制一樣快,一樣高效,並使設計者得益於微程式設計的優越性。採用硬連線控制,可使RISC系統控制器簡單。設計的簡單又使機器的布局更加合理,使得設計者可以集中精力去最佳化那些剩下的,為數不多的,但又很關鍵的處理器特性。簡化的結構使晶片上面積資源緊張的狀態得以緩解,一些對性能至關重要的結構,象大的暫存器元件,轉換查找快取(TLB)S協處理器和乘除單元都可以裝在同一塊晶片上。這些附加的資源又使處理器增加了很大的性能優勢。事實上,RISC並非一定嚴格地完全具備上述特點,有些稱作RISC型的系統甚至違背了上述某方面。上述特點應被當作一種指導原則來解釋RISC的性質。放寬點講,滿足大部分這些特點的系統就能被看作RISC。
優點
RISC在保持成本降低的同時能很好地提高速度。
適用VLSI(VERYLARGESCALEINTEGRATION)工藝。
由於RISC指令集清簡,使之只需相對小而簡單控制單元的解碼和硬體執行子系統。這導致在用VLSI實現計算機系統時的下列結果:
控制單元所占的晶片面積大為減少,如RlsCI占10%,而通常CISC占50%以上。因而,在RISCVLSI晶片,留下更多可用空間,使整個CPU和其它部件故在一塊晶片上(如高速快取,浮點單元,部分主存,存貯器管理單元,1/0口)。
由於控制區域減少,就可在晶片上按放大量的CPU暫存器(RISCI是138個)。
通過減少VLSI晶片上控制單元面積和放置大量一致的暫存器,可以提高晶片的正則化因子(regulariZationfaetor)。基本上,正則化因子越高,VLSI設計成本越低。
有利於使用GaAs(砷化稼)VLSI晶片的實現技術,因其適於製造密度較高的晶片。總之,是降低了複雜程式,簡化了結構。
速度高。
一個更為統一的指令集用起來很方便。
缺點
當今計算機世界出現了尋覓更好性能的熱潮,RISC與CISC既對峙又互補。RISC有其自身的缺點。
編譯後指令長度較長,記憶體需要較大
RISC的缺點與其一些優點直接有關。因為RISC擁有的指令數少,有些在CISC中僅由一條指令完成的功能,在RISC中需二、三條甚至更多條指令,這使RISC代碼較長,因而RISC的程式需要更多的記憶體,記憶體與CPU間的指令衝突也會增加。研究表明,平均而言,執行同樣的功能,一個RISC程式比一個CISC程式長30%。同時,RISC對編譯器要求較高,最佳化編譯器的設計是一項極復要且技術要求很高的工作,它又必須由RISC機製造單位自身編制,因為沒有RISC詳細原始資料不可能產生編譯程式的目標代碼。這樣,第三方公司提供新版本較困難,用戶選擇餘地較小,軟體費用增加了。
大暫存器組使定址複雜,速度降低
RISC系統的一個有爭議的特點是其大暫存器組。大暫存器組有前述優點,但另一方面,也有缺點,大暫存器使定址時間增多,另個,一些編譯器使小暫存器組的使用更為有效。CPU暫存器組到底應多大還有待討論,大暫存器U組還可由高速快取(CACHE)代替。大暫存器組的不足之處可歸結如下:
硬連線控制不靈活
出現錯誤的可能性較大,不易發現和修改錯誤,處理複雜指令也較困難。(4)單字指令不能使用用於全32位地址的直接記憶體定址方式。由於這個原因,一些生產廠家已使一小部分指令具有雙字卡(如INTEL80960),使用這樣的指令由程式設計師決定,他可僅用單字指令寫完整的程式。
發展前景
RISC技術的基本出發點是通過精減機器指令系統來減少硬體設計的複雜程度,提高指令執行速度。儘管RISC的設計思想對計算機結構發生了巨大影響,並獲得了很大成功,但複雜指令集計算機(CISC)技術相對而言則使程式的編制來得更容易些,因此,CISC技術和RISC技術並不是相互孤立的。目前,有一種新的設計思想,它是以提高整個計算機系統的性能為出發點,在結構上吸收了CISC和RISC的優點。如許多CISC設計中採用了RISC技術,美國國家半導休公司的NSC32532微處理器在CISC設計中採用了RISC技術,使指令平均執行時間從原來的6個機器周期降到小於2.4個機器周期,在26MHZ主頻下,運行速度達10一12M1PS。Intel80486和Mot。r。la68040也吸收了RISC設計技術,從而達到每條指令平均執行時間小於2個機器周期,仙童公司的Clipper機是綜合R1SC與CISC技術優點的32位微處理機,其運行速度高達33MIPS。因此,當前設計處理機的兩種主要方法(RISC和ClSC技術)並不是截然分開的,它們是相輔相成的,目前已有人將CISC技術和RISC技術溶合在一起,提出了可寫指令集計算機(WISC)結構構想,並具體規定了集中Rlsc和Clsc優點的策略原則,儘管如此,它仍是建立在RlSC概念筍碑上的一個RISC技犬的進一步發屏。
目前大多數RISC處理器已達到了每個周期執行一條指令的目標(即CPI比率),但這並不是極限,RISC技術中又出現了超級標量和超級流水線技術。超級標量技術就是使微處理器在一個時鐘周期內並行地執行幾條指令,而超級流水線技術則是主流水線段(指令解碼和指令執行)只占一個時鐘周期的一部分,這樣,仍可在一個時鐘周期內同時執行幾條指令Intel8096。就採用了超級標量技術,它能同時執行整數指令和浮點指令.IBM公司的RS/6000也採用的是超級標量結構,處理器包含三個不同的處理部件:定點處理器、浮點處理器、分支處理器,一個時鐘周期可執行四條指令(4IPC),最多可達6IPc。RISc科學家指出,過去那種令人鼓舞的微處理器性能提高過程不大可能繼續下去,今後,Cache的容量及其結構和最佳化編譯器將成為提高計算機性能的關鍵因素。未來發展重點將放在多處理器技術上。