Home
2020年
2019年
2018年

8月11日 暗号プロセッサSnakeCubeのビジネス

ソフトバンクのARM株売却などARMが話題になっているようです。 SnakeCubeはARMのようなIPビジネスにならないか、考えているところで、ARMが気になったりしています。 ARMのようなIPビジネスは中立性がないといけないみたいな。 アップルのようなハード・ソフトを販売しているところでは、中立性が保てないとか。議論されている。
RSA暗号の鍵を生成するためには素数判定の演算が必要です。 鍵が大きくなると飛躍的に演算量が増えるため、暗号プロセッサSnakeCubeは、 そういった用途でも役に立ちます。ただARMほど用途はなく、 中立性を貫くことによるデメリットのほうが多いような気もしています。
現在、僕はSSLアクセラレータを開発していますが、SnakeCubeをIPとして販売すれば、 同じくSSLアクセラレータを開発する可能性があり、競合します。 競合するものは、作らないように制御できれば、いいような。


8月11日 Verilog版のSnakeCube開発(37)

2008年のCQ出版DegignWaveに改良型モンゴメリ乗算の方法が説明されています。 このIEEE論文にあった方法を暗号プロセッサSnakeCube(8月3日タイムスタンプ版)用にプログラムを作ってみました。 まだVerilogシミュレーションで正しい結果が得られただけでFPGAでは動作を確認していませんが、 RSA 2048bit(private crt)が3.05[ms]で演算できることが確認できました。
柔道やボクシングのように階級別にすれば世界一とか、なってないかぁ。 XilinxのArtix-7(27nm)、UltraScale(20nm)、UltraScale+(16nm)で3階級制覇とか。(笑)
頭痛は現在も続いています。厳密な表現をするなら脳神経を乗っ取られ人体実験されている状態。 実にいろいろなことができるようです。目を見えなくすることも、心臓をつつくこともできる。 東大にギリギリ合格できないところまで偏差値を下げることとか。 人体実験は禁止されているので、取り押さえれば、暗号プロセッサの開発が捗ることは間違いないと思うのですが。


8月10日 Verilog版のSnakeCube開発(36)

XilinxのVivadoをWindows10にインストールするのに必要な労力。 ただインストールするのは簡単なのですがセキュリティを考えると、 かなり手間がかかる作業になるという話。 Vivadoのダウンロード・ファイルが35.5GBもあってtar形式なので Windowsに何か、ソフトを追加しないと解凍できない。 そしてLinux系のOSはWindowsで使われるNTFSなどのファイルシステムを必ずしも サポートしていない。Ubuntuなど便利なOSもあるが、Ubuntuに含まれるソフトの何かが、 勝手に何かしないか心配でCentOS7を使うのだが、NTFS、exFATへのアクセスは手間がかかる。 そしてexFATが使えるようにFUSEをインストールしたが、最近、動かなくなった。 そこで自作の1CD Linuxを使ってVivadoのファイルをNTFSのファイルシステム上に展開することに。 自作の1CD Linuxを作る労力は、馬鹿にならない。1CD Linuxのセキュリティも完全ではない。 そこでWindowsを使ってVivadoを展開したものと、比較する。この比較のソフトウェアは自作。 一週間くらい作業を止めて自作のフォルダ比較ソフトを開発している。
産業スパイに24時間監視されているせいで、安全性のために費やされる時間が多くなっている。 24時間営業の産業スパイ以外にもサイバー攻撃を仕掛けてくることもあるとは思うので、 完全に無駄というわけではないのですが。


8月10日 Verilog版のSnakeCube開発(35)

再び頭痛。頭の痺れ。狭い範囲の思考しかできなくなるのが辛い。物忘れも激しい。 RSA 2048bit(private crt)のプログラムをC言語シミュレータとVerilogシミュレータで乱数を使って検証中。 Verilogシミュレータで1032bitのSnakeCubeを動かすとRSAの演算1回で1時間以上。 さらに乱数系はicarusでしか動かなないのでRSAの演算1回で8時間とか。 自宅に計算サーバが2台なかったら、辛かったかも。


8月9日 Verilog版のSnakeCube開発(34)

人工頭痛から体が怠くて動けない状態に変更されて作業があまりはかどっていません。 ただ布団に入っても頭は動いていることが多いためRSA 2048bit(private crt)の性能が、 もう少し上がるのを思い出した。2008年頃のCQ出版のDesignWaveに記事があったIEEE論文の改良型モンゴメリを使うと、 もう少し早くなるのです。ただし鍵長が長くなると効果がなくなっていくので本番の製品で採用するかは未定。 これは8月3日にタイムスタンプしたverilogファイルでも動作するので、 ハードウェアの記録としては8月3日になるのだと思う。 つまり予定通りに行くとRSA 2048bit(private crt)の性能が約3.1[ms]になる。
そしてモンゴメリ乗算器を暗号プロセッサに、もう一個追加する方向。 この性能改善は、FPGAボードArtyでは面積不足で成功しない可能性も大きい。


8月8日 Verilog版のSnakeCube開発(33)

再び人工的な頭痛で作業ペースが落ちています。 プログラミングが趣味の僕が一時的にプログラム不能になるほどでした。 やはり頭の壊れ懸念されています。
RSA 2048bitの署名が可能な1032bitのSnakeCubeですがRSA 2048bitの署名をするプログラムを作りました。 まだシミュレーション上の結果のみですがRSA 2048bit署名1回、3.18[ms]になりました。 予定の3.3[ms]よりも少し性能が上がったみたいです。


8月6日 SnakeCubeシミュレータのWin版バイナリ公開

暗号プロセッサSnakeCubeを世の中の人に認知してもらうための余興として SnakeCubeシミュレータ(1032bit)のWin版バイナリを、この日記で公開することに。
Windows10で動作するasim.exeとSnamkeCubeのプログラムの ファイルpowmod_odd.scの2つのファイルが入っています。
Windowsのコマンドプロンプトから

asim powmod_odd.sc

と入力するとプログラムが実行されて終了時のA,B,C,Dのレジスタが表示されます。 Aレジスタの値が、べき乗剰余演算の演算結果で、サンプルデータは OpenICF3公式サイトのシミュレータのページにある べき乗剰余演算(奇数)のコードと同じです。
ただ、それだけを試してもらうための公開バイナリです。 verilogから実行形式を作っているわけではなくて、暗号プロセッサの動作を人が考えて作ったものです。 特にモンゴメリ乗算器が1サイクルで演算を完了する仕様バグがあるので、正しいコードなら 正しい演算結果になるという仕様。暗号演算器(モンゴメリ乗算器)の部分は疑似コードなので リバースエンジニアリングをしても、疑似コードです。 このSnakeCubeは改良型モンゴメリ乗算を演算できるような専用命令を既に実装していますが、 公開コードの中には改良型モンゴメリ乗算ではなくて、普通のモンゴメリ乗算のコードで演算しています。 開発中のためプログラム仕様も今後変更される可能性があります。 シミュレーションを実行するパソコンは、壊れてもいいような安全なパソコンを推奨します。
SnakeCubeで楕円暗号も演算できます。将来的には、このシミュレータが楕円暗号の 特許が絡むような高速なコードを、いち早く取り込むことに役に立つとか、 脆弱性があるとか、ないとかの議論に使われるとか、などを考えていたります。

