数字信号处理器:第3讲 TS101的存储器和程序控制器_第1页
数字信号处理器:第3讲 TS101的存储器和程序控制器_第2页
数字信号处理器:第3讲 TS101的存储器和程序控制器_第3页
数字信号处理器:第3讲 TS101的存储器和程序控制器_第4页
数字信号处理器:第3讲 TS101的存储器和程序控制器_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3讲:

TS101的存储器和

程序控制器西安电子科技大学电子工程学院2第3讲内容提示3.1存储器特点3.2存储器映射3.3存储器访问类型和规则3.4定序器的功能和指令类型3.5分支和中断3.6定序器指令西安电子科技大学电子工程学院33.1TS101存储器的特点3个存储器块M0M1M2Sequencer128bJALU128b128bKALU128bCompblockXI/O

Processor

CompblockY128bLinkPortsExternalBus西安电子科技大学电子工程学院4TS101内部存储器特点三个内部存储器块,每个64Kx32位三个内部128位数据总线,每个都与一个存储器模块相连在一个周期中可以进行3个128-位的传输操作–2个数据传输和一个程序指令传输I/O处理器一次仅能使用一次内部总线注意:I/O处理器和核争用指令总线存储器可以交替地存储指令和数据每个指令周期允许对每个存储器块访问一次西安电子科技大学电子工程学院50x000000000x0000FFFF0x000800000x0008FFFF0x001000000x0010FFFF0x001800000x001807FFInternalMemory0InternalMemory1InternalMemory2InternalRegisters0x003FFFFF0x000000000x003FFFFF0x01C00000InternalMemoryBroadcast0x02000000ProcessorID00x02400000ProcessorID10x02800000ProcessorID20x02C00000ProcessorID30x03000000ProcessorID40x03400000ProcessorID50x03800000ProcessorID60x03C00000ProcessorID70x040000000x100000000x0C0000000x08000000SDRAMMemoryblock0Memoryblock1HostINTERNALSPACE3.2TS101的存储器映射全局地址西安电子科技大学电子工程学院6主机存储空间内部存储器空间外部存储器空间多处理器存储器空间0xFFFFFFFF0x100000000x0FFFFFFF0x040000000x03FFFFFF0x01C000000x003FFFFF0x00000000对应主机处理器。

作为从机寻址被访问的主机。主地址空间是3.75G字适用于片外存储器和存储器映射I/O装置—SDRAM,其它存储器装置和I/O外设。对应多处理器系统中其它处理器的内部存储器和广播存储器空间。处理器ID标识出处理器群中的每个处理器。对应处理器的内部地址空间,Ureg和SIMD空间。存储器映射存储器访问32位地址空间的4G个字。西安电子科技大学电子工程学院70x0FFFFFFF0x0C000000寻址外部存储器块1。MS1外部存储器块MS0外部存储器块SDRAM0x07FFFFFF0x040000000x0BFFFFFF0x08000000寻址外部存储器块0。寻址外部SDRAM装置。外部存储器空间地址:MS1外部存储器块MS0外部存储器块SDRAM存储器装置西安电子科技大学电子工程学院8ID111ID110ID101ID100ID011ID010ID001ID000BroadcastWrite0x01C00000to0x01FFFFFF0x02C00000to0x02FFFFFF0x02800000to0x02BFFFFF0x02400000to0x027FFFFF0x02000000to0x023FFFFF0x03000000to0x033FFFFF0x03400000to0x037FFFFF0x03800000to0x03BFFFFF0x03C00000to0x03FFFFFF多处理器存储器空间地址:处理器ID000处理器ID001处理器ID010处理器ID011处理器ID100处理器ID101处理器ID110处理器ID111广播存储器空间西安电子科技大学电子工程学院90x00000000to0x0000FFFF0x00180000to0x001807FF0x00100000to0x0010FFFF0x00080000to0x0008FFFFUregsBlock1Block0Block2内部存储器空间地址:Uregs块2块1块0西安电子科技大学电子工程学院100000-00

xx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx18:0Address31:26PRID25:22ISPACE21:190000-00

xx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx位4:0定义32个寄存器位10:6定义64个寄存器组Ex.Addressofregisternumber0x14inregistergroup39存储器映射

–UREG组低11位定义UREG组和UREG西安电子科技大学电子工程学院113.3存储器访问类型和规则有效的存储器访问方法:广播写-(参看外部存储器访问)交叉传输访问合并分配广播分配注意:在广播写中,一个TigerSHARC写到其它几个TigerSHARCs中。在合并分配中一条指令访问两个计算块。在广播分配中一条指令给两个计算块加载相同的数据。西安电子科技大学电子工程学院12合并分配(I)在合并分配中一条指令访问两个计算块。合并分别从两个计算块的存储器中加载数据。数据传输的大小决定数据是如何分解的。指令语法决定数据的分配正常的,按照xy次序分配反序前缀(yx)反序分配的次序西安电子科技大学电子工程学院13长字访问长字访问(翻转)xyR1=L[J0+=2];yxR1=L[J0+=2];word2word1CBXCBYword2word1CBXCBY合并分配(II)西安电子科技大学电子工程学院14四字访问四字访问(翻转)xyR3:2=q[J0+=4];CBXCBYword3word2word0word1word3word2word1word0yxR3:2=q[J0+=4];CBXCBYword3word2word0word1word3word2word1word0合并分配(III)西安电子科技大学电子工程学院15word2word3word1word0word2word3word1word0word2word3word1word0CBXCBY广播分配在广播分配中一条指令把相同的数据加载到两个计算块中。正常字,长字,四字访问的操作例子:R11:8=q[J0+=4];西安电子科技大学电子工程学院16广播写广播写与广播分配不同。在相同的TigerSHARC中,广播分配把相同的数据分配到两个计算块中广播写把相同的数据分配到几个TigerSHARC中。广播写通过一个TigerSHARC写广播存储器空间来完成。例子:当几个TigerSHARC需要在相同的数据流中进行相同的算术运算时,广播写用于有效地把数据分配到所有的处理器中。西安电子科技大学电子工程学院17062C84EAquad-wordalignedlong-wordalignednormal-wordaligned32bits32bits32bits32bits数据大小和对齐数据在存储器中以正常字-,长字-,或者四字-为边界对齐正常字=32位(e.g.xR1)长字=64位(e.g.xR3:2)四字=128位(e.g.xR7:4)西安电子科技大学电子工程学院180123456…..5051525354555657……50values50values50values50values数据对齐-应用举例有时会遇到数据不对齐的情况一般的运算法则都需要知道运算的类型。一个内部循环:把循环缓冲区中的50个连续的值加载到计算块中。执行一次MAC–存储一个值外循环增加起始位置并重复

西安电子科技大学电子工程学院19JLregistersJL0JL1JL3JB0JB1JB2JB3J0J1J2J3JL2JindexregistersJBregistersDAB访问(I)DAB访问指令

–用来访问存储器中未对齐的四字。限制计算块中四字的加载。不支持合并的加载和存储器存储。DAB总是在一个循环缓冲寄存器组中访问在执行DAB指令之前,设置基址和长度寄存器。如果进行线性访问,把对应的L寄存器长度设置为0。西安电子科技大学电子工程学院20DAB访问(II)a0rXrXrXb0a3a2a1c0b3b2b1d0c3c2c1e0d3d2d1InstructionreferencesthislocationwithJ0(0x03)Firstmemoryaccessreferencesthislocation0x00as“nearest”quadalignedboundarya0rXrXrXXXXXa0rXrXrXa1a2a3b0XXXXflushedbysecondmemoryaccessMemory-128-bitwideDABafterfirstaccessDABaftersecondaccessExampleinstruction:R3:0=DABQ[J0+=4];; AssumeJ0=03QuadtransfersoutofDABstartatJ0-a0,a1,a2,a3,0004080C10Residualdatafrompreviousaccess西安电子科技大学电子工程学院21Memory-128-bitwideFour32-bitwordsEight16-bitwordsa2a0XXXXXa1a3a4a5a6a7b0b1b2b3b4b5b6b70C080400070605040302010016-bitreference0302010032-bitreferenceExampleinstruction:R3:0=SDABQ[J0+=8];; AssumeJ0=05Solution:Lower16-bitwordwillbe2xthe32bitreferenceUpper16-bitwordwillbe2x32-bitreference+1Prefix“S”inSDABsignalsthisformofaddressing

DAB访问(III)

–短字操作对于短字访问问题是怎样索引高或者低16位字位置?西安电子科技大学电子工程学院22存储器寻址的限制包含UREG内部存储器空间写处理时仅通过多处理器空间进行访问,使用总线簇—要注意!在处理器(不是MP空间)内部用作数据交换的内部存储器空间不会映射到总线簇上。仅外部主总线可以访问存储器映射的通用寄存器。它们通过多处理存储器空间进行访问。所有的存储器必须在正确的字长范围内进行访问。西安电子科技大学电子工程学院233.4程序定序器功能和指令类型.M0M1M2Sequencer128-entryBTB128bJALU128b128bKALU128bProcElYProcElXI/OProcessor

定序器的地位西安电子科技大学电子工程学院24Sequence128-entryBTB128b定序器功能管理程序的结构和程序流:提供下一条要执行的指令的地址

维护一个指令对齐缓冲区(IAB)用于高速取等待执行的指令。减少分支目标缓冲区(BTB)分支延迟,以保证条件和非条件指令的有效执行。减少循环数。估计条件。处理中断。西安电子科技大学电子工程学院25MemoryaddressfetchmuxBranchTargetBufferInterruptUnitProgramCounter32bitfetchaddressInstructionAlignmentBuffer128-bitbitdatafrommemoryInstructionsoutputtotheALU,MAC,Shifter,IALUMemoryInterruptsInc.定序器

简化的方框图.西安电子科技大学电子工程学院26指令流的几种类型线性流循环跳转子程序中断IDLE

InstructionInstructionInstructionInstructionInstructionLoopN

TimesInstructionInstructionInstructionRTIInstructionInstructionInstructionRETSInstructionInstructionInstructionCALLInstructionInstructionInstructionInstructionInstructionInstructionInstructionInstructionAddress:nn

+

1n

+

5n

+

4n

+

3n

+

2Linear

FlowJUMPInstructionInstructionInstructionInstructionInstructionJumpSubroutineInterruptIdleIDLEInstructionInstructionInstructionInstructionInstructionInterruptCJMPRTI/RETILC0=N西安电子科技大学电子工程学院27定序器指令

类型定序器指令有两种类型条件分支指令Ex. IFXAEQ,JUMPLabel_1 (NP);;

IFYAEQ,CALLSBR_12;;条件执行指令Ex. IFXMEQ;DO,XR3:2=R5:4+R7:6;;西安电子科技大学电子工程学院28Fetch1Fetch2Fetch3DecodeIntegerOperandAc.Execute1Execute23stepFetchpipe5stepInstructionpipe8stepProcessorpipe流水类型包含两阶段流水:取指流水(3级)指令流水(5级)每个内部时钟周期执行一个指令行。西安电子科技大学电子工程学院29取指流水

指令对齐缓冲区(IAB)IAB是存储器和指令流水之间的5个四字FIFO缓冲区。在进入译码阶段之前3个周期取指令(指令流水的第一级)指令以四字方式取出,放到指令队列缓冲区中。当IAB包含至少一个完整的指令行时,程序定序器可以把它从指令中抽出执行。

程序定序器从IAB中抽出包含中的1,2,3,或者4条指令的指令行,用于处理器译码和执行。西安电子科技大学电子工程学院30x31001001100010100110001ProgramMemoryInstruction0128InstructionFlow32-位指令,MSB决定它是否是一行中的最后一条指令。指令是否同时执行由每个指令中的MSB决定。指令在未对齐的存储器中打包。不浪费存储空间a1a2b1b2b3c1d1d2d3d4a1a2b1b2b3c1d1d2d3d4指令对齐缓冲区西安电子科技大学电子工程学院31MemoryInternalBus2对齐缓冲区(IAB)128-bitwidememoryword3FIFOAlignmentMUXProcElXProcElYJALUKALU取操作就是抽取128-位,并且把4个连续的32-位字加载到对器缓冲区中。......32323232定序器

指令对齐缓冲区(IAB).西安电子科技大学电子工程学院32指令流水-5级随着执行指令单元的不同,指令流水各级的细节不同:译码级(1)定序器抽取下一条完整的指令并把它分配到各个执行单元(IALU,AUL,MULT,移位器,定序器)定序器更新程序计数器。IALU译码指令。计算块把指令传送到合适的处理器单元中。整数级(2)IALU执行指令计算块处理单元译码指令并且检查相关性。操作数访问(3)对于IALU指令存储器开始访问计算块处理单元在寄存器组中选择源寄存器。西安电子科技大学电子工程学院33指令流水

续指令流水4级和5级

执行1&2IALU等待直到EX2结束把返回的操作数结果送到目的寄存器中(除了J和KALU算术操作是完全在2级完成)计算块处理单元计算结果并更新标志。注意:在流水操作中,不同的IALU和处理单元之间操作会导致来自于不同分支的不同延迟时间。这点以后再讨论。西安电子科技大学电子工程学院34InterruptSubroutineLC0=NInstructionInstructionInstructionInstructionInstructionInstructionInstructionInstructionRTIInstructionInstructionInstructionRETSInstructionInstructionInstructionCALLInstructionInstructionJUMPInstructionInstructionInstructionInstructionInstructionCJMPRTI/RETILoopJumpInterrupt它们由下面的指令控制:IFcond,JUMP,CALL,CJMP,CJMP_CALL,RETI,RTI和循环计数器指令。3.5分支和中断类型西安电子科技大学电子工程学院35分支类型

调用CALL指令改变指令流,通常执行一个子程序然后返回线性指令流。当分支存在时,下一个顺序指令的地址存储到CJMP寄存器中。子程序的下一条指令是CJMP(ABS)指令这会使指令从CJMP寄存器所指的位置继续执行。

注意:如果利用CJMP_CALL指令返回,那么除了返回,定序器把下一条顺序指令的地址写到CJMP寄存器中。西安电子科技大学电子工程学院36分支类型

循环LOOP用来重复地执行一组指令,直到遇到一个特殊的条件,然后继续执行循环以下的指令。利用条件指令和循环计数器执行循环。

有两个循环计数器: LC0和 LC1和“计数器满”相匹配的条件是LC0E和LC1E计数器满->值减少到零循环计数器的条件通过IF语句试一次,其计数值减1西安电子科技大学电子工程学院37分支类型

循环

–例子IFNLC0E,JUMPLabel_1;;

/*分支通过循环的条件是否定的条件“循环计数器满”*/

J6=J31+10;; /*初始化循环计数器*/Outer_loop: instruction;;

instruction;; LC1=5;; /*初始化循环计数器LC1*/Middle_loop: instruction;;

LC0=6;; /*初始化循环计数器LC0*/Inner_loop: instruction;;

instruction;;IfNLC0E,JUMPInner_loop;;/*当LCO>0时,进行内循环*/

instruction;; instruction;;IfNLC1E,JUMPMiddle_loop;;/*当LC1>0时,进行中间循环*/

instruction;J6=J6-1;; /*JALU循环计数器减一*/

instruction;;IfNJEQ,JUMPOuter_loop;; /*当JEQ>0时,进行外循环*/西安电子科技大学电子工程学院38指令流水和分支相互作用(I)分支预测减少了分支延迟时间代价。

TigerSHARC利用分支目标缓冲区预测分支的位置(128-入口,4-路联合设置的高速缓存)BTB存储正确预测的分支指令的特定信息(仅限于内部存储器分支)。最初的分支指令在进入到BTB中时会产生延迟。程序员可以控制预测的使能和禁止。默认为使能。选项:NP->预测不存在西安电子科技大学电子工程学院39流水线和分支相互作用(II)BTB每个对齐的四字仅存储1个入口。入口由最后的指令槽决定(;;),而不是由跳转指令决定。例子(仅ASM程序):不总能保证足够的时间间隔

jumpFIRST_JUMP;LC1=yR16;NOP;NOP;;

jumpSECOND_JUMP;R29=R27;;例子:利用ASM指令可以保证足够的时间间隔

jumpFIRST_JUMP;LC1=yR16;;

.align_code4;

jumpSECOND_JUMP;R29=R27;;西安电子科技大学电子工程学院40中断概述

中断事件的发生使核停止它当前的过程和分支,转而执行其它的过程。

中断事件可能在任何时候发生而且可以是:处理器内部中断处理器外部中断中断的用途是:同步核和非核操作错误检测调试应用控制西安电子科技大学电子工程学院41中断-中断矢量表(IVT)每个中断有在中断矢量表(IVT)中有一个矢量寄存器。在中断标志和屏蔽寄存器中有一个指定的位。(ILAT和PMASK)矢量寄存器包含用户可定义的服务于中断的中断例程的地址。总共31个中断大部分中断是专用的。4个通用中断,与4个IRQ引脚相连。当中断发生并且允许用户屏蔽任何中断时,标志和屏蔽寄存器锁定中断。西安电子科技大学电子工程学院42中断类型两组硬件中断软件中断硬件中断比较重要的性能

–在许多情况下都要用到中断。

软件中断由特定的指令,软件异常引起。高优先级西安电子科技大学电子工程学院43边沿和电平中断中断可以分为边沿触发和电平触发中断边沿触发:中断发生时被锁定保持锁定直到有一条指令服务或者复位电平触发:如果在请求撤销之前中断没有被服务,那么中断将被忽略。如果在服务例程执行之后保持中断请求,将被看作一个新的中断。

西安电子科技大学电子工程学院44中断组和中断优先从高到低中断的优先级是:仿真调试中断

边沿软件异常中断

边沿硬件错误中断

电平时钟0&1高优先级中断

边沿总线锁定中断

边沿VIRPT矢量中断

边沿IRQ0-3中断

可编程DMA通道0-13中断

边沿链路口0-3中断

边沿时钟0&1低优先级中断

边沿西安电子科技大学电子工程学院4563ILATH3231ILATL

0中断控制寄存器中断矢量表(IVT)包含中断矢量寄存器中断控制器使用3个64-位控制寄存器ILAT,IMASK和PMASK处理中断。ILAT 中断锁存寄存器

IMASK 中断屏蔽寄存器PMASK 中断屏蔽指针寄存器64-位可以分成两个32-位寄存器被访问,标H为高,L为低例如ILATH和ILATL西安电子科技大学电子工程学院46中断—操作当中断发生时:设置ILAT中相应的位IVT中的中断矢量地址是下一个要取的地址。

中断例程中的第一条指令被送到指令流中。处理器设置为管理方式中断请求有效,如果:非屏蔽请求(IM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论