Constellation Knowledge Network - Preguntas y respuestas sobre la interpretación de los sueños - Cómo utilizar la caché DSP

Cómo utilizar la caché DSP

La caché en el procesador es una memoria de alta velocidad almacenada alrededor del procesador, que se puede usar para almacenar algunas instrucciones durante las operaciones y el procesamiento para acelerar las operaciones.

Este artículo compara la caché con la memoria ordinaria del sistema y luego presenta algunas teorías y terminología básicas de la caché, así como la importancia de la caché en la arquitectura de procesador de alta velocidad. Basado en la estructura DSP TMS320C64x de TI, este artículo se centrará en cómo funciona el caché, cómo configurarlo y cómo usarlo correctamente. Este artículo se centrará en la coherencia del caché en todo momento.

Estructura de la memoria

Cuando la CPU accede a la memoria externa, no se produce la prohibición de acceso a la memoria. Y no habrá ningún retraso en el acceso al acceder a la memoria interna.

Cuando el reloj de la CPU aumenta a 600 MHZ, solo cuando la velocidad de la memoria también aumenta a 600 MHZ, aparecerá el estado de espera de acceso. Desafortunadamente, en la mayoría de los casos, una memoria interna que funcione a 600 MHZ a la misma frecuencia será muy costosa. 300MHZ no es una buena opción porque reducirá en gran medida la frecuencia de la CPU. Imagine que un algoritmo necesita acceder a la memoria en cada ciclo, y cada vez que accede a la memoria, debe esperar un ciclo, duplicando así el ciclo de acceso y compensando así la doble frecuencia de trabajo de la CPU.

La solución es utilizar memoria multinivel. La memoria más cercana a la CPU consta de un bloque rápido pero pequeño y no hay demora para acceder a él. Ligeramente diferente a algunas CPU, utiliza una memoria más grande pero un poco más lenta. Para la memoria de bajo nivel, la memoria más cercana a la CPU suele ser la memoria caché.

Reglas de ubicación

Por supuesto, esta solución debe funcionar cuando la CPU puede acceder más rápido a la memoria más cercana. Esta situación se aplica a la mayoría de las CPU debido a la ley de ubicación. Esto significa que dentro de un período de tiempo específico, el programa solo accede a una pequeña región relevante de todo el espacio de direcciones. Esto incluye los siguientes dos tipos básicos de ubicación:

1. Ley de ubicación espacial: es más probable que se acceda a los recursos que rodean un recurso al que se acaba de acceder.

2. Reglas de tiempo y ubicación: es más probable que se acceda a los recursos a los que se acaba de acceder en un momento determinado del pasado inmediatamente en el futuro.

Las reglas de ubicación espacial están determinadas por el estilo de programación del programa informático. Normalmente, los datos relevantes se almacenan continuamente en la memoria. Por ejemplo, los tipos con el mismo * * siempre colocan el primer elemento en la primera columna, luego el segundo elemento, y así sucesivamente. De la misma manera, la ley del tiempo y la posición también se forma debido a las estructuras contenidas en el programa, como las estructuras de bucle, que llaman a las mismas instrucciones (o incluso a los mismos datos) y las ejecutan repetidamente.

La Figura 2 muestra la regla de posición espacial, que describe un filtro FIR de sexto orden. Para calcular la salida y[0], se leen seis muestras de datos del búfer de datos x[] (el valor se determina mediante el método de presupuesto de los datos de muestra a los que se accede en la memoria). Cuando se completa el acceso a los datos, el controlador de caché recupera x[0] y una serie de direcciones de valores de muestra de la memoria. Esta serie de valores de dirección se denomina cadena de caché. Si la cadena de datos se recupera nuevamente de la memoria lenta, se producirán algunos ciclos de latencia de la CPU. El propósito de esto es que al realizar el cálculo a continuación, sea posible acceder a estos números cerca de x[0] inmediatamente. Este principio se aplica a los filtros FIR porque se accederá inmediatamente a los siguientes cinco valores de muestra (x[1]-x[5]). El proceso de acceso a estos cinco valores se completará en el caché en lugar de en la memoria de baja velocidad, por lo que no habrá período de demora.

Al calcular la siguiente salida y[1], se utilizarán nuevamente los cinco valores de muestra (x[1]-x[5]), y solo un valor de muestra (x[6]) es nuevo. Todos los valores de muestra se han recuperado en la memoria caché sin ningún retraso de la CPU. Este ejemplo de datos utilizados previamente que se reutilizan en el procesamiento de datos ilustra bien los principios de tiempo y ubicación.

