ナレーター：このレッスンでは､
ランダム・アクセス・メモリー（単にシステム内のメモリーと呼ばれる）と､
そのメモリーの扱い方についてお話しします｡
さて､ まずメモリーの扱い方について話す前に､ メモリーとは何か､
そしてコンピューター・システムの中でメモリーがしてくれることとは何かについて､
より深く理解する必要がある｡
さて､ 以前プロセッサーの話をしたときに､
プロセッサーはすべての計算を行うが､ その計算を行う前にデータや命令を格納する場所が必要だという話をした｡
プロセッサーの内部には､ キャッシュと呼ばれる非常に高速なメモリーが搭載されている｡
このキャッシュは非常に小さな容量だが､
非常に高速だ｡
さて､ キャッシュ・スペースがなくなると､
システムにある次のタイプのメモリは､ ランダム・アクセス・メモリ､
あるいはシステム・メモリと呼ばれるものになる｡
さて､ このメモリはまだ高速だが､
キャッシュメモリほどではない｡
そして､ そのキャッシュ・メモリのデータを使用するにつれて､
新しい情報がシステム・メモリからキャッシュに移動する｡
そして､ パイプライン・プロセスとして､
システム・メモリーからキャッシュに移動し､
CPUを使って処理され実行される｡
さて､ このシステム・メモリのほかに､
ストレージと呼ばれるものがある｡
ストレージとは､ ハードドライブ､ USBドライブ､
CD-ROM､ DVDなどのことだ｡
これらの大容量記憶装置は､
メモリよりも多くのデータを保持することができるが､
はるかに遅い｡
だから､ 新しいパワーポイントをシステムにロードしたい場合､
通常は大容量記憶装置であるハードディスクに保存される｡
私がコンピューターに「これを読みたい」と言うと､
プロセッサーはハードドライブに信号を送り､ 「そのデータはどこにある？
その後､ データはハードディスクからシステム・メモリに移動する｡
そしてシステム・メモリから､
その小片をキャッシュに取り込み､
プロセッサで処理することができる｡
これが､ あなたのシステム内部で､ これらすべてがどのように機能するかということだ｡
だから､ データがシステムに保存されるさまざまな場所について考えるとき､
このことを心に留めておいてほしい｡
私たちには大容量記憶装置があり､
これはより永続的な記憶領域である｡
コンピュータの電源を切っても､
大容量記憶装置のデータは残ります｡
コンピュータの電源を切ると､
RAMにあるものはすべて消えてしまうからだ｡
そうすることで､ より速く作業することができ､
作業が終わったら､ 永久記憶装置であるハードディスクに保存することができる｡
RAMとして知られるシステム・メモリーやランダム・アクセス・メモリーについて考えるとき､
これはダイナミックで常に変化する領域であり､ ハード・ドライブやCD-ROMのような大容量記憶装置と比べると､
実に高速に動作する｡
これが物理的な世界でどのようなものかを例えるなら､
あなたのオフィスを思い浮かべてほしい｡
オフィスには机があり､
机の上には限られたスペースしかありませんが､ 机の上に物があれば､
すぐに手に取ることができます｡
机の上で開いている3つか4つのファイルに加え､
ファイリング・キャビネットの中にはおそらく何百ものファイルが眠っているはずだ｡
デスクトップがRAMのようなものであるのに対し､
ファイリング・キャビネットはハードディスク・ドライブのようなものだ｡
だから､ RAMにあるものはアクセスしやすく､
素早くアクセスできる｡
そうすれば､
1週間後､ 2週間後､ 1年後に必要なときに､ そのファイルがそこにある｡
RAMはまさにそのために使われるもので､
常に変化し､ 進化し続ける一時的なスペースなのだ｡
大容量記憶装置はとても遅いので､ 私たちはしばしばRAMに多くのものを入れたくなるが､
RAMには限りがある｡
ハードディスクを見れば､
500ギガバイト､ 1テラバイト､
あるいは4テラバイトの大容量記憶装置があるかもしれないが､
メモリを見れば､ 8ギガバイト､
16ギガバイト､ 運がよければ32ギガバイトの空き容量があるかもしれない｡
つまり､ 使用可能なRAMはハードディスクよりもはるかに少ない｡
つまり､ メモリはディスクキャッシュとして機能するのだ｡
こうすれば､ ディスクからファイルをメモリに取り込んで作業し､
作業が終わったら大容量記憶装置に戻すことができる｡
これによりRAMは､ ハードディスクから最近使用されたデータやよく使用されるデータを一時的に保存する領域として機能し､
より迅速なオペレーションが可能になる｡
これは､ RAMが本当に高速でデータを探し出すことができるのに対し､
従来のハードディスクは正しい部分を見つけるまで実際にディスクを回転させ､
そこからデータを取り出す必要があるためで､ これははるかに遅い｡
私たちはこれを機械的システムと呼ぶが､
RAMを使う場合は､
RAMのどの部分にも瞬時に近いスピードでアクセスできる電子システムを使うことになる｡
これは､ RAMがソリッド・ステート・デバイスと考えられているためで､
ハードドライブ､ DVD､ CD､ あるいはブルーレイ・ディスクのような機械式デバイスのように､
過度なロード時間が発生しないからだ｡
ハードディスクやその他の磁気メディアは非常に遅く､
ミリ秒と呼ばれる数千秒単位で動作する｡
だから､ 作業中はファイルをRAMに保存しておきたいのだ｡
技術者として､ システムをアップグレードする際に最もよくやることの1つは､
RAMをアップグレードして､
4ギガバイトから8ギガバイト､ 8ギガバイトから16ギガバイト､ 16ギガバイトから32ギガバイトにすることです｡
RAMの容量を増やすことで､
ハードドライブから多くのデータを読み書きしなければならないという障壁を取り除き､
より多くのファイルを開くことができるようになり､
いつでもより多くの作業ができるようになるため､ システムを大幅にスピードアップすることができる｡
さて､ ここまでRAMの基本を説明し､
なぜハードディスクにすべてを頼るのではなく､
このシステムメモリーを使う必要があるのかを説明してきましたが､ ここでRAMのアドレッシングに基づく制限について説明します｡
さて､ プロセッサーがRAMに手を伸ばして何かを取得する必要がある場合､
これをメモリのアドレス指定と呼ぶ｡
というのも､ RAMとストレージの内部には､
それぞれ異なる固有のアドレスがあり､
それによって特定のRAMに保存されているデータを参照することができるからだ｡
さて､ プロセッサ（CPU）とメモリの間には､
メモリ・コントローラというものがあり､
メモリ・コントローラとプロセッサの間にはバスがある｡
さて､ バスとは単にデータを転送するための経路である｡
メモリ・コントローラーはほとんど交通整理のようなもので､
交通整理を行い､ CPUとプロセッサーにメモリのさまざまな部分へのアクセス方法を指示する｡
さて､ バスを見ると､
実は2つの部分がある｡
データの送受信に使われる経路があり､
さらにアドレス経路がある｡
つまり､ データ・パスウェイの幅､ つまりデータ・バスの幅によって､
各クロック・サイクルでどれだけの情報を転送できるかが決まる｡
シングルチャンネル・メモリ・コントローラーを使用している場合､
データバスは通常64ビット幅になる｡
それに加えて､
アドレス・バスには幅があり､
これは32ビットか64ビットのいずれかである｡
これは､ CPUがどれだけ多くの場所を把握し､
適切なアドレス指定によってデータにアクセスできるかによって決まる｡
さて､ 32ビットCPU､ つまりx86ベースのCPUを使っている場合､
メモリバス上のデータにアクセスするには32ビットアドレスしか使えない｡
このため､
アドレス指定できる項目は約40億になり､
これは4ギガバイトのデータとして知られている｡
一方､ 64ビットCPUを使用している場合､
64の可能なアドレスロケーションに対して2つの可能性があり､ 計算するとおよそ184,000,000,000の可能な選択肢があることになる｡
つまり､ 64ビットのプロセッサーを使えば､
大量のデータを扱うことができる｡
というのも､ 16エクサバイトのRAMは法外に高価であり､
ほとんどのマザーボードにはそれだけのメモリを接続する十分なスペースがないからだ｡
本当に重要なのは､
x86､ つまり32ビットプロセッサーを使っている場合､ 最大4ギガバイトのメモリーしかアドレス指定できないということである｡
一方､ 64ビットプロセッサやx64アーキテクチャを使用している場合､
一度に4ギガバイト以上のRAMにアクセスすることができます｡
これは､ 8ギガバイト､ 16ギガバイト､ 32ギガバイト､
64ギガバイトのRAMを搭載したシステムで使用されている理由です｡
これは､ ほとんどの最新コンピューターやアプリケーションで､
32ビット・プロセッサーよりも64ビット・プロセッサーを選びたくなるもうひとつの理由だ｡