23 votos

¿Cómo evitan los ordenadores los errores de cálculo?

Si un transistor falla y causa que toda la computación sea incorrecta, ¿cómo verifica una computadora si es correcta? Mi única suposición es que lo hace varias veces en diferentes unidades. Intenté buscar información en línea pero realmente no sé qué buscar y, dado que los programas complejos pasan por miles de millones de ciclos, mi intuición me dice que hay una forma de prevenir errores de cálculo.

Estoy buscando una lista de puntos de partida donde pueda comenzar a aprender campos, términos y libros de texto cercanos; no tengo muchos conocimientos en este campo, pero he cursado quantum 1 y 2 y tengo conocimientos generales sobre ingeniería eléctrica, incluyendo lógica de primer orden.

38voto

winny Puntos 49

¿Cómo verifica una computadora si es correcta?

La mayoría no lo hará. Tu PC de escritorio promedio no es crítico para la misión, por lo que solo hay algunas verificaciones de hardware, como firmwares firmados y verificaciones de TPM, pero si tu CPU ya no puede contar correctamente, simplemente se bloqueará o no podrá arrancar. Las fallas después de la etapa de fabricación son tan raras que esto no es una preocupación para la mayoría de los usuarios durante la vida útil de una PC.

Si das un paso más allá de una PC de escritorio y pasas a un servidor, entra en juego la memoria ECC. Detectará errores en la memoria y los corregirá sobre la marcha, pero aún asume que la CPU cuenta correctamente.

Un paso más allá sería una PC de control industrial (de gama alta), con redundancia. En ese caso, puedes tener un watchdog o algo más elaborado para desactivar la PC completa si ocurre un error de conteo, que fallará al actualizar el watchdog, y la PC redundante tomará el control.

Lo más avanzado que he escuchado es SpaceX en sus cohetes, que tenían esquemas de votación 2-de-3 elaborados e hipervisores redundantes hechos con hardware X86. Detectará cualquier desviación y dejará de escuchar a esa CPU cuando esto ocurra, siendo lo suficientemente redundante como para que varios CPUS fallen al mismo tiempo.

20voto

jerm Puntos 196

Redundancia Modular Triple (TMR)

Para computadoras diseñadas para operar en ambientes que pueden verse afectados por Alteraciones Únicas de Eventos (SEU) debido a radiación, por ejemplo para espacio o aceleradores de partículas, la Redundancia Modular Triple (TMR) puede ser utilizada en el diseño para agregar protección. Por ejemplo, de Gaisler Research:

  1. Un microprocesador portátil y tolerante a fallos basado en la arquitectura SPARC V8 que tiene el resumen:

    Se presenta la arquitectura e implementación del procesador LEON-FT. LEON-FT es un procesador de 32 bits tolerante a fallos basado en el conjunto de instrucciones SPARC V8. El procesador tolera errores transitorios de SEU mediante el uso de técnicas como registros TMR, EDAC en chip, paridad, reinicio de pipeline y falta forzada de caché. Los primeros prototipos fueron fabricados en el proceso CMOS de 0,35 μm de Atmel ATC35, y sometidos a inyección de fallos por iones pesados en el Ciclotrón de Lovaina. Las pruebas con iones pesados mostraron que todos los errores inyectados (> 100,000) fueron corregidos con éxito sin impacto en el tiempo ni en el software. Se midió que el umbral de SEU del dispositivo estaba por debajo de 6 MeV mientras que se utilizaron niveles de energía de iones de hasta 110 MeV para la inyección de errores.

  2. Redundancia Modular Triple Funcional (FTMR) que es un informe para la AGENCIA ESPACIAL EUROPEA (ESA) tiene el siguiente alcance:

    Este documento discute el uso de la Redundancia Modular Triple (TMR) para la protección de lógica combinatoria y secuencial en dispositivos lógicos reprogramables. Se ha desarrollado un enfoque en VHDL para la inserción automática de TMR y se ha desarrollado un diseño de demostración. El enfoque se llama “Redundancia Modular Triple Funcional (FTMR)”.

    Este documento aborda la protección de lógica secuencial y combinatoria aleatoria. Este documento no aborda la protección de entradas y salidas, el uso de memorias de bloques en chip o registros de desplazamiento dedicados, etc. Se asume un buen conocimiento de la arquitectura de Xilinx. Para obtener información detallada sobre los FPGAs de Xilinx y técnicas de mitigación como la limpieza de la memoria de configuración, ver [RD7].