C言語版SnakeCubeシミュレータ(2020年8月6日)


8月6日 動画配信向けのXilinxのFPGAカード

動画配信向けのPCIeアクセラレータ Alveo U30を発見。 オープンソースのffmpegに対応しているとか。 動画配信で使い終わった頃にSnakeCubeをインストールして SSLアクセラレータにできないか、ちょっと思ったり。 SSL証明書の秘密鍵がCPUのキャッシュ上にあるときに、他のプロセスが読み出せるみたいな問題も、 解決できると、良さそう。 秘密鍵の漏洩が万に一つでもあってはいけないという用途では難しいかもしれませんけど。

SnakeCubeをArtix-7に実装して周波数を上げるのに問題となっているところが、わかっています。 UltraScale+はArtix-7よりも効率が上がるかもしれないと思っているのです。


8月5日 Xilinxの開発者コンテスト

Xilinx(ザイリンクス)と Hackster.io が共催する開発者コンテストがあるようです。
ザイリンクス アダプティブ コンピューティング チャレンジ
僕もSnakeCubeでエントリーできないか考えました。参加資格に法人設立から8年以内とあったので断念せざるを得ませんでした。 僕の株式会社iCanal(←OV SSL証明書)は設立から14年なので。
また個人でのエントリーもできるようなのですがオープンソースにすることが必須なのでSnakeCubeでは無理なのです。
参考までに8bit CPU ICF3-Z Zeviosは 制限の緩いオープンソースライセンスなので、どうぞ。
データセンターがXilinxのPCIeカード Alveo U50を、ある目的のために購入して、使わなくなった Alveo U50にSnakeCubeをソフトウエアのようにインストールしてSSLアクセラレータ・カードにするとか。 (SSLアクセラレータ・カードとしてだけだと、ちょっと高価なので)
量子コンピュータによる暗号解読が発覚したときのため、 鍵を大きくできる準備が必要だと思いますが、既にあるAlveoを使うのはいいかもと思っています。 RSA 2048bitのSSLアクセラレータ・カードとして使えるのですが、 必要に応じてRSA 4096bitや、それ以上の鍵長のアクセラレータに書き換えることができるので。
SnakeCubeはCPUと異なり、鍵長に比例した演算器を使ってRSAを演算できるため、鍵長が長くなればCPUより高速ですし、 鍵長が大きくなるとRSAの演算量は膨大なものになるので。 RSAの演算量については、僕のこのブログ が参考になると思います。
(株)iCanalでSnakeCubeというソフトウエアのライセンス販売してみようかとか、そんなことを考えていました。
ただAlveoには不要な部品が多数ついているので、やっぱり不要な部品を削ったものを作るという可能性はあるかも。 秘密鍵を安全にするために、ハードを作ることになる可能性もある。
産業スパイに24時間、まとわりつかれている問題を、どうにかしないと。


8月4日 SnakeCubeの知財を守るため証明書をもらいました

独立行政法人工業所有権情報・研修館によるタイムスタンプ保管サービスを利用しました。 以下のPDFファイルが、発行していただいた証明書になります。(オンラインによる自動発行システム)
「タイムスタンプトークン預入証明書」
RSA 2048bit(復号化)が演算できるSnakeCubeのverilogファイルのハッシュ値、合成結果の画像、 合成条件を記載したPDFファイルを作成しタイムスタンプをしました。
この他に2つほどRFC 3161のタイムスタンプで証拠を残しています。

このタイムスタンプには「アマノタイムスタンプサービス3161」を使っています。 署名されたPDFに時刻の精度が0.5秒とありました。 RSA暗号の鍵長が長くなると精度を保証するため高速なRSA暗号のハードが必要になるのかもと、 思っています。 SnakeCubeはRSA暗号の鍵長が長くなってくるとCPUよりも高速になるので、 こういったタイムスタンプで役に立つことはあるかもしれません。

2020年8月5日追記
タイムスタンプの精度の定義を知らないので、あまり正しくないことを言ったかも。 タイムスタンプの時刻を受け付け時間にすれば、署名の計算時間が長くなっても、いいのかもしれません。 PDFを開いてタイムスタンプをすると数時間、PDFを開きっぱなしにしておけば、タイムスタンプが完了するとか。 AdobeAcrobatは、各国の事情に応じたタイムスタンプの方式をプラグインという形式で実現しているから、 国が決めれば、どうにでもできるという範囲は、広いのかもしれません。 世界標準のほうが普及すると、国だけでは決まらないですけど。


8月3日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(3)

XilinxのEDAツール、Vivado(2020.1)の論理合成はSynthesisが8種、Implementationが29種なので 合計8×29=232ケースの論理合成が可能。 RSA 2048bitが演算できるSnakeCubeを250MHzの条件で232ケースの論理合成をした結果、 3ケースが250MHzを達成しました。


8月3日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(2)

250MHzを達成しました!昨日の速報では計算上、まだ250MHzが達成されていない実装を250MHz動作させました。 合成オプションを探っているうちに250MHzで動作するものが合成できました。 再度、実機で250MHzで動作させて正しい計算結果であることを確認しました。 下の図が、今回、250MHzを達成したときのVivadoの画面。 合成に成功したものが1つあることが画像からわかると思います。

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



8月2日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(1)

RSA 2048bitが演算できる暗号プロセッサSnakeCubeは 僕が発明した方式の暗号プロセッサです。高性能、高効率なアーキテクチャです。XilinxのFPGAの実機により検証されました。 これまで1032bitのSnakeCubeと呼んでいたもの。

FPGAボード : Arty
FPGA : Xilinx XC7A35TICSG324-1L

