コンピューターアーキテクチャ:IRQの範囲が狭いため、USBキーボードの応答性は低下しますか?


19

ここに私がちょうど考えた声明があります。誰がそれが本当かどうか、そしてそれが本当かどうか教えてもらえますか?

声明: USBキーボードは、より低いIRQレベルにのみアクセスするUSB​​汎用ドライバーとアーキテクチャに依存しているため、他の(たとえばPS2)コントローラーのように優先度が高いIRQへのキーボードアクセスを与えることはできません。

これは(本当であれば)USBキーボードの優先順位が(PS2などの)別のポートタイプに接続されたキーボードよりも(速度よりも可用性の点で)低いことを意味しますか?

たとえば、別の中優先度の割り込みルーチンでスタックしている障害のあるシステムで、中優先度のIRQにマップされたUSBキーボードを取り上げます。優先度が比較的高いため、キーボードイベントは無視され、Ctrl-Alt-delまたはその他の緊急キーストロークを送信することはできません。キーボードの優先度が高い場合、システムはキーストローク割り込みルーチンに入ることができます。

または、USBコントローラには、キーボードに必要な優先度を与えるのに十分なIRQ範囲がありますか?

また、リモートデスクトップセッションのネットワーク接続を介してマッピングされた仮想キーボードはどうですか?

編集:私の質問は速度に関するものではありません(コメントを参照):主な質問は次のとおりです:PS2キーボードは、USBよりも高く、キーボードよりも低い割り込み優先度でどこかにスタックしているCPUと話す機会がありますか?


2
同じことがUSBマウスにも当てはまると思います。数か月前にインターフェイスを切り替えた後(マウス自体ではない)、私は確かにそうです。
マルティノー

キーボードに当てはまる場合、おそらくマウスにも同じです。しかし、マウスのための緊急のキーストロークおそらくそれほど重要ではありませんので、
PPC

これは心配するのが賢明なことだとは思いません。これを行うと、キーボードが動かなくなると、ネットワークインターフェイスが不足し、システムをリモートで制御できなくなります。ある問題を別の問題と交換しているようです。
デビッドシュワルツ

1
@DavidSchwartz:これは主に理論的な質問であり、コンピューターアーキテクトの観点から取られています。それでも、ユーザーのハメ撮りから一つのアプリケーションがあります:「私のコンピュータがスタックしている、Ctrl + Alt + Backspaceキーに応答しない:私は、PS2キーボードを探したりと、ハード再起動を忘れなければならない」
PPC

2
@PPC:Ctl-alt-delはとにかく動作しません。再起動プロセスは、プログラムのシャットダウン、キャッシュのフラッシュなどを行う高レベルのソフトウェアによって制御されます。割り込みストームでは、高レベルのソフトウェアは機能しません。
デビッドシュワルツ

回答:


17

IRQの範囲ではなく、3つの主な要因です。

  1. バス混雑の量
  2. データ量
  3. データパスの長さ

過去には、キーボードとマウスには専用のIRQ(キーボード用のIRQ1、PS / 2マウス用のIRQ12)がありました。

これは、キーが押されたときに、CPUにほぼ直接の線があったことを意味しました(PICを使用しますが、まだ1つだけジャンプします)。これにより、特にIRQ1があるため、ハードウェアでキーボードイベントを非常に高速に処理できました。(もちろん、これはすべて通常のキーボードの使用に関するものであり、キーボードコントローラーからCPUに直接移動するリセット行を無視します。)

一方、USBデバイスはすべて同じバスとUSBコントローラのIRQ(通常、NIC、ビデオカードなどの他のデバイスと共有されるIRQステアリングのものの1つ)を共有します。そのため、USBキーボードの場合、イベントはキーボードコントローラーからUSBバスを介してUSBホストコントローラーへ、そこからセカンダリPIC、マスターPIC、OSまたはBIOSのいずれかのドライバーへと送信されます、次にCPUに。さらに、USB経由で転送されるデータにエラーチェックデータが追加されます。

