  Random number generation is an important task in a wide variety of critical
applications including cryptographic algorithms, scientific simulations, and
industrial testing tools. True Random Number Generators (TRNGs) produce truly
random data by sampling a physical entropy source that typically requires
custom hardware and suffers from long latency. To enable high-bandwidth and
low-latency TRNGs on commodity devices, recent works propose TRNGs that use
DRAM as an entropy source. Although prior works demonstrate promising
DRAM-based TRNGs, integration of such mechanisms into real systems poses
challenges. We identify three challenges for using DRAM-based TRNGs in current
systems: (1) generating random numbers can degrade system performance by
slowing down concurrently-running applications due to the interference between
RNG and regular memory operations in the memory controller (i.e., RNG
interference), (2) this RNG interference can degrade system fairness by
unfairly prioritizing applications that intensively use random numbers (i.e.,
RNG applications), and (3) RNG applications can experience significant
slowdowns due to the high RNG latency. We propose DR-STRaNGe, an end-to-end
system design for DRAM-based TRNGs that (1) reduces the RNG interference by
separating RNG requests from regular requests in the memory controller, (2)
improves the system fairness with an RNG-aware memory request scheduler, and
(3) hides the large TRNG latencies using a random number buffering mechanism
with a new DRAM idleness predictor that accurately identifies idle DRAM
periods. We evaluate DR-STRaNGe using a set of 186 multiprogrammed workloads.
Compared to an RNG-oblivious baseline system, DR-STRaNGe improves the average
performance of non-RNG and RNG applications by 17.9% and 25.1%, respectively.
DR-STRaNGe improves average system fairness by 32.1% and reduces average energy
consumption by 21%.