Artix-7のスピードグレード -1なのでローエンドに近いFPGAです。
FPGAで動作した周波数はモンゴメリ乗算器 250MHz、暗号プロセッサ31.25MHzです。 まだ1日かけて作業しただけなので十分には性能を出しきれてないかもしれません。 250MHzは1サイクル=4nsです。Xilinxのツールの計算は4.045ns 4.033nsなので、少しオーバーしていますが、 実機で250MHzで動作させて正しい計算結果を出力しています。暗号プロセッサのほうは、まだかなり余裕があるので 暗号プロセッサの周波数は31.25MHzから35.71MHzに性能を上げることができるかもしれません。 RSAの性能はモンゴメリ乗算器の周波数を高速にするほうが有利なので、暗号プロセッサの周波数を無理に上げることはないのですが。
このXilinxのFPGAでRSA 2048bitを計算する時間ですが約3.3[ms]の予定です。 2年前、Webサイトで3.2[ms]の試算をしていましたから、予想通りの性能になりました。 モンゴメリ乗算器の周波数が2年前より2倍になっているのですが、 モンゴメリ乗算器を2個から1個に減らしているので、結果的に予想通りなったということになります。
SSLアクセラレータとして使うにはFPGA上に通信回路を搭載する必要があり、モンゴメリ乗算器を2個から1個に減らす必要がありました。 通信回路を搭載しなければモンゴメリ乗算器を、もう1個、追加できるだけの面積が残っていそうです。 通信回路なし、モンゴメリ乗算器1個で約60%の面積です。頑張れば、モンゴメリ乗算器2個でも通信回路を搭載できるかもしれません。 参考まで、SSLアクセラレータの商品化を目指しているため、暗号プロセッサには、演算中に次の演算データを転送できる機能が 既に実装されています。
XilinxのEDAツールが良かったおかげで1032bitのSnakeCubeが1日の作業で、ここまで来ました。 配置もEDAツールに任せて性能が出ました。巨大演算器もEDAツールでうまくいくのか、まだちょっと気がかりですけど。 専門家以外の人に説明をすると、僕の作っているverilogファイルは、 20年前のお絵描きソフトを使って論理ゲートレベルの設計図を作成してから、verilogに直しているので、 あまり論理合成は使われていません。EDAツールは配置、配線のみを利用するという使い方をしています。 作成したSnakeCubeのverilogファイルを、いろいろなデバイスに移植するために、 論理合成を増やしていくことは、あり得ます。

今後、この暗号プロセッサSnakeCubeの高性能、高効率を活かして、商品化の目途を立てていきたいと思います。 普通には大企業で税金を使いながら開発されていた商品です。 それが、僕1人よって激安な開発コストで商品化されるかもしれないのです。 僕1人で激安に開発できた理由は、いろいろあります。滅多にあることではないと思っています。 ぜひ、僕を応援してください。

下図はRSA 248bitが計算できるSnakeCube(1032bit)をArty に実装したVivadoの画面です。

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


8月1日 96bitのSnakeCubeがFPGAの実機で動作しました

2日前に48bitのSnakeCubeの実機動作に成功していますが、96bitのSnakeCubeでも実機動作に成功しました。 使用したFPGAのデータシートにはDSPの最大周波数は290MHzと書いてある。 SnakeCubeは250MHzで動作したのでDSPの限界付近?まで動作したと言えるかも???
DSPの構成を変更すると464MHzまで動作する見たいなので、機会をみて、考えるのかも。 でも次は1032bitのSnakeCubeを実機動作させたいと思います。 規模が大きくなると合成でうまくいくのか、わからないので、手で配置することを 考えていましたが、配置もEDAツールに任せてみて、動作するなら、それでもいいか。


7月31日 Verilog版のSnakeCube開発(32)

現在開発中の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入力加算ができるので、 高速化が期待できるように思っています。
記録よりも商品化が優先になっているのです。


7月30日 48bitのSnakeCubeがFPGAの実機で動作しました(3)

(2)の続きです。
クロック周波数が正しい値になっていることを青色LEDの点滅で確認しました。 モンゴメリ乗算器は250MHzで動作していると思われます。 YouTubeにSnakeCubeが動作した動画をアップ


7月30日 48bitのSnakeCubeがFPGAの実機で動作しました(2)

(1)の続きです。
FPGAボードの右上のリセットボタンを押して離すと、RSA暗号の演算が実行されます。 ボタン2(BTN2)を押すと、最上位バイトが表示されます。続いてボタン0とボタン1を 交互に押していくと、次のバイトが表示されます。SW3をONにするとbit3が青の点滅をします。 SW3はまだ実装されていませんが、これから実装してクロック周波数の確認に使います。

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

7月30日 48bitのSnakeCubeがFPGAの実機で動作しました(1)

RSA暗号を計算させて正しい結果をFPGAボード上のLEDに表示させることに成功しました。
うれしい。^^)v
XilinxのFPGAを搭載したArtyで動作させました。 まだ論理合成をするとタイミングエラーの表示がでますが、マルチサイクルの転送のところで出ているので、 気にせず、FPGAの実機で実行させました。 モンゴメリ乗算器のマイクロコントローラ内部で若干、タイミングエラーになっていますが、 正しい結果が計算されました。 コントローラ内部のタイミングエラーなので改善の余地はあります。
一応、動作した演算器の周波数は250MHzですが、FPGAに慣れていないので正しい保証はありません。
2年前の試作で125MHzで動作する試算をしていますが、 2スレッドにして2倍以上の周波数が出るように設計したつもり。2倍の周波数で動作している感じ。 48bitのSnakeCubeなので性能の評価は、まだ出せないという状態です。


下図は今回、SnakeCube(48bit)をArtyに実装したVivadoの画面です。

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


7月29日 Verilog版のSnakeCube開発(31)

進捗報告のみ。SnakeCubeの計算結果をFPGAボード上のLEDに表示させる回路を追加しました。 LEDは8個しかないので2進数で1バイト分の表示しかできませんが、ボタンを押すと次の1バイトが表示される回路です。 追加したSnakeCube回路に対して、ボタンの押し下げもシミュレーションできるようにして、 シミュレーションしてみました。 1032bit版のSnakeCubeでLEDから計算結果を全部取り出せることが確認できました。
暗号プロセッサのEND命令のバグが見つかったので、まずはEND命令のバグを対策します。 END命令後の数命令を実行するバグ。 これまでのシミュレーションで、このバグが見つからなかったのはEND命令を実行したところで シミュレーションを終了させていたから。


7月28日 SnakeCubeの性能検証まで、あと少しです

SnakeCubeは高性能、高効率なアーキテクチャです。それをFPGAで検証するべく作業をしています。 性能の検証だけ、先にしようと思っています。そのため演算結果をFPGAボード上の LEDに表示させる回路を簡単に作ったのですが、急激に妨害が増え、悩まされています。 Windows上で走るXilinxのプロセスを勝手にサスペンドしてしまうなど。
妨害されることは、最初から想定していました。 このため複数のOSで動作する開発環境を作ってきました。 現時点ではWindowsによるSnakeCubeシミュレーションの妨害に集中しているようです。

2020年7月28日追記
この日記をSNSで拡散したところ、すぐにシミュレーションの プロセスが正常に動作するようになしました。SNS拡散効果があったということかも。 (特に意味のある話ではありませんが、今日のスラドにツイッターアカを大量に削除みたいな記事があったけど、、、)


