メモリの構成と性能
要点と定義
メモリは、速度・容量・ビット当たりのコストなどが異なる記憶装置を組み合わせて構成します。プロセッサに近い高速な記憶と、容量を確保しやすい主記憶を階層化し、よく使うデータをキャッシュに置くと、主記憶へのアクセスを減らせます。主記憶のアクセスがプロセッサの処理に比べて遅い場合、キャッシュのヒットによる実効アクセス時間の短縮が期待できます。
DRAMはコンデンサの電荷でデータを保持するため、電源が入っている間も定期的なリフレッシュが必要です。セル構成が比較的単純で高密度化しやすく、ビット当たりのコストを抑えやすい特徴があります。SRAMはフリップフロップでデータを保持し、DRAMのようなリフレッシュを必要としません。速度や容量、コストなどの要件に応じて使い分けます。
キャッシュヒットは、必要なデータがキャッシュにあり、そのデータを使える状態です。ミスでは、通常、必要なデータを主記憶から取得します。ヒット率を h、ミス率を m とすると h + m = 1 です。ヒット時とミス時の時間をそれぞれ tₕ、tₘ とすれば、平均アクセス時間は h × tₕ + m × tₘ です。確率と時間を対応させ、容量比を確率として代用しないことが要点です。
ミス時にキャッシュを確認してから主記憶にもアクセスするなら、その両方の時間がミス時にかかります。例えば主記憶の時間を T、キャッシュの時間を T/20、ヒット率を 0.9 とすると、平均は 0.9 × T/20 + 0.1 × (T/20 + T) = 0.15T です。ミス時にキャッシュ時間を含めるかは、示された処理手順に従います。
複数段のキャッシュでは、後段のヒット率が「前段ミス後に後段を調べた場合」の割合であることがあります。前段のヒット率が 0.8、前段ミス後の後段ヒット率が 0.5 なら、全体のヒット率は 0.8 + (1 − 0.8) × 0.5 = 0.9 です。前段でのヒット分と、前段ミス後の後段ヒット分を足します。
キャッシュへの書込みにはライトスルーとライトバックがあります。ライトスルーはキャッシュと主記憶の両方に書き込み、主記憶を新しい内容に保ちます。ライトバックは通常、キャッシュを更新して主記憶への反映を遅らせます。更新済みデータを追い出すときは、主記憶への書戻しが必要になる場合があります。
メモリインタリーブは、主記憶を複数の独立したバンクに分け、アクセス先を交互に割り当てる方式です。あるバンクの処理中に別のバンクを利用できるため、アクセス効率を高められます。効果はアクセスの並びやバンク構成などの条件に左右されます。
ECCは、誤り検出や訂正のための冗長な情報を加える仕組みです。過去の出題で扱った補足として、ハミング符号に追加のパリティを組み合わせる方式では、1ビット誤りの訂正と2ビット誤りの検出を扱います。検出だけを行う方式と、訂正もできる方式は区別します。
適用条件と例
平均時間を求めるときは、各場合の確率と、そこで実際にかかる時間を組にします。ヒット率が 0.92、ヒット時間が 3 ns、ミス時間が 43 ns なら、平均は 0.92 × 3 + 0.08 × 43 = 6.2 ns です。ミス時間にキャッシュ確認の時間が含まれているか確かめてから計算します。
二段のキャッシュなら、後段ヒット率の分母を確認します。前段ミス後の割合なら、前段ミス率を掛けて全アクセスに対する後段ヒット分を求めます。ヒット率の定義が異なる場合は、与えられた条件に合わせて計算します。
メモリインタリーブは、独立したバンクへアクセスを振り分け、処理を重ねられると効率を上げやすい方式です。キャッシュのようにデータを高速な記憶へ置く仕組みとは働きが異なります。記憶装置を選ぶときは、速度だけでなく、必要容量やコストなども考慮します。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む