De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar
Diagrama de la jerarquía de la memoria de la computadora

En la arquitectura de la computadora , la jerarquía de la 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 desempeño y tecnologías de control. [1] La jerarquía de la memoria afecta el rendimiento en el diseño arquitectónico de la computadora, las predicciones de algoritmos y las construcciones de programación de nivel inferior que involucran la localidad de referencia .

Diseñar 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 verse 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 en niveles más altos, un nivel más bajo responderá llenando un búfer y luego indicando la activación de la transferencia.

Hay cuatro niveles de almacenamiento principales. [1]

  • Interno : registros del procesador y caché .
  • Principal: la RAM del sistema y las tarjetas controladoras.
  • Almacenamiento masivo en línea - Almacenamiento secundario.
  • Almacenamiento a granel fuera de línea: almacenamiento terciario y fuera de línea.

Esta es una estructura de jerarquía de memoria general. 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 de computadora , y se puede incluir un nivel de almacenamiento nearline entre el almacenamiento en línea y fuera de línea.

Propiedades de las tecnologías en la jerarquía de la memoria

  • Agregar complejidad ralentiza la jerarquía de la memoria . [2]
  • La tecnología de memoria CMOx extiende el espacio Flash en la jerarquía de memoria [3]
  • Una de las principales formas de aumentar el rendimiento del sistema es minimizar qué tan abajo en la jerarquía de memoria se tiene que ir para manipular los datos. [4]
  • La latencia y el ancho de banda son dos métricas asociadas con los cachés. Ninguno de ellos es uniforme, sino específico de un componente particular de la jerarquía de la memoria. [5]
  • Es difícil predecir en qué parte de la jerarquía de la memoria residen los datos. [5]
  • ... la ubicación en la jerarquía de memoria dicta el tiempo necesario para que se produzca la captación previa. [5]

Ejemplos

Jerarquía de memoria de un servidor AMD Bulldozer.

El número de niveles en la jerarquía de la memoria y el rendimiento en cada nivel ha aumentado con el tiempo. El tipo de memoria o componentes de almacenamiento también cambia 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 (generalmente 1 ciclo de CPU). Unos pocos miles de bytes de tamaño
  • Cache
    • Nivel 0 (L0) Caché de micro operaciones - 6144 bytes (6 KiB [ cita requerida ] [ investigación original ] ) [8] de tamaño
    • Caché de instrucciones de nivel 1 (L1) - 128 KiB [ cita requerida ] [ investigación original ] en tamaño
    • Caché de datos de nivel 1 (L1) - 128 KiB [ cita requerida ] [ investigación original ] en tamaño. La mejor velocidad de acceso es de alrededor de 700 GB / s [9]
    • Nivel 2 (L2) Instrucción y datos (compartidos) - 1 MiB [ cita requerida ] [ investigación original ] en tamaño. La mejor velocidad de acceso es de unos 200 GB / s [9]
    • Caché compartido de nivel 3 (L3): tamaño de 6 MiB [ cita requerida ] [ investigación original ] . La mejor velocidad de acceso es de alrededor de 100 GB / s [9]
    • Caché compartido de nivel 4 (L4): tamaño de 128 MiB [ cita requerida ] [ investigación original ] . La mejor velocidad de acceso es de unos 40 GB / s [9]
  • Memoria principal ( almacenamiento primario ) - GiB [ cita requerida ] [ investigación original ] en tamaño. 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]
  • Nearline Storage ( almacenamiento terciario ): hasta exabytes de tamaño. A partir de 2013, la mejor velocidad de acceso es de unos 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 online, nearline y offline es: [12]

  • El almacenamiento en línea está disponible de inmediato para E / S.
  • El almacenamiento Nearline no está disponible de inmediato, pero se puede hacer 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 conectarse.

Por ejemplo, los discos giratorios siempre activos están en línea, mientras que los discos giratorios que giran hacia abajo, como la matriz masiva de discos inactivos ( 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 deben cargarse 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 los diferentes niveles de la jerarquía [ cita requerida ] . Como resultado, la CPU pasa gran parte de su tiempo inactiva, esperando que se complete la E / S de la memoria. Esto a veces se denomina costo de espacio , ya que es más probable que un objeto de memoria más grande se desborde en 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 de un nivel superior y necesitan ser recuperados de un nivel inferior son, respectivamente: registro de derrame (debido a la presión del registro: registro en caché), falta 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, memoria principal y almacenamiento en disco, aunque en lenguaje ensamblador y ensambladores en línea en lenguajes como C , se puede acceder directamente a los registros. Aprovechar al máximo la jerarquía de la memoria requiere la cooperación de programadores, hardware y 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 datos entre la memoria y las cachés.
  • Los compiladores optimizadores son responsables de generar código que, cuando se ejecuta, hará que el hardware use cachés y registros de manera eficiente.

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

Ver también

  • Jerarquía de caché
  • Uso de localidad espacial y temporal: memoria jerárquica
  • Búfer frente a caché
  • Jerarquía de caché en un procesador moderno
  • Muro de la memoria
  • Memoria del ordenador
  • Gestión de almacenamiento jerárquica
  • Almacenamiento en la nube
  • Patrón de acceso a la memoria
  • Algoritmo para evitar la comunicación

Referencias

  1. ^ a b Juguete, ala; Zee, Benjamin (1986). Arquitectura de hardware / software informático . Prentice Hall. pag. 30 . ISBN 0-13-163502-6.
  2. ^ Escritura-combinación
  3. ^ "Jerarquía de memoria" . Unitity Semiconductor Corporation. Archivado desde el original el 5 de agosto de 2009 . Consultado el 16 de septiembre de 2009 .
  4. ^ Pádraig Brady. "Multi-Core" . Consultado el 16 de septiembre de 2009 .
  5. ↑ a b c 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 requires |journal= (help)
  6. ^ "Memoria y almacenamiento - Cronología de la historia de la computadora - Museo de historia de la computadora" . www.computerhistory.org .
  7. ^ Crothers, Brooke. "Disección de 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 .
  8. ^ "Arquitectura Haswell de Intel analizada: construcción de una nueva PC y una nueva Intel" . AnandTech . Consultado el 31 de julio de 2014 .
  9. ^ a b c d e "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 de SSD Samsung 960 Pro M.2 NVMe" . storagereview.com . Consultado el 13 de abril de 2017 .
  11. ^ "Ultrium - Tecnología LTO - Ultrium GenerationsLTO" . 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, almacenamiento interno del sistema . Archivado desde el original el 27 de noviembre de 2018 . Consultado el 16 de agosto de 2015 .