맨위로가기

캐시 일관성

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

캐시 일관성은 다중 프로세서 시스템에서 각 프로세서의 캐시에 저장된 공유 데이터의 일관성을 유지하는 메커니즘이다. 한 프로세서가 데이터를 변경하면 다른 프로세서의 캐시도 업데이트되어 데이터 불일치를 방지해야 한다. 캐시 일관성을 위해 메모리 일관된 뷰를 제공하고, 쓰기 연산의 순차적 실행을 보장해야 한다.

캐시 일관성 메커니즘에는 버스 스누핑과 디렉토리 기반 방식이 있으며, 스누핑은 버스를 감시하여 캐시를 업데이트하고, 디렉토리 기반은 디렉토리를 통해 캐시 블록의 공유 상태를 관리한다. 캐시 일관성 프로토콜은 쓰기 무효화 또는 쓰기 업데이트 방식을 사용하며, MSI, MESI, MOSI, MOESI 등 다양한 프로토콜이 존재한다. 일관성 모델은 순차적 일관성을 포함하여 성능과 프로그래밍 편의성 사이의 균형을 고려하여 선택해야 한다.

더 읽어볼만한 페이지

  • 캐시 일관성 - MSI 프로토콜
    MSI 프로토콜은 캐시 일관성을 위해 캐시 라인을 무효, 공유, 수정됨의 세 가지 상태로 관리하며, 프로세서 요청과 버스 요청에 따라 상태가 변경된다.
  • 캐시 일관성 - MESI 프로토콜
    MESI 프로토콜은 다중 프로세서 시스템에서 캐시 일관성을 위해 Modified, Exclusive, Shared, Invalid의 네 가지 상태를 사용하여 캐시 라인 상태를 관리한다.
  • 일관성 모델 - 원자성
    원자성은 분자를 구성하는 원자 수로, 분자는 원자성에 따라 단원자, 이원자, 삼원자 분자 등으로 나뉘며, 금속이나 탄소는 원자성이 2로 간주되고 단원자 분자의 원자성은 분자량을 원자량으로 나누어 계산한다.
  • 일관성 모델 - 궁극적 일관성
    궁극적 일관성은 분산 데이터 시스템에서 여러 복제본 간의 일관성을 유지하기 위한 개념으로, 충돌 해결과 강력한 최종 일관성을 포함하며, 충돌 해결은 데이터 버전 교환과 최종 상태 선택으로 구성되고, 강력한 최종 일관성은 동일한 업데이트 집합을 받은 노드들이 동일한 상태가 되도록 보장한다.
  • 병렬 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병렬 컴퓨팅 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
캐시 일관성

2. 캐시 일관성의 정의 및 필요성

공유 메모리 다중 프로세서 시스템에서는 각 프로세서마다 별도의 캐시 메모리를 가지므로, 공유 데이터의 여러 복사본이 메인 메모리와 각 프로세서의 로컬 캐시에 존재할 수 있다. 데이터 복사본 중 하나가 변경되면, 다른 복사본에도 이러한 변경 사항이 반영되어야 한다. 캐시 일관성은 공유 데이터 값의 변경 사항이 시스템 전체에 적시에 전파되도록 보장하는 규칙이다.[2]

캐시 일관성을 위한 주요 요구 사항은 다음과 같다.[3]


  • 쓰기 전파: 한 캐시에서 데이터가 변경되면, 이 변경 사항은 다른 모든 캐시의 해당 데이터 복사본에 전파되어야 한다.
  • 트랜잭션 직렬화: 모든 프로세서에서 단일 메모리 위치에 대한 읽기/쓰기 연산이 동일한 순서로 보여야 한다.


이론적으로는 로드/저장 세분성 단위로 일관성을 유지할 수 있지만, 실제로는 캐시 블록 단위로 일관성을 유지하는 것이 일반적이다.[4]

다중 프로세서 시스템에서 둘 이상의 프로세서가 특정 메모리 위치(X)의 복사본을 캐시에 저장한다고 가정할 때, 캐시 일관성을 유지하기 위해 다음과 같은 조건들이 필요하다.[5]

1. 프로세서 P가 X를 읽고, 이후 동일한 P가 X에 쓰기를 할 때, 다른 프로세서의 쓰기 개입이 없다면 X는 항상 P가 쓴 값을 반환해야 한다.

2. 프로세서 P1이 X를 읽기 전에 다른 프로세서 P2가 X에 쓰기를 했다면, 읽기와 쓰기 사이에 다른 프로세서의 쓰기가 없고 충분한 시간 간격이 있다면 X는 항상 P2가 쓴 값을 반환해야 한다. 이는 메모리의 일관된 뷰를 정의한다. 만약 P1이 P2의 쓰기 이후에도 X의 이전 값을 읽는다면, 메모리는 일관성이 없는 것이다.

위 조건들은 쓰기 전파 요구사항을 충족하지만, 트랜잭션 직렬화 조건을 만족시키기에는 충분하지 않다. 예를 들어, P1과 P2가 공유 변수 S(초깃값 0)를 각각 10과 20으로 변경하는 경우, 쓰기 전파만 보장되면 P3과 P4는 변경 사항을 볼 수 있지만, P3은 P2의 변경(20)을 먼저 본 후 P1의 변경(10)을 보고 10을 반환할 수 있다. 반면 P4는 P1과 P2의 변경을 순서대로 보고 20을 반환할 수 있다. 이 경우 P3과 P4는 메모리에 대해 일관성 없는 뷰를 가지게 된다.

따라서 트랜잭션 직렬화를 만족하고 캐시 일관성을 달성하기 위해서는 다음 조건도 만족해야 한다.

  • 동일한 위치에 대한 쓰기는 순차적으로 수행되어야 한다. 즉, X에 대해 A와 B라는 값이 순서대로 쓰였다면, 프로세서는 X를 B로 읽은 후 A로 읽을 수 없다. X는 A, B 순서로 값을 가져야 한다.[6]


순차적 일관성 메모리 모델을 통해 일관된 시스템을 정의할 수도 있다. "캐시 일관성 시스템은 모든 스레드의 로드 및 저장을 ''단일'' 메모리 위치에 대해 각 스레드의 프로그램 순서를 준수하는 총 순서로 실행하는 것처럼 보여야 한다."[4] 캐시 일관성 시스템과 순차적 일관성 시스템의 차이는 정의가 다루는 주소 위치의 수에 있다(캐시 일관성은 단일 메모리 위치, 순차적 일관성은 모든 메모리 위치).

"동일한 메모리 위치에 대한 모든 쓰기가 어떤 순차적 순서로 수행되면 다중 프로세서가 캐시 일관성을 유지한다"는 정의도 가능하다.[7]

동일한 데이터의 여러 복사본이 서로 다른 캐시에 동시에 존재할 수 있는데, 프로세서가 자체 복사본을 자유롭게 업데이트하면 메모리에 대한 일관성 없는 뷰가 발생할 수 있다. 따라서 일관성을 유지하려면 동일한 메모리 위치에 대한 읽기 및 쓰기 동작을 정의해야 한다.

3. 캐시 일관성 메커니즘

공유 메모리 다중 프로세서 시스템에서 각 프로세서마다 별도의 캐시 메모리가 있는 경우, 공유 데이터의 여러 복사본을 가질 수 있다. 메인 메모리에 1개, 데이터를 요청한 각 프로세서의 로컬 캐시에 1개씩 존재한다. 데이터 복사본 중 하나가 변경되면, 다른 복사본도 해당 변경 사항을 반영해야 한다. 캐시 일관성은 공유 데이터 값의 변경 사항이 시스템 전체에 적시에 전파되도록 보장한다.[2]

캐시 일관성을 유지하기 위한 요구 사항은 다음과 같다:[3]


  • '''쓰기 전파''': 모든 캐시의 데이터 변경 사항은 다른 캐시의 복사본으로 전파되어야 한다.
  • '''트랜잭션 직렬화''': 단일 메모리 위치에 대한 읽기/쓰기는 모든 프로세서에서 동일한 순서로 표시되어야 한다.


이론적으로 일관성은 로드/저장 세분성에서 수행할 수 있지만, 실제로는 일반적으로 캐시 블록의 세분성으로 수행된다.[4]

캐시 일관성을 유지하는 대표적인 메커니즘으로는 스누핑 방식과 디렉터리 기반 방식이 있다.[8] 스누핑 기반 프로토콜은 대역폭이 충분하면 모든 트랜잭션이 모든 프로세서에서 확인되는 요청/응답이므로 더 빠르다. 그러나 모든 요청을 시스템의 모든 노드로 브로드캐스트해야 하므로 확장성이 떨어진다. 반면 디렉터리 기반 방식은 대기 시간이 더 길지만, 메시지가 점대점 방식이고 브로드캐스트되지 않으므로 훨씬 적은 대역폭을 사용한다. 이러한 이유로 64개 이상의 프로세서를 가진 대규모 시스템에서는 디렉터리 기반 방식을 주로 사용한다.

