第講TS存儲器和程序定序器_第1頁
第講TS存儲器和程序定序器_第2頁
第講TS存儲器和程序定序器_第3頁
第講TS存儲器和程序定序器_第4頁
第講TS存儲器和程序定序器_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3講: TS101的存儲器和 程序控制器主講:秦國棟1Memory第3講內(nèi)容提示3.1 存儲器特點(diǎn)3.2 存儲器映射3.3 存儲器訪問類型和規(guī)則3.4 定序器的功能和指令類型3.5 分支和中斷3.6 定序器指令2Memory3.1 TS101存儲器的特點(diǎn)3個存儲器塊M0M1M2Sequencer128bJ ALU128b128bK ALU128bComp block XI/O Processor Comp block Y128bLink PortsExternal Bus3MemoryTS101內(nèi)部存儲器特點(diǎn)三個內(nèi)部存儲器塊,每個64K x 32位三個內(nèi)部128位數(shù)據(jù)總線,每個都與一個存儲器

2、模塊相連在一個周期中可以進(jìn)行3個128-位的傳輸操作 2個數(shù)據(jù)傳輸和一個程序指令傳輸I/O處理器一次僅能使用一次內(nèi)部總線注意: I/O處理器和核爭用指令總線存儲器可以交替地存儲指令和數(shù)據(jù)每個指令周期允許對每個存儲器塊訪問一次4Memory0 x000000000 x0000FFFF0 x000800000 x0008FFFF0 x001000000 x0010FFFF0 x001800000 x001807FFInternal Memory 0Internal Memory 1Internal Memory 2Internal Registers0 x003FFFFF0 x000000000

3、x003FFFFF0 x01C00000Internal MemoryBroadcast0 x02000000Processor ID 00 x02400000Processor ID 10 x02800000Processor ID 20 x02C00000Processor ID 30 x03000000Processor ID 40 x03400000Processor ID 50 x03800000Processor ID 60 x03C00000Processor ID 70 x040000000 x100000000 x0C0000000 x08000000SDRAMMemory

4、block 0Memory block 1HostINTERNAL SPACE3.2 TS101的存儲器映射全局地址5Memory主機(jī)存儲空間內(nèi)部存儲器空間外部存儲器空間多處理器存儲器空間0 xFFFF FFFF 0 x1000 00000 x0FFF FFFF 0 x0400 00000 x03FF FFFF 0 x01C0 00000 x003F FFFF 0 x0000 0000對應(yīng)主機(jī)處理器。 作為從機(jī)尋址被訪問的主機(jī)。主地址空間是3.75 G字適用于片外存儲器和存儲器映射I/O裝置SDRAM,其它存儲器裝置和 I/O 外設(shè)。對應(yīng)多處理器系統(tǒng)中其它處理器的內(nèi)部存儲器和廣播存儲器空間。處

5、理器ID標(biāo)識出處理器群中的每個處理器。對應(yīng)處理器的內(nèi)部地址空間,Ureg和SIMD空間 。存儲器映射存儲器訪問32位地址空間的4G個字。6Memory0 x0FFF FFFF 0 x0C00 0000尋址外部存儲器塊1。MS1 外部存儲器塊MS0 外部存儲器塊SDRAM0 x07FF FFFF 0 x0400 00000 x0BFF FFFF 0 x0800 0000尋址外部存儲器塊0。尋址外部SDRAM 裝置。外部存儲器空間地址:MS1外部存儲器塊MS0 外部存儲器塊SDRAM 存儲器裝置7MemoryID111ID110ID101ID100ID011ID010ID001ID000Broad

6、cast Write0 x01C0 0000 to 0 x01FF FFFF0 x02C0 0000 to 0 x02FF FFFF0 x0280 0000 to 0 x02BF FFFF0 x0240 0000 to 0 x027F FFFF0 x0200 0000 to 0 x023F FFFF0 x0300 0000 to 0 x033F FFFF0 x0340 0000 to 0 x037F FFFF0 x0380 0000 to 0 x03BF FFFF0 x03C0 0000 to 0 x03FF FFFF多處理器存儲器空間地址:處理器ID000處理器ID001處理器ID010處理

7、器ID011處理器ID100處理器ID101處理器ID110處理器ID111廣播存儲器空間8Memory0 x0000 0000 to 0 x0000 FFFF0 x0018 0000 to 0 x0018 07FF0 x0010 0000 to 0 x0010 FFFF0 x0008 0000 to 0 x0008 FFFFUregsBlock 1Block 0Block 2內(nèi)部存儲器空間地址:Uregs塊 2塊 1塊 09Memory0000 - 00 xx - xxxx- xxxx - xxxx - xxxx - xxxx - xxxx 18:0 Address31:26PRID 25:

