Duda Cores Hilos CPU

Porque en el núcleo que estoy ejecutando la prueba single core pone que esta al 50%?

tiene que ver con que el programa detecta que hay dos hilos por cada núcleo y por tanto solo esta ejecutando un hilo del núcleo y el resultado sea ese 50%?

es decir actúa como un proceso pesado(mono hilo) ?

luego tengo otra duda, un único proceso solo se puede ejecutar en un core, es decir que solo puede correr el hasta que termine y empezar otro ? con los hilos la ejecución es asíncrona? es decir que se ejecutan las tareas de los hilos dentro de un mismo proceso todos a la vez?

Imagen
ariakan25 escribió:Porque en el núcleo que estoy ejecutando la prueba single core pone que esta al 50%?

tiene que ver con que el programa detecta que hay dos hilos por cada núcleo y por tanto solo esta ejecutando un hilo del núcleo y el resultado sea ese 50%?

es decir actúa como un proceso pesado(mono hilo) ?

luego tengo otra duda, un único proceso solo se puede ejecutar en un core, es decir que solo puede correr el hasta que termine y empezar otro ? con los hilos la ejecución es asíncrona? es decir que se ejecutan las tareas de los hilos dentro de un mismo proceso todos a la vez?

Imagen



un saludo @ariakan25 :)

Ufff vaya temita..., es de agradecer que las personas no demos por supuesto lo que parece obvio.
La verdad es que no tienes ninguna pregunta.

Como creo que sabemos las personas a las que nos interesa esto:

1 núcleo >> 1 tarea REGLA FUNDAMENTAL

Esto es una regla de uso y una limitación para los procesadores:
PERO para aumentar rendimiento y velocidad ahorrando tiempo
I)-interesa hacer más de una tarea.
II)-interesa usar varios núcleos para hacer una tarea.


PARRAFO 1:
1 núcleo 2 hilos >> 2 tareas
Pero como es esto posible?
Lo interesante es aquí que 1 núcleo aplica su funcionamiento en una única tarea PERO no todo su rendimiento (sólo un porcentaje de esa capacidad funcional)
Otra parte de esa capacidad (el resto del porcentaje) se invierte en otra tarea.
Para poder hacer eso es necesario dividir de alguna forma el núcleo para que respete la regla de uso y la limitación que implica (REGLA FUNDAMENTAL).
Al componer 2 núcleos de 1 se da acceso a dos tareas simultáneas
Esto sólo puede hacerse convirtiendo el núcleo en dos de forma virtual [un núcleo físico pero dos sectores lógicos en su interior]
1 núcleo físico >> 2 núcleos lógicos (un único núcleo físico >> 2 grupos de instrucciones de control >> 2 hilos)
2 núcleos lógicos >> 2 tareas
2 núcleos lógicos >> sólo 1 capacidad funcional si es un núcleo >> solución: 1/2 capacidad (1 hilo) + 1/2 capacidad (1 hilo)

PARRAFO 2:
Aquí entonces aparece otra cuestión importante:
Se puede dividir las tareas en partes para que los diferentes hilos puedan realizarlas simultaneamente (como si se tratara de tareas distintas respetando ASI el precepto de 1 núcleo>> 1 tarea).
Esto implica que varios núcleos puedan hacer una misma y única tarea (esto es lo contrario de lo anterior: antes dividiamos nucleos fisicos para obtener más nucleos lógicos..., AHORA dividimos la tareas en partes para que varios núcleos físicos o lógicos la consideren cada parte una tarea distinta y puedan colaborar entre ellos sumando los esfuerzos realizando las partes que componen la tarea divida)

1 núcleo físico >> 1/2 tarea (una tarea que es la mitad de otra) y esto se abre al concepto de tarea multihilo (HT), dos hilos para una única tarea COMO 1 núcleo para una tarea.
1 núcleo 2 hilos
1 núcleo 1 tarea >>1N sin HT
2 hilos 1 tarea >>1N con HT ( 1 tarea dividida en 2 partes de tarea)


El parrafo 1 (tochaco a): explica como cumplir CON LA REGLA FUNDAMENTAL y lograr que se haga más de una tarea con 1 núcleo.
El parrafo 2 (tochaco b): explica como cumplir CON LA REGLA FUNDAMENTAL y lograr que varios núcleo realicen una única y misma tarea.
Combinándolos se obtiene que un procesador multihilo multitarea puede realizar varias tareas simúltaneamente con varios núcleos o con uno sólo (2 hilos) y hacer efecto sinérgico en sus actividades al compartir los buses y los datos entre las diferentes tareas y los diferentes núcleos.

Con respecto a tus NO preguntas (por que las respondes tú) decir que efectivamente en las pruebas single o monocore no es el mismo core (físico o lógico) el que funciona en cada momento y se puede ver el porcentaje de carga asignado. Es monocore pues la velocidad en Ghz de media asignada esta funcionando como si lo hiciera en un único núcleo en todo momento (aunque lo haga en varios núcleos a porcentaje bajo)
Y efectivamente aunque es simultáneo (sincrónico) es asincrónico en el sentido de que hay un reparto de trozos de tarea cada hilo recorre porciones diferentes de una misma tarea. [facepalm]

