主記憶装置
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2020年6月) |
主記憶装置(しゅきおくそうち)は、記憶装置の分類で、コンピュータのメインバスなどに直接接続されている記憶装置のこと。比較的CPUから近い位置にあるため、一般に外部バスなど比較的CPUから離れていて大容量だが低速な記憶装置である「補助記憶装置」と比較すると、高速(低レイテンシかつ高スループット)だが小容量である。特に、CPUが入出力命令によって外部のインタフェースを操作するのではなく、「ロード・ストア命令」や、さらには通常の加算などの命令において直接読み書きできる対象であるものを指す。メインメモリ、一次記憶装置[注釈 1]とも。
汎用CPUのパッケージに内蔵されているキャッシュメモリよりは低速だが大容量であり、ソフトウェアのプログラムデータを補助記憶装置から読み込んで展開したり、CPUに処理させるデータの読み出し・書き込みをプログラマが明示的に制御可能な作業領域として使われたりする。
21世紀前半において一般的に使われているノイマン型コンピュータでは、フォン・ノイマン・ボトルネックが生じるため、計算負荷が高くなることが想定される場合には可能な限り高速なメインメモリを搭載する必要がある。
概要
コンピュータが初期の頃には、水銀遅延線、ブラウン管記憶装置(ウィリアムス管)(1950年代)、磁気ドラムメモリ、あるいは磁気コアメモリ(1960年代)等が利用されていたが、現在では通常は半導体メモリを利用している。
磁気コアメモリを用いた主記憶装置は、電源の供給が切れても記憶の内容が保持できる。これを不揮発性メモリと呼ぶ。一方、通常の半導体メモリを使ったRAMでは、ハードディスクドライブなどの補助記憶装置と比べて動作が高速ではあるものの、記憶容量が小さく、また電源の供給が切れると記憶の内容が消えてしまう性質がある。これを揮発性メモリと呼ぶ。そのため、記憶の内容を補助記憶装置に適宜書き出しておいて、必要なときに再度読み込んで利用するという方式が取られる。
書き込み可能なRAMには、(リフレッシュ動作をせずに)ある程度の時間が経つと記憶の内容が消えてしまうダイナミックRAM(DRAM)と、電気が供給されている限り記憶の内容が保持できるスタティックRAM(SRAM)の2種類がある。通常、SRAMはDRAMよりもアクセスが高速であるが、両者の構造上の違いから、DRAMの方がビットあたりの必要なトランジスタの数が少なく済み、記憶容量あたりの価格が安くなるので、現在の多くのコンピュータでは主記憶装置にSRAMではなくDRAMを採用している。なお、容量よりも高速性が要求されるキャッシュメモリにはSRAMが採用されている。
最近[いつ?]のプロセッサ(以下、特にCPUについて記述)は、CPU内部の処理速度は極めて高速化したにもかかわらず、主記憶装置を構成するDRAMへのアクセス速度の向上はそれに追いついていないため、主記憶装置とCPUとの処理速度のアンバランスが生じている(ノイマンズ・ボトルネック参照)。そのために、両者のギャップを埋め、より高速にデータを得るため、DRAMで構成された主記憶装置へのアクセスを直接行わず、高速動作が可能なSRAMで構成されたキャッシュメモリを経由してアクセスすることが多い。「Pentium 4」や「Athlon」など、おおよそ2000年以降に出回ったCPUでは、2段階およびそれ以上の段階のキャッシュメモリを経由して主記憶装置へアクセスする方式を採用している。
なお、UNIXでプログラムが異常終了したときの動作を「コアダンプ」というが、これは、主記憶装置が磁気コアメモリを利用していた時代(1960年代)の名残である。
パーソナルコンピュータ (PC) が普及を始めた時代の初期(1980年代)では、8ビットまたは16ビットCPUを使っていた。これらは通例16ビットのアドレスバスを持ち、そのアドレス空間は216バイトすなわち64KiBに制限される。しかし当時であっても、この程度のアドレス空間では拡大を続けるソフトウェアの要求に応えることはできず、すぐにCPUのアドレス空間が不足するようになった。これに伴い、バンク切り換え、セグメント方式、EMSなど、実際のCPUのアドレス空間よりも広い主記憶装置の利用を可能にする技術が使われるようになった[1]。ただし、これらの技法はソフトウェアの複雑化やシステムの不安定化を招く要因にもなった。
32ビットCPUになってからは、アドレス空間が232バイトすなわち4GiBに拡大され、シンプルな形態で大容量メモリを扱えるようになったため、主記憶切り替え機能はいったん廃れたが、さらなるメモリ容量への需要に伴って、仮想記憶機能と連動して、一部の32ビットCPUでは、アドレス範囲が32ビットを超えたメモリのアクセスを可能とするような機能が提供されている。[要出典]
2024年現在は64ビットCPUの普及が進んでおり、サーバーやワークステーションやPCだけでなく、スマートフォンやタブレットといったモバイルデバイスでも64ビットアーキテクチャへの移行がほぼ完了している。アドレス空間は264バイトすなわち16EiBに拡大されているが、搭載可能な物理メモリ量は理論的なアドレス空間よりもずっと小さく制限されている。これは、現状ではオペレーティングシステム (OS) もアプリケーションソフトウェアもそこまでの巨大なメモリ空間を必要としているわけではなく、また64ビットアドレス空間をフルサポートするようなハードウェアを実装しようとすると、必要以上にトランジスタ数が増えてしまうからである[2]。
主記憶装置の使われ方
現代的な多くのコンピュータシステムでは、オペレーティングシステムとメモリ管理ハードウェア[注釈 2]の連携により、プロセスごとに保護された主記憶装置のメモリ空間を仮想的に割り当てる、仮想記憶を採用している。そのため、主記憶装置の空間を一定の単位に区切って管理しつつ利用するメモリ管理機能が利用されている。その方法には、セグメント方式やページング方式がある。
本来の主記憶装置の容量で足りない時は外部の容量を主記憶装置代わりとすることもある。これは仮想メモリとも言われる。
故障
サーバやパーソナルコンピュータのハードウェアで、故障が最も発生し易いものの一つが主記憶装置である。従ってWindows 10などのOSでは「Windowsメモリ診断」ツールが利用できる。主記憶装置が故障すると以下のような事象が発生する。
- 電源を投入してもOSが立ち上がらずブルースクリーンが表示される。
- OSの起動途中に再起動し繰り返す。
- OSが立ち上がってPCを一定時間操作している途中で、画面がスノーノイズのようになって操作不可能になる。
PCに複数の主記憶装置を装填している場合、1つでも故障した主記憶装置があると他の主記憶装置が正常でも上記のような不具合が発生する。主記憶装置を1つ1つ抜いてどの主記憶装置が故障しているかを特定する必要がある。
脚注
注釈
出典
関連項目
- メモリアドレス
- SIMM (Single Inline Memory Module)
- DIMM (Dual Inline Memory Module)
- 転送速度
- 容量の壁
- 記憶媒体
- 補助記憶装置:HDD・SSD
- CPU
外部リンク
一次記憶装置
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/10 23:26 UTC 版)
詳細は「主記憶装置」を参照 一次記憶装置または主記憶装置(英:Primary storage)という語は、「プロセッサが直接アクセスできる記憶装置」を指す、大雑把な分類である。プロセッサはそこに格納されている命令を常に読み取り、実行している。頻繁に操作しているデータも同様の方法でそこに格納されている。 初期のコンピュータでは、水銀遅延線、ウィリアムス管、磁気ドラムメモリが一次記憶装置として使用された。1954年ごろ、磁気コアメモリがそれら信頼性の低い手法に取って代わった。集積回路の集積度の向上により半導体メモリが実用的になり、磁気コアメモリに代わって主流となった。IBMのメインフレームの場合、1964年発表のSystem/360ではまだコアメモリ、1970年リリースのSystem/370では半導体メモリである。また、現在の Random Access Memory(RAM)は、ほぼ全て半導体メモリである。 レジスタ (コンピュータ): レジスタを一次記憶装置に分類することもある。各レジスタは一般に1ワードのデータ(32ビットや64ビット)を格納する。CPUの命令は、演算装置にレジスタ上のデータを使った計算や他の操作をさせるものである(それ以外の補助的な命令もある)。プログラミングにおいて、レジスタは特別である(また、一部のレジスタは内部的なもので、プログラマからは「見えない」)。レジスタは記憶装置の中でも最速であり、フリップフロップで構成されている。一時記憶装置という語もあるが「一次」と「一時」でまぎらわしい。 キャッシュメモリ: 超高速なレジスタと若干遅いメインメモリの中間にある。一般にプログラマから見て、速度以外は通常のメインメモリと同様に扱える対象となっている(正確に言うなら、通常のメインメモリのつもりでアクセスすると、「キャッシュにヒット」すれば、なぜか速い、という感じである)。キャッシュメモリはメインメモリより高速だが、容量は小さい。また、レジスタに比べると低速だが容量は大きい。キャッシュメモリ自体も階層化されることが多く、一次キャッシュは最も小さいが最速で、プロセッサに最も近い位置に配置される。二次キャッシュはそれよりも大きく低速である。さらに三次キャッシュがある場合もある。 ワーキングメモリ: ハードウェア的にはキャッシュメモリに相当するメモリを、プログラマが意識して扱う必要があるような形で持っているコンピュータもある。Emotion Engineの「データスクラッチパッドRAM」など。 メインメモリは、メモリバス経由でCPUと直接または間接に接続される。メモリバスは実際にはアドレスバスとデータバスで構成される。CPUはまず、アドレスバスにメモリアドレスと呼ばれる数値を送り、アクセスしたいデータの位置を指定する。次にデータ本体の読み書きをデータバスで行う。場合によってはCPUと一次記憶装置の間にメモリ管理ユニット (MMU) があり、仮想記憶という抽象化などのタスクを実施する。 一次記憶装置で使うRAMは揮発性であるため、それだけでは電源を入れたときにCPUが実行する命令を読み出すことができない。そこで、小さな立ち上げプログラム(BIOS)の格納された不揮発性メモリを使ってブート処理を行う。ブート処理では、不揮発性の二次記憶装置からより大きなプログラムをメインメモリに持ってきて、それを実行する。ここで使われる不揮発性メモリを Read Only Memory (ROM) と呼ぶ。 "ROM" と呼ばれるメモリは実際には「リードオンリー」ではないことが多く、更新が可能である。しかし、書き込みは遅く、再書き込みの前に消去する必要がある。組み込みシステムではプログラムを書き換えることが少ないため、ROM上のプログラムを直接実行することがある。普通のコンピュータではROMにBIOSなどの単純なプログラム以外を置くことはなく、プログラムは不揮発性の二次記憶装置に記憶しておくのが一般的である。 前述したとおり、英語では「一次記憶装置」は primary storage だが、最近では storage の意味が日本語での用法に近い場合があるため、primary storage が本項目で言うところの「二次記憶装置」を意味する場合も出てきている。
※この「一次記憶装置」の解説は、「記憶装置」の解説の一部です。
「一次記憶装置」を含む「記憶装置」の記事については、「記憶装置」の概要を参照ください。
- 一次記憶装置のページへのリンク