8、22ISPACE 21:190000 - 00 xx - xxxx- xxxx - xxxx - xxxx - xxxx - xxxx 位4:0定義32個寄存器位 10:6定義64個寄存器組Ex. Address of register number 0 x14 in register group 39 存儲器映射 UREG組低11位定義UREG組和UREG10Memory3.3 存儲器訪問類型和規(guī)則有效的存儲器訪問方法:廣播寫 - (參看外部存儲器訪問)交叉?zhèn)鬏斣L問合并分配廣播分配注意: 在廣播寫中, 一個TigerSHARC寫到其它幾個TigerSHARCs 中。在合并分配中一條指令訪問兩

9、個計(jì)算塊。在廣播分配中一條指令給兩個計(jì)算塊加載相同的數(shù)據(jù)。11Memory合并分配(I)在合并分配中一條指令訪問兩個計(jì)算塊。合并分別從兩個計(jì)算塊的存儲器中加載數(shù)據(jù)。數(shù)據(jù)傳輸?shù)拇笮Q定數(shù)據(jù)是如何分解的。指令語法決定數(shù)據(jù)的分配正常的,按照 x y次序分配反序前綴(y x) 反序分配的次序12Memory長字訪問長字訪問 (翻轉(zhuǎn))xyR1 = LJ0 += 2;yxR1 = LJ0 += 2;word2word1CBXCBYword2word1CBXCBY合并分配 (II)13Memory四字訪問四字訪問 (翻轉(zhuǎn))xyR3:2 = qJ0 += 4;CBXCBYword3word2word0word

10、1word3word2word1word0yxR3:2 = qJ0 += 4;CBXCBYword3word2word0word1word3word2word1word0合并分配(III)14Memoryword2word3word1word0word2word3word1word0word2word3word1word0CBXCBY廣播分配在廣播分配中一條指令把相同的數(shù)據(jù)加載到兩個計(jì)算塊中。正常字,長字,四字訪問的操作例子:R11:8 = qJ0 += 4;15Memory廣播寫廣播寫與廣播分配不同。在相同的TigerSHARC中,廣播分配把相同的數(shù)據(jù)分配到兩個計(jì)算塊中廣播寫把相同的數(shù)據(jù)分配

11、到幾個TigerSHARC中。廣播寫通過一個TigerSHARC寫廣播存儲器空間來完成。例子: 當(dāng)幾個TigerSHARC需要在相同的數(shù)據(jù)流中進(jìn)行相同的算術(shù)運(yùn)算時,廣播寫用于有效地把數(shù)據(jù)分配到所有的處理器中。16Memory062C84EAquad-word alignedlong-word alignednormal-word aligned32 bits32 bits32 bits32 bits數(shù)據(jù)大小和對齊數(shù)據(jù)在存儲器中以正常字-,長字-,或者四字-為邊界對齊正常字 = 32位 (e.g. xR1 )長字 = 64 位 (e.g. xR3:2 )四字 = 128位 (e.g. xR7:4

12、 )17Memory0 1 2 3 4 5 6.50 51 52 53 54 55 56 5750 values50 values50 values50 values數(shù)據(jù)對齊 - 應(yīng)用舉例有時會遇到數(shù)據(jù)不對齊的情況一般的運(yùn)算法則都需要知道運(yùn)算的類型。一個內(nèi)部循環(huán):把循環(huán)緩沖區(qū)中的50個連續(xù)的值加載到計(jì)算塊中。執(zhí)行一次MAC 存儲一個值外循環(huán)增加起始位置并重復(fù) 18MemoryJ L registersJ L 0J L 1J L 3J B 0J B 1J B 2J B 3J 0J 1J 2J 3J L 2J index registersJB registersDAB 訪問 (I)DAB 訪問指

13、令 用來訪問存儲器中未對齊的四字。限制計(jì)算塊中四字的加載。不支持合并的加載和存儲器存儲。DAB 總是在一個循環(huán)緩沖寄存器組中訪問在執(zhí)行 DAB指令之前,設(shè)置基址和長度寄存器。如果進(jìn)行線性訪問,把對應(yīng)的L寄存器長度設(shè)置為0。19MemoryDAB 訪問 (II)a0rXrXrXb0a3a2a1c0b3b2b1d0c3c2c1e0d3d2d1Instruction referencesthis location with J0 (0 x03)First memory access references this location 0 x 00 as “nearest” quad aligned b

