Info

MIPSim is available on Github here.


Story

The culmination of my computer engineering degree was a course in advanced computer organization. In this course, everything we had learned about processor manufacturing, optimization, and architecture throughout our 4 years was brought together. We then take all of that and put it together in a RISC processor simulator, in this case simulating a MIPS processor.

This project was not only a culmination of my computer engineering degree, but also a test of my general computer science skill. The simulator takes into account everything from text processing to arithmetic operations to complex memory operations. The project was centered around not only simulating code as it would run on the real-world processor, but being able to benchmark it against different cache strategies. It proved to be an excellent test of my knowledge of these concepts as well as a challenging programming project.


Outcome

Overall, this was a fascinating project for me. From an electrical and computer engineering standpoint, it was interesting to intentionally think out the processor lifecycle. Every clock tick means something, and when you write it out in actual code, you learn a lot about why things are the way they are and how optimization comes into play. From a computer science perspective, it was a challenging but not impossible task that tested the limits of my debugging skill. Counting clock cycles is more difficult than it might seem, and I learned a ton about event ordering, which then quickly got put to use in my web development career. Simply enough, I was a much more qualified engineer when I finished this project than when I started it.