2020-01-16に投稿

8bit CPU ICF3-ZのZeviosの除算性能のメモ

はじめに

8bit CPU ICF3-Zのオリジナルのコア、Zeviosの除算性能について解説します。Zeviosは2020年1月15日に緩いオープンソースライセンスであるApache License 2.0で公開されました。FPGAに実装できるverilogファイルがあるので、いろいろ性能を測定することができます。

Zeviosの除算器について

正しくは除算器というものはなくて8bitの加算器を効率的に動作させることで1サイクルに1bitの商を演算するアーキテクチャです。除算器の性能としては低いのですが、マイコン向けのCPUでは除算器がないものも多く、小さい面積なのに高速に除算ができるものになっています。(除算器としての面積がほとんどない) その除算向けのアーキテクチャを使って8bitより大きい除算をソフトウェアで実装できます。一般の8bit CPUによる実装よりも高速に演算できます。

16bit÷8bitの除算

ICF3-Zでは加算器を使って効率的に演算できるようになっています。17サイクルで演算ができます。

24bit÷8bitの除算

ICF3-Zでは加算器を使って効率的に演算できるようになっています。17サイクルで演算ができます。
ただし被除数の最上位8bitが除数8bitよりも小さい場合に限ります。

32bit÷8bitの除算

16bit÷8bitの除算方法を応用したサンプルコードによる性能は50サイクルです。サンプルコードはgithubで公開されています。
sim2フォルダのpmem.asmzが32bit÷8bitのコードです。

32bit÷16bitの除算

ICF3-Zのアーキテクチャを駆使したサンプルコードによる性能は約350サイクルです。サンプルコードはgithubで公開されています。
sim1フォルダのpmem.asmzが32bit÷16bitのコードです。
ソフトウェアの実装によって性能は違ってくると思われます。もっと高速な方法もあるかもしれません。
除数が8bit × 8bitの因数に分解できるものなら32bit ÷ 8bitを2回演算したほうが高速です。

32bit÷15bitを230サイクルで演算するコードも作ったのですが、まだ十分に検証できていないため、今回は見送りました。

おわりに

ICF3-Z Zeviosは、とても少ないトランジスタ数(面積)で実装できるのに高速です。16bit÷8bit、24bit÷8bitの除算が有効につかえるアプリでは低消費電力が期待できるように思われます。

Originally published at qiita.com
ツイッターでシェア
みんなに共有、忘れないようにメモ

spinlock

8bit CPU WZetaの開発者です。もう一つ8bit CPU ICF3-Zをやっています。ICF3-Zは疑似パイプラインで高周波数動作。小型で高速を両立させたCPU。16bit÷8bit(条件つきで24bit÷8bit)の除算の高速性を活かして低周波数で動作させての低消費電力。https://icf3z.idletime.tokyo/

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント