はじめに
2020年1月15日に8bit CPU ICF3-Zを制限の緩いオープンソースのライセンスで公開しました。
この記事はQrunchに2020年2月1日に投稿したものと同一です。
CPUのようなハードウェアもオープンソースな時代になってきました。CPUのオープンソースで最も有名なのはRISC-Vです。RISC-Vを見てみるとオープンソースによるメリットを見つけることができます。RISC-Vは、とても広い範囲をカバーする32bit(64bit)のCPUですが低性能な領域でも万能というわけではないように思います。
例えば通信系のハードウェアでは8bit単位で処理するものもあり32bitが無駄になる場合もあります。無駄になるだけなら問題はありませんが消費電力で不利です。
一方、8bit CPUは除算命令がなかったり、除算命令があっても8bit÷8bitで、使える範囲が狭いということがありました。8bit CPUのオープンソースも既に複数、存在していますが、高性能な除算を持ったものは、あまりないように思います。ICF3-Zはオープンソースで、少ないトランジスタ数であるにもかかわらず高速な除算が可能です。
除算性能の比較
実際に比較しないと、わからない人が多いと思っています。 ICF3-ZのZeviosを小型のRISC-VコアであるlowRISCのibexと比較してみました。 ICF3-ZのZeviosは8bit CPUですが、lowRISCのibexは除算器を持った32bit CPUです。
lowRISCのWebページにXilinxのローエンドのFPGA(7シリーズ)に実装した場合の周波数が50MHz、面積2500LUTと書かれてありました。 除算のサイクル数は別のページに37サイクルと記述されています。
Zeviosは同じくXilinxのローエンドのFPGA(Artix-7)に実装した場合、周波数は150MHzになります。つまりibexの3倍の周波数で動作します。ibexが1命令を実行するのにZeviosは3命令を実行できる。
除算 | ibex RISC-V [サイクル] |
Zevios ICF3-Z [サイクル] |
ibexを1 とした 倍率 |
周波数を 考慮した 倍率 |
---|---|---|---|---|
16bit÷8bit | 37 | 20 | 1.85 | 5.55 |
24bit÷8bit 条件付き |
37 | 21 | 1.76 | 5.29 |
32bit÷8bit | 37 | 55 | 0.67 | 2.02 |
32bit÷16bit | 37 | 約350 | 0.11 | 0.32 |
0除算などのチェックや演算レジスタへのロード、ストアの補正として3~6サイクル追加しています。
ZeviosはXilinxのFPGA XC7A35TICSG324-1Lに実装した場合です。
まとめ
ibexは2500LUTの面積ですが、Zeviosは400LUTの面積です。 外部I/OなどZeviosに不足しているものがあるかもしれませんが5分の一の面積で5倍以上の性能が出ることは、考えるべき点ではないでしょうか。16bit÷8bitは32bit CPUであるRISC-Vに不利ということはありますが、制御など32bitの精度が必ずしも必要ない場合もあるように思います。
ICF3-Zは海外のパクリな構造ではなく僕の考えた独自アーキテクチャです。疑似パイプラインによって高周波数で動作することも、この圧倒的な面積当たりの性能(25倍)に貢献しています。
このオープンソースな8bit CPU ICF3-Zが、期待を含めれば2020年代に大きく産業に貢献していくかもしれません。
参考リンク
8bit CPU ICF3-ZのZeviosの除算性能のメモ