русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Шина AGP


Дата добавления: 2013-12-23; просмотров: 1509; Нарушение авторских прав


В настоящее время самой быстрой универсальной шиной расширения является PCI, имеющая при тактовой частоте 66 МГц и разрядности 32 бит пиковую пропускную способность 264 Мбайт/с. Одним из главных потребителей пропускной способности шины является графический адаптер. По мере увеличения разрешения и глубины цвета требования к пропускной способности шины, связывающей дисплейный адаптер с памятью и центральным процессором компьютера, повышаются. Одно из решений состоит в уменьшении потока графических данных, передаваемых по шине. Для этого графические платы снабжают ускорителями и увеличивают объем видеопамяти, которой пользуется ускоритель при выполнении построений. В результате поток данных в основном циркулирует внутри графической карты, слабо нагружая внешнюю шину. Однако при трехмерных построениях ускорителю становится тесно в ограниченном объеме локальной памяти графического адаптера, и его поток данных снова «выплескивается» на внешнюю шину.

Фирма Intel на базе шины PCI 2.1 разработала стандарт подключения графических адаптеров - AGP (Accelerated Graphic Port - ускоренный графический порт). Первая версия стандарта вышла в 1996 году, в настоящее время действует версия 2.0 (1998 года), отличающаяся от первой в основном введением нового режима передачи 4х. В конце 2000 г. Intel опубликовала проект спецификации AGP8X, которая рассматривается как отдельная спецификация, а не просто развитие предыдущих; Ее особенности отметим в конце раздела.

Порт AGP представляет собой 32-разрядную шину с тактовой частотой 66 МГц, большая часть сигналов позаимствована из шины PCI. Однако в отличие от PCI, порт AGP представляет собой двухточечный интерфейс, соединяющий графический адаптер с памятью и системной шиной процессора напрямую логикой и каналами данных чипсета системной платы, не пересекаясь с «узким местом» - шиной PCI. Поначалу планировался переход на тактовую частоту 100 МГц, но и в спецификации AGP 2.0, и в предлагаемом варианте AGP8X фигурирует лишь одна частота — 66,6 МГц (нынешний предел и для шины PCI). «Ускоренность» порта обеспечивается следующими факторами:



  • конвейеризацией обращений к памяти;
  • удвоенной (2х) или учетверенной (4х) частотой передачи

данных (относительно тактовой частоты порта);

· демультиплексированием шин адреса и данных.

Идею конвейеризации обращений к памяти иллюстрирует рис. 6.11, где сравни¬ваются обращения к памяти PCI и AGP. В PCI во время реакции памяти на запрос шина простаивает (но не свободна). Конвейерный доступ AGP позволяет в это время передавать следующие запросы, а потом получить поток ответов.

 

Рис. 30. Циклы обращения к памяти PCI и AGP

Удвоение и учетверение частоты передачи данных обеспечивает при частоте 66 МГц пропускную способность до 533 (2х) и 1066 Мбайт/с (4х), что для 32-бит¬ной шины несколько неожиданно. В этих режимах блоки данных передаются как по фронту, так и по спаду стробирующего сигнала (как в ATA Ultra DMA). Режимы 2х и 4х могут использоваться, лишь если их поддерживают и графический адаптер, и системная плата.

Демультиплексирование (разделение) шины адреса и данных сделано несколько необычным образом. С целью экономии числа интерфейсных линий шину адреса и команды в демультиплексированном режиме AGP представляют всего 8 линий SBA (SideBand Address), по которым команда, адрес и значение длины передачи передаются последовательно за несколько тактов. Поддержка демультиплексированной адресации не является обязательной для устройства AGP, поскольку имеется альтернативный способ подачи адреса по шине AD.

Порт AGP предназначен только для интеллектуального графического адаптера, имеющего SD-ускоритель (для краткости здесь этот адаптер будем называть просто ускорителем). Системная логика порта AGP отличается сложным контроллером памяти, который выполняет глубокую буферизацию и высокопроизводительное обслуживание запросов AGP (от адаптера) и других своих клиентов - центрального процессора (одного или нескольких) и шины PCI. AGP может реализовать всю пропускную способность 64-битной системы памяти компьютера на процессорах Pentium и выше. При этом возможны конкурирующие обращения к памяти как со стороны процессора, так и со стороны мостов шин PCI. Фирма Intel ввела поддержку AGP в чипсеты для процессоров Р6, однако нет «противопоказаний» для применения AGP и с Pentium.

