Home
2020年
2019年
2018年

4月28日 超軽量8bit CPUが合成できた

まだ目の調子がわるい。文章がスムーズに読めない。
超軽量8bit CPUのVerilogの入力が終わって、取り急ぎ、合成できたところ。 動作確認していないから、まだ面積が大きく変わるのか、わからないが、 Xilinxの8bit CPU PicoBlazeの約半分くらいの面積という数字が出た。


4月27日 頭痛が強くなって中断中

痛い、、、


4月26日 もうひとつ8bit CPUを作り始めた

頭が痛み出したので作業しにくくなったため日記を書きます。 8bit CPU ICF3-Zの仕上げに入ったところで、もっと軽量な8bit CPUを思いつきました。 世界のインターネットインフラに影響する可能性を持つSSLアクセラレータICF3-Fが最重要で、 ICF3-Fで使う超軽量な8bit CPUが必要だったため、急遽、新しい8bit CPUの開発を始めました。 ICF3-Zで8bit CPUを開発する環境は整っていたので、急速に出来上がってきています。
Xilinxの8bit CPUよりも面積の小さいCPUになる予定で、 この面積の小さいCPUを採用することで、1ランク下のFPGAを使って 製品ができるというのが価値になるのかと。 いくら高速に演算できてもCPUやGPUより高いと売れないですから。
この超軽量8bit CPUは32bit固定長の命令セットなのですが 「命令セットを工夫することによってCPUの面積を小さくできる」 ということを、実装して、はやく言いたくて仕方がないという状況。
名前をICF3-ZZ(ダブルゼータ)にしようかと思ったのですが ICF3とは全く異なるアーキテクチャなのでWZetaと命名します。
もしうまく動作するようならGPLとかのオープンソースライセンスで 公開しようかと考えてます。 何か参考になるものがあったのかと聞かれれば、全くないのですが、 小さいCPUは、結構、世界に沢山存在するので、似たものがないことは、わからないです。 実は、ICF3-Z公開用の新しいサイトを、作って工事中の状態で、放置しているのですが、 予定ではWZetaを先にしようかと。


4月24日 性能重視のLUT数

昨日の日記には面積重視の結果しか書かなかったのですが、性能重視の結果を出してみます。 いい性能が合成されても少しVerilogのファイルを変更すると、2度と合成されないとか、ありそうなのですが、とりあえず。 (乱数シードを調整して、同じ条件で、多数合成すれば、いいと思うが、まだそこまで調べていません)

自作CPULUT数FF数BRAM数LUT-RAM周波数
面積重視
256Byte
3871971.510160MHz
性能重視
256Byte
4361951.510170MHz

FPGAはXilinxの(XC7A35TICSG324-1L)です。


4月23日 自作CPUに64KBの拡張RAMを実装

文字認識力の低下でネット上の記事を読むのが多少、辛い。
自作の8bit CPUはレジスタ16本×2とスクラッチパッドが256バイト(先頭32バイトはレジスタ)しかデータを扱えない。 入出力命令を使ってSRAMをアクセスすることを考えていたが、 ポートIDとアドレスをセットしてI/Oリクエストを出力、次のサイクルで入力I/Oから1バイトのデータを得るという手順になって、性能が悪い。 それでも、このCPUはコントローラだと考えれば、いいと思ってきた。しかしついに高速にアクセスできるような拡張方法を追加しました。 最大64KBのデータをバイト単位でアクセス可能。Z80のエミュレーションをしてやれば、昔の8bitパソコンの復刻版とか、作れそうな勢い。 64KBのRAMを装備すると周波数が少し落ちました。

自作CPULUT数FF数BRAM数LUT-RAM周波数
面積重視
256Byte
3871971.510160MHz
面積重視
64KByte
4172051710133MHz

64KBの全領域に書き込んで、正しく書き込まれたかを確認するプログラムがFPGAの実機で動作しました。 シミュレーションでプログラム終了後、64KBのメモリを全部表示させ、正しい値が書き込まれているか確認しました。 動いている。

FPGAはXilinxの(XC7A35TICSG324-1L)です。 もう少し小さいFPGAでも十分入りますが、Artyは緑のLEDが4個+4個の合計8個あって、Dレジスタ1バイトの値を表示させるのに使っています。


4月19日 自作CPUのデバッグ機能が動いた

午前中、医者に行ってきました。とくに何かあるという話はありませんでした。
8bit CPUの動作の検証作業が続いています。 数日前、ブログ「仮想マシンの加速支援機構つきの新型8bit CPU!?」 を書いたのですが、割込みの動作検証中です。割込みを使ったデバッグ機能の検証をしました。 プログラムのコード中に、ブレークポイントを設定して、そこに、たどり着いた回数を計算して、設定した値(パスカウント)のとき、ブレークさせるみたいな機能が実現できます。 具体的には毎サイクル割込みを入れて、アドレスを確認して、設定されたアドレスなら、指定された回数に到達したかをチェック。 指定された回数の場合は、LEDを点灯させるというプログラムを作成して、FPGAの実機でテストしました。ちゃんと動いているようです。 ただプログラムコード中の一部の命令ではパスカウントを正しく計算できません。遅延分岐で遅延スロットをキャンセルする命令などです。 分岐命令の直後の命令にブレークポイントを設定した場合は、パスカウントは正しくありませんという仕様にしようかと考えています。 割込み処理中でキャンセル信号をチェックしてもいいのですが、 デバッグ機能のためにキャンセル信号をチェックする論理を追加するのは面積最小を追求するプロセッサでは、あまり良くないと考えてのことです。 (面倒とかではなくて)

