Fonctionnement d'un ordinateur/Les disques durs

Un livre de Wikilivres.
Aller à : navigation, rechercher
Disque dur.

Nous allons maintenant étudier la plus célèbre des mémoires de masse : le disque dur ! L'intérieur d'un disque dur contient beaucoup de composants, le premier d'entre eux étant le support de mémorisation. Il est composé de plateaux fabriqués dans une couche de matériau magnétique. Ensuite, on trouve une tête de lecture-écriture qui permet de lire ou d'écrire sur le support de mémorisation. Ensuite, on trouve le contrôleur de disque dur qui se charge de gérer le déplacement de la tête de lecture. Et enfin, on trouve un circuit qui se charge de gérer les échanges de données entre le disque dur et le bus : le contrôleur de bus.

Schéma de l'intérieur d'un disque dur.

Plateaux[modifier | modifier le wikicode]

Les plateaux sont composés d'une plaque fabriquée dans un matériau peu magnétisable, recouvert de deux couches de matériau magnétique : une couche sur chaque face. Ainsi, les deux faces d'un plateau sont utilisées pour stocker des données. Sur les anciens disques durs, chaque couche de matériau magnétique est découpée en cellules de un bit. Le stockage d'un bit se fait en aimantant la cellule dans une direction pour stocker un 1 et dans l'autre sens pour un 0. Les nouveaux disques durs utilisent deux cellules pour stocker un bit. Si ces deux cellules sont aimantées dans le même sens, c'est un zéro, et sinon, c'est un 1. Certains aimantent ces blocs à la verticale, et d'autres à l'horizontale, les disques durs récents utilisant l'aimantation verticale pour diverses raisons techniques. Les disques durs basés sur ce principe permettent de stocker plus de données à surface égale.

Perpendicular Recording Diagram

Ces plateaux entourent un axe central autour duquel les plateaux vont tourner. Plus ces plateaux tournent vite, plus le disque dur sera rapide. Les disquettes fonctionnent sur un principe semblable à celui du disque dur, à une différence près : il n'y a qu'un seul plateau.

Les bits sont regroupés sur une face de notre plateau en cercles concentriques qu'on nomme des pistes. Les pistes d'une face d'un plateau sont numérotés, mais attention : deux pistes peuvent avoir le même numéro si celles-ci sont sur des faces ou des plateaux différents. Ces pistes de même numéro sont à la verticale les unes des autres : elles forment ce qu'on appelle un cylindre.

Pistes et cylindres.

Ces pistes sont découpées en blocs de taille fixe qu'on appelle des secteurs, qui correspondent aux bytes des disques durs. Ces secteurs sont numérotés. Le début de chaque secteur est identifié par un préambule, qui permet de délimiter le secteur sur une piste, suivi des données du secteur proprement dit, puis de bits de correction d'erreur.

Secteur HDD

Sur les anciens disques durs, les secteurs de même numéro, étaient placés comme ceci.

Secteurs.

Il y avait un problème avec cette organisation : un secteur avait une taille plus grande en périphérie du disque dur qu'au centre. Pour éviter cela, les disques durs utilisent une organisation proche de celle-ci.

Organisation segmentée des pistes.

Les deux organisations précédentes avaient un problème lors de la lecture de deux pistes consécutives. Le passage d'une piste à l'autre prend toujours un peu de temps : il faut bien déplacer la tête de lecture. Or, durant ce temps, le disque dur a tourné et on doit attendre que le disque dur finisse sont tour avant de retomber sur le bon secteur. Pour résoudre ce problème, les concepteurs de disque dur décalent les secteurs de même numéro dans le sens de rotation du disque. C'est ce que l'on appelle le cylinder skewing.

Têtes de lecture-écriture[modifier | modifier le wikicode]

