第五章 输入 /输出 习题
1.芯片技术的进展已经使得将整个控制器包括所有总线访问逻辑放在一个便宜 的芯片上成为可能。这对于图
1-5 的模型具有什么影响?
答:(题目有问题,应该是图 1-6 )在此图中,一个控制器有两个设备。单个控 制器可以有多个设备就无需每个设备都有一个控制器。 如果控制器变得几乎是自 由的,那么只需把控制器做入设备本身就行了。 这种设计同样也可以并行多个传 输,因而也获得较好的性能。
2. 已知图 5-1 列出的速度,是否可能以全速从一台扫描仪扫描文档并且通过 802.1 lg 网络对其进行传输 ?请解释你的答案。
答:太简单了。扫描仪最高速率为 400 KB/Sec ,而总线程和磁盘都为 16.7
MB/sec ,因此磁盘和总线都无法饱和。
3.图 5-3b 显示了即使在存在单独的总线用于内存和用于
I/O 设备的情况下使用
I/O
内存映射 I/O 的一种方法,也就是说,首先尝试内存总线,如果失败则尝试
总线。一名聪明的计算机科学专业的学生想出了一个改进办法:
并行地尝试两个
总线,以加快访问 I/O 设备的过程。你认为这个想法如何?
答:这不是一个好主意。内存总线肯定比
I/O 总线快。一般的内存请求总是内
CPU 要一直等待 I/O 总线完成,那
存总线先完成,而
I/O 总线仍然忙碌。如果
就是将内存的性能降低为 I/O 总线的水平。
4.假设一个系统使用 DMA 将数据从磁盘控制器传送到内存。
进一步假设平均花
费 t2ns 获得总线,并且花费
t1ns 在总线上传送一个字( t1>>t2 )。在 CPU 对
DMA 控制器进行编程之后,如果( a)采用一次一字模式,(b)采用突发模式,
从磁
盘控制器到内存传送 1000 个字需要多少时间?假设向磁盘控制器发送命令需要
获取总线以传输一个字,并且应答传输也需要获取总线以传输一个字。
答:( a) 1000 × [(t1+t2)+(t1+t2)+(t1+t2)];第一个 (t1+t2) 是获取总线并将命令发
送到磁盘控制器,第二个 (t1+t2) 是用于传输字,第三个 (t1+t2) 是为了确认。总之,
共 3000 × (t1+t2)纳秒。
( b) (t1+t2)+t1+1000× t2+(t1+t2),第一个 (t1+t2) 是获取总线并将命令发送到磁
盘控制器,第二个
t1 是为磁盘控制器获取总线,第三个
×。t2
1000 × t2是突发传送,
第第四个 (t1+t2) 是获取总线并做确认。总 3t1+1002
5.假设一台计算机能够在 10ns 内读或者写一个内存字, 并且假设当中断发生时,
所有 32 位寄存器连同程序计数器和
PSW 被压人堆栈。该计算机每秒能够处理
的中断的最大数目是多少?
答:一次中断需要入栈 34 个字。而从中断返回需要把
34 个字从栈中取出。总
耗时为 680 ns 。因此,每秒最多处理 147 万次中断,假设每次中断什么也不做。
6.CPU 体系结构设计师知道操作系统编写者痛恨不精确的中断。取悦于
OS 人
群的一种方法是当得到一个中断信号通知时,让
CPU 停止发射指令,但是允许
当前正在执行的指令完成, 然后强制中断。 这一方案是否有缺点?请解释你的答
案。
答:当前的处理器一般采用多级流水线操作,无法准确地确定
CPU 当前正在执
行的指令是哪一条,所以停止让
CPU 发送指令后,需要等待把流水线中的指令
全部执行完成才能响应中断, 对于指令不按序执行的处理器而言, 会造成中断响
应的不精确。
7.在图 5-9b 中,中断直到下一个字符输出到打印机之后才得到应答。中断在中
断服务程序开始时立刻得到应答是否同样可行
?如果是,请给出像本书中那样在
中断服务程序结束时应答中断的一个理由。如果不是,为什么?
答:在开始中断服务例程时就确认是可以的。 而在最后才做的原因是因为中断服
务例程的代码都非常短。 通过先输出另一个字符和然后确认该中断,
如果立即发
生另一个中断, 打印机将在此中断期间工作, 将使得打印稍快。 该方法的缺点是
当其他中断禁用时,死机时间稍长。
8.一台计算机具有如图 1-6a 所示的三阶段流水线。在每一个时钟周期,一条新
的指令从 PC 所指向的地址处的内存中取出并放人流水线,同时 PC 值增加。每
条指令恰好占据一个内存字。 已经在流水线中的指令每个时钟周期前进一个阶段。
当中断发生时,当前 PC 压入堆栈, 并且将 PC 设置为中断处理程序的地址。
然后,流水线右移一个阶段并且中断处理程序的第一条指令被取入流水线。 该机
器具有精确的中断吗 ?请解释你的答案。
答:(题目有问题,应该是图 1-7a )具有精确的中断。入栈的
PC 指向第一条未
读取的指令。之前的所有指令都已执行, 而指向的指令及其后续指令均尚未执行,
这就是精确中断的条件。 精确中断在单管线的机器上不难实现, 但是当指令不按
序执行时会有麻烦,此时就不再具有精确的中断。
9.一个典型的文本打印页面包含 50 行,每行 80 个字符。设想某一台打印机每分
钟可以打印 6 个页面,并且将字符写到打印机输出寄存器的时间很短以至于可以
忽略。如果打印每一个字符要请求一次中断,而进行中断服务要花费总计
5 μs
的时间,那么使用中断驱动的
I/O 来运行该打印机有没有意义?
答:该打印机打印每分钟打印 50 × 80 ×= 624000 个字符,也就是 400 字符 /s,