Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

46107
469
422678


[Arm프로세서] L1 캐시와 L2 캐시란 Arm: Cache and Barrier

이전 포스트에서는 한 개 캐시로 구성된 프로세서를 기준으로 캐시의 기본 개념을 설명했습니다. 대부분 시스템은 멀티 레벨로 캐시가 구성돼 있습니다. 다음 그림을 보면서 멀티 레벨 캐시에 대해 알아봅시다. 

 

그림 17.2 메모리 계층 구조에서 캐시의 역할 

그림의 왼쪽과 오른쪽에 있는 Core는 말 그대로 CPU 코어를 뜻합니다. Core 아랫 부분을 보면 L1I$와 L1D$ 캐시가 보입니다. 여기서 L1은 레벨 1 캐시라고 하며 L1I$는 명령어(Instruction) 캐시, L1D$는 데이터(Data) 캐시를 뜻합니다.

위와 같이 Arm 프로세서를 비롯한 대부분 프로세서는 캐시가 여러 계층으로 구성돼 있습니다. L1(Level 1: 레벨 1캐시), L2(Level 2: 레벨 2캐시)는 최신 Cortex 프로세서에 대부분 볼 수 있고, L3 캐시까지 있는 프로세서도 확인할 수 있습니다. 그림에서 L3$ 로 명시된 부분은 L3 캐시를 뜻하며, 보통 마지막 레벨의 칩 내에 위치한 캐시를 특별히 LLC(Last Level Cache)라고 부릅니다. LLC 이후는 시간이 매우 오래 걸리는 칩 밖의 메모리 계층으로 이동하므로 특별히 구분해 명시합니다. 

L1 캐시, L2 캐시를 처음 봤을 때 "캐시를 L1으로만 잘 설계하면 되지, 여러 계층의 캐시를 설계하는 이유는 무엇일까?"란 의문이 생깁니다. 여러 계층의 캐시를 두면 프로세서의 성능을 최대한 끌어 올릴 수 있기 때문입니다. 캐시의 접근 속도와 용량 사이의 트레이드 오프가 있기 마련인데요.

프로세서가 데이터를 요청하면 다음과 같은 순서로 처리합니다. 

먼저 L1 캐시부터 찾는다.
만약 L1 캐시에 데이터가 없으면 L2 캐시에서 찾는다.
그래도 데이터가 없으면 LLC에서 찾는다.
만약 LLC에 도달해도 데이터가 없으면 메인 메모리에 접근해 데이터를 가져 온다.

CPU 코어에 가장 인접한 L1 캐시 내부는 명령어 캐시와 데이터 캐시가 따로 존재합니다. 그 다음 레벨인 L2 캐시 이상의 캐시는(L2 캐시, L3 캐시) 하나의 캐시에서 명령어와 데이터를 함께 처리하는 방식으로 설계합니다. 


#Reference Armv8: 캐시(Cache)

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







핑백

덧글

댓글 입력 영역