Fonctionnement d'un ordinateur/Les disques durs

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

Nous allons maintenant étudier les mémoires de masse magnétiques, dont les plus célèbres sont de loin la disquette et le disque dur. Comme leur nom l'indique, elles ne sont pas des mémoires électroniques, comme les mémoires RAM ou ROM, mais elles utilisent le magnétisme pour stocker des données. Les mémoires de ce type sont nombreuses, allant des cassettes magnétiques aux disques durs, avec de nombreuses variantes fonctionnant selon des principes différents. Il est difficile de trouver des points communs entre les bandes magnétiques, les mémoires à tores de ferrite et les disques durs. Aussi, nous allons étudier les mémoires magnétiques anciennes à part des disques durs et des disquettes. Ce chapitre est dédié aux disques durs et aux disquettes, dont le fonctionnement est similaire, pour ne pas dire presque identique.

L'intérieur d'un disque dur[modifier | modifier le wikicode]

L'intérieur d'un disque dur contient beaucoup de composants, le premier d'entre eux étant le support de mémorisation, composé de plateaux portant des couches de matériau magnétique. Ensuite, on trouve une tête de lecture-écriture pour lire ou écrire sur le support de mémorisation. Divers moteurs s'occupent de faire bouger les têtes de lecture/écriture ainsi que les plateaux. Le contrôleur de disque gère le déplacement de la tête de lecture/écriture et commande les moteurs. 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.

Les plateaux magnétiques[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 sur chaque face. Les deux faces d'un plateau sont utilisées pour stocker des données. Les disques durs utilisent plusieurs plateaux, ce qui leur permet d'obtenir une grande capacité mémoire. Sachant que la capacité mémoire d'un plateau est fixe, multiplier les plateaux permet de multiplier dans les mêmes proportions la capacité mémoire totale. Les disquettes fonctionnent sur le même principe, à une différence près : il n'y a qu'un seul plateau. Elles ont donc une capacité mémoire assez faible, dépassant rarement quelques mébioctets.

L'encodage des bits sur les plateaux[modifier | modifier le wikicode]

Encoder des bits sur le plateau peut se faire de plusieurs manières différentes ; les disques durs anciens utilisaient des techniques assez simples alors que les disques durs récents utilisent des méthodes plus élaboré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 un sens pour stocker un 1 et dans l'autre pour un 0. Les disques durs ^plus récents 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.

Les blocs peuvent être aimantés « à la verticale », perpendiculairement à la surface, et d'autres « à l'horizontale », parallèlement à la surface ; les disques durs récents utilisent l'aimantation verticale pour diverses raisons techniques, notamment parce que cela permet de stocker plus de données à surface égale.

Illustration des différents types d'aimantation.

La répartition géométrique des bits sur les plateaux[modifier | modifier le wikicode]

Les plateaux entourent un axe central autour duquel ils tournent à une vitesse précise. Ce mouvement permet à la tête de lecture de balayer la surface du disque. La tête reste "fixe", ce sont les plateaux qui bougent. Plus la vitesse de rotation des plateaux est élevée, plus le disque dur peut être rapide. Les bits sont regroupés sur chaque face d'un plateau selon des cercles concentriques appelés pistes. Les pistes d'une face d'un plateau sont numérotées, mais attention : deux pistes peuvent avoir le même numéro si elles se trouvent 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 et qui correspondent aux bits des disques durs. Ces secteurs sont numérotés. Le début de chaque secteur est identifié par un préambule, qui permet de le délimiter 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 tailles différentes, de sorte que toutes les pistes avaient 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 posent 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 plateau finisse son tour avant de retomber sur le bon secteur. Pour résoudre ce problème, les concepteurs de disques durs 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.

Les 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, dans l'électroaimant et le fil, une tension que l'on pourra interpréter comme un 0 ou un 1.

Les moteurs mécaniques[modifier | modifier le wikicode]

Le disque dur contient deux moteurs : un pour déplacer les têtes de lecture-écriture et un autre pour faire tourner les plateaux. Rappelons que les plateaux tournent autour de l'axe central. Pour balayer une piste, la tête de lecture reste immobile : c'est la rotation du plateau qui permet à la tête de parcourir la piste complète. En revanche, la tête de lecture doit se déplacer pour changer de piste. Cela fait en tout deux types de mouvements, la rotation des plateaux et les déplacements de la tête de lecture, ce qui demande au minimum deux moteurs distincts. La commande des moteurs est réalisée par le contrôleur de disque, comme nous le verrons plus bas.

Les 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, sur la bonne piste, sur la piste à balayer. Les moteurs doivent aussi faire en sorte que les têtes de lecture ne touchent pas les plateaux. Si une tête de lecture-écriture touche la couche magnétique, la surface de contact est définitivement endommagée. À 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 !

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 les valeurs comprises entre 128 et 254 sont permises). Cette valeur est stockée dans une mémoire EEPROM sur le disque dur et chargée à chaque démarrage. Pour la configurer, le pilote de disque dur peut envoyer une commande au contrôleur, qui mettra à jour la valeur d'AAM.

