0コメント

【パソコンのメモリ】メモリ不足?メモリの仕組みを簡単に解説&それを踏まえたうえでメイン機のメモリを変えて変わったこと

メモリって、何??

まあパソコンに疎い方であれば、HDDやSSD、もっと簡単に言えば「ストレージ」って奴。アレとは違うけど、データを保管する場所として存在するのが世間一般的に言われる「メモリ」。

写真や動画を保存する「ストレージ」とは違う、パソコンの「メモリ」 これについて説明したうえで、私のメイン機でメモリを換装してどういう問題が解決できたかとかも紹介してみる。



※メモリについて詳しく説明された記事はたくさんあるけど、この記事ではメモリについて踏まえたうえで換装した結果まで書く記事となる。


https://www.irasutoya.com/2014/06/blog-post_6564.html

メモリは物理的にはこのような形状をしている、デスクトップパソコンのパーツだ。ノートパソコンには、省電力化された物やこれより横幅が小さく物理的な幅を抑えたモデルだったり、そもそも基板上にこの黒い物体(半導体メモリ)を基盤に直付けされて、さらに小型化を図ったタイプがあったりする。

基盤直付けタイプの方が物理的な幅を抑えられるので良さそうだが、後々換装する事が出来ないので注意が必要。

それは置いといて、メモリ・・・といっても色々あるので、今回は以後「DRAM」と呼ぶことにする。


そもそもパソコンは、ストレージからデータを読み取って、CPUで演算処理を行って、結果をディスプレイに表示したりストレージに保存、する事が出来る。とりあえずこれが一連の流れ。

しかし、CPUは演算処理を行った結果をCPU内部においておくことはできない(※SRAMの事は今回は考えない)。じゃあどこに置くかっていうのがストレージになるわけだが、一般的にストレージってデータの伝送速度が遅い。

データ読み取り→演算処理→データ書き込み

の流れで矢印の部分の伝送速度が遅いと、次の処理をするためのデータの読み込みが出来ないのでその時間が無駄になってしまう。

そのため、ストレージとCPUの間に「DRAM」を置いておくことで、一時的にデータを保存しておきCPUと高速でやり取りすることで無駄な時間を削減し出来るだけ早く処理するという仕組みになっている。

メモ帳を開く。なんかテキストを書き込む。そこで「保存」という操作をしてやっとテキストが保存される。つまり、「メモ帳で現在編集している内容はDRAM内での出来事」であり、保存は「DRAMからストレージに保存する」ということ。

まあ構造上にもいろいろと利点があるけど、とりあえずは「メモリを中間に置くことでコンピュータをより効率的に動かせるんだな」と理解してもらえれば。


じゃあそのうえでメモリの容量についてもちょっと説明してから換装についても綴ろう。

メモリの容量はまあ、DDR2(※世代みたいなもの)なら1枚512MB,1GB,2GBだとか、で現行のDDR4なら一枚4GB,8GB,16GBとか、新しくなるにつれて容量は増えている。もうDDR5が発売され始めているが、そちらは一枚16GBモデルのが入手困難になるほど売れて、現行のパソコンはメモリ16GB積んでることがほとんどだったが、次世代からはおそらく32,64GBがすぐ主流になっていくだろう、というようなところだ。

メモリ容量については、Shift+Ctrlキー押した状態でEscキーを押すと表示する事が出来るタスクマネージャで「詳細」→上のタブで「パフォーマンス」を見るとわかる。

スクリーンショット 2021-11-14 234404.png
この場合は右上の記述通り、16GB認識している状態。

「容量が大きければ何が変わるのか」というと、それはもちろん、CPUに近い位置で素早く演算できるデータを大量にため込む事が出来る。

スクリーンショット 2021-11-14 234638.png
まあアプリごとにメモリは色々と使うよね。

・・・あれ、3,000MBも消費しているアプリがある。メモリも使用率66%。

これ。容量オーバーしちゃったらどうなるの?


ここが本題となる。私はマイクラにmodを大量(100個くらい)を導入してプレイしているのだが、その分当然一時的に取り扱うデータの容量も大きくなる。
スクリーンショット 2021-11-14 213752.png

・・・ちょっと話はズレるが、マイクラってまあ、ゲームなわけですよ。Javaで動作する。

グラフィック性能でフレームレート(一秒間に何回画面を描写できるか)の値が高いほどヌルヌルに動いて性能がいいって事になるんだけど、
まあ基本60fps出ればOKと考える。

映像処理にはGPUってのを使うんだけど、このタスクマネージャを見る限りGPUの使用率は27%。まだ余裕がある。しかし
スクリーンショット 2021-11-15 000211.png

フレームレートが出ない!!!!!!!!!!!!

ゲームするのがちょっと億劫になるレベルのフレームレートになっている。これは何故か。
http://chanhino.com/minecraft-ram-settings/
↑このサイトを見てもらうと、とにかくメモリ割り当てが低いとフレームレートが落ちるということがわかるであろう。

