Сделай Сам Свою Работу на 5

H-A8h — 32-битные дескрипторы памяти





76h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [31:24]

77h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [23:16]

78h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [15:8]

79h, RW 32-битный дескриптор памяти О: базовый адрес памяти, биты [7:0]

продолжение ^


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

Таблица 6.10(продолжение) Индекс и тип Назначение

7Ah, RW 32-битный дескриптор памяти От правление. Биты [7:3] —зарезервированы,

при чтении должны возвращать нули. Биты [2:1]— управление доступом: 00 — 8-битная память, 01 — 16-битная память, 10 — зарезервировано, 11 — 32-битная память. Бит [0] (RO) — способ задания диапазона: 0 — следующее поле воспринимается как размер области, 1 — следующее поле воспринимается как старший адрес

7Bh, RW 32-битный дескриптор памяти 0: размер или старший адрес области,

биты [31:24]

7Ch, RW 32-битный дескриптор памяти 0: размер или старший адрес области,

биты [23:16]

7Dh, RW 32-битный дескриптор памяти 0: размер или старший адрес области,

биты [15:8]

7Eh, RW 32-битный дескриптор памяти 0: размер или старший адрес области,

биты [7:0]

7Fh Заполнитель (зарезервировано)

80h-88h 32-битный дескриптор памяти 1



89h-8Fh Заполнитель (зарезервировано)

90h-98h 32-битный дескриптор памяти 2

99h-9Fh Заполнитель(зарезервировано)

A0h-A8h 32-битный дескриптор памяти 3

Дескрипторы требуемых ресурсов (данные о возможных конфигурациях логиче­ских устройств) могут быть считаны последовательно байт за байтом из регистра Resource Data и использованы для конфигурирования устройств, которое вы­полняется через регистры, перечисленные в табл. 6.10. Считываться будут данные из карты, находящейся в состоянии config. Если регистр считывается сразу после «победы» карты в протоколе изоляции, считывание начинается с дескриптора версии PnP. Если считывание начинается для карты после ее «пробуждения» ко­мандой Wake [CSN], сначала будут считаны 8 байт уникального идентификатора, затем байт контрольного кода, который будет недействительным, поскольку гене­рируется аппаратно регистром LFSR во время побитного считывания идентифи­катора. Только после этого начнется считывание дескрипторов ресурсов. Поря­док считывания дескрипторов существенен — именно в этом порядке должны программироваться регистры дескрипторов ресурсов карты PnP. Последователь­ность считывания дескрипторов для каждого логического устройства завершает­ся признаком завершения области дескрипторов.



Считав все дескрипторы всех устройств, программа, выполняющая конфигуриро­вание PnP, получает исчерпывающую информацию об устройствах и их потреб­ностях. После этого она пытается найти бесконфликтную конфигурацию для всех устройств, с учетом потребностей установленных устройств, не относящихся к устройствам PnP. В соответствии с принятым планом она конфигурирует все устройства, а те, которым не удается выделить ресурсы, отключает. Данные о при­нятых настройках передаются «заинтересованному» ПО программным способом.


6.2. Шина PCI 175

Шина PCI

PCI (Peripheral Component Interconnect) local bus — шина соединения периферийных компонентов является основной шиной расширения современных компьютеров. Она разрабатывалась в расчете на Pentium, но хорошо сочеталась и с процессора­ми 486. Сейчас PCI является четко стандартизованной высокопроизводительной и надежной шиной расширения. Первая версия PCI 1.0 появилась в 1992 г. В PCI 2.0 (1993 г.) введена спецификация коннекторов и карт расширения. В версии 2.1 (1995 г.) введена частота 66 МГц. В настоящее время действует спецификация PCI 2.2 (декабрь 1998 г.), которая уточняет и разъясняет некоторые положения предшествующей версии 2.1. Данное описание основано на тексте стандарта «PCI Local Bus Specification. Revision 2.2» от 18.12.1998, опубликованного организацией PCI SIG (Special Interest Group).

Поначалу шина PCI вводилась как пристройка (mezzanine bus) к системам с ос­новной шиной ISA, став позже центральной шиной: она соединяется с системной шиной процессора высокопроизводительным мостом («северным»), входящим в состав чипсета системной платы. Остальные шины расширения ввода-вывода (ISA/EISA или МСА), а также локальная ISA-подобная шина X-BUS и интерфейс LPC, к которым подключаются микросхемы системной платы (ROM BIOS, кон­троллеры прерываний, клавиатуры, DMA, портов СОМ и LPT, НГМД и прочие «мелочи»), подключаются к шине PCI через «южный» мост. В современных сис­темных платах с хабовой архитектурой шину PCI Отодвинули на периферию, не ущемляя ее в мощности канала связи с процессором и памятью, но и не нагружая транзитным трафиком устройств других шин.



Шина является синхронной — фиксация всех сигналов выполняется по положи­тельному перепаду (срронту) сигнала CLK. Номинальной частотой синхронизации считается 33 МГц, при необходимости частота может быть понижена (на маши­нах с процессором 486 использовали частоты 20-33 МГц). Во многих случаях ча­стоту успешно разгоняют и до 41,5 МГц (половина типовой частоты системной шины 83 МГц). Начиная с версии 2.1 допускается повышение частоты до 66 МГц при согласии всех устройств на шине.

Номинальная разрядность шины данных — 32 бита, спецификация определяет и расширение разрядности до 64 бит. При частоте шины 33 МГц теоретическая про­пускная способность достигает 132 Мбайт/с для 32-битной шины и 264 Мбайт/с для 64-битной; при частоте синхронизации 66 МГц — 264 и 528 соответственно. Однако эти пиковые значения достигаются лишь во время передачи пакета, а из-за протокольных накладных расходов реальная средняя суммарная .(для всех задат-чиков) пропускная способность шины оказывается ниже.

С устройствами PCI процессор может взаимодействовать командами обращения к памяти и портам ввода-вывода, адресованным к областям, выделенным каждо­му такому устройству при конфигурировании. Устройства могут вырабатывать запросы маскируемых и немаскируемых прерываний. Понятия каналов DMA для шины PCI нет, но агент шины может сам выступать в роли зада'тчика, поддержи­вая высокопроизводительный обмен с памятью (и не только), не занимая ресур­сов центрального процессора. Таким образом, к примеру, может быть реализован обмен в режиме DMA с устройствами AT А, подключенными к контролеру PCI


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

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

Адресация устройств PCI

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

Устройством PCI называется микросхема или карта расширения, подключенная к одной из шин PCI и использующая для идентификации выделенную ей линию IDSEL, принадлежащую этой шине. Устройство может быть многофункциональ­ным, то есть состоять из множества (от 1 до 8) так называемых функций. Каждой функции отводится конфигурационное пространство в 256 байт (см. п. 6.2.12). Многофункциональные устройства должны отзываться только на конфигурацион­ные циклы с номерами функций, для которых имеется конфигурационное простран­ство. При этом функция с номером 0 должна быть обязательно, номера остальных функций назначаются разработчиком устройства произвольно (в диапазоне 1-7). Простые (однофункциональные) устройства, в зависимости от реализации, могут отзываться либо на любой номер функции, либо только на номер функции 0.

Шина PCI — набор сигнальных линий (см. п. 6.2.2), непосредственно соединяющих интерфейсные выводы группы устройств (слотов, микросхем на системной плате). В системе может присутствовать несколько шин PCI, соединенных мостами PCI (см. п. 6,2.10). Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их логически; главный мост соединяет главную шину с ядром сис­темы (процессором и памятью). Каждая шина имеет свой номер шины (PCI bus number). Шины нумеруются последовательно; главная шина имеет нулевой номер.

С точки зрения конфигурирования, минимальной адресуемой единицей этой иерархии является функция; ее полный адрес состоит из трех частей: номера шины, номера устройства и номера функции. Короткая форма идентификации вида РСЮ:1:2 (например, в сообщениях ОС Unix) означает функцию 2 устрой­ства 1, подключенного к главной (0) шине PCI.


6.2. Шина PCI______________________________________________________ 177

