メーカー製パソコンでは32bit OSの管理外メモリは使えない


投稿日:2014年10月5日
  • 12
  • 0



軽い気持ちで導入するべきでないRAMディスク管理ソフト

physical_address

64bit OSが全盛の時代ですが、まだ32bit OSを利用している方も多いはず。

べ、別に32bitだって使えるCPUは同じだし、SSDにすればエンコードでもしない限り速度変わらないし、メモリの上限が3GBだって全然不便してないし…|ω・`)チラッチラッ

という状態で、メモリの件に関しては非常に気になっていました。

特に貧乏性の私が気になったのが、4GBのメモリを積んでいるのに最大でも3GB程度しか認識されないという点です。

physical_address03

このメインメモリとして利用できない部分を「管理外領域メモリ」と言います。この領域はOSに認識されません。

そこで「管理外領域メモリ」をRAMディスクとして認識させるソフト利用して有効活用しよう。というのがよくある話なんですが、実はこれ落とし穴があります

なぜかあまり解説されませんが、実は「管理外領域メモリ」を有効活用するにはいくつかの条件があるからです。

このページではその条件を紹介します。


まずはCPUがPAEに対応しているか調べる

PAE(Physical Address Extension)とは、32bit OSで4GBを超えるメモリを扱えるようにする機能です。別名「物理アドレス拡張PAE」と呼ばれます。
PAEを有効にすると最大で64GBまでメモリを認識することができます。

Intel製のCPUの場合「Socket 775以降のCPU」、AMD製のCPUの場合「Socket 754以降CPU」であれば対応しています。
Intelで言えばPentium4のPrescott以降で、2004年以降のCPUであれば対応していることになります。

確実に調べたい場合はCoreinfoというCPUの情報を書き出してくれるプログラムを利用します。「Coreinfoの公式ページ」にアクセスしてダウンロードしてください。

physical_address01

解凍した「Coreinfo.exe」をCドライブ直下に移動します。

スタート>プログラム名を入力して実行」で「cmd」と入力してエンター。コマンドプロンプトを起動します。
(行頭の>はコマンドプロンプトを表す文字です。実際には入力しないようにしてください)

>cd C:¥
>coreinfo | findstr "PAE"

Coreinfo v3.31 - Dump information on system CPU and memory topology
Copyright (C) 2008-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
PAE             *       Supports > 32-bit physical addresses

7行目のPAEの欄に「*(アスタリスク)」がありますが、これが有効なことを示す表示です。無効な場合は「」となっています。


PAEを有効にする

再びコマンドプロンプトを立ち上げブートローダでPAEを有効にします。
(この方法はVistaの方法です。NT系OSの場合は異なるのでマニュアル等をご覧ください。)

>bcdedit

Windows ブート マネージャ
--------------------------------
identifier              {bootmgr}
device                  unknown
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {current}
resumeobject            {cef94374-7352-11e1-8da6-806e6f6e6555}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30
resume                  No

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Vista (TM) Home Premium
recoverysequence        {572bcd56-ffa7-1155-aae0-0007e994107d}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {cef94236-7352-11e1-8da6-806e6f6e6555}

以上のようにブートマネージャとブートローダの情報が表示されます。
ブートローダの項目に「pae」の項目がなければとPAEは無効な状態です。「bcdedit /set pae forceenable」と入力して有効にします。

>bcdedit /set pae forceenable
この操作を正しく終了しました。

再び確認します。

>bcdedit
(省略)
Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Vista (TM) Home Premium
recoverysequence        {572bcd56-ffa7-1155-aae0-0007e994107d}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {cef94236-7352-11e1-8da6-806e6f6e6555}
pae                     ForceEnable

無事paeの項目が加わっています。
ちなみに「ForceEnable」とは強制的に有効にするという意味です。


メモリーリマッピング機能を有効にする

メモリーリマッピング(Memory Remapping)とはメモリホールと呼ばれるOSからアクセスすることのできないメモリ空間をremapメモリ領域へ置き換える機能です。

メモリホールとはPCIメモリアドレス範囲のことで、BIOSやハードウエア(主にビデオメモリ)に関する情報を扱うために予め取られる空間です。

32bit OSでは扱える最大4GBの領域にPCIメモリアドレス範囲が含まれるため、OSでは約3GB程度しかメモリを認識することができません。

physical_address02

上の図からわかるようにPAEでメモリ空間を拡張していないと、有効にリマッピングできません。
詳しい原理はわかりませんが(2GBの部分からリマップする?)メモリーリマッピングを単体で行うと、使えるはずだった3GB程のメモリが2GB程度しか認識しなくなります

以上のことから32bit OSに4GBのメモリを積み、OS管理外メモリを使うにはメモリーリマッピングが必須です。
自作PC等の方は、BIOSの設定でメモリーリマッピングを有効にしてRAMディスクとして利用できます。BIOSの表記はマザーボードによって異なるので、マニュアルを参照してください。

題名にもあるように問題はメーカー製のパソコンの場合です。
BIOSにメモリーリマッピングの項目がないことが多く、設定ができません。そのためどんなRAMメモリ用のソフトを使ってもOS管理外メモリを使えるようにはなりません

また、RAMディスクを作成できたとしても、それは本来使える3GBのメモリから切り取って作ったRAMディスクです。実メモリが減った分スワップしやすくなり、逆に動作が遅くなることもあります。

どうしても有効にRAMディスクを利用したいなら、PAEを有効にした上で、4GB以上の実メモリを積む必要があります。(RAMディスクのためだけにメモリを増設するくらいならグレードが上のSSDでも選んだほうがよっぽど効果的ですが…)

以上のことを理解せずにWeb上にあふれるRAMディスク管理ソフトを導入すると、様々な不具合が出て、最悪の場合OSが起動しなくなることもあります。
というよりも、私は動作しなくなりました(´;ω;`)ウッ…。いくつかのソフトをインストールして動作テストを行っている最中に突如ブルースクリーンに…。そのままOSが起動することはありませんでした。
悪いことにTrueCryptでドライブを暗号化していたので、データの救出にも非常に苦労しました。

