第2講TS系列DSP內(nèi)核結(jié)構(gòu)_第1頁
第2講TS系列DSP內(nèi)核結(jié)構(gòu)_第2頁
第2講TS系列DSP內(nèi)核結(jié)構(gòu)_第3頁
第2講TS系列DSP內(nèi)核結(jié)構(gòu)_第4頁
第2講TS系列DSP內(nèi)核結(jié)構(gòu)_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第2講TS系列DSP內(nèi)核結(jié)構(gòu)

主講秦國棟1ComputeBlockRegisters第2講內(nèi)容提示2.1概述2.2運算模塊2.3IALU

2.4TS101程序控制器2.5TS20x程序控制器2ComputeBlockRegisters2.1概述TigerSHARC系列TS101的內(nèi)核結(jié)構(gòu)計算塊寄存器ALU程序控制器:指令對齊緩沖(IAB),分支目標(biāo)緩沖(BTB)三套128位總線3ComputeBlockRegistersADSPTS101原理框圖4ComputeBlockRegistersTS101的內(nèi)核結(jié)構(gòu)M0M1M2Sequencer128-entryBTB128bJ-RFJALU031128b128bK-RFKALU031128bProcElYRF031ALUMultShiftALUProcElXRF031ALUMultShiftExternalPortDMAPeripherals兩個計算模塊程序控制器內(nèi)部儲存器3套內(nèi)部總線2個IALU5ComputeBlockRegistersADSPTS201原理框圖6ComputeBlockRegistersTS201S與TS101S內(nèi)核結(jié)構(gòu)區(qū)別時鐘頻率:TS201S達(dá)到600MHz,指令周期為1.67ns;而TS101S的最高內(nèi)核時鐘頻率是300MHz,相應(yīng)的指令周期為3.33ns。內(nèi)部存儲器容量:TS201S為24Mbits,存儲器類型為EDRAM(嵌入式DRAM);而TS101S6Mbits,存儲器類型為SRAM。TS201S的內(nèi)部存儲器被劃分為6個存儲塊,每個塊4Mbits;TS101S的內(nèi)部存儲器被劃分為3個存儲塊,每個塊2Mbits。TS201S內(nèi)部有4套相互獨立的128位寬度的數(shù)據(jù)總線,每條總線分別連接六個4Mbit內(nèi)部存儲器塊(Bank)中的一個,提供4字的數(shù)據(jù)、指令及I/O訪問和33.6GB/s的內(nèi)部存儲器帶寬。而TS101S的內(nèi)部只有3套128位寬度的總線。數(shù)據(jù)總線:TS201S內(nèi)部有4套相互獨立的128位寬度的數(shù)據(jù)總線,每條總線分別連接六個4Mbit內(nèi)部存儲器塊(Bank)中的一個,提供4字的數(shù)據(jù)、指令及I/O訪問和33.6GB/s的內(nèi)部存儲器帶寬。而TS101S的內(nèi)部只有3套128位寬度的總線。7ComputeBlockRegistersCLU

:TS201S內(nèi)核中改進(jìn)和增強了通信邏輯處理單元(CLU)功能,支持Viterbi和Turbo解碼、CDMA通信中的復(fù)數(shù)相關(guān)應(yīng)用等。TS201S的CLU成為運算模塊中與ALU、乘法器和移位器并列的專門處理單元。指令流水:TS201S的指令流水增加了2級,為10級指令流水。在TS101S的8級指令流水的基礎(chǔ)上,指令預(yù)取由3級變?yōu)?級,又增加了1級指令預(yù)譯碼級流水,共同構(gòu)成了10級指令流水。鏈路口:TS201S的鏈路口的接口標(biāo)準(zhǔn)改為了LVDS標(biāo)準(zhǔn)電平,提高了數(shù)據(jù)傳輸率和可靠性,當(dāng)單個鏈路口工作在500MHz時,數(shù)據(jù)傳輸率為每秒1000MB。TS101S的鏈路口的接口標(biāo)準(zhǔn)為LVTTL標(biāo)準(zhǔn)電平,其數(shù)據(jù)傳輸率低于TS201S,當(dāng)單個鏈路口工作在125MHz時,數(shù)據(jù)傳輸率為每秒250MB。8ComputeBlockRegisters2.2處理器運算模塊9ComputeBlockRegisters2.2.1核寄存器

