百科问答小站 logo
百科问答小站 font logo



计算机系统结构,流水线控制冲突中为减少分支延迟使用延迟槽的方法? 第1页

  

user avatar   kevinkios 网友的相关建议: 
      

以一个五级流水线的mips处理器为例。一条指令的执行经过IF,ID,EX,MEM以及WB五个环节。假设跳转指令在第三个周期计算出条件判断结果以及跳转目标地址,那么在跳转指令的之后两条指令都是不确定是否可以执行的。

最简单的处理方法是在之后插入两条nop指令,等到跳转地址计算出来之后再取新的指令。如图

但是这样每次跳转都需要插入两条nop,相当于这两个时钟周期是白白浪费的。为了提高效率,编译器会找到无论跳转与否都会执行的两条指令放在这里,这就是分支延迟槽。

随着现代处理器流水线不断加深,从取指到计算出跳转地址所需的时钟周期也变多了,意味着编译器需要找到更多指令来填满分支延迟槽。有时很难找到这么多指令,因此分支延迟槽也慢慢不被采用了。




  

相关话题

  程序在编译的时候,会转换成汇编,然后是机器指令,那么运行的时候,操作系统充当什么呢? 
  操作系统里面经常说的一个功能用「软件实现」还是用「硬件实现」,其本质区别是什么? 
  在理想状态下,CPU需不需要工作在一个时钟下? 
  in memory computing 存内计算是学术圈自娱自乐还是真有价值? 
  程序在编译的时候,会转换成汇编,然后是机器指令,那么运行的时候,操作系统充当什么呢? 
  在这种不同操作下,对于计算机体系的不同是否会造成时间差异? 
  CPU内部各个部件的时延大概是多少?(皮秒,纳秒)? 
  为啥arm架构比x86 x64省电? 
  一般编程的时候,使用汇编能比使用高级语言(比如C,C++,java等)有更高的运行效率吗?高能高出多少呢? 
  为什么大部分中央处理器(CPU)不能直接对内存中的数据进行运算? 

前一个讨论
如何证明黎曼重排定理?
下一个讨论
微信如何扛住 10 亿用户同时修改微信号?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利