计算机系统结构课后习题答案(1) 下载本文

第一章 计算机系统结构的基本概念

1.有一个计算机系统可按功能分成4级,每级的指令互不相同,每一级的指令都比其下一级的指令在效能上强M倍,即第i级的一条指令能完成第i-1级的M条指令的计算量。现若需第i级的N条指令解释第i+1级的一条指令,而有一段第1级的程序需要运行Ks,问在第2、3和4级上一段等效程序各需要运行多长时间?

答:第2级上等效程序需运行:(N/M)*Ks。第3级上等效程序需运行:(N/M)*(N/M)*Ks。第4级上等效程序需运行:(N/M)*(N/M)*(N/M)*Ks。 note:

由题意可知:第i级的一条指令能完成第i-1级的M条指令的计算量。而现在第i级有N条指令解释第i+1级的一条指令,那么,我们就可以用N/M来表示N/M 表示第i+1级需(N/M)条指令来完成第i级的计算量。所以,当有一段第1级的程序需要运行Ks时,在第2级就需要(N/M)Ks,以此类推

2.硬件和软件在什么意义上是等效的?在什么意义上又是不等效的?试举例说明。

答:软件和硬件在逻辑功能上是等效的,原理上,软件的功能可用硬件或固件完成,硬件的功能也可用软件模拟完成。但是实现的性能价格比,实现的难易程序不同。

在DOS操作系统时代,汉字系统是一个重要问题,早期的汉字系统的字库和处理程序都固化在汉卡(硬件)上,而随着CPU、硬盘、内存技术的不断发展,UCDOS把汉字系统的所有组成部份做成一个软件。

3.试以实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系与影响。 答:计算机系统结构、计算机组成、计算机实现互不相同,但又相互影响。

(1)计算机的系统结构相同,但可采用不同的组成。如IBM370系列有115、125、135、158、168等由低档到高档的多种型号机器。从汇编语言、机器语言程序设计者看到的概念性结构相同,均是由中央处理机/主存,通道、设备控制器,外设4级构成。其中,中央处理机都有相同的机器指令和汇编指令系统,只是指令的分析、执行在低档机上采用顺序进行,在高档机上采用重叠、流水或其它并行处理方式。

(2)相同的组成可有多种不同的实现。如主存器件可用双极型的,也可用MOS型的;可用VLSI单片,也可用多片小规模集成电路组搭。

(3)计算机的系统结构不同,会使采用的组成技术不同,反之组成也会影响结构。如为实现A:=B+CD:=E*F,可采用面向寄存器的系统结构,也可采用面向主存的三地址寻址方式的系统结构。要提高运行速度,可让相加与相乘并行,为此这两种结构在组成上都要求设置独立的加法器和乘法器。但对面向寄存器的系统结构还要求寄存器能同时被访问,而对面向主存的三地址寻址方式的系统结构并无此要求,倒是要求能同时形成多个访存操作数地址和能同时访存。又如微程序控制是组成影响结构的典型。通过改变控制存储器中的微程序,就可改变系统的机器指令,改变结构。如果没有组成技术的进步,结构的进展是不可能的。

综上所述,系统结构的设计必须结合应用考虑,为软件和算法的实现提供更多更好的支持,同时要考虑可能采用和准备采用的组成技术。应避免过多地或不合理地限制各种组成、实现技术的采用和发展,尽量做到既能方便地在低档机上用简单便宜的组成实现,又能在高档机上用复杂较贵的组成实现,这样,结构才有生命力;组成设计上

1

面决定于结构,下面受限于实现技术。然而,它可与实现折衷权衡。例如,为达到速度要求,可用简单的组成但却是复杂的实现技术,也可用复杂的组成但却是一般速度的实现技术。前者要求高性能的器件,后者可能造成组成设计复杂化和更多地采用专用芯片。

组成和实现的权衡取决于性能价格比等因素;结构、组成和实现所包含的具体内容随不同时期及不同的计算机系统会有差异。软件的硬化和硬件的软件都反映了这一事实。VLSI的发展更使结构组成和实现融为一体,难以分开。

4.什么是透明性概念?对计算机系统结构,下列哪些是透明的?哪些是不透明的?

存储器的模m交叉存取;浮点数据表示;I/O系统是采用通道方式还是外围处理机方式;数据总线宽度;字符行运算指令;阵列运算部件;通道是采用结合型还是独立型;PDP-11系列的单总线结构;访问方式保护;程序性中断;串行、重叠还是流水控制方式;堆栈指令;存储器最小编址单位;Cache存储器。 答:透明指的是客观存在的事物或属性从某个角度看不到。

透明的有:存储器的模m交叉存取;数据总线宽度;阵列运算部件;通道是采用结合型还是独立型;PDP-11系列的单总线结构串行、重叠还是流水控制方式;Cache存储器。

不透明的有:浮点数据表示;I/O系统是采用通道方式还是外围处理机方式;字符行运算指令;访问方式保护;程序性中断;;堆栈指令;存储器最小编址单位。

5.从机器(汇编)语言程序员看,以下哪些是透明的?

指令地址寄存器;指令缓冲器;时标发生器;条件寄存器;乘法器;主存地址寄存器;磁盘外设;先行进位链;移位器;通用寄存器;中断字寄存器。

答:透明的有:指令缓冲器、时标发生器、乘法器、先进先出链、移位器、主存地址寄存器。

6.下列哪些对系统程序员是透明的?哪些对应用程序员是透明的?

系列机各档不同的数据通路宽度;虚拟存储器;Cache存储器;程序状态字;“启动I/O”指令;“执行”指令;指令缓冲寄存器。

答:对系统程序员透明的有:系列机各档不同的数据通路宽度;Cache存储器;指令缓冲寄存器;

对应用程序员透明的有:系列机各档不同的数据通路宽度;Cache存储器;指令缓冲寄存器;虚拟存储器;程序状态字;“启动I/O”指令。 note:

系列机各档不同的数据通路宽度、Cache存贮器、指令缓冲寄存器属于计算机组成,对系统和程序员和应用程序员都是透明的。

虚拟存贮器、程序状态字、“启动I/O”指令,对系统程序员是不透明的,而对应用程序员却是透明的。 “执行”指令则对系统程序员和应用程序员都是不透明的。

7.想在系列机中发展一种新型号机器,你认为下列哪些设想是可以考虑的,哪些则不行的?为什么? (1)新增加字符数据类型和若干条字符处理指令,以支持事务处理程序的编译。

(2)为增强中断处理功能,将中断分级由原来的4级增加到5级,并重新调整中断响应的优先次序。

2

(3)在CPU和主存之间增设Cache存储器,以克服因主存访问速率过低而造成的系统性能瓶颈。

(4)为解决计算误差较大,将机器中浮点数的下溢处理方法由原来的恒置“1”法,改为用ROM存取下溢处理结果的查表舍入法。

(5)为增加寻址灵活性和减少平均指令字长,将原等长操作码指令改为有3类不同码长的扩展操作码;将源操作数寻址方式由操作码指明改成如VAX-11那种设寻址方式位字段指明。

(6)将CPU与主存间的数据通路宽度由16位扩展成32位,以加快主机内部信息的传送。 (7)为减少公用总路线的使用冲突,将单总线改为双总线。 (8)把原0号通用寄存器改作堆栈指示器。

答: 可以考虑的有:1,3,4,6,7。不可以考虑的有:2,5,8。 原则是看改进后能否保持软件的可移植性。

P.S.为了能使软件长期稳定,就要在相当长的时期里保证系统结构基本不变,因此在确定系列结构时要非常慎重。其中最主要是确定好系列机的指令系统、数据表示及概念性结构。既要考虑满足应用的各种需要和发展,又要考虑能方便地采用从低速到高速的各种组成的实现技术,即使用复杂、昂贵的组成实现时,也还能充分发挥该实现方法所带来的好处。

8.并行处理计算机除分布处理、MPP和机群系统外,有哪4种基本结构?列举它们各自要解决的主要问题。 答:除了分布处理,MPP和机群系统外,并行处理计算机按其基本结构特征可分为流水线计算机,阵列处理机,多处理机和数据流计算机四种不同的结构。

流水线计算机主要通过时间重叠,让多个部件在时间上交划重叠地并行招待运算和处理,以实现时间上的并行。它主要应解决:拥塞控制,冲突防止,流水线调度等问题。

阵列处理机主要通过资源重复实现空间上的并行。它主要应解决:处理单元灵活、规律的互连模式和互连网络设计,数据在存储器中的分布算法等问题。

多处理机主要通过资源共享,让一组计算机在统一的操作系统全盘控制下,实现软件和硬件各级上的相互作用,达到时间和空间上的异 步并行。它主要应解决:处理机间互连等硬件结构,进程间的同上步和通讯,多处理机调度等问题。

数据流计算机设有共享变量的概念,指令执行顺序只受指令中数据的相关性制约。数据是以表示某一操作数或参数已准备就绪的数据令牌直接在指令之间传递。它主要应解决:研究合适的硬件组织和结构,高效执行的数据流语言等问题。

9.计算机系统的3T性能目标是什么?

答:计算机系统的3T性能目标是 1TFLOPS计算能力 , 1TBYTE主存容量 和 1TBYTES的I/O带宽。

3

第二章 数据表示与指令系统

1.数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么?

答: 数据表示是能由硬件直接识别和引用的数据类型。数据结构反映各种数据元素或信息单元之间的结构关系。 数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。数据表示和数据结构是软件、硬件的交界面。

除基本数据表示不可少外,高级数据表示的引入遵循以下原则: (1)看系统的效率有否提高,是否养活了实现时间和存储空间。 (2)看引入这种数据表示后,其通用性和利用率是否高。

2.标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同?

答:标志符数据表示与描述符数据表示的差别是标志符与每个数据相连,合存于同一存储单元,描述单个数据的类型特性;描述符是与数据分开存放,用于描述向量、数组等成块数据的特征。

描述符数据表示为向量、数组的的实现提供了支持,有利于简化高级语言程序编译中的代码生成,可以比变址法更快地形成数据元素的地址。但描述符数据表示并不支持向量、数组数据结构的高效实现。而在有向量、数组数据表示的向量处理机上,硬件上设置有丰富的赂量或阵列运算指令,配有流水或阵列方式处理的高速运算器,不仅能快速形成向量、数组的元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理.如让硬件越界判断与元素运算并行。这些比起用与向量、阵列无关的机器语言和数据表示串行实现要高效的多。

3.堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用哪些操作提供了支持? 答:通用寄存器型机器对堆栈数据结构实现的支持是较差的。表现在: (1)堆栈操作的指令少,功能单一; (2)堆栈在存储器内,访问堆栈速度低;

(3)堆栈通常只用于保存于程序调用时的返回地址,少量用堆栈实现程序间的参数传递。

而堆栈型机器则不同,表现在:(1)有高速寄存器组成的硬件堆栈,并与主存中堆栈区在逻辑上组成整体,使堆栈的访问速度是寄存器的,容量是主存的;(2)丰富的堆栈指令可对堆栈中的数据进行各种运算和处理;(3)有力地支持高级语言的编译;(4)有力地支持子程序的嵌套和递归调用。

堆栈型机器系统结构有力地支持子程序的嵌套和递归调用。在程序调用时将返回地址、条件码、关键寄存器的内容等全部压入堆栈,待子程序返回时,再从堆栈中弹出。

4.设某机阶值6位、尾数48位,阶符和数符不在其内,当尾数分别以2、8、16为基时,在非负阶、正尾数、规格化数情况下,求出其最小阶、最大阶、阶的个数、最小尾数值、最大尾数值、可表示的最小值和最大值及可表示的规格化数的总个数。

解:依题意知:p=6 m=48 rm=2, 8, 16,m'=m/log2(rm),列下表:

4

