假定CPU主频为50 MHz, CPI为4。 设备D采用异步串行通信方式向主机传送7位ASCII字符, 通信规程中有1位奇校验位和1位停止位, 从D接收启动命令到字符送入I/O端口需要0.5 ms。 请回答下列问题, 要求说明理由。
每传送一个字符, 在异步串行通信线上共需传输多少位?在设备D持续工作过程中, 每秒钟最多可向I/0端口送入多少个字符?
每传送一个 ASCII 字符,需要传输的位数有 1 位起始位、7 位数据位(ASCII 字符 占 7 位)、1 位奇校验位和 1 位停止位,故总位数为 1+7+1+1=10。
I/O 端口每秒钟最多可接收 1000/0.5=2000 个字符。
设备D采用中断方式进行输入/输出, 示意图如下:
一个字符传送时间包括:设备 D 将字符送 I/O 端口的时间、中断响应时间和中断 服务程序前 15 条指令的执行时间。时钟周期为 1/(50MHz)=20ns,设备 D 将字符送 I/O 端口 的时间为 0.5ms/20ns=2.5×104 个时钟周期。一个字符的传送时间大约为 2.5×104+10+15× 4=25070 个时钟周期。完成 1000 个字符传送所需时间大约为 1000×25070=25070000 个时钟 周期。
CPU 用于该任务的时间大约为 1000×(10+20×4)=9×104 个时钟周期。 在中断响应阶段,CPU 主要进行以下操作:关中断、保护断点和程序状态、识别中断源。