大原雄介の半導体業界こぼれ話

RISC-Vの性能や採用はどこまで進んだのか

【図01】HiFive Unmatched。Mini-ITXサイズでお値段は665ドルだが、速攻で売り切れた

 今月は師走ということもあり(←なんの理由にもなっていない)、ちょっとRISC-Vの動向をいくつかご紹介したいと思う。

駆逐された命令アーキテクチャたち

 ここ10年ぐらいでいうと、汎用の高性能プロセッサというマーケットに新アーキテクチャを投入しているベンダーはIntel/AMDのx86、Arm、それとIBM(POWER及びZ系列)ぐらいしかない状況だった。これは主にISA(命令セット)の制約によるものである。

 誰でもプロセッサを作ることはできるが、新しいISAを作ったからといって、誰もがそれを使ってくれるわけではない。使ってくれるためには、それをサポートするコンパイラやOSに加え、それをサポートするミドルウェアやツールセット、アプリケーションまでに至る、猛烈な手間とコストのかかるソフトウェア投資が必要になる。

 しかもこうした投資は、継続的に行なわれなければ使ってもらえない。古くは68K、その後MIPSとかSPARC、PA-RISC/Alpha、その他……と多数のアーキテクチャは世の中に存在して、一時期はかなりの量のソフトウェア資産が存在したはずだが、現在ほとんど使われていないというのは、要するに継続的なソフトウェア投資に引き合う結果が得られない、と判断されてしまったためである。

 MIPSは、PIC32を採用していたMicrochipがすでにArmベースのPIC32に製品ラインナップを移しつつあり、MIPS Technology本体がすでにMIPS命令セットを放棄してRISC-Vに注力している状況では、もう死んだと判断しても差し支えないと思うし、そのMicrochipに買収された旧AtmelのAVRにしても、AVR8を広く利用していたArduinoが最近はArmベースにどんどんシフトしている状況では、そろそろピークを過ぎたと判断すべきかもしれない。

 ところで上のリストのうち、Armだけはちょっと様相が異なる。旧MIPS Technologyの場合、32bitコアはMIPS自身がMIPS 4K/24K/34K/74Kや、それのマルチコア版などを多数用意していたが、64bitコアに関しては一応5Kというコアは出したものの、ほとんどのメーカーはアーキテクチャライセンスを取得して自分でインプリメントを行なっていた。

 Broadcom、Cavium Network、Ingenic Semiconductor、NEC、NetLogic、PMC Sierra、RMI、SiByteといったあたりが主なメーカーで、成功したかどうかはともかくとして、バラエティには富んでいた。Armも当初はこれに近い様相を呈していた。

 特にサーバー向けに関して言えば、Applied Micro(旧AMCC)、AMD、Broadcom、Cavium Networks、Qualcommの各社がアーキテクチャライセンスを取得し、それぞれ自身のインプリメントでサーバ向けプロセッサを作っていたはずなのが、気が付いたらすべてNeoverseに駆逐されることになってしまった。

 モバイル向けも、QualcommとSamsungがやはり独自コアを開発していたが、どちらもCortex-Xシリーズで駆逐されてしまっており、現在独自コアを開発しているのはAppleのみとなっている。Qualcommがこれに対抗すべく、子会社化したNuviaのコアを再び採用しようとしたところ、Armと訴訟になってしまったという始末。

 現状、Appleを除くとArmのエコシステムの中で独自のインプリメントを行なったコアの数は非常に少ない。この話は以前も紹介したので繰り返さないが、既存の汎用プロセッサのエコシステムを利用する限り、自身で何か新しいアーキテクチャの実装を行える余地は(冒頭に出てきた4社+Apple以外)ほぼないことになる。

 最近AIプロセッサに傾倒するベンチャーが多いのは、もちろんそこにビジネスチャンスがあるからではあるが、ISAの互換性を考える必要がない(端的に言えばTensorFlowを動かせれば、内部は何でもいい)というあたりも無視できない要因であると思う。

SiFive P670とAndes AX60

 こうした状況において、冒頭の4+1社以外のプロセッサベンダーにとっての希望の星なのがRISC-Vである。何しろISAのライセンスフィーもロイヤリティも掛からないし、独自命令も好き放題に拡張できる。それでいてソフトウェアエコシステムが立ち上がり始めており、拡張部分のサポートとか最適化に向けたプロファイラ類の提供などは必要にしても、ソフトウェアエコシステムを一から立ち上げるような手間は必要ない。それは多くのベンダーが加盟するのも当然であろう。

 当初こそ、それこそ小規模なMCUとかASICの内部コントローラといった用途向けに集中したRISC-Vだが、ここに来て自動車向けのMCUとかApplication MPUに向けた製品もぼちぼち出始めた。

 SiFive CTOのYunsup Lee博士がRISC-V based PCとして同社のHiFive Unmatched(冒頭の図01)SBCを発表したのは2020年9月のことだが、これに搭載されているU740 SoCには4つのU74コアが搭載されている。

 U74は2命令の8-stage SuperScalarコアで、性能は5.75 CoreMark/MHz。これがどの程度の性能か? というと、例えばIntelのAtom 330が5.69 CoreMark/MHz、もうちょい新しいAtom N2800が6.61 CoreMark/MHzというあたりでお察しである。一応Debian Desktopが動き、この当時で95%のDebian PackageがRISC-Vに移植済という話であったが、これを普段使えるPCにできるか? というと、筆者だったら性能的に無理である。

 もっとも、これはSiFive自身も分かっており、HiFive Unmatchedのページにも、「まもなくIntel 4で製造されるHorse Creek SoCとこれを搭載したプラットフォームが出てくるから、そっちを待て」と書いてあるほど。

 Horse Creekは4つのP550コアを採用。3命令のアウト・オブ・オーダー構成で、13段のパイプラインを持つ。なぜかP550ではCoreMarkのスコアが公開されていないが、代わりに8.6 SpecINT2K6/GHz/コアというスコアが公開されている。

 これがどの程度か? というと、例えばSandy BridgeベースのCore i7-2600だとSPECint2006_rateの性能が10.6 SpecINT2K6/GHz/コアだから、Sandy Bridgeにはやや及ばない程度。Atom 330に比べるとずっと高速であるが、まだ十分とは言いがたい。

 ということで話はP670である。内部は8命令同時解釈、10命令同時発行のSuperscalarに進化(図02)。想定性能は12 SPECint2K6/GHz/Core以上だそうで、これはSkylake(Core i7-6700Kで15.6 SpecINT2K6/GHz/Core)にはちょっと及ばないが、Haswellは上回る程度。Atom 330から比べるとずいぶん高速化が進んだと言わざるを得ない。

【図02】ただしROBは4-wideなので、実際には整数+Load/Storeで合計4命令/cycle程度がピーク性能になりそう

 これはSiFiveだけではない。台湾Andes Technologyもほぼ同じタイミングで、AX65コアを発表した。ちなみにAX65はハイエンドではなく、ミッドレンジコアという位置づけになっている(図03)。位置づけ的にはCortex-A72~76やNeoverse X1/Neoverse V1をターゲットとしているあたりは、P670にほぼ近いところ。13段パイプラインを持ち、4命令のアウト・オブ・オーダーというあたりも、P670より若干小さい程度。

【図03】要するにメインストリーム向けである。ただExtendedでどう拡張されるのか、はまだ発表されていない

 性能に関する数字は公開されていないが、TAGEベースの分岐予測とか128エントリのROB、2レベルのTLB、最大64のロード/ストア命令の発行が可能など、もう完全にSkylake世代のスペックになっている(図04/図05)。

