Я спробую вияснити "вуду" за всім цим, пояснивши, як працювало старе обладнання. Сучасні графічні процесори не працюють так, але вони імітують інтерфейс CPU-графічної карти.
тл; д-р
Графічні чіпи / картки у 80-х та на початку 90-х мали надзвичайно швидко виробляти вихід (відносно тактової частоти), щоб вони не виконували вказівки, а мали фіксовану схему. Вони просто висмоктували дані з оперативної пам’яті, коли вони йшли, тож процесору просто потрібно було скинути дані в оперативну пам’ять в потрібному місці, а графічний чіп забрав би їх і викинув на екран. Процесор може також встановити різні змінні конфігурації на графічному чіпі.
Деталі:
У 80-х роках домашні комп'ютери мали справді «німий» графічний чіп, який мав декілька фіксованих форм поведінки. Це матиме найбільше сенс, якщо я пройду трубопровід назад.
CRT-монітори
Цим моніторам потрібні були аналогові входи. Іншими словами, більша напруга = яскравіший вихід. Кольорові монітори мали 3 канали (червоний, зелений та синій (або, наприклад, YUV або YIQ ) ). Ці напруги регулювали силу електронного променя. Прості речі.
CRT-монітори буквально використовували електромагніти для відхилення пучка електронів зліва направо, потім знову запускайте трохи нижче та йдіть ліворуч праворуч тощо, зверху вниз. Потім поверніться до верху і повторіть.
ЦАП
Графічні мікросхеми мали перетворювач "цифровий в аналоговий" (дуже поширений електричний компонент ). Це перетворювало цифрові значення (наприклад, 2, 4 або 8 біт) у напруги, які могли б подаватися на монітор.
Сканування
Графічні мікросхеми повинні були «йти в ногу» з пучком електронів, надсилаючи потрібне значення в ЦАП, щоб він міг виводити відповідну напругу в потрібний час. (Для цього використовувались годинники, в які я не заходжу.) Тут не було часу виконувати інструкції. Все було провідним і займало невелику, фіксовану кількість циклів годин.
Режими відео
Ранні чіпи були не дуже швидкими і мали обмежену оперативну пам'ять. Через це вони мали тенденцію дозволити вибирати різні режими та інші параметри конфігурації, наприклад, колір тла, вибір шрифту, місце розташування та розмір курсору, вибір палітри та спрайт. Більшість пропонували режим "тільки для символів" з високою роздільною здатністю та режими "піксель на піксель" з меншою роздільною здатністю.
Три важливих режиму VGA:
- 16 (кольоровий) кольоровий 80х25 текстовий режим (це по суті так виглядає екран завантаження BIOS)
- 16 кольоровий режим високої роздільної здатності 640x480
- 256-кольоровий кольоровий режим 320x200
Живопис пікселів
Дуже приблизно, залежно від графічної системи, конвеєр виглядає приблизно так:
Поточне місцезнаходження пікселів ⇒ Дані символу / шрифту / спрайта / пікселя / конфігураційних даних values Значення пікселів ⇒ Палітра ⇒ ЦАП
Це той другий крок, який потрібно прочитати з декількох локацій ОЗУ. Наприклад, у текстовому режимі шукатиметься 1-байтний символ. Це сформувало б індекс у таблиці шрифтів. Трохи було б поглянуто на цю таблицю, вказуючи на те, чи повинен цей піксель бути кольором переднього плану чи фоном. Третій байт був би отриманий, щоб отримати цей колір переднього плану / фону. Загалом 3 байти, прочитані з оперативної пам'яті.
Але цей "потік" - це набір простих фіксованих схем, які розташовані точно так само, ну, щойно описаний потік.
Інтерфейс шини пам'яті
Процесорні процесори Intel мають цю дратівливу спадщину, яку називають шиною IO, але це не важливо, тому я буду робити вигляд, що її немає.
Процесори отримують доступ до оперативної пам’яті, транслюючи запит READ або WRITE та адресу на шині пам'яті. Хоча більшість дійсних адрес отримує відповідь з оперативної пам’яті, натомість певні діапазони обробляються пристроями . Наприклад, ЧИТАННЯ з певної адреси може дати вам інформацію про натискання клавіш на клавіатурі.
Записавши в праві частини "графічного діапазону", ви можете записувати як вміст екрану, так і встановлювати параметри конфігурації графічної карти. "Німий" графічний чіп не виконує жодних інструкцій. Він просто продовжує розгортатись, маючи кілька байтів, що протікають по його ланцюгам і виводять напруги.
З VGA на графічній карті фактично є оперативна пам'ять , оскільки ви можете налаштувати відеокарту на попередньо оброблені дані до того, як вона запишеться до графічної оперативної пам’яті, щоб підвищити продуктивність у деяких ситуаціях.
VESA
Графічні карти після VGA пропонували більш високу роздільну здатність і хорошу глибину кольорів, але працювали з подібними принципами. Багато сучасних графічних карт все ще забезпечують сумісність із цим, щоб забезпечити більш високу роздільну здатність під час завантаження. Але VGA - це "бездоганний", який наслідує практично кожна карта.