Computer systems are typically designed with multiple levels of memory
hierarchy. Prefetching has been employed to overcome the latency of
fetching data or instructions from or to memory. Prefetching works well
for data structures with regular memory access patterns, but less so for
data structures such as trees, hash tables, and other structures in which
the datum that will be used is not known a priori. The present invention
significantly increases the cache hit rates of many important data
structure traversals, and thereby the potential throughput of the computer
system and application in which it is employed. The invention is
applicable to those data structure accesses in which the traversal path is
dynamically determined. The invention does this by aggregating traversal
requests and then pipelining the traversal of aggregated requests on the
data structure. Once enough traversal requests have been accumulated so
that most of the memory latency can be hidden by prefetching the
accumulated requests, the data structure is traversed by performing
software pipelining on some or all of the accumulated requests. As
requests are completed and retired from the set of requests that are being
traversed, additional accumulated requests are added to that set. This
process is repeated until either an upper threshold of processed requests
or a lower threshold of residual accumulated requests has been reached. At
that point, the traversal results may be processed.
Os sistemas computatorizados são projetados tipicamente com níveis múltiplos da hierarquia da memória. Prefetching foi empregado para superar a latência de buscar dados ou instruções ou à memória. Prefetching trabalha bem para estruturas de dados com testes padrões regulares do acesso de memória, mas menos assim para estruturas de dados tais como árvores, tabelas da mistura, e outras estruturas em que a referência que será usada não é sabida a priori. A invenção atual aumenta significativamente as taxas de batida do esconderijo de muitos traversals importantes da estrutura de dados, e desse modo o throughput potencial do sistema computatorizado e da aplicação em que é empregado. A invenção é aplicável 2 aqueles acessos da estrutura de dados em que o trajeto traversal é determinado dinâmicamente. A invenção faz esta agregando pedidos traversal e então pipelining o traversal de pedidos agregados na estrutura de dados. Uma vez que bastante pedidos traversal foram acumulados de modo que a maioria da latência da memória possam ser escondidas prefetching os pedidos acumulados, a estrutura de dados é atravessada executando o encanamento do software em algum ou os todos os pedidos acumulados. Como pedidos são terminados e aposentado do jogo dos pedidos que estão sendo atravessados, os pedidos acumulados adicionais são adicionados àquele ajustam-se. Este processo é repetido até que um ponto inicial superior de pedidos processados ou um ponto inicial mais baixo de pedidos acumulados residuais estejam alcançados. Nesse ponto, os resultados traversal podem ser processados.