Partager via


Optimisation des performances des DVD pour les jeux Windows

Un pourcentage élevé d’ordinateurs qui exécutent Windows disposent d’un lecteur de DVD et de nombreux jeux sont livrés sur DVD. Par conséquent, nous vous recommandons de vous assurer que vos jeux utilisent le lecteur DVD à son maximum. En comprenant comment les données sont lues à partir d’un DVD et comment l’emplacement des données affecte leur temps de lecture, vous pouvez réduire les temps de chargement et améliorer les performances globales pendant le jeu. Cet article explique comment optimiser les performances des DVD pour les jeux Windows.

Disposition de base d’un DVD

Cette figure montre la disposition de base d’un DVD.

disposition dvd

Les données d’un DVD sont stockées sous la forme d’une spirale continue, comme sur un CD; toutefois, les fichiers sont divisés en blocs et secteurs. Les fichiers sont répartis sur des blocs de code de correction d’erreur (ECC) et chaque bloc est divisé en seize secteurs de 2 Ko (soit 32 Ko de données dans chaque bloc). Les fichiers sont alignés le long des limites du secteur, et tout espace inutilisé dans un secteur est laissé vide. Si un fichier ne contient que 10 octets, le reste de l’espace dans ce secteur de 2 Ko est gaspiller ; Ainsi, lorsque cela est possible, regroupez les fichiers par incréments de 2 Ko pour obtenir la meilleure densité de données. N’oubliez pas que ces spécifications sont destinées aux DVD uniquement, et que cd et HD-DVD ont des spécifications différentes.

Lecture à partir d’un DVD

Voici la séquence qu’un lecteur de DVD exécute lors de la réception d’une demande de lecture à partir d’un DVD :

  1. Modifier les couches, si nécessaire
  2. Seek
  3. Recentrer l’unité de collecte optique (OPU) pour lire les données
  4. Vérifier la position réelle
  5. Ajuster et répéter jusqu’à ce que les données correctes soient trouvées

Les opérations de lecture de lecteur sont quantifiées différemment, selon qu’il s’agit de lectures de lecteurs logiques ou de lectures de lecteurs physiques. Les lectures de lecteur logique ne peuvent lire qu’une quantité entière de secteurs DVD, tandis qu’une demande de lecture de lecteur physique ne peut lire qu’une quantité entière de blocs ECC. En règle générale, le lecteur physique reçoit une demande de lecture ; il va essayer de remplir son cache. La taille du cache du lecteur DVD dépend des spécifications du lecteur individuel.

Lorsqu’un lecteur de DVD obtient une demande de lecture qui dépasse la taille du cache, la requête est divisée en requêtes de taille de cache. Le lecteur recherche le bloc ECC qui contient le premier secteur de la demande et lit l’intégralité du bloc ECC. Le microprogramme du lecteur décode le bloc ECC, puis lit le bloc ECC suivant. Le processus est répété jusqu’à ce que le cache du lecteur soit rempli ou que toutes les demandes soient satisfaites. Le noyau lit ensuite les données décodées à partir du cache du lecteur. Il vide ensuite le cache et démarre l’opération de lecture suivante, si des demandes de lecture sont conservées.

Notes

Chaque lecture non mise en cache vide le cache du lecteur.

 

Erreurs de lecture

Les DVD et lecteurs de DVD ne sont pas parfaits, et des erreurs peuvent se produire lors de la lecture. Comme les CD, les parties d’un DVD peuvent devenir illisibles à partir de la poussière ou des égratignures. Si une partie d’un bloc est illisible, l’ensemble du bloc est considéré comme illisible. Si une erreur de lecture se produit, le lecteur tente de relire le bloc ECC. Si le bloc est toujours illisible, le lecteur abandonne l’opération de lecture et retourne une valeur au noyau qui indique que le bloc était illisible. Le noyau décide ensuite de l’étape à suivre. Le noyau peut soit réémettre la demande, abandonner complètement la lecture, soit faire tourner le lecteur vers le bas et réémettre la demande.

Débit de données

Le débit de données d’un lecteur de DVD dépend de plusieurs facteurs : l’emplacement des données demandées, la façon dont le disque est propre ou rayé, le nombre de flux qui sont lus à partir du disque, la taille des mémoires tampons associées à ces flux et les spécifications du lecteur individuel. Le débit varie également selon que le lecteur a une vitesse angulaire constante (CAV) ou une vitesse linéaire constante (CLV). Si un lecteur tourne avec CAV, le disque tourne à la même vitesse, quel que soit l’emplacement de l’unité de prise optique (OPU). Cela signifie que la piste de données passe plus rapidement au-delà de l’opu à mesure que l’opu se rapproche du bord externe du disque. Avec CLV, le disque tourne plus lentement à mesure que l’OPU se déplace vers l’extérieur, de sorte que la piste de données passe au-delà de l’OPU à une vitesse constante. Les lecteurs de DVD de la plupart des PC utilisent CLV.

