¿Es cierto que en un procesador moderno, el paralelismo es posible en un solo núcleo?

5

Edición final : Me di cuenta de que cuando uso la palabra "paralelismo", es casi parallelism==ILP , originalmente pensé que incluso una sola instrucción podría dividirse en varias frases, y en ese nivel allí Sería un cierto paralelismo, pero luego me di cuenta de que esto no tiene sentido. Tanto mi título como mi ejemplo no mencionaron nada sobre el paralelismo de más de un subproceso como lo hizo HyperThreading, por lo que la respuesta correcta de @ user110971 es, sin duda. (En el nivel filosófico, solo necesito una condición básica para devolver mi recursividad de encontrar la parte más profunda del paralelismo)

Edit3: hice una gráfica para mi Edit2 y encontré este video en YouTube sobre HyperThreading es útil.

Edit2:Enresumen,paramipreguntaadoptolasdefinicionesenWikipediayparaladefinicióndelostérminos:

  • Paralelo:dossubprocesos,seejecutandeformaindependiente,encualquierinstantefísico.Entonces,unhilonointerrumpiráalotroenningúnmomento.
  • Concurrente:dossubprocesos,queseejecutandeformaindependiente,sepermitendeformaintercalar,esdecir,noestánrestringidosaparalelos,yunopuedeinterrumpirelotro.
  • Enresumen,paramíylosescritoresdeWikipedia,ConcurrentincluyeParallel.Gracias.

Editar:Paraserclaro,paramíelparalelismosignificaunverdaderoparalelismo,agregoun"verdadero" porque las personas con las que he hablado tienden a pensar parallel==concurrent . (Ver mi segundo enlace)

¿Es cierto que en el procesador moderno, "verdadero" paralelismo es posible en un solo núcleo? Pregunté en otro lugar pero no obtuve una respuesta de confirmación. Lo que quiero saber es, por ejemplo, ya sea en t = 0, se obtienen y ejecutan dos instrucciones. En el mismo instante físico.

Mi pregunta vino de aquí :

  

la computación en paralelo es imposible en un solo procesador (de un núcleo), ya que solo un cálculo puede ocurrir en cualquier momento (durante cualquier ciclo de reloj).

    
pregunta ptr_user7813604

3 respuestas

17

De hecho, es posible tener un paralelismo en un procesador superscalar. Un procesador superscalar puede ejecutar varias instrucciones al mismo tiempo utilizando varias unidades de ejecución. Existenciertaslimitacionesdependiendodelaarquitectura.Noeselverdaderoparalelismo.Sitienesquecalcular $$ A = B + C, $$ $$ D = A + 3, $$ No puedes ejecutar ambas instrucciones al mismo tiempo. Sin embargo puedes ejecutar $$ A = B + C, $$ $$ D = D + 3, $$ simultáneamente utilizando dos ALUs.

Entonces, como respuesta a su pregunta, puede tener un cierto nivel de paralelismo en un solo núcleo, siempre que sus instrucciones no utilicen los mismos recursos de hardware.

    
respondido por el user110971
10

En algunos procesadores esto es (a veces) posible. Dado que diferentes instrucciones utilizan diferentes recursos de procesador (ALU, punto flotante, carga, almacenamiento, etc.), a veces es posible paralelizar algunos de ellos. Por ejemplo, consulte aquí para obtener detalles sobre cómo funciona en una CPU Ivy Bridge (x86): enlace

    
respondido por el Nate Strickland
9

Hay muchos tipos diferentes de paralelismo.

El paralelismo de nivel de instrucción es una característica de cualquier procesador superscalar. Múltiples instrucciones están en progreso en cualquier momento. Sin embargo, esas instrucciones son del mismo hilo de control.

El paralelismo a nivel de subprocesos dentro de un solo núcleo es posible con hyperthreading: dos subprocesos separados que utilizan diferentes recursos de núcleo al mismo tiempo. Un subproceso puede usar la ALU entera, mientras que otro está ejecutando una carga o almacenamiento.

El paralelismo a nivel de datos también es un tipo de paralelismo. Las unidades SIMD pueden ejecutar las mismas instrucciones en múltiples registros al mismo tiempo. Por ejemplo, si necesita aplicar la misma transformación de desenfoque a cada píxel de una imagen, es posible que pueda hacer esos 8 píxeles en paralelo, pero dentro del mismo hilo de control.

    
respondido por el Evan

Lea otras preguntas en las etiquetas