计算机系统结构
计算机系统结构
第一章 计算机系统结构的基本知识
概念
多层次结构
:按照计算机语言从低到高的次序,将计算机系统划分成多级层次结构,每一层以一种不同的语言为特征。这些特征依次为:微程序机器级、传统机器语言机器级、操作系统机器级、汇编语言机器级、高级语言机器级、应用语言机器级
。虚拟机
:指由软件实现的机器,以区别与由固件/硬件实现的物理机器解释
:对于高一级机器上的程序的每一条语句或指令,都转去执行低一级机器上的一段等效代码。执行完后,再去高一级机器上取下一条语句或指令,再解释执行,如此反复执行,直到解释执行完整个程序。翻译
:先用转换程序将高一级机器上的程序转换为低一级机器上的程序,然后在低一级机器上运行,完成程序的功能计算机系统结构
:传统机器程序员所看到的计算机属性,即概念性结构和功能特性透明性
:指在计算机技术中,本来存在的事件或事物,但从某种角度看又好像不存在的概念模拟
:用软件的方法在一台现有的计算机(称为宿主机Host)上实现另一台计算机(称为虚拟机)的指令集仿真
:用一台现有的计算机的微程序去解释实现另一台计算机的指令系统并行性
:指计算机系统在同一时刻或同一时间间隔内实现多种运算或操作。
知识点
多层次结构、物理机和虚拟机实现方法
物理机由固件和硬件实现
虚拟机主要使用软件实现
计算机组成和实现的概念及其关系
计算机组成:计算机系统结构的逻辑实现,包括物理机的数据流和控制流的组成及其逻辑设计
计算机实现:计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。它着眼于机器技术和维组装技术。
计算机系统结构、计算机组成、计算机实现之间的关系:计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种系统结构有多种计算机组成。一种计算机组成有多种实现
系列机具有相同系统结构
计算机系统结构的分类
Flynn分类法、冯氏分类法、Handler分类法
- Flynn分类法
- 按照
指令流和数据流的多倍性
进行分类 - CS 控制流
- IS 指令流
- CU 控制流
- PU 处理部件
- MM和SM 存储器
- 单指令单数据流(SISD)
- 单指令多数据流(SIMD)
- 多指令单数据流(MISD)
- 多指令多数据流(MIMD)
- 按照
- 冯氏分类法
- 按照
系统最大并行度
分类 - 字宽(n):一个字中同时处理的二进制位数
- 位片宽度(m):在一个位片上能同时处理的字数
- 字串位串 n = 1, m = 1
- 字串位并 n > 1, m = 1
- 字并位串 n = 1, m > 1
- 字并位并 n > 1, m > 1
- 按照
- Flynn分类法
Amdahl定律的含义及计算方法、决定CPU性能的3个参数及计算方法、程序的局部性原理。
含义及计算方法
含义:当对一个系统的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件执行时间占总执行事件的百分比
Fe:可改进比例
Se:部件加速比,改进前所需的执行时间与改进后执行时间的比
加速比:系统性能(改进后)/系统性能(改进前) = 总执行时间(改进前)/总执行时间(改进后)
改进后执行时间:Tn = To ( 1 - Fe + Fe / Se)
总系统加速比:Sn = To / Tn = 1 / ( ( 1 - Fe) + Fe / Se)
决定CPU性能的3个参数及计算方法
1、时钟周期时间
2、CPI 指令的平均时钟周期数
3、IC 指令条数
程序的局部性原理
程序的局部性原理:程序执行时所访问的存储地址并不是随机分布,而是相对地簇聚
时间局部性:程序即将用到的信息可能就是目前正在使用的信息
空间局部性:程序即将用到的信息很可能与当前正在使用的信息在空间上相邻或邻近
计算机设计者的主要任务及计算机设计的主要方法
- 主要任务
- 确定用户对计算机系统的功能、价格和性能的要求
- 软硬件功能分配
- 设计出生命周期长的系统结构
- 主要方法
- 由上往下设计
- 由下往上设计
- 从中间开始设计
- 主要任务
计算机性能的比较方法(p16)
- 总执行时间
- 调和平均值法
- 几何平均值法
冯•诺依曼结构的主要特点,指令系统的发展方向。
主要特点
1、计算机以运算器为中心
2、在存储器中,指令和数据同等对待
3、存储器是按地址访问、按顺序线性编码的一维结构,每个单元的位数是固定的
4、指令的执行是顺序是,一般是按照指令在存储器中存放的顺序执行的
5、指令由操作码和地址吗组成
6、指令和数据均以二进制编码表示,采用二进制运算
发展方向
1、复杂指令集计算机
2、精简指令集计算机
实现软件可移植性常用的三种方法
统一高级语言、采用系列机、模拟和仿真
并行性的概念,并行性的不同分类方法及各种分类方法各级的高低顺序,提高并行性的技术途径,耦合度的概念。
并行性:计算机系统在同一时刻或同一时间间隔内进行多种运算或操作
从处理数据角度:字串位串、字串位并、字并位串、全并行
从执行程序角度:指令内部并行、指令级并行、线程级并行、任务级或过程级并行、作业或程序级并行
提高并行性的技术途径:时间重叠、资源重复、资源共享
耦合度的概念:多机系统中各计算机之前物理连接的紧密程度和交互作用能力的强弱
第二章 指令系统的设计
概念
- 寻址方式:指令系统中如何形成所要访问的数据的地址
- 指令系统的完整性:在一个有限可用的存储空间内,对于任何可解问题,编写程序时,指令系统所提供的指令足够使用
- 指令系统的规整性:包括对称性和均匀性
- 对称性:所有与指令系统有关的存储单元的使用,操作码的设置必须是对称的
- 均匀性:对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待
- 数据表示:计算机硬件能够直接识别,指令系统可以直接调用的数据类型
- PC相对寻址:一种以程序计数器PC位参考点的寻址方式,主要用来转移指令中指定目标指令的地址
- 整数边界:信息在主存中存放的起始地址必须是该信息宽度(字节数)的整数倍
知识点
1、CPU用来存放操作数的存储单元和种类
堆栈、累加器、通用寄存器组
2、指令系统结构的分类
堆栈型结构、累加器型结构、通用寄存器型结构
3、理解堆栈型结构、累加器型结构和通用寄存器型结构三者的特点和不同
堆栈型:操作数都是隐式的,堆栈的栈顶和次栈顶的数据,运算后写入栈顶,只通过push、pop指令访问存储器
累加器型:累加器的操作数是隐式的,另一个操作数显示给出,是一个存储单元,运算结果送回累加器
通用寄存器组型:所有操作数都是显示给出,来自通用寄存器组或有一个操作数来自存储器,运算结果写入通用寄存器组
4、通用寄存器型结构在灵活性和提高 性能方面的优势
寄存器的访问速度比存储器快很多,对编译器而言,能更加容易、有效地分配和使用寄存器,在表达方面,通用寄存器型结构具有更大的灵活性和更高的效率。寄存器可以用来存放变量。
指令系统设计的基本原则,指令的一般组成部分,哈夫曼编码、等长扩展码、定长编码方三种操作码编码方法(37)。
- 基本原则:完整性、规整性、正交性、高效率、兼容性
- 组成部分:操作码和地址码
CISC指令系统存在的问题,对CISC指令系统的改进方法;设计RISC计算机一般遵循的原则。
- 存在的问题
- 各种指令的使用频率相差悬殊,许多指令很少用到
- 指令系统庞大,指令条数很多,许多指令的功能很复杂
- 许多指令由于操作繁杂,CPI值较大,执行速度慢
- 由于指令功能复杂,规整性不好,不利于采用流水线技术提高性能
- 改进方法
- 面向目标程序增强指令系统
- 面向高级语言的优化实现来改进指令系统
- 面向操作系统的优化实现来改进指令系统
- 原则
- 指令条数,指令功能简单
- 采用简单而又统一的指令格式,并减少寻址方式,指令字长都为32位或64位
- 指令的执行在单周期内完成
- 采用Load-Store结构,只用使用Load和Store指令才能访问存储器
- 大多数指令都采用硬连逻辑来实现
- 强调优化编译器的作用,为高级语言程序生成优化后的代码
- 充分利用流水线技术来提高性能
- 存在的问题
表示操作数类型的方法
- 由指令的操作码指定操作数的类型
- 给数据加上标识,由数据本身给出操作数的类型
理解MIPS指令系统结构,熟练掌握3种指令格式,并熟悉其常用的指令(48)
第三章 流水线技术
概念
- 流水线技术:把一个重复的过程分解成多个子过程,每个子过程由专门的功能部件来实现,把多个处理过程在时间是错开,依次通过各功能段。这样,每个子过程就可以和其他子过程并行进行。
- 通过时间:第一个任务从进入流水线到流出结果的那个时间段
- 排空时间:最后一个任务进入流水线到流出结果的那个时间段
- 定向技术:在某条指令产生一个计算结果之前,其他指令并不真正需要该计算结果,如果将该计算结果产生的地方直接送到其他指令需要他的地方,那么就可以避免暂停
- 单功能流水线:流水线之间的各段连接固定不变,只能完成一个固定功能的流水线
- 多功能流水线:流水线之间各段可以进行不同的连接,以完成不同功能的流水线
- 静态流水线:同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作
- 动态流水线:同一时间内,多功能流水线的各段可以按照不同的方式连接,同时执行多种功能的流水线
- 线性流水线:各段串行连接,没有反馈回路的流水线。数据通过流水线的同时,每一段最多只流过一次
- 非线性流水线:各段除了有串行的连接外,还有反馈回路的流水线
知识点
掌握流水线的基本概念(54)、流水线技术具有的特点(54)。
掌握流水线的工作原理、流水线的分类
工作原理:把一个重复的过程分解成多个子过程,每个子过程由专门的功能部件来实现,把多个处理过程在时间是错开,依次通过各功能段。这样,每个子过程就可以和其他子过程并行进行
流水线分类:
- 部件级流水线、处理机级流水线及系统级流水线
- 单功能流水线与多功能流水线
- 静态流水线与动态流水线
- 线性流水线与非线性流水线
- 顺序流水线与乱序流水线
理解流水线的各项性能指标及其计算方法(58)
1.
掌握消除流水线瓶颈的方法
细分瓶颈段,把流水线的瓶颈切分为几个独立的功能段,从而使流水线各段的处理时间都相等
重复设置瓶颈段,重复设置的段并行工作,在时间上依次错开处理业务
掌握单功能非线性流水线的最优调度方法,能熟练画出状态转换图、写出最优调度方案,熟悉多功能非线性流水线的调度
掌握经典5段流水线的结构
取指令周期(IF)
指令译码/读寄存器周期(ID)
执行/有效地址计算周期(EX)
存储器访问/分支完成周期(MEM)
写回周期(WB)
理解3种相关和3种冲突的概念,掌握解决结构冲突、数据冲突和控制冲突的方法。如何利用定向技术解决数据冲突?如何用猜测法和延迟分支解决控制冲突?
- 三种相关:数据相关、名相关(反相关、输出相关)、控制相关
- 三种冲突:结构冲突、数据冲突、控制冲突
第四章 向量处理机
概念
- 横向处理方式:按行的方式从左到右进行计算
- 纵向处理方式:向量计算是按列的方式从上到下进行计算
- 向量流水线链接:具有先写后读相关的两条指令,在不出现功能部件冲突和其他vi冲突的情况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的
- 分段开采技术:当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段
知识点
掌握有关向量处理的基本概念
向量是计算机系统中经常使用的一种数据类型,向量由一组有序、具有相同类型和位数的元素组成
掌握向量处理机的3种方式及其特点
- 3种方式:横向处理方式、纵向处理方式、纵横处理方式
- 横向处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水线,在每次循环种可能出现数据相关和功能转换,不适合对向量进行流水处理
- 纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相连,构成M-M型的运算流水线
- 纵横处理方式:把长度为N的向量分为若干组,每组长度为n, 组内按纵向方式处理,一次处理各组,组数为[N / n],适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相连,构成R-R型运算流水线
理解向量处理机的两种结构
- 存储求-存储器结构
- 寄存器-寄存器结构
掌握向量处理机上一个向量指令序列是否能并行执行或链接执行的判断方法,计算指令序列的总执行时间。
- 102计算题
掌握向量处理机的性能指标的定义及4计算方法。
- 103计算题
提高向量处理机性能的方法。
- 设置多个功能部件
- 采用连接技术
- 采用循环开采技术
- 采用多处理系统
第五章 指令级并行及其开发–硬件方法
概念
- 指令级并行:指令之间存在并行性,利用它,计算机可以并行执行2条或2条以上的指令
- 循环级并行:开发循环的不同迭代之间存在的并行性
- 不精确异常:当执行指令i导致发生异常时,处理机的异常和严格按程序顺序执行的现场不同
- 精确异常:发生异常时,处理机的异常和严格按程序顺序执行的线程相同
- 超标量:一种多指令流出技术,它在每个时钟周期内流出的指令不固定,依代码的详细情况而定,但也有个上限
- 超流水:在一个时钟周期内分时流出多条指令
- 超长指令字:一种多指令流出技术,vliw处理机在每个时钟周期内流出的执行固定,这些指令构成一个长指令或指令包,在这个指令包中,指令的并行性通过指令显示的表示出来。
知识点
掌握有关指令并行的基本概念
指令级并行是指指令之间存在一种并行性,利用它,计算机考研并行执行2条或2条以上的指令
理解指令静态调度和动态调度的概念,指令动态调度有何优点,掌握Tomasulo算法的基本思想,Tomasulo算法中,指令流出段所做的主要工作。
- 静态调度:静态调度的流水线依靠编译器对代码进行静态调度,以减少相关和冲突
- 动态调度:动态调度是在程序的执行过程中,依靠专门硬件对代码进行调度
- 指令动态调度优点:
- 能够处理一些编译时情况不明的相关,并简化了编译器
- 能够使本来是面向某一流水线优化编译的代码在其他动态调度的流水线上也能高效运行。
- Tomasulo算法的基本思想
- 记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减小到最小。
- 通过寄存器换名来消除WAR冲突和WAW冲突,寄存器换名是通过保留站来实现,它保存等待流出和正在流出指令所需要的操作数。
动态分支预测技术的目的是什么?在所采用的方法中,需要解决哪些关键技术?
- 目的
- 预测分支是否成功
- 尽快找到分支目标地址,从而避免控制相关造成流水线停顿
- 关键技术
- 如何记录分支的历史信息?要记录那些信息?
- 如何根据这些信息来预测分支的去向,甚至提前取出分支目标的指令
- 目的
基于硬件的前瞻技术是把哪3种思想结合在一起?组成ROB中的每一项的4个字段;前瞻执行机制,指令执行的步骤。
- 三种思想
- 动态分支预测,用来选择后续执行的指令
- 在控制相关的结果尚未出来之前,前瞻地执行后续指令
- 用动态调度对基本块的各种组合进行跨基本块的调度
- 四个字段:指令类型、目的地址、数据值字段、就绪字段
- 步骤:流出、执行、写结果、确认
- 三种思想
与VLIW处理机相比,超标量处理机的优点。
- 超标量结果对程序员是透明的,处理机能直接检测下一条指令是否能够流出,不需要由编译器或专门的变换程序对程序的指令进行重新排列
- 即使是没有经过编译器针对超标量结构进行调度优化的代码或是旧的编译器生成的代码也可以运行,当然运行的效果不会很好,要达到很好的效果,就是使用动态超标量调度技术
指令多流出处理器的流出能力受到的影响。
- 程序所固有的指令机并行性(最简单最根本)
- 硬件上实现的困难
- 超标量和超长指令字处理器固有的技术限制
第六章 指令级并行的开发–软件方法
概念
- 指令调度:为了充分发挥流水线的作用,必须设法让它满负荷工作,这就要求充分开发指令之间存在的并行性,找出不相关的指令序列,让它们在流水线上重叠并行执行。
- 循环展开:循环体的代码复制多次并按顺序排放,然后相应地进行调整循环的结束条件
- 关键路径:根据指令间的相关关系构成的数据流图中延迟最长的一段路径
- 踪迹调度:踪迹调度的步骤:踪迹选择和踪迹压缩
- 前瞻执行:解决掌握相关的方法,它对分支指令的结构进行推测,然后按这个推测结果连续取值,流出和执行后续的指令;只是指令执行的结果不是写回到寄存器和储备器,而是放到一个ROB的缓冲器中;等到相应的指令得到确认后,才将结果写到寄存器或储备器
知识点
- 掌握相关的概念
- 掌握循环展开法和指令调度的基本方法。循环展开法和指令调度时注意的问题。
- 循环展开和指令调度要注意几个方面
- 保证正确性
- 注意有效性
- 使用不同的寄存器
- 删除多余的测试指令和分支指令
- 注意对存储器数据的相关性进行分析
- 注意新的相关性
- 循环展开和指令调度要注意几个方面
- 全局指令调度的两种技术
- 踪迹调度
- 超块调度
- 显式并行计算(EPIC)结构必须符合的基本特点,EPIC高级优化技术。
- 基本特点
- 指令级并行主要由编译器负责开发,处理器应为保证代码正确执行提供必要的硬件支持,只有在这些硬件机制的辅助下这些优化技术才能高效完成。
- 系统结构必须提供某种通信机制,使得流水线硬件能够了解编译器“安排”好的指令执行顺序
- EPIC高级优化技术
- 非绑定分支
- 谓词执行
- 前瞻执行
- 基本特点
- 影响前瞻执行效果的因素;处理由前瞻指令引起异常的方法。
- 因素
- 编译器能力的高低
- 异常处理机制能否推迟处理
- 如何避免前缀引起的错误
- 方法
- 立即处理每一个异常
- 借助专门的检测指令判断是否需要进行异常处理
- 为每个通用增加一个标志位”poson”位,可继续异常将被立即处理,引发终止性异常时,目的寄存器R的poson位置1,否则改为清0。当之后的另一条指令访问R是,若poson位为1将触发一个终止性异常
- 将指令的执行结果保存到再定序缓冲器中,并将指令流出的顺序依次确认,但是前瞻指令的确认实际却被推迟,直至能够确定该指令都的前瞻指令是正确(错误)的
- 因素
- 软流水技术的核心思想
- 从循环中的不同迭代中抽取一部分指令拼成一个新的循环迭代,以便将同一迭代中的相关指令分布到痌的迭代中,或将不同迭代中的相关指令封装到同一迭代中。
第七章 存储系统
概念
- 多级存储层次:采用不同的技术实现不同的存储器,处在离CPU不同距离的层次上,目标是达到离CPU最近的存储器的速度,最远的存储器的容量
- 命中时间:访问Cache命中时所花的时间
- 不命中开销:CPU向第二级存储器发出访问请求到把这个数据块调入低一级存储器所花的时间
- 替换算法:由于主存中的块比Cache中的块多,所以当要从主存中调一个块到Cache中时,会出现所映像的一组Cache块已被占用的情况,这时,需要被迫腾出一块,接纳被被调入的块
- 强制性不命中:当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache
- 冲突不命中:在组相连或直接映射Cache中,若太多的块映射到同一组中,则会出现该组中的某一块被别的块替换、然后又被重新访问的情况
知识点
人们对存储系统的要求
程序访问的局部性原理
程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的,程序访问的局部性包括两个方面:时间局部性和空间局部性
存储系统的性能参数
- 存储容量S
- 存储系统的平均每位价格C
- 命中率H
- 平均访存时间Ta
三级存储系统的结构
存储层次要考虑的4个问题
- 当把一个块(页)调入高一层(靠近CPU)存储器时,可以放到那些位置上?(映像规则)
- 当所要访问的块(页)在高一层存储器中时,如何找到该块(查找算法)
- 当发生不命中而且高一层存储器已经满时,应替换那一块(替换算法)
- 当进行写访问时,应进行那些操作(写策略)
映像规则的类型
- 全相联映像、直接映像、组相连映像
替换算法的种类、优缺点
- 随机法
- 优点:简单、易于用硬件实现
- 缺点:命中率比较低
- 先进先出法
- 优点:容易实现
- 缺点:不能正确反映程序的局部性
- 最近最少使用法
- 优点:命中率高
- 缺点:硬件实现成本高
- 随机法
写策略的种类
- 写直达法
- 写回法
三种种类的不命中、降低不命中的方法
- 三种种类
- 强制性不命中
- 容量不命中
- 冲突不命中
- 降低不命中的方法
- 增加块的大小(最简单)
- 增加cache的容量(最直接)
- 提高相连度
- 伪相连cache
- 硬件预取
- 编译器控制的预取
- 编译优化
- 牺牲cache
- 三种种类
并行存储器结构的类型,单体多字存储器访存效率不高的原因;多体交叉存储器的编址方法。
- 类型
- 单体多字存储器
- 多体交叉存储器
- 原因
- 单体多姿并行存储器一次能读取m个指令字
- 单体多字并行存储器一次取出的m个数据不一定都是有用的
- 在这个存储器中,必须凑齐了m个数之后才能一起写入存储器
- 当要读出的数据字和要写入的数据字处于同一场存储字内,读和写的操作无法在同一个存储周期内完成
- 方法
- 高位交叉编址
- 低位交叉编址
- 类型
第八章 输入输出系统
概念
- RAID:
- 响应时间:
- 可靠性:
- 可用性:
- 可信性:
知识点
- 评价I/O系统的主要性能参数
- 在磁盘阵列中设置冗余需要解决的问题
- 总线的主要特性
- 通道的功能、通道的主要硬件、通道的种类
- 通道的流量分析
第九章 互连网络
概念
- 互连网络:
- 互连函数:
- 自适应寻径:
- 静态互连网络:
- 动态互连网络:
- 结点度:
知识点
- 基本互连函数的表达式、规则
- 互连网络的性能指标
- 互连网络的分类
- 各种多级互连网络的区别、2×2开关模式连接的方式,开关模式控制的方式
- 三级立方体网络
第十章 多处理机
知识点
- 多Cache一致性:
- 旋转锁:
- 同时多线程:
概念
- 并行计算机系统结构分类
- 多处理的通信机制,两种通信机制的主要优点
- 存储器一致性满足的条件、实现一致性的基本方案、写作废协议和写更新协议在性能上的差别
- 目录的三种结构
- 并行计算机系统结构的分类
第十一章 多核架构与编程
概念
- CMP:
- SMT:
- MPI:
知识点
- 并行编程模型的类型、各自的特点
- 多核技术的优点、多核架构的多处理器的不同
- CPU发热取决的主要因素
- 多核时代的主要驱动力有哪些?
第十二 机群系统
概念
- 机群:
- 负载均衡机群:
知识点
- 机群的特点
- 机群的分类
第十三章 多处理机
概念
- 阵列处理机
- 阵列控制器
知识点
- 阵列处理操作模型的组成,阵列处理机的特点
- 阵列处理机基本结构分类