반응형
Implementation Complications
Write Races
1. 캐시 업데이트 제약
- 버스를 획득하기 전까지 캐시를 업데이트할 수 없다.
- 그 이유는 다른 프로세서가 먼저 버스를 획득하여 동일한 캐시 블록에 write할 수 있기 때문이다.
2. Two Step Process
- arbitrate(중재) for bus
- bus에 miss를 배치하고 작동 완료
3. bus 대기 중 miss 발생 시:
- miss를 처리하고(필요시 invalidate), 재시작한다.
4. 분할 트랜잭션 버스
- 버스 트랜잭션이 원자적(atomic)이지 않기 때문에 하나의 블록에 대해 여러 미완료 트랜잭션이 가능하다.
- 여러 miss들이 interleave(끼어들수)될 수 있어 두 캐시가 동시에 Exclusive 상태의 블록을 가져갈 수 있습니다.
- 하나의 블록에 대한 다중 미스를 추적하고 방지해야 합니다
intervention과 invalidation를 반드시 지원해야한다.
Implementin Snooping Caches
- 멀티프로세서 버스 요구사항
- 프로세서들은 bus에 연결되어있어야 하고, 주소와 데이터에 접근 가능해야 한다.
- coherency을 위한 새로운 명령어가 필요하다.(read와 write 외에도)
- 프로세서들은 지속적으로 주소 버스를 snooping한다.
- broadcasting 되고 있는 정보의 주소가 태그와 일치하면 invalidate하거나 updat한다
- 캐시 태그 문제
- 해결 방법1: L1 캐시를 위한 중복 태그 세트를 만들어 CPU와 병렬로 확인 (Duplicate를 한다.)
- 해결 방법2: L2 캐시를 이용한다. L2 캐시가 L1 캐시와 inclusion property 관계를 유지하도록 함
- L2의 블록 크기와 associativity(연관성)이 L1에 영향을 미침
Limitations in SMP and Snooping Protocols(SMP의 한계점)
- 단일 메모리의 한계와 다중 메모리 뱅크
- 단일 메모리로는 모든 CPU의 요구를 수용하기 어렵다 -> 다중 메모리 뱅크 사용
- 메모리 접근 병목 현상이 발생할 수 있다. ->여러 메모리 뱅크를 사용해서 접근을 가능한다.
- 버스 기반 멀티프로세서의 한계와 해결책
- 단일 버스는 일관성 트래픽과 일반 메모리 트래픽을 모두 처리해야 합니다. => Multiple buses사용
- 이는 버스의 대역폭 제한으로 인한 성능 저하를 초래할 수 있습니다. =>interconnection network(cross bar or small point-to-point)사용
- Opteron
- 각 듀얼 코어 칩에 메모리가 직접 연결된다. 로컬 메모리 접근 시간을 크게 줄여준다.
- 최대 4개의 칩까지 점대점 연결을 지원한다.
- 프로세서 간 직접 통신이 가능해져 데이터 전송 효율성이 향상된다
- 원격 메모리와 로컬 메모리의 접근 지연 시간이 유사하다
Performance of Symmetric SMP
1. Uniprossesor cache miss traffic: 일반적인 캐시 미스로, 단일 프로세서 시스템에서도 발생한다.
2. 통신으로 인한 트래픽
- 여러 프로세서 간의 데이터 공유로 인해 발생한다.
- 이로 인해 캐시 invalidations와 추가적인 캐시 미스가 발생합니다.
기존의 3C(Compulsory, Capacity, Conflict)미스에서 새로운 유형의 미스가 추가된다.
네 번째 C: Coherence Miss
- Compulsory: 처음 데이터에 접근할 때 발생
- Capacity: 캐시 크기가 부족해서 발생
- Conflict: 캐시 구조로 인해 발생
- Coherence: 멀티프로세서 환경에서 캐시 일관성 유지를 위해 발생
- X블럭이 a,b,c,e (word, 단위)를 포함한다고 가정하자.
- True Coherence(True Sharing Miss)
- 공유 블록의 a(word, 단위)에 쓰기 작업하기 위해서 a가 속해 있는 블럭 전체를 무효화
- 다른 processor가 a(word, 단위)에서 작업하기를 원함
- True Coherence 발생
- False Coherence(False Sharing Miss)
- 공유 블록의 a(word, 단위)에 쓰기 작업하기 위해서 a가 속해 있는 블럭 전체를 무효화
- 다른 processor가 b(word, 단위)에서 작업하기를 원함
- False Coherence 발생
- Processor의 수가 많아 질 수록 많이 발생한다.
반응형
'ComputerGraphics > MultiProgramming' 카테고리의 다른 글
[MultiCoreProgramming] Directory Protocol (2) (0) | 2024.10.21 |
---|---|
[MultiCoreProgramming] Directory Protocol (1) (0) | 2024.10.18 |
[MultiCoreProgramming]Write Cache Coherence(Snooping)-2 (0) | 2024.10.15 |
[MultiCoreProgramming] Write Cache Coherence(Snooping)-1 (2) | 2024.10.14 |
[MultiCoreProgramming] 캐쉬 일관성(Write,Snooping, Directory) (0) | 2024.10.08 |