vfpbench」カテゴリーアーカイブ

vfpbench

Meta Quest3 の CPU (Snapdragon XR2 Gen2)

Meta Quest 3 は今年 (2023年) の 10月に発売されたばかりの最新の VR ヘッドセットです。Inside Out のセルフトラッキングのみで 6.6DoF を実現する Quest シリーズの 3世代目であり、カラーパススルーに対応したことで MR ゲームもプレイできるようになりました。

シースルー型の HoloLens と違い、ディスプレイ部が視界の一部のみに限られていることもありません。HoloLens に期待していた世界が Quest3 でようやく現実になったといえます。

MR 機能だけでなく、世代が上がりプロセッサもトラッキングも強化されています。特にコントローラーはトラッキング用の LED リングが無くだいぶ小さくなりました。VR というより Switch のような左右分離型のただのゲームコントローラーに見えます。

その Quest3 で以前 Termux が動くことを確認したので同時に vfpbench も走らせてみました。ただし実行中も画面の描画やトラッキングは行われていたため、結果の値には注意が必要です。プロセッサ自体のピーク性能ではなく、GPU やトラッキングにリソースが奪われている状態での結果と思ってください。

スペックによると Quest 3 のプロセッサは Qualcomm Snapdragon XR2 Gen2 が採用されていることがわかります。

https://www.meta.com/jp/quest/quest-3/#specs

計測結果は以下の通り

vfpench MetaQuest3

アプリケーションから見えるプロセッサは 6 Core で 2+4 の 2グループでした。

CPU Thread:  6
CPU Core  :  6
CPU Group :  2
  Group 0: Thread= 2  Clock=2.054400 GHz  (mask:3)
  Group 1: Thread= 4  Clock=2.361600 GHz  (mask:3c)

この両グループの結果を比べてみると、各命令の IPC には明確な差がなくクロック以外はほぼ同等となっています。そのため同じ CPU core が使われている可能性があります。なおこの情報だけではプロセッサの種類まで特定することはできませんでした。

NEON fmul.2d (64bit x2) n12       :    0.819     5189.4     2594.7  (  2.0 1.1)
NEON fadd.2d (64bit x2) n12       :    0.816     5209.8     2604.9  (  2.0 1.1)
NEON fmla.2d (64bit x2) n12       :    0.819    10376.6     2594.1  (  4.0 1.1)

64bit と 128bit に差がないのでリトルコアではなく、また fma と mul/add の差もないため、X1~X3 のようなハイエンドコアでも無さそうです。ただし計測結果はミドルコアのクロックにしてはあまり高くないので、バックグラウンドでパフォーマンスが奪われていたのかもしくは動作中に想定よりクロックが落ちていた可能性があります。この結果はあくまで参考程度でお願いします。

Total:
SingleThread HP max:   42.163 GFLOPS
SingleThread SP max:   21.240 GFLOPS
SingleThread DP max:   10.445 GFLOPS
MultiThread  HP max:  263.868 GFLOPS
MultiThread  SP max:  134.370 GFLOPS
MultiThread  DP max:   63.517 GFLOPS

関連エントリ

SteamDeck CPU の浮動小数点演算能力を調べる vfpbench の結果

SteamDeck で vfpbench を走らせてみました。
SteamDeck はポータブルゲーム専用機で、PC 向けのゲームを走らせることができます。

CPU/GPU は Ryzen + RADEON という一般的な PC と同じものですが、Zen2 Core に RDNA2 という組み合わせの APU は PC 向けとして市販されていません。Zen2 + RDNA2 の組み合わせは PS5 / XboxSX|SS / SteamDeck のみ使われており、ゲーム機専用のカスタムだと思われます。

ただしゲーム機向けと言っても SteamDeck の場合はバッテリー駆動のポータブル機なので、消費電力重視のバランス取りが行われています。Zen2 世代の APU と比べると GPU やメモリは強化されていますが、RDNA2 世代として見た場合は決して突出した性能ではなくなっています。

今回の計測は LCD の旧型 SteamDeck で、かつ SteamOS (Linux) ではなく Windows 11 での値となっています。SteamOS (Linux) 上ではまた違った結果になる可能性があります。

SingleThread SP max:  107.328 GFLOPS
SingleThread DP max:   51.903 GFLOPS
MultiThread  SP max:  448.238 GFLOPS
MultiThread  DP max:  203.651 GFLOPS

