主記憶の構成と管理
主記憶は、CPUが命令やデータを直接読み書きする記憶装置である。主記憶の管理では、限られた容量と速度を生かしてアクセス要求に効率よく応えることと、プログラムの実行に応じて領域を確保し回収することが中心となる。本単元では、メモリインタリーブによる並列アクセス、再帰呼出しを支える記憶管理、動的な領域の回収と再配置を整理する。
メモリインタリーブの原理
メモリインタリーブは、主記憶を独立して動作する複数のバンクに分け、連続するアドレスを異なるバンクへ交互に割り当てる方式である。 1つのバンクがアクセスを処理している間に別のバンクへ次の要求を送れるため、アクセスが重なり合い、連続したデータを扱う際の転送効率が高まる。 目的はCPUからのアクセス要求を並列に処理することにあり、この考え方が方式全体の基礎となる。
ただし、同じバンクへの要求が競合した場合には、そのバンクの処理が終わるまで待つ必要があるため、要求が必ず並列に処理されるわけではない。 効果はアクセス先の割当てやメモリ構成などの条件によって左右されるため、並列化の度合いを条件とあわせて理解しておく必要がある。
仮想記憶やバッファ、DMAとの区別
仮想記憶は、主記憶の物理的な容量を超えるアドレス空間をプログラムに見せる仕組みであり、補助記憶を使う点でメモリインタリーブとは目的も構造も異なる。 主記憶と磁気ディスクのようなアクセス速度の差を補うために両者の間に置かれるのがバッファメモリの役割であり、これもバンクによる並列化とは別の仕組みである。
CPUを介さずに主記憶と入出力装置の間でデータを転送する方式はDMAであり、主記憶の内部構成を指すものではない。 同じ主記憶の話題であっても、構成の方式、速度差の吸収、入出力の転送方式を分けて考えることが判断の基準となる。
再帰呼出しとスタックによる保存
再帰呼出しを行うと、呼出しのたびにレジスタの内容などを退避しておかなければ、元の処理に戻ったときの状態を復元できない。後から呼び出された処理が先に終わるため、退避した内容は呼び出された順と逆の順に取り出す必要がある。 この取出し順序を実現するのが後入れ先出し(LIFO)の方式であり、その典型的な実装がスタックである。
この節の続き
- 動的な領域の回収と再配置
- 実際の場面
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む