¿Diferencia entre superscalar y multi-core?

8

Parece que no puedo entender esto, ¿cuál es la diferencia entre un superscalar y un procesador multi-core?

Sigo mezclándolos, así que algunos puntos simples sobre lo que hacen serían geniales.

    
pregunta marsrover

2 respuestas

12

Los procesadores súper escalares significan que usted envía múltiples instrucciones durante un solo ciclo de reloj. La razón por la que esto se diferencia de multi-core es que solo obtiene el contador de instrucciones de un . Por lo tanto, realiza un seguimiento de varias instrucciones en vuelo, pero todas las instrucciones son de un solo programa. Esto es solo un proceso. Ahora dije "obtienes un contador de instrucciones" y, técnicamente, eso es cierto en el sentido de que no hay ningún punto en el que tu código experimente una disparidad, excepto que use algunos esquemas de predicción de ramificación (Ejecución especulativa: ejecutas simultáneamente ambas ramificaciones y eliminas el "el resultado de la predicción).

Cuando te metes en multi-core tienes múltiples secuencias de instrucciones ejecutándose simultáneamente. ¡Lo importante es que cada núcleo (que se ejecuta con su propio contador de instrucciones) también puede ser súper escalar para ejecutar cada proceso individual más rápidamente!

Es posible tener superscalar sin canalización o ejecución fuera de orden al tener lo que se llama palabra de instrucción muy larga o "VLIW". Esto también se denomina superscalar "estático" (es decir, está en el propio código). Aquí es donde básicamente tienes suficientes componentes para ejecutar varias instrucciones al mismo tiempo, y obtienes varias instrucciones a la vez y luego las ejecutas. En su forma más simple, imagine que usted dijo "este procesador siempre buscará y ejecutará dos instrucciones al mismo tiempo". Luego, siempre que el programador pueda encontrar trabajo para realizar simultáneamente en el mismo proceso, ¡duplicará su rendimiento! Si no pudo encontrar dos instrucciones para armar, simplemente emparejaría una instrucción y un NOP. Esta idea no es muy buena, sobre todo porque si creas una mejor versión del procesador que puede ejecutar 3, 4 o más instrucciones al mismo tiempo, ¡todo tu código anterior se rompe! Pero resolvieron esto de una manera bastante ingeniosa, deberías revisar explícitamente la instrucción de instrucción paralela o "EPIC" si quieres saber más.

El superescalar dinámico con canalización puede aprovechar tanto las instrucciones independientes de los datos como el paralelismo a nivel de instrucciones, lo que lo convierte en una combinación tan poderosa. Esencialmente, le permite, con suficiente hardware, ejecutar tantas instrucciones independientes simultáneamente como sea posible.

El superscalar dinámico con segmentación y ejecución fuera de orden fue esencialmente el límite del paralelismo a nivel de instrucción: intentaría ejecutar múltiples instrucciones en la misma etapa simultáneamente, tratando de encontrar operaciones que operaran sin dependencias de datos. Podría terminar fuera de servicio, empezar fuera de servicio, hay todo tipo de cosas que necesita hacer para mantener la cabeza erguida mientras hace cosas súper escalares. Multi-core dice "¡Hola programador! ¡Dame múltiples problemas que pueda resolver al mismo tiempo!" y luego, dado que el programador es capaz de ver problemas de solución independiente más allá de unas pocas líneas aparte en el ensamblaje compilado, pueden programar esas soluciones de manera más eficiente para múltiples núcleos.

Super-scalar ni siquiera es capaz de resolver problemas como "cómo ejecuto estos dos programas más rápidamente". Solo podría ejecutar cada programa independiente más rápido.

Espero que ayude, perdón si está un poco inconexo.

--Editar--

Modificado para tener en cuenta el punto de ajs410 de que había confundido varias ideas.

    
respondido por el Kit Scuzz
0

Si recurre a procesadores anteriores como el 80486 o el Pentium, entonces una CPU era una única unidad lógica de procesamiento. Ejecuta un solo flujo de instrucciones a la vez. Una sola CPU también era un solo chip de silicio. Si quisiera más capacidad de procesamiento, entonces podría comprar una placa base de servidor costosa que tenía ranuras para adaptarse a dos CPU separadas. Luego tenías una máquina con dos CPU y dos núcleos de procesamiento.

En algún punto, la Ley de Moore significaba que teníamos tantos transistores disponibles en el silicio que podría colocar todos los circuitos para dos CPU en un solo chip. Ahora tienes el potencial para nombrar la confusión. Decir que tiene dos CPU puede significar que tiene el estilo más antiguo de dos paquetes de silicio o el nuevo paquete de silicio único, pero con la configuración de procesamiento de dos procesadores. Para resolver esto, ahora queremos decir que la CPU es un solo paquete de silicona y un Core es una unidad de procesamiento lógico dentro de él.

Super-escalar se refiere a una técnica utilizada dentro de un núcleo para intentar mejorar el rendimiento y permitirle procesar, en promedio, más instrucciones por ciclo. Un procesador escalar ejecuta a lo sumo una instrucción por ciclo, supersallar significa que potencialmente puede ejecutar más de una instrucción por ciclo. Por ejemplo, si el procesador tiene una unidad funcional para la aritmética de enteros y otra para el punto flotante, entonces ¿por qué no usar ambas al mismo tiempo para ejecutar dos instrucciones simultáneamente? ¿Qué pasa si tienes tres unidades enteras y dos unidades de punto flotante? Ahora tienes un potencial aún mayor para la ejecución paralela. Pero también necesita más transistores para la implementación y una lógica mucho más complicada para que funcione de manera confiable. En el mundo real, se tiende a utilizar súper escalar junto con diseños fuera de orden porque se complementan entre sí.

    
respondido por el Phil Wright

Lea otras preguntas en las etiquetas