Home
2024年
2023年
2022年
2021年
2020年

6月30日 GPUを使ったパスワードクラッカーの性能測定

僕が過去、何をやっていたのか、覚えていない人も多いと思っています。 ゼロ遅延マルチコアを日記に書いてからGPUコアを見せに来る人が多くなっているように思います。 僕がGPUコアを知らないと思ったのかもしれない。

2008年ごろだったかな。まだIntelのAES専用命令が普及していなかったころ、 GPUを使ったAES暗号の高速化の需要はあった。1カ月半くらいでnVIDIAのGPUを勉強して、 AES暗号の復号化をGPUで高速化するフリーウェアを開発して、米国 nVIDIAのショーケースに 飾ってもらったこともある。AESの暗号化は並列化できないけれどCBCモードはブロック単位で 並列復号化が可能なためGPUを使ってブロック単位の並列化をしている。

その後、GPUを使ったパスワードクラッカーを開発して販売してみようかと思って、 SHA-1などの関数を自作したけど、結局、フリーウェアとして配ることにした。 配布しているのはクラッカーではなくて、クラッカーの性能を測定するもの。

sha1bench
最終更新日が4年前のソフトだけど1年くらい前までは、動ていたので、今でも動作するかも。

原因がわかった
僕の日記を見てSIMDとSIMTの区別がついていないと思ったのね。
確かに区別できていなかった。でも米国のnVIDIAのショーケースに飾ってもらった AES暗号のフリーウェアはCUDA(SIMT)だし、パスワードクラッカーの性能測定ソフトも OpenCL(SIMT)だから、SIMTについては知っている。
昔、SIMTで疑似MIMDを動作させるソフトを作って公開したことがあるけど、 すごく単純なプログラムでは、動作したけど、少し複雑なプログラムでは、 うまく動かなくて、公開停止にした経験があったかも。FakeCoreと呼んでいたやつ。 産業スパイによる妨害が多発していて、非常に限られた時間で活動していた結果、 十分にテストせずに公開したことが、失敗の原因だった。

GPUコアがブラックボックスであるために、GPUコアを推定して作ったことも失敗の原因。

今回のゼロ遅延マルチコアは、自分が設計したコアだから、FakeCoreのような失敗は無いと思う。


6月30日 WZetaのゼロ遅延マルチコアの用途

ゼロ遅延マルチコアについては6月29日の日記を読んでください。 ゼロ遅延マルチコアの8bitパソコンを作れば儲からないかと思っている。 市販のFPGAを買って組み立てるだけで8bitパソコンのハードになるから。

4コアの8bitパソコンは市販FPGAの実装できると思う。 4コアのうち1つをメインCPU、1つをVDP(GPUのようなもの)、1つをサウンド用、 1つをVGAやLCDの表示に割り当てると良さそう。 1コアをサウンド用に割り当てれば、安定した音声が出力される。 ゲームのエミュレータを作っている人には良くわかることだろうと思います。
汎用CPUコアのVDPが非力であることは間違いないと思うけどMSXと違ってメモリを メインCPUと共有しているので、CPUによる直接書込みと合わせれば、 性能をカバーできるかもしれない。
VGAやLCDに1コアを割り当てれば、多彩な画面モードに対応可能。 またアプリ側で画面に割り当てるメモリを決められるので、アプリが画面を 多数作って、表現力を高めることもできる。多彩なスクロール機能を アプリが勝手に作れるなど。LCDドライバのSRAMを削減してコストダウンできるところは、 非常に魅力的かもしれない。
まず8bitパソコンでWZetaやゼロ遅延マルチコアを普及させ、成功に導くことができるかも。

銀行向けトークンの最新のセキュリティのためには大型LCDが必要になります。 電子署名をするには、何に対して署名をしたのかを、しっかり目視する必要があるからです。 つまりLCDドライバからSRAM削減が期待できるWZetaのゼロ遅延マルチコアは、最終的に 銀行向けトークンに採用され、あっとゆうまに30億デバイス?で使われることになるかもしれません。

ゼロ遅延マルチコアはCPUアーキテクチャの超電導?みたいなことを言っていますが、 画面表示を消して4コアで全力計算をさせた場合、AES暗号の暗号化のような並列処理が難しいものでも、 理論的には1コアの4倍近い性能がでるように思います。実質2倍くらいかも。 不揮発メモリのリード性能が遅いために性能が出ない場合があります。 そういったところで並列処理は、役に立つのですが、あまり並列化で性能が出ないことが多く、実用化が難しかった。 ところが、ゼロ遅延マルチコアでは、例に挙げたAES暗号のように性能が出てしまうので、実用化できてしまって、 ゼロ遅延マルチコアのマイコンが活躍するかもしれない。 ゼロ遅延マルチコアが活躍できる市場の範囲は狭いかもしれないですけど。

冒頭に書いたようなゲーム専用8bitパソコンみたいなもので、 このマイコン新技術を立ち上げるのが、いいように考えています。 妨害が多いと成功しません。この国の将来を考える人は、よろしくお願いいたします。


6月30日 WZetaはノイマン型?ハーバード型?

半導体エンジニアの人やマイコン基板を使っている人たちがマイコン アーキテクチャの 雑談をツイッターの音声チャットでしていた。 その音声チャットを聞いてWZetaについての話を日記に書いてみたくなった。

僕も技術用語の定義について、非常にいい加減なところはあるのですが、アーキテクチャが 専門でない人たちよりは、マシかもしれない。

超軽量8bit CPU WZetaの説明書には ノイマン型と書いているけど、メモリモデルの設定によってハーバード型にもなる。 さらにハーバード型の設定でも、プログラムをデータ領域置くことができるので JITコンパイラみたいなこともできる。

超軽量なCPUにしては、複雑なことをしているように見えるかもしれない。 しかし、実装は非常にシンプルになっている。SDogコアではアドレスの 上位3bitにORゲートを入れるだけのような、実装。 音声チャットでも、この非常にシンプルな割に効果的な実装に気付いた人もあったのかも。

これに気付けたのは、東大のCPU実験?教育の成果だということかな。 僕が、どんなに素晴らしいことを言っても、わかる人がいないために、 大損するケースを示唆しているのかも。 そういう問題のために産業スパイが24時間いるとも言える。いざってときは、、、


6月29日 マイコン新技術、ゼロ遅延マルチコア、CPUアーキテクチャの超電導!?

マルチコアとは1つのプロセッサ・パッケージの中に複数のプロセッサコアを入れたもの。 わかりやすく言えばIntelやAMDの4コアや8コアと同じで、複数のコアを搭載したCPUのこと。

普通は、それぞれのコアが1次キャッシュを持って2次、3次キャッシュを経由してメインメモリを共有し、 コア間のデータ転送を行う。このためあるコアが演算した結果を別のコアが演算できる状態になるまでに 遅延が発生する。キャッシュ以外の方法もあるが遅延は発生する。遅延の性質と大きさは実装によって違う。

ゼロ遅延マルチコアはコア間のデータ転送による遅延が無いマルチコア。僕が作った言葉。

電気抵抗ゼロの超電導のように、これまで並列化しても高速化されないアプリが、 高速化され実用的に使えるようになる。このゼロ遅延マルチコアによる並列処理を 『超細粒度並列』と呼ぶことに。

ゼロ遅延マルチコアが実際に作れるのか?ということについて。 無理に作ることはできても、実際に実用的に役立つものは、作れないだろうという予想になったはず。 ところがゼロ遅延マルチコアを作ろうと思ったわけではないけど WZetaを搭載した 8bitパソコンの グラフィック表示をマルチコアでできないかと考えているうちにWZeta SDogコアでは、 ゼロ遅延マルチコアが実際にできることが判明した。

4コアのゼロ遅延マルチコアは、XilinxなどのFPGAで実際に作れる。

ゼロ遅延マルチコアが、本当に実装できることを説明します。
SDogコアは全命令が4サイクルで実行される。メインメモリはデュアルポートのSRAMなので、 同時に2つまでリード・ライトが可能。SDogのHALFモードではハーバードアーキテクチャと 同じようにプログラムメモリとデータメモリを分けることができる。 下図のCore2、Core3は1サイクル遅れで動作。


Singleコア(4サイクル ピッチ)
|f| |F|D|e|E|
        |f| |F|D|e|E|
                |f| |F|D|e|E|
                        |f| |F|D|e|E|

Core 0 |f| |F|D|e|E|
Core 1 |f| |F|D|e|E|
Core 2   |f| |F|D|e|E|
Core 3   |f| |F|D|e|E|

f: 命令コード1バイト目のフェッチ、プログラムメモリにアクセス
F: 命令コード2バイト目のフェッチ、プログラムメモリにアクセス
D: デコードしてデータメモリにアクセス
e: 命令の実行前段。メモリアクセス無
E: 命令の実行後段。データメモリにアクセス

各コアのプログラムメモリ(P)へのアクセスとデータメモリ(D)へのアクセスで 分けると次のようになっている。


Core 0 |P|D|P|D|P|D|
Core 1 |P|D|P|D|P|D|
Core 2   |P|D|P|D|P|D|
Core 3   |P|D|P|D|P|D|

全てのメモリアクセスが1つのメモリに対して同時に2つまでになっていることがわかる。

ここで注意してほしいのはCore 2,3の演算結果をCore0,1で使えるようにするため、 Core2,3でライトしたアドレスをCore0,1がリードした場合は、メモリを経由せずに、 Core2,3でライトした結果を使う。あるコアで演算結果をメモリにストアした命令の次の命令で、 別のコアが演算結果を使うことができます。 SRAMの実装によっては、何もしなくても、正しい結果になる場合もある。

WZeta公式サイトにある 「WZeta 命令セット SDog コア設計資料」と上記説明で、わかるように書いたつもり。

プログラムメモリは通常、書き換えは無いので各コア、別々に不揮発メモリにしてASICにすると有望。 不揮発メモリは一般的にSRAMと比較して遅いので時分割すればシングルポートのSRAMでいい。
これはフェイクニュースでは、ありません。


6月28日 『超細粒度並列』が可能なマルチプロセッサ

昔の日本の大学の話をすると国立がハードをやることが多いため、早稲田は ソフトウェアに傾倒していることが多かった。このため早稲田は並列処理に強く、 「近」細粒度並列という言葉も、早稲田の先生が作ったのかな?と思っています。

細粒度並列とは人によって定義が違うのかもしれませんが、スーパースカラとか、 VLIWなんかが、細粒度並列です。「近」細粒度並列は、それに近い並列処理という 意味かと思います。

スーパースカラはハードが動的に並列処理をしますが、VLIWはコンパイラが並列性を 考えて1つの命令列を作ります。

「超」細粒度並列という言葉は、僕が作った言葉です。 VLIWと同じく、コンパイラが並列性を考えますが、プロセッサ数の命令列を作ります。 あるプロセッサで演算した結果を、別のプロセッサで演算するためには、 一般的には遅延が発生します。 この遅延をゼロにしたマルチプロセッサで並列処理をすることを「超」細粒度並列 と言うことにします。遅延ゼロならば並列処理によるオーバヘッドが、非常に少ないため、 高性能になります。そしてコンパイラの並列アルゴリズムが高い並列性を引っ張り 出すことで、さらに高性能になるのです。

現、早稲田副総長、笠原先生が博士論文を取得したのが、この並列アルゴリズムで、 遅延ゼロの世界では正しいのですが、実際のマルチプロセッサでは少なからず、 遅延があるので、ズレが生じます。このズレを補正するために、僕を含めた 笠原研の研究者が、並列アルゴリズムを改良する研究をしていたのです。


6月28日 完全MIMD蜜結合マルチプロセッサは早稲田でどうなっているの?

