
En arquitectura de computadoras , la jerarquía de memoria separa el almacenamiento de la computadora en una jerarquía basada en el tiempo de respuesta . Dado que el tiempo de respuesta, la complejidad y la capacidad están relacionados, los niveles también pueden distinguirse por su rendimiento y tecnologías de control. [ 1 ] La jerarquía de memoria afecta el rendimiento en el diseño de arquitectura de computadoras, predicciones de algoritmos y construcciones de programación de bajo nivel que involucran localidad de referencia.
El diseño para alto rendimiento requiere considerar las restricciones de la jerarquía de memoria, es decir, el tamaño y las capacidades de cada componente. Cada uno de los componentes puede considerarse parte de una jerarquía de memorias ( m₁ , m₂ , ... , mₙ ) en la que cada miembro mᵢ suele ser más pequeño y rápido que el siguiente miembro mᵢ + 1 de la jerarquía. Para limitar los tiempos de espera de los niveles superiores, un nivel inferior responderá llenando un búfer y luego activando la transferencia.
Existen cuatro niveles principales de almacenamiento. [ 1 ]
- Interno : registros del procesador y caché .
- Principal : la memoria RAM del sistema y las tarjetas controladoras.
- Almacenamiento masivo en línea : almacenamiento secundario.
- Almacenamiento masivo fuera de línea : almacenamiento terciario y fuera de línea.
Esta es una estructura general de jerarquía de memoria. Existen muchas otras estructuras útiles. Por ejemplo, un algoritmo de paginación puede considerarse un nivel de memoria virtual al diseñar una arquitectura de computadora, y se puede incluir un nivel de almacenamiento nearline entre el almacenamiento en línea y el almacenamiento fuera de línea.
Propiedades de las tecnologías en la jerarquía de memoria
- Agregar complejidad ralentiza la jerarquía de memoria . [ 2 ]
- La tecnología de memoria CMOx amplía el espacio flash en la jerarquía de memoria [ 3 ].
- Una de las principales formas de aumentar el rendimiento del sistema es minimizar la profundidad a la que hay que descender en la jerarquía de memoria para manipular datos. [ 4 ]
- La latencia y el ancho de banda son dos métricas asociadas con las cachés. Ninguna de ellas es uniforme, sino que es específica de un componente particular de la jerarquía de memoria. [ 5 ]
- Predecir en qué parte de la jerarquía de memoria residen los datos es difícil. [ 5 ]
- La ubicación en la jerarquía de memoria determina el tiempo necesario para que se produzca la precarga. [ 5 ]
Ejemplos

El número de niveles en la jerarquía de memoria y el rendimiento en cada nivel han aumentado con el tiempo. El tipo de componentes de memoria o almacenamiento también cambia históricamente. [ 6 ]
Algunas CPU incluyen niveles adicionales de caché entre la L3 y la memoria. Por ejemplo, la microarquitectura Haswell incluye una caché L4 de 128 MB en unidades móviles. [ 13 ] [ 14 ]
Los niveles inferiores de la jerarquía , desde el almacenamiento masivo hacia abajo , también se conocen como almacenamiento por niveles . La distinción formal entre almacenamiento en línea, en línea cercana y fuera de línea es: [ 15 ]
- El almacenamiento en línea está disponible de inmediato para operaciones de entrada/salida.
- El almacenamiento nearline no está disponible de inmediato, pero se puede poner en línea rápidamente sin intervención humana.
- El almacenamiento sin conexión no está disponible de inmediato y requiere cierta intervención humana para activarlo.
Por ejemplo, los discos giratorios que están siempre encendidos se consideran en línea, mientras que los discos giratorios que se apagan, como las matrices masivas de discos inactivos (MAID), se consideran en línea casi. Los medios extraíbles, como los cartuchos de cinta que se pueden cargar automáticamente, como en una biblioteca de cintas , se consideran en línea casi, mientras que los cartuchos que deben cargarse manualmente se consideran fuera de línea.
Programación
La mayoría de las CPU modernas son tan rápidas que, para la mayoría de las cargas de trabajo de los programas, el cuello de botella es la localidad de referencia de los accesos a la memoria y la eficiencia del almacenamiento en caché y la transferencia de memoria entre los diferentes niveles de la jerarquía . Como resultado, la CPU pasa gran parte de su tiempo inactiva, esperando a que se complete la E/S de memoria. Esto a veces se denomina costo de espacio , ya que es más probable que un objeto de memoria más grande desborde un nivel pequeño y rápido y requiera el uso de un nivel más grande y lento. La carga resultante en el uso de la memoria se conoce como presión (respectivamente , presión de registro , presión de caché y presión de memoria (principal) ). Los términos para datos faltantes de un nivel superior y que necesitan ser obtenidos de un nivel inferior son, respectivamente: desbordamiento de registro (debido a la presión de registro : registro a caché), fallo de caché (caché a memoria principal) y fallo de página ( memoria principal real a memoria virtual , es decir, almacenamiento masivo, comúnmente denominado disco independientemente de la tecnología de almacenamiento masivo real utilizada).
Los lenguajes de programación modernos asumen principalmente dos niveles de memoria: memoria principal ( de trabajo ) y almacenamiento masivo. La excepción son el lenguaje ensamblador, de nivel relativamente bajo , y los ensambladores en línea de lenguajes de nivel superior como C , donde se pueden usar instrucciones de "precarga" para precargar la caché. Para aprovechar al máximo la jerarquía de memoria se requiere la cooperación de programadores, hardware y compiladores (así como el soporte subyacente del sistema operativo).
- Los programadores son responsables de transferir datos entre el disco y la memoria mediante la entrada/salida de archivos.
- El hardware es el responsable de transferir datos entre la memoria y las cachés.
- Los compiladores optimizadores se encargan de generar código que, al ejecutarse, hará que el hardware utilice las cachés y los registros de forma eficiente.
Muchos programadores asumen un único nivel de memoria. Esto funciona bien hasta que la aplicación alcanza un límite de rendimiento. En ese momento, el programador necesita modificar los patrones de acceso a la memoria del código para que funcione correctamente con los recursos de caché. Un ejemplo clásico del efecto de la localidad y el almacenamiento en caché se observa al cambiar el orden de iteración de una matriz tridimensional. "Computer Systems: A Programmer's Perspective" es un libro de texto clásico que aborda este aspecto de la programación de sistemas. [ 16 ]
Nivelación de memoria
La estratificación de memoria consiste en dividir la memoria principal en varios niveles según sus características de rendimiento y (de forma análoga a la estratificación de almacenamiento ) mover el contenido de la memoria entre ellos. Lo que parece ser la "memoria principal" (espacio de direcciones físicas) puede estar compuesta por partes heterogéneas debido a NUMA, memoria conectada mediante CXL (en ranuras PCIe), módulos Optane DCPMM o memoria presente en otro hardware de expansión, como coprocesadores y GPU; de ahí la necesidad de la estratificación. El intercambio también puede considerarse una forma de estratificación. [ 17 ]
La estratificación de memoria se implementa en Linux como una extensión de NUMA, donde cada proveedor de memoria tiene un nodo NUMA sin CPU con una "distancia abstracta" apropiada que refleja su rendimiento. El esquema existente para migrar memoria entre nodos NUMA usando la "calidad" indicada por fallas de página es adaptado a la estratificación por Huang Ying (el esquema TPP de Al Maruf no está en la rama principal de Linux). [ 18 ] También utiliza una política de asignación de entrelazado ponderado. [ 19 ]
Véase también
- Jerarquía de caché
- Uso de la localidad espacial y temporal: memoria jerárquica
- Búfer frente a caché
- Jerarquía de caché en un procesador moderno
- Muro de recuerdos
- Memoria de computadora
- Gestión jerárquica del almacenamiento
- Almacenamiento en la nube
- Patrón de acceso a la memoria
- Algoritmo para evitar la comunicación
Referencias
- 1 2 Toy, Wing; Zee, Benjamin (1986). Arquitectura de hardware/software de computadoras . Prentice Hall. pág . 30. ISBN 0-13-163502-6.
- ↑ Escritura-combinación
- ↑ "Jerarquía de memoria" . Unitity Semiconductor Corporation. Archivado del original el 5 de agosto de 2009. Consultado el 16 de septiembre de 2009 .
- ↑ Pádraig Brady. "Multinúcleo" . Consultado el 16 de septiembre de 2009 .
- 1 2 3 van der Pas, Ruud (2002). "Jerarquía de memoria en sistemas basados en caché" (PDF) . Santa Clara, California: Sun Microsystems : 26. 817-0742-10.
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda ) - ↑ " Memoria y almacenamiento – Cronología de la historia de la informática – Museo de la Historia de la Informática" . www.computerhistory.org
- 1 2 3 4 Fog, Agner. "La microarquitectura de las CPU de Intel y AMD" (PDF) .Capítulos utilizados: 24.16 Acceso a la memoria caché (Zen 4).
- ↑ "Guía de overclocking de RAM DDR5 para AMD Ryzen 7000/9000: Pruebas de rendimiento con los perfiles XPM y EXPO" .
- ↑ "Análisis del SSD Samsung 960 Pro M.2 NVMe" . storagereview.com. 20 de octubre de 2016. Consultado el 13 de abril de 2017 .
- ↑ "Hoja de datos Exos 2X18" (PDF) .
- ↑ "Manual del producto 2X18 SATA" (PDF) .
- ↑ "Ultrium – Tecnología LTO – Generaciones UltriumLTO" . Lto.org. Archivado del original el 27 de julio de 2011. Consultado el 31 de julio de 2014 .
- ↑ Crothers, Brooke. "Analizando los mejores gráficos de Intel en el MacBook Pro de 15 pulgadas de Apple – CNET" . News.cnet.com . Consultado el 31 de julio de 2014 .
- ↑ "Zona SiSoftware" . Sisoftware.co.uk. Archivado del original el 13 de septiembre de 2014. Consultado el 31 de julio de 2014 .
- ↑ Pearson, Tony (2010). "Uso correcto del término Nearline" . IBM Developerworks, Inside System Storage . Archivado del original el 27 de noviembre de 2018. Recuperado el 16 de agosto de 2015 .
- ↑ "La perspectiva de un programador: Sistemas de memoria" .
- ↑ Corbet, Jonathan (12 de mayo de 2023). "El futuro de la estratificación de la memoria" . LWN .
- ↑ "NUMA balance: optimización de la ubicación de páginas para el sistema de niveles de memoria · torvalds/linux@c574bbe" . GitHub .
- ↑ Corbet, Jonathan (25 de octubre de 2023). "Entrelazado ponderado para estratificación de memoria" . LWN .
- Arquitectura de computadoras
- Almacenamiento de datos informáticos
- Jerarquía