Поделиться через


Оптимизация производительности DVD-дисков для игр Windows

Большой процент компьютеров под управлением Windows имеет DVD-дисковод, и многие игры поставляются на DVD. Поэтому мы рекомендуем убедиться, что в играх используется DVD-накопитель в полной мере. Понимая, как данные считываются с DVD-диска и как расположение данных влияет на время чтения, вы можете сократить время загрузки и повысить общую производительность во время игры. В этой статье описывается, как оптимизировать производительность DVD для игр Windows.

Базовый макет DVD-диска

На этом рисунке показан базовый макет DVD-диска.

Dvd-макет

Данные на DVD-диске хранятся в виде непрерывной спирали, например на компакт-диске; однако файлы разбиваются на блоки и секторы. Файлы распределяются по блокам кода исправления ошибок (ECC), и каждый блок делится на шестнадцать секторов по 2 КБ (то есть 32 КБ данных в каждом блоке). Файлы выравниваются вдоль границ сектора, а все неиспользуемые пространства в секторе остаются пустыми. Если файл содержит только 10 байт, остальная часть пространства в этом секторе размером 2 КБ будет потрачена впустую; поэтому, когда это возможно, объедините файлы в 2 КБ, чтобы получить оптимальную плотность данных. Имейте в виду, что эти спецификации относятся только к DVD, а cd и HD-DVD имеют разные характеристики.

Чтение с DVD-диска

Ниже приведена последовательность выполнения DVD-диска при получении запроса на чтение с DVD-диска:

  1. При необходимости измените слои
  2. Seek
  3. Перенацеливать оптическая единица сбора данных (OPU) для чтения данных
  4. Проверка фактического положения
  5. Настройка и повторение до тех пор, пока не будут найдены правильные данные

Операции чтения диска квантуются по-разному в зависимости от того, являются ли они логическими или физическими операциями чтения диска. Операции чтения логических дисков могут считывать только целочисленное количество секторов DVD, в то время как запрос на чтение физического диска может считывать только целочисленное количество блоков ECC. Как правило, физический диск получает запрос на чтение; он попытается заполнить свой кэш. Размер кэша DVD-дисков зависит от спецификаций отдельного диска.

Когда DVD-диск получает запрос на чтение, превышающий размер кэша, запрос разбивается на запросы размера кэша. Диск ищет блок ECC, содержащий первый сектор запроса, и считывает весь блок ECC. Встроенное ПО диска декодирует блок ECC, а затем считывает следующий блок ECC. Процесс повторяется до заполнения кэша диска или выполнения всех запросов. Затем ядро считывает декодированные данные из кэша диска. Затем он очищает кэш и запускает следующую операцию чтения, если остались какие-либо запросы на чтение.

Примечание

Каждое некэшированного чтения очищает кэш диска.

 

Ошибки чтения

DVD-диски и DVD-диски не являются идеальными, и во время чтения могут возникать ошибки. Как и компакт-диски, части DVD-диска могут стать нечитаемыми от пыли или царапин. Если какая-либо часть блока не читается, весь блок считается нечитаемым. Если возникает ошибка чтения, диск пытается повторно считывать блок ECC. Если блок по-прежнему недоступен для чтения, диск прерывает операцию чтения и возвращает в ядро значение, указывающее, что блок был нечитаемым. Затем ядро решает, какой шаг следует предпринять дальше. Ядро может либо повторно выполнить запрос, либо прервать чтение полностью, либо запустить диск вниз и повторно выпустить запрос.

Пропускная способность данных

Пропускная способность DVD-диска зависит от нескольких факторов: расположения запрошенных данных, очистки или поцарапанности диска, количества потоков, считываемых с диска, размера буферов, связанных с этими потоками, и спецификаций отдельного диска. Пропускная способность также зависит от того, имеет ли диск постоянную угловую (CAV) или постоянную линейную скорость (CLV). Если диск вращается с CAV, диск вращается с одинаковой скоростью независимо от того, где находится оптический пикап (OPU). Это означает, что дорожка данных быстрее перемещается мимо OPU по мере приближения OPU к внешнему краю диска. При использовании CLV диск вращается медленнее по мере перемещения OPU наружу, поэтому дорожка данных перемещается мимо OPU с постоянной скоростью. DVD-диски на большинстве компьютеров используют CLV.

Пока диск ищет и изменяет слои, данные нельзя считать с диска. Рекомендуется свести к минимуму эти операции, особенно при чтении данных для начального экрана загрузки.

Примеры впустую пропускной способности

Чтобы понять, как пропускная способность данных может быть потрачена впустую, рассмотрим гипотетический диск и DVD. Предположим, что файл в середине диска должен быть прочитан. Пропускная способность этой области диска составляет примерно 8,25 МБ/с. Если штрих поиска составляет половину или треть полного, то среднее время поиска составляет 150 мс. В этом примере 1,2 МБ (150 мс × 8,25 МБ/с) можно было прочитать за то время, которое потребовалось только для того, чтобы получить opU, куда она может читать. Добавление изменения слоя повышает пропускную способность до 1,8 МБ (225 мс × 8,25 МБ/с).

Еще одним примером, демонстрирующим неопустую пропускную способность, является загрузка 20 плохо расположенных файлов с диска CAV без изменений слоя. Если время поиска для каждого файла, а также задержка перед чтением данных составляет около 200 мс, то на поиск данных тратится 4 секунды (20 файлов × 200 мс). Если файлы находятся на внешнем диаметре и считываются со скоростью 11×, пропускная способность в среднем составляет 15,2 МБ/с (11/12 скоростей × 16 МБ/с). В этом примере пропускная способность составляет примерно 60,8 МБ (15,2 МБ/с × 4 с).

Синхронное и асинхронное чтение

Асинхронное чтение эффективнее синхронного чтения. При синхронном чтении один или несколько блоков данных ECC считываются в системную память перед копированием в память приложения. В отличие от этого, асинхронное чтение копирует декодированные блоки ECC непосредственно в память приложения, что позволяет избежать кэша L2 и снижает нагрузку на ЦП. Для асинхронного чтения используйте флаг FILE_FLAG_OVERLAPPED при использовании функции CreateFile для открытия файлов. Функции ReadFile также требуется допустимая структура OVERLAPPED, переданная для выполнения асинхронного ввода-вывода.

Дополнительные сведения об асинхронном вводе-выводе см. в статье Синхронный и асинхронный ввод-вывод.

Оптимальное чтение

Лучший принцип чтения с DVD заключается в том, чтобы избежать поиска и чтения небольших объемов данных. Если объем считываемых данных меньше емкости блока ECC (менее 32 КБ), остальная часть блока тратится впустую. Так как размеры кэша зависят от диска к диску, разработчики должны выбрать минимальный объем данных для запросов на чтение и не делать их меньше. Минимальный размер должен быть целым числом, кратным блоку ECC, чтобы избежать траты времени на чтение и декодирование данных, которые не будут использоваться. Кроме того, важно избегать поиска любой ценой, так как любое время, затрачиваемое на поиск, — это время, затрачиваемое на чтение данных.

Совместимость с DVD-дисками

При выпуске на DVD следует учитывать некоторые важные проблемы совместимости. Во-первых, DVD-диски на компьютерах под управлением Windows могут отличаться по производительности, поэтому, если у DVD-диска есть определенные требования к пропускной способности, важно убедиться, что оборудование пользователей соответствует этим требованиям. Кроме того, многослойные DVD-диски могут вызвать проблемы совместимости на некоторых DVD-дисках. Чтобы избежать этих проблем, рекомендуется поставить однослойный DVD-диск или тщательно протестировать многослойный DVD-диск на большинстве дисков перед выпуском.

Сводка

Для повышения производительности DVD можно применить некоторые общие правила. Следующие методы помогут увеличить пропускную способность и уменьшить объем впустую данных:

  • Избегайте операций чтения, размер которых меньше 32 КБ
  • Размещение данных для сокращения или исключения поисков
  • Размещение данных на границах блоков ECC
  • Увеличьте емкость, объединяя небольшие файлы в блоки размером 2 КБ и уменьшая пространство для заполнения в секторах DVD
  • Асинхронное чтение для снижения нагрузки на ЦП и чрезмерного использования памяти
  • Избегайте выпуска многоуровневых DVD-дисков