Jump to content

Множественная буферизация

(Перенаправлено из четырехкратной буферизации )
Наборы 1 , 2 и 3 представляют собой работу одинарной, двойной и тройной буферизации соответственно с включенной вертикальной синхронизацией (vsync). На каждом графике время течет слева направо. Обратите внимание, что цифра 3 показывает цепочку обмена с тремя буферами; исходное определение тройной буферизации отбрасывало бы кадр C, как только кадр D закончился, и начинало бы рисовать кадр E в буфер 1 без задержки. Набор 4 показывает, что происходит, когда прорисовка кадра (в данном случае B) занимает больше времени, чем обычно. В этом случае обновление кадра пропускается. В реализациях, чувствительных ко времени, таких как воспроизведение видео, весь кадр может быть отброшен. При использовании трехбуферной цепочки подкачки в наборе 5 прорисовка кадра B может начаться без необходимости дожидаться копирования кадра A в видеопамять, что снижает вероятность того, что задержанный кадр пропустит свой вертикальный обратный ход.

В информатике » увидит полную (хотя , множественная буферизация — это использование более чем одного буфера для хранения блока данных , так что « читатель возможно, старую) версию данных вместо частично обновленной версии данных. созданный « писателем ». Он очень часто используется для изображений, отображаемых на компьютере. Он также используется, чтобы избежать необходимости использования двухпортовой оперативной памяти (DPRAM), когда устройствами чтения и записи являются разные устройства.

Описание

[ редактировать ]

Сеть Петри с двойной буферизацией

[ редактировать ]

Сеть Петри на иллюстрации демонстрирует двойную буферизацию. Переходы W1 и W2 представляют запись в буфер 1 и 2 соответственно, а R1 и R2 представляют чтение из буфера 1 и 2 соответственно. Вначале включен только переход W1. После срабатывания W1 R1 и W2 включаются и могут работать параллельно. Когда они завершатся, R2 и W1 продолжат работу параллельно и так далее.

После начального переходного процесса, когда W1 срабатывает один, эта система становится периодической, и переходы активируются – всегда парами (R1 с W2 и R2 с W1 соответственно).


Сеть Петри с двойной буферизацией

Двойная буферизация в компьютерной графике

[ редактировать ]

В компьютерной графике двойная буферизация — это метод рисования графики, который показывает меньше заиканий, разрывов и других артефактов.

Программе сложно отрисовать дисплей так, чтобы пиксели не менялись более одного раза. Например, при обновлении страницы текста гораздо проще очистить всю страницу и затем нарисовать буквы, чем каким-то образом стереть только те пиксели, которые используются в старых буквах, но не в новых. Однако это промежуточное изображение воспринимается пользователем как мерцающее . Кроме того, компьютерные мониторы постоянно перерисовывают видимую видеостраницу (традиционно примерно 60 раз в секунду), поэтому даже идеальное обновление может быть видно на мгновение как горизонтальный разделитель между «новым» изображением и неперерисованным «старым» изображением. известный как разрыв .

Программная двойная буферизация

[ редактировать ]

Программная реализация двойной буферизации позволяет всем операциям рисования сохранять свои результаты в некоторой области системной оперативной памяти ; любую такую ​​область часто называют «задним буфером». Когда все операции рисования считаются завершенными, весь регион (или только измененная часть) копируется в видеоОЗУ ( «передний буфер»); лучом монитора это копирование обычно синхронизируется с растровым , чтобы избежать разрывов. Программные реализации двойной буферизации обязательно требуют больше памяти и времени ЦП, чем одинарная буферизация, из-за системной памяти, выделенной для заднего буфера, времени операции копирования и времени ожидания синхронизации.

Компоновочные оконные менеджеры часто сочетают операцию «копирования» с « композицией », используемой для позиционирования окон, их преобразования с помощью эффектов масштабирования или деформации и создания прозрачных частей. Таким образом, «передний буфер» может содержать только составное изображение, видимое на экране, в то время как для каждого окна, содержащего некомпозитное изображение всего содержимого окна, существует другой «задний буфер».

Перелистывание страниц

[ редактировать ]

В методе переворота страницы вместо копирования данных можно отображать оба буфера. В любой момент времени один буфер активно отображается на мониторе, а другой, фоновый буфер, отрисовывается. Когда фоновый буфер заполнен, их роли меняются. Переворот страницы обычно выполняется путем изменения аппаратного регистра в контроллере видеодисплея — значения указателя на начало данных отображения в видеопамяти.

