Hi Taiyu,
Looks like you have a single memory controller with 2 ranks instantiated.

  *   The log flags labeled system.mem_ctrls are for general controller messages
  *   The log flags labeled system.mem_ctrls_0 relate to rank 0 specific info
  *   The log flags labeled system.mem_ctrls_1 relate to rank 1 specific info

The messages in the log file included are for DRAM maintenance operations, 
specifically a refresh command. This is required periodically to maintain the 
bit cell contents. The messages seem to be occurring at the normal intervals, 
with the delays that are defined for a DDR3 device. The refresh command takes 
260ns and is issued every 7.8us, which is in-line with the DDR3 configuration 
and DRAM requirements. What is missing is read/write activity in between these 
refresh operations. It appears that the controller is not receiving any 
read/write requests but more info is needed to fully debug.

Thanks,
Wendy

From: Taiyu Zhou via gem5-users <gem5-users@gem5.org>
Reply-To: gem5 users mailing list <gem5-users@gem5.org>
Date: Friday, July 10, 2020 at 4:18 AM
To: "gem5-users@gem5.org" <gem5-users@gem5.org>
Cc: Taiyu Zhou <645505...@qq.com>
Subject: [gem5-users] Infinite loop in memory controller

Hi guys!
I run a Muti-thread program in gem5 with O3CPU but it will not exit.

./build/X86/gem5.opt --debug-flags=DRAM,BaseXBar,DRAMState,DRAMPower 
configs/example/se.py \
--cpu-type=DerivO3CPU --sys-clock=4GHz \
-c /home/ubuntu/taiyu/test_app/sps_t -o 2 -n 3 \
--caches --l2cache --l1d_size=64kB --l1i_size=32kB --l2_size=2048kB 
--l2_assoc=8 --mem-size=16GB


And I found there is infinite loop in it.
“
198144750000: system.mem_ctrls: QoS Turnarounds selected state READ
198144750000: system.mem_ctrls: Rank 0 is not available
198144750000: system.mem_ctrls_0: Scheduling power event at 198144750000 to 
state 0
198144750000: system.mem_ctrls_0: Refresh done at 198144750000 and next refresh 
at 198152290000
198144750000: system.mem_ctrls_0: Was refreshing for 260000 ticks
198144750000: system.mem_ctrls_0: Scheduling next request after refreshing rank 0
198144750000: system.mem_ctrls_0: All banks precharged
198144750000: system.mem_ctrls: QoS Turnarounds selected state READ
198152276250: system.mem_ctrls_0: Refresh due
198152276250: system.mem_ctrls_0: All banks already precharged, starting refresh
198152276250: system.mem_ctrls_0: Scheduling power event at 198152276250 to 
state 1
198152276250: system.mem_ctrls_0: Refreshing
198152276250: system.mem_ctrls_0: 158521821,REF,0,0
198152276250: system.mem_ctrls_1: Refresh due
198152276250: system.mem_ctrls_1: All banks already precharged, starting refresh
198152276250: system.mem_ctrls_1: Scheduling power event at 198152276250 to 
state 1
198152276250: system.mem_ctrls_1: Refreshing
198152276250: system.mem_ctrls_1: 158521821,REF,0,1
198152536250: system.mem_ctrls_1: Scheduling power event at 198152536250 to 
state 0
198152536250: system.mem_ctrls_1: Refresh done at 198152536250 and next refresh 
at 198160076250
198152536250: system.mem_ctrls_1: Was refreshing for 260000 ticks
198152536250: system.mem_ctrls_1: Scheduling next request after refreshing rank 
1
198152536250: system.mem_ctrls_1: All banks precharged
198152536250: system.mem_ctrls: QoS Turnarounds selected state READ
198152536250: system.mem_ctrls: Rank 0 is not available
198152536250: system.mem_ctrls_0: Scheduling power event at 198152536250 to 
state 0
198152536250: system.mem_ctrls_0: Refresh done at 198152536250 and next refresh 
at 198160076250
198152536250: system.mem_ctrls_0: Was refreshing for 260000 ticks
198152536250: system.mem_ctrls_0: Scheduling next request after refreshing rank 0
198152536250: system.mem_ctrls_0: All banks precharged
198152536250: system.mem_ctrls: QoS Turnarounds selected state READ
198160062500: system.mem_ctrls_0: Refresh due
198160062500: system.mem_ctrls_0: All banks already precharged, starting refresh
198160062500: system.mem_ctrls_0: Scheduling power event at 198160062500 to 
state 1
198160062500: system.mem_ctrls_0: Refreshing
198160062500: system.mem_ctrls_0: 158528050,REF,0,0
198160062500: system.mem_ctrls_1: Refresh due
198160062500: system.mem_ctrls_1: All banks already precharged, starting refresh
198160062500: system.mem_ctrls_1: Scheduling power event at 198160062500 to 
state 1
198160062500: system.mem_ctrls_1: Refreshing
198160062500: system.mem_ctrls_1: 158528050,REF,0,1

“
 And are there any hint about why this infinite loop happen?What this event is 
doing? Why are there three memory controller system.mem_ctrls, 
system.mem_ctrls_0 and system.mem_ctrls_1?


IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to