この問合せがうるさく来ている。ICF3-Zのサーバー移転作業中で、忙しいということと、 まず完全MIMD蜜結合マルチプロセッサのハードができないと、 早稲田の自動並列化コンパイラのソフトウェアで使うことができない。 なので今、早稲田にアクセスしても、話すことがないのです。

WZeta SDogコアを使えば、ハード(キャッシュレス・クワッド)が簡単に作れることは、作る前から、 わかることなのですが、1人で、いろいろな仕事をしているので、完成までに時間がかかるのです。 作業が進むように妨害を抑えてもらえると助かります。

僕に大損させることを考えている人が、多いので、それを回避しながらだと、非常に時間がかかります。 このあたりを、改善してもらえると、進みが速くなると思います。


6月27日 SHARPのポケコンPC-1350対応のモード作ってみた

超軽量8bit CPU WZetaを搭載したパソコンの試作シミュレータWZ-660にLCDを真似た表示機能を追加。 いろいろな画面サイズを表示可能ですが、画像は1984年にSHARPから発売されたポケットコンピュータ PC-1350のサイズです。PC-1350は150x32のサイズですが5つのLCDコントローラで構成されています。 このため左から順番に5個の領域に分割されています。 画面左端のLCDコントローラにはアルファベットを表示させ、残りの4個には1ドットを表示させ、 全体を左シフトさせるプログラムを動作させているところ。詳しくは YouTubeにアップロードしているので、興味があれば見てみてください。

WZ-660はWindowsやLinuxなどで動作します。テキスト表示機能だけで作られているので グラフィック表示ライブラリは使用していません。フォントと画面サイズを手動で設定してから起動する 手間がありますが、高い移植性があります。Windows 7以降のWindowsは自動で設定されます。

画面サイズだけでも対応すればWZ-660のシミュレータで、何か作ってみたい人があれば、ご連絡ください。 WZetaの普及に役立ちそうなら対応するかもしれません。 PC-1350を選んだ理由はありません。メンテナンスに手間がかかるようになれば、削除されると思います。

公開しているWZ-660シミュレータは古いままです。リリースできるように作業を頑張っているところです。

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


6月26日 8bit CPU WZeta開発の進捗

マイコンの新技術となるか?完全MIMD蜜結合マルチプロセッサを開発して 「超」細粒度並列も、やっていきたいのだけど、産業スパイの小規模な妨害が 続いているため、滞っている。国内のメーカを調べてもSRAMの無いLCDドライバは存在している。 従来はマイコンのSRAMからLCDドライバのSRAMにコピーをしているのだけど、マイコンから 直接LCDを操作してSRAMを省き、しかも柔軟性のある画面が構成できる。

さらに重たい計算をする場合にはLCDを消灯してLCDに割り当てたCPUコアを計算で使える。 (昔のポケコンは計算中はLCDを消灯して表示に割り当てたメモリを計算に使っている。 このため、無理にLCD表示をすると、計算している様子が見えたりする)

普通のCPUコアでは不可能な、WZeta SDogコアでしかできない、 完全MIMD蜜結合マルチプロセッサは、実際に実装してみて、どのくらいのメリットになるのか、 わからないけど、良さそうに見える。

ポケコン関係をネットで検索すると、なんとなく偏りが見られたので、 ヤフーの検索エンジンに切り替えたりとかしている。 結局、検索するのが面倒になって、ポケコン風フォントを自作している。 とりあえずA-Zの26文字は作ってみた。Vectorに5x7フォントを作る 専用のアプリがあったから、結構、すぐにできた。

自作フォントに続いて、自作コンパイラも作りたいなとか妄想中。 パーサ不要のハードマクロ命令を活かした言語、ほとんどインタプリタかも。 妄想で終わるかもしれない。

僕が中学生の頃の話。工学社I/Oを読んでいて、自作言語、OS、コンパイラが、楽しそうだった。 それで整数型コンパイラWICSを大阪、日本橋まで行って買ったこともある。 親に買い与えられたものでは、なかった。中学生が何故、整数型BASICコンパイラを買おうと思ったのか、 今、思うと不思議。今、BASICの構造を調べると用途ごとにスタックを使っているものが多かった。 8bit CPU WZetaは特殊なINC命令(INCX,DECX)があるので、ソフトウェアでスタックを作るのが便利だから、 BAISCは作りやすいかも?

WZetaは実用を考えたものですが、趣味で個人規模のコンパイラを作るのも、面白いのではないかと、 思っています。


6月24日 ZOOMで量子コンピュータの専門家の話を聞いてみた

ツイッターのTL上に「第66回 ISSスクエア水平ワークショップ」が紹介されていたので ZOOMで見てみた。配信内容は書けないけど、東芝の座長が、ちょうど僕の聞きたかった 質問をされていた。回答はIBMの量子コンピュータの詳細、RSAが解読できるのか?は、 IBMでないと、わからないという答えだと僕は思った。 世の中の都合でRSAが危険になったとか、まだ大丈夫だとか。そういう状態がまだ続く。 短いプレゼンなので内容を選定しているのは理解しますが、RSA 2048bitの解読時間の基準が1時間だけだったのが、 寂しかった。SSLの証明書の有効期間は1年になったけど、発行した瞬間に解読を開始するなら1年の時間がある。 わざと外したのかな。

NISTのコンペの結果の報告は、情報収集していなかったのですが、 人によっては価値がある内容かも。

まとめ「第66回 ISSスクエア水平ワークショップ」を聞いて、 暗号プロセッサSnakeCubeと耐量子暗号の併用を考えたほうが良いと思えた。


6月24日 SHARPのポケコンの画面モードを追加すべきか検討中

6月19日の日記でWZ-660に液晶ディスプレイのシミュレーション 機能追加したことを報告しました。知ってはいたのですが1980年代~1990年代のSHARPの ポケコンのVRAMの配置とは90度ずれています。90度のずれに対応するか悩んでいます。 中古店に在庫が大量にある状態だと、液晶を交換させて復活みたいなことで、 儲けが出る人があるような気がしていますが、数が少ないと、苦労の方が多いかなと。

