高度なプロセス ノードでは、かつてのような高速クロックと低消費電力を実現できなくなっていることは周知の事実です。多くのプロセス世代で、ロジック速度は向上し続けていますが、メモリ・アクセス時間は向上していません(図1)。プロセッサの速度を制限する経路は、ほとんどの場合メモリを経由しています。これは、半導体の物理的な限界が非常に現実的であるため、将来のプロセス ノードでも変わりそうにない状況です。
同時に、組み込みアプリケーションの最大クロック速度は、1GHz~2GHzの範囲で上限に達しています(図2)。確かに、2GHzを超えるクロックの例外もいくつかありますが、ほとんどのアプリケーションでは不可能です。クロックスピードが上がるにつれて、消費電力と面積が急速に増加するため制約が生じます。ほとんどの組み込み設計は1GHz未満でクロックされており、これは将来的にもこの傾向は変わることはないでしょう。クロック速度を上げることで性能を向上させることは、ほとんどの組み込み設計にとって現実的なアプローチではありません。
ここでの課題は、組込みアプリケーションの性能要件が増加し続けていることです。これは、競争、新機能の追加、およびアプリケーション空間における要件の変化によってもたらされます。例えば、SSDドライブのサイズは、より大きな容量とより高速なアクセス速度への要求とともに急速に増加しています。また、ドライブの寿命を延ばし、データ アクセスとパフォーマンスを向上させるために、計算ストレージと人工知能が追加されています。これらすべてにより、SSD コントローラと、それらを実装するために使用されるプロセッサのパフォーマンス要件が高まっています。
プロセッサ性能の向上
プロセッサの性能を向上させるために、多くの方法が用いられてきました。パイプラインの段数を増やすことは、メモリ速度の制限に対処するために長年使用されてきました。たとえば、DesignWare® ARC® HS Processorの10ステージ パイプラインは、2サイクルのメモリ アクセスにより、16 FFCプロセスで1.8 GHz(最悪の場合)のクロックを実現できます。組み込み設計のクロック速度には限界があるため、プロセッサのパイプラインにステージを増やしてもメリットは限られます。将来的には変わるかもしれませんが、現時点では10段のパイプラインが組込み設計に最適です。
スーパースカラ実装は、面積と消費電力の増加に対する性能向上という点で良いトレードオフです。シングル イシュー アーキテクチャからデュアル イシュー アーキテクチャに移行することで、面積と消費電力の増加を抑えながら、RISC性能を40%も向上させることができます。これは、組み込みプロセッサにとっては良いトレードオフです。トライイシューやクアッドイシューに移行すると、面積と消費電力はさらに増加しますが、性能の向上は低くなります。どんな犠牲を払ってでもパフォーマンスを追求することは、組み込みプロセッサの目標ではありません。
OoO(Out-of-Order)実行を追加することで、クロック速度を上げることなく組込みアプリケーションの性能を向上させることができます。通常、完全な OoO をサポートする CPU は組込みには過剰であり、制限されたアプローチにより、プロセッサのサイズを増大させることなく最適なパフォーマンスの向上が得られます。制限されたOoOは、ハイエンドの組み込みプロセッサで一般的に使用されています。
キャッシュは、メモリーをプロセッサーに近づけ、パフォーマンスを向上させるために使用されます。キャッシュはプロセッサに対してシングルサイクル アクセスであり、必要なときに情報がキャッシュ内にあるためパフォーマンスが向上します。よく使われるコードやデータはレベル1キャッシュに保存されます。 使用頻度の低いコードやデータは、アクセスの遅いレベル2キャッシュや外部メモリに保持され、必要に応じてアクセスされます。 マルチコア プロセッサの場合、L1データ キャッシュ間のコヒーレンシーを維持することも性能向上につながります。L1キャッシュとコヒーレンシーは組み込みプロセッサでは一般的で、L2キャッシュ(およびレベル3)はハイエンド アプリケーションにのみ使用されます。
組込み設計では、複数のプロセッサの使用が増加しています。数年前、典型的なシステムオンチップ(SoC)のプロセッサ数は1~2個でした。今日では、ローエンド設計でも5プロセッサ以上が一般的で、その数は増加の一途をたどっています。これをサポートするため、ミッドレンジおよびハイエンドの組み込みアプリケーション向けプロセッサは、マルチコア実装を提供しています。2個、4個、8個のCPUコアをサポートするプロセッサが利用可能です。Linuxや他のオペレーティングシステムを使用することで、プログラマーはCPUコア間でスムーズな動作を実現しながら、実行のバランスをとってパフォーマンスを向上させることができます。
組込み設計において、ハードウェア アクセラレータの利用が増加しています。ハードウェア アクセラレータは、プロセッサの負荷を軽減しながら、最小限の消費電力と面積で高性能を実現します。ハードウェア アクセラレータの主な欠点は、プログラムできないことですが、プロセッサと連携して動作するアクセラレータを追加することで、これを軽減することができます。残念ながら、既存のプロセッサーはハードウェア アクセラレーターをサポートする機能が限られているか、まったくありません。ARC プロセッサなどの一部のプロセッサは、ユーザーがプロセッサ パイプラインにハードウェアを追加できるようにするカスタム命令をサポートしています。カスタム命令は魅力的ですが、ハードウェア アクセラレータはさらなる利点を提供し、プロセッサと組み合わせて使用することで、大幅な性能向上を実現できます。
組み込みアプリケーション向けにプロセッサの性能を向上させるには課題があります。プロセッサーはすでに、より深いパイプライン、スーパースカラー実装、OoOヘルプをサポートしていますが、そこまでしかできず、キャッシュはコヒーレンシーと同様にすでに普及しているため、これ以上の向上は期待できません。組込み設計者がすでに追求している高性能化への道は、より多くのCPUコアとハードウェアアクセラレータを設計に実装することです。
次世代組込みプロセッサ アーキテクチャ
次世代プロセッサは、大規模なマルチコア実装とハードウェアアクセラレーションのサポートを追加します(図3)。プロセッサ ベンダーは、既存のプロセッサにインターフェイスを追加するだけでは不十分です。4つまたは8つのCPUコアをサポートするプロセッサは、すでに最大周波数の限界に達しており、タイミングクロージャに重大な問題を抱える可能性があります。そのため、これ以上コアを増やしても、さらに悪化するだけです。次世代プロセッサは、タイミングクロージャを容易にし、速度制限に対処し、内部バンド幅を増加させるために、内部プロセッサインターコネクトの完全な再設計から始める必要があります。外部インターフェイスの帯域幅も、プロセッサへのデータの出入りをサポートするために増加させる必要があります。
QoS(Quality of Service)は、NOC(Network-On-Chip)では広く実装されていますが、マルチコア プロセッサでは実装が限られています。次世代プロセッサではこの状況が変わり、プログラマーは各 CPU コアとアクセラレータへの内部帯域幅を管理してパフォーマンスを最大化できるようになります。これはアプリケーションに依存するものであり、QoSがすべての設計に必要とされるわけではありませんが、予測可能な性能を保証するために、他の多くの設計では不可欠となります。
大規模プロセッサ クラスタの利点
大規模なマルチコアプロセッサは、小規模なマルチコアプロセッサよりも利点があります。4つのCPUコアを持つ3つのプロセッサクラスタとは対照的に、12CPUコアを持つプロセッサを実装することで、CPUコア間のレイテンシを削減し、コア間のスヌーピングを直接サポートすることが可能になります。もうひとつの利点は、ソフトウェアのスケーリングが向上することです。12CPUコアのプロセッサは、プログラマーにソフトウェアの分割方法の柔軟性を提供し、タスクに対処するために使用するコアの数を、必要なパフォーマンスに応じて動的に割り当てることができます。マルチプロセッサ クラスタでは、CPUコア間のアクセスが統一されていないため、このレベルのソフトウェア性能制御を行うことはより困難です。
大規模なマルチコア プロセッサは、ハードウェア アクセラレータとの緊密な結合からも利点を得ることができます。ハードウェア アクセラレーター インターフェースをSoCバスで接続するのではなく、プロセッサ内部に移動させることで、データ共有とシステム性能を向上させながら、SoCバスのレイテンシーとトラフィックを削減できます。また、共有ユーザー レジスタが実装されていれば、アクセラレータに対するプログラマブル制御の効率も向上します。
ARC HS5x/HS6x
Synopsysの次世代DesignWare ARC HS5xおよびARC HS6xプロセッサIPは、前述した多くの手法を活用してプロセッサ性能を向上させています。これらのプロセッサは、消費電力と面積の増加を抑えながら機能ユニットの利用率を向上させる高速10段デュアル発行パイプラインで構築されています。ARC 64ビットHS6xプロセッサは、完全な64ビット パイプラインとレジスタ ファイルを備えており、64ビットの仮想アドレス空間と52ビットの物理アドレス空間をサポートすることで、現在および将来の大容量メモリの直接アドレス指定と、効率的なデータ移動のための128ビットのロードとストアを可能にします(図4)。
32ビットARC HS5xおよび64ビットHS6xプロセッサのマルチコア バージョンには、非同期クロッキングと最大800GB/秒の内部総帯域幅によりタイミング クロージャを容易にするよう設計された、先進の高帯域幅内部プロセッサ インターコネクトが含まれています。新しいARC HSプロセッサのマルチコア バージョンには、最大12個のCPUコアをリンクし、最大16個のユーザー ハードウェア アクセラレータのインターフェイスをサポートする先進のインターコネクト ファブリックが含まれています。タイミング クロージャを支援するため、各コアは独自のパワー ドメインに存在し、他のコアと非同期のクロック関係を持つことができます。すべてのDesignWare ARCプロセッサと同様に、HS5xおよびHS6xプロセッサは高度なコンフィギュレーションが可能で、組み込みアプリケーション固有の性能、消費電力、面積の要件を満たすカスタム命令のサポートを可能にするARC Processor EXtension(APEX)テクノロジを実装しています。
ソフトウェア開発を加速するため、ARC HS5xおよびHS6xプロセッサは、非常に効率的なコードを生成するARC MetaWare Development Toolkitによってサポートされています。プロセッサ用のオープンソースツールサポートには、Zephyrリアルタイムオペレーティングシステム、最適化されたLinuxカーネル、GNUコンパイラコレクション(GCC)、GNUデバッガ(GDB)、および関連するGNUプログラミングユーティリティ(binutils)が含まれます。
概要
組込みアプリケーションに要求される性能は、今後も増加し続けるでしょう。このようなアプリケーションで使用されるプロセッサも性能向上が求められます。これは、面積と消費電力が制限される上、プロセッサの容易な性能向上はすでに達成されているため困難です。先進的なプロセス ノードはもはや以前ほどの性能向上をもたらさなくなり、組み込みプロセッサの速度は制限されています。スーパースカラやアウト オブ オーダー(OoO)機能は高性能プロセッサでは一般的であり、64ビットは必要であるものの、パフォーマンスの向上は限定的です。8つ以上のCPUコアとハードウェア・アクセラレータの内部接続をサポートする新世代のマルチコア・プロセッサが必要です。DesignWare ARC HS5xおよびHS6xプロセッサIPのような新しいプロセッサは、スケーラブルな性能と機能を提供すると同時に、設計者が組み込みアプリケーションの消費電力と面積の要件を管理できるようにします。先進的なアーキテクチャを採用し、高速内部インターコネクトを実装したこれらのプロセッサは、今日のハイエンド組込みアプリケーションの性能ニーズに対応する一方で、将来の設計のために十分な余力を残しています。