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 |
実際の定義はこちら
一般的な理解はこちら
※厳密には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は16bitCPU〜64bitCPUの総称としていますが、ソフトウェアをダウンロードする際は「x86 or x64(x86_64)」と書かれていることが大半のため一般的な使われ方としてはx86 = 32bitCPUとなっています。
なのでこうなるわけです。
定義↓
一般的↓
なんで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= 64bitCPUです。別の呼び方でx86-64やx86_64とも書かれます。
そのほか
i386とは
Intelのx86(当時16bit)を32bitに拡張したCPU
i686とは
Intelの32bitのCPUとして互換性はあるが、様々な設計変更がなされている。詳細はwikiを参照。
IA-32とは
i386の開発の際に定義された、16ビットx86を32ビットに拡張した命令セットアーキテクチャ
IA-64、Intel 64の違い
- IA-64...x86と互換性のないIntelの64bitCPU
- Intel 64...x86と互換性のあるIntelの64bitCPU