Re: echtzeit

From: Bernd Walter <ticso(at)cicely8.cicely.de>
Date: Mon, 3 Feb 2003 00:18:08 +0100

On Sun, Feb 02, 2003 at 11:37:48PM +0100, Jens Rehsack wrote:
> Bernd Walter wrote:
> >On Sun, Feb 02, 2003 at 06:56:52PM +0100, Jens Rehsack wrote:
> >>Clemens Hermann wrote:
> >Das ist richtig - nur ist die nutzlos, im Gegenteil der Worst Case
> >wird in der Regel durch die größere Komplexität schlechter.
> >Deswegen läßt man die in einigen Systemen weg.
> >Lediglich der Preis bringt Echtzeit Systeme schon mal zu solchen CPUs.
>
> ???
> Versteh' ich nich. Wenn ich die Branch Prediction weglasse und annehme,
> es gäbe keine, und die Befehle kämen immer aus dem Hauptspeicher (statt
> aus dem Cache oder der Pipeline), müsste dann das nichr der Worst-Case sein?

Und - wie schnell ist der Hauptspeicher?
Wer garantiert dir, das nicht gerade im falschen Moment ein DMA den
Zugriff aufs RAM blockiert?
Wie lange dauert ein DMA? - worst case bis zum Jüngsten Tag.
Man denke nur an die langen IO Bursts von einigen Matrox Karten, die
verhindert haben, das man Soundkarten zuverlässig versorgt.
Dabei braucht so eine Soundkarte doch gar nicht alzu oft neue Daten.
Es gibt viele Kriterien, die Hardware für diesen Zweck unbrauchbar
machen können.

> Stimmt - daher sollte man schon die Doc zur verwendeten CPU zu Rate
> ziehen. Die Argumentation mit der Hardware sehe ich ein, aber ich
> kapier' echt nicht, warum bei ausgewählter Hardware (es gibt sowas für
> sog. Industrie-PC's) das eine Rolle spielt.

An den sog. Industrie PCs vermiße ich oftmals als erstes ECC.
Ohne dem ist die Funktionsgarantie sowieso recht albern.
Da mag ein Timing Ausrutscher statistisch unwharscheinlicher Sein.
Mit einem ausgewählten PC mag das durchaus machbar sein, aber warum?
Ein extra Mikrocontroller oder DSP ist einfach billiger und besser
kalkulierbar.
Und zudem kann man die Dinger heutzutage ja problemlos in nahezu
beliebiger Anzahl an USB klemmen.
Wozu die System CPU damit belasten?

> >Versuche doch mal den Hauptspeicher zu kalkulieren!
> >Du kannst nicht wissen, ob noch eine Page aktiv ist oder nicht.
> >Du weist nicht mal, wann das RAM seinen Refresh macht.
> >Auf einem C64 ist mir das bekannt.
>
> Muss ich auch nicht. Ich nehme für den Worst-Case an, dass sie nicht auf
> Platte liegt (was ich bei einem RT-Kernel problemlos kann) und der
> Refresh des RAM verdoppelt halt die Ladezeit aus dem Hauptspeicher (400
> Takte statt 200).

Von der Platte bekomme ich Daten auch unter FreeBSD weg, aber die
RAM Geschwindigkeit ist immer noch nicht bekannt.
Denke nur mal an den von mir schon öfters ewähnten DMA zur falschen
Zeit - der verschlingt fast immer mehr als man an Worst Case
gebrauchen kann.
Also was machst du?
Du fängst an Hardware mit bekannten maximalen DMA längen zu verwenden
und hoffst, daß maximal n DMA Zyklen in den Kritischen Bereich fallen.
Wieder nichts 100%iges.

> >>Soweit ich das verstanden habe, ist es auch egal, ob der worst case
> >>unterschritten wird - daher kann man die ganzen Beschleuniger im Zweifel
> >>auch einfach ignorieren.
> >
> >Klar kann ich Worst Case rechnen, aber wie sieht der bei einem PC aus?
> >
>
> Man darf natürlich kein Media-Markt-System nehmen. Das ist klar. Aber
> bei Industrie-PC's bekommt man IMHO die nötigen Info's um diese Aussage
> treffen zu können.

Natürlich kann ich mit einem Media-Markt System auch Echtzeit-
anwendungen haben - sogar unter Windows.
Das Brennen von CDs ist ein gutes Beispiel.
Aber man nimmt in Kauf, daß es nicht garantiert in jedem Fall
funktioniert.

> [...]
> >>>auch durch aufpassen allein bekommt man auf PC Hardware keine harten
> >>>Echtzeitsysteme
> >>>hin. Du kannst Wie gesagt nen dicken Puffer draufrechnen, dann wird es
> >>>in den meisten
> >>>Fällen schon passen (wenn Du den Puffer dick genug gewählt hast), aber
> >>>das ist dann
> >>>kein wirkliches Echtzeit System und sowas kann man je nach Anforderung
> >>>auch ganz ohne
> >>>Dinge wie RT machen, indem man einfach nen dicken Rechner hinstellt.
> >>
> >>Ich kann Dir nicht folgen? Wieso ist es nicht möglich,
> >>Echtzeitanwendungen zu schreiben, wenn man den Scheduler kontrollieren
> >>kann und die Instruktionslaufzeiten zählt?
> >
> >Weil du auf einem PC keine maximalen Instruktionslaufzeiten kennst.

Jede moderne CPU kann extern bis zum Stillstand gedrosselt werden.
Bei PCs wird davon regen Gebrauch gemacht.
Sei es durch RAM, durch APM oder sonstwas.
PCs haben sehr viel Altlasten, die einem dabei Probleme machen können.
Z.B. Floppy Controller, ISA Bridges, A20 Gate, ...

> Eigendlich schon. Beispiel:
> ----------O-INVLPG---------------------------------
>
> Ist doch eigendlich eine klare Aussage, oder? Ok, meine Intrlist ist
> lange nicht mehr geupdated worden (programmier' schon 'ne Weile kein
> DOS(E) mehr ...)

Das ist keine klare Aussage, weil die durch andere Elemente entkräftet
wird.
Wenn du die CPU nicht in einer PC Umgebung betreibst, dann kannst du
mit den Werten was anfangen.
Letzlich sind die in PC Umgebung eher für Compilerbauer von Bedeutung,
da man damit gut Optimieren kann, dafür reichen 99,9%.

> >>>Dennoch musst Du die IRQs ja mit dem eigentlichen Programm
> >>>zusammenbringen und auch
> >>>Da musst Du wissen, wann die IRQs ausgewertet sind wenn Du sicher gehen
> >>>willst, dass
> >>>Das Ergebgnis rechtzeitig vorliegt.
> >>
> >>Schau Dir mal RT-Linux an! Die definieren Dir nämlich dies ganz genau.
> >
> >Auf welcher Hardware?
> >Definieren kann man viel - eine Garantie ist das aber nicht!
> >Die können nichts garantieren, ohne die Hardware zu kennen.
>
> Die können aber sagen, wie sie reagieren, z.B. das ein RT-Task max. x µs
> Laufzeit bekommt, damit noch auf HW-IRQ's reagiert werden kann, etc. Die
> könne sagen, wir haben folgende Instruktionen verwendet, wenn ein IRQ
> kommt, auf den ein Echtzeit-Task reagieren möchte, ...

Ich kann dir auch sagen, das unter FreeBSD alle 10000µs (bzw. 976µs auf
alpha) ein Timer IRQ behandelt wird, aber ich kanns nicht garantieren.
Die Realität hat gezeigt, das man durchaus mal einen verlieren kann.
Nur ist das nicht gleich eine Katastrophe.

> Wie erklärst Du Dir die Existenz von QNX, wenn PC's von Haus aus nicht
> echtzeitfähig sind?

Die Systeme haben natürlich ihre Existenzberechtigung, aber du mußt dir
darüber im klaren sein, daß die Systeme Grenzen haben, die man besser
mit anderer Hardware überwinded.

Ich hätte z.B. kein Problem einen Bestückungsautomaten für Leiter-
platten damit zu bauen, da ich durchaus mit Ausreißern leben könnte.
Schließlich habe ich mechanisch wesentlich größere Risiken mal ein
Bauteil falsch zu platzieren, da es z.B. nicht sauber gegriffen wurde.
Manchmal ist 99,9% eben gut genug.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso(at)cicely.de         Usergroup           info(at)cosmo-project.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 03 Feb 2003 - 00:18:23 CET

search this site