X86-64 マイクロアーキテクチャレベル
X86-64
X86-64 (x86-64) は x64, x86_64, AMD64, Intel 64 等とも呼ばれ、 1999 年に Intel の x86 インストラクションセットアーキテクチャの 64 ビット拡張として公表されたものを意味しています。元々の仕様策定は AMD 社によって行われ、 2000 年には AMD, Intel, VIA の各社が実装するようになりました。最初の AMD64 ベースのプロセッサは AMD Opteron と呼ばれ、 2003 年 4 月に発表されました。 Intel 64 は x86-64 の Intel 版実装で、 Intel 社が製造する様々なプロセッサ内で使われ、実装されています。
openSUSE や SUSE 社では、 "Intel/AMD 64 ビットプロセッサ (x86_64, デスクトップ/ラップトップ/サーバ)" として、サポート対象のアーキテクチャのうちの 1 つにしています。
X86-64 マイクロアーキテクチャレベル
2020 年に AMD, Intel, Red Hat, SUSE の各社は、 x86-64 に追加されていった様々な命令セットに対して、マイクロアーキテクチャレベルを策定しました。これらは x86-64-v2, x86-64-v3, x86-64-v4 とそれぞれ呼ばれています。これら 3 種類のレベルは、プログラマがコードの最適化を図るにあたって、対象とすべき各種機能がまとめられています。
"レベル" の名前の通り、高いレベルはそれより低いレベルの機能を全て包含します。また AES-NI, RDRAND 等のように、一般的なコンピューティングで使用されるものではないことから、レベル要件からは除外されています。
X86-64 (x86-64-v1)
x86-64 と x86-64-v1 は同じもので、全ての x86-64 CPU が該当する仕様です。 2003 年に AMD 社が AMD64 として、 2004 年に Intel 社が EM64T として策定した命令セットを表し、 AMD K8 や Intel Prescott 世代のプロセッサファミリ以降に該当します。
CPU 機能: CMOV, CMPXCHG8B (CX8), FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2.
X86-64-v2
openSUSE では Leap 16.0 の公開に際して、アーキテクチャレベルの要件を x86-64-v2 とすることを決定しました。これは SUSE SLE 16 の要件である x86-64-v3 とは異なり、 openSUSE では比較的古いハードウエアに対するサポートも必要とされていることによるものです。
x86-64-v2 では下記の CPU 機能が追加されています: CMPXCHG16B (CX16), LAHF-SAHF, POPCNT, SSE3, SSSE3, SSE4_1, SSE4_2.
2008 年に発売された Intel Nehalem アーキテクチャの機能に合致します。なお、 Intel 社固有の命令セットは除外されています。
具体的には下記の CPU が該当します:
- Intel Core CPU - Intel Nehalem 世代 (2008 年) もしくはそれ以降の "big" コア製品
- Intel Pentium および Celeron CPU - Sandy Bridge 世代 (2011 年) もしくはそれ以降
- Intel Atom CPU - Silvermont 世代 (2013 年) もしくはそれ以降の "small" コア製品
- AMD "big" コア - Bulldozer 世代 (2011 年) (AM3+ ソケット) もしくはそれ以降
- AMD "small" コア - Jaguar 世代 (2013 年) もしくはそれ以降の低消費電力 CPU (2013 year)
- VIA CPU - "Nano C" および "Eden C" マイクロアーキテクチャ (2015 年)
- 兆芯 CPU - Zhangjiang (長江) マイクロアーキテクチャ (2015 年)
さらに詳しい詳細については こちら をお読みください。
なお LGA 1156 ソケットを使用している場合は、 CPU を Pentium もしくは Celeron ファミリから Intel Core もしくは Xeon ファミリに置き換えることで、 x86-64-v2 に対応することができます。
x86-64-v2 に対応しているかどうかの確認
Leap 16.0 では x86-64-v2 マイクロアーキテクチャレベルへの対応が必要です。インストールを行う前に、対応しているかどうかの確認を行ってください。
x86-64-v2 に対応しているかどうかを確認するのに最も簡単な方法は、 SSE4.2 (SSE 4.2) インストラクションセットが利用可能かどうかを調べることです。様々な方法で確認することができます:
1. Info センターで CPU フラグ "sse4_2" が現れているかどうかを確認する方法
2. inxi ユーティリティを 'inxi -Cx' として実行し、下部の "Flags:" 欄に sse4_2 があるかどうかを確認する方法:
inxi -Cx
または下記のように実行してもかまいません:
inxi -Cx | grep sse4_2
3. lscpu コマンドを利用する方法:
lscpu | grep sse4_2
4. lscpu コマンドを利用することで、より簡単に確認することもできます:
lscpu | grep sse4_2 || echo "お使いの CPU は Leap 16.0 に対応しています"
その他の方法:
5. "ld.so --help" を使用する方法:
glibc 2.33 およびそれ以降のバージョンが搭載された Linux ディストリビューションであれば、 CPU 側でサポートしている機能レベルを "ld.so --help" で確認することができます:
ld.so --help
もしくは、下記のように実行してもかまいません:
/lib64/ld-linux-x86-64.so.2 --help
結果はコマンドの実行結果の末尾のほうに現れます:
Subdirectories of glibc-hwcaps directories, in priority order: x86-64-v4 x86-64-v3 (supported, searched) x86-64-v2 (supported, searched)
上記のように出力された場合、 x86-64-v4 には対応していないものの、 x86-64-v3 と x86-64-v2 には対応していることを表しています (x86-64-v4 には AVX512 への対応が必要ですが、対応していないことを表しています) 。
6. inxi の出力内の "level" を検索する方法:
inxi -aCz | grep level
上記を実行することで、 CPU のマイクロアーキテクチャレベルを簡単に確認できます。たとえば AMD Ryzen の場合、下記のようになります:
:~> inxi -aCz | grep level arch: Zen/Zen+ note: check gen: 1 level: v3 note: check built: 2019
openSUSE 内での関連する議論については、 こちら をお読みください。
参考資料
関連する記事および議論
1. openSUSE:X86-64-Architecture-Levels
2. Leap 16.0 と x86-64-v2 のフォーラム内での議論
3. Bug 1236606 - Leap 16.0 における x86-64-v2 の CPU 要件追加について
外部リンク
1. Wikipedia - マイクロアーキテクチャのレベルについて
2. Intel Core プロセッサの一覧
3. Intel Pentium プロセッサの一覧
4. Intel Celeron プロセッサの一覧
5. Intel Atom プロセッサの一覧
6. Intel Xeon プロセッサの一覧
7. AMD Athlon プロセッサの一覧
8. AMD Phenom プロセッサの一覧
9. AMD FX プロセッサの一覧 (Bulldozer および Piledriver)
10. 3D グラフィック対応の AMD プロセッサの一覧
11. AMD Ryzen プロセッサの一覧