第三章 智慧型 DMA 控制器與 VLIW 處理器的整合
3.1 VLIW 處理器
3.1.1 VLIW 處理器核心
VLIW 架構訊號處理器擁有七級管線架構,七級管線包含程式計數與跳躍判
存器模組、及算數邏輯單元模組,以下分別描述其主要的工作簡述如下:
圖 3-1:VLIW 架構多媒體訊號處理器的組成結構 PC Counter / Branch Protect
Instruction Fetch
Program Memory (external)
Instruction Pre-decoder
Core A Core B
Instruction Decoder Instruction Decoder
Register File Register File
ALU ALU
Smart DMA
RAM_A RAM_B
APB BUS I2S
1. PC Counter/Branch Protect:在硬體架構最上層,目的是把程式計數 器加一,並處理跳躍,最後決定程式計數器的值,並送到下一級指令抓 取(Instruction fetch)。
2. Instruction Fetch:這一級的目的是把程式計數器的值,轉成程式記 憶體的位址,送進下一級的程式記憶體去抓取指令。其中,由於有些指 令在 ALU 級時會需要處理中指令的程式計數器值,所以必須把程式計數 器值一級一級地傳下去,因此,程式計數器值會傳進下一級的暫存器。
在處理跳躍指令時,為了避免浪費跳躍指令發生後一個指令被抓取,設 定兩個訊號做為防止跳躍發生時的指標,用以表示現在的管線是否在 Stall 狀態,決定要不要執行該級動作。
3. Program Memory:將程式記憶體的位址經由硬體最上層的腳位傳到外部 的唯讀記憶體去抓指令,其中位址線為 16-bit,傳回 VLIW 指令為 64-bit。
4. Instruction Pre-decoder : 這一級的目的是把一個 64-bit 的 VLIW 長指令,切割成兩個 32-bit 的指令分別交給下面的兩個處理器核心做 運算。由於整個設計都是朝 IP 化的原則,所以當增加新的 IP 處理核心,
尤其是新增不同類的處理器核心時,本級電路會判斷不同的指令運算適 合什麼樣的核心去處理。指令碼也在此級被抓取,判斷怎樣的指令要交 給哪一個處理核心執行需要指令碼去進行判斷,指令碼的提前抓取也很 方便在下一級的指令解碼器中做作解碼的動作。
5. Instruction Decoder:這一級的目的是把指令依照對應的指令碼去做 解碼,指令中有兩個來源暫存器的位置,一個目的暫存器的位置。這些 位置可以對下一級的暫存器組取得來源運算元並提供未來 ALU 級寫回 的目的位置。內建兩組處理核心,所以也提供了指令去從兩個處理核心 中互相提取對方暫存器組的資料,方便資料的直接交換。由於此處理器
提供智慧型 DMA 一組存取控制暫存器的位址訊號線,以決定智慧型 DMA 的控制參數要寫到哪一個智慧型 DMA 控制暫存器內。
6. Register File : 每個處理核心有 32 個通用暫存器。處理核心 A 設計 有 13 個中斷暫存器來處理外部中斷,暫存器組為 2 讀 1 寫的格式,負 責提供解碼器所解碼出的來源運算元值,並將 ALU 級算出的目的運算元 寫回。在此模組中,有很多連接 ALU 級模組的輸出信號,目的是把這些 ALU 級要用到的信號經由管線級送往 ALU 級中,利用這些信號來完成 Data forwarding 的動作。
7. ALU:本級功能是計算出邏輯或運算值,為了 Data forwarding 的實作,
Data memory 及 Write back 這兩級隱含在 ALU 級內。Data forwarding 的機制是利用前面一級一級傳回的信號實作而成,目的是為了減少 RAW hazard。
除了以上基本的管線模組設計外,還有一些特殊硬體設計需求被強調出來 [16],包含以下五種說明:
1. Bit Reverse:針對 FFT 運算所增加的 memory 定址模式,例如位址(01101) 可被轉成(10110)的位置儲存。
2. 一個指令週期完成乘加運算。
3. Regular Loop Prediction: 數位訊號處理運算中有很多固定次數迴圈 的運算,利用一個良好的跳躍預測(Branch prediction),使處理器不 會有 Control hazard 造成的不必要 Stall。
4. 良好的 Data Forwarding 機制。
5. Condition Branch:預測採用 Prediction-untaken 方法設計。