エンベデッドシステムスペシャリスト 2023年 午前2 問07
問題文
プログラムの局所参照性に関する記述のうち、適切なものはどれか。
選択肢
ア:繰り返し使われる処理をサブルーチン化すると、サブルーチンの呼出しと復帰のために分岐命令が増えるので、必ず局所参照性は低くなる。
イ:同様の処理を反復する場合、ループやサブルーチンを用いずにプログラムにコードを繰り返して記述する方が、局所参照性は高くなる。
ウ:分岐命令などによって、主記憶を短い時間に広範囲に参照するほど、局所参照性は高くなる。
エ:ループによる反復実行のように、短い時間に主記憶の近接した場所を参照するプログラムの方が、局所参照性は高くなる。(正解)
🔒 解説は解答すると表示されます
プログラムの局所参照性【午前2解説】
正解の理由
正しいのはエです。
局所参照性とは、プログラムが短い時間の間に、主記憶上の限られた範囲を繰り返し参照する性質です。たとえば、ループでは同じ命令や近接したデータを繰り返し利用するため、局所参照性が高くなります。
局所参照性が高いと、キャッシュに必要な命令やデータが残りやすくなり、主記憶へのアクセスを減らして処理を高速化できます。
解法ステップ
- 局所参照性は「短い時間に、同じ場所や近くの場所を参照する性質」と捉えます。
- 選択肢が、同じ場所・近接した場所を参照するのか、広範囲を参照するのかを確認します。
- ループのような反復処理は、同じ命令や近接した記憶領域を参照しやすいため、局所参照性が高いと判断します。
選択肢別の誤答解説
- ア:サブルーチンの呼出しや復帰で分岐命令が増えることだけから、局所参照性が必ず低くなるとはいえません。サブルーチン内の命令やデータが繰り返し使われる場合は、局所参照性が高くなることもあります。
- イ:コードを繰り返し記述すれば局所参照性が高くなるとは限りません。局所参照性は、コードを重複して書いたかどうかではなく、短い時間にどの記憶領域を参照するかで決まります。
- ウ:主記憶を短い時間に広範囲に参照すると、参照する場所が分散します。これは局所参照性が高い状態ではありません。
- エ:ループのように、短い時間に主記憶の同じ場所や近接した場所を参照するプログラムは、局所参照性が高くなります。
よくある誤解
- ループを使えば必ず局所参照性が高いわけではありません。ループ内で毎回離れた場所のデータを参照する場合は、空間的な局所参照性が低くなることがあります。
- 分岐命令があると局所参照性が低いとは限りません。重要なのは分岐命令の有無ではなく、実際に参照する命令やデータの範囲です。
- コードの重複と局所参照性は同じ概念ではありません。局所参照性は、主記憶へのアクセスの傾向を表します。
補足コラム
局所参照性には、主に次の2種類があります。
- 時間的局所性:最近参照した場所が、近いうちに再び参照されやすい性質です。ループ内の命令を繰り返し実行する例が該当します。
- 空間的局所性:ある場所を参照すると、その近くの場所も続けて参照されやすい性質です。配列を順番に処理する例が該当します。
キャッシュメモリは、こうした局所参照性を利用して、よく使われる命令やデータを高速に利用できるようにしています。
FAQ
Q. 局所参照性が高いと、なぜ処理が速くなるのですか?
A. 参照する命令やデータがキャッシュに保持されやすくなり、主記憶までアクセスする回数を減らせるためです。
A. 参照する命令やデータがキャッシュに保持されやすくなり、主記憶までアクセスする回数を減らせるためです。
Q. ループは時間的局所性と空間的局所性のどちらに関係しますか?
A. 同じ命令を繰り返し実行する点では時間的局所性に関係します。配列などを順番に処理する場合は、空間的局所性にも関係します。
A. 同じ命令を繰り返し実行する点では時間的局所性に関係します。配列などを順番に処理する場合は、空間的局所性にも関係します。
関連キーワード: 局所参照性、時間的局所性、空間的局所性、キャッシュメモリ、主記憶アクセス

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

