• No se han encontrado resultados

Estructura y configuración de los CCCR

Monitorización del rendimiento

6. Estructura y configuración de los CCCR

El Intel® Pentium® 4 contiene 18 registros CCCR, uno asociado a cada

contador de rendimiento. Estos registros MSR son registros de 64 bits que se utilizan para contar y filtrar eventos, configurar contadores en cascada o lanzar interrupciones al producirse el desbordamiento de su contador asociado.

Figura 13. Estructura de un CCCR del Intel® Pentium® 4 *Sólo para los procesadores Intel® Pentium® 4 con la tecnología Hyper-Threading activada. Para los demás Intel® Pentium® 4, estos bits no se usan y deben fijarse a 1.

**Sólo para los procesadores Intel® Pentium® 4 con la tecnología Hyper-Threading activada. Para los demás Intel® Pentium® 4, este bit no se usa.

La figura 5 muestra la estructura y campos de un CCCR. Cada CCCR contiene los siguientes campos:

Enable, bit 12

Cuando este bit está activado, se activa la cuenta. Si está a cero, el contador no pude incrementarse. Al hacer un reset, este bit se pone a cero.

ESCR Select , bits [13:15]

Indica qué registro ESCR está asociado al propio CCCR y su contador. Una vez establecido este vínculo, los eventos que detecte el ESCR asociado serán notificados al par

contador/CCCR para que se incremente la cuenta.

Active thread, bits [16:17]

Este campo activa un filtrado de eventos basado en el estado (activo o inactivo) de los procesadores lógicos. Este campo sólo

es configurable en procesadores Intel® Pentium® 4 con tecnología Hyper-Threading.

Las posibles opciones para este campo son:

00 - ninguno, cuenta solamente cuando ninguno de los dos procesadores lógicos está activo. Este caso,

aparentemente extraño puede darse en ciertas

circunstancias. Por ejemplo, imaginemos un sistema dual (dos procesadores físicos) donde el procesador físico 0 inicia una transacción de memoria que provoca que la caché del procesador físico 1 tenga que servir algún dato. Si en este procesador físico 1 se mide un evento

relacionado con los accesos a la memoria caché usando un CCCR con el Active thread en modo ninguno, se

contabilizarían los accesos a la caché cuando ambos procesadores lógico estén inactivos.

01 - único, cuenta solamente cua ndo uno y sólo uno de los dos procesadores lógicos está activo (el que sea),

consumiendo todos los recursos del procesador físico. 10 – ambos, cuenta cuando ambos procesadores lógicos están activos, compartiendo los recursos del procesador. 11 – cualquiera, cuenta cuando al menos uno de los dos procesadores está activo. Este es el modo a utilizar si el procesador no soporta Hyper-Threading, de ahí que estos procesadores deben fijar este campo a 11B (ver figura 3).

Compare, bit 18

Cuando se activa este bit, se activa el filtrado de eventos.

Complement, bit 19

Determina cómo se efectúa la comparación entre el incremento y el valor umbral (threshold). Si el bit complement está activado, se incrementa el contador en caso de que el incremento detectado sea menor o igual que el valor umbral (especificado en el campo

threshold, explicado a continuación). En otro caso, el contador se

incrementará en una unidad si el incremento detectado es mayor que el valor umbral.

Este bit sólo tiene importancia si está activado el filtrado de eventos (es decir, si el bit compare está activado).

Threshold, bits [20:23]

En este campo se indica el valor umbral que se utilizará en las comparaciones a la hora de realizar el filtrado de eventos. Este campo ocupa cuatro bits dado que el mayor incremento del

contador que se puede producir en un ciclo es de 15 (ver figura 2). Este campo sólo tiene importancia si está activado el filtrado de eventos (es decir, si el bit compare está activado).

Cuando está activado se activa el modo de detección de flancos de subida. En este modo, el contador se incrementa en una unidad sólo si la comparación efectuada entre el incremento y el valor umbral es satisfactoria siempre que no lo haya sido en el ciclo inmediatamente anterior.

Este campo sólo tiene importancia si está activado el filtrado de eventos (es decir, si el bit compare está activado).

FORCE_OVF, bit 25

Al activar este bit, se fuerza el desbordamiento del contador con cada incremento en el mismo. Si este bit está desactivado, el contador se comportará de forma normal, es decir, solamente se desbordará cuando el contador tenga su valor máximo (240-1) y se produzca un incremento en el mismo.

OVF_PMI_T0, bit 26

Cuando esta activo, se genera una interrupción PMI para notificar al procesador lógico 0 que el contador asociado al CCCR se ha desbordado.

Si desactivamos este bit, no se lanza ninguna interrupción en caso de desbordamiento del contador.

Hay que indicar que la PMI se genera en la siguiente ocurrencia del evento una vez el contador se ha desbordado.

OVF_PMI_T1, bit 27

Cuando esta activo, se genera una interrupción PMI para notificar al procesador lógico 1 que el contador asociado al CCCR se ha desbordado.

Si desactivamos este bit, no se lanza ninguna interrupción en caso de desbordamiento del contador.

Hay que indicar que la PMI se genera en la siguiente ocurrencia del evento una vez el contador se ha desbordado.

Cascade, bit 30

Este bit se utiliza para poder configurar en cascada dos

contadores de rendimiento. Este bit debe activarse en el contador que empieza a contar cuando el primero se ha desbordado. Además, hay que desactivar el bit enable del CCCR del contador que empieza a contar tras el desbordamiento del primero.

OVF, bit 31

Cuando está activo significa que el contador se ha desbordado. Una vez se ha activado no se vuelve a poner a cero a no ser que lo desactivemos explícitamente mediante software.

Cuando se hace un reset al procesador, todos los bits de cada CCCR se inicializan a cero.

7. Medidas at-retirement en el Intel

®

Pentium

®

4: