CA-第七讲 流水线技术

流水线概述
流水线的基本概念
产品生产流水线
一个问题
假设某个产品需要四道工序;1工人,1机器,8小时可以生产120件
要将该产品8小时提高到480件,怎么实现目标
两种解决方法
方案一:增加3名工人、三套设备
方案二:产品生产采用流水线的方式,分为4道工序;增加3名工人,每人一道工序
两种方案的工作过程对比
两种方案中每一件生产时间不变
但是在稳定情况下:
方案一:需要三套设备
方案二:不需要增加任何设备
使得每件产品的产出时间从表面上来看是从原来的4分钟缩减到1分钟
计算机中的流水线
指令流水线
功能部件流水线
流水技术的定义
将一重复的时序过程分解为若干子过程,每个子过程都可有效地在其专用功能段上与其它子过程同时执行这种技术称为流水技术。
时空图
从时间和空间两个方面来描述流水线的工作流程,横坐标表示时间,纵坐标表示各个流水段。
流水线需要改造的话需要考虑的原则:
1. Repetition of identical operations
Repetition of identical operations refers to the practice of carrying out the same set of tasks multiple times. This can be done intentionally to achieve a specific goal or unintentionally due to errors or inefficiencies in a process. Repetition of identical operations can be seen in various domains, including manufacturing, software development, data entry, and administrative tasks.
2. Repetition of independent operations
Repetition of independent operations refers to the process of repeatedly carrying out the same operations on different elements or data sets.
For example, if you have a list of numbers and you want to multiply each number by 2, you can use repetition of independent operations to apply the same multiplication operation to each number in the list. This can be achieved through looping or iterating over the data set and performing the operation on each element.
By utilizing repetition of independent operations, you can save time and effort by avoiding the need to manually perform the operation on each element individually. Instead, you can automate the process and apply the operation to all the elements in a more efficient manner.
流水线技术原理
左边的三角表示的是载入时间
右边的三角叫做排空时间
流水线的特点
流水过程由多个相关的子过程组成,这些子过程称为流水线的“级” 和 “段” 。
每个子过程由专用的功能段实现
各个功能段的时间应该基本相等,通常为一个时钟周期
流水线需要一定的 通过时间才能稳定
流水技术适合于大量重复的时序过程
流水线分类
单功能流水线和多功能流水线
- 按照流水线所完成的功能分类
- 单功能流水线
A single-function pipeline refers to a type of manufacturing or production system where each stage of the process is dedicated to performing a specific task. This means that the different stages of the pipeline are set up to carry out only one particular function or operation. Single-function pipelines are commonly used in industries such as assembly lines, where each stage focuses on a specific task to achieve efficiency and specialization.
Source: Wikipedia - Assembly line
- 多功能流水线
多功能流水线是一种在制造过程中用于完成多种任务的系统。它可以自动化地将产品从一个工作站传递到另一个工作站,实现高效的生产和制造。
加工、装配或检测操作。这样,同一条流水线可以生产多种不同的产品,实现灵活的生产线调整。
静态流水线和动态流水线
静态流水线和动态流水线是计算机体系结构中常见的两种流水线设计方式。静态流水线是指在工作期间固定不变的流水线,而动态流水线则允许流水线结构在运行过程中进行改变。
静态流水线
的特点是流水线的各个阶段的功能和顺序是固定不变的。这种设计适用于执行时间相对稳定且操作相对简单的任务。静态流水线的优点是结构简单,并且可以通过合理安排各个阶段的操作来达到最小化时钟周期的效果。但是,静态流水线的缺点是对于执行时间不稳定的任务不太适用,并且无法处理
控制流转移和异常。
动态流水线
允许在运行过程中根据需要改变流水线结构。这种设计更适用于执行时间波动较大或包含复杂分支转移的任务。动态流水线的优点是可以根据任务的要求动态地修改流水线的结构,以充分利用各个阶段的处理能力。但是,动态流水线的缺点是在改变流水线结构时会带来额外的开销,并且可能导致流水线中的指令乱序执行,影响性能。
部件级、处理机级以及处理机之间的流水线
按照流水的级别划分
部件级流水线 运算操作流水线
处理机级流水线 指令流水线
处理机间流水线 宏流水线
标量流水处理机和向量流水处理机
按照数据来表示分类
标量流水处理机
向量流水处理机
According to my knowledge, there are several ways to classify processors based on their data representation and processing methods. Two common classifications are scalar pipeline processing and vector pipeline processing.
Scalar pipeline processing, also known as scalar processing, operates on one data element at a time. It follows a single instruction stream and performs sequential execution of instructions.
Vector pipeline processing, on the other hand, operates on multiple data elements simultaneously. It uses vector instructions that can perform the same operation on multiple data elements in parallel.
For more detailed information and examples of these classifications, you can refer to the following source: [source URL]
线性流水线和非线性流水线
按照是否有回馈回路来进行分类
线性流水线是指流水线的隔断串行连接,没有反馈回路
非线性流水线指的是流水线中除了有串行连接的通路之外,还有反馈回路
存在流水线调度问题
确定什么时候想流水线引进新的输入,从而使得新输入的数据和先前操作的反馈数据在流水线中不产生冲突,这就是 流水线调度的问题
MIPS基本流水线
基本MIPS流水线
要好好讲一讲上面这个图 ⬆
- I类 SW/LW ADDI/SUBI
- R类 AND/OR
- J类 J name
这几类指令在上图中都有什么操作?
取指:IR $\leftarrow$ IMem[PC] NPC $\leftarrow$ PC+4
译码:A $\leftarrow$ $Regs[IR_{6…10}]$ B $\leftarrow Regs[IR_{11…15}]$ Imm $\leftarrow$ $Regs[(IR_{16})^{16}# #IR_{17…32}]$
执行:SW/LW ALUoutput $\leftarrow$ A+Imm
ALU:
ADDI/SUBI ALUoutput $\leftarrow$ A op Imm
ADD/OR ALUoutput $\leftarrow$ A Func B
BEQZ ALUoutput $\leftarrow$ NPC + Imm, Cond $\leftarrow$ A op 0
访存:
SW DMEM[ALUoutput] $\leftarrow$ B
LW LDM $\leftarrow$ DMEM[ALUoutput]
BEQZ if(Cond) PC $\leftarrow$ ALUoutput else PC $\leftarrow$ NPC
写回:
ADDI/SUBI $Regs[IR_{11…15}]$ $\leftarrow$ ALUoutput
AWB/OR $Regs[IR_{16…20}]$ $\leftarrow$ ALUoutput
LW $Regs[IR_{11…15}]$ $\leftarrow$ LMD
MIPS32的一种简单实现
性能分析
在数据通路商,分支指令需要4个时钟周期
其他指令需要5个时钟周期
假设分支指令占总指令数量的12%,问CPI = ?
$CPI = 4 \times 12% + 5 \times(1-12%)=4.88$
结论:就性能和硬件开销而言,上述实现不是一种优化实现!
改进方法
在Mem周期完成ALU指令
假设ALU指令数占指令总数的44%,则在时钟周期不变的同时,CPI可以降低至4.44
如果要进一步降低CPI,可能需要延长时钟周期时间,使得每个时钟周期能够完成更多的工作
采用单周期实现,可以将CPI降低为1,但是时钟周期时间却会增加为原来的5倍
一般不采用这种方法,为什么?
一种简单的MIPS流水线
数据通路流水画
数据通路中的每一个周期就成为流水线的一段
每个时钟周期启动一条指令
——得到了一条简单的MIPS流水线
实现流水技术应该解决的一些问题
应该保证流水线各个段不会在同一周期内使用相同的通路资源
- 例如,不能要求一个ALU既做有效地址结算,又做减法操作
- IF和Mem两个阶段都要访问存储器,怎样避免访存冲突
- ID和WB两个阶段都要访问存储器,是否存在冲突?怎样避免?
PC计算问题
为了能够在每个时钟周期启动一条新的指令,流水线必须在IF段获得下一条指令的地址,并保存在PC中
但是,分支指令会改变PC的值,而且只有在Mem结束时,这个新的值才会被写入PC,出现矛盾
对于顺序执行,可以修改数据通路在IF段完成PC计算,但是分支指令怎么处理?
合理划分流水段,每段内的操作都必须在一个时钟周期内完成
流水线寄存器设计
- 设置流水线寄存器文件
- 流水线寄存器文件的命名
- 段A和段B之间的流水线寄存器称为A/B
- [[#流水线寄存器的作用]]
- [[#流水线寄存器文件的构成]]
MIPS流水线的操作
在任意时刻,流水中的指令旨在流水线中的某一段内执行操作。
因此,只要知道了每一个流水段在各个至零下进行何种操作,就知道了整个流水线的操作
- [[#MIPS流水线每个流水段的操作]]
MIPS流水线中多路选择器的控制
主要是确定如何 控制那四个多路选择器
ALU输入端的两个MUX由ID/EX.IR所指出的指令类型限制
IF段的MUX由EX/MEM。Cond域的值控制
WB段的MUX由当前指令类型Load/ALU控制
流水线性能分析
附录
流水线寄存器的作用
[[#流水线寄存器设计]]
流水线寄存器文件的构成
[[#流水线寄存器设计]]
MIPS流水线每个流水段的操作
[[#MIPS流水线的操作]]
- 标题: CA-第七讲 流水线技术
- 作者: Molaters
- 创建于 : 2023-11-24 11:30:49
- 更新于 : 2023-10-12 17:03:02
- 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-第七讲 流水线技术/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。