ハードウェア

【応用情報】主記憶装置(メインメモリ・メモリ)について出題されることを全部解説!

お茶ん太
お茶ん太

この記事では、主記憶装置について出題されることを全部、初心者にも分かりやすく図解付きで丁寧に解説しています!

主記憶装置

  • 主記憶装置は記憶装置の一種で、コンピュータが動くために必要なプログラムやデータを一時的に記憶する。
  • 主記憶装置がどこにプログラムをロードするのか決める方式に、固定区画方式可変区画方式の2種類がある。
  • 可変区画方式の場合、中途半端に主記憶装置の区画が空くことがあり、その空き領域をフラグメンテーションと呼ぶ。
  • プログラムやデータを配置できる空き領域のうち、最も小さい領域にプログラムやデータを配置する方式をベストフィット方式と呼ぶ。
  • フラグメンテーションが発生したとき、ロードされているプログラムを再配置することで、空き領域をまとめることをガーベージコレクションと呼ぶ。
  • 主記憶装置を複数の区画に分割することで、CPUからのアクセスを並列的に処理できるようにする技術をメモリインタリーブと呼ぶ。

プログラムは主記憶装置へロードする

主記憶装置は記憶装置の一種で、コンピュータが動くために必要なプログラムやデータを一時的に記憶します。USBやCDのように永続的にデータを保管することを目的とせず、コンピュータが動くために必要な情報を一時的に保管出来ればOKという記憶装置になります(なので、主記憶装置はCPUの作業机なんて言われることがあります)。主記憶装置はメインメモリやメモリと呼ばれることもあります。

コンピュータは、プログラムを実行するとき、主記憶装置とCPUでデータをやり取りします。詳しくはこちらの記事を見て下さい。

【応用情報】コンピュータの五大装置と命令実行サイクルを解説 コンピュータの五大装置 制御装置・演算装置・記憶装置・入力装置・出力装置を合わせて五大装置と呼ぶ。制御装置と演算装...

データだけでなく、私たちが使うプログラムも、普段は補助記憶装置に記録されており、プログラムを実行する時は主記憶装置へロードしてから実行します。CPUは主記憶装置に置いてある命令を実行しますからね。

主記憶装置上のどこにプログラムをロードするのか、を決める方式は色々あるのですが、代表的なものに固定区画方式可変区画方式があります。

固定区画方式では、その名の通り、主記憶を固定の長さで区切り、そこにプログラムをロードします。一方、可変区画方式では、プログラムの大きさに合わせてサイズを区切ります。

ちなみに、主記憶装置と切っても切り離せないのがキャッシュメモリです。主記憶装置は処理速度が遅いんですが、キャッシュメモリは、そんな遅い主記憶装置に代わって、CPUと命令やデータのやり取りをします。詳しくはこちらの記事をご覧ください。

【応用情報】初心者向け!キャッシュメモリについて解説 キャッシュメモリ CPUは主記憶装置とやり取りしながら命令を処理するが、主記憶装置はCPUと比べて処理速度が遅い。...

フラグメンテーション

プログラムはロードした順に実行が終了するとは限りません。例えば、プログラムA→プログラムBの順番でロードしたものの、先にプログラムBの実行が終了する、なんてこともあり得ます。

そのため、可変区画方式の場合、中途半端に主記憶装置の区画が空く場合があります。
中途半端に区画が空いてしまうと、容量的には他のプログラムをロード出来るが、区画的にロード出来ないという状況になることがあります。この中途半端に出来た区画をフラグメンテーションと呼びます。

空きメモリ領域を割り当てる:ベストフィット方式

フラグメンテーションがあるので、可変区画方式の場合、次のプログラムをどの領域に配置すべきか?という話が出てきます。

空き領域を割り当てる方式の一つにベストフィット方式があります。ベストフィット方式の場合、プログラムが配置できる空き領域のうち、最も小さい領域にプログラムを配置します。ただ、最小の空き領域に割り当てるため、とても小さい余りの領域が多数発生する可能性が高くなります。下図の例だと、余りで1MBの空き領域が発生します。6MBの方に配置していれば、余りは2MBとなります。1MBの余りより2MBの余りの方が使い勝手は良さそうですよね。ベストフィット方式はこんな感じで小さい空き領域が発生する可能性が高くなります。

ガーベージコレクション

フラグメンテーションが発生したとき、ロードされているプログラムを再配置することで、空き領域をまとめる必要があります。これをガーベージコレクションと呼びます。

メモリインタリーブ

命令を実行するとき、CPUと主記憶装置間でデータのやり取りをしますが、主記憶装置はデータを1個ずつしか受け渡しできません。しかも、主記憶装置はCPUに比べて処理速度が遅いので、折角CPUの処理速度が高くても、必要なデータが全然来ないため、その処理能力を完全に使えないことがあるんですね。

そこでメモリインタリーブでは主記憶装置を複数の区画に分割します。そうすることで、CPUが複数の区画に同時にアクセスできるようになるため、速くデータの受け渡しができるようになります。

応用情報技術者試験での出題例

令和7年度秋期問5

応用情報技術者
午前試験 
令和7年度秋期問5

