Schemi di codifica

Viaggio alla scoperta della storia dei computer. Questa volta ci soffermiamo sugli hard disk, a partire dalle prime unità a nastro di IBM fino ad arrivare alle tecnologie più moderne.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Schemi di codifica

L'archiviazione magnetica è essenzialmente un metodo analogico. Il dato che un PC vi immagazzina sopra, tuttavia, è un'informazione digitale fatta di 1 e 0. Quando il drive invia un'informazione digitale a una testina di registrazione magnetica, questa crea domini magnetici sul supporto con polarità specifiche che corrispondono alle tensioni positive e negative applicate dal disco alla testina. Vale a dire un segnale analogico.

Le inversioni di flusso formano legami tra aree con polarità positiva e negativa che il controller del disco usa per codificare i dati digitali su un supporto analogico. Durante un'operazione di lettura, ogni inversione di flusso rilevata dal disco genera un impulso negativo o positivo che il dispositivo usa per ricostruire il dato binario originale.

Per ottimizzare la collocazione delle transizioni di flusso durante l'archiviazione magnetica il disco passa il dato digitale grezzo (input) attraverso un dispositivo chiamato codificatore/decodificatore (endec) che converte l'informazione binaria in una forma d'onda progettata per inserire in modo ottimale le transizioni di flusso (impulsi) sul supporto. Durante la lettura l'endec inverte il processo e decodifica l'impulso per tornare al dato binario originario. Negli anni sono stati sviluppati in questo modo diversi schemi per la codifica dei dati.

Si potrebbe descrivere il processo in modo più semplice, ma bisognerebbe omettere elementi importanti come i timing. Gli ingegneri e i progettisti cercano costantemente di spingere sempre più bit d'informazione in una quantità limitata d'inversione di flusso magnetico per pollice. Ciò che hanno ottenuto, essenzialmente, è un design nel quale i bit sono codificati non solo dalla presenza o assenza di un'inversione di flusso, ma anche dal tempo che li separa. Più accurati sono i tempi dell'inversione, maggiore è l'informazione che si può codificare (e susseguentemente decodificare) da quell'informazione sul timing.

In qualsiasi forma di signaling binario, l'uso del timing è rilevante. Quando s'interpreta una forma d'onda in lettura o scrittura, il timing di ogni transizione di tensione è critico. Il timing è ciò che definisce un particolare bit o cella di transizione – che è la finestra temporale all'interno della quale un disco scrive e legge una transizione.

Se il timing è off una certa tensione di transizione potrebbe essere riconosciuta nel momento sbagliato, come appartenente a una cella diversa, e questo a sua volta porterebbe a un errore nella conversione o nella codifica, e così avremmo dei bit persi, aggiunti o interpretati male. Per assicurare che il timing sia preciso, i dispositivi di trasmissione e ricezione devono essere sincronizzati alla perfezione. Per esempio se la registrazione di uno 0 è fatta senza collocare transizioni sul disco per un dato periodo di tempo o cella, immaginate di registrare dieci bit "0" in una fila – avreste un lungo periodo di tempo (10 celle) senza attività, né transizioni.

Immaginate ora che la frequenza del codificatore sia leggermente fuori tempo durante la lettura del dato, rispetto a quando è stato scritto in origine. Se fosse troppo veloce potrebbe leggere solo nove "0" invece di dieci, e se fosse troppo lento potrebbe rilevarne undici. In entrambi i casi questo si tradurrebbe in un errore di lettura.

Per impedire errori di timing è necessaria una perfetta sincronizzazione di codifica/decodifica tra i processi di lettura e scrittura. Questa sincronizzazione spesso si ottiene aggiungendo un segnale separato per il timing alla trasmissione tra due dispositivi, chiamato segnale di clock. Questo segnale speciale in ogni caso si può combinare con quello che trasporta i dati in un unico segnale, e questa in effetti è la soluzione più comune.

Aggiungere un segnale di clock ai dati assicura che i dispositivi possano accuratamente interpretare le singole celle di bit, ognuna delle quali è deliminata da altre due contenenti le transizioni di clock. Poiché l'informazione di frequenza è inviata insieme al dato, le frequenze rimangono sincronizzate, anche se il supporto contiene una lunga stringa di 0 bit identici. Sfortunatamente le celle di transizione usate solamente per i timing prendono spazio sul piatto, riducendo la quantità di dati memorizzabile.

Poiché il numero di transizioni di flusso che un disco può registrare in un dato spazio su un particolare supporto è limitato dalla natura fisica o dalla densità del supporto e della tecnologia della testina, gli ingegneri hanno sviluppato diversi modi per codificare il dato usando un numero minimo d'inversioni di flusso (prendendo in considerazione il fatto che sono richieste solamente alcune inversioni di flusso per la frequenza). La codifica del segnale permette al sistema di fare l'uso massimo di una determinata tecnologia hardware del disco.

Finora sono stati provati diversi schermi per la codifica dei dati, ma solo alcuni sono diventati popolari nel corso degli anni

  • Modulazione di frequenza (Frequency Modulation)
  • Modulazione di frequenza modificata (Modified Frequency Modulation)
  • Corsa limitata (Run Length Limited)