Logo Studenta

¿Cuántos más núcleos tenga un procesador es mejor?

💡 1 Respuesta

User badge image

Aprendiendo a Aprender

Pondré un simil, suponte que vas en diligencia, si de la diligencia tiran dos caballos andas pero despacio porque los caballos se cansan. Si en vez de dos caballos pones cuatro, aumenta mucho su velocidad y si pones seis, aun más.

Pero llegará un punto que poner mas caballos no mejora el rendimiento pues es obvio que la diligencia nunca podra ir mas deprisa que los caballos, por mas caballos que pongas. Pero ocurre una cosa, que entre todos los caballos habrá uno mas lento que indicará el límite real de la velocidad de la diligencia, porque la diligencia no puede ir más rápida que el caballo más lento.

Si pasado un punto, aumentas el número de caballos, no solo no correrás mas sino que correras como mucho tanto como el caballo lento, que retrasará a todos los demás. Espero que este ejemplo te ayude a entender lo que viene a continuación.

Veamos ahora que pasa cuando tienes un procesador de varios núcleos.

Un procesador multitarea, como son hoy todos, es un procesador que aparentemente puede hacer a la vez varias cosas, porque dedica alternativamente pequeñas fracciones de la CPU, (procesador central), a cada una de las tareas, ahora calculo, ahora lo presento en pantalla, ahora lo mando a la impresora, ahora lo guardo en el disco duro,…

Si el procesador es rápido, estas pequeñas interrupciones pasan desapercibidas y parece que hace varias cosas a la vez, cuando en realidad, hace en cada momento solo una cosa y las otras están paradas.

Pero si el procesador tiene varios "core" o nucleos, es como si realmente tuvieras varios procesadores diferentes dentro del equipo y uno se dedicara a calcular, otro a refrescar la pantalla, otro a escribir,…

Realmente ganaras velocidad porque ahora si es multitarea real, en el mismo instante se dedica a resolver varios asuntos diferentes. Por ejemplo, un nucleo se dedica a escribir con Word, otro en segundo plano atiende las peticiones de la impresora, mientras otro se está descargando el correo. Evidentemente si tienes dos nucleos, podras hacer varias tareas mas rápido que si tienes solo uno.

Sin embargo, esto en un particular, tiene un límite, que son las diferentes tareas que tiene en marcha, de nada vale que haya 12 "cores", si tu solo pones en marcha cuatro tareas diferentes.

No obstante, hay lenguajes de programación capaces de descomponer los procesos iterativos en diferentes hilos y mandar cada uno a un core diferente.

Por ejemplo, estas calculando una factura de muchos productos que te han comprado cada uno en diferentes cantidades y que se les aplica IVAS diferentes.

Si tienes una programación adecuada, esa factura calculará cada linea en un nucleo diferente, para luego sumar los valores parciales y calcular el total de la factura.

Si tiene la posibilidad de calcular varios hilos a la vez, acabarás antes, cuantos mas hilos puedas tratar a la vez, mejor. Pero si tienes muchísimos nucleos, llegara un momento que no los puedas aprovechar todos, porque no tengas suficientes hilos para alimentar tanto núcleo, Igual te dará tener 36 que 2000 si tus facturas son de venticuatro referencias.

Pero ademas pasa, que tengas los hilos que tengas, el total no se podra calcular, hasta que finalice de calcularse la linea de factura mas enrevesada. Por tanto, aunque todos menos uno de los hilos, hayan acabado, aquel que es mas lento, hace esperar a todos los demas, hasta que el acabe, para hacer el siguiente paso que es totalizar la factura.

En este secillo ejemplo, se ve que la velocidad real de un programa depende de los "core" que tenga, pero que a partir de un punto tanto da cuantos tengas, porque lo que realmente depende es de la velocidad de la secuencia de cálculos lineales mas compleja que tienes.

En un servidor en red que tenga muchos accesos por internet, ahí sí sera útil tener cuanto mas "cores" mejor, pues cada core atendrá la consulta que le haga un usuario, pero en cambio, ese mismo procesador sera excesivo para un particular y no sacará partido de el.

Si el número de consultas se disparan no habrá en el mercado computador con suficientes "cores", entonces se recurre a hacer trabajar los procesadores en "cluster", es decir cada procesador con los "cores" que tenga, pasa a trabajar en paralelo, dentro de lo que se llama un “cluster”, (conjunto, grupo o cúmulo), con otros procesadores con sus "cores"

El supercomputador Nare Nostrum tiene 48.896 procesadores Intel Xeon de 64 bits a 2,6 GHz con lo que teóricamente puede realizar 1.100 billones de operaciones por segundo, Pero si fuera a calcular una factura en COBOL que no es capaz de "distribuir juego" entre los diferentes computadores, tardaria practicamente lo mismo que si se hace en una computadora normal, porque solo podría dedicar a ello un solo procesador de todos los que tiene.

Para un particular conviene saber donde esta en tu caso tu “cuello de botella” , porque por ejemplo, yo he aumentado mucho el rendimiento de mi procesador al cambiar el disco duro tradicional por un disco duro sólido o SSD, porque mi “cuello de botella”, no era la velocidad de proceso, sino las lecturas al disco duro, y el SSD es mucho mas rápido que el disco duro tradicional.

0
Dislike0

✏️ Responder

FlechasNegritoItálicoSubrayadaTachadoCitaCódigoLista numeradaLista con viñetasSuscritoSobreDisminuir la sangríaAumentar la sangríaColor de fuenteColor de fondoAlineaciónLimpiarInsertar el linkImagenFórmula

Para escribir su respuesta aquí, Ingresar o Crear una cuenta

User badge image

Otros materiales

Otros materiales