CPUのアドレス指定とは?初心者でも理解できるデータ参照の仕組みをやさしく解説
生徒
「CPUについて調べていたら、アドレス指定という言葉が出てきたんですが、これはどういう意味なんですか?」
先生
「アドレス指定(アドレスシテイ)とは、CPU(シーピーユー)が主記憶装置(シュキオクソウチ)のどこにデータがあるのかを決めるための仕組みのことです。」
生徒
「データの場所をどうやって指定するのかということなんですね。でもいくつか種類があると聞いて、少し難しそうで…。」
先生
「確かに種類はありますが、順番に整理していけば理解できます。CPUがデータを扱うときの基本的な仕組みなので、一緒にゆっくり見ていきましょう。」
1. アドレス指定とは何か?読み方と基本の意味
アドレス指定(アドレスシテイ)とは、CPU(シーピーユー)が命令を実行するときに、どのデータを参照するかを決めるための方法です。データは主記憶装置(シュキオクソウチ)の中に保存されており、その場所を示す番号がアドレスとして扱われます。
しかし、アドレスの示し方にはいろいろな考え方があり、命令の内容や処理の目的によって使い分ける必要があります。そこで活躍するのが、アドレス指定方式という仕組みです。CPUが柔軟にデータを処理できるように、多様なアドレス指定の方法が用意されています。
2. CPUがデータの場所を把握するための仕組み
CPUは命令を読み取り、命令部(メイレイブ)で「何をするか」を判断し、オペランド部(オペランドブ)で「どのデータを使うか」を判断します。しかしオペランド部に書かれた情報が、必ずしもそのままデータの場所を表すとは限りません。
その情報をどのように解釈するかを決めるのがアドレス指定です。同じ数字であっても、あるときは値そのものとして扱われ、別のときは場所として扱われることがあります。CPUの内部では、この解釈の違いをアドレス指定方式によって判断しています。
3. 代表的なアドレス指定方式をわかりやすく解説
アドレス指定方式には複数の種類があり、それぞれデータをどう参照するかが異なります。ここでは初心者でも覚えやすいように、代表的な方式を簡単に紹介します。
● 即値指定(ソクチシテイ)
オペランド部に書かれた値を、そのままデータとして扱います。場所ではなく「値そのもの」を意味しています。
● 直接指定(チョクセツシテイ)
オペランド部の値を「主記憶装置の場所」として扱い、そのアドレスにあるデータを読み取ります。最もわかりやすい指定方法です。
● 間接指定(カンセツシテイ)
オペランド部に書かれた値は「アドレスが書かれている場所」を示し、その場所にある値を最終的なアドレスとします。二段階の参照を行います。
● レジスタ指定(レジスタシテイ)
レジスタという高速な記憶装置に保存されている番号をデータの場所として使います。主記憶装置にアクセスするより高速です。
● レジスタ間接指定(レジスタカンセツシテイ)
レジスタに保存されている値を「アドレス」として利用します。レジスタを介して場所を決める方式です。
● 指標指定(シヒョウシテイ)
オペランド部の値と、レジスタの値を足し合わせ、その結果をデータの場所として扱います。配列のように連続したデータを扱う場面で多用されます。
● 基底指定(キテイシテイ)
基底レジスタと呼ばれるレジスタを基準値として、命令の値を加えてアドレスを求める方式です。指標指定と似ていますが、用途や構造が異なります。
4. 具体例で見るアドレス指定のイメージ
例えば「レジスタAの値と隣の場所の値を足しなさい」という処理をする場合、隣の場所を指定するためには値を基準に足し合わせる必要があります。このとき役立つのが指標指定や基底指定です。
また、単純に決まった場所にあるデータを読みたいだけなら、直接指定を使えば最短でデータを参照できます。対して、状況によってデータの保存場所が変わる場合は間接指定が効果的です。このようにアドレス指定方式を使い分けることで、CPUは柔軟なデータ処理を実現しています。
5. アドレス指定が重要である理由
アドレス指定が重要なのは、コンピュータが大量のデータを効率よく扱うために欠かせない仕組みだからです。もし一つの方式しかなければ、多様な処理に対応するのは困難になります。
現代のCPUはさまざまな処理を同時に行うため、多くのアドレス指定方式を組み合わせて動作しています。この仕組みがあるからこそ、高速で正確な処理が可能になっており、パソコンの内部では常に細かいアドレス指定が行われています。