見出し画像

独学で考えた赤石CPUの高速化技術解説「マルチROMシステム」編

僕の一番最初の記事を読んでくれた方なら、マルチROMシステムがどんな技術なのか、知っていると思いますが、一応「独学で考えた赤石CPUの高速化技術解説」でまとめておきたいと思います。
内容はCRED Vの記事の後半とほぼ一緒になっていると思います。

1.ROMは二つじゃダメなんでしょうか?

〜マルチROM化の原点〜

実は、ROMを2つ以上搭載している赤石CPUは、CRED Vが出来る前に、存在していたのです。
まぁ、CRED Vの4つのROMほどではないですが…

NX RED

マルチROMの初代は、NX REDになります。
この赤石CPUでは、ROMを二つ外付けするような構造になっていて、PCは7bitのものが二つ用意されています。
物理的に二つのROMを搭載するのか、疑似的にマルチROM化しているのかは、不明です。
また、なぜPCを二つに分けたのか、それは今は覚えていません。
まぁともかく、ROMは一つだけではなく、二つにするという発想は2022年の10月あたりからあったということですね。

その後はしばらくROMが二つになることはありませんでした。
ですが、今度はNXREDJシリーズでROMが二つになります、、!

NXREDJIV

それが、このNXREDJIVです。
NXREDJIVでは、命令用のROMを二つ搭載し、交互に読み出しています。

当時は、CPUを擬似的に2コア化させて高速化させようと考えていました。
ALUやレジスタは擬似的に2つにさせていましたが、ROMとPCは擬似的ではなく物理的に2つ設置していました。
その結果、NXREDJIVの処理能力はNXREDJIIIの約2倍となり、大幅な高速化を達成しました!
そして、マルチROMシステムは次世代のNXREDJVにも受け継がれ、NXREDJVもまた、僕の赤石CPUとしては非常に高速な赤石CPUとなっています。

NXREDJV

このように、マルチROMシステムは高速化のために使われていました。
ですが、その後は幅9CPUの開発がしばらく続いたため、マルチROMシステムが採用されることはありませんでした。

ですが、その後マルチROMシステムを閃き、それを粗粒度マルチスレッディングと連携させた赤石CPUが誕生します、、、!

CRED V

ROMは4つへ

CRED Vは、CREDシリーズの第五世代となる赤石CPUです。
このレッドストーンCPUには、粗粒度マルチスレッディングが採用されており、それと密接に関わり合いながらマルチROMシステムが組み込まれています。

CRED VのマルチROMシステムはだいぶ特殊な制御になっていますが、その解説はここでしているので、今回はしません。

2.CRED VのマルチROMシステムのメリット・デメリット

CRED Vは、実際に複数のROMを搭載し、自動的に制御させています。
では、この方式のマルチROMシステムが従来の赤石CPUと比べてどこが優れていて、どこが劣っているのでしょうか?

メリット

メリットは五つあります。

まず一つ目は、状況に応じて柔軟な制御が可能になる点です。
マルチROMシステムは、状況に合わせて読み出し実行するROMを切り替えることができるので、その分赤石CPUの自由度は向上し、より柔軟な制御で動かすことも可能になります。

二つ目は、ROMのレイアウトの幅が広がる点です。
小さなROMをいくつか搭載することで、マルチROMシステム化しています。
従来は大きな一つのROMでしたが、小さなROMを複数搭載する場合なら、細かいところにもROMを敷き詰めることができ、レイアウトの自由度が向上します。

従来の赤石CPU(NX RED VI)
マルチROMシステムを採用した赤石CPU(CRED V)

三つ目は、命令セットを短くできる点です。
条件分岐命令でジャンプ先のROMのアドレスを指定するbit数が少なくて済みます。
これは、ROM内のジャンプではこれまで通り命令でジャンプ先などを指示しますが、どのROMを動かすかの制御は自動なので、その分プログラミングが楽になり、命令セットも短くできる可能性が生まれます。

四つ目は、ROMの帯域を10Hzより引き上げられる点です。
ROMを物理的に複数搭載しているので、その分帯域を増やすことも可能になります。
マインクラフトのレッドストーンは、最大でも10Hzでしか動かせませんが、二つのROMから同時に読み出せば、実質20Hzの帯域を実現できます。

五つ目は、ROMの遅延を短縮できる点です。
実は、遅延の多い大きなROMより遅延の少ない小さなROMを複数配線した方が、全体で見た遅延は減少するため、その分高速になります。

デメリット

デメリットは二つあります。

一つ目は、制御が難しい点です。
マルチROMシステムでは、複数のROMの制御を回路側が行っているため、一部のROMだけがずっと実行されてしまうなどの不具合が起きないように制御回路を組む必要が生まれます。
なので、CRED VのようなマルチROMシステムでは、出来る限り全てのROMが実行されるような制御にしました。

二つ目は、サイズが大きくなってしまう点です。
ROMを複数搭載することが前提になっているので、ROMが一つだけで済む従来型と比べて、サイズは大きくなってしまう可能性があります。

3.NX RED VIのマルチROMシステムのメリット・デメリット

NX RED VIは、一つのROMを疑似的にマルチROM化させ、制御しています。
では、この方式のマルチROMシステムが従来の赤石CPUと比べてどこが優れていて、どこが劣っているのでしょうか?

メリット

メリットは三つあります

まず一つ目は、赤石CPUの極度細粒化に対応できる点です。
ROMを従来型とほとんど同じのまま、極度細粒化に対応させることが可能になるので、その分簡単に高速化させることが可能になります。
(極度細粒化とは、僕の独自高速化技術で、細粒度マルチスレッディングに近い技術です。)

二つ目は、スペースを取らない点です。
従来型と同じスペースがあれば、基本的に事足りるので、ROMを増やしたりする必要はありません。
つまり、サイズはそのままにしながら、より高速化できます。

三つ目は、ROMの効率を高められる点です。
NX RED VIのようなマルチROMシステムは、一つのROMを疑似的にマルチROM化していますが、そうすることで一つの疑似ROMが使う命令数が少なければ、その分ほかの疑似ROMが使うことができますし、同じ命令を複数の疑似ROMで実行させたい場合、二回プログラミングせずに、同じアドレスの命令を実行させれば、実現できるようになります。

デメリット

デメリットは二つあります

一つ目は、PCを用意しなければいけない点です。
ROM自体は従来型と同じでも、PCは疑似ROMの数だけ用意しないといけないので、その分制御が大変になったり、回路サイズは大きくなります(ループ式のPCを採用し、PCも疑似的に複数個に増やすことが出来れば解消できます)。

二つ目は、ROMの帯域が不足するかもしれない点です。
CRED VのようなマルチROMシステムは、むしろROMの帯域を向上できますが、NX RED VIのようなマルチROMシステムの場合、ROMは一つなのでROMの帯域は10Hzが最大になります。
また、一つのROMを疑似的に複数のROMとして扱うので、結構帯域がギリギリになることが多いです(CPUの演算装置側も10Hzが限界なので、困ることは基本ありません)。

4.まとめ

このように、マルチROMシステムは大きく分けて二種類あり、どちらもメリットとデメリットがあるシステムでしたね。

ですが、今後はNX RED VIのような疑似的にマルチROM化する方式の方が主流になっていくと思います。
実際、現在も新型の赤石CPUを開発していますが、CRED V以来実際に二つのROMを搭載した赤石CPUは生まれていません。
その要因の一つに、実際に二つ搭載することによる大型化が原因だと思います。
疑似的にマルチROM化させても十分高速化につながり、しかも難易度が比較的低いため、今後もこちらを使っていくと思います。

では、最後まで読んでくれてありがとうございました!

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