Ladrilhamento para localidade de cache
Divida o trabalho em blocos que caibam no cache.
Ladrilhamento para localidade de cache é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
The Cache Idea
The CPU keeps recently used data in a small, fast cache. Hits are quick; misses force a slow trip to main memory.
What Is Locality?
Cache locality means reusing data that is already nearby in the cache before it gets evicted to make room.
Big Data Spills the Cache
If your kernel sweeps a huge array, early elements are evicted before you reuse them, causing repeated cache misses.
Tile the Work
Tiling splits a big loop into small blocks that fit in cache, so each block's data stays hot while you use it.
alias tile = 64An Outer and Inner Loop
Tiling turns one loop into two: an outer loop over blocks and an inner loop over the elements inside each block.
for t in range(0, n, tile):
for i in range(t, min(t + tile, n)):
out[i] = a[i] * 2One Block at a Time
Each block is small enough to live in cache. You finish all its work before moving on, so reuse stays cheap.
Great for Matrices
Matrix multiply reuses rows and columns heavily. Blocking a matmul into tiles keeps reused data in cache and cuts misses.
Pick the Tile Size
The best tile fills the cache without overflowing it. Too small wastes reuse; too large spills, so you tune the size.
Tile Then Vectorize
Tiling and SIMD stack well. Vectorize the inner loop of each block to get cache locality and vector speed together.
for t in range(0, n, tile):
vectorize[body, width](min(tile, n - t))Mind the Edges
The last block may be smaller than a full tile. Clamp its range with min so you never read past the buffer.
var end = min(t + tile, n)Measure the Gain
Tiling can help a lot or a little depending on sizes. Always benchmark a few tile values on your real data to choose.
Quick Check
Your kernel keeps missing cache because it sweeps a huge array end to end. What technique helps?
Recap
Tiling blocks a big loop so each chunk fits in cache; tune the tile size, vectorize the inner loop, and clamp the edges. 🧱
Perguntas Frequentes
A aula “Ladrilhamento para localidade de cache” é grátis?
Sim — o texto completo de “Ladrilhamento para localidade de cache” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.
O que vou aprender em “Ladrilhamento para localidade de cache”?
Divida o trabalho em blocos que caibam no cache. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Mojo Academy?
Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Ladrilhamento para localidade de cache”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Mojo Academy?
Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Anatomia de um núcleo de computação
- Combinando SIMD com laços
- Reduzindo o tráfego de memória
- Ladrilhamento para localidade de cache