最小阶(非负阶,最小为0) 最大阶(2^p-1) 最小尾数值(rm^(-1)) 最大尾数值(1-rm^(-m')) 可表示的最小值 可表示的最大值 阶的个数(2^p) 可表示的尾数的个数 可表示的规格化数的个数 note:

p=6,m=48,rm=2(m'=48) 0 2^6-1 1/2 1-2^(-48) 1/2 2^63*(1-2^(-48)) 2^6 2^48*(2-1)/2 2^6*2^48*(2-1)/2 p=6,m=48,rm=8(m'=16) 0 2^6-1 1/8 1-8^(-16),即(1-2^(-48)) 1/8 8^63*(1-8^(-16)) 2^6 8^16*(8-1)/8 2^6*8^16*(8-1)/8 p=6,m=48,rm=16(m'=12) 0 2^6-1 1/16 1-16^(-12),即(1-2^(-48)) 1/16 16^63*(1-16^(-12)) 2^6 16^12*(16-1)/16 2^6*16^12*(16-1)/16 可表示的最小值=rm^(最小阶)*最小尾数值=rm^0*rm^(-1)=rm^(-1); 可表示的最大值=rm^(最大阶)*最大尾数值=rm^(2^p-1)*(1-rm^(-m')); 可表示的尾数的个数=rm^m'*(rm-1)/rm;

可表示的规格化数的个数=阶的个数*尾数的个数=2^p*rm^m'*(rm-1)/rm。

5.(1)浮点数系统使用的阶基rp=2,阶值位数p=2,尾数基值rm=10,以rm为基的尾数位数m''=1,按照使用的倍数来说,等价于m=4, 试计算在非负阶、正尾数、规格化情况下的最小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。

(2)对于rp=2,p=2,rm=4,m'=2,重复以上计算。 解:依题意列下表:

最小尾数值 最大尾数值 最大阶值 可表示的最小值 可表示的最大值 可表示数的个数 p=2,rm=10,m'=1 10^-1=0.1 1-10^-1=0.9 2p^-1=3 0.1 10^3*0.9=900 36 p=2,rm=4,m'=2 4^-1=0.25 1-4^-2=15/16 3 0.25 4^3*15/16=60 48 题中“按照使用的倍数来说,等价于m=4,” 这个m=4,因为2^3<10<2^4,等价为实际要4个二进制位,表示RM=10为基的一位

6.由4位数(其中最低位为下溢附加位)经ROM查表舍入法,下溢处理成3位结果,设计使下溢处理平均误差接近于零的ROM表,列出ROM编码表地址与内容的对应关系。 解: ROM编码表地址与内容的对应关系

地0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 5

址 内000 001 001 010 010 011 011 100 100 101 101 110 110 111 111 111 容

7.变址寻址和基址寻址各适用于何种场合?设计一种只用6位地址码就可指向一个大地址空间中任意64个地址之一的寻址机构。

答:基址寻址是对逻辑地址空间到物理地址空间变换的支持,以利于实现程序的动态再定位。变址寻址是对数组等数据块运算的支持,以利于循环。将大地址空间64个地址分块,用基址寄存器指出程序所在块号,用指令中6位地址码表示该块内64 个地址之一,这样基址和变址相结合可访问大地址任意64个地址之一。比如地址空间很大,为0-1023,只用6位地址码就可以指向这1024个地址中的任意64个。

剖析:比如地址空间很大,1024,就是分成16个块,块号放在寄存器中,块内地址放在地址位中,寄存器内容和地址位结合,就能达到要求了。 8.

14

使

0.01,0.15,0.12,0.03,0.02,0.04,0.02,0.04,0.01,0.13,0.15,0.14,0.11,0.03。分别求出用等长码、Huffman码、只有两种码长的扩展操作码3种编码方式的操作码平均码长。

解:等长操作码的平均码长=4位;Huffman编码的平均码长=3.38位;只有两种码长的扩展操作码的平均码长=3.4位。

9.若某机要求:三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位.每个地址码长为3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。 答: ①不能用扩展码为其编码。

∵指令字长12位,每个地址码占3位;

∴三地址指令最多是2^(12-3-3-3)=8条, 现三地址指令需4条, ∴可有4条编码作为扩展码,

∴单地址指令最多为4×2^3×2^3=2^8=256条, 现要求单地址指令255条,∴可有一条编码作扩展码 ∴零地址指令最多为1×2^3=8条 不满足题目要求

∴不可能以扩展码为其编码。

②若单地址指令254条,可以用扩展码为其编码。 ∵依据①中推导,单地址指令中可用2条编码作为扩展码 ∴零地址指令为2×2^3=16条,满足题目要求 note:

三地址指令格式: 操作码 地址码 地址码 地址码 3位 3位 3位 3位

6

单地址指令格式: 操作码 地址码 9位 3位

所以前面9位由于三地址指令用了最前面3位,还有中间6位可作为编码(也就是总共可以有9位作为单地址指令的指令操作码的编码)。减去3地址指令的4条,有4*2^6=256条,但由于韪目要求要有255条,所以剩下一个编码,已经用了9位的全部编码,最后零地址指令(全部12位都可作为操作码的编码)还有1*2^3=8 (这是12位编码中最后三位的)若只要求254种,则可以有(256-254)*2^3=16条

10.某机指令字长16位。设有单地址指令和双地址指令两类。若每个地址字段为6位.且双地址指令有X条。问单地址指令最多可以有多少条?

答: 单地址指令最多为(16-X)×2^6

P.S.双地址指令最多是2^(16-6-6)=2^4=16条, 现双地址指令有X条, ∴可有(16-X)条编码作为扩展码, ∴单地址指令最多为(16-X)×2^6=256条

11.何谓指令格式的优化?简要列举包括操作码和地址码两部分的指令格式优化可采用的各种途径和思路。 答: 指令格式的优化指如何用最短位数表示指令的操作信息和地址信息,使程序中指令的平均字长最短。 ①操作码的优化

采用Huffman编码和扩展操作码编码。 ②对地址码的优化: 采用多种寻址方式;

采用0、1、2、3等多种地址制;

在同种地址制内再采用多种地址形式,如寄存器-寄存器型、寄存器-主存型、主存-主存型等; 在维持指令字在存储器内按整数边界存储的前提下,使用多种不同的指令字长度。

12.某模型机9条指令使用频率为:

ADD(加) 30% SUB(减) 24% JOM(按负转移) 6% STO(存) 7% JMP(转移) 7% SHR(右移) 2% CIL(循环) 3% CLA(清加) 20% STP(停机) 1%

要求有两种指令字长,都按双操作数指令格式编排,采用扩展操作码,并限制只能有两种操作码码长。设该机有若干通用寄存器,主存为16位宽,按字节编址,采用按整数边界存储。任何指令都在一个主存周期中取得,短指令为寄存器-寄存器型,长指令为寄存器-主存型,主存地址应能变址寻址。

(1)仅根据使用频率,不考虑其它要求,设计出全Huffman操作码,计算其平均码长; (2)考虑题目全部要求,设计优化实用的操作形式,并计算其操作码的平均码长; (3)该机允许使用多少可编址的通用寄存器? (4)画出该机两种指令字格式,标出各字段之位数;

7

(5)指出访存操作数地址寻址的最大相对位移量为多少个字节? 解:

第(1)和(2)中Huffman和扩展操作码的编码及平均码长如下表:

指令Ii 使用频度Pi Huffman编码 扩展操作码编码 I1 30% 10 00 I2 24% 00 01 I3 20% 01 10 I4 7% 1100 11000 I5 7% 1101 11001 I6 6% 1110 11010 I7 3% 11110 11011 I8 2% 111110 11100 I9 1% 111111 11101 西个马pili 2.61 2.78

(3)8个。

(4)两种指令格式如下图所示:

2位 3位 3位 OP R1 R2 操作码 寄存器1 寄存器2

5位 3位 3位 5位 OP R1 X d

操作码 寄存器1 变址寄存器 相对位移 主存逻辑地址

(5)访存操作数地址寻址的最大相对位移量为32个字节。

13.设计RISC机器的一般原则及可采用的基本技术有那些? 答: 一般原则:

(1)确定指令系统时,只选择使用频度很高的指令及少量有效支持操作系统,高级语言及其它功能的指令; (2)减少寻址方式种类,一般不超过两种; (3)让所有指令在一个机器周期内完成;

(4)扩大通用寄存器个数,一般不少于32个,尽量减少访存次数; (5)大多数指令用硬联实现,少数用微程序实现; (6)优化编译程序,简单有效地支持高级语言实现。 基本技术:

8

(1)按RISC一般原则设计,即确定指令系统时,选最常用基本指令,附以少数对操作系统等支持最有用的指令,使指令精简。编码规整,寻址方式种类减少到1、2种。

(2)逻辑实现用硬联和微程序相结合。即大多数简单指令用硬联方式实现,功能复杂的指令用微程序实现。 (3)用重叠寄存器窗口。即:为了减少访存,减化寻址方式和指令格式,简单有效地支持高级语言中的过程调用,在RISC机器中设有大量寄存嚣,井让各过程的寄存器窗口部分重叠。

(4)用流水和延迟转移实现指令,即可让本条指令执行与下条指令预取在时间上重叠。另外,将转移指令与其前面的一条指令对换位置,让成功转移总是在紧跟的指令执行之后发生,使预取指令不作废,节省一个机器周期。 (5)优化设计编译系统。即尽力优化寄存器分配,减少访存次数。不仅要利用常规手段优化编译,还可调整指令执行顺序,以尽量减少机器周期等。

14.简要比较CISC机器和RISC机器各自的结构特点,它们分别存在哪些不足和问题?为什么说今后的发展应是CISC和RISC的结合?

答: CISC结构特点:机器指令系统庞大复杂。

RISC结构特点:机器指令系统简单,规模小,复杂度低。 CISC的问题:

(1)指令系统庞大,一般200条以上; (2)指令操作繁杂,执行速度很低;

(3)难以优化生成高效机器语言程序,编译也太长,太复杂;

(4)由于指令系统庞大,指令的使用频度不高,降低系统性能价格比,增加设计人员负担。 RISC的问题;

(1)由于指令少,在原CISC上一条指令完成的功能现在需多条RISC指令才能完成,加重汇编语言程序设计负担,增加了机器语言程序长度,加大指令信息流量。 (2)对浮点运算和虚拟存储支持不很强。 (3)RISC编译程序比CISC难写。

由于RISC和CISC各有优缺点,在设计时,应向着两者结合,取长补短方向发展。

9

第三章 总线、中断与输入输出系统

1.简要举出集中式串行链接,定时查询和独立请求3种总线控制方式的优缺点。同时分析硬件产生故障时通讯的可靠性。 答:

控制方

优点

(1)对“总线可用”线及其有关电路失效敏感。

(1)选择算法简单。

(2)灵活性差,如果高优先级的部件频繁要求

缺点

串行链(2)控制线数少,只需要3使用总线,离总线控制器远的部件就难以获接 根,且不取决于部件数量。 得总线使用权。

(3)可扩充性好。

(3)“总线可用”信号顺序脉动地通过各个部件,总线的分配速度慢。

10

(4)受总线长度的限制,增减和移动部件受限制。

(1)灵活性强,部件的优先

(1)总线的分配速度不能很高。

次序由程序控制。

定时查

(2)可靠性高,不会因某个询

部件失效而影响其它部件

(4)可扩充性差。

使用总线。

(1)灵活性强,部件的优先次序由程序控制。

独立请

(2)能方便地隔离失效部件(2)控制线数多,要控制N个设备,需要有求

的请求。

(3)总线的分配速度快。

2.设中断级屏蔽位“1”对应于开放,“0”对应于屏蔽,各级中断处理程序的中断级屏蔽位设置如下:

中断处理程序级别 第1级 第2级 第3级 第4级

(1)当中断响应优先次序为1→2→3→4时,其中断处理次序是什么?

(2)如果所有的中断处理都各需3个单位时间,中断响应和中断返回时间相对中断处理时间少得多。当机器正在运行用户程序时,同时发生第2,3级中断请求,过两个单位时间,又同时发生第1,4级中断请求,试画出程序运行过程示意图。 答:

(1)当中断响应优先次序为1→2→3→4时,其中断处理次序为1→3→4→2。 (2)

中断级屏蔽位 1级 2级 3级 4级 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0

2N+1根控制线。 (1)控制较为复杂。

(3)控制线数多,需要2+log2N根。 (2)控制较为复杂。

11

3.若机器共有5级中断,中断响应优先次序为1→2→3→4→5,要求其实际的中断处理次求序1→4→5→2→3。 (1)设计各级中断处理程序的中断级屏蔽位(令“1”对应于开放,“0”对应于屏蔽);

(2)若在运行用户程序时,同时出现第4,2级中断请求,而在处理第2级中断未完成时,又同时出现第1,3,5级中断请求,请画出此程序运行过程示意图。 答: (1)中断级屏蔽位设置如下图:

中断级屏蔽位 中断处理程序级别 12345级 级 级 级 级 第1级 第2级 第3级 第4级 第5级 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 (2)中断过程示意图:如图

2、4中断同时出现,进行排队器。

首先响应第2级中断请求,屏蔽字为01100,表明其对第4级中断请求开放,所以转去响应第4级中断请求并进行处理。

响应4,中断4运行结束,回2。 1、3、5进入排队器。

第2级中断请求的处理请求被中断,转去响应第1级中断请求并进行处理。

响应第5级中断请求并进行处理。

继续响应并处理第2级中断处理请求,结束后返回用户程序。

最后处理第3级中断请求。

12

4.简述字节多路,数组多路和选择通道的数据传送方式。

答: 字节多路通道适用于连接大量的像光电机等字符类低速设备。这些设备传送一个字符(字节)的时间很短,但字符(字节)间的等待时间很长。通道“数据宽度”为单字节,以字节交叉方式轮流为多台设备服务,使效率提高。字节多路通道可有多个子通道,同时执行多个通道程序。

数组多路通道适合于连接多台象磁盘等高速设备。这些设备的传送速率很高,但传送开始前的寻址辅助操作时间很长。通道“数据宽度”为定长块,多台设备以成组交叉方式工作,以充分利用并尽可能重叠各台高速设备的辅助操作时间。传送完K个字节数据,就重新选择下个设备。数组多路通道可有多个子通道,同时执行多个通道程序。 选择通道适合于连接象磁盘等优先级高的高速设备,让它独占通道,只能执行一道通道程序。通道“数据宽度”为可变长块,一次将N个字节全部传送完,在数据传送期只选择一次设备。

5.如果通道在数据传送期中,选择设备需9.8μs,传送一个字节数据需0.2μs。某低速设备每隔500μs发出一个字节数据传送请求,问至多可接几台这种低速设备?对于如下A~F6种高速设备,一次通讯传送的字节数不少于1024个字节,问哪些设备可以挂在此通道上?哪些则不能?其中A—F设备每发出一个字节数据传送请求的时间间隔分别为(单位为μs): 表3-5

设备 发申请间隔0.2 (μs)

答: (1)至多可连接50台低速的外设。 剖析:

根据题意可知:低速设备应挂接在字节多路通道上,字节多路通道的通道极限流量为: fmax.byte=1/(TS+TD)>=fbyte

通道极限流量应大于或等于设备对通道要求的流量fbyte。

如果字节多路通道上所挂设备台数为m,设备的速率为fi,为了不丢失信息,应满足: 1/(TS+TD)>=m*fi

fi也就是设备发出字节传送请求间隔时间(500μs)的倒数,所以: m<=1/((TS+TD)*f)=500/(9.8+0.2)=50(台) (2)设备B,C,E,F可以挂在此通道上,设备A,D则不能。 剖析:

思路一:从传送字节速率上入手。

A~F是高速设备,应挂接在选择通道上,选择通道的极限流量为:

fmax.select=N/(TS+N*TD)=1/((TS/N)+TD)=1/((9.8/1024)+0.2)=1/0.21(约) 通道上所挂设备的最大速率fi.max应小于或等于通道的极限流量。 由表3-5可得出

13

A B C D E F 0.25 0.5 0.19 0.4 0.21

设备 传送速率A B C D E F 1/0.2 (B/μs)

1/0.25 1/0.5 1/0.19 1/0.4 1/0.21 所以,B、C、E、F可挂在该通道上。A、D不能。 思路二:从传送字节时间上入手。

对于高速设备,由于一次传送字节数不少于1024byte

∴该通道一次传送数据的时间为9.8μs+1024×0.2μs=214.6μs 由表3-5可得出每台设备发送1024字节的时间间隔分别为:

设备 传送时间(μs)

∴为使数据不丢失,B、C、E、F可挂在该通道上。A、D不能。

6.某字节多路通道连接6台外设,某数据传送速率分别如表中所列。

设备 传送速率50 (KB/s)

(1)计算所有设备都工作时的通道实际最大流量:

(2)如果设计的通道工作周期使通道极限流量恰好与通道最大流量相等,以满足流量设计的基本要求,同时让速率越高的设备被响应的优先级越高。当6台设备同时发出请求开始,画出此通道在数据传送期内响应和处理各外设请求的时间示意图。由此你发现了什么问题?

(3)在(2)的基础上,在哪台设备内设置多少个字节的缓冲器就可以避免设备信息丢失?那么,这是否说书中关于流量设计的基本要求是没有必要的了呢?为什么?

解: (1)实际最大流量=50+15+l00+25+40+20=250KB/S。 (2)通道响应和处理各设备请求的时间示意图

15 100 25 40 20 1 2 3 4 5 6 A 204.8 B 256 C 512 D 194.56 E 409.6 F 215.04 14

由此发现由于高速设备的响应优先级高,使低速设备2造成数据丢失。

(3)在2中各设两个字节的缓冲区即可。这并不说明流量设计的基本条件是不必要的,因为若基本条件不满足,无

论设备优先级如何确定总有设备的信息会丢失。 剖析:

(2)由各设备的传送字节速率可解其连续发出传送请求的时间间隔分别为:

设备 发申请间隔20 (μs)

7.通道型I/O系统由一个字节多路通道A(其中包括两个子通道Al和A2),两个数组多路通道B1和B2及一个选择通道C构成,各通道所接设备和设备的数据传送速率如表所示。 (1)分别求出各通道应具有多大设计流量才不会丢失信息;

(2)设I/O系统流量占主存流量的1/2时才算流量平衡,则主存流量应达到多少?

通道号 子通道A1 字节多路通道 子通道A2 数组多路通道 B1 数组多路通道 B2 选择通道C

解: (1)要不丢失信息,各通道需要达到的流量:字节多路通道子通道A1:0.25KB/S;字节多路通道子通道A2:0.25KB/S;数组多路通道B1:500KB/s;数组多路通道B2:500KB/s;选择通道C:500KB/s。 (2)主存流量应达到4MB/S。 剖析:

500 400 350 250 500 400 350 250 500 400 350 250 50 35 20 20 50 35 20 20 所接设备的数据传送速率(KB/s) 50 35 20 20 50 35 20 20 67(约) 10 40 25 50 1 2 3 4 5 6 15

(1)设备要求字节多路通道或其子通道的实际最大流量,是该通道所接各设备的字节传送速率之和; 设备要求数组多路通道或选择通道的实际最大流量,是该通道所接各设备的字节传送速率中的最大者。 (2)I/O系统中,各种通道和子通道可以并行工作,因此,I/O系统的最大流量应等于各通道最大流量之和。

第四章 存储体系

1.设二级虚拟存储器的TA1=10-7s、TA2=10-2s,为使存储层次的访问效率e达到最大值的80%以上,命中率H至少要求达到多少?实际上这样高的命中率是很难达到的,那么从存储层次上如何改进? 解: e=TA1/TA=TA1/(H*TA1+(1-H)*TA2)≥80%,H≥(10^5-5/4)/(10^5-1)。

这样的命中率很难达到。为了降低对H的要求,可以选择高命中率的算法,可以减少相邻两级的访问速度差和容量差(这样做不利于降低存储器的平均每位价格),可在主、辅存储器间加一层电子磁盘,使存储体系中相邻两级的访问时间比不太大。

2、程序存放在模32单字交叉存储器中,设访存申请队的转移概率λ为25%,求每个存储周期能访问到的平均字数。当模数为16呢?由此你可得到什么结论? 解:B=[ 1-(1-λ)^m] /λ 解: 由λ=0.25,m=32 求得:B=4-4*(3/4)^32 同理,m=16时 ,B=4-4*(3/4)^16

可得出,在λ=0.25时,m=32的平均访问字数大于m=16时的平均访问字数。

3、设主存每个分体的存取周期为2μs,宽度为4个字节。采用模m多分体交叉存取,但实际频宽只能达到最大频宽的0.6倍。现要求主存实际频宽为4MB/S,问主存模数m应取多少方能使两者速度基本适配?其中m取2的幂。 解: m=4 剖析:

根据题意,模m多分体交叉的最大频宽为:分体数*单体频宽=m*分体的宽度/分体的存取周期=m*4B/2μs,所以有0.6*m*4/2>=4。

4.某虚拟存储器共8个页面,每页1024个字,实际主存为4096个字,采用页表法进行地址映象。映象表的内容如下表所示。 虚页号 实页号 装入位 0 3 1 1 1 1 2 2 0 3 3 0 4 2 1 5 1 0 6 0 1 7 0 0 注:我把虚页号加上了。

(1)列出会发生页面失效的全部虚页号;

(2)按以下虚地址计算主存实地址:0,3728,1023,1024,2055,7800,4096,6800。 解:

(1)会发生页面失效的全部虚页号为:2,3,5,7。

16

(2) 虚地址 虚页号 0 3278 1023 1024 2055 7800 4096 6800 剖析:

(1)根据页表法列出表2,当装入位为0时,即为页面失效,再找出相对应的虚页号即可。 (2)虚页号=虚地址/页面大小

页内位移量=虚地址-虚页号*页面大小 实地址=实页号*页面大小+页内位移量

由于可以用替换算法解决页面失效的问题,所以,发生页面失效的虚页2,3,5,7仍然可以有相应的实地址,但这样要在页表中建立新的虚实地址对应关系,新的虚实地址对应关系和原来的对应关系相同的可能性就很小了。

5、一个段页式虚拟存储器。虚地址有2位段号、2位页号、11位页内位移(按字编址),主存容量为32K字。每段可有访问方式保护,其页表和保护位如下表所示。

段号 访问方式 虚页0所在位置 虚页1所在位置 虚页2所在位置 虚页3所在位置 0 只读 实页9 实页3 在辅存上 实页12 1 可读/执行 在辅存上 实页0 实页15 实页8 2 可读/写/执行 页表不在主存内 页表不在主存内 页表不在主存内 页表不在主存内 3 可读/写 实页14 实页1 实页6 在辅存上 0 3 0 1 2 7 4 6 页内位移 0 656 1023 0 7 632 0 656 装入位 1 0 1 1 0 0 1 1 实页号 3 页面失效 3 1 页面失效 页面失效 2 0 页内位移 0 页面失效 1023 0 页面失效 页面失效 0 656 实地址 3072 无 4095 1024 无 无 2048 656 (1)此地址空间中共有多少个虚页? (2)当程序中遇到下列情况时

方式 取数 取数 取数 段 0 1 3 页 1 1 3 页内位移 1 10 2047 17

存数 存数 存数 转移至此 取数 取数 转移至此 0 2 1 1 0 2 3 1 1 0 3 2 0 0 4 2 14 100 50 5 60 写出由虚地址计算出实地址。说明哪个会发生段失效、页面或保护失效失效。 解答: (1)该地址空间中共有16个虚页。

(2)程序中遇到上表中各情况时,是否会发生段失效、页失效或保护失效及相应的主存实地址的情况如下表所示: 方式 取数 取数 取数 存数 存数 存数 段 页 页内位移 段失效 页失效 实页号 实地址 保护失效 0 1 1 1 3 3 0 1 2 1 1 0 1 10 2047 4 2 14 100 50 5 60 无 无 无 无 有 无 无 无 有 无 无 无 有 无 / 有 无 有 / 无 3 0 无 3 无 无 8 无 无 14 6145 10 无 6184 无 无 16484 无 无 28732 无 无 / 有 / / 无 / / 有 转移至此 1 3 取数 取数 0 2 2 0 转移至此 3 0 剖析:

(1)虚地址中段号有2位,页号有2位,也就是每个程序最多只能有2^2=4个段,每个段至多只能有2^2=4页,所以该地址空间中共有4*4=16个虚页。 (2)先从题意得知:

实地址:15位,其中实页号4位,页内位移11位 页大小为2K字(由页内位移得知)

6.设某程序包含5个虚页,其页地址为4,5,3,2,5,1,3,2,2,5,1,3。当使用LRU算法替换时,为获得最高命中率,至少应分配给该程序几个实页?其可能的最高命中率为多少?

18

7.采用页式管理的虚拟存储器,分时运行两道程序。其中,程序X为 DO 50 I=1,3 B(I)=A(I)-C(I) IF(B(I)·LE·0)GOTO 40 D(I)=2*C(I)-A(I) IF(D(I)·EQ·0)GOTO 50 40 E(I)=0 50 CONTINUE Data: A=(-4,+2,0) C=(-3,0,+1)

每个数组分别放在不同的页面中;而程序Y在运行过程中,其数组将依次用到程序空间的第3,5,4,2,5,3,1,3,2,5,1,3,1,5,2页。如果采用LRU算法,实存却只有8页位置可供存放数组之用。试问为这两首程序的数组分别分配多少个实页最为合适?为什么? 解答: 分别分配给程序X和Y的数组4个实页最为合适。

根据题意,程序X依次调用数组A,C,B,B,E, A,C,B,B,C,A,D,D,E, A,C,B,B,E中的数据。

设程序X中的数组A,B,C,D,E分别存放于程序空间的第1,2,3,4,5页,则程序的页地址流为:1,3,2,2,5, 1,3,2,2,3,1,4,4,5, 1,3,2,2,5。

分析使用LRU算法对程序X的页地址流进行堆栈处理的过程可知,分配给程序X的数组5个实页最为合适;分析使用LRU算法对程序Y的页地址流进行堆栈处理的过程可知,分配给程序Y的数组4个实页最为合适。 但实存只有8页位置可供存放数组之用,所以,分别分配给程序X和Y的数组4个实页。 note:

分时运行在微观上是串行的,就是说,分时运行时把时间划分为若干时间片,每个程序轮流占用时间片;在宏观上是并行的,就是说,每个程序在一个时间片内并不能运行完。总的来看,是同时运行的,所以两个程序分配的实页和不能大于8。

19

我不了解FORTRAN,找朋友把上面的源代码转成C了: main() {

int A[]={-4,2,0}; int C[]={-3,0,1}; for (i=0,i<>0) E[i]=0; }; }; }

