指令集的实现与流水线结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)
相关文档
最新文档