Currently, one RiscvMachine only runs one hart (RISC-V compatible hardware thread), but implementations of the RISC-V spec may support multiple harts. The interactions between harts and the restrictions on these interactions are currently not captured by this repository.
Discussing multithreading is opening a can of worms, because using multithreading, a given program can leave the processor in many different end states, depending on the order in which the instructions were executed.
This topic is similar to issue #25, where the spec allows multiple behaviors.
The following ideas came to my mind to implement multithreading.
- Try to implement the one to many step-relation of processor states.
- Choose an execution order when running a program. The ordering might be hardcoded or variable.
- Not implementing multithreading.
Currently, one
RiscvMachineonly runs one hart (RISC-V compatible hardware thread), but implementations of the RISC-V spec may support multiple harts. The interactions between harts and the restrictions on these interactions are currently not captured by this repository.Discussing multithreading is opening a can of worms, because using multithreading, a given program can leave the processor in many different end states, depending on the order in which the instructions were executed.
This topic is similar to issue #25, where the spec allows multiple behaviors.
The following ideas came to my mind to implement multithreading.