Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
Punteros de 64bit | 6 comentarios (6 temáticos, editoriales, 0 ocultos)
Si y No... (vamos es una opinion) (4.66 / 3) (#3)
por Spinete (spinete@barriosesamo.org) a las Fri Jan 23rd, 2004 at 05:40:55 PM CET
(Información Usuario)

Hola libertonianos, os comentaré mi experiencia en lo referente a arquitecturas 64-bit.

En mi trabajo estamos portando ciertas aplicaciones de genética a una nueva máquina IBM que saldra este año (aún bajo desarrollo) basada en arquitectura PPC970. Es la denominada pBlade, actualmente ya se pueden encontrar en el mercado, pero solo con procesadores Intel Xeon.

Estas máquinas se venden en tarjetas (tipo Rack empotrado en armarios) y poseen 2 procesadores RISC-PPC970. Además estan siendo diseñadas para llevar GNU/Linux como sistema operativo y unas versiones de GCC o XLC (de IBM) de 64-bits como compiladores por defecto.

Bueno al grano,... Aunque mucha gente piense que la arquitectura de 64-bits ofrece más rendimiento, esto no es siempre cierto. Nosotros hemos estado sacando benchmarks de nuestras aplicaciones portadas, y la mayoria de veces ofrece algo de mejor rendimiento cuando estas se compilan en 32-bits que cuando se hacen en 64-bits.

Para entenderlo mejor, pongamos un ejemplo para la arquitectura PPC970-RISC:

  • Imaginemos que tenemos un texto en una zona de memoria X, y conocemos la @ del primer carácter. Esta zona de memoria la veremos mediante una @ de 64-bits (ya que compilamos el programa en arquitectura de 64-bits, por ejemplo usando el flag -m64 de gcc o -q64 de xlc).

    msg:
    .string "Hola, libertonianos!\n"
    len = . - msg # Longitud del mensaje

  • Pongamos por ejemplo que lo queremos hacer ahora es printar ese mensaje de texto por pantalla. Lo que deberemos hacer es cargar la dirección de memoria del primer carácter en un registro determinado, para luego realizar una llamada a sistema (sc o interrupción software) que nos printe el texto. Veamos como sería esto en código máquina RISC:

    En 32-bit:

    lis 4,msg@ha # Cargamos parte alta de @ del mensaje (bits 16-31) en reg 4
    addi 4,4,msg@l # Cargamos 16 bits restantes en parte baja del registro

    li 5,len # Caracteres a printar
    sc # Llamada al kernel (sc o int)


    Como vemos nos ha llevado 2 instrucciones cargar una zona de memoria de 32-bits hacia un registro. Algunos de vosotros os preguntareis, pero porque no carga entonces toda la @ de 32 bits en una única instrucción?

    La respuesta es muy sencilla,... por que no se puede, es imposible.

    Recordemos que los RISC tienen la limitación de que las instrucciones poseen longitud fija de 32-bits. Por lo tanto si restamos los bits de codigo de operación (lis, li, sc, ...) los bits del identificador del registro y demás tan solo nos quedan 16 bits para la carga del operando. Por ello debemos realizar esta operación en dos fases.

    En cambio en 64-bit passa lo siguiente:

    lis 4,msg@highest # Cargamos bits 48-63 en registro 4
    ori 4,4,msg@higher # Cargamos bits 32-47 en registro 4
    rldicr 4,4,32,31 # Shift izq de los bits del reg 4, para cargar el resto
    oris 4,4,msg@h # Cargamos bits 16-31
    ori 4,4,msg@l # Cargamos bits 0-15

    li 5,len
    sc # Printamos el mensaje

    Ahora en cambio, hemos necesitado 5 instrucciones para cargar una @ de memoria de 64-bits.

    Eso es... de 2 instrucciones (32-bit) hemos pasado a necesitar 5 (64-bit) para cargar la @ en un registro y printar el texto. Consecuencia... ciertos programas se ejecutan ligeramente más lentos.

Por ello mi opinión es: Procesadores de 64-bits? si, pero solo si es realmente necesario (corremos aplicaciones en sistemas multiusuario con un gran consumo de E/S y de memoria).

Si deseamos tener computadores dedicados a realizar, por ejemplo, búsquedas en B.D. o en secuencias genéticas, que pueden llegar a ser realmente grandes (nosotros tratamos con algunas de hasta 9 Gigas) y deseamos que más de un usuario pueda realizar peticiones (más de un programa de búsqueda corriendo) el espacio de memoria es crítico y por lo tanto necesitaremos forzosamente un direccionamiento de 64-bit. En cambio para uso doméstico lo considero, nada más que por ahora, una autentica burrada.

En definitiva en mi casa me sigo quedando con mi arquitectura 32-bit.

Saludos!
"All those moments, will be lost in time like tears in rain..." - Blade Runner


Articulillo en OSNews (4.00 / 2) (#6)
por jorginius ("jorginius" en Google Mail) a las Sat Jan 24th, 2004 at 11:40:15 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

Una comparativa entre binarios compilados en 32 y 64 sobre la misma plataforma (UltraSparc, o sparcv9): Are 64-bit Binaries Really Slower than 32-bit Binaries? y ya hay un hilo de discusión sobre el benchmark en Slashdot por si queréis leer más opiniones aparte de las de OSNews.

Sobre la comparativa, los binarios se compilan para 64 bits pero no toca para nada el kernel, con lo que las llamadas al sistema siguen siendo de 32 bits (por mucho que uses -m64 en una Ultra, los punteros que le pases al mmap() seguirán siendo de 32 bits, por ejemplo).

[ Padre ]


 
printar no... (none / 0) (#4)
por preage a las Fri Jan 23rd, 2004 at 09:52:05 PM CET
(Información Usuario) http://geocities.com/dariapra

... ¡imprimir!:

...
Pongamos por ejemplo que lo queremos hacer ahora es
printar ese mensaje de texto por pantalla. Lo que deberemos hacer es cargar la dirección de memoria del primer carácter en un registro determinado, para luego realizar una llamada a sistema (sc o interrupción software) que nos printe el texto. Veamos como sería esto en código máquina RISC:
...


[ Padre ]


"la culpa" la tienen estos americanos ;) (none / 0) (#5)
por Spinete (spinete@barriosesamo.org) a las Fri Jan 23rd, 2004 at 10:57:33 PM CET
(Información Usuario)

Es que con esto de que los anglosajones fueron los "pioneros" de las tecnologias a uno se le quedan los "palabros" y hacen mella en la lengua autoctona :D.

"All those moments, will be lost in time like tears in rain..." - Blade Runner
[ Padre ]


 

Punteros de 64bit | 6 comentarios (6 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda