Condividi tramite


Ottimizzazione delle prestazioni dvd per i giochi Windows

Una percentuale elevata di computer che eseguono Windows hanno un'unità DVD e molti giochi vengono forniti su DVD. Di conseguenza, ti consigliamo di assicurarti che i tuoi giochi usino l'unità DVD al suo massimo vantaggio. Comprendendo come i dati sono letti da un DVD e come la posizione dei dati influisce sul tempo di lettura, è possibile ridurre i tempi di caricamento e migliorare le prestazioni complessive durante la riproduzione del gioco. Questo articolo illustra come ottimizzare le prestazioni dei DVD per i giochi Windows.

Layout di base di un DVD

Questa figura mostra il layout di base di un DVD.

layout dvd

I dati su un DVD vengono archiviati come spirale continua, come su un CD; tuttavia, i file vengono suddivisi in blocchi e settori. I file vengono distribuiti su blocchi di codice di correzione degli errori (ECC) e ogni blocco è suddiviso in sedici settori da 2 KB (ovvero 32 KB di dati in ogni blocco). I file vengono allineati lungo i limiti del settore e qualsiasi spazio inutilizzato in un settore viene lasciato vuoto. Se un file ha solo 10 byte, il resto dello spazio nel settore di 2 KB viene sprecato; quindi, quando possibile, aggregare i file in incrementi di 2 KB per ottenere la densità di dati migliore. Tenere presente che queste specifiche sono solo per DVD e CD e HD-DVD hanno specifiche diverse.

Lettura da un DVD

Ecco la sequenza eseguita da un'unità DVD al momento della ricezione di una richiesta di lettura da un DVD:

  1. Modificare i livelli, se necessario
  2. Seek
  3. Riorientare l'unità di prelievo ottico (OPU) per leggere i dati
  4. Controllare la posizione effettiva
  5. Regolare e ripetere fino a quando non si trovano i dati corretti

Le operazioni di lettura delle unità vengono quantizzate in modo diverso, a seconda che si tratti di letture di unità logiche o unità fisiche. Le letture di unità logiche possono leggere solo una quantità intera di settori DVD, mentre una richiesta di lettura unità fisica può leggere solo una quantità intera di blocchi ECC. In genere, l'unità fisica riceve una richiesta di lettura; tenterà di riempire la cache. Le dimensioni della cache dell'unità DVD dipendono dalle specifiche della singola unità.

Quando un'unità DVD ottiene una richiesta di lettura che supera le dimensioni della cache, la richiesta viene suddivisa in richieste di dimensioni cache. L'unità cerca il blocco ECC che contiene il primo settore della richiesta e legge l'intero blocco ECC. Il firmware dell'unità decodifica il blocco ECC e quindi legge il successivo blocco ECC. Il processo viene ripetuto fino a quando la cache delle unità viene compilata o tutte le richieste vengono soddisfatte. Il kernel legge quindi i dati decodificati dalla cache dell'unità. Scarica quindi la cache e avvia l'operazione di lettura successiva, se rimangono richieste di lettura.

Nota

Ogni lettura non memorizzata scarica la cache dell'unità.

 

Lettura degli errori

I DVD e le unità DVD non sono perfetti e possono verificarsi errori durante la lettura. Come i CD, parti di un DVD possono diventare illeggibili da polvere o graffi. Se una parte di un blocco è illeggibile, l'intero blocco viene considerato illeggibile. Se si verifica un errore di lettura, l'unità tenta di rileggere il blocco ECC. Se il blocco è ancora illeggibile, l'unità interrompe l'operazione di lettura e restituisce un valore al kernel che indica che il blocco era illeggibile. Il kernel decide quindi quale passaggio eseguire. Il kernel può eseguire nuovamente la richiesta, interrompere completamente la lettura o avviare l'unità verso il basso e riemettere la richiesta.

Velocità effettiva dei dati

La velocità effettiva dei dati di un'unità DVD dipende da più fattori: la posizione dei dati richiesti, la pulizia o lo scratch del disco, il numero di flussi letti dal disco, le dimensioni dei buffer associati a tali flussi e le specifiche della singola unità. La velocità effettiva dipende anche dal fatto che l'unità abbia una velocità angolare costante (CAV) o una velocità lineare costante (CLV). Se un'unità ruota con CAV, il disco ruota alla stessa velocità indipendentemente dalla posizione dell'unità di prelievo ottico (OPU). Ciò significa che la traccia dei dati viene spostata oltre l'OPU più velocemente quando l'OPU si avvicina al bordo esterno del disco. Con CLV, il disco scorre più lentamente man mano che l'OPU si sposta verso l'esterno, quindi la traccia dei dati passa oltre l'OPU a una velocità costante. Le unità DVD nella maggior parte dei PC usano CLV.

