RISC處理器設計(一)------體系結構的選擇
阿新 • • 發佈:2018-01-22
這樣的 靈活高效 讀取 post 不同 內核 分配 選擇 模式 RISC處理器指令和變量數目非常少但結構復雜,因此RISC處理器可實現更高的並行性。本文設計的RISC處理機的特點如下:
(1)指令簡單且數量較少
通過對程序的靜態指令進行靜態分析,最終只將最常見的指令在RISC處理器中實現,其他指令由編譯器綜合實現。要實現這一特性以及減少諸如數據相關或程序跳轉引起的流水線沖突較少,主要依賴於合適的編譯器和特殊硬件來實現。指令集的簡單也帶來了相對簡單的指令傳送機制,可以減少對存儲器進行指令的讀和寫操作。
(2)格式固定而且指令長度簡短
簡單指令基本上字長是固定的,且剛好是一個處理器字,格式較少。這些指令可以支持高效率的定點控制操作和實現結構簡單的快速流水線,以及高效率的Cache和寄存器堆。但是只能通過編譯器來實現傳統的CISC計算機變字長指令和其他復雜指令的功能。
(3)Load/Store特性
對主存儲器的讀寫,速度慢且價格昂貴。RISC指令僅對處理器片內的寄存器堆進行操作,只有Load/Store指令直接訪問存儲器。除此之外,指令的裝載都來自於主存儲器。這種指令裝載操作在運行Cache的情況下可以大大減少。減少速度慢的存儲器訪問操作,可以使得流水線平滑的運行,從而獲得較高的吞吐率。高效的編譯器可以減少Load/Store指令,並且避免流水線沖突。CISC指令直接將存儲器和寄存器的內容組合起來使用。
(4)流水線
把指令按完成任務的不同分割成等長的時間段來運行。
(5)可消除流水線沖突
通常情況下,當流水線第二級的指令需要讀取寄存器R中的內容,而同時已處於第三級的前一條指令要向存儲器R中寫入執行結果時,就會產生數據相關。數據相關可以通過硬件電路的數據前推機制或編譯器的調整來解決。
由於Load指令訪問主存儲器通常需要超過1個時鐘周期的時間,它的執行結果也不能被後續的指令所使用。通過編譯器調度技術可以消除這種延遲裝載的流水線沖突。
無效的或者錯誤的指令進入了流水線導致的相同情況,在執行分子跳轉指令時也將打亂流水線的平穩執行狀態。通過編譯器對延遲跳轉進行優化,甚至為分子跳轉指令準備Cache,可以達到較高的流水線吞吐率。
(6)高吞吐率
通過靈活高效的指令組合,使得指令的執行時間平均起來小於機器時鐘頻率。
(7)處理器內無微程序
擁有固定格式的簡單指令,使得譯碼的過程僅需要硬件連接,而且邏輯簡單,只用單級就可以實現,以節省執行時間和芯片面積。高效率的編譯器可以通過一個簡單指令序列的執行來代替復雜的指令執行,從而消除微程序。
(8)Cache和寄存器堆
多端口存儲器堆,以及作為主存儲器和處理器之間的中間存儲器的各種片上Cache(指令Cache、通用指令Cache和條件轉移目標Cache),及其合理的替換策略是加速流水線執行的關鍵模塊。它們的使用避免了流水線的沖突,而且大大提高了流水線使用效率。
處理器體系結構的選擇:
(1)動態寄存器模塊
多窗口的概念是基於線索窗口的概念提出的。高達1024個通用寄存器設計成大小固定的模塊。在程序執行中,這些寄存器模塊動態地按照需要分配。沒有了Berkerley RISC處理器中的循環緩沖器,可以大大減少寄存器存儲和讀取操作。這種技術的優點還包括:處理程序流變換和處理中斷的靈活性。
(2)偽哈佛結構和通用指令Cache
在處理器內部使用分立的指令和數據總線,然而,從外部看,處理器仍然保持一套32位的總線和另一套用於給出地址的總線。對於這樣的“偽哈佛”結構,集成一個片內的指令Cache是很有意義的。這樣做的優點在於,控制邏輯與數據Cache相比要容易的多,而且通過提高並行度可以提升處理器性能。
在這種指令Cache中,並不是將每一個存儲器對應地址中的變量都保存在其中,而只是將哪些有Load/Store指令訪存導致總線沖突的指令存儲到Cache中。當下一次再訪問這樣一條指令時,IF級就從Cache中取出指令,而不需要等待。Cache的這一特性非常簡單高效,在提高了處理器性能的同時,還沒有增加太多額外的電路。將多種模式的Cache組合起來,就構成了通用指令Cache—MPC。
(3)條件轉移目標Cache
在地址總線上,用於存儲跳轉指令和跳轉目標地址,以及延遲指令的Cache。稱之為跳轉目的Cache。當再次執行這樣的跳轉時,對延遲指令的裝載即可以被忽略。在性能提高的同時,需要增加復雜的控制邏輯。
(4)中斷、虛擬地址和內核/用戶模式
在中斷發生後流水線的狀態必須被保存下來。中斷有不同的優先級別。中斷機制是處理器運行所必須的。中斷是虛擬地址以及處理器內核/用戶模式的基礎。虛擬地址通常需要在Cache中存儲虛擬的而不是物理的地址,而且,需要外部存儲器的控制單元對於存儲器表和觸發的中斷進行管理。
內核/用戶模式區別在於,在內核模式下,所有的指令集都有效;在用戶模式下,僅有有限的地址單元可用,並且不允許Cache操作指令的執行。
(5)超標量流水線和更高效存儲器管理
現代的存儲器部分通常包含有一個快速的爆發模式,用於加速平均數據傳輸的速度。這需要高效的存儲器接口。這使得存儲器在單時鐘周期內一次可以裝載兩條指令。這樣,就需要並行的兩個流水級共同執行指令。
(6)高效的ALU
除了執行時間主要取決於訪存時延的取值級,ALU部件的執行也是流水線的瓶頸。因此需要更快速的ALU,還需要在ALU中加入高性能的桶形位移器。
(7)異步流水線
流水線的每一級執行時間在每一級之間各不相同,而且在不同的應用條件下,每一級的執行時間也各不相同。同步流水線控制器運行時需要等待運算最慢的時間執行完成,而如果采用與時鐘無關的事件驅動機制進行控制的異步流水線控制機,可以大大提高性能。
RISC處理器設計(一)------體系結構的選擇