Що саме таке VGA, і в чому різниця між ним та відеокартою?


30

Підручники з розробки операційної системи точно визначають досягнення екранного даних, записуючи безпосередньо на VGA або EGA або Super VGA, але те, що я не отримую - це реальна різниця між записом на фіксовану адресу для відображення та записом на відеокарту безпосередньо, або на борту або знімний? Я просто хочу основного роз'яснення моєї плутанини з цього приводу в моєму питанні

А оскільки це не такий простий випадок із змінними карт, сполучно-інтерфейсних інтерфейсів, шин, архітектур, системи на мікросхемі, вбудованих систем тощо, мені важко знайти спосіб зрозуміти ідею, що стоїть за цією 100% . Чи відрізняються фіксовані адреси від високоякісного GPU до низького рівня бортової? Чому і чому ні?

Це одна з моїх цілей програмування, щоб розмістити ядро ​​і зробити операційну систему, і справді надумана мрія. Нерозуміння термінології не лише перешкоджає мені в деяких сферах, але і робить мене дурним на предмет обладнання.

ДОПОМОГА: Деякі з цих поточних відповідей говорять про використання максимально адресованої пам'яті процесорів у специфіці на 16 біт. Проблема полягає в деяких інших виникаючих питаннях:

1.Що про власну пам’ять картки? Для цього не знадобиться системна оперативна пам’ять для самих екранних даних.

2.Что щодо в режимах вищого розряду? І хіба ви не можете нехтувати BIOS в реальному режимі (x86) і все-таки адресувати пам'ять через AL?

3. Яким чином концепція запису на фіксовану адресу залишатиметься незмінною на графічному процесорі з безліччю регістрів і продуктивністю на або над фактичним мікропроцесором?


Для невеликого історичного контексту ознайомтеся з моєю відповіддю на пов'язане питання: superuser.com/questions/357328/…
Рассел Борогов,

Слід зазначити, що, крім посилань на технологію / протокол дисплейної картки, термін став позначати конкретні електричні стандарти та роздільну здатність дисплея. Важко здогадатися, яке значення застосовується, навіть коли ви бачите терміни "в контексті".
Даніель Р Хікс

Відповіді:


65

Технічно VGA розшифровується як Video Graphics Array - відео стандарт стандарт 640x480, представлений у 1987 році. У той час це було відносно високою роздільною здатністю, особливо для кольорового дисплея.

До введення VGA у нас було кілька інших графічних стандартів, таких як геркулеси, які відображали або текст (80 рядків на 25 символів), або відносну монохромну графіку високої чіткості (720x348 пікселів).

Іншими стандартами на той час були CGA ( Color графічний адаптер ), який також дозволяв до 16 кольорів при роздільній здатності до 640x200 пікселів. Результат цього виглядатиме так:

введіть тут опис зображення

Нарешті, вагомим стандартом для ПК став графічний адаптер Enhanced (EGA), який дозволив роздільну здатність до 640 × 350 із 64 кольорами.

(Я ігнорую стандарти, що не належать до ПК, щоб зробити це відносно коротким. Якщо я почну додавати стандарти Atari або Amiga - до 4096 кольорів на той час! - це буде досить довго.)

Тоді в 1987 році IBM представила комп'ютер PS2. Він мав декілька помітних відмінностей порівняно з попередниками, які включали нові порти для мишей та клавіатур (раніше миші використовували 25-контактний серійний порт або 9-контактний послідовний порт, якщо у вас взагалі була миша); стандартні 3-дюймові накопичувачі та новий графічний адаптер із високою роздільною здатністю та багатьма кольорами.

Цей графічний стандарт отримав назву Video Graphics Array . Для передачі аналогових сигналів на монітор використовувався 3-рядковий 15-контактний роз'єм. Цей роз'єм проіснував до декількох років тому, коли його замінили передові цифрові стандарти, такі як DVI та порт дисплея.

Після VGA

Прогрес не зупинився на стандартах VGA. Незабаром після введення VGA виникли нові стандарти, такі як 800x600 S uper VGA (SVGA), який використовував той самий роз'єм. (У Геркулеса, CGA, EGA і т. Д. Всі були власні роз'єми. Ви не могли підключити монітор CGA до VGA-карти, навіть якщо ви намагалися відобразити досить низьку роздільну здатність).

Відтоді ми перейшли до набагато більш високої роздільної здатності, але найчастіше ім'ям VGA залишається VGA. Навіть якщо правильні назви будуть SVGA, XVGA, UXGA тощо тощо.

введіть тут опис зображення

(Графічна ввічливість Вікіпедії)


Ще одна річ, яку називають "VGA" - це роз'єм DE15, який використовується з оригінальною VGA-карткою. Зазвичай цей синій роз'єм - це не єдиний спосіб передачі аналогових "VGA-сигналів" на монітор, але це найбільш поширений.

