采用多級指令流水線結構采用流水線技術可使每一時刻都有多條指令重疊執(zhí)行,以減小 CPI 的值,使 CPU 不浪費空周期。實例: Pentium Ⅱ /Pro/Celeron 可同時發(fā)出執(zhí)行五條指令, AMD - K6/K6 - 2 可同時發(fā)出六條指令。機器中使用頻率高的簡單指令及部分復雜指令這樣可減小時鐘周期數(shù)量,提高 CPU 速度,其實質是減小 CPI 下的值實現(xiàn)。實例:選取運算指令、加載、存儲指令和轉移指令作主指令集。采用加載 (Load) 、存儲 (Store) 結構只允許 Load 和 Store 指令執(zhí)行存儲器操作,其余指令均對寄存器操作。實例: Amd - K6/K6 - 2 、 P Ⅱ /Celeron/Pro 均支持對寄存器的直接操作和重新命名,并大大增加通用寄存器的數(shù)量。延遲加載指令和轉移指令由于數(shù)據(jù)從存儲器到寄存器存在二者速度差、轉移指令要進行入口地址的計算,這使 CPU 執(zhí)行速度大大受限,因此, RISC 技術為保證流水線高速運行,在它們之間允許加一條不相關的可立即執(zhí)行的指令,以提高速度。實例:主要體現(xiàn)于預測執(zhí)行、非順序執(zhí)行和數(shù)據(jù)傳輸?shù)确矫妫?Intel P54/55C 不支持,像 K6 - 2 、 P Ⅱ均支持。采用高速緩存 (cache) 結構為保證指令不間斷地傳送給 CPU 運算器, CPU 設置了一定大小的 Cache 以擴展存儲器的帶寬,滿足 CPU 頻繁取指需求,一般有兩個獨立 Cache ,分別存放“指令+數(shù)據(jù)”。實例: P Ⅱ /Celeron:16K + 16K , AMD - K6/K6 - 2 為 32K + 32K , Cyrix M Ⅱ :64K( 實也為 2 個 32K Cache ,此作共享 Cache) , P Ⅱ還加了 L2 Cache,更是大幅提高了 CPU 速度。
RISC的特點是指令及其格式精少,操作和控制簡捷。具體有下列幾個方面 [2] 。精簡指令集RISC結構采用精簡的,長短劃一的指令集,使大多數(shù)的操作獲得了盡可能高的效率。某些在傳統(tǒng)結構中要用多周期指令實現(xiàn)的操作,在RISC結構中,通過機器語言編程,就代之以多條單周期指令了。精簡的指令集大大改善了處理器的性能,并推動了RISC的設計。對于到底精簡到什么程度的問題,沒有一定的回答。將現(xiàn)有RISC系統(tǒng)與CISC系統(tǒng)作一對比,便可見大概。通常,對RISC而言:
指令數(shù)少,不超過128條。
尋址方式少,不超過4種。
指令格式少,不超過4種。
處理關于擴充指令集的建議是非常慎重的,要經(jīng)過認真的權衡,驗證,在看它們是否真正提高計算機的性能。例如,MIPS采用了一條規(guī)則:增加一條指令必須使性能在一定的應用范圍內得到1%的增益,否則這條指令將被拒絕。指令時鐘周期,指令長度相等如果每一條指令要執(zhí)行的任務既簡單又明了,則執(zhí)行每一條指令所的時間可以被壓縮周期數(shù)也可減少。RISC的設計目標是實現(xiàn)一個機器周期執(zhí)行一條指令,使得系統(tǒng)操作更加有效。接近這個目標的技術包括指令流水線及特定的裝/存結構等。典型的指令可包括取指、譯碼、執(zhí)行和存裝果等階段。單周期指可通過讓所有指令為標準長短來實現(xiàn)。標準指令長短應與計算機系統(tǒng)的基本字長相等,通常與系統(tǒng)中數(shù)據(jù)線數(shù)相等。在任何取指周期,完整的單個指令要傳給CPU。例如,如果基字長是32位,且系統(tǒng)總線的數(shù)據(jù)部分是32線,則標準指令長度是32位。要讓所有指令的執(zhí)行時間一致較困難。有些指令,包含簡單的在CPU寄存器上的邏輯操作(清寄存器等),則可容易地在一個CPU時鐘周期內執(zhí)行;其它指令可能包含內存存取(對內存的讀寫、取數(shù)等)或多周期操作(乘、除等),可能無法在單周期內執(zhí)行。這給設計者提出了這樣的要求;讓大多數(shù)經(jīng)常使用的指令得以在一個單周期內執(zhí)行。指令流水線減少執(zhí)行一條指令所需周期數(shù)的方法是重疊執(zhí)行多條指令。指令流水線采用這樣的工作方式:將每條指令的執(zhí)行分為幾個離散部分,然后同時執(zhí)行多條指令。任何指令的取指和執(zhí)行階段占據(jù)相同時間,理想的是一個單周期。這可說是RISC最重要的一條設計原則。所有從內存到CPU執(zhí)行的指令,都遵循一種恒定的流的形式。每條指令都以同樣的步調執(zhí)行,無等待的指令。CPU始終是忙的。達到流水線操作的必要條件是:
標準的,固定長短的指令,它與計算機字長和數(shù)據(jù)線的字長相等。
所有指令的標準執(zhí)行時間,最好在一個單CPU周期內。
例SPARC芯片等采用了取指、譯碼、執(zhí)行和寫入結果四級流水線結構,以最大限度來提高處理器性能。在每一個時鐘周期的頭上,都可以開始執(zhí)行一條新的指令,這就保證了每個機器周期從存貯器平均取出一條新的指令,從而,總體看,大多數(shù)指令能在單周期內實現(xiàn)。指令流水線技術可以比作一條裝配線—指令象是被加工的產(chǎn)品一樣,從一道工序流到下一道工序,一直到它執(zhí)行完為止。因此,指令流水線利用一個等于其流水線深度的因子,來減少指令周期數(shù)是可能的,但這樣的話,要求流水線始終充滿有用指令且沒有任何東西阻礙指令通過流水線,這樣的需求給結構增加了一定的負擔。例如,對于ALU等資源的競爭,阻止了流水線中指令的流動。長短不一的執(zhí)行時間所引起的不良后果更是顯而易見,這也是為什么RISC要定義一個有前面所述特點的指令集的原因。裝入和存數(shù)(LOAD/Store)結構執(zhí)行與內存有關的操作指令,不是要求增加每個周期的時間,就是要求增加指令的周期數(shù),二者必取其一。因為這些指令要計算操作數(shù)的地址,將所需的操作數(shù)從內存中讀出,計算得出結果,再把結果送回內存,所以它們執(zhí)行的時間就長得多。為了消除這種指令的負作用,RISC采用了這樣的裝入和存數(shù)結構:只有裝入(Load)和存數(shù)(Store)指令才去訪間內存,所有其它操作只訪問保存在處理器寄存器中的操作數(shù)。其優(yōu)點在于:
減少訪問內存的次數(shù),降低了對內存帶寬的要求。
將所有的操作限制于只針對寄存器,幫助了指令集的簡化。
取消內存操作可使編釋器優(yōu)化寄存的分配更容易—這種特性減少對內存的存取,同時也減少了每一任務的指令數(shù)。
所有這些都有助于RISC實現(xiàn)的每個周期執(zhí)行一條指令的目標。盡管如此,裝入和存數(shù)指令仍阻礙著IRSC設計目標的實現(xiàn)。用優(yōu)化編譯技術處理裝入指令和分支指令的延遲,有助問題的解決。優(yōu)化編譯技術雖不是專門面向RISC結構的,但優(yōu)化編譯器依賴于RISC結構完成其出色的任務,RISC結構又依賴于優(yōu)化編譯器得到它們更完善的性能。編釋器要能分析數(shù)據(jù)和控制流,并在此基礎上調整指令的執(zhí)行順序,巧妙安排寄存器的用法。前一種作用可減少CPU的空閑時間,后一種作用可以提高寄存器中所保存的數(shù)據(jù)的可再用率,減少訪存次數(shù),縮短數(shù)據(jù)通路的長度。擁有較大寄存器組為了便于實現(xiàn)多數(shù)指令在寄存器之間的操作,即所謂的寄存器到寄存器操作,必須有足夠量的CPU通用寄存器。足量的寄存器使得在隨后操作中需作為操作用的中間結果暫存在CPU寄存器中,因而就減少了對內存的裝入和存數(shù),加快了運行速度。工業(yè)化RISC系統(tǒng)中至少采用32個通用CPU寄存器。采用硬連線控制由于微程序設計給設計者提供的靈活性,許多CISC系統(tǒng)是微程序控制的。不同的指令通常具有不同長度的微程序,這意味著每條指令執(zhí)行的周期數(shù)不一樣,這與所有指令一致的、流線的處理原則相矛盾。但這可由硬連線控制來解決,而且速度會更快。因此RISC應該是硬連接線控制的。當每條指令與一單條微指令有一對一相相符合的關系時可有例外,也就是每個微程序由一單個控制字組成。這種設計可與用硬連線控制一樣快,一樣高效,并使設計者得益于微程序設計的優(yōu)越性。采用硬連線控制,可使RISC系統(tǒng)控制器簡單。設計的簡單又使機器的布局更加合理,使得設計者可以集中精力去優(yōu)化那些剩下的,為數(shù)不多的,但又很關鍵的處理器特性。簡化的結構使芯片上面積資源緊張的狀態(tài)得以緩解,一些對性能至關重要的結構,象大的寄存器元件,轉換查找緩存(TLB)S協(xié)處理器和乘除單元都可以裝在同一塊芯片上。這些附加的資源又使處理器增加了很大的性能優(yōu)勢。事實上,RISC并非一定嚴格地完全具備上述特點,有些稱作RISC型的系統(tǒng)甚至違背了上述某方面。上述特點應被當作一種指導原則來解釋RISC的性質。放寬點講,滿足大部分這些特點的系統(tǒng)就能被看作RISC。