概要
情報技術の基礎として理解しておきたい メモリ と バス について、主記憶、キャッシュメモリ、データ格納方式、更新方式、ヒット率、記憶領域管理、バスを整理する。
小さなキャッシュで衝突や書込みを追い、ヒット率を実際のアクセス時間へ換算する。格納方式の比較とバス帯域の単位計算から性能値を読む際の前提を確認する。
この記事の構成
- メモリ
メモリの意味と要点を具体例から整理。 - キャッシュメモリ
キャッシュメモリの意味と要点を具体例から整理。 - データの格納方式
ブロック1と5の衝突例で格納場所の制約と連想度の効果を確認。 - データの更新方式
データの更新方式の手順と確認ポイントを整理。 - ヒット率
ヒット時とミス時の時間を分け、平均アクセス時間を数値で比較。 - メモリインタリープ
メモリインタリープとはCPUとメモリのデータ転送を高速化する技術で、データを複数のメモリバンクへ順番に分割配置し、データ読み出し時に複数のメモリバンクへ並列的にアクセスすることで効率化する技術のこと。 - 記憶領域の管理方式
可変長の空き領域から要求された大きさを割り当てる代表的な探索方法を整理。 - バス
バスとはデータをやり取りするための伝送路のことで、次の種類がある。
メモリ
記憶装置とは情報を記憶する装置で主記憶装置と補助記憶装置に分類され、主記憶装置は以下RAMとROMに分類される。
-
RAM(Random Access Memory)
一般的にRAMのことをメモリと呼ぶ。RAMは読み書きが自由で電源供給がなくなると書き込まれた情報が消えるため、電源状態に関わらず保存すべき情報は補助記憶装置に退避させ、必要に応じてRAM(メモリ)へ呼び出す。
また、RAMには次の2種類がある。
-
DRAM(Dynamic RAM)
コンデンサに蓄えた電荷でデータを保持するため、電源供給中も一定間隔でリフレッシュする必要がある。SRAMと比べてアクセスは低速だが、メモリセルの構造が単純で高密度化しやすく、ビット単価が低いため、主に主記憶装置として用いられる。
現在の主記憶で広く用いられるのはシステムクロックに同期して動作するSDRAM(Synchronous DRAM)である。データ転送を高速化したDDR SDRAMには、DDR、DDR2、DDR3、DDR4、DDR5などの世代がある。最初の世代のDDRは後続世代と区別するためにDDR1と呼ばれる場合もある。
-
SRAM(Static RAM)
電源供給中はリフレッシュを行わずにデータを保持できる。ただし、DRAMと同じく電源を切るとデータが失われる揮発性メモリである。DRAMと比べて高速だが、メモリセルの構造が複雑で高密度化しにくく、ビット単価が高い。そのため、主に下記で触れるキャッシュメモリとして用いられる。
-
-
ROM(Read Only Memory)
ROMは電源を切ってもデータを保持する不揮発性メモリで、狭義には読み取り専用だが、ROMの分類には消去や再書込みができるものも含まれる。製造時に内容を書き込み変更できないマスクROM、利用者が一度だけ書き込めるPROM、紫外線で消去して再書込みできるEPROM、電気的に消去・再書込みできるEEPROMなどがある。フラッシュメモリはEEPROMの一種で、一般に一定のブロック単位で消去する。相変化メモリは材料の相状態を利用する別方式の不揮発性メモリであり、PROMの一種ではない。
キャッシュメモリ
キャッシュメモリとはプロセッサとメモリの性能差を埋めるために両者の仲立ちをするメモリを指し、高速である必要があるため、上記SRAM(Static
RAM)が用いられる。
※ 一般的なキャッシュメモリのほとんどがCPUのチップ内に内蔵されている。
キャッシュメモリはアドレス管理を効率化しより高速化するため、以下データの格納方式(*1)や更新方式(*2)に様々なアーキテクチャを採用している。
また、その効果はヒット率(*3)によって変化する。
-
よく使うデータを置くだけでなく、アクセスの偏りを利用する
配列を先頭から順に読む処理では今読んだ要素の近くを続けて読む。これが空間的局所性であり、周辺のデータをキャッシュライン単位でまとめて持ってくる効果につながる。同じループ内で繰り返し参照する値には時間的局所性がある。一方、キャッシュに収まらない大きな領域をばらばらに読む処理では、持ってきたデータを再利用する前に追い出してしまうことがある。キャッシュ容量だけでなく、データを読む順序もヒット率に影響する。
データの格納方式
キャッシュメモリでデータ管理する際はブロックと呼ばれる一定長の単位で管理する。
このときメモリのデータがキャッシュメモリのどこにあるか把握する仕組みが必要でこの管理方法には次の方式がある。
-
ダイレクトマップ方式
主記憶上の各ブロックについてアドレスのインデックス部から格納できるキャッシュラインを一つに決める方式。検索対象を一つに絞れるため回路を単純にできるが、同じキャッシュラインに対応するブロック同士で競合ミスが起こりやすい。
-
フルアソシアティブ方式
主記憶上のブロックをキャッシュ内の任意のキャッシュラインへ格納できる方式。空きがなければ置換アルゴリズムで追い出すラインを決める。検索時は全ラインのタグを並列に比較する必要があるため回路は複雑になるが、格納場所の制約による競合ミスは起こりにくい。
-
セットアソシアティブ方式
キャッシュを複数のセットに分け、アドレスから格納先のセットを一つに決め、そのセット内の任意のウェイへ格納する方式。検索時は選択されたセット内のタグを並列に比較。ダイレクトマップ方式の単純さとフルアソシアティブ方式の競合しにくさを折衷した方式となる。
-
空きがあっても衝突するダイレクトマップの例
キャッシュに4ラインあり、主記憶のブロック番号を4で割った余りの位置へ格納するとする。ブロック1と5はどちらも位置1に入る。そのため1、5、1、5と交互に読むと、毎回もう一方を追い出し、他の位置に空きがあってもミスを繰り返す。同じ4ラインを「2組、各組2ライン」の2ウェイセットアソシアティブ方式にし、ブロック番号を2で割った余りで組を選ぶと、1と5は同じ組に同居できる。この例では最初の読み込み後に両方を保持でき、衝突ミスを避けられる。容量不足によるミスと格納場所の制約によるミスは区別して考える。
データの更新方式
プロセッサからキャッシュメモリを更新した後、その内容をメモリへ反映させる更新方式として次の2種類がある。
-
ライトスルー方式
プロセッサがキャッシュを更新するたびにその内容を下位のメモリにも書き込む方式。下位メモリとの内容差を小さくしやすい一方、書込みトラフィックが増える。書込みバッファを併用してプロセッサの待ち時間を抑える場合もある。
-
ライトバック方式
プロセッサからの書込みではキャッシュだけを更新し、そのラインをダーティ状態として管理する方式。ダーティなラインを置き換えるときなどに下位メモリへ書き戻すため、書込み回数を減らせる一方、制御は複雑になる。
なお、複数のCPUコアやキャッシュ間で保つキャッシュコヒーレンシは、ライトスルー/ライトバックの選択だけで決まるものではなく、別途コヒーレンスプロトコルなどで管理する。
-
同じ場所を3回書いたときの違い
キャッシュ内の値を10→11→12と3回書き換える。書込みの結合などを省いた単純なライトスルー方式では、下位のメモリにも3回の書込みが必要になる。ライトバック方式では変更済みであることを記録し、追い出すときに最終値12を書けばよい。ただし、その間の下位メモリには古い値が残る。他の装置からの参照やデータの受渡しでは、必要な整合性を保つ仕組みも考慮する。書込み回数が減る利点とどこが最新値を持つかの管理は一組になる。
ヒット率
ヒット率 とは CPU がデータへアクセスするとき、要求したデータが キャッシュメモリ上に存在する割合 のこと。
-
実効アクセス時間
ヒット率 を基に平均的なアクセス時間を表したもの。ヒット率を \(h\)、キャッシュのアクセス時間を \(T_c\)、主記憶のアクセス時間を \(T_m\) とし、ミス時はキャッシュを確認してから主記憶へアクセスすると仮定すると、次のように算出できる。ここではキャッシュラインの転送や書戻しなどの追加時間は考えない。実効アクセス時間 \(= hT_c + (1-h)(T_c+T_m) = T_c + (1-h)T_m\)
問題文で「ミス時のアクセス時間」にキャッシュ確認時間まで含めている場合は、\(hT_c + (1-h)T_{miss}\) として、与えられた時間の定義に合わせる。
-
ヒット率の差を待ち時間に換算する
キャッシュの確認に2 nsかかり、ミスした場合だけ主記憶へのアクセスに追加で80 nsかかる単純なモデルを考える。ヒット率が95%なら、平均アクセス時間は次のようになる。\[ 0.95\times2+0.05\times(2+80)=2+0.05\times80=6\ \mathrm{ns} \]ヒット率80%では \(2+0.20\times80=18\) nsになり、この例の平均待ち時間は3倍になる。式ではミスした場合にも最初の2 nsがかかることを含めている。問題文の「主記憶の時間」が追加時間なのか、ミス時の合計時間なのかによって式を読み分ける必要がある。
メモリインタリープ
メモリインタリープとはCPUとメモリのデータ転送を高速化する技術で、データを複数のメモリバンクへ順番に分割配置し、データ読み出し時に複数のメモリバンクへ並列的にアクセスすることで効率化する技術のこと。
記憶領域の管理方式
主記憶などの可変長の空き領域から要求された大きさの領域を割り当てる際の代表的な探索方法として、次の2種類がある。キャッシュラインの配置方式とは別の概念となる。
-
ファーストフィット方式
空き領域のリストを先頭から検索し、要求された大きさを満たす領域のうち最初に見つかった領域を割り当てる方法。 -
ベストフィット方式
空き領域の中から要求された領域の大きさを満たす最小の領域を割り当てる方法。
バス
バスとはデータをやり取りするための伝送路のことで、次の種類がある。
-
シリアルバス
\(1\) ビットずつ順番にデータを転送する直列の伝送路のこと。 -
パラレルバス
複数ビットをひとかたまりにして複数本の通信路でデータを転送する並列の伝送路のこと。また、パラレルバスは高速化するほど信号間のタイミングを取ることが難しくなるため、次で触れるUSBを筆頭にシリアルバスでの高速化が主流となっている。
以下、代表的なバス。
-
USB(Universal Serial Bus)
周辺機器を接続するためのシリアルバス規格の一つで、マウスやキーボード等、様々な周辺機器が接続できる。また、USBケーブルから電力を供給して周辺機器自体を動作させるバスパワーが使用できる。
-
USBの規格
USBは規格名の変更が行われてきたため、末尾の数字だけでは転送速度を判断できない。例えば旧称のUSB 3.0、USB 3.1 Gen 1、現在の仕様上のUSB 3.2 Gen 1x1は、いずれも最大信号速度5Gbpsを表す。主な仕様上の名称と最大信号速度は次のとおり。実際の転送速度は符号化やプロトコルのオーバーヘッド、接続機器などにより低くなる。
- USB \(1.1\)
→ 最大12Mbps(フルスピードモード) - USB \(2.0\)
→ 最大480Mbps(ハイスピードモード、半二重通信) - USB 3.2 Gen 1x1
→ 最大5Gbps(旧称 USB 3.0、USB 3.1 Gen 1) - USB 3.2 Gen 2x1
→ 最大10Gbps(旧称 USB 3.1 Gen 2) - USB 3.2 Gen 2x2
→ 最大20Gbps - USB4
→ 実装する仕様により最大20Gbps、40Gbps、80Gbps
USB-IFは消費者向けの表記として世代名よりもUSB 5Gbps、USB 10Gbps、USB 20Gbpsなど、速度を明示する名称を推奨している。
- USB \(1.1\)
-
IEEE 1394 AV機器等を接続するためのシリアルバス規格の一つで、アップルが提唱したFireWireを標準化したもの。
PCポートからDVDドライブに接続し、DVDドライブポートからハードディスクに接続するといった前の機器に次の機器を数珠繋ぎに連結していくデイジーチェーン方式を採用している。
-
ATA(Advanced Technology Attachment) コンピュータとハードディスク間のインターフェース規格でパラレルバス規格の一つでパラレルATAとも呼ばれる。
-
シリアルATA パラレルATAをシリアルバスにして高速化したインターフェース規格でハードディスク、SSD、光学ドライブなどの接続規格となっている。
以下のBluetoothとZigBeeは機器間接続に使われるが、配線を共有するバスではなく無線通信規格となる。
-
Bluetooth ディジタル機器用の近距離無線通信規格の一つで2.4GHz帯を利用し、マウスやキーボードなどの周辺機器を接続できる。
また、Bluetoothのバージョン 4.0でBLE(Bluetooth Low Energy)という規格で大幅に省電力化された。
-
ZigBee センサーネットワークで用いられる低電力、低速の規格で、ワイヤレスセンサーネットワーク構築に適した無線通信規格。
-
DisplayPort モニターディスプレイなどの出力装置を接続するディジタル映像・音声インターフェース規格。
※ 同種の規格として HDMI、DVI、VGA などがある。
-
転送幅と転送回数から理論上の帯域を求める
データ幅64 bit、周波数100 MHzで、1クロックにつき1回転送するなら、\(64/8\times100\times10^6=800\times10^6\) byte/s、すなわち800 MB/sが理論値になる。ここでは1 MBを100万byteとしている。1クロックに複数回転送する方式ではその回数も掛ける必要がある。一方、実効速度では制御情報や待ち時間などの影響を受ける。「幅」「周波数」「一周期の転送回数」を分けると、bitとbyteの取り違えやクロック周波数だけの比較を避けられる。
まとめ
- 主記憶はCPUが直接扱う作業領域、補助記憶はデータを長期保存する領域で、速度と容量の違いから記憶階層を構成する。
- キャッシュはヒット率が高いほど平均アクセス時間を短縮できる。ライトスルーは書込みごとに下位メモリへ反映し、ライトバックは置換時などにまとめて書き戻す。
- ファーストフィットは最初に見つかった十分な空き領域、ベストフィットは条件を満たす最小の空き領域を割り当てる。
- バスには1ビットずつ転送するシリアル方式と複数ビットを同時に転送するパラレル方式がある。BluetoothとZigBeeは無線通信規格であり、バスとは区別する。
- 同じキャッシュ容量でも参照順序や格納場所の制約でヒット率は変わる。平均アクセス時間を求める際はミス時の値が追加時間か合計時間かを区別する。
参考文献
- 瀬戸 美月(\(2020\))『徹底攻略 応用情報技術者教科書』株式会社インプレス
- ルネサス エレクトロニクス - マイコンの基本構成、動作(日本語・CPUとメモリ構成の公式解説)
- Arm - L210 Cache Controller Technical Reference Manual(英語・キャッシュ制御の技術資料)
- Linux Kernel Documentation - Memory Management Documentation(英語・仮想記憶管理の公式解説)
- USB-IF - USB Data Performance Language Usage Guidelines(英語・USB転送速度表記の公式指針)