一応、VRAM上では256×32の画面を240×32で表示できるようにしてSHARP PC-E500に 対応できるようにしたのですが90度ずれていると表示プログラムを完全に書き換えるのに近くなるかなと。 PC-13系の150×32、160×32も同様、256×32を表示だけ小さくすることはできます。

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


6月22日 子供に科学の本を読ませた効果

効果を知りたい人以外は読み飛ばしてください。
ブルーバックスにも「10歳からの相対性理論」のような子供向けの科学の本があるのは、 知らなかったのですが、子供に科学の本を読ませた効果について僕の実例を紹介してみます。

多分、学研の図鑑で「宇宙」「地球」とか、漫画で書かれた宇宙の本とかを親から与えられた。 そのおかげで天体に興味をもって夜空の星を肉眼で見ていた。肉眼で見えるのは6等星くらいまで。

中学に入ってからは宇宙よりも8bitパソコンが楽しくなってしまって宇宙についての知識は、 そこで途絶えているので、宇宙についてあまり知らない人になっている。

最近、ベテルギウスが暗くなったというニュースについて、産業スパイが 「観測機器の故障を世界の人に訴えたくてやっている」ということを散々言っている。 故障を修理するための税金が必要だということらしい。 宇宙に興味が無くなっていたので、聞き流していたのだけど、何度も、言ってくるので、 気付いた。

ベテルギウスは子供の頃、とても明るい星として、記憶していた。 一昨年、2等星近くまで暗くなったということだけど、それなら肉眼で確認できる。 産業スパイの嘘を見破ることができた。


6月21日 早大副総長の博士論文を活かすマルチプロセッサ

現在、早稲田大学の副総長である笠原先生の研究室に僕がいた頃に聞いた話。 笠原先生が博士号を取得したのはマルチプロセッサのスケジューリングアルゴリズムCP/MISF だったと思う。プログラムをタスクに分割して複数のプロセッサに割り当てる方法なのですが、 多少、抽象的な計算機が前提となっていた。普遍的な理論ではあっても、実際の計算機と僅かに乖離していた。 そして笠原研の並列マシンOSCARは、この乖離を埋めることに成功している。 理論に実機を合わせるみたいな。

時は流れて40年後の今、僕のキャッシュレス・クワッドが、多分、実際に役立つマルチプロセッサでありながら、 笠原先生の理論の前提となっている計算機と適合するということが起きた。

つまり研究は終わっている分野なので、笠原先生の理論を実装して儲かる事業を展開していく話になれば、 早稲田大学は、キャッシュレス・クワッドを応援することができるのではないだろうか。 キャッシュレス・クワッドのWZetaは税金プロジェクトでは使えない方針なので、そのあたりを、 考える必要はあるように思いますけど。

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


6月21日 コンピュータ・アーキテクチャの研究者の作業現場

産総研の須崎氏のツイートが目に入った。 僕は電気工学科を卒業後、修士は計算機工学専攻に入ったけど2年で卒業したから、 ワークショップというのが良くわかってないけど研究者の作業現場報告ということなんだと思っている。

Sixth Workshop on Computer Architecture Research with RISC-V (CARRV 2022)

並列マシンOSCARの研究室の若い先生がRISC-Vの発表をしてるということで見させていただきました。 デスクトップやサーバーで使うくらい大規模な不揮発メモリを使って RISC-Vを動かしてみようという試み。

それよりイギリスの発表、RISC-Vのマルチコアで暗号実装を考えたHYDRAが 気になったので見てみました。軽量のRISC-Vのコアを使って暗号向きの改造をした4コアのマルチプロセッサを実装したようです。 まず実装してみることが大事というレベルのものだった。 RISC-Vコアを使うことがポイントであるということみたい。
あまり関係ないけど論文というものに目が慣れてなくてオックスフォード大学かと思ったら、 オックスフォードにある企業だった。「東京の大学」を東京大学と間違うのと同じかな。

トルコの先生の名前が1週間前に、僕が プレスリリースで参照したトルコの論文の人と名前が似ていた。 あまり関係なかったけど図だけ読んだ。軽量なRISC-Vコアとメモリをアービターで繋いている図は、 印象的だった。
何故か?僕が数日前に日記に書いたキャッシュレス・クワッドにはアービターがない。 多分、イギリスの4コアHYDRAもAXIバスで接続されている。

東京の大学である早稲田の電気工学科には僕の時代に平山は3人います。 1年上の先輩はIBMに入社、2年下の後輩はMIS.Wというコンピュータ・サークルなので 非常に紛らわしいのです。暗号プロセッサSnakeCubeとキャッシュレス・クワッドの 平山は同一人物です。名前は直紀(Naoki)。記憶に間違いがなければ残りの2人の名前は同じ 「和彦」(Kazuhiko)ではなかったろうか。

世界のコンピュータサイエンスの研究者の方々は、とてもユーモラスな人たちが 多いのかと思いました。

昨日の日記にも書きましたが、アービター不要の 高速なキャッシュレス・クワッドを実現できるのはSDogコアのメモリアクセスが 他に無い特性を持っているからなのです。 普通にCPUを設計すると規則的なメモリアクセスには、ならないので。
このキャッシュレス・クワッドは、リアルタイム制御で、とても便利ではないだろうか。
ゲーム機のエミュレータを作るとわかるのだけど十分に高性能なCPUでなければ サウンドのエミュレーションがガタガタになる。サウンドは出るけど鑑賞には堪えない。
そこでトランジスタ数の少ないCPUコアを丸ごと割り当てれば、鑑賞に堪えるサウンドが低スペックのCPUでも出せる。
リアルタイムに超強い新しマイコン?みたいにならないだろうかということなのです。自信があるわけではないですけど。
新しいテクノロジはゲーム機を使って進歩させる流れとか、、、

