Mit der FPU funktioniert das folgendermaßen:
Man geht ersteinmal davon aus, dass es viele Programme gibt, die die FPU nicht benutzen oder nicht immer benutzen. Wenn man z.B. 3 Programme am laufen hat, aber nur eines die FPU benutzt, wäre es CPU-Zeitverschwendung die FPU Register zu sichern.
Das Prinzip ist ganz einfach, sobalt ein Programm das erste mal nach einem Taskwechsel die FPU benutzt, wird die exception ausgelöst. Dann wird kontrolieren ob die FPU-Register noch mit inhalten des selben Taskes gefült sind, sollte das nicht der Fall sein, muss man die Register für den Task sichern, der die FPU zuletzt benutzt hat. Danach werden die FPU-Register mit den gespeicherten werten für den aktuellen Task geladen .
Exception:
if TaskID <> letzte_FPU_benutzung_TaskID then begin
gespeicherte_FPU_Register [letzte_FPU_benutzung_TaskID] = FPU_Register
FPU_Register = gespeicherte_FPU_Register [TaskID]
letzte_FPU_benutzung_TaskID = TaskID
end