Obwohl die meisten Antworten von der Seite des Software- und / oder Hardwaremodells ausgehen, ist es am saubersten, zu prüfen, wie die physischen RAM-Chips funktionieren. (Der Cache befindet sich zwischen dem Prozessor und dem Speicher und verwendet einfach denselben Adressbus, und sein Betrieb ist für den Prozessor vollständig transparent.) RAM-Chips haben einen einzelnen Adressdecoder, der die Adresse der Speicherzelle empfängt, die ankommt der Adressbus (und ähnlich ein Datenbus, entweder rein oder raus). Die gegenwärtigen Speicher sind in dem "Einzelprozessor-Ansatz" aufgebaut, dh ein Prozessor ist über einen Bus mit einem Speicherchip verbunden. Mit anderen Worten, dies ist der "von Neumann-Engpass", da jeder einzelne Befehl mindestens einmal auf den Speicher verweisen muss. Aus diesem Grund kann auf einem Draht (oder Drähten, auch Bus genannt) immer nur ein Signal vorhanden sein. so kann der RAM-Chip jeweils eine Zellenadresse empfangen. Solange Sie nicht sicherstellen können, dass die beiden Kerne dieselbe Adresse auf den Adressbus legen, ist der gleichzeitige Buszugriff durch zwei verschiedene Bustreiber (wie Kerne) physikalisch nicht möglich. (Und wenn es dasselbe ist, ist es überflüssig).
Der Rest ist die sogenannte Hardwarebeschleunigung. Der Kohärenzbus, der Cache, der SIMD-Zugriff usw. sind nur einige nette Fassaden vor dem physischen RAM, um die es bei Ihrer Frage ging. Die genannten Beschleuniger decken möglicherweise den Kampf um die ausschließliche Verwendung des Adressbusses ab, und die Programmiermodelle haben nicht viel mit Ihrer Frage zu tun. Beachten Sie auch, dass der gleichzeitige Zugriff auch gegen die Abstraktion "privater Adressraum" verstößt.
Also, zu Ihren Fragen: Der gleichzeitige direkte RAM-Zugriff ist weder mit der gleichen noch mit unterschiedlichen Adressen möglich. Die Verwendung von Cache kann diesen Umstand abdecken und in einigen Fällen den scheinbar gleichzeitigen Zugriff ermöglichen. Dies hängt von der Cachestufe und -konstruktion sowie von der räumlichen und zeitlichen Lokalität Ihrer Daten ab. Und ja, Sie haben Recht: Multi (Core) -Verarbeitung ohne erweiterten RAM-Zugriff hilft bei RAM-intensiven Anwendungen nicht viel.
Zum besseren Verständnis: Denken Sie daran, wie Direct Memory Access funktioniert. Sowohl die CPU als auch das DMA-Gerät können dem Bus Adressen zuweisen, so dass sie sich gegenseitig von der gleichzeitigen Nutzung des Busses ausschließen müssen.