Hi Wendy,
Thank you for your reply.
Will this loop in the memory controller occur when the system is idle?
I use the command "-c hello;hello;hello;hello” to run a Multi-core test in
gem5. But gem5 will not exit (I posted this bug before in
https://www.mail-archive.com/[email protected]/msg17921.html
<mailto:https://www.mail-archive.com/[email protected]/msg17921.html> ). And
then I saw this loop in debug info. I had thought the “not exit” bug is caused
by this loop. But you said that it is a normal event. So I try to add debug
flags "O3CPUAll,Drain “. By analyzing debug info, I think the “not exit” bug
occurs when all CPUs finish there work, and gem5 can’t schedule correctly.
As debug info shows below, the latest CPU info is "cpu1:idle! “. As I know,
gem5 will schedule other CPU to work if one CPU is idle, but there is no other
CPU to be scheduled. Then the system has nothing to do and becomes idle. Then
the memory controller loop event occurs.
I can't figure out what actually causes this bug and how to fix it. I hope to
get some information that can help fix it. Or those information can give some
hint to expert to fix it.
Thank you!
FullO3CPU: Ticking main, FullO3CPU.
22386000: system.cpu0.fetch: Running stage.
22386000: system.cpu0.fetch: There are no more threads available to fetch from.
22386000: system.cpu0.fetch: [tid:0] Fetch is waiting for a pending quiesce
instruction!
22386000: system.cpu0.decode: Processing [tid:0]
22386000: system.cpu0.decode: [tid:0] Not blocked, so attempting to run stage.
22386000: system.cpu0.decode: [tid:0] Nothing to do, breaking out early.
22386000: system.cpu0.rename: Processing [tid:0]
22386000: system.cpu0.rename: [tid:0] Free IQ: 63, Free ROB: 191, Free LQ: 33,
Free SQ: 33, FreeRM 31(218 200 255 31 1275)
22386000: system.cpu0.rename: [tid:0] 0 instructions not yet in ROB
22386000: system.cpu0.rename: calcFreeLQEntries: free lqEntries: 33,
loadsInProgress: 0, loads dispatchedToLQ: 0
22386000: system.cpu0.rename: [tid:0] Not blocked, so attempting to run stage.
22386000: system.cpu0.rename: [tid:0] Nothing to do, breaking out early.
22386000: system.cpu0.iew: Issue: Processing [tid:0]
22386000: system.cpu0.iew: [tid:0] Not blocked, so attempting to run dispatch.
22386000: system.cpu0.iew: Execute: Executing instructions from IQ.
22386000: system.cpu0.iew: Execute: Processing PC (0x4132e3=>0x4132e4).(0=>1),
[tid:0] [sn:32527].
22386000: global: Calling suspend on Thread Context 0
22386000: system.cpu0: [tid:0] Suspending Thread Context.
22386000: system.cpu0: [tid:0] Calling deactivate thread.
22386000: system.cpu0: [tid:0] Removing from active threads list
22386000: system.cpu0.iew: Current wb cycle: 0, width: 8, numInst: 0
wbActual:0
22386000: system.cpu0: Activity: 11
22386000: system.cpu0.iew: Sending instructions to commit, [sn:32527] PC
(0x4132e3=>0x4132e4).(0=>1).
22386000: system.cpu0.iq: Waking dependents of completed instruction.
22386000: system.cpu0.iq: Attempting to schedule ready instructions from the IQ.
22386000: system.cpu0.iq: Not able to schedule any instructions.
22386000: system.cpu0.iew: IQ has 64 free entries (Can schedule: 0). LQ has 0
free entries. SQ has 0 free entries.
22386000: system.cpu0: Activity: 10
22386000: system.cpu0: Idle!
22386000: system.cpu0: tryDrain() return false
22386000: system.cpu1:
·······
·······
·······
22475500: system.cpu1.commit: Getting instructions from Rename stage.
22475500: system.cpu1.commit: Trying to commit instructions in the ROB.
22475500: system.cpu1.commit: [tid:0] Can't commit, Instruction [sn:32149] PC
(0x4132e3=>0x4132e4).(0=>1) is head of ROB and not ready
22475500: system.cpu1.commit: [tid:0] ROB has 1 insts & 191 free entries.
22475500: global: DynInst: [sn:32148] Instruction destroyed. Instcount for
system.cpu1 = 2
22475500: system.cpu1: Activity: 10
22475500: system.cpu1: Scheduling next tick!
22475500: system.cpu1: tryDrain() return false
22476000: system.cpu1:
FullO3CPU: Ticking main, FullO3CPU.
22476000: system.cpu1.fetch: Running stage.
22476000: system.cpu1.fetch: There are no more threads available to fetch from.
22476000: system.cpu1.fetch: [tid:0] Fetch is waiting for a pending quiesce
instruction!
22476000: system.cpu1.decode: Processing [tid:0]
22476000: system.cpu1.decode: [tid:0] Not blocked, so attempting to run stage.
22476000: system.cpu1.decode: [tid:0] Nothing to do, breaking out early.
22476000: system.cpu1.rename: Processing [tid:0]
22476000: system.cpu1.rename: [tid:0] Free IQ: 63, Free ROB: 191, Free LQ: 33,
Free SQ: 33, FreeRM 31(218 200 255 31 1275)
22476000: system.cpu1.rename: [tid:0] 0 instructions not yet in ROB
22476000: system.cpu1.rename: calcFreeLQEntries: free lqEntries: 33,
loadsInProgress: 0, loads dispatchedToLQ: 0
22476000: system.cpu1.rename: [tid:0] Not blocked, so attempting to run stage.
22476000: system.cpu1.rename: [tid:0] Nothing to do, breaking out early.
22476000: system.cpu1.iew: Issue: Processing [tid:0]
22476000: system.cpu1.iew: [tid:0] Not blocked, so attempting to run dispatch.
22476000: system.cpu1.iew: Execute: Executing instructions from IQ.
22476000: system.cpu1.iew: Execute: Processing PC (0x4132e3=>0x4132e4).(0=>1),
[tid:0] [sn:32149].
22476000: global: Calling suspend on Thread Context 0
22476000: system.cpu1: [tid:0] Suspending Thread Context.
22476000: system.cpu1: [tid:0] Calling deactivate thread.
22476000: system.cpu1: [tid:0] Removing from active threads list
22476000: system.cpu1.iew: Current wb cycle: 0, width: 8, numInst: 0
wbActual:0
22476000: system.cpu1: Activity: 11
22476000: system.cpu1.iew: Sending instructions to commit, [sn:32149] PC
(0x4132e3=>0x4132e4).(0=>1).
22476000: system.cpu1.iq: Waking dependents of completed instruction.
22476000: system.cpu1.iq: Attempting to schedule ready instructions from the IQ.
22476000: system.cpu1.iq: Not able to schedule any instructions.
22476000: system.cpu1.iew: IQ has 64 free entries (Can schedule: 0). LQ has 0
free entries. SQ has 0 free entries.
22476000: system.cpu1: Activity: 10
22476000: system.cpu1: Idle!
22476000: system.cpu1: tryDrain() return false
23358750: system.mem_ctrls_1: Refresh due
23358750: system.mem_ctrls_1: Precharging all
23358750: system.mem_ctrls: Precharging bank 0, rank 1 at tick 23358750, now
got 7 active
23358750: system.mem_ctrls: Precharging bank 1, rank 1 at tick 23358750, now
got 6 active
23358750: system.mem_ctrls: Precharging bank 2, rank 1 at tick 23358750, now
got 5 active
23358750: system.mem_ctrls: Precharging bank 3, rank 1 at tick 23358750, now
got 4 active
23358750: system.mem_ctrls: Precharging bank 4, rank 1 at tick 23358750, now
got 3 active
23358750: system.mem_ctrls: Precharging bank 5, rank 1 at tick 23358750, now
got 2 active
23358750: system.mem_ctrls: Precharging bank 6, rank 1 at tick 23358750, now
got 1 active
23358750: system.mem_ctrls: Precharging bank 7, rank 1 at tick 23358750, now
got 0 active
23358750: system.mem_ctrls_0: Refresh due
23358750: system.mem_ctrls_0: Precharging all
23358750: system.mem_ctrls: Precharging bank 0, rank 0 at tick 23358750, now
got 7 active
23358750: system.mem_ctrls: Precharging bank 1, rank 0 at tick 23358750, now
got 6 active
23358750: system.mem_ctrls: Precharging bank 2, rank 0 at tick 23358750, now
got 5 active
23358750: system.mem_ctrls: Precharging bank 3, rank 0 at tick 23358750, now
got 4 active
23358750: system.mem_ctrls: Precharging bank 4, rank 0 at tick 23358750, now
got 3 active
23358750: system.mem_ctrls: Precharging bank 5, rank 0 at tick 23358750, now
got 2 active
23358750: system.mem_ctrls: Precharging bank 6, rank 0 at tick 23358750, now
got 1 active
23358750: system.mem_ctrls: Precharging bank 7, rank 0 at tick 23358750, now
got 0 active
23632500: system.mem_ctrls_1: Scheduling next request after refreshing rank 1
23632500: system.mem_ctrls: QoS Turnarounds selected state READ
23632500: system.mem_ctrls_0: Scheduling next request after refreshing rank 0
23632500: system.mem_ctrls: QoS Turnarounds selected state READ
31145000: system.mem_ctrls_0: Refresh due
31145000: system.mem_ctrls_0: All banks already precharged, starting refresh
31145000: system.mem_ctrls_1: Refresh due
31145000: system.mem_ctrls_1: All banks already precharged, starting refresh
31405000: system.mem_ctrls_1: Scheduling next request after refreshing rank 1
31405000: system.mem_ctrls: QoS Turnarounds selected state READ
31405000: system.mem_ctrls_0: Scheduling next request after refreshing rank 0
31405000: system.mem_ctrls: QoS Turnarounds selected state READ
······
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s