《计算机系统结构》期末复习
作者:互联网
资源已上传CSDN
系统结构基本概念
- 按功能划分的多级层次结构
翻译:将L+1级程序全部转化成L级程序,再去执行新产生的L级程序
解释:每一条L+1级指令被译码后,直接去执行一串等效的L级指令
-
计算机系统结构的经典定义
程序员所看到的计算机属性,即概念性结构与功能特性。Amdahl提出的系统结构
传统机器语言级程序员所看到的计算机属性。透明性
在计算机技术中,—种本来是存在的事物或属性,但从某种角度看却好象不存在
-
计算机系统结构概念的实质
确定计算机系统中软、硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件实现的功能。
-
结构 组成 实现
计算机系统结构 — 计算机系统的软、硬件的界面
即机器语言程序员所看到的传统机器级所具有的属性。
计算机组成 — 计算机系统结构的逻辑实现
包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
着眼于:物理机器级内各事件的排序方式与控制方式、各部件的功能以及各部件之间的联系。计算机实现 — 计算机组成的物理实现
一种体系结构可以有多种组成。 一种组成可以有多种物理实现。
指令系统
指令系统的确定--------系统结构
指令系统的逻辑确定--------------组成
具体电路、器件设计及装配技术—实现
主存系统
主存容量与编址方式的确定------系统结构
主存速度的确定、逻辑结构的模式—组成
器件的选定、电路的设计、组装技术–实现除了数据表示之外的所有数据类型都是 系统结构 要研究的内容
-
计算机系统结构分类
-
冯氏分类法
用系统的最大并行度对计算机进行分类。
最大并行度:计算机系统在单位时间内能够处理的最大的二进制位数。 -
Flynn分类法
按照指令流和数据流的多倍性进行分类。
指令流:计算机执行的指令序列。 数据流:由指令流调用的数据序列。
多倍性:在系统受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。Flynn分类法把计算机系统的结构分为4类:
单指令流单数据流(SISD) — 顺序处理计算机
单指令流多数据流(SIMD) — 阵列处理机
多指令流单数据流(MISD)
多指令流多数据流(MIMD) — 多处理机
-
-
计算机系统设计的定量原理
-
以经常性时间为重点
按照对经常发生情况采用优化方法的原则进行选择
-
Amdahl定律
-
加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比
-
一种性能改进的递减规则
如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限
-
计算加速比 P7 可改进比例 部件加速比
-
-
CPU性能公式
CPI: 每条指令的平均时钟周期数
CPI = 求和( CPI_i + IC_i / IC ) — 与第i中指令在执行过程中所占比有关
CPU时间 = 求和( CPI_i * IC_i) * 时钟周期 — 每个指令出现的次数 * 这个指令的时间
-
程序局部性原理
程序执行时所访问的存储地址分布不是随机的而是相对簇聚的
时间局部性:程序j将用到的信息是目前正在使用的信息
空间局部性:程序将用到的信息可能与目前正在使用的信息在空间上相邻
-
计算机系统的性能
-
执行时间和吞吐率
执行时间和性能成反比
CPU时间 — CPU执行给定程序所画时间
-
基准测试程序套件
为了比较全面的反应计算机在各个方面的处理性能,通常采用整套测试程序
-
性能比较: 总执行时间 平均执行 加权执行时间
-
-
软件的可移植性:
一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上正确地运行。差别只是执行时间的不同
实现可移植性的常用方法
采用系列机,模拟与仿真,统一高级语言系列机
由同一厂家生产的具有相同的系统结构,但具有不同组成和实现的一系列不同型号的机器 向后兼容是系列机的根本特征
在系列机发展一种新型号机器,以下设想是否可行?
为增加寻址灵活性和减少平均指令字长,将原等长操作码改为有3类不同码长的扩展操作码、将源操作数寻址方式由操作码指明改为由寻址方式位字段指明(不可行,属于计算机系统结构的内容)
将CPU与主存间的数据通路宽度由16位扩展到32位(可行,属于计算机组成的内容)
将单总线改为双总线(可行)
将原0号通用寄存器改为堆栈指示器(不可行) -
并行性: 计算机系统在同一时刻或统一时间间隔内进行多种运算或操作 – 同时性 并发性
-
提高并行性: 三种途径
时间重叠
引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
流水线
资源重复
引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
多个运算部件或处理部件、多处理机 多操作部件 — 这实现了指令级并行
资源共享
这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。
多道程序、分时系统
既降低了成本,又提高了计算机设备的利用率
-
虚拟机:软件实现的机器以区别于由固件、硬件实现的物理机器
翻译:先把L+1级程序全部变成L级程序后再执行L级程序
解释:当一条L+1级程序被译码后,直接去执行一串等效的L级指令
计算机指令集结构
-
区分不同指令集结构的主要因素:CPU中用来存储操作数的粗出单元类型
堆栈,累加器,通用寄存器组
堆栈结构
累加器结构
通用寄存器结构 -
种通用寄存器指令集结构优缺点 P29
-
**寻址方式:**一种指令集结构如何确定所要访问的数据地址
采用多种寻找方式可以显著减少指令条数,但同时也可能增加计算机实现的复杂度,以及指令的CPI
-
在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性
对指令集的基本要求: 完整性、规整性、高效率、兼容性
-
CISC(复杂指令集计算机)
增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。CISC的功能设计 程序 语言 系统
-
面向目标程序的增强指令功能
对于使用频度高的指令串,用一条新的指令来替代;对于使用频度高的指令,用硬件加速
-
面向高级语言的优化实现
改进指令集,增强对高级语言和编译器的支持,缩小高级语言和机器语言的语义差距
-
面向操作系统的优化
问题:
各种指令使用频度相差悬殊,指令集条数多,CPI大,不利于使用流水线
-
-
RISC(精简指令集计算机)
尽可能地把指令集简化,不仅指令的条数少,而且 指令的功能也比较简单。设计RISC机器遵循的原则
指令条数少而简单。只选取使用频度很高的指令,在此基础上补充一些最有用的指令。
采用简单而又统一的指令格式,并减少寻址方式;指令字长都为32位或64位。
指令的执行在单个机器周期内完成。(采用流水线机制)
只有load和store指令才能访问存储器,其他指令的操作都是在寄存器之间进行。(即采用load-store结构)
大多数指令都采用硬连逻辑来实现。 -
数据表示:计算机硬件能够直接识别、指令集可以直接调用的数据类型。
所有数据类型中最常用、相对比较简单、用硬件实现比较容易的几种。 -
数据结构:由软件进行处理和实现的各种数据类型。
研究:这些数据类型的逻辑结构与物理结构之间的关
系,并给出相应的算法。 -
表示操作数类型的方法有两种:
操作码指定的操作数类型
给数据加上tag
-
指令格式的设计
指令由两部分组成:操作码、地址码
指令格式的设计
确定指令字的编码方式,包括操作码字段和地址码字段的编码和表示方式。
操作码的编码比较简单和直观
1. Huffman编码法
减少操作码的平均位数,但所获得的编码是变长的,不规整,不利于硬件处理。
2. 固定长度的操作码
保证操作码的译码速度。
两种表示寻址方式的方法- 将寻址方式编码于操作码中,由操作码描述相应操作的寻址方式。
适合:处理机采用load-store结构,寻址方式只有很少几种。 - 设置专门的地址描述符,由地址描述符表示相应操作数的寻址方式。
适合:处理机具有多种寻址方式,且指令有多个操作数。
- 将寻址方式编码于操作码中,由操作码描述相应操作的寻址方式。
-
指令集的三种编码方式:
-
变长编码格式
当指令集的寻址方式和操作种类很多时,这种编码格式是最好的。
用最少的二进制位来表示目标代码。
可能会使各条指令的字长和执行时间相差很大。 -
定长编码格式
将 操作类型和寻址方式 一起编码到操作码中。
当寻址方式和操作类型非常少时,这种编码格式非常好。
可以有效地降低译码的复杂度,提高译码的速度。
大部分RISC的指令集均采用这种编码格式。 -
混合型编码格式
提供若干种固定的指令字长。
以期达到既能够减少目标代码长度又能降低译码复杂度的目标。
-
流水线技术
-
流水线技术: 把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。
-
前提:每个子过程由专门的功能部件来实现
-
流水技术的特点:分 等 缓 重 间
- 流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
- 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。
时间长的段将成为流水线的瓶颈。 - 流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
作用:在相邻的两段之间传送数据,以保证提供后面要用到的数据,并把各段的处理工作相互隔离。 - 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
- 流水线需要有通过时间和排空时间。
通过时间:第一个任务从进入流水线到流出结果所需的时间。
排空时间:最后一个任务从进入流水线到流出结果所需的时间。
-
流水线分类 P52
-
相关:两条指令之间存在某种依赖关系。
-
数据相关
对于两条指令i(在前,下同)和j(在后,下同),如果下述条件之一成立,则称指令j与指令i数据相关。
指令j使用指令i产生的结果;
指令j与指令k数据相关,而指令k又与指令i数据相关。
数据相关具有传递性。
数据相关反映了数据的流动关系,即如何从其产生者流动到其消费者。 -
名相关。
如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。指令j与指令i之间的名相关有两种:
1. 反相关:如果指令j写的名与指令i读的名相同,则称指令i和j发生了反相关。
指令j写的名=指令i读的名
2. 输出相关:如果指令j和指令i写相同的名,则称指令i和j发生了输出相关。
指令j写的名=指令i写的名 -
控制相关
控制相关是指由分支指令引起的相关。
为了保证程序应有的执行顺序,必须严格按控制相关确定的顺序执行。
-
-
流水线冲突: 是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行
流水线冲突有3种类型:
-
结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。
解决:停顿; 数据cache指令cache;指令缓冲寄存器;交叉并行存储器
-
数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。
- 数据冲突
1. 写后读冲突(RAW) 应该要先写后读 — 由数据相关引起的
在 i 写入之前,j 先去读。 j 读出的内容是错误的。
2. 写后写冲突(WAW)— 由输出相关
在 i 写入之前,j 先写。
5段流水线不会发生写后写冲突
3. 读后写冲突(WAR) 应该是先读后写 — 由反相关引起
在 i 读之前,j 先写。
5段流水线不会发生 - 定向技术关键思想:
在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,那么就可以避免停顿。 - 停顿
- 依靠编译器
- 数据冲突
-
控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
-
冻结
-
设分支指令在ID段完成 原来为MEM
预测分支失败
预测分支成功
延迟分支 — 在分支指令后面加上几条指令(用延迟槽中的指令来掩盖分支延迟)
-
-
向量处理机
流水线处理机设置了向量数据表示的向量指令
向量处理机的方式
-
横向处理:向量计算按行的方式从左到右横向的进行
不适合并行处理
-
纵向处理:按相同的运算处理完后再去进行别的运算
存储器-存储器
-
横纵处理:组内纵向,一次处理各组
寄存器-寄存器
-
-
链接技术特征:
具有先写后读相关的两条指令,在**不出现功能部件冲突和源向量冲突**的情况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的。
链接特性的实质
把流水线定向的思想引入到向量执行过程的结果。、
存储系统
-
平均访存时间 = T_1 + (1-H) * (T_1 + TM)
-
映像规则
-
全相联映像
全相联:主存中的任一块可以被放置到Cache中的任意一个位置
**特点:**空间利用率最高,冲突概率最低,实现最复杂。 -
直接映像:主存中的每一块只能被放置到Cache中唯一的一个位置
(循环分配)
特点:空间利用率最低,冲突概率最高, 实现最简单。
对于主存的第i 块,若它映像到Cache的第j 块,则:
设M=2^m,则当表示为二进制数时,j实际上就是i的低m位:
可以直接用主存地址的低m位去选择直接映像Cache中的块
3. 组相联映像
组相联:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置。
组相联是直接映像和全相联的一种折中组的选择常采用位选择算法
若主存第i 块映像到第k 组,则:
k=i mod(G) (G为Cache的组数)
设G=2^g,则当表示为二进制数时,k 实际上就是i 的低 g 位: -
低g位以及直接映像中的低m位通常称为索引。
-
主要的替换算法有三种
-
随机法
优点:实现简单 缺点:反应不了程序的局部性(命中率低)
-
先进先出法FIFO
优点:实现简单 缺点:不能反应程序的局部性
-
最近最少使用法LRU
选择近期最少被访问的块作为被替换的块。(实现比较困难)
实际上:选择最久没有被访问过的块作为被替换的块。
优点:命中率较高,较好的反应程序的局部性 缺点:比较复杂LRU的硬件实现:
堆栈法:
用堆栈来记录组相联的同一组中各块被访问的先后次序
比较对法:
让各块两两组合,构成比较对
触发器个数 与门个数 与门输入端数
-
-
两种写策略
写策略是区分不同Cache设计方案的一个重要标志。 写直达法(也称为存直达法)
执行“写”操作时,不仅写入Cache,而且也写入下一级存储器。
写回法(也称为拷回法)
执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。 (设置“修改位”)两种写策略的比较
写回法的优点:写到Cache速度快;只写一回,节省写回次数,减少对存储器带宽的要求。
写直达法的优点:易于实现,一致性好
采用写直达法时,若在进行“写”操作的过程中CPU必须等待,直到“写”操作结束,则称CPU写停顿 -
CPU时间 = ( CPU执行周期数 + 存储器停顿周期数)* 时钟周期
-
平均访存时间 = 命中时间 + 不命中率 * 不命中开销
-
降低Cache不命中
- 三种类型的不命中(3C)
- 强制性不命中(Compulsory miss)
当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性不命中。
(冷启动不命中,首次访问不命中) - 容量不命中(Capacity miss ) — 与Cache中的块数有关
如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生不命中。这种不命中称为容量不命中。 - 冲突不命中(Conflict miss) — 与映像规则有关
在组相联或直接映像Cache中,若太多的块映像到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突不命中。
(碰撞不命中,干扰不命中)
- 强制性不命中(Compulsory miss)
- 三种类型的不命中(3C)
-
增加Cache块大小 — 减少强制不命中
不命中率与块大小的关系
对于给定的Cache容量,当块大小增加时,不命中率开始是下降,后来反而上升了。
原因:
增强了空间局部性,减少了强制性不命中;
增加块大小会减少Cache中块的数目,所以有可能会增加冲突不命中。 (映射到一个块的主存块数增加)
增加块大小会增加不命中开销(块的传输) -
增加Cache容量 — 减少容量不命中
了Cache的不命中率
缺点:
增加成本,可能增加命中时间 -
提高相联度 — 减少冲突不命中
相联度超过8的方案的实际意义不大。
2:1 Cache经验规则
容量为N的直接映像Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多相同。
提高相联度是以增加命中时间为代价。
一般来说,改进平均访存时间的某一方面是以损失另一方面为代价的。 -
减少Cache不命中开销 — 两级Cache (考计算题)
-
减少命中时间
-
硬件越简单,速度就越快;应使Cache足够小,以便可以与CPU一起放在同一块芯片上。
把Cache的标识放在片内,而把Cache的数据存储器放在片外。
-
物理Cache
使用物理地址进行访问的传统Cache。
标识存储器中存放的是物理地址,进行地址检测也是用物理地址。
-
输入/输出系统
-
**系统的响应时间(**衡量计算机系统的一个更好的指标):从用户输入命令开始,到得到结果所花费的时间
-
I/O系统的可靠性、可用性和可信性
-
系统的可靠性:系统从某个初始参考点开始一直连续提供服务的能力。
用平均无故障时间MTTF来衡量(Mean Time To Failure)MTTF的倒数就是系统的失效率。
如果系统中每个模块的生存期服从指数分布,则系统整体的失效率是各部件的失效率之和。但整体的MTTF不是各部件之和 所以要求整个系统的MTTF,需要先求整个系统的失效率
-
系统的可用性:系统正常工作的时间在连续两次正常服务间隔时间中所占的比率。
MTTF+MTTR:平均失效间隔时间MTBF -
系统的可信性:服务的质量。即在多大程度上可以合理地认为服务是可靠的
-
-
大多数磁盘阵列的组成可以由以下两个特征来区分:
-
数据交叉存放的粒度
-
细粒度磁盘阵列是在概念上把数据分割成相对较小的单位交叉存放。
这样几乎所有的I/O请求,不管大小,都会访问磁盘阵列中的所有磁盘优点:所有I/O请求都能够获得很高的数据传输率。
缺点:在任何时间,都只有一个逻辑上的I/O在处理当中,而且所有的磁盘都会因为为每个请求进行定位而浪费时间。 -
粗粒度磁盘阵列是把数据以相对较大的单位交叉存放。
优点:多个较小规模的请求可以同时得到处理。对于较大规模的请求又能获得较高的传输率
-
-
冗余数据的计算方法以及在磁盘阵列中的存放方式
-
-
设置冗余信息盘:
当单个盘失效时,对是的信息可以利用冗余盘的信息重新构建,只有在这个失效磁盘被恢复之前,发生了第二个磁盘失效,磁盘阵列才不会正常工作
-
RAID0:无冗余信息
-
RAID1:双备份磁盘
不需要校验信息,能实现快速的读取操作。
写性能由写性能最差的磁盘决定。相对以后各级RAID来说,RAID1的写速度较快。
可靠性很高,数据的恢复很简单,不需要进行数据重建计算。
最昂贵的解决方法,物理磁盘空间是逻辑磁盘空间的两倍。 -
RAID2:汉明纠错码的思路构建
每个数据盘存放所有数据字的一位(位交叉存放)
各个数据盘上的相应位计算汉明校验码,编码位被存放在多个校验(ECC)磁盘的对应位上。
冗余盘是用来存放汉明码的 -
RAID3:位交叉奇偶校验盘阵列
采用奇偶校验
写数据时:为每行数据形成奇偶校验位并写入校验盘
读出数据时: 目前的磁盘控制器已能用CRC检测出本身磁盘是否出错,如果控制器发现某个磁盘出故障,就可以根据故障盘以外的所有其他盘中的正确信息恢复故障盘中的数据。(通过异或运算实现)
细粒度的磁盘阵列,即采用的条带宽度较小。(可以是1个字节或1位)
只需要一个校验盘,校验空间开销比较小。 -
RAID4:块交叉奇偶校验磁盘阵列
读取操作
每次只需访问数据所在的磁盘。
仅在该磁盘出现故障时,才会去读校验盘,并进行数据的重建。
写入操作
假定:有4个数据盘和一个冗余盘。
写数据需要2次磁盘读和2次磁盘写操作。当处理多个小规模写的时候,必须访问校验盘,而系统校验盘只有一个,很容易造成瓶颈
-
RAID5:块交叉分布奇偶校验磁盘阵列
数据以块交叉的方式存于各盘,无专用冗余盘,奇偶校验信息均匀分布在所有磁盘上。
-
RAID6:P+Q双校验磁盘阵列
校验空间开销是RAID5的两倍
容忍两个磁盘出错
- 通道的种类
- 字节多路通道: 以字节交叉的方式分时轮流地为它们服务
为多台低速或中速的外设服务。 - 选择通道: 在一段时间内只为一台高速外设独占使用
为多台高速外围设备服务。 - 数组多路通道: 每次选择一个高速设备后传送一个数据块,轮流为多台外围设备服务。
适用于高速设备。
- 字节多路通道: 以字节交叉的方式分时轮流地为它们服务
通道类型 | 字节多路 | 数组多路 | 选择通道 |
---|---|---|---|
数据宽度 | 单字节 | 定长块 | 不定长块 |
适用范围 | 大量低速设备 | 大量高速设备 | 优先级高的高速设备 |
工作方式 | 字节交叉 | 成组交叉 | 独占通道 |
选择次数 | 多次 | 多次 | 一次 |
-
通道流量
一个通道在数据传送期间,单位时间内能够传送的数据量。所用单位一般为Bps。
又称为通道吞吐率、通道数据传输率等。 -
虚拟DMA:允许DMA直接使用虚拟地址,并在DMA传送过程中,由硬件将虚拟地址转化为物理地址
-
Cache数据一致性
Cache会使一个数据出现两个副本:一个在Cache中,另一个在主存中。如果两个值不同,就产生了数据不一致的问题
不一致的情况:
1. CPU修改了Cache的内容后,由于存储器的内容跟不上Cache内容的变化,I/O系统进行输出操作时所看到的数据是旧值。(写直达Cache没有这样的问题) 2. I/O系统进行输入操作后,存储器的内容发生了变化,但CPU在Cache中所看到的内容依然是旧值。
解决的办法:
-
把I/O直接连接到Cache上
不会产生由I/O导致的数据不一致的问题。
所有I/O设备和CPU都能在Cache中看到最新的数据。
I/O会跟CPU竞争访问Cache,在进行I/O时,会造成CPU的停顿。
I/O还可能会破坏Cache中CPU访问的内容,因为I/O操作可能导致一些新数据被加入Cache。 -
软件的方法(不管Cache是采用写直达法还是写回法)
设法保证I/O缓冲器中的所有各块都不在Cache中。
具体做法有两种 把I/O缓冲器的页面设置为不可进入Cache的,在进行输入操作时,操作系统总是把输入的数据放到该页面上。
在进行输入操作之前,操作系统先把Cache中与I/O缓冲器相关的数据“赶出”Cache,即把相应的数据块设置为“无效”状态。硬件的方法
在进行输入操作时,检查相应的I/O地址(I/O缓冲器中的单元)是否在Cache中(即是否有数据副本)。如果发现I/O地址在 Cache中有匹配的项,就把相应的Cache块设置为“无效”
-
标签:计算机系统,复习,Cache,指令,期末,命中,流水线,数据,CPU 来源: https://blog.csdn.net/qq_43779658/article/details/118003597