当前位置: 首页 > news >正文

issue阶段的选择电路的实现

  • 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进行合理的归类,得到相对优化的分配结果。
http://www.lryc.cn/news/264763.html

相关文章:

  • BearPi Std 板从入门到放弃 - 后天篇(3)(ESP8266透传点灯)
  • 【Linux】macOS下使用scp命令编写脚本上传文件至服务器
  • 难以置信:WINDOWS11真的取消了助记符
  • 使用VSC从零开始Vue.js——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务3:数据可视化
  • 企业直聘招聘人才求职系统招聘会小程序系统源码
  • 大型语言模型:SBERT — Sentence-BERT
  • 高效编写软件测试报告的关键技巧
  • 编写CI/CD自动化部署脚本
  • Pandas实践_分类数据
  • git的使用思维导图
  • Qt 软件界面点击QCombBox控件,造成整个界面移位
  • AI Native工程化:百度App AI互动技术实践
  • DDPM推导笔记
  • 【C#/Java】【小白必看】不要只会读写文本文件了!对象序列化助你提高效率
  • 排障启示录-无线终端信号弱
  • gem5 RubyPort: mem_request_port作用与连接 simple-MI_example.py
  • 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测
  • 文献速递:生成对抗网络医学影像中的应用—— CG-3DSRGAN:用于从低剂量PET图像恢复图像质量的分类指导的3D生成对抗网络
  • 前端验收测试驱动开发
  • 图像卷积操作
  • 目标检测入门体验,技术选型,加载数据集、构建机器学习模型、训练并评估
  • 【UE5插件推荐】运行时,通过HTTP / HTTPS下载文件(Runtime Files Downloader)
  • 信息论安全与概率论
  • 各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统
  • Netty Review - 优化Netty通信:如何应对粘包和拆包挑战
  • vue介绍以及基本指令
  • 重塑数字生产力体系,生成式AI将开启云计算未来新十年?
  • JFreeChart 生成图表,并为图表标注特殊点、添加文本标识框
  • vue整合axios 未完
  • java代码编写twitter授权登录