Matti
2005-08-12, 00:24:18
Wenn ich jetzt keinen Denkfehler habe, ist Command Queuing doch ein ziemlich sinnloses Feature. Es soll ja die Performance verbessern, wenn mehrere Programme gleichzeitig versuchen, auf die Platte zuzugreifen. Aber ich bin der Meinung, daß schon der normale Cache diese Performance-Einbußen weitgehend verhindert.
Schreiben:
Programm 1 schreibt an Stelle X, Programm 2 an Stelle Y und Programm 1 wieder an Stelle X. Mit Cache sieht das so aus: Die Daten werden zuerst in den Cache geschrieben, und erst wenn so viel Daten im Cache sind, daß sich das Wegschreiben lohnt, wird der Lese-/Schreib-Kopf aktiv. Dabei kann die Firmware der HDD die Daten in der Reihenfolge schreiben, wie es für die Performance am günstigsten ist, egal an was für einem Interface die HDD hängt.
Lesen:
Beispiel wie oben, aber eben mit Lesen: Der Lese-/Schreib-Kopf fängt an der Stelle X an, Daten zu lesen. Es werden aber nicht nur so viele Daten gelesen, wie angefordert wurden, sondern immer so viel daß es sich auch lohnt, den Lese-/Schreib-Kopf überhaupt an diese Stelle zu bewegen. Also werden idR schon Daten in den Cache vorausgeladen. Dann geht der Lese-/Schreib-Kopf an die Stelle Y, und wenn der 3. Lese-Befehl kommt, muß sich der Lese-/Schreib-Kopf nicht mehr bewegen, weil die Daten von Stelle X schon im Cache sind.
Schreiben:
Programm 1 schreibt an Stelle X, Programm 2 an Stelle Y und Programm 1 wieder an Stelle X. Mit Cache sieht das so aus: Die Daten werden zuerst in den Cache geschrieben, und erst wenn so viel Daten im Cache sind, daß sich das Wegschreiben lohnt, wird der Lese-/Schreib-Kopf aktiv. Dabei kann die Firmware der HDD die Daten in der Reihenfolge schreiben, wie es für die Performance am günstigsten ist, egal an was für einem Interface die HDD hängt.
Lesen:
Beispiel wie oben, aber eben mit Lesen: Der Lese-/Schreib-Kopf fängt an der Stelle X an, Daten zu lesen. Es werden aber nicht nur so viele Daten gelesen, wie angefordert wurden, sondern immer so viel daß es sich auch lohnt, den Lese-/Schreib-Kopf überhaupt an diese Stelle zu bewegen. Also werden idR schon Daten in den Cache vorausgeladen. Dann geht der Lese-/Schreib-Kopf an die Stelle Y, und wenn der 3. Lese-Befehl kommt, muß sich der Lese-/Schreib-Kopf nicht mehr bewegen, weil die Daten von Stelle X schon im Cache sind.