Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tensix Core アーキテクチャ解説

Tensix Core アーキテクチャ解説

Tenstorrent Tech Talk #1のSession2

Avatar for Tenstorrent Japan

Tenstorrent Japan

June 13, 2025
Tweet

More Decks by Tenstorrent Japan

Other Decks in Technology

Transcript

  1. Tenstorrent Tech Talk #1 June 6 2025 Kohei Yamaguchi /

    Tenstorrent Japan @sott0n Tensix Core アーキテクチャ解説
  2. Core Silicon Roadmap • 4nm Chiplet • Feature support incl.

    SMC, IOMMU, AIA • Non-blocking D2D Interfaces • Composable IO, MEM, CPU compute • Details TBD Standalone AI Computer High Performance RISC-V CPU Chiplet Low Power AI Chiplet Wormhole • 80 Tensix+ Cores • 12nm • 292 TFLOPS (FP8) • 164 TFLOPS (BLOCKFP8) • 16 lanes of PCIe Gen 4.0 • 16x100 Gbps Ethernet • 6 channels GDDR6 Blackhole • 140 Tensix++ Cores • 6nm • 774 TFLOPS (FP8) • 387 FLOPS (BLOCKFP8) • 12x400 Gbps Ethernet • 48 lanes of SerDes • 8 channels of GDDR6 • 16 “Big RISC-V” CPU cores Athena Quasar • 32 Tensix NEO Cores • 4nm Chiplet • Features incl. SMC with self-boot/Reset • Non-blocking D2D interfaces • Easily stack Quasar or combine to choose your own compute Networked AI Processor AI Processor Grayskull® • 120 Tensix Cores • 12nm • 332 TFLOPS (FP8) • 83 TFLOPS (BLOCKFP8) • 16 lanes of PCIe Gen 4.0 • 8 channels LPDDR4 2021 Tapeout 2023 Product 2025 EOL 2022 Tapeout 2024 Product 2023 Tapeout 2025 Product 2025 Tapeout 2026 Product GEN 1 GEN 2 GEN 3 High Perf AI ASIC Scalability Heterogeny Chiplets
  3. Tensix Core Concepts Near Memory Compute and SRAM Use •

    High bandwidth, large capacity SRAM in each Tensix core. • Achives “sillicon peak” performance. • Single-level SRAM as primary Tensor storage. • Minimizes reliance on HBM. Native Tile-Based Compute • Operates on 32x32 matrix tiles. • Uses single-threaded RISC-V processors. • Supports concurrent data movement and compute. Distributed Shared Memory & In-Place Compute • Efficiently implements distributed shared memory. • Optimizes data layout and movement. • Allows in-place compute on local SRAM data. • Reduces unnecessary data movement. Explicit Data Movement • Data movement is decoupled from compute. • Kernels manage data transfer to local SRAM. • Pre-planned, optimized data movement. • No caches or global crossbars involved.
  4. Tensix Core Features • 5 single-threaded “baby” RISC-V processors per

    Tensix • Core-to-thread mapping 1:1 • Multiple data formats supported • BFP4, BFP8, LF8, INT8, INT32, FP32, TF32 • High performance Math Engine • Tiled Matrix engine (FPU) & General purpose SIMD engime (SFPU) • In/Near-memory compute • High bandwidth, large capacity SRAM in each Tensix core • NoC overlay • Orchestrate data movement beween cores
  5. Tensix Core Features • 5 single-threaded “baby” RISC-V processors per

    Tensix • Core-to-thread mapping 1:1 • Multiple data formats supported • BFP4, BFP8, LF8, INT8, INT32, FP32, TF32 • High performance Math Engine • Tiled Matrix engine (FPU) & General purpose SIMD engime (SFPU) • In/Near-memory compute • High bandwidth, large capacity SRAM in each Tensix core • NoC overlay • Orchestrate data movement beween cores 今回の範囲
  6. Compute (Tensix Engine) RISC-V 2 RISC-V 3 RISC-V 4 RISC-V

    5 RISC-V 1 Router 0 L1 Memory • 5 “Baby RISC-V” Cores (32-bit RISC-V ISA) • 2 Network-on-Chip (Router) • 1.5MB SRAM Cache (L1) Compute (TensixEngine) Vector Math Engine • Tile/Matrix Math Engine (FPU) • Vector Math Engine (SFPU) Router 1 Tile/Matrix Math Engine Tensix Core Architecture PCIe Ethernet GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 Blackhole C T D E P A RISC-V CPUs Tensix cores DRAM cores ETH cores PCIe core ARC core
  7. Tensix Core – Kernels Compute RISC-V 2 RISC-V 3 RISC-V

    4 RISC-V 5 RISC-V 1 Router 1 Router 0 L1 Memory NoC 0 data movement kernel data movement kernel compute kernel NoC 1 CBs CBs • 1つのTensix Coreに対して、3つのKernelを記述してデータ転送と計算を行う • 1 Compute kernel • 2 data movement kernel • Circular Buffer(CB)を経由してカーネル間でデータのやり取りをして計算を実行する
  8. Tensix Core – Tile/Matrix Math Engine (FPU) Powerful Tile-Based Math

    Engine RISC-V 2 RISC-V 3 RISC-V 4 RISC-V 5 RISC-V 1 Router 1 Router 0 L1 Memory Vector Math Engine Tile Math Engine Rich Matrix ISA: MatMul, dot product, elementwise, transpose @ + - * T = 32 32 Engine Data Format Accumulator TFLOPS Matrix BLOCKFP2 FP32 745 Matrix BLOCKFP4 FP32 745 Matrix BLOCKFP8 FP32 745 Matrix FP8 FP32 745 Matrix BFLOAT16 FP32 373 Matrix TF32 FP32 186 Matrix INT8 INT32 186 Blackhole performance spec
  9. Block Float 10 max exponent (8-bit) sign new mantissa (7-bit)

    block-float-8 (16 floats in 17 bytes) max exponent (8-bit) sign new mantissa (3-bit) block-float-4 (16 floats in 9 bytes) max exponent (8-bit) sign new mantissa (1-bit) block-float-2 (16 floats in 5 bytes)
  10. Conversion from bfloat16 to block-floats 11 bfloat16 sign exponent (8-bit)

    mantissa (7-bit) Group of 16 bfloat16 (32 bytes) Find the max exponent in the group, shared across all 16 numbers max exponent (8-bit) Shift and round all the mantissas to adjust to the new exponent, signs are preserved as is * Same process for conversion from FP32/TF32 sign new mantissa (7-bit) block-float-8 (16 floats in 17 bytes)
  11. Tensix Core – Vector Math Engine (SFPU) General Purpose Vector

    ISA: elementwise, sort, re-shuffle, LUT Engine Data Format Accumulator TFLOPS Vector FP32 FP32 12 Vector INT16 INT32 6 Vector INT32 INT32 6 = + - *, sort, reshuffle, LUT 64 RISC-V 2 RISC-V 3 RISC-V 4 RISC-V 5 RISC-V 1 Router 1 Router 0 L1 Memory Tile Math Engine Vector Math Engine Projected performance. Vector Math Engine (SIMD)
  12. Tensix Core – User Compute Kernel RISC-V 2 RISC-V 3

    RISC-V 4 RISC-V 5 RISC-V 1 Router 1 Router 0 L1 Memory Tile Math Engine Vector Math Engine User Compute Kernel Library of Low-Level APIs • TT-LLK: library of low-level kernels • 1 API per math function • 100s of tile and vector math LLKs 3 BabyCores: Compute Kernelの発行 • Math Engineに計算を実行させることが主な役割 • 自動で3 RISC-V threadsにコンパイルされる Compute Instruction Dispatch
  13. Tensix Core – Data Movement Kernel RISC-V 2 RISC-V 3

    RISC-V 4 RISC-V 5 RISC-V 1 L1 Memory Compute 2 BabyCores: Data Movement Kernelの発行 • NoCを経由した入力と出力の2つのデータ転送カーネル • これらは非同期で実行される • 全てのSRAMとDRAM banksにアクセス可能 • 同期機構 • Memory barriers • Atomic semaphores NoC Instruction Dispatch Router 0 Router 1 data movement kernel data movement kernel NoC NoC
  14. Tensix Core – Data Movement Router 0 Router 1 Compute

    RISC-V 2 RISC-V 3 RISC-V 4 RISC-V 5 RISC-V 1 333 GB/s 83 GB/s 83 GB/s 83 GB/s 83 GB/s 83 GB/s 83 GB/s 83 GB/s 83 GB/s 2x 83 GB/s 2x 83 GB/s L1 Memory Tensix Core Feature Spec Independent NoCs 2 NoC Type 2-Dimensional Torus NoC Link Width 64 Bytes NoC Link Bandwidth 83 GB/s Tensix ➔ NoC I/O Bandwidth 665 GB/s SRAM ⬌︎ NoC Bandwidth 333 GB/s SRAM ⬌ NoC Aggregate Bandwidth 47 TB/s ※ NoCによるデータ転送は次回以降で解説予定!
  15. Ethernet Cores PCIe Ethernet GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6

    GDDR6 GDDR6 RISC-V 2 RISC-V 1 Router 0 L1 Memory Router 1 ETH Off Chip Ethernet • Ethernet経由でチップ外とデータのやり取りをするためのコア • ※ E Coreを用いたデータ転送は次回以降で解説予定!
  16. DRAM Cores RISC-V 1 Router 0 L1 Memory RISC-V 1

    Router 0 L1 Memory RISC-V 1 Router 0 L1 Memory Crossbar DRAM Bank Controller Off-Chip DRAM • DRAMへのアクセスを制御するためのコア • ※ DRAM関連は次回以降のMetalium回で解説予定! PCIe Ethernet GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6
  17. Built for AI Data Movement Patterns • データ転送のパターンに応じて柔軟に設定 • 1

    CoreのLocal内で計算, Neighbor, column wise, Multicast, Gather, など Memory & I/O Data Movement Pattern Bandwidth SRAM Local / Sharded 94 TB/s SRAM Neighbor (Halo) 47 TB/s SRAM Row / Column / Mesh Multicast 24 TB/s SRAM Gather / Scatter (3 hops) 16 TB/s SRAM Gather / Scatter (10 hops) 5 TB/s DRAM Row 512 GB/s Ethernet Column 1 TB/s local column gather, 3 hops neighbor multicast
  18. Scale-Out: Tensix Core to Multi-Chip Tensix Core (Direct Access) Compute

    & Data Movement Kernels (Decoupled) Multi-Chip Scale-Out (Sea of Cores) SIMD/MIMD & Multi-Cast (Across Chip)
  19. Tensix Architecture • 5 Baby RISC-V Cores • NRISC, BRISC

    • TRISC 0/1/2 • SRAM L1 Memory: 1.5MB • レイテンシ: 5-7 clock/cycle • NOC System • NRISC/BRISCによるNOC命令を使ったデータ移動 • L1への書き込みとL1からの読み出し • Tensix Engine • TRISCsによってTensix命令が発行される • Tensixの計算エンジン: • FPU • SFPU • PACKER/UNPACKER • THCON • SYNC • CFG • MOVER L1 ROUTER NOC OVERLAY NOC NIU NOC System SYNC CFG ARB ARB UNPACK 0 ARB UNPACK 1 FPU ARB SFPU ARB THCON ARB MOVER ARB PACKER ARB Decoder Inst Buffer T0 inst Decoder Inst Buffer Decoder Inst Buffer T1 inst T2 inst GPR CFG GPR CFG GPR CFG NRISC BRISC TRISC 0 TRISC 1 TRISC 2 Tensix Engine 5 Baby RISC-V Core 今回の解説範囲
  20. TRISCs (3 Baby RISC-V cores) • TRISC 0/1/2 はTensix Engineに対して命令

    を発行する(3 threadsとして動作) • TRISC 0: Unpacker0/1(Thread0 • データを変換し、L1 → Srcレジスタへ転送 • TRISC 1: Compute EXUs(Thread1 • Srcレジスタからデータを読み込み • FPUやSFPUで計算 • DESTレジスタに結果を書き込み • TRISC 2: Packer(Thread 2 • データを変換し、DESTレジスタ → L1へ転送
  21. TRISCs & Tensix Engine • TRISCsはTensix命令を各TRISCのPC Buffer にPushして、命令を発行する • TensixEngineのUtilizationを上げることが

    性能を高める上で大事 • Tensix命令をいかに効率的に発行できるかに依存 • TRISCsが行う処理の割合がTensixEngineへの命令発 行Rateに悪影響を与える • 命令fetch, ループ処理, 条件分岐, 分岐予測ミス によるbubble(空き時間サイクル) • TensixEngineのUtilizationを高めるためのサブシステ ムとして、MOP Decoder/Replay Unitがある
  22. TRISC0: Unpacker0/1 • UnpackerはDMAエンジン • L1から読み出したデータをSrcA/Bに書き込む • 書き込む際にSrcA/Bの共通Formatに変換する • 2つのUnpacker:

    • Unpacker0: L1 → SrcA レジスタ • Unpacker1: L1 → SrcB レジスタ • 帯域幅 • Wormhole: 64 bytes/cycle • Blackhole: 128 bytes/cycle • SrcA/Bレジスタの構成 • 64 x 16 (19bits) • 全てのbitが使われていない場合、Paddingによって0bit埋め • Double bufferedの2 banks構成 • 1つのbankがFPUに使われている時にもう一方のbankに対して Unpackerが書き込むことができる • TRISC0とTRISC1にはHWの同期機構が搭載 • セマフォなどの同期命令をプログラム側で意識しなくてもいい • SrcレジスタのBankがreadyになったら、FPUにシグナルが送られる Unpacker0 Unpacker1 … . 64 16 x 19bits Src A Regfile … . 64 16 x 19bits Src B Regfile L1 . . . .
  23. TRISC1: FPU (Matrix Engine) • FPU(Floating Point Unit) • Matrix

    Multiplicationで最大のスループットを実現 • 多くのmultipliers, adders, accmulatorsを持つ • Dst[8,16] = SrcB[8,16] @ SrcA[16,16] / cycle • Tile 32x32 mutmul → 16cycle • FPU features: • FPU tilesの集合体で、8x16 gridで構成される • 5bits x 7bits のmultipliersが2048個 • Src A/BレジスタからRead, DestレジスタへWrite • Src A/B reg: 64x16(19bits) • Dest reg: 1024x16(16bits) or 512x16 (32bits) FPU Engine Data Format Accumulator TFLOPS Matrix BLOCKFP2 FP32 745 Matrix BLOCKFP4 FP32 745 Matrix BLOCKFP8 FP32 745 Matrix FP8 FP32 745 Matrix BFLOAT16 FP32 373 Matrix TF32 FP32 186 Matrix INT8 INT32 186 Blackhole performance spec
  24. FPU: Math Fidelity Lofi (phase1) Hifi2 (phase2) Hifi3 (phase3) Hifi4

    (phase4) Fidelityを変えることで精度と性能のトレードオフを制御する • WormholeとBlackholeのmultipliersは5bits x 7bits • matntissa bitsを1 cycleで計算できる • 小さいDataFormat(BFP4/2, etc)はこの1cycleで全て計算できる が、大きいDataFormatの場合にはMath Fidelityを使う • Math FidelityはDataFormatごとに4 fidelity phasesに分けられる • Mantissaの計算を複数Phaseにすることで性能と精度をコントロールする • 例: BFP16の場合 • LoFi : minimal precision, high performance • LoFi+HiFi2 : “reasonable” precision • Lofi~HiFi4 : full precision, low performance I I SrcA SrcB I I SrcA SrcB I I SrcA SrcB I I SrcA SrcB
  25. TRISC1: SFPU (Vector Engine) • SFPUはいわゆるSIMD Engine • Exponential, Reciprocal,

    Sigmoid, Geluなどを計算 • 条件実行(conditional execution)をサポート • 32-wide SIMD lane of 32bits • SFPU内にローカルのLRegsを持つ • DESTレジスタからのみデータの読み書きを行う • 1024 x 16 (16bits)の構成 • SFPUは8 instancesで並列に計算される • それぞれのinstancesはDESTレジスタにマッピングされる • SFPU instanceには独立で計算を実行する4つのlaneがあり、 DESTの4行にそれぞれのlaneが対応する • つまり、8 instances x 4 Lane = 32 wide SIMD lane • 各laneにはMAD blockが紐づく • このMADでFused Multiply-Add(FMD)の計算がされる • FP32 formatをサポート
  26. TRISC1: ThCon (Scalar Unit) • Scalar UnitはGPRs(General Purpose Registers)上で以下ような命令を実行する •

    GPRsは192個あり、3 Tensix Threadsそれぞれが64GPRsを持つ Atomic Load/Store Bit Ops Add/Sub/Mul/Comp Other https://github.com/tenstorrent/tt-isa-documentation/blob/46e2c636ac41d6c4929e45ebd36f05679d12570d/WormholeB0/TensixTile/TensixCoprocessor/ScalarUnit.md
  27. TRISC2: Packer • Unpackerと同様にDMAエンジン • データ変換とDESTレジスタからL1へデータへの書き込み • 4つのPacker instancesが独立で動作する •

    1度に4 rows x 16 datumsのread/write • 行数の指定はprogrammable • Data Format Conversion • GasketというData formatの変換を行うHW block • BFP formatへの変換に対応していて、DESTレジスタの出力を変換する • 変換処理: 16 bytes/clock • TRISC1のMath用のThreadとはSemaphoreで同期 • Double bufferによるレイテンシの低減 • → TRISC1 threadがデータの半分をDESTに書き込んでいる間に、 TRISC2 Packer threadは残りをPackしてL1に書き込みができる • L1 Accumulator • L1に書き戻す際に加算 (L1 += Dst) やReLUも実行できる L1 … 1024 16 x 16bits DEST register #0 #1 #2 #3 Packer
  28. Macro-Operations (MOP) Decoder • TensixCoreを高速化するための仕組み 1つ目 • Tensix Coreにおいて、Tensix命令発行率は性能に直結する •

    Tensix EngineのUtilizationを高めることが大事 • 命令には大きく二種類ある • Tensix命令 : Tensix Engineで実行 • Non-Tensix命令 : TRISCsで実行。制御命令やループ処理など • Non-Tensix命令の発行が多くなると、Tensix命令が待ちになる • TRISC側の命令Fetching, 分岐予測ミス, loop handlingなどによって Tensix命令の発行Rateに影響を与えられると遅くなる • → この問題を解決するためにMOPが利用される • Macro-Operations Decoder • Tensix命令列を事前に設定できる仕組み • MOPによって、TRISCsの命令実行とTensix Engineの命令実行を分離する ことが目的(Decoupling) • これによって、TRISC側で次の処理に進んでも、Tensix Engine側で はMOPによる命令列発行によって並列して処理が行われる PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder Tensix Engine REPLAY PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder REPLAY PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder REPLAY
  29. Macro-Operations (MOP) Decoder • MOP Decoderは2つ搭載されている • General purpose MOP(全TRISCsで利用可能)

    • Unpack MOP(TRISC0のみで利用可能) • MOPはTensix命令列を事前にプログラムできる • MOPに事前プログラムする命令列は、複数のKernel命令を ループで囲って構成するイメージ • TRISCsは1MOP命令を発行すれば、MOPによって事前設 定されたTensix命令列をTensixEngineで実行される • TRISC側: TT_MOP_OP/TTI_MOP命令を発行 • MOP側: 事前にプログラムされた命令列を発行 TT_MOP_OP/TTI_MOP 事前にプログラムされたMOP命令 TRISCs MOP命令発行 MOP Decoderによる展開
  30. Replay Units • TensixCoreを高速化するための仕組み 2つ目 • 事前に登録した命令列をTensixEngine側で再実行する仕組み • つまり、TRISCsが再度命令を発行する必要がなく、TensixEngine自体が Tensix命令を効率的に発行できる

    • TensixEngine内部にREPLAY命令を検出するHWブロックが存在している • Replay modes: • Record : 命令の記録 • Tee : 命令の複製 • Playback : 命令の再生 • 主に短い命令列を繰り返し実行したい場合に有効 PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder Tensix Engine REPLAY PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder REPLAY PC Buffer TTSync unit TRISC 0 (RISC-32 CPU) MOP Decoder REPLAY
  31. Conclusion: Tensix Core Architecture Compute (TensixEngine) RISC-V 2 RISC-V 3

    RISC-V 4 RISC-V 5 RISC-V 1 Router 0 L1 Memory Router 1 Deep Dive PCIe Ethernet GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6 GDDR6
  32. Next Tenstorrent Tech Talk #2! • コア間のデータ転送に関する解説 • NoCによるコア間のデータ転送 •

    Ethernet Core(E Core)を用いたチップ間のデータ転送 • Tensix Coreに対してどのようにプログラムを書くか • TT-Metaliumによるカーネル実装