Worauf Sie gerade stoßen, ist typisch für mechanische Festplatten und einer der Hauptvorteile von SSDs: Festplatten haben eine furchtbare Direktzugriffsleistung.
In Crystal „Seq“ bedeutet sequenziellen Zugriff während „4K“ bedeutet zufälligen Zugriff (in Blöcken von 4 KB zu einem Zeitpunkt, da einzelnes Bytes zu weit wäre langsam und unrealistisch 1 ).
Definitionen
Es gibt zwei Möglichkeiten, auf eine Datei zuzugreifen.
Sequentieller Zugriff
Sequenzieller Zugriff bedeutet, dass Sie die Datei mehr oder weniger ein Byte nach dem anderen lesen oder schreiben. Wenn Sie beispielsweise ein Video ansehen, würden Sie das Video von Anfang bis Ende laden. Wenn Sie eine Datei herunterladen, wird sie von Anfang bis Ende heruntergeladen und auf die Festplatte geschrieben.
Aus der Sicht der Festplatte werden Befehle wie "Block 1 lesen, Block 2 lesen, Block 3 lesen, Byteblock 4 lesen" 1 angezeigt .
Zufälliger Zugriff
Zufällige Zugang bedeutet, dass es keine offensichtlichen Muster auf das liest oder schreibt. Das muss nicht wirklich zufällig sein. es bedeutet wirklich "nicht sequentiell". Wenn Sie beispielsweise viele Programme gleichzeitig starten, müssen sie viele Dateien lesen, die sich auf Ihrem Laufwerk befinden.
Aus der Sicht des Laufwerks werden Befehle wie "Lesen von Block # 56, Lesen von Block # 5463, Lesen von Block # 14, Lesen von Block # 5" angezeigt.
Blöcke
Ich habe ein paar Mal Blöcke erwähnt. Da Computer mit so großen Größen umgehen (1 MB ~ = 1000000 B), ist selbst der sequentielle Zugriff ineffizient, wenn Sie das Laufwerk für jedes einzelne Byte fragen müssen - es gibt zu viel Geschwätz. In der Praxis fordert das Betriebssystem jeweils Datenblöcke von der Platte an.
Ein Block ist nur ein Bereich von Bytes. Block Nr. 1 kann zum Beispiel Bytes Nr. 1- Nr. 512 sein, Block Nr. 2 kann Bytes Nr. 513 bis Nr. 1024 usw. sein. Diese Blöcke sind je nach Laufwerk entweder 512 Byte oder 4096 Byte groß. Der sequenzielle Blockzugriff ist jedoch selbst nach dem Blockieren und nicht mit einzelnen Bytes schneller als der Blockzugriff.
Performance
Sequentiell
Der sequentielle Zugriff ist im Allgemeinen schneller als der Direktzugriff. Dies liegt daran, dass das Betriebssystem und das Laufwerk durch sequenziellen Zugriff vorhergesagt werden können, was als nächstes benötigt wird, und ein großes Stück im Voraus geladen wird. Wenn Sie die Blöcke "1, 2, 3, 4" angefordert haben, kann das Betriebssystem annehmen, dass Sie als Nächstes "5, 6, 7, 8" benötigen, so dass das Laufwerk "1, 2, 3, 4" liest 5, 6, 7, 8 "in einem Arbeitsgang. In ähnlicher Weise kann das Laufwerk den physischen Speicher auf einmal ablesen, anstatt "Suche nach 1, Anzeige von 1,2,3,4, Suche nach 5, Anzeige von 5, 6, 7, 8".
Oh, ich erwähnte das Suchen nach etwas. Mechanische Festplatten haben aufgrund ihrer physischen Anordnung eine sehr langsame Suchzeit: Sie bestehen aus einer Reihe schwerer metallisierter Festplatten, deren physische Arme sich hin und her bewegen, um die Festplatte zu lesen. Hier ist ein Video von einer offenen Festplatte, auf der Sie die sich drehenden Scheiben und die sich bewegenden Arme sehen können.
Bild von http://www.realtechs.net/data%20recovery/process2.html
Dies bedeutet, dass zu jeder Zeit nur das Datenbit unter dem Kopf am Armende gelesen werden kann. Das Laufwerk muss auf zwei Dinge warten: Es muss warten, bis sich der Arm zum rechten Ring ("Track") der Festplatte bewegt, und auch darauf gewartet werden, dass sich die Festplatte dreht, sodass die benötigten Daten unter dem Lesevorgang liegen Kopf. Dies ist als Suchen 2 bekannt . Sowohl die sich drehenden als auch die sich bewegenden Arme benötigen körperliche Zeit, um sich zu bewegen, und sie können nicht viel beschleunigt werden, ohne Schaden zu riskieren.
Dies dauert in der Regel sehr lange, viel länger als die tatsächliche Ablesung. Wir sprechen von> 5ms, nur um zu dem Ort zu gelangen, an dem das angeforderte Byte lebt, während die tatsächliche Anzeige des Bytes durchschnittlich 0,00000625 ms pro sequentiellem Byte-Lesen (oder 0,003125 ms pro 512-B-Block) beträgt.
Zufällig
Zufälliger Zugriff hat dagegen nicht den Vorteil der Vorhersagbarkeit. Wenn Sie also 8 zufällige Bytes lesen möchten, vielleicht aus den Blöcken "8,34,76,996,112,644,888,341", muss das Laufwerk gehen "Suche nach 8, 8 lesen, 34 suchen, 34 lesen, 76 suchen, 76 lesen ...". . Beachten Sie, wie es für jeden einzelnen Block erneut gesucht werden muss. Anstelle von durchschnittlich 0,003125 ms pro sequenziellem 512 B-Block sind es jetzt durchschnittlich (5 ms Suchlauf + 0,003125 ms Lesevorgang) = 5,003125 ms pro Block. Das ist viel langsamer. Tatsächlich Tausende Male langsamer.
SSDs
Zum Glück haben wir jetzt eine Lösung: SSDs.
Eine SSD, ein Solid-State-Laufwerk, ist, wie der Name schon sagt, Solid State . Das heißt, es hat keine beweglichen Teile . Die Art und Weise, wie eine SSD ausgelegt ist, bedeutet, dass (effektiv 3 ) nicht die Position eines Bytes nachgeschlagen werden muss. es weiß es schon . Aus diesem Grund weist eine SSD eine deutlich geringere Performance-Lücke zwischen sequenziellem und wahlfreiem Zugriff auf.
Es gibt immer noch eine Lücke, die jedoch weitgehend darauf zurückzuführen ist, dass Sie nicht vorhersagen können, was als nächstes kommt, und die Daten vorab laden, bevor Sie danach gefragt werden.
1 Genauer gesagt, mit LBA werden Laufwerke aus Gründen der Effizienz in Blöcken von 512 Bytes (512n / 512e) oder 4kB (4Kn) adressiert. Außerdem benötigen echte Programme fast immer nur ein Byte.
2 Technisch bezieht sich Suchen nur auf die Bewegung des Arms. Das Warten auf das Rotieren der Daten unter dem Kopf ist die Rotationslatenz oberhalb der Suchzeit.
3 Technisch gesehen haben sie Nachschlagetabellen und bilden sie aus anderen Gründen ab, z. B. zum Abnutzungsausgleich. Diese sind jedoch im Vergleich zu einer Festplatte völlig vernachlässigbar.