計算塊–3種運算單元核處理器–寄存器組計算塊–寄存器存儲器映射寄存器非儲存器映射的寄存器數(shù)據(jù)類型&數(shù)據(jù)大小操作數(shù)大小寄存器命名

指令語法

10ComputeBlockRegisters核處理器–三種運算單元

MultALUShifterCtrl&DependencyCheckUnitRegisterFile32x32DABInternalBuses128x36464128128ALU、乘法器、移位器11ComputeBlockRegistersComputationblockXRegFile031ALUMultShiftUnmapped存儲器映射-通用寄存器組(RF).32x32

可以被以下訪問: -處理器核

-外部總線設(shè)備非儲存器映射寄存器–對于全局狀態(tài)(XSTAT/YSTAT)專門用于:-ALU-乘法器-移位器

CompblockXALUMultShiftRegFile計算塊–寄存器計算塊X&Y都包含兩種類型的寄存器:存儲器映射的寄存器非儲存器映射的寄存器12ComputeBlockRegistersXR31XR0Xcomputationblock....YR31YR0Ycomputationblock....存儲器映射寄存器寄存器組特征:32個寄存器,每個32位寬硬件互鎖可以被所有的轉(zhuǎn)移指令訪問訪問寄存器組–用于正常字,長字,或者四字。32-bits32-bits13ComputeBlockRegistersALUComputationblockXRegisterFile0STATUSALUMultShiftPRMRBFOTMP32非儲存器映射寄存器非儲存器映射寄存器是:全局狀態(tài)寄存器(XSTAT/YSTAT)ALU(PRx)寄存器乘法器(MRx)寄存器移位器(BFOTMP)寄存器14ComputeBlockRegisters數(shù)據(jù)類型和數(shù)據(jù)字長

處理器支持的數(shù)據(jù)格式:定點/浮點整數(shù)/小數(shù)有符號數(shù)/無符號數(shù)復(fù)數(shù)處理器支持的數(shù)據(jù)字長:8位–字節(jié)16位–短字32位–正常字64位–長字,

雙字,四字

15ComputeBlockRegisters數(shù)據(jù)字寬/操作數(shù)長度

處理器的基本單位是32位(寄存器寬度)少于32-位的數(shù)據(jù)類型打包成一個32位進(jìn)入寄存器多個寄存器組合到一起支持大于32位的數(shù)據(jù)類型舉例:-64位輸出(雙寄存器)-操作把數(shù)據(jù)看作4個16位的操作數(shù)-結(jié)果是4個16位的值。

短字指令6304個16位的操作數(shù)4個16位的操作數(shù)4個16位結(jié)果630操作數(shù)字長

