可以免费秒玩游戏的网站,开网页cpu使用率高,is_category wordpress,WordPress内容页面加边框1-of-M的仲裁电路 为什么要实现oldest-first 功能的仲裁呢#xff1f; 这是考虑到越是旧的指令#xff0c;和它存在相关性的指令也就越多#xff0c;因此优先执行最旧的指令#xff0c;则可以唤醒更多的指令#xff0c;能够有效地提高处理器执行指令的并行度,而且最旧的指…1-of-M的仲裁电路 为什么要实现oldest-first 功能的仲裁呢 这是考虑到越是旧的指令和它存在相关性的指令也就越多因此优先执行最旧的指令则可以唤醒更多的指令能够有效地提高处理器执行指令的并行度,而且最旧的指令还占据着处理器中其他的资源,例如重排序缓存(ROB)和Store Buffer等部件,越早地执行这些旧的指令,就可以越早地释放这些硬件资源供后面的指令使用。年龄信息的追踪 年龄信息指的是进入流水线的先后顺序 in-order处理器先执行的比后执行的要老ort-of-order处理器进入issue 队列后顺序被打乱了但是还有一个地方记录着即ROB可以使用ROB_IDX作为这条指令的年龄信息但是只直接使用rob_idx无法准确表达年龄信息 解决方式增加1bit, 即position bit 位置值(position bit)相同时ROB的地址值越小对应的指令越旧位置值(position bit)不同时ROB的地址值越大对应的指令越旧。 1-of-M的仲裁电路示意图 上述的示意图中需要解决两个问题 如何屏蔽掉发射队列中那些还没有准备好的指令,使这些指令的年龄信息不会对仲裁电路的结果产生影响 通过rdy bit来解决如何根据仲裁电路挑选出的年龄值,在发射队列中找到对应的指令? 将issue queue idx也随着这个比较电路一直送下去N-of-M的仲裁电路 几个 FU共用一个发射队列这个发射队列需要在一个周期内为每个 FU 都选择出一条指令这样就要求它有一个 N-of-M 的仲裁电路折中方案如上 图8.30中存在四个FU: ALU0、ALU1、Mul/Div0和Mul/Div1,它们共用一个发射队列发射队列的容量为M每个FU都有一个专属的 1-of-M 的仲裁电路。当指令被写到发射队列中的某个表项时,根据这条指令的类型,将这条指令分配给一个对应的FU如果存在功能相同的FU,则会按照轮流或者随机的顺序进行分配,这个分配的过程本质上可以通过一个多路分配器(demultiplexer)来实现它将每个表项的ready信号根据指令的类型分配给不同的仲裁电路因为发射队列中的每个表项都有可能存放不同类型的指令所以每个FU 的仲裁电路都会有M 个输入执行完整的 1-of-M 的仲裁过程这样整个 N-of-M 的仲裁电路的延迟就只有1-of-M的仲裁电路的延迟了实际的实现方案 将各种运算类型进行合并使得几个运算类型共用一个发射队列 将加减法、逻辑运算和移位运算合在一个FU中,这就传统意义上的ALU,它们共用一个发射队列;将整数的乘法和除法操作合并在一起;将访问存储器和访问协处理器合并在一起;将所有的浮点运算合并在一起;这就形成了四个比较大的FU。当然,这只是最简单的情况,在实际的设计中,需要对不同的指令集,甚至是不同的程序进行分析,才能对FU进行合理的归类,得到相对优化的分配结果。