Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Yedelev_megapack_VT49V / interfejsy-periferijnyx-ustrojstv.pdf
Скачиваний:
53
Добавлен:
15.02.2016
Размер:
2.79 Mб
Скачать

90

активных (Bus-Master) адаптеров, но арбитраж запросов при этом возлагается на сами адаптеры. Обычно VLB допускает установку не более двухBus-Master адаптеров, один из которых устанавливается в «Master»-слот.

Более подробную информацию об интерфейсе VLB можно найти в [21], [22].

Контрольные вопросы к разделам 4.1 – 4.3

1.Дайте общую характеристику ИВВ хоста ПК.

2.Дайте общую характеристику слотам расширения ПК.

3.В чем заключается конфигурирование ИВВ хоста ПК?

4.Дайте краткую характеристику ИВВ хостаISA.

5.Дайте краткую характеристику ИВВ хостаEISA.

6.Охарактеризуйте спецификациюPlug and Play для ИВВISA.

7.Кратко охарактеризуйте ИВВ хостаVLB.

4.4. Интерфейс ввода-вывода хоста РСI

4.4.1. Общие сведения

PCI (Peripheral Component Interconnect - взаимодействие периферийных компонентов). Этот интерфейс был предложен фирмойIntel в 1992 году (стандарт PCI 2.0 - в 1993) в качестве альтернативы локальной шине ИВВVLB/VLB2. Следует отметить, что разработчики этого интерфейса позиционируют его шину не как локальную, как промежуточную шину (mezzanine bus), т.к. она не является шиной ИВВ процессора. Поскольку шина ИВВ PCI не ориентирована на определенный процессор, ее можно использовать для других процессоров. ИВВ хоста PCI был адаптирован к таким процессорам, как Alpha, MIPS, PowerPC и SPARC. Именно PCI сменил NuBus на платформе Apple Macintosh. Помимо подключения устройств расширения (адаптеров), она являлась промежуточным звеном между ИВВ процессора и ИВВ хоста типаISA, EISA или MCA. ИВВ хоста PCI является четко стандартизованным высокопроизводительным и надежным ИВВ системного уровня. В настоящее время действует несколько спецификаций PCI (PCI 2.1-2.3, PCI-X, PCI Express).

4.4.2. Организация ИВВ хоста PCI и PCI-X

4.4.2.1. Общие сведения

PCI и PCI-X - синхронные параллельные ИВВ хоста магистрального типа, обеспечивающие надежный высокопроизводительный обмен и автоматическое конфигурирование устройств, подключаемых к их шинам. Интерфейсы PCI и PCI-X являются ближайшими «родственниками» с полной взаимной совместимостью устройств. Большинство положений, относящихся к PCI, относится и к PCI-X, так что в дальнейшем описании термин «PCI» в основном относится к обоим вариантам (различия подчеркиваются особо).

ИВВ PCI позволяет объединять одноранговые устройства. Любое устройство, подключенное к шине PCI, может выступать как в роли инициатора транзакций (задатчика), так и в роли целевого устройства. (Транзакция - групповая операция; обработка запроса; входящее сообщение [14]). Целевое устройство отвечает на транзакции, адресованные к его ресурсам (областям памяти и портам ввода-вывода). Ядро компьютера (центральный процессор, память и северный мост) для PCI также представляется устройством - главным мостом (host bridge) (хост-адаптером ИВВ PCI). В транзакциях к устройствам PCI, инициированных центральным процессором, главный мост является задатчиком. В транзакциях от устройств PCI, обращающихся к ядру(в основном к системной памяти), главный мост является целевым

91

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

Наличие активных устройств (помимо ЦП) позволяет в компьютере выполнять параллельно несколько операций обмена: одновременно с обращениями процессора могут выполняться транзакции от мастеров шины PCI. Эта параллельность — PCI Concurrency - возможна лишь для обменов по непересекающимся путям. Одновременный доступ нескольких инициаторов к одному ресурсу (как правило, к системной памяти) требует довольно сложной организации

контроллера этого ресурса, но ради повышения суммарной эффективности работы на эти усложнения приходится идти. В системе с несколькими шинами интерфейсаPCI возможно параллельное функционирование устройств-мастеров на разных шинах ИВВPCI - PCI Peer Concurrency. Однако если они обращаются к одному ресурсу(системной памяти), то какието фазы этих обменов все-таки приходится выполнять последовательно.

Каждая физическая шина ИВВ PCI позволяет объединять лишь небольшое число устройств (обычно не более шести). Для увеличения числа подключаемых устройств применяютмос- ты PCI (PCI-to-PCI Bridge) - устройства PCI с парой интерфейсов, которыми отдельные шины PCI объединяются в древовидную структуру. В корне этой структуры находитсяхост

«хозяин шины», в обязанности которого входит конфигурирование всех устройств, включая мосты. В роли хоста, как правило, выступает центральный процессор с главным мостом (хост-адаптером). Мосты позволяют объединять шиныPCI и PCI-X с разными характеристиками, а также подключать к PCI/PCI-X шины других ИВВ: (E)ISA, MCA, шины ИВВ блокнотных ПК, PCI Express, Hyper Transport и др.

Шина ИВВ PCI/PCI-X имеет несколько вариантов конструктивного оформления, некоторые из них при наличии специального контроллера допускают «горячую» замену устройств:

-

шина объединения

компонентов на печатной плате(системной плате или

плате

 

устройства расширения);

 

-

разъемы (слоты) для

установки карт(устройств) расширения (в конструктивах PC

и

 

MCA);

 

 

-разъемы для малогабаритных карт расширения(Card Bus, Small PCI, Mini PCI);

- модульные конструктивы для промышленных и инструментальных компьютеро

(Compact PCI, PXI).

Важной частью ИВВ PCI является система автоматического конфигурирования; конфигу-

рирование выполняется каждый раз при включении питания и инициализации системы. Специальное конфигурационное ПО позволяет обнаружить и идентифицировать все установленные устройства, а также выяснить их потребности в системных ресурсах(областях памяти, адресах ввода-вывода, прерываниях). Спецификация PCI требует от устройств способности перемещать все занимаемые ресурсы(области в пространстве памяти и вводавывода) в пределах доступного адресного пространства. Это позволяет обеспечить бесконфликтное распределение ресурсов для множества устройств. Одно и то же функциональное устройство может быть сконфигурировано по-разному, отображая свои операционные регистры либо на пространство памяти, либо на пространство адресов ввода-вывода. Драйвер может определить текущую настройку, прочитав содержимое регистра базового адреса устройства. Драйвер также может определить номер запроса на прерывание, который используется устройством. Для конфигурирования устройств существует специальный набор функций PCI BIOS.

92

4.4.2.2. Взаимодействие устройств

С программной точки зрения устройство PCI может иметь следующие компоненты:

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

-операционные регистры (необязательные), отображенные на пространство памяти или/и ввода-вывода (эти регистры используются для текущего управления и взаимодействия с устройством);

-локальная память (необязательная), отображенная на выделенные области физических адресов основной (системной) памяти;

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

-мастер шины, обеспечивающий прямой доступ к системной памяти(DMA) и взаимодействие с другими устройствами.

С устройством PCI, когда оно является целевым, можно взаимодействовать несколькими способами:

-командами обращения к памяти и портам ввода-вывода; эти команды адресуются к областям, выделенным устройству при конфигурировании;

-командами обращения к конфигурационным регистрам; эти команды адресуются по идентификатору - номеру шины (интерфейса ИВВ хоста), устройства и функции

(компонентам многофункционального устройства PCI);

-специальными широковещательными сообщениями, передаваемыми для всех устройств выбранного ИВВ хоста;

-командами пересылки сообщений; команды адресуются по идентификатору устройства (эта возможность появилась в PCI-X 2.0).

Для обращений к пространству памяти используется32или 64-битная адресация, причем разрядность адресации не зависит от разрядности шины. Таким образом, шина позволяет адресовать до 232 (4 Гбайт) или 264 (более 1,8×1019) байт памяти. На шине PCI фигурирует физический адрес памяти. Для адресации портов ввода-вывода используется32-битная адресация; в компьютерах на базе процессоров х86 из них задействованы только 16 младших битов. В системе адресации ввода-вывода реализована поддержка особенностей, связанных с адресацией портов в PC-совместимых компьютерах с шиной ИВВISA. Для устройств PCI и PCI-X рекомендуется по возможности избегать использования портов ввода-вывода, отображая операционные регистры устройств на пространство памяти (Memory-Mapped I/O).

Конфигурационные регистры устройств PCI расположены в обособленном пространстве адресов (отдельном от пространства адресов памяти и ввода-вывода). Каждому устройству (точнее, каждой функции сложного устройства) выделяется 256-байтный блок конфигурационных регистров; в спецификации PCI-X 2.0 размер блока увеличен до 4096 байт. Частью этого блока является обязательный набор конфигурационных регистров, помощью которых осуществляются идентификация устройств, их конфигурирование и управление их свойствами. В конфигурационных регистрах, в частности, указываются адреса, отведенные устройству (как целевому), - через них разрешается работа в роли инициатора и целевого устройства; кроме того, через них конфигурируются прерывания. Конфигурационные регистры обеспечивают возможность автоматической настройки всех устройств интерфейсаPCI. К этим регистрам система обращается на этапе конфигурированияпереучета обнаруженных устройств, выделения им не перекрывающихся ресурсов(областей памяти и пространства ввода-вывода) и назначения номеров аппаратных прерываний. При дальнейшей регулярной работе взаимодействие прикладного ПО с устройствами осуществляется преимущественно

93

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

Обращения к регистрам и памяти устройствPCI выполняются командами интерфейса PCI. Команды может подавать любой инициатор - как хост (главный мост) по командам центрального процессора, так и рядовое устройство PCI. Возможность распространения ряда команд зависит от взаимного расположения инициатора и целевого устройства на ветвях дерева шин PCI. Однако хост может безусловно подать любую команду любому устройствуPCI. Только хост всегда имеет доступ к конфигурационным регистрам всех устройств(и мостов), поэтому он и должен заниматься конфигурированием. После конфигурирования любое устройство PCI может безусловно обратиться к системной памяти, то есть реализовать

прямой доступ к памяти (DMA).

Устройства PCI могут вырабатывать запросы аппаратных прерываний:

-обычные маскируемые - для сигнализации событий в устройстве; эти прерывания могут сигнализироваться как традиционным способомпо специальным сигнальным линиям,

так и передачей сообщений (Message Signal Interrupt, MSI);

-немаскируемые - для сигнализации о серьезных ошибках;

-прерывания системного управления(System Management Interrupt, SMI) - для сигнализации о событиях в системе управления энергопотреблением и некоторых системных целей (например, эмуляции работы стандартного адаптера клавиатуры с помощью устройств

USВ).

Наиболее

эффективно возможности интерфейсаPCI используются при применении

активных

устройств - мастеров шины (PCI Bus Master). Только эти устройства могут

обеспечить скорость передачи данных, приближающуюся к декларированной пиковой пропускной способности. Максимальная производительность обменов по шинеPCI достигается только в пакетных транзакциях значительной длины. Транзакции по инициативе программы, исполняемой на ЦП, проводимые главным мостом, как правило, являются одиночными (или очень короткими пакетными). По этой причине программно-управляемый обмен данными с устройствамиPCI по производительности значительно уступает обмену, выполняемому устройством-мастером. Таким образом, применение активных устройств дает двойной эффект: разгружает центральный процессор и обеспечивает лучшее использование пропускной способности ИВВ PCI.

4.4.2.3. Спецификации PCI и РСI-Х

ИВВ хоста PCI (Peripheral Component Interconnect - взаимодействие периферийных компонентов) имеет уже длинную историю.

-PCI 1.0 (1992 г.) - определена общая концепция, описаны сигналы и протокол32-битно- ого параллельного синхронного интерфейса с тактовой частотой до 33,3 МГц и пиковой пропускной способностью 132 Мбайт/с.

-PCI 2.0 (1993 г.) - введена спецификация коннекторов и карт(устройств) расширения с возможным расширением разрядности до64 бит (пропускная способность до264 Мбайт/с), предусмотрены варианты питания интерфейсных схем напряжением 5 и 3,3 В.

-PCI 2.1 (1995 г.) - введена частота 66 МГц (только для устройств с напряжением питания 3,3 В), что позволило обеспечить пиковую пропускную способность до 264 Мбайт/с в 32битном варианте и 528 Мбайт/с в 64-битном.

-PCI 2.2 (1998 г.) - уточнения версии 2.1, введен новый механизм сигнализации прерыва-

ний - MSI.

94

-PCI 2.3 (2002 г.) - определены биты для прерываний, облегчающие идентификацию