8.设一个按位编址的虚拟存储器,它应可对应1K个任务,但在一段较长时间内,一般只有4个任务在使用,故用容量为4行的相联寄存器组硬件来缩短被变换的虚地址中的用户位位数;每个任务的程序空间最大可达4096页,每页为512个字节,实主存容量为2^20位;设快表用按地址访问存储器构成,行数为32,快表的地址是经散列形成;为减少散列冲突,配有两套独立相等比较电路。请设计该地址变换机构,内容包括: (1)画出其虚、实地址经快表变换之逻辑结构示意图; (2)相联寄存器组中每个寄存器的相联比较位数; (3)相联寄存器组中每个寄存器的总位数; (4)散列变换硬件的输入位数和输出位数; (5)每个相等比较器的位数; (6)快表的总容量(以位为单位)。 解:

(1)依题意得知:

虚地址为34位,其中用户号为10位(对应1K的任务)、虚页号12位(每个任务4096页)、页内位移12位(每页512字节,512字节=512*8=1024*4=2^12)

实地址为20位,其中实页号8位,页内位移12位(与虚页页内位移对应)

相联寄存器的作用:把10位的用户号转换为2位的ID(因为一般只有4个任务在使用),并把ID与虚地址的虚页号合并到快表中查实页号。

快表的作用:相当于页表,即虚页号对实页号的对应关系。但又有所简化(原因是如果用用户号和虚页号与实页号对应,前者就有22位,现改进后虚页号只有14位了)

