メインメモリとストレージ(HDD/SSDなど)の関係

素朴な疑問として、Windowsのインストール容量とメインメモリの物理容量を比較すると概ね同容量か若干メインメモリの方が大きく成っているにもかかわらず、相変わらず巨大なスワップ領域を確保している事があげられます。

スワップ回避の為にメモリ容量を増やしますと、メモリ容量にあわせてスワップ容量も増えるという本末転倒ぶりで、仕方なく筆者はスワップ容量を手作業で256MB固定に設定しています。(メモリスワップが必要ないくらいメモリを搭載しているのですが、それでも固定で256MB確保する理由は、必ずスワップする様にプログラミングされた旧式プログラムが存在する為で、こういったプログラムはメモリスワップが出来ないと動かないのです)。

以下に年代ごとのメモリとストレージの関係を簡易に示してみました。

memory_swap1980.png
1980年代はパソコンに未だスワップが導入される前で、メインメモリのサイズがプログラムサイズの上限でしたから、どれだけプログラムを小さく作れるかが最大の関心事でもありました。
HDDは非常に高価で未だ普及しておらず、プログラムはROMカセットで配給されるタイプと、フロッピーやカセットテープの様な磁気メディアで配給されるタイプとが有り、インストールするのではなく購入したメディアから直接起動していました。
ROMで配られてくるプログラムはメインメモリ空間に物理的に直接挿入される仕組みでストレージからのプログラム読み込みが不要となり電源ONで瞬間起動が売りというかストレスなく利用出来ましたが、データを保存(セーブ)出来ない、もしくは非常に少量しか保存できないという欠点が有り、それがストレスの原因に成りました。逆に磁気メディアの場合は起動に時間がかかり、それが若干ストレスでしたが、データを大量に保存出来る点で優れていました。また、プログラム側で擬似的にスワップと同等の工夫をしてメモリより大容量のプログラムやデータに対応しているものも有りました。
この時代に登場したワープロ専用機はROMにプログラムが埋め込まれていて瞬間起動を実現しつつ、フロッピーに文書データを保存する理想的な構造をしていましたが、専用機故に互換性や製造コストなどが足枷になっていったのではないかと思います。

memory_swap1990.png
1990年代は16Bitから32Bitへの移行期で、この頃に普及しはじめたUNIXやWindowsNTの様なOSと、CPUに搭載された仮想メモリアドレスの機能との組み合わせでメモリスワップが実現し、アプリ側は物理メモリサイズを気にせずに製作出来る様に変化してゆきました。それがかえってプログラムの無用な大規模化に拍車を掛けた面もあると思いますが、いづれにしろ、この時代は未だメモリが非常に高価でスワップやDLL(Dynamic Link Library)の様な仕組みは業界にとって待望の機能でした。
プログラムは大規模化してゆきましたが、それを補って余りある程に高速大容量なHDDと高性能なOSの組み合わせにより、購入したプログラムはメディアから直接起動ではなく、いったんHDDにインストールしてから起動する形へ変化してゆきました。
ネットが普及し始めた当初は通信速度が非常に遅く、作成したプログラムソースを取引先へ通信回線で送るよりも、数枚のフロッピーに入れてタクシーで取引先まで持って行った方が早くて安いという状況で、この頃は未だネット越しにデータを保管し共有する様な使い方が出来る状態ではありませんでした。

memory_swap2000.png
2000年代には32Bitが定着しWindows2000やXPの普及に加えて、UNIX互換かつ無料のLinuxが登場した事によってメモリスワップも必要不可欠な技術として定着してゆきましたが、同時にメモリの価格破壊が起こり、大容量メモリの入手が容易に成り、メモリスワップの必要性が少しづつ薄れていった時期でもあります。
この頃に成るとDLLのバージョン間差異による弊害が無視出来ないくらい深刻に成り、旧来のスタティックリンクへの回帰が起きたり、複数バージョンのDLLを保持したりといった要因で、プログラムサイズの巨大化につながっていったのではないかと思います。
ネットが高速化して1990年代のHDD並みの通信速度と容量に到達した事でネット越しにデータを保管したり共有する使い方が浸透してゆき、ローカルストレージの役割が変化、データの価値基準も変化し、データの選択選別方法が重要になってゆきました。

