Was macht seek mit Solid State Storage?

12

Bei mechanischer Speicherung werden die Festplattenköpfe durch seek()den Festplattenbetrieb auf niedriger Ebene an eine Position verschoben, sodass sie für das Lesen aus einem bestimmten Bereich der Festplatte bereit sind.

Bei Festkörperspeichern wie SD-Karten, Flash-Laufwerken und SSDs gibt es keine beweglichen Teile der Hardware, sondern nur elektrische Signale.

Unter der Annahme, dass eine nichtflüchtige NAND-RAM-Technologie die Grundlage der Hardware ist, welche Funktion erfüllt ein seek()solches Gerät tatsächlich auf Hardwareebene?

Um es klar zu machen, ich weiß bereits, dass Folgendes passiert:

  1. Das Userspace-Programm ruft den seek()Systemaufruf oder das betriebssystemspezifische Äquivalent auf

  2. Der Kernel interpretiert den Systemaufruf und sendet eine Nachricht zur Suche an den SATA-Controller

  3. Der SATA-Controller interpretiert den Befehl und weist das angeschlossene Festplattengerät (Solid State) an zu suchen (oder ist es intelligent genug, um zu erkennen, dass es sich um einen Solid State handelt, und sagt es nicht einmal?).

  4. Was ich nicht weiß ist, macht Solid State Device ??? mit dem Befehl "suchen".

Wenn es Details gibt, die vom Betriebssystem abhängen, nehmen Sie eine relativ standardmäßige Desktop-Version von GNU / Linux mit Kernel-Version 3.2 an.

allquixotic
quelle
2
Ich denke, es macht einen großen fetten NOP. Mal abgesehen davon, wenn ich ein SSD-Laufwerk wäre, würde ich vorsichtshalber etwas in den Cache lesen, um sicherzustellen, dass die Dinge so schnell wie möglich ablaufen. Aber da dies nur eine vage Vermutung für etwas ist, von dem ich nicht die geringste Ahnung habe, nehmen Sie es mit einem Körnchen Salz ...
ppeterka
Ich glaube nicht, dass "Such" -Operationen mehr in Low-Level-Speicher-Interfaces verwendet werden. Wenn sie existieren würden, würden sie nur die gespeicherte Position für die nächste E / A-Operation ändern.
David Schwartz

Antworten:

4

Wenn Sie sich auf Linux beziehen, wird bei der Suche immer noch die erforderliche Anzahl von Bytes nach vorne verschoben. Zum Beispiel:

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

Startet Nullen 1024 Bytes in den Beginn einer Festplatte kopiert werden , ist es egal, ob sdb eine SD - Karte oder SSD - Laufwerk ist, wegen einer Kleinigkeit genannt Abstraktion dieser die eigentliche Mechanik auf einem niedrigeren Niveau Pflege genommen wird.

Aktualisieren

Ich verstehe, was du jetzt sagst. Nach meinem Beispiel für eine SD-Karte verwendet der Flash-Speicher so genannte Seiten , und die Seiten haben eine bestimmte Größe. Bei einer Suche sendet das Betriebssystem den Befehl an die SD-Karte / den Karten-Controller, auf eine bestimmte Seite zum Lesen und Schreiben zu wechseln .

MDMoore313
quelle
Mir ist bewusst, dass es in der Datei logisch voranschreitet , aber abgesehen von der logischen Auswirkung auf die Datei in Form von abstrakten "Blöcken", macht die Hardware etwas anderes, wenn sie tatsächlich angewiesen wird zu suchen? Bei Bedarf können Sie sich den lseek()Systemaufruf als spezifisches Beispiel ansehen . Ich weiß, dass dieser Systemaufruf nicht nur das logische Suchen bewirkt, sondern auch, dass sich die Festplattenköpfe bewegen, wenn es sich um eine mechanische Festplatte handelt. Was macht die SSD?
allquixotic
@allquixotic Ich habe meine Antwort aktualisiert.
MDMoore313
1
Sogar auf einer sich drehenden physischen Festplatte sendet das Betriebssystem einen Befehl (einen SCSI-Befehl, einen ATA / SATA-Befehl oder einen USB-Massenspeicherbefehl) an das Laufwerk, um LBA X zu erhalten Kopf auf einer beliebigen Ebene, die Firmware des Laufwerks macht das. Wenn Sie eine Vorstellung davon haben möchten, wie eine SSD-Firmware auf Speicherbefehle reagiert, lesen Sie einige der Spezifikationen für das Jasmine OpenSSD-Projekt, wenn Sie sie finden. Einige davon erklären die Dinge auf einer sehr niedrigen Ebene.
LawrenceC