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)

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との協業でも品質を落とさず開発を進めています。