stringtranslate.com

Jerarquía de caché

La jerarquía de caché, o caché multinivel , es una arquitectura de memoria que utiliza una jerarquía de almacenes de memoria en función de las distintas velocidades de acceso a los datos almacenados en caché. Los datos más solicitados se almacenan en caché en almacenes de memoria de acceso de alta velocidad, lo que permite un acceso más rápido por parte de los núcleos de la unidad central de procesamiento (CPU).

La jerarquía de caché es una forma y parte de la jerarquía de memoria y puede considerarse una forma de almacenamiento por niveles . [1] Este diseño fue pensado para permitir que los núcleos de la CPU procesen más rápido a pesar de la latencia de la memoria del acceso a la memoria principal . El acceso a la memoria principal puede actuar como un cuello de botella para el rendimiento del núcleo de la CPU mientras la CPU espera datos, mientras que hacer que toda la memoria principal sea de alta velocidad puede ser prohibitivamente costoso. Las cachés de alta velocidad son un compromiso que permite el acceso de alta velocidad a los datos más utilizados por la CPU, lo que permite un reloj de CPU más rápido . [2]

Diagrama de arquitectura de proceso que muestra cuatro procesadores independientes, cada uno vinculado a través de sistemas de caché a la memoria principal y al sistema de entrada-salida.
Organización genérica de caché multinivel

Fondo

En la historia del desarrollo de chips electrónicos y de computadoras, hubo un período en el que los aumentos en la velocidad de la CPU superaron las mejoras en la velocidad de acceso a la memoria. [3] La brecha entre la velocidad de las CPU y la memoria significaba que la CPU a menudo estaba inactiva. [4] Las CPU eran cada vez más capaces de ejecutar mayores cantidades de instrucciones en un tiempo determinado, pero el tiempo necesario para acceder a los datos de la memoria principal impedía que los programas se beneficiaran plenamente de esta capacidad. [5] Este problema motivó la creación de modelos de memoria con mayores tasas de acceso para aprovechar el potencial de los procesadores más rápidos. [6]

Esto dio lugar al concepto de memoria caché , propuesto por primera vez por Maurice Wilkes , un científico informático británico de la Universidad de Cambridge en 1965. Llamó a estos modelos de memoria "memoria esclava". [7] Entre aproximadamente 1970 y 1990, los artículos de Anant Agarwal , Alan Jay Smith , Mark D. Hill , Thomas R. Puzak y otros discutieron mejores diseños de memoria caché. Los primeros modelos de memoria caché se implementaron en ese momento, pero incluso cuando los investigadores estaban investigando y proponiendo mejores diseños, la necesidad de modelos de memoria más rápidos continuó. Esta necesidad resultó del hecho de que, aunque los primeros modelos de caché mejoraron la latencia de acceso a los datos, con respecto a los costos y las limitaciones técnicas no era factible que la caché de un sistema informático se acercara al tamaño de la memoria principal. A partir de 1990, se propusieron ideas como agregar otro nivel de caché (segundo nivel), como respaldo para la caché de primer nivel. Jean-Loup Baer , ​​Wen-Hann Wang, Andrew W. Wilson y otros han realizado investigaciones sobre este modelo. Cuando varias simulaciones e implementaciones demostraron las ventajas de los modelos de caché de dos niveles, el concepto de cachés multinivel se impuso como un modelo nuevo y generalmente mejor de memorias caché. Desde el año 2000, los modelos de caché multinivel han recibido una amplia atención y actualmente se implementan en muchos sistemas, como los cachés de tres niveles que están presentes en los productos Core i7 de Intel. [8]

Caché de varios niveles

El acceso a la memoria principal para cada ejecución de instrucción puede resultar en un procesamiento lento, ya que la velocidad del reloj depende del tiempo necesario para encontrar y obtener los datos. Para ocultar esta latencia de la memoria al procesador, se utiliza el almacenamiento en caché de datos. [9] Siempre que el procesador necesita los datos, se obtienen de la memoria principal y se almacenan en una estructura de memoria más pequeña llamada caché. Si hay alguna necesidad adicional de esos datos, primero se busca en la caché antes de ir a la memoria principal. [10] Esta estructura se encuentra más cerca del procesador en términos del tiempo que se tarda en buscar y obtener datos con respecto a la memoria principal. [11] Las ventajas de utilizar la caché se pueden demostrar calculando el tiempo de acceso promedio (AAT) para la jerarquía de memoria con y sin caché. [12]

