第三章 低功耗嵌入式處理器設計
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 機制。