Das lernst du heute
- Mehrere Chips, ein Speicher
- Schreibrechte
- Sperren
Drei Chips messen in drei Räumen, ein vierter zeigt alles auf einer Tafel. Statt dass jeder Messchip die Tafel selbst beschreibt, legen alle ihre Werte in einen gemeinsamen Speicher. Der Tafelchip liest nur dort. Das ist sauber – solange sich niemand ins Gehege kommt.
Mehrere Chips, ein Speicher
Jedes IC-Gehäuse hat einen Stack mit 512 Plätzen. Andere Chips erreichen ihn mit get und put, wenn sie seine ReferenceId kennen:
lbn id GEHAEUSE HASH("Speicher") ReferenceId Average
put id 10 wert # Adresse 10 beschreiben
get wert id 20 # Adresse 20 lesen
Ein leeres Gehäuse ohne eigene Aufgabe ist so ein großer, gemeinsamer Speicher. Für einzelne Werte reicht auch ein Logikspeicher (StructureLogicMemory) mit seinem Setting.
Schreibrechte
Die wichtigste Regel: Jeder Platz hat genau einen Schreiber. Lege die Adressen fest und schreib sie in jeden beteiligten Chip:
| Adressen | Schreiber | Inhalt |
|---|---|---|
| 0 | alle, nur mit Sperre | Sperre |
| 10–19 | Chip A | Werte Raum A |
| 20–29 | Chip B | Werte Raum B |
| 30–39 | Chip C | Werte Raum C |
Schreiben zwei Chips auf denselben Platz, gewinnt der, der zuletzt dran war – und keiner merkt es.
Sperren
Gehören mehrere Werte zusammen, etwa Temperatur und Druck derselben Messung, darf niemand zwischendurch lesen. Eine Sperre regelt das: Wer schreiben will, trägt seine ReferenceId ein, prüft im nächsten Takt, ob sie noch drinsteht, schreibt und gibt mit 0 frei.
Warum erst im nächsten Takt prüfen? Sehen zwei Chips im selben Takt eine freie Sperre, tragen sich beide ein. Nur einer steht danach drin – der andere sieht beim Prüfen eine fremde Nummer und wartet.
lbn sperre SPEICHER HASH("Sperre") Setting Average
beq sperre ich schreiben # Sperre ist unsere
bnez sperre start # fremd: warten
sbn SPEICHER HASH("Sperre") Setting ich
j start # nächsten Takt prüfen
Eine Sperre, die nie freigegeben wird, legt alle anderen lahm. Gib sie immer im selben Abschnitt frei, in dem du schreibst, und schreib dazwischen nichts, das einen Fehler auslösen kann.
In der Übung sind Sperre und Werte Logikspeicher, damit der Test sie beobachten kann. Im Spiel funktioniert dasselbe Muster mit get und put auf einem Gehäuse.
Schaubild
Übung
Aufgabe
Dein Chip schreibt Temperatur und Druck des Sensors „Raum“ in die Speicher „TempA“ und „DruckA“ – aber nur mit der Sperre im Speicher „Sperre“:
- Sperre 0: eigene
ReferenceIdeintragen, im nächsten Takt prüfen - Sperre ist die eigene: beide Werte schreiben, dann Sperre auf 0
- Sperre fremd: nichts schreiben, Lampe „Warten“ an
- fehlt der Speicher „Sperre“, wird nichts geschrieben
Hinweise
Hinweis 1
Die eigene Nummer steht schon in ich (l ich db ReferenceId).
Hinweis 2
Reihenfolge: bnan, beq sperre ich schreiben, Lampe setzen, bnez sperre start, Sperre nehmen.
Hinweis 3
Im Abschnitt schreiben: zwei Werte, dann sbn … Sperre … Setting 0.
Quiz
3 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden