Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
арх_лекция_14.doc
Скачиваний:
6
Добавлен:
17.04.2019
Размер:
196.61 Кб
Скачать

Арбитраж шины pci

Чтобы передать по шине PCI какой-нибудь сигнал, устройство сначала должно получить к ней доступ. Шина PCI управляется централизованным арбитром, как показано на рис. 3.48. В большинстве случаев арбитр шины встраивается в один из мостов между шинами. От каждого устройства PCI к арбитру тянутся две специ­альные линии. Одна из них (REQ#) используется для запроса шины, а вторая (GNT#) — для получения разрешения на доступ к шине.

Чтобы сделать запрос на доступ к шине, устройство PCI (в том числе и цент­ральный процессор) устанавливает сигнал REQ# и ждет, пока арбитр не выдаст сигнал GNT#. Если арбитр выдал сигнал GNT#, то устройство может использо-Bi'Tb шину в следующем цикле. Алгоритм, которым руководствуется арбитр, не зависит от технических характеристик шины PCI. Допустим арбитраж по кругу, цо приоритету и другие схемы арбитража. Хороший арбитр должен быть справед­лив, чтобы не заставлять некоторые устройства ждать целую вечность.

Рис. 2. В шине PCI используется централизованный арбитр

Шина предоставляется для одной транзакции, хотя продолжительность этой транзакции теоретически произвольна. Если устройству нужно совершить вторую транзакцию и ни одно другое устройство не запрашивает шину, оно может занять шину снова, хотя обычно между транзакциями нужно вставлять пустой цикл. Од­нако при особых обстоятельствах (при отсутствии конкуренции на доступ к шине) устройство может совершать последовательные транзакции без пустых циклов между ними. Если задающее устройство осуществляет очень длительную пере­дачу, а какое-нибудь другое устройство выдало запрос на доступ к шине, арбитр может сбросить линию GNT#. Предполагается, что задающее устройство следит за линией GNT#. Если линия сбрасывается, устройство должно освободить шину в следующем цикле. Такая система позволяет осуществлять очень длинные пере­дачи (что весьма рационально) при отсутствии конкуренции на доступ к шине, однако при этом она быстро реагирует на запросы шины, поступающие от других устройств.

Сигналы шины pci

Шина PCI содержит ряд обязательных сигналов (табл. 1) и ряд факультатив­ных сигналов (табл. 3.6). Оставшиеся выводы используются для питания, «земли» и разнообразных связанных сигналов. В столбцах «Задающее устройство» и «Под­чиненное устройство» указывается, какое из устройств устанавливает сигнал при обычной транзакции. Если сигнал выдается другим устройством (например, CLK), оба столбца остаются пустыми.

Теперь давайте рассмотрим каждый сигнал шины PCI отдельно. Начнем с обя­зательных (32-битных) сигналов, а затем перейдем к факультативным (64-битным). Сигнал CLK запускает шину. Большинство сигналов совпадают с ним во времени. В отличие от шины ISA, в шине PCI транзакция начинается на заднем фронте сиг­нала CLK, то есть не в начале цикла, а в середине.

Таблица 1. Обязательные сигналы шины PCI

Сигнал

Количество

линий

Задающее

устройство

Подчиненное

устройство

Комментарий

CLK

1

Тактовый генератор (33 МГц или 66 МГц)

AD

32

X

X

Объединенные адресные и информационные линии

PAR

1

X

Бит четности для адреса или данных

C/BE#

4

X

1) команда шине

2) битовый массив, который

показывает, какие байты из слова

нужно считать (или записать)

FRAME#

1

X

Указывает, что установлены сигналы

AD и С/ВЕ

IRDY#

1

X

При чтении: задающее устройство готово принять данные; при записи:

данные находятся в шине

IDSEL

1

X

Считывание пространства конфигураций

DEVSEL#

1

X

Подчиненное устройство распознало свой адрес и ждет сигнала

TRDY#

1

X

При чтении: данные находятся на линиях AD; при записи: подчиненное устройство готово принять данные

STOP*

1

X

Подчиненное устройство требует немедленно прервать текущую транзакцию

PERR#

1

Обнаружена ошибка четности данных

SERR#

1

Обнаружена ошибка четности адреса

или системная ошибка

REQ#

1

Арбитраж шины: запрос на доступ к шине

GNT#

1

Арбитраж шины: предоставление шины

RST#

1

Перезагрузка системы и всех устройств

Сигналы AD (их 32) нужны для адресов и данных (для передач по 32 бита). Обычно адрес устанавливается во время первого цикла, а данные — во время третье­го. Сигнал PAR — это бит четности для сигнала AD. Сигнал С/ВЕ# выполняет две функции. Во время первого цикла он содержит команду (считать одно слово, счи­тать блок и т. п.). Во время второго цикла он содержит массив из 4 битов, кото­рый показывает, какие байты 32-битного слова действительны. Используя сигнал С/ВЕ#, можно считывать 1, 2 или 3 байта из слова, а также все слово целиком.

Сигнал FRAME# устанавливается задающим устройством, чтобы начать транз­акцию. Этот сигнал сообщает подчиненному устройству, что адрес и команды в данный момент действительны. При чтении одновременно с сигналом FRAME# устанавливается сигнал IRDY#. Он сообщает, что задающее устройство готово принять данные. При записи сигнал IRDY# устанавливается позже, когда данные уже находятся в шине.

Сигнал IDSEL связан с тем, что у каждого устройства PCI должно быть про­странство конфигураций на 256 байтов, которое другие устройства могут считывать (установив сигнал IDSEL). Это пространство конфигураций содержит характери­стики устройства. В некоторых операционных системах структура Plug-and-Play (Режим автоматического конфигурирования) использует это пространство кон­фигураций, чтобы распознать, какие устройства подключены к шине.

А теперь рассмотрим сигналы, которые устанавливаются подчиненным устрой­ством. Сигнал DEVSEL# означает, что подчиненное устройство распознало свой адрес на линиях AD и готово участвовать в транзакции. Если сигнал DEVSEL# не поступает в течение определенного промежутка времени, задающее устройство предполагает, что подчиненное устройство, к которому направлено обращение, либо отсутствует, либо неисправно.

Следующий сигнал — TRDY#. Его подчиненное устройство устанавливает при чтении, чтобы сообщить, что данные находятся на линиях AD, и при записи, чтобы сообщить, что оно готово принять данные.

Следующие три сигнала нужны для сообщения об ошибках. Один из них, сиг­нал STOP#, устанавливается подчиненным устройством, если произошла какая-нибудь неполадка и нужно прервать текущую транзакцию. Следующий сигнал, PERR#, используется для сообщения об ошибке четности в данных в предыдущем цикле. Для чтения этот сигнал устанавливается задающим устройством, для запи­си — подчиненным устройством. Необходимые действия должно предпринимать устройство, получившее этот сигнал. Наконец, сигнал SERR# нужен для сообще­ния об адресных и системных ошибках.

Факультативные сигналы шины PCI

Сигнал

Количество Задающее

линий устройство

Подчиненное Комментарий

устройство

REQ64#

1 X

Запрос на осуществление 64-битной транзакции

АСК64#

1

Разрешение 64-битной транзакции

AD

32 х

Дополнительные 32 бита адреса или данных

PAR64

1 X

Проверка четности для дополнительных 32 битов адреса или данных

С/ВЕ#

4 х

Дополнительные 4 бита для указания, какие байты из слова нужно считать (или записать)

LOCK

1 X

В многопроцессорных системах: блокировка шины при осуществлении транзакции одним из процессоров

SBO#

1

Обращение к кэш-памяти другого процессора

SDONE

1

Отслеживание адресов, по которым произошли изменения, завершено.

INTx

4

Запрос прерывания

JTAG

5

„ Сигналы тестирования IEEE 1149.1 JTAG

M66EN

1

Сигнал связывается с источником питания или с «землей» (66 МГц или 33 МГц)

Сигналы REQ# и GNT# предназначены для арбитража шины. Они устанавли­ваются не тем устройством, которое является задающим в данный момент, а тем, которому нужно стать задающим. Последний обязательный сигнал, RST#, исполь­зуется для перезагрузки системы, которая происходит, либо если пользователь на­жмет кнопку RESET, либо если какое-нибудь системное устройство обнаружит фатальную ошибку. После установки этого сигнала компьютер перезагружается.

Перейдем к факультативным сигналам, большинство из которых связано с рас­ширением разрядности с 32 до 64 битов. Сигналы REQ64# и АСК 64# позволяют задающему устройству попросить разрешение осуществить 64-битную транзак­цию, а подчиненному устройству принять эту транзакцию. Сигналы AD, PAR64 и С/ВЕ# являются расширениями соответствующих 32-битных сигналов.

Следующие три сигнала не связаны с противопоставлением 32 бита — 64 бита. Они имеют отношение к многопроцессорным системам. Не все платы PCI поддер­живают такие системы, поэтому эти сигналы являются факультативными. Сигнал LOCK позволяет блокировать шину для параллельных транзакций. Следующие два сигнала связаны с отслеживанием всех адресов, по которым происходит изме­нение данных. Подобное отслеживание необходимо для того, чтобы сохранить не­противоречивость кэш-памяти различных процессоров.

Сигналы ШТХ нужны для запроса прерываний. Плата PCI может содержать до четырех логических устройств, каждое из которых имеет собственную линию за­проса прерывания. Сигналы JTAG предназначены для процедуры тестирования IEEE 1149.1 JTAG. Наконец, сигнал M66EN связывается либо с источником пита­ния, либо с «землей», что определяет тактовую частоту. Она не должна меняться во время работы системы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]