A central processing unit (CPU) of a computer has a data caching unit which
includes a novel dual-ported prefetch cache configured in parallel with a
conventional single-ported data cache. If a data cache miss occurs, the
requested data is loaded into the data cache and into the prefetch cache.
Thereafter, each data request which results in a prefetch cache hit
triggers the prefetching of data into the prefetch cache. A data load
history tracking circuit maintains a running history of instructions that
request data from external memory, and uses the resulting loop heuristics
of these instructions to generate a stride. The stride is used to derive a
prefetch address which identifies data that is predicted to be soon
requested in subsequent instructions. Data corresponding to the prefetch
address is then loaded into the prefetch cache. Thus, where a subsequent
instruction requests data which has been prefetched into the prefetch
cache, latencies associated with external memory may be hidden, thereby
increasing the data bandwidth of the CPU.
Uma unidade central do processador (processador central) de um computador tem uns dados caching a unidade que inclui um esconderijo dual-ported do prefetch da novela configurarado na paralela com um esconderijo único-movido convencional dos dados. Se uma falta de esconderijo dos dados ocorrer, os dados pedidos estão carregados no esconderijo dos dados e no esconderijo do prefetch. Depois disso, cada pedido dos dados que resulta em uma batida de esconderijo do prefetch provoca prefetching dos dados no esconderijo do prefetch. Um history da carga dos dados que segue o circuito mantem um history running das instruções que pedem dados da memória externa, e usa o heuristics resultante do laço destas instruções para gerar um stride. O stride é usado derivar um endereço do prefetch que identifique os dados que são preditos para ser pedidos logo em instruções subseqüentes. Os dados que correspondem ao endereço do prefetch são carregados então no esconderijo do prefetch. Assim, onde uma instrução subseqüente pede os dados que foram prefetched no esconderijo do prefetch, as latências associadas com a memória externa podem ser escondidas, desse modo aumentando a largura de faixa de dados do processador central.