SoC 내부 구성 — CPU·GPU·NPU의 한 칩 분업
스마트폰과 엣지 기기 SoC 내부의 CPU, GPU, NPU, ISP 역할 분담과 협업 메커니즘, 특화 가속기가 전력 효율을 높이는 원리를 알아봅니다.
무료 공개 · 최근 수정
카메라를 켜는 1초 동안 4개 블록이 협업한다
스마트폰 카메라 앱에서 인물 모드를 켜면, 셔터를 누르기 전부터 피사체 윤곽이 분리되고 배경이 흐려집니다. 초당 60프레임(프레임당 약 16.6 ms)으로 쏟아지는 센서 신호의 노이즈를 지우고, 인공지능 모델로 인물 영역을 감지하며, 흐림 효과가 적용된 화면을 디스플레이에 그리는 작업이 동시에 일어납니다.
스마트폰이나 로봇 사양표에는 "옥타코어 CPU", "차세대 GPU", "45 TOPS NPU", "트리플 ISP" 같은 용어가 나란히 적혀 있습니다. 오픈소스 영상 인식 코드를 보드에 올렸을 때 CPU 점유율만 100%로 치솟고 프레임이 초당 3장으로 떨어지는 이유는, 각 작업을 전담 가속기에 넘기지 못했기 때문입니다.
단일 시스템 온 칩(SoC) 내부에서 각 연산 블록의 고유 역할과 협업 구조를 파악하면, 한정된 배터리와 전력 안에서 최적의 하드웨어 블록에 작업을 분배하는 기준을 세울 수 있습니다.
CPU 혼자 영상과 AI를 처리하면 병목이 생긴다
4K 해상도(3840 × 2160) 영상을 초당 60번 처리하려면 초당 5억 개의 픽셀 데이터를 다뤄야 합니다. 여기에 인물 분할 신경망 추론까지 더하면 매 프레임마다 수십억 번의 곱셈과 덧셈을 16.6 ms 안에 마쳐야 합니다.
범용 코어는 복잡한 조건문과 프로그램 흐름 제어에 맞춰 설계되어, 명령어 해석과 분기 예측에 많은 전력과 회로를 씁니다. 단순한 픽셀 변환이나 행렬 연산에 범용 코어를 투입하면, 계산 자체보다 명령어를 읽고 해독하는 오버헤드로 배터리가 소모되고 발열로 인해 클럭이 강제로 낮아집니다.
오늘날의 SoC는 성격이 다른 연산 장치들을 한 칩에 모아 각자 특화된 계산만 전담하게 하는 이기종 컴퓨팅(Heterogeneous Computing) 구조를 표준으로 채택하고 있습니다.
CPU는 조건 분기와 OS 제어를 총괄한다
SoC 내부에서 운영체제 커널을 구동하고 앱의 실행 흐름과 예외 상황을 관리하며 다른 하드웨어 블록에 작업을 지시하는 핵심 블록은 중앙처리장치(CPU; Central Processing Unit)입니다.
CPU는 소수의 고성능 코어로 구성되며, 깊은 파이프라인과 캐시 메모리, 분기 예측기를 갖추고 있습니다. 터치 입력을 받아 앱에 전달하고, 파일 시스템을 확인하며, 네트워크 연결을 관리하는 if-else 중심의 조건 분기 로직은 CPU가 가장 잘 처리합니다.
또한 CPU는 칩 내부 가속기들을 지휘합니다. 직접 수백만 픽셀을 연산하는 대신, "카메라 프레임이 준비되었으니 NPU가 인물을 추론하라"거나 "추론 결과 마스크를 이용해 GPU가 화면을 합성하라"는 명령 디스크립터를 각 블록의 작업 큐에 전달합니다.
[참고] big.LITTLE 구조
모바일과 엣지 SoC의 CPU는 고성능 코어와 저전력 고효율 코어를 섞어 배치합니다. 앱 실행이나 웹 로딩처럼 즉각적인 반응이 필요할 때는 고성능 코어가 작동하고, 화면 대기나 오디오 재생 같은 작업은 저전력 코어가 맡아 배터리 소모를 줄입니다.
GPU는 수천 개 픽셀을 병렬 계산한다
화면의 수많은 픽셀 색상과 3차원 그래픽 좌표를 동시에 계산하기 위해 작은 연산 유닛 수백~수천 개를 병렬 배치한 블록은 그래픽 처리 장치(GPU; Graphics Processing Unit)입니다.
Full HD 기준 200만 개 픽셀에 배경 흐림(Bokeh) 필터를 적용할 때, 각 픽셀에 적용하는 수식은 동일합니다. 복잡한 조건 판단 없이 같은 연산을 대량 데이터에 동시에 적용하는 단일 명령 다중 데이터(SIMD) 구조에서는 GPU가 CPU보다 월등히 빠릅니다.
SoC의 GPU는 3D 그래픽 렌더링 외에도 카메라 미리보기, 앱 UI 창, 텍스트 자막을 겹쳐 최종 디스플레이 화면 한 장으로 합치는 화면 합성(Composition)을 매 프레임 수행합니다.
NPU는 신경망 행렬 연산을 저전력으로 처리한다
딥러닝 모델의 핵심인 대규모 행렬 곱셈과 덧셈을 최소 전력으로 고속 처리하도록 설계된 인공지능 전용 블록은 신경망 처리 장치(NPU; Neural Processing Unit)입니다.
합성곱 신경망이나 트랜스포머 같은 인공지능 모델 계산의 90% 이상은 입력 데이터와 가중치(Weight)의 곱셈-누산(MAC) 연산입니다. GPU도 병렬 계산이 가능하지만, 그래픽 전용 부동소수점 회로와 텍스처 파이프라인까지 함께 구동해야 하므로 전력 낭비가 있습니다.
NPU는 그래픽 회로를 덜어내고, 8비트 정수(INT8)나 16비트 부동소수점(FP16) MAC 연산기 배열과 내부 캐시만 집적했습니다. 계산 결과를 매번 외부 DRAM에 쓰지 않고 내부 버퍼 안에서 바로 순환시켜 메모리 접근 전력을 아끼며, 초당 수조~수십조 회(TOPS)의 추론을 낮은 전력으로 마칩니다.
ISP와 코덱이 센서 신호와 영상 압축을 전담한다
SoC에는 멀티미디어 스트림을 전담하는 고정 기능 하드웨어 회로가 포함되어 있습니다.
카메라 이미지 센서의 원시(Raw) 전기 신호를 가공해 온전한 영상 프레임으로 만드는 전용 블록은 이미지 신호 처리기(ISP; Image Signal Processor)입니다. 센서의 베이어 패턴 데이터를 받아 화소 색상을 복원(디모자이킹)하고, 노이즈를 지우며, 자동 노출과 자동 초점을 하드웨어 파이프라인으로 지연 없이 계산합니다.
오디오 DSP는 수 밀리와트(mW) 전력으로 마이크를 감시하며 호출어 감지와 잡음 제거를 처리합니다. 비디오 코덱(VPU)은 4K 영상을 H.264, HEVC, AV1 규격으로 압축하거나 복원하는 고정 규격 인코딩·디코딩을 전담합니다.
특화 가속기는 전용 회로로 와트당 성능을 높인다
특정 연산 패턴만 처리하도록 범용 제어 회로를 덜어내고 데이터 경로를 맞춤 설계한 하드웨어를 도메인 특화 가속기(DSA; Domain-Specific Accelerator)라고 부릅니다.
SoC가 CPU 코어를 늘리는 대신 전용 가속기들을 함께 싣는 이유는 에너지 효율, 즉 와트당 성능(Perf/Watt) 때문입니다. 배터리로 작동하는 기기에서는 소비 전력(5 W ~ 15 W)과 발열 한계가 정해져 있습니다.
| 연산 블록 | 주요 설계 구조 | 최적화된 작업 영역 | 범용성 | 에너지 효율 |
|---|---|---|---|---|
| CPU (중앙처리장치) | 소수 정예 코어, 분기 예측, 깊은 캐시 | OS 커널, 앱 제어, 복잡한 조건 분기 | 매우 높음 (모든 코드 실행) | 기준 (1×) |
| GPU (그래픽 처리 장치) | 수백~수천 개 ALU 병렬 배열 (SIMD) | 3D 그래픽, 픽셀 필터, UI 화면 합성 | 중간 (셰이더·병렬 커널) | 중간 (병렬 데이터 우위) |
| NPU (신경망 처리 장치) | 대규모 행렬 곱셈-누산(MAC) 배열 | 딥러닝 추론 (객체 탐지, 비전 모델) | 낮음 (행렬 연산 특화) | 높음 (저전력 AI 추론) |
| ISP / 비디오 코덱 | 고정 파이프라인 전용 하드웨어 | 센서 노이즈 보정, H.264/HEVC 압축 | 매우 낮음 (정해진 규격 전담) | 매우 높음 (고정 스트림 특화) |
작업 범위를 좁힐수록 불필요한 제어 회로를 줄이고 연산기와 메모리 선로를 최단 거리로 직결할 수 있습니다. 4K 60fps 영상을 CPU 소프트웨어로 압축하면 코어가 100% 가동되며 수 와트를 쓰지만, 전용 비디오 코덱은 수백 밀리와트만으로 프레임 손실 없이 압축을 끝냅니다.
통합 메모리 포인터 공유로 복사 비용을 없앤다
여러 블록이 한 프레임을 차례로 처리할 때 데이터 복사 시간을 없애야 실시간 처리가 가능합니다. 카메라 실시간 AI 인물 모드가 SoC 내부에서 처리되는 과정은 다음과 같습니다.
센서 입력부터 최종 화면 출력까지 4대 핵심 블록과 통합 메모리 버퍼가 데이터를 주고받는 협업 구조입니다.
그림: 센서 입력부터 화면 출력까지 SoC 내부 4대 연산 블록과 통합 메모리가 협업하는 구조
1080p 카메라 프레임 한 장(16.6 ms)은 다음 5단계로 처리됩니다.
- 작업 조율(CPU): 카메라 드라이버를 초기화하고, 각 블록이 결과를 기록할 통합 메모리 버퍼(
DMA-BUF) 영역을 지정합니다. - 센서 신호 보정(ISP): 센서의 원시 데이터를 받아 노이즈를 지우고 색을 복원한 뒤, 통합 메모리 버퍼
0x8000_0000에 기록합니다. - 인물 영역 추론(NPU): CPU로부터 메모리 주소 포인터(
0x8000_0000)를 넘겨받아 경량 신경망을 실행하고, 인물 영역 마스크를0x8060_0000에 씁니다. - 배경 흐림 및 합성(GPU): 원본 이미지(
0x8000_0000)와 마스크(0x8060_0000)를 참조하여 배경 픽셀에만 블러 셰이더를 입히고 UI를 합성합니다. - 디스플레이 출력 및 저장: 완성된 화면 버퍼를 디스플레이 컨트롤러가 화면에 띄우고, 셔터 입력 시 비디오 코덱이 JPEG 파일로 압축해 저장합니다.
이 과정에서 메가바이트 단위의 이미지 데이터는 CPU 레지스터를 거쳐 복사되지 않습니다. 모든 연산 블록이 단일 DRAM을 공유하며 직접 메모리 접근(DMA) 방식으로 데이터를 읽고 쓰며, CPU는 수십 바이트의 주소 포인터와 동기화 신호만 교환합니다.
리눅스 엣지 보드에서 가속기 장치 노드를 점검한다
실제 리눅스 기반 보드(라즈베리파이, RK3588, Jetson 등)에서 작업이 느려졌다면 코드가 가속기를 사용하지 못하고 CPU 폴백(Fallback)으로 동작하는지 점검해야 합니다.
운영체제는 SoC 내부의 연산 블록을 디바이스 트리를 통해 인식하고 /dev 경로에 장치 파일로 노출합니다. 다음 명령으로 등록된 CPU 코어 구성과 GPU, 비디오 코덱 디바이스 노드를 확인합니다.
# 1. CPU 코어 구성 및 클럭 범위 확인:
lscpu | grep -E "Model name|CPU\(s\)|MHz"
# 2. GPU, 카메라 ISP/비디오 코덱, 가속기 장치 노드 확인:
ls -l /dev/dri/render* /dev/video*이기종 코어가 탑재된 ARM SoC 보드의 예시 출력입니다.
CPU(s): 8
Model name: Cortex-A55
CPU max MHz: 1800.0000
CPU min MHz: 408.0000
Model name: Cortex-A76
CPU max MHz: 2400.0000
CPU min MHz: 408.0000
crw-rw----+ 1 root render 226, 128 Oct 17 12:00 /dev/dri/renderD128
crw-rw----+ 1 root video 81, 0 Oct 17 12:00 /dev/video0
crw-rw----+ 1 root video 81, 1 Oct 17 12:00 /dev/video1출력에서 저전력 코어(Cortex-A55)와 고성능 코어(Cortex-A76)의 결합을 확인할 수 있습니다. /dev/dri/renderD128은 GPU 연산 노드이며, /dev/video*는 카메라 입력 및 비디오 코덱 통로입니다.
온디바이스 AI 추론 시 CPU 점유율만 치솟는다면 다음을 확인합니다.
- ONNX Runtime이나 LiteRT 초기화 시 기본 CPU 대신 해당 SoC의 NPU/GPU 델리게이트를 지정했는지 확인합니다.
- NPU 연산에 맞게 모델 가중치가 INT8 또는 FP16으로 양자화되어 있는지 점검합니다.
- 지원되지 않는 커스텀 연산자로 인해 NPU와 CPU 간 데이터 왕복이 일어나는지 프로파일러로 점검합니다.
연산 블록별 작업 분배로 엣지 성능을 완성한다
SoC는 단순한 부품 통합이 아니라, 서로 다른 계산 구조를 가진 전문 블록들이 통합 메모리 위에서 협업하는 분업 체계입니다.
마이크로컨트롤러(MCU)가 단일 CPU 코어로 고정 제어 루프를 돈다면, 현대 SoC는 데이터 특성에 따라 일감을 나눕니다. 센서 신호는 ISP가, 인공지능 추론은 NPU가, 그래픽 합성은 GPU가, 시스템 제어는 CPU가 맡습니다. 각 블록의 특성과 메모리 공유 방식을 이해하고 연산을 적절히 분배할 때, 제한된 배터리 환경에서도 고성능 엣지 AI 서비스를 안정적으로 운영할 수 있습니다.
참고 문서
- Arm Heterogeneous Computing (CPU·GPU·NPU 이기종 컴퓨팅 아키텍처 개요): https://www.arm.com/why-arm/architecture/heterogeneous-computing
- Android Developers — Neural Networks API (NNAPI) 및 하드웨어 가속기 구조 안내: https://developer.android.com/ndk/guides/neuralnetworks
- The Linux Kernel Documentation — DMA-BUF Buffer Sharing (블록 간 무복사 메모리 공유 프레임워크): https://docs.kernel.org/driver-api/dma-buf.html
- Video4Linux (V4L2) 및 미디어 컨트롤러 인프라 공식 문서: https://docs.kernel.org/userspace-api/media/v4l/v4l2.html
설명이 어렵거나 잘못된 부분을 발견하셨나요?
문서 수정 의견 보내기