Tiempo promedio de acceso (AAT)

Los cachés, al ser de pequeño tamaño, pueden dar lugar a errores frecuentes (cuando una búsqueda en el caché no proporciona la información buscada), lo que da lugar a una llamada a la memoria principal para recuperar los datos. Por lo tanto, la AAT se ve afectada por la tasa de errores de cada estructura en la que busca los datos. [13]

La AAT para la memoria principal se obtiene mediante Hit time main memory . La AAT para cachés se puede obtener mediante

Caché de tiempo de acierto + ( caché de tasa de errores × tiempo de penalización por error que tarda en llegar a la memoria principal después de un error en el caché ). [ se necesita más explicación ]

El tiempo de acceso a los cachés es menor que el tiempo de acceso a la memoria principal, por lo que el AAT para la recuperación de datos es significativamente menor cuando se accede a los datos a través del caché en lugar de la memoria principal. [14]

Compensaciones

Si bien el uso de la memoria caché puede mejorar la latencia de la memoria, es posible que no siempre resulte en la mejora necesaria en el tiempo que se tarda en obtener datos debido a la forma en que se organizan y recorren las memorias caché. Por ejemplo, las memorias caché de mapeo directo que tienen el mismo tamaño suelen tener una tasa de errores más alta que las memorias caché completamente asociativas. Esto también puede depender del parámetro de referencia de la computadora que prueba el procesador y del patrón de instrucciones. Pero el uso de una memoria caché completamente asociativa puede resultar en un mayor consumo de energía, ya que tiene que buscar en toda la memoria caché cada vez. Debido a esto, el equilibrio entre el consumo de energía (y el calor asociado) y el tamaño de la memoria caché se vuelve crítico en el diseño de la memoria caché. [13]

Evolución

Una serie de rectángulos de proporciones crecientes que representan una memoria creciente desde los registros de la CPU y el caché L1 hasta L2, L3 y la memoria principal.
Jerarquía de caché para hasta el nivel L3 de caché y memoria principal con L1 en el chip

En caso de que se produzca un error de caché, el propósito de utilizar dicha estructura se volverá inútil y el ordenador tendrá que ir a la memoria principal para obtener los datos necesarios. Sin embargo, con un caché de varios niveles , si el ordenador no encuentra el caché más cercano al procesador (caché de nivel uno o L1), buscará en el nivel o niveles de caché más cercanos y accederá a la memoria principal solo si estos métodos fallan. La tendencia general es mantener el caché L1 pequeño y a una distancia de 1 a 2 ciclos de reloj de CPU del procesador, y los niveles inferiores de caché aumentan de tamaño para almacenar más datos que L1, por lo que están más distantes pero con una tasa de errores menor. Esto da como resultado una mejor AAT. [15] Los arquitectos pueden diseñar la cantidad de niveles de caché según sus requisitos después de verificar las compensaciones entre el costo, las AAT y el tamaño. [16] [17]

Mejoras en el rendimiento

Con el escalamiento tecnológico que permitió que los sistemas de memoria se pudieran acomodar en un solo chip, la mayoría de los procesadores modernos tienen hasta tres o cuatro niveles de caché. [18] La reducción en la AAT se puede entender con este ejemplo, donde la computadora verifica la AAT para diferentes configuraciones hasta cachés L3.

Ejemplo : memoria principal = 50  ns , L1 = 1 ns con una tasa de error del 10 %, L2 = 5 ns con una tasa de error del 1 %, L3 = 10 ns con una tasa de error del 0,2 %.

Desventajas

Propiedades

tres cuadrados que muestran cachés L1 separados en la CPU para instrucciones y datos, un caché L2 fuera del chip y la memoria principal.
Organización de caché con L1 separada y L2 unificada

Bancario versus unificado

En una caché con bancos, la caché se divide en una caché dedicada al almacenamiento de instrucciones y una caché dedicada a los datos. Por el contrario, una caché unificada contiene tanto las instrucciones como los datos en la misma caché. [22] Durante un proceso, el procesador accede a la caché L1 (o la mayoría de las cachés de nivel superior en relación con su conexión con el procesador) para recuperar tanto las instrucciones como los datos. Para que se implementen ambas acciones al mismo tiempo, se necesitan varios puertos y más tiempo de acceso en una caché unificada. Tener varios puertos requiere hardware y cableado adicionales, lo que genera una estructura significativa entre las cachés y las unidades de procesamiento. [23] Para evitar esto, la caché L1 a menudo se organiza como una caché con bancos, lo que da como resultado menos puertos, menos hardware y, en general, tiempos de acceso más bajos. [13]

