ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ASIC開発におけるFPGAプロトタイピングのメリット

ASICとは

OpenSPARC Internalsに面白い資料があったので紹介します。ここまで具体的な商品名と数値が出ている資料は非常に貴重です。

Sparcの様な機能がいっぱい詰まった半導体はASICと呼ばれます。一つの半導体の中にCPU、メモリ、バス、周辺I/Oと昔のパソコン並の機能が一通り入っているのでSOC(System-on-a-chip)とも呼ばれます。詳しい説明はwikipedia http://ja.wikipedia.org/wiki/ASIChttp://ja.wikipedia.org/wiki/System-on-a-chipを読んでください。

wikipediaにも書いてあるとおり、ASICの短所として「開発期間が長い」「Bugの修正が困難」等があります。実際の半導体が製造されるまでは、実物が無いので(広義の)シミュレータを使ってデバッグを行います。RTLと呼ばれるソースコードから実際の動きをシミュレーションするわけです。シミュレータと別にアクセラレータやエミュレータという物もあるのですが、専用のハードウェアを使って高速化したシミュレータという位置づけになります。ややこしいので、今はASICの開発に使うシミュレータをRTLシミュレータと呼びます。VeritakやModelsimもRTLシミュレータに入ります。

RTLシミュレータの欠点

RTLシミュレータの欠点は遅いことです。OpenSPARC Internals p107からの引用になりますが、RTLシミュレータでOpenSparcをシミュレーションすると、Solarisがブートするまでシミュレーション環境で15年以上かかってしまいます。これでは、20年経たないとOSのコンテキストスイッチが正しく動くかどうかが確認出来ません。

この図で右に行くほど速度が速くなります。右から2番目のPalladiumになると15年を5時間まで短縮できます。ものすごく速いのですが、それに合わせて価格もとんでもない価格になります。

ちなみにPalladium IIで8232万円(1年間当たりのライセンス料)との事です。
http://techon.nikkeibp.co.jp/members/NEWS/20041029/106229/

こちらの記事も参考になります。
http://www.ednjapan.com/content/issue/2006/06/content06.html

FPGAプロトタイピング

そこで救世主のようにあらわれた(誇張有り)のが右端のFPGAプロトタイピングです。速度はエミュレータの10倍、価格はエミュレータの1/10という素晴らしい性能を持っています。デバッグの機能は図の5つの中でもっとも貧弱で制限が最も多いのですが、速度に関しては圧倒的な力を持っています。エミュレータを使うと限られたりソースを複数のプロジェクトでシェアしながら使うことになるのですが、FPGAプロトであれば一人一台とは行かなくても1チームに一台くらいはまわります。この規模のASICになると、CPU設計しているところとOS設計しているところは全く別組織だったりするので、チームに1台でも好きにやりくりできる環境があると開発速度が加速します。電源ボタン一発で立ち上がるFPGAプロトは、ソフトウェア開発をしている人たちにはうれしい開発環境になります。

FPGAへのマッピング

残念なことにFPGAでASICのソースコードを動かすには、そのままでは動きません。何ヶ所かソースを変更をする必要があります。この作業を僕達の業界では「FPGAへのマッピング」という表現を使います。最近はますます厳しくなるNDAのために、この作業が門外不出の技術となっています。ASICのソースコードというのは日本のASIC開発の心臓にあたる部分で、これを他社に持って行かれると全く同じものが簡単に作れてしまいます。そのためマッピングの作業を行うときは、会社間だけでなく個人でもかなり厳しいNDAを結ぶのが一般的です。実際FPGAへのマッピングに関して検索で見つかるような日本語の情報はほとんどありません。

OpenSparcの公開

OpenSparcが公開されたのはずいぶん前ですが、せっかく公開された(しかもGPLで)ので、なんとかFPGAプロトの情報共有の題材にできないだろうかと思っています。パタヘネで、ALU、キャッシュ、パイプラインの話が出てきても、じゃあ実際にどうなっているのという疑問に答えるにはOpenSparcは最適だと思います。