Syftet med instruktionen "Load Link" (LL), som används i samband med en "Store Conditional" (SC) -instruktion, är att implementera
atomiska läsmodifieringsoperationer . Detta är avgörande för att säkerställa datakonsistens i flera processor eller flertrådade miljöer där flera processer kan försöka komma åt och ändra samma minnesplats samtidigt.
Så här fungerar det:
1. Load Link (LL): Denna instruktion laddar värdet på en minnesplats i ett register. Kritiskt sett sätter det också en intern flagga eller ett lås som är associerat med den minnesplatsen. Denna flagga indikerar att den här processorn har krävt platsen för en potentiell uppdatering.
2. Beräkning: Processorn utför sedan sin beräkning på det laddade värdet i registret.
3. lagra villkorat (SC): Denna instruktion försöker lagra det modifierade värdet från registret tillbaka till minnesplatsen. Framgången för denna operation beror på om den interna flaggan/låset som ställts in av LL -instruktionen fortfarande hålls av samma processor. Om flaggan fortfarande är inställd (vilket betyder att ingen annan processor har åtkomst till minnesplatsen under tiden) lyckas SC -instruktionen och flaggan rensas. Om flaggan inte är inställd (eftersom en annan processor har utfört en LL/SC -operation på samma plats) misslyckas SC -instruktionen och minnesplatsen förblir oförändrad.
I huvudsak tillhandahåller LL/SC en mekanism för att testa och modifiera en minnesplats atomiskt. Detta innebär att hela operationen (läs, modifiera, skriva) behandlas som en enda, odelbar enhet, förhindra rasförhållanden och säkerställa dataintegritet. Utan LL/SC kan samtidig åtkomst leda till oförutsägbara och felaktiga resultat på grund av sammanflätade läsningar och skrivningar.
Många arkitekturer erbjuder LL/SC-instruktioner, eller motsvarande mekanismer, för att underlätta låsfria datastrukturer och algoritmer som undviker överhuvudet för traditionella mutexer eller semaforer. Att använda LL/SC kräver emellertid noggrann programmering för att hantera potentialen för SC -fel och implementera lämpliga försöksmekanismer.