3838 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939 */
4040
41- #include " mem/mem_ctrl .hh"
41+ #include " mem/hetero_mem_ctrl .hh"
4242
4343#include " base/trace.hh"
4444#include " debug/DRAM.hh"
@@ -57,7 +57,7 @@ namespace gem5
5757namespace memory
5858{
5959
60- MemCtrl::MemCtrl (const MemCtrlParams &p) :
60+ HeteroMemCtrl::HeteroMemCtrl (const HeteroMemCtrlParams &p) :
6161 SimpleMemCtrl (p),
6262 nvm (p.nvm)
6363{
@@ -66,9 +66,9 @@ MemCtrl::MemCtrl(const MemCtrlParams &p) :
6666 writeQueue.resize (p.qos_priorities );
6767
6868 fatal_if (dynamic_cast <DRAMInterface*>(dram) == nullptr ,
69- " MemCtrl 's dram interface must be of type DRAMInterface.\n " );
69+ " HeteroMemCtrl 's dram interface must be of type DRAMInterface.\n " );
7070 fatal_if (dynamic_cast <NVMInterface*>(nvm) == nullptr ,
71- " MemCtrl 's nvm interface must be of type NVMInterface.\n " );
71+ " HeteroMemCtrl 's nvm interface must be of type NVMInterface.\n " );
7272
7373 // hook up interfaces to the controller
7474 dram->setCtrl (this , commandWindow);
@@ -88,7 +88,7 @@ MemCtrl::MemCtrl(const MemCtrlParams &p) :
8888}
8989
9090Tick
91- MemCtrl ::recvAtomic (PacketPtr pkt)
91+ HeteroMemCtrl ::recvAtomic (PacketPtr pkt)
9292{
9393 Tick latency = 0 ;
9494
@@ -104,7 +104,7 @@ MemCtrl::recvAtomic(PacketPtr pkt)
104104}
105105
106106bool
107- MemCtrl ::recvTimingReq (PacketPtr pkt)
107+ HeteroMemCtrl ::recvTimingReq (PacketPtr pkt)
108108{
109109 // This is where we enter from the outside world
110110 DPRINTF (MemCtrl, " recvTimingReq: request %s addr %#x size %d\n " ,
@@ -193,7 +193,7 @@ MemCtrl::recvTimingReq(PacketPtr pkt)
193193}
194194
195195void
196- MemCtrl ::processRespondEvent (MemInterface* mem_intr,
196+ HeteroMemCtrl ::processRespondEvent (MemInterface* mem_intr,
197197 MemPacketQueue& queue,
198198 EventFunctionWrapper& resp_event)
199199{
@@ -208,7 +208,7 @@ MemCtrl::processRespondEvent(MemInterface* mem_intr,
208208}
209209
210210MemPacketQueue::iterator
211- MemCtrl ::chooseNext (MemPacketQueue& queue, Tick extra_col_delay,
211+ HeteroMemCtrl ::chooseNext (MemPacketQueue& queue, Tick extra_col_delay,
212212 MemInterface* mem_int)
213213{
214214 // This method does the arbitration between requests.
@@ -246,7 +246,7 @@ MemCtrl::chooseNext(MemPacketQueue& queue, Tick extra_col_delay,
246246}
247247
248248std::pair<MemPacketQueue::iterator, Tick>
249- MemCtrl ::chooseNextFRFCFS (MemPacketQueue& queue, Tick extra_col_delay,
249+ HeteroMemCtrl ::chooseNextFRFCFS (MemPacketQueue& queue, Tick extra_col_delay,
250250 MemInterface* mem_intr)
251251{
252252
@@ -274,9 +274,9 @@ MemCtrl::chooseNextFRFCFS(MemPacketQueue& queue, Tick extra_col_delay,
274274
275275
276276Tick
277- MemCtrl ::doBurstAccess (MemPacket* mem_pkt, MemInterface* mem_intr)
277+ HeteroMemCtrl ::doBurstAccess (MemPacket* mem_pkt, MemInterface* mem_intr)
278278{
279- // mem_intr will be dram by default in MemCtrl
279+ // mem_intr will be dram by default in HeteroMemCtrl
280280
281281 // When was command issued?
282282 Tick cmd_at;
@@ -296,9 +296,9 @@ MemCtrl::doBurstAccess(MemPacket* mem_pkt, MemInterface* mem_intr)
296296}
297297
298298bool
299- MemCtrl ::memBusy (MemInterface* mem_intr) {
299+ HeteroMemCtrl ::memBusy (MemInterface* mem_intr) {
300300
301- // mem_intr in case of MemCtrl will always be dram
301+ // mem_intr in case of HeteroMemCtrl will always be dram
302302
303303 // check ranks for refresh/wakeup - uses busStateNext, so done after
304304 // turnaround decisions
@@ -324,41 +324,41 @@ MemCtrl::memBusy(MemInterface* mem_intr) {
324324}
325325
326326void
327- MemCtrl ::nonDetermReads (MemInterface* mem_intr)
327+ HeteroMemCtrl ::nonDetermReads (MemInterface* mem_intr)
328328{
329329 // mem_intr by default points to dram in case
330- // of MemCtrl , therefore, calling nonDetermReads
330+ // of HeteroMemCtrl , therefore, calling nonDetermReads
331331 // from SimpleMemCtrl using nvm interace
332332 SimpleMemCtrl::nonDetermReads (nvm);
333333}
334334
335335bool
336- MemCtrl ::nvmWriteBlock (MemInterface* mem_intr)
336+ HeteroMemCtrl ::nvmWriteBlock (MemInterface* mem_intr)
337337{
338338 // mem_intr by default points to dram in case
339- // of MemCtrl , therefore, calling nvmWriteBlock
339+ // of HeteroMemCtrl , therefore, calling nvmWriteBlock
340340 // from SimpleMemCtrl using nvm interface
341341 return SimpleMemCtrl::nvmWriteBlock (nvm);
342342}
343343
344344Tick
345- MemCtrl ::minReadToWriteDataGap ()
345+ HeteroMemCtrl ::minReadToWriteDataGap ()
346346{
347347 return std::min (dram->minReadToWriteDataGap (),
348348 nvm->minReadToWriteDataGap ());
349349}
350350
351351Tick
352- MemCtrl ::minWriteToReadDataGap ()
352+ HeteroMemCtrl ::minWriteToReadDataGap ()
353353{
354354 return std::min (dram->minWriteToReadDataGap (),
355355 nvm->minWriteToReadDataGap ());
356356}
357357
358358Addr
359- MemCtrl ::burstAlign (Addr addr, MemInterface* mem_intr) const
359+ HeteroMemCtrl ::burstAlign (Addr addr, MemInterface* mem_intr) const
360360{
361- // mem_intr will point to dram interface in MemCtrl
361+ // mem_intr will point to dram interface in HeteroMemCtrl
362362 if (mem_intr->getAddrRange ().contains (addr)) {
363363 return (addr & ~(Addr (mem_intr->bytesPerBurst () - 1 )));
364364 } else {
@@ -368,9 +368,9 @@ MemCtrl::burstAlign(Addr addr, MemInterface* mem_intr) const
368368}
369369
370370bool
371- MemCtrl ::pktSizeCheck (MemPacket* mem_pkt, MemInterface* mem_intr) const
371+ HeteroMemCtrl ::pktSizeCheck (MemPacket* mem_pkt, MemInterface* mem_intr) const
372372{
373- // mem_intr will point to dram interface in MemCtrl
373+ // mem_intr will point to dram interface in HeteroMemCtrl
374374 if (mem_pkt->isDram ()) {
375375 return (mem_pkt->size <= mem_intr->bytesPerBurst ());
376376 } else {
@@ -379,7 +379,7 @@ MemCtrl::pktSizeCheck(MemPacket* mem_pkt, MemInterface* mem_intr) const
379379}
380380
381381void
382- MemCtrl ::recvFunctional (PacketPtr pkt)
382+ HeteroMemCtrl ::recvFunctional (PacketPtr pkt)
383383{
384384 bool found;
385385
@@ -395,7 +395,7 @@ MemCtrl::recvFunctional(PacketPtr pkt)
395395}
396396
397397bool
398- MemCtrl ::allIntfDrained () const
398+ HeteroMemCtrl ::allIntfDrained () const
399399{
400400 // ensure dram is in power down and refresh IDLE states
401401 bool dram_drained = dram->allRanksDrained ();
@@ -406,7 +406,7 @@ MemCtrl::allIntfDrained() const
406406}
407407
408408DrainState
409- MemCtrl ::drain ()
409+ HeteroMemCtrl ::drain ()
410410{
411411 // if there is anything in any of our internal queues, keep track
412412 // of that as well
@@ -432,7 +432,7 @@ MemCtrl::drain()
432432}
433433
434434void
435- MemCtrl ::drainResume ()
435+ HeteroMemCtrl ::drainResume ()
436436{
437437 if (!isTimingMode && system ()->isTimingMode ()) {
438438 // if we switched to timing mode, kick things into action,
@@ -450,7 +450,7 @@ MemCtrl::drainResume()
450450}
451451
452452AddrRangeList
453- MemCtrl ::getAddrRanges ()
453+ HeteroMemCtrl ::getAddrRanges ()
454454{
455455 AddrRangeList ranges;
456456 ranges.push_back (dram->getAddrRange ());
0 commit comments