キャッシュメモリの基礎:福田昭のデバイス通信 ARMが語る、最先端メモリに対する期待(6)(1/3 ページ)
今回は、キャッシュメモリについて解説する。キャッシュの考え方はとてもシンプルだが、実装となるとさまざまな方法があって複雑だ。今回は、3つのキャッシュアクセス構造について説明しよう。
キャッシュとは何か
国際会議「IEDM」のショートコースで英国ARM Reserch社のエンジニアRob Aitken氏が、「System Requirements for Memories(システムがメモリに要望する事柄)」と題して講演した内容を紹介するシリーズの第5回である。
前回は、CPUの基本的なアーキテクチャを説明した。またCPUの演算性能を向上させるさまざまな手段が、メモリ・システムを複雑にしていることを述べた。今回は、キャッシュメモリ(キャッシュ)の基礎に関する講演部分をご紹介する。
キャッシュとは本シリーズの第3回で既に説明したように、メモリ階層ではCPU(レジスタ)とシステム・メモリ(主記憶あるいはメインメモリとも呼ぶ)の間に存在し、システム・メモリの内容のごく一部を一時的に保存しておくメモリである。キャッシュはシステム・メモリに比べるとはるかに高速で、その代わりに記憶容量が小さい。
キャッシュに保存するのは、CPUが頻繁にアクセスすると予想される命令や数値(データ)などである。キャッシュによって低速なシステム・メモリへのアクセス頻度を最大限度まで減らし、CPUの平均的な待ち時間を短縮することによって実効的な演算性能を高める。
キャッシュには、CPUとシステム・メモリを接続するバス(メモリバス)のデータ転送速度に対する要求値を下げるという働きもある。これはコスト低減と消費電力低減の両方に効く。
キャッシュの基本的な用語
キャッシュの基本的な考え方は非常に分かりやすい。しかし、その実装方法は多様で複雑であり、あまり分かりやすいとはいえない。キャッシュ技術に関する用語だけでも、標準的なメモリの世界とは随分と違っている。ここでは基本的な用語にしぼって解説しておくことにする。
まず、キャッシュに格納するデータの大きさの単位を決める必要がある。この大きさの単位を「ライン(Line)」と呼ぶ。ラインの大きさ(長さ)は、16バイトから256バイトくらい。キャッシュの容量が大きなときは、ラインも大きくしやすい。
それから、キャッシュに格納したデータのアドレスもキャッシュに格納する必要がある。このアドレスを「タグ(Tag)」と呼ぶ。といってもラインの大きさで決まる下位ビットのアドレス(例えば64バイトのラインだと下位6ビット)はタグにする意味がないので、必要な上位ビットのアドレス(上位アドレス)だけをタグとする。
当然ながら、ラインの本数は1本ではない。例えば容量16Kバイトのキャッシュでラインのサイズが32バイトだとすると、ラインの本数は512本となる。このラインの集まりを、「セット(Set)」と呼ぶ。セットの数がいくつになるかは、ラインの本数とキャッシュアクセスの構造によって決まる。
キャッシュアクセスの構造に関連する基本用語が、「ウエイ(Way)」と「インデックス(Index)」である。これらの用語の説明は後述する。
Copyright © ITmedia, Inc. All Rights Reserved.