캐시

2012-07-05 7 views
1

에 대한 ARM11의 개선 그것은 ARM11 말했다 무슨이다, 캐시는 물리적으로 많은 캐시 앨리어싱 문제를 해결, 해결 및 감소 문맥은 물리적으로를 해결캐시

방법 을 이해하는 오버 헤드 전환된다? 캐시 별칭 문제를 해결하고 컨텍스트 스위치 오버 헤드를 줄이는 데 어떻게 도움이됩니까?

+0

참조 : [Wikipedia의 CPU 캐시] (http://en.wikipedia.org/wiki/CPU_cache#Address_translation). –

답변

8

세 가지 일반적인 유형의 캐시가 있습니다. 사실상 거의

  • VIPT 태그 된 색인 =

    • VIVT 사실상 물리적
    • PIPT 물리적으로 물리적

    태그 된 색인 = 태그 색인 = 물리적 사실상 인덱싱

    • PIVT =도 있습니다 태그가 지정된

    PIPT는 보통 실제 주소가 그 순간에 알려 져야하기 때문에 2 레벨 및 더 깊은 캐시에 사용되지만 armv7도 PIPT L1 DCaches를 도입했습니다. PIVT는 실용적이지 않아 실제 세계에서는 사용되지 않습니다.

    차이점은 캐시 라인이 기본 메모리에 연결되는 방법입니다.

    가상 인덱스는 순수 캐시 라인 조회가 가상 주소로 완료되었으므로 가상 주소에서 실제 주소로 변환하기 전에 수행 할 수 있음을 의미합니다. 그런 다음 태그를 지정하면 캐시 라인이 실제로 기본 메모리에 매핑되는지 아니면 동일한 캐시 라인에 매핑되는 다른 메모리 위치에 대한 데이터가 포함되는지 결정됩니다.

    가상 주소로 태그를 지정하면 동일한 가상 주소를 사용하는 두 프로세스가 서로 트립 될 수 있습니다. 하나의 프로세스가 다른 프로세스가 캐시에 넣은 데이터에 액세스 할 수 있기 때문입니다. 따라서 VIVT 캐시 된 CPU의 경우 커널이 컨텍스트 스위치에서 전체 캐시를 플러시해야합니다. 따라서 새 프로세스는 실수로 잘못된 데이터에 액세스하지 않습니다. 즉, 일반적으로 컨텍스트 스위치는 VIVT 캐시 CPU에서 매우 비싼 작업입니다. ARMv5 이상에서는 빠른 컨텍스트 스위치 확장 (Fast Context Switch Extensions)이 지원되므로 태그로 가상 주소가 수정됩니다. 그러나 그것은 많은 한계를 수반합니다.

    반면 VIPT는 캐시 라인을 찾기 위해 여전히 가상 주소를 사용하지만 실제 주소와 비교하여 태그를 검사하므로 MMU 조회가 캐시 라인 조회와 병행하여 수행 될 수 있습니다.

    별칭은 VIVT- 캐시의 또 다른 큰 문제입니다. 두 개의 가상 주소가 동일한 실제 메모리 위치를 가리킬 수 있기 때문에 (사용자와 커널 공간간에 메모리를 공유 할 때 발생할 수 있음). 따라서 서로 다른 데이터로 캐시에 두 개의 위치를 ​​가질 수 있습니다. 제대로 관리하기가 어려울 수 있습니다 (캐시를 올바른 순서로 명시 적으로 플러시하고 무효화).