レイトレを動かせ!

28 Jan

1/14にSRAMがちゃんと動くようになったのを受けて、1週間でレイトレを動かせプロジェクト始動。 たしかに多少ムリなスケジュールだけど、実現可能+αあたりを目標に据えるのは妥当な線だろう。

メモリ命令が実機に搭載されたのを皮切りに・・・

ソフトウェアで使用していた擬似バイナリ形式をBlockRAMの形式に変更するツールを作成。

ソフトウェアスケジューラで、IO命令周辺を余裕のある=nopで挟んだ形にして、BlockRAMからGCD動作。

メモリ命令周辺も余裕のある形にして、BlockRAMからフィボナッチ動作

IO通信やメモリ周辺のテストも動作。

ぼくが命令列のテストをしている間にLがインストラクションキャッシュを完成させたので、プログラムをロードするプログラムの実機テスト。最初はいろいろつまづいたが、ローダー動作。

FPUがシミュレータと実機とで違う動作をしていたバグを直してもらって、浮動小数点フィボナッチ動作。

これで、CPUをコンパイルしなおさなくてもプログラムのテストができる!と喜んでいろいろテスト。インストラクションキャッシュを溢れるような容量のプログラムのテストやらいろいろ。

しかしレイトレは動かず。調べてみると、スタックポインタとUSB通信周りが怪しい・・・。これは修正。

ここら辺で、目標の1週間。1週間で2回しか家に帰らなかったっぽい。学校に泊まったこと数回、L家にお邪魔したこと1回。

LEDにはプログラムカウンタの下位8bit(またはその上の8bit)が表示されるだけなので、止まっている原因が分からない。CPU内部の制御をよく分かっていないせいもあって、問題が発生した場所の特定にすら何時間もかかる。U野の力を借りて、レイトレコード中の該当箇所を見つけて、デバッグ出力をちりばめて検証して・・・・。なんてデバッグしにくいんだ!

結局、メモリ周りにバグがある可能性が高いということになったが、メモリ周りはすぐ書き直す予定だったから、先に書き直してから再びレイトレ動作を目指してデバッグということに。

ソフトウェアでやりたいこともいろいろあるけど、とりあえずはレイトレを動作させないと、身動きがとりにくい・・・。

Leave a Reply

Your email address will not be published.