0

각 프로세서 코어는 자체 캐시를 가질 수 있습니다. 캐시는 쓰루 스루 및 리드 스루이다. 두 개의 스레드가 다른 코어에서 실행 중이고 세마포어에 의해 동기화되는 경우 메모리 위치 캐시 읽기에서이 위치의 다른 버전을 갖거나 프로세서에 의해 어떻게 든 투명하게 동기화됩니까? x86 및 RISC에 관심이 있습니다.코어 간 캐시 동기화

+1

세마포어는 하드웨어 기능이 아니며 서로 다른 언어로 구현됩니다. 어떤 언어와 도서관을 의미합니까? –

+0

@AlexeiKaigorodov 코드 라인의 실행 시간 *이 올바르게 동기화되었음을 나타 내기 위해 세마포어에 대해서만 설명했습니다. 내가 정말로 관심을 갖고있는 것은 캐시가 프로그래머에게 투명하게 동기화되어 있는지 여부이다. 동기화 할 어셈블리 명령이 있는지 여부와 일반적인 언어가 C++ 및 스레딩 라이브러리 (windows 또는 linux)에서 해당 명령을 사용하여 동기화 할 수 있는지 여부가 표시됩니다. 세마포어 함수를 호출 할 때. – Trismegistos

답변

0

사용할 가능성이있는 모든 SMP 머신에는 하드웨어에 구현 된 캐시 일관성이 있습니다.

0

리눅스 설명서 (https://www.kernel.org/doc/Documentation/memory-barriers.txt)에 따르면 : 캐시가 일관성있는 것으로 예상되는 동안 일관성이 보장됩니다 ( ). 즉, 하나의 CPU에서 변경 한 내용은 모든 CPU에서 결국 으로 볼 수있게되므로 이 다른 다른 CPU에서 동일한 순서로 나타나게 될 것이라는 보장은 없습니다.