言い換えれば、ATまたはPS / 2キーボードよりもUSBキーボードの方が単純に多くのことを行っています。データパスはより長く、より多くのデータがあり、ソフトウェアを通過する必要さえあります。USB帯域幅が十分に広い場合でも、同じポートに他のデバイスがあると、衝突と遅延が発生します(ハブを追加できますが、その上のすべてのポートはコントローラー上の同じポートのままです)。まだまだ待っていることがあります。

さらに、独自の(IRQは、古いキーボードが必要なときにいつでもCPUの処理を中断できることを意味しました。USBの場合、キーボードにはそのようなメカニズムがなく、USBコントローラーがCPUを中断するまでデータを送信して待機/希望することしかできませんある時点で。

仮想キーボードは、ハードウェアと競合できないソフトウェアを確実に通過するため、さらに悪化します。

ATまたはPS / 2キーボードとUSBキーボードの違いを簡単に視覚化したものを次に示します。

ここに画像の説明を入力してください


私は優先順位よりも速度にはそれほど興味がありません。データパスが長くなると、キーストロークが待機する可能性があることを理解しています。しかし、「障害のあるシステムでキーストロークが失われる可能性がある」ことを考えています。これはパスの長さに依存しないと思います。
PPC

CPUにヒットする前に、どのようにIRQをソフトウェアで処理できますか?APICには独自のプロセッサがありますか?それらのルーチンは中央メモリにありますか?CPU時間を「借りる」のですか?
PPC

>「故障したシステムでキーストロークが失われる可能性があります」 それは故障に依存しますが、はい、明らかに、USBキーボードは余分な複雑さのためにキーストロークを失う可能性がはるかに高くなります。 > Re:APIC はい、キーボードコントローラーにプロセッサーがある、ビデオカードにGPUがあるなど、ある程度の処理を行うプロセッサーがあります。ほとんどのハードウェアには、何らかの処理を処理するチップがあります。
Synetech

> CPUにヒットする前に、IRQをソフトウェアでどのように処理できますか? USBキーボードにはドライバーがあるだけでなく、USBコントローラーにもドライバーがあります。キーボードデータではなく、それはのようないくつかの事ので、その後、CPUまたは必要に応じて他のソフトウェアに、キーボードのドライブに、そのドライバに、USBコントローラにキーボードを通して方法を作る、CPUにまっすぐ行かないCtrl+Alt+Del「ドンtはハードウェアラインを介して機能しますが、ソフトウェアを介して処理されます。
Synetech

キーストロークの基本的なデータフローは、USBコントローラー、APIC、Low-pri IRQ経由のCPU入力、USB ISR / IST、CPU自己生成IRQ(TRAPなど)、キーボードISR / ISTになりますか?このように、関連する優先度はUSBコントローラーの優先度です。私の質問では、USBコントローラがUSBパケットを実際のキーボードIRQに変換できると思いました。
PPC

14

短い答え

両方のキーボードは、ユーザーレベルのコードに対してまったく同等に機能します。デバイスドライバーを作成する場合、わずかな違い(最新のPCではナノ秒からマイクロ秒)が発生する場合があります。システムがハングした場合、両方のキーボードで問題は解決しません。ハードリブートに進みます。


ロングアンサーTL; DR;

割り込みとは何ですか?

ハードウェア(またはカーネルなどのOS内部ソフトウェアの重要な部分)がプロセッササービスを必要とする場合、メッセージまたは割り込みを起動し、プロセッサに実行中の処理を延期し、この要求を処理するよう要求します。

使い方?

ハードウェアが割り込み(キーを押すなど)を生成すると、この要求は割り込みコントローラーに入ります。その後、コントローラーはマシンコードの1行でCPUを直ちに中断します(CPUは引き続きこの最後の行を実行します)。プロセッサがこの要求を処理する準備ができると、割り込みコントローラに割り込み要求(IRQ)と処理ルーチンを要求します。割り込みコントローラーには、内部データ構造があります- 特定のIRQに対してCPUによって実行されることになっているルーチンへのポインターを含む割り込みディスパッチテーブル

すべての異なる割り込みは、明確に制限された割り込み要求レベル(IRQL)に対応しています。たとえば、x86システムでは32個のIRQLがあり、x64およびIA64では実際には16個のIRQLがあります。明らかに、IRQLよりも多くのハードウェアデバイスとソフトウェアサービスがあるため、一部のシステムオブジェクトはすべてIRQLを共有します。

x64のIRQLテーブル

    IRQL | 説明
--------------------------------------------
    15 | 人目を引く
    14 | プロセッサ間割り込み/電源
    13 | 時計
    12 | 同期する
    11 | デバイスN
    .. | ...
     3 | デバイス1
     2 | ディスパッチ/ DPC
     1 | APC
     0 | パッシブ/ロー

IRQLが大きい(数値が大きい)ほど、優先順位が高くなります。システムのすべてのコンポーネントは、プロセッサの現在のIRQLを可能な限り低いレベル-0に維持しようとします。高レベルの割り込みが発生すると、プロセッサの現在のIRQLレベルが上がり、低レベルの割り込みは処理されません。より高いレベルの割り込みはすべて解決されます。IRQスケジューラがプロセッサ実行のために同じレベルの複数のIRQをキューに入れることができる場合、IRQはバッチ処理できます。

ポイントは?

これはすべて、エンドユーザーをハードウェアの複雑さから切り離し、多くのタイプのハードウェア/ソフトウェアで動作できるユニバーサルアーキテクチャを作成するように本当にうまく設計されています。

  1. ユーザーレベルのコード(カーネルレベルではない)は、プロセッサがパッシブ/低(0)IRQLの場合にのみ実行されます。ポイントは、すべてのIRQLが処理された後にのみ、アプリケーションでキー押下イベントを処理できることです。したがって、キーボードの場合、どのIRQLがハードウェア割り込みに割り当てられているかは関係ありません。

  2. IRQLはOSの抽象化にすぎず、明確に設定されていません。対応するIRQとIRQLはWindowsレジストリに保存され(たとえば)、熱狂的なユーザーは手動で変更できます。

結論

質問からの引用

USBキーボードは、いくつかのIRQチャネルにしかアクセスできないUSB汎用ドライバーとアーキテクチャに依存しているため、他の(PS2などの)コントローラーのように優先度が高いIRQへのキーボードアクセスを与えることはできません。

おそらく著者は、より少ないIRQチャネルではなく、より低いIRQLを意味していました。とにかく、最近のPCではユーザーには表示されないため、実際には問題ではありません。可能な違いはナノ秒からマイクロ秒のレベルであり、カーネルレベルでのみ発生します。どちらの場合も、ユーザーレベルのコードはOSカーネルによってブロックされます。

これは(もしそうなら)USBキーボードが別のポートタイプに接続されたキーボードよりも応答性が低いことを意味しますか?

OSの設計方法のせいではありません。OSが何かでビジーで「遅い」場合、両方のキーボードは同じように動作します。

たとえば、別の中優先度割り込みルーチンでスタックしている障害のあるシステムで、中優先度IRQにマップされたUSBキーボードを使用します。

この場合、システムはBSODになり、IRQ処理ルーチンは特定の標準(高速、同期、非ブロッキングなど)に合わせて設計する必要があります。これとカーネルからの逸脱はBSODになります。

優先度が比較的高いため、キーボードイベントは無視され、Ctrl-Alt-delまたはその他の緊急キーストロークを送信することはできません。

システムがハングした場合、多くの問題が発生する可能性がありますが、ほとんどの場合、キーストロークIRQLはドライバーレベルで処理されます。問題は、OSが他の処理を実行しているため、そのような通知をサブスクライブしたアプリケーションに配信されないことです。


私がターゲットにしているアプリケーションは、ウィンドウマネージャー(簡単な場合)またはOSそのものです。私は私のCPUは、きれいにそのUSB様IRQL処理を落とし、私の同期ディスク-前-I-リブート-あなた受け取ることを期待
PPC

>>これは、USB kbdsの応答性が低いことを意味しますか。「いいえ」の回答の詳細を教えてください。
PPC

@PPCでデバイスドライバーを設計する場合、USB kbdsはナノ秒からマイクロ秒ほど遅くなる可能性があります。ユーザーレベルのコードに関心がある場合、レベル> 1のIRQLが処理されているとき、コードはブロックされたままになります。したがって、kbd IRQLが最高のIRQLまたは中程度のIRQLに等しいかどうかは関係ありません。ユーザーコードがブロックされています。
oleksii
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.