Los procesadores modernos tienen cachés divididos y en sistemas con cachés multinivel los cachés de niveles superiores pueden estar unificados mientras que los de niveles inferiores pueden dividirse. [24]

Políticas de inclusión

un diagrama del sistema de memoria que muestra una copia de la L1 dentro de la L2 y una copia de la L2 dentro de la L3.
Organización de caché inclusiva

La política de inclusión del sistema de memoria determina si un bloque presente en la capa de caché superior también puede estar presente en el nivel de caché inferior y puede ser inclusiva, exclusiva o no inclusiva no exclusiva (NINE). [ cita requerida ]

Con una política inclusiva, todos los bloques presentes en la caché de nivel superior deben estar presentes también en la caché de nivel inferior. Cada componente de la caché de nivel superior es un subconjunto del componente de la caché de nivel inferior. En este caso, dado que hay una duplicación de bloques, se desperdicia algo de memoria. Sin embargo, la comprobación es más rápida. [ cita requerida ]

En una política exclusiva, todos los componentes de la jerarquía de caché son completamente exclusivos, de modo que ningún elemento de la caché de nivel superior estará presente en ninguno de los componentes de la caché de nivel inferior. Esto permite el uso completo de la memoria caché. Sin embargo, existe una alta latencia de acceso a la memoria. [25]

Las políticas anteriores requieren que se respete un conjunto de reglas para implementarlas. Si no se fuerza ninguna de ellas, la política de inclusión resultante se denomina política de inclusión no inclusiva y no exclusiva (NINE). Esto significa que la caché de nivel superior puede o no estar presente en la caché de nivel inferior. [21]

Redactar políticas

Hay dos políticas que definen la forma en que se actualizará un bloque de caché modificado en la memoria principal: escritura directa y escritura diferida. [ cita requerida ]

En el caso de la política de escritura continua, siempre que cambia el valor del bloque de caché, también se modifica aún más en la jerarquía de memoria de nivel inferior. [26] Esta política garantiza que los datos se almacenen de forma segura a medida que se escriben en toda la jerarquía.

Sin embargo, en el caso de la política de escritura diferida, el bloque de caché modificado se actualizará en la jerarquía de nivel inferior solo cuando se expulse el bloque de caché. Se adjunta un "bit sucio" a cada bloque de caché y se establece siempre que se modifica el bloque de caché. [27] Durante la expulsión, los bloques con un bit sucio establecido se escribirán en la jerarquía de nivel inferior. Con esta política, existe un riesgo de pérdida de datos, ya que la copia más recientemente modificada de un dato solo se almacena en la caché y, por lo tanto, se deben observar algunas técnicas correctivas.

En caso de una escritura en la que el byte no está presente en el bloque de caché, el byte puede llevarse al caché según lo determinado por una política de asignación de escritura o de no asignación de escritura. [28] La política de asignación de escritura establece que en caso de una falla de escritura, el bloque se recupera de la memoria principal y se coloca en el caché antes de escribir. [29] En la política de no asignación de escritura, si el bloque no se encuentra en el caché, se escribirá en la jerarquía de memoria de nivel inferior sin buscar el bloque en el caché. [30]

Las combinaciones comunes de políticas son "escritura diferida, escritura con asignación" y "escritura directa, escritura sin asignación" .

Compartido versus privado

Cada una de las tres CPU tiene cachés L1 privados en el chip, pero comparte la memoria L2, L3 y principal fuera del chip.
Organización de caché con L1 privada y L2 y L3 compartida

Una caché privada se asigna a un núcleo en particular en un procesador y no puede ser accedida por ningún otro núcleo. En algunas arquitecturas, cada núcleo tiene su propia caché privada; esto crea el riesgo de bloques duplicados en la arquitectura de caché de un sistema, lo que resulta en una utilización reducida de la capacidad. Sin embargo, este tipo de elección de diseño en una arquitectura de caché multicapa también puede ser buena para una latencia de acceso a los datos más baja. [28] [31] [32]

Una caché compartida es una caché a la que pueden acceder varios núcleos. [33] Dado que es compartida, cada bloque de la caché es único y, por lo tanto, tiene una mayor tasa de aciertos, ya que no habrá bloques duplicados. Sin embargo, la latencia de acceso a los datos puede aumentar a medida que varios núcleos intentan acceder a la misma caché. [34]

