gem5

gem5

Description:

Work that I have done during my summer 2019 internship at the University of Illinois at Chicago. The project that I worked on is known as gem5.

About gem5
gem5 is an open simulation platform for computer system architecture research. gem5 consists of replicating systems through emulated simulation and full system simulation. gem5 is used to study the run times of simulated hardware and programs.

gem5 concepts:

Configuration scripts
Simulation objects
Event-driven programming
Adding parameters
Memory Objects
Cache Objects
Cache types: L1, L2, L3
Simulated Emulation
Full System Emulation
Etc

Computer Architecture:

Memory Bus
L1/L2/L3 Cache
ISA: ARM types, x86
Connections
Ports: data cache, instruction cache
Slave/Master
CPU architecture
Memory controller: random access memory
Etc

Programming & Tools:

Learned C++ & Python
Object-Oriented Programming in C++ & Python
Linking files with Python and C++ (.py/.cc/.hh)
Header files
Configuration files
Implementation files
SSH
Shell Scripting

My gem5 Repository

Full System Emulation Diagram

My 2019 Internship Report for gem5