Отметим, что многие преимущества AGP носят потенциальный характер и могут быть реализованы лишь при поддержке аппаратных средств графического адап¬тера и ПО. Графический адаптер с интерфейсом AGP может реально вести себя по-разному:

· не задействовать конвейеризацию, а использовать только

быструю запись PCI (Fast Write);

· не работать с текстурами, расположенными в системной

памяти, но использовать более быстрый обмен данными между памятью и локальным буфером;

· использовать оптимальное распределение текстур между

локальной и системной памятью, избегая конфликтов с обращениями к памяти от процессора.

Порт AGP содержит практически полный набор сигналов шины PCI и дополнительные сигналы AGP. Устройство, подключаемое к порту AGP, может предназначаться как исключительно для операций AGP, так и быть комбинацией AGP+PCI. Устройство обязательно должно выполнять функции ведущего устройства AGP (иначе порт AGP для него теряет смысл) и функции ведомого устройства PCI со всеми его атрибутами (конфигурационными регистрами и т. п.); дополнительно оно может быть и ведущим устройством PCI. Для транзакций в режиме AGP ему доступно только системное ОЗУ. В режиме PCI обращения возможны как к пространству памяти, так и к пространству ввода-вывода и конфигурационному пространству.

Транзакции в режиме PCI, инициируемые ускорителем, начинаются с подачи сигнала FRAME* и выполняются обычным для PCI способом. Заметим, что при этом на все время транзакции шина AD занята, причем транзакции чтения памяти занимают шину на большее число тактов, чем транзакции записи, - после подачи адреса неизбежны такты ожидания на время доступа к памяти. Запись на шине происходит быстрее — данные записи задатчик посылает сразу за адресом, а на время доступа к памяти они «оседают» в буфере контроллера памяти. Контроллер памяти позволяет завершить транзакцию и освободить шину до физической записи в память. Обращения со стороны процессора (или задатчиков шины PCI) отрабатываются адаптером так же, как обычным устройством PCI.

Конвейерные транзакции AGP (команды AGP) инициируются только ускорителем; логикой AGP они ставятся в очереди на обслуживание и исполняются в зависимости от приоритета, порядка поступления запросов и готовности данных. Эти транзакции могут быть адресованы ускорителем только к системному ОЗУ. Если устройству AGP требуется обратиться к локальной памяти каких-либо устройств PCI, то оно должно выполнять эти транзакции в режиме PCI. Транзакции, адресованные к устройству AGP, отрабатываются им как ведомым устройством PCI, однако имеется возможность быстрой записи в локальную память FWXFast Write), в которой данные передаются на скорости AGP (2х или 4х), и управление потоком их передач ближе к протоколу AGP, нежели PCI. Транзакции FW обычно инициируются процессором и предназначены для принудительного «заталкивания» данных в локальную память ускорителя.

Концепцию конвейера AGP иллюстрирует рис. 6.12. Порт AGP может находиться в одном из четырех состояний:

· IDLE - покой;

· DATA - передача данных конвейеризированных

транзакций;

· AGP - постановка в очередь команды AGP;

· PCI - выполнение транзакции в режиме PCI.

Рис. 31. Конвейер AGP

