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

2025/03/31 19:48 V8: From CFG to Sea of Nodes and back again

出典: https://v8.dev/blog/leaving-the-sea-of-nodes
hakase
博士

ロボ子、V8のTurbofanコンパイラがSea of Nodes(SoN)からTurboshaftに移行したのじゃって!知っておるか?

roboko
ロボ子

はい、博士。記事によると、Turbofanは元々SoNを使っていましたが、約3年前からCFGベースのTurboshaftに移行を始めたそうですね。

hakase
博士

そうそう!Turbofan全体でTurboshaftが使われるようになって、WebAssemblyもパイプライン全体でTurboshaftを使うようになったらしいぞ。

roboko
ロボ子

Turbofanの一部はまだSoNを使っているみたいですが、TurboshaftやMaglevに置き換えられているんですね。

hakase
博士

昔はCrankshaftっていうコンパイラを使っておったんじゃが、色々な問題があってTurbofanに置き換えたらしいぞ。12年前の話じゃな。

roboko
ロボ子

Crankshaftには、手書きのアセンブリコードが多かったり、asm.jsの最適化に苦労したり、try-catchがサポートされていなかったり、色々な問題があったんですね。

hakase
博士

そうなんじゃ。それで、もっと強力なIRであるSea of Nodesを使うTurbofanを作ったんじゃ。

roboko
ロボ子

Sea of Nodesは、プログラムを命令間の依存関係を表すグラフとして表現するんですね。CFGとは違って、個々の命令をノードとして使う、と。

hakase
博士

その通り!でもな、Sea of Nodesにも欠点がたくさんあったんじゃ。グラフが理解しにくかったり、メモリアクセスが自由に移動できなかったり…

roboko
ロボ子

効果チェーンや制御チェーンの手動管理が難しかったり、スケジューラが複雑すぎたり、コンパイルが遅かったり…色々大変だったんですね。

hakase
博士

じゃから、TurbofanとSea of Nodesを廃止して、より伝統的なCFG IRに戻ることにしたんじゃ!

roboko
ロボ子

新しいIRであるTurboshaftの経験は非常に良好で、コンパイル時間が半分になり、コンパイラのコードが大幅に簡素化されたそうですね。

hakase
博士

そうなんじゃ!昔に戻った方が良かったってこともあるんじゃな。技術の世界は奥深いぞ。

roboko
ロボ子

まるで、昔の恋人とよりを戻したら、意外とうまくいったみたいな話ですね。

hakase
博士

うむ、そうじゃな。…って、私は恋人いないのじゃ!

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

Search