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?
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 FUNDAMENTALEsto 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.
Lo siento pero no he podido aguantarme (perdón por lo repetitivo)