Fonctionnement d'un ordinateur/Les disques durs

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

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 pour lire ou écrire sur le support de mémorisation. Ensuite, on trouve le contrôleur de disque dur qui gère 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.

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.

Formatage de base d'un disque.

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.

Illustration des différents types d'aimantation.

Pistes et cylindres[modifier | modifier le wikicode]

Ces plateaux entourent un axe central autour duquel les plateaux vont tourner à une vitesse précise. Plus la vitesse de rotation des plateaux est forte, 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 d'un 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.

Secteurs[modifier | modifier le wikicode]

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

Le découpage des pistes en secteurs dépend du disque dur. Les anciens disques durs découpaient les pistes en secteurs de taille différentes, de sorte que toutes les pistes aient le même nombre de secteurs. De nos jours, on préfère utiliser des secteurs de taille fixe, quitte à ce que toutes les pistes aient un nombre de secteurs différent. Ces deux organisations ont cependant 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 son 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.

Adressage CHS.

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.

Performance des disques durs[modifier | modifier le wikicode]

Tout disque dur possède diverses caractéristiques, qui rendent celui-ci plus ou moins performant. La première d'entre elles est clairement la capacité, dont dépendent indirectement les performances. Celle-ci est un critère assez important dans le choix d'une mémoire de masse, les performances étant au second plan. Le temps d'accès et le débit mémoire sont deux caractéristiques qui influencent fortement la performance du disque dur. Enfin, il faut aussi parler de la consommation énergétique des disques durs, qui peut être relativement importante.

Capacité[modifier | modifier le wikicode]

La capacité des disques durs dépend de plusieurs paramètres : le nombre de plateaux et la capacité de chaque plateau. Ce dernier paramètre dépend du nombre de bits par centimètre carré de surface magnétique, aussi appelée densité surfacique. La capacité des plateaux a augmenté progressivement au cours du temps, à un rythme différent suivant l'époque. Avant 1988, la densité surfacique augmentait de 30% par a, ce qui doublait la capacité des HDD tous les 3 ans. Entre 1996 et 2003, la densité de surface augmentait de 60% par an, avant d'atteindre un rythme de 100% par an depuis 2003.

Évolution de la capacité des disques durs (mémoires magnétiques) dans le temps en échelle logarithmique.

Temps d'accès et débit[modifier | modifier le wikicode]

La performance des disques durs dépend de leur temps d'accès et de son débit. Le temps d'accès d'un secteur dépend de plusieurs sous-temps d'accès. Tout d'abord, il faut que la tête de lecture se déplace sur la piste adéquate : c'est le seek time. Ensuite, il faut que la tête se positionne au-dessus du secteur à lire/écrire, ce qui prend un certain temps appelé temps de balayage. Puis, la lecture/écriture du secteur prend en certain temps, appelé temps de transmission.

Illustration des trois temps de latence d'un disque dur : temps de déplacement des têtes, temps de rotation des plateaux, temps de lecture/écriture du secteur.

Le temps de balayage et le temps de transmission dépendent fortement de la vitesse de rotation du disque dur : plus le plateau tourne vite, plus vite le secteur se positionnera sous la tête de lecture et plus vite le secteur sera balayé par celle-ci. Le temps de transmission dépend aussi de la taille des secteurs : plus un secteur est grand, plus la tête devra rester longtemps sur la surface magnétique pour lire le secteur au complet. Pour le seek time, celui-ci dépend surtout du rayon du disque, lui-même proportionnel au nombre de pistes par plateau. La vitesse de rotation permet de calculer le temps que met la tête de lecture pour balayer une piste complète, aussi appelé temps de rotation. Le temps de balayage et de transmission sont bornés par ce temps de rotation. Dans le pire des cas, si le secteur est vraiment mal placé, la somme temps de balayage + temps de lecture/écriture est égale au temps de rotation. Le temps d'accès moyen est plus ou moins égal à la moitié du temps de rotation, sans optimisations particulières.

Vitesse de rotation (tours par minutes) Temps de balayage (millisecondes)
15,000 2
10,000 3
7,200 4.16
5,400 5.55
4,800 6.25

Tout HDD contient diverses optimisations pour limiter l'influence de ces temps d'accès sur la performance. Le but de ces optimisations peut être de diminuer le temps d'accès moyen, ou d'augmenter le débit. Pour rappel, le débit est le produit de la taille des secteurs par le nombre de lectures/écritures de secteurs par secondes. Augmenter le débit demanderait d'augmenter soit la taille des secteurs, soit de gérer plus de lectures/écritures. Diminuer le temps d'accès demanderait de jouer sur le mouvement des têtes de lecture ou d'éviter des accès au disque. Les optimisations suivantes servent généralement à cela.

Tampon de lecture/écriture et cache disque[modifier | modifier le wikicode]

Le disque dur est plus lent que le processeur et la RAM, les transferts entre eux étant rarement synchronisés. Il arrive souvent que, lorsqu'un disque dur a terminé de lire une donnée, le processeur ne soit pas disponible immédiatement. De même, le processeur peut déclencher une écriture alors que le disque dur n'est pas prêt (parce qu'il est en pleine lecture, par exemple). Pour faciliter cette synchronisation, les disques durs modernes incorporent des mémoires tampons pour mettre en attente les lecture ou écriture, le temps que le processeur ou le disque soient disponibles. Ces tampons sont souvent des mémoires FIFO qui accumulent les données lues, ou à écrire.

Mémoires tampons internes au disque dur.

De nos jours, le tampon de lecture/écriture est parfois remplacé par une mémoire cache. 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ésentes 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 limitait le nombre de requêtes d'entrée-sortie par seconde. Pour limiter la casse, certains disques durs reçoivent des requêtes même si les précédentes ne sont pas terminées. Ces requêtes anticipées sont mises en attente dans une mémoire tampon et sont traitées quand le disque dur est libre.

Mémoire tampon NCQ.

Avec cette optimisation, le nombre d'IOPS augmente, en même temps que le temps d'accès augmente. Le nombre d'IOPS augmente pour la simple raison que le disque dur peut en mettre en attente les opérations d'entrée-sortie en attendant leur traitement. Mais le temps d'attente dans le tampon de requêtes est techniquement compté dans le temps d'accès, en plus du temps de transmission et de rotation. Le temps d'accès total augmente donc, au prix d'un débit plus élevé. Plus la file d'attente sera longue (peut mettre en attente un grand nombre de requêtes), plus le débit sera important, de même que le temps d'accès. Il est possible de formaliser l'amélioration induite par ce tampon de requêtes sur le débit et le temps d'accès avec quelques principes mathématiques relativement simples.

Native Command and Queing[modifier | modifier le wikicode]

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. Cette technique permet de diminuer le temps d'accès moyen, en économisant sur le temps de recherche et de balayage. Cette technique demande toutefois de remettre en ordre les données lues ou écrites. Pour cela, on utilise les mémoires tampons vues précédemment, pour que les données quittent le disque dur dans l'ordre demandé par l'OS.

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.

Consommation énergétique des disques durs[modifier | modifier le wikicode]

La majorité de la consommation électrique des disques durs est utilisée pour faire tourner les plateaux, le reste étant négligeable. Rien d'étonnant à cela, faire tourner de lourds plateaux en métal consommant naturellement plus que l'électronique embarquée du disque. Naturellement, plus la vitesse de rotation est importante, plus la consommation l'est. Même chose pour le nombre de plateaux : faire tourner 5 plateaux demandera plus d'efforts que d'en faire tourner un seul. Et enfin, plus les plateaux sont massifs, plus il faudra consommer d'énergie pour les faire tourner à une vitesse déterminée. L'épaisseur des plateaux étant plus ou moins la même sur tous les disques durs, ce n'est pas forcément le cas du diamètre des plateaux. Ce diamètre est un bon indice de la masse des plateaux, et donc de la consommation. Pour résumer, la consommation électrique d'un disque dur est approximativement égal à : Diamètre * Nombre de plateaux * Vitesse de rotation. La conséquence est que la capacité influence la consommation, un grand nombre de plateaux étant souvent synonyme de disque de forte capacité, de même que des plateaux larges auront une plus grande capacité que des plateaux petits. On peut donc résumer en disant que la consommation électrique du disque est approximativement égale au produit Capacité * Vitesse de rotation.

Limiter la consommation énergétique est donc difficile, et ne peut passer que pas des moyens indirects. La majorité des contrôleurs de disque utilise des algorithmes pour mettre en pause les têtes de lecture ou cesser de faire tourner les plateaux en l'absence d'accès au disque. La file d'attente des requêtes permet d'implémenter ces algorithmes. 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.