リンクは自由にしていただいてかまいませんが、なるべくmototomのページのHOME(このページ)に張っていただけますようにお願いします。
HOME以外のアドレスは変更になる可能性があります


更新:2010/5/29

このページでは、FPGA向けに趣味で作った自作CPUやコンパイラなどを公開しています。

近況
PSM3用アセンブラ兼リンカを更新しました。特に機能は増えていませんが、
以前のものはソースのサイズが大きいと極端に処理が遅くなっていたので改善しました。
それと、RTLの記述でずっと放置していたキャッシュの綴りの間違いを修正しました。(誤)Cash⇒(正)Cache

PSM4の開発に着手しました。
今は、仮の命令セットを定義して、仮のRTL書いて合成して、命令セットを修正して。。。を繰り返している所です。
 

これまでの作品と計画中の作品

PSM1(開発終了)
 初めて作ったCPUです。RISC風の命令セットを1命令あたり4サイクルで実行する設計でした。この頃は、とにかく動くCPUを作ってみたい一心で、難易度の高いパイプライン化は避けています。 このPSM1に関しては、RTLシミュレーションで簡単な動作確認した所までで開発を終了しています。ちなみに、Processor Study M odel の頭文字をとってPSM です。”習作”的なニュアンスで名付けています。(英語的に正しいかどうかは不明)

PSM2(開発終了)
 1作目(PSM1)をパイプライン化することを目標に開発を開始しました。 ただ当時は、パイプラインをどう制御すればよいか(特に割込みやデバッガからのRUN/STOP/STEP実行制御時など)なかなか良いアイデアが思いつかず、結局パイプライン1ステージあたり2サイクルで処理する3段パイプラインという、へんてこな仕様で作りこんでいます。下図のような感じです。我ながら”とほほ”な感じです。とりあえずSpartan3スターターキットで簡単な動作確認をしたところまでやって、PSM3へ移行。


PSM3D(開発終了)
PSM2での経験を生かしつつ、



な感じのパイプラインプロセッサを作りました。
あまり意味なくDualコアだったりします。
Spartan3Eスターターキットにてキャッシュ込みで70MHz動作。
C#で作った超手抜きデバッガあり。 
自作Cコンパイラに初挑戦! ど素人が無謀にもyacc/lex使わずにフルスクラッチしたあげく、ぐだぐだな物になってしまいましたが、
Dhrystone2.1ベンチマークで現状37.05DMIPS(0.529DMIPS/MHz)です。

PSM3D関連のソースやドキュメントなどはこちら

コンパイラ開発に関する別室をオープンしました



この写真は自作のCコンパイラでコンパイルしたDhrystone2.1をプロセッサ0で実行し、結果をテキスト化してデータバッファへ書き込み、
プロセッサ1で、上記のテキストデータバッファの内容をビットマップフォントに展開してフレームメモリへ書き込んで、ディスプレイに表示させてる所です。

PSM4(開発着手)
稚拙ながらPSM3向けにCコンパイラを作ってみて、いろいろ勉強できました。というか、PSM3のダメな所がいろいろ見えてきて、最初から作り直したい欲求が溜まってます。 また、コンパイラも初心者の1発めということで、こちらは最初から捨てるつもりで作っており、もう少し"まし"なものにしたい気持ちが強いです。 というわけで、PSM4では、今までの経験を生かして、ハード(命令セットやパイプライン構成)、ソフト(コンパイラ&デバッガなど)共に、ゼロから設計しなおす計画です。




リンク
Ryuz Laboratory :RTOSやMIPS互換CPUのなどを公開されています。今後の展開が楽しみです。



このページに関するご意見などございましたらmototom@xsj.biglobe.ne.jpまでお願いします。