
Por volta de 2013 o Google fez a conta que assustou Mountain View: se cada usuário Android usasse o comando de voz da Busca por três minutos ao dia, em CPU x86, a empresa teria de dobrar os data centers só para inferência. GPU de consumo ainda era placa de jogo adaptada. A resposta foi um ASIC só de álgebra linear: a TPU (Tensor Processing Unit). Este texto é o mapa do silício — MXU sistólica, bfloat16, OCS — e das gerações até o TPU7x Ironwood de 2026. O recorte GPU vs TPU, lado a lado, está no post GPU vs TPU.
Por que um ASIC, não uma GPU
CPU gasta transistor com preditor de desvio, cache e decodificador. GPU gasta com SIMT genérico. A TPU dedica o die a uma conta: MAC (multiply-accumulate). Quase todo o serviço do Google — Busca, Tradutor, Fotos, YouTube, Cloud — e o treino de Transformer, BERT, AlphaFold, PaLM e Gemini passou por esse silício.
HBM <=> VMEM (SRAM on-die)
│
┌────────┴────────┐
v v
MXU sistólica VPU
(MatMul pura) (softmax, GELU, LayerNorm)
128×128 MACs
(16.384 células)
Nas gerações novas o SparseCore entra para embedding esparso (anúncio, YouTube, Busca). v6e e Ironwood usam MXU 256×256.
Arranjo sistólico: o dado não volta para a HBM
Num processador comum, cada MAC intermediário lê e grava registrador/cache — o memory wall do post das placas de vídeo. Na MXU:
- Weight-stationary: os pesos da camada saem da HBM uma vez e estacionam na célula.
- Sístole: o vetor de entrada entra pela esquerda e anda uma coluna por ciclo.
- Acúmulo: cada célula multiplica entrada × peso local, soma o que veio de cima, empurra para baixo.
- Saída: a coluna da matriz resultante escorre pela base.
O número pulsa de vizinho para vizinho. Energia vira conta, não trânsito. É o oposto do KV cache gordo que o MLA da DeepSeek tenta encolher na GPU.
bfloat16: a faixa do FP32 na metade dos bits
FP32 gasta banda. FP16 IEEE corta o expoente para 5 bits e o treino de rede grande estoura (overflow/underflow). O Google inventou o bfloat16:
FP32 1 sinal | 8 expoente | 23 mantissa
FP16 1 sinal | 5 expoente | 10 mantissa (faixa estreita)
bfloat16 1 sinal | 8 expoente | 7 mantissa (mesma faixa do FP32)
Metade do tráfego, multiplicador menor, treino sem malabarismo de loss scaling. NVIDIA, Intel, AMD e ARM adotaram. Hoje é o default de JAX, PyTorch e dos LLMs.
VPU, SparseCore, ICI e OCS
MatMul densa não é o modelo inteiro. A VPU faz GELU, ReLU, softmax, LayerNorm/RMSNorm. O SparseCore (v4 em diante) trata embedding esparso largo demais para a MXU.
O superpoder não é o chip: é o Pod.
chip <== ICI (Inter-Chip Interconnect) ==> chip
malha 2D ou 3D torus
OCS: espelhos MEMS desviam o laser
topologia reconfigurável em software
ICI liga vizinhos sem TCP/IP. Torus 3D fecha as bordas. OCS (v4, v5p, Ironwood): em vez de switch elétrico que converte luz↔elétron, um microespelho aponta o feixe. Isola chip morto, muda o recorte (data / tensor / pipeline parallel) em milissegundos.
Gerações (números oficiais do Cloud TPU, 2026)
| Geração | Ano | Foco | Pico/chip | HBM | Pod |
|---|---|---|---|---|---|
| v1 | 2015 | só inferência INT8 | ~92 TOPS | 8 GB DDR3 | PCIe avulso |
| v2 | 2017 | treino + inferência, BF16 | 45 TFLOPS | 16 GB HBM | 256 chips (11,5 PFLOPS) |
| v3 | 2018 | líquido, escala | ~123 TFLOPS | 32 GB HBM2 | 1.024 chips |
| v4 | 2021 | OCS, torus 3D | 275 TFLOPS | 32 GB HBM2 | 4.096 (1,1 EFLOPS) |
| v5e | 2023 | custo/watt | 197 TFLOPS BF16 | 16 GB HBM2e | 256 chips |
| v5p | 2023 | LLM (Gemini) | 459 TFLOPS BF16 | 95 GB HBM3 | 8.960 chips |
| v6e Trillium | 2024 | MXU 256×256 | 918 TFLOPS BF16 | 32 GB, 1.638 GB/s | 256 chips |
| TPU7x Ironwood | 2025 | dois chiplets, FP8 | 2.307 BF16 / 4.614 FP8 | 192 GB, 7.380 GB/s | 9.216 chips |
Ironwood é o primeiro TPU pensado com inferência no centro: 2 TensorCores, 4 SparseCores, ICI 1.200 GB/s. Um pod inteiro passa de 40 EFLOPS em FP8. No Cloud o recorte típico é a VM tpu7x-standard-4t (4 chips, 768 GiB de HBM). v6e continua o custo/benefício para Gemma, Llama e difusão.
Software: XLA e JAX
Sem compilador o ASIC é um tijolo. O XLA (Accelerated Linear Algebra) lê o grafo, funde ops num kernel só, aloca VMEM e programa a sístole. O JAX é a linguagem da DeepMind: Python → XLA, com pmap e shard_map. PyTorch/XLA cobre quem já tem o modelo em PyTorch. No Linux de casa isso não aparece: TPU vive em VM Debian/Ubuntu no GCP. GPU local continua CUDA/ROCm — o post do servidor recondicionado e o do Ollama são o outro lado da cerca.
O que nasceu nesse silício
2017 Transformer ("Attention Is All You Need", pods v2)
2018 BERT (v2/v3)
2020 AlphaFold 2 (pods v3, 200 milhões de proteínas)
2022 PaLM 540 B (dois pods v4, Pathways)
2023– Gemini 1.0 / 1.5 / 2.x (v4, v5p; contexto 1–2 M tokens)
O Transformer abandonou a RNN porque a MXU faz atenção em paralelo. BERT virou o paradigma de pré-treino mascarado. AlphaFold fechou o enovelamento. PaLM mostrou 540 B em dois pods geograficamente ligados. Gemini 1.5 Pro só abre janela de milhão de tokens porque HBM3 + OCS partem o tensor sem o barramento virar fila — o mesmo problema que o MLA ataca no cache, do outro lado da indústria.
Referências
- Cloud TPU — máquinas e especificações (v5p, v6e, TPU7x)
- TPU v6e (Trillium)
- In-Datacenter Performance Analysis of a Tensor Processing Unit (v1, Jouppi et al.)
- GPU vs TPU: como os chips de IA funcionam
- Como a DeepSeek reescreveu o Transformer
- Como funcionam as placas de vídeo
- O que é uma rede neural?
Enquanto o mercado disputa H100 e Blackwell, o Google colhe uma década de ASIC, formato numérico próprio, laser no pod e compilador. A TPU não é “GPU do Google”. É a prova de que, em treino e inferência de tensor, especializar o silício ainda ganha da força bruta genérica.