Sebbene la maggior parte delle risposte si avvicini dal lato del modello software e / o hardware, il modo più pulito è considerare come funzionano i chip RAM fisici. (La cache si trova tra il processore e la memoria e utilizza semplicemente lo stesso bus degli indirizzi e il suo funzionamento è completamente trasparente per il processore.) I chip RAM hanno un decodificatore a singolo indirizzo, che riceve l'indirizzo della cella di memoria, arrivando su il bus degli indirizzi (e similmente un bus dati, in entrata o in uscita). Le memorie presenti sono costruite nell '"approccio a processore singolo", ovvero un processore è collegato attraverso un bus a un chip di memoria. In altre parole, questo è il "collo di bottiglia di von Neumann", poiché ogni singola istruzione deve fare riferimento alla memoria almeno una volta. Per questo motivo, su un filo (o fili, aka bus) può esistere un solo segnale alla volta, quindi il chip RAM può ricevere un indirizzo di cella alla volta. Fino a quando non è possibile garantire che i due core inseriscano lo stesso indirizzo nel bus dell'indirizzo, l'accesso al bus simultaneo da parte di due driver di bus diversi (come i core) non è fisicamente possibile. (E, se è lo stesso, è ridondante).
Il resto è la cosiddetta accelerazione hardware. Il bus di coerenza, la cache, l'accesso SIMD, ecc. Sono solo alcune belle facciate di fronte alla RAM fisica, la tua domanda era. Gli acceleratori citati possono coprire la lotta per l'utilizzo esclusivo del bus degli indirizzi e i modelli di programmazione non hanno molto a che fare con la tua domanda. Si noti inoltre che l'accesso simultaneo sarebbe anche contrario all'astrazione "spazio di indirizzi privati".
Quindi, alle tue domande: l'accesso diretto diretto alla RAM non è possibile, né con gli stessi né con indirizzi diversi. L'uso della cache potrebbe coprire questo fatto e potrebbe consentire l'accesso apparentemente simultaneo in alcuni casi. Dipende dal livello della cache e dalla costruzione, nonché dalla località spaziale e temporale dei dati. E sì, hai ragione: l'elaborazione multi (core) senza un accesso RAM avanzato, non aiuterà molto per le applicazioni ad alta intensità di RAM.
Per una migliore comprensione: basta ricordare come funziona l'accesso diretto alla memoria. Sia la CPU che il dispositivo DMA possono inserire l'indirizzo sul bus, quindi devono escludersi a vicenda dall'uso simultaneo del bus.