6502tinymachines

チップアトラス

/v1/nodes何を見張れるかに答え、その分類はダイの名前の読み取りだ。さらに五つのルートがこのノードは何の一部かに答え、その答えはすべて実測されている。

23 種類の機構が、トレーサとチップマップの描画に使う当のモジュール web/chip-groups.js によってスイッチ網から歩き出され、 tools/export-groups.mjs によって web/groups.json に書き出される。

curl -s localhost:6502/v1/atlas/full                  # 全部を一つのファイルで、gzip で 48 KB
curl -s localhost:6502/v1/atlas                       # 種類とブロックと数だけ
curl -s 'localhost:6502/v1/groups?kind=alu'           # ALU を 17 個のコンテナとして
curl -s 'localhost:6502/v1/groups/regs:a'             # 一つを、その配線ごと
curl -s 'localhost:6502/v1/tags?multi=true'           # 複数に属する 88 ノード
curl -s 'localhost:6502/v1/node/pipeUNK39'            # 一つのノードの全タグ
curl -s 'localhost:6502/v1/neighbors?node=a0&via=switch'

二つの層があり、その差こそが要点

分割 (partition) は 132 のグループで、1547 ノードのすべてがちょうど 一つに属する。描画には互いに素な箱が要るからだ。

コンテナは同じ導出を無濾過にしたものだ: 135 個、重なり合い、88 ノードが 複数に属し、三つ (sdp:sd1sdp:sd2sbus:link) はこちらにしか存在しない。

グループへの ?layer=containers は、箱の代わりに導出そのものの集合を求める。 intr:nmi は歩けば 20 ノード、箱にすれば 18 ノードで、失われる二つの中には pipeVectorA2 がある。$FFFA$FFFE と違う、その 1 ビットのアドレス線だ。

なぜキャッシュできるか

ここでは何もチップを走らせず、何も変化しない。だから nginx はこの一族をまるごと public, max-age=86400 で配る。

メモリに保持されるので、ダイのエクスポータが走るたびに組み直される。 deploy.sh がそれをやり、その後サービスが再起動される。

手書きの一覧が間違えていて、アトラスが確定させたもの

コンソールのゲート表示は、見張る 8 本の線の名前の横に 8 個の文字列を打ち込んだものだった。事実が一つのところに主張が二つある形だ。今はアトラスが答え、8 個中 5 個で一致した。

一致しなかった 3 個こそが有用な部分だ。ADDADLADHPCH はそれぞれ 1 ビット分のスイッチを開くが、手書きの組は正準がビット 0 のところをビット 2 とビット 3 と名づけていた。XSBsb0 を、ダイが名前を付けなかったノードに繋ぐ。手書きの x0 - sb0 は、読者がそこにあると思い込んでいるレジスタの名を書いていたわけだ。アトラスは、そのノードの持ち主は regs:x だと言う。

この訂正はサービススイートのテストで釘付けにされていて、dpc2_XSBregs:x - sb0 と読める、と表明する。ゲートが何であり、なぜ実測で選ばれたのかはコンソール規約 を参照。