ほとんどの答えはソフトウェアおよび/またはハードウェアモデルの側面からアプローチしますが、最もクリーンな方法は物理RAMチップの動作を考慮することです。(キャッシュはプロセッサとメモリの間に配置され、同じアドレスバスを使用するだけで、その動作はプロセッサに対して完全に透過的です。)RAMチップには、メモリセルのアドレスを受信する単一のアドレスデコーダがあります。アドレスバス(および同様に、入力または出力のデータバス)。現在のメモリは「シングルプロセッサアプローチ」で構築されています。つまり、1つのプロセッサが1つのバスを介して1つのメモリチップに接続されています。言い換えれば、これは「フォン・ノイマンのボトルネック」です。すべての命令が少なくとも1回はメモリを参照する必要があるからです。このため、1本のワイヤ(またはワイヤ、別名バス)では、一度に1つの信号しか存在できません。そのため、RAMチップは一度に1つのセルアドレスを受け取る場合があります。2つのコアが同じアドレスをアドレスバスに配置できるようになるまで、2つの異なるバスドライバー(コアなど)による同時バスアクセスは物理的に不可能です。(そして、同じである場合、それは冗長です)。
残りはいわゆるハードウェアアクセラレーションです。コヒーレンスバス、キャッシュ、SIMDアクセスなどは、物理RAMの前にある素敵なファサードに過ぎません。前述のアクセラレータは、アドレスバスを排他的に使用するための戦いをカバーする可能性があり、プログラミングモデルはあなたの質問とはあまり関係ありません。また、同時アクセスは抽象化「プライベートアドレス空間」にも反することに注意してください。
だから、あなたの質問に:同じアドレスでも異なるアドレスでも、同時の直接RAMアクセスは不可能です。キャッシュを使用すると、この事実がカバーされ、場合によっては明らかに同時アクセスが可能になります。キャッシュレベルと構造、およびデータの空間的および時間的な局所性に依存します。はい、あなたは正しいです。強化されたRAMアクセスなしのマルチ(コア)処理は、RAMを集中的に使用するアプリケーションにはあまり役立ちません。
理解を深めるために、Direct Memory Accessの仕組みを思い出してください。CPUとDMAデバイスの両方がバスにアドレスを配置できるため、バスの同時使用からお互いを除外する必要があります。