2.10 Vergleich der Berechnungsmodelle
131
SDF-Graphen (HSDF) (siehe Seite 82) sind noch weniger ausdrucksstark, aber noch
einmal einfacher zu analysieren.
Wir könnten Berechnungsmodelle auch in Hinblick auf die Arten von Prozessen,
die unterstützt werden, vergleichen:
• Die Anzahl von Prozessen kann entweder statisch oder dynamisch sein. Eine
statische Anzahl von Prozessen vereinfacht die Implementierung und ist ausreichend, wenn jeder Prozess eine bestimmte Hardwarekomponente modelliert und
wir hot plugging (das Hinzufügen von Hardware zur Laufzeit) nicht berücksichtigen.
• Prozesse können entweder statisch verschachtelt sein oder alle Prozesse sind auf
gleicher Ebene deklariert. Beispielsweise ermöglicht StateCharts die verschachtelte Deklaration von Prozessen, wogegen SDL (siehe Seite 68) dies nicht erlaubt.
Die Verschachtelung erlaubt es, Belange zu verkapseln.
• Es gibt verschiedene Techniken zur Prozesserzeugung. Prozesse können durch
eine Analyse der Prozessdeklarationen im Sourcecode, durch den fork- und joinMechanismus (der z.B. von Unix unterstützt wird) und auch durch explizite
Funktionen zur Prozesserzeugung erzeugt werden.
Die Ausdrucksstärke der verschiedenen datenflussorientierten Berechnungsmodelle ist auch in Abb. 2.75 [41]. dargestellt. In diesem Buch nicht aufgeführte Berechnungsmodelle sind dabei durch gestrichelte Linien dargestellt.
Abb. 2.75 Ausdrucksstärke
von Datenflussmodellen
HSDF
SDF
CSDF
KPN
Keines der Berechnungsmodelle und keine der bisher vorgestellten Sprachen erfüllt alle Anforderungen an eine Spezifikationssprache für eingebettete Systeme.
Tabelle 2.6 gibt einen Überblick über einige der wichtigsten Eigenschaften ausgewählter Sprachen.
SpecC und SystemC erfüllen alle aufgeführten Anforderungen. Allerdings beinhaltet diese Liste einige andere Anforderungen nicht, wie z.B. die präzise Angabe von
Deadlines. Es ist sehr unwahrscheinlich, dass ein bestimmtes Berechnungsmodell
oder eine bestimmte Sprache jemals alle Anforderungen erfüllen wird, da einige der
Anforderungen im Konflikt zueinander stehen. Eine Sprache, die harte Echtzeitanforderungen unterstützt, mag weniger dafür geeignet sein, Systeme mit weniger
harten Echtzeitanforderungen zu beschreiben. Eine Sprache, die für verteilte Regelungsanwendungen gedacht ist, mag sich schlecht für lokale Datenfluss-dominierte
131
SDF-Graphen (HSDF) (siehe Seite 82) sind noch weniger ausdrucksstark, aber noch
einmal einfacher zu analysieren.
Wir könnten Berechnungsmodelle auch in Hinblick auf die Arten von Prozessen,
die unterstützt werden, vergleichen:
• Die Anzahl von Prozessen kann entweder statisch oder dynamisch sein. Eine
statische Anzahl von Prozessen vereinfacht die Implementierung und ist ausreichend, wenn jeder Prozess eine bestimmte Hardwarekomponente modelliert und
wir hot plugging (das Hinzufügen von Hardware zur Laufzeit) nicht berücksichtigen.
• Prozesse können entweder statisch verschachtelt sein oder alle Prozesse sind auf
gleicher Ebene deklariert. Beispielsweise ermöglicht StateCharts die verschachtelte Deklaration von Prozessen, wogegen SDL (siehe Seite 68) dies nicht erlaubt.
Die Verschachtelung erlaubt es, Belange zu verkapseln.
• Es gibt verschiedene Techniken zur Prozesserzeugung. Prozesse können durch
eine Analyse der Prozessdeklarationen im Sourcecode, durch den fork- und joinMechanismus (der z.B. von Unix unterstützt wird) und auch durch explizite
Funktionen zur Prozesserzeugung erzeugt werden.
Die Ausdrucksstärke der verschiedenen datenflussorientierten Berechnungsmodelle ist auch in Abb. 2.75 [41]. dargestellt. In diesem Buch nicht aufgeführte Berechnungsmodelle sind dabei durch gestrichelte Linien dargestellt.
Abb. 2.75 Ausdrucksstärke
von Datenflussmodellen
HSDF
SDF
CSDF
KPN
Keines der Berechnungsmodelle und keine der bisher vorgestellten Sprachen erfüllt alle Anforderungen an eine Spezifikationssprache für eingebettete Systeme.
Tabelle 2.6 gibt einen Überblick über einige der wichtigsten Eigenschaften ausgewählter Sprachen.
SpecC und SystemC erfüllen alle aufgeführten Anforderungen. Allerdings beinhaltet diese Liste einige andere Anforderungen nicht, wie z.B. die präzise Angabe von
Deadlines. Es ist sehr unwahrscheinlich, dass ein bestimmtes Berechnungsmodell
oder eine bestimmte Sprache jemals alle Anforderungen erfüllen wird, da einige der
Anforderungen im Konflikt zueinander stehen. Eine Sprache, die harte Echtzeitanforderungen unterstützt, mag weniger dafür geeignet sein, Systeme mit weniger
harten Echtzeitanforderungen zu beschreiben. Eine Sprache, die für verteilte Regelungsanwendungen gedacht ist, mag sich schlecht für lokale Datenfluss-dominierte
