0%

MIPS指令类型

MIPS指令

操作码的长度决定了可以提供多少个指令数;操作码的编码一定要有唯一的解释

一、计算机的寻址方式

  1. 立即寻址:指令中给出操作数
  2. 直接寻址:指令中给出操作数所在的有效地址
  3. 间接寻址:指令中给出一个间接地址,间接地址在内存中寻找直接地址,直接地址读出操作数
  4. 寄存器间接寻址:指令给出寄存器编号,根据寄存器内容找出操作数
  5. 基址寻址:指令中给出一个寄存器编号,同时给出一个偏移地址,基址寄存器内容+偏移地址从内存中取操作数

二、操作码编码

  1. 定长操作码编码
  2. 扩展操作码编码

三、MIPS的指令可以分为3种操作类型

  1. R型
  2. I型
  3. J型

1、R型指令

  • OP:000000 由func来决定他的功能
  • rs、rt是两个源操作数所在的寄存器号
  • rd是目的操作数所在的寄存器号
  • shamt是位移量,执行移位操作的时候指明需要移动的次数

同时也要牢记R型指令的指令表:

2、I型指令

  • 操作功能由OP决定
  • rs是第一个源操作数,immediate是第二个源操作数
  • rt是目的操作数所在的寄存器编号

I型指令的操作表:

  • 在I型指令中,addi指令是需要进行符号位扩展,但是andi、ori、xori指令只需要进行零扩展即可
  • sw、lw、beq、bne等操作都是进行符号位扩展

3、J型指令

  • 操作功能由OP决定
  • 转移地址:26位(立即数)

J型指令操作表:

跳转指令寻址:

伪直接寻址

image-20241204201758789

PC相对寻址

image-20241204201816128

异常和中断

image-20241204202419275
image-20241204202444945

Cache映射

直接映射

主存中的每个块只能放在Cache中的唯一位置(行)

Cache行号=主存块号 mod Cache 行数

image-20241204202801123

全相联映射

主存中的每个块可放置在Cache中的任何位置(行)

image-20241204202851289

N路组相联映射

一个Set是若干块的集合

主存和Cache中的组都具有同样大小(组内块数相同)

“N路”指每个组中包含的块(行)的数目,也称为相联度

主存中的一个块首先被映射到Cache中的唯一一组中,然后该块可以放在这个组的任何一行中

image-20241204203017769

总结

image-20241204203026144

Cache结构的表示

image-20241204203049833

Cache块替换策略

LRU

image-20241204203225314

Cache写命中策略

image-20241204203412872

写直达

动画

写回

动画1

写分配

动画2

写不分配

动画3

虚拟索引虚拟标记(VIVT)

优点: 不需要每次访存的时候把虚拟地址经过MMU转换为物理地址缩短了访存关键路径, 提升了频率, 提升了Cache访问速度

缺点: 即使Cache命中,也需要访问并更新TLB(两者可以并行) 进程切换需要冲刷Cache,或者增加PID(进程ID)位 歧义问题(ambiguity) 别名问题(alias)

歧义问题: 相同的虚拟地址映射到不同的物理地址 假设A进程的虚拟地址0x4000映射物理地址0x2000,B进程的虚拟地址0x4000映射物理地址0x3000。A进程切换到B进程,导致0x4000地址访问命中,而对应的是物理地址0x2000中的数据,从而出现错误 解决方案:冲刷(flush)Cache(使用专门的Cache指令,例如MIPS中的Cache),保证切换后的进程不会错误的命中上一个进程的缓存数据

别名问题: 不同的虚拟地址映射到相同的物理地址,例如进程间通信假设虚拟地址0x2000和0x4000都映射到相同的物理地址0x3000,其中虚拟地址中的[15…4]位作为index,此时同一物理地址数据被加载到不同的Cache Line,容易破坏数据一致性。

物理索引物理标记

从虚拟地址中抽取index查找Cache,从物理地址中抽取tag进行比较 Cache的查找和物理地址的转换同时进行,性能优于PIPT 不存在歧义问题,但依然存在别名问题。

VIPT中的别名问题

直接映射:当Cache容量不大于页大小时,将不会产生别名问题 组相联:当Cache中一路的容量不大于页大小时,将不会产生别名问题 此时,index位于页偏移之中,虚拟地址和物理地址对应的index相同 VIPT相当于PIPT

image-20241207205415587

解决方案1:提高相联度,将索引index控制在page offset字段范围之内 解决方案2:使用大页,将索引index控制在page offset字段范围之内 解决方案3:调整虚实映射,避免相同物理地址数据加载到不同Cache行对于直接相联,在建立共享映射的时候,虚拟地址都是按照Cache大小对齐对于组相联,在建立共享映射的时候,虚拟地址都是按照一路Cache大小对齐 解决方案4:但满足不了将索引VA的index控制在page offset字段范围之内时,需要操作系统提供支持,即Page Color功能。