目錄
- 概述
- C66x處理器內核
- C66x流水線結構
概述
C66X DSP是最新一代定點和浮點DSP,由4個乘法器組成,以實施單精度浮點運算。C66X DSP內核可同時運行多大8項浮點乘法運算,加之高達1.4GHz的時鐘頻率,使其具有很高的浮點處理性能。將多個C66x DSP內核與其他內核融合,即可創建出具有初中性能的多核片上系統器件。本文以TMS320C6678爲例,介紹C66x內核。
TMS320C6678具有8個C66x內核,內核工作主頻最高可達1.4GHz,理論上具有179.2(22.4x8)GFLOP和358.4(44.8x8)GMAC的處理性能。每個處理器內部有多級存儲器:C66x內核中有L1P、L1D、L2SRAM;多核共享存儲器爲MSM SRAM。處理器具有多核導航器、網絡協處理器、數據包加速器、信號量、PLL等多核共享的一些外部資源,同時提供如SRIO、PCIE、EMIF等多種外部接口。C6678的處理器架構如下圖所示:
C66x處理器內核
C66x內核是C6678處理器的核心,用於完成高性能處理任務。
C66x內核由以下組件組成:C66xDSP、一級程序存儲器控制器(L1P)、一級數據存儲器控制器(L1D)、二級存儲器控制(L2)、外部存儲器控制器(EMC)、擴展存儲器控制器(XMC)、帶寬管理(BWM)、中斷控制器和休眠控制器(PDC)組成。內核結構如下:
C66xDSP由8個功能單元,2個寄存器組和2條數據通路組成,結構如下圖所示。兩個寄存器組共有64個寄存器,分爲A和B兩組,每組由32個32-bit寄存器組成。通用寄存器可以用來存放數據,也可以當作地址指針。所支持的類型有8-bit打包數據,16-bit打包數據,32-bit數據,40-bit數據和64-bit數據,乘法支持128-bit數據。
8個功能存儲單元(.L1 .S1 .M1 .D1 .L2 .S2 .D2 .S2),每個功能單元的每個時鐘週期都能夠執行一條指令。.S單元執行通常的移位、分支及比較程序,.L單元執行通常的算數及邏輯程序;所有乘法指令都在.M單元執行(一個.M單元包含16組16x16bit乘法器,1個週期內可執行一次單精度浮點乘法運算,4個週期可執行一次雙精度浮點乘法運算)。.D單元主要完成從存儲器加載(load)數據到寄存器堆(register file),並從寄存器堆保存(store)結果到存儲器。
C66x流水線結構
計算機流水線(Pipeline)是Intel首次在486芯片中開始使用的。在CPU中把指令的執行分成若干個不同的功能單元來實現,由若干個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成若干步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鐘週期完成一條指令,因此提高CPU的運算速度。
C66x DSP的流水結構共分三個階段:指令預取(Fetch)、指令解碼(Decode)、指令執行(Execute)。各階段的詳細流水線結構如下:
階段 | 流水名稱 | 含義 |
---|---|---|
Fetch | PG | Program address generate:產生程序地址 |
PS | Program address send:發送程序地址 | |
PW | Program (memory) access ready wait:等待程序內存響應 | |
PR | Program fetch packet receive:接收從內存傳回的指令包 | |
Decode | DP | Instruction dispatch:將指令分配到相應的功能單元 |
DC | Instruction decode:將指令在相應的功能單元進行譯碼 | |
Execute | E1 | 執行指令,不同指令擁有不同的執行流水操作 |
... | ||
E5 |
- Fetch階段的流水操作圖示:
- Decode 階段的流水操作圖示:
- Execute 階段的流水操作圖示: