filetefrito escribió:
Juraría ( aunque no pongo la mano en el fuego, ya que siempre me acabo liando) que el branch predictor y la ejecución in order o out of order, poco tienen que ver. Si no recuerdo mal, los cores ppc tanto de x360 como de ps3, tienen su correspondiente branch predictor, al contrario que los spu de ps3.
Pues tienen que ver, hay tecnicas de predicion de salto que son aplicables a ejecucion en orden, son basicas pero utiles, pero las tecnicas mas avanzadas solo son aplicables a ejecucion fuera de orden.
filetefrito escribió:
A mi tambien me dijeron en su dia que sistemas multinucleo no implican duplicar el rendimiento y que alcanzar un 50% ya es un exito.
Bueno, es realidad no es dificil alcanzar un 80% de mejora, pero eso ya depende de programador y del metodo que use para el balanceo de carga de los hilos, por supuesto hay aplicaciones que jamas se beneficiaran de un segundo hilo, pero no es el caso de juegos y aplicaciones de 3D, imagen, video... , hay ejemplos claros en algunas universidades de la importancia del metodo a la hora de programar los hilos, un caso del que se hablo fue un reto entre dos profesores, uno decia que en un problema matematico concreto el uso de un segundo procesador solo mejoraba como maximo un 40% el rendimientro, y otro profesor le demostro que se podia llegar a mejorar asta mas de un 80%, cuando se analizo la solucion de este ultimo se dijo que estaba mal programado ya que no seguia los estandares en la programacion de hilos, este ultimo lo programo en base a un estudio que hizo del balanceo de cargas de las operaciones y el flujo que seguian los datos, cuando enseño el estudio tuvieron que admitir que estaba bien programado en base al analisis previo aunque no siguiese los estandares de la programacion de hilos, usaba tecnicas de ejecucion en paralelo y en streaming mezcladas.
PD. hay una prueba sencilla que demuestra que el hypertreading no duplica el rendimiento de la CPU. Se coge un archivo de mas de 1GB y un compresor en linea de comandos, da igual que sea compresor MP3, ZIP o lo que sea, pero que no soporte varias CPUs, se crea un escript que mida lo que se tarda en comprimir el archivo dos veces con afinidad a la misma CPU y prioridad maxima, ahora se coge y se crea otro script que genere dos instancias del compresor cada una con una afinidad de CPU diferentes con prioridad maxima y que mida lo que se tarda en comprimir ambos archivos. luego se calcula en base a los tiempos la mejora de rendimiento.
Si se hace esta prueba en un sitema con dos CPU y en un sitema con una unica CPU que soporte hypertreading y lo tenga activado, se vera la diferencia de mejora maxima de potencia del sistema.
el el sitema de hyperteading la mejora jamas llegara al 30% mientras que el istema con dos CPUs la mejora sera cerca la 100%