5_RISC技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如: ①调整指令执行顺序
源程序: ADD R0, R1, R2 ADD R2, R3, R4 MOV R7, R8 源程序: ADD R1, R2, R3 ADD R3, R4, R5 MUL R6, R7, R3 MUL R3, R8, R9
优化后的指令顺序:
ADD R0, R1 , R2 MOV R7, R8 ADD R2, R3, R4
指令长度固定
指令长度无需译码, 简化了译码电路并节省了 长度译码时间; 指令长度设定为总线宽度, 保证取指令码一 个总线周期完成, 避免了多周期取指造成的 流水线阻塞;
指令字段位置固定
使得指令译码与取源操作数并行;
指令意义简单: 功能单一, 简化硬件逻辑
2. 减少寻址方式和指令数量 作为简化硬件逻辑的措施之一。 3. 流水线(或超级流水线) 尽量只使在单周期执行完成; RISC的设计思想更利于指令按流水线方式的 运行。
(2) 存数 fst.y freg , isrc1(isrc2) 完成: freg (isrc1+isrc2) freg为浮点寄存器; isrc1和isrc2与取数指令的规定相同。 浮点数传送支持32位、64位和128位; 后缀y指明数据传送宽度: .l 32位数据传送
.y .d 64位数据传送
(T1表示在上升沿, T1表示在下降沿)
(节拍T3等待加法器 完成加法操作)
综合简化后逻辑实现:
微命令序列
微命令发生器
(各种门电路构成)
运行状态
指 令 译 码
…...
时序
优点: 硬件实现, 速度快 缺点: 设计过程及电路复杂; 修改困难; 更新换代困难;
— 微程序设计
指令功能分解成微操作-微操作编码-存入微 程序ROM-微命令译码结合时序-完成功能 微指令 微地址 微地址 译码器
(一) RISC核心
1. 功能 指令读入、数据存取、以及除浮点运算外的其 它指令操作
2. 指令格式 32位定长指令; 指令中 操作码、源操作数、目标操作数 字段位 置固定 (使指令译码与取源操作数可以并行)。 3. 寄存器 32个32位寄存器 r31 ~ r0 存放操作数、运算结果、间址和变址等地址量
优化后的指令顺序: ADD R1, R2, R3 MUL R6, R7, R0 ADD R3, R4, R5 MUL R0, R8, R9
②指令顺序调整结合变量重命名
由于四条指令均与R3有关,仅通过调整顺 序难以优化。因此重新命名一个变量R0。
Intel 860处理器 (i860) 一、i860的组成
解决方法:硬件自动冻结周期或指令重调度 i860采用指令重调度
资源冲突 资源冲突的典型情况:对存储器的访问 如下图的指令流水线:
F D E W E W F D
F D
如果该阶段出现访存(如 ld/St指令), 则与第三条 指令的取指操作冲突。
E W
E W
F D
若访存, 与第四条指
令的的取指操作冲突。
指令Cache和数据Cache分离, 使取指和取数 相互独立, 如Pentium和i860均采用该结构。 或者: 同一Cache, 指令端口和数据端口分离, 可同时访问两个不同端口。
(二) 浮点部件
1. 组成 浮点控制器 浮点加法器 浮点乘法器 2. 寄存器 f31~f0 32个32位浮点寄存器
两个寄存器可在逻辑上构成一个64位寄存器;
4. 大容量高速缓存 节省的芯片面积有利于集成大容量高速缓存; 缓存更多的指令和数据,减少访存次数。
5. 大量寄存器 减少访存,提高执行速度;上下文切换尽可能 在寄存器中完成
6. 硬连控制(去掉微程序) 以简化的指令集为基础,提高指令速度。
7. 采用存取式体系结构(Load/Store结构) 仅专门的访存指令才允许访存。 避免执行周期访存造成的流水线阻塞。 比如指令: ADD CX, 20[BP][SI] 在RISC结构 是不允许的。 8. 优化编译技术 对编译器的要求较高。 在编译时, 要按照指令执行速度的快慢以及 CPU的流水线深度等合理调整机器代码的顺 序, 使CPU最大限度地让流水线并行执行。
.q 128位数据传送
例: fld.d 0(r3), f20 ; 64位数f20:f21 fld.q 0(r3), f20 ; 128位数f20:f21:22:f23
① ld.l 0(r14), r15
完成 (0 +r14)r15; 间接寻址
② ld.l 8(r14), r15 ③ ld.l r13(r14), r15
变址寻址 r0≡0, 直接寻址
④ ld.l 64(r0), r15
r0恒为0, 与执行的操作无关。作用如: subu r5, r4 r0; 产生比较指令 提供直接寻址 通过逻辑运算, 为某个寄存器赋0值 可以体现精简指令的特点。
F D E1 E2 E3 W
如何实现一条整数指令和一条浮点指令的并发?
汇编编程:应用设计者 高级语言:编译程序
二、i860指令系统例
两大类: 整数指令
整数和浮点数的存取指令 算术及逻辑运算指令 转移指令 整数寄存器与浮点寄存器间的数据传送指令
浮点指令
浮点数据加、减、比较等 浮点数乘、倒数、平方根等
(注: CISC结构同样存在资源冲突, 并出现流水线阻塞)
解决措施:
硬件自动冻结(阻塞)某一个周期 F D E W E W F D 假设第一条指令 的执行与第三条 指令的取指冲突。 E W
F D E W
F D F D F D F D E W E W E W F D E W
或者:
从结构设计上避免冲突
RISC微处理器技术
RISC技术概述
一、起源
CISC — Complex Instruction Set Computer RISC — Reduced Instruction Set Computer 指令集:控制器设计的基础
计算机工作过程:
各种信息在受控状态下的流动过程。 受控的体现:
时间的控制 时机的控制 方向的控制
利用指令64位的双端口指令Cache, 同时发出 两条指令。一条整数指令 一条浮点指令
RISC核心 浮点部件
整数Ins1 F D E W
浮点Ins1 F D E1 E2 E3 W
注: 浮点运算至少需要 三个执行周期
整数Ins2
浮点Ins2 整数Ins3 浮点Ins3
F D E W
F D E1 E2 E3 W F D E W
完成: R1+R2 R1 +R0CLK R0 +R0EN
ALU
+Lat1
锁存器1
锁存器2
+Lat2
Rn
将指令执行分为三个阶段: 取指(FET) 译码(DE) 执行(EXE)
① 在执行阶段所需微操作序列:
+R1EN +Lat1 +R2EN +Lat2 +R1CLK
② 结合时序
; R1内容输出到内部总线
结论: 整体性能有较大提高 RISC处理器的出现
说明: 复杂指令功能由软件实现与提高速度相矛盾? - 复杂指令使用频率较低; - 去掉微程序, 采用硬件控制, 提高了速度 - 简单指令有利于流水线执行 - 简化电路节省了芯片面积, 利于增加Cache容量
二、RISC处理器特征描述
1. 简单固定的指令格式
ADD MOV1 MOV2 JMP NT2 NT1: SUB ..... NT2: AND
调整后的顺序
JMP NT2 ADD MOV1 MOV2 NT1: SUB ..... NT2: AND
这一方法也称为指令重调度。
(3) 插入空操作指令(指令重调度)
ADD MOV1 MOV2 JMP NT2 NOP NOP NOP NT1: SUB ..... NT2: AND
(2) 存数指令 st.x isrc1, const(isrc2) 完成: isrc1 ( const+tisrc2)
其中: isrc1和isrc2为寄存器, const为16位立即数
例: st.l r1, 64(r2); r1( 64+r2)
2. 浮点数的存取
(1) 取数 fld.y isrc1(isrc2), fdest 完成: (isrc1+isrc2) fdest isrc1为16为立即数或整数寄存器; isrc2为整数寄存器; fdest为浮点寄存器。
可由硬件实现也可由
软件实现
i860采用通过系统软件的
指令重调度。
转移指令可能引起流水线阻
塞, 这种情况称为控制相关 (也称为指令相关)。
对条件转移指令: 采用分支预测或指令重调度 i860采用指令重调度
引发流水线阻塞的另一因素 数据相关 即: 当前指令等待前面指令的执行结果。
ADD AX, BX INC AX MOV CX, DX ... ADD AX, BX MOV CX, DX INC AX ...
(一) 整数指令
1. 整数的存取 (1) 取数指令 ld.x isrc1(isrc2), idest 其中: isrc2和idest为r31~r0之一 ; isrc1为16为立即数或r31~r0之一 ; 完成: (isrc1+isrc2) idest .b 取8位数据 指令后缀: .x .s 取16位数据 .l 取32位数据 取数指令例:
(1) 4K指令Cache (2) 8K数据Cache 地址总线:32位 数据总线:32位
(3) 总线控制部件 指令Cache可同时发 送两条指令, 一条发 (4) 存储管理部件 送到RISC核心, 另一 (5) 浮点控制部件 条发送到浮点部件. (6) 浮点加法及乘法部件 (7) 三维图形处理部件 (8) RISC核心
优点: 设计过程及电路相对简单; 采用微程序设 修改和更新换代更容易。 计的另一原因: 处理器与存储 缺点: 微命令实现, 速度较慢 器速度的矛盾
传统处理器设计的难题:
速ห้องสมุดไป่ตู้、复杂性、设计周期等矛盾
— 对指令系统进行的研究, 统计表明: 软件中大部分指令为简单指令(约80%), 复杂 指令只占少数 (约20%);
(如指令: ADC [变址寻址], 立即数 ;复杂指令)
软件中的简单指令约占总运行时间的20%, 复
杂指令约占总运行时间的80%;
造成控制电路复杂的主要原因是由于复杂指
令的存在;
— 结论及试验
从指令集中去掉复杂指令, 复杂指令功能由软 件实现. 可简化电路设计, 去掉微程序, 采用硬 连控制方法, 提高处理器速度。
; 锁存器1的打入脉冲 ; R2内容输出到内部总线 ; 锁存器2的打入脉冲 ; 相加结果打入R1
根据 取指(FET) — 译码(DE) — 执行(EXE)
FET
DE
EXE
T1 T2 T3 T4
.....
+R1EN = +ADD· EXE· T1 +Lat1 = +ADD· EXE· T1 +R2EN = +ADD· EXE· T2 +Lat2 = +ADD· EXE· T2 +R1CLK = +ADD· EXE· T4
4. 指令流水线 RISC核心采用4级指令流水线。 取指 译码 执行 写结果
5. 存取式体系结构 访存指令:Load/Store
* 流水线情况分析
前述的可能造成流水线阻塞的原因: 指令太长, 一个周期未能取出全部指令码; 指令功能复杂, 一个执行周期不能完成; 无条件转移指令; 条件转移指令, 预测错误。
四个寄存器可在逻辑上构成一个128位寄存器;
3. 浮点部件与RISC核心的并行 (1) 单指令模式 (SIM)
RISC核心与浮点部件按程序中指令流的顺序执 行。一次发出一条指令(整数指令或浮点指令)。 指令串行发出,但整数指令和浮点指令的执行 过程在时间上是可以重叠的。
(2) 双指令模式 (DIM)
表现形式 控制依据
操作应在什么时间进行并完成
操作什么时刻进行(定时) 信息流动的起点与终点
门电路的开和关信号、打入脉冲等。 执行的指令和机器的状态
指令功能分解结合时序完成上述控制
— 组合逻辑设计 指令功能分解成微操作-结合时序信号- 逻辑表达式综合并化简-逻辑电路实现 例:
(1) 执行指令: ADD R1, R2 硬件模型
在RISC结构中 条件转移指令, 预测错误。 转移指令 无条件转移指令; 无条件转移指令:
ADD MOV1
流水线情况:
F D E W E W E W E W F D F D F D
MOV2
JMP NT2 NT1: SUB ..... NT2: AND
阻塞三个周期
AND
解决措施:
(1) 硬件自动冻结流水线周期 (2) 延迟转移技术