20

(2)相联寄存器组中

每个寄存器的相联比较位数为10(与虚地址中的用户号宽度对应) (3)相联寄存器组中每个寄存器的总数为12(用户号宽度+ID宽度)

(4)散列变换硬件的输入位数为14位(虚页号宽度+相联寄存器中ID的宽度),输出位数为8位(与主存中的实页号宽度对应)

(5)每个相等比较器的位数=ID+用户虚页号nv'=2+12=14(位)。 (6)快表的总容量:32行*(14(输入位数)+8(输出位数))*2=32*22*2

9.考虑一个920个字的程序,其访问虚存的地址流为20,22,208,214,146,618,370,490,492,868,916,728。

(1)若页面大小为200字,主存容量为400字,采用FIFO替换算法,请按访存的各个时刻,写出其虚页地址流,计算主存的命中率;

(2)若页面大小为100字,再做一遍; (3)若页面大小为400字,再做一遍;

(4)由(1)、(2)、(3)的结果可得出什么结论?

(5)若把主存容量增加到800字,按第(1)小题再做一遍,又可得出什么结论? 解: (1)主存容量400字,页面大小200字,所以主存实页数为2;

把地址流转换为页地址流,以第一个虚地址流转换为页地址流为例说明:求模公式为:INT(地址/页面大小),就是把地址整除于页面大小,得INT(20/200)=0,下同,所以页地址流为:0,0,1,1,0,3,1,2,2,4,4,3 按FIFO算法得出替换过程为:0(调入),0(命中),1(调入),1(命中),0(命中),3(替换0,0比1先入队,所以被替换,下同),1(命中),2(替换1),2(命中),4(替换3),4(命中),3(替换2),所以总共命中6次。

故命中率H=6/12=50% (2)方法同(1)H=25%

21

(3)H=50%

(4)由以上结论可得,FIFO算法的条件下,当页面大小发生变化时,其命中率变化是:一开始随页面大小增大命中率(第一步与第二步比较),但当页面大小增到一定时,命中率不再增加(第一步与第三步比较)。 (5)命中率为58%,结论是如果分配给主存容量增加时可以搞高命中率。

10. 在一个页式二级虚拟存储器中,采用FIFO算法进行页面替换,发现命中率H太低,因此有下列建议: (1)增大辅存容量; (2)增大主存容量(页数); (3)FIFO改为LRU;

(4)FIFO改为LRU,并增大主存容量(页数); (5)FIFO改为LRU,并增大页面大小。 试分析上述各建议对命中率的影响情况。

解答: (1)增大辅存容量,对命中率H无影响。 (2)增大主存容量(页数),可普遍提高命中率。 (3)FIFO改为LRU,一般可提高命中率。

(4)FIFO改为LRU,并增大主存容量(页数),一般可使命中率有较大提高。

(5)FIFO改为LRU,并增大页面大小,如果原来页面很小,则会使命中率显著上升,如果原来页面很大,则会使命中率下降。

11.采用组相联映象的Cache存储器,Cache为1KB,要求Cache的每一块在一个主存周期内能从主存取得。主存模4交叉,每个分体宽为32位,总容量为256KB。用按地址访问存储器构成相联目录表实现主存地址到Cache地址的变换,并约定用4个外相等比较电路。请设计此相联目录表,求出该表之行数、总位数及每个比较电路的位数。

解答: 设Cache地址中的组内块号为s,相联目录表的行数是2^(13-s),总位数是(8+2s)*2^(15-s),每个比较电路的位数为8+s。 剖析:

在一个主存周期内主存能访问到的字节数为mW=4*32/8=16(Byte)。要求Cache的每一块在一个主存周期内能从主存取得,所以,Cache中每块的块内字数不能大于16Bytes。为了加速调块,一般让每块的大小等于在一个主存周期内主存能访问到的字数,即16Bytes。

设Cache地址中的组内块号为s,相联目录表的行数=Cache地址内的组数Q=Cache容量/(每组块数*每块大小)=1KB/(S*4*32)=2^13/(2^s*2^7)=2^(6-s)。

主存块数/Cache块数=256=2*8,所以,主存地址中的区号nd=8。每个比较电路的位数=nd+s'=nd+s=8+s。 相联目录表的总位数=表中子目录表的个数*每个子目录表的位数*相联目录表的行数=4*(nd+s'+s)*Q=4*(8+2s)*2^(6-s)=(8+2s)*2^(8-s)。 note:

若认为相等比较电路的个数=组内块数,则相联目录表的行数=2^4,每个比较电路的位数=10,相联目录表的

22

总位数=12*2^6。

12.有一个Cache存储器。主存共分8个块(0~7),Cache为4个块(0~3),采用组相联映象,组内块数为2块,替换算法为近期最少使用算法(LRU)。

(1)画出主存、Cache地址的各字段对应关系(标出位数)图; (2)画出主存、Cache空间块的映象对应关系示意图;

(3)对于如下主存块地址流:1,2,4,1,3,7,0,1,2,5,4,6,4,7,2,如主存中内容一开始未装入Cache中,请列出Cache中各块随时间的使用状况;

(4)对于(3),指出块失效又发生块争用的时刻; (5)对于(3),求出此期间Cache的命中率。

解答: (1)主存地址、Cache地址的各字段的位数及其对应关系如下图所示

(2)主存块、Cache块的映象对应关系如下图所示

23

(3)Cache中各块随时间的使用状况如下图所示。图中标*号的是候选替换块的块号,H:命中;R:替换;L:失效。

(4)发生块失效又发生

块争用的时刻有6、7、9、10、11、12、14、15。 (5)Cache的块命中率Hc=3/15=0.2。

剖析: 由于主存块、Cache块之间存在上述的映象对应关系,主存的第0、1、4、5块只能映象装入或替换物理Cache的第0、1块;主存的第2、3、6、7块只能映象装入或替换物理Cache的第2、3块。

13.采用组相联映象,LRU替换算法的Cache存储器,发现等效访问速度不高,为此建议: (1)增大主存容量;

(2)增大Cache的块数(块的大小不变); (3)增大组相联组的大小(块的大小不变);

(4)增大块的大小(组的大小和Cache总容量不变); (5)提高Cache本身器件的访问速度。

解答: (1)增大主存容量对Cache的访问时间ta基本不影响,从而对Cache的等效访问速度基本不影响。 (2)增大Cache的块数(块的大小不变)一般将使Cache的命中率Hc上升,从而使ta下降,从而提高Cache的等效访问速度。

(3)增大组相联组的大小(块的大小不变)一般将使Cache的命中率Hc上升,从而使ta下降,从而提高Cache的等效访问速度。

(4)增大块的大小(组的大小和Cache总容量不变)一般将使ta下降,从而提高Cache的等效访问速度。 (5)提高Cache本身器件的访问速度一般将缩短ta,从而提高Cache的等效访问速度。

14.你对Cache存储器的速度不满,于是申请到一批有限的经费,为能发挥其最大经济效益,有人建议你再买一些同样速度的Cache片子以扩充其容量;而另有人建议你干脆去买更高速的Cache片子将现有的低速Cache片子全部换掉。你认为哪种建议可取?你如何做决定?为什么? 解答:

Cache本身的速度与容量都会影响Cache存储器的等效访问速度。如果对Cache存储器的等效访问速度不满,需要改进的话,就要作具体分析,看看现在Cache存储器的等效访问速度是否已接近于Cache本身的速度。如果差得较远,说明Cache的命中率低,应从提高Cache命中率着手,包括调整组的大小、块的大小、替换算法以及增大Cache容量等。如果Cache存储器的等效访问速度已经非常接近于Cache本身的速度还不能满足需要,就应

24

该更换更高速的Cache片子。

25

第五章 重叠、流水和向量处理机

1.假设指令的解释分取指、分析与执行3步,每步的时间相应为t取指、t分析、t执行, (1)分别计算下列几种情况下,执行完100条指令所需时间的一般关系式: a.顺序方式;

b.仅“执行k”与“取指k+1”重叠;

c.仅“执行k”、“分析k+1”、“取指k+2”重叠;

(2)分别在t取指=t分析=2、t执行=1及t取指=t执行=5、t分析=2两种情况下,计算出上述各结果。 解:

(1)执行完100条指令所需时间: a.100*(t取指+t分析+t执行);

b.t取指+100*t分析+99*max(t取指+t执行)+t执行;