источника; отменены карты расширения с питанием 5 В (остались только универсальные и 3,3 В); введен низкопрофильный (low profile) конструктив карт расширения; добавлены сигналы дополнительной шины последовательного интерфейсаSM-Bus (System Management Bus). Эта версия, описанная в документе PCI Local Bus Specification, Revision 2.3, является базой для современных расширений.

-PCI 3.0 (2004 г.) - отменены системные платы на5 В (остались только универсальные и

3,3 В).

На базе PCI 2.3 в 1999 году появилось расширение PCI-X, призванное существенно повысить пиковую пропускную способность интерфейса за счет увеличения частоты передачи, а также повысить эффективность работы за счет оптимизации протокола. В протокол введены расщепленные транзакции и атрибуты, позволяющие участникам транзакции планировать свои действия. Расширение PCI-X обеспечивает совместимость (механическую, электрическую и программную) устройств и системных плат с обычной шинойPCI, но, естественно, все устройства шины подстраиваются под самого «слабого» участника:

-PCI-X 1.0 - тактовая частота до133 МГц (для интерфейса на3,3 В), что дает варианты, называемые PCI-X66, PCI-X100, PCI-X133. Пиковая пропускная способность достигает 528 Мбайт/с в 32-битном варианте и более 1 Гбайт/с - в 64-битном.

-PCI-X 2.0 - введены новые режимы синхронизации с удвоенной(PCI-Х266) и учетверенной (PCI-X533) частотами передачи данных относительно тактовой частоты133 МГц. Столь высокая частота требует низковольтного интерфейса(1,5 В) и режима коррекции ошибок (Error Checking and Correcting, ЕСС). Помимо 32- и 64-битных вариантов поя-

вился и 16-битный (для встроенных компьютеров). Добавлен новый тип транзакцийсообщения, адресуемые устройству по его идентификатору(DIM). Конфигурационное пространство функции расширено до 4096 байт.

В дополнение к спецификациям ИВВ PCI и PCI-X как таковых, имеется ряд дополнительных спецификаций на мосты РРВ (PCI-to-PCI Bridge), связывающие шины PCI друг с другом, PCI BIOS (конфигурирование устройств PCI и контроллера прерываний), обеспечение «горячего» подключения/отключения устройств (PCI Hot-Plug), управление энергопотреблением.

На базе ИВВ PCI 2.0 фирмой Intel был разработан выделенный интерфейс для подключения графического акселератора AGP.