스너핑(snarfing)은 캐시 컨트롤러가 버스의 주소와 데이터를 모두 감시하여 자체 캐시에 복사본이 있는 위치가 업데이트되면 캐시 내용도 이에 맞춰 업데이트하는 방식이다.

3. 1. 스누핑 (Snooping)

스누핑은 주소 버스를 항상 감시하여 캐시 상의 메모리에 대한 접근이 있는지를 감시하는 구조이다. 다른 캐시에서 쓰기가 발생하면 캐시 컨트롤러에 의해 자신의 캐시 위에 있는 복사본을 무효화시킨다.[8] 버스 스누핑은 개별 캐시가 캐시된 메모리 위치에 대한 액세스를 위해 주소 라인을 모니터링하는 프로세스이다.[5] 쓰기 무효화 프로토콜과 쓰기 업데이트 프로토콜은 이 메커니즘을 사용한다.[9]

스누핑 메커니즘의 경우, 스누프 필터는 각 노드가 하나 이상 소유할 수 있는 캐시 라인을 나타내는 여러 개의 항목을 유지하여 스누핑 트래픽을 줄인다. 항목 중 하나를 교체해야 할 때, 스누프 필터는 각 항목의 존재 벡터에서 결정된 대로 가장 적은 수의 노드가 소유한 캐시 라인 또는 라인을 나타내는 항목을 교체하도록 선택한다. 둘 이상의 캐시 라인이 가장 적은 수의 노드에 의해 소유되는 경우, 시간적 또는 다른 유형의 알고리즘을 사용하여 선택을 세분화한다.[10]

스누핑 방식은 각 노드의 대역폭이 충분히 크다면 좋은 성능을 기대할 수 있다. 그러나 성능 확장성이 좋지 않다. 왜냐하면 메모리 요청(Request)에 대해 다른 모든 노드에 브로드캐스트해야 하기 때문이며 노드의 수가 증가하면 더 많은 브로드캐스트가 발생하게 되고 이 때문에 버스의 대역폭도 더 늘어나야만 한다.

3. 2. 디렉터리 기반 (Directory-based)

디렉터리 기반 일관성 구조는 캐시 블록의 공유 상태와 노드 등을 기록하는 저장 공간인 디렉터리를 이용하여 관리하는 구조이다. 디렉터리 기반 시스템에서 공유되는 데이터는 캐시 간의 일관성을 유지하는 공통 디렉터리에 배치된다. 디렉터리는 프로세서가 기본 메모리에서 캐시로 항목을 로드하기 위해 권한을 요청해야 하는 필터 역할을 한다. 항목이 변경되면 디렉터리는 해당 항목을 가진 다른 캐시를 업데이트하거나 무효화한다.[8]

디렉터리 기반 방식은 어떤 노드에서 해당 캐시 블록의 복사본을 가지고 있는지를 알고 있기 때문에 특정 노드에만 요청을 하게 된다. 따라서 스누핑 방식과 달리 브로드캐스트가 불필요하여 대역폭이 상대적으로 작아도 된다. 이 때문에 64개 이상의 프로세서를 가지는 대규모 시스템에서는 디렉터리 기반의 캐시 일관성 프로토콜을 사용하는 경우가 많다.[8]

분산 공유 메모리 시스템은 느슨하게 결합된 시스템에서 메모리 블록 간의 일관성을 유지하기 위해 디렉터리 기반 방식을 활용한다.[11]

4. 캐시 일관성 프로토콜

캐시 일관성 프로토콜은 캐시 일관성을 실제로 구현하기 위한 구체적인 규칙과 절차를 정의한 것이다. 다양한 캐시 일관성 프로토콜이 존재하며, 각 프로토콜은 특정 시스템 환경에 최적화되어 있다.

공유 메모리 다중 프로세서 시스템에서 각 프로세서마다 별도의 캐시 메모리가 있는 경우, 공유 데이터의 여러 복사본을 가질 수 있다. 즉, 메인 메모리에 1개, 데이터를 요청한 각 프로세서의 로컬 캐시에 1개씩 존재한다. 데이터의 복사본 중 하나가 변경되면 다른 복사본도 해당 변경 사항을 반영해야 한다. 캐시 일관성은 공유 피연산자(데이터) 값의 변경 사항이 시스템 전체에 적시에 전파되도록 하는 규율이다.[2]

캐시 일관성 프로토콜은 다중 프로세서 시스템에서 캐시 일관성을 적용하며, 두 클라이언트가 동일한 공유 데이터에 대해 서로 다른 값을 보지 않도록 보장한다.

프로토콜은 스누핑 방식 또는 디렉터리 기반으로 분류할 수 있다.


  • '''디렉터리 기반''' 프로토콜은 캐시 블록의 공유 상태와 노드 등을 기록하는 디렉터리를 이용하여 일관성을 관리한다. 어떤 노드에서 해당 캐시 블록의 복사본을 가지고 있는지 알 수 있기 때문에 특정 노드에만 요청을 보내면 된다. 따라서 브로드캐스트가 불필요하여 상대적으로 작은 대역폭으로도 충분하다. 이러한 장점 덕분에 64개 이상의 프로세서를 가진 대규모 시스템에서는 디렉터리 기반 프로토콜을 주로 사용한다.

  • '''스누핑(snooping)''' 프로토콜은 모든 프로세서가 주소 버스를 항상 감시하며, 캐시 메모리에 대한 접근이 발생하는지 확인한다. 다른 캐시에서 쓰기 작업이 발생하면, 캐시 컨트롤러는 자신의 캐시에 있는 해당 데이터의 복사본을 무효화시킨다. 스누핑 프로토콜은 각 노드의 대역폭이 충분히 클 때 좋은 성능을 보이지만, 확장성이 떨어진다는 단점이 있다. 메모리 요청이 있을 때마다 모든 노드에 브로드캐스트를 해야 하므로, 노드 수가 증가할수록 버스 대역폭에 대한 부담이 커진다.


스누핑 프로토콜은 쓰기 전파 방식을 기준으로 다음과 같이 분류할 수 있다.

  • '''쓰기 무효화''': 캐시에 복사본이 있는 데이터에 대한 쓰기 작업이 감지되면, 캐시 컨트롤러는 자신의 캐시에 있는 해당 데이터 복사본을 무효화한다. 이후 해당 데이터에 접근할 때는 메인 메모리에서 새로운 값을 읽어온다.[5]
  • '''쓰기 업데이트''': 캐시에 복사본이 있는 데이터에 대한 쓰기 작업이 감지되면, 캐시 컨트롤러는 자신의 캐시에 있는 해당 데이터 복사본을 새로운 값으로 갱신한다.


쓰기 업데이트 프로토콜은 공유 데이터가 변경될 때마다 다른 모든 복사본을 업데이트하는 방식이고, 쓰기 무효화 프로토콜은 다른 프로세서가 캐시된 복사본에 쓰기를 수행할 때 해당 복사본을 폐기하거나 무효화하는 방식이다.

대표적인 캐시 일관성 프로토콜로는 MSI 프로토콜, MESI 프로토콜, MOSI 프로토콜, MOESI 프로토콜, 시냅스 프로토콜, 버클리 프로토콜, 파이어플라이 프로토콜, 드래건 프로토콜 등이 있다.

4. 1. 대표적인 프로토콜

MSI 프로토콜, MESI 프로토콜(일명 일리노이 프로토콜), MOSI 프로토콜, MOESI 프로토콜, MERSI 프로토콜, MESIF 프로토콜, 쓰기-1회, 시냅스(Synapse), 버클리(Berkeley), 파이어플라이(Firefly), 드래곤(Dragon) 프로토콜 등 다양한 모델과 프로토콜이 캐시 일관성을 유지하기 위해 고안되었다.[2] 2011년, ARM Ltd.는 SoC에서 일관성을 처리하기 위해 AMBA 4 ACE[12]를 제안했다. ARM Ltd.의 AMBA CHI (Coherent Hub Interface) 사양[13]은 AMBA5 사양 그룹에 속하며 완전 일관성 프로세서 연결을 위한 인터페이스를 정의한다.

캐시 일관성 유지를 위한 주요 모델과 프로토콜은 다음과 같다.

  • MESI 프로토콜(일리노이 프로토콜)
  • MSI 프로토콜
  • MOSI 프로토콜
  • MOESI 프로토콜
  • Write-once (cache coherence)|Write-once 프로토콜영어
  • 시냅스 프로토콜
  • 버클리 프로토콜
  • Firefly_(cache_coherence_protocol)|파이어플라이 프로토콜영어
  • Dragon protocol|드래곤 프로토콜영어