c.t取指+max(t取指+t分析)+98*max(t取指+t分析+t执行)+max(t分析+t执行)+t执行。 (2)在t取指=t分析=2、t执行=1的情况下,执行完100条指令所需时间: a.500 b.401 c.203

在t取指=t执行=5、t分析=2的情况下,执行完100条指令所需时间: a.1200 b.705 c.510

2.流水线有4个功能部件组成,每个功能部件的延迟时间为△t,当输入10个数据后间歇5△t又输入10个数据,如此周期性地工作,求此时流水线的吞吐率,并画出时空图。 解:

TP=10/14△t=5/7△t 时空图:

3.有一个浮点乘流水线如图5.35(a)所示,其乘积可直接返回输入端或暂存于相应缓冲寄存器中,画出实现A*B*C*D的时空图以及输入端的变化,并求出该流水线的吞吐率和效率;当流水线改为图5.35(b)形式实现同一计

26

算时,求该流水线的效率及吞吐率。

图5.35(a)

图5.35(b)

解:

按图5.35(a)组织的流水线时,TP=3/13△t;η=3/11。 实现A*B*C*D的时空图如图0504所示: 图0504

按图5.35(a)组织的流水线时,TP=3/13△t;η=3/11。 实现A*B*C*D的时空图如图0504所示: 图0505

27

剖析:

为了减少运算过程中的操作数相关,A*B*C*D应改为((A*B)*(C*D))进行运算。

4.一个4段的双输入端规格化浮点加法流水线,每段经过时间10ns,输出可直接返回输入或将结果暂存于相应缓冲器中,问最少需经多少时间能求(10)∑(i=1)Ai,并画出时空图。 答:

时空图如下:

求(10)∑(i=1)Ai需要

的最知时间是170ns。

剖析: 为了避免先写后读相关,使流水线性能尽可能高,需将(10)∑(i=1)Ai调整成((((A1+A2)+(A3+A4))+(A9+A10))+((A5+A6)+(A7+A8)))。

5.为提高流水线效率可采用哪两种主要途径来克服速度瓶颈?现有3段流水线,各段经过时间依次为△t、3△t、△t,

(1)分别计算在连续输入3条指令时和30条指令时的吞吐率和效率。

(2)按两种途径之一改进,画出你的流水线结构示意图,同时计算连续输入3条指令和30条指令时的吞吐率。 (3)通过对(1)、(2)两小题的计算比较可得出什么结论? 解答:

为提高流水线效率可采用瓶颈希再细分和瓶颈段并联两种主要途径来克服速度瓶颈。

28

(1)连续输入3条指令时的吞吐率TP3=3/11△t;效率η3=5/11。 连续输入30条指令时的吞吐率TP30=15/46△t;效率η3=25/46。 (2)改进后的流水线结构示意图大体如图5.35(a)和图5.35(b)。 连续输入3条指令时的吞吐率TP3=3/7△t;效率η3=3/7。 连续输入30条指令时的吞吐率TP30=15/17△t;效率η3=15/17。

(3)只有当连续输入流水线的指令足够多时,流水线的实际吞吐率和效率才会提高。

6.有一个双输入端的加-乘双功能静态流水线,由经过时间为△t、2△t、2△t,△t的1、2、3、4四个子过程构成。加按1->2->4连接,乘按1->3->4连接,流水线输出设有数据缓冲器,也可将数据直接返回输入。现要执行A*(B+C*(D+E*F))+G*H的运算,请调整计算顺序画出能获得尽量高的吞吐率的流水时空图,标出流水线入、出端数的变化情况,求出完成全部运算的时间及此期间流水线的效率。如对流水线瓶颈子过程再细分,最少只需多少时间可完成全部运算?若子过程3不能再细分,只能用并联方法改进,问流水线的效率为多少? 解:

根据题意,画出流水线吞吐率尽可能高的时空图如图0507: 图0507

在此期间的流水线效率η=(6*4△t+3*4△t)/4*24△t=3/8

如果将瓶颈子过程2和3均细分成两个子过程,则时空图如图0508所示: 图0508

由图可见,完成全部运算最少需要18△t。

若子过程3不能再细分,只能用并联方法改进,则则时空图如图0509所示: 图0509

29

这种情况下,流

水线效率η=(24△t+12△t)/6*18△t=1/3 剖析:

因为是双功能静态流水线,为了能有高的吞吐率,应减少流水线的功能切换次数。因此,应将算法调整成先作一连串的乘,然后再切换成一连串的加。原式展开成A*B+A*C*D+A*C*E*F+G*H,先进行乘法流水,为了减少因先写后读相关而等待的时间,应尽量安排对计算式子项数最多的乘法先进行操作,即先计算A*C*E*F,再计算A*C*D,...

7.现有长度为8的向量A和B,请分别画出下列4种结构的处理器上求点积A*B的时空图,并求完成全部结果的最少时钟拍数。设处理器中每个部件的输出均可直接送到任何部件的输入或存入缓冲器中去,其间的传送延时不计,指令和源操作数均能连续提供。

(1)处理器有一个乘法部件和一个加法部件,不能同时工作,部件内也只能以顺序方式工作,完成一次加法或乘法均需5拍;

(2)与(1)基本相同,只是乘法部件和加法部件可并行;

(3)处理器有一个乘、加法双功能静态流水线,乘、加法均由5个流水段构成,各段经过时间要1拍; (4)处理器有乘、加法两条流水线,可同时工作,各由5段构成,每段经过时间为1拍。 解答:

(1)在这种结构的处理器上求点积A*B的时空图如图0510所示: 图0510

完成全部运算最少需要

75拍。

(2)在这种结构的处理器上求点积A*B的时空图如图0511所示: 图0511

30

完成全部运算最少需要45拍。

(3)在这种结构的处理器上求点积A*B的时空图如图0512所示: 图0512

完成全部运算最少需要30拍。

(4)在这种结构的处理器上求点积A*B的时空图如图0513所示: 图0513

完成全部运算最少需

要26拍。 剖析:

向量A*B的点积为A*B=(8)∑(i=1)ai*bi=a1*b1+a2*b2+a3*b3+a4*b4+a5*b*+a6*b*+a7*b7+a8*b8,共需8次乘法和7次加法。

8.试总结IBM 360/91解决流水线控制的一般方法、途径和特点。 在流水线中设置相关直接通路解决局部相关; 用猜测法解决全局相关;

31

设置\向后8条\检查,加快短循环程序的处理; 对流水线的中断处理用\不精确断点法\。

9.在一个5段的流水线处理机上需经9拍才能完成一个任务,其预约表为:

s1 s2 s3 s4 s5 t0 ∨ t1 ∨ t2 ∨ t3 ∨ ∨ t4 ∨ t5 ∨ t6 ∨ ∨ t7 ∨ t8 ∨ 分别写出延迟禁止表F、冲突向量C;画出流水线状态转移图;求出最小平均延迟及流水线的最大吞吐率及其高度方案。按此流水高度方案输入6个任务,求实际吞吐率。 解:

根据预约表,延迟禁止表F={1,3,4,8} 冲突向量为C:10001101 状态转移图如图0514所示 图0514

各种方案的平均延迟表:

调度方案 平均延迟 (2,5) 3.5 (2,7) 4.5 5 5 (5,6) 5.5 (6) 6 (6,7) 6.5 (7) 7 最小延迟为3.5拍,其调度方案为(2,5)。

按调度方案(2,5)输入6个任务时的时空图如图0515所示: 图0515

32

实际吞吐率TP=6/25(任务/拍)。 剖析:

求延迟禁止表F={1,3,4,8},第一行间隔8,第二行间隔1,第三行间隔1,3,4,然后间隔都为1,合并。

求冲突向量,写一个8位两进制数,根据禁止表倒着写。

由于初始冲突向量的c2,c5,c6,c7为0,所以第二个任务可以距第一个任务2,5,6或7拍流入流水线。

10.求向量D=A*(B+C),各向量元素均为N,参照CRAY-1方式分解为3条向量指令: 1:V3<-存储器{访存取A送入V3寄存器组} 2:V2<-V0+V1{B+C->K} 3:V4<-V2+V3{K*A->D}

当采用下列3种方式工作时需多少拍才能得到全部结果? (1)1、2、3、串行执行;

(2)1和2并行执行完后,再执行3; (3)采用链接技术。

解: (1)每条指令所需拍数为:

指令1:1(启动访存)+6(访存)+1(存V3)+N-1(第一个分量后每隔1拍出一个结果)=7+N 指令2:1(送浮加部件)+6(浮加)+1(存V2)+N-1=7+N 指令3:1(送浮乘部件)+7(浮乘)+1(存V4)+N-1=8+N 串行:7+N+7+N+8+N=22+3N

(2)指令1和2并行执行:1(启动访存,送浮加部件)+6(访存,浮加)+1(存V3,存V2)+N-1=7+N 1,2并行:7+N+8+N=15+2N (3)1+6+1+1++7+1+N-1=16+N

11.设向量长度为64,以CRAY-1机上所用浮点功能部件的执行时间分别为:相加6拍,相乘7拍,求倒数近似值14拍;从存储器读数6拍,打入寄存器及启动功能部件各1拍。问下列各指令组内的哪些指令可以链接?哪些指令不能链接?不能链接的原因是什么?分别计算出各指令组全部完成所需的拍数。

(1) (2) 33

(3) (4)

V0←存储器 V1←V2+V3 V4←V5*V6 V2←V0*V1 V3←存储器 V4←V2+V3 V0←存储器 V2←V0*V1 V3←V2+V0 V5←V3+V4 V0←存储器 V1←1/V0 V3←V1*V2 V5←V3+V4 解:

(1)3条向量指令之间既没有发生源Vi冲突,也没有Vi的先写后读相关,又不存在功能部件的使用冲突,所以这3条向量指令可以同时并行流水。max{(1+6(访存)+1+64-1),(1+6(浮加)+1+64-1),(1+(7浮乘)+1+64-1)}=72拍。所以向量指令组全部完成需要72(拍)。

(2)3条向量指令之间没有功能部件的使用冲突,但是在第1、2两条向量指令与第3条向量指令之间有V2及V3的先写后读相关。只要让第1条向量指令较第2条向量指令提前1拍启动,则第1,2两条向量指令的第1个结果元素就可以被同时链接到第3条向量指令中。max{(1+(7浮乘)+1+64-1),(1+6(访存)+1+64-1)}+(1+6(浮加)+1+64-1)=80(拍)。

(3)第1条向量指令与第2条向量指令之间有V0的先写后读相关,两者可以链接。第3条向量指令与第2条向量指令之间有源向量寄存器V0的冲突,它们之间只能串行。第3条向量指令与第4条向量指令之间有加法功能部件的使用冲突,它们之间也只能串行。(1+6(访存)+1+1+(7浮乘)+1+64-1)+(1+6(访存)+1+64-1)(1+6(浮加)+1+64-1)=222(拍)。

(4)4条向量指令均依次有Vi的先写后读相关,但无源Vi冲突,也无功能部件的使用冲突,所以,这4条向量指令可以全部链接在一直,进行流水。(1+6(访存)+1)+(1+14(求倒数)+1)+(1+(7浮乘)+1)+(1+6(浮加)+1)+64-1=104拍。

12.设指令由取指、分析、执行三个子部件组成。每个子部件经过时间为△t,连续执行12条指令。请分别画出在常规标量流水处理机及度m均为4的超标量处理机、超长指令字处理机、超流水线处理机上工作的时空图,分别计算它们相对常规标量流水处理机的加速比Sp。 解:

常规标量处理机的时空图:

度m为4的超标量处理机的时空图:

34

其相对于常规标量流水处理机的加速比Sp=14△t/5△t=2.8

度m为4的超长指令字处理机的时空图:

其相对于常规标量流水处理机的加速比Sp=14△t/5△t=2.8

度m为4的超流水线处理机的时空图:

35

其相对于常规标量流水处理机的加速比Sp=14△t/5.75△t=56/23≈2.8

36

第六章 阵列处理机

1.画出16台处理器仿ILLIAC Ⅳ 的模式进行互连的互连结构图,列出PE0分别只经一步、二步和三步传送能将信息传送到的各处理器号。

答: 6台处理器仿ILLIAC Ⅳ 处理单元的互连结构如图所示:

图中第个PU中包含PE、PEM和MLU。

PE0(PU0)经一步可将信息传送至PU1、PU4、PU12、PU15。 PE0(PU0)至少需经二步才能将信息传送至PU2、PU3、PU5、PU8、PU11、PU13、PU14。

PE0(PU0)至少需经三步步才能将信息传送至PU6、PU7、PU9、PU10。

2.编号为0、1、...、15的16个处理器,用单级互连网互连。当互连函数分别为 (1)Cube3 (2)PM2+3 (3)PM2-0 (4)Shuffle

(5)Shuffle(Shuffle)

时,第13号处理器各连至哪一个处理器? 解答:

(1)5号处理器 (2)5号处理器 (3)12号处理器 (4)11号处理器 (5)7号处理器 剖析:

由题意知,有16个处理器,即N=16,n=log2(N)=log2(16)=4。 Cube3(13)=Cube3(1101)=0101=5 PM2+3(13)=(13+2^3)mod16=5 PM2-0(13)=(13-2^0)mod16=12

Shuffle(13)=Shuffle(1101)=1011=11

37

Shuffle(Shuffle)=Shuffle(11)=Shuffle(1011)=0111=7

3.编号分别为0、1、2、...、F的16个处理器之间要求按下列配对通信:(B、1),(8、2),(7、D),(6、C),(E、4),(A、0),(9、3),(5、F)。试选择所用互连网络类型、控制方式,并画出该互连网络的拓补结构和各级交换开关状态图。 解答:

采用4级立方体网络,级控制。该互连网络的拓补结构和各级交换开关状态图如下图所示:

剖析:

从处理器号的配对传送关系可以转成处理器二进制编号的配对传送关系: (B,1) (1011,0001) (8,2) (1000,0010) (7,D) (0111,1101) (6,C) (0110,1100) (E,4) (1110,0100) (A,0) (1010,0000)

38

(9,3) (1001,0011) (5,F) (0101,1111)

不难得出其一般规律是:二进制编号为P3P2P1P0的处理器与( ̄P3)P2( ̄P1)P0的处理器配对交换数据。由于实现的都是交换函数的功能,采用成本最低的级控制多级立方体互联网络就可以实现。

N=16的多级立方体网络,由n=log2(16)=4组成。每一级均使用N/2=8个二功能交换开关。多级网络各级的级号由入端到出端依次为0、1、2、3.第i级的每个交换单元的配对用的是Cubei(P3...Pi...P0)=P3...( ̄Pi)...P0函数。根据本题的要求,应当让第1、3级的各交换单元处于“交换”状态,第0、2级的各交换单元处于“直连”状态。

4.画出编号为0、1、...、F共16个处理器之间实现多级立方体互连的互连网络,采用级控制信号为1100(从右至左分别控制第0级至第3级)时,9号处理器连向哪个处理器?

解答: 多级立方体互连网络的图和第3题的图基本一致,不同之处在于,第0、1级的开关状态为直连,第2、3级的开关状态为交换。

9号处理器在经过0级和1级交换开关后,连向哪第10个处理器;在经过2级交换开关后,连向第4个处理器;在经过3级交换开关后,连向第9个处理器。

5.对于采用级控制的三级立方体网络,当第i级(0<=i<=2)为直连状态时,不能实现哪些结点之间的通信?为什么?反之,当第i级为交换状态呢?

解答: 当第i级为直连状态时,不能实现入、出两端的处理器二进制编码的编号中,第Pi位取反的处理器之间的连接。例如,第0级为直连状态时,入端号为××0的处理器仅能与出端号为××0的处理器进行数据传送,不能与出端号为××1的处理器进行数据传送。因为交换开关的直连状态被定义为i入连i出,j入连j出,所以,反映出实现互连的入、出端号的二进制码中的Pi位是不能变反的,其它的各位可以不变,也可以变反。 当第i级为交换状态时,不能实现入、出两端的处理器二进制编码的编号中,第Pi位相同的处理器之间的连接。例如,第0级为交换状态时,入端号为××0的处理器仅能与出端号为××1的处理器进行数据传送,不能与出端号为××0的处理器进行数据传送。因为交换开关的直连状态被定义为i入连j出,j入连i出,所以,反映出实现互连的入、出端号的二进制码中的Pi位必须变反,其它的各位可以不变,也可以变反。

6.假定8*8矩阵A=(aij),顺序存放在存储器的64个单元中,用什么机关报单级互连网络可实现对该矩阵的转置变换?总共需要传送多少步?

解答: 采用单级混洗互连网络可实现对8*8矩阵的转置变换,共需传送3步。 剖析:

8*8矩阵中任一元素aij,它在存储器中所占的位置是i*8+j(即i*2^3+j)。每个元素的行坐标和列坐标均用3位表示,设b5b4b3为行下标的二进制编号,b2b1b0为列下标的二进制编号,经过3次全混洗后,元素下标

39

号b5b4b3b2b1b0就变成了b2b1b0b5b4b3,即行下标的二进制编号改成了b2b1b0,列下标的二进制编号改成了b5b4b3,这样,就实现了矩阵的行列转置。

7.画出0~7号共8个处理器的三级混洗交换网络,在该图上实现将6号处理器数据播送给0~4号,同时将3号处理器数据播送给其余3个处理器时的各有关交换开关的控制状态。 解答:

8个处理器的三级混洗交换网络及其交换开关控制状态设置如下图所示:

8.并行处理机有16个处理器要实现相当于先4组4元交换,然后是2组8元交换,再次是1组16元交换的交换函数功能,请写出此时各处理器之间所实现的互连函数的一般式,画出相应多级网络的拓扑结构图,标出各组交换形状的状态。 解答:

互连函数的一般式为:Cubei(P3P2P1P0)=( ̄P3P2 ̄P1 ̄P0)。

多级立方体互连网络的拓扑结构图和第3题的图基本一致,不同之处在于,第0、1、3级的开关状态为直连,第2级的开关状态为交换。

9.具有N=2^n个输入端的Omega网络,采用单元控制。 (1)N个输入总共可有多少种不同的排列;

(2)该Omega网络通过一次可以实现的置换可有多少种是不同的; (3)若N=8,计算出一次通过能实现的置换数占全部排列数的百分比。 解答:

(1)N个输入总共可有N!种不同的排列。

(2)该Omega网络通过一次可以实现的置换可有2^((N/2)log2(N))=N^(N/2)种是不同的。

(3)若N=8,通过Omega网络一次可以实现的不重复置换有8^4=4096种;8个输入总共可实现的不重复排列

40

有8!=40320种。所以,一次通过能实现的置换数占全部排列数的百分比为4096/40320*100%≈10.16%

10.画出N=8的立方体全排列多级网络,标出采用单元控制,实现0→3,1→7,2→4,3→0,4→2,5→6,6→1,7→5的同时传送时的各交换开关的状态;说明为什么不会发生阻塞。 解答:

实现N=8的立方体全排列多级网络及交换形状状态如下图所示

在一到的映射时,交换开关的状态组合有许多冗余,所以不会发生阻塞。

41

11.在16台PE的并行处理机上,要对存放在M个分体并行存储器中的16*16二维数组实现行、列、主对角线、次对角线上各元素均无冲突访问,要求M至少为多少?此时数组在存储器中应如何存放?写出其一般规则。同时,证明这样存放同时也可以无冲突访问该二维数组中任意4*4子阵的各元素。 解答:

