南京红酒网站建设,企业网站制作公司24小时接单,微信端网站设计规范,easyui 网站开发实现参考来源#xff1a;《超标量处理器设计》—— 姚永斌
N-Way CPU 取指问题
如果CPU可以在每个周期内同时解码N条指令#xff0c;则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令#xff0c;这N条指令成为一组Fetch Group。 为了…参考来源《超标量处理器设计》—— 姚永斌
N-Way CPU 取指问题
如果CPU可以在每个周期内同时解码N条指令则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令这N条指令成为一组Fetch Group。 为了保证处理器能够每个周期在I-Cache取得N条指令最简单的方法就是把I-Cache的Data Block大小设置为N。 理想情况下CPU的取指令也是N Words对齐那么I-Cache命中时可以直接输出Cache Line中的value。 但是真实场景下由于存在跳转指令取指令地址不总是N Words对齐。
这就导致一个周期内需要访问2行Cache Line才能一次取出N条指令但是CPU设计中单周期只能访问一个Cache Line。
Solution - Instruction Buffer
对于N-Way CPU假设一次能够从Cache中取出M条指令只要满足MN就能够满足性能最大化。例如下图的2-way处理器可以取出4条指令。 因此某些处理器中采用每周期取出来的指令数量大于能够解码数量的设计通过一个缓存 Instruction Buffer将多余指令保存避免硬件资源浪费。 并且除了分支指令以及异常的场景取指令的地址都会按照字节对齐方式增加。
Solution - 增加Data Block
增加Data Block为8只要取指令地址不在最后的三个Word上就可以每周期读取四个指令。
不过在Cache Size固定场景下增加Cache Line Size会减少Cache Set数量导致Cache Miss概率增加。 并且如果Cache Line Size为8Byte就需要8个32位SRAM电路及保护电路但最终只输出4个字会比较浪费资源。 因此实际当中仍然只使用4个SRAM实现八个字的data block。
一个Cache Line的8个Byte数据占用4个SRAM的两行。 每次Cache Line命中SRAM命中的两行均为有效。 命中后需要根据指令顺序对SRAM0/1/2/3进行重排序。
如果有分支预测那么一旦预测失败上述行为只是消耗处理器性能都要被flush掉属于无用消耗。 对于取指令阶段如果被预测执行分支跳转则指令组中之后的指令就不应该进入到后续的流水线中。