The multi-processor system according to the present invention includes at
least two processors, a system bus providing communication between the
responses to commands on the system bus. One of the processors generates a
snoop response to a command, associated with the same real address as the
snooped command, which issued from the processor. In response to a command
requesting invalidation of a cache line, a cache within the processor
conditionally casts back the cache line to a transition cache in the
processor. Based on the system response to the invalidation command, the
transition cache either discards the cast back or converts the cast back
into a command for writing the cache line in the main memory of the
system. The processor also converts an exclusive read command requiring a
reservation to a non-exclusive read command if that reservation has been
lost prior to placing the command on the system bus. Furthermore, the
transition cache in the processor may shift the memory coherency image
state for a non-exclusive command, which is waiting for data to return, if
a command associated with the same real address is snooped. In response to
a command requesting a cache line, the cache in the processor copies that
cache line to the transition cache and updates the state for the cache
line. The transition cache holds the cache line until a system response is
received.
O sistema do multi-processor de acordo com a invenção atual inclui ao menos dois processadores, uma barra-ônibus do sistema que fornece uma comunicação entre as respostas aos comandos na barra-ônibus do sistema. Um dos processadores gera uma resposta do snoop a um comando, associado com o mesmo endereço real que snooped o comando, que emitiu do processador. Em resposta a um comando que pede o invalidation de uma linha do esconderijo, um esconderijo dentro do processador molda condicional para trás a linha do esconderijo a um esconderijo da transição no processador. Baseado na resposta de sistema ao comando do invalidation, o esconderijo da transição rejeita o molde para trás ou converte o molde para trás em um comando para escrever a linha do esconderijo na memória principal do sistema. O processador converte também um comando lido exclusivo que requer um reservation a um comando lido non-exclusive se esse reservation for perdido antes de colocar o comando na barra-ônibus do sistema. Além disso, o esconderijo da transição no processador pode deslocar o estado da imagem da coerência da memória para um comando non-exclusive, que esteja esperando dados para retornar, se um comando associado com o mesmo endereço real for snooped. Em resposta a um comando que pede uma linha do esconderijo, o esconderijo no processador copía essa linha do esconderijo ao esconderijo da transição e atualiza o estado para a linha do esconderijo. O esconderijo da transição prende a linha do esconderijo até que uma resposta de sistema esteja recebida.