[ARM프로세서] ARMv7: 프리페치 어보트(Prefetch Abort)가 발생할 때 ARM 코어의 세부 동작
By Guillermo Austin Kim | 2020년 11월 30일 |
프리패치 어보트가 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.7 프리페치 어보트 익셉션을 유발할 때 변경되는 레지스터 그림 8.7은 8.2 절에서 봤던 그림과 비슷해 보입니다. 한 가지 차이점은 그림의 가운데 부분과 같이 ARM 프로세서 내부에서 처리되는 동작을 슈도 코드로 표현한 것입니다. 슈도 코드는 하드웨어적으로 처리되는 과정에 대한 이해를 돕기 위해 작성된 것이란 사실을 기억합시다. 이해를 돕기 위해 프리패치 어보트가 발생한 명령어를 실행한 주소가 0xc000d000이라고 가정하겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_abt = 0xc000d000 + 0x4 프리패치 어보트가 발생했으니 ARM 코어는 어보트 모드로 변경할 준비를 하는데, 먼저 어보트
애플, 애플 실리콘 기반 맥북 에어, 맥북 프로, 맥 미니 발표
By eggry.lab | 2020년 11월 11일 |
One More Thing 이벤트에서 이미 올해 초 WWDC에서 발표했던 ARM 아키텍쳐 기반의 애플 실리콘을 쓴 맥 라인업이 정식 발표됐습니다. One More Thing의 의미는 이게 올해 마지막이라는 것 같네요. 12월엔 발표하는 경우가 거의 없으니... 발표는 당연하다는 듯 최초의 맥용 애플 실리콘 프로세서로 시작됐습니다. 이름은 M1. 맥용은 모바일용과 다른 이름으로 가겠다는 건데, 앞으로 상위모델로 확장될 수록 모바일과는 다른 레벨의 물건이 될 가능성이 높으니 이해 되는 선택입니다. 다만 아직은 모바일, 특히 아이패드 프로용 프로세서에서 아주 조금만 확장된 것처럼 보입니다. 4+4 CPU 코어, 8코어 그래픽(모델에 따라 7코어), 16코어의 뉴럴 엔진, 그리고 8/16
[Arm프로세서] 캐시의 검색 방법: 캐시 룩업(Cache Lookup)
By Guillermo Austin Kim | 2022년 5월 18일 |
캐시를 검색하는 방법을 설명하기 전에 재미있는 상상을 해봅시다. 4G 크기의 메인 메모리를 사용하는 32비트 시스템에서 4G를 모두 처리할 수 있는 캐시가 있다고 가정합시다. 메모리 주소 공간은 범위가 0x~0xffff_fff이고 캐시 데이터를 저장하는 캐시 라인의 사이즈가 128이면 캐시 라인의 갯수는 3천만개가 넘을 것입니다. 계산식은 다음과 같습니다. 225 = 232 / 27 = 0xffff_ffff / 128 그런데 캐시는 SDRAM으로 구현되므로 가격이 비쌉니다. 만약 3천만개의 캐시 라인으로 구성된 컴퓨터의 가격은 매우 비쌀 겁니다. 실제 상용 CPU의 L1 캐시의 사이즈는 고작 32KB이고 L2/L3 캐시는 메가 바이트 사이즈입니다. 그래서 메인 메모리에 접근하려는 주소가 있으면 캐
[ARM][ARMv7] 리눅스 커널: ARM 모드를 설정하는 어셈블리 코드 분석
By Guillermo Austin Kim | 2020년 7월 22일 |
ARM 프로세서의 주요 용법을 배우기 위해 리눅스 커널만큼 좋은 리퍼런스 자료가 없는 것 같다.ARM 사의 개발자들이 리눅스 커널에 자신의 코드를 메인라인 시키기 때문이다. 이번에는 리눅스 커널에서 32비트 ARMv7 아키텍처에서 ARM의 모드를 읽어 제어하는 루틴을 살펴보자. 먼저 다음 코드를 보자. arch/arm/include/uapi/asm/ptrace.h #define USR_MODE 0x00000010#define SVC_MODE 0x00000013#define FIQ_MODE 0x00000011#define IRQ_MODE 0x00000012#define MON_MODE 0x00000016#define ABT_MODE 0x00000017#define HYP