GPF and IRQ performance

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re:GPF and IRQ performance

Post by Brendan »

Hi,

OK, it's official - I'm a noob...

I did get GC and GNC around the wrong way. "GC.img" does do the cache flushing, while "GNC.img" doesn't. To make matters worse, "IC.img" is identical to "INC.img", and both flush the cache.

This means the corrected results would be:

[tt]Athlon XP 2000+ machine:

GPF with caching: 257 cycles per interrupt


AMD Athlon 64 3000+:

Standard with cache flushing: 804 cycles per interrupt
GPF with caching: 307 cycles per interrupt
GPF with cache flushing: 696 cycles per interrupt[/tt]

This makes sense, but also means that for the Athlon 64 the extra overhead of the GPF is much closer to a normal interrupt and less than the overhead of a cache miss. In this case avoiding that extra cache miss may be worth doing...

Taking this into consideration, which method is better depends on how often IRQs occur and which CPU you're using.


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:GPF and IRQ performance

Post by Pype.Clicker »

(( fully sympathizing with all you, people, that are currently busy with RDTSC performance monitoring for OSdev as i'm doing here for my job ))
Cjmovie

Re:GPF and IRQ performance

Post by Cjmovie »

Pype.Clicker wrote: (( fully sympathizing with all you, people, that are currently busy with RDTSC performance monitoring for OSdev as i'm doing here for my job ))
?
Post Reply