SoC 아키텍처

SoC 아키텍처란?

단일 칩 시스템 아키텍처, 즉 SoC는 내부 데이터 버스 또는 네트워크 같은 통신 시스템을 통해 전부 연결된 프로세서 코어, 메모리, 하드웨어 논리, 주변기기 및 기타 구성요소를 통합하는 복잡한 집적 회로를 가리킵니다.

MATLAB®Simulink®를 사용하면 SoC에서의 구현을 위한 알고리즘을 개발한 다음 이 알고리즘이 하드 프로세서에서 실행되는 소프트웨어별로 분할되면 어떻게 수행될지 분석할 수 있습니다. 그런 다음 코드 생성기와 하드웨어 지원 패키지를 사용하여 프로그램 가능 SoC 소자와 보드를 타겟팅할 수 있습니다.

프로세서 코어

프로세서 코어는 SoC의 기초적인 구성 블록입니다. 현대의 수많은 SoC는 ARM®Cortex®-A, Cortex-M, Cortex-R 코어 같은 프로세서 코어에 기반합니다. SoC에 사용되는 다른 특수 코어에는 Synopsys® ARC® 프로세서, Cadence® Tensilica® Xtensa® 프로세서, RISC-V 명령어 집합 아키텍처에 기반한 프로세서 코어가 포함됩니다.

SoC는 여러 코어에 기반하는 경우가 점점 늘고 있습니다. 대칭형 다중 처리에서는 응용 프로그램이 여러 프로세서 코어에 걸쳐 분할됩니다. 비대칭형 다중 처리에서는 여러 코어가 확연히 다른 역할을 맡을 수 있는데, 일부 코어가 I/O를 관리하는 경성 실시간 작업을 수행할 때 다른 코어는 실행 함수를 수행할 수 있습니다. 이러한 SoC 유형은 프로그래밍과 통신에서 각각의 난관을 마주하게 됩니다.

그림 1: 프로세서, 메모리, 주변기기, 통신 버스를 포함하는 SoC.

프로세서, 메모리, 주변기기, 통신 버스를 포함하는 SoC.

메모리

SoC는 다양한 메모리 유형과 컨피규레이션을 통합할 수 있습니다. SRAM(정적 램)은 프로세서 레지스터와 빠른 L1(1차) 캐시에 사용될 수 있는 반면, DRAM(동적 램)은 SoC의 하위 레벨 메인 메모리를 구성하는 경우가 많습니다.

임베디드 비전 같은 메모리 집약적 응용 프로그램의 경우에는 개발자가 데이터의 볼륨을 관리하는 데 오프칩 DDR 메모리가 필요할 수 있습니다. SoC의 메모리 대역폭은 이러한 응용 프로그램의 설계에서 중요한 고려 사항이 될 수 있습니다. SoC Blockset™ 같은 제품을 사용하면 Simulink에서 모델링된 시스템의 메모리 대역폭을 분석할 수 있습니다.

주변기기/인터페이스

여러 주변기기가 SoC에 통합되어 왔는데, 이는 주로 널리 사용되는 통신 프로토콜을 다루기 위해서였습니다. 널리 사용되는 인터페이스로는 GPIO, PCI-Express, 기가비트 이더넷, CAN, SPI, USB, UART, I2C가 있습니다.

마이크로컨트롤러의 SoC에는 PWM(펄스 폭 변조기), ADC(아날로그-디지털 변환기), DAC(디지털-아날로그 변환기) 같은 주변기기가 포함됩니다. SoC Blockset을 사용하면 알고리즘 개발 중에 Simulink에서 이러한 주변기기를 시뮬레이션할 수 있으며, SoC Builder 앱은 주변기기 구성 과정을 자동화합니다.

통신 시스템

SoC의 다양한 모듈은 명령과 데이터를 전송하기 위해 통신이 필요합니다. 버스 기반 통신은 이러한 목적으로 초기 SoC의 개발 당시부터 사용되어 왔습니다. 가장 널리 사용되는 버스 아키텍처 중 하나는 ARM의 AMBA(Advanced Microcontroller Bus Architecture) 표준입니다. AMBA AXI(Advanced eXtensible Interface)는 반도체 산업 전반에 걸쳐 널리 도입되어 왔습니다.

최근 몇 년간은 SoC의 버스 기반 통신을 대체할 방안으로 상호 연결 네트워크가 대두되었습니다. 종종 네트워크 온 칩으로 불리는 상호 연결 아키텍처 유형을 사용하면 서브시스템마다 자체적 클록 도메인을 가질 수 있습니다.

프로그램 가능 SoC

AMD®, Intel®, Microchip 등의 반도체 기업은 FPGA 제품군을 한층 확장하고자 프로그램 가능 SoC를 개발해 왔습니다. 이러한 프로그램 가능 SoC 소자는 사용자에게 기존 FPGA의 프로그램 가능 논리와 함께 더욱 강화된 프로세서 코어를 제공합니다. 프로그램 가능 SoC를 사용하는 고객은 IP 코어의 라이브러리와 함께 프로세서 소프트웨어로 구성된 하드웨어/소프트웨어 응용 프로그램을 개발할 수 있습니다.

  • AMD는 ARM의 듀얼 코어 Cortex-A9가 장착된 Zynq®-7000 SoC를 발표했고, 이후에는 쿼드 코어 ARM Cortex-A53과 듀얼 코어 ARM Cortex-R5F 프로세서를 통합한 Zynq UltraScale+ MPSoC 및 RFSoC 제품군을 발표했습니다.
  • Intel은 SoC FPGA로 불리는 SoC 아키텍처를 갖춘 소자를 선보였습니다. Cyclone® V SoC, Arria V SoC, Arria 10 SoC 소자는 ARM 듀얼 코어 Cortex-A9 기반인 반면, Stratix 10 SoC는 쿼드 코어 ARM Cortex-A53 기반입니다.
  • Microchip Technology는 ARM Cortex-M 코어에 기반한 SmartFusion 및 SmartFusion2 SoC를 발표했으며, 최근에는 일관적 RISC-V 프로세서 클러스터를 통합하는 PolarFire® SoC FPGA 제품군을 발표했습니다.

SoC Blockset은 프로그램 가능 SoC에 기반한 SoC의 모델링, 시뮬레이션 및 분석에 사용할 수 있는 Simulink 블록을 제공합니다. SoC Blockset은 Embedded Coder®와 함께 사용되어 가독성이 좋고 간소하고 빠른 임베디드 프로세서용 C/C++ 코드를 생성할 수 있으며, HDL Coder™와 함께 사용하여 Simulink 모델로부터 합성 가능한 Verilog® 및 VHDL® 코드를 생성할 수 있습니다.

하드웨어 설계자는 프로그램 가능 SoC의 프로그램 가능 논리 내에서 IP 코어를 생성하여 계산 집약적 작업을 가속화하거나 사용자 지정 주변기기를 생성할 수 있습니다. HDL Coder를 사용하여 Simulink 모델 또는 MATLAB 알고리즘으로부터 사용자 지정 IP 코어 생성을 수행할 수 있습니다. SoC에서 이러한 IP 코어는 AXI4 레지스터를 통해 ARM 프로세서에서 실행되는 작업과 통신하거나 외부 I/O 핀을 통해 오프칩 소자 및 신호와 연동할 수 있습니다.

참조: SoC Blockset, HDL Coder, Embedded Coder, HDL Verifier, Fixed-Point Designer, Vision HDL Toolbox, FPGA design and SoC codesign, Zynq UltraScale+ RFSoC Design