El almacenamiento en caché se basa en acceder a los datos de forma local en el tiempo y el espacio. Por lo tanto, el acceso a la memoria de baja velocidad se reduce considerablemente y la mayor parte del acceso a los datos se realiza mediante la memoria caché de la frecuencia operativa de la CPU.

Tasa de memoria:

Los sistemas de caché suelen incluir tres niveles.

1 y el caché de nivel 1 (L1) están ubicados en el chip de la CPU y se ejecutan a la frecuencia operativa de la CPU.

2. El caché de segundo nivel (L2) también se encuentra en el chip y es más lento y más grande que el L1.

3. La caché de tercer nivel (L3) se encuentra fuera de la CPU y es la memoria más grande y más lenta.

Los factores que corresponden a la ejecución de cahce en cada nivel dependen del espaciado de caché del procesador. La Tabla 1 muestra los tiempos de respuesta típicos.

Cuando la unidad aritmética necesita recuperar datos de la memoria, primero busca en el caché de nivel más alto y luego en el segundo caché más alto. Si se encuentra en el caché, se denomina acierto. De lo contrario se llama fallo.

El rendimiento de un sistema de caché depende del número de aciertos de la aplicación de caché, también conocido como tasa de aciertos. Para un nivel específico de caché, una alta tasa de aciertos de caché significa un mayor rendimiento. El rendimiento de todo el sistema de caché depende de la tasa de aciertos de los cachés en todos los niveles.

Por ejemplo, en un sistema de caché, la tasa de aciertos del caché L1 de primer nivel es del 70%, la tasa de aciertos del caché L2 de segundo nivel es del 20%, la tasa de aciertos del caché L3 de tercer nivel es del 5% y el la memoria total es del 5%. Por lo tanto, el rendimiento de la memoria unificada de este sistema según la Figura 3 es el siguiente:

(0,7 * 4) + (0,2 * 5) + (0,05 * 30) + (0,05 * 220) = 16,30 nanosegundos

Para ilustrar este concepto, tomamos como ejemplo la estructura de memoria DSP TMS320C64x de TI. (Tabla 4) Contiene un caché interno de dos niveles y una memoria externa. l La CPU puede acceder a 1 caché sin demora. La memoria L2 se puede programar y asignar como L2SRAM (memoria direccionable en chip) y L2cache. En cualquier configuración, solo se puede acceder a la memoria L2 una vez cada dos ciclos. El tamaño de L2 depende del chip, pero siempre es mucho mayor que L1. Tomando como ejemplo el DSP TMS320C6454, el tamaño de L2 es 1 MByte. El C64x DSP admite hasta 2 GB de memoria externa. La velocidad de la memoria depende del tipo de proceso utilizado en la memoria, la mayoría de los cuales rondan los 100 MHZ. En la Figura 3, todos los cachés y canales de datos son controlados automáticamente por el controlador de caché.

Actualización de datos de caché

Debido a que el caché también es parte de la copia de seguridad en la memoria principal, es muy importante si el caché puede reflejar los datos en la memoria principal en tiempo real. . Cuando los datos en el caché cambian pero los datos en la memoria principal no cambian, los datos en el caché se denominan datos "sucios". Cuando los datos cambian en la memoria principal pero no cambian en tiempo real en la caché, esos datos en la caché se denominan datos "perezosos".

El controlador de caché utiliza una serie de técnicas para mantener la coherencia del caché, garantizando así que toda la información útil se almacene en el caché en lugar de datos retrasados. Las operaciones de "supervisión" y "escritura reescrita" son dos formas de mantener la coherencia de la caché. "Monitoreo" se refiere a si el caché se mueve en la memoria principal para afectar la dirección del caché. Si la memoria caché detecta dicha transferencia, se actualizará rápidamente para coincidir con la memoria principal. Este proceso de copiar datos en la memoria principal se denomina operación de "escritura regresiva".

Debido a que el caché es más pequeño que la memoria principal, a menudo se llena. Cuando esto sucede, cualquier dato nuevo que se mueva al caché reemplazará los datos existentes. Hay muchas formas de determinar el reemplazo de datos. Por ejemplo, reemplazo aleatorio, reemplazo de primero en entrar, primero en salir y reemplazo utilizado menos recientemente. La mayoría de los procesadores utilizan el método de reemplazo utilizado menos recientemente. Esto reemplaza los datos utilizados menos recientemente con los datos más recientes. Este método proviene de las leyes del tiempo y el lugar.

Caché de mapeo directo

