Порт pci express root что это
Перейти к содержимому

Порт pci express root что это

  • автор:

Pci express root port что это

Pci Express Root Port — это важное устройство, которое используется в компьютерах и других электронных устройствах для управления и обмена данными с различными расширительными картами. Этот порт является ключевым элементом системной шины PCI Express, которая широко используется в современных компьютерах и серверах для подключения периферийных устройств.

Основная функция Pci Express Root Port заключается в передаче данных между центральным процессором и установленными в систему картами расширения. Этот порт обеспечивает высокоскоростную передачу данных, обеспечивая эффективное взаимодействие между компонентами системы.

Каждый компьютер или сервер имеет несколько Pci Express Root Port, которые имеют различные конфигурации и характеристики, в зависимости от производителя и модели. Они могут поддерживать различные версии шины PCI Express, такие как PCI Express 2.0 или PCI Express 3.0, и иметь различное количество линий передачи данных.

В общем, Pci Express Root Port является одним из ключевых компонентов современных компьютерных систем, обеспечивающим высокоскоростную передачу данных между компонентами. Благодаря этому порту устройства могут эффективно обмениваться данными и функционировать с высокой производительностью.

Pci Express Root Port: основные принципы работы

PCI Express (или PCIe) — это шина, используемая в компьютерах для обмена данными между различными устройствами внутри системы. Одним из ключевых компонентов PCI Express является Pci Express Root Port, который играет важную роль в обеспечении связи между процессором и другими устройствами в видеоадаптерах, звуковых карт, сетевых адаптерах и др.

Pci Express Root Port является интерфейсным портом, который подключается к системной шине на материнской плате. Он служит точкой входа для всех подключаемых устройств PCIe. Каждый корневой порт соответствует одному или нескольким слотам PCIe, которые могут поддерживать разные версии протокола PCI Express.

Когда устройство PCIe подключается к Pci Express Root Port, порт автоматически обнаруживает подключенное устройство и устанавливает соединение с ним. Это происходит благодаря механизму плаг-энд-плей (plug-and-play), который автоматически определяет все характеристики подключенного устройства и настраивает связь между ним и корневым портом.

Одним из важных параметров, которые Pci Express Root Port определяет, является скорость передачи данных. PCIe поддерживает разные поколения, такие как PCIe 1.0, PCIe 2.0, PCIe 3.0 и т. д., каждое из которых имеет свою максимальную скорость передачи данных. Когда устройство подключается к Pci Express Root Port, порт автоматически выбирает наибольшую возможную скорость, которую могут поддерживать оба устройства.

Pci Express Root Port также играет роль в обеспечении коммуникации между устройствами внутри системы. Если одно устройство хочет передать данные другому устройству, оно может отправить данные в Pci Express Root Port, который затем передаст эти данные нужному устройству. Таким образом, Pci Express Root Port действует в качестве центрального узла для обмена данными между устройствами PCIe.

В заключение, Pci Express Root Port является важной составляющей системной шины PCIe. Он обеспечивает точку входа для всех подключаемых устройств и обеспечивает связь между процессором и другими устройствами в системе. Благодаря Pci Express Root Port, устройства PCIe могут обмениваться данными с высокой скоростью и эффективностью, что делает его важным компонентом современных компьютерных систем.

Структура и функциональность Pci Express Root Port

Pci Express Root Port – это устройство, которое является частью архитектуры шины PCI Express. Оно играет важную роль в передаче данных между процессором и другими устройствами, подключенными к шине PCI Express.

Структура Pci Express Root Port обычно состоит из нескольких компонентов:

  1. Коннектор: это физический разъем, который используется для подключения устройств к Pci Express Root Port.
  2. Мост: он выполняет функцию пересылки данных между Pci Express Root Port и другими устройствами, такими как графические карты, сетевые адаптеры и другое периферийное оборудование.
  3. Контроллер: он управляет передачей данных между процессором и подключенными устройствами через шину PCI Express.
  4. Регистры: они содержат информацию о конфигурации Pci Express Root Port, такую как идентификаторы устройств, адреса памяти и другие параметры.
  5. Логические блоки: они выполняют специфические функции, такие как управление энергопотреблением и обнаружение подключенных устройств.

Pci Express Root Port работает по модели клиент-сервер, где процессор выступает в роли клиента, а подключенные устройства – в роли сервера.

Когда процессор отправляет запрос на чтение или запись данных, Pci Express Root Port передает этот запрос по шине PCI Express. Затем мост принимает запрос и направляет его к нужному устройству. Устройство выполняет запрос и возвращает результат обратно по шине PCI Express.

Pci Express Root Port также обеспечивает механизм автоматического обнаружения устройств, подключенных к шине PCI Express. Когда новое устройство подключается, Pci Express Root Port обнаруживает его и автоматически настраивает соединение с ним.

В целом, Pci Express Root Port предоставляет надежный и эффективный способ передачи данных между процессором и другими устройствами. Его структура и функциональность являются важными компонентами в архитектуре шины PCI Express.

PCI Express Root Complex — что это за драйвер?

Приветствую. PCI Express Root Complex — драйвер, предположительно для материнской платы. Часто можно встретить на ноутбуках. В названии присутствует слово PCI — это разьем (шина ввода-вывода) на материнке для таких девайсов как видеокарта, звуковая карта, сетевая и другие. Возможно драйвер нужен для нормальной работы PCI.

Название данного драйвера можно увидеть в диспетчере устройств в виде неопознанного устройства.

Разбираемся

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

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

Нашел возможно полное название — PCI Express Root Complex Interface. Слово Interface намекает на отношение к внутреннему встроенному устройству — PCI.

Некоторые пользователи пишут — у них при BSOD (синий экран) упоминается название драйвера.

Поискав информацию, выяснил — устройство спокойно может оказаться:

  1. Карт-ридером.
  2. Датчиком падения.
  3. Управление специальными кнопками.

Нашел интересную информацию:

Как найти драйвер

Получается под названием драйвера может быть разное устройство. Чтобы точно определить — нужно узнать ИД оборудования. Для этого открываем диспетчер устройств, это можно сделать так:

  1. Зажимаем Win + R.
  2. Появится окошко выполнить, вставляем команду devmgmt.msc, нажимаем ОК:

Откроется диспетчер устройств. Находим PCI Express Root Complex в разделе Другие устройства (Other devices), нажимаем правой кнопкой > выбираем Свойства. Далее открываем вкладку Сведения, на которой в меню выбираем пункт ИД оборудования (сетевой контроллер — для примера):

Копируете значение PCI\VEN, начиная с самого большего. И ищите в поисковике. Главное что нужно понимать — при помощи этих значений вы можете точно найти устройство, максимум два, но одно из них — точно будет ваше. После того как нашли, поняли что за устройство — ищите к нему драйвера уже.

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

  1. Откройте панель управления.
  2. Найдите значок Система, запустите.
  3. Выберите Защита системы.
  4. Дальше нажимаете Создать.
  5. Пишите название точки, советую так и называть — до установки драйвера.

После — можете ставить драйвер. Если не подойдет — лучше воспользоваться точкой и таким образом вернуть в то время, когда драйвер еще не был установлен, и потом уже пробовать другой. Я бы делал именно так, а не удалял бы драйвер.

Когда с устройством все нормально и драйвера установлены, то будет примерно такая картина:

Порт pci express root что это

PCI Express в ПЛИС V-й серии Intel: основы интерфейса и особенности аппаратных ядер

Знакомый многим интерфейс PCI Express или PCIe был доступен разработчикам систем на ПЛИС уже тогда, когда он только начинал распространяться в цифровой технике. В это время существовало решение, в котором программное ядро подключалось ко внешней микросхеме физического уровня [5]. Это позволяло создавать одноканальную линию PCIe со скоростью 2,5 гигатранзакций в секунду. В дальнейшем, благодаря развитию технологий, физический уровень интерфейса перекочевал в аппаратные блоки PCIe внутри самих ПЛИС; количество возможных каналов увеличилось до 8, а в ряде новых микросхем — и до 16; вслед за современными стандартами выросли возможные скорости передачи данных.

В то же время, в русскоязычных источниках по-прежнему затруднительно найти вспомогательные материалы по работе с аппаратными ядрами современных ПЛИС, не так и много информации доступно по самому интерфейсу PCIe. Руководство к аппаратным ядрам PCI Express подразумевает, что разработчик уже ознакомился со стандартом и понимает основы передачи данных между устройством и персональным компьютером (ПК). Однако обилие информации в самом стандарте PCIe не дает сразу же разобраться в том, какие шаги необходимо предпринять, чтобы успешно передать данные от устройства в память ПК или обратно. Чтобы получить более полную картину, немалую часть сведений приходится собирать по крупицам из разных источников. Для разработчиков систем на ПЛИС фирмы Intel сложность также заключается в том, что большинство доступных материалов и статей описывают работу с аппаратными ядрами ПЛИС фирмы Xilinx.

В данной статье автор постарается рассказать о том, что необходимо знать разработчику систем на ПЛИС для работы с интерфейсом PCI Express; рассмотрит особенности работы с аппаратными ядрами PCI Express ПЛИС V-й серии фирмы Intel в варианте Avalon-ST.

Уровни PCIe и виды пакетов

Несмотря на то, что PCI Express часто называют шиной, фактически данный интерфейс представляет собой сеть из устройств, связанных группами последовательных дуплексных каналов. Сама сеть PCI Express состоит из нескольких основных узлов: корень (Root), оконечная точка (Endpoint) и маршрутизатор (Switch) (рисунок 1). Для передачи данных только между двумя устройствами достаточно иметь корень и оконечную точку. В случае с современными ПК корень сети располагается на одной подложке вместе с ядрами центрального процессора. Вне зависимости от того, где находится корень PCIe, он связан с системной памятью.


Рисунок 1 — Сеть PCIe

Протокол передачи данных PCIe разделяется на три уровня: уровень транзакций (Transaction Layer), канальный уровень (Data Link Layer) и физический уровень (Physical Layer). Данные по интерфейсу передаются в виде пакетов. Обобщенный вид пакетов представлен на рисунке 2.


Рисунок 2 — Обобщенный вид пакетов PCIe

На уровне транзакций любой пакет (TLP) состоит как минимум из заголовка. В зависимости от типа пакета за заголовком могут следовать данные — полезное содержимое пакета. Также в конце пакета может быть добавлена дополнительная контрольная сумма. Существуют следующие основные виды пакетов уровня транзакций (таблица 1):

Таблица 1 — Виды пакетов уровня транзакций

№ п. Вид пакета Наименование типа пакета по спецификации
1 Запрос на чтение памяти Memory Read Request
2 Запрос на запись в память Memory Write Request
3 Запрос на чтение пространства I/O I/O Read Request
4 Запрос на запись в пространство I/O I/O Write Request
5 Конфигурационный запрос на чтение Configuration Read Request
6 Конфигурационный запрос на запись Configuration Write Request
7 Ответ на чтение Completion
8 Сообщение Message

На канальном уровне к каждому пакету уровня транзакций добавляются порядковый номер пакета и канальная контрольная сумма. Канальный уровень также формирует собственные виды пакетов (DLLP), к которым относятся (таблица 2):

Таблица 2 — Виды пакетов канального уровня

№ п. Вид пакета Наименование типа пакета по спецификации
1 Подтверждение пакета уровня транзакций TLP Ack
2 Отклонение пакета уровня транзакций TLP Nack
3 Управление питанием Power Management
4 Управление потоком данных Flow Control

Наконец, физический уровень дополняет пакеты символами начала и конца пакетов, которые заимствованы из стандарта IEEE 802.3. Для пакетов уровня транзакций используются символы K27.7 и K29.7 соответственно; для пакетов канального уровня — символы K28.2 и K29.7.
При работе с аппаратными ядрами ПЛИС разработчику необходимо формировать только пакеты уровня транзакций; пакеты канального и физического уровней формируются блоками ядра.

Маршрутизация пакетов уровня транзакций

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

  • маршрутизация по адресу;
  • маршрутизация по идентификатору;
  • косвенная маршрутизация.

Таблица 3 — Соответствие способа маршрутизации и типа пакета

№п Способ маршрутизации Тип пакета
1 Маршрутизация по адресу Запросы на чтение памяти и запись в память.
Запросы на чтение пространства I/O и запись в пространство I/O
2 Маршрутизация по идентификатору Конфигурационные запросы на чтение и запись.
Сообщения с маршрутизацией по ID.
Ответы на чтение
3 Косвенная маршрутизация Сообщения с маршрутизацией без ID

Обращение к оконечной точке. Передача данных между оконечной точкой и системной памятью

Каждая оконечная точка обладает собственным Конфигурационным пространством (Configuration Space), где располагаются различные регистры команд и состояния. В их числе — регистры базового адреса (Base Address Register) или BAR. При инициализации оконечных точек BIOS или операционная система просматривает BAR оконечных точек, чтобы определить, какой размер памяти и под какое пространство требуется для каждой оконечной точки. Затем в каждый активный BAR записывается начальный адрес выделенного участка системной памяти. В результате, оконечная точка приобретает адрес, по которому можно отправлять соответствующие запросы. Обыкновенно, в оконечной точке формируют карту регистров, которую привязывают к выделенным участкам памяти.

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

Таким образом система располагает информацией, достаточной для того, чтобы обмениваться данными с оконечной точкой. Тем не менее, передача данных с помощью запросов в BAR имеет низкое быстродействие. Во-первых, для BAR с шириной в 32 бита полезная длина запросов ограничена одним двойным словом (DWORD); для BAR с шириной 64 бита — двумя двойными словами. Во-вторых, каждый запрос происходит при участии центрального процессора. Чтобы снизить нагрузку на центральный процессор, а также увеличить размер каждой посылки, необходимо, чтобы оконечная точка самостоятельно перемещала данные в системную память или обратно. Для этого оконечная точка должна знать, по каким адресам системной памяти она может записывать или читать данные.

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

  1. драйвер оконечной точки выделяет в системной памяти буферы для записи данных;
  2. драйвер формирует в системной памяти набор адресов и размеров буферов — дескрипторов буферов для записи данных;
  3. драйвер оконечной точки записывает адрес набора дескрипторов в регистры устройства, привязанные к областям BAR;
  4. драйвер оконечной точки программирует регистры контроля передачи данных, привязанные к областям BAR;
  5. оконечная точка посылает запрос на чтение системной памяти, чтобы получить набор дескрипторов для записи в системную память;
  6. оконечная точка посылает запросы на запись в системную память и наполняет буферы хранения данных;
  7. оконечная точка информирует центральный процессор и/или драйвер о том, что передача данных закончена, с помощью прерывания или записи в область памяти, определенную драйвером;
  8. на протяжении всего времени работы оконечная точка отвечает на входящие запросы на чтение и реагирует на сообщения от корня PCIe.

Содержимое пакетов уровня транзакций

На этапе, когда драйвер конфигурирует регистры оконечной точки, в зависимости от типа адресного пространства, связанного с BAR, оконечная точка получат запрос на запись в память (рисунок 3) или запрос на запись в пространство I/O. Если во время конфигурации регистров драйвер читает какой-либо регистр, оконечная точка также получает соответствующие запросы на чтение (рисунок 4).

image
Рисунок 3 — Пример запроса на запись в память длиной в 1 DW


Рисунок 4 — Пример запроса на чтение из памяти длиной в 1 DW

В отличие от запросов на запись или чтение памяти, запросы в пространство I/O обладают рядом ограничений. Во-первых, как запросы на запись, так и чтение, требуют ответа от получателя. Это ведет к тому, что скорость передачи данных с помощью запросов в пространство I/O становится много ниже, чем допускает теоретическая пропускная способность PCIe. Во-вторых, адрес запросов пространства I/O ограничен разрядностью в 32 бита, что не позволяет обращаться к фрагментам системной памяти за пределами 4 ГБ. В-третьих, запросы пространства I/O не могут превышать одно двойное слово и не могут использовать несколько виртуальных каналов для транспортировки. По этим причинам запросы на запись и чтение в пространство I/O в дальнейшем рассматриваться не будут. Тем не менее, содержимое заголовков запросов на запись/чтение памяти и пространства I/O отличается только рядом полей, поэтому структуры пакетов, показанные на рисунках 3, 4, применимы и к запросам в пространство I/O.

Когда оконечная точка или корень PCIe получает запрос на чтение памяти или пространства I/O, устройство обязано отправить ответ. Если отправитель запроса не получит ответ в течение определенного времени, это приведет к ошибке ожидания ответа. Если устройство по каким-то причинам не может отправить запрошенные данные, оно должно сформировать ответ с ошибкой. Возможными причинами могут быть: получатель не поддерживает данный запрос (Unsupported Request); получатель не готов принять конфигурационный запрос и просит повторить его позднее (Configuration Request Retry Status), произошла внутренняя ошибка, из-за которой получатель не может ответить и отклоняет запрос (Completer Abort).

Форматы успешного ответа на запрос чтения и ответа с ошибкой о неподдерживаемом запросе представлены на рисунках 5, 6.


Рисунок 5 — Пример успешного ответа на чтение


Рисунок 6— Пример ответа о неподдерживаемом запросе

В то время, когда оконечная точка обращается в область памяти в пределах 4 ГБ, формат заголовков пакетов не отличается от заголовков, показанных на рисунках 3, 4. Для запросов записи или чтении памяти за пределами 4 ГБ в заголовке используется дополнительное двойное слово со старшими разрядами целевого адреса (рисунок 7).


Рисунок 7 — Пример заголовка запроса на запись 128 байт

Пояснения к сокращенным названиям полей заголовков пакетов представлены в таблице 4.

Таблица 4 — Перечень сокращений для полей заголовков

№ п. Обозначение поля Название поля Назначение
1 TC Категория трафика ‒ Traffic Class Определяет принадлежность к виртуальному каналу
2 Атр. Атрибуты Устанавливают порядок очередности пакетов: строгий, нестрогий, очередность только по ID, нестрогая очередность вместе с адресацией по ID.
3 TH Наличие подсказки обработки пакетов ‒ TLP Processing Hint Показывает, есть ли подсказка по обработке пакета в битах [1..0] двойного слова с младшими байтами адреса.
4 TD Наличие на уровне транзакций контрольной суммы пакета ‒ TLP Digest Показывает, является последнее двойное слово в пакете контрольной суммой или нет.
5 EP Наличие ошибки целостности данных пакета Показывает, нарушена целостность данных пакета или нет.
6 AT Трансляция адреса ‒ Address Translation Определяет, должен ли адрес быть транслирован: адрес не транслирован, запрос трансляции, адрес транслирован
7 BE Активные байты в первом и последнем двойных словах ‒ Byte Enable Определяет положение активных байт внутри первого и последнего двойных слов
8 PH Подсказка по обработке пакета ‒ Processing Hint Подсказывает получателю пакета, как должен использоваться пакет, а также ‒ структуру данных
9 BCM Наличие изменения числа байт Показывает, было ли изменено количество байт в пакете. Флаг может устанавливать только отправитель в лице PCI-X устройства

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

  • унаследованные прерывания (Legacy Interrupts или INT);
  • прерывания в виде сообщений (Message Signaled Interrupts или MSI);
  • расширенные прерывания в виде сообщения (Message Signaled Interrupts Extended или MSI-X).

Прерывания в виде сообщений вместе с их расширенным вариантом являются основным и обязательным видом прерываний в PCIe. Оба вида прерываний, по сути, представляют собой запрос на запись в системную память с длиной в одно двойное слово. Отличие от обычного запроса заключается в том, что адрес записи и содержимое пакета выделяются для каждого устройства на этапе конфигурации системы. При этом адресатом становится локальный контроллер прерываний (Local Advanced Programmable Interrupt Controller — LAPIC) внутри центрального процессора. При использовании данного вида прерываний не требуется последовательно опрашивать все устройства в дереве PCIe. Более того, если система разрешает устройству использовать несколько векторов прерываний, каждому вектору можно сопоставить своё событие. В совокупности это позволяет сократить время процессора на обработку прерываний и увеличить общее быстродействие системы.

Прерывания MSI позволяют формировать до 32 отдельных векторов. Конкретное количество зависит от возможностей оконечной точки. При этом, система может разрешить использовать только часть векторов. На этапе конфигурации система записывает адрес прерывания и начальные данные для записи в специальные регистры Конфигурационного пространства оконечной точки. Все активные прерывания используют один и тот же адрес. Но для каждого вектора оконечная точка изменяет биты начальных данных. Для примера, пусть оконечная точка поддерживает максимум 4 вектора прерываний, в системе разрешено использовать все 4 вектора, а начальные данные для записи — 0x4970. Тогда чтобы сформировать первый вектор, оконечная точка передает начальные данные неизменными. Для второго вектора устройство изменяет первый бит и передает число 0x4971. Для третьего и четвертого векторов устройство будет передавать числа 0x4972 и 0x4973 соответственно.

Аппаратные ядра ПЛИС самостоятельно формируют пакет с прерыванием MSI по сигналу от логики пользователя. Однако перед тем, как скомандовать ядру отправить прерывание, логика пользователя также должна предоставить содержимое пакета для требуемого вектора на специальный интерфейс ядра.

Прерывания MSI-X позволяют формировать до 2048 отдельных векторов. В соответствующих регистрах Конфигурационного пространства оконечная точка указывает, в каком из адресных пространств BAR и с каким смещением от базового адреса находятся таблица прерываний (рисунок 8) и таблица флагов ожидающих прерываний (Pending Bit Array ‒ PBA, рисунок 9), а также — размеры обеих таблиц. Система записывает в каждую строчку таблицы прерываний отдельный адрес и данные для записи, а также разрешает или запрещает использовать конкретный вектор через первый бит поля Vector Control. По заданному событию оконечная точка выставляет флаг в таблице флагов ожидающих прерываний. Если в поле Vector Control для данного прерывания не выставлена маска, оконечная точка отправляет прерывание по адресу из таблицы прерываний с заданным содержимым пакета.


Рисунок 8 — Таблица векторов прерываний MSI-X


Рисунок 9 — Таблица флагов ожидающих прерываний

Аппаратные ядра ПЛИС не имеют специализированного интерфейса для прерываний MSI-X. Разработчик самостоятельно должен сформировать в пользовательской логике таблицу прерываний и таблицу флагов ожидающих прерываний. Пакет с прерыванием также полностью формируется пользователем и передается через общий интерфейс ядра вместе с другими видами пакетов. Формат пакета при этом, как уже было сказано выше, соответствует запросу на запись в системную память с длиной в одно двойное слово.

Особенности аппаратных ядер PCI Express ПЛИС V-й серии фирмы Intel в варианте Avalon-ST

Несмотря на то, что аппаратные ядра PCI Express ПЛИС разных производителей реализует схожий функционал, отдельные интерфейсы ядер или порядок их работы могут отличаться.
Аппаратные ядра PCI Express ПЛИС V-й серии фирмы Intel представлены в двух вариантах исполнения: с интерфейсом Avalon-MM и интерфейсом Avalon-ST. Последний, хотя и требует от разработчика больше усилий, позволяет получить наибольшую пропускную способность. По этой причине ядро с интерфейсом Avalon-MM рассматриваться не будет.

Документация на ядро PCI Express с интерфейсом Avalon-ST достаточно подробно описывает параметры ядра, входные и выходные сигналы. Тем не менее, ядро имеет ряд особенностей, на которые разработчику следует обратить внимание.

Первая группа особенностей связана со способами, которые позволяют сконфигурировать ПЛИС в течение 100 мс по требованиям PCIe. Помимо параллельной загрузки типа FPP, разработчику предлагаются такие способы как конфигурация через протокол (Configuration via Protocol — CvP) и автономный режим работы ядра (autonomous mode). Разработчик обязательно должен убедиться в том, что конфигурация через протокол или автономный режим ядра поддерживается для выбранной скорости PCIe (параметр «Lane Rate»). Для конфигурации через протокол соответствующую информацию можно найти в документации на ядро. В случае с автономным режимом такой информации нет, поэтому необходимо скомпилировать проект. Если автономный режим ядра не поддерживается для текущей скорости ядра, Quartus выдаст соответствующую ошибку (рисунок 10).


Рисунок 10 — Ошибка компиляции ядра PCIe под автономный режим

Если разработчик планирует задействовать конфигурацию через протокол, он также должен обратить внимание на то, к какому ядру ПЛИС подключен соединитель PCIe. Это особенно актуально, если разработчик использует не готовую плату, а собственное устройство. В ПЛИС с несколькими аппаратными ядрами PCIe только одно ядро позволяет задействовать CvP. Местоположение ядра с поддержкой CvP указано в документации серии ПЛИС.
Вторая группа особенностей относится к собственно интерфейсу передачи данных Avalon-ST. Именно этот интерфейс используется, для передачи пакетов уровня транзакций между логикой пользователя и ядром.

На приемной стороне ядро имеет два сигнала, которые позволяют пользователю приостанавливать выдачу принятых пакетов: сигнал «rx_st_mask» и сигнал «rx_st_ready».
С помощью сигнала «rx_st_ready» разработчик может приостанавливать выдачу всех типов пакетов. Однако если активировать этот сигнал, ядро остановит выдачу пакетов только через два такта рабочей частоты. Следовательно, во время активации сигнала логика пользователя должна быть готова принять дополнительный объем данных. Если, к примеру, разработчик использует буфер в виде FIFO, он должен избегать переполнения буфера. В противном случае, часть содержимого пакета будет потеряна.

С помощью сигнала «rx_st_mask» разработчик приостанавливает выдачу запросов, на которые необходимо отправлять ответы. Этот сигнал также не сразу останавливает выдачу пакетов. Согласно документации, после активации сигнала ядро может выдать вплоть до 10 запросов. Если логика пользователя активирует «rx_st_mask», а в буфере для обработки принятых пакетов будет недостаточно места, это может активировать и сигнал «rx_st_ready». В этой ситуации логика пользователя перестает считывать какие-либо пакеты из внутреннего буфера аппаратного ядра. Это не только переполняет буферы аппаратного ядра, но и нарушает требования очередности пакетов. Устройство обязано пропускать вперед запросы, не требующие ответа, и ответы на чтение. В противном случае канал передачи данных будет намертво заблокирован. По этой причине разработчику следует задействовать дополнительный буфер для обработки запросов с ответами и не позволять логике блокировать более приоритетные пакеты.

На передающей стороне проблемы могут вызвать сигналы «tx_st_valid» и «tx_st_ready». Если сигнал «tx_st_ready» активен, логике пользователя запрещается обнулять «tx_st_valid» в середине исходящего пакета. Это означает, что во время передачи разработчик обязан целиком предоставить содержимое пакета. Если источник данных работает медленнее, чем интерфейс ядра, логика пользователя должна накопить необходимый объем данных до начала пакета.
Как на приемной, так и на передающей стороне разработчику следует обратить внимание на порядок байт в заголовке и содержимом пакета, а также — выравнивание данных.

В пакете Avalon-ST аппаратного ядра, в пределах каждого двойного слова внутри заголовка пакета PCIe байты следуют от младшего к старшему; внутри содержимого пакета — от старшего к младшему. Разработчик должен использовать аналогичный порядок в исходящих пакетах для успешной передачи данных от оконечной точки к корню.

Интерфейс Avalon-ST аппаратного ядра выравнивает данные кратно 64 битам. В зависимости от ширины интерфейса Avalon-ST, длины заголовка пакета уровня транзакций и адреса пакета, ядро может добавлять пустое двойное слово между заголовком пакета и его содержимым. В свою очередь, при передаче данных логика пользователя должна заранее добавлять пустое двойное слово по аналогии с ядром. Это пустое двойное слово не учитывается в длине пакета и нужно лишь для правильной работы аппаратного ядра.

Следующая особенность связана со входящими ответами на чтение. В описании ядра сказано, что оно не пропускает входящие ответы, идентификатор которых не совпадает с исходящим запросом. В то же время, за временем ожидания ответов должна следить логика пользователя. Если время ожидания будет превышено, логика пользователя должна поднять флаг «cpl_err[0]» или «cpl_err[1]». Из документации неясно, как будет работать фильтрация в случае, когда оконечная точка посылает несколько запросов на чтение. Логика пользователя лишь сообщает ядру, что время ожидания истекло для одного из запросов, но не может передать ядру идентификатор этого запроса. Возникает вероятность того, что ядро может передать на сторону пользователя ответы для запроса с истекшим временем ожидания. Следовательно, разработчик должен сформировать собственный фильтр входящих ответов.

Напоследок, разработчикам настоятельно рекомендуется использовать информацию о доступных кредитах для исходящих пакетов. Документация на ядро говорит о том, что это необязательно, так как ядро проверяет кредиты и блокирует пакеты, когда кредитов становится недостаточно. Тем не менее, все типы пакетов поступают на ядро по единственному интерфейсу. Если буфер пакетов ядра переполнится, ядро опускает сигнал «tx_st_ready» в ноль. До тех пор, пока сигнал «tx_st_ready» не установится в единицу, логика пользователя в принципе не может отправлять какие-либо пакеты. Количество доступных кредитов обновляется через пакеты от устройства-партнера. Если логика пользователя не только часто пишет, но и читает, то падает скорость, с которой ядро обновляет счетчики лимитов. В конце концов страдает общая производительность системы.

Заключение

В статье были описаны общие принципы передачи данных по интерфейсу PCI Express, приведены форматы основных пакетов данных. Тем не менее, автор опустил такие составляющие интерфейса, как виртуальные каналы, контроль объема входящих ответов на чтение, нестрогая очередность пакетов. Данные темы подробно рассмотрены в ряде зарубежных источников [4, 6].
В статью также включены особенности аппаратных ядер PCI Express ПЛИС V-й серии фирмы Intel, с которыми автор столкнулся во время работы над контроллером интерфейса. Данный опыт может быть полезен другим разработчикам.

PCI Express Root Complex — что это за драйвер?

Приветствую. PCI Express Root Complex — драйвер, предположительно для материнской платы. Часто можно встретить на ноутбуках. В названии присутствует слово PCI — это разьем (шина ввода-вывода) на материнке для таких девайсов как видеокарта, звуковая карта, сетевая и другие. Возможно драйвер нужен для нормальной работы PCI.

Название данного драйвера можно увидеть в диспетчере устройств в виде неопознанного устройства.

Разбираемся

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

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

Нашел возможно полное название — PCI Express Root Complex Interface. Слово Interface намекает на отношение к внутреннему встроенному устройству — PCI.

Некоторые пользователи пишут — у них при BSOD (синий экран) упоминается название драйвера.

Поискав информацию, выяснил — устройство спокойно может оказаться:

  1. Карт-ридером.
  2. Датчиком падения.
  3. Управление специальными кнопками.

Нашел интересную информацию:

Как найти драйвер

Получается под названием драйвера может быть разное устройство. Чтобы точно определить — нужно узнать ИД оборудования. Для этого открываем диспетчер устройств, это можно сделать так:

  1. Зажимаем Win + R.
  2. Появится окошко выполнить, вставляем команду devmgmt.msc, нажимаем ОК:

Откроется диспетчер устройств. Находим PCI Express Root Complex в разделе Другие устройства (Other devices), нажимаем правой кнопкой > выбираем Свойства. Далее открываем вкладку Сведения, на которой в меню выбираем пункт ИД оборудования (сетевой контроллер — для примера):

Копируете значение PCI\VEN, начиная с самого большего. И ищите в поисковике. Главное что нужно понимать — при помощи этих значений вы можете точно найти устройство, максимум два, но одно из них — точно будет ваше. После того как нашли, поняли что за устройство — ищите к нему драйвера уже.

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

  1. Откройте панель управления.
  2. Найдите значок Система, запустите.
  3. Выберите Защита системы.
  4. Дальше нажимаете Создать.
  5. Пишите название точки, советую так и называть — до установки драйвера.

После — можете ставить драйвер. Если не подойдет — лучше воспользоваться точкой и таким образом вернуть в то время, когда драйвер еще не был установлен, и потом уже пробовать другой. Я бы делал именно так, а не удалял бы драйвер.

Когда с устройством все нормально и драйвера установлены, то будет примерно такая картина:

-PCI Express Root Port Вот эта шляпа сегодня начала выводить из сна мой пк (выводит где то через 1 минуту)

Устройство KabyLake PCI Express Root Port 10-A2B1 работает неправильно
Windows 10 в центре безопасности пишет, что KabyLake PCI Express Root Port 10-A2B1 работает.

Драйвер для GeForce GT 220 и Intel(R) N10/ICH7 Family PCI Express Root Port — 27D0
Добрый день, у меня проблема. Появилась необходимость на старом компьютере заменить видеокарточку.

2008 R2 — Устранимая аппаратная ошибка. Компонент: Порт PCI Express Root
Всем добрый день! Подскажите, есть сервер 2006R2 стоит на железе X9DRL-3F/iF. Поставил вчера.

Лучший ответСообщение было отмечено kumehtar как решение

Решение

Ноут стал переходить в режим сна буквально через минуту после бездействия
Не так давно появились такие проблемы: Вначале ноут стал переходить в режим, сна буквально через.

Выбор видеокарты под PCI Express 2.0 2 PCI, 1 PCI-E x1, 1 PCI-E x16
Помогите хочу покупать в Среду Видео ATI Radeon 5850 1GB но там PCI Express 2.1 а у меня на.

Почему вот эта прога ничего не выводит на экран.
program bublik; uses graph, crt; const r=100; r1=10; var i: real;

Почему вот эта прога на экран ничего не выводит ?
Program Salut; Uses Graph, Crt; Var n,y,x,a,b,c,f,e,i,Gd,Gm: integer; Begin Randomize;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *