Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шины.PCI,.USB.и.FireWire

.pdf
Скачиваний:
59
Добавлен:
19.03.2016
Размер:
6 Mб
Скачать

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

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

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

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

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

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

прерываний системного управления (SMI) — для сигнализации о событиях в системе управления энергопотреблением и некоторых системных целей (на$ пример, эмуляции работы стандартного контроллера клавиатуры с помощью ус$ тройств USB).

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

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

Шины, устройства, функции и хост

Каждое устройство PCI при установке в конкретную систему получает идентифи катор, однозначно определяющий его положение на «дереве» шин PCI данного компьютера. Идентификатор имеет иерархическую структуру и состоит из номера шины (bus), номера устройства (device) и номера функции (function). Идентифи$ катор задает положение блока конфигурационных регистров заданной функции выбранного устройства в общем конфигурационном пространстве данной систе$ мы. Идентификаторы фигурируют при обращениях к регистрам конфигурацион$ ного пространства (см. главу 5), а также при обмене сообщениями между устрой$ ствами (DIM в PCI$X, см. главу 2).

Шина PCI представляет собой набор сигнальных линий (см. главу 6), непосред$ ственно соединяющих интерфейсные выводы группы устройств (слотов, микро$ схем на плате). В системе может присутствовать несколько шин PCI, соединенных мостами PCI (см. главу 4). Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя шины логически; главный мост соединяет глав$ ную шину PCI с хостом (процессором и памятью). Каждая шина имеет свой номер шины (PCI bus number). Шины нумеруются последовательно, начиная от хоста; шина PCI, подключенная к главному мосту, имеет нулевой номер.

Устройством PCI называется микросхема или карта расширения, подключенная к одной из шин PCI и использующая для доступа к конфигурационным регистрам выделенную ей линию IDSEL, принадлежащую этой шине. Устройство может быть многофункциональным, то есть состоять из множества (от 1 до 8) так называемых функций. Каждой функции отводится конфигурационное пространство в 256 байт, в PCI$X оно расширено до 4096 байт. Многофункциональные устройства должны отзываться только на конфигурационные циклы с номерами функций, для кото$

рых имеется конфигурационное пространство. При этом функция с номером 0 должна присутствовать обязательно (по результатам обращения к ней определя$ ется присутствие устройства), номера остальных функций назначаются разработ$ чиком устройства произвольно (в диапазоне 1–7). Простые (однофункциональ$ ные) устройства, в зависимости от реализации, могут отзываться либо на любой номер функций, либо только на номер функции 0.

Нумерацией и конфигурированием всех устройств PCI занимается хост — «хозя$ ин» шины PCI. Роль хоста, как правило, выполняет центральный процессор, свя$ занный с шиной PCI главным мостом, от которого и начинается нумерация шин. Конфигурирование всех устройств шины возможно только со стороны хоста — в этом заключается его особая роль. Ни с одной из шин PCI ни один задатчик не имеет доступа к конфигурационным регистрам всех устройств PCI, без чего пол$ ное конфигурирование недоступно. Даже с нулевой шины PCI задатчику недо$ ступны конфигурационные регистры главного моста, а без доступа к ним невоз$ можно запрограммировать распределение адресов между хостом и устройствами PCI. С других шин PCI возможности доступа к конфигурационным регистрам еще скромнее (см. главу 4).

Конфигурирование выполняется для каждой функции; полный идентификатор функции состоит из трех частей: номера шины, номера устройства и номера функ$ ции. Короткая форма идентификатора вида PCI0:1:2 (например, в сообщениях ОС Unix) означает функцию 2 устройства 1, подключенного к главной (0) шине PCI. Диспетчер устройств (конфигурационное ПО) должен оперировать списком всех функций всех устройств, обнаруженных на всех шинах PCI данной системы (ком$ пьютера).

В шине PCI принята географическая нумерация — номер устройства определяется местом его подключения. Номер устройства (device number или dev) определя$ ется той линией шины AD, к которой подключена его линия сигнала IDSEL. В сосед$ них слотах PCI, как правило, задействуются соседние номера устройств; их нуме$ рация определяется разработчиком системной платы (или пассивной кросс$платы в промышленных компьютерах). Часто для слотов используются убывающие но$ мера устройств, начиная с 20 или 15. Группы соседних слотов могут подключаться к разным шинам; на каждой шине PCI нумерация устройств независимая (могут быть и устройства с совпадающими номерами dev, но разными номерами шин). Устройства PCI, интегрированные в системную плату, используют ту же систему нумерации. Их номера «запаяны намертво», в то время как номера устройств на картах расширения можно изменять, переставляя их в разные слоты.

Одна карта PCI может содержать только одно устройство шины, к которой она подключается, поскольку ей в слоте выделяется только одна линия IDSEL. Если на карте размещают несколько устройств (например, 4$портовая карта Ethernet), то на ней приходится устанавливать мост — устройство PCI, к которому и обращают$ ся по линии IDSEL, выделенной данной карте. Этот мост организует на карте до$ полнительную шину PCI, к которой можно подключить множество устройств. Каждое из этих устройств получит свою линию IDSEL, но относящуюся уже к до$ полнительной шине PCI данной карты.

С точки зрения обращения к пространствам памяти и ввода/вывода географиче$ ский адрес (номер шины и номер устройства) в пределах одной шины безразли$ чен. Однако номер устройства определяет номер линии запроса прерывания, ко$ торой может пользоваться устройство. Подробнее об этом рассказывается в главе 3, здесь же отметим, что на одной шине устройства с номерами, отличающимися друг от друга на 4, будут использовать одну и ту же линию прерывания. В системах с несколькими шинами PCI перестановка устройства в слоты разных шин может влиять на производительность, что связано с характеристиками данной шины и ее удаленностью от главного моста.

Разобраться с нумерацией устройств и полученных ими линий прерываний на кон$ кретной плате можно, если устанавливать карту PCI поочередно в каждый из сло$ тов (отключая питание) и смотреть на сообщения об обнаруженных устройствах PCI, выводимых на дисплей в конце теста POST. В этих сообщениях будут фигу$ рировать и устройства PCI, установленные непосредственно на системной плате (не отключенные параметрами CMOS Setup). Но чтобы не возникло иллюзии про$ стоты, отметим, что «особо умные» операционные системы (например, Windows) не довольствуются полученными назначениями номеров прерываний и изменяют их по своему усмотрению.

Спецификации PCI и PCI X

PCI (Peripheral Component Interconnect) local bus — шина соединения периферий$ ных компонентов — является основной шиной расширения современных компью$ теров. Как уже говорилось ранее, она разрабатывалась в расчете на процессоры Pentium, но хорошо сочеталась и с процессорами 486. Сейчас PCI является жестко стандартизованной высокопроизводительной и надежной шиной расширения, под$ держиваемой рядом компьютерных платформ, включая PC$совместимые компь$ ютеры, PowerPC и другие. Спецификации шины PCI периодически обновляются. Настоящее описание охватывает все стандарты шины PCI вплоть до версии 2.3

иPCI$X до версии 2.0. Рассмотрим основные этапы развития этой технологии:

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

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

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

спецификация PCI 2.2 («PCI Local Bus Specification. Revision 2.2» от 18.12.1998) уточняет и разъясняет некоторые положения предшествующей версии 2.1; здесь появился новый механизм сигнализации прерываний MSI;

в версии PCI 2.3 (2002 год) определены биты для прерываний, облегчающие идентификацию источника; отменены карты расширения с питанием 5 В (оста$ лись только универсальные и 3,3 В); введен низкопрофильный (low profile) конструктив карт расширения; добавлены сигналы дополнительной шины SMBus. Эта версия, описанная в документе PCI Local Bus Specification, Revisi$ on 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 Addendum to the PCI Local Bus Specification, Revision 1.0b (2002 г.).

