Kacam.net

Sistemas

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

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

Copia la indicación y elige un modelo. Hará de entrevistador y te irá preguntando escena por escena en vez de darte la respuesta.

En un móvil con la aplicación instalada, el sistema la abre directamente. Dentro de WeChat no se pueden abrir aplicaciones externas: ábrelo primero en el navegador.

El texto copiado termina con la plantilla de corrección que usa el modelo. No la leas tú antes: lo que cuenta es haberlo razonado por tu cuenta.

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

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

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

★★★★☆ · unos 35 min · Se evalúa: 多级页表为什么存在、TLB 与缺页的区别、四个数量级

Qué entrena esta

Paginación y traducción Cachés y líneas de caché Órdenes de magnitud

¿Ya hiciste este?

Inicia sesión para marcar que ya lo practicaste; la próxima vez verás qué día fue.

Notas de quienes lo hicieron

Todavía no hay ninguna. Cuando lo termines, cuenta qué salió de la conversación: qué escena te dejó sin respuesta, qué conclusión cambiaste después.

Entrar para escribir una nota.

Cómo se usa

Esta serie enseña en vez de interrogar: te guía en lugar de apretar hasta que no te quede nada que decir. Cuando te atascas pregunta primero en qué capa (no lo he oído / lo sé pero no sé por qué / sé por qué pero no lo aplico) y luego decide qué darte. Solo tras guiarte dos veces te lo dice, y entonces te pide que lo repitas con tus palabras.

Te va a exigir números sin parar: si respondes «tiene algo de coste» o «es más rápido», te corta. Una conclusión sin orden de magnitud es una conclusión memorizada; eso es justo lo que entrena esta serie.

Cómo empezar

  1. Elige una, ábrela y copia el prompt.
  2. Pégalo en una conversación nueva y vacía, no digas nada y espera su primera pregunta.
  3. Prepárate para dar órdenes de magnitud: cuántos nanosegundos, cuántos microsegundos, cuántas veces más lento. Decir que no lo sabes vale: lo anota y sigue.

Cuatro órdenes que puedes soltar en cualquier momento

  • 跳过 pasar ya a la siguiente escena
  • 换个说法 explicar esta parte desde otro ángulo
  • 直说吧 dar la respuesta completa y luego hacérmela repetir
  • 复盘 saltar al cierre y sacar la ficha de balance

Tres trampas

  • No leas antes el solucionario del final: ese apartado de «errores de razonamiento habituales» es la respuesta a cada pregunta.
  • No corras al tecnicismo. Decir «eso es un fallo de TLB» es fácil; decir cuánto más barato es que un fallo de página es lo que cuenta.
  • Cuando empiece a elogiarte, remítelo a la regla «no me elogies». Guiar no es consentir.

Para coger las magnitudes: lecturas aleatorias y luego el primer byte. Para depurar en producción: malloc, atascos de TCP, cambios de contexto. Para código concurrente: reordenación y falso compartido.