SoC(System on Chip)

SoC는 CPU, GPU, 메모리 컨트롤러, 통신 인터페이스 등 시스템을 구성하는 여러 기능을 하나의 반도체 칩에 통합한 것이다.

일반적인 전자 시스템은 PCB 위에 서로 다른 기능을 수행하는 여러 칩과 소자를 배치한다. 반면 SoC는 주요 기능을 하나의 칩에 집적하기 때문에 시스템의 크기와 전력 소모를 줄일 수 있다. 이러한 특성 때문에 스마트폰, 태블릿, IoT 장치와 같이 작은 크기와 낮은 전력 소모가 중요한 제품에 널리 사용된다.

SoC 내부는 기능에 따라 여러 블록으로 구성된다.

- CPU: 운영체제 실행과 전반적인 제어
- GPU: 그래픽 처리와 대규모 병렬 연산
- NPU: 인공지능 모델의 행렬 연산
- Memory Controller: 외부 메모리와의 데이터 전송 제어
- I/O Interface: 디스플레이, 저장장치 및 통신 장치와의 연결

SoC의 성능은 연산 블록의 성능만으로 결정되지 않는다. CPU, GPU 또는 NPU가 처리할 데이터를 충분히 빠르게 공급받지 못하면 연산 블록은 데이터가 도착할 때까지 기다려야 한다.

따라서 SoC의 전체 성능은 다음 요소의 영향을 함께 받는다.

\[
\text{Compute Performance}
+ \text{Memory Bandwidth}
+ \text{Data Movement Efficiency}
\]

SoC 내부에는 서로 다른 기능을 수행하는 많은 IP(Intellectual Property) 블록이 존재한다. IP 블록이 많아질수록 단순한 공용 Bus만으로 데이터 전송을 처리하기 어려워지므로, 복잡한 SoC에서는 NoC(Network on Chip)를 사용하여 여러 블록 사이의 통신을 효율적으로 관리한다.

또한 여러 CPU Core 또는 CPU·GPU가 메모리를 공유하면 동일한 데이터가 여러 Cache에 저장될 수 있다. 이때 한 Cache의 데이터만 갱신되면 다른 연산 블록이 이전 데이터를 사용하는 문제가 발생할 수 있다. Cache Coherency는 여러 Cache가 동일한 데이터에 대해 일관된 값을 유지하도록 관리하는 기술이다.

마지막으로 SoC에는 많은 연산 블록이 집적되어 있으므로 전력 소모와 발열을 관리하는 기술이 중요하다.

- DVFS: 부하에 따라 전압과 동작 주파수 조절
- Clock Gating: 사용하지 않는 블록의 Clock 차단
- Power Gating: 사용하지 않는 블록의 전원 차단
- Thermal Throttling: 온도가 높아지면 성능을 제한하여 발열 억제

결국 SoC는 여러 기능을 하나의 칩에 단순히 모아 놓은 것이 아니라, 연산·메모리·데이터 통신·전력 관리를 하나의 시스템으로 설계한 반도체라고 볼 수 있다.