




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Knowledge问题谁在DSP的汇编语言中加入了NOP指令?NOP指令加入的条件是什么?About DSP1. DSP是实时数字信号处理的核心和标志。2. DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数),数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。3. DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。4. DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换)具有哈弗结构把指令空间与数据空间隔离的存储方式。这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE存储的速度也明显快于外设存储器。冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。Pipeline(流水线)技术是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指令吞吐速率理想情况下可以保证在每个指令只要一个CPU CYCLE。Pipeline技术必须要有哈弗结构支持,即必须把指令空间与数据空间隔离存放。流水线阻断流水线中阻断现象也十分普遍,下面就各种阻断情况下的流水线性能进行详细分析。流水线阻断总体有两种情况:1. 资源冲突阻断:a) 如果前一指令的某Stage与后一指令某Stage在同一个Cycle执行,但是前一指令此Stage占用了后一指此Stage的资源,则后一指令此Stage的工作会被延迟执行。b) 被延迟执行的动作会停留在前一个Stage状态,则前一个Stage的状态就不能进入新的指令的动作。c) 依次前推,则总有一个取指Stage的指令被阻断,那么其后一个指令也被阻断而不能被取指。d) 所以,每产生一个Cycle的阻断,就会让CPU的执行延迟一个Cycle。即此指令后面的所有指令都会被延迟一个Cycle被执行。e) 解决的方法是:使用Cache让存放变得更快;变量集群使用,记录减少变量存放到memory的需要。2. 跳转阻断:a) 跳转阻断有很多情况产生,比如函数调用/返回,循环的break/continue,if等条件判断,循环跳转,中断跳转的产生。b) 一旦某条指令要进行跳转时,它就会设置LR寄存器,阻止后续的指令进入执行Stage,并修改PC指针,执行跳转后的目标代码。c) 解决的方法是:减少循环、条件判断、分支结构的使用。DSP Pipeline技术DSP具有8个独立的执行单元,所以每个CYCLE可以执行8条指令(要求其总线宽度是256bit)。即DSP是8个pipeline并行处理的技术。所以DSP每个阶段取8个指令,然后在译码阶段把8个指令分配到8个执行单元去处理。所以必须保证被同时取的指令之间没有相关性(即一个指令的执行不需要其他指令的结果参与),否则会得到错误的结果。所以,DSP引入了NOP指令,如果不能实现这一的要求,则DSP的编译器,则DSP优化器会在其编译的指令后面添加NOP指令。表示此Cycle不能执行8条有效指令,只能擦入空指令。则这样就会有某些执行单元在此CYCLE空闲了。DSP Pipeline阻断DSP Pipleline的阻断处理相对比较复杂一些,因为它涉及到8独立执行单元的阻断。1. 资源冲突阻断:a) 如果某个Unit因为资源冲突阻断,或者因为一个指令需要多个Cycle执行。则此Unit会被阻断。b) 当某个Unit被阻断时,其上一个阶段的指令就不能往下传递。一直阻断到此Unit的取值动作。c) 所以当有阻断发生是,FG并不会请求8条指令,而是请求1-7条,或者不请求(8个Unit全部阻断了)。这样没有被阻断的Unit还是能够充分运行的。2. 跳转阻断:/p-908395009795.htmla)NOPNot dispatched instructionIt is an empty instruction in DP packet.如果一个指令标识需要Delay N个slot,则需要在这个指令后面跟N个NOP指令(对于那些自身不带NOP的指令,比如B)(但是对于BNOP则不需要的)。通过寄存器的定位技巧1. 查看NRP寄存器的值,则可以直接查看在哪个周期的指令异常了(NRP指令的前一周期就是crash的指令)(使用A10/B10可以看到此函数的参数)2. 查看B3寄存器的值,跳到此代码段查看前面一个的Jump指令。看是jump到哪个函数了,则是在此函数中出异常了。则可以看到是谁调用的此crash的函数。(使用A4/B4可以看到parent的参数)3. 如果参数是二维指针,则此参数所在类存一般都是栈内的某个地址。(可以根据栈空间的特点知道具体应该是哪个地址)CPU data path & control说明:1. Register A也是由两片寄存器组组成的,A0:A1/ /A30:A31的pair是分布在两个组片中的2. ST path是把寄存器的值写入内存的路径3. LD path是把内存的值加载到寄存器中的路径4. DA path是读写寄存器的路径5. X path是跨组读写寄存器的路径A & B path general purpose registers1. Each A & B path has 32 32-bit register, named A0-A31, B0-B31.2. It supports 40bit & 64bit value. If value is larger than 32 bit, it needs register-pair. The 32LSB stores in even-numbered register, such A0, and the 8 or 32 MSB stores in odd-numbered register, such A1.3. General purpose registers can be used for data, address pointers, condition registers.8 functional units1. 8 functional units can be divided into 2 groups, G1: L1, S1, M1, D1 for A register path, and G2: L2, S2, M2, D2 for B register path.2. Each function units has its special function, such as +/-/*/ dstADDABADDAB Add Using Byte Addressing ModeSyntax ADDAB (.unit) src2, src1, dst (C64x and C64x+ CPU)orADDAB (.unit) B14/B15, ucst15, dst (C64x+ CPU)unit = .D1 or .D2Compatibility C62x, C64x, and C64x+ CPUsint Signed 32-bit integer valueucstn n-bit unsigned constant field (for example, ucst5)Execution:src2 + src1 dstADDKSyntax ADDK (.unit) cst, dstunit = .S1 or .S2Description A 16-bit signed constant, cst16, is added to the dst register specified. The result isplaced in dst.Executionif (cond) cst16 + dst dstelse nopADDKPCADDKPC (.unit) src1, dst, src21. 把Src1的值设置到dst中,并NOP src2 个cycle.2. 即本指令需要src2 + 1个slot才能完成。3. 这个指令并不是跳转指令,仅仅是同时完成了高低16bit赋值以及NOP控制的一个指令。如果NOP为0此,则高低16bit赋值仅仅为1个cycleSWESWE Software ExceptionSyntax SWEunit = noneCompatibility C64x+ CPUDescription:Software sprint an exception by this instruction. It will set SXF bit in EFR to 1. And when it complete, CPU will continue with the instructions specified by NRP registerSWENR no-return SWEIt is the same as SWE, but NRP will be invalid.MV系列1. MV (.unit) src2, dst:Move From Register to Register AB寄存器之前的MV2. MVC (.unit) src2, dst:Move Data from AB register to Control register, such as ARM/IRP3. MVD (.unit) src2, dst:Move From Register to Register, 和MV一样,但是需要3个NOP。4. MVK (.Unit) src dst 把有符号数的立即数赋值到dst中5. MVKH (.unit) cst, dst:把立即数的MSB 16bit 赋值到 dst的MSB 16bit6. MVKLH (.unit) cst, dst:把立即数的LSB 16bit赋值到 dst的MSB 16bit大小对比操作1. CMPLT (.unit) src1, src2, dsta) if (src1 =0,则先dst -= 1, 后PFC = src。b) 否则,直接PFC = srcc) Delay Slots 5PCE1 jump(CALLP/)1. CALLP (.unit) label, A3/B3:Execution(跳转到label,并把返回值保存在A3或B3中)(cst21 PFC)if (unit = S2), retPC B3else if (unit = S1), retPC A3nop 5 (Delay Slots 5)(注: cst21 = (label - PCE1) 2)a) 这个在修改FP的同时,会保存retPC指针,用于返回return地址。在return后会把这个地址赋值给PFC,然后从这条指令开始重新执行。b) Delay Slots 5SPLOOP系列(SPLOOPD/SPLOOPSoftware Pipelined Loop (SPLOOP) Buffer Operation With Delayed Testing是通过延时,获取L2/Ext 内存的数据Copy到L1 Memory中。典型汇编语句解析STXX REG *B15-1把REG的值保存到内存中。具体的操作SIZE要看存储的指令。STB = 1B;STDW = 8B;REG *B15- - xREG *B15+ x先把REG的值赋值到*B15开始的地址中,然后B15减、加x个REG SIZEREG *- B15xREG *+B15x先B15减、加x个REG SIZE,然后先把REG的值赋值到*B15开始的地址中。例子:83689CB0 8577 STDW.D2T1 A11:A10,*B15-183689CB2 4646 | MV.L1 A4,A10 /写A10会在读A10之后执行*B15 = A11:A10*B15 -= 8 (A11:A10是8Byte)注:每个cycle,写是在读之前完成的,所以此语言写入*B15还是老的A10的值。SPLOOP & SPLOOP buff指令软件流水循环和软件流水缓存Software Pipelined Loop (SPLOOP) Buffer Operation With Delayed Testing1. 它是C64X+新增的一个硬件模块,目的是为了快速完成循环指令。即实现DSP汇编指令循环。2. SPLOOP通过把循环指令的每次循环的Kernel指令打包存放在SPLOOP buff中,可以最多存放14个指令包(即循环体最多可以有14个指令包):a) SPLOOP buff最多可以缓存14个指令包,每个指令包是一个8*32bit的单元,用于存放多条要被执行的指令。b) CPU可以直接从此buff中读取指令包,而不需要到L1P去获取,这样减少L1P取指令压力。c)是通过延时,获取L2/Ext 内存的数据Copy到L1 Memory中。SPLOOP Prolog/Kernel/ep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏南通醋酸纤维有限公司招聘模拟试卷附答案详解(典型题)
- 2025广西农业科学院农业资源与环境研究所土壤生态与高值农业研究室公开招聘1人模拟试卷及完整答案详解一套
- 2025年安庆市第二人民医院招聘2人考前自测高频考点模拟试题完整参考答案详解
- 2025年哈尔滨延寿县公安局公开招聘第二批警务辅助人员32人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年福建省福州市鳌峰坊特色历史文化街区招聘1人考前自测高频考点模拟试题及答案详解(必刷)
- 2025广西桂林市叠彩区文化体育和旅游局计划面向社会招聘1人模拟试卷附答案详解(完整版)
- 2025河南信阳市潢川县退役军人事务局招聘3名全日制公益性岗位考前自测高频考点模拟试题及参考答案详解1套
- 2025贵州省职工医院第十三届贵州人博会引进人才13人考前自测高频考点模拟试题及答案详解1套
- 2025年龙岩市供电服务有限公司招聘59人模拟试卷有完整答案详解
- 2025辽宁抚顺市城建集团招聘拟聘用人员考前自测高频考点模拟试题及答案详解(各地真题)
- 培养孩子阅读习惯模板
- 金工深度研究-SAM:提升AI量化模型的泛化性能-华泰证券
- 玻璃纤维增强塑料在船舶制造中的应用
- 教科版小学三年级上册科学实验报告
- 星巴克运营管理手册
- 桨板运动行业分析
- 《水的组成》说课课件
- 人教版高中物理必修一全套课件【精品】
- 非婚生育证明模板
- KTV管理章程协议
- 《海洋学》第二章 地球及海洋概观
评论
0/150
提交评论