El caché se puede configurar en "mapeado directo" o "modo federado". Para explicar estos términos, tomemos como ejemplo el L1Pcache del C64X, que consta de 512 columnas y 32 bytes. Cada fila se asigna a alguna dirección de memoria fija. Por ejemplo:

Las direcciones de 0000h a 0019h a menudo se almacenan en caché en la columna 0.

Las direcciones de 0020h a 0039h suelen estar ordenadas en 1 columna por el caché.

Las direcciones 3FE0h a 3FFFh suelen almacenarse en caché en 511 columnas.

Entonces, una vez que necesitamos obtener la dirección 4000h, debido a que la capacidad de la caché se ha agotado, las direcciones de 4000h a 4019h deben comenzar nuevamente desde la columna 0.

Para preservar los datos replicados, cada fila de L1Pcache incluye:

Una señal válida que indica si la columna almacenada en caché contiene información útil.

Es necesaria una etiqueta cuyo valor sean los 18 bits superiores de la dirección porque la columna especificada puede contener datos para diferentes direcciones. Por ejemplo, la columna 0 puede contener datos de 0000h a 0019h, o de 4000h a 4019h.

Un dato configurable, equivalente a la dirección del bit 5 al bit 13. Para el mapeo directo, los datos para esta configuración son los mismos que el valor de esta columna. El modo federado es más complejo y se analizará más adelante.

Ahora veamos qué sucede cuando la CPU accede a la dirección 0020h. Supongamos que el caché no es completamente válido, lo que significa que ninguna de las columnas contiene datos válidos. Cuando la CPU emite una solicitud de acceso a la dirección 20h, el controlador de caché comienza la consulta en una ubicación donde algunos bits de dirección (por ejemplo, bits 5 a 13) son iguales a la dirección de la columna. Cuando el valor de la dirección de esta parte (del bit 5 al bit 13) se establece en 1, la dirección a consultar coincide. El controlador continuará verificando si los bits de bandera en la primera columna también coinciden con los 18 bits superiores de las direcciones 0020h a 0039h. Cuando todo esto se completa, se verifica el bit de datos válido para ver si el caché tiene datos válidos almacenados. Si el bit de datos válido es 0, el controlador de caché registra un error.

Esta operación fallida hará que el controlador lea los datos 0020h-0039h de la columna de la memoria y establezca el bit de datos válido en 1. Al mismo tiempo, algunos valores de dirección se almacenan en la RAM de etiquetas. Los datos obtenidos se transferirán a la CPU para completar la operación de acceso.

Si se accede nuevamente a la dirección 0020h, el controlador de caché recuperará la dirección nuevamente y verificará su configurador y bandera.

Cuando el bit de datos válido es 1, el controlador registrará una operación de acceso, por lo que los datos en la columna de caché también se enviarán a la CPU para completar toda la operación de acceso.

Modo de configuración federada

El modo de configuración federada es la continuación del modo de mapeo directo. En el modo de mapeo directo, cada configuración contiene solo una columna. En el modo de configuración federada, cada configuración contiene varias columnas, lo que se denomina modo multidireccional. La Figura 5 toma L1D de C64x DSP como ejemplo para ilustrar dicho caché configurado conjuntamente. Se trata de una caché de conjunto de unión bidireccional con una capacidad total de 64 bytes * * * 16 k bytes.

Para guardar datos, cada columna de L1Dcache contiene lo siguiente:

El bit usado menos recientemente se usa para indicar qué carreteras se han usado raramente recientemente (esto no se usa en L1P) ;

Bits de datos sucios que indican si la columna de caché coincide con la capacidad de la memoria principal (esto no se usa en L1P);

Bits de datos válidos que indican si la columna de caché contiene datos válidos;

p>

El bit de bandera es equivalente a los 18 bits superiores de la dirección;

Un dato de configuración es equivalente a la dirección de 5 a 13 bits.

Los aciertos y errores se determinan de la misma manera que para los cachés mapeados directos. La diferencia es que en este momento se necesitan dos bits de bandera, un bit de bandera registra en qué canal están los datos solicitados. Si se accede a los datos de la ruta 0, se accede a los datos de la columna de la ruta 0. Si se accede a los datos de la ruta 1, se accede a los datos de la columna de la ruta 1.

Si ambos métodos fallan, los datos se asignarán desde la memoria. El bit utilizado menos recientemente determinará cómo se asignan los datos, de forma similar a una operación de conmutación. Si el bit utilizado menos recientemente de la columna asignada 0 se establece en 0, los datos se asignarán a la primera columna. Independientemente de si el acceso a la columna de caché es de lectura o de escritura, se cambiará el indicador utilizado menos recientemente. Por ejemplo, si lee la columna del canal 0, el bit utilizado menos recientemente cambiará a 1. Dado que el bit utilizado menos recientemente solo registra operaciones fallidas, su estado se actualiza cada vez, ya sea un acierto o un error, una lectura o una escritura.

