This project implements simulation environment of Tomasulo Algorithm with Reorder Buffer. Tomasula Algorithm is dynamic hardware algorithm for dynamic scheduling of instructions by leveraging of multiple execution units with efficient out of order scheduling.
This algorithm uses Register Renaming, Common Data Bus, Reservation Station for every execution unit and Reorder Buffer structure to implement. This way we can eliminate data hazards such as read-after-write(RAW), write-after-write(WAW), and write-after-read(WAR).
This project contains
Architecture.pyimplements actual architectures of computersComponent.pyimplements required data structures for algorithmEntry.pydata structs which are used by Componentsmain.pystarts the simulation
There are input files as well.
Instructions.txtshows available instructionsProgram.txtinstructions which will be executedParameters.txtInstruction window and number of available registersUnits.txtavailable units in the architecture
And output file of simulation is Report.txt contains status of every structure cycle by cycle.
Make sure every file under same folder and run command below
python3 main.py
Every structure can be converted to hashtable which makes more improvement to access every entry. Instruction set can be expanded as well.