![見出し画像](https://assets.st-note.com/production/uploads/images/143105646/rectangle_large_type_2_2789872a06dd7136f4fada46f8c5f5da.png?width=1200)
メモリ(RAM)について
はじめに
大学院生のころ,数値解析を用いて流体現象の解明を行ってきた関係で,PCの仕組みやデータ記憶,処理などの仕組みについて勉強するようになりました.これら勉強した内容について,何回かに分けて備忘録を書いています.前回のCPUに続いて,今回はメモリ(RAM)について書いていきます.
メモリ(RAM)
メモリ(RAM:Random Access Memory)とは,CPUが何らかの処理を行ったり,画面上になにかしらのデータを表示したりするときに使う作業用の主記憶装置のことです.RAMのデータは頻繁に書き換えられ,電源が切れると作業に使かっていたデータも消えちゃいます...
![](https://assets.st-note.com/img/1714738405638-67Beo2jRLl.jpg?width=1200)
一般的には,メモリは机の広さに例えられますね.メモリが多いほど(=机が広いほど),一度に多くのアプリを使うことが出来ます.
私は,学生の頃,エクセルを使って,データを処理したり,流体計算結果を可視化するソフトを使いながら,グラフや図面を作り,これをパワーポイントに張り付けてゼミの資料を作っていました.このほかにもスパコンにアクセスするソフトなどなどありました.学部生のころ(2014年ごろ)はメモリが8GBのノートパソコンを使っており,これらのアプリを同時に扱うにはメモリ容量が少なく,パソコンがフリーズしていました.大学院生になった時に,奨学金でメモリ32GBのデスクトップパソコンを買い,快適な研究環境となったことを覚えています.
しかし,この「机の広さ」数値シミュレーションにおけるメモリの役割に対して不十分だと思います。データの内容が書き換えられるということを表していないのではないでしょうか?
流体解析では,先日の記事にあるように,現在時刻(nステップ)の流れ場の情報を使って,次の時刻(n+1ステップ)の流れ場の情報を計算することが多いです.その時刻の計算が終わると,n+1ステップの情報をnステップの情報を保存していた格納庫に置き換え,n+1ステップの情報をリセットします.この時、cpuにあるデータを書き換えて、それをメモリに戻す処理を行っています。つまり、cpuとメモリの間でのデータ転送速度が重要になります。
こちらの記事にあるように複数のcpuコアが同時に処理すると(並列処理)、それぞれのコアがメモリとの間でデータをやり取りすることになります。コアが増え、同時にやり取りするデータ量がメモリの転送速度(帯域幅と呼ばれる)を超えると、データの転送待ち(渋滞)が発生します。その結果、コア数を増やしても計算時間が短縮されないということがよくあります。
私のPCには,2枚のメモリが刺さっています。1枚のメモリ容量が32GB,転送速度(帯域幅)が38.4GHzであり,2枚のメモリの合計はそれぞれ64GB, 76.8GHzとなります.スパコンには,8枚とか16枚とかのメモリを設置することがあるようですが,このメモリの転送速度(帯域幅)のことを考えると当然ですね!このようなwindowsやlinuxでのメモリ帯域幅を圧倒しているのがappleシリコンですね!プロ向けのチップとしてM2 Ultraチップがありますが,これのメモリ帯域幅は800GHzだとか...cpuとメモリが一つのチップの中にまとめられているから出来るメモリ帯域幅なのでしょう!
この記事が気に入ったらサポートをしてみませんか?