В шине PCI принята географическая адресация — номер устройства определяется местом его подключения. Номер устройства (device number или dev) определяется той линией шины AD, к которой подключена линия сигнала IDSEL данного слота: kADU -devO(MOCT),AD12-devl,...AD31 -dev20. В соседних слотах PCI, как пра­вило, задействуются соседние номера устройств; их нумерация определяется разра­ботчиком системной платы (или пассивной кросс-платы в промышленных компью­терах). Часто для слотов используются убывающие номера устройств, начиная с 20. Группы соседних слотов могут подключаться к разным шинам; на каждой шине PCI нумерация устройств независимая (могут быть и устройства с совпадающими номе­рами dev, но разными номерами шин). Устройства PCI, интегрированные в систем­ную плату, используют ту же систему адресации. Их номера «запаяны намертво», в то время как адреса карт расширения можно изменять перестановкой их в разные слоты. Одна карта PCI может содержать только одно устройство шины, к которой она подключается, поскольку ей в слоте выделяется только одна линия IDSEL Если на карте размещают несколько устройств (например, 4-портовая карта Ethernet), то на ней приходится устанавливать мост — тоже устройство PCI, к которому и обра­щаются по линии IDSEL, выделенной данной карте. Этот мост организует на карте дополнительную шину PCI, к которой можно подключить множество устройств.

С точки зрения обращения к пространствам памяти и ввода-вывода, географиче­ский адрес (номер шины и устройства) безразличен (не принимая во внимание разницу в производительности, связанную с подключением устройств к разным шинам PCI). Однако номер устройства определяет номер линии запроса преры­вания, которой может пользоваться устройство. Подробнее об этом см. в п. 6.2.6, здесь же отметим, что на одной шине устройства с номерами, отличающимися друг от друга на 4, будут использовать одну и ту же линию прерывания. Возможность развести их по разным линиям прерывания может появиться лишь, если они на­ходятся на разных шинах (это зависит от системной платы).

Разобраться с нумерацией устройств и полученных ими линий прерываний на конкретной плате можно просто: устанавливать одну карту PCI поочередно в каж­дый из слотов (отключая питание) и смотреть на сообщения об обнаруженных устройствах PCI, выводимых на дисплей в конце теста POST. В этих сообщениях будут фигурировать и устройства PCI, установленные непосредственно на систем­ной плате (и не отключенные параметрами CMOS Setup).

Но чтобы не было иллюзий простоты и прозрачности, отметим, что «особо умные» операционные системы (Windows) не довольствуются полученными назначени­ями номеров прерывании и изменяют их по своему усмотрению (что никак не мо­жет отразиться на разделяемости линий).

Протокол шины PCI

В каждой транзакции (обмене по шине) участвуют два устройства — инициатор (initiator) обмена, он же ведущее (master) устройство, и целевое (target) устрой­ство (ЦУ), оно же ведомое (slave). Шина PCI все транзакции трактует как пакет­ные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Состав и назначение интерфейсных сигналов шины приведены в табл. 6.11.


    Глава 6. Шины и карты расширения
Таблица 6. 11. Сигналы шины PCI    
Сигнал   Назначение    

AD[31:0] Address/Data — мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах —данные

С/ВЕ[3:0]# Command/Byte Enable — команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса

FRAME* Кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции

DEVSEL* Device Select — устройство выбрано (ответ ЦУ на адресованную к нему транзакцию)

IRDY* Initiator Ready — готовность ведущего устройства к обмену данными

TRDY* Target Ready — готовность ЦУ к обмену данными

STOP* Запрос ЦУ к ведущему устройству на остановку текущей транзакции

LOCK* Сигнал захвата шины для обеспечения целостного выполнения операции. Используется мостом, которому для выполнения одной операции требуется выполнить несколько транзакций PCI

REQ# Request — запрос от ведущего устройства на захват шины

GNT# Grant — предоставление ведущему устройству управления шиной

PAR Parity — общий бит паритета для линий AD[31:0] и С/ВЕ[3:0]#

PERR* Parity Error — сигнал об ошибке паритета (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку

РМЕ# Power Management Event — сигнал о событиях, вызывающих изменение режима

потребления (дополнительный сигнал, введенный в PCI 2.2)

CLKRUN* Clock running — шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений)

PRSNT[1,2]# Present — индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой

RST# Reset — сброс всех регистров в начальное состояние

IDSEL Initialization Device Select — выбор устройства в циклах конфигурационного

считывания и записи

