19 / 24 · Konzept
Die Transaktionsbilanz bei Leeren und Reset erhalten
Trennen Sie Abbruch und Ausgabe und stimmen Sie den Gültigkeitszustand mit Erwartungswarteschlangen ab.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Abbruch ist ein ausdrückliches Entwurfsereignis
Reset führt die Steuerung in einen bekannten Zustand zurück; Leeren verwirft festgelegte ausstehende Arbeit. Das Löschen von Daten allein reicht nicht. Bleibt valid hoch, kann Null zu einer falschen Transaktion werden. Alte Datenbits mit valid Null sind harmlos. Löschen Sie den jeweiligen Belegungszustand: full in einem Puffer mit einem Platz, Zähler und Zeiger in einem FIFO oder FSM-Zustand und Ergebnisgültigkeit.
Unsere synchronen Regeln mit einem Takt schließen Übernahme und Ausgabe an einer Reset-Flanke an beiden Endpunkten aus und verwerfen dort alle ausstehende Arbeit. Wird nur ein Endpunkt zurückgesetzt, während der andere altes valid als Ausgabe zählt, ist diese Vereinbarung verletzt. Dokumentieren Sie Reset-Geltungsbereich und Bereitschaftsregeln. Neue Eingaben nach Reset gehören zu einem neuen Transaktionsintervall.
| Ereignis | übernommen | ausgegeben | verworfen | ausstehend |
|---|---|---|---|---|
| A,B,C übernehmen | 3 | 0 | 0 | 3 |
| A ausgeben | 3 | 1 | 0 | 2 |
| B,C verwerfen | 3 | 1 | 2 | 0 |
| D übernehmen | 4 | 1 | 2 | 1 |
| D ausgeben | 4 | 2 | 2 | 0 |
Mit Abbruch gilt accepted-delivered-canceled=outstanding. Verwerfen Sie jede nicht ausgegebene Transaktion genau einmal. Auch die Referenzwarteschlange muss verworfene Arbeit entfernen und prüfen, dass kein altes Ergebnis ins neue Intervall eintritt.
Eine externe Speicheranfrage kann internes Leeren überleben. Unterscheiden Sie späte Antworten mit einer Generationskennung oder warten Sie vor dem Neustart auf den Abschluss alter Anfragen. Zu frühe Wiederverwendung eines kleinen Generationsfelds kann eine alte Antwort mit einer aktuellen verwechseln. Unser Abschlussprojekt hat keine externen verzögerten Antworten und verwirft nur interne Puffer.
Selektives Leeren kann Arbeit vor einer Verzweigung erhalten und jüngere Operationen auf dem falschen Pfad entfernen. Dies benötigt definierte Reihenfolge- und Übernahmeregeln für architekturelle Ergebnisse. Ungültige Arbeit darf weder Speicher aktualisieren noch an Weiterleitung teilnehmen. Testen Sie Reset im leeren, angehaltenen und vollen Zustand sowie bei möglichen gleichzeitigen Übertragungen. Reset nur beim Start prüft keinen Abbruch ausstehender Arbeit.
Selbst ausprobieren
Übernehmen Sie fünf, geben Sie zwei aus und verwerfen Sie die verbleibenden drei. Übernehmen Sie danach zwei und geben Sie eines aus. Bestimmen Sie die kumulierten Zahlen für übernommen, ausgegeben, verworfen und ausstehend.
Erklärung lesen
Übernommen=7, ausgegeben=3, verworfen=3, ausstehend=1. Die Bilanz ist 7-3-3=1. Verworfene Elemente sind keine erfolgreichen Ausgaben.