단일 칩 시스템 (SoC)

단일 칩 시스템 (Soc)은 계산을 위한 CPU를 비롯한 여러 주변 장치를 포함하여 집적되어 있는 IC를 말합니다. SoC에는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), GPIO, I2C, SPI 등 여러 디지털, 아날로그 디바이스를 가지고 있습니다.  

이러한 SoC는 물리적인 제약이 덜한 퍼스널 컴퓨터와 같은 장치보다는 물리적인 제약이 따르는 스마트폰과 같은 이동성을 가지는 장치에 사용되는 것이 일반적입니다. 안드로이드 기반 스마트폰에서 사용하는 Qualcomm Snapdragon Series, Samsung Exynos Series 등이 있고, 애플 아이폰에서 사용하는 A Series가 있습니다. 애플사의 SoC는 자체 설계한 프로세서를 사용하고 있고, 최근 유행하는 라즈베리파이 시리즈에 사용하는 Broadcom사의 BCM2835, BCM2836, BCM2837등도 있습니다.  

이 곳에서는 비교적 자료를 구하기 쉬운 Broadcom사의 SoC에 대해서 언급합니다. 아래의 <그림 1>은 라즈베리파이 3 보드이고 빨간색 박스는 Broadcom사의 BCM2837입니다.

<그림1> 라즈베리파이3 (출처 : 위키피디아)

 

Broadcom사의 BCM2837은 아래와 같은 장치를 포함하고 있습니다 (BCM2835 ~ 7까지는 CPU의 성능 외 기본적인 구조는 동일합니다.)  

– CPU : 운영체제 제어 하에서 데이터 처리를 합니다. 산술연산, 문자 열처리 (내부적으로는 같은 산술 연산), 자료의 로딩과 저장, 그 외 디바이스 제어 등 모든 처리를 CPU에서 관할합니다.  
– GPU : 그래픽 처리를 담당합니다. 예전의 그래픽 장치는 단순히 화면 출력용이었으나, 복잡한 2D 화면 처리의 고속화와 3D 화면 처리 등으로 화면 처리를 별도로 담당할 프로세서가 필요해졌습니다. 그래서 지금은 단순한 Graphic Controller라고 부르지 않고 Graphic Precessing Unit(GPU)이라 불립니다. 
– 메모리 : CPU, GPU가 동작하기 위한 기본적인 메모리와 부트스트랩 등을 위한 메모리입니다. 라즈베리파이와 같은 소형 보드나 저가의 PC는 CPU와 GPU가 메모리를 공유해서 사용하게 되고, 고성능의 PC의 경우는 GPU용으로 따로 메모리를 가지고 있습니다. 
– 타이머 : 스케줄링, 동기화에 필요한 장치입니다. 사용자도 이 타이머를 이용해서 소프트웨어 수행 시간이나 자동 실행등의 작업을 할 수 있습니다.  
– 인터럽트 컨트롤러 : 수 많은 인터럽트를 CPU가 감당할 수 없으므로 별도의 제어장치를 사용하고 운영체제가 이를 관리합니다.  
– 범용 입출력(GPIO) : 일반 컴퓨터에는 없는 기능으로 특별한 프로토콜을 사용하지 않는 단순 입, 출력 장치입니다. 성능만 문제 삼지 않는다면 사실상 모든 디지털 입출력은 이 GPIO를 이용하여 에뮬레이션 할 수 있습니다.  
– USB : USB 디바이스 (마우스, 키보드, USB 메모리 등) 연결할 수 있습니다. 라즈베리 파이 보드에는 USB 포트 확장을 위해서 USB HUB 칩을 별도로 사용하고 있습니다.  
– PCM/I2S : 디지털 오디오를 아날로그 사운드로 변환하는 기능과, 오디오 장치 연결을 위한 상위 수준의 표준인 I2S(Inter-IC Sound, Integrated Interchip Sound)를 지원합니다.  
– DMA (직접 메모리 액세스) 컨트롤러 : CPU를 거치지 않고 디바이스 간 또는 디바이스, 메모리 간 데이터 전송을 할 수 있도록 하여 CPU의 연산 부하를 경감시켜줍니다.  
– I2C : 주변 장치 칩을 제어하기 위한 장치로 주로 터치 IC와 같은 저속의 디바이스를 위한 통신 프로토콜입니다.  
– SPI : 주변 장치 칩을 제어하기 위한 장치로 I2C보다는 고속입니다. ADC, DAC 등 비교적 고속의 디바이스를 연결하거나, 데이터 버스 확장을 통해 Micro SD나 NAND 플래시 메모리 등을 연결할 수 있습니다. 
– PWM (펄스폭 변조) : 디지털 신호를 이용하여 아날로그 출력을 만들 수 있습니다.  
– UART : 오래전부터 사용되던 비동기 직렬 통신 장치입니다. 최근에는 MCU를 이용한 제어를 제외하고는 USB를 이용한 가상 시리얼 포트를 구성하는 것이 일반적인 상황입니다.


위와 같이 SoC는 컴퓨터 시스템이 가질 수 있는 대부분의 기능을 하나의 칩으로 구성하여 물리적인 제약이 덜 할 수 있도록 하는 데 사용되고 있습니다. 다만, 이러한 구성은 인텔의 Core I 시리즈와 같이 칩 하나에 고성능의 CPU를 만들기 위한 장치를 집적하는 범용 프로세서에 비하면 성능상으로는 많이 떨어질 수밖에 없습니다. 클럭도 3 Ghz대에서 만들어지는 범용 프로세서에 비해 BCM2837의 경우 1.4 GHz의 쿼드 코어로 되어 있는데 이는 배터리를 사용해야 하는 전력 공급의 제약으로 인해 무한정 클럭을 올릴 수도 없기 때문이기도 합니다. 이러한 근본적인 문제로 당장은 SoC가 범용 컴퓨터에 사용되는 CPU를 대체할 가능성은 없어 보입니다.  

가끔 IT 뉴스에 나오는 기사나 일부 CEO가 주장하는 단일 칩 시스템(SoC)을 이용한 범용 CPU 대체론은 그 사람들의 희망사항일 뿐입니다. 최소한 이 글을 쓰는 지금은 그렇습니다.

댓글(0)

Designed by JB FACTORY