M至少为17。

数组A中的任意一个元素Aab的存放规则:体号地址j=(4a+b)mod17,体内地址i=a,

按照对应关系将各数组元素存放到m=17的并行存储器中,如下图。由图可见,这样存放同时也可以无冲突访问该二维数组中任意4*4子阵的各元素。

16*16二维数组在并行存储器中存放的例子(m=17,n=16)

体内存储体号j 地址i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a00 a0a01a01a01a01a01a01a01 a03 a04 a05 a06 a07 a08 a09 0 2 0 1 2 3 4 5 a11a111 a111 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 13 4 15 0 2 a2a21a2a21a21a21a212 9 0 11 2 3 4 5 a33 a3a31a31a31a31a31a31a36 a38 a39 5 7 0 1 2 3 4 5 a30 a31 a32 a33 a34 a20 a21 a22 a23 a24 a25 a26 a27 a28 a1a11a1a44 a4a41a41a41a41a41a41a42 a44 a45 a46 a47 a48 a49 1 3 0 1 2 3 4 5 a40 a51a51a51a515 a50 a51 a52 a53 a54 a55 a56 a57 a58 a59 14 5 0 1 2 3 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 剖析:

设16*16的二维数组在并行存储器中同一列两个相邻元素地址错开的距离为δ1,同一行两个相邻元素地址错开的距离为δ2,当m取成2^2P+1时,实现无冲突访问的充分条件是δ1=2^P,δ2=1。 对于这道题来说,M=17=2^(2*2)+1,所以P=2。δ1=2^P=4,δ2=1。

数组存放的规则:体号地址j=(a*δ1+b*δ2+c)mod m(c为A00所在体号地址),i=a。

42

a5a51

第七章 多处理机

1.多处理机在结构、程序并行性、算法、进程同步、资源分配和调试上与并行处理机有什么差别? 答: 多处理机与并行处理机的主要差别是并行性的等级不同。 (1)结构灵活性。多处理机制结构灵活性高于并行处理机。

(2)程序并行性。并行处理机是操作级并行,并行性仅存在于指令内部,识别比较容易,由程序员掌握程序并行性的开发;多处理是指令、任务、作业并行,并行性主要存在于指令外部,另外还存在于指令内部,识别比较困难,必须利用多种途径开发程序的并行性。

(3)并行任务派生。并行处理机工作能否并行工作由指令决定,多处理机必须有专门指令指明程序能否并行执行,派生的任务数是动态变化的。

(4)进程同步。并行处理机的进程同步是自然的,而多处理机必须采取同步措施。 (5)资源分配和任务调度。多处理机的资源分配和任务调度比并行处理机复杂得多。

43

2.多处理机有哪些基本特点?发展这种系统的主要目的可能有哪些?多处理着重解决哪些技术问题? 答: ○多处理机的基本特点:

多处理机具有两台以上的处理机,在操作系统控制下通过共享的主存或输入/输出子系统或高速通讯网络进行通讯.结构上多个处理机用多个指令部件分别控制,通过机间互连网络通讯;算法上不只限于处理向量数组,还要实现更多通用算法中的并行;系统管理上要更多地依靠软件手段,有效解决资源分配和管理,特别是任务分配,处理机调度,进程的同步和通讯等问题. ○使用多处理机的目的:

一是用多台处理进行多任务处理协同求解一个大而复杂的问题来提高速度,二是依靠冗余的处理机及其重组来提高系统的可靠性,适应性和可用性. ○多处理着重要解决的技术问题:

(1)硬件结构上,如何解决好处理机、存储器模块及I/O子系统间的互连。 (2)如何最大限度开发系统的并行性,以实现多处理要各级的全面并行。 (3)如何选择任务和子任务的大小,即任务的粒度,使并行度高,辅助开销小。 (4)如何协调好多处理机中各并行执行任务和进程间的同步问题。

(5)如何将任务分配到多处理机上,解决好处理机调度、任务调度、任务调度和资源分配,防止死锁。 (6)一旦某个处理发生故障,如何对系统进行重新组织,而不使其瘫痪。

(7)多处理机机数增多后,如何能给编程者提供良好的编程环境,减轻程序的复杂性。

3.分别画出4*9的一级交叉开关以及用两级2×3的交叉开关组成的4×9的Delta网络,比较一下交叉开关设备量的多少? 解答:

4*9的一级交叉开关如下图所示:

两级2×3的交叉开关组成的4×9的Delta网络如下图所示:

44

2^2*3^3有Delta网络由5个2*3的交叉开关组成,其交叉开关的结点数由一级网络的36个减少到现在Delta网络中的2*3*5=30个。

剖析: 第一级有2个2*3的交叉开关,第2级有3个2*3的交叉开关,级间采用混洗拓扑。

4.说明4*4交叉开关组成的两级16*16交叉开关网络虽节省了设备,但它是一个阻塞式网络。 答:

16*16交叉开关网络需要256个开关结点,每个结点中选1的多路裁决和选择电路。采用4×4的交叉开关构成的二级交叉开关网络,共需要16×8=128个开关结点,每个结点只需要4中选1的多路裁决和选择电路,节省了设备。但它是一个阻塞式网络。因为第1级每4个输入端中只能有一个连到第2级的一个输入端,而第2级的这个输入端本可以对应4个输出端的某一个。这就意味着,当第1级4个输入端中的某一个连到了最终的某个输出端时,第1级同组内其它3个输入端由于有路径冲突,就不能同时将信息传送到第2级输出相应的另外3个输出端上,而采用16×16的一级交叉开关就不存在这种问题。

5.由霍纳法则给定的表达式如下:E=a(b+c(d+e(f+gh))) 利用减少树高的办法来加速运算,要求 (1)画出树形流程图;

(2)确定Tp、P、Sp、Ep诸值。 解答:

(1)对于原式,单处理机串行运算树形流程图如左下图所示,多处理机并行运算树形流程图如右下图所示。

45

(2)P台处理机运算的级数Tp=4。 所需处理机数目P=3。

加速比Sp=顺序运算的级数T1/P台处理机运算的级数Tp=7/4。 效率Ep=加速比Sp/所需处理机数目P=7/12。

6、求A1、A2 ... ... A8的累加和,有如下程序: S1 A1=A1+A2 S2 A3=A3+A4 S3 A5=A5+A6 S4 A7=A7+A8 S5 A1=A1+A3 S6 A5=A5+A7 S7 A1=A1+A5

(1)写出用FORK、JOIN语句表示其并行任务的派生和汇合关系的程序,以假想使此程序能在多处理机上运行。 (2)画出该程序在有3台处理机制系统上运行的时间关系示意图。 (3)画出该程序在有2台处理机制系统上运行的时间关系示意图。 解答:

(1)用FORK、JOIN语句表示其并行任务的派生和汇合关系的程序如下。 FORK 20 FORK 30 FORK 40 10 A1=A1+A2 JOIN 4 GOTO 80 20 A3=A3+A4 JOIN 4 GOTO 80 30 A5=A5+A6 JOIN 4 GOTO 80 40 A7=A7+A8 JOIN 4 80 FORK 60 50 A1=A1+A3

46

JOIN 2 GOTO 70 60 A5=A5+A7 JOIN 2 70 A1=A1+A5

(2)在有3台处理机制多处理机系统上运行的资源时间图如下图所示。假设标号为50和60的两个并发进程中,标号为60的进程最后完成。

(3)在有2台处理机

制多处理机系统上运行的资源时间图如下图所示。假设标号为50和60的两个并发进程中,标号为50的进程最后完成。

剖析:

GOTO 70语句的问题关键是70语句是在50语句还是60语句所在CPU上执行的。也就是说50语句和60语句谁先执行完。

7、若有如下程序: V=U/B W=A*U X=W-V Y=W*U Z=X/Y

47

试用FORK、JOIN语句改写成可在多处理机上并行执行的程序。假设现有两台处理机,且除法速度最慢,加、减法速度最快,请画出该程序运行时的资源时间图。 解答:

用FORK、JOIN语句改写成可在多处理机上并行执行的程序如下: S1 U=A+B FORK S3 S2 V=U/B JOIN 2 GOTO S4' S3 W=A*U JOIN 2 S4' FORK S5 S4 X=W-V JOIN 2 GOTO S6 S5 Y=W*U JOIN 2 S6 Z=X/Y

该程序在有2台处理机的多处理机系统上运行时的资源时间图如下所示:

8.分别确定下列各计算机系统中,计算点积S=(8)∑(i=1)ai*bi所需的时间(尽可能给出时空图示意): (1)通用PE的串行SISD系统;

(2)具有一个加法器和乘法器的多功能并行流水SISD系统; (3)有8个处理器的SIMD系统; (4)有8个处理器的MIMD系统。

设访存取指和取数的时间可以忽略不计;加与乘分别需要2拍和4拍;在SIMD和MIMD系统中处理器(机)之间每进行一次数据传送的时间为1拍,而在SISD的串行或流水系统中都可忽略;在SIMD系统中PE之间采用线性环形

48

互连拓扑,即每个PE与其左右两个相邻的PE直接相连,而在MIMD中每个PE都可以和其它PE有直接的通路。 解答:

(1)利用通用PE的串行SISD系统计算点积所需时间为46拍,时空图如下图所示:

(2)利用具有一个加法器和乘法器的多功能并行流水SISD系统计算点积所需时间为15拍,时空图如下图所示:

(3)利用有8个处理器的SIMD系统计算点积所需时间为14拍,时空图如下图所示:

(4)利用有8个处理器的MIMD系统计算点积所需时间为14拍,时空图如下图所示:

49