SERR# System Error — системная ошибка. Ошибка паритета адреса данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI

REQ64* Request 64 bit — запрос на 64-битный обмен. Сигнал вводится 64-битным

инициатором, по времени он совпадает с сигналом FRAME*. Во время окончания сброса (сигналом RST*) сигнализирует 64-битному устройству о том, что оно подключено к 64-битной шине. Если 64-б.итное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов

АСК64* Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL*. Отсутствие этого подтверждения заставит инициатор выполнять обмен с 32-битной разрядностью

INTA#, INTB*, Interrupt А, В, С, D — линии запросов прерывания, чувствительность к уровню, INTC#, INTD* активный уровень — низкий, что допускает разделяемость (совместное использование)линий

CLK Clock — тактовая частота шины. Должна лежать в пределах 20—33 МГц,

вPCI2.1— до 66 МГц

M66EN 66MHz Enable — разрешение частоты синхронизации до 66 МГц


6.2. Шина PCI 179

Сигнал Назначение

SDONE Snoop Done — сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью

SBO# Snoop Backoff — попадание текущего обращения к памяти абонента шины

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

ТСК Test Clock — синхронизация тестового интерфейса JTAG

TDI Test Data Input — входные данные тестового интерфейса JTAG

TOO Test Data Output — выходные данные тестового интерфейса JTAG

TMS Test Mode Select — выбор режима для тестового интерфейса JTAG

TRST Test Logic Reset — сброс тестовой логики

В каждый момент времени шиной может управлять только одно ведущее устрой­ство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов — REQ# для запроса на управление шиной и GNT* для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME*) только при активном полученном сигнале GNT*. Снятие сигнала GNT* не позволяет устройству начать следующую транзакцию, а при определенных условиях (см. ниже) заставляет прекратить начатую транзак­цию. Арбитражем запросов на использование шины занимается специальный узел, входящий в чипсет системной платы. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программированием арбитра.

Для адреса и данных используются общие мультиплексированные линии AD. Четы­ре мультиплексированные линии С/ВЕ[3:0] обеспечивают кодирование команд в фазе адреса и разрешения байт в фазе данных. В начале транзакции ведущее устрой­ство активизирует сигнал FRAME*, по шине AD передает целевой адрес, а по лини­ям С/ВЕ# — информацию о типе транзакции (команде). Адресованное ЦУ отзы­вается сигналом DEVSEL*. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#, эта готовность может быть выставлена и раньше получения DEVSEL*. Когда к обмену данными будет готово и ЦУ, оно установит сиг­нал TRDY*. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и TRDY*. С помощью этих сигналов ведущее устройство и ЦУ со­гласуют свои скорости, вводя такты ожидания. На рис. 6.7 приведена временная диаграмма обмена, в которой и ведущее устройство, и ЦУ вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали их до конца обмена, то в каждом такте после фазы адреса передавались бы по 32 бита данных, что обеспечило бы выход на предельную производительность обмена.

Количество фаз данных в пакете явно не указывается, но перед последней фазой данных ведущее устройство при введенном сигнале IRDY* снимает сигнал FRAME*. В одиночных транзакциях сигнал FRAME* активен лишь один такт. Если устрой­ство не поддерживает пакетные транзакции в ведомом режиме, то оно должно по­требовать прекращения пакетной транзакции во время первой фазы данных (введя сигнал STOP* одновременно с TRDY*). В ответ на это ведущее устройство завер­шит данную транзакцию и продолжит обмен последующей транзакцией с новым



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


значением адреса. После последней фазы данных ведущее устройство снимает сиг­нал IRDY#, и шина переходит в состояние покоя (PCI Idle) — оба сигнала FRAME* и IRDY# находятся в пассивном состоянии. Инициатор может начать следующую транзакцию и без такта покоя, введя FRAME* одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back-to-Back) могут быть обращены как к одному, так и к разным ЦУ. Первый тип поддерживается всеми устройствами PCI, выступающими в роли ЦУ. На поддержку второго типа (она необязательна) указы­вает бит 7 регистра состояния (см. п. 6.2.12). Инициатору разрешают (если он умеет) использовать быстрые смежные транзакции с разными устройствами (битом 9 регистра команд), только если все агенты шины допускают быстрые обращения.

