Как мой драйвер экрана обрабатывает так много данных?


61

Я просто сделал несколько быстрых расчетов:

На моем MacBook у меня разрешение 2560x1440, умноженное на 24 бита для цветов, мы получаем 11,05 МБ для одного изображения или 663 МБ в секунду при 60 кадрах в секунду .

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

Пожалуйста, объясните, если мои расчеты неверны и как эти данные переносятся с моей видеокарты на мой экран? Насколько широки шины между моей видеокартой и экраном? Возможно, объясните в двух словах, как дисплей хранит пиксели? Сдвиговые регистры? Cache?


7
"Может быть, в двух словах объяснить, как дисплей хранит пиксели?" Дисплей фактически не хранит пиксельные данные, все это обрабатывается ОЗУ на графической карте (или системной ОЗУ для встроенной графики). ОЗУ легко имеет пропускную способность несколько ГБ / с. Кадры отправляются на дисплей по протоколу, поэтому данные доступны в том виде, в каком они необходимы для отображения.
ks0ze

3
Почему вы думаете, что есть сжатие? Как вы думаете, что происходит, когда данные не сжимаются? Как вы думаете, дисплей отстает?
Мердад

3
@Aresloom: Ах, я вижу. Сжатие с потерями будет одним из способов, да. :) Я думал, что вы думаете о без потерь!
Мердад

2
@ ks0ze Некоторые новые панели хранят последний экран, который они отправили. Кэширование там потребляет меньше энергии, чем графический процессор, выкачивающий статическое изображение 60 раз в секунду. anandtech.com/show/7208/understanding-panel-self-refresh
Дан Нили

2
Современные дисплеи ноутбуков все еще используют LVDS? Полдюжины лет назад компании, выпускающие графические процессоры, планировали поэтапно отказаться от него одновременно с VGA (что не соответствует собственному выходу нынешнего поколения графических процессоров) в пользу встроенного дисплея.
Дэн Нили

Ответы:


69

Ваши расчеты верны по сути. Для сигнала 1440p60 Гц скорость передачи данных составляет 5,8 Гбит / с, если учесть также время гашения (невидимая граница пикселя на выходе изображения).

Для HDMI / DVI используется кодировка 10 / 8b, что фактически означает, что, хотя, скажем, у вас есть 24-битные данные цвета на пиксель, фактически 30-битная отправляется, поскольку данные кодируются и добавляются контрольные слова протокола. Сжатие вообще не производится, исходные данные отправляются, поэтому вам нужно 7,25 Гбит / с пропускной способности.

Снова глядя на HDMI / DVI. Он использует стандарт сигнализации TDMS для передачи данных. Стандарт HDMI V1.2 требует максимум 4,9 Гбит / с для Single-Link (3 линии последовательной передачи данных + 1 тактовая линия) или, в случае Dual-Link DVI, максимум 9,8 Гбит / с (6 последовательных линий передачи данных, я думаю) ). Таким образом, пропускной способности более чем достаточно для 1440p60 через Dual-Link DVI, но не через HDMI V1.2.

В стандарте HDMI V1.3 (большинство устройств фактически пропускают до V1.4a, который имеет ту же полосу пропускания, что и 1.3), полоса пропускания была удвоена до примерно 10 Гбит / с, что будет поддерживать 1440p60, а также достаточно пропускной способности для UHD на частоте 30 Гц (2160p30).

В качестве другого примера DisplayPort имеет 4 последовательных потока данных, каждый из которых (в V1.1) имеет пропускную способность 2,16 Гбит / с на поток (с учетом кодирования), поэтому с помощью ссылки V1.1 можно легко выполнить 1440p60 со всеми 4 потоками. Они также выпустили новый стандарт, V1.2, который удваивает его до 4,32 Гбит / с с учетом UHD @ 60 Гц. Есть еще более новая версия, которую они продвинули еще дальше до 6,4 Гбит / с .


Изначально эти цифры звучат огромно, но на самом деле не так много, если учесть USB 3.0. Он был выпущен со скоростью передачи данных 5 Гбит / с по одному кабелю (фактически два, один для TX, один для RX, но я отвлекся). PCIe, который в настоящее время используется вашей видеокартой для внутреннего использования, работает на скорости до 8 Гбит / с по одной дифференциальной паре, поэтому неудивительно, что внешние интерфейсы данных догоняют.


Но остается вопрос, как это сделать? Когда вы думаете о VGA, он состоит из отдельных проводов для данных R, G и B, которые отправляются в аналоговом формате. Аналог , как мы знаем, очень чувствительны к шуму, и пропускная способность ЦАП / АЦП также ограничена, так что массово ограничивает то , что вы можете протолкнуть их (сказав , что вы можете едва сделать 1440p60Hz через VGA , если вам повезет).

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

Кроме того, появление дифференциальных стандартов для односторонних кабелей значительно помогает, поскольку теперь вы сравниваете значение между двумя проводами (+ ve разность = 1, -ve разница = 0), а не сравниваете один провод с некоторым порогом. Это означает, что затухание представляет меньшую проблему, потому что оно одинаково влияет на оба провода и ослабляет до напряжения средней точки - «глаз» (разность напряжений) становится меньше, но вы все равно можете сказать, является ли оно + ve или -ve даже если это только 100 мВ или меньше. Несимметричные сигналы, когда сигнал ослабевает, он может упасть ниже вашего порога и стать неразличимым, даже если он все еще имеет амплитуду 1 В или более.

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


TL; DR Данные отправляются на полной битовой скорости, которую вы рассчитали (несколько Гбит / с), без сжатия. Современные методы сигнализации сериализованных цифровых линий связи по дифференциальным парам делают это возможным.


Кроме того, я думаю, что некоторые дисплеи HDMI использовали 2 канала HDMI 1.2v, чтобы получить изображение, эффективно разделив экран на 2. Это дало бы суммарную полосу пропускания, по существу, 9,8 Гбит / с.
Исмаэль Мигель

5
@Aresloom 5 ГГц - это точка, в которой практически все процессоры начинают плавиться из-за большого количества транзисторов, одновременно переключающихся и генерирующих огромное количество тепла. Это не значит, что 5 ГГц - это самые высокие тактовые частоты для всего , это сводится к нагреву (и какой материал вы используете - кремний не всегда лучший). Лучший пример, который я могу придумать, - это Keysight Infinnium DSAX96204Q, в котором на каждом из четырех внешних интерфейсов имеется пробоотборник фосфида индия с частотой 80 ГГц! Но в этом семплере всего пара десятков транзисторов, и он потребляет несколько ватт (современные процессоры имеют миллиарды )
Сэм

4
@Aresloom 340 МГц - это тактовая частота, а скорость передачи данных сериализуется так, что (в TDMS, например) 10 бит отправляются по кабелю в каждом тактовом цикле - так что тактовая частота 340 МГц даст 3,4 Гбит / с. Это только кабели и (де) сериализация (SERDES) оборудования на периферии видео ИС, которые работают на этих последовательных скоростях передачи данных. После аппаратного обеспечения SERDES внутренняя параллельная шина снова работает с пониженной тактовой частотой. Блоки SERDES могут работать очень быстро - PCIe составляет 8 Гбит / с на линию, поэтому блоки SERDES работают на частоте 4 ГГц (используя оба тактовых фронта для битов - DDR).
Том Карпентер

1
8b / 10b улучшает отклонение ошибок, потому что легче обнаружить переходы, чем состояния в быстрых сигналах. Эта кодировка гарантирует, что не будет слишком длинных последовательных единиц или нулей.
pjc50

1
@curiousdannii Это интересный цикл, не так ли? Сначала мы начали с серийного (например, UART), который был слишком медленным (скажем, максимум 115 кбит / с). Затем мы перешли на параллельные шины, такие как IDE, которые работали на частоте около 66 МГц при 16 битах, то есть 1 Гбит / с или около того. Затем мы вернулись к серийному, потому что оказалось, что мы можем очень быстро ездить на дифференциальных автобусах. Но теперь последовательная передача снова не достаточно быстрая, поэтому мы идем с неким параллельным последовательным соединением - множественные полосы отдельных последовательных шин, которые могут быть по существу обработаны полностью отдельно, и затем любой перекос между полосами исправляется с помощью FIFO.
Том Карпентер

19

Современные компьютеры удивительно быстрые. Люди с удовольствием загрузят видео в формате Full HD с частотой 30 кадров в секунду, не осознавая, что это включает в себя миллиарды арифметических операций в секунду. Геймеры имеют тенденцию быть немного более осведомленными об этом; GTX 1060 даст вам 4,4 TFLOPS ( триллион операций с плавающей запятой в секунду).

Пожалуйста, объясните, если мои расчеты неверны и как эти данные переносятся с моей видеокарты на мой экран?

Насколько широки шины между моей видеокартой и экраном?

Другой ответ касается много гигабитной природы HDMI, DisplayLink и т. Д.

Возможно, объясните в двух словах, как дисплей хранит пиксели? Сдвиговые регистры? Cache?

Сам дисплей, теоретически, не хранит никаких данных изображения.

(Некоторые дисплеи, особенно телевизоры, хранят один или два кадра для обработки изображений. Это увеличивает задержку и непопулярно среди геймеров.)

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

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

Декодирование видео обычно дается и на специальное оборудование, особенно H.264.


11

Связь между видеокартой и ЖК-панелью осуществляется по нескольким высокоскоростным дифференциальным парам с использованием сигнализации TMDS , обычно называемой «дорожками». Обычно используются четыре полосы, поэтому можно сказать, что шина имеет 4 бита. Для более подробной информации есть ответ на обмен стека .

Каждая модель ЖК-панели обычно изготавливается с несколькими вариантами интерфейса, поэтому необходимо соблюдать осторожность и смотреть на суффиксы при попытке заменить сломанную панель. Большинство современных цифровых каналов (HDMI 1.4) имеют пропускную способность 10,2 Гбит / с или всего 2,5 Гбит / с на линию. В ваших расчетах (663 Мбит / с) он составляет 1,2 Гбит / с на линию (при условии 4 полосы), что не так уж много (например, SATA3 имеет 6 Гбит / с).

ДОПОЛНЕНИЕ на ЖК-панели. ЖК-дисплей с активной матрицей фактически пытается сохранить изображение кадра (данные пикселей) в конденсаторах, связанных с «витыми нематическими ячейками» (которые управляют поляризацией пленки). Проблема заключается в том, что размер аналоговых колпачков памяти должен быть компромиссом между временем хранения и скоростью переключения пикселей. Таким образом, его нельзя сделать большим, он быстро теряет накопленный потенциал и поэтому требует периодического обновления . Каждая ячейка пикселя связана с линиями данных и адресов через транзистор («активный» элемент), см. Эту статью Tomshardware . Драйвер-контроллер LCD мультиплексирует строки данных и адресов построчно, сохраняя отображаемое изображение. Само изображение хранится в буфере кадров (RAM) внутри графического контроллера.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.