메모리 일관성과 캐시 일관성


17

Sequential Consistency가 Cache Coherence보다 강력한 속성이라는 것이 사실입니까?

에 따르면

소린, 다니엘 J; 힐 마크 D; Wood, David A : 메모리 일관성 및 캐시 일관성에 대한 입문서 , Morgan & Claypool, 2011

순차적 일관성은 (공식적으로 아님)으로 설명 될 수 있습니다.

순차 일관성 메모리 모델은 시스템이 모든 스레드의로드를 실행하고 각 스레드의 프로그램 순서를 고려한 전체 순서로 모든 메모리 위치에 저장해야한다고 지정합니다. 각로드는 해당 총 주문에서 가장 최근 상점의 값을 가져옵니다.

즉, 시스템은 순차적으로 일관성이 있습니다. 각 스레드의 메모리 이벤트 (로드 및 저장)가 주어진 경우 1) 각 스레드의 이벤트 순서가 유지되고 2) 전역 순서는 다음과 같이 모든 이벤트를 주문할 수 있습니다 직렬 (모든로드는 저장된 최신 값을 반환)

이제 그들은 일관성을 계속 설명합니다.

순차 일관성의 정의와 유사한 일관성 의 정의는 일관성 있는 시스템이 모든 스레드의로드를 실행하고 각 스레드의 프로그램 순서를 고려한 전체 순서로 단일 메모리 위치에 저장하는 것으로 나타나야한다는 것입니다.

각 스레드의 주어진 메모리 이벤트 경우 즉, 시스템은, 조리 각 위치가 해당 이벤트의 순서로 각 스레드 1) : 우리는 그 해당 위치에 대한 이벤트를 주문할 수있는 그 위치가 유지되고, 2) 각각을 주문이 일련 번호 인 위치

마지막으로 차이점을 지적합니다.

이 정의 는 일관성과 일관성 사이 의 중요한 차이점을 강조합니다 . 일관성은 메모리 당 위치별로 지정되는 반면 일관성은 모든 메모리 위치와 관련하여 지정됩니다.

따라서 일관성있는 시스템의 경우 각 위치에 대한 모든 이벤트에 대한 총 주문이 필요하므로 (일부 위치에 대한 이벤트 간의 순서) 일관성있는 시스템의 경우 전체 이벤트에 대해 전체 순서가 정의되어야합니다. 주문은 다른 위치의 이벤트 사이에 있습니까?)

일관성이 일관성이 덜 엄격하다는 의미입니까? (재미있는 것 같습니다!) 일관성은 있지만 일관성이없는 흔적이 있습니까?


2
"답을 확인하십시오!"라는 형식의 질문은 마음에 들지 않습니다. 보다 구체적인 질문을 추가 할 수 있습니까? 당신의 격차가 어디에 있다고 느끼십니까?
Raphael

@Raphael 당신이 옳고, 내가 질문을 쓸 때 기분이 좋지 않았습니다. 그러나 인터넷에서 답을 찾지 못하면 어떻게해야합니까 ( '일관성에 대한 일관성 대화는 모든 비트에 대해 이야기하는 일관성과 다릅니다)'와 같은 모호한 주장을 제외하고 대답을 찾으려고 노력했을 때 그것이 정확한지 확신하지 못했습니다. 비린내가 궁금해? 또는 질문에 대한 답변을 제공하지 않습니까? :)
Ayrat

@Ayrat 질문의 마지막 부분을 확인하려는 답변으로 읽었습니다. 이 경우 독자를 찾아야 할 의심이 있습니다 (그렇지 않은 이유는 무엇입니까?). 내가 잘못 읽었 을까?
Raphael

@Raphael '마지막 부분을 확인하고 싶습니다'-예. '왜 물어?' -주제가 새롭고 결론이 옳은지 확신하지 못했습니다. 나는 앞으로 이런 종류의 질문을 피하려고 노력할 것이며 아마도 그것을 확인할 누군가를 찾을 것입니다.)
Ayrat

답변:


11

지적했듯이 일관성 은 개별 메모리 위치의 속성이며 일관성 은 모든 메모리 위치에 대한 액세스 순서를 나타냅니다. 순차적 일관성은 일관성보다 엄격하게 강력한 속성입니다. 즉, 순차적으로 일관된 모든 시스템은 모든 메모리 위치에서 일관됩니다. 그 반대는 사실이 아니며, 모든 위치에서 일관성있는 메모리가 반드시 순차적으로 일관성이있는 것은 아닙니다. 실제로 메모리 모델이 거의 일관성이없는 실제 캐시 일관성 다중 프로세서가 많이 있습니다 (다른 프로세서가 다른 위치에 대한 액세스가 다른 순서로 발생하는 경우가 있습니다).

순차적으로 일관성이 있다는 증거는 일관성을 의미합니다.

순차적으로 일관된 시스템의 추적이 주어지면, 정의에 따라 추적은 시스템의 모든 프로세서가 동의 한 총 순서를 가져야합니다. 이제 해당 트레이스의 위치에 대한 액세스를 살펴보십시오 . 총 주문은 전이 적이므로 위치 대한 액세스 는 시스템의 모든 프로세서가 동의 한 총 주문을받습니다. 따라서 모든 메모리 위치는 일관성이 있습니다.xx

반대로 작동하지 않습니다. 각 및 대한 단일 액세스로 두 개의 코 히어 런트 메모리 위치 및 를 고려하십시오 . 모든 프로세서는 위치 에 대한 액세스 순서에 동의하고 모든 프로세서는 위치 에 대한 전체 액세스 순서에 동의 하지만 일부 프로세서는 순서를 준수하는 반면 다른 프로세서는 순서를 준수 할 수 있습니다 . 따라서 일관성은 순차적 일관성을 의미하지 않습니다.xyx0y0xyxyyx

이것은 놀라운 결과로 이어질 수 있습니다. 예를 들어

initially A=B=0
process 1               process 2
store A := 1            load B (gets 1)
store B := 1            load A (gets 0) 

이 흔적은 일관 적입니다.

  • A의 경우 주문은 proc2 loads A(gets 0),proc1 stores A:=1
  • B의 경우 순서는 다음 proc1 stores B:=1과 같습니다. ,proc2 loads B(gets 1)

그러나 일관성이 없습니다! if proc2 load B가 1을 반환 하므로 proc1 store A := 1이미 발생했으며 proc2 load A1도 반환해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.