프로세서의 일관성
Processor consistency프로세서의 일관성은 동시 컴퓨팅(분산 공유 메모리, 분산 트랜잭션 등) 영역에서 사용되는 일관성 모델 중 하나입니다.
다른 프로세서가 개개의 프로세서에서 기입한 것을 표시하는 순서가, 발행한 순서와 같으면, 시스템은 프로세서의 정합성을 나타냅니다.따라서 프로세서의 일관성은 여러 프로세서를 탑재한 시스템에만 적용됩니다.모든 프로세서의 쓰기를 동일한 순서로 볼 필요가 없기 때문에 원인 일관성 모델보다 약하지만 캐시 [1]일관성이 필요하기 때문에 PRAM 일관성 모델보다 강력합니다.원인 정합성과 프로세서 정합성의 [1]또 다른 차이점은 프로세서 정합성이 저장 완료 및 쓰기 원자성을 기다리는 로드의 요건을 없앤다는 것입니다.프로세서의 정합성도 캐시 정합성보다 강합니다.프로세서의 정합성에서는 프로세서의 모든 쓰기가 같은 메모리 [1]위치에 쓸 뿐만 아니라 순서대로 표시되어야 하기 때문입니다.
프로세서의 정합성 예
| P1. | W(x)1 | W(x)3 | ||
|---|---|---|---|---|
| P2. | R(x)1 | R(x)3 | ||
| P3. | W(y)1 | W(y)2 | ||
| P4. | R(y)1 | R(y)2 |
| P1. | W(x)1 | W(x)3 | ||
|---|---|---|---|---|
| P2. | R(x)3 | R(x)1 | ||
| P3. | W(y)1 | W(y)2 | ||
| P4. | R(y)2 | R(y)1 |
오른쪽의 예 1에서는 각 프로세서의 모든 쓰기가 다른 프로세서에 의해 발생한 순서대로 표시되며 트랜잭션은 일관성이 있기 때문에 단순한 시스템은 프로세서의 일관성을 따릅니다.예 2는 P1과 P3에 의한 쓰기가 각각 P2와 P4에 의해 순서가 어긋나기 때문에 프로세서에 일관성이 없습니다.
다음 예 3에서 가장 강력한 일관성 모델은 프로세서의 일관성입니다.프로세서당 최대 1개의 쓰기밖에 없기 때문에 이것은 판단하기 어렵습니다.이 예는 인과적으로 일관성이 없지만, P2의 R(x)1이 잠재적으로 P2의 W(x)2를 일으킬 수 있기 때문에 P1의 W(x)1이 P2의 W(x)2보다 인과적으로 우선함을 확립할 수 있다.다만, P1과 P2의 2개의 기입 순서에 대해서는, P3와 P4가 일치하지 않습니다.
예 4의 시스템은 프로세서의 정합성이 없습니다.이것은, 같은 프로세서의 일부의 기입이 다른 프로세서에 의해서 순서가 어긋나는 것을 알 수 있기 때문입니다.구체적으로 말하면, 1개의 장소에의 기입은 순서대로 표시되지만, W(x)2 by P1은 W(y)4 by P2보다 앞에 표시되지 않습니다.순서대로 표시되는 기입은 같은 메모리 위치에의 기입뿐이기 때문에, 이 예에서는 캐시 정합성으로 제한됩니다.
| P1. | W(x)1 | ||||
|---|---|---|---|---|---|
| P2. | R(x)1 | W(x)2 | |||
| P3. | R(x)1 | R(x)2 | |||
| P4. | R(x)2 | R(x)1 |
| P1. | W(x)2 | W(y)4 | W(x)3 | W(y)1 | ||
|---|---|---|---|---|---|---|
| P2. | R(y)4 | R(x)2 | R(y)1 | R(x)3 |
프로세서의 일관성 대시퀀셜 일관성
프로세서 일관성(PC)은 순차적 일관성(SC)[2]으로 적용되는 오래된 저장소와 젊은 부하 간의 순서를 완화합니다.이것에 의해, 캐시에 로드를 발행해, 낡은 스토어보다 먼저 완료할 수 있습니다.즉, 로드 추측을 실장할 필요 없이, 기입 버퍼에 스토어를 큐잉 할 수 있습니다(부하는 [3]자유롭게 계속할 수 있습니다).이 점에서는 SC보다 PC의 퍼포먼스가 우수합니다.실패한 사양에 대한 복구 기술이 필요하지 않기 때문에 파이프라인 [3]플래시가 적기 때문입니다.SC 시스템이 사용하는 프리페치 최적화는 PC [3]시스템에도 적용할 수 있습니다.프리페치란 로드/스토어 지연 시간을 줄이기 위해 실제로 필요하기 전에 다가오는 로드 및 스토어에 대해 데이터를 미리 가져오는 작업입니다.PC는 대응하는 스토어에 앞서 로드를 재주문할 수 있도록 함으로써 로드 레이텐시를 단축하기 때문에 프리페치된 데이터가 [3]로드보다 스토어에서 더 많이 사용되기 때문에 프리페치할 필요성이 다소 감소합니다.
프로그래머의 직감
PC 시스템이 프로그래머의 직관을 얼마나 잘 따르느냐에 따라 적절히 동기화된 시스템에서 PC와 SC의 결과는 [3]동일한 것으로 나타났습니다.프로그래머의 직관은 기본적으로 프로그래머가 명령을 실행하는 방법을 예상하는 것입니다. 보통 "프로그램 순서"라고 합니다.멀티프로세서 시스템에서의 프로그램 순서는 순차 실행과 같은 결과를 낳는 명령의 실행이다.PC와 SC가 모두 이 예상을 따르는 것은 PC 시스템의 해당 로드와 저장소가 서로에 [3]대해 여전히 주문되어 있다는 사실에 따른 직접적인 결과입니다.예를 들어 잠금 동기화에서 동작이 PC에 의해 완전히 정의되지 않은 유일한 조작은 잠금 취득 스토어입니다.이 스토어에서는 이후의 부하가 크리티컬섹션에 있고 그 순서가 [3]결과에 영향을 줍니다.단, 이 동작은 보통 스토어 조건부 또는 원자적인 명령으로 구현되므로 동작에 실패하면 나중에 반복되고 모든 젊은 부하도 [3]반복됩니다.이 저장소에서 발생하는 모든 로드는 크리티컬섹션에서 발생하는 로드에 대해 여전히 순서가 매겨져 있기 때문에 크리티컬섹션의 로드를 실행하기 전에 오래된 로드를 모두 완료해야 합니다.
프로세서의 정합성 모델과 다른 완화된 정합성 모델 비교
프로세서의 일관성은 시퀀셜의 일관성보다 약하지만 대부분의 경우 필요한 것보다 더 강력한 일관성 모델입니다.이는 멀티프로세서 [4]시스템에서 실행되는 프로그램에 고유한 동기화 포인트의 수 때문입니다.즉, 데이터 레이스는 발생하지 않습니다(데이터 레이스는 적어도 1개의 액세스가 [3]쓰기인 메모리 위치에 대한 여러 개의 동시 액세스입니다).이 점을 고려하면, 어떤 조작도 동기[3] 포인트와 동기 포인트(Weak Ordering)를 교차하지 않는 한, 모델은 모든 메모리 조작을 재구성할 수 있다는 것을 알 수 있습니다.단, 순서가 약한 경우에는 프로세서의 일관성과 같은 제한이 있습니다.즉, 시스템은 일관성을 유지해야 하며, 따라서 같은 메모리 위치에 대한 모든 쓰기가 모든 프로세서에서 같은 [4]순서로 인식되어야 합니다.약한 순서와 마찬가지로 릴리스 일관성 모델에서는 모든 메모리 동작의 순서를 변경할 수 있지만 보다 구체적이고 동기 조작을 분해하여 순서를 보다 [3]완화할 수 있습니다.이 두 모델 모두 코드의 적절한 동기화 및 경우에 따라서는 하드웨어 동기화 지원을 전제로 하기 때문에 이 모델을 사용하여 실행하는 프로그램의 신뢰성이 확실하지 않은 경우 프로세서의 일관성을 유지하는 것이 보다 안전한 모델입니다.
SPARC V8 TSO, IBM-370 및 x86-TSO 메모리 모델과의 유사성
프로세서 정합성의 주요 컴포넌트 중 하나는 쓰기 후 읽기가 프로그램 순서에 어긋나 실행이 허용되는 경우입니다.이것에 의해, 로드가 스토어보다 먼저 행해지면, 기입 지연이 숨겨집니다.많은 애플리케이션이 이 구조에서 올바르게 기능하기 때문에, 이러한 유형의 완화된 순서를 구현하는 시스템은 일반적으로 순차적으로 일관성이 있는 것으로 보입니다.이 사양을 준수하는 두 가지 다른 모델은 SPARC V8 TSO(Total Store [4]Ordering)와 IBM-370입니다.
IBM-370 모델은 몇 가지 예외를 제외하고 쓰기 후 읽기를 프로그램 순서로 실행할 수 있도록 허용하는 규격을 따릅니다.첫 번째는 조작이 같은 장소에 있는 경우 프로그램 순서를 따라야 한다는 것입니다.두 번째는 어느 하나의 조작이 시리얼화 명령의 일부이거나 두 조작 사이에 시리얼화 명령이 있는 경우, 조작은 프로그램 [4]순서로 실행되어야 한다는 것입니다.TSO 모델은 언급된 예외 중 하나를 삭제하므로 이 모델은 고려 중인 세 가지 모델 중 가장 엄격한 모델일 수 있습니다.
SPARC V8 TSO 모델은 IBM-370 모델과 매우 유사하지만, 주요 차이점은 동일한 위치에서 작업을 프로그램 순서로 완료할 수 있다는 점입니다.이 경우 로드는 발생한 스토어를 프로그램 [4]순서 면에서 "오래된" 스토어를 반환할 수 있습니다.이러한 모델은 프로세서의 정합성과 비슷하지만, 이러한 모델의 메모리 복사본은 1개뿐이지만 프로세서의 정합성은 이러한 제한이 없습니다.이것은, 각 프로세서가 독자적인 메모리를 가지는 시스템을 나타내고 있습니다.이것은 프로세서의 일관성을 중시하는 것으로, 「일관성 요건」[4]이 됩니다.
x86-TSO 모델에는 다양한 정의가 있습니다.총 매장 모델은 이름에서 알 수 있듯이 SPARC V8과 매우 유사합니다.다른 정의는 로컬 쓰기 버퍼에 기반합니다.x86과 SPARC TSO 모델의 차이는 일부 명령 누락과 다른 명령 포함에 있지만 모델 자체는 매우 [5]유사합니다.쓰기 버퍼 정의에서는 다양한 상태와 잠금을 사용하여 특정 값을 읽고 쓸 수 있는지 여부를 결정합니다.또한 이 x86 아키텍처용 특정 모델은 이전(정합성 보장) 모델의 문제에 시달리지 않고 프로그래머가 [5]보다 직관적으로 구축할 수 있는 기반을 제공합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b c David Mosberger (1992). "Memory Consistency Models" (PDF). University of Arizona. Retrieved 2015-04-01.
{{cite journal}}:Cite 저널 요구 사항journal=(도움말) - ^ Kourosh Gharachorloo; Daniel Lenoski; James Laudon; Phillip Gibbons; Anoop Gupta; John Hennessy (1 August 1998). "Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors" (PDF). ACM. Retrieved 2015-04-01.
{{cite journal}}:Cite 저널 요구 사항journal=(도움말) - ^ a b c d e f g h i j k Solihin, Yan (2009). Fundamentals of parallel computer architecture : multichip and multicore systems. Solihin Pub. pp. 297–299. ISBN 978-0-9841630-0-7.
- ^ a b c d e f Kourosh Gharachorloo (1995). "Memory Consistency Models for Shared-Memory Multiprocessors" (PDF). Western Research Laboratory. Retrieved 2015-04-07.
{{cite journal}}:Cite 저널 요구 사항journal=(도움말) - ^ a b Scott Owens; Susmit Sarkar; Peter Sewell (2009). "A better x86 memory model: x86-TSO (extended version)" (PDF). University of Cambridge. Retrieved 2015-04-08.
{{cite journal}}:Cite 저널 요구 사항journal=(도움말)

