NATUを作る(パート2)

HARUは失敗に終わってしまった。
だが、その悔しさをバネに、新たにNATUを作ることになった。

今回は、パート1の続きみたいな感じで、もういちど構成などを考え直します


CPUとGPUの接続

CPUとGPUの接続に関しては、二つの案があります

一つ目は、HARUと同じく命令はROMから送り、座標データをレジスタから送る方法です。

二つ目は、命令の種類もレジスタの値で指定する方法です。

HARUと同じ方法の場合、外部のI/Oポートなどの入力で塗りつぶすかどうかなどを変えることが出来ませんが、命令の種類もレジスタの値で指定するようにすれば、外部のI/Oポートでできることも広がることになります。

レジスタで指定する方式の場合、ROMから命令の種類を指定したい場合、一度レジスタに情報を書き込んでからGPUに送らないといけないため、速度が落ちる可能性があります。

ですが、レジスタの値で指定する方式のメリットとして、命令セットの命令の種類をへらせるというめりっとがあります。
HARU方式だと、「レジスタ書き込み」「四角形塗りつぶし」「枠だけ四角形」「文字」をオペコードで指定できるようにする必要がありましたが、レジスタの値で命令を指定する方式なら、「レジスタ書き込み」と「GPU動作命令」だけで済みます。
どんな処理をGPUに行わせるかは、レジスタの値で指定するので、これで十分になります。

レジスタで指定する方式の方がメリットが大きい!
レジスタで指定する方式にしたいと思います。

GPUが命令を受け取るタイミング

GPUは、基本的にマルチスレッディング技術にやって、並列(厳密には、タイミングを少しずらしている)に動作しています。

並列に動作しているスレッドに、順番にCPUからの指示を送れるようにする必要があります。
そうしないと、スレッドを十分に活かしきれないからです。

そのために、一時的に命令を保存しておいて、命令を送るべきスレッドが回ってきたタイミングで命令を送れる記憶装置を作りたいと思っています。

文字

文字に関して、前回は専用回路を使うと言っていましたが、GPU用CPUを使って処理したいと思います。
その理由は、並列に処理できるようにしたいからです。

ですが、逆に言えば並列に処理できれば専用回路でも問題ないということになります。

ですが、CPUのマルチスレッドに合わせないといけなくなるので、やっぱりCPUで処理しちゃった方がいい気がします。

そのために、文字を保存している信号強度式のROMからどんな感じにCPUに情報を送るか考えておきます…

それじゃあ、とりあえず次回はNX RED VIIIの実行ユニットを作っていきたいと思います。

それじゃあ、次回、また会いましょう

この記事が気に入ったらサポートをしてみませんか?