TamaƱo optimo de campo
A vueltas con mi compresor, vermensajes mios en este foro, me surje la siguiente duda :
La compresion de un archivo de 800 megas, supone la realizacion de aproximadamente 400 millones de operaciones simples, division, con un entero de 8 bytes, 200 si uso enteros de 16 bytes y 100 si los uso de 32 bytes, caso de ser posible.
Dicho esto y teniendo en cuenta la arquitectura de los coprocesadores, cual seria, en vuestra opinion el tamaƱo optimo para que el proceso de una operacion consuma el menor numero de ciclos e instrucciones posibles y que el tiempo de proceso sea el menor.
Agradeceria que me razonarais la respuesta.
La compresion de un archivo de 800 megas, supone la realizacion de aproximadamente 400 millones de operaciones simples, division, con un entero de 8 bytes, 200 si uso enteros de 16 bytes y 100 si los uso de 32 bytes, caso de ser posible.
Dicho esto y teniendo en cuenta la arquitectura de los coprocesadores, cual seria, en vuestra opinion el tamaƱo optimo para que el proceso de una operacion consuma el menor numero de ciclos e instrucciones posibles y que el tiempo de proceso sea el menor.
Agradeceria que me razonarais la respuesta.
Buenas, no se por que afirmas que la compresion de una archivo de 800 mgeas necesita 400 millones de operaciones simples de 8 bites. Ya que me parece depende totalmente del algoritmo que utilices para comprimir.
Respecto a que tamaƱo es mejor, creo que depende de la arquitecutra, hasta el 586 el bus de datos es de 32 bits y el micro estaba optimizado para estas instruccioens, por lo que seria lo mejor. Osea leer un byte tarda lo mismo que leer 4 en caso de que esten alineados. Lo mismo que en un Pentium en adelante tarda lo mismo leer un byte que 8, por que el bus es de 64 bits externamente, sin embargo el bus del cache es mayor, por lo que lo mejor seria directamente utilizar registros XMM a mi parecer de 128 bits. Que aparte paralelizan las cuentas...
Obviamente todos los accesos a memoria deben ser alineados, sino la performance se cae muchisimo.
Saludos.
Mariano.-
Respecto a que tamaƱo es mejor, creo que depende de la arquitecutra, hasta el 586 el bus de datos es de 32 bits y el micro estaba optimizado para estas instruccioens, por lo que seria lo mejor. Osea leer un byte tarda lo mismo que leer 4 en caso de que esten alineados. Lo mismo que en un Pentium en adelante tarda lo mismo leer un byte que 8, por que el bus es de 64 bits externamente, sin embargo el bus del cache es mayor, por lo que lo mejor seria directamente utilizar registros XMM a mi parecer de 128 bits. Que aparte paralelizan las cuentas...
Obviamente todos los accesos a memoria deben ser alineados, sino la performance se cae muchisimo.
Saludos.
Mariano.-
