La jerarquía de caché, o cachés de varios niveles , se refiere a una arquitectura de memoria que utiliza una jerarquía de almacenes de memoria basada en distintas velocidades de acceso a los datos de la caché. Los datos muy solicitados se almacenan en caché en almacenes de memoria de acceso de alta velocidad, lo que permite un acceso más rápido a 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 tenía la intención de permitir que los núcleos de la CPU se procesaran 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. Los 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]
Fondo
En la historia del desarrollo de chips informáticos y electrónicos, 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 estaría inactiva. [4] Las CPU eran cada vez más capaces de ejecutar y ejecutar grandes 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 por completo de esta capacidad. [5] Este problema motivó la creación de modelos de memoria con tasas de acceso más altas para aprovechar el potencial de procesadores más rápidos. [6]
Esto dio lugar al concepto de memoria caché , propuesto por primera vez por Maurice Wilkes , un informático británico de la Universidad de Cambridge en 1965. Él llamó a estos modelos de memoria "memoria esclava". [7] Aproximadamente entre 1970 y 1990, artículos y 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 mientras los investigadores investigaban y proponían mejores diseños, continuó la necesidad de modelos de memoria más rápidos. Esta necesidad resultó del hecho de que, aunque los primeros modelos de caché mejoraron la latencia de acceso a los datos, con respecto al costo 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 el 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 de varios niveles se convirtió en un modelo nuevo y generalmente mejor de memorias caché. Desde 2000, los modelos de caché de varios niveles han recibido una gran atención y actualmente se implementan en muchos sistemas, como los cachés de tres niveles que están presentes en los productos Intel Core i7. [8]
Caché de varios niveles
El acceso a la memoria principal para cada ejecución de instrucción puede resultar en un procesamiento lento, con la velocidad del reloj dependiendo del tiempo requerido para encontrar y recuperar los datos. Para ocultar esta latencia de memoria al procesador, se utiliza el almacenamiento en caché de datos. [9] Siempre que el procesador requiere los datos, se obtienen de la memoria principal y se almacenan en la 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 reside más cerca del procesador en términos del tiempo necesario para buscar y obtener datos con respecto a la memoria principal. [11] Las ventajas de usar caché se pueden probar calculando el tiempo de acceso promedio (AAT) para la jerarquía de memoria con y sin caché. [12]
Tiempo medio de acceso (AAT)
Los cachés, al ser de tamaño pequeño, pueden resultar en errores frecuentes, cuando una búsqueda en el caché no proporciona la información buscada, lo que resulta en una llamada a la memoria principal para obtener datos. Por lo tanto, la AAT se ve afectada por la tasa de errores de cada estructura desde la que busca los datos. [13]
El AAT para la memoria principal viene dado por la memoria principal de tiempo de acierto . AAT para cachés puede ser proporcionado por
- Caché de tiempo de acierto + ( caché de tasa de fallos × tiempo de penalización por fallos que se tarda en ir a la memoria principal después de que falta el caché ) [ se necesita más explicación ]
El tiempo de acierto para las cachés es menor que el tiempo de acierto para 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 requerida para el tiempo necesario para obtener datos debido a la forma en que se organizan y recorren las cachés. Por ejemplo, las memorias caché asignadas directamente que tienen el mismo tamaño suelen tener una tasa de error más alta que las memorias caché completamente asociativas. Esto también puede depender del punto de referencia de la computadora que prueba el procesador y del patrón de instrucciones. Pero el uso de una caché completamente asociativa puede resultar en un mayor consumo de energía, ya que tiene que buscar en toda la caché cada vez. Debido a esto, la compensación entre el consumo de energía (y el calor asociado) y el tamaño de la caché se vuelve crítica en el diseño de la caché. [13]
Evolución
En el caso de una falla de caché, el propósito de usar dicha estructura se volverá inútil y la computadora tendrá que ir a la memoria principal para buscar los datos requeridos. Sin embargo, con un caché de varios niveles , si la computadora pierde el caché más cercano al procesador (caché de nivel uno o L1), buscará en el siguiente nivel más cercano de caché e irá a la memoria principal solo si estos los métodos fallan. La tendencia general es mantener la caché L1 pequeña y a una distancia de 1 a 2 ciclos de reloj de la CPU del procesador, con los niveles más bajos de cachés aumentando de tamaño para almacenar más datos que L1, por lo tanto, son más distantes pero con menos fallas. Velocidad. Esto da como resultado una mejor AAT. [15] Los arquitectos pueden diseñar la cantidad de niveles de caché de acuerdo con sus requisitos después de verificar las compensaciones entre costo, AAT y tamaño. [16] [17]
Ganancias de rendimiento
Con el escalado tecnológico que permitió que los sistemas de memoria se pudieran instalar en un solo chip, la mayoría de los procesadores modernos tienen hasta tres o cuatro niveles de caché. [18] La reducción en el AAT puede entenderse con este ejemplo, donde la computadora verifica AAT para diferentes configuraciones hasta cachés L3.
Ejemplo : memoria principal = 50 ns , L1 = 1 ns con una tasa de errores del 10%, L2 = 5 ns con una tasa de errores del 1%), L3 = 10 ns con una tasa de errores del 0,2%.
- Sin caché, AAT = 50 ns
- Caché L1, AAT = 1 ns + (0,1 × 50 ns) = 6 ns
- Cachés L1–2, AAT = 1 ns + (0,1 × [5 ns + (0,01 × 50 ns)]) = 1,55 ns
- Cachés L1–3, AAT = 1 ns + (0.1 × [5 ns + (0.01 × [10 ns + (0.002 × 50 ns)])]) = 1.5101 ns
Desventajas
- La memoria caché tiene un costo marginal mayor que la memoria principal y, por lo tanto, puede aumentar el costo del sistema en general. [19]
- Los datos en caché se almacenan solo mientras se suministre energía a la caché.
- Mayor área en el chip requerida para el sistema de memoria. [20]
- Los beneficios pueden minimizarse o eliminarse en el caso de programas grandes con mala localidad temporal , que acceden frecuentemente a la memoria principal. [21]
Propiedades
Bancos versus unificados
En un caché almacenado, el caché se divide en un caché dedicado al almacenamiento de instrucciones y un caché dedicado a los datos. Por el contrario, un caché unificado contiene tanto las instrucciones como los datos en el mismo caché. [22] Durante un proceso, el procesador accede a la caché L1 (o la mayoría de la caché de nivel superior en relación con su conexión con el procesador) para recuperar tanto las instrucciones como los datos. Requerir que ambas acciones se implementen al mismo tiempo requiere múltiples 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 memorias caché y las unidades de procesamiento. [23] Para evitar esto, la caché L1 a menudo se organiza como una caché almacenada, lo que da como resultado menos puertos, menos hardware y, en general, menores tiempos de acceso. [13]
Los procesadores modernos tienen cachés divididos, y en sistemas con cachés multinivel, los cachés de nivel superior se pueden unificar mientras que los niveles inferiores se dividen. [24]
Políticas de inclusión
Si un bloque presente en la capa de caché superior también puede estar presente en el nivel de caché inferior se rige por la política de inclusión del sistema de memoria, que puede ser inclusiva, exclusiva o no inclusiva no exclusiva (NUEVE). [25]
Con una política inclusiva, todos los bloques presentes en la caché de nivel superior también deben estar presentes en la caché de nivel inferior. Cada componente de caché de nivel superior es un subconjunto del componente de caché de nivel inferior. En este caso, dado que hay una duplicación de bloques, existe un desperdicio de memoria. Sin embargo, la verificación es más rápida. [25]
Bajo una política exclusiva, todos los componentes de la jerarquía de la 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é inferior. Esto permite el uso completo de la memoria caché. Sin embargo, existe una alta latencia de acceso a la memoria. [26]
Las políticas anteriores requieren que se sigan un conjunto de reglas para implementarlas. Si ninguno de estos es forzado, la política de inclusión resultante se denomina no inclusiva no exclusiva (NUEVE). Esto significa que la caché de nivel superior puede estar presente o no en la caché de nivel inferior. [21]
Políticas de escritura
Hay dos políticas que definen la forma en que un bloque de caché modificado se actualizará en la memoria principal: escritura directa y posterior. [25]
En el caso de la política de escritura directa, siempre que cambia el valor del bloque de caché, también se modifica en la jerarquía de memoria de nivel inferior. [27] 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 reescritura, el bloque de caché modificado se actualizará en la jerarquía de nivel inferior solo cuando se desaloje el bloque de caché. Un "bit sucio" se adjunta a cada bloque de caché y se establece cada vez que se modifica el bloque de caché. [28] Durante el desalojo, los bloques con un bit sucio establecido se escribirán en la jerarquía de nivel inferior. Según esta política, existe el riesgo de pérdida de datos, ya que la copia modificada más recientemente de un dato solo se almacena en la caché y, por lo tanto, se deben observar algunas técnicas correctivas.
En el caso de una escritura en la que el byte no está presente en el bloque de caché, el byte puede llevarse a la caché según lo determinado por una política de asignación de escritura o no asignación de escritura. [25] La política de asignación de escritura establece que en caso de un error de escritura, el bloque se obtiene de la memoria principal y se coloca en la caché antes de escribir. [29] En la política de escritura sin asignación, si el bloque se pierde en la caché, se escribirá en la jerarquía de memoria de nivel inferior sin recuperar el bloque en la caché. [30]
Las combinaciones comunes de las políticas son "bloque de escritura", "asignación de escritura" y "escritura mediante escritura sin asignación" .
Un caché privado se asigna a un núcleo en particular en un procesador, y ningún otro núcleo puede acceder a él. 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 menor utilización de la capacidad. Sin embargo, este tipo de elección de diseño en una arquitectura de caché de múltiples capas también puede ser bueno para una latencia de acceso a datos más baja. [25] [31] [32]
Una caché compartida es una caché a la que pueden acceder varios núcleos. [33] Dado que es compartido, cada bloque en la caché es único y, por lo tanto, tiene una mayor tasa de aciertos ya que no habrá bloques duplicados. Sin embargo, la latencia del acceso a los datos puede aumentar a medida que varios núcleos intentan acceder a la misma caché. [34]
En los procesadores de varios núcleos , la elección del 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 (oa 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
Microarquitectura Intel Broadwell (2014)
- Caché L1 (instrucciones y datos): 64 kB por núcleo
- Caché L2: 256 kB por núcleo
- Caché L3: 2 MB a 6 MB compartidos
- Caché L4: 128 MB de eDRAM (solo modelos Iris Pro) [36]
Microarquitectura Intel Kaby Lake (2016)
- Caché L1 (instrucciones y datos): 64 kB por núcleo
- Caché L2: 256 kB por núcleo
- Caché L3: 2 MB a 8 MB compartidos [37]
Microarquitectura AMD Zen (2017)
- Caché L1: datos de 32 kB e instrucciones de 64 kB por núcleo, 4 vías
- Caché L2: 512 kB por núcleo, 4 vías inclusive
- Caché L3: 4 MB locales y remotos por CCX de 4 núcleos, 2 CCX por chiplet, 16 vías no incluidas. Hasta 16 MB en CPU de escritorio y 64 MB en CPU de servidor
Microarquitectura AMD Zen 2 (2019)
- Caché L1: datos de 32 kB e instrucciones de 32 kB por núcleo, 8 vías
- Caché L2: 512 kB por núcleo, 8 vías inclusive
- Caché L3: 16 MB locales por CCX de 4 núcleos, 2 CCX por chiplet, 16 vías no incluidas. Hasta 64 MB en CPU de escritorio y 256 MB en CPU de servidor
IBM Power 7
- Caché L1 (instrucciones y datos): cada banco de 64 bancos tiene puertos 2rd + 1wr 32 kB, asociativo de 8 vías, bloque 128B, escritura directa
- Caché L2: 256 kB, 8 vías, bloque 128B, escritura, incluida L1, latencia de acceso de 2 ns
- Caché L3 - 8 regiones de 4 MB (total 32 MB), región local 6 ns, remota 30 ns, cada región asociativa de 8 vías, matriz de datos DRAM, matriz de etiquetas SRAM [39]
Ver también
- Poder7
- Microarquitectura Intel Broadwell
- Microarquitectura Intel Kaby Lake
- Caché de CPU
- Jerarquía de memoria
- Latencia CAS
- Caché (informática)
Referencias
- ^ 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 ed.). ISBN 978-0128119051. OCLC 983459758 .
- ^ "Caché: por qué nivelarlo" (PDF) .
- ^ Ronald D. Miller; Lars I. Eriksson; Lee A Fleisher, 2014. Libro electrónico de anestesia de Miller. Ciencias de la salud de Elsevier. pag. 75. ISBN 978-0-323-28011-2 .
- ^ Albert Y. Zomaya, 2006. Manual de informática innovadora e inspirada en la naturaleza: integración de modelos clásicos con tecnologías emergentes. Springer Science & Business Media. pag. 298. ISBN 978-0-387-40532-2 .
- ^ Richard C. Dorf, 2018. Sensores, Nanociencia, Ingeniería Biomédica e Instrumentos: Sensores Nanociencia Ingeniería Biomédica. Prensa CRC. pag. 4. ISBN 978-1-4200-0316-1 .
- ^ David A. Patterson; John L. Hennessy, 2004. Organización y diseño de computadoras: la interfaz hardware / software, tercera edición. Elsevier. pag. 552. ISBN 978-0-08-050257-1 .
- ^ "Sir Maurice Vincent Wilkes | científico informático británico" . Encyclopædia Britannica . Consultado el 11 de diciembre de 2016 .
- ^ Berkeley, John L. Hennessy, Universidad de Stanford y David A. Patterson, Universidad de California. "Diseño de jerarquía de memoria - parte 6. El Intel Core i7, falacias y trampas" . EDN . Consultado el 11 de diciembre de 2016 .
- ^ Shane Cook, 2012. Programación CUDA: una guía para desarrolladores de computación en paralelo con GPU. Newnes. págs. 107–109. ISBN 978-0-12-415988-4 .
- ^ Bruce Hellingsworth; Patrick Hall; Howard Anderson; 2001. Computación Nacional Superior. Routledge. págs. 30–31. ISBN 978-0-7506-5230-8 .
- ^ Reeta Sahoo, Gagan Sahoo. Prácticas Infomáticas. Saraswati House Pvt Ltd. págs. 1–. ISBN 978-93-5199-433-6 .
- ^ Phillip A. Laplante; Seppo J. Ovaska; 2011. Diseño y análisis de sistemas en tiempo real: herramientas para el profesional. John Wiley e hijos. págs. 94–95. ISBN 978-1-118-13659-1 .
- ^ a b c Hennessey y Patterson. Arquitectura informática: un enfoque cuantitativo . Morgan Kaufmann . ISBN 9780123704900.
- ^ Cetin Kaya Koc, 2008. Ingeniería criptográfica. Springer Science & Business Media. págs. 479–480. ISBN 978-0-387-71817-0 .
- ^ 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 .
- ^ Harvey G. Cragon, 2000. Arquitectura e implementación de computadoras. Prensa de la Universidad de Cambridge. págs. 95–97. ISBN 978-0-521-65168-4 .
- ^ Baker Mohammad, 2013. Diseño de memoria integrada para sistemas en chip y multinúcleo. Springer Science & Business Media. págs. 11-14. ISBN 978-1-4614-8881-1 .
- ^ Gayde, William. "Cómo se diseñan y construyen las CPU" . Techspot . Consultado el 17 de agosto de 2019 .
- ^ Vojin G. Oklobdzija, 2017. Diseño y fabricación digital. Prensa CRC. pag. 4. ISBN 978-0-8493-8604-6 .
- ^ "Jerarquía de la memoria" .
- ^ a b Solihin, Yan (2016). Fundamentos de la arquitectura multinúcleo paralela . Chapman y Hall. pp. Capítulo 5: Introducción a la organización de la jerarquía de la memoria. ISBN 9781482211184.
- ^ Yan Solihin, 2015. Fundamentos de la arquitectura multinúcleo paralela. Prensa CRC. pag. 150. ISBN 978-1-4822-1119-1 .
- ^ Steve Heath, 2002. Diseño de sistemas integrados. Elsevier. pag. 106. ISBN 978-0-08-047756-5 .
- ^ Alan Clements, 2013. Arquitectura y organización informática: temas y variaciones. Aprendizaje Cengage. pag. 588. ISBN 1-285-41542-6 .
- ^ a b c d e Solihin, Yan (2009). Fundamentos de la Arquitectura de Computadores Paralelos . Publicación Solihin. pp. Capítulo 6: Introducción a la organización de la jerarquía de la memoria. ISBN 9780984163007.
- ^ "Evaluación de rendimiento de jerarquías de caché exclusivas" (PDF) .
- ^ David A. Patterson; John L. Hennessy; 2017. Organización y diseño de computadoras Edición RISC-V: La interfaz de hardware y software. Ciencia de Elsevier. págs. 386–387. ISBN 978-0-12-812276-1 .
- ^ Stefan Goedecker; Adolfy Hoisie; 2001. Optimización del rendimiento de códigos numéricos intensivos. SIAM. pag. 11. ISBN 978-0-89871-484-5 .
- ^ Harvey G. Cragon, 1996. Sistemas de memoria y procesadores canalizados. Jones y Bartlett Learning. pag. 47. ISBN 978-0-86720-474-2 .
- ^ David A. Patterson; John L. Hennessy; 2007. Organización y diseño de computadoras, impresión revisada, tercera edición: la interfaz hardware / software. Elsevier. pag. 484. ISBN 978-0-08-055033-6 .
- ^ "Técnicas de software para sistemas de múltiples núcleos de caché compartida" . 2018-05-24.
- ^ "Un esquema de particionamiento de caché NUCA compartido / privado adaptable para multiprocesadores de chips" (PDF) . Archivado desde el original (PDF) el 19 de octubre de 2016.
- ^ Akanksha Jain; Calvin Lin; 2019. Políticas de reemplazo de caché. Editores Morgan & Claypool. pag. 45. ISBN 978-1-68173-577-1 .
- ^ David Culler; Jaswinder Pal Singh; Anoop Gupta; 1999. Arquitectura de computadora paralela: un enfoque de hardware / software. Publicaciones profesionales del Golfo. pag. 436. ISBN 978-1-55860-343-1 .
- ↑ a b Stephen W. Keckler; Kunle Olukotun; H. Peter Hofstee; 2009. Procesadores y sistemas multinúcleo. Springer Science & Business Media. pag. 182. ISBN 978-1-4419-0263-4 .
- ^ a b "Microarquitectura Intel Broadwell" .
- ^ a b "Microarquitectura Intel Kaby Lake" .
- ^ "La arquitectura del procesador Nehalem y las plataformas SMP Nehalem-EP" (PDF) . Archivado desde el original (PDF) el 11 de agosto de 2014.
- ^ "IBM Power7" .