Está en la página 1de 2

20/2/2020 Manual de SWI-Prolog

Documentación
Manual de referencia
2.22 SWI-Prolog y máquinas de 64 bits
Visión general
Comenzando rápidament La mayoría de las plataformas actuales de 64 bits son capaces de
El archivo de inicializaci ejecutar aplicaciones de 32 bits y de 64 bits. Esto solicita algunas
Archivos de inicializació aclaraciones sobre las ventajas y los inconvenientes del
Opciones de línea de com direccionamiento de 64 bits para (SWI-) Prolog.
Temas de UI
Interfaz GNU Emacs 2.22.1 Plataformas compatibles
Ayuda en linea
Historial de línea de com SWI-Prolog se puede compilar para un espacio de direcciones de
Reutilización de enlaces 32 o 64 bits en cualquier sistema con un compilador de C
Descripción general del d adecuado. La aritmética del puntero se basa en el tipo (u) intptr_t
Compilacion de stdint.h, con una emulación adecuada en MS-Windows.
Control ambiental (bande
Una visión general de los 2.22.2 Comparación de Prolog de 32 y 64 bits
Carga automática de bibl
Paquetes: complementos La mayor parte del uso de la memoria de Prolog consiste en
Recolección de basura punteros. Esto indica el inconveniente principal: el uso de memoria
La sintaxis de SWI-Prolo Prolog casi se duplica cuando se usa el modelo de
Árboles racionales (térmi direccionamiento de 64 bits. Usar más memoria significa copiar
Indización de cláusula ju más datos entre la CPU y la memoria principal, ralentizando el
Amplio soporte de caract sistema.
Límites del sistema
SWI-Prolog y máquinas ¿Cuáles son entonces las ventajas? En primer lugar, el
Plataformas soportadas direccionamiento de SWI-Prolog de las pilas de Prolog no cubre
Comparación de Prolog todo el espacio de direcciones debido al uso de bits de etiqueta de
Elegir entre Prolog de 3 tipo y banderas de recolección de basura . En hardware de 32 bits,
Paquetes las pilas están limitadas a 128 MB cada una. Esto tiende a ser
demasiado bajo para aplicaciones exigentes en hardware moderno.
En hardware de 64 bits, el límite es 2 ^ 32 veces mayor,
excediendo las capacidades de direccionamiento de las CPU y
sistemas operativos actuales. Esto implica que Prolog puede
iniciarse con tamaños de pila que utilizan todas las capacidades de
su hardware.

Las aplicaciones multiproceso se benefician mucho más porque


cada subproceso tiene su propio conjunto de pilas. Las pilas de
Prolog comienzan pequeñas y se expanden dinámicamente (ver
sección 2.21.1 ). La pila C también se expande dinámicamente,
pero el tamaño máximo se reserva cuando se inicia un subproceso.
¡Usar 100 subprocesos en la pila C predeterminada máxima de
39
8Mb (Linux) cuesta 800Mb de memoria virtual!

Las implicaciones de la pérdida de rendimiento teórica debido al


aumento del ancho de banda de la memoria que implica el
intercambio de punteros más amplios dependen del diseño del
hardware. Solo tenemos datos para las arquitecturas populares
IA32 vs. AMD64. Aquí, parece que la pérdida se compensa con un
conjunto de instrucciones que ha sido optimizado para la
programación moderna. En particular, el AMD64 tiene más
registros y se han mejorado las capacidades de direccionamiento

https://www.swi-prolog.org/man/64bits.html 1/2
20/2/2020 Manual de SWI-Prolog

relativo. Cuando vemos una degradación del rendimiento del 10%


al colocar el núcleo SWI-Prolog en un objeto compartido de Unix,
no podemos encontrar una diferencia apreciable en AMD64.

2.22.3 Elegir entre Prolog de 32 y 64 bits


Para aquellos casos en los que podemos elegir entre 32 y 64 bits,
ya sea porque el hardware y el sistema operativo admiten ambos o
porque todavía podemos elegir el hardware y el sistema operativo,
damos pautas para esta decisión.

En primer lugar, si SWI-Prolog necesita vincularse con bibliotecas


nativas de 32 o 64 bits, no hay otra opción, ya que no es posible
vincular el código de 32 y 64 bits en un solo ejecutable. Solo si
todas las bibliotecas requeridas están disponibles en ambos
tamaños y no hay una razón clara para usarlas, las diferentes
características de Prolog se vuelven importantes.

Las aplicaciones Prolog que requieren más del límite de pila de


128 MB proporcionado en el modo de direccionamiento de 32 bits
deben usar la edición de 64 bits. Sin embargo, tenga en cuenta que
los límites deben duplicarse para acomodar la misma aplicación
Prolog.

Si el sistema tiene poca memoria física, Prolog de 32 bits tiene la


clara ventaja de usar solo un poco más de la mitad de la memoria
de Prolog de 64 bits. Este argumento se aplica siempre que la
aplicación se ajuste al espacio de direcciones virtuales de la
máquina. El espacio de direcciones virtuales del hardware de 32
bits es de 4 GB, pero en muchos casos el sistema operativo
proporciona menos a las aplicaciones del usuario.

La única biblioteca SWI-Prolog estándar que se agrega


significativamente a este cálculo es la base de datos RDF
proporcionada por el paquete semweb . Utiliza aproximadamente
80 bytes por triple en hardware de 32 bits y 150 bytes en hardware
de 64 bits. Los detalles dependen de cuántos recursos y literales
diferentes aparecen en el conjunto de datos, así como de los índices
literales adicionales deseados.

Resumiendo, si las aplicaciones son lo suficientemente pequeñas


como para caber cómodamente en la memoria virtual y física,
simplemente tome el modelo utilizado por la mayoría de las
aplicaciones en el sistema operativo. Si las aplicaciones requieren
más de 128 MB por pila, use la edición de 64 bits. Si las
aplicaciones se acercan al tamaño de la memoria física, se ajustan
al límite de la pila de 128 MB y se ajustan a la memoria virtual, la
versión de 32 bits tiene claras ventajas. Para aplicaciones exigentes
en hardware de 64 bits con más de aproximadamente 6 GB de
memoria física, el modelo de 64 bits es el modelo de elección.

https://www.swi-prolog.org/man/64bits.html 2/2

También podría gustarte