コンテンツにスキップ

メモリ階層とは

メモリ階層とは、速くて小さい記憶と、遅くて大きい記憶を積み重ねて使う仕組みです。 記憶素子は一般に大容量になるほど遅くなるため、1種類の素子では大容量と高速を両立できません。高速・小容量の記憶(キャッシュ)と低速・大容量の記憶(仮想記憶)を組み合わせて、2つの要求に同時に応えます。記憶階層とも呼びます。この設計が働くのは、プログラムのアクセス先に偏りがあるからです。

速さと容量は引き換えで、1種類の素子では両立できない

Section titled “速さと容量は引き換えで、1種類の素子では両立できない”

SRAM、DRAM、フラッシュメモリと、半導体のメモリが何種類もあるのはこのためです。高い性能のために記憶装置へ求められる特徴は大容量性と高速性ですが、記憶素子は一般に大容量になるほどアクセス速度が低下するため、2つを両立することは不可能です1。そこで、両立をあきらめて組み合わせます。記憶階層は、応用情報技術者試験のシラバス2でも「(3)メモリシステムの構成と記憶階層」として項目が立つ標準的な区分で、情報処理推進機構(IPA)は主記憶装置の構成やメモリシステムの構成、記憶階層といった記憶装置の仕組みを修得して応用することを求めています。

「速いSRAMを全部に使えばいい」という案は、容量で行き詰まります。SRAMは高速にアクセスできる一方で、内部構造が複雑なため高密度な実装が難しく、大容量には向きません3。DRAMは集積化しやすい構造のため、SRAMより大容量です。SRAMは記憶部にフリップフロップ回路を用いるのでリフレッシュが要らず、記憶部の回路が複雑なため高価ですが、DRAMより高速に動きます4。DRAMはデータをコンデンサの電荷として蓄えるため、時間がたつと自然放電で消えてしまい、1秒間に数十回のリフレッシュが要ります。

速い・小さい・高いという組と、遅い・大きい・安いという組があり、3つは束になって動きます。選べるのは組の単位です。

書き込み時間は、上端と下端で約7桁離れる

Section titled “書き込み時間は、上端と下端で約7桁離れる”
層ごとの書き込み時間
書き込み時間(対数)レジスタL3キャッシュメインメモリSCMストレージ1 ns未満3 ns未満約10 ns0.1〜1 µs10 ms超約7桁
点線の間隔が1桁です。レジスタの1 ns未満からストレージの10 ms超まで、書き込み時間はおよそ7桁開き、SCMはメインメモリとストレージのあいだに入ります。

産業技術総合研究所5は2016年6月20日の発表資料で、「近い将来のメモリ階層予測」としてレジスタ、L1・L2キャッシュ、L3キャッシュ、メインメモリ、ストレージクラスメモリ(SCM)、ストレージ(HDD&SSD)の7つの層を並べ、書き込み時間を対応させました。L1・L2キャッシュを除く層の値は次のとおりです。

層書き込み時間
レジスタ1 ns 未満
L3 キャッシュ3 ns 未満
メインメモリ約 10 ns
ストレージクラスメモリ(SCM)0.1〜1 µs
ストレージ(HDD&SSD)10 ms 超

1 ns未満と10 ms超を比べると、開きはおよそ7桁です。同じ予測では書き込み電力も層に沿って変わり、レジスタ層が1 fJ未満、L3キャッシュ層が約1 fJ、メインメモリ層が約100 fJ、SCM層が100 fJ超です。上の層ほど速く、1回の書き込みに使うエネルギーも小さい一方、容量は小さく、ビットあたりは高くつきます。

アクセス先が偏るから、小さな速い層で大半をまかなえる

Section titled “アクセス先が偏るから、小さな速い層で大半をまかなえる”
局所性とキャッシュ
CPUキャッシュ時間的局所性よく使う一部を載せる空間的局所性主記憶
一度使った番地はまた使われやすく、その近くも次に使われやすくなります。この偏りがあるので、よく使う一部だけをCPUの近くのキャッシュへ載せれば、大半のアクセスがそこで済みます。

遅い層が大半なのに全体が速く動くのは、プログラムのアクセス先に偏りがあるからです。参照されたロケーション(アドレス、Address)は近い将来に再度参照される可能性が高く、これを時間的局所性(Temporal Locality)と呼びます1。参照されたアドレスの近辺も次に参照される可能性が高く、こちらは空間的局所性(Spatial Locality)です。

次にアクセスする先は、前に触れた場所から予想がつきます。アクセス先が完全にばらばらなら、階層にする意味は消えます。偏っているので、よく使う一部だけを上の層に載せておけば、大半のアクセスがそこで済みます。

キャッシュは、この性質の上に成り立つ記憶装置です。主記憶上のデータのうち今後アクセスされる可能性の高いものを格納しておく、高速で小容量な記憶装置で、コンピュータ全体の速度を上げるためにCPU(プロセッサ)と主記憶装置の間に入ります。

マイコンでは、SRAMはチップの中に、DRAMは外に置かれる

Section titled “マイコンでは、SRAMはチップの中に、DRAMは外に置かれる”
マイコンの中と外
シングルチップマイコン演算回路レジスタSRAMコピーDRAM周辺回路として接続
マイコンではSRAMが内蔵RAMとしてよく使われ、メモリのデータはレジスタへコピーしてから演算します。DRAMは論理回路と同じウェハーに作りにくいので、チップの外に置かれることがほとんどです。

階層の一番上にあるのは、CPUの中のレジスタです。演算する値や演算結果を置く汎用レジスタと、演算フラグなどに使うフラグレジスタがあります。演算回路はメモリの値を直接計算するのではなく、メモリ上のデータを汎用レジスタへ一時的にコピーし、そのレジスタで演算します3。

シングルチップマイコンでは、SRAMが内蔵RAMとしてよく使われます。DRAMは大容量に向くものの、高速な論理回路とDRAMを1つのウェハー上に作るのが難しいため、一般的なシングルチップマイコンには内蔵されず、周辺回路として外に接続されることがほとんどです。速いSRAMはCPUと同じチップに入ることが多く、大容量のDRAMは作り方の違いからチップの外に置かれることがほとんどです。

主記憶と補助記憶では、求められる条件が違う

Section titled “主記憶と補助記憶では、求められる条件が違う”

日常語の「メモリ」と「ストレージ」は、階層の別の段です。コンピュータから見て、CDやDVDなどは外部記憶装置あるいは補助記憶装置4、コンピュータが直接使うメモリは内部記憶装置または主記憶装置と呼ばれ、主記憶装置には半導体が使われます。

RAMは一時的な記憶作業領域で、ノートやメモ用紙にあたります。ROMは半永久的な記憶領域で、辞書や教科書にたとえられます。RAMには、電源を切ったときに情報が失われてもよい代わりに、低価格で読み書きの速度が速いことが求められます。層ごとに、要求される中身が入れ替わります。

主記憶とストレージの隙間を、SCMが埋めにかかる

Section titled “主記憶とストレージの隙間を、SCMが埋めにかかる”

段と段のあいだが開いている場所もあります。ストレージクラスメモリ(SCM)は、主記憶(DRAM)とストレージ(フラッシュメモリ、SSD)の性能・容量のギャップを補完する高速な不揮発性メモリです6。DRAMもフラッシュも置き換えず、あいだを埋める位置づけです。書き込み時間で見ても、SCMの0.1〜1 µsは、メインメモリの約10 nsとストレージの10 ms超のあいだに入ります。

2016年の産総研の予測では、SCMの層に対応できる不揮発性メモリはまだありませんでした。キオクシアは、DRAMに代表されるワーキングメモリと現在のフラッシュメモリのパフォーマンスギャップを埋めることを目指したXL-FLASH7を製品にしています。階層はいまも段が足されている途中です。

性能とコストで棲み分ける発想は、記憶デバイス全体に及ぶ

Section titled “性能とコストで棲み分ける発想は、記憶デバイス全体に及ぶ”

よく使うものだけを速い側へ載せる考え方は、CPUの周りを越えて記憶デバイス全体に及びます。情報記憶デバイスシステムは、性能とコストによって適用場所を棲み分けてきました8。ビットコストは、2011年6月時点で、高い方からフラッシュメモリ、ハードディスクドライブ、光ディスク、磁気テープの順です。

階層ストレージシステムでは、データ利用の統計的な傾向を使い、常にアクセスが要る小容量の情報だけを高性能な側に置き、アクセスの少ない大半の情報は低コストな側に置きます。こうすると高価な高性能RAIDシステムの容量を増やさずに済み、システム全体のコストを抑えられます。キャッシュと同じ偏りを、ストレージの段で使っている形です。

メモリ階層とは何ですか?

高速かつ小容量の記憶と、低速かつ大容量の記憶を階層構造に組み合わせ、大容量性と高速性の2つの要求に応える仕組みです。記憶階層とも呼びます。

なぜ何種類も要るのですか?

容量と速さが引き換えの関係にあるためです。記憶素子は一般に大容量になるほどアクセス速度が低下するため、大容量性と高速性は両立できません。

なぜ階層にすると速くなるのですか?

プログラムの参照に偏りがあるためです。参照されたアドレスは近い将来に再度参照されやすく(時間的局所性)、その近辺も次に参照されやすい(空間的局所性)ので、よく使う一部を速い層に載せておけば大半のアクセスがそこで済みます。

キャッシュとは何ですか?

頻繁に用いるデータを一時的に保存するバッファです。容量は小さいものの動作速度が速く、CPUと主記憶装置の間に入ります。

速いメモリだけで作るとどうなりますか?

容量の側で行き詰まります。SRAMは高速にアクセスできる一方で内部構造が複雑なため高密度な実装が難しく、担う範囲は小容量にとどまります。DRAMは集積化しやすい構造のため、SRAMより大容量です。

主記憶と補助記憶はどう呼び分けるのですか?

CDやDVDなどは外部記憶装置あるいは補助記憶装置、コンピュータが直接使うメモリは内部記憶装置または主記憶装置と呼びます。主記憶装置には半導体が使われています。

層と層の間に隙間はありますか?

あります。ストレージクラスメモリ(SCM)は、主記憶(DRAM)とストレージ(フラッシュメモリ、SSD)の性能・容量のギャップを補完する高速な不揮発性メモリです。

8件を表示
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8