7月27日 中国で学生が64bit CPUを作ったというニュース

「中国科学院の大学生が9か月で64ビットプロセッサの設計に成功」
中国語の記事は読めないので機械翻訳を読んでみました。高性能なCPUですが教育用みたいです。 記事に

中国ではプロセッサチップ設計の人材が深刻に不足しており、そのような人材のトレーニングスケールとスピードをいかに高速化するかは、中国において緊急の問題です。

と書いてあったのは印象的でした。 今の僕は、高性能、高効率な公開鍵暗号の論理設計をしている。多分、世界最高クラス。 レイテンシ性能やスループット性能が最高と言っているのではなくて、高性能で高効率という分類で最高。 多少、曖昧な分類での最高ですが、次世代ICカードに適しています。まずはSSLアクセラレータを作っていきますけど。

そして、今の作業は、サイバー攻撃でシミュレーションが誤動作するため、 もう一台、Windowsパソコンを準備するという作業。 12年前にドスパラで買ったパソコン、ヤフオクの中古CPU(E8400)に換装している。 GPUは、やっぱりヤフオクで買ったnVIDIAの8400GSなのですが、ファンを止めるネジが壊れている安物。 CPUファンが一度、壊れたのでサイズの合わないファンに付け替え。 17年前のHDDと20年前のHDDにWindowsをインストール。1日潰れそう。
中国の加速率300%に対して日本(僕)はマイナス2000%くらの加速率だと思う。 今回の中国CPUは教育用だから、という話はあるかも。


7月27日 Verilog版のSnakeCube開発(30)

長時間Verilogシミュレーションをしています。 Verilogシミュレーションの結果を誤らせるようなサイバー攻撃(推定) により作業が停滞しています。
1024bitの計算結果のちょうど(魔法の?)中継ブロックの 当たりの1bitが違っている。
一見すると中継ブロックがバグっていることを予想させるような 場所なのだが1bitだけ間違うというのは、ちょっと難しい。 一瞬でも僕の青ざめる顔を見たかったのかもしれない。
そして間違っていたのは、C言語による期待値のほうだった。 C言語の期待値プログラムで再現してみると、正しい期待値が計算された。 宇宙線によるソフトエラーやverilogのバグの可能性はある。
僕はサイバー攻撃だと思っている。 そしてSnakeCubeは正しい値を計算できているので、安心しています。 もう少し原因を調査した後、作業を次に進めていきます。
ところで今日、椅子が壊れたので、これも作業を遅延させる要因になりそう。 壊れた椅子を針金とテープでグルグル巻にして修理して使っていたもの。 壊れやすい状態ではあったが、ここで壊れるのか。 遠隔から椅子にヒビを入れる魔法でも放ったのかと。
完成が近づいた頃に、完成した場合の影響を判定する時間が必要になるのかもしれない。 自然故障に見えるような、爆弾をいくつも、準備しているようにも感じた。 爆弾の真偽はわからないが、判定時間を稼ぎたいというのは真実だろう。


7月26日 Googleの話をしにくる不信な通信

Googleからの連絡というわけではないのですがGoogleの話をしてくるようです。
非合法な通信回線を使った連絡は、一切受け付けていません。
僕のほうの状況ですがSnakeCubeの性能検証が、あと少しのところまできています。 性能検証が終わるまで、あまり動けない状況です。しかし連絡などは受け付けています。
昨日は、遠隔制御により眠らされていました。あまり作業が進んでいません。 数日で終わる作業が10日以上かかるという状態です。 そして遠隔制御を振り払うことに、かなり大きな時間が割かれているのです。


7月25日 Verilog版のSnakeCube開発(29)

進捗報告のみ。XilinxのFPGAに付いているクロック生成部品を取り付けました。 2種類のverilogシミュレータ(Xilinxとicarus)で通常版のクロック部品と、 シミュレーションを高速化するためのクロック部品の2種類でシミュレーションをしました。 合計で4個のシミュレーションをしたのですがicarusで高速化版のクロックを使った場合だけ、 計算結果が間違ったものになりました。
このシミュレーションでは演算器はプロセッサの8倍の周波数で動作しています。 演算器の演算結果をプロセッサが受け取るところで問題が発生していました。 icarusで高速版のクロックを使った場合、1サイクル間違ったタイミングのデータを受け取ってしまっているのです。
原因は演算器のクロックがプロセッサのクロックに対して1psずれてしまっている。 icarusでXilinxの高速化版のクロックライブラリを実行してクロックを生成させると小数点の端数の問題で 計算誤差が出るみたいです。

参考までに、シミュレーションではなくて現実でもクロックは100psくらいずれる。 この問題はディレイチェックでミニマム保証するようにするので現実では大丈夫。

上の図はicarusの通常版クロック、正しく'3B'のデータを受け取れている。 下の図はicarusの高速版クロック、次のサイクルの'BC'のデータを誤って受け取ってしまっている。

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


7月24日 verilogコンパイラは仮想マシンのコード生成していた

頭が痺れて作業があまり進んでいませんがオープンソースのverilog、 icarusではシミュレーション用にコンパイルすると仮想マシンのコードを生成していることを知った。 トラ技 付録のDVDに収録されていたicarusの説明文にそう書いてあったので、 調べてみるとicarusが仮想マシンのアセンブラのようなコードを吐き出している。

--- 仮想マシンが実際に役に立っている。 ICF3-Zの仮想マシン機能も、こんな感じで、うまく使えることがあるような気がしたのでした。

トラ技のDVDを引っ張り出すことになったのはicarusのシミュレーション結果が Xilinxのシミュレーション結果と異なっていて、icarusの動作を疑ったため。 Xilinxが提供しているシミュレーションライブラリはicarusをサポートしていないので、 念のための確認程度に。
Xilinxのクロック生成部品(ライブラリ)を追加したところで、上記のように、 少しハマったことも、作業が遅れている原因。


7月22日 暗号プロセッサに似たCPU SnakeModoki(3)

