Re: echtzeit

From: Oliver Fromme <olli(at)secnetix.de>
Date: Sun, 2 Feb 2003 20:29:52 +0100 (CET)

Jens Rehsack <rehsack(at)liwing.de> wrote:
> I know. Aber: Die Anzahl der Takte für die Befehlsausführung stehen im
> Prozessorhandbuch und sind auch in Ergänzungen der "Ralph Brown
> Interrupt List" zu finden.

Die Zeiten, als man Ausführungszeiten durch Abzählen von
Taktzyklen ermitteln konnte, sind lange vorbei. Ich habe
das früher auch gemacht; beim 8086 war das noch einfach,
aber beim 80386 fing das schon an, kompliziert zu werden.
Ich habe das 386-Processor-Manual im Bücherregal stehen.
Die Taktzyklen-Tabellen füllen zwei Kapitel, und es gibt
Dutzende von Spezialregeln und Ausnahmefällen, und die
Wartezyklen für Speicherzugriffe (mit oder ohne Cache) sind
dabei noch gar nicht berücksichtigt. Soviel zum 80386.

In einem heutigen PC spielen da so viele Faktoren mit hin-
ein, daß das exakte Ausrechnen der Zyklendauer einer Funk-
tion für nicht-triviale Fälle völlig ausgeschlossen ist,
und ein (vernünftiger) Scheduler gehört sicherlich nicht zu
den trivialsten Stückchen Software.

> Die Anzahl der Takte, die der Prozessor
> benötigt, um Daten aus dem RAM in ein Prozessorregister zu laden, sind
> auch dokumentiert.

Nein. Das hängt davon ab, was gerade in den diversen
Caches enthalten ist, ob gerade ein Burst-Zugriff statt-
findet oder nicht, ob die Northbridge gerade mit anderen
Dingen beschäftigt ist, und so weiter. Es hängt von Chip-
satz, Prozessor, Cache, RAM, MTRR-Konfiguration und vielen
anderen Dingen ab. Und selbst wenn man herausfinden kann,
wie lange ein Datentransfer braucht, weiß man dann noch
lange nicht, wieviel Zeit ein bestimmter Befehl benötigt:
Da kommt dann der Füllstand der Prefetch-Queues ins Spiel,
die diversen ALU-Einheiten, Speculative-execution und weiß-
der-Himmel-was noch alles.

Klar, in der Theorie kann man es ausrechnen, wenn man alle
Faktoren kennt und die Umstände stark eingrenzt. Das hilft
einem aber in der Praxis nicht.

PC-Hardware kann alleine schon deshalb keine harte Echt-
zeitverarbeitung machen, weil die Verzögerungen, die durch
das Auslösen von Interrupts entstehen, nicht bestimmt wer-
den können. Es gibt Hardware, bei der dies möglich ist,
aber nicht bei PCs.

Wie gesagt -- Hersteller, die vollmundig harte Echtzeitver-
arbeitung auf PCs versprechen, wissen entweder gar nicht,
was das ist, oder verwenden aus Marketinggründen absicht-
lich schwammige (um nicht zu sagen: inkorrekte) Aussagen.

Der Begriff "harte Echtzeitverarbeitung" _ist_ wohldefi-
niert, und PC-Hardware genügt dieser Definition ganz ein-
deutig _nicht_. Wer das nicht glaubt, sollte sich einfach
mal ein gutes Lehrbuch über Echtzeitverarbeitung zu Gemüte
führen.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 02 Feb 2003 - 20:29:55 CET

search this site