~無限の可能性を持つソフトコアCPUの世界へようこそ~

浅井様のご紹介・連載タイトルはこちらから

 

浅井様へご相談等ありましたら、下記アドレスへ

はじめに

前回はCPU搭載FPGAの設計をどの様なスタイルで行うのか、そしてNios IIの使用においてアルテラ社製ツールの対応について解説しました。今回はソフトコアCPUの実装について、ツールに依存する内容は避け考え方を中心に解説していきます。

 

 

シングルコアかマルチコアか

言うまでもなくソフトコアCPUはデバイスに空き領域さえあれば何個でも実装することが可能です。しかしこれまでにも申し上げてきたとおり、ハード/ソフト/ツール全てに慣れるまで、まずはシングルコアでかつ極力オーソドックスな使い方をされることをお勧めします。シングルコアでも十分色々な用途に活用できますが、既に多くのサンプルデザインや事例が紹介されていますので、そちらを参照頂くことにして、今回はマルチコアに絞って紹介していこうと思います。

 

 

マルチコアCPUの構成

対象型(負荷分散型)

マルチコアCPUと聞いて皆さんが思い浮かべるのは、最近のパソコンに搭載されているCPUではないかと思います。図 1にデュアルコアCPUの構成例を示します。これは俗に対象型と呼ばれ、OS(Operating System)の管理の下、複数のアプリケーションやマルチスレッドで組まれた1つのアプリケーションを効率よく稼働させるための仕組みです。いくつCPUがあっても見かけ上は1つのCPUの様に動作するので、ROM/RAMの様なメモリやI/O等は全てのCPUで共有されます。またソフトウェアを組む際にどのCPU上で動作するかを考える必要がないというのも特徴です。特にサーバーなど複数のクライアントから同時にアクセスされるような環境でその効力を発揮しますが、当然CPUは同じ機能/性能を持った物でなければならない等の制約があります。私はこの対称型が組み込み用途に向いているとは考えていません。

図 1 対称型の構成例(デュアルコア)

 

非対称型(機能分散型)

ソフトウェアの実行時点で負荷に応じてCPUを割り当てる対称型に対して、システム設計段階でそれぞれのCPUの処理内容をあらかじめ決めるのが非対称型です。図 2に示すように各CPUがメモリや制御対象のI/Oを個別に持ち、CPU間のデータのやり取りは共有メモリやシリアル/パラレル通信等で行う粗結合です。アプリケーションによっては共有I/Oを持つ場合もあります。またCPU毎に機能割り付けを行うので、機能毎に最適なCPUや動作速度を選択できるというのが最大の特徴です。携帯電話やカーナビ等では通信、画像/音声処理、ファイル処理等々非常に多くの機能が盛り込まれており、1つのCPU(対称型も含む)で集中処理する事は様々な観点から現実的ではありません。組み込み機器にはこの非対称型が向いているのです。

図 2 非対称型の構成例

 

ソフトコアCPUはユーザが自由に構成できるので対称型/非対称型いずれでも構成が可能ですが、対称型では既存のCPUにコストパフォーマンスで太刀打ちできませんし、ベンダーもターゲットとはしていないと思います。そこで非対称型について話を進めて行きますが、一般的な構成は図 2で示しましたので、少し突っ込んだ活用事例を解説します。尚解説の都合上、以降では非対称型ではなく機能分散型の表現を使用します。