据我所知,PS/2 键盘是中断驱动的,而 USB 是轮询的。通常在 Windows 上,PS/2 键盘被分配 IRQ_1。
我不是硬件专家,但乍一看,PS/2 键盘似乎效率更高。因此,我的问题如下:
- 在现代计算机上,PS/2 键盘是否更好(或更快),如果是,它会引人注目吗?(..:在游戏中)
- 由于它们不需要轮询,PS/2 键盘与 USB 相比是否节能?(请注意,我在这里不仅谈论外围设备,还谈论整体计算机能耗)。
- 如果 PS/2 比 USB 有任何优势,那么在我的 USB 键盘上添加一个 PS/2 适配器是否会使该设备与真正的 PS/2 键盘一样好?相反,在 PS/2 上添加一个 USB 适配器是否会使它与 USB KB 一样差?
2 更详细地:
USB 需要主动轮询。因此,CPU 必须将部分周期专门用于扫描按键,这意味着可用于其他任务的周期数较少。这会导致 CPU 频率上升,因此功耗会更高。一个有趣的例子:假设我们将两台相同的计算机并排放置,一台使用 PS/2 键盘,另一台使用相同型号的 USB 键盘,我们让它们开机一整天。如果我们在白天只按一个键,PS/2 键盘所需的 CPU 时间比 USB 键盘要低得多。因此,在具有极端动态频率缩放的 CPU 中,USB 键盘总体上需要更多的功率。此外,USB 协议需要管理多个设备,我猜这种管理使得处理 USB 按键在计算上比 PS/2 键盘的专用 IRQ 更昂贵。
这些是我在#2中提出的考虑因素,考虑到整个 PC,而不仅仅是键盘从 5 V 输入中吸收了多少。
看来轮询功能只适用于 USB 2.0,根据维基百科一、USB 3.0摆脱轮询:
提高总线利用率——添加了一个新功能(使用数据包 NRDY 和 ERDY),让设备异步通知主机其准备就绪(无需轮询)
(目前 USB 3.0 键盘很少见。我只知道技嘉今年展出的键盘台北国际电脑展,我怀疑它使用 USB 3.0 来摆脱轮询,而是在键盘上提供 USB 3.0 集线器)。
我还试图找到有关 USB KB 轮询率的确切数据。有些人说是 125 Hz,还有一些调整到 1 kHz。相比之下,PS3 等游戏机的轮询率为 100 Hz,XBox 的轮询率为 125 Hz。即使 1 KHz 如此,在 GHz CPU 上似乎也可以忽略不计(0.000001% 的 CPU 周期/秒)。这些数字引出了另一个问题:对于游戏目的,PS/2 键盘每秒产生 1,000 次中断会有多好(如果有的话)?
答案1
PS/2 键盘与 USB 键盘的响应时间:
有许多有趣的结果,但与这个问题相关的一点是键盘之间存在相当大的差异,并且所有测试的 USB 键盘的有效扫描间隔(18.77 毫秒 - 32.75 毫秒)都比 PS/2 键盘(2.83 毫秒 - 10.88 毫秒)更长。
来自该超级用户问题本身的更多信息:USB 或 PS/2 键盘响应速度哪个更快?
两台设备之间的功耗和整体功耗: (参考 HP 文档)
USB
工作电压:+5VDC±5%
功耗:最大50mA(三个LED亮起)PS/2
工作电压:+ 5 VDC ± 5% 功耗:最大 50 mA(三个 LED 亮起)
我的看法是:
因此,最大可能功耗为 +5 V,主板必须考虑到 PS/2 端口的功耗,而不管其实际功耗如何。我们知道 USB 确实为我们提供 +5 V 的电源输出。实际功耗因品牌而异。有人说它消耗 50 mA,有人说它消耗 70 mA,最高为 100 mA。
到目前为止,我读到的任何内容都没有显示或说明实际消耗超过 100 mA。事实上,Windows 还报告实际需要 70 mA 的电量。但我的 MacBook 显示 USB 需要 100 mA。因此,USB 键盘的实际功耗可能比 PS/2 键盘略高。我在下面附上了几张图片。
在 Windows 上
在 MacBook 上
解释#2中更新的问题:
嗯,只有一个 USB 控制器,但每个 USB 端口都是单独连接的。因此协议使设备对于每个端口都是独有的。
连接到端口的每个 USB 设备都是单独连接的。当设备连接到端口时,端口会告诉我们连接的是哪个设备。这就像每个设备都有一个专用端口,并且控制器具有同时向处理器发送多个请求的总线功能。
我认为,PS/2 或 USB 键盘所消耗的电量/CPU 时间应该相同。如果 USB 键盘的处理能力和功耗都很强,人们就不会交替使用它们了。我们也会阅读更多关于它们的技术文章!
我个人的观点是,Apple 只是在 Mac Mini 和 iMac 上提供了 USB 端口,那么如果这样做会耗费大量电力和处理能力,Apple 会这样做吗?甚至大多数新的戴尔机器都没有 PS/2 端口(撇开所有组装和定制硬件不谈)。
答案2
- 这是个人观点,但我并不指望有任何明显的差异。这将更多地取决于键盘的硬件构造/质量(例如,它处理按键的速度有多快,它对你按下按键的反应有多快,等等)。中断会暂停正在处理的其他事情,但程序或游戏仍然必须先对其做出反应。这并不是说整个游戏逻辑都位于中断处理程序中。
- 我没有考虑 PS/2 的规格,但考虑到 USB 通常是 5 V 500 mA,这将导致 2.5 W。现在看看 CPU 和 GPU 可能(特别是在游戏 PC 上)单独消耗超过 250 W,这感觉非常微不足道。
- 绝对不是!即使有优势,你也只是增加了另一个步骤/阶段,而将两种技术相继连接在一起会抹杀整个优势。假设 USB 的反应时间为 0.1 秒,PS/2 的反应时间为 0.05 秒。使用适配器,你的反应时间很可能在 0.15 秒左右,甚至可能更高。
我假设您想提高您的反应时间或其他什么。如果您的问题真的只是理论上的,请忽略这一点。如果您想“优化”您的游戏体验,只需购买专为游戏设计的 USB 键盘即可。这些键盘通常提供更一致的按键行为,并且可能具有其他功能(例如,检测您按下的深度或时间,而不仅仅是按下/未按下)。我根本不会担心 PS/2,尤其是考虑到当今硬件上 PS/2 端口的有限性。您可能不想在输入处理中赢得几毫秒的时间,而由于内存带宽较低或其他原因而损失更多时间。
对于游戏来说,还有一件完全不同的事情需要考虑:当今台式电脑的典型刷新率为 60 Hz。这意味着每秒 60 帧或每帧大约 16.67 毫秒。这导致这样一个事实,即使你每秒轮询 1000 次,你也不会注意到任何更快的反应(与每秒 100 次相比)。当然,计算可能会更快(例如,以每秒 100、500 甚至 1000 帧的速度模拟游戏世界),但我仍然认为你根本不会注意到任何实际差异。