これまでのCPU技術ではできなかった超細粒度並列処理も可能で、普通はできないAES暗号の暗号化の並列処理も、 マルチプロセッサでできるように思う。AESの並列処理は、 まだ実際に実装してないので確実な話ではないけど。 このキャッシュレス・クワッドの超細粒度並列処理がマイコン新技術になるか、ということかも。
Vattlessを思い出した人はあったかもしれない。 Vattlessは、かなり疎結合なマルチプロセッサ。 キャッシュレス・クワッドは、かなり蜜結合なマルチプロセッサ。全く異なるマルチプロセッサ。


6月20日 8bitクワッドCPUは復刻版OSCARミニなの?

前回の日記、「8bit CPUのキャッシュレス・クワッド」を書いたら、 それは復刻版OSCARミニなの?と思った人があったので解説します。

OSCARとは早稲田大学の現副総長が約40年前に開発した8プロセッサの並列マシンのこと。 高性能を狙ったマシンではなく、汎用的な並列マシンを開発して並列コンパイラの 研究結果の検証をすることを目的としたマシン。並列コンパイラは、 プログラムをタスクに分割して、分割されたタスクを複数のプロセッサに割り当てる。 効率的な割り当てをするアルゴリズムが、僕の卒論&修士論文の課題だった。

効率的な割り当てをするのに命令単位の実行時間がわかっていると精密に結果がでる。 このためOSCARは割り算まで1サイクルでできる実装になっていることで有名だった(悪い意味で)。

復刻版OSCARミニなの?という話に戻るがOSCARは3本のバスに8個のCPUが接続されるアーキテクチャ。 僕の言うキャッシュレス・クワッドは4個のCPUが集中共有メモリだけで接続されたアーキテクチャ。 アーキテクチャは違う。しかしWZeta SDogコアは全命令4サイクル。つまり並列コンパイラにとって、 最適なマシンではある。復刻版OSCARミニだと言うと副総長から苦情が出そうなので、 復刻版OSCARミニとは呼ばないことにします。

僕が並列コンパイラの研究室にいたのは1991年~1994年でした。 しかし既にOSCARは老朽化していたため富士通のスパコンVPを、新しいOSCARとしてOSCAR2という プロジェクトが立ち上がっていた。OSCAR2は4台のスパコンが集中共有メモリに接続された モデルなのでキャッシュレス・クワッドに似ているけど各スパコンにキャッシュが無い ということはなく、これもやっぱりアーキテクチャは違う。 参考までに言うと、沼津にある富士通のスパコンに研究室のマシン経由でアクセスして 集中共有メモリの性能をテストする作業を、させて頂いたことがある。 1年下の後輩は富士通に5人入っているので富士通のスパコン関係で僕を知っている人は 多いと思います。

高速なキャッシュレス・クワッドを実現できるのはSDogコアのメモリアクセスが他に無い特性を持っているからなのです。


6月20日 8bit CPUのキャッシュレス・クワッド

「キャッシュレス・クワッド」また勝手に言葉を作ったので忘れてください。

単なる8bit CPUコアのクワッドと言わなかったのは、これまで キャッシュレスのMIMDクワッドは無いだろうなと思ったから。 調べてないのでわかりませんが。

8bit CPU WZeta SDogコアならキャッシュレス・クワッドは容易に作れそうだ。 SDogコアはアドレスの前半をプログラムメモリ、後半をデータメモリに分ける設定が可能。 ほとんどROMとして使うMRAMを各コアのプログラムメモリに高速なSRAMを共有の データメモリに割り当てる。何がいいかと言えば、書き換えが回数が限られた遅いMRAMを使って マルチプロセッサで高速にみたいな。それほどメリットは無いかもしれないけど、 僕の修士論文はマルチプロセッサのコンパイラを高速にするアルゴリズムだったから。←あまり意味は無い。

実際にやるのかは、決めていないけど、マルチプロセッサの8bitパソコンは 便利かもしれないと思ったのです。8bit×4個で32bit級の性能とか宣伝できる(笑)。

FPGAのメモリ(Xilinx BRAMなど)はデュアルポートメモリであることが多くSDogでは 4コアのうち2つを1サイクルずらすとメモリ性能を落とさずにクワッドコアになる。

4コアのうち1つはメインCPU、1つはVDP(グラフィック表示用)、1つはサウンド用、 最後はテキストや漢字も表示できるLCDドライバとして使うと、何だか良さそうみたいに思えた。


6月19日 WZ-660に液晶ディスプレイのシミュレーション機能追加

WZ-660は8bit CPUを搭載したパソコンの試作機。実機を作るためのものでWZ-660と言えば、 当面はWindowsやLinuxで動作するシミュレータのことを指す。

160x48の画面モードを削除しました。画面モードの設定方法が少し変わりました。 画面サイズは縦横8ドット単位で8~2048までの範囲で指定できるようになりました。 プログラムから画面モードを動的に変更できます。まだカラーのテストはしていません。 データメモリは64KBなので画面に割り当てられるのは、せいぜい48KB程度です。

WZetaの特性上、画面の横サイズは32、64、128、256、256の倍数が推奨です。 推奨以外の設定も可能ですがVRAMにデータを書き込むプログラムのサイズと性能に 大きく影響します。
産業スパイに妨害されて脳が痺れていたので開発が数日遅れたと思います。
画像は160x48(非推奨)の液晶ディスプレイです。 液晶だと実機でサポートするのは画面モードは1つになると思うので、 推奨サイズのどれかに決めたほうがいいのかも。
SHARPのポケコンだと150x32、160x32、240x32ですが、どれも非推奨サイズ。 どのサイズがいいだろう。128x48?、128x64?、256x32、256x48?

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


6月15日 WZetaはLPWAの端末向けとなることを想定

暗号プロセッサSnakeCube を何とかしないといけないけど8bit CPU WZeta の話。
8bit CPU WZetaでパソコンを作る話をしているのでWZetaが8bitパソコン向けだと 思っている人があるかもしれない。元々、LPWAなどのIoT端末を想定しています。 LPWAを使ったアプリケーションで何ができるのか、僕には考える時間が無いけど、 今後、新しいアプリケーションが出ることが期待されていて、一度に大量に必要とされる 端末のコストは、できる限り安価なものが欲しいところだと思います。 こういったデバイスでは休止状態から、一瞬でアクティブになって動作をする 必要があることもあり、MRAMなどの新しいメモリが便利で、WZetaはそれに良く適しています。 新しく通信ライブラリを作るコストは、必要になると思いますが。

