Fonctionnement d'un ordinateur/Les disques durs

Un livre de Wikilivres.

Il existe plusieurs types de mémoires de masse, qui se distinguent par leur support de mémorisation : magnétique, optique, électronique. Dans ce chapitre, nous allons é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. Comme toutes les mémoires de masse, il contient un support de mémorisation, un contrôleur de disque, et un contrôleur de bus.

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

Dans le détail, le support de mémorisation est composé de plateaux portant des couches de matériau magnétique. Ensuite, on trouve une tête de lecture-écriture, actionnée par un bras, pour lire ou écrire sur le support de mémorisation. Plusieurs 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, ce qui fait qu'il est parfois appelé le servocommande. Vu de l'extérieur, on voit assez bien ces divers composants, comme le montre le schéma ci-dessous.

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

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 blocs des chapitres précédents. Pour rappel, le support de mémorisation est découpé en blocs/secteurs sont de taille fixe, les lectures et écritures modifiant toujours un bloc/secteur à la fois (sauf pour les accès en rafale, mais passons). Ces secteurs sont numérotés, ce qui fait qu'ils ont une adresse. 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.

Organisation avec nombre de secteurs par piste constant.
Organisation avec taille constante des secteurs.

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.

Organisations de cylinder skewing diverses.

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.

Le tampon de lecture/écriture[modifier | modifier le wikicode]

Rappelons que toutes les mémoires de masse incorporent un disk buffer, une mémoire tampon située entre le bus et le support de mémorisation. Les données à écrire sont enregistrées dans ce disk buffer d'abord, avant d'être transférées sur le support de mémorisation quand celui-ci est libre. Inversement pour une lecture, le secteur lu est enregistré dans le disk buffer, puis envoyé sur le bus quand celui-ci est libre. Lors d'une lecture, il est possible de charger en avance, dans le disk buffer, 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. De nombreuses autres optimisations sont possibles avec le disk buffer, mais nous en avons déjà parlé dans le chapitre précédent.

Mémoires tampons internes au disque dur.

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 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é. Utiliser plusieurs plateaux 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 égales par ailleurs). En théorie, les disques durs les plus gros sont donc censés avoir une capacité plus importante. À 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.

On peut résumer les paragraphes précédents avec l'équation suivante :

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 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 des disques durs n'a que peu évolué avec le temps. 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, tandis que 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, qui 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.

Le tampon de commandes et le Native Command and Queing[modifier | modifier le wikicode]

Mémoire tampon NCQ.

Les disques durs modernes intègrent un tampon de commande, qui permet d'accumuler des commandes de lecture/écriture, même si les précédentes ne sont pas terminées. Ces commandes anticipées sont mises en attente dans une mémoire tampon et traitées quand les plateaux sont libres.

Les disques durs S-ATA récents permettent de changer l'ordre de traitement des commandes pour améliorer les trajets de la tête de lecture. Au lieu de faire sans cesse des allers et retours, le disque dur peut tenter d’accéder de préférence à des données proches. L'idée est de rester sur la même piste, voire le même plateau. Dans le cas où le tampon de commande contient des accès à des secteurs qui sont sur la même piste, il accédera à ces secteurs lors d'un seul passage, même si ces accès ne sont pas consécutifs et qu'il y a d'autres commandes entre les deux. De même, ils va effectuer à la suite des accès à des pistes proches, même si on a d'autres commandes entre les deux. 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.

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 commandes sur des secteurs proches arrivent sans cesse, le disque dur les traite systématiquement avant les anciennes. Pour éviter cela, les commandes 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 commandes 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 commandes en attente portent sur des secteurs situés plus à l'intérieur. D'autres algorithmes d’ordonnancement des commandes d'accès disque existent, mais faire ici une liste serait beaucoup trop long.

Illustration du principe du NCQ.

Cette technique demande toutefois de remettre en ordre ultérieurement les données lues ou écrites. Pour cela, on utilise le disk buffer, qui est modifié pour que les données quittent le disque dur dans l'ordre d'arrivée des commandes associées.

Mémoires tampons internes au disque dur, dans le cadre du NCQ.

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 suivant :

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 et le moteurs en l'absence d'accès au disque. Le tampon de commandes permet d'implémenter des algorithmes pour ralentir/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 augmente 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.