В версии PCI$X 2.0 введены новые режимы синхронизации с удвоенной (PCI$ X266) и учетверенной (PCI$X533) частотами передачи данных относительно тактовой частоты 133 МГц. Столь высокая частота требует низковольтного ин$ терфейса (1,5 В), режима коррекции ошибок (ECC). Кроме 32$ и 64$битных ва$ риантов появился и 16$битный (для встроенных компьютеров). Добавлен новый тип транзакций — сообщения, адресуемые устройству по его идентификатору (DIM). Конфигурационное пространство функции расширено до 4096 байт. Версия PCI$X 2.0 описывается парой документов: PCI$X Protocol Addendum to the PCI Local Bus Specification, Revision 2.0 (PCI$X PT 2.0) — дополнения к протоколу и PCI$X Electrical and Mechanical Addendum to the PCI Local Bus Specification, Revision 2.0 (PCI$X EM 2.0) — дополнения к электрическим и ме$ ханическим спецификациям.

В дополнение к спецификациям шины имеется ряд дополнительных специ$ фикаций:

спецификация на мосты, связывающие шины PCI друг с другом (и иными ши$ нами), — PCI to PCI Bridge Architecture Specification, Revision 1.1 (PCI Brid$ ge 1.1);

спецификация PCI BIOS — конфигурирование устройств PCI и контроллера прерываний;

обеспечение «горячего» подключения/отключения устройств — PCI Hot$Plug Specification, Revision 1.1 (PCI HP 1.1);

управление энергопотреблением — PCI Power Management Interface Specifica$ tion, Revision 1.1 (PCI PM 1.1).

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

Спецификации PCI публикуются и поддерживаются организацией PCI SIG (Special Interest Group, http://www.pcisig.org). Шина PCI существует в разных кон$ структивных исполнениях: Mini$PCI, Small PCI, Card Bus, Compact PCI (CPCI), PXI.

Протокол, команды и транзакции шин PCI и PCI X

Обмен информацией по шине PCI и PCI$X организован в виде транзакций — ло$ гически завершенных операций обмена. В типовой транзакции участвуют два уст$ ройства — инициатор обмена (initiator), он же ведущее устройство (master), и целе вое устройство (ЦУ, target)), оно же ведомое (slave). Правила взаимодействия этих устройств определяются протоколом шины PCI. Устройство может следить за транз$ акциями на шине и не являясь их участником (не вводя никаких сигналов); режи$ му слежения соответствует термин Snooping. Есть особый тип транзакции (Special Cycle) — широковещательный, в котором инициатор протокольно не взаимодей$ ствует ни с одним из устройств. В каждой транзакции выполняется одна коман да — как правило, чтение или запись данных по указанному адресу. Транзакция начинается с фазы адреса, в которой инициатор задает команду и целевой адрес. Далее могут следовать фазы данных, в которых одно устройство (источник дан$ ных) помещает данные на шину, а другое (приемник) их считывает. Транзакции, в которых присутствует множество фаз данных, называются пакетными. Есть

иодиночные транзакции (с одной фазой данных). Транзакция может завершиться

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

Сигнальный протокол шин PCI и PCI X

Состав и назначение интерфейсных сигналов шины раскрывает табл. 2.1. Состоя$ ния всех сигнальных линий воспринимаются по положительному перепаду CLK, и именно эти моменты в дальнейшем описании подразумеваются под тактами шины (на рисунках отмечены вертикальными пунктирными линиями). В разные момен$ ты времени одними и теми же сигнальными линиями управляют разные устрой$ ства шины, и для корректной (бесконфликтной) «передачи полномочий» требуется, чтобы существовал промежуток времени, в течение которого линией не управляет ни одно устройство. На временных диаграммах это событие — так называемый «пируэт» (turnaround) — обозначается парой полукруглых стрелок.

Таблица 2.1. Сигналы шины PCI

Сигнал

Назначение

AD[31:0]

Address/Data — мультиплексированная шина адреса/данных. В начале

 

транзакции передается адрес, в последующих тактах — данные

C/BE[3:0]#

Command/Byte Enable — команда/разрешение обращения к байтам.

 

Команда, определяющая тип очередного цикла шины, задается

 

четырехбитным кодом в фазе адреса

FRAME#

Кадр. Введением сигнала отмечается начало транзакции (фаза адреса),

 

снятие сигнала указывает на то, что последующий цикл передачи данных

 

является последним в транзакции

DEVSEL#

Device Select — устройство выбрано (ответ ЦУ на адресованную к нему

 

транзакцию)

IRDY#

Initiator Ready — готовность ведущего устройства к обмену данными

TRDY#

Target Ready — готовность ЦУ к обмену данными

STOP#

Запрос ЦУ к ведущему устройству на остановку текущей транзакции

LOCK#

Сигнал блокировки (захвата) шины для обеспечения целостного выполнения

 

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

 

требуется выполнить несколько транзакций PCI

REQ#

Request — запрос от ведущего устройства на захват шины

GNT#

Grant — предоставление ведущему устройству управления шиной

PAR

Parity — общий бит четности для линий AD[31:0] и C/BE[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 битный

 

режим, отключив буферные схемы старших байтов

продолжение

Таблица 2.1 (продолжение)

Сигнал

Назначение

ACK64#

Подтверждение 64 битного обмена. Сигнал вводится 64 битным ЦУ,

 

опознавшим свой адрес, одновременно с DEVSEL#. Отсутствие этого

 

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

 

разрядностью

INTA#, INTB#,

Interrupt A, B, C, D — линии запросов прерывания, чувствительность

INTC#, INTD#

к уровню, активный уровень — низкий, что допускает разделяемость

 

(совместное использование) линий

CLK

Clock — тактовая частота шины. Должна лежать в пределах 20—33 МГц,

 

начиная с PCI 2.1 может быть до 66 МГц, в PCI X до 100 и 133 МГц

M66EN

66MHz Enable — разрешение частоты синхронизации до 66 МГц (на картах

 

33 МГц заземлен, на 66 МГц — свободен)

PCIXCAP (38B) Возможности PCI X: на платах PCI — заземлен, на PCI X133 соединен

 

с землей через конденсатор 0,01 мкФ, на PCI X66 — параллельной

 

RC цепочкой 10 кОм, 0,01 мкФ.

SDONE

Snoop Done — сигнал завершенности цикла слежения для текущей

 

транзакции. Низкий уровень указывает на незавершенность цикла слежения

 

за когерентностью памяти и кэша. Необязательный сигнал, используется

 

только устройствами шины с кэшируемой памятью. Исключен начиная

 

с PCI 2.2

SBO#

Snoop Backoff — попадание текущего обращения к памяти абонента шины

 

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

 

только абонентами шины с кэшируемой памятью при алгоритме обратной

 

записи. Исключен начиная с PCI 2.2

SMBCLK

SMBus Clock — тактовый сигнал шины SMBus (интерфейс I2C). Введен

 

начиная с PCI 2.3

SMBDAT

SMBus Data — последовательные данные шины SMBus (интерфейс I2C) .

 

Введен начиная с 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 — сброс тестовой логики

 

 

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

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

Для адреса и данных используются общие мультиплексированные линии AD. Че$ тыре мультиплексированные линии C/BE[3:0] обеспечивают кодирование команд

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

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

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

Инициатор может начать следующую транзакцию и без такта покоя, установив FRAME# одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back$to$Back) могут быть обращены как к одному, так и к разным целевым уст$ ройствам. Первый тип быстрых смежных транзакций поддерживается всеми уст$ ройствами PCI, выступающими в роли целевого устройства. На поддержку второ$