指令集的实现与流水线结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• Independent computations. 各次计算任务直接没有依赖性。
流水线的目的是在相对较少的成本下提升系统的吞吐率。 理想流水线代表了现实流水线所能达到的吞吐率的上界。
16
Computer Architecture Spring 2016
算术流水线
17
Computer Architecture Spring 2016
流水线的特点
1、流水过程由多个相联系的子过程组成,每个子过程称为流水线的 “级”或 “段”。流水线的段数也称为流水线的“深度”或“流水 深度”;
2、每个子过程由专用的功能段实现;
3、各个功能段所需时间应尽量相等,否则,时间长的功能段将成为 流水线的瓶颈,会造成流水线的“堵塞”和“断流”。这个时间一般 为一个时钟周期(拍)或一个机器周期;
• 2. 数据通路的时钟驱动策略 • 3. 整合数据通路以满足各项需求 • 4. 分析各条指令的实现方案以确定寄存器传输过程的控制逻辑 • 5. 整合控制逻辑
24
Computer Architecture Spring 2016
MIPS指令格式
• 所有MIPS指令的宽度都是32 bits. 有三种格式:
段空 号间
浮点加
定点乘
8
1 2 3 … … n-1 n 一 二 三 四
7
一二三四五
6
一二三四五六
5
1 2 3 … … n-1 n
4
1 2 3 … … n-1 n
3
1 2 3 … … n-1 n
2
1 2 3 … … n-1 n
1 1 2 3 … … n-1 n
一二三四五六七
时间
动态流水线 12
Computer Architecture Spring 2016
IN S1
S2
S3
S4
OUT
15
Computer Architecture Spring 2016
理想化的流水线
• Uniform subcomputations. 可以将总体计算任务划分为具有 均匀延迟的子任务。
• Identical computations. 同样的计算任务在流水线上反复执 行。
流水线的性能与成本
22
Computer Architecture Spring 2016
指令流水线
• 把指令的处理也转变为流水线化的计算过程。 • 相比算术流水线,指令流水线的实现与理想化假设相距甚远。
– 把指令处理划分为均衡的subcomputation比较困难 – 不同指令的subcomputation不尽相同,因此硬件需求也不一致 – 指令之间存在相关性,无法成为完全独立的计算过程
op | rs | rt | Imm16
= MEM[ PC ]
inst
Register Transfers
ADDU R[rd] <– R[rs] + R[rt];
PC <– PC + 4
SUBU R[rd] <– R[rs] – R[rt];
PC <– PC + 4
ORi
R[rt] <– R[rs] | zero_ext(Imm16);
else PC <– PC + 4
Computer Architecture Spring 2016
组合逻辑的表征
• 加法器
A 32 B 32
Adder
32 Sum Carry
• 多路选择 器
• 算术逻辑 运算单元
Select
A 32 B 32
MUX
32 Y
OP
A 32 B 32
ALU
Leabharlann Baidu
32 Result
4、流水线需要有“填充时间”(第一个任务流出结果所需的时间), 在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出 一个结果;
5、流水技术适合于大量重复的时序过程,只有输入端能连续地提供 任务,流水线的效率才能充分发挥。
8
Computer Architecture Spring 2016
29
Computer Architecture Spring 2016
存储单元:理想存储器
• 理想存储器
Write Enable Address
– 1个输入总线: Data In – 1个输出总线: Data Out • 访存操作
Data In
32 Clk
DataOut 32
– 根据Address 选择相应的数据字输出到Data Out
0 funct 6 bits
0 0
25
Computer Architecture Spring 2016
从指令逻辑映射到寄存器传输级(RTL)
• RTL描述了指令在硬件实现上的具体意义 • 所有行为都从指令获取开始
op | rs | rt | rd | shamt | funct = MEM[ PC ]
31
26
21
16
11
6
– R-type
op
6 bits
31
26
rs
5 bits 21
rt
5 bits 16
rd 5 bits
shamt 5 bits
– I-type
op
rs
rt
immediate
– J-type
6 bits
31
26
op
5 bits
5 bits
16 bits
target address
6 bits
26 bits
• 不同的域的定义:
– op: 指令操作码
– rs, rt, rd: 源操作数,目的操作数
– shamt: 移位量
– funct: 对应特定op指定更多的操作类型
– address / immediate: 地址偏移/立即数
– target address: 跳转指令的目的地址
Computer Architecture Spring 2016
输入
输入
求阶差
求阶差
对阶
对阶
相加
相加
规格化
规格化
相乘
单功累能加流水线
输出
输出
输入
流这
水些
没
有
实
际
操
作
的
节
拍
也
要
相乘
单功累能加流水线
输出
单功能流水线
多功能流水线(TI ASC)
10
Computer Architecture Spring 2016
它是由两个以上的处理机串行地对同一数据流进行处理,每
个处理机完成一项任务。
13
Computer Architecture Spring 2016
标量流水处理机和向量流水处理机
所谓标量流水处理机(scalar pipelines processor),是指 处理机不具有向量数据表示,仅对标量数据进行流水处理。
段空 号间
8 7 6
浮点加 1 2 3 … … n-1 n
定点乘 一
一二 一二三
5
1 2 3 … … n-1 n
4
1 2 3 … … n-1 n
3
1 2 3 … … n-1 n
2
1 2 3 … … n-1 n
1 1 2 3 … … n-1 n
一二三四
时间
静态流水线 11
Computer Architecture Spring 2016
Clk
• 有效 (1): 数据输出更新为输入值
Write Enable
Data In N
MUX
N
N
Data Out N
Clk
28
Computer Architecture Spring 2016
存储单元:寄存器堆
• 寄存器堆(Register File) 32个寄存器组成:
RW RA RB
– 2个32-bit 输出总线:
部件级、处理机级及处理机间流水线
所谓部件级流水线又叫运算操作流水线(Arithmetic pipelines),它是把处理机的算术逻辑部件分段,以便为各 种数据类型进行流水操作。
所谓处理机级流水线,又叫指令流水线(Instruction pipelines),它是把解释指令的过程按照流水方式处理。
所谓处理机间流水线,又叫宏流水线(Macro pipelines)。
所谓向量流水处理机( vector pipelines processor),是 指处理机具有向量数据表示,并通过向量指令对向量的各元 素进行处理。
14
Computer Architecture Spring 2016
线性流水线与非线性流水线
a) 线性流水线:流水过程中,从输入至输出每功能段仅 经过一次,不存在反馈。 b) 非线性流水线:存在反馈,某些流水功能段允许被通过 数次。
流水线技术的定义
所谓流水技术,是指将一个重复的时序过程,分解成为若 干个子过程,而每一个子过程都可有效地在其专用功能段上与 其他子过程同时执行。
描述流水线工作的时空图
空 间
工序4 工序3
工序2
工序1
t1 t2 t3 t4 t5 t6 t7
时间
7
Computer Architecture Spring 2016
– Write Enable = 1: 根据address 将Data In bus上的数据写入到 选择相应的数据字上。
• 时钟输入 (CLK)
– 只影响写操作 – 对于读操作,存储器像组合逻辑一样工作:
• Address valid => Data Out
30
Computer Architecture Spring 2016
– RW (number)选择相应的寄存器写入 busW (data) 上的数据, (Enable=1)
• 时钟输入 (CLK)
– 写操作由时钟所控制,必须由时钟边沿来驱动和同步
– 读操作不须等待时钟边沿,选择寄存器,立刻得到其输出值:
• RA or RB valid => busA or busB
算术流水线
18
Computer Architecture Spring 2016
算术流水线
19
Computer Architecture Spring 2016
算术流水线
20
Computer Architecture Spring 2016
算术流水线
21
Computer Architecture Spring 2016
流水线的分类
可按不同的观点进行分类: 1、单功能流水线和多功能流水线。(按功能) 2、静态流水线和动态流水线(按同一时间段的连接方式) 3、部件级、处理机级及处理机间流水线(按流水级别) 4、标量流水处理机和向量流水处理机(按数据表示) 5、线性流水线和非线性流水线(按是否有反馈)
9
1 输入 2 求阶差 3 对阶 4 相加 5 规格化 6 输出 7 8
2
Computer Architecture Spring 2016
流水线的基本概念
3
Computer Architecture Spring 2016
4
Computer Architecture Spring 2016
5
Computer Architecture Spring 2016
6
Computer Architecture Spring 2016
要设计指令流水线,首先要了解 指令集的RTL映射与设计
23
Computer Architecture Spring 2016
从指令集到处理器的实现
• 1. 分析指令集对数据通路的需求 – 从寄存器传输的角度解析指令的行为 – 数据通路包含了指令所定义寄存器对应的存储单元 – 数据通路必须支持各种寄存器传输
PC <– PC + 4
LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4
STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt]; PC <– PC + 4
BEQ
if ( R[rs] == R[rt] ) then PC <– PC + 4 + sign_ext(Imm16)] || 00 26
Computer Architecture Spring 2016
计算机体系结构
Lesson 3. 指令集的实现与流水线结构
讲课教师:韩军, 周晓方
复旦大学微电子学院
1
Computer Architecture Spring 2016
内容提要
1. 实现指令的基本数据通路
2. 指令处理过程的RTL描述 3. 流水线结构的作用及其实现 4. 流水线冲突及其解决方法 5. 中断、异常及其处理方法
27
Computer Architecture Spring 2016
时序逻辑的表征
• 寄存器
Write Enable
– 由 D Flip Flop构成
• N-bit 输入和输出
Data In
• 具有写有效信号(Write Enable) N
Data Out N
– Write Enable:
• 无效 (0): 数据输出不变
Write Enable 5 5 5
busA and busB
busA
– 1个 32-bit 输入总线: busW • 寄存器的选择:
busW
32 Clk
32 32-bit 32 Registers busB
32
– RA (number) 选择相应的寄存器输出数据到busA (data)
– RB (number) 选择相应的寄存器输出数据到busB (data)
流水线的目的是在相对较少的成本下提升系统的吞吐率。 理想流水线代表了现实流水线所能达到的吞吐率的上界。
16
Computer Architecture Spring 2016
算术流水线
17
Computer Architecture Spring 2016
流水线的特点
1、流水过程由多个相联系的子过程组成,每个子过程称为流水线的 “级”或 “段”。流水线的段数也称为流水线的“深度”或“流水 深度”;
2、每个子过程由专用的功能段实现;
3、各个功能段所需时间应尽量相等,否则,时间长的功能段将成为 流水线的瓶颈,会造成流水线的“堵塞”和“断流”。这个时间一般 为一个时钟周期(拍)或一个机器周期;
• 2. 数据通路的时钟驱动策略 • 3. 整合数据通路以满足各项需求 • 4. 分析各条指令的实现方案以确定寄存器传输过程的控制逻辑 • 5. 整合控制逻辑
24
Computer Architecture Spring 2016
MIPS指令格式
• 所有MIPS指令的宽度都是32 bits. 有三种格式:
段空 号间
浮点加
定点乘
8
1 2 3 … … n-1 n 一 二 三 四
7
一二三四五
6
一二三四五六
5
1 2 3 … … n-1 n
4
1 2 3 … … n-1 n
3
1 2 3 … … n-1 n
2
1 2 3 … … n-1 n
1 1 2 3 … … n-1 n
一二三四五六七
时间
动态流水线 12
Computer Architecture Spring 2016
IN S1
S2
S3
S4
OUT
15
Computer Architecture Spring 2016
理想化的流水线
• Uniform subcomputations. 可以将总体计算任务划分为具有 均匀延迟的子任务。
• Identical computations. 同样的计算任务在流水线上反复执 行。
流水线的性能与成本
22
Computer Architecture Spring 2016
指令流水线
• 把指令的处理也转变为流水线化的计算过程。 • 相比算术流水线,指令流水线的实现与理想化假设相距甚远。
– 把指令处理划分为均衡的subcomputation比较困难 – 不同指令的subcomputation不尽相同,因此硬件需求也不一致 – 指令之间存在相关性,无法成为完全独立的计算过程
op | rs | rt | Imm16
= MEM[ PC ]
inst
Register Transfers
ADDU R[rd] <– R[rs] + R[rt];
PC <– PC + 4
SUBU R[rd] <– R[rs] – R[rt];
PC <– PC + 4
ORi
R[rt] <– R[rs] | zero_ext(Imm16);
else PC <– PC + 4
Computer Architecture Spring 2016
组合逻辑的表征
• 加法器
A 32 B 32
Adder
32 Sum Carry
• 多路选择 器
• 算术逻辑 运算单元
Select
A 32 B 32
MUX
32 Y
OP
A 32 B 32
ALU
Leabharlann Baidu
32 Result
4、流水线需要有“填充时间”(第一个任务流出结果所需的时间), 在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出 一个结果;
5、流水技术适合于大量重复的时序过程,只有输入端能连续地提供 任务,流水线的效率才能充分发挥。
8
Computer Architecture Spring 2016
29
Computer Architecture Spring 2016
存储单元:理想存储器
• 理想存储器
Write Enable Address
– 1个输入总线: Data In – 1个输出总线: Data Out • 访存操作
Data In
32 Clk
DataOut 32
– 根据Address 选择相应的数据字输出到Data Out
0 funct 6 bits
0 0
25
Computer Architecture Spring 2016
从指令逻辑映射到寄存器传输级(RTL)
• RTL描述了指令在硬件实现上的具体意义 • 所有行为都从指令获取开始
op | rs | rt | rd | shamt | funct = MEM[ PC ]
31
26
21
16
11
6
– R-type
op
6 bits
31
26
rs
5 bits 21
rt
5 bits 16
rd 5 bits
shamt 5 bits
– I-type
op
rs
rt
immediate
– J-type
6 bits
31
26
op
5 bits
5 bits
16 bits
target address
6 bits
26 bits
• 不同的域的定义:
– op: 指令操作码
– rs, rt, rd: 源操作数,目的操作数
– shamt: 移位量
– funct: 对应特定op指定更多的操作类型
– address / immediate: 地址偏移/立即数
– target address: 跳转指令的目的地址
Computer Architecture Spring 2016
输入
输入
求阶差
求阶差
对阶
对阶
相加
相加
规格化
规格化
相乘
单功累能加流水线
输出
输出
输入
流这
水些
没
有
实
际
操
作
的
节
拍
也
要
相乘
单功累能加流水线
输出
单功能流水线
多功能流水线(TI ASC)
10
Computer Architecture Spring 2016
它是由两个以上的处理机串行地对同一数据流进行处理,每
个处理机完成一项任务。
13
Computer Architecture Spring 2016
标量流水处理机和向量流水处理机
所谓标量流水处理机(scalar pipelines processor),是指 处理机不具有向量数据表示,仅对标量数据进行流水处理。
段空 号间
8 7 6
浮点加 1 2 3 … … n-1 n
定点乘 一
一二 一二三
5
1 2 3 … … n-1 n
4
1 2 3 … … n-1 n
3
1 2 3 … … n-1 n
2
1 2 3 … … n-1 n
1 1 2 3 … … n-1 n
一二三四
时间
静态流水线 11
Computer Architecture Spring 2016
Clk
• 有效 (1): 数据输出更新为输入值
Write Enable
Data In N
MUX
N
N
Data Out N
Clk
28
Computer Architecture Spring 2016
存储单元:寄存器堆
• 寄存器堆(Register File) 32个寄存器组成:
RW RA RB
– 2个32-bit 输出总线:
部件级、处理机级及处理机间流水线
所谓部件级流水线又叫运算操作流水线(Arithmetic pipelines),它是把处理机的算术逻辑部件分段,以便为各 种数据类型进行流水操作。
所谓处理机级流水线,又叫指令流水线(Instruction pipelines),它是把解释指令的过程按照流水方式处理。
所谓处理机间流水线,又叫宏流水线(Macro pipelines)。
所谓向量流水处理机( vector pipelines processor),是 指处理机具有向量数据表示,并通过向量指令对向量的各元 素进行处理。
14
Computer Architecture Spring 2016
线性流水线与非线性流水线
a) 线性流水线:流水过程中,从输入至输出每功能段仅 经过一次,不存在反馈。 b) 非线性流水线:存在反馈,某些流水功能段允许被通过 数次。
流水线技术的定义
所谓流水技术,是指将一个重复的时序过程,分解成为若 干个子过程,而每一个子过程都可有效地在其专用功能段上与 其他子过程同时执行。
描述流水线工作的时空图
空 间
工序4 工序3
工序2
工序1
t1 t2 t3 t4 t5 t6 t7
时间
7
Computer Architecture Spring 2016
– Write Enable = 1: 根据address 将Data In bus上的数据写入到 选择相应的数据字上。
• 时钟输入 (CLK)
– 只影响写操作 – 对于读操作,存储器像组合逻辑一样工作:
• Address valid => Data Out
30
Computer Architecture Spring 2016
– RW (number)选择相应的寄存器写入 busW (data) 上的数据, (Enable=1)
• 时钟输入 (CLK)
– 写操作由时钟所控制,必须由时钟边沿来驱动和同步
– 读操作不须等待时钟边沿,选择寄存器,立刻得到其输出值:
• RA or RB valid => busA or busB
算术流水线
18
Computer Architecture Spring 2016
算术流水线
19
Computer Architecture Spring 2016
算术流水线
20
Computer Architecture Spring 2016
算术流水线
21
Computer Architecture Spring 2016
流水线的分类
可按不同的观点进行分类: 1、单功能流水线和多功能流水线。(按功能) 2、静态流水线和动态流水线(按同一时间段的连接方式) 3、部件级、处理机级及处理机间流水线(按流水级别) 4、标量流水处理机和向量流水处理机(按数据表示) 5、线性流水线和非线性流水线(按是否有反馈)
9
1 输入 2 求阶差 3 对阶 4 相加 5 规格化 6 输出 7 8
2
Computer Architecture Spring 2016
流水线的基本概念
3
Computer Architecture Spring 2016
4
Computer Architecture Spring 2016
5
Computer Architecture Spring 2016
6
Computer Architecture Spring 2016
要设计指令流水线,首先要了解 指令集的RTL映射与设计
23
Computer Architecture Spring 2016
从指令集到处理器的实现
• 1. 分析指令集对数据通路的需求 – 从寄存器传输的角度解析指令的行为 – 数据通路包含了指令所定义寄存器对应的存储单元 – 数据通路必须支持各种寄存器传输
PC <– PC + 4
LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4
STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt]; PC <– PC + 4
BEQ
if ( R[rs] == R[rt] ) then PC <– PC + 4 + sign_ext(Imm16)] || 00 26
Computer Architecture Spring 2016
计算机体系结构
Lesson 3. 指令集的实现与流水线结构
讲课教师:韩军, 周晓方
复旦大学微电子学院
1
Computer Architecture Spring 2016
内容提要
1. 实现指令的基本数据通路
2. 指令处理过程的RTL描述 3. 流水线结构的作用及其实现 4. 流水线冲突及其解决方法 5. 中断、异常及其处理方法
27
Computer Architecture Spring 2016
时序逻辑的表征
• 寄存器
Write Enable
– 由 D Flip Flop构成
• N-bit 输入和输出
Data In
• 具有写有效信号(Write Enable) N
Data Out N
– Write Enable:
• 无效 (0): 数据输出不变
Write Enable 5 5 5
busA and busB
busA
– 1个 32-bit 输入总线: busW • 寄存器的选择:
busW
32 Clk
32 32-bit 32 Registers busB
32
– RA (number) 选择相应的寄存器输出数据到busA (data)
– RB (number) 选择相应的寄存器输出数据到busB (data)