結果を見る限り、専用のカスタム CPU と言っても通常の Zen2 とほぼ同等だと思われます。浮動小数点演算の実行パイプライン本数が減らされていることもなく、256bit で fma x2 命令が同時に走っていることがわかります。

AVX vmul+addps (32bit x8) n8      :    0.380   283223.9     4425.4  ( 64.0 1.6)
FMA vfmaddps (32bit x8) n8        :    0.534   402439.6     3144.1  (128.0 1.1)
FMA vfmaddps (32bit x8) n12       :    0.803   401825.8     3139.3  (128.0 1.1)
FMA vfma+mlps (32bit x8) n12      :    0.795   304483.4     3171.7  ( 96.0 1.1)
FMA vfma+adps (32bit x8) n12      :    0.540   448238.2     4669.1  ( 96.0 1.7)
AVX vml+ad+adps (32bit x8) n9     :    0.410   295300.2     4614.1  ( 64.0 1.6)

vfpbench 結果のベースクロックは 2.8GHz 計算になっていますが、fma の IPC が 1.1 なので 8 Thread 実行時におよそ 3.1GHz 前後で動作していたと考えられます。本来 IPC は 2 ですが、SMT (Hyper Threading) なのでマルチスレッド実行時は半分の計算です。

関連エントリ

ROG Ally Zen4 vfpbench の結果

ROG Ally で Z1 Extreme (Zen4) に触ることができたため vfpbench の結果を調べました。ポータブル機でも 8 core あるため基本性能が高く、CPU だけでも単精度で 1 TFLOPS を超えています。

SingleThread SP max: 137.726 GFLOPS
SingleThread DP max: 68.841 GFLOPS
MultiThread SP max: 1120.448 GFLOPS
MultiThread DP max: 603.461 GFLOPS

また Zen4 は AVX512 に対応しています。AVX512 は bit 幅だけでなくレジスタ本数も倍増しており、AVX(256bit) と比べるとレジスタだけで 4倍のデータ量を扱うことができます。

Zen4 は 256bit の積和と 256bit 加算パイプラインをそれぞれ 2本の合計 4本備えています。そのため FMA だけなら同時に 2命令実行可能なので、理論上のピーク性能値は

8(avx) x 2(fma) x 2(pipe) x 8(core) x 3.3(clock) = 844.8 GFLOPS

となります。
vfpbench の結果を見ても単コアで fma の IPC が 2 です。(A)

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
FMA vfmaddps (32bit x8) n12       :    0.459   103632.4     6477.0  ( 16.0 2.0) -- (A)

ただしこれだけでは 844.8 GFLOPS であり 1 TFLOPS に届きません。

Zen 4 は積和の他に加算パイプも 2本あるため、積和命令と並行して加算命令も実行させられる可能性があります。

実際に mul + add の組み合わせ (B) では 3.9、ほぼ 4命令同時に走っておりピーク FLOPS 値が fma x2 とほぼ同等になっています。

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
AVX vmul+addps (32bit x8) n8      :    0.152   104158.5    13019.8  (  8.0 3.9) -- (B)
FMA vfma+adps (32bit x8) n12      :    0.322   110800.7     9233.4  ( 12.0 2.8) -- (C)
FMA vfma+mlps (32bit x8) n12      :    0.458    77839.3     6486.6  ( 12.0 2.0) -- (D)

同じように fma + add の (C) も IPC が 2を超えるのですが、2.8 とおよそ 3命令、1.4 倍にしかなりませんでした。それでも FOP が 3/4 で IPC が 1.4 倍なので、FLOPS 値も fma x 2 の (A) より (C) の方が上がっています。これで 844.8 GFLOPS を超えられます。

なお乗算命令は積和と同じ実行パイプを使用するため、fma + mul の組み合わせ (D) では IPC が 2のまま変わりません。

まとめると、256bit の場合 乗算+加算の場合は最大 4、積和が含まれる場合は最大 3命令同時に実行できる可能性があります。

この結果は Zen2 とは異なっています。Zen2 でも 256bit 積和 + 加算 がそれぞれ 2本の合計 4本で構成は同じですが、mul + add のケースでも最大 3命令、fma + add では 2命令までしか実行できませんでした。

AVX512 の結果を見ると、やはり 512bit では fma (E) は同時に 1命令になっています。よって fma だけのピーク FLOPS は 256bit fma x2 と変わりません。

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
AVX512 vfmaddps (32bit x16) n12   :    0.916   103842.0     3245.1  ( 32.0 1.0) -- (E)
AVX512 vfma+aps (32bit x16) n12   :    0.518   137726.3     5738.6  ( 24.0 1.7) -- (F)

