0%

OOO CPU Issue Stage: Allocation

任务:从发射队列中找出 n 个空闲的 entry 写入 (from 重命名之后的指令)

属于 Dispatch 阶段, Issue 阶段之前

对于压缩式发射队列

分配电路实现简单:只需选择发射队列最上面的 n 个 entry

对于非压缩式发射队列

方案一: 拆分并行查找

  • 需要多级处理电路
  • 延时: 正比于发射队列容量,每周期写入的指令数

方案二: free list 记录查找

  • 借鉴 free list 使用 FIFO 记录发射队列中所有空闲 entry 的编号
  • 实现有一定的复杂度和延时

方案三: 分段查找

  • 把发射队列分成 m 个段,每个段内采用方案一或方案二进行查找
  • 延时: 为一个段内的查找延时
  • 适用于折中式/分布式发射队列:
    各个段之间本身互相独立, 段的划分可以同功能单元发射队列的划分一致
  • 对于集中式发射队列,存在的问题:
    同一个段内的所有空闲 entry 只能找出一个,可能出现“一个段全空闲,其他段全不空闲”的情况