On chip / SoC
On chip은 하나의 IC에 제어, 연산, 입출력, 저장장치가 다 들어 있는 Stand alone 형태를 의미한다. SoC(System on Chip)과 같은 의미로 볼 수 있지만, 보통 SoC를 말하면 On chip + 특수기능을 하나의 칩에 구현하는 것을 의미한다.
CPU (Central Processing Unit)
CPU는 산술 및 논리 연산 유닛인 ALU(Arithmetic and Logical Unit)와 명령어를 읽어오고 해석해서 각 유닛을 제어하는 CU(Control Unit) 그리고 연산을 수행할 때 필요한 데이터를 빠르게 접근하고 처리하기 위해 사용되는 Register를 묶은 형태이다.
CPU는 실행할 프로그램과 데이터, 입출력을 제어하는 역할을 하지만 I/O(input, output)와 Memory를 가지고 있지 않다. 즉 CPU에 전원을 공급만 한다고 해서 독립적으로 작동할 수 없다. 이는 CPU가 실행할 명령어를 내장하고 있지 않기 때문에 당연한 일이다.
MPU (Micro Processor Unit) 와 MCU (Micro Controller Unit)
둘 다 컴퓨터와 같은 범용제품이 아닌 특정기능만 수행하면 되는 전자제품에 사용한다.
MCU는 하나의 칩 안에 CPU의 기능을 하는 핵심 장치와 그 주변 장치들을 포함하고 있는 통합형 칩셋을 말한다. 추가적인 로직 회로 없이 모든 것을 칩 하나로 할 수 있기 때문에 PCB 부피를 줄일 수 있어서 많이 사용한다. Controller라고 하는 이유는 MCU의 I/O를 사용하여 LED와 모터 같은 주변 부품들을 제어할 수 있기 때문에 붙은 말이며, Micro Computer라고도 하고 이걸 줄여서 MICOM이라고도 부른다.
반면 MPU는 문자 그대로 CPU의 소형화 버전이며 주어진 기계어를 해석하고, 연산을 수행하는 기능에 중점을 두고 있기 때문에 메모리, I/O, 다른 주변 장치들을 칩 내부에 통합하지 않고 있다. 일반적으로 개인용 컴퓨터에 사용되는 중앙 처리장치는 CPU라고 부르고, 전자기기나 산업용 장비에 쓰이는 소형화 된 CPU를 MPU라고 부른다.
GPU (Graphics Processing Unit)
이름 그대로 그래픽을 위한 CPU이다. 컴퓨터는 0과 1만을 처리하는 디지털기기라서 정수를 표현할 경우는 매우 빠른 속도를 보여주게 되지만 소수점을 가진 숫자들을 처리할 경우는 무리가 따른다. 화면에 그림을 그려줄 때 수없이 많은 소수점 계산을 해야만 하기 때문에 정수연산이 전문인 CPU로는 부족하여 따로 그래픽 카드를 사용하기 시작했다. 그래픽 카드에 들어가는 그래픽 전문 CPU가 GPU라고 생각하면 된다.
DSP (Digital Signal Pocessor)
DSP는 주로 음성과 같은 아날로그 신호를 디지털 형태로 변환하고 이를 고속으로 연산처리하여 바로 사용하거나 다시 아날로그로 변환해 사용하는 일을 하는 프로세서이다. ASP라고 하지 않고 DSP라고 불리는 이유는 계산을 디지털 값으로 변환 후 수행하기 때문이다. 보통 일반적인 CPU, MPU, MCU 들이 명령어의 해석 및 처리와 계산도 좀 한다면 DSP와 GPU는 주목적이 계산이다. GPU는 소수점 연산에, DSP는 디지털 신호 계산에 특화되어 있다.
한편 DSP는 신호처리에 최적화된 명령어 세트와 아키텍처를 사용하여 고속의 수학 연산이 필요한 신호처리 작업을 효율적으로 처리할 수 있다.
읽어볼만한 글 : DSP는 RISC인가 CISC인가 아니면 무었인가? (https://m.blog.naver.com/kor31/80018076457)
FPU(Floating-Point Unit)
실수 연산에 특화된 CPU. 프로그래밍에 필요한 제어 구조가 없어서 단독으로 프로그램을 구동시키지는 못한다. 범용 CPU 내의 실수 연산 유닛으로 포함되는 형태가 대부분이다.
ASIC (application specific integrated circuit) 와 FPGA (field programmable gate array)
위의 언급한 프로세서들은 각 회사에서 용도에 맞추어 CU, ALU, Memory, I/O 등을 넣거나 빼고 강화하거나 해서 하나의 칩으로 만들어 파는 제품들이기 때문에 사용자는 자신에게 필요하지 않은 기능이 들어간 MCU를 사용해야 할 수도 있다.
그래서 존재하는 것이 ASIC와 FPGA이다.
ASIC는 주문형 반도체이고, FPGA는 사용자들이 마음대로 칩 상에 논리회로를 구성하여 자신이 원하는 기능을 만들어 낼 수 있는 도화지와 같다. 마치 C 프로그래밍하는 것처럼 Verilog 언어를 사용해 하드웨어를 프로그래밍할 수 있다. 모든 소프트웨어 알고리즘은 하드웨어로도 구현할 수 있는데, 하드웨어에서 구현된 알고리즘이 실행속도가 빠르므로 암호알고리즘 같은 것을 보통 FPGA로 구현해서 많이 사용한다.
'임베디드 개발 > 펌웨어' 카테고리의 다른 글
LwIP TCP/IP 스택 살펴보기 (0) | 2022.09.24 |
---|---|
Ethernet, MAC, MII, RMII, GMII, RGMII PHY (0) | 2022.09.24 |
빅 엔디안(Big Endian)과 리틀 엔디안(Little Endian) (0) | 2022.08.31 |
CISC 와 RISC (0) | 2022.06.23 |
STM32 ] Datasheet 첫 장에 나오는 DMIPS 란 (0) | 2022.06.23 |