5. 일관성 모델

일관성을 유지하려면 동일한 메모리 위치에 대한 읽기 및 쓰기 동작을 정의해야 한다. 캐시 일관성은 다음 조건에 부합하도록 수행된다.


  • 프로세서 P가 위치 X에 쓰기를 수행하고, 동일한 프로세서 P가 X를 읽는 경우, 그 사이에 다른 프로세서가 읽기 또는 쓰기를 수행하지 않았다면, X는 항상 P가 쓴 값을 반환한다. 이는 프로그램 실행 순서 유지와도 관련이 있으며, 단일 처리 아키텍처에서도 항상 성립한다.
  • 프로세서 P2가 위치 X에 쓰기를 수행하고, 그 후 프로세서 P1이 X를 읽는 경우, 그 사이에 다른 프로세서가 X에 쓰기를 수행하지 않았다면, X는 항상 P2가 쓴 값을 반환한다. 이는 메모리 일관성을 정의하는 조건이다. P2가 쓰기를 수행한 후에도 프로세서에서 이전 값이 읽히는 경우, 메모리 일관성이 유지되지 않는다고 할 수 있다.
  • 동일한 위치에 대한 쓰기는 순차화된다. 즉, X라는 위치에 대해 A라는 값의 쓰기와 B라는 값의 쓰기가 각각 다른 프로세서에서 발행되었을 때, 어떤 프로세서에서 보더라도 쓰기 순서는 일정해야 하며, 최종 값은 나중에 쓴 값이어야 한다.


이러한 조건은 읽기 및 쓰기가 순간적으로 수행된다고 가정하여 정의된다. 그러나 실제 하드웨어에서는 메모리 레이턴시도 있고, 기타 아키텍처 상의 제약으로 인해 순간적으로 읽기 및 쓰기를 실행할 수 없다. 프로세서 X가 쓰기를 발행한 직후에 프로세서 Y가 읽기를 발행했을 때, 그 간격이 짧으면 Y에게는 X가 쓴 내용이 보이지 않을 수 있다. 메모리 일관성 모델에서는 쓰기로 기록한 값이 그 이후의 다른 프로세서로부터의 읽기에서 반드시 얻어질 수 있도록 해야 한다.

캐시 일관성을 유지하기 위한 다양한 모델과 프로토콜이 고안되었다. 주요 모델은 다음과 같다.

  • MESI 프로토콜(일리노이 프로토콜)
  • MSI 프로토콜
  • MOSI 프로토콜
  • MOESI 프로토콜
  • Synapse 프로토콜
  • Berkeley 프로토콜


일관성 모델의 선택은 캐시 일관성 시스템 설계에 있어서 중요하다. 일관성 모델에는 다양한 성능과 확장성이 있으며, 개별 시스템마다 최적의 모델이 다르다.

더욱이, 각 구현에서 상태를 어떻게 전환하는지도 다양하다. 읽기 및 쓰기로 갱신하는지 또는 무효화하는지에 따라 4가지 종류의 상태 전환 조합을 생각할 수 있다. 상태 전환 선택에 따라 캐시 간 트래픽 양이 바뀌고, 이는 전체 실제 대역폭에도 영향을 미친다. 멀티 프로세서 캐시 간에 잦은 충돌이 발생하는 소프트웨어에서는 이 점도 고려해야 한다.

5. 1. 순차적 일관성 (Sequential Consistency)

순차적 일관성 메모리 모델은 모든 프로세서의 메모리 접근이 프로그램 순서대로 실행되는 것처럼 보이는 강력한 일관성 모델이다.[4] 캐시 일관성 시스템과 비교하면, 단일 메모리 위치가 아닌 모든 메모리 위치를 대상으로 한다는 차이점이 있다.[4]

순차적 일관성을 만족하기 위한 조건은 다음과 같다.

  • 프로세서 P가 위치 X에 쓰기를 한 후, 같은 프로세서 P가 X를 읽을 때, 그 사이에 다른 프로세서의 읽기나 쓰기가 없다면 X는 항상 P가 쓴 값을 반환해야 한다.
  • 프로세서 P2가 위치 X에 쓰기를 한 후, 프로세서 P1이 X를 읽을 때, 그 사이에 다른 프로세서의 쓰기가 없고 읽기와 쓰기가 충분히 분리되어 있다면 X는 항상 P2가 쓴 값을 반환해야 한다.
  • 동일한 위치에 대한 쓰기는 순차적으로 수행되어야 한다. 즉, 어떤 프로세서에서 보더라도 쓰기 순서는 일정해야 하며, 최종 값은 나중에 쓴 값이어야 한다.


