OOOOOOhhhh OK... I see what happened... I'm messing up myself basically.

When I was at MIPS we kept a different tree than from M5-dev. So when I
merged in the new code from when I was at MIPS, I basically overwrote the
'SerializeAfter' change for the O3 model. And since there wasnt (and still
isnt!) any o3-mips regression then that slipped in the cracks that that flag
had been updated....

With this coding push, hopefully we can fix that though. Nothing worse than
re-coding something you already had working!



On Tue, Apr 14, 2009 at 3:46 PM, Steve Reinhardt <ste...@gmail.com> wrote:

> I vaguely recall that at some point the single IsSerializing flag got
> replaced by the SerializeBefore and SerializeAfter flags to provide a little
> more fine-grain control... some instructions just need one or the other and
> some need both.
>
> Now that I've looked at 'hg annotate', your name is on the changeset that
> added these!  In fact, SeralizeBefore and Serialize after were added in
> addition to (not in place of) IsSerializing, and the isSerializing() method
> will return true if any of these three flags are set (though there are
> separate isSerializeBefore() and isSerializeAfter() methods now too).  This
> seems confusing to me: I think IsSerializing should be eliminated, and
> instructions marked IsSerializing should have one or both of the
> Before/After flags set.  The status quo could be a problem; for example, if
> O3 checks isSerializeBefore() and isSerializeAfter() but never checks
> isSerializing(), then an instruction marked IsSerializing will never
> actually serialize.
>
> Steve
>
>
>
> On Tue, Apr 14, 2009 at 11:17 AM, Korey Sewell <ksew...@umich.edu> wrote:
>
>> Thanks for the insight.
>>
>> Looks like O3 has moved from squashing after system call to marking a the
>> "SerializeAfter" flag for system calls.
>>
>> MIPS had system calls marked as "IsSerializing" which (from grep'ing
>> around) happens to be a flag that isn't even used in the code anymore
>> (delete?!).
>>
>>
>>
>> On Tue, Apr 14, 2009 at 1:57 PM, Steve Reinhardt <ste...@gmail.com>wrote:
>>
>>> The syscall instruction is marked as serializing, and it's up to the CPU
>>> model to look at that flag and do whatever (if anything) is necessary to
>>> make sure that any register or memory changes that happen in the syscall are
>>> seen by the subsequent instructions--typically this means flush the
>>> pipeline, if there is one.
>>>
>>> As far as modeling a latency, the time required for a syscall will vary
>>> by many orders of magnitude depending on what the syscall does, and other
>>> effects like icache and dcache pollution of the kernel code that's execute
>>> are basically impossible to estimate.  So the answer is that if you really
>>> care about syscall overheads, use FS mode.  Trying to do anything at all to
>>> make syscall overhead more accurate in SE mode is really pointless at best,
>>> and misleading at worst (IMO).
>>>
>>> The difference with TLB overheads is that they're needed to more
>>> accurately model the execution time of the user code as well, so leaving
>>> them out is a more fundamental issue with respect to the things that SE mode
>>> is actually designed to get right.
>>>
>>> Steve
>>>
>>> On Tue, Apr 14, 2009 at 10:38 AM, Korey Sewell <ksew...@umich.edu>wrote:
>>>
>>>> I'm pretty sure that was in the code a while back, but I can not locate
>>>> this currently in O3. Has this been removed?
>>>>
>>>> In SE mode, I would think squashing after a system call is necessary
>>>> because real system calls would need to save/restore context to Memory
>>>> before returning to user-mode execution since the OS would naturally use 
>>>> the
>>>> context on the CPU to service the syscall. M5 in SE mode just models that
>>>> the register return values get set correctly.
>>>>
>>>> However, in O3 speculative execution, there is no dependency kept
>>>> between what registers a system call might update and the next PC counters
>>>> of the system call.
>>>>
>>>> It would probably be unrealistic to keep that type of dependency in the
>>>> 1st place, so I'm wondering how does SE mode work for other ISAs if we
>>>> aren't squashing after system calls? Or are we just lucky there?
>>>>
>>>> And lastly, since we are incorporating timing for events like TLB
>>>> translation in SE mode wouldnt it also make sense to have some default
>>>> latency for system calls as well?
>>>>
>>>> --
>>>> ----------
>>>> Korey L Sewell
>>>> Graduate Student - PhD Candidate
>>>> Computer Science & Engineering
>>>> University of Michigan
>>>>
>>>> _______________________________________________
>>>> m5-dev mailing list
>>>> m5-dev@m5sim.org
>>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> m5-dev mailing list
>>> m5-dev@m5sim.org
>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>
>>>
>>
>>
>> --
>> ----------
>> Korey L Sewell
>> Graduate Student - PhD Candidate
>> Computer Science & Engineering
>> University of Michigan
>>
>> _______________________________________________
>> m5-dev mailing list
>> m5-dev@m5sim.org
>> http://m5sim.org/mailman/listinfo/m5-dev
>>
>>
>
> _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>
>


-- 
----------
Korey L Sewell
Graduate Student - PhD Candidate
Computer Science & Engineering
University of Michigan
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to