ASIP(application specific instruction-set processor)は,特定の応用分野に適したアーキテクチャや命令セットを持つプロセサをいう。これに対して,複数の応用分野で使える汎用性の高いプロセサをGPP(general purpose processor)と呼ぶ。GPPの代表例には,パソコン(PC)やサーバーのCPU(central processing unit)として使われているマイクロプロセサが挙げられる。

 これまで,GPPでは処理能力が足りなかったり,消費電力が大きかったりした場合には,ASIC(application specific integrated circuit)を開発することが多かった。しかしASICでは,仕様変更が発生するなどして修正が必要になると,ハードウェア的にカスタマイズしているために,もう一度開発し直す必要がある。これには時間と費用がかかる。特に最近は,半導体プロセスの微細化でマスク価格が高騰し,作り直しの費用が大きな問題になっている。

 GPPとASICの間を埋める手段(チップ)として注目を集めているのが,ASIPである(図1)。特定の応用分野に向けてASIPのアーキテクチャや命令セットをチューニングすることで,ASIC並みの高性能と低消費電力,さらにGPPと同じプログラマビリティ(柔軟性,拡張性)の実現を図る。ASIPが狙う応用分野には,デジタル信号処理や通信処理,グラフィックス処理,サーボ・モーター制御などがある。

図1 ASIC,ASIP,GPPの位置づけ
出典は大阪大学。

1990年代にASIP設計用の市販ツールが登場

 ASICとGPPの特徴を兼ね備えたASIPを効率よく開発するためには,次のような技術課題を解決する必要がある。

(a)応用プログラムを解析し,プロセサのアーキテクチャを最適化する。
(b)プロセサのハードウェア開発工数を削減し,開発期間を短縮する。
(c)開発するプロセッサに向けた,コンパイラやデバガなどの応用ソフトウェア開発環境の開発工数を削減し,全体の開発期間を短縮する。

 こうした課題を解決することを狙い,ASIPの設計手法に関する研究が,1980年代後半から続けられてきた。1990年代には商用ツールも販売されるようになった(図2)。

図2 市販ASIP設計ツールの例
出典は大阪大学。

 現在実用化されている,ASIPの設計手法は主に二つある。固定プロセサ方式と可変プロセサ方式である。

(1)固定プロセサ方式:
ベースになるプロセサは固定し,命令やレジスタの追加によって,プロセサをカスタマイズする。この方式には,汎用プロセサの既存IPコアのHDL(ハードウェア記述言語)コードをユーザーが修正することによって,プロセサをカスタマイズする方式も含まれる。

(2)可変プロセサ方式:
ベースになるプロセッサを固定せずに,プロセサのアーキテクチャ記述からプロセサのHDLコードを生成すると共に,コンパイラなどの応用ソフトウェア開発環境を自動生成する方式である。

 これらの方法にはそれぞれに利点と限界がある。以下の二つの視点で比較する。

(i)生成されるプロセサの自由度:
可変プロセサ方式の方が,生成できるプロセサの自由度が高い。すなわち,可変プロセサ方式では,複雑な命令の実装や専用レジスタの追加,パイプライン段数の調整,といったアーキテクチャのチューニングを行いやすい。一方,固定プロセサ方式では,アーキテクチャの自由度が低いので,応用分野に適したチューニングが十分に行えない可能性がある。

(ii)ソフトウェア開発環境の生成:
ソフトウェア開発環境を自動生成する容易さの点では,固定プロセサ方式の方が優位である。可変プロセサ方式では,コンパイラのチューニング,特に命令スケジューリングが技術課題である。

専用の記述言語を使う

 固定プロセサ方式と可変プロセサ方式のいずれの方式を採用しても,プロセサのアーキテクチャ全体または修正部分を記述する必要がある。プロセサのアーキテクチャを記述するための言語としては,アーキテクチャ記述言語(ADL:architecture description language)と呼ばれる専用の言語を用いる場合が多い。

 既存のHDLをアーキテクチャ記述言語として流用する方法もある。ただし,設計記述の抽象度が低くなり記述量が増えてしまったり,コンパイラ生成に必要な情報をHDL記述から効率よく取得できなかったり,という問題が起こることが多い。

参考文献
Prabhat Mishra, Nikil Dutt編著,Processor Description Languages,Elsevier,2008.