Jeśli naprawdę nie ma zapisów w twoim bloku 1 MB, to tak, każdy rdzeń może czytać z własnej linii pamięci podręcznej bez żadnego problemu, ponieważ nie są zapisywane żadne zapisy i dlatego nie powstają problemy z koherencją pamięci podręcznej.
W architekturze wielordzeniowej, zasadniczo istnieje pamięć podręczna dla każdego rdzenia i "Protokół koherencji pamięci podręcznej", który unieważnia pamięć podręczną w niektórych rdzeniach, które nie mają najbardziej aktualnych informacji. Myślę, że większość procesorów implementuje MOESI protocol dla spójności pamięci podręcznej.
Koherencja pamięci podręcznej to złożony temat, który został w dużej mierze omówiony (szczególnie podoba mi się kilka artykułów Joe Duffy here i here). Dyskusja toczy się wokół możliwych kar za wydajność kodu, które, choć najwyraźniej są wolne od blokady, mogą zwolnić, ponieważ protokół koherencji pamięci podręcznej kopie, aby zachować spójność w pamięciach procesorów, ale dopóki nie ma zapisów, po prostu nie ma spójność utrzymać, a tym samym nie stracić na wydajności.
Aby wyjaśnić, jak wspomniano w komentarzu, nie można uzyskać dostępu do pamięci RAM jednocześnie, ponieważ architektury x86 i x64 implementują pojedynczą magistralę, która jest współdzielona między rdzeniami za pomocą SMP, gwarantując dostęp do pamięci głównej o uczciwości. Niemniej jednak ta sytuacja jest ukryta przez każdy rdzeń pamięci podręcznej, który pozwala każdemu rdzeniu mieć własną kopię danych. Dla 1 MB danych możliwe byłoby zaistnienie na pewnym sporze, podczas gdy rdzeń zaktualizowałby pamięć podręczną, ale byłby on nieistotny.
Przydatne linki:
Każdy dostęp do pamięci ma rozmiar pamięci podręcznej = 64 bajty dla nowoczesnych procesorów. Dostęp do linii pamięci podręcznej ma charakter atomowy. Linie mogą być współdzielone przez rdzenie do czytania. – osgx