Mentre l'unità cerca e modifica i livelli, i dati non possono essere letti dal disco. È consigliabile ridurre al minimo queste operazioni, soprattutto durante la lettura dei dati per una schermata di caricamento iniziale.

Esempi di velocità effettiva sprecata

Per comprendere in che modo la velocità effettiva dei dati può essere sprecata, prendere in considerazione un'ipotetica unità e DVD. Si supponga che sia necessario leggere un file al centro del disco. La velocità effettiva da tale area del disco è di circa 8,25 MB/sec. Se il tratto di ricerca è mezzo o un terzo pieno, il tempo medio di ricerca è 150 ms. In questo esempio, 1,2 MB (150 ms × 8,25 MB/sec) potrebbe essere stato letto nel tempo necessario solo per ottenere l'OPU in cui è possibile leggere. L'aggiunta di una modifica del livello genera la velocità effettiva sprecata a 1,8 MB (225 ms × 8,25 MB/sec).

Un altro esempio che dimostra che la velocità effettiva sprecata sta caricando 20 file con posizione scarsa da un'unità CAV senza modifiche di livello. Se il tempo di ricerca per ogni file, più la latenza prima che i dati possano essere letti, è di circa 200 ms, 4 secondi (20 file × 200 ms) vengono spesi solo per la ricerca dei dati. Se i file si trovano nel diametro esterno e letti a 11× velocità, la velocità effettiva media è di 15,2 MB/sec (11 velocità/12 velocità × 16 MB/sec). La velocità effettiva sprecata in questo esempio è di circa 60,8 MB (15,2 MB/sec × 4 sec).

Lettura sincrona e asincrona

La lettura asincrona è più efficiente rispetto alla lettura sincrona. Quando si legge in modo sincrono, uno o più blocchi ecc di dati vengono letti nella memoria di sistema prima di essere copiati nella memoria dell'applicazione. Al contrario, la lettura asincrona copia i blocchi ECC decodificati direttamente nella memoria dell'applicazione, che evita la cache L2 e crea meno sovraccarico della CPU. Per leggere in modo asincrono, usare il flag FILE_FLAG_OVERLAPPED quando si usa la funzione CreateFile per aprire i file. La funzione ReadFile richiede anche una struttura OVERLAPPED valida passata per eseguire operazioni di I/O asincrone.

Altre informazioni sull'I/O asincrona sono disponibili in I/O sincrono e sincrono.

Lettura ottimale

Il principio migliore nella lettura da un DVD è evitare di cercare e leggere piccole quantità di dati. Quando la quantità di dati letti è inferiore alla capacità di un blocco ECC, inferiore a 32 KB, il resto del blocco viene sprecato. Poiché le dimensioni della cache variano dall'unità all'unità, gli sviluppatori devono decidere una quantità minima di dati per le richieste di lettura e non apportare alcuna dimensione inferiore a quella. Le dimensioni minime devono essere un multiplo intero di un blocco ECC per evitare di perdere tempo durante la lettura e la decodifica dei dati che non verranno usati. È anche importante evitare di cercare a tutti i costi, perché qualsiasi tempo dedicato alla ricerca è dedicato a non leggere i dati.

Compatibilità DVD

Esistono alcuni importanti problemi di compatibilità da tenere presenti durante il rilascio su DVD. Innanzitutto, le unità DVD nei computer basati su Windows possono variare in base alle prestazioni, quindi se il DVD ha un requisito specifico per la velocità effettiva, è importante assicurarsi che l'hardware degli utenti soddisfi tali requisiti. Inoltre, i DVD a più livelli possono causare problemi di compatibilità su alcune unità DVD. Per evitare questi problemi, è consigliabile distribuire un DVD a livello singolo o testare accuratamente un DVD multilicenza su una maggior parte delle unità prima del rilascio.

Riepilogo

Per migliorare le prestazioni del DVD, è possibile applicare alcune regole generali. Le tecniche seguenti consentono di ottimizzare la velocità effettiva e ridurre i dati sprecate:

  • Evitare letture inferiori a 32 KB
  • Definire il layout dei dati per ridurre o eliminare le necessità
  • Disporre i dati sui limiti dei blocchi ECC
  • Ottimizzare la capacità raggruppando file di piccole dimensioni in blocchi da 2 KB e riducendo lo spazio di riempimento nei settori DVD
  • Leggere in modo asincrono per ridurre il carico della CPU e un utilizzo eccessivo della memoria
  • Evitare di rilasciare DVD a più livelli