多言語のコンパイラが作り易い機能を持つオープンソースのCPU
この8bit CPU ICF3-Zはコンパイラが作り易いように仮想マシンを作ることでコンパイラが作り易い。8bit CPUですが32bitの仮想マシンを作れば32bit CPUのようにもなります。OracleのGraalVMのような汎用性のある仮想マシンを1つ作れば多言語のコンパイラを作ることが比較的容易になると思われます。ただしGraalVMのような仮想マシンは8bit CPUのような非力なCPUではスペックが全く足りません。そこで非力なCPUにも仮想マシン的な考え方を導入できるようにしたのがICF3-Zの仮想マシン機能です。
以下は2020年6月12日のプレスリリースを、そのまま転記
仮想マシンについては、こちらのブログ「仮想マシンの加速支援機構つきの新型8bit CPU」 (2019/04/16)
ICF3-Zプロジェクトが制限の緩いライセンスのオープンソースのCPUをGitHubに公開
ICF3-Zプロジェクトは、良く売れた大型コンピュータのプロセッサの元開発者による 画期的な発想のCPU「ICF3-Z」をオープンソースで公開しました。 2020年1月15日にテスト公開後、現在まで安定しているためこの度、本格的に発表いたします。
要約
ICF3-Zは1999年に製品化された大型コンピュータの暗号プロセッサから転用して作られたCPUです。命令セットアーキテクチャの仕様と公式実装であるZeviosのVerilogファイルをGitHubに公開。FPGAで実際に動作させてみることができます。暗号プロセッサからの転用なので他のCPUとは技術的に独立していて商用で使いやすい。除算の面積性能が非常に高いCPUであるため低消費電力でコストパフォーマンスが高い。32bit CPUでは非効率になる用途向けの8bit CPUとして家電製品や制御分野での利用が期待される。ICF3-Zの著作権者である平山直紀(Naoki Hirayama)が2020年1月15日に公開、現在まで安定しているため今回、初プレスリリースとなりました。
開発の経緯
ICF3-Zの著作権者である平山直紀(Naoki Hirayama)が1999年に世界一高速なRSA暗号プロセッサ(ICF3)を開発。米国の輸出規制のためIBMが自社の大型コンピュータの暗号装置を海外に販売することが厳しかったためか、この暗号プロセッサを搭載した日立の互換機(国内での名称はMP5600)が欧州などに良く売れました。RSA暗号プロセッサは専用演算器を駆動するために設計された軽量なプロセッサで、要求仕様がCPUとは異なるため平山直紀が1人で1から設計をしたもの。平山直紀が2005年に退職するときに打合せをしてICF3を競合他社に持っていけることを日立製作所と約束。2017年に、この暗号プロセッサICF3をベースとして32bit CPUの開発を平山直紀が個人で始めたが、他の32bit CPUの強敵を避け8bit CPUとして完成させ、2019年にインターネット上にオープンソースとして公開。制限の緩いオープンソースのApache License 2.0として2020年1月15日に公開をした。なお暗号専用演算器はついていないため普通の8bit CPUと同じです。
このオープンソースのCPUのメリット
家電や自動車など、産業で使われる廉価なCPUでは除算器のないものが多くあります。除算器のないCPUでは除算はソフトウェアで行いますが性能は、とても遅い。そしてハードウェアによる除算器で除算を高速化するのは難しく高度なアルゴリズムを使う必要があります。このため除算器を搭載したCPUは価格が高い傾向にあります。このICF3-Z CPUは1999年のICF3をベースに作られています。ICF3は加算器を改造した演算器で四則演算ができました。加算器を改造した一体型の除算器なので性能は高度なアルゴリズムを実装する除算器に及ばないものの、除算器としての面積がほぼゼロで、除算の面積性能が非常に高い8bit CPUとなっています。ICF3-Zは除算器のない8bit CPUと比較すれば数十倍高速であることはもちろんですが、除算器のある32bit CPUと比較しても最大5倍(面積性能25倍)高速という驚異的な結果も出ています(ICF3-Z公式サイトのトップページにデータ有)。このような結果になるのは用途によっては32bit CPUの32bitが無駄になるためICF3-Zのような乗除算が可能な高性能な8bit CPUが圧倒的に有利になるということを表しています。このICF3-Zを平山直紀(Naoki Hirayama)が設計して著作権を所有しているためオープンソースとして公開が可能になっています。この安価な除算器により、これまでより周波数を低くすることができるので、安価で低消費電力な家電などを作るのに役立ちます。
ただし普通のCPUの命令セットとはかなり違うためアプリケーション開発の初期コストが大きく難しいといった問題はあります。自分の命令セットを作れる機能もあり8bit CPUでありながら32bit CPUの命令セットを自作することも可能。このためC言語コンパイラやスクリプト言語など移植が容易。アプリケーション開発が難しいデメリットを解決します。
このICF3-Zは他のCPUが比較的不得手なPWM制御などのリアルタイム処理が得意なのが特長です。自動運転がこれから立ち上がろうとしていますが信頼性が必要なシステムを開発する方法論として1つの高性能CPUよりFPGAに小さいCPUを複数搭載するというものがあります。ICF3-Zは除算器を持ちながら、小さくてPWM制御やリアルタイム処理が得意なため、前述の方法論を実装するのに向いています。
家電などの製品では部品として使っていたCPUの生産が中止になると大きな損害が出る場合がありますが、ICF3-Zは制限の緩いオープンソースのライセンスなので困りません。オープンソースの32bit CPUはRISC-Vがあります。ICF3-Zは8bit CPUなのでRISC-Vでは非効率な用途で活躍します。
また暗号プロセッサからの転用で独自なアーキテクチャであるためICF3-Zを使った製品を作っても設計については他に寄付する必要がなく商用で使いやすい。
ICF3-Zコアは完成しているものの実際に製品に用いるためには開発環境などの開発が必要ですが、このCPUに日本の税金を投入させない方針を公式サイトで明確にしているため商用で使いやすいこともメリット。制限の緩いオープンソースのライセンスなので派生して税金が投入されてしまう場合もあります。このため意向が派生にも伝わるようにオープンソースのライセンスの仕組みであるNOTICEに記述しています。NOTICEでは法的な効力はないので注意深く監視する必要はありますが。
可能な限り少ないトランジス数であることが必要な用途など32bit CPUではできないことが、このICF3-Zではできることも重要な点です。乗除算ができて、ここまで少ないトランジスタ数で実現できているものは、あまりありません。
ソースコードと設計図
ICF3-ZはVerilog言語のソースコード約1000行で作られています。わかりやすくて詳細な設計図がついているため不信な実装がないかなどの検証が極めて短時間に行えます。割込みの実装が単純なので安心できます。
もう少し詳しく
例えばGoogleとMicrochipが開発したIoTボード AVR-IoT WGの8bit CPU(AVR)には除算器はありません。 有名なIntelの8bit CPUの8051の除算命令は8bit÷8bitであるため用途が限定されます。 ICF3-Zは16bit÷8bit(24bit÷8bit)が高速に演算できるためより多くの用途で利用できます。
ICF3-Zが低消費電力である理由は、例えば絶えずセンサーからデータを取り込んで 除算のある計算式でデータを加工して、サーバに送信したり、出力制御するような用途では、 除算器のない安いCPUでは周波数を高くする必要があります。 そして除算器つきのCPUを使えば原価が上がる。 ICF3-Zは、昔、暗号プロセッサを開発したときに私が設計した簡易な除算器 (加算器を四則演算器にした一体型、水平コード含む、軽量)であるため、 安価で低消費電力になるというもの。
ユーザが命令を定義できるといった他のCPUではあまり見かけない機能があります。 これが他の8bit CPUとは一線を画しています。メモリ効率を上げるために作られましたが 使い方次第では互換性維持など、いろいろ使えます。 これに興味を持つ研究者、開発者が多いようです。
2002年にSHARPがガラスの上にCPUを作っています。
https://av.watch.impress.co.jp/docs/20021022/sharp.htm
ガラスの上にCPUを作るにはトランジスタ数が少ないほうがコスト的なメリットが大きいと言えます。 トランジスタ数を可能な限り少なくするという方針で設計されたICF3-Zは、最適なCPUと言えます。 ICF3-Zは、新しいデバイスの早期商用化を実現するため、絶対に必要なCPUとなるかもしれません。
2019年にMITがカーボンナノチューブを使った従来の10倍のエネルギー効率の新デバイスを発表しました。
https://www.electronicsweekly.com/news/research-news/mits-carbon-nanotube-risc-v-cpu-2019-09/
この新デバイスでオープンソースのCPU RISC-Vが実装されましたが、恐らくトランジスタ数の問題で32bitレジスタ16本のはずが、 16bitレジスタ4本になっているのです。ICF3-Zであれば、完全実装できて「既存のアプリが動作します」 というニュースになっていたことでしょう。
Webサイト
ICF3-Z公式サイト https://icf3z.idletime.tokyo/
GitHub https://github.com/icf3/zevios
本件に関する問い合わせ先
Twitter (https://twitter.com/__canal)
misskey.io (https://misskey.io/@spinlock)
参考リンク
8bit CPU ICF3-ZのZeviosの除算性能のメモ
Discussion