Рис. 6.7. Цикл обмена на шине PCI

Шина позволяет уменьшить мощность (ток), потребляемую устройствами, ценой снижения производительности, применяя пошаговое переключение линий AD[31:0] и PAR (address/data stepping). Здесь возможны два варианта.

♦ Плавный шаг (continuous stepping) — начало формирования сигналов слабо­
точными формирователями за несколько тактов до введения сигнала-квалифи-
катора действительной информации (FRAME# в фазе адреса, IRDY# или TRDY# в фазе данных). За эти несколько тактов сигналы «доползут» до требуемого зна­чения при меньшем токе.

♦ Дискретный шаг (diskrete stepping) — нормальные формирователи срабатыва­ют не все сразу, а группами (например, побайтно), в каждом такте по группе. При этом снижаются броски тока, поскольку одновременно переключается меньше формирователей.

Устройство само может и не пользоваться этими возможностями (см. бит 7 реги­стра команд), но должно «понимать» такие циклы. Задерживая сигнал FRAME*, устройство рискует потерять право доступа к шине, если арбитр получит запрос от более приоритетного устройства.


6.2. Шина PCI______________________________________________________ 181

Протокол квитирования обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции ЦУ. Средством повыше­ния надежности (достоверности) является применение контроля паритета: линии AD[31:0] и С/ВЕ[3:0]# и в фазе адреса, и в фазе данных защищены битом паритета PAR (количество единичных бит этих линий, включая PAR, должно быть четным). Действительное значение PAR появляется на шине с задержкой в один такт относи­тельно линий AD и С/ВЕ#. При обнаружении ошибки ЦУ вырабатывается сигнал PERR* (со сдвигом на такт после действительности бита паритета). В подсчете паритета при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала С/ВЕх#). Состояние бит, даже и в недействи­тельных байтах данных, во время фазы данных должно оставаться стабильным.

Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME* и IRDY# пассив­ны). Завершение транзакции выполняется либо по инициативе ведущего устрой­ства, либо по инициативе ПУ. Ведущее устройство может завершить транзакцию одним из следующих способов.

♦ Нормальное завершение ( Camletiori) выполняется по окончании обмена данными.

♦ Завершение по тайм-ауту (Time-out) происходит, когда во время транзакции у ведущего устройства отбирают право на управление шиной (снятием сигнала GNT#) и истекает время, указанное в его таймере Latency Timer. Это может слу­читься, если адресованное ЦУ оказалось непредвиденно медленным или за­планирована слишком длинная транзакция. Короткие транзакции (с одной - двумя фазами данных) даже в случае снятия сигнала GNT# и срабатывания таймера завершаются нормально. Транзакция отвергается (Master-Abort), когда в течение заданного времени ве­дущее устройство не получает ответа ЦУ (DEVSEL*).

Транзакция может быть прекращена по инициативе ЦУ; для этого оно может вве­сти сигнал STOP*. Возможны три типа прекращения.

♦ Повтор (Retry) — сигнал STOP* вводится при пассивном сигнале TRDY* до пер­вой фазы данных. Эта ситуация возникает, когда ЦУ из-за внутренней занято­сти не успевает выдать первые данные в положенный срок (16 тактов). Повтор является указанием ведущему устройству на необходимость нового запуска той же транзакции.

♦ Отключение (Disconnect) — сигнал STOP* вводится во время или после первой фазы данных. Если сигнал STOP* введен при активном сигнале TRDY* очеред­ной фазы данных, то эти данные передаются и на том транзакция завершается. Если сигнал STOP* введен при пассивном сигнале TRDY*, то транзакция заверша­ется без передачи данных очередной фазы. Отключение производится, когда ЦУ неспособно своевременно выдать или принять очередную порцию данных пакета.

♦ Отказ (Target-Abort) — сигнал STOP* вводится одновременно со снятием сигна­ла DEVSEL* (в предыдущих случаях во время появление сигнала STOP* сигнал DEVSEL* был активен). После этого данные уже не передаются. Отказ вводит­ся, когда ЦУ обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос.


182-:________________________________________________________________ Глава 6. Шины и карты расширения

Использование трех типов прекращения вовсе не обязательно для всех ЦУ, одна­ко любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.