PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

AGP

Конфигурационные регистры AGP

Конфигурирование устройств с интерфейсом AGP выполняется так же, как и обычных устройств PCI, — через обращения к регистрам конфигурационного пространства. При этом карты AGP не требуют внешней линии IDSEL — у них внутренний сигнал разрешения доступа к конфигурационным регистрам соединен с линией AD16, так что обращение к конфигурационным регистрам AGP обеспечивается при AD16 = 1.

В процессе инициализации процедура POST только распределяет системные ресурсы, но операции AGP оставляет запрещенными. Работу AGP разрешает загруженная ОС, предварительно установив требуемые параметры AGP: режим обмена, поддержку быстрой записи, адресации свыше 4 Гбайт, способ подачи и допустимое число запросов. Для этого параметры устройств считываются из регистра состояния AGP, а согласованные параметры записываются в регистр команд AGP, расположенный в конфигурационном пространстве. Параметры настройки порта задаются через конфигурационные регистры чипсета системной платы (главного моста).

В конфигурировании системы с AGP фигурируют две функции со своими конфигурационными пространствами:

  • собственно порт AGP (Core Logic), являющийся целевым устройством в транзакциях AGP;
  • графический адаптер, являющийся инициатором транзакций AGP.

Их специфические конфигурационные регистры (см. рисунок) частично совпадают по назначению; серым цветом на рисунке помечены регистры, актуальные лишь для порта; звездочкой отмечены необязательные регистры.

Регистр APBASELO (только в порте) задает местоположение апертуры AGP:

Регистр APBASELO (только в порте) задает местоположение апертуры AGP:

  • биты [31:22] задают адрес;
  • биты [21:4] всегда нулевые (размер апертуры не может быть меньше 4 Мбайт);
  • бит 3 = 1 — признак возможности предвыборки;
  • биты [2:1] задают разрядность адреса: 00 — 32 бита, 10 — 64 бита (используется и APBASEHI).

Положение остальных регистров определяется значением CAP_PTR, который указывает адрес регистра NCAPID.

Регистр NCAPID (в порте и адаптере) содержит номер версии спецификации AGP:

  • биты [31:24] — резерв;
  • биты [23:20] — старшая цифра версии;
  • биты [19:16] — младшая цифра;
  • биты [15:8] — NEXT_PTR, указатель на следующий блок свойств (или ноль);
  • биты [7:0] — CAP_ID = 02, идентификатор AGP;

Регистр состояния AGP — AGPSTAT (в порте и адаптере) сообщает основные возможности AGP: допустимое число запросов в очередях, поддержку внеполосной адресации, быстрой записи, адресации свыше 4 Гбайт, режимы 1x, 2x, 4x, 8x:

  • биты [31:24] — RQ (только для порта), допустимое суммарное число запросов, находящихся в очередях: 0 — 1 команда, 255 — 256 команд;
  • биты [23:18] — резерв (0);
  • бит 17 — ISOCH SUPPORT — поддержка изохронных обменов (AGP 3.0);
  • бит 16 — резерв;
  • биты [15:13] — ARQSZ (только для порта), указание оптимального размера (Opt_Rq_Size) запроса к графическому адаптеру, Opt_Rq_Size = 2^(ARQSZ + 4). Введены в AGP 3.0;
  • биты [12:10] — Cal_Cycle (только AGP 3.0), период калибровки: 000 — 4 мс, 001 — 16 мс, 010 — 64 мс, 011 — 256 мс, 111 — калибровка не требуется, остальные значения зарезервированы;
  • бит 9 — SBA, поддержка внеполосной подачи команд (в AGP 3.0 — резерв);
  • бит 8 — ITA_COH, обеспечение когерентности при обращении акселератора через апертуру (при единичном бите когерентности в соответствующем вхождении GART);
  • бит 7 — GART64B, поддержка 64-битных элементов GART;
  • бит 6 — htrans# (только AGP 3.0), трансляция запросов хоста через апертуру:
    0 — при обращениях хоста в диапазоне апертуры адрес транслируется через GART,
    1 — хост не посылает запросов в диапазоне апертуры;
  • бит 5 — Over4G, поддержка адресации памяти свыше 4 Гбайт;
  • бит 4 — FW, поддержка быстрой записи;
  • бит 3 — AGP3.0_MODE, режим работы: 0 — AGP 1.0/2.0, 1 — AGP 3.0;
  • биты [2:0] — RATE, поддерживаемые скорости обмена по AD и SBA. В режиме AGP 2.0: бит 0 — 1x, бит 1 — 2x, бит 2 — 4x. В режиме AGP 3.0: бит 0 — 4x, бит 1 — 8x.

