본문 바로가기

무언가 만들기 위한 지식/ARM Processor

DMA와 MMU

DMA(Direct Memory Access)
프로세서의 개입없이 입출력 장치와 기억장치 사이에 데이터를 전송하는 방식이다.
DMA제어기는 입출력 장치의 주소, 읽기 쓰기의 제어 정보, 주기억 장치의 시작주소, 전송할 데이터의 크기를 알 수 있도록 구성되어 있어야 한다.
컴퓨터의 내부의 버스가 지원하는 기능으로 대개의 경우 메모리의 일정부분이 DMA에 사용될 영역으로 지정된다.
DMA가 지원되면 중앙처리장치가 데이터 전송에 관여하지 않아도 되므로 컴퓨터 성능이 좋아진다.
이는 PIO(Programmed Input/Output)의 단점을 극복하기 위해 등장하였다.

소스상에서
#define rDISRC0     (*(volatile unsigned *)0x4b000000)

위와 같이 주소를 이용해 volatile로 선언하고, 바로 변수를 이용해 사용된다.

MMU(Memory Management Unit)
CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품이다.
프로세서에서 사용되는 가상주소를 물리적으로 할당된 주소로 변환하는 어드레스 변환 기능과 메모리 보호기능을 가진다.


위그림은 AMD IOMMU를 지원하는 칩셋의 구조이다.
우측에 MMU가 CPU의 가상주소를 실제 메모리로 바꿔주는 모습을 확인할 수 있다.
하드웨어적 장치로 일종의 칩이다. 한때는 칩이 따로 나오는 경우도 있었으나 최근에는 프로세서와 같은 회로에 삽입된다고 한다.
필자가 예전에 ARM Assembler를 테스트하다가, 계속 실패한적이 있었는데,
알고보니 MMU초기화에 문제가 있던 허무한 기억이 있다 ㅠ.ㅜ;

   EXPORT MMU_EnableICache
MMU_EnableICache    
   
   mrc  p15,0,r0,c1,c0,0
   orr  r0,r0,#R1_I
   mcr  p15,0,r0,c1,c0,0
   MOV_PC_LR

위와 같이 어셈블러로 관련 소스들이 있었으나, 필자가 사용했던 것은 MMU사용을 위해 초기화하는 기능만 사용했다.

※ ARM 프로세서 중에서 MMU를 가지고 있는 프로세서는 ARM720T, ARM920T, ARM926EJ-S와 같이 프로세서 이름에 ARM?2?형태로 되어 있다.

'무언가 만들기 위한 지식 > ARM Processor' 카테고리의 다른 글

Embedded(내장형) System  (2) 2010.02.20
SOC(System On Chip)  (0) 2010.02.20
Memory Mapped I/O  (1) 2010.02.20
CISC/RISC  (0) 2010.02.20
MicroProcessor  (0) 2010.02.19