Интерфейс PCI Express

Автор работы: Пользователь скрыл имя, 16 Мая 2013 в 21:40, курсовая работа

Краткое описание

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

Прикрепленные файлы: 1 файл

Введение.doc

— 1.45 Мб (Скачать документ)

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

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

 

2  Описание протокола

Для подключения устройства PCI Express используется двунаправленное последовательное соединение типа точка-точка, называемое линией (англ. lane — полоса, ряд); это резко отличается от PCI, в которой все устройства подключаются к общей 32-разрядной параллельной двунаправленной шине.

Соединение (англ. link — связь, соединение) между  двумя устройствами PCI Express состоит  из одной (x1) или нескольких (x2, x4, x8, x12, x16 и x32) двунаправленных последовательных линий. Каждое устройство должно поддерживать соединение по крайней мере с одной линией (x1).

На  электрическом уровне каждое соединение использует низковольтную дифференциальную передачу сигнала (LVDS), приём и передача информации производится каждым устройством PCI Express по отдельным двум проводникам, таким образом, в простейшем случае, устройство подключается к коммутатору PCI Express всего лишь четырьмя проводниками.

Использование подобного подхода имеет следующие  преимущества:

  • карта PCI Express помещается и корректно работает в любом слоте той же или большей пропускной способности (например, карта x1 будет работать в слотах x4 и x16);
  • слот большего физического размера может использовать не все линии (например, к слоту x16 можно подвести проводники передачи информации, соответствующие x1 или x8, и всё это будет нормально функционировать; однако, при этом необходимо подключить все проводники питания и заземления, необходимые для слота x16).

В обоих случаях, на шине PCI Express будет  использоваться максимальное количество линий, доступных как для карты, так и для слота. Однако это не позволяет устройству работать в слоте, предназначенном для карт с меньшей пропускной способностью шины PCI Express. Например, карта x4 физически не поместится в стандартный слот x1, несмотря на то, что она могла бы работать в слоте x1 с использованием только одной линии. На некоторых материнских платах можно встретить нестандартные слоты x1 и x4, у которых отсутствует крайняя перегородка, таким образом, в них можно устанавливать карты большей длины, чем разъем. При этом не обеспечивается питание и заземление выступающей части карты, что может привести к различным проблемам.

