Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Punteros de 64bit

Draco's Diary
Por Draco
departamento cosas geeks , Sección Diarios
Puesto a las Thu Jan 22nd, 2004 at 11:12:03 PM CET

Hace poco apareció en esta entrada del diario de "man ls", el tema del espacio de direccionamiento que hay disponible en las arquitecturas de 64bits que son soportadas por Linux. Según contaba ridiculum, sólo en Alpha se disponían de los Petabytes direccionables correspondientes(¿unos 16000?), mientras que en el resto de arquitecturas te tenías que conformar con los 4GB de rigor. Pués bien, planteada la cuestión y dada la influencia de libertonia, ha aparecido en Slashdot una historia para discutir las ventajas e inconvenietes de disponer de tan enorme espacio de direccionamiento

 


Resumiendo las opiniones

  • Punteros más grandes implica más memoria consumida, y lo que es peor más caché. Hay que tener en cuenta además que el uso de punteros es especialmente intensivo en ciertos lenguajes(cómo Python o Lisp). En Python una lista de 10000 enteros en realidad son 10000 punteros a entero, ocupando 10000(tamaño_entero+tamaño_puntero).
  • Por supuesto las máquinas con procesos que necesiten más de 4GB de memoria virtual se ven beneficiadas. Ésto es más común de lo que pensamos porque no es raro mapear un fichero de más de 4GB en memoria mediante mmap().
  • Éste tipo dice que Linux sobre SPARC es un 30% más lento como norma, si se compila para tener punteros de 64b en espacio de usuario. Puede ser una fantasmada porque no da pruebas y googleando no he encontrado que se pueda compilar la glibc para disponer de esos punteros. Eso sí, recuerdo haberlo leído algo parecido hace unos días en el mismo Slashdot, en una historia sobre esas pedazo de máquinas que son las Ultra SPARC5 ¿verdad melenas :-)?

¿Qué?¿Se le puede sacar más jugo al tema?

< Mozilla con eñe (2 comments) | Otro traidor: De Debian a Mandrake (y van tres) (48 comments) >
Enlaces Relacionados
· Slashdot
· escomposlinux.org
· esta entrada
· una historia
· Éste tipo
· algo parecido
· una historia[2]
· More on Draco's Diary
· Also by Draco

Encuesta
Punteros de 64bits
· ... Síiiii, a muerte... 50%
· ... por encima de mi cadaver 50%

Votos: 8
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

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 ]


 
Haciendo zumito ;) (none / 0) (#1)
por ridiculum a las Fri Jan 23rd, 2004 at 01:41:28 PM CET
(Información Usuario)

He estado mirando un poco por google el tema este (lo siento, pero no tengo las maquinas ahora mismo a mi lado y con disponibilidad de red para poder probar otros SO, y tampoco tenemos todas las arquitecturas del mundo ;).

Vayamos por orden.

El uso de archivos de mas de 4 GB, ahora mismo lo veo normal en BBDD y en gente que trate video, no se me ocurren mas casos y estos, creo yo, tampoco son muy comunes, asi que la necesidad de punteros de 64bits no sea demasiado acuciante.

En linux/sparc64 en teoria si puede existir el espacio de usuario de 64 bits, pero por lo pronto y que yo recuerde ahora mismo, nadie lo usa. Hasta hace nada GCC no era capaz de generar codigo de 64 bits para sparc64 y segun se puede leer en la web de debian sobre el port y en la faq de aurora, no estan muy por la labor de tener un espacio de usuario de 64 bits. En la lista de desarrollo de aurora tambien se ha comentado este asunto varias veces. La verdad es que tiene sentido, al menos lo tiene en el caso de sparc64.
Si tomamos uno de los casos tipicos donde se suele necesitar 64 bits y lo llevamos sobre sparc, ¿que sucede?. Compramos una maquina a Sun, algo normalito, nada pretencioso: Sun Fire B100s Blade Server. Precio $4,795.00. Ahora ponemos el Oracle pertinente y elegimos SO. ¿Alguien se gasta $4,795.00 en ese maquina para instalar Oracle sobre Linux y no tene soporte? Yo creo que nadie haria eso.

Hay mas arquitecturas con soporte de 64 bits. Asi a bote pronto: ia64, alpha, x86-64, ppc970 (el G5) y mips64.
  • ia64: Espacio de usuario de 64 bits
  • alpha64: Quedamos en que esta si tiene el espacio de usuario de 64 bits
  • x86-64: Parece que aun no tiene espacio de usuario de 64 bits.
  • ppc970: No se nada
  • mips64: Se menos ;)
Hay un mensaje a la lista de ia64-linux interesante. Basicamente lo que se propone es tener espacios mixtos de 32 y 64 bits, y esto es bastante interesante por que solo tendriamos la sobrecarga de los los 64bits en las aplicaciones que realmente lo necesitan.

Esto es lo que respecta a linux, pero ¿y el resto de SO?

Veamos OpenBSD.
A partir de un mensaje de David S. Miller (uno de los gurus de linux-sparc) a la lista de gcc-bugs podemos concluir que OpenBSD tiene un espacio de usuario de 64 bits en sparc64. El mensaje en cuestion aqui No veo gran cosa de OpenBSD-ia64 y OpenBSD-x86-64

Faltaria por mirar NetBSD y FreeBSD. FreeBSD ha tenido un port sobre alpha desde hace tiempo, asi que es bastante posible que el espacio de usuario sea de 64 bits. Los ports a x86-64, ia-64 y sparc64 comenzaron en la serie 5.x. Google no ha sido benevolo conmigo y no he visto gran cosa util.

NetBSD se lo dejo a otro, que llevo mucho tiempo mirando google ;)



Acabando la googleada (none / 0) (#2)
por Draco a las Fri Jan 23rd, 2004 at 05:30:34 PM CET
(Información Usuario)

Parece que NetBSD/Alpha y NetBSD/SPARC tienen soporte para punteros de 64bits, según se puede leer en este mensaje, aunque no es demasiado reciente. Probablemente NetBSD/amd64 también lo tenga.

Hay que ver, cómo nos lo pasamos :-)
There are two major products to come out of Berkeley: LSD & BSD Unix. I don't believe this to be a coincidence.
[ Padre ]


 
Punteros de 64bit | 6 comentarios (6 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

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