← SEARCHABLE ARCHIVE
Computer Science · 2026-07-16

Cuello de botella de Von Neumann y caché de CPU

¿Por qué una CPU rápida espera memoria?

INTERACTIVE READING MODE →

Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.

Por muy rápido que pueda calcular la CPU, no puede hacer nada si no llegan las instrucciones y los datos para calcular. El fenómeno en el que la velocidad de transferencia entre la CPU y la memoria limita el rendimiento general se denomina cuello de botella de Von Neumann.

CPU espera memoria

En la arquitectura von Neumann, las instrucciones y los datos utilizan la misma memoria y bus.

CPU solicita instrucción
        ↓
Recupera instrucciones de la memoria
        ↓
La CPU solicita los datos requeridos
        ↓
Obtener datos de la memoria
        ↓
La CPU calcula

En comparación con la velocidad de cálculo de la CPU, el acceso a la memoria principal es lento. Además, si los comandos y los datos se mueven juntos a través de un solo canal, puede surgir una situación en la que cada uno espere su turno.

El caché reduce esta espera

Las CPU modernas precargan instrucciones y datos de uso frecuente en la memoria caché cerca de la CPU. La caché L1 es pequeña pero muy rápida y, a medida que avanza hacia L2 y L3, se ralentiza gradualmente en lugar de crecer.

CPU → L1 Cache → L2 Cache → L3 Cache → Main Memory
rápido y pequeño lento y grande

La caché usa localidad, lo que significa que los programas usan repetidamente datos cercanos.

  • Localidad temporal: es probable que el valor que acaba de utilizar se vuelva a utilizar pronto.
  • Localidad espacial: si utiliza una dirección, existe una alta posibilidad de que también se utilicen direcciones cercanas.

La razón por la cual el código que lee una matriz secuencialmente desde el frente es más ventajoso para el caché que el código que la lee saltando es debido a la localidad espacial.

//Dado que las memorias consecutivas se leen en orden, la memoria caché es fácil de utilizar.
for (int i = 0; i < count; ++i)
{
    sum += values[i];
}

Caché de instrucciones y caché de datos

Las CPU modernas mantienen las instrucciones y los datos juntos en la memoria principal, pero separan la caché de instrucciones y la caché de datos en la caché L1. Gracias a esto, la búsqueda de la siguiente instrucción y el acceso a los datos actuales se pueden realizar de forma casi simultánea.

Por eso se le llama estructura de Harvard modificada. Utiliza una mezcla de las fortalezas de la estructura de Harvard y la estructura de von Neumann en las capas necesarias.

En última instancia, el rendimiento de la computadora no está determinado únicamente por la cantidad de cálculos realizados por la CPU. También debe observar qué tan contiguos se colocan los datos, cuál es la tasa de aciertos de la caché y cuánto tiempo espera la CPU por la memoria.