计算机系统结构的基础知识
计算机目前已经发展了五代,这五代在器件,体系结构技术和软件技术方面具有明显特征。按照价格可以分为五个档次:巨型机,大型机,中型机,小型机,微型机。目前计算机体系结构的研究内容:全面提高计算机系统性能,即可用性,可维护性,可缩放性。
计算机系统结构的基本概念
计算机系统的层次结构
- 计算机系统 = 硬件/固件 + 软件
硬件:包括控制器,存储器,系统结构,运算器,等等
软件:包括编译器,解释器,运行环境,调试器等等
计算机语言是从低级向高级进行发展的:高一级的语言相对于低一级语言来说功能更强,更便于应用,但是以低级语言为基础。 - 物理机:用硬件/固件实现的机器(第一级微程序机器和第二级机器语言)
- 虚拟机:由软件实现的机器(第三级操作系统虚拟机,第四级汇编语言虚拟机,第五级高级语言虚拟机,第六级应用语言虚拟机)
计算机体系结构
定义:程序员所看到的计算机的属性,即概念性结构和功能特性。例如
- 数据表示:硬件能直接辨认和处理的数据类型
- 寻址规则:包括最小寻址单元,寻址方式和其表示
- 寄存器定义:包括各种寄存器的定义,数量和使用方式
- 指令集:包括机器指令的操作类型和格式,指令间的排序和控制结构
- 中断系统:中断的类型和中断响应硬件的功能
- 机器工作状态的定义和切换:如管态和目态
- 存储系统
- 信息保护
- I/O结构
实质:确定计算机系统中软硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件的功能。 ※ - 透明性:对一种本来是存在的事物或属性,但从某种角度来看又好像不存在的现象称为透明性。
计算机组成和计算机实现
计算机系统结构,计算机组成和计算机实现三者之间的关系:
- 计算机系统结构是系统的软硬件的交界面
- 计算机组成是系统结构的逻辑实现
- 计算机实现是组成的物理实现
- 同一系统结构可以有不同的组成,同一组成可以有多种实现方式
指令系统的确定 —计算机系统结构 ----软硬件的交界面
指令操作的实现,如取指令,取操作数,运算,送结果等具体操作及排序方式 --------计算机组成
实现这些指令功能的具体电路,器件的设计和装配技术 -----计算机实现
计算机系统结构的分类
Flynn分类法
基本思想:计算机工作过程是指令流的执行和数据流的处理。
- 指令流:计算机执行的指令序列
- 数据流:由指令流调用的数据序列
- 多倍性:在系统性能的瓶颈部件上处于同一执行阶段的指令或数据的最大个数
单指令流单数据流 SISD
典型结构:冯诺依曼结构 ----- 传统的顺序计算机
单指令流多数据流 SIMD
单控制器,多处理单元和多对数据进行处理
多指令流单数据流 MISD
多个处理器,对同一数据流进行处理。
多指令流多数据流 MIMD
多机系统 ----- 多个处理系统或多计算机系统每个处理机可以独立执行指令和处理数据一般并行计算机大多采用这种结构。
冯氏分类法
用系统的最大并行度对计算机进行分类
最大并行度:计算机系统在单位时间内能处理的最大的二进制位数。
两参数决定计算机并行度结构类型:字宽和位宽
字串位串 WSBS 字串位并 WSBP 字并位串 WPBS 字并位并 WPBP
Handler分类法
根据并行度和流水线对计算机分类,把计算机的硬件结构分为3个层次
- 程序控制部件的个数K
- 算术逻辑部件或处理部件的个数D
- ALU不见中逻辑电路套数W
- M = (K, D, W)
计算机系统的设计
三条基本原则和方法
- 大概率事件有限原则:对于大概率事件,赋予它的处理权和资源使用权,以获得全局的最优结果
- Amdahl定律:加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性
系统加速比 = 改进后系统性能/改进前系统性能 = 改进前总执行时间/改进后总执行时间
设改进比例α,部件加速比K,改进后总执行时间: T n e w = ( 1 − α ) ∗ T o l d + ( α ∗ T o l d ) / K T_{new}=(1-α)*T_{old}+(α*T_{old})/K Tnew=(1−α)∗Told+(α∗Told)/K 系统加速比 = 1 / ( ( 1 − α ) + α / K ) 1/((1-α)+α/K) 1/((1−α)+α/K) 这里可以得出要想显著加速整个系统,必须提升全系统中相当大的部分的速度
这里Amdahl可能会出计算题 - 程序的局部性原理:程序在执行时所访问地址的分布不是随机的,而是相对簇聚:包括指令和数据两部分
分为时间局部性和空间局部性。(计组也讲过)
定律观点: - 性能增加具有递减规则
- 针对整个任务的一部分进行优化,最大加速比不大于: 1/(1-可改进比例)
- 衡量好的计算机系统是一个带宽平衡的系统
CPU性能公式
- CPU时间:执行一个程序所需要的CPU时间。CPU时间=执行程序所需的时钟周期数 × 时钟周期时间
- CPI :每条指令执行的平均时钟周期数
- IC :程序所具有的指令条数
- CC : 时钟周期
- CLK :执行程序所需的时钟周期数
- CR :时钟频率
- C P U t i m e = ( C P I ∗ I C ) ∗ C C = I C ∗ C P I / C R CPU_{time} = (CPI * IC) * CC = IC * CPI / CR CPUtime=(CPI∗IC)∗CC=IC∗CPI/CR
-
C
P
I
=
C
L
K
/
I
C
CPI = CLK/IC
CPI=CLK/IC
CPU性能依赖于三个参量: IC, CPI, CC;
说明改进CPU性能的三种途径.
尽管同时缩小三个参数是不可能的,而且改变其中的一个都可能因此影响其他两个参量,但改变这三个参数的技术途径是独立的:
–CC -----硬件和组成技术
–CPI-----组成和指令集系统结构
–IC -----指令集系统结构和编译技术
计算机系统的设计方法
主要任务:指令系统设计,数据表示设计,功能的设计,逻辑设计和物理实现
完成的工作:
- 确定用户对计算机系统的功能,价格和性能的要求
- 软硬件功能分配
软件实现:设计容易修改简单,减少硬件成本;但是所实现的功能速度较慢。
硬件实现:速度快,性能高;但是修改困难,灵活性差。 - 设计出生命周期长的系统结构
系统结构设计
1,由上向下方法
适用于专用机的设计,从应用到实现级,周期几年。从层次结构最上面一级开始,逐层向下设计各层的机器。
2,由下向上方法
从层次结构最下开始,逐层向上设计,到那时可能会造成软件和硬件的脱节,使整个系统的效率降低。
3,从中间设计
从软,硬件的交界面开始设计。要求首先进行软,硬件的功能分配,同时考虑硬件能为软件提供什么支持。
优点:避免软,硬件脱节,设计周期短,有利于优化设计。
缺点:对设计人员要求较高,要求具有有效的软件设计环境和开发工具,便于分析,评价和设计。
计算机系统的性能评测
- 评价一个计算机系统结构好坏的标准主要是性能和成本。
- 衡量机器性能的唯一固定且可靠的标准就是真正执行程序的时间。
评价指标:响应时间,吞吐率
计算机系统结构发展
冯诺依曼计算机
- 以运算器为中心
- 采用存储程序原理
- 存储器按地址访问的线性编址的空间
- 控制流由指令流产生
- 指令由操作码和地址码组成
- 指令和数据均以二进制编码表示,采用二进制运算
对体系结构进行改进
存储程序,存储器为中心,分散控制
I/O方式改进:
保护的存储器空间:即指令和数据是否放在同一存储器中
存储器组织结构的发展:
并行处理技术改进CPU组成,重迭,先行控制,多操作部件,流水方式
指令集结构发展:CISC复杂和RISC精简。
软件对系统结构的影响
- 系列机:指具有相同体系结构,但是组成和实现不同的一系列不同型号的计算机系统。也可以说是再一个厂家生产的具有相同指令集结构,但具有不同组成和实现的一系列不同型号的机器。
- 软件兼容:系列机具有相同的体系结构,软件可以在该种系列计算机的各档机器上运行,也就是说同一个软件可以不加修改的运行于体系结构相同的各档机器,而且他们所获得的结果一样,差别只在于有不同的运行时间。向上(下)兼容:指某档机器编制的程序,不加修改的就能运行于比它高(低)档的机器。向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改就能运行在它之前(后)投入市场的机器。向后兼容是软件兼容的根本特征,也是系列机的根本特征。(保证向后兼容,力争向上兼容)
并行性发展
- 并行性:在同一时刻或者是同一时间间隔完成两种或者两种以上性质相同或者不相同的工作。
- 同时性:两个或多个事件在同一个时刻发生的并行性。
- 并发性:两个或多个事件在同一时间间隔内发生的并行性。
并行性等级
- 指令内部并行:指令内部的微操作之间的并行。
- 指令级并行:并行执行两条或者多条指令
- 线程级并行:并行执行两个或者两个以上的线程。
- 任务级或者过程级并行:并行执行两个或多个过程或任务。
- 作业或程序级并行:多个作业或程序间的并行。
提高并行性三种技术途径
- 时间重叠:多个处理过程时间上相互错开 (流水线)—主导作用-------基础:部件功能专用化
- 资源重复:重复设置硬件资源,大幅度提高性能
- 资源共享:软件的一种方式,多个任务按一定时间顺序轮流使用同一套硬件设备。
第一章复习
1,计算机发展的原因或更新换代的标志
- 硬件技术的发展:在器件,体系结构技术和软件技术有明显的特征(主要是依据器件进行五代计算机的划分)-集成电路技术的进步还有存储器(内存外存)和各种外设的进步。
- 体系结构创新:历程 简单->复杂->极其复杂->简单->复杂->极其复杂。
2,计算机系统的层次结构 - 物理机:用硬件/固件实现的机器(第一级微程序机器和第二级机器语言)
- 虚拟机:由软件实现的机器(第三级操作系统虚拟机,第四级汇编语言虚拟机,第五级高级语言虚拟机,第六级应用语言虚拟机)
3,语言的两种实现技术极其各自的优点缺点 - 翻译:先把N+1级程序全部变换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。
- 解释:每当一条N+1级指令被译码之后,就直接取执行一串等效的N级指令,然后再去取下一条N+1级的指令,以此重复执行。
- 解释执行比翻译花费的时间多,但是空间占用少。通常1,2,3级解释执行,4级以上翻译执行(层次结构)
4,计算机系统结构,组成,实现的概念,他们之间的相互关系如何判断某种技术属于哪个方面。 - 计算机系统结构的实质是系统的软硬件的交界面,即机器语言程序员所能看到的传统机器基本所有具有的属性
- 计算机组成是系统结构的逻辑实现
- 计算机实现是组成的物理实现
- 同一系统结构可以有不同的组成,同一组成可以有多种实现方式
指令系统的确定 —计算机系统结构 ----软硬件的交界面
指令操作的实现,如取指令,取操作数,运算,送结果等具体操作及排序方式 --------计算机组成
实现这些指令功能的具体电路,器件的设计和装配技术,例如处理机,主存的恩 -----计算机实现
这里举个例子:
乘法结构和主存系统:
系统结构 | 组成 | 实现 |
---|---|---|
是否有乘法指令 | 乘法器/加法+移位 | 物理实现 |
容量,编址方式 | 速度,措施 | 器件,电路 |
5,什么是透明性,如何进行透明性判断。 |
-
透明性:对一种本来是存在的事物或属性,但从某种角度来看又好像不存在的现象称为透明性。
-
可以通过什么级别的程序员对某个级别的结构是否能够操作和编程,如果不行就是透明的。例如数据总线宽度,微程序对机器语言,汇编语言程序员是透明的,对硬件设计人员是不透明的。
6,软硬件的等效性 -
等效性:软件和硬件在逻辑功能上是等效的,即软件的功能可用硬件或者固件完成;硬件的功能也可以用软件模拟完成。
-
不等效性:软件和硬件实现的性能价格比不同,实现的难易程度不同。
-
总结:在逻辑功能上等效,在性能等方面不等效
7,软硬件取舍原则 -
首先是考虑现有应,器件条件(主要是逻辑器件和存储器),系统要有高的性能价格比例,主要从实现费用,速度和其他性能要求来综合考虑。
-
第二个是要考虑到准备采用和可能采用的组成技术,使它尽可能不要过多或不合理地限制各种组成,实现技术的采用。
-
第三个是从“软”的角度考虑如何为编译和操作系统的实现以及为高级语言程序的设计提供更多好的硬件支持放在首位。
8,实现软件移植的方法:统一高级语言,系列级方法,模拟和仿真(不同体系结构)
9,软件兼容,系列机和兼容机 -
软件兼容:同一个软件可以不加修改地运行于体系结构相同的各档机器,而且它们所获得的结果一样,差别只在于有不同的运行时间。
-
系列机 在一个厂家内生产的具有相同的体系结构,但具有不同组成和实现的一系列不同型号的机器。
-
兼容机:不同厂家生产的具有相同体系结构的计算机。
10,向后兼容是软件兼容的根本特征,也是系列机的根本特征。系列机必须保证向后兼容,力争向上兼容。
11,软件,应用,器件对系统结构的影响 -
上边
12,存储程序计算机的主要特点和改进 -
数据以二进制编码表示,采用二进制运算。
-
机器以运算器为中心
-
指令由操作码和地址码组成
-
控制流由指令流产生
-
指令由操作码和地址码产生
-
存储器按照地址访问线性编址的地址空间来获取程序和数据
主要问题和改进 -
问题1:以运算器件为中心导致的输入输出操作占用快速运算器影响效率。
-
解决1:各种分布式的I/O处理或者输入输出方式如程序控制,DMA方式,I/O处理机
-
问题2:数据和指令存放同一个存储器中,自我修改程序是难以编制,调试和使用的,不利于指令执行的重叠和流水。
-
解决2:通过存储器管理硬件的支持,由操作系统控制在程序执行过程中不准修改程序。
-
问题3:访问存储器次数较多影响计算机系统性能。
-
解决3:按内容访问的相联存储器CAM,大量使用通用寄存器,CPU和主存之间设置Cache
13,计算机系统设计方法:自上而下,自下而上,从中间开始(软硬件功能分配,系统结构),中间指的是什么,有哪些好处。
适用于专用机的设计,从应用到实现级,周期几年。从层次结构最上面一级开始,逐层向下设计各层的机器。 -
由下向上方法:从层次结构最下开始,逐层向上设计,到那时可能会造成软件和硬件的脱节,使整个系统的效率降低。
-
从中间设计: 从软,硬件的交界面开始设计。要求首先进行软,硬件的功能分配,同时考虑硬件能为软件提供什么支持。
14,并行性的二重属性(同时性,并发性)
◆ 同时性(simultaneity)—两个或多个事件在同一时刻发生的并行性。
◆ 并发性(concurrency) —两个或多个事件在在同一时间间隔内发生的并行性。
15,并行性的等级:
从程序执行的角度:(指令内部,指令级,线程级,任务或过程级,作业或程序级)。
从处理数据的角度,并行性由低到搞可以分为:- 字串位串:同时只对一个字的一位进行处理
- 字串位并:同时对一个字的全部位进行处理,不同字之间是串行的
- 字并位串:同时对许多字的同一位进行处理
- 全并行:同时对许多字的全部或部分位进行处理
16,提高并行性的途径(时间重叠(流水线处理机)),资源重复(阵列机,多处理机),资源共享(多道程序,分时系统)
(1) 时间重叠
多个处理过程在时间上相互错开,轮流重迭地使用同一套硬件设备的各个部分, 以加快硬件周转而赢得速度。
(2) 资源重复
根据“以数量取胜”的原则,通过重复地设置资源,尤其是硬件资源,以大幅度提高计算机系统的性能。
(3) 资源共享
这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。如多道程序、分时系统。资源共享既降低了成本,又提高了计算机设备的利用率。多道程序、分时共享
17,费林分类:SISD,SIMD,MISD,MIMD。
18,冯泽云分类:wsbs,wsbp,wpbs,wpbp
19,多机系统的耦合度,松耦合,紧耦合系统,同构,异构型多处理机系统,
-
多机系统也遵循时间重叠,资源重复,资源共享的技术途径。
-
耦合度:反映多机系统的各机器之间的物理链接的紧密程度和交互作用能力的强弱
-
最低耦合:耦合度最低的系统。除通过某种中间存储介质之外,各计算机之间没有物理连接,也无共享的联机硬件资源。
-
紧密耦合系统或直接耦全系统:机间物理连接的频带较高,它们往往通过总线或高速开关实现互连,可以共享主存。
-
松散耦合或间接耦合系统:通过通道或通信线路实现计算机间互连,共享某些外围设备(例如磁盘、磁带等),机间的相互作用是在文件或数据集一级进行。
20,性能计算(CPI,CPUtime,MIPS,MFLOPS)
21,Amdahl定律,加速比计算,程序局部性原理(时间局部性,空间局部性)
22,高频时间原理
计算机指令集结构设计
指令集结构的分类
指令系统是计算机系统的主要组成部分,是计算机系统的一个主要软硬件分界面,是软件设计者和硬件设计者沟通的桥梁。
- 1,在CPU中操作数的存储方式
- 2,指令显中显示表示的操作数个数
- 3,操作数的寻址方式
- 4,指令集所提供的操作类型
- 5,操作数的类型和大小
指令系统设计的依据
- 应用系统的需求
- 对操作系统编译的支持
- 计算机的定量设计原则
- 现有指令系统的测量统计数据
指令系统设计的内容
- 数据在CPU中的存放位置
- 编码方式
- 操作种类
- 操作数的类型和长度
- 寻址方式
根据数据在CPU内部的存放方式
- 堆栈型:简单,指令短;堆栈不能随机访问,很难生成有效代码
- 累加器型:见笑了机器的内部状态,指令小;累加器是唯一的暂存器,通信开销大
- 通用寄存器型:代码生成最一般的模型;指令较长
寄存器类型
有三类
- R-R型:简单,执行快;指令数多
- R-M型:易于编码,代码密度较高;操作数不对等
- M-M型:代码密度最高;指令长度变化大
寻址方式
即指令系统如何形成要访问的数据的地址。
立即寻址和偏移寻址方式的使用频率最高。
指令系统的设计
- 基本指令:给用户使用的最常用的指令:算术逻辑运算,数据传输类,控制类
- 专用指令:针对特殊应用领域需要而设计的指令:浮点指令,字符串,图像指令。
- 特权指令:仅供系统操作员使用的指令:虚存管理,系统调用
复杂指令集计算机 CISC
缺点:使用频率相差悬殊;带来了计算机体系结构的复杂性,增加了研制时间和成本;不利于流水线设计提高系统性能;许多复杂指令需要复杂的操作,因此运行速度慢。
精简指令集计算机RISC
尽可能把指令兄台那个精简化,指令条数少且功能简单。有利于流水线护设计,因为频率相差不大,且运行时间相差不大。
对指令系统的基本要求
- 完整性:在一个有限可用的存储空间内,对于任何可解问题,指令系统所提供的指令足够使用。
- 规整性:没有或尽可能减少例外的情况和特殊的应用,所有运算都能对称,均匀地再存储器单元或寄存器单元之间进行。(对称性,均匀性)
- 正交性:指令在编码时应该是互相独立,互不相关的。
- 高效率
- 兼容性:主要实行向后兼容
操作数的类型,表示和大小
- 数据表示:是指计算机硬件能够直接识别,指令系统可以直接使用的哪些数据类型
- 数据结构:面向应用和软件系统所处理的各类数据类型,研究这些数据类型的逻辑结构和物理结构之间的关系和相应的算法。
控制指令设计
定义:控制指令用来改变控制流。
- 跳转:指令时无条件改变控制流。
- 分支:有条件改变控制流。
指令集格式的优化
※哈夫曼编码※
做题即可,画树
等长扩展码
在哈夫曼码的基础上,通过使用频率宏观分布,将编码长度扩展成几种长度的编码,达到即接近全哈夫曼码的码长,也具有定长码的规整性。
指令格式的优化:
存在的问题:
- 如果指令字的宽度固定,地址码的长度和个数固定,则操作码的缩短并不能带来好处,只是使指令字出现空白浪费。
- 应该采用地址个数可变或地址码长度可变的方案。
- 最常用的操作码最短,其地址字段个数最多。
三种编码格式: - 可变长度编码:
-当指令系统的寻址方式和操作种类很多时,这种编码格式是最好的
-最少的二进制位来表示目标代码
-可能会使各条指令的字长和执行时间相差很大
- 固定长度编码格式
-将操作类型和寻址方式一起编码到操作码
- 混合型编码格式
现代编译器的结构和相关技术
- 语言预处理
- 高级优化
- 全局优化
- 代码生成
目标:快速的编译,支持程序的调试,多种语言之间的互操作性。
编译器对程序进行优化编译工作量的多少和编译器设计的复杂度等问题之间存在一个折衷关系。
寄存器分配
这个是编译优化的一个重要的问题,分配算法均是基于“图着色法”发展而来的。
基本思想:根据将要分配给寄存器的各个可能候选变量和它们使用的范围
优化的集中类型
- 高级优化:一般在源代码上进行,与机器无关。如用过程体取代过程调用。
- 局部优化:在不含转移分支的代码段(基本块)进行:如消除公共子表达式,常数传播,压缩堆栈高度,调整表达式计算顺序等。
- 全局优化:在局部优化的基础上,;考虑到各种分支情况,对循环和分支进行一系列的优化转换。
- 寄存器分配:表达式计算,传递参数,存放变量
- 基于机器的优化:尽可能利用机器的特点,如降低操作强度,流水线调度。
计算机体系结构对当前编译技术的影响
基本原则:程序中经常出现的部分要尽量的加速,而对较少出现的部分要力求正确。
指令集结构的设计原则
- 规整性:要求指令集的三个主要元素(操作,数据类型和寻址方式)必须正交。
- 提供基本指令,而非解决方案
- 简化方案的折衷取舍标准
- 对于在编译时就已经知道的量,提供能够将其变为常数的指令。
DLX指令集结构
DLX是一种多元未饱和型指令集结构,其设计思想:
- 具有一个简单的Load/store指令集
- 注重指令流水效率
- 简化指令的译码
- 高效支持编译器
第二章复习
1,指令系统设计的内容(指令集结构,操作种类,编码方式,寻址方式,操作数类型,大小)
2,对指令系统的基本要求(完整性,规整型,正交性,高效性,兼容性)
3,指令系统设计的主要依据(应用系统的需求,现行指令系统的使用频度统计数据,计算机的;定量设计原则,对编译,操作系统的支持)
4,根据操作数在CPU中的存访位置,指令集结构分为(堆栈型,累加器型,通用寄存器型),各有什么优点和缺点?
- 堆栈型:简单,指令短;堆栈不能随机访问,很难生成有效代码
- 累加器型:见笑了机器的内部状态,指令小;累加器是唯一的暂存器,通信开销大
- 通用寄存器型:代码生成最一般的模型;指令较长
5,通用寄存器型又分为R-R,R-M,M-M型,各自的优缺点 - R-R型:简单,执行快;指令数多
- R-M型:易于编码,代码密度较高;操作数不对等
- M-M型:代码密度最高;指令长度变化大
6,编址方式:字节,字,位 - 字:实现容易,但是不支持非数值的计算
- 字节:最普遍,但由数据存放和对齐问题
- 位:可变字长运算,地址信息浪费量大
7,编址空间:统一编址,单独编址,通用寄存器,主存和设备统一编址 - 三个零地址空间:通用寄存器,主存,I/O设备独立编址
- 两个零地址空间:通用寄存器独立编址,I/O设备和主存统一编址,高端地址一般用于I/O接口寄存器
- 一个零地址空间:所有存储设备统一编址,低端:通用寄存器,高端:I/O设备
8,数据类型,数据表示,数据结构,引入数据表示的原则。 - 数据表示和数据结构是软硬件的分界面之一
- 确定数据表示是软硬件取舍折衷的问题,也时体系结构设计要解决的难题之一
- 确定数据标识的原则:缩短程序运行时间,减少CPU和主存之间的通信量,这种根据数表示的通用性和利用率
9,CISC,RISC的缺陷 - CISC缺点:使用频率相差悬殊;带来了计算机体系结构的复杂性,增加了研制时间和成本;不利于流水线设计提高系统性能;许多复杂指令需要复杂的操作,因此运行速度慢。
- RISC缺点:影响了编译技术中寄存器分配算法,数据和控制相关性分析,要设计复杂的子程序库
RISC特点: - 大多数指令在单时钟周期内完成
- 采用Load/Store结构
- 硬联逻辑实现
- 减少指令和寻址方式的种类
- 固定指令格式
- 注重译码的优化
10,RISC的设计原则?RISC的关键技术,思想精华(降低CPI)
设计原则: - 指令条数少,指令功能简单
- 采用简单而又统一的指令格式,并减少寻址方式
- 指令的执行在单个机器周期内完成
- 只有load和store指令才能访问存储器
- 大多数指令采用硬连接逻辑来实现
- 强调优化编译器的作用,为高级语言程序生成优化的代码
- 充分利用流水线技术来提高性能
11,重叠寄存器窗口技术及其目的:
目标:缩短CALL,RETURN操作时间。
方法: - 将设置的大量的寄存器,分成多个组和全局区
- 每个组中分高,本地,低三个区
- 相邻组的高,低区重叠,加速参数和结果的传递
结果:节省了保存现场和恢复现场等辅助时间。
12,指令中寻址方式的表示方法
13,操作数类型的表示方法(编码于操作码,带标记的数据类型(操作数)) - 1,操作数的类型由操作码指定
- 2,带标志符的数据类型:
优点:简化了指令系统和程序设计;简化了编译程序;为软件调试和应用软件开发提供了支持;支持了系统的实现和数据类型的无关的要求。
问题:会降低指令的执行速度,增加了硬件的复杂度,每个数据字因增设标志符,使程序所占用的主存空间增加。
14,带标识符数据类型的优缺点
优点: - 简化了指令系统和程序设计
- 简化了编译程序
- 为软件调试和应用软件开发提供了支持
- 支持了系统的实现和数据类型的无关的要求
缺点: - 会降低指令的执行速度
- 增加了硬件的复杂度
- 每个数据字因为增设标志符,使程序所占用的主存空间增加
15,指令集编码格式(定长编码格式,变长编码格式,混合编码格式) - 变长。特点:适合于操作种类多,寻址方式多。能够有效减少指令集结构的平均指令长度,降低目标代码的长度,使得各条指令的长度和执行时间不大一样。
- 固定长度:适用于操作种类少,寻址方式少,代码空间大,代码密度低,但格式固定,实现简单。
- 混合型编码:通过提供一定类型的指令字长,期望能够兼顾降低目标代码产古和降低译码复杂度两个目标。
16,现代编译器的四级结构,优势 - 语言预处理
- 高级优化
- 全局优化
- 代码生成
流水线技术
概念:把一个重复的过程分为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各个功能段,这样,每个子过程就可以和其他的子过程并行进行。
重叠执行和先行控制
解决方法:
- 设置两个独立编址的存储器:指令存储器,数据存储器
- 指令和数据仍然混合但是设置指令cache和数据cache
- 指令和数据仍然混合存放在同一个主存中,但主存采用多体交叉结构
- 在主存和指令分析部件之间增加指令缓冲站
流水线的技术特点
- 每一个段后面都要有一个缓冲寄存器,即方便传送数据,也能方便forwarding定向技术的使用。
- 通过时间:第一个任务从进入流水线到流出结果所需的时间
- 排空时间:最后一个任务从进入流水线到流出结果所需的时间。
- 流水过程由多个相联系的子过程组成,每个子过程称为流水线的‘级’或者‘段’。‘段’的数目称为流水线的‘深度’。
- 每个子过程由专用的功能段实现
流水线分类
多功能流水线和单功能流水线
- 单功能:只能完成一种固定功能的流水线。
- 多功能:流水线的各段可以进行不同的连接,从而实现不同的功能。
静态流水线和动态流水线
- 静态流水线:在同一时间,多功能流水线的各段只能按同一种功能的连接方式工作。对于静态流水线,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。
- 动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。例如浮点加和浮点乘通过一系列控制组成流水线,而静态的只能相同类型的操作流水。
线性流水线和非线性流水线
- 线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线的各个段时,每一个段最多只流过一次。
- 非线性流水线:可能有反馈回路。可能会出题,计算吞吐率,禁止表,冲突向量。
顺序流水线和乱序流水线
标量处理机和向量流水处理机
即向量机可以执行多对数据相同操作运算。
流水线的性能指标
吞吐率
T
P
=
n
/
T
k
TP=n/T_k
TP=n/Tk n:流水线中任务数量
T
k
T_k
Tk:处理n个任务所用的时间
流水线的实际吞吐率:
T
P
=
n
(
k
+
n
−
1
)
Δ
t
TP = \frac{n}{(k+n-1)\Delta t}
TP=(k+n−1)Δtn
流水线的最大吞吐率:
T
P
m
a
x
=
l
i
m
n
−
>
i
n
f
n
k
+
n
−
1
Δ
t
=
1
Δ
t
TP_{max}=lim_{n->inf}\frac{n}{k+n-1}\Delta t=\frac{1}{\Delta t}
TPmax=limn−>infk+n−1nΔt=Δt1
加速比
加速比是指流水线的速度和等功能非流水线的速度之比。
S
=
T
非流水
T
流水
=
n
m
Δ
t
0
m
Δ
t
0
+
(
n
−
1
)
Δ
t
o
=
m
1
+
m
−
1
n
S=\frac{T_{非流水}}{T_{流水}}=\frac{nm\Delta t_0}{m\Delta t_0+(n-1)\Delta t_o}=\frac{m}{1+\frac{m-1}{n}}
S=T流水T非流水=mΔt0+(n−1)ΔtonmΔt0=1+nm−1m
n:处理n个任务 m:流水线为m段
效率E
指流水线的设备利用率。由于流水线有排空时间和通过时间,所以流水线的各段并不是一直满负荷工作,故:E<1
计算时主要是画出时空图,然后用所用时间t乘上段数s得到分母,又使用格子的面积分子,除一下就行。
流水线的相关和冲突
基本流水线
- 1,取指周期IF:以程序计数器PC中的内容为地址,从存储器中取出指令并放入指令寄存器IR。同时PC值加4,指向顺序的下一条指令
- 2,指令译码ID:将IR中的指令拆分成操作码和操作数,并将操作数放入寄存器。对指令进行译码,并用指令寄存器中的寄存器地址去访问通用寄存器,读出其中的操作数。
- 3,执行周期EX:load和store指令,ALU把指令中所指定的纠错年起的内容和偏移量相加,形成访存有效地址。 ALU指令:ALU按照操作码指定的操作对从通用寄存器中读出的数据进行运算。 分支指令:ALU把指令中给出的偏移量和PC值相加,形成转移目标的地址。同时,对在前一个周期读出的操作数进行判断,确定分支是否成功。
- 4,访存周期MEM:该周期处理的指令只有load,store和分支指令。load:用上一个周期计算出的有效地址从存储器中读出相应的数据。store:把指定的数据写入这个有效地址所指出的存储器单元。分支指令:分支成功,酒吧转移目标地址送入PC,分支指令执行成功。
- 5,写回周期WB:ALU:结果数据来自ALU。load:结果数据来自存储器。
相关性质
概念:指两条指令之间存在某种依赖关系
相关的分类
- 数据相关:之后的指令用到了前面的指令的数据
- 名相关:两条指令之间使用了相同的名,但没有数据流动,改变名字即可消除名字相关性。
- 控制相关:由分支指令引起的相关。
冲突性质
概念:指相邻或相近的两条指令之间存在某种关联,后一条不能在原指定的时钟周期开始执行。
分类
- 结构冲突:硬件资源满足不了同时重叠执行质量唵的要求
- 数据冲突:当一条指令需要用到前面某条指令的结果,从而不能重叠执行时
- 控制相关:当流水线遇到分支指令和其他能够改变PC值的指令时
结构冲突
解决办法1:插入气泡,暂停周期
解决方法2:设置相互独立的指令存储器和数据存储器或者Cache
数据冲突
分三种
- 写后读:i写入之前,j先去读,读出内容错误
- 写后写:i写入前,j先写,导致最后写入的i,结果错误
- 读后写:在i读如之前,j先写,i读出的内容错误
插入stall:等待竞争消除再继续执行。
定向技术:减少写后读数据冲突引起的停顿:(旁路/短路) - 在计算结果没出来之前,后面等待使用该结果的指令并不一定立即需要该计算结果,如果能将其直接传送到其他要用的地方,就可以避免停顿。
控制冲突
流水线遇到分支指令和其它改变PC值的指令所引起的冲突。
途径:1,在流水线尽早判断分支转移是否成功;2,转移成功时,尽量早计算目标地址。
最简单的解决方法:冻结/排空流水线。
- 可以通过预测下一条指令来该旅性的提高效率,分别可以预测分支失败和预测分支成功。
- 还有通过延迟分支从逻辑上延长分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽组成。
指令级流水线并行
并行性等级:粗粒度、细粒度
指令级的并行度:每个时钟同时启动的指令或操作数。
单发射结构:每个周期只发射一条指令;
多发射结构:在流水线结构基础上,每个周期可以发射多条指令。比如:超标量,超流水线,VLIW
影响超标量流水性能因素:多条指令同时存取,数据通道可能会成为瓶颈;多条指令间不能有相关,否则部分流水线空转; 相关专用通道只能针对多条指令后的指令进行。
第三章复习
1,流水线概念
概念:把一个重复的过程分为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各个功能段,这样,每个子过程就可以和其他的子过程并行进行。
2,流水线分类
- 根据功能:多功能流水线,单功能
- 根据连接方式:静态,动态
- 根据级别:部件级,处理机级,处理机间级
- 流动顺序:顺步,异步
- 反馈回路:线性,非线性
- 数据表示:向量流水线,标量流水线
3,非线性流水线的调度计算。(出题)
4,流水线中的相关 - 数据相关:之后的指令用到了前面的指令的数据
- 名相关:两条指令之间使用了相同的名,但没有数据流动,改变名字即可消除名字相关性。
- 控制相关:由分支指令引起的相关。
5,流水线的冲突 - 结构冲突
- 数据冲突:(WAR,WAW,RAW)DLX流水线一般至于
- 控制冲突
5-附:冲突的解决办法 - 结构冲突(细分功能部件,重复设置资源)
- 数据冲突(暂停,定向技术,流水线调度)
- 控制冲突(暂停,预测成功分支,预测失败分支,延迟转移,分支取消技术)
6,相关性以及数据冲突判断,时空图,调度策略
7,DLX(MIPS)流水线
MIPS流水线共有8个段其将访存操作进一步细分。
向量处理机
主要考察链接技术应用和不应用下时间的差异,计算时间,效率。
- 向量处理机:具有向量数据表示和相应向量指令的流水线处理机。
- 标量处理机:不具有向量数据表示和相应向量指令的处理机。
链接技术
概念:将前一条向量指令流水线流出的结果向量元素直接链入后续向量指令所用的流水线,使多个向量流水线之间的功能部件链接,形成大流水线。
画出相关的图然后进行计算:
T
串
=
∑
i
=
1
n
T
各指令
+
N
−
1
T_{串}=\sum_{i=1}^{n}T_{各指令}+N-1
T串=i=1∑nT各指令+N−1
N为向量长度,
T
各指令
T_{各指令}
T各指令为各个指令启动时间。
向量机的性能评价
- 向量指令处理时间
T
v
p
T_{vp}
Tvp:
T
s
T_s
Ts:向量流水线的建立时间
T
v
f
T_{vf}
Tvf:向量流水线的流过时间
T
c
T_c
Tc:流水线瓶颈段的执行时间
存在瓶颈: T v p = T s + T v f + ( n − 1 ) T c 存在瓶颈:T_{vp}=T_s+T{vf}+(n-1)Tc 存在瓶颈:Tvp=Ts+Tvf+(n−1)Tc
不存在瓶颈 : T v p = [ s + e + ( n − 1 ) ] T c l k = [ T s t a r t + n ] T c l k 不存在瓶颈: T_{vp}=[s+e+(n-1)]T_{clk}=[T_{start}+n]T_{clk} 不存在瓶颈:Tvp=[s+e+(n−1)]Tclk=[Tstart+n]Tclk
s:向量流水线建立时间对应的时钟周期数 e:向量流水线的流过时间所对应的时钟周期 T c l k T_{clk} Tclk:时钟周期时间 - 峰值性能
R
I
n
f
R_{Inf}
RInf :表示向量长度为无限大时,向量处理机的最高性能,也称为峰值性能。
R i n f = l i m n − > i n f 向量指令序列中浮点运算次数 × 时钟频率 向量指令序列执行所需的时钟周期数 R_{inf} = lim_{n->inf}\frac{向量指令序列中浮点运算次数\times时钟频率}{向量指令序列执行所需的时钟周期数} Rinf=limn−>inf向量指令序列执行所需的时钟周期数向量指令序列中浮点运算次数×时钟频率 - 半性能向量长度 n 1 / 2 n_{1/2} n1/2:指向量处理机的运行性能达到其峰值的一半时所必须满足的向量长度。
- 向量长度临界值 n v n_v nv:对于某一计算任务而言,向量方式的处理速度优于标量串行方式处理速度时需要的最小向量长度。
第四章复习
1,向量处理机和标量处理机
- 向量处理机:具有向量数据表示和相应向量指令的流水线处理机。
- 标量处理机:不具有向量数据表示和相应向量指令的处理机。
2,向量处理方式(横向,纵向,纵横)
针对 D = A × ( B + C ) D=A\times(B+C) D=A×(B+C) - 横向(水平): K i = b i + c i ; D i = K i × A i K_i=b_i+c_i;D_i=K_i\times A_i Ki=bi+ci;Di=Ki×Ai 相关N次(写后读) 功能切换 2N次(乘法和加法)
- 纵向(垂直) K = B + C ; D = K × A K=B+C;D=K \times A K=B+C;D=K×A 相关1次 功能切换 1 次
- 纵横处理方式:把向量长度为某个固定值的若干组,组内按纵向方式处理,依次处理各个组。
3,向量处理机的结构(存储器-存储器,寄存器-寄存器) - 存储器-存储器:采用纵向处理方式的向量处理机对处理机结构的要求。
向量指令的源向量和目的向量都是存放在存储器中,运算的中间结果需要送回存储器。流水线运算部件的输入和输出端直接和存储器相连,从而构成存储器-存储器型操作的运算流水线。一般采用多体交叉并行存储器和缓冲器技术
- 寄存器-寄存器:采用分组处理方式的向量处理机的处理机结构要求。
让运算部件的输入输出都与向量寄存器相连
4,向量并行技术(功能部件不冲突,向量寄存器不冲突)
- 功能部件不冲突:每种功能部件一般只设置一个。如:V3<-V1 × \times ×V2 V6<-V4 × \times × V5
- 向量寄存器不冲突:不允许出现RAW,WAR,WAW,RAR相关。如:V4<-V1+V2 V5<-V2
×
\times
× V3
5,向量链接技术(链接条件),分段开采技术 - 分段开采技术:处理向量的长度大于向量寄存器的情况。当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段。其由系统硬件和软件控制完成,对程序员是透明的。
- 链接条件:如果相邻的多条向量指令之间不存在源向量寄存器冲突和功能部件冲突,且只有向量寄存器的写后读相关,则可以通过链接技术实现这些向量指令的并行处理。
6,向量评价技术(编队,向量计算)
层次存储结构
存储器的层次结构
满足三个指标:容量大,速度快,价格低。
理论依据 ------局部性原理
- 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
- 空间局部性:程序马上将要用到的信息很可能与现在使用的信息在存储空间上是相邻的。
存储的性能参数
设第i个存储器 M i M_i Mi的访问时间为 T i T_i Ti,容量为 S i S_i Si,平均每位价格为 C i C_i Ci ,
- 存储容量 S
- 每位价格 C C = C 1 S 1 + C 2 S 2 S 1 + C=\frac{C_1S_1+C_2S_2}{S_1+} C=S1+C1S1+C2S2
- 平均访问时间 T A 。 T A = T A 1 + ( 1 − H ) T M T A 1 命中时间, T M 失效开晓。 T_A。T_A = T_{A1} + (1-H)T_M T_{A1}命中时间,T_M失效开晓。 TA。TA=TA1+(1−H)TMTA1命中时间,TM失效开晓。
- 命中率H和失效率F H = N 1 / ( N 1 + N 2 ) , F = 1 − H , N 1 : 访问 M 1 的次数, N 2 :访问 M 2 的次数 H=N_1/(N_1+N_2), F=1-H, N_1:访问M_1的次数,N_2:访问M_2的次数 H=N1/(N1+N2),F=1−H,N1:访问M1的次数,N2:访问M2的次数
三级存储结构
- Cache
- 主存储器
- 磁盘存储器(辅存)
可以看成是由’cache-主存’层次和’主存-辅存‘层次构成的系统。 - cache-主存弥补主存速度的不足
- 主存-辅存弥补主存的容量不足
存储器层次的四个问题
- 当把一个块调入高一层存储器时,可以放在哪些位置上?(映像规则)
- 当所有访问的块在高一层存储器中时,如何找到该块?(查找算法)
- 当发生失效时,应该替换哪一块?(替换算法)
- 当进行写访问时,应该进行哪些操作?(写策略)
Cache的基本知识
基本结构和原理
Cache是按块进行管理的。Cache和主存均被分割为大小相同的块。信息以块为单位调入Cache。
- 主存地址(块号) 用于查找该块在主存中的地址,当将主存地址进行变换后,可以用于查找该块在cache中的位置。块内位移用于确定所访问的数据在该块中的位置。
主存地址 : |块地址|块内位移|
映像规则
- 全相联映像:主存中任一块可以被放置到Cache中的任意一个位置。即随便坐。特点:空间利用率最高,冲突概率最低,实现最复杂
- 直接映像:主存中的每一块只能被放置到Cache中唯一一个位置。只有一个位置可以做(相当于hash但是没处理冗余)特点:空间利用率最低,冲突概率最高,实现最简单
- 组相联映像:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置。多路组相联。特点:是直接映像和全相联的一种折衷
查找算法
- 通过查找目录表来实现:主存块的块地址的高位部分,称为标识。每一个主存块能唯一地由其标识来确定。
主存地址: |标识(tag)|索引(index)|块内位移|
这里计算机组成原理学过贴上来
1,直接映射
主要公式 Cache行号 = 主存块号 mod Cache 总行数
直接映射的地址结构如下:
``| 标记| Cache行号 | 块内地址 |
2,全相联映射
主存中的每一块可以插入Cache的任何位置。
地址结构
|标记 | 块内地址|
3,组相联映射
将Cache分成Q个大小相等的组,组间采用直接映射,组内采用全相联映射。
Cache组号 = 主存块号 mod Cache组数
| 标记| 组号| 块内地址|
Cache中主存块的替换算法
(1)随机算法:随机地确定替换的Cache块。
(2)先进先出算法:选择最早调入的行进行替换。
(3)近期最少使用算法(LRU):依据程序的局部性原理,选择近期内长久为访问过的Cache行进行替换的行。
(考点)
Cache的写策略
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
写直达法
- 执行写操作时,不仅写入Cache,而且也写入下一级存储器
- 写直达法的优点:易于实现,一致性好。
- 采用写直达法时,若在进行写操作的过程中CPU必须等待,知道写操作结束,则称CPU写停顿。减少写停顿的一种常用的优化技术:采用写缓冲器
- 按写分配(写时取)写不命中时,先把写单元所在的块调入Cache,再进行写入
写回法
- 执行写操作时,只写入Cache。
- 仅当Cache中相应俄块被替换时,才写回主存。
- 写回法的优点:速度快,所使用的存储器贷款较低。
- 不按写分配(绕写法):写不命中时,直接写入下一级存储器而不调块。
性能分析
Cache有混合Cache和分离Cache两种
**分离Cache平均失效率的计算:
访问指令Cache的百分比
×
\times
×指令Cache的失效率+访问数据Cache的百分比
×
\times
×数据Cache的失效率
分离Cache的平均访存世纪那:
指令所占的百分比
×
\times
×(指令命中时间+指令失效率
×
\times
×失效开销)+数据所占的百分比
×
\times
×(数据命中时间+数据失效率
×
\times
×失效开销)
**
1,失效率(常用指标)
2,平均访问时间(比失效率更好的指标)平均访问时间=命中时间+失效率
×
\times
×失效开销
改进Cache俄性能
三个方面:
- 降低失效率
- 减少失效开销
- 减少Cache命中时间
降低Cache失效的方法
三种失效
- 强制性失效:第一次访问一个块是,该块不再Cache中,需要从下一级存储器中调入Cache。
- 容量失效:如果程序执行所需的块不能全部调入Cache中,则当某些块被替换后,若又被重新访问,就会发生失效。
- 冲突失效:在组相联或直接映像Cache中,若太多的块映像到同一组中毛泽会出现该族中某个块被别的块替换,然后又重新访问的情况。
关系
- 相联度越高,冲突失效就越少
- 强制性失效和容量失效不受相联度的影响
- 强制性失效不受Cache容量的影响,但容量失效却随着容量的增加而减少
减少三种失效的方法
- 强制性失效:增加块大小,预取数据
- 容量失效:增加容量
- 冲突失效:提高相联度
1,当Cache容量不变时,当块大小增加时,不命中率开始时下降,后来反而上升了。 - 一方面它减少了强制不命中性
- 另一方面,由于增加块大小会减少Cache中块的数目,所以可能会增加冲突不命中。
2,增加Cache的容量:最直接的方法。 - 增加成本,可能增加命中时间
3,提高相联度
2:1经验规则:容量为N的直接映像Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多
提高相联度是以增加命中时间为代价的
4,Victim Cache
基本思想:在Cache和它从下一级存储器调数据的通路之间设置一个全相联的小Cache,用于存放被替换出去的块以备重用。
作用:对于减小冲突失效很有效,特别是对于小容量的直接映像数据Cache,作用尤其明显。
5,硬件预取
6,编译器控制的预取 - 寄存器预取,Cache预取。按照预取数据存放的位置
- 故障行预取
- 非故障性预取
目的:使执行指令和读取数据能重叠执行。
7,用编译器技术减少Cache的失效 - 在编译时对程序中的指令和数据重新组织,以降低Cache的失效率。
- 数据合并,内外循环交换,循环融合,分块(大数据打散)
伪相联Cache
取直接映像和组相联的优点:命中时间小,使效率低
基本工作原理
在逻辑上把直接映像Cache的空间上下平分为两个区。对于任何一次访问,伪相联Cache先按直接映像Cache的方式处理。若命中,则其访问过程与直接映像Cache的情况一样。若不命中,则再到另一区相应的位置去查找。若找到,则发生了伪命中,否则就只好访问下一级存储器:平均访存时间=命中时间+失效率*失效开销(相联)
**
失效
率
伪相联
=
失效
率
二路组相联
,命中时
间
伪相联
=
命中时
间
1
路
+
伪命中
率
伪相联
∗
2
失效率_{伪相联}=失效率_{二路组相联},命中时间_{伪相联}=命中时间_{1路}+伪命中率_{伪相联}*2
失效率伪相联=失效率二路组相联,命中时间伪相联=命中时间1路+伪命中率伪相联∗2
伪命中
率
伪相联
=
命中
率
2
路
−
命中
率
1
路
=
(
1
−
失效
率
2
路
)
−
(
1
−
失效
率
1
路
)
=
失效
率
1
路
−
失效
率
2
路
伪命中率_{伪相联}=命中率_{2路}-命中率_{1路}=(1-失效率_{2路})-(1-失效率_{1路})=失效率_{1路}-失效率_{2路}
伪命中率伪相联=命中率2路−命中率1路=(1−失效率2路)−(1−失效率1路)=失效率1路−失效率2路
减少Cache不命中开销
让读失效优先于写
Cache中的写缓冲器导致对存储器访问的复杂化。
- 在不命中时,所读单元的最新值有可能还在缓冲器中,尚未写入主存。
解决问题的方法: - 推迟对读不命中的处理(被动等)
- 检查写缓冲器中的内容(主动检查),若没有冲突且存储器可访问,就继续处理读失效
子块放置技术
为减少标识的位数,可采用增加块大小的 方法,但这会增加失效开销,故应采用子块放置技术。
概念:把Cache块进一步划分为更小的块(子块),并给每个子块赋予一位有效位,用于指明该子块中的数据是否有效。Cache与下一级存储器之间以子块为单位传送数据。但标识仍以块为单位。
请求字处理技术
1,从下一级存储器调入Cache的块中,只有一个字是立即需要的。这个字称为请求字。
2,应尽早把请求字发送给CPU
◆ 尽早重启动:调块时,从块的起始位置开始读起。一旦请求字到达,就立即发送给 CPU,让CPU继续执行。
◆ 请求字优先:调块时,从请求字所在的位置读起。这样,第一个读出的字便是请求字。将之立即发送CPU。
非阻塞Cache技术
采用尽早重启动技术时,请求字到达之前,CPU要等待,乱序执行的机器要求,在CACHE失效时,CPU无需停顿,这就要求CACHE是非阻塞Cache。
- 非阻塞Cache:Cache失效时仍允许CPU进行 其它的命中访问。即允许“失效下命中”
- 进一步提高性能:“多重失效下命中”,“失效下失效” (存储器必须能够处理多个失效,“多体”)
- 失效下命中不影响命中时间(潜在优点)
- 重叠失效个数对平均访问时间的影响
两级Cache(看另外笔记)
◆ 第一级Cache(L1)小而快-- 与CPU速度匹配
◆ 第二级Cache(L2)容量大–降低实际失效开销
平均访问时间=命中时间L1+失效率L1×失效开销L1
失效开销L1 = 命中时间L2+失效率L2×失效开销L2
平均访问时间=命中时间L1+失效率L1×(命中时间L2+失效率L2×失效开销L2)
局部失效率=该级Cache的失效次数/到达该级Cache的访问次数
例如:上述式子中的失效率L2
全局失效率=该级Cache的失效次数/CPU发出的访存的总次数
全局失效率L2=失效率L1×失效率L2
评价第二级Cache时,应使用全局失效率这个指标。
减少命中时间
命中时间直接影响到处理器的时钟频率。在当今的许多计算机中,往往是Cache的访问时间限制了处理器的时钟频率。
容量小,结构简单的Cache
- 硬件简单,相对速度就快
- 使Cache足够小,使其与CPU一起放在同一块芯片
虚拟Cache
在虚拟存储器中,CPU发出虚拟地址,需用TLB硬件动态转变成物理地址去访问CACHE,这增加了系统的存取时间。
- 虚拟Cache: 访问Cache的索引以及Cache中的标识都是虚拟地址(一部分)
- 并非人人都采用虚拟Cache(为什么?)
• 地址切换时可能需要清空CACHE
• 别名问题
• I/O问题 - 虚拟Cache的清空问题:解决方法:在地址标识中增加PID字段 (进程标识符)
- 同义和别名
解决方法:反别名法(硬件),页着色(软件,UNIX要求别名地址的最后18位相同) - 虚拟索引+物理标识
优点:兼得虚拟Cache和物理Cache的好处
局限性:Cache容量受到限制 (页内位移)
Cache容量≤页大小×相联度 - 举例:IBM3033的Cache
页大小=4KB 相联度=16
![[Pasted image 20240505172515.png]]
![[Pasted image 20240505172621.png]]主存
主要性能指标:延迟和带宽
以往Cache主要关心延迟,I/O关心带宽;现在Cache关心两者存储器技术
- 存储器延迟:访问时间,存储周期
- 行选通和列选通
- DRAM与SRAM
容量:4~8:1
存储周期:8~16:1
价格:1:8~16
一般来说: 主存:DRAM Cache:SRAM - 各代DRAM的典型时间参数(表5-10)
- Amdahl经验规则
为了保持系统平衡,存储容量应随CPU速度 的提高而线性增加。
提高主存性能的存储器组结构
◆ 为了减少失效开销TM,应该:
▲ 减少主存延迟
▲ 提高主存带宽
◆ 增加Cache块大小能利用主存带宽增加所带
来的好处。
在以下的讨论中,我们假设基本存储 器结构的性能为: ▲ 送地址需4个时钟周期;
▲ 每个字的访问时间为24个时钟周期;
▲ 传送一个字的数据需4个时钟周期。
虚拟存储器
基本原理
- 虚拟存储器的特点
◆ 多个进程可以共享主存空间
◆ 程序员不必做存储管理工作
◆ 采用动态再定位,简化了程序的装入
2. 有关虚拟存储器的四个问题
◆ 映象规则全相联
◆ 查找算法 页表,段表,TLB
◆ 替换算法 LRU
◆ 写策略 写回法
块表
- TLB
◆ TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项;
◆ TLB中的内容是页表部分内容的一个副本;
◆ TLB也利用了局部性原理; - Alpha Axp 21064 的地址转换过程
- TLB一般比Cache的标识存储器更小、更快
页面大小的选择
- 大页面和小页面各有优点
如何进行权衡? - 大页面的好处:
◆ 页表的大小与页面大小成反比。较大的页面可以节省实现地址映象所需的存储空间及其它资源;
◆ 较大的页面可以使快速Cache命中的实现更简单(5.5节);
◆ 在主存和辅存之间(也许还通过网络)传送较大的页面比传送较小的页面更有效;
◆ TLB的项数有限,对于给定数目的项数,较大的页面意味着可以高效地实现更多存储空间的地址变换,从而减小TLB失效的次数。
3. 采用较小的页面可以减少空间的浪费
假设每个进程有三个主要的段:文本,堆,堆栈,则 平均浪费1.5个页面。
进程保护和虚存实例
进程:程序呼吸所需的空气及生存的空间。
进程保护
1,界地址寄存器:基地址,上界地址
检测条件:(基地址+地址)<=上界地址
2,虚拟存储器:给每个页面增加访问权限标识
3,环形保护
4,加锁和解锁
第五章复习
1,计算机访存有哪二种局部性规律?人们对存储器的期望?什么是存储器的层次结构?
- 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
- 空间局部性:程序马上将要用到的信息很可能与现在使用的信息在存储空间上是相邻的。
- 期望:满足三个指标:容量大,速度快,价格低。
- 存储器的层次结构是指现代计算机中同时采用多种存储器,充分发挥每种存储器的各自优势,在计算机的软硬件控制下把它们按照一定的层次结构结合成一个有机整体,这样才能解决计算机中存储器容量,价格,成本,之间的矛盾。存储器层次结构通常包括Cache,主存,辅助=存三层。
2,什么是存储器的命中率,失效率,命中时间,失效开销。
命中率:在访问某个存储层次时命中的次数占访问总次数的比例。
失效率:在访问某个存储层次时失效的次数占访问总次数的比例。
命中时间:访问某个存储层次所需的时间,包括判断命中或失效的时间。
失效损失:将数据块从下层存储复制至某层所需的时间,包括数据块的访问时间、传输时间、写入目标层时间和将数据块返回给请求者的时间。
3,对于两层存储系统的平均访问时间等于什么? - 平均访问时间
T
A
。
T
A
=
T
A
1
+
(
1
−
H
)
T
M
T
A
1
命中时间,
T
M
失效开晓。
T_A。T_A = T_{A1} + (1-H)T_M T_{A1}命中时间,T_M失效开晓。
TA。TA=TA1+(1−H)TMTA1命中时间,TM失效开晓。
4,层次化存储体系解决哪四个问题?
映像规则,查找方法,替换算法,写策略
5,cache由哪二个部分组成
块地址(tag,主存块号)和块内地址组成。
6,什么是直接映像及变化?举例子说明?有什么优点缺点
7,什么是全相联映像及变化?举例子说明?有什么优点缺点
8,什么是组相联映像及变化?举例子说明?有什么优点缺点
上面三题见上面
9,什么是替换策略?常用算法,各种算法如何进行替换
(1)随机算法:随机地确定替换的Cache块。
(2)先进先出算法:选择最早调入的行进行替换。
(3)近期最少使用算法(LRU):依据程序的局部性原理,选择近期内长久为访问过的Cache行进行替换的行。
(考点)
10,什么是更新策略?什么是写直达法,写回法?什么是不按写分配法?什么是按写分配法?
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
写直达法
- 执行写操作时,不仅写入Cache,而且也写入下一级存储器
- 写直达法的优点:易于实现,一致性好。
- 采用写直达法时,若在进行写操作的过程中CPU必须等待,知道写操作结束,则称CPU写停顿。减少写停顿的一种常用的优化技术:采用写缓冲器
- 按写分配(写时取)写不命中时,先把写单元所在的块调入Cache,再进行写入
写回法
- 执行写操作时,只写入Cache。
- 仅当Cache中相应俄块被替换时,才写回主存。
- 写回法的优点:速度快,所使用的存储器贷款较低。
- 不按写分配(绕写法):写不命中时,直接写入下一级存储器而不调块。
11,什么是数据cache?指令cache?一体化cache?
12,cache的经验规则:2:1规则。N大小的cache采用
13,降低失效率的方法?减少命中时间的方法?减少失效开销的方法?上面都有
14,伪相联?虚拟cache?什么优点,降低什么失效?
15,虚拟cache的别名问题怎么产生的?如何解决?
- 同义和别名
解决方法:反别名法(硬件),页着色(软件,UNIX要求别名地址的最后18位相同)## 计算机系统结构的基础知识
计算机目前已经发展了五代,这五代在器件,体系结构技术和软件技术方面具有明显特征。按照价格可以分为五个档次:巨型机,大型机,中型机,小型机,微型机。目前计算机体系结构的研究内容:全面提高计算机系统性能,即可用性,可维护性,可缩放性。
计算机系统结构的基本概念
计算机系统的层次结构
- 计算机系统 = 硬件/固件 + 软件
硬件:包括控制器,存储器,系统结构,运算器,等等
软件:包括编译器,解释器,运行环境,调试器等等
计算机语言是从低级向高级进行发展的:高一级的语言相对于低一级语言来说功能更强,更便于应用,但是以低级语言为基础。 - 物理机:用硬件/固件实现的机器(第一级微程序机器和第二级机器语言)
- 虚拟机:由软件实现的机器(第三级操作系统虚拟机,第四级汇编语言虚拟机,第五级高级语言虚拟机,第六级应用语言虚拟机)
计算机体系结构
定义:程序员所看到的计算机的属性,即概念性结构和功能特性。例如
- 数据表示:硬件能直接辨认和处理的数据类型
- 寻址规则:包括最小寻址单元,寻址方式和其表示
- 寄存器定义:包括各种寄存器的定义,数量和使用方式
- 指令集:包括机器指令的操作类型和格式,指令间的排序和控制结构
- 中断系统:中断的类型和中断响应硬件的功能
- 机器工作状态的定义和切换:如管态和目态
- 存储系统
- 信息保护
- I/O结构
实质:确定计算机系统中软硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件的功能。 ※ - 透明性:对一种本来是存在的事物或属性,但从某种角度来看又好像不存在的现象称为透明性。
计算机组成和计算机实现
计算机系统结构,计算机组成和计算机实现三者之间的关系:
- 计算机系统结构是系统的软硬件的交界面
- 计算机组成是系统结构的逻辑实现
- 计算机实现是组成的物理实现
- 同一系统结构可以有不同的组成,同一组成可以有多种实现方式
指令系统的确定 —计算机系统结构 ----软硬件的交界面
指令操作的实现,如取指令,取操作数,运算,送结果等具体操作及排序方式 --------计算机组成
实现这些指令功能的具体电路,器件的设计和装配技术 -----计算机实现
计算机系统结构的分类
Flynn分类法
基本思想:计算机工作过程是指令流的执行和数据流的处理。
- 指令流:计算机执行的指令序列
- 数据流:由指令流调用的数据序列
- 多倍性:在系统性能的瓶颈部件上处于同一执行阶段的指令或数据的最大个数
单指令流单数据流 SISD
典型结构:冯诺依曼结构 ----- 传统的顺序计算机
单指令流多数据流 SIMD
单控制器,多处理单元和多对数据进行处理
多指令流单数据流 MISD
多个处理器,对同一数据流进行处理。
多指令流多数据流 MIMD
多机系统 ----- 多个处理系统或多计算机系统每个处理机可以独立执行指令和处理数据一般并行计算机大多采用这种结构。
冯氏分类法
用系统的最大并行度对计算机进行分类
最大并行度:计算机系统在单位时间内能处理的最大的二进制位数。
两参数决定计算机并行度结构类型:字宽和位宽
字串位串 WSBS 字串位并 WSBP 字并位串 WPBS 字并位并 WPBP
Handler分类法
根据并行度和流水线对计算机分类,把计算机的硬件结构分为3个层次
- 程序控制部件的个数K
- 算术逻辑部件或处理部件的个数D
- ALU不见中逻辑电路套数W
- M = (K, D, W)
计算机系统的设计
三条基本原则和方法
- 大概率事件有限原则:对于大概率事件,赋予它的处理权和资源使用权,以获得全局的最优结果
- Amdahl定律:加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性
系统加速比 = 改进后系统性能/改进前系统性能 = 改进前总执行时间/改进后总执行时间
设改进比例α,部件加速比K,改进后总执行时间: T n e w = ( 1 − α ) ∗ T o l d + ( α ∗ T o l d ) / K T_{new}=(1-α)*T_{old}+(α*T_{old})/K Tnew=(1−α)∗Told+(α∗Told)/K 系统加速比 = 1 / ( ( 1 − α ) + α / K ) 1/((1-α)+α/K) 1/((1−α)+α/K) 这里可以得出要想显著加速整个系统,必须提升全系统中相当大的部分的速度
这里Amdahl可能会出计算题 - 程序的局部性原理:程序在执行时所访问地址的分布不是随机的,而是相对簇聚:包括指令和数据两部分
分为时间局部性和空间局部性。(计组也讲过)
定律观点: - 性能增加具有递减规则
- 针对整个任务的一部分进行优化,最大加速比不大于: 1/(1-可改进比例)
- 衡量好的计算机系统是一个带宽平衡的系统
CPU性能公式
- CPU时间:执行一个程序所需要的CPU时间。CPU时间=执行程序所需的时钟周期数 × 时钟周期时间
- CPI :每条指令执行的平均时钟周期数
- IC :程序所具有的指令条数
- CC : 时钟周期
- CLK :执行程序所需的时钟周期数
- CR :时钟频率
- C P U t i m e = ( C P I ∗ I C ) ∗ C C = I C ∗ C P I / C R CPU_{time} = (CPI * IC) * CC = IC * CPI / CR CPUtime=(CPI∗IC)∗CC=IC∗CPI/CR
-
C
P
I
=
C
L
K
/
I
C
CPI = CLK/IC
CPI=CLK/IC
CPU性能依赖于三个参量: IC, CPI, CC;
说明改进CPU性能的三种途径.
尽管同时缩小三个参数是不可能的,而且改变其中的一个都可能因此影响其他两个参量,但改变这三个参数的技术途径是独立的:
–CC -----硬件和组成技术
–CPI-----组成和指令集系统结构
–IC -----指令集系统结构和编译技术
计算机系统的设计方法
主要任务:指令系统设计,数据表示设计,功能的设计,逻辑设计和物理实现
完成的工作:
- 确定用户对计算机系统的功能,价格和性能的要求
- 软硬件功能分配
软件实现:设计容易修改简单,减少硬件成本;但是所实现的功能速度较慢。
硬件实现:速度快,性能高;但是修改困难,灵活性差。 - 设计出生命周期长的系统结构
系统结构设计
1,由上向下方法
适用于专用机的设计,从应用到实现级,周期几年。从层次结构最上面一级开始,逐层向下设计各层的机器。
2,由下向上方法
从层次结构最下开始,逐层向上设计,到那时可能会造成软件和硬件的脱节,使整个系统的效率降低。
3,从中间设计
从软,硬件的交界面开始设计。要求首先进行软,硬件的功能分配,同时考虑硬件能为软件提供什么支持。
优点:避免软,硬件脱节,设计周期短,有利于优化设计。
缺点:对设计人员要求较高,要求具有有效的软件设计环境和开发工具,便于分析,评价和设计。
计算机系统的性能评测
- 评价一个计算机系统结构好坏的标准主要是性能和成本。
- 衡量机器性能的唯一固定且可靠的标准就是真正执行程序的时间。
评价指标:响应时间,吞吐率
计算机系统结构发展
冯诺依曼计算机
- 以运算器为中心
- 采用存储程序原理
- 存储器按地址访问的线性编址的空间
- 控制流由指令流产生
- 指令由操作码和地址码组成
- 指令和数据均以二进制编码表示,采用二进制运算
对体系结构进行改进
存储程序,存储器为中心,分散控制
I/O方式改进:
保护的存储器空间:即指令和数据是否放在同一存储器中
存储器组织结构的发展:
并行处理技术改进CPU组成,重迭,先行控制,多操作部件,流水方式
指令集结构发展:CISC复杂和RISC精简。
软件对系统结构的影响
- 系列机:指具有相同体系结构,但是组成和实现不同的一系列不同型号的计算机系统。也可以说是再一个厂家生产的具有相同指令集结构,但具有不同组成和实现的一系列不同型号的机器。
- 软件兼容:系列机具有相同的体系结构,软件可以在该种系列计算机的各档机器上运行,也就是说同一个软件可以不加修改的运行于体系结构相同的各档机器,而且他们所获得的结果一样,差别只在于有不同的运行时间。向上(下)兼容:指某档机器编制的程序,不加修改的就能运行于比它高(低)档的机器。向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改就能运行在它之前(后)投入市场的机器。向后兼容是软件兼容的根本特征,也是系列机的根本特征。(保证向后兼容,力争向上兼容)
并行性发展
- 并行性:在同一时刻或者是同一时间间隔完成两种或者两种以上性质相同或者不相同的工作。
- 同时性:两个或多个事件在同一个时刻发生的并行性。
- 并发性:两个或多个事件在同一时间间隔内发生的并行性。
并行性等级
- 指令内部并行:指令内部的微操作之间的并行。
- 指令级并行:并行执行两条或者多条指令
- 线程级并行:并行执行两个或者两个以上的线程。
- 任务级或者过程级并行:并行执行两个或多个过程或任务。
- 作业或程序级并行:多个作业或程序间的并行。
提高并行性三种技术途径
- 时间重叠:多个处理过程时间上相互错开 (流水线)—主导作用-------基础:部件功能专用化
- 资源重复:重复设置硬件资源,大幅度提高性能
- 资源共享:软件的一种方式,多个任务按一定时间顺序轮流使用同一套硬件设备。
第一章复习
1,计算机发展的原因或更新换代的标志
- 硬件技术的发展:在器件,体系结构技术和软件技术有明显的特征(主要是依据器件进行五代计算机的划分)-集成电路技术的进步还有存储器(内存外存)和各种外设的进步。
- 体系结构创新:历程 简单->复杂->极其复杂->简单->复杂->极其复杂。
2,计算机系统的层次结构 - 物理机:用硬件/固件实现的机器(第一级微程序机器和第二级机器语言)
- 虚拟机:由软件实现的机器(第三级操作系统虚拟机,第四级汇编语言虚拟机,第五级高级语言虚拟机,第六级应用语言虚拟机)
3,语言的两种实现技术极其各自的优点缺点 - 翻译:先把N+1级程序全部变换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。
- 解释:每当一条N+1级指令被译码之后,就直接取执行一串等效的N级指令,然后再去取下一条N+1级的指令,以此重复执行。
- 解释执行比翻译花费的时间多,但是空间占用少。通常1,2,3级解释执行,4级以上翻译执行(层次结构)
4,计算机系统结构,组成,实现的概念,他们之间的相互关系如何判断某种技术属于哪个方面。 - 计算机系统结构的实质是系统的软硬件的交界面,即机器语言程序员所能看到的传统机器基本所有具有的属性
- 计算机组成是系统结构的逻辑实现
- 计算机实现是组成的物理实现
- 同一系统结构可以有不同的组成,同一组成可以有多种实现方式
指令系统的确定 —计算机系统结构 ----软硬件的交界面
指令操作的实现,如取指令,取操作数,运算,送结果等具体操作及排序方式 --------计算机组成
实现这些指令功能的具体电路,器件的设计和装配技术,例如处理机,主存的恩 -----计算机实现
这里举个例子:
乘法结构和主存系统:
系统结构 | 组成 | 实现 |
---|---|---|
是否有乘法指令 | 乘法器/加法+移位 | 物理实现 |
容量,编址方式 | 速度,措施 | 器件,电路 |
5,什么是透明性,如何进行透明性判断。 |
-
透明性:对一种本来是存在的事物或属性,但从某种角度来看又好像不存在的现象称为透明性。
-
可以通过什么级别的程序员对某个级别的结构是否能够操作和编程,如果不行就是透明的。例如数据总线宽度,微程序对机器语言,汇编语言程序员是透明的,对硬件设计人员是不透明的。
6,软硬件的等效性 -
等效性:软件和硬件在逻辑功能上是等效的,即软件的功能可用硬件或者固件完成;硬件的功能也可以用软件模拟完成。
-
不等效性:软件和硬件实现的性能价格比不同,实现的难易程度不同。
-
总结:在逻辑功能上等效,在性能等方面不等效
7,软硬件取舍原则 -
首先是考虑现有应,器件条件(主要是逻辑器件和存储器),系统要有高的性能价格比例,主要从实现费用,速度和其他性能要求来综合考虑。
-
第二个是要考虑到准备采用和可能采用的组成技术,使它尽可能不要过多或不合理地限制各种组成,实现技术的采用。
-
第三个是从“软”的角度考虑如何为编译和操作系统的实现以及为高级语言程序的设计提供更多好的硬件支持放在首位。
8,实现软件移植的方法:统一高级语言,系列级方法,模拟和仿真(不同体系结构)
9,软件兼容,系列机和兼容机 -
软件兼容:同一个软件可以不加修改地运行于体系结构相同的各档机器,而且它们所获得的结果一样,差别只在于有不同的运行时间。
-
系列机 在一个厂家内生产的具有相同的体系结构,但具有不同组成和实现的一系列不同型号的机器。
-
兼容机:不同厂家生产的具有相同体系结构的计算机。
10,向后兼容是软件兼容的根本特征,也是系列机的根本特征。系列机必须保证向后兼容,力争向上兼容。
11,软件,应用,器件对系统结构的影响 -
上边
12,存储程序计算机的主要特点和改进 -
数据以二进制编码表示,采用二进制运算。
-
机器以运算器为中心
-
指令由操作码和地址码组成
-
控制流由指令流产生
-
指令由操作码和地址码产生
-
存储器按照地址访问线性编址的地址空间来获取程序和数据
主要问题和改进 -
问题1:以运算器件为中心导致的输入输出操作占用快速运算器影响效率。
-
解决1:各种分布式的I/O处理或者输入输出方式如程序控制,DMA方式,I/O处理机
-
问题2:数据和指令存放同一个存储器中,自我修改程序是难以编制,调试和使用的,不利于指令执行的重叠和流水。
-
解决2:通过存储器管理硬件的支持,由操作系统控制在程序执行过程中不准修改程序。
-
问题3:访问存储器次数较多影响计算机系统性能。
-
解决3:按内容访问的相联存储器CAM,大量使用通用寄存器,CPU和主存之间设置Cache
13,计算机系统设计方法:自上而下,自下而上,从中间开始(软硬件功能分配,系统结构),中间指的是什么,有哪些好处。
适用于专用机的设计,从应用到实现级,周期几年。从层次结构最上面一级开始,逐层向下设计各层的机器。 -
由下向上方法:从层次结构最下开始,逐层向上设计,到那时可能会造成软件和硬件的脱节,使整个系统的效率降低。
-
从中间设计: 从软,硬件的交界面开始设计。要求首先进行软,硬件的功能分配,同时考虑硬件能为软件提供什么支持。
14,并行性的二重属性(同时性,并发性)
◆ 同时性(simultaneity)—两个或多个事件在同一时刻发生的并行性。
◆ 并发性(concurrency) —两个或多个事件在在同一时间间隔内发生的并行性。
15,并行性的等级:
从程序执行的角度:(指令内部,指令级,线程级,任务或过程级,作业或程序级)。
从处理数据的角度,并行性由低到搞可以分为:- 字串位串:同时只对一个字的一位进行处理
- 字串位并:同时对一个字的全部位进行处理,不同字之间是串行的
- 字并位串:同时对许多字的同一位进行处理
- 全并行:同时对许多字的全部或部分位进行处理
16,提高并行性的途径(时间重叠(流水线处理机)),资源重复(阵列机,多处理机),资源共享(多道程序,分时系统)
(1) 时间重叠
多个处理过程在时间上相互错开,轮流重迭地使用同一套硬件设备的各个部分, 以加快硬件周转而赢得速度。
(2) 资源重复
根据“以数量取胜”的原则,通过重复地设置资源,尤其是硬件资源,以大幅度提高计算机系统的性能。
(3) 资源共享
这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。如多道程序、分时系统。资源共享既降低了成本,又提高了计算机设备的利用率。多道程序、分时共享
17,费林分类:SISD,SIMD,MISD,MIMD。
18,冯泽云分类:wsbs,wsbp,wpbs,wpbp
19,多机系统的耦合度,松耦合,紧耦合系统,同构,异构型多处理机系统,
-
多机系统也遵循时间重叠,资源重复,资源共享的技术途径。
-
耦合度:反映多机系统的各机器之间的物理链接的紧密程度和交互作用能力的强弱
-
最低耦合:耦合度最低的系统。除通过某种中间存储介质之外,各计算机之间没有物理连接,也无共享的联机硬件资源。
-
紧密耦合系统或直接耦全系统:机间物理连接的频带较高,它们往往通过总线或高速开关实现互连,可以共享主存。
-
松散耦合或间接耦合系统:通过通道或通信线路实现计算机间互连,共享某些外围设备(例如磁盘、磁带等),机间的相互作用是在文件或数据集一级进行。
20,性能计算(CPI,CPUtime,MIPS,MFLOPS)
21,Amdahl定律,加速比计算,程序局部性原理(时间局部性,空间局部性)
22,高频时间原理
计算机指令集结构设计
指令集结构的分类
指令系统是计算机系统的主要组成部分,是计算机系统的一个主要软硬件分界面,是软件设计者和硬件设计者沟通的桥梁。
- 1,在CPU中操作数的存储方式
- 2,指令显中显示表示的操作数个数
- 3,操作数的寻址方式
- 4,指令集所提供的操作类型
- 5,操作数的类型和大小
指令系统设计的依据
- 应用系统的需求
- 对操作系统编译的支持
- 计算机的定量设计原则
- 现有指令系统的测量统计数据
指令系统设计的内容
- 数据在CPU中的存放位置
- 编码方式
- 操作种类
- 操作数的类型和长度
- 寻址方式
根据数据在CPU内部的存放方式
- 堆栈型:简单,指令短;堆栈不能随机访问,很难生成有效代码
- 累加器型:见笑了机器的内部状态,指令小;累加器是唯一的暂存器,通信开销大
- 通用寄存器型:代码生成最一般的模型;指令较长
寄存器类型
有三类
- R-R型:简单,执行快;指令数多
- R-M型:易于编码,代码密度较高;操作数不对等
- M-M型:代码密度最高;指令长度变化大
寻址方式
即指令系统如何形成要访问的数据的地址。
立即寻址和偏移寻址方式的使用频率最高。
指令系统的设计
- 基本指令:给用户使用的最常用的指令:算术逻辑运算,数据传输类,控制类
- 专用指令:针对特殊应用领域需要而设计的指令:浮点指令,字符串,图像指令。
- 特权指令:仅供系统操作员使用的指令:虚存管理,系统调用
复杂指令集计算机 CISC
缺点:使用频率相差悬殊;带来了计算机体系结构的复杂性,增加了研制时间和成本;不利于流水线设计提高系统性能;许多复杂指令需要复杂的操作,因此运行速度慢。
精简指令集计算机RISC
尽可能把指令兄台那个精简化,指令条数少且功能简单。有利于流水线护设计,因为频率相差不大,且运行时间相差不大。
对指令系统的基本要求
- 完整性:在一个有限可用的存储空间内,对于任何可解问题,指令系统所提供的指令足够使用。
- 规整性:没有或尽可能减少例外的情况和特殊的应用,所有运算都能对称,均匀地再存储器单元或寄存器单元之间进行。(对称性,均匀性)
- 正交性:指令在编码时应该是互相独立,互不相关的。
- 高效率
- 兼容性:主要实行向后兼容
操作数的类型,表示和大小
- 数据表示:是指计算机硬件能够直接识别,指令系统可以直接使用的哪些数据类型
- 数据结构:面向应用和软件系统所处理的各类数据类型,研究这些数据类型的逻辑结构和物理结构之间的关系和相应的算法。
控制指令设计
定义:控制指令用来改变控制流。
- 跳转:指令时无条件改变控制流。
- 分支:有条件改变控制流。
指令集格式的优化
※哈夫曼编码※
做题即可,画树
等长扩展码
在哈夫曼码的基础上,通过使用频率宏观分布,将编码长度扩展成几种长度的编码,达到即接近全哈夫曼码的码长,也具有定长码的规整性。
指令格式的优化:
存在的问题:
- 如果指令字的宽度固定,地址码的长度和个数固定,则操作码的缩短并不能带来好处,只是使指令字出现空白浪费。
- 应该采用地址个数可变或地址码长度可变的方案。
- 最常用的操作码最短,其地址字段个数最多。
三种编码格式: - 可变长度编码:
-当指令系统的寻址方式和操作种类很多时,这种编码格式是最好的
-最少的二进制位来表示目标代码
-可能会使各条指令的字长和执行时间相差很大
- 固定长度编码格式
-将操作类型和寻址方式一起编码到操作码
- 混合型编码格式
现代编译器的结构和相关技术
- 语言预处理
- 高级优化
- 全局优化
- 代码生成
目标:快速的编译,支持程序的调试,多种语言之间的互操作性。
编译器对程序进行优化编译工作量的多少和编译器设计的复杂度等问题之间存在一个折衷关系。
寄存器分配
这个是编译优化的一个重要的问题,分配算法均是基于“图着色法”发展而来的。
基本思想:根据将要分配给寄存器的各个可能候选变量和它们使用的范围
优化的集中类型
- 高级优化:一般在源代码上进行,与机器无关。如用过程体取代过程调用。
- 局部优化:在不含转移分支的代码段(基本块)进行:如消除公共子表达式,常数传播,压缩堆栈高度,调整表达式计算顺序等。
- 全局优化:在局部优化的基础上,;考虑到各种分支情况,对循环和分支进行一系列的优化转换。
- 寄存器分配:表达式计算,传递参数,存放变量
- 基于机器的优化:尽可能利用机器的特点,如降低操作强度,流水线调度。
计算机体系结构对当前编译技术的影响
基本原则:程序中经常出现的部分要尽量的加速,而对较少出现的部分要力求正确。
指令集结构的设计原则
- 规整性:要求指令集的三个主要元素(操作,数据类型和寻址方式)必须正交。
- 提供基本指令,而非解决方案
- 简化方案的折衷取舍标准
- 对于在编译时就已经知道的量,提供能够将其变为常数的指令。
DLX指令集结构
DLX是一种多元未饱和型指令集结构,其设计思想:
- 具有一个简单的Load/store指令集
- 注重指令流水效率
- 简化指令的译码
- 高效支持编译器
第二章复习
1,指令系统设计的内容(指令集结构,操作种类,编码方式,寻址方式,操作数类型,大小)
2,对指令系统的基本要求(完整性,规整型,正交性,高效性,兼容性)
3,指令系统设计的主要依据(应用系统的需求,现行指令系统的使用频度统计数据,计算机的;定量设计原则,对编译,操作系统的支持)
4,根据操作数在CPU中的存访位置,指令集结构分为(堆栈型,累加器型,通用寄存器型),各有什么优点和缺点?
- 堆栈型:简单,指令短;堆栈不能随机访问,很难生成有效代码
- 累加器型:见笑了机器的内部状态,指令小;累加器是唯一的暂存器,通信开销大
- 通用寄存器型:代码生成最一般的模型;指令较长
5,通用寄存器型又分为R-R,R-M,M-M型,各自的优缺点 - R-R型:简单,执行快;指令数多
- R-M型:易于编码,代码密度较高;操作数不对等
- M-M型:代码密度最高;指令长度变化大
6,编址方式:字节,字,位 - 字:实现容易,但是不支持非数值的计算
- 字节:最普遍,但由数据存放和对齐问题
- 位:可变字长运算,地址信息浪费量大
7,编址空间:统一编址,单独编址,通用寄存器,主存和设备统一编址 - 三个零地址空间:通用寄存器,主存,I/O设备独立编址
- 两个零地址空间:通用寄存器独立编址,I/O设备和主存统一编址,高端地址一般用于I/O接口寄存器
- 一个零地址空间:所有存储设备统一编址,低端:通用寄存器,高端:I/O设备
8,数据类型,数据表示,数据结构,引入数据表示的原则。 - 数据表示和数据结构是软硬件的分界面之一
- 确定数据表示是软硬件取舍折衷的问题,也时体系结构设计要解决的难题之一
- 确定数据标识的原则:缩短程序运行时间,减少CPU和主存之间的通信量,这种根据数表示的通用性和利用率
9,CISC,RISC的缺陷 - CISC缺点:使用频率相差悬殊;带来了计算机体系结构的复杂性,增加了研制时间和成本;不利于流水线设计提高系统性能;许多复杂指令需要复杂的操作,因此运行速度慢。
- RISC缺点:影响了编译技术中寄存器分配算法,数据和控制相关性分析,要设计复杂的子程序库
RISC特点: - 大多数指令在单时钟周期内完成
- 采用Load/Store结构
- 硬联逻辑实现
- 减少指令和寻址方式的种类
- 固定指令格式
- 注重译码的优化
10,RISC的设计原则?RISC的关键技术,思想精华(降低CPI)
设计原则: - 指令条数少,指令功能简单
- 采用简单而又统一的指令格式,并减少寻址方式
- 指令的执行在单个机器周期内完成
- 只有load和store指令才能访问存储器
- 大多数指令采用硬连接逻辑来实现
- 强调优化编译器的作用,为高级语言程序生成优化的代码
- 充分利用流水线技术来提高性能
11,重叠寄存器窗口技术及其目的:
目标:缩短CALL,RETURN操作时间。
方法: - 将设置的大量的寄存器,分成多个组和全局区
- 每个组中分高,本地,低三个区
- 相邻组的高,低区重叠,加速参数和结果的传递
结果:节省了保存现场和恢复现场等辅助时间。
12,指令中寻址方式的表示方法
13,操作数类型的表示方法(编码于操作码,带标记的数据类型(操作数)) - 1,操作数的类型由操作码指定
- 2,带标志符的数据类型:
优点:简化了指令系统和程序设计;简化了编译程序;为软件调试和应用软件开发提供了支持;支持了系统的实现和数据类型的无关的要求。
问题:会降低指令的执行速度,增加了硬件的复杂度,每个数据字因增设标志符,使程序所占用的主存空间增加。
14,带标识符数据类型的优缺点
优点: - 简化了指令系统和程序设计
- 简化了编译程序
- 为软件调试和应用软件开发提供了支持
- 支持了系统的实现和数据类型的无关的要求
缺点: - 会降低指令的执行速度
- 增加了硬件的复杂度
- 每个数据字因为增设标志符,使程序所占用的主存空间增加
15,指令集编码格式(定长编码格式,变长编码格式,混合编码格式) - 变长。特点:适合于操作种类多,寻址方式多。能够有效减少指令集结构的平均指令长度,降低目标代码的长度,使得各条指令的长度和执行时间不大一样。
- 固定长度:适用于操作种类少,寻址方式少,代码空间大,代码密度低,但格式固定,实现简单。
- 混合型编码:通过提供一定类型的指令字长,期望能够兼顾降低目标代码产古和降低译码复杂度两个目标。
16,现代编译器的四级结构,优势 - 语言预处理
- 高级优化
- 全局优化
- 代码生成
流水线技术
概念:把一个重复的过程分为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各个功能段,这样,每个子过程就可以和其他的子过程并行进行。
重叠执行和先行控制
解决方法:
- 设置两个独立编址的存储器:指令存储器,数据存储器
- 指令和数据仍然混合但是设置指令cache和数据cache
- 指令和数据仍然混合存放在同一个主存中,但主存采用多体交叉结构
- 在主存和指令分析部件之间增加指令缓冲站
流水线的技术特点
- 每一个段后面都要有一个缓冲寄存器,即方便传送数据,也能方便forwarding定向技术的使用。
- 通过时间:第一个任务从进入流水线到流出结果所需的时间
- 排空时间:最后一个任务从进入流水线到流出结果所需的时间。
- 流水过程由多个相联系的子过程组成,每个子过程称为流水线的‘级’或者‘段’。‘段’的数目称为流水线的‘深度’。
- 每个子过程由专用的功能段实现
流水线分类
多功能流水线和单功能流水线
- 单功能:只能完成一种固定功能的流水线。
- 多功能:流水线的各段可以进行不同的连接,从而实现不同的功能。
静态流水线和动态流水线
- 静态流水线:在同一时间,多功能流水线的各段只能按同一种功能的连接方式工作。对于静态流水线,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。
- 动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。例如浮点加和浮点乘通过一系列控制组成流水线,而静态的只能相同类型的操作流水。
线性流水线和非线性流水线
- 线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线的各个段时,每一个段最多只流过一次。
- 非线性流水线:可能有反馈回路。可能会出题,计算吞吐率,禁止表,冲突向量。
顺序流水线和乱序流水线
标量处理机和向量流水处理机
即向量机可以执行多对数据相同操作运算。
流水线的性能指标
吞吐率
T
P
=
n
/
T
k
TP=n/T_k
TP=n/Tk n:流水线中任务数量
T
k
T_k
Tk:处理n个任务所用的时间
流水线的实际吞吐率:
T
P
=
n
(
k
+
n
−
1
)
Δ
t
TP = \frac{n}{(k+n-1)\Delta t}
TP=(k+n−1)Δtn
流水线的最大吞吐率:
T
P
m
a
x
=
l
i
m
n
−
>
i
n
f
n
k
+
n
−
1
Δ
t
=
1
Δ
t
TP_{max}=lim_{n->inf}\frac{n}{k+n-1}\Delta t=\frac{1}{\Delta t}
TPmax=limn−>infk+n−1nΔt=Δt1
加速比
加速比是指流水线的速度和等功能非流水线的速度之比。
S
=
T
非流水
T
流水
=
n
m
Δ
t
0
m
Δ
t
0
+
(
n
−
1
)
Δ
t
o
=
m
1
+
m
−
1
n
S=\frac{T_{非流水}}{T_{流水}}=\frac{nm\Delta t_0}{m\Delta t_0+(n-1)\Delta t_o}=\frac{m}{1+\frac{m-1}{n}}
S=T流水T非流水=mΔt0+(n−1)ΔtonmΔt0=1+nm−1m
n:处理n个任务 m:流水线为m段
效率E
指流水线的设备利用率。由于流水线有排空时间和通过时间,所以流水线的各段并不是一直满负荷工作,故:E<1
计算时主要是画出时空图,然后用所用时间t乘上段数s得到分母,又使用格子的面积分子,除一下就行。
流水线的相关和冲突
基本流水线
- 1,取指周期IF:以程序计数器PC中的内容为地址,从存储器中取出指令并放入指令寄存器IR。同时PC值加4,指向顺序的下一条指令
- 2,指令译码ID:将IR中的指令拆分成操作码和操作数,并将操作数放入寄存器。对指令进行译码,并用指令寄存器中的寄存器地址去访问通用寄存器,读出其中的操作数。
- 3,执行周期EX:load和store指令,ALU把指令中所指定的纠错年起的内容和偏移量相加,形成访存有效地址。 ALU指令:ALU按照操作码指定的操作对从通用寄存器中读出的数据进行运算。 分支指令:ALU把指令中给出的偏移量和PC值相加,形成转移目标的地址。同时,对在前一个周期读出的操作数进行判断,确定分支是否成功。
- 4,访存周期MEM:该周期处理的指令只有load,store和分支指令。load:用上一个周期计算出的有效地址从存储器中读出相应的数据。store:把指定的数据写入这个有效地址所指出的存储器单元。分支指令:分支成功,酒吧转移目标地址送入PC,分支指令执行成功。
- 5,写回周期WB:ALU:结果数据来自ALU。load:结果数据来自存储器。
相关性质
概念:指两条指令之间存在某种依赖关系
相关的分类
- 数据相关:之后的指令用到了前面的指令的数据
- 名相关:两条指令之间使用了相同的名,但没有数据流动,改变名字即可消除名字相关性。
- 控制相关:由分支指令引起的相关。
冲突性质
概念:指相邻或相近的两条指令之间存在某种关联,后一条不能在原指定的时钟周期开始执行。
分类
- 结构冲突:硬件资源满足不了同时重叠执行质量唵的要求
- 数据冲突:当一条指令需要用到前面某条指令的结果,从而不能重叠执行时
- 控制相关:当流水线遇到分支指令和其他能够改变PC值的指令时
结构冲突
解决办法1:插入气泡,暂停周期
解决方法2:设置相互独立的指令存储器和数据存储器或者Cache
数据冲突
分三种
- 写后读:i写入之前,j先去读,读出内容错误
- 写后写:i写入前,j先写,导致最后写入的i,结果错误
- 读后写:在i读如之前,j先写,i读出的内容错误
插入stall:等待竞争消除再继续执行。
定向技术:减少写后读数据冲突引起的停顿:(旁路/短路) - 在计算结果没出来之前,后面等待使用该结果的指令并不一定立即需要该计算结果,如果能将其直接传送到其他要用的地方,就可以避免停顿。
控制冲突
流水线遇到分支指令和其它改变PC值的指令所引起的冲突。
途径:1,在流水线尽早判断分支转移是否成功;2,转移成功时,尽量早计算目标地址。
最简单的解决方法:冻结/排空流水线。
- 可以通过预测下一条指令来该旅性的提高效率,分别可以预测分支失败和预测分支成功。
- 还有通过延迟分支从逻辑上延长分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽组成。
指令级流水线并行
并行性等级:粗粒度、细粒度
指令级的并行度:每个时钟同时启动的指令或操作数。
单发射结构:每个周期只发射一条指令;
多发射结构:在流水线结构基础上,每个周期可以发射多条指令。比如:超标量,超流水线,VLIW
影响超标量流水性能因素:多条指令同时存取,数据通道可能会成为瓶颈;多条指令间不能有相关,否则部分流水线空转; 相关专用通道只能针对多条指令后的指令进行。
第三章复习
1,流水线概念
概念:把一个重复的过程分为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各个功能段,这样,每个子过程就可以和其他的子过程并行进行。
2,流水线分类
- 根据功能:多功能流水线,单功能
- 根据连接方式:静态,动态
- 根据级别:部件级,处理机级,处理机间级
- 流动顺序:顺步,异步
- 反馈回路:线性,非线性
- 数据表示:向量流水线,标量流水线
3,非线性流水线的调度计算。(出题)
4,流水线中的相关 - 数据相关:之后的指令用到了前面的指令的数据
- 名相关:两条指令之间使用了相同的名,但没有数据流动,改变名字即可消除名字相关性。
- 控制相关:由分支指令引起的相关。
5,流水线的冲突 - 结构冲突
- 数据冲突:(WAR,WAW,RAW)DLX流水线一般至于
- 控制冲突
5-附:冲突的解决办法 - 结构冲突(细分功能部件,重复设置资源)
- 数据冲突(暂停,定向技术,流水线调度)
- 控制冲突(暂停,预测成功分支,预测失败分支,延迟转移,分支取消技术)
6,相关性以及数据冲突判断,时空图,调度策略
7,DLX(MIPS)流水线
MIPS流水线共有8个段其将访存操作进一步细分。
向量处理机
主要考察链接技术应用和不应用下时间的差异,计算时间,效率。
- 向量处理机:具有向量数据表示和相应向量指令的流水线处理机。
- 标量处理机:不具有向量数据表示和相应向量指令的处理机。
链接技术
概念:将前一条向量指令流水线流出的结果向量元素直接链入后续向量指令所用的流水线,使多个向量流水线之间的功能部件链接,形成大流水线。
画出相关的图然后进行计算:
T
串
=
∑
i
=
1
n
T
各指令
+
N
−
1
T_{串}=\sum_{i=1}^{n}T_{各指令}+N-1
T串=i=1∑nT各指令+N−1
N为向量长度,
T
各指令
T_{各指令}
T各指令为各个指令启动时间。
向量机的性能评价
- 向量指令处理时间
T
v
p
T_{vp}
Tvp:
T
s
T_s
Ts:向量流水线的建立时间
T
v
f
T_{vf}
Tvf:向量流水线的流过时间
T
c
T_c
Tc:流水线瓶颈段的执行时间
存在瓶颈: T v p = T s + T v f + ( n − 1 ) T c 存在瓶颈:T_{vp}=T_s+T{vf}+(n-1)Tc 存在瓶颈:Tvp=Ts+Tvf+(n−1)Tc
不存在瓶颈 : T v p = [ s + e + ( n − 1 ) ] T c l k = [ T s t a r t + n ] T c l k 不存在瓶颈: T_{vp}=[s+e+(n-1)]T_{clk}=[T_{start}+n]T_{clk} 不存在瓶颈:Tvp=[s+e+(n−1)]Tclk=[Tstart+n]Tclk
s:向量流水线建立时间对应的时钟周期数 e:向量流水线的流过时间所对应的时钟周期 T c l k T_{clk} Tclk:时钟周期时间 - 峰值性能
R
I
n
f
R_{Inf}
RInf :表示向量长度为无限大时,向量处理机的最高性能,也称为峰值性能。
R i n f = l i m n − > i n f 向量指令序列中浮点运算次数 × 时钟频率 向量指令序列执行所需的时钟周期数 R_{inf} = lim_{n->inf}\frac{向量指令序列中浮点运算次数\times时钟频率}{向量指令序列执行所需的时钟周期数} Rinf=limn−>inf向量指令序列执行所需的时钟周期数向量指令序列中浮点运算次数×时钟频率 - 半性能向量长度 n 1 / 2 n_{1/2} n1/2:指向量处理机的运行性能达到其峰值的一半时所必须满足的向量长度。
- 向量长度临界值 n v n_v nv:对于某一计算任务而言,向量方式的处理速度优于标量串行方式处理速度时需要的最小向量长度。
第四章复习
1,向量处理机和标量处理机
- 向量处理机:具有向量数据表示和相应向量指令的流水线处理机。
- 标量处理机:不具有向量数据表示和相应向量指令的处理机。
2,向量处理方式(横向,纵向,纵横)
针对 D = A × ( B + C ) D=A\times(B+C) D=A×(B+C) - 横向(水平): K i = b i + c i ; D i = K i × A i K_i=b_i+c_i;D_i=K_i\times A_i Ki=bi+ci;Di=Ki×Ai 相关N次(写后读) 功能切换 2N次(乘法和加法)
- 纵向(垂直) K = B + C ; D = K × A K=B+C;D=K \times A K=B+C;D=K×A 相关1次 功能切换 1 次
- 纵横处理方式:把向量长度为某个固定值的若干组,组内按纵向方式处理,依次处理各个组。
3,向量处理机的结构(存储器-存储器,寄存器-寄存器) - 存储器-存储器:采用纵向处理方式的向量处理机对处理机结构的要求。
向量指令的源向量和目的向量都是存放在存储器中,运算的中间结果需要送回存储器。流水线运算部件的输入和输出端直接和存储器相连,从而构成存储器-存储器型操作的运算流水线。一般采用多体交叉并行存储器和缓冲器技术
- 寄存器-寄存器:采用分组处理方式的向量处理机的处理机结构要求。
让运算部件的输入输出都与向量寄存器相连
4,向量并行技术(功能部件不冲突,向量寄存器不冲突)
- 功能部件不冲突:每种功能部件一般只设置一个。如:V3<-V1 × \times ×V2 V6<-V4 × \times × V5
- 向量寄存器不冲突:不允许出现RAW,WAR,WAW,RAR相关。如:V4<-V1+V2 V5<-V2
×
\times
× V3
5,向量链接技术(链接条件),分段开采技术 - 分段开采技术:处理向量的长度大于向量寄存器的情况。当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段。其由系统硬件和软件控制完成,对程序员是透明的。
- 链接条件:如果相邻的多条向量指令之间不存在源向量寄存器冲突和功能部件冲突,且只有向量寄存器的写后读相关,则可以通过链接技术实现这些向量指令的并行处理。
6,向量评价技术(编队,向量计算)
层次存储结构
存储器的层次结构
满足三个指标:容量大,速度快,价格低。
理论依据 ------局部性原理
- 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
- 空间局部性:程序马上将要用到的信息很可能与现在使用的信息在存储空间上是相邻的。
存储的性能参数
设第i个存储器 M i M_i Mi的访问时间为 T i T_i Ti,容量为 S i S_i Si,平均每位价格为 C i C_i Ci ,
- 存储容量 S
- 每位价格 C C = C 1 S 1 + C 2 S 2 S 1 + C=\frac{C_1S_1+C_2S_2}{S_1+} C=S1+C1S1+C2S2
- 平均访问时间 T A 。 T A = T A 1 + ( 1 − H ) T M T A 1 命中时间, T M 失效开晓。 T_A。T_A = T_{A1} + (1-H)T_M T_{A1}命中时间,T_M失效开晓。 TA。TA=TA1+(1−H)TMTA1命中时间,TM失效开晓。
- 命中率H和失效率F H = N 1 / ( N 1 + N 2 ) , F = 1 − H , N 1 : 访问 M 1 的次数, N 2 :访问 M 2 的次数 H=N_1/(N_1+N_2), F=1-H, N_1:访问M_1的次数,N_2:访问M_2的次数 H=N1/(N1+N2),F=1−H,N1:访问M1的次数,N2:访问M2的次数
三级存储结构
- Cache
- 主存储器
- 磁盘存储器(辅存)
可以看成是由’cache-主存’层次和’主存-辅存‘层次构成的系统。 - cache-主存弥补主存速度的不足
- 主存-辅存弥补主存的容量不足
存储器层次的四个问题
- 当把一个块调入高一层存储器时,可以放在哪些位置上?(映像规则)
- 当所有访问的块在高一层存储器中时,如何找到该块?(查找算法)
- 当发生失效时,应该替换哪一块?(替换算法)
- 当进行写访问时,应该进行哪些操作?(写策略)
Cache的基本知识
基本结构和原理
Cache是按块进行管理的。Cache和主存均被分割为大小相同的块。信息以块为单位调入Cache。
- 主存地址(块号) 用于查找该块在主存中的地址,当将主存地址进行变换后,可以用于查找该块在cache中的位置。块内位移用于确定所访问的数据在该块中的位置。
主存地址 : |块地址|块内位移|
映像规则
- 全相联映像:主存中任一块可以被放置到Cache中的任意一个位置。即随便坐。特点:空间利用率最高,冲突概率最低,实现最复杂
- 直接映像:主存中的每一块只能被放置到Cache中唯一一个位置。只有一个位置可以做(相当于hash但是没处理冗余)特点:空间利用率最低,冲突概率最高,实现最简单
- 组相联映像:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置。多路组相联。特点:是直接映像和全相联的一种折衷
查找算法
- 通过查找目录表来实现:主存块的块地址的高位部分,称为标识。每一个主存块能唯一地由其标识来确定。
主存地址: |标识(tag)|索引(index)|块内位移|
这里计算机组成原理学过贴上来
1,直接映射
主要公式 Cache行号 = 主存块号 mod Cache 总行数
直接映射的地址结构如下:
``| 标记| Cache行号 | 块内地址 |
2,全相联映射
主存中的每一块可以插入Cache的任何位置。
地址结构
|标记 | 块内地址|
3,组相联映射
将Cache分成Q个大小相等的组,组间采用直接映射,组内采用全相联映射。
Cache组号 = 主存块号 mod Cache组数
| 标记| 组号| 块内地址|
Cache中主存块的替换算法
(1)随机算法:随机地确定替换的Cache块。
(2)先进先出算法:选择最早调入的行进行替换。
(3)近期最少使用算法(LRU):依据程序的局部性原理,选择近期内长久为访问过的Cache行进行替换的行。
(考点)
Cache的写策略
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
写直达法
- 执行写操作时,不仅写入Cache,而且也写入下一级存储器
- 写直达法的优点:易于实现,一致性好。
- 采用写直达法时,若在进行写操作的过程中CPU必须等待,知道写操作结束,则称CPU写停顿。减少写停顿的一种常用的优化技术:采用写缓冲器
- 按写分配(写时取)写不命中时,先把写单元所在的块调入Cache,再进行写入
写回法
- 执行写操作时,只写入Cache。
- 仅当Cache中相应俄块被替换时,才写回主存。
- 写回法的优点:速度快,所使用的存储器贷款较低。
- 不按写分配(绕写法):写不命中时,直接写入下一级存储器而不调块。
性能分析
Cache有混合Cache和分离Cache两种
**分离Cache平均失效率的计算:
访问指令Cache的百分比
×
\times
×指令Cache的失效率+访问数据Cache的百分比
×
\times
×数据Cache的失效率
分离Cache的平均访存世纪那:
指令所占的百分比
×
\times
×(指令命中时间+指令失效率
×
\times
×失效开销)+数据所占的百分比
×
\times
×(数据命中时间+数据失效率
×
\times
×失效开销)
**
1,失效率(常用指标)
2,平均访问时间(比失效率更好的指标)平均访问时间=命中时间+失效率
×
\times
×失效开销
改进Cache俄性能
三个方面:
- 降低失效率
- 减少失效开销
- 减少Cache命中时间
降低Cache失效的方法
三种失效
- 强制性失效:第一次访问一个块是,该块不再Cache中,需要从下一级存储器中调入Cache。
- 容量失效:如果程序执行所需的块不能全部调入Cache中,则当某些块被替换后,若又被重新访问,就会发生失效。
- 冲突失效:在组相联或直接映像Cache中,若太多的块映像到同一组中毛泽会出现该族中某个块被别的块替换,然后又重新访问的情况。
关系
- 相联度越高,冲突失效就越少
- 强制性失效和容量失效不受相联度的影响
- 强制性失效不受Cache容量的影响,但容量失效却随着容量的增加而减少
减少三种失效的方法
- 强制性失效:增加块大小,预取数据
- 容量失效:增加容量
- 冲突失效:提高相联度
1,当Cache容量不变时,当块大小增加时,不命中率开始时下降,后来反而上升了。 - 一方面它减少了强制不命中性
- 另一方面,由于增加块大小会减少Cache中块的数目,所以可能会增加冲突不命中。
2,增加Cache的容量:最直接的方法。 - 增加成本,可能增加命中时间
3,提高相联度
2:1经验规则:容量为N的直接映像Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多
提高相联度是以增加命中时间为代价的
4,Victim Cache
基本思想:在Cache和它从下一级存储器调数据的通路之间设置一个全相联的小Cache,用于存放被替换出去的块以备重用。
作用:对于减小冲突失效很有效,特别是对于小容量的直接映像数据Cache,作用尤其明显。
5,硬件预取
6,编译器控制的预取 - 寄存器预取,Cache预取。按照预取数据存放的位置
- 故障行预取
- 非故障性预取
目的:使执行指令和读取数据能重叠执行。
7,用编译器技术减少Cache的失效 - 在编译时对程序中的指令和数据重新组织,以降低Cache的失效率。
- 数据合并,内外循环交换,循环融合,分块(大数据打散)
伪相联Cache
取直接映像和组相联的优点:命中时间小,使效率低
基本工作原理
在逻辑上把直接映像Cache的空间上下平分为两个区。对于任何一次访问,伪相联Cache先按直接映像Cache的方式处理。若命中,则其访问过程与直接映像Cache的情况一样。若不命中,则再到另一区相应的位置去查找。若找到,则发生了伪命中,否则就只好访问下一级存储器:平均访存时间=命中时间+失效率*失效开销(相联)
**
失效
率
伪相联
=
失效
率
二路组相联
,命中时
间
伪相联
=
命中时
间
1
路
+
伪命中
率
伪相联
∗
2
失效率_{伪相联}=失效率_{二路组相联},命中时间_{伪相联}=命中时间_{1路}+伪命中率_{伪相联}*2
失效率伪相联=失效率二路组相联,命中时间伪相联=命中时间1路+伪命中率伪相联∗2
伪命中
率
伪相联
=
命中
率
2
路
−
命中
率
1
路
=
(
1
−
失效
率
2
路
)
−
(
1
−
失效
率
1
路
)
=
失效
率
1
路
−
失效
率
2
路
伪命中率_{伪相联}=命中率_{2路}-命中率_{1路}=(1-失效率_{2路})-(1-失效率_{1路})=失效率_{1路}-失效率_{2路}
伪命中率伪相联=命中率2路−命中率1路=(1−失效率2路)−(1−失效率1路)=失效率1路−失效率2路
减少Cache不命中开销
让读失效优先于写
Cache中的写缓冲器导致对存储器访问的复杂化。
- 在不命中时,所读单元的最新值有可能还在缓冲器中,尚未写入主存。
解决问题的方法: - 推迟对读不命中的处理(被动等)
- 检查写缓冲器中的内容(主动检查),若没有冲突且存储器可访问,就继续处理读失效
子块放置技术
为减少标识的位数,可采用增加块大小的 方法,但这会增加失效开销,故应采用子块放置技术。
概念:把Cache块进一步划分为更小的块(子块),并给每个子块赋予一位有效位,用于指明该子块中的数据是否有效。Cache与下一级存储器之间以子块为单位传送数据。但标识仍以块为单位。
请求字处理技术
1,从下一级存储器调入Cache的块中,只有一个字是立即需要的。这个字称为请求字。
2,应尽早把请求字发送给CPU
◆ 尽早重启动:调块时,从块的起始位置开始读起。一旦请求字到达,就立即发送给 CPU,让CPU继续执行。
◆ 请求字优先:调块时,从请求字所在的位置读起。这样,第一个读出的字便是请求字。将之立即发送CPU。
非阻塞Cache技术
采用尽早重启动技术时,请求字到达之前,CPU要等待,乱序执行的机器要求,在CACHE失效时,CPU无需停顿,这就要求CACHE是非阻塞Cache。
- 非阻塞Cache:Cache失效时仍允许CPU进行 其它的命中访问。即允许“失效下命中”
- 进一步提高性能:“多重失效下命中”,“失效下失效” (存储器必须能够处理多个失效,“多体”)
- 失效下命中不影响命中时间(潜在优点)
- 重叠失效个数对平均访问时间的影响
两级Cache(看另外笔记)
◆ 第一级Cache(L1)小而快-- 与CPU速度匹配
◆ 第二级Cache(L2)容量大–降低实际失效开销
平均访问时间=命中时间L1+失效率L1×失效开销L1
失效开销L1 = 命中时间L2+失效率L2×失效开销L2
平均访问时间=命中时间L1+失效率L1×(命中时间L2+失效率L2×失效开销L2)
局部失效率=该级Cache的失效次数/到达该级Cache的访问次数
例如:上述式子中的失效率L2
全局失效率=该级Cache的失效次数/CPU发出的访存的总次数
全局失效率L2=失效率L1×失效率L2
评价第二级Cache时,应使用全局失效率这个指标。
减少命中时间
命中时间直接影响到处理器的时钟频率。在当今的许多计算机中,往往是Cache的访问时间限制了处理器的时钟频率。
容量小,结构简单的Cache
- 硬件简单,相对速度就快
- 使Cache足够小,使其与CPU一起放在同一块芯片
虚拟Cache
在虚拟存储器中,CPU发出虚拟地址,需用TLB硬件动态转变成物理地址去访问CACHE,这增加了系统的存取时间。
- 虚拟Cache: 访问Cache的索引以及Cache中的标识都是虚拟地址(一部分)
- 并非人人都采用虚拟Cache(为什么?)
• 地址切换时可能需要清空CACHE
• 别名问题
• I/O问题 - 虚拟Cache的清空问题:解决方法:在地址标识中增加PID字段 (进程标识符)
- 同义和别名
解决方法:反别名法(硬件),页着色(软件,UNIX要求别名地址的最后18位相同) - 虚拟索引+物理标识
优点:兼得虚拟Cache和物理Cache的好处
局限性:Cache容量受到限制 (页内位移)
Cache容量≤页大小×相联度 - 举例:IBM3033的Cache
页大小=4KB 相联度=16
![[Pasted image 20240505172515.png]]
![[Pasted image 20240505172621.png]]
#### 主存
主要性能指标:延迟和带宽
以往Cache主要关心延迟,I/O关心带宽;现在Cache关心两者
###### 存储器技术
1. 存储器延迟:访问时间,存储周期
2. 行选通和列选通 - DRAM与SRAM
容量:4~8:1
存储周期:8~16:1
价格:1:8~16
一般来说: 主存:DRAM Cache:SRAM - 各代DRAM的典型时间参数(表5-10)
- Amdahl经验规则
为了保持系统平衡,存储容量应随CPU速度 的提高而线性增加。
提高主存性能的存储器组结构
◆ 为了减少失效开销TM,应该:
▲ 减少主存延迟
▲ 提高主存带宽
◆ 增加Cache块大小能利用主存带宽增加所带
来的好处。
在以下的讨论中,我们假设基本存储 器结构的性能为: ▲ 送地址需4个时钟周期;
▲ 每个字的访问时间为24个时钟周期;
▲ 传送一个字的数据需4个时钟周期。
虚拟存储器
基本原理
- 虚拟存储器的特点
◆ 多个进程可以共享主存空间
◆ 程序员不必做存储管理工作
◆ 采用动态再定位,简化了程序的装入
2. 有关虚拟存储器的四个问题
◆ 映象规则全相联
◆ 查找算法 页表,段表,TLB
◆ 替换算法 LRU
◆ 写策略 写回法
块表
- TLB
◆ TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项;
◆ TLB中的内容是页表部分内容的一个副本;
◆ TLB也利用了局部性原理; - Alpha Axp 21064 的地址转换过程
- TLB一般比Cache的标识存储器更小、更快
页面大小的选择
- 大页面和小页面各有优点
如何进行权衡? - 大页面的好处:
◆ 页表的大小与页面大小成反比。较大的页面可以节省实现地址映象所需的存储空间及其它资源;
◆ 较大的页面可以使快速Cache命中的实现更简单(5.5节);
◆ 在主存和辅存之间(也许还通过网络)传送较大的页面比传送较小的页面更有效;
◆ TLB的项数有限,对于给定数目的项数,较大的页面意味着可以高效地实现更多存储空间的地址变换,从而减小TLB失效的次数。
3. 采用较小的页面可以减少空间的浪费
假设每个进程有三个主要的段:文本,堆,堆栈,则 平均浪费1.5个页面。
进程保护和虚存实例
进程:程序呼吸所需的空气及生存的空间。
进程保护
1,界地址寄存器:基地址,上界地址
检测条件:(基地址+地址)<=上界地址
2,虚拟存储器:给每个页面增加访问权限标识
3,环形保护
4,加锁和解锁
第五章复习
1,计算机访存有哪二种局部性规律?人们对存储器的期望?什么是存储器的层次结构?
- 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
- 空间局部性:程序马上将要用到的信息很可能与现在使用的信息在存储空间上是相邻的。
- 期望:满足三个指标:容量大,速度快,价格低。
- 存储器的层次结构是指现代计算机中同时采用多种存储器,充分发挥每种存储器的各自优势,在计算机的软硬件控制下把它们按照一定的层次结构结合成一个有机整体,这样才能解决计算机中存储器容量,价格,成本,之间的矛盾。存储器层次结构通常包括Cache,主存,辅助=存三层。
2,什么是存储器的命中率,失效率,命中时间,失效开销。
命中率:在访问某个存储层次时命中的次数占访问总次数的比例。
失效率:在访问某个存储层次时失效的次数占访问总次数的比例。
命中时间:访问某个存储层次所需的时间,包括判断命中或失效的时间。
失效损失:将数据块从下层存储复制至某层所需的时间,包括数据块的访问时间、传输时间、写入目标层时间和将数据块返回给请求者的时间。
3,对于两层存储系统的平均访问时间等于什么? - 平均访问时间
T
A
。
T
A
=
T
A
1
+
(
1
−
H
)
T
M
T
A
1
命中时间,
T
M
失效开晓。
T_A。T_A = T_{A1} + (1-H)T_M T_{A1}命中时间,T_M失效开晓。
TA。TA=TA1+(1−H)TMTA1命中时间,TM失效开晓。
4,层次化存储体系解决哪四个问题?
映像规则,查找方法,替换算法,写策略
5,cache由哪二个部分组成
块地址(tag,主存块号)和块内地址组成。
6,什么是直接映像及变化?举例子说明?有什么优点缺点
7,什么是全相联映像及变化?举例子说明?有什么优点缺点
8,什么是组相联映像及变化?举例子说明?有什么优点缺点
上面三题见上面
9,什么是替换策略?常用算法,各种算法如何进行替换
(1)随机算法:随机地确定替换的Cache块。
(2)先进先出算法:选择最早调入的行进行替换。
(3)近期最少使用算法(LRU):依据程序的局部性原理,选择近期内长久为访问过的Cache行进行替换的行。
(考点)
10,什么是更新策略?什么是写直达法,写回法?什么是不按写分配法?什么是按写分配法?
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
两种写策略
写回法优点:速度快,使用的存储器频率较低。
写直达法优点:易于实现,一致性好。
写直达法
- 执行写操作时,不仅写入Cache,而且也写入下一级存储器
- 写直达法的优点:易于实现,一致性好。
- 采用写直达法时,若在进行写操作的过程中CPU必须等待,知道写操作结束,则称CPU写停顿。减少写停顿的一种常用的优化技术:采用写缓冲器
- 按写分配(写时取)写不命中时,先把写单元所在的块调入Cache,再进行写入
写回法
- 执行写操作时,只写入Cache。
- 仅当Cache中相应俄块被替换时,才写回主存。
- 写回法的优点:速度快,所使用的存储器贷款较低。
- 不按写分配(绕写法):写不命中时,直接写入下一级存储器而不调块。
11,什么是数据cache?指令cache?一体化cache?
12,cache的经验规则:2:1规则。N大小的cache采用
13,降低失效率的方法?减少命中时间的方法?减少失效开销的方法?上面都有
14,伪相联?虚拟cache?什么优点,降低什么失效?
15,虚拟cache的别名问题怎么产生的?如何解决?
- 同义和别名
解决方法:反别名法(硬件),页着色(软件,UNIX要求别名地址的最后18位相同)