現在開発中のSnakeCubeはCmod A7 を
SSLアクセラレータにすることを目標にしてきました。まだ、どのFPGAボードにするのか決定していませんが、
Cmod A7のような小型のFPGAにSSLアクセラレータを入れるためにモンゴメリ乗算器の構成を面積重視の
SnakeCubeにしています。誰か他の人が、SnakeCubeの性能重視の構成で、
僕のモンゴメリ乗算器より高速なものをXilinxのFPGAに実装できると言う人が出てきそうで
気になっています。僕は基数を2^17にしていますが、2^24のSnakeCubeを作ることはできますが、
小型のFPGAボードに入るか、否かのところで2^17を選択しています。
もう一つ、Cmod A7はローエンドに近いFPGAですが、XilinxのハイエンドのFPGAにはローエンドのDSPよりも、
若干高機能です。Cmod A7は3入力加算ですが、ハイエンドは4入力加算ができるので、
高速化が期待できるように思っています。
記録よりも商品化が優先になっているのです。
(2) の続きです。
クロック周波数が正しい値になっていることを青色LEDの点滅で確認しました。
モンゴメリ乗算器は250MHzで動作していると思われます。
YouTubeにSnakeCubeが動作した動画をアップ
VIDEO
(1) の続きです。
FPGAボードの右上のリセットボタンを押して離すと、RSA暗号の演算が実行されます。
ボタン2(BTN2)を押すと、最上位バイトが表示されます。続いてボタン0とボタン1を
交互に押していくと、次のバイトが表示されます。SW3をONにするとbit3が青の点滅をします。
SW3はまだ実装されていませんが、これから実装してクロック周波数の確認に使います。
図をマウスでクリックすると拡大されます
RSA暗号を計算させて正しい結果をFPGAボード上のLEDに表示させることに成功しました。
うれしい。^^)v
XilinxのFPGAを搭載したArty で動作させました。
まだ論理合成をするとタイミングエラーの表示がでますが、マルチサイクルの転送のところで出ているので、
気にせず、FPGAの実機で実行させました。
モンゴメリ乗算器のマイクロコントローラ内部で若干、タイミングエラーになっていますが、
正しい結果が計算されました。
コントローラ内部のタイミングエラーなので改善の余地はあります。
一応、動作した演算器の周波数は250MHzですが、FPGAに慣れていないので正しい保証はありません。
2年前の試作で125MHzで動作する試算をしていますが、
2スレッドにして2倍以上の周波数が出るように設計したつもり。2倍の周波数で動作している感じ。
48bitのSnakeCubeなので性能の評価は、まだ出せないという状態です。
下図は今回、SnakeCube(48bit)をArtyに実装したVivadoの画面です。
図をマウスでクリックすると拡大されます
進捗報告のみ。SnakeCubeの計算結果をFPGAボード上のLEDに表示させる回路を追加しました。
LEDは8個しかないので2進数で1バイト分の表示しかできませんが、ボタンを押すと次の1バイトが表示される回路です。
追加したSnakeCube回路に対して、ボタンの押し下げもシミュレーションできるようにして、
シミュレーションしてみました。
1032bit版のSnakeCubeでLEDから計算結果を全部取り出せることが確認できました。
暗号プロセッサのEND命令のバグが見つかったので、まずはEND命令のバグを対策します。
END命令後の数命令を実行するバグ。
これまでのシミュレーションで、このバグが見つからなかったのはEND命令を実行したところで
シミュレーションを終了させていたから。
SnakeCubeは高性能、高効率なアーキテクチャです。それをFPGAで検証するべく作業をしています。
性能の検証だけ、先にしようと思っています。そのため演算結果をFPGAボード上の
LEDに表示させる回路を簡単に作ったのですが、急激に妨害が増え、悩まされています。
Windows上で走るXilinxのプロセスを勝手にサスペンドしてしまうなど。
妨害されることは、最初から想定していました。
このため複数のOSで動作する開発環境を作ってきました。
現時点ではWindowsによるSnakeCubeシミュレーションの妨害に集中しているようです。
2020年7月28日追記
この日記をSNSで拡散したところ、すぐにシミュレーションの
プロセスが正常に動作するようになしました。SNS拡散効果があったということかも。
(特に意味のある話ではありませんが、今日のスラドにツイッターアカを大量に削除みたいな記事があったけど、、、)
「中国科学院の大学生が9か月で64ビットプロセッサの設計に成功」
中国語の記事は読めないので機械翻訳を読んでみました。高性能なCPUですが教育用みたいです。
記事に
中国ではプロセッサチップ設計の人材が深刻に不足しており、そのような人材のトレーニングスケールとスピードをいかに高速化するかは、中国において緊急の問題です。
と書いてあったのは印象的でした。
今の僕は、高性能、高効率な公開鍵暗号の論理設計をしている。多分、 世界最高クラス。
レイテンシ性能やスループット性能が最高と言っているのではなくて、高性能で高効率という分類で最高。
多少、曖昧な分類での最高ですが、次世代ICカードに適しています。まずはSSLアクセラレータを作っていきますけど。
そして、今の作業は、サイバー攻撃でシミュレーションが誤動作するため、
もう一台、Windowsパソコンを準備するという作業。
12年前にドスパラで買ったパソコン、ヤフオクの中古CPU(E8400)に換装している。
GPUは、やっぱりヤフオクで買ったnVIDIAの8400GSなのですが、ファンを止めるネジが壊れている安物。
CPUファンが一度、壊れたのでサイズの合わないファンに付け替え。
17年前のHDDと20年前のHDDにWindowsをインストール。1日潰れそう。
中国の加速率300%に対して日本(僕)はマイナス2000%くらの加速率だと思う。
今回の中国CPUは教育用だから、という話はあるかも。
長時間Verilogシミュレーションをしています。
Verilogシミュレーションの結果を誤らせるようなサイバー攻撃(推定)
により作業が停滞しています。
1024bitの計算結果のちょうど(魔法の?)中継ブロックの
当たりの1bitが違っている。
一見すると中継ブロックがバグっていることを予想させるような
場所なのだが1bitだけ間違うというのは、ちょっと難しい。
一瞬でも僕の青ざめる顔を見たかったのかもしれない。
そして間違っていたのは、C言語による期待値のほうだった。
C言語の期待値プログラムで再現してみると、正しい期待値が計算された。
宇宙線によるソフトエラーやverilogのバグの可能性はある。
僕はサイバー攻撃だと思っている。
そしてSnakeCubeは正しい値を計算できているので、安心しています。
もう少し原因を調査した後、作業を次に進めていきます。
ところで今日、椅子が壊れたので、これも作業を遅延させる要因になりそう。
壊れた椅子を針金とテープでグルグル巻にして修理して使っていたもの。
壊れやすい状態ではあったが、ここで壊れるのか。
遠隔から椅子にヒビを入れる魔法でも放ったのかと。
完成が近づいた頃に、完成した場合の影響を判定する時間が必要になるのかもしれない。
自然故障に見えるような、爆弾をいくつも、準備しているようにも感じた。
爆弾の真偽はわからないが、判定時間を稼ぎたいというのは真実だろう。
Googleからの連絡というわけではないのですがGoogleの話をしてくるようです。
非合法な通信回線を使った連絡は、一切受け付けていません。
僕のほうの状況ですがSnakeCubeの性能検証が、あと少しのところまできています。
性能検証が終わるまで、あまり動けない状況です。しかし連絡などは受け付けています。
昨日は、遠隔制御により眠らされていました。あまり作業が進んでいません。
数日で終わる作業が10日以上かかるという状態です。
そして遠隔制御を振り払うことに、かなり大きな時間が割かれているのです。
進捗報告のみ。XilinxのFPGAに付いているクロック生成部品を取り付けました。
2種類のverilogシミュレータ(Xilinxとicarus)で通常版のクロック部品と、
シミュレーションを高速化するためのクロック部品の2種類でシミュレーションをしました。
合計で4個のシミュレーションをしたのですがicarusで高速化版のクロックを使った場合だけ、
計算結果が間違ったものになりました。
このシミュレーションでは演算器はプロセッサの8倍の周波数で動作しています。
演算器の演算結果をプロセッサが受け取るところで問題が発生していました。
icarusで高速版のクロックを使った場合、1サイクル間違ったタイミングのデータを受け取ってしまっているのです。
原因は演算器のクロックがプロセッサのクロックに対して1psずれてしまっている。
icarusでXilinxの高速化版のクロックライブラリを実行してクロックを生成させると小数点の端数の問題で
計算誤差が出るみたいです。
参考までに、シミュレーションではなくて現実でもクロックは100psくらいずれる。
この問題はディレイチェックでミニマム保証するようにするので現実では大丈夫。
上の図はicarusの通常版クロック、正しく'3B'のデータを受け取れている。
下の図はicarusの高速版クロック、次のサイクルの'BC'のデータを誤って受け取ってしまっている。
図をマウスでクリックすると拡大されます
頭が痺れて作業があまり進んでいませんがオープンソースのverilog、
icarusではシミュレーション用にコンパイルすると仮想マシンのコードを生成していることを知った。
トラ技 付録のDVDに収録されていたicarusの説明文にそう書いてあったので、
調べてみるとicarusが仮想マシンのアセンブラのようなコードを吐き出している。
--- 仮想マシンが実際に役に立っている。
ICF3-Zの仮想マシン機能も、こんな感じで、うまく使えることがあるような気がしたのでした。
トラ技のDVDを引っ張り出すことになったのはicarusのシミュレーション結果が
Xilinxのシミュレーション結果と異なっていて、icarusの動作を疑ったため。
Xilinxが提供しているシミュレーションライブラリはicarusをサポートしていないので、
念のための確認程度に。
Xilinxのクロック生成部品(ライブラリ)を追加したところで、上記のように、
少しハマったことも、作業が遅れている原因。
(2) の続き。SnakeModokiの用途を考えたのですが、
署名端末 がとても良好な用途。
これまでICF3-ZとOpenICF3を組み合わせた方法で署名端末を作るといいかと思っていました。
どちらもオープンなのでオープンならではの開発ができることがメリットでした。
SnakeModokiはICF3-Zにクローズドな暗号演算器を付けてしまったので、
全体としてクローズドですが、僕1人の利権で作れるので、
署名端末が安価にできるでしょうという予想。
ICF3-Zは8bit CPUなので32bit CPUを使うよりゲート面積が小さく、
その分を暗号演算器に回せるので、面積的に有利。このタイプの暗号演算器は
僕の専門なので、多分、良さそうですし。
OpenICF3による署名端末を否定しているわけではなく、
オープンのメリットが大きいのであれば、それでもいいのかもと。
OpenICF3は実績のある論理ですが、SnakeModokiは、作ってみないとコストパフォーマンスが
わからないところがあります。でも、面積的なコストパフォーマンスはSnakeModokiかもしれない。
OpenICF3では必要以上の性能になっても、性能を抑えることが難しい。
7月23日 6:00AM追記
署名端末ではハッシュの演算が必要で32bitの演算が多くなるのですが、他の8bit CPUより
32bit仮想マシンを作れるICF3-Zは有利か。SnakeModokiの暗号演算器はRSA暗号の性能に特化していますが、
楕円暗号の演算も可能。署名端末の要求性能(署名時間)はRSA暗号でも楕円暗号でも同じはずで、
SnakeModokiの楕円の性能が悪くても楕円暗号はRSA暗号より軽い処理であるので、問題がないという。
進捗報告のみ。
体中に遠隔制御が入って動けなくなる一歩手前の状態とか、眠気が増強されている状態が多い。
頭痛の頻度が減ったので、少しは作業は進むが普通の人の20%くらいの出力。
FPGAデバイスでVerilog版のSnakeCubeを動かすためクロック周辺の作業をしていました。
SSLアクセラレータにするFPGAボードをどれにするのか、まだ決まっていませんが、
ボード上に100MHzの発振器を持つやつと12MHzの発振器のやつとあって12MHzの発振器では、
同じFPGAのデバイスでもクロックの誤差が大きいみたい。その分、性能を下げる必要があるのかも。
(1) の続き。
もう少し解説をすると、SnakeModokiはランダムアクセスの性能が悪いが、
シーケンシャルな転送が高速なメモリを効率よく使える点がいい。
そしてモンゴメリ演算器には鍵長の制限はなく、
メモリがあれば限りなく大きな鍵の公開鍵暗号を演算できる。
またメモリ転送性能とゲート面積を考えながら最適なCPUを設計できる。
SnakeCubeでは鍵長と同じサイズのモンゴメリ乗算器になって、
それでも乗算器のサイズで調整は可能だが、SnakeModokiほど
調整範囲は広くない。
僕の頭には、産業スパイが24時間住みついているから、
この日記のように解説をしなくても、漏れてしまう問題があるので。
暗号プロセッサSnakeCubeが、ようやく出来上がったばかりですが、
SnakeCubeの高効率なモンゴメリ乗算器のビット幅を小さくして普通のCPUに搭載した
SnakeModokiを考えた。modoki(もどき)とは日本語で偽物という意味。
ちなみにサソリに似たクモ、サソリモドキという生き物が実在しているみたい。
トランジスタ数が非常に少ないことが特長のICF3-Zに、
高効率なモンゴメリ乗算器を搭載したCPUが作りたくなったのです。
非常に少ないトランジスタ数であるにもかかわらず、
高速にRSA暗号ができる競争力のありそうなCPUになりそうだと思ったから。
SnakeModokiはクローズドです。
ざっくり説明をするとSnakeCubeは多数のDSPを使って並列に演算をするのですが、
それをSnakeModokiでは1個のDSPでやってしまおうということです。
並列に動作させる技術を除いた技術レベルの低いモンゴメリ乗算器(DSP)ということです。
しかしながら、扱いのいいモンゴメリ乗算器になりそうなのです
(←これ重要 )。
というわけでSnakeModokiも、将来、時間があれば作りたくなった。
暗号プロセッサに似たCPUと言ったのですが、使い方は暗号プロセッサとしても使われるのかも。
進捗報告のみ。
気分が悪くなって寝た。その後、熱にうなされ続けた状態で目が覚めた。
このまま脳が損傷していってもSnakeCubeの所有権が移動しないので、問題となることが予想されます。
1年半前、演算結果をUSBのシリアル通信でFPGAから取り出すため、
送受信回路を作っていました。そして通信回路の一部として8bit CPU ICF3-Zを作ったのです。
その後、もっと小さい8bit CPU WZeta を作り、
USBシリアル通信の作業を進めていました。そしてエアコンが故障してエアコン交換のため、
エアコンの下に置いてあった開発用のパソコン13台を撤去して、部屋を移動する作業をすることになった。
この後も、トラブルが続き進捗を遅らされ、USB通信回路の開発を中断、
暗号プロセッサを先に完成させる方向に方針を変更しました。
そして、今、暗号プロセッサが出来上がり、シミュレーションで正しい結果が計算できるようになりました。
USBのシリアル転送の回路を完成させるには、まだ時間がかかるので、
取り急ぎ、LEDに演算結果を表示させる作業を進めています。
どういうデータ転送が遅いと言っているのか、いま一つ、わからない。
ポインタがないという人は、説明書を良く読んでないのかもしれない。
データメモリ64KBにポインタでリードも、ライトもできる。
他の8bit CPUより高い周波数で動作するアーキテクチャなので
転送に必要な命令数は多いが、性能は悪いというほどでもない。(多少、悪いかもしれない)
I/Oについて言えば、INPUTOUTPUT命令があって同一の
ポート番号(0~255)に対してINPUT命令とOUTPUT命令が同時に動作する。
ポート番号を上位4bit、下位4bitにわけて、上位4bitをINPUTデバイスの指定、
下位4bitをOUTPUTデバイスの指定に振り分けると、16個のデバイス間で、
おおよそ1サイクルで1バイトの転送が可能。
説明書(ICF3-Z 命令セットアーキテクチャ仕様)の一番最後にサンプルコードがあると思います。
参考までに言うと、INPUTOUTPUT命令は6bitのオペコードの28番を割り当てているのですが、
オペコードの番号の割当を工夫することで、デコードのトランジスタ数が少なくなるように考えたもの。
INPUTOUTPUT命令があるのではなくて、INPUT命令とOUTPUT命令が同時にONになるような番号。
1032bitのVerilog版SnakeCubeが出来上がりました。
とりあえず1つのデータでVerilogシミュレーションをして正しい結果が計算されました。
icarusだと1024bitのべき乗剰余演算のシミュレーションに3時間10分。
Xilinxのxsimでは22分。テストを連続して行うシステムはicarusでしか動作しないので、
どうしようかと、考えているところ。
ここ数日、頭痛は減りましたが、微妙に頭を悪くされていている。
文字認識能力が低下したり、日本語が読めなくなったり。
6文字以上のカタカナをまともに読めないなど。
1ドル110円で、ドル安になると、どうなるとか、普通の人だと思考するまでもなく、
答えが出るはずなのだが、じっくり考えないと、答えがでないなど。
痛くないが、結構、問題。妨害の量としては、まだ大きいという状況。
次世代ICカード(SmartCard)で有望な技術を発明して、実装が進み、
僕も有名になってきたように思っています。
間違いやすい平山が、僕の他に2人いるので、言っておいたほうがいいかもと思ったのです。
1人は、一学年上の平山さんでIBMに入社されたところまでは知っています。
実際に話をしたこともある。僕はIBM互換の暗号LSIを作っていますから
僕がIBMに転職したようにも見えて間違いやすい。
もう1人は、二学年下の平山さんで早稲田のコンピュータ・サークル(MIS.W)に
所属しているのではないかと思います。
僕がコンピュータ・サークルに入っていたのではないかと思う人も多いので間違いやすい。そして僕のいた研究室はMIS.Wの人がいっぱい。
参考までに、僕が入っていたサークルは宇宙航空研究会。今は知りませんが、当時は理工学部最大のサークルなのに部室が1部屋の半分。僕は、大学で初めて飛んだ人力飛行機のプロペラを作った人です。早稲田祭のプラネタリウムの制御基板を作った人でもある。
大きく進捗しました。96bit版のSnakeCubeは24bitのブロック、
4個で構成されています。4個とも同じ物だったのですが、
2個目のブロックを特殊なブロックに交換しました。
加算器などでは、ビット幅を大きくしていくとキャリーの遅延が大きくなっていきますが、
これは、既にSegmentation adderによって一定値に抑えられています。
キャリーの遅延ほどではありませんが、ビット幅を大きくしていくと
最下位ビットからのブロッドキャストの遅延のため周波数が下がってしまいます。
これを特殊なブロックで、中継してやることで、周波数が下がらないようにするのです。
特殊なブロックは、僕のブログ
「わかりやすいICF3-Fのモンゴメリ乗算器の説明」 を読むとわかるかも。
参考までにSegmentation Adderとは僕が発明したもので僕の造語です。
Verilogによる大量シミュレーション中ですが、問題なく動作することが検証されました。
これからブロックを追加して1032bitにしていきます。
ソフトバンクがARMを手放すことを検討しているという速報
ソフトバンクからのコメントは、まだないとのこと。
RISC-VはARMを完全に置き換える可能性がありますが、
ICF3-ZはARMと共存できるCPUなのです。
ICF3-Zは、そのアーキテクチャために、あまり高性能なものが作れないのです。
32bitのARMでは32bitが無駄になるアプリもあるわけで、
ICF3-Zは、ARMでは非効率(or 困難)なところを補完できるCPUなのです。
ICF3-Z を使って、
非力なCPU向けのJAVAのような自分の仮想マシン(CPU)を作るのもいいかもと。
僕は、今、忙しくて無理なのですが、基本的にCPUを作るのが好きな人なので、
ついつい、考えてしまうという状況。
何故、またこのようなことを言っているのか。
それは、ICF3-Zの動作周波数が、他のCPUと比べて高いので、
圧縮命令(ユーザー定義命令)で作られた仮想マシンが、
そこそこ使える性能になるのではと思ったから。
ハードを知らないソフト屋でもICF3-Zの仮想マシンを作れると思ったからです。
Googleが支援するSkyWaterのオープンなASIC開発環境でRISC-VのPicoRV32が
実装されるそうです。PicoRV32をXilinxのFPGAに実装すると乗算命令付きで
110MHzという結果がネット上にありました。
スピードグレードが不明でしたが、もし仮に最も高速なスピードグレードの
デバイスだとして、最も遅いスピードグレードでは、87.5MHzだと勝手に思うと。
ICF3-ZはPicoRV32の2倍の周波数で動作するということになる。
またPicoRV32では1命令の実行時間が3~6サイクル。
ICF3-Zに換算すると6~12サイクル相当 。
ICF3-Zは8bitですが32bitの仮想マシンを作っても、まぁまぁな性能のCPUになるのではという
予想。
AVRについては、アーキテクチャ的に
2倍の周波数という予想
なのです。
予想がはずれることはあると思いますけど。
昨日の日記 の続き。
ICF3-Zの圧縮命令(ユーザー定義命令)の機能を使ってPUSH命令を作りました。
ただ公開している説明書に、まだ書いてない機能を使っていました。
その機能は、公開されている設計図とverilogには入っていました。
その機能は定義する命令コードの1サイクル目、
オペランドのbit7-4で指定される汎用レジスタが、
既にプリロードされていること。
レジスタR33,R32(スクラッチパッド)を16bitのスタックポインタとする
PUSH命令。PUSHする汎用レジスタの番号はオペランドのbit7-4で指定。
スタックポインタは+1される。
R(N);N=32;B=REG
R(N);N=33;B=REG;ADDR=B;A=ANS
C=REG;ADDR=B;R(REGADDR);ONE;STORE;A=ANS
RETURN;ADDR=C;CY;A=ANS;R(N);N=32;STORE
R(N);N=33;STORE
5命令ですが圧縮命令では、このコードにジャンプするのに2cycかかるため
PUSH命令の実行サイクルは5+2の7cycになります。
PUSH命令でスタックポインタを-1するコードは
R(N);N=32;B=REG
R(N);N=33;B=REG;ADDR=B;A=ANS
C=REG;ADDL=N;N=0xFF;ADDR=B;R(REGADDR);STORE;A=ANS
R(N);N=32;STORE
RETURN;ADDL=N;N=0xFF;ADDR=C;CY;A=ANS
R(N);N=33;STORE
6命令で実行サイクルは8cycです。
スタックポインタをDレジスタ(8bit)、スクラッチパッドの後半をスタック領域とする
PUSH命令。PUSHする汎用レジスタの番号はオペランドのbit7-0で指定。
COPR;R(N);RETURN
MOV;ADDL=N;N=0xFF;ADDR=D;R(ADDR);STORE;D=ANS
2命令で実行サイクルは4cyc。Dレジスタをスタックポインタにしているので
除算のようにDレジスタを必ず使うDIV命令ではDレジスタの値を一度退避して、命令の最後で復帰させる。
ICF3-Zは高い周波数で動作する。
AVRの2倍の周波数という予想
なので、実行サイクル数は多いように見えるのですが、
圧縮命令(ユーザー定義命令)でCPUを作っても、使える性能になりそうです。
PUSH命令を実装してみて我ながらICF3-Zの命令セットが良くできていると思ったのでした。
CPUが好きな人向け。8bit CPUICF3-Z に
スタックポインタが無いという問い合わせが。
ネットを調べるとARMは汎用レジスタ31番、RISC-Vは汎用レジスタ2番を
スタックポインタとして使うコーディング規約があるだけみたい。
ICF3-Zは全ての汎用レジスタ(スクラッチパッド含む)をスタックポインタとして使えます。
後でコーディング規約を作ることになるのか、わからないですけど。
問い合わせ内容
ICF3-Zはスタックポインタがないのか。
レジスタで16bitのスタックポインタを実装すると遅いのではないか。
同じ8bitのAVRや8051を調べるとスタックポインタが存在していました。
時間の都合でAVRだけ見てみるとPUSH命令の実行に2サイクルかかると書かれていました。
ICF3-Zの周波数はAVRの2倍という予想があるので4サイクル相当 です。
ICF3-Zで16bitのスタックポインタで最も性能の悪いPUSH命令を
作ると8サイクル。 7サイクル。
最も性能のいいPUSH命令は5サイクル。 4サイクル(スタック領域としてスクラッチパッドの後半を使う)
ICF3-Zのスタックの性能は、それほど遅くない。
頭痛で作業が進んでいません。
昨日の日記に、Verilogで書かれた48bitのSnakeCubeが動作するようになったことを書きました。
これを96bitに拡張しても動作することが確認できました。
まだ中継機能がついていないのでbit長を大きくしていくと周波数が落ちてしまいます。
これから96bit版に中継ブロックを入れます。中継ブロックは、何度でも挿入できるので、
どんなにbit幅を大きくしても、周波数は下がらないようになります。
1032bit程度では、中継ブロック1個入れれば、足りるような気がしてますが。
連日の頭痛が止まっていませんが、頭の壊れが、これ以上進行すると問題になります。
ネット上に、僕がICF3(1999年)の本当の開発者ではなく、手伝っていただけみたいな、
うわさが目に付いています。そういったデマを信用しないでください。
デマや破壊活動を続けても、僕が死守することを決めています。
他者がICF3の利権強奪に成功することはなく、デマや破壊活動では、この国に損害しか出ません。
この国の将来について考えていく方向でお願いします。
売国奴は、この国に損害が出ても、
他国に褒められるということに注意してください。
GIGAZINE記事
Googleが半導体チップの設計に必要な「PDK」をオープンソース化するプロジェクトを支援
NDA無しに使えるみたいです。
この記事を読んで調べたのですがセルライブラリがあるみたいなので、
8bit CPU ICF3-Z が作れそうです。
僕は、今ちょっと、時間がありませんが、OpenICF3も一緒に実装して、GoogleのIoTボード向けに作るとか。
その後、署名端末 にすれば、商業だけで立ち上がる可能性もありそうです。
記事のPDKはSRAMも予定されているのでSRAMが使えるようになると、便利かもしれません。
SRAM1bitの面積と、普通のDFF 1bitの面積のだいたいの数字が出ていて、
20倍くらいSRAMのほうが小さいのです。プログラムメモリを食うICF3-Zにとって、
SRAMは役に立つだろうと思っています。
小型のRISC-Vの実装が、多数出現していますが、32bit CPUの32bitが無駄になる
用途では、ICF3-Zは面積性能に優れるので、ICF3-Zが目的に合うものになることが
しばしばあると思います。32bitアプリもICF3-Zで仮想マシンを作れば、
多少遅いですが動くので、多くの用途で使えるCPUとなるように思っています。
また仮想マシンで24bitCPUにしてデータメモリのメモリ効率を上げる
こともできます。
参考までに記事のPDKでRISC-VのPicoRV32の実装が進んでいるようです。
PicoRV32は1命令の実行に3サイクル~6サイクル必要です。
ICF3-Zは加算命令などは1サイクルです。条件が合えば0サイクル分岐もできる。
分岐命令後、2サイクルは遅延スロットになるのですが。
遅延スロットに無駄にならない命令が入れば、完全な0サイクル分岐。
PicoRV32をXilinxのFPGA Artix-7に実装して110MHzになったという結果が、
インターネット上で見つかりました。同じArtix-7でもスピードグレード
によっては高い周波数で動作します。この110MHzが、どのスピードグレードなのか、
読めませんでしたが、最も遅いスピードグレードであると仮定します。
ICF3-Zは175MHzです。命令密度の違いを考慮して、大雑把なことを言うと、
ICF3-Zのほうが単位時間に3~6倍命令数を実行できます。(ただし演算が8bit)
つまり、8bitのICF3-Zは、より面積の大きいRISC-Vの性能と同様の性能が出せるかも?
ただし手間はかかる。一度、手間をかけて作れば、数十年とか、
長い期間使えるので、最終的にはコストパフォーマンスに優れるようになってくる。
FPGAでICF3-Zの実績を積み上げて置けば、Google支援のSkyWaterでASICを作れるか?
Windows環境でもverilog版SnakeCubeが動作するようになり、一息ついています。
SnakeCubeは、まずXilinxのFPGAでSSLアクセラレータにしていきます。
SnakeCubeの開発で、あまり開発環境に依存せず、コマンドラインによる開発を
進めてきました。これをICカード用のASICに転用できるIPにするのに、
あまり労力はいらないと思われます。
ここでしっかりと設計できれば次世代ICカードが安くできるということだと思います。
SSLアクセラレータで開発したSnakeCubeを同じXilinxの大型FPGAに作り直して、
1999年の世界一(レイテンシ性能)から、もう一度、20数年ぶりに世界一(レイテンシ性能)を目指すのもいいかもと。
これは、タイムスタンプサーバ(RFC 3161)向けの準備として。
世界一を記録するには、かなり大きな鍵長にしないと、世界一にはならないと思いますが。
つまり僕の頭が破壊されて設計が半端にしかできない状況になると、とても困るのです。
Northwestern大学 情報科学 准教授Abhi Shelat氏がRISC-Vについて、
次のように述べています。
「ローエンドプロセッサの使用とコストに関しては、
オープンソースの経済性のため、このチップ(RISC-V)が支配的となる可能性があります。・・・」
先月の12日、ICF3-Z初のプレスリリース
によって、より多くの人に知ってもらえたと思います。このCPUが、どんなところで使われそうか、
考えながら、日々を過ごしているのですが、昨日のGIGAZINEの記事に次のようなものがありました。
「HDDのコントローラーをハッキングするとデータの傍受やHDD基板へのLinuxインストールが行える」
わかったことは、このHDDはARMとARM互換のCPU 3個を使っている。
MMUがない。(ICF3-Zで置き換えられる)
ARMは、Cortex-M3である。(ICF3-Zに置き換えられる可能性あり)
メモリ空間にDRAM 64MBがある。(ICF3-Zは標準では64KB)
言いたいことは、スペック的に厳しいところがあるが、ICF3-Zに置き換えらないだろうか?
ICF3-ZはARMやRISC-Vと比較してトランジスタ数が少なく、安価なので、
このHDDに限らず、多くの用途で、使われるかもしれない。
本当に言いたかったことは、こういった『IoT未満の用途』 の市場は、
ICF3-Zが支配的に、なるかもしれないので、備えることを考えたほうがいいかもしれません。
トランジスタの技術2020年1月号付録のDVDに入っていたicarus verilogは
ソースコードのみで、Windows版のバイナリは入っていませんでした。
圓山宗智著「MAX10実験キットで学ぶFPGA&コンピュータ」CQ出版のDVDには、
Windows版のバイナリが入っていたのですが、、、
今更ですがZOOMのアカウントを取得。何かあれば参加できそうです。
頭痛で作業が進んでいません。
7月6日23時ごろCQ出版のWebShopでトランジスタの技術2020年1月号を注文。
7月8日12時には自宅のポストにあったみたいなのですが、
頭痛が悪化して寝ていました。今(7月8日17:50)、起きたのですが、
これから夕食と風呂なので、Windows環境の構築は、その後。
SnakeCubeの発明を早く完成させたいのですが、全然、作業が進んでいません。
マイナビの記事
「香港国家安全法への米国の対抗措置が半導体業界に重大な影響を及ぼす可能性」
米国商務省が「米国の機密技術が中国政府に転用されるリスク」が高まることを懸念しているようです。
1999年に世界に製品出荷されたICF3
はIBM互換の暗号チップです。このことから、
ICF3やSnakeCubeに米国の機密技術が、なんか入ってないか? と思った人も
あったかもしれません。そういうものは、全く入っていません。
米国の機密技術の定義にもよるのかもしれませんが、
それでも問題になるようなことは、ないと思っています。
昨日の日記 の続き。重大な問題点を説明します。
SnakeCube に実装される、
この高性能で高効率な、べき乗剰余演算の発明は、
僕1人の発明によるものです。僕の2005年(退職後)から現在(2020年)までの収入は僅か340万円程度です。
年収ではありません。15年で340万円。何かアメ玉を貰っているわけでもありません。
会社に勤めていないので、この発明を手放すと、収入はありません。
この発明を使って、いろいろ稼いでいかないといけないのですが、僕の頭が悪くなると、
今後の設計が、うまくできなくなってしまいます。そして、手放すことができないので、
この国にも大きな影響が出るのです。少なくとも、僕の頭への攻撃を止めさせないと、
大変なことになる。
僕以外の人も、この発明を使える人がいるみたいな、ことにしようと考えている人がいます。
僕しかこの発明の利権を持っていません。
このことは、何度か、ネット上で説明しているので、知っている人の数は、それなりにいます。
昨日の日記 の続き。この発明はRSA暗号の高速化において、
性能だけで言えば、世界一ではありません。これより高速な方法も発明されていますが、
鍵が大きくなっていくと実装できない問題、実装できても高すぎで実用にならないのです。
僕の発明は、高性能かつ高効率という部門で、世界一だと思っています。
これまで論文などの情報も、調べています。調べ切れていないところはあると思いますが、
他の誰かが発明していれば、常時httpが普及するところで、騒がれていただろうからです。
どうして誰も発明できなかったのか 、僕が考えるに、この手の高速化には、
CarrySaveAdderが良く使われるのですが、CarrySaveAdderによる高速化で、
満足してしまったからではないかと思うのです。そこに僕の
「分割加算(Segmentation Adder)」 を使うとパイプライン化が進んで、
高性能かつ高効率になる。
発明にも役に立つもの、あまり役立たないもの、いろいろあると思います。
人類への貢献度の大きさが、発明の大きさなのだと思います。
青色発光ダイオードを発明した中村さんは2014年にノーベル賞を受賞していますが、
受賞理由が中村さんのWikiに書かれてあります。
高輝度で省電力の白色光源を可能にした青色発光ダイオードの発明
この発明が人類への貢献度が大きいということが、わかります。
さて、べき乗剰余演算(RSA暗号)の高速化の歴史は長く、これまでいろいろな
研究がされてきました。
y = g ^ x mod p
たった、この計算をするだけなのに、実に多くの方法が考え出されています。
これは巨大整数の最下位ビットに1を加算するだけで最上位ビットまで影響する
ことが原因であるように思っています。
半導体チップ上に実装すると配置や配線遅延の問題が入り込み、高速化の
問題を難しくするのです。
1999年のICF3
では基数2のモンゴメリ乗算を使っていますが、後継のICF4では
高基数で作ることを検討していました。検討中、IBMの暗号チップを購入する
ことになったためICF4は途中で潰れてしまいました。
低基数では周波数を上げることが難しかったことから高基数を検討していました。
2005年に日立を退職後、2018年に自分1人で低基数で周波数を上げる方法を発明しました。
「分割加算(Segmentation Adder)」 この方法によって難しかったパイプライン化
が一気に進み、チップ上の全ての乗算器の使用率を50%~70%程度まで、
上げることに成功するだろうと考えています。
低基数のパイプライン化が難しかったということが、
次のブログの「SnakeCubeが高周波数で動作する秘密」のあたりを読むとわかるかも。
巨大整数用四則演算プロセッサSnakeCubeが高速である秘密
僕の発明:
高性能で高効率な、べき乗剰余演算(RSA暗号)の論理ゲート結線構造の発明
(論理ゲートの結線構造というのは、結晶に見せるための、半分冗談)
この発明があるだけで、実際に使われていなくでも、公開鍵暗号を利用した
システム(マイナバーカードなど)を、当面使い続けることができるという
期待感によって、無駄な支出が防がれていると思います。
公開鍵暗号を代替する研究も進んでいますが、急いでも安全性の確認は、
確実にできるわけではないので。
次世代ICカード(SmartCard)で、この発明を使うと、とてもいいように思っていますが、
インターネットの安全を守るhttpsや、その他のシステムでも使われることは
あるように思います。
要するに僕の発明(SnakeCube)は、人類への貢献度が大きいと思っているのです。
頭痛で作業が進んでいません。久々に外に出ました。隣の人の話声は、
普通、意識をせずとも、聞こえてしまうはずですが、音は耳に入っても、
聞き取れていないことに気づいた。頭痛で劣化が進んでいるようです。
一時的なものだといいのですが。
本題に戻るとWindows環境を構築しています。
SnakeCubeはオープンソースではないのでクラウドの開発環境は使いにくいのです。
Windows版icarus verilogの入手のためトランジスタ技術 2020年 1月号を買いました。
付録のDVDにicarusが入っているみたいです。(少し古いバージョンのicarusは、
別のCQ出版の本についていたDVDがあるので、急いでいません)
そういえば6月30日に、トランジスタの技術の編集長が退社されたとか。
2020年7月7日 9:30AM
参考までLinuxの開発環境はインターネットには接続されていません。
Windowsの開発環境も環境導入後はオフラインで利用します。
WindowsのC言語版SnakeCubeのバイナリはインターネットに接続していたことは
あったかもしれませんが、公開用のバイナリなので、ディスアセンブルしても、
モンゴメリ乗算器の論理は読めないようになっているので問題ありません。
頭痛で作業が進んでいません。しかし必ずSnakeCubeを作ります。
XilinxのFPGAに実装され性能が出るあたりで、
今日、この状況がこれで良かったのか、考えるようにしたい。
そして、その後も、今日、この状況がこれで良かったのか、考えることにします。
gabはマストドンに似たSNSです。1年分60ドルをビットコインで買いました。
ビットコインが安いときに買って、現在、少し高くなっている状態で
gab PROを購入できたので20%くらい得できたかも。
↓これがgab PROになったアカウント
https://gab.com/zevios
8bit CPU ICF3-Zの話が多いと思います。
マストドンでもフォローできる場合があるみたいなので、もし興味があれば、
フォローしてください。
gabについては少し調べてからのほうがいいと思います。
作業報告です。それ以上ではありません。
頭や体の痛みは、あまりありませんが、頭や体を寄生虫に蝕まれるような状態で、
作業はあまり進んでいません。痛まないが、妨害率が高い。
新しい話はありません。QEMUの技術とICF3-Zが関係するかという話です。
結論を先に言うと、全く関係ありません。
ICF3-Zにはユーザが定義できる命令が最大127個あります。そしてジャンプ命令や、
サブルーチンコール命令も定義できます。この機能によって自分のオリジナルのCPUを作ることができます。
ICF3-Zの命令セットは、ハードウェアが単純な命令しかないため、その単純な命令を使って、
使いやすい命令セットのCPUを作れます。ただ既存の CPUをエミュレーションすることはできず、
決められた形式の16bitコードのCPUになります。
ICF3-ZはCPUエミュレータQEMUというオープンソースのソフトウェアのように見えることはあるかもしれません。
そして数年前に僕自身がQEMU派生させてChrome/ChromiumブラウザのPortable Native Client (PNaCl)で
動作するものを作っていました。
なんと!今でもQEMUのWikiにPortable Native Client (PNaCl)
へのリンクが貼られています。ドメインを継続できなくてリンク切れになっていますけど。
ICF3-ZもQEMUもCPUエミュレーションを高速にする技術を持っていますが、技術的に別物です。
ICF3-Zはプログラムコードに直接、エミュレーションするCPUの命令語を置くことができて、
オペコードをアドレスだと思ってサブルーチンコールするハードウェアによって高速化をしています。
QEMUの開発者の1人、Fabrice Bellardさんがブラウザの中でJavaScriptを使って
Windows2000を動作させるということをしていましたが、
僕がPNaCl QEMUでWindowsXPをブラウザの中で動作させたほうが
先だったのではと思っています。Youtube動画あるので、よければどうぞ。
VIDEO
Fabrice Bellardさんは、FFMPEGなどいろいろなオープンソースのプロジェクトで活躍されています。
昨年(2019年)にQuickJSという、小さな組込み向けJavaScriptエンジンもリリースされたとか。
(1)(2)(3)は、日記(1) 、
日記(2) 、
日記(3) をクリックすれば読めます。
日記(3)のところで署名端末では乾電池が不要になる話をしました。
乾電池が不要でも時計の時刻を維持するために水銀電池が必要なのではないかという意見。
例の無線通信経由の意見なので、いいと思っていませんが。
脆弱性が無いことを保証するのは難しいのかもしれませんが、時計も水銀電池も不要なのではないかと、
思っています。銀行側のサーバで乱数を生成して、署名端末に送信。
送られてきた乱数を使って返信データを作成すれば、いいように思いました。
参考までにジャパンネット銀行で、もらったトークンは、10年で新しいカード型のトークンに
交換してもらってます。つまり、10年間、正確な時間を維持できる程度には、
時計の品質も、水銀電池の品質も、良くないといけないので、削減できれば、端末のハードは安くできるのかも。
地球環境にも良さそう。
ただUSB接続のチップは信用がなくてもいいので激安なものが使えると(1)で書いたのですが、
10年間動作する程度には、品質の高いものを入手する必要があるように思いました。
(改竄、盗聴は問題がなくても、気分で故障されると問題という話です)
作業報告です。それ以上ではありません。
ほぼ1日中、眠っていました。
Verilog版のSnakeCubeシミュレータで大量シミュレーションをしているところですが、
SnakeCubeの開発環境は、サイバー攻撃に備えWindows環境や、その他のOSでも
動作するように考えています。Windowsには標準ではPerlが入っていないため
PerlがなくてもシミュレーションできるようにC言語のプログラムで代替しているのですが、
C言語の標準ライブラリではシミュレーションのプロセスの標準入力か、
標準出力のどちらか一方しか操作できず、Perlの便利さを痛感しました。
このためverilogで連続シミュレーションのための仕組みを入れ込むことになったのですが、
verilogの標準関数の$fopenでは、ファイルが存在しているとき、書き込みオープンをすると
エラーになってくれなくて困ったのと、$randomが毎回同じ乱数しか生成してくれなくて困りました。
乱数はC言語で生成してコマンドラインでverilogに渡すということで乗り切りました。
新しい技術を使って実用性のあるものを作れないか考えている人向け。
8bit CPU ICF3-Z は利用者が自由に
定義できる命令を最大127個作れる。作れる命令は16bit長の命令コードで、
最上位ビットは常に1、オペコード7bit、オペランド8bitです。
サブルーチンコール命令や、ジャンプ命令も、
実装できるため自分のオリジナルCPU(仮想マシン)を作れます。
そしてICF3-Zで作られた仮想マシンは、ハードウェア支援によって高速に動作します。
ICF3-Zの仮想マシン機能(利用者定義16bit命令)をサブルーチンコール命令の
一種として実装することで、実に良くできた実装になっています。
つまりサブルーチンコール命令を作るには、ジャンプ命令を実行すればいいのです。
ジャンプ命令を作るには、サブルーチンのスタックを1つ減らす命令を実行して、
ジャンプ命令を実行すればいいのです。
自分の仮想マシンをarduinoなどのコンピュータに移植すれば、
仮想マシン上で動作するプログラムは、いろいろなコンピュータで動作します。
自分のオリジナルCPU(仮想マシン)を作るのは面白く、価値があることになると思われます。
先日の日記で書いたTTL版のICF3-Z に
仮想マシンを移植することは容易なのでTTLで作ったCPUの世界とつながっていくと思われます。
ICF3-ZはTTLで実装できるCPUとしては高速なので、TTLならではの用途が見つかれば、
TTLのCPUが、売れるようになるのかも。
既存のJAVAとの違いは、何かというと、TTLでも実装できそうなくらい、
非常に小さいCPUで仮想マシンが高速に動作する「ICF3-Zの仮想マシン機能」です。
新しく仮想マシンを作るので、JAVAのAPIの紛争問題も起きません。
命令コードの最上ビットが常に1になっていますが、将来、
ICF3-Z以外の仮想マシンの拡張用として考えることもできます。
パリティつきのメモリは高価なのでパリティビットとして使えば、
安価なメモリで高信頼なものが作れます。
追記
TTLが強調されていますが、TTLがなくても、多くのコンピュータで
動作するということだけでも、オリジナルCPUを作る価値はあるように思っています。
その価値を大きくできるかは、自分で考える必要がありますけど。
ICF3-ZをTTLで作ることを散々考えている理由は、SRAMがとても安価なので
大容量のSRAMを搭載したマイコンを作りやすいから。
AMD 6コア12スレッドのCPUでverilogによるSnakeCube(48bit)シミュレーションを
大量に実行中です。RSA暗号を演算するための、改良型のアルゴリズムを使ったマイクロコードで
シミュレーションをすると数分でエラーになったので、何が原因か、
調べたのですが改良型では演算できる鍵長が2bit小さくなることを忘れていただけでした。
エラーでシミュレーションが止まってくれたおかげで、SnakeCubeのverilogが間違った
答えを出力すれば、エラーで止まると確認できました。
左目の眼球を筋肉が外側に引っ張るので、左目をつぶって作業をしたり、日記を書いたりしています。
SnakeCube は、
すばらしい発明だと思っていますが、まだ僕は、筋肉制御されていなければ、
ならないのでしょうか?このために作業速度は半分も出ていないと思います。
産総研の人のツイッターを見ていると
「ハードウェアに入っている楕円暗号の秘密鍵をリモートからのアクセスで盗める」
という話が書かれたサイトのリツイートが、あったので、さっそく概要を読んでみました。
楕円暗号のハードウェアの実装によっては、リモートからアクセスで秘密鍵が盗める。
しかもタイミングだけで盗めるということのようです。
僕の考えは、組込みソフトウェアによってタイミングを調整し、例えばどんな値でも
同じ時間で計算するようにするなどの対策をすれば、いいのかもと。
サイトには、それが難しいと書いてありますが。
ちなみに産総研の人のツイッターをフォローしているだけで税金を使っているのと同じという人が
出てきそうなので説明すると、8bit CPU ICF3-Zは税金を使わないことを宣言していますが、
SnakeCubeでは、宣言していません。ただSnakeCubeも税金を使うことで評判が落ちるので、
税金を使いたいとは考えていませんが、SnakeCubeは次世代ICカードなど、
社会インフラでの活躍が期待されるため、必要なら、やむを得ないと考えています。
クレジットカードで買い物をしたと思われる支払い(2000円弱)が、
思い出せなくて苦労しました。普通では数週間前に買った物とか、
日常の小さい出来事を、いちいち記憶しようとしなくても、覚えていることは多いでしょう。
たとえすぐに思い出せなくても、思い出そうとすれば、
思い出せることもあると思います。記憶は消され続けているような感じ。
このことは今に始まったことではありませんけど。
作業報告です。それ以上ではありません。
Verilog版のSnakeCubeシミュレータに標準入力を使ってRSA暗号の演算データを入れて、
Verilogのシミュレータを実行、演算終了後、期待値と比較。
結果が違っていれば、シミュレータを異常終了させる。
これを適切な乱数データで大量シミュレーションできる仕組みでテストできるようになりました。
正しくは、動き始めた。
シミュレータを異常終了させる方法はicarusのvvpで-Nオプションを付けると
$stopで異常終了するようです。
TTLに実装するために機能を削減したICF3-Zを作り、
仮想マシンで互換性を維持するというアイディア。
ICF3-ZはTTLで実装することを考えて設計しているわけではないのですが、
トランジスタ数を減らすことに特化していたりSRAMチップが安価だったりするので
TTLに実装するのにも向いていると思っています。
そしてTTLのCPUとしてはかなり高速になるかなと。
ただ、やっぱりTTLでは規模が大きいかなという気はしています。
少しでも作りやすくするには8bitの汎用レジスタ16本を無くして、
スクラッチパッド256バイトだけにするという方法もあるかなと。
安価な量産品のSRAMに効率的に実装できるようになります。
汎用レジスタを使ったプログラムは動かなくなりますが、ICF3-Zでは、
普通のCPUとは違った命令セットなので、スクラッチパッドだけでも、
問題がなく、多少、性能が落ちるくらいです。
また通常のICF3-Zと、TTL版ICF3-Zの仮想マシンを作れば、
その仮想マシンのコードの互換性は保つことができる。
つまり、スクリプト系の言語を仮想マシンで実装したものはTTL版ICF3-Zでも、
多少、性能が落ちる程度で動くかもしれないということです。
うまく仮想マシンを使った言語がICF3-Zに乗ってくれば、
TTL版のICF3-Zでも、動くアプリが多くなるみたいな。
あまり効果がないかもしれないですがAND演算とNOT演算があれば、
プログラムでOR演算やXOR演算が可能なので、仮想マシンにOR命令、XOR命令が作れたりします。
オープンソースのソフトウェアと同じでCPUもTTLで作りたいという人はあるかもしれない。
ICF3-Zは、プログラムメモリを多く消費するアーキテクチャで、
圧縮命令によってプログラムを圧縮しないと、メモリ効率の悪いアーキテクチャですが、
その分、CPUコアが小さくなっているのでTTLでも作れる規模かもしれない。
僕はTTLでCPUを作った経験がないので、適当なことを言って恐縮ですが。
ICF3-Zは8bitの演算レジスタA,B,C,Dを持っているので
8bitの汎用レジスタ16本は、リードもライトも転送だけで1サイクルのアーキテクチャなのです。
つまり汎用レジスタをSRAMに置けそう。ディユアルポートのSRAMもあるみたいですが高価なので、
1ポートのSRAMで、前半ライト、後半リードみたいに時分割すれば、なんとか、なる。多分。
言いたいことはICF3-Zは、既存の8bit CPUより優れている。
maxim integratedが自社のCPUと8bit CPUで有名なAVRとメモリコピーの性能を
比較している資料を見つけました。
MAXQ命令セットアーキテクチャとRISCのベンチマーク比較
maxim integratedは高性能の結果ですがパイプラインがないCPUなので、
あまり高周波数では動作しない予想なので、ベンチマークで示される
性能ほどではないのかも。
上記資料では64バイトのメモリコピーの性能ですがICF3-Zの都合で
16バイトのメモリコピーで比較します。
AVRは5命令、115サイクル。
ICF3-Zは10命令、133サイクル(8命令、85サイクル)
カッコ内の性能は16ビットポインタの上位8bitが16バイトの先頭と最後で同じ条件の場合
AVRのアーキテクチャとICF3-Zのアーキテクチャの違い から、
ICF3-Zが2倍の周波数になるという予想のもと補正をすると、
ICF3-Zが高性能かもしれない。
プログラムコードのメモリが多く必要になりますが、そこは圧縮命令で、
プログラムコードを小さくなるように、すればいいのかと。
ICF3-Zの説明書と少し命令数、サイクル数が違うように見えますが
AVRと比較できるように補正しています。
カメラ端末に比べて署名端末はUSBケーブルを使うので、少し利便性が落ちる。
しかしカメラ端末は乾電池を使っているが、署名端末はUSBケーブルから電源を取れるので電池不要。
端末の製造原価や地球環境的にもUSBケーブルから電源を取れるほうがいいと思います。
乾電池ではなく充電式電池であっても、同じことが言えるでしょう。
作業報告です。それ以上ではありません。
僕の稼働率を1日、2時間くらいまで抑えることを目標としているらしい。
おかげで寝ている時間が長くなっています。
verilogシミュレーションの入力データにファイルではなく、標準入力を使うように改造しています。
icarusでは動作するようになったのですがXilinxのxsimでは、まだうまくいっていなくて、
少し時間が、かかっています。標準入力をあきらめるか、どうするか。
考えてみた(2)の結論は署名端末、良さそうです。
カメラ付き端末ではブラウザでQRコードを受信、
端末が表示する数桁の数字をブラウザで送信する方法でした。
署名端末ではBASE64で送受信をすればいいと思います。
これには専用のBASE64アプリが必要になります。
銀行への送受信はブラウザでするため、このアプリはネットワークにアクセスすることもなく、
署名端末と送受信するだけです。ソースコードを公開しても問題がないものなので、
アプリのインストールが心配な顧客がいても対応できると思います。
BASE64のデータは、送受信データに署名を付けることで改ざんされることはありません。
そして読み取られても、それほど影響はないようには思いますが、共通鍵で
暗号化しておけば、安心です。
共通鍵暗号で最も利用されているのはAES暗号ですが、AES暗号は8bit CPUでも
高速に演算できます。
無責任ながらパソコンで銀行振込をするための「署名端末」を考えてみた。
「署名端末」は、現実的なところにあるように思っています。
銀行によってはカメラ付きの端末でQRコードを読ませるタイプのものを導入しているみたいです。
この方式だと、恐らく、客と同じ鍵をサーバ上に持つ
必要があるので、サーバの管理は、かなり厳しいと思われます。
これまでの実績があるので、それほど問題を感じない人も多いかもしれないですが、
公開鍵暗号の署名を併用することで、サーバ側の管理コスト、経営リスクを軽減できるように思うのです。
個人で言うには大きなことを言っていますがOpenICF3 や、
ICF3-Z の利権を持っているのは僕で、
その運用を僕が考えないといけないと思って「署名端末」なるものを言っているのです。
経営リスクについて、ピンとこない人は、あったかもしれません。
厳重に鍵を管理していると思われますが、なんらか鍵が漏れると大きな損害が出ます。
行員やシステムに詳しい内部の人間が離反すれば、その可能性も考えられるように思います。
公開鍵暗号を併用すれば、サーバ側に秘密鍵はないので漏れる心配がなく、
これまでの鍵が漏れても、公開鍵暗号側のチェックで、防げるというもの。
署名端末の原価が安ければ、署名併用をする署名端末を採用を考える銀行はあるように思います。
そしてOpenICF3とICF3-Zの2つを持つ、僕が、やれば、安価になるのではと考えているのです。
署名端末ではカメラが不要なので、その分のコストを下げることができます。
かわりにUSB接続が必要ですが、USB接続のチップは信用がなくてもいいので激安なものが使えます。
公開鍵暗号の鍵を長くする必要が出てくる場合も、僕がいれば
SnakeCube があるので対応が容易です。
SnakeCubeの利権を持つ人は僕以外に無く、恐らくSnakeCubeより高性能高効率なものは、他にない。
ハッシュは32bit CPUでないと実装しにくいと思われるかもしれませんが、ICF3-Z上に32bitの
仮想マシンを実装することで、既存の32bitコードを、ICF3-Z上に比較的容易に移植できると
思われます。
署名端末の原価を安くするのに8bit CPU ICF3-Zは、役に立つかもしれません。
言えることはICF3-Zは流行ったほうがいいのかも。
急に動画(R18)を買いたくなったので1万円分買った。
うち6600円は12本のまとめ買い。
これは、まとめ買いではないけど→
自宅警備員 1stミッション イイナリ巨乳長女・さやか~編 /PoROre
CPUの話をすると、良く家電が壊れたりする のだけど気のせいだろうか。
家族に家電(トースター)を買うように勧められた。既に価格は調査済みで予算は5000円ということだった。
amazonで買うのが楽なのだが、市民が気になり、わざわざ、近所の家電量販店(Joshin)に行った。
5000円弱のトースターを買いました。
作業報告です。それ以上ではありません。
サイバー攻撃で身体に負荷がかかり1日に数時間以上、完全に
動けなくなることも多い状況です。以前として作業の進み方は遅い。
作業をしていても負荷が、かかっていることも多い。
Verilogのシミュレーションを乱数データで大量に流す仕組みを開発中。
C言語のシミュレーションで開発したものを流用するので、わずかな時間で開発ができるだろう。
知財に興味のある方のみ。
SnakeCubeのサイトで
「逆数演算の知財」 のページを追加しました。
無事、Verilog 48bit版SnakeCubeでRSAの署名演算が計算できました!
まだ完全ではありませんが、暗号プロセッサとモンゴメリ乗算器の接続がうまくいったので、
完成に近いです。これから1032bit版に拡張していきますが拡張することを考慮して
開発環境を作ってきたので、それほど時間はかからない予定。
そこから、XilinxのFPGAへ貼り付ける作業をして、性能測定へ。
作業報告です。それ以上ではありません。
まだバグっているのかと不安になった人がいるかもと思ったので。ご心配無用です。
久しぶりにDSPを制御するマイクロコードを書いたのですが、
レジスタ系と演算制御系でタイミングが違うの忘れていて、修正しているところです。
2年前の試作のときC++言語で作ったマイクロコード用アセンブラを、最近C言語で作り直しました。
デジタルなタイミングを合わせるだけなので、心配いりません。
雑談を、さらにするなら、日記にも書いていますが、2年前C++で作ったのは、
マイクロコードを保存する分散RAM(LUT-RAM)の数を動的に少なくするためでした。
マイクロコードのプログラムに依存してverilogが生成されるというもの。
2年前の試作でBRAMが余ることがわかったのでマイクロコードの保存先をBRAMにしました。
C++を使うほど難しいアセンブラを作る必要がなくなってCになったのです。
頭痛で足止めされていなければ、こんなことを書くこともなく、あっという間に完成していたと思います。
作業報告です。それ以上ではありません。
Verilog版のSnakeCubeのシミュレーションを動かしているが、
まだバグがあって動いていません。しかし頭の調子が悪い状態でのデバッグは厳しい。
僕の稼働率20%といったところか。おかげでインターネットのニュースが、いっぱい読める。
昨日の日記 でICF3-ZにMRAMを搭載するとどうなるのか、
考えてみました。ここでもう一度、日記に書くのは案外使えるのかもと思ったからです。
解説を、もう一度しますが、わかりやすさを重視したため数字にズレが
生じている可能性はあります。ただ多少ズレていても、だいたいのところは
合っているというような感じだと思います。
SRAMのように使える高価なMRAMより、SRAMの5分の一のアクセス時間でいいから安価な
MRAMを考えます。そして1度に512bit(16命令分)の読み出しに5サイクルかかるとする。
読みだされた後は、CPUはウェイトなく毎サイクル実行できる。
すると分岐命令がない場合はCPUの稼働率は
16/(16+5)*100 = 76%
SRAMの5分の1の性能のMRAMでSRAMの76%の性能というのは、なかなか良さそう。
分岐を入れて50%くらいまで稼働率が下がっても、SRAMの半分の性能が出る。
そして不揮発だから、電源オンしてすぐに使えるマイコンになる。
もし電源オンですぐに使えると便利な家電とかあって、
急激に立ち上がる可能性とかあれば、ICF3-Zも、その波に乗ることができれば、ということでした。
今日、東北大でMRAMが動作したというニュースがあった。
東北大、読み書きが同時に可能なデュアルポート型SOT-MRAMセルアレイの動作実証に成功
MRAMについてメディアで報道される以上のことは知らないのですが、
ICF3-Z でMRAMを使うとどうなるのか、風呂に入りながら考えてみた。
MRAMはフラッシュ以上、SRAM未満なメモリということでフラッシュの代替とか、SRAMの代替とか、
ではなくMRAMの性能特性を活かしたCPUの設計みたいな、ものがあるのかもしれない。
MRAMの性能について調べていると、次の記事が見つかった。
組み込みフラッシュ代替が見えたか、TSMCが22nm世代MRAMで見せた本気
今のところ、バイト単位の高速書き換えや、書き換え速度に興味はなく、
フラッシュより読出し速度が高速でランダムアクセスができてマスク数が少ないから安価
というところに関心を寄せている。つまりTSMCの、このMRAMが最もいいということではないのかもしれない。
記事には22nmで10nsアクセスと書かれている。XilinxのArtix-7は28nmでSRAM読出しが数nsなので、
ICF3-Zで言うと、おおよそ、4~6サイクル程度読出しにかかる。
フラッシュと違って、分岐予測が外れたときくらいの速度で読み出せるのかと、思うのだが、どうだろう。
そうすると、MRAMの性能特性を活かしたCPUの設計ができないだろうか?
ICF3-ZのZeviosはメモリがキャッシュ上になければ割込みを発生させて
キャッシュへの読み込み完了を待つということが簡単なのです。
例えば512bit(16命令分)のデータ幅を持つMRAMを用意して、アドレスを設定してから、4~6サイクル待って、
マルチプレクサで32bitの命令コードを読み出す。SRAMを一切使わない。
言いたいことは、あまり性能を低下させずに大容量のMRAMを活かしたマイコンが作れるのかと。
もう少し、わかりやすく言うなら、少し性能の悪い不揮発SRAMとして、便利かも。(商用できる?)
ツイッターのタイムライン上に激安ARMが1個、0.69ドルというのを見かけた。
見てみるとCortex-M3のARMでした。
Cortex-M3のスペックを調べるとハードウェア除算器を持ち、かつ、
演算サイクルが2~12サイクルなので、僕のICF3-Zよりは、
高度な除算アルゴリズムを使っているみたいです。
ICF3-ZはXilinxのFPGAに実装した結果があるのですが、ちょうど同じFPGAに
Cortex-M3を実装した結果がインターネットで検索して見つかりました。
http://fpga.cool.coocan.jp/cortex-m3.html
これが正しいと仮定すると、
ICF3-Z はCortex-M3のARMに対して
16÷8bitの性能が0.35~2.1倍(ICF3-Z 175MHz時)なので、
高速な除算器を持ったARMに対しても、いい勝負ができていると思います。
(面積性能ではなく性能 です!)
Cortex-M3の上記実装の補足をするとプログラム128KB、データ64KBで50MHzは
厳しいと書かれていたので、50MHzとして計算しました。
同程度の性能でありながら、さらに、ICF3-Zは値に依存せずに除算サイクル数が一定なのでPWM制御で使いやすい!
たまに、この日記を読む人向け。
ICF3-Z
の広報をやっていたので遅れ気味ですが、SnakeCube(暗号プロセッサ)の開発を進めていきます。
大雑把に説明をすると、僕の発明
により、あまりうまくパイプライン化できていなかったものが、限界までパイプライン化され、
高効率化されました。このブログ の
「SnakeCubeが高周波数で動作する秘密」が参考になるかもしれません。
さらにSnakeCubeは作りやすく、巨大な鍵を演算するのにも向いているため、人類は公開鍵暗号の鍵を長くするという
選択肢を得ることができるように思っています。この効果は大きく、重要な発明になったと思っています。
2年前に発明されたにもかかわらず、思うように開発が進まないのは、なぜなのか。
今もなお、頭痛に悩まされ、足止めされ続けている状況で、大事に至る前に、考えてみる必要があると、思います。
このまま足止めが続くことの予想をしてみてください。
新しい髭剃りを買ったけど、壊れ止めに5年保証 930円も買った。
情報オリンピックの日本代表選手がQiitに投稿した記事を読みました。
この記事を僕が読んで、僕の顔色がどう変化するのか、気になる文系のため日記に書くことにしました。
超高速!多倍長整数の計算手法【前編:大きな数の四則計算を圧倒的な速度で!】
僕の言っている大きな数の四則演算は、暗号演算向け四則演算です。
(それでも汎用の整数演算で使えるかもしれない)
半導体チップ上では、必ずしも数学の理論通りには、ならない。
要するに、僕のSnakeCubeに影響しない。
しかしながら、掛け算の計算量を減らすカラツバ法の話が面白かったです。
こんな方法が1960年まで発明されていなかったのかと思うくらい簡単なのです。
結果が簡単だからと言って、それを発明することが簡単かというと、
そうではないと思いました。
8bit CPU ICF3-Zは、乗算コストが加算コストよりも大きいCPUなので、
2バイト×2バイトの乗算をソフトウェアでするのにカラツバ法は使えるかも。
ほんの少し高速化できるような気がします。いや実際のコードでは高速化してないかも。
ICF3-Zの数値演算ライブラリとか誰か作って、昔のZ80みたいに本になって売れると、
いいのですが。これです。
Z80の数値演算ライブラリの本
Vivadoのバージョンを2019.2から2020.1にして合成しました。
周波数175MHzでのLUT数が減り、性能を保ちながら約11%面積が小さくなったようです。
githubのほうは更新していませんが、公式サイトの
downloadのページ に結果を書きました。
作業報告です。それ以上ではありません。Vivado 2020.1のインストールを開始。
プレスリリースによる高負荷に耐えられるように公式サイトを新しいサーバに移動しています。
サーバ1年分の費用とSSL証明書、高負荷オプション合わせて8000円くらいお金をかけています。
Google アナリティクスで、アクセス状況を確認していますが、まだあまりアクセスがない状況です。
数百のメディアに配信されただけなので、これからアクセスが増えるのかもしれないですが。
@PressのプレスリリースのURL
https://www.atpress.ne.jp/news/214871
良くできた読み物になっているので是非読んで拡散してください。
このICF3-Zは実用性が高く仮想マシンの機能によりコンパイラが作りやすい。
いろいろなコンパイラがICF3-Zで動くようになれば、いろいろな言語の
プログラマが引き込まれ、コンパイラが作りやすいCPUとして広まり、
さらにコンパイラが作られ、プログラマが引き込まれる。
そうなるように、なれば、なるのかもしれない。(^^;
8bit CPUに税金を投入できる理由も、あまりなく、
たとえ、やっても風当たりが強くて潰されてしまうでしょう。
(僕の中学生の経験では)趣味でアセンブラ、コンパイラを作れる人達が、
楽しめる世界が、できると思っています。
公式実装のZeviosを派生させてI/Oを追加して
自分のマイコンを作ってみるのも良し。
そうやって本格的に立ち上がってくれば、産業に貢献するような、
すごいCPUになってくれることを期待しています。
OpenICF3 の公式サイトの文章も
更新して綺麗になっています。
USBテスターが複数ないと心配なので、もう一個買いました。
抵抗器の抵抗はテスターで測ると5.5Ω。別のテスターで抵抗を測定しても5.5Ωでした。
普通の人は、ここまで気を使う必要は、ないと思うのですが。
創刊記念放送のYouTube 。
中学生のころ、たまたま本屋で創刊2号目のBASICマガジンを購入し、
300円という安さも手伝って、大学に入った前後くらいまで毎月購入していたと思う。
あるとき、松下のJR-100というパソコンのゲームが掲載されていて、
それをSHARP MZ-2000に移植した。上から落ちてくるICBMを迎撃するゲームで、
中学生でも作れるお粗末なものだった。
親にBASICマガジンに投稿してもいいかと聞くと「やってみたら」
と返答が返ってきたので、作文をして10分のカセットテープにゲームを録音して、
BASICマガジンに投稿をした。
次のBASICマガジンの発売日になって、本屋に急いで行って掲載さているか確認すると、
僕と同じ名前の人が、他の本で掲載されていたMZ-2000(MZ-80B)のテニスゲームを丸パクリしていた。
その後、盗作であることが判明したのだが、とても印象に残っている。
今の僕が、こんなことを書くと、冗談を言っているのだと思うかもしれないが、
本当の話。
mstdn.jpの自分のアカウント
のプロフィールに英語で「輸出規制などの法律に注意してください。」
と書きました。法律に気を使ってます。ということです。
XilinxのVivado 2020.1が公開されていたので35GBのファイルをダウンロード。
BD-DLに書き込みをしたが2回、謎の失敗を繰り返した。1枚300円のBD-DL2枚、合計600円を失った。
作業報告です。それ以上ではありません。
相変わらず、ゆっくりとしたペースでしか動けませんが、峠を越え時間の問題になっています。
インターネットで調べてみました。
Wiki に書いてあるのですが、Javaと同様な利点と欠点のようです。
利点は、移植性が高く、コンパイラが作りやすい、など
欠点は、実行速度が遅いこと。
Wikiには実行時コンパイラによって改善されることがあると書かれているが、
8bit CPUでは、メモリ容量など厳しいかもしれない。
そ・こ・で
僕の8bit CPU ICF3-Zの仮想マシンハードウエア支援機構(仮) が役に立ちます。
僕が主張しているのは、仮想マシンという考え方ではなく、
非力なCPUで仮想マシンを高速に実行するためのハードウエアを
コンパクトに実装して、実用化できそうなところまで、できたこと。
非力なCPU向けです。
ICF3(1999年)は当時、Pコードと発音されていたことがあった。社内ではCOBOLと言う人もありましたが。
PコードはICF3の加算器を改造した四則演算器と、それを制御する命令コードのことを指しています。
名前の由来は、僕の作ったC言語によるシミュレータのマイクロコードを入れる配列の変数名がPCODEだったからです。
最近、Pコードという呼び方をする人が出てきたのでギョーカイではPコードと呼ばれているのかと思ったら、
Wikiにpコードマシン
とか言うのがあって、なるほどと思った。
言いたいのはICF3のPコードと、pコードマシンのpコードは、全く別物。
ICF3のPコードは、ハードウェアの制御信号を命令コードにしたハードに強く依存したコード。
pコードマシンは、ハードウェア非依存の中間的なコード。
全然、違います。
ICF3のプロセッサが1978年、カリフォルニア大学サンディエゴ校(UCSD)で開発された
UCSD p-Systemの影響を強く受けたもののように見せて、
ICF3の足を引っ張ろうとしたのだろうと、思われます。
非常に紛らわしいのですが、ここから、別件の話になります。
悪いことにICF3から派生した8bit CPU ICF3-Zが新機能を追加したことでpコードマシンに、そっくり。
カリフォルニア大のPコードは、恐らくハードウェアに依存しない中間的なコード、Javaのバイトコードのような
仮想マシンが有用であることを主張するもの。
ICF3-Zは、有用である仮想マシンを、ハードウエア支援で 、
とてもコンパクトに実装して実用化したことがICF3-Zの成果なのです。
カリフォルニア大のUCSD p-Systemについて、今日、Wikiで初めて知ったので、
実在性の確認はしていません。
8bit CPU ICF3-Zのサイトを突発的な高負荷にも耐えるようにするためサーバを変更しました。
オプションで従量制になるので高負荷で接続できなくなることは、なさそうです。
URLに変更はないので、これまで通りアクセスしていただいて大丈夫です。
SSLサーバ証明書がアルファSSL(グローバルサイン)のDV証明書からJPRSのDV証明書に変わっています。
サーバの負荷分散のためneo.idletime.tokyoをneo.icf3.netに移転させました。
neo.idletime.tokyoにアクセスするとneo.icf3.netに転送されます。
今年の2月1日のブログで8bit CPU ICF3-Zと32bitのRISC-Vを比較してICF3-Zが面積性能25倍という報告をしました。
「オープンソースのCPUの除算性能 RISC-V vs ICF3-Z」
RISC-V SoftCPUコンテスト2018で1位になったVexRiscv
との比較では、どうなのかを推測してみました。厳密なデータが得られていないので不確実な推測ではありますが、
算出根拠を明確に示しているので参考になる数字は出せたと思います。
ICF3-Zの公式サイトのトップページの下 のほうに記載しました。
SoftCPUコンテスト1位と比較してもICF3-Zは面積性能12倍!!!
この性能を活かしたビジネスを考えてもいいような。
ごめんなさい。そうなって欲しいの間違いです。
ICF3-Zを税金の投下無しに経済に貢献するようなCPUにするべく考えています。
ICF3-Zは小さい面積の割りに除算が高性能であることから低消費電力で
コストパフォーマンスに優れるCPUになれる能力を持っているように思っています。
昨日、「BOOTHが情報商材の販売禁止に」というニュースがあって、
プログラミングなどの技術書はOKということらしく、ICF3-Zも電子書籍で
儲けられるように考えたほうがいいかもと思ったのです。
要点は、僕に関係するものか、そうでなく勝手にやっているものか、
明確にして、勝手にやって全力で儲ける人が増えればいいかなと。
公式サイトに明文化しました。
ICF3-Zの運営資金