個人ブログのようなものです。とくにジャンルはありません。
記事の概要
作成日:2020-08-19
最終更新日:2020-08-19
1ヵ月あたりのビュー数:24
記事の文字数:2001
CPU-アドレス指定方式
概要

CPUがメモリからデータを取得する際に、メモリ上のどこにそのデータがあるのかを算出する必要がある。
そのメモリ上のアドレスを表す方式はいくつかあり、それらをまとめて「アドレス指定方式」という。
ここではそのアドレス指定方式についてまとめている。
CPUがどのように命令を実行するかは別記事「CPU命令実行の流れ」を参照。
アドレス指定方式一覧

「アドレス指定方式」は大きく以下の4つ(細かく言うと6つ)に分類される。
各アドレス指定方式の詳細は後述するため、ここではあまり理解しなくても大丈夫。
  1. 即値アドレス指定方式…命令の命令部に直接値を入れている方式。メモリへのアクセスは行われないため超高速。
  2. 直接アドレス指定方式…命令の命令部にメモリ上のアドレスが入っている。デメリットが大きく、実際にはあまり使われない。
  3. 間接アドレス指定方式…命令の命令部にメモリ上のアドレスが入っており、そこにはまた別のメモリのアドレスが入っている。大容量メモリに対応する。
  4. 修飾アドレス指定方式…命令の命令部にメモリ上のアドレスが入っており、そのアドレスにレジスタに入っている値を足すことで、メモリ上のアドレスを割り出す。更に3つのアドレス指定方式に分類される。

即値アドレス指定方式

「即値アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値をそのまま計算に使用する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリを介さないので超高速
・メモリ上のどこにプログラムが読み込まれても問題なし(再配置可能
・「命令レジスタ」の限られた領域にデータを入れるため、サイズの大きなデータは使えない
直接アドレス指定方式

「直接アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値でメモリを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのため高速
・メモリへの絶対アドレスが入っているため、メモリ上で読み込まれる場所が変わると動かない(再配置不可
・「命令レジスタ」の限られた領域にメモリのアドレスを入れるため、大容量のメモリには使えない
・デメリットが大きいため現実にはあまり使われない
間接アドレス指定方式

「間接アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値でメモリを参照し、更にその値でメモリの別のアドレスを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが2回以上あるため遅い
・メモリへの絶対アドレスが入っているため、メモリ上で読み込まれる場所が変わると動かない(再配置不可
・メモリ上のアドレスをメモリに直接保存できるため、大容量のメモリにも対応する
修飾アドレス指定方式

ベース(基底)アドレス指定方式

「ベースアドレス指定方式」「ベースレジスタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
「ベースレジスタ」にはそのプログラムの先頭アドレスが入っている。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・メモリ上のどこにプログラムが読み込まれても、ベースレジスタにそのプログラムの先頭アドレスが入っているため問題なし(再配置可能
自己相対アドレス指定方式

「ベースアドレス指定方式」「プログラムカウンタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
「プログラムカウンタ」にはその命令が格納されているアドレスが入っている。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・メモリ上のどこにプログラムが読み込まれても、「プログラムカウンタ」にその命令のアドレスが入っているため問題なし(再配置可能
ベースレジスタが無いCPUでも利用可能
インデックス(指標)アドレス指定方式

「インデックス指定方式」「インデックスレジスタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・連続したデータ(配列など)の取り扱いが得意
アドレス指定方式の複合

上述のアドレス指定方式は複合して利用することもできる。
例えば「インデックス(指標)アドレス指定方式」+「ベースアドレス指定方式」など。
再配置可能(リロケータブル)

プログラムはメモリ上で必ずしも常に同じ位置に読み込まれるとは限らない。
このメモリで読み込まれる位置が変わっても変わらずプログラムが動き続けられる性質を「再配置可能性」という。
関連ページ
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話 当然ですが本サイト…
Twitterの「興味関心」のチェックを全部まとめて外す
Twitterの「興味関心」のチェックを全部まとめて外せない Twitterに「興味関心」とやらを…
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題…
東京03のyoutubeチャンネルの概要ページの挙動がおかしい
東京03のyoutubeチャンネルの概要ページの挙動がおかしい…
Youtube Data APIでハンドルIDからユーザ情報を取得できない
Youtube Data APIでハンドルIDからユーザ情報を取得できない問題 結論から言うと現在…
ウマ娘まとめサイト(InoReader)
ウマ娘まとめサイト(InoReader)…
ウマ娘まとめサイト(Feedly)
ウマ娘まとめサイト(Feedly)…
Pythonを使ってinoreaderでサイトの更新情報を取得してみた
inoreader(イノリーダー?)が公開しているWeb APIを使用して、Pythonで自動的にサ…
Pythonを使ってFeedlyでサイトの更新情報を取得してみた
Pythonを使ってFeedlyでサイトの更新情報を取得してみた…
CPU-マルチプロセッサによる並列処理
CPU-マルチプロセッサによる並列処理…
CPUの高速化方式
CPUの高速化方式…
CPUの性能指標
CPUの性能指標…
(現在ページ)CPU-アドレス指定方式
CPU-アドレス指定方式…
CPU命令実行の流れ
CPU命令実行の流れ…
文字コードについて
文字コードについて…
base64エンコードの流れ(C#)
base64エンコードの流れ(C#)…
サイバー攻撃:非標的型攻撃とは
サイバー攻撃:非標的型攻撃とは…
サイバー攻撃:標的型攻撃とは
サイバー攻撃:標的型攻撃とは…
IPアドレスについて
IPアドレスについて…
シングルサインオン/SAML認証について
シングルサインオン/SAML認証について…
関連タグ
情報技術
コメントログ
コメント投稿




本サイトのタグ一覧
タグを表示する Webサイト作成Webツールアークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ゲームデビラビローグホラーポケットタウン気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画