在嵌入式系统设计课程中,寻址方式(Addressing Modes)是指处理器或控制器在执行指令时如何访问操作数或指令中的数据。寻址方式分为指令寻址
和数据寻址
1. 指令寻址(Instruction Addressing)
指令寻址是指寻找下一条将要执行的指令地址。指令寻址包括顺序寻址、跳跃寻址
*顺序寻址:程序计数器(PC)自动递增,指向内存中下一条指令的地址。
*跳跃寻址:是指下一条指令的地址码不是由PC给出的,而是本条指令给出的。通过转移类指令实现。
- 注意:这里所说的 “ PC 加1 ” 并不是 PC 一定会加 “1” 这个数值,而是要加当前指令占据的地址长度,从而总能得到下一条指令的地址;例如,如果机器按字节编址,当前指令字长是 4 个字节,那么执行这条指令后 PC = PC + 4。
2. 数据寻址(Data Addressing)
数据寻址是确定本条指令
的地址码指明的真实地址
-
操作数:操作数是指令中参与操作的数据。
- 直接寻址:指令中的形式地址A就是操作数的真实地址EA,即EA=A。
- 间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数地址所在的存储单元地址;也就是
“地址的地址”
,即EA = (A)。 - 寄存器寻址:在指令中直接给出操作数所在的寄存器编号,寄存器存储的为操作数的地址。
- 寄存器间接选址:如果寄存器中不是直接给出操作数,而是操作数的内存地址,那么就称为寄存器间接寻址。(寄存器寻址+间接寻址)
- 隐含寻址:指指令字中不直接给出操作数的地址,而是隐含在某个寄存器中(通过操作码表示)。
- 立即寻址:地址码的形式地址A就是操作数本身,又称为立即数,一般采用补码形式。
- 偏移寻址:包
括基址寻址、变址寻址和相对寻址
。在偏移寻址中,操作数的地址通过一个基地址(通常存储在寄存器中)和一个偏移量相加计算得到。 - 堆栈寻址:通过堆栈指针操作数据,数据从堆栈中取出或压入。
**3. 流水线 **
* 概念:流水线是指在程序执行时`多条指令重叠进行`操作的一种准`并行处理`实现技术。即可以同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
* 流水线的优化技术
* 超标量流水线(Superscalar Pipeline):在一个时钟周期内,处理器可以同时发射多条指令进入流水线执行,从而进一步提高指令执行的并行性。
* 动态调度(Dynamic Scheduling):处理器可以动态地调度指令的执行顺序,以减少流水线中的数据冲突和控制冲突。
* 分支预测(Branch Prediction)处理器通过硬件预测跳转指令的执行结果,从而减少因分支指令造成的流水线暂停。
* 多级流水线(Multistage Pipeline)流水线可以进一步划分为更多阶段,以减少每个阶段的执行时间,从而提高时钟频率。
参考:> https://www.cnblogs.com/yandashan666/p/11426482.html