ここまで読んでいただいた皆さんなら納得していただけると思いますが、ソフトの「インストールするだけ簡単!」などの宣伝文句に騙されないようにしてください。

少しでも時間短縮しようと思って導入したソフトのお陰で、何時間も無駄にしてたら世話無いですねw


現在のページを共有する



現在のページに関連する記事

メーカー製パソコンでは32bit OSの管理外メモリは使えない Windowsの起動ディスクとパーティション入門
メーカー製パソコンでは32bit OSの管理外メモリは使えない Windows 10でパーティションを変更するならAOMEI Partition Assistant
メーカー製パソコンでは32bit OSの管理外メモリは使えない Windows 10を32bit版から64bit版に変更する方法
メーカー製パソコンでは32bit OSの管理外メモリは使えない yum-utilsを使って/bootの不要なカーネルを削除する方法
メーカー製パソコンでは32bit OSの管理外メモリは使えない Mac OS 9時代のIDE接続のHDDをMacDrive 10を利用してWindows 10で読み込む方法
メーカー製パソコンでは32bit OSの管理外メモリは使えない EISA構成パーティションをWindowsXPで削除、未割り当て領域をCドライブに統合する方法
メーカー製パソコンでは32bit OSの管理外メモリは使えない HD Audio Background Processが原因でPCの動作が重い場合の対処法

おすすめの記事

GMO系列のホスティングサービスでGmailへメールが送信できない不具合が発生中

GMO系列のホスティングサービスでGmailへメールが送信できない…

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

本気で作りたい人向け、WordPressプラグインの作成方法

本気で作りたい人向け、WordPressプラグインの作成方法

新しいGoogleマップ「Google Maps Platformの使い方」まとめ

新しいGoogleマップ「Google Maps Platformの使い方」まとめ

UWSCでEXCELの作業を自動化する方法

UWSCでEXCELの作業を自動化する方法

ads.txtの設置方法を通して学ぶインターネット広告の問題点

ads.txtの設置方法を通して学ぶインターネット広告の問題点

