RISC−Vとは UCバークレー発「オープンソースの命令セット」

RISC-Vは、研究者が始めた「オープンソース」のISAです。ARMやMIPS、x86などに比べて、RISC-Vはオープンな規格であり、誰でも自由に実装できます。これはNPOの「RISC-V Foundation」によって管理され、Google、Qualcomm、その他様々な企業がメンバーとして参加している。

RISC−Vとは  UCバークレー発「オープンソースの命令セット」

RISC-Vは、研究者が始めた「オープンソース」のISAです。ARMやMIPS、x86などに比べて、RISC-Vはオープンな規格であり、誰でも自由に実装できるということを意味します。それ以上に、ややオープンな開発モデルを持っています。これはRISC-Vの進化を管理するために設立された非営利団体「RISC-V Foundation」によって管理されており、Google、Qualcomm、Microsemi、Nvidia、NXP、その他様々な企業がメンバーとして参加しています。

RISC-Vのもう一つの側面は、他のプロプライエタリな命令セットとは異なり、カスタム拡張を可能にし、実際に奨励している点にあります。ARMプロセッサを構築するためにライセンスを購入した場合、BroadcomやQualcomm、Samsungのような企業が持っているようなアーキテクチャライセンスを取得しても、ARM命令セットの独自の実装を行うことができますが、独自のカスタム命令を追加することはできません。これは最終的にはARMが顧客からのフィードバックを得て、将来のISAのリビジョンで新しい命令を追加することになりますが、個々のライセンシーが追加できるものではありません。

もちろん、オフコア用の密結合アクセラレータのためにアクセラレータを取得する方法は他にもありますが、命令セット自体をカスタムで拡張することは制限されています。前述したように、RISC-Vにはオープンな開発プロセスがあります。RISC-Vファンデーションのメンバーでないと開発の議論に参加できないところもあります。これは比較的低コストで、企業の場合は最低でも年間5,000ドル程度、アクティブなオープンソース開発者の場合は無料、それ以外の場合は個人で100ドル程度で参加できます。

RISC-Vの命令セットアーキテクチャ自体については、実際のところ、あまり目新しいものではありません。特に奇抜で面白い設計決定をしているわけではありません。64ビットと32ビットのISA、RISC ISAは何十年も前から存在しており、それらをどのように構築するかについては膨大な知識があります。

RISC-Vの主な目的はスケーラビリティです。RISC-Vは、高性能コンピューティングやラックスケールコンピューティング、MMUを持たない組み込みデバイス、個々のマイクロコントローラよりも小さいユースケースに至るまでスケールアップできるISAを目指しています。これは実際には現実的な問題であり、当初AMDのような企業がRISC-Vに惹かれていました。初期の RISC-V開発者会議で、AMDの誰かが手を挙げて、彼らが興味を持った理由は、AMDのプロセッサを出荷するときに、最近のプロセッサには15の異なるISAが搭載されていたからだと言ったと言われます。

RISC-Vの現状

RISC-Vは、公開から約4年が経過しました。RISC-Vは、2010年にカリフォルニア大学バークレー校のPar Labプロジェクトとして開始されました。これは、シンプルで効率的で拡張可能で、他のユーザーとの共有に制約のないISAを開発することをその目的としていました。そのため、Krste Asanovic(SiFiveの創設者)、Andrew Waterman、Yunsup Lee、およびDavid PattersonがRISC-Vを開発しました。彼らは2011年に最初のチップを製造し、仕様をオープンソースとして公開、商業製品にも利用しやすいBSDライセンス(オープンソースソフトウェアに適用されるライセンス体系の一種で、カリフォルニア大学バークリー校で生まれたBSD系UNIXのライセンスのために成立した方式)のもとで誰でも自由に使えるようにしました。試行錯誤の末、GitHubで公開されています。

David Patterson. Photo by Berkeley Engineering / Youtube

