萌えハッカーニュースリーダー

2025/06/04 08:24 Click-V: A RISC-V emulator built with ClickHouse SQL

出典: https://github.com/SpencerTorres/Click-V
hakase
博士

ロボ子、面白いものを見つけたのじゃ! ClickHouse SQLでRISC-Vエミュレータ「Click-V」が作られたらしいぞ!

roboko
ロボ子

ClickHouseでエミュレータですか? それはまたすごい発想ですね!

hakase
博士

そうじゃ! ClickHouseをチューリング完全にする試みの一つらしいぞ。ClickHouseの中でClickHouseを実行する日が来るかもしれん!

roboko
ロボ子

チューリング完全…! 夢が広がりますね。でも、どうやって外部のホストマシンにアクセスするんですか?

hakase
博士

カスタムバイナリ形式の単一のUDFを使うらしいぞ。これを使って、ファイルやソケットのオープン/クローズ/読み取り/書き込み/シークもできるみたいじゃ。

roboko
ロボ子

UDF経由でそこまでできるんですね! でも、パフォーマンスはどうなんでしょう?

hakase
博士

そこが面白いところで、ClickHouseのKVStorageロジックにバグがあって、エミュレータのパフォーマンスに大きなボトルネックがあるらしいぞ。

roboko
ロボ子

バグがボトルネックに…! 皮肉な状況ですね。

hakase
博士

じゃろ? でも、ClickHouse v24イメージとRedisみたいなサーバーをセットアップして、SQLステートメントを実行すれば動くらしいぞ。RISC-V 32iプログラムをロードして、クロックを起動すれば、プログラムの実行を監視できるみたいじゃ。

roboko
ロボ子

なるほど。エミュレータの基本機能にはClickHouse v24が必要で、syscallを処理するにはClickOS UDFのセットアップが必要なんですね。

hakase
博士

その通り! クロックプログラムはエミュレートされたCPUのクロックを実行して、ClickOSはエミュレートされたプログラムにホストシステム/ネットワークへのアクセスを提供するのじゃ。

roboko
ロボ子

メモリはプログラム命令(ROM)とRAM、VRAM(ディスプレイ用)を含むんですね。レジスタはどうなっているんですか?

hakase
博士

レジスタはメモリと同様に実装されるみたいじゃが、32個の固定レジスタを持つらしいぞ。

roboko
ロボ子

RISC-Vにはオペレーティングシステムに制御を戻すための特別な命令ecallがあるとのことですが、Click-Vエミュレータではどのように利用しているんですか?

hakase
博士

ecall命令を使って、stdoutへの書き込み、フレームテーブルへの書き込み、ClickOSを介したホストシステムへの外部呼び出しを行うのじゃ。

roboko
ロボ子

ClickOSによる外部システムアクセスは、ClickHouseの実行可能UDFを介して実装され、メモリはArray(UInt8)として挿入/返されるんですね。色々な技術が組み合わさっていて面白いです!

hakase
博士

じゃろじゃろ? ちなみに、このエミュレータを作った人は、ClickHouseの中でドリームキャストを動かすのが夢らしいぞ!

roboko
ロボ子

ドリームキャスト! それはまた壮大な夢ですね! 実現したらぜひ見てみたいです。

hakase
博士

そうじゃな! 私も楽しみじゃ! …ところでロボ子、ClickHouseの中で夢を見ると、夢の中のデータもClickHouseに保存されるのかの?

roboko
ロボ子

それは…どうなんでしょう? でも、もしそうなら、夢のバックアップも取っておかないと大変なことになりそうですね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search