The pcycle registers measure activity - a very coarse and simple PMU-like
feature.  The baseline had a "count the instructions per TB and scale a
counter" model (to be summed across vCPUs upon reg read).  But that's not
a good model and it adds work to all TBs.

Instead: we'll use time as a slightly better model, but only accumulating
when there's activity.  Using a clock is unfortunately less stable across
hosts and changes to translation, but still a net improvement all things
considered.

Brian Cain (2):
  hw/hexagon: model PCYCLE counter
  target/hexagon: mark clock-backed register reads as I/O

 include/hw/hexagon/hexagon_globalreg.h |   6 ++
 target/hexagon/cpu.h                   |   2 -
 target/hexagon/cpu_helper.h            |   6 --
 target/hexagon/gen_tcg_sys.h           |  12 ++-
 target/hexagon/helper.h                |   2 +
 target/hexagon/translate.h             |   2 -
 hw/hexagon/hexagon_globalreg.c         | 142 ++++++++++++++++++++++++-
 target/hexagon/cpu.c                   |  10 +-
 target/hexagon/cpu_helper.c            |  79 --------------
 target/hexagon/genptr.c                |  38 ++++++-
 target/hexagon/hexswi.c                |  10 +-
 target/hexagon/machine.c               |   2 +-
 target/hexagon/op_helper.c             |  45 ++++++++
 target/hexagon/translate.c             |  21 ----
 hw/hexagon/trace-events                |   1 +
 target/hexagon/hex_common.py           |   8 +-
 16 files changed, 259 insertions(+), 127 deletions(-)

-- 
2.34.1

Reply via email to