A system and method track and control the prefetching of blocks of a data
stream in a PCI bus system, avoiding unnecessary prefetches. The data
stream is grouped into major blocks which comprise a fixed plurality of
contiguous blocks. A prefetch buffer stores the blocks of data prefetched
from a PCI data source for transfer to a requester. First and second
associated prefetch count storage locations store first and second counts
initialized by prefetch initialization logic. The first count represents
the number of blocks of data of a major block of the data, and the second
count represents the total number of the blocks of the data stream to be
prefetched, less the initialized number of blocks of the first count. As
each block of data is prefetched, a prefetch counter decrements the first
count by a number representing the block of data. As the prefetch counter
decrements the first count to zero, prefetch count logic stops the
prefetch, allowing completion of the transfer of the prefetched data to
the data destination. Thus, the second count represents the next remaining
number of blocks to be prefetched, and the requester can rotate to a
different read request at the end of a major block, knowing the next major
block will not be prefetched until requested.
Um sistema e um método seguem e controlam prefetching dos blocos de um córrego de dados em um sistema da barra-ônibus do PCI, evitando prefetches desnecessários. O córrego de dados é agrupado nos blocos principais que compreendem um plurality fixo de blocos contíguos. Lojas que de amortecedor do prefetch os blocos dos dados prefetched de uma origem dos dados de do PCI para transferência a um requester. As posições primeiramente e em segundo associadas do armazenamento da contagem do prefetch armazenam primeiramente e em segundo as contagens inicializadas pela lógica de iniciação do prefetch. A primeira contagem representa o número dos blocos dos dados de um bloco principal dos dados, e a segunda contagem representa o número total dos blocos do córrego de dados para ser prefetched, menos o número inicializado dos blocos da primeira contagem. Como cada bloco dos dados é prefetched, decréscimos de um contador do prefetch a primeira contagem por um número que representa o bloco dos dados. Porque os decréscimos do contador do prefetch a primeira contagem a zero, lógica da contagem do prefetch param o prefetch, permitir a conclusão de transferência do prefetched dados ao destino dos dados. Assim, a segunda contagem representa o número restante seguinte dos blocos para ser prefetched, e o requester pode girar a um pedido lido diferente na extremidade de um bloco principal, sabendo que o bloco principal seguinte não será prefetched até pedido.