https://minecraftjapan.miraheze.org/wiki/Minecraft(Java%E7%89%88)%E3%81%AE%E5%8B%95%E4%BD%9C%E3%81%8C%E9%87%8D%E3%81%9F%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E6%96%B9%E3%81%B8
wikiにもいろいろと記述してある。

FoamFixってのをここで初めて知ったので導入してみたが、大きな変化は無かった。若干軽くなったかな?って程度。入れてもメモリは限界に達しまくってる。

何故、DRAMが足りないと動作が重くなるのかというと、DRAMが限界に達して他のデータが処理できなくなると困る(構造上DRAMでデータを取り扱うから、DRAMが使えないと困る)ので、「使わないデータをストレージに一度退避させておく」という処理を行う。仮想メモリとかいうけど、いわゆる「スワッピング」ってもの。他のデータをDRAMに置きたいから容量を明けて最近使ってないデータをストレージに退避させるスワッピングという動作を行うことで、メモリに空きを作る事が出来る。

※データをストレージに退避させることは「スワップアウト」ストレージからDRAMに戻すことを「スワップイン」という。

さっきのタスクマネージャの下部「リソースモニター」からからさらに詳細を閲覧することができるので見てみる。

スクリーンショット 2021-11-15 004757.png

なんだこれ・・・
ハードフォールトがスワップの頻度を表してるんだけど、マイクラのスワップ(javaw.exe)頻度も高いんだけど、Memory Compressionが非常にスワップ頻度が高い。

これはwindows10過去バージョンではタスクとして存在していたがSystemの子プロセスとしてちょっと隠された「システムと圧縮メモリ」という機能のようだ。これは、圧縮という処理を用いて出来るだけメモリを多く自由に使えるようにするための機能らしいが、こいつがスワップ頻度が高すぎるという問題が起きた。結局、マイクラは重い。

そのスワッピングの頻度を減らすことで余分な処理が減り、動作の改善につながるだろうと踏んだわけだ。

スワッピングの頻度を減らす方法。さっきも言った「メモリ(DRAM)が不足するとストレージにデータを退避させるスワッピングという処理が頻発する」という「メモリ(DRAM)が不足」。


まあこれが「DRAMを増設すると性能が上がるよ」につながってくるわけだ。

という訳で、ここからは実際にメモリを増やしてマイクラをやってみて、ページフォールトにどんな影響があるのか、どんだけ快適になるのかを検証してみようと思う。


ここからメモリ換装

※なんか色々と説明しているうえで申し訳ないが、ここからかなりテキトー。

IMG_20211115_161151_086.jpg
型番:BLS16G4D240FSB
Crucial BALLISTIX SPORT LT Grayという商品名でMicronより発売されたDDR4-2400メモリ。

・・・Micron?本当にMicronか?なんか、CFD販売から売られていたりブランド名がClusialになっていたりよく分からん。

新品価格だと8GB二枚で9,300円、16GB一枚で10,500円とかする代物だが、これが結構発売開始してから時間が経つものだ。

少し調べてみたところ、BALLISTIXというClusialから発売されているゲーミングメモリブランドのようだ。ただ、デザインが一新されていてこのモデルは現在公式からは販売されていないようだ。

とは言え、2018年製の物らしいけどね。新モデルのピッカピカ光る奴は、これらと同じDDR4だが去年発売されてる。


今回はこれに換装してみる。


・・・。あれ。シングルチャネルで動作させるのか?

Ryzenはメーカーが別々のメモリを使った時の相性問題っていう発生頻度が非常に多くて、まあ二枚二枚のペアで別々のメーカーのメモリを使うって言うと大体「あたまおかしい」「オイオイこいつ死んだわ」「無謀にもほどがある」的な扱いを受けますw

IntelCPUのパソコンで一度4枚すべて別メーカーのメモリを使ったことが何故かあるんですけど、普通に動作したからね。(とはいえCLとかクロック的に性能ダウンが著しく現れると思うので、常用はしない方がいい。)
じゃあRyzenはというと、

今まで何度も何度も異なるメーカーのメモリを組み合わせたりして起動させてきたが
〇ブルースクリーンを唐突に吐く
〇突然ブラックアウトする
〇突然OSが再起動する
ブルースクリーンにて、見たこともないエラーコードは居たと思ったらネットワーク接続関連の設定が消滅した
なんて事象が必ず発生する。とにかくRyzen使うなら、最初から4枚セットで買っておくのが無難だと思う。

それを踏まえて、「今は製造されてない旧モデル」のメモリを「二枚、シングルチャネル分だけ買った」ってのは理由があって。まあ、8GB二枚を買うより4GB四枚買ったほうが、並列してデータを伝送する事が出来るので性能は上がる。しかし、物理的にコストが跳ね上がってしまう。16GB×2で今回11,000円で買えたのもかなり安い方で、8GB四枚セットの物を買おうとするなら安くても15,000円・・・で、来るかなあ・・・

ってくらい変わってくるのだ。同じ32GBであっても。まあ、並列伝送での速度向上はそれ程の価値があるっちゃあるんだけど。

