Guillermo Austin Kim
Posts
998 posts[Arm프로세서] 메모리 아키텍처에서 캐시(Cache)란
컴퓨터가 발명된 후 초장기 시점에 컴퓨터는 어떤 모습일까요? 컴퓨터의 크기는 방 하나 정도였습니다. 그 당시에 CPU와 메인 메모리만 존재했습니다. CPU가 어떤 명령어를 실행하거나 데이터를 가져오려면 메인 메모리에 접근했습니다. 컴퓨터 기술이 발전하면서 컴퓨터의 성능을 키우려는 시도를 합니다. 처음에 CPU의 처리 속도(클럭)를 키우려는 방향으로 다양한 연구를 진행했는데 CPU의 성능을 최대로 키우면 이에 비례해 시스템의 성능도 함께 좋아질 것이라 예상했습니다. 그래서 CPU의 성능을 측정했는데 다음과 같은 흥미로운 사실을 알게 됐습니다. "CPU의 대부분 시간은 메인 메모리에 접근하는데 허비한다." CPU의 실행 속도는 매우 빠른데 메모리에 접근하는 시간은 CPU의 실행 시간에 비해 상당히
[Arm프로세서] 캐시(Cache)란
캐시는 CPU 코어가 자주 사용하는 데이터를 저장하는 임시 저장 공간으로 시스템 성능에 지대한 영향을 끼칩니다. 먼저 캐시가 생겨난 배경을 설명하고 캐시를 구성하는 주요 기능을 설명합니다. 캐시란 CPU 캐시의 동작 원리를 다루기 앞서 일반적으로 캐시가 무엇인지 알아 봅시다. 캐시란 무엇이고 어떤 상황에서 쓰일까요? 캐시는 접근 속도, 대역폭, 단위 용량 등 성능 차이가 뚜렷한 두 계층 사이에서 지역성을 활용해 자주 활용되거나 인접한 자료를 잠시 저장합니다. 이런 특징을 활용해 캐시를 소프트웨어나 하드웨어로 구현합니다. 만약 캐시를 설계한다면 이를 어떤 방식으로 구현할까요? 다음과 같은 요구 사항이 떠오를 것입니다. * 캐시에 원하는 데이터를 어떻게 찾을까? * 캐시에 원하는 데이터가 없으
[Arm프로세서] Armv8: 시스템 레지스터에 접근할 수 있는 명령어
이전 포스트에서 Armv8 아키텍처에서 정의된 레지스터에 대해 알아봤습니다. 레지스터마다 각자 주어진 기능이 있지만 결국 Arm 코어가 사용하는 변수라는 점은 같습니다. 레지스터의 용법을 파악하면 다음과 같은 의문이 생길 수 있습니다. "레지스터의 값을 어떻게 읽거나 쓸 수 있을까?" 레지스터의 값을 읽거나 쓰려면 명령어를 실행해야 합니다. 그런데 레지스터의 종류에 따라 사용할 수 있는 명령어가 다음과 같이 제한돼 있습니다. * 범용 레지스터: 모든 명령어 * 시스템 레지스터: MSR, MRS 명령어 Armv8에서 정의된 범용 레지스터는 Armv8에서 정의된 모든 명령어에서 볼 수 있습니다. 데이터를 산술 연산하거나 메모리에 위치한 데이터를 읽을 때 사용됩니다. 시스템 레지스터의 값
[Arm프로세서] Armv8: 시스템 레지스터
Armv8 아키텍처는 범용 레지스터 뿐만 아니라 시스템의 세부 속성을 설정할 수 있는 시스템 레지스터를 정의합니다. 이 중에 자주 사용되는 시스템 레지스터는 잘 익혀둘 필요가 있는데요. 이어서 Arm 스팩 문서를 보면서 시스템 레지스터에 대해 알아봅시다. 4.3 System registersIn AArch64, system configuration is controlled through system registers, and accessed using MSR and MRS instructions. This contrasts with ARMv7-A, where such registers were typically accessed through coprocessor 15 (CP15) operations. Th
[Arm프로세서] Armv8: SPSR_ELx - SPSR(Saved Program Status Register) 레지스터란
SPSR_ELx SPSR 레지스터는 Saved Program Status Register의 약자로 PSTATE 정보를 백업하는 용도로 사용됩니다. 따라서 SPSR 레지스터의 비트 맵은 PSTATE와 같습니다. 그렇다면 PSTATE는 SPSR 레지스터로 언제 백업될까요? "바로 익셉션이 유발될 때입니다." SPSR은 익셉션이 발생했을 때의 PSTATE의 정보를 저장하는 용도로 사용되며, 익셉션을 처리한 후 익셉션이 발생한 시점의 익셉션 레벨로 복귀하기 위해 사용됩니다. 즉, 익셉션과 관련된 처리를 하기 위해 사용됩니다. Arm 아키텍처 문서나 어셈블리 명령어를 분석하면 SPSR 보다는 SPSR_EL1 혹은 SPSR_EL0과 같은 규칙으로 SPSR 레지스터를 명시합니다. SPSR은 익셉션 레벨