+/-+/-+/-+/-16ComputeBlockRegisters寄存器–寄存器名稱使用規(guī)則通用寄存器命名約定{X|Y|XY}[letter][#]或者{X|Y|XY}[letter][#]:[#]單寄存器R1 XR14 YR23雙寄存器(兩個寄存器中標(biāo)號最小的標(biāo)號能被2整除)R1:0XR13:12XYR25:24四寄存器(四個寄存器中標(biāo)號最小的標(biāo)號能被4整除)R3:0YR19:16R31:2817ComputeBlockRegisters操作數(shù)字長在指令中定點數(shù)據(jù)(操作數(shù)大?。┛梢园凑障旅娴姆椒ū硎荆?位數(shù)據(jù)(字節(jié))-用B表示 BR1,BR1:0,BR3:016位數(shù)據(jù)(短字)–用S表示 SR1,SR1:0,SR3:032位數(shù)據(jù)(正常字)-(無字母)R0R1:0,R3:064位數(shù)據(jù)(長字)–用L表示 LR1:0浮點數(shù)據(jù)32位數(shù)據(jù)–用F表示 FR340位數(shù)據(jù)–用F表示 FR1:018ComputeBlockRegisters31242316158703116150310計算塊X中的寄存器–8位數(shù)據(jù)計算塊X中的寄存器–16位數(shù)據(jù)計算塊X中的寄存器–32位數(shù)據(jù)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是寄存器的個數(shù)d表示雙寄存器R1:0=R3:2+R5:4;; /*數(shù)據(jù)被看作2個32-位的值*/BR1:0=R3:2+R5:4;; /*數(shù)據(jù)被看作8個8-位的值*/xBR1:0=R3:2+R5:4;; /*與上面相同的指令,只在CBX中執(zhí) 行*/xySR1:0=R3:2+R5:4;; /*數(shù)據(jù)被看作4個16-位的值*/yLR1:0=R3:2+R5:4;; /*數(shù)據(jù)被看作1個64-位的值*/21ComputeBlockRegisters2.2.2處理器核-寄存器組有8個寄存器組:計算塊數(shù)據(jù)和狀態(tài)寄存器整數(shù)ALU寄存器DMA寄存器控制寄存器鏈路口寄存器中斷和程序控制寄存器調(diào)試邏輯寄存器分支目標(biāo)緩沖寄存器(BTB)22ComputeBlockRegisters2.3ALU概述定點指令浮點指令特殊指令-PR寄存器特殊指令-VMAX和VMIN指令選項狀態(tài)標(biāo)志和條件條件指令23ComputeBlockRegistersCompblockXALUMultShiftRegFileALU–概述(I)計算塊的ALU單元支持:邏輯運算(AND,OR,XOR,NOT)算術(shù)運算(加,減,遞增,遞減,sideways加法)MIN,MAX,比較VMIN/VMAX數(shù)據(jù)轉(zhuǎn)換

*擴(kuò)展

*壓縮

*合并24ComputeBlockRegistersCompblockXALUShiftALU–概述

(II)ALU執(zhí)行:定點數(shù)和浮點數(shù)的算術(shù)操作

定點數(shù)的邏輯操作ALU定點指令支持的操作:8-位(字節(jié))輸入操作數(shù)

16-位(短字)輸入操作數(shù)

32-位(正常字)輸入操作數(shù)

64-位(長字)輸入操作數(shù)

128-位(四字)輸入操作數(shù)

輸出32-,64-,或者128-位結(jié)果.ALU浮點指令支持的操作:32-或者40-位浮點操作數(shù)

輸出32-或者40-位結(jié)果.25ComputeBlockRegistersALU指令舉例LR5:4=R11:10+R1:0;; //64-位加,在CBX和CBY中執(zhí)行ySR1:0=R31:30+R25:24;;//四個短字操作數(shù)同時相加,存儲 //到兩個寄存器對中,僅在CBY中 //執(zhí)行 xR3=R5ANDR7;; //CBX中的邏輯AND操作yR4=SUMSR3:2;; //R4中短字與yR3:2中的內(nèi)容相加

//把和放到R4中R9=R4+R8,R2=R4-R8;; //同時加/減, //在CBX和CBY中執(zhí)行26ComputeBlockRegistersALU–指令選項

(I)大部分ALU指令都有選項選項修改了指令的執(zhí)行細(xì)節(jié)選項是針對一組指令有效(不是所有的選項都適用于所有的指令)27ComputeBlockRegistersALU–指令選項

(II)定點選項-符號有下面的意義:X,Y,YX 作為前綴–在X,Y或者兩個計算塊中執(zhí)行B,S,L 作為前綴–字節(jié),短字(16)長字(64)

作為前綴

隱含一個正常(32-bit)字X 擴(kuò)展的范圍(僅ABS指令中使用)S 飽和U 無符號T 截斷Z 返回零(僅在MIN/MAX指令中使用)I 整型數(shù)例如: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位這條指令執(zhí)行四個16位的加操作,并把結(jié)果與PR0寄存器當(dāng)前的內(nèi)容相加。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指令執(zhí)行Viterbi運算法則時使用4條指令8或者16位操作數(shù)選擇步驟取兩個寄存器對的最大值或者最小值-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位。如果指令循環(huán)執(zhí)行,這些位將繼續(xù)移到PR1:0寄存器中

第一個字的結(jié)果比較ALU–特殊指令-VMAX/VMIN在執(zhí)行完SRsd=VMAX指令后,

如果RmRn,則PR1:0→1;否則PR1:0→0;PR1:0寄存器將保持:34ComputeBlockRegistersALU–狀態(tài)標(biāo)志位和條件與ALU有關(guān)的有9個狀態(tài)標(biāo)志位5常規(guī)標(biāo)志4sticky標(biāo)志非映射寄存器XSTAT和YSTAT中的狀態(tài)標(biāo)志位狀態(tài)標(biāo)志位控制指令條件的執(zhí)行在指令執(zhí)行完時設(shè)置狀態(tài)標(biāo)志位Sticky位保持置位狀態(tài),直到被清零35ComputeBlockRegisters在一個并行指令中,狀態(tài)標(biāo)志是所有操作結(jié)果的或。

Ex:假設(shè)YR0=0x00050003和YR1=0x00040008,

執(zhí)行完指令ySR2=R0-R1;;之后,結(jié)果是:

由于兩個數(shù)的減法產(chǎn)生了負(fù)值,設(shè)置yAN標(biāo)志位。

YR131048YR031053YR23101-5ALU–并行指令中的狀態(tài)標(biāo)志位36ComputeBlockRegisters常規(guī)狀態(tài)標(biāo)志位

通過以下更新AZ Fxd為0,F(xiàn)P下溢

所有的ALU操作AN 負(fù)數(shù)

所有的ALU操作AV 溢出

所有的算術(shù)操作AC 進(jìn)位

僅定點操作AI FP無效操作

浮點數(shù)操作Sticky狀態(tài)標(biāo)志AUS StickyFP下溢

僅浮點(FP)操作AVS StickyFP溢出

僅浮點(FP)操作AOS StickyFxdP下溢

僅定點操作AIS StickyFP無效操作

僅浮點(FP)操作

ALU–狀態(tài)標(biāo)志位37ComputeBlockRegistersALU–條件ALU條件是:

條件

描述

設(shè)置標(biāo)志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為條件執(zhí)行。IFyAEQ;do,xR0=R1+R2;;//CBX指令以yAEQ為條件執(zhí)行。IFxALE,jumplabel;;//根據(jù)xALE條轉(zhuǎn)。39ComputeBlockRegistersALU–條件指令(SIMD)IFALE;do,R0=R1+R2;;//如果CBX中的條件為真,執(zhí)行CBX中的加操作,//如果CBY中的條件為真,執(zhí)行CBY加操作。IFALE;do,xR0=R1+R2;; //CBX中的指令根據(jù)xALE的值執(zhí)行。IFALE,jumplabel;; //xALE和yALE或的結(jié)果決定是否條轉(zhuǎn)。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乘-累加器概述指令概述指令選項截取,飽和,共軛定點乘法復(fù)數(shù)乘法浮點指令MR4寄存器狀態(tài)和條件44ComputeBlockRegistersCompblockXALUMultShiftRegFile乘法器–概述乘法器執(zhí)行:定點或者浮點乘法帶累積加/減的定點乘法和累加

。乘法器浮點指令對以下進(jìn)行操作:32或者40位操作數(shù)

輸出32或者40位結(jié)果。乘法器定點指令4個16位MACs-或者1個32位MAC輸出16位,32位或者64位結(jié)果輸出20位,40位,或者80位累加(MAC)結(jié)果45ComputeBlockRegisters乘法器–乘法的類型三種類型的定點操作單32位MAC四字16位MAC單16位復(fù)數(shù)MAC

乘和累加稱為MAC轉(zhuǎn)移和MAC在執(zhí)行MAC之前,把內(nèi)部乘法器寄存器中的內(nèi)容轉(zhuǎn)移到寄存器組中。復(fù)數(shù)乘法和MAC用法:

實部為16位

虛部為16位46ComputeBlockRegisters32-bitwordinst.31032operandRm32x32MULT32operandRn32or64resultRsldualaccum(64or80)MR乘法器–32位乘法指令32位乘舉例:

XYRs=Rm*Rn XYR4=R6*R832位MAC舉例MR3:2+=R11*R12(MR1:0或者M(jìn)R3:2是累加器)47ComputeBlockRegisters16-bitshortwordinst.630quad16operandRmlquad16operandquad16/32resultRnl630Rsl16x16MULT16x16MULT16x16MULT16x16MULTquadaccum(16/20or32/40)MRMAC是寄存器Rmd和Rnd中4個16-位字(短字)的乘法運算,乘積的結(jié)果可以作為字的結(jié)果與MR3:0當(dāng)前的內(nèi)容相加,也可以作為16-位短字的結(jié)果與雙寄存器MR3:2中的內(nèi)容相加。溢出位放到寄存器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中的復(fù)數(shù)值相乘,乘積的結(jié)果與MR3:2的當(dāng)前內(nèi)容相加。溢出位放入寄存器MR4中。乘法器–16位復(fù)數(shù)乘法指令(I)16位復(fù)數(shù)乘法舉例

MRa=Rm**RnMR3:2=R9**R716位復(fù)數(shù)MAC舉例MR3:2+=Rm**Rn;注意;MR4提供了額外16位實部和16位虛部16-bitcomplexwordinst.310imag1dual32/40result630MR16x16MULT16x16MULT16x16MULT16x16MULTreal1imag2real2+/+-/+49ComputeBlockRegisters乘法器–16位復(fù)數(shù)乘法指令(II)復(fù)數(shù)乘法器用一個32位正常字中的兩個短字表示復(fù)數(shù)。

位15:0表示復(fù)數(shù)的實部位31:16表示虛部.乘法器把復(fù)數(shù)乘法的結(jié)果存儲到一對MR寄存器中。復(fù)數(shù)乘和累加定義為(匯編語言語法表示為**):{}和[]分別表示復(fù)數(shù)中的實部和虛部{Result}={Rm}*{Rn}-[Rm]*[Rn][Result]={Rm}*[Rn]+[Rm]*{Rn}50ComputeBlockRegisters乘法器–16位復(fù)數(shù)乘法指令(III)沒有共軛選項設(shè)置:{Result}={Rm}*{Rn}-[Rm]*[Rn][Result]={Rm}*[Rn]+[Rm]*{Rn}有共軛選項設(shè)置:{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-位浮點乘法兩個乘法器都可以執(zhí)行單精度(32-bit)浮點乘法

擴(kuò)展精度(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-位浮點乘法擴(kuò)展精度舉例FRsd=Rmd*RndFR25:24=R27:26*R30:29(T)

擴(kuò)展精度為尾數(shù)提供額外的8位:24+8=32位尾數(shù)8位指數(shù)54ComputeBlockRegisters大部分的乘法器選項都可以獨立操作,提高了乘法器的靈活性和功能性。

選項

選項代碼

默認(rèn)

有符號/無符號數(shù) U 有符號整數(shù)/小數(shù) I 小數(shù)清零 C 未清零截斷/截尾 T 截斷清零和截斷 CR 未清零/截斷飽和 S 未飽和共軛 J 非共軛

乘法器–指令選項概述55ComputeBlockRegisters乘法器–可組合的指令選項

選項組合的例子SU 飽和的無符號數(shù)nU 一個操作數(shù)有符號,一個無符號

I 整數(shù)IU 無符號整數(shù)IS 飽和的整數(shù)ISU 飽和的無符號整數(shù)56ComputeBlockRegisters乘法器–指令選項有符號/無符號數(shù)選項應(yīng)用于所有的定點操作。()= 兩個輸入操作數(shù)都是有符號的(U)= 兩個輸入操作數(shù)都是無符號的(nU)= Rm是有符號的;Rn是無符號的有符號數(shù)用2的補碼表示整數(shù)/小數(shù)選項應(yīng)用于所有的定點操作.()= 小數(shù)(I)= 整數(shù)57ComputeBlockRegistersSignbit2632622612602423222120

Bit63Bit0二進(jìn)制小數(shù)點UnsignedintegerUnsignedFractionalSignbit2-12-22-32-42-622-632-64

Bit63Bit0BinarypointWeight-2632622612602423222120

Bit63Bit0二進(jìn)制小數(shù)點SignedintegerWeight.........SignedFractional-2-02-12-22-32-612-622-63

Bit63Bit0Binarypoint...WeightWeight乘法器–整數(shù)/小數(shù)定點格式58ComputeBlockRegisters乘法器–截斷截斷選項截斷適用于所有的定點和浮點操作。

()= 截取最接近的整數(shù)(T)= 截斷浮點數(shù)->截取接近零方向定點數(shù)->截取接近無窮方向注意默認(rèn)值截取最近整數(shù)59ComputeBlockRegisters乘法器–清除/截斷清零和截取選項僅僅適用于32位小數(shù)和四字16位小數(shù)的MAC操作。

()= 禁止選項MR寄存器在進(jìn)行MAC之前不清零(C)= 清零在進(jìn)行MAC之前清零MR寄存器(CR)= 清零和截取在執(zhí)行MAC操作之前清零指定的MR寄存器并設(shè)置截取位。60ComputeBlockRegisters乘法器–飽和飽和選項處理器執(zhí)行飽和和定點操作,如果:飽和選項使能(S)結(jié)果溢出,超出目的格式的范圍。適用于任何可能溢出的定點乘法操作。

()= 未飽和(S)= 飽和MAC操作沒有飽和選項。當(dāng)累加超過20/40/80位時,乘法器總是使MAC的結(jié)果飽和。帶飽和設(shè)置的基于乘法操作的寄存器組使整數(shù)飽和到最大可以表示的數(shù)使小數(shù)飽和乘-1,-1為0x7F…F61ComputeBlockRegisters乘法器–共軛共軛選項僅適用于復(fù)數(shù)MAC操作。

當(dāng)使能時,Rm操作數(shù)與Rn操作數(shù)的復(fù)共軛相乘;也就是Rn的虛部取反。()= 非共軛(J)= 復(fù)數(shù)乘共軛62ComputeBlockRegistersMR4寄存器保留MAC操作的溢出位,寄存器域按照所使用的寄存器和結(jié)果的長短變化:80-位累加的長字結(jié)果

40-位累加的正常字結(jié)果

20-位累加的短字操作

乘法器-MR4寄存器組

(I)MR1:0MR3:216MR4310MR0MR316MR4310824MR2MR1MR0MR316MR4310824MR2MR14122028MR0MR2MR1MR3[H][L][H][L][H][L][H][L][L]=lowshortfield[H]=highshortfield63ComputeBlockRegisters乘法器-MR4寄存器域

(II)乘法器使用MR4溢出位作為MAC操作的累加步驟當(dāng)清除相應(yīng)的MRx寄存器時清除這些位。

當(dāng)存儲時,乘法器使用這些位作為飽和位。

這些位允許MAC序列的超出最終結(jié)果表示的范圍。

64ComputeBlockRegisters乘法器–狀態(tài)標(biāo)志位乘法器更新X-stat和Y-stat寄存器中的9個狀態(tài)標(biāo)志位

狀態(tài)標(biāo)志MZ 乘法器為零MN 乘法器為負(fù)MV 乘法器上溢MU 乘法器下溢MI 乘法器浮點無效操作粘連標(biāo)志MUS 乘法器定點數(shù)粘連下溢MVS 乘法器浮點數(shù)粘連上溢MOS 乘法器定點數(shù)粘連上溢MIS 乘法器浮點數(shù)粘連無效操作狀態(tài)和粘連狀態(tài)標(biāo)志保存在X/YSTAT寄存器中。65ComputeBlockRegisters乘法器–條件

(I)乘法器條件是:

條件 描述

標(biāo)志設(shè)置MEQ 乘積等于零 MZMLT 乘積小于零 MN和MZMLE 乘積小于或等于零 MN或者M(jìn)Z

NMEQ 乘積不等于零 MZNMLT 乘積不小于零 MN和MZNMLE 乘積不小于或者等于零 MN或者M(jìn)Z 66ComputeBlockRegisters乘法器–條件

(II)條件指令可以為以下條件

XSTAT寄存器中一個條件YSTAT寄存器中一個條件XSTAT或者YSTAT的一個條件例子ifXMEQ,JumpLabel_10;; /*如果X乘法器設(shè)置了零標(biāo)志

執(zhí)行跳轉(zhuǎn)*/ifNYMLT;doYR2=R0+R1;; /*如果Y乘法器條件不是MLT

執(zhí)行加操作*/ ifMEQ,JumpLabel_13;; /*如果XORY乘法器設(shè)置MZ

執(zhí)行跳轉(zhuǎn)*/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或者M(jìn)R3: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或者M(jìn)R3:2或者M(jìn)R3:0之一68ComputeBlockRegisters乘法器–指令集

(II)復(fù)數(shù)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或者M(jìn)R3: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移位器綜述指令概述移位器操作移位–循環(huán)位處理位段處理位流處理變換狀態(tài)和條件71ComputeBlockRegistersCompblockXALUMultShiftRegFile移位器-綜述移位器操作:移位和循環(huán),左移,右移位處理;位設(shè)置,清除,觸發(fā)和測試位段處理;段抽取和存貯轉(zhuǎn)換16位塊浮點數(shù)縮放比例因數(shù)指數(shù)抽取抽取前面的1或者0定點數(shù)的移位器操作。對于輸入:一個64位操作數(shù)一個或者兩個32位操作數(shù)兩個或者四個16位操作數(shù)四個或者八個8位操作數(shù)72ComputeBlockRegisters移位器–操作數(shù)

操作數(shù)–語法約定Rn操作數(shù)是移位器進(jìn)行操作的數(shù)據(jù)。

Rm操作數(shù)指明移位大小,位域長度,或者位置。Rs操作數(shù)讀-修改-寫(RMW)數(shù)據(jù),是被操作和更新的數(shù)據(jù)。

注意:僅有一個選項可用于移位器:指令–符號擴(kuò)展-(SE)

73ComputeBlockRegisters移位器操作-移位/循環(huán)

(I)移位和循環(huán):ASHIFT 執(zhí)行算術(shù)移位。LSHIFT 執(zhí)行邏輯移位。ROT 執(zhí)行循環(huán)移位.所有移位和循環(huán)值都是2-補碼有符號數(shù)。

對于Rm->LEFT移位和循環(huán)是一個正值對于Rm->RIGHT移位和循環(huán)是一個負(fù)值移位器利用Rm中的LSB的立即數(shù)計算所得的移位數(shù)。74ComputeBlockRegisters000100100011010001010110111011110000000100100011010001010110111000100011010001010110111011110000xxxxxxxxxxxxxxxxxxxxxxxxxxxx0100RmShiftmagnitude=4RnRsRsShiftleftby4bitsShiftrightby4bitsZerofillbitsinMSBsZerofillbitsinLSBs0x123456EF0x0123456E0x000000040x23456EF0移位器操作-移位/循環(huán)

(II)邏輯移位舉例。Rs=LSHIFTRnBYRmRn中的內(nèi)容移位Rm(4)指定的位數(shù),結(jié)果放入Rs中。注意Rm=-4是右移Rm=+4是左移75ComputeBlockRegisters10010010001101000101011011101111xxxxxxxxxxxxxxxxxxxxxxxxx1111000RmRnRsShiftrightby8bitsSignextendedMSBs1111111110010010001101000101011011101111deletedLSBsArithmeticleftshiftisidenticaltoLogicalleftshift0x923456EF0xFFFFFFF80xFF923456Shiftvalue=-8移位器操作-算術(shù)移位舉例右移8位算術(shù)移位舉例。Rm包含右移的位數(shù)(-8)Rs=ASHIFTRnBYRm76ComputeBlockRegisters寄存器操作數(shù)的移位的位數(shù)由寄存器Rm的LSB位指定。Rm所用位數(shù)取決于數(shù)據(jù)的長度:長字 8bits正常字 7bits短字 6bits字節(jié) 5bits對于立即數(shù)的操作,需要的位數(shù)是:長字 7bits正常字 6bits短字 5bits字節(jié) 4bits移位器操作-移位/循環(huán)

(II)移位和循環(huán)移位和循環(huán)只移位只移位77ComputeBlockRegisters移位器操作-位處理位處理操作是:BCLR 清零一位。BSET 設(shè)置一位。BTGL Toggles(與1XOR)abit.BITEST 測試一位舉例:Rs=BCLRRnByRmRsd=BSETRndByRm78ComputeBlockRegisters00010010001101000101011111101111xxxxxxxxxxxxxxxxxxxxxxxxxx001000RmRnRs00010010001101000101011011101111EighthbitinRnclearedValue=80x000000080x123456EF0x123457EF31031318thbit移位器操作-位處理:位清零位處理BCLR舉例。寄存器Rn清零第八位(由Rm指定)并把結(jié)果放入Rs中。Rs=BCLRRnByRm;79ComputeBlockRegisters移位器操作-位段處理

(I)位段處理操作是:FEXT 按照另一個寄存器指定的長度和位置從寄存器中抽 取一段。FDEP 按照另一個寄存器中指定的位置和長度從右端放入 到一個寄存器中。MASK 通過屏蔽復(fù)制一個32-或者64-位段。XYSTAT 加載和存儲所有位或者僅是X/YSTAT寄存器的14 位LSBs。

對于抽取和存放操作,Rm操作數(shù)包含兩個字段中的控制信息:<len7>和<pos8>。

這些字段的位置取決于Rm是一個單字-或者雙字-寄存器。80ComputeBlockRegisters63320<pos8><len7>RmdRm3115860<pos8><len7>Len指定抽取的位數(shù)Pos指定Rn中的起始位置抽取位存儲在Rs的右端移位器操作-位段操作

(II)FEXT按照另一個寄存器指定的長度和位置從寄存器中抽取一個字段。Rm操作包含兩段中的控制信息:<len7>and<pos8>.段的位置取決于Rm是一個單字-或者雙字寄存器。81ComputeBlockRegistersRm311580xxxxxxxxxxxxxxxx00000101x0001000Length8bitsStartatbit50x0000050831150xxxxxxxxxxxxxxxx000100100011010031150xxxxxxxxxxxxxxxxxxxxxxxx10010001RnRs0x000012340x00000091bit5移位器操作-位段處理

(III)從Rn中抽取一個8位字段(FEXT),從6th

位復(fù)制并放在Rs中的LSBs。Rs=FEXTRnByRm;82ComputeBlockRegisters移位器操作-轉(zhuǎn)換操作浮點轉(zhuǎn)換支持的操作如下:BKFPT 決定16-位塊浮點中縮放比例因數(shù)。EXP 抽取指數(shù)。LDx 抽取前面的零(0)或者一(1)83ComputeBlockRegisters移位器–狀態(tài)標(biāo)志

移位器在每次操作結(jié)尾更新XSTAT和YSTAT狀態(tài)寄存器中的兩個標(biāo)志位。標(biāo)志如下:BF 塊浮點標(biāo)志。僅更新BKFPT指令。SN 移位器結(jié)果為負(fù)。SZ 移位器結(jié)果為零。

SF0和SF1是計算塊靜態(tài)標(biāo)志0和1的條件。84ComputeBlockRegisters移位器–條件移位器條件條件

描述

標(biāo)志設(shè)置SEQ 等于零 SZSLT 小于零 SNandSZNSEQ 不等于零 SZNSLT 不小于零 SNandSZ

舉例ifXSLT,JumpLabel_10;;

ifNYSLT,JumpLabel_12;;

ifNSLT;DOR3=R5+R6;;85ComputeBlockRegisters移位器操作-位流處理

(I)位流處理操作數(shù)是:GETBITS

從一個位流中抽取位。PUTBITS 把位放入一個位流中。BFOTMP 從GETBITS和PUTBITS指令暫存或者返 回溢出位。位流處理操作,與ALUBFOINC指令結(jié)合,執(zhí)行FIFO操作修改一個臨近位流中的位。對于位流抽取和存放操作,Rmd操作數(shù)包含兩段控制信息:<BFP6>and<len6>。

這兩個段形成一個寄存器對Rmd86ComputeBlockRegisters310310BFP6Len6RmdRbRbBFP-6-位段

當(dāng)前的位FIFO指針,指向Rnq中位流的位置,在開始此處抽取/插入。

Len-6-位段-指定抽取的位數(shù)

注意:位

FIFO指針必須利用BFOINCALU指令進(jìn)行增操作移位器操作-位流處理(II)GETBITS–從一個位流中抽取位。Rsd=GETBITSRnqBYRmd

雙Rmd包含GETBITS/PUTBITS操作的控制信息。87ComputeBlockRegisters移位器把抽取的位放到Rsd中,其右端從零開始。

SE選項–符號擴(kuò)展–用與抽取數(shù)據(jù)的MSB相同的數(shù)填充。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-位取決于操作數(shù)的大小。91ComputeBlockRegisters2.6整型ALU(IALU)綜述指令概述IALU寄存器尋址操作循環(huán)緩沖位反序整數(shù)操作狀態(tài)和條件92ComputeBlo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論