  Simulation is a third pillar next to experiment and theory in the study of
complex dynamic systems such as biological neural networks. Contemporary
brain-scale networks correspond to directed graphs of a few million nodes, each
with an in-degree and out-degree of several thousands of edges, where nodes and
edges correspond to the fundamental biological units, neurons and synapses,
respectively. When considering a random graph, each node's edges are
distributed across thousands of parallel processes. The activity in neuronal
networks is also sparse. Each neuron occasionally transmits a brief signal,
called spike, via its outgoing synapses to the corresponding target neurons.
This spatial and temporal sparsity represents an inherent bottleneck for
simulations on conventional computers: Fundamentally irregular memory-access
patterns cause poor cache utilization. Using an established neuronal network
simulation code as a reference implementation, we investigate how common
techniques to recover cache performance such as software-induced prefetching
and software pipelining can benefit a real-world application. The algorithmic
changes reduce simulation time by up to 50%. The study exemplifies that
many-core systems assigned with an intrinsically parallel computational problem
can overcome the von Neumann bottleneck of conventional computer architectures.
