OmniCore - RISC-VによるCPU/GPU/NPUの統合アイディア
この記事では、私が考えたOmniCoreという次世代のSoCのようなものについて解説します。
全てのアイディアは机上の空論であり、実現可能性は不明です。
誰か資金力のある人がやってくれれば嬉しいです。
権利を主張することはないので興味のある方は自由にやってほしいです。
基本概念
OmniCoreは4種類のRISC-Vコアを同じ基盤上にパッケージングするアイディアです。
各コアは便宜上
- Pコア
- Eコア
- Gコア
- Nコア とします。
全てのコアがRISC-VベースのISAを採用することで、
- 統合されたシステム環境
- 効率的な動作
- タスクの柔軟なオフロード (後で解説)
- 開発の低コスト化 を期待できます(?)
それでは、各コアについて解説していきましょう。
Pコア
IntelのPコア、big.LITTLEのbig側です。
とりあえず頑張ってつよつよなコアを実装しましょう。
モバイル向けであればこのコアを1コア、もしくは搭載しないという選択もあると思います。
Eコア
IntelのEコア、big.LITTLEのLITTLE側です。 (小さいって言いながら大文字なの何故でしょうか)
言うまでもないですが、省電力なコアを乗っけます。
OSのスケジューラーに頑張ってもらってバックグラウンドタスクを動かしたりします。
Gコア
ここからが新しいアイディアです。
このコアは、お察しの通りGPUとして働きます。 そのため、高度なSIMD系命令等、標準からはかなり外れた拡張をする必要があるかもしれません。
このコアの周りには計算以外のGPUの部分も実装する必要がありますね。
それなら専用GPUを実装すればいいだろうと思うかもしれません。 私も記事を書きながら全く同じことを思っています。
既存のGPUとは違う点として、「CPUと全く同じように使える」ということが挙げられます。
Gコアはシステム上で他のコアと同じように見え、同じように使用することができます(が、OSはそれをできるだけ阻止するべきです)。
GPUドライバがシェーダーをRISC-Vのバイナリコードとしてコンパイルすることで、Gコア上で計算を実行します。
ただ、NVIDIAのCUDAがRISC-Vをターゲットとしてサポートするようなので、何らかの良い点はあると思います。
Nコア
いわゆるNPUです。 Gコアと同じため説明省略。
ちなみに私はまだNPUを触ったことがありません。
この方式のメリット
各コアは本質的に他のコアと同じことができるため(もちろんハードウェアアクセラレーションやパイプライン等効率は違います)、 高負荷時は欠けた部分をお互いが補い合い(複雑な拡張命令はマイクロコードで対応することに成ると思います)、 システムが遅くなることを避けることが可能です。
また、CPUが苦手な並列処理、GPUが苦手な直列処理など、各コアの苦手な処理を、別のコアにオフロードすることで効率的な実行が可能です。
更に、CPUでマルチスレッドプログラミングをするように、自然な形でGPU、NPUを使ったプログラムを書くことが可能に成ります。
コア比率はコア比率おそらく 1:2:3:3
くらいが最適だと思います。
もちろんターゲットとなるプラットフォームによってコア構成は変更する必要があり、
それに柔軟に対応できるのがOmniCoreの強みでもあります。
思いついたときは素晴らしいアイディアだと思ったのですが、記事を書き切ってみたところ大していいアイディアのように思えないですね…。
謝辞
このアイディアを深めるためにGoogle Gemini 2.5 Flashを使用しました。 以下にチャットへのリンクを示すので、興味があれば参照してみてください。
ちなみにOmniCoreという名前もGeminiの提案です(((