USBに遅延はある?コントローラー・マウス・キーボードの遅延の解説と確認方法

以前、GEEKY Fab.のUSBゲームパッド基板の遅延について聞かれたときに、「遅延はゼロです」って答えたことがあります。

Game*Spark - 国内・海外ゲーム情...
過去の遺産を掘り起こせ!ゲーム機コントローラーのUSB化基板「GEEKY Fab.」【ゲームパビリオンjp2024】 | ... 2024年3月30日、大阪の梅田スカイビルにて開催された「ゲームパビリオンjp2024」から作品をピックアップして紹介。本記事内では「GEEKY Fab.」の展示を取り上げています。

よくない回答だったと反省してます。

言い訳させてもらうと、「(他のコンバーターと比べてだと)遅延ゼロです」というニュアンスで回答したんですが、ごめんなさい。

結局、遅延どれくらいかも答えてないですし。

ということで、今回はコントローラー(ゲームパッド)やマウス、キーボードなどのUSBゲーミングデバイスにはどれくらい遅延があるのかって話をちゃんとしたいと思います。

遅延について理解することで、ゲーミングデバイスを選ぶ時の参考にもなると思います。

目次

USBの通信速度について

USBコントローラーやマウス、キーボードは、HID(Human Interface Device)というUSBデバイスに分類されます。
これらのデバイスはPCなどのホストのUSB2.0ポートで接続されます。

USB2.0は速度によってLow-Speed (LS), Full-Speed (FS), High-Speed (HS)の三つに分かれます。
これらの通信速度は次の通りで、LSが一番遅くHSが一番速いです。

区分通信速度
LS1.5 Mbps
FS12 Mbps
HS480 Mbps

一見、この通信速度で遅延が決まりそうな気がしますよね。
実は違います。

コントローラーなどのHIDが送るデータ量は数十バイトしかないので、LSだろうがHSだろうが送りさえすれば一瞬で届くのです。

では遅延の原因はなんなんでしょうか?

遅延の正体はポーリング

USBではホスト(PC)がデバイスに「データある?」と一定周期で問い合わせをしています
問い合わせが来た時に初めてデバイスはホストにデータを送ります。

この仕組みをポーリングといい、問い合わせの周期をポーリング間隔といいます。

このポーリングが遅延の正体です。
さっきも言った通り、LSだろうがHSだろうが送り始めればデータは一瞬で届きます。
でもポーリング間隔でしかデータを送らないのです。
なので、最悪の場合、ポーリング間隔だけ遅延が発生することになります。

このポーリング間隔もLS, FS, HSによって異なり、最短間隔はそれぞれ以下のようになっています。

区分最短ポーリング間隔相当するポーリングレート
LS10 ms100 Hz
FS1 ms1000 Hz
HS0.125 ms8000 Hz

イメージしやすいようにシミュレーターを作ってみました。
デバイス側のゲートが開く時間間隔がポーリング間隔です。
ゲートを開けろという命令はPC側から出しています。

USB速度を選択:
USB Device
PC
×1.0
0.000
ポーリングレート
1000 Hz
通信速度
12 Mbps
遅延時間
1 ms

こう見るとLS, FS, HSで全然違いますね。

USB HIDのポーリング間隔=遅延

では、USBコントローラーやマウス、キーボードなどのUSB HIDはLS, FS, HSのどれで接続されるのでしょうか?

答えはほぼほぼFSです。

なので、みなさんのUSBデバイスは1msのポーリング間隔でつながる…と言いたいところですが、FSだからと言って全部1msで繋がるわけではないです。
そこは結局、デバイスのUSB設定次第になります。
例えば、PCに付属してきた普通のキーボード(TK-FCM085)は10ms、8bitdoのXinput互換のコントローラー(SN30 -amazon link)は4ms (PC接続時)、logiのゲーミングキーボード(G-PKB-002LNd -amazon link)は1msとなっていました。

この設定値はUSBデバイスの”USB Descriptor“の中に書いてあって、例えばUSB Tree Viewなどのソフトで簡単に確認することができます。

ちなみに、GEEKY Fab.のゲームパッド化シリーズ1ms (デフォルトファームウェアの場合)です。

1msはどれくらいの遅延?

最短の1msだと普段のゲームプレイでは遅延を感じることはまずないかと思います。

Bluetoothの無線コントローラーだと、速いものでも8ms程度になります。
一般的なBluetoothコントローラーだともっと遅いと思いますが、それでも遅延を感じる人はかなり少ないんじゃないでしょうか?
もちろん私も感じられないです。

ちなみに、低遅延の無線ゲーミングデバイスもありますが、それらの解説はまた別の機会で。

モニターのリフレッシュレートと比べても1msは圧倒的に速いです。
一般的なモニターのリフレッシュレートが60Hz(=16.7ms)、速いものでも240Hz(=4.2ms)ですからね。
1フレーム内で何回もデータを送っていることになります。

でももっと速いデバイスはある

でももっと速いUSBゲーミングデバイスを見たことないですか?
例えば、ポーリングレート8000Hz (=0.125ms)のゲーミングキーボード!とか。

Razer
オプティカルゲーミングキーボード - Razer Huntsman V2 Tenkeyless | Razer 日本 第 2 世代 Razer オプティカルスイッチ搭載 Razer Huntsman V2 Tenkeyless オプティカルゲーミングキーボード

キーボードとかのHIDはFSで接続されるって話だったのに、不思議ですね。
どうやってFSの限界を超えた低遅延を達成しているのでしょうか?

感のいい人は気づいているかもしれませんね。
FSじゃなくてHSで接続するようにすればいいのです。

HSだと、最大ポーリングレート8000Hz (=ポーリング間隔 0.125ms)になり、ちょうど8000Hzのゲーミングキーボード実現!ってわけです。

でも、一つ問題があります。
さっきの話の通りキーボードなどのHIDはPCとFSでしかつながってくれません

これはPCのドライバが原因です。

ポーリングなどのUSBデバイスへの問い合わせは、USB通信専用のソフトウェアであるUSBドライバが担当しています。

WindowsなどのOSには、USBマウスやキーボードを挿してすぐに使えるように「標準のUSB HIDドライバ」が最初から用意されています。

ただ、この標準ドライバはFSで動くように作られています。
だから普通はHSの高速通信はできません。

なので、HSで繋がるためには専用のドライバを作る必要があるのです。

実際に8000Hzを実現しているゲーミングデバイスは、メーカーが独自のHS対応ドライバを用意しています。

ということで、ゲーミングマウスとかゲーミングキーボードを買った人はちゃんとドライバもインストールしましょうね。
ドライバをインストールしないと8000Hzでポーリングしてくれてないですよ、たぶん。

最後に

以上、簡単にUSBの遅延について説明してみました。
USBは伝送速度の方に目が行きがちですが、ゲーミングデバイスに重要なのはポーリングレートのほうだってことがわかってもらえたかと思います。

みなさんのゲーミングデバイス選びに参考になれば幸いです。

私?
もちろん私は1msのUSBコントローラーと8msのBluetoothコントローラーで十分です。
私のポーリングレートが遥かに低速なので。

今回はこれで終わります。
読んでくれてありがとうございました。

シェアして応援お願いします
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次