19. Шина PCI: организация и функционирование. Шина PCI Express: организация.
Шина PCI
- 32- или 64-разрядная
- 33 или 66 МГц.
- При 33 МГц – 133 МБайт/с.
- 64-битная PCI при 66 МГц – 528 МБайт/с.
Сигналы шины PCI
Обязательные включают 5 групп:
- cистемные
- адреса/данных, команд
- управления транзакциями
- сигналы арбитража
- сигналы уведомления об ошибках
Опциональные
Системные сигналы
- Clk – сигнал синхронизации
- Rst – сигнал сброса. Переводит систему в начальное состояние.
Сигналы адреса и данных, Командные сигналы
- Address/Data Bus (AD[0-31]) – 32 линии, которые мультиплексированы для передачи адреса и данных в разные моменты времени. 1 такт требуется для изменения направления передачи данных.
- Command Bus(C/BE [0-3]) – 4-битная шина, мультиплексированная для передачи команд и сигналов разрешения бита (BE). Обычно, в ходе фазы адреса, тип транзакции идентифицируется командой (чтение памяти, запись в память и т. д.), передаваемой по этим линиям. В ходе фазы данных 4 бита идентифицируют, какие из байтов данных будут передаваться (валидны).
- Parity Signal (PAR) – это линия четности (четность числа 1 на AD и C/BE).
Сигналы управления транзакциями
- FRAME (Кадр цикла) – мастер (ведущее устройство) устанавливает сигнал для указания валидности передаваемых по AD, C/BE данных. Сигнал удерживается до окончания последней фазы данных транзакции.
- IRDY (Initiator Ready) – мастер управляет этим сигналом. В ходе транзакции записи этот сигнал указывает, что мастер поместил данные на линию AD. В ходе транзакции чтения установка сигнала указывает, что мастер готов к приему данных.
- Target Ready (TRDY) – выбранное подчиненное устройство управляет этим сигналом. Это сигнал готовности подчиненного, он дополняет сигнал готовности мастера. IRDY и TRDY используются для реализации рукопожатия в ходе передачи данных. В случае транзакции записи подчиненный устанавливает сигнал, чтобы показать, что он готов принимать данные. В ходе транзакции чтения подчиненный использует этот сигнал для указания валидности данных на шине AD. Для передачи данных оба сигнала должны быть установлены. В противном случае будут вставляться пустые циклы.
- Stop Transaction (STOP) – выбранное подчиненное устройство управляет этим сигналом. Оно устанавливает его для предупреждения мастера о том, что хочет прекратить транзакцию.
- Initialization Device Select (IDSEL) – используется в качестве сигнала выбора микросхемы для чтения/записи конфигурации.
- Device Select (DEVSEL) – выбранное подчиненное устройство устанавливает этот сигнал для указания мастеру, что подчиненное присутствует.
- Bus Lock (LOCK) – мастер использует этот сигнал для удержания подчиненного устройства при выполнении атомарной транзакции (например, инструкций проверки-и-установки, используемой в семафорах).
Сигналы арбитража
- Bus Request (REQ) – если устройство собирается использоватьшину, оно устанавливает сигнал REQ.
- Bus Grant (GNT) – этот сигнал устанавливается арбитром для указания, что устройство может использовать шину для следующей транзакции.
Сигналы уведомления об ошибках
- Parity Error (PERR) – сигнал указывает на наличие ошибки четности данных, обнаруженной подчиненным устройством в ходе фазы записи данных или мастером в ходе фазы чтения.
- System Error (SERR) – указывает на наличие ошибки четности адреса или другой критической ошибки.
Опциональные сигналы
Сигналы 64-битного расширения:
- Address/Data Lines (AD[32 to 63]): представляют собой расширение базовых 32-битных
линий адреса/данных. - Command Bus (C/BE[4 to 7]): в ходе фазы адреса могут использоваться для передачи дополнительных команд. В ходе фазы данных – валидность дополнительных байтов.
- Request 64-bit Transfer (REQ64): Мастер генерирует этот сигнал для указания подчиненному, что предпочитает 64-битные передачи. Работает, как FRAME.
- Acknowledge 64-bit Transfer (ACK64): Подчиненное устройство в ответ на REQ64 устанавливает этот сигнал, указывая, что способно принимать 64-разрядные данные. Аналогично DEVSEL.
- Parity Bit For Upper Data (PAR64): бит четности для добавленных линий шин AD и C/BE.
- Interrupt Request Line (INTA, INTB, INTC, INTD): запросы прерываний. У каждого устройства есть собственный набор таких линий, идущих к контроллеру прерываний.
Операции PCI
1) Операции ввода/вывода: чтение, запись.
2) Операции с памятью:
2.1) стандартные операции с памятью: чтение/запись;
2.2) блочные операции с памятью:
Mem Read Line – чтение линии данных (больше двойного слова, не больше строки кэша). Для предвыборки.
Mem Read Multiple – чтение нескольких линий (как предыдущая, но пересекает границы строки кэша).
Mem Write-and-Invalidate – запись с передачей целой строки кэша за раз.
3) Конфигурационные операции: запись и чтение конфигурации (для plug-and-play).
4) Вспомогательные операции:
4.1) Команда специального цикла: широковещание команды среди всех подчиненных завершение или сброс, shutdown, halt).
4.2) Команда сдвоенного цикла адреса: позволяет 32-битному мастеру использовать 64-битные адреса, передаваемые за 2 цикла.
Арбитраж шины PCI
- Централизованный арбитраж;
- Отдельные линии запроса и разрешения, а также отдельные линии прерываний для каждого устройства;
- Настраиваемые политики назначения.
- Политики освобождения: обычно используется политика без упреждения (транзакционная); если несколько передач от одного устройства при отсутствии передач от других устройств, то политика без упреждения (по требованию); для особо длительных транзакций – политика с упреждением.
PCI Express
Технология PCI Express является открытым стандартом и разработана с расчетом на разнообразные применения – от полной замены шин PCI и PCI-X внутри настольных и серверных компьютеров, до использования в мобильных, встроенных и коммуникационных устройствах.
- Первая спецификация появилась в 2002 году.
- Частота – 2,5 ГГц.
- Пропускная способность 1 линии в одну сторону:
- PCIe 1.0 – 2 Гбит/с, частота 2,5 ГГц
- PCIe 2.0 – 4 Гбит/с , частота 5 ГГц
- PCIe 3.0 – 8 Гбит/с , частота 8 ГГц
- PCIe 4.0 – 16 Гбит/с
Архитектура PCI Express
- Замена параллельной шины двухточечными последовательными соединениями.
- Вводится коммутатор, который подключается к мосту.
- Между каждой микросхемой ввода/вывода и коммутатором устанавливается двухточечное соединение, состоящее из двух однонаправленных каналов – по одному в каждом направлении.
- Канал состоит из двух проводов, реализующих разностный сигнал (differential signaling).
Отличия от PCI
- Наличие централизованного коммутатора, пришедшего на смену многоотводной шине.
- Применение узких последовательных двухточечных соединений вместо широкой параллельной шины.
- Вместо передачи команд шина использует передачу пакетов. Пакет включает заголовок и полезную нагрузку. Заголовок содержит управляющую информацию (поэтому можно отказаться от управляющих сигналов). Полезная нагрузка содержит передаваемые данные. Шина представляет собой сеть с коммутацией пакетов.
- Более надежный код исправления ошибок.
- Увеличена длина соединения между микросхемой и коммутатором, что позволяет легче изменять положение компонентов системы.
- Расширяемость путем добавления новых коммутаторов.
- Горячее подключение.
- Минимизация габаритов.