Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

37120
1703
402252


[Arm프로세서] 캐시 미스 동작 Arm: Cache and Barrier

캐시 히트는 CPU가 접근하는 데이터가 캐시에 존재하면 처리되는 과정입니다. 하지만 캐시에 CPU가 접근하는 데이터가 없을 수도 있습니다. 이 때 메인 메모리에 접근해 데이터를 캐시에 로딩하는데요. 이 과정을 캐시 미스라고 명시합니다.

이번에는 다음 그림을 보면서 캐시 미스가 발생하는 과정을 알아봅시다.
 
그림 17.5 데이터 주소로 캐시에 접근해 캐시 미스가 되는 과정

그림 17.5도 0x0000_00D4 주소에 접근하는 동작을 나타냅니다. 캐시에 접근하면서 가장 먼저 0x0000_00D4 주소의 인덱스에 해당되는 캐시 라인에 접근합니다. 이 주소의 인덱스가 01(이진수)이니 1번째에 있는 캐시 라인에 접근합니다. 여기서 1번재 캐시 라인에 매핑된 태그램에 0x0000_00D4 주소의 Tag인 011가 있는지 체크합니다. 그런데 태그램에는 010이 있어 0x0000_00D4 주소의 Tag와 다릅니다. 캐시에 찾으려는 데이터가 없으니 이를 캐시 미스라고 합니다.

캐시 미스가 발생하면 어떻게 동작할까요? CPU가 메인 메모리의 주소 공간에 직접 접근해 데이터를 읽을까요? 그렇게 동작하지는 않습니다. 캐시 미스가 일어나면 외부 메모리에 있는 데이터를 01번째 인덱스의 캐시 라인으로 복사합니다. 그 다음에는 캐시 히트 과정에서 캐시에 존재하는 데이터를 읽는 동작을 수행합니다. 

[정보] 캐시 정책

캐시 미스가 발생한 다음에 외부 메모리에 있는 데이터를 가져오는 방식을 캐시 정책이라고 하는데, 그 방식은 크게 2가지로 분류할 수 있습니다.   


외부 메모리에 존재하는 데이터를 캐시 라인에 복사하는 동작을 CPU 아키텍처에서는 라인 필(Linefill)이라고 합니다. Linefill은 Line과 fill의 합성어인데 Line은 캐시의 한 라인 그리고 fill은 채우다라는 의미입니다. 위 그림에서 "인덱스 01에 해당되는 캐시 라인을 LineFill 한다"라고 설명할 수 있습니다. 
---
[정보] 캐시 미스와 관련된 용어: Victim, Eviction

캐시 미스로 교체되는 캐시 라인을 Victim 그리고 Victim 캐시 라인을 교체하는 동작을 Eviction이라고 명시합니다.
---

이제까지 캐시의 간략화된 구조에서 캐시의 기본 동작을 설명했습니다. 사실 실제 캐시는 이보다 복잡하게 구성돼 있습니다. 예를 들어 캐시는 Way와 Set으로 구성돼 있고 캐시 인덱스의 사이즈는 그림보다 사이즈가 더 큽니다. 그런데 캐시가 동작하는 핵심 개념은 위에서 설명한 내용을 크게 벗어나지 않습니다. 이 개념을 먼저 숙지한 다음에 Way와 Set에 대해서 파악하면 좋습니다.


#Reference Armv8: 캐시(Cache)

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




핑백

덧글

댓글 입력 영역