Skip to content

Commit b22f4c5

Browse files
Nicoshevfacebook-github-bot
authored andcommitted
Switch aarch64 pause to sb on armv9a+ (#2390)
Summary: X-link: facebook/hhvm#9591 Pull Request resolved: #2390 SB (Speculation Barrier) is a modern barrier, mandatory from armv8.5a. It achieves the same result as issuing DSB+ISB, but without having the cpu drop its instruction pipeline. We have noticed 20% to 30% increased throughput, on the 16, 32 and 64 thread-count case within the small locks benchmark. In the below results, 'Sum' is throughput: before: ------- folly::MicroSpinLock 16 threads Sum: 130891978 Mean: 1817944 stddev: 147111 Lock time stats in us: mean 1 stddev 33 max 14937 ------- folly::MicroSpinLock 32 threads Sum: 54681548 Mean: 759465 stddev: 105588 Lock time stats in us: mean 5 stddev 78 max 35925 ------- folly::MicroSpinLock 64 threads Sum: 24013546 Mean: 333521 stddev: 90571 Lock time stats in us: mean 11 stddev 179 max 90498 after: ------- folly::MicroSpinLock 16 threads Sum: 169135465 Mean: 2349103 stddev: 227369 Lock time stats in us: mean 1 stddev 25 max 8463 ------- folly::MicroSpinLock 32 threads Sum: 67853388 Mean: 942408 stddev: 108821 Lock time stats in us: mean 3 stddev 63 max 17020 ------- folly::MicroSpinLock 64 threads Sum: 28845120 Mean: 400626 stddev: 61624 Lock time stats in us: mean 9 stddev 149 max 30879 Reviewed By: Gownta Differential Revision: D70250662 fbshipit-source-id: 4148100a7368c6dc76c36e2ab88d4d2dabe88904
1 parent e68c4ab commit b22f4c5

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

folly/portability/Asm.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ inline void asm_volatile_pause() {
4040
(defined(__mips_isa_rev) && __mips_isa_rev > 1)
4141
asm volatile("pause");
4242
#elif FOLLY_AARCH64
43+
#if __ARM_ARCH >= 9
44+
asm volatile("sb");
45+
#else
4346
asm volatile("isb");
47+
#endif
4448
#elif (defined(__arm__) && !(__ARM_ARCH < 7))
4549
asm volatile("yield");
4650
#elif FOLLY_PPC64

0 commit comments

Comments
 (0)