Оригинал материала: https://3dnews.ru/173207

Руководство по PCI и AGP

Автор: Grzegorz Mazur
Перевод: Алексей Удовыдченко
Date: 1999-02-09

PCI

AGP


PCI

Основная информация по PCI

PCI (Peripheral Component Interconnect) это системная шина разработанная совместно несколькими компьютерными компаниями около 1993 и в основном используемая в современных ПК. Существует несколько уровней спецификации PCI. Версия PCI используемая в современных ПК обладает следующими характеристиками:
  • Адресация / пропуск данных - 32 бита (4 байта) - адреса и данные передаются одновременно по одной линии
  • Тактовая частота - указана как 33 или 33.33 МГц, может изменяться в диапазоне от 20..41.5 МГц
  • Основной цикл - 1 такт часов
  • Быстрейшая одиночная транзакция - 2 такта часов (66 МБ/с при 33 МГц)
  • Быстрейшая взрывная транзакция - 5 тактов часов - 1 цикл на адрес и 4 на слова данных (110 МБ/с при 33 МГц)

Эффективность

Как видно из приведенных выше параметров, шина PCI, хотя и является довольно быстрой, не может соответствовать скорости современных процессоров и их внешним шинам. Запущенный с 100 МГц FSB (Front Side Bus - Частотой Шины), процессор с 64-битной шиной может передавать 640 МБайт/с, примерно в шесть раз больше чем PCI.
Поэтому любые операции с графической памятью, осуществляемые процессором, неэффективны, из-за "бутылочного горлышка" PCI шины. Даже при использовании дополнительных возможностей процессора (типа MMX инструкций), шина накладывает серьезные ограничения на общую эффективность системы, относящуюся к графическим операциям.
Вот почему графический чип контроллера / акселератора, находящийся на графической плате намного более эффективен в графических операциях - чип подсоединен к своей локальной видео памяти посредством 64- или 128-битной широкой шины работающей на 66..143 МГц, что предоставляет передачу данных как минимум в 4 раза выше чем доступная на PCI.

Busmastering (Управление шиной)

Bus mastering (Управление шиной) это функция шины PCI которая может использоваться любым PCI устройством (например контроллером диска, графическим контроллером или звуковой картой). Bus mastering позволяет устройству управлять шиной и осуществлять (инициировать) любые транзакции чтения / записи к другим устройствам на шине PCI или к системной памяти. Эти транзакции осуществляются независимо от главного процессора, поэтому они отнимают время только у шины, но не у процессора. Bus mastering транзакции нинасколько не быстрее обычных транзакций, осуществляемых процессором. Преимущество bus mastering в том, что контроллер запрограммированный на выполнение какой-либо передачи данных или на выполнение последовательности команд больше не требует действий от процессора пока он (контроллер) не завершит свою задачу. Обычно для информирования процессора о том, что хозяин шины (bus master) выполнил свои действия используется механизм прерываний.
В случае с графическими контроллерами, PCI bus mastering используется для двух важных назначений:
  • Передача данных о изображении из системной памяти в видео память - это может включать передачу изображений и текстур которые будут использованы в будущей генерации изображения.
  • Считывание графических команд ("список показа") из системной памяти. В этом случае процессор (под управлением графического драйвера) подготавливает последовательность командных примитивов и помещает их где-либо в системной памяти. Затем посылаются команды графическому контроллеру, которые предписывают ему принять и выполнить последовательность команд начиная с данного адреса в системной памяти. Процессор может работать над следующей сценой, в то время как текущая сцена отрисовывается графическим контроллером.
Помните, что bus mastering это функция графических карт и их драйверов, которая может быть, а может и не быть использована в данной системе. Bus mastering улучшает производительность, но в некоторых системах он негативно влияет на работоспособность некоторых устройств на PCI шине. Любая правильно сконфигурированная система не должна иметь никаких проблем с bus mastering.
Помните также, что не нужно использовать "bus mastering драйвер" для включения функции bus mastering для графического контроллера. Термин "bus mastering драйвер" для данной материнской платы относится только к bus mastering драйверу дискового контроллера (так как дисковый контроллер - часть материнской платы). Bus mastering для графической карты осуществляется только ее собственным драйвером.

Конфигурация и Инициализация

