Optimieren der DVD-Leistung für Windows-Spiele
Ein hoher Prozentsatz der Computer, auf denen Windows ausgeführt wird, verfügt über ein DVD-Laufwerk, und viele Spiele werden auf DVD ausgeliefert. Daher wird empfohlen, sicherzustellen, dass Ihre Spiele das DVD-Laufwerk in vollem Umfang nutzen. Wenn Sie verstehen, wie Daten von einer DVD gelesen werden und wie sich der Speicherort der Daten auf die Lesezeit auswirkt, können Sie Ladezeiten reduzieren und die Gesamtleistung während des Spiels verbessern. In diesem Artikel wird erläutert, wie Sie die DVD-Leistung für Windows-Spiele optimieren.
- Grundlegendes Layout einer DVD
- Lesen von einer DVD
- Lesefehler
- Datendurchsatz
- Beispiele für verschwendeten Durchsatz
- Synchrones Lesen im Vergleich zu asynchronen
- Optimal lesen
- DVD-Kompatibilität
- Zusammenfassung
Grundlegendes Layout einer DVD
Diese Abbildung zeigt das grundlegende Layout einer DVD.
Daten auf einer DVD werden als fortlaufende Spirale gespeichert, wie auf einer CD; die Dateien werden jedoch in Blöcke und Sektoren unterteilt. Dateien werden über ECC-Blöcke (Error Correction Code) verteilt, und jeder Block wird in sechzehn Sektoren mit 2 KB unterteilt (d. a. 32 KB Daten in jedem Block). Dateien werden entlang der Sektorgrenzen ausgerichtet, und jeder ungenutzte Speicherplatz in einem Sektor bleibt leer. Wenn eine Datei nur 10 Bytes enthält, wird der restliche Speicherplatz in diesem 2-KB-Sektor verschwendet. Bündeln Sie Dateien also nach Möglichkeit in 2-KB-Schritten, um die beste Datendichte zu erhalten. Beachten Sie, dass diese Spezifikationen nur für DVD gelten und CD und HD-DVD unterschiedliche Spezifikationen haben.
Lesen von einer DVD
Hier ist die Sequenz, die ein DVD-Laufwerk ausführt, wenn eine Anforderung zum Lesen von einer DVD empfangen wird:
- Ändern von Ebenen bei Bedarf
- Seek
- Erneutes Fokussieren der opu (Optical Pickup Unit) zum Lesen von Daten
- Überprüfen der tatsächlichen Position
- Anpassen und Wiederholen, bis die richtigen Daten gefunden werden
Laufwerkslesevorgänge werden unterschiedlich quantisiert, je nachdem, ob es sich um Lesevorgänge für logische Laufwerke oder physische Laufwerkslesevorgänge handelt. Logische Laufwerklesevorgänge können nur eine ganze Menge von DVD-Sektoren lesen, während eine Leseanforderung für physische Laufwerke nur eine ganze Anzahl von ECC-Blöcken lesen kann. In der Regel empfängt das physische Laufwerk eine Leseanforderung. es versucht, den Cache aufzufüllen. Die Cachegröße des DVD-Laufwerks hängt von den Spezifikationen des einzelnen Laufwerks ab.
Wenn ein DVD-Laufwerk eine Leseanforderung erhält, die die Cachegröße überschreitet, wird die Anforderung in Anforderungen mit Cachegröße unterteilt. Das Laufwerk sucht den ECC-Block, der den ersten Sektor der Anforderung enthält, und liest den gesamten ECC-Block. Die Laufwerksfirmware decodiert den ECC-Block und liest dann den nächsten ECC-Block. Der Prozess wird wiederholt, bis der Laufwerkcache gefüllt ist oder alle Anforderungen erfüllt sind. Der Kernel liest dann die decodierten Daten aus dem Laufwerkcache. Anschließend wird der Cache geleert und der nächste Lesevorgang gestartet, wenn Leseanforderungen bestehen bleiben.
Hinweis
Bei jedem nicht zwischengespeicherten Lesevorgang wird der Laufwerkcache geleert.
Lesefehler
DVDs und DVD-Laufwerke sind nicht perfekt, und beim Lesen können Fehler auftreten. Wie CDs können Teile einer DVD vor Staub oder Kratzern unlesbar werden. Wenn ein Teil eines Blocks nicht lesbar ist, wird der gesamte Block als nicht lesbar betrachtet. Wenn ein Lesefehler auftritt, versucht das Laufwerk, den ECC-Block erneut zu lesen. Wenn der Block immer noch nicht lesbar ist, bricht das Laufwerk den Lesevorgang ab und gibt einen Wert an den Kernel zurück, der angibt, dass der Block nicht lesbar war. Der Kernel entscheidet dann, welcher Schritt als Nächstes erfolgen soll. Der Kernel kann entweder die Anforderung erneut ausführen, das Lesen ganz abbrechen oder das Laufwerk herunterfahren und die Anforderung erneut ausführen.
Datendurchsatz
Der Datendurchsatz eines DVD-Laufwerks hängt von mehreren Faktoren ab: dem Speicherort der angeforderten Daten, wie sauber oder zerkratzt der Datenträger ist, der Anzahl der Datenströme, die vom Datenträger gelesen werden, der Größe der Puffer, die diesen Streams zugeordnet sind, und den Spezifikationen des einzelnen Laufwerks. Der Durchsatz hängt auch davon ab, ob das Laufwerk über eine konstante Winkelgeschwindigkeit (CAV) oder eine konstante lineare Geschwindigkeit (CLV) verfügt. Wenn sich ein Laufwerk mit CAV dreht, dreht sich die Scheibe mit der gleichen Geschwindigkeit, unabhängig davon, wo sich die optische Pickup-Einheit (OPU) befindet. Dies bedeutet, dass die Datenspur schneller an der OPU vorbei bewegt wird, wenn die OPU näher an den äußeren Rand des Datenträgers kommt. Bei CLV dreht sich die Scheibe langsamer, wenn sich die OPU nach außen bewegt, sodass die Datenspur mit konstanter Geschwindigkeit an der OPU vorbei bewegt wird. Die DVD-Laufwerke auf den meisten PCs verwenden CLV.
Während das Laufwerk Ebenen sucht und ändert, können daten nicht von der Festplatte gelesen werden. Es empfiehlt sich, diese Vorgänge zu minimieren, insbesondere beim Lesen von Daten für einen anfänglichen Ladebildschirm.
Beispiele für verschwendeten Durchsatz
Um zu verstehen, wie der Datendurchsatz verschwendet werden kann, sollten Sie ein hypothetisches Laufwerk und eine DVD in Betracht ziehen. Angenommen, eine Datei in der Mitte des Datenträgers muss gelesen werden. Der Durchsatz aus diesem Bereich des Datenträgers beträgt ca. 8,25 MB/s. Wenn der Suchstrich eine Hälfte oder ein Drittel voll ist, beträgt die durchschnittliche Suchzeit 150 ms. In diesem Beispiel könnten 1,2 MB (150 ms × 8,25 MB/s) in der Zeit gelesen worden sein, die nur benötigt wurde, um die OPU dorthin zu bringen, wo sie lesen kann. Durch hinzufügen einer Schichtänderung erhöht sich der verschwendete Durchsatz auf 1,8 MB (225 ms × 8,25 MB/s).
Ein weiteres Beispiel, das den verschwendeten Durchsatz veranschaulicht, ist das Laden von 20 dateien mit schlechter Lage von einem CAV-Laufwerk ohne Schichtänderungen. Wenn die Suchzeit für jede Datei und die Latenz, bevor Daten gelesen werden können, etwa 200 ms beträgt, werden 4 Sekunden (20 Dateien × 200 ms) für die Suche nach den Daten aufgewendet. Wenn sich die Dateien auf dem äußeren Durchmesser befinden und mit einer Geschwindigkeit von 11× gelesen werden, beträgt der Durchsatz durchschnittlich 15,2 MB/s (11 Geschwindigkeit/12 Geschwindigkeit × 16 MB/s). Der verschwendete Durchsatz in diesem Beispiel beträgt ungefähr 60,8 MB (15,2 MB/s × 4 Sekunden).
Synchrones Lesen im Vergleich zu asynchronen
Asynchrones Lesen ist effizienter als synchrones Lesen. Beim synchronen Lesen werden ein oder mehrere ECC-Datenblöcke in den Systemspeicher eingelesen, bevor sie in den Anwendungsspeicher kopiert werden. Im Gegensatz dazu kopiert asynchrones Lesen decodierte ECC-Blöcke direkt in den Anwendungsspeicher, wodurch der L2-Cache vermieden wird und weniger CPU-Aufwand entsteht. Wenn Sie asynchron lesen möchten, verwenden Sie das flag FILE_FLAG_OVERLAPPED, wenn Sie die CreateFile-Funktion zum Öffnen von Dateien verwenden. Die ReadFile-Funktion benötigt auch eine gültige OVERLAPPED-Struktur, die übergeben wird, um asynchrone E/A-Vorgänge auszuführen.
Weitere Informationen zur asynchronen E/A finden Sie unter Synchrone und asynchrone E/A.
Optimal lesen
Das beste Prinzip beim Lesen von einer DVD besteht darin, zu vermeiden, kleine Datenmengen zu suchen und zu lesen. Wenn die Menge der gelesenen Daten kleiner als die Kapazität eines ECC-Blocks ist (weniger als 32 KB), wird der Rest des Blocks verschwendet. Da die Cachegrößen von Laufwerk zu Laufwerk variieren, müssen Entwickler eine Mindestmenge an Daten für Leseanforderungen festlegen und nicht kleiner machen. Die Mindestgröße sollte ein ganzzahliges Vielfaches eines ECC-Blocks sein, um zu vermeiden, dass Beim Lesen und Decodieren von Daten, die nicht verwendet werden, Zeit vergeht. Es ist auch wichtig, die Suche um jeden Preis zu vermeiden, da jede Zeit, die für die Suche aufgewendet wird, Zeit ist, die nicht mit dem Lesen von Daten verbracht wird.
DVD-Kompatibilität
Bei der Veröffentlichung auf DVD sind einige wichtige Kompatibilitätsprobleme zu beachten. Erstens können DVD-Laufwerke in Windows-basierten Computern in der Leistung variieren. Wenn Ihre DVD also eine bestimmte Anforderung an den Durchsatz hat, ist es wichtig, sicherzustellen, dass die Hardware Ihrer Benutzer diese Anforderungen erfüllt. Außerdem können mehrschichtige DVDs Kompatibilitätsprobleme auf einigen DVD-Laufwerken verursachen. Um diese Probleme zu vermeiden, empfiehlt es sich, vor der Veröffentlichung eine einschichtige DVD zu liefern oder eine mehrschichtige DVD auf den meisten Laufwerken gründlich zu testen.
Zusammenfassung
Um die DVD-Leistung zu verbessern, können einige allgemeine Regeln angewendet werden. Die folgenden Techniken können dazu beitragen, den Durchsatz zu maximieren und die Verschwendung von Daten zu reduzieren:
- Vermeiden von Lesevorgängen, die kleiner als 32 KB sind
- Erstellen von Daten zum Reduzieren oder Entfernen von Suchvorgängen
- Daten auf ECC-Blockgrenzen anordnen
- Maximieren Sie die Kapazität, indem Sie kleine Dateien in 2-KB-Blöcke bündeln und den Speicherplatz in DVD-Sektoren verringern.
- Asynchrones Lesen zur Verringerung der CPU-Auslastung und übermäßiger Arbeitsspeicherauslastung
- Vermeiden Der Freigabe von mehrschichtigen DVDs