PCI Express пересылает всю управляющую  информацию, включая прерывания, через  те же линии, что используются  для передачи данных. Последовательный протокол никогда не может быть заблокирован, таким образом задержки шины PCI Express вполне сравнимы с таковыми для шины PCI (заметим, что шина PCI для передачи сигнала о запросе на прерывание использует отдельные физические линии IRQ#A, IRQ#B, IRQ#C, IRQ#D).

Во всех высокоскоростных последовательных протоколах (например, гигабитный Ethernet), информация о синхронизации должна быть встроена в передаваемый сигнал. На физическом уровне, PCI Express использует метод канального кодирования 8b/10b (8 бит в десяти, избыточность — 20%) для устранения постоянной составляющей в передаваемом сигнале и для встраивания информации о синхронизации в поток данных. В PCI Express 3.0 используется более экономное кодирование 128b/130b с избыточностью 1,5%.

Рисунок 4 - Видеокарта для PCI Express x16

 

3  Транзакция интерфейса

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

Рисунок 5 - Топология связей PCI Express

Битовая скорость передачи информации в канале равна:

· 0,5 Гбайт/с (2,5 Гбит/с ´ 2 = 5 Гбит/с = 0,5 Гбайт/с) при использовании 2 витых пар на канал (´1);

· 1 Гбайт/с (2,5 Гбит/с ´ 4 = 10 Гбит/с = 1 Гбайт/с) при использовании 4 витых пар на канал (´2);

· 2 Гбайт/с (2,5 Гбит/с ´ 8 = 20 Гбит/с = 2 Гбайт/с) при использовании 8 витых пар на канал (´4);

· 4 Гбайт/с (2,5 Гбит/с ´ 16 = 40 Гбит/с = 4 Гбайт/с) при использовании 16 витых  пар на канал (´8);

· 6 Гбайт/с (2,5 Гбит/с ´ 12 = 60 Гбит/с = 6 Гбайт/с) при использовании 24 витых  пар на канал (´12);

· 8 Гбайт/с (2,5 Гбит/с ´ 32 = 80 Гбит/с = 8 Гбайт/с) при использовании 32 витых пар на канал (´16);

· 16 Гбайт/с (2,5 Гбит/с ´ 64 = 160 Гбит/с = 16 Гбайт/с) при использовании 64 витых пар на канал (´32).

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

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

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

Все транзакции делятся на 5 категорий. В таблице 1 приведены категории и типы транзакций, а также типы пакетов, их образующих.

Таблица 1 – Типы Транзакций PCI Express

Категории транзакций

Транзакция

Тип транзакции

Запросчик

Комплитор

Пакет-запрос (тип пакета)

Пакет-завершение (тип пакета)

Транзакции памяти

Чтение памяти

Непочтовая

Корневой комплекс, конечная точка

Корневой комплекс, конечная точка, переключатель, мост

MRd

(00000)

CplD

(01010)

Или

Cpl

(01010)

Запись памяти

Почтовая

Корневой комплекс, конечная точка

Корневой комплекс, конечная точка

MWr

(00000)

-

Чтение памяти с блокировкой

Непочтовая

Корневой комплекс

Традиционная конечная точка

MRdLk

(00001)

CplDLk

(01011);

CplLk

(01011)

           

Продолжение Таблицы 1

 

Чтение I/O

Непочтовая

Корневой комплекс, конечная точка

Корневой комплекс, конечная точка, переключатель, мост

IORd

(00010)

CplD

(01010)

Cpl

(01010)

Транзакции устройств  ввода/

вывода

Запись I/O

Непочтовая

Корневой комплекс, конечная точка

Корневой комплекс, конечная точка, переключатель, мост

IOWr

(00010)

Cpl

(01010)

Транзакции конфигурации

Конфигурационное чтение (тип 0 и тип 1)

Непочтовая

Корневой комплекс

Корневой комплекс, конечная точка, переключатель, мост

CfgRd0

(00100);

CfgRd1

(00101)

CplD

(01010)

или

Cpl

(01010)

Конфигурационная запись (тип 0 и тип 1)

Непочтовая

Корневой комплекс

Корневой комплекс, конечная точка, переключатель, мост

CfgWr0

(00100); CfgWr1

(00101)

CplD

(01010)

Или

Cpl

(01010) CplDLk

(01011)

Или

CplLk

(01011)

Транзакции сообщений

Сообщение

Почтовая

Корневой комплекс, конечная точка

Корневой комплекс, конечная точка

Msg

(10RRR); MsgD

(10RRR)

-




4 Алгоритм реализации PCI Express

Шина PCI Express поддерживает ряд обязательных (таблица 2) и ряд факультативных сигналов (таблица 3). Оставшиеся выводы используются для питания, земли и разнообразных сопутствующих сигналов. В столбцах "Задающее устройство" и "Подчиненное устройство" указывается, какое из устройств устанавливает сигнал при обычной транзакции. Если сигнал устанавливается другим устройством (например, CLK), оба столбца остаются пустыми.

Таблица 2 – Обязательные сигналы  PCI Express

 

Таблица 3 – Факультативные сигналы PCI Express

Сигнал CLK запускает шину. Большинство  сигналов совпадают с ним во времени. В отличие от шины ISA, в шине PCI Express транзакция начинается на спаде сигнала CLK, то есть не в начале цикла, а в середине.

Сигналы AD (их 32) нужны для адресов  и данных (для передач по 32 бита). Обычно адрес устанавливается во время первого цикла, а данные - во время третьего. Сигнал PAR - это бит четности для сигнала AD. Сигнал С/ВЕ# выполняет две функции. Во время первого цикла он содержит команду (считать одно слово, считать блок и т. п.). Во время второго цикла он содержит массив размером 4 бита, который показывает, какие байты 32-разрядного слова действительны. Использовав сигнал С/ВЕ#, можно считать 1, 2 или 3 байта из слова, а также все слово целиком.

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

Сигнал IDSEL связан с тем, что у  каждого устройства шины должно быть конфигурационное пространство на 256 байт, которое другие устройства могут  считывать (установив сигнал IDSEL). Это  конфигурационное пространство содержит характеристики устройства. В некоторых операционных системах механизм автоматического конфигурирования (Plug and Play, РпР) использует это пространство, чтобы выяснить, какие устройства подключены к шине.

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

Следующий сигнал - TRDY#. Его подчиненное  устройство устанавливает при чтении, чтобы сообщить, что данные находятся  на линиях AD, и при записи, чтобы сообщить, что оно готово принять данные.

Следующие три сигнала требуются  для передачи сообщений об ошибках. Один из них, сигнал STOP#, устанавливается  подчиненным устройством, если произошла  какая-нибудь неполадка и нужно  прервать текущую транзакцию. Следующий сигнал, PERR#, используется для сообщения об ошибке четности в данных на предыдущем цикле. Для чтения этот сигнал устанавливается задающим устройством, для записи - подчиненным устройством. Необходимые действия должно предпринимать устройство, получившее этот сигнал. Наконец, сигнал SERR# служит для сообщения об адресных и системных ошибках.

Сигналы REQ# и GNT# предназначены для  арбитража шины. Они устанавливаются  не тем устройством, которое является задающим в данный момент, а тем, которому нужно стать задающим. Последний обязательный сигнал, RST#, применяется для перезагрузки системы, которая происходит, либо если пользователь нажимает кнопку RESET, либо если какое-нибудь системное устройство обнаруживает фатальную ошибку. После установки этого сигнала компьютер перезагружается.

Перейдем к факультативным сигналам, большинство из которых связано  с расширением разрядности с 32 до 64 бит. Сигналы REQ64# и АСК 64# позволяют  задающему устройству попросить  разрешение осуществить 64-разрядную транзакцию, а подчиненному устройству принять эту транзакцию. Сигналы AD, PAR64 и С/ВЕ# являются расширениями соответствующих 32-разрядных сигналов.

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

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

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

 

Рисунок 6 – Транзакция на шине PCI Express

Во время цикла Т{ на спаде  синхронизирующего сигнала задающее устройство помещает адрес на линии АБ и команду на линии С/ВЕ#. Затем задающее устройство устанавливает сигнал FRАМЕ#, чтобы начать транзакцию.

Во время цикла Т2 задающее устройство переключает шину, чтобы подчиненное  устройство могло воспользоваться  ею во время цикла Т3. Задающее устройство также изменяет сигнал С/ВЕ#, чтобы указать, какие байты в слове ему нужно считать.

Информация о работе Интерфейс PCI Express