Articulo de referencia

Instrucciones de control de caché

En informática , una instrucción de control de caché es una sugerencia integrada en el flujo de instrucciones de un procesador destinada a mejorar el rendimiento de las cachés d...

En informática , una instrucción de control de caché es una sugerencia integrada en el flujo de instrucciones de un procesador destinada a mejorar el rendimiento de las cachés de hardware , utilizando el conocimiento previo del patrón de acceso a la memoria proporcionado por el programador o compilador . [ 1 ] Pueden reducir la contaminación de la caché , disminuir los requisitos de ancho de banda y evitar latencias, al proporcionar un mejor control sobre el conjunto de trabajo . La mayoría de las instrucciones de control de caché no afectan la semántica de un programa, aunque algunas sí pueden.

Ejemplos

Varias de estas instrucciones, con sus variantes, son compatibles con diversas arquitecturas de conjuntos de instrucciones de procesador , como ARM , MIPS , PowerPC y x86 .

Precarga

También denominada acceso a bloque de caché de datos , su efecto consiste en solicitar la carga de la línea de caché asociada a una dirección determinada. Esto se realiza mediante la PREFETCHinstrucción en el conjunto de instrucciones x86 . Algunas variantes omiten los niveles superiores de la jerarquía de caché , lo cual resulta útil en un contexto de "transmisión" para datos que se recorren una sola vez, en lugar de mantenerse en el conjunto de trabajo. La precarga debe realizarse con suficiente antelación para mitigar la latencia del acceso a la memoria, como en un bucle que recorre la memoria linealmente. La función intrínseca de la Colección del Compilador GNU se puede utilizar para invocar esto en los lenguajes de programación C o C++ .__builtin_prefetch

precarga de instrucciones

Una variante de la precarga para la caché de instrucciones.

Bloque de caché de datos asignado cero

Esta sugerencia se utiliza para preparar las líneas de caché antes de sobrescribir completamente su contenido. En este ejemplo, la CPU no necesita cargar nada de la memoria principal . El efecto semántico es equivalente a una asignación de memoria alineada de un bloque del tamaño de una línea de caché a cero, pero la operación es efectivamente gratuita.

Bloque de caché de datos invalidado

Esta sugerencia se utiliza para descartar líneas de caché sin guardar su contenido en la memoria principal. Se requiere precaución, ya que pueden producirse resultados incorrectos. A diferencia de otras sugerencias de caché, la semántica del programa se modifica significativamente. Se utiliza junto con allocate zerola gestión de datos temporales, lo que ahorra ancho de banda innecesario en la memoria principal y reduce la saturación de la caché.

vaciado del bloque de caché de datos

Esta sugerencia solicita la eliminación inmediata de una línea de caché, dejando espacio para futuras asignaciones. Se utiliza cuando se sabe que los datos ya no forman parte del conjunto de trabajo .

Otros consejos

Algunos procesadores admiten una variante de las instrucciones de carga y almacenamiento que también implica sugerencias de caché. Un ejemplo se encuentra load lasten el conjunto de instrucciones PowerPC , que sugiere que los datos se usarán solo una vez; es decir, la línea de caché en cuestión puede colocarse al principio de la cola de desalojo, manteniéndola en uso si aún se necesita directamente.

Alternativas

Precarga automática

En los últimos tiempos, las instrucciones de control de caché se han vuelto menos populares, ya que los diseños de procesadores de aplicaciones cada vez más avanzados de Intel y ARM dedican más transistores a acelerar el código escrito en lenguajes tradicionales, por ejemplo, mediante la precarga automática, con hardware para detectar patrones de acceso lineal en tiempo real. Sin embargo, estas técnicas pueden seguir siendo válidas para procesadores orientados al rendimiento, que presentan una relación rendimiento-latencia diferente y pueden preferir dedicar más área a las unidades de ejecución.

Memoria de bloc de notas

Algunos procesadores admiten memoria temporal (scratchpad) donde se pueden almacenar datos provisionales, y acceso directo a memoria (DMA) para transferir datos desde y hacia la memoria principal cuando sea necesario. Este enfoque lo utilizan el procesador Cell y algunos sistemas embebidos . Esto permite un mayor control sobre el tráfico y la localidad de la memoria (ya que el conjunto de trabajo se gestiona mediante transferencias explícitas) y elimina la necesidad de una costosa coherencia de caché en una máquina multinúcleo .

La desventaja es que requiere técnicas de programación significativamente diferentes. Es muy difícil adaptar programas escritos en lenguajes tradicionales como C y C++, que presentan al programador una vista uniforme de un gran espacio de direcciones (una ilusión simulada por las cachés). Un microprocesador tradicional puede ejecutar más fácilmente código heredado, que luego puede acelerarse mediante instrucciones de control de caché, mientras que una máquina basada en memoria caché requiere programación específica desde cero. Las instrucciones de control de caché son específicas para un tamaño de línea de caché determinado, que en la práctica puede variar entre generaciones de procesadores de la misma familia arquitectónica. Las cachés también pueden ayudar a coalescer lecturas y escrituras de patrones de acceso menos predecibles (por ejemplo, durante el mapeo de texturas ), mientras que el DMA de memoria caché requiere reelaborar algoritmos para recorridos "lineales" más predecibles.

Por ello, los blocs de notas son generalmente más difíciles de usar con los modelos de programación tradicionales, aunque los modelos de flujo de datos (como TensorFlow ) podrían ser más adecuados.

obtención de vector

Los procesadores vectoriales (por ejemplo , las unidades de procesamiento gráfico (GPU) modernas y los procesadores Xeon Phi ) utilizan paralelismo masivo para lograr un alto rendimiento y, al mismo tiempo, minimizar la latencia de la memoria (reduciendo la necesidad de precarga). Muchas operaciones de lectura se ejecutan en paralelo para las invocaciones posteriores de un núcleo de cómputo ; los cálculos pueden quedar en espera de datos futuros, mientras que las unidades de ejecución se dedican a procesar datos de solicitudes anteriores que ya han llegado. Esto facilita su aprovechamiento por parte de los programadores junto con los modelos de programación adecuados ( núcleos de cómputo ), pero dificulta su aplicación a la programación de propósito general.

La desventaja es que pueden almacenarse muchas copias de estados temporales en la memoria local de un elemento de procesamiento , a la espera de datos en tránsito.

Referencias

  1. "Manual de Power PC, ver 1.10.3 Instrucciones de control de caché" (PDF) . Archivado del original (PDF) el 13/10/2016 . Consultado el 11/06/2016 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Cache_control_instruction&oldid=1310631307 "