Во время системной инициализации BIOS проверяет все устройства на PCI шине, назначает адреса для них и разрешает им инициализацию при помощи их собственных расширений BIOS. Следующее описание относится ко всем графическим контроллерам VGA-класса.
  • Во-первых, BIOS материнской платы пытается найти и инициализировать устройства на шине ISA. Если найден старый, ISA-шный VGA контроллер, BIOS сконфигурирует, но НЕ инициализирует любой VGA контроллер находящийся на PCI или AGP шине. ISA-шная VGA карта становится первичным (по умолчанию) графическим контроллером. В зависимости от установки опции "Video BIOS shadow" команды BIOS будут выполняться либо непосредственно с чипа VGA ROM, либо копироваться в системную память (RAM) в стандартную область VGA BIOS (линейный адрес C0000), с защитой от записи (чтобы имитировать ROM) и выполняться.
  • В старых BIOSах следующей проверяется шина PCI. В новых BIOSах пользователь может выбрать, будет ли следующая проверяемая шина для VGA AGP или же PCI. Используя эту настройку (если она доступна) пользователь может задать системе использовать в качестве первичной либо AGP либо PCI VGA карту. Если есть только одна VGA карта (либо на AGP либо на PCI) эта опция BIOS не имеет никакого эффекта. Порядок поиска на PCI шине фиксирован - какая из PCI VGA карт распознается первой зависит только от ее позиции на PCI шине. Если кто-то хочет выбирать одну из двух PCI карт, он должен соответственно менять расположение карт в слотах.
  • Первая найденная VGA карта настраивается на ответ стандартным VGA IO адресам и адресам видео памяти первого мегабайта адресного пространства (A0000-BFFFF шестнадц.). Всем картам (первичной, вторичной и т.д.) назначаются расположения в 32-битном адресном пространстве в соответствии с их требованиями.
  • Образ BIOS первичной VGA карты (находящийся в ROM чипе VGA платы) помещается где-либо в 32-битном адресном пространстве памяти. В этот момент образ содержит процедуры инициализации и функции BIOS могут превышать 32 КБайта (обычно они занимают от 32 до 64 КБайт). Затем BIOS материнской платы копирует весь образ с ROM на VGA плате в системную RAM по линейному адресу C0000, который является стандартным расположением ISA VGA BIOS. Это часть RAM еще не защищена от записи.
    (Вышеуказанное означает, что BIOS PCI/AGP VGA никогда не выполняется с ROM = обязательное затемнение (shadowed), вне зависимости от установки опции "video BIOS shadow" в BIOS материнской платы.)
    Затем вводится в действие процедура инициализации VGA BIOS, в то время как образ BIOS в RAM доступен для записи. BIOS может определить и записать некоторые данные в свой образ. Также она может переместить некоторые процедуры и "обрезать" ненужные части (такие как процедуры инициализации), что снижает объем до 32КБайт (если образ до этого был больше). После этого процедура инициализации завершается, и BIOS материнской платы защищает от записи часть системной RAM, содержащей VGA BIOS.

AGP

AGP и PCI

В основном AGP это вариант PCI, поэтому все операции контроллеров AGP интерфейса обладают всеми возможностями PCI устройств. Оба интерфейса 32 битной ширины и большинство сигналов одинаковы. В PCI много слотов, в то время как AGP - поточечное соединение. PCI работает с частотой 33 МГц, AGP - 66 МГц. AGP интерфейс может производить два типа транзакций: PCI транзакции и AGP транзакции. Единственные AGP транзакции являются "bus mastering" передачами из системной памяти графическому контроллеру и инициируются графическим контроллером. Все остальные транзакции производятся как PCI передачи. Даже при этом эти транзакции вдвое быстрее чем транзакции на PCI шине из-за более высокой тактовой частоты AGP интерфейса. Некоторые старые AGP-карты могут производить только PCI-транзакции. Предположительно примерами таких "быстрых PCI" карт могут быть Matrox Millenium II AGP и Trident 9650.

AGPтранзакции - адресация по побочной частоте

AGP транзакции используются только в "bus mastering" режиме. В то время как в простых PCI транзакциях при быстрейшей транзакции может передаваться 4 32-битных слова за 5 тактов часов (так как передается адрес по линиям адресов/данных для каждого пакета из 4 слов), AGP передачи могут использовать дополнительные AGP линии называемые Побочными (Sideband) для передачи адреса маленькими кусочками одновременно с данными. Во время передачи пакета из 4 слов передаются 4 части адреса для следующего пакетного (взрывного) цикла. По завершении цикла адрес и информация запроса для следующего пакета уже переданы, поэтому следующий 4-словный пакет может начинать сразу же передаваться. Таким образом мы можем передать 4 слова за 4 цикла (а не за 5, необходимые PCI). Вместе с 66 МГц частотой часов это предоставляет максимальную скорость передачи (4x66=) 264 МБайт/с.

