Mahmoud Mandour <ma.mando...@gmail.com> writes:
> This RFC series introduces a new cache TCG plugin that models separate > L1 data cache and L1 instruction cache and uses one shared cache for > all the cores. > > It also includes a commit by Alex that adds an API call that resolves > the symbol of an insn. > > The original RFC patch posted by Alex Bennée included incorporating > symbol resolution into the cache plugin that caused conflicts, so I > dropped the plugin additions from that and introduced them afterwards. Queued patches 1-2 to plugins/next, will queue the rest from next revision. Could you please also add a section to docs/devel/tcg-plugins.rst to detail the argument options. > > v2 -> v3: > Precomputed the value of block size shift once and stored in the > cache. > > Removed tag shifting since it's okay to leave the tag in the > high-order bits and mask out set index and block offset. > > Used one hashtable to store InsnData structs and made the structs > have separate counters for data misses and instruction misses. > > Used a boolean to indicate whether an access resulted in a hit or a > miss. > > Inserted an InsnData struct into the hashtable on translation-time > and made sure we do so once so that we don't rewrite the struct if > an instruction is translated multiple times. > > Made the output format for most-missing instructions more > machine-readable. > > Removed trace-generation. > > Freed tokenized strings after argument parsing. > > Returned null from cache_init() if argument cache config is bad. > > Used one enum to indicate the chosen eviction policy. > > Added function pointers for cache update and metadata initialization > and destroying. Those pointers are assigned to policy-specific > functions. > > Remade LRU. Assigned a generation number that is incremented on each > set access to the currently-accessed block's priority. On miss, > evicted the block with the least generation number. > > Allowed to give multiple "evict" arguments and sticked to the last > one. > > Alex Bennée (1): > plugins/api: expose symbol lookup to plugins > > Mahmoud Mandour (3): > plugins: Added a new cache modelling plugin. > plugins/cache: Enabled cache parameterization > plugins/cache: Added FIFO and LRU eviction policies. > > contrib/plugins/Makefile | 1 + > contrib/plugins/cache.c | 642 +++++++++++++++++++++++++++++++++++++ > include/qemu/qemu-plugin.h | 9 + > plugins/api.c | 6 + > 4 files changed, 658 insertions(+) > create mode 100644 contrib/plugins/cache.c -- Alex Bennée