Georgia Institute of Technology

CS4290/CS6290/ECE4100/ECE6100

  • Do we have to worry about memory disambiguation problem in this assignment?
  • What should I use to find out memory instructions? Is checking mem_type sufficient or do I have to check opcode?
  • What will be the cache miss penalty? Is this KNOB_DCACHE_HIT_LATENCY+KNOB_MEM_LATENCY_ROW_HIT or just KNOB_MEM_LATENCY_ROW_HIT?
  • Do we need to implement store-load forwarding?
  • I see op->mem_read_size and op->mem_write_size , what are for?
  • I still can not understand what's the purpose of m_read_size and m_write_size? Is it being used to calculate the load_addr_end = load_addr_begin + m_read_size and calculate the store_addr_end = store_addr_begin + m_write_size?
  • What if load/store addresses are mapped into two different cache blocks (unaligned accesses)?
  • Do we need to translate virtual addresses to physical addresses?
  • Is the DCACHE pipelined ?
  • When an instruction can retire? Can it retire out of order?
  • Do non load/store instructions go through the MEM stage?
  • While the MEM stage is busy for dcache accesses do non load/store instructions still wait in the EXE stage?
  • A load instruction is in the MSHR. A new store instruction has the same memory address as the load instruction. Does the store instruction need to go to the MSHR?
  • Now multiple ops can be sent to the WB stage when memory requests are merged and later the memory request is serviced. However, the simulator frame can store only one op into the MEM stage latch. Can I (or should I) modify the MEM stage latch?
  • How to set up m_state in mem_req_s class ?
  • How to set up m_tye in mem_req_s class?
  • Do I still need to maintain data hazard and control hazard correctly?
  • A memory instruction generates a cache miss but because of MSHR full, the instruction cannot be stored inside the MSHR. How many times do we have to increment the cache miss counter?
  • Do we really need to retire store ops immediately or can we push them into the MSHR and retire them after a memory request comes back?