いかにしてデータを探すか?【アドレス指定方式】

アドレス指定方式


CPUでプログラムを処理する際、命令語を頼りにしてメモリからデータを探し出すことが必要です。データを探し出す方法はいくつか存在しますがどれも一長一短あります。

この記事では情報処理試験で出題される6つのアドレス指定方式について解説していきます。

アドレス指定方式とは?


アドレス指定方式とは、CPUで利用されるデータをメモリから探し出す方式のことです。命令語のオペランド部の値に基づいて行われるため、実効アドレス計算の方式と言い換えることもできます。

即値アドレス指定方式


即値アドレス指定方式とは、アドレス指定方式のうち命令語のアドレス部に直接データを組み込む方式のことです。よって即値アドレス指定方式ではメモリへの参照を行いません。そのためアドレス指定方式の中ではもっとも処理が速いわけです。

即値アドレス指定方式
図1:即値アドレス指定方式


メモリにはアクセスしない


後述する直接アドレス指定方式や間接アドレス指定方式などとは異なり、即値アドレス方式では実効アドレスを指定することはありません。ただし有効なデータを示すことに変わりはないためか、アドレス指定方式のひとつとされています。

メモリにアクセスしない方法ですから、メモリにアクセスする他のアドレス指定方式との対比の意味合いもあるのかもしれませんね。

直接アドレス指定方式


直接アドレス指定方式とは、アドレス指定方式のうち命令語のアドレス部に直接アドレスを指し示す方式のことです。命令語のオペランド部の値によってメモリにアクセスされます。

プログラムの先頭位置を決め打ちすることが前提となる方式のため「絶対アドレス指定方式」とも呼ばれます。

直接アドレス指定方式
図2:直接アドレス指定方式


融通の利かない非現実的な方法


直接アドレス指定方式ではプログラムの先頭のメモリアドレスを指定していないため、プログラムの先頭を決め打ちする必要があります。よってプログラムをメモリ上に柔軟に、つまり自由に配置しようとする場合にはこの方法はとれません

このような融通の利かない方法は、実用上においてしばしば非現実的なものとなってしまいます。

基底アドレス指定方式


基底アドレス指定方式とは、アドレス指定方式のうち命令語のオペランド部基底レジスタの値とを加算して実効アドレスを求める方式のことです。

基底レジスタにはメモリ上のプログラムの先頭部分が配置されているメモリアドレスが入っていて、その値をベースとして命令語のアドレス部の値に応じてデータにアクセスします。

基底アドレス指定方式
図3:基底アドレス指定方式


これで柔軟にプログラムを配置できる


先ほど「融通の利かない方法」について説明しました。直接アドレス指定方式、もとい絶対アドレス指定方式のことです。これに対して基底アドレス指定方式は「柔軟な方法」だといえます。

基底レジスタによってプログラムの先頭を指すということは、基底レジスタの値を変えればプログラムの先頭を指す値を変えられることを意味します。これでメモリ上にプログラム配置し直すことができるのです。

相対アドレス指定方式


相対アドレス指定方式とは、アドレス指定方式のうち命令語のオペランド部プログラムカウンタの値とを加算して実効アドレスを求める方式です。

プログラムカウンタは次に実行する命令のアドレスを指します。その値をベースとして命令語のアドレス部の値に応じてデータにアクセスするのです。

相対アドレス指定方式
図4:相対アドレス指定方式


データを相対的に求めるためのアイデア


相対アドレス指定方式と基底アドレス指定方式は原理こそ同じものです。異なる点基底レジスタを使うかプログラムカウンタを使うかくらいだといえます。両者に共通するのは実効アドレスを相対的に求める点です。

プログラムの先頭を決め打ちせず柔軟にデータにアクセスする、実用的は方法はたいてい融通が利くものです。

間接アドレス指定方式


間接アドレス指定方式とは、アドレス指定方式のうち命令語のオペランド部間接的にデータが存在するアドレスを指し示す方式のことです。命令語のオペランド部の値に実効アドレスが入っていて、そのアドレスを経てメモリにアクセスされます。

アドレスを介して間接的にデータにアクセスすることから間接アドレス方式と呼ばれるわけです。

間接アドレス指定方式
図5:間接アドレス指定方式


「2段構え」で大容量のメモリを扱う


間接アドレス指定方式は容量の大きなメモリを扱うことに適しています。そのためには「2段構えのアクセス」が必要です(実際は2段構えでは終わらず「多重的に」アクセスすることもあります)。

【1段目】実効アドレスの入ったアドレスにアクセスする
【2段目】データのあるアドレスにアクセスする

このように2回メモリにアクセスしているため、即値アドレス指定方式や直接アドレス指定方式よりデータに行き着くまでに時間がかかってしまいます。しかしアドレスをいくつも介することによって容量の大きなメモリにも対応できるのです。

指標アドレス指定方式


指標アドレス指定方式とは、アドレス指定方式のうち命令語のオペランド部指標レジスタの値とを加算して実効アドレスを求める方式です。 命令語のオペランド部には連続するデータの先頭の値のアドレスが入っていて、その値をベースとして指標レジスタの値に応じてデータにアクセスします。

「指標」は英語で”index”といいます。ちょうどデータの索引を参照するイメージです。

指標アドレス指定方式
図6:指標アドレス指定方式


「配列」の原理ここにあり


連続したデータをまとめて扱うための考え方のことを「配列」といいます。これはプログラミングの経験がある方ならお馴染みでしょう。その「配列」は指標アドレス指定方式によって実現されています。

指標レジスタの値を1ずつ(※)増減させることで、配列内のデータに対して効率よく処理を繰り返すことができるわけです。
※データの大きさによってこの数字は変わります。

アドレス指定方式:まとめ


アドレス指定方式は情報処理試験で出題されることはありますが、日常生活、それこそ業務においてもあまり必要な知識ではないでしょう(もっとも携わる分野にもよります)。

ただ、コンピュータの仕組みを理解する重要な足掛かりにはなると思います。この記事でアドレス指定方式の基本を押さえてしまいましょう。そして試験の得点につなげていきましょう!





それでは、今回はここまでといたします。
最後までお読みいただきありがとうございます。


アドレス指定方式
最新情報をチェックしよう!