第一讲 流水线数据通路与控制逻辑第二讲 流水线冒险处理第
第二章 流水线
从理论上说, 级过程段的流水线处理n 从理论上说,一个具有 k级过程段的流水线处理n个任 务所需的时钟周期数为: 务所需的时钟周期数为: Tk=k+(n – 1) 非流水线的硬件来处理n个任务所需的时钟周期数为: 非流水线的硬件来处理n个任务所需的时钟周期数为: TL=n×k × K级线性流水线的加速比 K 级线性流水线的加速比C 级线性流水线的加速比 Ck=TL / Tk=(n×k) / [k+(n – 1)] × 当n>>k时,Ck→k n>>k时
L 输入 S1
L S2
L S3
L S4
L 输出
时钟C 时钟 四级流水浮点加/ 四级流水浮点加/减运算的基本结构
流水线需在各个过程段之间设置高速缓冲寄存器L 流水线需在各个过程段之间设置高速缓冲寄存器 线性流水线时钟周期 τ=max{τi}+τl =τm+τl τ τ τ τ
式中max{τi}表示取所有过程段中所需的最长操作时间。 τ 表示取所有过程段中所需的最长操作时间 表示取所有过程段中所需的最长操作时间。 式中
4) 按照流动是否可以乱序来分
◆ 顺序流动流水线:流水线输出端任务流出的顺 顺序流动流水线:
序与输入端任务流入的顺序相同。 序与输入端任务流入的顺序相同
◆ 异步流动流水线(乱序流水线):流水线输出 异步流动流水线(乱序流水线): ):流水线输出
端任务流出的顺序与输入端任务流入的顺序 不同。 不同
解:(1) 加法器的流水线时钟周期至少为:τ=90ns + 10ns 加法器的流水线时钟周期至少为: =
如果采用通用的逻辑电路,但不是流水线方式, 如果采用通用的逻辑电路,但不是流水线方式,则浮点加法所需 的时间为τ 的时间为 1 +τ2 + τ3 +τ4 = 300ns 因此,4级流水线加法器的加速比为 因此, 级流水线加法器的加速比为 Ck = 300/100 = 3 当每个过程段的时间都是75ns时, (2) 当每个过程段的时间都是 时 则加速比为: 则加速比为:Ck = 300/75 = 4
流水线技术概述
流⽔线技术概述本⽂是对流⽔线技术地基本概念、冒险处理、硬件实现的基本概述。
⾸先我们介绍流⽔线的⼯作原理、组成要求、分类和性能指标,接下来讨论流⽔线的冒险处理,最后我们以MIPS为例,介绍流⽔线数据通路和控制器的实现。
⽬录1. 流⽔线概念针对串⾏执⾏过程中的冗余和瓶颈,我们提出,可以将指令执⾏过程划分为多个阶段,各个阶段可以同时处理操作,这样,每条指令按序通过各段,不同指令的执⾏过程重叠,得到的就是流⽔线。
流⽔线由多个功能段按序组成。
例如,在RISC中,通常包括IF,ID,EX,MEM,WB五个功能段,⽽在CISC中,通常包括IF,ID,OF,EX,WB五个功能段。
理想状况下,流⽔线可以对程序执⾏起到显著的加速作⽤。
例如,有n条指令在m段流⽔线上执⾏,串⾏执⾏的时间为mnt,⽽采⽤流⽔线后,其执⾏时间为(m+n-1)t。
流⽔线在组成上,有三个基本要求。
第⼀,各个段的操作要相互独⽴、相互分离。
因此,每个段的源数据必须来⾃时序部件,结果也要存到时序部件。
实现上,我们设置段间寄存器,其中保存本段的所有后续段需要的本段的数据、地址、命令等。
第⼆,各个流⽔段的操作要同步执⾏。
实现上,我们会设置公共拍时钟,使得段间寄存器被同时写⼊。
拍时钟的周期需要取为各个段长的最⼤值。
第三,各个流⽔段的操作必须⽆冲突,以保证结果正确。
具体⽽⾔,就是消除冒险。
实现上,通过增设部件和控制器,来消除各种冒险。
流⽔线可以按其属性进⾏多种分类。
按处理的级别,可以分为操作级流⽔线、指令级流⽔线、处理机级流⽔线。
按功能,可以分为单功能和多功能流⽔线。
多功能流⽔线的各流⽔段可以进⾏不同的连接,从⽽完成不同的功能。
按⼯作⽅式,可以分为静态流⽔线和动态流⽔线。
静态流⽔线在进⾏功能切换时,必须排空。
显然,动态流⽔线⼀定是多功能流⽔线。
按结构,可以分为线性流⽔线和⾮线性流⽔线。
所谓⾮线性流⽔线,就是其中有部件的复⽤。
按流⼊流出的次序,可以分为顺序流⽔线和乱序流⽔线。
16版自考02318计算机组成原理重点总结提纲有(已排版)
处理机制 。
硬故障中断 :是由硬连线路出现异常而 引起 的,如电源掉电、
校验线路错等。 程序性异常 :是由 CPU执行某条指令 而引起 的,发生在 CPU内
部的异常事件,如除数为零、溢出、断点、单步跟踪、寻址错,
访问超时、非法操作码、桟溢出等。
机器周期 :是一个指令周期可分为取指令读、读操作数、执行
较短的 时间间隔内
空间局限性 :是指被访问的某个储存单元的 短的时间间隔内很可能也被访问。
邻近单元 在一个较
直接映射 :每个主存块映射到 cache 的固定行中。
全相联映射 :每个主存块映射到 cache 的任一行中。
组相联映射 :每个主存块映射到 cache 的固定组的任一行中。
程序 :是 代码和数据的集合 ,程序的代码是一个机器指令序列, 是一种 静态 的概念。
异常和中断的响应 : CPU从检测 到异常事件或中断请求信号, 到调出相应的异常或中断处理 程序开始执行 的过程。
半导体存储器 :用半导体器件 构成的 存储器,磁表面存储器: 磁性材料存储器。
随机存取存储器 RAM:特点是 按地址访问 存储单元。
顺序存储器 SAM:信息 按顺序 存放和读出,其存取时间取决于 信息存放位置,以记录块为单位编制。
并写结果等多个基本工作周期,这些
基本工作周期 就称为机器
周期。
流水段寄存器 : 保存 流水段中得到信息的寄存器。
流水线冒险 :指指令序列在流水线中执行时,
遇到的一些情况 ,
使流水线无法正确按时执行后续指令,
从而引起 流水线阻塞或
停顿。
结构冒险 :也称为 硬件资源冲突 ,原因在于同一部件同时被不
同指令所用,也就是说它是由硬件资源竞争造成的。
计算机体系结构之流水线工作原理与分类
不增加或只增加少量硬件就能使运算速度提高几倍, 如:流水线处理机、超流水线处理机
流水线工作原理
流水线的分类
线性流水线的性能分析
非线性流水线的调度技术
流水线工作原理
1、流水线锁存器 流水线的每一个阶段称为流水步、流水步骤、流水段、 流水 线阶段、流水功能段、功能段、流水级、流水节拍等。
在每一个流水段的末尾或开头必须设置一个(多个)寄存器,
称为
流水寄存器、流水锁存器、流水闸门寄存器等。
流水锁存器会增加每条指令的执行时间,但采用流水线之
后整个程序的执行时间会缩短。
为了简化,在一般流水线中不画出流水锁存器。
输入
指令分析器 分析 k+1
流水 锁存器
△t1
指令执行部件 执行 k
流水 锁存器
Latency & throughput?
流水线技术
流水线技术在50年代后期被应用于处理器设计 IBM Stretch----first general-purpose pipelined
computer CDC 6600 use load/store design to achieve efficient
任
时间
务A
顺 序B
C
D
°
洗4 个人的衣物,顺序操作需要 8 个小时
°
如果使用流水线作业, 将需要多少时间呢?
流水线作业
6 下午 7
8
9
10
11
12
时间
任
30 30 30 30 30 30 30
务A
顺
序
B
C
D
第七章 指令流水线
复习:A Single Cycle Processor
Branch Jump Zero Clk RegDst Instruction Fetch Unit <31:26> Instruction<31:0> op <16:20> <21:25> <11:15> Rd Imm16 5 Rs 5 Rt <5:0> func <0:15> RegDst Main Control 3 ALUSrc
6 PM
7
8
9
Time
10
11
Midnight
30 40
T a s k O r d e r
40
40
40 20
串行方式为6小时,N批则为90N分钟
A
只需30+4x40+20=210分 (3.5小时)
B C
D
如果有N批衣服呢? 所花时间为:30+Nx40+20分钟 假定每一步时间均衡,则比串行方 式提高约3倍!
:
ALUopRtΒιβλιοθήκη Rd1 Mux 0
ALU Control
RegWr 5 busW 32 Clk
ALUctr 3 busA 32
0 Mux ALU Zero 32 WrEn Adr 32 MemWr 0 Mux
Rw Ra Rb 32 32-bit Registers busB 32 Extender
MemtoReg
Ideal Memory
32
Rt Rt 0 Rd 1
5 5
Ra Rb Rw busW busB 32 busA
Mux
Reg File
经典MIPS五级流水介绍
信号名称
设为0时的效果
设为1时的效果
RegDst
egWrite ALUSrcR
写入寄存器的目标编号来 自rt字段(20:16)
写入寄存器的目至写入寄 存器输入对应的寄存器 第二个ALU操作数为已符号化扩 展的指令低16位 PC的值置为计算分支目标地址的 加法器的输出 输入地址对应的数据内存的内容 放置到读出数据的输出 输入地址对应的数据内存的内容 替换为写入数据的输入 数据内存提供寄存器写数据的输 入值
○
三种流水线冒险
数据冒险 一个操作必须等待另一个操作完成后才 能进行时,流水线必须停顿,我们称这种情况为 数据冒险。 转发(forward) 也叫旁路(bypass)。上一个 操作的结果产生以后不必写回寄存器,直接转发 给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而 它前一条指令是load指令,并且该load指令写入 的是同一寄存器时,必须采用相应的机制阻塞流 水线。
三种流水线冒险
分支冒险 也叫控制冒险。每周期都取指令, 但对与分支指令,必须等到MEM阶段才能 确定是否执行分支。这种为了确定预取正 确的指令导致的延迟叫做分支冒险。 静态预测 阻塞直到分支发生完毕的速度实 在太慢。比较普遍的提高分支阻塞速度的 方法是假设分支不发生,继续执行;或者 假定分支发生 ,跳到转移地址执行。可以 将分支冒险的代价减半。
引入流水线寄存器图
流水线每级的工作
流水线中的控制
一共9条控制线,根据流水线的五个步骤将 控制线分为五组: 1)取指令:读取指令内存和写PC的控制信 号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内 这个步骤所完成的工作都是相同的,不需 设置控制线。
计算机体系结构——流水线技术(Pipelining)
单功能流水线:流水线只完成一种固定功能 多功能流水线:流水线可以完成多种功能,如 TI公司的ASC机,8段流水线,能够实现:定点加减 法、定点乘法、浮点加法等功能 3.按同一时间内各段之间的连接方式分 静态多功能流水线 :同一时间内,多功能结构只能按一种功能的连接方式工作。 动态多功能流水线:在同一时间内,可以有多种功能的连接方式同时工作 4.按处理的数据类型 标量流水线 向量流水线 5.按控制方式 同步流水线 异步流水线:当Si功能段要向Si+1段传送数据时,首 先发出就绪信号,Si+1功能段收到信号后,向Si回送 一个回答信号。 6.按任务从输出端的流出顺序 顺序流水方式:指令流出顺序 = 指令流入顺序 乱序流水方式:指令流出顺序 != 指令流入顺序 7. 线性流水线——不带反馈回路的流水线
三、流水线的分类(了解)
四、流水线相关及冲突(重点) 1.流水线相关 2.流水线冲突 3.流水线冲突带来问题 4.数据冲突及其解决方案 5.结构冲突及其解决方案 6.控制冲突及其解决方案
五、流水线性能分析(含例题讲解) 1.流水线的基本参数——吞吐率 2.流水线的基本参数——加速比 3.流水线的基本参数——效率 4.结果分析 5.有关流水线性能的若干问题
整体评估、反馈、再改进
3. 指令周期
单周期处理机模型:一个周期完成一个指令(每个周期是等长的),指令长度可能不一样,会造成很大的浪费 多周期处理机模型:将一个指令的完成划分成若干个周期来实现 流水线模型
二、流水线技术 1. 什么是流水线? 计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产 流水线十分相似, 因此称为流水线技术 从本质上讲,流水线技术是一种时间并行技术。
课件:流水线概述(1)
Waste
8
即有流水线指令的平 均执行时间,见本
流水线加速比 ppt后P24。本例中为 200ps(不是单一某 条指令的执行时间, 本例为1000)
如果所有流水级操作平衡(时间相同)
Time between instructionspipelined = Time between instructionsnonpipelined Number of stages
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
IF
ID
Ex
Mem WB
3
单周期与流水线
假设功能单元的操作时间
寄存器读写:100ps 其余:200ps
对比流水线和单周期
Instr
lw sw R-format beq
Instr fetch Register read
lw
IF
sw
R-type
ID
Ex
Mem WB
IF
ID
Ex
Mem WB
每一步对 应动作
IF
ID
Exec Mem WB
流水线在一条指令完成之前开始另一条指令。
改善吞吐率(单位时间内完成的任务数)。
对于有些指令某些时钟周期是浪费的(Mem和WB是或 的关系,sw指令写回存储器,R型和lw写回寄存器)。
单条指令执行时间不减少,有时反而会增加(本例和前
I lw
n s
t Inst 1
r.
Mem Reg
Mem Reg
Reading data from memory
Mem Reg
Mem Reg
O Inst 2
r
预备知识-流水线相关与冒险
流水线的相关与冒险
通过定向技术减少数据冒险引起的停顿
(定向技术也称为旁路或短路)
关键思想:在某条指令产生计算结果之前,其他指 令并不真正立即需要该计算结果,如果能够将该计 算结果从其产生的地方直接送到其他指令需要它的
地方,那么就可以避免停顿。
采用定向技术消除上例中的相关 工作过程演示
流水线的相关与冒险
指令i 指令i+1
指令i+2 指令i+3 指令i+4 指令i+5
IF
ID IF
EX ID
IF
MEM EX
ID stall
WB MEM
EX IF
WB
MEM ID IF WB EX ID IF WB MEM EX ID WB MEM EX WB MEM
流水线的相关与冒险
有时流水线设计者允许结构冒险的存在
写回周期(WB)
ALU运算指令和load指令在这个周期把结果 数据写入通用寄存器组。
ALU运算指令:结果数据来自ALU。 load指令:结果数据来自存储器系统。
在这个实现方案中:
分支指令需要4个时钟周期(如果把分支指令的执行 提前到ID周期,则只需要2个周期)。 store指令需要4个周期。 其他指令需要5个周期才能完成。
指令j写的名=指令i写的名
流水线的相关与冒险
名相关的两条指令之间并没有数据的传送。
如果一条指令中的名改变了,并不影响另外一条指
令的执行。
换名技术
换名技术:通过改变指令中操作数的名来消除名相关。
对于寄存器操作数进行换名称为寄存器换名。
既可以用编译器静态实现,也可以用硬件动态完成。
第六章 指令流水线
Instruction Memory Instruction
应保存后面阶段用到的 指令和PC+4的值!
指令在随后阶段被送出译码! PC+4用来计算转移目标地址
不需控制信号,因为每条指令执行功能一样,是确定 的,无需根据指令的不同来控制执行不同的操作!
译码/取数(Reg/Dec)阶段
Clk
° Location 10: lw $1, 0x100($2 ) You are here! 能:$1 <- Mem[($2) + 0x100]
Ifetch Reg/Dec RegWr
1 0
功
Mem Branch
Exec ExtOp ALUOp
PC+4 Imm Rs Ra Rb Rt RFile Rt Rw Di Rd
PC+4 Imm busA bus Exec B Unit
0 1
RegWr 是Wr段 的信号
Mem/Wr Register Ex/Mem Register Zero Data Mem RADo WA Di
ID/Ex Register
Store指令呢?
RegDes=x, ALUSrc=1 ALUop=addu, Extop=1
0 Mux
Branch指令呢?
RegDes=x, ALUSrc=0 ALUop=subu, Extop=1
Extender
imm 16
32 ExtOp=?
1
Ori指令呢?
RegDes=0, ALUSrc=1 ALUop=or, Extop=0
°Exec:16位立即数符号扩展后与寄存器值相加,计算主存地址 °Mem:将寄存器读出的数据写到主存 • Wr: 加一个空的写阶段,使流水线更规整!
计算机体系结构之流水线技术(ppt 125页)
张伟 计算机学院
大纲
1 概念定义 2 流水线分类 3 MIPS五级流水线 4 性能分析 5 流水线相关 6 高级流水线技术
1 概念定义
洗衣店的例子
A, B, C, D 均有一些衣物要 清洗,甩干,折叠
清洗要花30 分钟 甩干要用40 分钟 叠衣物也需要20 分钟
流水线输出端任务流出的顺序与输入端任务流 入的顺序相同。
异步流动流水线(乱序流水线):
流水线输出端任务流出的顺序与输入端任务流 入的顺序不同。
3 MIPS五级流水线
DLX(Dancing Links)
DLX 是一种简单的指令集(教学、简单芯片) 在不流水的情况下,如何实现DLX。
实现DLX指令的一种简单数据通路
4. 存储器访问周期MEM(Memory Access) 5. 写回周期WB(Write Back)
MIPS的简单实现
Instruction Fetch
Instr. Decode Reg. Fetch
Next PC
Next SEQ PC
4
RS1
RS2
Execute Addr. Calc
Zero?
RD
增加了向后传递IR和从MEM/WB.IR回送到通用寄存 器组的连接。
将对PC的修改移到了IF段,以便PC能及时地加 4,为取下一条指令做好准备。
2. 每一个流水段进行的操 作
IR[rs]=IR6..10 IR[rt]=IR11..15 IR[rd]=IR16..20
流水线的每个流水段的操作
将有效地址计算周期和执行周期合并为一个时钟周期,这
是因为MIPS指令集采用load/store结构,没有任何指令
需要同时进行数据有效地址的计算、转移目标地址的计算
11-44.3 数据冒险的解决方法 - 课件
第四章第四节(3) 数据冒险的解决方法有四种方法可以解决流水线数据冒险①硬件阻塞(stall)②软件插入“NOP”指令③转发(Forwarding)或旁路(Bypassing)技术④编译优化:调整指令顺序I n s t r.O r d e rTime (clock cycles)add r1,r2,r3sub r4,r1,r3and r6,r1,r7IF ID/RF EX MEM WBALUIm Reg Dm RegALUIm Reg Dm RegALUIm Reg Dm123456虽然在第2个周期已经将SUB指令取出,但由于数据相关,SUB指令的译码最早只能在第6个周期进行。
I n s t r.O r d e r add r1,r2,r3sub r4,r1,r3and r6,r1,r7IF ID/RF EX MEM WBALUIm Reg Dm RegALUIm Reg Dm Reg stallstallstallALUIm Reg Dmbubble bubble bubble bubbleImbubble bubble bubble bubbleImbubble bubble bubble bubbleIm硬件通过阻塞(stall)方式阻止后续指令执行,延迟到新值被写入寄存器以后!123456Time (clock cycles)I n s t r.O r d e r add r1,r2,r3sub r4,r1,r3and r6,r1,r7IF ID/RF EX MEM WBALUIm Reg Dm RegALUIm Reg Dm Reg stallstallstallALUIm Reg Dmbubble bubble bubble bubbleImbubble bubble bubble bubbleImbubble bubble bubble bubbleIm硬件通过阻塞(stall)方式阻止后续指令执行,延迟到新值被写入寄存器以后!这种做法称为流水线阻塞,也称为“气泡bubble”。
常用五段流水线解释
DADD操作的结果在后面三条指令中都使用,这就产生了 数据冒险。
上述的数据冒险可以用一个简单的硬件技术— 直通(旁路)来解决。把DADD的结果从EX/MEM 寄存器移到DSUB需要的地方,即ALU输入锁存器 ,具体做法:
1.从EX/MEM流水线寄存器送入到ALU的结果总 是反馈到ALU的输入锁存器。
谢谢!
流水线可以减少指令的平均执行时间,可以认 为是减少了每条指令的CPI,也可以认为是减少了 时钟周期的长度。流水线是一种在连续指令流中 开发指令集并行性的技术,对编程者是透明的。
1.2 RISC指令系统的简单实现
执行每条指令最多只要5个时钟周期: 1.取指令周期(IF) 2.指令译码/读寄存器周期(ID) 3.执行/有效地址周期(EX) 4.访问存储器(MEM) 5.写回周期(WB)
在取指周期,根据PC指示的地址从存储器中取指令并装 入到IR中,同时PC+4以获取下一条指令地址。
在指令译码/读寄存器周期,对指令进行译码并访问寄存 器堆以读出寄存器中的内容,对寄存器中的内容进行比较, 判断是否是转移指令,计算下调指令的地址。
在执行/有效地址周期(EX),对上一周期准备好的操作 数进行运算,有三种指令:访问寄存器,寄存器-寄存器AL 指令,寄存器-立即数ALU指令。
2.如果直通硬件检测到前一次ALU操作写入的 寄存器正好是当前ALU操作的数据来源,那么控制 逻辑就选择直通结果作为ALU的输入。效果如下图
并不是所有的数据冒险都可以采用直通 技术来解决,下面指令:
LD
R1,0(R2)
DSUB
R4,R1,R5
AND
R6,R1,R7
OR
R8,R1,R9
指令流图如下图所示:
在访问存储器(MEM),load指令将根据上一周期得到 的有效地址从存储器中读取数据,store指令则根据有效地址 将第二个寄存器中的数据写入存储器。
流水线(Pipeline)介绍PPT课件
.
16
写后读冒险(RAW: Read After Write)
❖ 在 i 写入之前,j 先去读。j 会错误的获取旧 值。
❖ 这对应“真数据相关”,为了确保j可以得到 正确的i值,必须保持程序的顺序。
i: DSUB R1,R2,R3 j: DADD R4,R1,R3ຫໍສະໝຸດ DSUB R4,R1,R5
IM
Reg
DM
Reg
XOR R6,R1,R7
IM
Reg
DM
AND R8,R1,R9
IM
Reg
OR R10,R1,R11
IM
Reg
AND,OR操作不会暂停,但是DSUB,XOR指
令需要等待DADD在WB阶段写回数据后才
可以执行。
.
15
2.4 数据冒险的解决办法
❖ 根据指令中读写访问的顺序,可以将数据冒 险分为三类。分别是:
处理器流水线相 关技术
报告人:Hardy
.
1
流水线技术
❖1.流水线的概念 ❖2.流水线的冒险和冒险的解决办法 ❖3.多发射处理器
.
2
1.流水线的概念
❖ 流水线技术:
把一个重复的过程分解为若干个子过程,每个子过 程由专门的功能部件来实现。将多个处理过程在时 间上错开,依次通过各功能段,这样,每个子过程 就可以与其他子过程并行进行。
.
5
采用相同的功能模块,指令顺序执行和按照流水线
技术执行,在时间上可以看出流水线指令的执行速
度提高了4倍。
.
6
流水线的基本作用
流水线增大了CPU的指令吞吐量—即单位时 间执行指令的条数,但是它未减少指令各自 的执行时间。实际上流水线技术要对流水线 附加一些控制,因而了增加开销,使单条指 令执行时间略有增加。吞吐量的增大意味着 程序运行的更快,总的执行时间变短,尽管 没有一条指令的执行变快。
数据通路原理
数据通路原理一、概述数据通路是计算机中负责数据传输和处理的核心部分,它承担着将数据从输入端传输到输出端的任务。
数据通路原理是指数据在计算机中传输和处理的基本原理和机制。
本文将从数据通路的定义、组成部分、工作原理、优化方法等多个方面进行详细探讨。
二、数据通路的组成部分数据通路由多个组成部分组成,包括输入寄存器、输出寄存器、运算单元、控制单元等。
2.1 输入寄存器输入寄存器是数据通路中的一个重要组成部分,它负责接收来自外部的数据,并将其存储在寄存器中以备后续处理。
输入寄存器通常由一组触发器构成,可以按照字节或字的形式存储数据。
2.2 输出寄存器输出寄存器是数据通路中的另一个重要组成部分,它负责将处理后的数据从数据通路输出到外部设备。
输出寄存器通常也由一组触发器构成,可以按照字节或字的形式输出数据。
2.3 运算单元运算单元是数据通路中的核心部分,它负责对输入数据进行各种运算操作,包括加法、减法、乘法、除法等。
运算单元通常由算术逻辑单元(ALU)和寄存器文件组成。
2.4 控制单元控制单元是数据通路中的另一个重要组成部分,它负责控制数据在数据通路中的流动和处理过程。
控制单元通常由状态机或控制存储器实现,可以根据指令序列来控制数据的传输和处理。
三、数据通路的工作原理数据通路的工作原理可以分为以下几个步骤:指令获取、指令解码、操作数获取、运算执行、结果写回。
3.1 指令获取在数据通路中,指令是通过指令寄存器从内存中获取的。
指令寄存器将指令存储在其中,并根据指令的地址从内存中读取指令。
3.2 指令解码指令解码是将获取到的指令解析为具体的操作和操作数。
控制单元根据指令的类型和操作码来确定下一步的操作,并将相应的控制信号发送给运算单元和寄存器文件。
3.3 操作数获取操作数获取是根据指令中的地址或寄存器编号从寄存器文件中获取相应的操作数。
操作数可以是寄存器中的数据,也可以是内存中的数据。
3.4 运算执行运算执行是根据指令中的操作码和操作数对数据进行具体的运算操作。
微处理器的架构与运行过程
微处理器的架构与运行过程微处理器是现代计算机的核心元件,负责控制和执行计算机的各种指令和操作。
它的架构和运行过程是计算机科学中重要的基础知识。
本文将详细介绍微处理器的架构和运行过程,并分点列出每个步骤。
一、微处理器的架构1. 寄存器:微处理器包含多个寄存器,用于存储临时数据和地址。
常见的寄存器有累加器、指令寄存器、程序计数器等。
2. 控制单元:负责控制微处理器的操作,包括指令的获取、解码和执行。
3. 算术逻辑单元(ALU):负责执行算术和逻辑运算,如加法、减法、与、或等。
4. 数据通路:用于传输数据和指令,连接寄存器、控制单元和ALU。
二、微处理器的运行过程1. 指令获取阶段- 程序计数器(PC)存储下一条指令的地址。
- 控制单元根据PC中的地址访问存储器,将指令读入指令寄存器(IR)。
2. 指令解码阶段- 控制单元从IR中解码指令的操作码和操作数。
- 控制单元根据操作码控制数据通路的操作。
3. 操作数寻址阶段- 根据操作数的地址模式,计算出操作数的真实地址。
- 控制单元从寄存器或存储器中获取操作数,存入寄存器。
4. 指令执行阶段- 控制单元根据操作码和操作数执行具体的指令。
- ALU执行算术和逻辑运算,将结果存入寄存器。
5. 结果写回阶段- 将运算结果写回寄存器或存储器,以便后续的指令使用。
- 更新程序计数器(PC),跳转到下一条指令。
三、微处理器运行过程中的关键技术1. 管道技术:将指令的执行过程划分为多个阶段,使多条指令可以同时执行,提高处理器的性能。
2. 流水线冒险:由于指令执行的依赖关系,可能会出现数据冒险、控制冒险等问题,需要通过乱序执行、数据前推等技术解决。
3. 缓存技术:为了加快指令和数据的访问速度,提供了多级缓存来存储经常访问的数据和指令。
4. 中断处理:当外部事件发生时,微处理器需要暂停当前的指令执行,保存现场,处理中断请求,并在处理完后返回之前的执行状态。
四、微处理器的应用领域1. 个人计算机(PC)和服务器:微处理器是PC和服务器的核心部件,负责控制和执行各种计算和操作。
中国科学技术大学ppt课件
中国科学技术大学
chapter03.9
03/03-review 流水线技术要点
• 流水线技术并不能提高单个任务的执行效率,它可以 提高整个系统的吞吐率
• 流水线中的瓶颈——最慢的那一段 • 多个任务同时执行,但使用不同的资源 • 其潜在的加速比=流水线的级数 • 流水段所需时间不均衡将降低加速比 • 流水线存在装入时间和排空时间,使得加速比降低 • 由于存在相关问题,会导致流水线停顿
加速比
加速比:完成同样一批任务,不使用流水线所用的时间 与使用流水线所用的时间之比。 假设:不使用流水线(即顺序执行)所用的间
为Ts,使用流水线后所用的时间为Tk,则该流
水线的加速比为
S Ts Tk
中国科学技术大学
chapter03.22
1. 流水线各段时间相等(都是△t) – 一条k段流水线完成n个连续任务
JUMP end
0
56
Op
31
offset added to PC
(jump, jump and link, trap and return from exception)
▪所有指令相同长度 ▪在指令格式中寄存器位于同一位置 ▪只有Loads和Stores可以对存储器操作
中国科学技术大学
chapter3.34
• EX: 执行
– Load 、Store:计算有效地址 – Branch:计算转移地址并确定转移方向
• MEM: 存储器访问(仅Load和Store) • WB: 结果写回
中国科学技术大学
chapter03.6
流水线的可视化表示
• 多条指令执行多个时钟周期
– 指令按程序序从上到下排列 – 图中展示了每一时钟周期资源的使用情况 – 不同指令相邻阶段之间没有干扰
经典的MIPS五级流水介绍
无
第二个ALU操作数来自第 二个寄存器堆的输出(读 出数据2) PC的值替换为计算PC+4 的加法器的输出
PCSrc MemRead M器写数据的 输入值
三种流水线冒险
结构冒险 如果由于资源争夺导致几条指令 不能在同一时钟周期内执行,就称处理器 中含有结构冒险。 阻塞(stall)也叫气泡(bubble),解决结 构冒险的一种方式。
op op
rs
rt
constant or address
address
五种寻址模式:
1)寄存器寻址,操作数是寄存器 2)基址或偏移寻址,操作数在内存中,其地址是指令中 基址寄存器和常数的和。 3)立即数寻址,操作数是指令中的常数. 4)PC相对寻址,地址是PC计数器和指令中常数的和。 5)伪直接寻址,跳转地址是指令中26位和PC计数器的高 位相连而成
○
三种流水线冒险
数据冒险 一个操作必须等待另一个操作完成后才 能进行时,流水线必须停顿,我们称这种情况为 数据冒险。 转发(forward) 也叫旁路(bypass)。上一个 操作的结果产生以后不必写回寄存器,直接转发 给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而 它前一条指令是load指令,并且该load指令写入 的是同一寄存器时,必须采用相应的机制阻塞流 水线。
引入流水线寄存器图
流水线每级的工作
流水线中的控制
一共9条控制线,根据流水线的五个步骤将 控制线分为五组: 1)取指令:读取指令内存和写PC的控制信 号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内 这个步骤所完成的工作都是相同的,不需 设置控制线。
3)指令执行/地址计算:设置的控制线有RegDst、 ALUOp和ALUSrc。根据这些信号选择结果寄存器, 确定ALU的操作,同时读取数据2或经过符号扩展后 得到的立即数。 4)内存访问:设置的控制线有Branch、MemRead 和MemWrite,这些控制信号分别由相等分支、取和 存指令设定。除非控制信号指示这是一条分支指令 同时ALU输出为0,将选择线性地址中的下一条指令 作为PCSrc信号。 5)写回:两条控制线分别是MemtoReg和RegWrite, 前者决定是将ALU结果还是将内存数据传送寄存器堆, 后者记录所要写入的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流水线执行方式能大大提高指令吞吐率,现代计算机都采用 流水线方式!
Pipeline.11
2019年9月4日星期三
Load指令的流水线
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Clock
1st lw Ifetch Reg/Dec Exec Mem Wr 2nd lw Ifetch Reg/Dec Exec Mem Wr 3rd lw Ifetch Reg/Dec Exec Mem Wr 4th lw Ifetch Reg/Dec Exec Mem Wr 5th lw Ifetch Reg/Dec Exec Mem Wr
32 32
1
RAdr
Ideal Memory
Rt 5 32
Rt 0 5
Rb busA
32
1
Reg File 32 4
0
32 32
WrAdr 32 Din Dout
Rd
1
1 Mux 0
Rw busB busW 32
<< 2
32 1 32
2 3
ALU
Control
Pipeline.4
Imm 16
Extend 32
是否和“洗衣”过程类似?是否可以采用类似方式来执行指令呢?
Pipeline.9
2019年9月4日星期三
单周期指令模型与流水线性能
°假定以下每步操作所花时间为:
- 取指:2ns
- 寄存器读:1ns
Load指令执行时间总计为:8ns
- ALU操作:2ns (假定控制单元、PC访问、信号传
- 存储器读:2ns
Pipeline.12
2019年9月4日星期三
R-type指令的4个阶段
Cycle 1 Cycle 2 Cycle 3 Cycle 4
R-type Ifetch Reg/Dec Exec
Wr
°Ifetch: 取指令并计算PC+4 °Reg/Dec: 从寄存器取数,同时指令在译码器进行译码 °Exec: 在ALU中对操作数进行计算 °Wr: ALU计算的结果写到寄存器
解决方案: R-type的Wr操作延后一个周期执行
R-type
1
2
3
Ifetch Reg/Dec Exec
4 Mem
NOOP! 5
Wr
°加一个NOP阶段以延迟“写”操作: • 把“写”操作安排在第5阶段, 这样使R-Type的Mem阶段为空NOP
Clock Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9
T
aA
s
k
B
O
r d
C
e
rD
° 串行方式下, 4 批衣服需要花费 6 小时(4x(30+40+20)=360分钟)
° N批衣服,需花费的时间为Nx(30+40+20) = 90N
° 如果用流水线方式洗衣服,则花多少时间呢?
Pipeline.7
2019年9月4日星期三
Pipelined Laundry: (Start work ASAP)
Pipeline.10
2019年9月4日星期三
流水线指令集的设计
°具有什么特征的指令集有利于流水线执行呢? • 长度尽量一致,有利于简化取指令和指令译码操作 - MIPS指令32位,下址计算方便: PC+4 - X86指令从1字节到17字节不等,使取指部件极其复杂 • 格式少,且源寄存器位置相同,有利于在指令未知时就可取操作数 - MIPS指令的Rs和Rt位置一定,在指令译码时就可读Rs和Rt的值 (若位置随指令不同而不同,则需先确定指令后才能取寄存器编号) • load / Store指令才能访问存储器,有利于减少操作步骤,规整流水线 - lw/sw指令的地址计算和运算指令的执行步骤规整在同一个周期 - X86运算类指令操作数可为内存数据,需计算地址、访存、执行 • 内存中”对齐”存放,有利于减少访存次数和流水线的规整 总之,规整、简单和一致等特性有利于指令的流水线执行
• 以MIPS指令子集来说明 • 详细设计取指令部件 • 详细设计执行部件 • 分析每条指令在流水线中的执行过程,遇到各种问题:
- 资源冲突 - 寄存器和存储器的信号竞争 - 分支指令的延迟 - 指令间数据相关 ° 如何设计流水线控制逻辑 • 分析每条指令执行过程中的控制信号 • 给出控制器设计过程 ° 流水线冒险的概念
°MCP: 一个功能部件在一个指令周期中可以被使用多次。
PCWr
PCWrCond Zero
PCSrc BrWr
IorD MemWr IRWr RegDst RegWr ALUSelA 1
Target
ALU Mux
Mux
Mux Instruction Reg
Mux
32
32
PC
32
Rs
0
0
Zero
0
Ra
3
New Value
Old Value
ALU Delay New Value
Old Value
Data Memory Access Time
New
2019年9月4日星期三
一个日常生活中的例子—洗衣服
°Laundry Example • A, B, C, D四个人,每人都有一 批衣服需要 wash, dry, fold • Wash阶段:30 minutes • Dry阶段:40 minutes • Fold阶段: 20 minutes
或称为资源冲突!
°把一个功能部件同时被多条指令使用的现象称为结构冒险(Struture Hazard) °为了流水线能顺利工作,规定:
• 每个功能部件每条指令只能用一次(如:写口不能用两次或以上) • 每个功能部件必须在相同的阶段被使用(如:写口总是在第五阶段被使用)
Pipeline.14
2019年9月4日星期三
Ch7: Instruction Pipeline 指令流水线
第一讲 流水线数据通路和控制逻辑 第二讲 流水线冒险处理 第三讲 高级流水线技术
第一讲 流水线数据通路和控制
主要内容
° 日常生活中的流水线处理例子:洗衣服 ° 单周期处理器模型和流水线性能比较 ° 什么样的指令集适合于流水线方式执行 ° 如何设计流水线数据通路
32 Clk
Registers busB 0 32
32
32
WrEn Adr
imm16 Instr<15:0> 16
1 Data In32 32
Data
Clk Memory
ALUSrc
Mux
MemtoReg 0 1
Pipeline.3
ExtOp
2019年9月4日星期三
复习:Multiple Cycle Processor
Clk-to-Q New Value
Old Value
Old Value
Instruction Memory Access Time
New Value
1
Delay through Control Logic
New Value
ExtOp
Old Value
New Value
ALUSrc
Old Value
New Value
Register File Write Time
RegWr busA busB Address busW
Pipeline.5
Old Value
New Value
2
Old Value
Delay through Extender & Mux Old Value
Register File Access Time New Value
Pipeline.2
2019年9月4日星期三
复习:A Single Cycle Processor
<0:15> <11:15> <21:25> <16:20>
Branch
Jump Zero Clk
Instruction Fetch Unit
<31:26> Instruction<31:0> op Main
递等没有延迟)
- 寄存器写:1ns
°单周期模型
• 每条指令在一个时钟周期内完成
• 时钟周期等于最长的lw指令的执行时间,即:8ns
• 串行执行时,N条指令的执行时间为:8Nns
°流水线性能
• 时钟周期等于最长阶段所花时间为:2ns 2 2 2 2 2
• 每条lw指令的执行时间为: 2nsx5=10ns
R-type Ifetch Reg/Dec Exec Wr
Load Ifetch Reg/Dec Exec Mem Wr
R-type Ifetch Reg/Dec Exec Wr
R-type Ifetch Reg/Dec Exec Wr
°上述流水线有个问题: 两条指令试图同时写寄存器,因为
• Load在第5阶段用寄存器写口 • R-type在第4 阶段用寄存器写口
Control
ALUop 3
RegDst
ALUSrc
:
RegDst
Rt Rd
Rd Imm16
1 Mux 0
Rs Rt RegWr 5 5 5
<5:0> ALU func Control
ALUctr 3
busW
Rw Ra Rb 32 32-bit
busA 32
Zero MemWr