Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

34120
1703
402249


[Arm프로세서] 캐시의 구성 요소 Arm: Cache and Barrier

캐시는 캐시 라인과 캐시 라인의 속성을 나타내는 부가 정보로 구성돼 있습니다. 이어서 캐시를 나타내는 다음 표를 보면서 캐시의 구성 요소를 알아봅시다.

표 17.2 캐시의 구성 요소

표 17.2는 캐시를 구성하는 콤포넌트(Component)를 나타냅니다. 표의 각 행은 캐시 엔트리로 명시합니다. 그림을 보면 4개의 캐시 엔트리로 구성됐음을 확인할 수 있는데, 이처럼 캐시는 캐시 엔트리로 구성돼 있습니다. 

표 17.2는 캐시 엔트리의 갯수가 4개입니다. 만약에 512개 캐시 엔트리로 구성된 캐시의 경우 행의 갯수가 512라고 보면 됩니다. 캐시 엔트리는 다음과 같은 정보로 구성돼 있습니다.  

캐시 라인(캐시 블록): 메인 메모리에서 로딩된 데이터
부가 정보: 태그(Tag), Valid, 인덱스

캐시 라인은 메인 메모리에서 로딩한 로우 데이터(Raw Data)을 담고 있습니다. 캐시 라인의 사이즈는 얼마나 될까요? 캐시 라인의 사이즈는 64바이트 혹은 128 바이트입니다. 캐시를 나타내는 표 17.2는 4바이트 사이즈의 주소가 4개가 있습니다. 따라서 캐시 라인의 사이즈는 16바이트입니다. 

부가 정보는 캐시 라인의 상태를 나타냅니다. 각각 부가 정보는 다음과 같습니다.

태그(tag): 주소의 상위 비트에 있는 값으로 CPU에서 접근하는 데이터 주소가 캐시 라인에 실제 있는지를 체크하는 기준 데이터
인덱스: 주소의 가운데 부분(비트)에 매핑되는 부분으로 캐시 라인의 위치에 매핑 
V는 Valid의 약자로 캐시 라인의 데이터가 유효한지를 나타내는 부가 정보. 시스템이 처음 실행될 때 Valid은 모두 0이며, 캐시 라인의 데이터가 유효한 경우 1로 업데이트됨
D는 Dirty의 약자로 캐시 라인의 데이터가 변경됐음을 나타내는 부가 정보. 어떤 주소의 데이터가 변경되면 바로 메인 메모리에 접근해 업데이트하지 않고 먼저 캐시에 변경된 내용을 반영.이 때 D(Dirty)로 마킹하고 설정된 정책에 따라 메인 메모리에 변경된 데이터를 써줌

여기까지 캐시를 이루는 캐시 라인과 캐시의 속성을 나타내는 부가 정보를 알아봤습니다. 이어서 데이터 주소를 바탕으로 캐시 라인에 접근하는 과정을 알아봅시다.

#Reference Armv8: 캐시(Cache)

캐시 소개
캐시의 기본 동작 원리
   캐시의 검색 방법
   캐시 lookup 기본 동작 원리
       캐시 히트 동작  
       캐시 미스 동작  
캐시 제어 레지스터






핑백

덧글

댓글 입력 영역