web-dev-qa-db-ja.com

「コントロールレジスタ」、「ステータスレジスタ」、「データレジスタ」はデバイス自体の一部ですか?

ここ からメモリマップI/Oについて勉強しています。私は以下を読みました:

CPUから見ると、I/Oデバイスは、次の3つの一般的なタイプの特殊用途レジスタのセットとして表示されます。

  • ステータスレジスタは、I/Oデバイスに関するステータス情報をCPUに提供します。これらのレジスタは多くの場合読み取り専用です。つまり、CPUはビットを読み取ることしかできず、変更することはできません。
  • 構成/制御レジスタは、デバイスを構成および制御するためにCPUによって使用されます。これらの構成レジスタのビットは書き込み専用である可能性があるため、CPUはビットを変更できますが、読み戻すことはできません。コントロールレジスタのほとんどのビットは、読み取りと書き込みの両方が可能です。
  • データレジスタは、I/Oデバイスからのデータの読み取りまたはI/Oデバイスへのデータの送信に使用されます。

この画像(リンクしたページから)はレジスタを示しています。

enter image description here

しかし、私が理解していないのは、それらのレジスターがデバイス自体の一部であるのか(たとえば、プリンターの一部であるのか)、またはコンピューターの一部なのか?

3
John

コンピューター、コントローラー、およびデバイスは、広くファジーな概念です。これは、非常に多くの異なる説明がある理由を説明しています。

ハードウェアコントローラーとは何ですか?

controller は異なる意味を持ちます。例えば:

  • これは、マザーボード上の専用チップ(またはより複雑なチップセット)にすることができ、インターフェースポートを経由する通信の制御に特化しています。典型的な例は SBホストコントローラー または 統合コントローラー 、または古いマシンでは ARTコントローラー または キーボードコントローラー です。 。これらのコントローラーは、バスまたは外部コネクターに接続されています。
  • たとえば、ネットワークカードや RAIDディスクコントローラ など、PCIスロットに接続されたより複雑なボードを使用できます。一部の人々は、そのような複雑なものをそれ自体がデバイスとして(その複雑さのために)見ている一方で、これを内部バスに接続された別のコントローラとして見ているだけです。
  • マイクロコントローラー (つまり、一種の単純化されたCPU)であり、デバイスに統合して、いくつかの処理タスクを実行し、ケーブルの反対側にあるものとの通信を整理できます。コンピューターの観点からコントローラーを説明するほとんどの人は、これを彼らの説明から省略しています。それは無関係なデバイスの内部だからです。ただし、デバイスには独自の頭脳が必要です。古いPCキーボードのような単純なものでも、リモートキーボードに接続するピン/ワイヤが5〜6本しかない場合、マザーボード上のコントローラーは102キーの状態をどのようにして知ることができますか。 ?まあ、単純な キーボード内のコントローラー もあります。

経験則として、コンピューターとデバイスの間にケーブルがいくつかある場合、ケーブルの両側に少なくとも1つのコントローラーがあることに間違いはありません。

コントローラはコンピュータにありますか?

これは、コンピューターに設定した境界によって異なります。

  • コアまたはコンピューター(つまり、CPU、メモリ、クロック)を意味しますか?この場合、答えはノーになります。
  • マザーボードのことですか?この場合、考えているコントローラーの種類に応じて、答えが「はい」または「いいえ」になる可能性があります。
  • あなたは箱、つまり外界との物理的な境界を意味しますか?そして、はい:ボックスのコネクターはいつでも、ボックスにもコントローラーがあります。

ただし、コントローラーがコンピューター側にあるという事実は、デバイス側に(非表示の)コントローラーがあることを排除するものではありません。

今すぐDMAに!

コントローラーがバスに直接接続されている場合(前のレイドコントローラーの例を参照)、またはコントローラーがマザーボード上にあり、バスに接続されている場合があります。

バスを介してI/Oを行うには、プロセッサがデバイスをバイト単位またはワード単位でアドレス指定し、メモリにコピーする必要があります。この単純なコピータスクはCPUをビジー状態に保つため、これは非常に非効率的です。

したがって、DMAがあります。プロセッサは、DMAコントローラーにジョブを実行するように指示し、DMAコントローラーはデバイスをアドレス指定して、取得したバイトをCPUを解放して、より興味深いタスクを実行できるようにします。

2
Christophe

それらはデバイスの一部です。

それらはメモリの一部であるかのように扱われます。これは、メモリとデバイスが同じバスに接続されているために機能します。あなたは彼らと同じように話します。

カードをマザーボードに接続したことがある場合は、デバイスをバスに接続したことがあるでしょう。

コンピュータに接続されているすべてのデバイスはプラグアンドソケットで接続され、ソケットはデバイスコントローラに接続されます。デバイスコントローラーは、バイナリコードとデジタルコードを使用します。各デバイスコントローラーには、ローカルバッファーとコマンドレジスタがあります。割り込みによりCPUと通信します。デバイスのコントローラーは、そのデバイスの操作において重要な役割を果たします。デバイスとオペレーティングシステム間のブリッジとして機能します。

ウィキペディア:デバイスコントローラー

コントローラーをデバイスの一部と考えるのはなぜですか?なぜなら、デバイスのプラグを抜くと、通常、コントローラーがそれに対応するからです。

0
candied_orange

2つの実装があります。コントローラが「サウスブリッジ」と一緒に配置されている場合、DMA(ダイレクトメモリアクセス)のアーキテクチャについて説明できます。

最新のアーキテクチャでは、コントローラはデバイスに配置できます。これは、中断を処理するための非常に単純な例です。

一般に、コンピューターエンジニアリングの最新の進歩により、オンボードのデバイスの独自の「システムリソース」を見つけることができるため、コントローラーはデバイスの一部と考えることができます。デバイスが「システムリソース」を所有していない場合、デバイスはコンピューターのシステムリソースを使用します。もちろん、この場合、コントローラーはコンピューターのマザーボードに配置されます。

ここに非常に明確な説明があります: https://eleccompengineering.files.wordpress.com/2014/07/structured_computer_organization_5th_edition_801_pages_2007_.pdf また、第6版はより強力です。

0