Fase 3 · SE-018 · Clase

Memoria, cachés, almacenamiento y jerarquías

Una clase de la Parte 01 — Computadores y representación de información. Comprende el mecanismo, úsalo para decidir y conserva evidencia revisable.

Contenido desarrollado como parte del recorrido completo de las Partes 00–05.
Vienes deCPU, instrucciones, registros y ciclos de ejecución
Construyes ahoraMemoria, cachés, almacenamiento y jerarquías
Conecta conProcesos, hilos, interrupciones y entrada/salida

← SE-017 · ↑ Parte 01 · 📚 Índice completo · SE-019 →

Punto profesional y fundamento pedagógico

Punto profesional. La clase existe para elegir almacenamiento y acceso por localidad, latencia, capacidad y durabilidad.

Por qué aparece aquí. Se sitúa después de CPU, instrucciones, registros y ciclos de ejecución y antes de Procesos, hilos, interrupciones y entrada/salida: convierte el conocimiento anterior en una decisión observable que la clase siguiente podrá reutilizar. La continuidad se comprueba en el artefacto, no por compartir vocabulario.

Error conceptual que debe corregir. Atribuir una segunda ejecución rápida a una caché concreta o equiparar write con persistencia.

Secuencia de aprendizaje. Predice cómo cambiará un recorrido al crecer el conjunto de trabajo, pero registra al menos dos causas rivales. Ejecuta tamaños y órdenes alternados, conserva muestras crudas y pide a otra persona que cuestione cualquier atribución a una caché específica. La transferencia cambia la disposición de datos sin cambiar el resultado funcional.

Evidencia de aprendizaje. Hierarchy.md con protocolo frío/caliente, muestras y dos hipótesis rivales. Debe contener predicción previa, observación, explicación causal, contraejemplo, criterio de aceptación y una nota de qué dato haría cambiar la conclusión.

Límite de la conclusión. Sin contadores de hardware se observan efectos agregados, no una caché específica.

Trazabilidad fuente → afirmación

Fuente primaria u oficialAfirmación que respaldaLo que no prueba
Python tracemallocdefine la memoria Python observableNo demuestra por sí sola que el artefacto del estudiante sea correcto.
RISC-V memory modelmuestra que orden de memoria también es contrato arquitectónicoNo demuestra por sí sola que el artefacto del estudiante sea correcto.
Python osdocumenta interfaces de archivo y fsyncNo demuestra por sí sola que el artefacto del estudiante sea correcto.

Antes de empezar

La traza de SE-017 trató los accesos como pasos simples. En una máquina real, traer un dato puede costar mucho más que operar con él. El analizador local de eventos procesará colecciones con distinto orden para estudiar localidad y conjunto de trabajo sin atribuir causas que la biblioteca estándar no mide.

Prerrequisitos

Instrucciones load/store, medición crítica de SE-006 y Python 3.11+.

Problema auténtico

Un cambio reduce operaciones aritméticas y empeora tiempo porque dispersa accesos y aumenta asignaciones. El equipo cuenta instrucciones conceptuales, pero omite la ruta de los datos.

Objetivos observables

Explicarás jerarquía, latencia, capacidad y persistencia; relacionarás localidad con caché; distinguirás memoria virtual y física; medirás un patrón sin sobreatribuir causa.

Temas y por qué importan

TemaMecanismoPor qué importa
Jerarquíacombina niveles rápidos/pequeños y lentos/grandesacerca datos con costo razonable
Localidadreutiliza datos cercanos en tiempo o espaciohace eficaces cachés y páginas
Memoria virtualmapea direcciones del procesoaporta aislamiento y flexibilidad
Persistenciaconserva datos más allá del procesocambia garantías de escritura y recuperación

Mapa conceptual

Mapa visualRelaciones que debes poder explicar
RegistrosCachés
CachésMemoria principal
Memoria principalAlmacenamiento
AlmacenamientoServicio remoto
Ver la notación fuente del diagrama
flowchart TD
 R[Registros] --> C[Cachés]
 C --> M[Memoria principal]
 M --> S[Almacenamiento]
 S --> X[Servicio remoto]

Al descender suele crecer capacidad y latencia. Es una tendencia, no una tabla de tiempos universal; hardware, sistema y carga cambian los valores.

Conceptos y decisiones

1. La jerarquía explota diferencias de costo

No existe un único “lugar de memoria”. Registros, cachés, RAM y almacenamiento ofrecen combinaciones distintas de latencia, ancho de banda, capacidad, costo y persistencia. El sistema mueve copias y mantiene coherencia según contratos. Un acceso lógico puede resolverse en varios niveles.

2. Localidad predice reutilización, no garantiza un hit

Localidad temporal significa volver a datos recientes; espacial, acceder a direcciones cercanas. Cachés transfieren líneas, por lo que recorrer datos contiguos suele aprovechar espacio. El resultado depende de representación, tamaño, asociatividad, otros procesos y prefetch. Medir un patrón no prueba cuál mecanismo dominó.

3. Conjunto de trabajo conecta algoritmo y capacidad

El conjunto de trabajo es la información activamente reutilizada durante un intervalo. Cuando deja de caber en un nivel, aumentan reemplazos y accesos al siguiente. Reducirlo puede mejorar rendimiento más que reducir una operación aislada. Debe medirse con tamaños progresivos y múltiples repeticiones.

4. Memoria virtual crea un espacio por proceso

Las direcciones que ve el analizador local de eventos son virtuales. El sistema y hardware traducen páginas a memoria física o manejan ausencia. Esto permite aislamiento, compartición controlada y espacios mayores que RAM, pero un acceso puede provocar page fault. Una dirección impresa no revela ubicación física estable.

5. Guardar no siempre significa persistir físicamente

Bibliotecas y sistema almacenan buffers; el dispositivo puede tener caché. Cerrar, vaciar y sincronizar poseen garantías diferentes. Una aplicación debe definir si basta entregar datos al sistema o si requiere durabilidad ante fallo, y aceptar el costo.

Caso conductor: recorrer eventos del analizador local de eventos

El analizador local de eventos compara una lista recorrida secuencialmente con índices barajados. El experimento mantiene datos y operación, varía orden, prueba varios tamaños y registra distribución. La conclusión correcta es “patrón compatible con efectos de localidad bajo este entorno”; no “medimos la caché L2”.

Definiciones de trabajo

  • latencia: tiempo hasta completar una operación;
  • ancho de banda: cantidad transferida por unidad de tiempo;
  • localidad: tendencia de reutilización temporal o espacial;
  • página: unidad de mapeo de memoria virtual;
  • persistencia: conservación más allá del proceso o fallo definido.

Glosario

Cache hit/miss indica si un nivel satisface acceso. Working set es conjunto activo. Page fault requiere intervención para resolver una página.

Ejemplo mínimo

Acceder diez veces al mismo elemento tiene localidad temporal. Recorrer una lista contigua tiene espacial; saltar aleatoriamente reduce predictibilidad aunque haga la misma suma.

Ejemplo profesional

Un índice acelera búsqueda y aumenta memoria y escrituras. La decisión compara carga real y conjunto de trabajo, no asume que “más caché siempre mejora”.

Práctica guiada

Usa como base el laboratorio ejecutable de la Parte 01; trabaja sobre una copia o conserva tus salidas en el directorio work/SE-018/.

  1. Crea memory_probe.py con recorridos secuencial y barajado.
  2. Usa tamaños progresivos, semilla fija y time.perf_counter_ns().
  3. Ejecuta varias rondas y conserva todas las muestras.
  4. Usa tracemalloc para pico de asignación Python, etiquetándolo como tal.
  5. Registra procesos de fondo y orden; alterna experimentos para reducir sesgo.
  6. Entrega hierarchy.md, samples.csv, analysis.md.

Ejercicios

  1. Compara latencia y throughput con un ejemplo.
  2. Diseña un algoritmo con mejor localidad sin cambiar resultado.
  3. Explica cuándo flush no equivale a durabilidad total.

Reto verificable

Otra persona repite el experimento y obtiene la misma tendencia o explica diferencias con evidencia. Debe señalar al menos dos causas alternativas.

Preguntas frecuentes

¿Más RAM hace más rápida cualquier aplicación?

No; ayuda si evita presión relevante, pero no corrige CPU, I/O o algoritmos dominantes.

¿Puedo medir caché con este script?

Observas tiempo compatible con varios mecanismos; medir eventos requiere herramientas específicas.

Fallo controlado y diagnóstico

Ejecuta una sola vez el caso secuencial primero. Luego alterna orden y repite. Documenta cómo calentamiento y orden cambiaron la inferencia.

Errores comunes y cómo corregirlos

SíntomaCausaCorrección
“RAM” para toda jerarquíaniveles confundidosdeclara nivel y garantía
tiempo atribuido a caché concretainstrumento insuficienteexpresa hipótesis y alternativas
promedio únicovariación ocultaconserva distribución y contexto
write() se presenta como duraderobuffers omitidosdefine flush, sync y fallo considerado

Entorno y archivos clave

Python 3.11+, random, time, tracemalloc; sin paquetes ni archivos grandes. Elimina muestras al terminar si no se conservan como evidencia.

Seguridad, ética y accesibilidad

Limita tamaños para no presionar el equipo. Informa unidades y ofrece tabla además de gráfico. No conviertas hardware modesto en culpa del usuario sin medir requisitos.

Transferencia

Repite con lectura de archivo y separa caché de aplicación, sistema y dispositivo como hipótesis.

Evaluación y evidencia

Se exigen diseño controlado, muestras, causas alternativas y límite instrumental.

Fuentes

Límites y siguiente paso

No perfila cachés físicas ni NUMA. SE-019 explica procesos, hilos e I/O que compiten por recursos.


← SE-017 · ↑ Parte 01 · SE-019 →