변환 색인 버퍼 (translation lookaside buffer)
한 줄 정의: 가상 주소를 물리 주소로 바꾼 결과를 저장해 두는 전용 캐시입니다.
쉽게 풀면
프로그램이 쓰는 주소는 가짜 주소라서 실제 메모리 주소로 번역해야 합니다. 이 번역표는 메모리에 있어서 매번 찾아가면 느리므로, 최근에 번역한 결과 몇백 개를 프로세서 안의 아주 빠른 표에 담아 둡니다. 다음에 같은 페이지를 접근하면 번역 과정을 건너뛸 수 있습니다.
왜 중요한가
가상 메모리는 모든 메모리 접근에 주소 번역을 요구하기 때문에, 이 캐시가 없으면 접근마다 여러 번의 추가 메모리 읽기가 생겨 시스템이 실용적이지 않게 됩니다. 적중률이 몇 퍼센트만 떨어져도 체감 성능이 크게 나빠지므로 운영체제와 하드웨어 설계 모두에서 중요한 고려 대상입니다. 큰 페이지를 쓰는 최적화가 효과를 내는 이유도 여기에 있습니다.
논문에서는 이렇게 쓰입니다
"거대 페이지를 적용해 변환 색인 버퍼 미스를 줄인 결과, 대용량 인메모리 작업의 처리량이 향상되었다."
한 항목이 담당하는 메모리 범위를 키워 번역 캐시가 덜 빗나가게 했다는 뜻입니다.
조금 더 깊게 보면
명령용과 데이터용으로 나뉘고 다시 여러 수준으로 계층화되는 것이 일반적이며, 각 항목은 가상 페이지 번호와 물리 프레임 번호, 권한 비트, 주소 공간 식별자를 담습니다. 미스가 나면 하드웨어나 운영체제가 페이지 테이블을 순회해 채우는데, 다단계 페이지 테이블에서는 이 순회 자체가 여러 번의 메모리 접근을 요구합니다. 컨텍스트 스위칭 때 전체를 비우면 비용이 크므로 주소 공간 식별자를 붙여 선택적으로만 무효화합니다.
주의할 점
캐시 메모리가 데이터나 명령 자체를 보관하는 데 비해, 이 버퍼가 담는 것은 주소 번역 결과라는 점이 다릅니다. 페이지 테이블을 고쳤을 때 해당 항목을 명시적으로 무효화하지 않으면 옛 번역이 그대로 쓰여 심각한 오류가 발생합니다.