Cortex-R5 para seguridad funcional

El procesador ARM Cortex-R5 que tiene soporte para seguridad funcional que incluye características como:

  1. ECC en algunos datos internos que pueden corregir algunos errores. De Acerca del procesador:

    Se utiliza Error Checking and Correction (ECC) en los puertos del procesador Cortex-R5 y en las memorias de Nivel 1 (L1) para proporcionar una mayor fiabilidad y abordar aplicaciones críticas para la seguridad.

  2. Un modo de seguridad de doble redundancia. De Split/lock:

    El procesador Cortex-R5 puede configurarse para que pueda cambiarse, bajo reinicio, entre un modo de rendimiento de doble CPU y un modo de seguridad de doble redundancia.

    El modo de seguridad doble redundancia compara que ambas CPUs produzcan la misma salida. Si hay una diferencia, el sistema puede ser colocado en un estado seguro por hardware. Es decir, a diferencia de la redundancia modular triple no es posible realizar una votación mayoritaria para determinar la salida correcta, sino solo detectar que se ha producido un error.

Consulte Manual de referencia técnico del microcontrolador Flash RISC de 16/32 bits TMS570LC43x para ver un ejemplo de microcontrolador que ha sido implementado utilizando un Cortex-R. Buscando ese TRM se muestra:

  1. se ha aplicado protección de seguridad mode réplica al Módulo de Interrupción Vectorial (VIM) así como a las CPUs Cortex-R5.
  2. Se ha aplicado ECC a :
    • Memorias caché de Nivel 1
    • SRAM de Nivel 2
    • Memorias Flash del núcleo R5F
    • La memoria utilizada para algunos periféricos. Por ejemplo, el módulo Network Area Controller (DCAN)

Para aprender sobre las características del Cortex-R5, existen kits como Kit de desarrollo LAUNCHXL2-570LC43 Hercules TMS570LC43x LaunchPad disponibles a un precio relativamente económico para ejecutar en hardware real. Existe un LED ERR que indica si se ha producido un error, por ejemplo, un error de comparación de núcleo entre las CPUs de bloqueo doble.

Redundancia diversa

La respuesta ¿Qué significa 'sistema de aviónica digital en bucle cerrado triple redundante'? de David Hammen en el foro de Exploración Espacial menciona problemas con modos de falla comunes:

Finalmente, la triple redundancia no logra nada si cada uno de esos sistemas triplemente redundantes muestra el mismo error común. Un buen número de accidentes en el espacio se han atribuido a un mal software de vuelo o a comandos mal emitidos al software de vuelo. No importa si hay cien computadoras de vuelo si cada una de ellas tiene el mismo código defectuoso o recibe el mismo comando defectuoso. Algo malo sucederá. La falla de modo común es lo que más asusta a los ingenieros de seguridad.

La redundancia de copia de seguridad no ofrece protección contra fallas de modo común. El Transbordador Espacial utilizaba la redundancia cuádruple en su sistema principal para abordar el problema de la tolerancia a dos fallas (a algunas fallas). Para combatir el problema de las fallas de modo común, el Transbordador Espacial tenía un quinto Sistema de Vuelo de Respaldo. El software del BFS del Transbordador (que nunca se usó) fue desarrollado por un contratista completamente diferente al responsable de construir el sistema de software de aviónica principal. El trabajo de la BFS era llevar el vehículo de regreso a la Tierra. Si bien la misión hubiera sido un fracaso, los astronautas seguirían estando vivos.

Sistemas Redundantes Diversos para un Soporte Vital Espacial Confiable menciona que la diversa redundancia puede mitigar las fallas por causas comunes (CCF), aunque ese informe se encuentra a un nivel de sistema alto y no proporciona detalles sobre el diseño electrónico de apoyo. Creo que la parte diversa significa implementaciones de diferentes equipos de diseño que esperanzadamente no cometerán los mismos errores sistemáticos.

8voto

DBE7 Puntos 8

Procesadores principales: Lockstepping

La respuesta de Chester Gillon ha traído a colación la seguridad de lockstep en una CPU integrada. Este concepto también existe en el otro extremo del espectro informático, en los mainframes.

El artículo de Wikipedia sobre mainframes lo resume:

