直接アドレッシング

直接アドレッシング

直接アドレッシング

英語表記: Direct Addressing

概要

直接アドレッシングは、CPUの「アドレッシングモード」の中でも、最もシンプルで理解しやすいデータアクセス方式の一つです。これは、命令セットアーキテクチャ(ISA)を構成する重要な要素であり、CPUがデータを読み書きする際の手順を定めています。具体的には、実行したい命令のオペランド部(操作対象を指定する部分)に、アクセスしたい主記憶(メモリ)の物理アドレスそのものを直接記述する方式を指します。これにより、CPUはアドレス計算を行うことなく、直ちに指定されたメモリ位置にアクセスできるのが大きな特徴です。

詳細解説

CPUの仕組みとアドレッシングモードにおける位置づけ

私たちが今学んでいる「直接アドレッシング」は、CPUの仕組み(命令セット, パイプライン)という大きな枠組みの中で、特に「命令セットアーキテクチャ (ISA)」の設計思想に深く関わる概念です。ISAは、CPUが理解できる命令の形式や、それらの命令がメモリやレジスタとどのようにやり取りするかを規定しています。このISAの一部として定義されるのが「アドレッシングモード」であり、これは命令がデータをどこから持ってくるか、あるいはどこに書き込むかを決定する「住所の指定方法」のルール集だと考えてください。

直接アドレッシングは、この住所指定方法の中で、最も単純明快なアプローチを提供します。

動作原理と主要コンポーネント

直接アドレッシングの動作は非常に単純です。命令がメモリからフェッチされ、CPU内部でデコードされる際、オペランドフィールドに格納されている値が、そのままデータが格納されているメモリ上の実効アドレス(Effective Address)として扱われます。

  1. 命令のフェッチとデコード: CPUが命令レジスタに命令を読み込み、デコードします。
  2. オペランドの確認: デコードの結果、この命令が直接アドレッシングモードを使用していると判明します。
  3. 実効アドレスの特定: 命令のオペランド部に記載されている値(N)が、計算なしにそのまま実効アドレス(EA = N)となります。
  4. データアクセス: CPUは特定した実効アドレス(N)を使用して、主記憶から必要なデータを読み込む、あるいは書き込みます。

この方式の最大の目的は、高速性実装の容易さです。アドレス計算のステップが完全に省略されるため、パイプライン処理において遅延が発生しにくく、非常に効率的なアクセスが実現できます。これは、特に初期のコンピュータや、処理速度が最優先されるシンプルな組み込みシステムにおいて重宝されました。

しかし、この単純さにはトレードオフが存在します。命令のオペランド部に完全なメモリのアドレスを格納する必要があるため、命令長が長くなりがちです。また、プログラム内でアクセスできるアドレス範囲が命令で固定されてしまうため、プログラムの再配置(リロケーション)や、配列のような連続したデータ領域へのアクセス(インデックス指定)といった柔軟な操作が難しくなります。現代の複雑なオペレーティングシステムでは、より柔軟なアドレッシングモード(例えば、ベースレジスタやインデックスレジスタを活用するもの)が主流となっているのは、この柔軟性の制約があるからなのですね。

具体例・活用シーン

1. 郵便配達の例え(メタファー)

直接アドレッシングを理解するための最も分かりやすい例は、「住所が完全に書かれた手紙」です。

あなたがCPUだと想像してください。データ(荷物)をメモリ(倉庫)に取りに行きたいとします。

  • 直接アドレッシング: あなたが受け取った命令書(手紙)には、「東京都千代田区霞が関1-1-1の棚から荷物を持ってくるように」と、完全で正確な住所が記載されています。あなたは、その住所をそのまま読み上げれば、すぐに目的の棚にたどり着けます。途中で「〇〇さんの家から3軒隣の角を曲がって…」といった計算や推測(他のアドレッシングモード)は一切不要です。
  • 利点: 非常に速い!住所が分かっているので迷いません。
  • 欠点: 住所が長いと、命令書(手紙)自体が大きくなってしまいます。また、荷物を別の倉庫(別のメモリ領域)に移した場合、命令書に書かれた住所をすべて書き直さなければなりません。

2. 組み込みシステムでの利用

現代の汎用的なPCやサーバーのCPUでは、プログラムの動的性やセキュリティ確保のために、直接アドレッシングは限定的な用途でしか使われません。しかし、マイコンや特定の組み込みシステム、特に固定された小さなメモリ空間を持つデバイスでは、高速性と単純性から今でも利用されることがあります。特定のハードウェアレジスタやI/Oポート(入出力ポート)へのアクセスなど、アドレスが絶対に変わらない場所へのアクセスには、この方式が最適なのです。設計者にとって、シンプルでバグの少ない回路設計ができるのは大きな魅力ですよね。

3. アセンブリ言語での表現

アセンブリ言語で表現すると、直接アドレッシングは非常に分かりやすい形をとります。

例えば、「メモリ番地 1000H にあるデータをレジスタ A にロードせよ」という命令があった場合、

assembly
LOAD A, [1000H]

この命令の機械語における「1000H」の部分が、そのままデータの実効アドレスとなります。CPUはこの命令を読み込んだ瞬間、迷うことなくメモリの1000番地に直行するわけです。

資格試験向けチェックポイント

直接アドレッシングは、ITパスポートから応用情報技術者試験まで、アドレッシングモード全般を理解するための「基礎の基礎」として頻出します。特に他のアドレッシングモードと比較する形で問われることが多いので、その特徴をしっかり押さえておきましょう。

  • 定義の確認(ITパスポート、基本情報):
    • 命令のオペランド部に、アクセス対象のデータの「実効アドレスそのもの」が記述されている方式である、という定義を正確に覚えましょう。「アドレス計算が不要」という点がキーワードです。
  • 実効アドレスの計算(基本情報、応用情報):
    • アドレッシングモードの問題では、最終的にデータがどこにあるか(実効アドレス)を計算させるパターンが非常に多いです。直接アドレッシングの場合、実効アドレス = 命令のオペランド部の値となります。これは計算が最も簡単なケースであり、他の複雑なモード(間接アドレッシング、インデックスアドレッシングなど)との対比で必ず理解しておくべき点です。
  • 特徴と制限(基本情報、応用情報):
    • 利点: 処理が高速、回路が単純。
    • 欠点: 命令長が長くなる傾向がある、アクセスできるメモリ範囲が命令で固定されるため柔軟性に欠ける、リロケータブル(再配置可能)なプログラムには不向き。このトレードオフ関係を問う問題が出ることがあります。
  • 関連する概念:
    • 「即値アドレッシング」と混同しないように注意が必要です。即値アドレッシングはオペランド部に「データそのもの」を記述するのに対し、直接アドレッシングは「データが格納されている場所のアドレス」を記述します。両者は名前が似ていますが、用途が全く異なりますので、区別が非常に大切です。

関連用語

  • 情報不足

(関連用語を挙げるには、他のアドレッシングモード(間接アドレッシング、即値アドレッシング、レジスタアドレッシングなど)や、関連するCPUの要素(実効アドレス、オペランド、命令レジスタなど)が必要ですが、提供された入力材料にはそれらの情報が不足しています。もしこれらの情報が提供されれば、直接アドレッシングとの比較を通じて、理解を深める助けとなるでしょう。)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

両親の影響を受け、幼少期からロボットやエンジニアリングに親しみ、国公立大学で電気系の修士号を取得。現在はITエンジニアとして、開発から設計まで幅広く活躍している。

目次