XilinxのFPGA(XC7A35TICSG324-1L)に実装して面積を確認しています。 論理合成のオプションで結果が違うので、面積重視、性能重視の結果です。

自作CPULUT数FF数BRAM数LUT-RAM周波数
面積重視3871971.510160MHz
性能重視4421971.510175MHz

400 LUTいかない面積の小さいCPUで、追加のデバッグモジュールなしにパスカウントを 使ったブレークポイントを設定できるのは、良くできるほうなんだろうと思うが、 他のCPUの面積とかわからないから、なんとも。


4月16日 早めに言っておきたいことがあります

数か月前に前兆らしきもの(まだ医者に言われてない)ができて、またもう一つできました。 治ればいいのですが、数か月前にできたものも治っていない。 僕が消滅すればですが某大手メーカーの東大卒に激怒していたことを、みな忘れないようにお願いします。 OpenICF3も、この激怒を広報していただける方のみ、 使ってください。僕は某大手メーカーの東大卒が悪いと考えています。

これから大きな研究成果や開発成果をあげる方。明日は我が身と思います。 それ以外の方も、考えていただけますよう、よろしくお願いします。 大きな成果を上げると、潰され、隠蔽できず。僕のようになるのです。あまりに、酷いことになります。


4月15日 8bit CPUの割込みが動作した

ICF3-Z(8bit CPU)の圧縮命令と割込みの動作を確認中。いくつか試してみたが、どちらも、なんか動作している。 まだまだ動作検証が必要だが、ちょっと嬉しい。バグをいくつか修正したら性能が少し低下しました。 Intelの8051という有名な8bitマイコンをFPGAにしたlight52があったので比較。 light52のFPGAはXilinx Zynq(-1)で、ICF3-ZのXilinx Artix(-1)と、ほぼ同じなのではないかと。

CPUコアLUT数FF数BRAM数LUT-RAM周波数
light52811-0.5-100MHz未満
ICF3-Z4241911.510175MHz

light52の説明書を読むと1命令の実行に6サイクルとある。 ICF3-Zは1命令1サイクルで同時に2命令を1サイクルで処理できることも、稀だがある。 なんか、圧倒的、みたいな。^^)
ICF3-Zが劣っているのは命令コードのビット長。ICF3-Zは32bit。8bit CPUにしては長い。 ただし圧縮命令を使えば、16bitの命令コードになる。圧縮命令はユーザーが必要に応じて自作する。 自作する命令によるが圧縮命令を1命令実行するのに4サイクル~8サイクル程度。数百サイクルの命令を自作してもいいが、プログラムコード領域を消費する。

ICF3-Zは動作検証中なので、最終的にどうなるのか、まだ未定。性能が悪くなる予定は、ないですが。


4月13日 自作仮想マシンとか

昨日1日中、眠っていたり、深い思考ができない状態だが、仮想マシンに興味を持った。 Ruby言語にマイコン用の仮想マシンmRuby VMがあるらしい。 ほとんど研究ネタだと思うが、自作仮想マシンを作ってみるのも面白いかなと。 実用性については不明なので、暇にならないとできないが。
なぜ急に仮想マシンなのか?ICF3-Zの圧縮命令の機能を使えば仮想マシンが、できそうだからだ。 ハードで直接実行する仮想マシン。それが魅力だった。 ICF3-Z以外のマイコンはソフトウエアの仮想マシンで動作させる。 いろいろなマイコンで動作するようになるから、いろいろ環境が整って、便利になっていく。 ハードで直接実行するICF3-Zは、当然、有利になる。という仕組み。 実際、やってみると、うまくいかないこと多いのだろうけど。


4月11日 自作8bit CPUで除算した結果をLチカ

自作8bit CPU(ICF3-Z)が、動くようになったので16bit÷8bitの除算をして、その結果をLEDに表示させてみました。 16bit÷8bitの除算には17サイクルが必要になりますが、従来CPUの命令セットでは、除算器無しに、この性能はでません。 シフト命令、減算命令、条件分岐命令の組合せで除算をすれば、数倍から10倍のサイクルが必要となると思われます。 ICF3-Zは面積が小さいわりに高性能な乗除算が可能です。 1サイクルが複数クロックのCPUもありますがICF3-Zは1サイクル=1クロックです。

LEDが点滅する動画もYouTubeにアップしました。


4月10日 自作8bit CPUとMicroBlazeとの比較

注意!ICF3-Z(自作8bit CPU)の全機能を実装していますが、論理的な検証を全くしていないので、 結果が変わってくる可能性があります。XilinxのソフトCPUコアには8bitのPicoBlazeと32bitのMicroBlazeがあります。 PicoBlazeとMicroBlazeの性能差は、かなりあってICF3-Zは、その間に入るような感じかもしれない。 ICF3-ZをソフトCPUコアとして使うなら8bitで制御できて高い周波数が要求されるようなケースで役に立つように思う。 PicoBlazeは1命令の実行に2サイクルかかるので実質、50MHz程度のI/O制御となる。 一方、ICF3-Zは150-180MHzのI/O制御が可能となる。 実際にI/O制御のプログラム経験はなく、ICF3-Fが初めてなので、使い勝手がいい命令セットになっているのか、わからないが、 使いやすいような命令セットにしたつもり。
MicroBlaze(乗算器無)とICF3-ZをPicoBlazeと同じようなI/O装備にして、なるべく比較ができるような設定で、面積と周波数を比較します。 XilinxのFPGA(XC7A35TICSG324-1L)に実装して比較。

