Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Peripheral Component Interconnect ( PCI ) [3] - это шина локального компьютера для подключения аппаратных устройств к компьютеру и часть стандарта локальной шины PCI. Шина PCI поддерживает функции процессорной шины, но в стандартизованном формате, который не зависит от собственной шины процессора . Устройства, подключенные к шине PCI, кажутся мастеру шины подключенными непосредственно к его собственной шине, и им назначаются адреса в адресном пространстве процессора . [4] Это параллельная шина, синхроннаяк единым автобусным часам . Присоединенные устройства могут иметь форму интегральной схемы, установленной на материнской плате (называемой в спецификации PCI плоским устройством ), или карты расширения, которая вставляется в слот. Локальная шина PCI была впервые реализована в устройствах, совместимых с IBM PC , где она заменила комбинацию нескольких медленных слотов стандартной архитектуры (ISA) и одного слота быстрой локальной шины VESA (VLB) в качестве конфигурации шины. Впоследствии он был принят для других типов компьютеров. Типичные карты PCI, используемые в ПК, включают: сетевые карты , звуковые карты , модемы., дополнительные порты, такие как универсальная последовательная шина ( USB ) или последовательный порт , карты ТВ-тюнера и хост-адаптеры жестких дисков . Видеокарты PCI заменили карты ISA и VLB, пока растущие потребности в полосе пропускания не переросли возможности PCI. Затем предпочтительным интерфейсом для видеокарт стал Accelerated Graphics Port (AGP), надмножество PCI, прежде чем уступить место PCI Express. [5]

Первой версией PCI, применяемой в розничных настольных компьютерах, была 32-битная шина с тактовой частотой шины 33  МГц и сигнализацией 5 В, хотя стандарт PCI 1.0 также предусматривал 64-битный вариант. [ требуется пояснение ] У них есть одна фиксирующая выемка на карточке. Версия 2.0 стандарта PCI представила слоты 3,3 В, физически отличающиеся перевернутым физическим разъемом для предотвращения случайной установки карт 5 В. Универсальные карты, которые могут работать от любого напряжения, имеют две выемки. Версия 2.1 стандарта PCI представила опциональную работу на частоте 66 МГц. Серверно-ориентированный вариант PCI, PCI Extended ( PCI-X) работал на частотах до 133 МГц для PCI-X 1.0 и до 533 МГц для PCI-X 2.0. Внутренний разъем для карт портативных компьютеров, названный Mini PCI , был представлен в версии 2.2 спецификации PCI. Шина PCI также была адаптирована для стандарта внешних разъемов портативных компьютеров - CardBus . [6] Первая спецификация PCI была разработана Intel , но последующая разработка стандарта стала ответственностью PCI Special Interest Group ( PCI-SIG ). [7]

PCI и PCI-X иногда называют параллельным PCI или обычным PCI [8], чтобы технологически отличить их от их более позднего преемника PCI Express , в котором была принята последовательная архитектура на основе дорожек. [9] [10] Расцвет PCI на рынке настольных компьютеров приходился примерно на 1995–2005 годы. [9] PCI и PCI-X устарели для большинства целей; однако в 2020 году они по-прежнему распространены на современных настольных компьютерах в целях обеспечения обратной совместимости и низкой относительной стоимости производства. Еще одно распространенное современное применение параллельной шины PCI - промышленные ПК., где многие специализированные карты расширения, используемые здесь, никогда не переходили на PCI Express, как и некоторые карты ISA. Многие виды устройств, ранее доступные на картах расширения PCI, теперь обычно интегрируются в материнские платы или доступны в версиях USB и PCI Express.

История [ править ]

Типичная 32-разрядная PCI-карта с напряжением питания 5 В, в данном случае - адаптер SCSI от Adaptec.
Материнская плата с двумя 32-битными слотами PCI и слотами PCI Express двух размеров.

Работа над PCI началась в Лаборатории архитектуры Intel (IAL, также лаборатории разработки архитектуры) c.  1990 . Команда, состоящая в основном из инженеров IAL, определила архитектуру и разработала доказательство концепции набора микросхем и платформы (Saturn) в партнерстве с командами компаний, занимающихся системами настольных ПК, и организациями, производящими основные логические продукты.

PCI немедленно стал использоваться в серверах, заменив архитектуру Micro Channel (MCA) и расширенную промышленную стандартную архитектуру (EISA) в качестве предпочтительной шины расширения для серверов. В обычных ПК PCI медленнее заменял VLB и не добился значительного проникновения на рынок до конца 1994 года в ПК Pentium второго поколения . К 1996 году VLB практически исчез, и производители внедрили PCI даже для компьютеров Intel 80486 (486). [11] EISA продолжала использоваться вместе с PCI до 2000 года. Apple Computer приняла PCI для профессиональных компьютеров Power Macintosh (заменив NuBus ) в середине 1995 года, а потребительские Performaлинейка продуктов (заменившая LC Processor Direct Slot (PDS)) в середине 1996 года.

Однако 64-разрядная версия простого PCI оставалась на практике редкостью [12], хотя она использовалась, например, на всех (после iMac) компьютерах G3 и G4 Power Macintosh . [13]

Более поздние версии PCI добавили новые функции и улучшения производительности, в том числе стандарт 3,3  В на 66  МГц и PCI-X 133 МГц , а также адаптацию сигнализации PCI к другим форм-факторам. И PCI-X 1.0b, и PCI-X 2.0 обратно совместимы с некоторыми стандартами PCI. Эти версии использовались в серверном оборудовании, но почти все оборудование потребительских ПК оставалось 32-битным, 33 МГц и 5 вольт.

PCI-SIG представил последовательный PCI Express в c.  2004 . С тех пор производители материнских плат добавили все меньше разъемов PCI в пользу нового стандарта. Многие новые материнские платы не обеспечивают слоты PCI на всех, по состоянию на конец 2013 года [ править ]

Автоконфигурация [ править ]

PCI обеспечивает отдельную память и адресные пространства портов ввода-вывода с отображением памяти для процессоров семейства x86 , 64 и 32 бита соответственно. Адреса в этих адресных пространствах назначаются программным обеспечением. Третье адресное пространство, называемое пространством конфигурации PCI , в котором используется фиксированная схема адресации, позволяет программному обеспечению определять объем памяти и адресное пространство ввода-вывода, необходимое каждому устройству. Каждое устройство может запрашивать до шести областей пространства памяти или пространства порта ввода / вывода (I / O) через свои регистры пространства конфигурации.

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

Пространство конфигурации PCI также содержит небольшой объем информации о типе устройства, которая помогает операционной системе выбирать для нее драйверы устройств или, по крайней мере, вести диалог с пользователем о конфигурации системы.

Устройства могут иметь встроенную постоянную память (ПЗУ), содержащую исполняемый код для процессоров x86 или PA-RISC , драйвер Open Firmware или дополнительное ПЗУ . Обычно они необходимы для устройств, используемых во время запуска системы, до того, как драйверы устройств будут загружены операционной системой.

Кроме того, существуют таймеры задержки PCI, которые являются механизмом для устройств PCI Bus-Mastering для справедливого совместного использования шины PCI. "Удовлетворительно" в этом случае означает, что устройства не будут использовать такую ​​большую часть доступной полосы пропускания шины PCI, чтобы другие устройства не могли выполнять необходимую работу. Обратите внимание, это не относится к PCI Express.

Это работает так: каждое устройство PCI, которое может работать в режиме шины-мастера, должно иметь таймер, называемый таймером задержки, который ограничивает время, в течение которого устройство может удерживать шину PCI. Таймер запускается, когда устройство становится владельцем шины, и ведет обратный отсчет со скоростью тактовой частоты PCI. Когда счетчик достигает нуля, устройству требуется освободить шину. Если никакие другие устройства не ждут владения шиной, они могут просто снова захватить шину и передать больше данных. [16]

Прерывания [ править ]

Устройства должны следовать протоколу, чтобы линии прерывания могли использоваться совместно. Шина PCI включает четыре линии прерывания, каждая из которых доступна каждому устройству. Однако они не подключены параллельно, как другие линии шины PCI. Позиции линий прерывания меняются между слотами, поэтому то, что кажется одному устройству строкой INTA #, является INTB # для следующего и INTC # для следующего. Однофункциональные устройства используют свой INTA # для сигнализации прерывания, поэтому нагрузка устройства распределяется довольно равномерно по четырем доступным линиям прерывания. Это устраняет общую проблему с разделением прерываний.

Отображение линий прерывания PCI на линии прерывания системы через мост хоста PCI зависит от реализации. Код базовой системы ввода / вывода ( BIOS ), зависящий от платформы, должен знать об этом и устанавливать поле «строка прерывания» в пространстве конфигурации каждого устройства, указывающее, к какому IRQ оно подключено.

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

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

PCI Express вообще не имеет линий физического прерывания. Он использует исключительно прерывания, сигнализируемые сообщениями.

Стандартные технические характеристики оборудования [ править ]

Диаграмма, показывающая различные положения клавиш для 32-битных и 64-битных карт PCI

Эти спецификации представляют собой наиболее распространенную версию PCI, используемую в обычных ПК:

  • Тактовая частота 33,33 МГц с синхронными передачами
  • Скорость передачи Пик 133  Мб / с (133 мегабайт в секунду) для 32-битной ширине шины (33,33 МГц × 32 бит ÷ 8 бит / байт = 133 Мбайт / с)
  • 32-битная ширина шины
  • 32- или 64-битное адресное пространство памяти (4  ГиБ или 16  ЭиБ )
  • 32-битное пространство порта ввода / вывода
  • 256- байтовое (на устройство) пространство конфигурации
  • 5-вольтовая сигнализация
  • Переключение отраженной волны

Спецификация PCI также предоставляет опции для передачи сигналов 3,3 В, ширины 64-битной шины и тактовой частоты 66 МГц, но они обычно не встречаются вне поддержки PCI-X на материнских платах серверов.

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

Напряжение карты и ключ [ править ]

Плата расширения PCI-X Gigabit Ethernet с выемками для 5 В и 3,3 В, сторона B в направлении камеры

Типичные карты PCI имеют один или два ключевых паза, в зависимости от их сигнального напряжения. Карты, требующие 3,3 В, имеют выемку на расстоянии 56,21 мм от задней панели карты; Те, для которых требуется 5 В, имеют выемку на расстоянии 104,47 мм от задней панели. Это позволяет вставлять карты только в слоты с поддерживаемым ими напряжением. «Универсальные карты», принимающие любое напряжение, имеют оба ключевых паза.

Распиновка разъема [ править ]

Разъем PCI определяется как имеющий 62 контакта на каждой стороне краевого разъема , но два или четыре из них заменены ключевыми выемками, поэтому карта имеет 60 или 58 контактов с каждой стороны. Сторона A относится к «стороне пайки», а сторона B относится к «стороне компонента»: если карта удерживается коннектором вниз, на виде стороны A задняя панель будет справа, а на виде стороны B. будет иметь заднюю панель слева. Распиновка сторон B и A выглядит следующим образом, если смотреть вниз в разъем материнской платы (контакты A1 и B1 находятся ближе всего к задней панели). [15] [17] [18]

64-битный PCI расширяет это дополнительными 32 контактами на каждой стороне, которые обеспечивают AD [63:32], C / BE [7: 4] #, сигнал четности PAR64, а также ряд выводов питания и заземления.

Большинство линий подключаются к каждому слоту параллельно. Исключения составляют:

  • Каждый слот имеет свой собственный выход REQ # и вход GNT # от арбитра материнской платы.
  • Каждый слот имеет свою собственную линию IDSEL, обычно подключенную к определенной линии AD.
  • TDO подключается шлейфом к TDI следующего слота. Карты без поддержки JTAG должны подключать TDI к TDO, чтобы не разорвать цепочку.
  • PRSNT1 # и PRSNT2 # для каждого слота имеют свои собственные подтягивающие резисторы на материнской плате. Материнская плата может (но не обязана) определять эти контакты, чтобы определить наличие плат PCI и их требования к питанию.
  • REQ64 # и ACK64 # по отдельности загружаются только в 32-битные слоты.
  • Линии прерывания с INTA # по INTD # подключены ко всем слотам в разном порядке. (INTA # в одном слоте - INTB # в следующем и INTC # в следующем.)

Примечания:

  • IOPWR составляет +3,3 В или +5 В, в зависимости от объединительной платы. Слоты также имеют выступ в одном из двух мест, который предотвращает вставку карт, у которых нет соответствующей ключевой выемки, что указывает на поддержку этого стандарта напряжения. Универсальные карты имеют обе выемки для ключей и используют IOPWR для определения уровней сигналов ввода-вывода.
  • PCI SIG настоятельно поддерживает сигнализацию 3,3 В PCI, [15] требуя ее поддержки, начиная со стандартной версии 2.3 [17], но большинство материнских плат ПК используют вариант 5 В. Таким образом, хотя многие доступные в настоящее время карты PCI поддерживают обе карты и имеют две ключевые метки, указывающие на это, на рынке все еще присутствует большое количество карт только для 5 V.
  • Контакт M66EN - это дополнительное заземление на шинах PCI 5 В, которые есть на большинстве материнских плат ПК. Карты и материнские платы, не поддерживающие работу на частоте 66 МГц, также заземляют этот контакт. Если все участники поддерживают работу на частоте 66 МГц, подтягивающий резистор на материнской плате поднимает этот сигнал до высокого уровня, и разрешается работа на частоте 66 МГц. Вывод по-прежнему соединен с землей через разделительные конденсаторы на каждой карте, чтобы сохранить функцию экранирования переменного тока .
  • Вывод PCIXCAP - это дополнительное заземление на шинах и картах PCI. Если все карты и материнская плата поддерживают протокол PCI-X , подтягивающий резистор на материнской плате поднимает этот сигнал до высокого уровня, и работа PCI-X включается. Вывод по-прежнему соединен с землей через разделительные конденсаторы на каждой карте, чтобы сохранить функцию экранирования переменного тока.
  • По крайней мере, один из PRSNT1 # и PRSNT2 # должен быть заземлен картой. Выбранная комбинация указывает общую потребляемую мощность карты (25 Вт, 15 Вт или 7,5 Вт).
  • SBO # и SDONE - это сигналы от контроллера кеша к текущей цели. Они не являются выходами инициатора, но окрашены таким образом, потому что являются целевыми входами.
  • PME # ( 19 A ) - событие управления питанием (необязательно), которое поддерживается в PCI версии 2.2 и выше. Это 3,3 В , открытый сток , активный низкий уровень сигнала. [19] Карты PCI могут использовать этот сигнал для отправки и приема PME напрямую через разъем PCI, что устраняет необходимость в специальном кабеле Wake-on-LAN . [20]

Сочетание 32-битных и 64-битных карт PCI в слотах разной ширины [ править ]

Наполовину вставленная карта PCI-X в 32-битный слот PCI, демонстрирующая необходимость крайней правой выемки и дополнительного места на материнской плате для сохранения обратной совместимости
64-битная карта SCSI, работающая в 32-битном слоте PCI

Большинство 32-битных карт PCI будут правильно работать в 64-битных слотах PCI-X, но тактовая частота шины будет ограничена тактовой частотой самой медленной карты, что является неотъемлемым ограничением топологии общей шины PCI. Например, когда периферийное устройство PCI 2.3, 66 МГц установлено в шину PCI-X, способную работать на частоте 133 МГц, вся объединительная плата шины будет ограничена до 66 МГц. Чтобы обойти это ограничение, многие материнские платы имеют две или более шины PCI / PCI-X, одна из которых предназначена для использования с высокоскоростными периферийными устройствами PCI-X, а другая шина предназначена для периферийных устройств общего назначения.

Многие 64-битные карты PCI-X предназначены для работы в 32-битном режиме при установке в более короткие 32-битные разъемы с некоторой потерей производительности. [21] [22] Примером этого является 64-битная интерфейсная карта SCSI Adaptec 29160 . [23] Однако некоторые 64-битные карты PCI-X не работают в стандартных 32-битных слотах PCI. [24]

Установка 64-битной карты PCI-X в 32-битный слот оставит 64-битную часть краевого разъема карты неподключенной и свисающей. Для этого необходимо, чтобы компоненты материнской платы не располагались так, чтобы механически блокировать выступающую часть краевого разъема карты.

Физические размеры [ править ]

Высота кронштейнов PCI:

  • Стандарт: 120,02 мм; [25]
  • Низкий профиль: 79,20 мм. [26]

Длины карты PCI (стандартный кронштейн и 3,3 В): [27]

  • Короткая карта: 169,52 мм;
  • Длинная карта: 313,78 мм.

Длина карты PCI (низкопрофильный кронштейн и 3,3 В): [28]

  • MD1: 121,79 мм;
  • MD2: 169,52 мм;
  • MD3: 243,18 мм.
  • Кронштейн в полный рост

  • Низкопрофильный

Mini PCI [ править ]

Слот Mini PCI
Карта Mini PCI Wi-Fi, тип IIIB
Преобразователь PCI-to-MiniPCI Тип III
Карты MiniPCI и MiniPCI Express в сравнении

Mini PCI был добавлен в PCI версии 2.2 для использования в ноутбуках ; он использует 32-битную шину 33 МГц с подключениями с питанием (только 3,3 В; 5 В ограничено до 100 мА) и поддерживает управление шиной и DMA . Стандартный размер карт Mini PCI составляет примерно четверть от их полноразмерных аналогов. Доступа к карте извне нет, в отличие от настольных PCI-карт с планками для крепления разъемов. Это ограничивает виды функций, которые может выполнять карта Mini PCI.

Многие устройства Mini PCI были разработаны такими как Wi-Fi , Fast Ethernet , Bluetooth , модем (часто винмодемы ), звуковые карты , криптографические ускорители , SCSI , IDE - ATA , SATA контроллеры и комбинированных карты. Карты Mini PCI можно использовать с обычным оборудованием, оборудованным PCI, с помощью преобразователей Mini PCI-to-PCI . На смену Mini PCI пришла гораздо более узкая карта PCI Express Mini Card.

Технические детали Mini PCI [ править ]

Карты Mini PCI имеют максимальную потребляемую мощность 2 Вт, что ограничивает функциональные возможности, которые могут быть реализованы в этом форм-факторе. Они также должны поддерживать сигнал CLKRUN # PCI, используемый для запуска и остановки тактовой частоты PCI в целях управления питанием.

Существует три форм-фактора карт : карты типа I, типа II и типа III. Разъемы для карт, используемые для каждого типа, включают: Тип I и II используют 100-контактный соединитель стекирования, тогда как Тип III использует 124-контактный краевой разъем, то есть разъем для типов I и II отличается от разъема для Типа III, где разъем находится на краю карты, как в случае с SO-DIMM . Дополнительные 24 контакта обеспечивают дополнительные сигналы, необходимые для обратной маршрутизации ввода / вывода через системный разъем (аудио, AC-Link , LAN , интерфейс телефонной линии). Карты типа II имеют разъемы RJ11 и RJ45. Эти карты должны быть расположены на краю компьютера или док-станции, чтобы можно было установить порты RJ11 и RJ45 для внешнего доступа.

Mini PCI отличается от 144-контактного Micro PCI. [29]

Транзакции шины PCI [ править ]

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

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

64-битная адресация выполняется с использованием двухэтапной адресной фазы. Инициатор передает в широковещательном режиме 32 младших адресных бита в сопровождении специального командного кода "цикла двойного адреса". Устройства, не поддерживающие 64-битную адресацию, могут просто не отвечать на этот код команды. В следующем цикле инициатор передает старшие 32 адресных бита плюс реальный код команды. С этого момента транзакция работает идентично. Для обеспечения совместимости с 32-битными устройствами PCI запрещается использовать цикл двойного адреса, если он не нужен, т. Е. Если все биты адреса старшего порядка равны нулю.

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

Адресные пространства PCI [ править ]

PCI имеет три адресных пространства: память, адрес ввода-вывода и конфигурация.

Адреса памяти имеют размер 32 бита (необязательно 64 бита), поддерживают кэширование и могут быть пакетными транзакциями.

Адреса ввода-вывода предназначены для совместимости с адресным пространством портов ввода-вывода архитектуры Intel x86 . Хотя спецификация шины PCI допускает пакетные транзакции в любом адресном пространстве, большинство устройств поддерживают ее только для адресов памяти, а не ввода-вывода.

Наконец, конфигурационное пространство PCI обеспечивает доступ к 256 байтам специальных регистров конфигурации на каждое устройство PCI. Каждый слот PCI получает свой собственный диапазон адресов пространства конфигурации. Регистры используются для настройки памяти устройств и диапазонов адресов ввода / вывода, на которые они должны отвечать от инициаторов транзакций. При первом включении компьютера все устройства PCI отвечают только на доступ к их пространству конфигурации. BIOS компьютера сканирует устройства и назначает им диапазоны адресов памяти и ввода-вывода.

Если адрес не запрашивается каким-либо устройством, фаза адресации инициатора транзакции истекает по тайм-ауту, в результате чего инициатор прерывает операцию. В случае чтения обычно для считываемого значения данных (0xFFFFFFFF) обычно указываются все единицы. Поэтому устройства PCI обычно стараются избегать использования значения «все единицы» в важных регистрах состояния, чтобы такую ​​ошибку можно было легко обнаружить с помощью программного обеспечения.

Коды команд PCI [ править ]

Существует 16 возможных 4-битных кодов команд, и 12 из них назначены. За исключением уникального цикла двойного адреса, младший бит кода команды указывает, являются ли следующие фазы данных чтением (данные, отправленные от цели к инициатору) или записью (данные, отправленные от инициатора к цели). Цели PCI должны проверять код команды, а также адрес и не отвечать на этапы адресации, в которых указан неподдерживаемый код команды.

Команды, которые относятся к строкам кэша, зависят от того, правильно ли установлен регистр размера строки кэша пространства конфигурации PCI ; их нельзя использовать, пока это не будет сделано.

0000: подтверждение прерывания
Это особая форма цикла чтения, неявно адресованная контроллеру прерываний, который возвращает вектор прерывания. 32-битное адресное поле игнорируется. Одна из возможных реализаций - создание цикла подтверждения прерывания на шине ISA с использованием моста шины PCI / ISA. Эта команда предназначена для совместимости с IBM PC ; если на шине PCI нет контроллера прерываний в стиле Intel 8259 , этот цикл не требуется.
0001: Специальный цикл
Этот цикл представляет собой специальную широковещательную запись системных событий, в которых может быть заинтересована карта PCI. Поле адреса специального цикла игнорируется, но за ним следует фаза данных, содержащая сообщение полезной нагрузки. Определенные в данный момент сообщения сообщают, что процессор по какой-то причине останавливается (например, для экономии энергии). Ни одно устройство никогда не реагирует на этот цикл; он всегда завершается главным прерыванием после того, как данные остаются на шине не менее 4 циклов.
0010: Чтение ввода / вывода
Это выполняет чтение из области ввода-вывода. Предоставляются все 32 бита адреса чтения, так что устройство может (по соображениям совместимости) реализовать регистры ввода-вывода размером менее 4 байтов. Если байт разрешает данные запроса, выходящие за пределы диапазона адресов, поддерживаемого устройством PCI (например, 4-байтовое чтение из устройства, которое поддерживает только 2 байта адресного пространства ввода-вывода), он должен быть завершен прерыванием цели. Допускается несколько циклов данных с использованием линейного (простого увеличения) упорядочения пакетов.
Стандарт PCI не поощряет использование пространства ввода-вывода в новых устройствах, предпочитая, чтобы как можно больше было сделано через отображение основной памяти.
0011: Запись ввода / вывода
Это выполняет запись в пространство ввода-вывода.
010 x : Зарезервировано
Устройство PCI не должно отвечать на адресный цикл этими кодами команд.
0110: чтение из памяти
Это выполняет цикл чтения из области памяти. Поскольку наименьшее пространство памяти, которое разрешено реализовать устройству PCI, составляет 16 байтов, [17] [15] : §6.5.2.1 два младших бита адреса не нужны во время фазы адресации; эквивалентная информация будет поступать на этапах передачи данных в виде сигналов выбора байта. Вместо этого они определяют порядок, в котором должны быть возвращены пакетные данные. [17] [15] : §3.2.2.2 Если устройство не поддерживает запрошенный порядок, оно должно предоставить первое слово и затем отключиться.
Если область памяти помечена как «доступная для предварительной выборки», то целевое устройство должно игнорировать сигналы выбора байта при чтении из памяти и всегда возвращать 32 действительных бита.
0111: Запись в память
Это работает аналогично чтению из памяти. Сигналы выбора байта более важны при записи, поскольку невыбранные байты не должны записываться в память.
Как правило, операции записи PCI выполняются быстрее, чем считывания PCI, поскольку устройство может буферизовать входящие данные записи и быстрее освобождать шину. Для чтения он должен отложить фазу данных до тех пор, пока данные не будут получены.
100 x : Зарезервировано
Устройство PCI не должно отвечать на адресный цикл этими кодами команд.
1010: чтение конфигурации
Это похоже на чтение ввода-вывода, но чтение из пространства конфигурации PCI. Устройство должно отвечать только в том случае, если младшие 11 бит адреса определяют функцию и регистр, которые оно реализует, и если заявлен специальный сигнал IDSEL. Он должен игнорировать старший 21 бит. Пакетные чтения (с использованием линейного увеличения) разрешены в пространстве конфигурации PCI.
В отличие от пространства ввода-вывода, стандартные регистры конфигурации PCI определены таким образом, что чтение никогда не нарушает состояние устройства. Устройство может иметь регистры пространства конфигурации, превышающие стандартные 64 байта, которые имеют побочные эффекты чтения, но это редко. [30]
Доступ к пространству конфигурации часто имеет несколько циклов задержки, чтобы позволить линиям IDSEL стабилизироваться, что делает их медленнее, чем другие формы доступа. Кроме того, доступ к пространству конфигурации требует многоступенчатой ​​операции, а не одной машинной инструкции. Таким образом, лучше избегать их при обычной работе устройства PCI.
1011: Запись конфигурации
Это работает аналогично чтению конфигурации.
1100: чтение из памяти несколько раз
Эта команда идентична обычному чтению из памяти, но включает подсказку, что длинный пакет чтения будет продолжаться после конца текущей строки кэша, и цель должна внутренне выполнить предварительную выборку большого объема данных. Целевому объекту всегда разрешается считать это синонимом чтения из общей памяти.
1101: Цикл двойного адреса
При доступе к адресу памяти, который требует более 32 бит для представления, фаза адресации начинается с этой команды и младших 32 бит адреса, за которым следует второй цикл с фактической командой и старшими 32 битами адреса. Цели PCI, которые не поддерживают 64-битную адресацию, могут просто рассматривать это как другой зарезервированный код команды и не отвечать на него. Этот код команды может использоваться только с ненулевым старшим адресным словом; Запрещается использовать этот цикл без необходимости.
1110: Строка чтения из памяти
Эта команда идентична обычному чтению из памяти, но включает подсказку, что чтение будет продолжаться до конца строки кэша. Целевому объекту всегда разрешается считать это синонимом чтения из общей памяти.
1111: Запись в память и недействительность
Эта команда идентична обычной записи в память, но дает гарантию, что одна или несколько целых строк кэша будут записаны с включенным выбором всех байтов. Это оптимизация для кешей обратной записи, отслеживающих шину. Обычно кэш с обратной записью, содержащий грязные данные, должен прервать операцию записи на достаточно долгое время, чтобы сначала записать свои собственные грязные данные. Если запись выполняется с помощью этой команды, данные, которые должны быть записаны обратно, гарантированно не имеют отношения к делу и могут быть просто признаны недействительными в кэше обратной записи.
Эта оптимизация влияет только на кэш отслеживания и не влияет на цель, которая может рассматривать это как синоним команды записи в память.

Задержка шины PCI [ править ]

