Hi,

My colleague and I solved the problem by looking at the cache unit. When a request is finished, the cache wakes up the CPU (if it was sleeping). We did the same for the Multiply Divide Unit: after the mul/div gets execute the MDU wakes up the CPU.

By adding the following line to the function MultDivUnit::exeMulDiv(), the CPU starts executing instructions again:
cpu->wakeCPU();

Greets,

Maximilien


On 06/28/2011 11:02 AM, Maximilien Breughe wrote:
Hi all,

I was playing around with the latency parameters of the MultDiv Unit of the inorder CPU: multLatency, div8Latency, ... Everything works fine for latencies up to 11. However, when you want higher latencies the simulator crashes ("simulate() limit reached"). For some reason the CPU starts being idle after 11 cycles waiting for the MDU to finish and doesn't wake up anymore.

Does anybody have a clue why multiply/divide latencies above 11 could cause a problem?

Kind regards and thanks in advance,

Maximilien
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to