CPUコアLUT数FF数BRAM数LUT-RAM周波数
MicroBlaze7003381176166MHz
ICF3-Z3981891.510180MHz

両者、メモリは4KBですが、多分、MicroBlazeは2KBコード、2KBデータなんじゃないかと思います。 一方、ICF3-Zは4KBコードと256バイトのデータ。

機能的な差はMicroBlazeが32bitなのに対し、ICF3-Zが8bitである他、 ICF3-Zは圧縮命令を持っているため16bit命令が使えます。MicroBlazeの2倍の命令を格納できる機能を持っている。 ICF3-Zは8bitながら乗算、除算、余算ができるので、そういう処理はMicroBlaze(乗算器無)よりも勝ります。 ICF3-ZはI/O命令と加減算の命令が同時にできることもメリットです。
デメリットを考えれば、キリがないですが、ICF3-Zのメリットが活かせるところで利用さればなぁと。 あ、まだ論理的な検証できてないので、これからです。^^;;;

上側がMicroBlazeの実装結果、下側がICF3-Zの実装結果。ICF3-Zが小さいことがわかると思います。



4月9日 名前を考えたWZetaにしよう

再び目が辛くなってきた。頭の損傷の傾向も見えてきた。比率の計算ができなくなっている。 例えばMIPS(million instructions per second)、CPI(Cycles Per Instruction)が計算できない。数十秒かかる。 青色ダイオードやフラッシュメモリの発明における教訓を思い出す。 この事件が表面化した状態で、頭を打ちぬく銃の乱射の放置は全方位問題なはず。 自身に銃口が向けられて何ができるのかを考えてみてください。善良な市民に発砲しないところを見せたほうが良いように思うのです。

前置きが長くなりましたがICF3-Z(8bi CPU)のFPGAへの仮実装が続いています。 面積と周波数の概略を知るため論理的な動作検証よりも先に仮実装をしています。 まだ正しい数字とは言い難いですがプログラムメモリ4KB(ECC無)の場合、 XilinxのFPGA(XC7A35TICSG324-1L)で180MHzの周波数になりました。 Xilinxの8bitCPU、PicoBlazeでは100MHz程度(実質50MHz)。 Xilinxの32bitは昨年測定してみた結果がブログにあります。 166MHz程度のようです。もしかすると設定の改善でもう少し性能がでるのかもしれないですが。^^;
ICF3-Zは1サイクルに加減算とI/O命令を同時に実行できるので同じ周波数でもI/O制御の性能は、いいかもと推測。
プロセッサの評論家?がCレジスタの最下位ビットの値によって分岐する命令が無駄だという、うわさが、、、。 ICF3由来の命令だが、TEST命令と分岐命令を1サイクルでできます。 I/Oから読みだしたデータを処理するのが高速になるというメリットがある。

最初からわかっていたことですがICF3-Zの面積は、PicoBlazeと比較して大きいので、 ICF3-F用の通信制御に、もっと小さい面積のプロセッサが欲しくなってきた。 ICF3-Zから、さらにフォークしてICF3-Zのサブセットになるようなプロセッサを作ろうかなと。 名前を考える。ICF3-ZZ(ダブルゼータ)がいいかと思ったが、サブセットにするとICF3の特長を失うのでWZetaという名前にしよう。 名前だけ、先に決まった。(笑)


4月7日 8bit CPUのVerilogシミュレーションが動いた

まだAレジスタとBレジスタに即値を代入して加算した結果をAレジスタに代入するという簡単なプログラムでの確認しかできていない。 いろいろな命令の確認をする前にXilinxのFPGAに実装すると、どのくらいの面積(LUT数、FF数)になるのか、知りたくなって、FPGAへの実装を始めた。 ICF3-Z(8bit CPU)は移植性を考えたVerilogになっていて、プログラム用のメモリのVerilogがBRAMに変換できず、半日が経過した。 CEやリセットのないFFからBRAMには変換できないのではないかという推理。 ASICを考えるなら不要なCEとリセットは、削除して軽量な実装にしたいと考えていたので、原因究明に時間がかかった。 結局、原因を明らかにするよりBRAMを直接記述することに。
Xilinxの32bit CPUで最も軽量なMicroBlaze MCSの面積(LUT数、FF数)を調べました。 ECC無しの数字がXilinxのサイトのこのページありました。 手元にあるパソコンで実測してもXilinxのサイトにある数字と一致します。 そしてECCを有効にすると、かなり性能が低下して、面積が大きくなっていることが実測されました。実測に使ったボードはArtix-7 Artyです。 基準クロックは100MHz。ECCを有効にすると、メモリ容量の選択が8KBを選択することができなくなって16KBの結果になっているのでBRAMが5個に増えています。

32bit CPULUT数FF数BRAM数WNS周波数
ECC無68333922.634 ns136MHz
ECC有9434615-0.224 ns97.8MHz

