3838 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939 */
4040
41- #include " mem/mem_ctrl.hh"
42-
4341#include " base/trace.hh"
4442#include " debug/DRAM.hh"
4543#include " debug/Drain.hh"
4644#include " debug/MemCtrl.hh"
4745#include " debug/NVM.hh"
4846#include " debug/QOS.hh"
4947#include " mem/dram_interface.hh"
48+ #include " mem/mem_ctrl.hh"
5049#include " mem/mem_interface.hh"
5150#include " mem/nvm_interface.hh"
5251#include " sim/system.hh"
@@ -57,7 +56,7 @@ namespace gem5
5756namespace memory
5857{
5958
60- MemCtrl::MemCtrl (const MemCtrlParams &p) :
59+ HeteroMemCtrl::HeteroMemCtrl (const HeteroMemCtrlParams &p) :
6160 SimpleMemCtrl (p),
6261 nvm (p.nvm)
6362{
@@ -66,9 +65,9 @@ MemCtrl::MemCtrl(const MemCtrlParams &p) :
6665 writeQueue.resize (p.qos_priorities );
6766
6867 fatal_if (dynamic_cast <DRAMInterface*>(dram) == nullptr ,
69- " MemCtrl 's dram interface must be of type DRAMInterface.\n " );
68+ " HeteroMemCtrl 's dram interface must be of type DRAMInterface.\n " );
7069 fatal_if (dynamic_cast <NVMInterface*>(nvm) == nullptr ,
71- " MemCtrl 's nvm interface must be of type NVMInterface.\n " );
70+ " HeteroMemCtrl 's nvm interface must be of type NVMInterface.\n " );
7271
7372 // hook up interfaces to the controller
7473 dram->setCtrl (this , commandWindow);
@@ -88,7 +87,7 @@ MemCtrl::MemCtrl(const MemCtrlParams &p) :
8887}
8988
9089Tick
91- MemCtrl ::recvAtomic (PacketPtr pkt)
90+ HeteroMemCtrl ::recvAtomic (PacketPtr pkt)
9291{
9392 Tick latency = 0 ;
9493
@@ -104,7 +103,7 @@ MemCtrl::recvAtomic(PacketPtr pkt)
104103}
105104
106105bool
107- MemCtrl ::recvTimingReq (PacketPtr pkt)
106+ HeteroMemCtrl ::recvTimingReq (PacketPtr pkt)
108107{
109108 // This is where we enter from the outside world
110109 DPRINTF (MemCtrl, " recvTimingReq: request %s addr %#x size %d\n " ,
@@ -193,7 +192,7 @@ MemCtrl::recvTimingReq(PacketPtr pkt)
193192}
194193
195194void
196- MemCtrl ::processRespondEvent (MemInterface* mem_intr,
195+ HeteroMemCtrl ::processRespondEvent (MemInterface* mem_intr,
197196 MemPacketQueue& queue,
198197 EventFunctionWrapper& resp_event)
199198{
@@ -208,7 +207,7 @@ MemCtrl::processRespondEvent(MemInterface* mem_intr,
208207}
209208
210209MemPacketQueue::iterator
211- MemCtrl ::chooseNext (MemPacketQueue& queue, Tick extra_col_delay,
210+ HeteroMemCtrl ::chooseNext (MemPacketQueue& queue, Tick extra_col_delay,
212211 MemInterface* mem_int)
213212{
214213 // This method does the arbitration between requests.
@@ -246,7 +245,7 @@ MemCtrl::chooseNext(MemPacketQueue& queue, Tick extra_col_delay,
246245}
247246
248247std::pair<MemPacketQueue::iterator, Tick>
249- MemCtrl ::chooseNextFRFCFS (MemPacketQueue& queue, Tick extra_col_delay,
248+ HeteroMemCtrl ::chooseNextFRFCFS (MemPacketQueue& queue, Tick extra_col_delay,
250249 MemInterface* mem_intr)
251250{
252251
@@ -274,9 +273,9 @@ MemCtrl::chooseNextFRFCFS(MemPacketQueue& queue, Tick extra_col_delay,
274273
275274
276275Tick
277- MemCtrl ::doBurstAccess (MemPacket* mem_pkt, MemInterface* mem_intr)
276+ HeteroMemCtrl ::doBurstAccess (MemPacket* mem_pkt, MemInterface* mem_intr)
278277{
279- // mem_intr will be dram by default in MemCtrl
278+ // mem_intr will be dram by default in HeteroMemCtrl
280279
281280 // When was command issued?
282281 Tick cmd_at;
@@ -296,9 +295,9 @@ MemCtrl::doBurstAccess(MemPacket* mem_pkt, MemInterface* mem_intr)
296295}
297296
298297bool
299- MemCtrl ::memBusy (MemInterface* mem_intr) {
298+ HeteroMemCtrl ::memBusy (MemInterface* mem_intr) {
300299
301- // mem_intr in case of MemCtrl will always be dram
300+ // mem_intr in case of HeteroMemCtrl will always be dram
302301
303302 // check ranks for refresh/wakeup - uses busStateNext, so done after
304303 // turnaround decisions
@@ -324,41 +323,41 @@ MemCtrl::memBusy(MemInterface* mem_intr) {
324323}
325324
326325void
327- MemCtrl ::nonDetermReads (MemInterface* mem_intr)
326+ HeteroMemCtrl ::nonDetermReads (MemInterface* mem_intr)
328327{
329328 // mem_intr by default points to dram in case
330- // of MemCtrl , therefore, calling nonDetermReads
329+ // of HeteroMemCtrl , therefore, calling nonDetermReads
331330 // from SimpleMemCtrl using nvm interace
332331 SimpleMemCtrl::nonDetermReads (nvm);
333332}
334333
335334bool
336- MemCtrl ::nvmWriteBlock (MemInterface* mem_intr)
335+ HeteroMemCtrl ::nvmWriteBlock (MemInterface* mem_intr)
337336{
338337 // mem_intr by default points to dram in case
339- // of MemCtrl , therefore, calling nvmWriteBlock
338+ // of HeteroMemCtrl , therefore, calling nvmWriteBlock
340339 // from SimpleMemCtrl using nvm interface
341340 return SimpleMemCtrl::nvmWriteBlock (nvm);
342341}
343342
344343Tick
345- MemCtrl ::minReadToWriteDataGap ()
344+ HeteroMemCtrl ::minReadToWriteDataGap ()
346345{
347346 return std::min (dram->minReadToWriteDataGap (),
348347 nvm->minReadToWriteDataGap ());
349348}
350349
351350Tick
352- MemCtrl ::minWriteToReadDataGap ()
351+ HeteroMemCtrl ::minWriteToReadDataGap ()
353352{
354353 return std::min (dram->minWriteToReadDataGap (),
355354 nvm->minWriteToReadDataGap ());
356355}
357356
358357Addr
359- MemCtrl ::burstAlign (Addr addr, MemInterface* mem_intr) const
358+ HeteroMemCtrl ::burstAlign (Addr addr, MemInterface* mem_intr) const
360359{
361- // mem_intr will point to dram interface in MemCtrl
360+ // mem_intr will point to dram interface in HeteroMemCtrl
362361 if (mem_intr->getAddrRange ().contains (addr)) {
363362 return (addr & ~(Addr (mem_intr->bytesPerBurst () - 1 )));
364363 } else {
@@ -368,9 +367,9 @@ MemCtrl::burstAlign(Addr addr, MemInterface* mem_intr) const
368367}
369368
370369bool
371- MemCtrl ::pktSizeCheck (MemPacket* mem_pkt, MemInterface* mem_intr) const
370+ HeteroMemCtrl ::pktSizeCheck (MemPacket* mem_pkt, MemInterface* mem_intr) const
372371{
373- // mem_intr will point to dram interface in MemCtrl
372+ // mem_intr will point to dram interface in HeteroMemCtrl
374373 if (mem_pkt->isDram ()) {
375374 return (mem_pkt->size <= mem_intr->bytesPerBurst ());
376375 } else {
@@ -379,7 +378,7 @@ MemCtrl::pktSizeCheck(MemPacket* mem_pkt, MemInterface* mem_intr) const
379378}
380379
381380void
382- MemCtrl ::recvFunctional (PacketPtr pkt)
381+ HeteroMemCtrl ::recvFunctional (PacketPtr pkt)
383382{
384383 bool found;
385384
@@ -395,7 +394,7 @@ MemCtrl::recvFunctional(PacketPtr pkt)
395394}
396395
397396bool
398- MemCtrl ::allIntfDrained () const
397+ HeteroMemCtrl ::allIntfDrained () const
399398{
400399 // ensure dram is in power down and refresh IDLE states
401400 bool dram_drained = dram->allRanksDrained ();
@@ -406,7 +405,7 @@ MemCtrl::allIntfDrained() const
406405}
407406
408407DrainState
409- MemCtrl ::drain ()
408+ HeteroMemCtrl ::drain ()
410409{
411410 // if there is anything in any of our internal queues, keep track
412411 // of that as well
@@ -432,7 +431,7 @@ MemCtrl::drain()
432431}
433432
434433void
435- MemCtrl ::drainResume ()
434+ HeteroMemCtrl ::drainResume ()
436435{
437436 if (!isTimingMode && system ()->isTimingMode ()) {
438437 // if we switched to timing mode, kick things into action,
@@ -450,7 +449,7 @@ MemCtrl::drainResume()
450449}
451450
452451AddrRangeList
453- MemCtrl ::getAddrRanges ()
452+ HeteroMemCtrl ::getAddrRanges ()
454453{
455454 AddrRangeList ranges;
456455 ranges.push_back (dram->getAddrRange ());
0 commit comments