(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暗号より軽い処理であるので、問題がないという。


7月22日 Verilog版のSnakeCube開発(28)

進捗報告のみ。 体中に遠隔制御が入って動けなくなる一歩手前の状態とか、眠気が増強されている状態が多い。 頭痛の頻度が減ったので、少しは作業は進むが普通の人の20%くらいの出力。
FPGAデバイスでVerilog版のSnakeCubeを動かすためクロック周辺の作業をしていました。 SSLアクセラレータにするFPGAボードをどれにするのか、まだ決まっていませんが、 ボード上に100MHzの発振器を持つやつと12MHzの発振器のやつとあって12MHzの発振器では、 同じFPGAのデバイスでもクロックの誤差が大きいみたい。その分、性能を下げる必要があるのかも。


7月21日 暗号プロセッサに似たCPU SnakeModoki(2)

(1)の続き。 もう少し解説をすると、SnakeModokiはランダムアクセスの性能が悪いが、 シーケンシャルな転送が高速なメモリを効率よく使える点がいい。 そしてモンゴメリ演算器には鍵長の制限はなく、 メモリがあれば限りなく大きな鍵の公開鍵暗号を演算できる。 またメモリ転送性能とゲート面積を考えながら最適なCPUを設計できる。
SnakeCubeでは鍵長と同じサイズのモンゴメリ乗算器になって、 それでも乗算器のサイズで調整は可能だが、SnakeModokiほど 調整範囲は広くない。
僕の頭には、産業スパイが24時間住みついているから、 この日記のように解説をしなくても、漏れてしまう問題があるので。


7月21日 暗号プロセッサに似たCPU SnakeModoki(1)

暗号プロセッサSnakeCubeが、ようやく出来上がったばかりですが、 SnakeCubeの高効率なモンゴメリ乗算器のビット幅を小さくして普通のCPUに搭載した SnakeModokiを考えた。modoki(もどき)とは日本語で偽物という意味。 ちなみにサソリに似たクモ、サソリモドキという生き物が実在しているみたい。
トランジスタ数が非常に少ないことが特長のICF3-Zに、 高効率なモンゴメリ乗算器を搭載したCPUが作りたくなったのです。
非常に少ないトランジスタ数であるにもかかわらず、 高速にRSA暗号ができる競争力のありそうなCPUになりそうだと思ったから。 SnakeModokiはクローズドです。
ざっくり説明をするとSnakeCubeは多数のDSPを使って並列に演算をするのですが、 それをSnakeModokiでは1個のDSPでやってしまおうということです。 並列に動作させる技術を除いた技術レベルの低いモンゴメリ乗算器(DSP)ということです。
しかしながら、扱いのいいモンゴメリ乗算器になりそうなのです (←これ重要)。 というわけでSnakeModokiも、将来、時間があれば作りたくなった。 暗号プロセッサに似たCPUと言ったのですが、使い方は暗号プロセッサとしても使われるのかも。


7月20日 Verilog版のSnakeCube開発(27)

進捗報告のみ。 気分が悪くなって寝た。その後、熱にうなされ続けた状態で目が覚めた。 このまま脳が損傷していってもSnakeCubeの所有権が移動しないので、問題となることが予想されます。
1年半前、演算結果をUSBのシリアル通信でFPGAから取り出すため、 送受信回路を作っていました。そして通信回路の一部として8bit CPU ICF3-Zを作ったのです。 その後、もっと小さい8bit CPU WZetaを作り、 USBシリアル通信の作業を進めていました。そしてエアコンが故障してエアコン交換のため、 エアコンの下に置いてあった開発用のパソコン13台を撤去して、部屋を移動する作業をすることになった。 この後も、トラブルが続き進捗を遅らされ、USB通信回路の開発を中断、 暗号プロセッサを先に完成させる方向に方針を変更しました。
そして、今、暗号プロセッサが出来上がり、シミュレーションで正しい結果が計算できるようになりました。 USBのシリアル転送の回路を完成させるには、まだ時間がかかるので、 取り急ぎ、LEDに演算結果を表示させる作業を進めています。


7月19日 8bit CPU ICF3-Zのデータ転送

どういうデータ転送が遅いと言っているのか、いま一つ、わからない。 ポインタがないという人は、説明書を良く読んでないのかもしれない。 データメモリ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になるような番号。


7月18日 Verilog版のSnakeCube開発(26)

1032bitのVerilog版SnakeCubeが出来上がりました。 とりあえず1つのデータでVerilogシミュレーションをして正しい結果が計算されました。 icarusだと1024bitのべき乗剰余演算のシミュレーションに3時間10分。 Xilinxのxsimでは22分。テストを連続して行うシステムはicarusでしか動作しないので、 どうしようかと、考えているところ。
ここ数日、頭痛は減りましたが、微妙に頭を悪くされていている。 文字認識能力が低下したり、日本語が読めなくなったり。 6文字以上のカタカナをまともに読めないなど。 1ドル110円で、ドル安になると、どうなるとか、普通の人だと思考するまでもなく、 答えが出るはずなのだが、じっくり考えないと、答えがでないなど。 痛くないが、結構、問題。妨害の量としては、まだ大きいという状況。


7月15日 僕と同世代の早稲田大学の電気工学科に平山は3人いる

次世代ICカード(SmartCard)で有望な技術を発明して、実装が進み、 僕も有名になってきたように思っています。
間違いやすい平山が、僕の他に2人いるので、言っておいたほうがいいかもと思ったのです。
1人は、一学年上の平山さんでIBMに入社されたところまでは知っています。 実際に話をしたこともある。僕はIBM互換の暗号LSIを作っていますから 僕がIBMに転職したようにも見えて間違いやすい。
もう1人は、二学年下の平山さんで早稲田のコンピュータ・サークル(MIS.W)に 所属しているのではないかと思います。
僕がコンピュータ・サークルに入っていたのではないかと思う人も多いので間違いやすい。そして僕のいた研究室はMIS.Wの人がいっぱい。
参考までに、僕が入っていたサークルは宇宙航空研究会。今は知りませんが、当時は理工学部最大のサークルなのに部室が1部屋の半分。僕は、大学で初めて飛んだ人力飛行機のプロペラを作った人です。早稲田祭のプラネタリウムの制御基板を作った人でもある。


7月15日 Verilog版のSnakeCube開発(25)

大きく進捗しました。96bit版のSnakeCubeは24bitのブロック、 4個で構成されています。4個とも同じ物だったのですが、 2個目のブロックを特殊なブロックに交換しました。 加算器などでは、ビット幅を大きくしていくとキャリーの遅延が大きくなっていきますが、 これは、既にSegmentation adderによって一定値に抑えられています。 キャリーの遅延ほどではありませんが、ビット幅を大きくしていくと 最下位ビットからのブロッドキャストの遅延のため周波数が下がってしまいます。 これを特殊なブロックで、中継してやることで、周波数が下がらないようにするのです。
特殊なブロックは、僕のブログ 「わかりやすいICF3-Fのモンゴメリ乗算器の説明」を読むとわかるかも。 参考までにSegmentation Adderとは僕が発明したもので僕の造語です。
Verilogによる大量シミュレーション中ですが、問題なく動作することが検証されました。
これからブロックを追加して1032bitにしていきます。


7月14日 ソフトバンクの速報

ソフトバンクがARMを手放すことを検討しているという速報 ソフトバンクからのコメントは、まだないとのこと。
RISC-VはARMを完全に置き換える可能性がありますが、 ICF3-ZはARMと共存できるCPUなのです。 ICF3-Zは、そのアーキテクチャために、あまり高性能なものが作れないのです。 32bitのARMでは32bitが無駄になるアプリもあるわけで、 ICF3-Zは、ARMでは非効率(or 困難)なところを補完できるCPUなのです。


7月14日 自分の仮想マシン(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倍の周波数という予想 なのです。
予想がはずれることはあると思いますけど。


7月14日 スタックポインタの研究(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の命令セットが良くできていると思ったのでした。


7月13日 スタックポインタの研究

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のスタックの性能は、それほど遅くない。


7月12日 Verilog版のSnakeCube開発(24)

頭痛で作業が進んでいません。 昨日の日記に、Verilogで書かれた48bitのSnakeCubeが動作するようになったことを書きました。 これを96bitに拡張しても動作することが確認できました。 まだ中継機能がついていないのでbit長を大きくしていくと周波数が落ちてしまいます。 これから96bit版に中継ブロックを入れます。中継ブロックは、何度でも挿入できるので、 どんなにbit幅を大きくしても、周波数は下がらないようになります。 1032bit程度では、中継ブロック1個入れれば、足りるような気がしてますが。
連日の頭痛が止まっていませんが、頭の壊れが、これ以上進行すると問題になります。
ネット上に、僕がICF3(1999年)の本当の開発者ではなく、手伝っていただけみたいな、 うわさが目に付いています。そういったデマを信用しないでください。
デマや破壊活動を続けても、僕が死守することを決めています。 他者がICF3の利権強奪に成功することはなく、デマや破壊活動では、この国に損害しか出ません。 この国の将来について考えていく方向でお願いします。
売国奴は、この国に損害が出ても、 他国に褒められるということに注意してください。


7月12日 Google、半導体チップ設計のオープン化支援

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を作れるか?


7月11日 SnakeCubeの今後の方向

Windows環境でもverilog版SnakeCubeが動作するようになり、一息ついています。 SnakeCubeは、まずXilinxのFPGAでSSLアクセラレータにしていきます。 SnakeCubeの開発で、あまり開発環境に依存せず、コマンドラインによる開発を 進めてきました。これをICカード用のASICに転用できるIPにするのに、 あまり労力はいらないと思われます。
ここでしっかりと設計できれば次世代ICカードが安くできるということだと思います。
SSLアクセラレータで開発したSnakeCubeを同じXilinxの大型FPGAに作り直して、 1999年の世界一(レイテンシ性能)から、もう一度、20数年ぶりに世界一(レイテンシ性能)を目指すのもいいかもと。 これは、タイムスタンプサーバ(RFC 3161)向けの準備として。 世界一を記録するには、かなり大きな鍵長にしないと、世界一にはならないと思いますが。
つまり僕の頭が破壊されて設計が半端にしかできない状況になると、とても困るのです。


7月10日 RISC-Vの動向

Northwestern大学 情報科学 准教授Abhi Shelat氏がRISC-Vについて、 次のように述べています。
「ローエンドプロセッサの使用とコストに関しては、 オープンソースの経済性のため、このチップ(RISC-V)が支配的となる可能性があります。・・・」


7月9日 オープンソースのCPU、ICF3-Zは活躍できる

先月の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が支配的に、なるかもしれないので、備えることを考えたほうがいいかもしれません。


7月9日 Verilog版のSnakeCube開発(23)

トランジスタの技術2020年1月号付録のDVDに入っていたicarus verilogは ソースコードのみで、Windows版のバイナリは入っていませんでした。
圓山宗智著「MAX10実験キットで学ぶFPGA&コンピュータ」CQ出版のDVDには、 Windows版のバイナリが入っていたのですが、、、


7月9日 ZOOMのアカウントを取得しました

今更ですがZOOMのアカウントを取得。何かあれば参加できそうです。


7月8日 Verilog版のSnakeCube開発(22)

頭痛で作業が進んでいません。 7月6日23時ごろCQ出版のWebShopでトランジスタの技術2020年1月号を注文。 7月8日12時には自宅のポストにあったみたいなのですが、 頭痛が悪化して寝ていました。今(7月8日17:50)、起きたのですが、 これから夕食と風呂なので、Windows環境の構築は、その後。 SnakeCubeの発明を早く完成させたいのですが、全然、作業が進んでいません。


7月8日 米中「半導体戦争」が緊迫している

マイナビの記事 「香港国家安全法への米国の対抗措置が半導体業界に重大な影響を及ぼす可能性」
米国商務省が「米国の機密技術が中国政府に転用されるリスク」が高まることを懸念しているようです。
1999年に世界に製品出荷されたICF3 はIBM互換の暗号チップです。このことから、 ICF3やSnakeCubeに米国の機密技術が、なんか入ってないか?と思った人も あったかもしれません。そういうものは、全く入っていません。 米国の機密技術の定義にもよるのかもしれませんが、 それでも問題になるようなことは、ないと思っています。


7月8日 発明の大きさは人類への貢献度(3)

昨日の日記の続き。重大な問題点を説明します。
SnakeCubeに実装される、 この高性能で高効率な、べき乗剰余演算の発明は、 僕1人の発明によるものです。僕の2005年(退職後)から現在(2020年)までの収入は僅か340万円程度です。 年収ではありません。15年で340万円。何かアメ玉を貰っているわけでもありません。 会社に勤めていないので、この発明を手放すと、収入はありません。 この発明を使って、いろいろ稼いでいかないといけないのですが、僕の頭が悪くなると、 今後の設計が、うまくできなくなってしまいます。そして、手放すことができないので、 この国にも大きな影響が出るのです。少なくとも、僕の頭への攻撃を止めさせないと、 大変なことになる。

僕以外の人も、この発明を使える人がいるみたいな、ことにしようと考えている人がいます。 僕しかこの発明の利権を持っていません。 このことは、何度か、ネット上で説明しているので、知っている人の数は、それなりにいます。


7月8日 発明の大きさは人類への貢献度(2)

昨日の日記の続き。この発明はRSA暗号の高速化において、 性能だけで言えば、世界一ではありません。これより高速な方法も発明されていますが、 鍵が大きくなっていくと実装できない問題、実装できても高すぎで実用にならないのです。 僕の発明は、高性能かつ高効率という部門で、世界一だと思っています。 これまで論文などの情報も、調べています。調べ切れていないところはあると思いますが、 他の誰かが発明していれば、常時httpが普及するところで、騒がれていただろうからです。
どうして誰も発明できなかったのか、僕が考えるに、この手の高速化には、 CarrySaveAdderが良く使われるのですが、CarrySaveAdderによる高速化で、 満足してしまったからではないかと思うのです。そこに僕の 「分割加算(Segmentation Adder)」を使うとパイプライン化が進んで、 高性能かつ高効率になる。


7月7日 発明の大きさは人類への貢献度

発明にも役に立つもの、あまり役立たないもの、いろいろあると思います。 人類への貢献度の大きさが、発明の大きさなのだと思います。 青色発光ダイオードを発明した中村さんは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)は、人類への貢献度が大きいと思っているのです。


7月7日 Verilog版のSnakeCube開発(21)

頭痛で作業が進んでいません。久々に外に出ました。隣の人の話声は、 普通、意識をせずとも、聞こえてしまうはずですが、音は耳に入っても、 聞き取れていないことに気づいた。頭痛で劣化が進んでいるようです。 一時的なものだといいのですが。
本題に戻るとWindows環境を構築しています。 SnakeCubeはオープンソースではないのでクラウドの開発環境は使いにくいのです。 Windows版icarus verilogの入手のためトランジスタ技術 2020年 1月号を買いました。 付録のDVDにicarusが入っているみたいです。(少し古いバージョンのicarusは、 別のCQ出版の本についていたDVDがあるので、急いでいません)
そういえば6月30日に、トランジスタの技術の編集長が退社されたとか。

2020年7月7日 9:30AM
参考までLinuxの開発環境はインターネットには接続されていません。 Windowsの開発環境も環境導入後はオフラインで利用します。 WindowsのC言語版SnakeCubeのバイナリはインターネットに接続していたことは あったかもしれませんが、公開用のバイナリなので、ディスアセンブルしても、 モンゴメリ乗算器の論理は読めないようになっているので問題ありません。


7月6日 Verilog版のSnakeCube開発(20)

頭痛で作業が進んでいません。しかし必ずSnakeCubeを作ります。 XilinxのFPGAに実装され性能が出るあたりで、 今日、この状況がこれで良かったのか、考えるようにしたい。 そして、その後も、今日、この状況がこれで良かったのか、考えることにします。


7月6日 gab PRO 1年分買ってみた

gabはマストドンに似たSNSです。1年分60ドルをビットコインで買いました。 ビットコインが安いときに買って、現在、少し高くなっている状態で gab PROを購入できたので20%くらい得できたかも。
↓これがgab PROになったアカウント
https://gab.com/zevios
8bit CPU ICF3-Zの話が多いと思います。 マストドンでもフォローできる場合があるみたいなので、もし興味があれば、 フォローしてください。 gabについては少し調べてからのほうがいいと思います。


7月5日 Verilog版のSnakeCube開発(19)

作業報告です。それ以上ではありません。 頭や体の痛みは、あまりありませんが、頭や体を寄生虫に蝕まれるような状態で、 作業はあまり進んでいません。痛まないが、妨害率が高い。


7月5日 CPUエミュレータQEMUとICF3-Z

新しい話はありません。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動画あるので、よければどうぞ。

Fabrice Bellardさんは、FFMPEGなどいろいろなオープンソースのプロジェクトで活躍されています。 昨年(2019年)にQuickJSという、小さな組込み向けJavaScriptエンジンもリリースされたとか。


7月4日 銀行向け署名端末を考えてみた(4)

(1)(2)(3)は、日記(1)日記(2)日記(3)をクリックすれば読めます。
日記(3)のところで署名端末では乾電池が不要になる話をしました。 乾電池が不要でも時計の時刻を維持するために水銀電池が必要なのではないかという意見。 例の無線通信経由の意見なので、いいと思っていませんが。
脆弱性が無いことを保証するのは難しいのかもしれませんが、時計も水銀電池も不要なのではないかと、 思っています。銀行側のサーバで乱数を生成して、署名端末に送信。 送られてきた乱数を使って返信データを作成すれば、いいように思いました。
参考までにジャパンネット銀行で、もらったトークンは、10年で新しいカード型のトークンに 交換してもらってます。つまり、10年間、正確な時間を維持できる程度には、 時計の品質も、水銀電池の品質も、良くないといけないので、削減できれば、端末のハードは安くできるのかも。 地球環境にも良さそう。
ただUSB接続のチップは信用がなくてもいいので激安なものが使えると(1)で書いたのですが、 10年間動作する程度には、品質の高いものを入手する必要があるように思いました。 (改竄、盗聴は問題がなくても、気分で故障されると問題という話です)


7月3日 Verilog版のSnakeCube開発(18)

作業報告です。それ以上ではありません。 ほぼ1日中、眠っていました。 Verilog版のSnakeCubeシミュレータで大量シミュレーションをしているところですが、 SnakeCubeの開発環境は、サイバー攻撃に備えWindows環境や、その他のOSでも 動作するように考えています。Windowsには標準ではPerlが入っていないため PerlがなくてもシミュレーションできるようにC言語のプログラムで代替しているのですが、 C言語の標準ライブラリではシミュレーションのプロセスの標準入力か、 標準出力のどちらか一方しか操作できず、Perlの便利さを痛感しました。
このためverilogで連続シミュレーションのための仕組みを入れ込むことになったのですが、 verilogの標準関数の$fopenでは、ファイルが存在しているとき、書き込みオープンをすると エラーになってくれなくて困ったのと、$randomが毎回同じ乱数しか生成してくれなくて困りました。
乱数はC言語で生成してコマンドラインでverilogに渡すということで乗り切りました。


7月2日 ICF3-Zで自分のオリジナルCPUを作ると面白い

新しい技術を使って実用性のあるものを作れないか考えている人向け。
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を搭載したマイコンを作りやすいから。


7月2日 Verilog版SnakeCube、大量シミュレーションで検証中

AMD 6コア12スレッドのCPUでverilogによるSnakeCube(48bit)シミュレーションを 大量に実行中です。RSA暗号を演算するための、改良型のアルゴリズムを使ったマイクロコードで シミュレーションをすると数分でエラーになったので、何が原因か、 調べたのですが改良型では演算できる鍵長が2bit小さくなることを忘れていただけでした。
エラーでシミュレーションが止まってくれたおかげで、SnakeCubeのverilogが間違った 答えを出力すれば、エラーで止まると確認できました。

左目の眼球を筋肉が外側に引っ張るので、左目をつぶって作業をしたり、日記を書いたりしています。 SnakeCubeは、 すばらしい発明だと思っていますが、まだ僕は、筋肉制御されていなければ、 ならないのでしょうか?このために作業速度は半分も出ていないと思います。


7月1日 楕円暗号の秘密鍵をリモートから盗める

産総研の人のツイッターを見ていると 「ハードウェアに入っている楕円暗号の秘密鍵をリモートからのアクセスで盗める」 という話が書かれたサイトのリツイートが、あったので、さっそく概要を読んでみました。

楕円暗号のハードウェアの実装によっては、リモートからアクセスで秘密鍵が盗める。 しかもタイミングだけで盗めるということのようです。
僕の考えは、組込みソフトウェアによってタイミングを調整し、例えばどんな値でも 同じ時間で計算するようにするなどの対策をすれば、いいのかもと。 サイトには、それが難しいと書いてありますが。

ちなみに産総研の人のツイッターをフォローしているだけで税金を使っているのと同じという人が 出てきそうなので説明すると、8bit CPU ICF3-Zは税金を使わないことを宣言していますが、 SnakeCubeでは、宣言していません。ただSnakeCubeも税金を使うことで評判が落ちるので、 税金を使いたいとは考えていませんが、SnakeCubeは次世代ICカードなど、 社会インフラでの活躍が期待されるため、必要なら、やむを得ないと考えています。


7月1日 2日前のことが思い出せない

クレジットカードで買い物をしたと思われる支払い(2000円弱)が、 思い出せなくて苦労しました。普通では数週間前に買った物とか、 日常の小さい出来事を、いちいち記憶しようとしなくても、覚えていることは多いでしょう。 たとえすぐに思い出せなくても、思い出そうとすれば、 思い出せることもあると思います。記憶は消され続けているような感じ。 このことは今に始まったことではありませんけど。


6月30日 Verilog版のSnakeCube開発(17)

作業報告です。それ以上ではありません。 Verilog版のSnakeCubeシミュレータに標準入力を使ってRSA暗号の演算データを入れて、 Verilogのシミュレータを実行、演算終了後、期待値と比較。 結果が違っていれば、シミュレータを異常終了させる。 これを適切な乱数データで大量シミュレーションできる仕組みでテストできるようになりました。 正しくは、動き始めた。
シミュレータを異常終了させる方法はicarusのvvpで-Nオプションを付けると $stopで異常終了するようです。


6月30日 TTLでICF3-Zを作るならという話(2)

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命令が作れたりします。


6月29日 TTLでICF3-Zを作るならという(1)

オープンソースのソフトウェアと同じでCPUもTTLで作りたいという人はあるかもしれない。 ICF3-Zは、プログラムメモリを多く消費するアーキテクチャで、 圧縮命令によってプログラムを圧縮しないと、メモリ効率の悪いアーキテクチャですが、 その分、CPUコアが小さくなっているのでTTLでも作れる規模かもしれない。 僕はTTLでCPUを作った経験がないので、適当なことを言って恐縮ですが。 ICF3-Zは8bitの演算レジスタA,B,C,Dを持っているので 8bitの汎用レジスタ16本は、リードもライトも転送だけで1サイクルのアーキテクチャなのです。 つまり汎用レジスタをSRAMに置けそう。ディユアルポートのSRAMもあるみたいですが高価なので、 1ポートのSRAMで、前半ライト、後半リードみたいに時分割すれば、なんとか、なる。多分。


6月29日 64バイトのメモリコピーの性能

言いたいことは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と比較できるように補正しています。


6月29日 銀行向け署名端末を考えてみた(3)

カメラ端末に比べて署名端末はUSBケーブルを使うので、少し利便性が落ちる。 しかしカメラ端末は乾電池を使っているが、署名端末はUSBケーブルから電源を取れるので電池不要。 端末の製造原価や地球環境的にもUSBケーブルから電源を取れるほうがいいと思います。 乾電池ではなく充電式電池であっても、同じことが言えるでしょう。


6月29日 Verilog版のSnakeCube開発(16)

作業報告です。それ以上ではありません。 僕の稼働率を1日、2時間くらいまで抑えることを目標としているらしい。 おかげで寝ている時間が長くなっています。 verilogシミュレーションの入力データにファイルではなく、標準入力を使うように改造しています。 icarusでは動作するようになったのですがXilinxのxsimでは、まだうまくいっていなくて、 少し時間が、かかっています。標準入力をあきらめるか、どうするか。


6月28日 銀行向け署名端末を考えてみた(2)

考えてみた(2)の結論は署名端末、良さそうです。
カメラ付き端末ではブラウザでQRコードを受信、 端末が表示する数桁の数字をブラウザで送信する方法でした。 署名端末ではBASE64で送受信をすればいいと思います。 これには専用のBASE64アプリが必要になります。 銀行への送受信はブラウザでするため、このアプリはネットワークにアクセスすることもなく、 署名端末と送受信するだけです。ソースコードを公開しても問題がないものなので、 アプリのインストールが心配な顧客がいても対応できると思います。
BASE64のデータは、送受信データに署名を付けることで改ざんされることはありません。 そして読み取られても、それほど影響はないようには思いますが、共通鍵で 暗号化しておけば、安心です。
共通鍵暗号で最も利用されているのはAES暗号ですが、AES暗号は8bit CPUでも 高速に演算できます。


6月27日 銀行向け署名端末を考えてみた

無責任ながらパソコンで銀行振込をするための「署名端末」を考えてみた。 「署名端末」は、現実的なところにあるように思っています。
銀行によってはカメラ付きの端末で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は流行ったほうがいいのかも。


6月27日 急に動画を1万円分買いました

急に動画(R18)を買いたくなったので1万円分買った。 うち6600円は12本のまとめ買い。
これは、まとめ買いではないけど→
自宅警備員 1stミッション イイナリ巨乳長女・さやか~編/PoROre


6月26日 家族の勧めで家電を買うことに

CPUの話をすると、良く家電が壊れたりするのだけど気のせいだろうか。 家族に家電(トースター)を買うように勧められた。既に価格は調査済みで予算は5000円ということだった。 amazonで買うのが楽なのだが、市民が気になり、わざわざ、近所の家電量販店(Joshin)に行った。 5000円弱のトースターを買いました。


6月25日 Verilog版のSnakeCube開発(15)

作業報告です。それ以上ではありません。 サイバー攻撃で身体に負荷がかかり1日に数時間以上、完全に 動けなくなることも多い状況です。以前として作業の進み方は遅い。 作業をしていても負荷が、かかっていることも多い。
Verilogのシミュレーションを乱数データで大量に流す仕組みを開発中。 C言語のシミュレーションで開発したものを流用するので、わずかな時間で開発ができるだろう。


6月24日 逆数演算の知財

知財に興味のある方のみ。 SnakeCubeのサイトで 「逆数演算の知財」のページを追加しました。


6月23日 Verilog版SnakeCubeでRSAできました!

無事、Verilog 48bit版SnakeCubeでRSAの署名演算が計算できました! まだ完全ではありませんが、暗号プロセッサとモンゴメリ乗算器の接続がうまくいったので、 完成に近いです。これから1032bit版に拡張していきますが拡張することを考慮して 開発環境を作ってきたので、それほど時間はかからない予定。 そこから、XilinxのFPGAへ貼り付ける作業をして、性能測定へ。


暗号プロセッサ OpenICF3