web-dev-qa-db-ja.com

デバイスコントローラーとは何ですか?カーネルとデバイスの間のどこに収まりますか?

誰かがデバイスコントローラー(ハードディスクコントローラー、NEC PD765互換コントローラーなど)の概念を説明できますか?.


説明に必要となる可能性のある重要な用語の定義を次に示します。同期という用語を維持するためだけに:)

カーネル-ハードウェアデバイスにアクセスするための抽象化を提供するソフトウェア

ドライバー-カーネルモジュールとしてロードされ、カーネルにデバイスの制御方法に関する知識を提供する、ハードウェアメーカーによって作成された低レベルのプログラム

ファームウェア-ハードウェアの内部ロジックを定義するハードウェア固有のプログラム。カーネルは通常、起動のたびにファームウェアがデバイスにアップロードされる場合を除いて、それらとは何の関係もありません。その場合、カーネルがアップロードを行います。


デバイスコントローラーはどこに収まり、マザーボード上のデバイス自体に配置されていますか?

ドライバーは、デバイス自体に直接ではなく、コントローラーへのインターフェイスをカーネルに提供しますか?

コントローラーの背後にあるアイデアは、同じドライバーで異なるメーカーのデバイスを制御できるようにすることでしたか?

コントローラーの背後にあるアイデアは、同じドライバーで異なるメーカーのデバイスを制御できるようにすることでしたか?

いいえ。主な目的は、デバイスとプロセッサ間のインターフェイスの一部を提供することです。コントローラには独自のドライバがあります。これは、接続されているデバイスに必要なドライバーに追加されます。

インターフェイスが必要な理由は、プロセッサが高度に特殊化されているためです。コントローラは、プロセッサの特殊な世界からさまざまなデバイスへの一種のトランスレータです。プロセッサには、外部への物理データ接続が1つだけあり(バス)、さまざまなものはありません。実際、一般に、コントローラとプロセッサは、プロセッサをマザーボードに接続するブリッジです。次に、デバイスコントローラがマザーボードに接続され、ブリッジを介して通信します。したがって、チェーンには4つの個別の物理エンティティがあります。プロセッサ->ブリッジ->コントローラ->デバイス、すべてには、独自のソフトウェアドライバが含まれます(プロセッサ、ブリッジチップセット、各コントローラ、および各デバイスのドライバ)。

下の図を このウィキペディアの記事 から見ると、下部の青いボックスはデバイスコントローラーを表しています。

enter image description here

[Alexander Taubenkorb著、Creative Commons Attribution-Share Alike 3.0]

5
goldilocks

デバイスコントローラーは通常、バスアービターです。多くの場合、特定のバス上のデバイスと直接通信するのではなく、コントローラーと通信します。次に、コントローラーは、コントローラーを介して要求した内容に基づいて、バス上のデバイスにコマンドを送信するタイミングと方法を決定します。

ウィキペディアには、この件に関して次の内容があります http://simple.wikipedia.org/wiki/Device_controller

抜粋

デバイスコントローラーは、接続されたデバイスからデータを受信し、コントローラー内のいくつかの特別な目的のレジスター(つまりローカルバッファー)に一時的に保存します。次に、データをデバイスドライバーと通信します。各デバイスコントローラーには、デバイスコントローラーが割り込みを介してオペレーティングシステムと通信するための標準インターフェイスである同等のデバイスドライバーがあります。デバイスコントローラーはハードウェアですが、デバイスドライバーはソフトウェアです。

4
slm