Hi, I am trying to Inorder 9 stage pipeline and it is stalling after the first few cycles.. This is the culprit as far as I managed to dig in by turning on traces..
The following snippets of the trace are from the same tick, one after another.. Initially it is trying to send a request to Dcache, it prints "In cache unit" and "Available slots" before allocating the slot, these two statements I had added to cpu/inorder/resources/cache_unit.cc getSlot(inst) function and cpu/inorder/resource.cc getSlot(inst) function. 45500: system.cpu.stage5: [tid:0]: [sn:7]: sending request to system.cpu.dcache_port. 45500: system.cpu.dcache_port: Before going to getslot 9 45500: system.cpu.dcache_port: In cache unit 45500: system.cpu.dcache_port: Available slots:9 45500: system.cpu.dcache_port: Allocating [slot:0] for [tid:0]: [sn:7] But the next time when getSlot is being called in resource.cc in the same tick, it does not print either of the two statements.. I am not sure what is the flow of the program, and why there should be a difference between two requests one after another.. 45500: system.cpu.stage5: [tid:0]: [sn:8]: sending request to system.cpu.dcache_port. 45500: system.cpu.dcache_port: Before going to getslot 8 45500: system.cpu.dcache_port: No slot available for [tid:0]: [sn:8] 45500: system.cpu.stage5: [tid:0]: [sn:8] request to system.cpu.dcache_port failed. Because the dcache port is never got by the instruction serial number 8, the flow of instruction gets stalled and the cpu goes to sleep for ever.. Could anyone suggest any reason for this apparent difference in behavior? Pritha
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users