<< Chapter < Page Chapter >> Page >

Si, partiendo de los registros, descendemos en la jerarquía de memoria, encontramos las caches. Se trata de pequeñas cantidades de SRAM que almacenan un subconjunto de lo contenidos de la memoria. La esperanza es que la cache tenga el subconjunto adecuado de memoria principal en el momento adecuado.

La arquitectura de la caché tuvo que cambiar conforme la duración del ciclo de los procesadores ha mejorado. Los procesadores son tan rápidos que ni siquiera los chips de SRAM son lo suficientemente rápidos. Ello ha conducido a un enfoque de cache multinivel con uno, o incluso dos, niveles de la misma implementadas como parte del procesador. [link] muestra la velocidad aproximada para acceder a la jerarquía de memoria de una DEC Alpha 21164 a 500 MHz.

Velocidades de acceso a la memoria en una DEC Alpha 21164.
Registros 2 ns
Nivel 1 en el chip 4 ns
Nivel 2 en el chip 5 ns
Nivel 3 fuera del chip 30 ns
Memoria 220 ns

Cuando puede encontrarse en una cache cada uno de los datos referenciados, se dice que se tiene una tasa de acierto del 100%. Generalmente, se considera que una tasa de acierto del 90% o superior es buena para una cache de Nivel 1 (L1). En la cache de Nivel 2 (L2), se considera aceptable una tasa de acierto superior al 50%. De ahí hacia abajo, el rendimiento de la aplicación puede caer de forma vertiginosa.

Se puede caracterizar el rendimiento promedio de lectura de la jerarquía de memoria al examinar la probabilidad de que una carga particular se satisfaga en un nivel particular de la jerarquía. Por ejemplo, asumamos una arquitectura de memoria con una velocidad de cache L1 de 10 ns, una velocidad en L2 de 30 ns y una velocidad de memoria de 300 ns. Si una referencia a memoria dada se satisface mediante la cache L1 el 75% de las veces, 20% de ellas en la L2, y 5% del tiempo en la memoria principal, el rendimiento promedio de la memoria será:

(0.75 * 10 ) + ( 0.20 * 30 ) + ( 0.05 * 300 ) = 28.5 ns

Puede usted notar fácilmente por qué es tan importante tener una tasa de éxito de 90% o más en la cache L1.

Dado que una memoria cache almacena sólo un subconjunto de la memoria principal en un momento dado, es importante mantener un índice de cuáles áreas de la memoria principal están almacenadas actualmente en la cache. Para reducir la cantidad de espacio que debe dedicarse a seguir la pista de las áreas de memoria en cache, ésta se divide en un número de ranuras de igual tamaño, conocidas como líneas . Cada línea contiene cierto número de localidades secuenciales de memoria, generalmente de cuatro a dieciseis números enteros o reales. Mientras que los datos adentro de una línea vienen todos de la misma porción de memoria, otras líneas pueden contener datos de partes alejadas de su programa, o tal vez datos provenientes de los programas de alguien más, como en [link] . Cuando usted solicita algo de la memoria, la computadora comprueba si tales datos están disponibles en alguna de esas líneas de cache. Si es el caso, los datos se regresan con un retraso mínimo. Si no, puede que su programa se retrase un poco, mientras se carga una nueva línea de la memoria principal. Por supuesto, si se trajo nuevo contenido para una línea, el contenido de ésta debió primero desalojarse. Si tiene suerte, no será aquella que contenga los datos que necesitará justamente después.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask