计算机体系结构:由于IRQ范围狭窄,USB键盘的响应速度是否较慢?


19

这是我刚刚想到的一条声明。谁能告诉我这是真的,为什么?

声明: 由于USB键盘依赖于只能访问较低IRQ级别的USB通用驱动程序和体系结构,因此它无法像其他(例如PS2)控制器那样,将键盘访问IRQ的优先级设置为最高。

这是否(如果是真的)是否意味着USB键盘的优先级(就可用性而言,比速度而言)要比插入其他端口类型(如PS2)的键盘低?

例如,在故障系统上的USB键盘映射到中优先级IRQ,该系统卡在另一个中优先级中断例程上。由于其优先级相对相等,因此键盘事件将被忽略,您将无法发送Ctrl-Alt-del或任何其他紧急键击。如果键盘具有更高的优先级,则系统可以进入按键中断例程。

还是USB控制器具有足够的IRQ范围(无论是否为连续的优先级),以使其为键盘提供所需的优先级(基本上刚好在电源故障以下)?

通过远程桌面会话上的网络连接映射的虚拟键盘又如何呢?

编辑:我的问题与速度无关(请参阅注释):主要问题是:PS2键盘是否有更多机会与处于高于USB且低于键盘的中断优先级的某个位置的CPU对话?


2
想知道USB鼠标是否也是如此。在几个月前切换界面(但不是鼠标本身)后,我的确是这样。
martineau'8年

如果它对键盘是正确的,那么对鼠标来说则最可能相同。但可能没有那么重要,因为没有用于鼠标的紧急键击
PPC

我认为这不是要理智的事情。如果这样做,并且键盘卡住了,则网络接口将饿死,并且您将无法远程控制系统。看来您只是在用一个问题换另一个问题。
David Schwartz

1
@DavidSchwartz:这主要是一个理论问题,是从计算机架构师的角度出发的。不过,用户的PoV中有一个应用程序:“我的计算机被卡住,对Ctrl-Alt-Backspace不响应:我应该寻找PS2键盘还是忘记它并进行硬重启”
PPC,2012年

2
@PPC:Ctl-alt-del可能无论如何都不起作用。重新启动过程由高级软件控制,该软件可以关闭程序,刷新缓存等。遇到中断风暴,高级软件将无法工作。
大卫·史瓦兹

Answers:


17

这与IRQ范围无关,而与三个主要因素有关:

  1. 公交拥挤量
  2. 数据量
  3. 数据路径长度

过去,键盘和鼠标将具有专用的IRQ(用于键盘的IRQ1,用于PS / 2鼠标的IRQ12)。

这意味着当按下一个键时,它几乎直接连接到CPU(通过PIC;但仍然只有一个跳线)。这样就可以在硬件中非常快速地处理键盘事件,特别是因为它具有IRQ1。(当然,这全都与正常的键盘使用有关,而忽略了从键盘控制器直接到CPU的复位线。)

另一方面,USB设备都共享同一总线和USB控制器的IRQ(通常是与其他设备(如NIC,视频卡等)共享的IRQ引导的IRQ之一)。这样,对于USB键盘,事件从键盘控制器通过USB总线进入USB主机控制器,再从那里到辅助PIC,再到主PIC,再到OS或BIOS中的驱动程序,然后连接到CPU。此外,在通过USB传输的数据中添加了错误检查数据。

换句话说,与AT或PS / 2键盘相比,USB键盘正在发生的事情更多。数据路径更长,有更多数据,甚至可能必须通过软件。即使USB带宽足够大,将其他设备放在同一端口上也会引起冲突和延迟(您可以添加集线器,但是其上的所有端口仍是控制器上的同一端口)。因此,还有更多的等待正在进行。

此外,拥有自己的指令码(IRQ,这意味着较旧的键盘可以在需要时中断CPU的处理。对于USB,键盘没有这种机制,只能发送一些数据并等待/希望USB控制器中断CPU。在某一点。

虚拟键盘甚至更糟,因为它们肯定会通过软件,而这些软件当然无法与硬件产品竞争。

这是AT或PS / 2键盘与USB键盘之间的区别的简单可视化:

在此处输入图片说明


我对速度的重视程度并没有那么高:我知道更长的数据路径会导致我的按键等待。但是我正在考虑“有机会在有故障的系统上丢失击键的机会”,我认为这与路径长度无关。
PPC'8年

在到达CPU之前如何在软件中处理IRQ?APIC是否有自己的处理器?用他们的例程存储在中央存储器中?他们会“借用” CPU时间吗?
PPC'8年

>“有可能在故障系统上丢失键击”, 这取决于故障,但是是的,显然,USB键盘由于额外的复杂性而丢失键击的可能性更高。 >回复:APIC 是的,它们具有一个可以进行一定程度处理的处理器,就像键盘控制器具有处理器,视频卡具有GPU等一样。大多数硬件都具有处理某些处理的某种芯片。
Synetech

>在击中CPU之前如何在软件中处理IRQ? USB键盘不仅具有驱动程序,而且USB控制器也具有驱动程序。键盘数据不会直接进入CPU,而是通过键盘进入USB控制器,其驱动程序,键盘驱动器,然后再根据需要进入CPU或其他软件,因此有些事情Ctrl+Alt+Del不需要不能通过硬件线路工作,而是通过软件进行处理。
Synetech

因此,如果我对您的按键操作感到满意,那么基本的数据流将是:USB控制器,APIC,通过低优先级IRQ进行的CPU输入,USB ISR / IST,CPU自生成的IRQ(如TRAP),键盘ISR / IST?这样,相关优先级就是USB控制器的优先级。在我的问题中,我认为USB控制器可以将USB数据包转换为真实的键盘IRQ。
PPC'8年

14

简短答案

对于用户级代码,两个键盘的性能绝对相同。可能有微小差异(纳米微米秒现代PC上),如果你写的设备驱动程序。如果系统挂起,则两个键盘都无法解决问题。进行硬重启。


长答案TL; DR;

什么是中断?

当硬件(或某些重要的OS内部软件,例如内核)需要处理器服务时,它将触发一条消息或一个中断,这会要求处理器推迟执行任何操作,并处理此请求。

怎么运行的?

当硬件产生中断(例如按键)时,此请求将进入中断控制器。然后,控制器立即在其机器代码的一行上中断CPU(CPU仍在执行最后一行)。一旦处理器准备好处理该请求,它就会向中断控制器请求中断请求(IRQ)和处理例程。中断控制器具有内部数据结构- 中断调度表,该包含指向例程的指针,该例程应该由CPU针对特定IRQ执行。

所有不同的中断都对应定义明确的有限中断请求级别(IRQL)。例如,在x86系统上有32个IRQL,而在x64和IA64上实际上较少-16个IRQL。显然,硬件设备和软件服务比IRQL多,这意味着所有某些系统对象将共享IRQL。

x64的IRQLs表

    IRQL | 描述
--------------------------------------------
    15 | 高/轮廓
    14 | 处理器间中断/电源
    13 | 时钟
    12 | 同步
    11 | 设备N
    .. | ...
     3 | 设备1
     2 | 调度/ DPC
     1 | 装甲运兵车
     0 | 被动/低

较高的IRQL(数字较大)具有较高的优先级。系统的所有组件都尝试将处理器的当前IRQL保持在最低可能的级别上-0。如果发生更高级别的中断,则处理器的当前IRQL级别将升高,并且只有在较低级别的中断才会被处理。更高级别的所有中断都得到解决。如果IRQ调度程序能够将几个相同级别的IRQ排队以便处理器执行,则可以批处理IRQ。

有什么意义?

所有这些都经过精心设计,可以将最终用户与复杂的硬件区分开,并形成可以与多种类型的硬件/软件一起工作的通用体系结构。

  1. 用户级代码(即非内核级)仅在处理器处于被动/低(0)IRQL时执行。重点是,只有在处理完所有IRQL之后,您才能在应用程序中处理按键事件。因此,对于键盘,将哪个IRQL分配给硬件中断都没有关系。

  2. IRQL只是OS的抽象,并不是一成不变的。相应的IRQ和IRQL存储在Windows注册表中(例如),任何热心的用户都可以手动更改它们。

结论

问题引语

由于USB键盘依赖于只能访问几个IRQ通道的USB通用驱动程序和体系结构,因此它无法像其他(例如PS2)控制器那样将键盘访问IRQ赋予最高优先级。

也许作者的意思是降低IRQL而不是减少IRQ渠道。无论如何,这并不重要,因为在任何现代PC上用户都看不到它。可能的差异是的纳米微米秒水平,他们只在内核级别发生。在这两种情况下,操作系统内核都会阻止用户级代码。

这是否(如果是真的)是否意味着USB键盘的响应性不如插入其他端口类型的键盘?

由于操作系统的设计方式,这是不正确的。如果OS忙于某些事情并且“慢”,则两个键盘的行为相同。

例如,在故障系统上的USB键盘映射到中优先级IRQ,该系统卡在另一个中优先级中断例程上

在这种情况下,系统将对BSOD,IRQ处理例程进行设计,使其达到特定标准(例如它们必须是快速,同步,无阻塞的)。任何与此和内核的偏差都会被蓝屏。

由于其优先级相对相等,因此键盘事件将被忽略,您将无法发送Ctrl-Alt-del或任何其他紧急键击。

如果系统挂起,可能会出错很多事情,但是最有可能在驱动程序级别处理按键IRQL。问题是,由于OS忙于做其他事情,它不会传递给订阅了此类通知的应用程序。


我针对的应用程序是窗口管理器(简单案例)或操作系统本身。我希望我的CPU它的USB样IRQL处理降至干净收到我的同步盘前方的I-重新启动-你
PPC

>>这是否意味着USB kbds响应速度较慢:您能否详细说明“否”的答案?
PPC'8年

@PPC(如果您设计设备驱动程序),则USB kbds可能会慢一些纳秒到几微秒。如果您对任何用户级别的代码感兴趣,那么当处理任何级别> 1的IRQL时,代码将保持阻塞状态。因此,kbd IRQL等于最高IRQL还是中等IRQL无关紧要。用户代码被阻止。
oleksii
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.