【図04】P670はALU×4(うちBR×1)、LDSR×2、FPU×2の8命令同時発行なのに対し、こちらはALU×3+BRとなっているのが相違点といえば相違点だが、大きく性能差があるとも思えない
【図05】もっとも同社の場合、ハイエンドは単にこのコアをマルチ化するだけなので、ここに出てくる数字そのものはハイエンドでも変わらないと思うが

 SiFiveも最初は小規模なコアしか提供していなかったし、Andes TechnologyはRISC-Vを全面採用するまでは独自の小規模なコアを主にMCUに提供しているだけで、こんなメインストリーム向けのアプリケーションプロセッサ用コアを提供はしていなかった。それがRISC-Vを採用し始めて5年かそこらでここまで性能の高いコアを提供できるようになった(というか、そうした性能の高いコアを受け入れられるマーケットができた)というのは、やはりRISC-Vエコシステムのおかげというべきだと思う。

 もちろんまだピーク性能でいえばP670にしてもAX65にしてもZen 4とかRaptor Coveの敵ではないのだが、2年かそこらでAtom 330からSandy Bridgeまで性能が上がり、その1年後にSkyLakeに近いところまで性能が上がるというこの進化の速度は、ほかのアーキテクチャにはないRISC-V特有のもの、としてもよいと思う。もちろんもう数年すると頭打ちになってゆき、そこからはIntelやAMDと同じようなペースまで鈍化するかもしれないが。

XMOS Gen4 xCORE

 このRISC-Vへの傾倒は、ほかの会社にも当然波及している。Imagination Technologiesは当初からGPU内部のコントローラにRISC-Vを採用するとしていたが、それが高じて(?)CatapultというCPUファミリを2021年12月に発表、今年6月にはリアルタイム制御向けのRTXM-2200を発表し、ついにこの12月にはRISC-V InternationalのPremier Memberに昇格するなど、もうCPU IPをビジネスの柱の1本に据えることを明確にしている。元は子会社だったMIPS Technologyもやはり独自にRISC-Vコアの提供を開始しており、奇しくも再びRISC-Vのマーケットで並んでいる格好だ。

 そうかと思えば、今年11月にAllwinner TechnologyはV85xシリーズのプロセッサファミリーがPSA Certified Level 1を取得したことを発表したが、このV85xシリーズ製品は22nmプロセスで、Cortex-A7にRISC-V MCUの組み合わせという割と 気が狂った 常軌を逸した構成で、なんというかRISC-Vの普及は本物なんだなと思わせるものがあった。

 なので大抵のことには驚かない自信はあったのだが、12月12日の英XMOSの発表はちょっとびっくりした。といってもそもそもXMOSを知らない読者も少なくないので、少し昔話をしたいと思う。XMOSは2005年に英ブリストルで創業されたファブレス企業で、創業メンバーはブリストル大と(その後PLX Technologyに買収された)Oxford Semiconductorなどからなる会社だが、創業者兼CTO(現在は取締役会のアドバイザーに退いた)のDavid May教授が実はキーパーソンである。

 XMOS設立前はブリストル大学のコンピュータサイエンス部門のトップ(現在はトップからは降りて、単に教授職)だった方だが、その前はSTMicroelectronics、その前はInmosにおり、実はTransputerのチーフアーキテクトであった。

 多分このTransputer、筆者と同年代(50台後半)の方なら耳にされたことがあるかと思う。Transputerシリーズは「T400」シリーズが大ヒットしたものの、後継の「T800」の遅延とその後継の「T9000」シリーズの開発失敗で商業的に行き詰まり、最終的にSTMicroelectronicsに会社ごと買収され消えてしまった。結果、INMOSの開発チームは一旦バラバラになったものの、そのうちの何人か(その1人がDavid May教授)が再び集まって作ったのがXMOSというわけだ。

 さてそのXMOSが2008年に発表したのがxCOREというMCUである。図06がそのxCOREの概念である。これは2タイルの構成のものだが、1タイルあたりlogical coreが8つ入っているという強烈なMCUである。