Спецификации PCI публикуются и поддерживаются организациейPCI SIG (Special Interest Group, http://www.pcisig.org).

Интерфейс PCI существует в разных конструктивных исполнениях: слоты и карты расширения обычных PC-совместимых компьютеров; Mini-PCI, Small PCI и Card Bus - для малогабаритных компьютеров; Compact PCI (CPCI) и PXI - для промышленных и инструментальных компьютеров.

4.4.3. Протокол, транзакции и команды интерфейсов PCI

и PCI-X

4.4.3.1. Протокол и транзакции

Обмен информацией по шинам ИВВ PCI и PCI-X организован в виде транзакций - логически завершенных операций обмена. В каждой транзакции выполняется одна команда - как правило, чтение или запись данных по указанному адресу. Транзакция начинается с фазы адреса, в которой инициатор задает команду и целевой адрес. Далее могут следовать фазы данных, в которых одно устройство (источник данных) помещает данные на шину, а другое (приемник)

95

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

Состав и назначение сигналов шины интерфейса PCI следующий:

AD[31:0] - Address/Data - мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах – данные;

С/ВЕ[3:0]# - Command/Byte Enable - команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса;

FRAME# - кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции;

DEVSEL# - Device Select - устройство выбрано (ответ целевого устройства (ЦУ) на адресованную к нему транзакцию);

IRDY# - Initiator Ready - готовность ведущего устройства к обмену данными; STOP# - запрос ЦУ к ведущему устройству на остановку текущей транзакции; GNT# - Grant - предоставление управления шиной ведущему устройству;

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

REQ# - Request - запрос от ведущего устройства на захват шины; PAR - Parity - общий бит четности для линий AD[31:0] и С/ВЕ[3:0]#;

PERR# - Parity Error - сигнал об ошибке четности (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку;

PME# - Power Management Event - сигнал о событиях, вызывающих изменение режима потребления (дополнительный сигнал, введенный в PCI 2.2);

CLKRUN# - Clock running - шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений);

PRSNT[1,2]# - Present - индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой;

RST# - Reset - сброс всех регистров в начальное состояние (по нажатию кнопки Reset и при перезагрузке);

IDSEL - Initialization Device Select - выбор устройства в циклах конфигурационного считывания и записи; на эти циклы отвечает устройство, обнаружившее на данной линии высокий уровень сигнала;

SERR# - System Error - системная ошибка. Ошибка четности адреса или данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI;

REQ64# - Request 64 bit - запрос на 64-битный обмен. Сигнал вводится 64-битным инициатором, по времени он совпадает с сигналом FRAME#. Во время окончания сброса (сигналом RST#) сигнализирует 64-битному устройству о том, что оно подключено к 64битной шине. Если 64-битное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов;

АСК64# - Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL#. Отсутствие этого подтверждения заставит инициатор

96

выполнять обмен с 32-битной разрядностью;

INTA#, INTB#, INTC#, INTD# - Interrupt А, В, С, D - линии запросов прерывания, чувствительность к уровню, активный уровень - низкий, что допускает совместное использование линий;

CLK - Clock - тактовая частота шины. Должна лежать в пределах 20-33 МГц; начиная с РСI 2.1 - до 66 МГц, в PCI-X - до 100 и 133 МГц;

M66EN - 66MHz Enable - разрешение частоты синхронизации до 66 МГц (на картах контакт на 33 МГц заземлен, на 66 МГц - свободен);

PCIXCAP - Возможности PCI-X: на платах PCI контакт заземлен, на РСI-Х133 соединен с землей через конденсатор 0,01 мкф, на PCI-X66 - параллельной RC-цепочкой 10 кОм, 0,01 мкф;

SDONE - Snoop Done - сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью. Исключен, начиная с PCI 2.2;

SBO# - Snoop Backoff - попадание текущего обращения к памяти абонента шины в модифицированную строку кэша. Необязательный сигнал, используется только абонентами шины с кэшируемой памятью при алгоритме обратной записи. Исключен начиная с PCI 2.2;

SMBCLK - SMBus Clock - тактовый сигнал интерфейса SMBus (протокол I2С). Введен, начи-

ная с PCI 2.3;

SMBDAT - SMBus Data - последовательные данные интерфейса SMBus (протокол I2С). Введен начиная с PCI 2.3;

TCK - Test Clock - синхронизация тестового интерфейса JTAG;

TDI - Test Data Input - входные данные тестового интерфейса JTAG; TDO - Test Data Output - выходные данные тестового интерфейса JTAG; TMS - Test Mode Select - выбор режима для тестового интерфейса JTAG; TRST - Test Logic Reset - сброс тестовой логики.

Состояния всех сигнальных линий воспринимаются по положительному перепадуCLK. В разные моменты времени одними и теми же сигнальными линиями управляют разные устройства, подключенные к шине ИВВ PCI. В каждый момент времени шиной интерфейса может управлять только одно ведущее устройство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов: REQ# для запроса на управление шиной и GNT#, для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME#) только при полученном активном сигнале GNT# и дождавшись отсутствия активности шины интерфейса.

Для адреса и данных используются общие мультиплексированные линииAD. Линии С/ВЕ [3:0] обеспечивают кодирование команд в фазе адреса и разрешение байтов в фазе данных. В фазе адреса (начало транзакции) ведущее устройство активирует сигналFRAME#, передает целевой адрес по шине AD, а по линиям С/ВЕ# - информацию о типе транзакции (команду). Адресованное целевое устройство отзывается сигналомDEVSEL#. Ведущее устройство указывает на свою готовность к обмену данными сигналомIRDY#, эта готовность может быть выставлена и до получения сигналаDEVSEL#. Когда и целевое устройство оказывается готово к обмену данными, оно устанавливает сигнал TRDY. Данные по шине АD передаются только при одновременном наличии сигналовIRDY# и TRDY#. С помощью этих сигналов ведущее, и целевое устройства согласуют свои скорости, вводя такты ожидания (wait states). На рис. 4.3 приведена временная диаграмма обмена, в которой и ведущее и целевое устройства вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали бы их до конца обмена, то в каждом такте после фазы адреса передавалось бы по 32 бита данных, что обеспечило бы выход на предельную производительность

97

обмена. На шине интерфейса PCI все транзакции трактуются какпакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Количество фаз данных в пакете явно не указывается. Если устройство не поддерживает пакетные транзакции в ведомом режиме, то оно должно потребовать прекращения пакетной транзакции в течение первой фазы данных. В ответ на это ведущее устройство завершает данную транзакцию и продолжает обмен последующей транзакцией со следующим значением адреса. После завершающей фазы данных ведущее устройство снимает сигнал IRDY#, и шина переходит в состояние покоя (idle).

Рис. 4.3. Временная диаграмма цикла обмена на шине интерфейса PCI

Инициатор может начать следующую транзакцию и без такта покоя, такие быстрые смеж- ные транзакции (fast back-to-back transactions) могут быть обращены как к одному, так и к разным целевым устройствам. При обмене данными в режимеPCI-X быстрые смежные транзакции недопустимы.

Протокол ИВВ PCI обеспечивает надежность обмена - ведущее устройство всегда получает информацию об отработке транзакции целевым устройством. Для повышения достовер- ности обмена применяется механизм контроля четности: линии AD[31:0] и С/ВЕ[3:0]# в фазах адреса и данных защищены битом четностиPAR. При обнаружении ошибки устройство вырабатывает сигнал PERR#.

Каждая транзакция на шине ИВВ должна быть завершена планово или прекращена по инициативе ведущего или целевого устройства.

Ведущее устройство может завершить транзакцию одним из следующих способов.

-Completion - нормальное завершение по окончании обмена данными;

-Time-out - завершение по тайм-ауту, если целевое устройство оказалось непредвиденно медленным или запланирована слишком длинная транзакция;

-Master-Abort - прекращение транзакции из-за отсутствия ответа от целевого устройства.

Транзакция может быть прекращенапо инициативе целевого устройства(по сигналу STOP#) по разным причинам:

-retry - повтор, целевое устройство из-за внутренней занятости не успевает выдать первые данные в положенный срок(это указание ведущему устройству на необходимость повторного запуска той же транзакции);

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

98

-target-abort - отказ, целевое устройство не может обслужить данный запрос(неподдерживаемая команда, фатальная ошибка).

Прекращение типа retry служит для организацииотложенных транзакций (delayed transactions). Отложенные транзакции используются только медленными целевыми устройствами, а также мостами PCI при трансляции транзакций на другую шину. Прекращая (для инициатора) транзакцию условием retry, целевое устройство внутренне выполняет данную транзакцию. Когда инициатор повторит эту транзакцию, у целевого устройства(или моста) уже будет готов результат(данные чтения или состояние выполнения записи), который оно быстро вернет инициатору.

4.4.3.2. Команды ИВВ PCI

Команды PCI определяют направление и тип транзакций, а также адресное пространство, к которому они относятся. Набор команд ИВВ PCI включает:

-команды чтения и записи портов ввода-вывода (обращения к пространству портов);

-команды обращения к памяти нескольких типов, в том числе к отображенным на память устройствам ввода-вывода и«настоящей» памяти, допускающей предвыборки (чтение строк, множественное чтение, запись с инвалидацией);

-команды конфигурационных чтения и записи(обращения к конфигурационному про-

странству устройств);

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

-команда подтверждения прерывания (чтение вектора прерываний).

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

Подробности см. в [19].

4.4.4. Прямой доступ к памяти, эмуляция ISA DMA (PC/PCI, DDMA)

ИВВ PCI не предоставляет возможности прямого доступа к памяти с использованием центра - лизованного контроллера в стиле 8237А (как в ИВВ ISA). Для разгрузки центрального процессора от рутинных перекачек данных предлагается прямое управление шиной со стороны устройств, называемых ведущими устройствами, или мастерами шипы (PCI Bus Master).

Степень интеллектуальности ведущего устройства может быть разной. В простейшем варианте ведущее устройство обеспечивает пересылку блоков данных между устройством и основной памятью (или памятью других устройств) по указанию от ЦП. Здесь ЦП командами обращения к определенным регистрам ведущего устройства задает начальный адрес, длину блока, направление пересылки и разрешает запуск передачи. После этого пересылка выполняется по готовности (или инициативе) устройства, без отвлечения ЦП. Таким образом выполняется прямой доступ к памяти (DMA). Более сложный контроллер DMA может организовывать сцепку буферов при чтении, разбросанную запись и т.п. Более интеллектуальное ведущее устройство, как правило, обладающее собственным микропроцессором, не ограничивается такой простой работой по указке ЦПоно выполняет обмены уже по программе своего микропроцессора. Таким интеллектом обладают, например, хост-адаптеры последовательных периферийных ИВВ USB и IEEE 1394.

Для совместимости устройствPCI со старым PC-ориентированным ПО и упрощения устройств PCI фирма Intel разработала специальный протокол PC/PCI DMA, позволяющий централизованно эмулировать стандартную (для PC) связку контроллеров DMA 8237. Аль-

99

тернативное решение - механизм DDMA (распределенный доступ DMA) позволяет «расчленить» стандартный контроллер и отдельные его каналы эмулировать средствами картPCI. Оба этих механизма реализуемы только как часть моста между первичной шиной ИВВPCI и шиной ИВВ ISA, поэтому их поддержка может обеспечиваться(или не обеспечиваться) лишь на системной плате и разрешаться в CMOS Setup.

4.4.5. Пропускная способность ИВВ PCI и PCI-X

Декларируемая высокая пропускная способность ИВВ достигается только в длинных пакетных циклах, однако пакетные циклы выполняются далеко не всегда. Процессор общается с устройствами PCI инструкциями обращения к памяти или вводу-выводу через главный мост, который команды процессора транслирует в транзакции ИВВ хостаPCI. Поскольку у процессоров х86 основные регистры 32-битные, то одна инструкция порождает транзакцию с устройством PCI, в которой передается не более 4 байт данных, что соответствует одиночной передаче. Однако при записи массива данных в устройство PCI (передача с последовательно нарастающим адресом) мост может пытаться организовать пакетные циклы. Пакетные циклы записи можно наблюдать, например, передавая массив данных из ОЗУ в устройствоPCI строковой инструкцией MOVSD, используя префикс повтораREP. Тот же эффект даст и цикл последовательных операцийLODSW, STOSW (и иных инструкций обращения к памяти).

Стремиться к пакетной передаче транзакций записи в устройствоPCI следует только в том случае, если устройство PCI поддерживает пакетные передачи в ведомом(target) режиме. Если это не так, попытка пакетной передачи приведет даже к небольшой потере производительности.

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

4.4.6. Прерывания PCI - INTx#, РМЕ#, MSI и SERR#

4.4.6.1. Общие сведения о прерываниях PCI

Устройства PCI имеют возможность сигнализировать об асинхронных событиях с помощью прерываний. В ИВВ хоста PCI возможны четыре типа сигнализации прерываний:

-традиционная проводная сигнализация по линиямINTx;

-проводная сигнализация событий управления энергопотреблением по линии РМЕ#;

-сигнализация с помощью сообщенийMSI;

-сигнализация фатальной ошибки по линииSERR#.

В первых версиях (до PCI 2.2 включительно) не было общепринятого способа программной индикации и запрета прерываний. В PCI 2.3 в регистре состояния конфигурационного пространства устройства (функции) определен бит, по которому ОС может определить, что данная функция вызвала прерывание; в регистре команд определен бит запрета прерывания.

4.4.6.2. Традиционные прерывания PCI - INTx#

Для устройств PCI выделяются четыре проводных линии

запросов(IRQX,

IRQY, IRQZ,

IRQW), соединяемых с

контактамиINTA#,

INTB#,

INTC# и

INTD# всех

слотовPCI с

циклическим смещением

цепей рис. 4.4.

Мосты

PCI просто электрически соединяют

одноименные линии INTx своих первичных и вторичных шин. В системах с APIC (Advanced Programmable Interrupt Controller - усовершенствованный программируемый контроллер

100

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

Устройство PCI вводит сигнал прерываниянизким уровнем (выходом с открытым коллектором или стоком) на выбранную линию INТх#. Этот сигнал должен удерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Линии запросов от слотов и

устройств PCI системной платы коммутируются на входы контроллеров прерываний относительно произвольно. Конфигурационное ПО может определить и указать занятые линии запросов и номер входа контроллера прерываний обращением к конфигурационному пространству устройства. Драйвер (или иное ПО), работающий с устройством PCI, опреде-

ляет номер входа контроллера прерывания, доставшийся устройству(точнее, функции), чтением конфигурационного регистраInterrupt Line. Назначение прерываний устройствам (функциям) выполняет процедура POST. Параметрами CMOS Setup (PCI/PNP Configuration) пользователь задает номера запросов прерываний, доступных ИВВ PCI. POST определяет соответствие линий INTA# ... INTD# номерам запросов контроллера и соответствующим образом программирует коммутатор запросов. Влияние на аппаратную платформу новых версий ОС настолько велико, что они позволяют себе управлять коммутатором запросов прерываний. Эту возможность можно запретить или разрешить, например, в ОС Windows снятием или установкой флажка"Использовать управление IRQ (PCI Interrupt Steering)" в окне свойств шины PCI (Панель управления > Системные устройства > Шина PCI).

Рис. 4.4. Структурная схема традиционной подсистемы аппаратных прерываний ПК с ИВВ PCI

В PCI BIOS имеются функции определения возможностей и конфигурирования прерываний. С их помощью для каждого устройства(на каждой шине) можно определить, с какими входами контроллера прерываний(IRQx) могут быть связаны его линииINTx и с каким именно входом шина связана в данный момент, а также какие входыIRQx отводятся исключительно шине ИВВPCI. Есть функция программирования коммутатора запросов, которая может использоваться только конфигурационным ПО(BIOS, ОС), но никак не драйвером устройства.

101

4.4.6.3. Сигнализация событий управления энергопотреблением - РМЕ#

Линия РМЕ#, введенная в PCI 2.0, служит для сигнализации в системе управления энергопотреблением (Power Management, PM) - для смены состояния устройств, генерации пробуждения системы по событию. Эта линия электрически доступна всем устройствамPCI

и никак не обрабатывается мостами, лишь доводится до всех абонентов. Обработчик прерывания от РМЕ# может выявить устройство, подавшее сигнал, путем программных обращений к конфигурационным регистрам всех устройств, способных к генерации этого сигнала.

4.4.6.4. Прерывания сообщениями - MSI

ВИВВ PCI имеется прогрессивный механизм оповещения об асинхронных событиях, основанный на передаче сообщений MSI (Message Signaled Interrupts). Здесь для сигнализации запроса прерывания устройство запрашивает управление шиной ИВВ и, получив его, посылает сообщение. Сообщение выглядит как обычная запись двойного слова в ячейку памяти; адрес (32-битный или 64-битный) и шаблон сообщения на этапе конфигурирования устройств записываются в конфигурационные регистры устройства(точнее, функции). В сообщении старшие 16 бит всегда нулевые, а младшие 16 бит несут информацию об источнике прерывания. Устройство (функция) может нуждаться в сигнализации нескольких типов запросов; в соответствии с его потребностями и своими возможностями система указывает устройству (функции), сколько различных типов запросов оно может вырабатывать.

Прерывания через MSI от одних устройств в одной системе могут генерироваться наряду с обычными прерываниями INTx# от других устройств. Но каждое устройство (функция), генерирующее прерывания через MSI, не должно использовать прерывания через линии INTx#.

Механизм MSI может применяться на системных платах, имеющих контроллер прерываний APIC. Правда, не все преимущества MSI реально используются. Так, для системных плат на чипсетах с хабом ICH2 и ICH3 фирмы Intel поддержка MSI сводится к организации альтернативных путей подачи запросов IRQ [1:23] на входы APIC (запросы IRQ с номерами 0, 2, 8 и 13 через MSI не передаются). Всем устройствам PCI назначается один и тот же адрес сообщений (Message Address = FEC00020h), по которому в APIC находится регистр IRQ Pin assertion. В сообщении указывается номер взводимого запроса прерывания в диапазоне1-23 (исключая 2, 8 и 13). Линии запросов для прерываний черезMSI не могут использоваться совместно (разделяемо) с прерываниями, полученными другими способами(по линиям запросов от устройств PCI и от других устройств системной платы). Возможно, на других платформах прерывания через MSI используются более эффективно.

Более подробную информацию о прерываниях в PCI можно найти в [19].

4.4.7. Конфигурирование и BIOS устройств PCI и PCI-X

4.4.7.1. Конфигурирование устройств

В шину PCI изначально заложены возможности автоматического конфигурирования системных ресурсов (пространств памяти и ввода-вывода, а также линий запроса прерываний). Автоматическое конфигурирование устройств (выбор адресов и прерываний) поддерживается средствами BIOS и ОС; оно ориентировано на технологию PnP. Стандарт PCI определяет для каждой функции конфигурационное пространство размером до256 8-битных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным командам шины Configuration Read и Configuration Write, вырабатываемым с помощью аппаратно-программного механизма.