Новые технологии - PCI Express 3.0.
В версии PCI Express 3.0 максимальная полоса пропускания канала увеличена до 8 ГТ/с с незначительными изменениями протокола обмена, форм-фактора и методов обеспечения целостности данных. Конечно спецификация PCI Express 3.0 еще не раз подвергнется строгому техническому анализу прежде, чем будет широко использована в промышленности. В дальнейшем предполагается увеличение скорости передачи данных за счет развития новых технологий.
Реальная скорость передачи данных по 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 и битом Transactions 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 как неподдерживаемые запросы.