Pendant que le lecteur recherche et modifie des couches, les données ne peuvent pas être lues à partir du disque. Il est recommandé de réduire ces opérations, en particulier lors de la lecture des données d’un écran de chargement initial.

Exemples de débit gaspté

Pour comprendre comment le débit de données peut être gaspiller, envisagez un lecteur et un DVD hypothétiques. Supposons qu’un fichier au milieu du disque doit être lu. Le débit de cette zone du disque est d’environ 8,25 Mo/s. Si le coup de recherche est un demi ou un tiers de plein, la durée moyenne de la recherche est de 150 ms. Dans cet exemple, 1,2 Mo (150 ms × 8,25 Mo/s) ont pu être lus dans le temps nécessaire pour obtenir l’opu là où il peut lire. L’ajout d’une modification de couche augmente le débit gaspté à 1,8 Mo (225 ms × 8,25 Mo/s).

Un autre exemple qui illustre le gaspillage de débit est le chargement de 20 fichiers mal localisés à partir d’un lecteur CAV sans modification de couche. Si le temps de recherche pour chaque fichier, plus la latence avant que les données puissent être lues, est d’environ 200 ms, alors 4 secondes (20 fichiers × 200 ms) sont consacrées à la recherche des données. Si les fichiers sont situés sur le diamètre extérieur et lus à 11× vitesse, le débit moyen est de 15,2 Mo/s (11 vitesse/12 vitesse × 16 Mo/s). Le débit gaspille dans cet exemple est d’environ 60,8 Mo (15,2 Mo/s × 4 secondes).

Lecture synchrone ou asynchrone

La lecture asynchrone est plus efficace que la lecture synchrone. Lors de la lecture synchrone, un ou plusieurs blocs ECC de données sont lus dans la mémoire système avant d’être copiés dans la mémoire de l’application. En revanche, la lecture asynchrone copie les blocs ECC décodés directement dans la mémoire de l’application, ce qui évite le cache L2 et crée moins de surcharge processeur. Pour lire de manière asynchrone, utilisez l’indicateur FILE_FLAG_OVERLAPPED lors de l’utilisation de la fonction CreateFile pour ouvrir des fichiers. La fonction ReadFile a également besoin d’une structure OVERLAPPED valide passée pour effectuer des E/S asynchrones.

Vous trouverez plus d’informations sur les E/S asynchrones dans les rubriques Synchrones et E/S asynchrones.

Lecture optimale

Le meilleur principe de lecture à partir d’un DVD est d’éviter de rechercher et de lire de petites quantités de données. Lorsque la quantité de données lues est inférieure à la capacité d’un bloc ECC (moins de 32 Ko), le reste du bloc est gaspille. Étant donné que les tailles de cache varient d’un lecteur à l’autre, les développeurs doivent décider d’une quantité minimale de données pour les demandes de lecture et ne pas en réduire la taille. La taille minimale doit être un multiple entier d’un bloc ECC pour éviter de perdre du temps à lire et décoder des données qui ne seront pas utilisées. Il est également important d’éviter de rechercher à tout prix, car tout temps passé à rechercher est du temps passé à ne pas lire les données.

Compatibilité des DVD

Il existe d’importants problèmes de compatibilité à prendre en compte lors de la publication sur DVD. Tout d’abord, les lecteurs de DVD sur les ordinateurs Windows peuvent varier en performances. Par conséquent, si votre DVD a des exigences spécifiques en matière de débit, il est important de vous assurer que le matériel de vos utilisateurs répond à ces exigences. En outre, les DVD multicouches peuvent entraîner des problèmes de compatibilité sur certains lecteurs de DVD. Pour éviter ces problèmes, il est recommandé de fournir un DVD monocouche ou de tester minutieusement un DVD multicouche sur la majorité des lecteurs avant la mise en production.

Résumé

Pour améliorer les performances des DVD, certaines règles générales peuvent être appliquées. Les techniques suivantes peuvent vous aider à optimiser le débit et à réduire le gaspillage des données :

  • Éviter les lectures inférieures à 32 Ko
  • Disposer des données pour réduire ou éliminer les recherches
  • Disposer des données sur les limites des blocs ECC
  • Optimiser la capacité en regroupant les petits fichiers en blocs de 2 Ko et réduire l’espace de remplissage dans les secteurs DVD
  • Lecture asynchrone pour réduire la charge du processeur et l’utilisation excessive de la mémoire
  • Éviter de libérer des DVD multicouches