Für ein Plattenlesen ist der Datenfluss im Wesentlichen:
- Nachdem sich die Lese- / Schreibeinheit am angeforderten Zylinder befindet, wird der angeforderte Schreib- / Lesekopf ausgewählt.
- In jedem Sektor wird die Sektor-ID gelesen. Wenn die gelesene Sektornummer mit der angeforderten Sektornummer übereinstimmt, werden die Sektordaten gelesen.
- Die Sektordaten werden als serieller Bitstrom gelesen und in Bytes umgewandelt.
- die Bytes des Sektors werden in einem Sektorpuffer gespeichert (normalerweise SRAM in der Steuerung); Dieser Sektorpuffer unterscheidet sich vom "Platten-Cache".
- Sobald der gesamte Sektor gelesen wurde, werden die Daten mit ECC validiert und möglicherweise korrigiert.
- Nach der Validierung werden die Sektordaten von der Steuerung zum Host-PC übertragen. Hinweis: Das Vorhandensein dieses Sektorpuffers ist nicht allgemein bekannt, und es gibt weit verbreitete Fehlinformationen darüber, dass die Übertragungsgeschwindigkeit auf der Host-Schnittstelle (egATA) durch die Bitrate am R / W-Kopf gebunden oder begrenzt ist. Das ist völlig falsch, da diese beiden Datenübertragungen unabhängige und sequentielle Operationen sind und nicht gleichzeitig ablaufen.
- Wenn der PC die Daten vom Festplattencontroller über die ATA-Schnittstelle empfängt, kann der PC entweder programmierte E / A verwenden (die CPU liest wiederholt das Datenregister des ATA-Ports und kopiert den Wert in den Zielspeicher) oder DMA (der DMA-Controller ist.) Setup zum Kopieren von N Bytes aus dem Datenregister des ATA-Ports in einen Speicherpuffer ohne weiteren Eingriff der CPU).
- Der Speicherpuffer des PCs, der die Daten empfängt, kann der Puffer der Anwendung sein (bei Verwendung des Block-E / A-Systemaufrufs ) oder ein interner Systempuffer unter Dateisystemkontrolle oder sogar Programm- oder Datenspeicher, falls die Daten vom Swap stammen Bereich (oder Seitendatei).
Ein Schreibvorgang auf die Platte ist ähnlich, mit der Ausnahme, dass die Daten vom PC zum Plattencontroller übertragen werden, der ECC berechnet wird, der angeforderte Sektor lokalisiert wird und dann die Daten aus dem Sektorpuffer in den Plattenteller geschrieben werden.
Für zusätzliche Gutschrift:
Informieren Sie sich über " Scatter-Gather " -Transfers, bei denen DMA-Verkettung und eine Scatter-Gather-Liste mit Speicheradressen und Pufferlängen verwendet werden. Anstelle eines großen zusammenhängenden Speicherpuffers ermöglicht eine "Scatter-Gather" -Übertragung die Verwendung nicht zusammenhängender Speicherpuffer für die Platten-E / A-Anforderung.