Un disque dur contient de petits dispositifs capables de lire ou écrire un bit sur le plateau : les têtes de lecture-écriture. Généralement, on trouve une tête de lecture sur chaque face, parfois plus (ce qui permet de lire ou d'écrire à des secteurs différents en même temps). Chaque tête de lecture-écriture est un bras mécanique dans lequel passe un fil électrique. Ce fil électrique affleure légèrement au bout du bras en formant un électroaimant qui va servir à lire ou écrire sur le plateau. Pour écrire, il suffit d'envoyer un courant électrique dans le fil de notre tête de lecture : cela créera un champ magnétique autour de l’électroaimant, qui aimantera le plateau. Pour lire, il suffira d'approcher la tête de la cellule : le champ magnétique de la cellule va créer une tension dans l'électroaimant et le fil, qu'on pourra interpréter comme un 0 ou un 1.

Ces têtes de lecture sont entrainées par un moteur qui les fait tourner au-dessus des plateaux, afin de les placer au dessus des données à lire ou écrire. À l’arrêt, les têtes de lecture sont rangées bien sagement dans un emplacement bien particulier : pas question de les arrêter sur place ! Si une tête de lecture-écriture touche la couche magnétique, la surface de contact est définitivement endommagé.

Le disque dur contient deux moteurs : un pour déplacer les têtes de lecture-écriture, et un autre pour faire tourner les plateaux. Quand les moteurs tournent, cela fait un peu de bruit, ce qui explique que votre disque dur "gratte" quand il est soumis à une forte charge de travail. Pour limiter ce bruit, certains fabricants utilisent une technologie nommée automatic acoustic management ou AAM, qui rend le déplacement des têtes de lecture plus progressif. Cela peut avoir un impact sur les performances : la tête de lecture met plus de temps à se mettre en place, augmentant le temps d'accès à un secteur. On peut configurer le lissage de l'accélération via un nombre codé sur 8 bits (seules celles comprises entre 128 et 254 sont permises). Cette valeur est stockée dans une mémoire EEPROM sur le disque dur, et est chargée à chaque démarrage du disque dur. Pour configurer cette valeur, le pilote de disque dur peut envoyer une commande au contrôleur, qui mettra à jour la valeur d'AAM.

Contrôleur de disque[modifier | modifier le wikicode]

Outre la gestion des moteurs, le contrôleur de disque dur doit aussi gérer l'adressage des secteurs. Avec l'adressage CHS, l'adresse est composée du numéro de plateau, du numéro du cylindre et le numéro du secteur. En comparaison, l'adressage LBA numérote chaque secteur sans se préoccuper de son numéro de tête, de cylindre ou de secteur.

Le contrôleur de disque est aussi relié à toute une série de capteurs, qui permettent de mesurer en temps réel ce qui se passe sur le disque dur. Tout disque dur possédant la technologie SMART peut ainsi détecter en temps réel les erreurs, qui sont alors mémorisées dans une ROM accessible par différents logiciels. Elle est utilisée pour savoir si le disque dur est pas loin de lâcher ou s'il lui reste du temps avant sa mort. Parmi ces erreurs, il arrive que certains secteurs du disque dur deviennent inutilisables, à la suite d'un défaut mécanique. Pour résoudre tout problème lié à ces secteurs, le contrôleur de disque dur mémorise la liste des secteurs défectueux dans une mémoire, généralement une EEPROM.

Cache disque[modifier | modifier le wikicode]

De nos jours, le disque dur peut accumuler des données lues ou à écrire dans une mémoire cache, placée entre les plateaux et le circuit d'interface avec l'extérieur. Ce cache peut mémoriser les données lues récemment, pour profiter de la localité temporelle, ou précharger les secteurs proches de ceux récemment accédés, pour profiter de la localité spatiale (sur certains disques durs, c'est carrément toute la piste qui est chargé lors de l'accès à un secteur). Autre utilité de ce cache : mettre en attente les écritures tant que la tête de lecture-écriture n'est pas libre. Ce cache en écriture pose un léger problème. Les données à écrire vont attendre durant un moment dedans avant que les plateaux soient libres pour démarrer l'écriture. Si jamais une coupure de courant se produit, les données présente dans la mémoire tampon, mais pas encore écrites sur le disque dur sont perdues.

Tampon de requêtes[modifier | modifier le wikicode]

Sur les disques durs anciens, on devait attendre qu'une requête soit terminée avant d'en envoyer une autre, ce qui pouvait prendre du temps. Pour limiter la casse, certains disques durs permettent d’envoyer des requêtes même si les précédentes ne sont pas terminées. Ces requêtes anticipées sont alors mises en attente dans une mémoire tampon et seront traitées quand le disque dur sera libre. Les disques durs S-ATA récents dotés de la bonne carte-mère permettent de changer l'ordre de traitement des requêtes : au lieu de faire sans cesse des allers et retours, notre disque dur peut tenter d’accéder de préférence à des données proches. Cela s'appelle du Native Command Queuing.

NCQ

Cette technique demande toutefois de remettre en ordre les données lues ou écrites. Pour cela, on utilise le cache mentionné juste avant, pour que les données quittent le disque dur dans l'ordre demandé par l'OS.

Mémoire tampon NCQ.

On pourrait croire que chercher à toujours accéder au secteur le plus proche serait une bonne idée. Mais en faisant ainsi, certaines situations peuvent poser problème. Si de nouvelles requêtes sur des secteurs proches arrivent sans cesse, le disque dur les traite systématiquement avant les anciennes. Pour éviter cela, les requêtes sont traitées dans le sens de rotation du bras de la tête de lecture. Si celle-ci se dirige vers l'extérieur du disque dur, celui-ci traite les requêtes qui lui demandent d'aller lire ou écrire les secteurs sur la même piste ou encore plus vers l'extérieur. Et réciproquement si la tête de lecture se dirige vers l'intérieur. Elle ne change de sens que quand toutes les requêtes en attente portent sur des secteurs situés plus à l'intérieur. D'autres algorithmes d’ordonnancement des requêtes d'accès disque existent, mais faire une liste serait beaucoup trop long.

Gestion de l'énergie[modifier | modifier le wikicode]

Cette file d'attente permet aussi d'implémenter des algorithmes pour mieux gérer la consommation énergétique du disque dur. Vu que la quasi-totalité de la consommation énergétique (80 %) provient de la rotation des plateaux, ces algorithmes vont ralentir ou accélérer la vitesse de rotation des plateaux suivant la charge de travail du disque dur. Si le disque dur a beaucoup de travail, la vitesse des plateaux augmentera jusqu'à une valeur maximale. Dans le cas contraire, la vitesse des plateaux diminuera jusqu’à une valeur minimale. Pour estimer la charge de travail, le disque dur se base sur le remplissage de la mémoire tampon : plus la file d'attente est remplie, plus les plateaux tourneront vite.