ImageMagickをWindowsのXAMPPに導入する方法

ImageMagickをWindowsのXAMPPに導入する方法

iptablesの設定ファイルをシェルスクリプトを利用して動的に作成

iptablesの設定ファイルをシェルスクリプトを利用して動的に作成


いただいたコメントなど

  1. 通りすがりです のコメント:

    とてもわかりやすいお話ですね。わたくし、この結論に達するまで、丸一日、某メーカー製タブレットと格闘していました。RAMDISKソフトを様々漁り、何度もインストール・アンインストールを繰り返したり、設定をいじくり回しても駄目でした。トホホです。仰せの通り、BIOSにメモリリマップの項目がありません。何度も隈なく探しても、見当たりません。それでも諦めつかず、WEBを漁っていた所、この記事にたどり着きました。同じような思いをされていた方に出会えて、諦めもつきそうです。有難うございました。

    • oxy のコメント:

      お役に立てたようで何よりです。
      あまり需要が無いのか、ほとんど情報がなかったので同じ失敗をする方が減らせればと、まとめてみました。
      私の場合は復旧作業に丸一日かかりましたw

  2. 匿名 のコメント:

    初めて1時間でこの記事に気づけてよかった・・・
    感謝感激です!!!

  3. hiro のコメント:

    メーカー製のPCの場合でメモリーリマッピングの設定ができないというのは
    最初から有効になってるからじゃないでしょうか?
    実際、VAIOつかっててメモリーリマッピングの設定などしていませんが
    VSuite RamdiskとRAMDAを試してみましたが一応今のところきちんと使えています。
    PAEも設定しなくとも有効になってましたしそんな気がします。

    ただ、管理外領域で確保してる設定にはなってますが実際は領域内から確保してると言う話については
    確かにメモリ使用量が2GB超えた辺りからスワップが多くなってるのでなきにしもあらず。

    • oxy のコメント:

      ご指摘ありがとうございます。
      私が利用した際も動作はするものの、メモリを使うソフトを利用するとあっという間にスワップが発生しました。
      断定はできませんが、使えるはずのメモリから切り取って使っていると思われます。

      ちなみにChromeなどのメモリを使うソフトを利用すれば簡単に判断できます。

  4. 匿名 のコメント:

    こんばんわ。
    今となっては32bitWindows自体がめずらしくなってきてはいますが、メモ代わりに。

    RAMディスクでOS管理外メモリが使えているかどうかは、RAMMapという物理メモリ利用状況を見るツールを使えばよいでしょう。
    https://docs.microsoft.com/ja-jp/sysinternals/downloads/rammap

    仮想メモリからRAMディスク領域を確保するタイプならPaged Poolが
    物理メモリから直接RAMディスク領域を確保するタイプならNonpaged Poolが肥大化します。
    OS管理外メモリが使えている場合は、Paged PoolとNonpaged Poolが肥大化しない分、
    OSや常駐アプリがMapped Fileを多く確保します。
    ※Vista以降のWindowsは一定の領域まで事前にメモリを確保してしまう挙動に変わったため

    Paged Poolはカーネル モードで動作するドライバによって確保される仮想メモリ空間で、OS コンポーネントやアプリケーションにより利用されるもので、ページアウト可能なため確保した領域が全て物理メモリ上に存在するわけでは有りません。
    Nonpaged Poolはページアウト不可能な領域で、確保した領域は全て物理メモリ上に存在します。
    Mapped Fileはディスク上のファイルリソースをメモリ領域にマッピングしたもので、メモリにアクセスするためディスクにアクセスするよりも高速にアクセスできます。

  5. 増田 和弘 のコメント:

    メモリ認識
    少しずつ拡張する(OS)戦略
    結構ダルいな。

    ガッツリはやくならない足枷。

    RAMはやく進めば、
    圧掛けてそういう速度でも記録残るディスクや、よりアクセス速度はやいRAM
    と、していけば、
    1k1k1k
    画素程度の3Dがサクサク
    処理出来そうなのに、
    ハードがやや遅め。

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。