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

Io 一段时间内可以发生多少I/O中断?,io,operating-system,mouseevent,mouselistener,Io,Operating System,Mouseevent,Mouselistener,我不需要精确的数字,但我想知道典型的普通pc在1毫秒周期内读取输入中断的能力的现实意义。假设一个鼠标一直在移动,操作系统对一个普通鼠标或一个游戏鼠标的读取次数是多少 换句话说,如果我们制作了一个试图记录鼠标输入的程序,为了多次读取单个输入值,我们应该多久读取一次?这取决于硬件和您所说的设备类型。Intel实际上为其xHCI USB控制器提供了最大中断速率。我想说,对于任何游戏鼠标来说,这个最大速率可能太高了。关于xHCI()的英特尔文档在第289页指定 中断缓和允许在单个中断服务请求(ISR)的

我不需要精确的数字,但我想知道典型的普通pc在1毫秒周期内读取输入中断的能力的现实意义。假设一个鼠标一直在移动,操作系统对一个普通鼠标或一个游戏鼠标的读取次数是多少


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

这取决于硬件和您所说的设备类型。Intel实际上为其xHCI USB控制器提供了最大中断速率。我想说,对于任何游戏鼠标来说,这个最大速率可能太高了。关于xHCI()的英特尔文档在第289页指定

中断缓和允许在单个中断服务请求(ISR)的上下文中处理多个事件,而不是为每个事件生成ISR。中断缓和(IMOD)的设置可能会限制由中断挂起(IP)标志断言产生的中断生成关联中断器的寄存器。IMOD寄存器由两个16位字段组成:中断缓和计数器(IMODC)和中断缓和间隔(IMODI)。软件可使用IMOD寄存器限制向主机CPU传送中断的速率。该寄存器在主机控制器断言的中断器中断之间提供有保证的中断间延迟,而不考虑USB通信条件。以下算法将中断间间隔值转换为常见的“中断/秒”性能指标:

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

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

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

该寄存器的最佳性能设置是非常系统和配置特定的。缓和间隔的初始建议范围为651-5580(28Bh-15CCh)。初始化和重置后,IMODI字段应默认为4000(1毫秒)。当中断器初始化时,软件可能会加载一个替代值

USB与xHCI一起工作,为系统提供中断。我不是硬件工程师,但我想说的是,中断速度取决于鼠标频率。例如,此鼠标:,具有125HZ到1000HZ的频率。这可能意味着您将获得125/s到1000/s的中断频率,因为鼠标具有此频率。它的光学传感器将以此频率检查鼠标所在的表面,从而为移动提供中断

至于中断本身,我认为这取决于CPU的速度。在处理时,中断会被屏蔽一小段时间。CPU的速度越快,中断被解除屏蔽的速度就越快,新中断发生的速度就越快。我想说这里的瓶颈是具有1000次中断/秒的鼠标,即1次中断/毫秒