フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

CPUのアーキテクチャの違いまとめ(x86/x64/x86_64/AMD64/i386/i686とはなんなのか?)

CPUのx86/x64/x86_64/AMD64/i386/i686とはなんなのか?についてわかりやすくまとめます

まとめ

出てきた単語をざっくり分類

bit数 アーキテクチャ
32bit x86、i386、i686、IA-32
64bit x64、x86_64、x86-64、AMD64、IA-64、Intel 64

実際の定義はこちら

f:id:lirlia:20200422035212p:plain

一般的な理解はこちら

f:id:lirlia:20200422035345p:plain

※厳密にはPentiumやCeleronも型番によって違うなどありますが、大雑把にはこんな感じです。

※一般的な理解としてはx86=32bitですが定義でいうと16bit~64bitのCPUがx86に含まれます

ビット数の違い(32bit、64bit)とは

CPUが扱えるメモリアドレスの最大サイズです。いまでこそ32と64しか聞きませんが、元々は8bitや16bitのCPUもありました。それぞれが扱えるメモリサイズは以下の通りです。

  • 8bit→28=256Byteのメモリが管理できる
  • 16bit→216≒64KBのメモリが管理できる
  • 32bit→232≒4GBのメモリが管理できる
  • 64bit→264≒128TBのメモリが管理できる

32bit時には4GBしかメモリが扱えなかったため、ITの進化とともに64bitが必要とされました。

CPUのざっくり歴史(32bit〜)

  • IntelがIA-32という32bitCPUを作った
  • IntelがIA-64という64bitCPUを作った
    • Intelは32bitCPUとの住み分けを図るためIA-32と64は互換性無しにした
  • AMDがIA-32の互換性ありのx86-64を発表した(AMD64という)

x86とは

x86(エックスはちろく[1])は、Intel 8086、およびその後方互換性を持つマイクロプロセッサの命令セットアーキテクチャの総称。16ビットの8086で登場し、32ビット拡張の80386(後にIA-32と命名)、64ビット拡張のx64、広義には更にAMDなどの互換プロセッサを含む。

x86 - Wikipedia

この定義によるとざっくりいうとx86は16bitCPU〜64bitCPUの総称としていますが、ソフトウェアをダウンロードする際は「x86 or x64(x86_64)」と書かれていることが大半のため一般的な使われ方としてはx86 = 32bitCPUとなっています。

なのでこうなるわけです。

定義↓

f:id:lirlia:20200422035212p:plain

一般的↓

f:id:lirlia:20200422035345p:plain

なんでx32じゃなくてx86っていう名前なの?

最初のx86が「16ビットマイクロプロセッサ8086」だったので後ろの数字86を残し前の数字を省略して x86 と呼ぶようになったとのこと。

x64とは

x64またはx86-64とは、x86アーキテクチャを64ビットに拡張した命令セットアーキテクチャ。

実際には、AMDが発表したAMD64命令セット、続けてインテルが採用したIntel 64命令セット(かつてIA-32eまたはEM64Tと呼ばれていた)などを含む、各社のAMD64互換命令セットの総称である。x86命令セットと互換性を持っていることから、広義にはx86にx64を含む場合がある。

x64 - Wikipedia

こちらは単純でx64= 64bitCPUです。別の呼び方でx86-64x86_64とも書かれます。

そのほか

i386とは

Intelのx86(当時16bit)を32bitに拡張したCPU

i686とは

Intelの32bitのCPUとして互換性はあるが、様々な設計変更がなされている。詳細はwikiを参照。

IA-32とは

i386の開発の際に定義された、16ビットx86を32ビットに拡張した命令セットアーキテクチャ

IA-32 - Wikipedia

IA-64、Intel 64の違い

  • IA-64...x86と互換性のないIntelの64bitCPU
  • Intel 64...x86と互換性のあるIntelの64bitCPU