Calculadora de bits ECC do código de Hamming
Entradas
| Bits de dados | 8 |
|---|
Calculadora de bits ECC do código de Hamming
Encontra o número mínimo de bits de paridade que um código de Hamming corretor de um erro precisa para proteger uma dada quantidade de bits de dados, além do comprimento total da palavra de código e da sobrecarga de paridade.
Entradas
Bits de dados
Resultados
Insira um valor para ver os resultados.
Resultados
Bits ECC do código de Hamming
Um código de Hamming protege um bloco de dados adicionando alguns bits de paridade. Quando mais tarde um bit é invertido, o padrão das verificações de paridade que falham nomeia a posição exata que mudou, de modo que um decodificador pode revertê-la. A única questão de projeto é quantos bits de paridade um bloco de um dado tamanho precisa.
A condição de bits mínimos
Seja o número de bits de dados e o número de bits de paridade. Os bits de paridade formam juntos uma síndrome de bits, que pode assumir valores distintos. Cada uma das posições da palavra de código precisa da própria síndrome diferente de zero para que o decodificador possa apontar o bit invertido, e um valor é reservado para «sem erro». Isso dá a condição de correção de um erro (SEC):
2r≥m+r+1Como aparece nos dois lados, não há solução fechada. O número de paridade necessário é simplesmente o menor que satisfaz a desigualdade, encontrado testando um a um.
Exemplo resolvido: 8 bits de dados
Tomamos e testamos cada candidato:
| 2 | 4 | 11 | não |
| 3 | 8 | 12 | não |
| 4 | 16 | 13 | sim |
A primeira linha que vale é , então 8 bits de dados precisam de 4 bits de paridade:
24=16≥8+4+1=13A palavra de código completa é
n=m+r=8+4=12 bitse a sobrecarga de paridade é
O=nr=124≈33,3%A sobrecarga diminui à medida que os blocos crescem
O número de paridade cresce aproximadamente como , de modo que blocos maiores distribuem os bits de verificação por muito mais dados. A tabela lista tamanhos de bloco comuns.
| Bits de dados | Bits de paridade | Palavra | Sobrecarga |
|---|---|---|---|
| 1 | 2 | 3 | 66,7% |
| 4 | 3 | 7 | 42,9% |
| 8 | 4 | 12 | 33,3% |
| 11 | 4 | 15 | 26,7% |
| 16 | 5 | 21 | 23,8% |
| 26 | 5 | 31 | 16,1% |
| 32 | 6 | 38 | 15,8% |
| 57 | 6 | 63 | 9,5% |
| 64 | 7 | 71 | 9,9% |
| 247 | 8 | 255 | 3,1% |
O clássico código de Hamming (7, 4) — 4 bits de dados em uma palavra de 7 bits — fica na terceira linha de cima para baixo, e o código (15, 11) na quarta.
Posicionamento dos bits de paridade
No arranjo padrão, os bits de paridade ocupam as posições potência de dois 1, 2, 4, 8, 16, … e os bits de dados preenchem o restante. Um bit de paridade na posição é responsável exatamente pelas posições cujo índice tem o bit ativado, de modo que o conjunto de verificações que falham se lê diretamente como o endereço binário do bit invertido. A contagem de posições potência de dois até coincide com o mesmo que esta página calcula, razão pela qual o arranjo e a condição de bits mínimos sempre concordam.
SEC versus SECDED
A condição acima é para um código de correção de um erro, que corrige qualquer erro de um bit mas não consegue distinguir um verdadeiro erro de dois bits de um de um único bit. Adicionar um único bit de paridade global sobre toda a palavra de código produz um código de correção de um erro com detecção de dois erros (SECDED): ele ainda corrige qualquer erro de um bit e detecta, adicionalmente — sem corrigir — qualquer erro de dois bits. Para SECDED, some um bit tanto à contagem de paridade quanto ao comprimento total. A memória vendida como «ECC» costuma usar SECDED, por exemplo 64 bits de dados protegidos por 8 bits de verificação.
Estimativas relacionadas
Para comparar duas cadeias de bits de igual comprimento e contar em quantas posições elas diferem — a grandeza que define quantos erros um código consegue capturar —, veja a Calculadora de Distância de Hamming. Para um esquema diferente de detecção de erros que anexa uma soma de verificação em vez de paridade que endereça posições, a Calculadora de Checksum CRC calcula verificações de redundância cíclica.
Perguntas frequentes (FAQ)
O que são bits de paridade em um código de Hamming?
Bits de paridade, também chamados de bits de verificação, são bits extras adicionados a um bloco de dados para que um decodificador possa detectar e corrigir erros. Em um código de Hamming corretor de um erro (SEC), cada bit de paridade cobre um subconjunto específico e sobreposto das posições de dados. Quando um bit é invertido, o padrão das verificações de paridade que falham — a síndrome — soletra em binário a posição exata do bit invertido, de modo que o decodificador pode revertê-lo.
O número de bits de paridade r para m bits de dados é o menor r que satisfaz 2^r ≥ m + r + 1. Para 8 bits de dados, isso dá r = 4, produzindo uma palavra de código de 12 bits.
Qual é a diferença entre SEC e SECDED?
Um código de Hamming corretor de um erro (SEC) corrige qualquer erro de um bit em uma palavra de código, mas não consegue distinguir de forma confiável um erro de dois bits de um de um único bit. A correção de um erro com detecção de dois erros (SECDED) adiciona mais um bit de paridade global ao código SEC. Esse bit extra permite ao decodificador corrigir qualquer erro de um bit e ainda detectar (embora não corrigir) qualquer erro de dois bits.
Esta calculadora informa os bits de paridade para a forma SEC. Para SECDED, some um bit à contagem de paridade e ao comprimento total da palavra de código. A memória de servidor vendida como «ECC» costuma usar um código SECDED — por exemplo, 64 bits de dados protegidos por 8 bits de verificação.
Por que a desigualdade é 2^r ≥ m + r + 1 e não 2^r ≥ m + r?
Os r bits de paridade produzem em conjunto uma síndrome de r bits, que pode assumir 2^r valores distintos. Cada uma das n = m + r posições da palavra de código precisa da própria síndrome diferente de zero para que o decodificador possa nomear a posição invertida. Mais um valor — a síndrome toda zero — é reservado para significar «nenhum erro detectado».
Esse valor reservado é a origem do + 1, então a síndrome deve cobrir m + r posições mais o caso sem erro: 2^r ≥ (m + r) + 1.
Onde ficam os bits de paridade na palavra de código?
No arranjo clássico de Hamming, os bits de paridade ocupam as posições potência de dois — 1, 2, 4, 8, 16 e assim por diante —, enquanto os bits de dados preenchem as demais posições. Colocar cada bit de paridade na posição 2^k o torna responsável exatamente pelas posições cujo índice tem o bit k ativado, o que permite ler as verificações que falharam como o endereço binário do bit com erro.
A contagem de posições potência de dois até n é o mesmo r que esta calculadora retorna, razão pela qual o arranjo e a fórmula do número mínimo de bits sempre concordam.