Hello,

I am having the following infrastructure:

system.l2 = l2cache
system.tol2bus = CoherentBus()
system.l2.cpu_side = system.tol2bus.master
system.l2.mem_side = system.membus.slave

system.cpu.addPrivateSplitL1Caches(icache, dcache)
system.cpu.createInterruptController()
system.cpu.connectAllPorts(system.tol2bus, system.membus)

system.secondCpu.addPrivateSplitL1Caches(newicache, newdcache)
system.secondCpu.createInterruptController()
system.secondCpu.connectAllPorts(system.tol2bus, system.membus)

So I have 2 cpus with private L1 caches. I am able to switch between these 
cpus. I am also aware that when one cpu is left idle, its cache remains 
coherent.

What I want now is this:

Lets assume cpuA starts running and then it switched to cpuB. Its cache will 
hold some data, and I want whenever cpuB makes a read request in its own cache, 
then to duplicate that request and send it also to cacheA (that of cpuA). In 
that way, cacheA for example will always kept warm and hold the updated values.

Can you give me a hint on where to look at or a different approach?

Another example is this: 

If my caches are, say, 32kB large.The application is working on an array of 
32kB, so it fits in the cache. Then I switch from core B to core A. Now cache A 
also gets filled up
with the data. However, say the application moves on to a second array of 32kB. 
Slowly cache A fills up with the second array, but cache B wll still hold the 
first array and
nothing from the second.

So the way I am thinking it is that somehow I should update the value in the 
idle cpu, and one way is by duplicating the request in that cpu, too.
(and maybe ignore the response from that cpu).
Any hint?

Thanks,
Ignatios

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

Reply via email to