less than 1 minute read

범용 레지스터

MCU와 같은 디지털 회로에서 flip-flop을 레지스터라고 부른다. 범용 레지스터(General-purpose register)는 명령에 사용되는 데이터를 임시로 저장하며 CPU 내부에 존재한다. 주변 장치 레지스터(peripheral register)는 주변 장치 모듈(ex: UART, ADC)에 대한 설정값이나 측정 결과를 저장하는 레지스터다. STmmicroelectronics가 생산하는 STM32에 사용되는 ARM Cortex-M3 프로세서는 범용 레지스터를 사용한다.

연산 과정

  1. ROM으로부터 명령 코드를 로딩
    • 메모리에는 MCU에 의해 실행될 명령어 코드가 포함되어 있음. 코드가 연산 명령인 경우 산술 연산이, AND, OR 등일 경우 논리 연산이 ALU에 의해 수행될 것임.
    • 이진수를 메모리에서 읽어 FIFO 프리패치 버퍼에 저장
  2. 디코더가 해당 명령 코드 해독
    • FIFO 프리패치 버퍼의 이진 데이터를 디코더가 해독
      • ex: 0000 0001 b: 덧셈 실행, 0001 0010 b: 레지스터 1과 2의 데이터를 읽어라, 0000 0011 b: 연산 결과를 레지스터 3에 입력해라
  3. 디코더가 실행 장치에 연산 명령 발행
    • 덧셈을 실행한다: ALU를 XOR로 설정 (덧셈모드)
    • r1과 r2의 데이터를 읽음: r1과 r2의 데이터를 버스에 출력해라
    • 연산 결과를 r3에 입력해라: r3에 버스를 통해 데이터가 수신 되도록 해라
  4. 연산에 사용할 레지스터 데이터를 버스로 출력
    • r1의 데이터를 ALU에 연결된 버스 1로 출력
    • r2의 데이터를 ALU에 연결된 버스 2로 출력
  5. ALU가 연산 수행
    • 덧셈 모드(XOR)에서는 ALU가 버스 2의 값을 버스 1에 추가
  6. ALU가 연산 결과를 버스로 출력
  7. 연산 결과를 범용 레지스터 또는 메모리에 저장
    • 6에서 출력된 버스를 통해 r3이 데이터 수신

Leave a comment