




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2講TS系列DSP內核結構
主講秦國棟1ComputeBlockRegisters第2講內容提示2.1概述2.2運算模塊2.3IALU
2.4TS101程序控制器2.5TS20x程序控制器2ComputeBlockRegisters2.1概述TigerSHARC系列TS101的內核結構計算塊寄存器ALU程序控制器:指令對齊緩沖(IAB),分支目標緩沖(BTB)三套128位總線3ComputeBlockRegistersADSPTS101原理框圖4ComputeBlockRegistersTS101的內核結構M0M1M2Sequencer128-entryBTB128bJ-RFJALU031128b128bK-RFKALU031128bProcElYRF031ALUMultShiftALUProcElXRF031ALUMultShiftExternalPortDMAPeripherals兩個計算模塊程序控制器內部儲存器3套內部總線2個IALU5ComputeBlockRegistersADSPTS201原理框圖6ComputeBlockRegistersTS201S與TS101S內核結構區別時鐘頻率:TS201S達到600MHz,指令周期為1.67ns;而TS101S的最高內核時鐘頻率是300MHz,相應的指令周期為3.33ns。內部存儲器容量:TS201S為24Mbits,存儲器類型為EDRAM(嵌入式DRAM);而TS101S6Mbits,存儲器類型為SRAM。TS201S的內部存儲器被劃分為6個存儲塊,每個塊4Mbits;TS101S的內部存儲器被劃分為3個存儲塊,每個塊2Mbits。TS201S內部有4套相互獨立的128位寬度的數據總線,每條總線分別連接六個4Mbit內部存儲器塊(Bank)中的一個,提供4字的數據、指令及I/O訪問和33.6GB/s的內部存儲器帶寬。而TS101S的內部只有3套128位寬度的總線。數據總線:TS201S內部有4套相互獨立的128位寬度的數據總線,每條總線分別連接六個4Mbit內部存儲器塊(Bank)中的一個,提供4字的數據、指令及I/O訪問和33.6GB/s的內部存儲器帶寬。而TS101S的內部只有3套128位寬度的總線。7ComputeBlockRegistersCLU
:TS201S內核中改進和增強了通信邏輯處理單元(CLU)功能,支持Viterbi和Turbo解碼、CDMA通信中的復數相關應用等。TS201S的CLU成為運算模塊中與ALU、乘法器和移位器并列的專門處理單元。指令流水:TS201S的指令流水增加了2級,為10級指令流水。在TS101S的8級指令流水的基礎上,指令預取由3級變為4級,又增加了1級指令預譯碼級流水,共同構成了10級指令流水。鏈路口:TS201S的鏈路口的接口標準改為了LVDS標準電平,提高了數據傳輸率和可靠性,當單個鏈路口工作在500MHz時,數據傳輸率為每秒1000MB。TS101S的鏈路口的接口標準為LVTTL標準電平,其數據傳輸率低于TS201S,當單個鏈路口工作在125MHz時,數據傳輸率為每秒250MB。8ComputeBlockRegisters2.2處理器運算模塊9ComputeBlockRegisters2.2.1核寄存器
計算塊–3種運算單元核處理器–寄存器組計算塊–寄存器存儲器映射寄存器非儲存器映射的寄存器數據類型&數據大小操作數大小寄存器命名
指令語法
10ComputeBlockRegisters核處理器–三種運算單元
MultALUShifterCtrl&DependencyCheckUnitRegisterFile32x32DABInternalBuses128x36464128128ALU、乘法器、移位器11ComputeBlockRegistersComputationblockXRegFile031ALUMultShiftUnmapped存儲器映射-通用寄存器組(RF).32x32
可以被以下訪問: -處理器核
-外部總線設備非儲存器映射寄存器–對于全局狀態(XSTAT/YSTAT)專門用于:-ALU-乘法器-移位器
CompblockXALUMultShiftRegFile計算塊–寄存器計算塊X&Y都包含兩種類型的寄存器:存儲器映射的寄存器非儲存器映射的寄存器12ComputeBlockRegistersXR31XR0Xcomputationblock....YR31YR0Ycomputationblock....存儲器映射寄存器寄存器組特征:32個寄存器,每個32位寬硬件互鎖可以被所有的轉移指令訪問訪問寄存器組–用于正常字,長字,或者四字。32-bits32-bits13ComputeBlockRegistersALUComputationblockXRegisterFile0STATUSALUMultShiftPRMRBFOTMP32非儲存器映射寄存器非儲存器映射寄存器是:全局狀態寄存器(XSTAT/YSTAT)ALU(PRx)寄存器乘法器(MRx)寄存器移位器(BFOTMP)寄存器14ComputeBlockRegisters數據類型和數據字長
處理器支持的數據格式:定點/浮點整數/小數有符號數/無符號數復數處理器支持的數據字長:8位–字節16位–短字32位–正常字64位–長字,
雙字,四字
15ComputeBlockRegisters數據字寬/操作數長度
處理器的基本單位是32位(寄存器寬度)少于32-位的數據類型打包成一個32位進入寄存器多個寄存器組合到一起支持大于32位的數據類型舉例:-64位輸出(雙寄存器)-操作把數據看作4個16位的操作數-結果是4個16位的值。
短字指令6304個16位的操作數4個16位的操作數4個16位結果630操作數字長
+/-+/-+/-+/-16ComputeBlockRegisters寄存器–寄存器名稱使用規則通用寄存器命名約定{X|Y|XY}[letter][#]或者{X|Y|XY}[letter][#]:[#]單寄存器R1 XR14 YR23雙寄存器(兩個寄存器中標號最小的標號能被2整除)R1:0XR13:12XYR25:24四寄存器(四個寄存器中標號最小的標號能被4整除)R3:0YR19:16R31:2817ComputeBlockRegisters操作數字長在指令中定點數據(操作數大?。┛梢园凑障旅娴姆椒ū硎荆?位數據(字節)-用B表示 BR1,BR1:0,BR3:016位數據(短字)–用S表示 SR1,SR1:0,SR3:032位數據(正常字)-(無字母)R0R1:0,R3:064位數據(長字)–用L表示 LR1:0浮點數據32位數據–用F表示 FR340位數據–用F表示 FR1:018ComputeBlockRegisters31242316158703116150310計算塊X中的寄存器–8位數據計算塊X中的寄存器–16位數據計算塊X中的寄存器–32位數據XBR3
(B=Byte)XSR3(S=Short=16bit)XR3(Noletter=Normal=32-bit)8-bits8-bits8-bits8-bits16-bits16-bits32-bits寄存器–名稱與字長舉例
(I)19ComputeBlockRegisters寄存器–名稱與字長舉例
(II)63565548474039323124231615870寄存器R3寄存器R28-bits8-bits8-bits8-bits8-bits8-bits8-bits8-bitsXBR3:263484732311615016-bits16-bits16-bits16-bits633231032-bits63064-bitsXSR3:2XR3:2XLR3:232-bits20ComputeBlockRegisters寄存器–指令語法舉例:定點ALU指令:{L|S|B}Rsd=Rmd+|-Rnd{({S|SU})}s,mn是寄存器的個數d表示雙寄存器R1:0=R3:2+R5:4;; /*數據被看作2個32-位的值*/BR1:0=R3:2+R5:4;; /*數據被看作8個8-位的值*/xBR1:0=R3:2+R5:4;; /*與上面相同的指令,只在CBX中執 行*/xySR1:0=R3:2+R5:4;; /*數據被看作4個16-位的值*/yLR1:0=R3:2+R5:4;; /*數據被看作1個64-位的值*/21ComputeBlockRegisters2.2.2處理器核-寄存器組有8個寄存器組:計算塊數據和狀態寄存器整數ALU寄存器DMA寄存器控制寄存器鏈路口寄存器中斷和程序控制寄存器調試邏輯寄存器分支目標緩沖寄存器(BTB)22ComputeBlockRegisters2.3ALU概述定點指令浮點指令特殊指令-PR寄存器特殊指令-VMAX和VMIN指令選項狀態標志和條件條件指令23ComputeBlockRegistersCompblockXALUMultShiftRegFileALU–概述(I)計算塊的ALU單元支持:邏輯運算(AND,OR,XOR,NOT)算術運算(加,減,遞增,遞減,sideways加法)MIN,MAX,比較VMIN/VMAX數據轉換
*擴展
*壓縮
*合并24ComputeBlockRegistersCompblockXALUShiftALU–概述
(II)ALU執行:定點數和浮點數的算術操作
定點數的邏輯操作ALU定點指令支持的操作:8-位(字節)輸入操作數
16-位(短字)輸入操作數
32-位(正常字)輸入操作數
64-位(長字)輸入操作數
128-位(四字)輸入操作數
輸出32-,64-,或者128-位結果.ALU浮點指令支持的操作:32-或者40-位浮點操作數
輸出32-或者40-位結果.25ComputeBlockRegistersALU指令舉例LR5:4=R11:10+R1:0;; //64-位加,在CBX和CBY中執行ySR1:0=R31:30+R25:24;;//四個短字操作數同時相加,存儲 //到兩個寄存器對中,僅在CBY中 //執行 xR3=R5ANDR7;; //CBX中的邏輯AND操作yR4=SUMSR3:2;; //R4中短字與yR3:2中的內容相加
//把和放到R4中R9=R4+R8,R2=R4-R8;; //同時加/減, //在CBX和CBY中執行26ComputeBlockRegistersALU–指令選項
(I)大部分ALU指令都有選項選項修改了指令的執行細節選項是針對一組指令有效(不是所有的選項都適用于所有的指令)27ComputeBlockRegistersALU–指令選項
(II)定點選項-符號有下面的意義:X,Y,YX 作為前綴–在X,Y或者兩個計算塊中執行B,S,L 作為前綴–字節,短字(16)長字(64)
作為前綴
隱含一個正常(32-bit)字X 擴展的范圍(僅ABS指令中使用)S 飽和U 無符號T 截斷Z 返回零(僅在MIN/MAX指令中使用)I 整型數例如:YBR9=R2+R8(S);; 28ComputeBlockRegistersALU–特殊指令-PR(I)ALU寄存器PR0和PR1用于特殊的ALU指令:SUMABSVMAX/VMIN若訪問PR0和PR1寄存器,必須使用下面的指令:PR1:0=RmdRsd=PR1:0注意:即使你只想使用PR0或者PR1,這些指令也必須在雙寄存器中操作。29ComputeBlockRegistersR5PR0output3103109=ALU–特殊指令-PR(II)PR0+=SUMSRmd SUMsideways求和
SR16位短字
d
雙寄存器->64位這條指令執行四個16位的加操作,并把結果與PR0寄存器當前的內容相加。PR0+=SUMSR5:4;;
R40504AssumingthatpreviousvalueofPR0is030ComputeBlockRegistersSR1:0PR0result3103103107-352SR3:23103105679ABS(5-7)ABS(6-(-3))ABS(7-5)ABS(9-2)++150150150150+ALU–特殊指令-PR(III)PR0+=ABS(SRmd-SRnd)(U)xPR0+=ABS(SR3:2-SR1:0);;20AssumingthatpreviousvalueofPR0is031ComputeBlockRegistersALU–特殊指令-VMAX/VMINVMAX和VMIN指令執行Viterbi運算法則時使用4條指令8或者16位操作數選擇步驟取兩個寄存器對的最大值或者最小值-4種可能性:SRsd=VMAX(Rmd,Rnd);;SRsd=VMIN(Rmd,Rnd);;BRsd=VMAX(Rmd,Rnd);;BRsd=VMIN(Rmd,Rnd);;32ComputeBlockRegistersR1:0
3103107865R3:213103109223SR9:83103109865864X16bitcomparators0x8000310310PR1:0BitsshiftedintoPR1:0fromtheMSBALU–特殊指令-VMAX/VMINSRsd=VMAX(Rmd,Rnd);;SR9:8=VMAX(R3:2,R1:0);;950x00000x00000x0000AssumingthatpreviousvalueofPR0is033ComputeBlockRegisters310310PR1:01111從MSB移位下一個VMAX/VMIN將使這些4位右移4位。如果指令循環執行,這些位將繼續移到PR1:0寄存器中
第一個字的結果比較ALU–特殊指令-VMAX/VMIN在執行完SRsd=VMAX指令后,
如果RmRn,則PR1:0→1;否則PR1:0→0;PR1:0寄存器將保持:34ComputeBlockRegistersALU–狀態標志位和條件與ALU有關的有9個狀態標志位5常規標志4sticky標志非映射寄存器XSTAT和YSTAT中的狀態標志位狀態標志位控制指令條件的執行在指令執行完時設置狀態標志位Sticky位保持置位狀態,直到被清零35ComputeBlockRegisters在一個并行指令中,狀態標志是所有操作結果的或。
Ex:假設YR0=0x00050003和YR1=0x00040008,
執行完指令ySR2=R0-R1;;之后,結果是:
由于兩個數的減法產生了負值,設置yAN標志位。
YR131048YR031053YR23101-5ALU–并行指令中的狀態標志位36ComputeBlockRegisters常規狀態標志位
通過以下更新AZ Fxd為0,FP下溢
所有的ALU操作AN 負數
所有的ALU操作AV 溢出
所有的算術操作AC 進位
僅定點操作AI FP無效操作
浮點數操作Sticky狀態標志AUS StickyFP下溢
僅浮點(FP)操作AVS StickyFP溢出
僅浮點(FP)操作AOS StickyFxdP下溢
僅定點操作AIS StickyFP無效操作
僅浮點(FP)操作
ALU–狀態標志位37ComputeBlockRegistersALU–條件ALU條件是:
條件
描述
設置標志AEQ ALU等于零 AZALT ALU小于零 ANandAZALE ALU小于或者等于零 ANorAZNAEQ NOT(ALU等于零) AZ NALT NOT(ALU小于零) ANandAZ NALE NOT(ALU小于或者等于零) ANorAZ38ComputeBlockRegistersALU–條件指令(單個計算塊)IFcond;DO<instruction>;;IFxALT;DO,R3=R1+R2;;//CBX和CBY都以xALT為條件執行。IFyAEQ;do,xR0=R1+R2;;//CBX指令以yAEQ為條件執行。IFxALE,jumplabel;;//根據xALE條轉。39ComputeBlockRegistersALU–條件指令(SIMD)IFALE;do,R0=R1+R2;;//如果CBX中的條件為真,執行CBX中的加操作,//如果CBY中的條件為真,執行CBY加操作。IFALE;do,xR0=R1+R2;; //CBX中的指令根據xALE的值執行。IFALE,jumplabel;; //xALE和yALE或的結果決定是否條轉。IFALE;do,R0=[j0+j1];; //xALE和yALE的邏輯或決定是否加載。
40ComputeBlockRegistersRs=SUMS|BRmRs=SUMS|BRmdRs=ONESRm|RmdRsd=BFOINCRmdPR0|PR1+=ABS(SRmd-SRnd)PR0|PR1+=ABS(BRmd-BRnd)PR0|PR1+=SUMSRmPR0|PR1+=SUMSRmdPR0|PR1+=SUMBRmPR0|PR1+=SUMBRmdRsd=PR1:0PR1:0=Rsd注意X,Y,和XY對于所有的指令都是有效的選項ALU–定點指令
(I)Rsd=EXPANDSRm+|-SRnRsq=EXPANDSRmd+|-SRndSRsd=EXPANDBRm+|-BRnSRsq=EXPANDBRmd+|-BRndRsd=EXPANDSRmRsq=EXPANDSRmdSRsd=EXPANDBRmSRsq=EXPANDBRmdSRs=COMPACTRmd+|-RndBRs=COMPACTSRmd+|-SRndSRs=COMPACTRmdBRs=COMPACTSRmdBRsd=MERGERm,RnBRsq=MERGERmd,RndSRsd=MERGERm,RnSRsq=MERGERmd,Rnd41ComputeBlockRegistersALU–定點指令
(II)Rs=Rm+|-RnRsd=Rmd+|-RndRs=ABS(Rm+Rn)Rsd=ABS(Rmd+Rnd)Rs=ABS(Rm-Rn)Rsd=ABS(Rmd-Rnd)Rs=(Rm+|-Rn)/2Rsd=(Rmd+|-Rnd)/2Rs=MIN|MAX(Rm,Rn)Rsd=MIN|MAX(Rmd,Rnd)Rs=INC|DECRmRsd=INC|DECRmdRs=Rm+Rn+CIRsd=Rmd+Rnd+CIRs=Rm-Rn+CI-1Rsd=Rmd-Rnd+CI-1COMP(Rm,Rn)COMP(Rnd,Rnd)Rs=CLIPRmBYRnRsd=CLIPRmdBYRndRs=ABS|-RmRsd=ABS|-RmdRs=PASS|NOTRmLRsd=PASS|NOTRmdRs=RmAND|OR|XOR|ANDNOTRnLRsd=RmdAND|OR|XOR|ANDNOTRndRs=Rm+CI|CI-1LRsd=Rmd+CI|CI-1Rs=Rm+Rn,Ra=Rm-RnRsd=Rmd+Rnd,Rad=Rmd-RndBRSd=VMAX(Rmd,Rnd)SRSD=VMIN(Rmd,Rnd)42ComputeBlockRegistersALU–浮點指令FRs=Rm+|-RnFRsd=Rmd+|-RndFRs=(Rm+|-Rn)/2FRsd=(Rmd+|-Rnd)/2FRs=MAX|MIN(Rm+|-Rn)FRsd=MAX|MIN(Rmd+|-Rnd)FRs=ABS(Rm+|-Rn)FRsd=ABS(Rmd+|-Rnd)FCOMP(Rm,Rn)FCOMP(Rmd,Rnd)FRs|FRsd=FLOATRmBYRnFRs|FRsd=FLOATRmRs=FIXFRm|FRmdBYRnRs=FIXFRm|FRmdFRs=CLIPRmBYRnFRsd=CLIPRmdBYRndFRs=RmCOPYSIGNRnFRsd=RmdCOPYSIGNRndFRs=SCALBFRmBYRnFRsd=SCALBFRmdBYRnFRs=ABS|-|PASS|RECIPS|RSQRTSRmFRsd=ABS|-|PASS|RECIPS|RSQRTSRmdRs=MANTFRm|FRmdRs=LOGBFRm|FRmdFRsd=EXTDRmFRs=SNGLRmdFRs=Rm+Rn,FRa=Rm-Rn (dualinst.)FRsd=Rmd+Rnd,FRad=Rmd-Rnd (dualinst.)43ComputeBlockRegisters2.4乘-累加器概述指令概述指令選項截取,飽和,共軛定點乘法復數乘法浮點指令MR4寄存器狀態和條件44ComputeBlockRegistersCompblockXALUMultShiftRegFile乘法器–概述乘法器執行:定點或者浮點乘法帶累積加/減的定點乘法和累加
。乘法器浮點指令對以下進行操作:32或者40位操作數
輸出32或者40位結果。乘法器定點指令4個16位MACs-或者1個32位MAC輸出16位,32位或者64位結果輸出20位,40位,或者80位累加(MAC)結果45ComputeBlockRegisters乘法器–乘法的類型三種類型的定點操作單32位MAC四字16位MAC單16位復數MAC
乘和累加稱為MAC轉移和MAC在執行MAC之前,把內部乘法器寄存器中的內容轉移到寄存器組中。復數乘法和MAC用法:
實部為16位
虛部為16位46ComputeBlockRegisters32-bitwordinst.31032operandRm32x32MULT32operandRn32or64resultRsldualaccum(64or80)MR乘法器–32位乘法指令32位乘舉例:
XYRs=Rm*Rn XYR4=R6*R832位MAC舉例MR3:2+=R11*R12(MR1:0或者MR3:2是累加器)47ComputeBlockRegisters16-bitshortwordinst.630quad16operandRmlquad16operandquad16/32resultRnl630Rsl16x16MULT16x16MULT16x16MULT16x16MULTquadaccum(16/20or32/40)MRMAC是寄存器Rmd和Rnd中4個16-位字(短字)的乘法運算,乘積的結果可以作為字的結果與MR3:0當前的內容相加,也可以作為16-位短字的結果與雙寄存器MR3:2中的內容相加。溢出位放到寄存器MR4中。累加器––4個16位乘法指令4個16位乘舉例XRsd=Rmd*RndXR11:10=R9:8*R7:6
4個16位MAC舉例MR3:0+=Rmd*Rnd; ORMR3:2+=Rmd*Rnd; 48ComputeBlockRegistersMAC是Rm和Rn中的復數值相乘,乘積的結果與MR3:2的當前內容相加。溢出位放入寄存器MR4中。乘法器–16位復數乘法指令(I)16位復數乘法舉例
MRa=Rm**RnMR3:2=R9**R716位復數MAC舉例MR3:2+=Rm**Rn;注意;MR4提供了額外16位實部和16位虛部16-bitcomplexwordinst.310imag1dual32/40result630MR16x16MULT16x16MULT16x16MULT16x16MULTreal1imag2real2+/+-/+49ComputeBlockRegisters乘法器–16位復數乘法指令(II)復數乘法器用一個32位正常字中的兩個短字表示復數。
位15:0表示復數的實部位31:16表示虛部.乘法器把復數乘法的結果存儲到一對MR寄存器中。復數乘和累加定義為(匯編語言語法表示為**):{}和[]分別表示復數中的實部和虛部{Result}={Rm}*{Rn}-[Rm]*[Rn][Result]={Rm}*[Rn]+[Rm]*{Rn}50ComputeBlockRegisters乘法器–16位復數乘法指令(III)沒有共軛選項設置:{Result}={Rm}*{Rn}-[Rm]*[Rn][Result]={Rm}*[Rn]+[Rm]*{Rn}有共軛選項設置:{Result}={Rm}*{Rn}+[Rm]*[Rn][Result]={-Rm}*[Rn]+[Rm]*{Rn}51ComputeBlockRegistersSinglePrecisionFlt.310exp(8)mantissa(24)32-bitresult24x24MULTexp(8)mantissa(24)adderexp(8)mantissa(24)32/40-位浮點乘法兩個乘法器都可以執行單精度(32-bit)浮點乘法
擴展精度(40-bit)浮點乘法
ExtendedPrecisionFlt.630exp(8)32x32MULT32-bitmantissaexp(8)Fmlmantissa(32)Fnlmantissa(32)exp(8)40-bitresultadder52ComputeBlockRegistersSinglePrecisionFloatingpt.310exp(8)mantissa(24)32-bitresult24x24MULTexp(8)mantissa(24)adderexp(8)mantissa(24)32-位浮點乘法單精度舉例FRs=Rm*Rn(T)FR20=R22*R23(T)53ComputeBlockRegistersExtendedPrecisionFloatingPt.630exp(8)32x32MULT40-bitresultRslFmlmantissa(32)Fnlmantissa(32)exp(8)32-bitmantissaadder8-bitexponent40-位浮點乘法擴展精度舉例FRsd=Rmd*RndFR25:24=R27:26*R30:29(T)
擴展精度為尾數提供額外的8位:24+8=32位尾數8位指數54ComputeBlockRegisters大部分的乘法器選項都可以獨立操作,提高了乘法器的靈活性和功能性。
選項
選項代碼
默認
有符號/無符號數 U 有符號整數/小數 I 小數清零 C 未清零截斷/截尾 T 截斷清零和截斷 CR 未清零/截斷飽和 S 未飽和共軛 J 非共軛
乘法器–指令選項概述55ComputeBlockRegisters乘法器–可組合的指令選項
選項組合的例子SU 飽和的無符號數nU 一個操作數有符號,一個無符號
I 整數IU 無符號整數IS 飽和的整數ISU 飽和的無符號整數56ComputeBlockRegisters乘法器–指令選項有符號/無符號數選項應用于所有的定點操作。()= 兩個輸入操作數都是有符號的(U)= 兩個輸入操作數都是無符號的(nU)= Rm是有符號的;Rn是無符號的有符號數用2的補碼表示整數/小數選項應用于所有的定點操作.()= 小數(I)= 整數57ComputeBlockRegistersSignbit2632622612602423222120
Bit63Bit0二進制小數點UnsignedintegerUnsignedFractionalSignbit2-12-22-32-42-622-632-64
Bit63Bit0BinarypointWeight-2632622612602423222120
Bit63Bit0二進制小數點SignedintegerWeight.........SignedFractional-2-02-12-22-32-612-622-63
Bit63Bit0Binarypoint...WeightWeight乘法器–整數/小數定點格式58ComputeBlockRegisters乘法器–截斷截斷選項截斷適用于所有的定點和浮點操作。
()= 截取最接近的整數(T)= 截斷浮點數->截取接近零方向定點數->截取接近無窮方向注意默認值截取最近整數59ComputeBlockRegisters乘法器–清除/截斷清零和截取選項僅僅適用于32位小數和四字16位小數的MAC操作。
()= 禁止選項MR寄存器在進行MAC之前不清零(C)= 清零在進行MAC之前清零MR寄存器(CR)= 清零和截取在執行MAC操作之前清零指定的MR寄存器并設置截取位。60ComputeBlockRegisters乘法器–飽和飽和選項處理器執行飽和和定點操作,如果:飽和選項使能(S)結果溢出,超出目的格式的范圍。適用于任何可能溢出的定點乘法操作。
()= 未飽和(S)= 飽和MAC操作沒有飽和選項。當累加超過20/40/80位時,乘法器總是使MAC的結果飽和。帶飽和設置的基于乘法操作的寄存器組使整數飽和到最大可以表示的數使小數飽和乘-1,-1為0x7F…F61ComputeBlockRegisters乘法器–共軛共軛選項僅適用于復數MAC操作。
當使能時,Rm操作數與Rn操作數的復共軛相乘;也就是Rn的虛部取反。()= 非共軛(J)= 復數乘共軛62ComputeBlockRegistersMR4寄存器保留MAC操作的溢出位,寄存器域按照所使用的寄存器和結果的長短變化:80-位累加的長字結果
40-位累加的正常字結果
20-位累加的短字操作
乘法器-MR4寄存器組
(I)MR1:0MR3:216MR4310MR0MR316MR4310824MR2MR1MR0MR316MR4310824MR2MR14122028MR0MR2MR1MR3[H][L][H][L][H][L][H][L][L]=lowshortfield[H]=highshortfield63ComputeBlockRegisters乘法器-MR4寄存器域
(II)乘法器使用MR4溢出位作為MAC操作的累加步驟當清除相應的MRx寄存器時清除這些位。
當存儲時,乘法器使用這些位作為飽和位。
這些位允許MAC序列的超出最終結果表示的范圍。
64ComputeBlockRegisters乘法器–狀態標志位乘法器更新X-stat和Y-stat寄存器中的9個狀態標志位
狀態標志MZ 乘法器為零MN 乘法器為負MV 乘法器上溢MU 乘法器下溢MI 乘法器浮點無效操作粘連標志MUS 乘法器定點數粘連下溢MVS 乘法器浮點數粘連上溢MOS 乘法器定點數粘連上溢MIS 乘法器浮點數粘連無效操作狀態和粘連狀態標志保存在X/YSTAT寄存器中。65ComputeBlockRegisters乘法器–條件
(I)乘法器條件是:
條件 描述
標志設置MEQ 乘積等于零 MZMLT 乘積小于零 MN和MZMLE 乘積小于或等于零 MN或者MZ
NMEQ 乘積不等于零 MZNMLT 乘積不小于零 MN和MZNMLE 乘積不小于或者等于零 MN或者MZ 66ComputeBlockRegisters乘法器–條件
(II)條件指令可以為以下條件
XSTAT寄存器中一個條件YSTAT寄存器中一個條件XSTAT或者YSTAT的一個條件例子ifXMEQ,JumpLabel_10;; /*如果X乘法器設置了零標志
執行跳轉*/ifNYMLT;doYR2=R0+R1;; /*如果Y乘法器條件不是MLT
執行加操作*/ ifMEQ,JumpLabel_13;; /*如果XORY乘法器設置MZ
執行跳轉*/67ComputeBlockRegisters乘法器–指令集
(I)單個32位定點乘指令{X|Y|XY}Rs=Rm*Rn {({U|nU}{I}{T}{S})}{X|Y|XY}Rsd=Rm*Rn {({U|nU}{I})}{X|Y|XY}Rs|Rsd=MRa,MRa+=Rm*Rn{({U}{I}{C}{S})}{X|Y|XY}MRa+|-=Rm*Rn {({U}{I}{S}{C|CR})} Mra是MR1:0或者MR3:2之一。四個16位定點乘指令{X|Y|XY}Rsd=Rmd*Rnd {({U}{I}{T}{S})}{X|Y|XY}Rsq=Rmd*Rnd {({U}{I})}{X|Y|XY}Rsd=MRb,MRb+=Rmd*Rnd{({U}{I}{C})}{X|Y|XY}MRb+=Rmd*Rnd {({U}{I}{C|CR})}MRb是MR1:0或者MR3:2或者MR3:0之一68ComputeBlockRegisters乘法器–指令集
(II)復數16-位定點乘指令{X|Y|XY}MRa+=Rm**Rn {({U}{I}{C|CR}{J})}{X|Y|XY}Rs|Rsd=MRa,MRa+=Rm**Rn {({U}{I}{C}{J})}Mra是MR1:0或者MR3:2之一。通用乘法器指令{X|Y|XY}MRa=Rmd{X|Y|XY}{S}Rsd=MRa {({S}{U})}{X|Y|XY}Rsq=MR3:0 {({S}{U})}{X|Y|XY}Rs=MR4{X|Y|XY}Rs=COMPACTMRa {({I}{T}{S}{U})}{X|Y|XY}SRsd=COMPACTMR3:0 {({I}{T}{S}{C}{U})}69ComputeBlockRegisters乘法器–指令集(III)浮點指令{X|Y|XY}FRs=Rm*Rn {(T)}{X|Y|XY}FRsd=Rmd*Rnd {(T)}70ComputeBlockRegisters2.5移位器綜述指令概述移位器操作移位–循環位處理位段處理位流處理變換狀態和條件71ComputeBlockRegistersCompblockXALUMultShiftRegFile移位器-綜述移位器操作:移位和循環,左移,右移位處理;位設置,清除,觸發和測試位段處理;段抽取和存貯轉換16位塊浮點數縮放比例因數指數抽取抽取前面的1或者0定點數的移位器操作。對于輸入:一個64位操作數一個或者兩個32位操作數兩個或者四個16位操作數四個或者八個8位操作數72ComputeBlockRegisters移位器–操作數
操作數–語法約定Rn操作數是移位器進行操作的數據。
Rm操作數指明移位大小,位域長度,或者位置。Rs操作數讀-修改-寫(RMW)數據,是被操作和更新的數據。
注意:僅有一個選項可用于移位器:指令–符號擴展-(SE)
73ComputeBlockRegisters移位器操作-移位/循環
(I)移位和循環:ASHIFT 執行算術移位。LSHIFT 執行邏輯移位。ROT 執行循環移位.所有移位和循環值都是2-補碼有符號數。
對于Rm->LEFT移位和循環是一個正值對于Rm->RIGHT移位和循環是一個負值移位器利用Rm中的LSB的立即數計算所得的移位數。74ComputeBlockRegisters000100100011010001010110111011110000000100100011010001010110111000100011010001010110111011110000xxxxxxxxxxxxxxxxxxxxxxxxxxxx0100RmShiftmagnitude=4RnRsRsShiftleftby4bitsShiftrightby4bitsZerofillbitsinMSBsZerofillbitsinLSBs0x123456EF0x0123456E0x000000040x23456EF0移位器操作-移位/循環
(II)邏輯移位舉例。Rs=LSHIFTRnBYRmRn中的內容移位Rm(4)指定的位數,結果放入Rs中。注意Rm=-4是右移Rm=+4是左移75ComputeBlockRegisters10010010001101000101011011101111xxxxxxxxxxxxxxxxxxxxxxxxx1111000RmRnRsShiftrightby8bitsSignextendedMSBs1111111110010010001101000101011011101111deletedLSBsArithmeticleftshiftisidenticaltoLogicalleftshift0x923456EF0xFFFFFFF80xFF923456Shiftvalue=-8移位器操作-算術移位舉例右移8位算術移位舉例。Rm包含右移的位數(-8)Rs=ASHIFTRnBYRm76ComputeBlockRegisters寄存器操作數的移位的位數由寄存器Rm的LSB位指定。Rm所用位數取決于數據的長度:長字 8bits正常字 7bits短字 6bits字節 5bits對于立即數的操作,需要的位數是:長字 7bits正常字 6bits短字 5bits字節 4bits移位器操作-移位/循環
(II)移位和循環移位和循環只移位只移位77ComputeBlockRegisters移位器操作-位處理位處理操作是:BCLR 清零一位。BSET 設置一位。BTGL Toggles(與1XOR)abit.BITEST 測試一位舉例:Rs=BCLRRnByRmRsd=BSETRndByRm78ComputeBlockRegisters00010010001101000101011111101111xxxxxxxxxxxxxxxxxxxxxxxxxx001000RmRnRs00010010001101000101011011101111EighthbitinRnclearedValue=80x000000080x123456EF0x123457EF31031318thbit移位器操作-位處理:位清零位處理BCLR舉例。寄存器Rn清零第八位(由Rm指定)并把結果放入Rs中。Rs=BCLRRnByRm;79ComputeBlockRegisters移位器操作-位段處理
(I)位段處理操作是:FEXT 按照另一個寄存器指定的長度和位置從寄存器中抽 取一段。FDEP 按照另一個寄存器中指定的位置和長度從右端放入 到一個寄存器中。MASK 通過屏蔽復制一個32-或者64-位段。XYSTAT 加載和存儲所有位或者僅是X/YSTAT寄存器的14 位LSBs。
對于抽取和存放操作,Rm操作數包含兩個字段中的控制信息:<len7>和<pos8>。
這些字段的位置取決于Rm是一個單字-或者雙字-寄存器。80ComputeBlockRegisters63320<pos8><len7>RmdRm3115860<pos8><len7>Len指定抽取的位數Pos指定Rn中的起始位置抽取位存儲在Rs的右端移位器操作-位段操作
(II)FEXT按照另一個寄存器指定的長度和位置從寄存器中抽取一個字段。Rm操作包含兩段中的控制信息:<len7>and<pos8>.段的位置取決于Rm是一個單字-或者雙字寄存器。81ComputeBlockRegistersRm311580xxxxxxxxxxxxxxxx00000101x0001000Length8bitsStartatbit50x0000050831150xxxxxxxxxxxxxxxx000100100011010031150xxxxxxxxxxxxxxxxxxxxxxxx10010001RnRs0x000012340x00000091bit5移位器操作-位段處理
(III)從Rn中抽取一個8位字段(FEXT),從6th
位復制并放在Rs中的LSBs。Rs=FEXTRnByRm;82ComputeBlockRegisters移位器操作-轉換操作浮點轉換支持的操作如下:BKFPT 決定16-位塊浮點中縮放比例因數。EXP 抽取指數。LDx 抽取前面的零(0)或者一(1)83ComputeBlockRegisters移位器–狀態標志
移位器在每次操作結尾更新XSTAT和YSTAT狀態寄存器中的兩個標志位。標志如下:BF 塊浮點標志。僅更新BKFPT指令。SN 移位器結果為負。SZ 移位器結果為零。
SF0和SF1是計算塊靜態標志0和1的條件。84ComputeBlockRegisters移位器–條件移位器條件條件
描述
標志設置SEQ 等于零 SZSLT 小于零 SNandSZNSEQ 不等于零 SZNSLT 不小于零 SNandSZ
舉例ifXSLT,JumpLabel_10;;
ifNYSLT,JumpLabel_12;;
ifNSLT;DOR3=R5+R6;;85ComputeBlockRegisters移位器操作-位流處理
(I)位流處理操作數是:GETBITS
從一個位流中抽取位。PUTBITS 把位放入一個位流中。BFOTMP 從GETBITS和PUTBITS指令暫存或者返 回溢出位。位流處理操作,與ALUBFOINC指令結合,執行FIFO操作修改一個臨近位流中的位。對于位流抽取和存放操作,Rmd操作數包含兩段控制信息:<BFP6>and<len6>。
這兩個段形成一個寄存器對Rmd86ComputeBlockRegisters310310BFP6Len6RmdRbRbBFP-6-位段
當前的位FIFO指針,指向Rnq中位流的位置,在開始此處抽取/插入。
Len-6-位段-指定抽取的位數
注意:位
FIFO指針必須利用BFOINCALU指令進行增操作移位器操作-位流處理(II)GETBITS–從一個位流中抽取位。Rsd=GETBITSRnqBYRmd
雙Rmd包含GETBITS/PUTBITS操作的控制信息。87ComputeBlockRegisters移位器把抽取的位放到Rsd中,其右端從零開始。
SE選項–符號擴展–用與抽取數據的MSB相同的數填充。310RnqRfBFP6Len6RsReRdRcRkRh移位器操作-位流處理(III)Rsd=GETBITSRnqBYRmd 四個寄存器Rnq是源寄存器,Rs是目的寄存器。88ComputeBlockRegisters移位器-指令匯集(I)移位指令
{X|Y|XY}{S|B} Rs=LSHIFT|ASHIFTRnBYRm|<imm>{X|Y|XY}{L|S|B} Rsd=LSHIFT|ASHIFTRndBYRm|<imm>{X|Y|XY} Rs=ROTRnBYRm|<imm>{X|Y|XY}{L} Rsd=ROTRndBYRmd|<imm>{X|Y|XY} Rs=FEXTRnBYRm|Rnd{(SE)}{X|Y|XY} LRsd=FEXTRndBYRm|Rnd{(SE)}{X|Y|XY} Rs+=FDEPRnBYRm|Rnd{(SE)}{X|Y|XY} LRsd+=FDEPRndBYRm|Rnd{(SE)}89ComputeBlockRegisters移位器–指令匯集
(II){X|Y|XY}Rs+=MASKRnBYRm{X|Y|XY}LRsd+=MASKRndBYRmd{X|Y|XY}Rsd=GETBITSRnqBYRmd{(SE)}{X|Y|XY}Rsd+=PUTBITSRndBYRmd{(SE)}{X|Y|XY}BITESTRnBYRm|<imm>{X|Y|XY}BITESTRndBYRmd|<imm>{X|Y|XY}Rs=BCLR|BSET|BTGLRnBYRm|<imm>{X|Y|XY}Rsd=BCLR|BSET|BTGLRndBYRm|<imm>{X|Y|XY}Rs=LD0|LD1|EXPRm|Rmd90ComputeBlockRegisters移位器–指令匯集(III){X|Y|XY}STAT=Rm{X|Y|XY}STAT[13:0]=Rm{X|Y|XY}Rm=STAT{X|Y|XY}BKFPTRmd,Rnd{X|Y|XY}Rsd=BFOTMP{X|Y|XY}BFOTMP=Rmd在移位器中立即字段的寬度是7,6,5,還是4-位取決于操作數的大小。91ComputeBlockRegisters2.6整型ALU(IALU)綜述指令概述IALU寄存器尋址操作循環緩沖位反序整數操作狀態和條件92ComputeBlo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇果超市入圍協議書
- 騎馬摔傷賠償協議書
- 車輛掛靠代管協議書
- 閑置衣物回購協議書
- 銀行簽完就業協議書
- 長沙工作就業協議書
- 公益類項目轉讓協議書
- 車輛線路轉讓協議書
- 門店入股經營協議書
- 邵陽鹽業合作協議書
- 道路運輸企業主要負責人和安全生產管理人員安全考核試題庫及答案
- 【模板】領導XXX考察行程安排表
- 母親健康快車項目立項申請及實施計劃表格填報模板
- MDR醫療器械法規試卷
- DB11-139-2015鍋爐大氣污染物排放標準
- 大金D型水冷螺桿機說明書
- 五方責任主體授權書和承諾書
- 《泵站運行工》word版
- 食藥同源-PPT課件(PPT 55頁)
- 山東大學畢業論文答辯通用ppt模板
- 榆林智能礦山項目招商引資方案【參考范文】
評論
0/150
提交評論