Alkermes:
Pues de fenómeno nada, sé lo justito… lo que uno va aprendiendo a fuerza de montarse y usar esos equipos, claro. Supongo que como todo el mundo, aprendemos a fuerza de leer cosas en internet y luego las vamos poniendo en práctica en nuestros bichos.
Entiendo que te haya jodido desprenderte de la VP6. Mi antigua BP6 con dos celerones 366@550 sigue en uso, sólo que ahora... es el ordenador de mi madre!! Seguro que tengo una de las únicas madres con placa dual. Sigue yendo muy bien, y ya han pasado casi cuatro años desde que lo monté. Mi madre está encantada, aunque de vez en cuando se queja de que hace más ruido del que debe...
Rockman:
Efectivamente, lo ideal es que estén optimizadas las aplicaciones además del SO. La cosa funciona a dos niveles: lo primero de todo, el SO tiene que ser capaz de identificar que la máquina tiene dos procesadores, porque si no uno de ellos sencillamente "no existe". Hoy en día eso no es un problema salvo que uses Windows98 (buen ejemplo de sistema operativo "de juguete" que no sabe trabajar con más de un procesador, el segundo procesador literalmente no existe para ese sistema). W2k, XP, Linux... los detectan sin problema, así que de esa parte te puedes olvidar: tu S.O. sabe que tiene dos procesadores y cuando tenga que asignar una tarea se la asignará al procesador que en ese momento tenga menos carga.
Ahora viene la parte de las aplicaciones. El problema con todo esto es que la mayoría de los programas de ordenador no están optimizados para trabajar con más de un procesador, así que cuando los ejecutas esos programas -no optimizados- lanzan UN proceso. No dos ni tres, uno. Ese proceso se empieza a ejecutar en UN procesador, el que el sistema considera que en ese momento está más ocioso. Uno puede mirar el administrador de tareas, que en un sistema dual tiene dos gráficas independientes, una para cada procesador, y ver que uno de ellos se va a poner a trabajar a todo trapo y el otro va a estar más o menos tocándose las narices. Una pena, porque se está desperdiciando gran parte de la potencia de la máquina (no toda, luego volvemos a eso).
Una aplicación optimizada para SMP está programada de tal manera que cuando se ejecuta va a lanzar VARIOS procesos en paralelo. El SO asignará esos procesos a los procesadores disponibles, y -en el caso de un dual- los dos procesadores se pondrán a trabajar a todo trapo. De esa forma se aprovecha al máximo la capacidad del sistema.
Dependiendo del tipo de tarea que realice, una aplicación que sepa manejar el SMP en una máquina dual puede llegar a -casi-
duplicar el rendimiento de un monoprocesador. Digo casi porque nunca llegas al doble: los procesadores comparten la memoria, el bus -bueno, eso depende de la arquitectura, no siempre-, etc... o sea que en realidad nunca duplicas el rendimiento, pero por ejemplo para aplicaciones de "number crunching" que tiren mucho de procesador y no tanto de memoria y que se puedan paralelizar bien se puede llegar casi al 200%. Es un caso extremo, en la mayoría de las veces si llegas a un 150 o 160% ya puedes estar contento, porque ya te digo que un dual no es como tener dos sistemas independientes, hay recursos que se comparten. Además, a veces cuando realizas cálculos en paralelo un proceso tiene que esperar un poco a que acabe el otro porque necesita ese resultado para seguir trabajando. En cualquier caso, la ganancia es considerable.
Bueno, entonces, qué aplicaciones saben usar el SMP? Por desgracia más bien pocas. La mayoría de las aplicaciones de cálculo científico y de edición de video saben, porque son las que más tiran de CPU y están diseñadas para eso. No me sé de memoria los programas de codificación de video, además hay un güebo de ellos, pero sí sé que muchos de ellos son SMP (y se utilizan como benchmarks de esos sistemas), así que si vas a editar mucho vídeo un dual es adecuado.
Incluso para aplicaciones que no son SMP, hay un truco muy sencillo: imagínate que estás codificando un vídeo con un programa no-SMP que sólo lanza un proceso. Bueno, siempre tenemos la opción de abrir otra instancia del programa y ponernos a trabajar con el siguiente vídeo (suponiendo que tengas otro, claro). De esa manera tienes dos copias del mismo programa corriendo, una en cada procesador. Muy sencillo y efectivo.
Y qué pasa con juegos (prácticamente ninguno es SMP) y otras aplicaciones no-SMP, con las que no vale esto de abrir dos a la vez? Bueno, pues aquí es donde la gente, viendo las cosas "sobre el papel", cree que los duales no merecen la pena porque no mejoran casi nada el rendimiento, opinión de la que respetuosamente discrepo: es cierto que si estás usando uno de esos programas el programa corre sólo en un procesador, pero tu mírate el administrador de tareas de tu ordenador cuando no estés haciendo nada: aunque no estás haciendo "nada", hay un montón de procesos corriendo. Son procesos del sistema que tienen que estar ejecutándose en todo momento, y aunque chupen muy poquito procesador la clave aquí es que UN procesador sólo puede ejecutar UN proceso a la vez (de momento vamos a olvidarnos del hyperthreading y todo eso). De manera que cuando tu estás ejecutando tu programa -jugando, por ejemplo- en un ordenador con sólo un procesador el sistema tiene que decirle de vez en cuando que pare un momento, que limpie el caché, que ejecute este otro proceso del sistema que está aquí esperando, luego este otro... antes de seguir con el juego. Es decir, que en un monoprocesador todos esos procesos del sistema te hacen desperdiciar muchos ciclos de procesador que tienen que usarse para ellos en vez de para el juego. En un dual, en cambio, todos esos procesos se asignan al procesador "ocioso", y el que está ejecutando la aplicación principal sigue a lo suyo sin que le molesten y sin desperdiciar ciclos.
Bueno, y esto se nota cuando estás haciendo algo? Pues sí, se nota. Ya te digo que sobre el papel no parece que la ganancia sea mucha, pero la ganancia "aparente", la sensación que le da al usuario de un dual, es la de mucha más suavidad: en un sistema dual puedes abrir programas, ejecutar procesos... uno detrás de otro sin sensación de que el sistema se te quede clavado. Yo creo que parte de la razón por la que la mejora es tan aparente es que los sistemas operativos tienen todavía muchas cosas que mejorar (esto es una opinión muy personal y probablemente poco precisa, pero es la sensación que me da): hay procesos a los que les asignan mucha prioridad y los cabrones agarran el procesador y no lo sueltan hasta que se han ejecutado por completo. Un buen ejemplo es formatear un disquete: ponte a formatear uno con un monoprocesador -aunque esto también depende un poco del SO- y verás que no te deja hacer otra cosa, abrir una ventana, nada... hasta que acaba. El proceso ha agarrado el procesador y tiene tanta prioridad que no lo suelta hasta que acaba, aunque no necesite ni el cinco por ciento de los ciclos que está usando. En un dual se puede seguir trabajando, simplemente se asigna el nuevo proceso al segundo procesador.
Lo del formateo es un ejemplo extremo pero ilustra muy bien el asunto. De todas formas yo creo que para hacerse una idea de lo que es trabajar en un dual hay que probarlo, porque es difícil de describir... sencillamente todo va más suave. Yo ya te digo que desde que me monté el primero no he vuelto a mirar atrás, desde entonces todos duales.
Una ventaja adicional que ya he mencionado es que envejecen muy bien, siguen dando la sensación de ser bastante rápidos años después.
Una desventaja es que son más ruidosos y que -sobre todo si vas por el camino AMD- el chipset MPX ya tiene año y pico y no es de lo más rápido, es un bus a 133 MHz. Por otra parte los Athlones (sobre todo XPs con el puente L5 cerrado) son mucho más baratos que los Pentium.
En fin... yo como podéis comprobar recomiendo los duales fervientemente, sobre todo porque además si te estás montando un ordenador nuevo el coste extra no es un porcentaje tan grande del precio total comparado con la ganancia que proporciona.