NVMe-накопители в разных режимах работы интерфейса PCI Express: практическое исследование масштабируемости интерфейса в задачах передачи данных. Интерфейс PCI-Express, его основные характеристики и обратная совместимость

Технологии PCI Express 3.0

В версии PCI Express 3.0 максимальная полоса пропускания канала была увеличена до 8 ГТ/с с незначительными изменениями протокола обмена, форм-фактора и методов обеспечения целостности данных.

Реальная скорость передачи данных по PCI Express 3.0 вдвое выше, чем у PCI Express 2.0. Материнские платы с поддержкой PCI Express 3.0 смогут работать с видеокартами, потребляющими до 300 Вт . Дополнительная мощность будет потребляться через разъёмы питания, подключаемые к видеокарте. У величение скорости передачи данных осуществляется и за счет развития новых технологий.

Именно для обеспечения высокой пропускной способности при ограниченной частоте было принято решение перейти на использование более агрессивной схемы кодирования 128b130b, которая предусматривает передачу всего 1,6% избыточной информации, по сравнению с 20% в текущей схеме кодирования 8b10b. Выбор такого принципа устранения избыточности вместо перехода на 10 ГТ/с был обусловлен тем, что 8 ГТ/с является наиболее оптимальным компромиссом между затратами, возможностями производства, энергопотреблением и совместимостью. Отказаться от повышения частоты до 10 ГГц пришлось, прежде всего, из соображений сохранения уровня энергопотребления в разумных границах, поскольку рост частоты сопровождается экспоненциальным увеличением потребляемой мощности. Вместе с тем, планируется сохранение механической совместимости PCIe 3.0 с разъемами, используемыми в более ранних версиях стандарта.

Рост частоты до 8 ГГц повлечет за собой значительное усложнение структуры чипов, для реализации которых, скорее всего, понадобится применять, по меньшей мере, 65-нм техпроцесс. Среди остальных новшеств нового стандарта отметим усовершенствования каналов, улучшенную систему передачи сигналов, уравнивание приема и передачи, улучшения системы фазовой автоподстройки частоты.

В составе готовых систем новые интерфейсы начали появляться еще в 2011 г., с основным прицелом на «жадные» к пропускной способности графические чипы в настольных системах высокого уровня и серверы, использующие мультипортовые карты 10 Гбит Ethernet и 8 Гбит Fibre Channel. Что касается устройств, для которых потребуется быстродействие PCI Express 3.0, то это коммутаторы PLX, контроллеры Ethernet 40 Гбит/с, InfiniBand, твёрдотельные устройства, которые становятся всё популярнее, и, конечно, видеокарты. Все возможные инновации разработчики PCI Express еще не исчерпали, и они появляются не статически, а непрерывным потоком, который открывает путь для дальнейших улучшений в будущих версиях интерфейса PCI Express. Первые материнские платы и графические адаптеры с поддержкой PCI Express 3.0 вышли уже в 2011 году.

Поддержка виртуальных каналов. Механизм виртуальных каналов, иначе VC (Virtual Channel ) , является "фун-даментом" для поддержки различных сервисов внутри структуры PCI Express . Он разрешает развертывание физически независимых ресурсов, ко-торые в совокупности с маркировкой трафика необходимы для оптимизиро-ванной обработки разнородного трафика. Маркировка трафика поддерживает-ся через использование маркеров (меток) класса транзакций или, иначе, ТС (Transaction Class ) TLP-уровня. Точная политика для разнородного трафика регулируется путем отображения TC / VC и путем арбитража на уровне VC . Отображение TC/VC зависит от требований применения платформы. Эти тре-бования управляют выбором алгоритма арбитража VC и конфигурируемостью/программируемостью арбитров, что обеспечивает точную настройку политики обслуживания трафика. Механизмы виртуальных каналов (VC) с прицелом на бу-дущее адресуют следующие уровни детализации:

Поддерживаемые конфигурации TC/VC;

Правила и алгоритмы арбитража, основанного на VC;

Рассмотрение упорядочивания трафика;

Изохронную поддержку, как определенную пользовательскую модель.

Поддерживаемые конфигурации TC / VC . Виртуальный канал (VC) устанавливается, когда один или несколько клас-сов транзакций (ТС) связываются с физическим ресурсом VC, назначенным идентификатором ID VC. Каждый поддерживаемый класс трафика "Traffic Class" должен быть отображен в один из виртуальных каналов. Основная (базо-вая) конфигурация PCI Express должна поддерживать пару по умолчанию TC0/VC0, которая является постоянной, т. е. не конфигурируемой. Любая под-держка выше данного уровня является необязательной. Процесс конфигуриро-вания TC/VC управляется системным ПО, использующим программную модель. Для упрощения взаимодействия при конфигурировании множества виртуальных каналов через канал PCI Express, в стандарте определены ограничения для мно-жества разрешенных (правильных) конфигураций VC. В общем, отображение трафика в виртуальный канал, отличный от TC0/VC0, является задачей сис-темного ПО. Основными конфигурациями TC/VC являются следующие:

Симметричное отображение трафика в виртуальный канал;

Реотображение трафика в виртуальный канал.

Многопортовые компоненты (коммутаторы и корневые комплексы) должны поддерживать независимое отображение TC/VC для каждого порта PCI Express.

Механизм " Device Synchronization Stop ". Изменение нумерации шин системным ПО во время функционирования сис-темы может привести к изменению ID запросчика данного устройства (осно-ванного на номерах шин); это может привести к тому, что любые запросы или выполнения для этого устройства еще в процессе их передачи могут быть изменены неверно в соответствии с изменением в ID запросчика. Также жела-тельно гарантировать, чтобы во время извлечения устройства Hot-Plug не про-исходило никаких выходящих транзакций. Механизм "Device Synchronization Stop" позволяет системному ПО гарантировать, что в процессе передачи по от-ношению к конкретному оконечному устройству не будет находиться никаких транзакций до выполнения операции ренумерации шин, которая может при-вести к изменению номера данного устройства (и ID запросчика). Синхронная остановка для оконечных устройств реализована через механизм "Stop" и связана с битом Stop регистра Device Command и битом Transac-tions Pending регистра Device Status. Системное ПО сообщает устройству требование остановиться путем установ-ки бита Stop в регистре Device Command устройства. ПО считает операцию остановки выполненной, если устройство сообщает, что больше нет незавер-шенных транзакций путем сбрасывания бита статуса Transactions Pending в регистре Device Status; при этом устройству не запрещено издавать любой новый запрос после того, как установлен бит Stop. Прежде чем сбросить бит Transaction Pending, оконечное устройство долж-но гарантировать, что:

Выполнения небуферизуемых запросов для всех используемых классов трафика были приняты соответствующими запросчиками;

Все запросы, инициированные данным устройством, имеют возвращенные выполнения;

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

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

