[Arm프로세서] 캐시(Cache): Set-associative 캐시 구조
By Guillermo Austin Kim | 2022년 6월 27일 |
Set-associative 캐시는 하나의 Set(집합)가 여러 개의 캐시 엔트리로 구성된 캐시 구조입니다. Set-associative란 용어에서 Set은 수학에서 정의된 집합으로 비유할 수 있는데, 하나의 Set가 여러 개의 캐시 엔트리로 구성된 구조입니다. 다음 그림을 보면서 Set-associative 캐시의 구조를 배워 봅시다. 그림 17.10 Set-associative 캐시의 구조 그림의 가장 윗 부분에는 주소가 보이는데, 주소를 세 부분으로 나눠져 있습니다. ① 로 표기된 부분은 주소의 인덱스 값으로 캐시 라인에 접근하는 동작을 나타냅니다. 그런데 캐시 라인은 4Way로 구성돼 있으므로 1개의 Set는 4개의 캐시 라인으로 구성돼 있다는 사실을 알 수 있습니다. 그림에서
[ARM] CPU 캐시(Cache)란
By Guillermo Austin Kim | 2020년 10월 3일 |
이번 포스트에서는 캐시의 기본 개념에 대해 소개하고 ARM 프로세서에 적용된 캐시의 개념에 대해 설명하겠습니다. CPU 캐시(Cache)란 캐시란 컴퓨터 용어로 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 의미합니다. 캐시는 자주 사용되는 데이터를 임시 저장해 데이터에 접근하는 속도를 최적화하기 위해 사용됩니다. 다양한 소프트웨어 분야에서 캐시가 사용되는데 CPU를 설계할 때도 캐시를 사용해 CPU의 실행 속도를 최적화합니다. 그렇다면 CPU에서 캐시는 어떤 방식으로 사용이 될까요? 캐시는 어떤 형태일까요? 의문이 계속 생깁니다. 먼저 CPU에서 사용되는 캐시에 대해 알아봅시다. 사실 처음 CPU를 연구했던 과학자들은 처음부터 캐시를 CPU에 적용한 것은 아니었습니다. 오랫동안 CPU를 설계하는
[ARM프로세서] ARMv7: 소프트웨어 인터럽트 익셉션의 실행 흐름
By Guillermo Austin Kim | 2020년 11월 24일 |
[ARM프로세서] ARMv7: SW 인터럽트 익셉션의 실행 흐름 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발합니다. ARM 코어가 'svc' 명령어를 디코딩하면 이를 익셉션의 한 종류로 감지하는데, ARM 스팩 문서에서는 이를 슈퍼바이저 콜(Supervisor Call)이라고 부릅니다. 'svc' 명령어를 실행하면, 외부 하드웨어에서 발생하는 것이 아닌, 소프트웨어적으로 인터럽트 익셉션이 유발되므로 흔히 소프트웨어 인터럽트라고도 합니다. 또한, SW 인터럽트는 운영체제의 시스템 콜 기능과 연관이 깊은 기능입니다. 시스템 콜은 SW 인터럽트를 활용해 구현됐기 때문입니다. 다음 그림을 보면서 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발하는 흐름을 살
[Arm프로세서] 하이퍼바이저: HCR_EL2 레지스터에 접근하는 명령어
By Guillermo Austin Kim | 2022년 2월 8일 |
HCR_EL2 레지스터를 구성하는 비트 맵 정보를 파악하면 "이 비트를 어떻게 설정할 수 있을까?"란 의문이 생길 수 있습니다. Armv8 아키텍처에서는 HCR_EL2 레지스터의 값을 읽고 쓸 수 있는 명령어를 제공합니다. HCR_EL2 레지스터의 값을 읽기 위해서 다음과 같은 형식의 명령어를 실행하면 됩니다. 그림 12.4 HCR_EL2 레지스터를 읽는 MRS 명령어 그림 12.4는 HCR_EL2 레지스터의 값을 Xt 레지스터로 로딩하는 명령어입니다. 위 그림에서 보이는 <Xt>는 Armv8 아키텍처에서 정의된 범용 레지스터를 뜻합니다. x0, x1, x2와 같은 레지스터가 지정될 수 있습니다. 이 명령어로 HCR_EL2 레지스터의 어떤 비트가 활성화돼 있는지 알 수 있습니다. mrs