Simon Pilgrim
54e52aa5eb
[X86] Reduce znver3/4 LoopMicroOpBufferSize to practical loop unrolling values ( #91340 )
...
The znver3/4 scheduler models have previously associated the LoopMicroOpBufferSize with the maximum size of their op caches, and when this led to quadratic complexity issues this were reduced to a value of 512 uops, based mainly on compilation time and not its effectiveness on runtime performance.
From a runtime performance POV, a large LoopMicroOpBufferSize leads to a higher number of loop unrolls, meaning the cpu has to rely on the frontend decode rate (4 ins/cy max) for much longer to fill the op cache before looping begins and we make use of the faster op cache rate (8/9 ops/cy).
This patch proposes we instead cap the size of the LoopMicroOpBufferSize based off the maximum rate from the op cache (znver3 = 8op/cy, znver4 = 9op/cy) and the branch misprediction penalty from the opcache (~12cy) as a estimate of the useful number of ops we can unroll a loop by before mispredictions are likely to cause stalls. This isn't a perfect metric, but does try to be closer to the spirit of how we use LoopMicroOpBufferSize in the compiler vs the size of a similar naming buffer in the cpu.
2024-05-16 14:44:00 +01:00
..
2024-03-04 16:17:01 +00:00
2024-02-06 17:01:38 +03:00
2024-02-05 11:57:34 +01:00
2023-05-17 17:03:15 +02:00
2023-07-05 09:54:28 +02:00
2024-02-06 17:01:38 +03:00
2023-11-27 12:54:11 -08:00
2024-05-16 14:44:00 +01:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2023-11-26 21:24:29 +00:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-04-13 10:21:24 +05:30
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2023-07-05 09:54:28 +02:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2024-02-21 17:51:56 +05:30
2023-03-14 20:55:17 +07:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-09-26 14:25:37 +01:00
2023-07-19 10:39:59 +02:00
2023-12-08 19:43:10 +08:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2023-07-05 09:54:28 +02:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-08 02:38:47 +03:00
2024-02-05 11:57:34 +01:00
2022-10-25 12:15:39 -04:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-10-31 14:02:42 +01:00
2023-10-31 14:02:42 +01:00
2022-12-05 12:10:53 -05:00
2022-12-07 20:15:43 +03:00
2024-01-24 15:25:29 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-07 20:15:43 +03:00
2022-12-23 16:35:26 +01:00
2024-02-05 17:01:00 -08:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2024-05-03 14:13:59 -04:00
2023-11-24 15:17:32 +00:00
2023-12-07 13:20:36 -08:00
2024-02-01 16:08:25 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2023-07-05 09:54:28 +02:00
2023-09-11 14:23:29 -07:00
2022-12-07 20:15:43 +03:00
2023-07-05 09:54:28 +02:00
2023-07-05 09:54:28 +02:00
2022-12-23 16:35:26 +01:00
2023-09-11 14:23:29 -07:00
2023-12-14 21:02:10 +08:00
2023-07-05 09:54:28 +02:00
2023-07-05 09:54:28 +02:00
2023-11-27 12:54:11 -08:00
2022-10-07 20:02:58 +01:00
2022-10-18 15:12:24 +01:00
2023-07-05 09:54:28 +02:00
2022-12-23 16:35:26 +01:00
2024-05-02 11:01:24 +01:00
2023-07-05 09:54:28 +02:00
2022-12-07 20:15:43 +03:00
2022-12-20 18:36:42 +03:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2023-09-11 14:23:29 -07:00
2024-05-02 11:01:24 +01:00
2023-10-31 14:33:53 +00:00
2022-12-23 16:35:26 +01:00
2023-07-05 09:54:28 +02:00
2022-12-23 16:35:26 +01:00
2022-12-23 16:35:26 +01:00
2024-05-13 09:42:04 -07:00
2022-12-23 16:35:26 +01:00
2022-10-07 14:54:34 -07:00
2023-01-20 16:08:25 +00:00
2022-12-08 11:47:16 +01:00