이러한 조건들은 실제 하드웨어에서 메모리 레이턴시 등의 제약 때문에 즉시 만족되기 어렵다. 따라서 메모리 일관성 모델은 쓰기로 기록한 값이 이후 다른 프로세서의 읽기에서 반드시 나타나도록 보장해야 한다.

5. 2. 기타 일관성 모델

동일한 메모리 위치에 대한 읽기 및 쓰기 동작을 정의해야 일관성을 유지할 수 있다. 캐시 일관성은 다음 조건에 부합하도록 수행된다.

  • 프로세서 P가 위치 X에 쓰기를 수행하고, 동일한 프로세서 P가 X를 읽는 경우, 그 사이에 다른 프로세서가 읽기 또는 쓰기를 수행하지 않았다면, X는 항상 P가 쓴 값을 반환한다. 이는 프로그램 실행 순서 유지와도 관련이 있으며, 단일 처리 아키텍처에서도 항상 성립한다.
  • 프로세서 P2가 위치 X에 쓰기를 수행하고, 그 후 프로세서 P1이 X를 읽는 경우, 그 사이에 다른 프로세서가 X에 쓰기를 수행하지 않았다면, X는 항상 P2가 쓴 값을 반환한다. 이는 메모리 일관성을 정의하는 조건이다. P2가 쓰기를 수행한 후에도 프로세서에서 이전 값이 읽히는 경우, 메모리 일관성이 유지되지 않는다고 할 수 있다.
  • 동일한 위치에 대한 쓰기는 순차화된다. 즉, X라는 위치에 대해 A라는 값의 쓰기와 B라는 값의 쓰기가 각각 다른 프로세서에서 발행되었을 때, 어떤 프로세서에서 보더라도 쓰기 순서는 일정해야 하며, 최종 값은 나중에 쓴 값이어야 한다.


이러한 조건은 읽기 및 쓰기가 순간적으로 수행된다고 가정하여 정의된다. 그러나 실제 하드웨어에서는 메모리 레이턴시도 있고, 기타 아키텍처 상의 제약으로 인해 순간적으로 읽기 및 쓰기를 실행할 수 없다. 프로세서 X가 쓰기를 발행한 직후에 프로세서 Y가 읽기를 발행했을 때, 그 간격이 짧으면 Y에게는 X가 쓴 내용이 보이지 않을 수 있다. 메모리 일관성 모델에서는 쓰기로 기록한 값이 그 이후의 다른 프로세서로부터의 읽기에서 반드시 얻어질 수 있도록 해야 한다.

참조

[1] 서적 Advances in Computers https://linkinghub.e[...] Elsevier 2010-01-01
[2] 서적 The Architecture of the Nehalem Processor and Nehalem-EP SMP Platforms http://sc.tamu.edu/s[...] Texas A&M University
[3] 서적 Fundamentals of parallel multicore architecture
[4] 서적 A primer on memory consistency and cache coherence Morgan & Claypool Publishers 2011-01-01
[5] 서적 Computer Organization and Design - 4th Edition
[6] 문서 Cache Coherence http://cse.csusb.edu[...] 2004-04-16
[7] 간행물 A Unified Theory of Shared Memory Consistency 2004-09-01
[8] 서적 Computer Architecture A Quantitative Approach Morgan Kaufmann Publishers 1990
[9] 간행물 Ravishankar, Chinya; Goodman, James (February 28, 1983). "Cache Implementation for Multiple Microprocessors" http://www.cs.ucr.ed[...]
[10] 문서 Design of a Snoop Filter for Snoop-Based Cache Coherency Protocols http://www.diva-port[...] 2013-06
[11] 웹사이트 Lecture 18: Snooping vs. Directory Based Coherency https://people.eecs.[...] 2023-05-14
[12] 서적 Formal Analysis of the ACE Specification for Cache Coherent Systems-on-Chip. In Formal Methods for Industrial Critical Systems Springer Berlin Heidelberg 2013-09-16
[13] 웹사이트 AMBA {{!}} AMBA 5 https://developer.ar[...] 2021-04-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com