Переворот страниц происходит намного быстрее, чем копирование данных, и может гарантировать, что разрыв не будет виден, пока страницы переключаются во время интервала вертикального гашения монитора — периода пустого изображения, когда видеоданные не прорисовываются. Активный и видимый в данный момент буфер называется передним буфером , а фоновая страница называется задним буфером .

Тройная буферизация

[ редактировать ]

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

При тройной буферизации программа имеет два задних буфера и может сразу начать рисовать в том, который не участвует в таком копировании. Третий буфер, передний буфер, считывается видеокартой для вывода изображения на монитор. После отправки изображения на монитор передний буфер переворачивается (или копируется) с задним буфером, содержащим самое последнее полное изображение. Поскольку один из задних буферов всегда заполнен, видеокарте никогда не приходится ждать завершения работы программного обеспечения. Следовательно, программное обеспечение и видеокарта полностью независимы и могут работать в своем собственном темпе. Наконец, отображаемое изображение было запущено без ожидания синхронизации и, следовательно, с минимальной задержкой. [1]

Поскольку программный алгоритм не опрашивает графическое оборудование на предмет событий обновления монитора, алгоритм может непрерывно отрисовывать дополнительные кадры с такой скоростью, с которой оборудование может их визуализировать. Для кадров, которые завершаются намного быстрее, чем интервал между обновлениями, можно несколько раз заменить кадры заднего буфера более новыми итерациями перед копированием. Это означает, что в задний буфер могут быть записаны кадры, которые вообще никогда не используются, прежде чем они будут перезаписаны последующими кадрами. Nvidia реализовала этот метод под названием «Быстрая синхронизация». [2]

Альтернативный метод, иногда называемый тройной буферизацией, представляет собой цепочку обмена длиной в три буфера. После того, как программа нарисовала оба обратных буфера, она ждет, пока первый из них не появится на экране, прежде чем нарисовать еще один задний буфер (т. е. это очередь длиной в 3 человека : первый вошел, первый ушел ). Большинство игр для Windows, похоже, используют этот метод при включении тройной буферизации. [ нужна ссылка ]

Четверная буферизация

[ редактировать ]

Термин «четверная буферизация» означает использование двойной буферизации для каждого изображения левого и правого глаза в стереоскопических реализациях, то есть всего четыре буфера (если бы использовалась тройная буферизация, тогда было бы шесть буферов). Команда замены или копирования буфера обычно применяется к обеим парам одновременно, поэтому ни один глаз не видит более старое изображение, чем другой глаз.

Четверная буферизация требует специальной поддержки в драйверах видеокарты, которая отключена для большинства потребительских карт. Его поддерживают серии AMD Radeon HD 6000 и новее. [3]

3D standards like OpenGL [4] и Direct3D поддерживает четырехкратную буферизацию.

Двойная буферизация для DMA

[ редактировать ]

Термин «двойная буферизация» используется для копирования данных между двумя буферами для передачи с прямым доступом к памяти (DMA) не для повышения производительности, а для удовлетворения конкретных требований к адресации устройства (особенно 32-битных устройств в системах с более широкой адресацией, обеспечиваемой через физический интерфейс). Расширение адреса ). [5] DOS и Windows Драйверы устройств — это место, где, скорее всего, будет использоваться термин «двойная буферизация». Исходный код Linux и BSD называет эти «буферы отражения». [6]

Некоторые программисты пытаются избежать такого рода двойной буферизации с помощью методов нулевого копирования .

Другое использование

[ редактировать ]

Двойная буферизация также используется как метод облегчения чересстрочной развертки или деинтерлейсинга видеосигналов.

См. также

[ редактировать ]
  1. ^ «Тройная буферизация: почему нам это нравится» . АнандТех. 26 июня 2009 года . Проверено 16 июля 2009 г.
  2. ^ Смит, Райан. «Обзор NVIDIA GeForce GTX 1080 и GTX 1070 Founders Edition: начало поколения FinFET» . Проверено 1 августа 2017 г.
  3. ^ Сообщество AMD [ мертвая ссылка ]
  4. ^ «Спецификация OpenGL 3.0, глава 4» (PDF) .
  5. ^ «Расширение физического адреса — память PAE и Windows» . Центр разработки оборудования Microsoft Windows. 2005 . Проверено 7 апреля 2008 г.
  6. ^ Горман, Мел. «Понимание диспетчера виртуальной памяти Linux, буферы отказов 10.4» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fb7062e0b4a56850e4742b3c987aecea__1716169740
URL1:https://arc.ask3.ru/arc/aa/fb/ea/fb7062e0b4a56850e4742b3c987aecea.html
Заголовок, (Title) документа по адресу, URL1:
Multiple buffering - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)