Регистр команд AGP — AGPCMD (в порте и адаптере) служит для разрешения этих свойств и содержит следующие поля:

  • биты [31:24] — RQ_DEPTH, задание глубины очереди команд;
  • биты [23:16] — резерв (0);
  • биты [15:13] — PARQSZ (только AGP 3.0), задание оптимального размера (Opt_Rq_Size) запроса, к которому должен стремиться мастер AGP, Opt_Rq_Size = = 2 ^ (PARQSZ + 4);
  • биты [12:10] — PCAL_Cycle (только AGP 3.0), задание периода цикла калибровки;
  • бит 9 — SBA_ENABLE, установка внеполосной подачи команд;
  • бит 8 — AGP_ENABLE, разрешение операций AGP;
  • бит 7 — GART64B, разрешение использования 64-битных элементов GART;
  • бит 6 — резерв;
  • бит 5 — 4G, разрешение адресации памяти свыше 4 Гбайт (двухадресных циклов и посылок 4-го типа по SBA);
  • бит 4 — FW_Enable, разрешение быстрой записи;
  • бит 3 — резерв (0);
  • биты [2:0] — DATA_RATE, установка режима обмена (должен быть установлен лишь один бит). В AGP 2.0: бит 0 — 1x, бит 1 — 2x, бит 2 — 4x. В AGP 3.0: бит 0 — 4x, бит 1 — 8x, бит 3 — резерв.

Регистр NISTAT (в порте и адаптере) определяет возможности изохронных передач (только в AGP 3.0):

  • биты [31:24] — резерв (0);
  • биты [23:16] — MAXBW, максимальная пропускная способность устройства (суммарная для асинхронных и изохронных передач) в единицах по 32 байта за 1 мкс;
  • биты [15:8] — ISOCH_N, максимальное число изохронных транзакций за период 1 мкс;
  • биты [7:6] — ISOCH_Y, поддерживаемые размеры изохронных передач: 00 — 32, 64, 128, 256 байт; 01 — 64, 128, 256 байт; 10 —128, 256 и более байт, 11 — 256 байт;
  • биты [5:3] — ISOCH_L, максимальная задержка изохронных передач в единицах мкс (1–5);
  • бит 2 — резерв;
  • биты [1:0] — Isoch-ErrorCode, код ошибки изохронного обмена (00 — нет ошибок): для порта 01 — переполнение очереди изохронных запросов; для карты 01 — «переопустошение» буфера чтения, 10 — переполнение буфера записи.

Регистр NICMD (в порте и адаптере) управляет изохронными передачами (только в AGP 3.0):

  • биты [15:8] — PISOCH_N, максимальное число изохронных транзакций за период 1 мкс (для карты);
  • биты [7:6] — PISOCH_Y, размер изохронных передач: 00 — 32, 64, 128, 256 байт; 01 — 64, 128, 256 байт; 10 —128, 256 и более байт, 11 — 256 байт;  биты [5:0] — резерв.

Регистр AGPCTRL (в порте) управляет собственно портом AGP:

  • биты [31:10] — резерв;
  • бит 9 — CAL_CYCLE_DIS, запрет циклов калибровки;
  • бит 8 — APERENB, разрешение работы через апертуру;
  • бит 7 — GTLBEN, разрешение работы буферов TLB, ускоряющих трансляцию адресов через GART (если они имеются в порте);
  • биты [6:0] — резерв.

Регистр APSIZE (в порте) задает размер апертуры:

  • биты [15:12] — резерв;
  • биты [11:8, 5:0] — APSIZE, 111…111 — 4 Мбайт, 111…110 — 8 Мбайт, 11110…0 — 256 Мбайт, 000…000 — 4096 Мбайт;
  • биты [7:6] = 00.

Регистр NEPG (в порте AGP 3.0) задает размер страницы, описываемой в GART, из списка поддерживаемых:

  • биты [15:12] — SEL, выбранный размер страниц (2 ^ (SEL + 12));
  • биты [11:0] — битовая карта поддержки страниц разного размера: единица в бите N означает поддержку страниц размером (2 ^ (N + 12)). Бит 6 всегда единичный — поддержка страниц размером 4 кбайт обязательна для всех портов AGP.

Регистры GARTLO[31:12] и GARTHI (в порте) задают начальный адрес таблицы GART.