Home

2019年
2020年

12月31日 ICF3-Zの互換性の問題と32bit仮想マシン

RISC-Vは命令セットアーキテクチャから、いろいろな実装が作れます。 しかし ICF3-Zは命令セットアーキテクチャが、 ほぼ実装であるため、オリジナルのZevios以外の実装は、あまり存在しないだろうと考えています。 ZeviosはApache License 2.0の予定なのでZeviosを派生させることを想定しています。 互換の問題が生じる可能性がありますが、ZeviosがICF3-Zの仕様と考えています。
Zeviosは、とても小さいコアで、非常にシンプルな作りなので、 問題を起こせる場所の総数も少ないだろうと思っています。 ICF3-Zをスーパースカラにすることもないと思われます。 8bit CPUをスーパースカラにして性能向上させるくらいなら高性能な ARMでいいような気がしています。
趣味かもしれないですがZeviosで動作する仮想マシンを作るのは面白いかもしれません。 仮想マシンで互換性の問題が解決できます。 既存のARMマイコンでも仮想マシンのエミュレータを作れば動作する。
ICF3-Zは8bit CPUですが、仮想マシンは32bitにできるかも。 仮想マシンのレジスタを16本とすると必要なメモリは128バイト。 データメモリより高速にアクセスできるスクラッチパッドが256バイトあるので、 思ったよりも高速な32bitマシンになるか??


12月20日 8bit CPU ICF3-Z、github公開

8bit CPU ICF3-Zを XilinxのFPGAに実装したverilogファイルをgithub にアップロードしました。これまで限定公開したバージョンとほどんど違いはありませんが、 不要なファイルを削除したので、これまでより読みやすくなっていると思います。 Xilinx依存な記述はないのでverilogが使えるシステムなら、使えると思います。 ICF3-Zのオリジナル実装をZeviosと命名しました。 名前の由来は、アーケード版ゲーム XEVIOUS(1983年)のデッドコピーXEVIOSの頭文字XをZにしたもの。 XEVIOUSはBASICマガジンに連載されるなど当時、大人気でした。 CPUは8bitのZ80が3個、使われているそうです。


12月15日 ICF3-Zのライセンスについて

8bit CPU ICF3-Z、お願いつきApache 2.0ライセンスというのを考えています。 ライセンスとしては完全なApache 2.0です。 そこに「できれば日本の税金を使ったプロジェクトでは利用しないでください」という、お願いをつけます。
準備期間として1ヶ月、様子をみて運用を開始します。


12月09日 ICF3-Zは32bit÷16bitできるのか?

