On Jun 26, 2008, at 7:01 PM, Rick Strong wrote: > Hi all, > > I have some questions about quiesce: > > 1) If using just quiesce (without cycles or ns ... etc), m5sim.org > states that an interrupt is the means of waking up the core. Can any > interrupt be used or must there be a specific one? Also, for an > interrupt to schedule the tick() call after the quiesce call, which > lines of code are actually called after the interrupt is received to > reschedule the tick event? Any interrupt will wake the core. You can think of quiesce as an indication that the CPU has nothing to do. In the case of the Linux kernel the scheduler has called default_idle() on the cpu where it either spins of a tight loop or get put into a lower power state depending on the cpu/architecture. When an interrupt occurs an the IntrControl object processes it and it calls cpu->post_interrupt() the specific CPUs implementation then does the right thing. In the case of a simple CPU if it was suspended it calls thread->activate() which ultimately calls cpu->activateContext() which will reschedule the tick event if it's not scheduled. > > > 2) When src/cpu/o3/cpu:activateContext calls fetch.wakeFromQuiesce(), > why is code line "fetchStatus[0] = Running" hard coded to zero instead > of using a thread id which is available in activateContext()? I assume > this means that we are only able to wake up thread 0? Maybe Korey or Kevin will be able to help you here, I don't know. > > > 3) What is the ozone cpu code all about? I found this section > confusing > as it also has its own implementations of activateContext() and > wakeFromQuiesce() It is meant to be a fast out-of-order core, but to my knowledge Kevin never completed it.
Ali _______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
