[ros-dev] RE: [ion] 19742: -
ImplementRtlPrefectMemoryNonTemporal.Patch by Patrick
Baggett<email@example.com> and myself.
ionucu at videotron.ca
Wed Nov 30 01:16:19 CET 2005
Ge van Geldorp wrote:
>>From: Alex Ionescu
>>Ge van Geldorp wrote:
>>>Is this routine so time-critical that we want to resort to
>>Yup, and there are many more cases where NT does this:
>>- Syscall vs INT2e
>>- Cmpxch8 vs cmpxchg x2 + spinlock
>>- XMMI Page Zeroing vs regular Page Zeroing
>>And I'm probably missing more. There are critical APIs that
>>would be very slow should the check be done each time they are called.
>I'm not arguing that we should ban self-modifying code in every case (and I
>certainly don't intend to start a vote on it ;-)), the SYSCALL v. INT2E case
>is a prime example of where it is useful. However, I was talking about "THIS
>routine". Frankly, I don't buy that a routine that is not even called right
>now (it was UNIMPLEMENTED()) is so time-critical that we need this. It kills
>ROMability of the code, effectively shutting us out of the embedded market
>that some people had rather high hopes for.
This is a very good point, but I think there are much bigger problems
then this to get NT loading on a ROM. And a machine with a ROM wouldn't
support this function in either case, so it's a moot point in the end.
This routine is pretty new and that's why it's not called, but from what
I've read on SSE, prefetching is supposed to be an ultra-time critical
operation and the API can be called recursively a large number of times.
It was my opinion that maximing the speed was a good choice. When I
studied the routine under Windows and I saw that a team of over 2 500
hardware and software experts with access to gigantic user bases,
profiling equipment and connections with developers and Intel made the
same decision, it was gratifying. (To be honest, my original idea was to
use "nop" and overwrite it with "ret", but both Patrick (who wrote the
patch) and MS were right in making it a "ret" by default and using "nop"
to overwrite, since that's even faster).
> The fact that NT does this is of
>little concern, we only need to be compatible, not identical.
It was of concern to me not because of compatibility, but because it
shows that a team with so many resources agreed with my implementation
(although, like I said before, in an even more optimized way).
To see an example where I disagree with MS (as proof that I'm not
obessesed with copying NT) on a similar self-modifying code issue, take
cmpxch8. I think that the code which MS uses to overwrite entire chunks
of the functions with new assembly code is horribly wrong. I would
implement both functions and then use a function pointer to chose one.
>Ros-dev mailing list
>Ros-dev at reactos.org
More information about the Ros-dev