FR-V
1998年に富士通研究所の開発した最初の組み込み向けメディア処理プロセッサである「mGEN」を発表し、1999年に3次元グラフィクス処理用プロセッサの「Procyon」を発表した。高橋はその経験をもとに、FR-Vプロセッサの開発を行った。
1999年7月、FR-Vプロセッサが発表された。高性能な「FR500」と、超低消費電力の「FR300」の2シリーズがリリースされ、同年末よりサンプル出荷を開始した。2000年以降に急激な市場拡大が予測されるデジタル民生機器や次世代携帯電話市場など、来るべきマルチメディアプロセッサ市場を狙った製品であった。
シリーズ最初の製品であるFR500は、CPUコア部で1.5 W、チップ全体で2.0 Wと低消費電力ながら、画像処理において、富士通の既存の高性能マイコンであるSPARCliteはおろか、同一クロックのPentium IIと比べても圧倒的な性能が得られた。4並列VLIWアーキテクチャを採用し、なおかつコンパイラの性能も十分高いことで、目標どおりの性能を得た。
1999年当時、富士通の32ビットマイコンは、組込機器などのローエンド向けのFRシリーズと、デジカメなどのハイエンド向けのSPARCliteシリーズを展開していたが、FR-Vシリーズはローコスト版の下方展開・高性能版の上方展開によって、両者の機能と性能を包含する方針であった。FR-Vの成功に伴い、SPARCliteはFR-Vシリーズに置き換えられてその役目を終えた。
32または64個のGR(汎用レジスタ)と32個または64個のFR(浮動小数点レジスタ)
FR400/FR450 32ビット×32本の汎用レジスタ(GR) 32ビット×32本のメディア処理用レジスタ(FR)
FR500/FR550 32ビット×64本の汎用レジスタ(GR) 32ビット×64本のメディア、浮動小数点共用レジスタ(FR) ノンエクセプティングレジスタ プレディケイトレジスタ
富士通は数値風洞のソフトウェア開発により、スパコン並列計算のノーベル賞ともいわれるゴードン・ベル賞の栄誉に3年連続で輝くなど、VLIWコンパイラ技術にも実績があった。FR-Vシリーズの開発環境である『Softune V5』(富士通、1999年発売)には、富士通謹製の高性能VLIWコンパイラが組み込まれた。
「VLIWは汎用マイコンには向かない、特定用途向け」というのが1999年当時の一般的な考えだったが、FR-Vシリーズは、LinuxおよびμITRONに対応可能という汎用プロセッサの特徴と、高性能メディア処理が可能という専用プロセッサの特徴を併せ持っていた。
しかし、VLIW方式は「命令レベルの並列性」に限界があり、実行ユニットを多く搭載するほどコアの稼働率が下がり、性能向上が困難になる、という弱点があった。FR-Vは8並列が限界であった。(ちなみに、AMDのGPUは2007年の「R600」(Radeon HD 2000シリーズ)の5並列で限界を見ているので、8並列まで可能だった富士通のVLIWコンパイラ技術はむしろ高い方である。並列計算がうまく回った時のピーク性能をいくらアピールしても、実効性能が低くなって、競合に負けてしまう。しかも、グラフィックプロセッサ専門で行くならともかく、プロセッサを汎用計算にも使うことを考えた場合、将来がない。プロセッサの命令ユニットがシンプルになる一方でコンパイラが複雑になるのでプログラマーも大変つらい。
FR-Vシリーズは上記のように、2005年まで順調に多展開を行ってきたが、VLIWプロセッサには「命令レベルの並列性」に限界がある、という弱点があった。FR-Vは組み込み向け省電力プロセッサなので、パソコン向けみたいに動作周波数を上げることができないというのもあり、高性能化が難しかった。2005年当時、動作周波数に拠らずにプロセッサの性能を向上させる方法として、1つのプロセッサで同時に複数の処理を行う「マルチスレッド」方式と、1つのチップに複数のコアを搭載する「マルチプロセッサ」方式が提案されていたが、VLIWアーキテクチャはアウト・オブ・オーダー実行部を持たないため、マルチスレッドによる性能向上を図れず、富士通は必然的に「マルチプロセッサ」方式による性能向上を選択。(なお、当時同じくVLIWのデメリットに苦心していたIntel社のItaniumは、2006年リリースのItanium 2 9000シリーズで「粗粒度マルチスレッディング」という形でマルチスレッドを導入したが、SMT方式によるマルチスレッドに対応したx86アーキテクチャに大きく性能が劣った)
最大2命令同時命令発行
32個のGR、32個のFR
整数パイプライン×2
メディアパイプライン×2 MB93401 MB93403 180nm, 266MHz MB93405 130nm, 400MHz