Intelが定義するIA-32アーキテクチャというもの

「IA-32(Intel Architecture 32)」とは、Intelが「IA-64(Intel Architecture 64)」の定義をする際にアーキテクチャを呼び分けるために使い始めた名称であり、同時に定義でもあります。世の中一般の認識では「IA-32」とは「Intel 80386」によって確立した32ビットアーキテクチャのことを指すものだとしているのではないかと思います。

しかし、実際にはそうではありません。

Intelの発行しているプログラミング関連資料を読むとわかるのですが、IA-32というくくりに入るCPUには「Intel 8086」や「Intel 80286」などの16ビットCPUが含まれます。これは一見直観的ではありませんが、IA-32はこれら16ビットCPUの機能をシームレスに拡張して内包しているわけですから、そういう見方をすれば論理的整合性があります。少なくとも、Intelにとっては「IA-64ではないもの」と呼び分けるために「IA-32というくくり」を作ったわけですから、ここに系列の16ビットCPUが含まれるのは、ある意味当然の流れではあります。

さらに、一般には認識されない前提をIntelはIA-32に含めています。それは「メインプロセッサー(CPU)として使用される」ということです。つまり、IntelにとってIA-32の意味は「メインプロセッサーとして既存のソフトウェアを動かすことができること」というものを含むわけです。

例えばコプロセッサーとして動作する「Intel® Xeon Phi™ Product Family」という製品を紹介するページでは、その説明の中で「Now you can think “reuse” rather than “recode” with x86 compatibility.」と表現しており、「IA-32」という言葉を避けて、注意深く「x86」としています。これはXeon Phiに含まれる、個々のプロセッサーはメインプロセッサーとして動作するものではなくコプロセッサーであり、IA-32という枠組みのソフトウェアを動作させるものではないからです。※1※2

このことから、世間一般では「x86とIA-32は、メーカーがIntelであるかどうかの差でしかない」と認識されていることが多いかと思うのですが、Intel自身は「x86とIA-32では指し示す範囲が違う」と認識しており、「IA-32とは16ビットを含むx86で、なおかつメインプロセッサーとして使用されるという意味を含み、既存のソフトウェアを動作させることができるもの」という定義を行っていることが、各種ドキュメントから読み取れます。

以上、「Intelは多くの人が思っているよりもIA-32について限定的な定義をしている」という話でした。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です