![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Таймеры, задержки и буферы
В каждой команде шины указывается адрес данных, передаваемых в первой фазе данных пакета. Адрес для каждой последующей фазы данных пакета увеличива- 184_____________________________________ Глава 6. Шины и карты расширения ется на 4 (следующее двойное слово), но в командах обращения к памяти порядок может быть иным (см. ниже). Байты шины AD, несущие действительную информацию, выбираются сигналами С/ВЕ[3: 0]# в фазах данных. Внутри пакета эти сигналы могут менять состояние от фазы к фазе произвольным образом. Разрешенные байты могут быть разрозненными; возможны фазы данных, в которых не разрешено ни одного байта. В отличие от шины ISA, на PCI нет динамического изменения разрядности — все устройства должны подключаться к шине 32-разрядным способом. Если в устройстве PCI применяются функциональные схемы иной разрядности (к примеру, нужно подключить микросхему 8255, имеющую 8-битную шину данных и четыре регистра), то приходится принимать схемотехнические методы преобразования, отображающие все регистры на 32-разрядную шину AD. Адресация памяти, портов и конфигурационных регистров различна. ♦ В циклах обращения к памяти адрес, выровненный по границе двойного слова, • 00 — линейное инкрементирование; адрес последующей фазы отличается от предыдущего на число байтов шины (4 для 32-битной и 8 для 64-битной шины). • 10 — Cacheline Wrap mode, сворачивание адресов с учетом длины строки кэш-памяти. В транзакции адрес для очередной фазы увеличивается до достижения границы строки кэша, после чего переходит на начало этой строки и увеличивается до адреса, предшествующего начальному. Если транзакция длиннее строки кэша, то она продолжится в следующей строке с того же смещения, что и началась. Так, при длине строки 16 байт и 32-битной шине транзакция, начавшаяся с адреса xxxxxxOSh, будет иметь последующие фазы данных, относящиеся к адресам xxxxxxOCh, xxxxxxOOh, xxxxxx04h; и далее к xxxxxxlSh, xxxxxxlCh, xxxxxxlOh, xxxxxx! 4h. Длина строки кэша прописывается в конфигурационном пространстве устройства (см. п. 6.2.12). Если • 01 и 11 — зарезервировано, может использоваться как указание на отключение (Disconnect) после первой фазы данных.
♦ В циклах обращения к портам ввода-вывода для адресации любого байта исполь ♦ В циклах конфигурационной записи/считывания устройство (карта расши 6.2. Шина PCI_______________________________________________________ 185 Команды шины PCI определяются значениями бит С/ВЕ# в фазе адреса (табл. 6.12). ♦ Команда подтверждения прерывания предназначена для чтения вектора пре ♦ Специальный цикл отличается от всех других тем, что является широковеща ♦ Команды чтения и записи ввода-вывода служат для обращения к пространству ♦ Команды обращения к памяти, кроме обычного чтения и записи, включают чте ♦ Команды конфигурационного чтения и записи адресуются к конфигурационному ♦ Чтение строк памяти применяется, когда в транзакции планируется более двух ♦ Множественное чтение памяти используется для транзакций, пересекающих ♦ Запись с инвалидацией применяется к целым строкам кэша и позволяет опти 186_____________________________________ Глава 6. Шины и карты расширения ♦ Двухадресный цикл позволяет по 32-битной шине обращаться к устройствам с 64-битной адресацией. В этом случае младшие 32 бита адреса передаются в цикле данного типа, а за ним следует обычный цикл, определяющий тип обмена и несущий старшие 32 бита адреса. Шина PCI допускает 64-битную адресацию портов ввода-вывода (для х86 это бесполезно, но PCI существует и на других платформах). Таблица 6.12. Декодирование команд шины PCI С/ВЕ[3: 0] Тип команды
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 — запись с инвалидацией
Шина PCI является самой высокоскоростной шиной расширения современных ПК, однако и ее реальная пропускная способность, увы, не так уж и высока. Рассмотрим наиболее распространенный вариант: разрядность 32 бита, частота 33 МГц. Как указывалось выше, пиковая скорость передачи данных внутри пакетного цикла составляет 132 Мбайт/с, то есть за каждый такт шины передаются 4 байта данных (33x4=132). Однако пакетные циклы выполняются далеко не всегда. Процессор общается с устройствами PCI инструкциями обращения к памяти или вводу-выводу через главный мост, который шинные транзакции процессора транслирует в транзакции шины PCI. Поскольку у процессоров х86 основные регистры 32-разрядные, то одна инструкция порождает транзакцию с устройством PCI, в которой передается не более 4 байт данных, что соответствует одиночной передаче. Если же адрес передаваемого (двойного) слова не выровнен по соответствующей границе, то будут порождены два одиночных цикла или один пакетный с двумя фазами данных, но в любом случае это обращение будет выполняться дольше, чем при выровненном адресе.
|