![第讲TS存储器和程序定序器_第1页](http://file4.renrendoc.com/view/5808ce322ec479ebb08f56f29fd4bbe6/5808ce322ec479ebb08f56f29fd4bbe61.gif)
![第讲TS存储器和程序定序器_第2页](http://file4.renrendoc.com/view/5808ce322ec479ebb08f56f29fd4bbe6/5808ce322ec479ebb08f56f29fd4bbe62.gif)
![第讲TS存储器和程序定序器_第3页](http://file4.renrendoc.com/view/5808ce322ec479ebb08f56f29fd4bbe6/5808ce322ec479ebb08f56f29fd4bbe63.gif)
![第讲TS存储器和程序定序器_第4页](http://file4.renrendoc.com/view/5808ce322ec479ebb08f56f29fd4bbe6/5808ce322ec479ebb08f56f29fd4bbe64.gif)
![第讲TS存储器和程序定序器_第5页](http://file4.renrendoc.com/view/5808ce322ec479ebb08f56f29fd4bbe6/5808ce322ec479ebb08f56f29fd4bbe65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3讲: TS101的存储器和 程序控制器主讲:秦国栋1Memory第3讲内容提示3.1 存储器特点3.2 存储器映射3.3 存储器访问类型和规则3.4 定序器的功能和指令类型3.5 分支和中断3.6 定序器指令2Memory3.1 TS101存储器的特点3个存储器块M0M1M2Sequencer128bJ ALU128b128bK ALU128bComp block XI/O Processor Comp block Y128bLink PortsExternal Bus3MemoryTS101内部存储器特点三个内部存储器块,每个64K x 32位三个内部128位数据总线,每个都与一个存储器
2、模块相连在一个周期中可以进行3个128-位的传输操作 2个数据传输和一个程序指令传输I/O处理器一次仅能使用一次内部总线注意: I/O处理器和核争用指令总线存储器可以交替地存储指令和数据每个指令周期允许对每个存储器块访问一次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主机存储空间内部存储器空间外部存储器空间多处理器存储器空间0 xFFFF FFFF 0 x1000 00000 x0FFF FFFF 0 x0400 00000 x03FF FFFF 0 x01C0 00000 x003F FFFF 0 x0000 0000对应主机处理器。 作为从机寻址被访问的主机。主地址空间是3.75 G字适用于片外存储器和存储器映射I/O装置SDRAM,其它存储器装置和 I/O 外设。对应多处理器系统中其它处理器的内部存储器和广播存储器空间。处
5、理器ID标识出处理器群中的每个处理器。对应处理器的内部地址空间,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内部存储器空间地址: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 存储器访问类型和规则有效的存储器访问方法:广播写 - (参看外部存储器访问)交叉传输访问合并分配广播分配注意: 在广播写中, 一个TigerSHARC写到其它几个TigerSHARCs 中。在合并分配中一条指令访问两
9、个计算块。在广播分配中一条指令给两个计算块加载相同的数据。11Memory合并分配(I)在合并分配中一条指令访问两个计算块。合并分别从两个计算块的存储器中加载数据。数据传输的大小决定数据是如何分解的。指令语法决定数据的分配正常的,按照 x y次序分配反序前缀(y x) 反序分配的次序12Memory长字访问长字访问 (翻转)xyR1 = LJ0 += 2;yxR1 = LJ0 += 2;word2word1CBXCBYword2word1CBXCBY合并分配 (II)13Memory四字访问四字访问 (翻转)xyR3:2 = qJ0 += 4;CBXCBYword3word2word0word
10、1word3word2word1word0yxR3:2 = qJ0 += 4;CBXCBYword3word2word0word1word3word2word1word0合并分配(III)14Memoryword2word3word1word0word2word3word1word0word2word3word1word0CBXCBY广播分配在广播分配中一条指令把相同的数据加载到两个计算块中。正常字,长字,四字访问的操作例子:R11:8 = qJ0 += 4;15Memory广播写广播写与广播分配不同。在相同的TigerSHARC中,广播分配把相同的数据分配到两个计算块中广播写把相同的数据分配
11、到几个TigerSHARC中。广播写通过一个TigerSHARC写广播存储器空间来完成。例子: 当几个TigerSHARC需要在相同的数据流中进行相同的算术运算时,广播写用于有效地把数据分配到所有的处理器中。16Memory062C84EAquad-word alignedlong-word alignednormal-word aligned32 bits32 bits32 bits32 bits数据大小和对齐数据在存储器中以正常字-,长字-,或者四字-为边界对齐正常字 = 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数据对齐 - 应用举例有时会遇到数据不对齐的情况一般的运算法则都需要知道运算的类型。一个内部循环:把循环缓冲区中的50个连续的值加载到计算块中。执行一次MAC 存储一个值外循环增加起始位置并重复 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、令 用来访问存储器中未对齐的四字。限制计算块中四字的加载。不支持合并的加载和存储器存储。DAB 总是在一个循环缓冲寄存器组中访问在执行 DAB指令之前,设置基址和长度寄存器。如果进行线性访问,把对应的L寄存器长度设置为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内部存储器空间写处理时仅通过多处理器空间进行访问,使用总线簇要注意!在处理器(不是MP空间)内部用作数据交换的内部存储器空间不会映射到总线簇上。仅外部主总线可以访问存储器映射的通用寄存器。它们通过多处理存储器空间进行访问。所有的存储器必须在正确的字长范围内进行访问。22Memory3.4 程序定序器
17、功能和指令类型. M0M1M2Sequencer128-entry BTB128bJ ALU128b128bK ALU128bProc El Y Proc El XI/OProcessor 定序器的地位23MemorySequence128-entry BTB128b定序器功能管理程序的结构和程序流 :提供下一条要执行的指令的地址 维护一个指令对齐缓冲区 (IAB)用于高速取等待执行的指令。减少分支目标缓冲区 (BTB)分支延迟,以保证条件和非条件指令的有效执行。减少循环数。估计条件。处理中断。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指令流的几种类型线性流循环跳转子程序中断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;条件执行指令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级)每个内部时钟周期执行一个指令行。28Memory取指流水 指令对齐缓冲区(IAB)IAB 是存储器和指令流水之间的5个四字FIFO缓冲区 。在进入译码阶段之前3个周期取指令(指令流水的第一级)指令以四字方式取出,放到指令队列缓冲区中。当IAB包含至少一个完整的指令行时,程序定序器可以把它从指令中抽出执行。 程序定序器从IAB中抽出包含中的1, 2, 3, 或者4条指令的指令行,用于处理器译码和执行。29Memo
22、ryx31001001100010100110001Program MemoryInstruction0128Instruction Flow32-位指令, MSB决定它是否是一行中的最后一条指令。指令是否同时执行由每个指令中的MSB决定。指令在未对齐的存储器中打包。不浪费存储空间a1a2b1b2b3c1d1d2d3d4a1a2b1b2b3c1d1d2d3d4指令对齐缓冲区30MemoryMemoryInternal Bus2 对齐缓冲区(IAB)128-bit wide memory word3 FIFOAlignment MUXProc El XProc El YJ ALUK ALU取操作
23、就是抽取128-位,并且把4个连续的32-位字加载到对器缓冲区中。.32323232定序器 指令对齐缓冲区 (IAB).31Memory指令流水 - 5 级随着执行指令单元的不同,指令流水各级的细节不同: 译码级(1)定序器抽取下一条完整的指令并把它分配到各个执行单元(IALU, AUL, MULT, 移位器,定序器)定序器更新程序计数器。 IALU 译码指令。计算块把指令传送到合适的处理器单元中。整数级 (2)IALU执行指令计算块处理单元译码指令并且检查相关性。操作数访问(3)对于IALU指令存储器开始访问计算块处理单元在寄存器组中选择源寄存器。32Memory指令流水 续指令流水4级和5
24、级 执行1 & 2 IALU等待直到EX2结束把返回的操作数结果送到目的寄存器中 (除了 J和K ALU算术操作是完全在2级完成)计算块处理单元计算结果并更新标志。注意:在流水操作中,不同的IALU和处理单元之间操作会导致来自于不同分支的不同延迟时间。这点以后再讨论。33MemoryInterruptSubroutineLC0 = NInstructionInstructionInstructionInstructionInstructionInstructionInstructionInstructionRTIInstructionInstructionInstructionRETSInst
25、ructionInstructionInstructionCALLInstructionInstructionJUMPInstructionInstructionInstructionInstructionInstructionCJMPRTI/RETILoopJumpInterrupt它们由下面的指令控制:IF cond, JUMP, CALL, CJMP, CJMP_CALL, RETI, RTI 和循环计数器指令。3.5 分支和中断类型34Memory分支类型 调用CALL指令改变指令流,通常执行一个子程序然后返回线性指令流。当分支存在时,下一个顺序指令的地址存储到CJMP寄存器中。子程序
26、的下一条指令是CJMP (ABS)指令这会使指令从CJMP寄存器所指的位置继续执行。注意: 如果利用CJMP_CALL指令返回,那么除了返回,定序器把下一条顺序指令的地址写到 CJMP寄存器中。35Memory分支类型 循环LOOP用来重复地执行一组指令,直到遇到一个特殊的条件,然后继续执行循环以下的指令。利用条件指令和循环计数器执行循环。 有两个循环计数器:LC0和LC1和“计数器满”相匹配的条件是LC0E和LC1E计数器满-值减少到零循环计数器的条件通过IF语句试一次,其计数值减136Memory分支类型 循环 例子IF NLC0E, JUMP Label_1; /* 分支通过循环的条件是
27、否定的条件“循环计数器满” */ J6 = J31 + 10;/*初始化循环计数器 */Outer_loop:instruction;instruction;LC1 = 5;/*初始化循环计数器 LC1 */Middle_loop:instruction;LC0 = 6;/*初始化循环计数器LC0 */Inner_loop:instruction;instruction;If NLC0E, JUMP Inner_loop; /* 当LCO 0时,进行内循环*/instruction;instruction;If NLC1E, JUMP Middle_loop; /*当 LC1 0时,进行中间循
28、环*/instruction; J6 = J6 - 1; /* JALU循环计数器减一*/instruction;If NJEQ, JUMP Outer_loop; /* 当JEQ 0时,进行外循环*/37Memory指令流水和分支相互作用(I)分支预测减少了分支延迟时间代价。 TigerSHARC 利用分支目标缓冲区预测分支的位置 (128-入口, 4-路联合设置的高速缓存)BTB 存储正确预测的分支指令的特定信息(仅限于内部存储器分支)。最初的分支指令在进入到BTB中时会产生延迟。程序员可以控制预测的使能和禁止。默认为使能。选项: NP -预测不存在38Memory流水线和分支相互作用(I
29、I)BTB 每个对齐的四字仅存储1个入口。入口由最后的指令槽决定 (;), 而不是由跳转指令决定。例子(仅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中断概述中断事件的发生使核停止它当前的过程和分支,转而执行其它的过程。 中断事件可能在任何时候发生而且可以是:处理器内部中断处
30、理器外部中断中断的用途是:同步核和非核操作错误检测调试应用控制40Memory中断- 中断矢量表 (IVT) 每个中断有在中断矢量表(IVT)中有一个矢量寄存器。在中断标志和屏蔽寄存器中有一个指定的位。(ILAT和 PMASK)矢量寄存器包含用户可定义的服务于中断的中断例程的地址。总共31个中断大部分中断是专用的。4个通用中断,与 4个 IRQ引脚相连。当中断发生并且允许用户屏蔽任何中断时,标志和屏蔽寄存器锁定中断。41Memory中断类型两组硬件中断软件中断硬件中断比较重要的性能 在许多情况下都要用到中断。 软件中断由特定的指令,软件异常引起。高优先级42Memory边沿和电平中断中断可以分
31、为边沿触发和电平触发中断边沿触发:中断发生时被锁定保持锁定直到有一条指令服务或者复位电平触发:如果在请求撤销之前中断没有被服务,那么中断将被忽略。如果在服务例程执行之后保持中断请求,将被看作一个新的中断。 43Memory中断组和中断优先从高到低中断的优先级是:仿真调试中断边沿软件异常中断边沿硬件错误中断电平时钟0 & 1高优先级中断边沿总线锁定中断边沿VIRPT矢量中断边沿IRQ0-3 中断可编程DMA 通道 0-13 中断边沿链路口 0-3中断边沿时钟 0 & 1低优先级中断边沿44Memory63 ILATH 32 31 ILATL 0中断控制寄存器中断矢量表 (IVT)包含中断矢量寄存器中断控制器使用3个64-位控制寄存器 ILAT, IMASK 和PMASK 处理中断。ILAT中断锁存寄存器 IMASK中断屏蔽寄存器PMASK中断屏蔽指针寄存器64-位可以分成两个32-位寄存器被访问,标H为高,L为低 例如ILATH和ILATL45Memory中断操作当中断发生时:设置 ILAT中相应的位IVT中的中断矢量地址是下一个要取的地址。 中断例程中的第一条指令被送到指令流中。处理器设置为管理方式中断请求有效,如果:非屏蔽请求(IMASK)中断全局使能 (IMASK60=1, PMASK60=0)在此期间没有更高级的中断RTI. RETI,或者 RDS指令使处理器返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生非物质遗产创业项目
- 训练退出申请书
- 大学生创业贷款项目及材料
- 小学四年级数学三位数除以两位数单元检测口算题
- 三年级数学因数中间或末尾有零的乘法综合考核练习题大全附答案
- Unit 2 语法填空同步练习(含解析)-七年级英语下册(沪教版2024)
- 专科教育解析
- 语法掌握之道
- 音乐鉴赏之道
- 艺术历史探秘
- 2023-2024新版北师大七年级数学下册全册教案
- 新人教版五年级小学数学全册奥数(含答案)
- 风电场升压站培训课件
- 2024年光大环保(中国)有限公司招聘笔试参考题库含答案解析
- 50个工具玩转项目式学习
- GB/T 15622-2023液压缸试验方法
- 智能传感器芯片
- 中国儿童戏剧发展史
- 烧结机安装使用说明书
- arcgis软件操作解析课件
- 职业健康检查委托协议书
评论
0/150
提交评论