Зліва: DB5HD Вправо: альтернативні роз'єми VGA, зазвичай використовуються для кращої якості) введіть тут опис зображення


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


Це залишає писати на VGA

Це відбувається з того, як була розроблена пам'ять на IBM XT. Процесор може отримати доступ до 1 Мбіт (1024 КБ) пам'яті. Нижній 512KiB був зарезервований для оперативної пам’яті, верхній 512 KiB для додаткових карт, ПЗУ тощо.

У цій верхній частині відображено пам'ять VGA-карт. Ви можете безпосередньо писати на ньому, і результат відображатиметься на дисплеї.

Це було використано не лише для VGA, але й для альтернативи того ж покоління.

  G = Графічний режим Відео ОЗУ
  M = Монохромний текстовий режим Відео ОЗУ
  C = кольоровий текстовий режим відео ОЗП
  V = BIOS відео ROM (було б "a" в PS / 2)
  a = ПЗП адаптерної плати та оперативна пам'ять спеціального призначення (вільний простір UMA)
  r = Додатковий BIOS ПЗ PS / 2 для материнської плати (безкоштовна UMA в системах, що не належать до PS / 2)
  R = BIOS материнської плати
  b = Касета IBM BASIC ROM (була б "R" у сумісних сумісних версіях IBM)
  h = Висока область пам'яті (HMA), якщо завантажено HIMEM.SYS.

Звичайна (базова) пам'ять:   
Спочатку 512 Кб (або 8 шматочків по 64 КБ). 

Верхня область пам'яті (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа
0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000: RRRRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

( Джерело карти ASCII).


1
Nit коментар: Це не роз'єм "DB15". Роз'єм DB15 має лише 2 ряди штифтів (як і DB9 та DB25). Роз'єм VGA має 3 ряди штифтів і його часто називають "HD15" (HD для високої щільності порівняно з БД) (хоча деякі запевняють, що "HD15" не є офіційною назвою).
тирса

2
Nit comment # 2: Оригінальний комп'ютер IBM, можливо, був випущений з розділом 512/512, але незабаром він був змінений на розкол 640/384 (про це йдеться у вашій сторінці джерела). Графічна пам’ять починається з позначки 640К (шістнадцятковий 0A0000). Я не думаю, що ніхто ніколи насправді не усвідомлював "кордон 512K" у спосіб, коли "межа 640K", нарешті, стала відомою проблемою.
Гелліон

2
@sawdust: HD15, безумовно, не є офіційною назвою (але так само добре, як і сьогодні). У Dx-nnсімействі з'єднувачів x- це розмір оболонки, nnкількість штифтів. Оболонка B такого ж розміру, як і паралельний порт (або старий, повний 25-контактний послідовний порт). Shell E такого ж розміру, як і серійний порт. Тож технічно 15-контактний роз'єм VGA буде DE-15, але це ніколи не було частиною оригінальної лінійки роз'ємів. AFAIK він навіть не існував до використання IBM на PS / 2 MCGA, VGA та 8514 / a. У Вікіпедії є гарне пояснення: en.wikipedia.org/wiki/D-subminiature
Олексій

3
Я люблю чудову інфляцію резолюцій: ультраширокий-супер-розширений-гіпер-квадро-графічний масив. Ви не можете назвати це високим значенням, бо одного дня цього не буде!
помічник

2
@LackingConfidence Якщо ви хочете, щоб картки пропонували продуктивність, вам потрібно використовувати їх індивідуальний фірмовий інтерфейс. Якщо ви не дбаєте про продуктивність, є VGA BIOS, щоб встановити VESA framebuffer для вас. Подивіться на vesafb.txt Linux для подробиць (і, звичайно, вихідний код, а також в Linux).
дероберт

10

Повідомлення на "фіксовану адресу" було по суті записом на відеокарту безпосередньо. Усі ці відео ISA відеокарти (CGA, EGA, VGA), по суті, мали деяку оперативну пам'ять (і регістри), відображені безпосередньо в пам'яті процесора та вводу / виводу.

Отже, коли ви писали байт у певне місце пам'яті, цей символ (у текстовому режимі) з'явився на екрані негайно, оскільки ви насправді записали у пам'ять, розташовану на відеокарті, а відеокарта просто використовувала цю пам'ять.

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


То як би це було сенсом із бортовою відеокарткою? Я все ще не розумію, як VGA може бути адресованим, якщо карта не продиктована VGA.

1
Навіть якщо ваша відеокарта інтегрована, вона все одно підключається до решти системи через якусь шину: PCIe, PCI, AGP, ISA тощо. Ці шини можуть підключати зовнішні компоненти до материнської плати та можуть підключати внутрішні компоненти всередині чіпсета (SATA, відео тощо)
haimg

1
Але як автобуси знають, що робити з адресами? Це буде відрізнятися між PCI та бортовими картами, навіть графічними процесорами або інтегрованими графічними мікропроцесорами.

1
Немає різниці в тому, чи проводяться дроти до роз'єму PCI чи всі з'єднання знаходяться всередині вашого північного мосту. en.wikipedia.org/wiki/Conventional_PCI#PCI_address_spaces
haimg

3

Дійсно немає різниці: якщо ви пишете на адресу відеопам'яті, апаратне забезпечення перенаправить це на відеокарту.

Якщо ви пишете власну операційну систему, вам, мабуть, доведеться виконати багато роботи над тим, щоб отримати відеокарту, щоб відобразити її пам'ять, як вам потрібно, починаючи зі сканування шини PCI, щоб знайти картку.


Моя відеокарта знаходиться на моєму північному мосту, вона не підключена до PCI. Я думаю, що це Intel GMA.

3
Ваш графічний процесор може не займати слот PCI , але він, безумовно, сидить на одній із шин системи ... навіть якщо він знаходиться на материнській платі, чорт, навіть якщо він інтегрований безпосередньо як частина системи на мікросхемі. Так само, як і контролери SATA вашої материнської плати, або USB-контролери, або ... Ви повинні побачити вбудований графічний процесор (і контролери SATA, USB та ін.) Разом з його ідентифікатором PCI, якщо ви використовуєте достатньо безпровідних PCI-шин інструмент огляду вашої ОС. Під linux це просто 'lspci' у командному рядку. Для Windows я віддаю перевагу "SIW" Габріеля Топала. Маки ... можуть також мати "lspci"?
FeRD

ОС не має значення в такому випадку, оскільки важлива архітектура та платформа обладнання. Операційна система щойно побудована вгорі, і це головна точка входу для взаємодії з усіма апаратними засобами, які підтримують ядро. Специфікація архітектури та nits - це те, з чим ви взаємодієте. Щоб визначити обладнання, просто знайдіть свою материнську плату в Інтернеті. Це справедливий простий початок.

+1, починаючи зі сканування шини PCI, щоб знайти картку.
n611x007

2

Поки відповіді пояснювали, що старі відеокарти працювали, маючи відеопам'ять, відображену в адресному просторі процесора. Це була власна пам'ять карт. Північний міст відомий для перенаправлення запитів на цю відображену пам'ять на VGA-пристрій.

Тоді крім цього з'явилися розширення amny та нові режими для VGA-сумісних карт. Це призводить до створення розширень BIOS VESA (VBE), які працюють наскрізь int 10h. Це підтримує базове 2D прискорення (BitBlt), апаратні курсори, подвійне / потрійне буферування тощо. Це основний метод для повнокольорового відображення при будь-якій підтримуваній роздільній здатності (включаючи високу роздільну здатність). Зазвичай для цього використовується внутрішня пам'ять картки, і північний міст виконує перенаправлення, як і класичний VGA. Це найпростіший спосіб використання графіки з повними кольорами / повною роздільною здатністю.

Далі ми пропонуємо декілька прямих методів доступу до GPU без використання bios, який забезпечує доступ до тих же функцій, що і VBE, і, можливо, додаткових. Моє розуміння тут досить нечітке. Я думаю, що цей інтерфейс є специфічним для пристрою, але я в цьому зовсім не впевнений.

Тоді є інтерфейс GPU, який може підтримувати обчислення тривимірних процесів / GP-GPU тощо. Це, безумовно, вимагає від виробника драйверів або технічних характеристик для повного використання, і часто існують суттєві відмінності навіть між пристроями одного і того ж виробника.


Драйвер розробника необхідний лише в операційній системі. До всього обладнання можна отримати доступ безпосередньо в архітектурі.

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

Залежить від картки. Якщо це nVidia або AMD, це буде власником. На борту Intel GMA було б набагато простіше, ніж у nVidia GEForce.

1
Я оновив відповідний рядок, щоб перезавантажити "водолази або технічні характеристики". Технічні характеристики є достатніми, коли ви можете їх отримати, що справді стосується багатьох останніх графічних рішень Intel.
Кевін Кеткарт

1
Для того, що це варто, усі сучасні графічні картки Intel та більшість AMD опублікували дуже велику кількість своїх програмних специфікацій. Про проблему Nvidia досі залишається мовчазною, але графічний драйвер із відкритим кодом Nouveau містить багато документації (у вигляді вихідного коду) про програмування відеокарт Nvidia. Intel / AMD / Nvidia сьогодні є більш відкритими, ніж власні ARM ASIC; вбудовані / мобільні мікросхеми є найбільш секретними з усіх.
allquixotic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.