aarch64のシステムコールのパフォーマンスはx86-64より低いです。

aarch64のシステムコールのパフォーマンスはx86-64より低いです。

64ビットIntel CPU(x86-64)より64ビットARM(aarch64)でシステムコールを実行するのに時間がかかる理由を知っている人はいますか?下記のベンチマーク設定をご覧ください。

  • 64ビットARM CPU: Ampere Altra Q80-30、80コア、3GHz
  • 64ビットIntel CPU:Intel Xeon Gold 5317 CPU、12コア(24スレッド)、周波数は最大3GHzに設定されています

オペレーティングシステム:Ubuntu 20.04 LTS、Linuxカーネル:5.13.0-41-generic(ARMとXeon)

ベンチマーク:UnixBenchシステムコール(https://github.com/kdlucas/byte-unixbench)(https://github.com/kdlucas/byte-unixbench/blob/master/UnixBench/src/syscall.c)

実行コマンド:./syscall 10(混合システムコールの場合)または./syscall 10 close(close()の場合のみ)

perfを使用して実行をプロファイリングし、次の結果を得ました(./syscall 10 closeの場合)。

                       Altra             Xeon
Duration [s]                  10              10
Throughput [lps]      23,194,919      47,938,768
Cycles            30,000,710,570  29,968,373,641
Instructions      37,767,647,457  40,044,878,500
IPC                         1.26            1.34
Calls                231,949,190     479,387,680
Instructions per call     162.83           83.53

したがって、Xeonは同じ周波数(3GHz)でAltraより2倍のシステムコールを実行します。 Altraには、呼び出しごとに2倍のコマンド数が必要です(163対84)。これにアーキテクチャ(aarch64対x86-64)の理由はありますか?

ベストアンサー1

おすすめ記事