Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора ИПУ часть 2.doc
Скачиваний:
8
Добавлен:
29.08.2019
Размер:
3.7 Mб
Скачать
  1. Кодирование 8bit/10bit в интерфейсе pci-xp.

После скремблирования 8-битные знаки (8b знаки) кодируются в 10-битные символы (10b символы) с помощью логики 8b/10b кодера. При этом, конечно, происходит 25%-ная потеря реальной скорости передачи из-за расширения каждого 8b знака в 10b символ. Знак определяется как 8-битный не кодированный байт из пакета. Знак поставляется в 8b/10b кодер вместе с сигналом, показывающим является ли он знаком данных (D) или управляющим знаком (К). Символ определяется как 10-битный кодированный эквивалент 8-ми битного знака.Ниже перечисляются преимущества кодирования 8b/10b:

- встроенный синхросигнал;

- баланс постоянного тока;

- кодирование специальных управляющих знаков;

- обнаружение ошибок.

Недостаток 8b/10b кодирования состоит в том, что из-за расширения каждого 8-ми битного знака в 10-ти битный символ перед передачей, реальная скорость передачи уменьшается на 25% .

Свойства 10-тибитных (10b) символов

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

- Битовый поток 10- битного символа никогда не содержит более пяти последовательных единиц или нулей.

- Каждый 10-ти битный символ содержит четыре 0 и шесть 1 (не обязательно смежных) или шесть 0 и четыре 1 (не обязательно смежных) или пять 0 и пять 1(не обязательно смежных).

- Каждый 10-ти битный символ разделен на два блока: первый длиной шесть бит и второй длиной четыре бита. В 6-ти битном блоке не более четырех 1 или четырех 0. В 4-х битном блоке не более трех 1 или трех 0.

- Любой символ, не обладающий вышеописанными свойствами, считается ошибочным и преемник сообщает об ошибке.

Понятие неравенство символов относится к разности между числом единиц и нулей в 10-тибитном символе. Когда в символе число нулей больше, чем число единиц – это отрицательное неравенство (например, 0101000101b). Когда в символе число единиц больше, чем число нулей – это положительное неравенство (например, 1001101110b). Когда в символе одинаковое число единиц и нулей – это нейтральное неравенство (например, 0110100101b).

Каждый 10-ти битный символ содержит одно из следующих количеств нулей и единиц (не обязательно последовательных): - четыре 0 и шесть 1 (+ неравенство);

- шесть 0 и четыре 1 (- неравенство);

- пять 0 и пять 1 (нейтральное неравенство)

Процедура кодирования 8b/10b

Кодирование производится путем просмотра двух пар таблиц (одна пара для кодирования знаков данных, другая пара для кодирования знаков команд), рис.2.5.15. Выбор пары таблиц определяется значением D/K знака. Как для знаков данных, так и для знаков команд биты кодируемого знака ABCDE, поступающие на вход кодера из скремблера, с учетом значения CRD, вычисленного по результатам кодирования предшествующего знака, определяют по соответствующей таблице значения битов abcdei части символа (таблица 5b/6b кодирования). Как для знаков данных, так и для знаков команд биты кодируемого знака FGH, поступающие на вход кодера из скремблера, с учетом значения CRD, вычисленного по результатам кодирования предшествующей части abcdei знака, определяют по соответствующей таблице значения битов fghj части символа (таблица 3b/4b кодирования). Совокупность битов abcdeifghj образует символ знака D/K ABCDEFGH. По совокупности битов abcdeifghj также вычисляется текущее неравенство символа, которое в свою очередь определяет значение CRD для кодирования следующего знака.

Рис. 2.5.15. Процедура кодирования 8b/10b

Для удобства записи знаки данных и знаки команд из двоичной формы переводятся в форму имени знака. На рис. 2.5.16. поясняется алгоритм такого перевода:

- биты в знаке обозначаются заглавными буквами от A до H;

- знак разделяется на два блока, первый знак длиной 3 бита (старшие) и второй знак длиной 5 бит (младшие);

- блоки зеркально отображаются;

- знак принимает форму Zxx.y, где: Z - D или K для знаков данных или управляющих знаков

хх - десятичное значение 5-ти битного поля

у - десятичное значение 3-х битного поля

Выбранный для примера знак 6Ah на рис. 2.5.16. представляется как D10.3 в таблицах преобразований 8b/10b

Рис. 2.5.16. Алгоритм перевода знака из двоичной формы в форму имени знака

  1. Конфигурация интерфейса PCI-XP и маршрутизация TLP пакетов. Заголовки пространства конфигурации. Plug-and-play конфигурация параметров маршрутизации.

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

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

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

Когда пакет TLP(PL) достигает приемного устройства, последнее проверяет пакет на отсутствие

ошибок, а затем принимает одно из трех решений:

принять и использовать пакет;

переслать пакет на соответствующий выходной порт;

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

которым находится адресат пакета.

В устройствах типа «конечная точка» задача маршрутизации ограничивается принятием или

отклонением пакета.

В интерфейсе PCI-XP адресация поддерживается в четырех независимых адресных пространствах:

адресном пространстве памяти, адресном пространстве устройств ввода/вывода, адресном пространстве

конфигурации и адресном пространстве сообщений. Доступ к этим адресным пространствам обеспечивается

использованием разделенных (Split) транзакционных запросов и транзакций выполнения

Все варианты TLP, нацеленные на любое из адресных пространств, используют одну из трех

возможных схем маршрутизации:

адресную маршрутизацию;

ID-маршрутизацию (определяемую индентификационным номером ID);

неявную маршрутизацию.

Адресная маршрутизация предполагает, что в заголовке пакета TLP указывается конкретный адрес, а каждое устройство PCI-XP-системы «знает» свой диапазон адресного пространства и «отбирает» пакеты из общего трафика, адресованные только ему.

ID-маршрутизация использует номер шины, номер устройства и номер функции для адресации

конкретного устройства PCI-XP-системы.

Неявная маршрутизация основывается на информации, закодированной в заголовке пакета,

указывающей на предназначенность пакета устройству с известным положением (например, корневому комплексу, следующему приемнику).

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

запрограммирована стратегия системной маршрутизации.

Механизм конфигурирования интерфейса PCI-XP по сути аналогичен механизму конфигурирования

интерфейсов PCI и PCI-X, но есть отличия, поскольку в интерфейсе PCI-XP изменен способ передачи информации (последовательная передача вместо параллельной). Рассмотрим подробнее эти особенности.

PCI configuration space — конфигурационное адресное пространство PCI.

Одним из главных усовершенствований шины PCI по сравнению с другими архитектурами ввода-вывода стал её конфигурационный механизм. В дополнение к типичным адресным пространствам памяти и ввода-вывода в PCI вводится конфигурационное адресное пространство. Оно состоит из 256 байт, которые можно адресовать, зная номер шины PCI, номер устройства и номер функции в устройстве. Первые 64 байта из 256 стандартизированы, а остальные регистры могут быть использованы по усмотрению изготовителя устройства.

Для того, чтобы обращаться к устройству через адресное пространство памяти или ввода-вывода, системное программное обеспечение или ОС программирует базовые адресные регистры (англ. Base Address Registers, также называемые BAR'ами), посылая конфигурационные команды PCI-контроллеру. В начале загрузки системы все PCI устройства находятся в неактивном состоянии, им не назначены адреса, по которым драйверы устройств могут взаимодействовать с ними. Либо BIOS, либо сама операционная система, обращается к PCI слотам при помощи географической адресации через PCI-контроллер и настраивает BAR'ы в конфигурационном адресном пространстве. Значения BAR'ов действительны всё время, пока система включена. При отключении питания значения этих регистров теряются до следующей загрузки, в процессе которой процедура настройки повторяется. Так как этот процесс полностью автоматизирован, пользователь компьютера освобождается от непростой задачи конфигурирования нового аппаратного обеспечения, подключаемого к шине PCI (в отличие, например, от шины ISA, базовые адреса устройств, подключамых к которой, приходилось настраивать перемычками или переключателями).

Любое PCI-устройство, не являющееся мостом, может иметь до шести BAR'ов, каждый из которых отвечает за определённый диапазон адресов в адресном пространстве памяти или ввода-вывода.

Plug-and-play конфигурация параметров маршрутизации.

Как отмечалось, интерфейс PCI-XP поддерживает 4046-байтовое пространство конфигураций для каждого устройства, и оно идентично пространству конфигураций для всех устройств PCI и PCI-X, но расширено для последующих модификаций. При этом интерфейс PCI-XP поддерживает тот же формат заголовка пространства конфигураций типа 0 для конечных точек (смотри табл. 2.5.20.) и формат заголовка пространства конфигураций типа 1 для каждого канала переключателя или моста (смотри табл. 2.5.21.). Отметим, что переключатель можно рассматривать как совокупность виртуальных мостов, с каждым из которых связано свое отдельное конфигурационное пространство типа 1, рис.2.5.21

Переключатели PCI-XP логически представляются совокупностью двухуровневых структур - мостов: одного моста между основной шиной (например, на рис. 2.5.22. канал 1) и внутренней шиной (на рис. 2.5.22. шина 2), к которой в свою очередь подключены один или несколько виртуальных мостов к вторичным шинам (на рис. 2.5.22. канал 3 и канал 4). Каждое мостовое соединение имеет независимый заголовок конфигураций формата типа 1 с его собственными наборами ограничивающих регистров и регистров номеров шин. Рис. 2.5.22. иллюстрирует нумерацию шин, связанных с внешними каналами и внутренней шиной переключателя. Вторичная шина основной канала (на рис 2.5.22 канал 1) является внутренней виртуальной шиной (на рис 2.5.22 шина 2), и все каналы нисходящих потоков данных присоединены к внутренней виртуальной шине через виртуальные мосты.

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

Регистр номера первичной шины содержит номер шины (канала, линии связи), к которой подсоединён переключатель (мост) в направлении восходящего

Рис. 2.5.22. Нумерацию шин переключателя.

потока данных. В PCI-XP первичная шина это та, которая ведёт в направлении корневого комплекса и системного процессора.

Регистр номера вторичной шины содержит номер реальной шины для реального моста или номер виртуальной шины для переключателя, к которой подсоединёны виртуальные мосты в направлении нисходящих потоков данных.

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

Как и в интерфейсе PCI регистры, ответственные за маршрутизацию пакетов TLP, находятся, в первых 64 байтах (16DW) пространства конфигураций. Это три основных, интересующих нас, вида регистров:

  1. Регистры Базовых Адресов (Base Address Registers) (BAR), размещаемые в заголовках типа 0 и типа 2. Регистры Базы/Ограничения (Base/Limit Register), размещаемые в заголовке типа 1 для переключателей (мостов).

  2. Регистры Номеров Шин, размещаемые в заголовках типа 1 для переключателей (мостов) .

Регистры Базовых Адресов (BAR) для заголовков пространства конфигурации типа 0 и типа 1.

Они имеются во всех адресуемых устройствах, которые рассматриваются как системная память или как устройства ввода-вывода, картированные как память (memory mapped IO – MMIO). Определение местоположения и использование BAR являются аналогичны BAR интерфейсов PCI и PCI-X. Как показано в табл. 2.5.20. заголовок пространства конфигурации Тип 0 имеет 6 BAR, доступных разработчику устройства (в DW 4-9), в то время как заголовок Тип 1 имеет только два BAR (в DW 4-5).

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

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

Заполнение BAR должно выполняться с учетом следующих особенностей.

  1. Разработчики устройств используют BAR для того, чтобы жестко запрограммировать запрос на определение (описание) одного блока памяти, или адреса устройства IO в системной памяти, или в карте IO. Пара соседних, расположенных последовательно, BAR объединяется, если был сделан запрос к 64-битной памяти.

  2. «Жестко» программируемые биты (младшие пять бит) в BAR определяют тип запроса, размер запроса и то, может ли устройство-адресат рассматриваться как предварительно выбранное устройство (только для запросов памяти).

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

Рассмотрим установку BAR на примере: запроса к предварительно выбранной памяти с адресным объемом в 1МБ в предположении, что системное программное обеспечение размещает этот адресный объем в адресном пространстве памяти всей PCI-XP системы с начального адреса 2 ГБ.

Рис. 2.5.23. отображает основные этапы настройки BAR, который используются для выделения устройству памяти блока адресов объемом 1 МБ, размещённого в карте системной памяти с начального адреса 2 ГБ.

Первый этап

№ бита

31

20

19

4

3

2

1

0

Знач-е

х

х

х

х

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

Второй этап

№ бита

31

20

19

4

3

2

1

0

Знач-е

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

Третий этап

№ бита

31

20

19

4

3

2

1

0

Знач-е

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

Рис. 2.5.23. Этапы настройки BAR

Процедура конфигурации BAR состоит из последовательности конфигурационных чтений и записей по адресу данного регистра. На рис. 2.5.23. содержимое BAR изображено на трёх этапах процесса конфигурации.

На первом этапе конфигурации BAR на рис. 2.5.23. изображен таким, каким он выглядит после включения питания или перезапуска. Устройство памяти через дополнительный интерфейс записывает командную информацию в 4 младших бита и записывает подряд в последующие старшие биты столько “0”, сколько нужно для задания объема блока адресов памяти. В нашем примере до 19 бита разрядной сетки BAR включительно, последнее означает, что объем 2х20 = 1МБ. В последующие (которые являются перезаписываемыми) старшие биты разрядной сетки BAR (эти биты обозначены ХХХХХ) записываются случайные значения “1” или “0”, причем обязательно записывается “1” в первый старший бит после последовательности “0” Для нашего примера в 20 бите разрядной сетки BAR.

. Системное программное обеспечение сначала запишет в перезаписываемые старшие разряды BAR “1”. Разумеется, запись конфигураций не затрагивает однозначно записываемых младших битов BAR (в рассматриваемом примере с0 по 19 разряд). На втором этапе конфигурации, показанном на рис. 2.5.23, отображается состояние BAR после того, как системное программное обеспечение выполнило запись всех “1” в перезаписываемые старшие биты и провело чтение BAR для проверки запроса. Табл. 2.5.22. иллюстрирует результаты чтения BAR после записи в него всех "1"в перезаписываемые старшие биты.

Табл. 2.5.22. Результаты чтения BAR

Биты BAR

Значение

0

Прочтен "0", указывает на запрос памяти

2:1

Прочтено “00”, указывает на то, что адресат поддерживает только 32-битную адресацию

3

Прочтена "1", указывает на то, что запрос предназначается памяти, выбранной с упреждением (prefetchable).

19:4

Прочтена последовательность "0" до первой “1”(смотри бит 20), Эта информация используются для указания размера адресного блока запроса

31:20

Прочтены "1" , потому что программное обеспечение ещё не запрограммировало старшие биты начальным адресом блока. Заметьте, что бит 20 был первым битом (после бита 3), прочитанный как содержащий 1, это указывает на размер запрашиваемой памяти – 1МБ (220 = 1МБ)

На третьем этапе конфигурирования BAR, показанном на рис.2.5.23., отображается состояние после того, как системное программное обеспечение создало карты системной памяти и устройств IO, и установило в старших (перезаписываемых) битах BAR начальный адрес блока адресного пространства памяти.

В приведенном примере начальный адрес блока устройства памяти – 2 ГБ (назначается системным программным обеспечением), и поэтому бит 31 устанавливается в “1” (231 = 2 ГБ). Все остальные перезаписываемые старшие биты устанавливаются в “0”.

После этого этапа конфигурация BAR завершена. И когда системное программное обеспечение разрешит декодирование адреса памяти записью соответствующего бита в командном регистре пространства конфигурации, устройство памяти сможет обеспечить обращение в области от 2 ГБ до 2 ГБ+1 МБ.

Базовые/Ограничивающие (Base/Limit) регистры заголовка конфигурационного пространства типа 1.

Второй набор конфигурационных регистров, связанных с маршрутизацией, также находится в заголовках конфигураций типа 1 и используется для пересылки адресно-маршрутизируемых пакетов TLP. Это три набора ограничивающих регистров, запрограммированных для каждого соединения-моста для того, чтобы переключатели (мосты) могли получать и пересылать адресно-маршрутизируемые TLP на вторичные шины. Эти наборы ограничивающих регистров необходимы по тому, что транзакции управляются по-разному (например, выборкой с упреждением, написанием почтовых отправлений и так далее) в памяти, выбранной предварительно, памяти, невыбранной предварительно (MMIO), и адресных доменах IO. Базовый (Base) регистр в каждой паре устанавливает начальный адрес для группы устройств, находящихся в нисходящем потоке данных, а ограничивающий (Limit) регистр определяет максимальный адрес для этой группы устройств. Применяются три набора базовых и ограничивающих регистров:

- базовый и ограничивающий регистры памяти, выбранной с упреждением;

- базовый и ограничивающий регистры памяти, не выбранной с упреждением;

- базовый и ограничивающий регистры устройств ввода-вывода (IO).

Базовые и ограничивающие регистры памяти, выбранной с упреждением.

Младшие базовые и ограничивающие регистры памяти, выбранной с упреждением, находятся в DW 9 (в девятом двойном слове) и старшие базовые и ограничивающие регистры памяти, выбранной с упреждением, находятся в DW 10-11 заголовка типа 1. Эти регистры отслеживают все устройства нисходящего потока данных с памятью, выбранной с упреждением (prefetchable). Как 32-битная, так и 64-битная адресация может поддерживаться этими регистрами. Если старшие регистры не используются, то доступна только 32-битная адресация и заголовки TLP, адресованные к этому пространству, будут формата 3DW. Если старшие регистры и системное программное обеспечение определяют устройство, как находящееся выше 4 ГБ границы, пакеты TLP, обращающиеся к устройству, будут иметь формат заголовка 4DW.

Базовые и ограничивающие регистры памяти, не выбранной с упреждением (non-prefetchable).

Ограничивающие регистры памяти, невыбранной с упреждением, находятся в DW 8. Эти регистры используются для отслеживания всех устройств нисходящего потока данных с памятью, невыбранной с упреждением (IO, картированные как память (memory mapped IO)). Устройства с памятью, не выбранной с упреждением, ограничены 32-битной адресацией; адресованные ими пакеты TLP всегда используют 3DW формат заголовка.

Ограничивающие и базовые регистры устройств ввода-вывода (IO)

Младшие ограничивающие и базовые регистры устройств ввода-вывода (IO) находятся в DW 7, а старшие ограничивающие и базовые регистры устройств ввода-вывода (IO) находятся в DW 12. Эти регистры используются для отслеживания всех устройств, имеющих устройства ввода-вывода (IO) при нисходящих потоках данных. При использовании старших регистров адресное пространство устройств ввода-вывода (IO) может занимать все 32 бита (4 ГБ). Если же они не использованы, то адресное пространство устройств ввода-вывода (IO) ограничено 16 битами (64 КБ). В любом случае, пакеты TLP, адресованные этим устройствам, всегда используют 3DW формат заголовка.