




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、o在累加器寻址方式中,指令中利用累加器的数值作为地址 来读/写程序存储器,这种寻址方式可用来对存放数据的 程序存储器寻址。 o共有两条指令可以采用累加器寻址: oREADA Smem WRITA Smem oREADA是把累加器A所确定的程序存储器单元中的一个字 传送到单数据存储器操作数Smem所确定的数据存储器 单元中。 oWRITA是把Smem操作数所确定的数据单元中的一个字 传送到累加器A确定的程序存储器单元中去。 累加器寻址 1.6 1.6 数据寻址方式数据寻址方式 o例 累加器寻址示例 累加器寻址 1.6 1.6 数据寻址方式数据寻址方式 READA *AR3 ;把累加器A所确定的程
2、序 存储器单元中的值传送 给AR3指向的数据存储 器单元 WRITA *AR3 把AR3指向的数据存储 器单元的值传送到由累 加器A确定的程序存储 器单元中 o在直接寻址方式中,指令中包含有数据存储器地址 (dmad)的低7位,这7位dmad作为偏移地址,结合基 地址(由数据页指针DP或堆栈指针SP给出)共同形成16 位的数据存储器地址。 o使用这种寻址方式,可以在不改变DP或SP的情况下,随 机地寻址128个存储单元中的任何一个单元。直接寻址的 优点是每条指令只需要一个字。 o是DP还是SP直接寻址与状态寄存器状态寄存器ST1中CPL位有关: o数据页指针DP直接寻址:当CPL=0时,DP直
3、接寻址; o堆栈指针SP直接寻址: 当CPL=1时,SP直接寻址; 直接寻址 1.6 1.6 数据寻址方式数据寻址方式 直接寻址 1.6 1.6 数据寻址方式数据寻址方式 o当状态寄存器ST1中CPL=0时,以数据存储器地址(dmad)的低7位为 低位,以数据页指针DP中的9位字段为高位,共同构成16位的数据存储 器地址,如下图所示。 DP作为基地址的直接寻址方式 o例如:DP=1,dmad03h,实际地址为0080h03h=0083h。 1514131211109876543210 9位数据页指针DP7位dmad 直接寻址 1.6 1.6 数据寻址方式数据寻址方式 o例 DP直接寻址示例 o
4、ADD 30h, A ;将实际地址为00B0h的数据存储器单元内 容加到累加器A中去 直接寻址 1.6 1.6 数据寻址方式数据寻址方式 o当状态寄存器ST1中CPL=1时,数据存储器地址(dmad)的低7位与堆 栈指针SP的16位地址相加形成16位的数据存储器地址,如下图所示。 SP作为基地址的直接寻址方式 o例如,SP=0100h,dmad030h, 实际地址为0100h+030h=0130h。 直接寻址 1.6 1.6 数据寻址方式数据寻址方式 o例 SP直接寻址示例 oADD 30h, A ;将实际地址为0130h的数据存储器单元内 容加到累加器A中去 o在间接寻址方式中,64K字数据
5、空间的任意单元都可以通 过一个辅助寄存器中的内容所代表的16位地址进行访问。 oTMS320C54x有8个16位辅助寄存器(AR0AR7),2 个辅助寄存器算术单元(ARAU0和ARAU1),根据辅助 寄存器ARx的内容进行操作,完成无符号的16位算术运算。 o间接寻址主要用在需要存储器地址以步进方式连续变化的 场合。当使用间接寻址方式时,辅助寄存器内容辅助寄存器内容(地址) 可以被修改可以被修改(如增加或减少),还可以提供循环寻址和位 倒序寻址两种特殊模式。 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 o单操作数寻址是指一条指令中,只有一个存储器操作数 (即从存储器中只存取一个操作数
6、)。 o单数据存储器操作数间接寻址指令的格式: 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 1.单操作数寻址 15 8 7 6 3 2 0 操作码操作码 I 1 MOD ARF 指令的指令的8 8位操作码位操作码 指令的标识符指令的标识符 表示指令为间接寻址表示指令为间接寻址 4 4位的方式域位的方式域 用来定义间接寻址的类型用来定义间接寻址的类型 3 3位辅助寄存器域位辅助寄存器域 用来定义所使用的辅助寄存器用来定义所使用的辅助寄存器 MOD域 操作数句 法 功 能说 明 0000 (0)*ARx地址地址ARxARx中的内容就是数据存储器的地址中的内容就是数据存储器的地址 0001
7、(1)*ARx 地址地址ARx ARxARx1 寻址结束后,寻址结束后, ARx中的地址值减中的地址值减12 0010 (2)*ARx+ 地址地址ARx ARxARx + 1 寻址结束后,寻址结束后, ARx中的地址值增中的地址值增11 0011 (3)*+ARx ARxARx + 1 地址地址ARx +1 ARx中的地址值增中的地址值增1后再寻址后再寻址123 0100 (4) *ARx0B 地址地址ARx ARxB(ARx AR0) 寻址结束后,用反向传送借位的方法从寻址结束后,用反向传送借位的方法从 ARx中减去中减去AR0的值的值 0101 (5) *ARx0 地址地址ARx ARxA
8、RxAR0 寻址结束后,从寻址结束后,从ARx中减去中减去AR0的值的值 0110 (6) *ARx + 0 地址地址ARx ARxARx + AR0 寻址结束后,将寻址结束后,将AR0中的值加至中的值加至ARx 0111 (7) *ARx + 0B 地址地址ARx ARxB(ARx + AR0) 寻址结束后,用反向传送进位的方法将寻址结束后,用反向传送进位的方法将AR0加至加至ARx 单数据存储器操作数的间接寻址类型单数据存储器操作数的间接寻址类型 间接寻址 1.单操作数寻址 MOD域 操作数句 法 功 能说 明 1000 (8) *ARx% 地址地址ARx ARxCirc(ARx 1) 寻
9、址结束后,寻址结束后,ARx中的地址值按循环减的方法减中的地址值按循环减的方法减11 1001 (9) *ARx 0% 地址地址ARx ARxCirc(ARx AR0) 寻址结束后,按循环减的方法从寻址结束后,按循环减的方法从ARx中减去中减去AR0中的值中的值 1010 (10)*ARx + % 地址地址ARx ARxCirc(ARx + 1) 寻址结束后,寻址结束后,ARx中的地址值按循环加的方法增中的地址值按循环加的方法增11 1011 (11) *ARx +0% 地址地址ARx ARxCirc(ARx + AR0) 寻址结束后,按循环加的方法,将寻址结束后,按循环加的方法,将AR0中的
10、值加至中的值加至ARx 1100 (12) *ARx(1k) 地址地址ARx +1k ARx ARx 以以ARx与与16位数之和作为数据存储器的地址,寻址结束后,位数之和作为数据存储器的地址,寻址结束后, ARx中的值不变中的值不变 1101 (13)*+ARx(1k) 地址地址ARx +1k ARx ARx + 1k 将一个将一个16位带符号数加至位带符号数加至ARx后进行寻址后进行寻址3 1110 (14) *+ARx(1k) % 地址地址Circ(ARx + 1k) ARxCirc(ARx + 1k) 将一个将一个16位带符号数按循环加的方法加至位带符号数按循环加的方法加至ARx,然后再
11、寻址,然后再寻址3 1111 (15)*(1k) 地址地址1k 利用利用16位无符号数作为地址寻址数据存储器(相当于绝对寻位无符号数作为地址寻址数据存储器(相当于绝对寻 址方式)址方式)3 单数据存储器操作数的间接寻址类型单数据存储器操作数的间接寻址类型 1.单操作数寻址 注:注: 1. 寻址寻址16位字时增量位字时增量/减量为减量为1,32位字时增量位字时增量/减量为减量为2。 2. 这种方式只能用于写操作指令。这种方式只能用于写操作指令。 3. 这种方式不允许对存储器映射寄存器寻址。这种方式不允许对存储器映射寄存器寻址。 o(1) 循环寻址循环寻址 o在卷积、相关和FIR滤波器等算法中,都
12、需要在存储器中设置一个循环缓 冲器,它是一个滑动窗口,保存着最新的一批数据。 o循环缓冲器实现的关键是循环寻址循环寻址的实现。 oBK(循环缓冲器长度):确定了循环缓冲器的大小R。 oEFB(循环缓冲器的有效基地址):用户选定的辅助寄存器(ARx)的低 N位置 0后所得到的值。满足条件:2NR oEOB(循环缓冲器的尾地址):通过用BK的低N位代替ARx的低N位得到。 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 o(1) 循环寻址循环寻址 o循环缓冲器的指针index就是当前ARx的低N位,步长step就是一次加到 辅助寄存器或从辅助寄存器中减去的值。循环寻址的算法为: oIf 0in
13、dex+stepBK: oindexindex+step oElse if index+stepBK: oindexindex+step-BK oElse if index+step0: oindexindex+step+BK 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 o(1) 循环寻址 o使用循环寻址时,必须遵循以下三个原则: o1) 循环缓冲器的长度R小于26,且地址从一个低N 位为0的地址开始。 o2) 步长小于或等于循环缓冲器的长度。 o3) 所使用的辅助寄存器必须指向缓冲器单元。 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 o(2) 位倒序寻址位倒序寻址 o位倒序寻
14、址是DSP的一种特殊处理方式,是专门为快速傅立叶变换FFT 而设计的,这种寻址方式可以显著提高程序的执行速度和存储区的利用 效率。 o使用时,AR0存放的整数N为FFT点数的一半,另一个辅助寄存器ARx 指向数据存放的单元,当使用位倒序寻址把AR0加到辅助寄存器中时, 地址以位倒序以位倒序的方式产生,即进位是从左向右即进位是从左向右,而不是通常的从右向 左。例如 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 1010 1010 1100 1100 10110 0001 正向进位反向进位 o(2) 位倒序寻址 间接寻址 1.6 1.6 数据寻址方式数据寻址方式 1.单操作数寻址 原序位倒序
15、 十进制数二进制数二进制数十进制数 0000000000 1000110008 2001001004 30011110012 4010000102 50101101010 6011001106 70111111014 8100000011 9100110019 10101001015 111011110113 12110000113 131101101111151111111115 o在存储器映射寄存器(在存储器映射寄存器(MMR)寻址方式中)寻址方式中,修改存储器映射寄存器的值, 而不影响当前数据页指针DP或当前堆栈指针SP的值,以存储器映射寄存 器中的修改值去寻址
16、。寻址范围为0000h007Fh。 o有两种产生MMR地址的方式,指令特点: o(1)在直接寻址时,不管DP,SP为何值都强制地址高9位为零,不改变 DP,SP内容。 o(2)在间接寻址时,取ARX低7位作为MMR地址,并在执行后,对ARX高9 位强制淸零。 o共有以下8条能够使用存储器映射寄存器寻址的指令: LDM MMR,dst MVDM dmad,MMR MVMD MMR,dmad MVMM MMRx,MMRy POPM MMR PSHM MMR STLM src,MMR STM #1k,MMR 存储器映射寄存器寻址 1.6 1.6 数据寻址方式数据寻址方式 o例 存储器映射寄存器寻址示
17、例 oLDM 11h,A ;地址0011h指向存储器映射寄存器AR1,将AR1中 的值装入累加器A的低16位,累加器A的高24位清零 oSTLM A,*AR3 ;将累加器A的低16位存放到AR3低7位作为存储器 映射寄存器MMR地址的单元中去,执行后对AR3高9位清零 存储器映射寄存器寻址 1.6 1.6 数据寻址方式数据寻址方式 o当发生中断或子程序调用时,堆栈用来自动地保存程序计数器PC的值。 堆栈也可以用来保护现场或传送参数。 o堆栈寻址,就是利用堆栈指针,按照先进后出的原则来寻址。SP总是指总是指 向压入堆栈的最后一个数据向压入堆栈的最后一个数据。 o堆栈寻址的作用是保护调用,中断现场
18、信息,进行数据传输。 o共有四条使用堆栈寻址方式访问堆栈的指令: oPSHD Smem ;(SP)-1SP, (Smem)SP oPSHM MMR ;(SP)-1SP, (MMR)SP oPOPD Smem ;(SP)Smem, (SP)+1 SP oPOPM MMR ;(SP)MMR, (SP)+1 SP 堆栈寻址 1.6 1.6 数据寻址方式数据寻址方式 下图给出了将一个数据X2压入堆栈(PSHD X2)的 操作过程。 堆栈寻址 1.6 1.6 数据寻址方式数据寻址方式 操作前的堆栈和堆栈指针SP 操作后的堆栈和堆栈指针 SP SP00110001SP00100001 00100010X2
19、 0011X10011X1 01000100 01010101 01100110 TMS320C54x的寻址方式小结 寻址方式特点应用场合 立即数寻 址 操作数就在指令中操作数就在指令中,运行比较慢,并要求 较多的存储空间 表示常数,对寄存器初 始化 绝对寻址 允许寻址任何一个数据存储器单元中的操 作数,运行速度较慢,并要求较多的存储 空间 用于对寻址速度无苛刻 要求的地方 累加器寻 址 利用累加器指向程序存储单元的地址利用累加器指向程序存储单元的地址 利用累加器,在程序空 间和数据空间之间传送 数据 直接寻址 指令中包含的数据存储器低指令中包含的数据存储器低7位地址,与位地址,与 DP的的9
20、位数拼接或与位数拼接或与SP中中16位数相加形位数相加形 成成16位地址,可单周期寻址位地址,可单周期寻址128个单元个单元 寻址速度快,用于速度 关键的场合 间接寻址 通过辅助寄存器和辅助寄存器指针,寻址 数据存储空间的任何一个单元,并自动的 增量/减量、变址寻址、循环寻址、位倒 序寻址 共有16种修正地址的方 式,用于需要按固定步 长步进寻址的场合 MMR寻址 是一种基地址为0(不考虑DP、SP和CPL) 的寻址,寻址速度快 直接用MMR的名字快速 访问数据存储器的0页资 源 堆栈寻址有有4条指令指向压入条指令指向压入/弹出堆栈操作弹出堆栈操作 将数据保存至堆栈或从 堆栈中弹出 1.7 程
21、序存储器地址生成方式 定义:定义:程序存储器地址生成方式即程序控制操作,程序存储器地址生成方式即程序控制操作, 在在C54X中影响中影响PC的各种程序控制操作有:的各种程序控制操作有: n 分支转移分支转移 n 调用与返回调用与返回 n 条件操作条件操作 n 单条指令或块指令重复操作单条指令或块指令重复操作 n 硬件复位硬件复位 n 中断中断 各种程序控制操作各种程序控制操作 1.7.1程序计数器程序计数器 o 程序计数器(程序计数器(PC)是一个)是一个16位计数器;位计数器; oPC中保存的某个内部或外部程序存储器的中保存的某个内部或外部程序存储器的 地址地址,就是就是即将取指的某条指令、
22、即将访问的即将取指的某条指令、即将访问的 某个立即操作数或系数表在程序存储器中的某个立即操作数或系数表在程序存储器中的 地址。地址。 加载地址到加载地址到PC的几种途径的几种途径 操操 作作 加载到加载到PCPC的地址的地址 复位复位 PC=FF80hPC=FF80h 顺序执行指令顺序执行指令 PC=PC+1 PC=PC+1 分支转移分支转移 1616位立即数加载到位立即数加载到PC PC 由累加器分支转移由累加器分支转移 用累加器用累加器A A或或B B的低的低1616位加载到位加载到PCPC 块重复循环块重复循环 BRAF=1(BRAF=1(块重复有效块重复有效) )当当PC+1PC+1等
23、于块重复循环等于块重复循环 结束地址结束地址(REA+1)(REA+1)时将时将 块重复起始地址加载块重复起始地址加载PCPC 子程序调用子程序调用 将将PC+2PC+2压入堆栈压入堆栈, ,并用指令后并用指令后1616位立即数加载位立即数加载PC, PC, 返回将堆栈弹出到返回将堆栈弹出到PC,PC,回到原来程序处继续执行回到原来程序处继续执行; ; 从累加器调用子程序从累加器调用子程序 将将PC+1PC+1压入堆栈压入堆栈, ,用累加器用累加器A A或或B B的低的低1616位加载位加载 到到PCPC;返回时将堆栈弹出到;返回时将堆栈弹出到PC,PC,回到原来程序回到原来程序 处继续执行处
24、继续执行; ; 硬件中断或软件中断硬件中断或软件中断 将将PCPC压入堆栈压入堆栈, ,用适当的中断向量地址加载用适当的中断向量地址加载 PCPC;中断返回时将堆栈弹出到;中断返回时将堆栈弹出到PC,PC,继续执行被继续执行被 中断了的程序中断了的程序. . 1.7.2分支转移 nC54x的分支转移操作有两种形式:的分支转移操作有两种形式: 有条件分支转移;有条件分支转移; 无条件分支转移;无条件分支转移; 两者都可以带延迟操作(指令助记符带后缀两者都可以带延迟操作(指令助记符带后缀D)和不带延)和不带延 迟操作。迟操作。 n注意:注意: 紧跟在延迟指令后面的两个字,不能是造成紧跟在延迟指令后
25、面的两个字,不能是造成PC 不连续的指令(分支转移不连续的指令(分支转移调用、返回或软件中断指调用、返回或软件中断指 令)。令)。 无条件分支转移指令无条件分支转移指令 指指 令令说说 明明 B(D)用指令中所给出的地用指令中所给出的地 址加载址加载PC BACC(D)用所指定的累加器的用所指定的累加器的 低低16位作为地址加位作为地址加 载载PC 条件分支转移指令条件分支转移指令 指指 令令说说 明明 BC(D)如果指令中规定的条件得到满足就用指令如果指令中规定的条件得到满足就用指令 中所给出的地址加载中所给出的地址加载PC BANZ(D)当前辅助寄存器不等于当前辅助寄存器不等于0,就用指令
26、中所给就用指令中所给 出的地址加载出的地址加载PC (用于循环用于循环 ) 1.7.3调用与返回调用与返回 o与分支转移类似,当调用子程序或函数时,与分支转移类似,当调用子程序或函数时, DSP就会中断原先的程序,转移到程序存就会中断原先的程序,转移到程序存 储器的其它地址继续运行。储器的其它地址继续运行。 oC54x的调用和返回都有两种形式的调用和返回都有两种形式 无条件调用和返回;无条件调用和返回; 有条件调用与返回。有条件调用与返回。 两者都可能带延迟和不带延迟操作。两者都可能带延迟和不带延迟操作。 无条件调用与返回的指令无条件调用与返回的指令 指指 令令说说 明明 CALL(D)将返回
27、地址压入堆栈将返回地址压入堆栈,用指令所用指令所 规定的地址加载规定的地址加载PC CALA(D)将返回地址压入堆栈将返回地址压入堆栈,用用 指定指定 累加器的低累加器的低16位地址加载位地址加载PC RET(D)用堆栈顶的返回地址加载用堆栈顶的返回地址加载PC RETE(D)用堆栈顶的返回地址加载用堆栈顶的返回地址加载PC 并开放中断并开放中断 RETF(D)用用RTN寄存器中的返回地址加寄存器中的返回地址加 载载PC,并开放中断并开放中断 条件调用与返回的指令条件调用与返回的指令 指指 令令说说 明明 CC(D)如果如果条件满足,则 条件满足,则先将返回地址先将返回地址压压 入堆栈入堆栈;
28、再用所指定的地址加载再用所指定的地址加载PC RC(D)如果如果条件满足,将堆栈顶部的返回 条件满足,将堆栈顶部的返回 地址加载地址加载PC 1.7.4 条件操作条件操作 o C54xC54x有一些指令只有当一个条件或多个条件得到有一些指令只有当一个条件或多个条件得到 满足列出的条件指令时才能执行。满足列出的条件指令时才能执行。 请看表请看表1-231-23中的各种条件中的各种条件(23(23条)以及相应的条)以及相应的 操作数符号。操作数符号。 例如:例如: BC pmad,cond,cond,cond o当这条指令的所有条件得到满足时,程序才能转当这条指令的所有条件得到满足时,程序才能转
29、移到移到pmadpmad。 o有时,条件指令中会出现多重条件,有时,条件指令中会出现多重条件,不是所有的不是所有的 条件都能构成多重条件的。条件都能构成多重条件的。 表1-23 1-23 条件指令中的各种条件 多重条件指令中的条件组合多重条件指令中的条件组合 第第 一一 组组 A类类 B类类 EQ OV NEQ NOV LT LEQ GT GEQ 可以从可以从A类中选择一个条件,同时类中选择一个条件,同时 从从B类中选择一个条件;类中选择一个条件; 不可以从同一类中选择两个条件;不可以从同一类中选择两个条件; 两种条件测试的累加器必须是同一两种条件测试的累加器必须是同一 个;个; 例如:例如:
30、BC L1 AGT,AOV 例如:例如:BC L1 AGT,BOV() 多重条件指令中的条件组合多重条件指令中的条件组合 第第 二二 组组 A类类 B类类 C类类 TC C BIO NTC NC NBIO 可以从三类中各选择一个条件,可以从三类中各选择一个条件,但是不可以同时从但是不可以同时从 同一类中选择两个条件同一类中选择两个条件; 例如:例如:BCTC,C,BIO BCNTC,C,NC () 1.7.5 重复操作重复操作 一、重复执行单条指令一、重复执行单条指令 oC54x有一个有一个16位的重复计数器(位的重复计数器(RC)和两)和两 条能对其下条指令进行重复操作的指令条能对其下条指令
31、进行重复操作的指令RPT和和 RPTZ。 重复执行的次数等于(重复执行的次数等于(RC+1)。)。 二、程序块重复操作二、程序块重复操作 oC54x内部的块重复计数器(内部的块重复计数器(BRC)、块重)、块重 复起始地址寄存器(复起始地址寄存器(RSA)、块重复结束地)、块重复结束地 址寄存器址寄存器 (REA)与程序块重复指令)与程序块重复指令RPTB、 由若干条指令构成的程序块进行重复操作。由若干条指令构成的程序块进行重复操作。 举例举例 程程 序序 说说 明明 STM #99,BRC ; 99 BRC RPTB NEXT-1 ;下一条指令至标下一条指令至标NEXT * 前一条指令是需要
32、重复前一条指令是需要重复 * 执行的程序块执行的程序块 * NEXT: ; 1.7.6 复位操作复位操作 o复位(复位(RSRS)是一个不可屏蔽的外部中断,它)是一个不可屏蔽的外部中断,它 可以在任何时候使可以在任何时候使C54XC54X进入一已知状态。进入一已知状态。复复 位后,处理器从位后,处理器从FF80h处取指,并开始执处取指,并开始执 行程序。行程序。(后附有复位期间处理器的状态后附有复位期间处理器的状态) o注意:复位期间对其余的状态位以及堆栈指注意:复位期间对其余的状态位以及堆栈指 针(针(SPSP)没有初始化。因此,用户在程序中)没有初始化。因此,用户在程序中 必须对它们适当地
33、进行初始化。必须对它们适当地进行初始化。 复位期间处理器进行的操作复位期间处理器进行的操作 o将将IPTP置成置成1FFh; o将将PMST中的中的MP/MC置成与引脚置成与引脚MP/MC相同的数值相同的数值; o将将PC置成置成FF80h; oXPC寄存器清成零寄存器清成零;(C548) o不管不管MP/MC状态如何状态如何,将将FF80h加到地址总线加到地址总线; o数据总线变成高阻状态数据总线变成高阻状态; o控制线均处于无效状态控制线均处于无效状态; o产生产生IACK信号信号; oINTM置成置成1,关闭所有的可屏蔽中断关闭所有的可屏蔽中断; o中断标志寄存器中断标志寄存器IFR清零
34、清零; o产生同步复位信号产生同步复位信号(SRESET),对外围电路初始化对外围电路初始化 o将下列状态位置成初始值将下列状态位置成初始值: ARP=0 CLKOFF=0 HM=0 SXM=1 ASM=0 CMPT=0 INTM=1 TC=1 AVIS=0 CPL=0 OVA=0 XF=1 BRAF=0 DP=0 OVB=0 C=1 DROM=0 OVLY=0 C16=0 FRCT=0 OVM=0 1.7.7中断中断 o中断是由硬件或者软件驱动的信号。中断是由硬件或者软件驱动的信号。 oC54X既支持软件中断既支持软件中断,也支持硬件中断也支持硬件中断; n软件中断软件中断: n硬件中断硬件
35、中断: oC54X的中断可分成两大类的中断可分成两大类: n第一类是可屏蔽中断第一类是可屏蔽中断; n第二类是非屏蔽中断第二类是非屏蔽中断. 可屏蔽中断与非屏蔽中断可屏蔽中断与非屏蔽中断 o可屏蔽中断:可屏蔽中断: n对对C54X最多可支持最多可支持16(SINT15-SINT0)个可屏蔽中断个可屏蔽中断; 例如例如:C541只用了一部分只用了一部分-9个:个: INT3-0; RINT0,XINT0,RINT1,XINT1(串行口中断串行口中断); TINT(定时器中断定时器中断); o非屏蔽中断:非屏蔽中断: n所有的软件中断和两个硬件中断:所有的软件中断和两个硬件中断:(RS和和NMI)
36、 o中断有两个寄存器,它们是中断标志寄存器(中断有两个寄存器,它们是中断标志寄存器(IFR)和中)和中 断屏蔽寄存器(断屏蔽寄存器(IMR)。)。 中断处理过程:中断处理过程: oC54x处理过程分三个阶段:处理过程分三个阶段: n第一阶段:接受中断请求第一阶段:接受中断请求; n第二阶段:响应中断第二阶段:响应中断; n第三阶段:执行中断服务程序第三阶段:执行中断服务程序. 第一阶段:接受中断请求第一阶段:接受中断请求 o 当发生硬件和软件指令请求中断时,当发生硬件和软件指令请求中断时, CPU的的IFR中的相应标志位置成中的相应标志位置成1。 o硬件中断分类:硬件中断分类: n外部外部 n
37、内部内部 o产生软件中断的指令:产生软件中断的指令: nINTR nTRAP nRESET 第二阶段:响应中断第二阶段:响应中断 o 软件中断和非屏蔽中断的响应条件:软件中断和非屏蔽中断的响应条件: CPU立即响应。立即响应。 p可屏蔽中断的响应条件:可屏蔽中断的响应条件: n 优先级别最高。优先级别最高。 n ST1中的中的INTM位为位为0。 n IMR中的相应位为中的相应位为1。 第三阶段:执行中断服务程序。第三阶段:执行中断服务程序。 o1.将将PC值值(返回地址返回地址)存到数据存储器堆栈顶存到数据存储器堆栈顶; o2.将中断向量的地址加载到将中断向量的地址加载到PC; o3.在向量
38、地址上取指在向量地址上取指; o4.执行分支转移指令执行分支转移指令,转移到中断服务程序转移到中断服务程序; o5.执行中断服务程序执行中断服务程序; o6.中断返回中断返回,从堆栈弹出返回地址加到从堆栈弹出返回地址加到PC; o7.继续执行被中断了的程序继续执行被中断了的程序. 流水线流水线 流水线流水线 操作操作 在执行多条指令时,将每条指令的在执行多条指令时,将每条指令的 预取指、取指、译码、寻址、读取预取指、取指、译码、寻址、读取 操作数、执行等阶段,相差一个阶操作数、执行等阶段,相差一个阶 段地重叠地执行。段地重叠地执行。 流水流水 线操线操 作作的的 优点优点 一条一条k k段流水
39、能在段流水能在k k+ +(n n-1-1)个周期内处理)个周期内处理n n 条指令。其前条指令。其前k k个周期用于完成第一条指令个周期用于完成第一条指令 ,其余,其余n n-1-1条指令的执行需要条指令的执行需要n n-1-1个周期。个周期。 而非流水处理器上执行而非流水处理器上执行n n条指令则需要条指令则需要nknk 个周期。当指令条数个周期。当指令条数n n较大时,可认为每个较大时,可认为每个 周期内执行的最大指令个数为周期内执行的最大指令个数为k k。 预取指预取指P 取指取指F 译码译码D 寻址寻址A 读取操作数读取操作数R 执行执行X 流水线操作流水线操作 在第一个机器在第一个
40、机器 周期用周期用PCPC中的中的 内容加载内容加载PABPAB 在第二个机器周在第二个机器周 期用读取到的指期用读取到的指 令字加载令字加载PBPB。 第三个周期用第三个周期用PBPB的内容加载的内容加载 指令寄存器指令寄存器IRIR,对,对IRIR内的指内的指 令进行译码,产生执行指令令进行译码,产生执行指令 所需要的一系列控制信号。所需要的一系列控制信号。 预取指预取指P 取指取指F 译码译码D 寻址寻址A 读取操作数读取操作数R 执行执行X 流水线操作流水线操作 用数据用数据1 1读地址加载读地址加载 DABDAB,或用数据读地,或用数据读地 址加载址加载CABCAB,修正辅助,修正辅
41、助 寄存器和堆栈指针。寄存器和堆栈指针。 读数据读数据1 1加载加载DBDB,或读数,或读数 据据2 2加载加载CBCB;用数据;用数据3 3写写 地址加载到地址加载到EABEAB,以便在,以便在 流水线的最后一级将数流水线的最后一级将数 据送到数据存储空间。据送到数据存储空间。 执行指令,或用执行指令,或用 写数据加载写数据加载EBEB。 空转浪费周期空转浪费周期 1延迟分支转移的流水线图延迟分支转移的流水线图 无延迟流水线分支转移的问题无延迟流水线分支转移的问题 地址地址 指令指令 a1a1,a2 a2 B b1 B b1 ;这是一个四周期、二字分支指令;这是一个四周期、二字分支指令 a3
42、 a3 i3 i3 ;这是任意的一周期、一字指令;这是任意的一周期、一字指令 a4 a4 i4 i4 ;这是任意的一周期、一字指令;这是任意的一周期、一字指令 b1 j1b1 j1 例例 分支转移指令流水线图分支转移指令流水线图 用分支转移用分支转移 指令的地址指令的地址 a1a1加载加载PABPAB。 取得双字分取得双字分 支转移指令支转移指令 取得双字分取得双字分 支转移指令支转移指令 分支转移指令流水线图分支转移指令流水线图 分支转移指令分支转移指令 进入译码级进入译码级 用新的值用新的值b1b1加载加载PABPAB i3i3和和i4i4指令取指。指令取指。 由于这两条指令由于这两条指令
43、 处在分支转移指处在分支转移指 令的后面,虽然令的后面,虽然 已经取指,但不已经取指,但不 能进入译码级,能进入译码级, 且最终被丢弃。且最终被丢弃。 i3i3和和i4i4指令取指。指令取指。 由于这两条指令由于这两条指令 处在分支转移指处在分支转移指 令的后面,虽然令的后面,虽然 已经取指,但不已经取指,但不 能进入译码级,能进入译码级, 且最终被丢弃。且最终被丢弃。 分支转移指令流水线图分支转移指令流水线图 j1j1指令取指指令取指 双字分支转移双字分支转移 指令进入流水指令进入流水 线的执行级线的执行级 执行执行j1j1指令指令 双字分支转移双字分支转移 指令进入流水指令进入流水 线的执
44、行级线的执行级 由于由于i3i3和和i4i4指令指令 是不允许执行的是不允许执行的 ,所以这两个周,所以这两个周 期均花在分支转期均花在分支转 移指令的执行上移指令的执行上 。 由于由于i3i3和和i4i4指指 令是不允许执令是不允许执 行的,所以这行的,所以这 两个周期均花两个周期均花 在分支转移指在分支转移指 令的执行上。令的执行上。 允许跟在延迟分支允许跟在延迟分支 转移指令之后的两转移指令之后的两 条单字条单字或一条双字或一条双字 指令可以被执行指令可以被执行 延迟分支转移延迟分支转移 注意注意 1.1.延迟操作指令后面只有两个字的空延迟操作指令后面只有两个字的空 隙,因此不能在此空隙
45、中安排任何隙,因此不能在此空隙中安排任何 一类分支转移指令或重复指令;一类分支转移指令或重复指令; 2.2.在在CALLDCALLD或或RETDRETD的空隙中还不能安的空隙中还不能安 排排PUSHPUSH和和POPPOP指令。指令。 3 3. .延迟操作指令比它们的非延迟型延迟操作指令比它们的非延迟型 指令要快,在调试延迟型指令时,指令要快,在调试延迟型指令时, 直观性稍差一些,因此希望在大多直观性稍差一些,因此希望在大多 数情况下还是采用非延迟型指令。数情况下还是采用非延迟型指令。 例例3-8 在完成在完成R=R=(x+yx+y)* *z z操作后转至操作后转至nextnext。 可以分别
46、编出如下两段程序:可以分别编出如下两段程序: 利用普通分支转移指令利用普通分支转移指令B B 利用延迟分支转移指令利用延迟分支转移指令BDBD LD xLD x,A LD xA LD x,A A ADD yADD y,A ADD yA ADD y,A A STL ASTL A, s STL As STL A, ss LD sLD s,T LD sT LD s,T T MPY zMPY z,A BD next A BD next STL ASTL A, r MPY zr MPY z,A A B next STL AB next STL A, rr (共(共8 8个字,个字,1010个个T T)
47、(共(共8 8个字,个字,8 8个个T T) 在空闲的随后两周期在空闲的随后两周期 中执行下两条指令中执行下两条指令 XC nXC n,cndcnd,cndcnd,cndcnd 如果条件满足,则执如果条件满足,则执 行下面行下面n n(n=1n=1或或2 2)条指令,)条指令, 否则下面否则下面n n条指令改为执行条指令改为执行 n n条条NOPNOP指令。指令。 2条件执行指令的流水线图条件执行指令的流水线图 条件执行指令条件执行指令XC 有下列程序:有下列程序: 地址地址 指令指令 a1 i1a1 i1 a2 i2a2 i2 a3 i3a3 i3 a4 XC 2a4 XC 2, condc
48、ond a5 i5a5 i5 a6 i6 a6 i6 条件执行指令流水线图条件执行指令流水线图 XCXC指令的地址指令的地址 a4a4加载到加载到PAB PAB 取取 X CX C 指 令指 令 的操作码的操作码 求解求解XCXC指令所规定的条件。如果条件满指令所规定的条件。如果条件满 足,则后面指令足,则后面指令i5i5和和i6i6进入译码级并执进入译码级并执 行;否则不对行;否则不对i5i5和和i6i6指令译码。指令译码。 1. 1. XCXC是一条单字单周期指令,与条件跳是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后转指令相比,具有快速选择其后1 1或或2 2 条指令是否执
49、行的优点条指令是否执行的优点 ; 2. XC2. XC指令在执行前指令在执行前2 2个周期就已经求出个周期就已经求出 条件,如果在这之后到执行前改变条条件,如果在这之后到执行前改变条 件(如发生中断),将会造成无期望件(如发生中断),将会造成无期望 的结果的结果 。 3 3. . 要尽力避免在要尽力避免在XCXC指令执行前指令执行前2 2个周期个周期 改变所规定的条件改变所规定的条件 。 注注 意意 共用总线、存储器、共用总线、存储器、 数据未准备好数据未准备好 3流水线冲突流水线冲突 流水线冲突原因流水线冲突原因 不会产生流水线冲突的情况不会产生流水线冲突的情况 (1 1)在单周期内允许同时
50、访问)在单周期内允许同时访问DARAMDARAM的不同块。的不同块。 (2 2)当流水线中的一条指令访问某一存储器块时,)当流水线中的一条指令访问某一存储器块时, 允许流水线中处于同一级的另一条指令访问允许流水线中处于同一级的另一条指令访问 另一个存储器块。另一个存储器块。 是利用一次访问中对是利用一次访问中对 前、后半个周期分时前、后半个周期分时 进行访问的缘故。进行访问的缘故。 CPU能够在单周期能够在单周期 内对内对DARAM进行进行 两次访问两次访问而不冲突而不冲突 对对PAB/PBPAB/PB取指取指 利用前半周期利用前半周期 对对DAB/DBDAB/DB读取第一个数据读取第一个数据
51、 利用前半周期利用前半周期 对对CAB/CBCAB/CB读取第二个数据读取第二个数据 利用后半周期利用后半周期 对对EAB/EBEAB/EB将数据写存储器将数据写存储器 利用后半周期利用后半周期 解决解决 冲突冲突 办法办法 人为合理安排指令,人为合理安排指令, 错开访问时序错开访问时序 CPUCPU通过写操作延迟一个周通过写操作延迟一个周 期,或者通过插入一个空周期,或者通过插入一个空周 期的办法,自动地解决期的办法,自动地解决 CPUCPU同时访问同时访问DARAMDARAM的同一存储器块就会发生时的同一存储器块就会发生时 序上的冲突的情况:序上的冲突的情况: 同时从同一存储器块中取指和取
52、操作数(都在同时从同一存储器块中取指和取操作数(都在 前半个周期);前半个周期); 同时对同一存储器块进行写操作和读(第二个同时对同一存储器块进行写操作和读(第二个 数)操作(都在后半周期)。数)操作(都在后半周期)。 从从DARAMDARAM块中同时取指和取操作数块中同时取指和取操作数 冲突冲突延迟一个周期延迟一个周期 4解决流水线冲突的方法解决流水线冲突的方法 (1)可能发生流水线冲突的情况)可能发生流水线冲突的情况 1) 1) 辅助寄存器(辅助寄存器(AR0AR0AR7AR7)。)。 2) 2) 重复块长度寄存器(重复块长度寄存器(BKBK)。)。 3) 3) 堆栈指针。堆栈指针。 4)
53、 4) 暂存器(暂存器(T T)。)。 5) 5) 处理器工作方式状态寄存器(处理器工作方式状态寄存器(PMSTPMST)。)。 6) 6) 状态寄存器(状态寄存器(ST0ST0和和ST1ST1)。)。 7 7)块重复计数器()块重复计数器(BRCBRC)。)。 8 8)存储器映象累加器()存储器映象累加器(AGAG、AHAH、ALAL、BGBG、BHBH、BLBL)。)。 存存 储储 器器 冲冲 突突 流水线冲突情况分析流水线冲突情况分析 发生流水线冲突的发生流水线冲突的例子例子 在流水线的执行在流水线的执行 阶段进行写操作阶段进行写操作 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地
54、址 无等待周期问题无等待周期问题 冲突冲突 数据未准备好数据未准备好 数据数据 未准未准 备好备好 冲突冲突 发生流水线冲突的发生流水线冲突的例子例子 在 流 水 线 的在 流 水 线 的 执 行 阶 段 进执 行 阶 段 进 行写操作行写操作 读 数 阶 段读 数 阶 段 将 常 数将 常 数 1 01 0 写到写到AR1AR1 冲突冲突 同时利用同时利用E E总线总线 CPUCPU自动地自动地 将将STMSTM的写的写 操作延迟操作延迟 一个周期一个周期 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地址 新冲突新冲突 数据未准备好数据未准备好 总线总线 冲突冲突 发生流水线冲突的发生
55、流水线冲突的例子例子 STLMSTLM指令后指令后 面 插 入 一 条面 插 入 一 条 NOPNOP指令指令 在流水线的在流水线的 执行阶段进执行阶段进 行写操作行写操作 读 数 阶 段读 数 阶 段 将常数将常数1010 写到写到AR1AR1 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地址 E E总线总线错开错开 解决解决 数据准备好数据准备好 解决解决 (2)用等待周期表解决流水线冲突)用等待周期表解决流水线冲突 等待周期表给出了对存储器映象寄存器以及等待周期表给出了对存储器映象寄存器以及 ST0ST0、ST1ST1、PMSTPMST的的控制字段进行写操作的各种控制字段进行写操作
56、的各种 指令所需插入的等待周期。指令所需插入的等待周期。 对双字或三字指令,都会提供隐含的保护周对双字或三字指令,都会提供隐含的保护周 期。利用这些指令提供的隐含的保护周期,有时期。利用这些指令提供的隐含的保护周期,有时 可以不插可以不插NOPNOP指令。指令。 控制字段控制字段不插入不插入插入插入1 1个个插入插入2 2个个 T T STM #1kSTM #1k, T T MVDK SmemMVDK Smem,T T LD SmemLD Smem,T T LD SmemLD Smem,TSTTST 所有其它存储指令所有其它存储指令 包括包括EXPEXP ASMASM LD #k5LD #k5, ASMASM LD SmemLD Smem,ASMASM 所有其它存储指所有其它存储指令令 令令 DPDP CPL=0CPL=0 LD #k9LD #k9, DPDP LD SmemLD Smem,DPDP STM # lkSTM # lk,ST0ST0 ST # lkST # lk,ST0ST0 所有其它存储指令插入所有其它存储指令插入3 3 个个 SXM C16SXM C16 FRCT OVMFRCT OVM 所有存储指令所有存储指令 包括包括SS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年激光隧道断面测量系统资金需求报告代可行性研究报告
- 2024年磺胺类药项目资金需求报告代可行性研究报告
- (3篇)关于高三年级三年工作计划
- 网红饮品区域代理合作协议-区域市场拓展与品牌合作
- 2025年中国保健茶行业市场规模调研及投资前景研究分析报告
- 抖音社交互动解除及内容审核协议
- 资产评估机构与保险公司股权合作协议
- 网络广告投放用户数据采集授权书
- 跨境电商技术入股评估与执行合同
- 2025年中国巴西鲷鱼行业市场前景预测及投资价值评估分析报告
- 学习公共关系2025年重要试题及答案
- 2025高考北京卷作文命题趋势分析及范文
- 运维自动化流程设计-全面剖析
- 人工智能AI创业计划书
- 二级注册计量师题库附答案2025
- 武汉理工大学建筑信息模型(BIM)期末复习题
- 2025年甘肃省中考模拟英语试题(一)(含答案)
- 木模板施工安全技术规范
- 防雷日常管理制度
- DB23T 3711-2024市县级矿产资源总体规划编制技术规程
- 智能座舱域控制器液冷散热设计及仿真研究
评论
0/150
提交评论