Lo siento pero no he podido aguantarme (perdón por lo repetitivo) XD [360º] XD [360º] XD [360º]
Hola.

Sobre lo que comentas @ChinoX2, la parte de CPU scheduling estoy contigo, pero la explicación de el multithreading ya no tanto, es más el axioma "1 núcleo >> 1 tarea REGLA FUNDAMENTAL", eso no es así desde la segmentación de procesadores y ya ni hablemos del SMT (el famoso HyperThreading de Intel).
En segmentación se divide funcionalmente el procesador en fases, de forma que en cada una de ellas se puede estar ejecutando una tarea (instrucción en este caso), distinta eso ya anula lo de un núcleo una tarea.
https://es.wikipedia.org/wiki/Segmentac ... trucciones

Por otro lado tenemos el SMT, dónde X hilos (conjuntos o secuencias de instrucciones distintas) se ejecutan a la vez en el mismo núcleo, esto significa habilitar X contextos distintos en el mismo núcleo e implementar los mecanismos necesarios para poder cambiar entre ellos. El ejemplo más conocido es el HyperTrheading de Intel, aunque hay procesadores que tienen hasta 8 hilos lógicos.
https://en.wikipedia.org/wiki/Simultane ... ithreading

Todo esto hay que tomarlo como amateur que soy, aunque lo estoy estudiando actualmente, igual viene un experto y se tira de los pelos con lo que estoy diciendo.

Para el OP, no te ralles con el OpenHardwareMonitor, para ver si tienes una hilo al 100% lo vas a ver mucho más claro en el administrador de tareas, que no distingue entre hilo y núcleo.

Un saludo.
GhOsHe escribió:Hola.

Sobre lo que comentas @ChinoX2, la parte de CPU scheduling estoy contigo, pero la explicación de el multithreading ya no tanto, es más el axioma "1 núcleo >> 1 tarea REGLA FUNDAMENTAL", eso no es así desde la segmentación de procesadores y ya ni hablemos del SMT (el famoso HyperThreading de Intel).
En segmentación se divide funcionalmente el procesador en fases, de forma que en cada una de ellas se puede estar ejecutando una tarea (instrucción en este caso), distinta eso ya anula lo de un núcleo una tarea.
https://es.wikipedia.org/wiki/Segmentac ... trucciones

Por otro lado tenemos el SMT, dónde X hilos (conjuntos o secuencias de instrucciones distintas) se ejecutan a la vez en el mismo núcleo, esto significa habilitar X contextos distintos en el mismo núcleo e implementar los mecanismos necesarios para poder cambiar entre ellos. El ejemplo más conocido es el HyperTrheading de Intel, aunque hay procesadores que tienen hasta 8 hilos lógicos.
https://en.wikipedia.org/wiki/Simultane ... ithreading

Todo esto hay que tomarlo como amateur que soy, aunque lo estoy estudiando actualmente, igual viene un experto y se tira de los pelos con lo que estoy diciendo.

Para el OP, no te ralles con el OpenHardwareMonitor, para ver si tienes una hilo al 100% lo vas a ver mucho más claro en el administrador de tareas, que no distingue entre hilo y núcleo.

Un saludo.


Un saludo @GhOsHe!
Precisamente.
Todo lo que has escrito para decir que no es ASÍ lo que pongo como regla fundamental , es justo lo que estoy describiendo abajo.
Si he puesto lo de la REGLA FUNDAMENTAL es por que es lo que explica las vueltas que hay que dar en procesos para lograr matizar esa regla fundamental y permitir no respetarla PERO sólo aparentemente pues sigue actuando de fondo en todos los avances tecnológicos
Todos son trucos para evitar romper la regla fundamental y parecer que se está haciendo. que es el sentido de todo mi post.

El parrafo 1 que he escrito se corresponde con la segmentación de procesadores.
La segmentación de procesadores respeta 1 núcleo 1 tarea pues el segmento compuesto se corresponde con un núcleo lógico virtual que si respeta 1 núcleo 1 tarea (tal como esta descrito en el parrafo 1)
El parrafo 2 corresponde punto por punto al SMT y explica efectivamente el HT

Es curioso como leemos. Intento facilitar la lectura aunque no lo parezca.
No acierto a entender como te puede parecer que lo que has posteado y lo que he escrito son cosas diferentes.
Un saludo!
Ole, ole. Yo no sabía esta información y es de agradecer =)
ChinoX2 escribió:
Un saludo @GhOsHe!
Precisamente.
Todo lo que has escrito para decir que no es ASÍ lo que pongo como regla fundamental , es justo lo que estoy describiendo abajo.
Si he puesto lo de la REGLA FUNDAMENTAL es por que es lo que explica las vueltas que hay que dar en procesos para lograr matizar esa regla fundamental y permitir no respetarla PERO sólo aparentemente pues sigue actuando de fondo en todos los avances tecnológicos
Todos son trucos para evitar romper la regla fundamental y parecer que se está haciendo. que es el sentido de todo mi post.

El parrafo 1 que he escrito se corresponde con la segmentación de procesadores.
La segmentación de procesadores respeta 1 núcleo 1 tarea pues el segmento compuesto se corresponde con un núcleo lógico virtual que si respeta 1 núcleo 1 tarea (tal como esta descrito en el parrafo 1)
El parrafo 2 corresponde punto por punto al SMT y explica efectivamente el HT

Es curioso como leemos. Intento facilitar la lectura aunque no lo parezca.
No acierto a entender como te puede parecer que lo que has posteado y lo que he escrito son cosas diferentes.
Un saludo!


Metes conceptos que en mi caso despistan, ahi no me entra el rendimiento o porcentajes de uso.
Cada uno tenemos nuestra forma de entender las cosas, obviamente.

Para mi la simplificación máxima de ambas soluciones es, por un lado, la segmentación de procesadores es una cadena de producción de coches donde cada sección de la cadena es un segmento del procesador, es decir el coche empieza con el chasis desnudo y le ponen las ruedas, luego pasa a la siguiente y le ponen puertas, mientras entra otro coche a poner las ruedas y asi en adelante, asi ocurre con las instrucciones en u procesador, se decodifican, se buscan los operandos, se opera etc. Luego por otro lado el SMT es como un herrero con dos aprendices, cada aprendiz tiene una herradura, mientras uno pone la herradura al rojo el herrero martillea la otra, cuando esta se queda fria, la otra esta lista y van intercalandose una y otra vez, asi el herrero no pierde un martillazo.

Cada loco con su tema, que suele decirse.

Un saludo.
GhOsHe escribió:
ChinoX2 escribió:
Un saludo @GhOsHe!
Precisamente.
Todo lo que has escrito para decir que no es ASÍ lo que pongo como regla fundamental , es justo lo que estoy describiendo abajo.
Si he puesto lo de la REGLA FUNDAMENTAL es por que es lo que explica las vueltas que hay que dar en procesos para lograr matizar esa regla fundamental y permitir no respetarla PERO sólo aparentemente pues sigue actuando de fondo en todos los avances tecnológicos
Todos son trucos para evitar romper la regla fundamental y parecer que se está haciendo. que es el sentido de todo mi post.

El parrafo 1 que he escrito se corresponde con la segmentación de procesadores.
La segmentación de procesadores respeta 1 núcleo 1 tarea pues el segmento compuesto se corresponde con un núcleo lógico virtual que si respeta 1 núcleo 1 tarea (tal como esta descrito en el parrafo 1)
El parrafo 2 corresponde punto por punto al SMT y explica efectivamente el HT

Es curioso como leemos. Intento facilitar la lectura aunque no lo parezca.
No acierto a entender como te puede parecer que lo que has posteado y lo que he escrito son cosas diferentes.
Un saludo!


Metes conceptos que en mi caso despistan, ahi no me entra el rendimiento o porcentajes de uso.
Cada uno tenemos nuestra forma de entender las cosas, obviamente.

Para mi la simplificación máxima de ambas soluciones es, por un lado, la segmentación de procesadores es una cadena de producción de coches donde cada sección de la cadena es un segmento del procesador, es decir el coche empieza con el chasis desnudo y le ponen las ruedas, luego pasa a la siguiente y le ponen puertas, mientras entra otro coche a poner las ruedas y asi en adelante, asi ocurre con las instrucciones en u procesador, se decodifican, se buscan los operandos, se opera etc. Luego por otro lado el SMT es como un herrero con dos aprendices, cada aprendiz tiene una herradura, mientras uno pone la herradura al rojo el herrero martillea la otra, cuando esta se queda fria, la otra esta lista y van intercalandose una y otra vez, asi el herrero no pierde un martillazo.

Cada loco con su tema, que suele decirse.

Un saludo.


Gracias @GhOsHe!
Pon eficacia y segmentación por rendimiento y porcentaje de uso XD [360º]
Efectivamente cada uno de nosotros tiene un registro de significados en los que se encuentra más cómodo.
Insisto (no quiero ser pesado) tu post y el mío tiene el mismo contenido.
Solo hay discrepancia en la cuestión de la regla fundamental:
Para tí parece una cuestión obsoleta ya superada (algo que se pensaba que era así y ya no...) y para mí es la cuestión fundamental que rige el progreso tecnológico (algo que hay que tener en cuenta para poder avanzar encontrando modos como sortear esas limitaciones... )
Expresiones como "... se engaña al procesador para que crea que tiene dos núcleos en lugar de uno..." que salpican las webs cuando explican el tema del HT demuestran que existe una regla que el proceso respeta y que hay que hacer algo para eludirla...

Un saludo!
6 respuestas