ATmega128의 레지스터

마이크로프로세서

2020. 4. 21. 11:49

1. 레지스터란?

  • 레지스터는 메모리처럼 임시 또는 중간 결과를 저장하기 위해 사용된다
  • Von Neumann 구조에서 일반적으로 메모리는 CPU와 떨어져있지만, 레지스터는 CPU안에 존재한다
  • 레지스터는 크기가 작아서 메모리나 IO장치에 비해서 연산및 접근 속도가 굉장히 빠르다
  • 메모리는 저장용량이 커서 전기신호가 멀리가는데 반해, 레지스터는 멀리가지 않기 때문에 빠르다
  • 레지스터는 개수가 적기 때문에 메모리로 사용하는 것은 부적합하고, 값을 임시로 담아두는데 사용한다

 

2. Memory Mapped Register (MMR)

  • PC의 C언어에서는 레지스터의 주소가 없어서 직접 제어할 수 없으나 (단, 어셈블리 단에서는 가능함)
  • ATmega128 컨트롤러는 레지스터에 메모리 주소를 부여하여 C언어로 직접 레지스터에 접근할 수 있다.
  • 이렇게 주소가 부여된 레지스터를 Memory Mapped Register (MMR)이라고 한다.

 

3. 상태 레지스터 (SREG)

상태레지스터 (SREG)는 읽기 쓰기가 가능한 레지스터로 연산 결과에 대한 설명을 나타내는데 쓰인다

  • C(Carry) : 현재 연산에서 Carry(자리 올림수)가 발생했는지 나타낸다.
  • Z(Zero) : 연산의 결과가 Zero(0)인지 아닌지 나타낸다.
  • N(Negative) : 연산의 결과가 음수인지 아닌지 나타낸다.
  • V(oVerflow) : 연산결과에 오버플로우가 발생했는지 나타낸다.
  • S(Sign) : 해당 레지스터 내 결과의 부호를 나타내는데 쓰임.
  • H(Half Carry) : 현재 연산에서 Half Carry가 발생했는지 나타낸다.
  • T(Temporary) : 비트 복사 저장 (비트를 복사하고 저장하는데 쓰임)
  • I(Interrupt) : 전역인터럽트, 1일때 인터럽트 가능, 0일 땐 인터럽트 불가능하다.

 

4. 범용 레지스터 파일

  • ATmega128은 1Byte 크기의 범용 레지스터를 32개 가지고 있는데,
  • 여러개의 레지스터가 순서대로 쌓여있어서 이를 레지스터 파일이라고 부른다.
  • 연산에 있어서 메모리보다 레지스터가 효율적이기 때문에, 더 빠르게 처리 가능할 수 있다.
  • C언어에서는 Register키워드를 사용하여 이 레지스터파일을 사용할 수 있음.
  • 원래 레지스터는 주소를 가지고 있지 않으나, SRAM영역의 주소 일부를 할당하였다.
  • (실제로 SRAM에 있는 것은 아니고 물리적으로는 별도로 구성되어있다)

 

5. Reference

 

마이크로 프로세서 및 실습 Ⅰ

마이크로 프로세서 및 실습

www.kocw.net