LPWAなどのIoTの新規市場は、新しい人が入りやすく、 WZetaを知ってもらえていると、いいかもしれないと思っています。

CPUが好きな人は、Z80などのCPUと比較して、どうしてWZetaが高性能なのかを考えるのも 面白いと思っています。WZetaはメモリと同じクロックで動作しますがZ80は メモリの約2倍なので、レジスタ間の操作はZ80が高速だったりすることもありますが、 データの配置を工夫することでWZetaはかなり高速になります。またWZetaにはスタックが ありませんが、ハードマクロ命令を1段の高速スタックにすることでZ80よりも 高速になることもあります。


6月15日 WZetaのフォーラムサイトのリダイレクトについて

僕が運営するサイトの細かいことなので日記よりSNS misskey.ioのページ機能を使って 連絡する場合が多かったのですが、どうもmisskey.ioの調子が悪いみたいなので日記を使います。

8bit CPU WZetaの情報共有サイトとしてフォーラムサイトを昨年立ち上げました。 日々、気付いたことを投稿していましたが、開発で忙しくて、不正アクセス対策に時間を かけられなかった結果、不正アクセスにより会員を勝手に6万人作られて、一時閉鎖となりました。

この後、フォーラムサイトへのアクセスを WZetaの公式サイトにリダイレクトしていましたが、不正アクセスが続いていて、 1日で2万ヒットするなど、公式サイトのサーバー負荷が上がるような状況でした。

そこで現在、少し対策をして不正と思われるアクセスについては、リダイレクトしない設定をしました。


6月14日 量子コンピュータの量子ビット数とRSA暗号崩壊との関係

量子コンピュータについてはニュースで読むくらいの知識しかありませんが、 どうも、納得できないので、書いてみます。
これまでも、何度か量子ビット数がRSA暗号の鍵長のビット数に近いところまで来たという ニュースがありました。記事には量子ビット数しか書いてなくてRSA暗号を解読できるとは 書いていないのですが、RSA暗号はもうダメみたいな雰囲気になったことがあります。

量子アニーリングマシンだったり、時分割多重の量子ビットだったりしてRSA暗号が 解読できないことがわかると、安心するみたいなことがあったのです。

最近のIBMのロードマップにも、量子ビット数があって、もうすぐRSA暗号が解読されそうな 雰囲気なのですが、よーく見るとモジュールと書いてある。異なるモジュールの量子ビットは、 同期できるのか?同期できなくてもRSA暗号は解読できるのか?など。

暗号プロセッサSnakeCubeはRSAの鍵が長くなっても効率を落とすことなく 性能を上げることができるアーキテクチャです。一応、半導体チップがある限り無限に。 10万ビットくらいはXilinxの大型FPGAがあれば、すぐにできるのではないかと思っています。

IBMの量子コンピュータで単一モジュールの量子ビット数では10万ビットを解読できず、 複数のモジュールでは解読できない状況だとするなら、当面、10万ビットのRSA暗号は 破られないことになる。

暗号プロセッサSnakeCubeは、今日、プレスリリース をしましたが、ここで機会を失えば、この国の損害が大きくなる可能性があります。 SnakeCubeは暗号製品なので、政府の輸出規制のため僕個人の思惑で海外に販売することはできず、 この国と共にあるのです。今一度、考えてもらえればと。


6月14日 Sパラ解析していたら「稼がせてやる」と言われた

1996年ごろ、僕が大型コンピュータ事業部にいた頃の話なので、読み飛ばして問題ありません。

1996年は日立からIBMのCPUを搭載した初の大型コンピュータがリリースされた年です。 IBM CPUを受ける日立の半導体の性能が悪くてIBM製の大型コンピュータの性能と比較して劣る状況だった。 ざっくり言うと、僕を含めた東大卒設計チームのメモリOC設計によってIBM製の大型コンピュータと 同等の性能の製品を完成させ世界に売れたというやつです。

僕は電気工学科卒業とはいえ研究室ではコンパイラの研究室に入ったので電気に詳しいわけでは なかったけど、電子回路シミュレーションをするのには、非常に都合の良い人材だったため、 前述のメモリOCのための電子回路シミュレーションで活躍できた。

この後、自作のSパラメータ解析ソフトを作り始めていた。IBM CPU搭載の大型コンピュータをリリース後、 少しの間、放置されていたのです。

直近の稼ぎにならない自作Sパラメータ解析ソフトの作成を眺めていた 東大卒が「稼がせてやる」、そう言ったのだ。

選択権があるわけではないが、心浮かれた。 非東大卒の上長の1人が「君はハードウェア開発希望だったよね」と言いながら、 Microsoftのエクセル作業をさせて貰えた。スキルの身につかない雑用だが 「稼ぎになる」という想いで、仕事に打ち込んでいた。 長時間残業の中、自宅では論理設計の仕事をしたいと考えていたのでCQ出版が販売していた 約20万円のVHDLシミュレータを自費で購入して、自宅のパソコンでSHA-1の設計をしていた。

この後、僕に仕事が集中し、事業部の稼ぎ頭になった大型コンピュータの開発で大活躍した。
参考まで言うと「稼がせてやる」と言った東大卒は、最終的に日立ではかなり偉くなっていった。


6月13日 WZetaのBAL命令の不具合を修正した設計図

C言語シミュレータでは正しく動作していたのですがverilogと設計図のほうにBAL/BR命令の単純なバグがありました。 verilogのほうは昨日、修正しましたが、設計図のほうも修正して公式サイトで公開しました。
「WZeta SDogコア 設計図β版先行」6月13日版
更新したのはSDogコアだけです。SBaxには今回のBAL/BR命令のバグは無いので更新していません。


6月12日 WZeta BIOS(べき乗剰余だけ)をリリースしました

verilogの実装の不具合で少し遅れましたがverilogシミュレーションも正しい結果が 出力されたのでリリースします。次のURLからダウンロードできます。

https://wzeta.idletime.tokyo/wzetabios.html


6月12日 WZeta BIOSの進捗

6月10日にリリースしたCC0のアセンブラのコードには何の問題もありません。 WZeta BIOSは6月14日に広告配信が予定されています。 既に公開している仕様に変更予定はありませんが、アセンブラコードは少し修正をする予定です。 昨日までに間に合う予定でしたが、広告配信の時刻までに間に合うのかギリギリという感じです。 既に公開しているコードでアプリを開発しても影響しないため、間に合うように急ぐことはしない予定です。 アプリ開発者は修正されたBIOSコードに差し替えるだけです。

遅れている原因に興味がある人以外は、これ以上、今日の日記を読む必要はありません。

遅れている原因は、正しいアセンブラコードがC言語ベースのシミュレータで正しく動作している。 にもかかわらずverilogのシミュレータでは正しい動作をしない。 原因はverilogシミュレータのBAL/BR命令の実装に単純なバグがあったということ。


6月11日 IchigoJamのチップ不足にFPGAのソフトCPU

ツイッターのTL上に子供向けBASICパソコンIchigoJamの YouTube動画の紹介があったので、拝見させていただきました。
動画の最後のほうにIchigoJamの生産で半導体チップ不足で困ったから入手性の 良いチップがいいということを話していたようです。

入手性なら欧米より中国製のチップという流れでしたが、できれば日本製がいいということも、 話していたようです。

それならFPGAを使ったソフトCPUを使えば、入手性も良いと思われるし、製造終了という問題が起きにくいかなと。 ソフトCPUなら僕のWZetaがコスパが良くてお薦めかもしれない。 RISC-Vはコンパイラがまだ十分でないという意見もあったようですけど、 福野さんがマシン語でBAISCインタプリタを作ればいいのですから。
IchigoJamが税金を使ったプロジェクトでなければ、ですけど。


6月10日 WZetaの命令コード内パリティ

日経新聞の記事(登録要)
「MRAM、書き込み電力1000分の1 大阪大学が圧電体で道」

言いたいことはWZetaの命令コード内パリティによってパリティ無メモリで高い信頼性が得られる。 MRAMなどの新しいメモリの実用化を早めるのに役立つということ。 ARMでは、できないことの一つです。

WZetaの命令セットには命令コード内パリティを置けるスペースがあります。 ただしパリティ有メモリと同じ信頼性を得られるわけではないのでパリティ有メモリを置き換えるものではありません。 今までパリティ無メモリを使ってきた用途で信頼性を高くすることに使われることが多いかもしれません。 それがMRAMなどのメモリの実践投入を早めることに繋がるだろうということ。

マイコンではハーバードアーキテクチャが主流なのでプログラムとデータで2つのメモリを必要としますが、 WZeta SDogコアは1つのメモリで動作するように設計されているためMRAM、1個で動作するのです。

でも、最近のMRAMの研究の方向は大容量化という気もしているので、WZetaとそれほど関係が無いのかもしれない。 劣化が速くても良い用途を考え、安価なMRAM、あるいは、類似のメモリを考えるのかも。

余談
東大卒の薦めで大型コンピュータの事業部で働いていたころは 日経新聞を取っていたのですけど、、、


6月10日 事前定数不要のべき剰余演算のアセンブラコード(3)

CC0(パブリックドメインと同じ)のアセンブラのコードをリリースしました。 WZeta BIOSのほうは明日までにはリリースされる予定です。
https://wzeta.idletime.tokyo/wzetabios.html


6月9日 事前定数不要のべき剰余演算のアセンブラコード(2)

動作検証中。単純な乱数のテストではなく端の値をしっかりチェックしています。 AMD Ryzenでは1回 6時間ですが、14年前のIntel Core i7では12時間以上です。 しかしCore i7は、ずっとシミュレーションで使えるので、いろいろなケースの 動作検証ができると思います。自作の動作検証プログラムはスレッド数を指定できるので 論理コア数の全てをシミュレーションで使えます。


6月7日 事前定数不要のべき剰余演算のアセンブラコード

事前定数無版のコードが正しい結果を出したので、もう少し動作検証をしてから、リリースします。 事前定数有版よりもコードが48バイト大きく、実行時間も約0.06%増加しましたが、 事前定数を計算する必要がないので、一般の人には便利だと思います。


6月5日 パブリックドメインで公開したコードの使い方(2)

使い方(1)の続報。これから事前定数不要のコードを開発します。 使い勝手のいいコードになると思いますがサイドチャネル攻撃耐性は低いことを考える必要は、 あると思います。


6月4日 パブリックドメインで公開したコードの使い方(1)

乗算命令のない8bit CPUでも演算できる1024bitべき剰余演算のアセンブラコードを CC0で5月28日に公開しましたが、事前定数がわからなくて、使えないという意見がありました。 専門家であれば説明がなくても、わかるはずなのですが、普通の人が使えないと、 あまり役に立ってないと言う人が出てきたので、検討しています。

一般の人でもわかる詳しい使い方は、本にして解説しようと考えいたのですが、 少し待ってください。説明とコードを出すように準備します。


6月3日 日本の将来をきわどく明るくして地球環境に良い話?

昨日、日記に書いたアイディア、SNS上での反応がなくて、 言っていることが、わからなかったのかも知れないと思ったのです。
僕は半導体プロセスのエンジニアではないので、半導体プロセスを鍛える 具体的な方法は、わからないのですが、ビットコインのマイニングASICでは、 2つの演算器に同じデータを入力して比較すれば宇宙線などによるエラーを検出できる。

SSLアクセラレータのSSLサーバ証明書の電子署名がRSA暗号の場合、計算された結果を、 検証できればいいので、演算器は1つで良い。検証はCPUで計算してもセキュリティ的 にも問題ない。RSAは署名の計算量は非常に大きく、検証の計算量は小さい。

定量的にどうなのかは、わからないけど、これだけを考えると、SSLアクセラレータ のほうが効率良さそう。しかもビットコインより必要性の高い演算。

次の段階に話を移すと、量子コンピュータによる解読リスクを考え、 RSA暗号の鍵長を大きくする。RSAは鍵長が大きくなると計算量が膨れ上がる。 すると半導体プロセスの検査時間が増え、SSLのセキュリティも多分、向上する。 1つのデータセンターだけでも、それなりの検査時間を稼げる。

暗号プロセッサSnakeCubeを開発したほうが、良いのではと思います。

実際にやってみると、あまり上手くいかないかもしれないけど、 少なくとも、僕の言っていることを理解できる人は、 この日本にいなくては、ならないと思う。

石油資源の節約とCO2削減効果を試算できる人があれば、予算を捻出することも、 できるかもしれない。予算なくても、できるなら、より良いことなのだと思いますが。

黙っていると、最も最悪の選択になるのかもしれない。


6月2日 半導体の暴露っぽい話かもしれないけど良いアイディア

恐らくビットコインのマイニングのASICは、最先端プロセスを鍛えるためのもので、 それをビットコインというビジネスに乗せて、うまくやり繰りしているのだと思う。

最先端プロセスを鍛えるならSSLアクセラレータのほうが高い価値であるため、 強引にでもSSLアクセラレータにしたほうが社会全体の最適化ではある。 いや、価値はわからないけど電気の無駄の解消がいいと思えています。

実際に詳しく検討しないと、わからないですが、 技術的にはSSLアクセラレータを最先端プロセスを鍛えることに利用できるように思います。 ビットコインのマイニングAISCほど楽ではないですけども。 電子署名に限定すれば、最先端プロセスのハードが間違ってもCPUが結果を検証できる。 RSAは署名は非常に重いのですが、検証は非常に軽い公開鍵暗号なのです。


6月1日 日本の暗号プロセッサ「神風」知ってます?

参考情報として。僕も詳しく知らないのですが2016年に創業の日本発のユニコーン企業が開発とか。
TRIPLE-1 半導体で世界一目指し逆算する事業構想

『KAMIKAZE』7nm ASICチップ開発プロジェクト

日記のタイトルは漢字で「神風」と書いていますが、正しくはKAMIKAZEのようです。 暗号資産ビットコインのマイニング用ASICチップです。

少しICF3(1999年)の話をします。 ICF3には僕が原案を設計したSHA-1の回路が入っています。 同時期のIBMのメインフレームの5倍以上という性能でした。 あのIntelがSHA-1に対応したのは2013年のIntel SHA Extensionsですから、 IntelがICF3に遅れること14年くらい。大型コンピュータはコプロセッサで、 とっくの昔に対応していた。そしてビットコインのマイニングにはSHA-1の後継、 SHA-256がアルゴリズムとして採用されています。

当時、僕はICF3を開発していたこともあってTRIPLE-1がKAMIKAZEの 開発を始めていたころから、僕にKAMIKAZEが技術情報を盗んでないか? みたいな、問合せを受けたことがあります。 GMOやDMMが大々的に宣伝していた記憶がありますが、今、調べると、 どうも撤退してTRIPLE-1だけが残っているみたい。

僕の暗号プロセッサSnakeCubeも、 やればできるんじゃないかって。日本国民で誰か、立ち上がる人は、ないだろうか。

暗号ハードウェアについてあまり知らない人向けの補足
KAMIKAZEのSHA-256の高速化とSnakeCubeのRSAの高速化との違いは設計の難易度。 SHA-256は、ある程度、優秀なエンジニアなら短期間に高性能なハードが開発できる。 一方、RSAはRSA暗号の発明以来、世界各国の研究者が、様々な方式を研究し論文にしてきました。 2018年になって、ようやく僕が、画期的な性能のハードを発明できたということ。


6月1日 暗号プロセッサのお買い得プラン!?です

SnakeCubeは インターネットや電子署名などの社会インフラで使われている公開鍵暗号を高速化するプロセッサ。 量子コンピュータは着実に進歩しています。量子コンピュータによる解読に耐性を持つ公開鍵暗号の 研究も進んでいますが、RSA暗号の延命が最も経済的になるケースはあると思います。 そういったケースではSnakeCubeの他に競合できるものはありません。
インターネットのブラウザの暗号化は全世界的に話を進める必要がありますが、 電子契約では、システムが個々に決断をすれば良いためRSA暗号などの 従来暗号のみのプロセッサを考えることはできるように思います。

現在、電子契約システムは国内で増えている状況です。 量子コンピュータの進歩による解読リスクを考えるなら、 電子署名の鍵長は、いくらでも大きくしたいという需要はあると思われますが、 RSA暗号の鍵長は、一般の人でも大きくできるメリットがある半面、計算量が膨大になるため、 画期的な発明による暗号プロセッサSnakeCubeは必要になると思われます。

RSA暗号による電子署名の鍵長を、できる限り大きくして、 電子契約システムの安全性の差別化というところで SnakeCube は活躍できるかもしれません。電子署名だけに頼るシステムでなければ、 耐量子暗号を装備した高額な暗号プロセッサよりも、安価であるほうが 重要ということはあると思われます。RSA暗号のみでよければSnakeCubeの発明者、 平山直紀1人で設計図のほとんどが揃います。

日本の将来のために国民が立ち上がれるのか? これで立ち上がれなければ、それなりの日本になると僕は思っています。


6月1日 「WZeta BIOS」の仕様とソフトを公開

5月27日の日記で公開した乗算器のない8bit CPUで高速に べき乗剰余演算するコードをBIOSで定義して、ソフトウェアにしました。

https://wzeta.idletime.tokyo/wzetabios.html


暗号プロセッサ OpenICF3