Qual é o objetivo da coerência do cache?

Em CPUs como x86, que fornecem coerência de cache, como isso é útil do ponto de vista prático? Entendo que a idéia é tornar as atualizações de memória feitas em um núcleo imediatamente visíveis em todos os outros núcleos. Esta é uma propriedade útil. No entanto, não se pode confiar muito nele, se não estiver escrevendo na linguagem assembly, porque o compilador pode armazenar atribuições de variáveis nos registradores e nunca gravá-las na memória. Isso significa que ainda é necessário executar etapas explícitas para garantir que as coisas feitas em outros threads sejam visíveis no thread atual. Portanto, de uma perspectiva prática, o que alcançou a coerência do cache?

questionAnswers(6)

yourAnswerToTheQuestion