Re: Nette Features in C# 3.0



Sebastian Biallas <groups.5.sepp@xxxxxxxxxxxxxxx> writes:
> Rainer Weikusat wrote:
>> Sebastian Biallas <groups.5.sepp@xxxxxxxxxxxxxxx> writes:
>>>Rainer Weikusat wrote:
>>
>> [...]
>>
>>>>>Was kostet, ist lediglich der einmalige Setup eines Exception
>>>>>-Handlers sowie das Fangen der Exception. Am Code der die Exception
>>>>>auslöst muss garnichts verändert werden.
>>>>
>>>>Das ist 'mal wieder' das lustige Konzept, dass Code, der in
>>>>irgendeinem anderen file steht, weniger "da" waere. Kauen wir das doch
>>>>fuer UNIX und aehnliches mal durch:
>>>> [1..9]
>>>
>>>Meine CPU muss das 1000 Mal pro Sekunde zwecks (möglichem) Taskwechsel
>>>tun. Normale Interrupts sind da noch nicht mit eingerechnet.
>>
> [..]
>>
>> Wenn das eine Anspielung auf 'HZ=1000' sein soll: Das ist ein
>> normaler Interrupt
>
> Das ist eine FPE auch.

Ist das eigentlich wirklich so kompliziert? Du hast 'timer tick' und
'normaler Interrupt' auseinanderdividert. Das ist nicht sinnvoll, denn
der timer tick ist ein normaler Interrupt, dh so ein Ding, das dazu
fuehrt, das ein Prozessor-Interrupt ausgeloest wird (daher der
Name). Eine Exceptions ist kein normaler Interrupt, und damit man das
einfach sehen kann, heisst sie 'exception' und nicht 'interrupt'.

ZB habe ich hier auf der Hardware, mit der ich groesstenteils arbeite,
mehrere exceptions, von denen eine als 'interrupt' benutzt wird, eine
als 'fast interrupt' und falls ich eine FPU haette, dann wuerde die
ein implementierungsdefiniertes Verfahren benutzen, um im Falle einer
der 'IEEE floating point exceptions' irgendeinen in Software
definierten trap handler aufzurufen. Dafuer wird sie 'ueblichersweise'
eine der anderen Prozessor-Exceptions ueberladen, aber weder IRQ noch
FIQ. Der handler-Code wird dann in einem implementations-definierten
Prozessorzustand ausgefuehrt und muss als erstes mal aus der FPU die
Information herausnuckeln, welche 'floating point' exception
ueberhaupt aufgetreten ist. Die 'normal denkbare Implementierung' wird
aufgrund der Notwendigkeit des ueberladens einer andere exception vor
den FP-trap handler noch einen multiplexer unbestimmter Natur schalten.

Das wilde Durcheinanderschmeissen unterschiedlicher Begriffe fuehrt
bloss zu vermeidbaren Missverstaendnissen und Leute, denen es aus
irgendeinem Grund nicht notwendig erscheint, sich darum zu bekuemmern,
was die Worte, mit denen sie um sich werfen, tatsaechlich bedeuten
nennt man 'denkfaul', falls man hoeflich sein moechte und von der
Moeglichkeit ausgeht, dass es sich um eine bewusste
Willensentscheidung handelt und nicht um eine physische Unfaehigkeit,
ordinaer ausgedrueckt, um schlichte angeborene Dummheit, die
ueblicherweise aggressiv ihre Schwaeche als Staerke erscheinen zu
lassen versucht, handelt. Typischerweise gestaltet sich das so, dass
man Leute, denen man nicht folgen kann, gegenueber Dritten als
(eventuell gefaehrliche) Geistesgestoerte darzustellen versucht (wie
der Herr ohne Nachnamen hier ja ausfuehrlich vorgefuehrt hat).

>> und es wird nicht bei jedem auf 'moeglicher
>> task-Wechsel' geprueft. Ich habe jetzt im Moment gerade keine Lust,
>> dass breiter auszuwalzen, aber so allgemein, wie Du das geschrieben
>> hast, stimmt es nicht.
>
> Die CPU muss aber 1000/s Mal in Ring 0 schalten, Register sichern und
> wiederherstellen, der Kernel muss schauen, was überhaupt passiert ist
> usw.usf.

