インターフェース・バス規格
PCI Expressの機器のレジスタやメモリを、CPUから読み書きできるようにするしくみとして正しいものはどれか。
- A起動時にOSなどが機器の要求する大きさを調べ、BAR(ベースアドレスレジスタ)に番地を割り当てて、メモリの番地として見えるようにする
- B機器ごとに、製造時に固定の番地が決められている
- CCPUは機器のレジスタを読めず、すべてDMAでやり取りする
答えと解説を見る
正解:A. 起動時にOSなどが機器の要求する大きさを調べ、BAR(ベースアドレスレジスタ)に番地を割り当てて、メモリの番地として見えるようにする
PCI Expressの機器は、自分のレジスタやメモリの大きさをBARで知らせます。起動時にファームウェアやOSが接続されたすべての機器を調べ(列挙)、番地がぶつからないように割り当てます。その後CPUは、割り当てられた番地を普通のメモリのように読み書きして機器を操作します。機器を後から差したときも、同じように番地が割り当てられます。
- A. 正しい。メモリマップドI/Oとして使います。
- B. 固定だと機器どうしで番地がぶつかってしまいます。
- C. CPUはレジスタを直接読み書きできます。