RISC-Vのオリジナル開発者はその後VCをバックにしたスタートアップSiFiveを輩出し、RISC-Vのエコシステムで多くの仕事をしてきたが、それ以外にもコアを生産したり、その周りのツールを生産したりしているベンダーが多数存在しています。

コンパイラ側では、GCCのサポートがアップストリームになっています。前述したように、私は主にClangをサポートするLLVMのためのRISC-Vバックエンドの作業を推進しています。サポートが必要なRISC-Vの大部分のバリアントについては、そのサポートがアップストリームにあり、活発な開発が行われています。Glibcはアップストリームで、Muslはダウンストリームのポートを持っていて、すぐにアップストリームになることを期待しています。また、Goのサポートもありますが、しばらくの間停滞していましたが、今では少しずつ回復してきていると思います。

RISC-Vコアの実際のVerilog実装を修正できるのは素晴らしいことですが、より高いレベルのソフトウェア表現を修正することで、より生産性の高い開発を始めることができます。Qemu、gem5、そしてRISC-Vリファレンスソフトウェアモデルの事実上のリファレンス実装となっているのは、UC Berkeley由来のspikeです。また、QEMUやFFMPEGで有名なFabrice Bellardによって書かれたTinyEMUもあります。

利用可能なハードウェアの面では、SiFiveはLinux K4側の開発ボードを製造しています。マイコンクラスの開発ボードもありますし、中国メーカーのKendryteボードもあります。最近では、NXP がオープンな ISA の取り組みを開始し、PULPマイクロコントローラを搭載した開発ボードを提供しています。

オープンソースの実装としては、UC バークレーと SiFiveがサポートしているRocketとチューリッヒ工科大学の PULP があります。これは今では様々な呼び方が含まれていますが、マイクロコントローラ側ではもちろんのこと、Linuxが可能な側でも、Arianeと呼ばれるデザインがあります。

オペレーティングシステム側では、少なくとも FreeRTOS、Zephyr、seL4、興味深いことに、Tock の初期の作業がいくつかサポートされています。TockはRustを使って実装された興味深いRTOSで、Rust RISC-V LLVMツールチェーンをベースにRISC-Vをターゲットにした初期の作業が行われています。Rustのメモリの安全性をうまく利用し、RTOSにアプリケーションをロードするモデルを持っていますが、通常は1つのバイナリにコンパイルされ、コンパイル時に修正されます。

LinuxとFreeBSDのサポートはアップストリームで、よく開発されています。また、より実験的な面では、プラン9を現代的に再構築したHarveyOSや、HelenOSの移植版もあります。先日、FOSDEMでHelenOSの作業についての話がありました。一連のブートローダーが用意されています。bblとOpenSBI については、RISC-Vコミュニティの興味深い話題に触れているので、もう少し後ほどお話したいと思います。また、特にDebianとFedoraでは活発な活動が続いています。

両方のディストリビューションのLinuxベースのシステムの大部分がコンパイルされ、動作しています。librsvg のようなライブラリは Rust で書き換えられており、Rust は現代の Linux システムをコンパイルする上でかなり重要な依存関係になっているので、私はある意味 LLVM 側のブロッカーです。どちらの場合も、librsvgがRustに移植される前の古いバージョンのlibrsvgを使っていて、LinuxバイナリのアップストリームのLLVMサポートを待っている間だ。

RISC-Vの良い点

RISC-Vの良い点の一つは、x86コアやARMコアを変更した場合にどのように見えるかを推定してシミュレーションを行うのではなく、高品質でオープンソースのRISC-Vの実装を変更することで、より良い評価や既存の研究との比較を行うことができるという点です。

UC BerkeleyからスピンアウトしたSiFiveはこの分野で膨大な量の仕事をしてきました。彼らの目標は、最終的には新しいシリコンの開発コストを削減することで、新しい設計のスタートアップのコストを削減することです。