ですが、fma + add の場合 (F) は約 1.8命令 (0.916/0.518 = 1.768) あり、256bit AVX の 3命令時よりも並列度が上がっていることがわかります。仮に同時に発行できる命令数が 3 op に制限されていても、AVX512 ならその影響を受けづらいということでしょうか。

現在の vfpbench には 512bit の add + mul の計測値が含まれていないので実際は不明ですが、Zen4 の場合 AVX512 の 512bit 命令でも 乗算+加算 の組み合わせは同時に 2命令実行できる可能性があります。

今回の計測値で最も高い数値が出ていたのは AVX512 512bit の fma + add の場合です。24/32 * 1.768 * 844.8 GFLOPS = 1120 GFLOPS

まとめると、

  • Zen4 は Zen2 よりも同時に実行できる fp 演算命令数が多い
  • Zen4 では 256bit 命令よりも AVX512 512bit 命令の方がピークの演算能力が高い

もちろん実際のアプリケーションで理論上の性能が出るわけではありませんのでご了承ください。

なお Intel IceLake の場合は 256bit 積和 x 2 の実行パイプなので、256bit 未満で最大 2命令、AVX512 の 512bit では同時 1命令になります。
詳しくはこちら

Apple M1 とそれまでの Apple CPU の比較など

久しぶりに Intel Mac を使うと、コンパイルがなかなか終わらなくてあれ?と思うことがあります。以前比べたときは、同じ 2020年モデル同士の比較ながらビルド時間で 5倍ほどの差がありました。

M1 Mac が速い理由は色々あると思いますが、そもそもシンプルに CPU が速いです。これまで直接比較できるプラットフォームが無かっただけで、Apple の CPU はシングルスレッド性能が高くパフォーマンスが良好でした。

2018年に A12X を搭載した第3世代 iPad Pro が登場した時点ですでに「ほとんどのノートパソコンよりも優れたパフォーマンス」(ノートパソコンの92パーセントよりも高速)と謳っていることからもわかります。

先日 Apple Watch Series 6 の Apple S6 について性能を測定しました。合わせて手持ちの他のデバイスも一通りチェックしたのでその結果をまとめてみます。ログの全体はこちらにあります。

浮動小数点演算の同時に実行できる命令数 (IPC) に注目したのが下記の表です。単精度と一部の CPU のみ抜き出しています。あくまで浮動小数点演算命令しか見ていないので、必ずしも全体の性能を見ているわけではない点にご注意ください。

float 32bit Scalar
CPU/SoC SIMD Width add mul fma total
Apple S1 32bit fma 1 1 1 1
Apple S2 32bit fma 1 1 1 1
Apple S6 128bit add + 128bit fma 2 1 1 2
Apple A5 128bit mad 1 1 1 1
Apple A6 128bit fma 1 1 1 1
Apple A7 128bit add + 128bit fma x2 3 2 2 3
Apple A8 128bit add + 128bit fma x2 3 2 2 3
Apple A9 128bit fma x3 3 3 3 3
Apple A10 128bit fma x3 3 3 3 3
Apple A11 128bit fma x3 3 3 3 3
Apple M1 128bit add/mul + 128bit fma x3 4 4 3 4
Haswell 256bit fma/add + 256bit fma/mul 1 2 2 2
Skylake 256bit fma + 256bit fma 2 2 2 2
IceLake 256bit fma + 256bit fma 2 2 2 2
Zen 128bit add x2 + 128bit mul x2 2 2 2 3
Zen+ 128bit add x2 + 128bit mul x2 2 2 2 3
Zen2 256bit add x2 + 256bit mul x2 2 2 2 4

SIMD SIMD 2 SIMD 4 SIMD 8 SIMD 16
CPU/SoC add mul fma total add mul fma total add mul fma total add mul fma total
S1 0.5 0.5 0.5 0.5 0.25 0.25 0.25 0.25
S2 0.5 0.5 0.5 0.5 0.25 0.25 0.25 0.25
S6 2 1 1 2 2 1 1 2
A5 1 1 1 1 1 1 1 1
A6 1 1 1 1 1 1 1 1
A7 3 2 2 3 3 2 2 3
A8 3 2 2 3 3 2 2 3
A9 3 3 3 3 3 3 3 3
A10 3 3 3 3 3 3 3 3
A11 3 3 3 3 3 3 3 3
M1 4 4 3 4 4 4 3 4
Haswell 1 2 2 2 1 2 2 2
Skylake 2 2 2 2 2 2 2 2
IceLake 2 2 2 2 2 2 2 2 1 1 1 1
Zen 2 2 2 3 1 1 1 2
Zen+ 2 2 2 3 1 1 1 2
Zen2 2 2 2 4 2 2 2 4

