Esta es una pregunta muy complicada, con varias capas de respuestas. Dibujaré lo que todo puede estar sucediendo simultáneamente en un momento dado. Nota: lo que esbozo a continuación es el caso ideal: en la práctica, los procesadores pierden tiempo, por ejemplo, esperando que los datos provengan de la memoria, de un caché coherente, etc.
- Múltiples núcleos son como computadoras separadas, por lo que tener 4 núcleos significa que tiene (al menos) 4 instrucciones trabajando al mismo tiempo.
- Los hilos son menos claros. En parte son una construcción de software, por lo que puede crear 100 subprocesos, y claramente su CPU no ejecutará cien instrucciones simultáneamente: simplemente cambiará muy rápidamente entre ellas.
- Sin embargo, algunos procesadores (por ejemplo, Intel Xeon Phi, y creo que algunos de los próximos procesadores posteriores a Haswell) tienen “hilos de hardware”: en realidad pueden hacer que algunos de los hilos de software se ejecuten simultáneamente.
- Como se indica en algunas otras respuestas: los procesadores tienen canalización. Si tiene una secuencia de instrucciones idénticas, pasan por una línea de ensamblaje que se completará parcialmente. Si una instrucción toma 6 ciclos, y la tubería tiene 6 etapas, entonces, en cualquier ciclo de reloj, tendrá 5 instrucciones completadas parcialmente, y una entregada. Entonces, en cierto modo, hay 5 o 6 instrucciones trabajando simultáneamente, solo en diferentes grados de progreso.
- Los procesadores a menudo tienen unidades de suma y multiplicación separadas. Si su programa está escrito de tal manera que el compilador puede encontrar una suma y una multiplicación que no dependen entre sí, el procesador puede ejecutarlas simultáneamente. (Con Haswell y versiones posteriores, Intel es en realidad algo ligeramente diferente: solo hay unidades FMA ‘fusionadas-sumar’ que pueden hacer “x = ax + y” en un ciclo. Para hacer una multiplicación de la suma, establezca “y = 0” o “a = 1” respectivamente. Esa es una forma ligeramente diferente de tener más de una operación, aunque es solo una instrucción).
- Finalmente, las unidades de coma flotante a menudo tienen “carriles SIMD”: en lugar de operar en un solo par de operandos, operan en registros de 2 operandos de ancho (SSE clásico), 4 de ancho (Intel Haswell) o incluso 8 de ancho (Intel Xeon Fi). Y por “operando” me refiero a un número de coma flotante de 8 bytes. Mi sesgo de HPC se está mostrando.
Entonces, en un chip como el Xeon Phi, tendrá 60 núcleos, cada uno con 4 hilos de hardware, con unidades de suma y multiplicación independientes, cada una de 8 de ancho. ¡Dando 60 veces 4 veces 2 veces 8! ¡Uy dividido por 2 debido a un tecnicismo! = cerca de 2000 instrucciones activas en cada ciclo de reloj.
¿No es eso algo …? Por supuesto, tendrás un diablo escribiendo un programa que se ejecute con ese tipo de rendimiento.
- ¿Es esta compilación de juegos compatible?
- ¿Qué placa base recomendarías para mi actualización?
- ¿Cómo es que los teléfonos no tienen ventiladores como las computadoras?
- Estoy ordenando una computadora portátil en línea. ¿Cómo verifico la autenticidad y me aseguro de que el producto sea genuino? ¿Qué se debe verificar cuando recibo la computadora portátil?
- ¿Qué requisitos informáticos son preferibles para editar material de archivo en 4K?