Kacam.net

Sistemas

一次内存读,硬件走了几步

一次普通的内存读,硬件到底走了几步?

Copie a instrução e escolha um modelo. Ele faz o papel de entrevistador e vai te perguntando ato por ato, em vez de entregar a resposta.

Num celular com o aplicativo instalado, o sistema abre o aplicativo direto. Dentro do WeChat não é possível abrir aplicativos externos — abra primeiro no navegador.

O texto copiado termina com o gabarito que o modelo usa para te avaliar. Não leia antes: o que vale é ter chegado lá sozinho.

这一份的分水岭是一问:翻译缓存没命中,和一个页根本不在内存里,是同一件事吗? 两者差三到四个数量级,一个纯硬件几十周期,一个要陷进内核 —— 分不清这两个,线上看到 fault 数飙升时就不知道该往哪查。

前面几幕会逼你自己算出「一张页表要 4MB、每个进程一张」,然后自己推出为什么必须分级、为什么必须有那个缓存。

顺带回答一个很多人记反的问题:虚拟内存的主要目的到底是不是「内存不够时拿磁盘顶上」。

★★★★☆ · cerca de 35 min · O que é avaliado: 多级页表为什么存在、TLB 与缺页的区别、四个数量级

O que esta treina

Paginação e tradução Caches e linhas de cache Ordens de grandeza

Já fez este?

Entre para marcar que já treinou este; da próxima vez você verá em que dia foi.

Anotações de quem já fez

Ninguém escreveu ainda. Depois de fazer, conte o que saiu da conversa: qual ato te travou, qual conclusão você mudou depois.

Entrar para escrever uma anotação.

Como usar

Esta série ensina em vez de interrogar: ela guia, em vez de apertar até você não ter mais o que dizer. Quando você trava, pergunta primeiro em que camada (nunca ouvi / sei mas não sei por quê / sei por quê mas não aplico) e só então decide o que dar. Só depois de guiar duas vezes ela conta — e aí pede que você repita com suas palavras.

Ela vai cobrar números o tempo todo: responder «tem algum custo» ou «é mais rápido» faz ela te cortar. Conclusão sem ordem de grandeza é conclusão decorada — e é exatamente isso que esta série treina.

Como começar

  1. Escolha uma, abra e copie o prompt.
  2. Cole numa conversa nova e vazia, não diga nada e espere a primeira pergunta.
  3. Prepare-se para dar ordens de grandeza: quantos nanossegundos, quantos microssegundos, quantas vezes mais lento. Dizer que não sabe está ok — ela anota e segue.

Quatro comandos que você pode gritar a qualquer momento

  • 跳过 ir já para a próxima cena
  • 换个说法 explicar esta parte por outro ângulo
  • 直说吧 dar a resposta completa e depois me fazer repetir
  • 复盘 pular para o fechamento e imprimir a ficha de balanço

Três armadilhas

  • Não leia o gabarito do fim antes — aquela seção de «como as pessoas erram o raciocínio» é a resposta de cada pergunta.
  • Não corra para o jargão. Dizer «isso é um TLB miss» é fácil; dizer quanto ele é mais barato que um page fault é o que vale.
  • Quando começar a te elogiar, mande olhar a regra «não me elogie». Guiar não é fazer carinho.

Para pegar as ordens de grandeza: leituras aleatórias e depois a do primeiro byte. Para depurar em produção: malloc, travadas de TCP, trocas de contexto. Para código concorrente: reordenação e falso compartilhamento.