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

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

В моем MacBook у меня есть разрешение 2560x1440 , умноженное на 24 бит для цветов, которые мы получаем 11.05MB для одного изображения или 663 МБ в секунду при 60 fps .

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

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

61 голос | спросил Felix.C 9 Jam1000000amMon, 09 Jan 2017 01:34:04 +030017 2017, 01:34:04

3 ответа


71

Ваши расчеты правильны по существу. Для сигнала 1440p60Hz вы получаете скорость передачи данных 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.32Gbps /stream , что позволяет использовать UHD @ 60Hz. Есть еще более новая версия, которая еще больше продвинулась на 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 . Данные отправляются с полной скоростью передачи бит (несколько Gbps) без сжатия. Современные методы сигнализации сериализованных цифровых связей над дифференциальными парами делают это возможным.

ответил Tom Carpenter 9 Jam1000000amMon, 09 Jan 2017 02:21:38 +030017 2017, 02:21:38
18

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

  

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

     

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

Еще один ответ затронул многогигабитный характер HDMI, DisplayLink и т. д.

  

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

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

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

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

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

Видеодекодирование обычно предоставляется также выделенному оборудованию, особенно H.264.

ответил pjc50 9 Jpm1000000pmMon, 09 Jan 2017 13:30:00 +030017 2017, 13:30:00
11

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

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

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

ответил Ali Chen 9 Jam1000000amMon, 09 Jan 2017 03:52:54 +030017 2017, 03:52:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132