よくプログラムをダウンロードする時に、「x86」「x64」という表記で別々のファイルが用意されているのをみるのですが、これの違いをよく知らなかったので調べました。
「x86が32bit、x64が64bit」でそれぞれの端末環境に合わせたプログラムを選択しないといけない。ということだけはなんとなく知ってるんですよね。
今までこの理解度で何とかなってしまっていました。
どうやらCPUの種類の違いらしい
「x86」「x64」というのは、CPUのアーキテクチャーの種類のことです。
アーキテクチャーってなんでしょう。
もとは建築における建築様式や工法、構造などを表す言葉だが、ITの分野では、コンピュータやソフトウェア、システム、あるいはそれらの構成要素などにおける、基本設計や共通仕様、設計思想などを指すことが多い。
平たく言うと、CPU制作においてあらかじめ定めておいたルールのようなものです。
仮に、社会でなんのルールも設けず、それぞれ好き勝手にCPUを制作してしまえば、市場にでて我々のもとにCPUがとどいた時、「このCPUではこのプログラムを動かせません」みたいな状況が発生します。
なぜなら、CPUがそのプログラムを動かす前提で作られていないから。
せっかく購入したCPUが動かないとなると、購入した側としてはたまったものではなく、クレームが殺到するでしょう。
そしてそのクレームがどこにいきつくかというと…プログラムの製作者か、CPUの製作者のどちらかになるわけです。
そのクレームにたいして、
プログラム製作者が対応する場合は、プログラムをCPUの数だけ用意しなければならないですし、
CPU製作者が対応する場合は、CPUをプログラムの数だけ用意しなければなりません。
まさにカオス…(※ここまで妄想)
つまり、そのような状況を回避するために、社会全体で統一したルール(アーキテクチャ)を決め、それぞれがそのルールに則ってCPU制作を行っているということなんですね。
ARMとは
「x86」「x64」以外に「ARM」という表記でプログラムが用意されていることがあります。
これもCPUのアーキテクチャーの一種。
「x86」「x64」のCPUはパソコンやサーバーに、「ARM」のCPUはスマートフォンやタブレットに組み込まれていることが多いそうです。
アーキテクチャーの種類によって活躍する場が違うんですね。
なぜ「x32」ではなくて「x86」なのか
これは個人的にずっと疑問だったことなのですが、
なぜ64bitアーキテクチャ対応の表記が「x64」なのに、32bitアーキテクチャ対応の表記が「x32」ではなく「x86」なのか。
これは、昔開発されたIntelのマイクロプロセッサの型番が由来になっています。
1978年から1989年にかけて、Intelのマイクロプロセッサに「○○86」という型番が使用されていたそうです。
これらの製品に採用しているアーキテクチャだったため、型番の「86」をとって「x86」と名付けられました。
要するに昔作っていたプロセッサの型番の名残が今も残っているということなんです。
ちなみに「x64」も製品の型番が由来になっているのだとか。こちらはパッと見で64bit対応ということが分かるので、覚えやすくて良いですね。
参考:https://urashita.com/archives/12325