Memory Objects in Gem5


Q&A

  • How does the memory request generated?
    • From CPU: system.cpu = TimingSimpleCPU()
    • see src/cpu/simple/timing.hh/cc
    • CPU Ports: I/DcachePort -> TimingCPUPort -> MasterPort`
    • Instruction Fetch request:
      • TimingSimpleCPU::advanceInst >> fetch() >> thread->itb->translateTiming >> translateTiming.finish() >> sendFetch
      • TimingSimpleCPU::schedule >> fetch() >> … >> sendFetch
    • Instruction Fetch response:
      • TimingSimpleCPU::IcachePort::recvTimingResp >> tickEvent.schedule >> cpu->schedule ?
    • Instruction Exec:
      • ?
  • What is the binary to be executed in the simple mem object simulation?
    • tests/test-progs/hello/bin/x86/linux/hello
  • How does binary loaded?

Reference 1

An example memory

System with a simple memory object which sits between CPU and memory bus

simple memory system

A simple master-slave interaction when both can accept the request and response:

normal

Simple master-slave interaction when slave is busy:

slave-busy

Simple master-slave interaction when master is busy:

master-busy

Overview of all the ports for the simple memory object:

ports overview

Created Jun 18, 2020 // Last Updated Jun 18, 2020

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?