2011-11-23 13 views
25

Debido al gran impacto en el rendimiento, nunca me pregunto si mi CPU de escritorio actual tiene una predicción de bifurcación. Claro que lo hace. ¿Pero qué hay de las diversas ofertas de ARM? ¿IPhone o teléfonos Android tienen predicción de bifurcación? ¿El viejo Nintendo DS? ¿Qué hay de Wii basado en PowerPC? PS 3?¿Cuán frecuente es la predicción de bifurcación en las CPU actuales?

si tienen una compleja unidad de predicción no es tan importante, pero si tienen al menos alguna predicción dinámica, y si lo hacen algunos ejecución de instrucciones a raíz de una rama esperada.

¿Cuál es el límite para las CPU con predicción de bifurcación? Una calculadora manual de hace décadas obviamente no tiene una, mientras que mi computadora de escritorio lo hace. Pero, ¿puede alguien describir más claramente dónde se puede esperar una predicción de rama dinámica?

Si no está claro, estoy hablando del tipo de predicción donde la condición está cambiando, variando la ruta esperada durante el tiempo de ejecución.

+0

Esta es una pregunta muy interesante! También me gustaría saber acerca de los procesadores integrados más populares. – hippietrail

Respuesta

0

No tanto para el ARM Cortex-A8 (aunque tiene alguna predicción de bifurcación), pero creo que el Cortex-A9 está fuera de orden super escalar, con predicción de bifurcación compleja.

+0

Gracias, pero estoy buscando una respuesta más general. Decir que Cortex-A8 tiene "no mucho, sino algo" tampoco ayuda. – porgarmingduod

+2

Además, acabo de encontrar ARM Cortex-A8 tiene una pena de 13 ciclos para ramas perdidas, así que creo que es seguro se toma en serio la predicción de saltos que decir. – porgarmingduod

10

Las CPU superescalares modernas de gama alta con tuberías largas (lo que significa que casi todas las CPU se encuentran comúnmente en computadoras de escritorio y servidores) tienen una predicción de bifurcación bastante sofisticada en la actualidad.

La mayoría de las CPU ARM no tienen predicción de bifurcación, lo que ahorra silicio y consumo de energía, pero las CPU ARM generalmente tienen tuberías relativamente cortas. Además, el soporte para la ejecución condicional de la mayoría de las instrucciones en ARM ISA ayuda a reducir el número de sucursales requeridas (y por lo tanto mitiga el costo de los puestos de errores de predicción de sucursales).

+1

Debido a que la tubería de NEON está detrás de la tubería de ARM principal, hay una penalización significativa de falta de ramificación si está haciendo un cálculo de NEON. –

+0

@Anthony Blake: buen punto, así que usar ejecución condicional en lugar de ramas es probablemente una buena idea cuando tienes instrucciones NEON en la mezcla. –

10

Cualquier CPU con una tubería más allá de algunas etapas requiere al menos alguna predicción de bifurcación primitiva; de lo contrario, puede detener la espera en los resultados de cálculo para decidir qué camino tomar. El Intel Atom es un núcleo en orden, pero con una tubería bastante profunda, y por lo tanto requiere un pronosticador de bifurcación bastante decente.

Los diseños antiguos de ARM 7 eran solo tres etapas. Combine eso con cosas como ranuras de retardo de ramificación (requerido en MIPS, opcional en SPARC), y la predicción de bifurcación no es tan útil.

Incidentalmente, cuando MIPS decidió obtener más rendimiento yendo más allá de las 4 etapas de la tubería, la ranura de retardo de bifurcación se convirtió en una molestia. En el diseño original, era necesario, porque no había ningún predictor de bifurcación. Por lo tanto, tuvo que secuenciar su instrucción de bifurcación antes de la última instrucción que se ejecutará antes de la bifurcación. Con la canalización más larga, necesitaban un predictor de bifurcación, obviando la necesidad de una ranura de retardo de bifurcación, pero tenían que emularlo de todos modos para ejecutar código más antiguo.

El problema con una ranura de retardo de derivación es que solo se puede completar con una instrucción útil aproximadamente el 50% del tiempo. El resto del tiempo, o lo completa con una instrucción cuyo resultado es probable que se descarte, o utiliza un NO-OP.

+1

Informativo. Me pone un poco más cerca de tener una idea de dónde podría estar el "punto de corte" aproximado. – porgarmingduod

4

La predicción de ramas es cada vez más importante y se enfatiza mientras que ARM se está volviendo más complicado. Por ejemplo, la nueva arquitectura ARM de 64 bits denominada ARMv8 elimina el uso de la ejecución condicional (principalmente debido a restricciones de espacio de codificación de instrucciones con un mayor número de registros) y depende de la predicción de bifurcación para mantener el rendimiento en niveles aceptables.

Incluso para dispositivos ARMv7-a nuevos casos se puede comprobar terribles como unsorted data question on SO, lo que mejora la predicción de saltos es de alrededor de 3 veces.

0

Puede esperar el predictor de Dynamic Branch en cualquier procesador fuera de servicio, esos procesadores no solo confían en la canalización sino que también obtienen múltiples instrucciones en ese momento, y tienen múltiples unidades de ejecución (unidades de coma flotante, ALU), más registros; para aumentar la ejecución de la instrucción, tiene varias instrucciones sobre la marcha en cualquier momento dado, de las ramas del curso son un problema si desea mantener todo lo que la utilización de maquinaria de alta por lo que este tipo de procesadores, se basan en la predicción de saltos dinámica con el fin de mantener el rendimiento y utilización muy alta.

Puede esperar que cualquier servidor tenga predicción de bifurcación dinámica, también equipos de escritorio, en el pasado los sistemas integrados como los chips ARM en teléfonos inteligentes actuales no tenían predicciones de bifurcación ya que tenían tuberías más pequeñas y no tenían ejecución fuera de servicio , pero como la ley de Moore nos da más transistores por área, comenzará a ver más y más procesadores aumentando su arquitectura. Entonces, para responder a su pregunta, además de la obvia búsqueda de las especificaciones de la CPU, puede esperar tener una predicción de bifurcación en chips de 32 Bits, tuberías más grandes, fuera de servicio. Los chips más recientes de ARM se están moviendo en algún nivel en esta dirección.

Cuestiones relacionadas