コンピューターのメモリの仕組み

考えてみると、私たちが日常生活で遭遇する電子メモリの種類の多さには驚くばかりです。それらの多くは私たちの語彙に不可欠な部分となっています。

目の前のコンピュータにはメモリがあることはすでにわかっています。あまり知られていないかもしれませんが、あなたが毎日使用している電子機器のほとんどには何らかの形のメモリも搭載されています。以下に、メモリを使用する多くの項目のほんの一例を示します。

  • 携帯電話
  • PDA
  • ゲーム機
  • カーラジオ
  • ビデオデッキ
  • テレビ

この記事では、メモリにはさまざまな種類がある理由と、すべての用語の意味について説明します。次のページでは、基本的なことから始めましょう。コンピュータのメモリは正確に何をするのでしょうか?

コンピューターのメモリの基本

コンピューターのメモリの仕組み

メモリは技術的にはあらゆる形式の電子ストレージですが、最も多くの場合、高速で一時的な形式のストレージを識別するために使用されます。コンピューターのCPU が必要なデータをすべて取得するためにハード ドライブに常にアクセスする必要がある場合、CPU の動作は非常に遅くなります。情報がメモリに保持されると、CPU はより迅速に情報にアクセスできるようになります。ほとんどの形式のメモリは、データを一時的に保存することを目的としています。

CPU は、明確な階層に従ってメモリにアクセスします。永続ストレージ (ハード ドライブ) からのものであっても、入力 (キーボード) からのものであっても、ほとんどのデータは最初にランダム アクセス メモリ( RAM ) に保存されます。次に、CPU はアクセスする必要があるデータをキャッシュに保存し、特定の特殊な命令をレジスタに保持します。キャッシュとレジスタについては後ほど説明します。

CPU、ハードドライブ、オペレーティングシステムなど、コンピュータ内のすべてのコンポーネントはチームとして連携し、メモリはこのチームの最も重要な部分の 1 つです。コンピューターの電源を入れた瞬間からシャットダウンするまで、CPU は常にメモリを使用します。典型的なシナリオを見てみましょう。

  • コンピューターの電源を入れます。
  • コンピュータは読み取り専用メモリ( ROM ) からデータをロードし、電源投入時自己テスト(POST) を実行して、すべての主要コンポーネントが適切に機能していることを確認します。このテストの一環として、メモリ コントローラは迅速な読み取り/書き込み操作ですべてのメモリ アドレスをチェックし、メモリ チップにエラーがないことを確認します。読み取り/書き込みとは、データがビットに書き込まれ、その後そのビットから読み取られることを意味します。
  • コンピュータは、ROM から基本入出力システム( BIOS ) をロードします。 BIOS は、ストレージ デバイス、ブート シーケンス、セキュリティ、プラグ アンド プレイ(自動デバイス認識) 機能、およびその他のいくつかの項目に関する最も基本的な情報を提供します。
  • コンピューターはオペレーティング システム(OS) をハード ドライブからシステムの RAM にロードします。一般に、コンピュータの電源が入っている限り、オペレーティング システムの重要な部分は RAM に維持されます。これにより、CPU がオペレーティング システムに即座にアクセスできるようになり、システム全体のパフォーマンスと機能が向上します。
  • アプリケーションを開くと、そのアプリケーションがRAMにロードされます。 RAM の使用量を節約するために、多くのアプリケーションはプログラムの重要な部分のみを最初にロードし、その後必要に応じて他の部分をロードします。
  • アプリケーションがロードされると、そのアプリケーションで使用するために開かれたファイルはすべて RAM にロードされます。
  • ファイルを保存してアプリケーションを閉じると、ファイルは指定されたストレージ デバイスに書き込まれ、ファイルとアプリケーションは RAM から消去されます。

上記のリストでは、何かがロードされるか開かれるたびに、それが RAM に配置されます。これは単に、CPU がその情報に簡単にアクセスできるように、情報がコンピュータの一時記憶領域に置かれたことを意味します。 CPU は必要なデータを RAM に要求し、それを処理して、連続サイクルで新しいデータを RAM に書き込みます。ほとんどのコンピューターでは、CPU と RAM の間でのこのデータのシャッフルが毎秒何百万回も発生します。アプリケーションを閉じると、通常、アプリケーションとそれに付随するファイルは RAM からパージ (削除) され、新しいデータ用のスペースが確保されます。変更されたファイルは、パージされる前に永続ストレージ デバイスに保存されないと、失われます。

デスクトップ コンピュータに関してよく聞かれる質問の 1 つは、「なぜコンピュータにはこれほど多くのメモリ システムが必要なのですか?」というものです。

コンピュータのメモリの種類

一般的なコンピュータには次の機能があります。

なぜそんなにたくさんあるのでしょうか?この質問への答えは、記憶について多くのことを教えてくれます。

高速で強力な CPU のパフォーマンスを最大化するには、大量のデータに迅速かつ簡単にアクセスする必要があります。 CPU が必要なデータを取得できない場合、CPU は文字通り停止してデータを待ちます。約1 ギガヘルツの速度で動作する最新の CPU は、大量のデータ (場合によっては 1 秒あたり数十億バイト)を消費する可能性があります。コンピュータ設計者が直面している問題は、1 ギガヘルツの CPU に対応できるメモリが非常に高価であることです。誰もが大量に購入できるよりもはるかに高価です。

コンピュータ設計者は、メモリを「階層化」することでコストの問題を解決しました。つまり、高価なメモリを少量使用し、それを大量の安価なメモリでバックアップしました。

現在広く使用されている読み取り/書き込みメモリの最も安価な形式は、ハードディスクです。ハードディスクは、安価で大量の永続的なストレージを提供します。ハードディスク容量は 1 メガバイトあたり 1 ペニーで購入できますが、ハードディスクから 1 メガバイトを読み取るにはかなりの時間が (1 秒近く) かかる場合があります。ハードディスク上の記憶領域は非常に安価で豊富であるため、仮想メモリと呼ばれる CPU のメモリ階層の最終段階を形成します。

階層の次のレベルはRAMです。 RAM については「RAM の仕組み」で詳しく説明しますが、ここでは RAM に関するいくつかの重要な点が重要です。

CPU のビット サイズは、 RAM から同時にアクセスできる情報のバイト数を示します。たとえば、16 ビット CPU は一度に 2 バイトを処理でき (1 バイト = 8 ビット、つまり 16 ビット = 2 バイト)、64 ビット CPU は一度に 8 バイトを処理できます。

メガヘルツ(MHz) は、CPU の処理速度、つまりクロック サイクルを1 秒あたり数百万単位で表す単位です。つまり、32 ビット 800 MHz Pentium III は、4 バイトを同時に 1 秒あたり 8 億回処理できる可能性があります (おそらくパイプライン処理に基づいてさらに多くの回数)。メモリ システムの目標は、これらの要件を満たすことです。

コンピューターのシステム RAM だけでは、CPU の速度に匹敵するほど高速ではありません。そのため、キャッシュが必要になります (後述)。ただし、RAM が速ければ速いほど良いです。現在、ほとんどのチップは 50 ~ 70 ナノ秒のサイクル レートで動作します。読み取り/書き込み速度は通常、DRAM、SDRAM、RAMBUS など、使用される RAM の種類によって決まります。これらのさまざまな種類の記憶については後ほど説明します。

まず、システム RAM について説明します。

システムRAM

システム RAM の速度は、バス幅バス速度によって制御されます。バス幅は CPU に同時に送信できるビット数を指し、バス速度は 1 秒あたりにビットのグループを送信できる回数を指します。バス サイクルは、データがメモリから CPU に転送されるたびに発生します。たとえば、100 MHz 32 ビット バスは理論上、4 バイト (32 ビットを 8 で割った = 4 バイト) のデータを 1 秒あたり 1 億回 CPU に送信できますが、66 MHz 16 ビット バスは、 2 バイトのデータを 1 秒あたり 6,600 万回。計算してみると、この例では、バス幅を 16 ビットから 32 ビットに、速度を 66 MHz から 100 MHz に変更するだけで、3 倍のデータ量 (4 億バイト対 1 億 3,200 万バイト) が可能になることがわかります。毎秒CPUにパススルーします。

実際には、RAM は通常、最適な速度で動作するわけではありません。レイテンシは方程式を根本的に変えます。レイテンシは、情報ビットを読み取るのに必要なクロック サイクル数を指します。たとえば、定格 100 MHz の RAM は 0.00000001 秒でビットを送信できますが、最初のビットの読み取りプロセスを開始するまでに 0.00000005 秒かかる場合があります。レイテンシを補正するために、CPU はバースト モードと呼ばれる特別な技術を使用します。

バースト モードは、CPU が要求したデータが連続したメモリ セルに格納されるという期待に依存します。メモリ コントローラは、CPU が処理しているものはすべて、この同じ一連のメモリ アドレスから引き続き取得されると想定しているため、連続するいくつかのビットのデータをまとめて読み取ります。これは、最初のビットのみがレイテンシの影響を完全に受けるということを意味します。連続ビットの読み取りにかかる時間が大幅に短縮されます。メモリの定格バースト モードは通常、ダッシュで区切られた 4 つの数字で表されます。最初の数字は、読み取り操作を開始するために必要なクロック サイクル数を示します。 2 番目、3 番目、および 4 番目の数値は、ワードラインとも呼ばれる行内の連続する各ビットを読み取るのに必要なサイクル数を示します。たとえば、5-1-1-1 は、最初のビットを読み取るのに 5 サイクルかかり、その後の各ビットに 1 サイクルかかることを示します。明らかに、これらの数値が低いほど、メモリのパフォーマンスが向上します。

