記憶装置
![]() |
「メモリ」はコンピュータの構成部品のうちメモリと呼ばれるもの全般について説明しているこの項目へ転送されています。メインメモリについては「主記憶装置」を、その他の用法については「メモリ (曖昧さ回避)」をご覧ください。 |
PCのマザーボードに装着された 1GBSDRAM。一次記憶装置の例
40GB ハードディスクドライブ(HDD)。コンピュータに接続すると二次記憶装置として機能する
160GB SDLT テープカートリッジ。オフライン・ストレージの例。自動テープライブラリで使う場合は、三次記憶装置に分類される
記憶装置(きおくそうち)は、コンピュータが処理すべきデジタルデータをある期間[1]保持するのに使う、部品、装置、電子媒体の総称。「記憶」という語の一般的な意味にも対応する英語としてはメモリ(英: memory)である。記憶装置は「情報の記憶」を行う。他に「記憶装置」に相当する英語としてはストレージ デバイス(英: Storage Device)というものもある[2]。
目次
1概要
2階層構造
2.1レジスタ
2.2一次記憶装置
2.3二次記憶装置
2.4三次記憶装置
2.5オフラインストレージ
3特性とスペック
3.1揮発性と不揮発性
3.2ダイナミックとスタティック
3.3書き換え可能か否か
3.4破壊読み出しと非破壊読み出し
3.5アクセス方法
3.6アドレス指定方法
3.7容量
3.8性能
4基本的な記憶装置技術
4.1半導体
4.2磁気
4.3光学
4.4光磁気ディスク
4.5紙
4.6その他の古い技術
4.7その他の新技術
5関連技術
5.1ネットワーク接続
5.2ロボット型ストレージ
6関連項目
6.1主記憶装置関連
6.2補助記憶装置関連
7脚注
概要
ディジタルコンピュータは、二進法(バイナリ)のデータ、すなわちビットを扱う。テキストも数値も画像もコンピュータの内部ではビットである。ビットは、それがいくつか集まった単位でまとまって扱われることも多い。よく使われる単位にバイトがある。バイトはほとんどの場合[3]、8ビットである。
コンピュータが情報処理するには、一般にデータを一時的に保持する必要があり、そのための機構がメモリである。メモリがないと、コンピュータは決められた処理を行って結果を即座に出力することしかできない。
たとえば電卓は、ごくわずかなメモリしか持っていない(ディスプレイに表示される桁数の数値の2個ぶん、あるいは3個ぶん程度)。DSPでは、プログラムと、相関を取るなどの期間の情報さえ保持できれば良い。それに対して汎用のコンピュータは、いわゆるプログラム内蔵方式であり、理論でいう「計算可能」なあらゆる「計算」を処理できるが、それに対応するプログラムを保持するだけのメモリが必要であり、計算の途中経過を保持するためのメモリも必要である。
階層構造
記憶装置の階層のピラミッドモデル
CPUからの距離によって記憶装置を分類した図。汎用のコンピュータの基本的構成は、演算装置、制御装置、記憶装置を装備する空間、入出力デバイスである。2005年ごろの一般的パーソナルコンピュータでの技術および容量を記している。
理想を言えば、最高速のメモリがたっぷりあることが好ましいわけであるが、コスト上の理由や物理的な実装の制約、インタフェースの限界などにより、小容量で高速のメモリと、大容量で低速のメモリを組み合わせ、それらを適宜やりくりしなくてはならない。またインタフェースについても、レイテンシ(遅延)およびスループット(帯域)の両者の点で、高性能な接続と低性能な接続がある。結果として、一般的に、CPUを頂点としたピラミッド状のモデルとなる。
レジスタ
「レジスタ (コンピュータ)」を参照
レジスタはプロセッサ内部にある、最高速だが数がごく限られた記憶装置である。
一次記憶装置
詳細は「主記憶装置」を参照
一次記憶装置または主記憶装置という語は、「プロセッサが直接アクセスできる記憶装置」を指す、大雑把な分類である。プロセッサはそこに格納されている命令を常に読み取り、実行している。頻繁に操作しているデータも同様の方法でそこに格納されている。
初期のコンピュータでは、水銀遅延線、ウィリアムス管、磁気ドラムメモリが一次記憶装置として使用された。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 が本項目で言うところの「二次記憶装置」を意味する場合も出てきている[4]。
二次記憶装置
ハードディスクドライブのカバーを外した様子
詳細は「補助記憶装置」を参照
二次記憶装置または補助記憶装置は、入出力チャネル等を使ってアクセスされる記憶装置を指す、大雑把な分類である。データは一次記憶のバッファとの間で転送され、利用される。二次記憶装置は電源が切れてもデータが失われない、不揮発性である。また、価格も一次記憶装置に比べると桁違いに安価である。結果として、現在のコンピュータは一次記憶装置よりも大容量の二次記憶装置を備え、そこにデータを長期間記憶しておくことが多い。
現在のコンピュータは、二次記憶装置としてハードディスクドライブを使うのが一般的である。ハードディスク上のデータアクセスにかかる時間はミリ秒単位である。一方、RAM上のデータアクセスにかかる時間はナノ秒単位である。これはハードディスクが機械的に可動(回転)する装置であるためで、メインメモリと比較すると約100万倍遅い。CDやDVDなどの光学ドライブはさらにアクセス時間が長い。
二次記憶装置に使われる他の技術としては、フラッシュメモリ(USBメモリなど)、フロッピーディスク、磁気テープ、紙テープ、パンチカード、メインメモリとは異なるRAMディスク、ZIPドライブなどがある。
二次記憶装置はファイルシステムとしてフォーマットされることが多く、それによってデータをファイルやディレクトリに抽象化し、ファイルの所有者、アクセス時間、アクセスパーミッションなどの付加的情報(メタデータ)も提供する。
多くのオペレーティングシステムは仮想記憶の概念を使い、システムが物理的に利用可能な容量以上の一次記憶装置(メインメモリ)を使えるようにする。一次記憶装置が一杯になると、システムは最も使われていない部分(ページ)を二次記憶装置(スワップファイル)に移し、後で必要になったときに一次記憶装置に戻す。このやり取りが多くなると、システム全体の性能は低下する。
三次記憶装置
大規模テープライブラリ。前方にテープカートリッジの棚があり、その後方にロボットアームが見える。見えている範囲で180cmの高さがある
三次記憶装置[5]は、記憶装置の第三の階層である。典型的な例として、ロボット機構を使って必要に応じて記憶媒体をドライブに挿入したり除去したりする装置がある。データは使用する前に二次記憶装置にコピーすることが多い。これは主に滅多に使わないデータの保管に使う(三次記憶装置は二次記憶装置よりもさらに遅く、アクセス時間は数十秒レベルである)。
コンピュータが三次記憶装置から情報を読み取る必要が生じると、まずカタログデータベースを参照して、必要な情報を格納しているテープやディスクを特定する。次に、ロボットアームにコンピュータが指示して、その媒体をドライブに挿入させる。コンピュータが情報の読み取りを終えると、ロボットアームが媒体を元の場所に戻す。