Aeh ... und was moechtest Du mir damit jetzt mitteilen? Das die
Jungens in der Linux-Desktop-Fraktion immer noch glauben, man
koenne ein Geldstueck, dass man besonders schnell von Hand zu Hand
wirft, deswegen zweimal ausgeben? Das schlechte Software dank teurer
Hardware immerhin am Leben bleiben und ihren Mann ernaehren kann?
Oder was?

Ist Dir schon mal der Gedanke gekommen, dass die weitaus meisten
Computer weder PCs sind, noch mit Ghz-CPUs irgendwo als Heizung
arbeiten und vor allem, dass das vollkommen ohne Belang ist, weil
'sinnlose Verschwendung' als solche kein wuenschenswerter Zustand ist,
unabhaengig davon, ob man sie sich zufaellig leisten kann, oder nicht?

>>>>Auf einer ausreichend schnellen CPU geht dieser Vorgang, nicht zuletzt
>>>>deswegen, weil er von profilern schlecht erfasst werden kann,
>>>>hoechstwahrscheinlich im 'allgemeinen Hintergrundrauschen' der anderen
>>>>800.000 Operationen, die der Code durchfuehrt, deren einzige
>>>>festellbare Eigenschaft die ist, dass sie das Endresultat nicht
>>>>negativ beeinflussen, unter. Da ist er trotzdem.
>>>
>>>Er ist nur da, wenn wirklich eine Exception auftritt.
>>
>> Ja. Deswegen ist der overhead dafuer aber immer noch heftig genug, um
>> diese 'Ausnahme' eben auch nur 'in Ausnahmen-Situationen' haben zu
>> wollen.
>
> Vielleicht gehöre ich ja zu der aussterbenden Spezies, die Ausnahmen
> wirklich nur in Ausnahme-Situationen haben mochte (wenn ein definierter
> Under-/Overflow Teil eines Algorithmus ist, wäre es in der Tat reichlich
> dämlich, wenn einem da so Exceptions dazwischenfunken. Wenn ein
> Under-/Overflow das Ergebnis vollkommen zerstört, dann ist mir eine
> automatische Exception sehr viel lieber als das langsamere (und
> möglicherweise fehleranfällige) händische Prüfen aller
> Zwischenergebnisse).

Diese Aussage ist so allgemein, dass man schon gar nicht mehr genau
sagen kann, welchen Sinn sie eigentlich haben soll. Deswegen ist sie
in dieser Form ohne weitere Betrachtung als Geschwaetz
zurueckzuweisen.
.



Relevant Pages

  • Re: Vectored Interrupt Fetch
    ... It is not just the interrupt vector ... We had a separate exception location for UTLBMISS, ... The other exceptions and interrupts trapped to a common locaiton, ... jump commoncode ...
    (comp.arch)
  • Re: Nette Features in C# 3.0
    ... >> 'normaler Interrupt' auseinanderdividert. ... >> der timer tick ist ein normaler Interrupt, dh so ein Ding, das dazu ... heisst sie 'exception' und nicht 'interrupt'. ...
    (de.comp.lang.misc)
  • Re: Nette Features in C# 3.0
    ... beschreibt 'exception' die Operation ... the interrupt mechanism ignores the exceptions that ... Solange ein Programm tut, was ich von ihm erwarte, interessiert mich ... Dass man mit kaputter Hardware schlecht kaputte Hardware testen kann, ...
    (de.comp.lang.misc)
  • Re: nasm segment directive
    ... To determine what the "native" behavior of the FPU is, we could design a bootsector to test the behavior. ... There's a thread on clax about "Floating Point Exception" - a guy did an ordinary "div cl" without clearing ah. ... I rebuilt the library with "DEBUG" defined, it informed me that the interrupt routine wasn't in ROM... ... Maybe dos is hooking int 10h. ...
    (alt.lang.asm)
  • Exception After Enabling Device Interrupts On CEPC
    ... We are developing a device driver for a PCI ethernet device. ... has two interrupts: interrupt A can be read from the registers of the ... Unhandled exception c0000005: ... ProcessAdminMsg: Receive Config message for service DBGMSG ...
    (microsoft.public.windowsce.platbuilder)