¿Qué son los subprocesos y qué hacen en el procesador?

27

Estaba mirando las estadísticas de la CPU Intel Pentium e5700 .

Tiene dos núcleos y dos hilos. ¿Qué hacen los hilos para el procesador? ¿Existe alguna relación entre el número de núcleos y el número de hilos? ¿Para qué sirven los hilos en general para el sistema?

imposible3
fuente
Es la cantidad de subprocesos que la CPU puede manejar a la vez o alguna estadística falsa que Intel inventó.
digitxp
3
Votado para cerrar como IMO, esto es demasiado general, aunque siempre dudo en decir "solo Google", el propósito de Super User (y sitios similares) es responder preguntas reales, no ser un diccionario de términos técnicos que se buscan fácilmente en recursos más apropiados.
Shinrai
3
@Shinrai He editado esto para hacerlo menos general
Simon Sheehan

Respuestas:

21

El recuento de núcleos es el número físico de núcleos en el dado de la CPU, mientras que el recuento de subprocesos es el número de subprocesos de aplicaciones individuales que se pueden ejecutar simultáneamente en la propia CPU. Sin ningún hardware adicional o especial, esto es igual al recuento de núcleos. Sin embargo, algunos procesadores tendrán más hilos que núcleos.

Algunas CPU de Intel tienen una característica llamada hyperthreading , que permite que un sistema operativo vea el doble de la cantidad de núcleos lógicos por núcleo físico. Esto permite que el sistema operativo programe y ejecute el doble de la cantidad de subprocesos simultáneamente, por lo que en el caso de la CPU a la que he vinculado anteriormente, hay cuatro núcleos físicos, pero ocho lógicos (por lo que puede ejecutar ocho subprocesos simultáneamente).

Cada aplicación individual que se ejecuta en el sistema operativo es de un solo subproceso o de subprocesos múltiples (piense en cada subproceso como una "sub-aplicación"). Las aplicaciones de un solo subproceso requieren un solo subproceso para ejecutarse en la CPU, mientras que las aplicaciones de subprocesos múltiples tienen muchos subprocesos que se ejecutan simultáneamente. Los núcleos adicionales, o hiperprocesos, permiten que se ejecuten más subprocesos de aplicaciones simultáneamente a la vez.

Esto permite que las aplicaciones de subprocesos múltiples ( no subprocesos simples) se ejecuten mucho más rápido, ya que se puede ejecutar más de un subproceso a la vez en la CPU.


Solo una nota final, hyperthreading mejora el rendimiento de algunas aplicaciones multiproceso específicamente optimizadas para ello (ya que todavía hay la mitad del número de núcleos físicos que los lógicos). En algunos casos diferentes, las aplicaciones pueden correr más rápido con Hyperthreading desactivado (aunque muchas aplicaciones hacen beneficio de ella). Independientemente de hyperthreading, un aumento en el número de núcleos físicos siempre beneficiará a las aplicaciones multiproceso.

Penetración
fuente
1
¿Podría explicar qué hilos hacen para el procesador? +1 por mencionar hyperthreading, ya que es muy común ahora (parece estar en todos los i3)
Simon Sheehan
Cada proceso tiene al menos un hilo. Cuando el proceso tiene su turno en la CPU, el subproceso principal se ejecuta hasta que su turno de la CPU está activo. Un proceso puede generar otro hilo, y ahora dos partes de ese mismo proceso se ejecutarán y solicitarán turnos de CPU. Todos los procesos son programas, y con este mecanismo, dos cosas en ese mismo programa pueden ejecutarse a la vez. Es más rápido que hacer un nuevo proceso (es decir, bifurcar o cargar un nuevo programa) pero menos seguro. Los procesos están aislados unos de otros, los hilos de un proceso no lo están.
LawrenceC
¿Qué sucede si he creado un programa Java multiproceso con 50 subprocesos simultáneos ejecutándose y lo estoy ejecutando en el Intel i7-4790K, que tiene 4 núcleos y 8 subprocesos? ¿Significa esto que solo 8 de esos 50 hilos en la aplicación Java se están ejecutando simultáneamente y el resto está en una cola? ¿Cómo funciona eso
Donato
@Donato, el sistema operativo interrumpe los subprocesos en ejecución para dar a los demás algo de tiempo para completar su trabajo. En cualquier momento dado, solo 8 subprocesos se ejecutan en la CPU, y cada núcleo cambia constantemente entre diferentes subprocesos; Es útil pensar en ellos como "trabajos" (teniendo en cuenta que los trabajos también pueden tener una prioridad). Cada núcleo hará un trabajo para un subproceso determinado, y luego será interrumpido por el programador de tareas del sistema operativo para pasar a un trabajo diferente, hacer un trabajo en ese trabajo, y así sucesivamente hasta que se complete el trabajo.
Avance
@Breakthrough, Re " para que pueda ejecutar ocho subprocesos simultáneamente ", ¿cuáles son las limitaciones de dicha simultaneidad en comparación con la simultaneidad real que ofrecen los núcleos reales individuales? Además, ¿cómo es posible que "las aplicaciones se ejecuten más rápido con hyperthreading deshabilitado "?
Pacerier
9

Un "núcleo" representa un subconjunto físico real de un procesador que puede manejar el procesamiento por sí mismo, mientras que un "hilo" es cuántos procesos reales puede manejar el procesador a la vez. Intel ha desarrollado una tecnología que denominan "hiperhilo". Esta técnica permite que un núcleo físico (que normalmente solo podría manejar un subproceso a la vez) ahora pueda manejar dos subprocesos simultáneamente.

Un subproceso es una tarea que el procesador debe manejar, para una explicación simple, puede asumir que cada aplicación que abra (como pintura, bloc de notas, reproductor multimedia) tiene su propio subproceso ... ahora esto no significa que solo pueda abrir 2 aplicaciones a la vez, simplemente porque el procesador y el sistema operativo funcionan tan rápido en 'cambiar hilos' para manejar las necesidades de cada aplicación que tenga abierta. Simplemente experimentará un mejor rendimiento con más núcleos porque ahora puede distribuir todo el trabajo a más procesadores centrales.

Por ejemplo, mi computadora de trabajo tiene un i7. El i7 tiene 4 núcleos físicos, pero cada núcleo puede hacer 'hiperprocesamiento', lo que permite que este procesador maneje 8 subprocesos a la vez. Entonces, si abro el administrador de tareas, veré 8 cuadros para la escala de rendimiento del procesador.

Una regla general es que más núcleos físicos son mejores que más hilos. Entonces, si estuviera comparando procesadores que tenían 4 núcleos y 4 hilos, sería mejor que 2 núcleos y 4 hilos. Pero cuantos más subprocesos pueda manejar su procesador, mejor funcionará durante la multitarea y para algunas aplicaciones muy intensas (edición de video, CAD, CAM, Compresión, Cifrado, etc.) en sí mismo utilizará más de un núcleo a la vez.

CenterOrbit
fuente
¿Qué quieres decir con "cajas"?
Pacerier
google.com/…
CenterOrbit
-1

haciendo clic en los enlaces de un artículo en IE o Chrome, cada vez que hace clic en un hilo. cuanto más haces clic en los enlaces, más hilos. tiene una CPU de 4 núcleos, tiene hasta 8 hilos, puede abrir 8 enlaces antes de comenzar a tener un problema. sin tener en cuenta su conexión a internet. entonces cada núcleo cubre dos de esos enlaces (hilos) que tiene abiertos. Esa es la idea de la OMI. si esto tiene sentido para alguien.

marc g.
fuente
No, esto no es lo que son los hilos en el contexto de las CPU o la pregunta que se hizo.
music2myear