Linux豆知識 253
プロセッサのアーキテクチャ
公開日:2021年09月03日
LinuxなどのOSや、その上で動作するアプリケーションは、ハードウェアが搭載しているプロセッサのアーキテクチャに合わせてコンパイルしてバイナリを生成する必要があると前回説明しました。
では、アーキテクチャの違いとはなんでしょうか。
まず、プロセッサはアーキテクチャによって命令セットが異なります。プロセッサの主な処理は加減乗除のような四則演算ですが、それ以外にもメモリ操作など様々な処理が必要となります。
これらはすべてプロセッサに対する「命令」として実行されます。この命令が集まったものが命令セットです。
同じ系統(「ファミリー」とも呼ぶ)のプロセッサでも、世代や種類によってサポートしている命令セットが異なっている場合もあり、Linuxカーネルは起動時に使用できる命令セットのチェックを行っています。
これらの情報は/proc/cpuinfoを参照することで確認できます。
プロセッサは、一度に扱えるデータの長さが異なっています。これをビット数で表します。
これまでは32ビットが多かったのですが、徐々に64ビットが主流になりつつあります。
ビット数が増えることで、扱えるメモリの容量が4GB以上になるのが分かりやすい違いでしょう。
このように、プロセッサによって命令セットやビット数が異なるので、それぞれに合わせたバイナリが必要となるわけです。
一方でLinuxがサーバーとしてよく使われる、PHPやJavaなどのプログラミング言語で記述されたアプリケーションは、実行する環境さえあればどのアーキテクチャ上でも動作します。