[PATCH] D58736: [System Model] Introduce a target system model

David Greene via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 3 14:18:56 PDT 2019


greened added a comment.

In D58736#1434008 <https://reviews.llvm.org/D58736#1434008>, @Meinersbur wrote:

> Thank you for pushing this forward and sorry for the delay.
>
> Could you add some central high-level documentation about what the memory system model is? E.g. describe that an `MCSystemModel` has a list of execution resources, memory hierarchies, prefetch configs and write-combining buffers. A Cache hierarchy as a total size, line size, associativity, etc. To get the interpretation eight, please add more details about ever parameter, particularly the prefetch configs. Some other examples than ARM big.LITTLE would be nice as well.


Will do.

> What exactly is a "prefetch config"? Is there a prefetch config for each cache level? Different hardware mechanisms for prefetch (e.g. stride detection or software-estabslished). Different strategies for inserting prefetch instruction selectable at compile-time?

This is certainly an area for exploration.  Currently the model doesn't have a prefetch config for each cache level but we could make it so.  I'm not sure if the flexibility will be needed or not.  We haven't needed in the past but processors are getting a lot more complicated in this area.

The intent is to describe parameters for software prefetching.  It doesn't attempt to describe hardware prefetchers but that may be useful depending on the problem at hand.  I think that's something we could consider for later.

> AFAICS, this patch does uses the default model for all targets?

Yes, currently.  My intent was not to disrupt how anything currently works as far as what TTI returns for its interfaces.  Individual subtargets can then opt-in by defining a non-default model.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58736/new/

https://reviews.llvm.org/D58736





More information about the llvm-commits mailing list