• 408王道计算机组成原理强化——输入输出系统大题(I/O)


    目录

    1.程序查询方式

    2.程序中断方式

    3.DMA方式


    1.程序查询方式

    ①I/O速率 ②缓冲区大小 ③查询一次时间开销

    ① / ② → ④查询频率;③ * ④ → ⑤查询时间占比

    1.scanf函数发出系统调用请求操作系统从键盘等设备读取字符时,是在该进程的时间片内不断while循环轮询,当该进程时间片用完后就会切换进程,即该进程被剥夺处理机的使用权,故不会导致一直占用处理机

    2.I/O设备通过USB与主机相连,USB带有I/O接口(I/O设备的软件部分),I/O设备和主机之间发生数据交互时,为了解决两者之间的速度差异,将会把数据先放入I/O接口的缓冲区中

    3.不同的I/O接口的缓冲区大小不同(字 / 字节)

    4.如果缓冲区的数据不被及时取走,当有新数据不断存入时,旧数据将会被新数据覆盖:I / O设备按照一定的速率将数据写入缓冲区,CPU需要按照一定的频率从缓冲区取出数据,并将其放入主存(数据流向:缓冲区→CPU寄存器→主存),故CPU查询的频率 ≥ I/O设备数据速率

    例如:I/O设备数据输入速率为100KB/S,缓冲区大小为4B,则1S内CPU需要查询100/4 = 25次

    ①I/O设备和I/O接口的传输速率,即I/O设备数据输入速率

    ②缓冲区的大小(注意单位:字 / 字节)

    ① / ② = CPU定时查的频率 :若低于频率,则可能发生数据丢失;若高于,则不丢失

    5.CPU用于查询的时间占总时间的比例 :

    ①查一次的时间开销

    ②一秒钟查询次数

    ① * ②得到每一秒钟查询的总时间→时间占比

    (1)①定时查询I/O方式:即程序轮询

    ②I/O接口中的缓冲区大小为32位,即4B;I/O设备的数据传输速率为2MB/s

    ③CPU查询频率 = 2MB/s / 4B = 500 000,1S查询500 000次,需2μs查询一次

    ④用于设备A输入/输出的时间占比:每次输入 / 输入都要至少执行10条指令,且CPI = 4→每次查询需要10 * 4 = 40条指令;主频为500MHz→时间占比 = 40 * 500 000 / 500 000 000 = 4 %

    2.程序中断方式

    1.I/O接口的数据缓冲区满,I/O接口给CPU发送I/O中断信号,CPU检测到I/O中断后进行中断处理

    ①中断响应(中断隐指令) ②中断服务程序

    程序中断方式的CPU取数据时间 = ① + ②

    2.③I / O 速率 ④缓冲区大小 → ③ / ④ 每隔多久缓冲区满 ⑤→ CPU取数据时间 ① + ② ≤ ⑤

    (2)每次中断的时钟周期为400,则① + ②的时间;

    40MB/s(B的I/O速率)/ 4B(缓冲区大小)= 10M次中断/s

    10M * 400 = 4000M时钟周期,而计算机主频为500MHz < 4000M,即CPU无法满足中断处理次数,将会发生数据覆盖

    (1)①以32位为传输单位:缓冲区大小为32bit,即4B

    ②中断服务程序18条指令,中断服务的其他开销相当于2条指令:每次中断处理需要20条指令 + CPI = 5 → 每次中断的时钟周期  = 20 * 5 = 100

    ③每秒钟需要进行的中断次数 = 0.5MB/s(I/O速率)/ 4B(缓冲区大小)= 125 000次

    ④占比:125 000 * 100(每秒中断总时钟周期)/ 500 000 000(主频)= 2.5 % 

    3.DMA方式

    1.DMA接口和主机之间的数据传输以块为单位,但DMA接口与I/O设备的传输仍以字为单位

    2.①预处理:CPU执行一连串指令告诉DMA接口接下来需要读/写几个字,读/写主存的位置(块)

    ②数据传输:DMA接口的缓冲区被充满后以字为单位放入主存块中,主存块满后发出中断信号

    ③后处理:CPU处理DMA中断

    3.DMA方式本质上是程序中断方式的扩展:DMA每个块发出中断,程序中断方式每个字发出中断

    4.程序查询方式和程序中断方式可能发生数据丢失,但是DMA不可能发生数据丢失

    (3) ①每次DMA传送的数据块大小为1000B,即用于DMA传送的主存块大小为1000B

    ②每秒DMA中断的次数 = 40MB/s / 1000B = 40 000次

    ③每次DMA中断的时间开销 = 500个时钟周期

    ④占比 = 40 000 * 5000 / 500MHz = 2%

    (2)①每秒DMA中断次数 = 5MB/s / 5 000B = 1 000次

    ②每次DMA中断的时间开销 = 500次

    ③占比 = 500 * 1000 / 500M = 0.1%

    (1)①异步串行通信需要开始位:1 + 7 + 1 + 1 = 10位

    ②1 / 0.5ms = 2000个字符

    (2)①I/O设备分为两种:1.按自己节奏运行,不听CPU命令的设备 2.听CPU指挥何时运行何时停止的设备;其中第15条指令启动D工作,则说明设备D是后者

    ②中断响应需要10个时钟周期,设备D在中断服务程序的第15条指令执行后开始工作,即设备D的工作间隔为10 + 15 * 4 = 70个时钟周期

    ③CPU的时钟周期为 1s / 50MHz = 20ns;字符D每次工作所需的时钟周期为0.5ms / 20ns = 25000

    ④设备D传输一个字符所需的时钟周期数 = 25 000 + 70 = 25 070→1000个字符所需的时钟周期 = 25 700 * 1 000  = 25 700 000

    ⑤设备D每次处理完给CPU发出中断请求,CPU处理一次中断请求所需时钟周期数 = 中断响应 + 中断服务程序10 + 20 * 4 = 90;1000个字符所需时钟周期数 = 1 000 * 90 = 90 000

    ⑥中断响应完成关中断、保护断点、中断服务程序寻址

  • 相关阅读:
    机车整备场数字孪生 | 图扑智慧铁路
    dubbo2.7时间轮的应用
    LeetCode每日一练 —— 138. 复制带随机指针的链表
    CSDN每日一练(Java)--小艺的英文名
    计算机毕业设计(附源码)python在线电影推荐系统
    web安全漏洞——身份验证绕过
    干货 | Dubbo 接口测试原理及多种方法实践总结
    什么是GPT磁盘?介绍GPT(GUID 分区表)磁盘及其优势!
    Spring学习笔记(三十七)——Flyway 数据库版本控制
    主键、外键、建表范式、MySQL索引、用户管理
  • 原文地址:https://blog.csdn.net/JiangNan_1002/article/details/126278604