やや雑談だと思ってください。ダンマリを続けるよりは、思ったことを書いておこうかと思ったのです。
WZetaが他のCPUに似ていれば、WZetaの海賊版を勝手に作れると思う人がいると思っているのです。
子供の頃からポケコン(CASIO FX-502P、SHARP PC-1251、SHARP PC-1480U)などで遊んでいるし、
大学のときに情報処理試験2種、1種に合格していたりするのでハード非依存なCPUも少し勉強しているのです。
加算結果のキャリーを保存するキャリーフラグとか演算結果がゼロなら立つゼロフラグとかが
似ているとか、そういう、意味のないことを言う人のことまでは考えません。
例えばPC-1480UのCPUであるSC62015(ESR-L)はSHARP独自のCPUらしいのですが、
ファミコンでおなじみの6502に似ているようにも見える。
WZetaはどのCPUとも似ていない。アセンブラのニモニックが情報処理試験のCASLに似ているようにも
見えるのですが、WZetaのA、B、CレジスタはCASLのGRレジスタほど汎用レジスタではなく、
Aは演算、Bはインデックス、Cはループのように役割が決まっています。
そしてデータメモリの先頭から126バイトをレジスタのように使うことが容易な命令セット
になっています。またスタックのハードはありません。
小規模なシステムにスタックハードはなくても、なんとかなるのと、
ソフトウェアによるスタックを作りやすくする命令セットになっているのです。
ポケコンや従来マイコンではメモリの拡張性を考えたアーキテクチャになっているので、
内蔵メモリと拡張メモリの速度差を考えなければならなかったのかと、思っているところです。
WZetaはメモリを拡張した場合、最も遅いメモリに周波数を合わせる必要があります。
これではポケコンなどの用途では、メモリを拡張したら、これまでのプログラムが遅くなったみたいな問題が
発生してしまいます。
トランジスタ数を限界まで削ることを決めたWZetaは途中からユーザがメモリを拡張することまで、
考えず、メモリ1個でシンプルな構造になっています。
WZetaは実用性のある命令セットで初めて命令コードの逆順が可能な命令セットになっています。
(最大128KBのプログラムメモリ、64KBのデータをアクセスが可能で、ある程度、性能面も考えられた命令セットになっていること)
この逆順が可能な命令コードをきっかけに、作り始めてみると、
1命令4サイクル固定のハードが実装面で、思ったよりも、これまでにないCPUになるという予感をさせている。
そして独自性のあるCPUです。
追記
速度差のあるメモリに対応しないのかと、うるさく言われたので考えました。
WZetaの最初の実装であるSDogは1命令4サイクル固定で単純な構造です。
毎サイクルメモリにアクセスする仕様なので、遅いメモリのアドレスにアクセスした瞬間に、
クロックイネーブルを必要なだけ止めることをすれば、簡単に実装できるかも。
つまりポケコンなんかも、いけるかも。
4行表示の液晶ディスプレイを持つ、銀行の振込で使えるような認証デバイスは、
超軽量8bit CPU WZetaの用途として面白そうかと思っています。
超軽量な命令セットですが剰余演算、RSA暗号、SHA-1(ハッシュ関数)など、
一通りの暗号演算のプログラムを書いてみて良好な結果なので。
トランジスタ数が少ないCPUなので製造原価が安いことが期待できます。
RAMとのシリアル転送が極めて効率的なところに注目している人も
あるようで、銀行の認証デバイスのように大量に生産される機器向けでの
経済効果が見込める予想があるからだと思われます。
電卓用途まで含めて量産効果を狙うことはあると思っています。
ただWZetaは電卓で良く使われると思われる10進命令がありません。
日立の大型コンピュータにMP5600(国内向けの名称、この海外向けも売れたらしい)があったのです。
1996年の機種ですがCPUを日立製のものからIBM製に変更した機種でした。
当時、バイポーラからCMOSへの転換期でCMOSに舵を切ったIBMも、まだ性能十分ではなく、
日立のバイポーラが儲かっていた状態でした。
IBMのCPUに変更した新しい機種であるにも関わらず10進命令の性能が落ちたために、
野村証券に怒られたという話を開発部でも聞いています。
超軽量8bit CPU WZetaは命令を自作することが可能なので、
必要な10進命令を作ることがアプリケーションプログラマで可能です。
Z80の10進命令を調べましたがDAA命令と4bitシフト命令があるようです。
DAA命令は性能が必要なら256バイトのメモリを使ったテーブルで実装すれば高速です。
4bitのシフト命令は、8桁とか10桁のBCDをシフトするのに使われるみたいですが、
WZetaでは多倍長の1bitシフトは高速なので4回繰り返せば、あまり遅くないかもです。
10進10桁の四則演算をする仮想コプロセッサを作れば10進演算を多用する
アプリケーションでも、省メモリになると思われます。
既にスタックマシンの32bit整数の仮想コプロを実装して逆ポーランド記法に似た
アセンブラプログラムが動作しています。
趣味だけでなく、儲かることを目指して、いきたいですね。
やってみて失敗したという話は聞きません。故意に失敗するのは簡単なので。
追記
演算に使っているトランジスタは8bit加算器1個なので鍵長が長くなると楕円暗号でも、
性能が不足すると思われます。しかし暗号プロセッサSnakeCubeを追加すれば性能の問題は解決できます。
コストのほうも僕がSnakeCubeの利権を持っているので外部からIPを調達するより安価になると思われます。
WZetaの制御部分をverilogにしているところです。
状態遷移図で全ケースの動作を確認しています。
ハードマクロ命令実行中、ハードマクロ命令終了ビットが立っている命令を実行。
そのタイミングで割込みが来て、命令は分岐命令を実行している、という状態でも、
正しく処理できるようにしています。
思っているより、時間がかかっています。
オープンソースで公開予定の設計図です。クリエータがラフ画を公開するノリ。
念のために言うと、公開予定の著作物です。転載禁止でお願いします。
設計図を元にverilogに変換しているところです。
verilogにしたところが、茶色のマジックで塗りつぶされています。
ハードウェア記述言語を使って設計している人もあると思いますが、
僕は論理ゲートレベルの設計図を先に書く方法をとっています。
メリット、デメリットあるので、どの方法がいいとかは、ないように思ってます。
図をマウスでクリックすると拡大されます
verilog実装開始。旧WZetaも1命令4サイクルなのですが最後のサイクルでRAMに書き込みを行って、
次のサイクルで読み出す可能性があるため性能が下がっているかもしれなかった。
新型のSDogコアは書き込みの次のサイクルでは読みださないことが決まっているため、
もしかすると、これまでより周波数が上がるかも。
旧WZetaは公式サイトにあるように217MHzを記録した。Xilinx PicoBlazeは133MHz(1命令2サイクル)。
新型WZetaの周波数がどうなるのか、実装してみないとわからないが、もし周波数が上がって
266MHzになると1命令4サイクルといっても1命令2サイクルのPicoBlazeと変わらないということになる。
実装して周波数が下がる可能性は、あるかもだけど。
産業スパイによる遠隔攻撃によって体調や頭が悪くなって、作業速度は遅いですが、
この8bit RISC-Vみたいな新型WZetaのリリースは楽しみにしているのです。
WZetaのシミュレータ(C言語版)でSHA-1を演算するプログラムができました。
"abc"の3文字の入力に対して正しい計算結果を出力しました。
WZetaは通信、暗号を主とした汎用のCPUなのですが、WZetaの命令セットで
SHA-1などのハッシュ関数の実装も、問題なく可能だということが確認できました。
仮想コプロセッサ(Vicopoid)は32bitのスタックマシンです。
SHA-1の演算には仮想コプロセッサVicopoidを使います。
逆ポーランド記法のようなハードマクロ命令の命令列によって数式を演算します。
5月17日の更新に続いて2回目。キャリー付きの
シフト命令しかなかったのですが、普通のシフト命令を追加しました。
作業ができなくなるギリギリの線よりは、産業スパイによる攻撃で、くたばっていました。
おかげで日記に余計なことを書く時間が増えたのかも。
あまり進んでいませんが、仮想コプロセッサVicopoidの実装中。
僕の言う数学の才能について興味を持った人もあったでしょう。この話題にうるさい人も多い。
学区で3番の高校は阪大卒の先生が多いのですが、
その数学の先生が阪大卒だったかは、覚えていませんが、
「覚えたことは忘れる。そうはいっても受験では問題集でかっちり固めないといけません。」
そう言う先生がいらしゃった。
覚えないで覚えられる才能が示唆され、それが受験では十分に発揮されない。
ということだと思う。非常に的を得た言葉で、名言として受け取っています。
人によっては外部装置によるチートと勘違いしてきた人がいたようなのですが、
その才能がないと、そう思えるのでしょう。
入ってくる情報の記憶のされ方が、普通の人と少し違う。
教えられていないことへの対応能力に差異が出る。
大学入試の1次試験と2次試験で偏差値がかなり違う人がいる。
僕も2次型でしたが、1次2次でも違いが見られる。
まして受験では教えられていないことへの対応能力を測ることは困難。
2次の点数で代替できないというのが、僕の説明。
追加。入ってくる情報の記憶のされ方という記述では、説明不足だったかも。
抽象的な表現だから、わかる人は、わかるという説明なのかもしれない。
輪郭のような記憶で全部を復元できるのは、無意識のうちに本質的な理解をしているから、
復元できる。記憶は常時、昆虫の複眼のような目玉で監視され、単眼のような精度はないものの、
条件の違う状況を管理する目玉が、多数あるというイメージか。
単なる長期記憶との違いを説明してみたつもり。僕の経験からの想像なので注意。
ここ数日の日記を読んでからのほうがいいかも。
僕の高校時代の数学の話。高校2年のときに大阪の駿台予備校で
数学スーパーコース(特類)というものが新設された。
東大医学部まで対応する最もハイレベルなコースだったが、試験に合格したので、
通うことにした。1回の授業で3問を教えるのが普通だったが、特類は2問だった。
難易度が高い。学区3番の高校の数学の授業とは、明らかに開きがあった。
高校の数学のテストで、駿台の解法を使って解いたら、女性の先生がテストを
返すときに、教職員の人たちとかけあって、正解にしましたと、みんなの前で、
言われた。漸化式を使った証明で解くべきところを、駿台の解法によって
証明なしに計算結果を出した。という事件だったと思う。
細かいことは、僕は忘れました。
証明無しに1っ発で答えが出る駿台の解法は、大学受験で出れば、
15分かかるところを、5分で解答できる。さすがである。
東大数学の事情もわかって数学の才能について語ることができるのは、
駿台の数学スーパーコース(特類)に入ったおかげかな。
昨日の日記について産業スパイ経由で反響があったので補足。
興味の無い人は読まなくていいです。
大阪府で一番の高校は北野高校だが、僕が学区内の2番目ではなくて
3番目の高校だったことを指摘された。
中学校の先生は授業中に全員に対して北野に入る人が副教科の
成績を持っていくことを言っている。結構、最初から言い訳している。
2番目の高校に入れるくらいの内心点だった。
自宅のすぐ近くに3番目の高校があった。地元志向ということで、
3番目の高校を選択する人も多かったと思う。
3番目の高校に入って成績トップを争うようになったのですが、ある日、親を通さずに、
僕に直接、中学時代の内心点を分けてもらったと言いに来た人がいた。
この結果、中学の先生の責任が軽くなるのかと、最近、思った。
中学の数学の先生に悪い点数をつけられています。
僕は、周囲の薦めに従って早稲田実業の受験問題を数学の授業終了後、
その場で解くようにお願いしました。先生(女性)は、その場で解くことができず、
ちょっとばかり恥をかいてもらうことになったようです。
嘘っぽく聞こえますが本当の話。
3番目の高校に入ることになったことについて、僕はどう思っているかといえば、
自転車で信号待ちがなければ5分という近さだったし、成績で学年トップ争いを
することになったので、有名人になり、とても良かったと思っています。
中学の音楽の先生が、盛んに授業中、「北-予-関」「池-予-関」
と言っていたのを覚えています。
1番の北野高校に入って予備校を経由して関関同立に入るか、
3番の池田高校に入って予備校を経由して関関同立に入るか、だと。
2番目の高校じゃないのです。
先生は、北野への受験資格は渡すことができても、、、ということを言っていたのだと思う。
参考までの話をすれば、この中学に時の総理大臣、中曽根氏が公式訪問したことがある。
テレビ放映もされているけど、よりによって弟が学級代表の時だったから、
弟が中曽根氏に代表質問するところが映っている。
この件、僕には偶然のようには、思えていない。弟は慶応大学の学部卒で、
僕が早稲田大学の修士卒だから、実は学歴は僕のほうが上だったりする。
不思議なのは、僕以外の家族は全員、学区1番の高校だが、最も高学歴なのは僕だという。
先月に公開した命令仕様に変更をいれました。
LDP命令、LDM命令を削除。ハードマクロ命令のオペランドに即値を使えるようにしました。
レジスタ間接の相対分岐ができるように分岐命令を改良しました。
相対分岐命令の位置から-128~+127の範囲で分岐ができたのですが、改良後は
-127~+127になります。オペランドが-128の場合はBレジスタの値を使うようにしました。
間接分岐ではBレジスタの値によって-128~+127の分岐が可能です。
MONOist(Yahoo)記事、
「非パイプライン構造1ステージ化RISC-VプロセッサのFPGAのCPU回路効率を改善」について。
僕のICF3-Zに似たような技術に見える記事です。
普通の人には、わかりにくいと思ったので、説明をすることに。
記事に、どうやって実現をしているのかが、全く書かれていなくて、
僕も記事しか読んでないですが、僕には、それで十分でした。
ICF3-Zは1999年のICF3と同じ方式が使われています。
ICF3は1命令サイクルを1ステージ化をするのに命令セットを水平コードにしているのです。
RISC-Vの命令セットを維持する記事の技術とICF3-Zは全く実現方法が違います。
ちなみに開発中のWZeta
SDogコアは1命令4サイクルなので記事の技術の影響は無いと思われます。
記事の最後に今後、非同期ASICになっていく話が書いてあったのが、
印象的でした。20年前、日立の幹部候補生が集まると言われている研修で、
当時、東工大の南谷先生の授業があったときに、僕が
スカウトされそうになったのですが、南谷先生の非同期式プロセッサは有名だったと思います。
記事の技術は、特許らしいので、ICF3-ZやWZetaに流れるエンジニアは、
いると思いますが、ICF3-Z、WZetaが立ち上がる必要があります。
頭がいい順に1番の学校に入っているという仮定が、既に成り立っていなかった。
僕の経験から、そう言える話をしてみる。
先に僕について言えば、親と全く異なる遺伝子であり、
数学の才能を持っていたが、速さと暗記の能力のほうが有利な受験では、
今一つだった。という理解をしている。
中学のときにマイコンで遊び過ぎたために受験に失敗しているのではないかと、
思った人があるかもしれないが、そうではない。どちらかというと
才能が受験に合わないためにガリ勉しなければ、いけなかった。
周囲から見れば、才能がない奴がガリ勉して成績を良くしているという
評価だったのかもしれないが、真実は逆で才能が受験に合わないということだ。
今日の本題に戻ると、どういう人に1番の学校に入ってもらいたいか
ということが、順番に変化をもたらしている。
1番の学校に入って欲しくない人は足を引っ張られるし、
できる後輩はいらないし、1番の学校に入ったことぐらいで、
人心の掌握ができる、僕にとっては面白味のない人材が1番の学校に入りやすい。
僕は小学校6年になるときに東京から大阪に引っ越しをした。
誰を大阪府で一番の高校、北野に入れるかというところで落ちやすかった。
それでも成績が群を抜いていれば、北野に入ることはできたろう。
実際、中学2年のときに転入してきた同級生の2人が、
2人とも北野に入っている。そういえば弟も北野に入った。
僕は受験に合わない才能の問題で当落のギリギリだったから受験資格を
得られなかった。
中学の同級生で北野高校に入った人は9人、大学受験でどうなったかと
言えば、入れなかった9人のほうが平均値でいい大学に合格しているの
ではないだろうか。北野に入った9人の進路情報は入ってくるが、
そうでない9人の情報は完全ではないけど、わかっているだけで、
それが言えそう。これが根拠
ちなみに僕が北野高校に入っていれば、あの元大阪知事、
大阪維新の会代表(初代)で有名な橋本氏と同じクラスに
なれたかもしれないということを友人から聞いた。
その友人は僕と同じ年で北野に入って、僕と同じ
早稲田の(現)副総長の研究室に入った。
北野に入っても、入れなくても、同じ研究室になっている。
早稲田大学理工学部電気工学科に現役合格し、入った直後は、
教室の最前列の真ん中に座ることが多かったので、
成績優秀者とお知り合いになることができたのだが、
東工大に落ちるくらいのほうが、トップクラスの成績なのだ。
頭のいい順に東大の受験資格を得られていないことが問題なのかもしれない。
僕の国立大学受験も、試験の最中に腹痛を起こして、途中棄権した。
国立大学が人をえり好みしているのか、受験産業の餌食にされたのか。
一番の学校に入っているか、否かは、頭のいい順ではない。
現代では、腹痛よりも、完全にバレない方法で頭を悪くすることが可能。
東大の価値下落に歯止めをかけるには、どうすれば。
必要悪を超えない頭を悪くする光線の利用が求められる。
C言語シミュレータでWZetaの命令セットを使ったプログラムを始めました。
より良い命令セットにするため命令セットの更新を検討しています。
LD命令とBレジスタのインクリメント、デクリメントを同時にする複合命令は、
使いにくいため削除する方向です。
C言語シミュレータの開発が進みハードマクロ命令が実装できました。
動作検証のため簡単な仮想マシンを作ってみることに。
開発の都合、仮想マシンの名前がないと困るので、名前を考えるのに1時間以上使いました。
特に知ってもらいたいということでないのですがvicopoid (Virtual Integer Co-Processor-oid)、
日本名にすると仮想整数型コプロセッサっぽいもの。32bitの整数演算をするコプロセッサ。
性能加速ではなく省メモリが目的。完成しないかもしれないけど、ハッシュ関数の実装するのに使うかも
まだ厳密には1024bitのべき乗剰余までですが、これができればRSA 2048bitが可能になります。
何がいいのか?
超軽量8bit CPUの命令セットでRSA、楕円などの公開鍵暗号を高速&省メモリに実現できるということを確認できた。
C言語によるシミュレータは1024bitのべき乗剰余演算の演算が正しい答えを出力しました。
WZetaはトランジスタ数を少なくするために命令セットにはベースポインタを使った
アドレッシングがありません。このため実際に公開鍵暗号のプログラムをしてみると、
効率的な実装ができない可能性がありました。
べき乗剰余演算とは
y = g ^ x mod p
の計算式で示される演算です。y,g,x,pは1024bitのデータ。今回の実装方法は、
1024bitの事前定数R^2 mod pと1024bitのワーク領域を使います。
つまり1024bit×6のデータメモリと数十バイトのデータメモリで演算できます。
結論を先に言えば、公開鍵暗号で良く使われる剰余演算はデータの配置を工夫すれば、
ベースポインタがなくても省メモリに実装ができる。
6本の1024bitのうち、3本が256バイト境界、3本が128バイト境界に配置することで、
問題なく演算できる。1024bitは128バイトなので256バイト境界に配置すると
128バイト空いてしまうのだが、そこに128バイト境界のデータを配置すれば、
全く隙間なく配置できる。
WZetaは多倍長演算が得意な命令セットですが8bit加算器1個ではRSA暗号の性能は厳しいかもしれない。
1024bitのべき乗剰余演算のクロック数は、1050万サイクル。1サイクルは4クロックなので、
1050万×4 = 4200万クロック
脆弱性などの対策は入っていないので対策後、5500万クロックくらいと見積もる。
低スペックなマイコンのクロックは12MHz程度なのでべき乗剰余演算1回にかかる時間は458秒。
CRTを使ったRSA 2048は約1000秒弱(=17分弱)。
CRTを使わない場合の予測値は約1時間。
野外に置かれるIoTの場合、CRTを使わないほうが高いセキュリティになるので、
サーバからIoTにRSA 2048bitの署名を要求して1時間後に返事があるというシステムでも、
問題がなければ、超軽量8bit CPU WZetaのIoTが使えるように思います。
WZetaはマルチタスクが可能な仕組みを入れたつもりなので、
バックグランドでRSAを演算させならが、IoTのウェイトの多い通常動作が可能。
RSAは重いのでSSHの鍵として使うのは難しいですが、最近、エドワーズ曲線などの、
かなり軽いアルゴリズムも普及したみたいなので、そういった軽いアルゴリズムを使った
SSHの鍵は、有用な用途になるかもしれません。WZetaは40年前の8bit CPU規模の
トランジスタ数なので信頼の置ける製造メーカの選択の幅が広い。
スマホ、モバイルなどのサブCPUとしての用途も、いける可能性があると思っています。
最近のスマホ、モバイルのクロックは数GHzなので、マイコンの数百倍の性能が出せるので、
WZetaでも、実用的な性能が出る場合がある。メインCPUの脆弱性対策にかかるコストを低減できます。
一定以上の性能が出れば、トランジスタ数が少ないCPUが有利なのです。
僕が大手SNSで配信している広告が止まるなど、少し不穏になってきたので、
問題になっているであろう部分を、バッサリ削除しました。
既に何度かSNS上で話をしてます。1984年当たりで僕が中学生だった頃の話で、
分析が進んだので軽く説明をします。
BASICマガジン(ベーマガ)にICBMが上から落ちてくるのを迎撃するゲームが掲載されていました。
JR-100のゲームだったのを僕が所有しているSHARP MZ-2000に移植しました。
400字詰めの原稿用紙に説明を書いてゲームをカセットテープに記録して
ベーマガ編集部に郵送しました。翌月の発売日、胸を躍らせながら本屋に行って、
ベーマガを開くと僕が投稿したゲームは掲載されませんでした。
そして僕と同じ名前の人のゲームが掲載されていました。
他の書籍に掲載されていたテニスゲームの丸パクリの盗作でした。
鮮烈な想い出になっています。
この丸パクリの盗作の件は、盗作でしたというお詫びが、
後のベーマガに掲載されていたことも記憶しています。
ちなみに電波新聞社さんの社長さんは僕と同じ名前、平山さんなのだそうです。
現在の社長さんも、そうだとか、ツイッターでお見かけしてますけど。
分析が進んだと言ったのは、僕がベーマガに郵送したカセットは、
何者かによって、差し押さえられ、その「領収書」として、
丸パクリ盗作をベーマガに掲載した。
こうすればベーマガ編集部が没にしたことにならない。
C言語によるシミュレータが動き出しました。まだハードマクロ命令や、
割込みの実装は無いのですが簡単なプログラムは正しい結果を出力しました。
$PRINTはシミュレータ用の疑似命令です。Aレジスタの値を表示させる命令です。
### ADD TEST
MEMORY 2
MODEL 1/2
.PROG
LD A,1
ST %R0,A
LD A,2
ADD A,%R0
$PRINT A
EXIT
.EXIT
JR 0
.DATA
REG 1 R0
産業スパイの妨害が増加したため作業が進んでいません。
アセンブラとC言語によるシミュレータを同時に開発しています。
デバッグ用の機能を実装中。メモリの内容を表示する疑似命令を追加したほか、
アセンブラのコードからC言語シミュレータを呼び出すため疑似命令を追加。
デバッグの機能にはブレークポイントや、パスカウントみたいな機能を追加するのが
一般的かもしれないが、C言語呼び出しAPIを付ければ、
もっと複雑なデバッグが簡単にできる。ということを思いついた。
オープンソースならではの方法だと思う。
産業スパイによる遠隔攻撃を受けて、全身に筋肉痛に近い痛みが続いたため、
寝込んでいましたが、そこにスリープの魔法の追撃を受け、さらい寝ていました。
一般的なRISC CPUの命令はメモリアクセス1回のものが多いようですが、
WZetaは1命令の中でリード、ライト2回します。
これは命令コードを逆順にすることで効率化され、実装することができるようになっています。
次のような典型的な演算で、 3命令が2命令になるメリットがあります。
[mem2] = [mem2] + [mem1]
1命令1回の命令セット
MOV A,[mem1]
ADD A,[mem2]
MOV [mem2],A
1命令2回の命令セット
MOV A,[mem1]
ADD [mem2],A
なので従来のRISCと同じということでもない。WZeta以外でもCISC的要素を取り込んだようなRISCというのは、あるかも。
超軽量8bit CPU WZetaはファミコンCPU(6502)などの8bit CISC時代のCPUと比較できる規模のCPUです。
CISCはマイクロコードによってCPUを構成することが一般的ですが、
WZetaはワイヤードロジックで構成することを考えた命令セットになっています。
WZetaはRISCです。例えば6bitのオペコードの32~47(10xxxx)に加算、48~63(11xxxx)に
減算の命令を集めています。こうすることでオペコードの第4bit目を加減算の制御信号にすることができます。
要はオペコードの信号線から制御信号への変換が簡単になるように命令コードの割当をしています。
ここに勘が必要なのかも。命令が決まっていれば機械的にできるかもですが、
どういう命令にするのかも、同時に考えるので。
マイクロコードではメモリを使って任意の制御信号が作れるため純粋に命令を
詰め込むことができます。
ワイヤードロジックを考えた方法では純粋に命令を命令セットに詰め込んだ場合より、
効率が下がる場合もありますが、マイクロコードを格納するメモリが不要になります。
まとめ
WZetaはトランジスタ数が小さくなるように最初から考えられた命令セットです。
ASICのマイコンを作るのに向いています。
WZetaはXilinxのFPGAに実装することを考えたのでFPGAも効率的です。
TTLのCPUを作るには、部品点数を少なくするため
ワイヤードロジックの部分をマイクロコードに置き換えたほうがいいと思いますが
SDogコアについて言えば、全命令4サイクルで実行するのでオペコードから
マイクロコードが格納されるアドレスに変換するのはオペコードを4倍にするだけなので、
簡単にできそうな気がします。僕はTTLを作る時間は、なさそうですけど。
補足、既存のCISCの8bit CPUの命令セットでは、ワイヤードロジックで
実装することを考えてないはずだからWZetaで改めて命令セットを作り直すことで、
よりトランジスタ数が少ないCPUができる可能性がある、ということかも。
参考になる過去の日記
5月1日 超軽量8bit CPU WZetaの存在意義
4月24日 8bitCPU WZetaの命令セットアーキテクチャ初公開
4月19日 超軽量8bit CPU WZetaのメリット
同じ8bit CPU ICF3-Zのアセンブラは独特な命令セットであるためemacsの
asmモードが使えなかったのですが、WZetaはasmモードが使えそう。
これからアセンブラのコードをいっぱい作って開発したアセンブラのテスト。
産業スパイに眠らされて、あまり進んでいません。
体中の神経を刺激されて内出血しているかもしれない。
例えるなら舌の神経の75%が機能しなくなると、うまいもの食べても、
楽しくないということが起きてる。
メモリをロードして相対分岐してループするだけのアセンブラのコードが
アセンブルできるようになりました。
産業スパイによる遠隔攻撃で僕の頭の記憶の1次キャッシュは10分の一に退化し、
少ないキャッシュで過ごす生活体系になっているが1、2次のキャッシュが揮発する問題が起きています。
遠隔攻撃の問題は様々ある。頭の良い人からは、頭の良い子供が生まれることはわかっているわけで、
音もなくキャッシュを劣化させれば東大合格から脱落する。
日記に産業スパイの遠隔攻撃について書くことを良く思わない常勝システム組の方々は、
いらしゃると思います。僕への遠隔攻撃を無期停止すれば話をすることも、
あまりなくなるだろうと思っています。
アセンブラのコーディングが終了、デバッグはこれからですが、
先にシミュレータの開発に着手。WZetaはインデックスレジスタをベースとした
アドレッシングがないので、アプリによっては256バイト境界でデータを
配置する必要があるのですが、アセンブラに自動的に配置できる機能をつけました。
(256バイトの変数を使って演算するような場合など)
産業スパイもゴールデンウィークは休まず24時間営業なので
頻繁に体に軽く痛みが走るので困る。産業スパイ、とてつもなく違法なはずなのですけど。
本日、午前中にオンラインストレージMegaの転送容量(推定30GB)が
盗まれた件を報告しました。MegaはGoogle 認証システムを含めた、
いくつかの2段階認証に対応しているようです。早速、2段階認証を設定しました。
昨年、30万円のXilinx FPGA搭載PCIeカードAlveo U50を購入。
SSLアクセラレータを開発するべく作業を進めてきました。
産業スパイによる妨害が続き、日記で妨害について報告しても、
無償のオープンソースの開発なら世間は手助けできても商用では、
手助けできないという結論に達し、
まず無償のオープンソース(8bit CPU)の開発を先行させています。
SnakeCube
は技術的にマネはできないので僕が開発するしかないと思っています。
FPGAではなくASICという案を言う人はあると思いますが、
量子コンピュータの解読の問題もあり資金を集められないことや
国際的なテロに使われる懸念のため計画を潰される可能性が高く、
既にデータセンターへの配備が可能なXilinxのFPGAが良さそうだと考えています。
過去、大型コンピュータのASICの暗号チップを3個開発した経験から言うと、
出荷後、修正のできないASICは、設計、開発コストはFPGAと比較して
非常に大きいということを考える必要があります。また運用面でもFPGAが有利です。
RSA 2048bitの暗号プロセッサ×8個の構成でスタートして、必要に応じて、
RSA 1万6384bitの暗号プロセッサ1個という構成に変更可能です。
SnakeCubeではなくスケーラブルなアーキテクチャを採用するなら
効率がかなり悪くなるという問題が発生します。
図をマウスでクリックすると拡大されます
トランジスタ数を少なくすることに重点を置いたCPUです。
最近の8bit CPUはレジスタ数を多くしたり、命令コードフェッチ用のリングバッファにトランジスタを使ったり、
トランジスタを多く使っています。このためTTLで作ることが困難であったりしますがWZetaでは
製造技術の低い装置で安価に製造することが可能になると思います。
実際の製造について、あまり詳しくないので、具体的なことを言うは難しいのですけれども。
16bit固定長の命令セットですが8bit単位で命令を受け取ることができて、
逆順で受け取ることで性能が上がる独自な命令セットになっています。
これは大きな特長であり競合する超軽量8bit CPUに対して優位を保てるだろうと考えています。
近年の技術的な進歩によってシリアル転送できるようになった結果、
データの双方向バスをリードとライトの2本の配線でできるようになっていると思います。
少ないトランジスタ数でデータの双方向バスを前提にしたアーキテクチャでは、
十分な性能が出ない、、、かもしれない。WZeta(SDogコア)は多少、
オーバーラップした転送をするのでメモリ性能を十分に引き出すことができるように思っています。
WZetaのSDogコアはSRAM1個でも動作します。アドレス線はプログラム、データ共通ですが、
アクセスのタイミングが固定なので、ROMとRAMの2個のメモリでも動作します。
8bit CPUのRISC-Vみたいな、あると便利なCPUだと思っています。
(WZetaの方針は税金を使わないことなので税金関係ない人とか)
開発が進むように妨害されないことを期待しています。
血が止まらない問題が完治していなくてヤバい。
ゴールデンウィークも休まず営業中です。アセンブラを開発中です。
従来WZetaのアセンブラはレジスタ番号固定で記述することしかできなかったので
コードの再利用が面倒という問題があったので変数名をつけて自動割当する機能を
作っています。なんとか便利に使えるアセンブラになる予定です。
|