なぜXilinxの8bit CPU PicoBlazeと比較しないのかと考えた人もあるかと。 ICF3-Zは演算レジスタ(A,B,C,D)を余計に装備しているので高い周波数で動作して、乗除算機能があるので、 乗除算はPicoBlazeの10倍以上、高速なはずなのです。面積で負けることは、最初からわかっていることなので。


4月5日 NHK新番組「逆転人生」

相変わらず頭と体が痛い。目の調子は良くなったが、頭が悪くなっている問題が検出されている。
逆転人生「最強アップルVS.貧乏発明家」 僕のような人間が見る番組なのかと。番組の初回を飾るのに相応しい逆転人生。 でも、この人、最初に3億円の借金をして裁判所に1500万円の収入印紙を払っているから、3億3千万円を勝ち取っても。ほとんど人生浮いていない。計画的な人生とも言えそう。 そういえば、僕も日立製作所に勤務していたときにMulti2の暗号のハード実装の特許を取得している。 OpenICF3のサイトにも、少し書いていますが、特許第3795315号です。 Multi2は衛星放送とか(地デジもかな)で使われているため、僕の名前が入っている特許が、使われているかもしれない。 2005年に退職したが、その後6000円くらい日立製作所から振り込まれた。 僕がMulti2のハード実装の発明をしたときの話。僕の特許の貢献率は5%ですが、実際に特許になるアイディアを考えて証明をしたのは、僕でした。 証明といっても中学生でも証明問題として出されれば解ける程度です。アイディアを思いつくきっかけになったのは東大卒の上長が「やれ」と厳命してきたからで、渋々、やってみたら、できた。 だいだい完成していたメモを、筑波大卒の新人に渡すように言われ、渡して、僕はRSA暗号の検討に着手した。知らないうちに、その新人が特許を取っていて6000円が振り込まれた。 他事業所の誰かが考えたアイディアを、知らないふりをして、僕にやらせたのかもと思うようになっているが、そうでなければ6000円かぁ。

4月6日 5:00AM 追加 「だいたい完成」という表現だと「半分くらいやった」と思いたい人とか、大勢いそうなので「完成」と考えていただいてもいいように思います。 上長とのやり取りですが、もう少し正確に説明すると、僕が「これ以上、速くできません」と言ったときに、強硬に上長が「やれ」といったこと。 Multi2の検討を上長と始めるときに、上長がCarry Save Adderが役に立つからと事前に説明している点。

4月2日 わかっていること

僕は世界の銀行で使われるような暗号装置(1999年のICF3)の開発をしているときに会社に 監視員をつけられていると思う。 監視をしなければ僕が悪組織と内通していない保証ができない。 軍事機密レベルの監視装置がついていてもおかしくはない。いや、ついていると思う。 監視員は監視ついでに僕のリストラの方法を考え、さらに儲けようとする。 監視員にとってみればOpenICF3が成功すれば、これまでの悪事が明らかになる。 そして潰せば国の損失になる。 そこで監視員が考えることは、僕からOpenICF3の利権を奪うか、事実上、無効化することだと思う。 僕にしてみればOpenICF3は、これまでの、とてつもない不遇を、どうにかするための大事な資産であり、 不遇が解決しない限りは、騙し取られないようにするため運用があまりできない。 どうしようもない。学生を使った手口も使ってくるかもしれない。そのあたりを考えていただけると。
このままいくと損失になると思います。 Intel CPUの脆弱性でOpenICF3は目立つこととなり、そろそろ国も 見てみないふりもしにくくなっていると思いますし、うまくいけることを考えるのかなと。


4月1日 エイプリルフールだから許されるだろう

被弾して結局、1日以上、寝ていた。頭痛と筋肉痛と両方。
昨年、「モンゴメリ乗算の累積加算における分割加算の証明」を 発明した。常時httpsでは現在でもRSA暗号が主流でRSA暗号をコストパフォーマンス良く演算できる方法だと思っています。 1999年に世界一高速なRSA暗号のLSIを開発した僕が演算器を改良して性能を上げています。 (ICF3-Fは低基数のモンゴメリ乗算ですが、 別の方式、高基数型のほうが勝る場合もあります)
RSA暗号だけでなく非常に大きな整数の四則演算(modつき)が得意です。 将来、新しい公開鍵暗号を考える必要が出てきたとき 「モンゴメリ乗算の累積加算における分割加算の証明」のLSIがあると、選択の幅が広がるように思います。 本当に将来、そうなれば青色発光ダイオードのようにICF3-Fの 数学の結晶が活躍するなか、 僕は消されていたとか。ならなければいいなと。


3月31日 一気に8bit CPUをやるつもりでしたが

被弾しまくって半日以上、寝ていたという状況です。意識があるのにイビキをするという、辛い。 多分、頭が壊れかかっている。 8bit CPUの仕様や設計図を見て、どいうアーキテクチャなのか、わかる人ばかりではないと思うので、 もう少し説明します。 普通のCPUではプログラムの命令コードをパイプラインに流し込んで制御信号に変換します。 命令コードの順番によっては制御信号を調整することが必要で、そこに論理ゲートが必要になります。 CPUのハードウェアが動的にスケジュールして制御信号を調整することになります。 一方、ICF3-Zは、命令コードが直接、制御信号になっているのでコンパイルする時点で、 静的にスケジュールするため、動的スケジュールのハードが不要であること、動的スケジュールよりも、 もっと性能のいいコードを生成することができるのです。 コンパイラというよりは人手によるアセンブラが現実的ですが、コンパイラも考えられます。 ICF3-Z方式のデメリットは命令コードのビット長が大きくなりやすくCPUのハードは減少しても、 メモリが増大してしまいます。これを16bit圧縮命令によって改善します。 今月に入ってICF3-Zの実装を検討し始めると、簡素な実装で、すぐにできそうなので、 ICF3-Fの前に急いでやってしまうことにしたのです。
ICF3-Zが従来CPUよりも効率的な用途が多数あれば、役立つことなると思います。 当面は1人で、その確認をしていきます。 これまでの方針では現状を変えられないため、多少、方針を変更します。 一気に8bit CPUをやるつもりでしたが、被弾しまくって、作業が停滞して、 一気にできないので、さらに遅延することになったこと。考えるべきと思います。 ICF3-Fが遅れるのが、一番、問題と考えています。多くの人に日本の将来を考えて欲しいと。


3月30日 1995年の基板設計資料(初公開)

某大手メーカーで大型コンピュータ(MP5600)の基板設計をしていたときの資料です。 基板以外にもマルチチップモジュールの資料も多数残されています。 そのうちの1枚です。 初公開なのは退職時に自分がした仕事は持っていくことを言っていますが、 ICF3myuTokenのように 明示的に断っていないからですが、もう20年以上前の資料で、 大型コンピュータの歴史資料になっていると思ったので初公開してみました。 僕が電気工学科卒業でワークステーションを使うことが得意だったことから、 CMOSのデータジッタ解析の回路シミュレーションで活躍したという話です。 当時のテクノロジ開発部では、ワークステーションを使いこなせる人材がいなかったため、 データジッタのノイズ解析を線形重ね合わせという方法で解析をしていました。 当時のテクノロジ開発部の課長は、僕がワークステーションを使うことが 得意であることに目をつけて、大量シミュレーションによるノイズ解析をさせた。
この資料の右側は僕の成果です。僕が電気工学科でなければ、 ワークステーションだけできても、この成果はなかったと思います。 LWGと呼ばれる大きな会議で使われた資料があったのですが、ここ数年内に行方不明になっています。 僕がいなくなったことをいいことに別人に成果を付け替えられてしまったのかもしれません。
見るべき点は、回路シミュレーションの波形の図で、上から3番目のPL=250mmとある図です。 配線の長さが250mmのときは、特にノイズが大きくなっていることが、わかります。

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


3月30日 1999年 ICF3の表彰状

某大手メーカーで表彰状をいただきました。 今頃、気づいたのですが、僕1人の名前しかない。 もらったときは設計者の名前、全員があったように思ったのです。 何故か?T村さんの名前があって、設計者といえば、そうなのですが、 さすが東大卒という記憶があったので。


3月30日 ICF3-Zまだ計画中です

今日も頭と体の具合が悪くて出力が80%低下しています。 8bit CPUのICF3-Zのアセンブラ&シミュレータの開発を始めています。 まだ圧縮命令、割込みの検証ができていないので、 ICF3-Zのプロジェクトに参加してみたいと言われても、 まだICF3-Zのプロジェクトを計画しているところです。 圧縮命令、割込みの実装ができることを示しておくことが僕の目的で、 ついでにプロジェクトにしてみてもいいかなという感じでした。 プロジェクトの成否は、ICF3-Zのゲート面積と性能がとても優れている ことですが、まだ確認されていません。
重要な点は、僕が潰れるとICF3-F、ICF3-V、含めて全部、潰れます。 そういう設定でないと、僕、ほんとに潰れそうなので。 僕の体が一定以下になると、厳しくなると思っています。 今どのくらいかといえば、もう、一定以下になっているかもという状況です。 それでも全力で進みます。そして、この国の損失を計算します。 何故か、僕の頭と体が壊れるような国なら、ICF3が潰れても、いいでしょう。


3月29日 期待値作成用のC言語によるシミュレータ

体が軽く風邪をひいたようにだるい。 作業のペースが遅くなること、昼寝が多くなる程度だが、何故だるいのかを考える。 察していただければと。
8bit CPUのverilogが正しく動作しているのか確認するためのC言語のシミュレータを作り始めた。 OpenICF3のサイトで公開しているC言語のコードを改造して8bit CPUの仕様に合わせるだけだ。 久々のC言語で、本来なら気持ち良く書けるはずなのだが、体がだるい状態では、あんまりという状態。


3月28日 シミュレーション用のVerilogファイル完成

正確に報告します。眼球に振動が加わることは普段あまりないことですが、 たまにそういうことがあると、振動に合わせて、瞬間的に目が真っ暗になる。 目が真っ暗になると日記書けなくなるので、早めに言っておこうかと。
8bit CPUのverilogシミュレーション環境が完成。 これからシミュレーションで、ちゃんと動作するか確認。


3月27日 シミュレーション用のVerilogファイル作成中

正確に報告します。頭がつらい。どのくらいなのか? 興味でインターネット上のZ80のエミュレータの記事とかを読んでいるとLSIとかの型番、 英数字6~7文字くらいの文字列が良くでてくる。 これを2、3度、読み直して10秒くらいかけないと読めないことがある。 文字の映像がぼやけているわけではない。
8bit CPUの作成の作業の中断をするか、ノロノロやるか、くらいのところでしょうか。
今日は、メモリブロック3個をVerilogにしましたが、辛くなったので日記を書いてます。


3月27日 大金が動く

お金が動くところを見ることになはるが、その中身は全く知らない。 64歳に弾丸で打ち抜かれると、全くの大損計算


3月26日 Verilogのファイルができた

頭が辛い。午前中は睡眠弾、夜は痺弾といったところか。 弾の使いどころはあるのでしょうけど。どういう人に向けているのかを、もう一度、考えて欲しいところです。
やっと8bit CPU ICF3-Zの設計図をVerilogファイルにできた。細かい改善をしているうちに時間が経過してしまった。 まだメモリブロック3枚をVerilogにする作業が残っているが、すぐにできてシミュレーションが動くと思われます。 ICF3-Zがひと段落すれば、ICF3-Fに戻って作業再開です。ICF3-Fの技術は、 他に比べて効率がいいと思うのでインターネット社会に影響すると思います。


3月25日 RISC-VがApache2.0で公開されていた

連日、被弾して頭がつらい。 RISC-VがApache2.0で公開されていたみたい。 9段のパイプラインで並列に2つのパプイラインがあると、かなり高性能なCPUなのかと。
僕の進めているICF3-Vへの影響、、、ICF3-Vは同じ32bit CPUでも、ゲートを削って軽量化することに特化しているので、 目標としている性能が、違うから、それほど影響はないと、、、


3月24日 Arduinoの性能を実測

目を開けているのが、少しつらい。頭にも問題があるのかも。 おかげで日記が進む。江戸時代の侍は刀を持っていたが科学の進歩で銃の時代になると、 どんなに強い侍でも遠距離から頭を打ちぬけば死ぬ。 もっと科学が進歩すれば見えない弾丸で頭を打ちぬくこともできるような気がする。 その報告だけは、しておきます。

さてATmega328P(8bit 16MHz)というマイコンが有名みたいなので性能が測れないかArduinoで調べてみた。

unsigned char a,b,c;
for(i=0 ; i < 1000000 ; i++) {
a = b + c;
b = a + c;
c = a + b;
}

時間を測定すると755msだった。gccの最適化オプションをはずすと3500msくらいなのだが、 アセンブラのコードを見てみないと、いいのか、わからない。 あまり精度のいい見積もりは、現段階では、できていないので、結果は忘れて欲しいのですが、 同じ16MHzでICF3-Zの予測値は755msよりもいい。 ICF3-Zは命令コードが32bitでATmega328Pは16bitなので負けては困るのかもしれない。 ICF3-Zには1999年のICF3から伝承されたループ制御レジスタがある。 これが意外に便利で、コンパイラ技術でいうところのループアンローリングとか ソフトウエアパイプラインをループ制御レジスタを使って実装する感じだ。 命令コードを展開せずに、展開したのと同じような性能が得られる。 プログラムメモリの無駄がない。


3月23日 8bit CPUでAES暗号

目まいがして作業がすすまず、日記を書くことに。 設計図をverilogにしているところだが、あれこれ考えている。 ICF3-Zは整数演算を連続でするのが得意なのでAES暗号とか、少し見てみた。 S-Boxの256バイト変換テーブル2個を、どうするかなのだが、 プログラム中の即値として埋め込むことができれば、うまくいきそうな感じだ。 1ワード32bitに8bitの変換データを2個が、入りそうなところまで考えた。
久しぶりにArduinoを動かしたくなったのでパソコンをセットアップ中。


3月20日 8bit CPUの割込み

徐々にバージョンアップする方法では破綻すると思い、あれこれ考えざるを得なくなっている。 レジスタウィンドウを実装しようかとも思ったが8bit CPUにレジスタウィンドウは、やっぱり無い。 複数要因に対応する割込みは必要だろうと思い、作り直している。


3月19日 8bit CPUのverilogを作成中

頭が痛くなってきた。これでまた作業が遅れる。 そういえばIPA関係のイベントで、お腹に電極版を貼り付けて電気的に筋肉を動かす装置を開発している人をみかけた。 人間の人はしないと思うけど電磁パルス砲を人間の頭に向ける実験とか辞めて欲しい。
8bit CPUの設計図、実質A4 2枚と書いたが、今日、1枚とちょっとをverilogにした。


3月17日 頭痛で作業が進まない

頭痛で作業が進まない。頭痛発生装置をどうにかしないと。 本当に遅れている。頭痛で、やむを得ず寝ると、結構な時間眠っている。


3月17日 大学の成績

小学5年のときにCASIOのFX-502Pという電卓で遊び始めて中学1年でナイコン族になり、 中学2年でSHARP MZ-2000を買ってもらってZ80のマシン語で遊んでましたと楽し気に話すと、 この人、大学でてないんじゃないかという反応を示す人も多い。
ちゃんと電気工学科を卒業してます。そしてIEEEの会長になったことで超有名な研究室に入ってます。 研究室に入ったときの成績は研究室で1番のはず。もしかすると学士卒で、もっと成績がいい人がいたかもしれない。 すごいでしょ。(というか知っていて気づかないようにしている人多い)

3月17日追記(23:50)  インターネット上にある大学の研究室のOB名簿に僕の名前が掲載されていないこと。 僕が大学の研究室にいたころは富士通から年輩の高専卒の人が研究室に勉強に来ていたことなどから、 僕がそういう人と見間違えられても、問題ないと思う人もいると思って、今日の日記を書きました。
正しく僕は研究室の第一期生なのです。


3月16日 いつも完成が近づくと・・・

頭が痛くて辛い。頭が痛いから、自分で頭を叩いて、痛みを逃がすのだけど。 そのときに頭蓋骨が振動する。すると目の映像が接触の悪いLEDのようにチラつく。 ほんのわずかな時間だが、目の前が真っ暗になる。 真っ暗になって目が見えなくなると日記やSNSへの投稿はできなくなるから、 たまに僕が本物か、確認したほうがいいかもです。


3月16日 8bit CPUはA4 2枚

割込み、圧縮命令など全機能を入れた8bit CPUの詳細な論理図面ができた。 まだまだ手を入れないと動かないとは思うけど。これからverilogにして機能検証。 全部でA4 5枚だが3枚はメモリだけの絵なので実質2枚。 面積を小さくすることに努力を注いだ結果なので、ちょっとうれしい。 急ぎ、動作検証をしてICF3-Fの部品として使えるようにする。


3月15日 代理戦争

大手電器メーカーで開発をしていた頃の話だが、何か開発を始めようとすると、 SONY代理や東芝代理やNEC代理とかが潰しにくる。「次はどこがくるかな」とまで言われたこともある。 そろそろARM代理として活動を開始するかもしれない。 頭の調子が悪くなった責任をARMになすりつけるのだろう。ARMに連絡をする手段がわからないのでここに。


3月15日 CPUのALUを設計中に考えたこと

まだ頭の調子が良くない。善良な市民に、こういう方法で言うことをきかせることの問題を感じる。
トラブルで8bit CPUの設計に入った。 詳細な設計図をA4サイズに書いているが8bit CPUなので4、5枚といったところか。 体調が良ければ今日には設計図が書きあがっていたころだろう。 ALUの設計中・・・


3月8日 Intel CPUの新しい脆弱性が話題に

目がまだ辛い。視点を移動させてから安定するまでに数秒、目に力をいれないといけない。 作業速度が半分以下になっていると思う。
CPUの脆弱性、再設計しても完全にならないような情報が入ってくる。 暗号プロセッサによる対策が良さそうに思える。脆弱性の対策では高性能である必要はない。 楕円暗号の521bitではパラメータにメルセンヌ素数を使って高速に演算できるようにしているものがある。 C言語でメルセンヌ素数で割った余りを計算する方法を確認してみたが、正しい結果になった。 OpenICF3は楕円暗号は、それほど得意ではないが楕円暗号に特化した高速化にも対応していけるのかもと。 つまり脆弱性対策においてもOpenICF3は、うまくいくかもしれない。 それが滞ることは問題と思うのです。
今は、Xilinxの8bit CPU PicoBlazeを代替する8bit CPU ICF3-Zを急いで設計している。 昨年、ICF3-Vを検討していたときよりも、良さそうな実装ができそうで、近日中にverilogにして、 ICF3-Fの通信プロセッサとして、使っていけるようにする。


3月7日 目が煩わしくて作業があまり進まない

昨年から目が急激に悪くなっている。 もう状態がいいときでも目が煩わしくて作業に集中することがやりにくくなっている。 目の焦点距離を合わせる機能が、ほとんど動いていないのかも。 5cm距離が違う場所に目を動かしてしまうと息苦しくなる。 つまり距離の違うところに目を動かさないように自然と体が制御されてしまうのだが疲れて仕方がない。 これ以上は限界にきている。
思い当たることを言うなら世界の銀行や外務省で使われるような暗号装置を開発したときに、 会社は僕について、いろいろ調べたのだと思う。 その情報を元に、どうやれば僕を潰せるのかを考えた。暗号装置の開発部は東大卒が多くいる。 研究所と違い学士が多く、東大卒が偉くならないことに明確に不満を言っている人もいる。 偉くなるために闇に手を出したというのが僕の推理で東大卒の人だけが問題ということではないが 深くかかわっていると思われる。
僕に問題はない。問題がないからこそ、こうやって頭や体が何故か、壊れていく。
人生も半世紀近くが経過したが、ここ数年になって、家族と遺伝子が違うのではないかということに気づいた。 自分が、ある機関の実験体の1人で生まれた直後の事故後以来、観察されていたのかもしれない。 そういったことも、関係があるのかもしれない。

僕の発明であるICF3-F、大きな鍵のRSA暗号を計算する方式は、まだ有効で、SSLアクセラレータとしてすぐ使える。 そして将来、新しい公開鍵暗号の開発に迫られたときに大きな整数を高速に演算できるLSIを安価に製造できれば、 選択の幅が広がり、社会に大きく貢献する可能性も、ないとは言えない。ないとは言えない程度だが、 そうなれば人類史にも残るだろう。
CPU(マイコン)の設計もしている。大学卒業後、CPUを開発したくて会社を選んだ。 だからCPUの開発が世間で風当たりが強いことも良く知っている。 風当たりが強い原因は、税金がかかることだから、それを対策しながら、メリットが得られそうなところを 進んでいけばいい。風当たりが強いおかげで、案外、楽にメリットを見つけられる可能性があると思っている。
僕がこんな状況なので、ICF3-F、ICF3-Vも、どちらのプロジェクトも僕1人しかいない。 誰からも、声はかかっていない。
ここで僕の頭や体が潰れると、問題は大きいと思うのです。


