stringtranslate.com

Кадровый буфер

Фреймбуфер Sun TGX

Кадровый буфер ( кадровый буфер или иногда кадровое хранилище ) — это часть оперативной памяти (ОЗУ) [1] , содержащая битовую карту , которая управляет видеодисплеем. Это буфер памяти , содержащий данные, представляющие все пиксели в полном видеокадре . [2] Современные видеокарты содержат схему кадрового буфера в своих ядрах. Эта схема преобразует битовую карту в памяти в видеосигнал , который может быть отображен на мониторе компьютера.

В вычислительной технике экранный буфер — это часть компьютерной памяти , используемая компьютерным приложением для представления контента, который будет показан на дисплее компьютера . [3] Экранный буфер также может называться видеобуфером , буфером регенерации или сокращенно буфером регенерации . [4] Экранные буферы следует отличать от видеопамяти . С этой целью также используется термин внеэкранный буфер .

Информация в буфере обычно состоит из значений цвета для каждого пикселя, который будет отображаться на дисплее. Значения цвета обычно хранятся в 1-битном двоичном (монохромном), 4-битном палитровом , 8-битном палитровом, 16-битном высокоцветном и 24-битном истинном цвете . Иногда для сохранения информации о прозрачности пикселей используется дополнительный альфа-канал . Общий объем памяти, необходимый для буфера кадра, зависит от разрешения выходного сигнала и от глубины цвета или размера палитры.

История

Образец памяти на ЭЛТ-трубке SWAC Williams в 1951 году

Исследователи компьютеров [ кто? ] долго обсуждали теоретические преимущества кадрового буфера, но не смогли создать машину с достаточным объемом памяти по экономически целесообразной цене. [ нужна ссылка ] [5] В 1947 году компьютер Manchester Baby использовал трубку Уильямса , позже трубку Уильямса-Килберна, для хранения 1024 бит на электронно-лучевой трубке (ЭЛТ) памяти и отображения на второй ЭЛТ. [6] [7] Другие исследовательские лаборатории изучали эти методы, и в 1950 году лаборатория Линкольна Массачусетского технологического института достигла дисплея 4096. [5]

Цветной сканирующий дисплей был реализован в конце 1960-х годов под названием Brookhaven RAster Display (BRAD), который использовал барабанную память и телевизионный монитор. [8] В 1969 году А. Майкл Нолл из Bell Labs реализовал сканирующий дисплей с кадровым буфером, используя память на магнитных сердечниках . [9] Позднее система Bell Labs была расширена для отображения изображения с глубиной цвета в три бита на стандартном цветном телевизионном мониторе.

В начале 1970-х годов разработка интегральных микросхем памяти MOS ( память металл-оксид-полупроводник ) , в частности микросхем DRAM (динамическая память с произвольным доступом ) высокой плотности с памятью не менее 1 кбайт , впервые сделала практичным создание цифровой системы памяти с кадровыми буферами, способными хранить стандартное видеоизображение. [10] [11] Это привело к разработке системы SuperPaint Ричардом Шупом в Xerox PARC в 1972 году. [10] Шуп смог использовать кадровый буфер SuperPaint для создания ранней цифровой системы видеозахвата. Синхронизируя выходной сигнал с входным сигналом, Шуп смог перезаписать каждый пиксель данных по мере его смещения. Шуп также экспериментировал с изменением выходного сигнала с помощью цветовых таблиц. Эти цветовые таблицы позволили системе SuperPaint воспроизводить широкий спектр цветов за пределами диапазона ограниченных 8-битных данных, которые она содержала. Эта схема позже стала обычным явлением в компьютерных кадровых буферах.  

В 1974 году Evans & Sutherland выпустили первый коммерческий буфер кадра, Picture System, [12] стоимостью около 15 000 долларов. Он был способен создавать разрешения до 512 на 512 пикселей в 8-битной градации серого и стал благом для исследователей графики, у которых не было ресурсов для создания собственного буфера кадра. Нью-Йоркский технологический институт позже создал первую 24-битную цветовую систему, используя три буфера кадра Evans & Sutherland. [13] Каждый буфер кадра был подключен к цветовому выходу RGB (один для красного, один для зеленого и один для синего), с мини-компьютером Digital Equipment Corporation PDP 11/04, управляющим тремя устройствами как одним.

