2012-06-30 20 views
9

Quiero saber cómo funciona la predicción de bifurcación del procesador Intel i7?Acerca de la predicción de derivación de i7

Currenly, sé que el predictor llamado "predicción dinámica de bifurcación".

Para el predictor de 1 bit: el hardware siempre predice que una instrucción de bifurcación tome la misma dirección que la última vez que se ejecutó.

Una versión refinada que funciona mejor en la práctica es el predictor de 2 bits. Con el fin de para mejorar aún más la precisión de predicción, se introdujeron esquemas de predicción de 2 bits. En estos esquemas, la predicción debe ser incorrecta dos veces antes de cambiarla.

¿i7 tiene el mismo predictor que el anterior?

+4

Casi puedo garantizarle que todos los detalles son secretos de la empresa. – Mysticial

Respuesta

9

La mayoría de lo que sabemos sobre el predictor de bifurcación proviene de las pruebas. Intel no ha publicado mucho en el camino de los detalles. La penalización de mal predicción es de aproximadamente 18 ciclos de reloj, por lo que la predicción de bifurcación precisa es importante.

Intel utiliza un predictor de bifurcación de dos niveles. Se cree que el nivel interno no ha cambiado desde las CPUs Core 2.

El nivel externo es más sofisticado e incluso puede predecir correctamente bucles con conteos fijos de hasta 64. Se utilizan dos búferes de historial global de 18 bits. Uno contiene todos los saltos que se han realizado al menos una vez. El otro contiene los saltos más importantes. (Se desconoce el número de entradas en estos búferes).

Tenga en cuenta que los saltos indirectos y las llamadas tienen su propio predictor.

6

La respuesta corta es no.

Estoy razonablemente seguro de que ninguna CPU Intel ha utilizado el predictor de un bit que usted describe.

El Pentium original usó un descriptor de dos bits, muy parecido al que describe. Los cuatro valores que usó normalmente se describieron como "fuertemente no tomado", "débilmente no tomado", "débilmente tomado" y "fuertemente tomado". Cada vez que se toma una rama, el contador se mueve un punto hacia "fuertemente capturado". Cada vez que no se toma una rama, se mueve un punto hacia "fuertemente no tomado". Es un contador de saturación, por lo que si (por ejemplo) se toma una bifurcación cuando el contador ya está "fuertemente capturado", el contador simplemente no cambia. [Debo añadir: así es como Intel lo documentó, y aparentemente pretendía que funcionara, si la memoria le sirve, Agner Fog y Terje Mathiesen descubrieron que realmente funciona de manera un poco diferente, y, en general, no tan bien como esto).

A partir de Pentium/MMX y Pentium Pro, diseñaron un predictor de bifurcación de dos niveles algo más sofisticado. Agregó un historial de bifurcaciones de 4 bits, que usó para seleccionar uno de los 16 contadores de 2 bits. Esto significaba que si tenía un patrón de (por ejemplo) tomado, tomado, no tomado, tomado, (luego repetido), se ajustaría rápidamente a eso, y predeciría todas las ramas correctamente.

no estoy Seguro sobre los detalles de la predicción de saltos en el i7, pero yo creo que es seguro decir que es por lo menos tan sofisticado como el Pentium Pro de era, no un regreso a la original Pentium.

+0

Tenga en cuenta que los predictores de dos bits pueden estar saturando (es decir, de un estado al siguiente, teniendo límites fuertemente tomados o fuertemente no tomados), O podrían tener un contador de histéresis, lo que les permite pasar de débilmente no tomados a fuertemente tomado y de débilmente tomado a fuertemente no tomado directamente. –

Cuestiones relacionadas