概要
情報技術の基礎として理解しておきたいメモリとバスについて、主記憶、キャッシュメモリ、データ格納方式、更新方式、ヒット率、記憶領域管理、バスを整理する。
メモリは、プロセッサが扱うデータや命令を一時的に保持する場所となる。
キャッシュやバスの仕組みを理解すると、コンピュータ全体の性能がどこで決まりやすいかを把握しやすくなる。
この記事の構成
- メモリ
メモリの意味と要点を具体例から整理。 - キャッシュメモリ
キャッシュメモリの意味と要点を具体例から整理。 - データの格納方式
キャッシュメモリでデータ管理する際は、 ブロックと呼ばれる一定長の単位で管理。 - データの更新方式
データの更新方式の手順と確認ポイントを整理。 - ヒット率
ヒット率とは、CPUがデータへアクセスするとき、要求したデータがキャッシュメモリ上に存在する割合のこと。 - メモリインタリープ
メモリインタリープとは、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)によって変化する。
データの格納方式
キャッシュメモリでデータ管理する際は、ブロックと呼ばれる一定長の単位で管理する。
このとき、メモリのデータがキャッシュメモリのどこにあるか把握する仕組みが必要でこの管理方法には、次の方式がある。
-
ダイレクトマップ方式
主記憶上の各ブロックについて、アドレスのインデックス部から格納できるキャッシュラインを一つに決める方式。検索対象を一つに絞れるため回路を単純にできるが、同じキャッシュラインに対応するブロック同士で競合ミスが起こりやすい。
-
フルアソシアティブ方式
主記憶上のブロックを、キャッシュ内の任意のキャッシュラインへ格納できる方式。空きがなければ、置換アルゴリズムで追い出すラインを決める。検索時は全ラインのタグを並列に比較する必要があるため回路は複雑になるが、格納場所の制約による競合ミスは起こりにくい。
-
セットアソシアティブ方式
キャッシュを複数のセットに分け、アドレスから格納先のセットを一つに決め、そのセット内の任意のウェイへ格納する方式。検索時は選択されたセット内のタグを並列に比較。ダイレクトマップ方式の単純さと、フルアソシアティブ方式の競合しにくさを折衷した方式となる。
データの更新方式
プロセッサからキャッシュメモリを更新した後、その内容をメモリへ反映させる更新方式として、次の2種類がある。
-
ライトスルー方式
プロセッサがキャッシュを更新するたびに、その内容を下位のメモリにも書き込む方式。下位メモリとの内容差を小さくしやすい一方、書込みトラフィックが増える。書込みバッファを併用して、プロセッサの待ち時間を抑える場合もある。
-
ライトバック方式
プロセッサからの書込みではキャッシュだけを更新し、そのラインをダーティ状態として管理する方式。ダーティなラインを置き換えるときなどに下位メモリへ書き戻すため、書込み回数を減らせる一方、制御は複雑になる。
なお、複数のCPUコアやキャッシュ間で保つキャッシュコヒーレンシは、ライトスルー/ライトバックの選択だけで決まるものではなく、別途コヒーレンスプロトコルなどで管理する。
ヒット率
ヒット率とは、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}\) として、与えられた時間の定義に合わせる。
メモリインタリープ
メモリインタリープとは、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 などがある。
まとめ
- 主記憶は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転送速度表記の公式指針)