计算机系统结构复习要点1

更新时间:2023-08-18 20:33:01 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

sdg

计算机系统结构复习要点

第一章 计算机系统结构的基本概念 1、 计算机系统的层次结构

第1级:微程序机器;第2级:机器语言;第3级:操作系统虚拟机;第4级:汇编语言虚拟机;第5级:高级语言虚拟机;第6级:应用语言虚拟机。

2、 计算机组成指的是计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。

它着眼于物理机器级内各事件的排序方式与控制方式、各部件的功能以及各部件之间的联系。

3、 计算机实现指的是计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、

插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。它着眼于器件技术和微组装技术,其中器件技术在实现技术中起主导作用。

4、 CPU性能公式 CPU时间=IC×CPI×时钟周期时间

其中,IC为所执行的指令条数;CPI为每条指令的平均时钟周期数 例1.3 考虑条件分支指令的两种不同设计方法:

(1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。 (2)CPUB:在分支指令中包括比较过程。

在这两种CPU中,条件分支指令都占用2个时钟周期,而所有其他指令占用1个时钟周期。对于CPUA,执行的指令中分支指令占20%;由于每条分支指令之前都需要有比较指令,因此比较指令也占20%。由于CPUA在分支时不需要比较,因此CPUB的时钟周期时间是CPUA的1.25倍。问:哪一个CPU更快?如果CPUB的时钟周期时间只是CPUA的1.1倍,哪一个CPU更快呢?

解 我们不考虑所有系统问题,所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%,剩下的指令占用1个时钟周期。所以 CPIA = 0.2 × 2 + 0.80 × 1 = 1.2

则CPUA性能为 总CPU时间A = ICA × 1.2 ×时钟周期A 根据假设,有 时钟周期B = 1.25 × 时钟周期A

在CPUB中没有独立的比较指令,所以CPUB的程序量为CPUA80%,分支指令的比例为

20%/80% = 25% 这些分支指令占用2个时钟周期,而剩下的75%的指令占用1个时钟周期,因此 CPIB = 0.25 × 2 + 0.75 × 1 = 1.25 因为CPUB不执行比较,故 ICB = 0.8 × ICA 因此CPUB性能为

总CPU时间B = ICB × CPIB × 时钟周期B

= 0.8 ×ICA × 1.25 ×(1.25 ×时钟周期A) = 1.25 ×ICA ×时钟周期A

在这些假设之下,尽管CPUB执行指令条数较少,CPUA因为有着更短的时钟周期,所以比CPUB快。 如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则 时钟周期B = 1.10 ×时钟周期A CPUB的性能为 总CPU时间B = ICB ×CPIB ×时钟周期B

= 0.8 ×ICA × 1.25 ×(1.10 ×时钟周期A) = 1.10 × ICA ×时钟周期A 因此CPUB由于执行更少指令条数,比CPUA运行更快。 5、 程序的局部性原理

程序的局部性原理是常用的程序属性。它是指程序执行时所访问的存储器地址分布不是随机的,而是相对的簇聚。

局部性包括时间局部性和空间局部性。时间局部性是指,程序即将用到的信息很可能就是目前正使用的信息;程序的空间局部性是指,程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。 第二章 计算机指令集结构

1、 对指令集的基本要求:完整性、规整性、高效率和兼容性。 2、 CISC指令集存在的问题:

(1) 各种指令的使用频度相差悬殊,许多指令很少用到。 (2) 指令集庞大,指令条数多,许多指令的功能有很复杂。 (3) 许多指令由于操作繁杂,其CPI值比较大,执行速度慢。采用复杂指令可能使整个程序的执行时间增加。

sdg

(4) 由于指令功能复杂,规整性不好,不利于采用流水线提高性能。 3、 设计RISC机器一般遵循的原则:

(1) 指令条数少而简单。

(2) 采用简单而又统一的指令格式,并减少寻址方式。

(3) 指令的执行在单个机器周期内完成(采用流水线机制后)。

(4) 只有load和store指令才能访问存储器,其他指令的操作都是在寄存器之间进行。 (5) 大多数指令都采用硬连逻辑来实现。

(6) 强调优化编译器的作用,为高级语言程序生成优化的代码。 (7) 充分利用流水线技术来提高性能。 第三章 流水线技术

1、 衡量流水线性能的主要指标有吞吐率、加速比和效率。

(1) 吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量

◎各段时间均相等的流水线:

实际吞吐率:

最大吞吐率:

◎各段时间不完全相等的流水线:

实际吞吐率:

最大吞吐率:

(2) 效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。 ◎各段时间均相等的流水线: E=TP△t

◎各段时间不完全相等的流水线:

2、 解决流水线瓶颈问题的常用方法:细分瓶颈段、重复设置瓶颈段。 3、 习题3.12 有一条流水线如下所示:

入50ns

100ns

(1) 求连续输入10条指令的情况下,该流水线的实际吞吐率和效率;

(2) 该流水线的“瓶颈”在哪一段?请采用两种不同的措施消除此“瓶颈”;对于所给出的两种新的流水线,连

续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1)实际吞吐率 TP

n

t

i 1

k

i

(

n 1) tmax

10

0.045

400 9 200

sdg

效率 E

n ti

i 1

k

k[ ti (n 1) tmax]

i 1

k

10 400

0.45

4 (400 9 200)

(2)瓶颈在第3段和第4段 I、细分瓶颈段

50ns

50ns

50ns

吞吐率 TP

n

0.012

(k n 1) t

n

0.59

k n 1

效率 E TP t

II、重复设置瓶颈段

入出

吞吐率 TP

n

0.012

(k n 1) t

n

0.59

k n 1

效率 E TP t

注意:须画图

习题3.13 有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。如果每段经过一次所需要的时间都是Δt,问:

(1) 当流水线的输入端连续的每Δt时间输入一个任务时,该流水线会发生什么情况?

(2) 此流水线的最大吞吐率为多少?如果每2Δt输入一个任务,连续处理10个任务时的实际吞吐率和效

率是多少?

(3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个任务时,其吞吐率提高多少? 解 (1)根据条件,其时空图如下:

1 2 t

10个任务需要在5 t 2 t 9 23 t中完成,

10

因此 实际吞吐率TP

23 t

(2)最大吞吐率 TPmax

sdg

效率 E TP t 0.54 画图

(3)若要提高吞吐率,主要解决在第3段中出现的瓶颈问题,所以可利用细分瓶颈段:

则吞吐率可达到 TP

'

n10

(k n 1) t14 t

TP' TP

0.39 所以,吞吐率提高了

TP

4、 相关是指两条指令间的依赖关系。相关的三种类型:数据相关(具有传递性),名相关,控制相关。 5、 流水线冲突有三种类型:结构冲突,数据冲突,控制冲突。

解决方法:

结构冲突:插入暂停周期和设置相互独立的指令存储器和数据存储器或设置相互独立的指令Cache和数据Cache。

数据冲突:定向技术,停顿,依靠编译器 控制冲突:

6、在流水线处理机中,设置向量数据表示和相应的向量指令,称为向量处理机。

不具有向量数据表示和相应的向量指令的流水线处理机,称为标量处理机。

提高向量处理机性能的方法:设置多个功能部件,链接技术,分段开采技术,采用多处理机系统

7、习题3.18 在CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应部件的执行时间),如果向量寄存器和功能部件之间的数据传送器需要1拍,试求此链接流水线的通过时间是多少拍?如果向量长度为64,则需要多少拍才能得到全部结果?

V0<—存储器 (从存储器中读数:7拍) V2<—V0+V1 (向量加:3拍) V3<—V2<A3 (按A3左移:4拍) V5<—V3^V4 (向量逻辑乘:2拍) 解 向量指令的重叠并行执行的示意图:

则根据条件,设向量长度为N,则此链接流水线的通过时间为

[(7 1) N 1] [(1 3 1) N 1] [(1 4 1) N 1] [(1 2 1) N 1] 4N 27 (拍)

若向量长度为64,则此链接流水线的通过时间为 4X64+27=283 (拍) 第4章 指令级并行 1、记分牌

sdg

图 采用记分牌技术的DLX处理器的基本结构

记分牌技术的目标:

在资源充足时,尽可能早地执行没有数据阻塞的指令,达到每个时钟周期执行一条指令。

