PT835489E - Metodo e sistema para utilizar dados invertidos para detectar dados corrompidos - Google Patents

Metodo e sistema para utilizar dados invertidos para detectar dados corrompidos Download PDF

Info

Publication number
PT835489E
PT835489E PT96919156T PT96919156T PT835489E PT 835489 E PT835489 E PT 835489E PT 96919156 T PT96919156 T PT 96919156T PT 96919156 T PT96919156 T PT 96919156T PT 835489 E PT835489 E PT 835489E
Authority
PT
Portugal
Prior art keywords
data item
data
inverted
item
memory
Prior art date
Application number
PT96919156T
Other languages
English (en)
Inventor
Scott P Gary
David E Pope
Tao Chang
Original Assignee
Abbott Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Abbott Lab filed Critical Abbott Lab
Publication of PT835489E publication Critical patent/PT835489E/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Description

85 370 ΕΡ 0 835 489/ΡΤ
DESCRICÃO “Método e sistema para utilizar dados invertidos para detectar dados corrompidos”
Campo do invento
Este invento refere-se genericamente à detecção de dados corrompidos armazenados numa memória de computador e, mais especificamente, a um método e sistema que é utilizado para detectar erros em tais dados antes dos dados ser utilizados em cálculo.
Antecedentes do invento
Muitas pessoas crêem erradamente que os computadores são infalíveis na resolução de cálculos matemáticos. Outros assumem que, exceptuando os erros que tiverem sido feitos na entrada de dados ou na escrita de um programa, que utiliza os dados, os cálculos e a lógica implementados por um computador podem ser consideradas como sendo exactas. Infelizmente, esta assunção é incorrecta porque a mesma ignora outras fontes de erro, incluindo erros que aparecem no suporte físico. Por exemplo, foi recentemente anunciado que a parte do ponto flutuante de uma unidade de processamento central (CPU), utilizada para implementar cálculos matemáticas pode introduzir erros no resultado devido a um “erro” prévio não detectado na lógica implementada pelo dispositivo. O presente invento encontra-se ainda envolvido com uma outra fonte de erro que pode afectar os cálculos feitos com um computador. Antes de serem utilizados em cálculo, os dados são tipicamente armazenados dentro da memória do computador. Tipicamente, os dados serão mantidos numa armazenagem não volátil, tal como memória apenas de leitura (ROM) ou numa unidade de disco rígido ou unidade de disquetes até serem necessários num cálculo ou em qualquer outro aspecto de um programa, que está a ser executado no computador. Quando são necessários num programa os dados serão normalmente transferidos para a memória de acesso aleatório (RAM), após o que a CPU levará a efeito uma operação matemática tal como a adição do valor dos dados a um outro valor de dados, produzindo um resultado que será temporariamente armazenado na RAM ou subsequentemente transferido para armazenagem não volátil.
85 370 ΕΡ 0 835 489/ΡΤ 2 A maneira pela qual os dados são utilizados por um computador é controlada pelos passos da linguagem máquina. Estes passos de linguagem máquina são trequentemente produzidos por compilação ou Interpretação de um programa escrito numa linguagem de alto nível, tal como C++. O programa determina quais os valores de dados que são utilizados, como são utilizados os dados e o que é feito com qualquer resultado de cálculo derivado dos dados. No entanto, antes de ser utilizados pela CPU, os dados podem ficar corrompidos, quer na armazenagem não volátil quer na RAM do computador pessoal.
Os erros nos dados armazenados na memória (RAM) podem surgir por várias razões. A memória pode ser adversamente afectada pela exposição a níveis elevados de radiação, descargas estáticas ou outras condições ambientais, que provocam a corrupção dos dados armazenados na mesma. Em tais casos, a memória será tipicamente estabelecida para todos os zeros ou uns binários. Uma pastilha electrónica de memória pode também falhar sem qualquer razão aparente, originando erros em alguns ou em todos os dados armazenados dentro da pastilha electrónica. O excesso de amontoamento ou de erros na programação pode também provocar que os dados armazenados na memória sejam perdidos e/ou escritos por cima.
Nalgumas aplicações, os erros num ou dois bits dos dados armazenados na memória podem ter consequências pequenas. Por exemplo, as imagens gráficas não devem genericamente ser afectadas de forma perceptivel se apenas um ou dois bits dos dados da imagem forem corrompidos. No entanto, se os dados são utilizados em aplicações críticas, tais como equipamento médico de controlo, poderá ser essencial detectar quaisquer erros antes dos dados corrompidos poderem conduzir a possíveis consequências perigosas para a vida. A abordagem mais simples para detectar erros nos dados é fazer uma cópia de cada item de dados e então comparar as duas cópias periodicamente para determinar se um erro na memória na qual os mesmos estão armazenados deu origem a que uma das cópias difira da outra. No entanto, uma falha na memória, que provoca que todos os bits armazenados num ou mais pastilhas electrónicas de memória sejam estabelecidos quer em zeros quer em uns binários, pode não ser detectada por este método, desde que ambas as cópias do elemento de dados serão afectadas pela corrupção da mesma maneira. 3 85 379 ΕΡ Ο 835 489/ΡΤ
Além disso, é conhecido a partir do documento DE-A-3312873 como armazenar dados na forma normal e invertida e verificar a correspondência após a leitura.
As técnicas convencionais mais sofisticadas para detecção de erros nos dados incluem a utilização de valores da verificação de redundância cíclicos (CRC), que devem determinar quando os dados são armazenados e depois verificados periodicamenté. Os valores de CRC são determinados utilizando fórmulas polinomiais relativamente complexas. Qualquer alteração nos dados pode ser detectada se o valor de CRC determinado subsequentemente difere dos valores CRC prévios para os dados. Uma técnica semelhante emprega somas de verificação para detectar alterações nos dados armazenados na memória. O soma de verificação anteriormente determinada para os dados é comparada com o soma de verificação subsequente e é detectado um erro se os valores das duas somas de verificação diferem.
Ambos estes métodos da técnica anterior têm várias desvantagens comuns. Uma das desvantagens mais significativas, em particular, quando se utiliza uma CPU relativamente menos eficiente, é a sobrecarga de cálculo imposta ao processador para determinar o valor de CRC ou a soma de verificação. Um outro problema é a complexidade adicional de programação requerida para atribuir os itens de dados que serão verificados por um destes métodos e para assegurar que os itens de dados são periodicamente verificados em relação a erros, quando o programa é executado. Finalmente, uma vez que cada um dos métodos da técnica anterior é normalmente realizado apenas numa base periódica, pode surgir um erro nos dados depois de ter sido realizada a última verificação e permanecer sem detecção quando é a seguir utilizado o item de dados no cálculo. O que é necessário é uma técnica para detecção de erros nos dados críticos, que pode ser implementada com uma sobrecarga de cálculo relativamente mínima e sem requerer um esforço de programação significativo para assegurar que os dados críticos são apenas verificados em relação a erros imediatamente antes dos dados serem utilizados num programa. Uma tal técnica deve impor uma pequena carga ao programador para implementar, deve ser mais eficiente do que os métodos da técnica anterior e deve ser completamente fiável. No entanto, não se deverá esperar que qualquer nova técnica, destinada detectar erros nos dados armazenados na memória será também capaz de detectar erros que surjam no processo de cálculo devido aos defeitos na CPU ou a erros no programa. 4 ΕΡ Ο 835 489/ΡΤ
Sumário do invento
De acordo com o presente invento, é definido um método para delectar um erro no item de dados como estabelecido na reivindicação independente 1. O método inclui os passos de utilização de uma função construtora, para determinar um item de dados invertido, que corresponde ao item de dados, quando o item de dados é armazenado na memória. O item de dados invertido é também armazenado na memória em associação com o item de dados. Quando o item de dados é requerido num programa, ambos os itens de dados e de dados invertidos são chamados da memória. A seguir, o item de dados é comparado com o item de dados invertido antes de ser utilizado pelo programa. Se o item de dados não corresponde mais ao item de dados invertido, o método fornece a indicação de que ocorreu um erro quer no item de dados quer no item de dados invertido.
Numa concretização, o método inclui, além disso, o passo de inversão do item de dados para produzir um item de dados invertido de teste para comparação com o item de dados invertido. Numa outra concretização, o método inclui, em vez disso, o passo de inverter o item de dados invertido para produzir um item de dados de teste para comparação com o item de dados. Para esta concretização, o método utiliza, de preferência, um operador de função de conversão (definido pelo utilizador) para executar a inversão do item de dados invertido. Adicionalmente, o operador da função de conversão é, de preferência, introduzida de novo para permitir a partilha do operador entre uma pluralidade de tarefas, nas quais é utilizada uma pluralidade de outros itens de dados invertidos.
No método está também incluído o passo de declaração um tipo de item de dados para o item de dados para indicar que o mesmo tem um item de dados invertido a si associado. Além disso, os passos de utilização de uma função construtora para determinar o item de dados invertido, de armazenamento do item de dados e do item de dados invertido na memória, de chamar o item de dados e o item de dados invertido da memória, de comparação do item de dados com o item de dados invertido e de indicação de que ocorreu um erro se o item de dados já não corresponde ao item de dados invertido, são implementados automaticamente para cada item de dados que é declarado para ser do tipo que tem um item de dados invertido, associado ao mesmo.
Um aspecto adicional do presente invento é dirigido a um sistema para detecção de um erro no item de dados antes do item dc dados ser empregue num 5 ΕΡ Ο 835 489/ΡΤ cálculo como estabelecido na reivindicação independente 9. O sistema inclui um computador para implementar o cálculo que emprega o item de dados. O computador inclui uma CPU que executa os passos de programa para detectar um erro no item de dados. É incluída uma memória no computador para armazenar o item de dados e para armazenar instruções máquina que controlam a CPU e determinam os passos do programa implementados pela CPU. Adicionalmente, o computador inclui um bus de dados, que faz o acoplamento da memória à CPU. As instruções máquina obrigam a CPU a utilizar uma função construtora para determinar um item de dados invertido, correspondente ao item de dados, quando o item de dados é armazenado na memória. O item de dados invertido é então armazenado na memória em associação com o item de dados. Além disso, as instruções máquina fazem com que a CPU chame o item de dados e o item de dados invertido da memória, quando o item de dados é a seguir requerido pela CPU, e a comparar o item de dados com o item de dados invertido, antes deste ser utilizado. Adicionalmente, a CPU é obrigada a indicar que ocorreu um erro quer no item de dados quer no item de dados invertido, se o item de dados já não corresponde ao item de dados invertido.
Outras funções implementadas pela CPU, em resposta às instruções máquina, são geralmente consistentes com os passos descritos acima em ligação com o método.
Breve descrição das figuras dos desenhos
Os aspectos anteriores e muitas das vantagens presentes deste invento serão mais facilmente apreciadas à medida que as mesmas se vão tomando melhor compreendidas pela referência à descrição detalhada seguinte, quando tomada em conjunto com os desenhos anexos, nos quais: a FIG. 1 é uma vista isométrica de um sistema de computador pessoal no qual é implementado o presente invento; a FIG. 2 é um diagrama de blocos dos componentes internos dentro do chassis do processador do computador pessoal, mostrado na FIG. 1; a FIG. 3 é um diagrama de blocos, representando uma pluralidade de células de memória, que mostra as várias maneiras diferentes pelas quais os dados armazenados nas células da memória podam sar corrompidos;
85 370 ΕΡ 0 835 489/ΡΤ 6 a FIG. 4 é um fluxograma que representa uma visão global dos passos lógicos implementados para executar o presente invento; a FIG. 5 é um fluxograma que mostra os pormenores dos passos implementados na definição de uma classe para um tipo de dados protegidos; a FIG. 6 é um fluxograma que mostra os passos implementados por um programador para incorporar um tipo de dados protegidos num programa; e a FIG. 7 é um fluxograma que representa a lógica implementada para verificar a integridade dos dados protegidos, quando é implementado um programa, no qual o presente invento é utilizado.
Descrição das concretizações preferidas O presente invento destina-se a ser implementado num microcontrolador (não mostrado) ou num computador, tal como um computador pessoal 10, o qual está representado na FIG. 1. O computador pessoal 10 é geraimente de concepção convencional, incluindo um chassis de processador 12, no qual são colocados os componentes internos de suporte físico do computador pessoal. No topo do chassis de processador 12 está um monitor de visualização 14, em que a resolução e as características de cor do mesmo não são particularmente relevantes no que se refere ao presente invento. Uma unidade de disco rígido 16 e uma unidade de disquetes 18 estão instaladas no painel frontal do chassis do processador, fornecendo a memória não volátil fixa para armazenagem de programas de aplicação, outros ficheiros, e dados. A unidade de disquetes 18 permite ao computador pessoal 10 fazer a leitura e escrita de ficheiros e/ou dados nas disquetes (não mostradas separadamente).
Um teclado 20 está acoplado ao chassis de processador 12, permitindo ao utilizador introduzir dados e instruções que controlam os programas que são executados no computador pessoal 10. A entrada do operador no sistema é também fornecida pela utilização de um rato 22 ou outro dispositivo de apontação, que controla um cursor no monitor de visualização 14; o cursor pode ser posicionado pelo utilizador para seleccionar itens do menu e objectos gráficos apresentados no monitor de visualização.
85 379 ΕΡ Ο 835 489/ΡΤ 7 A FIG. 2 representa os componentes convencionais incluídos dentro do chassis do processador 12, alguns dos quais são utilizados em ligação com a implementação do presente invento. Uma CPU 24 é proporcionada para executar instruções máquina, que implementam os passos do programa em aplicações que correm no computador pessoal 10. A CPU 24 está acoplada a um bus de dados 26, como estão outros componentes, incluindo uma memória 28. A memória 28 inclui tanto a memória apenas de leitura (ROM) como a memória de acesso aleatório (RAM). As instruções máquina requeridas para o arranque inicial do computador pessoal 10 estão armazenadas na ROM. A armazenagem volátil é fornecida para as instruções máquina que são carregadas quando as aplicações são corridas e para armazenamento de variáveis e outros dados requeridos para executar tais programas. Uma interface de visualização 30 é utilizada para accionar o monitor de visualização 14 em resposta os dados de vídeo, transferidos para a interface de visualização pelo bus de dados 26. Uma porta série/rato 32, um interface 34 para unidade de disco rígida e unidade de disquetes e um interface para teclado 36 estão acoplados também ao bus de dados. A função de cada um dos componentes representados na FIG. 2 em relação à sua utilização no computador pessoal 10 é bem conhecida pelos técnicos de competência normal na técnica e não necessitam de ser explicada mais para proporcionar uma descrição habilitante do presente invento. Deve ser notado que podem ser utilizados vários tipos de CPU no presente invento diferentes daqueles utilizados tipicamente com os computadores pessoais. Por exemplo, se o presente invento é implementado num controlador para outros dispositivos, a CPU 24 e a memória 28 podem ser substituídas por um microcontrolador (não mostrado) que inclui ambos estes componentes funcionais. O computador pessoal 10 está representado na FIG. 1 como um sistema de secretária; no entanto, o presente invento pode ser implementado virtualmente em qualquer tipo de computador, incluindo os computadores portáteis e postos de trabalho em rede. É também facilmente implementado num microcontrolador utilizado para controlar um dispositivo de suporte físico tal como um componente médico. Embora a concretização do microcontrolador do invento não seja mostrada nas figuras, estes dispositivos são tão bem conhecidos no campo da tecnologia de controlo que não há necessidade de providenciar detalhes acerca das concretizações. Operativamente, as funções de concretização do microcontrolador são em muito da mesma maneira que as da concretização que executa um programa no computador pessoal 10. Além disso, deverá ser notado que o presente invento pode ser incluído numa variedade de diferentes programas de aplicação, sem limitações quanto ao tipo. Virtualmcntc qualquer programa que
85 370 ΕΡ 0 835 489/ΡΤ 8 utiliza dados pode beneficiar da inclusão do presente invento para detectar erros nos dados antes de serem utilizados dados errados.
Como acima explicado nos antecedentes do invento, os dados armazenados na memória de um microcontrolador ou de um computador, tal como o computador pessoal 10 estão sujeitos a corrupção devida a várias causas. A FIG. 3 fornece vários exemplos, que mostram algumas das maneiras pelas quais os dados armazenados na memória pode ser corrompidos. Nesta figura, está representada uma pluralidade de células de memória 40 para mostrar os bytes de dados armazenados na memória originalmente na forma binária, antes de experimentar, pelo menos, alguma corrupção devida aos efeitos de uma descarga estática ou radiação, que está representada por um faísca iluminante 42. No primeiro exemplo de corrupção, o byte armazenado numa única célula de monitor de vídeo 44 é alterado nas células de memória 40'. No byte armazenado na célula de memória 44', o segundo bit menos significante (LSB) dos dados alterou-se. Especificamente, como armazenado originalmente, a célula de memória 44 contém o valor binário “11000101"; este valor é alterado na célula de memória 44' para “11000111”. (O bit corrompido está sublinhado de modo a indicar mais claramente a alteração que ocorreu).
No segundo exemplo de corrupção de dados, mostrado na FIG. 3, os dados contidos nas células de memória 40" foram estabelecidos em zeros em resultado da descarga estática ou radiação. Alternativamente, o efeito da descarga estática ou radiação pode causar que todos os dados sejam estabelecidos em uns binários, como indicado nas células de memória 40"'. Deve ser evidente que as condições de dados corruptos, mostradas nas células de memória 40" e 40"' deverão impedir a comparação das duas cópias dos dados armazenados originalmente na memória, uma vez que após a corrupção, ambas as cópias devem ser afectadas da mesma maneira, impedindo a detecção da corrupção.
Pelo contrário, o presente invento evita este problema pela armazenagem dos itens de dados críticos na memória tanto nas suas formas padrão como na sua forma de bit invertido (espelho). Quando o item de dados é invertido, cada bit binário do item de dados é alterado para o valor binário oposto, isto é, cada zero binário é alterado para um um binário e cada um binário é alterado para um zero binário. Assim, por exemplo, o valor de bit invertido de “10010010” é “01101101”. Antes do item de dados ser subsequentemente utilizado num cálculo ou para qualquer outro fim por um programa aplicação, o item de dados deve primeiro ser
85 379 ΕΡ Ο 835 489/ΡΤ 9 obtido da sua localização de armazenagem na memória. É, então, ou invertido e comparado com as suas formas de bit invertido anteriores ou o item de dados de bit invertido anteriormente é obtido da rnemúria e invertido para se obter a forma padrão para comparação com o item de dados, obtido exactamente da memória. Uma alteração quer no item de dados armazenado originalmente ou na correspondente forma de bit invertido armazenada originalmente será assim detectada, devido a uma diferença entre os dois valores que são comparados.
Na FIG. 4, é apresentada num fluxograma uma visão geral dos passos envolvidos no presente invento, que começam no bloco inicial 50. No bloco 52, é feita uma selecção do item(s) de dados que serão verificados em relação à corrupção ou erro. Em muitas ocasiões, muitos dos dados utilizados no programa não são suficientemente críticos para justificar o excesso de armazenagem adicional requerida para armazenar a forma invertida dos dados ou o excesso de cálculo (mesmo que ligeiro) requerido para detectar os erros nos dados. O utilizador seleccionará assim apenas os itens de dados que são de importância crítica num programa de “itens de dados protegidos”, isto é, os itens de dados em que serão verificados os erros utilizando o presente invento.
No bloco 54, o utilizador define a classe (ou tipo de dados definidos pelo utilizador) para o tipo de dados protegidos. Os pormenores da lógica envolvida na concretização deste passo estão representados no fluxograma da FIG. 5, a começar no bloco 70. Como indicado nesse fluxograma, para cada o tipo de dados protegidos, o utilizador executa os passos indicados, começando com o passo de definição de armazenamento para o item de dados protegido, como proporcionado no bloco 72. Neste passo, o utilizador assegurará que o armazenamento apropriado na memória é regulado para cada item de dados protegido. Este mesmo passo deverá ser requerido para qualquer item de dados para assegurar que a memória apropriada e adequada é atribuída ao item de dados. No bloco 74, o utilizador define o armazenamento requerido para a cópia bit invertido (espelho) do item de dados protegido, que é também armazenado na memória, em associação com o item de dados protegido a partir do qual foi produzido. O presente invento é, de preferência, implementado na linguagem C++. Uma das vantagens da utilização desta linguagem é a sua inclusão das funções construtoras. No bloco 76, a lógica fornece a declaração da(s) função(ões) construtora(s) utilizadas para criar um exemplo ou “utilização única) do tipo de dados protegidos e utilizado para converter tipos de dados padrão (número inteiro,
85 370 ΕΡ 0 835 489/ΡΤ 10 ponto flutuante, etc.) no tipo de dados protegidos. Na linguagem C++, a função construtora realiza eficientemente esta tarefa com a mínima quantidade de sobrecarga do processador (ciclos).
Uma outra capacidade incluída dentro das linguagens C++ (e outras) é o previsão de funções de conversão, utilizadas para converter entre tipos de dados. Uma função de conversão é declarada para o tipo de dados protegidos para incluir a conversão do tipo de dados protegidos nos vários tipos de dados padrão que serão utilizados no programa. Uma vez definida a função de conversão, não é necessário ao programador incluir explicitamente os passos de programação a fim de implementar as funções de conversão cada vez que o item de dados protegido é requerido para utilização no programa aplicação. Pelo contrário, estes passos serão automaticamente implementados pela linguagem. Um exemplo do ficheiro de cabeçalho para definição de uma classe espelhojnt é como segue. class int mirror privado: int value; int valorjnirror público: int_mirror(int); //funções membro normal void store (int new_value); void compar (void): int get(void); //funções de conversão operator int (); }; // valor inteiro //publicar espelho invertido do valor inteiro //construtor //armazenar novo valor e seu espelho //comparar o valor com seu espelho //adquirir valor //converter mirror int num inteiro
No hloco 78, o utilizador declara as funções de conversão empregues para verificar a integridade dos dados como parte da conversão do tipo de dados protegidos num ou mais tipos de dados padrão. Nos blocos 80 e 82 o utilizador define a seguir, respectivamente, as funções construtoras especificas e as funções de conversão requeridas. Um exemplo da função construtora e da função de cuuversão para tratar com dados inteiros é apresentado abaixo. 11 ΕΡ Ο 835 489/ΡΤ //CONSTRUTOR mirror_int_mirror_int (int_value) { store (value); } //FUNÇÕES MEMBRO NORMAL void mirror_int_store (in new_value) r \ value = new_value; mirror_value = ~new_value; } void mirror_int_compare(void) char *error_string=” se (value ! = ~mirror_value) { sprintf ( error_string, “Corrupted mirror_int %p: %d = %d”, este, valor, ~mirror_value); // FUNÇÃO DE TRATAMENTO DE ERROS DE CHAMADA sistem_error (error_string); } int mirror_integer(void) { int temp = value; compare(); return temp; } //FUNÇÕES DE CONVERSÃO mirror_int_operator int() { return (get()); } 12 ΕΡ Ο 835 489/ΡΤ Ο bloco 84 fornece a definição de uma função de acção que será utilizada se qualquer corrupção de dados é detectada num item de dados protegido. Neste passo, o utilizador pude proporcionar que seja visualizada uma mensagem de aviso e/ou que, além disso, a execução da aplicação, na qual o presente invento é utilizado, seja interrompida. No entanto, a resposta específica à detecção da corrupção de dados dependerá do programa de aplicação particular, no qual o presente invento é utilizado. Em seguida, a lógica continua no bloco 86, voltando para a visão geral mostrada na FIG. 4.
Voltando a referir a FIG. 4, o bloco 56 proporciona a inclusão do tipo de dados protegidos no programa ou aplicação, em que o presente invento é empregue. Os pormenores adicionais deste passo estão representados na FIG. 6, começando com o bloco 90, que indica que os passos seguintes são implementados pelo programador, que faz a escrita do programa de aplicação, no qual é incluído o presente invento.
No bloco 92, o programador inclui o ficheiro de cabeçalho do tipo de dados protegidos, em que são definidos ou declarados exemplos do tipo de dados protegidos. Este passo será evidente para o técnico normal nas técnicas de programação, uma vez que seja incluído o ficheiro de cabeçalho apropriado para cada uma das funções da linguagem de programação, que são utilizadas no programa.
No bloco 94, o programador inclui indicações de definição para cada item de dados protegido, indicando que o item é do tipo de dados protegidos. Finalmente, no bloco 96, o programador deve incluir uma indicação de declaração para cada item de dados protegido, utilizado fora do âmbito da definição, indicando que o item é do tipo de dados protegidos. A lógica continua no bloco 98, voltando para a visão geral mostrada na FIG. 4. O próximo passo na FIG. 4 é num bloco 58. Este passo proporciona a construção e o teste do programa, no qual o é empregue presente invento. Uma vez que este passo tem pouco a ver com o presente invento, a não ser assegurar que os erros de programação relacionados sejam detectados e corrigidos, não sendo providenciados detalhes adicionais. O bloco 60 indica que o programa, construído e testado com sucesso, está a correr, pela sua execução na CPU. Os pormenores adicionais dos passos que são 13 ΕΡ Ο 835 489/ΡΤ implementados em ligação com o presente invento, quando é feito correr o programa, no qual o mesmo está incluído, são mostrados na FIG. 7, começando no bloco 100. No bloco 102, são criados automaticamente os itens de dados protegidos, utilizando funções construtoras. Uma vez que as funções construtoras definem elementos de dados dos tipos de dados protegidos, compreendendo ambos os itens de dados protegidos e o item de dados de bit invertido correspondente, a criação e o armazenamento destes itens de dados são tratados em contínuo pela função construtora durante a execução do programa aplicação. A FIG. 7 não mostra qualquer dos outros passos implementados, quando é corrido um programa de aplicação específico, que inclui o presente invento. Pelo contrário, apenas os passos que envolvem o presente invento estão representados. Por exemplo, o bloco decisão 104 determina se um item de dados protegido está a ser acedido pelo programa. Se não, um bloco decisão 106 determina se estão a ser escritos dados num item de dados protegido. Uma resposta negativa a ambos os blocos de decisão conduz ao bloco 102. No entanto, se estão a ser escritos dados para um item de dados protegido, o bloco 108 providencia a chamada da apropriada função construtora para converter os dados para o tipo de dados protegido. Assim, uma variável de ponto flutuante é convertida no tipo de dados protegido, se a variável de ponto flutuante é atribuída a um item de dados protegido. O bloco 110 chama o armazenamento do item de dados protegido e do seu item de dados de bit invertido associado na memória (RAM). A lógica volta depois para o bloco 102.
Voltando para o bloco decisão 104, se um item de dados protegido está a ser acedido pelo programa, um bloco 112 indica que deve ser utilizada a função de conversão apropriada para inverter o item de dados protegido (produzindo dados de teste para fins de comparação). Está implícito dentro do bloco 112 a recuperação do item de dados protegido da memória, em que o mesmo está armazenado. A seguir, no bloco 114, os dados de teste resultantes da inversão do item de dados protegido, que acabou de ser acedido a partir da memória é comparado com o item de dados protegidos armazenados, o qual foi recuperado da memória. Uma alteração quer no item de dados protegido quer no seu item de dados de bit invertido correspondente dentro da memória, será evidente nesta comparação. Altemativamente, pode ser feita de novo a escrita do passo 112 para proporcionar a inversão do item de dados protegido e armazenado, para produzir os dados de teste e o passo no bloco 114 pode ser feita de novo a escrita para ΕΡ Ο 835 489/ΡΤ 14 comparar os dados de teste com o item de dados protegido e armazenado. Os resultados de quaisquer das comparações são equivalentes.
No bloco decisão 116, a CPU determina se a integridade dos dados está bem. Por outras palavras, qualquer diferença, entre os dados de teste e o valor com o qual é comparada, indicará que ocorreu um erro num dos dois valores dos dados, o que leva a um resultado negativo do bloco decisão 116. Em muitos casos, no entanto, os dois valores comparados serão iguais, o que leva ao bloco 118, que proporciona a conversão do item de dados protegido no tipo de dados padrão apropriados para utilização no programa. Subsequentemente, o bloco 120 indica que o item de dados convertidos é utilizado no programa. A lógica prossegue em seguida para o bloco 124, o qual indica que continuam os passos mostrados na FIG. 4. Uma resposta negativa ao bloco decisão 116, que indica que foi detectado um erro nos dados, que foram armazenados na memória, origina que a lógica procede para o bloco 122. No bloco 122 são implementadas a(s) função(ões) de acção predefinida(s), criadas anteriormente para responder aos dados corrompidos. Estas funções possivelmente alertarão o operador e/ou darão qualquer outra resposta apropriada, dependendo do programa de aplicação particular envolvido. Depois disso, a lógica deve prosseguir para o bloco 124. Referindo de novo a FIG. 4, o bloco 62 indica que o programa, o qual inclui o presente invento, é feito correr ou então terminado, concluindo o fluxo da lógica.
Embora o presente invento tenha sido descrito em ligação com a forma preferida de o pôr em prática, os técnicos normais na técnica compreenderão que podem ser feitas muitas modificações no mesmo dentro do âmbito das reivindicações que se seguem. Por conseguinte, não se pretende que o âmbito do invento seja, de qualquer maneira, limitado pela descrição acima, mas pelo contrário seja inteiramente determinado pela referência às reivindicações que se seguem. 2QQ1
Lisboa,
Por ABBOTT LABORATORIES - O AGENTE OF
IOàOi ruwHà tmmk\

Claims (13)

  1. 85 379 ΕΡ Ο 835 489/ΡΤ REIVINDICAÇÕES 1 - Método para detectar um erro num item de dados, compreendendo os passos de: (a) seleccionar o item de dados de uma pluralidade de itens de dados; (b) proporcionar uma pluralidade de funções, que incluem uma função construtora, uma função de conversão e uma função de tratamento de erros; (c) empregar a função construtora para associar um tipo de dados protegidos com o item de dados, determinar um item de dados invertido, correspondente a um item de dados, quando o item de dados é primeiro armazenado na memória, sendo o item de dados invertido também armazenado na memória em associação com o item de dados ao qual o mesmo corresponde; (d) chamar o item de dados e o item de dados invertido da memória, quando o item de dados é requerido num programa; (e) determinar se o item de dados e o item de dados invertido ainda correspondem um ao outro antes de um dos mesmos ser utilizado pelo programa; e (f) indicar que ocorreu um erro num dos itens de dados e de dados invertidos com a função de tratamento de erros, se o item de dados já não corresponde ao item de dados invertido e ainda se o item de dados corresponde ao item de dados invertido, empregando a função de conversão, para converter o tipo de dados protegidos num tipo de dados padrão, que será utilizado no programa.
  2. 2 - Método de acordo com a reivindicação 1, em que o passo de empregar uma função construtora compreende, além disso, o passo de identificar o item de dados como um item de dados protegido, que será verificado em relação a erros, de entre uma pluralidade de itens de dados possíveis utilizados pelo programa.
  3. 3 - Método de acordo com as reivindicações 1 ou 2, em que o passo de empregar a função construtora compreende, além disso, o passo de inverter o item de dados, para produzir um item de dados invertido de teste para comparação com o item de dados invertido. ΕΡ Ο 835 489/ΡΤ 2/4
  4. 4 - Método de acordo com as reivindicações 1 ou 2, em que o passo de empregar a função construtora compreende, além disso, o passo de inverter o item de dados invertido, para produzir um item de dados de teste para comparação com o item de dados.
  5. 5 - Método de acordo com a reivindicação 4, em que o passo de inverter o item de dados invertido compreende o passo de utilizar a função de conversão para implementar a inversão.
  6. 6 - Método de acordo com a reivindicação 5, em que a função de conversão inclui um operador, sendo o operador introduzido de novo para permitir partilhar o operador entre uma pluralidade de tarefas, nas quais é utilizada uma pluralidade de outros itens de dados invertidos.
  7. 7 - Método de acordo com a reivindicação 1, que compreende, além disso, o passo de indicar um tipo de dados protegidos para o item de dados que indica que o item de dados tem um item de dados invertido associado ao mesmo.
  8. 8 - Método de acordo com a reivindicação 7, em que os passos (a) e (d) são implementados automaticamente para cada item de dados seleccionado que é indicado para ser do tipo que tem o item de dados invertido associado com o mesmo.
  9. 9 - Sistema para detectar um erro num item de dados antes do item de dados ser empregue num cálculo, que compreende: (a) um computador (10) para implementar o cálculo que emprega o item de dados, incluindo o computador (10): (i) uma unidade de processamento central (24), que executa os passos de programa para detectar um erro no item de dados; (ii) uma memória (28), que contém o item de dados, uma pluralidade de funções, que inclui uma função construtora, uma função de conversão e uma função de tratamento de erros, e instruções máquina que controlam a unidade de processamento central (24) e determinam os passos de programa implementados pela unidade de processamento central (24); e ΕΡ Ο 835 489/ΡΤ 3/4 (iii) um bus de dados (26), que faz o acoplamento da memória (28) à unidade de processamento central (24); e (b) as instruções máquina, que fazem com que a unidade de processamento central (24): (i) seleccione o item de dados de uma pluralidade de itens de dados; (ii) aceda à pluralidade das funções; (iii) associar, pelo emprego da função construtora, um tipo de dados protegido com o item de dados e determinar um item de dados invertido, que corresponde ao item de dados, quando o item de dados é armazenado na memória (28), sendo também o item de dados invertido armazenado na memória (28) em associação com o item de dados; (iv) chamar o item de dados e o item de dados invertido da memória (28) quando o item de dados é requerido a seguir pela unidade de processamento central (24); (v) determinar se o item de dados e o item de dados invertido ainda correspondem um ao outro antes de um dos mesmos ser utilizado pela unidade de processamento central (24); e (vi) indicar, pela função de tratamento de erros, que ocorreu um erro, num dos item de dados e item de dados invertidos, se o item de dados que é comparado ao item de dados invertido já não corresponde ao item de dados invertido e, ainda, se o item de dados corresponde ao item de dados invertido, convertendo o tipo de dados protegidos num tipo de dados padrão, empregando a função de conversão e permitindo que a unidade de processamento central (24) utilize o item de dados.
  10. 10 - Sistema de acordo com a reivindicação 9, em que os passos de programa, implementados pela unidade de processamento central (24), invertem o item de dados invertido para produzir um item de dados de teste para comparação com o item de dados.
  11. 11 - Sistema de acordo com a reivindicação 10, em que os passos de programa, implementados pela unidade de processamento central (24) para 85 37Θ ΕΡ Ο 835 489/ΡΤ 4/4 inverter ο item de dados invertido, utilizam uma função de conversão de uma pluralidade de funções.
  12. 12 - Sistema de acordo com a reivindicação 11, em que a função de conversão é introduzida de novo para permitir partilhar a função de conversão entre uma pluralidade de tarefas implementadas pela unidade de processamento central (24), incluindo a pluralidade de tarefas uma pluralidade de outros itens de dados invertidos.
  13. 13 - Sistema de acordo com e uma ou mais das reivindicações 9 a 12, em que o tipo de dados protegido, indicado para o item de dados na definição dos passos de programa, indica que o item de dados tem um item de dados invertido associado ao mesmo. Lisboa, .cííJí Por ABBOTT LABORATORIES - O AGENTE OFICIAL - O ADJUNTO
    ANTÓNIO JOÀO BA CUNHA FERREIRA Ag. Of. Pr. Ind. Kue das Flores, 74 - 4.” ie@Q LISBOA
PT96919156T 1995-06-07 1996-06-05 Metodo e sistema para utilizar dados invertidos para detectar dados corrompidos PT835489E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/484,704 US5699509A (en) 1995-06-07 1995-06-07 Method and system for using inverted data to detect corrupt data

Publications (1)

Publication Number Publication Date
PT835489E true PT835489E (pt) 2001-04-30

Family

ID=23925246

Family Applications (1)

Application Number Title Priority Date Filing Date
PT96919156T PT835489E (pt) 1995-06-07 1996-06-05 Metodo e sistema para utilizar dados invertidos para detectar dados corrompidos

Country Status (12)

Country Link
US (1) US5699509A (pt)
EP (1) EP0835489B1 (pt)
JP (1) JPH11507450A (pt)
AT (1) ATE197510T1 (pt)
AU (1) AU707825B2 (pt)
CA (1) CA2216636A1 (pt)
DE (1) DE69610920T2 (pt)
DK (1) DK0835489T3 (pt)
ES (1) ES2153583T3 (pt)
GR (1) GR3035256T3 (pt)
PT (1) PT835489E (pt)
WO (1) WO1996041261A1 (pt)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5813002A (en) * 1996-07-31 1998-09-22 International Business Machines Corporation Method and system for linearly detecting data deviations in a large database
US6947903B1 (en) * 1999-08-06 2005-09-20 Elcommerce.Com.Inc. Method and system for monitoring a supply-chain
JP2001338497A (ja) * 2000-05-24 2001-12-07 Fujitsu Ltd メモリ試験方法
US6751757B2 (en) * 2000-12-07 2004-06-15 3Ware Disk drive data protection using clusters containing error detection sectors
DE10113319A1 (de) * 2001-03-20 2002-09-26 Conti Temic Microelectronic Verfahren zum Betrieb eines von einem Prozessor gesteuerten Systems
US7130229B2 (en) * 2002-11-08 2006-10-31 Intel Corporation Interleaved mirrored memory systems
US7028156B1 (en) 2003-07-01 2006-04-11 Veritas Operating Corporation Use of read data tracking and caching to recover from data corruption
US7028139B1 (en) 2003-07-03 2006-04-11 Veritas Operating Corporation Application-assisted recovery from data corruption in parity RAID storage using successive re-reads
US8065161B2 (en) 2003-11-13 2011-11-22 Hospira, Inc. System for maintaining drug information and communicating with medication delivery devices
US9123077B2 (en) 2003-10-07 2015-09-01 Hospira, Inc. Medication management system
EP1533695B1 (en) * 2003-11-19 2013-08-07 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating data in a mobile terminal
DE102004021088A1 (de) * 2004-04-29 2005-11-17 Giesecke & Devrient Gmbh Verfahren zum Schützen von Daten eines Datenträgers gegen DFA-Angriffe
EP1712996A1 (en) * 2005-04-15 2006-10-18 STMicroelectronics S.r.l. Method and system for configuring registers in microcontrollers, related microcontroller and computer program product
US7404057B2 (en) * 2005-06-24 2008-07-22 Dell Products L.P. System and method for enhancing read performance of a memory storage system including fully buffered dual in-line memory modules
EP2092470A2 (en) 2006-10-16 2009-08-26 Hospira, Inc. System and method for comparing and utilizing activity information and configuration information from mulitple device management systems
WO2008059480A1 (en) * 2006-11-16 2008-05-22 Sandisk Il Ltd. Systems and methiods for protection of data integrity of updatable data against unauthorized modification
US20080120481A1 (en) * 2006-11-16 2008-05-22 Sandisk Il Ltd. Methods For Protection Of Data Integrity Of Updatable Data Against Unauthorized Modification
JP2009294869A (ja) * 2008-06-04 2009-12-17 Toshiba Corp メモリシステム
DE102008035095A1 (de) * 2008-07-28 2010-02-11 Vincotech (Germany) Gmbh Verfahren und Vorrichtung um Änderungen an Daten zu erkennen
US8271106B2 (en) 2009-04-17 2012-09-18 Hospira, Inc. System and method for configuring a rule set for medical event management and responses
JP5680920B2 (ja) * 2009-09-24 2015-03-04 株式会社テララコード研究所 Rfidタグ、及びデータ管理システム
ES2959510T3 (es) 2011-10-21 2024-02-26 Icu Medical Inc Sistema de actualización de dispositivos médicos
WO2014138446A1 (en) 2013-03-06 2014-09-12 Hospira,Inc. Medical device communication method
EP3039596A4 (en) 2013-08-30 2017-04-12 Hospira, Inc. System and method of monitoring and managing a remote infusion regimen
US9662436B2 (en) 2013-09-20 2017-05-30 Icu Medical, Inc. Fail-safe drug infusion therapy system
US10311972B2 (en) 2013-11-11 2019-06-04 Icu Medical, Inc. Medical device system performance index
TR201908852T4 (tr) 2013-11-19 2019-07-22 Icu Medical Inc İnfüzyon pompası otomasyon sistemi ve yöntemi.
WO2015168427A1 (en) 2014-04-30 2015-11-05 Hospira, Inc. Patient care system with conditional alarm forwarding
US9724470B2 (en) 2014-06-16 2017-08-08 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US9539383B2 (en) 2014-09-15 2017-01-10 Hospira, Inc. System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein
CA2988094A1 (en) 2015-05-26 2016-12-01 Icu Medical, Inc. Infusion pump system and method with multiple drug library editor source capability
US9866574B1 (en) * 2015-06-01 2018-01-09 Amazon Technologies, Inc. Protected data type handling awareness
CA3030786A1 (en) 2016-07-14 2018-01-18 Icu Medical, Inc. Multi-communication path selection and security system for a medical device
US11152109B2 (en) 2018-07-17 2021-10-19 Icu Medical, Inc. Detecting missing messages from clinical environment
AU2019306492A1 (en) 2018-07-17 2021-02-11 Icu Medical, Inc. Systems and methods for facilitating clinical messaging in a network environment
NZ771914A (en) 2018-07-17 2023-04-28 Icu Medical Inc Updating infusion pump drug libraries and operational software in a networked environment
US10861592B2 (en) 2018-07-17 2020-12-08 Icu Medical, Inc. Reducing infusion pump network congestion by staggering updates
US10692595B2 (en) 2018-07-26 2020-06-23 Icu Medical, Inc. Drug library dynamic version management
AU2019309766B2 (en) 2018-07-26 2024-06-13 Icu Medical, Inc. Drug library management system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3312873A1 (de) * 1983-04-11 1984-10-25 Deutsche Fernsprecher Gesellschaft Mbh Marburg, 3550 Marburg Verfahren zur datensicherung in speichern
GB2158622A (en) * 1983-12-21 1985-11-13 Goran Anders Henrik Hemdal Computer controlled systems
DE3404782A1 (de) * 1984-02-10 1985-08-14 Nixdorf Computer Ag, 4790 Paderborn Verfahren und schaltungsanordnung zum pruefen eines programms in datenverarbeitungsanlagen
JPS6152758A (ja) * 1984-08-22 1986-03-15 Hioki Denki Kk メモリのエラ−検出装置
US4782487A (en) * 1987-05-15 1988-11-01 Digital Equipment Corporation Memory test method and apparatus
JP3066753B2 (ja) * 1987-12-24 2000-07-17 富士通株式会社 記憶制御装置
US5361351A (en) * 1990-09-21 1994-11-01 Hewlett-Packard Company System and method for supporting run-time data type identification of objects within a computer program
US5488727A (en) * 1991-09-30 1996-01-30 International Business Machines Corporation Methods to support multimethod function overloading with compile-time type checking
US5513315A (en) * 1992-12-22 1996-04-30 Microsoft Corporation System and method for automatic testing of computer software
US5390325A (en) * 1992-12-23 1995-02-14 Taligent, Inc. Automated testing system
DE59308113D1 (de) * 1993-03-11 1998-03-12 Francotyp Postalia Gmbh Verfahren zum Speichern sicherheitsrelevanter Daten

Also Published As

Publication number Publication date
ATE197510T1 (de) 2000-11-11
DE69610920T2 (de) 2001-03-15
WO1996041261A1 (en) 1996-12-19
GR3035256T3 (en) 2001-04-30
EP0835489B1 (en) 2000-11-08
ES2153583T3 (es) 2001-03-01
AU6156696A (en) 1996-12-30
CA2216636A1 (en) 1996-12-19
AU707825B2 (en) 1999-07-22
EP0835489A1 (en) 1998-04-15
DE69610920D1 (de) 2000-12-14
DK0835489T3 (da) 2001-02-05
JPH11507450A (ja) 1999-06-29
US5699509A (en) 1997-12-16

Similar Documents

Publication Publication Date Title
PT835489E (pt) Metodo e sistema para utilizar dados invertidos para detectar dados corrompidos
US10310926B2 (en) Data error detection in computing systems
JP5512892B2 (ja) メモリのセグメントをプロテクトするための方法及び装置
US6035426A (en) System for memory error checking in an executable
US8261130B2 (en) Program code trace signature
Borchert et al. Generative software-based memory error detection and correction for operating system data structures
US8341491B2 (en) System and method for providing data integrity in a non-volatile memory system
US10218387B2 (en) ECC memory controller supporting secure and non-secure regions
US7831858B2 (en) Extended fault resilience for a platform
Gorjiara et al. Yashme: detecting persistency races
KR20230161517A (ko) 오프로드된 동작에 사용된 데이터 오류 검사
Liu et al. Flexible and efficient memory object metadata
US10360104B2 (en) ECC memory controller to detect dangling pointers
US6453427B2 (en) Method and apparatus for handling data errors in a computer system
KR20220095986A (ko) 임베디드 프로세서의 소스 코드의 컴파일링 방법 및 컴파일러
CN111061591A (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
Nezu et al. Supports for Testing Memory Error Handling Code of In-memory Key Value Stores
BR112016025201B1 (pt) Método para realizar cálculos à prova de falhas, dispositivo para realizar cálculos à prova de falhas para operar um hardware, e, método para compilar um código para operar um hardware em um modo à prova de falhas
TWI685787B (zh) 電腦主機裝置及其自動選擇客製化程式的方法
NEZU et al. Runtime Tests for Memory Error Handlers of In-memory Key Value Stores using MemFI
Zhang Building Reliable Software for Persistent Memory
JP2023059860A (ja) 完全性検査を伴うインプレースアーキテクチャの実行
TW202234230A (zh) 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統
JPS6031650A (ja) 計算機
SE1300783A1 (sv) Hantering av mjuka fel i samband med datalagring