16bit CPU core YSD8800
自作16bit CPUコアと独自マイクロカーネルOS「YUI OS」による、フルスクラッチ計算機システム開発
概要
CPUコアからOS、アセンブラ・コンパイラ・リンカ・エミュレータ、そしてFPGA向けSystemVerilog RTLまで、設計文書の作成からコード実装・デバッグまで生成AIをフル活用してフルスクラッチで開発するプロジェクトです。ソフトウェア側(マイクロカーネルOS「YUI OS」のLevel 1)は完成済みで、現在はFPGA評価ボード Tang Nano 9K上でCPUコア「YSD8800」を実際に動かすべく、SystemVerilogによるRTL実装を進めています。
YSD8800(CPUコア)
- 16bitアドレス空間(64KB)、リトルエンディアン、メモリマップドI/O
- 現行仕様はISA2.3.1
- アセンブラ(hasm23)/逆アセンブラ(disasm23)/リンカ(lnk23)/エミュレータ(emu23)/Cコンパイラ(scc23)が対応済み
- ソフトウェア開発は自作エミュレータ(emu23)上で先行完了。現在はFPGA評価ボード Tang Nano 9K を対象にSystemVerilogでCPUコアを実装中(詳細は下記「開発ステータス」)
ISA仕様書(ISA2.3)
(クリックで原寸表示)
YUI OS — MC6809とOS-9への敬意
YUI OSは、8/16bit機時代の名機・MC6809とOS-9の設計思想を強く意識したマイクロカーネルOSです。
- カーネルの高レベル層はForth、ユーザランドはCで実装するハイブリッド構成
- スケジューラとIPCだけをカーネル空間に置き、メモリ管理・ファイルシステム・デバイスドライバはすべて独立したサーバタスクとして分離
- コンポーネント間通信は4ワード固定長の同期RPC(IPC4)に統一
- タスク管理はTCB(Task Control Block)方式、最大16タスクまで管理
- スケジューリングはタイマ割り込み駆動のプリエンプティブ方式
Level 1 / Level 2という段階設計
YUI OS Level 1(MMUなしの単一アドレス空間、動的Cプロセスは同時1個までという制約付き構成)は開発完了しました。これは弱点ではなく、OS-9のLevel I(フラット64KBアドレス空間)/Level II(DATによる動的アドレス変換)という区分をそのまま踏襲した、意図的な段階設計です。MC6809用の実MMUチップ「6829」を意識しつつYSD8800側にもMMU実装を計画しており、実現後はLevel 2として複数Cプロセスの同時実行が可能になります。
ファイルシステムとツールチェーン
- YUIFS:独自のフラットファイルシステム(現行フェーズ)。将来的にFAT12互換フォーマットへの移行を計画
- ツールチェーン:アセンブラ/逆アセンブラ/Cコンパイラ/リンカ/エミュレータ/Forthクロスコンパイラを一式自作
開発ステータス
ソフトウェア(YUI OS Level 1)は開発完了。IPC・メモリ管理・デバイスドライバのタスク化・ファイルシステム・プロセス管理(ProcMgr)・シェルまで、自作エミュレータ emu23 上で一通り動作します。
現在の主戦場はFPGA実装(Step 8)です。ソフトウェア側の完成形である emu23 を「黄金リファレンス」とし、SystemVerilogで書いたRTLの外部観測(UART出力・IRQ発火タイミング・メモリ最終状態など)をemu23の出力と突き合わせて等価性を検証するというアプローチで、CPUコアから積み上げています。
工程は次の順に定義されています。
V(-1)emu23 MMU復活 → V0仕様確定 → V1 CPUコア → V2 CPUコア検証
→ V3 メモリ/バス/PSRAM → V3.5 MMU → V3.7 割込コントローラ(YSD8004)
→ V4 UART(YSD8001) → V5 タイマー(YSD8002) → V6-A/B ストレージ(YSD8003)
→ V7 IRQ統合検証 → V8 YUI OS起動 → V9 性能検証 → VD 文書化
- 完了:CPUコア(多サイクル・ステートマシン実装)、MMU(FM-11方式ページング、無効時は恒等写像でLevel 1のブート経路を担保)、割込コントローラYSD8004、UART(YSD8001)、タイマー(YSD8002)。CPUコア自体はV3.5以降、周辺デバイスをいくつ追加しても無改修のまま安定しています。
- 実装中:V6-A、YSD8003(SDカードのSPIモード読み出し)。初期化シーケンスは完了し、現在は単一ブロック読み出し(CMD17)まわりの不具合を切り分け中です。
- この先:複数割込源がそろった状態でのIRQ統合検証(V7)を経て、Icarus Verilogのシミュレータ上でYUI OSを実際に起動する(V8)のが次のマイルストーンです。
検証はIcarus Verilog(iverilog -g2012)によるシミュレーションが中心で、実機Tang Nano 9Kへの論理合成・書き込みはその先の工程として予定しています。
開発体制:生成AIをとことん使い倒す
設計書の起草・実装・デバッグ・回帰検証まで、開発プロセスのほぼ全工程で生成AI(Claude)をフル活用しています。フェーズごとに「設計検討→レビュー→実装→検証→文書改版」のサイクルを回し、その引継ぎ記録だけで100本を超えるチャットセッションを重ねてきました。バグを踏むたびに再発防止の設計原則(kaizen原則)を文書に蓄積し、次のセッションに引き継ぐという運用を徹底することで、AIとの協業でも品質を落とさず開発を進めています。