The TLBs and CPUs have support for delaying the completion of translation. You'd want to delay all the time, and if you're using an ISA that already does this (Arm or X86) then you'd decide whether to delay based on the TLB access latency in the case of a hit, or waiting for memory in the case of a miss. You'd essentially be making the TLB more like a device with an internal state machine, timing, and events.

Gabe

Quoting Jiachen Xue <[email protected]>:

Hi,

My situation is that I am increasing the size of TLB so that the access to
TLB will not fit into one cycle. Say, the TLB can be divided into two parts,
each part can be accessed within one cycle. The lookup process now becomes
as follows:

1. If fetch hits in the first half, proceed as normals.
2. If miss in the first half, now I need to look into the second half.

If I need to look into the second half, from what I understand, I need to
schedule a new fetch event in the next cycle. So, is it correct to add
something like:

cpu->schedule(finishTranslationEvent, cpu->nextCycle(curTick() +
cpu->ticks(1)))

as appeared in line 745 in cpu/o3/fetch_impl.hh.

Thanks,

--
Sincerely,
Jiachen Xue



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

Reply via email to