- 締切済み
パソコンのメモリー、HDD
メモリに入りきらないプログラムはHDDで実行されますが、HDDが2TBぐらいあれば、パソコンのプログラム実行速度は各段に速くなりますか?お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- parts
- ベストアンサー率62% (6366/10151)
Q/メモリに入りきらないプログラムはHDDで実行されます。 A/残念ですがそれは大きな間違いです。CPUで処理するプログラムの全ては、物理メモリを必ず経由します。仮想メモリというのは、あくまでOS上で便宜上メモリに見立ててハードディスクやSSDにキャッシュしているだけであり、もしそれらのプログラムが必要な場合は、仮想メモリの、使用頻度の少ないプログラムを、ハードディスクの仮想メモリに移行し、その代わりに仮想メモリの必要なプログラムをメモリに格上げするのです。その後、CPU上のキャッシュに格上げし、実行されます。 即ち、HDD上で実行されるのではなく、HDD上にあるのは、その時点ですぐに必要はないが、OSの便宜上常駐していると見せる必要があるプログラムです。 それを前提に回答します。 Q/HDDが2TBぐらいあれば、パソコンのプログラム実行速度は各段に速くなりますか? A/そもそも速さの定義が容量の定義と混同されています。 何故、メモリ(物理メモリ)というデバイスが必要なのかというと、メモリは主記憶と呼ばれる媒体だからです。このメモリは、CPUと直接的に情報の転送を出来る唯一のデバイスとなります。即ち、CPUにデータを転送するには、必ずメモリを介さなければならないのです。 だから、メモリは主記憶装置と呼ばれます。 それに対してHDDは補助記憶装置です。これは、SSDでもCD-ROMでもDVD-ROMでも言えます。(これらは電源を切ってもデータが保持できる最終保存媒体です。メモリは電源を切るとデータ内容を保持できません) では、何故メモリがあるのかというと、CPU内部の速度は毎秒で最先端のものなら、1秒間に28GB~60GB以上の転送速度があります。28GBというと、640GBのHDDを22秒ほどで読めるほどの転送速度です。すなわち、パソコン全体の速度が28GB毎秒の転送速度を持っていれば、コンピュータは今の速度から考えると、理論上数百倍高速になるわけです。 実際のハードディスクは、シーケンシャルリードで毎秒100MB~300MB程度が限界です。 ここに仮想メモリを配置すると速度は、信じられないほど遅くなります。理由は、物理メモリに一度すべてのプログラムを展開し、その後CPUに送るためです。 そして、その物理メモリはどのぐらいの速度かというと、12.8GB/sぐらいです。 これでも、CPUの半分です。物理メモリに十分な空き容量があると、高速なのは、この転送速度が高速だからです。 では、なぜ常駐するプログラムは2GB~8GB程度しかないのに、それより高速な帯域が必要なのかという疑問が生まれると思いますので、それについても回答します。 たとえば、今文字を入力するとして、その処理はリアルタイムにプロセッサで処理されます。 しかし、処理するためのプログラムは、多くても100MB程度です。それがメモリに展開されて、そのプログラムないで入力した内容を、文字に変換するのです。 即ちどういうことかというと、処理の基本は同じ処理のループなのです。Aという文字が入力されました。「あいう」という文字なりました。変換が指示されました。確定されました。次に、「かきく」と入力されました。といった具合にループが繰り返されます。これは、データ演算などでも同じで、基本的に処理の大半はプログラムを起動するなどを除けば、ループが7割以上を占めています。 そこで、物理メモリ外の緊急処理が発生した場合。 プロセッサはその中で今すぐ必要な処理を、時間分割で受け付け、処理します。 しかし、要求した命令が仮想メモリにある場合は、下層の媒体からCPUのキャッシュに上げるまで、他の後から来る処理をとめて待たなければなりません。結果的に、処理がとまっているように見えるのです。 これが、仮想メモリを使うと格段に遅くなる理由です。 尚メモリが必要な容量以上に実装されているなら、仮想メモリは使わない方が高速になります。まあ、多くのヘビーユーザーは、そもそも仮想メモリを使わないために、メモリを最大まで増設して使うことも多いのはそのためです。
お礼
物凄く御丁寧な解説をありがとうございます。とても勉強になります。