martes, septiembre 19, 2006

Google
 
Web www.sistemaxp.blogspot.com

Problemas con 4 GB o mas de memoria No se ve toda la memoria instalada (32 – 64 bits)

Problemas con 4 GB o mÁs de memoria.
No se ve toda la memoria instalada (32 – 64 bits)


Problema: No se puede usar desde Windows toda la memoria instalada cuando esta es de 4GB o más. Realmente, en algunas placas base, este problema puede surgir con más de 2 GB de memoria.

Introducción

Recordemos primero la posibilidad de direccionamiento de memoria de los sistemas de 32 y 64 bits (XP 32 bits, W2000/W2003 32 bits, XP 64 bits y W2003 64 bits). El concepto es igualmente ampliable a Linux y otros sistemas operativos.

* En 32 bits: aunque el bus de direcciones ya es de 64 bits, se puede direccional (teóricamente):

Modo Normal: 4 GB de memoria (2 elevado a 32)
Modo PAE : 64 GB de memoria (16 veces más debido a que se pueden usar 4 bits de uno de los registros de control).

* En 64 bits: se pueden usar xx bits del bus de direcciones: (siempre está activo el modo PAE)

Limitado por el sistema operativo:http://support.microsoft.com/kb/294418/es

¿Qué es el modo PAE?

Nos ceñimos a 32 bits (ya que en 64 siempre está activo). Debemos distinguir dos modos de funcionamiento del PAE, o mejor dicho, el PAE a nivel general, y las restricciones impuestas en el SP2 de XP en particular (sólo en el SP2).

El modo PAE es Phisical Address Extension. Usa 4 bits de un registro de control para poder poner un nivel más de indirección a la memoria virtual y por tanto poder alcanzar un total (teórico) de memoria física 64 GB. Recordemos que este limite es el teórico que posteriormente está restringido por el sistema operativo. W2000 / W2003 Server y los sistemas W2000 Profesional, XP Profesional y XP Home, están limitados, funcionando o no en PAE, a un máximo de 4 GB de memoria. W2000/W2003 Advanced Server y posteriores amplían, en función de la versión instalada este limite y son los únicos capaces de superar los 4 GB.

Para activar el modo PAE, se debe incluir el modificador /PAE en el boot.ini manualmente. El modo PAE carga un núcleo especial de Windows y no el núcleo normal.
Ventajas e inconvenientes del modo PAE

Como ventaja, está en los sistemas de más de 4 GB de memoria y cuando el sistema operativo lo soporte, el poder direccionar más de 4 GB de memoria.

Como inconvenientes, hay principalmente dos:

1) Se penaliza ligeramente el acceso a memoria. Triple (en vez de doble) indirección en las tablas de PTE.

2) Los drivers, que funcionan en modo Kernel, deben estar preparados para ello, es decir: ser capaces de manejar apuntadores de 64 bits. Los drivers certificados deben superar este requerimiento, pero es dudoso que los drivers no certificados, y sobre todo orientados al gran público (a sabiendas de que usa sistemas del estilo XP), se hayan molestado los desarrolladores en realizarlos correctamente. Un fallo en el manejo de direcciones provocará irremediablemente pantallazo azul y posterior reinicio.
Introducción al problema desde el punto de vista hardware

Hemos visto en la parte anterior, la introducción a la parte "software". Más adelante veremos algunas limitaciones del software sobre todo en el SP2 de XP.

Pasemos ahora ahora a ver las limitaciones hardware, y cuándo estas son evitables y cuándo no.

Por diseño de la arquitectura de las placas madre, y esto será inevitable mientras se siga con variantes de la primera arquitectura AT que data del año 82, todos los recursos accesibles de la máquina usan direcciones de memoria. Su acceso es mediante MMIO (Memory Mapped I/O —> Entrada / Salida mediante Memoria Mapeada).
Lo anterior quiere decir que, el acceso a recursos de la propia máquina y tarjetas instaladas en ella, se hace a través de direcciones de memoria.

¿Qué sucede entonces si las direcciones de memoria usadas están realmente ocupadas por memoria física, tiras de memoria, que tenemos instaladas?

Sencillo: la BIOS simplemente ignora la memoria física y remapea esas direcciones apuntándolas al dispositivo físico. Este dispositivo puede ser por requerimientos de la placa madre, o del propio bus PCI, o bien requerimientos de las tarjetas instaladas (típicamente la que más consume es la memoria de la tarjeta de vídeo).

Este remapeo de memoria es lo que técnicamente se llama Memory Holes (agujeros de memoria). Cuando el sistema operativo localiza un Memory Hole, termina el recuento de memoria y ese será el limite máximo direccionable.

Por compatibilidad, tanto con dispositivos hardware como sistemas operativos, las BIOS asignan dichos Memory Holes por debajo del espacio de direcciones de los 4 GB.

Veamos un ejemplo de los anuncios de los fabricantes (en este caso para el chipset nForce):
En http://www.msicomputer.co.uk/Products.aspx?product_id=703538&cat_id=77 (nForce 4) se anuncia que soporta 4 GB. Pero en http://www.msicomputer.co.uk/Products.aspx?product_id=703505&cat_id=77 (nForce 3) se avisa explícitamente que no todos los 4 GB serán direccionables.
Por alguna oscura razón, MSI de UK da esta información. Pero en las pagina "globales" de MSI no se da. Puestos en contacto con el servicio técnico de MSI informan: "Sorry, but all boards does have this limitation with standard desktop boards". (mail del 26/05/2005). nForce 4 tampoco resuelve el problema a pesar que sólo está documentado en nForce 3, y además sólo en UK. ¿Problemas legales quizá en ese país por posible omisión de la información?.

Bien, he expuesto el caso de MSI, pero esto puede generalizarse a otros fabricantes: ASUS, TYAN,.... etc). Antes de continuar con la exposición de problemas hardware en ciertos chipsets, tengo que agradecer personalmente las informaciones que me han sido suministradas por el servicio técnico de Supermicro (caso de chipset Intel -procesador Intel-) y por el servicio Técnico de TYAN (chipset no Intel - procesadores AMD-).
Funcionamiento de los CHIPSET de las placas madre

* Asignar recursos por debajo del espacio de direcciones de 4 GB típicamente a:

1) Soporte para el Chipset
2) Soporte para la BIOS
3) Soporte para las Aplicaciones

Se asigna espacio de direcciones (normalmente entre los 2 y 4 GB) para los dispositivos.

* La asignación típica en una placa madre con PCI expresas es de 1 GB

* La asignación típica en una placa madre AGP es más variable. Depende también de la apertura AGP asignada en la BIOS. En este caso es conveniente, con las tarjetas gráficas actuales (128, 256 GB), bajar dicho parámetro en la BIOS al valor mínimo posible.

Conseguiremos direccionar más memoria:

a) Usando tarjetas gráficas con menos memoria.
b) En el caso AGP, bajando al mínimo posible la apertura AGP en la BIOS.
c) No instalando tarjetas que usemos poco, o que sean sustituibles por otras de funcionalidad USB. Por ejemplo, una tarjeta sintonizadora de TV, nos puede quitar medio giga de memoria (dependiendo de las fronteras asignadas a los slot PCI por el chipset), mientras que el mismo dispositivo USB 2.0, no nos quitará memoria real.

Existen igualmente dos posibilidades en los chipset de las placas madre:

1) Que permitan "remapping" de los recursos por el sistema operativo.
2) Que no lo permitan.

En el caso 2) es evidente que no podremos hacer nada, tengamos o no PAE, o sistema operativo de 64 bits. El limite estará impuesto por el hardware.

Típicamente podemos distinguir dos tipos de chipset:

A) Chipset Intel (para procesadores Intel).
B) Chipset no Intel -VIA, SiS, nForce, AMD- (para procesadores AMD). NOTA: nForce soporta (según su documentación) también procesadores Intel, pero su estabilidad en ese caso es desastrosa, por lo que ignoramos esta casuística.

