- ベストアンサー
DMAとIOPの違い
ソフトウェア開発技術者(平成15年 問20)やプロダクションエンジニアの過去問題で、DMA制御方式の説明を選ぶ問題があります。 「イ CPUを介さずに入出力装置と主記憶装置間のデータ転送を行う」 これが正解なのは納得できますが、 「エ 入出力制御専用のプロセッサによってデータ転送を制御する」 これが不正解な理由が分かりません。 様々なサイトによると、入出力制御専用プロセッサ方式をIOPともいうらしいですが、ではDMAとIOPの違いは何なのでしょうか。 この区別を図示したサイトを探していますが、見つかりませんでした。 DMAとIOPの違いを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> DMAとIOPの違いは 「DMA」の定義を正確に知らないので参考程度にして頂きたいのですが、 以下のような方式もあります。 メモリからデータを読み出す時、DMA コントローラがアドレスを指し、メモリからデータが出てきたら データを使うデバイスがタイミングをあわせてそのデータを取り込みます。 メモリへの書き込み時はその逆です。 つまり、1回のデータ転送が、1バスサイクルで完了します。 対して、CPU や IOP による転送は、1.自らがメモリを読み、一旦取り込む2.データを使うデバイスにデータを渡す と、 2サイクルを要します。 IOP とは、「転送専用のサブCPUのようなもの」で、 データ転送の方式は CPU と同じだったりします。 うろ覚えですが、かつての 8086 CPU用の 8089 というIOP がこのようなモノでした。 前者の「1バスサイクルで済む方式」は、速度が出ますが、 例えばメモリに書き込む際はバスを駆動するデバイスが2者であり連携が必要になるなど、 ハードウェア的に若干煩雑になります。
その他の回答 (1)
No.1 です。 > 8086 CPU用ということは、かつて制御用?(マイコン)などで いえいえ、あのPC-9801 初代機のメインCPUはたしかコレですから。 「制御用CPU」というわけでもありません。 尚、コントローラとプロセッサの境界も曖昧になりつつある気もします、 明確な呼び分けは「メーカがそう命名した」のに従うしかないのかとも思います。
お礼
ありがとうございました。 8086用CPU、制御用 ---> すみません。うろ覚えのZ80と勘違いしてトンチンカンなこと言ってました。 >あのPC-9801 初代機のメインCPUはたしかコレ あぁ!なるほど。 15年位前のNECの98シリーズですね。ズバリ分かりました。
お礼
ありがとうございます。 1サイクルと2サイクルの区別がとても分かりやすかったです。 また、「IOP とは、「転送専用のサブCPUのようなもの」」ということで、イメージ的には「しっかりと独立したプロセッサ」という感じがしました。 それに対してDMAは、入出力部分をサポートする簡易なコントローラという感じでしょうか。 なるほど、8086 CPU用ということは、かつて制御用?(マイコン)などで使われていたということですね。 「制御用で目にしたことがある」という記事を見つけたのですが、このことでしたか。 大分イメージできました。