Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

848
469
422438


[Arm프로세서] 캐시(Cache): Direct-Mapped 캐시 구조 Arm: Cache and Barrier

Direct-Mapped 캐시는 가장 단순한 캐시 구조입니다. 사실 이전 절에서 다뤘던 캐시의 구조는 모두 Direct-Mapped 입니다. 이번에는 다음 그림을 보면서 Direct-Mapped 캐시의 구조 배워봅시다.

 
그림 17.9 Direct-Mapped 캐시의 구조

그림 왼쪽 부분은 캐시, 오른쪽 부분은 메인 메모리의 주소 공간을 나타냅니다. 먼저 왼쪽 부분에 있는 캐시를 보면 캐시 라인은 8개이며 각각 라인은 메모리 주소에 바로 매핑됩니다. 

Direct-Mapped 캐시는 그림과 같이 구조가 간단하므로 하드웨어 관점으로 회로를 간단하게 구성할 수 있습니다. 또한 데이터를 빠르게 검색할 수 있습니다.

그런데 Direct-Mapped 캐시는 캐시 히트 비율이 떨어진다는 단점이 있습니다. 각각 캐시 라인에 대한 Set가 하나이므로 데이터 주소에 대한 캐시 미스가 발생할 가능성이 더 높습니다.

그림 17.9의 상황을 예로 듭시다. 메인 메모리에서 0x0 주소와 0x1000 주소는 0번째 캐시 라인에 매핑돼 있습니다. 그 이유는 두 주소의 인덱스가 같기 때문입니다. 만약 프로그램에서 0x0과 0x1000 주소에 번갈아 접근하면 어떻게 동작할까요?

0x0 주소에 접근하면 메모리 블록을 캐시에 로딩하면서 해당 캐시 라인의 태그를 0으로 업데이트할 것입니다. 그 다음에 0x1000 주소에 접근하면 어떻게 동작할까요? 0x1000 주소의 인덱스는 0이므로 0번째 캐시 라인에 접근합니다. 그런데 0x1000 주소의 태그 정보와 0번째 캐시 라인의 태그는 다를 겁니다. 

그래서 캐시 미스가 다시 발생해 메인 메모리에 접근해 메모리 블록을 캐시에 로딩할 겁니다.

이처럼 Direct-Mapped 캐시는 캐시 히트 비율이 떨어지는 단점이 있어, Arm 프로세서는 Direct-Mapped 캐시 구조를 확장한 Set-Associate 캐시 방식을 적용합니다. 

#Reference Armv8: 캐시(Cache)

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







핑백

덧글

댓글 입력 영역