はじめに
Tenstorrentのgithubに公開されているtt-budaのドキュメントの中に、Grayskull の内部構成の図を見つけたので、ブログに残しておきます。
Hardware Overview
下図は、Hardware Overview にあります。説明のために引用します。
13 x 12 の Tile の構成です。各 Tile の NoC で接続しています。
- P : PCIe I/F
- D : DRAM I/F
- T : Compute (Tensix)
です。PCIe I/F はチップの周りにありますが、DRAM I/F の半分は真ん中にあります。これ、Pinはどこにあるんでしょうかね。。。
下図は、TenstorrentのCardにあるGrayskull e150です。説明のために引用します。
ボードの写真と上記の Tile の構成を比べると、PCIe I/F と DRAM I/F の位置はあってそうです。
黒い Tile は何?
P、D、T 以外の黒い Tile は何でしょうか?
TenstorrentのMetalの umd (User mode driver)の中のこのファイルの中に下記のような記述を見つけました。
grid: x_size: 13 y_size: 12 arc: [0-2] pcie: [0-4] dram: [[1-0], [1-6], [4-0], [4-6], [7-0], [7-6], [10-0], [10-6]] eth: [] functional_workers: [ 1-1, 1-2, 1-3, 1-4, 1-5, 1-7, 1-8, 1-9, 1-10, 1-11, 2-1, 2-2, 2-3, 2-4, 2-5, 2-7, 2-8, 2-9, 2-10, 2-11, 3-1, 3-2, 3-3, 3-4, 3-5, 3-7, 3-8, 3-9, 3-10, 3-11, 4-1, 4-2, 4-3, 4-4, 4-5, 4-7, 4-8, 4-9, 4-10, 4-11, 5-1, 5-2, 5-3, 5-4, 5-5, 5-7, 5-8, 5-9, 5-10, 5-11, 6-1, 6-2, 6-3, 6-4, 6-5, 6-7, 6-8, 6-9, 6-10, 6-11, 7-1, 7-2, 7-3, 7-4, 7-5, 7-7, 7-8, 7-9, 7-10, 7-11, 8-1, 8-2, 8-3, 8-4, 8-5, 8-7, 8-8, 8-9, 8-10, 8-11, 9-1, 9-2, 9-3, 9-4, 9-5, 9-7, 9-8, 9-9, 9-10, 9-11, 10-1, 10-2, 10-3, 10-4, 10-5, 10-7, 10-8, 10-9, 10-10, 10-11, 11-1, 11-2, 11-3, 11-4, 11-5, 11-7, 11-8, 11-9, 11-10, 11-11, 12-1, 12-2, 12-3, 12-4, 12-5, 12-7, 12-8, 12-9, 12-10, 12-11 ] harvested_workers: [] router_only: [ 0-0, 0-11, 0-1, 0-10, 0-9, 0-3, 0-8, 0-7, 0-5, 0-6, 12-0, 11-0, 2-0, 3-0, 9-0, 8-0, 5-0, 6-0, 12-6, 11-6, 2-6, 3-6, 9-6, 8-6, 5-6, 6-6 ] worker_l1_size: 1048576 dram_bank_size: 1073741824 eth_l1_size: 0 arch_name: GRAYSKULL features: unpacker: version: 1 inline_srca_trans_without_srca_trans_instr: False math: dst_size_alignment: 32768 packer: version: 1 overlay: version: 1
下記の部分で、
の位置です。CPUは 0-2 です。PCIe I/F は 0-4 です。DRAM I/F は、[1-0], [1-6], [4-0], [4-6], [7-0], [7-6], [10-0], [10-6]です。X方向が1つずれていますが、だいたい同じです。
arc: [0-2] pcie: [0-4] dram: [[1-0], [1-6], [4-0], [4-6], [7-0], [7-6], [10-0], [10-6]]
下記は、Compute Tile です。図と同じですね。120個のCompute Tileです。
functional_workers: [ 1-1, 1-2, 1-3, 1-4, 1-5, 1-7, 1-8, 1-9, 1-10, 1-11, 2-1, 2-2, 2-3, 2-4, 2-5, 2-7, 2-8, 2-9, 2-10, 2-11, 3-1, 3-2, 3-3, 3-4, 3-5, 3-7, 3-8, 3-9, 3-10, 3-11, 4-1, 4-2, 4-3, 4-4, 4-5, 4-7, 4-8, 4-9, 4-10, 4-11, 5-1, 5-2, 5-3, 5-4, 5-5, 5-7, 5-8, 5-9, 5-10, 5-11, 6-1, 6-2, 6-3, 6-4, 6-5, 6-7, 6-8, 6-9, 6-10, 6-11, 7-1, 7-2, 7-3, 7-4, 7-5, 7-7, 7-8, 7-9, 7-10, 7-11, 8-1, 8-2, 8-3, 8-4, 8-5, 8-7, 8-8, 8-9, 8-10, 8-11, 9-1, 9-2, 9-3, 9-4, 9-5, 9-7, 9-8, 9-9, 9-10, 9-11, 10-1, 10-2, 10-3, 10-4, 10-5, 10-7, 10-8, 10-9, 10-10, 10-11, 11-1, 11-2, 11-3, 11-4, 11-5, 11-7, 11-8, 11-9, 11-10, 11-11, 12-1, 12-2, 12-3, 12-4, 12-5, 12-7, 12-8, 12-9, 12-10, 12-11 ]
下記が Router only です。この部分が黒い Tile になります。上記の図とはちょっと位置が違います
router_only: [ 0-0, 0-11, 0-1, 0-10, 0-9, 0-3, 0-8, 0-7, 0-5, 0-6, 12-0, 11-0, 2-0, 3-0, 9-0, 8-0, 5-0, 6-0, 12-6, 11-6, 2-6, 3-6, 9-6, 8-6, 5-6, 6-6 ]
Ethernet Tile は、Grayskull にはありません。Wohm Hole にはあります。
eth: []
おわりに
TenstorrentのGrayskullの内部構成がわかりました。