Intel CPU は AVX512 で最大 512bit 幅まで選べるものの同時に実行できる命令はいずれも 2命令までとなっています。

AMD Zen2 は add+mul の組み合わせで最大 4ですが、同じ種類の場合 2命令までとなります。Zen1 では 3命令に制限されていたようです。ちなみに Zen2 は通常の CPU (MCM) と APU (Monolithic) を比べましたが同じ結果でした。キャッシュサイズに違いはあるものの、特に浮動小数点演算の実行ユニットが削られているようなことはありませんでした。

Apple は A7 で 64bit 化と同時に 128bit fma x3 に拡張しています。ARM の Cortex は 64bit x2 なので、同じ ARM CPU でも 3倍の演算能力を持っており、スカラーや 64bit でも最大 1.5倍のスループットが期待できます。

さらに A9 で乗算も拡張されており、A12 以降いずれかのタイミングで 4命令に増加したと思われます。Intel が SIMD でピーク性能に特化しているのに対して、Apple は効率がよく小回りがきく印象です。

他の CPU や倍精度含めた表はこちらにあります。

CPU の浮動小数点演算能力の詳細

ARM core 自体ここ数年で性能がかなり上がっています。以前 Pixel 3 (Snapdragon 845/Cortex-A75) を使い始めたときに、ハイエンドスマートフォンが十分開発に使えるくらい速いことに気が付きました。Core i7 (4 core / 8 thread) の普通の PC とコンパイル時間がほとんど変わらなかったためです。

ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd

下記は Compile Benchmark からの抜粋です。4C8T の PC と Pixel3 のみ載せています。十分速いことがわかります。

Device/OS CPU thread ビルド時間
Desktop PC Windows WSL2 Core i7-6700K 4/8 29 sec
Desktop PC Ubuntu 18.04 Core i7-4790K 4/8 31 sec
Pixel 3 Android + Termux Snapdragon 845 8/8 35 sec
Desktop PC Windows WSL1 Core i7-6700K 4/8 40 sec
MacBook Air Early 2020 Core i5-1030NG7 4/8 45 sec
Mac mini Late 2012 Core i7-3615QM 4/8 46 sec

もともとコンパイルは並列化が有効で、多コア CPU や I/O 性能の違いで速度が出やすくなります。スマートフォン向け ARM CPU はシングルスレッド性能よりも core 数を増やす方に進化していたので、特に並列コンパイルと相性が良かったのだと思われます。

core 数よりもシングルスレッド性能に力を入れいてた Apple が、同じくらい core 数を揃えたのが前述の Apple A12X です。さらに世代を重ねて、改良と同時に動作 Clock を上げたのが Apple M1 になります。以前のテストでも、コンパイル速度は Apple M1 では 16C/32T に匹敵する結果が出ていました。予想を大きく上回るもので、ARM への移行は早く進むのではないかと思います。

MacBook Air Late 2020 / Apple M1 のビルド速度と浮動小数点演算能力

Device/OS CPU thread ビルド時間
Desktop PC Windows WSL2 Ryzen 9 3950X 16/32 8 sec
MacBook Air Late 2020 Apple M1 8/8 9 sec
Desktop PC Windows WSL2 Ryzen 7 4750G 8/16 18 sec
Desktop PC Windows WSL2 Ryzen 7 1800X 8/16 21 sec
MacBook Air Early 2020 Core i5-1030NG7 4/8 45 sec

関連ページ
CPU の浮動小数点演算能力の詳細
Compile Benchmark
VFP Benchmark Log 計測結果まとめ

関連エントリ
Apple Watch Series 6 と CPU 性能の測定
MacBook Air Late 2020 / Apple M1 のビルド速度と浮動小数点演算能力
Ice Lake の vfpbench 結果と AVX512 命令
Windows 10 WSL2 のコンパイル速度比較
4倍速い Ryzen 9 3950X の UE4 コンパイル速度
Huawei P30 Lite/Fire HD 10(2019) のコンパイル速度と UserLAnd
Jetson Nano / Clang の Version とコンパイル速度の比較
Snapdragon 835 と 845 のコンパイル時間の比較&浮動小数点演算能力
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd

Apple Watch Series 6 と CPU 性能の測定

