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
'마이크로프로세서' 카테고리의 다른 글
ATmega128의 EEPROM (추가메모리) (0) | 2020.04.21 |
---|---|
ATmega128의 SRAM과 레지스터 (데이터 저장용) (0) | 2020.04.21 |
ATmega128의 Flash 메모리 (프로그램 저장용) (0) | 2020.04.21 |
ATmega128 컨트롤러의 특징 (0) | 2020.04.21 |
2진수와 16진수 표현법 (0) | 2020.02.18 |
메모리 접근 구조 (폰노이만, 하버드) (0) | 2020.02.18 |
CPU, 메모리, I/O 디바이스 통신 (0) | 2020.02.18 |