一段时间内可以发生多少次I/O中断



我不需要确切的数字,但我想了解典型的普通pc在1毫秒内读取输入中断的能力。假设一只鼠标一直在移动,那么操作系统对一只普通鼠标或一只游戏鼠标的读取次数是多少?

换句话说,如果我们制作了一个试图记录鼠标输入的程序,那么为了多次读取单个输入值,我们应该多久读取一次?

这取决于硬件和您所说的设备类型。英特尔实际上为其xHCI USB控制器提供了最大的中断率。我想说,这个最大速率对于任何游戏鼠标来说可能都太高了。英特尔关于xHCI的文档(https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf)在第289页指定

中断调节允许在单个中断服务请求(ISR(的上下文中处理多个事件,而不是为每个事件生成一个ISR。由中断挂起(IP(标志的断言引起的中断生成可以通过相关中断器的中断器调节(IMOD(寄存器的设置来抑制。IMOD寄存器由两个16位字段组成:中断调节计数器(IMODC(和中断调节间隔(IMODI(。软件可以使用IMOD寄存器来限制向主机CPU传输中断的速率。该寄存器在由主机控制器断言的中断器的中断之间提供有保证的中断间延迟,而与USB通信条件无关。以下算法将中断间隔值转换为通用的"中断/秒"性能度量:

中断/秒=(250×10-9sec×IMODI(-1

例如,如果IMODI被编程为512,则主机控制器保证主机从上次中断起至少128微秒内不会被xHC中断。xHC的最大可观察中断率不应超过8000次中断/秒。相反,中断间隔值可以计算为:

中断间隔=(250×10-9sec×中断/秒(-1

此寄存器的最佳性能设置是非常特定于系统和配置的。调节间隔的初始建议范围为651-5580(28Bh-15CCh(。初始化和重置时,IMODI字段应默认为4000(1ms(。当中断器被初始化时,它可以由软件加载一个替代值

USB与xHCI一起工作,为系统提供中断。我不是一个硬件工程师,但我想说,中断速度取决于鼠标的频率。例如,此鼠标:https://www.amazon.ca/Programmable-PICTEK-Computer-Customized-Breathing/dp/B01G8W30BY/ref=sr_1_4?dchild=1&keywords=usb+游戏+鼠标&qid=1610137924&s=电子&sr=1-4,具有125HZ到1000HZ的频率。这可能意味着您将获得125/s到1000/s的中断频率,因为鼠标具有此频率。它的光学传感器将在这个频率下检查鼠标所在的表面,为移动提供中断。

至于中断本身,我认为这取决于CPU的速度。在处理过程中,中断会在短时间内被屏蔽。CPU速度越快,中断被屏蔽的速度就越快,新中断发生的速度也就越快。我想说这里的瓶颈是鼠标有1000个中断/s,也就是1个中断/ms。

最新更新