두 가지 소스에서 읽은 내용에 따르면 다음을 수행하기 위해 캐시 색상이 필요합니다.
-
앨리어싱 문제 해결 : 동일한 물리적 주소를 가진 두 개의 다른 가상 주소가 다른 캐시 세트에 매핑되지 않도록 방지 . ( CS Stack Exchange 답변 에 따름)
-
가상 메모리의 공간적 지역성 속성 활용 : 가상 메모리의 인접한 두 블록 (물리적 메모리에서 반드시 인접 할 필요는 없음)이 동일한 캐시 인덱스에 매핑되지 않도록 보장합니다. ( Wikipedia 에 따르면)
이것은 근본적으로 다른 정의 인 것 같습니다. 캐시 컬러링에 대한 동기 부여, 필요한 색상 수를 선택하는 메커니즘을 이해할 수없는 것 같습니다. 실제로 하나이고 동일한 것입니까?
가상 메모리의 공간적 지역성이 주요 동기 인 경우 캐시 색상은 VIPT 캐시에 실제로 필요합니다. 여기서 캐시의 색인은 가상 메모리에서 시작됩니까? 아니면 단순히 VIPT 캐시에서 앨리어싱을 피하기 위해 캐시 색상을 사용합니까?
답변
별칭을 피하고 과도한 캐시 충돌을 피하는 것은 모두 페이지 색상 지정을 사용하는 유효한 이유입니다. 별칭을 피하기 위해 페이지 색상을 지정하는 것은 페이지 할당에 필수 제약을두기 때문에 인기가 없습니다. 일반적으로 최신 비 임베디드 프로세서는 앨리어싱을 피하기 위해 페이지 컬러링이 필요하지 않습니다.
하드웨어 i에서 앨리어싱 문제 방지 하드웨어 복잡성이 증가하므로 이전 프로세서 (및 일부 최신 임베디드 프로세서)는 소프트웨어에 부담을 주기로 선택했습니다. 하드웨어는 페이지 오프셋 비트보다 인덱스 + 오프셋 비트가 더 많은 캐시에서 앨리어싱 문제를 방지 할 수 있습니다 (예 : 다음) :
- 캐시 미스에 대한 대체 세트 확인 (AMD에서 수행 한 것처럼) Athlon; 별칭이 감지되면 블록이 현재 가상 인덱스로 이동되었습니다.)
- (태그) 포함 L2 (L1 미스 및 L2 히트에서 L1 인덱싱에 사용 된 가상 주소 비트 포함) 가상 주소 비트가 요청에 해당하는 비트와 일치하므로 조치가 필요하지 않습니다. 비트가 일치하지 않으면 적절한 프로브 세트가 알려져 있습니다. [블록이 L1에 있는지 여부도 L2 태그에 저장되어 일관성을 줄일 수 있습니다. 오버 헤드이므로 일부 프로브를 피할 수 있습니다.])
- 인덱싱에 사용되는 추가 물리적 주소 비트를 추측하기 위해 세트 예측 사용 (TLB 액세스 후 잘못된 예측이 발견되고 수정 됨)
- 사용 가능한 별칭을 찾기 위해 캐시 미스에 대한 역변환 (물리적에서 가상으로) (PA-RISC 구현은 역변환을 사용했다고 생각합니다. on for coherence )
충돌을 줄이기 위해 페이지 색상을 사용하는 것은 페이지 색상이 필요하지 않기 때문에 덜 인기가 있습니다. 정확성을 위해. 특정 색상이 희소 해지면 성능이 저하 될뿐 페이지 색상이 잘못 될 수 있습니다. 페이지 채색에 대한 이러한 근거는 채색 된 비트 수가 덜 제한됨을 의미합니다. (실용적이지 않은) 이상적인 방법은 마지막 레벨 캐시의 모든 물리적 인덱스 비트를 해당 가상 주소 비트와 일치시키는 것일 수 있지만 4 비트 만 색칠해도 충돌 문제를 상당히 줄일 수 있습니다.
주의 할 가치가 있습니다. 별칭 회피를위한 색상은 가상 주소 비트를 물리적 주소 비트와 일치시킬 필요가 없습니다. 모든 잠재적 별칭이 인덱싱에 사용되는 동일한 가상 주소 비트를 공유하는 한 별칭 문제는 방지됩니다. 그러나 물리적 주소와 가상 주소 비트를 일치시키는 것이 편리 할 수 있습니다 (물리적으로 주소가 지정된 캐시 수준에서 예측 가능한 충돌을 제공함).