任务:从发射队列中找出 n 个空闲的 entry 写入 (from 重命名之后的指令)
属于 Dispatch 阶段, Issue 阶段之前
对于压缩式发射队列
分配电路实现简单:只需选择发射队列最上面的 n 个 entry
对于非压缩式发射队列
方案一: 拆分并行查找
- 需要多级处理电路
- 延时: 正比于发射队列容量,每周期写入的指令数
方案二: free list 记录查找
- 借鉴 free list 使用 FIFO 记录发射队列中所有空闲 entry 的编号
- 实现有一定的复杂度和延时
方案三: 分段查找
- 把发射队列分成 m 个段,每个段内采用方案一或方案二进行查找
- 延时: 为一个段内的查找延时
- 适用于折中式/分布式发射队列:
各个段之间本身互相独立, 段的划分可以同功能单元发射队列的划分一致 - 对于集中式发射队列,存在的问题:
同一个段内的所有空闲 entry 只能找出一个,可能出现“一个段全空闲,其他段全不空闲”的情况