1. Feb 13, 2024
  2. Feb 09, 2024
  3. Feb 08, 2024
  4. Feb 05, 2024
    • Knute's avatar
      Add an example of PEvent generation (#145) · 8694a717
      Knute authored
      
      
      This SHA is an example of how to generate PEvents (Performance Events)
      typically used for correlation
      efforts between a perf model and hardware.
      
      PEvents are a more "compact" form of the pipeout collection pairs,
      allowing a modeler to specify more direct items
      for collection. Pipeout pairs can be more elaborate/detailed. However,
      with some clever coding, there can be
      reuse -- it's not done here.
      
      To generate performance events, use the command line parameter
      `--pevents <filename> <pevent1,pevent2,...|all>`.
      
      Examples:
      ```
      # All pevents
      ./olympia traces/dhry_riscv.zstf --pevents retire.out all -i100
      
      # Just RETIRE pevent
      ./olympia traces/dhry_riscv.zstf --pevents retire.out RETIRE -i100
      
      # RETIRE and COMPLETE pevent
      ./olympia traces/dhry_riscv.zstf --pevents retire.out COMPLETE,RETIRE -i100
      ```
      
      While I was at it, I removed the generated annotation for pipeline
      collection for LoadStore/MemoryAccess classes -- uses NVP which
      generates faster, as well as creates smaller pipeouts.
      
      ---------
      
      Signed-off-by: default avatarKnute <56927209+klingaard@users.noreply.github.com>
      8694a717
  5. Feb 02, 2024
  6. Feb 01, 2024
  7. Jan 12, 2024
    • danbone's avatar
      Add execute flushing (#137) · ce29ae25
      danbone authored
      
      
      - Fix pipeline flush mechanisms by removing inflight instructions inside
      functional units, recovering the rename map, and adding trace rewind
      functionality
      - Add FlushCriteria class for requesting flushes to and from the
      FlushManager
      - Update FlushManager to handle and arbitrate between multiple flush
      sources
      - Add flush request port from ExecutePipe to FlushManager intended to be
      used for mispredicted branches
      - Delay completing instructions in ExecutePipe by a cycle to fix execute
      flush race conditions
      - Add branch identification methods for Inst
      - Add test to send random flushes from the branch unit
      
      ---------
      
      Signed-off-by: default avatardanbone <daniel.d.bone@gmail.com>
      Co-authored-by: default avatarDaniel Bone <daniel.bone@imgtec.com>
      ce29ae25
  8. Jan 09, 2024
  9. Jan 06, 2024
  10. Dec 21, 2023
    • Suraj Shirvankar's avatar
      Raise exception in LSU when ROB is drained (#108) · e3e14121
      Suraj Shirvankar authored
      
      
      This PR adds a notification from ROB to the entire simulation that the ROB
      is about to or is expecting simulation to correctly terminate.  If a unit listens
      for that notification, it can use that information to determine if simulation 
      ended improperly, meaning, it might still have work to do, but didn't expect
      simulation to stop.  An example of how this can happen: a unit is NOT 
      scheduling an event to do work (a bug) because of a missed path to "wake"
      it up.  
      
      If the sparta::Scheduler ends simulation because it has no events to 
      run, the unit will not receive the end-of-simulation notification from the ROB
      and can throw an exception in this case.
      
      ---------
      
      Signed-off-by: default avatarSuraj Shirvankar <surajshirvankar@gmail.com>
      Co-authored-by: default avatarKnute Lingaard <klingaard@gmail.com>
      e3e14121
  11. Dec 20, 2023
    • Suraj Shirvankar's avatar
      Lsu allow spec load exec (#92) · f4088b86
      Suraj Shirvankar authored
      
      
      This PR introduces the following
      - Allows loads to perform Virtual address to Physical address
      translation before older loads complete
        This can be configured using a parameter in the LSU (`allow_speculative_load_exec`)
      - Allow non blocking cache lookup requests. Depends on #91 for the cache
      to support this feature
      - Implements Ready queue - simulator-only structure to speed up
      instruction lookup in the LSU
      - Mitigates data hazards introduced by instructions running out of order
      - The length of the different stages of the LSU pipeline can be
      configured through the parameters.
      
      ---------
      
      Co-authored-by: default avatarKnute Lingaard <klingaard@gmail.com>
      f4088b86
  12. Dec 15, 2023
  13. Dec 14, 2023
  14. Dec 08, 2023
  15. Dec 06, 2023
  16. Dec 05, 2023
    • Aaron Chan's avatar
      Ignore Renaming of x0 (#120) · aeaf7c66
      Aaron Chan authored
      Fix renaming to skip renaming of x0 outlined in
      https://github.com/riscv-software-src/riscv-perf-model/issues/118
      
      .
      
      Changes:
      - `renameInstructions_()` now checks if a source is x0, if it is and is
      a data operand for a LSU operation, we still create a data register for
      it, as we need to check in LSU for x0 before issuing instruction
      - Added a boolean `x0` field to `Reg` struct in `RenameData` that tracks
      if a data register is an `x0` instruction. This helps on reclamation of
      rename credits in `getAckFromROB_()` to make sure we don't decrement for
      an x0 data register
      - Updated logic to handle for destination reclamation in
      `getAckFromROB_()` to ensure when we reclaim credits/freelist
      registers/references, we don't process them for x0 destinations
      - Fixed initial allocation of freelist registers for `RF_INTEGER` to
      only map registers for x1 - x31, before we were mapping from x0 - x31,
      so we should technically see a performance improvement as we gained 1
      extra freelist register from not renaming x0
      
      ---------
      
      Signed-off-by: default avatarAaron Chan <achn357@gmail.com>
      Co-authored-by: default avatarKnute <56927209+klingaard@users.noreply.github.com>
      aeaf7c66
  17. Nov 14, 2023
    • Knute's avatar
      New gen_layout commands (#107) · fdf08ff0
      Knute authored
      Removed the old perl generator; uses the new python generator in Sparta.
      
      These changes make a few assumptions: 
      1. The user is using a newer version of sparta map_v2
      2. The path to the clone of map is next to the clone of olympia
      fdf08ff0
    • jeffnye-gh's avatar
      jeffnye-gh/dromajo_stf_update (#119) · 75bdc947
      jeffnye-gh authored
      
      
      improve performance when stf tracing is enabled, issue #55 
       
      retain n_cycles=10000 until the stf trace opc is detected. 
      Once the stop opc is detected restore n_cycles=10000
      
      result is better interactivity under linux, improving overall
      performance and usability when not actively generating a trace.
      
      This is a re-implementation of previous draft PR.
      
      trace opc trigger detection is done in dromajo_template.
      trace record creation and handling is done in dromajo_stf.cpp
      headers gathered into dromajo_stf.h
      
      ---------
      
      Co-authored-by: default avatarjeff <jeffnye-gh@github.com>
      75bdc947
  18. Nov 09, 2023
  19. Nov 08, 2023
  20. Oct 14, 2023
  21. Oct 13, 2023
  22. Oct 09, 2023
  23. Oct 06, 2023
  24. Sep 28, 2023
  25. Sep 08, 2023
  26. Aug 30, 2023
    • Suraj Shirvankar's avatar
      Setup conda cache and ccache (#82) · d0c90020
      Suraj Shirvankar authored
      The goal of the PR is to improve build times.
      Currently the build steps take around > ~15 mins and most of the time is
      spent building sparta and the other dependencies.
      This should bring it down to roughly ~6 mins.
      
      CCache is used to cache build files, the cache for each branch is unique
      to prevent cache invalidation issues between different branches.
      
      Conda dependencies are also cached although the time to build is not
      affected as much roughly ~1 mins but would be higher if the network is
      slow.Conda spends a lot of time checking the dependencies.
      
      Cached action run
      https://github.com/h0lyalg0rithm/riscv-perf-model/actions/runs/5987171626
      d0c90020
  27. Aug 25, 2023
  28. Aug 09, 2023
  29. Aug 01, 2023
  30. Jul 12, 2023