ES2247459T3 - Sistema de computadores tolerante a fallos, metodo para la resincronizacion del mismo y programa para su resincronizacion. - Google Patents
Sistema de computadores tolerante a fallos, metodo para la resincronizacion del mismo y programa para su resincronizacion.Info
- Publication number
- ES2247459T3 ES2247459T3 ES03015796T ES03015796T ES2247459T3 ES 2247459 T3 ES2247459 T3 ES 2247459T3 ES 03015796 T ES03015796 T ES 03015796T ES 03015796 T ES03015796 T ES 03015796T ES 2247459 T3 ES2247459 T3 ES 2247459T3
- Authority
- ES
- Spain
- Prior art keywords
- computing
- synchronization
- modules
- access
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1679—Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
- G06F11/184—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
Un sistema de computadores tolerante de fallos con sincronización por paso de bloqueo que incluye una pluralidad de módulos (100, 200, 300) de computación que tienen un procesador (101, 102, 201, 202, 301, 302) y una memoria (104, 204, 304), en el que cada módulo (100, 200, 300) de computación procesa la misma cadena de instrucciones con sincronización entre sí, y que además comprende un detector (702) de fallos que monitoriza la existencia/no existencia de un fallo en todo el sistema, un dispositivo (700) de monitorización de bus que monitoriza un acceso del procesador de cada uno de dichos módulos (100, 200, 300) de computación a un bus (103, 203, 303) externo y cuando detecta discrepancia en la salida entre los respectivos módulos (100, 200, 300) de computación, notifica una interrupción a cada uno de dichos procesadores, y un controlador (701) de sincronización que re- sincroniza cada módulo (100, 200, 300) de computación ajustando la temporización de una respuesta a un acceso desde cada uno de dichos procesadores que es causada por dicha interrupción, caracterizado porque dicho dispositivo (700) de monitorización de bus notifica dicha interrupción a cada uno de dichos procesadores, encolando así una tarea predeterminada que es una tarea que consiste en ejecutar un acceso a un recurso predeterminado en dicho controlador (701) de sincronización, para re-sincronizar los módulos (100, 200, 300) de computación, si dicho detector (702) de fallos no detecta ningún fallo, y porque dicho controlador (701) de sincronización transmite una respuesta a todos los módulos (100, 200, 300) de computación simultáneamente, cuando se reciben accesos a dicho recurso desde todos los procesadores.
Description
Sistema de computadores tolerante a fallos,
método para la re-sincronización del mismo y
programa para su re-sincronización.
La presente invención se refiere a un sistema de
computadores tolerante de fallos con sincronización por paso de
bloqueo que procesa la misma cadena de instrucciones de manera
exactamente igual por una pluralidad de módulos de computación con
sincronización de reloj entre sí. Más particularmente, se refiere a
un sistema de computadores tolerante de fallos y a un método de
control de re-sincronización de alta velocidad que
consiguen acelerar el proceso de re-sincronización
cuando se produce un fallo de sincronismo entre los módulos de
computación (un paso de bloqueo se desprende).
Con un sistema de computadores tolerante de
fallos con sincronización por paso de bloqueo, cuando entre una
pluralidad de módulos de computación que ejecutan la misma cadena de
instrucciones al mismo tiempo, se detecta que un módulo de
computación tiene una salida diferente de la de otros módulos de
computación, debido a un fallo o a otro factor externo o interno, se
llevan a cabo contramedidas como las que siguen. A partir de este
punto, nos referiremos a un módulo de computación que falla en su
funcionamiento en sincronización con otros módulos de computación
como un módulo de computación que está en un estado de pérdida de
paso.
Más específicamente, se toman medidas como
separar un módulo de computación cuyo paso de bloqueo se separa de
un estado operacional y sustituir el módulo de computación según lo
requerido en función de un factor que provoca pérdida de paso o,
cuando no es necesaria la sustitución, llevar a cabo el proceso de
re-inicialización o similar según la necesidad de
integrar el módulo de computación en el estado operacional.
En un sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo, en el momento de esta
re-integración al estado operacional, sin tener en
cuenta si un módulo de computación que se encuentra en el estado de
pérdida de paso ha sido sustituido o no, para que el módulo de
computación se sincronice con otros módulos de computación que
continúan en funcionamiento para llevar a cabo otra vez el mismo
proceso, todos los datos de memoria almacenados por los módulos de
computación en el estado operacional son copiados a una memoria del
módulo de computación que se debe re-integrar en el
momento de su re-integración.
En un sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo, después de ejecutar la
sustitución de un módulo de computación que está en el estado de
pérdida de paso, re-inicializar el proceso en
función de una parte causante de la pérdida de paso y similar,
cuando se integra de nuevo el módulo de computación en cuestión al
estado operacional, los módulos de computación en el estado
operacional se interrumpen durante un largo período de tiempo.
Más específicamente, el sistema de computadores
tolerante de fallos con sincronización por paso de bloqueo tiene un
problema, que consiste en que mientras un módulo de computación que
está en el estado de pérdida de paso es sometido a un proceso de
re-integración, se detiene el funcionamiento de todo
el sistema de computadores tolerante de fallos durante un largo
período de tiempo (3 a 5 segundos en general o del orden de
minutos).
La razón es que para integrar un módulo de
computación que se encuentra en el estado de pérdida de paso al
estado operacional, todos los contenidos de las memorias son
copiados siempre desde los módulos de computación que continúan en
funcionamiento al módulo de computación que debe ser
re-integrado.
Cuando el funcionamiento de un módulo de
computación normal continúa durante el proceso de copia, es posible
que los contenidos de la memoria del módulo de computación normal
cambien también durante el proceso de copia, de forma que la copia
no se llevará a cabo adecuadamente. Para evitar dicha situación, un
módulo de computación que está en el estado operacional es detenido
temporalmente para evitar la actualización de los contenidos de su
memoria.
Debido a que la capacidad de memoria de un módulo
de computación hoy llega hasta varios Gigabytes, copiar toda la
región de memoria requerirá un largo período de tiempo.
En un sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo, un estado de pérdida de paso
entre módulos de computación ocurre debido a varias causas.
El primer caso es un fallo fijo que ocurre dentro
de un módulo de computación. En este caso, un módulo de computación
que tiene un fallo debería ser reemplazado, y cuando se integrase el
módulo de computación que debe ser reemplazado a un sistema
operacional, todos los datos en una memoria de un módulo de
computación en el estado operacional deben ser copiados.
En un sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo, un estado de pérdida de paso
puede ocurrir debido, además del fallo fijo arriba descrito, a que
módulos de computación funcionen con temporizaciones diferentes
debido a la diferencia de fabricación de cada unidad en cada módulo
de computación, aunque su funcionamiento sea normal, o debido a un
fallo intermitente de memoria corregible automáticamente, causado
por los efectos de los rayos \alpha o similar.
En estos casos, debido a que un fallo fijo no
ocurre propiamente en un módulo de computación, el módulo
fundamentalmente no necesita ninguna sustitución, y mediante la
sincronización de nuevo de su proceso con el de los otros módulos de
computación en funcionamiento para integrar el módulo de computación
en cuestión, todo el sistema de computadores tolerante de fallos
puede ser devuelto a su estado normal de funcionamiento.
En la patente EP 1 029 267, se describe un método
para mantener una ejecución sincronizada en un sistema de
computadores insensible/tolerante a fallos. Un sistema de
computadores tolerante de fallos incluye, al menos, dos elementos de
computación conectados a, al menos, un controlador. Los elementos de
computación funcionan según un primer y un segundo modo. En el
primer modo, los elementos de computación ejecutan cada uno un
primer flujo de instrucciones en paso de bloqueo de reloj simulado.
En el segundo modo, los elementos de computación ejecutan un segundo
flujo de instrucciones en paso de bloqueo de instrucciones. El
funcionamiento del paso de bloqueo de instrucciones requiere que los
elementos de computación lleven a cabo la misma secuencia de
instrucciones en el mismo orden, pero no requiere que los elementos
de computación lleven a cabo las instrucciones en el mismo ciclo de
reloj como en el primer modo.
La patente US 5,020,024 describe un método y un
aparato para detectar la ausencia seleccionada de sincronismo lógico
digital. Equipamiento lógico digital en el que dos elementos lógicos
funcionan con control de temporización con un elemento de reloj con
sincronismo seleccionado, incluye un elemento de detección de fallos
que detecta la ausencia del sincronismo seleccionado entre los dos
elementos lógicos, incluso cuando cada uno está desarrollando, por
otro lado, un funcionamiento lógico correcto.
La invención está definida por las
reivindicaciones.
Un objetivo de la presente invención es
proporcionar un sistema de computadores tolerante de fallos, un
método de re-sincronización para el mismo y un
programa de re-sincronización para el mismo que
permitan a un módulo de computación cuyo paso de bloqueo se
desprende debido a causas diferentes de un fallo fijo sea integrado
otra vez al estado operacional más rápidamente que mediante un
método convencional, reduciendo así drásticamente el tiempo de
parada temporal de funcionamiento del sistema debido al proceso de
integración.
Otro objetivo de la presente invención es
proporcionar un sistema de computadores tolerante de fallos, un
método de re-sincronización para el mismo y un
programa de re-sincronización para el mismo que
consigan mejorar la disponibilidad del sistema mediante la reducción
de tiempo para el proceso de re-integración arriba
descrito.
Según el primer aspecto de la invención, se
proporciona un sistema de computadores tolerante de fallos con
sincronización por paso de bloqueo que incluye una pluralidad de
módulos de computación que tienen un procesador y una memoria en el
que cada módulo de computación procesa la misma cadena de
instrucciones de forma sincronizada entre sí, donde
cuando se detecta discrepancia en un estado de
acceso a un bus externo entre los procesadores respectivos de cada
módulo de computación, si no se detecta ningún fallo en el sistema
incluyendo cada módulo de computación, se recupera la sincronización
entre cada módulo de computación ajustando la temporización de una
respuesta a un acceso que cada procesador ejecuta como una
instrucción de control de sincronización por una interrupción.
El sistema de computadores tolerante de fallos
comprende además un detector de fallos que monitoriza la
existencia/no existencia de un fallo en todo el sistema;
un dispositivo de monitorización de bus, que
monitoriza un acceso del procesador de cada uno de los módulos de
computación al bus externo y cuando detecta discrepancia en la
salida entre los respectivos módulos de computación, si no es
detectado ningún fallo por el detector de fallos, notifica una
interrupción a cada procesador, y un controlador de sincronización
que re-sincroniza cada módulo de computación
ajustando la temporización de una respuesta a un acceso desde cada
uno de los procesadores que es provocado por la interrupción.
El dispositivo de monitorización de bus, cuando
detecta discrepancia en la salida entre los respectivos módulos de
computación, si no es detectado ningún fallo por el detector de
fallos, interrumpe cada uno de los procesadores con una tarea
predeterminada, que es una tarea consistente en ejecutar un acceso a
un recurso predeterminado en el controlador de sincronización, para
re-sincronizar los módulos de computación, y el
controlador de sincronización transmite una respuesta a todos los
módulos de computación simultáneamente, cuando recibe los accesos al
recurso desde todos los procesadores.
Según otra construcción preferida, se
proporcionan una pluralidad de pares del dispositivo de
monitorización de bus, del detector de fallos y del controlador de
sincronización.
Según otra construcción preferida, el dispositivo
de monitorización de bus, el detector de fallos y el controlador de
sincronización se disponen en una unidad periférica de control de
dispositivos que controla un dispositivo periférico y está conectada
al bus externo en el módulo de computación a través de un puente
PCI.
Según el segundo aspecto de la invención, se
proporciona un método de re-sincronización en un
sistema de computadores tolerante de fallos con sincronización por
paso de bloqueo que incluye una pluralidad de módulos de computación
que tienen un procesador y una memoria en el que cada módulo de
computación procesa la misma cadena de instrucciones de forma
sincronizada entre sí, comprendiendo los pasos de
cuando se detecta discrepancia en un estado de
acceso a un bus externo entre los procesadores respectivos de cada
módulo de computación, si no se detecta ningún fallo en el sistema
incluyendo cada módulo de computación, generar una interrupción para
todos los procesadores, y hacer que cada procesador ejecute una
instrucción de control de sincronización para ajustar la
temporización de una respuesta a un acceso desde cada procesador,
haciendo así que cada módulo de computación continúe el
funcionamiento en sincronización.
El método de re-sincronización
comprende además las operaciones de
detectar la existencia/no existencia de un fallo
en todo el sistema incluyendo cada módulo de computación,
monitorizar un acceso del procesador de cada módulo de computación
al bus externo,
cuando se detecta discrepancia en la salida entre
los respectivos módulos de computación, si no se detecta ningún
fallo en el sistema, notificar una interrupción a cada procesador, y
hacer que cada procesador ejecute la instrucción de control de
sincronización de reloj para ajustar la temporización de una
respuesta a un acceso desde cada procesador, haciendo así que cada
módulo de computación continúe el funcionamiento en
sincronización.
El método de re-sincronización
comprende además las operaciones de
cuando se detecta discrepancia en la salida entre
los respectivos módulos de computación, si no se detecta ningún
fallo en el sistema, interrumpe cada procesador con una tarea
predeterminada para re-sincronizar los respectivos
módulos de computación, que es una tarea consistente en ejecutar un
acceso a un recurso predeterminado;
encolar los accesos al recurso desde cada
procesador, y responder a los accesos desde todos los módulos de
computación simultáneamente cuando todos los accesos de los
procesadores se han recibido.
Según otro aspecto de la invención, un programa
de re-sincronización para ejecutar un proceso de
re-sincronización de un sistema de computadores
tolerante de fallos con sincronización por paso de bloqueo que
incluye una pluralidad de módulos de computación que tienen un
procesador y una memoria en el que cada módulo de computación
procesa la misma cadena de instrucciones de forma sincronizada entre
si, comprendiendo las funciones de
cuando se detecta discrepancia en un estado de
acceso a un bus externo entre los procesadores respectivos de cada
módulo de computación, si no se detecta ningún fallo en el sistema
incluyendo cada módulo de computación, generar una interrupción para
todos los procesadores, y hacer que cada procesador ejecute una
instrucción de control de sincronización de reloj para ajustar la
temporización de una respuesta a un acceso desde cada procesador,
haciendo así que cada módulo de computación continúe el
funcionamiento en sincronización.
El programa de re-sincronización
además comprende las funciones de detectar la existencia/no
existencia de un fallo en todo el sistema incluyendo cada módulo de
computación, monitorizar un acceso del procesador de cada módulo de
computación al bus externo.
Cuando se detecta discrepancia en la salida entre
los respectivos módulos de computación, si no se detecta ningún
fallo en el sistema, notificar una interrupción a cada procesador, y
hacer que cada procesador ejecute la instrucción de control de
sincronización para ajustar la temporización de una respuesta a un
acceso desde cada procesador, haciendo así que cada módulo de
computación continúe su funcionamiento en sincronización.
El programa de re-sincronización
comprende además las funciones de, cuando se detecta discrepancia en
la salida entre los respectivos módulos de computación, si no se
detecta fallo en el sistema, interrumpe cada procesador con una
tarea predeterminada para re-sincronizar los
respectivos módulos de computación, la cual es una tarea que
consiste en ejecutar un acceso a un recurso predeterminado;
encolar el acceso al recurso desde cada
procesador, y responder a los accesos desde todos los módulos de
computación simultáneamente cuando todos los accesos desde los
procesadores se hayan recibi-
do.
do.
Otros objetivos, características y ventajas de la
presente invención serán evidentes a partir de la descripción
detallada que se da en lo que sigue.
La presente descripción se comprenderá más
completamente a partir de la descripción detallada que se ofrece a
partir de aquí y a partir de los dibujos que se acompañan de la
realización preferida de la invención, que, sin embargo, no deberían
tomarse como limitantes de la invención, ya que son sólo
explicativos y por motivos de comprensión.
En los dibujos:
La Fig. 1 es un diagrama de bloques que muestra
una estructura de un sistema de computadores tolerante de fallos
según un primer modo de implementación de la presente invención;
La Fig. 2 es un diagrama utilizado para explicar
los contenidos del proceso de re-sincronización del
sistema de computadores tolerante de fallos;
La Fig. 3 es un diagrama de bloques que muestra
una estructura de un sistema de computadores tolerante de fallos
según un segundo modo de implementación de la presente invención;
y
La Fig. 4 es un diagrama de bloques que muestra
una estructura de un sistema de computadores tolerante de fallos
según un tercer modo de implementación de la presente invención.
La realización preferida de la presente invención
será tratada en detalle en lo que sigue haciendo referencia a los
dibujos que se acompañan. En la siguiente descripción, se exponen
numerosos detalles específicos para proporcionar una comprensión
completa de la presente invención. Será obvio, sin embargo, para los
entendidos en la materia que la presente invención se puede llevar a
la práctica sin estos detalles específicos. Por otro lado,
estructuras bien conocidas no se muestran en detalle para no
oscurecer innecesariamente la presente invención.
Modos de implementación de la presente invención
se describirán con detalle en lo que sigue haciendo referencia a los
dibujos. La Fig. 1 es un diagrama de bloques que muestra una
estructura de un sistema de computadores tolerante de fallos con
sincronización por paso de bloqueo según un primer modo de
implementación de la presente invención.
Haciendo referencia a la Fig. 1, el sistema de
computadores tolerante de fallos según el presente modo de
implementación incluye una pluralidad de módulos 100, 200 y 300 de
computación, procesando cada uno de dichos módulos 100, 200 y 300 de
computación la misma cadena de instrucciones con sincronización de
reloj entre sí. El sistema de computadores tolerante de fallos
compara un resultado del proceso de cada módulo de computación.
Incluso cuando un modo de computación tiene un fallo, el proceso
puede ser continuado por el resto de los módulos de computación.
Los módulos 100, 200 y 300 de computación
respectivos incluyen una pluralidad de procesadores 101 y 102, 201 y
202, y 301 y 302, buses 103, 203 y 303 externos del procesador,
memorias 104, 204 y 304 y unidades 105, 205 y 305 de control de
memoria, respectivamente.
Además, los módulos 100, 200 y 300 de computación
están conectados a unidades 400 y 500 de control de dispositivos
periféricos para controlar un dispositivo periférico a través de las
unidades 105, 205 y 305 de control de memoria y de líneas 600, 601,
602, 610, 611 y 612 de señal de interfaz.
El sistema de computadores tolerante de fallos
arriba descrito incluye además un dispositivo 700 de monitorización
de bus, una unidad 702 de detección de fallos y una unidad 701 de
control de sincronización.
El dispositivo 700 de monitorización de bus
monitoriza un acceso de un procesador de cada módulo de computación
al bus externo. El dispositivo 700 de monitorización de bus está
conectado a los buses 103, 203 y 303 externos del procesador de los
respectivos módulos 100, 200 y 300 de computación a través de líneas
710, 711 y 712 de señal de interfaz.
La unidad 702 de detección de fallos monitoriza
la existencia/no-existencia de un fallo en todo el
sistema, incluyendo los respectivos módulos de computación.
La unidad 701 de control de sincronización, que
está conectada a cada módulo de computación, ajusta la temporización
de una respuesta a un acceso desde cada módulo de computación para
hacer que cada módulo de computación continúe su funcionamiento con
sincronización de reloj. La unidad 701 de control de sincronización
está conectada a las unidades 105, 205 y 305 de control de memoria
de los respectivos módulos 100, 200 y 300 de computación a través de
líneas 730, 731 y 732 de señal de interfaz.
A continuación, se hará una descripción del
funcionamiento de un sistema de computadores tolerante de fallos
estructurado así según el presente modo de implementación.
La unidad 702 de detección de fallos monitoriza
la existencia/no-existencia de un fallo fijo en todo
el sistema de computadores tolerante de fallos incluyendo los
respectivos módulos 100, 200 y 300 de computación y las unidades 400
y 500 de control de dispositivos periféricos. Entonces, la unidad
702 de detección de fallos notifica un resultado de la
monitorización al dispositivo 700 de monitorización de bus.
El dispositivo 700 de monitorización de bus, que
está conectado a los buses 103, 203 y 303 externos del procesador de
los módulos 100, 200 y 300 de computación respectivos a través de
las líneas 710, 711 y 712 de señal de interfaz, compara las señales
de control de acceso externo de los respectivos procesadores 101,
102, 201, 202, 301 y 302 para monitorizar si los respectivos
procesadores 101, 102, 201, 202, 301 y 302 acceden a los buses 103,
203 y 303 externos en sincronización de reloj entre sí con la misma
temporización o no.
En un caso en el que mediante la operación de
monitorización arriba descrita, el dispositivo 700 de monitorización
de bus detecta que cualquiera de los procesadores 101, 102, 201,
202, 301, y 302 funciona con una temporización diferente de la
temporización de los demás, cuando la unidad 702 de detección de
fallos no detecta ningún fallo fijo en ningún lugar del sistema de
computadores tolerante de fallos, el dispositivo 700 de
monitorización de bus detecta que la pérdida de paso no está
provocada por un fallo. El resultado es notificado a todos los
módulos 100, 200 y 300 de computación a través de las líneas 710,
711 y 712 de señal de interfaz para generar una interrupción a cada
procesador. Además, el dispositivo 700 de monitorización de bus al
mismo tiempo pasa a monitorizar los buses 103, 203 y 303 externos de
los procesadores según un modo de interrupción.
Aquí, el dispositivo 700 de monitorización de bus
monitoriza todos los accesos a los buses 103, 203 y 303 externos que
incluyan un acceso de memoria desde el procesador y cuando detecta
falta de sincronización en el funcionamiento entre los módulos de
computación, instantáneamente interrumpe todos los procesadores 101,
102, 201, 202, 301 y 302 para interrumpir el proceso, de forma que
en el momento en que se genera la interrupción, los contenidos de
las memorias 104, 204 y 304 en los respectivos módulos 100, 200 y
300 de computación son todos coincidentes entre sí.
En lo que sigue, se hará una descripción de los
contenidos específicos del funcionamiento del sistema de
computadores tolerante de fallos según el presente modo de
implementación haciendo referencia a la Fig. 2.
Cuando el dispositivo 700 de monitorización de
bus detecta falta de sincronización en el funcionamiento entre los
módulos de computación (Operación 201 en la Fig. 2), la detección es
notificada a través de las líneas 710, 711 y 712 de señal de
interfaz para generar una interrupción a cada procesador.
Todos los procesadores 101, 102, 201, 202, 301 y
302 están en el momento de la interrupción pertinente procesando y
encolan una tarea de control de sincronización pensada para obtener
la re-sincronización del funcionamiento con
sincronización de reloj entre los respectivos módulos 100, 200 y 300
en la parte superior de una cola como una tarea de la más alta
prioridad (Operación 202 en la Fig. 2).
La tarea de control de sincronización tiene la
función de ejecutar una instrucción para acceder a un recurso
especialmente prescrito en la unidad 701 de control de
sincronización. A partir de ahí, cuando la tarea de control de
sincronización arriba descrita es pasada a un estado de ejecución
por un OS, la tarea ejecuta la instrucción para acceder al recurso
prescrito en la unidad 701 de control de sincronización (Operación
203 en la Fig. 2).
En este momento de tiempo, un acceso al recurso
prescrito desde un módulo de computación en el estado de pérdida de
paso y un acceso al recurso prescrito desde otros módulos de
computación en el estado de paso de bloqueo son naturalmente
transmitidas a la unidad 701 de control de sincronización con un
retraso de tiempo.
Al detectar un acceso desde los módulos 100, 200
y 300 de computación al recurso interno especialmente prescrito, la
unidad 701 de control de sincronización, cuando el acceso es el
primero, se abstiene de devolver una respuesta al módulo de
computación pertinente y espera que lleguen los accesos de todos los
demás módulos de computación (Operación 204 en la Fig. 2). Cuando
los accesos desde todos los módulos 100, 200 y 300 son transmitidos,
devuelve una respuesta a los accesos simultáneamente a todos los
módulos 100, 200 y 300 de computación.
En respuesta a la respuesta desde la unidad 701
de control de sincronización, todos los procesadores de los
respectivos módulos 100 200 y 300 de computación terminan la
ejecución de la tarea de control de sincronización (Operación 205 en
la Fig. 2). Después de esto, todos los procesadores continúan con el
funcionamiento ordinario del programa (Operación 206 en la Fig.
2).
El funcionamiento descrito en lo que sigue
habilita a los módulos 100, 200 y 300 de computación para continuar
una vez más con su funcionamiento con sincronización de reloj entre
sí. En este momento de tiempo, como se describió anteriormente,
debido a que el proceso de sincronización se ejecuta antes de que
los contenidos de las memorias 104, 204 y 304 de los módulos 100,
200 y 300 de computación pierdan la coincidencia, después de
comenzar el funcionamiento de nuevo con sincronización de reloj, se
permite de nuevo a todos los módulos 100, 200 y 300 de computación
ejecutar la misma cadena de instrucciones con la misma
temporización. Esto elimina la necesidad de copiar memoria para la
re-sincronización que se requiere en un sistema de
computadores tolerante de fallos convencional, permitiendo así una
rápida ejecución del proceso de
re-sincroniza-
ción.
ción.
La Fig. 3 es un diagrama de bloques que muestra
una estructura de un sistema de computadores tolerante de fallos
según un segundo modo de implementación de la presente invención.
Con referencia a la Fig. 3, el sistema de computadores tolerante de
fallos según el presente modo de implementación de la presente
invención está estructurado para incluir una pluralidad de módulos
100 y 200 de computación, teniendo cada uno un procesador y una
memoria y una pluralidad de unidades 400 y 500 de control de
dispositivos periféricos, teniendo cada uno un puente 703 PCI. Cada
uno de los módulos 100 y 200 procesa la misma cadena de
instrucciones con sincronización de reloj entre sí. El sistema de
computadores tolerante de fallos compara un resultado del proceso de
cada módulo de computación. Incluso cuando un modo de computación
tiene un fallo, el resto de módulos de computación puede continuar
el proceso. Además, cada una de las unidades 400 y 500 de control de
dispositivos periféricos está estructurada para ser multiplexada
mediante control por software para habilitar, incluso cuando una
unidad de control de dispositivos periféricos sufre un fallo, la
continuación del proceso utilizando la otra unidad de control de
dispositivos periféricos.
Cada unidad 400 de control de dispositivos
periféricos incluye el puente 703 PCI conectado a las unidades 105 y
205 de control de memoria de los respectivos módulos 100 y 200 de
computación a través de un PCI para establecer la conexión con un
dispositivo periférico, un dispositivo 700 de monitorización de bus
para monitorizar un acceso de cada procesador de cada uno de los
módulos 100 y 200 de computación a un bus externo, una unidad 702 de
detección de fallos para monitorizar la existencia/no existencia de
un fallo en todo el sistema de computadores tolerante de fallos
incluyendo los módulos 100 y 200 de computación, y una unidad 701 de
control de sincronización conectada a cada módulo de computación a
través del puente 703 PCI para ajustar la temporización de una
respuesta a un acceso desde cada módulo de computación para
recuperar la sincronización de reloj de cada módulo de
computación.
Aunque no se ilustra en la figura, la unidad 500
de control de dispositivos periféricos también tiene los respectivos
componentes arriba descritos de forma similar a la unidad 400 de
control de dispositivos periféricos.
El sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo estructurado según el
presente modo de implementación monitoriza generalmente el
funcionamiento con sincronización de reloj de cada uno de los
módulos 100 y 200 de computación y controla un dispositivo
periférico utilizando la unidad 400 de control de dispositivos
periféricos. Cuando se produce un fallo en la unidad 400 de control
de dispositivos periféricos, se lleva a cabo el mismo proceso
conmutando el uso a la unidad 500 de control de dispositivos
periféricos.
En el presente modo de implementación, la
ejecución de una instrucción para acceder al recurso prescrito en la
unidad 701 de control de sincronización que se muestra en la Fig. 2
(Operación 203 en la Fig. 2) se lleva acabo mediante la ejecución de
una instrucción de lectura a un registro en la unidad 701 de control
de sincronización en la unidad 400 de control de dispositivos
periféricos y la instrucción de lectura es transmitida a la unidad
701 de control de sincronización a través de los buses 800 y 801 PCI
y del puente 703 PCI y su respuesta es transmitida a cada uno de los
módulos 100 y 200 de computación a través de la misma ruta.
El contenido del proceso de
re-sincronización según el presente modo de
implementación es el mismo que el mostrado en la Fig. 2.
Además, aunque en el presente modo de
implementación se muestra una realización en la que existen dos
módulos de computación, estructuras que tengan tres módulos de
computación como se muestra en el primer modo de implementación
ilustrado en la Fig. 1 o estructuras que tengan cuatro o más módulos
funcionan de la misma forma.
La Fig. 4 es un diagrama de bloques que muestra
una estructura de un sistema de computadores tolerante de fallos
según un tercer modo de implementación de la presente invención.
En el presente modo de implementación se muestra
una estructura en la cual un dispositivo 700 de monitorización de
bus está conectado a los módulos 100 y 200 de computación a través
de un puente 703 PCI.
Según el presente modo de implementación, la
monitorización de los buses 103 y 203 externos de los respectivos
procesadores es ejecutada mediante una señal (protocolo bus PCI)
transmitida al dispositivo 700 de monitorización de bus a través de
unidades 105 y 205 de control de memoria de los respectivos módulos
100 y 200 de computación, los buses 800 y 801 PCI y el puente 703
PCI. Además, la transmisión de una interrupción desde el dispositivo
700 de monitorización de bus a cada módulo de computación es
ejecutada a través de una ruta inversa a la ruta arriba
descrita.
El contenido del proceso de
re-sincronización en el presente modo de
implementación es el mismo que el mostrado en la Fig. 2.
Aunque en el segundo y tercer modo de
implementación, los respectivos módulos de computación y el
dispositivo de monitorización de bus y similar se conectan
utilizando un PCI, la conexión entre estos componentes puede
establecerse utilizando un interfaz de otro estándar, como
PCI-X o un interfaz exclusivo no estandarizado para
múltiples usos, lo que no afecta a ninguno de los efectos de la
presente invención.
En el sistema de computadores tolerante de fallos
de la presente invención, el funcionamiento de cada unidad para
ejecutar el proceso de re-sincronización puede ser
llevado a cabo no sólo por hardware sino también cargando un
programa 1000 de proceso de re-sincronización que
ejecute el funcionamiento de cada una de las unidades arriba
descritas dentro de una memoria de un dispositivo procesador de
computadora para controlar el dispositivo procesador de computadora.
El programa 1000 de proceso de re-sincronización es
almacenado en un disco magnético, una memoria de semiconductor u
otro medio de grabación y es cargado desde el medio de grabación al
el dispositivo procesador de computadora para controlar el
funcionamiento del dispositivo procesador de computadora, realizando
así todas las funciones arriba descritas.
Aunque la presente invención ha sido descrita con
respecto a los modos preferidos de implementación en lo
anteriormente mencionado, la presente invención no se limita
necesariamente a los modos de implementación arriba descritos, sino
que se puede llevar a cabo de diferentes formas dentro del alcance
de su idea técnica.
Aunque en cada uno de los modos de implementación
arriba descritos se muestra la estructura en la que cada módulo de
computación tiene dos procesadores, una estructura que tenga un
procesador o tres o más procesadores funciona completamente de la
misma manera.
Además, aunque en cada uno de los modos de
implementación se muestra un caso en el que los respectivos
procesadores comparten un bus externo y están conectados a dicho
bus, ni, por ejemplo, una estructura en la que una pluralidad de
procesadores estén conectados en forma de asterismo a una unidad de
control de memoria ni una estructura en la que procesadores que
formen un módulo de computación sean físicamente montados en una
pluralidad de tarjetas afecta los efectos de la presente
invención.
Como se describió anteriormente, la presente
invención consigue los siguientes efectos.
El primer efecto es conseguir que un cierto
módulo de computación de un sistema de computadores tolerante de
fallos, cuando sale del estado de paso de bloqueo debido a causas
diferentes que un fallo fijo, sea restaurado al estado de paso de
bloqueo en un período de tiempo extremadamente corto.
La razón es que en un estado inicial de la
generación de la pérdida de paso, cuando una memoria de cada módulo
de computación están a punto de discrepar entre sí, el dispositivo
de monitorización de bus genera una interrupción a un procesador
para ejecutar preferencialmente una tarea de ejecutar una cadena de
instrucciones para controlar la re-sincronización,
recuperando así la sincronización sin copia de memoria.
El segundo efecto es mejorar la disponibilidad
del sistema de computadores tolerante de fallos. La razón es que un
período de parada de todo el sistema puede ser drásticamente
reducido acelerando significativamente el tiempo de reintegración
cuando se sale del paso de bloqueo.
Aunque la invención se ha ilustrado y descrito
con respecto a la realización ejemplar de la misma, los expertos en
la materia deben entender que se pueden realizar los cambios
anteriormente descritos y varios otros, omisiones y adiciones en el
mismo, sin salirse del alcance de las presente reivindicaciones.
Claims (5)
1. Un sistema de computadores tolerante de fallos
con sincronización por paso de bloqueo que incluye una pluralidad de
módulos (100, 200, 300) de computación que tienen un procesador
(101, 102, 201, 202, 301, 302) y una memoria (104, 204, 304), en el
que cada módulo (100, 200, 300) de computación procesa la misma
cadena de instrucciones con sincronización entre sí, y que además
comprende
un detector (702) de fallos que monitoriza la
existencia/no existencia de un fallo en todo el sistema,
un dispositivo (700) de monitorización de bus que
monitoriza un acceso del procesador de cada uno de dichos módulos
(100, 200, 300) de computación a un bus (103, 203, 303) externo y
cuando detecta discrepancia en la salida entre los respectivos
módulos (100, 200, 300) de computación, notifica una interrupción a
cada uno de dichos procesadores, y
un controlador (701) de sincronización que
re-sincroniza cada módulo (100, 200, 300) de
computación ajustando la temporización de una respuesta a un acceso
desde cada uno de dichos procesadores que es causada por dicha
interrupción,
caracterizado porque
dicho dispositivo (700) de monitorización de bus
notifica dicha interrupción a cada uno de dichos procesadores,
encolando así una tarea predeterminada que es una tarea que consiste
en ejecutar un acceso a un recurso predeterminado en dicho
controlador (701) de sincronización, para
re-sincronizar los módulos (100, 200, 300) de
computación, si dicho detector (702) de fallos no detecta ningún
fallo, y porque
dicho controlador (701) de sincronización
transmite una respuesta a todos los módulos (100, 200, 300) de
computación simultáneamente, cuando se reciben accesos a dicho
recurso desde todos los procesadores.
2. El sistema de computadores tolerante de fallos
como el expuesto en la reivindicación 1, en el que se suministran
una pluralidad de pares de dicho dispositivo (700) de monitorización
de bus, dicho detector (702) de fallos y dicho controlador (701) de
sincronización.
3. El sistema de computadores tolerante de fallos
como el expuesto en la reivindicación 1, en el que dicho dispositivo
(700) de monitorización de bus, dicho detector (702) de fallos y
dicho controlador (701) de sincronización están dispuestos en una
unidad (400, 500) de control de dispositivos periféricos que
controla un dispositivo periférico y está conectado al bus externo
en dicho módulo (100, 200, 300) de computación a través de un puente
PCI.
4. Un método de re-sincronización
para su uso en un sistema de computadores tolerante de fallos con
sincronización por paso de bloqueo que incluye una pluralidad de
módulos (100, 200, 300) de computación que tienen un procesador
(101, 102, 201, 202, 301, 302) y una memoria (104, 204, 304) en el
que cada módulo (100, 200, 300) de computación procesa la misma
cadena de instrucciones con sincronización entre sí, comprendiendo
dicho método las operaciones de
detectar la existencia/no existencia de un fallo
en todo el sistema incluyendo cada uno de dichos módulos (100, 200,
300) de computación,
monitorizar un acceso del procesador de cada uno
de dichos módulos (100, 200, 300) de computación a un bus (103, 203,
303) externo,
cuando se detecta discrepancia en la salida entre
los respectivos módulos (100, 200, 300) de computación, notificar
una interrupción a cada uno de dichos procesadores, y
hacer que cada uno de dichos procesadores ejecute
una instrucción de control de sincronización de reloj para ajustar
la temporización de una respuesta a un acceso desde cada procesador,
haciendo así que cada módulo (100, 200, 300) de computación reanude
el funcionamiento en sincronización,
caracterizado porque
dicha interrupción de cada uno de dichos
procesadores provoca una tarea predeterminada para
re-sincronizar los respectivos módulos (100, 200,
300) de computación, la cual es una tarea que consiste en ejecutar
un acceso a un recurso predeterminado, si no se detecta ningún fallo
en el sistema, para encolar un acceso a dicho recurso desde cada
procesador, y responder a dichos accesos desde todos los módulos
(100, 200, 300) de computación simultáneamente cuando todos se
reciben los accesos desde dichos procesadores.
5. Un programa de
re-sincronización para ejecutar el proceso de
re-sincronización de un sistema de computadores
tolerante de fallos con sincronización por paso de bloqueo que
incluye una pluralidad de módulos (100, 200, 300) de computación que
tienen un procesador (101, 102, 201, 202, 301, 302) y una memoria
(104, 204, 304), en el que cada módulo (100, 200, 300) de
computación procesa la misma cadena de instrucciones con
sincronización entre sí, comprendiendo dicho programa las funciones
de
detectar la existencia/no existencia de un fallo
en todo el sistema incluyendo cada uno de dichos módulos (100, 200,
300) de computación,
monitorizar un acceso del procesador de cada uno
de dichos módulos (100, 200, 300) de computación a un bus (103, 203,
303) externo,
cuando se detecta discrepancia en la salida entre
los respectivos módulos (100, 200, 300) de computación, si no se
detecta ningún fallo en el sistema, notificar una interrupción a
cada uno de dichos procesadores, y
hacer que cada uno de dichos procesadores ejecute
una instrucción de control de sincronización para ajustar la
temporización de una respuesta a un acceso desde cada procesador,
haciendo así que cada módulo (100, 200, 300) de computación reanude
el funcionamiento en sincronización,
caracterizado porque
dicha interrupción de cada uno de dichos
procesadores provoca una tarea predeterminada para
re-sincronizar los respectivos módulos (100, 200,
300) de computación, que es una tarea que consiste en ejecutar un
acceso a un recurso predeterminado, si no se detecta ningún fallo en
el sistema, para encolar un acceso a dicho recurso desde cada
procesador, y responder a dichos accesos desde todos los módulos
(100, 200, 300) de computación simultáneamente cuando se reciben
todos los accesos desde dichos procesadores.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002204305 | 2002-07-12 | ||
| JP2002204305A JP3982353B2 (ja) | 2002-07-12 | 2002-07-12 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2247459T3 true ES2247459T3 (es) | 2006-03-01 |
Family
ID=29728536
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES03015796T Expired - Lifetime ES2247459T3 (es) | 2002-07-12 | 2003-07-10 | Sistema de computadores tolerante a fallos, metodo para la resincronizacion del mismo y programa para su resincronizacion. |
Country Status (10)
| Country | Link |
|---|---|
| US (1) | US7225355B2 (es) |
| EP (1) | EP1380952B1 (es) |
| JP (1) | JP3982353B2 (es) |
| KR (1) | KR100566339B1 (es) |
| CN (1) | CN1326042C (es) |
| AU (1) | AU2003208108A1 (es) |
| CA (1) | CA2434494C (es) |
| DE (1) | DE60301702T2 (es) |
| ES (1) | ES2247459T3 (es) |
| TW (1) | TWI226983B (es) |
Families Citing this family (81)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9047094B2 (en) | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
| US8484441B2 (en) | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
| US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
| US7529807B1 (en) * | 2004-05-05 | 2009-05-05 | Sun Microsystems, Inc. | Common storage in scalable computer systems |
| DE102004032405A1 (de) * | 2004-07-03 | 2006-02-09 | Diehl Bgt Defence Gmbh & Co. Kg | Weltraum-taugliche Rechnerarchitektur |
| US7308605B2 (en) * | 2004-07-20 | 2007-12-11 | Hewlett-Packard Development Company, L.P. | Latent error detection |
| US7487395B2 (en) * | 2004-09-09 | 2009-02-03 | Microsoft Corporation | Method, system, and apparatus for creating an architectural model for generating robust and easy to manage data protection applications in a data protection system |
| US7818614B2 (en) * | 2004-10-25 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method for reintroducing a processor module to an operating system after lockstep recovery |
| US7516359B2 (en) * | 2004-10-25 | 2009-04-07 | Hewlett-Packard Development Company, L.P. | System and method for using information relating to a detected loss of lockstep for determining a responsive action |
| US20080320287A1 (en) * | 2004-10-25 | 2008-12-25 | Roberts Bosch Gmbh | Method and Device for Performing Switchover Operations in a Computer System Having at Least Two Processing Units |
| US7502958B2 (en) * | 2004-10-25 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | System and method for providing firmware recoverable lockstep protection |
| US7624302B2 (en) * | 2004-10-25 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor |
| US7627781B2 (en) | 2004-10-25 | 2009-12-01 | Hewlett-Packard Development Company, L.P. | System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor |
| JP2006178636A (ja) * | 2004-12-21 | 2006-07-06 | Nec Corp | フォールトトレラントコンピュータ、およびその制御方法 |
| JP2006178616A (ja) * | 2004-12-21 | 2006-07-06 | Nec Corp | フォールトトレラントシステム、これで用いる制御装置、動作方法、及び動作プログラム |
| US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
| US7590885B2 (en) * | 2005-04-26 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | Method and system of copying memory from a source processor to a target processor by duplicating memory writes |
| US7496786B2 (en) * | 2006-01-10 | 2009-02-24 | Stratus Technologies Bermuda Ltd. | Systems and methods for maintaining lock step operation |
| JP5220281B2 (ja) * | 2006-03-31 | 2013-06-26 | 日本電気株式会社 | 情報処理システムのコアセル変更制御方式及びその制御プログラム |
| EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
| US7434096B2 (en) * | 2006-08-11 | 2008-10-07 | Chicago Mercantile Exchange | Match server for a financial exchange having fault tolerant operation |
| US7480827B2 (en) * | 2006-08-11 | 2009-01-20 | Chicago Mercantile Exchange | Fault tolerance and failover using active copy-cat |
| US8041985B2 (en) | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
| CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
| US8756402B2 (en) * | 2007-09-14 | 2014-06-17 | Intel Mobile Communications GmbH | Processing module, processor circuit, instruction set for processing data, and method for synchronizing the processing of codes |
| CN101383690B (zh) * | 2008-10-27 | 2011-06-01 | 西安交通大学 | 一种基于socket的容错计算机系统的网络同步方法 |
| GB2471138B (en) * | 2009-06-19 | 2014-08-13 | Advanced Risc Mach Ltd | Handling integer and floating point registers during a context switch |
| CN101882098B (zh) * | 2009-07-10 | 2012-07-11 | 威盛电子股份有限公司 | 微处理器集成电路以及相关除错方法 |
| US8645286B2 (en) | 2010-02-23 | 2014-02-04 | Prior Knowledge, Inc. | Configurable circuitry for solving stochastic problems |
| US8058916B2 (en) | 2010-04-15 | 2011-11-15 | Xilinx, Inc. | Lockstep synchronization and maintenance |
| EP3156896B1 (en) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
| EP2628076B1 (en) | 2010-10-12 | 2017-08-30 | Intel Corporation | An instruction sequence buffer to store branches having reliably predictable instruction sequences |
| TWI541721B (zh) | 2010-10-12 | 2016-07-11 | 軟體機器公司 | 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 |
| GB2489000B (en) | 2011-03-14 | 2019-09-11 | Advanced Risc Mach Ltd | Diagnosing code using single step execution |
| KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
| CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
| CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
| CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
| US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
| JP5699057B2 (ja) * | 2011-08-24 | 2015-04-08 | 株式会社日立製作所 | プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス |
| US9811338B2 (en) * | 2011-11-14 | 2017-11-07 | Intel Corporation | Flag non-modification extension for ISA instructions using prefixes |
| WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
| KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
| CN102521086B (zh) * | 2011-12-08 | 2014-07-16 | 上海交通大学 | 基于锁步同步的双模冗余系统及其实现方法 |
| US8832720B2 (en) * | 2012-01-05 | 2014-09-09 | Intel Corporation | Multimedia driver architecture for reusability across operating systems and hardware platforms |
| US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
| US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
| US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
| US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
| US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
| US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
| US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
| US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
| US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
| DE102012219180A1 (de) * | 2012-10-22 | 2014-05-08 | Robert Bosch Gmbh | Recheneinheit für ein Steuergerät und Betriebsverfahren hierfür |
| US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
| US9563579B2 (en) | 2013-02-28 | 2017-02-07 | Intel Corporation | Method, apparatus, system for representing, specifying and using deadlines |
| US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
| WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
| US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
| WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
| US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
| EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
| US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
| US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
| WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
| US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
| US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
| US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
| WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
| US9792121B2 (en) * | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
| US9183155B2 (en) * | 2013-09-26 | 2015-11-10 | Andes Technology Corporation | Microprocessor and method for using an instruction loop cache thereof |
| US9952620B2 (en) | 2014-04-10 | 2018-04-24 | Intel Corporation | Time-synchronizing a group of nodes |
| JP6360387B2 (ja) * | 2014-08-19 | 2018-07-18 | ルネサスエレクトロニクス株式会社 | プロセッサシステム、エンジン制御システム及び制御方法 |
| US9697094B2 (en) * | 2015-02-06 | 2017-07-04 | Intel Corporation | Dynamically changing lockstep configuration |
| TWI514148B (zh) * | 2015-03-16 | 2015-12-21 | Univ Nat Sun Yat Sen | 快取記憶體 |
| JP6436031B2 (ja) * | 2015-09-18 | 2018-12-12 | 信越半導体株式会社 | 単結晶引き上げ装置、及び単結晶引き上げ方法 |
| JP6083480B1 (ja) * | 2016-02-18 | 2017-02-22 | 日本電気株式会社 | 監視装置、フォールトトレラントシステムおよび方法 |
| US10152427B2 (en) | 2016-08-12 | 2018-12-11 | Google Llc | Hybrid memory management |
| US10037173B2 (en) * | 2016-08-12 | 2018-07-31 | Google Llc | Hybrid memory management |
| JP6853162B2 (ja) * | 2017-11-20 | 2021-03-31 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
Family Cites Families (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3864670A (en) * | 1970-09-30 | 1975-02-04 | Yokogawa Electric Works Ltd | Dual computer system with signal exchange system |
| US5020024A (en) | 1987-01-16 | 1991-05-28 | Stratus Computer, Inc. | Method and apparatus for detecting selected absence of digital logic synchronism |
| JPH0432955A (ja) | 1990-05-23 | 1992-02-04 | Oki Electric Ind Co Ltd | プロセッサ障害検出装置 |
| JPH05298134A (ja) | 1991-12-16 | 1993-11-12 | Internatl Business Mach Corp <Ibm> | コンピュータシステムにおける処理誤りの処理機構及び方法 |
| WO1995015529A1 (en) | 1993-12-01 | 1995-06-08 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
| US5832253A (en) * | 1993-12-06 | 1998-11-03 | Cpu Technology, Inc. | Multiprocessors system for selectively wire-oring a combination of signal lines and thereafter using one line to control the running or stalling of a selected processor |
| JPH08235015A (ja) | 1995-02-27 | 1996-09-13 | Mitsubishi Electric Corp | プロセッサ装置並びにプロセッサ故障診断方法 |
| JP3241997B2 (ja) | 1996-06-28 | 2001-12-25 | 富士通株式会社 | 情報処理装置 |
| US5805870A (en) * | 1996-06-28 | 1998-09-08 | International Business Machines Corporation | System and method for correcting clock drift in multiprocessor systems |
| US5875320A (en) * | 1997-03-24 | 1999-02-23 | International Business Machines Corporation | System and method for synchronizing plural processor clocks in a multiprocessor system |
| US5903717A (en) * | 1997-04-02 | 1999-05-11 | General Dynamics Information Systems, Inc. | Fault tolerant computer system |
| US5923830A (en) | 1997-05-07 | 1999-07-13 | General Dynamics Information Systems, Inc. | Non-interrupting power control for fault tolerant computer systems |
| JP2001523855A (ja) | 1997-11-14 | 2001-11-27 | マラソン テクノロジーズ コーポレイション | 故障回復/耐故障計算機 |
| US6175930B1 (en) * | 1998-02-17 | 2001-01-16 | International Business Machines Corporation | Demand based sync bus operation |
| GB2340627B (en) * | 1998-08-13 | 2000-10-04 | Plessey Telecomm | Data processing system |
| US6757847B1 (en) * | 1998-12-29 | 2004-06-29 | International Business Machines Corporation | Synchronization for system analysis |
| JP2000200255A (ja) | 1999-01-07 | 2000-07-18 | Hitachi Ltd | プロセッサ間の同期化方法及び同期回路 |
| US6643787B1 (en) * | 1999-10-19 | 2003-11-04 | Rambus Inc. | Bus system optimization |
| US6980617B1 (en) * | 2000-11-15 | 2005-12-27 | Advantest Corporation | Reception data synchronizing apparatus and method, and recording medium with recorded reception data synchronizing program |
| US6480966B1 (en) * | 1999-12-07 | 2002-11-12 | International Business Machines Corporation | Performance monitor synchronization in a multiprocessor system |
| JP2002049501A (ja) | 2000-08-04 | 2002-02-15 | Nippon Telegr & Teleph Corp <Ntt> | 耐故障性システム及びその故障切り分け方法 |
-
2002
- 2002-07-12 JP JP2002204305A patent/JP3982353B2/ja not_active Expired - Fee Related
-
2003
- 2003-07-01 TW TW092117919A patent/TWI226983B/zh not_active IP Right Cessation
- 2003-07-03 AU AU2003208108A patent/AU2003208108A1/en not_active Abandoned
- 2003-07-07 CA CA002434494A patent/CA2434494C/en not_active Expired - Fee Related
- 2003-07-08 US US10/614,000 patent/US7225355B2/en not_active Expired - Fee Related
- 2003-07-10 DE DE60301702T patent/DE60301702T2/de not_active Expired - Lifetime
- 2003-07-10 ES ES03015796T patent/ES2247459T3/es not_active Expired - Lifetime
- 2003-07-10 EP EP03015796A patent/EP1380952B1/en not_active Expired - Lifetime
- 2003-07-11 KR KR1020030047086A patent/KR100566339B1/ko not_active Expired - Fee Related
- 2003-07-14 CN CNB031472990A patent/CN1326042C/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| TWI226983B (en) | 2005-01-21 |
| DE60301702D1 (de) | 2005-11-03 |
| KR20040007322A (ko) | 2004-01-24 |
| CN1326042C (zh) | 2007-07-11 |
| EP1380952B1 (en) | 2005-09-28 |
| CA2434494A1 (en) | 2004-01-12 |
| CN1495611A (zh) | 2004-05-12 |
| CA2434494C (en) | 2008-11-25 |
| TW200401187A (en) | 2004-01-16 |
| AU2003208108A1 (en) | 2004-01-29 |
| EP1380952A1 (en) | 2004-01-14 |
| US7225355B2 (en) | 2007-05-29 |
| DE60301702T2 (de) | 2006-07-06 |
| JP3982353B2 (ja) | 2007-09-26 |
| US20040010789A1 (en) | 2004-01-15 |
| JP2004046611A (ja) | 2004-02-12 |
| KR100566339B1 (ko) | 2006-03-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2247459T3 (es) | Sistema de computadores tolerante a fallos, metodo para la resincronizacion del mismo y programa para su resincronizacion. | |
| US7107484B2 (en) | Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof | |
| CA1259415A (en) | High level self-checking intelligent i/o controller | |
| US7987385B2 (en) | Method for high integrity and high availability computer processing | |
| US9594646B2 (en) | Reestablishing synchronization in a memory system | |
| JPH0773059A (ja) | フォールトトレラント型コンピュータシステム | |
| JP2004326151A (ja) | データ処理装置 | |
| US9104564B2 (en) | Early data delivery prior to error detection completion | |
| JPH03184129A (ja) | 特定のデータをシステムデータに変換する方法 | |
| AU2005246990A1 (en) | Fault tolerant computer system and interrupt control method for the same | |
| US5905875A (en) | Multiprocessor system connected by a duplicated system bus having a bus status notification line | |
| US7493517B2 (en) | Fault tolerant computer system and a synchronization method for the same | |
| US7590885B2 (en) | Method and system of copying memory from a source processor to a target processor by duplicating memory writes | |
| CN101861569B (zh) | 高集成度和高可用性计算机处理模块 | |
| JP3774826B2 (ja) | 情報処理装置 | |
| JPH06161798A (ja) | 情報処理装置 | |
| JP3069585B2 (ja) | データ処理装置における目標指定リセット法 | |
| CN114416436A (zh) | 基于SoC芯片面向单粒子翻转效应的可靠性方法 | |
| JP3415636B2 (ja) | プロセッサ装置 |