バースト モードは、遅延の影響を最小限に抑える別の手段であるパイプライン処理と組み合わせて使用​​されることがよくあります。パイプライン化は、データの取得を一種の組み立てライン プロセスにまとめます。メモリ コントローラは、メモリから 1 つ以上のワードを読み取り、現在の 1 つ以上のワードを CPU に送信し、1 つ以上のワードをメモリ セルに書き込みます。バースト モードとパイプラインを組み合わせて使用​​すると、レイテンシによる遅延を大幅に削減できます。

では、なぜ入手可能な中で最も高速で最も広いメモリを購入しないのでしょうか?メモリのバスの速度と幅はシステムのバスと一致する必要があります。 100 MHz で動作するように設計されたメモリを 66 MHz システムで使用できますが、バスの 66 MHz 速度で動作するためメリットがなく、32 ビット メモリは 16 ビット メモリには適合しません。バス。

バスが広くて速い場合でも、メモリ カードから CPU にデータが届くのに、CPU が実際にデータを処理するのにかかる時間よりも時間がかかります。そこでキャッシュが登場します。

キャッシュとレジスタ

コンピューターのメモリの仕組み

キャッシュは、 CPU が最も頻繁に使用するデータを即座に利用できるようにすることで、このボトルネックを軽減するように設計されています。これは、プライマリキャッシュまたはレベル 1キャッシュとして知られる少量のメモリを CPU に直接構築することによって実現されます。レベル 1 キャッシュは非常に小さく、通常は 2 キロバイト (KB) ~ 64 KB の範囲です。

二次キャッシュまたはレベル 2キャッシュは通常、CPU の近くにあるメモリ カードに常駐します。レベル 2 キャッシュは CPU に直接接続されています。マザーボード上の専用集積回路であるL2 コントローラーは、CPU によるレベル 2 キャッシュの使用を制御します。 CPU に応じて、レベル 2 キャッシュのサイズは 256 KB ~ 2 メガバイト (MB) の範囲になります。ほとんどのシステムでは、CPU が必要とするデータは時間の約 95% でキャッシュからアクセスされ、CPU がメイン メモリからのデータを待機する必要があるときに必要なオーバーヘッドが大幅に削減されます。

一部の安価なシステムでは、レベル 2 キャッシュがまったく不要になります。現在、多くの高性能 CPU には、CPU チップ自体にレベル 2 キャッシュが実際に組み込まれています。したがって、レベル 2 キャッシュのサイズと、それがオンボード(CPU 上) にあるかどうかが、CPU のパフォーマンスの主な決定要素となります。キャッシュの詳細については、 「キャッシュの仕組み」を参照してください。

特定の種類のRAMであるスタティック ランダム アクセス メモリ(SRAM) は、主にキャッシュに使用されます。 SRAM は、メモリ セルごとに複数のトランジスタ (通常は 4 ~ 6 個) を使用します。 2 つの状態の間でスイッチ、つまりフリップフロップを行う双安定マルチバイブレータとして知られる外部ゲートアレイを備えています。これは、DRAM のように継続的にリフレッシュする必要がないことを意味します。各セルは電力がある限りデータを維持します。定期的にリフレッシュする必要がなく、SRAM は非常に高速に動作します。しかし、各セルは複雑であるため、標準 RAM として使用するには法外に高価になります。

メモリの最後のステップはレジスタです。これらは CPU に直接組み込まれたメモリ セルで、CPU、特に算術論理演算装置(ALU) が必要とする特定のデータが含まれています。これらは CPU 自体の不可欠な部分であり、CPU が処理する情報を送信するコンパイラーによって直接制御されます。レジスタの詳細については、 「マイクロプロセッサの仕組み」を参照してください。

コンピューター メモリに関する便利な印刷可能なガイドとして、 「コンピューター入門」 を印刷できます。

ボラティリティ

メモリは、揮発性と不揮発性の 2 つの主なカテゴリに分類できます。揮発性メモリは、システムの電源がオフになるとすぐにデータを失います。存続するには一定の電力が必要です。ほとんどの種類の RAM がこのカテゴリに分類されます。

不揮発性メモリは、システムまたはデバイスの電源がオフになってもデータを失いません。多くの種類のメモリがこのカテゴリに分類されます。最もよく知られているのは ROM ですが、コンパクトフラッシュやスマートメディア カードなどのフラッシュ メモリ ストレージ デバイスも不揮発性メモリの一種です。