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보다 두 배 많은 시스템 호출을 수행합니다. Altra에는 호출당 2배의 명령 수가 필요합니다(163 대 84). 이에 대한 아키텍처(aarch64 대 x86-64) 이유가 있습니까?

관련 정보