Para L1P, L1D es un caché asignado para lectura, independientemente de si la operación de lectura es impredecible al aplicar nuevos datos en la memoria. Durante una operación de escritura perdida, los datos se transfieren de la memoria de escritura a la memoria, sin pasar por el dcace L1. Durante una operación de escritura, los datos se escriben en la memoria caché en lugar de escribirse inmediatamente en la memoria. Cuando el acceso de escritura de una CPU cambia los datos, el contenido de la caché se confirma en la caché de reescritura y luego los datos se escriben en la memoria.

El bit de datos sucios indica que cuando los datos en el caché se modifican mediante una operación de escritura, los nuevos datos modificados aún no se han escrito en la memoria principal. Inicialmente, al bit de datos sucios se le asignará un valor de 0. Una vez que la CPU escribe una columna, el bit de datos sucios pasará a ser 1. Cuando la columna se expulsa de la memoria caché, los datos se vuelven a escribir en la memoria principal. Esto sucede cuando se produce un error de lectura y se solicitan nuevos datos de la columna de datos sucios. El comando de reescritura se pasará al controlador de caché para generar la operación de reescritura, pero esto no sucede con frecuencia.

Optimización del rendimiento de la caché

Existen tres situaciones de error:

Error inevitable (también llamado primer error): este error ocurre cuando los datos se colocan por primera vez en el caché. . Para distinguirlo de las dos formas siguientes de perderse algo, se puede evitar.

Error de conflicto: se produce un error cuando se reemplaza una columna antes de reutilizarla.

Falta capacidad: Esto ocurre cuando se agota la capacidad de la caché. Las pérdidas de capacidad son una forma de colisión.

Para cada patrón de error, hay un retraso cuando el controlador coloca los datos de la memoria en el caché. Para un mejor rendimiento, el contenido de cada columna se debe reutilizar tanto como sea posible antes de reemplazarlo. Reutilizar una columna para diferentes ubicaciones mejora el acceso a ubicaciones espaciales, mientras que reutilizar una columna mejora el acceso a ubicaciones temporales. Este es un almacenamiento de caché optimizado.

Criterios básicos de actuación.

Por ejemplo, el rendimiento de la caché es relativamente alto cuando se accede a la memoria caché con frecuencia. Este patrón de acceso accederá repetidamente a la columna anterior antes de acceder a la siguiente columna. Por ejemplo, el siguiente código tiene una tasa de aciertos muy alta:

El rendimiento del siguiente código es el mismo que el anterior, porque hay un gran salto en el acceso a la memoria, es decir, antes Al acceder a la siguiente columna, se reduce la tasa de acceso a la columna anterior.

Si una columna se expulsa del caché y es necesario volver a visitarla, se debe volver a escribir en el caché. Por lo tanto, cómo evitar este desalojo se vuelve muy importante, e identificar las razones de este desalojo puede ayudarnos a evitar el próximo desalojo.

Como se mencionó anteriormente, el motivo de la capacidad faltante es que la capacidad de la caché es menor que la capacidad de la memoria principal. Si la capacidad es insuficiente, la forma más sencilla es aumentar la capacidad de la caché. Por ejemplo,

L2cache en el DSP C64x se puede configurar como una combinación de caché y SRAM. Si falta mucha capacidad, los programadores pueden usar más la memoria L2 como caché. Una solución alternativa

es reducir la cantidad de datos necesarios.

Si se produce una colisión, la clave es reorganizar la disposición de los datos para que los datos de tiempo más recientes puedan asignarse a otras rutas. (Para el mapeo directo, esto es similar a mapear datos en diferentes filas.

) Cambiar la disposición de la memoria permite que los datos se ubiquen en diferentes ubicaciones de la memoria para que no haya conflictos. Como alternativa, desde una perspectiva de diseño de hardware, el modo de conjuntos múltiples puede resultar en un modo de múltiples columnas. Por lo tanto, dos columnas en la memoria asignadas a la misma configuración se pueden aplicar en la caché sin conflictos.

上篇: ¿Qué colores son tabú para las personas nacidas en el año de la Madera? ¿Qué color es el adecuado para las personas que pertenecen al año de la madera? 下篇: ¿Se puede colocar Shan Tai Chi en el dormitorio?
Artículos populares