3月6日 外出したが目を開けているのが辛い

昨年、目が急激に悪くなって眼鏡を2度購入した。 今日、うっかり1度目に購入した度の弱いほうの眼鏡で外出してしまった。 物が2重に見えて目を開けているのが辛かった。 映像的には映っていても文字が認識できなくなることなどが、割と起きているが、 昨日あたりは、眼球を動かす筋肉がうまく動かない。 目に限らない、体調不良など、さまざまな症状が出る。 1か所に絞ると、問題が明確になるからだろう。
僕の頭が悪くなっても、悪いことのほうが多い計算なのです。 計算に誤りがあることは聞いていない。昨日、某会社の話をツイートしたら、 誰かが「セキュキャンも明日は我が身だよね」(だいぶ意訳)のようなツイートを見かけた。 そろそろ考えるべきときが来ているのではないでしょうか。


3月5日 ICF3-Vの高信頼化

ICF3をベースにした8bitCPUを気持ち良く設計している。8bitCPUだが32bitの命令コード、圧縮命令16bit。 8bitCPUで既に命令コードのbit幅を使い切っている感じだ。32bitCPUのICF3-Vでは命令効率を下げないと 32bit/16bitの命令コードでは難しい。いっそ64bit/32bitの命令コードにするという案が浮かんできた。 かなり無駄な感じに見えるが、命令コードが64bitになるとECCが便利に使えて信頼性が高いものになる。 メモリの面積が大きくなるが、高信頼化で3重化することを考えると、メモリはECCがあるので1つでいい。 つまりICF3-Vのように演算ゲートの面積の割合が小さいCPUが、高信頼化の用途で活躍するかもと妄想中。 やっぱ64bitの無駄のほうが大きいかな。でもXilinxのBRAMはECC標準装備だから64bitにして使わない手はないとも言える。


3月4日 ICF3-Vのアーキテクチャの説明

「従来CPUと違いが良くわからない」そういう人のために。 従来CPUはレジスタへのロードとか加算とか命令をデコードして制御信号に変換して処理をする。 ICF3-Vは最初から制御信号を命令コードにしているのでデコードがなく面積が小さい。 重複していなければ1サイクルで複数の処理の信号線を操作することが可能。 つまりパイプラインがなくて面積を小さくできる一方、パイプラインのような性能が出る場合がある。 ICF3-Vは32bitの命令コードだがプログラムメモリの面積が大きくなる欠点がある。 これを克服するため16bitの圧縮命令を用意。ただ従来CPUの16bit圧縮命令と異なり、 ユーザー定義命令になっている。ICF3-Vの命令コードは最初から制御信号になっているので、 それを使って16bitの圧縮命令を自作するのです。 ICF3-Vは単純な処理を実行する部分しかないのに、16bitの複雑なユーザー定義命令も実行できるし、 32bit命令コードを使ったパイプラインを有するCPU並みの性能を出すこともできる。


3月4日 劣悪な環境

頭痛に悩まされ、痛み出せば数時間寝るという生活。そして親のパソコンの世話で時間が消える。 環境が劣悪でICF3-F、ICF3-V、ICF3-Zが進まない。この国の環境改善が必要なのかも。


3月3日 ICF3ベースの8bit CPU

ICF3-Vよりも、もっと面積の小さい8bit CPUをICF3をベースに作れないか考えだした。 ICF3-Zと命名だけしてみる。(ICF3 ZEROみたいな(笑))
ICF3-Vの話と同じだが、32bitの命令コードに圧縮命令か否かを判定するbitを入れると、 それだけでメモリの無駄になる。圧縮命令モードにすれば無駄を省けるように考えていた。 ハードを実装を考えると、やっぱり圧縮命令のbitがあると楽なので、0.5bit入れることを考えた。 良さそうな実装になりそう。スタック、割り込みも、、、。
頭痛や倦怠感に襲われ、寝るかどうかでのところで作業を進める。少し楽になってきたら、MMD動画を見るのだが、 仕事よりMMD動画鑑賞のほうが閾値が高い。創造作業で脳の劣化に気づき発狂しながらなのだ。


3月2日 8bitのプロセッサも自作か???

ICF3-Fの開発を、とても急いでいるのだが、Xilinxのセミナーの承認が来ない。困った。 通信制御用のプロセッサとしてXilinxの8bit CPUのPicoBlazeを使っているが、自作を検討。 ICF3-Vのこともあり、とても忙しい。しなくていい自作は、したくない状況。 PicoBlaze以外のXilinxのIPは開発中のICF3-Fにはない。 昨年、LatticeのFPGAの講習会に、たった1日だが参加した。 とりあえずLatticeのFPGAデバイスにbitstreamをインストールして動かすことは、できるようになっている。 Latticeの99ドルの評価ボード。仕様を見る限りICF3-Fは入りそう。 Latticeにも8bit CPUがあってC/C++が使えてオープンコアIPらしい。 しかし、ごく簡単な通信制御なので自作がいいかなと。
先日、シミュレーションで8bit CPUでは性能が足りなかった。 CPUを経由せずに直接転送するハードを作ってverilogのシミュレーションをしている。 まだ最初の段階だが、全力で転送をしても受信バッファを溢れさせることはなかった。


暗号プロセッサ OpenICF3