せっかく東京に行くので午前は高島屋で靴のメンテしてもらって、昼飯は会場が飲食可能かわからなかったので会場のビル(東京日本橋タワー)の広場にいってみたらしっかり飲食禁止って書いてあった。
どこか公園がないかなと探したけど座って食べられるような公園らしいところはなさそうで、結局東京駅前のTOKYO TORCHの工事現場となりの広場で食べた。
時間になったので会場入りしたが、エントランスがやたらでかいな。さすが高層ビル。
けっこう若者率たかいな。
Brainfuckが動くCPUを作りたい! / @chizu_potato
13:16
- fpgaでbrainfuckつくったひとは会場ひ一人
- 8つの命令
- C言語の授業でポインタは紙に書くとわかりやすい→brainfuckのほうがわかりやすい、でもりあがる
- 内部バスは2本
- [で]をさがすのはNOPで対応
- [はスタックにプッシュ
- ネストの深さも管理しないといけない
- シミュレータ上では動いた
- マルシプレクサをトライステートバッファに変えた
- RAMはハイインピーダンスになって挙動がおかしくなったり。
- 焼けたRAMをさわってやけどした(労災)
- 再現せず。電源ノイズもあるかも。
- 74HCシリーズは生産が終わりつつある
- 1clkでread+alu+writeをするようになってたがタイミングチャートの管理がたいへんになった。
- マイクロコードにするとよかったかも。
- 寮は電熱器がつかえない→ハンダゴテもつかえない
13:32
- Q: SRAMのシミュレータは?
- A: 非同期型IN/OUTが瞬時にきりかわる理想的な素子をつかった。実物で考慮すべきものがわからなかった。
- Q: DIP
- A: 基盤をつくるかんけいから。(変換基盤をつかうのもあり)
- Q: プログラムは文字コード?
- A: 3bit
- Q: μOPにしたらどうなる?
- A: 1clkごとにread,alu,writeにわけるとよかったかなと。
- Q: 74HC,74HCTどちら?
- A: 74HC (パラレルのRAMはTTL想定なので74HCTをつかわないと入出力マージンがたりなさそう)
- Q: SRAMは若松通称にいっぱいある。
13:42
3進CPUを自作する!!! / @rikeden_net
13:43
- trit: 一桁
- FPGAは高レイヤ
- 平衡3進数: 0,1,2ではなくて-1,0,+1をつかう -1は1バーがおおいがここでは#とかく。
- 10進数は符号つき絶対値
- 平衡3進数ならマイナスは各桁の符号をいれかえるだけ。
- 最上位の値で符号がわかる。
- 切り捨てるだけで丸めになる。
- 3進NAND
- ANDはmin、ORはmax、とかんがえらえる
- 2進数NANDに抵抗をついかするだけで実現できるが、出力抵抗が大きい・静的な消費電力がある。
- half addr 16Tr
- 1tritのFFはflip-flap-flop FFF
- 2つのラッチをつなぐかたち binaryとおなじ
- 試作すると値が壊れる誤動作→出力インピーダンスがたかいのがもんだいか?
- アナログ的なことを考えないといけないのは大変
- 抵抗をつかわないバッファ回路をつかうように
- 1trit CPU
- 1trit reg *2
- ALU: nand nor add
- MUX
14:08
- Q: 3進数で計算できることにきづいたのはいつ?
- A: 昔から2進数の必然性はないなとおもっていた
- Q: 先行研究は?
- A: 昔にソ連がつくっていた。18桁くらい。3進数用のトランジスタをつかってるものもあったり(offにしても弱く出力するような)
- Q: 3進数のRAM/ROMはどうする?
- A: 妥協するつもり(市販品でエミュレート)。5tritが8bit相当なのでそこをめざしている。
- Q: NANDの出力抵抗を減らす構成は考えているか?
- A: Trが少ない方を優先している。fan-outがおおきくなったときは考えないといけないかも。
14:15
休憩
(産業の)米づくり環境ご紹介 / @taichi600730
14:30
- RICE概要
- RV31IM
- 4stage pipeline fetch decode execute writeback
- systemveriog
- デコーダ: 煩雑なので自動生成するように
- CSR: control and satte registers
- 簡単だけど注意力が必要→自動生成が吉
- 検証環境 Konata
- 東大塩谷先生のパイプライン可視化ツール
- ログをくわせると表示してくれる
- 傾きがゆるくなるとパイプラインストール
- はぬけになると分岐でflush
- 原因命令がすぐわかる
- 検証環境 ISS
- instruction set simulator
- SPIKE
- Whisper (こちらを採用)
- systemverilogとのブリッジ環境が用意されている
- 検証環境 riscv-tests
- ユニットテスト
- 致命的なエラーは発見できる
- ベンチマークテスト
- dhrystone で分岐予測の効果をみたり
- プログラムの完走は特定のメモリに書き込みで判定している
- ユニットテスト
14:51
- Q: CSRの記述がRubyとは?
- A: CSRをRubyのプログラムとして記述している。
- Q: systemverilogのシミュレータはなにをつかった?
- A: VCSをつかった。オープンソースのおすすめはつかったことがないのでない。
14:56
TW4
14:57
- CPUに特権命令・割り込みをどうのっけるか
- tokken warikomi 4bitl
- モード2bit アドレス4bit = 物理アドレス6bit
- 割り込みでレジスタ退避は?
- ARMを参考にしてモードごとに独立した汎用レジスタがある
- ALUはデコードも担当している
- SWAP命令でモード間でレジスタswap
- 例外処理中の例外はダブルフォールトで停止する
- 複数のIRQのあつかい
- デイジーチェーン
- IRQはORになっている
- 割り込み許可信号がつたわっていく
15:15
- Q: ユーザーモードから特権モードにジャンプできてセキュリティ上問題がないか?
- A: ジャンプできるアドレスが制限されている
- Q: どの割り込みかどうやって判別するか?
- A: IN命令でスイッチの状態をみることで対応
- Q: 特権命令はユーザーモードで実行できないようになっている?
- A: 回路規模的にはDIP部品でできるのではないかとおもっている。
15:21
交流会
展示をみてまわる。
- 3進CPUでクロックは2進なのは3進のメリットがおもいつかないのと+1,0,-1で0をGNDにすると扱いにくいからとのこと。
- リレーコンピュータはいまのところ耐久性の問題はでてないが、時計にしてるやつはそろそろ1年たって寿命くるかも、とのこと。
- リレーは論理素子としてはXORが基本になる。(端子の両端の電圧が異なるときだけON)