MIPS instruction set and registers. Branching and procedure calls, addressing modes. Single cycle processor datapath. Single cycle control. Multicycle processor datapath. Multicycle control. Exceptions, interrupts. Pipelining. Pipelining hazards and stalls. Superscalar processor, out of order execution, Register renaming. IA-32 architecture. Memory system performance and hierarchy, caches. Memory system optimization, virtual memory. Memory mapped I/O.
This repository contains the following lab materials for the MIPS Assembly Language course:
In this lab, you will learn how to write and execute simple MIPS assembly language programs. You will explore the basic instructions and concepts of MIPS programming, such as data manipulation, arithmetic operations, and control flow.
Lab2 focuses on subprograms in MIPS assembly language programming. You will learn how to write and call subroutines, use stack operations, and pass arguments to functions. This lab will provide you with a deeper understanding of modular programming in MIPS.
This lab delves into advanced topics in MIPS assembly language programming. You will explore recursion, working with floating-point numbers, and implementing linked lists. Through hands-on exercises, you will gain experience in solving complex problems using MIPS assembly language.
Lab4 focuses on extending the single-cycle MIPS processor. You will learn about the components of the MIPS processor and how to modify them to add new functionalities. Additionally, you will experiment with SystemVerilog and the BASYS3 board to implement and test your modifications.
In this lab, you will explore the concept of pipelined microarchitecture in MIPS processors. You will understand the benefits of pipelining and implement a pipelined version of the MIPS processor. Through this lab, you will gain insights into the performance improvements achieved through pipeline stages.
Lab6 focuses on examining the impact of cache parameters and program factors on the cache hit rate. You will learn about cache memory organization and how various factors, such as cache size, associativity, and replacement policies, affect cache performance. You will also analyze different programs to understand their cache behavior.
In the final lab of this course, you will dive into programming the PIC32 microcontroller. You will learn how to write and run programs on the PIC32 platform, exploring its features and capabilities. This lab will provide you with practical experience in embedded systems programming using the PIC32 microcontroller.
Each lab folder contains the necessary code, documentation, and any additional resources required for completing the lab exercises. Feel free to explore the content, follow the provided instructions, and expand your knowledge of MIPS assembly language programming.
Please note that these lab materials are intended for educational purposes and should be used in conjunction with the course material and instructions provided by your instructor.