CACHE

포스트: 8
Tags

Posts

8 posts

[Arm프로세서] 캐시: 캐시 관련 어셈블리 명령어

Guillermo Austin Kim|2022년 7월 22일

캐시를 설정하거나 원하는 방식으로 캐시를 구동하려면 캐시와 연관된 시스템 레지스터만 설정해야 한다고 생각할 수 있습니다. Arm 아키텍처에서는 캐시를 세세하게 동작시킬 수 있는 어셈블리 명령어를 제공합니다. 이번에는 캐시를 제어하는 어셈블리 명령어를 알아봅시다. 표 17.5 캐시 관련 어셈블리 명령어 시스템을 초기화할 때 캐시를 원하는 방식으로 설정해야 성능을 제대로 낼 수 있습니다. 이를 위해 캐시를 제어하는 명령어의 사용 방법을 잘 익혀 둘 필요가 있습니다. 시스템을 초기화하는 과정에서 캐시를 스팩에 마젝 적절히 설정하면 시스템의 성능을 극대화할 수 있습니다.

[Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점)

Guillermo Austin Kim|2022년 7월 22일

Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를

[Arm프로세서] 캐시(Cache): Set-associative 캐시 구조

Guillermo Austin Kim|2022년 6월 27일

Set-associative 캐시는 하나의 Set(집합)가 여러 개의 캐시 엔트리로 구성된 캐시 구조입니다. Set-associative란 용어에서 Set은 수학에서 정의된 집합으로 비유할 수 있는데, 하나의 Set가 여러 개의 캐시 엔트리로 구성된 구조입니다. 다음 그림을 보면서 Set-associative 캐시의 구조를 배워 봅시다. 그림 17.10 Set-associative 캐시의 구조 그림의 가장 윗 부분에는 주소가 보이는데, 주소를 세 부분으로 나눠져 있습니다. ① 로 표기된 부분은 주소의 인덱스 값으로 캐시 라인에 접근하는 동작을 나타냅니다. 그런데 캐시 라인은 4Way로 구성돼 있으므로 1개의 Set는 4개의 캐시 라인으로 구성돼 있다는 사실을 알 수 있습니다. 그림에서

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

Guillermo Austin Kim|2022년 6월 12일

Direct-Mapped 캐시는 가장 단순한 캐시 구조입니다. 사실 이전 절에서 다뤘던 캐시의 구조는 모두 Direct-Mapped 입니다. 이번에는 다음 그림을 보면서 Direct-Mapped 캐시의 구조 배워봅시다. 그림 17.9 Direct-Mapped 캐시의 구조 그림 왼쪽 부분은 캐시, 오른쪽 부분은 메인 메모리의 주소 공간을 나타냅니다. 먼저 왼쪽 부분에 있는 캐시를 보면 캐시 라인은 8개이며 각각 라인은 메모리 주소에 바로 매핑됩니다. Direct-Mapped 캐시는 그림과 같이 구조가 간단하므로 하드웨어 관점으로 회로를 간단하게 구성할 수 있습니다. 또한 데이터를 빠르게 검색할 수 있습니다. 그런데 Direct-Mapped 캐시는 캐시 히트 비율이 떨어진다는 단점이 있습니다. 각각