테크/AVR(Microchip Studio)

[µ-Processor] 내부구조(ALU)

2021. 7. 20. 14:32
레지스터 구조

 

앞서 AVR의 범용레지스터는 R0 ~ R31 총 32개라고 얘기했다.

 

레지스터 하나당 8비트의 공간이 있으며 각각의 비트에 값을 저장 할 수 있도록 플립플롭(기억회로)으로 구성되어 있다.

 

따라서 하나의 레지스터에 8개의 플립플롭이 구성되어 있고 AVR 범용레지스터에만 256개가 내장되어있다.

                              왼) 1개의 레지스터에 구성된 flip-flop                                           오) 모든 범용레지스터에 구성된 flip-flop


MCU구조

우리가 컴퓨터로 게임, 영상시청, 문서작업 등 다양한 작업을 할 때 CPU가 매우 대단한 연산을 하는 것 같지만

 

사실 0과 1로 더하기, 빼기 연산밖에 하지 않는다.

(0과 1만 더하고 빼는데 이런 작업을 할 수 있다는게 대단하긴 하지...)

 

이런 기본적인 연산이 어떻게 이루어지는지 MCU의 내부구조를 확인해보자.

 

우선 "ADD Rd, Rr" 이라는 명령을 내리면 레지스터 두개가 사용되며 더하기 연산을 수행한다.

 

이때, Instruction Register(IR : 현재명령 레지스터)라는 공간에 해당 Opcode를 읽어서 저장 후 연산을 하게 된다.

 

그 다음 PC값이 증가하게 되며 다음 주소값을 가리키고 IR도 다음 메모리에 있는 Opcode로 바뀌게 된다.


이제 ADD가 어떻게 레지스터로 연산이 되는지 확인해 보자.

 

16진수로 이루어진 IR값이 디코더로 인해 지정된 레지스터에 0과 1이 들어간다.

 

많은 레지스터 중에서 의미있는 값만 선택하기 위해 MUX를 이용한다.

 

MUX를 통해 고른 두개의 신호는 덧셈기를 통해 연산을 하게 된다.

(MUX, 디코더, 덧셈기는 2학년때 '디지털공학및실습'에서 자세히 다루었기 때문에 생략)

 

덧셈하고 난 결과는 다시 사용했던 레지스터에 저장한다.

이렇게만 구성하면 더하기 연산만 하게 되지만 실제로는 빼기, AND, OR등 더 많은 연산을 한다.

 

AND명령을 추가한 구성은 다음과 같다. 

105번째 주소 연산을 할 때 adder인지 AND인지 또 선택해야 하기 때문에 MUX를 이용한다.

 

이때, 특정 상황 일 때 add 혹은 AND를 할지 선택해야 한다. 즉 그에 맞는 논리회로를 구성해야 한다는 뜻이다.

AND가 1일때 AND를 선택하고 아니면 0을 출력하는 논리회로

이 구성에서 빼기, OR을 추가확장하면 다음과 같다.

위 사진에서 오른쪽과 같이 더하기, 빼기, AND, OR연산을 하는 부분을 ALU(Arithmetic Logic Unit)이라고 부른다.

 

그림에서는 네가지 밖에 그리지 않았지만 사실은 더 많은 논리연산을 한다.(NAND, XOR 등)

'테크 > AVR(Microchip Studio)' 카테고리의 다른 글

[AVR] 아두이노를 이용한 AVR코딩 & 버튼 채터링(Microchip Studio)  (0) 2021.12.25
[AVR] Atmel Studio7 레지스터 제어, Simulator 디버깅  (0) 2021.12.23
[µ-Processor] AVR내부연산 & Opcode  (0) 2021.07.17
[µ-Processor] 기본적인 어셈블리어 & 문법  (0) 2021.07.17
[µ-Processor] 입문  (0) 2021.07.15
'테크/AVR(Microchip Studio)' 카테고리의 다른 글
  • [AVR] 아두이노를 이용한 AVR코딩 & 버튼 채터링(Microchip Studio)
  • [AVR] Atmel Studio7 레지스터 제어, Simulator 디버깅
  • [µ-Processor] AVR내부연산 & Opcode
  • [µ-Processor] 기본적인 어셈블리어 & 문법
시그널보내
시그널보내
삽질을 통해 깊게 공부하는 Electronic Engineer 연락 및 문의사항은 'donghyun9904@naver.com' 으로 부탁드립니다!
시그널보내
시그널보내
시그널보내
전체
오늘
어제
  • 분류 전체보기 (86)
    • 감상평 (0)
    • 테크 (4)
      • Network (2)
      • C | C++ (3)
      • MATLAB (12)
      • OSEK ⁄ VDX (4)
      • AVR(Microchip Studio) (9)
      • STM32 (1)
      • PcB (2)
      • [verilog | VHDL] (6)
      • 라즈베리파이 (4)
      • 아두이노 (6)
      • ML | DL (5)
      • ROS (3)
      • 리눅스 (12)
      • 프로젝트 (3)
      • 예제 (3)
    • 연수 ⁄ 교육 (4)
    • 대회 ⁄ 공모전 (3)
    • 취준 (4)
    • 사담 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • osekos
  • 현대오토에버 모빌리티 임베디드 SW스쿨
  • 아두이노avr
  • 아트멜스튜디오
  • 리눅스
  • 차량용운영체제
  • AVR
  • 머신러닝
  • VHDL
  • osek
  • 라즈베리파이
  • 경사하강법
  • 마이크로프로세서
  • 현대오토에버
  • 아두이노
  • IDEC
  • 선형회귀
  • MSE
  • vhdl문법
  • 매트랩

최근 댓글

최근 글

hELLO · Designed By 정상우.
시그널보내
[µ-Processor] 내부구조(ALU)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.