In this particular case, the functional accesses you're seeing are from the syscall emulation layer. If a syscall needs to update memory (e.g., you called read()) then it uses functional accesses because all of this happens instantaneously and you don't know what other accesses may be in-flight from other processors if you're in timing mode.
Steve On Wed, Jun 9, 2010 at 7:53 AM, Ali Saidi <sa...@umich.edu> wrote: > > From the Wiki: > Access Types > > There are three types of accesses supported by the ports. > > 1. Timing - Timing accesses are the most detailed access. They reflect > our best effort for realistic timing and include the modeling of queuing > delay and resource contention. Once a timing request is successfully sent > at some point in the future the device that sent the request will either > get the response or a NACK if the request could not be completed (more > below). Timing and Atomic accesses can not coexist in the memory system. > 2. Atomic - Atomic accesses are a faster than detailed access. They are > used for fast forwarding and warming up caches and return an approximate > time to complete the request without any resource contention or queuing > delay. When a atomic access is sent the response is provided when the > function returns. Atomic and timing accesses can not coexist in the memory > system. > 3. Functional - Like atomic accesses functional accesses happen > instantaneously, but unlike atomic accesses they can coexist in the memory > system with atomic or timing accesses. Functional accesses are used for > things such as loading binaries, examining/changing variables in the > simulated system, and allowing a remote debugger to be attached to the > simulator. The important note is when a functional access is received by a > device, if it contains a queue of packets all the packets must be searched > for requests or responses that the functional access is effecting and they > must be updated as appropriate. The Packet::intersect() and fixPacket() > methods can help with this. > > Ali > > > On Wed, 09 Jun 2010 13:55:02 +0200, Maximilien Breughe > <maximilien.breu...@elis.ugent.be> wrote: >> Hi, >> >> After running some (spec2006 and MiBench) benchmarks I noticed the >> following: >> Most of the time a memory request packet triggers the "doAtomicAccess" >> function. However sometimes "doFunctionalAccess" is called. >> I noticed the latter happens after a syscall. >> What's the philosophy behind it? >> >> Max >> On 06/07/2010 10:09 AM, Maximilien Breughe wrote: >>> Thanks, >>> >>> I got it =), it was easier than I thought ;) >>> >>> Regards, >>> Max >>> On 06/04/2010 06:35 PM, Korey Sewell wrote: >>>> Thanks Lisa. >>>> >>>> I should've payed more attention to his configuration: "I'm running >>>> one core, with one thread, split level 1 caches and physical memory." >>>> >>>> MSHRs arent really a big deal in that case. >>>> >>>> Max, >>>> if you just go into the physical memory object and create relevant >>>> read/write statistics you can be sure of the values you get. >>>> >>>> On Fri, Jun 4, 2010 at 12:23 PM, Lisa Hsu <h...@eecs.umich.edu >>>> <mailto:h...@eecs.umich.edu>> wrote: >>>> >>>> I assume the InOrderCPU has blocking caches in which case you >>>> will definitely have no mshr hits, since each core only has one >>>> outstanding memory request at a time. >>>> >>>> Lisa >>>> >>>> >>>> On Fri, Jun 4, 2010 at 12:46 AM, Maximilien Breughe >>>> <maximilien.breu...@elis.ugent.be >>>> <mailto:maximilien.breu...@elis.ugent.be>> wrote: >>>> >>>> Korey, >>>> >>>> Could it be that in the InOrderCPU, all mshr accesses are >>>> misses? But only for the dcache. >>>> I have over a hundred traces of programs that have executed >>>> more than 140 million instructions all showing the same >>>> thing: overall_mshr_hits=0. >>>> The overal_misses of the dcache equals overall_mshr_misses of >>>> the dcache. >>>> >>>> If it would help I could send my config-file. >>>> This entry in the config-file says that I do have mshrs for >>>> the dcache: >>>> [system.cpu.dcache] >>>> ..... >>>> mshrs=10 >>>> ..... >>>> >>>> Regards, >>>> Max >>>> >>>> On 06/03/2010 03:08 PM, Korey Sewell wrote: >>>>> >>>>> The number of memory writes will be more difficult to >>>>> calculate: it equals [number of evicted cache lines that >>>>> were written] plus [number of data cache > WriteReq_misses]. >>>>> >>>>> Check the stats for "MSHR" misses there (and corresponding >>>>> code if you want to know when that gets updated). Y >>>>> >>>>> You could technically have a miss to the same block that a >>>>> MSHR is handling, so that "miss" is kind of being >>>>> double-serviced so to speak. >>>>> >>>>> -- >>>>> - Korey >>>>> >>>>> >>>>> _______________________________________________ >>>>> m5-users mailing list >>>>> m5-users@m5sim.org <mailto:m5-users@m5sim.org> >>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >>>> >>>> >>>> _______________________________________________ >>>> m5-users mailing list >>>> m5-users@m5sim.org <mailto:m5-users@m5sim.org> >>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >>>> >>>> >>>> >>>> _______________________________________________ >>>> m5-users mailing list >>>> m5-users@m5sim.org <mailto:m5-users@m5sim.org> >>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >>>> >>>> >>>> >>>> >>>> -- >>>> - Korey >>>> >>>> >>>> _______________________________________________ >>>> m5-users mailing list >>>> m5-users@m5sim.org >>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >>> >>> >>> _______________________________________________ >>> m5-users mailing list >>> m5-users@m5sim.org >>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > _______________________________________________ > m5-users mailing list > m5-users@m5sim.org > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > _______________________________________________ m5-users mailing list m5-users@m5sim.org http://m5sim.org/cgi-bin/mailman/listinfo/m5-users