• ベストアンサー

DMAとIOPの違い

ソフトウェア開発技術者(平成15年 問20)やプロダクションエンジニアの過去問題で、DMA制御方式の説明を選ぶ問題があります。 「イ CPUを介さずに入出力装置と主記憶装置間のデータ転送を行う」 これが正解なのは納得できますが、 「エ 入出力制御専用のプロセッサによってデータ転送を制御する」 これが不正解な理由が分かりません。 様々なサイトによると、入出力制御専用プロセッサ方式をIOPともいうらしいですが、ではDMAとIOPの違いは何なのでしょうか。 この区別を図示したサイトを探していますが、見つかりませんでした。 DMAとIOPの違いを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#99860
noname#99860
回答No.1

> DMAとIOPの違いは 「DMA」の定義を正確に知らないので参考程度にして頂きたいのですが、 以下のような方式もあります。 メモリからデータを読み出す時、DMA コントローラがアドレスを指し、メモリからデータが出てきたら データを使うデバイスがタイミングをあわせてそのデータを取り込みます。 メモリへの書き込み時はその逆です。 つまり、1回のデータ転送が、1バスサイクルで完了します。 対して、CPU や IOP による転送は、1.自らがメモリを読み、一旦取り込む2.データを使うデバイスにデータを渡す と、 2サイクルを要します。 IOP とは、「転送専用のサブCPUのようなもの」で、 データ転送の方式は CPU と同じだったりします。 うろ覚えですが、かつての 8086 CPU用の 8089 というIOP がこのようなモノでした。 前者の「1バスサイクルで済む方式」は、速度が出ますが、 例えばメモリに書き込む際はバスを駆動するデバイスが2者であり連携が必要になるなど、 ハードウェア的に若干煩雑になります。

ryonryon17
質問者

お礼

ありがとうございます。 1サイクルと2サイクルの区別がとても分かりやすかったです。 また、「IOP とは、「転送専用のサブCPUのようなもの」」ということで、イメージ的には「しっかりと独立したプロセッサ」という感じがしました。 それに対してDMAは、入出力部分をサポートする簡易なコントローラという感じでしょうか。 なるほど、8086 CPU用ということは、かつて制御用?(マイコン)などで使われていたということですね。 「制御用で目にしたことがある」という記事を見つけたのですが、このことでしたか。 大分イメージできました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#99860
noname#99860
回答No.2

No.1 です。 > 8086 CPU用ということは、かつて制御用?(マイコン)などで いえいえ、あのPC-9801 初代機のメインCPUはたしかコレですから。 「制御用CPU」というわけでもありません。 尚、コントローラとプロセッサの境界も曖昧になりつつある気もします、 明確な呼び分けは「メーカがそう命名した」のに従うしかないのかとも思います。

ryonryon17
質問者

お礼

ありがとうございました。 8086用CPU、制御用 ---> すみません。うろ覚えのZ80と勘違いしてトンチンカンなこと言ってました。 >あのPC-9801 初代機のメインCPUはたしかコレ あぁ!なるほど。 15年位前のNECの98シリーズですね。ズバリ分かりました。  

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • OSの入出力管理

    OSの入出力制御とCPUの制御装置の入出力装置制御との違いがわかりません。同じことしてるの?それとも違うんですか?教えてください

  • OSの機能

    制御装置の入出力制御とOSの入出力制御の違いを教えてください

  • この加工機械とパソコンはつながるでしょうか?

    画像の加工機械とパソコンをRS232Cのケーブルで繋いでデータの入出力はできるでしょうか? 職場で使用している加工機械で型番が大隈豊和機械のR2NC 制御機械がOH-OSP-HMGです 制御機械の方にDB-25のRS232C端子がついています。 ただこれとは別にパンチャリーダーがついているので もしかして出力専用なのかもしれないと考えています。 NCデータの入出力装置の「USBぴ~太郎」さんの対応機種の中に 上記の制御装置があったので使えるだろうと思っていますが この制御機械とパソコンでデータの入出力はできるでしょうか ご教授をお願い致します。

  • データ転送の違い

    データ転送 プログラム転送 バッファ転送 DMA転送 以上のうち、バッファ転送はCPUを介さずに直接データをやりとりすることでCPUの負担を減らす転送、 バッファ転送は処理速度や転送速度を補うための一時的に保存する領域からの転送だと認知しておりますが、プログラム転送はそれらとはどのような違いがあるのでしょうか? これらの違いをお願い致します。

  • 増設HDDの転送モードがDMAにならない

    増設したHDDの転送モードがDMAになりません。 このサイトなどの関連する情報を元に色々試しましたがだめでした。 (レジストリ操作、IDEチャネルドライバの削除など) ケーブルも問題ありません。 プライマリのデバイス0のHDDはDMA5動いているのですが スレーブに設定してあるデバイス1のHDDはPIOモードです。 増設したHDDもDMA5で動かすにはどうしたらよいのでしょうか? 現在の環境は以下の通りです。 M/B Name INTEL 875P Processor Intel(R) Pentium(R) 4 CPU 2.60GHz VideoCard 128 DDR ATI Radeon 9800 Resolution 1280x1024 (32Bit color) Memory 523,260 KByte OS WindowsXP Home SP1 Intel(R) 82801EB Ultra ATA Storage Controllers プライマリ IDE チャネル IC35L120AVV207-1 <= DMA5で動作中 ST3120026A      <= PIOで動作中 <=これをDMAで動かしたい Intel(R) 82801EB Ultra ATA Storage Controllers セカンダリ IDE チャネル _NEC DVD+RW ND-1100A

  • デジタル出力回路について

    PCのパラレルポートからのデジタル入出力で実験装置を制御するシステムの作成をしておりますが、電気回路の知識に乏しいのでどなたか助けてください。 パラレルからのデジタル入出力制御はできています。 パラレルポートからデジタル出力で実験装置を制御できるのですが、実験装置からの出力信号はON/OFFスイッチのみです。ON/OFFをデジタル5Vトリガー信号としてパラレルポートに戻せないので、実験装置からの出力データを制御PCに入力できません。 実験装置からのON/OFF信号で5Vトリガー信号を出力できる回路があれば全て解決すると思うのですが・・・ 高価なデジタル入出力ボードを購入すれば問題なく作成できますが、できるだけ安く作成したいのです。 若しくは、代替解決案があれば是非教えてください。 宜しくお願いします。

  • OSI参照モデル

    明日テストで出るのですが、テスト対策プリントの説明文から何層なのかを求める問題が、教科書・ノートと一致していないため、正解なのか分かりません。(答えは貰えない) なので教えていただけると嬉しいです。 (1)データを円滑に、効率よく送受信するための同期制御や通信方式を規定する。 (2)データの伝送路の選択やデータを中継する方式。 (3)ファイル転送や電子メールの送受信など、アプリケーションが提供する通信サービスを規定する。 (4)各種ケーブルなどの伝送媒体を利用して、ビットの単位のデータを伝送する方式を規定する。 (5)データの伝送路を提供する方式を規定し、システム間のデータ伝送を保障する。 (6)データ伝送を効率よく行うため、データ形式の変換やデータ圧縮の方式などを規定する。 (7)伝送制御方式を規定し、物理的に接続され隣接した機器間でのデータ伝送を保障する。 以上です。 よろしくお願いします。

  • マイクロプロセッサ毎のニーモニックの違い

    アセンブリ言語レベルでの話です。 データ転送命令は、どのプロセッサでも必須の命令ですが、これにはld系とmov系があります。 この二つの違いを教えてください。 とりあえず、私が考えたのは、 1. メーカーによる違いでもなさそう。  インテルは8ビットCPUでld命令、16ビット以降でmov命令ですね。  最悪なのはATMELのAVR。同じプロセッサでldとmovがある。 2. データ転送の向きによる区別でもなさそう。  インテルは「mov dst,src」だし、日立は「mov src,dst」 の2つですが、両方とも反例がありました。

  • サービスルーチンの実行の流れ

    (c)ある処理を実行中に割込が発生してから、対応するサービスルーチンを実行し、元の処理に復帰するまでの一般的な処理の流れを説明せよ。 (1)プログラムの実行 (2)割り込み要求 (3)状態の退避 プロセッサは入出力装置の応答を待たずに実行中のプログラムをいったん停止して、他のプログラムを実行する。 (4)割り込み処理 元のプログラムに入出力動作が指定されると、OSに処理を依頼する。OSは入出力動作を起動し、他のプログラムに制御を渡す。 (5)状態の復元 入出力装置からの動作完了割り込みがあったとき状態を復元 (6)プログラムの再開 OSは入出力処理を実行後、元のプログラムの実行を再開する。 と6段階のフローにして考えてみました。合っていますでしょうか?

  • 標準ストリームが理解できません

    標準ストリームの意味が理解できず困っています。 色々なサイトを回って調べてみたのですが、あるサイトではデータが通る経路だと書かれていたり、またあるサイトでは入出力装置から情報を受け取ったり情報を渡したりするということだ、と書かれていたりなにが正しいのかさっぱりです。 普通に標準入出力関数とかは使ってきましたが、stdin等は理解しておく必要がありますよね?標準ストリームは具体的にどういう物か教えていただけたらうれしいです。回答お待ちしています。