Multicore en synchronisatie
Wanneer mislukt bij een instructiepaar zoals LR/SC (load-reserved/store-conditional) van RISC-V de SC (store-conditional)?
- AWanneer de met SC te schrijven waarde gelijk is aan de met LR gelezen waarde
- BWanneer tussen LR en SC de reservering verloren is gegaan, bijvoorbeeld doordat een andere core naar dat adres heeft geschreven
- CWanneer tussen LR en SC ook maar één andere instructie is uitgevoerd
Antwoord en toelichting tonen
Antwoord: B. Wanneer tussen LR en SC de reservering verloren is gegaan, bijvoorbeeld doordat een andere core naar dat adres heeft geschreven
LR 'reserveert' dat adres terwijl het de waarde leest. Bij het latere schrijven met SC lukt het als de reservering behouden is, en bij verlies van de reservering, bijvoorbeeld door een schrijfactie van een andere core, wordt niet geschreven en een mislukking gemeld. Waar CAS de gelijkheid van waarden controleert, controleert LR/SC of er is geschreven, zodat ook gevallen worden gedetecteerd waarin de waarde is veranderd en teruggekeerd. ARM heeft een vergelijkbaar instructiepaar.