Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Таймеры, задержки и буферы






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


184_____________________________________ Глава 6. Шины и карты расширения

ется на 4 (следующее двойное слово), но в командах обращения к памяти порядок может быть иным (см. ниже). Байты шины AD, несущие действительную информа­цию, выбираются сигналами С/ВЕ[3: 0]# в фазах данных. Внутри пакета эти сигна­лы могут менять состояние от фазы к фазе произвольным образом. Разрешенные байты могут быть разрозненными; возможны фазы данных, в которых не разре­шено ни одного байта. В отличие от шины ISA, на PCI нет динамического измене­ния разрядности — все устройства должны подключаться к шине 32-разрядным способом. Если в устройстве PCI применяются функциональные схемы иной раз­рядности (к примеру, нужно подключить микросхему 8255, имеющую 8-битную шину данных и четыре регистра), то приходится принимать схемотехнические методы преобразования, отображающие все регистры на 32-разрядную шину AD.

Адресация памяти, портов и конфигурационных регистров различна.

♦ В циклах обращения к памяти адрес, выровненный по границе двойного слова,
передается по линиям AD[31: 2]; линии AD[1: 0] задают порядок адресов в пакете:

• 00 — линейное инкрементирование; адрес последующей фазы отличается от предыдущего на число байтов шины (4 для 32-битной и 8 для 64-битной шины).

• 10 — Cacheline Wrap mode, сворачивание адресов с учетом длины строки кэш-памяти. В транзакции адрес для очередной фазы увеличивается до дос­тижения границы строки кэша, после чего переходит на начало этой строки и увеличивается до адреса, предшествующего начальному. Если транзакция длиннее строки кэша, то она продолжится в следующей строке с того же смещения, что и началась. Так, при длине строки 16 байт и 32-битной шине транзакция, начавшаяся с адреса xxxxxxOSh, будет иметь последующие фазы данных, относящиеся к адресам xxxxxxOCh, xxxxxxOOh, xxxxxx04h; и далее к xxxxxxlSh, xxxxxxlCh, xxxxxxlOh, xxxxxx! 4h. Длина строки кэша пропи­сывается в конфигурационном пространстве устройства (см. п. 6.2.12). Если
устройства не имеет регистра Cache Line Size, то оно должно прекратитьтранзакцию после первой фазы данных;

• 01 и 11 — зарезервировано, может использоваться как указание на отключе­ние (Disconnect) после первой фазы данных.

 

♦ В циклах обращения к портам ввода-вывода для адресации любого байта исполь­
зуются все линии AD[31: 0]. При этом биты адреса AD[31: 2] указывают на адрес двойного слова, к которому принадлежат передаваемые данные, а младшие биты адреса AD[1: 0] должны соответствовать байтам, которые могут быть разрешены сигналами С/ВЕ[3: 0]#. При AD[1: 0]=00 допустимо С/ВЕ[3: 0]# - хххО или 1111, приАО[1: 0]«01-С/ВЕ[3: 0]# = хх01или1111, приАО[1: 0]=10-С/ВЕ[3: 0]# = х011 или 1111, при AD[1: 0]=11 — С/ВЕ[3: 0]# = 0111 (передается лишь байт 3) или 1111 (ни один байт не разрешен). Эти циклы тоже могут быть пакетными, хотя на практике эта возможность используется редко.

♦ В циклах конфигурационной записи/считывания устройство (карта расши­
рения) выбирается индивидуальным сигналом IDSEL; функция адресуется би­тами AD[10: 8], а конфигурационные регистры (только двойные слова) адресу­ются битами AD[7: 2], при этом AD[1: 0]=00.


6.2. Шина PCI_______________________________________________________ 185

Команды шины PCI определяются значениями бит С/ВЕ# в фазе адреса (табл. 6.12).

Команда подтверждения прерывания предназначена для чтения вектора пре­
рываний. По протоколу она выглядит как команда чтения, неявно адресован­
ная к системному контроллеру прерываний. Здесь в фазе адреса по шине AD полезная информация не передается, но ее инициатор (главный мост) должен обеспечить стабильность сигналов и корректность паритета. В PC 8-битный вектор передается в байте 0 по готовности контроллера прерываний (по сиг­налу TRDY#). Подтверждение прерываний выполняется за один цикл (первый холостой цикл, который процессоры х86 делают в дань совместимости со стариной, мостом подавляется).

Специальный цикл отличается от всех других тем, что является широковеща­
тельным. Однако ни один агент на него не отвечает, а главный мост или иное
устройство, вводящее этот цикл, всегда завершает его способом Master Abort (на него требуется 6 тактов шины). Специальный цикл предназначен для генера­ции широковещательных сообщений — их могут читать любые «заинтере­сованные» агенты шины. Тип сообщения декодируется содержимым линий AD[15: 0], на линиях AD[31: 16] могут помещаться данные, передаваемые в со­общении. Фаза адреса в этом цикле для обычных устройств отсутствует, но мосты используют ее информацию для управления распространением сообще­ния. Сообщения с кодами OOOOh, 000lh и 0002h требуются для указания на отключение (Shutdown), остановку (Halt) процессора или специфические фун­кции процессора х8б, связанные с кэшем и трассировкой. Коды 0003-FFFFh зарезервированы. Специальный цикл может генерироваться тем же аппарат­но-программным механизмом, что и конфигурационные циклы (см. п. 6.2.11), но со специфическим значением адреса.

Команды чтения и записи ввода-вывода служат для обращения к пространству
портов. Линии AD содержат адрес байта, причем декодированию подлежат и биты ADO и AD1 (несмотря на то, что имеются сигналы ВЕх#). Порты PCI могут быть 16- или 32-битными. Для адресации портов на шине PCI доступны все 32 бита адреса, но процессоры х86 могут использовать только младшие 16 бит.

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

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

Чтение строк памяти применяется, когда в транзакции планируется более двух
32-битных передач (обычно это чтение до конца строки кэша).

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

Запись с инвалидацией применяется к целым строкам кэша и позволяет опти­
мизировать циклы обратной записи «грязных» строк кэша.


186_____________________________________ Глава 6. Шины и карты расширения

Двухадресный цикл позволяет по 32-битной шине обращаться к устройствам с 64-битной адресацией. В этом случае младшие 32 бита адреса передаются в цикле данного типа, а за ним следует обычный цикл, определяющий тип об­мена и несущий старшие 32 бита адреса. Шина PCI допускает 64-битную ад­ресацию портов ввода-вывода (для х86 это бесполезно, но PCI существует и на других платформах).

Таблица 6.12. Декодирование команд шины PCI С/ВЕ[3: 0] Тип команды

0000 Interrupt Acknowledge — подтверждение прерывания

0001 Special Cycle — специальный цикл

 

0010 I/O Read — чтение порта ввода-вывода

0011 I/O Write —запись в порт ввода-вывода

0100 Зарезервировано

0101 Зарезервировано

0110 Memory Read — чтение памяти

0111 Memory Write — запись в память

1000 Зарезервировано

1001 Зарезервировано

1010 Configuration Read — конфигурационное считывание

1011 Configuration Write — конфигурационная запись

1100 Multiple Memory Read — множественное чтение памяти

1101 Dual Address Cycle (DAC) — двухадресный цикл

1110 Memory-Read Line — чтение строки памяти

1111 Memory Write and Invalidate — запись с инвалидацией

6.2.5. Пропускная способность шины

Шина PCI является самой высокоскоростной шиной расширения современных ПК, однако и ее реальная пропускная способность, увы, не так уж и высока. Рассмот­рим наиболее распространенный вариант: разрядность 32 бита, частота 33 МГц. Как указывалось выше, пиковая скорость передачи данных внутри пакетного цикла составляет 132 Мбайт/с, то есть за каждый такт шины передаются 4 байта данных (33x4=132). Однако пакетные циклы выполняются далеко не всегда. Процессор общается с устройствами PCI инструкциями обращения к памяти или вводу-выводу через главный мост, который шинные транзакции процессора трансли­рует в транзакции шины PCI. Поскольку у процессоров х86 основные регистры 32-разрядные, то одна инструкция порождает транзакцию с устройством PCI, в которой передается не более 4 байт данных, что соответствует одиночной пе­редаче. Если же адрес передаваемого (двойного) слова не выровнен по соответ­ствующей границе, то будут порождены два одиночных цикла или один пакетный с двумя фазами данных, но в любом случае это обращение будет выполняться дольше, чем при выровненном адресе.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.