CH-01 S+core7 的體系結構
主講者:杜勇進
S+core7 簡介
S+core7 微處理器是採用凌陽指令集架構
(Sunplus ISA)的32 位的RISC 處理器,該微 處理器架構支援32 位/16 位混合指令模式以及並 行條件執行(正在申請專利保護)
從而提高了代碼密度、性能,使S+core7 內核得 到了廣泛的應用。在S+core7 微處理器中採用了 AMBA匯流排,為SOC 集成、擴展協同處理器和 用戶介面提供了靈活性,S+core7 使用SJTAG 技 術使程式的測試和除錯更加有效。
S+core7 微處理器特徵
支援32 位與16 位混合指令模式
支援並行條件執行
提供軟體安全設計
採用哈佛(Harvard)結構,包含I-Cache
(4K)和D-Cache(4K)
採用Fixed-MMU(固定對映模式)
採用AMBA 匯流排規格,可以方便的實現 Soc 集成63 個硬體中斷,2 個軟體中斷,
中斷採用中斷向量採用SJTAG 協定
資料類型
處理器模式
1. 用戶模式
用於執行應用程式或作業系統程式。通常情況下,處理 器均處於用戶模式,直到發生異常,
處理器切換到核心模式。處理器處於用戶模式時,用戶 不能存取被系統保護的資源。
2. 核心模式
該模式是作業系統專用的模式。當處理器透過異常進入 核心模式後將一直處於該模式,直到一條從異常中返回 的指令(RTE,Return From Exception)被執行。
3. 除錯模式
該模式用於用戶除錯階段。在該模式下,用戶程式可以 完全存取用戶模式和核心模式下的暫存器,以及其他一
內部暫存器
32 個通用暫存器(GPR)
2 個Custom Engine 暫存器(CEH、
CEL)
3 個特殊功能暫存器
Sr0:迴圈計數暫存器(CNT)
Sr1:裝載合併暫存器(LCR)
Sr2:存儲合併暫存器(SCR)
19 個系統控制暫存器
3 個除錯控制暫存器
S+core7 內核暫存器集
通用暫存器(GPR)
S+core7 處理器有32 個32 位的通用暫存 器(r0~r31)。32 位指令模式下,所有這 些通用暫存器均可以被存取。由於指令編碼 的限制,16 位指令模式下,只有r0~r15 可以被存取。在跳越/分支或鏈接指令中,
r3 暫存器被用作鏈接暫存器,用於保存下 一條指令位址。
通用暫存器
Custom Engine 暫存器(CEH/CEL)
Custom Engine 暫存器包括CEH 和CEL 兩個暫存器,用來存儲乘法/除法的運算結 果。乘法運算完成後,雙字的運算結果的高 字被放到CEH 暫存器中,低字被放到CEL 暫存器中。除法運算完成後,餘數放到CEH 暫存器中,商放到CEL 暫存器中。
特殊功能暫存器
S+core7 處理器有3 個特殊功能暫存器:
CNT(Sr0)、LCR(Sr1)、SCR(Sr2)。
CNT 暫存器是一個32 位暫存器,可用來作迴圈計 數。當執行特定的分支指令時,計數減一。例如,
執行bcnz 分支指令時,如果CNT 暫存器中的值不 為零,CNT 暫存器中的值將減1,程式跳越到目標 位址;如果CNT 暫存器中的值為零,則bcnz 指令 將被視為nop 指令,CNT 暫存器中的值保持不
變。
LCR 暫存器和SCR 暫存器則是用於存取不對齊的 Load 和Store 指令操作的。
控制暫存器
程式狀態暫存器(PSR)
程式狀態暫存器用於指示協同處理器是否可
用,中斷遮罩位、大小端及保存處理器的模 式等。
條件暫存器(Condition)
條件暫存器指示當前程式運行是否出現溢 出、進位(借位)、零旗標、負旗標及並行 條件執行旗標(T),分支跳越指令就是根 據這些旗標位元判斷程式的流向。
異常原因暫存器
(ECR - Exception Cause
Register)
異常原因暫存器指示了引起異常的原因。
異常向量暫存器
(EXCPVec - Exception Vector
Register)
異常向量暫存器保存有所有異常向量位址的 基底位址,b0 位指示向量位址的偏移模式 選擇位,選擇偏移0x04 還是0x10,可以 計算出異常向量的位址。
Cache 控制暫存器
(CCR - Cache Control Register)
Cache 控制器控制Cache 的相關操作。
異常程式計數器
(EPC - Exception Program
Counter)
異常程式計數器保存程式發生異常時的 PC 程式指標及發生異常時的指令模式。
異常
S+core7 內核最多可以處理80 個異常,以 S+core7 內核構成的晶片具有強大的中斷 處理能力。
異常處理流程
S+core7 微處理器在每執行一條程式前先判斷是否有重設 請求,如果有重設請求,會初始化程式狀態暫存器
(PSR)、條件暫存器(Condition)、異常向量暫存器
(EXCPvec)、CCR 暫存器以及程式計數暫存器PC;如果 沒有重設請求,會執行下一條指令,如果有異常請求,會將 相關暫存器進行保存後轉入異常程式處理;如果沒有異常請 求,處理器直接判斷是否有重設請求等重複這個過程。
根據異常的優先順序,所有異常均在管線的M 階段
(Memory Stage)被識別處理。在執行異常處理後,執行 RTE 指令可以使程式從異常處理中返回。執行RTE 指令
後,PC 指標將指向EPC 暫存器中保存的位址,且部分PSR 暫存器或條件暫存器的內容將被右移(彈出堆疊),CPU 即從EPC 暫存器保存的位址處執行程式。
異常優先順序
緩衝簡介(Cache)
S+core77 處理器的主頻最高達到162MHz,而主記憶體操作 用動態記憶體(DRAM),其存儲週期僅為100ns~200ns。這樣,如果指令和資料都存儲在主記憶體中,主記憶體的速度 將會嚴重制約整個系統的性能。高速緩衝記憶體(Cache)和 寫緩衝區(Write buffers)位於主記憶體和CPU 之間,可以 大大提高存儲系統的性能。Cache 是一塊位址可以改變的高速 的記憶體空間,目的在於加快記憶體存取的速度。將Cache 分 成若干塊,Cache-line 是使用Cache 的最小存儲單元。當 CPU 讀取資料或者指令時,如果當前cache line 中沒有保存 這些資料,cache line 會將這些資料載入。如果在cache line 載入其他位址的資料之前,CPU存取相同的資料,那麼cache 可以提供記憶體存取。S+core7 處理器支援2 種獨立的
Cache,指令Cache(I-Cache)和資料Cache(D-
Cache)。這種獨立的Cache 結構可使指令和資料同時得到處 理。而I-Cache 和D-Cache 均是使用虛擬位址來索引的
(virtual indexed),用實體位址來標識的(physically tagged)
指令Cache
I-Cache 特性:
2 路組相聯的Cache 結構
Cache 的大小是4K bytes
Cache-line 的大小是4Words
採用讀操作分配策略
提供使一個Cache-line 無效的命令(虛擬位址模式下)
提供使整個Cache 內容無效的命令(虛擬位址模式下)
提供預取一個Cache-line 的命令(虛擬位址模式下)
提供預取和“Lock"一個Cache-line 的命令(虛擬位址模式 下)
在內核和I-Cache 控制器之間有指令預取請求匯流排和I- Cache 請求匯流排
取指操作時提供精確匯流排錯誤異常(precise bus error exception)處理器內核可以拒絕I-Cache 設備的當前和前一 指令請求資料Cache
2 路組相聯的Cache 結構
4K bytes 的Cache 大小
4 Words 的Cache line 大小
讀操作分配策略
提供使Cache line 無效的命令
提供預取Cache line 的命令
提供預取並鎖定Cache line 的命令
Load 操作時提供精確的匯流排異常;若寫緩衝器 是禁用的,Store 操作時也提供精確的匯流排異常
若寫緩衝器是允許的,Store 操作時則提供不精確
LIM-Local Instruction Memory
LIM(指令記憶體)系統包括位於I-Cache 控制器中的SRAM(Synchronous
RAM)。SRAM提供了存取存儲塊的快速介 面。用戶可以透過CCR 控制暫存器的Bit2 來使能LIM。注意,LIM 設備被允許並使用 之前,必須正確初始化。S+core7 處理器 提供了可以初始化SRAM 或向SRAM 填充 內容的Cache 指令。
LDM-Local Data Memory
LDM(資料記憶體)系統也包括SRAM
(Synchronous RAM)。SRAM 提供了存取存 儲塊的快速介面。用戶可以透過CCR 控制暫存器 的Bit3 來使能LDM。注意,LDM 設備被允許並使
用之前,必須正確初始化。S+core7 處理器提供 了可以初始化SRAM 或向SRAM 填充內容的
Cache 指令。
LDM 的位址範圍可以透過Cache 指令(填充
LDM)來配置,當執行“填充LDM"指令時,D- Cache 控制器可以記錄LDM 設備的實體位址。