Блокированные транзакции. Поддержка задержанных транзакций необходима для предотвращения бло-кировки в системе при использовании унаследованного ПО, которое иниции-рует доступы к устройствам ввода-вывода. Некоторые процессоры могут ге-нерировать блокированные доступы как результат выполнения инструкций, которые неявно блокируют счетчик. Некоторое старое ПО неправильно приме-няет эти транзакции и генерирует блокированные последовательности, даже ко-гда монопольный доступ не требуется. Поскольку блокированные доступы к устройствам ввода-вывода приводят к потенциальным блокировкам помимо упомянутых выше, что может привести к серьезному снижению производи-тельности, то для оконечных устройств PCI Express запрещена поддержка мо-нопольных доступов. Новое ПО также не должно использовать инструкции, которые будут инициировать монопольные доступы к устройствам ввода-вывода. Поддержка оконечными устройствами монопольных доступов введена только из-за вопросов совместимости с существующим ПО. Инициирование блокированных запросов PCI Express разрешено только корне-вому комплексу. Блокированные запросы, инициированные оконечными устройствами и мостами, не поддерживаются. Данная непротиворечивость с ограничениями для блокированных транзакций использует принципы специфи-кации "PCILocal Bus Specification" версии 2.3. Данный раздел определяет правила, связанные с поддержкой монопольных доступов от главного процессора к устройствам Legacy Endpoint, включая рас-пространение таких транзакций через коммутаторы и мосты PCI Express/PCI.

Правила инициирования и распространения блокированных транзакций. Блокированные последовательности генерируются главным процессором(ми) как одна или больше операций чтения, следующих за равным количеством записей в ту же область(ти). Когда установлен монопольный доступ, весь ос-тальной трафик блокируется от использования пути между корневым комплек-сом и заблокированным устройством Legacy Endpoint или мостом.

Блокировка инициируется на PCI Express, используя тип "lock" - Read Request/Completion (MRdLk/CplDLk) и завершается с сообщением "Unlock" (семантика MRdLk, CplDLk и Unlock разрешена только для класса

трафика, определенного по умолчанию (ТСО)).

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

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

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

Оконечные устройства Legacy Endpoint . Устройствам Legacy Endpoint запрещено поддерживать монопольные доступы, хотя и допускается их использование. Если монопольный доступ поддержан, устройство должно обрабатывать его в соответствии со следующими прави-лами:

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

При нахождении в заблокированном состоянии устройство не должно ге-нерировать никакого запроса, использующего классы трафика, которые отображаются в виртуальный канал по умолчанию (VC0) (данное требование применяется ко всем возможным источникам запросов внутри оконечного устройства, в случае, когда внутри него присутствуют больше чем один возможный источник; запросы могут быть сгенерированы путем использования класса трафика, отображаемого в виртуальный канал, отличный от виртуального канала «по умолчанию»).

Оконечные устройства PCI Express . Оконечные устройства PCI Express не поддерживают монопольный доступ. Данные устройства должны интерпретировать запросы MRdLk как непод-держиваемые запросы.

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

Сброс Power Good Reset, происходящий после подачи питания к ком-поненту, называется холодным сбросом или, иначе, Cold Reset . В некоторых случаях возможен запуск механизма "Power Good Reset" аппаратным обеспечением без снятия и подачи питания компонента. Такой сброс называется теплым сбросом или, иначе, Warm Reset .

Также существует внеполосный механизм для распространения сброса за пределами канала, он называется горячим сбросом или, иначе, Hot Reset . Переход в состояние "DL_Inactive" в некоторых случаях идентичен сбросу Hot Reset.

При выходе из любого типа сброса (Cold, Warm или Hot), все регистры порта и конечные автоматы должны быть установлены в их начальные состояния, определенные стандартом PCI Express .

При выходе из состояния Power Good Reset физический уровень будет пы-таться запустить ("поднять") канал. Как только оба компонента вошли в со-стояние начальной проверки канала, то далее их состояние будет изменять-ся через инициализацию канала для физического уровня и затем через инициализацию для виртуального канала VC0, подготавливая таким обра-зом уровень транзакций и канальный уровень к использованию канала. После инициализации VC0 пакеты TLP и DLLP могут быть переданы через канал.

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

Правила требований адресации для компонентов и устройств разделяются на два подмножества:

Требования к компонентам;

Требования к системе.

Требования правил адресации к компонентам. Компонент должен входить в начальное активное состояние проверки канала в пределах 80 мс после завершения сброса Power Good Reset. В некоторых системах возможно, что два компонента на канале могут выйти из состояния Power Good Reset в разное время. Каждый компонент должен соблюдать требования для входа в начальное активное состояние провер-ки канала в пределах 80 мс после окончания Power Good Reset с их точки зрения, т. е. после того, как они определили, что произошел выход из сброса. При выполнении проверки канала (вхождении в состояние "DL_Active") компонент должен быть способен принять и обработать пакеты TLP и DLLP.

Требования правил адресации к системе. В целях корректного выполнения компонентом внутренней инициализа-ции системное ПО должно ожидать минимум 100 мс после окончания сброса (Cold/Warm/Hot), перед тем как разрешать генерирование конфигу-рационных запросов к устройствам PCI Express. Система должна гарантировать, что все компоненты, предназначенные для взаимодействия с ПО во время загрузки, готовы принять конфигурацион-ные запросы в пределах 100 мс после окончания состояния Power Good Reset (реализация не определена стандартом и возлагается на разработчика).

Корневой комплекс и/или системное ПО после сброса (Hot/Warm/Cold) должны ожидать от устройства возвращения статуса "Successful Completion" для правильного конфигурационного запроса 1.0 с. По истечении этого времени устройство считается неисправным. Если корневой комплекс повторяет конфигурационные запросы, за-вершенные со статусом "Configuration Request Retry", тогда они долж-ны быть повторены до 1 с после истечения времени Tоrc (время задержки корневого комплекса), в этой точке корневой комплекс может завершить запрос как неподдерживаемый. Данная задержка аналогична параметру T rhfa , определенному для PCI/PCI-X, и предназначена для выделения адекватного количества времени устройству, которому необходимо провести собственную ини-циализацию. При попытке конфигурационного доступа к устройствам в PCl или PCI-X сегменте позади PCI xpress/PCI(PCI -X) моста временной параметр T rhfa дол-жен соответствовать данным стандартам.

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

Установка бита Secondary Bus Reset в регистре Bridge Control ;

Переход в состояние " DL _ Inactive " на основной стороне моста;

Сброс канала с использованием механизма физического уровня для со-общения " Link Reset " .

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

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

Tpvpgl - минимальное время, в течение которого сигнал PowerGood дол-жен оставаться неактивным после подачи питания;

T pwrgd - минимальное время, в течение которого сигнал Power_Good дол-жен находиться в неактивном состоянии после снятия;

Тfail - после подачи питания сигнал Power_Good должен быть снят внутри этого временного интервала.

Кроме того, могут быть определены и дополнительные параметры.

Во всех случаях, когда поддержан генератор синхроимпульсов, должен быть определен параметр Tpwrgd-clk - минимальное время, в течение которого сигнал Power_Good должен оставаться неактивным, после того как любой поддерживаемый генератор перейдет в стабильное состояние. Также при необходимости могут быть определены дополнительные параметры.

Поддержка механизма Hot - Plug . Возможность "горячего" подключения устройств является ключевым условием обеспечения высокого уровня готовности систем. Современные технологии "горячего" подключения достаточно дороги и создают множество проблем, вытекающих из сложного и уязвимого комплекса взаимоотношений, которые существуют между аппаратными средствами и программным обеспечением. Это ведет к повышению денежных и временных затрат компаний. Технология PCI Express позволяет повысить производительность системы и увеличить время ее непрерывной работы, а также способствует значительному повышению уровня удобства ее обслуживания и снижению расходов - за счет стандартизации модели использования и исключения зависимости от поставщиков программных кодов и аппаратных компонентов, обеспечивающих надежную работу устройств, подключаемых горячим методом.

Технология PCI Express подходит к решению проблем, характерных для обычной технологии "горячего" подключения устройств, следующим путем:

