计算机组成原理指令流水线的详细介绍
【摘要】 指令流水线 基本概念多条指令的执行方式顺序执行方式在取指过程中,取指部件忙碌而执行部件是空闲的一次重叠执行方式二次重叠执行方式流水线的表示方式流水线特点一个大任务分解成多个小任务,多个功能部件并行工作流水线处理的必须是连续任务每个流水段后面都有一个锁存器来保存本流水段的执行结果,提供给下一个流水段使用必须要有装入时间和排空时间 流水线的分类从使用级别分类:部件功能级流水将算术逻辑运算转化为...
指令流水线
基本概念
-
多条指令的执行方式
-
顺序执行方式
-
- 在取指过程中,取指部件忙碌而执行部件是空闲的
-
-
一次重叠执行方式
-
二次重叠执行方式
-
-
流水线的表示方式
-
流水线特点
- 一个大任务分解成多个小任务,多个功能部件并行工作
- 流水线处理的必须是连续任务
- 每个流水段后面都有一个锁存器来保存本流水段的执行结果,提供给下一个流水段使用
- 必须要有装入时间和排空时间
流水线的分类
-
从使用级别分类:
-
部件功能级流水
-
将算术逻辑运算转化为流水线工作方式
- 如:浮点加法操作分成求阶差,对阶,尾数相加,以及结果规格化4个子过程
-
-
处理机级流水
-
把一条指令的解释过程分为多个子过程
- 如:取指,译码,执行,访存,写回,5个子过程
-
-
处理机间流水
- 宏流水,每个处理机完成一个专门任务,各个处理机得到的结果存放在下一个处理机共享的存储器中
-
-
从功能方面分类:
-
单功能流水:只完成一种专门功能
-
多功能流水:同时或不同时实现多种功能的流水线
-
-
从连接方式分类:
-
静态流水:只能按同一种功能的连接方式工作
-
动态流水:某段在进行一个操作时,另一段在进行另一个操作
-
-
从反馈信号分类
-
线性流水:每个功能只允许经过一次
-
非线性流水:某些功能功能段将数次通过流水线
-
影响流水线的因素
-
1.结构相关/资源冲突
-
原因
- 多条指令在同一时刻争用同一资源(取址和取数部件争用内存)
-
解决
-
后一相关指令暂停一周期
-
数据存储器和指令存储器分开
- 指令存储器设置为IM,数据存储器设置为DM
-
预取技术
- 提前取出多条指令
-
-
-
2.数据相关/数据冲突
-
原因
- 在一个程序中,下一条指令会用到这一条指令计算的结果,此时两条指令即为数据冒险
-
解决
-
停顿
-
硬件阻塞stall
-
软件插入NOP
-
-
设置相关专业通路–采用旁路技术
- 直接取出上一条指令ALU中的计算结果作为自己的输入开始计算
-
编译器进行指令编译优化,调整指令顺序
-
-
-
3.控制相关/控制冲突
-
原因
- 当流水线遇到转移指令和其他改变PC值的指令而造成的断流,会引起控制相关
- 下图中间这些红色部分指令都浪费了
-
解决
-
对转移指令进行分支预测
-
静态预测:总是预测条件不满足
-
动态预测:根据程序执行的历史情况预测
-
-
-
超标量流水线
-
超标量流水线技术
- 每个时钟周期并发多条独立指令,配置多个功能部件
- 不能调整指令的执行顺序,通过编译优化技术(动态调度技术),把可以并行执行的指令搭配起来使用
-
超流水技术
- 一个时钟周期内再分段,一个时钟周期内一个功能部件使用多次
- 不能调整顺序,靠优化
-
超长指令字
- 编译器挖掘出指令间的并行性,将多条能并行执行的指令组合成一条
- 多个处理部件,多个操作码字段
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)