第二章 相位式快取記憶體之高效能管線設計
2.2 相位式快取記憶體之高效能存取管線之效能分析
2.2.3 高效能之記憶體存取管線設計分析
•Phased cache with pipeline modified
40% power &100% time
ALU/MEM WB
•Conventional cache with pipeline modified
100% power & 96% time
ALU/MEM WB/MEM2
•Phased cache with pipeline modified
40% power &100% time
ALU/MEM WB
•Conventional cache with pipeline modified
100% power & 96% time
從優 Sentry tag Cache
第三章 低功耗嵌入式處理器設計
低功率消耗相位式快取記憶體控制器及其管線設計硬體地位上不能單獨存 在運作,需搭配一個處理器設計。因此,本論文也製作出一個32 位元嵌入式處 理器核心,以呈現完整的應用。以下章節將說明此處理器的特性、指令集、軟體 開發環境及可搭配的其他設計作一介紹。
3.1 低功耗嵌入式處理器架構
3.1.1 低功耗嵌入式處理器核心
此處理器以低功耗為設計考量方向,主體以RISC 架構為主,分別增加指令 快取記憶體、資料快取記憶體控制器及匯流排編碼解碼器來降低處理器功率消耗 的主要部份: 快取記憶體及匯流排傳輸,指令快取記憶體設計為具有使用者可調 性主從式指令快取記憶體控制器[13],資料快取記憶體設計為本設計架構,匯流 排編碼解碼器為功率感知之匯流排編碼解碼器設計[14]。希望能結合各自降低功 率消耗的設計理念發展成一顆以低功耗為訴求的嵌入式處理器。
本論文設計的低功率消耗嵌入式處理器擁有七級管線架構的設計[15]。當一 個指令透過程式計數器(Program counter),指令快取控制、讀取,將指令抓取 進入處理器內部後,會先對該指令進行解碼,接著到暫存器提取所需要的資料到 ALU 中執行,最後將結果存回暫存器或記憶體中。記憶體周邊裝置的存取透過 快取控制處理器來規劃,周邊裝置(或 IP)可利用標準的 APB 規格掛上匯流排,
將外部的取樣訊號透過 APB 匯流排,將資料存取於內部快取記憶體及外部主要 記憶體之間,或內部運算的結果送到周邊裝置上輸出,架構如圖3-1。
圖 3-1 :處理器組成架構圖
圖3-2 :處理管線流程圖
Instruction Fetch /
Program Counter / Branch Prediction MS-Cache
Instruction Decoder
Register File/ Cache address generator
ALU
Cache tag comparison
W B / Cache Data Access
Main memory
BUS
Load Instruction Fetch /
Program Counter / Branch Prediction MS-Cache
Instruction Decoder
Register File/ Cache address generator
ALU
Cache tag comparison
W B / Cache Data Access
Main memory
BUS
Load
BUS Encoder/Decoder IO
圖3-2 簡介此處理器管線的流程,此處理器擁有七級管線架構,七級管線包 含程式計數/分支預測/指令抓取模組、指令快取記憶體模組(2 級)、指令解碼模組、
暫存器模組、算數邏輯單元模組/快取 Tag 級以及寫回/快取資料級,以下分別描 述其主要的工作簡述如下:
Program Counter/Branch Predict/ Instruction Fetch:在硬體架構最上層,目的 是把程式計數器加一,並處理跳躍,最後決定程式計數器的值。再把程式計數器 的值,轉成程式記憶體的位址,送進指令快取記憶體去抓取指令。其中,由於有 些指令在ALU 級時會需要處理指令中的程式計數器值,所以必須把程式計數器 值一級一級地傳下去,因此,程式計數器值會傳進下一級的暫存器。在處理跳躍 指令時,為了避免浪費跳躍指令發生後一個指令被抓取,設定兩個訊號做為防止 跳躍發生時的指標,用以表示現在的管線是否在 Stall 狀態,決定要不要執行該 級動作。
MS-I-cache : 依照 PC 值讀取相對應的資料,若發生失誤,則至主記憶體搬 移數筆資料取代。採用相位式設計,先經過Tag 存取比對,再讀取命中的資料。
並針對跳躍的指令加強,提高命中率。
Instruction Decoder:這一級的目的是把指令依照對應的指令碼去做解碼,指 令中有兩個來源暫存器的位置,一個目的暫存器的位置。這些位置可以對下一級 的暫存器組取得來源運算元並提供未來ALU 級寫回的目的位置。
Register File : 處理核心有 16 個通用暫存器。處理核心有額外的 16 個中斷 暫存器來處理外部中斷、內部優先權中斷、與其他IP 狀態設定所使用的暫存器,
暫存器組為 2 讀 1 寫的格式,負責提供解碼器所解碼出的來源運算元值,並將 ALU 級算出的目的運算元寫回。在此模組中,有很多連接 ALU 級模組的輸出信 號,目的是把這些 ALU 級要用到的信號經由管線級送往 ALU 級中,利用這些 信號來完成Data forwarding 的動作。此外針對記憶體相關指令,特別計算其記憶
ALU/ Tag Cache access:本級功能是計算出邏輯或運算值,為了 Data forwarding 的實作,Data memory 及 Write back 這兩級隱含在 ALU 級內。Data forwarding 的機制是利用前面一級一級傳回的信號實作而成,目的是為了減少 RAW hazard。此級也平行記憶體相關指令,讀取 Tag cache 的數值跟計憶體位址 做比對,判別快取命中失誤等訊息。
Write-Back/ Data Cache access:由 ALU 或 Memory 寫回 Reg File 的動作,或 由ALU 寫入 cache 及 Memory。若為記憶體相關指令則依命中的訊息驅動集合的 資料存取。
除了以上基本的管線模組設計外,還有一些特殊硬體設計需求被強調出來,
包含以下五種說明:
SIMD support (Single-Instruction stream ,Multiple-Data stream):
支援8/16 bit SIMD 指令集架構,加速特定多媒體運算,如 8-bit 圖形 運算,16bit 語音運算。
Bit Reverse:針對 FFT 運算所增加的 memory 定址模式[16],例如位址
(01101)可被轉成(10110)的位置儲存。一個指令週期完成乘加運算。
良好的 Data Forwarding 機制。
Condition Branch:預測採用 Prediction-untaken 方法設計。
3.1.2 低功耗嵌入式處理器指令集架構
處理器指令集共分五大類:資料搬移、算數邏輯運算、跳躍指令、SIMD 指 令及其他類指令,列表如下:
處理器共提供Direct、Reg to Reg、Indirect、Displacement (base add)、Index,
Bit-Reverse 六大類的定址模式。
表 3-1 :資料搬移指令列表 資料搬移指令 :
Instruction Op code Example Mode
MOVRC 000001 MOV rd,data Direct MOVRR 000010 MOV rd,rs Reg-Reg MOVRM 000011 MOV rd,address Direct MOVMR 000100 MOV address,rs Direct MOVMRR 000101 MOV @rs2,rs Indirect MOVRRM 000110 MOV rd,@rs Indirect MOVARR 100010 MOV rd(a),rs(b) Reg-Reg
MOVB 101111 MOVB rd,base(rs) Displacement MOVI 110000 MOVI rd,rs1(rs2) Index
MOVREVRM 101010 MOV rd,address Bit Reverse MOVREVMR 101011 MOV address,rs Bit Reverse MOVREVMRR 101100 MOV @rs2,rs Bit Reverse MOVREVRRM 101101 MOV rd,@rs Bit Reverse
表 3-2:算數邏輯運算指令列表 算數與邏輯運算指令 :
Instruction Op code Example
ADDRR 001000 ADD rd,rs1,rs2 SUBRR 001010 SUB rd,rs1,rs2 MULRR 001100 MUL rd,rs1,rs2 ADDRC 000111 ADD rd, data
SUBRC 001001 SUB rd, data MULRC 001011 MUL rd, data
MACR 100111 MAC rd,rs1,rs2
MACC 110001 MAC rd,rs1,data
ANDRR 001110 AND rd,rs1,rs2
ORRR 001111 OR rd,rs1,rs2
XORRR 010000 XOR rd,rs1,rs2
INVR 010001 INV rd,rs
表 3-3:跳躍指令列表 跳躍指令 :
Instruction Op code Example
JMP 010010 JMP address
JMPR 010011 JMP @rs
JBE 010100 JBE rs1,address
JNE 010101 JNE rs1,address
JMB 010110 JMB rs1,address
JLB 010111 JLB rs1,address
JBER 011000 JBER rs1,rs2,address JNER 011001 JNBR rs1,rs2,address JMBR 011010 JMBR rs1,rs2,address JLBR 011011 JLBR rs1,rs2,address
CALL 100011 CALL address
RET 011110 RET
Address 的部分也可以是 Label,組譯器會自動轉換成對應的位址。
表 3-4:SIMD 指令列表 SIMD 指令 :
Instruction Op code Example
MOVHLRC 110001 MOVHLRC rd, direct MOVHURC 110010 MOVHURC rd, direct
ADDHRR 110011 ADDHRR rd,rs1,rs2 SUBHRR 110100 SUBHRR rd,rs1,rs2 MULHRR 110101 MULHRR rd,rs1,rs2 MACHR 100110 MACHR rd,rs1,rs2
ANDHRR 110110 ANDHRR rd,rs1,rs2 ORHRR 110111 ORHRR rd,rs1,rs2
XORHRR 111000 XORHRR rd,rs1,rs2 ADDBRR 111001 ADDBRR rd,rs1,rs2
SUBBRR 111010 SUBBRR rd,rs1,rs2 MULBRR 111011 MULBRR rd,rs1,rs2 ANDBRR 111100 ANDBRR rd,rs1,rs2 ORBRR 111101 ORBRR rd,rs1,rs2 XORBRR 111110 XORBRR rd,rs1,rs2
SIMD 指令集分成8bit 以 B 表示,16bit 以 H 表示,分別對暫存器中的 32bit 資料,以每8bit or 16bit 做運算,可以加速 8bit 及 16bit 的運算。
例如MACHR Rd , RA, RB 指令,圖 3-3 顯示此指令的乘加運算,善用 32 位元 的暫存器,一個指令周期完成原本需要兩個週期的運算:
Rd = ACC = ACC + A1*B1 + A2*B2
圖3-3 : MACHR 指令運算 表 3-5:其他指令列表
其他指令:
Instruction Op code Example
SET 011100 SET A,rs
INTOK 011101 INTOK
SHR 100000 SHR rs
SHL 100001 SHL rs
ENDC 011111 ENDC
SET 指令是當嵌入式處理器沒有連接匯流排時,利用這指令可以設定兩個 16-bit 的I/O port ,與外界溝通;INTOK 是處理軟體中斷的指令,利用這指令可發出 軟體中斷;SHR 將 rs 向右移一位元;SHL 將 rs 向左移一位元。。
A1(16)
A2(16) X B2(16) X
B1(16)
ACC (32)
+ +
Reg A
Reg B
3.2 功率感知之匯流排編碼解碼器
3.2.1 功率感知之匯流排編碼解碼器原理
本處理器加入低功率消耗匯流排編碼器[14],希望能經由此編碼器降低對外 部資料、位址傳輸耗費的大量位元轉換功率消耗(switch activity power)。此編碼 器可針對不同的資料流特性,自動採取較佳的編碼方式,使之編碼具備廣泛使用 在各種資料傳輸皆能有效的降低匯流排傳輸的位元轉換功率消耗,且無論在編碼 器或者解碼器所付出的硬體成本只需整顆處理器1%左右成本,就可進一步加強 本快取記憶體設計與外部記憶體溝通、傳輸資料的傳輸功率消耗。
如圖3-4 所示,資料傳輸前會先跟前一筆傳輸資料的位元作比對,也包括控 制訊號的比對,統計使用各演算法何者有較低的變化率,其演算法可以綜合各種 編碼方式,取用較常使用的編碼作為比對選擇之ㄧ,以達到較佳的編碼效果。
圖3-4 匯流排編碼架構流程圖
Total logic diagram Input
Data(8bit) Encoder 1
Encoder 2
Num INV
XOR XNOR
A
H Q1
Q8
ENB 暫存器
Selector Value n
Value n-1
Output
Data(4bit) Data(4bit)
Output
3.2.2 功率感知之匯流排編碼解碼器效果
圖3-5 : 多媒體傳輸編碼效果比較 (SA :Switch Activity)
經過多媒體語音及圖像資料傳輸模擬,如圖3-5,透過此編碼演算法的編解 碼動作,可以有效降低平均20%左右的匯流排傳輸功率消耗,並且勝過其他編碼 演算法。
3.3 具有使用者可調性主從式指令快取記憶體控制器
如圖1-1 所示,指令快取記憶體佔全體處理器功率消耗將近 25%左右,因此 在本處理器指令快取記憶體內,加入相位式的設計,在影響效能不大的情形下達 到低功耗效果。下面將針對該快取記憶體控制器的功能,架構,使用流程,作一 簡介,詳細內容請參考 [13]:具有使用者可調性主從式指令快取記憶體控制器 之多核嵌入式處理器。
3.3.1 主從式快取記憶體控制器原理
圖 3-7 顯示具有使用者可調性主從式指令快取記憶體控制器的演算法流程,
此設計藉由切換主副快取記憶體集合,能有效降低指令快取存取在大幅位址跳躍 情形下的失誤率及事先存取的功能提高命中率。除此之外,本指令快取記憶體設 計也加入相位式快取記憶體設計,達到低功率消耗效果。
0 10 20 30 40
SA reduction(%)
Pop music(2.68Mb WAV)
Classic music(3.81Mb WAV)
mobile pic(352x288) stefan pic(352x288) table pic(352x288)
Audio & Image data simulation
BI XOR XNOR Propose Dbm+pbm
圖 3-7 : 主從式快取記憶體演算法
3.3.2 主從式快取記憶體效果
圖3-8:主從式快取記憶體的效能提升示意圖。
CR_Ratio :有返回動作的跳躍在程式跳躍指令中佔的比例 Eff_Improve:快取記憶體架構整體的效能提升參數定義名稱為
加入主從式快取記憶體設計,依照不同的指令跳躍比例,提高指令快取記憶 體的命中率,進而提升整體效能,如圖3-8 所示。
另外在此設計中加入相位式快取記憶體的概念,先經過 Tag 比對再存取命 中資料,可以達到同上一章節提到的降低功率消耗效果,在此可降低約44%左右 的功率消耗(2-Way)。
3.4 軟體開發環境
3.4.1 組譯器
硬體設計外,處理器的軟體支援是相當重要,為此發展了圖形化介面的組譯 器(Assembler),提供機械碼(Machine code)的轉譯、程式記憶體(Program rom)
的產生、及錯誤資訊(Debug information),讓使用者能夠利用以上資訊來除錯 及產生Testbench,如圖 3-9。
圖 3-9:組譯器(Assembler)流程圖
圖 3-9:組譯器(Assembler)流程圖