T2A1: Important Thoughts

  1. Extended SCCharts bieten diverse Konstrukte, die für einen übersichtlicheren Graphen sorgen, aber nicht mehr Ausdruckskraft haben, als die Core SCCharts. Sie lassen sich entsprechend in Core SCCharts umwandeln.
  2. Die Normalisation ermöglicht eine leichtere "weiterverarbeitung", da nur bestimmte Muster vorkommen.
  3. Basic blocks sind Zusammenfassungen von SCG Knoten, die keine Verzweigungen oder Tickgrenzen enthalten und somit hintereinander ausgeführt werden können. Zum Schedulen von SCCharts muss aber noch feiner aufgeteilt werden (Schedule blocks), da Basic blocks keine Abhängigkeiten parallel laufender Threads berücksichtigen.
  4. Bei Abhängigkeiten wird nach dem initialize-update-read Prinzip gescheduled.

T2A3: Modeling with SCCharts

rail.sct

T2A4: SCCharts Transformations

Core Transformation: Das Count Delay in der "platform" region ist kein core Konstrukt. Es wurde durch einen Counter in der neu eingeführten region aufgelöst. Wird dieser mittels startCount gestartet, setzt er den Zähler auf Null und inkrementiert ihn anschließend jedes Mal, wenn second true ist, bis er auf 5 ist. In der "platform" region wird der Counter bei Eintritt in den "stop" Zustand gestartet und anschließend darauf gewarter, bis er auf 5 hochgezählt hat.

rail_core.png

Normalisation

rail_norm.png

SCG Graph: Problematisch könnte sein, dass es Pfade gibt, in denen mehrere absolute Schreibzugriffe innerhalb eines Ticks konkurrent vorkommen (wirte-write Konflikt).

rail_norm_scg.pngrail_norm_scg_dep.png

T2A5: Code Generation

Der write-write Konflikt wurde aufgelöst, indem das, was die (unnötig) parallel ausgeführte region tut, sequenziell vor dem Inhalt der andere region ausgeführt wird. Auch wenn jetzt möglicherweise mehrere write Aktionen auf "track" innerhalb eines Ticks ausgeführt werden, gibt es durch die sequenzielle Ordnung keine Konflikte.

rail_corrected.transformed.c

rail_corrected.pngrail_corrected_scg.png

T2A6: Hostcode

Initialisierung der Railway, des betreffenden Streckenabschnitts müssten ergänzt werden. Wie lange eine Sekunde dauert, wann ein Tick passiert muss auch noch entschieden werden.

 

Tags: