Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

Cache, TLB relpacement policy

작성자
송대영
작성일
2019-06-10 11:28
조회
471
안녕하세요?
ARM Linux 페이지테이블과 TLB에 관련하여 질문이 있습니다.
현재 Cortex-A9 sabre lite 보드(쿼드코어)를 사용하고 있습니다.

1. Cortex-A9 Reference manual을 참고하던 중 특이한 점을 발견하였습니다.

캐시, TLB replacement policy로 LRU(Leat Recently Used) 정책을 지원하지 않는다는 점입니다.

LRU가 캐시 교체 정책 중에서 가장 유리한 교체 정책으로 배웠음에도 불구하고 Cortex-A9 프로세서가 LRU를 지원하지 않는다는 것은 의외였습니다.

http://egloos.zum.com/nzcv/v/5435756 등 여러 사이트를 참고하였는데, ARM에서는 LRU 교체젱책을 지원하지 않고 제조사에서 LRU 교체 정책을 추가하여 판매하는 것으로 확인하였습니다.

ARM에서는 어떤 제약이 있어서 기본 교체 정책으로 LRU를 지원하지 않는지 검색해봤지만 마땅한 답변을 찾지 못하였습니다.

이 부분에 대해서 문영일님의 의견이 궁금합니다.

언제나 친절한 답변 감사드립니다.
잘 부탁드리겠습니다.
전체 2
  • 2019-06-10 22:21
    안녕하세요?
    대부분의 SoC에서 TLB replacement policy를 구현하기 위해 LRU(Least Recentrl Used)/NRU(not Recently Used), Round Robin, Random 을 가장 많이 사용합니다.
    - Random을 사용하는 이유는 전력 소모가 가장 적게 들고, 로직이 간단하고, 추가 기억 장소가 필요 없습니다.
    - Round Robin을 사용하는 이유는 전력 소모가 중간 정도 들고, 로직이 간단하고, 각 index에서 round robin 카운터 용도의 추가 기억 장치가 소요됩니다.
    - LRU/NRU를 사용하는 이유는 로직이 복잡하여 전력 소모가 가장 크고, 추가 저장 비트들이 많이 소요되더라도 더 효율적인 교체 정책을 적용하는 것이 더 성능이 좋을 때 사용합니다.
    결국 아키텍처 설계에 따라 전력, 성능 등 이러한 것을 고려하여 선택하는데 L1 캐시 및 L2 캐시의 replacement policy도 유사합니다.
    또한 동시에 2개 이상 지원하여 하드웨어 설계 시 선택하게 하는 옵션도 있고, 레지스터에서 선택하게 하는 소프트웨어적인 방법을 지원하는 아키텍처들도 있습니다.
    Cortex 시리즈들도 위의 3가지 모두 다 골고루 사용하고 있습니다.
    감사합니다.

  • 2019-06-16 20:25
    친절한 답변 감사합니다!