1x, 2x и 4xрежимы

Помимо более быстрых часов, AGP интерфейс обладает другими опциями которые могут увеличить скорость передачи данных. Во время осуществления AGP-транзакций, интерфейс может работать в одном из трех режимов, отмечаемых как 1x, 2x и 4x. Действительный режим, используемый для AGP передачи устанавливается между материнской платой и AGP картой, и после его определения во время системной инициализации остается неизменным. Установка режима зависит от доступности / поддержки конкретного режима и его стабильности. Вот почему многие потенциально 2х совместимые системы работают только как 1х - это случается если драйвер определяет, что 2х режим может привести к ошибкам передачи.
  • 1x режим передает одну порцию (слово) данных и побочную информацию при каждом такте часов. Это приносит 264 МБ/с.
  • 2x режим передает данные и побочную информацию в начале и конце каждого такта часов, поэтому две порции данных передаются за один такт часов, при этом общий максимальный вывод соответствует 528 МГц.
  • В 4x режиме тактовая частота остается равной 66 МГц, но два других сигнала, запускающиеся синхронно с главными часами с эффективной частотой 133 МГц, используются для передачи данных в начале и конце каждого такта. Это приносит максимальный вывод свыше 1 Гб/с. Эта функция коммерчески еще недоступна, первые чипсеты и видео карты, поддерживающие ее, появятся на рынке примерно в 3 квартале 1999 года.

AGP апертура,GART и DIME

Описанные выше функции делают AGP быстрее чем PCI, но они не представляют никаких новых логических возможностей. Помимо лучшего, более быстрого железа, AGP также воплощает новую логическую модель, которая может значительно улучшить работу графического контроллера.
Попросту говоря, PCI bus mastering подходит для передачи небольших порций данных (от сотен байт до нескольких килобайт). Во время программирования PCI bus master'а система / драйвер записывает физический адрес данных, предназначенных для передачи. Для маленьких объемов данных системах с легкостью может сделать так чтобы логически смежные адреса переносились бы в физически смежные. Это становится трудным и неэффективным для больших структур данных, таких как многомегабайтные текстуры и огромные списки показа, так как система загружает эти структуры в свое логическое адресное пространство которое случайно распределено по физическим адресам.
Главная задача AGP в том, чтобы карта могла "видеть" часть системной памяти как свою собственную память, которую можно использовать для хранения текстур и списков показа. Чтобы использовать возможности AGP более эффективно, система должна предоставлять механизм, который позволял бы переносить "логические" адреса используемые графическим AGP чипом в действительные физические адреса способом, подобным используемому процессорами x86.

AGP апертура

AGP апертура это фрагмент адресного пространства сразу же за физическими адресами используемыми буфером кадров AGP карт (видео память). Эта часть адресного пространства используется AGP картами для доступа к системной памяти в которой хранятся текстуры. Физически системная память адресуется начиная с 0 адреса и до своего объема. AGP апертура поделена на логические страницы, и страницы переносятся индивидуально на физические страницы системной памяти.

GART

Graphics Aperture Remapping Table - Таблица Переноса Графической Апертуры - это аппаратная структура внутри AGP чипсета, которая осуществляет перенос адресов AGP апертуры в физические адреса системной памяти. Она слегка напоминает блок TLB вызова, находящийся во всех современных процессорах. GART находится в NorthBridge части чипсета. Она управляется (программируется) операционной системой и используется AGP картой.

GART драйвер

Так как действительное применение GART зависит от чипсета, у ОС должны быть некоторые значения для доступа к ней. GART драйвер это драйвер используемый ОС (как Win9x) для управления GART. Win95 вообще ничего не знает о GART, поэтому она должна использовать внешние драйвера. Win98 информирована о GART чипсетах Intel и в нее включены соответствующие драйвера. Для не-Intel чипсетов для использования функций GART надо использовать драйвера от производителей чипсета. Это так называемый "AGP driver". Драйвер обычно поставляется с материнской платой и обновления можно скачать непосредственно от производителей чипсета (как VIA или ALi).

DIME

Direct Memory Execution - Непосредственное Выполнение из Памяти - это название лучшего рабочего режима AGP достигаемого за счет использования AGP аперутры с GART.

2x mode vs. DIME (2х режим с DIME)

Общая проблема существующая во многих современных материнских платах и графических платах в том, что работать может либо 2х режим, либо DIME, но не оба. Как правило, DIME в 1х режиме работает быстрее чем 2х режим без DIME. Конечно, частные результаты могут отличаться.



Оригинал материала: https://3dnews.ru/173207