CPU的指令流:

流水线的概念:每个状态下都有一条指令在执行。

注意execute单元会出现流水线停滞。
降低流水线停滞的策略:

1、分支预测
2、 超标量:一个指令流里可以同时执行两个或多个指令。
即一个线程里面的两个指令同步执行。
3、 乱序执行out of order(ooo)
a b c d e
c要等到a、b 执行完后在执行,可以让c先停滞,让后续的d 、e继续执行然后执行reorder重新排序成c d e。也就是所谓的乱序执行。
最终从fetch到commit实际是保序执行的,只是其中的指令流乱序。
4、cache

5、预取
硬件预取和软件预取

6、 内存对齐
对于x86来说提升性能明显

对于62字节后的UINT变量,需要访问2个cacheline;
通过在62字节后添加2字节填充,可以做到优化。

7 、超线程
两个线程里的指令同步执行。
注意和超标量的区别

实用场景:
1、 内存屏障barrier();
2、 循环体中减少分支判断,从而减少分支预测失败带来的消耗;
3、 剥离多分支,可将命中频繁的分支放到switch前面;

性能优化专题:
https://blog.csdn.net/qq_35399548/article/details/121567758?spm=1001.2014.3001.5502

CPU | 降低流水线停滞的策略相关推荐

  1. 自己动手写CPU(2)流水线数据相关问题

    自己动手写CPU(2)流水线数据相关问题 问题定义 流水线中经常有一些被称为"相关"的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些"相关" ...

  2. 自己动手写CPU(6)流水线暂停、乘累加减与除法器的实现

    自己动手写CPU(6)流水线暂停.乘累加减与除法器的实现 流水线暂停 因为OpenMIPS设计乘累加.乘累减.除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕 ...

  3. Android 10 系统 CPU 核数、频率、策略控制

    一./sys/devices/system/cpu 目录 Z91:/sys/devices/system/cpu # ls -all ls -all total 0 drwxr-xr-x 13 roo ...

  4. 降低CSS特异性的策略

    保持项目中所有选择器的CSS专用性较低是一个值得追求的目标. 通常,这表明事物处于相对和谐状态. 您并不是在与自己作斗争,并且有足够的空间在需要时覆盖样式. 选择器的特异性会随着时间的流逝而逐渐增加, ...

  5. CPU的流水线,分支预测与乱序执行

    流水线 转自:http://www.elecfans.com/emb/dsp/20180405657563.html 流水线的概念来源于工业制造领域,以汽车装配为例来解释流水线的工作方式,假设装配一辆 ...

  6. verilog搭建单周期CPU与流水线CPU

    目录 实现功能与搭建环境介绍 单周期CPU 整体框图 具体代码 顶层模块 取值 译码 执行 访存 写回 流水线CPU 整体框图 前置知识及思路探讨 如何让流水线流起来~ Hazard_detect模块 ...

  7. CPU的流水线指令设计

    为什么小小一个CPU,有那么多周期(Cycle)? 程序的性能=指令数×CPI×时钟周期,和周期相关的只有一个时钟周期,即CPU主频的倒数. 一个CPU的时钟周期可以认为是可以完成一条最简单的计算机指 ...

  8. 自己动手写CPU(7)流水线暂停机制+乘累加累减+除法指令

    流水线暂停机制 因为OpenMIPS设计乘累加.乘累减.除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕. OpenMIPS采用的是一种改进的方法:假如位于流 ...

  9. 手把手代码实现五级流水线CPU——第三篇:流水线控制逻辑

    系列文章目录 第一篇:初级顺序流水线 第二篇:分支预测流水线 文章目录 系列文章目录 一.控制逻辑 二.具体操作 1.判断暂停 2.控制冒险 3.跳转问题 4.实现 代码 一.控制逻辑 通过暂停和插入 ...

  10. BUAA(2021秋)计算机硬件基础(软件学院计组)P4——用Logisim实现流水线CPU(含测试数据供自测)

    计算机硬件基础(软件学院计组)P4--用Logisim实现流水线CPU 目录 计算机硬件基础(软件学院计组)P4--用Logisim实现流水线CPU 实验内容 实验要求 提交要求 题解 前言及其预备知 ...

最新文章

  1. 原码,反码,补码,移码的概念以及各自的用途和优点
  2. Win10下MySQL5.7.20 Mysql(64位)解压版安装及bug修复
  3. linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...
  4. 史上最全的Visual Studio Code安装C/C++环境,若不行头砍给你。
  5. laravel 命令行输出进度条
  6. Python day16(JavaScript)
  7. 实战build-react(二)-------引入Ant Design(增加)
  8. ip地址怎么设置才有效_房产遗嘱怎么写才有效?需要公证吗?
  9. 已知两点坐标求水平距离_根据两点经纬度计算距离
  10. 一波三折:杜邦线母头制作的故事
  11. 上海复旦大学校友会曾鸣: 互联网的本质
  12. 头牌知产介绍减肥药商标注册属于哪一类?
  13. 京东、快手及其他小公司Android面试(2020)
  14. 微信小程序中获取用户微信公众号授权(openid)用来发送模板消息
  15. 乐学成语——数据库创建(导入、打开)
  16. 十四五期间我国区块链技术趋势特征分析
  17. Spring整合JPA
  18. 投票系统java如何实现_用Java实现投票系统
  19. 7种内存泄露场景和13种解决方案
  20. 宾得各焦段的镜头选择(转)

热门文章

  1. Hadoop HA架构
  2. Unable to find a single main class from the following candidates
  3. Lightly IDE 使用评测
  4. 彼得林奇的成功投资---学习之一
  5. 数据分析师是什么,深度解析数据分析师
  6. 江苏省2021年高考成绩查询入口,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口【预计6月24日起查分】...
  7. 从 Aave 到 Yearn:一文梳理 DeFi 中的「蓝筹股」
  8. 配置本地yum源文件
  9. chrome调试工具使用技巧汇总
  10. linux用户是什么意思,Linux中的./是什么意思