Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


5.3.1  Errores en la memoria

§1  Sinopsis

Las memorias pueden producir errores; esto ocurre cuando el dato leído es distinto que el que se escribió originalmente.  Por supuesto la detección y corrección (en lo posible) de errores de memoria es vital para el correcto funcionamiento del sistema.

§2  Clases de error

Los errores se consideran de dos clases:

Errores duros:  Son debidos a averías o daños físicos.  Se presentan de forma recurrente y son los más fáciles de diagnosticar.

Errores blandos:  Ocurren de forma muy esporádica; cuando un bit cambia espontáneamente de 0 a 1 o viceversa.  Son los más difíciles de prever.  Las causa de esta anomalía pueden ser varias:

  • Partículas alfa (en los primeros equipos) por contaminación con uranio y torio del material de encapsulado de las memorias.
  • Rayos cósmicos.  Estos rayos de alta energía pueden cambiar el estado de un transistor o un condensador. El problema es más frecuente en la SRAM que en las DRAM.  Posiblemente se agravará progresivamente con el aumento de la densidad de integración de los chips (componentes cada vez más pequeños).
  • Defectos de suministro eléctrico. En especial el ruido de alta frecuencia en la alimentación. Se recomienda instalar filtros de red.
  • Interferencias de radio frecuencia (RF) motivadas por equipos externos o elementos del propio sistema indebidamente apantallados.
  • Memoria de velocidad inadecuada para el quipo en que se ha instalado (por ejemplo, memoria PC100 en un equipo que necesite PC133).
  • Defectos de temporización.  Por ejemplo, por sobrecarga "Overclocking" del sistema, o por una configuración defectuosa de la frecuencia de refresco en la BIOS.
§3  Sistemas de corrección

Ya desde el principio, la existencia de errores hizo cobrar relevancia a los mecanismos capaces de detectar, y en su caso corregir, los posibles errores que se puedan producir en los procesos de lectura/escritura.  A la fecha se emplean principalmente dos métodos para garantizar la integridad de los datos:  la paridad, y el código de corrección de errores ECC ("Error Checking and Correction").

§3.1  Paridad

Es el método más común y tradicional.  Consiste en que por cada 8 bits (byte) de almacenamiento, se añade 1 bit adicional.  A cambio de aumentar en un 12.5% el tamaño de la memoria, se consigue un cierto control sobre la integridad de los datos, ya que este bit adicional contiene información sobre la paridad del conjunto.  A este respecto existen dos protocolos: paridad par e impar. Su funcionamiento se esquematiza en la tabla siguiente.

Paridad par Paridad impar
Paso 1 El bit de paridad se fija en uno (se activa), si los bits de datos contienen un número par de unos.  Por el contrario, si el número es impar, se desactiva. El bit de paridad se fija en uno si los bits de datos contienen un número impar de unos, y se desactiva si su número es par.
Paso 2 Los 8 bits de datos y el de paridad se almacenan en DRAM. Los 8 bits de datos y el de paridad se almacenan en DRAM
Paso 3 Los datos son interceptados por el circuito de paridad antes de ser enviados al procesador.

Si este circuito identifica un número impar de unos, los datos se consideran válidos.  Se elimina el bit de paridad y se traspasan los bits de datos al procesador.

Si el número de unos es par, el dato se considera erroneo y se genera un error de paridad.

El proceso es análogo al de paridad par.  La diferencia es que el dato se considera válido si el número de unos es par y erroneo en caso contrario.


El modelo de paridad tiene ciertas limitaciones, la principal es que puede detectar el error pero no corregirlo (no sabe cual es el bit erróneo).  Además, si hay más de un bit incorrecto, los bits defectuosos pueden cancelarse entre sí y enmascarar el error (sin embargo, la posibilidad de que esto ocurra es remota).

Paridad artificial.  Algunos fabricantes de equipos de baja calidad utilizan un chip de paridad artificial.  Este chip no almacena en realidad ningún bit extra con la paridad del dato.  En su lugar generan un bit adicional cuando el dato debe se enviado al controlador de paridad con el valor correcto.  En realidad es un método de engañar al controlador de paridad enviándole siempre la señal Ok.  A continuación incluimos un párrafo de la Guía Debian de Instalación de Linux, relativo a este aspecto de la memoria, que consideramos muy ilustrativo.

RAM con paridad falsa o "virtual":  Probablemente obtendrá módulos de memoria con paridad virtual en lugar de módulos con paridad real si solicita RAM con paridad en una tienda de informática.   Los SIMMs con paridad virtual pueden distinguirse frecuentemente (pero no siempre) porque sólo tienen un chip más que un SIMM sin paridad, y porque el chip extra es más pequeño que el resto.  Los SIMMs con paridad virtual trabajan exactamente como la memoria sin paridad.  No pueden decirle cuando se produce un error de bit simple en RAM, algo que sí hacen los SIMMs con paridad real en una placa base que implemente paridad.  Nunca pague más por un SIMM con paridad virtual que por uno sin paridad.  En cambio, si que puede llegar a pagar un poco más por SIMMs con paridad real, porque en realidad está comprando un bit más de memoria por cada 8 bits.

Copyright © 2004 © el equipo del instalador de Debian

§3.2  ECC:

Este sistema ECC ("Error Checking and Correction") se basa en un algoritmo más complejo, y se utiliza en PCs de gama alta, como servidores de Red.  El sistema trabaja en conjunción con el controlador de memoria, y anexa a los bits de datos los bits ECC, que son almacenados junto con los de datos.  Estos bits extras, junto con la decodificación correspondiente, sirven para realizar la comprobación en el momento de la lectura.

Su diferencia principal con la paridad es que puede detectar el error de un bit y corregirlo, con lo que generalmente el usuario no detecta que se ha producido un error.  Dependiendo del controlador de memoria utilizado, el sistema ECC también puede detectar errores de 2, 3 y 4 bits (sumamente raros), aunque en este caso no puede corregirlos; en estos casos devuelve un error de paridad.

Nota:  Tener en cuenta que la verificación de errores (ECC o paridad) depende más del la placa-base (tipo de controlador de memoria utilizado) que de la memoria en sí.  La memoria pone el almacenamiento, pero es el controlador el que decide como se utilizará.  Generalmente para poder utilizar una memoria ECC es necesario un controlador que pueda utilizar esta tecnología.

En ambos casos, paridad o ECC, cuando se detecta un error se produce una excepción no enmascarable (NMI H2.4).  Lo que sucede a continuación depende del Sistema.   En algunos casos el procesador se detiene y lanza una rutina que deja la pantalla en blanco (o azul) y muestra el error.  En otros se permite ignorar el error, guardar el trabajo en curso y continuar.   En cualquier caso, después de uno de estos errores, es conveniente pasar al equipo un test de memoria especializado, más severo que el realizado por la POST de la BIOS.

Nota:  En los sistemas Windows es frecuente que los errores de memoria en los momentos de carga del Sistema generen mensajes de aviso indicando que algún fichero importante está corrompido o falta, y debe reinstalarse el Sistema.  En estos casos es imprescindible realizar un chequeo exaustivo de la memoria antes de realizar ningún cambio en el software.