8bit CPU ICF3-Z、 本当は、実際にプログラムして確かめるべきなのですが時間の都合で予想の話になります。 結論を先に言うと、除算器のないCPUの普通のプログラムよりは、 ICF3-Zのアーキテクチャによって高速に演算できるのではないだろうか。
ICF3-Zは演算レジスタとして4個の8bitレジスタ(A,B,C,D)を持っています。 1命令でA,B,Cのレジスタを1ビット左シフトしてAとDを比較してA≧Dなら AレジスタにA-Dの結果をセットして、キャリーをCレジスタの最下位ビットにセットすることができます。 これは16bit÷8bitの除算のためにあるのですが、強引に32bit÷16bitの演算のために使うとできるのかも。
できるという根拠は、ICF3(1999年)は1024bitの演算器で4096bit÷2048bit(厳密にはmod)の コードを実際に作って確認したからです。 もし詳細を知りたい方は、僕のブログ「IoTの原価を下げる暗号プロセッサICF3」にあります。
余談になりますが、僕が中学生のころ買ったZ80の本に16bit÷8bitのコードがありました。 以下は、その本の写真です。電波新聞社の創業者さんも現在(2019年)の社長さんも、 僕と同じ「平山」という姓みたいです。全然、関係ないのですが(^^;;


写真をマウスでクリックすると拡大されます


12月05日 命令の組み合わせを変更して24bit÷8bitを演算可能に

8bit CPU ICF3-Zは任意の値の16bit÷8bitを17サイクルで演算できますが、 命令の組み合わせを変更することで24bitの上位8bitが除数8bitよりも小さい場合は、 24bit÷8bitを17サイクルで演算できます。 従来の命令セットでは、 抽象化によってメリットを得ている半面、 ハードウェアの能力を十分に引き出すことができません。 ICF3-Zの命令セットは、抽象化のメリットを捨てることで、 ハードウェアの能力を、最大限引き出せています。


12月01日 ICF3-Zの利権を複数人で管理するとどうなる?

8bit CPU ICF3-Zですが、 正式なオープンソースとしてスタートした場合、運営をどうしていくのか、考えました。 現在、僕1人で管理していますが、リソースの提供と引き換えに管理者を迎え入れるとします。 そして競合他社の潜入2名が管理者として加わり3名で運営すると、 潜入2名がICF3-Zの実用化に対して反対して、ICF3-Zは失敗プロジェクトになる。
つまり僕1人による管理体制でなければ、ならないということを理解しました。
僕1人による管理体制を実現するため、CPUコアのみを管理することを考えています。 まだ考えている段階。つまりデバッグ機能などは、サードパーティによる後付け。 CPUにデバッグ機能を実装するための割込みがありますが、時間がなくて完璧にできることは 実証できていません。ただデバッグ機能が完璧である必要はなく、できるところまでで 実現するという方針にすれば、問題はないように思います。
参考までに、僕のソフトウェアの経験ですがWindowsのデバイス・ドライバを開発したり、 ICカード暗号ミドルウェアを実装したりと、実は経験が結構あるのです。
デバイス・ドライバのデバッグはRS-232Cのリバースケーブルを使って 別のパソコンにデバッグ情報を表示させるのですが、ドライバがバグでクラッシュすると、 クラッシュした地点よりも、かなり前までの情報までしか取得できず、苦労しました。
暗号ミドルは、カーネルモードではなく、ユーザーモードだから安全だと思っていると間違いで、 printf()関数で、可変パラメータの表示をさせると、何故か、そこで終了してしまうとか、 いろいろ経験しています。


11月25日 ICF3-Zの仮想マシン技術は新しいのか?

CPUのハード支援による仮想マシン技術は従来のCPUにもあって新しい技術ではないという意見がありました。

ICF3-Zの仮想マシン支援ハードは非常に少ないトランジスタ数で実装できていること。
製品出荷後のCPUにユーザーが自由に仮想マシンを作ることができること。

でしょうか。後者は、従来CPUでも、ユーザーに開発環境を公開すれば、可能かもしれない。 性能を考えるとマイクロアーキテクチャを公開しなければならない問題から、 ユーザーが自由に仮想マシンを作るというのは困難ではないだろうか。
ICF3-Zは、他のCPUとは設計方針が違うのです。 コンパイラやOS実装の利便性を考えず、 ハードウェア実装が極力シンプルで小さくなる範囲で、コンパイラやOS実装の利便性を考えるというもの。 そういった方針から生み出される特異なアーキテクチャになっているのです。 例えば、ICF3-Zの仮想マシンの命令コード長は15bit固定。 オペコード7bit+オペランド8bitです。仮想マシンの命令コードのオペランド(8bit)が、 そのまま通常の命令セットのオペランドになるように設計されています。 そしてICF3-Zの通常の命令セットは、一般のCPUと異なり、ハードの信号線の集合体となっているので、 仮想マシン支援ハードを含め非常に小さく実装できているのです。 (命令セットアーキテクチャの設計時に、最初から作りこまれている)
非常に少ないトランジスタ数でできているICF3-Zは、 他のCPUが実装できないような領域の用途でも動作します。


11月24日 ICF3-ZをICF3-Fのオマケにする案

ICF3-Fは、今、僕が最優先で推進しているSSLアクセラレータのプロジェクトです。 ICF3-Fの最初のバージョンはXilinxの小型のFPGAを考えています。 オマケでICF3-Zをつけるという案を思いつきました。 ライセンスが決まらなないままでも、僕が出すので、面倒な問題が一切なく、僕の作業だけで実現する。 そしてオマケという位置づけで、あまりサポートしない。これでICF3-Zの可能性を存続させることが、できるのかも。
必ずオマケをつけるという話ではなくて、そうすることもできるという話です。


11月22日 ICF3-Zに興味がある方

もし8bit CPU ICF3-Zに、ご興味を持っていただけた方があれば、 匿名でない方法で、お気軽にご連絡ください。その時、限定公開したVerilogファイルを希望であれば送信します。
注意!オープンソースのライセンスを、まだ良く決めていません。 ICF3(1999年)のオープンソースの件と、合わせて、僕に憑依している闇を一掃できればと考えています。 重たいかもしれませんが、どのみち、憑依されたままでは、ICF3-Zは、あまり成功は期待できないので。 みんなで考えれば、なんとかなるかもしれません。
他の8bit CPUと比較して、ICF3-Zは、かなり優れているように思います。 そしてトランジスタ数が少なくても動作するICF3-Zは、ARM、RISC-Vなどの 32bitでは実現できない領域を持っています。


11月16日 ICF3-Zの除算が高速だと言った件

日記11月14日で「除算器を持たない廉価な32bitCPUより10倍高速かもしれない。」と 言いました。オープンソースの小型なRISC-V(lowRISCのibex)で除算器を持ったものがあるので、 そういったものと比較すれば、10倍はいかないという意見があった。(ライセンスはApache License 2.0) ibexのドキュメントには除算は 37サイクルと書いてありました。 ICF3-Zの17サイクルと比較するには周波数がわからないといけないのですが、同じ周波数と仮定した場合、ICF3-Zが2倍以上高速。 RISC-Vは小型でも32bitなので面積(LUT数)は、ICF3-Zよりもかなり大きいことが予想され、 ICF3-Zの高速な除算が優位であることには、違いはないように思いました。
ところでibexが実際に製品化されたものってあるのだろうか。 実際、ibexを使って製品を作ると、どうなるんだろう。


11月15日 ICF3-ZのソフトCPUとしての用途

FPGAでICF3-ZのソフトCPUが便利なもの。 1つのプログラムで多数のI/O制御をするより、多数の独立したCPUを使ったほうが簡単な場合とか。 ICF3-Zは、割り込みを無効にしていれば、プログラムの命令列から、 実行サイクルが厳密に決まるのでI/O制御をし易い。 良くできたパイプラインのCPUを組み込み向けに改良した奴では、 逆にパイプラインのストールによってI/O制御では使いにくいこともあるのかも。 (軽量なRISC-Vに、そういったCPUもあった。)

XilinxのFPGA(XC7A35TICSG324-1L)にICF3-Zを実装 した場合、16bit÷8bitの除算が高速で400 LUT程度なので、 これまで実現ができなかった多数のCPUを使った高度な制御システムができるのかも。 FPGAによるICF3-Zが最適解になるのかは、わからないですけど。


11月15日 ICF3-Zのメモリ効率

半導体デバイスには詳しくないのですが新しい半導体デバイスの研究は、いろいろあるようです。 エネルギー効率10倍の半導体デバイスとか、本当にできれば、電池の持ちが数倍になるとか。 あまり関わると税金の無駄遣いを叫ばれるので、いいませんが。 そういった研究とは、まったく独立して、トランジスタ数の少ないCPUを作っておくことはできるのかも。 あれば、いち早く新デバイスを商用化できて、いいのかなぁくらいですが。
ICF3-Z はトランジスタ数を少なくすることに特化したCPUですが、メモリ効率が悪いため、 トータルでのメリットが少ないと思う人もあるようです。 メモリ効率の悪さは圧縮命令を駆使することで改善できると考えていますが、さらに言えば、
例えば新デバイスでスイッチとメモリのコスト比を考えて、相対的にスイッチのコストが 大きい場合はメモリ効率が悪いことが気にならなくなる。 特にROMのコストが小さいことは、考えられます。
日記 11月14日日記 11月15日のようなことを考えてみることは、 できるかもと思いますが、僕が気づいている問題に、マイコン少年は半導体デバイスが上から目線なのが嫌みたいな話はあるようです。


11月15日 次世代MSXのファーム書換えでICF3-Zに変更でいいのか

次世代MSX のハードはFPGAに実装するみたいだから、Z80互換なCPUをICF3-Zに書き換えれば、 いいということに気づいた。FPGAのコンフィグを複数持てば、 Z80互換なCPUとICF3-Zを電源を入れるときに切り替えることができる。


11月14日 8bitパソコン時代のMSXに次世代の構想が

こちらです→ 「 次世代MSXについて現在明かされていること」 僕は8bitパソコン時代はSHARP MZ-2000だったのでMSXについて詳しくないのですが、 次世代MSXが、どのようなものかちょっと読んで見ました。過去の互換性を、あまり考えていないような感じがしています。 つまり新しい時代の8bitパソコンの共通規格みたいな。 CPUはR800というやつらしくZ80互換なようです。Z80の命令セットの問題を考えるなら、 オープンソースの8bit CPUにすればいいのにと。
僕のICF3-Zは、Z80にない乗算、除算命令らしきものがあるので高速です。
仮想マシンの加速支援機構つきの新型8bit CPU!?
特にこのクラスのCPUとしては除算が高速で、同じ周波数のCPUなら、 除算器を持たない廉価な32bitCPUより10倍高速かもしれない。 16bit÷8bitの演算が17サイクルなのでADCで12bitのデータをサンプルして制御するような目的にはいいかなと。
ただICF3-Zは、トランジスタ数を少なくすることに全てをかけたアーキテクチャなので、 一般の人にはハードルが高く、難しいかもしれません。 独自の仮想マシンで、非C言語を動作させるようにすれば、いいのですが。
ICF3-Zは、従来のCPUではトランジスタ数が多すぎて、実現できないような用途に最適です。 例えば新型の半導体デバイスが開発され、トランジスタ数の多いCPUが作れない場合に、このCPUは役に立つように思います。 税金プロジェクトはNGですが。


暗号プロセッサ OpenICF3