• 沒有找到結果。

第一章 序論

1.2 論文架構

本篇論文中,第二章介紹低功率消耗相位式資料快取記憶體控制器及管線設 計,從硬體架構到效能測試有詳細的說明。第三章介紹快取記憶體控制器其平台 設計,從嵌入式處理器架構到開發工具製作、低功耗設計的整合和測試程式驗證。

第四章介紹晶片實現的過程,包含模擬驗證方法及結果,晶片製作。最後,在第 五章做總論。

REG

圖2-2 為低功率消耗相位式快取記憶體控制器 MEM1 與 MEM2 級的架構圖,

將ALU 運算的記憶體位址分為 Tag 部分及 index 部分,依照 index 從 Tag cache 讀 取出每一個Way 集合的 Tag 區塊數值,再將其與記憶體位址中的 Tag 部份做比 對,然後將命中的訊息作為Data cache 驅動與否的判斷,以圖為例,在 MEM2 級只有Way1 的 Data cache 會被驅動,其餘則會被關閉,降低功率消耗。

圖2-3 為高效能之低功率消耗快取記憶體控制器與管線的架構圖。此控制器 仿照相位式快取記憶體分為Tag 讀取比對相位及資料讀取相位,且將 Tag 讀取比 對相位提前至管線的前一級跟 ALU 平行去執行判斷,然後在 WB/MEM 級執行 命中的區塊資料存取,跟圖2-1(a)相位式快取記憶體管線比較,可以將快取記憶 體存取時間點提前,得到較高的效能。

圖2-4 為高效能相位式快取記憶體控制器在 ALU 級的改良架構圖,在此級 我們就依照REG 級得到的 index 數值讀取出 Tag cache 中每一個 Way 集合 的 Tag 數值跟ALU 單元在此級運算出來的記憶體位址做比對,判斷出命中的集合區塊 並在 WB/MEM2 級驅動之,其餘失誤的區塊就會被關閉,達到相位式快取記憶 體相同低功率消耗效果。

雖然本設計在相位式快取記憶體的處理時間上,仍然需要兩個週期才能分別 完成Tag 存取比對及資料存取,但在管線的處理流線上,如圖 2-5 所示,經由管 線的提早執行快取的步驟,可以跟傳統快取處理器達到相同的時間點上存取的目 標,因此不會像改良前的相位式快取記憶體般,因為需要多花費一個週期才能得 到所要的資料,會造成管線暫停,降低處理速度。除此之外,因為提早運作 L1 快取的 Tag 比對得到的資訊,在命中時可以去除非必要執行的功率消耗,若判 別為失誤時,更能提早處理下一級的記憶體存取,提高效能。因此若以L1 快取 記憶體需時 1-cycle,主要記憶體需時 4-cycles 為例,在我們提出的設計架構下,

在 L1 失誤的情形下,可以將總記憶體存取所需時間從傳統的 5-cycles 改善至 4- cycles 的處理時間,進一步提升效能。

圖 2-5 :快取記憶體執行相位比較圖

因此為了在ALU 級執行 Tag cache 的存取,我們必須要 ALU 級前一級就獲 得Tag 存取所需要的資訊,也就是快取記憶體位址,於是本管線在 REG 級即須 計算出快取記憶體位址,但原本應該是ALU 級才產生的記憶體位址若要在 REG 級就計算出,勢必需要再管線上做些改變才能達到此目標。

2.1.2 快取記憶體控制器及高效能存取管線之原理與演算法

為了達到以上功能,本設計需要在 ALU 級之前獲得存取快取所需的位址資 訊,依照記憶體存取指令分為直接定址、間接定址、暫存器定址等等模式去分析,

隨著定址模式的不同以及指令集架構的設定決定而有所不同,若採用簡單定址模 式如暫存器定址的指令集,因為記憶體存取指令不需經過運算,即可直接將暫存 器數值做為記憶體位址,若是採用此指令集架構,則無須對處理器管線作任何改 變即可提早獲得記憶體位址,實現本設計要求。

在此本設計利用記憶體位址計算簡單的特性,如表2-1,只需進行 Reg+direct 運算或者直接是 Reg 或者 direct 的數值來計算記憶體位址,因為不需進行複雜 的運算,因此可以將此步驟提前至REG 級運算,針對特定記憶體指令增加硬體

求。

表2-1 : 各種定址模式範例、意義及使用頻率

位址模式 範例指令 意義 使用頻率百分比

立即值 Load R4,#3 R4<-Mem[3] 39%(gcc),43%(Tex) 位移 Load R4,3(R1) R4<-Mem[R1+3] 40%(gcc),32%(Tex)

暫存器間接 Load R4,(R1) R4<-Mem[R1] 11%(gcc),24%(Tex) 如上表 2-1 所示,分別顯示位址模式及其意義和使用頻率,從頻率上可以看 出此三種定址模式在記憶體指令中使用的多寡,可以包含75%~99%的記憶體指 令,是每一個架構應該具有的定址模式[5]。

因此本設計針對記憶體的存取指令設計,利用其運算簡單的特性,來改善相 位式快取記憶體架構,在指令集中可以使用在此三大類定址模式,來提早執行記 憶體位址的運算,達成我們的需求。

演算法流程如圖2-6 所示,本圖架構以五級管線為例,分為 Fetch、Decoder、

Register、ALU/Tag cache、WB/Data cache 五級,一開始指令從 Fetch 級輸出 Program Count 值至指令記憶體讀取出指令後,在 Decoder 級除了判別指令運算 碼及其指令組成位元分佈,也針對記憶體相館的指令作判斷,輸出訊號給 REG 級做不同的處理。到了REG 級會依造指令解碼產生的暫存器碼讀取相對的暫存 器數值,讀取完畢後,若是記憶體相關指令會依照解碼產生的訊息對讀取出來的 暫存器數值做不同的運算,有可能是暫存器加上暫存器或者暫存器加上直接定值 又或者是直接定值,產生出快取記憶體位址供Tag 快取記憶體做為存取所需要的 訊息。在ALU/Tag cache 級會依照指令的型態做不同的運算,若非記憶體相關的 指令,則經由ALU 做算數(arithmetic)或邏輯(logic)運算即可,若是記憶體相關指 令,ALU 單元負責運算出完整的記憶體位址與快取記憶體讀取出來的 Tag 值做 比對,將命中、失誤的訊息傳到下一級。而在WB/Data cache 則處理 REG 的寫 回或者命中的快取記憶體資料存取。

圖 2-6: 高效能低功率消耗相位式快取記憶體演算法

2.1.3 相位式快取記憶體及高效能存取管線之分析及改善

本設計要達到降低功率消耗又能兼顧效能的設計,需要對管線作出些改變,

雖然能符合我們要求的目標,但也需要去克服一些困難以及必須犧牲的方面。

從益處、壞處分別去分析本設計 益處:

1. 降低功率消耗: 使用相位式快取記憶體,有效降低關聯性記憶體造成的 功率浪費

2. 提高效能: 改善相位式快取記憶體造成的管線暫停以及在 L1 快取記憶 體失誤發生時,提早處理下一級之記憶體單元,降低總處理週期

3. 設計單純不複雜: 不需使用其他高速元件,不造成額外負擔,只增加約 6~7%左右的管線硬體成本

„ Algorithm

Instruction Decoder:

Decode the instruction and Detect cache access instruction

Register File:

Get the Rs,Rt register value/

Calculate cache

access

ALU:

Get memory address

Cache Tag Access

W B / Cache Data Access

address : index value

=?

way0 tag way1

Memory address Enable

Hit way

Rs, Rt value

壞處:

1. Critical path :對管線 REG 級增加計算流程,提高此管線級成為 Critical path 的風險,有可能造成時脈降低

2. Data Hazard : 需要在 REG 級使用暫存器的數值計算記憶體位址,若與上 一指令有資料相依,會造成資料危障

3. 只能改善相位式資料快取記憶體的效能: 只能改善資料快取記憶體造成 的管線暫停,對指令快取記憶體沒有效能改善。

以下將針對益處壞處的部份做出分析及改善方法

首先針對此設計對管線的改變,造成的問題,如Critical path、Data Hazard,

將在此小節,針對問題提出改善的方法,將傷害降到最低

z Critical path 部分

本設計需在管線中加入計算單元來提早計算此記憶體位址,可能是單純的加 法運算,來處理的記憶體位此的計算,才能提供ALU 級時的 Tag 快取記憶體存 取,因此本設計在REG 級中,在讀取完暫存器數值之後,加入加法器來做記憶 體位址計算,這樣就能在ALU 級前獲得所需的記憶體位址,但加入此加法器勢 必會對原本的管線產生影響,增加此管線級成為critical path 的風險。

考量到不希望因為增加的計算負擔造成此級成為critical path ,也就是有可能 降低處理器時脈的風險,本設計也提出許多對應的方法:將加法器所需要處理的 位元數盡可能降到最低,這樣就能將REG 級所增加的時間不至於太多,超過原 本的critical path(ALU 級)。

記憶體位址分成兩部分,分別為Tag、Index 部分,如圖 2-7 所示,Tag 部分 用來比對判斷關聯式記憶體中是否有命中的主記憶體中的資料,Index 部分用來 讀取快取記憶體的位址中的資料。傳統的快取記憶體會一次擷取整段記憶體位址 來運作,使用記憶體位址中Index 讀出關聯式記憶體中的資料,在將這些資料跟 計憶體位址中的Tag 部份做比對,來判斷命中與否。

因為讀取快取記憶體中的Tag 或資料只需要 Index 數值即可,所以為了降低 REG 級中加入的運算增加時間造成 critical path 的風險,所以在 REG 級中只去計 算記憶體位址中的Index 數值也就是較低的位元部份,大約可以減少一半的加法 時間,將增加的時間負擔降到最低。其餘的記憶體位址則在ALU 運算出完整的 數值,以供利用。

圖 2-7 : 512 block 之集合關聯式記憶體位址組成

本設計以 TSMC 0.18um cell-base 製程實作,經 Cadence tools 加入 time constrain 模擬結果分析時脈,結果如圖 2-8 顯示,左邊為 ALU 級的最長週期、

右邊為REG 級的最長周期,最長周期仍是以 ALU 級的運算為主,REG 級仍沒 有成為critical path ,並沒有造成時脈上的降低,証明其實作上是可行的。

REG 級因為增加運算及選擇,造成 REG 級的處理週期增加,但可以選擇 Critical path 極大的處理器,例如 DSP,因為要在 1 個週期完成乘加,增加效能,

所以此時REG 級加入加法器也不會超過 DSP 的 critical path ,所以也不會對處 理器最高時脈產生影響。

因為本設計會隨著處理器的管線設計,架構,處理器應用需求,而有所不同,

在此不詳加考慮、討論,隨著處理器設計者去抉擇。本論文以實驗室處理器驗證 以第一種方法,即可解決此問題。

Index

32 9 8 0

Tag

圖 2-8 critical path 時間模擬結果

圖 2-8 critical path 時間模擬結果

相關文件