The MIPS Processor project is a simulation of a simplified MIPS (Microprocessor without Interlocked Pipeline Stages) processor, implemented in C. This project helped me deepen my understanding of low-level computer architecture, assembly language, and processor design.
Purpose: Simulate a functional MIPS processor to understand instruction set architecture and computer organization.
Technology Used: C
Key Features:
Supports a subset of MIPS instructions
Implements instruction fetch, decode, execute, memory, and write-back stages
Register management and memory emulation
The processor simulation follows a simplified version of the MIPS architecture, performing the standard pipeline stages:
Instruction Fetch: Reads the next instruction from memory.
Decode: Breaks down the instruction to identify the operation and operands.
Execute: Performs the operation using arithmetic logic or memory access.
Memory: Accesses memory for load/store instructions.
Write-Back: Stores the result back into a register if necessary.
The implementation includes basic ALU (Arithmetic Logic Unit) operations, memory management, and branching instructions.
Instruction Handling: Carefully implemented the logic to correctly simulate MIPS instruction behavior.
Memory Management: Emulated memory using arrays and handled edge cases with memory bounds.
Debugging: Developed custom debugging messages to trace program flow and ensure correctness.
Expand instruction set to cover additional MIPS operations.
Implement pipelining with hazard detection and forwarding.
Develop a simple assembler to convert assembly code to machine code.
This project significantly enhanced my understanding of how processors execute instructions at a low level. It was a great learning experience in systems programming and computer architecture.