Firefly(캐시 일관성 프로토콜)
Firefly (cache coherence protocol)Firefly 캐시 일관성 프로토콜은 DEC Systems Research Center가 개발한 DEC Firefly 멀티프로세서 워크스테이션에서 사용되는 스키마입니다.이 프로토콜은 3 State Write Update Cache 일관성 프로토콜입니다.Dragon 프로토콜과 달리 Firefly 프로토콜은 쓰기 업데이트 버스 전환 시 기본 메모리 및 로컬 캐시를 업데이트합니다.따라서 Dragon Protocol의 경우 나타나는 Shared Clean 상태와 Shared Modified 상태는 Firefly Protocol의 경우 구분되지 않습니다.
미국.
이 프로토콜에서는 각 블록에 다음 상태를 할당할 수 있습니다.
- 유효(V):캐시 블록은 유효하고 깨끗하며 1개의 캐시에만 존재합니다.
- 공유(S):캐시 블록은 유효하고 깨끗하며 여러 캐시에 존재할 수 있습니다.
- 더러움(D):블록은 메모리의 유일한 복사본이며 더러움(메모리에서 가져온 후 값이 수정됨)입니다.이것은 캐시에서 블록이 교체되었을 때 라이트백을 생성하는 유일한 상태입니다.
이러한 상태는 MESI 프로토콜의 Exclusive, Shared 및 Modified 상태에 해당합니다.이 프로토콜은 무효화를 초래하지 않으므로 무효 상태는 여기에 나열되지 않습니다.
프로세서측의 요구
프로세서 측 요구 또는 CPU 요구는 프로세서가 자신의 캐시에 액세스하는 것입니다.이러한 요청은 다음 4가지 유형으로 분류할 수 있습니다.
- PrRdMiss: 프로세서 측에서 캐시에 존재하지 않는 캐시 블록을 읽도록 요구합니다.
- PrRdHit: 프로세서 측에서 캐시에 이미 존재하는 캐시 블록을 읽도록 요구합니다.
- PrWtHit: 캐시에 이미 존재하는 캐시 블록에 쓰는 프로세서 측 요구입니다.
- PrWtMiss: 프로세서 측에서 캐시에 존재하지 않는 캐시 블록에 쓰기를 요청합니다.
버스측 요구
버스측 요청은 캐시 일관성을 유지하기 위해 프로세서측 요청에 응답하여 생성되는 요청입니다.이것들은 캐시와 메모리의 스누퍼에 의해 스누핑되어 적절한 액션이 실행됩니다.이는 Firefly 프로토콜에서 두 가지 유형으로 분류됩니다. 즉, 다음과 같습니다.
1. BusRd: 다른 프로세서에 의해 작성된 캐시 블록에 대한 읽기 요구가 있으며 해당 프로세서에 데이터가 없음을 나타내는 요구입니다.
2. BusWr/BusUpdt: 다른 프로세서에 의해 작성된 캐시 블록에 대한 쓰기 요청이 있으며 다른 모든 캐시가 블록의 복사본을 업데이트해야 함을 나타내는 요청입니다.
이행
어떤 전환을 해야 하는지 식별하기 위해 프로토콜은 복사본이라는 이름의 특수 버스 라인을 사용하여 공유를 감지합니다.존재합니다. 다른 모든 캐시는 모든 메모리 작업을 스누핑하고 복사본을 올립니다.「스누프 히트」를 검출했을 경우(즉, 자신의 캐시에 데이터의 카피가 있는 경우)가 존재합니다.
다른 곳에서 상태로 이동하는 화살표는 새로 로드된 블록을 나타냅니다.
프로세서에 의한 이행
프로세서가 블록에 대한 읽기 오류를 발생시키고 다른 캐시에 블록의 복사본이 없는 경우 복사본Exist (C) 행이 체크되고 C가 LOW인 경우 블록이 캐시에 배치되고 상태가 Valid로 설정됩니다.일부 캐시(C가 HIGH)에 이미 복사가 있는 경우 블록은 공유 상태로 캐시에 배치됩니다.
블록에 대한 쓰기 누락 시 어느 캐시에도 블록 복사본이 없는 경우(C는 LOW), 블록은 더티 상태로 캐시에 배치됩니다.일부 캐시(C가 HIGH)에 이미 블록 복사본이 있는 경우 블록은 공유 상태로 캐시에 배치되고 변경 내용이 메모리에 반영됩니다.
블록이 이미 유효 상태로 캐시되어 있는 경우, 다른 캐시에 데이터 복사가 없기 때문에 프로세서 쓰기 적중 시 상태가 더티 상태로 변경됩니다.이 쓰기는 메모리에 쓰이지 않는다.
블록이 더티 상태로 캐시되어 프로세서의 기입 히트가 발생했을 경우 상태는 더티 상태로 유지됩니다.
블록이 Shared 상태이고 프로세서 쓰기 적중률이 있고 일부 캐시(C)에 복사본이 이미 있는 경우 블록은 Shared 상태로 유지됩니다.어떤 캐시(!C)에도 블록 복사본이 없는 경우 블록은 캐시에 존재하는 유일한 '유효한' 복사본이기 때문에 유효한 상태로 기록됩니다.
CPU 읽기 적중률이 있는 경우 블록은 Dragon 프로토콜과 마찬가지로 이미 있는 모든 상태를 유지합니다.
버스에 의한 이행
블록이 Shared 상태이고 BusRd 또는 BusWr 요청이 있는 경우 블록은 Shared 상태로 유지됩니다.
블록이 더티 상태이고 다른 프로세서가 다른 프로세서에서 요청을 읽거나 쓰는 경우 블록은 공유 상태로 전환되고 변경 내용이 메인 메모리에 반영됩니다.
블록이 유효한 상태이고 다른 프로세서가 이를 읽으면 공유 상태로 전환됩니다.다른 프로세서 쓰기 요청이 스누핑되면 블록이 업데이트되고 현재 공유 중이므로 공유 상태로 전환됩니다.
MESI와 달리 Firefly 업데이트 프로토콜에서는 프로세서의 쓰기 요청에 따라 다른 모든 복사본을 직접 업데이트함으로써 쓰기 전파가 보장됩니다(PrWr).
다른 정책과의 비교
1. 업데이트된 데이터 복사본이 캐시에 존재하기 때문에 쓰기 – 무효화 정책보다 일관성 누락이 적습니다.
2. 무효화 프로토콜은 다른 프로세서에서 스누핑되는 신호/명령어를 버스로 전송하여 데이터 복사본을 무효화하므로 무효화 프로토콜보다 더 높은 버스 대역폭이 필요합니다.반면 업데이트 프로토콜에서는 메모리 및 기타 캐시가 데이터를 스누핑하고 업데이트할 수 있도록 새 데이터 값이 BusUpdate 신호와 함께 전송되어야 합니다.
3. 쓰기 때마다 데이터를 업데이트하면 더 이상 필요하지 않은 일부 데이터가 캐시에 남아 '유용한' 데이터가 제거될 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- Hashemi, B. (2011-05-01). Simulation and Evaluation Snoopy Cache Coherence Protocols with Update Strategy in Shared Memory Multiprocessor Systems. 2011 Ninth IEEE International Symposium on Parallel and Distributed Processing with Applications Workshops (ISPAW). pp. 256–259. doi:10.1109/ISPAW.2011.68. ISBN 978-1-4577-0524-3.
- Eggers, S. J.; Katz, R. H. (1988-01-01). A Characterization of Sharing in Parallel Programs and Its Application to Coherency Protocol Evaluation. Proceedings of the 15th Annual International Symposium on Computer Architecture. ISCA '88. Los Alamitos, CA, USA: IEEE Computer Society Press. pp. 373–382. doi:10.1145/633625.52442. ISBN 978-0818608612.
- Archibald, James; Baer, Jean-Loup (1986-09-01). "Cache Coherence Protocols: Evaluation Using a Multiprocessor Simulation Model". ACM Trans. Comput. Syst. 4 (4): 273–298. doi:10.1145/6513.6514. ISSN 0734-2071.
- Solihin, 연(2015-10-09).병렬 Multicore 건축의 기본.노스 캐롤라이나, 롤리:Solihin 출판사와 컨설팅, LLC. 아이 에스비엔 978-1-4822-1118-4.