14、oundarya0rXrXrXXXXXa0rXrXrXa1a2a3b0X X X X flushed by second memory accessMemory - 128-bit wideDAB after first accessDAB after second accessExample instruction: R3:0 = DAB Q J0 += 4;Assume J0 = 03Quad transfers out of DAB start at J0 - a0, a1, a2, a3, 0004080C10Residual data from previous access20Me

15、moryMemory - 128-bit wideFour 32-bit wordsEight 16-bit wordsa2a0XXXXXa1a3a4a5a6a7b0b1b2b3b4b5b6b70C08040007 06 05 04 03 02 01 00 16-bit reference03 02 01 00 32-bit referenceExample instruction: R3:0 = SDAB Q J0 += 8 ;Assume J0 = 05Solution:Lower 16-bit word will be 2x the 32 bit referenceUpper 16-bi

16、t word will be 2x 32-bit reference + 1Prefix “S” in SDAB signals this form of addressingDAB 訪問(III) 短字操作對于短字訪問問題是怎樣索引高或者低16位字位置?21Memory存儲器尋址的限制包含UREG內(nèi)部存儲器空間寫處理時僅通過多處理器空間進(jìn)行訪問,使用總線簇要注意!在處理器(不是MP空間)內(nèi)部用作數(shù)據(jù)交換的內(nèi)部存儲器空間不會映射到總線簇上。僅外部主總線可以訪問存儲器映射的通用寄存器。它們通過多處理存儲器空間進(jìn)行訪問。所有的存儲器必須在正確的字長范圍內(nèi)進(jìn)行訪問。22Memory3.4 程序定序器

17、功能和指令類型. M0M1M2Sequencer128-entry BTB128bJ ALU128b128bK ALU128bProc El Y Proc El XI/OProcessor 定序器的地位23MemorySequence128-entry BTB128b定序器功能管理程序的結(jié)構(gòu)和程序流 :提供下一條要執(zhí)行的指令的地址 維護(hù)一個指令對齊緩沖區(qū) (IAB)用于高速取等待執(zhí)行的指令。減少分支目標(biāo)緩沖區(qū) (BTB)分支延遲,以保證條件和非條件指令的有效執(zhí)行。減少循環(huán)數(shù)。估計(jì)條件。處理中斷。24MemoryMemory address fetch muxBranchTargetBuffer

18、 InterruptUnit ProgramCounter 32 bit fetch addressInstruction Alignment Buffer128-bit bit data from memoryInstructions output to the ALU, MAC, Shifter, IALUMemoryInterruptsInc.定序器 簡化的方框圖.25Memory指令流的幾種類型線性流循環(huán)跳轉(zhuǎn)子程序中斷IDLE InstructionInstructionInstructionInstructionInstructionLoopN TimesInstructionIns

19、tructionInstructionRTIInstructionInstructionInstructionRETSInstructionInstructionInstructionCALLInstructionInstructionInstructionInstructionInstructionInstructionInstructionInstructionAddress:nn + 1n + 5n + 4n + 3n + 2Linear FlowJUMPInstructionInstructionInstructionInstructionInstructionJumpSubrouti

20、neInterruptIdleIDLEInstructionInstructionInstructionInstructionInstructionInterruptCJMPRTI/RETILC0 = N26Memory定序器指令 類型定序器指令有兩種類型條件分支指令Ex. IF XAEQ, JUMP Label_1(NP);IF YAEQ, CALL SBR_12;條件執(zhí)行指令Ex.IF XMEQ; DO, XR3:2 = R5:4 + R7:6;27MemoryFetch 1 Fetch2 Fetch 3 Decode Integer Operand Ac. Execute 1 Execu

21、te 23 step Fetch pipe5 step Instruction pipe8 step Processor pipe流水類型包含兩階段流水:取指流水(3級)指令流水(5級)每個內(nèi)部時鐘周期執(zhí)行一個指令行。28Memory取指流水 指令對齊緩沖區(qū)(IAB)IAB 是存儲器和指令流水之間的5個四字FIFO緩沖區(qū) 。在進(jìn)入譯碼階段之前3個周期取指令(指令流水的第一級)指令以四字方式取出,放到指令隊(duì)列緩沖區(qū)中。當(dāng)IAB包含至少一個完整的指令行時,程序定序器可以把它從指令中抽出執(zhí)行。 程序定序器從IAB中抽出包含中的1, 2, 3, 或者4條指令的指令行,用于處理器譯碼和執(zhí)行。29Memo

