沈阳建网站企业,网站整合营销,上海开办企业一窗通,黄山网站建设哪家好寄存器重命名 重命名映射表基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名解决 RAW 相关性解决 WAW 相关性对写 RAT 进行检查#xff08;判断哪个 ARF 写入到 RAT#xff09;对写 ROB 进行检查#xff08;判断#xff09; 特殊指令处理方式 重命名映射表
重命名时… 寄存器重命名 重命名映射表基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名解决 RAW 相关性解决 WAW 相关性对写 RAT 进行检查判断哪个 ARF 写入到 RAT对写 ROB 进行检查判断 特殊指令处理方式 重命名映射表
重命名时
源寄存器查找 RAT 获得对应物理寄存器标号指令的目的寄存器会新增对应新的物理寄存器
两种方式
SRAM 方式 SRAM 是每个逻辑寄存器分配一个物理寄存器Entry 项为 32 个一共有 32 个逻辑寄存器SRAT 占据空间是 32 X 6 bits 192 bits CAM 方式Content Addressable Memory CAM 是每个物理寄存器分配一个逻辑寄存器所以需要 valid 位来表示Entry 项为 64 个一共有 64 个物理寄存器CRAT 占用空间是 64 X 5 bits 320 bits需要 valid 位来表示 对比 都是使用逻辑寄存器来寻址SRAM 快并且节省资源对 cRAT 进行 Checkpoint 只需要保存状态位
32 个逻辑寄存器 5 位来表示 64 个物理寄存器 6 位来表示 #问题 CAM 的 check points 只需要一位 在完成 RAT 写入时 对于一个特点的通用寄存器来说
SRAM 中 需要保存当前值当前值又因为 ARF 可能会不断映射新的值而被覆盖所以需要保存所有 CAM 中 ARF 的内容不断写入PRF 不断新增覆盖旧项所以只需要指示 valid 即可
基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名
Dest Src1 op Src2 过程
从 RAT 里找到 Src1 和 Src2 的物理寄存器 Psrc1 和 Psrc2 从 free list 中找到一个空闲的物理寄存器 Pdest 将 Dest 和 Pdest 的映射关系写到 RAT 中之后可以用 Dest 去索引映射关系
一条指令重命名RAT 一共需要 3 读 1 写端口
3 读 2 个 Src1 和 Src21 个 Dest 读取之前的映射 1 写 给 Dest 写入新的映射
4-way 指令则是 12 读4 写 重命名可以解决 WAR 和 WAW 问题 为什么重命名还需要 RAW 和 WAW 相关检查 指令 A 和 B 之间 RAW 相关 R0 需要查询指令 A 的结果而不是 RAT 的结果 指令 A、B、D 之间 WAW 相关 写入 RAT 时一个周期多条指令有相同目的寄存器则将最新的映射写到 RAT 中即可而检查旧映射时也应该使用有 WAW 相关性的指令而不是 RAT 读取的值 指令 B 和 D 之间的 WAR 相关 对重命名没有影响
主要延迟的来源
多端口 SRAM 本身延迟RAW 和 WAW 相关性检查的延迟
在不出现 RAW 和 WAW 相关下的映射 解决 RAW 相关性 #问题 R1 映射出来结果应该一致为什么会不一致
检查方式
每条指令的 Src 和之前的 Dst 编号进行比较如过相等则用 free list 取出来的值如果有多个相等则取出最新的指令对应的物理寄存器 解决 WAW 相关性
对写 RAT 进行检查判断哪个 ARF 写入到 RAT
只有最新的指令 D 才能写到 RAT对周期内进行寄存器重命名的所有 WAW 写之前完成检查
对写 ROB 进行检查判断
为了释放不再使用的物理寄存器需要从 RAT 读出以前对应的物理寄存器并且写到 ROB 当中告诉 ROB 我的值是在哪里而不是让 ROB 去检查 ART 查到错误的值 如果寄存器地址同时读写操作先读后写
读优先则能满足需求
FPGA 的两种特性 写优先
写入的内容可以马上读取到 读优先
写入的内容需要在下个周期读取
特殊指令处理方式
根据当前目的寄存器的个数决定当前周期从 free list 中读取的数值的个数使用目的寄存器读取 RAT 时根据标记明确哪些会读哪些不会读使用源寄存器读取 RAT 时通用RAW 和 WAW 检查时自动忽略比较的结果