En general A) -chipset Intel- siempre permite 1). Únicamente hay que matizar limitaciones (documentadas en la web de Intel) para el chipset 915 y 925.
Aunque algunas placas madre no admitan remapeo hardware (y por tanto la BIOS no sea capaz de "contar" todos los GBs instalados, sí permiten remapeo software, y por tanto, el sistema operativo podrá remapear (con /PAE, teniendo presente los comentarios anteriores de posibles inconvenientes) por encima del espacio de direcciones de 4 GB y así, será accesible toda la memoria instalada.

En general B) -chipset *no* Intel- no permite remapeo software. Únicamente, algunas variantes de chipset, en particular el NorthBridge, debe soportarlo.
Lo primero, recordar que la BIOS, siempre por defecto en estas placas madre asume que NO es posible el remapeo. Por tanto hay que entrar en la BIOS y localizar la opción de "remapping". Si la tiene, puede, sólo puede, que el sistema operativo sea capaz de usarlo y además debemos activarlo (por defecto, en la actualidad, en las placas madre probadas por mi, dicha opción viene desactivada.
Recordemos, que quizá debido a la transparencia y fluidez de información entre Microsoft e Intel, los sistemas operativos usan sin problemas los chipset Intel. Hay problemas serios, históricamente, en el uso de otros chipset -incluso con sistemas como Linux- que a veces se palian con drivers de los fabricantes los cuales nos esclavizan a versiones especificas de ellos para versiones especificas de sistemas operativos y, en muchos casos, estos drivers no pasan una mínima certificación WHQL.

NOTA: Lo anterior es válido tanto para sistemas operativos de 32 bits como para sistemas operativos de 64 bits y por tanto, para tarjeta madre y CPU"s anteriores de 32 bits, o las más actuales de 64 bits
Problemas inherentes a XP SP2 (sólo SP2)

Al implementarse el DEP (protección de memoria ante posibles ataques de desbordamiento de buffer), es necesario cargar el modo PAE para poder marcar las tablas de direcciones con el bit de protegido (protección a nivel software. Si la protección es a nivel hardware, y el procesador soporta el bit NX, es obligatorio ya PAE).

Microsoft en este punto, y para los sistemas operativos de consumo (XP), se encontró con el problema de compatibilidad de los drivers. En modo PAE todos deberían ser certificados. Recordemos los centenares de drivers de dispositivos, sobre todo periféricos, USB, etc. que no son certificados y que, por supuesto, no "entienden" de direcciones de 64 bits como exige el modo PAE.
En este caso, Microsoft decidió usar siempre modo PAE, pero un modo PAE restringido. Es decir, seguirá usando direcciones de 32 bits, pero con los tres niveles de indirección comentados anteriormente. Puede encontrarse la documentación en los documentos de manejo de memoria, funcionamiento del DEP en la documentación de Microsoft sobre los posibles impactos del SP2 en XP.

De esta manera, todos los drivers funcionarán. Pero estaremos restringidos a menos de 4 GB de memoria ya que el sistema operativo, en este caso, *nunca* remapeará las direcciones asignadas por el hardware. Depende del "consumo" de los dispositivos (ver los trucos comentados en el capítulo anterior) así será la memoria máxima que XP+SP2 podrá direccionar. Con XP normal, o bien XP+SP1, o cualquier otro sistema operativo W2000 / W2003 puede remapearse con /PAE y por tanto tener accesibles los 4 GB de memoria completos, siempre y cuando estemos en los supuestos de que el chipset lo soporte y comentados en el capítulo anterior.
RESUMEN para 4 GB o más de memoria

* Chipset Intel. No es necesario hacer nada.
* Chipset *no* Intel: la BIOS debe soportar y además estar activado en el NorthBridge el "remapping by software".

Sistemas operativos de 32 bits:

W2000 / W2003 / XP / XP-SP1: Usar /PAE en el boot.ini
XP-SP2: no se puede usar toda la memoria instalada. Tipicamente pueden usarse de 2,5 GB a 3,5 GB.

Sistemas operativos de 64 bits:

No es necesario hacer nada excepto lo comentado al principio de este capítulo. Si el chipset y BIOS lo soportan y además el sistema operativo conoce el chipset y puede remapearlo, lo hará. En otro caso es imposible usar toda la memoria.


CONCLUSIÓN

Debido, sobre todo, a que el oscurantismo de ciertos fabricantes de hardware roza lo que yo llamaría estafa por omisión de información, está claro que si una placa madre se anuncia para soportar 4 o más GB de memoria, debería poder direccionarlos cualquier sistema operativo con dicha capacidad.
Pero parece, a la vista de lo que sucede, que lo que quieren decir es que les puedes pinchar 4 GB. Sólo eso.
Y que perderás memoria: típicamente 1 GB en las actuales placas madre. Pero esto no se dice (o se dice en algún manual técnico en la letra pequeña).
Lo que he descrito con respecto al hardware, ya no es sólo de uso restringido para sistemas de 32 bits / procesadores de 32 bits, sino también para sistemas y procesadores de 64 bits (lo cual, tiene más delito).




Nota Autor: Brianxp