On 7/17/2013 7:44 AM, Arthur Perais wrote:
My understanding is that issueLat is the minimum number of cycles you
have to wait before scheduling an instruction of the same type on the
FU. Specifically, if opLat is 6 and issueLat is 1, you have a
pipelined unit with a latency of 6 cycles but you have a throughput of
1 op/cycle once the pipe is full.
Thanks for your clarification. So even all resource like operands/FUs
are available, the instruction still need to wait issueLat cycles before
execution, correct?
The delay between dispatch and issue indeed depends on how soon the
operands become ready wrt to contention (number of FUs, issue width).
The scheduler schedules oldest instruction first without regard for
the instruction type. Furthermore, there is not speculative
scheduling, meaning that if you increase issueToExecute to more than
one, you cannot schedule depending instructions back to back (correct
me if I'm wrong).
Is there any structure like dispatch queue, issue queue defined in gem5?
From textbook, after renaming, instruction will wait in dispatch queue
for operands. If operands become ready, it will go to issue queue
waiting for execution. I'm not sure if gem5 will simulate the contention
in issue queue.
Thanks again for any information.
Hope it helps.
Arthur.
Le 17/07/2013 03:03, Jianghao a écrit :
Take the following from config.ini file, my understanding is here we
defined 2 function units, both of them can execute IntMult and IntDiv
type of instructions, and opLat defines how many ticks need to
execute that instruction. Please correct me if my understanding is
wrong.
My confusion comes from the meaning of issueLat. Does it define the
latence from dispatch to issue? From my understanding about O3, after
instruction decoding/ renaming, if operands are ready, instruction
can be issued for execution. So that delay from dispatch to issue
should not be constant, which depends on the number of ready
instructions and the available execution units. Can anybody give me
some hints regarding gem5 implementation of the o3 scheduler part?
Really appreciate for any help.
[system.cpu.fuPool.FUList1]
type=FUDesc
children=opList0 opList1
count=2
opList=system.cpu.fuPool.FUList1.opList0
system.cpu.fuPool.FUList1.opList1
[system.cpu.fuPool.FUList1.opList0]
type=OpDesc
issueLat=1
opClass=IntMult
opLat=3
[system.cpu.fuPool.FUList1.opList1]
type=OpDesc
issueLat=12
opClass=IntDiv
opLat=12
_______________________________________________
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
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users