注意
导入过来排版不太对,建议看我的语雀文档
https://www.yuque.com/tongyan-qsj3t/zwlq23/dobnlmaa9knfxfsv?singleDoc# 《【计算机系统结构】复习重点(计算机系统结构(第3版)张晨曦 王志英等)》
教材版本
计算机系统结构(第3版)张晨曦 王志英等
题型
选择题
名词解释
填空题
简答题
计算题(基本上作业里都涉及了,不是原题但知识点相同,把原理搞清楚)
第一章
计算机系统结构的定义
计算机系统结构是程序员所看到的计算机属性,即概念性结构与功能特性
透明性
透明性:在计算机技术中,某种本来存在的事物或属性从某种角度看又好像不存在的概念
在Amdahl的传统定义当中系统结构所包含的属性
在Amdahl的传统定义当中系统结构所包含的属性:是指机器语言程序设计员为使其设计的程序能在计算机上正确运行所需遵循的计算机属性
这些属性主要是指:
- 指令系统(包括机器指令的操作类型和格式、指令间的排序和控制机构等)
- 数据表示(硬件能直接识别和处理的数据类型)
- 寻址规则(包括最小寻址单元、寻址方式及其表示)
- 寄存器定义(包括各种寄存器的定义、数量和使用方式)
- 中断系统(中断的类型和中断响应硬件的功能等)
- 机器工作状态的定义和切换(如管态和目态等)
- 存储系统(主存容量、程序员可用的最大存储容量等)
- 信息保护(包括信息保护方式和硬件对信息保护的支持)
- I/0结构(包括I/0连接方式、处理机/存储器与I/0设备间数据传送的方式和格式、I/0操作的状态等)
以上属性是计算机系统中由硬件或固件完成的功能,程序员在了解这些属性后才能编写出在传统机器级上正确运行的程序。
:::info
注意:当我了解这些信息后,这些信息对我来说就不是透明的
:::
Flynn分类法
将计算机系统结构分为以下四类:
- 单指令流单数据流(SISD)
- 单指令流多数据流(SIMD)
- 多指令流单数据流(MISD)
- 多指令流多数据流(MIMD)
缩写方式:
单/多指令流single/multiple-instruction
单/多数据流single/multiple-data
其中,单指令流多数据流SIMD以阵列处理机为代表
阵列处理机:在同一控制部件的控制下,多个处理部件同时执行同一条指令所规定的操作,分别对各自的数据进行处理
加速比
影响加速比2个因素:
- 可改进比例:在改进前的系统中,可改进部分占总的比例。例如一个60s程序有20s可加速,可改进比例就是20/60
- 部件加速比:可改进部分改进后性能提高的倍数,是改进前后时间的比值。例如改进后,可改进部分执行时间为2s,改进前为5s,则部件加速比是5/2
单个部件:
多个部件:
其中:
Sn是整个程序的加速比
Fi是各操作在程序中所占的比例
Si是各操作单独改进后程序获得的加速比
改进后程序总的执行时间
(能改进部分+不能改进部分)
计算机系统设计的设计原则和定量原理
- 以经常性事件为重点:在计算机系统设计中经常要在不同的方法之间进行折中,这时要按照对经常发生的事件采用优化方法的原则进行选择,以得到更多总体上的改进
- Amdahl定律:加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比
- CPU性能公式:
CPU时间=执行程序所需的时钟周期数时钟周期时间
平均指令周期数CPI=执行程序所需的总周期数/所执行的指令条数
CPU时间=ICCPI*时钟周期时间
IC为所执行的指令条数
- 程序的局部性原理
程序的局部性原理:是指程序执行时所访问的存储器地址分布不是随机的,而是相对聚簇
局部性包括时间局部性和空间局部性
- 时间局部性:程序即将用到的信息很可能就是目前正在使用的信息
- 空间局部性:程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或相近
冯诺依曼结构5个部分
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
并行性的发展 看耦合度
并行性:计算机系统在同一时刻或同一时间间隔内进行多种运算或操作
耦合度:反映多处理机系统中各计算机之间物理连接的紧密程度和交互作用能力的强弱
多处理机系统耦合度分为紧密耦合和松散耦合
- 紧密耦合系统:又称直接耦合系统。在这种系统中,计算机之间物理连接的频带较高,一般是通过总线或高速开关互连,可以共享主存。由于具有较高的信息传输率,因而可以快速地并行处理多个作业或任务。
- 松散耦合系统:又称间接耦合系统,一般是通过通道或通信线路实现计算机之间的互连,可以共享外存设备(磁盘、磁带等)。计算机之间的相互作用是在文件或数据集一级上进行的。松散耦合系统表现为两种形式:一种形式是多台计算机与共享外存设备连接,不同计算机之间实现功能上的分工(功能专用化),计算机处理的结果以文件或数据集的形式送到共享外存设备,供其他计算机继续处理;另一种形式是计算机网络,通过通信线路连接,实现更大范围的资源共享。
第二章
指令集对操作系统的支持
指令集对操作系统的支持主要有:
- 处理机工作状态和访问方式的切换
- 进程的管理和切换
- 存储管理和信息保护
- 进程的同步与互斥,信号灯的管理等
RISC的设计思想
设计RISC指令集结构一般应遵循以下原则:
- 指令条数少而简单。
- 采用简单而又统一的指令格式,并减少寻址方式。
- 指令的执行在单个机器周期内完成。
- 采用 load-store 结构。
- 大多数指令都采用硬连逻辑来实现。
- 强调优化编译器的作用,为高级语言程序生成优化的代码。
- 充分利用流水线技术来提高性能。
**第三章(重点)**⭐⭐⭐
流水线通过什么方式来进行描述
流水线:在计算机中把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现,把多个处理过程在时间上错开,依次通过各功能段,这样每个子过程就可以与其他子过程并行进行。
描述方式:时空图(一定要会画,看书P51)⭐⭐
流水线的性能指标
- 吞吐量:单位时间内流水线所完成的任务数量或输出结果的数量
- 加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(此处与第一章不同)
- 效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率
这三个指标怎么通过时空图计算,看书
使用时空图计算流水线的性能指标:
例题:课后题3.11(本题为静态流水线)
先画出时空图:
吞吐量:
TP=n/Tk
n是任务数
Tk是完成n个任务所需的时间
本题中n=7 因为是7个任务 分别为计算A,B,C,D,AB,CD,ABCD
Tk=18Δt,因为总共用了18Δt的时间
加速比:
S=Ts/Tk
Ts是不使用流水线使用的时间
Tk是使用流水线使用的时间
本题中Ts=29Δt,因为一次求和是5Δt(比如第一个输入A1+B1,是从0开始进入,从5结束输出),总共4次求和;一次求积是3Δt(比如AB从11开始进入,从14结束输出),总共3次求积;所以一共45Δt+33Δt=29Δt
Tk=18Δt,因为总共用了18Δt的时间
效率:
E=(knΔt)/(kTk)
其中k是流水线段数,其他变量概念不变
从时空图上来看,效率是n个任务占用的时空面积和k个段总的时空面积之比
本题中分子为所有黑方块面积,一次加法是5个,共4次加法;一次乘法是3个,共3次乘法;总面积29
分母为整个时空图的面积,185=90
流水线的相关与冲突
相关:两条指令之间存在某种依赖关系
- 数据相关(后面指令需要用到前面指令的运算结果,)
这里直接或者间接都可以,即:
- 指令j使用指令i产生的结果,那么j与i数据相关
- 指令j与k数据相关,k与i数据相关,那么j与i数据相关
- 名相关(两条指令使用了相同的名,但它们之间并没有数据流动)
- “名”指的是指令所访问的寄存器或存储单元的名称
- 控制相关(由分支指令引起)
流水线冲突:对于具体流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行
- 结构冲突:硬件资源满足不了指令重叠执行的要求而发生的冲突
解决方式2种:
- 插入气泡(例如我的流水线上只有一个存储器,把数据和指令放一起,某个时候我又要访存又要取指令,这时候就发生结构冲突,我可以在访存时将流水线停顿一个时钟周期,推迟取指令操作,这个停顿的时钟周期就叫“气泡”)
但这种停顿也会影响流水线的性能
- 在流水线处理机中设置相互独立的指令存储器和数据存储器
- 数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突
例如:我有3条指令
指令1第5个时钟周期才将结果写入寄存器A
指令2第2个时钟周期就需要读A的结果,发生数据冲突
指令3第6个时钟周期才需要读A的结果,不冲突
解决方式3种:
1.通过定向技术减少数据冲突引起的停顿:按上面例子,最简单的解决方式就是暂停指令1后边的所有指令,直到指令1将结果写入寄存器A,再让后边的指令继续执行。
但这样就有停顿时间。
为了减少停顿时间,就采用定向技术——在某条指令(指令1)产生计算结果之前,其他指令(指令X)并不真正立即读取这个计算结果,而是将这个计算结果从他产生的地方(指令1的写入寄存器A之前的某一步)直接送到其他指令(指令X)需要他的地方,就可以避免停顿
推广到更一般的情况:将结果数据从其产生的地方直接传送到所有需要它的功能部件。
2.需要停顿的数据冲突:并不是所有冲突都能用定向技术解决
例如:指令1的第4个时钟周期的末尾才产生运算结果,但指令2的第2个时钟周期开始就需要这个结果,还是需要停顿。
停顿用到的是“流水线互锁机制”:检测发现数据冲突并使流水线停顿,直至冲突消失
3.依靠编译器解决数据冲突:无法用定向技术解决的冲突,可以通过在编译时让编译器重新组织指令顺序来消除冲突,称为“指令调度”或者“流水线调度”
- 控制冲突:流水线遇到分支指令或其他会改变PC值的指令所引起
PC值:当前正在执行指令的下一条指令地址
解决方式:(两条同时采用,缺一不可)
- 在流水线中尽早判断出分支转移是否成功
- 尽早计算出分支目标地址
链接
链接技术:具有先写后读相关的两条指令(针对向量),在不出现功能部件冲突和源向量冲突的情况下,可以把功能部件衔接起来进行流水线处理,以达到加快执行的目的。
看书上例3.3学懂链接技术,其中指令③是与①②进行链接,①②是概念里的“先写”,③是“后读”
链接需要满足的条件⭐
- 无向量寄存器使用冲突和无功能部件使用冲突
- 只有在前一条指令的第一个结果元素送入结果向量寄存器的那一个时钟周期才可以进行链接
- 当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,要求先行的两条指令产生运算结果的时间必须相等,即要求有关功能部件的通过时间相等
【以书上图3.43为例,当一条向量指令(浮点乘)的两个源操作数分别是两条先行指令(访存,浮点加)的结果寄存器(V2,V3)时,要求先行的两条指令产生运算结果的时间必须相等(访存、浮点加都是6拍)】
- 要进行链接执行的向量指令的向量长度必须相等,否则无法进行链接
分段开采技术
当向量长度大于向量寄存器长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段
第四章
什么是指令的静态调度和动态调度
静态调度:
它不是在程序执行过程中进行代码调度和优化,而是在编译期间进行的
静态调度的流水线依靠编译器对代码进行静态调度,以减少相关和冲突
静态调度通过把相关的指令拉开距离来减少可能产生的停顿
动态调度:
在程序的执行过程中依靠专门的硬件对代码进行调度
动态调度能在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,减少数据相关导致的停顿
动态调度的优点(是以硬件复杂性的显著增加为代价的):
1. 能够处理一些编译时不明情况的相关(如涉及存储器访问的相关),并简化了编译器
2. 能够使本来是面向某一流水线优化编译的代码在其他流水线上也能高效地执行
基于硬件的前瞻执行的基本思想
基于硬件的前瞻执行:在动态分支预测技术中,对于多流出处理机,只准确预测分支不能满足要求,需要通过前瞻执行来猜测分支指令的结果,并假设这个猜测总是对的,然后按着这个猜测结果继续向下执行,但执行结果并不直接写入寄存器或存取器,而是放到“ROB”缓冲器中,当确认指令是应该执行的之后,才存入寄存器或存取器。这样的目的是为了猜错之后能够恢复现场。
基于硬件的前瞻执行的基本思想:
- 动态分支预测,用来选择后续执行的指令
- 在控制相关的结果尚未出来之前,前瞻地执行后续指令
- 用动态调度对基本块的各种组合进行跨基本块的调度
超流水线处理机的工作特点
超流水线处理机:将每个流水段进一步细分,这样在一个时钟周期内能够分时流出多条指令的处理机
对于一台每个时钟周期能流出n条指令的超流水线计算机来说,这n条指令不是同时流出的,而是每隔1/n个时钟周期流出一条指令
实际上该超流水线计算机的流水线周期为1/n个时钟周期
在有的资料上,把指令流水线级数为8或8以上的流水线处理机称为超流水线处理机
“级”:把流水段进一步划分之后,叫做流水级
第五章
存储层次的四个问题
- 映像规则:当把一个块(页)调入高一层(靠近CPU)存储器时,可以放到哪些位置上
分为以下3种:
- 全相联映像:主存的任一块可以被放到Cache的任意一个位置
- 直接映像:主存的每一个块只能被放到Cache中唯一的一个位置
- 组相联映像:Cache被等分为若干组,每组由若干块构成,主存中的每一块可以被放到Cache中唯一的一个组中的任何一个位置
大多数计算机使用直接映像和组相联映像
- 查找算法:当所要访问的块(页)在高一层存储器时,如何找到该块
- 替换算法:当发生不命中而且高一层存储器已满时,应替换哪一块
- 写策略:当进行写访问时,应进行哪些操作
平均访存时间 CPU时间⭐⭐⭐掌握计算题原理
平均访存时间=命中时间+不命中率*不命中开销
CPU时间:
注意:
使用第一条公式
“不命中开销”的单位是“时钟周期数”,例如不命中开销为80ns,Cache时钟周期是2ns,那么在本公式中“不命中开销”应该是80/2=40个时钟周期
课后题5.10中的(3)所说的时钟周期增加10%是增加的平均指令周期数量CPI,而不是公式中的“时钟周期时间”。“时钟周期时间”是不会改变的
第六章
反映输入/输出系统可靠性的参数
- 可靠性:系统从某个初始参考点开始连续提供服务的能力
- 可用性:系统正常工作的时间与连续两次正常服务间隔时间的比值
- 可信性:服务的质量
(我猜只用背三个参数,不用背概念)
评价输入输出系统性能的参数
连接特性
输入/输出系统的容量
响应时间
吞吐量
第七章
什么是静态互联网络,动态互联网络
静态互联网络:各节点之间有固定的连接通路,且在运行中不能改变的网络
动态互联网络:设置有源开关,因而能够根据需要借助控制信号对连接通路加以重新组合,实现所要求的通信模式
多级立方体网络
多级立方体网络包括STARAN网络和间接二进制n方体网络等。
两者仅在控制方式上不同,在其他方面都是一样的。
都采用二功能(直送和交换)的2×2开关。
当第i级(0≤i≤n-1)交换开关处于交换状态时,实现的是Cubei互连函数。
一个N输入的多级立方体网络有log2N级,每级用N/2个2×2开关模块,共需要log2N×N/2个开关。
STARAN网络采用级控制和部分级控制。
采用级控制时,所实现的是交换功能;
采用部分级控制时,则能实现移数功能。
间接二进制n方体网络则采用单元控制。具有更大的灵活性。
交换:将有序的一组元素头尾对称地进行交换。
虫蚀寻径(即虫孔)
前置知识:
消息传递机制:当源节点和目的节点之间没有直接的连接时,消息需要经过中间的节点进行传递。寻径就是用来实现这种传递的通信方法和算法。有的称之为路由。
消息:节点之间进行通信的逻辑单位。由若干个“包”组成,“包”可细分为“片”
消息路由方式可以分为:
线路交换:先建立原节点到目的节点的物理通路,再传递消息
存储转发:以“包”为基本单位,“包”从原结点经历一系列中间节点到达目的节点,需要在每个中间节点设置包缓冲器,只有当出口链路可用并且下一个包缓冲器也可用才传给下个节点
虚拟直通:是对存储转发的改进,思想是无需等到“包”完全放入缓冲器再判断是否向后传,只有接收到包头我就开始判断,如果传输链路空闲,就无需存储在缓冲器而是直接传给下一个节点,如果整条链路都空闲可以直达目的节点。
虫孔:
是对虚拟直通的改进,区别是把“包”切割成了更小的“片”,“片”的传送按流水线进行
当一个节点把头片送到下一个节点后,那么接下来就可以把后面的各个片也依次送出
一个节点一旦开始传送一个包中的头片后,这个节点就必须等待这个包的所有片都送出去后,才能传送其他包。不同包的片不能混合在一起传送
虫孔和虚拟直通比较像,区别就是:
- 当输出通路忙时,节点是把一个片存储到缓冲器中。
- 由于片的大小比包小很多,所以能有效地减少缓冲器的容量,使得它易于用VLSI(超大规模集成电路)实现。
虫孔优点:
- 每个节点的缓冲器较小,易于VLSI实现;
- 有较小的网络传输延迟;
- 通道共享性好,利用率高;
- 易于实现选播和广播通信模式。
虫孔缺点:
- 当消息的一片被阻塞时,整个消息的所有片都将被阻塞在所在节点,占用了节点资源。
第九章
机群
机群系统:价格低廉,易于构建且可扩放性极强,它由多台同构或异构的独立计算机通过高性能网络或局域网互联在一起,协同完成特定的并行计算任务。从用户的角度来看,机群就是一个单一、集中的计算资源