その一例として、RISC-Vにダイレクトセグメントのサポートを追加したことがあります。これはページベースの仮想メモリの最適化と呼ばれることがあります。この最適化はページベースの仮想メモリを使わず、プロセスの仮想アドレス空間の一部を直接連続する物理メモリにマッピングすることでTLBを回避するというものです。これについては、2013年のISCAで発表された論文があります。この論文では、大きなページや巨大なページがあっても、なぜそれが面白いのかについて、より詳細に説明されています。要するに、整列とサイズの面ではるかに多くの柔軟性を得ることができるということです。

最終的には、ハードウェア記述言語Chiselで実装されたRISC-Vのデザインに50行の修正を加え、Linuxカーネルに400行の修正を加えたもので、比較的管理しやすい作業でした。Rocketは先ほどお話したRISC-Vデザインの1つで、UC Berkeleyでスタートし、現在はSiFiveがサポートしていますが、ハードウェア記述言語Chiselで実装されています。これは、より新しくて斬新なハードウェア記述言語の一種で、Scalaの組み込みドメイン固有の言語として実装されています。

ソフトウェア開発者がより利用しやすくなることが期待されています。その目的のどこに成功しているのか、他の斬新なHDLが成功しているのかは人によって見解が分かれるところです。正直に言うと、lowRISCでは少し手を引いて、システムVerilogのような伝統的なハードウェア記述言語に力を入れています。

Become a Patron!

Image by RISC-V foundation via Youtube

Read more

OpenAI、法人向け拡大を企図 日本支社開設を発表

OpenAI、法人向け拡大を企図 日本支社開設を発表

OpenAIは東京オフィスで、日本での採用、法人セールス、カスタマーサポートなどを順次開始する予定。日本企業向けに最適化されたGPT-4カスタムモデルの提供を見込む。日本での拠点設立は、政官の積極的な姿勢や法体系が寄与した可能性がある。OpenAIは法人顧客の獲得に注力しており、世界各地で大手企業向けにイベントを開催するなど営業活動を強化。

By 吉田拓史
アドビ、日本語バリアブルフォント「百千鳥」発表  往年のタイポグラフィー技法をデジタルで再現

アドビ、日本語バリアブルフォント「百千鳥」発表 往年のタイポグラフィー技法をデジタルで再現

アドビは4月10日、日本語のバリアブルフォント「百千鳥」を発表した。レトロ調の手書き風フォントで、太さ(ウェイト)の軸に加えて、字幅(ワイズ)の軸を組み込んだ初の日本語バリアブルフォント。近年のレトロブームを汲み、デザイン現場の様々な要望に応えることが期待されている。

By 吉田拓史
新たなスエズ危機に直面する米海軍[英エコノミスト]

新たなスエズ危機に直面する米海軍[英エコノミスト]

世界が繁栄するためには、船が港に到着しなければならない。マラッカ海峡やパナマ運河のような狭い航路を通過するとき、船舶は最も脆弱になる。そのため、スエズ運河への唯一の南側航路である紅海で最近急増している船舶への攻撃は、世界貿易にとって重大な脅威となっている。イランに支援されたイエメンの過激派フーシ派は、表向きはパレスチナ人を支援するために、35カ国以上につながる船舶に向けて100機以上の無人機やミサイルを発射した。彼らのキャンペーンは、黒海から南シナ海まですでに危険にさらされている航行の自由の原則に対する冒涜である。アメリカとその同盟国は、中東での紛争をエスカレートさせることなく、この問題にしっかりと対処しなければならない。 世界のコンテナ輸送量の20%、海上貿易の10%、海上ガスと石油の8~10%が紅海とスエズルートを通過している。数週間の騒乱の後、世界の5大コンテナ船会社のうち4社が紅海とスエズ航路の航海を停止し、BPは石油の出荷を一時停止した。十分な供給があるため、エネルギー価格への影響は軽微である。しかし、コンテナ会社の株価は、投資家が輸送能力の縮小を予想している

By エコノミスト(英国)