Технология PCI Express изначально разрабатывалась с учетом возможности горячего подключения устройств, поэтому регистры управления "горячим" подключением являются частью стандарта PCI Express (в отличие от стандарта SHPC1.0);

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

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

В основе технологии лежит стандартная базовая архитектура контроллеров "горячего" подключения (Standard Hot-Plug Controller, SHPC).

Усовершенствование конструктивных характеристик повышает надежность платформы при относительно низких затратах на производство OEM-продукции.

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

С корпусом

С разъемом шины

С оконечным устройством (адаптером)

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

Базовая архитектура технологии PCI Express основана на стандартной архитектуре контроллеров "горячего" подключения (Standard Hot-Plug Controller, SHPC), как определено в спецификации PCI Standard Hot-Plug Controller and Subsystem Specification, Revision 1.0. Эта спецификация опубликована группой PCI Special Interest Group (PCI SIG) и доступна на Web-сайте группы PCI-SIG. Технология PCI Express использует всю совокупность компонентов стандартной архитектуры SHPC, которые сведены в таблицу, представленную ниже. В столбцах "Области компонентов" представлены составляющие платформы, реализующие модель SHPC.

Хотя спецификация "горячего" подключения PCI определяет аппаратные требования, она не описывает полную модель управления операциями подключения/отключения устройства - спецификация SHPC 1.0 определяет необходимую модель программного обеспечения. Технология PCI Express, представленная в 2002 году, полностью поддерживает предшествующую технологию "горячего" подключения PCI, а также модель SHPC, а использование простого интерфейса к регистрам устраняет зависимость реализации технологии от BIOS и переносит ее на операционную систему. По существу, технология PCI Express избавляет от необходимости опираться на ACPI BIOS и определяемый платформой драйвер контроллера "горячего" подключения, обеспечивая стандартное соединение с этим контроллером, которое может использоваться на любой платформе любого поставщика.

Технология PCI Express использует достоинства имеющейся архитектуры ввода/вывода и в то же время отвечает насущным и будущим потребностям благодаря возможности включения и отключения поддержки элементов расширения собственными средствами операционной системы. Этот метод управления, названный «горячим подключением под управлением операционной системы» (Operating System Hot-Plug, OSHP), должен обеспечиваться резидентной программой платформенной BIOS с поддержкой механизма ACPI. Если поддержка расширения Native отключена, то управление горячим подключением передается интерфейсу ACPI BIOS. Если поддержка расширения собственными средствами операционной системы включена, то ACPI BIOS не задействуется, позволяя операционной системе самостоятельно управлять "горячим" подключением устройств.

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

Технология PCI Express поддерживает возможность "горячего" подключения устройств как для модульных, так и для интегрированных решений. Значительным усовершенствованием, которое внесла технология PCI Express в существующие принципы, является разъем типа "mate-last/break-first" (сначала питание, затем подключение), который защищает аппаратные средства от сбоев. Одно из ключевых преимуществ технологии "горячего" подключения PCI Express по сравнению с предыдущими моделями заключается в уникальности модулей PCI Express - их подключение осуществляется через заднюю или переднюю панель и не требует вскрытия корпуса.

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

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

Разработчики аппаратных средств должны включать в свои новые проекты поддержку технологии

Разработчики программного обеспечения должны включать поддержку OSHP в новые версии BIOS и внедрить модель использования на базе архитектуры SHPC;

OEM-производители должны распространять интегрированную серверную продукцию на базе компонентов, поддерживающих технологию PCI Express;

IT-специалисты и менеджеры информационных центров должны перейти к использованию платформ на базе технологии PCI Express, чтобы получить максимум преимуществ от использования технологии "горячего" подключения.

Архитектура PCI Express разработана с собственной поддержкой горячего подключения и горячей замены устройств (стандартная пользовательская модель) для всех форм факторов PCI Express, поддерживающих "горячую" замену и "горячее" подключение устройств. Эта модель предоставляет основу для поведения индикаторов и кнопок, если они реализованы в системе. Определение индикаторов и кнопок применяется ко всем моделям PCI Express Hot-Plug .

Пользовательская модель PCI Express Hot - Plug . Стандартная пользовательская модель, как следует из названия, в первую очередь нацелена на пользователей, которые эксплуатируют системы со сло-тами Hot-Plug. Такое назначение объясняется тем, что обычно в пользова-тельских системах присутствует аппаратное и программное обеспечение от различных производителей. Модель позволяет пользователям использовать слоты Hot-Plug их систем без дополнительного переобучения. Стандартная пользовательская модель PCI Express Hot-Plug выведена из стандартной поль-зовательской модели, определенной в спецификации "PCI Standard Hot-Plug Controller and Subsystem Specification" версии 1.0. Данные модели идентичны с точки зрения пользователя. Были произведены лишь незначительные изменения в определениях регистров и соответствия со стандартной пользовательской моделью, требуемые всеми форм-факторами PCI Express, которые реализуют Hot-Plug и используют индикаторы и кнопки.

Девиация форм-факторов PCI . Отклонение от стандартной пользовательской модели приводит к несовмес-тимым с PCI-Express решениям и будет проявляться в нежелательных резуль-татах, таких как:

Сложность эксплуатации для пользователя;

Более дорогое тестирование аппаратного обеспечения;

Функциональная несовместимость с системным ПО;

Ошибки системного ПО из-за непроверенного поведения системы.

Индикаторы. Стандартная пользовательская модель определяет два индикатора: индикатор питания и индикатор внимания . Платформа может обеспечить два индикато-ра в каждый слот или панель модуля, индикаторы могут быть реализованы на корпусе или модуле, детали реализации зависят от требований форм-фактора "горячего" подключения. Каждый индикатор находится в одном из трех со-стояний :

Включено,

Выключено,

Мерцание.

Системное ПО Hot-Plug обладает исключительным контролем над состоянием индикаторов за счет возможности записи в командный регистр, связанный с индикатором. Порт совместимый с Hot-Plug управляет частотой мерцания индикаторов, рабочим циклом и фазой.

Мерцающие индикаторы функционируют на часто-те от 1 до 2 Гц с коэффициентом заполнения 50% (± 5%). Мерцающие инди-каторы не должны быть синхронизированы и синфазны между портами.

Индикаторы должны находиться в непосредственной близости от связанного с ними слота Hot-Plug, если индикаторы реализованы на корпусе, чтобы со-единение между индикаторами и слотом Hot-Plug было как можно более сво-бодным.

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

Индикатор внимания. Индикатор внимания " Attention " желтого или янтарного цвета используется для указания на проблемы функционирования или указывает, что слот Hot-Plug находится в процессе идентификации , что позволяет локализовать его состояние.

Индикатор внимания выключен. Когда индикатор внимания "Attention" выключен, это означает, что плата расширения (если таковая представлена) и слот Hot-Plug функционируют нормально и не требуют внимания.

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

Индикатор внимания не используется для сообщения о проблемах, обнару-женных при проверке достоверности запроса для операции Hot-Plug. Термин "проверка достоверности" применяется к любой проверке, которую выполня-ет системное ПО для гарантии, что запрошенная операция не вызовет про-блем. Примерами сбоя проверки достоверности может быть отказ в выполне-нии операции Hot-Plug, неудовлетворительное распределение питания, и другие состояния, которые могут быть обнаружены перед началом операции.

Мерцание индикатора внимания. Мерцание индикатора внимания "Attention" означает, что системное ПО идентифицирует данный слот при запросе оператора. Данное поведение управляется пользователем (например, через программный интерфейс поль-зователя или средства управления).

Индикатор питания. Индикатор питания имеет приятный зеленый цвет и используется для указа-ния состояния питания слота (табл. 9).

Индикатор питания отключен. Когда индикатор питания выключен, это означает, что разрешена установка или извлечение платы расширения. Основное питание слота снято, если это необ-ходимо для форм-фактора, примером снятия основного питания является форм-фактор платы PCI Express. Если платформа обеспечивает напряжение Vaux в слоты Hot-Plug и защелка MRL закрыта, то любые сигналы, коммутируе-мые защелкой MRL, сообщаются в слот независимо от состояния индикатора. При открытии защелки MRL коммутируемые ей сигналы снимаются. Систем-ное ПО должно отключать индикатор питания, когда слот не запитан и/или разрешено вставлять или извлекать платы расширения. Данное правило дик-туется соответствующей электромеханической спецификацией на форм-фак-тор.

Индикатор питания включен. Когда индикатор питания включен, это означает, что основное питание пода-но в слот и что установка или извлечение платы расширения запрещено.

Мерцание индикатора питания. Мерцание индикатора питания означает, что в слот подается питание или снимается из него и что установка или извлечение плат расширения запреще-но. Мерцание индикатора питания также обеспечивает оператора зрительной обратной связью при нажатии кнопки "Attention Button".

Ручная защелка MRL . Защелка MRL (Manually-operated Retention Latch) - это управляемый вруч-ную механизм удержания, который удерживает плату расширения в слоте и предотвращает извлечение платы пользователем. Эта защелка жестко держит плату в слоте, так что кабели могут быть присоединены без риска создания прерывистого контакта. В платформах, которые не реализуют сенсоры MRL, разрешены защелки MRL, которые держат две или больше плат расширения одновременно.

Сенсор MRL . Сенсором MRL может быть коммутируемое, оптическое или другое сенсорное устройство , которое сообщает порту позицию защелки MRL . Сенсор MRL со-общает "закрыто", когда защелка MRL полностью закрыта, и "открыто" во всех других случаях (т. е. полностью открыта и все промежуточные поло-жения). Если питание Vaux подведено к слотам Hot-Plug, то коммутируемые защел-кой MRL сигналы должны быть автоматически сняты со слота, если сенсор MRL указывает, что защелка MRL открыта, и сигналы должны быть поданы в слот, если сенсор MRL указывает, что защелка MRL была снова закрыта. Сенсор MRL позволяет порту отслеживать позицию защелки MRL и, следо-вательно, позволяет определить внезапное открытие защелки MRL. Когда внезапное открытие защелки MRL связано с уже идентифицированным слотом, то порт изменяет состояние этого слота на выключенное и уведомляет системное ПО. Порт не изменяет состояние индикаторов питания и внимания.

Электромеханическая блокировка. Электромеханическая блокировка - это механизм для физического блокиро-вания платы расширения или защелки MRL до тех пор, пока системное ПО и порт не освободят ее . Реализация блокировки необязательна , а в программном интерфейсе отсутствует механизм для точного управления электромеханиче-ской блокировкой. Стандартная пользовательская модель предполагает, что если электромеханические блокировки реализованы, то они управляют одним выходным сигналом порта, который подает основное питание в слот. Систе-мы могут дополнительно расширять управление блокировками для обеспече-ния физической защиты плат расширения.

Кнопка внимания. Кнопка внимания (Attention Button ) является кнопкой мгновенного срабаты-вания, размещенной рядом с каждым слотом Hot-Plug или на модуле, и управляется пользователем для начала операции "горячего" извлечения или замены в данном слоте . Индикатор питания обеспечивает визуальную обратную связь с оператором (если системное ПО принимает запрос, инициированный кнопкой внимания) путем мерцания . Как только индикатор питания замерцал, то пользователю дается пятисекундный интервал времени на отмену , во время которого по-вторное нажатие кнопки отменяет операцию .

Если операция, инициированная кнопкой, срывается по любым причинам, то рекомендуется, чтобы системное ПО представило сообщение, объясняющее сбой, через программный пользовательский интерфейс или добавило его в сис-темный журнал.

Программный интерфейс пользователя. Системное ПО должно обеспечивать программный пользовательский интер-фейс - Software User Interface, который позволяет запустить операции горя-чего извлечения и замены и который позволяет отследить состояние захва-ченного порта. Детальное рассмотрение пользовательского интерфейса горя-чего подключения является спецификой ОС и поэтому не определено в стандарте PCI Express.

В системах с несколькими слотами Hot-Plug системное ПО должно позволять пользователю инициировать операции в каждом слоте независимо от состоя-ния остальных слотов. Таким образом, пользователю разрешено инициировать операции Hot-Plug в слоте, используя либо программный пользовательский интерфейс, либо кнопку внимания (Attention Button), пока на другом слоте происходит операция Hot-Plug, независимо от того, какой интерфейс был ис-пользован для начала первой операции.

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

Устройства, которые будут представлены на платах расширения Hot-Plug, должны реализовывать функции распределения питания. Устройства, предна-значенные для использования на платах расширения или материнских платах, имеют опцию поддержки функции распределения питания. Устройства, кото-рые разработаны и для плат расширения, и для модулей, должны также реали-зовывать распределение питания. Стандарт PCI Express требует, чтобы уст-ройства и/или платы расширения превышали допустимый предел "конфигу-рационного" питания, определенный в соответствующей электромеханической спецификации, до окончания процесса конфигурирования и их включения сис-темой. Системы должны правильно распределять питание до включения плат расширения.

Полное питание системы (информация об источнике питания);

Полное питание, выделенное системным встроенным ПО (устройствами материнской платы);

Полное количество слотов и типов слотов.

Системное встроенное ПО отвечает за выделение питания для всех устройств на материнской плате, которые не имеют функций распределения питания. Встроенное ПО может как охватывать стандартные устройства PCI Express, которые соединены со стандартными шинами питания, так и не выделять пи-тание для них. При выделении встроенным ПО питания для устройства, ПО должно установить бит SYSTEM_ALLOC регистра Power Budget Capability (регистр устройства) в состояние логической " 1", для указания успешности опе-рации. Менеджер распределения питания отвечает за выделение питания всем устройствам PCI Express, в том числе устройствам материнской платы, имеющим функции распределения питания, но которые были помечены для выделения. Менеджер распределения питания также отвечает за определение возможности подключения устройств Hot-Plug в системе.

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

Управление ограничением питания слота. PCI Express предоставляет механизм для программно-управляемого ограни-чения максимальной мощности в каждый слот, которую может потреблять плата/модуль PCI Express (связанные с этим слотом). Ключевыми элементами этого механизма являются:

Поля Slot Power Limit Value и Scale регистра Slot Capability, реализован-ного в Downstream-портах корневого комплекса и коммутатора;

Поля Slot Power Limit Value и Scale регистра Device Capability, реализованно-го в Upstream-портах оконечного устройства, коммутатора и моста PCI Express-to-PCI;

Сообщение "Set_Slot_Power_Limit". Это сообщение передает содержимое полей Slot Power Limit Value и Scale регистра Slot Capability порта Down-stream (корневого комплекса или коммутатора) в соответствующие поля Slot Power Limit Value и Scale регистра Device Capability порта Upstream компо-нента, присоединенного к тому же каналу.

Пределы потребляемой мощности на платформе обычно контролируются ПО (например, встроенным ПО платформы), которое учитывает специфику плат-формы, такую как:

Разделение платформы, включая слоты для расширения ввода-вывода, ис-пользующие платы/модули расширения;

Возможности по обеспечению питанием;

Температурные возможности.

Данное ПО отвечает за корректное программирование полей Slot Power Limit Value и Scale регистров Slot Capability портов Downstream, соединенных со слотами расширения. После того как значение было записано в регистр внут-ри Downstream-порта, оно передается к другому компоненту, соединенному с этим портом путем сообщения "Set_SlotJPower_Limit". Получатель должен использовать содержащееся в сообщении значение для ограничения использова-ния питания всей платы/модуля. Исключение составляют платы/модули, кото-рые ни при каких условиях не выходят за предел минимального значения, определенного в соответствующей электромеханической спецификации. Предполагается, что программное обеспечение драйвера устройства платы/модуля будет в состоянии (путем чтения значения полей Slot Power Limit Value и Scale регистра Device Capability) отконфигурировать аппаратное обеспечение платы/модуля таким образом, что плата/модуль не превысят продиктованный предел. В случае, когда платформа определяет предел, кото-рый ниже минимума, необходимого для нормального функционирования, драйвер устройства должен быть в состоянии сообщить данное несоответствие верхнему уровню конфигурационного ПО.

Системой должны соблюдаться следующие правила относящиеся к механизму управления "Slot Power Limit" для плат/модулей:

До тех пор, пока не будет принято сообщение "Set_Slot_Power_Limit", ука-зывающее значение предела, большее чем минимальное значение, опреде-ленное в электромеханической спецификации для форм-фактора платы или модуля, плата/модуль не должны потреблять питания больше, чем оп-ределено этим минимальным значением;

Максимально допустимая потребляемая мощность для платы/модуля оп-ределяется самым большим значением из всех принятых сообщений " Set_Slot_Power_Lim it".

Оконечным устройствам, коммутатору и мосту PCI Express-to-PC 1, которые предназначены для объединения на плате/модуле, где полное потребление мощности ниже минимального предела для данного форм-фактора, запре-щено игнорировать сообщения "Set_Slot_Powcr_Limit" и возвращать значе-ние "0" в нолях Slot Power Limit Value и Scale регистра Device Capability.

Перечисленные ранее компоненты должны корректно принять сообщение "Set_Slot_Power_Limit", но вместо обработки просто отменить его.

Правила относящиеся к механизму управления "Slot Power Limit"для корневых комплексов и коммутаторов, содержащих слоты:

Downstream-порт не должен передавать сообщение "Set_Slot_Power_Limit", предел которого будет меньше, чем минимальное значение, определенное в электромеханической спецификации для форм-фактора этих слотов.

Управляющие регистры Slot Power Limit . Обычно регистры Slot Power Limit внутри Downstream-портов корневого комплекса или коммутатора программируются специфическим программным обеспечением платформы. Некоторые реализации могут использовать аппа-ратный метод для инициализации значения этих регистров и таким образом не требуют программной поддержки.

Оконечные устройства, коммутатор и мост "РСТ Express-to-PCI", предназна-ченные для объединения на плате/модуле, где полная потребляемая мощ-ность ниже минимального предела, определенного для данного форм-фактора, могут игнорировать сообщения "Set_Slot_Power_Limit". Компонен-ты PCI Express, реализованные подобным образом, могут быть не совмести-мы с потенциальными будущими форм-факторами. Такие форм-факторы воз-можно будут сообщать более низкий предел потребляемой мощности, чем минимально необходимый для новой платы/модуля, разработанной на сущест-вующих компонентах.

Стандарт PCI Express является одной из основ современных компьютеров. Слоты PCI Express уже давно занимают прочное место на любой материнской плате декстопного компьютера, вытесняя другие стандарты, например, такие как PCI. Но даже стандарт PCI Express имеет свои разновидности и отличающийся друг от друга характер подключения. На новых материнских платах, начиная примерно с 2010 года, можно увидеть на одной материнской плате целую россыпь портов, обозначенных как PCIE или PCI-E , которые могут отличаться по количеству линий: одной x1 или нескольких x2, x4, x8, x12, x16 и x32.

Итак, давайте выясним почему такая путаница среди казалось бы простого периферийного порта PCI Express. И какое предназначение у каждого стандарта PCI Express x2, x4, x8, x12, x16 и x32?

Что такое шина PCI Express?

В далеких 2000-х, когда состоялся переход с устаревающего стандарта PCI (расш. - взаимосвязь периферийных компонентов) на PCI Express, у последнего было одно огромное преимущество: вместо последовательной шины, которой и была PCI, использовалась двухточечная шина доступа. Это означало, что каждый отдельный порт PCI и установленные в него карты, могли в полной мере использовать максимальную пропускную способность не мешая друг другу, как это происходило при подключении к PCI. В те времена количество периферийных устройств, вставляемых в карты расширения, было предостаточно. Сетевые карты, аудио карты, ТВ-тюнеры и так далее - все требовали достаточное количество ресурсов ПК. Но в отличие от стандарта PCI, использовавшего для передачи данных общую шину с подключением параллельно нескольких устройств, PCI Express, если рассматривать в общем, является пакетной сетью с топологией типа звезда.


PCI Express x16, PCI Express x1 и PCI на одной плате

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

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

Также и с выделенными полосами передачи данных для каждой карты расширения или встроенными компонентами материнской платы.

Влияние количества линий на пропускную способность

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

PCI-E прошел множество изменений со времени своего создания. В настоящее время новые материнские платы обычно используют уже 3 версию стандарта, причем более быстрая 4 версия становится все более распространенной, а версия 5 ожидается в 2019 году. Но разные версии используют одни и те же физические соединения, и эти соединения могут быть выполнены в четырех основных размерах: x1, x4, x8 и x16. (x32-порты существуют, но крайне редко встречаются на материнских платах обычных компьютерах).

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

Различные версии стандарта PCI-E позволяют использовать разные скорости на каждой полосе. Но, вообще говоря, чем больше полос находится на одном PCI-E-порту, тем быстрее данные могут перетекать между периферийной и остальной частью компьютера.

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


Различные карты PCI Express

Типы устройств, использующих PCI Express x2, x4, x8, x12, x16 и x32

Для версии PCI Express 3.0 общая максимальная скорость передачи данных составляет 8 ГТ/с, В реальности же скорость для версии PCI-E 3 чуть меньше одного гигабайта в секунду на одну полосу.

Таким образом, устройство, использующее порт PCI-E x1, например, маломощная звуковая карта или Wi-Fi-антенна смогут передавать данные с максимальной скоростью в 1 Гбит/с.

Карта, которая физически подходит в более крупный слот - x4 или x8 , например, карта расширения USB 3.0, сможет передавать данные в четыре или восемь раз быстрее соответственно.

Скорость передачи портов PCI-E x16 теоретически ограничивается максимальной полосой пропуская в размере около 15 Гбит/с. Этого более чем достаточно в 2017 года для всех современных графических видеокарт, разработанных NVIDIA и AMD.


Большинство дискретных видеокарт используют слот PCI-E x16

Протокол PCI Express 4.0 позволяет использовать уже 16 ГТ/с, а PCI Express 5.0 будет задействовать 32 ГТ/с.

Но в настоящее время не существует компонентов, которые смогли бы использовать такое количество полос с максимальной пропускной способностью. Современные топовые графические карты обычно используют x16 стандарта PCI Express 3.0. Нет смысла использовать те же полосы и для сетевой карты, которая на порту x16 будет использовать только одну линию, так как порт Ethernet способен передавать данные только до одного гигабита в секунду (что, около одной восьмой пропускной способности одной PCI-E полосы - помните: восемь бит в одном байте).

На рынке можно найти твердотельные накопители PCI-E, которые поддерживают порт x4, но они, похоже, скоро будут вытеснены быстро развивающимся новым стандартом M.2. для твердотельных накопителей, которые также могут использовать шину PCI-E. Высококачественные сетевые карты и оборудование для энтузиастов, такие как RAID-контроллеры, используют сочетание форматов x4 и x8.

Размеры портов и линий PCI-E могут различаться

Это одна из наиболее запутанных задач по PCI-E: порт может быть выполнен размером в форм-факторе x16, но иметь недостаточное количество полос для пропуска данных, например, всего например x4. Это связано с тем, что даже если PCI-E может нести на себе неограниченное количество отдельных соединений, все же существует практический предел пропускной способности полосы пропускания чипсета. Более дешевые материнские платы с более бюджетными чипсетами могут иметь только один слот x8, даже если этот слот может физически разместить карту форм-фактора x16.

Кроме того, материнские платы, ориентированные на геймеров, включают до четырех полных слотов PCI-E с x16 и столько же линий для максимальной пропускной способности.

Очевидно, это может вызывать проблемы. Если материнская плата имеет два слота размером x16, но один из них имеет только полосы x4, то подключение новой графической карты снизит производительность первой аж на 75%. Это, конечно, только теоретический результат. Архитектура материнских плат такова, что Вы не увидите резкого снижения производительности.

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

Иногда производители даже помечают на текстолите материнской платы рядом со слотом количество линий

Нужно знать, что более короткая карта x1 или x4 может физически вписаться в более длинный слот x8 или x16. Конфигурация контактов электрических контактов делает это возможным. Естественно, если карта физически больше, чем слот, то вставить ее не получится.

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

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

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

Для чего необходим PCI-Express и что это такое?

Начнем, как обычно, с самых азов. Интерфейс PCI-Express (PCI-E) – это средство взаимодействия, в данном контексте, состоящее из контролера шины и соответствующего слота (рис.2) на материнской плате (если обобщить).

Данный высокопроизводительный протокол используется, как уже было отмечено выше, для подключения видеокарты в систему. Соответственно, на материнской плате присутствует соответствующий слот PCI-Express, куда и устанавливается видеоадаптер. Ранее, видеокарты, подключались по интерфейсу AGP, но когда данного интерфейса, попросту говоря: «перестало хватать», на помощь пришёл PCI-E, о подробных характеристиках которого мы сейчас и поговорим.

Рис.2 (Слоты PCI-Express 3.0 на материнской плате)

Основные характеристики PCI–Express (1.0, 2.0 и 3.0)

Несмотря на то, что названия PCI и PCI-Express очень похожи, принципы соединения (взаимодействия) у них кардинально отличаются. В случае PCI-Express используется линия – двунаправленное последовательное соединение, типа «точка-точка», данных линий может быть несколько. В случае с видеокартами и материнскими платами (не учитываем Cross Fire и SLI), которые поддерживают PCI-Express x16 (то есть большинство), можно запросто догадаться, что таких линий 16 (рис.3), довольно часто на материнских платах с PCI-E 1.0, можно было наблюдать второй слот x8, для работы в режиме SLI или Cross Fire.

Ну, а в PCI, устройство подключается к общей 32- х разрядной параллельной шине.

Рис. 3. Пример слотов с различным количеством линий

(как уже говорилось ранее, наиболее часто используется х16)


Для интерфейса пропускная способность составляет 2,5 Гбит/c. Эти данные нужны нам, чтобы отслеживать изменения этого параметра в различных версиях PCI-E.

Далее, версия 1.0 эволюционировала в PCI-E 2.0 . В результате данного преображения, мы получили в два раза большую пропускную способность, то есть 5 Гбит/c, но хотелось бы отметить, что в производительности графические адаптеры, особо не выиграли, так как это просто версия интерфейса. Большая часть производительности зависит от самой видеокарты, версия интерфейса может только незначительно улучшать или тормозить передачу данных (в данном случае «торможения» нет, и присутствует неплохой запас).

Точно так же в 2010 году, с запасом, был разработан интерфейс PCI-E 3.0 , на данный момент он используется во всех новых системах, но если у Вас все ещё 1.0 или 2.0, то не горюйте – ниже мы поговорим о относительно обратной совместимости различных версий.

В версии PCI-E 3.0, пропускная способность была увеличена в два раза по сравнению с версией 2.0. Также там было произведено немало технических изменений.

К 2015 году ожидается появление на свет PCI-E 4.0 , что для динамической IT-индустрии абсолютно неудивительно.

Ну да ладно, будем заканчивать с этими версиями и цифрами пропускной способности, и затронем очень важный вопрос обратной совместимости различных версий PCI-Express.

Обратная совместимость версий PCI-Express 1.0, 2.0 и 3.0

Данный вопрос волнует многих, особенно при выборе видеокарты для текущей системы. Так как довольствуясь системой с материнской платой, которая поддерживает PCI-Express 1.0, возникают сомнения, будет ли корректно работать видеокарта с PCI-Express 2.0 или 3.0? Да, будет, по крайней мере так обещают разработчики, которые обеспечили эту самую совместимость. Единственное то, что видеокарта, не сможет полностью раскрыться во всей красе, но потери производительности, в большинстве случаев, будут незначительны.


С точностью наоборот, можно преспокойно устанавливать видеокарты с интерфейсом PCI-E 1.0, в материнские платы, которые поддерживают PCI-E 3.0 или 2.0, тут вообще ничего не ограничивается, так что будьте спокойны по поводу совместимости. Если, конечно же, с другими факторами все в порядке, к таковым можно отнести недостаточно мощный блок питания и т.д.

В общем, мы довольно подробно поговорили относительно PCI-Express, что позволит вам избавиться от множества неясностей и сомнений по поводу совместимости и понимания различий в версиях PCI-E.

Если спросить, какой интерфейс следует использовать для твердотельного накопителя с поддержкой протокола NVMe, то любой человек (вообще знающий, что такое NVMe) ответит: конечно PCIe 3.0 x4! Правда, с обоснованием у него, скорее всего, возникнут сложности. В лучшем случае получим ответ, что такие накопители поддерживают PCIe 3.0 x4, а пропускная способность интерфейса имеет значение. Иметь-то имеет, однако все разговоры об этом начались только тогда, когда некоторым накопителям на некоторых операциях стало тесно в рамках «обычного» SATA. Но ведь между его 600 МБ/с и (столь же теоретическими) 4 ГБ/с интерфейса PCIe 3.0 x4 - просто пропасть, причем заполненная массой вариантов! А вдруг и одной линии PCIe 3.0 хватит, поскольку это уже в полтора раза больше SATA600? Масла в огонь подливают производители контроллеров, грозящиеся в бюджетной продукции перейти на PCIe 3.0 x2, а также тот факт, что у многих пользователей и такого-то нет. Точнее, теоретически есть, но высвободить их можно, лишь переконфигурировав систему или даже что-то в ней поменяв, чего делать не хочется. А вот купить топовый твердотельный накопитель - хочется, но есть опасения, что пользы от этого не будет совсем никакой (даже морального удовлетворения от результатов тестовых утилит).

Но так это или нет? Иными словами, нужно ли действительно ориентироваться исключительно на поддерживаемый режим работы - или все-таки на практике можно поступиться принципами ? Именно это мы сегодня и решили проверить. Пусть проверка будет быстрой и не претендующей на исчерпывающую полноту, однако полученной информации должно оказаться достаточно (как нам кажется) хотя бы для того, чтобы задуматься... А пока вкратце ознакомимся с теорией.

PCI Express: существующие стандарты и их пропускная способность

Начнем с того, что́ представляет собой PCIe и с какой скоростью этот интерфейс работает. Часто его называют «шиной», что несколько неверно идеологически: как таковой шины, с которой соединены все устройства, нет. На деле имеется набор соединений «точка-точка» (похожий на многие другие последовательные интерфейсы) с контроллером в середине и присоединенными к нему устройствами (каждое из которых само по себе может быть и концентратором следующего уровня).

Первая версия PCI Express появилась почти 15 лет назад. Ориентация на использование внутри компьютера (нередко - и в пределах одной платы) позволила сделать стандарт скоростным: 2,5 гигатранзакции в секунду. Поскольку интерфейс последовательный и дуплексный, одна линия PCIe (x1; фактически атомарная единица) обеспечивает передачу данных на скоростях до 5 Гбит/с. Однако в каждом направлении - лишь половина от этого, т. е. 2,5 Гбит/с, причем это полная скорость интерфейса, а не «полезная»: для повышения надежности каждый байт кодируется 10 битами, так что теоретическая пропускная способность одной линии PCIe 1.x составляет примерно 250 МБ/с в каждую сторону. На практике нужно еще передавать служебную информацию, и в итоге правильнее говорить о ≈200 МБ/с передачи пользовательских данных. Что, впрочем, на тот момент времени не только покрывало потребности большинства устройств, но и обеспечивало солидный запас: достаточно вспомнить, что предшественница PCIe в сегменте массовых системных интерфейсов, а именно шина PCI, обеспечивала пропускную способность в 133 МБ/с. И даже если рассматривать не только массовую реализацию, но и все варианты PCI, то максимумом были 533 МБ/с, причем на всю шину, т. е. такая ПС делилась на все подключенные к ней устройства. Здесь же 250 МБ/с (поскольку и для PCI приводится обычно полная, а не полезная пропускная способность) на одну линию - в монопольном использовании. А для устройств, которым нужно больше, изначально была предусмотрена возможность агрегирования нескольких линий в единый интерфейс, по степеням двойки - от 2 до 32, т. е. предусмотренный стандартом вариант х32 в каждую сторону мог передавать уже до 8 ГБ/с. В персональных компьютерах х32 не использовался из-за сложности создания и разведения соответствующих контроллеров и устройств, так что максимумом стал вариант с 16 линиями. Использовался он (да и сейчас используется) в основном видеокартами, поскольку большинству устройств столько не требуется. Вообще, немалому их количеству и одной линии вполне достаточно, но некоторые применяют с успехом и х4, и х8: как раз по накопительной теме - RAID-контроллеры или SSD.

Время на месте не стояло, и около 10 лет назад появилась вторая версия PCIe. Улучшения касались не только скоростей, но и в этом отношении был сделан шаг вперед - интерфейс начал обеспечивать 5 гигатранзакций в секунду с сохранением той же схемы кодирования, т. е. пропускная способность удвоилась. И еще раз она удвоилась в 2010 году: PCIe 3.0 обеспечивает 8 (а не 10) гигатранзакций в секунду, но избыточность уменьшилась - теперь для кодирования 128 бит используется 130, а не 160, как ранее. В принципе, и версия PCIe 4.0 с очередным удвоением скоростей уже готова появиться на бумаге, но в ближайшее время в железе мы ее массово вряд ли увидим. На самом деле и PCIe 3.0 до сих пор в массе платформ используется совместно с PCIe 2.0, потому что и производительность последней для многих сфер применения просто... не нужна. А где нужна - работает старый добрый метод агрегации линий. Только каждая из них стала за прошедшие годы вчетверо быстрее, т. е. PCIe 3.0 х4 - это PCIe 1.0 x16, самый быстрый слот в компьютерах середины нулевых. Именно этот вариант поддерживают топовые контроллеры SSD, и именно его рекомендуется использовать. Понятно, что если такая возможность есть - много не мало. А если ее нет? Будут ли возникать какие-то проблемы, и если да, то какие? Вот с этим-то вопросом нам и предстоит разобраться.

Методика тестирования

Провести тесты с разными версиями стандарта PCIe несложно: практически все контроллеры позволяют использовать не только поддерживаемый ими, но и все более ранние. Вот с количеством линий - сложнее: нам хотелось непосредственно протестировать и варианты с одной-двумя линиями PCIe. Используемая нами обычно плата Asus H97-Pro Gamer на чипсете Intel H97 полного набора не поддерживает, но кроме «процессорного» слота х16 (который обычно и используется) на ней есть еще один, работающий в режимах PCIe 2.0 х2 или х4. Вот этой тройкой мы и воспользовались, добавив к ней еще и режим PCIe 2.0 «процессорного» слота, дабы оценить, есть ли разница. Все-таки в этом случае между процессором и SSD посторонних «посредников» нет, а вот при работе с «чипсетным» слотом - есть: собственно чипсет, фактически соединяющийся с процессором тем же PCIe 2.0 x4. Можно было добавить еще несколько режимов работы, но основную часть исследования мы все равно собирались провести на другой системе.

Дело в том, что мы решили воспользоваться случаем и заодно проверить одну «городскую легенду», а именно поверие о полезности использования топовых процессоров для тестирования накопителей. Вот и взяли восьмиядерный Core i7-5960X - родственника обычно применяемого в тестах Core i3-4170 (это Haswell и Haswell-E), но у которого ядер в четыре раза больше. Кроме того, обнаруженная в закромах плата Asus Sabertooth X99 нам сегодня полезна наличием слота PCIe x4, на деле способного работать как х1 или х2. В этой системе мы протестировали три варианта х4 (PCIe 1.0/2.0/3.0) от процессора и чипсетные PCIe 1.0 х1, PCIe 1.0 х2, PCIe 2.0 х1 и PCIe 2.0 х2 (во всех случаях чипсетные конфигурации отмечены на диаграммах значком (c) ). Есть ли смысл сейчас обращаться к первой версии PCIe, с учетом того, что вряд ли найдется хоть одна плата с поддержкой только этой версии стандарта, способная загрузиться с NVMe-устройства? С практической точки зрения - нет, а вот для проверки априори предполагаемого соотношения PCIe 1.1 х4 = PCIe 2.0 х2 и подобных оно нам пригодится. Если проверка покажет, что масштабируемость шины соответствует теории, значит, и неважно, что нам не удалось пока получить практически значимые способы подключения PCIe 3.0 x1/х2: первый будет идентичен как раз PCIe 1.1 х4 или PCIe 2.0 х2, а второй - PCIe 2.0 х4. А они у нас есть.

В плане ПО мы ограничились только Anvil’s Storage Utilities 1.1.0: разнообразные низкоуровневые характеристики накопителей она измеряет неплохо, а ничего другого нам и не нужно. Даже наоборот: любое влияние других компонентов системы является крайне нежелательным, так что низкоуровневая синтетика для наших целей безальтернативна.

В качестве «рабочего тела» мы использовали Patriot Hellfire емкостью 240 ГБ . Как было установлено при его тестировании, это не рекордсмен по производительности, но его скоростные характеристики вполне соответствуют результатам лучших SSD того же класса и той же емкости. Да и более медленные устройства на рынке уже есть, причем их будет становиться все больше. В принципе, можно будет повторить тесты и с чем-нибудь более быстрым, однако, как нам кажется, необходимости в этом нет - результаты предсказуемы. Но не станем забегать вперед, а посмотрим, что же у нас получилось.

Результаты тестов

Тестируя Hellfire, мы обратили внимание на то, что максимальную скорость на последовательных операциях из него можно «выжать» лишь многопоточной нагрузкой, так что это тоже надо принимать во внимание на будущее: теоретическая пропускная способность на то и теоретическая, что «реальные» данные, полученные в разных программах по разным сценариям, будут больше зависеть не от нее, а от этих самых программ и сценариев - в том случае, конечно, когда не помешают обстоятельства непреодолимой силы:) Как раз такие обстоятельства мы сейчас и наблюдаем: выше уже было сказано, что PCIe 1.x x1 - это ≈200 МБ/с, и именно это мы и видим. Две линии PCIe 1.x или одна PCIe 2.0 - вдвое быстрее, и именно это мы и видим. Четыре линии PCIe 1.x, две PCIe 2.0 или одна PCIe 3.0 - еще вдвое быстрее, что подтвердилось для первых двух вариантов, так что и третий вряд ли будет отличаться. То есть в принципе масштабируемость, как и предполагалось, идеальная: операции линейные, флэш с ними справляется хорошо, так что интерфейс имеет значение. Флэш перестает справляться хорошо на PCIe 2.0 x4 для записи (значит, подойдет и PCIe 3.0 x2). Чтение «может» больше, но последний шаг дает уже полутора-, а не двукратный (каким он потенциально должен быть) прирост. Также отметим, что заметной разницы между чипсетным и процессорным контроллером нет, да и между платформами тоже. Впрочем, LGA2011-3 немного впереди, но на самую малость.

Все ровно и красиво. Но шаблоны не рвет : максимум в этих тестах составляет лишь немногим больше 500 МБ/с, а это вполне по силам даже SATA600 или (в приложении к сегодняшнему тестированию) PCIe 1.0 х4 / PCIe 2.0 х2 / PCIe 3.0 х1 . Именно так: не стоит пугаться выпуску бюджетных контроллеров под PCIe х2 или наличию лишь такого количества линий (причем версии стандарта 2.0) в слотах М.2 на некоторых платах, когда больше-то и не нужно. Иногда и столько не нужно: максимальные результаты достигнуты при очереди в 16 команд, что для массового ПО не типично. Чаще встречается очередь с 1-4 командами, а для этого обойтись можно и одной линией самого первого PCIe и даже самым первым SATA. Впрочем, накладные расходы и прочее имеют место быть, так что быстрый интерфейс полезен. Однако излишне быстрый - разве что не вреден.

А еще в этом тесте по-разному ведут себя платформы, причем с единичной очередью команд - принципиально по-разному. «Беда» вовсе не в том, что много ядер - плохо. Они тут все равно не используются, разве что одно, и не настолько, чтоб вовсю развернулся буст-режим. Вот и имеем разницу где-то в 20% по частоте ядер и полтора раза по кэш-памяти - она в Haswell-E работает на более низкой частоте, а не синхронно с ядрами. В общем, топовая платформа может пригодиться разве что для вышибания максимума «йопсов» посредством максимально многопоточного режима с большой глубиной очереди команд. Жаль только, что с точки зрения практической работы это совсем уж сферическая синтетика в вакууме:)

На записи положение дел принципиально не изменилось - во всех смыслах. Но, что забавно, на обеих системах самым быстрым оказался режим PCIe 2.0 х4 в «процессорном» слоте. На обеих! И при многократных проверках/перепроверках. Тут уж поневоле задумаешься, нужны ли эти ваши новые стандарты или лучше вообще никуда не торопиться...

При работе с блоками разного размера теоретическая идиллия разбивается о то, что повышение скорости интерфейса все же имеет смысл. Результирующие цифры такие, что хватило бы пары линий PCIe 2.0, но реально в таком случае производительность ниже, чем у PCIe 3.0 х4, пусть и не в разы. И вообще тут бюджетная платформа топовую «забивает» в куда большей степени. А ведь как раз такого рода операции в основном в прикладном ПО и встречаются, т. е. эта диаграмма - наиболее приближенная к реальности. В итоге нет ничего удивительного, что никакого «вау-эффекта» толстые интерфейсы и модные протоколы не дают. Точнее, переходящему с механики - дадут, но ровно такой же, какой ему обеспечит любой твердотельный накопитель с любым интерфейсом.

Итого

Для облегчения восприятия картины по больнице в целом мы воспользовались выдаваемым программой баллом (суммарным - по чтению и записи), проведя его нормирование по «чипсетному» режиму PCIe 2.0 x4: на данный момент именно он является наиболее массово доступным, поскольку встречается даже на LGA1155 или платформах AMD без необходимости «обижать» видеокарту. Кроме того, он эквивалентен PCIe 3.0 x2, который готовятся освоить бюджетные контроллеры. Да и на новой платформе AMD АМ4, опять же, именно этот режим как раз можно получить без влияния на дискретную видеокарту.

Итак, что мы видим? Применение PCIe 3.0 x4 при наличии возможности является, безусловно, предпочтительным, но не необходимым: NVMe-накопителям среднего класса (в своем изначально топовом сегменте) он приносит буквально 10% дополнительной производительности. Да и то - за счет операций в общем-то не столь уж часто встречающихся на практике. Для чего же в данном случае реализован именно этот вариант? Во-первых, была такая возможность, а запас карман не тянет. Во-вторых, есть накопители и побыстрее, чем наш тестовый Patriot Hellfire. В-третьих, есть такие области деятельности, где «атипичные» для настольной системы нагрузки - как раз вполне типичные. Причем именно там наиболее критично быстродействие системы хранения данных или, по крайней мере, возможность сделать ее часть очень быстрой. Но к обычным персональным компьютерам это все не относится.

В них, как видим, и использование PCIe 2.0 x2 (или, соответственно, PCIe 3.0 х1) не приводит к драматическому снижению производительности - лишь на 15-20%. И это несмотря на то, что потенциальные возможности контроллера в этом случае мы ограничили в четыре раза! Для многих операций и такой пропускной способности достаточно. Вот одной линии PCIe 2.0 уже недостаточно, поэтому контроллерам имеет смысл поддерживать именно PCIe 3.0 - и в условиях жесткой нехватки линий в современной системе это будет работать неплохо. Кроме того, полезна ширина х4 - даже при отсутствии поддержки современных версий PCIe в системе она все равно позволит работать с нормальной скоростью (пусть и медленнее, чем могло бы потенциально), если найдется более-менее широкий слот.

В принципе, большое количество сценариев, в которых узким местом оказывается собственно флэш-память (да, это возможно и присуще не только механике), приводит к тому, что четыре линии третьей версии PCIe на этом накопителе обгоняют одну первой примерно в 3,5 раза - теоретическая же пропускная способность этих двух случаев различается в 16 раз. Из чего, разумеется, не следует, что нужно спешно бежать осваивать совсем медленные интерфейсы - их время ушло безвозвратно. Просто многие возможности быстрых интерфейсов могут быть реализованы лишь в будущем. Или в условиях, с которыми обычный пользователь обычного компьютера никогда в жизни непосредственно не столкнется (за исключением любителей меряться известно чем). Собственно, и всё.



Понравилась статья? Поделиться с друзьями: