stringtranslate.com

Jerarquía de la memoria

Diagrama de la jerarquía de la memoria de la computadora

En la arquitectura informática , la jerarquía de memoria divide el almacenamiento informático 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 arquitectónico de computadoras, las predicciones de algoritmos y las construcciones de programación de nivel inferior que involucran la localidad de referencia .

El diseño para un 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 diversos componentes puede considerarse como parte de una jerarquía de memorias ( m 1 , m 2 , ..., m n ) en la que cada miembro m i es típicamente más pequeño y más rápido que el siguiente miembro más alto m i +1 de la jerarquía. Para limitar la espera de los niveles superiores, un nivel inferior responderá llenando un búfer y luego enviando una señal para activar la transferencia.

Hay cuatro niveles principales de almacenamiento. [1]

Esta es una estructura general de jerarquía de memoria. Muchas otras estructuras son útiles. Por ejemplo, un algoritmo de paginación puede considerarse como un nivel de memoria virtual al diseñar una arquitectura informática , 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

Ejemplos

Jerarquía de memoria de un servidor AMD Bulldozer.

La cantidad de niveles en la jerarquía de memoria y el rendimiento en cada nivel han aumentado con el tiempo. El tipo de memoria o componentes de almacenamiento también cambian históricamente. [6] Por ejemplo, la jerarquía de memoria de un procesador Intel Haswell Mobile [7] alrededor de 2013 es:

Los niveles inferiores de la jerarquía (desde los discos hacia abajo) también se conocen como almacenamiento por niveles . La distinción formal entre almacenamiento en línea, casi en línea y fuera de línea es: [12]

Por ejemplo, los discos giratorios que siempre están en línea están en línea, mientras que los discos giratorios que giran hacia abajo, como el Massive Array of Idle Disk ( MAID ), están casi en línea. Los medios extraíbles, como los cartuchos de cinta que se pueden cargar automáticamente, como en una biblioteca de cintas , están casi en línea, mientras que los cartuchos que se deben cargar manualmente están fuera de línea.

La mayoría de las CPU modernas son tan rápidas que para la mayoría de las cargas de trabajo del programa, 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 diferentes niveles de la jerarquía [ cita requerida ] . 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/rápido y requiera el uso de un nivel más grande/más 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 los datos que faltan en un nivel superior y que deben obtenerse de un nivel inferior son, respectivamente: desbordamiento de registro (debido a la presión de registro : registro a caché), pérdida de caché (caché a memoria principal) y falla de página (dura) (memoria principal a disco).

Los lenguajes de programación modernos asumen principalmente dos niveles de memoria, la memoria principal y el almacenamiento en disco, aunque en el lenguaje ensamblador y en los ensambladores en línea de lenguajes como C , se puede acceder directamente a los registros. Para aprovechar al máximo la jerarquía de memoria se requiere la cooperación de los programadores, el hardware y los compiladores (así como el soporte subyacente del sistema operativo):

Muchos programadores asumen que existe un solo nivel de memoria. Esto funciona bien hasta que la aplicación se topa con un muro de rendimiento. Luego, la jerarquía de memoria se evaluará durante la refactorización del código .

Véase también

Referencias

  1. ^ ab Toy, Wing; Zee, Benjamin (1986). Arquitectura de hardware y software de computadoras. Prentice Hall. pág. 30. ISBN 0-13-163502-6.
  2. ^ Combinación de escritura
  3. ^ "Jerarquía de memoria". Unity Semiconductor Corporation. Archivado desde el original el 5 de agosto de 2009. Consultado el 16 de septiembre de 2009 .
  4. ^ Pádraig Brady. "Multinúcleo" . Consultado el 16 de septiembre de 2009 .
  5. ^ abc 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}}: Requiere citar revista |journal=( ayuda )
  6. ^ "Memoria y almacenamiento - Cronología de la historia de la informática - Museo de Historia de la Computación". www.computerhistory.org .
  7. ^ Crothers, Brooke. "Análisis de los gráficos de alta gama de Intel en la MacBook Pro de 15 pulgadas de Apple - CNET". News.cnet.com . Consultado el 31 de julio de 2014 .
  8. ^ "Análisis de la arquitectura Haswell de Intel: cómo construir una nueva PC y un nuevo Intel". AnandTech . Consultado el 31 de julio de 2014 .
  9. ^ abcde "SiSoftware Zone". Sisoftware.co.uk. Archivado desde el original el 13 de septiembre de 2014. Consultado el 31 de julio de 2014 .
  10. ^ "Revisión del SSD NVMe M.2 Samsung 960 Pro". storagereview.com. 20 de octubre de 2016. Consultado el 13 de abril de 2017 .
  11. ^ "Ultrium - Tecnología LTO - Generaciones UltriumLTO". Lto.org. Archivado desde el original el 27 de julio de 2011. Consultado el 31 de julio de 2014 .
  12. ^ Pearson, Tony (2010). "Uso correcto del término Nearline". IBM Developerworks, Inside System Storage . Archivado desde el original el 27 de noviembre de 2018. Consultado el 16 de agosto de 2015 .