S.D 8(R2),F10
4.4 假设有一条长流水线,仅仅对条件转移指令使用分支目标缓冲。假设分支预测错误的开销为4个时钟周期,缓冲不命中的开销为3个时钟周期。假设:命中率为90%,预测精度为90%,分支频率为15%,没有分支的基本CPI为1。 (1) 求程序执行的CPI。
(2) 相对于采用固定的2个时钟周期延迟的分支处理,哪种方法程序执行速度更快?
解:(1)程序执行的CPI = 没有分支的基本CPI(1)+ 分支带来的额外开销
分支带来的额外开销是指在分支指令中,缓冲命中但预测错误带来的开销与缓冲没有命中带来的开销之和。 分支带来的额外开销= 15% * (90%命中×10%预测错误×4 + 10%没命中×3)= 0.099 所以,程序执行的CPI =1 +0.099 = 1.099
(2)采用固定的2 个时钟周期延迟的分支处理CPI = 1 + 15%×2 = 1.3 由(1)(2)可知分支目标缓冲方法执行速度快。
4.5 假设分支目标缓冲的命中率为90%,程序中无条件转移指令的比例为5%,没有无条件转移指令的程序CPI值为1。假设分支目标缓冲中包含分支目标指令,允许无条件转移指令进入分支目标缓冲,则程序的CPI值为多少?
解:设每1+5%×x=1.1 x=2
当分支目标缓冲命中时,无条件转移指令的延迟为0。 所以程序的CPI =1 +2 ×5% ×(1 -90%) =1.01
5.4 降低Cache失效率有哪几种方法?简述其基本思想。 答:常用的降低Cache失效率的方法有下面几种:
(1) 增加Cache块大小。增加块大小利用了程序的空间局部性。 (2) 增加Cache的容量。
(3) 提高相联度,降低冲突失效。
(4) 伪相联Cache,降低冲突失效。当对伪相联Cache进行访问时,首先是按与直接映象相同的方式进行访问。如果命中,则从相应的块中取出所访问的数据,送给CPU,访问结束。如果不命中,就将索引字段的最高位取反,然后按照新索引去寻找“伪相联组”中的对应块。如果这一块的标识匹配,则称发生了“伪命中”。否则,就访问下一级存储器。
(5) 硬件预取技术。在处理器提出访问请求前预取指令和数据。
(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。 (7) 编译器优化,通过对软件的优化来降低失效率。
(8) “牺牲”Cache。在Cache和其下一级存储器的数据通路之间增设一个全相联的小Cache,存放因冲突而被替换出去的那些块。每当发生不命中时,在访问下一级存储器之前,先检查“牺牲”Cache中是否含有所需的块。如果有,就将该块与Cache中某个块做交换,把所需的块从“牺牲”Cache 调入Cache。
6.3 RAID有哪些分级?各有何特点?
答:(1)RAID0。亦称数据分块,即把数据分布在多个盘上,实际上是非冗余阵列,无冗余信息。(2)RAID1。亦称镜像盘,使用双备份磁盘。每当数据写入一个磁盘时,将该数据也写到另一个冗余盘,这样形成信息的两份复制品。如果一个磁盘失效,系统可以到镜像盘中获得所需要的信息。镜像是最昂贵的解决方法。特点是系统可靠性很高,但效率很低。(3)RAID2。位交叉式海明编码阵列。即数据以位或字节交叉的方式存于各盘,采用海明编码。原理上比较优越,但冗余信息的开销太大,因此未被广泛应用。(4)RAID3。位交叉奇偶校验盘阵列,是单盘容错并行传输的阵列。即数据以位或字节交叉的方式存于各盘,冗余的奇偶校验信息存储在一台专用盘上。(5)RAID4。专用奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,
冗余的奇偶校验信息存在一台专用盘上。(6)RAID5。
块交叉分布式奇偶校验盘阵列,是旋转奇偶校验独立存取的阵列。即数据以块交叉的方式存于各盘,但无专用的校验盘,而是把冗余的奇偶校验信息均匀地分布在所有磁盘上。(7)RAID6。双维奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的检、纠错信息均匀地分布在所有磁盘上。并且,每次写入数据都要访问一个数据盘和两个校验盘,可容忍双盘出错。
RAID:廉价磁盘冗余阵列或独立磁盘冗余阵列。
6.10 在有Cache的计算机系统中,进行I/O操作时,会产生哪些数据不一致问题?如何克服? 答:(1)存储器中可能不是CPU产生的最新数据,所以I/O系统从存储器中取出来的是陈旧数据。 (2)I/O系统与存储器交换数据之后,在Cache中,被CPU使用的可能就会是陈旧数据。 第一个问题可以用写直达Cache解决。
第二个问题操作系统可以保证I/O操作的数据不在cache中。如果不能,就作废Cache中相应的数据。
例5.11假设在1000次访存中,L1 Cache失效40次, L2 Cache失效20次。试问:在这种情况下,该Cache系统的局部失效率和全局失效率各是多少? 解
第一级Cache的失效率(全局和局部)是40/1000, 即4%;第二级Cache的局部失效率是20/40,即50%, 第二级Cache的全局失效率是20/1000,即2%。
6.3 RAID有哪些分级?各有何特点?
答:(1)RAID0。亦称数据分块,即把数据分布在多个盘上,实际上是非冗余阵列,无冗余信息。(2)RAID1。亦称镜像盘,使用双备份磁盘。每当数据写入一个磁盘时,将该数据也写到另一个冗余盘,这样形成信息的两份复制品。如果一个磁盘失效,系统可以到镜像盘中获得所需要的信息。镜像是最昂贵的解决方法。特点是系统可靠性很高,但效率很低。(3)RAID2。位交叉式海明编码阵列。即数据以位或字节交叉的方式存于各盘,采用海明编码。原理上比较优越,但冗余信息的开销太大,因此未被广泛应用。(4)RAID3。位交叉奇偶校验盘阵列,是单盘容错并行传输的阵列。即数据以位或字节交叉的方式存于各盘,冗余的奇偶校验信息存储在一台专用盘上。(5)RAID4。专用奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的奇偶校验信息存在一台专用盘上。(6)RAID5
块交叉分布式奇偶校验盘阵列,是旋转奇偶校验独立存取的阵列。即数据以块交叉的方式存于各盘,但无专用的校验盘,而是把冗余的奇偶校验信息均匀地分布在所有磁盘上。(7)RAID6。双维奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的检、纠错信息均匀地分布在所有磁盘上。并且,每次写入数据都要访问一个数据盘和两个校验盘,可容忍双盘出错。
8、下图为DEC的Alpha AXP 21064 微处理器中的内部数据Cache 。相应的介绍如下:容量为8KB;块大小为32字节,共有256个块。调试方式为:不按写分配;映像方法为:直接映像;写策略:写直达法;写缓冲器的大小:4个块。简要分析Cache在命中情况下的“读”访问与“写”访问过程,以及在失效状态下的“读”失效和写操作。
(1)读命中
a.21064我处理器传送给数据库Cache的物理地址为34位,分为块地址(29位)块内偏移(5位)。块地址又分为地址标识位(21位)和Cache位(8位)
b.根据索引值查找Cache块地址位置,读出数据以及目录表中相应的标识。
C.目录表中的标识和CPU送来的物理地址的标识进行比较,且相应的有效位必须为“1”目录表中的标识符才有效。若两者相等则命中
d.数据Cache发出信号通知CPU从cache中取走数据 (2)“写”命中
判断写命中与否的步骤判断读的方法相同,在命中的情况下,不仅把信息写入cache中相应的块,而且也写入下一级存储器中相应的块 (3)“读”失效
Cache向CPU发出一个暂停信号,通知等待,并以下一级存储器中读出数据,填入相应的块 (4)“写”失效
CPU不对Cache进行操作,直接写入下一级存储器中而不将相应的块调入Cache中。