2017-10-09 13 views
1

다른 코어의 L1 캐시 라인 프로토콜에서 상태 정보를 가져올 수 있습니까?

이의이 시나리오를 가정하자 등 MSI, MESI, MOSI, MOESI로, 주위 여러 캐시 일관성 프로토콜이 같습니다 CPU는 4 코어 L1 개인 캐시 (L1 캐시 을 포함 크기는 여기에 상관 없습니다). 여기에 메모리 주소가 설명되어 있습니다. 메모리 액세스 따라서 값이 주 메모리로부터 L1 캐시 라인에 0x1111 을로드한다 해결할

  1. 중핵 0 요청.

  2. 코어 -1- 따라서 값이 주 메모리로부터 L1 캐시 라인에 로딩 될 0x2222를 해결하기 위해 메모리 액세스를 요구한다.

  3. 코어 -2-는 메모리 액세스 0x1111가 (이전 중핵 0 액세스) 해결하기 위해 요청한다. 이 참조는 이미 Core-0의 캐시 라인에로드되어 있으므로 캐시 일관성 프로토콜은 참조를 포함하는 Core-0의 캐시 라인을 복사하고 마지막으로이를 Core-2의 캐시 라인에 저장합니다.

질문 1 :합니까 코어 2 메모리 액세스 대신 메인 메모리의 핵심-0의 캐시 라인에 의해 제공되었음을 알고? 또는 캐시 일관성 프로토콜은 데이터가 검색된 위치에 투명합니다.

질문 2 :코어-0코어-2에서의 캐시 라인은 그러나 3 단계 후 상태를 공유가 가능하다 코어-2가에서 현재 상태를 가져옵니다 다른 코어에서 주어진 메모리 참조? 이 경우 가능한 것은 코어 -2은이 메모리 참조에 대해 0x1111 코어 - 캐시 라인이 공유 됨 상태임을 알고 있습니까?

답변

1

core-2는 메모리 액세스가 주 메모리 대신 Core-0의 캐시 라인에 의해 제공되었다는 것을 알고 있습니까?

예, 설명 된 시나리오에서 캐시 라인은 "공유"상태 여야합니다 (즉, 캐시 라인은 소수 코어간에 공유됩니다). 하지만 아래를 참조하십시오 ...

캐시 일관성 프로토콜은 데이터가 검색된 곳을 투명하게합니까?

예, 캐시 일관성 프로토콜은 코어에 대해 투명하며 캐시 라인 상태는 내부입니다. 일부 아키텍처에는 직접 캐시 상태 액세스에 대한 지침이있을 수 있지만 의심 스럽습니다. 대부분의 아키텍처는 단지 프리 페치/제로/플러시/무효화 명령을 가지고 있습니다 ...

그래서 다음 질문에 대한 답은 분명하다 :

코어-0, 및 코어-2, 그러나 3 단계 후 공유 상태에서 자신의 캐시 라인을 가지고이 가능 코어-2는 현재를 가져옵니다 다른 코어의 주어진 메모리 참조에서 상태?

일부 아키텍처에서는 가능하지만 x86에서는 가능하지 않습니다.

이 경우,이 메모리 참조 0x1111 Core-0 캐시 라인이 공유 상태에 있음을 Core-2가 알고 있습니까?

위와 동일합니다. 캐시는 일관성이 있으므로 캐시에 대한 명령 레벨 인터페이스는 대부분의 아키텍처에서 매우 간단합니다.

전체적으로는 XY Problem입니다. 캐시 라인 상태 인식 코어로 달성하고자하는 것은 무엇입니까?