Messages in this thread |  | | From | Daniel Phillips <> | Subject | Re: 2.2.18Pre Lan Performance Rocks! | Date | Fri, 03 Nov 2000 07:42:26 +0100 |
| |
"Jeff V. Merkey" wrote: > A "context" is usually assued to be a "stack". The simplest of all > context switches is: > > mov x, esp > mov esp, y
Is that your two instruction context switch? The problem is, it doesn't transfer control anywhere. Maybe it doesn't need to. I guess you could break your tasks up into lots of little chunks and compile each chunk inline and use actual calls to take you off the fast path. The stack changes are actually doing some useful work here: you might for instance be processing a network packet whose address is on the stack. But somehow I don't think this is your two-instruction context switch. The only halfway flexible two-instruction context switch I can think of is:
mov esp, y ret
where you already know the stack depth where you are so you don't have to store it, and the task execution order is predetermined. This switches the *two* essential ingredients of a context: control+data. But there's a big fat AGI there and all the overhead of a jump so it doesn't get your superscalar performance.
Now my stupid question: why on earth do you need a billion context switches a second?
-- Daniel - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |