Without getting into the discussion of the underlying reason for doing this, I
would imagine that you could create a DebugCPU much like the CheckerCPU and use
functional read/write, but then I'd also suggest you remove any caches for
these CPUs. Fundamentally it should work...but as Steve already pointed out,
this is not at all what the send/recvFunctional is intended for.
Andreas
From: [email protected] [mailto:[email protected]] On
Behalf Of Amin Farmahini
Sent: 17 May 2012 06:17
To: gem5 users mailing list
Subject: Re: [gem5-users] Store Conditional fails using Functional accesses on
ARM SE
I intend to have a couple of O3 cores and a couple of Functional cores in one
system. a Functional core is supposed to execute one instruction every cycle
regardless of cache access latency. In this regard, it is somehow similar to
AtomicSimple. Anyways, since Timing and Atomic accesses cannot coexist, I was
thinking of using Functional access for the functional core. If you can think
of another approach, I would be glad to know.
Thanks,
Amin
PS: My final plan is to have a functional core that is able to execute a piece
of code (assigned to it by O3) in zero cycle. So the functional core is idle
most of times, but it is woken up by O3 to run a piece of code that should not
change the architected state of O3.
On Wed, May 16, 2012 at 10:48 PM, Steve Reinhardt
<[email protected]<mailto:[email protected]>> wrote:
Functional accesses are really intended for debugging, preloading data into the
memory system, and other things like that. They're not intended to support a
CPU model. Why are you trying to do that? There's no real advantage of using
them over atomic accesses.
Steve
On Wed, May 16, 2012 at 7:58 PM, Amin Farmahini
<[email protected]<mailto:[email protected]>> wrote:
Hi,
I am trying to write a cpu model that is very similar to AtomicSimple, but does
Functional memory accesses instead of Atomic accesses. So I defined a
FunctionalCPUPort class for icachePort and dcachePort and used the
sendFunctional(&packet) method to send packets through cache ports (instead of
sendAtomic(&packet)). TLB accesses are all functional as well. I ran a hello
world program to test it. It works fine until it reaches a storeCondReq memory
access. It gives me an assertion failure right after returning from
dcachePort.sendFunctional(&packet). the command for the packet is
MemCmd::StoreCondReq.
Here is the assertion failure:
gem5.debug: build/ARM/mem/request.hh:437: uint64_t Request::getExtraData()
const: Assertion `privateFlags.isSet(VALID_EXTRA_DATA)' failed.
I can see that loadlink request to the same address completes fine. That
loadlink request happens just a few cycles before this store conditional.
The same hello world program works without any problem on the AtomicSimple cpu.
Any idea why functional accesses of store conditional do not work?
configuration: ARM, SE, l2 caches
Thanks,
Amin
_______________________________________________
gem5-users mailing list
[email protected]<mailto:[email protected]>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
[email protected]<mailto:[email protected]>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users