とりあえず、中古BTO(ドスパラ等、お店が組み立てたデスクトップパソコン)を分解して売りに出しているから動作未確認とのことなので、動作確認からやってみる。
IMG_20211115_162050.jpg
BIOSで認識した。OK

今回もお試しで今まで使ってた4GB×4枚のメモリの2枚を空きスロットに刺してみた。(合計DRAM40GB)

20211115_163435.jpg
なんかメモリ周波数や電圧をAutoにしておくより、あらかじめ手動で低めに設定したほうが言い的なことを聞いたりしたので試してたけど、全然起動すらしなかった。('ω')

3回起動に失敗すると自動で設定をリセットしてくれるのはありがたいね。

Autoだと起動できるが、

IMG_20211115_162338.jpg

よく見ると。
「ハードウェア予約済み 24GB」で40GBの数字の下には「15.4GB」と書いている。これが実際に使える容量だ。どうしてこうなったのかはよく分からないが、前にも相性問題について試したとき同じような現象が起きたのでもう詳しくは考えないことにする。

ちなみに、メモリ増設した時は大抵この現象が起きてしまうが
画面左下の検索欄に「msconfig」→システム構成→「ブート」タブ→詳細オプション
で最大メモリのチェックを外すかつけるとちゃんと認識する。それで治らない場合は相性問題だと私は割り切っている。

Intelだと増設した時にこの動作を必要とされたことないけどなあ・・・( ^ω^)

最近Ryzen9 5950Xに匹敵もしくはその上を行くi9-12900Kも販売されてAMDは窮地に追いやられているのではないだろうか

おっと。脱線した。

メモリは二枚32GB構成に戻した。

あと、メモリを変えてしばらく「ブラウザでネットサーフィン出来ない」「Windowsボタンが反応しない+エクスプローラーがしょっちゅうフリーズする」てな現象が起きていたのが今回最大の謎。しかし一時間弱くらいで普通に使えるようになった。途中でメモリテストとかも走らせたのだが、異常は特になかった。


では、こっから実際にマイクラを動作させて、どれだけ変わったかってのを確認していく。


正直に言うと、「気持ちまあまあ軽くなったかな・・・?」って感じだ。

modの機械類を大量に設置したところでしばらく操作を辞めて安定させた時のフレームレートが換装前は30fps前後までしか上がらなかったが、

40fpsくらいまでには上がるようになった。

まあでも、割と効果はあったんじゃないか?って感じ。

リソースモニターを見てみると、

20211115_224619.jpg
明らかにハードフォールトの値は減っている。

じゃあ、他に重い理由は何?というと、このスワッピングで重くなっていたのにも加え、おそらくやり取りするデータが多い分メモリの帯域幅・・・はDDR4なら同じか。メモリ周波数、あとデュアルチャネル(四枚)からシングルチャネル(二枚)に減らしたのも影響があると思う。

しかし、これ以上はお金が足りなさすぎるので、まあそのうち再チャレンジしてみることにする。


※実装について
片面実装メモリを「シングルランクメモリ」両面実装を「デュアルランクメモリ」とかで、これもメモリを選ぶ上で混在させると相性問題を発症したりするなど、細かい部分がある。こちらはこの記事で詳しくまとめられているみたいなのでぜひ(PC Watch)→https://pc.watch.impress.co.jp/docs/column/century_micro/1053794.html


まとめ。
メモリが足りてないときにメモリを増設することで、スワッピングを減らし動作を軽くする一つの手段として有効だということが分かった。しかし、メモリのシングルチャネル、デュアルチャネル動作や動作周波数などもよく考えて選ぶとよりゲームにおいてもフレームレートの向上につながるだろう。それを踏まえた上で、自作パソコンを組む人は選ぶべし。

一応、個人的にはピカピカ光らせたり余程こだわりがあるとかじゃないならば、BTOパソコンを購入するってのが正直一番安く済む。保証もシンプルで分かりやすいし。素人に相性問題が・・・対応パーツが・・・ソケットの形が・・・シングルランク・・・なんて、難しすぎて分かったもんじゃない。
しかし、メモリが現在主流の16GBで足りず、動きがもっさりしてきた・・・みたいなことが起きたとき。
まあ、動画編集軽くしかやっていなかったが最近結構重めの編集に手を出すようになってきただとか、私のようにゲームに追加要素(mod,moddingとかいう)を無理やり使ってメモリを大量に消費するシーンが増えた、とか。

そういう時は素人でもメモリ交換することの必要性を知っておくと、いつか役に立つ・・・かもしれないし、そこまでメモリが求められなくなって結局そんなことは無かったりするかもしれない。

今回は、メモリを交換してみての効果を体感した。


★蛇足
メモリを相性問題どうこう言っていたが、なんかメモリの刺しが甘くて起動しなかったり、相性問題発生したり、そのちゃんと挿したはずなのにハードウェア予約済みになったりする(これも半刺しになってしまうと起きる事がある)現象に実は記述以上に滅茶苦茶苦しんでた。
実際、3時間くらい格闘してた。疲れた・・・0

この記事へのコメント