22、ryx31001001100010100110001Program MemoryInstruction0128Instruction Flow32-位指令, MSB決定它是否是一行中的最后一條指令。指令是否同時執(zhí)行由每個指令中的MSB決定。指令在未對齊的存儲器中打包。不浪費(fèi)存儲空間a1a2b1b2b3c1d1d2d3d4a1a2b1b2b3c1d1d2d3d4指令對齊緩沖區(qū)30MemoryMemoryInternal Bus2 對齊緩沖區(qū)(IAB)128-bit wide memory word3 FIFOAlignment MUXProc El XProc El YJ ALUK ALU取操作

23、就是抽取128-位,并且把4個連續(xù)的32-位字加載到對器緩沖區(qū)中。.32323232定序器 指令對齊緩沖區(qū) (IAB).31Memory指令流水 - 5 級隨著執(zhí)行指令單元的不同,指令流水各級的細(xì)節(jié)不同: 譯碼級(1)定序器抽取下一條完整的指令并把它分配到各個執(zhí)行單元(IALU, AUL, MULT, 移位器,定序器)定序器更新程序計(jì)數(shù)器。 IALU 譯碼指令。計(jì)算塊把指令傳送到合適的處理器單元中。整數(shù)級 (2)IALU執(zhí)行指令計(jì)算塊處理單元譯碼指令并且檢查相關(guān)性。操作數(shù)訪問(3)對于IALU指令存儲器開始訪問計(jì)算塊處理單元在寄存器組中選擇源寄存器。32Memory指令流水 續(xù)指令流水4級和5

24、級 執(zhí)行1 & 2 IALU等待直到EX2結(jié)束把返回的操作數(shù)結(jié)果送到目的寄存器中 (除了 J和K ALU算術(shù)操作是完全在2級完成)計(jì)算塊處理單元計(jì)算結(jié)果并更新標(biāo)志。注意:在流水操作中,不同的IALU和處理單元之間操作會導(dǎo)致來自于不同分支的不同延遲時間。這點(diǎn)以后再討論。33MemoryInterruptSubroutineLC0 = NInstructionInstructionInstructionInstructionInstructionInstructionInstructionInstructionRTIInstructionInstructionInstructionRETSInst

25、ructionInstructionInstructionCALLInstructionInstructionJUMPInstructionInstructionInstructionInstructionInstructionCJMPRTI/RETILoopJumpInterrupt它們由下面的指令控制:IF cond, JUMP, CALL, CJMP, CJMP_CALL, RETI, RTI 和循環(huán)計(jì)數(shù)器指令。3.5 分支和中斷類型34Memory分支類型 調(diào)用CALL指令改變指令流,通常執(zhí)行一個子程序然后返回線性指令流。當(dāng)分支存在時,下一個順序指令的地址存儲到CJMP寄存器中。子程序

26、的下一條指令是CJMP (ABS)指令這會使指令從CJMP寄存器所指的位置繼續(xù)執(zhí)行。注意: 如果利用CJMP_CALL指令返回,那么除了返回,定序器把下一條順序指令的地址寫到 CJMP寄存器中。35Memory分支類型 循環(huán)LOOP用來重復(fù)地執(zhí)行一組指令,直到遇到一個特殊的條件,然后繼續(xù)執(zhí)行循環(huán)以下的指令。利用條件指令和循環(huán)計(jì)數(shù)器執(zhí)行循環(huán)。 有兩個循環(huán)計(jì)數(shù)器:LC0和LC1和“計(jì)數(shù)器滿”相匹配的條件是LC0E和LC1E計(jì)數(shù)器滿-值減少到零循環(huán)計(jì)數(shù)器的條件通過IF語句試一次,其計(jì)數(shù)值減136Memory分支類型 循環(huán) 例子IF NLC0E, JUMP Label_1; /* 分支通過循環(huán)的條件是

27、否定的條件“循環(huán)計(jì)數(shù)器滿” */ J6 = J31 + 10;/*初始化循環(huán)計(jì)數(shù)器 */Outer_loop:instruction;instruction;LC1 = 5;/*初始化循環(huán)計(jì)數(shù)器 LC1 */Middle_loop:instruction;LC0 = 6;/*初始化循環(huán)計(jì)數(shù)器LC0 */Inner_loop:instruction;instruction;If NLC0E, JUMP Inner_loop; /* 當(dāng)LCO 0時,進(jìn)行內(nèi)循環(huán)*/instruction;instruction;If NLC1E, JUMP Middle_loop; /*當(dāng) LC1 0時,進(jìn)行中間循

28、環(huán)*/instruction; J6 = J6 - 1; /* JALU循環(huán)計(jì)數(shù)器減一*/instruction;If NJEQ, JUMP Outer_loop; /* 當(dāng)JEQ 0時,進(jìn)行外循環(huán)*/37Memory指令流水和分支相互作用(I)分支預(yù)測減少了分支延遲時間代價(jià)。 TigerSHARC 利用分支目標(biāo)緩沖區(qū)預(yù)測分支的位置 (128-入口, 4-路聯(lián)合設(shè)置的高速緩存)BTB 存儲正確預(yù)測的分支指令的特定信息(僅限于內(nèi)部存儲器分支)。最初的分支指令在進(jìn)入到BTB中時會產(chǎn)生延遲。程序員可以控制預(yù)測的使能和禁止。默認(rèn)為使能。選項(xiàng): NP -預(yù)測不存在38Memory流水線和分支相互作用(I

29、I)BTB 每個對齊的四字僅存儲1個入口。入口由最后的指令槽決定 (;), 而不是由跳轉(zhuǎn)指令決定。例子(僅ASM程序):不總能保證足夠的時間間隔jump FIRST_JUMP; LC1 = yR16; NOP; NOP;jump SECOND_JUMP; R29 = R27;例子:利用ASM指令可以保證足夠的時間間隔jump FIRST_JUMP; LC1 = yR16;.align_code 4;jump SECOND_JUMP; R29 = R27;39Memory中斷概述中斷事件的發(fā)生使核停止它當(dāng)前的過程和分支,轉(zhuǎn)而執(zhí)行其它的過程。 中斷事件可能在任何時候發(fā)生而且可以是:處理器內(nèi)部中斷處

30、理器外部中斷中斷的用途是:同步核和非核操作錯誤檢測調(diào)試應(yīng)用控制40Memory中斷- 中斷矢量表 (IVT) 每個中斷有在中斷矢量表(IVT)中有一個矢量寄存器。在中斷標(biāo)志和屏蔽寄存器中有一個指定的位。(ILAT和 PMASK)矢量寄存器包含用戶可定義的服務(wù)于中斷的中斷例程的地址??偣?1個中斷大部分中斷是專用的。4個通用中斷,與 4個 IRQ引腳相連。當(dāng)中斷發(fā)生并且允許用戶屏蔽任何中斷時,標(biāo)志和屏蔽寄存器鎖定中斷。41Memory中斷類型兩組硬件中斷軟件中斷硬件中斷比較重要的性能 在許多情況下都要用到中斷。 軟件中斷由特定的指令,軟件異常引起。高優(yōu)先級42Memory邊沿和電平中斷中斷可以分

31、為邊沿觸發(fā)和電平觸發(fā)中斷邊沿觸發(fā):中斷發(fā)生時被鎖定保持鎖定直到有一條指令服務(wù)或者復(fù)位電平觸發(fā):如果在請求撤銷之前中斷沒有被服務(wù),那么中斷將被忽略。如果在服務(wù)例程執(zhí)行之后保持中斷請求,將被看作一個新的中斷。 43Memory中斷組和中斷優(yōu)先從高到低中斷的優(yōu)先級是:仿真調(diào)試中斷邊沿軟件異常中斷邊沿硬件錯誤中斷電平時鐘0 & 1高優(yōu)先級中斷邊沿總線鎖定中斷邊沿VIRPT矢量中斷邊沿IRQ0-3 中斷可編程DMA 通道 0-13 中斷邊沿鏈路口 0-3中斷邊沿時鐘 0 & 1低優(yōu)先級中斷邊沿44Memory63 ILATH 32 31 ILATL 0中斷控制寄存器中斷矢量表 (IVT)包含中斷矢量寄存器中斷控制器使用3個64-位控制寄存器 ILAT, IMASK 和PMASK 處理中斷。ILAT中斷鎖存寄存器 IMASK中斷屏蔽寄存器PMASK中斷屏蔽指針寄存器64-位可以分成兩個32-位寄存器被訪問,標(biāo)H為高,L為低 例如ILATH和ILATL45Memory中斷操作當(dāng)中斷發(fā)生時:設(shè)置 ILAT中相應(yīng)的位IVT中的中斷矢量地址是下一個要取的地址。 中斷例程中的第一條指令被送到指令流中。處理器設(shè)置為管理方式中斷請求有效,如果:非屏蔽請求(IMASK)中斷全局使能 (IMASK60=1, PMASK60=0)在此期間沒有更高級的中斷RTI. RETI,或者 RDS指令使處理器返回

溫馨提示

  • 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

提交評論