Le contrôleur de disque[modifier | modifier le wikicode]

Le contrôleur de disque dur est le circuit qui s'occupe de la gestion des têtes de lecture/écriture, des plateaux, des moteurs et de tous les composants du disque dur. Son rôle principal est de gérer les déplacements de la tête de lecture et la rotation des plateaux. Pour cela, il doit commander électriquement les moteurs correspondants.

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 du 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 n'est pas sur le point de lâcher ou s'il reste du temps avant sa mise hors d'usage. 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.

La performance des disques durs[modifier | modifier le wikicode]

Tout disque dur possède diverses caractéristiques qui le rendent plus ou moins performant. La première d'entre elles est clairement sa 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.

La capacité mémoire[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.

L'influence du nombre de plateaux est assez simple à comprendre : si chaque plateau a une capacité fixe, en utiliser plusieurs identiques multiplie dans les mêmes proportions la capacité totale. Les disques durs ont presque toujours plusieurs plateaux, même les modèles très anciens. Il faut dire que les besoins en capacité des disques durs sont assez importants, ce qui élimine d'office les disques à un seul plateau. En comparaison, les disquettes n'avaient qu'un seul plateau, ce qui explique en partie leur faible capacité. Il faut dire que pour de faibles capacités de stockage, il n'est pas nécessaire d'utiliser plusieurs plateaux, puisque cela complique la gestion des têtes de lecture/écriture et rend le travail du contrôleur de disque plus compliqué.

Évolution de la densité surfacique dans le temps, en échelle logarithmique. Comme pour la capacité totale, la progression a été exponentielle.

La capacité d'un plateau dépend de plusieurs paramètres. Le plus simple est clairement la surface du plateau, qui elle-même dépend de son diamètre. Plus un plateau est grand, plus il peut contenir de données (toutes choses égalse par ailleurs). En théorie, les disques durs les plus gros sont donc censés avoir une capacité plus importante. A ce propos, cela explique en partie pourquoi les disquettes avaient une capacité moindre que les disques durs : leur faible taille faisait que leurs plateaux étaient plus petits que ceux des disques durs. Mais la taille des plateaux ne fait pas tout : il faut aussi prendre en compte le 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 an, 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. On voit que la progression a été exponentielle.

Si on veut résumer le paragraphe précédent, on peut dire que la capacité d'un plateau est le produit de sa surface par la densité surfacique.

Capacité d'un plateau = surface du plateau densité surfacique.

Formellement, la capacité totale est le produit entre "nombre de plateaux" et "capacité de chaque plateau".

Capacité d'un disque dur = nombre de plateaux capacité d'un plateau.

Si on combine les deux équations précédentes, on a :

Capacité d'un disque dur = nombre de plateaux surface du plateau densité surfacique.

Cette équation permet de mieux comprendre comment la capacité des disques durs a évolué dans le temps. Les trois paramètres de l'équation précédente n'ont pas évolué de la même manière. Ils ont été contraints par la place qu'occupe un disque dur. Un disque dur ne doit pas avoir un volume trop important, sans quoi il n'entre pas dans l'unité centrale, empêche l'installation d'autres composants, gène la ventilation, etc. En conséquence, la taille ds disquse durs n'a que peu évolué avec le temps, en raison de ces contraintes d'encombrement. Les disques durs n'ont pas pu s'épaissir, pas plus qu'ils n'ont pu gagner en largeur ou longueur. Les contraintes de hauteur font que le nombre de plateaux n'a pas vraiment changé avec le temps, les plateaux n'étant pas vraiment miniaturisables. Les contraintes de largeur et de longueur ont empêché les plateaux de gagner en surface. L'évolution de la capacité des disques durs dépend donc essentiellement de la densité surfacique. Les diagrammes vus plus haut montrent que la densité surfacique a augmenté de manière exponentielle avec le temps, doublant tous les deux ans environ. La capacité totale des disques durs a fait plus ou moins de même.

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

La performance des disques durs dépend de leur temps d'accès aux données et de leur 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 directement de la vitesse de rotation du disque dur : plus le plateau tourne vite, plus vite le secteur se positionne sous la tête de lecture et plus vite le secteur est 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 doit rester longtemps au-dessus de la surface magnétique pour lire le secteur au complet. Rappelons que la taille des secteurs, et par corolaire le temps de transmission, dépendent uniquement de la densité surfacique. La densité surfacique a donc un effet non seulement sur la capacité du disque dur, mais aussi sur ses performances. 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, en l'absence d'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 sa 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 la taille des secteurs ou de gérer plus de lectures/écritures simultanées. 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.

Le tampon de lecture/écriture et le 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 données en 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ée 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 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.

Le 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 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. 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.

Le 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 ultétieurement 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 toujours chercher à accéder au secteur le plus proche est 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 ici une liste serait beaucoup trop long.

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

La majeure partie 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 consomme 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 demande plus d'efforts que d'en faire tourner un seul. Et enfin, plus les plateaux sont massifs, plus il faut 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 égale au produit 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 de plus 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 se faire que par 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, qui 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 tournent vite.