Apple Watch Series 6 に乗り換えました。4年前のモデル Apple Watch Series 2 からの移行です。4世代分の変化は極めて大きく、その性能の差をを思い知らされました。

Series 2 は操作していて待たされることが結構あります。

アプリ起動には時間がかかり、画面中央でドットの輪が回転する画面をしばらく見続けることになります。地図を起動しても最初に地形が出てくるまで 10秒以上かかりますしスクロールには読み込みが追いついていません。ワークアウトのメニューも画面切り替え直後に一瞬固まっていてタッチの反応が悪いこともあります。SIri の反応も遅く、きちんと聞こえているのか不安になって何度も話しかけがちです。スマートフォンと比べると制約も多いため、ある程度仕方がない部分もあるでしょう。

ところが、Apple Watch Series 6 は画面も操作もハイエンドスマートフォンのように滑らかで快適です。

アプリも即座に起動するし、地図の読み込みもスクロールに追従しており、Siri の呼びかけもすぐに応えてくれます。ワークアウトのメニューも固まらずにタッチに反応しており、操作にストレスがありません。

本当に快適になったので、どれくらいハードウエア性能が上がっているか調べてみました。vfpbench を移植し、実際に測定した結果をまとめています。

Apple Watch Series 2 Apple Watch Series 6
SOC Apple S2 Apple S6
CPU core Coretex-A7 Apple 独自 core
CPU arch armv7k (ARMv7A VFPv4) arm64_32 (ARMv8.3A+)
CPU Core数 2 2
CPU Clock 450 MHz 1.5 GHz
RAM 512 MB 1.5 GB
CPU fp16 49.8 GFLOPS
CPU fp32 1.8 GFLOPS 25.2 GFLOPS
CPU fp64 0.9 GFLOPS 12.5 GFLOPS

Series 6 は RAM を 1.5GB 搭載していることがわかりました。Series 2 と比べると容量は 3倍になっておりだいぶ余裕があります。Series 2 は watchOS 7 から対象外となっており、やはり RAM 容量に無理があったのではないかと思います。

CPU も 64bit (?) になり Clock も上がっています。fp32 の演算速度に限ってみるとピークで 14倍の速度が出ています。

●ログの詳細より

以前も書いていますが Series 2 の CPU core はおそらく Cortex-A7 だと思われます。個々の浮動小数点演算命令のスループットやレイテンシの傾向が Cortex-A7 によく似ているからです。

同時に CPU の clock も推測できます。スカラー命令の MOPS からおよそ 450MHz 前後であることがわかります。

下記はその抜粋です。

Apple Watch Series 2 (Apple S2) fp32

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
VFP fmuls (32bit x1) n8           :    1.387      432.5      432.5  (  1.0 0.0)
VFP fadds (32bit x1) n8           :    1.354      443.1      443.1  (  1.0 0.0)
VFP fmacs (32bit x1) n8           :    1.332      900.6      450.3  (  2.0 0.0)
~
NEON vmul.f32 (32bit x4) n12      :    8.046      447.4      111.9  (  4.0 0.0)
NEON vadd.f32 (32bit x4) n12      :    7.972      451.6      112.9  (  4.0 0.0)
NEON vmla.f32 (32bit x4) n12      :    8.449      852.1      106.5  (  8.0 0.0)
NEON vfma.f32 (32bit x4) n12      :    8.337      863.6      108.0  (  8.0 0.0)

同じように Series 6 の結果も見てみます。こちらはスカラーもベクターも同速であり、かつ加算命令が乗算の 2倍回っています。128bit SIMD でも速度が落ちないので、同時に実行できる命令は「128bit 加算 + 128 bit 積和」の組み合わせだと考えられます。

これが ARM の 64bit core なら「64bit 積和 x 2」なので、128bit SIMD がスカラーや 64bit SIMD と同じ速度になることがありません。Apple の独自 core であることがわかります。乗算命令の MOPS をみると動作クロックはおそらく 1.5GHz 前後でしょう。

Apple Watch Series 6 (Apple S6) fp32

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
FPU fmul (32bit x1) n8            :    0.390     1538.2     1538.2  (  1.0 0.0)
FPU fadd (32bit x1) n8            :    0.194     3089.5     3089.5  (  1.0 0.0)
FPU fmadd (32bit x1) n8           :    0.388     3091.1     1545.6  (  2.0 0.0)
~
NEON fmul.4s (32bit x4) n12       :    0.585     6156.1     1539.0  (  4.0 0.0)
NEON fadd.4s (32bit x4) n12       :    0.291    12381.2     3095.3  (  4.0 0.0)
NEON fmla.4s (32bit x4) n12       :    0.581    12386.1     1548.3  (  8.0 0.0)

