Posts
171 posts[Arm프로세서] 캐시의 성능 지표
이번 포스트에서 다룬 캐시의 동작을 다시 요약하면 다음과 같습니다. “속도가 빠른 캐시를 CPU 근처에 두고 CPU가 자주 사용하는 데이터를 캐시라는 임시 저장 공간에 두면 성능을 키울 수 있다.” 실제 Arm 프로세서의 메모리 아키텍처 다이어그램을 분석하면 멀티 레벨로 캐시가 구성됐다는 사실을 알 수 있습니다. 캐시를 레벨로 구성하는 이유를 알려면 먼저 캐시의 성능을 측정하는 지표를 알 필요가 있습니다. 대부분 캐시의 성능 지표로 캐시 미스나 캐시 히트만 떠 올립니다. 캐시의 성능을 측정하는 정량적인 지표는 다음과 같습니다. 평균 접근 시간 = 히트 레이턴시(hit latency) + 미스 비율(where) 미스 비율 = 캐시 미스/(캐시 미스 + 캐시 히트) x 미스 패널티
[Arm프로세서] 캐시의 검색 방법: 캐시 룩업(Cache Lookup)
캐시를 검색하는 방법을 설명하기 전에 재미있는 상상을 해봅시다. 4G 크기의 메인 메모리를 사용하는 32비트 시스템에서 4G를 모두 처리할 수 있는 캐시가 있다고 가정합시다. 메모리 주소 공간은 범위가 0x~0xffff_fff이고 캐시 데이터를 저장하는 캐시 라인의 사이즈가 128이면 캐시 라인의 갯수는 3천만개가 넘을 것입니다. 계산식은 다음과 같습니다. 225 = 232 / 27 = 0xffff_ffff / 128 그런데 캐시는 SDRAM으로 구현되므로 가격이 비쌉니다. 만약 3천만개의 캐시 라인으로 구성된 컴퓨터의 가격은 매우 비쌀 겁니다. 실제 상용 CPU의 L1 캐시의 사이즈는 고작 32KB이고 L2/L3 캐시는 메가 바이트 사이즈입니다. 그래서 메인 메모리에 접근하려는 주소가 있으면 캐
[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은 익셉션 레벨



