Sebbene la maggior parte delle risposte si avvicini dal lato del software e / o del modello 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 di indirizzo e la sua operazione è completamente trasparente per il processore.)
I chip RAM hanno un decodificatore di indirizzo singolo, che riceve l'indirizzo della cella di memoria, che arriva sul bus di indirizzo (e in modo simile un bus dati, dentro o fuori). Le memorie presenti sono costruite nel "metodo a singolo processore", cioè 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, alias bus) può esistere solo un segnale alla volta, quindi il chip RAM può ricevere un indirizzo di cella alla volta. Finché non si è certi che i due core inseriscano lo stesso indirizzo nel bus indirizzo, l'accesso simultaneo al bus da parte di due diversi driver di bus (come i core) non è fisicamente possibile. (E, se è lo stesso, è ridondante).
Il resto è la cosiddetta accelerazione hardware. Il bus di coerenza, il cache, l'accesso SIMD, ecc. Sono solo alcune belle facciate di fronte alla RAM fisica, la tua domanda riguardava. Gli acceleratori citati potrebbero coprire la lotta per l'utilizzo esclusivo del bus indirizzo e i modelli di programmazione non hanno molto a che fare con la tua domanda. Si noti inoltre che l'accesso simultaneo sarebbe anche contro l'astrazione "spazio degli indirizzi privati".
Quindi, alle tue domande: l'accesso diretto alla RAM diretta non è possibile, né con lo stesso 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 e dalla costruzione della cache, nonché dalla località spaziale e temporale dei dati.
E sì, hai ragione: l'elaborazione multi (core) senza accesso RAM avanzato non sarà di grande aiuto per le applicazioni che richiedono molta RAM.
Per una migliore comprensione: basta ricordare come funziona Direct Memory Access. Sia la CPU che il dispositivo DMA possono inserire l'indirizzo sul bus, quindi devono escludersi a vicenda dall'uso simultaneo del bus.