C03 · 第 6 章 · 存储与设备
输入输出与性能分析
比较轮询、中断和设备传输开销,统一延迟与带宽的单位,并计算完整任务的执行时间和加速比。
本章目标
- 说明轮询、中断和 DMA 的处理流程。
- 根据启动延迟与带宽计算传输时间。
- 根据指令数、平均周期与频率计算处理器时间。
- 按各阶段耗时比例计算整体加速比。
本页目录
设备寄存器与输入输出
处理器通过设备接口与键盘、存储器、网络适配器等外部设备交换数据。设备控制器通常提供状态、控制和数据寄存器,驱动程序按照设备协议读取状态、提交命令并检查完成情况。设备的响应时间与处理器指令速度差异较大,因此输入输出需要协调等待、通知和数据传送。
内存映射输入输出把设备寄存器放入处理器地址空间的一部分,程序通过规定的读取和写入操作访问设备。这些地址可能具有副作用,例如读取状态后清除标志,或者写入命令后启动传输。普通内存优化规则不能未经核对直接用于设备访问,驱动还需满足平台规定的顺序、宽度和缓存属性。
一次输入输出请求通常包含操作类型、目标位置、数据缓冲区和完成状态。提交请求说明操作已经交给设备或驱动,完成状态说明规定阶段已经结束;对写入持久存储的请求,还需要区分缓冲区接收与数据达到持久介质的保证。
我们分析设备交互时应列明每一步由谁执行、数据位于哪里、完成状态如何传递,以及失败由哪一层处理。设备忙碌、传输错误和超时都需要明确处理规则。重试写入等具有副作用的操作前,还应确认重试是否可能导致重复执行,避免把一次不确定完成的请求当成确定未执行。
轮询、中断与直接存储器访问
轮询由处理器反复读取状态寄存器,直到设备完成。实现简单且响应时间取决于轮询间隔,但空等待也消耗处理器时间。中断由设备在规定事件发生时通知处理器,处理器保存必要状态并进入处理程序。处理中断本身存在开销,高频事件通常需要合并或批量处理。
直接存储器访问简称 DMA,允许设备控制器按已配置的地址和长度与主存交换数据,处理器负责准备请求、建立映射并处理完成事件。DMA 减少处理器逐字复制的工作,但仍消耗内存与互连带宽。缓存同步、访问权限和缓冲区生命周期必须由驱动及平台共同管理,否则设备可能读到旧数据或写入已被复用的区域。
设设备每次操作持续两毫秒,处理器每隔十微秒检查一次状态,每次检查耗费 。按一百次每毫秒的检查频率估计,两毫秒内检查二百次,总占用四十微秒,即该时间段的百分之二。若改为每微秒检查一次,约检查二千次,占用四百微秒,比例升为百分之二十。计算假定检查互不重叠且时间固定;完成发现的额外等待最多约为一个轮询间隔。缩短间隔降低发现延迟,同时增加处理器占用,应根据请求频率与响应要求选择。
中断与轮询也可以结合使用。例如负载低时依靠中断唤醒,负载高时批量处理队列,减少频繁进入处理中断的开销。这种设计需要限制每轮处理量,并为其他任务保留执行时间。讨论一种方式的性能时,必须给出事件到达速率和每次处理成本,否则无法比较总开销。
延迟、带宽与传输时间
设备传送一批数据通常既有固定启动成本,又有随字节数增加的传输时间。设固定延迟为 秒,数据量为 字节,稳定传输率为 字节每秒,忽略排队及其他重叠时,总时间为 。小请求容易受固定延迟影响,大请求更接近稳定带宽限制。
设接口每次请求启动耗时五十微秒,稳定带宽为每秒二亿字节。传送一百万字节时,数据时间为 ,总时间为五点零五毫秒。若分成一百次串行请求,每次一万字节,每次数据时间五十微秒,加上启动时间共一百微秒,总时间十毫秒。两种方案传送的数据总量相同,差异来自启动次数。按总字节数除以总时间计算,大请求有效速率约为每秒一点九八亿字节,小请求方案为每秒一亿字节。若请求能够并发或传输能够重叠,需重新建立时间模型。
带宽单位经常造成混淆。网络接口常按每秒位数计量,文件大小常按字节计量,两者相差八倍;十进制兆与二进制 MiB 又采用不同基数。计算时先把所有量转换到统一单位,最后再按需要显示结果。协议头、编码开销和重传消耗的流量也会使应用有效速率低于链路标称速率。
指令数、周期数与执行时间
对于给定程序与输入,设动态执行指令数为 ,平均每指令周期数为 ,时钟频率为 ,则处理器时间为 。动态数量统计实际执行次数,循环中的一条指令可能执行很多次。平均每指令周期数则包含适用测量口径中的暂停,使用时应说明是否已经计入内存等待。
端到端时间还可能包含设备等待、排队和调度等部分。加快处理器计算后,输入输出比例可能升高;改变数据布局减少传输后,计算可能重新成为主要成本。因此性能记录应同时包含完整任务耗时、主要阶段时间和结果正确性。只测某个内核不能直接替代用户操作的总耗时。
假设原任务中比例 的时间得到加速,该部分加速倍数为 ,其他部分用时保持不变且各阶段串行,则总体加速比为
这里 使用优化前的时间作为分母。若原来一半时间属于计算,把计算加速到四倍,总时间变为原来的 ,总体加速比为一点六。固定不变的部分限制整体收益;若优化还改变传输量、并发程度或其他阶段,上式的假设需要调整。
基准测量的条件
比较两种实现时,我们先固定输入与输出要求,检查结果一致,再记录机器、软件版本和运行条件。冷热缓存、预热、后台任务和频率变化都可能影响结果。重复测量后报告样本数量及分布,偶然的最短一次通常不足以描述日常性能。
设备测量还需明确计时的终点。写函数返回、数据到达系统缓冲区、设备报告完成和满足断电持久性要求可能是不同事件。若测试目标是文件持久化,就应使用对应系统接口并说明假设;若目标是内存复制,则无需把磁盘同步引入计时。测量范围应直接对应要回答的问题。
输入输出与性能练习
程序执行二百万条指令,平均每条一点五周期,频率为 ,求处理器时间。
查看解答
总周期数为二百万乘一点五,即三百万;除以十五亿赫兹后得到零点零零二秒,也就是两毫秒。
链路速率为 ,传送五百万字节至少需要多长时间?说明计算中忽略的开销。
查看解答
八千万位每秒除以八得到一千万字节每秒。传送五百万字节至少需要零点五秒;这个下界忽略协议开销、启动和重传。
串行任务中百分之七十五的时间得到三倍加速,其余部分不变,求总体加速比。
查看解答
原时间中四分之三被加速到三倍,剩余四分之一不变,新时间比例为四分之一加四分之三除以三,即二分之一,总体加速比为二。
固定启动时间为 ,带宽每秒一亿字节。比较一次传送二十万字节与分成两次串行请求的总时间。
查看解答
传输时间为二十万除以一亿,即两毫秒,加上零点一毫秒启动时间,总共两点一毫秒。若分成两个等量串行请求,则两次启动使总时间变为两点二毫秒。
设备和性能参考资料
18 Devices and Interrupts: Computation Structures
Chris Terman · 2017 · Massachusetts Institute of Technology
打开官方来源7 Performance Measures: Computation Structures
Chris Terman · 2017 · Massachusetts Institute of Technology
打开官方来源MIT 6.004 的设备与中断课程说明处理器与设备的交互方式,性能度量课程讨论延迟、吞吐率和流水计算。阅读时应分别核对处理器占用、传输完成时间和用户请求总时间。