本文へ移動

命令セット(命令セットアーキテクチャ)

命令セット(ISA)は、プロセッサが実行できる操作、その符号化、および効果を定義する仕様である。実装の詳細とは異なる、プログラマから見えるコンピュータアーキテクチャの一部である。

概要

命令セットは、しばしば命令セットアーキテクチャ(ISA)と呼ばれ、プロセッサが実行可能な操作の正式な集合と、それらの操作を符号化、復号、実行するための規則を指す。プログラマから見える水準では、命令はプロセッサに基本的な動作を行わせる単一のコマンドである。ISAは、命令の形式、利用可能なレジスタ、メモリモデル、およびオペレーティングシステムやアプリケーションが依拠できる動作を規定する。

代表的な命令の分類

ほとんどのISAでは、個々の操作を機能別のグループに編成している。こうした分類は、ハードウェア設計者とコンパイラ作成者の双方にとって指針となる。

  • 算術演算:加算、減算、乗算、除算、および関連する数値演算。
  • 論理演算:and、or、xor、notなどのビット単位の操作。
  • データ移動:レジスタとメモリ、または周辺機器の間でデータを転送するロード、ストア、移動、入出力などの命令。
  • 制御フロー:条件分岐、無条件ジャンプ、手続き呼び出しと復帰、例外または割り込みの処理。

ISAと実装

ISAは、特定のチップがISAをどのように実装するかを記述するプロセッサのマイクロアーキテクチャとは異なる。同じ命令セットを実装する二つのプロセッサでも、パイプライン、キャッシュ、実行ユニット、その他の構造は内部的に異なり得る。ISAは、より広義のコンピュータアーキテクチャの構成要素でもあり、電気的・物理的な特性ではなく、プログラミングインターフェースの詳細に焦点を当てる。

最下位の水準では、ISAは命令をバイナリコード、すなわちオペコードに対応付ける。これらのオペコードは、特定の中央処理装置が復号して実行するよう設計されたものであり、それらを出力するソフトウェアは特定のCPUファミリーを対象とする。

歴史と例

命令セットの設計は、単純な固定長の符号化から、多数のアドレッシングモードを備える複雑な形式へと発展してきた。よく知られた二つの例は、異なる設計および市場の歴史を示している。初期のパーソナルコンピュータ向けに生産されたx86ファミリーは、複数のメーカーにより実装される、大規模で後方互換性を持つISAへと成長した。Intelのような主要ベンダーや、Pentiumシリーズのような製品は、マイクロアーキテクチャと性能特性を変化させながら、このISAの世代を継続して実装してきた。ほかのISAには、より高いクロック周波数と容易なパイプライン化を可能にするため、単純で均一な命令を重視するRISC(縮小命令セットコンピューティング)の思想に従うものがある。

用途と主な相違点

ISAはソフトウェアの移植性の中心である。コンパイラ、オペレーティングシステム、各種ツールは命令セットを対象とするため、バイナリは互換性のあるプロセッサ上で予測可能に動作する。主要なISA設計上の選択には、命令符号化、アドレッシングモード、レジスタファイルの大きさ、ベクトル命令や特権モードなどの機能のサポートが含まれる。これらの選択は、コード密度、性能、消費電力、ハードウェア実装の複雑さに影響する。同じISAを複数のチップが実装できるため、命令セットはハードウェアメーカーとソフトウェア開発者の間の安定した契約として機能する。

さらに読むためには、命令の設計と実装に関するベンダーおよび学術的な資料を参照するとよい。実用的な例や互換性に関する注記は、CPUベンダーや標準化団体によって提供されることが多い。

命令算術演算論理演算 • データ • マイクロアーキテクチャコンピュータアーキテクチャオペコードCPUIntelPentium • x86

関連項目

著者

AlegsaOnline.com 命令セット(命令セットアーキテクチャ)

URL: https://ja.alegsaonline.com/art/47501

共有