본문 바로가기

한국으로/ARM15

MMU MMUMMU의 기능1. Translation: VA(가상주소) --> PA(물리주소) 변환2. Protection: 메모리 영역 접근 권한 부여3. Cache Policy: D-Cache 동작 설정 ARM v7은 전체 4GB VA(Virtual Address) 영역을 1MB(section) 단위로 분할해서 4096개의 섹션으로 관리한다.MMU는 이 때, VA의 섹션과 PA의 섹션을 매칭시키고 변환하는 작업을 수행한다. (MMU의 규칙) MMU Translation Table (MMU T/T)CPU가 제시한 VA를 PA로 변환하기 위한 참조표.MMU T/T는 4B 크기의 4096개 Entry로 구성된다. 1st Level Descriptor T/T의 4096개 Entry 4B 값을 1st Level Des.. 2018. 7. 29.
Cortex-A9 Coprocessor Cortex-A9 Coprocessor CP15 기능1. SCR (System Control Coprocessor)2. MMU 설정 및 제어3. I-Cache, D-Cache 설정 및 제어4. L2 Cache Preload Engine의 설정 및 제어5. System Performance Monitor6. C0-C15 16개의 레지스터 보유 리턴 스택1. 함수 호출 시 복귀주소를 스택에 저장2. 리턴 명령을 prefecth하면 복귀주소를 POP하여 그 주소의 명령부터 prefetch3. 리턴이 발생하면 pipeline flushing 없이 계속 리턴 이후 명령 수행이 가능. *참고로 prefetch된 명령들은 MMU T/T 등이 변경되기 전의 조건에서 fetch된 명령들이기 때문에, 현재 명령이 MMU .. 2018. 7. 29.
Interrupt Controller Interrupt ControllerARM 코어에는 FIQ와 IRQ가 각각 하나씩만 존재한다. 하지만 인터럽스 소스들은 여러개가 있기 때문에, 코어 외부에 인터럽트 컨트롤러가 인터럽트 개수를 확장하고 운용한다. 인터럽트 컨트롤러의 역할1. 인터럽트 소스 허용 여부 결정2. 각 인터럽트의 우선순위 결정3. IRQ, FIQ 결정 IRQ 핸들러 설계 예시HandlerIRQ: sub lr, lr, #4 stmfd sp!, {r0-r3, r12, lr} ldr r0, =ICCIAR_CPU0 ldr r1, [r0] ldr r2, 0x3FF and r1, r1, r2 ldr r0, =ISR_Vector ldr r2, [r0, r1, lsl #2] blx r2 ldmfd sp!, {r0,-r3, r12, pc}^ 핸들.. 2018. 7. 29.
ARM Mode(모드) and Exception(예외) ARM Mode and Exception 파이프라인 구조ARM 아키텍처는 다음과 같은 3 스테이지 걸쳐 실행된다.1. Fetch메모리로부터 명령을 파이프라인으로 불러온다. 2. Decode명령을 decode해서 ARM 프로세서에게 보낸다. 3. ExecuteARM 프로세서 내부의 ALU 연산 결과가 레지스터값에 저장된다. ARM은 위와 같이 명령이 다음 실행 단계로 넘어갈 때 다음 명령을 새로 불러온다. 따라서 한 사이클에 최대 3개의 명령 스테이지가 동시에 진행될 수 있다. 프로세서 모드 1. User (usr)일반적인 사용자 프로그램이 실행되는 모드. 2. System (sys)Privileged OS task가 수행되는 모드. 3. Supervisor (svc)OS를 위한 protected mode.. 2018. 7. 24.