Cache prefetching algorithm uses previously requested address and data
patterns to predict future data needs and prefetch such data from memory
into cache. A requested address is compared to previously requested
addresses and returned data to compute a set of increments, and the set
of increments is added to the currently requested address and returned
data to generate a set of prefetch candidates. Weight functions are used
to prioritize prefetch candidates. The prefetching method requires no
changes to application code or operation system (OS) and is transparent
to the compiler and the processor. The prefetching method comprises a
parallel algorithm well-suited to implementation on an
application-specific integrated circuit (ASIC) or field-programmable gate
array (FPGA), or to integration into a processor.