Los mainframes también tienen características de integridad de ejecución para la informática tolerante a fallos. Por ejemplo, los servidores z900, z990, System z9 y System z10 ejecutan efectivamente instrucciones orientadas a resultados dos veces, comparan los resultados, arbitran entre cualquier diferencia (a través de la repetición de instrucciones y el aislamiento de fallos), luego trasladan las cargas de trabajo "en vuelo" a procesadores en funcionamiento, incluidos los de repuesto, sin ningún impacto en sistemas operativos, aplicaciones o usuarios. Esta característica a nivel de hardware, también encontrada en los sistemas NonStop de HP, se conoce como lock-stepping, porque ambos procesadores dan sus "pasos" (es decir, instrucciones) juntos. No todas las aplicaciones necesitan absolutamente la integridad asegurada que estos sistemas proporcionan, pero muchas lo hacen, como el procesamiento de transacciones financieras.

Comprobaciones de tiempo de ejecución del software

Incluso si no tiene redundancia de hardware, puede ejecutar pruebas en software para comparar resultados computacionales reales con datos de referencia esperados.

Wikipedia dice esto sobre el programa Prime95, un generador de números primos:

[...] debido a los altos requisitos de precisión de la prueba de primalidad, el programa es muy sensible a los errores de cálculo y los reporta de manera proactiva. Estos factores lo convierten en una herramienta comúnmente utilizada entre los overclockers para verificar la estabilidad de una configuración particular.

4voto

steveverrill Puntos 338

Las respuestas existentes se centran en cómo una computadora verifica si sus cálculos son correctos. Pero las computadoras no solo calculan; también almacenan y comunican información.

La CPU en tu PC promedio no realiza mucha verificación. Como se menciona en otras respuestas, las computadoras más avanzadas en aplicaciones críticas a menudo tienen CPUs con triple redundancia.

Los transistores en los chips de memoria son mucho más pequeños y numerosos, y aquí la verificación de errores es común, especialmente en servidores.

Allá por los años 1990, una PC de 32 bits requeriría (por ejemplo) cuatro módulos de memoria de 8 bits x 1 megabyte, cada uno con nueve chips de memoria de 1 megabit. El noveno bit se usaría para una verificación de paridad, registraría si el número total de bits 1 en los 8 bits restantes era par o impar. De esta manera, si hubiera un error de memoria en un solo bit de cualquier byte dado, la computadora podría detectarlo. Esta característica se incluía en prácticamente todas las PC de ese tiempo. Sin embargo, la respuesta no era muy útil, normalmente anunciaría que tenía un error de paridad y dejaría de funcionar, lo que obligaría al usuario a comprar nueva memoria si sucedía con frecuencia.

Con el cambio a computadoras de 64 bits, los módulos de memoria han aumentado su ancho de bus a 64, pero a menudo tienen una arquitectura interna de 72 bits de ancho. Los 8 bits adicionales se pueden usar para llevar a cabo una verificación más avanzada llamada corrección y detección de errores (ECC) que es capaz de corregir errores de un solo bit (generalmente se hace al leer la memoria) y detectar pero no corregir errores en un mayor número de bits. Es importante destacar que esto se logra con la misma cantidad de redundancia (9 bits por cada 8) que para la antigua verificación de paridad, pero el hecho de que los bits se verifiquen en grupos de 64+8 en lugar de grupos de 8+1 permite un algoritmo más avanzado que posibilite la corrección.

De manera similar, el almacenamiento de archivos y la comunicación utilizan sumas de verificación. Un concepto similar, dígitos de comprobación, se utiliza para detectar errores en la entrada de datos humanos, como los números de cuenta.

2voto

Gx1sptDTDa Puntos 962

Según entiendo, los sistemas críticos de aviación incluyen:

  • Sistemas triples con votación y operación a prueba de fallos, como se menciona en la respuesta de winny.
  • Sistemas que utilizan múltiples arquitecturas y software desarrollado de forma separada. Imagina escribir Microsoft Word u otra aplicación grande para un sistema Windows basado en Intel y un Mac basado en ARM. Pero además de apuntar a diferentes arquitecturas de CPU, tener dos equipos separados desarrollando el software sin ningún código fuente compartido, ambos escribiendo basados en una especificación extremadamente detallada. Así es como se desarrollan los sistemas más críticos. (Excepto con sistemas operativos en tiempo real, no Windows o Mac OS). Esto no solo proporciona redundancia si falla un transistor, chip, fuente de alimentación u otro componente (grande o pequeño), sino que también proporciona protección para errores de codificación que estarían ocultos si múltiples sistemas ejecutaran el mismo código, así como problemas arquitectónicos (quizás algún caso desconocido con cachés y acceso a memoria) específicos de una línea de CPU en particular.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X