stall-free memory reads ? (possibly stale) ?

From: Luigi Rizzo <rizzo_at_iet.unipi.it>
Date: Fri, 8 Apr 2016 18:24:16 +0200
Hi,
I have an application with two threads sharing a memory variable,
one continuously writing, one continuously reading.

Because of the way my system works, the reader can tolerate reading
stale data, but it should not stall on memory reads (the line
is on the local cache for the reader, just might be invalidated).

I was wondering if there is some way (either generic or
x86-specific, either simple or convoluted, possibly using
multiple versions of the shared variable in different cache
lines) to make sure that reads never stalls (or, equivalently,
let me read stale values from the cache) ?

I have done some experiments and on a single-socket machines
the stallled reads take some 50ns; on a dual socket machine
the stall penalty grows to about 200ns.

cheers
luigi
Received on Fri Apr 08 2016 - 14:19:28 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:04 UTC