【嵌入式】CPU性能提升:流水线机制

CPU性能提升:流水线机制

CPU流水线是什么:

一条指令执行一般需要三个步骤:取指令、翻译、执行,CPU内部有对应的取指单元、译码单元、执行单元等;

一般来说,取指单元先取指令,然后给译码单元翻译,最后翻译好给执行单元执行,执行完取指单元再取指令开始新的一轮

而CPU流水线就是,取指单元取到第一个指令,然后给译码单元翻译,在译码单元翻译时又开始取第二个指令;当译码单元翻译完成给到执行单元时,第二个指令就马上进来了,而取指单元又开始取第三个指令;

在这个过程中,每个单元不会因为下一级单元没做完就停止工作等待,从而把CPU的性能极大的压榨

流水线冒险:

一旦发生预取指令失败,流水线中失败指令后预取的指令都要丢掉,流水线就会就会停顿下来,叫做冒险

  1. 结构冒险:所需要的硬件正在为前面的指令工作

    比如:这一条指令需要用到的寄存器正在被上一条指令使用着

  2. 数据冒险:所需要的数据需要前面指令的计算结果才能执行

    比如:指令1是c=a+b,指令2是e=c+d

  3. 控制冒险:根据前面的指令的执行结果决定下一步的行为

    比如:代码中的if、else

如何防止流水线冒险:

  1. 重命名(处理结构冒险)
  2. 插入空指令等待
  3. 分支预测(处理控制冒险)
  4. 乱序执行

SISD、SIMD

SIMD是单指令多数据的运算,可以提高CPU执行效率

如果要计算a+b,CPU是怎么做的呢?

首先,控制单元要去储存设备取出a和b,然后放入算术计算单元中;

那么,这个a和b是怎么取呢?

如果先取出a再取出b,这就是SISD,单指令单数据

如果可以一起取出来,这就是SIMD,单指令多数据

单发射、多发射

每个时钟周期只能执行一条指令,只能执行一条指令,这种处理器叫单发射处理器
而可以执行多条指令,则是多发射处理器

处理器内部一般有多个执行单元,如ALU、乘法器、FPU(浮点运算单元)

如果是单发射处理器,那么在使用一个执行单元时,其他执行单元都会闲着

所以,如果在一个时钟周期里可以同时分发不同的指令给不同的执行单元,就可以达到指令级的并行,提高CPU运行速度

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值