Chociaż większość odpowiedzi pojawia się od strony oprogramowania i / lub modelu sprzętowego, najczystszym sposobem jest rozważenie działania fizycznych układów pamięci RAM. (Pamięć podręczna znajduje się między procesorem a pamięcią i po prostu używa tej samej magistrali adresowej, a jej działanie jest całkowicie przezroczyste dla procesora.) Układy RAM mają jeden dekoder adresu, który odbiera adres komórki pamięci, przybywając na magistrala adresowa (i podobnie magistrala danych, wejściowa lub wyjściowa). Obecne pamięci są wbudowane w „podejście jednoprocesorowe”, tzn. Jeden procesor jest podłączony jedną magistralą do jednego układu pamięci. Innymi słowy, jest to „wąskie gardło von Neumanna”, ponieważ każda instrukcja musi odwoływać się do pamięci przynajmniej raz. Z tego powodu na jednym przewodzie (lub przewodach, czyli szynie) może występować tylko jeden sygnał na raz, więc układ RAM może odbierać jeden adres komórki na raz. Dopóki nie upewnisz się, że dwa rdzenie ustawią ten sam adres na magistrali adresowej, jednoczesny dostęp do magistrali przez dwóch różnych sterowników magistrali (takich jak rdzenie) jest fizycznie niemożliwy. (A jeśli jest to to samo, jest zbędne).
Reszta to tak zwane przyspieszenie sprzętowe. Magistrala koherencji, pamięć podręczna, dostęp do karty SIM itp. To tylko niektóre fajne fasady przed fizyczną pamięcią RAM, o które pytałeś. Wspomniane akceleratory mogą obejmować wyłącznie walkę o użycie magistrali adresowej, a modele programowania nie mają wiele wspólnego z twoim pytaniem. Należy również zauważyć, że jednoczesny dostęp byłby również sprzeczny z abstrakcyjną „prywatną przestrzenią adresową”.
Tak więc na twoje pytania: jednoczesny bezpośredni dostęp do pamięci RAM nie jest możliwy, ani z tym samym, ani z różnymi adresami. Korzystanie z pamięci podręcznej może zasłaniać ten fakt i w niektórych przypadkach umożliwiać pozornie jednoczesny dostęp. Zależy to od poziomu pamięci podręcznej i konstrukcji, a także od przestrzennej i czasowej lokalizacji danych. I tak, masz rację: przetwarzanie wielordzeniowe bez zwiększonego dostępu do pamięci RAM nie pomoże w przypadku aplikacji wymagających dużej ilości pamięci RAM.
Dla lepszego zrozumienia: przypomnij sobie, jak działa bezpośredni dostęp do pamięci. Zarówno procesor, jak i urządzenie DMA mogą umieszczać adres na magistrali, więc muszą się wzajemnie wykluczać z jednoczesnego korzystania z magistrali.