A system and method avoids "livelock" and "starvation" among two or more
input/output (I/O) devices of a symmetrical multiprocessor (SMP) computer
system competing for the same data. The SMP computer system includes a
plurality of interconnected processors, one or more memories that are
shared by the processors, and a plurality of I/O bridges to which the I/O
devices are coupled. A cache coherency protocol is executed the I/O
bridges, which requires the I/O bridges to obtain "exclusive" (not shared)
ownership of all data stored by the bridges. In response to a request for
data currently stored by an I/O bridge, the bridge first copies at least a
portion of that data to a non-coherent buffer before invalidating the
data. The bridge then takes the largest amount of the data saved in its
non-coherent buffer that its knows to be coherent, and releases only that
known coherent amount to the I/O device, and then discards all of the
saved data.
Um sistema e um método evitam o "livelock" e o "starvation" entre dois ou mais dispositivos do input/output (I/O) de um sistema computatorizado simétrico do multiprocessor (SMP) que compete para os mesmos dados. O sistema computatorizado de SMP inclui um plurality processadores interconectados, de um ou mais memórias que são compartilhadas pelos processadores, e um plurality das pontes de I/O a que os dispositivos de I/O são acoplados. Um protocolo da coerência do esconderijo é executado as pontes de I/O, que requeira as pontes de I/O obter (não compartilhado) a posse "exclusiva" de todos os dados armazenados pelas pontes. Em resposta a um pedido para os dados armazenados atualmente por uma ponte de I/O, a ponte primeira copía ao menos uma parcela daquela dados a um amortecedor non-coherent antes de invalidating os dados. A ponte faz exame então da quantidade a maior dos dados conservados em seu amortecedor non-coherent que seu sabe para ser coherent, e libera somente essa quantidade coherent sabida ao dispositivo de I/O, e rejeita então todos os dados conservados.