stringtranslate.com

Блиттер

Блиттер — это схема, иногда в виде сопроцессора или логического блока микропроцессора , предназначенная для быстрого перемещения и модификации данных в памяти компьютера . Блиттер может копировать большие объемы данных из одной области памяти в другую относительно быстро и параллельно с ЦП , освобождая при этом более сложные возможности ЦП для других операций. Типичное использование блиттера — перемещение растрового изображения , например окон и значков в графическом пользовательском интерфейсе или изображений и фона в 2D-видеоигре. Название происходит от операции побитовой печати Xerox Alto 1973 года , [1] что означает передачу битовых блоков. [2] Операция блитирования — это больше, чем просто копирование памяти, поскольку она может включать в себя данные, которые не выровнены по байтам (отсюда и бит в бите blit ), обработку прозрачных пикселей (пикселей, которые не должны перезаписывать место назначения) и различные способы комбинирования данные источника и назначения.

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

История

На компьютерах без аппаратного ускорения растровой графики , к которым относятся большинство домашних компьютеров 1970-х и 1980-х годов и совместимых с IBM PC до середины 1990-х годов, буфер кадра обычно хранится в памяти, доступной процессору. Рисование осуществляется путем обновления буфера кадра с помощью программного обеспечения. Для базовых графических процедур, таких как объединение меньшего изображения в большее (например, для видеоигры) или рисование заполненного прямоугольника, необходимо манипулировать большими объемами памяти, и много циклов тратится на выборку и декодирование коротких циклов загрузки/выгрузки. инструкции по хранению. Для процессоров без кэшей требования к шине для инструкций так же важны, как и для данных. Чтобы уменьшить размер буфера кадра, один байт может не обязательно соответствовать пикселю, а содержать 8 однобитных пикселей, 4 двухбитных пикселя или пару 4-битных пикселей. Манипулирование упакованными пикселями требует дополнительных операций сдвига и маскировки на ЦП.

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

Блиттеры в компьютерах и видеоиграх

1973: Xerox Alto , откуда и возник термин « блит-бит », имеет инструкцию передачи битовых блоков, реализованную в микрокоде , что делает ее намного быстрее, чем та же операция, написанная на ЦП. [1] Микрокод был реализован Дэном Ингаллсом . [1]

1982: Помимо рисования примитивов формы, процессор видеодисплея NEC µPD7220 может передавать прямоугольные растровые изображения в память дисплея посредством прямого доступа к памяти и заполнять прямоугольные части экрана. [3] [4]

1982: Аркадная видеоигра Robotron: 2084 от Williams Electronics включает в себя два блиттер-чипа, которые позволяют игре иметь до 80 одновременно движущихся объектов. [5] Производительность была измерена примерно на уровне 910 КБ/сек. [5] Блиттер работает с 4-битными (16 цветов) пикселями, где цвет 0 является прозрачным, что позволяет создавать непрямоугольные формы. [6] Уильямс использовал то же оборудование в других играх того периода, включая Sinistar и Joust . [6]

1984: Персональный компьютер Mindset , совместимый с MS -DOS , содержит специальный чип СБИС для перемещения прямоугольных участков растрового изображения. Аппаратное обеспечение обеспечивает прозрачность и восемь режимов объединения исходных и целевых данных. [7] Утверждалось, что Mindset имел графику в 50 раз быстрее, чем компьютеры, совместимые с IBM PC того времени, [8] но система не имела успеха.

1985: Один из сопроцессоров персонального компьютера Amiga — блиттер. Первой патентной заявкой США, в которой использовался термин « блиттер» , была «Персональное компьютерное устройство для блочной передачи данных растрового изображения», переданная компании Commodore-Amiga, Inc. [9] . Блиттер выполняет произвольную логическую операцию над тремя битовыми векторами размера. 16:

destination := op(source A, source B, source C)

1986: TMS34010 — 32-битный процессор общего назначения со встроенными инструкциями, включая PIXBLT(Pixel Block Transfer), для управления растровыми данными. Он оптимизирован для случаев, которые потребовали бы дополнительной обработки при реализации в программном обеспечении, таких как обработка прозрачных пикселей, работа с данными, не выровненными по байтам, и преобразование между битовыми глубинами. PIXBLTпредоставляет 22 способа объединения исходных и целевых данных. [10] TMS34010 служит как процессором, так и графическим процессором для ряда аркадных игр, начиная с 1988 года с Narc , включая Hard Drivin' , Smash TV , Mortal Kombat и NBA Jam . [11] Он также использовался в платах с графическими ускорителями в 1990-е годы.

1986: Intel 82786 — программируемый графический процессор с BIT_BLTинструкцией для перемещения прямоугольных участков растровых изображений. [12]

1987: Адаптер дисплея IBM 8514/A , представленный вместе с компьютерами IBM Personal System/2 в апреле 1987 года, включает в себя оборудование для передачи битовых блоков. [13]

Чип Atari ST BLiTTER

1987: Atari Mega ST 2 поставляется с блиттер-чипом. [14] Официально называемый «Процессор передачи битовых блоков Atari ST», стилизованный под BLiTTER, он предоставляет 16 вариантов объединения исходных и целевых данных. [15] Блиттер поддерживается на большинстве последующих машин ST.

1989: Недолговечная рабочая станция Atari Transputer Workstation содержит оборудование для блиттера как часть видеосистемы Blossom (на базе Mega ST). [16]

1989: Цветная портативная игровая система Atari Lynx имеет специальный блиттер с эффектами масштабирования и искажения.

1993: Игровая консоль Atari Jaguar оснащена блиттерным оборудованием как часть специального чипа «Том». [17]

1996: Группа VESA представила стандартизированный способ доступа к таким функциям, как аппаратная передача битовых блоков с помощью функций VBE/ускорителя (VBE/AF) на компьютерах, совместимых с IBM PC.

Операция

Спрайты (слева) и связанные маски

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

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

Другой подход в некоторых системах заключается в использовании второго изображения с размером 1 бит на пиксель в качестве маски , указывающей, какие пиксели следует передать, а какие оставить нетронутыми. Маска действует как трафарет . Логическая операция:

destination := (background AND NOT mask) OR sprite

Другие подходы

Аппаратные спрайты представляют собой небольшие растровые изображения, которые можно позиционировать независимо и на лету комбинировать с фоном с помощью видеочипа. Буфер кадра не изменяется. [18] Обратной стороной спрайтов является ограничение перемещения графики на строку сканирования, которое может варьироваться от трех ( Atari 2600 ) до восьми ( Commodore 64 и 8-битное семейство Atari ) и значительно выше для 16-битных консолей и аркадного оборудования ( Neo Geo может отображать 96 спрайтов в строке), а также невозможность обновления постоянного растрового изображения (что делает их непригодными для общего ускорения графического интерфейса рабочего стола).

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

Рекомендации

  1. ^ abc Ширрифф, Кен. «Восстановление Xerox Alto YCombinator, день 5: трассировка микрокода с помощью логического анализатора». Блог Кена Ширриффа .
  2. ^ «Функция BitBlt». Сеть разработчиков Windows . Майкрософт . Проверено 2 октября 2016 г.
  3. ^ Педди, Джон. «Известные графические чипы: контроллер графического дисплея NEC µPD7220». компьютер.орг .
  4. ^ «Руководство пользователя: NEC µPD7220/7220A» (PDF) . НЭК Электроникс. Декабрь 1985 г. Архивировано из оригинала (PDF) 16 июня 2012 г.
  5. ^ Аб Вольф, Марк Дж.П. (июнь 2012 г.). Перед крахом: ранняя история видеоигр. Издательство Государственного университета Уэйна. п. 185. ИСБН 9780814334508.
  6. ^ ab Риддл, Шон. «Блиттерская информация».
  7. ^ Уильямс, Грегг (апрель 1984 г.). «Предварительный просмотр продукта: персональный компьютер Mindset». Журнал Байт . 9 (4): 278–280.
  8. ^ Андерсон, Джон Дж. (февраль 1985 г.). «Mindset Micro: выход за рамки возможного, или что случилось с инновациями?». Творческие вычисления . 11 (2):50.
  9. ^ «Патент США 4874164 «Персональный компьютер для блочной передачи данных растрового изображения»» .[ постоянная мертвая ссылка ]
  10. ^ Киллебрю младший, Каррелл Р. (декабрь 1986 г.). «Процессор графической системы TMS34010». Байт . Том. 11, нет. 13. с. 204.
  11. ^ «Список игр, работающих на процессоре TMS34010» . mamedb.com . Архивировано из оригинала 4 марта 2016 г. Проверено 15 мая 2016 г.
  12. ^ 82786 Руководство пользователя графического сопроцессора. Интел. 1988. с. 2-29.
  13. ^ Некасек, Майкл. «Графический ускоритель 8514/A». Музей OS/2 .
  14. ^ "Атари Мега СТ 2" . Центр истории вычислений .
  15. ^ «Руководство пользователя процессора передачи битовых блоков Atari ST» . archive.org . Корпорация Атари. 17 июня 1987 года.
  16. ^ Розенталь, маршал М. (ноябрь 1989 г.). «Транспьютерная связь: эксклюзивное интервью с доктором Тимом Кингом из Перигелия». Начинать . 4 (4).
  17. ^ «Техническое справочное руководство Том и Джерри» (PDF) . Февраль 2001. стр. 4–5.
  18. ^ Гаага, Джеймс. «Почему существуют специальные игровые консоли?». Программирование в XXI веке . Архивировано из оригинала 23 апреля 2018 г. Проверено 3 сентября 2019 г.