실제 캐시와 가상 캐시의 차이점은 무엇입니까?


11

가상 캐시가 실제로 무엇인지 이해하는 데 문제가 있습니다. 가상 메모리를 이해합니다.

내가 이해하는 한 CPU가 메모리에 액세스하려면 페이지 테이블을 사용하여 실제 메모리 주소를 알아내는 가상 주소를 MMU에 보냅니다.

이제 이뿐 만 아니라 CPU는 다른 주소 (가상 주소의 끝)를 전송합니다. 캐시에 대한 태그 및 오프셋.

가상 캐시는 이것과 어떻게 다릅니 까?

여기에 이미지 설명을 입력하십시오


2
가상 주소 지정 (가상 색인 / 가상 태그 지정) 캐시를 의미합니까?
Paul A. Clayton

기본적으로 가상 캐시 주소와 실제 캐시 주소의 차이점은 무엇입니까? (물리적 캐시 주소가 (setno. (index), (line no.) 태그 및 오프셋)
형식이라는 인상을 받았습니다

4 가지 유형의 캐시 주소 지정 옵션 (PIPT, VIPT, VIVT, PIVT)에 대해 논의하고 수치와 비교 하는 TLB에 대한 2017 설문 조사 보고서를 참조하십시오 . 이것은 당신의 질문에 대답 할 것입니다. VIVT 캐시는 일반적으로 가상 캐시라고합니다.
user984260

답변:


20

가상 또는 물리적 주소 비트가 인덱싱 및 / 또는 태깅에 사용되는지 여부에 따라 캐시를 처리하는 방법에는 네 가지가 있습니다.

캐시 인덱싱은 가장 중요한 시간이므로 (세트의 모든 방법을 병렬로 읽을 수 있고 태그 비교를 기반으로 적절한 방법을 선택할 수 있기 때문에) 캐시는 일반적으로 가상 주소로 인덱싱되어 주소보다 먼저 인덱싱을 시작할 수 있습니다 번역이 완료되었습니다. 그러나, 페이지 오프셋 내의 비트 만이 인덱싱에 사용되는 경우 (예를 들어, 각각의 방법이 페이지 크기 및 인덱싱 1 의 방법 크기의 간단한 모듈로보다 크지 않은 경우 ),이 인덱싱은 실제로 물리적 주소를 사용하고있다. 물리적 주소로 더 큰 캐시를 색인화 할 수 있도록 L1 연관성이 주로 증가하는 것은 드문 일이 아닙니다.

물리적 주소에 기초한 인덱싱은 페이지 크기보다 더 큰 방법으로 가능하지만 (예를 들어, 더 큰 비트를 예측하거나 알려진 물리적 주소 비트를 사용하여 인덱싱 지연을 사용하여 해당 비트를 제공하는 빠른 변환 메커니즘으로 변환 대기 시간을 숨기면) 일반적으로 수행되지 않습니다.

태깅에 가상 주소를 사용하면 변환이 완료되기 전에 캐시 적중을 확인할 수 있습니다. 액세스가 커밋되기 전에 권한을 여전히 확인해야하지만로드의 경우 데이터를 실행 단위로 전달할 수 있으며 데이터를 사용하여 계산을 시작하고 저장을 위해 데이터를 버퍼로 전송하여 상태의 지연된 커밋을 허용 할 수 있습니다. 권한 예외는 파이프 라인을 플러시하므로 디자인 복잡성을 추가하지 않습니다.

Pentium 4 데이터 캐시에 사용되는 vhint는 추론 적으로 방법을 선택하기 위해 사용할 수있는 가상 주소 비트의 하위 집합을 사용하여 이러한 대기 시간 이점을 제공했습니다.

(선택적 외부 MMU 시대에 가상 주소 태그는 캐시 디자인 외부에서 거의 완전히 변환을 수행하는 데 특히 유용 할 수 있습니다.)

가상으로 인덱싱되고 태그가 지정된 캐시는 대기 시간이 큰 이점이 있지만 동일한 가상 주소가 다른 물리적 주소 (동의어)에 매핑되거나 동일한 물리적 주소가 다른 가상 주소 (동의어)에 매핑되는 앨리어싱 가능성도 소개합니다. 물리적 주소를 사용하여 인덱싱 및 태그를 지정하면 앨리어싱이 방지됩니다.

동음 문제는 주소 공간 식별자 (ASID)를 사용하여 비교적 쉽게 해결됩니다. (주소 공간을 변경할 때 캐시를 플러시해도 동음이 보장되지는 않지만 비교적 비쌉니다. 다른 주소 공간에 ASID를 재사용 할 때는 최소한 부분 플러시가 필요하지만 8 비트 ASID는 대부분의 주소에서 플러시를 피할 수 있습니다 일반적으로 ASID는 운영 체제에서 관리하지만 일부 시스템은 페이지 테이블 기본 주소를 기반으로 ASID 재사용을위한 하드웨어 검사를 제공했습니다.

동의어 문제는 해결하기가 더 어렵습니다. 캐시 누락시 가능한 별칭의 실제 주소를 확인하여 캐시에 별칭이 있는지 확인해야합니다. 실제 주소를 사용하여 색인을 작성하거나 운영 체제에서 색인에서 별명이 동일한 비트를 갖도록 보장하여 (페이지 채색) 별명 지정을 피할 수없는 경우, 한 세트 만 조사하면됩니다. 감지 된 동의어를 가장 최근에 사용 된 가상 주소로 표시되는 세트로 재배치하여 나중에 동일한 물리적 주소의 다른 맵핑이 발생할 때까지 별명을 피할 수 있습니다.

인덱스 앨리어싱이없는 직접 매핑 된 가상 태그가 지정된 캐시에서 추가 단순화가 가능합니다. 잠재적 동의어가 요청과 충돌하여 제거되므로 캐시 미스가 처리되기 전에 더티 라인의 필요한 쓰기 저장을 수행 할 수 있습니다 (따라서 동의어는 메모리 또는 물리적으로 처리 된 상위 레벨 캐시에 있음). 메모리 (또는 상위 레벨 캐시)에서 가져온 캐시 라인을 설치하기 전에 쓰기 저장 버퍼를 조사 할 수 있습니다. 메모리 내용이 캐시의 내용과 동일하고 불필요한 누락 처리 만 수행하므로 수정되지 않은 별칭을 확인할 필요가 없습니다. 이렇게하면 전체 캐시에 대한 추가 물리적 태그가 필요하지 않으며 변환 속도가 상대적으로 느려집니다.

인덱스에서 앨리어싱을 피할 수 없다면 물리적으로 태그가 지정된 캐시조차도 앨리어스를 포함 할 수있는 다른 세트를 확인해야합니다. (물리적이지 않은 하나의 인덱스 비트의 경우 단일 대체 세트에서 캐시의 두 번째 프로빙이 허용 될 수 있습니다. 이는 의사 연관성과 유사합니다.)

가상 태그가 지정된 캐시의 경우 추가 물리적 주소 태그 세트를 제공 할 수 있습니다. 이 태그는 누락시에만 액세스되며 I / O 및 다중 프로세서 캐시 일관성에 사용할 수 있습니다. (미스 및 일관성 요청은 비교적 드물기 때문에이 공유는 일반적으로 문제가되지 않습니다.)

가상 인덱싱과 함께 물리적 태깅을 사용하는 AMD의 Athlon은 코 히어 런스 프로브 및 별칭 탐지를위한 별도의 태그 세트를 제공했습니다. 3 개의 가상 전용 주소 비트가 인덱싱에 사용되므로, 미스에 대한 별칭을 찾기 위해 7 개의 대체 세트를 조사해야했습니다. L2 캐시에서 응답을 기다리는 동안이 작업을 수행 할 수 있기 때문에 대기 시간이 추가되지 않았으며 L2 캐시의 독점 성을 감안할 때 더 빈번한 일관성 요청에 추가 태그 세트를 사용할 수도 있습니다.

가상 인덱스가 큰 L1 캐시의 경우 많은 추가 세트를 탐색하는 대안은 물리적 대 가상 변환 캐시를 제공하는 것입니다. 누락 (또는 일관성 프로브)에서 실제 주소는 캐시에서 사용될 수있는 가상 주소로 변환됩니다. 각 캐시 라인에 대해 변환 캐시 항목을 제공하는 것은 실용적이지 않으므로 변환이 제거 될 때 캐시 라인을 무효화하는 수단이 필요합니다.

예를 들어 일반적인 단일 주소 공간 운영 체제에서 앨리어싱 (적어도 쓰기 가능한 주소 중)이 발생하지 않을 경우 가상 주소 지정 캐시의 유일한 단점은 이러한 시스템의 가상 주소가 실제 주소보다 큽니다. 단일 주소 공간 OS 용으로 설계된 하드웨어는 변환 lookaside 버퍼 대신 권한 lookaside 버퍼를 사용하여 마지막 수준 캐시 누락까지 변환을 지연시킬 수 있습니다.


1 비대칭 연관성은 동일한 크기 방식의 모듈로 인덱싱에 필요한 것보다 더 많은 비트를 기반으로 다른 해시로 캐시의 다른 방식을 인덱싱합니다. 충돌 누락을 줄이는 데 유용합니다. 이것은 같은 크기와 연관성의 모듈로 인덱스 캐시에 존재하지 않는 앨리어싱 문제를 일으킬 수 있습니다.


"물리적 주소로 더 큰 캐시를 색인 할 수 있도록 L1 연관성이 주로 증가하는 것은 드문 일이 아닙니다." 거기에 가상을 의미 했습니까? 마찬가지로, 세트 선택 비트의 수를 페이지 내에서 완전히 유지하기에 충분히 낮게 유지 (따라서 변환 할 필요가 없음)하기 위해 캐시는 물리적으로 태그가 계속 생성되어 대기 시간이 줄어 듭니다. 또는 페이지 오프셋 "실제 주소"아래에서 해당 비트를 호출 했습니까?
Peter Cordes

1
@PeterCordes 물리적 주소의 페이지 부분 내에서 오프셋을 호출했습니다 (가상 비트 = 가상 = 물리적 비트). 대기 시간을 강조하는 경우 가상 인덱스를 호출하는 경향이있을 수 있습니다. 앨리어싱 문제의 부족을 강조하고 있다면 물리적으로 색인을 생성하는 경향이 있습니다.
Paul A. Clayton

감사. stackoverflow.com/questions/33974193/…의 다른 스레드에서 태그를 달았을 때 알림을 받았습니까 ? L2 / L3 캐시가 일반적으로 물리적으로 인덱싱되는지 여부에 대한 전문가의 답변을 원했기 때문에 대규모 연관성이 필요하지 않을 수 있습니다. (LLB가 누락 된 후에야 TLB 이후에 발생하므로 물리 주소를 사용할 수 있기 때문에 확인되지 않기 때문에 예라고 가정합니다). 그 토론에 나온 몇 가지 다른 수수께끼가 있습니다.
Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.