Que fait-on avec le stockage à l'état solide?


12

Avec le stockage mécanique, l'opération de disque de bas niveau seek()entraîne le déplacement des têtes de disque dur vers un emplacement de sorte qu'elles soient prêtes à lire à partir d'une zone donnée du disque.

Avec le stockage à l'état solide, tel que les cartes SD, les lecteurs flash et les SSD, il n'y a pas de pièces mobiles du matériel, mais uniquement des signaux électriques.

En supposant qu'une technologie RAM non-volatile NAND constitue la base du matériel, quelle fonction remplit-elle seek()réellement au niveau matériel pour un tel périphérique?

Juste pour être clair, je sais déjà que ce qui suit se produit:

  1. L'espace utilisateur appelle seek()un appel système ou son équivalent spécifique au système d'exploitation

  2. Le noyau interprète l'appel système et envoie un message au contrôleur SATA pour qu'il cherche

  3. Le contrôleur SATA interprète la commande et demande au périphérique de disque connecté, qui est à l'état solide, de rechercher (ou peut-être qu'il est assez intelligent pour reconnaître qu'il s'agit d'un état solide et ne le dit même pas ??)

  4. Ce que je ne sais pas , c’est le dispositif à semi-conducteurs ??? avec la commande de "chercher".

S'il existe des détails qui dépendent du système d'exploitation, supposons une version de bureau relativement standard de GNU / Linux avec la version 3.2 du noyau.


2
Je pense que ça fait un gros NOP. Blague à part, si j'étais un disque SSD, je ferais quelques lectures "de précaution" dans la mémoire cache, pour que les choses se passent le plus vite possible. Mais comme il ne s'agit que d'une vague conjecture sur quelque chose dont je n'ai pas la moindre idée, prenez-le avec un grain de sel ...
ppeterka

Je ne pense plus que les opérations de "recherche" soient utilisées dans les interfaces de stockage de bas niveau. S'ils existaient, ils changeraient simplement la position enregistrée pour la prochaine opération d'E / S.
David Schwartz

Réponses:


4

si vous vous référez à linux, search avance toujours du nombre d'octets requis. Par exemple:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Commencera à copier 1024 octets au début d'un disque. Peu importe que sdb soit une carte sd ou un lecteur ssd. En raison d'une petite chose appelée abstraction, la mécanique réelle de cette opération est prise en charge à un niveau inférieur.

Mise à jour

Je vois ce que vous dites maintenant. Suivant mon exemple de carte SD, la mémoire flash utilise ce que l’on appelle des pages , qui ont une taille particulière. lorsqu'une recherche survient, le système d'exploitation envoie la commande au contrôleur de carte / carte SD pour passer à une certaine page en lecture et en écriture.


Je suis conscient du fait qu'il avance logiquement dans le fichier , mais mis à part l'impact logique sur le fichier en termes de "blocs" abstraits, le matériel fait-il autre chose quand on lui dit de chercher? Vous pouvez regarder l' lseek()appel système comme exemple spécifique si nécessaire. Je sais que cet appel système non seulement effectue la recherche logique, mais provoque également le déplacement des têtes de disque dur lorsqu’il s’agit d’un disque mécanique. Que fait donc le SSD?
Allquixotic

@allquixotic J'ai mis à jour ma réponse.
MDMoore313

1
Même sur un disque dur physique en rotation, le système d’exploitation envoie une commande (une commande SCSI, une commande ATA / SATA ou une commande de stockage de masse USB) à un lecteur pour obtenir LBA X. L’hôte ne finit pas par lui dire de déplacer le la tête à n’importe quel niveau, le firmware du lecteur le fait. Si vous souhaitez avoir une idée de ce que fait un micrologiciel SSD en réponse à des commandes de stockage, examinez certaines des spécifications du projet Jasmine OpenSSD si vous pouvez les trouver, ce qui explique en partie les choses à un niveau très bas.
LawrenceC
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.