memory_swap2010.png
2010年代は本格的な64Bit時代になり、64Bitのメモリアドレス空間と安価なDRAMによってストレージ容量と同容量のメインメモリが容易に実現可能に成り、相対的にメモリスワップの必要性が更に薄れ、むしろ足枷となっている面も有る様に思われます。2012年時点で16GBのメモリは円高の影響も有って1万円程度で購入可能ですがWindows7 Ultimateのインストールサイズは15GB程度です。搭載可能な最大メモリ容量はマザーボード次第ですがデュアルソケットのマザーですと768GB4ソケットですと1TBが自作向けとしては最大容量ではないかと思われます。
プログラムはメディアの形で店頭購入するのではなく、ネットからダウンロード購入するのが一般的に成り、光学メディアの存在価値が薄れ、消えてゆきました。
この時代にメインメモリは既にメモリスワップとは逆の使われ方をしています。つまり、ストレージキャッシュです。現在の筆者のメインマシン(物理メモリ16~32GB)の物理メモリマップを調べますとストレージキャッシュ(メモリマップドファイルなど)として利用されている割合が大きく成っている事に気付きます。もう既にメモリスワップは下位互換維持の為の付随機能としての存在意義しか無い様に感じています。SSDの普及でファイルシステムの考え方もボトルネックに成りつつあり、ファイルシステムという考え方自体をそろそろ捨てる必要が有るかもしれません。つまり、メインメモリに直接インストールする・・・考え方によっては1980年代に登場したROMカセットに近い考え方が必要に成ってくると思います。メモリマップドファイルは、こういった考えに近いと思いますが、システム全体を根底から変える必要が有るかもしれません。これはPRAM/ReRAM/MRAMといった不揮発RAMの登場によって確定的に成ると思われます。ユーザー視点ではファイルシステムと同じ見え方だとしても、構造的にはセクタやクラスタといった磁気メディア上の位置を指し示す構造ではなく、直接物理メモリアドレスを指し示す仕組みのOSが必要で、これによって飛躍的な高速化と省電力化を両立した仕組みが実現すると思います。

memory_swap2020-2.png
2020年以降はパソコン用のCPUコアに不揮発メモリが内蔵されて、メモリともCPUとも言えるチップを複数搭載した並列コンピュータが一般化しているのではないかと予想してみます。CF/SDカードの様な形状のCPU搭載メモリをパソコンに追加すると記憶容量と処理容量が向上する様なイメージです。ローカルデータはCPUに搭載された不揮発RAMに直接記憶されオブジェクト指向的なロジックとデータが統合されたハードウエアです。既にシングルスレッドの処理速度は向上が見込めない時代ですから、性能指標としては処理速度ではなく処理容量の様な表現に成っているのではないでしょうか?
並列度がクラスインスタンスの数に近づきますので、粒度の細かい処理が可能に成り、より正確に、より美しく、よりリアルに近づくと思います。一つのオブジェクトが完全なスレッドセーフであれば、オブジェクトの数だけ並列度を上げる事が可能で、より現実世界に近い演算が可能に成り、無限に並列度を上げてゆく事が可能です。
その為には大胆なパラダイムシフトが必要ですが、スティーブ・ジョブス氏の様な強力な牽引力の有るリーダーシップが必要になるでしょう・・・それが無ければ、この時代は停滞し、安さとか小型軽量化とか、バッテリー長持ちとか、流行デザインといった小改良に終始すると思います。
パソコンと言わずスマホであれば、もう少し早くCPUに大容量の不揮発RAMが搭載されるかもしれません。但し、スマホの並列度はそれほど高くはなく、処理能力も今とあまり変わらず、バッテリの持続時間とか通信速度向上などが主題ではないでしょうか?大容量の不揮発RAMが内蔵された場合、OSがLinuxのままですとファイルシステムがボトルネックに成りそうですから、この辺をどう解決して行くかが課題としてあげられそうです。不揮発メインメモリとCPUが一体化したオブジェクト指向的なハードウエアに対してインストール可能で高速かつ電力効率の良い新しい仕組みのOSでデファクトスタンダードを勝ち取った企業が次のマイクロソフトに成ると思います。
Nintendoだったりして?
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

No title

80年代はコピーツールが堂々と売られていましたね。
他人のコピーをするのが多かったですが
正規で購入してもぶっ飛んでも知らんわという
ソフトウエア会社もありました。

上記のシステムはあらゆるモノが監視対象に
することができるので「1984の時代」が
来るかも知れません。

Re: No title

> 80年代はコピーツールが堂々と売られていましたね。

でしたね。
当時は、たしか電子媒体上の著作権を明確に規定する法律が無く、法的にグレーでしたね。

現在は、ネットで全世界的につながってますから今後どうなるのか楽しみです。

No title

macproもいよいよメディア媒体も内蔵しない代物に
なったかなあという気がします。ここの趣旨とは異なりますが
世間はCPU+GPUのAPUでも、必要十分以上のなったので
それが安くて提供できる方向が一層顕著になるんでしょうね。

Re: No title

ねこあたまさん、こんにちは。

次のMacProは全てが私の想像の範囲内ですが、冷却機構はAppleらしい大胆な物に成っていますね。

ThunderBolt 2 や USB3.0 によってあらゆる後付デバイスを嬌態外に追い出した事で成し得た冷却機構だと思います。

CPUはE5系XEONでありながらシングルソケット採用で12コアと言う事はE5-1xxx系/E5-2xxx系で2.6~4GHzのIvy世代でしょうね。

メモリスロットが飛び出す構造に成っている様で、アイデア的には面白いと思うのですがメモリエラーの温床に成りそうでもあり気懸かりです。
プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR