Os bits e os Campos Magnéticos

Como se registam os dados

Com os conhecimentos já adquiridos sobre a composição de um Disco Rígido (HDD), chegou a ocasião de percebermos como é registada a informação. A informação que chega ao HDD para ser guardada é composta por bits portadores dos estados lógicos 1 ou 0, que correspondem aos estados físicos de com ou sem tensão. O HDD para guardar esses  estados físicos de tensão, tem que os traduzir em campos magnéticos.

Há uma tendência generalizada para considerar que ao estado lógico 0 corresponde uma determinada orientação magnética e ao estado lógico 1 corresponderá a oposta. E até seria lógico.

Mas não pode ser assim. O HD não é regido por nenhum clock, simplesmente pela velocidade dos pratos, que pode ter ligeiras variações, variando também a densidade ao longo do prato. Era assim muito difícil dizer após uma longa sequência de 0  ou 1, qual a sua quantidade ou em que posição se encontrava o bit x. Seria como estar no meio de um deserto, sem qualquer instrumento de medição, e termos de saber onde estamos.

Era necessário introduzir inversões de fluxo algures no meio de qualquer cadeia de bits iguais. Por essa razão foi decidido que a informação seria guardada sob a forma de inversões de fluxo magnético. O valor lógico 1 seria representado por uma inversão de fluxo magnético (N→S para S→N e vice-versa) e o valor lógico 0 corresponderia à manutenção do fluxo magnético.

Mas, mantinha-se o problema. Só que agora se limitava aos zeros. Como seria possível definir a quantidade e posição de bits durante e após uma longa cadeia de 0. Surgem então os métodos de codificação de bits, dos quais vamos descrever os mais expressivos, começando sempre pelos mais simples e evoluindo para os mais complexos.

FM (Frequency Modulation)

Em português Modulação de Frequência. Consistia este método na introdução de uma inversão de fluxo entre cada bit, como orientador do sinal de clock, após a qual viria ou não outra inversão para 1 ou 0 respetivamente.

Na figura 1 em cima está a representação gráfica de FM e a tabela de relação entre o valor do bit e o comportamento do fluxo. I representa a existência de Inversão de fluxo e N a Não inversão de fluxo.

Este método gastava metade da capacidade do disco em inversões para clock. Como se pode ver no gráfico, cada bit é representado por dois campos magnéticos:

  • um para a inversão correspondente ao clock.
  • outro que nos informa se estamos perante um 1, com uma nova inversão, ou um 0, mantendo o sentido do campo magnético.

No caso do nosso conjunto de bits – 1 0 0 1 0 0 0 0 1 1 1 1 – deveremos representá-lo como –  IIININIIININININIIIIIIII – de que resultam 18 Inversões de fluxo.

O método de codificação  FM, foi usado essencialmente em disquetes de densidade simples.

A representação gráfica da figura 1 em cima apresenta um exemplo de FM com gravação perpendicular. Na sua época ainda tal tecnologia não existia, mas optámos por utilizar esse tipo de representação gráfica por assim ser possível fazê-lo no espaço disponível. A mesma  razão nos leva a continuar a utilizar esta forma de representação.

MFM (Modified Frequency Modulation)

Figura-11-7-e-8
Figura 1

 Em português Modulação de Frequência Modificada. Este método veio aprimorar o anterior método FM.

Atendendo a que a densidade dos pratos se define pela densidade de inversões de fluxo que suporta, o objetivo é reduzir o número de inversões de fluxo necessárias para representar o mesmo conjunto de bits, mantendo no entanto o distanciamento entre inversões de fluxo dentro do valor mínimo que considerámos atrás para o método FM, isto é, mantendo a dimensão do campo magnético.

Assim, em lugar de intercalar uma inversão de fluxo entre quaisquer dois bits, este método passa pela integração de uma inversão de fluxo entre dois 0 consecutivos. Vamos então fazer a sua representação gráfica na figura 1 em baixo.

Vamos preocupar-nos só com as inversões de fluxo, pois são essas que nos interessam. Reparem que a distância entre inversões de fluxo neste gráfico, passou a ser, no mínimo, o dobro da considerada no gráfico anterior.

O sinal de clock continua a ser feito a meio de cada pequeno campo, embora agora só seja representado por uma inversão entre dois zeros. Como campos de igual orientação têm propriedades aditivas, resulta a 2ª linha da figura 1 (em baixo).

Podemos então reduzir o valor do clock para metade, reduzindo assim a dimensão dos campos mais pequenos para um valor nunca inferior à mínima entre inversões de fluxo, definida no primeiro gráfico para FM. Resulta então a 3ª linha da figura 1 (em baixo).

A codificação de cada bit é a que está descrita na tabela junto na Figura 1 (em baixo). Conseguimos assim representar em registo magnético, o mesmo conjunto de bits em metade do espaço,relativamente ao método FM.

No caso do nosso conjunto de bits – 1 0 0 1 0 0 0 0 1 1 1 1 – deveremos representá-lo como – NINNINNINNINININNINININI – de que resultam 10 Inversões de fluxo.

Neste caso, a determinação do sinal de clock, já não é tão evidente como no caso do FM.

Compete à Placa Controladora do HDD a função de codificação/descodificação dos sinais digitais em analógicos (magnéticos) e vice-versa. A sua determinação já tem que ser feita tendo em conta os bits antes e depois do lido, ou antes, o comportamento dos conjuntos de campos magnéticos antes e depois do lido ou a escrever.

Foi o método MFM, que deu origem às disquetes de dupla densidade. Nos HDD foi rapidamente substituído.

RLL (Run Length Limited).

Run, designa o conjunto de zeros magnéticos , isto é, de não inversões de fluxo, seguidas.

Length, designa o número mínimo de N (não inversões de fluxo) seguidos a utilizar.

Limited, representa o número máximo de N (não inversões de fluxo) seguidos a utilizar.

RLL tem então dois parâmetros definidores: a e b, sendo a para Length e b para Limited, apresentando-se sob a fórmula RLL(a,b).

Não devemos portanto considerá-lo como um método, mas como um conjunto de métodos que depende dos parâmetros considerados, sendo diferente de parâmetro para parâmetro. Vamos aqui analisar  os códigos RLL(1,7) e RLL(2,7)

RLL(2,7)

Este método, que significa representações com Runs com um mínimo de 2 e um máximo de 7 não inversões de fluxo (N), que está representado na figura 2 (em cima), é bastante mais elaborado que os anteriores, considerando já a codificação por conjuntos de bits em lugar de codificação de cada bit individualmente. Os conjuntos de bits e a sua representação seguem o padrão da tabela  apresentada na mesma figura, para RLL(2,7).

Esta tabela foi encontrada partindo dos seguintes princípios:

  • Cada inversão de fluxo é seguida pelo menos de 2 não inversões.
  • Cada conjunto deve ser iniciado por um número menor ou igual a 4 não inversões de fluxo.
  • Cada conjunto tem que ser finalizado sempre por um número menor ou igual a 3 não inversões de fluxo.

Este método usa blocos de 2, 3 e 4 bits, representados sempre por 4, 6 ou 8 campos magnéticos. Com os conjuntos da tabela junto consegue-se representar inequivocamente um e um só conjunto de bits, respeitando a sequência de campos magnéticos dos pressupostos anteriores e representar todas as sequências possíveis de bits.

No caso do nosso conjunto de bits – 1 0 0 1 0 0 0 0 1 1 1 1 – deveremos representá-lo pelas combinações – 1 0 – 0 1 0 – 0 0 0 – 1 1 – 1 1 – a que corresponderá – NINN – INNINN – NNNINN – INNN – INNN – ou seja – NINNINNINNNNNINNINNNINNN, de que resultam Runs mínimos de 2 e máximo de 5, para este caso, o que respeita o mínimo e o máximo definidos. Também verificamos que precisamos de 6 Inversões de fluxo.

Para o conjunto de bits que estamos a representar verificamos que, no caso do FM necessitámos de 18 Inversões de fluxo, no caso do MFM de 10 Inversões e no caso de RLL(2,7) de 6 Inversões.

Como o que nos interessa é a densidade de inversões de fluxo, verificamos pela contagem de inversões que este método tem 3 vezes menos que FM, ou seja, que para o mesmo clock  a distância entre Inversão de fluxos é tripla da inicialmente considerada e suportada pelo nosso hardware. Tal também se pode verificar pela 2ª linha da figura 2 (em cima) após aplicação da propriedade aditiva dos campos magnéticos adjacentes com a mesma orientação. Então vamos dividir o sinal de clock por 3, para passarmos a ter a distância inicialmente prevista entre inversão de fluxos, sem no entanto diminuirmos o tamanho dos campos que definem essa distância, resultando a linha 3 da figura 2 (em cima). Assim, sem que tenha havido qualquer redução da dimensão dos campos magnéticos, já conseguimos multiplicar por 3 a densidade de bits representáveis no mesmo espaço em relação ao FM.

RLL(1,7)

Figura 11-9 e 11-10 Gráfico representativo de RLL(2,7). Gráfico de RLL(1,7).
Figura 2

Este método, que significa a representação com Runs com um mínimo de 1 e um máximo de 7 não inversões de fluxo (N), ilustrado na figura 2 (em baixo), codifica conjuntos de 2 ou 4 bits em conjuntos de 3 ou 6 bits magnéticos.

Repare-se que este método representa cada 2 bits com 3 combinações de fluxo magnético, contrariamente a todos os anteriores que representavam 2 bits com 4 combinações magnéticas. Portanto vão ser necessários menos bits magnéticos para representar o mesmo número de bits lógicos.

O controlador, ao codificar um conjunto de bits, recolhe 2 e olha para os dois seguintes para verificar se se encaixam em combinações possíveis. Se sim usa a combinação de 4, se não usa a de 2. Ao descodificar faz o mesmo com conjuntos de 3 bits magnéticos.

A tabela aqui junto de agrupamento de bits e sua codificação utilizada por este RLL, foi estabelecida pelo seguinte conjunto de regras, onde se considera que a 1 corresponde uma Inversão (I) e a 0 uma Não Inversão (N):

  • (x,y) binário converte-se em (NOT x, x AND y, NOT y) em bits magnéticos.
  • (x,0,0,y) binário converte-se em (NOT x, x AND y, NOT y, 0, 0, 0) em bits magnéticos.

No caso do nosso conjunto de bits – 1 0 0 1 0 0 0 0 1 1 1 1 – deveremos representá-lo pelas combinações – 1 0 0 1 – 0 0 0 0 – 1 1 – 1 1 – a que corresponderá – NINNNN – ININNN – NIN – NIN – ou seja – NINNNNININNNNINNIN, de que resultam Runs mínimos de 1 e máximos de 4, para este caso.  Verificamos que no caso do RLL(1,7) precisamos de  5 Inversões de fluxo.

Verifica-se também que a distância entre inversões de fluxo, após aplicação da associação de campos, é o dobro daquela que temos para FM, considerada a máxima concentração suportada pelo HD, conforme 2ª linha da figura 2 (em baixo) .

Assim, podemos reduzir o valor do sinal de clock para metade, conseguindo no entanto manter a distância regular entre inversões de campos magnéticos. Resulta a 3ª linha da figura 2 (em baixo).

Vamos agora colocar em sucessão os gráficos finais dos diferentes tipos de codificação para que se possa visualizar a evolução do espaço ocupado em disco para representar o mesmo número de bits, o que se faz na figura 3.

Figura 11-11 Gráfico comparativo do espaço ocupado em disco pelos diversos métodos de codificação.
Figura 3

O aumento de densidade de bits representados magneticamente no mesmo espaço que temos estado a ver, resulta somente da aplicação de métodos de codificação.

Consegue-se portanto com software de tradução do digital em analógico (campos magnéticos) e vice-versa. E já reduzimos para cerca de 1/3 em relação ao primeiro método falado.

No caso dos RLL, a codificação por grupos de bits tornou desnecessária a introdução de bits marcadores que se vinham utilizando nos anteriores. Veio no entanto tornar mais importantes os controladores, que faziam a leitura, a interpretação e a descodificação dos sinais analógicos.

Como se pode verificar, a densidade aumenta tanto mais quanto mais se consegue reduzir o clock, o que depende do valor mínimo de zeros seguidos (RLL(2,7)) e quanto mais se conseguem aumentar as combinações, representando o maior número possível de bits com o menor número de bits magnéticos (RLL(1,7)).

O melhor de cada uma das hipóteses vê-se respetivamente no RLL(2,7) e no RLL(1,7). Verifica-se no nosso caso que a primeira triunfa. Mas, com os processos de leitura  existentes, Runs maiores que 7 não eram recomendáveis,  com o risco de as cabeças perderem o sincronismo e deixarem de saber em que bit se encontram.

A leitura era habitualmente feita por picos, isto é, as cabeças identificavam a inversão de fluxos pela leitura das zonas onde os campos atingiam os máximos. A evolução em termos de hardware, como já tivemos hipótese de abordar anteriormente, conduziu a campos magnéticos diminutos, com muito pequena intensidade e de muito difícil leitura.

Com o aumento da densidade, começou a tornar-se ineficaz o processo de leitura por picos, pois a diferença entre os diversos pontos de leitura era tão pequena e tão próxima, que as cabeças tinham dificuldade em determinar onde um acabava e o outro começava, sendo a leitura mesmo por vezes perturbada por ruído causado pela proximidade dos campos.

Surgiu então um novo método de leitura, baseado não nos picos, mas numa amostragem de vários valores feitos durante a evolução da onda e dos quais era feita uma média por semelhança.

PRML (Partial Response Maximum Likelihood)

Ou, em português, máxima semelhança entre respostas parciais, precisamente o que foi atrás descrito e que vamos tentar ilustrar graficamente na figura 3.

Figura-11-12Este método de leitura obrigou ao desenvolvimento Placas Controladoras extremamente complexas que, com uma enorme sensibilidade a qualquer variação obtém as “respostas parciais” com que fazem a determinação da variação dos fluxos, usando para o efeito algoritmos de enorme complexidade que as calculam por semelhança.

Este método foi aprimorado pelo EPRML de (Extended Partial Response Maximum Likelihood). O EPRML funciona de uma forma muito similar ao PRML, conseguindo no entanto significativos aumentos de performance graças a um ainda mais complexo processador de sinal e também a mais complexos algoritmos.

Com tal melhoria de performance na leitura e interpretação dos sinais, com as melhorias introduzidas pela gravação perpendicular na qualidade do sinal, conseguiu-se assim obter um maior rigor na determinação das leituras, pelo que se pôde estender o número máximo de zeros consecutivos sem correr o risco de que a cabeça perca o norte (por acaso até vem a calhar).

Assim sendo, com codificações RLL com parâmetros cujos máximos vão até 16 a 20 zeros consecutivos, aumentando também o mínimo de zeros consecutivos, conseguiram-se obter tabelas de representação de grupos de bits muito mais elaboradas, que permitem enormes reduções no número de bits magnéticos necessários para representar um determinado número de bits digitais. E tudo baseado na evolução das Placas Controladoras.