输入输出系统
6.1假设一台计算机的I/O处理占10%,当其CPU性能改进到原来的100倍时,而I/O性能仅改进为原来的两倍时,系统总体性能会有什么改进?
解,加速比=
本题再次反映了Amdahl定律,要改进一个系统的性能要对各方面性能都进行改进,不然系统中最慢的地方就成为新系统的瓶颈。
6.2假设磁盘空闲,这样没有排队延迟;公布的平均寻道时间是9ms,传输速度是4MB/s,转速是5400r/min,控制器的开销是1ms。问读或写一个512字节的扇区的平均时间是多少?
解:
平均磁盘访问时间
= 平均寻道时间 + 平均旋转延迟 + 传输时间 + 控制器开销

假设实际测得的寻道时间是公布值的33%,则答案是:
3ms + 4.2ms + 0.1ms + 1ms = 8.3ms
6.3 按表6.2中的数据,问用哪种磁盘最适合于建立100GB的镜像盘阵列(RAID1)存储子系统?又问哪种磁盘最适合于建立100GB的镜像盘阵列(RAID5)存储子系统?
盘阵列有哪些分级?各有什么特点?
RAID0亦称数据分块,即把数据分布在多个盘上,实际上是非冗余阵列,无冗余信息。
RAID1亦称镜像盘,使用双备份磁盘。每当数据写入一个磁盘时,将该数据也写到另一个冗余盘,这样形成信息的两份复制品。如果一个磁盘失效,系统可以到镜像盘中获得所需要的信息。镜像是最昂贵的解决方法。特点是系统可靠性很高,但效率很低。
RAID2位交叉式海明编码阵列。原理上比较优越,但冗余信息的开销太大,因此未被广泛应用。
RAID3位交叉奇偶校验盘阵列,是单盘容错并行传输的阵列。即数据以位或字节交叉的方式存于各盘,冗余的奇偶校验信息存储在一台专用盘上。
RAID4专用奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的奇偶校验信息存在一台专用盘上。
RAID5块交叉分布式奇偶校验盘阵列,是旋转奇偶校验独立存取的阵列。即数据以块交叉的方式存于各盘,但无专用的校验盘,而是把冗余的奇偶校验信息均匀地分布在所有磁盘上。
RAID6双维奇偶校验独立存取盘阵列。即数据以块(块大小可变)交叉的方式存于各盘,冗余的检、纠错信息均匀地分布在所有磁盘上。并且,每次写入数据都要访问一个数据盘和两个校验盘,可容忍双盘出错。
RAID7是采用Cache和异步技术的RAID6,使响应速度和传输速率有了较大提高。
6.5 磁带作为海量档案存储设备,平均每个磁带的读者很少。假设一个系统中,磁带读取速率为9MB/s,更换一个磁带需要30s,请计算10个读者全部读完6000个磁带,需要多长时间?
6.6 同步总线和异步总线各有什么优缺点?总线的主要参数有哪些?各是什么含义?
同步总线上所有设备通过统一的总线时钟进行同步。同步总线成本低,因为它不需要设备之间相互确定时序的逻辑。但是同步总线也有缺点,总线操作必须以相同的速度运行。由于各种设备都要精确地以公共时钟为定时参考,因此在时钟频率很高时容易产生时钟相对漂移错误。
异步总线上的设备之间没有统一的时钟,设备自己内部定时。设备之间的信息传送用总线发送器和接收器控制。异步总线容易适应更广泛的设备类型,扩充总线时不用担心时钟时序和时钟同步问题。但在传输时,异步总线需要额外的同步开销。
总线常用的参数有3个:
Tp:总线信号传输延迟。即在总线上的每个设备都取到和识别一个信号需要的最大时间。
Tsk:响应其它设备的最大时间,这个参数在同步总线中是一个重要的参数。
Top:设备的操作时间。
6.7
6.9 在有Cache的计算机系统中,进行I/O操作时,会产生哪些数据不一致问题?如何克服?
存储器中可能不是CPU产生的最新数据,所以I/O系统从存储器中取出来的是陈旧数据。
I/O系统与存储器交换数据之后,在Cache中,被CPU使用的可能就会是陈旧数据。
第一个问题可以用写直达Cache解决。
第二个问题操作系统可以保证I/O操作的数据不在cache中。如果不能,就作废Cache中相应的数据。
6.10假设在一个计算机系统中:
每页为32KB,Cache块大小为128字节;
对应新页的地址不在Cache中,CPU不访问新页中的数据;
Cache中95%的被替换块将再次被读取,并引起一次失效;
Cache使用写回方法,平均60%的块修改过;
I/O系统缓冲能够存储一个Cache完整的块(这称为速度匹配缓冲区,使存储器和I/O的速度得到匹配);
访问或失效在所有的Cache中均匀分布;
在CPU和I/O之间,没有其它访问Cache的干扰;
无I/O时,每100万个时钟周期中,有18000次失效;
失效开销是40个时钟周期。如果替换块被修改过,则再加上30个周期用于写回主存;
假设机器平均每200万周期处理1页。
分析I/O对于性能的影响有多大?
解:每个主存页有32K/128=256块。
因为是按块传输,所以I/O传输本身并不引起Cache失效。但是它可能要替换Cache中的有效块。如果这些被替换块中有60%是被修改过的,将需要(256×60%)×30=4608个时钟周期将这些被修改过的块写回主存。
这些被替换出去的块中,有95%的后继需要访问,从而产生95%×256=244次失效,将再次发生替换。由于这次被替换的244块中数据是从I/O直接写入Cache的,因此所有块都为被修改块,需要写回主存(因为CPU不会直接访问从I/O来的新页中的数据,所以它们不会立即从主存中调入Cache),需要时间是244×(40+30)=17080个时钟周期。
没有I/O时,每一页平均使用200万个时钟周期,Cache失效36000次,其中60%被修改过,所需的处理时间为:
(36000×40%)×40+(36000×60%)×(40+30)=2088000(时钟周期)
时钟I/O造成的额外性能损失比例为
(4608+17080)÷(2000000+2088000)=0.53%
即大约产生0.53%的性能损失。