流水线处理机及其设计精讲
中央处理器CPU——指令流水线
中央处理器CPU——指令流⽔线指令流⽔线概念:⼀条指令的执⾏过程划分为不同阶段,占⽤不同硬件资源,多条指令重叠操作实现并⾏处理1.顺序执⾏:⼜称串⾏执⾏⽅式;传统的冯诺依曼机器优点:控制简单,硬件代价⼩缺点:速度慢,各功能部件利⽤率低2.⼀次重叠执⾏⽅式:优点:时间缩短三分之⼀,各功能部件利⽤效率提⾼缺点:控制复杂,硬件开销增⼤3.⼆次重叠执⾏⽅式:优点:时间缩短三分之⼆,理想状态指令执⾏过程图:⽤于分析指令执⾏过程和影响流⽔线因素时空图:⽤于分析流⽔线的性能吞吐率TP:单位时间内流⽔线完成的任务数量或输出结果的数量加速⽐S:同⼀任务下,不使⽤流⽔线⽤时与使⽤流⽔线⽤时之⽐效率E:流⽔线的设备利⽤率锁存器(缓冲寄存器):作⽤是保存本流⽔段的执⾏结果,提供给下⼀流⽔段使⽤。
影响因素:结构相关(资源冲突):多条指令同⼀时间争⽤同⼀资源解决:1.后⼀相关指令暂停⼀周期;2.资源重复配置(数据存储器+指令存储器)数据相关(数据冲突):在⼀个程序中,上⼀条指令执⾏完才能执⾏下⼀条指令(这两条指令即为数据相关)解决:将数据相关的指令和后续指令暂停时钟周期到问题消失再执⾏;1.硬件阻塞stall和软件插⼊NOP;2.数据旁路技术;3.编译优化:通过编译器调整指令顺序控制相关(控制冲突):转移指令和改变PC值的指令造成断流解决:1.尽早判别转移是否发⽣,尽早⽣成转移⽬标地址2.预取转移成功和不成功两个控制流⽅向上的⽬标指令3.加快和提前形成条件码4.提⾼转移⽅向的猜准率流⽔线的分类1.根据流⽔线使⽤级别:部件功能级、处理机级和处理机间级流⽔线部件功能级流⽔:将复杂的算术逻辑运算组成流⽔线⼯作⽅式处理机级流⽔:把⼀条指令解释过程分成多个⼦过程,如取指、译码、执⾏、访存及写回5个⼦过程。
处理机间流⽔:是⼀种宏流⽔,其中每⼀个处理机完成某⼀专门任务,各个处理机所得到的结果需存放在与下⼀个处理机所共享的存储器中2,按流⽔线可以完成的功能分为:单功能流⽔线和多功能流⽔线单功能流⽔线:指只能实现⼀种固定的专门功能的流⽔线;多功能流⽔线:指通过各段间的不同连接⽅式可以同时或不同时地实现多种能的流⽔线。
计算机组成原理之流水线处理机(ppt 59页)
计算机组成原理
7
7
流水线的基本概念
什么是流水线
计算机中的流水线是把一个重复的过程分解为若干个子过 程,每个子过程与其他子过程并行进行。由于这种工作方式与 工厂中的生产流水线十分相似,因此称为流水线技术。 从本质上讲,流水线技术是一种时间并行技术。
计算机组成原理
8
8
计算机的各个部分几乎都可以采用流水线技术:
计算机组成原理
2
2
将解决的主要问题
掌握流水线处理机的数据路径 建立指令流水线中指令如何重叠执行和流动
了解流水线工作原理以及相关问题
计算机组成原理
3
3
单周期处理机
指令 存储器 PC Add
D ata
W ritePC
disp
rs1 rd
1
rs2
0
S e lS t im m e
SelB ranch
偏移量符 号扩展
rd(rs1) and imme
rd (rs1) or (rs2)
计算机组成原理
25
25
31 26 25 21
00 0000
rd
00 0001
rd
00 0010
rd
00 0011
rd
00 0100
rd
00 0101
rd
00 0110
rd
00 0111
rd
00 1000
rd
00 1001
rd
00 1010
00 1011
00 1100
计算机组成原理
指令系统和指令格式
20 16 rs1
00010 rs1
00101 rs1
00101 rs1
流水线的形式与设计介绍课件
率和管理水平。
环形流水线
环形流水线是一种闭合的流水线形式。
它由多个工作站按环形布置组成,物料或工件在 一个闭环路径上连续流动。
环形流水线适合于需要循环加工的工序和大型生 产系统。
03
流水线的设计要素
工艺流程选择
确定产品加工顺序
根据产品类型和生产需求,选择 合适的工艺流程,明确生产加工 的顺序及各工序之间的衔接方式
流水线的形式与设计 介绍课件
目 录
• 流水线的基本概念 • 流水线的形式 • 流水线的设计要素 • 流水线的应用场景与案例 • 流水线的优化与改进建议 • 总结与展望
01
流水线的基本概念
定义与分类
定义
流水线是一种将生产过程划分为多个连续的阶段,每个阶段都负责完成特定的任务或操作,从而形成 一条生产线。
流水线生产可以实现大规模、 批量生产,从而降低单位产品 的生产成本。
质量保证
流水线生产过程中,每个环节 都有严格的质量控制,有助于 确保产品质量。
灵活响应市场需求
通过调整流水线的配置和参数 ,企业能够灵活响应市场需求
的变化。
未来流水线的发展趋势与挑战
智能化 柔性化 绿色环保 应对供应链风险
随着工业4.0和物联网技术的发展,未来流水线将更加智能化, 实现实时监控、数据分析和自适应优化。
优化生产计划与调度
制定合理的生产计划
根据市场需求、产能和资源状况制定合理的生产计划。
优化排产顺序
根据产品特性和关键资源需求,优化排产顺序,提高生产效率。
实时监控与调整
对生产过程进行实时监控,及时调整计划和调度,确保生产顺利 进行。
采用先进生产管理方法与技术
引入精益生产理念
流水线CPU技术获奖课件
FD
I E E EW
⑧
F
D
I E E EW
(b)8 条指令顺序
(c)8 条指令的流水线
图 4-12 流水线的相关延迟
指令发射:开启指令去处理器功能单元执行旳过程
静态调度:编译检测
编译器优化后,所需时间为
17个时钟周期 ① R1←M(Y)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
(R1)×(R2)->R3 (R4) + (R5)->R3
局部性有关:数据有关
(1) I1: ADD R1,R2,R3 ; I2: SUB R4,R1,R5 ;
(R2) + (R3)->R1 (R1) - (R5)->R4
第(1)组指令中,I1指令运算成果应先写入R1,然 后在I2指令中读出R1内容。因为I2指令进入流水线, 变成I2指令在I1指令写入R1前就读出R1内容,发生 RAW(写后读)有关。
② 增设一种存储器,将指令和数据分开存储;
③ 采用双端口存储器。
局部性有关:数据有关
在程序中,一条指令旳执行需等前一条指令执行完后才 干进行,则有数据有关。
例:SUB R1,R2,R3;(R2)(R3) R1
ADD R4,R1,R5;(R1)(R5) R4
时钟 1 2 3 4
指令
SUB 取指 译码 取数 执行
图 4-15 基于计分牌发射逻辑的流水线调度过程
动态调度-计分牌法
记分牌旳缺陷 依托流水线停止来处理有关性 没有消除数据有关 集中式调度
记分牌部件是性能瓶颈
动态调度-保存站法
FD
RS
RS
E
E
经典:第六章--流水线处理机及其设计
1.T=nmt
2.T=mt+(n-1)t
3.S=流水线性能/非流水线性能
=nmt/(mt+(n-1)t)
=nm/(m+n-1)
=m/(m/n-1/n+1)=m
13
Add rd,rs1,rs2; Addi rd,rs1,imme Store rd,rs1,imme Load rd,rs1,imme
14
1.非转移指令或存储指令 2.转移指令或存储指令 3.任意指令 相关
76
77
78
79
80
6.5.4 处理load指令----
暂停与内部前推想结合
81
82
83
84
85
6.6 转移相关及解决办法
6.6.1 转移相关问题
86
87
解决转移相关问题
• 暂停流水线; • 假定转移不发生; • 延迟转移。
6.2.2 流水线各级的操作
1.IF 级 2.ID级 3. EXE级 4.MEM 级 5.WB 级
15
16
2.ID级
17
3. EXE级
18
4.MEM 级
19
5.WB 级
20
0:Add r1,r2,r3; 1:Sub r4,r5,r6; 2:And r7,r8,r9; 3:Addi r10,r11,45; 4:Ori r12,r13,43;
流水线处理机及其设计
1
6.1 引言
S: 性能加速比 I: 一个程序被执行的总的指令条数 CPI: 每条指令总体平均所需的时钟周期数 CPInp:非流水线处理机的CPI CPIp: 流水线处理机的CPI m: 一条指令执行分成级 T: 每个时钟周期的时间长度
计算机组成原理流水线设计基础知识全面解析
计算机组成原理流水线设计基础知识全面解析计算机组成原理是计算机科学与技术的基础课程之一,而流水线设计则是其中的重要内容之一。
本文将全面解析计算机组成原理流水线设计的基础知识,介绍其工作原理、优势、流水线冲突及解决方法等内容。
一、工作原理计算机组成原理中,流水线设计是通过将指令的执行过程划分为多个阶段,并将这些阶段在不同的处理单元上并行执行的方式,从而提高指令的执行效率。
流水线设计主要包含以下几个阶段:1. 取指令阶段(IF):从内存中读取指令并将其送至指令译码器。
2. 指令译码阶段(ID):对指令进行解码,判断其类型,并提取相关寄存器的值。
3. 执行阶段(EX):根据指令的类型,对操作数进行计算,并将结果保存至寄存器中。
4. 访存阶段(MEM):如果指令需要访问内存,则进行内存读取或写入操作。
5. 写回阶段(WB):将计算结果写回到寄存器中。
通过将指令的执行划分为多个阶段,并使用多个处理单元并行执行,流水线设计可以大大提高指令的执行效率,加快程序的运行速度。
二、优势流水线设计具有以下几个优势:1. 并行处理:通过将指令的执行划分为多个阶段,并使用多个处理单元并行执行,可以加快指令的执行速度。
2. 提高资源利用率:由于每个处理单元都可以执行不同的指令阶段,因此可以充分利用硬件资源,提高整体的资源利用率。
3. 灵活性:不同的指令可以使用不同的处理单元进行执行,在保持高效率的同时,增加了系统的灵活性,可以执行更多的指令类型。
然而,除了以上的优势外,流水线设计也存在一些问题,即流水线冲突。
三、流水线冲突及解决方法1. 结构冲突:当多个指令需要使用同一硬件资源时,会发生结构冲突。
例如,同时对存储器进行读取和写入操作。
解决方法:通过增加硬件资源的数量或调整指令的执行顺序,可以避免结构冲突的发生。
2. 数据冲突:当后续指令需要使用前一条指令的运算结果时,会发生数据冲突。
例如,一条指令的结果被另一条指令使用。
解决方法:可以通过插入空闲周期或使用旁路机制,将结果传递给后续指令,从而解决数据冲突。
数字系统设计-流水线CPU设计
实验报告课程名称:数字系统设计实验Ⅱ学院:信电系数字系统设计实验Ⅱ流水线MIPS微处理器设计ContentsPart 1实验目的 (3)Part 2实验任务 (3)Part 3实验原理 (4)Part 4实验步骤 (12)1.IF级设计 (12)2.ID级设计 (14)3.Decode单元设计 (16)4.ALU单元设计 (22)5.EX级设计 (27)6.顶层模块设计 (29)Part 5仿真和波形分析 (37)1.IF级仿真分析 (37)2.Decode单元仿真分析 (38)3.ALU仿真分析 (40)4.顶层仿真分析 (41)Part 6心得 (42)实验报告一、实验目的(1)了解提高CPU性能的方法。
(2)理解数据冒险、控制冒险的概念以及流水线冲突的解决方法。
(3)掌握流水线MIPS微处理器的工作原理。
(4)掌握流水线MIPS微处理器的测试方法。
二、实验任务设计一个32位流水线MIPS微处理器。
设计要求:(1)至少执行下列MIPS32指令。
①算数运算指令:ADD ADDU SUB SUBU ADDI ADDU②逻辑运算指令:AND OR NOR XOR ANDI ORI XORI SLT SLTI SLTU SLTIU③移位指令:SLL SLLV SRL SRLV SRA④条件分支指令:BEQ BNE BGEZ BGTZ BLEZ BLTZ⑤无条件跳转指令:J JR⑥数据传输指令:LW SW⑦空指令:NOP(2)在用5级流水线技术,对数据冒险实现转发或阻塞功能。
(3)在XUP Vietex-II Pro开发系统中实现MIPS微处理器,要求CPU的运行速度大于25MHz.三、实验原理1.流水线MIPS CPU总体设计与构建流水线是数字系统中一种提高系统稳定性和工作速度的方法,广泛应用在高档CPU的构建中。
根据MIPS处理器指令的特点,将整体的处理过程分为取指令(IF)、指令译码、执行、存储器访问和寄存器写回五级,对应多周期CPU的五个处理阶段。
计算机系统结构 第3章 流水线技术PPT课件
3.1 流水线的基本概念
➢ 流水技术适合于大量重复的时序过程,只有在输 入端不断地提供任务,才能充分发挥流水线的效 率。
➢ 流水线需要有通过时间和排空时间。
通过时间:第一个任务从进入流水线到流出结果 所需的时间。
入
S1
△t2=△t S2
△t3=△t S3
△t4=3△t S4a
S4b
△t5=△t S5
出
S4c
3.2 流水线的性能指标
段
S5
1 2 3 4 5 6 7 8 9 … n-2 n-1 n
S4c
3
6
9
…
n
S4b
2
5
8
…
n-1
S4a
1
4
7
…
n-2
S3
1 23 4 56 7 8 9
…
n
S2
1 23 4 5 6 7 E n k n1
➢ 最高效率为:
Ema x nl i mknn11
当n>>k时,E≈1。
3.2 流水线的性能指标
当流水线各段时间相等时,流水线的效率与吞吐率 成正比。 E=TP·△t
➢ 流水线的效率是流水线的实际加速比S与它的最 大加速 比k的比值。 E S
k
当E=1时,S=k,实际加速比达到最大。
…
n
3
…… n
3
…… n
3
…… n
(n-1)△t4
出 n
时间
(b)时空图
3.2 流水线的性能指标
➢ 各段时间不等的流水线的实际吞吐率为:
白中英《计算机组成原理》(第5版)教材精讲(中央处理器 流水CPU)
5.6 流水CPUEnslow统计过:1965~1975间,反映器件性能级延迟大约为原来的1/10,而反映计算机系统性能之一的平均指令时间为1%。
结论:同一时期计算机系统性能比器件性能提高的速度快得多促使计算机性能提高的因素除了器件性能得提高外还有哪些呢?一、并行处理技术并行性(Parrelism)概念问题中具有可以同时进行运算或操作的特性。
例:在相同时延的条件下,用n位运算器进行n位并行运算速度几乎是一位运算器进行n位串行运算的n倍(狭义)(广义)含义只要在同一时刻(同时性)或在同一时间间隔内(并发性)完成两种或两种以上性质相同或不同的工作,他们在时间上相互重叠,都体现了并行性三种形式①时间并行(重叠):让多个处理过程在时间上相互错开,轮流使用同一套硬件设备的各个部件,以加快硬件周转而赢得速度,实现方式就是采用流水处理部件②空间并行(资源重复):以数量取胜,它能真正的体现同时性,LSI和VLSI为其提供了技术保证。
③时间+空间并行:Pentium中采用了超标量流水线技术。
二、流水CPU的结构流水计算机的系统组成①存储器体系:主存采用多体交叉存储器;Cache②流水方式CPU:指令部件、指令队列、执行部件③指令流水线④指令队列:FIFO⑤执行部件:可以有多个采用流水线方式构成的算术逻辑部件构成,可以将定点运算部件和浮点运算部件分开。
流水线CPU时空图IF(Instruction Fetch取指),ID(Instruction Decode指令译码),EX(Execution 执行),WB(Write Back写回)具有两条以上的指令流水线上图中流水线满载时,每一个时钟周期可以执行2条指令采用时间和空间并行技术。
流水线(Pipelining)的分类按级别分为:①指令流水线,②算术流水线,③处理机流水线(宏流水线)三、流水线中的主要问题1.瓶颈问题(流水线中有速度慢的段)再分成几个段,用资源重复的方法也可以解决。
6计算机组成原理第6章流水线原理
(n 1) max(t1 , t2 ,
, tk )
最大吞吐率:
TP max max(t , t , 1 2
1
, tk )
6.4.2 加速比(即吞吐率之比,)
不使用流水线所用的时间与使用流水线所用的时间之比
To 一般表示:s=T0/T SK Tk
To n ti
• 重叠方式是一种简单的流水方式,它把指令分成2 个子过程 每条指令只与下一条指令相重叠。
重叠方式流水线
• •
当分析部件完成上一条指令的“分析”后,就立即将之送入 执行部件,同时分析部件可以开始处理下一条指令。 虽然从执行一条指令的全过程来看,仍需要2∆t的时间,但从 机器的输出端来看,却是每隔一个∆t就能给出一条指令的执 行结果。
5.4.5 “瓶颈”问题及其解决方法
• 瓶颈:瓶颈就是Δti最大的段,它使流水线“流 速”减慢。 • S1 S2 S3 S4 • Δt 3Δt Δt Δt • 方法1:再细分 ── 将瓶颈设备再细分为下一级 流水线 • S1 S2a S2b S2c S3 S4 • Δt Δt Δt Δt Δt Δt • 方法2:并行设置 ── 将瓶颈设备重复设置多套。
• 指令级并行技术:指能使多条指令并行执行的技术,包括 流水技术、多操作部件技术和超长指令字技术;
• 流水线处理机,超流水线处理机:流水线处理机指用流水 作业方式并行解释多条指令的处理机,超流水线处理机指 能在一个时钟周期内分时发射多条指令的处理机; • 超长指令字技术VLIW:指让一条指令包含多个独立的操 作字段,并且分别控制多个功能部件并行工作的技术。
1)对存储器的频繁访问 ① 有哪些访问:取指令、取操作 数、存放执行结果, I/O通道访问. ② 希望存储器为多体结构,以适 应多种访问源的需要。 ③ 当存储器为单体结构时,需要 将访问源排队,先后顺序为: 取指令、取数据、I/O通道访问、存 结果
第4章 流水线计算机设计技术2
4.3.1 吞吐率和加速比 2. 实际吞吐率和加速比 (2)设指令流水线由m段组成,但各段经过的时间Δti不相等,其中
“瓶颈”段时间为Δtj,在不发生任何相关的前提下完成n条指 令的解释。 流水线实际吞吐率:
流水线加速比:
第4章 流水线计算机设计技术
4.3 线性流水线性能分析
该是多少?
i 1
顺序完成7个任务的时间仍为: 4×3Δt+3×4Δt=24Δt
ቤተ መጻሕፍቲ ባይዱ
流水线的实际吞吐率为:TP=7/(14Δt)=1/(2Δt)
效率为:η=24Δt/(5×14Δt)≈34.3%
第4章 流水线计算机设计技术
4.4 线性流水线性能分析举例
若将例4.3中的
A
•
B
4
ai
bi
改为
A
•
B
16
ai
bi
4×3Δt+3×4Δt=24Δt
流水线的实际吞吐率为:
TP=7/(15Δt)
效率为:
η=24Δt/(5×15Δt)=32%
第4章 流水线计算机设计技术
4.4 线性流水线性能分析举例
若上例中静态双功能流水线改为动态双功能流水线,其它条件不变,那么,在
4
计算向量点积 A • B ai bi 时,流水线在此期间的实际吞吐率TP和效率η又
第4章 流水线计算机设计技术
4.3 线性流水线性能分析
4.3.1 吞吐率和加速比
最大吞吐率是指在流水线正常满负荷工作时,单位时间内机器所能处理的最 多指令条数或机器能输出的最多结果数。
由于指令的取指和执行过程中的各个子过程所需的时间不同,为了避免各段 之间经过时间不匹配,也为了保证各段之间数据通路宽度上能匹配,通常 都要在各子过程之间插入一个锁存器,这些锁存器都受同一个时钟脉冲的 控制,从而达到同步。如果指令的解释细分为n个子过程,且各个子过程 所需的时间分别为Δt1、Δt2、Δt3、…、Δtn ,时钟周期应当为max{Δt1、Δt2、 Δt3、…、Δtn},对应于流水线的最大吞吐率为:
2-流水线处理机及其设计精讲
2-流水线处理机及其设计精讲6.3.3 流水线各级信号的产生至此,我们已经描述过了所有3种指令类型的流水线操作。
下面我们来总结控制信号的产生方法。
控制信号分布在流水线处理机的各级,我们当然可以在它们要被使用的流水线级产生,例如SIMM可在EXE级产生。
但这样,除了译码将会造成本级一些延迟之外,还要使用流水线寄存器来传递必要的信息,例如指令操作码等。
我们采用的方法是,控制信号集中在ID级由译码电路产生,并使用流水线寄存器把每一个控制信号传递到它被使用的流水线级。
我们把所有的控制信号归纳在表6.4中。
表6.5列出了除了ALUOP的各控制信号的产生表达式。
表6.6列出了ALUOP控制信号的产生表达式。
由以上表达式,我们可以有如图6.29所示的控制电路。
图中使用了流水线寄存器来把控制信号传递到合适的流水线级。
我们可以看出,流水线控制部件的设计方法与非流水线单周期处理机的控制部件的设计方法非常类似,表6.6 ALU控制信号的产生表达式指令ALUOP1ALUOP0操作指令ALUOP1ALUOP0操作an d 0 0 与andi0 0 与or 0 1 或ori 0 1 或ad d 1 0 加addi1 0 加su b 1 1 减subi1 1 减loa d 1 0 加store1 0 加ALUOPl=add+addi+sub+subi+load+store ALUOPO=or+ori+sub+subi图6.29 流水线处理机的数据路径和控制部件6.4 结构相关及解决方法流水线处理机的设计存在3个非常著名的问题(hazard)。
它们是(1)结构相关问题(structural hazard);(2)数据相关问题(data hazard);(3)转移相关问题(branch hazard)。
我们将在本节简要介绍第一个问题,下面两节分别介绍第二和第三个问题。
结构相关(structural dependence)问题指的是,由于硬件资源不充足而导致流水线不畅通。
第9章 流水线处理机及设计.ppt
9.1.5 控制相关
• 1.猜测法 • 2.采用延迟转移 • 3.加快短循环程序的处理 • 4.设置两个先行指令缓冲栈
9.2 流水线工作原理
• 9.2.1 流水线的工作原理及定义
入 取指令
译码
取数
出 执行
图9-10 指令解释的流水线处理
s
执行
1
2
3
4
5
取数
1
2
3
4
5
译码
1
2
3
4
5
取指令 1
2
3
1
2
k
n t Tk
(9-15)
则整个流水线的效率为:
1 2 k k k n t
k
k
k Tk
9.3.3 非线性流水线的调度技术简介
为了避免流水线发生冲突,一般采用延迟输入新 任务的方法。那么,在非线性流水线的输入端, 究竟每隔多少个时钟周期向流水线输入一个新任 务才能使流水线的各个功能段都不发生冲突,这 就是非线性流水线的调度问题。通常,在一般情 况下,这个间隔的时钟周期数应该越小越好。因 此,非线性流水线调度的任务是要找到一个最小 的循环周期。
K 分析
执行
K+1 分析
执行
K+2 分析
执行制方式
先行指令缓冲栈
指令分析器
存
主
储
先行操作栈
通
存
控
先行读数栈
用
储
制
运算控制器
寄
器
器
存
后行写数栈
运算器
器
图9-7 采用先行控制方式的处理机结构
9.1.3 先行控制方式中缓冲深度的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-流水线处理机及其设计精讲————————————————————————————————作者: ————————————————————————————————日期:6.3.3 流水线各级信号的产生至此,我们已经描述过了所有3种指令类型的流水线操作。
下面我们来总结控制信号的产生方法。
控制信号分布在流水线处理机的各级,我们当然可以在它们要被使用的流水线级产生,例如SIMM可在EXE级产生。
但这样,除了译码将会造成本级一些延迟之外,还要使用流水线寄存器来传递必要的信息,例如指令操作码等。
我们采用的方法是,控制信号集中在ID级由译码电路产生,并使用流水线寄存器把每一个控制信号传递到它被使用的流水线级。
我们把所有的控制信号归纳在表6.4中。
表6.5列出了除了ALUOP的各控制信号的产生表达式。
表6.6列出了ALUOP控制信号的产生表达式。
由以上表达式,我们可以有如图6.29所示的控制电路。
图中使用了流水线寄存器来把控制信号传递到合适的流水线级。
我们可以看出,流水线控制部件的设计方法与非流水线单周期处理机的控制部件的设计方法非常类似,而有限状态机和微程序的设计方法显得不太适合。
表6.4 流水线各级控制信号的定义流水线级控制信号注释IF级BTAKEN转移发生ID级SST 选择store(rd)EXE级SIMM选择立即数ALUOP ALU操作码WZ 写Z标志MEM级WMEM 写存储器WB级SLD 选择loadWREG 写寄存顺堆表6.5控制信号的产生表达式BTAKEN=branch+bne Z+beqZSST=storeSIMM=andi+ori+addi+subi+load+storeWZ=andi+ori+addi+subi+and+or+add+sub WMEM=storeSLD=loadWREG=andi+ori+addi+subi+and+or+add+sub+load表6.6 ALU控制信号的产生表达式指令ALUOP1 ALUOP0操作指令ALUOP1ALUOP0操作and 0 0 与andi0 0 与or0 1 或ori 0 1 或add 1 0加addi 1 0 加sub 1 1减subi 1 1 减load 1 0 加store 1 0 加ALUOPl=add+addi+sub+subi+load+storeALUOPO=or+ori+sub+subi图6.29 流水线处理机的数据路径和控制部件6.4 结构相关及解决方法流水线处理机的设计存在3个非常著名的问题(hazard)。
它们是(1)结构相关问题(structural hazard);(2)数据相关问题(datahazard);(3)转移相关问题(branch hazard)。
我们将在本节简要介绍第一个问题,下面两节分别介绍第二和第三个问题。
结构相关(structural dependence)问题指的是,由于硬件资源不充足而导致流水线不畅通。
我们将举3个例子来说明结构相关问题及其相应的解决方案。
,第一个例子,也是最典型的例子,就是设想只为流水线处理机配备一个外部公共存储器模块。
这在现代计算机系统设计中是常见的。
它的好处是程序和数据可以共享这个存储器模块,二者之间的界限是可以动态调整的。
使用分开的两个外部指令存储器模块和数据存储器模块的计算机被称为具有哈佛(Harvard)结构的计算机。
依程序类型的不同,有的需要较大的程序空间和较小的数据空间;有的则需要较小的程序空间和较大的数据空间。
在这种情况下,哈佛结构的存储器不能被灵活、充分地利用。
然而,如果只采用一个存储器模块而不采取任何其它的措施,则会出现结构相关问题,造成流水线堵塞。
图6.30示出了由于存储器端口资源的不充足而使取指令和load/store 指令访问存储器的动作不能同时进行。
图6.30单个存储器模块所造成的流水线堵塞图6.30中的存储器模块只有一套访问端口。
当load/store指令访问存储器时,必须暂停取指令操作。
当然也可以让取指令优先而暂停load/store指令的存储器访问操作。
然而,不管是哪一种情况,计算机的性能将会有很大的损失。
那么,采用一个外部存储器模块的现代计算机是如何解决这个问题的呢?说起来很简单,如图6.31所示,在处理机内部,设置两个分开指令和数据的高速缓冲存储器(CACHE)。
把存储器中经常使用的程序段和数据分别放在指令CACHE和数据CACHE中。
访问CACHE命中时,处理机可直接从CACHE 得到指令和数据,而不再访问外部存储器。
有关CACHE的原理和结构,我们将在9章详细讨论。
再举第二个例子。
把ALU指令的WB级提前一个周期。
由以前的描述可知,ALU指令在EXE级结束时已把结果放在了流水线寄存器R,在MEM级不做任何运算,只是把它传递到流水线寄存器C,以便在WB级写入寄存器堆。
我们可以把这样的数据路径加以改造,使ALU指令提前一个周期i即在通常的MEM级就把结果写入寄存器堆。
如果load指令仍用5个周期,则势必在有的周期有两个数据要同时写入寄存器堆;而有的周期则没有一个数据要写入,见图6,32(a)。
由于寄存器堆只有一个写端口,势必造成有些ALU写操作被延后。
解决这个问题的方法有3种:第一种就是前面已经描述过的方法,即ALU指令也用5个周期;第二种是设计两个写端口的寄存器堆;第三种是改造load指令的格式,消除存储器地址计算周期。
办法是直接用一个寄存器操作数作为地址访问存储器,其指令格式形如loadrd,(fsl),即把由rsl指定的寄存器操作数拿来直接作为存储器的地址,把访问到的存储器数据写入寄存器rd,见图6.32(b)。
这样做会带来一个额外的好处,这就是store指令可以有store(rsl),rs2之类的格式,即把寄存器rsl的内容直接作为存储器地址i把寄存器rs2的内容写入存储器,从而可以省去寄存器堆前面的多路器以及相应的控制信号SST。
图6.31 分开的指令CACHE和数据CACHE使流水线畅通第三个结构相关的例子是,如果store指令格式形如storerd,(rsl,rs2),而寄存器堆只有两个读端口。
寄存器rsl和rs2的内容相加得到存储器地址,寄存器rd的内容存入存储器。
这样的store指令要求同时读出3个寄存器的内容。
如果寄存器堆只有两个读端D,肯定要堵塞流水线。
办法只有一个,设计一个带有3个读端口的寄存器堆,并在流水线处理图6.32用4个周期完成ALU指令(a),Load指令也用4个周期完成(b)机中为它配置3个流水线寄存器。
还看很多其它类型的结构相关的例子,例如浮点除法器使用迭代的方法计算商,而每次迭代用相同的电路等,我们在此不一一列举。
图6.32 用4个周期完成ALU指令(a),Load指令也用4个周期完成(b)6.5 数据相关及解决方法6.5.1 数据相关问题上一节给出的例子中,所有的指令都是不相关的,即任何——条指令的源操作数都不依赖于其它指令的计算结果。
本节讨论数据相关(datadependence)及解决方法。
现在让我们来看看下面的程序例子:I1:addr1,r2,r3I2:sub r4,rl, r5I3: and r6, r7,r1I4: Orr8, r1,r9I5: addi r10,r1,100I1指令把寄存器r2和r3的内容相加,结果存入寄存器r1。
它下面的4条指令均与I1相关,即使用I1的结果,见图 6.33给出的数据相关关系图。
从图中可见是在每个周期结束时,由时钟上升沿把数据打人寄存器。
在数据没被打人之前,任何从该寄存器读出的数据都是过时的。
图中的I2到I4的3条指令就属于这种情况,它们从r1寄存器读出的数据都是过时的,是不能使用的。
15则没关系,当它读r1寄存器时,n已把结果写入。
为了减少数据相关指令的条数,我们让写寄存器堆的操作提前半个周期,即由时钟的下降沿打入。
这样做是可行的,因为我们假定一个时钟周期是10ns,寄存器堆的访问只需要5ns。
这样,数据相关的指令条数减至两条,见图6.34。
下面我们讨论如何在流水线处理机中处理数据相关问题。
我们将描述两种方法,一种图6.33I1下面有3条指令不能从寄存器r1读出正确的数据图6.34 把WB提前半个周期,I1下面还有两条指不能从寄存器r1读出正确的数据是暂停相关指令的执行(暂停流水线),直到能够正确读出寄存器操作数为止;另一种是采用专门的数据通路,直接把结果送到ALU的输入端(内部数据前推)。
在描述这两种方法时,我们使用图6.34的方案,即把写寄存器堆提前半个周期。
这时,我们只需考虑两条相关指令。
下面以ALU指令为例,分别对两种方法加以描述,然后再讨论load指令同时使用这两种方法的情况。
6.5.2 暂停数据相关流水线暂停数据相关流水线指的是当数据相关出现时,暂时停止相关指令的执行,等到相关数据能从寄存器读出,再恢复执行。
暂停流水线的两种表示方法见图6.35和图6.36。
这里涉及到两个问题:一个是如何检测出数据相关,再一个是如何暂停流水线。
以下我们对这两个问题分别加以描述。
首先,让我们考虑数据相关如何用硬件电路检测出来。
参照本节开始给出的程序例子,I1写目的寄存器rd,I2和I3的源操作数是寄存器rsl或rs2中的数据,且它们的rsl或rs2与I1的目的寄存器号rd相等时才有可能发生数据相关,因此,硬件电路中要有比较器。
由于指令格式中源寄存器号rs2与立即数部分重叠,而立即数是不会出现相关的,因此,指令操作码必须要参与检测(区分是寄存器操作数还是立即数)。
;另外,如例子中的I1指令,rd一定作为目的寄存器号使用,即结果是要被写入目的寄存器时,后面的指令才有可能与之相关。
由于store指令也使用rd,但它不写寄存器,因此,WREG信号也应参与检测(实际上,WREG也是从操作码中得出的)。
我们把上述规则用表达式写出如下(它们是在ID 级检测数据相关的表达式):DEPEN=A_DEPEN+B_DEPENA_DEPEN=EXE_A_DEPEN+MEM_A_DEPEN图6.35 停止相关指令的执行(表示方法1)图6.36 停止相关指令的执行(表示方法2)B_DEPEN=EXE_B_DEPEN+MEM_B_DEPENEXE_A_DEPEN=(1D_rsl==EXE_rd)(EXE_WREG==1)(1D_rsllsReg) EXE_B_DEPEN=(1D_rs2==EXE_rd)(EXE_WREG==1)(1D_rs21sReg)+(1D_rd==EXE_rd)(EXE_WREG==1)(store)MEM_A_DEPEN=(1D_rsl==MEM_rd)(MEM_WREG==1)(1D_nllsReg) MEM_B_DEPEN=(1D_rs2==MEM_rd)(MEM_WREG==1)(1D_rs2IsReg)十(1D_rd==MEM_rd)(MEM_WREG==1)(store)ID_rsllsReg=and十andi十or十ori十add十addi十sub十subi十loa d十storeID_rs2IsReg=and十or十add十sub由于一条指令中的两个源操作数都可能与上一条指令的目的操作数相关,因此总的数据相关DEPEN由A_DEPEN和B_DEPEN两部分组成。