[PATCH][AArch64] Enable autoprefetcher modelling in the scheduler
James Greenhalgh
james.greenhalgh@arm.com
Tue Oct 27 10:50:00 GMT 2015
On Thu, Oct 22, 2015 at 05:05:26PM +0100, Kyrill Tkachov wrote:
> Hi all,
>
> This patch enables the autoprefetcher heuristic for scheduling in AArch64.
> It is enabled for the Cortex-A53, Cortex-A57 cores and is off for the other cores,
> leaving their behaviour unchanged.
>
> When enabled, the scheduler will try to sort groups of loads or stores in
> order of the offset from a common base register.
>
> From what I understand of the relevant scheduling hooks, there are
> essentially three levels of this:
> 1) Don't use the autoprefetcher heuristic
> 2) Use it to order loads/stores but allow other scheduling heuristics to
> reorder them again to maximise multi-issue opportunities
> 3) Use it to order loads/stores and keep that order, even if it can harm
> multi-issue opportunities.
>
> With this patch I get a 0.4% improvement in SPECINT 2006 and 1.7% improvement
> in SPECFP 2006 on a Cortex-A57 as well as improvements in various streaming
> workloads.
>
> On Cortex-A53 I see improvements to various streaming workloads and there's
> no regressions or improvements on SPEC2000.
>
> Bootstrapped and tested on aarch64-none-linux-gnu.
>
> Ok for trunk?
OK.
Thanks,
James
> 2015-10-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
>
> * config/aarch64/aarch64-protos.h
> (struct tune_params): Add autoprefetcher_model field.
> * config/aarch64/aarch64.c: Include params.h
> (generic_tunings): Specify autoprefetcher_model value.
> (cortexa53_tunings): Likewise.
> (cortexa57_tunings): Likewise.
> (cortexa72_tunings): Likewise.
> (thunderx_tunings): Likewise.
> (xgene1_tunings): Likewise.
> (aarch64_first_cycle_multipass_dfa_lookahead_guard): New function.
> (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
> (aarch64_override_options_internal): Set
> PARAM_SCHED_AUTOPREF_QUEUE_DEPTH param.
More information about the Gcc-patches
mailing list