Caché de seguimiento - Trace cache

Image
Funcionamiento de una caché de seguimiento

En la arquitectura informática , un caché de seguimiento o caché de seguimiento de ejecución es un caché de instrucciones especializado que almacena el flujo dinámico de instrucciones conocido como seguimiento . Ayuda a aumentar el ancho de banda de búsqueda de instrucciones y a disminuir el consumo de energía (en el caso de Intel Pentium 4 ) almacenando rastros de instrucciones que ya se han obtenido y descodificado. Un procesador de seguimiento es una arquitectura diseñada en torno a la caché de seguimiento y procesa las instrucciones con granularidad de nivel de seguimiento. La teoría matemática formal de las trazas se describe mediante trazas monoides .

Fondo

La primera publicación académica de la caché de seguimiento fue "Caché de seguimiento: un enfoque de baja latencia para la obtención de instrucciones de gran ancho de banda". Este artículo ampliamente reconocido fue presentado por Eric Rotenberg, Steve Bennett y Jim Smith en la conferencia del Simposio Internacional de Microarquitectura (MICRO) de 1996 . Una publicación anterior es la patente estadounidense 5381533, de Alex Peleg y Uri Weiser de Intel, "Memoria caché de instrucciones de flujo dinámico organizada alrededor de segmentos de seguimiento independientes de la línea de dirección virtual", una continuación de una solicitud presentada en 1992, luego abandonada.

Necesidad

Los procesadores superescalares más amplios exigen que se obtengan varias instrucciones en un solo ciclo para obtener un mayor rendimiento. Las instrucciones que se van a buscar no siempre están en ubicaciones de memoria contiguas ( bloques básicos ) debido a las instrucciones de salto y bifurcación . Por lo tanto, los procesadores necesitan soporte lógico y de hardware adicional para obtener y alinear dichas instrucciones de bloques básicos no contiguos. Si se predice que varias ramas no se han tomado , los procesadores pueden obtener instrucciones de varios bloques básicos contiguos en un solo ciclo. Sin embargo, si alguna de las ramas se predice como tomada , entonces el procesador debe buscar instrucciones de la ruta tomada en ese mismo ciclo. Esto limita la capacidad de recuperación de un procesador.

Image
Bloques básicos de un bucle if-else simple

Considere estos cuatro bloques básicos ( A , B , C , D ) como se muestra en la figura que corresponden a una simple else if- bucle. Estos bloques se almacenarán de forma contigua como ABCD en la memoria. Si la rama D se prevé no se toma-, la unidad puede costar ir a buscar los elementos básicos A , B , C que se colocan de forma contigua. Sin embargo, si D se predice tomado , la ha podido recuperar la unidad tiene a buscar A , B , D que se colocan de forma no contigua. Por lo tanto, recuperar estos bloques que no están colocados contiguos en un solo ciclo será muy difícil. Entonces, en situaciones como estas, la caché de seguimiento ayuda al procesador.

Una vez recuperadas, la caché de seguimiento almacena las instrucciones en su secuencia dinámica. Cuando se vuelven a encontrar estas instrucciones, la caché de seguimiento permite que la unidad de búsqueda de instrucciones de un procesador obtenga varios bloques básicos sin tener que preocuparse por las ramas en el flujo de ejecución. Las instrucciones se almacenarán en la caché de seguimiento después de que se hayan decodificado o cuando se retiren. Sin embargo, la secuencia de instrucciones es especulativa si se almacenan justo después de la etapa de decodificación.

Estructura de seguimiento

Un rastreo, también llamado secuencia de instrucción dinámica, es una entrada en la caché de rastreo. Puede caracterizarse por un número máximo de instrucciones y un máximo de bloques básicos . Los seguimientos pueden comenzar en cualquier instrucción dinámica. Múltiples trazas pueden tener la misma instrucción de inicio, es decir, el mismo contador de programa de inicio (PC) e instrucciones de diferentes bloques básicos según los resultados de la rama. Para la figura anterior, ABC y ABD son trazas válidas. Ambos comienzan en la misma PC (dirección de A) y tienen diferentes bloques básicos según la predicción de D.

Los seguimientos generalmente terminan cuando ocurre una de las siguientes situaciones:

  1. El seguimiento se llenó con el número máximo permitido de instrucciones
  2. Trace tiene bloques básicos máximos permitidos
  3. Instrucciones de devolución
  4. Ramas indirectas
  5. Llamadas al sistema

Información de control de seguimiento

Un solo rastro tendrá la siguiente información:

  • PC de inicio - PC de la primera instrucción en trace
  • Bandera de rama - ( bloques básicos máximos -1 ) predicciones de rama
  • Máscara de rama: número de ramas en la traza y si la traza termina en una rama o no
  • Trace fall through - Próxima PC si la última instrucción no es una rama o no es una rama
  • Objetivo de seguimiento: dirección del objetivo tomado de la última rama

Diseño de caché de seguimiento

A continuación se muestran los factores que deben tenerse en cuenta al diseñar una caché de seguimiento.

  • Políticas de selección de trazas: número máximo de instrucciones y bloques básicos máximos en una traza
  • Asociatividad : número de formas en que una caché puede tener
  • Método de indexación de caché: concatenación o XOR con bits de PC
  • Asociatividad de ruta: las trazas con la misma PC inicial pero con diferentes bloques básicos se pueden asignar a diferentes conjuntos
  • Opciones de relleno de caché de seguimiento -
    1. Después de la etapa de decodificación (especulativa)
    2. Después de la etapa de retiro

Una caché de seguimiento no se encuentra en la ruta crítica de búsqueda de instrucciones

Lógica de acertar / fallar

Las líneas de seguimiento se almacenan en la caché de seguimiento según la PC de la primera instrucción del seguimiento y un conjunto de predicciones de bifurcación. Esto permite almacenar diferentes rutas de seguimiento que comienzan en la misma dirección, cada una de las cuales representa diferentes resultados de rama. Este método de etiquetado ayuda a proporcionar asociatividad de ruta a la caché de seguimiento. Otro método puede incluir tener solo la PC de inicio como etiqueta en la caché de seguimiento. En la etapa de búsqueda de instrucciones de una canalización , la PC actual junto con un conjunto de predicciones de bifurcaciones se verifican en la caché de seguimiento en busca de un acierto . Si hay un acierto, se proporciona una línea de rastreo para recuperar la unidad que no tiene que ir a un caché normal ni a la memoria para estas instrucciones. La caché de seguimiento continúa alimentando la unidad de recuperación hasta que finaliza la línea de seguimiento o hasta que hay una predicción errónea en la canalización. Si hay una falla, se comienza a construir una nueva traza.

El caché de seguimiento de ejecución del Pentium 4 almacena microoperaciones resultantes de la decodificación de instrucciones x86 , proporcionando también la funcionalidad de un caché de microoperaciones. Con esto, la próxima vez que se necesite una instrucción, no es necesario volver a decodificarla en microoperaciones.

Desventajas

Las desventajas de la caché de seguimiento son:

  1. Almacenamiento de instrucciones redundante entre la caché de seguimiento y la caché de instrucciones y dentro de la propia caché de seguimiento.
  2. Ineficiencia energética y complejidad del hardware

Caché de seguimiento de ejecución

Dentro de la caché L1 de las CPU NetBurst , Intel incorporó su caché de seguimiento de ejecución. Almacena microoperaciones decodificadas , de modo que al ejecutar una nueva instrucción, en lugar de recuperar y decodificar la instrucción nuevamente, la CPU accede directamente a las microoperaciones decodificadas desde la caché de seguimiento, lo que ahorra un tiempo considerable. Además, las microoperaciones se almacenan en caché en su ruta de ejecución prevista, lo que significa que cuando la CPU extrae instrucciones de la caché, ya están presentes en el orden correcto de ejecución. Más tarde, Intel introdujo un concepto similar pero más simple con Sandy Bridge llamado caché de microoperaciones (caché UOP).

Ver también

Referencias