Blackfin 處理器包括一個具有 10 級 RISC MCU/DSP 流水線的高性能 16/32 位嵌入式處理器內(nèi)核、用于實現(xiàn)最佳代碼密度的可變長度 ISA 以及具有面向加速視頻和多媒體處理的指令的全 SIMD 支持。Blackfin 內(nèi)核的說明如下:

- 數(shù)據(jù)寄存器文件
- 數(shù)據(jù)類型包括 8 位、16 位或 32 位帶符號或無符號整數(shù)以及 16 位或 32 位帶符號分數(shù)
- 32 位讀出和兩個 32 位寫入操作
- 地址寄存器文件
- 棧指針
- Frame pointer
- Two 16-bit MACs
- Two 40-bit ALUs
- Four 8-bit video ALUs
- Single barrel shifter
- 存儲器取指令
- 索引、長度、基數(shù)和修改寄存器
- 循環(huán)緩沖
- 條件轉(zhuǎn)移和子程序調(diào)用
- 嵌套式零開銷循環(huán)
- 代碼密度
Blackfin 處理器內(nèi)核包括一個用于通用運算單元的 8 路×32 位數(shù)據(jù)寄存器文件。支持的數(shù)據(jù)類型包括8 位、16 位或 32 位帶符號或無符號整數(shù)以及 16 位或 32 位帶符號分數(shù)。在每個時鐘周期中,這種多端口寄存器文件均支持兩個 32 位讀出和兩個 32 位寫入操作。還可將其作為一個 16 路×16 位數(shù)據(jù)寄存器文件來進行存取。
除了支持循環(huán)緩沖和棧保持以外,地址寄存器文件還提供了一種通用型尋址機制。該寄存器文件由 8 個表目組成,并包括一個幀指針和一個棧指針。幀指針可用于子例程參數(shù)傳輸,而棧指針則可用于存儲子程序調(diào)用的返回地址。
數(shù)據(jù)運算器
數(shù)據(jù)運算器所包含的系統(tǒng)資源大約是 Analog Devices 公司以往 16 位架構(gòu)的兩倍。它包括:
- 兩個 16 位 MAC
- 兩個 40 位 ALU
- 四個 8 位視頻 ALU
- 單個桶形移位器
所有的計算資源均能夠處理來自數(shù)據(jù)寄存器文件(R0~R7)的 8 位、16 位或 32 位操作數(shù)?蓪⒚總寄存器作為一個 32 位寄存器或一個 16 位寄存器的高位部分或低位部分來進行存取。
在單個時鐘周期中,SIMD 架構(gòu)能夠?qū)Χ噙_兩個 32 位值進行讀出和寫入操作。然而,由于能夠?qū)?R0~R7 寄存器的高位部分和低位部分進行獨立尋址(Rx、Rx.H 或Rx.L),因此每個計算部件都能夠從兩個 32 位輸入值和四個 16 位輸入值當中進行選擇,而并未對輸入數(shù)據(jù)加以限制。計算的結(jié)果可以作為一個 32 位實體或寄存器的高 16 位部分或低 16 位部分而被重新寫入寄存器文件。此外,累積的方法有可能因為數(shù)據(jù)通路的不同而存在差異。例如,A0 可能是一個恒定加法,而 A1 則可能是一個恒定減法。這種能力被稱為 “靈活的 SIMD”。
兩個累加器的長度均為 40 位,從而提供了 8 位擴展精度。與通用型寄存器相似,兩個累加器均能夠以 16 位、32 位或 40 位的增量進行存取。Blackfin 架構(gòu)還支持一種可生成兩個 16 位、32 位或 40 位結(jié)果或 4 個 16 位結(jié)果的組合型加法/減法指令。在希望獲得 4 個 16 位結(jié)果的場合,高位和低位部分的結(jié)果可以互換。這是一項非常強大的功能,比方說,它能夠顯著地改善 FFT 基準程序結(jié)果。
地址運算器
兩個數(shù)據(jù)地址發(fā)生器(DAG)提供了用于實現(xiàn)存儲器的同時雙重操作數(shù)取出的地址。這兩個 DAG 共用一個包含了 4 組 32 位索引(I)、長度(L)、基數(shù)(B)和修改(M)寄存器的寄存器文件。另外還有 8 個附加 32 位地址寄存器(即 P0~P5、幀指針和棧指針),它們可被用作針對變量和棧位置的通用標引的指針。
4 組 I、L、B 和 M 寄存器可用于實現(xiàn)循環(huán)緩沖。當一道使用時,每組索引、長度和基數(shù)寄存器都能夠在內(nèi)部或外部存儲器中實現(xiàn)一種獨特的循環(huán)緩沖器。Blackfin 架構(gòu)還支持各種尋址模式,包括間接型、自動增量和減量型、索引型和位反轉(zhuǎn)型。最后,所有的地址寄存器的長度均為 32 位,從而可支持 Blackfin 處理器架構(gòu)的全 4Gbyte 地址范圍。
程序定序器單元
程序定序器負責控制指令執(zhí)行的流程,并支持條件轉(zhuǎn)移和子例程調(diào)用以及嵌套式零開銷循環(huán)。一個多級全互鎖型流水線可確保代碼按照預期的方式來執(zhí)行,并將所有的數(shù)據(jù)故障與編程裝置隔離開來。此類流水線通過在必要時停轉(zhuǎn)的方法確保了結(jié)果的準確度,以獲得正確結(jié)果。這極大地簡化了編程任務(wù),因為軟件工程師無須徹底了解流水線延遲問題。片上互鎖硬件可確保操作數(shù)數(shù)據(jù)在一個特殊指令的執(zhí)行過程中處于有效狀態(tài)。
除了有限的多種 64 位指令程序包之外,Blackfin 架構(gòu)還支持 16 位和 32 位指令長度。這通過把最常用的控制指令編碼為緊致 16 位字、并將更加棘手的數(shù)學運算編碼為 32 位雙字的方法確保了最大的代碼密度。 |