TLB 미스가 발생하고 프로세서가 페이지 테이블을 걷고있는 경우 하드웨어 TLB 관리 (예 : Intel x86-64)가있는 마이크로 프로세서에서 이러한 (오프 칩) 메모리 액세스는 캐시 계층 (L1, L2 등)을 통과합니다. )?
TLB 미스가 발생하고 프로세서가 페이지 테이블을 걷고있는 경우 하드웨어 TLB 관리 (예 : Intel x86-64)가있는 마이크로 프로세서에서 이러한 (오프 칩) 메모리 액세스는 캐시 계층 (L1, L2 등)을 통과합니다. )?
답변:
그렇습니다. Intel x86-64 프로세서에서 TLB 미스가 발생하고 프로세서가 페이지 테이블을 걷고있을 때 이러한 오프 칩 메모리 액세스는 캐시 계층을 통과합니다.
나는 아직도 약간의 세부 사항에 대해 약간 애매 모호하며 다른 답변이 그것들을 채울 것이라고 희망합니다. 내 이해는 :
Thomas W. Barr, Alan L. Cox, Scott Rixner의 2 페이지에있는 다이어그램. "번역 캐싱 : 건너 뛰지 말고 걷기 (페이지 테이블)" 는 "MMU 캐시에 저장된 항목"과 "L2 데이터 캐시에 저장된 항목"사이에 선을 그립니다. (이것은 "전자 디자인"에 대한 주제 인 새로운 CPU를 디자인 하는 사람들에게 유용한 논문 일 수 있습니다 .)
스테판 에라 니안과 데이비드 모스 버거. "IA-64 Linux 커널의 가상 메모리" 및 Ulrich Drepper. "무엇 모든 프로그래머가 메모리에 대해 알아야한다" (이것은 운영 체제를 쓰는 사람들을위한 유용한 종이 될 수 약간 주제에서 벗어난 ED에 대한 인 IA-64 페이지 테이블과 거래 -와 아마 스택 오버플로를 "operating- system "태그 또는 "osdev "태그 또는 OSDev.org 위키 가 해당 주제에 더 적합한 위치입니다).
Intel의 533 페이지에있는 표 A-10. "Intel® 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼" "PAGE_WALKS.CYCLES ... 대부분의 페이지 워크가 캐시에 의해 만족되는지 또는 L2 캐시 미스를 유발하는지 여부를 암시 할 수 있습니다."
invlpg
주어진 virt addr에 대한 TLB 캐싱을 무효화하는 것 외에는 그렇지 않다고 생각 합니다. HW pagewalk에서 해당 가상 주소에 대한 항목을 찾지 못하거나 해당 항목의 권한이 액세스를 허용하지 않으면 #PF
예외 가 발생합니다. OS는 페이지 테이블을 업데이트하여 (디스크에서 데이터를 페이징 한 후 또는 기록 중 복사를 수행 한 후) 페이지로드를 업데이트 한 다음 다시 시작하여 결함이있는로드 / 스토어가 다시 실행되고 HW 페이지 워크가 성공합니다.
나는 이것이 전자 스택 교환이 아니라 컴퓨터 아키텍처 스택 교환에 속하지만 여기에 있기 때문에 동의합니다.
@davidcary가 맞습니다.
일부 역사 :
Intel x86 페이지 테이블 워크는 Pentium이라고하는 P5까지 캐시되지 않았습니다. 보다 정확하게는 페이지 테이블 워크 메모리 액세스가 캐시되지 않고 캐시를 무시합니다. 그 때까지 대부분의 컴퓨터는 연속 기입이므로 캐시와 일치하는 값을 받았습니다. 그러나 그들은 캐시를 스누핑하지 않았습니다.
P6, 일명 Pentium Pro 및 AFAIK는 모든 후속 프로세서 페이지 테이블 워크에서 캐시에 액세스하고 캐시에서 가져온 값을 사용할 수있었습니다. 따라서, 그들은 다시 쓰기 캐시로 작업했습니다. (물론 MTRR 등으로 정의 된 캐시 할 수없는 메모리에 페이지 테이블을 배치 할 수 있습니다. 그러나 OS 디버깅에 유용 할 수 있지만 성능이 크게 저하됩니다.)
그런데,이 "페이지 테이블 워크 메모리 액세스는 데이터 캐시에 액세스 할 수있다"는 "페이지 테이블 엔트리는 TLB 변환 Lookaside 버퍼에 저장 (캐싱) 될 수있다"와는 별개이다. 일부 컴퓨터에서는 TLB를 "번역 캐시"라고합니다.
또 다른 관련 문제는 페이지 테이블의 내부 노드가 더 많은 TLB와 유사한 데이터 구조, 예를 들어 PDE 캐시에 캐시 될 수 있다는 것입니다.
한 가지 중요한 차이점은 데이터 캐시가 일관되고 스누핑 된 것입니다. 그러나 TLB 및 PDE 캐시는 스누핑되지 않으며, 즉 일관성이 없습니다. 결론은 페이지 테이블이 비 일관성 TLB 및 PDE 캐시 등으로 캐시 될 수 있기 때문에 페이지 테이블 항목이있을 때 소프트웨어가 개별 항목 또는 벌크 그룹 (예 : 전체 TLB)을 명시 적으로 플러시해야한다는 것입니다. 캐시가 변경되었습니다. RW-> R-> I에서 이동하거나 주소를 변경하는 "위험한"방식으로 변경 한 경우.
새로운 유형의 비 일관성 TLB와 같은 캐싱이 추가 될 때마다 일부 OS는 작동하지 않았다는 암시적인 가정이 있었기 때문에 고장이 났다고 말할 수 있습니다.