記憶階層
主記憶装置は高速ですが、容量が少なく、電源を切ると記憶が消える(揮発性)。 ハードディスクは大容量でビット単価が安く、不揮発性ですが、媒体の交換や持ち運びが困難で、主記憶装置に比べ低速。 フロッピーディスクは、安く手軽ですが、低速で低容量。
この様に、今の記憶装置にはどれも長所と短所があり、先に述べた理想的な記憶装置の特性を全て満足する記憶装置は今のところまだ開発されておりません。 では、理想的な記憶システムを構成するにはどうすればよいでしょうか?
答えは簡単、記憶装置がもつ優れた特性をそれぞれ組み合わせればよいです。
その為に考え出されたのが、「記憶階層」と呼ばれるものです。 記憶階層は「アクセス速度」と「記憶容量」に着目し、次の図のように階層化させたものを言います。
これにより、見かけ上、理想的な記憶システムができあがりました。ところで、「レジスタ」「キャッシュメモリ」「ディスクキャッシュ」という前回紹介しなかった記憶装置が出てきました。
「レジスタ」は、CPU内にあるメモリで、CPUと同等の性能があり、メモリの中では最速です。 「キャッシュメモリ」「ディスクキャッシュ」は、記憶階層を構成する上でとても重要なある役割をもちます。 それを次節で説明していきましょう。
キャッシング
前節で、「キャッシュメモリ」と「ディスクキャッシュ」という二つの記憶装置が出てきました。これらは、記憶階層を構成する上でとても重要な役割を果たします。
「キャッシュメモリ」はレジスタと主記憶の間、「ディスクキャッシュ」は主記憶と磁気ディスクの間にそれぞれあります。
実はこの2つのメモリはそれぞれの装置間の速度差を埋めているのです。
プログラムが実行される時には、まず磁気ディスクから必要な分だけ主記憶に取り出され、また実行に必要な部分をCPUレジスタへ送り、実行されます。つまり、次のような流れです。
磁気ディスク → 主記憶 → レジスタ
しかし、実際には
レジスタ〜主記憶間では数倍〜十数倍
主記憶〜磁気ディスク間では数十〜数百倍(場合によっては数千倍)
の速度差があるのです。
例えて言うなら、高速道路から一般道路に変わる時に通る料金所が大渋滞を起こしている、と考えてください。これでは、高速〜一般道共に空いているのに、間の料金所がとろい為にスムーズに進めませんね。
そこで登場するのが「キャッシュメモリ」「ディスクキャッシュ」です。 これらの装置はちょうど「レジスタ〜主記憶」「主記憶〜磁気ディスク」の中間ぐらいの速度を持っています。
これをそれぞれの装置の間におき、頻繁に取り出すデータを格納しておけば、レジスタから主記憶(又は主記憶から磁気ディスク)へデータを取りに行かなくとも、間のキャッシュメモリにそのデータがあれば短時間で取り出す事ができ、アクセス時間短縮につながります。
これを「キャッシング」と言います。この「キャッシング」が、キャッシュメモリ、ディスクキャッシュの重要な役割です。 先程の料金所で例えれば、料金所を機械化し、時間が半分に短縮された、と考えてください。
さて、このキャッシングですが、欠点があります。それは、完全なキャッシュができない、と言う事です。 どういうことかというと、キャッシングというのは、取り出したいデータがあらかじめキャッシュに入っていて、はじめて成り立つのです。なので、目的のデータがキャッシュに入っていない時には意味がありません。
目的のデータは、ある程度予測はできても、100%の予測は不可能なので、ある程度の割合でキャッシュに目的のデータがない、ということが起こってしまいます。これを、「キャッシュミス」又は「ミスヒット」と言います。
そうなると、「レジスタは主記憶へ」「主記憶は磁気ディスクへ」直接データを取りに行かなければならなくなります。
これを、また料金所の例えで言うと、10個の料金所があったとしたら、7個が機械で早く(ヒット)、残り3個は人間で遅い(ミスヒット)と言う事になります。(まぁ、現実にこういう事があった場合は、空いてる方が機械って分かってしまいますけど)
さて、ちなみにキャッシュメモリには、1次と2次があり、1次はCPU内部に、2次は主記憶とCPUレジスタとの間にあります。 一般に1次キャッシュをキャッシュメモリと呼び、これにヒットしなかった場合に2次へとアクセスします。このアクセスの順番から、1次、2次と呼ばれます。
初詣の意味と諸説、お参りのしかた、喪中の初詣について初詣の知識を解説します。