HeadlinesBriefing HeadlinesBriefing.com

Herausforderungen bei der Implementierung von AArch64-Spinlocks auf echter Hardware

Hacker News •
×

Der Autor entwickelt floss, einen AArch64-Betriebssystem-Kernel, der auf QEMU und Raspberry Pi-Boards abzielt. Tests auf echter Hardware haben Probleme aufgedeckt, die von der QEMU-Emulation nicht erfasst wurden. Dieser Beitrag beschreibt die Implementierung eines Spinlocks mit Load-Exclusive (ldaxr) und Store-Exclusive (stxr) Befehlen für die gegenseitige Ausschließung zwischen CPU-Kernen.

Das Schloss verwendet ein 32-Bit-Wort, wobei 0 entsperrt und 1 gesperrt bedeutet. Die ldaxr-Anweisung beinhaltet Acquire-Semantik, um eine Speicherumordnung zu verhindern, während stlr (Store-Release) beim Entsperren Release-Semantik sicherstellt. Die Implementierung schützt vor der Durchmischung der Kernausgabe, sodass nur ein Kern gleichzeitig ausgibt.

Allerdings treten auf echter Hardware gelegentlich Ausnahmen während Load-Exclusive-Operationen auf, die QEMU nicht emuliert. Der Autor bestätigt die Korrektheit durch Tests und weist darauf hin, dass der grundlegende Spinlock keine Gerechtigkeit bietet und aufgrund von Busy-Waiting eine schlechte Leistung aufweist, wobei zukünftige Arbeiten mit wfe/sev für energieeffizientes Warten vorgeschlagen werden.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing