반도체

[MCU강의②] MCU의 내부 구조와 동작 프로세스

한주엽

<편집자 주> 디지털데일리는 총 11회에 걸쳐 마이크로컨트롤러유닛(MCU)의 면면을 파헤치는 해설 기사를 게재합니다. MCU는 다양한 전자제품에 탑재되는 핵심 반도체 가운데 하나입니다. 글 싣는 순서는 다음과 같습니다. ①MCU란 무엇인가? ②MCU의 내부 구성 ③CPU란 무엇인가? ④MCU 소프트웨어 개발 ⑤CPU 실행방법 ⑥ ALU의 구성 ⑦MCU용 언어 ⑧호스트 PC를 타겟 보드에 연결하는 툴 선택하기 ⑨범용 IO ⑩MCU 개발에 사용되는 소프트웨어 개요 ⑪MCU의 팹 공정.

마이크로컨트롤러유닛(MCU) 내부 구조에 대해서 알고 싶다면, MCU가 어떻게 복잡한 명령을 처리하는지를 먼저 이해해야 한다. MCU는 다양한 종류가 있다. MCU제조사의 설계 엔지니어들이 제품 개선을 위해 독창적인 기능을 다양하게 탑재하기 때문에 면밀히 살펴보면 상당히 다른 구조들을 갖추고 있다. 하지만, 일반적으로 보자면 MCU 내부는 비슷하다. 이 글에서는 일반적으로 사용되는 MCU의 구조를 설명하고자 한다.

MCU는 아래와 같은 3가지 기능을 수행한다.

▲ 프로그래머가 생성한 프로그램 코드를 읽는다.
▲ 읽은 프로그램을 처리한다.
▲ 프로그램 처리 후, 처리 결과를 MCU 외부에 출력한다.

여기서 ‘출력(Output)’이란 MCU의 동작 수행을 의미하며, 데이터 표시, 적외선 신호 생성, 버튼 작동으로 데이터 불러오기, 시간 확인 또는 외부 IC와의 통신과 같은 기능 등을 포함한다.

이러한 기능들을 수행하기 위해서 MCU는 동작 수행을 위한 프로그램이 반드시 있어야 한다. 이 프로그램이 저장되는 장소를 메모리라고 부르는데, 프로그래머는 MCU가 사용되기 전 메모리에 프로그램(MCU가 처리할 명령)을 입력해야 한다. 이 프로그램을 처리하는 기능도 반드시 필요하며, 중앙 처리 장치(CPU)가 담당한다. 만약 프로그램이 매우 단순하다면 하나의 CPU가 전체 프로그램을 처리할 수 있지만 프로그램이 복잡하면 CPU는 명령을 처리하는 동안 일부 데이터를 임시로 저장할 수 있어야 한다. 메모리는 바로 이런 목적으로도 사용된다.

언급된 다른 명령과 적외선 신호 생성과 같은 일을 포함하는 MCU의 출력은 보조 모듈(peripheral module)에 의해 처리된다.

요약하면, MCU는CPU, 일부 메모리, 및 보조 모듈로 구성된다. 그림1을 통해 보다 쉽게 이해할 수 있다.

그림1. MCU의 내부 구조
그림1. MCU의 내부 구조

그림 1은 3개의 큰 블록으로 구성된 MCU를 간략하게 표시하고 있다. 메모리와 CPU는 명령과 데이터를 서로 주고 받고, 프로그램 처리 결과에 대한 정보는 CPU와 MCU의 외부 인터페이스인 보조 모듈 사이에 교환된다. 참고로, 데이터는 정보 전송 회로인 버스 (bus) 에 의해 위의 3개 블록들 사이에서 전송된다. 하지만 실제MCU의 내부가 어떻게 작동하는지를 이해하려면 그 이상의 정보가 필요하다. 그림2는 MCU에 대한 구체적으로 자세히 나타내고 있다.

그림2. 더 자세한 MCU의 내부 구조
그림2. 더 자세한 MCU의 내부 구조

▲ 메모리
▲ ROM(읽기 전용 메모리) : 프로그래머가 프로그램을 기록하기 위한 읽기 전용 저장 장치.
▲ RAM(랜덤 엑세스 메모리) : CPU가 작동 중에 일시적으로 데이터를 저장하는 것을 읽고 / 쓰는 저장 장치.
▲CPU
▲ALU(산술 논리 연산 장치) : ALU는 CPU에서 산술연산과 논리연산을 수행한다.
▲Register(레지스터) : RAM과 같이 레지스터는 작동 중에 데이터를 임시적으로 저장하기 위해 CPU에 의해 사용된다.
▲Shifter(쉬프터): 쉬프터는 명령 실행 없이 데이터 바이트를 이동시킨다.
▲보조모듈
▲커뮤니케이션 모듈 : 이 모듈은 MCU 외부 장치와 데이터를 주고 받는다.
▲AD/DA 전환 모듈: 이 모듈은 디지털 데이터를 처리하는 MCU가 아날로그 데이터를 처리하는 외부 장치와 함께 사용되었을 때, 아날로그 데이터를 디지털 데이터로 전환하는 작업을 수행한다.
▲타이머 모듈: 이 모듈은 시간을 측정한다.

메모리는 여러 종류가 있다. 플래시ROM, EEPROM은 변경되지 않는 데이터를 저장하기 위해 고안됐다. 그렇기 때문에 이 메모리들은 주로 변경 빈도가 아주 낮은 프로그램을 저장한다. 반면, CPU의 운영 데이터는 사용 빈도가 상대적으로 높다. 이렇게 사용 빈도가 높은 데이터는 랜덤 엑세스 메모리(RAM)에 저장되게 된다.

CPU는 대체로 산술 논리 연산 장치(ALU), 레지스터 및 쉬프터 장치로 나눠진다. ALU 는 산술 연산과 논리연산 처리를 수행하고, 쉬프터 장치는 데이터를 이동시킨다. 레지스터는 임시적으로 데이터를 저장하는데, 메모리에서 제거된 데이터가 동작할 때까지만 데이터를 임시 저장한다.

보조 모듈 장치에도 다양한 종류가 있다. 여기서는 커뮤니케이션(통신 모듈), AD/DA 전환, 타이머 기능 등과 관련된 보조 모듈을 다룬다. 커뮤니케이션 기능은 SPI, USART, 및 I2C와 같은 표준을 준수한다. 다른 표준들로는 오디오 전송만을 다루는 I2S와 USB, 그리고 많은 사람들에게 익숙한 인터페이스 커뮤니케이션 등이 있다. AD/DA 전환을 위한 보조 모듈은 아날로그 데이터를 디지털 데이터로 바꾸는 AD 컨버터와(그림2의 ADC), 디지털 데이터를 아날로그 데이터로 바꾸는 DA 컨버터(그림2의 ‘DAC’)로 구성된다. 또한 아날로그 데이터를 비교하기 위한 컴퍼레이터가 포함된다. 타이머는 시간을 측정하기 위해 사용된다. 일부 고-기능 타이머는 입력 캡쳐, 토글 또는 PWM 기능을 갖추고 있다.

이제 MCU가 실제 사용될 때, 위에 언급된 기능들이 어떻게 작동하는지를 알아보자. 여기서 ‘MCU가 사용될 때’ 란 프로그래머에 의한 프로그램 생성과 MCU 외부와의 첫 정보 교환(데이터) 사이의 프로세스를 의미한다. 그림 3은 MCU 부품이 처리하는 다양한 프로세스를 설명하고 있다.

그림3. MCU 부품의 프로세스
그림3. MCU 부품의 프로세스

▲프로그램 생성 : 프로그래머가 PC를 사용하여 프로그램을 생성한다. 이 프로그램은 MCU가 처리할 동작을 정의한다.
▲프로그램을 ROM에 입력 : 프로그래머가 생성한 프로그램이 ROM에 입력된다(PC 사용).
▲CPU활성화 : MCU가 켜지면, CPU 가 활성화되어 ROM으로부터의 프로그램을 읽는다. 그리고 그에 따른 프로그램의 임무를 연속적으로 처리한다.
▲기능 수행 : ALU은 산술 연산, 논리 연산 및 데이터 전송을 처리하고, Shifter(쉬프터)는 데이터를 이동시킨다.
▲임시 저장 데이터 : 만약 동작 처리 중 데이터의 임시 저장이 필요할 때 RAM이나 레지스터에 저장된다. 참고로, RAM 은 대용량의 데이터를 보관할 수 있지만, 레지스터는 데이터 용량이 적은 경우에만 사용된다.
▲보조 모듈에 전송되는 명령 : CPU는 동작 명령을 보조 모듈에 전송한다.
▲CPU, 보조 모듈 및 외부 회로 간에 교환되는 데이터 : 보조 모듈과 외부 회로 간에 교환된 데이터는 CPU와 교환된다.

글 : 마사루 스가이(ST마이크로 MMS그룹)

한주엽
webmaster@ddaily.co.kr
기자의 전체기사 보기 기자의 전체기사 보기
디지털데일리가 직접 편집한 뉴스 채널