This midterm report will analyze the overall performances of our single-cycle
processor as well as our pipelined processor designs implemented with the MIPS
instruction set. Both designs are design to complete the same tasks, but with varying
performance results. The single cycle implementation will complete instruction sets
reliably with no repercussions of hazards, but at a slower maximum frequency. The
pipeline design completes the same tasks within a lower execution time than the single
cycle implementation but has to deal with the concepts of hazards. Ideally, the pipeline
design increases the throughput of the processor, while maintaining similar CPI as the
single-cycle counterpart. With the implementation of a hazard and forwarding unit, our
design also detects the presence of structural and data hazard and performs the correct
logical actions accordingly. To compare our designs, we are running a mergesort
assembly file. This file is beneficial as a benchmarking test because it requires reading
from and writing to memory, both R and I types of instructions, and has instructions that
rely on the result of the instruction immediately before, which is necessary to thoroughly
test the pipeline design.
The performance data gathered after running each processor to perform the
same task validates the intention of our designs. The pipeline’s maximum frequency
and highest achieved frequency is approximately twice that of the single cycle design,
with average instructions per cycle dropping to about half in comparison to the single
cycle. Because the pipeline deals with hazards through stalls, the average latency per
instruction is higher than the single cycle, and more resources are required to
synthesize the design on an FPGA board. Overall, however, the pipeline design
executes the process in less time than the single cycle, which is the outcome we are
after when implementing a pipelined processor design.
Processor Design
Single Cycle