記憶領域を管理するアルゴリズムのうち,ベストフィット方式の特徴として,適切なものはどれか。

ア 空きブロック群のうち,アドレスが下位のブロックを高い頻度で使用するので,アドレスが上位の方に大きな空きブロックが残る傾向にある。

イ 空きブロック群のうち,要求された大きさを満たす最小のものを割り当てるので,最終的には小さな空きブロックが多数残る傾向にある。

ウ 空きブロックの検索にハッシュ関数を使用しているので,高速に検索することができる。

エ 空きブロックをアドレスの昇順に管理しているので,隣接する空きブロックを簡単に見つけられ,より大きな空きブロックにまとめることができる。

正解と解説

正解は”イ”

ベストフィット方式は、プログラムが配置できる空き領域のうち、最も小さい領域にプログラムやデータを配置します。

令和6年度春期問8

応用情報技術者
午前試験 
令和6年度春期問8

同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつCPUがある。図のようにアドレス1001から1004のデータをアドレス1003から1006に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから1語ずつ行われ,方向フラグに0を指定するとアドレスの昇順に,1を指定するとアドレスの降順に転送を行うものとする。

正解と解説

正解は”エ”

1001~1004に格納されているデータを1003~1006に転送するので、答えとしてあり得るのは、

①転送元の開始アドレスが1001、転送先の開始アドレスが1003で、昇順に転送する
②転送元の開始アドレスが1004、転送先の開始アドレスが1006で、降順に転送する

かのどちらかになります。

①の場合、1001から1003への転送(1回目の転送)で元々1003に入っていたデータを1001のデータで上書きしてしまいます。1002から1004への転送(2回目の転送)でも1004のデータを上書きしてしまうので、NGとなります。

②の場合は、途中でデータを上書きしてしまうことなく、データの転送が可能になります。

よって、答えはエとなります。

令和4年度春期問18

応用情報技術者
午前試験 
令和4年度春期問18

フラグメンテーションに関する記述のうち,適切なものはどれか。

ア 可変長ブロックのメモリプール管理方式では,様々な大きさのメモリ領域の獲得や返却を行ってもフラグメンテーションは発生しない。

イ 固定長ブロックのメモリプール管理方式では,可変長ブロックのメモリプール管理方式よりもメモリ領域の獲得と返却を速く行えるが,フラグメンテーションが発生しやすい。

ウ フラグメンテーションの発生によって,合計として十分な空きメモリ領域があるにもかかわらず,必要とするメモリ領域を獲得できなくなることがある。

エ メモリ領域の獲得と返却の頻度が高いシステムでは,フラグメンテーションの発生を防止するため,メモリ領域が返却されるたびにガーベジコレクションを行う必要がある。

正解と解説

正解は”ウ”

フラグメンテーションとは、プログラムのロードと解放を繰り返すことで、中途半端に主記憶のメモリが空く現象のことです。フラグメンテーションが発生すると、合計としては十分なメモリ容量があるのに、必要なメモリ領域を獲得できないという状態になります。

令和4年度春期問21

応用情報技術者
午前試験 
令和4年度秋春期問21

次の方式で画素にメモリを割り当てる640×480のグラフィックLCDモジュールがある。始点(5,4)から終点(9,8)まで直線を描画するとき,直線上のx=7の画素に割り当てられたメモリのアドレスの先頭は何番地か。ここで,画素の座標は(x,y)で表すものとする。

[方式]
・メモリは0番地から昇順に使用する。
・1画素は16ビットとする。
・座標(0,0)から座標(639,479)までメモリを連続して割り当てる。
・各画素は,x=0からx軸の方向にメモリを割り当てていく。
・x=639の次はx=0とし,yを1増やす。

ア 3847     イ 7680     ウ 7694     エ 8978

正解と解説

正解は”ウ”

右上の(0,0)から(1,0)⇒(2,0)⇒(3,0)・・・とメモリを割り当てていき、一番右端の(639,0)まで行くと、下の段の左端(0,1)に戻ります。

直線上のx=7の画素(6,7)に辿り着くまでに、経由する画素の数は、640×6+7=3847個となります。

1画素当たり16ビットで、メモリ1番地当たり8ビットなので、1画素当たりメモリを2番地使います。

よって、(6,7)のメモリのアドレスの先頭は、0番地から数えて、3847×2+1=7695個目の番地なので、7694番地となります。(0番地から数えて1個目の番地は0番地です)

令和3年度秋期問9

応用情報技術者
午前試験 
令和3年度秋期問9

メモリインタリーブの説明として,適切なものはどれか。

ア 主記憶と外部記憶を一元的にアドレス付けし,主記憶の物理容量を超えるメモリ空間を提供する。

イ 主記憶と磁気ディスク装置との間にバッファメモリを置いて,双方のアクセス速度の差を補う。

ウ 主記憶と入出力装置との間でCPUとは独立にデータ転送を行う。

エ 主記憶を複数のバンクに分けて,CPUからのアクセス要求を並列的に処理できるようにする。

正解と解説

正解は”エ”

メモリインタリーブは主記憶装置を複数の区画に分割します。そうすることで、CPUが複数の区画に同時にアクセスできるようになるため、速くデータの受け渡しができるようになります。