Вскоре после обнародования спецификации PCI было обнаружено, что длительные транзакции некоторых устройств из-за медленных подтверждений, длинных пакетов данных или некоторой комбинации могут вызвать опустошение или переполнение буфера на других устройствах. Рекомендации по срокам отдельных фаз в версии 2.0 стали обязательными в версии 2.1: [31] : 3

  • Цель должна иметь возможность завершить фазу начальных данных (подтвердить TRDY # и / или STOP #) в течение 16 циклов после начала транзакции.
  • Инициатор должен завершить каждую фазу данных (подтвердить номер IRDY) в течение 8 циклов.

Кроме того, начиная с версии 2.1, все инициаторы, способные передавать более двух фаз данных, должны реализовывать программируемый таймер задержки. Таймер начинает отсчет тактовых циклов при запуске транзакции (инициатор устанавливает номер КАДРА). Если время таймера истекло и арбитр удалил GNT #, то инициатор должен завершить транзакцию при следующей законной возможности. Обычно это следующая фаза данных, но транзакции записи в память и недействительности должны продолжаться до конца строки кэша.

Задержанные транзакции [ править ]

Устройства, которые не могут соответствовать этим временным ограничениям, должны использовать комбинацию опубликованных операций записи (для записи в память) и отложенных транзакций (для других операций записи и всех операций чтения). В отложенной транзакции цель записывает транзакцию (включая данные записи) внутренне и прерывает (утверждает STOP #, а не TRDY #) первую фазу данных. Инициатор должен повторить ту же транзакцию позже. Тем временем цель внутренне выполняет транзакцию и ожидает повторной транзакции. При обнаружении повторной транзакции доставляется буферизованный результат.

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

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

Цель прекращает отложенную транзакцию, когда повторная попытка успешно доставила буферизованный результат, шина сбрасывается или когда 2 15 = 32768 тактовых циклов (приблизительно 1 мс) истекли, не увидев повторной попытки. Последнее никогда не должно происходить при нормальной работе, но оно предотвращает взаимоблокировку всей шины, если один инициатор сбрасывается или выходит из строя.

Мосты шины PCI [ править ]

Стандарт PCI позволяет соединять несколько независимых шин PCI с помощью шинных мостов, которые при необходимости перенаправляют операции с одной шины на другую. Хотя PCI обычно не использует много мостов шины, системы PCI Express используют множество мостов PCI-to-PCI, называемых корневым портом PCI Express ; каждый слот PCI Express выглядит как отдельная шина, соединенная мостом с другими. Мост хоста PCI (обычно северный мост на платформах x86) соединяет ЦП, основную память и шину PCI. [32]

Размещено пишет [ править ]

Обычно, когда шинный мост видит транзакцию на одной шине, которая должна быть перенаправлена ​​на другую, исходная транзакция должна дождаться завершения перенаправленной транзакции, прежде чем будет готов результат. Одно заметное исключение происходит в случае записи в память. Здесь мост может записывать данные записи внутренне (если у него есть место) и сигнализировать о завершении записи до того, как завершится переадресация записи. Или, действительно, до того, как это началось. Такие записи «отправлено, но еще не доставлено» называются «отправленными записями» по аналогии с почтовым почтовым сообщением. Хотя они предлагают прекрасные возможности для повышения производительности, правила, регулирующие то, что допустимо, довольно запутаны. [33]

Объединение, объединение и сворачивание [ править ]

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

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

Сигналы шины PCI [ править ]

Транзакции шины PCI управляются пятью основными управляющими сигналами, два из которых управляются инициатором транзакции (FRAME # и IRDY #), а три управляются целью (DEVSEL #, TRDY # и STOP #). Есть два дополнительных арбитражных сигнала (REQ # и GNT #), которые используются для получения разрешения на инициирование транзакции. Все они являются активным низким уровнем , а это означает , что активный или утверждал состояние низкого напряжения . Подтягивающие резисторы на материнской плате гарантируют, что они будут оставаться высокими (неактивными или отключенными ), если они не управляются каким-либо устройством, но шина PCI не зависит от резисторов для изменения уровня сигнала; все устройства устанавливают высокий уровень сигналов в течение одного цикла, прежде чем перестанут управлять сигналами.

Время сигнала [ править ]

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

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

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

Арбитраж [ править ]

Любое устройство на шине PCI, которое может действовать как мастер шины, может инициировать транзакцию с любым другим устройством. Чтобы гарантировать, что одновременно инициируется только одна транзакция, каждый мастер должен сначала дождаться сигнала разрешения шины, GNT #, от арбитра, расположенного на материнской плате. Каждое устройство имеет отдельную строку запроса REQ #, которая запрашивает шину, но арбитр может «запарковать» сигнал разрешения шины на любом устройстве, если текущих запросов нет.

Арбитр может удалить GNT # в любое время. Устройство, которое теряет GNT #, может завершить свою текущую транзакцию, но не может запустить ее (путем подтверждения FRAME #), если только оно не обнаружит, что GNT # подтвердил цикл до его начала.

Арбитр также может предоставить GNT # в любое время, в том числе во время транзакции другого мастера. Во время транзакции утверждается либо FRAME #, либо IRDY #, либо оба; когда оба сброшены, шина простаивает. Устройство может инициировать транзакцию в любое время, когда заявлен GNT # и шина простаивает.

Адресная фаза [ править ]

Транзакция шины PCI начинается с этапа адресации . Инициатор, видя, что он имеет номер GNT и шина простаивает, вводит целевой адрес в строки AD [31: 0], связанную команду (например, чтение памяти или запись ввода-вывода) на C / BE [3 : 0] # строк, и КАДР # сдвигается на низкий уровень.

Каждое другое устройство проверяет адрес и команду и решает, следует ли отвечать как цель, утверждая DEVSEL #. Устройство должно ответить, подтвердив DEVSEL # в течение 3 циклов. Устройства, которые обещают ответить в течение 1 или 2 циклов, называются «fast DEVSEL» или «medium DEVSEL» соответственно. (На самом деле время ответа составляет 2,5 цикла, поскольку устройства PCI должны передавать все сигналы на полцикла раньше, чтобы их можно было получить на три цикла позже.)

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

В пятом цикле адресной фазы (или раньше, если все другие устройства имеют средний DEVSEL или быстрее) для некоторых диапазонов адресов разрешено всеобъемлющее «вычитающее декодирование». Обычно это используется мостом шины ISA для адресов в пределах своего диапазона (24 бита для памяти и 16 бит для ввода / вывода).

В шестом цикле, если ответа нет, инициатор может прервать транзакцию, сняв FRAME #. Это известно как завершение прерывания ведущего, и в этом случае мосты шины PCI обычно возвращают данные «все единицы» (0xFFFFFFFF). Поэтому устройства PCI обычно разрабатываются таким образом, чтобы избежать использования значения «все единицы» в важных регистрах состояния, чтобы такую ​​ошибку можно было легко обнаружить с помощью программного обеспечения.

Время фазы адреса [ править ]

 _ 0_ 1_ 2_ 3_ 4_ 5_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ GNT # \ ___ / XXXXXXXXXXXXXXXXXXXX (GNT # Неактуально после начала цикла) _______ РАМКА# \___________________ ___ AD [31: 0] ------- <___> --------------- (Адрес действителен только для одного цикла.) ___ _______________ C / BE [3: 0] # ------- <___ X_______________ (Команда, затем первый байт фазы данных включает) _______________________ DEVSEL # \ ___ \ ___ \ ___ \ ___ Быстрая, средняя, ​​медленная, вычитающая _ _ _ _ _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5

По нарастающему фронту тактового сигнала 0 инициатор наблюдает как высокий уровень FRAME # и IRDY #, так и низкий уровень GNT #, поэтому он запускает адрес, команду и устанавливает FRAME # вовремя для нарастающего фронта тактового сигнала 1. Цели фиксируют адрес. и начинаем его расшифровывать. Они могут ответить DEVSEL # вовремя для часов 2 (быстрый DEVSEL), 3 (средний) или 4 (медленный). Устройства субтрактивного декодирования, не видя другого ответа по тактовому сигналу 4, могут ответить по тактовому сигналу 5. Если мастер не видит ответа по тактовому сигналу 5, он завершит транзакцию и удалит КАДР № по тактовому сигналу 6.

TRDY # и STOP # сбрасываются (высокий уровень) во время фазы адресации. Инициатор может заявить IRDY #, как только он будет готов передать данные, что теоретически может быть, как только часы 2.

Адрес с двойным циклом [ править ]

Чтобы разрешить 64-битную адресацию, мастер будет представлять адрес в течение двух последовательных циклов. Во-первых, он отправляет биты адреса младшего разряда со специальной командой «двухциклового адреса» на C / BE [3: 0] #. В следующем цикле он отправляет старшие биты адреса и фактическую команду. Двухадресные циклы запрещены, если старшие биты адреса равны нулю, поэтому устройства, которые не поддерживают 64-битную адресацию, могут просто не реагировать на команды двойного цикла.

 _ 0_ 1_ 2_ 3_ 4_ 5_ 6_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ GNT № \ ___ / XXXXXXXXXXXXXXXXXXXXXXXX _______ РАМКА# \_______________________ ___ ___ AD [31: 0] ------- <___X___> --------------- (младшие, затем старшие биты) ___ ___ _______________ C / BE [3: 0] # ------- <___ X___X_______________ (DAC, затем фактическая команда) ___________________________ DEVSEL # \ ___ \ ___ \ ___ \ ___ Быстро Мед Медленно _ _ _ _ _ _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5 6

Доступ к конфигурации [ править ]

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

Фазы данных [ править ]

После фазы адресации (в частности, начиная с цикла, в котором DEVSEL # переходит на низкий уровень) идет пакет из одной или нескольких фаз данных . Во всех случаях инициатор передает сигналы выбора активного младшего байта в строках C / BE [3: 0] #, но данные в AD [31: 0] могут управляться инициатором (в случае записи) или цель (в случае чтения).

Во время фаз данных строки C / BE [3: 0] # интерпретируются как разрешения активного младшего байта . В случае записи заявленные сигналы указывают, какой из четырех байтов на шине AD должен быть записан в адресуемое место. В случае чтения они указывают, какие байты интересуют инициатора. Для чтения всегда допустимо игнорировать сигналы разрешения байтов и просто возвращать все 32 бита; ресурсы кэшируемой памяти необходимы, чтобы всегда возвращать 32 действительных бита. Разрешенные байты в основном полезны для доступа к пространству ввода-вывода, когда чтение имеет побочные эффекты.

Фаза данных со всеми четырьмя деактивированными линиями C / BE # явно разрешена стандартом PCI и не должна оказывать никакого влияния на цель, кроме как продвигать адрес в текущем пакетном доступе.

Фаза данных продолжается до тех пор, пока обе стороны не будут готовы завершить передачу и перейти к следующей фазе данных. Инициатор утверждает IRDY # ( инициатор готов ), когда ему больше не нужно ждать, в то время как цель утверждает TRDY # ( цель готова ). Независимо от того, какая сторона предоставляет данные, она должна передать их по шине AD до подачи сигнала готовности.

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

Для поддержания полной пакетной скорости отправитель данных затем имеет половину тактового цикла после того, как видит как IRDY #, так и TRDY #, заявленные для передачи следующего слова на шину AD.

 0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ _______ ___ ___ ___ AD [31: 0] --- <___ XXXXXXXXX_______XXXXX___X___X___ (Если написать) ___ ___ _______ ___ ___ AD [31: 0] --- <___> ~~~ <XXXXXXXX ___ X_______X___X___ (Если прочитано) ___ _______________ _______ ___ ___ C / BE [3: 0] # --- <___ X_______________X_______X___X___ (всегда должно быть действительным) _______________ | ___ | | | IRDY № x \ _______ / x \ ___________ ___________________ | | | | TRDY № xx \ ___________________ ___________ | | | | DEVSEL № \ ___________________________ ___ | | | | РАМКА# \___________________________________ _ _ _ _ _ | _ _ | _ | _ | _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5 6 7 8 9

Это продолжает цикл адресации, проиллюстрированный выше, предполагая один цикл адреса со средним DEVSEL, поэтому цель отвечает вовремя для часов 3. Однако в это время ни одна из сторон не готова к передаче данных. Для часов 4 инициатор готов, а цель - нет. На часах 5 оба готовы, и происходит передача данных (как показано вертикальными линиями). Для часов 6 цель готова к передаче, а инициатор - нет. На такте 7 инициатор становится готовым, и данные передаются. Для тактовых импульсов 8 и 9 обе стороны остаются готовыми к передаче данных, и данные передаются с максимально возможной скоростью (32 бита за такт).

В случае чтения часы 2 зарезервированы для поворота шины AD, поэтому цели не разрешается передавать данные по шине, даже если она способна к быстрому DEVSEL.

Fast DEVSEL # при чтении [ править ]

Цель, поддерживающая быстрый DEVSEL, теоретически может начать отвечать на цикл чтения после того, как адрес представлен. Однако этот цикл зарезервирован для обслуживания шины AD. Таким образом, цель может не управлять шиной AD (и, следовательно, не может утверждать TRDY #) во втором цикле транзакции. Обратите внимание, что большинство целей не будут такими быстрыми и не нуждаются в какой-либо специальной логике для выполнения этого условия.

Завершение транзакций [ править ]

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

Прекращение пакета инициатора [ править ]

Инициатор может пометить любую фазу данных как последнюю в транзакции, сняв FRAME # одновременно с подтверждением IRDY #. Цикл после того, как цель подтверждает TRDY #, окончательная передача данных завершена, обе стороны отменяют свои соответствующие сигналы RDY #, и шина снова бездействует. Ведущее устройство не может деактивировать FRAME # до утверждения IRDY #, а также не может деактивировать FRAME # во время ожидания с установленным IRDY #, чтобы цель подтвердила TRDY #.

Единственное незначительное исключение - завершение главного прерывания , когда ни одна цель не отвечает с DEVSEL #. Очевидно, ждать TRDY # в таком случае бессмысленно. Однако даже в этом случае мастер должен подтвердить IRDY # как минимум на один цикл после отмены FRAME #. (Обычно ведущее устройство устанавливает IRDY # перед получением DEVSEL #, поэтому он должен просто удерживать установленное значение IRDY # на один цикл дольше.) Это необходимо для того, чтобы гарантировать соблюдение правил времени переключения шины в строке FRAME #.

Прекращение целевого пакета [ править ]

Цель запрашивает у инициатора завершение пакета, подтверждая STOP #. Затем инициатор завершит транзакцию, сняв FRAME # при следующей законной возможности; если он желает передать больше данных, он будет продолжен в отдельной транзакции. У цели есть несколько способов сделать это:

Отключиться от данных
Если цель одновременно заявляет STOP # и TRDY #, это означает, что цель хочет, чтобы это была последняя фаза данных. Например, цель, которая не поддерживает пакетные передачи, всегда будет делать это, чтобы принудительно выполнить транзакции PCI, состоящие из одного слова. Это наиболее эффективный способ для цели завершить серию.
Отключиться без данных
Если цель заявляет STOP # без подтверждения TRDY #, это означает, что цель желает остановиться без передачи данных. STOP # считается эквивалентом TRDY # с целью завершения фазы данных, но данные не передаются.
Повторить
Отключение без данных перед передачей каких-либо данных является повторной попыткой , и в отличие от других транзакций PCI, инициаторам PCI требуется небольшая пауза перед продолжением операции. См. Подробности в спецификации PCI.
Отмена цели
Обычно цель содержит DEVSEL #, установленный на последней фазе данных. Однако, если цель отменяет DEVSEL # перед отключением без данных (подтверждение STOP #), это указывает на прерывание цели , что является условием фатальной ошибки. Инициатор не может повторить попытку и обычно рассматривает это как ошибку шины . Обратите внимание, что цель не может отключить DEVSEL # во время ожидания с низким значением TRDY # или STOP #; он должен делать это в начале фазы данных.

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

Disconnect-A
Если инициатор наблюдает STOP # до подтверждения своего собственного IRDY #, то он может завершить пакет, сняв FRAME # одновременно с подтверждением IRDY #, завершив пакет после текущей фазы данных.
Отключить-B
Если инициатор уже подтвердил IRDY # (без отмены FRAME #) к моменту, когда он наблюдает STOP # цели, он фиксируется на дополнительной фазе данных. Цель должна дождаться дополнительной фазы данных, удерживая STOP # без TRDY #, прежде чем транзакция может завершиться.

Если инициатор завершает пакет в то же время, когда цель запрашивает отключение, дополнительного цикла шины не происходит.

Пакетная адресация [ править ]

Для доступа к пространству памяти слова в пакете могут быть доступны в нескольких порядках. Ненужные младшие биты адреса AD [1: 0] используются для передачи запрошенного инициатором порядка. Цель, которая не поддерживает конкретный порядок, должна завершить пакет после первого слова. Некоторые из этих порядков зависят от размера строки кэша, который настраивается на всех устройствах PCI.

Если начальное смещение в строке кэша равно нулю, все эти режимы сводятся к одному и тому же порядку.

Режимы переключения строки кэша и переноса строки кэша - это две формы выборки строки кэша первым критическим словом. Режим переключения выполняет XOR для указанного адреса с увеличивающимся счетчиком. Это родной порядок для процессоров Intel 486 и Pentium. Его преимущество состоит в том, что для его реализации не требуется знать размер строки кэша.

В PCI версии 2.1 был исключен режим переключения и добавлен режим переноса строки кэша, [31] : 2, при котором выборка выполняется линейно с переносом в конце каждой строки кэша. Когда одна строка кэша полностью выбрана, выборка переходит к начальному смещению в следующей строке кэша.

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

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

Примеры транзакций [ править ]

Это максимально возможная скорость записи пакета из четырех слов, завершаемая мастером:

 0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___X___X___X___X___> --- <___> ___ ___ ___ ___ ___ C / BE [3: 0] # --- <___X___X___X___X___> --- <___> | | | | ___ IRDY # ^^^^^^^^ \ ______________ / ^^^^^ | | | | ___ TRDY # ^^^^^^^^ \ ______________ / ^^^^^ | | | | ___ DEVSEL # ^^^^^^^^ \ ______________ / ^^^^^ ___ | | | ___ КАДР № \ _______________ / | ^^^^ \ ____ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7

На фронте тактового сигнала 1 инициатор запускает транзакцию, управляя адресом, командой и утверждая FRAME #. Остальные сигналы бездействуют (обозначены ^^^), подтягиваясь резисторами материнской платы. Это может быть их цикл восстановления. В цикле 2 цель утверждает как DEVSEL #, так и TRDY #. Поскольку инициатор также готов, происходит передача данных. Это повторяется еще три цикла, но перед последним (тактовый фронт 5) мастер отменяет FRAME #, указывая, что это конец. На фронте 6 тактового сигнала шина AD и FRAME # не задействованы (цикл поворота), а другие линии управления находятся в состоянии высокого уровня в течение 1 цикла. На фронте тактового сигнала 7 другой инициатор может начать другую транзакцию. Это также цикл оборота для других линий управления.

Эквивалентный пакет чтения занимает еще один цикл, потому что цель должна ждать 1 цикл, пока шина AD не развернется, прежде чем она сможет подтвердить TRDY #:

 0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___> --- <___X___X___X___> --- <___> ___ _______ ___ ___ ___ C / BE [3: 0] # --- <___X_______X___X___X___> --- <___> ___ | | | | ___ IRDY # ^^^^ \ ___________________ / ^^^^^ ___ _____ | | | | ___ TRDY # ^^^^ \ ______________ / ^^^^^ ___ | | | | ___ DEVSEL # ^^^^ \ ___________________ / ^^^^^ ___ | | | ___ КАДР № \ ___________________ / | ^^^^ \ ____ _ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7 8

Высокоскоростной пакет, прерванный целью, будет иметь дополнительный цикл в конце:

 0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___> --- <___X___X___X___XXXX> ---- ___ _______ ___ ___ ___ ___ C / BE [3: 0] # --- <___X_______X___X___X___X___> ---- | | | | ___ IRDY # ^^^^^^^ \ _______________________ / _____ | | | | _______ TRDY # ^^^^^^^ \ ______________ / ________________ | ___ СТОП # ^^^^^^^ | | | \ _______ / | | | | ___ DEVSEL # ^^^^^^^ \ _______________________ / ___ | | | | ___ КАДР № \ _______________________ / ^^^^ _ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7 8

На фронте 6 тактового сигнала цель указывает, что хочет остановиться (с данными), но инициатор уже удерживает IRDY # на низком уровне, поэтому имеется пятая фаза данных (фронт 7), в течение которой данные не передаются.

Четность [ править ]

Шина PCI обнаруживает ошибки четности, но не пытается исправить их, повторяя операции; это чисто индикация отказа. Благодаря этому нет необходимости обнаруживать ошибку четности до того, как она произошла, и шина PCI фактически обнаруживает ее несколькими циклами позже. Во время фазы данных, какое бы устройство ни управляло линиями AD [31: 0], вычисляет четность по ним и линиям C / BE [3: 0] # и отправляет это в линию PAR на один цикл позже. Все правила доступа и циклы обработки для шины AD применяются к линии PAR всего на один цикл позже. Устройство, прослушивающее шину AD, проверяет полученную четность и через один цикл после этого выдает строку PERR # (ошибка четности). Обычно это генерирует прерывание процессора, и процессор может искать на шине PCI устройство, обнаружившее ошибку.

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

Даже если некоторые байты маскируются C / BE # линии , а не в использовании, они все равно должны иметь некоторое определенное значение, и это значение должно быть использовано для вычисления четности.

Быстрые двусторонние транзакции [ править ]

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

Инициатор может выполнять параллельные транзакции только в том случае, если:

  • они принадлежат одному и тому же инициатору (иначе не было бы времени развернуть строки C / BE # и FRAME #),
  • первая транзакция была записью (так что нет необходимости включать шину AD), и
  • у инициатора все еще есть разрешение (со своего входа GNT #) на использование шины PCI.

Дополнительные временные ограничения могут возникать из-за необходимости изменить целевые линии управления, особенно DEVSEL #. Целевой объект сбрасывает DEVSEL #, переводя его в высокий уровень, в цикле, следующем за последней фазой данных, которая в случае параллельных транзакций является первым циклом фазы адресации. Затем второй цикл фазы адреса резервируется для цикла DEVSEL #, поэтому, если цель отличается от предыдущей, она не должна утверждать DEVSEL # до третьего цикла (средняя скорость DEVSEL).

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

Также возможно, что цель отслеживает требования. Если он никогда не делает быстрого DEVSEL, они встречаются тривиально. Если это так, он должен дождаться среднего времени DEVSEL, если:

  • текущей транзакции предшествовал цикл простоя (не подряд), или
  • предыдущая транзакция была к той же цели, или
  • текущая транзакция началась с двойного адресного цикла.

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

Мост шины субтрактивного декодирования должен знать, что ожидать эту дополнительную задержку в случае обратных циклов, чтобы объявить обратную поддержку.

64-битный PCI [ править ]

Начиная с версии 2.1, [ требуется пояснение ], спецификация PCI включает дополнительную поддержку 64-разрядных систем. Это обеспечивается через расширенный разъем, который обеспечивает 64-битные расширения шины AD [63:32], C / BE [7: 4] # и PAR64, а также ряд дополнительных контактов питания и заземления. 64-разрядный разъем PCI можно отличить от 32-разрядного разъема по дополнительному 64-разрядному сегменту.

При транзакциях с памятью между 64-битными устройствами могут использоваться все 64 бита, чтобы удвоить скорость передачи данных. Транзакции, не связанные с памятью (включая доступ к конфигурации и пространству ввода-вывода), не могут использовать 64-битное расширение. Во время 64-битной передачи пакетная адресация работает так же, как и при 32-битной передаче, но адрес увеличивается дважды за фазу данных. Начальный адрес должен быть выровнен по 64 бита; т.е. AD2 должен быть 0. Данные, соответствующие промежуточным адресам (с AD2 = 1), передаются по верхней половине шины AD.

Чтобы инициировать 64-битную транзакцию, инициатор задает начальный адрес на шине AD и устанавливает REQ64 # одновременно с FRAME #. Если выбранная цель может поддерживать 64-битную передачу для этой транзакции, она отвечает, утверждая ACK64 # одновременно с DEVSEL #. Обратите внимание, что цель может решить для каждой транзакции, разрешить ли 64-битную передачу.

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

Если инициатор видит, что DEVSEL # заявлено без ACK64 #, он выполняет 32-битные фазы данных. Данные, которые были бы переданы по верхней половине шины во время первой фазы данных, вместо этого передаются во время второй фазы данных. Обычно инициатор запускает все 64 бита данных до того, как увидит DEVSEL #. Если ACK64 # отсутствует, он может перестать управлять верхней половиной шины данных.

Строки REQ64 # и ACK64 # удерживаются утвержденными для всей транзакции, за исключением последней фазы данных, и отменяются одновременно с FRAME # и DEVSEL # соответственно.

Линия PAR64 работает так же, как линия PAR, но обеспечивает четность по AD [63:32] и C / BE [7: 4] #. Это действительно только для адресных фаз, если заявлено REQ64 #. PAR64 действителен только для фаз данных, если заявлены как REQ64 #, так и ACK64 #.

Отслеживание кеша (устаревшее) [ править ]

Изначально в PCI была включена дополнительная поддержка согласованности кэш - памяти с обратной записью . Для этого требовалась поддержка целевыми объектами кэшируемой памяти, которые будут прослушивать два контакта из кеша на шине: SDONE (отслеживание выполнено) и SBO # (отсчет времени откладывания). [34]

Поскольку это редко реализовывалось на практике, оно было удалено из версии 2.2 спецификации PCI, [15] [35], а контакты повторно использовались для доступа к SMBus в версии 2.3. [17]

Кеш будет отслеживать все обращения к памяти без подтверждения DEVSEL #. Если он заметил доступ, который мог быть кэширован, он снизил бы уровень SDONE (отслеживание не выполнено). Целевой объект, поддерживающий согласованность, избежал бы завершения фазы данных (утверждения TRDY #) до тех пор, пока не достигнет высокого уровня SDONE.

В случае записи в данные, которые были чистыми в кэше, кэш должен был бы только аннулировать свою копию и утверждать SDONE, как только это будет установлено. Однако, если кеш содержит грязные данные, кеш должен будет записать их обратно, прежде чем доступ может продолжиться. поэтому он будет утверждать SBO # при поднятии SDONE. Это будет сигнализировать активной цели об утверждении STOP #, а не TRDY #, в результате чего инициатор отключится и попытается повторить операцию позже. Тем временем кеш будет выполнять арбитраж для шины и записывать свои данные обратно в память.

Цели, поддерживающие когерентность кэша, также должны прекращать пакеты до того, как они пересекут строки кэша.

Инструменты разработки [ править ]

Плата PCI, которая отображает номера самопроверки при включении (POST) во время запуска BIOS.

При разработке и / или поиске и устранении неисправностей шины PCI очень важным может быть изучение сигналов оборудования. Логические анализаторы и анализаторы шины - это инструменты, которые собирают, анализируют и декодируют сигналы, чтобы пользователи могли их использовать.

См. Также [ править ]

  • Пространство конфигурации PCI
  • CompactPCI , PCI-X , PCI Express
  • PCI-SIG , Специальная группа по интересам PCI
  • PICMG , Группа производителей промышленных компьютеров PCI
  • Еврокарта (печатная плата)

Ссылки [ править ]

  1. ^ Спецификация локальной шины PCI, редакция 2.2 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 18 декабря 1998 г. стр. Ii.
  2. ^ «PCIe (Peripheral Component Interconnect Express) | На материнской плате | ИТ-сертификация Pearson» . www.pearsonitcertification.com . Проверено 25 сентября 2020 .
  3. ^ «PCI» . Web ‐ o ‐ pedia..
  4. ^ Хамахер, В. Карл; Вранешич, Звонко Г .; Заки, Сафват Г. (2002). Компьютерная организация (5-е изд.). Макгроу-Хилл. ISBN 9780071122184.
  5. ^ "Графическая карта AMD HD 4350 PCI Edition от HIS" . Проверено 27 июля 2009 .
  6. ^ Имдад-Хак, Фейсал (1996). Внутренняя карта PC Card: CardBus и PCMCIA Дизайн: CardBus и PCMCIA Design . Newnes. п. 39. ISBN 978-0-08-053473-2.
  7. ^ Sumathi, S .; Суреха, П. (2007). Усовершенствованные инструментальные системы на основе LabVIEW . Springer. п. 305. ISBN 978-3-540-48501-8.
  8. ^ https://documentation.euresys.com/Products/MultiCam/MultiCam_6_16/Content/MultiCam_6_7_HTML_Documentation/PCI_Bus_Variation.pdf
  9. ^ a b Уильямс, Джон (2008). Проектирование цифровых СБИС с помощью Verilog: Учебник от Технического института Кремниевой долины . Springer. п. 67. ISBN 978-1-4020-8446-1.
  10. ^ Bachmutsky, Александр (2011). Системное проектирование телекоммуникационных шлюзов . Джон Вили и сыновья. п. 81. ISBN 978-1-119-95642-6.
  11. ^ VLB был разработан для систем на базе 486, но даже более общий PCI должен был получить известность на этой платформе.
  12. ^ Майерс, Майкл (2012). CompTIA A + Certification All-in-One Exam Guide (8-е изд.). McGraw Hill Professional. п. 339. ISBN. 978-0-07-179512-8.
  13. ^ Определите различные слоты PCI , LaCie
  14. ^ Семейная история PCI
  15. ^ a b c d e f Спецификация локальной шины PCI, версия 3.0
  16. ^ "Таймер задержки PCI Howto" . Reric.NET Эрика Сеппанена. 2004-11-14 . Проверено 17 июля 2008 .
  17. ^ a b c d e Спецификация локальной шины PCI, версия 2.3 . Портленд, Орегон : Специальная группа по интересам PCI . 29 марта 2002 г.
  18. ^ Распиновка разъема PCI
  19. ^ a b Спецификация интерфейса управления питанием PCI v1.2
  20. ^ archive.org/zuavra.net - Использование Wake-On-LAN WOL / PME для удаленного включения компьютера
  21. ^ ZNYX сети (16 июня 2009). «Серия ZX370» . Архивировано из оригинала 2 мая 2011 года . Проверено 13 июля 2012 года . Серия ZX370 - это настоящий 64-битный адаптер, расширяющий сетевой конвейер для достижения более высокой пропускной способности, при этом предлагая обратную совместимость со стандартными 32-битными слотами PCI.
  22. ^ ZNYX Networks. «Многоканальный адаптер PCI Fast Ethernet серии ZX370» (PDF) . Архивировано из оригинального (PDF) 20 июля 2013 года . Проверено 13 июля 2012 года . Обратная совместимость с 32-битными слотами PCI, 33 МГц
  23. ^ Adaptec (январь 2000 г.). «Справочник пользователя контроллера SCSI карты Adaptec SCSI 29160 Ultra160» (pdf) . п. 1 . Проверено 13 июля 2012 года . Хотя Adaptec SCSI Card 29160 является 64-битной картой PCI, она также работает в 32-битном слоте PCI. При установке в 32-битный слот PCI карта автоматически работает в более медленном 32-битном режиме.
  24. ^ LaCie. «Поддержка LaCie: определение множества разъемов PCI» . Архивировано из оригинала 4 апреля 2012 года . Проверено 13 июля 2012 года .[ ненадежный источник? ]
  25. ^ Спецификация локальной шины PCI, редакция 3.0 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 3 февраля 2004 г. Рисунок 5-8.
  26. ^ Спецификация локальной шины PCI, редакция 3.0 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 3 февраля 2004 г. Рисунок 5-9.
  27. ^ Спецификация локальной шины PCI, редакция 3.0 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 3 февраля 2004 г. Рисунок 5-6.
  28. ^ Спецификация локальной шины PCI, редакция 3.0 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 3 февраля 2004 г. Рисунок 5-7.
  29. ^ Micro PCI, Micro AGP (FAQ), iBASE, заархивировано из оригинала 11 декабря 2001 г. , извлечено 20 ноября 2010 г..
  30. ^ Рудье, Жерар (2001-11-28). «Re: sym53c875: чтение / proc вызывает ошибку четности SCSI» . linux-kernel (список рассылки).
  31. ^ a b Спецификация локальной шины PCI: версия 2.1 по сравнению с версией 2.0 (PDF) (примечание по применению). Корпорация Intel. Март 1997 г. АП-753. Архивировано из оригинального (PDF) 30 апреля 2015 года.
  32. ^ «Особенности шины - Написание драйверов устройств для Oracle® Solaris 11.3» . docs.oracle.com . Проверено 18 декабря 2020 .
  33. ^ Спецификация архитектуры моста PCI-to-PCI, редакция 1.1
  34. ^ Спецификация локальной шины PCI, редакция 2.1
  35. ^ Спецификация локальной шины PCI, редакция 2.2 . Хиллсборо, Орегон : Специальная группа по интересам PCI . 18 декабря 1998 г.

Дальнейшее чтение [ править ]

Официальные технические характеристики
  • Спецификация локальной шины PCI: Версия 2.3 . PCI-SIG. 29 марта 2002 г. (1000 долларов США для лиц, не являющихся членами, или 50 долларов США для участников. Членство в PCI-SIG составляет 3000 долларов США в год).
  • Спецификация локальной шины PCI: Версия 3.0 . PCI-SIG. 12 августа 2002 г. (1000 долларов США для лиц, не являющихся членами, или 50 долларов США для участников. Членство в PCI-SIG составляет 3000 долларов США в год).
Книги
  • Эбботт, Дуг (2004). Демистификация шины PCI (2-е изд.). ISBN 978-0-7506-7739-4. 250 страниц.
  • Шенли, Том (1999). Архитектура системы PCI (4-е изд.). ISBN 978-0-201-30974-4. 832 страницы.
  • Шенли, Том (2000). Архитектура системы PCI-X (1-е изд.). ISBN 978-0-201-72682-4. 752 страницы.
  • Солари, Эд (2001). Архитектура и дизайн аппаратного и программного обеспечения PCI и PCI-X (5-е изд.). ISBN 978-0-929392-63-9. 1140 страниц.
  • Гудрам, Алан (1998). PCI HotPlug Application and Design (1-е изд.). ISBN 978-0-929392-60-8. 162 страницы.

Внешние ссылки [ править ]

Официальный
  • Официальный сайт PCI Special Interest Group (PCI-SIG)
Технические детали
  • Введение в протокол PCI. Архивировано 19 января 2013 г. на Wayback Machine , electrofriends.com.
  • Распиновка и сигналы шины PCI , pinouts.ru
  • Размеры карты PCI , interfacebus.com
Списки производителей, устройств, идентификаторов
  • Списки поставщиков и устройств PCI , pcidatabase.com
  • Репозиторий PCI ID , проект по сбору всех известных идентификаторов
подсказки
  • Краткий обзор требований к питанию и совместимости PCI с красивой схемой
  • Хорошие диаграммы и текст о том, как распознать разницу между гнездами 5 и 3,3 вольт.
Linux
  • Linux с картами miniPCI
  • Страница проверки драйвера устройства PCI для GNU / Linux
  • Расшифровка данных PCI и вывода lspci на хостах Linux
Инструменты разработки
  • Активный удлинитель шины PCI , dinigroup.com
Ядра ПЛИС
  • Ядро интерфейса PCI , решетчатый полупроводник
  • Ядро моста PCI , OpenCore.
  • IP-поиск ядер шины PCI , Беркли.