본문 바로가기
임베디드소프트웨어

마이크로프로세서의 내부 구조 (레지스터, ALU, 스택 포인터)

by Go! Jake 2022. 3. 15.

오늘은 마이크로프로세서의 내부 구조에 대해서 설명드리겠습니다. 오래된 프로세서이지만 원리는 동일하므로 핵심만 정리하겠습니다. 기본적으로 프로그램 버스, 데이터 버스, 주변 장치, 그리고 내부 구조 중 핵심인 CPU 코어로 이루어져 있습니다.

마이크로프로세서 내부 구조 개요

ATmega32를 예시로 들면, 구성은 아래와 같습니다.

- PC가 지시하는 플래시 메모리의 명령어를 인출/해독하는 부분

- ALU(Arithmetic and Logic Unit) 산출 및 논리 장치

- 범용 레지스터(General Purpose Register)

- 상태 레지스터(Status Register : SREG)

- SP(Stack Pointer)의 명령 처리 관련 부분

- 데이터 메모리

- 각종 입출력장치 및 주변기기(SPI Unit, Interrupt Unit, Analog Comparator Unit)

 

상태 레지스터

상태 레지스터란 ALU 연산 상태를 표시합니다. 예를 들어 결과가 음수면 음수라는 정보를 저장합니다.

 

범용 레지스터

범용 레지스터는 프로그램 수행 중 중간 결과나 데이터를 일시적으로 저장하는 데 사용됩니다.

32개의 8bit 범용 레지스터 구조는 아래와 같습니다. R26~R31은 일반 레지스터의 기능 외 별도 기능을 가지고 2개씩 묶어 주소를 지정하는 포인터 레지스터의 용도로 사용할 수 있습니다. (6개의 레지스터를 2개씩 묶으므로 16bit 3개의 레지스터가 됩니다.)

32개 범용 레지스터
32개의 범용 레지스터

스택 포인터 레지스터

스택 포인터는 서브루틴이나 인터럽트 발생 시 다시 돌아올 복귀 주소를 저장합니다.

서브 루틴: 필요 시 반복적으로 사용할 수 있는 프로그램

인터럽트: 실행 중 다른 조건으로 먼저 실행되는 프로그램

 

산술 논리 장치

AVR은 32개의 레지스터와 직접 연결되어 있습니다. ALU는 3가지 주요 기능을 합니다. 산술(Arithmetic), 논리(Logical), bit 연산(bit-operation)을 수행합니다.

 

이 글은 당근이의 AVR 갖고 놀기를 참조하였습니다.

댓글