例:LD F6 , 34(R2)

LD F2 , 45(R3) MULTD F0 , F2 , F4 SUBD F8 , F6 , F2 DIVD F10 , F0 , F6 ADDD F6 , F8 , F2

代码段和记分牌信息的起始点状态:

再例:假设浮点流水线中执行的延迟如下: 加法需2个时钟周期 乘法需10个时钟周期

sdg

除法需40个时钟周期

代码段和记分牌信息的起始点状态如上图所示。分别给出MULTD和DIVD准备写结果之前的记分牌状态。 解: 在分析记分牌状态之前,首先需要分析指令之间存在的相关性,因为相关性会影响指令进入记分牌DLX流水线的相应段。

(1) 第二个LD指令到MULD和SUBD、MULTD到DIVD之间以及SUBD到ADDD之间存在着先写后读相关; (2) DIVD和ADDD之间存在着先读后写相关;

(3) ADDD和SUBD指令关于浮点加法部件还存在着结构相关。

图4.3和图4.4分别给出了MULTD指令和DIVD指令将要写结果时记分牌的状态。 图4.3 程序段执行到MULTD将要写结果时记分牌的状态

图4.4 程序段执行到DIVD将要写结果时记分牌的状态

sdg

分析记分牌是如何控制指令执行的:

操作在记分牌流水线中前进时,记分牌必须记录与操作有关的信息,如寄存器号等。 约定:

Fj(FU) ‘S1’ :将寄存器S1的名字送入Fj(FU) FU : 指令使用的功能部件 D : 目的寄存器的名字

S1和S2: 源操作数寄存器的名字, Op: 进行的操作 Fj(FU): 功能部件FU的Fj域 result(D):结果寄存器状态表中对应于寄存器D的内容,为产生寄存器D中结果的功能部件名

流出(IS)

(1) 进入条件

not Busy(FU) and not result(’D’); //判断结构阻塞和写后写 (2) 计分牌记录内容 Busy(FU)←yes; OP(FU)←Op; Fi(FU)←’D’; Fj(FU)←’S1’; Fk(FU)←’S2’;

Qj←result(’S1’); //处理’S1’的FU

Qk←result(’S2’); //处理’S2’的FU Rj←not Qj; //Rj是否可用?

Rk←not Qk; //Rk是否可用?

result(’D’)←FU; //’D’被FU用作目的寄存器 读操作数(RO)

(1)进入条件 Rj·Rk; //解决先写后读,两个源操作数须同时就绪

(2)计分牌记录内容

Rj←no; //已经读走了就绪的数据Rj Rk←no; //已经读走了就绪的数据Rk Qj←0; //不再等待其它FU的计算结果 Qk←0;

执行(EX)

(1)结束条件 功能部件操作结束

写结果(WR)

(1)进入条件

sdg

f((Fj(f) Fi(FU) or Rj(f)=no)

and (Fk(f) Fi(FU) or Rk(f)=no)); //检查是否存在先读后写 (2)计分牌记录内容

f(if Qj(f)=FU then Rj(f)

←yes); //有等结果的指令,则数据可用 f(if Qk(f)=FU then Rk(f)←yes);

result(Fi(FU))←0; //没有FU使用寄存器Fi为目的寄存器 busy(FU)=no //释放FU 2、 Tomasolu算法

核心思想:记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减少到最小;通过寄存器换名来消除WAR冲突和WAW冲突

基本结构:

例4.1 对于下述指令序列,给出当第一条指令完成并写入结果时,Tomasulo算法所用的各信息表中的内容。 L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F2,F6 DIV.D F10,F0,F6 ADD.D F6,F8,F2

解:当采用Tomasulo算法时,在上述给定的时刻,保留站、load缓冲器以及寄存器状态表中的内容

sdg

例4.2 对于例4.1中的代码,假设各种操作的延迟为: load:1个时钟周期 加法:2个时钟周期 乘法:10个时钟周期 除法:40个时钟周期

给出MUL.D指令准备写结果时各状态表的内容。

解 MUL.D指令准备写结果时各状态表的内容如下图所示。

sdg

第五章 存储层次

1、 常见的两种层次结构:

“Cache—主存”层次:弥补主存速度不足; “主存—辅存”层次:弥补主存容量不足。 2、 平均访存时间=命中时间+失效率X失效开销

3、 Cache的映像规则:全相联映像,直接映像,组相联映像 4、 Cache性能分析;

习题5.10 假设对指令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的失效率更低?两种情况下平均访存时间各是多少?

解 根据条件分离Cache的总体失效率为:(75% 0.39%) (25% 4.82%) 1.50%

已知容量为64KB的混合Cache的失效率为1.35%,所以混合Cache的失效率略低。 平均访存时间分为指令访问和数据访问两部分,即

平均访存时间=指令所占的百分比X(指令命中时间+指令失效率X失效开销)+

数据所占的百分比X(指令命中时间+数据失效率X失效开销)

所以,两种结构的平均访存时间分别为:

平均访存时间分离=75%X(1+0.39%X50)+25%X(1+4.82%X50)=1.75 平均访存时间混合=75%X(1+1.35%X50)+25%X(1+1+1.35%X50)=1.93

因此,尽管分离Cache的实际失效率比混合Cache的高,但其平均访存时间反而较低。分离Cache提供了两个端口,消除了结构冲突。

习题5.11 给定以下假设,试计算直接映像Cache和2路组相联映像Cache的平均访问时间及CPU 性能。由计算结果能得出什么结论?

(1) 理想Cache情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.2次。 (2) 两者Cache容量均为64KB,块大小都是32B。

(3) 组相联映像Cache中的多路选择器使CPU的时钟周期增加了10%。 (4) 这两种Cache的失效开销都是80ns。 (5) 命中时间为1个时钟周期。

(6) 64KB直接映像Cache的失效率为1.4%,64KB2路组相联映像Cache的失效率为1.0%。 解: 平均访存时间为 平均访存时间=命中时间+失效率X失效开销 因此,两种结构的平均访存时间分别是

sdg

平均访存时间1路=2.0+(1.4%X80)=3.12ns

平均访存时间2路=2.0X(1+10%)+(1.0%X80)=3.0ns 所以,2路组相联映像Cache的平均访存时间比较小。 CPU性能为

CPU时间 IC (CPIexecution

失效次数

失效开销) 时钟周期时间

指令数

访存次数

IC [(CPIexecution 时钟周期时间) ( 失效率 失效开销 时钟周期时间)]

指令数

用80ns代替(失效开销X失效时间),两种结构的性能分别为:

CPU时间1路=IC×[2.0×2+(1.2×1.4%X80)]=5.34×IC

CPU时间2路=IC×[2.0X(1+10%)×2+(1.2×1.0%X80)]=5.36×IC 相对性能比为

CPU时间2路CPU时间1路

5.36 IC

1.004

5.34 IC

和平均访存时间的比较结果相反,直接映像Cache的平均性能稍好一些,这是因为在2路组相联映像的情况下,虽然失效次数减少了,但所有指令的时钟周期时间都增加了10%。由于CPU时间是进行评价的基准,而且直接映像Cache的实现简单,所以本例中直接映像Cache是较好的选择。

5、 改进Cache的性能:降低失效率,减少失效开销,减少命中时间

降低失效率8种:增加Cache块的大小,提高相联度,增加Cache容量,Victim Cache,伪相联映像Cache,硬件预取,编译器控制的预取(寄存器预取、Cache预取),编译器优化(数组合并、内外循环交换、循环融合、分块)。

减少失效开销:让读失效优先于写,写缓冲合并,请求字处理技术,非阻塞Cache技术,采用两级Cache。 减少命中时间:采用容量小结构简单的Cache,虚拟Cache,Cache访问流水化,Trace Cache, 第六章 输入输出系统

1、RAID1 亦称镜像盘,使用双备份磁盘。

RAID2 存储器式的磁盘阵列(按汉明纠错码的思路构建) RAID3 位交叉奇偶校验盘阵列 RAID4 块交叉奇偶校验盘阵列 RAID5 块交叉分布奇偶校验盘阵列 RAID6 P+Q双校验磁盘阵列

本文来源:https://www.bwwdw.com/article/dgpj.html

Top