インターフェース・バス規格
ネットワークカードやNVMeのSSDなどで広く使われる、メモリ上の記述子(ディスクリプタ)の輪(リング)を使ったDMAのしくみについて正しいものはどれか。
- ACPUがデータを1バイトずつ機器のレジスタに書き込んで転送する
- BCPUは転送の番地や長さを記述子に書いて機器に知らせるだけで、機器が記述子を読んで自分で転送を進める
- C記述子は機器の中にだけあり、CPUからは見えない
答えと解説を見る
正解:B. CPUは転送の番地や長さを記述子に書いて機器に知らせるだけで、機器が記述子を読んで自分で転送を進める
記述子のリングは、メインメモリ上に並べた「どの番地から何バイト送るか」を書いた表を輪のように使うしくみです。CPUは空いている記述子に転送の内容を書き、機器のレジスタに「ここまで書いた」と1回知らせます。機器はDMAで記述子を読み、データを転送し、終わった記述子に完了の印を付けます。CPUと機器が互いを待たずに多くの転送を進められます。
- A. それはDMAを使わないプログラムによる入出力です。
- B. 正しい。多くの転送をまとめて機器に任せられます。
- C. 記述子はメインメモリに置かれ、CPUと機器の両方が読み書きします。