What is false sharing What is false sharing ? When CPUs and their cores read and update atomic variables, special hardware protocols make it correct and efficient, while keeping each core’s caches consistent. The coordination doesn’t happen per-address: these protocols work on cache-line-sized chunks. What happens when two atomic variables happen to reside on the same cache line? For…
Arm Limited, the company behind the ARM architecture, publishes AARCHMRS dataset – “Arm Architecture Machine Readable Specification”, a detailed description of an ARM processor as a set of JSON files. Today I published a set of crates: aarchmrs-parser : a set of definitions that allows parsing the AARCHMRS dataset, but only instructions description file. aarchmrs-instructions : a…
The Shanks’ baby-step-giant step (BSGS) algorithm is the final stage of certain functional encryption schemes based on elliptic curve pairings. This article discusses how the application of BSGS in these schemes differs from the classical one. Boundaries The textbook implementations use the group’s order $q$ as an input parameter. However, it would make the functional encryption scheme…
The amazing book Asynchronous Programming in Rust by Carl Fredrik Samson has a chapter on implementing stackful coroutines (fibers) in Rust for x86_64 architecture, both Linux and MacOS. But unlike the other chapters, no AArch64 implementation was included for the sake of simplicity. I tried to port it to AArch64 , and this post describes my approach. This text is just an additional material for…
Hi! My name is Ivan Boldyrev, I am software engineer born in Novosibirsk, Russia. My main areas of interest are functional programming, Rust, and parallel programming. Since the start of 2024 I live in Barcelona, Spain. My favourite projects are: StarJs – astronomical library for JavaScript. FUCC – LALR parser generator for Common Lisp. harm – WIP dynamic ARM assembler DSL for…