メモリ階層と性能
1回のミスで64バイトのラインを読み、主記憶の待ち時間が100 nsのとき、同時に処理できるミスが1つだけなら読み出しの帯域は約0.64 GB/sにとどまる。同時に10個のミスを処理できれば、帯域はおよそいくらになるか。(ほかの制約はないものとする)
- A0.064 GB/s
- B0.64 GB/s
- C6.4 GB/s
答えと解説を見る
正解:C. 6.4 GB/s
帯域は、同時に処理中のデータ量を待ち時間で割って求められます(リトルの法則)。ミスが1つなら 64 B ÷ 100 ns = 0.64 GB/sで、同時に10個処理できれば 10 × 64 B ÷ 100 ns = 6.4 GB/sになります。主記憶の帯域を使いきるには、待ち時間を短くするだけでなく、多くのミスを同時に処理するメモリレベル並列性が欠かせません。0.64 GB/sは同時に1つの場合の値のままで、0.064 GB/sは逆に10で割った値です。
- A. 0.064 GB/sは10倍ではなく10分の1にした値です。
- B. 0.64 GB/sは同時に1つしか処理できない場合の値です。
- C. 正しい。10 × 64 B ÷ 100 ns = 6.4 GB/sです。