Если у меня есть ЦП с двумя ядрами, каждое ядро имеет свой собственный кэш L1, возможно ли, чтобы Core1 и Core2 одновременно кэшировали одну и ту же часть памяти?
Да. Производительность была бы ужасной, если бы это было не так. Рассмотрим два потока, выполняющих один и тот же код. Вы хотите этот код в обоих кешах L1.
Если это возможно, каким будет значение основной памяти, если и Core1, и Core2 отредактировали их значение в кеше?
Старое значение будет в основной памяти, что не имеет значения, поскольку ни один процессор не будет его читать. Перед извлечением измененного значения из кэша оно должно быть записано в память. Обычно используется какой-то вариант протокола MESI . В традиционной реализации MESI, если значение изменяется в одном кеше, оно вообще не может присутствовать в любом другом кеше на том же уровне.