Optimización del rendimiento de DVD para juegos de Windows
Un alto porcentaje de equipos que ejecutan Windows tienen una unidad de DVD y muchos juegos se envían en DVD. Como resultado, te recomendamos que te asegures de que tus juegos usen la unidad de DVD a su máxima ventaja. Al comprender cómo se leen los datos de un DVD y cómo afecta la ubicación de los datos a su tiempo de lectura, puede reducir los tiempos de carga y mejorar el rendimiento general durante el juego. En este artículo se describe cómo optimizar el rendimiento de DVD para juegos de Windows.
- Diseño básico de un DVD
- Lectura desde un DVD
- Errores de lectura
- Rendimiento de datos
- Ejemplos de rendimiento desperdiciado
- Lectura sincrónica frente a asincrónica
- Lectura óptima
- Compatibilidad con DVD
- Resumen
Diseño básico de un DVD
En esta ilustración se muestra el diseño básico de un DVD.
Los datos de un DVD se almacenan como una espiral continua, como en un CD; sin embargo, los archivos se dividen en bloques y sectores. Los archivos se distribuyen sobre bloques de código de corrección de errores (ECC) y cada bloque se divide en dieciséis sectores de 2 KB (es decir, 32 KB de datos en cada bloque). Los archivos se alinean a lo largo de los límites del sector y cualquier espacio sin usar de un sector se deja vacío. Si un archivo tiene solo 10 bytes, se desperdicia el resto del espacio en ese sector de 2 KB; por lo tanto, cuando sea posible, agrupa los archivos en incrementos de 2 KB para obtener la mejor densidad de datos. Tenga en cuenta que estas especificaciones son solo para DVD y CD y HD-DVD tienen especificaciones diferentes.
Lectura desde un DVD
Esta es la secuencia en la que se ejecuta una unidad de DVD al recibir una solicitud para leer desde un DVD:
- Cambiar las capas, si es necesario
- Seek
- Reenfoque la unidad de recogida óptica (OPU) para leer datos
- Comprobar la posición real
- Ajustar y repetir hasta que se encuentren los datos correctos
Las operaciones de lectura de unidades se cuantifican de forma diferente, dependiendo de si son lecturas de unidad lógica o lecturas de unidades físicas. Las lecturas de unidad lógica solo pueden leer una cantidad entera de sectores de DVD, mientras que una solicitud de lectura de unidad física solo puede leer una cantidad entera de bloques ECC. Normalmente, la unidad física recibe una solicitud de lectura; intentará rellenar su memoria caché. El tamaño de caché de la unidad de DVD depende de las especificaciones de la unidad individual.
Cuando una unidad de DVD obtiene una solicitud de lectura que supera el tamaño de la memoria caché, la solicitud se divide en solicitudes de tamaño de caché. La unidad busca el bloque ECC que contiene el primer sector de la solicitud y lee todo el bloque ECC. El firmware de la unidad descodifica el bloque ECC y, a continuación, lee el siguiente bloque ECC. El proceso se repite hasta que se rellena la memoria caché de la unidad o se cumplen todas las solicitudes. A continuación, el kernel lee los datos descodificados de la memoria caché de la unidad. A continuación, vacía la memoria caché e inicia la siguiente operación de lectura, si quedan solicitudes de lectura.
Nota
Cada lectura no almacenada en caché vacía la memoria caché de la unidad.
Errores de lectura
Los DVD y las unidades de DVD no son perfectos y los errores pueden producirse durante la lectura. Al igual que los CD, las partes de un DVD se pueden volver ilegibles desde el polvo o los arañazos. Si alguna parte de un bloque es ilegible, todo el bloque se considera ilegible. Si se produce un error de lectura, la unidad intenta volver a leer el bloque ECC. Si el bloque sigue sin leer, la unidad anula la operación de lectura y devuelve un valor al kernel que indica que el bloque no se pudo leer. A continuación, el kernel decide qué paso se debe realizar a continuación. El kernel puede volver a emitir la solicitud, anular la lectura por completo o girar la unidad hacia abajo y volver a emitir la solicitud.
Rendimiento de los datos
El rendimiento de datos de una unidad de DVD depende de varios factores: la ubicación de los datos solicitados, la limpieza o el rascado del disco es, el número de secuencias que se leen desde el disco, el tamaño de los búferes asociados a esas secuencias y las especificaciones de la unidad individual. El rendimiento también depende de si la unidad tiene una velocidad angular constante (CAV) o una velocidad lineal constante (CLV). Si una unidad gira con CAV, el disco gira a la misma velocidad, independientemente de dónde se encuentre la unidad de recogida óptica (OPU). Esto significa que la pista de datos se mueve más allá de la OPU más rápido, ya que la OPU se acerca al borde exterior del disco. Con CLV, el disco gira más lentamente a medida que la OPU se mueve hacia afuera, por lo que la pista de datos se mueve más allá de la OPU a una velocidad constante. Las unidades de DVD de la mayoría de los equipos usan CLV.
Mientras la unidad busca y cambia las capas, los datos no se pueden leer desde el disco. Se recomienda minimizar estas operaciones, especialmente al leer datos para una pantalla de carga inicial.
Ejemplos de rendimiento desperdiciado
Para comprender cómo se puede desperdiciar el rendimiento de los datos, considere una unidad hipotética y un DVD. Supongamos que es necesario leer un archivo en medio del disco. El rendimiento de esa área del disco es de aproximadamente 8,25 MB/s. Si el trazo de búsqueda es medio o un tercio de completo, el tiempo medio de búsqueda es de 150 ms. En este ejemplo, 1,2 MB (150 ms × 8,25 MB/s) podría haberse leído en el tiempo que tardó solo en obtener la OPU a donde se puede leer. Agregar un cambio de capa aumenta el rendimiento desperdiciado a 1,8 MB (225 ms × 8,25 MB/s).
Otro ejemplo que muestra el rendimiento desperdiciado es cargar 20 archivos mal localizados desde una unidad CAV sin cambios en la capa. Si el tiempo de búsqueda de cada archivo, además de la latencia antes de que se puedan leer los datos, es de aproximadamente 200 ms, 4 segundos (20 archivos × 200 ms) se invierten simplemente buscando los datos. Si los archivos se encuentran en el diámetro exterior y se leen a 11× velocidad, el rendimiento promedio es de 15,2 MB/s (11 velocidad/12 velocidad × 16 MB/s). El rendimiento desperdiciado en este ejemplo es de aproximadamente 60,8 MB (15,2 MB/s × 4 s).
Lectura sincrónica frente a asincrónica
La lectura asincrónica es más eficaz que la lectura sincrónica. Al leer de forma sincrónica, uno o varios bloques ecc de datos se leen en la memoria del sistema antes de copiarse en la memoria de la aplicación. En cambio, la lectura asincrónica copia los bloques ECC descodificados directamente en la memoria de la aplicación, lo que evita la memoria caché L2 y crea menos sobrecarga de CPU. Para leer de forma asincrónica, use la marca FILE_FLAG_OVERLAPPED al usar la función CreateFile para abrir archivos. La función ReadFile también necesita una estructura SUPERPUESTA válida que se pasa para realizar E/S asincrónica.
Puede encontrar más información sobre E/S asincrónica en E /S sincrónica y asincrónica.
Lectura óptima
El mejor principio en la lectura de un DVD es evitar buscar y leer pequeñas cantidades de datos. Cuando la cantidad de datos leídos es menor que la capacidad de un bloque ECC ( menos de 32 KB), se desperdicia el resto del bloque. Dado que los tamaños de caché varían de unidad a unidad, los desarrolladores deben decidir una cantidad mínima de datos para las solicitudes de lectura y no hacer nada más pequeño que eso. El tamaño mínimo debe ser un número entero múltiplo de un bloque ECC para evitar perder tiempo al leer y descodificar datos que no se usarán. También es importante evitar la búsqueda a todos los costos, ya que cualquier tiempo empleado en buscar es tiempo invertido en no leer datos.
Compatibilidad con DVD
Hay algunos problemas de compatibilidad importantes que se deben tener en cuenta al publicar en DVD. En primer lugar, las unidades de DVD en equipos basados en Windows pueden variar en el rendimiento, por lo que si el DVD tiene un requisito específico para el rendimiento, es importante asegurarse de que el hardware de los usuarios cumple esos requisitos. Además, los DVD multicapa pueden causar problemas de compatibilidad en algunas unidades de DVD. Para evitar estos problemas, es aconsejable entregar un DVD de una sola capa o probar exhaustivamente un DVD de varias capas en una mayoría de unidades antes de su lanzamiento.
Resumen
Para mejorar el rendimiento del DVD, se pueden aplicar algunas reglas generales. Las técnicas siguientes pueden ayudar a maximizar el rendimiento y reducir los datos desperdiciados:
- Evitar lecturas menores de 32 KB
- Diseñar datos para reducir o eliminar las búsquedas
- Diseñar datos en límites de bloque ECC
- Maximizar la capacidad agrupando archivos pequeños en bloques de 2 KB y reducir el espacio de relleno en sectores de DVD
- Leer de forma asincrónica para reducir la carga de CPU y el uso excesivo de memoria
- Evitar la liberación de DVD de varias capas