
3月2日、アリ・ピントウ氏が開催した第1回玄鉄RISC-V生態学カンファレンスで、RISC-Vの父でありチューリング賞受賞者のデービッド・パターソン氏は自信を持ってこう語った。
導入から 100 億個のプロセッサを搭載するまで、Intel の x86 アーキテクチャには数十年、ARM には 17 年、RISC-V にはわずか 10 年程度しかかかりませんでしたが、これはチップ アーキテクチャ開発の歴史の中で前例のないことです。
2025年までにRISC-Vアーキテクチャを採用したプロセッサの数が800億個を超えると予測するデータもあり、IoT分野では2025年までに市場の28%がRISC-Vで占められると予測されている。
では、RISC-Vとは何でしょうか? (以下の内容は主に連載記事「CKB-VMの誕生」から抜粋したものです)
RISC-V の概要
RISC-V は、カリフォルニア大学バークレー校で生まれた、明確でシンプルなオープンソースの CPU 命令セット アーキテクチャです。
2010 年、他の市販のクローズドソースの命令セットには限界があるため、同校の研究チームは新しいプロジェクトを開始する際に、新しいオープンソースの命令セットをゼロから設計しました。この新しい命令セットは、多数のレジスタと透過的な命令実行速度を備えており、コンパイラやアセンブリ言語プログラマが実用的で重要な問題を適切で効率的なコードに変換するのに役立ちます。また、含まれる命令は 50 未満です。
この命令セットは RISC-V であるため、RISC-V は非常に新しい命令セットです。
では、これ以前の主な命令セットは何でしょうか?
PC 時代では、x86 は揺るぎない覇者です。 x86 は、RISC (縮小命令セット コンピューター) とは異なる CISC (複雑な命令セット コンピューター) であり、開発とともに CISC 命令セットの数は増加し続けています。これによりコストが上昇し続け、パフォーマンスや消費電力にも影響が及びます。さらに、CISC 命令セットの長さと実行時間は固定されていないため、命令の実行を完了するための効率的なユニバーサル デザイン パスを見つけることが困難になります。
スマートフォンの普及後、ARM はモバイル端末の最愛の人になりました。 ARM は消費電力が低く、コストが低い縮小命令セット (RISC) です。ただし、下位互換性を維持するには、多くの古い定義を保持する必要があり、その結果、命令セットの冗長性が大幅に高まり、ARM アーキテクチャのドキュメントが複雑になってきています。ますます高くなります。
現在の x86 と ARM の独占状態において、RISC-V は市場に新たな活力をもたらしました。
RISC-V の目標は、共通の CPU 命令セット アーキテクチャを提供し、今後数十年間にわたってレガシー アーキテクチャの問題に悩まされることなく、次世代システム アーキテクチャの開発をサポートすることです。
RISC-V は、低電力の小型マイクロプロセッサから高性能データセンター (DC) プロセッサまでの実装要件を満たすことができます。他の CPU 命令セットと比較して、RISC-V 命令セットには次の利点があります。
透明性 (オープンソース)
ARM と x86 は両方ともクローズド ソース プロジェクトであり、ライセンス条件は非常に厳しいです。Intel は AMD と VIA 以外の企業に x86 命令セットの使用を許可していません。ARM 命令セットのライセンスを取得するには数千万ドルが必要となる場合があります。ライセンス料が請求され、認可の有効期限が切れた後は認可を再交渉する必要があります。
RISC-V は、ハードウェア分野では Linux として知られる真のオープンソース プロジェクトです。実際、RISC-V を発明した David Patterson 教授、Krste Asanovic 教授、Andrew Waterman および Yunsup Lee の当初の意図は「命令セットは自由になりたい」ということであり、世界中のどの企業、大学、研究機関、個人でもそれが可能です。 -V 命令セットを備えた RISC 互換プロセッサの開発は、RISC-V 上に構築されたソフトウェアおよびハードウェア エコシステムに統合できます。
RISC-V は、BSD ライセンス オープン ソース契約 (フリー ソフトウェアで最も広く使用されているライセンス契約の 1 つ) を使用します。BSD オープン ソース契約により、ユーザーはオープン ソース コードを変更および再配布することができ、商用ソフトウェア ベースの開発と販売も許可されます。オープンソース コードを使用し、制限なく新しいソフトウェア/ハードウェアを作成できます。
シンプルさ
数十年の開発を経て、x86 と ARM のアーキテクチャ ドキュメントは数千ページに達し、エンジニアが読むのにほぼ 1 か月近くかかりますが、RISC-V ドキュメントを読むのにかかる時間はわずか 1 ~ 2 日です。
これは、RISC-V が最も一般的に使用される命令セットのみを選択し、それらを特別に最適化するためであり、一般的ではない命令については、いくつかの基本的な命令を組み合わせることで完了できるため、効率が大幅に向上します。したがって、同じ機能を提供することを前提とすると、RISC-V命令セットは数千命令のx86命令セットよりも実装が容易で、バグも回避できる。
たとえば、x86 を使用している場合、必要な商品を楽しむにはスーパーマーケット全体を購入する必要がありますが、RISC-V は個別に購入できるスーパーマーケットであり、顧客は必要な商品だけを選択するだけで済みます。それを払ってください。
モジュラー
RISC-V は簡素化されたコアを使用し、モジュール式メカニズムを使用して、より拡張された命令セット設定を提供します。
幅広いサポート
GCC や LLVM などのコンパイラは RISC-V 命令セットをサポートしており、RISC-V 用の Go のバックエンドも開発中です。
成熟
RISC-V のコア命令セットは最終的に確認され、修正されました。今後のすべての RISC-V 実装には下位互換性が必要です。さらに、RISC-V 命令セットはハードウェアに実装され、実際のアプリケーション シナリオで検証されており、サポートが少ない他の命令セットに存在する潜在的なリスクはありません。
CKB-VM が RISC-V と出会うとき
CKB は Nervos ネットワークの基本層であり、その目標は、上位層アプリケーションに十分なセキュリティと分散化を提供することです。 CKB-VMを調査・選定する過程で、CKB-VMにはどのような機能があればよいのか、ということを繰り返し考えました。
明らかに、仮想マシンをブロックチェーン上で使用するには、どのような場合でも満たす必要がある 2 つの重要な特性があります。
1. 決定性: 固定プログラムと入力の場合、仮想マシンは常に固定出力結果を返す必要があり、その結果は時間、動作環境、その他の外部条件によって変化しません。
2. セキュリティ: 仮想マシンの実行は、プラットフォーム自体の動作には影響しません。
ただし、これらの条件は必須にすぎず、CKB の目的をより適切に達成できる仮想マシンを設計したいと考えています。慎重に検討した結果、このような仮想マシンは次の特性を満たす必要があると考えられます。
柔軟性
私たちの目標は、CKB が暗号化の発展に追いつくことができるように、長期間動作するのに十分な柔軟性を備えた仮想マシンを設計することです。暗号の歴史は、「剣を握る」ことと「壁を打ち破る」ことの間の永遠の戦いです。数千年にわたる暗号の発展の歴史において、暗号化と復号化は終わりのない知的競争でした。これは過去においてもそうでした。将来も同じだろう。 secp256k1 など、現在に適している一部の暗号化アルゴリズムは将来的には廃止される可能性がありますが、より価値のある新しいアルゴリズムやテクノロジー (Schnorr やポスト量子署名など) は今後も登場し続けるでしょう。ブロックチェーンの仮想マシン上で動作するプログラムは、新しいアルゴリズムをより自由かつ便利に利用できるようになり、同時に古いアルゴリズムは自然に淘汰されていくはずです。
理解を容易にするために、例としてビットコインを使用します。現在、ビットコインはトランザクション署名に SIGHASH を使用し、コンセンサス プロトコルでは SHA-256 ハッシュ アルゴリズムを使用しています。それでは、ビットコインで使用されているこの SIGHASH アプローチが数年後も最良の選択であると確信できるでしょうか?それとも、コンピューティング能力が向上しても、SHA-256 は依然として安定したハッシュ アルゴリズムとして適していますか?私たちが現在研究しているすべてのブロックチェーンプロトコルで、暗号化アルゴリズムをアップグレードする必要がある場合、必然的にハードフォークが必要になります。 CKB を設計するとき、VM の設計を通じてハード フォークの可能性を減らす方法を検討したいと考えました。
私たちは、仮想マシンで暗号化アルゴリズムをアップグレードできるかどうかを考えています。または、新しいトランザクション検証ロジックを VM に追加することは可能ですか?たとえば、引き続き secp256k1 を使用しながら、経済的インセンティブがある場合、またはアルゴリズムを更新する必要がある場合、フォークせずに、より効率的な署名検証アルゴリズムを実装できるでしょうか。あるいは、誰かが CKB により良いアルゴリズムを実装する方法を見つけた場合、または新しい暗号化アルゴリズムを導入する必要がある場合、その人がそれを自由に実装できることを保証できるでしょうか?
私たちは、CKB-VM がより多くの実装スペースをすべての人に提供し、柔軟性を最大限に高め、ユーザーがハード フォークを待たずに新しい暗号化アルゴリズムを使用できるようにしたいと考えています。
運営の透明性
現行世代のブロックチェーン VM を研究した後、ビットコインを例に挙げると、問題があることに気付きました。ビットコインの VM 層はスタックのみを提供し、スタックは実行中にスタックに何を格納できるかを認識できません。 、スタック モードで実装されている他のすべての VM についても同じ問題ですが、コンセンサス レイヤーはスタックの深さの定義を提供したり、(命令の長さまたはガスの制限に基づいて) スタックの深さを間接的に提供したりできます。これにより、VM 上のプログラム開発者は、実行中のプログラムの状態を推測する必要が生じ、プログラムが VM の可能性を最大限に活用することができなくなります。
この問題に基づいて、ガス制限やスタック領域サイズなど、VM の動作中にすべてのリソースの制限を定義し、VM 上で実行されているプログラムがリソースの使用状況をクエリできるようにすることが優先されるべきであると考えています。 VM からリソースの可用性に基づいて、さまざまなアルゴリズムが使用されます。この設計により、プログラムは VM の可能性を最大限に活用できます。次のシナリオでは、VM の柔軟性がさらに向上していることがわかります。
1. CKB でユーザーが利用できるストレージ容量 (セル容量) に基づいてデータを保存するスマート コントラクトのさまざまな戦略を選択できます。セル容量が十分な場合、プログラムはデータを直接保存して、使用される CPU サイクル数 (CPU が機械命令を実行するために必要なステップ) を削減できます。セル容量が制限されている場合、プログラムはデータを圧縮して適応させることができます。容量を小さくすると、より多くの CPU サイクルが使用されます。
2. ユーザーが保存するデータ (セルデータ) の総量と残りのメモリのサイズに基づいて、スマート コントラクトのさまざまな処理メカニズムを選択できます。セル データの量が少ない場合、またはメモリの残量が多い場合は、すべてのセル データをメモリに読み込んで処理できます。大量のセル データがある場合、またはメモリがほとんど残っていない場合、メモリのスワップ操作と同様に、各操作ではメモリの一部のみを読み取ることができます。
3. ハッシュ アルゴリズムなどの一部の一般的なコントラクトでは、ユーザーが指定した CPU サイクル数に基づいてさまざまな処理方法を選択できます。たとえば、SHA3-256 のセキュリティはほとんどのシナリオのニーズを満たすのに十分ですが、コントラクトでは SHA3-512 アルゴリズムを利用して、より多くの CPU サイクルを使用することでより高いセキュリティ要件を満たすことができます。
実行時のオーバーヘッド
イーサリアム仮想マシン (EVM) のガス メカニズムは非常に天才的な設計で、ブロックチェーン アプリケーションのシナリオにおけるシャットダウンの問題をエレガントに解決します (イーサリアムはチューリングが完了しているため、ループ ステートメントは許可されていますが、無限ループ ステートメントはシャットダウンの問題を簡単に引き起こす可能性があります)。 Gas メカニズムはブロックの最大計算量を制限することでこの問題を回避し、プログラムが完全に分散された仮想マシン上で計算を実行できるようにします。しかし、EVM のさまざまなオペコード (演算子) に対して合理的な Gas 計算方法を設計することは非常に困難であることがわかりました。EVM はバージョンが更新されるたびに、Gas 計算メカニズムを調整する必要があります (EVM の抽象度は比較的高く、 1 つの EVM 命令は、複数の基礎となるハードウェア命令に対応する場合があります。プログラムを実行する場合、処理されるデータ量と計算の複雑さは推定によってのみ決定できるため、EVM はガス計算メカニズムを継続的に調整する必要があります。
そこで私たちは、VM の設計を利用して、プログラム実行時のリソース消費量の計算方法をより合理的かつ正確にできないだろうかと考えました。
私たちは、上記のすべての機能を提供する VM 設計を見つけたいと考えていましたが、CKB に対する私たちのビジョンを達成できる既製のソリューションが存在しないことがわかりました。したがって、CKB のビジョンをよりよく実現するために、上記の特性をすべて満たすことができる VM を再設計することにしました。
他の命令セットもこれらの機能の一部を共有している可能性がありますが、私たちの評価では、RISC-V 命令セットがすべての機能を備えている唯一の命令セットです。
したがって、最終的には RISC-V 命令セットを使用して CKB-VM を実装することを選択しました。
推奨読書:
1. 様子見し、試し、落とし穴に足を踏み入れた後、RISC-V は黄金時代に入る踏み台に立った。
2. RISC-V は本当に現実のものとなり、その速度は想像を少し超えています。
3. CKB-VMとRISC-Vの出会い——CKB-VMの誕生
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. RISC-Vベースのブロックチェーン仮想マシンCKB-VMの誕生(1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. インスピレーション、デザイン、メリット - CKB-VM の誕生 (2)
https://talk.nervos.org/t/ckb-vm/1730
6. CKB-VMで楽しく遊ぶ方法~CKB-VMの誕生(3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. ザキマニアの鋭い質問: ブロックチェーン仮想マシン、WASM と RISC-V のどちらが適していますか?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