В 1975 году британская компания Quantel выпустила первый коммерческий полноцветный вещательный кадровый буфер Quantel DFS 3000. Впервые он был использован в телевизионной трансляции Олимпийских игр в Монреале 1976 года для создания врезки «картинка в картинке» с горящим олимпийским факелом, в то время как остальная часть изображения показывала бегуна, входящего на стадион.

Быстрое совершенствование технологии интегральных схем позволило многим домашним компьютерам конца 1970-х годов содержать буферы кадров с низкой глубиной цвета. Сегодня почти все компьютеры с графическими возможностями используют буфер кадров для генерации видеосигнала. Компьютеры Amiga , созданные в 1980-х годах, отличались особым вниманием к графической производительности и включали уникальный буфер кадров Hold-And-Modify, способный отображать 4096 цветов.

Фреймбуферы также стали популярными в высокопроизводительных рабочих станциях и игровых платах в течение 1980-х годов. SGI , Sun Microsystems , HP , DEC и IBM выпустили фреймбуферы для своих рабочих станций в этот период. Эти фреймбуферы обычно были гораздо более высокого качества, чем те, что можно было найти в большинстве домашних компьютеров, и регулярно использовались в телевидении, печати, компьютерном моделировании и 3D-графике. Фреймбуферы также использовались Sega для своих высокопроизводительных игровых плат , которые также были более высокого качества, чем на домашних компьютерах.

Режимы отображения

Фреймбуфер Sun cgsix

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

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

Неприятным побочным эффектом этого метода было то, что устройство отображения могло быть выведено за пределы его возможностей. В некоторых случаях это приводило к повреждению оборудования дисплея. [14] Чаще всего это просто производило искаженный и непригодный для использования вывод. Современные ЭЛТ-мониторы решают эту проблему путем введения защитной схемы. Когда режим отображения изменяется, монитор пытается получить блокировку сигнала на новой частоте обновления. Если монитор не может получить блокировку сигнала или если сигнал находится за пределами диапазона его конструктивных ограничений, монитор проигнорирует сигнал буфера кадра и, возможно, представит пользователю сообщение об ошибке.

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

Цветовая палитра

Кадровые буферы традиционно поддерживают широкий спектр цветовых режимов. Из-за расходов на память большинство ранних кадровых буферов использовали 1-битную (2 цвета на пиксель), 2-битную (4 цвета), 4-битную (16 цветов) или 8-битную (256 цветов) глубину цвета. Проблема с такой малой глубиной цвета заключается в том, что полный диапазон цветов не может быть получен. Решением этой проблемы стал индексированный цвет , который добавляет таблицу поиска в кадровый буфер. Каждый цвет, хранящийся в памяти кадрового буфера, действует как цветовой индекс. Таблица поиска служит палитрой с ограниченным количеством различных цветов, в то время как остальные используются как индексная таблица.

Вот типичное индексированное 256-цветное изображение и его собственная палитра (представлена ​​в виде прямоугольника из образцов):

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

Доступ к памяти

Хотя доступ к буферам кадров обычно осуществляется через отображение памяти непосредственно в пространство памяти ЦП, это не единственный метод, с помощью которого к ним можно получить доступ. Буферы кадров широко различаются по методам, используемым для доступа к памяти. Некоторые из наиболее распространенных:

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

Оперативная память на видеокарте

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

Центральный процессор отправляет обновления изображения на видеокарту. Видеопроцессор на карте формирует изображение изображения на экране и сохраняет его в буфере кадра как большой битмап в ОЗУ. Битмап в ОЗУ используется картой для постоянного обновления изображения на экране. [15]

Виртуальные фреймбуферы

Многие системы пытаются эмулировать функцию устройства кадрового буфера, часто по причинам совместимости. Два наиболее распространенных виртуальных кадровых буфера — это устройство кадрового буфера Linux (fbdev) и виртуальный кадровый буфер X ( Xvfb ). Xvfb был добавлен в дистрибутив X Window System, чтобы предоставить метод для запуска X без графического кадрового буфера. Устройство кадрового буфера Linux было разработано для абстрагирования физического метода доступа к базовому кадровому буферу в гарантированную карту памяти, к которой легко получить доступ программам. Это повышает переносимость, поскольку программам не требуется иметь дело с системами, которые имеют несвязные карты памяти или требуют переключения банков .

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

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

Перелистывание страниц стало стандартным приемом, используемым программистами компьютерных игр .

