はじめに
CPUTYPEの指定方法を調べてたら1、そういえば日本語ドキュメントを見ないな…と思い出して調査メモでも残そうと一念発起してみました。
この指定は基本的には継ぎ足しなので、bsd.cpu.mk
1の差分をOSバージョン毎に調べてみようと思ってます。取り急ぎ調べたバージョン明記するので参考にしてください。また大文字小文字の区別はあります。
最新のCPUを使用中で、この表に載ってない場合は、一番近い世代のCPUTYPEを指定してください。大抵のCPUは過去のアーキテクチャの機能を引き継いでる2ので、下手なコードは出力されないはずです。
さて。CPUTYPEとは何か、について、/etc/make.conf
で使用中のCPUをこの変数で指定することで、コンパイル時にそのCPUに最適化されたコードが出力される、というものです。パッケージシステムで運用してる人には無関係となります3。
注意事項
- ここでリストアップされた、古いCPUアーキテクチャ向けにコンパイルできることを保証するものではありません。
- 特にコンパイラがGCC4からLLVM移行に辺り、それまで動いていたCPUTYPEが動かなくなってる可能性があります。
- 10.0-Rから調査しています。それより古いバージョンは調査しません。
- 他のアーキテクチャについてはどうしよう。何か複雑なのと前後関係4が分からないから説明しにくいです。
- 他のアーキテクチャだと消えてる(IA64、SPARC64)とか増えた(AARCH64、RISCV)とか色々。
CPUTYPE(amd64環境およびi386環境)
※調査済みバージョン: 13.0、12.2、12.1、12.0、11.4、11.3、11.2、11.1、11.0、10.4、10.3、10.2、10.1、10.0
- 順番はなるべく最新の物が上に来るよう調査したい
- amd64/i386両用CPUとi386のみのCPUは分離したい
- SSE3対応した時期の
Opteron
って何だっけ?とか、Blue Lightning
とかCyrix
とかNexGen
とか溢れる思い出はどこに行った!…とか。
導入バージョン | CPUTYPE(エイリアス名) | CPUコード名(アーキテクチャ名) | 備考 |
---|---|---|---|
13.0 | tigerlake |
Intel Tiger Lake | |
13.0 | cooperlake |
Intel Cooper Lake | |
13.0 | cascadelake |
Intel Cascade Lake | |
11.3 / 12.1 | icelake-server |
Intel Ice Lake-SP | |
11.3 / 12.1 | icelake-client |
Intel Ice Lake | |
11.2 / 12.1 | cannonlake |
Intel Cannon Lake | |
11.3 / 12.1 |
skylake-avx512 (skx ) |
Intel Skylake] | |
11.2 | skylake-avx512 |
Intel Skylake] | |
11.0 | skylake |
Intel Skylake | |
11.0 | broadwell |
Intel Broadwell | |
11.0 |
haswell (core-avx2 ) |
Intel Haswell | |
11.0 |
ivybridge (core-avx-i ) |
Intel IvyBridge | |
11.0 |
sandybridge (corei7-avx ) |
Intel SandyBridge | |
10.0 | core-avx-i |
Intel IvyBridge | |
10.0 | corei7-avx |
Intel SandyBridge | |
13.0 | znver2 |
AMD Zen2 | |
11.2 | znver1 |
AMD Zen | |
11.0 | bdver4 |
AMD Excavator | |
10.1 | bdver3 |
AMD Steamroller | |
10.0 | bdver2 |
AMD Piledriver | |
10.0 | bdver1 |
AMD Bulldozer | |
13.0 | btver2 |
AMD Jaguar | |
10.0 | btver1 |
AMD Bobcat | |
11.3 / 12.1 | tremont |
Intel Tremont | |
11.3 / 12.1 | goldmont-plus |
Intel Goldmont+ | |
11.2 | goldmont |
Intel Goldmont | |
11.0 |
silvermont (slm ) |
Intel Silvermont | |
10.1 | slm |
Intel Silvermont | |
11.0 |
bonnell (atom ) |
Intel Bonnell | |
10.0 | atom |
Intel Bonnell | |
11.2 / 12.1 | knm |
Intel Knights Mill | |
11.0 | knl |
Intel Knights Landing | |
10.0 | penryn |
Intel Penryn | |
10.0 | core2 |
Intel Core2 | |
10.0 | westmere |
Intel Westmere | |
10.0 |
nehalem (corei7 ) |
Intel Nehalem | |
10.0 | yonah |
Intel Yonah | |
10.0 |
prescott (core ) |
Intel Prescot | |
10.0 |
nocona (prescott ) |
Intel Nocona | amd64環境では prescott は nocona として取り扱われる |
10.0 |
pentium4 (p4 ) |
Intel Pentium 4 | |
10.0 |
pentium4m (p4m ) |
Intel Pentium 4M | |
10.0 |
pentium3 (p3 ) |
Intel Pentium 3 | |
10.0 |
pentium3m (p3m ) |
Intel Pentium 3M | |
10.0 |
pentium-m (p-m ) |
Intel Pentium M | |
10.0 |
pentium2 (p2 ) |
Intel Pentium 2 | |
10.0 |
pentiumpro (i686 ) |
Intel Pentium Pro | FreeBSD13/i386の最低ライン |
10.0 |
pentium-mmx (i586/mmx ) |
Intel Pentium MMX | |
10.0 |
pentium (i586 ) |
Intel Pentium | |
10.0 | i486 |
Intel i80486 | |
10.0 | i386 |
Intel i80386 | |
10.0 | opteron-sse3 |
AMD Opteron | |
10.0 | athlon64-sse3 |
AMD Athlon64 | |
10.0 | k8-sse3 |
AMD K8 | |
10.0 | opteron |
AMD Opteron | |
10.0 |
amdfam10 (barcelona ) |
AMD K10 | |
10.0 | athlon64 |
AMD Athlon64 | |
10.0 | athlon-fx |
AMD Athlon FX | |
10.0 | athlon-mp |
AMD Athlon MP | |
10.0 | athlon-xp |
AMD Athlon XP | |
10.0 | athlon-4 |
AMD Athlon 4 | |
10.0 | x86-64 |
AMD Opteron | FreeBSD/amd64の最低ライン |
10.0 | k8 |
AMD K8 | |
11.0 |
athlon (k7 ) |
AMD Athlon | |
10.0 | athlon |
AMD Athlon | |
10.0 | athlon-tbird |
AMD Athlon Thunderbird | |
10.0 | k7 |
AMD K7 | |
10.0 | k6 |
AMD K6 | |
10.0 | k6-2 |
AMD K6-2 | |
10.0 | k6-3 |
AMD K6-3 | |
10.0 | geode |
NSC Geode | |
10.0 | k5 |
AMD K5 |
pentium と同じ扱い(エイリアスでない点は不明) |
10.0 | crusoe |
Transmeta Crusoe | |
10.0 | c7 |
VIA C7 |
c3-m と同じ扱い |
10.0 | c3-2 |
VIA C3-2 | |
10.0 | c3 |
VIA C3 | |
10.0 | winchip2 |
Centaur WinChip 2 | |
10.0 | winchip2-c6 |
Centaur WinChip C6 |