【図06】XS1のArchitecture Manualより抜粋。xTIMEは単にタイマーだけでなく、logical coreの制御も担っている形だ

 ただここで“logical core”というのは物理的なコアではない。実はこれ、全部仮想コアである。xCOREは第1世代では500MHz駆動になっているが、各々のlogical coreは62.5MHz動作である。要するに1つの物理コアを時分割する形で、見かけ上8つのコアが62.5MHz動作する格好になる。

 SMTともちょっと異なっており、概念的にはReconfigurable Processorが一番近い。何でこんな仕組みを取るか? というのは、昔のMCUをベアメタルで使った経験のある方なら分かりやすいかと思う。MCUといっても、単純に処理をループさせて回せばOKというケースは少ない。通信を含むI/Oの操作が非同期で入るのは当たり前だし、そのI/Oに合わせて別々の処理が行なわれることも珍しくない。ところがベアメタルだとこの非同期の処理は全部ISR(Interrupt Service Routine)や、そこからのCallbackで処理する必要がある。厄介なのは、全部の処理をISRに突っ込んでしまうと、次の割り込みが来た時に間に合わなかったりすることで、なので自分でInterrupt Dispatcherを作る羽目になりかねない。

 ところがxCOREの場合は、例えばlogical core #1をシリアルの送信、#2を受信、#3をDMA制御……なんて具合に、処理別にlogical coreを振り分けることができるから、プログラムが簡単になるし、結果的に割り込みの処理の遅延も下げられる。logical coreの数はタイルあたり最大8つだが、もし処理の数が少なければ4つとか2つに減らすことも可能で、そうなるとそれだけlogical coreあたりの動作周波数=処理性能も上がることになる。トリッキーではあるが、意外に良くできたアーキテクチャなわけだ。

 まぁもっとも良くできたアーキテクチャなら市場で成功するか? というとそれはまた別の話。初代のXS1アーキテクチャに続き、2015年には内部の命令パイプラインを限定的ながらデュアルイシューにしたXS2アーキテクチャが登場する。このXS2は、元々XS1ベースに音声処理機能を追加したxCORE-VOICEというプロセッサの特徴を引き継ぐ形で音声処理機能が強化され、これがAmazon Alexaを始めとするスマートスピーカーの音声フロントエンドに広く採用されることになる。

 具体的に言えば、複数のマイクを組み合わせてフェーズドアレイ化して、「どの方向からの音声か」を判断する機能を乗せるのに、XS2ベースのxCOREはかなり都合が良く、それもあってこうしたマーケットで広く利用されるようになった。

 2020年にはDSPエンジンを搭載、32bit浮動小数点のハンドリングや256bit幅のベクタ命令などを追加してAI処理機能を拡充したXS3アーキテクチャが投入。INT8で51GOPS、INT1で408GOPSという、Edge AIというかEndpoint AI向けの強化がなされた格好だ。

 さて、ここまでの3世代はいずれもXMOSの独自命令セットに基づくプロセッサのみが提供されてきていた。実は初代のXS1の世代でArmコアを乗せる計画はあった。といってもアーキテクチャをArmベースにするわけではなく、xCOREのタイルとは別にCortex-M3コアを1個乗せ、このCortex-M3コアとの通信用にlogical coreを1個張り付けるというヘテロ構成のマルチコア製品を目指したものだったが、これ計画はあったものの最終的に製品化は流れたらしい(いつだったかのArm TechConで説明を聞いたのだが、その後製品化されたというニュースは出なかった)。

 理屈から言えば別に他の命令セットを利用してxCOREを実装することそのものは不可能ではないと思うのだが、Armのアーキテクチャライセンスを大金払って入手するメリットも薄いし、カスタム命令を追加できないからxCORE特有の構造への対応が難しい(内部レジスタの操作などでカバーするしかない)。既に3世代、独自命令セットで顧客も納得して使っているのだから、いまさら別の命令セットに移るメリットも少ないと筆者は思っていただけに、第4世代xCOREがRISC-V命令をサポートする、というのは正直かなりの衝撃だった。

 現時点ではまだ具体的なインプリメント方法とか性能など細かい部分は未公開であるが、ホワイトペーパーを見る限り(Cortex-M3のケースとは異なり)内部のlogical coreがRISC-V化されているようだ(図07)。

【図07】logical coreをRISC-V threadという呼び方に変えているが、仕組みは基本的に同じであることが分かる

 独自路線を取っていたMCUベンダーが続々乗り換えている、というのはそれこそ上に出てきたAndes Technologyとか仏CortusとかIntel(旧AlteraのFPGA上で動作するNIOS-IIというSoft CPUコアが、RISC-VベースのNIOS-Vに置き換わった)など数多くあるが、独自命令セットでそれなりにシェアを取っていたはずのXMOSまでがRISC-Vに移行する、というのは、筆者にはなかなか衝撃的であった。