type
status
date
slug
summary
tags
category
icon
password
01 计算机系统结构的基本概念计算机系统的层次结构计算机系统结构的分类▲ Amdahl定律▲ CPU性能公式02 计算机指令集结构RISC指令集结构的功能设计▲ MIPS指令集结构03 流水线技术流水线的基本概念▲ 流水线的性能指标▲ 流水线的相关与冲突▲ 流水线的实现04 指令级并行ILP指令级并行的基本概念▲ Tomasulo算法▲ 动态分支预测技术▲ 循环展开和指令调度05 存储系统存储系统的层次结构Cache基本结构和原理▲ Cache映像规则Cache查找方法Cache替换算法▲ Cache写策略▲ Cache性能分析改进Cache性能06 输入/输出系统I/O系统的性能I/O系统的可靠性、可用性、可信性▲ 独立磁盘冗余阵列RAID通道08 多处理机基本概念▲ 解决一致性问题的方法(写更新、写作废)▲ 一致性协议(监听、目录)同步09 机群系统机群系统基本结构机群系统特点天河二号华为鲲鹏处理器
01 计算机系统结构的基本概念
层次结构
计算机系统的层次结构
L1-L3用解释的方法实现
每当一条L+1级指令被译码后,就直接去执行一串等效的L级指令。
L4-L6用翻译的方法实现
L+1级程序全部变换成L级程序后,再执行新产生的L级程序。
解释执行一般比编译执行花时间多,占用存储空间少
计算机系统结构的分类
冯氏分类法:用系统的最大并行度(单位时间内处理的最大二进制位数,字宽*字数)进行分类
Flynn分类法:指令流和数据流的多重性分类。多倍性:在系统结构受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。SISD SIMD MISD MIMD
▲ Amdahl定律
当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比
T0:改进前执行时间 Tn:改进后执行时间 Fe:可改进比例 Se:部件加速比
当Fe趋近于0时,整个系统性能提升的上限为1/Sn,即瓶颈所在部分的性能提升有限。
当Sn趋近于0时,整个系统性能提升的上限为1/Fe,即瓶颈不在该部分时该部分性能提升越大整个系统性能提升越大。
▲ CPU性能公式
吞吐率:单位时间内完成的任务数量,通常以每秒完成的任务数或每小时完成的任务数为单位。
指令数IC:取决于指令集结构与编译技术
指令平均执行周期数CPI:取决于计算机组成和指令集结构
时钟周期数:取决于硬件实现技术和计算机组成
主频:1/时钟周期,400MHz表示1秒内有400M个时钟周期
MIPS:每秒百万指令,1秒—-400M T—- (400M/CPI)MIPS
课后题
层次结构 | 按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征。
微程序机器级,传统机器语言机器级,操作系统虚拟机,汇编语言机器级,高级语言机器级,应用语言机器级 |
虚拟机 | 用软件实现的机器 |
翻译 | L+1级程序全部变换成L级程序后,再执行新产生的L级程序。(全部) |
解释 | 每当一条L+1级指令被译码后,就直接去执行一串等效的L级指令。(立即) |
计算机系统结构 | 传统机器程序员所看到的计算机属性,即概念性结构与功能特性。(需求) |
透明性 | 在计算机技术中,本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。(低层对高层来说是透明的) |
计算机组成 | 计算机系统结构的逻辑实现。包含物理机器级中的数据流和控制流的组成以及逻辑设计等。 |
计算机实现 | 计算机组成的物理实现。(一种体系结构多种组成,一种组成多种实现) |
系统加速比 | 对系统中某部分进行改进时,改进后系统性能提高的倍数 |
Amdahl定律 | 当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比 |
程序的局部性原理 | 程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。包括时间局部性和空间局部性。 |
CPI | 每条指令执行的平均时钟周期数(circles per instruction) |
测试程序组件 | 由各种不同的真实应用程序构成的一组测试程序,用来测试计算机在各个方面的处理性能。 |
存储程序计算机 | 冯•诺依曼结构计算机。其基本点是指令驱动。程序预先存放在计算机存储器中,机器一旦启动,就能按照程序指定的逻辑顺序执行这些程序,自动完成由程序所描述的处理工作。 |
系列机 | 由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。 |
软件兼容 | 一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上运行。差别只是执行时间的不同。 |
向上(下)兼容 | 按某档计算机编制的程序,不加修改就能运行于比它高(低)档的计算机。 |
向后(前)兼容 | 按某个时期投入市场的某种型号计算机编制的程序,不加修改地就能运行于在它之后(前)投入市场的计算机。 |
兼容机 | 由不同公司厂家生产的具有相同系统结构的计算机。 |
模拟 | 用软件的方法在一台现有的计算机(称为宿主机)上实现另一台计算机(称为虚拟机)的指令系统。 |
仿真 | 用一台现有计算机(称为宿主机)上的微程序去解释实现另一台计算机(称为目标机)的指令系统。 |
并行性 | 计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。只要在时间上相互重叠,就存在并行性。它包括同时性与并发性两种含义。(分为指令内部并行、指令级并行ILP、线程级并行TLP、任务级/过程级并行、作业/程序级并行) |
时间重叠 | 在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。 |
资源重复 | 在并行性概念中引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。 |
资源共享 | 这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。 |
耦合度 | 反映多机系统中各计算机之间物理连接的紧密程度和交互作用能力的强弱。 |
紧密耦合系统 | 又称直接耦合系统。在这种系统中,计算机之间的物理连接的频带较高,一般是通过总线或高速开关互连,可以共享主存。 |
松散耦合系统 | 又称间接耦合系统,一般是通过通道或通信线路实现计算机之间的互连,可以共享外存设备(磁盘、磁带等)。计算机之间的相互作用是在文件或数据集一级上进行。 |
异构型多处理机系统 | 由多个不同类型、至少担负不同功能的处理机组成,它们按照作业要求的顺序,利用时间重叠原理,依次对它们的多个任务进行加工,各自完成规定的功能动作。 |
同构型多处理机系统 | 由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务。 |
展开论述设计系统结构需要考虑哪些因素?如何设计一种好的系统结构
① 以经常性事件为中心;
② 根据Amdahl定律,尽可能优化系统结构内的各部件,而非集中在单一部件的优化;
③ 在时钟周期时间、CPI、IC之间寻找平衡;
④ 利用局部性原理强化预测成功率,减少开销
02 计算机指令集结构
RISC指令集结构的功能设计
- 指令集应满足哪几个基本要求?
对指令集的基本要求是:完整性、规整性、高效率和兼容性。
完整性:是指在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够使用。
规整性:主要包括对称性和均匀性。对称性是指所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。均匀性是指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。
高效率:指令的执行速度快、使用频度高。
兼容性:新指令集必须向后兼容旧指令集
- 指令集结构设计所涉及的内容有哪些?
(1) 指令集功能设计:主要有 RISC 和 CISC 两种技术发展方向;
(2) 寻址方式的设计:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频率,根据适用频率设置必要的寻址方式。
(3) 操作数表示和操作数类型:主要的操作数类型和操
作数表示的选择有:浮点数据类型、整型数据类型、字符型、十进制数据类型等等。
(4) 寻址方式的表示:可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。
(5) 指令集格式的设计:有变长编码格式、固定长度编码格式和混合型编码格式 3 种。
- 简述 RISC 指令集结构的设计原则
① 指令条数少而简单
② 采用简单而统一的指令格式,并减少寻址方式
③ 指令的执行在单个机器周期内完成
④ 采用load-store结构,仅load与store才能访问存储器
⑤ 大多数指令都采用硬连逻辑来实现
⑥ 强调优化编译器的作用,为高级语言程序生成优化的代码
⑦ 充分利用流水线技术来提高性能
▲ MIPS指令集结构
32个64位通用寄存器(整数寄存器),R0的值恒为0
32个64位浮点寄存器,存放32个单/双精度浮点数
整数:字节8b,半字16b,字32b,双字64b
浮点数:单精度32b,双精度64b
32b的指令,操作码均为6b
LD A,B 是将Mem[Regs[B]]存入Regs[A]
SD A,B 是将Regs[A]存入Mem[Regs[B]]
ADD A,B,C
是将Regs[B]+Regs[C]的值存入Regs[A]
BEQZ(Branch on Equal to Zero)
BNE (Branch on Not Equal)
课后题
堆栈型计算机 | CPU 中存储操作数的单元是堆栈的机器。(操作数是隐式的,每次从stack中pop两个push一个) |
累加器型机器 | CPU 中存储操作数的单元是累加器的机器。(一个隐式一个显式给出通用寄存器型机器) |
通用寄存器型机器 | CPU 中存储操作数的单元是通用寄存器的机器。(都显式给出,所有指令都使用一组通用寄存器,这些寄存器可以存储数据或地址。) |
CISC | 复杂指令集计算机(指令通常具有较复杂的操作,执行时间较长,一般采用RM结构,CPI较大,IC少) |
RISC | 精简指令集计算机(指令通常较简单,执行时间较短,一般采用RR结构) |
寻址方式 | 指令系统中如何形成所要访问的数据的地址。一般来说,寻址方式可以指明指令中的操作数是一个常数、一个寄存器操作数或者是一个存储器操作数 |
数据表示 | 硬件结构能够识别、指令系统可以直接调用的那些数据结构。 |
03 流水线技术
流水线的基本概念
- 什么是流水线的级(段)和深度?流水线深度是不是越深越好(流水线的成本问题、功耗问题, 对于单个指令来说执行时间反而会增加) ? 流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。 因为流水线深度的增加会导致流水线的成本和功耗增加,并且对于单个指令来说,执行时间可能反而会增加,因为每个阶段的处理时间都有一定的开销,流水线中的阻塞可能会导致执行时间增加。
- 流水线的特点是什么? ① 流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。 ② 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。时间长的段将成为流水线的瓶颈。 ③ 流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。 ④ 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。 ⑤ 流水线需要有通过时间和排空时间。(第一/最后一个任务进入到流出的时间)
- 分类
- 流水线设计的问题
瓶颈问题【各段时间相等:细分瓶颈段、重复设置瓶颈段】
额外开销:建立时间(触发写操作时时钟信号到达之前寄存器输入必须保持稳定)、传输延迟(时钟信号到达后寄存器输出可用时间)【选用高性能锁存器】
冲突问题
▲ 流水线的性能指标
- 吞吐量:任务数/总时间
- 加速比:T前/T后
- 效率:矩形面积/实际占用的面积
▲ 流水线的相关与冲突
- 减少流水线分支延迟的静态方法有哪些?
1)预测分支失败:沿失败的分支继续处理指令,就好象什么都没发生似的。当确定分支是失败时,说明预测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。
2)预测分支成功:当流水线 ID 段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。
3)延迟分支:主要思想是从逻辑上“延长”分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽构成。不管分支是否成功,都要按顺序执行延迟槽中的指令。
共同特点:它们对分支的处理方法在程序的执行过程中始终是不变的。它们要么总是预测分支成功,要么总是预测分支失败。
▲ 流水线的实现
采用分离的指令Cache与数据Cache
课后题
流水线 | 将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程并行进行。 |
单功能流水线 | 【能否拆解以实现不同功能】
指流水线的各段之间的连接固定不变、只能完成一种固定功能的流水线。 |
多功能流水线 | 指各段可以进行不同的连接,以实现不同的功能的流水线。 |
静态流水线 | 【是否允许后期两种运算同时进行】
指在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作的流水线。当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才能改变连接。 |
动态流水线 | 指在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能的流水线。它允许在某些段正在实现某种运算时,另一些段却在实现另一种运算。 |
部件级流水线 | 【按照流水级别分类】
运算操作流水线,把处理机的算术逻辑运算部件分段,使得各种类型的运算操作能够按流水方式进行 |
处理机级流水线 | 指令流水线,把指令的解释执行过程按照流水方式处理。把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。 |
处理机间流水线 | 宏流水线,由两个或者两个以上的处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。 |
线性流水线 | 【按照流水线中是否有反馈回路来进行分类】
流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。 |
非线性流水线 | 流水线中除了有串行的连接外,还有反馈回路。 |
按序流水线 | 【根据任务流入和流出的顺序是否相同来进行分类】
流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。每一个任务在流水线的各段中是一个跟着一个顺序流动的。 |
乱序流水线 | 流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出) |
吞吐量 | TP,单位时间内流水线所完成的任务数量或输出结果的数量 |
流水线加速比 | S,完成同一批任务,不使用流水线所用的时间与使用流水线所用的时间之比 |
流水线的效率 | e,流水线中设备实际使用时间与整个运行时间的比值,即流水线设备的利用率(=方格部分面积/大的矩形面积) |
数据相关 | 对于两条指令i和j,如果下述条件之一成立,则称指令j与指令i数据相关。①指令j使用指令i产生的结果;②指令j与指令k数据相关,而指令k又与指令i数据相关。【写后读】 |
名相关 | 如果两条指令使用相同的名(指令所访问的寄存器或存储器单元的名称),但是它们之间并没有数据流动,则称这两条指令存在名相关。【读后写 写后写】 |
反相关 | 考虑两条指令i和j ,i在j的前面,如果指令j所写的名与指令i所读的名相同,则称指令i和j发生了反相关。【读后写】 |
输出相关 | 如果指令j和指令i写相同的名,则称指令i和j发生了输出相关。输出相关指令的执行顺序是不能颠倒的,以保证最后的结果是指令j写进去的。 【写后写】 |
控制相关 | 由分支指令引起的相关。它需要根据分支指令的执行结果来确定后面该执行哪个分支上的指令。【分支指令】 |
换名技术 | 名相关的两条指令之间并没有数据的传送,只是使用了相同的名。可以把其中一条指令所使用的名换成别的,以此来消除名相关。 |
结构冲突 | 因硬件资源满足不了指令重叠执行的要求而发生的冲突。 |
数据冲突 | 当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。 |
控制冲突 | 流水线遇到分支指令或其它会改变 PC 值的指令所引起的冲突 |
定向 | 又叫旁路或短路,用来解决写后读冲突的。在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果。如果能够将该计算结果从其产生的地方直接送到其它指令需要它的地方,那么就可以避免停顿。 |
写后读冲突 | 考虑两条指令i和j,且i在j之前进入流水线,指令j用到指令i的计算结果,而且在i将结果写入寄存器之前就去读该寄存器,因而得到的是旧值。 |
读后写冲突 | 考虑两条指令i和j,且i在j之前进入流水线,指令j的目的寄存器和指令i的源操作数寄存器相同,而且j在i读取该寄存器之前就先对它进行了写操作,导致读到的值是错误的。 |
写后写冲突 | 考虑两条指令i和j,且i在j之前进入流水线,指令j和指令i的结果单元(寄存器或存储器单元)相同,而且j在i写入之前就先对该单元进行了写入操作,从而导致写入顺序错误。这时在结果单元中留下的是写入i的值,而不是写入j的。 |
题目
题目
04 指令级并行ILP
指令级并行的基本概念
- 程序顺序:由源程序确定的在完全串行方式下指令的执行顺序
- 关键:数据流、异常行为(顺序改变不能导致发生新的异常)
▲ Tomasulo算法
- 动态调度优点:处理编译时不明情况,简化编译器;面向某一流水线的代码在其他流水线上也能高效运行。会显著增加硬件复杂性。
- Tomasulo的核心
- 记录和检测指令相关,操作数一旦就绪就立即执行,把RAW可能性降低到最小
- 通过寄存器换名来消除WAR与WAW冲突
流出→执行(两个数都有了才会开始执行)→写结果(乱序完成)
Vj、Qj不可能同时有值
Qi该寄存器将被哪个指令写了
指令延时时间至在部件中执行部分所占周期数
▲ 动态分支预测技术
- 分支历史表BHT(Branch History Table)
根据近几次情况进行预测分支成功与失败,在ID段对BHT进行访问,4K即可
- 分支目标缓冲器BTB(Branch Target Buffer)
地址标识+预测的分支目标地址
预测错误多两个周期:更新BTB的项+取新的指令
- 基于硬件的前瞻执行
- 基本思想
- 动态分支预测,选择后续执行的指令
- 在控制相关的结果未出来前,前瞻执行后续指令
- 用动态调度对基本块的各种组合进行跨基本块调度
- ROB构成:指令类型、目标地址、数据值字段、就绪字段
基于Tomasulo,保留站换名由ROB完成,流出→执行→写结果→确认(预测错误指令传来,需要清空ROB,从而实现错误的前执行瞻)
顺序完成,根据ROB的顺序
在此时SUB与ADD都已经完成,但还未确认,数值放在ROB的Value,可以供ROB中的其他项使用
▲ 循环展开和指令调度
- 读慢写快,但读出现概率更大
- 展开3次得到4个循环体
- 注意点
- 保证正确性:循环控制、操作数偏移量修改
- 注意有效性:找到不同循环体之间的无关性
- 使用不同的寄存器:减少冲突
- 删除多余的测试指令和分支指令,对循环体代码进行修正
- 注意对存储器数据的相关性分析:load和store访问地址不同就可以对调
- 注意新的相关性
R1=R1-8表示R1跳转到其后面8B的位置
课后题
指令级并行 | 简称ILP。是指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。 |
指令调度 | 通过在编译时让编译器重新组织指令顺序或通过硬件在执行时调整指令顺序来消除冲突。 |
指令的动态调度 | 是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。是由硬件在程序实际运行时实施的。 |
指令的静态调度 | 是指依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化的。 |
保留站 | 在采用Tomasulo算法的MIPS处理器浮点部件中,在运算部件的入口设置的用来保存一条已经流出并等待到本功能部件执行的指令(相关信息)。 |
CDB | 公共数据总线 |
动态分支预测技术 | 是用硬件动态地进行分支处理的方法。在程序运行时,根据分支指令过去的表现来预测其将来的行为。如果分支行为发生了变化,预测结果也跟着改变。 |
BHT | 分支历史表。用来记录相关分支指令最近一次或几次的执行情况是成功还是失败,并据此进行预测。 |
分支目标缓冲 | 是一种动态分支预测技术。将执行过的成功分支指令的地址以及预测的分支目标地址记录在一张硬件表中。在每次取指令的同时,用该指令的地址与表中所有项目的相应字段进行比较,以便尽早知道分支是否成功,尽早知道分支目标地址,达到减少分支开销的目的。 |
前瞻执行 | 解决控制相关的方法,它对分支指令的结果进行猜测,然后按这个猜测结果继续取指、流出和执行后续的指令。只是指令执行的结果不是写回到寄存器或存储器,而是放到一个称为ROB的缓冲器中。等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器。 |
ROB | ReOrder Buffer。前瞻执行缓冲器 |
超标量 | 一种多指令流出技术。它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限。 |
超流水 | 在一个时钟周期内分时流出多条指令。 |
超长指令字 | 一种多指令流出技术。VLIW处理机在每个时钟周期流出的指令条数是固定的,这些指令构成一条长指令或者一个指令包,在这个指令包中,指令之间的并行性是通过指令显式地表示出来的。 |
循环展开 | 是一种增加指令间并行性最简单和最常用的方法。它将循环展开若干遍后,通过重命名和指令调度来开发更多的并行性。 |
题目
循环展开一次
题目
分支→寻找缓冲区(命中)→预测
题目
05 存储系统
存储系统的层次结构
【仅考虑有M1、M2两层的情况】
- 容量大、速度快、价格低、易失性
- Cache-主存是解决主存速度问题,主存-辅存是解决主存易失性和容量问题
- 存储层次解决的问题:映像规则、查找算法、替换算法、写策略
Cache基本结构和原理
- Cache和主存分割成块,信息以块为单位
- 主存块地址(块号)+块内位移
▲ Cache映像规则
- 全相联映像:主存中的任一块可以被放置到Cache中的任意一个位置
空间利用率最低,冲突概率最高, 实现最简单
- 直接映像:主存中的每一块只能被放置到Cache中唯一的一个位置
- 组相联映像:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置(n个位置称为n路组相联)。主存地址=块地址(标识+索引)+块内位移
单提高相联度,并不能提高系统整体性能,反而使实现Cache的复杂度和成本增加。
- 绝大多数计算机采用直接映像或 n ≤4的组相联
Cache查找方法
目录表、侯选位置、相联存储器
- 并行查找
- 相联存储器实现
- 单体多字的按地址访问存储器和比较器
①通过索引确定组号(得到侯选位置) ②通过标识确定组内块号
标识存储器的相联存储区要用相联存储器
标识存储器,根据索引选择一行,在一行中根据标识进行选择对应的块
Cache替换算法
- 随机法
- 先进先出法 FIFO
- 最近最少使用 LRU
▲ Cache写策略
- 写直达法
执行“写”操作时,不仅写入Cache,而且也写入下一级存储器。
写操作过程种CPU必须等待 → CPU写停顿 → 写缓冲器
写不命中:不按写分配(绕写法)直接写入下一级存储器
易于实现,一致性好
- 写回法
执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。 (设置“修改位”)
写不命中:按写分配(写时取)
速度快,提高主存写效率,使用带宽较低
▲ Cache性能分析
- 存储容量(第二级存储器M2的容量)、平均每位的价格、命中率(在M1中找到所需信息的概率)与不命中率、平均访问时间
平均访存时间与CPU时间(用CPI求)
TM又被称作不命中开销(TM=T2+TB,是指多余的开销)
改进Cache性能
- 不命中的类型:强制性不命中(首次访问)、容量不命中(Cache不够大)、冲突不命中(组相联/直接相联)
- 降低Cache不命中率(8种)
增加Cache块大小(最简单)、增加Cache容量(最直接)、提高相联度、硬件预取、编译器控制的预取、编译器优化、“牺牲”Cache
- 减少Cache不命中开销(5种)
两级Cache、让读不命中优先于写、写缓冲合并、请求字处理、非阻塞Cache
- 减少命中时间(4种)
容量小、结构简单的Cache、虚拟Cache、Cache访问流水化、踪迹Cache
课后题
题目
06 输入/输出系统
I/O系统的性能
- 完成计算机与外界的信息交换(通信I/O系统);给计算机提供大容量的外部存储器(存储I/O系统,本章内容)
- Amdahl定律:计算机系统性能受限于系统中最慢的部分。
- 评价参数
- 连接特性:哪些I/O设备可以和计算机系统相连接
- I/O系统容量:I/O系统可以容纳的I/O设备数
- 响应时间、吞吐率等
I/O系统的可靠性、可用性、可信性
- 可靠性:系统从某个初始参考点开始一直连续提供服务的能力。
- 用平均无故障时间MTTF(mean time to failure)来衡量,其倒数为失效率(系统失效率为各个部分失效率之和)
- 提高方法:
- 有效构建方法:构建系统过程中消除故障隐患
- 纠错方法:在系统构建中采用容错的方法。这样即使出现故障, 也可以通过容错信息保证系统正常工作
- 可用性:系统正常工作时间在连续两次正常服务间隔时间中所占比率
- 用来表示,MTTR(mean time to repair)为平均修复时间,MTTR+MTTF为平均失效间隔时间=MTBF(mean time between failure)
- 可信性:服务的质量。即在多大程度上可以合理地认为服务是可靠的。(不可度量)
▲ 独立磁盘冗余阵列RAID
- DA:disk array,磁盘阵列,多个磁盘组合代替一个大容量磁盘。
- 磁盘并行工作、以条带为单位将数据均匀分布到磁盘上(交叉存放)
- RAID:redundant arrays of independent/inexpensive disk,独立磁盘冗余序列(廉价磁盘冗余序列)在磁盘阵列中设置冗余信息盘,当单个磁盘失效时,丢失的信息可以通过冗余盘中的信息重新构建。
- 减少平均修复时间MTTR:热备份盘(失效后有盘可以替代其工作)、热切换技术(允许不关机情况下切换设备)
RAID级别 | 可以容忍的故障个数以及当数据盘为8个时,所需要的检测盘的个数 | 优点 | 缺点 | 公司产品 |
0
非冗余,条带存放 | 0个故障;
0个检测盘 | 没有空间开销 | 没有纠错能力 | 广泛应用 |
1
镜像 | 1个故障;
8个检测盘 | 不需要计算奇偶校验,数据恢复快,读数据快。而且其小规模写操作比更高级别的RAID快 | 检测空间开销最大(即需要的检测盘最多) | EMC,
HP(Tandem),
IBM
每当把数据写入磁盘时,将该数据也写入其镜像盘,形成信息的两个副本。 |
2
存储器式ECC
(按汉明纠错码的思路构建) | 1个故障;
4个检测盘 | 不依靠故障盘进行自诊断 | 检测空间开销的级别是log2m级(m为数据盘的个数) | 没有
含4个数据盘的RAID2 |
3
位交叉奇偶校验 | 1个故障;
1个检测盘 | 检测空间开销小(即需要的检测盘少),大规模读写操作的带宽高 | 对小规模、随机的读写操作没有提供特别的支持 | 外存概念
位交叉奇偶校验盘阵列 |
4
块交叉奇偶校验 | 1个故障;
1个检测盘 | 检测空间开销小,小规模的读操作带宽更高 | 校验盘是小规模
写的瓶颈 | 校验盘是小规模
写的瓶颈
块交叉奇偶校验磁盘阵列
采用比较大的条带,以块为单位进行交叉存放和计算奇偶校验。 |
5
块交叉分布奇偶校验 | 1个故障;
1个检测盘 | 检测空间开销小,小规模的读写操作带宽更高 | 小规模写操作
需要访问磁盘4次 | 广泛应用
无专用冗余盘,奇偶校验信息均匀分布在所有磁盘上。 |
6
P+Q双奇偶校验 | 2个故障;
2个检测盘 | 具有容忍2个
故障的能力 | 小规模写操作需要访问磁盘6次,检测空间开销加倍(与RAID3、4、5比较) | 网络设备
P+Q双校验磁盘阵列 |
RAID10又称为RAID1+0
先进行镜像(RAID1),再进行条带存放(RAID0)通道
RAID01又称为RAID0+1
先进行条带存放(RAID0),再进行镜像(RAID1)
通道
- 通道处理机(简称通道):专门负责整个计算机系统的输入/输出工作。通道处理机只能执行有限的一组输入/输出指令。主要硬件为寄存器与控制逻辑 CPU→通道→设备控制器→外设
- 功能:接收CPU发来的I/O指令,并根据指令要求选择指定的外设与通道相连接;执行通道程序;给出外设中要进行读/写操作的数据所在的地址;给出主存缓冲区的首地址;控制外设与主存缓冲区之间的数据传送的长度;指定传送工作结束时要进行的操作;检查外设的工作状态是否正常,并将该状态信息送往主存指定单元保存;在数据传输过程中完成必要的格式变换
- 种类:
- 字节多路通道
- 选择通道
- 数组多路通道
为多台低速或中速的外设服务。以字节交叉的方式分时轮流地为它们服务。字节多路通道可以包含多个子通道,每个子通道连接一台设备控制器。
为多台高速外围设备服务。在一段时间内只为一台高速外设独占使用。
适用于高速设备。每次选择一个高速设备后传送一个数据块,轮流为多台外围设备服务。数组多路通道之所以能够并行地为多台高速设备服务,是因为虽然其所连设备的传输速率很高,但寻址等辅助操作时间很长。
- 通道流量:通道吞吐率、通道数据传输率,一个通道在数据传送期间,单位时间内能够传送的数据量。所用单位一般为Bps。
问题
问题:①对于写回法来说,CPU修改了Cache的内容后,由于存储器的内容跟不上Cache内容的变化,I/O系统进行输出操作时所看到的数据是旧值。②I/O系统进行输入操作后,存储器的内容发生了变化,但CPU在Cache中所看到的内容依然是旧值。
解决方案:①软件的方法。设法保证I/O缓冲器中的所有各块都不在Cache中。具体做法有两种,一种是把I/O缓冲器的页面设置为不可进入Cache的,在进行输入操作时,操作系统总是把输入的数据放到该页面;另一种方法是在进行输入操作之前,操作系统先把Cache中与I/O缓冲器相关的数据"赶出"Cache,即把相应的数据块设置为"无效"状态。当然,如果是采用写回法的Cache,而且该数据块被修改过,就还需要把整块的内容写回存储器。
②硬件的方法。在进行输入操作时,检查相应的I/O地址(I/O缓冲器中的单元)是否在Cache中(即是否有数据副本)。这是通过把这些I/O地址与Cache中的标识进行比较来判断的。为了使这些比较能与CPU对Cache的访问并行进行,可以多设置一套完全相同的标识存储器。如果发现I/O地址在Cache中有匹配的,就把相应的Cache块设置为“无效”。
08 多处理机
基本概念
- 并行计算机系统结构分类:集中式共享存储型体系结构(SMP-symmetric multiprocessor对称式多处理机【单一主存,相对于各个处理器的关系是对称的】,UMA-uniform memory access均匀存储器访问【从各个处理器访问存储器的时间相同】)、分布式存储多处理机(DSM-distributed storage multiprocessor)
- 通信机制:共享存储器通信方式、消息传递机制(同步、异步)
▲ 解决一致性问题的方法(写更新、写作废)
- 写作废:写之前,拥有唯一访问权(作废其他副本)
- 写更新:写入时,通过广播对所有副本进行更新
- 区别:①在对同一个数据进行多次写操作而中间无读操作的情况下,写更新协议需进行多次写广播操作,而写作废协议只需一次作废操作。 ②在对同一Cache块的多个字进行写操作的情况下,写更新协议对于每一个写操作都要进行一次广播,而写作废协议仅在对该块的第一次写时进行作废操作即可。写作废是针对Cache块进行操作,而写更新则是针对字(或字节)进行。 ③考虑从一个处理器A进行写操作后到另一个处理器B能读到该写入数据之间的延迟时间。在写更新协议中,这个延迟时间比较小,因为它在进行写操作时,立即更新了所有其他Cache中的副本,包括Cache B中的副本(假设有此副本)。而在写作废协议中,由于在处理器A进行写操作时已经作废了Cache B中的副本,所以当处理器B进行读操作时需要等待,直到新的副本被调入Cache。
- 在基于总线的多处理机中,总线和存储器带宽是最紧缺的资源,而写作废协议所耗费的总线和存储器带宽比较少,因此写作废协议成为绝大多数多处理机系统的选择。
▲ 一致性协议(监听、目录)
- 一致性定义:①读写之间无其他写,则读为写的数据(程序的顺序)②P写后Q读,Q应读出P写的值(存储器的一致性)③写串行化,任意处理器对同一单元的两次写的顺序在外界看来都应该是相同的(写串行化)
- Cache一致性协议:在多个处理器种用来维护一致性的协议
- 监听式一致性协议
- 技术关键:处理器之间通过应该可以实现广播的互连机制相连(通常是总线);Cache响应CPU访问涉及全局操作时,需要先获得总线控制权,在总线上发消息;所有CPU都在一直监听总线。
- tag:有效位,用来实现监听
- 共享位:1表示被多块共享,0表示被某个处理器独占
- 三种状态:Invalid、Shared、Modified(有限状态控制器) 三种消息:RdMiss、WtMiss、Invalidate
- 目录式一致性协议
- 广播和监听的机制使得监听一致性协议可扩放性很差,使用目录协议替代,有一个地方可以专门存放哪些Cache使用了副本。
- 目录:对存储器中每一个可以调入Cache的数据块设置一条目录项,用于记录该块的状态及Cache中的副本
- 位向量:记录哪些Cache中有副本长度与处理器个数成正比,即共享集
- 三种节点类型:本地节点(发出访问请求的节点)、宿主节点(存储单元及其目录项)、远程节点 存储块的三种状态:Uncached、Shared、Exclusive 九种消息:RdMiss(P,K)、WtMiss(P,K)、Invalidate(K)、Fetch(K)、Fetch&Inv(K)、DReply(D)、WtReply(K,D)、MdSharer(P,K)、WtBack2(P,K,D)
- 目录的结构:全映像目录、有限映像目录、链式目录
- 通常是采用监听式协议,因为其可以直接利用已有的物理连接(连接到存储器的总线)
同步
- 同步指令基础上,软件例程实现
- 基本硬件原语:原子交换(一个存储单元的值和一个寄存器的值进行交换)、test_and_set、fetch_and_increment、LL/SC
- 同时多线程
题目
什么是多处理机的一致性?简述解决一致性的监听协议和目录协议的工作原理。
(1)多处理机的一致性:也称为高速缓存一致性。当某个处理器对其Cache中的数据进行修改后,就会使得其Cache中的数据与其他Cache中的数据不一致。
(2)监听协议:当物理存储器中的数据块被调入Cache时,其共享状态信息与该数据块一起放在该Cache中。系统中没有集中的状态表。这些Cache通常连在共享存储器的总线上。当某个Cache需要访问存储器时,它会把请求放到总线上广播出去,其他各个Cache控制器通过监听总线(它们一直在监听)来判断它们是否有总线上请求的数据块。如果有,就进行相应的操作。
(3)目录协议:物理存储器中数据块的共享状态被保存在一个称为目录的地方。目录式协议的实现开销比监听式协议的稍微大一些,但可用于实现更大规模的多处理机。
题目
(1)在块状态为共享状态下,对该块发出RdMiss请求,则会将存储器的数据送往请求方处理机(DReply),并将其加入共享集合
(2)在块状态为共享状态下,对该块发出WtMiss请求,则会将数据送往请求方处理机(DReply),对共享集合中的所有处理机发送作废消息(Invalidate),且将共享集合改为仅含有该处理机,该块的状态变为独占。
(3)在块状态为独占状态下,对该块发出RdMiss请求,则会将“取数据”的消息发往拥有者处理机,将它所返回给宿主节点的数据写入存储器(Fetch),并进而把该数据送回请求方处理机,将请求方处理机加入共享集合。此时共享集合中仍保留原拥有者处理机(因为它仍有一个可读的副本)。将该块的状态变为共享。
(4)在块状态为独占状态下,对该块发出WtMiss请求,则该块将有一个新的拥有者。给旧的拥有者处理机发送消息,要求它将数据块送回宿主节点写入存储器,然后再从该节点送给请求方处理机(DReply)。同时还要把旧拥有者处理机中的该块作废(Fetch&Inv)。把请求处理机加入共享者集合,使之成为新的拥有者。该块的状态仍旧是独占。
(5)在块状态为独占状态下,对该块发出WtBack2(写回)请求,则将该块内容写回其宿主结点的存储器中,从而更新存储器中相应块的数据,将该块的状态变为缓冲,其共享集合置空。
09 机群系统
机群系统基本结构
- 硬件:通过交换机连接在一起
- 按功能不同分类:
- 计算节点:完成计算任务,需要很强的计算能力、高速低延迟的通信网络
- 管理/登录节点:外部设备和机群系统之间连接的桥梁
- I/0节点:其他节点访问存储设备都要经过IO节点
- 软件:提供硬件管理、资源共享、网络通信,实现单系统映像(SSI-Single System Image)
- 单系统映像:单一系统(多处理器当作单一系统)、单一控制、对称性、位置透明;提供服务:单一登录、单一文件系统、单一作业管理系统
机群系统特点
- 系统开发周期短
由于机群系统大多采用商品化的PC机、工作站作为节点,并通过商用网络连接在一起,系统开发的重点在于通信子系统和并行编程环境上,这大大节省了研制时间。
- 可靠性高
机群中的每个节点都是独立的PC机或工作站,某个节点的失效并不会影响其他节点的正常工作,而且它的任务还可以迁移到其他节点上继续完成,从而有效地避免由于单节点失效引起的系统可靠性问题。
- 可扩放性强
机群的计算能力随着节点数量的增加而增大。这一方面得益于机群结构的灵活性,由于节点间以松耦合方式连接,机群的节点数量可以增加到成百上千;另一方面则是由于机群系统的硬件容易扩充和替换,可以灵活配置。
- 性价比高
由于生产批量小,传统并行计算机系统的价格均比较昂贵,往往要几百万到上千万美元。而机群的节点和网络都是商品化的计算机产品,能够大批量生产,成本相对较低,因而机群系统的性能价格比更好。与相同性能的传统并行计算机系统相比,机群的价格要低1~2个数量级。
- 用户编程方便
机群系统中,程序的并行化只是在原有的C、C++或FORTRAN串行程序中插入相应的通信原语,对原有串行程序的改动有限。用户仍然使用熟悉的
编程环境,无须适用新的环境。
天河二号
- 计算节点
- 前端处理器
- 互连
- 软件栈
- HPL基准程序测试结果
华为鲲鹏处理器
机群 | 由多台同构或异构的独立计算机通过高性能网络连接在一起而构成的高性能并行计算机系统 |
单系统映像 | 一种在计算机集群(Cluster)环境中使用的技术和设计原则。包括单一系统、单一控制、对称性、位置透明 |
- 作者:王大卫
- 链接:https://tangly1024.com/article/note:ca
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。