Графические ускорители

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

Ранние ускорители были сосредоточены на улучшении производительности систем 2D GUI . Сохраняя эти возможности 2D, большинство современных ускорителей сосредоточены на создании 3D-изображений в реальном времени. Распространенная конструкция использует графическую библиотеку , такую ​​как OpenGL или Direct3D , которая взаимодействует с графическим драйвером для преобразования полученных команд в инструкции для графического процессора (GPU) ускорителя . GPU использует эти инструкции для вычисления растеризованных результатов, а результаты побитно переносятся в буфер кадра. Затем сигнал буфера кадра создается в сочетании со встроенными устройствами наложения видео (обычно используемыми для создания курсора мыши без изменения данных буфера кадра) и любыми конечными спецэффектами, которые создаются путем изменения выходного сигнала. Примером таких конечных спецэффектов является метод пространственного сглаживания, используемый картами 3dfx Voodoo . Эти карты добавляют небольшое размытие к выходному сигналу, что делает сглаживание растеризованной графики гораздо менее заметным.

В свое время было много производителей графических ускорителей, среди которых: 3dfx Interactive ; ATI ; Hercules ; Trident ; Nvidia ; Radius ; S3 Graphics ; SiS и Silicon Graphics . По состоянию на 2015 год на рынке графических ускорителей для систем на базе x86 доминируют Nvidia (приобрела 3dfx в 2002 году), AMD (которая приобрела ATI в 2006 году) и Intel .

Сравнения

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

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

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

Смотрите также

Ссылки

  1. ^ "Что такое буфер кадра? Определение Webopedia". webopedia.com . Июнь 1998 г.
  2. ^ "Frame Buffer FAQ" . Получено 14 мая 2014 г. .
  3. ^ Мюллер, Дж. (2002). Решения .NET Framework: В поисках утраченного Win32 API. Wiley. стр. 160. ISBN 9780782141344. Получено 21.04.2015 .
  4. ^ "Smart Computing Dictionary Entry - video buffer". Архивировано из оригинала 2012-03-24 . Получено 2015-04-21 .
  5. ^ ab Gaboury, J. (2018-03-01). «Изображение с произвольным доступом: память и история экрана компьютера». Grey Room . 70 (70): 24–53. doi : 10.1162/GREY_a_00233. hdl : 21.11116/0000-0001-FA73-4 . ISSN  1526-3819. S2CID  57565564.
  6. ^ Уильямс, ФК; Килберн, Т. (март 1949). «Система хранения для использования с двоично-цифровыми вычислительными машинами». Труды IEE — Часть III: Радио и коммуникационная техника . 96 (40): 81–. doi :10.1049/pi-3.1949.0018. Архивировано из оригинала 26 апреля 2019 г.
  7. ^ "Kilburn 1947 Report Cover Notes (Digital 60)". curation.cs.manchester.ac.uk . Получено 26.04.2019 .
  8. ^ D. Ophir; S. Rankowitz; BJ Shepherd; RJ Spinrad (июнь 1968 г.), «BRAD: The Brookhave Raster Display», Communications of the ACM , т. 11, № 6, стр. 415–416, doi : 10.1145/363347.363385 , S2CID  11160780
  9. ^ Нолл, А. Майкл (март 1971 г.). «Компьютерная графика со сканированным дисплеем». Сообщения ACM . 14 (3): 145–150. doi : 10.1145/362566.362567 . S2CID  2210619.
  10. ^ ab Richard Shoup (2001). "SuperPaint: ранняя графическая система кадрового буфера" (PDF) . Annals of the History of Computing . IEEE. Архивировано из оригинала (PDF) 2004-06-12.
  11. ^ Goldwasser, SM (июнь 1983). Архитектура компьютера для интерактивного отображения сегментированных изображений. Архитектура компьютера для пространственно распределенных данных. Springer Science & Business Media . стр. 75–94 (81). ISBN 9783642821509.
  12. ^ Picture System (PDF) , Evans & Sutherland , получено 31 декабря 2017 г.
  13. ^ "История графической лаборатории Нью-Йоркского технологического института" . Получено 31 августа 2007 г.
  14. ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html XFree86 Video Timings HOWTO: Перегрузка монитора
  15. ^ "Иллюстрированное руководство по видеокартам". karbosguide.com .

Внешние ссылки