Apple Watch の 64bit CPU である Apple S4/S5/S6 は fp16 (半精度/16bit 浮動小数点) の演算命令に対応しています。Xcode で arm64_32 (Apple Watch 64bit) をターゲットにビルドを行うと clang が下記のマクロを定義することから判断できます。

#define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1
#define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1

実際に vfpbench でも fp16 演算命令が走っており、fp32 の倍の速度が出ています。iOS でいえば arm64e に相当するので、arm64_32 も同じ世代だと仮定するなら ARMv8.3A が対象となります。おそらく A12 以降の LITTLE core が用いられているのではないでしょうか。

Apple Watch Series 6 (Aple S6) fp16

                                      TIME(s)   MFLOPS      MOPS     FOP   IPC
NEON fmul.8h (16bit x8) n12       :    0.583    12350.5     1543.8  (  8.0 0.0)
NEON fadd.8h (16bit x8) n12       :    0.290    24794.4     3099.3  (  8.0 0.0)
NEON fmla.8h (16bit x8) n12       :    0.582    24729.8     1545.6  ( 16.0 0.0)

● arm64_32

説明に出てきた arm64_32 は Apple Watch 専用のアーキテクチャタイプです。表にまとめてみます。

watchOS
armv7k ILP32 ARMv7A + VFPv4 (Apple S1~S3 )
arm64_32 ILP32 ARMv8.3A (Apple S4 ~)
iOS/tvOS
armv6 ILP32 ARMv6 (ARM11) (iPhone 2G/3G)
armv7 ILP32 ARMv7A + VFPv3 (3GS~A5)
armv7s ILP32 ARMv7A + VFPv4 (Apple A6)
arm64 LP64 ARMv8A (Apple A7 ~ A11)
arm64e LP64 ARMv8.3A (Apple A12 ~)

arm64_32 は、ARM の 64bit アーキテクチャである ARMv8A Aarch64 の命令セットを採用していながら ILP32 (ポインタサイズが 32bit) の構成を使用しています。そのため 64bit といいつつも実質 32bit です。ILP32 なら ARMv7A もしくは ARMv8A AArch32 と何が違うのか?と思うかもしれませんが、別物になっています。arm64_32 はアドレスが 32bit なだけで AArch64 の命令が動きます。

ARM は生まれたときから 32bit の命令セットでしたが、ARMv8 で 64bit 化するときに全く新しいものに置き換わりました。レジスタも命令の種類もエンコーディングも違います。

例えば ARM 32bit では殆どの命令で条件付き実行やシフタが内蔵されていましたが 64bit 命令にはありません。他の RISC CPU のような Zero Register も登場します。ほぼ別の CPU となっており、Intel の IA-32 と IA-64 の関係に似ているかもしれません。

ARM の 64bit CPU は ARMv7A 互換の AArch32 (32bit) と新しい AArch64 (64bit) の 2 種類の命令デコーダーを持っていることになります。ILP32 として 32bit CPU 相当の使い方をするなら、AArch32 を使った方がコード資産を引き継げるし都合が良いように思えます。しかしながら Apple Watch は AArch64 のまま 32bit 化しているので、何かしらの理由があるのでしょう。

Apple は iOS 11 のタイミングで 32bit アプリを廃止して一切起動できなくなりました。同時に iOS 11 を搭載して出荷されたのが iPhone X (Apple A11) なので、Apple A11 以降は AArch32 mode が不要であると言えます。そもそも実行できない可能性があります。もしくはパフォーマンス面や消費電力、セキュリティなどの面で ARMv8.x 以降の命令に依存しているのかもしれません。

Wear OS (Android Wear) のスマートウォッチは最初に登場した初期モデルからスペックが共通で Snadpragon 400 / 210 ベースのまま変わっていません。新型が出ても性能はほぼ据え置きとなっています。対する Apple Watch は毎年新モデルが登場し、それに合わせて搭載 SoC も進化していることがよくわかります。

ログの全体は下記のページにあります。
VFP Benchmark Log 計測結果まとめ

関連エントリ
MacBook Air Late 2020 / Apple M1 のビルド速度と浮動小数点演算能力
セサミmini、スマートロックを使って1年
2年間使った Apple Watch Series 2
Apple Watch S2 の CPU と浮動小数点演算