Articulo de referencia

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...

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]

  • Interno : registros del procesador y caché .
  • Principal: la 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. 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

  • Añadir complejidad ralentiza la jerarquía de la 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 hasta dónde hay que llegar en la jerarquía de memoria para manipular datos. [4]
  • La latencia y el ancho de banda son dos métricas asociadas con los cachés. Ninguna de ellas es uniforme, sino que es específica de un componente particular de la jerarquía de memoria. [5]
  • Es difícil predecir dónde residen los datos en la jerarquía de memoria. [5]
  • ...la ubicación en la jerarquía de memoria determina el tiempo necesario para que se produzca la precarga. [5]

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:

  • Registros del procesador : el acceso más rápido posible (normalmente, 1 ciclo de CPU). Tamaño de unos pocos miles de bytes
  • Cache
    • Caché de microoperaciones de nivel 0 (L0) : 6144 bytes (6 KiB [ cita requerida ] [ investigación original ] ) [8] de tamaño
    • Caché de instrucciones de nivel 1 (L1) : tamaño de 128 KiB [ cita requerida ] [ investigación original ]
    • Caché de datos de nivel 1 (L1): 128 KiB [ cita requerida ] [ investigación original ] de tamaño. La mejor velocidad de acceso es de alrededor de 700 GB /s [9]
    • Nivel 2 (L2) Instrucciones y datos (compartidos): tamaño de 1 MiB [ cita requerida ] [ investigación original ] . La mejor velocidad de acceso es de alrededor de 200 GB/s [9]
    • Caché compartida de nivel 3 (L3): 6 MiB [ cita requerida ] [ investigación original ] de tamaño. La mejor velocidad de acceso es de alrededor de 100 GB/s [9]
    • Caché compartida de nivel 4 (L4): 128 MiB [ cita requerida ] [ investigación original ] de tamaño. La mejor velocidad de acceso es de alrededor de 40 GB/s [9]
  • Memoria principal ( almacenamiento primario ): tamaño de GiB [ cita requerida ] [ investigación original ] . La mejor velocidad de acceso es de alrededor de 10 GB/s. [9] En el caso de una máquina NUMA , los tiempos de acceso pueden no ser uniformes.
  • Almacenamiento en disco ( almacenamiento secundario ): tamaño de terabytes . A partir de 2017, la mejor velocidad de acceso desde una unidad de estado sólido de consumo es de aproximadamente 2000 MB/s [10]
  • Almacenamiento Nearline ( almacenamiento terciario ): hasta exabytes de tamaño. A partir de 2013, la mejor velocidad de acceso es de aproximadamente 160 MB/s [11]
  • Almacenamiento sin conexión

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]

  • El almacenamiento en línea está disponible inmediatamente para E/S.
  • El almacenamiento Nearline no está disponible de inmediato, pero puede realizarse en línea rápidamente sin intervención humana.
  • El almacenamiento fuera de línea no está disponible de inmediato y requiere alguna intervención humana para ponerlo en línea.

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):

  • Los programadores son responsables de mover datos entre el disco y la memoria a través de E/S de archivos.
  • El hardware es responsable de mover los datos entre la memoria y los cachés.
  • Los compiladores optimizadores son responsables de generar código que, cuando se ejecuta, hará que el hardware utilice cachés y registros de manera eficiente.

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 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Memory_hierarchy&oldid=1246695492"