A method may include distributing ranges of addresses in a memory among a
first set of functions in a first pipeline. The first set of the
functions in the first pipeline may operate on data using the ranges of
addresses. Different ranges of addresses in the memory may be
redistributed among a second set of functions in a second pipeline
without waiting for the first set of functions to be flushed of data.