A method and apparatus for preventing the occurrence of deadlocks from the
execution of unresolvable system bus operations. In general, each snooper
speculatively accepts a given operation when it has a snoop buffer
available. However, rather than unconditionally processing the operation,
the snooper waits to determine if another participant retried the
operation due to unavailability of a snoop buffer. If some snooping
participant retrys an operation, all snoopers that speculatively accepted
an operation for processing abandon said operation. If no snooping
participant retrys the operation, sufficient snooping resources were
available for all necessary caches to begin processing the operation and
the initiator can consider the operation completed. In other words, no
operation is processed until all the necessary snooping resources are
available to accept the operation. This prevents the system from getting
into the ping-pong deadlock. Snoopers can safely assume that each
presentation of an operation must be propagated and that no operation will
have been fully or partially processed by some other snooper. The
operation cannot proceed until all of the available resources are
available and once available, the operation is propagated only once by
those snooping resources.
Um método e um instrumento para impedir a ocorrência dos becos sem saída da execução do sistema unresolvable transportam operações. No general, cada snooper aceita speculatively uma operação dada quando tem um amortecedor do snoop disponível. Entretanto, melhor que incondicional processando a operação, o snooper espera para determinar se um outro participant retried a operação devido ao unavailability de um amortecedor do snoop. Se alguns retrys snooping do participant uma operação, todos os snoopers que aceitaram speculatively uma operação para o abandono processando disserem a operação. Se nenhum retrys snooping do participant a operação, recursos snooping suficientes estiver disponível para todos os esconderijos necessários para começar a processar a operação e o iniciador podem considerar a operação terminada. Ou seja nenhuma operação é processada até que todos os recursos snooping necessários estejam disponíveis para aceitar a operação. Isto impede que o sistema comece no beco sem saída do ping-pong. Snoopers pode com segurança supor que cada apresentação de uma operação deve ser propagada e que nenhuma operação terá sido inteiramente ou processado parcialmente por algum outro snooper. A operação não pode proseguir até que todos os recursos disponíveis estejam disponíveis e uma vez disponíveis, a operação é propagada somente uma vez por aqueles recursos snooping.