From dc1fef201c60c4277f285e917cb85d78e8f4057e Mon Sep 17 00:00:00 2001 From: Perry Kivolowitz Date: Thu, 20 Apr 2023 11:03:26 -0500 Subject: [PATCH] spin-lock added --- more/spin-lock/README.md | 163 +++++++++++++++++++++++ more/spin-lock/README.pdf | Bin 0 -> 118482 bytes more/spin-lock/apple-linux-convergence.S | 156 ++++++++++++++++++++++ more/spin-lock/main.cpp | 37 +++++ more/spin-lock/spin_lock.S | 51 +++++++ 5 files changed, 407 insertions(+) create mode 100644 more/spin-lock/README.md create mode 100644 more/spin-lock/README.pdf create mode 100644 more/spin-lock/apple-linux-convergence.S create mode 100644 more/spin-lock/main.cpp create mode 100644 more/spin-lock/spin_lock.S diff --git a/more/spin-lock/README.md b/more/spin-lock/README.md new file mode 100644 index 0000000..4d0b166 --- /dev/null +++ b/more/spin-lock/README.md @@ -0,0 +1,163 @@ +# Another use for the instructions used in **atomics** + +In the section on **atomics** we saw how the ARM V8 load linked / store +conditional instructions can be used to create atomic operations on +variables in memory. + +Here, for review, we present an atomic increment: + +```text + .text // 1 + .p2align 2 // 2 + // 3 +#if defined(__APPLE__) // 4 + .global _LoadLinkedStoreConditional // 5 +_LoadLinkedStoreConditional: // 6 +#else // 7 + .global LoadLinkedStoreConditional // 8 +LoadLinkedStoreConditional: // 9 +#endif // 10 +1: ldaxr w1, [x0] // 11 + add w1, w1, 1 // 12 + stlxr w2, w1, [x0] // 13 + cbnz w2, 1b // 14 + ret // 15 +``` + +The nonsense between lines 4 and 10 declare the label in ways compatible +with both Apple M and Linux. + +The interesting part happens from line 11 through line 14. Line 11 +dereferences a pointer to an `int32_t` putting its current value into +`w1`. Line 12 is the increment. + +Notice the dereference instruction is not the usual `ldr`. Instead it is +`ldaxr` which is a dereference that marks the memory location in `x0` as +a load for which we're hoping for exclusivity. Hoping. + +We don't actually know if we had exclusive access to the memory location +until the `stlxr` returns 0, meaning no one else has attempted to change +the value at the location. + +If `stlxr` doesn't return 0, then the value WE have is stale. So, we try +again. + +## Making a spin-lock + +When one has a shared resource used by more than one thread it must be +protected. This is the nugget to be aware of when working with threads. + +Take a look at this thread worker: + +```text +void Worker(int32_t id) { // 1 + int32_t counter = 0; // 2 + while (counter < 4) { // 3 + Lock(&lock_variable); // 4 + counter++; // 5 + cout << "thread: " << id << " counter: " << counter << endl;// 6 + std::this_thread::sleep_for(chrono::milliseconds(5)); // 7 + Unlock(&lock_variable); // 8 + sched_yield(); // 9 + } // 10 +} +``` + +The purpose of the worker is to print something to the console 4 times +then exit. The shared resource is the console itself. Without protecting +the console, threads will step over each other trying to print to it. + +Here is a sample of what could happen without our spin-lock: + +```text +thread: 0thread: 3 counter: 1 +thread: 7 counter: 1 counter: thread: +thread: thread: 10thread: 5 counter: 1 +thread: counter: thread: 121 counter: +thread: 8 counter: 113 +thread: thread: 2thread: counter: 151 counter: +``` + +With our spin-lock, here's what we might get: + +```text +thread: 12 counter: 3 +thread: 4 counter: 2 +thread: 7 counter: 4 +thread: 3 counter: 2 +thread: 1 counter: 4 +thread: 2 counter: 4 +thread: 13 counter: 3 +thread: 12 counter: 4 +``` + +Line 7 stresses the lock. + +Line 9 causes the currently running thread to voluntarily deschedule. +This makes the output more interesting. With out it, after unlocking, +the same thread may regain the lock immediately. + +Now let's look at the spin-lock. But first, a spin-lock is called a +spin-lock because a thread that doesn't get the lock will `spin` trying +to get it. This wastes time and generates heat, using electricity. +Bummer. + +Here is the source code to the spin-lock for ARM V8. + +```text +#if defined(__APPLE__) // 1 +_Lock: // 2 +#else // 3 +Lock: // 4 +#endif // 5 + START_PROC // 6 +1: ldaxr w1, [x0] // 7 + cbnz w1, 1b // lock taken - spin. // 8 + add w1, w1, 1 // 9 + stlxr w2, w1, [x0] // 10 + cbnz w2, 1b // shucks - somebody meddled. // 11 + // considered using dmb here // 12 + ret // 13 + END_PROC // 14 +``` + +Once again, line 7 does a `ldaxr` dereferencing the lock itself (once +again an `int32_t`) and marks the location of the lock as being +hopefully, exclusive. + +Having gotten the value of the lock, on line 8, its value is inspected +and if found to be non-zero, we branch back to attempting to get it +again - this is the spin. + +If the contents of the lock is 0, its value in `w1` is changed to +non-zero. Note, this could be made a bit better if a value of 1 was +stored in another `w` register and simply used directly on line 10. + +Line 10 conditionally stores the changed value back to the location of +the lock. If the `stlxr` returns 0, we got the lock. If not, we start +over - somebody else got in there ahead of us. Perhaps this happened +because we were descheduled. Perhaps we lost the lock to another thread +running on a different core. + +The unlock looks like this: + +```text +#if defined(__APPLE__) // 1 +_Unlock: // 2 +#else // 3 +Unlock: // 4 +#endif // 5 + START_PROC // 6 + str wzr, [x0] // 7 + // considered using dmb here // 8 + ret // 9 + END_PROC // 10 +``` + +All it does is set to value of the lock to zero. The correct operation +of the lock requires that no bad actor simply stomps on the lock by +calling `Unlock` without first owning the lock. Just say no to lock +stompers. + +Please see the source code located [here](./spin_lock.S) for some +additional comments regarding the implementation. diff --git a/more/spin-lock/README.pdf b/more/spin-lock/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8b027795f353d22621dcfe11672cb86cfdcf5fc GIT binary patch literal 118482 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⁢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

p{&|^ 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 BU1$IR literal 0 HcmV?d00001 diff --git a/more/spin-lock/apple-linux-convergence.S b/more/spin-lock/apple-linux-convergence.S new file mode 100644 index 0000000..8827423 --- /dev/null +++ b/more/spin-lock/apple-linux-convergence.S @@ -0,0 +1,156 @@ +/* Macros to permit the "same" assembly language to build on ARM64 + Linux systems as well as Apple Silicon systems. + + See the fuller documentation at: + https://github.com/pkivolowitz/asm_book/blob/main/macros/README.md + + Perry Kivolowitz + A Gentle Introduction to Assembly Language +*/ + +.macro GLD_PTR xreg, label +#if defined(__APPLE__) + adrp \xreg, _\label@GOTPAGE + ldr \xreg, [\xreg, _\label@GOTPAGEOFF] +#else + ldr \xreg, =\label + ldr \xreg, [\xreg] +#endif +.endm + +.macro GLD_ADDR xreg, label // Get a global address +#if defined(__APPLE__) + adrp \xreg, _\label@GOTPAGE + add \xreg, \xreg, _\label@GOTPAGEOFF +#else + ldr \xreg, =\label +#endif +.endm + +.macro LLD_ADDR xreg, label +#if defined(__APPLE__) + adrp \xreg, \label@PAGE + add \xreg, \xreg, \label@PAGEOFF +#else + ldr \xreg, =\label +#endif +.endm + +.macro LLD_DBL xreg, dreg, label +#if defined(__APPLE__) + adrp \xreg, \label@PAGE + add \xreg, \xreg, \label@PAGEOFF + ldur \dreg, [\xreg] +// fmov \dreg, \xreg +#else + ldr \xreg, =\label + ldur \dreg, [\xreg] +#endif +.endm + +.macro LLD_FLT xreg, sreg, label +#if defined(__APPLE__) + adrp \xreg, \label@PAGE + add \xreg, \xreg, \label@PAGEOFF + ldur \sreg, [\xreg] +#else + ldr \xreg, =\label + ldur \sreg, [\xreg] +#endif +.endm + +.macro GLABEL label +#if defined(__APPLE__) + .global _\label +#else + .global \label +#endif +.endm + +.macro MAIN +#if defined(__APPLE__) +_main: +#else +main: +#endif +.endm + +/* Fetching the address of the externally defined errno is quite + different on Apple and Linux. This macro leaves the address of + errno in x0. +*/ +.macro ERRNO_ADDR +#if defined(__APPLE__) + bl ___error +#else + bl __errno_location +#endif +.endm + +.macro CRT label +#if defined(__APPLE__) + bl _\label +#else + bl \label +#endif +.endm + +.macro START_PROC // after starting label + .cfi_startproc +.endm + +.macro END_PROC // after the return + .cfi_endproc +.endm + +.macro PUSH_P a, b + stp \a, \b, [sp, -16]! +.endm + +.macro PUSH_R a + str \a, [sp, -16]! +.endm + +.macro POP_P a, b + ldp \a, \b, [sp], 16 +.endm + +.macro POP_R a + ldr \a, [sp], 16 +.endm + +/* The smaller of src_a and src_b is put into dest. A cmp instruction + or other instruction that sets the flags must be performed first. + This macro makes it easy to remember which register does what in the + csel. + + Thank you to u/TNorthover for nudge to add the cmp. +*/ + +.macro MIN src_a, src_b, dest + cmp \src_a, \src_b + csel \dest, \src_a, \src_b, LT +.endm + +/* The larger of src_a and src_b is put into dest. A cmp instruction + or other instruction that sets the flags must be performed first. + This macro makes it easy to remember which register does what in the + csel. + + Thank you to u/TNorthover for nudge to add the cmp. +*/ + +.macro MAX src_a, src_b, dest + cmp \src_a, \src_b + csel \dest, \src_a, \src_b, GT +.endm + +.macro AASCIZ label, string + .p2align 2 +\label: .asciz "\string" +.endm + +.macro MOD src_a, src_b, dest, scratch + sdiv \scratch, \src_a, \src_b + msub \dest, \scratch, \src_b, \src_a +.endm diff --git a/more/spin-lock/main.cpp b/more/spin-lock/main.cpp new file mode 100644 index 0000000..1ffc301 --- /dev/null +++ b/more/spin-lock/main.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +using namespace std; + +extern "C" void Lock(int32_t *); +extern "C" void Unlock(int32_t *); + +int32_t lock_variable = 0; +const uint32_t NUM_THREADS = 16; + +void Worker(int32_t id) { + int32_t counter = 0; + while (counter < 4) { + Lock(&lock_variable); + counter++; + cout << "thread: " << id << " counter: " << counter << endl; + std::this_thread::sleep_for(chrono::milliseconds(5)); + Unlock(&lock_variable); + sched_yield(); + } +} + +int main() { + vector threads; + + for (uint32_t i = 0; i < NUM_THREADS; i++) { + threads.push_back(new thread(Worker, i)); + } + + for (auto & t : threads) + t->join(); + + return 0; +} diff --git a/more/spin-lock/spin_lock.S b/more/spin-lock/spin_lock.S new file mode 100644 index 0000000..4fb727e --- /dev/null +++ b/more/spin-lock/spin_lock.S @@ -0,0 +1,51 @@ +#include "apple-linux-convergence.S" + + .p2align 2 + .text + +/* Demonstration of use of load-linked and store-conditional doing + something interesting. In this case, creating a spin lock. A spin + lock is a simple but grossly inefficient form of a mutex. If the + "lock" is found to be owned (non-zero) by someone else, the calling + thread spins - checking the ownership of the "lock" in a tight loop. + + The spinning uses up time. A better mutex would add some kind of + queing for threads that don't own the lock. And, some kind of waking + would also be needed. Threads on the queue would be "asleep." +*/ + +#if defined(__APPLE__) + .global _Lock + .global _Unlock +#else + .global Lock + .global Unlock +#endif + +#if defined(__APPLE__) +_Lock: +#else +Lock: +#endif + START_PROC + mov w3, 1 +1: ldaxr w1, [x0] + cbnz w1, 1b // lock taken - spin. + stlxr w2, w3, [x0] + cbnz w2, 1b // shucks - somebody meddled. + // considered using dmb here + ret + END_PROC + +#if defined(__APPLE__) +_Unlock: +#else +Unlock: +#endif + START_PROC + str wzr, [x0] + // considered using dmb here + ret + END_PROC + + .end \ No newline at end of file