第五章 控制单元.

Slides:



Advertisements
Similar presentations
Welcome to the world of Computer Organization 计算机组成原理
Advertisements

程序的执行 程序执行和指令执行概述 数据通路基本结构和工作原理 流水线方式下指令的执行
第 2 章 中央處理單元.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
第五章 中央处理器 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术
信息技术:硬件、软件、网络、数据库 计算机技术、多媒体技术、压缩技术...
2017年3月5日 单片机原理与应用 背景知识调查.
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
第3章 流水线技术.
信息科学与工程学院计算机科学系 2006年9月—2007年1月
计算机组成原理 东南大学计算机学院 任国林
第三章 计算机核心部件及其 工作原理.
第六章 中央处理器 中央处理器,简称CPU,是整个计算机的核心,它包括运算器和控制器。
计算机组成原理 第二十一讲 计算机科学与技术学院 舒燕君.
第五章 中央处理单元.
1.1 计算机系统简介 1.2 计算机的基本组成 1.3 计算机硬件的主要技术指标 1.4 本书结构.
计算机基础知识 丁家营镇九年制学校 徐中先.
CH.2 Introduction to Microprocessor-Based Control
周学海 , 中国科学技术大学 2018/9/20 现代微处理器体系结构 周学海 , 中国科学技术大学 2018/9/20 计算机体系结构.
周学海 , 中国科学技术大学 2018/9/21 计算机体系结构 周学海 , 中国科学技术大学.
第 2 章 中央處理單元.
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
高等计算机系统结构 VLIW/EPIC 基于静态调度的ILP (第五讲) 程 旭 2011年4月16日.
Quiz 3 假设各种分支占所有指令数的百分比如下表所示:
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
周学海 中国科学技术大学 2018/11/16 计算机体系结构 周学海 中国科学技术大学.
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
5 Computer Organization (計算機組織).
第2章 16位和32位微处理器 位微处理器8086/ 位微处理器80386
Lecture on High Performance Processor Architecture (CS05162)
The Processor: Datapath and Control
第三章 流水线技术.
計算機結構 – 概論 陳鍾誠 於金門大學.
第4章 指令级并行 曲冠南
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院.
一个非常简单的CPU的设计 1、组合逻辑控制器 2、微程序控制器.
8.1 CPU 的结构 8.3 指令流水 8.2 指令周期 8.4 中断系统.
computer organization principle
本章主要内容 CPU的功能和组成 控制器控制原理 指令周期(★★★) 时序产生器和控制方式 硬布线控制器 微程序控制器(★★★)
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
computer organization principle
第5章 计算机、微型计算机的组成及 工作过程.
逆向工程-汇编语言
CPU结构和功能.
版权所有,引用请注明出处 第六章、中央控制器 原著 谭志虎 主讲(改编) 蒋文斌.
第3章 流水线技术 曲冠南
计算机组成与系统结构 陈泽宇 副教授.
Instructions: Language of the Machine
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
Architecture and Systems 研究群 報 告 人:單智君 陳昌居 鍾崇斌 中華民國95年11月30日
计算机系统结构(2012年春) ----存储层次: Cache基本概念
计算机组成原理 课程设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
信号量(Semaphore).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
College of Computer Science & Technology
第4章 指令级并行 授课教师:车喜龙
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
清华大学计算机科学与技术系高性能计算研究所 郑纬民 教授 2005年5月
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
Presentation transcript:

第五章 控制单元

5.1 基本概念 CPU的基本功能 指令控制 操作控制 数据运算 异常和中断处理 CPU的扩展功能 存储管理 数据缓存 总线管理 功耗管理

5.1 基本概念 CPU的基本构成 寄存器的类型 数据通路 控制器,运算器,寄存器,[cache], [MMU], [外设接口] 指令寄存器(IR) 程序计数器(PC) 数据寄存器(DR) 地址寄存器(AR) 状态寄存器(SR) 数据通路 数据总线(单总线,双总线,多总线) 专用通路(如MIPS)

总线结构的CPU 控制信号: IRin: IR的输入控制 IRout: IR的输出控制 PCin: PC的输入控制 PCout: PC的输出控制 PC+1: PC计数更新控制 R0out:R1的输出控制 R0in: R1的输入控制 … Yin: Y的输入控制 Zin: Z的输入控制 Zout: Z的输出控制 ADD: ALU加法操作控制

专用通路结构的CPU

专用通路结构的CPU 控制信号: MemRead 存储器读 MemWrite 存储器写 RegWrite 数据寄存器写 ALUOp 运算操作码 ALUSrc ALU数据选择 PCWrite PC写 PCSource PC输入选择 RegWrite 数据寄存器写 MemtoReg写数据选择 RegDst 写寄存器选择 Irwrite 指令寄存器 Jump 选择转移地址

5.2 指令的执行过程 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (1) 取指令。 IR = Memory[PC] NPC = PC + 4

5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (2) 指令译码及读取操作数。 A = R[IR[25:21]] B = R[IR[20:16]] PC = NPC

5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (3) 执行。 ALUoutput = A + B

5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (4) 写回。 R[IR[15:11]] = ALUoutput

5.2.1 运算指令周期 单总线结构: 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC PC MAR

5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 指令译码器 IR MDR

5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y R1 Y

5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y (6) R2 + Y→Z R2 Z

5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y (6) R2 + Y→Z (7) Z→R3 R3

5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (1) 取指令。 IR = Memory[PC] NPC = PC+4

5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (2) 指令译码。 A = R[IR[25:21]] C = Sign-extend(IR[15:0]) PC = NPC

5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (3) 计算地址。 ALUoutput = A + C

5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (4) 访存。 Memory-data = Memory[ALUoutput]

5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (5) 写回。 R[IR[20:16]] = Memory-data

5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (1) 取指。 IR = Memory[PC] NPC = PC + 4

5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (2) 译码。 A = R[IR[25:21]] PC = NPC B = R[IR[20:16]] C = Sign-extend(IR[15:0])

5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (3) 计算地址 ALUoutput = A + C

5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (4) 访存 Memory[ALUoutput] = B

5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC

5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR

5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR,读存储器

5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR,读存储器 (6) DBUS→MDR (7) MDR→R1

5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC

5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR

5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR

5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR (6) R1→MDR,写存储器

5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (1) 取指 IR = Memory[PC] NPC = PC+4

5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (2)译码并执行 PC = (IR[25:0] << 2) | NPC[31:28]

5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC

5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR

5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) PC→Y

5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) PC→Y (6) Y + IR(地址段)→Z

5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) PC→Y (6) Y + IR(地址段)→Z (7) Z→PC

5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (1) 取指 IR = Memory[PC] NPC = PC + 4

5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (2) 译码 A = R[IR[25:21]] B = R[IR[20:16]] C = Sign-extend(IR[15:0])

5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (3) 执行 if(A == B) PC = NPC + (C << 2) Else PC = NPC

5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC

5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR

5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) if(!Z) PC→Y; else goto END

5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) if(!Z) PC→Y; else goto END (6) Y + IR(地址段)→Z

5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) if(!Z) PC→Y; else goto END (6) Y + IR(地址段)→Z (7) Z→PC

问题 单总线结构的计算机中,如果指令的长度是2个字,那么这条指令的读取过程是什么? 单总线结构的计算机中,如果指令的一个操作数是寄存器间接寻址,那么这个操作数的读取过程是什么?

习题 5.4 5.5

5.3 控制器的基本结构 5.3.1 硬连线控制器 5.3.2 微程序控制器 5.3.3 阵列逻辑控制器

5.3.1 硬连线控制器 1. 指令周期流程图

例5-10 在单总线的CPU结构中,如果加法指令中的第一个地址码有寄存器寻址和寄存器间接寻址两种寻址方式,并在指令中用代码表示指令的寻址方式,即该指令可实现如下功能: (1) ADD R1,R2 ; (2) ADD (R1),R2 ; 试画出执行这条指令的流程图。

例5-11 对于单总线CPU结构,设计一个可实现下列指令操作的硬连线控制器,试画出控制器流程图。 ADD R3,R1,R2 LOAD mem,R1 STORE mem,R1 JMP #A

控制信号:如ADD R3, R1, R2 T1: PCout, MemRead, PC+1, MARin ;PCMAR, PC+1PC T2: MDRout, IRin ;MDRIR addT3: R1out, Yin ;R1Y addT4: R2out, ADD, Zin ;R2+YZ addT5: Zout, R3in ;ZR3

硬连线控制器框图

环形脉冲发生器

硬连线控制器电路

硬连线控制器 条件码如算术运算的异常、内部中断等。 编码器电路的一般逻辑表达形式是: Ci = T1*(INS1 + INS2 + …) + T2*(INS1 + INS2 + …) + … i=1, 2, 3, …

例:某计算机中包含2条指令: ADD指令每个时钟周期内的控制信号为: T1: PCout, MARin, PC+1, Read ;PCMAR, PC+1, read T2: MDRout, IRin ;MDRIR T3: R1out, Yin ;R1Y T4: R2out, Zin, Add ;R2+YZ T5: Zout, R3in ;ZR3 JMP指令中各时钟周期的控制信号为: T1: PCout, MARin, PC+1, Read ; PCMAR, PC+1, read T3: PCout, Yin ;PCY T4: IRout, Add, Zin ;IR+YZ T5: Zout, PCin ;ZPC

解:控制器的逻辑表达式如下 PC+1 = T1 PCin = T5*JMP PCout = T1 + T3*JMP Yin = T3*(ADD + JMP) Add = T4*(ADD + JMP) Zin = T4*(ADD + JMP) Zout = T5*(ADD + JMP) END = T5*(ADD + JMP) ...

指令周期的确定 固定时钟信号环形脉冲发生器: ——指令执行的时钟数固定。 可变长度时钟信号环形脉冲发生器: ——指令执行的时钟数不固定。 实现方法:用END信号,如 END = T5*ADD + T3*CLA +

硬连线控制器电路

硬连线控制电路的设计 习题: 5.9 (1) 画出控制器逻辑流程图 根据指令功能确定每一条指令所需的机器周期以及每一周期所完成的操作 (2) 列出各指令的各操作过程所需的控制信号 (3) 写出每个控制信号的逻辑表达式 (4) 画出控制器逻辑框图 习题: 5.9

5.3.2 微程序控制器 1. 微程序和微指令 基本概念:控制字,微指令,微程序,微操作,控制存储器,微地址 微程序控制方法:把指令执行所需要的所有控制信号存放在控制存储器中,需要时从这个存储器中读取。 微指令的构成:操作控制部分,顺序控制部分 微程序控制的特点:灵活性好,速度慢

2. 微程序控制器原理

3. 微指令编码 1. 微指令编码 控制字编码 相容性和相斥性 (1) 直接表示法 (2) 编码表示法 (3) 混合表示法

4. 微地址的形成方法 计数器方式 增量方式 用mPC

4. 微地址的形成方法 (2) 断定方式

4. 微地址的形成方法 (3) 结合方式

例5-13 对于例5-11中的指令,试设计一个采用若干片8位ROM芯片的水平型直接编码的微程序控制器。要求画出微程序控制器的结构图。假定微地址的生成采用增量与断定结合的方式。 微指令的控制字为18位 一共有12条微指令 微地址(BAF字段)为4位 微指令的字长为18+4+1=23位

多路分支的实现 用多个二叉分支实现 用微地址编码器 直接用分支条件构成分叉地址 根据不同的分支条件生成不同的分叉地址 使得微指令中不同的分支微地址中有若干位与条件代码相同,其余位都一样 可免去微地址编码电路

多路分支的实现 例. 试为各微指令分配适当的地址,并给出每条微指令的转移地址字段(即下址字段)BAF和实现“位选择”功能的转移控制字段BCF。

多路分支的实现 B的两个后继状态C和E的微地址只有1位不同,这一位可以根据转移条件IR3来设置。

多路分支的实现 微指令的BCF中用最低位表示是否选择IR3的值与BAF字段的其他位一起构成微地址。

多路分支的实现 微地址形成的原理

问题 如果微程序流程中有一个四路分支,如何生成四个微地址? 如果微程序流程中有两个多路分支,如何生成微地址?

5. 微指令格式分类 (1) 水平型 并行操作能力强,灵活性强;执行指令的时间较短;微指令比较长,但微程序比较短;硬件密切相关,微程序设计比较困难。 (2) 垂直型 每条微指令只表示一个微操作;需要对微操作码和部件号译码;微指令短,微程序长。 可以用助记符表示,例: MOV MDR MAR 虚拟机 仿真 指令模拟 毫微程序

微程序控制器的设计步骤 习题: 5.10 5.13 画出控制器逻辑流程图 列出各指令的各操作过程所需的控制信号 定义微指令中控制字的格式 写出每条微指令的控制字 安排微指令的存储地址 确定每条微指令的顺序控制字段(BCF、BAF) 确定微指令多路分支方式 画出控制器逻辑框图 习题: 5.10 5.13

5.3.3 阵列逻辑控制器 基本设计方法 画出控制电路对每条指令进行控制的状态转换图 指出每个状态下的控制信号 通过可编程逻辑器件来实现控制器电路

例:专用通路结构的指令流程 第一级:取指 IR = Mem[PC] (S0) PC = PC + 4 (S0) 第二级:指令译码及读取寄存器 A = R[IR[25:21]] (S1) B = R[IR[20:16]] (S1) Target = PC + (Sign-extend(IR[15:0] << 2) (S1) 第三级:执行,计算存储器地址(或转移完成) 访存:ALUoutput = A + Sign-extend(IR[15:0]) (S2) 运算:ALUoutput = A op B (S6) 转移:if(A op B) PC = Target (S8) 第四级:访存(或运算完成) 访存(读):Memory-data = Memory[ALUoutput] (S3) 访存(写):Memory[ALUoutput] = B (S5) 运算:R[IR[15:11]] = ALUoutput (S7) 第五级:写回 访存(读):R[IR[20:16]] = Memory-data (S4)

例:专用通路结构的指令流程

例:专用通路结构的指令流程 各个控制状态下的控制信号: S0: IRWrite=1; PCWrite=1; S1: - S2: ALUSrc=1; ALUOp=00 (加); S3: MemRead; S4: RegWrite; S5: MemWrite; S6: ALUSrc=0; ALUOp=op; S7: RegDst=1; RegWrite=1; MemtoReg=0; S8: ALUOp=op; PCWrite=1; PCSrc=A op B; S9: Jump=1;

异常事件的处理 异常事件的检测 向处理异常事件的程序的转移机制 保存产生异常原因的信息 对异常的处理 操作系统

异常事件的处理 S10: EPCwrite=1;CauseWrite=1;PCWrite=1;

5.4 指令流水技术 流水工作方式:将一个计算任务细分成若干个子任务,每个子任务由专门的部件处理,多个计算任务依次进行并行处理。 流水周期

退耦流水线

流水线的性能 吞吐率 单位时间内流水线能处理的任务数量 最大吞吐率与实际吞吐率 加速比 流水方式的工作速度与等效的顺序工作方式时间的比值

时空图

基本指令流水线

流水方式与非流水方式的比较 lw $1,100($2) sw $4,100($5) add $7,$8,$9 例5-17 假定将CPU分成上述5个阶段,存储器访问需要2ns时间,寄存器操作需要1ns,ALU运算时间为2ns,求流水方式和非流水方式下执行以下4条指令所需的时间。 lw $1,100($2) sw $4,100($5) add $7,$8,$9 beq $10,$11,3000 IF Id Ex M W

答: 在非流水的情况下,每个步骤所需的时间: 在流水的情况下,流水周期定为2ns,指令执行时间为10ns。

指令流水线的时空图

指令的流水执行的要求 1. 指令长度应当尽量相同 2. 指令格式应当简单 3. 限制访存操作 4. 尽量使操作数在存储器中对齐存储

指令流水线的相关性 1. 资源相关(结构相关) 2. 数据相关 3. 控制相关。 流水执行的多条指令同时使用同一个部件 反相关 指令流水线的相关性 名字相关 1. 资源相关(结构相关) 流水执行的多条指令同时使用同一个部件 2. 数据相关 流水执行的多条指令访问相同的数据 RAW、WAR、WAW 3. 控制相关。 转移指令引起的相关 输出相关 hazard 险象 真相关

指令流水线的数据相关

消除数据相关影响的方法 停顿 编译检测 相关专用通路

解决数据相关性的方法 ——流水线的停顿

消除数据相关性影响方法 ——编译的方法

解决数据相关性的方法 ——相关专用通道 IF Id Ex M W Data forwarding

解决数据相关性的方法 ——相关专用通道 当指令只需要一个执行周期时RAW相关可以不影响流水 可以将load指令看成需要2个执行周期

2. 指令流水线的控制相关 转移延迟槽

改进转移指令执行性能的方式 ——将转移指令的执行在流水线中提前进行 问题:程序逻辑性的破坏 指令流水线的问题:指令流水线的中断

3. 指令流水线的资源相关 Addd: 双精度加法指令 F2: 浮点数寄存器

典型指令流水线的特点 流水线分为IF、ID、EX、MEM、WB五个等长的时间阶段 转移指令在第二个阶段被识别 没有相关专用通路 从而可确定如何取下一条指令 没有相关专用通路 一个时钟周期内只能启动执行一条指令 一个时钟周期内只能写回一条指令 读操作数从指令译码时开始 读到为止 习题:5.16

5.4.2 指令的调度 静态指令调度 相关性? ——通过编译程序调整指令的顺序 例: for (i=1; i<=1000; i=i+1) x[i] = x[i] + s; 编译后变成: loop: LD F0, 0(R1); F0=array element ADDD F4,F0,F2; add scalar in F2 SD 0(R1),F4; store result SUBI R1,R1,8; decrement pointer 8 bytes BNEZ R1,loop; branch if R1!=zero 相关性?

执行时的情况 “执行” 的含义 时空图? 假定LD指令的执行需2拍,ADDD执行需3拍,有一个转移延迟槽,有相关专用通路 。 loop: LD F0, 0(R1) 1 stall 2 ADDD F4,F0,F2 3 stall 4 stall 5 SD 0(R1),F4 6 SUBI R1,R1,8 7 BNEZ R1,loop 8 stall 9 “执行” 的含义 时空图?

指令调度后的执行情况 loop: LD F0, 0(R1) stall ADDD F4,F0,F2 SUBI R1,R1,8 BNEZ R1,loop SD 8(R1),F4 执行时间:6个时钟周期。 时空图?

指令级并行性的局限性 基本块太小 循环级并行性 循环迭代之间的并行性 开发循环级并行性的方法 循环展开 指令调度 限制了指令调度的范围

循环展开 ——将原来几个循环迭代的指令代码合并成一个循环迭代 loop: LD F0, 0(R1) 2 ADDD F4,F0,F2 3 SD 0(R1),F4 1 LD F6,-8(R1) 2 ADDD F8,F6,F2 3 SD -8(R1),F8 1 LD F10,-16(R1) 2 ADDD F12,F10,F2 3 SD -16(R1),F12 1 LD F14,-24(R1) 2 ADDD F16,F14,F2 3 SD -24(R1),F16 1 SUBI R1,R1,#32 1 BNEZ R1,loop 2 未调度时,执行时间为27个周期,平均每个迭代6.8个周期。

调度后 执行时间为14个周期,平均每个迭代3.5个周期。 loop: LD F0, 0(R1) LD F6,-8(R1) ADDD F4,F0,F2 ADDD F8,F6,F2 ADDD F12,F10,F2 ADDD F16,F14,F2 SD 0(R1),F4 SD -8(R1),F8 SD -16(R1),F12 SUBI R1,R1,#32 BNEZ R1,loop SD 8(R1),F16 执行时间为14个周期,平均每个迭代3.5个周期。

循环展开的方法 检查循环迭代之间是否相关 确定指令的移动是合法的 使用不同的寄存器 消除多余的循环计数和条件转移 分析访存指令 调度指令代码 不相关时才进行循环展开 确定指令的移动是合法的 保证指令移动后程序的正确性,并调整指令的偏移量 使用不同的寄存器 避免因采用相同寄存器而产生的不必要的相关性 消除多余的循环计数和条件转移 分析访存指令 确定它们不对相同地址的存储单元进行访问 调度指令代码 保持原始代码中产生相同结果所必须的相关性

指令间的相关性 数据相关 名字相关 控制相关 真相关 RAW 具有传递性 反相关(WAR) 输出相关(WAW) 决定了转移指令与其它指令之间的执行顺序 指令i 指令k 指令j

解决名字相关的方法 寄存器更名 Register rename loop: LD F0, 0(R1) ADDD F4,F0,F2 SD 0(R1),F4 LD F6,-8(R1) ADDD F8,F6,F2 SD -8(R1),F8 LD F10,-16(R1) ADDD F12,F10,F2 SD -16(R1),F12 LD F14,-24(R1) ADDD F16,F14,F2 SD -24(R1),F16 SUBI R1,R1,#32 BNEZ R1,loop

2. 动态指令调度 动态调度 基本思想 有序指令启动的问题 第三条指令不能提前启动 用硬件调度 无序执行 打破指令执行的顺序限制 DIVD F0,F2,F4 ADDD F10,F0,F8 SUBD F12,F8,F14 第三条指令不能提前启动

退偶结构——简单的无序执行 例:采用专用的load部件和store部件,使得访存操作可以不受运算操作的影响。

退耦结构指令流水线的特点 简单的无序执行机制 指令预取 功能部件之间可无序执行 功能部件之内有序执行 可以提高程序执行速度

无序指令启动的方法 记分牌方法 记分牌方法 启动规则 构成 读操作数规则 四个执行阶段 写结果规则 无结构冲突 (1) 指令状态表 (2) 功能部件状态表 (3) 寄存器结果状态表 四个执行阶段 启动 读操作数 执行 写结果 记分牌方法 启动规则 无结构冲突 没有WAW相关 读操作数规则 操作数具备 消除RAW相关 写结果规则 前面指令已读取操作数或者无数据相关 消除WAR相关

Tomasulo调度法 特点 寄存器更名 分布式保存站 写回控制 命令队列 消除名字相关 并行调度消除调度瓶颈 写写相关时最后一条指令写入 使取指令与启动执行退耦

Tomasulo调度法 LD F2,45(R3) LD F6,34(R2) SUBD F8, F6, F2 MULTD F0, F2, F4 1 1100 1 0010 LD F2,45(R3) LD F6,34(R2) SUBD F8, F6, F2 MULTD F0, F2, F4 LD F2, 45(R3) 1 0001 LD F6,34(R2) S 001 0010 M 0010 F4

Tomasulo调度法

Tomasulo调度法执行步骤 发送 执行 写结果 如果浮点运算部件中有一个空的保存站就发送该指令到保存站中。 如果操作数在寄存器中就将它们送到保存站。 如果没有空的保存站或缓存部件,则指令暂等。 执行 保存站中的指令在具备所需的操作数时就进入执行部件。 写结果 当结果形成时,通过CDB总线写到寄存器与等待此结果的所有保存站。

问题一 Tomasulo法如何实现寄存器更名?

问题二 Tomasulo法如何进行写回控制? 例 add $1, $2, $3 sub $4, $1, $5 lw $1, 0($6)

Tomasulo法的优缺点 优点: 缺点 习题: 5.17 分散了险象检测逻辑 消除了因WAW与WAR险象引起的暂停。 性能高 硬件量大 CDB单总线结构限制了性能 习题: 5.17 5.18

补充例题 指出下列指令序列中的数据相关性。对于5级指令流水线,允许不相关指令提前执行,指出这些指令的执行顺序: Load R1,100(R0) Add R1,R1,R0 Loadi R2, 1 Store R1,100(R0) Store R2,200(R0) Add R3,R3,R4

答 指令1与指令2间存在关于R1的RAW和WAW相关 指令2与指令4间存在关于R1的RAW相关 指令3与指令5间存在关于R2的RAW相关

5.3 分支预测 静态 永远不转移 永远转移 后向转移 动态 1位 2位 多位(1级,2级)

1位动态——根据上次转移情况预测下次情况

2位动态——根据上两次转移情况预测下次 预测状态机 00: strongly not taken 01: weakly not taken 10: weakly taken 11: strongly taken

2级预测:根据多次转移情况选择预测状态 (1,1)预测器 2级预测:根据多次转移情况选择预测状态 (1,1)预测器

(2,2)预测器

(4,2)预测器

全局预测与局部预测 分支的历史 全局预测器The global Predictor 局部预测器The local predictor 全局分支历史Global branch history 所有转移指令的历史 局部分支历史Local branch history 每一条转移指令的历史 全局预测器The global Predictor Indexed only by history 局部预测器The local predictor Indexed by address and history

竞争预测器 竞争预测器Tournament Predictors 使用多个预测器 加上一个预测器的预测器 全局预测器与局部预测器 对不同的分支选择不同的预测器 通常选择全局或者局部预测器 采用2位饱和计数器 预测准确时加1 Preditor Global Preditor Local Preditor

转移指令的转移模式 例: for(i=1; i<=4; i++) {} 转移的执行模式是(1110)n 预测值 转移历史 预测值 110 1 101 011

快速指令预取 分支目标缓存 分支指令缓存 返回地址预测器 Stores the predicted PC after a branch 快速形成分支目标地址 分支指令缓存 Stores one or more target instructions 快速形成分支目标指令 速度更快 可跨越多个分支 返回地址预测器 用于预测间接转移 动态转移地址 用一个堆栈记录返回地址

分支目标缓存 目标缓存 分支目标地址 预测PC 分支指令地址标记 预测状态位 预测状态的编码

5.4.4 多重指令启动 目标 方法 在一个时钟周期内能够启动多条指令 动态多重指令启动 静态多重指令启动 超标量 超流水 超长指令字VLIW EPIC

多重指令启动

超标量处理器结构 Tomasulo动态调度方法的推广

超标量处理器结构的例子

超标量的退偶结构 例:假设可同时启动一条浮点指令和一条整型指令,假设忽略转移延迟

时空图表示

例5-26 按序启动按序完成的超标量指令流水线中,分为译码、执行和写回三个阶段。有相关专用通道。假定有6条指令(I1, I2, I3, I4, I5, I6),其中 I1需要2个执行周期; I3和I4使用相同的功能部件; I5取决于I4产生的结果; I5和I6使用相同的功能部件。

超长指令字 特点 典型应用 指令中包含多个部件的操作字段 操作槽位slot 编译在每个槽位中安排一个功能部件的操作 固定数量 操作槽位slot 编译在每个槽位中安排一个功能部件的操作 静态调度 槽位中不能安排操作时用NOP 典型应用 DSP 根据典型循环中的指令配置功能部件和指令格式 单指令循环体

超长指令字 …… …… Issue logic Function Unit Instruction Buffer Function Unit

超长指令字的例子

VLIW计算机的特点 单一控制流 指令被划分成许多字段 大量的功能部件 程序中固有的指令级并行性的限制 硬件实现的复杂性 机器中只有一个程序计数器 每个时钟周期启动一条VLIW指令 指令被划分成许多字段 每段控制一个特定的功能部件 大量的功能部件 编译器考虑数据相关和资源冲突 控制硬件比较简单 程序中固有的指令级并行性的限制 硬件实现的复杂性 要求存储器带宽的配合 技术上的和逻辑上的问题 空闲的功能部件和无用的代码字段 二进制代码的兼容性

EPIC Explicit Parallelism Instruction Computer 指令束bundle 指令组group 模板 包含3条41位的指令和5位模板 固定格式以便于指令译码 指令组group 可并行执行的指令构成 包含的指令数量不限 模板 指定指令的执行单元类型 指定指令组的边界 Instruction slot 2 Instruction slot 1 Instruction slot 0 template

推测执行 指令的推测执行 指令提交 重排序缓存ROB 精确的中断 动态分支预测以选择执行的指令 推测的指令执行状态以允许指令的执行在控制相关解决之前进行 动态调度以处理不同基本块组合的调度 指令提交 重排序缓存ROB 一个循环队列 指令启动时入队 代替写缓存 精确的中断

不同启动方式和提交方式的比较 执行和写回方式 有序执行 操作数的读取 有序执行有序写回 无序执行有序写回 无序执行无序写回 有序地启动指令 有序地完成执行 操作数的读取 从指令译码时开始 持续到执行前 读到为止

例5-12 指令的执行分为取指IF、译码ID、执行EX和写回WB四个阶段,乘法器是一个六级流水部件,加法器是一个两级流水部件,运算功能部件的输出可通过结果总线直接送入所有运算功能部件的输入端。对于以下指令序列: mult r3, r1, r4 /* s1 */ add r4, r1, r5 /* s2 */ mult r6, r4, r8 /* s3 */ 画出以下情况下指令执行的时空图并指出所需的执行时间: (1) 无序执行无序写回 (2) 有序执行有序写回 (3) 无序执行有序提交,即采用推测执行方式

答: (1) 指令执行的时空图: 共需12周期

答: (2) 指令执行的时空图: 共需16周期

答: (3) 指令执行的时空图: 共需12周期 习题: 5.20 5.21 5.23

多线程处理器 进程 线程 资源占有的单位 运算的单位 进程中的一个对象 main() 状态 … Code segment 包含指令计数器PC的值 用户态的堆栈和系统态的堆栈。 寄存器 存储区域 Stack thread main() … thread Code segment Data segment

多线程处理器分类 串行多线程系统结构 并行多线程系统结构PMA 处理器在多个线程之间来回切换 难以充分利用处理器资源 时间片多线程(time-slice multithreading) 事件切换多线程(switch-on-event multithreading) 难以充分利用处理器资源 并行多线程系统结构PMA parallel multithreaded architecture 多个线程的指令同时执行,构成多个逻辑处理器

串行多线程系统结构 线程轮流执行 线程停顿时进行切换 访存、同步操作、I/O 线程1 执行 停顿 执行 线程2 停顿 执行 停顿 线程3

PMA结构 同时启动来自不同线程的指令 同时从多个线程中取出多条指令 同时进行指令译码和调度 同时在执行部件中执行

PMA的特点 充分利用处理器的计算资源 加快进程和线程切换的速度 访存局部性受到影响 指令预取准确性下降 PMA不用中断方式切换进程和线程 采用分离的数据cache 指令预取准确性下降 采用分离的指令cache和预取

PMA结构

5.5 CPU的历史与发展 5.5.1 Intel微处理器系列 P6 Microarchitecture NetBurst Microarchitecture NetBurst with Hyperthreading Core Microarchitecture Core Duo

P6 Microarchitecture 微操作 寄存器更名 重排序缓存 14级指令流水线 uop的队列使前端与无序执行流水线之间退耦 保持了芯片的兼容性 寄存器更名 将IA-32寄存器映像为内部寄存器动态执行技术 分支预测 推测执行和数据流分析 重排序缓存 构成一个较大的指令窗口 称为指令库 14级指令流水线

P6 Microarchitecture

P6 based CPU Pentium Pro Pentium II Pentium II Xeon Pentium II Celeron With MMX technology 256KB/512KB/1MB L2 cache Pentium II Xeon 2MB L2 full clock speed cache Pentium II Celeron 128KB L2 cache Pentium III Stream SIMD Extensions Pentium III Xeon

NetBurst Microarchitecture Dynamic execution 3 instructions per cycle Max 31 Stage Pipeline Hyper-pipeline with superscalar issue Data flow analysis with enhanced branch prediction Speculated deep out-of-order execution Trace Cache for mOPs SSE2 Stream SIMD Enhancement Floating point data packaging and processing 128 bit operation in two clock cycles Support for Hyper-Threading Technology

NetBurst Microarchitecture

NetBurst Based CPU The Intel Pentium 4 Processor Intel Xeon Processor Stream SIMD Extension 2 (SSE2) Support Hyper-Threading technology Intel Xeon Processor For use in server and high-performance workstations Intel Pentium M Processor High performance, Low power core Intel Pentium D Dual-Core Speed-step technology Intel Core Duo/Solo (YoNah) Dual Pentium M Core with smart shared cache

Intel超线程技术 Issue slots cycles

Intel超线程技术 在单个处理器上同时执行多线程而不需要切换的技术 每个逻辑处理器有一套状态 处理器的状态包括通用寄存器、控制寄存器、先进的可编程中断控制器(APIC)寄存器和一些及其状态寄存器 L1 cache(TC)中存储解码的指令(uop) 两个逻辑处理器在每个周期都对TC的访问进行裁决 分离的uop的队列 无序执行引擎包括分配、寄存器更名、调度和执行功能 分离的重排序缓存 回退逻辑轮流为两个逻辑处理器进行回退操作 HALT指令将处理器从MT模式转换到ST1或ST1模式

Core Microarchitecture Wide dynamic execution 4 instructions per cycle 14 stage pipelining Data flow analysis Speculated out-of-order execution Intelligent power capability Enhanced Speed-step 4MB on-chip cache Advanced Smart Cache Smart Memory Access With read/write scheduling and buffering SSE3 128 bit operation in one clock cycle Advanced Digital Media Boost

Core Microarchitecture 128 Entry ITLB 32KB I-cache Shared Bus Interface Unit Instruction Fetch Unit X86 Instruction Pre-decode Fetch buffer Complex decoder Complex decoder Complex decoder Complex decoder 4 MB shared cache Complex decoder 4 mops 1 mops 1 mops 1 mops 7-Entry mop buffer 4 mops Register Alias Table and Allocator 4 mops 4 mops 96-Entry Reorder Buffer (ROB) Retirement Register File 4 mops 32-Entry Reservation Station ALU . 128 Bit SSE ALU Shift 128 Bit SSE ALU Shift 128 Bit SSE Store Data Store Addr Load Addr Memory reorder buffer (MOB) 128 Bit FADD 128 Bit FMUL 256 128 32KB dual ported D-cache 256 Entry DTLB

Core Based CPU Core 2 Duo Core 2 Quad

5.5.2 PowerPC处理器 603e: 整数单元(IU) 访存单元(LSU) 系统寄存器单元(SRU) 写回单元 指令单元 指令和数据cache 存储管理部件MMU。

5.5.3 Alpha处理器 行预测和组预测: 10位分支历史模式,据此选择1024个预测状态机中的一个 每个周期最多可启动6条指令:4条整型指令和2条浮点指令。 寄存器组分成两部分: 各包含80个寄存器,相互重复。

5.5.4 MIPS R4000的超流水线结构 超流水 IF——取指的前半部分,选择PC的值输出,启动读指令cache的操作。 IS——取指的后半部分,完成指令cache的访问。 RF——指令译码和读取寄存器,检查险象以及cache的命中。 EX——执行,包括计算有效地址、ALU操作和分支目标计算和条件求值。 DF——读取数据,访问数据cache的第一部分。 DS——访问数据cache的第二部分,完成数据cache的读取。 TC——检查标志,确定数据cache的访问是否命中。 WB——写回,用于load和寄存器到寄存器的操作。