Итак Связка N1 - память + RAMDAC. Отвечают за

Итак
Связка N1 - память + RAMDAC. Отвечают за герцы, битность, разрешение. RAMDAC может быть встроенным или внешним.
Связка N2 - видеопроц + память. Видеопроц получает RAW-данные для записи в память или граф.примитивы (типа нарисуй линию) или в 3D - какие-то инструкции. Не забываем, что 2D-ускорению больше лет, чем 3D.
Память - двухпортовая или мультиплексируемая между видеопроцом и RAMDAC.

Соотвественно, операционная система не гоняет каждый раз всю картинку. Она знает, что картинка уже есть в памяти видеокарты и загоняет только изменения.

Маппинг "нижней" (до мега) памяти работает только в текстовых и маленьких графических режимах. Соотв. - текст с B800, графика - с A000:0 до C000:0 (EGA-режимы, что-то из VGA - лень искать). Верхней (от гига до 4-х) - согласно PnP. Маппится не на RAM, а на адресное пространство. Т.е. RAM видеокарты торчит на PCI. Кстати, не факт, что у S3 так - в те времена мог торчать и порт с автоинкрементом адреса. Т.е. туда "rep outsd"'ом загонялось. Хотя у Матрокса G200 (то, что из старых в работе) - торчит память.

Таким образом - в 2D шину никто особо не жрет. Гнать по шине 85 раз в секунду всю картинку не надо - вывести ее 85 раз в секунду c нужным (возможным) разрешением - задача связки N1 (т.е. RAMDAC и видеопамять должны успевать, видеопамять быть достаточного объема). И только при полной смене 2D-картинки мы получаем моментальный поток во всего лишь 1024x768 x 4 bytes = 3MB/sec... При 1600x1200x32 - 7,3 МB/sec, что занимает 1/10 sec и мы наблюдаем видимые тормоза.

В 3D в принципе все то же самое, но появились большие объемы данных для прокачки - те же текстуры (каковые хранятся в отдельном куске памяти). В принципе - нагрузка на шину получается моментальная (непостоянная), но требуется скорость (быстро загнать текстуру). Видеопроц должен собрать всякую фигню (команды, текстуры, посчитать шейдеры и т.п.), рассчитать кадр и дать его RAMDACу для вывода.