SoC アーキテクチャ

SoC アーキテクチャとは?

SoC (システムオンチップ) アーキテクチャとは、プロセッサコア、メモリ、ハードウェアロジック、周辺回路などが組み込まれ、内部データバスやネットワークなどの通信システムで接続された複雑な集積回路の構造を示したものです。

MATLAB®Simulink® を使用すると、SoC アーキテクチャに実装するアルゴリズムを開発し、ハードプロセッサ上で動作するソフトウェア間で分割した場合のパフォーマンスを解析できます。また、コードジェネレーターやハードウェア サポート パッケージを使用して、プログラム可能な SoC デバイスやボードをターゲットにできます。

プロセッサコア

プロセッサコアは、SoC アーキテクチャの基本構成です。現在、多くの SoC は、Cortex®-ACortex-M、Cortex-R コアなど、Arm® 製のプロセッサコアをベースにしています。その他、SoC アーキテクチャでの使用に特化した、Synopsys® ARC® プロセッサ、Cadence® Tensilica® Xtensa® プロセッサ、RISC-V 命令セットアーキテクチャをベースにしたプロセッサコアなどがあります。

SoC アーキテクチャは、マルチコア化が進んでいます。対称型マルチプロセッシングでは、アプリケーションは複数のプロセッサコア間で分割されます。非対称型マルチプロセッシングでは、あるコアは I/O を管理するハード リアルタイム タスクを実行し、他のコアはユーザー インターフェイスなどの一般的な機能を実行するなど、明確に役割が異なる場合があります。対象型、非対称型いずれの SoC アーキテクチャも、プログラミングや通信面の課題があります。

図 1: SoC アーキテクチャは、プロセッサ、メモリ、周辺回路、通信バスで構成されています。

SoC アーキテクチャは、プロセッサ、メモリ、周辺回路、通信バスで構成されています。

メモリ

SoC アーキテクチャには、異なるタイプのメモリや構成を組み込むことができます。静的ランダムアクセス メモリ (SRAM) は、プロセッサのレジスタや高速のレベル 1 (L1) キャッシュに使用されますが、動的ランダムアクセス メモリ (DRAM) は多くの場合、SoC の下位メインメモリを構成します。

組み込みビジョンなど、メモリを大量に使用するアプリケーションでは、データ量の管理用にオフチップ DDR メモリが必要になる場合があります。このようなアプリケーションの設計では、SoC アーキテクチャのメモリ帯域幅が重要な考慮事項となることもあります。SoC Blockset™ などの製品を使用して、Simulink でモデル化されたシステムに対するメモリ帯域幅の解析を行えます。

周辺回路/インターフェイス

SoC アーキテクチャにはさまざまな周辺回路が組み込まれており、多くの場合は一般的な通信プロトコルに対応しています。一般的なインターフェイスとしては、GPIOPCI-Express、Gigabit Ethernet、CAN、SPI、USB、UART、I2C などが挙げられます。

マイクロコントローラーの SoC アーキテクチャには、パルス幅変調器 (PWM)、アナログ デジタル コンバーター (ADC)、デジタル アナログ コンバーター (DAC) などの周辺回路が組み込まれています。SoC Blockset は、アルゴリズム開発時にこれらの周辺回路の Simulink によるシミュレーションを支援し、SoC Builder アプリは、周辺回路の構成プロセスを自動化します。

通信システム

SoC アーキテクチャの各種モジュールは、命令やデータを送信するために通信を行う必要があります。このため、初期の SoC の開発時からバスベースの通信が使用されてきました。代表的なバスアーキテクチャとしては、Arm 社の Advanced Microcontroller Bus Architecture (AMBA) 規格が挙げられます。AMBA Advanced eXtensible Interface (AXI) は、半導体業界において広く採用されているインターフェイスです。

近年、SoC アーキテクチャでは、バスベースの通信に代わって相互接続ネットワークの利用が増加しています。ネットワークオンチップ (network-on-a-chip) と呼ばれる相互接続アーキテクチャでは、各サブシステムが独自のクロックドメインをもつことができます。

プログラム可能な 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, SoC (System on a Chip、システムオンチップ)