概要
- NeuralCPUは、 全てのCPU構成要素 (レジスタ、メモリ、フラグ、プログラムカウンタ)を GPU上のPyTorchテンソル で管理
- 全算術演算 が 訓練済みニューラルネットワーク によって実行
- Kogge-Stoneキャリー先読み加算器 や バイトペアルックアップ乗算 など、従来のハードウェア設計をNNに適用
- ARM64命令セット を完全サポートし、 全ての状態遷移がGPU上 で完結
- 性能・精度検証済み、DOOMレイキャスターなどのデモや347の自動テストを搭載
NeuralCPU:GPU上で動作するニューラルネットワークCPUの概要
- CPUの全構成要素 (レジスタ、メモリ、フラグ、プログラムカウンタ)を PyTorchテンソル としてGPU上に常駐
- ALU演算 は全て 訓練済み.ptモデル (PyTorchモデル)を経由して実行
- 命令デコード、ALUディスパッチ、状態更新 も全てGPU上で完結、CPU⇔GPU間の往復通信なし
- 加算・減算 はKogge-Stoneキャリー先読み(8パス)、 乗算 はバイトペアルックアップ、 ビット演算 はNN真理値表、 シフト はアテンションベースのビットルーティング
- 算術関数 (sin, cos, sqrt, exp, log, atan2)も全てNN経由
- 整数演算は100%精度、347件の自動テストで検証済み
ALU演算と対応モデル
- ADD/SUB/INC/DEC :Kogge-Stone CLA(carry_combine + full adderモデル)
- MUL :バイトペアルックアップテーブル(256×256×16)
- AND/OR/XOR :ベクトル化NN真理値表(7×4)
- SHL/SHR :アテンション型シフトネットワーク
- CMP :ニューラル減算
- sin/cos, sqrt, exp, log, atan2 :それぞれ専用の深層NN
- 全23モデル(約135MB)、うち13モデルが実際のCPU実装に直結
性能とベンチマーク
- Apple Silicon(MPS, PyTorch 2.10.0) で各演算1000回の平均レイテンシ計測
- exp, log, mul, and, or, xor :21μs(O(1)単一パス)
- add, sub, cmp :248μs(O(log n)キャリー先読み)
- shl, shr :434μs(3バッチパス, アテンション)
- sqrt :522μs(2パス+バッチパッド)
- atan2 :935μs(6パス+バッチパッド)
- 全モデルのロード時間は60ms
- 1命令あたり136~262μs (命令ミックス依存)、 約4,975 IPS
- 乗算は加算の12倍高速 (従来CPUと逆転現象)
アーキテクチャの特徴
- NeuralCPUはシミュレータでなく、GPUネイティブなCPU
- 全状態(レジスタ、メモリ、フラグ、PC)はGPU上テンソル
- 命令フェッチ、デコード、実行、書き戻しまで全てGPU内で完結
- ALUは訓練済みNNバンクとして動作
- ホストCPU側での演算は一切行わない
実行モード
- Neuralモード(標準) :全ALU演算を.ptモデル推論で実行
- 例:
cpu = CPU(neural_execution=True)
- 例:
- Fastモード(--fast) :ALU演算をPyTorchのネイティブ演算(torch.add等)で実行し、最大1.35M IPS(バッチサイズ32768時)
Metal Computeカーネル
- kernels/mlx/ :Apple MLX用Metalシェーダー(Pythonインターフェース)
- kernels/rust_metal/ :Rust+objc2-metal+PyO3によるMetal API直実装
- GPU側でシステムコール処理、基本ブロックキャッシュ、ニューラルディスパッチ、アウトオブオーダー実行も対応
- DOOMベンチマーク付属
命令セット(ISA)
- テキストアセンブリ(ncpu.model)
- MOV, ADD, SUB, MUL, DIV, AND, OR, XOR, SHL, SHR, INC, DEC, CMP, JMP, JZ/JNZ, JS/JNS, HALT
- ARM64バイナリ(ncpu.neural)
- ARM64実バイナリエンコーディングにも対応
プロジェクト構成
- ncpu/neural/ :完全GPUニューラルCPU(ARM64, 12K行)
- ncpu/model/ :モデルベースCPU(テキストアセンブリ用)
- ncpu/tensor/ :テンソルベースARM64カーネル
- kernels/ :Metal Computeカーネル(Python+Metal, Rust+Metal)
- models/ :23種の訓練済み.ptモデル
- demos/ :DOOMレイキャスター等デモ
- programs/ :アセンブリプログラム
- tests/ :347件のテスト
- benchmarks/ :性能ベンチマーク
- paper/ :研究論文
- main.py :CLIエントリーポイント
DOOMレイキャスターデモ
- 全演算を訓練済みNN経由 で実行するDDAレイキャスター
- Neuralモード:約2.5FPS、Fastモード:約5,000FPS
- 両モードでアルゴリズム・出力は完全一致 (違いは演算経路のみ)
- 固定小数点演算(スケール1024) で32ビット整数のみ使用
テスト・ライセンス
- pytest tests/ -v で全347件のテストを実行可能
- MITライセンス
まとめ・ポイント
- 従来のハードウェア設計手法 をNNへ直接転用可能であることを実証
- キャリー先読みやベクトル化 による大幅な高速化
- 全CPU状態がGPU上に常駐、真のGPUネイティブCPUを実現
- 演算ごとの計算量階層(O(1), O(log n), O(n)) が明確
- 研究論文・詳細ドキュメント・デモ・テスト が充実した先進的プロジェクト