x86-64-v3とパフォーマンスの改善
2023年12月12日、CPUターゲットを「x86-64-v3」に変更したお試し版「Ubuntu」が登場しました。x86-64-v3
「x86-64-v3」はCPUの特定の命令セットをグループで定義した定義値の一つであり、いわゆる64bit版(amd64/x86-64/x64)を対象にした定義値です。大枠でCPUの機能や世代を表す
この定義値は大枠でCPUの機能や世代を表すものと思えば分かりやすいでしょう。例えばSSE3/SSE4をサポートしている世代、AVXをサポートしている世代といった感じで、「x86-64-v3」も含め他にも「x86-64-v4」など全部で4種類の定義値が定義されています。
- ベースライン(x86-64-v1)
- x86-64-v2
- x86-64-v3
- x86-64-v4
下の定義に向かうほど、新しい世代のCPUになっていきます。
各定義で定義されている命令セットは、以下を参照してください。
さてCPUベンダーは市場やターゲットに応じ、同年代でリリースされたCPUでもサポートしている命令セットが異なるケースもあります。
例えば「Intel Core i7」と「Intel Atom」はその一例でしょう。
そのため年代で線を引くのは難しいのですが、おおよそ2009年以降にリリースされた多くのCPUは「x86-64-v2」に対応しています。
同様におおよそ2015年以降にリリースされた多くのCPUは「x86-64-v3」に対応しています。
「x86-64-v4」に関しては少し状況が複雑です。
「x86-64-v4」の条件にAVX512が含まれており、例えば第11世代のIntel CPUはAVX512に対応し「x86-64-v4」に該当しますが、第12/13世代のIntel CPUはAVX512が無効化されており「x86-64-v4」に該当しません。
現在のUbuntuとCPUターゲット
現在の「Ubuntu」で使用しているCPUターゲットは、初期の64bit CPUを対象にしています。上記の定義で言えば「x86-64-v1」に該当します。
言い換えれば現在のCPUターゲットは、2003年に登場した「AMD K8」及び、2004年に登場した「Intel Prescott」がサポートしている命令セットが対象になっています。
これにより「Ubuntu」は、15年以上前にリリースされた64bit CPUから最新の64bit CPUまで幅広くソフトウェアが動作するようになっています。
新しい命令セットの追加
64bitアーキテクチャーはPCで非常に幅広く普及しているアーキテクチャーであり、64bitに対応したCPUが登場してから約20年が経過しています。しかし同じ64bit CPUでも後からリリースされた64bit CPUは、AVXなど新しい命令セットが追加されています。
ソフトウェアは新しい命令セットを活用することでパフォーマンスを改善できる一方、その新しい命令セットに対応していないCPUではそのソフトウェアが動作しなくなります。
パフォーマンスを向上させるために
新しい命令セットを活用することで、OS全体のパフォーマンスを向上させることができます。現在でも「glibc」や「openssl」といった一部のソフトウェアは、ソフトウェア起動時にCPUが新しい命令セットをサポートしているかどうかをチェックし、もしCPUが新しい命令セットをサポートしていれば、その新しい命令セットを活用しパフォーマンスを向上させることができます。
しかしほとんどのソフトウェアはそのようになっておらず、CPUターゲットで指定された定義に従って、使用する命令セットを決定しています。
x86-64-v2に移行したOS
2022年11月時点で「RHEL 9」と「SUSE Tumbleweed」はCPUターゲットが「x86-64-v2」に変更されています。- Building Red Hat Enterprise Linux 9 for the x86-64-v2 microarchitecture level
- Tumbleweed to Roll Out Mitigation Plan, Advance Microarchitecture
「x86-64-v2」へ移行するということは、「x86-64-v2」よりも前のCPUでOSが動作しなくなるということです。
ちなみにSUSEでは「x86-64-v3」へ移行する話もありましたが、その一つ手前の「x86-64-v2」へ移行することになりました。
RHELのようなエンタープライズ向けのOSでは、15年以上前の古いハードウェアのサポートを切ったとしても、コンシューマー向けほど影響はないでしょう。
Ubuntuの状況
「Ubuntu」はエンタープライズだけでなく、カジュアルな個人ユーザーも利用しているOSであり、CPUターゲットの変更は多くのユーザーに影響を与えかねません。判断材料が必要
開発者は古いPCでも「Ubuntu」が活用されているとの認識を持っています。そこでCPUターゲットの変更に関し、具体的な判断材料が必要になります。
- 「x86-64-v2」以前のPCを利用しているユーザーの数
- CPUターゲットを「x86-64-v2」や「x86-64-v3」を変更したときに、どの程度パフォーマンスが向上するのか
お試し版Ubuntu 23.04
そこでCPUターゲットを「x86-64-v3」に変更した「Ubuntu 23.04」がリリースされました。この「Ubuntu 23.04」を利用して、以下の内容をフィードバックして欲しいとのことです。
- 既存の「Ubuntu 23.04」と比較して、パフォーマンスがどの程度向上したか
- 「x86-64-v3」で明らかにパフォーマンスが向上した分野や領域(一連のタスクや処理)と低下した分野や領域
- 発生した問題
フィードバックは以下で受け付けています。
ちなみにこのお試し版「Ubuntu 23.04」は上記の目的のために提供されているものであり、日常的に利用する「Ubuntu」ではありません。
セキュリティーアップデートといったサポートも提供されません。
UbuntuのCPUターゲットは変更されるの?
現状CPUターゲットの変更に関し、具体的な計画はありません。また少なくとも「Ubuntu 24.04 LTS」でCPUターゲットが変更されることはありません。
また開発者は「x86-64-v3」どころか「x86-64-v2」にすら対応していないPCを所有しているユーザーがいるとの認識も持っています。
できれば新しいPCでは新しい命令セットを活かした処理を行い、古いPCでは従来のように処理するような優れたアイデアがあれば良いとのことですが、いずれにせよ具体的な計画はまだありません。