计算机体系结构tyl
第1章 计算机体系结构的概念
计算机系统结构
计算机系统结构是传统机器程序员所看到的计算机属性,即概念性结构和功能特性
包括
- 数据表示
- 寻址规则
- 寄存器定义
- 指令系统
- 中断系统
- 机器工作状态的定义和切换
- 存储系统
- 信息保护
- I/O结构
计算机组成
计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
计算机实现
计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。
试用实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系
如在设计主存系统时,确定主存容量、编址方式、寻址范围等属于计算机系统结构。确定主存周期、逻辑上是否采用并行主存、逻辑设计等属于计算机组成。选择存储芯片类型、微组装技术、线路设计等属于计算机实现
计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种体系结构可以有多种组成。一种组成可以有多种实现。
计算机系统结构的Flynn分类法
Flynn分类法是按照指令流和数据流的多倍性进行分类。把计算机系统的结构分为:
- 单指令流单数据流SISD
- 单指令流多数据流SIMD
- 多指令流单数据流MISD
- 多指令流多数据流MIMD
计算机系统设计中经常使用的4个定量原理
(1)大概率时间优先。在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,以得到更多的总体上的改进。
(2)Amdahl定律。加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。
(3)CPU性能公式。执行一个程序所需的CPU时间 = IC ×CPI ×时钟周期时间。
(4)程序的局部性原理。程序在执行时所访问地址的分布不是随机的,而是相对地簇聚。
透明性
在计算机技术中,把本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性
程序的局部性原理
程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。包括时间局部性和空间局部性
虚拟机
用软件实现的机器
冯诺依曼体系结构(存储程序计算机)
运算器
存储器
输入/输出设备
控制器
存储程序计算机的主要特点
- 机器以运算器为中心
存储器、输入/输出设备的操作由控制器集中控制
- 采用存储程序原理
程序(指令)和数据放在同一存储器中
- 存储器是按地址访问的、线性编址的空间
- 控制流由指令流产生
解题算法是顺序型的
- 指令由操作码和地址码组成
- 数据以二进制编码表示,采用二进制运算
程序员所看到的计算机的属性
对于通用寄存器型机器,这些属性主要是指
- (1)数据表示:硬件能直接辨认和处理的数据类型
- (2)寻址规则:最小寻址单元、寻址方式及其表示
- (3)寄存器定义:寄存器的定义、数量和使用方式
- (4)指令系统:机器指令的操作类型和格式、指令间的排序和控制机构等
- (5)中断系统:中断的类型和中断响应硬件的功能等
- (6)机器工作状态的定义和切换:如管态和目态等
- (7)存储系统:程序员可用的最大存储容量
- (8)信息保护:信息保护方式和硬件的支持
- (9)I/O结构:I/O寻址方式、数据传送的方式等
计算机系统中的多语言层次结构
层次机构:按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征。这些层次依次为:微程序机器级,传统机器语言机器级,操作系统级,汇编语言机器级,高级语言机器级,应用语言机器级等。
翻译和解释
系列机和兼容
系列机(family machine)是具有相同体系结构,但组成和实现不同的一系列不同型号的计算机系统
一种指令集结构可以有多种组成。同样,一种组成可以有多种物理实现。系列机就是指在一个厂家生产的具有相同的指令集结构,但具有不同组成和实现的一系列不同型号的机器。
软件兼容(software compatibility)
同一个软件可以不加修改地运行于体系结构相同的各档机器,而且它们所获得的结果一样,差别只在于有不同的运行时间
兼容分为二进制级兼容、汇编级兼容、高级语言兼容、数据级兼容等等
兼容机(compatible machine)
不同厂家生产的具有相同体系结构的计算机计算机
向上(下)兼容
按某档计算机编制的程序,不加修改就能运行于比它高(低)档的计算机。
向后(前)兼容
按某个时期投入市场的某种型号计算机编制的程序,不加修改地就能运行于在它之后(前)投入市场的计算机。
计算机模拟
用软件的方法在一台现有的计算机(称为宿主机)上实现另一台计算机(称为虚拟机)的指令系统。
计算机仿真
用一台现有计算机(称为宿主机)上的微程序去解释实现另一台计算机(称为目标机)的指令系统。
技术和性能的下移
并行性
计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。只要在时间上相互重叠,就存在并行性。它包括同时性与并发性两种含义
分别从执行程序的角度和处理数据的角度来看,计算机系统中并行性等级从低到高可分为哪几级?
从处理数据的角度来看,并行性等级从低到高可分为:
(1)字串位串:每次只对一个字的一位进行处理。这是最基本的串行处理方式,不存在并行性;
(2)字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。已开始出现并行性;
(3)字并位串:同时对许多字的同一位(称为位片)进行处理。这种方式具有较高的并行性;
(4)全并行:同时对许多字的全部位或部分位进行处理。这是最高一级的并行。
从执行程序的角度来看,并行性等级从低到高可分为:
(1)指令内部并行:单条指令中各微操作之间的并行;
(2)指令级并行:并行执行两条或两条以上的指令;
(3)线程级并行:并行执行两个或两个以上的线程,通常是以一个进程内派生的多个线程为调度单位;
(4)任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元;
(5)作业或程序级并行:并行执行两个或两个以上的作业或程序。
提高并行性的技术途径
-
时间重叠
在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度
-
资源重复
在并行性概念中引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能
-
资源共享
这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备
耦合度
反映多机系统中各计算机之间物理连接的紧密程度和交互作用能力的强弱
紧密耦合系统
又称直接耦合系统。在这种系统中,计算机之间的物理连接的频带较高,一般是通过总线或高速开关互连,可以共享主存
松散耦合系统
又称间接耦合系统,一般是通过通道或通信线路实现计算机之间的互连,可以共享外存设备(磁盘、磁带等)。计算机之间的相互作用是在文件或数据集一级上进行
异构型多处理机系统
由多个不同类型、至少担负不同功能的处理机组成,它们按照作业要求的顺序,利用时间重叠原理,依次对它们的多个任务进行加工,各自完成规定的功能动作
同构型多处理机系统
由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务
计算机系统 成本与价格
基准测试程序
量化设计的基本原则
大概率事件优先的原则
对于大概率事件(最常见的事件),赋予它优先的处理权和资源使用权,以获得全局的最优结果
要能够确定什么是大概率事件,同时要说明针对该事件进行的改进将如何提高机器的性能
Amdahl定律
当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。
假设我们对机器(部件)进行某种改进,那么机器系统(部件)的加速比就是
程序局部性
程序访问地址的分布不是随机的,而是相对地簇聚
包括时间局部性和程序的空间局部性
程序的时间局部性
程序即将用到的信息很可能就是目前正在使用的信息
程序的空间局部性
程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近 其他局部性生产-消费局部性
CPU的性能
程序执行过程中所处理的指令数,记为IC
每条指令执行所需要的时钟周期数CPI (Cycles Per Instruction)
每条指令执行所需要的平均时钟周期数
测试程序套件
由各种不同的真实应用程序构成的一组测试程序,用来测试计算机在各个方面的处理性能
第2章 指令系统
指令集
一些指令的集合;
每条指令都是直接由CPU硬件执行。
指令的表示方法
二进制格式;物理存储空间组织方式是位、字节、字和多字等;
当前的指令字长有:16、32、64位;
可变长格式和固定长度格式。
指令集影响哪些方面
指令集结构的分类
可以从如下五个因素考虑对计算机指令集结构进行分类
- CPU 中存储操作数的单元;
- 堆栈;
- 累加器;
- 寄存器
- 指令中显式表示的操作数个数;
- 操作数的寻址方式;
- 指令集所提供的操作类型;
- 操作数的类型和大小。
区别不同指令集结构的主要因素是什么?根据这个主要因素可将指令集结构分为哪3类?
答:区别不同指令集结构的主要因素是CPU中用来存储操作数的存储单元。
据此可将指令系统结构分为堆栈结构、累加器结构和通用寄存器结构。
常见的3种通用寄存器型指令集结构的优缺点有哪些?
指令集应满足哪几个基本要求?
对指令集的基本要求是:完整性、规整性、正交性、高效率和兼容性。
-
完整性是指在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够使用。
-
规整性主要包括对称性和均匀性。对称性是指所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。均匀性是指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。
-
正交性是指在指令中各个不同含义的字段,如操作数类型,数据类型,寻址方式字段等,在编码时应互不相关,相互独立。
-
高效率是指指令的执行速度快、使用频度高。
-
兼容性主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或者更改指令功能。
CISC
复杂指令集计算机
RISC
精简指令集计算机
简述CISC指令集结构功能设计的主要目标。从当前的计算机技术观点来看,CISC指令集结构的计算机有什么缺点?
主要目标是增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。
缺点:
- CISC结构的指令集中,各种指令的使用频率相差悬殊。
- CISC结构指令的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。
- CISC结构指令集的复杂性给VLSI设计增加了很大负担,不利于单片集成。
- CISC结构的指令集中,许多复杂指令需要很复杂的操作,因而运行速度慢。
- 在CISC结构的指令集中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。
简述RISC指令集结构的设计原则
- 选取使用频率最高的指令,并补充一些最有用的指令;
- 每条指令的功能应尽可能简单,并在一个机器周期内完成;
- 所有指令长度均相同;
- 只有Load和Store操作指令才访问存储器,其它指令操作均在寄存器之间进行;
- 以简单有效的方式支持高级语言。
根据CPU性能公式简述RISC指令集结构计算机和CISC指令集结构计算机的性能特点。
CPU性能公式:CPU时间=IC×CPI×T
其中,IC为目标程序被执行的指令条数,CPI为指令平均执行周期数,T是时钟周期的时间。
相同功能的目标程序
CISC的指令条数IC_CISC 少于RISC的IC_RISC,但是CISC的CPI_CISC和T_CISC都大于RISC的CPI_RISC和T_RISC,因此,CISC目标程序的执行时间往往比RISC的更长。
指令中表示操作数类型的方法有哪几种
操作数类型有两种表示方法:
(1)操作数的类型由操作码的编码指定,这是最常见的一种方法;
(2)数据可以附上标记,由这些标记指定操作数的类型,从而选择适当的运算。
寻址方式
指令系统中如何形成所要访问的数据的地址。一般来说,寻址方式可以指明指令中的操作数是一个常数、一个寄存器操作数或者是一个存储器操作数
表示寻址方式的主要方法有哪些?简述这些方法的优缺点。
表示寻址方式有两种常用的方法:
(1)将寻址方式编于操作码中,由操作码在描述指令的同时也描述了相应的寻址方式。这种方式译码快,但操作码和寻址方式的结合不仅增加了指令的条数,导致了指令的多样性,而且增加了CPU对指令译码的难度。
(2)为每个操作数设置一个地址描述符,由该地址描述符表示相应操作数的寻址方式。这种方式译码较慢,但操作码和寻址独立,易于指令扩展。
数据表示
硬件结构能够识别、指令系统可以直接调用的那些数据结构
通常有哪几种指令格式,请简述其适用范围。
- 变长编码格式。如果系统结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可以采用变长编码格式。
- 固定长度编码格式。如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定长度编码格式。
- 混合型编码格式。需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码格式。
通用寄存器型指令集结构的主要优点
在表达式求值方面,比其它类型指令集结构都具有更大的灵活性;
寄存器可以用来存放变量;
减少存储器的通信量,加快程序的执行速度(因为寄存器比存储器快)
可以用更少的地址位来寻址寄存器,从而可以有效改进程序的目标代码大小。
过程调用和返回的状态保存
“调用者保存”(caller saving)方法:如果采用调用者保存策略,那么在一个调用者调用别的过程时,必须保存调用者所要保存的寄存器,以备调用结束返回后,能够再次访问调用者。
“被调用者保存”(callee saving)方法:如果采用被调用者保存策略,那么被调用的过程必须保存它要用的寄存器,保证不会破坏过程调用者的程序执行环境,并在过程调用结束返回时,恢复这些寄存器的内容。
第3章 流水线技术
流水线
将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程同时执行
单功能流水线
指流水线的各段之间的连接固定不变、只能完成一种固定功能的流水线
多功能流水线
指各段可以进行不同的连接,以实现不同的功能的流水线
静态流水线
指在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作的流水线。当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才能改变连接。
动态流水线
指在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能的流水线。它允许在某些段正在实现某种运算时,另一些段却在实现另一种运算。
部件级流水线
把处理机中的部件进行分段,再把这些部件分段相互连接而成。它使得运算操作能够按流水方式进行。这种流水线也称为运算操作流水线。
处理机级流水线
又称指令流水线。它是把指令的执行过程按照流水方式进行处理,即把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。
处理机间流水线
又称为宏流水线。它是把多个处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。前一个处理机的输出结果存入存储器中,作为后一个处理机的输入。
线性流水线
指各段串行连接、没有反馈回路的流水线。数据通过流水线中的各段时,每一个段最多只流过一次。
非线性流水线
指各段除了有串行的连接外,还有反馈回路的流水线。
顺序流水线
流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。
乱序流水线
流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成。这种流水线又称为无序流水线、错序流水线、异步流水线。
吞吐率
在单位时间内流水线所完成的任务数量或输出结果的数量
流水线的加速比
使用顺序处理方式处理一批任务所用的时间与按流水处理方式处理同一批任务所用的时间之比
流水线的效率
即流水线设备的利用率,它是指流水线中的设备实际使用时间与整个运行时间的比值
解决流水线瓶颈问题有哪两种常用方法
细分瓶颈段与重复设置瓶颈段
指令的执行可采用顺序执行、重叠执行和流水线三种方式,它们的主要区别是什么?各有何优缺点
- 指令的顺序执行是指指令与指令之间顺序串行。即上一条指令全部执行完后,才能开始执行下一条指令。优点:控制简单,节省设备。缺点:执行指令的速度慢,功能部件的利用率低。
- 指令的重叠指令是在相邻的指令之间,让第k条指令与取第k+l条指令同时进行。重叠执行不能加快单条指令的执行速度,但在硬件增加不多的情况下,可以加快相邻两条指令以及整段程序的执行速度。与顺序方式相比,功能部件的利用率提高了,控制变复杂了。
- 指令的流水执行是把一个指令的执行过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,每个子过程与其它的子过程并行进行。依靠提高吞吐率来提高系统性能。流水线中各段的时间应尽可能相等
数据相关
考虑两条指令i和j,i在j的前面,如果下述条件之一成立,则称指令j与指令i数据相关:
(1)指令j使用指令i产生的结果;
(2)指令j与指令k数据相关,而指令k又与指令i数据相关。
名相关
如果两条指令使用了相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关
反相关
考虑两条指令i和j,i在j的前面,如果指令j所写的名与指令i所读的名相同,则称指令i和j发生了反相关。
输出相关
考虑两条指令i和j,i在j的前面,如果指令j和指令i所写的名相同,则称指令i和j发生了输出相关。
控制相关
是指由分支指令引起的相关。它需要根据分支指令的执行结果来确定后面该执行哪个分支上的指令
输出相关
考虑两条指令i和j,i在j的前面,如果指令j和指令i所写的名相同,则称指令i和j发生了输出相关
换名技术
名相关的两条指令之间并没有数据的传送,只是使用了相同的名。可以把其中一条指令所使用的名换成别的,以此来消除名相关。
结构冲突
因硬件资源满足不了指令重叠执行的要求而发生的冲突
数据冲突
当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。
控制冲突
流水线遇到分支指令或其它会改变PC值的指令所引起的冲突。
减少流水线分支延迟的静态方法有哪些
-
预测分支失败:沿失败的分支继续处理指令,就好象什么都没发生似的。当确定分支是失败时,说明预测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。
-
预测分支成功:当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。
-
延迟分支:主要思想是从逻辑上“延长”分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽构成。不管分支是否成功,都要按顺序执行延迟槽中的指令。
3种方法的共同特点:它们对分支的处理方法在程序的执行过程中始终是不变的。它们要么总是预测分支成功,要么总是预测分支失败。
简述延迟分支方法中的三种调度策略的优缺点
写后读冲突
考虑两条指令i和j,且i在j之前进入流水线,指令j用到指令i的计算结果,而且在i将结果写入寄存器之前就去读该寄存器,因而得到的是旧值
读后写冲突
考虑两条指令i和j,且i在j之前进入流水线,指令j的目的寄存器和指令i的源操作数寄存器相同,而且j在i读取该寄存器之前就先对它进行了写操作,导致i读到的值是错误的
写后写冲突
考虑两条指令i和j,且i在j之前进入流水线,,指令j和指令i的结果单元(寄存器或存储器单元)相同,而且j在i写入之前就先对该单元进行了写入操作,从而导致写入顺序错误。这时在结果单元中留下的是i写入的值,而不是j写入的
定向
用来解决写后读冲突的。在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果。如果能够将该计算结果从其产生的地方直接送到其它指令需要它的地方,那么就可以避免停顿。
链接技术
具有先写后读相关的两条指令,在不出现功能部件冲突和Vi冲突的情况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的
分段开采
当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段
半性能向量长度
向量处理机的性能为其最大性能的一半时所需的向量长度
向量长度临界值
向量流水方式的处理速度优于标量串行方式的处理速度时所需的向量长度的最小值
简述三种向量处理方式,它们对向量处理机的结构要求有何不同?
答 (1)横向处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。
(2)纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。
(3)纵横处理方式:把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。
第4章 指令级并行
指令级并行
简称ILP。是指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令
指令调度
通过在编译时让编译器重新组织指令顺序或通过硬件在执行时调整指令顺序来消除冲突
指令的动态调度
是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。是由硬件在程序实际运行时实施的
指令的静态调度
是指依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化的
保留站
在采用Tomasulo算法的MIPS处理器浮点部件中,在运算部件的入口设置的用来保存一条已经流出并等待到本功能部件执行的指令(相关信息)
CDB
公共数据总线
动态分支预测技术
是用硬件动态地进行分支处理的方法。在程序运行时,根据分支指令过去的表现来预测其将来的行为。如果分支行为发生了变化,预测结果也跟着改变
BHT
分支历史表。用来记录相关分支指令最近一次或几次的执行情况是成功还是失败,并据此进行预测
分支目标缓冲
是一种动态分支预测技术。将执行过的成功分支指令的地址以及预测的分支目标地址记录在一张硬件表中。在每次取指令的同时,用该指令的地址与表中所有项目的相应字段进行比较,以便尽早知道分支是否成功,尽早知道分支目标地址,达到减少分支开销的目的
前瞻执行
解决控制相关的方法,它对分支指令的结果进行猜测,然后按这个猜测结果继续取指、流出和执行后续的指令。只是指令执行的结果不是写回到寄存器或存储器,而是放到一个称为ROB的缓冲器中。等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器
ROB
ReOrder Buffer。前瞻执行缓冲器
超标量
一种多指令流出技术。它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限
超流水
在一个时钟周期内分时流出多条指令
超长指令字
一种多指令流出技术。VLIW(very long instruction word)处理机在每个时钟周期流出的指令条数是固定的,这些指令构成一条长指令或者一个指令包,在这个指令包中,指令之间的并行性是通过指令显式地表示出来的
循环展开
是一种增加指令间并行性最简单和最常用的方法。它将循环展开若干遍后,通过重命名和指令调度来开发更多的并行性
简述Tomasulo算法的基本思想
核心思想是:
- 记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减小到最少;
- 通过寄存器换名来消除WAR冲突和WAW冲突。寄存器换名是通过保留站来实现,它保存等待流出和正在流出指令所需要的操作数。
基本思想:只要操作数有效,就将其取到保留站,避免指令流出时才到寄存器中取数据,这就使得即将执行的指令从相应的保留站中取得操作数,而不是从寄存器中。指令的执行结果也是直接送到等待数据的其它保留站中去。因而,对于连续的寄存器写,只有最后一个才真正更新寄存器中的内容。一条指令流出时,存放操作数的寄存器名被换成为对应于该寄存器保留站的名称(编号)
第5章 存储层次
存储层次的四个问题
- 映射规则
- 查找算法
- 替换算法
- 写策略
多级存储层次
采用不同的技术实现的存储器,处在离CPU不同距离的层次上,各存储器之间一般满足包容关系,即任何一层存储器中的内容都是其下一层(离CPU更远的一层)存储器中内容的子集。目标是达到离CPU最近的存储器的速度最快,最远的存储器的容量最大
全相联映象
主存中的任一块可以被放置到Cache中任意一个地方。
直接映象
主存中的每一块只能被放置到Cache中唯一的一个地方。
组相联映象
主存中的每一块可以放置到Cache中唯一的一组中任何一个地方(Cache分成若干组,每组由若干块构成)
相联度
在组相联中,每组Cache中的块数
替换算法
由于主存中的块比Cache中的块多,所以当要从主存中调一个块到Cache中时,会出现该块所映象到的一组(或一个)Cache块已全部被占用的情况。这时,需要被迫腾出其中的某一块,以接纳新调入的块。
LRU
选择最近最少被访问的块作为被替换的块。实际实现都是选择最久没有被访问的块作为被替换的块
写直达法
在执行写操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块
写回法
只把信息写入Cache中相应块,该块只有被替换时,才被写回主存
按写分配法
写失效时,先把所写单元所在的块调入Cache,然后再进行写入。
不按写分配法
写失效时,直接写入下一级存储器中,而不把相应的块调入Cache。
命中时间
访问Cache命中时所用的时间
2 :1Cache经验规则
大小为N的直接映象Cache的失效率约等于大小为N /2的两路组相联Cache的实效率
失效率
CPU访存时,在一级存储器中找不到所需信息的概率
失效开销
CPU向二级存储器发出访问请求到把这个数据调入一级存储器所需的时间
Victim Cache
位于Cache和存储器之间的又一级Cache,容量小,采用全相联策略。用于存放由于失效而被丢弃(替换)的那些块。每当失效发生时,在访问下一级存储器之前,先检查Victim Cache中是否含有所需块
故障性预取
在预取时,若出现虚地址故障或违反保护权限,就会发生异常
非故障性预取
在预取时,若出现虚地址故障或违反保护权限,不发生异常
非阻塞Cache
Cache在等待预取数据返回时,还能继续提供指令和数据
尽早重启动
在请求字没有到达时,CPU处于等待状态。一旦请求字到达,就立即发送给CPU,让等待的CPU尽早重启动,继续执行
请求字优先
调块时,首先向存储器请求CPU所要的请求字。请求字一旦到达,就立即送往CPU,让CPU继续执行,同时从存储器调入该块的其余部分。
虚拟Cache
地址使用虚地址的Cache
多体交叉存储器
具有多个存储体,各体之间按字交叉的存储技术。
存储体冲突
多个请求要访问同一个体
TLB
一个专用高速存储器,用于存放近期经常使用的页表项,其内容是页表部分内容的一个副本
Cache失效的类型
强制性失效
当第一次访问一个块的时候,块不在Cache中,需要从下一级存储器中调入
容量失效
即使采用全相联策略,由于Cache容量有限,程序需要用到的所有块不能全部放入Cache中,导致一部分块被替换,当第二次使用的时候需要重新调入
冲突失效
在组相联或直接映像Cache中,由于多个块映像到同一组(块)中,会出现组中间某个块被某个块替换(即使别的组/块有空闲的位置)
降低Cache 失效率的方法
1)软件优化技术(利用局部性)
- 内外循环交换
- 数组合并
- 循环融合
- 分块(提高程序局部性)
2)改变Cache结构参数
- 调节块大小(减少强制性失效 缺点:增加了失效开销)
1.增加块大小利用的空间局部性,减少了强制性失效
2.相同容量下,增加块大小会减少Cache的块数,会增加冲突失效
-
提高相联度(减少冲突失效 缺点:增加命中时间)
-
增大Cache容量(减少容量失效 缺点:增加了硬件成本)
3)改变Cache的结构
Victim Cache
伪相联Cache
4)Cache预取
- 硬件预取
- 软件预取
降低Cache 命中时间的方法
1)容量小,结构简单的cache
结构越简单,速度就越快;
应使Cache容量足够小,以便可以与CPU一起放在同一块芯片上。
2)虚拟cache
3)cache访问流水线化
4)多体cache
5)路预测
6)Trace cache
简述“Cache—主存”层次与“主存—辅存”层次的区别
地址映象方法有哪几种?它们各有什么优缺点?
- 全相联映象。实现查找的机制复杂,代价高,速度慢。Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。
- 直接映象。实现查找的机制简单,速度快。Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高
- 组相联映象。组相联是直接映象和全相联的一种折中。
简述减小Cache失效开销的几种方法
让读失效优先于写、写缓冲合并、请求字处理技术、非阻塞Cache或非锁定Cache技术、采用二级Cache
增加二级Cache
采用两级Cache
应把Cache做得更快? 还是更大?
二者兼顾,再增加一级Cache
第一级Cache(L1)小而快
第二级Cache (L2)容量大
性能分析
平均访存时间 = 命中时间L1+(不命中率y1 × 不命中开销)
不命中开销L1 = 命中时间L2+ (不命中率L2 × 不命中开销L2)
平均访存时间 = 命中时间L1 + {不命中率L1 × [命中时间L2+(不命中率l2×不命中开销L2)]}
局部不命中率与全局不命中率
局部不命中率 = 该级Cache的不命中次数 / 到达该级Cache的访问次数
全局不命中率 = 该级Cache的不命中次数 / CPU发出的访存的总次数
全局不命中率L2 = 不命中率L1 × 不命中率L2
评价第二级Cache时,应使用全局不命中率这个指标。它指出了在CPU发出的访存中,究竟有多大比例是穿过各
Cache,最终到达存储器的。
二级 cache
在第二级Cache比第一级Cache大得多的情况下,两级Cache的全局不命中率和容量与第二级Cache相同的单级Cache
第二级Cache不会影响CPU的时钟频率,因此其设计有更大的考虑空间。
两个问题需要权衡:
它能否降低CPI中的平均访存时间部分
它的成本是多少
第二级Cache的参数
容量
第二级Cache的容量一般比第一级的大许多。
大容量意味着第二级Cache可能实际上没有容量不命中,只剩下一些强制性不命中和冲突不命中
相联度
第二级Cache可采用较高的相联度或伪相联方法。
块大小
第二级Cache可采用较大的块,如 64、128、256字节
为减少平均访存时间,可以让容量较小的第一级Cache采用较小的块,而让容量较大的第二级Cache采用较大的块。
多级包容性,需要考虑的另一个问题:第一级Cache中的数据是否总是同时存在于第二级Cache中。
其他三种策略
优化策略一:查找与优化写缓冲
写缓冲的目的
因为 cache 之间有一致性协议,所以每次写 cache 都会在 cache 之间进行通信,所以就会浪费时钟周期,无法接着
行下条指令
加入写缓冲后,cpu 每次把结果先写到写缓冲,而不是 cache 中,这样就可以接着立即执行下条指令
Cache中的写缓冲器导致对存储器访问的复杂化
导致的问题
在读不命中时,所读单元的最新值有可能还在写缓冲器中,尚未写入主存。
解决问题的方法(读不命中的处理)
推迟对读不命中的处理,直到写缓冲器清空。(缺点:读不命中的开销增加)
检查写缓冲器中的内容(让读不命中优先于写)
在写回法Cache中,也可采用写缓冲器。
依靠写缓冲来减少对下一级存储器写操作的时间。
写缓冲优化策略:写缓冲合并
如果写缓冲器为空,就把数据和相应地址写入该缓冲器。从CPU的角度来看,该写操作就算是完成了。
如果写缓冲器中已经有了待写入的数据,就要把这次的写入地址与写缓冲器中已有的所有地址进行比较,看是否有
配的项。如果有地址匹配而对应的位置又空闲,就把这次要写入的数据与该项合并。这就叫写缓冲合并。
如果写缓冲器满且又没有能进行写合并的项,就必须等待。
效果:提高了写缓冲器的空间利用率,而且还能减少因写缓冲器满而要进行的等待时间。
优化策略二:请求字处理技术
请求字
从下一级存储器调入Cache的块中,只有一个字是立即需要的。这个字称为请求字。
应尽早把请求字发送给CPU
尽早重启动:调块时,从块的起始位置开始读起。一旦请求字到达,就立即发送给CPU,让CPU继续执行。
请求字优先:调块时,从请求字所在的位置读起这样,第一个读出的字便是请求字。将之立即发送给CPU。
这种技术在以下情况下效果不大
Cache块较小
下一条指令正好访问同一Cache块的另一部分
影响请求字处理技术的因素主要包括以下两点。
(1)Cache块大小。Cache块越大,请求字处理技术可以降低的失效开销就越多
(2)下一级存储器的访问延迟。延迟越大,将请求字提前交给Cache能够获得的收益就越多。
优化策略三:非阻塞Cache技术
非阻塞Cache:
Cache不命中时仍允许CPU进行其它的命中访问。即允许“不命中下命中”
进一步提高性能 (存储器必须能够处理多个不命中) :
“多重不命中下命中”
“不命中下不命中”
可以同时处理的不命中次数越多,所能带来的性能上的提高就越大。
通过编译器对程序优化来改进Cache性能的方法有哪几种?简述其基本思想。
- 数组合并。通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这些相互独立的数组合并成一个复合数组,使得一个Cache块中能包含全部所需元素。
- 内外循环交换。循环嵌套时,程序没有按数据在存储器中的顺序访问。只要简单地交换内外循环,就能使程序按数据在存储器中的存储顺序进行访问。
- 循环融合。有些程序含有几部分独立的程序段,它们用相同的循环访问同样的数组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入Cache的数据被替换出去之前得到反复的使用。
- 分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问,而是对子矩阵或块进行操作。
在“Cache—主存”层次中,主存的更新算法有哪两种?它们各有什么特点?
(1)写直达法。易于实现,而且下一级存储器中的数据总是最新的。
(2)写回法。速度快,“写”操作能以Cache存储器的速度进行。而且对于同一单元的多个写最后只需一次写回下一级存储器,有些“写”只到达Cache,不到达主存,因而所使用的存储器频带较低。
组相联Cache的失效率比相同容量直接映象Cache的失效率低。由此能否得出结论:采用组相联一定能带来性能上的提高?为什么?
不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增加多路选择开关。
写出三级Cache的平均访问时间的公式。
解:平均访存时间 = 命中时间+失效率×失效开销
只有第I层失效时才会访问第I+1。
设三级Cache的命中时间分别为HL1、 Hl2、 HL3,失效率分别为Ml1、Ml2、ML3,第三级Cache的失效开销为PL3。
平均访问时间TA =HL1+Ml1{Hl2+Ml2(HL3+ML3×PL3)}
虚存设计也遵循Cache的思想,也需要回答四个问题。请充分考虑虚存的设计目标,回答以下问题:
- 虚存的映射策略为全相联。
- 虚存的查找可以用页表来加速。
- 虚存的替换策略为LRU
- 虚存的写策略为写回。
假设对指令Cache的访问占全部访问的75%;而对数据Cache的访问占全部访问的25%。Cache的命中时间为1个时钟周期,失效开销为50 个时钟周期,在混合Cache中一次load或store操作访问Cache的命中时间都要增加一个时钟周期,32KB的指令Cache的失效率为0.39%,32KB的数据Cache的失效率为4.82%,64KB的混合Cache的失效率为1.35%。又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。试问指令Cache和数据Cache容量均为32KB的分离Cache和容量为64KB的混合Cache相比,哪种Cache的失效率更低?两种情况下平均访存时间各是多少?
解:(1)根据题意,约75%的访存为取指令。
因此,分离Cache的总体失效率为:(75%×0.39%)+(25%×4.82%)=1.4975%;
容量为128KB的混合Cache的失效率略低一些,只有1.35%。
(2)平均访存时间公式可以分为指令访问和数据访问两部分:
平均访存时间=指令所占的百分比×(读命中时间+读失效率×失效开销)+ 数据所占的百分比×(数据命中时间+数据失效率×失效开销)
所以,两种结构的平均访存时间分别为:
分离Cache的平均访存时间=75%×(1+0.39%×50)+25%×(1+4.82%×50)
=(75%×1.195)+(25%×3.41)=1.74875
混合Cache的平均访存时间=75%×(1+1.35%×50)+25%×(1+1+1.35%×50)
=(75%×1.675)+(25%×2.675)=1.925
因此,尽管分离Cache的实际失效率比混合Cache的高,但其平均访存时间反而较低。分离Cache提供了两个端口,消除了结构相关。
给定以下的假设,试计算直接映象Cache和两路组相联Cache的平均访问时间以及CPU的性能。由计算结果能得出什么结论?
- 理想Cache情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.2次;
- 两者Cache容量均为64KB,块大小都是32字节;
- 组相联Cache中的多路选择器使CPU的时钟周期增加了10%;
- 这两种Cache的失效开销都是80ns;
- 命中时间为1个时钟周期;
- 64KB直接映象Cache的失效率为1.4%,64KB两路组相联Cache的失效率为1.0%。
平均访问时间=命中时间+失效率×失效开销
平均访问时间1-路=2.0+1.4% *80=3.12ns
平均访问时间2-路=2.0*(1+10%)+1.0% *80=3.0ns
两路组相联的平均访问时间比较低
CPUtime=(CPU执行+存储等待周期)*时钟周期
CPU time=IC(CPI执行+总失效次数/指令总数*失效开销) *时钟周期
=IC((CPI执行时钟周期)+(每条指令的访存次数失效率失效开销时钟周期))
CPU time 1-way=IC(2.0×2 +1.2×0.014×80)=5.344IC
CPU time 2-way=IC(2.2×2+1.2×0.01×80)=5.36IC
相对性能比:5.36/5.344=1.003
直接映象cache的访问速度比两路组相联cache要快1.04倍,而两路组相联Cache的平均性能比直接映象cache要高1.003倍。因此这里选择两路组相联。
如何增加主存带宽
1)增加存储器宽度
2)简单的多体交叉存储器
3)独立存储体
4)避免体冲突(奇数)
第6章 输入输出系统
响应时间
从用户键入命令开始,到得到结果所花的时间
可靠性
指系统从某个初始参考点开始一直连续提供服务的能力,它通常用平均无故障时间来衡量
可用性
指系统正常工作的时间在连续两次正常服务间隔时间中所占的比率
可信性
指服务的质量,即在多大程度上可以合理地认为服务是可靠的
RAID
廉价磁盘冗余阵列或独立磁盘冗余阵列
分离事务总线
将总线事务分成请求和应答两部分。在请求和应答之间的空闲时间内,总线可以供给其它的I/O使用。采用这种技术的总线称为分离事务总线
通道
专门负责整个计算机系统输入/输出工作的专用处理机,能执行有限的一组输入输出指令
通道流量
指一个通道在数据传送期间,单位时间内能够传送的数据量
虚拟DMA
它允许DMA设备直接使用虚拟地址,并在DMA传送的过程中由硬件将虚拟地址转换为物理地址
异步I/O
允许进程在发出I/O请求后继续执行,直到该进程真正访问这些数据而它们又尚未就绪时,才被挂起
RAID有哪些分级?各有何特点
RAID0。亦称数据分块,即把数据分布在多个盘上,实际上是非冗余阵列,无冗余信息。
RAID1。亦称镜像盘,使用双备份磁盘。每当数据写入一个磁盘时,将该数据也写到另一个冗余盘,这样形成信息的两份复制品。如果一个磁盘失效,系统可以到镜像盘中获得所需要的信息。镜像是最昂贵的解决方法。特点是系统可靠性很高,但效率很低。
RAID2。位交叉式海明编码阵列。即数据以位或字节交叉的方式存于各盘,采用海明编码。原理上比较优越,但冗余信息的开销太大,因此未被广泛应用。
RAID3。位交叉奇偶校验盘阵列,是单盘容错并行传输的阵列。即数据以位或字节交叉的方式存于各盘,冗余的奇偶校验信息存储在一台专用盘上。
RAID4。专用奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的奇偶校验信息存在一台专用盘上。
RAID5。块交叉分布式奇偶校验盘阵列,是旋转奇偶校验独立存取的阵列。即数据以块交叉的方式存于各盘,但无专用的校验盘,而是把冗余的奇偶校验信息均匀地分布在所有磁盘上。
RAID6。双维奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的检、纠错信息均匀地分布在所有磁盘上。并且,每次写入数据都要访问一个数据盘和两个校验盘,可容忍双盘出错
同步总线和异步总线各有什么优缺点?
- 同步总线。同步总线上所有设备通过统一的总线系统时钟进行同步。同步总线成本低,因为它不需要设备之间互相确定时序的逻辑。但是其缺点是总线操作必须以相同的速度运行。
- 异步总线。异步总线上的设备之间没有统一的系统时钟,设备自己内部定时。设备之间的信息传送用总线发送器和接收器控制。异步总线容易适应更广泛的设备类型,扩充总线时不用担心时钟时序和时钟同步问题。但在传输时,异步总线需要额外的同步开销。
简述通道完成一次数据传输的主要过程
- 在用户程序中使用访管指令进入管理程序,由CPU通过管理程序组织一个通道程序,并启动通道。
- 通道处理机执行CPU为它组织的通道程序,完成指定的数据I/O工作。
- 通道程序结束后向CPU发中断请求。CPU响应这个中断请求后,第二次进入操作系统,调用管理程序对I/O中断请求进行处理
试比较三种通道的优缺点及适用场合
字节多路通道
一种简单的共享通道,主要为多台低速或中速的外围设备服务。分时工作(时间片)
选择通道
适于为一台高速设备服务。
数组多路通道
为多台高速外围设备(如磁盘存储器等)服务的
在有Cache的计算机系统中,进行I/O操作时,会产生哪些数据不一致问题?如何克服?
(1)存储器中可能不是CPU产生的最新数据 ,所以I/O系统从存储器中取出来的是陈旧数据。
(2)I/O系统与存储器交换数据之后,在Cache中,被CPU使用的可能就会是陈旧数据。
第一个问题可以用写直达Cache解决。
第二个问题操作系统可以保证I/O操作的数据不在cache中。如果不能,就作废Cache中相应的数据。
第7章 互连网络
线路交换
在线路交换中,源结点和目的结点之间的物理通路在整个数据传送期间一直保持连接
分组交换
把信息分割成许多组(又称为包),将它们分别送入互连网络。这些数据包可以通过不同的路径传送,到目的结点后再拼合出原来的数据,结点之间不存在固定连接的物理通路
静态互连网络
各结点之间有固定的连接通路、且在运行中不能改变的网络
动态互连网络
由交换开关构成、可按运行程序的要求动态地改变连接状态的网络
互连网络
一种由开关元件按照一定的拓扑结构和控制方式构成的网络,用来实现计算机系统中结点之间的相互连接。在拓扑上,互连网络是输入结点到输出结点之间的一组互连或映象
互连函数
用变量x表示输入,用函数f(x)表示输出。则f(x)表示:在互连函数f的作用下,输入端x连接到输出端f(x)。它反映了网络输入端数组和输出端数组之间对应的置换关系或排列关系,所以互连函数有时也称为置换函数或排列函数
网络直径
指互连网络中任意两个结点之间距离的最大值
结点度
指互连网络中结点所连接的边数(通道数)
等分带宽
把由N个结点构成的网络切成结点数相同(N/2)的两半,在各种切法中,沿切口边数的最小值
对称网络
从任意结点来看,网络的结构都是相同的
并行计算机系统结构分类
按照Flynn分类方法,可把计算机分成SISD、SIMD、MISD和MIMD四类。
SISD——单指令单数据流——传统的顺序执行单处理器计算机
SIMD——单指令多数据流——各处理机以同步的形式执行同一条指令
MISD——多指令单数据流——被证明不可能,至少不实际
MIMD——多指令多数据流——能够实现作业、指令、任务等各级全面并行
MIMD计算机分类
对称式共享存储器多处理机(SMP或UMA)——由于处理器个数较少,各处理器可共享一个集中式的物理存储器
分布式存储器多处理机——支持较多的处理器,存储器在物理上是分布的
对称式共享存储器(集中式共享多处理机)
也称为对称式共享存储器多处理SMP。它一般由几十个处理器构成,各处理器共享一个集中式的物理存储器,这个主存相对于各处理器的关系是对称的
分布式共享多处理机
它的共享存储器分布在各台处理机中,每台处理机都带有自己的本地存储器,组成一个“处理机-存储器”单元。但是这些分布在各台处理机中的实际存储器又合在一起统一编址, 在逻辑上组成一个共享存储器。这些处理机存储器单元通过互连网络连接在一起 ,每台处理机除了能访问本地存储器外,还能通过互连网络直接访问在其他处理机存储器单元中的 “远程存储器”
分布式多处理机的优缺点
- 如果大多数的访存都是针对本地节点的存储器进行的,就可以降低对存储器和互连网络的带宽要求。
- 对本地存储器的访问延迟时间小。
- 处理器之间的通信较为复杂,各处理器之间的访问延迟较大
二、存储器系统结构和通信机制(针对分布式存储器多处理机)
两种存储器系统结构
- 分布式共享存储器系统(DSM)——把物理上分离的所有存储器作为一个统一的共享逻辑空间进行编址,不同处理器上的同一个物理地址指向的是同一个存储单元
- 独立式——把每个节点中的存储器编址为一个独立的地址空间,不同节点的地址空间之间是相互独立的
两种通信机制
- 共享存储器通信机制——用于分布式共享存储器系统——采用load和store指令对相同存储器地址进行读/写操作
- 消息传递通信机制——用于独立式存储器系统——数据通信通过处理器之间的显式传递消息实现
共享存储器通信机制优点
- 与常用的对称式多处理机使用的通信机制兼容
- 编程简单,简化编译器设计
- 通信数据量较小时,通信开销较小,带宽利用较好
- 可以通过Cache技术减少远程通信的频度
消息传递机制的优点
- 硬件更简单
- 通信是显式的,清楚何时发生通信以及通信开销是多少
通信延迟
通信延迟=发送开销+跨越时间+传输时间+接收开销
计算/通信比
反映并行程序性能的一个重要的度量。在并行计算中,每次数据通信要进行的计算与通信开销的比值
多Cache一致性
多处理机中,当共享数据进入Cache,就可能出现多个处理器的Cache中都有同一存储器块的副本,要保证多个副本数据是一致的
监听协议
每个Cache除了包含物理存储器中块的数据拷贝之外,也保存着各个块的共享状态信息。Cache通常连在共享存储器的总线上,各个Cache控制器通过监听总线来判断它们是否有总线上请求的数据块
目录协议
用一种专用的存储器所记录的数据结构。它记录着可以进入Cache的每个数据块的访问状态、该块在各个处理器的共享状态以及是否修改过等信息
写作废协议
在处理器对某个数据项进行写入之前,它拥有对该数据项的唯一的访问权
写更新协议
当一个处理器对某数据项进行写入时,它把该新数据广播给所有其它Cache。这些Cache用该新数据对其中的副本进行更新
栅栏同步
栅栏强制所有到达该栅栏的进程进行等待。直到全部的进程到达栅栏,然后释放全部进程,从而形成同步
旋转锁
处理机环绕一个锁不停地旋转而请求获得该锁
同时多线程
是一种在多流出、动态调度的处理器上同时开发线程级并行和指令级并行的技术,它是多线程技术的一种改进
细粒度多线程技术
是一种实现多线程的技术。它在每条指令之间都能进行线程的切换,从而使得多个线程可以交替执行。通常以时间片轮转的方法实现这样的交替执行,在轮转的过程中跳过处于停顿的线程
粗粒度多线程技术
是一种实现多线程的技术。只有线程发生较长时间的停顿时才切换到其他线程
SMP
对称式共享存储器多处理
MPP
即大规模并行处理,按照当前的标准,具有几百台~几千台处理机的任何机器都是大规模并行处理系统
三、并行处理面临的挑战
并行处理面临着两个重要的挑战,一个是程序中的并行性有限,另一个是相对较大的通信开销。
1、有限的并行性使计算机很难达到较高的加速比——Amdahl定律
假设用100个处理器达到80的加速比,求原计算机中串行部分最多可以占多大的比例
假设程序只在两种模式下运行:100个处理器并行模式和1个处理器的串行模式
80=1/(并行的比例/100+(1-并行的比例))
并行比例=0.9975
不仅并行性是有限的,而且程序执行时并不只有我们假设的两种模式,通常处于两种模式之间,即使用一部分处理器
2、多处理机中远程访问的较大延迟
假设有一台32个处理器的多处理机,对远程存储器的访问时间为200ns。假设出了通信以外,所有其他访问均命中局部存储器。当发出一个远程请求时,本处理器挂起。处理器的时钟频率为2GHz,如果指令的基本CPI为0.5(设所有访存均命中Cache),求在没有远程访问的情况下和有0.2%的指令需要远程访问的情况下,前者比后者块多少
CPI=基本指令CPI+远程访问指令CPI=0.5+0.2%X200/0.5=1.3
原CPI=0.5
快了1.3/0.5=2.6倍
如果考虑访存不命中局部存储器和访存冲突的情况,CPI将更大
什么是多处理机的一致性?给出解决一致性的监听协议和目录协议的工作原理
-
对多个处理器维护一致性的协议称为Cache一致性协议。
-
目录协议的工作原理:采用一个集中的数据结构——目录。对于存储器中的每一个可以调入Cache的数据块,在目录中设置一条目录项,用于记录该块的状态以及哪些Cache中有副本等相关信息。目录协议根据该项目中的信息以及当前要进行的访问操作,依次对相应的Cache发送控制消息,并完成对目录项信息的修改。此外,还要向请求处理器发送响应信息。
-
监听协议的工作原理:每个Cache除了包含物理存储器中块的数据拷贝之外,也保存着各个块的共享状态信息。Cache通常连在共享存储器的总线上,当某个Cache需要访问存储器时,它会把请求放到总线上广播出去,其他各个Cache控制器通过监听总线来判断它们是否有总线上请求的数据块。如果有,就进行相应的操作。
第8章 机群
机群
是一种价格低廉、易于构建、可扩放性极强的并行计算机系统。它由多台同构或异构的独立计算机通过高性能网络或局域网互连在一起,协同完成特定的并行计算任务。从用户的角度来看,机群就是一个单一、集中的计算资源
单一系统映象
包含四重含义。
- 单一系统。尽管系统中有多个处理器,用户仍然把整个机群视为一个单一的计算系统来使用。
- 单一控制。逻辑上,最终用户或系统用户使用的服务都来自机群中唯一一个位置。
- 对称性。用户可以从任一个结点上获得机群服务,也就是说,对于所有结点和所有用户,除了那些具有特定访问权限的服务与功能外,所有机群服务与功能都是对称的。
- 位置透明。用户不必了解真正提供服务的物理设备的具体位置。
高可用性机群
当系统中某些结点出现故障的情况下,仍能继续对外提供服务。它采用冗余机制,当系统中某个结点由于软、硬件故障而失效时,该结点上的任务将在最短的时间内被迁移到机群内另一个具有相同功能与结构的结点上继续执行
负载均衡机群
机群能够根据系统中各个结点的负载情况实时地进行任务分配。它专门设置了一个重要的监控结点,负责监控其余每个工作结点的负载和状态,并根据监控结果将任务分派到不同的结点上
高性能计算机群
通过高速的商用互连网络,将数十台乃至上千台PC机或工作站连接在一起,可以提供接近甚至超过传统并行计算机系统的计算能力,但其价格却仅是具有相同计算能力的传统并行计算机系统的几十分之一
Beowulf机群
使用普通的硬件加上Linux操作系统、再加上GNU开发环境以及PVM/MPI共享库所构建的机群。它一方面集中了那些相对较小的机器的计算能力,能够以很高的性能价格比提供与大型机相当的性能,另一方面也保证了软件环境的稳定性
机群系统有什么特点?
-
系统开发周期短。由于机群系统大多采用商品化的PC机、工作站作为结点,并通过商用网络连接在一起,系统开发的重点在于通信子系统和并行编程环境上,这大大节省了研制时间。
-
可靠性高。机群中的每个结点都是独立的PC机或工作站,某个结点的失效并不会影响其它结点的正常工作,而且它的任务还可以传递给其它结点完成,从而有效地避免由于单结点失效引起的系统可靠性降低的问题。
-
可扩放性强。机群的计算能力随着结点数量的增加而增大。这主要是得益于机群结构的灵活性,由于结点之间以松耦合方式连接,机群的结点数量可以增加到成百上千。另外,机群系统的硬件容易扩充和替换,可以灵活配置。
-
性能价格比高。由于生产批量小,传统并行计算机系统的价格均比较昂贵,往往要几百万到上千万美元。而机群的结点和网络都是商品化的计算机产品,能够大批量生产,成本相对较低,因而机群系统的性能价格比更好。与相同性能的传统并行计算机系统相比,机群的价格要低1~2个数量级。
-
用户编程方便。机群系统中,程序的并行化只是在原有的C、C++或Fortran串行程序中插入相应的通信原语,对原有串行程序的改动有限。用户仍然使用熟悉的编程环境,无需适用新的环境。
说明IBM SP2的体系结构特点
SP2机群是异步的MIMD,具有分布式存储器系统结构。它的每个结点都是一台RS/6000工作站,带有自己的存储器和本地磁盘。结点中采用的处理器是一台6流出的超标量处理机,每个时钟周期可以执行6条指令。
SP2的结点数可以从2个到512个不等,每个结点配有一套完整的AIX操作系统(IBM的UNIX),结点间的互连网络接口是松散耦合的,通过结点本身的I/O微通道(MCC)接到网络上。
SP2的结点都有1个指令Cache,1个数据Cache,1个分支指令和转移控制部件,2个整数部件和2个浮点部件,但它们在存储器容量、数据宽度和I/O总线插槽个数上有所不同。
系统采用标准的工作站部件,仅在标准技术不能满足性能要求时才使用专用软件和硬件。
SP2的I/O系统基本上是围绕着HPS建立的,并可以用一个LAN网关同SP2系统外的其他计算机连接。
SP2中设置了一个专门的系统控制台用以管理整个系统,系统管理人员可以通过这个系统控制台从单一地点对整个系统进行管理。