【体系结构 三 流水线技术】
体系结构 三 流水线技术
- 1.流水线的基本概念
- 2.基本流水线的分类
- 3.基于DLX指令集的流水线实现
- 4.流水线的性能指标
- 5.流水线冒险
1.流水线的基本概念
将重复的时序过程分解成若干个子过程,每一个子过程都可以有效的在其专用功能段上与其他子过程同时进行
流水线的特点:
- 流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段”,一条流水线的段数,也称为流水线的“深度”或“流水深度”
每个子过程由专用的功能段实现 - 各个功能段所需时间应尽量相等,否则,时间长的功能会造成流水线的“堵塞”和“断流”,这个时间一般为一个时钟周期(拍)或机器周期
流水线需要有“通过时间”(第一个任务流出结果所需的时间),在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果 - 流水线技术适合大量重复的时序过程,只有在输入端能够连续地提供任务,流水线地效率才能充分发挥
2.基本流水线的分类
按照流水线所完成的功能分类:
单功能流水线(Unifunction Pipelines):只能完成一种固定功能的流水线
多功能流水线(MultifunctionPipelines):流水线的各段可以进行不同的连接,从而使流水线在不同的时刻或在同一时间完成不同的功能
按照同一时间内各段之间的连接方式分类:
静态流水线(Static Pipelines):同一时间内,流水线的各段只能按同一种功能的连接方式工作
动态流水线(DynamicPipelines):在统一时间内,当某些段正在实现某种运算(如定点乘)时,另一些段却在实现另一种运算(如浮点加)
按照流水的级别来进行分类:
部件级流水线:又叫运算操作流水线(Arithmetic Pipelines),是把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作
处理机级流水线:又叫指令流水线(Instruction Pipelines),是把解释指令的过程按照流水方式处理
处理机间流水线:宏流水线(MacroPipelines),是由两个以上的处理机串行地对同意数据流进行处理,每个处理机完成一项任务。一般属于异构型多处理机系统,对提高各处理机地效率有很大地作用
按数据表示来分类:
标量流水处理机(Scalar Pipelining Processor):处理机不具有向量数据表示,仅对标量数据进行流水处理
向量流水处理机(Vector Pipelining Processor):处理机具有向量数据表示,并通过向量指令对向量地各元素进行处理
按照流水线种是否有反馈回路进行分类
线性流水线(linear pipelines):流水线地各段串行连接,没有反馈回路
非线性流水线(nonlinearpipelines):流水线中除有串行连接地通路,还有反馈回路。常用于递归或组成多功能流水线。在非线性流水线中地重要问题是流水线地调度问题
3.基于DLX指令集的流水线实现
1)取指令周期(IF):
根据PC值从存储器中取出指令,并将指令送入指令寄存器IR;PC值增加4,指向顺序的下一条指令,并将下一条指令的地址放入临时寄存器NPC中。
2)指令译码/读寄存器周期(ID):
读IR寄存器(指令寄存器),并将读出结果放入两个临时寄存器A和B中。同时对IR寄存器中内容的低16位进行符号扩展,然后将符号扩展后的32位立即值保存在临时寄存器Imm中。(固定字段译码“Fixed-FieldDecoding”技术)
3)执行/有效地址计算周期(EX)
可分为如下4类:
- 存储器访问:ALU将操作数相加形成有效地址,并将结果放入临时寄存器ALUOutput中
- 寄存器-寄存器ALU操作:ALU根据操作码支出的功能对临时寄存器A和B的值进行处理,并将结果送入临时寄存器ALUOutput中。
- 寄存器-立即值ALU操作:ALU根据操作码指出的功能对临时寄存器A和Imm中的值进行处理,并将结果送入临时寄存器ALUOutput中。
- 分支操作:ALU将临时寄存器NPC和Imm中的值相加,得到分支的目的地址。同时对前一个周期读入到寄存器A的值进行检查,决定分支是否成功。
4)存储器访问/分支完成周期(MEM)
- 存储器访问操作
存储器访问操作包含了Load和Store两种类型的操作。
- 分支操作
5)写回周期(WB)
不同的指令在写回周期完成的工作也不一样。
需要解决的问题:
必须要确保在指令重叠时,不存在任何流水线资源冲突问题,流水线各段不会在同一个时钟周期内使用相同的数据通路资源。
将IM和DM分隔开,避免了取指令操作和访问数据操作之间存在访问存储器冲突,但因此导致流水线的存储器带宽必须是非流水线的5倍,这是获取高性能所必须付出的开销之一。
IM --- 指令存储器
DM --- 数据存储器
那么如果读写都是对同一个寄存器进行,又将如何处理呢?
从使用资源的角度分析,流水线的ID和WB段都需要使用到寄存器文件:
ID段需要对寄存器文件进行读操作
WB段需要对寄存器文件进行写操作
如何处理分支指令?
其次在图中没有考虑PC的问题,流水线为了能够在每个时钟周期启动一条新的指令,就必须能够子啊每个时钟完成PC值的增值操作,并保存增值后的PC值,对于上述的流水线来说必须在IF段完成,以便于取下一条指令做好准备,当流水线执行分支指令的时候,分支指令可能会改变PC值,但是它只有在MEM段结束之后才能完成对PC值的操作。针对这个问题我们需要重新组织上述的流水线的数据通路,争取在IF段完成改变PC值的操作。
总结上述的的问题如下:
问题 | 解决办法 |
---|---|
取指令操作和访问数据操作之间存在访问存储器冲突 | 将IM和DM分隔开 |
如何对同一个寄存器进行读写 | |
如何处理分支指令(PC值的改变) |
综上问题,在流水线中,每个时钟周期都要用到其所有的流水段,一个流水段中的所有操作必须在一个时钟周期内完成,特别是要是数据通路完全流水,就必须保证从一个流水段传输到下一个流水段的数据都能够被保存到寄存器文件中,为此对多周期实现数据通路进行如下改进:
每个流水段之间设置了一些流水线寄存器文件。流水线寄存器文件保存着从一个流水段传送到下一个流水段的所有数据和控制信息。随着流水过程的进行,这些数据和控制信息从一个流水线寄存器文件拷贝到下一个流水线寄存器文件,直至不再需要为止。
寄存器文件由它们相连的流水段的名称来标记,当一条指令流水执行时,在各个时钟周期之间用来保存临时值的所有寄存器都包含在相应的寄存器文件中,每个寄存器文件被看作是相应寄存器文件的一个阈,这些寄存器也被称之为流水线寄存器。
IF/ID寄存器文件 ---- 连接流水线IF段和ID段的寄存器文件
指令寄存器是IF/ID寄存器文件的一个阈被记作IF/ID.IR
4.流水线的性能指标
吞吐率:是指单位时间内流水线所完成的任务数或输出结果的数量
- 最大吞吐率:流水线在连续流动达到稳定状态后所得到的吞吐率
- 实际吞吐率:
- 吞吐率是衡量流水线速度的重要指标。
加速比:指m段流水线的速度与等功能的非流水线的速度之比
效率:流水线的设备利用率。
- 由于流水线有通过时间和排空时间,所以在连续完成n个任务的时间内,每段都不是在满负荷地工作
- 通过时间:第一个任务输入完成后到其完成的时间
- 排空时间:最后一个任务输入后到完成的时间
5.流水线冒险
该部分内容详细可参考:
链接: 流水线冒险(Pipeline Hazards)|计算机组成
**在流水线中会有一种情况,在下一个时钟周期中下一条指令不能执行,这种情况被叫做流水线冒险。**流水线冒险一共分为三种情况:
- 结构冒险(Structural hazards)
- 数据冒险(Data hazards)
- 控制冒险(Control hazards)
结构冒险(Structural hazards)
因缺乏硬件支持而导致指令不能在预定的时钟周期内执行的情况。即硬件不支持多条指令在同一时钟周期执行。
数据冒险(Data hazards)
无法提供指令所需数据而导致指令不能在预定的时钟周期内执行的情况。即一条指令的执行需要等待另一条指令执行完成后所产生的数据。
控制冒险(Control hazards)
也叫分支冒险,决策依赖于一条指令的结果,而其他指令正在执行中。比如说分支跳转指令,必须等ALU给出结果后才知道该跳转到哪一条语句。
【体系结构 三 流水线技术】相关推荐
- 计算机体系结构——中央处理器——流水线技术
注:部分内容和图片取自<计算机体系结构基础>(胡伟武著).<计算机原理>(国防科技大学慕课) 指令流水线把一条指令的执行划分为若干阶段来减少每个时钟周期的工作量,从而提高主频: ...
- 体系结构 chap-3 流水线技术
流水线技术 3.1 重叠执行和先行执行 重叠执行 先行控制 3.2 流水线的基本概念 流水线的分类 流水线的性能指标 吞吐率TP 加速比S 效率 E 3.1 重叠执行和先行执行 重叠执行 将一条指令的 ...
- 计算机中流水线的应用,计算机中的流水线技术
计算机中的流水线技术 杨振华;陈明;赵建勋 [期刊名称]<科技信息> [年(卷),期]2009(000)003 [摘要]本文介绍了计算机中广泛采用的流水线技术,对各种各样的流水线进行了分类 ...
- 软考中级【数据库系统工程师】第1章:计算机系统知识,自学软考笔记,备考2022年5月份软考,计算机硬件系统CPU组成指令寄存器组总线输入输出的程序控制方式计算机体系结构与存储系统加密技术流水线技术
前情提要:笔记只整理与考试相关的重点知识,也就是历年真题出现过的考点我都会记录笔记,一些不重要的内容我就不记录了,大家可以自行查看教材. 1.1计算机硬件基础知识 考点1:计算机硬件系统的组成 考点2 ...
- 计算机体系结构——流水线技术
计算机体系结构--流水线技术(Pipelining) 本文导读: 一.并行技术 1.并行技术分类 2.新技术的设计与实现 3.指令周期二.流水线技术 1.什么是流水线 2.指令重叠方式 3.流水工作设 ...
- 计算机体系结构——流水线技术(Pipelining)
本文导读: 一.并行技术 1.并行技术分类 2.新技术的设计与实现 3.指令周期二.流水线技术 1.什么是流水线 2.指令重叠方式 3.流水工作设计 4.流水线的描述方法(时空图) 5.流水线特点三. ...
- 系统结构期末复习(三)流水线技术
目录 流水线的基本概念 流水线的性能指标 流水线的相关与冲突 流水线的实现 向量处理机 1. 流水线的基本概念 各个主要部件的功能 相关信息 运算器 存储器 控制器 功能 算术.逻辑运算 存放指令和数 ...
- 计算机体系结构 第3章 流水线技术(1)
文章目录 第3章 流水线技术 3.1 流水线的基本概念 3.1.1 流水线的基本概念 3.1.2 流水线的分类 3.2 流水线的性能指标 3.2.1 吞吐率 各段时间均相等的流水线 各段时间不完全相等 ...
- 计算机硬件基础ARM处理器概论(ARM体系结构与接口技术)
计算机硬件基础 D1 底层课程导学 1.编程基础 2.应用开发 (函数) 3.底层开发 C语言基础 IO ARM C高级与linux 进程 系统移植 数据结构 网络编程 驱动开发 嵌入式系统分层 操作 ...
最新文章
- golang源码分析:调度器chan调度
- Open vSwitch VLAN相关字段详解(dl_vlan、dl_vlan_pcp、vlan_vid、vlan_pcp、vlan_tci)
- 初次面试Java岗位,这些技巧你要知道!
- android 插补器Interpolator的使用
- MySQL分区表概念以及优缺点
- java jpopupmenu 无法显示_JAVA :为什么使用Jpopupmenu()有参构造方法 不显示标题
- Python使用多进程提高网络爬虫的爬取速度
- 深度学习数据驱动_模型驱动的物理层通信深度学习
- 中国书法之美 No。2017-08-30
- C#中SqlParameter的作用与用法
- html css 内联样式_内联CSS指南–如何直接设置HTML标签的样式
- 计算机网络-网络安全
- Opencv -- 13像素值统计及平均值和方差的意义
- oracle 19c 由于MGA产生的文件扩展不足导致的ORA-04030
- vue进阶04-vue文档生成工具vuepress2
- NSSCTF刷题wp——单表替换密码
- QTableView 去除Item选中的虚线框
- 全身三维人体扫描仪信息汇总
- 学计算机的网名,小学生可爱网名 好听的学生网名
- 【计算机网络技术】根据IP地址子网掩码计算网络地址、直接广播地址、主机号以及可用IP地址的范围