Як мій драйвер екрана обробляє стільки даних?


61

Я просто зробив кілька швидких розрахунків:

На моєму MacBook у мене роздільна здатність 2560x1440, помножена на 24 біт для кольорів, ми отримуємо 11,05 МБ для однієї картини або 663 МБ в секунду при 60 кадрів в секунду .

Я думаю, що є певне стиснення, але, наприклад, коли я рухаюсь трьома пальцями над своєю сенсорною панеллю, це зовсім випадково, що відбувається далі на екрані і майже кожен піксель змінюється. Те саме, що майже при будь-якій іншій взаємодії.

Поясніть, будь ласка, чи мої розрахунки невірні, і як ці дані передаються з моєї відеокарти на мій екран? Яка ширина шин між моєю графічною карткою та екраном? Можливо, поясніть у двох словах, як дисплей зберігає пікселі? Зсувні регістри? Кеш?


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

3
Як ви думаєте, чому відбувається стиснення? Як ви думаєте, що відбувається, коли дані не є стислими? Як ви вважаєте, дисплей відстає?
Мехрдад

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

2
@ ks0ze деякі нові панелі зберігають останній екран, який вони надіслали. Кешування його там використовує менше енергії, ніж GPU викачує статичне зображення 60 разів на секунду. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely

2
Чи користуються сучасні дисплеї ноутбуків LVDS? Півдесятка років тому компанії GPU планували припинити його одночасно з VGA (що відійшов від поточного покоління GPU) на користь вбудованого дисплея.
Dan Neely

Відповіді:


70

Ваші розрахунки по суті правильні. Для сигналу 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 через DVI-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 навіть якщо він лише 100mV або менше. Одиночні сигнали після ослаблення сигналу можуть опуститися нижче порогового значення і стати нерозрізненими, навіть якщо амплітуда все ще має 1 В або більше.

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


TL; DR Дані надсилаються з розрахованою вами повною швидкістю передачі бітів (декілька Gbps), без стиснення. Сучасні методи сигналізації серіалізованих цифрових зв’язків над різними парами роблять це можливим.


Крім того, я думаю, що деякі дисплеї 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

Сучасні комп’ютери дивно швидкі. Люди із задоволенням завантажуватимуть відео в повному форматі 30 кадрів в секунду, не розуміючи, що це включає мільярди арифметичних операцій в секунду. Геймери, як правило, трохи більше усвідомлюють це; GTX 1060 дасть вам 4.4 TFLOPS ( трильйон операцій з плаваючою точкою в секунду).

Поясніть, будь ласка, чи мої розрахунки невірні, і як ці дані передаються з моєї відеокарти на мій екран?

Яка ширина шин між моєю графічною карткою та екраном?

Інша відповідь стосується багатогігабітного характеру HDMI, DisplayLink тощо.

Можливо, поясніть у двох словах, як дисплей зберігає пікселі? Зсувні регістри? Кеш?

Сам дисплей теоретично не зберігає даних про зображення.

(Деякі дисплеї, особливо телевізори, зберігають кадр або два, щоб застосувати обробку зображень. Це збільшує затримку і є непопулярним для геймерів.)

Графічна підсистема комп'ютера зберігає пікселі в звичайній DRAM. Зазвичай він не перемальовує все з процесора кожного кадру, але передає частину функціоналу виділеним підсистемам та композитору . Композитор дозволяє, наприклад, кожне вікно на робочому столі зберігати як окремий набір пікселів, які потім можна переміщувати, прокручувати або масштабувати за допомогою спеціального обладнання. Це стає цілком очевидним із прокруткою на мобільних пристроях - ви можете пройти короткий шлях, поки не закінчите попередньо обчислені пікселі "поза екраном", і програмне забезпечення не повинно зупинитися та подати ще трохи в буфери композитора.

Ігри є перемальовується кожен кадр, і є багато літератури про те , як будується сцена вгору. Це вбудовується в кадр буфер на графічній карті, який потім передається, а наступний кадр малюється в інший буфер.

Декодування відео зазвичай надається і спеціальному апаратному забезпеченню, особливо H.264.


11

Зв'язок між карткою дисплея та РК-панеллю здійснюється через декілька швидкодіючих диференціальних пар із використанням сигналізації TMDS , яку зазвичай називають "смугами". Зазвичай використовують чотири смуги, тому можна сказати, що шина 4-бітна. Для отримання детальної інформації є відповідь про зміну стек .

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

ДОПОМОГА на РК-панелях. РК-дисплей з активною матрицею насправді намагається зберігати зображення кадру (піксельні дані) в конденсаторах, пов’язаних із "Скрученими нематичними клітинками" (тим, що контролює поляризацію плівки). Проблема полягає в тому, що розмір аналогових кришок зберігання повинен бути компромісним між часом зберігання та швидкістю піксельної комутації. Тому його неможливо зробити великим, швидко втрачає потенціал, що зберігається, а тому потребує періодичного оновлення . Кожна піксельна комірка пов'язана з даними та адресними лініями через транзистор ("активний" елемент), дивіться цю статтю Tomshardware . РК-драйвер-контролер муліплексує дані та адреси адреси по черзі, таким чином підтримуючи відображене зображення. Саме зображення зберігається в буфері кадру (ОЗУ) всередині графічного контролера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.