- Jun 11, 2024
-
-
jeffnye-gh authored
I have regression fails, tried on riscv-perf-model and on my fork. Please check my work. I did not see any previous reference to this error but I could have missed it. MavisUnit.cpp was missing this file: isa_file_path + "/isa_rv64zicsr.json", these tests failed for me on regress 1 - olympia_json_test (Subprocess aborted) 2 - olympia_json_test_report_text (Subprocess aborted) 3 - olympia_json_test_report_text_direct (Subprocess aborted) 4 - olympia_json_test_report_html (Subprocess aborted) ... Exception while running Unknown mnemonic 'csrrw' in ExtractorDirectInfo ... terminate called after throwing an instance of 'mavis::UnknownMnemonic' what(): Unknown mnemonic 'csrrw' in ExtractorDirectInfo ... Co-authored-by:Jeff Nye <jeff@www.condorcomputing.com>
-
- Jun 06, 2024
-
-
Kathlene Magnus authored
Expanding the Olympia regression to build and run on MacOS-12 --------- Signed-off-by:
Kathlene Magnus <kathlene.hurt@gmail.com> Co-authored-by:
Benoy Alexander <quark123@hotmail.com>
-
ah-condor authored
This PR is a followup to https://github.com/riscv-software-src/riscv-perf-model/pull/162. It is also discussed in: https://github.com/riscv-software-src/riscv-perf-model/issues/164 This PR changes the way SYS instructions are executed. Previously, SYS instructions did not go through an execution pipe but instead were dispatched to the ROB without delay, and the ROB handled the scoreboard with respect to the destination register. This PR requires the SYS instructions to pass through an execution pipe, thereby obviating any special scoreboard code in the ROB. With the exception of CSR read instructions, the ROB will flush all SYS instructions. This feature can be tested by running example_json.json workload, which is part of the make regress suite. Also, the sys execute pipe was added to 3 config files big_core, medium_core and small_core. How was this tested: make regress passes 83/83. --------- Co-authored-by:
Anthony Hung <anthonyh@compute1.condorcomputing.net>
-
- Apr 16, 2024
-
-
jeffnye-gh authored
fusion decoder implementation. This is suitable for analysis. Adds fusion parameters to fusion.yaml. And specifies external file definition of fusion groups using JSON New statistics for fused instructions and fusion group stats HCache as separate structure in fusion/fusion Includes the FSL.md domain language description Inst.hpp modified to add FUSED and FUSION_GHOST status as extended status Support for non-sequential program ID. Each instr has a PID increment value, and methods Formatting, clean up of Inst.hpp JSON support added to Fusion.hpp New exceptions for JSON errors Fusion default transform no longer modifies the input buffer HCache testbench functions --------- Co-authored-by:Jeff Nye <jeff@www.condorcomputing.com>
-
- Apr 09, 2024
-
-
ah-condor authored
All instructions including SYS can possibly go through register rename. A problem occurs when a SYS instr gets a renamed dest register. SYS instrutions do not go in any execution pipe. In current code renamed registers can only be made ready in an execution pipe. So SYS instructions with dest register rename can never become ready. So any subsequent instruction waiting on the destination register just hangs. The solution I made was to give the ROB a scoreboard view and make the dest register ready when the ROB does the flush upon retiring SYS instructions. In an unrelated fix in the same block of code I also added a line to set the expected_flush_ variable to true or else the flush fails. How was this tested: make regress passed 72/72 --------- Co-authored-by:Anthony Hung <anthony.hung@CONDORMAC14.local>
-
Suraj Shirvankar authored
-
- Mar 25, 2024
-
-
arupc-vmicro authored
A code introducing branch prediction API.
-
- Mar 12, 2024
-
-
danbone authored
Fix for #158 Co-authored-by:Daniel Bone <daniel.bone@imgtec.com>
-
- Feb 14, 2024
-
-
Knute authored
CC: @danbone closes #153 --------- Co-authored-by:Knute Lingaard <klingaard@mips.com>
-
- Feb 12, 2024
-
-
Aaron Chan authored
Forgot to add an assert to check that there is a dispatcher (thus a subsequent issue queue/execution unit) that can handle a target pipe of an instruction. If one forgets to define one, i.e you forget to define an execution unit to handle `DIV` target pipe, the simulator will end early, but no error will be thrown.
-
- Feb 08, 2024
-
-
Knute authored
Signed-off-by:Knute <56927209+klingaard@users.noreply.github.com>
-
Aaron Chan authored
This PR adds issue queue modeling to Olympia, by allowing users to define the number of issue queues, which execution units map to which issue queues, and which target pipes are supported for each execution unit. Regressions will fail until we merge [scoreboard fix](https://github.com/sparcians/map/pull/468 ) in Sparta. Old flow: dispatch -> executepipe->execute New flow: dispatch -> issue queue -> executepipe -> execute --------- Signed-off-by:
Aaron Chan <achn357@gmail.com>
-
jeffnye-gh authored
This isolates the Fusion API from the domain specific language. After an agreement on syntax the DSL would be added as an improvement to the API. --------- Co-authored-by:Jeff Nye <jeff@www.condorcomputing.com>
-
- Feb 05, 2024
-
-
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:Knute <56927209+klingaard@users.noreply.github.com>
-
- Feb 02, 2024
-
-
Kathlene Magnus authored
Improvements to Dromajo's STF tracing support require the latest version of the STF library.
-
- Feb 01, 2024
-
-
danbone authored
As part of #143 use MemoryAccessInfo as the standard transaction type for making memory requests outside of the core, instead of instructions. This paves way for adding an instruction cache, as well as prefetching and more complicated memory subsystems where requests do not always correspond to a particularly instruction. Changes are minor, mostly just renaming. Co-authored-by:Daniel Bone <daniel.bone@imgtec.com>
-
- Jan 12, 2024
-
-
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:
danbone <daniel.d.bone@gmail.com> Co-authored-by:
Daniel Bone <daniel.bone@imgtec.com>
-
- Jan 09, 2024
-
-
danbone authored
I noticed that the buffer empty termination checks weren't working as intended. Co-authored-by:Daniel Bone <daniel.bone@imgtec.com>
-
- Jan 06, 2024
-
-
Lehua Ding authored
Signed-off-by:Lehua Ding <lehua.ding@rivai.ai>
-
- Dec 21, 2023
-
-
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:
Suraj Shirvankar <surajshirvankar@gmail.com> Co-authored-by:
Knute Lingaard <klingaard@gmail.com>
-
- Dec 20, 2023
-
-
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:Knute Lingaard <klingaard@gmail.com>
-
- Dec 15, 2023
-
-
Knute authored
-
- Dec 14, 2023
-
-
Knute authored
Unfortunately my editor removed a lot of superfluous white space which makes this PR look big.
-
- Dec 08, 2023
-
-
Knute authored
Signed-off-by:Knute <56927209+klingaard@users.noreply.github.com>
-
Knute authored
Added restrictions on supported programming languages Signed-off-by:Knute <56927209+klingaard@users.noreply.github.com>
-
- Dec 06, 2023
-
-
Kunal-Buch authored
-> L2Cache can accept multiple requests from DCache and IL1. -> Cache functional model used is SimpleDL1. -> Configurable cache hit latency. -> Misses are forwarded to BIU and kept are tracked in the local buffer. -> Miss to the pending cacheline is not sent out to BIU. -> Backpressure handling for BIU credits. -> make regress clean. --------- Signed-off-by:
Kunal-Buch <145377279+Kunal-Buch@users.noreply.github.com> Co-authored-by:
Knute <56927209+klingaard@users.noreply.github.com>
-
Knute authored
Fixed a couple of things: 1. Issue 126: bad character in ALF file generated from missing raw string identifier for python: r"\1" 2. Added dependency in Makefile on the gen_alf.py script 3. Added error message when the MAP ALF generator cannot be found
-
- Dec 05, 2023
-
-
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:
Aaron Chan <achn357@gmail.com> Co-authored-by:
Knute <56927209+klingaard@users.noreply.github.com>
-
- Nov 14, 2023
-
-
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
-
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:jeff <jeffnye-gh@github.com>
-
- Nov 09, 2023
-
-
vineethkm authored
Change name of the SimpleDL1 class to a more generic name "SimpleCache3"
-
Suraj Shirvankar authored
-
-
- Nov 08, 2023
-
-
Knute Lingaard authored
First cut of applied Clang format and new build rules for it. We will slowly move each and every file over to the new formats. --------- Co-authored-by:Knute Lingaard <sparcians1@gmail.com>
-
- Oct 14, 2023
-
-
light2802 authored
Does not work yet. DO NOT MERGE --------- Co-authored-by:Knute Lingaard <Knute.Lingaard@sifive.com>
-
- Oct 13, 2023
-
-
Knute Lingaard authored
-
- Oct 09, 2023
-
-
Knute Lingaard authored
Removed some dead code as well. Added `void onStartingTeardown_() override {}` to the LSU in this PR as an example. This method is called every time just before the unit is destroyed -- either during an exception or a clean teardown.
-
- Oct 06, 2023
-
-
Knute Lingaard authored
Added new pipeline target: `f2i`. Fixed the JSONs to reflect the intended source/dest direction.
-
- Sep 28, 2023
-
-
Suraj Shirvankar authored
Clang-format config based on the style guide in #87 --------- Signed-off-by:Suraj Shirvankar <surajshirvankar@gmail.com>
-
Knute Lingaard authored
Signed-off-by:Knute Lingaard <knute.lingaard@sifive.com>
-