Home

新型WZeta開発中

新型は従来WZetaのような特長を継承し、より汎用性を高めた全く異なるCPUです。 新型もApache License 2.0で公開予定ですので 従来WZetaは旧型として公式サイトに 残されますがメンテナンスされないため新型への移行が推奨です。 恐縮ではございますが利権拡散防止を目的として命令セットへの要望は受け入れていません。


公式サイト : https://wzeta.idletime.tokyo/



elchika投稿「FPGAに実装できる超軽量な自作CPUをオープンソースで公開」


WZeta詳細な設計図、初公開(2021年9月6日)

WZetaのサイトを大幅に更新。 β版の詳細な設計図(A4×2枚)を公開。まだオープンソースで公開予定のものです。 正式公開では ありません。


WZetaβ版PDFの更新(2021年8月11日)

大きな変更はありません。SETPC、SETMC命令のオペコードを変更しただけです。 アドレス拡張を考えた命令セットにするため、アドレス拡張の案を追加しました。 通常のADD命令などの前に置くPREFIX命令という方法を考えてみました。 通常の命令のアドレスがPREFIX命令で指定するアドレスに置き換わります。 拡張アドレス空間での命令セットはシンプルでわかりやすく、 そしてあまりトランジスタ数の増加が少ないものを考えました。 PREFIX命令が付いた場合の命令の動作も(案)に書いています。 ただし実装できそうだという見込みで作ったものなので大きく変更される場合はあります。
更新したWZetaβ版PDFは、今回は、こちらのサイトに置きます。

「WZeta 命令セット SDog コア設計資料」


WZetaβ版PDFの更新(2021年7月30日)

大きな変更はありません。割込みの仕様を明確化。


WZetaβ版PDFの更新(2021年7月26日)

大きな変更はありません。LEVEL命令をUSERMODE命令という名前に変更した程度です。
速報版
全機能を作り込んだWZetaのSDogコアのverilogが完成しました。 ある程度、動作検証もできていますが、バグはまだあるかもしれません。 ただ、これまで何度かXilinxの合成ツールVivadoで合成していますが、 トランジスタ数に大きな影響はないという予測です。 トランジスタ数を書かれても、比較できるものがなければ、 あまりわからないと思いましたので Intel 8bit CPU、8051の軽量な 互換実装light52と比較しました。 freeで公開しているlight52の開発者の人に感謝。

light52で使われるXilinxのFPGAとWZetaで使っているFPGAと同じなので、 直接比較できる数字です。 light52のCPUコアが811LUTに対してWZeta SDogコアは366LUT(プログラムとデータ共用のRAM4KBを装着した場合) 半分以下です。 これはWZetaの命令セットの命令数が少ないことが理由の一つだと思います。 周波数はlight52は50MHzとなっていますがSlackが3.97nsであることから、 62MHz程度で動作すると思われます。 WZetaは今回、166MHzで合成できました。 2.67倍の周波数です。またlight52は1命令に約6サイクル必要ですが、 WZetaは全命令4サイクルです。つまりlight52が1命令実行している間に WZetaは4命令実行できます。 これは命令数が少ないことを考慮しても、 半分以下のトラジスタ数で倍の性能がでる可能性があります。 WZetaは命令数が少ないので、そのままではプログラムメモリの効率が light52(Intel 8051)より悪いのですが、 ハードマクロ命令という機能で カバーします。よく使う命令列を1命令に短縮する機能です。 高速で呼び出しにかかるメモリの少ないサブルーチンということもできる機能です。 この機能で整数型32bit仮想プロセッサを作り、32bit CPU向けに作られた プログラムを 移植することが容易にします。 コンパイラが作りやすい命令を用意することができるなど、 興味深い機能となっています。


WZetaβ版PDFの補足2(2021年4月27日)

β版のSDogの仕様は、安全性を考えて1つのメモリでプログラム領域とデータ領域を分けていました。 データ領域にアクセスする場合、ハード的にアドレス変換をします。 ハーフモデルでは、メモリの前半がプログラム、後半がデータになります。 データにアクセスする場合は、アドレスの最上位ビットを強制的に1にするのです。 アドレス0番地にアクセスしても後半の先頭にアクセスすることになります。 こうすることでバグで誤ったところを書き換えてもプログラムに影響することはなく安全になります。 さらにデータ領域にあるプログラムを実行することも可能です。

アドレス変換をしない、プログラム領域とデータ領域を重ねるメモリモデルTINYを追加することにしました。 より小さいメモリ(SRAMなど)で済むので原価低減できます。


WZetaβ版PDFの補足1(2021年4月25日)

「WZeta 命令セット SDog コア設計資料」の冒頭に

乗算命令のない 8bit CPU で剰余演算を高速かつ省メモリに実行できることを考慮しています。

剰余乗算はRSA暗号や楕円暗号などの公開鍵暗号の計算に使われる演算です。


新型への移行を推奨(2021年4月24日)

elchikaの審査が通過したため本格的に整備を始めたところ新型を開発することに。 新型もApache License 2.0で公開予定ですので 従来WZetaは旧型として公式サイトに 残されますがメンテナンスされないため新型への移行が推奨です。 恐縮ではございますが利権拡散防止を目的として命令セットへの要望は受け入れていません。


WZetaがelchikaの審査を通過しました!(2021年3月13日)

超軽量のCPU WZeta の作品を応募。elchikaのハードウェア作品投稿キャンペーン の審査が通過しました。審査に通るとは考えていなくて、感激していて、審査通過のプレゼント、 どうしようかと困惑しました。結局、プレゼントは貰わないことにします。
審査をしていただいた秋葉原の店舗の皆様、elchika運営事務局の方々、 ありがとうございました。


超軽量CPU WZeta、ネットの反応(日記2021年3月から)

WZeta はトランジスタ数が非常に少ないというだけでなく32bitの命令コードを8bit単位に 送信できるところも良さそうだと気づいた人があったのかも。 1チップに入れる場合は、目立たないのですが、基板上で配線する場合は32本より8本のほうが配線しやすいはずです。 さらに1本で8bit分を転送する実装にすれば基板の配線実装が、ぐっと楽になって コスト低減になると思うのです。
複数の配線でデータを送信するとビット間スキューの問題で手間がかかるのです。 1本ではビット間スキューがないので基板上での配線が楽になるというもの。
実は僕は大型コンピュータの基板実装のビット間スキューを最小にする設計で、 大きな成果を上げて給料をもらっています。僕が担当したのは IBMのCPUを採用した大型コンピュータなのですが、IBMのCPUとつなぐ日立のCMOSデバイスの性能が悪かったのです。 僕のビット間スキューを小さくする設計などにより、IBMとほぼ同等の性能になったことが大きい。 (東大卒が多いハード開発部にいた人間でプログラムが自在に作れたのは僕くらいだから)
つまり、1本でシリアル転送できることは、普通の人が思っているよりも コスト低減になるだろうということなのです。、、、多分。


暗号プロセッサ OpenICF3