Given a simple instruction set (RISC-V like), this project was aiming to create a virtual machine able to:
Translate provided assembly code to hexadecimal instructions;
Execute these instructions through registers, data memory and cache memory;
Extract performance indicators depending on cache memory architecture and different data management strategies;
Unit test every function.
Output
This image shows how many instructions per second the user's machine can execute depending on the different cache configuration, highlighting trends and peaks during execution.