En los procesadores multinúcleo , la elección de diseño para hacer que una caché sea compartida o privada afecta el rendimiento del procesador. [35] En la práctica, la caché de nivel superior L1 (o a veces L2) [36] [37] se implementa como privada y las cachés de nivel inferior se implementan como compartidas. Este diseño proporciona altas tasas de acceso para las cachés de alto nivel y bajas tasas de error para las cachés de nivel inferior. [35]

Modelos de implementación recientes

Organización de la caché de la microarquitectura Intel Nehalem [38]

Intel Xeon Emerald Rapids (2024)

Hasta 64 núcleos:

Intel i5 Raptor Lake-HX (2024)

6 núcleos (rendimiento | eficiencia):

Procesador AMD EPYC 9684X (2023)

96 núcleos:

Apple M1 Ultra (2022)

20 núcleos (núcleo de "rendimiento" 4:1 | núcleo de "eficiencia"):

AMD Ryzen 7000 (2022)

De 6 a 16 núcleos:

Microarquitectura AMD Zen 2 (2019)

Microarquitectura AMD Zen (2017)

Microarquitectura Intel Kaby Lake (2016)

Microarquitectura Intel Broadwell (2014)

IBM POWER7 (2010)

Véase también

Referencias

  1. ^ Hennessy, John L; Patterson, David A; Asanović, Krste ; Bakos, Jason D; Colwell, Robert P; Bhattacharjee, Abhishek; Conte, Thomas M; Duato, José; Franklin, Diana; Goldberg, David; Jouppi, Norman P; Li, Sheng; Muralimanohar, Naveen; Peterson, Gregory D; Pinkston, Timothy Mark; Ranganathan, Prakash; Wood, David Allen; Young, Clifford; Zaky, Amr (2011). Arquitectura informática: un enfoque cuantitativo (sexta edición). Elsevier Science. ISBN 978-0128119051.OCLC 983459758  .
  2. ^ "Caché: ¿Por qué nivelarlo?" (PDF) .
  3. ^ Ronald D. Miller; Lars I. Eriksson; Lee A Fleisher, 2014. Anestesia de Miller, libro electrónico. Elsevier Health Sciences. pág. 75. ISBN 978-0-323-28011-2
  4. ^ Albert Y. Zomaya, 2006. Manual de computación innovadora e inspirada en la naturaleza: integración de modelos clásicos con tecnologías emergentes. Springer Science & Business Media. pág. 298. ISBN 978-0-387-40532-2
  5. ^ Richard C. Dorf, 2018. Sensores, nanociencia, ingeniería biomédica e instrumentos: sensores, nanociencia, ingeniería biomédica. CRC Press. pág. 4. ISBN 978-1-4200-0316-1
  6. ^ David A. Patterson; John L. Hennessy, 2004. Organización y diseño de computadoras: la interfaz hardware/software, tercera edición. Elsevier. pág. 552. ISBN 978-0-08-050257-1
  7. ^ "Sir Maurice Vincent Wilkes | Informático británico". Encyclopædia Britannica . Consultado el 11 de diciembre de 2016 .
  8. ^ Berkeley, John L. Hennessy, Universidad de Stanford, y David A. Patterson, Universidad de California. "Diseño de la jerarquía de memoria - Parte 6. Intel Core i7, falacias y trampas". EDN . Consultado el 13 de octubre de 2022 .{{cite news}}: CS1 maint: varios nombres: lista de autores ( enlace )
  9. ^ Shane Cook, 2012. Programación CUDA: Guía para desarrolladores sobre computación paralela con GPU. Newnes. págs. 107-109. ISBN 978-0-12-415988-4
  10. ^ Bruce Hellingsworth; Patrick Hall; Howard Anderson; 2001. Computación Nacional Superior. Routledge. págs. 30–31. ISBN 978-0-7506-5230-8
  11. ^ Reeta Sahoo, Gagan Sahoo. Prácticas informáticas. Saraswati House Pvt Ltd. págs. 1–. ISBN 978-93-5199-433-6
  12. ^ Phillip A. Laplante; Seppo J. Ovaska; 2011. Diseño y análisis de sistemas en tiempo real: herramientas para el profesional. John Wiley & Sons. págs. 94–95. ISBN 978-1-118-13659-1
  13. ^ abc Hennessey y Patterson. Arquitectura informática: un enfoque cuantitativo . Morgan Kaufmann . ISBN 9780123704900.
  14. ^ Cetin Kaya Koc, 2008. Ingeniería criptográfica. Springer Science & Business Media. págs. 479–480. ISBN 978-0-387-71817-0
  15. ^ David A. Patterson; John L. Hennessy; 2008. Organización y diseño de computadoras: la interfaz hardware/software. Morgan Kaufmann. págs. 489–492. ISBN 978-0-08-092281-2
  16. ^ Harvey G. Cragon, 2000. Arquitectura e implementación de computadoras. Cambridge University Press. págs. 95–97. ISBN 978-0-521-65168-4
  17. ^ Baker Mohammad, 2013. Diseño de memoria integrada para sistemas multinúcleo y en chip. Springer Science & Business Media. págs. 11-14. ISBN 978-1-4614-8881-1
  18. ^ Gayde, William. "Cómo se diseñan y construyen las CPU". Techspot . Consultado el 17 de agosto de 2019 .
  19. ^ Vojin G. Oklobdzija, 2017. Diseño y fabricación digital. Prensa CRC. pag. 4. ISBN 978-0-8493-8604-6
  20. ^ "Jerarquía de la memoria".
  21. ^ ab Solihin, Yan (2016). Fundamentos de la arquitectura multinúcleo paralela . Chapman y Hall. pp. Capítulo 5: Introducción a la organización jerárquica de la memoria. ISBN 9781482211184.
  22. ^ Yan Solihin, 2015. Fundamentos de la arquitectura multinúcleo paralela. CRC Press. pág. 150. ISBN 978-1-4822-1119-1
  23. ^ Steve Heath, 2002. Diseño de sistemas integrados. Elsevier. pág. 106. ISBN 978-0-08-047756-5
  24. ^ Alan Clements, 2013. Organización y arquitectura de computadoras: temas y variaciones. Cengage Learning. pág. 588. ISBN 1-285-41542-6
  25. ^ "Evaluación del rendimiento de jerarquías de caché exclusivas" (PDF) . Archivado desde el original (PDF) el 2012-08-13 . Consultado el 2016-10-19 .
  26. ^ David A. Patterson; John L. Hennessy; 2017. Organización y diseño de computadoras Edición RISC-V: La interfaz de hardware y software. Elsevier Science. págs. 386–387. ISBN 978-0-12-812276-1
  27. ^ Stefan Goedecker; Adolfy Hoisie; 2001. Optimización del rendimiento de códigos numéricamente intensivos. SIAM. pág. 11. ISBN 978-0-89871-484-5
  28. ^ ab Solihin, Yan (2009). Fundamentos de la arquitectura de computadoras paralelas . Solihin Publishing. pp. Capítulo 6: Introducción a la organización jerárquica de la memoria. ISBN 9780984163007.
  29. ^ Harvey G. Cragon, 1996. Sistemas de memoria y procesadores segmentados. Jones & Bartlett Learning. pág. 47. ISBN 978-0-86720-474-2
  30. ^ David A. Patterson; John L. Hennessy; 2007. Organización y diseño de computadoras, edición revisada, tercera edición: La interfaz hardware/software. Elsevier. pág. 484. ISBN 978-0-08-055033-6
  31. ^ "Técnicas de software para sistemas multinúcleo con caché compartida". 24 de mayo de 2018.
  32. ^ "Un esquema de particionamiento de caché NUCA compartido/privado adaptativo para multiprocesadores de chip" (PDF) . Archivado desde el original (PDF) el 19 de octubre de 2016.
  33. ^ Akanksha Jain; Calvin Lin; 2019. Políticas de reemplazo de caché. Morgan & Claypool Publishers. pág. 45. ISBN 978-1-68173-577-1
  34. ^ David Culler; Jaswinder Pal Singh; Anoop Gupta; 1999. Arquitectura de computadoras paralelas: un enfoque de hardware/software. Gulf Professional Publishing. pág. 436. ISBN 978-1-55860-343-1
  35. ^ por Stephen W. Keckler; Kunle Olukotun; H. Peter Hofstee; 2009. Procesadores y sistemas multinúcleo. Springer Science & Business Media. pág. 182. ISBN 978-1-4419-0263-4
  36. ^ ab "Microarquitectura Intel Broadwell".
  37. ^ ab "Microarquitectura Intel Kaby Lake".
  38. ^ "La arquitectura del procesador Nehalem y las plataformas SMP Nehalem-EP" (PDF) . Archivado desde el original (PDF) el 2014-08-11.
  39. ^ "IBM Power7". Archivado desde el original el 21 de agosto de 2010.