대부분의 답변은 소프트웨어 및 / 또는 하드웨어 모델 측면에서 접근하지만 가장 깨끗한 방법은 물리적 RAM 칩의 작동 방식을 고려하는 것입니다. (캐시는 프로세서와 메모리 사이에 위치하며 단순히 동일한 주소 버스를 사용하며, 그 동작은 프로세서에 대해 완전히 투명합니다.) RAM 칩에는 하나의 단일 주소 디코더가 있으며, 메모리 셀의 주소를 수신하여 도착합니다. 주소 버스 (및 유사하게 데이터 버스). 본 메모리는 "단일 프로세서 접근 방식"으로 구축된다. 즉, 하나의 프로세서는 하나의 버스를 통해 하나의 메모리 칩에 연결된다. 다시 말해, 이것은 "von Neumann 병목 현상"입니다. 왜냐하면 모든 단일 명령은 메모리를 한 번 이상 참조해야하기 때문입니다. 이 때문에 하나의 와이어 (또는 버스, 일명 버스)에는 한 번에 하나의 신호 만 존재할 수 있습니다. RAM 칩은 한번에 하나의 셀 어드레스를 수신 할 수있다. 두 개의 코어가 주소 버스에 동일한 주소를 지정할 수있을 때까지 두 개의 다른 버스 드라이버 (코어와 같은)에 의한 동시 버스 액세스는 물리적으로 불가능합니다. (동일한 경우 중복됩니다).
나머지는 소위 하드웨어 가속입니다. 코 히어 런스 버스, 캐시, SIMD 액세스 등은 실제 RAM 앞에 멋진 외관입니다. 언급 된 가속기는 주소 버스를 독점적으로 사용하기위한 싸움을 다룰 수 있으며 프로그래밍 모델은 귀하의 질문과 관련이 없습니다. 또한 동시 액세스는 추상화 "개인 주소 공간"에 위배됩니다.
따라서 귀하의 질문에 : 동일한 직접 또는 다른 주소로 동시 RAM 직접 액세스는 불가능합니다. 캐시를 사용하면이 사실을 다룰 수 있으며 경우에 따라 명백한 동시 액세스를 허용 할 수 있습니다. 캐시 수준 및 구성, 데이터의 공간적 및 시간적 지역성에 따라 다릅니다. 그렇습니다. 맞습니다. RAM 액세스가 향상되지 않은 멀티 코어 처리는 RAM 집약적 응용 프로그램에는별로 도움이되지 않습니다.
이해를 돕기 위해 : 직접 메모리 액세스의 작동 방식을 기억하십시오. CPU와 DMA 장치는 모두 버스에 주소를 넣을 수 있으므로 버스를 동시에 사용하지 못하도록 서로 배제해야합니다.