Daten kopieren, wie läuft das ab?

Ernst@at schrieb:
Als Einstiegspunkt dazu die Serielle Schnittstelle zu verlinken, ist vielleicht nicht ganz optimal.

Auf der Software-Seite sieht es so aus, dass die Copy-Anwendung (z.B. der Windows Explorer) den Copy-Befehl in Einzelteilen zerlegt an das Filesystem(z.B. NTFS) weitergibt:

(nicht in allen Einzelheiten)
- lesen des Directorys der Source-Platte - Feststellen der Dateigröße
- schreiben des neuen Directory-Eintrags auf die Target-Platte, Anforderung des dazu und für die Target-Datei notwendigen Platzes)
- wechselweise lesen/schreiben (in Clustergröße) der Datei

das resultiert an der Hardware/Software Schnittstelle zwischen Betriebssytem und BIOS, je nach Größe der Datei, in vielen tausenden Wiederholungen von
- Leseoperation(Sektoradresse, Anzahl Sektoren eines Clusters) von der Source-Platte
- und Schreiboperation(Sektoradresse, Anzahl Sektoren eines Clusters) zur Target-Platte
mit Angabe des dabei zu verwendeten RAM-Bereiches

Diese werden über das BIOS vom entsprechenden Controller übernommen, queued(max 32 je Device), und bei der nächsten Übertragungsmöglichkeit an die Device weitergegeben.

Die Device übernimmt diese Befehle, queued sie wieder(bei NCQ), und führt sie in einer Reihenfolge ihres Gutdünkens ganz oder teilweise aus.
Der Datentransport erfolgt (mglw über den Cache) über von der HDD gesteuerten DMA zwischen RAM und Plattenoberfläche in Paketen
Ist einer der Befehle vollständig ausgeführt oder wegen Fehlers abgebrochen, meldet die HDD das dem Controller

Der Controller meldet die erfolgreiche(oder aus Fehlergründen abgebrochene) Ausführung jedes I/O Befehls zurück an das Betriebssystem, welches wiederum das Programm davon informiert.

auszugsweise einige ins Detail gehende weiterführende Links:
PCI-Express und Grafik des Bussystemes
NCQ im Überblick und dessen Funktionsbeschreibung(Link im Überblick dorthin ist falsch)
DMA Funktionsweise

Bei Bedarf kann ich Dir noch jede bitgenaue :D Detail-Beschreibung von der Programmschnittstelle über die von der CPU ausgeführten Maschinenbefehle bis in die BIOS-Codierung des Controllers und die Signaldetails an den Leitungen nachreichen - bis Dir der Kopf raucht :daumen:

so hab ich mir das vorgestellt! dickes dankeschön an Ernst@at.
Gruß
 
Simpson474 schrieb:
Genau das ist ja der Sinn von NCQ - einfach nur die Requests in die Queue zu schreiben und anschließend abzuarbeiten bringt rein gar nichts.
Naja- eigentlich ist NCQ ja dazu erfunden worden, um die Seeks einer HDD zu optimieren und wird von einigen SSDs sozusagen "missbraucht" - weil es da ja keine Seek/rotational Latenzzeiten gibt. Wie ja hochjubelnd von allen SSD-Freaks immer wieder betont wird, sind die Access-Zeiten irgendwo unter 0,1ms - also im µs-Bereich angesiedelt.

zu Intel's X25.M ist zu lesen:
More interestingly, the controller supports Native Command Queuing (NCQ)—a new trick for SSDs. NCQ was developed to reduce the performance impact of mechanical latency found in traditional hard drives, so it's might seem like an odd choice for a solid-state drive with no mechanical parts. According to Intel, its SSDs are so fast that NCQ helps to compensate for latency encountered in the host PC. Even today's fastest systems take some time (time is relative in the microsecond world of the SSD) between when a request is completed and another one is issued. Queuing up multiple requests can keep a solid-state drive busy during this downtime, and the X25-M is capable of stacking requests 32 deep.

was für mich schlüssig ist und Sinn macht, wenn die SSD selbst bei der Bearbeitung eines I/Os schon weiß, wie der nächste aussieht. Damit kann sie den Datentransfer fast lückenlos an den vorhergehenden anschließen.

Die Frage ist, ob dabei die Eingangsreihenfolge gewahrt bleibt oder sich wie bei einer HDD nach anderen Aspekten ausgerichtet auch ändern kann - denn genau das wäre eine mögliche Ursache für die von Eggcake beschriebenen "Hänger"

Bei den vielen Fans, die außer an SSD an nichts anderes mehr denken, wird doch wohl einer sein, der die Frage erschöpfend beantworten (Link zu verbindlichen Herstellerinfos wäre schön) kann... :D
 
Zuletzt bearbeitet:
Zurück
Oben