今日、実際にはコンピュータはさまざまなストレージ技術を使用しています。各技術は特定の機能に対してスピードや容量が適合するよう利用されます。
次のような技術があります。
CPU レジスタ
キャッシュメモリ
RAM
ハードドライブ
オフラインバックアップストレージ(テープ、光学ディスクなど)
機能性とコストの観点から、こうした技術はいずれかの形態をとります。例えば、CPU レジスタなら、
高速(ナノ秒単位のアクセスタイム)
低容量(通常、200バイト未満)
制限の厳しい拡張機能(CPU アーキテクチャでの変更が必要)
コスト高(1ドル/バイト以上)
しかし、もう一方の形態、オフラインバックアップストレージは、
低速(アクセスタイムは数日単位で考慮される、バックアップメディアを長距離移動する必要がある場合など)
非常に高容量(数十ギガバイトから数百ギガバイト)
本質的には無制限の拡張機能(制限があるとすればバックアップメディアを収容するためのフロアスペース)
低コスト(数セント/バイト)
異なる機能を持つテクノロジーをそれぞれ使用することで、可能な限り低コストで最大のパフォーマンスを得られるようシステム設計を詳細に調整することができるようになります。次のセクションではストレージの形態における各テクノロジーについて説明します。
現在実行されている命令のアドレス保存から他目的データの保存及び処理まで、最近の CPU 設計にはさまざまな目的のレジスタがあります。CPU レジスタは他の CPU と同じ速度で実行します。さもないと、全体的なシステムのパフォーマンスに重大なボトルネックとなるからです。CPU によって行われるほぼすべての動作が何らかの形でレジスタと関連するためです。
CPU レジスタ数 (及びその使用)は CPU 自身の構造上のデザインに大きく関わります。 別のアーキテクチャの CPU に移行しない限り、CPU レジスタ数を変更することはできません。こうした理由から、CPU レジスタ数を変更しようとすると作業負担が多いばかりでなく経費もかかるため、不変だと考えることができるでしょう。
キャッシュメモリの目的は、非常に限られた高速の CPU レジスタと比較的遅く大きなメインシステムのメモリ間のバッファとして動作することです。通常、RAM[1]と呼ばれています。キャッシュメモリは CPU と同様の動作速度で、CPU がキャッシュ内のデータにアクセスするとき CPU はデータの待機中にはなりません。
キャッシュメモリはこのように構成されるため、データが RAM から読み込まれるときは常に、システムハードウェアは目的のデータがキャッシュにあるかどうか最初に確認します。データがキャッシュにあれば、すぐに取り出し CPU によって使用されます。しかし、データがキャッシュにないと、そのデータは RAM から読み込まれ、CPU に転送されている間にキャッシュにも置かれます(後で必要となる場合のために)。CPU の観点からは、これらすべては透過的に行われるのでキャッシュ内のデータへのアクセスと RAM 内のデータへのアクセスとの違いはデータが返されるまでの時間差だけです。
記憶容量の観点から見ると、キャッシュは RAM よりずっと小さな容量です。従って、RAM 内の各バイトが必ずしもキャッシュ内に固有の場所を持っているわけではありません。このように、RAM の各エリアをキャッシュするのに使用されるセクションにキャッシュを分割する必要があり、また、キャッシュの各エリアが異なるタイミングで RAM の各エリアをキャッシュできるようにするメカニズムが必要です。キャッシュと RAM のサイズが異なっていても、連続して局所化するというストレージアクセスの性質により、小さな容量のキャッシュが効果的に大きな容量の RAM に高速アクセスすることができます。
CPU からデータを書き込むときは、もう少し複雑になります。2種類の方法をとることができます。いずれの場合も、データはまずキャッシュに書き込まれます。ただし、キャッシュの目的はRAM 内の選択部分の内容の高速コピーとして機能することですから、データの一部がその値を変更するときはいつもその値はキャッシュメモリと RAM のいずれにも書き込まれる必要があります。さもないと、キャッシュ内のデータと RAM 内のデータが一致しなくなってしまいます。
2種類の方法はその実行手段が異なります。ライトスルーキャッシングは、変更データを RAM へ即座に書き込みます。しかし、ライトバックキャッシングは変更データの RAM への書き込みを遅らせます。遅らせるのは、頻繁に変更されるデータの一部を RAM に書き戻さなければならない回数を減らすためです。
ライトスルーキャッシュの実行は比較的簡単です。このため、最も一般的です。ライトバックキャッシュの実行は幾分複雑です。実際のデータを保存する他に、キャッシュされたデータをクリーン(キャッシュ内のデータが RAM 内のデータと同じである)またはダーティ(キャッシュ内のデータが変更されている、RAM 内のデータは最新ではない)としてフラッグできる何らかのメカニズムを管理する必要があります。また、定期的にダーティなキャッシュエントリを RAM にフラッシュバックする方法も必要です。
最近のコンピュータ設計のキャッシュサブシステムは複数レベルになっていることがあります。つまり、CPU とメインメモリ間に複数組のキャッシュがあることがあります。キャッシュレベルは番号付けされることが多く、CPU に近いほど番号は小さくなります。多くのシステムはキャッシュレベルが 2 つです。
1 次キャッシュは CPU チップに直接配置されていることが多く、CPU と同じ速度で動作します。
2 次キャッシュは CPU モジュールの一部であることが多く、CPU 速度(またはそれに近い速度)で動作し、1 次キャッシュと比べると少しだけ容量が大きく速度も遅くなります。
3 次キャッシュがあるシステムもあります(通常、高性能サーバ)。通常はシステムのマザーボードの一部になっています。すでにお気づきかもしれませんが、3 次キャッシュも 2 次キャッシュに比べると容量が大きくなります(また、ほとんどの場合遅い)。
いずれの場合も、すべてのキャッシュサブシステムの目的は — シングルレベル、複数レベルいずれにせよ — RAM への平均アクセスタイムを短縮することです。
最近のコンピュータは、RAM が大量の電子記憶装置を構成しています。データやプログラムの使用中に、このデータとプログラムの両方の記憶装置として利用されます。最近のシステムのほとんどの RAM 速度はキャッシュメモリとそのハードドライブの中間で、どちらかと言えばキャッシュメモリに近い速度です。
RAM の基本動作は実際には非常に単純です。最低レベルには RAM チップがあります — 実際の"記憶"を行う集中サーキットこのことです。このチップには外部へ4種類の接続があります。
電力接続(チップ内で回路を動作させる)
データ接続(チップからのデータ入出力を可能にする)
読み込み/書き込み接続(チップにデータを保存するのかチップからデータを取り出すのかをコントロールする)
アドレス接続(データの読み込み/書き込みがチップ内のどこに行なわれるかを確定する)
RAM 内にデータを保存するのに必要となる手順です。
保存されるデータはデータ接続に行きます。
データが保存されるべきアドレス(場所)はアドレス接続に行きます。
読み込み/書き込み接続が書き込みモードに設定されます。
データの取り出しはそのまま単純です。
目的データのアドレスはアドレス接続に行きます。
読み込み/書き込み接続は読み込みモードに設定されます。
目的データがデータ接続から読み込まれます。
この手順は簡単に見えますが、高速で処理され各手順はナノ秒単位で行われています。
今日作られている RAM チップのほとんどがモジュールとして販売されています。各モジュールは小さなサーキットボードに装着された個々の RAM チップから構成されています。その構造や電子的な配置は各種の業界標準に従っているので、さまざまなベンダーからメモリを購入できるようになっています。
![]() | 注記 |
---|---|
業界標準の RAM モジュールを使用する主な利点は、システムのメーカー以外からもモジュールを入手することができるため RAM のコストを抑えることができることです。 ほとんどのコンピュータは業界標準の RAM モジュールを使用していますが例外もあります。最も顕著な例がノートブックPC(これも一定の標準を採用するようになってきました)やハイエンドサーバです。ただし、これらも、そのシステムが比較的ポピュラーになり新しいデザインではなくなると、他社の RAM モジュールが利用できるようになる可能性があります。 |
ここまで解説してきたテクノロジーは本来すべて揮発性です。つまり、電源を切ると揮発性のストレージに格納されているデータは失われます。
一方、ハードドライブは 非揮発性です。ハードドライブが格納しているデータは電源が抜かれてもそこに残ります。このため、ハードドライブはストレージ形態上、特殊な位置にいます。こうした非揮発性の性質は長期的に使用するプログラムやデータの保存に理想的です。もうひとつ特有の点として、ハードドライブは RAM やキャッシュメモリと異なり、ハードドライブに保存されているプログラムは直接実行することができません。まず、プログラムは RAM に読み込まれる必要があります。
また、キャッシュや RAM との違いはデータの保存と取り込み速度です。ハードドライブは少なくともキャッシュや RAM に使用されているあらゆる電子技術と比較しても絶対的に遅くなります。速度における違いは主に電気機械的な性質によるものです。ハードドライブからまたはハードドライブへの各データ転送が行なわれるのに 4 段階あります。次にこの 4 段階と、一般的な高性能ドライブがそれぞれの段階を完了するのにかかる平均を合わせて示します。
アクセスアームの移動 (5.5 ミリ秒)
ディスクの回転 (0.1 ミリ秒)
ヘッドのデータ読み込み/書き込み (0.00014 ミリ秒)
ドライブの電子部品とのデータ転送 (0.003 ミリ秒)
これらの中で、最後の段階だけが機械的な動作に依存していません。
![]() | 注記 |
---|---|
ハードドライブに関して他にも知っておく必要があることはたくさんありますが、ディスクストレージの技術に関しては 章5章 で解説しています。さしあたっては、RAM とディスクベースのテクノロジー間では速度が大きく異なること、ディスクベーステクノロジーの記憶容量は通常、その RAM の少なくとも 10 倍から 100 倍を越えることだけ記憶に留めておいてください。 |
オフラインバックアップストレージは、容量(大きい)と速度(遅い)の点においてハードドライブより進んでいます。リムーバブルメディアは購入や保管上発生する制限を除けばいくらでも容量を増やすことができます。
こうしたデバイスに使用されるテクノロジーは幅広く、次のような種類が一般的です。
磁気テープ
光学ディスク
もちろん、リムーバブルメディアにするということはアクセスタイムに時間がかかるということであり、特に目的のデータがストレージデバイスで現在ロードされていないメディア上にある場合はかなりの時間を要します。こうした状況は自動的にメディアをロード、アンロードする機能を持つロボットデバイスを使用することで幾分緩和されますが、このようなデバイスのメディアストレージには限りがあります。最適な状態であっても、アクセスタイムは秒単位であり、アクセスタイムに 1 ミリ秒以上かかる比較的遅い高性能ハードドライブと比べてもかなり遅くなります。
さて、ここまで今日における各種ストレージテクノロジーを簡単に説明してきましたので、今度は基本的な仮想メモリの概念について触れてみましょう。
[1] | "RAM" が "Random Access Memory," の略であり保存データの連続しないアクセスを許可する保持技術によく適用される用語であるのに対し、システム管理者が言う RAM とは常にメインシステムメモリのことになります。 |