Из состояния покоя IDLE порт может вывести запрос транзакции PCI (как от ускорителя, так и с системной стороны) или запрос AGP (только от ускорителя). В состоянии PCI транзакция PCI выполняется целиком, от подачи адреса и команды до завершения передачи данных. В состоянии A GP ведущее устройство передает только команду и адрес для транзакции (по сигналу PIPE* или через порт SBA), ставящейся в очередь; несколько запросов могут следовать сразу друг за другом. В состояние DATA порт переходит, когда у него в очереди имеется необслуженная команда, готовая к исполнению. В этом состоянии происходит передача данных для команд, стоящих в очереди. Это состояние может прерываться запросами PCI (для выполнения целой транзакции) ил и Л GP (для постановки в очередьновой команды), но прерывание возможно только на границах данных транзакций AGP. Когда порт AGP обслужит все команды, он снова переходит в состояние покоя. Все переходы происходят под управлением арбитра порта AGP, реагирующего на поступающие запросы (REQ# от ускорителя и внешние обращения от процессора или других устройств PCI) и ответы контроллера памяти. Транзакции AGP некоторыми моментами отличаются от транзакций PCI:

· Фаза данных отделена от фазы адреса, чем и

обеспечивается конвейеризация.

· Используется собственный набор команд.

· Транзакции адресуются только к системной памяти,

используя то же пространство физических адресов, что и PCI. Транзакции могут иметь длину, кратную 8 байтам, и начинаться только по 8-байтной границе. Транзакции чтения иного размера должны выполняться только в режиме PCI; транзакции записи могут использовать сигналы С/ВЕ[3:0]# для маскирования лишних байтов.

· Длина транзакции явно указывается в запросе.

· Конвейерные запросы не гарантируют когерентность

памяти и кэша. Для операций, требующих когерентности, должны использоваться транзакции PCI.

Возможны два способа подачи команд AGP (постановки запросов в очередь), из которых в текущей конфигурации выбирается один, причем изменение способа «на ходу» не допускается:

· Запросы вводятся по шине AD[31:0] и С/ВЕ[3:0] с помощью

сигнала PIPE#, по каждому фронту CLK ведущее устройство передает очередное двойное слово запроса вместе с кодом команды.

· Команды подаются через внеполосные (sideband) линии

адреса SBA[7:0]. «Внеполосность» означает, что эти сигналы используются независимо от занятости шины AD. Синхронизация подачи запросов зависит от режима (1х, 2х или 4х).

При подаче команд по шине AD во время активности сигнала PIPE* код команды AGP (СССС) кодируется сигналами С/ВЕ[3:0], при этом на шине AD помещается начальный адрес (на AD[31:3]) и длина п (на AD[2:0]) запрашиваемого блока данных. Определены следующие команды:

· 0000 (Read) - чтение из памяти (п+1) учетверенных слов

(по 8 байт) данных, начиная с указанного адреса;

· 0001 (HP Read) - чтение с высоким приоритетом;

· 0100 (Write) — запись в память;

· 0101 (HP Write) - запись с высоким приоритетом;

· 1000 (Long Read) - «длинное» чтение (п+1)х4

учетверенных слов (до 256 байт данных);

· 1001 (HP Long Read) - «длинное» чтение с высоким

приоритетом;

· 1010 (Flush) - очистка, выгрузка данных всех предыдущих

команд записи по адресам назначения (на порте AGP выглядит как чтение, возвращающее произвольное учетверенное слово в качестве подтверждения исполнения; адрес и длина, указанные в запросе, значения не имеют);

· 1100 (Fence) - установка «ограждений», позволяющих

низкоприоритетному потоку записей не пропускать чтения;

· 1101 (Dual Address Cycle, DAC) — двухадресный цикл для

64-битной адресации: в первом такте по AD передается младшая часть адреса и длина запроса, а во втором — старшая часть адреса (по AD) и код исполняемой команды (по С/ВЕ[3:0]).

При внеполосной подаче команд по шине SBA[7:0] передаются 16-битные посылки четырех типов. Каждая посылка передается за два приема, по фронту и спаду синхросигнала. Тип посылки кодируется старшими битами:

· тип 1: ОААА АААА АААА ALLL - поле длины (LLL) и

младшие биты адреса (А[14:03]>;

· тип 2:10СС CCRA АААА АААА - код команды (СССС) и

средние биты адреса (А[23:15]);

· тип 3: 110R АААА АААА АААА - старшие биты адреса

(А[35:24]);

· тип 4:1110 АААА АААА АААА - дополнительные старшие

биты адреса, если требуется 64-битная адресация.

Посылка из всех единиц является пустой командой (NOP); они посылаются в по¬кое шины SBA. Биты «R» зарезервированы. Посылки типов 2,3 и 4 являются «лип¬кими» (sticky) — значения, ими определяемые, сохраняются до введения новой посылки того же типа. Постановку команды в очередь инициирует посылка типа 1, задающая длину транзакции и ее младшие адреса, — код команды и остальная часть адреса должны быть определены ранее введенными посылками типов 2-4. Такой способ очень экономно использует такты шины для подачи команд при пересылках массивов. Синхронизация данных на SBA зависит от режима порта:

· В режиме 1х каждая часть передается по фронту CLK;

начало посылки (старшая часть) определяется по получению байта, отличного от 1111111lb, по последующему фронту передается младшая часть. Очередная команда может вводиться за каждую пару тактов CLK (когда код команды и старший адрес уже введены).

· В режиме 2х для SBA используется отдельный строб

SB_STB, по его спаду пе¬редается старшая часть, а по последующему фронту — младшая. Частота этого строба (но не фаза) совпадает с CLK, так что очередная команда может вводиться в каждом такте CLK.

· В режиме 4х используется еще и дополнительный

(инверсный) строб SB_STB#.Старшая часть фиксируется по спаду SB_STB, а младшая - по последующему спаду SB_STB#. Частота стробов в два раза выше, чем CLK, так что в каждом такте CLK может вводиться пара команд.

Конечно, полный цикл введения команд (с посылками всех четырех типов) с учетом посылки NOP оказывается больше - 10, 5 и 2,5 тактов частоты CLK для режимов 1х, 2х и 4х соответственно.

В ответ на полученные команды порт AGP выполняет передачи данных, причем фаза данных AGP явно не привязана к фазе команды/адреса. Фазы данных вводит порт AGP (системная логика), исходя из порядка ранее пришедших к нему команд от ускорителя.

Передачи данных A GP выполняются, когда шина находится в состоянии DA TA. Как говорилось выше, фаза данных AGP явно не привязана к фазе команды/адреса. Фазы данных вводит порт AGP (системная логика), исходя из порядка ранее пришедших к нему команд от ускорителя. Ускоритель узнает о назначении шины AD в последующей транзакции по сигналам ST[2:0] (действительны только во время сигнала GNT#, коды 100-110 зарезервированы):

· 000 - ведущему устройству будут передаваться данные

низкоприоритетного запроса чтения, ранее поставленного в очередь (или выполняется очистка);

· 001 - ведущему устройству будут передаваться данные

высокоприоритетного запроса чтения;

· 010 - ведущее устройство должно будет предоставлять

данные низкоприори¬тетного запроса записи;

· 011 - ведущее устройство должно будет предоставлять

данные высокоприоритетного запроса записи;

· 111 - ведущему устройству разрешается поставить в

очередь команду AGP (сигналом Р1РЕ#) или начать транзакцию PCI (сигналом FRAME*).

Ускоритель узнает лишь тип и приоритет команды, результаты которой последуют в данной транзакции. Какую именно команду из очереди отрабатывает порт, ускоритель определяет сам, так как именно он ставил их в очередь (ему известен порядок). Никаких тегов транзакций (как, например, в системной шине процессоров Р6) в интерфейсе AGP нет. Имеется только 4 независимых очереди для каждого типа команд (чтение низкоприоритетное, чтение высокоприоритетное, запись низкоприоритетная, запись высокоприоритетная). Фазы исполнения команд разных очередей могут чередоваться произвольным образом; порт имеет право исполнять их в порядке, оптимальном с точки зрения производительности. Реальный порядок исполнения команд (чтения и записи памяти) тоже может изменяться. Однако для каждой очереди порядок выполнения всегда совпадает с порядком подачи команд (об этом знают и ускоритель, и порт).

Запросы AGP с высоким приоритетом для арбитра системной логики являются более приоритетными, чем запросы от центрального процессора и ведущих устройств шины PCI. Запросы AGP с низким приоритетом для арбитра имеют приоритет ниже, чем от процессора, но выше, чем от остальных ведущих устройств. Хотя принятый протокол никак явно не ограничивает глубину очередей, спецификация AGP формально ее ограничивает до 256 запросов. На этапе конфигурирования устройства система PnP устанавливает реальное ограничение (в конфигурационном регистре ускорителя) в соответствии с его возможностями и возможностями системной платы. Программы, работающие с ускорителем (исполняемые и локальным, и центральным процессорами), не должны допускать превышения числа необслуженных команд в очереди (у них для этого имеется вся необходимая информация). При передаче данных AGP управляющие сигналы, заимствованные от PCI, име¬ют почти такое же назначение, что и в PCI. Передача данных AGP в режиме 1х очень похожа на циклы PCI, но немного упрощена процедура квитирования (поскольку это выделенный порт и обмен выполняется только с быстрым контроллером системной памяти). В режимах 2х и 4х имеется специфика стробирования:

· В режиме 1х данные (4 байта на AD[31:0]) фиксируются

получателем по положительному перепаду каждого такта CLK, что обеспечивает пиковую пропускную способность 66,6 х 4 = 266 Мбайт/с.

· В режиме 2х используются стробы данных AD_STBO и

AD_STB 1 для линий AD[0:15] и AD [16:31] соответственно. Стробы формируются источником данных, приемник фиксирует данные и по спаду, и по фронту строба. Частота стробов совпадает с частотой CLK, что и обеспечивает пиковую пропускную способность 66,6 х 2 х 4 = 533 Мбайт/с.

· В режиме 4х используются еще и дополнительные

(инверсные) стробы AD_STBO# и AD_STB1#. Данные фиксируются по спадам и прямых, и инверсных стробов. Частота стробов в два раза выше, чем CLK, что и обеспечивает пиковую пропускную способность 66,6 х 2 х 2 х 4 = 1066 Мбайт/с.

Порт AGP должен отслеживать состояние готовности буферов ускорителя к посылке или получению данных транзакций, поставленных в очередь. Сигналом RBF# (Read Buffer Full) ускоритель может информировать порт о неготовности к приему данных низкоприоритетных транзакций чтения (к приему высокоприоритетных он должен быть всегда готов). Сигналом WBF# (Write Buffer Full) он информирует о неспособности принять первую порцию данных быстрой записи (Fast Write, FW).

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

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

Регистр состояния AGP сообщает свойства порта: допустимое число запросов в очередях, поддержку внеполосной адресации, быстрой записи, адресации свыше 4 Гбайт, режимы 1х, 2х, 4х. В конфигурационном пространстве устройства AGP регистр, на который указывает CAP_PTR, содержит CAP_ID=02 (биты [7:0]) и номер версии спецификации AGP (биты [23:20] - старшая цифра, биты [19:16] - младшая).

Регистр состояния AGP (адрес CAP_PTR+4) содержит следующие поля:

· биты [31:24] - RQ, допустимое суммарное число

запросов, находящихся в очередях: 0 - 1 команда, 255 - 256 команд;

· биты [23:10] - резерв (0);

· бит 9 - SB A, поддержка внеполосной подачи команд;

· биты [8:6] - резерв (0);

· бит 5 - 4G, поддержка адресации памяти свыше 4 Гбайт;

· бит 4 - FW, поддержка быстрой записи;

· биты 3 - резерв (0);

· биты [2:0] - RATE, поддерживаемые режимы обмена по AD и SBA: бит 0 - 1х, бит 1 - 2х, бит 2 - 4х.

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

· биты [31:24] - RQ_DEPTH, глубина очереди команд;

· биты [23:10] - резерв (0);

· бит 9 - 5BA_ENABLE, установка внеполосной подачи

команд;

· бит 8 - AGP_ENABLE, разрешение операций AGP;

· биты [7:6] - резерв (0);

· бит 5 - 4G, разрешение адресации памяти свыше 4

Гбайт (двухадресных циклов и посылок 4-го типа по SBA);

· бит 4 - FW_Enable, разрешение быстрой записи;

· биты 3 - резерв (0);

· биты [2:0] - DATA_RATE, установка режима обмена:

· бит 0 - 1х, бит 1 - 2х, бит 2 - 4х (должен быть

установлен лишь один бит).



<== предыдущая лекция | следующая лекция ==>
Прерывания | Шины PCMCIA, PC Card


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.