计算机组成原理自学笔记(十一)

闷头学习也是种逃避


指令流水
流水线技术是现代处理器当中最常用也是最有效的一种提高指令解释速度的方法。
1.如何提高机器速度
1)提高访存速度:高性能芯片、cache、多体并行(对多个存储体进行交叉访问)
2)提高I/O和主机之间的传送速度:中断、DMA、通道、I/O处理机、多总线
3)提高运算速度:高性能芯片、改进算法、快速进位链
提高整机处理能力:高速器件、改进处理器的体系结构,开发系统的并行性。
2.并行性的概念

并行
并发
两个或者是多个事件在同一时间段发生
同时
两个或者是多个时间在同一时刻发生

并行的等级:
过程级:程序、进程 -------------------------------软件实现
指令级:指令之间、指令内部--------------------硬件实现
3.指令流水的原理:
1)指令的串行执行
在这里插入图片描述
2)指令的二级流水
将指令的执行分成取指和执行阶段,采用二级流水
在这里插入图片描述
3)影响指令流水效率加倍的因素
此处以二级流水为例
执行时间 > 取指时间:有些指令会比较复杂涉及到的操作复杂,取指的时候我们假设指令格式统一长度一致,那么取指时间都是相同的,那么对复杂指令而言执行时间就会比取指时间更长,解决方式:
在这里插入图片描述
条件转移指令对指令流水的影响:
无条件转移指在译码阶段就能够知道该指令是转移指令且知道转移指令的地址,从而对指令流水影响较小;但是对于条件转移指令而言,只有当这条指令执行阶段结束后有了执行结果才能知道转移条件是否成立,也才能知道下一条指令真正的地址是多少,造成时间损失较长。
分支预测
4.指令的六级流水
FI:取指令
DI:指令译码
CO:形成操作数的地址
FO:取操作数
EI:执行
WO:结果的写回

影响指令流水线性能的因素
1.结构相关:流水线当中功能部件发生冲突,两条或者是两条以上的指令争用同一个功能部件;比如一条指令利用运算器来计算下一条指令的地址,另外一条指令在同一个时钟周期想利用运算器来完成指令指定的运算,这两条指令就会发生资源冲突。
六级流水中访存冲突:
在这里插入图片描述
解决方案:
停顿(加入气泡):指令1在取操作数时,指令4取指令操作停顿,推迟指令4取指令的操作
指令存储器和数据存储器分开:取指令从指令存储器取,取操作数时从数据存储器取,现代计算机当中将指令cache和数据cache分开即为解决冲突
指令预取技术(适用于访存周期短的情况):如果对内存访问比较快,存取周期比较短,那么取指部件可以利用空闲时间把多条指令从内存单元当中取出来,放到CPU当中指令缓冲队列等待执行;
2.数据相关
不同指令因重叠操作,可能改变操作数的 读/写 访问顺序
不同的指令重叠的进行操作,流水线分成多个短,可能有多个读段或者是多个写段,通常情况下前端是读后端是写,那么就可能改变操作数的读写次序,就可能产生数据相关
先写后读相关(RAW):对某一个存储单元/寄存器要先完成写操作后完成读操作
在这里插入图片描述

先读后写相关(WAR)
在这里插入图片描述

写后写相关
在这里插入图片描述
无论用何种并行技术去执行程序,都要保障该程序的执行结果和程序串行的时候完全相同
后推法:推后读、推后写;等到运算结果写回后读/写
采用旁路技术:相关专用通路,上一条指令写完的结果直接送入到下一条指令读/写

3.控制相关
有转移指令引发
需要根据指令的结果判断是否需要转移,但是多条指令都进入流水线,当发生转移时,调到指定的指令,而之前进入流水的指令都失效。
如:假设当指令3执行结束后,根据指令3的结果判断需转移到指令9,指令3结束在第8个周期,此时4、5、6、7、8指令的取指解释等流水段都被浪费。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值