Skip to content

2014年 408 计算机组成原理 第 22 题

计算机组成原理2014年选择题2分

题目

若某设备中断请求的响应和处理时间为 100 ns,每 400 ns 发出一次中断请求,中断响应所允许的最长延迟时间为 50 ns,则在该设备持续工作过程中,CPU 用于该设备的 I/O 时间占整个 CPU 时间的百分比至少是( )。

错因

A

把"50 ns 延迟"误算进周期里——例如把"每 400 ns 一次"理解成"每 800 ns 一次"再 100/800 = 12.5%。或者按 100/(400+400) 之类的双重计数。本质都是没理解 50 ns 延迟只是允许的容忍上限,不影响周期。

C

把 50 ns 延迟加进 I/O 时间:(100+50)/400 = 37.5%。错点在于——延迟是"中断到来后允许等多久才响应"的容忍窗口,不是 CPU 实际干 I/O 的时间。CPU 真正花在 ISR 上的就是那 100 ns,延迟期间 CPU 还在跑用户程序,不算 I/O 开销。

D

把 50 ns 延迟同时算到 I/O 时间和缩短周期:(100+100)/400 = 50%。或 (100+50)/(400-100) ≈ 50%。多重错误叠加。50 ns 这个数据从一开始就不参与计算,把它代进任意位置都会算错。

总解析

第一步:识别"干扰信息"

题面给了三个数据:

  1. 中断响应+处理时间 100 ns ✓ 用
  2. 中断请求间隔 400 ns ✓ 用
  3. 最长允许延迟 50 ns ✗ 不用(干扰)

第三条的作用是告诉你"中断不一定瞬时响应,可以延后到 50 ns 内"——但只要每 400 ns 内 CPU 总共花 100 ns 处理它,就不会丢数据,延迟早一点晚一点不影响"每 400 ns 内的 I/O 总时长"。

更直观的论证:把 50 ns 延迟代入会发现题目就没法做——你得知道延迟到底是多少(5 ns?30 ns?50 ns?),但题目没给固定值。这就提示你:这个数不参与计算。

第二步:列公式直接算

设备每 400 ns 发一次中断,每次 CPU 花 100 ns 处理:

第三步:理解"至少"二字

题目问"占比至少是多少"——意味着求下界。100/400 = 25% 已经是 CPU 必须付出的最低 I/O 开销:

  • 中断频率不能再低(再低就丢数据)
  • 处理时间不能再短(已经是固定的硬件 + 软件耗时)
  • 50 ns 延迟可以利用,但不能改变"每 400 ns 内 100 ns 给 ISR"这个总账

所以 25% 就是占比下界,再低就违反"数据不丢失"的题设。

最终答案是 B(25%)

判断 408 真题"干扰数据"速查

数据特征是否参与计算
没给定具体值的范围("最多 X"、"最长 Y")多半是干扰
给了具体值且是必要参数(频率、周期、容量)几乎都用
题面强调"持续工作"、"为不丢数据"提示用边界值代入

类比题型:2011-22(程序查询占比)、2010-43 / 2011-43(中断带宽)都是"主频 / 频率 / 单次开销"的简单除法套路,背公式就够。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题