...
Суббота, 11.05.2024, 00:36
...

Меню сайта

облако тегов

Все о PCI-шине


PCI (Peripheral Component Interconnect) - 32-разрядная шина, поддерживающая до десяти внешних устройств, предусматривает передачу данных с тактовой частотой 33 МГц и обеспечивает максимальную пропускную способность, равную 132 Мб/с (32 бит x 33 МГц).
Стандарт PCI-шины предусматривает две дополнительные версии:
а) удвоенная тактовая частота (66 МГц);
б) 64-разрядная передача данных.
Впервые стандарт PCI был предложен "Intel" в декабре 1991 г. Первая спецификация была представлена в июне 1992 г. Тогда же спецификация PCI была принята как открытый индустриальный стандарт, а в ее разработке участвовали также "IBM", "Compaq", "DEC" и "NCR". В апреле 1993 г. была предложена версия 2.0. Спецификация шины PCI 2.1 вступила в силу в августе 95 г. В новую спецификацию 2.2 добавлены многочисленные функции управления энергопотреблением, "горячего" подключения периферийных устройств, поддержка 64-разрядности и частоты 66 МГц, т.п.
Спецификация PCI-X была разработана и предложена компаниями "Compaq", "Hewlett-Packard", "IBM". Пропускная способность интерфейса увеличивается до 1066 МБ/с. Стандарт обеспечивает частичную обратную совместимость новой шины с обычными адаптерами PCI, а также новых адаптеров с предыдущими реализациями шины. Версия стандарта PCI-X 1.0 была одобрена осенью 1999 г.
Стандарт PCI предусматривал конфигурирование устройств, подключаемых к системе, программным способом, что соответствовало концепции "Plug-and-Play". Шина PCI не поддерживает стандартных сервисов DMA и IRQ. У шины PCI имеются т.н. Distributed DMA и Scrialized IRQ. Это сервисы шины PCI, назначение которых обеспечить совместимость с режимами работы шины ISA.

Несколько подробнее о PC/PCI и DDMA.

Это аппаратные протоколы для обеспечения совместимости PCI-карт с традиционным способом прямого доступа к памяти (DMA). В стандартной реализации контроллера DMA он не может обслуживать устройства шины PCI, потому что в каждом устройстве уже реализован механизм режима "BusMaster". Протоколы PC/PCI и DDMA разработаны для совмещения контроллера DMA с PCI-устройствами; в первую очередь это сделано для разработки звуковых PCI-карт, совместимых с "Sound Blaster" и "Windows Sound System".
Протокол PC/PCI основан на выборочном переназначении на шину PCI сигналов запроса/выдачи данных, выведенных от каналов контроллера DMA на шину ISA, что позволяет PCI-устройству обмениваться с памятью под управлением основного контроллера DMA.
Протокол DDMA (Distributed DMA - распределенный DMA) основан на выборочной передаче обращений к регистрам каналов контроллера DMA на шину PCI, где эти регистры эмулируются PCI-устройствами с поддержкой DDMA. Сам обмен с памятью в этом случае выполняется в режиме "BusMaster", стандартном для PCI-устройств. Тема же стандартного DMA рассмотрена далее в отдельном подразделе.
Если речь идет о распространенных чипсетах, то протоколы PC/PCI и DDMA были реализованы еще в Intel 430TX, ALI Aladdin IV+, Aladdin V.
Возможностей PCI-шины с лихвой хватает для решения самых сложных задач, за исключением потребностей современных графических, презентационных и особенно игровых программ, зачастую требующих пропускную способность, превышающую возможности PCI-шины. Эти проблемы позволяет решать ускоренный графический интерфейс (AGP).

PCI 2.1 Support

(поддержка спецификации шины PCI 2.1). При разрешении этого параметра поддерживаются возможности спецификации 2.1 шины PCI. Спецификация 2.1 имеет два основных отличия от спецификации 2.0: максимальная тактовая частота шины увеличена до 66 МГц и вводится механизм моста PCI-PCI, позволяющий снять ограничение спецификации 2.0, согласно которой допускается установка не более 4-х устройств на шине. Запрещение этого параметра имеет смысл только при возникновении проблем после установки дополнительной PCI-платы (как правило, проблемы могут возникнуть только с достаточно старыми PCI-устройствами). Параметр может принимать значения:
"Enabled" - разрешено,
"Disabled" - запрещено.
Опция может называться "PCI 2.1 Compliance".

PCI Clock Frequency

- опция для установки частоты шины PCI. В приведенном виде такая опция была внедрена на первых "пентиумных" машинах, а затем перенесена на 486-е системы с процессорами AMD и PCI-шиной. Частота шины через множитель "привязывалась" к частоте центрального процессора и имела следующий ряд значений: "CPUCLK/1.5" (по умолчанию), "CPUCLK/2", "CPUCLK/3" и фиксированные "14 Mhz".

Значительно более современный вариант - это опция "PCI/AGP Clock". Это означает, что данной опцией устанавливаются частоты для двух шин, хотя еще не так давно каких-либо вариаций по поводу изменения частоты PCI-шины и AGP-интерфейса не наблюдалось. Речь идет, конечно, о современных системах. Приведенный вариант опции в большей степени предназначен для разгона устройств на PCI-шине, хотя и опасного.

Значения опции, т.е. частоты шин, напрямую связаны с установками частоты системной шины в опции "CPU Host Clock"(125). Если последняя превышает или равна 100 МГц, то для PCI и AGP устанавливаются значения, соответственно равные "CPU Host Clock"/3 и /1.5. Для более низкой частоты шины процессора деление производится на 2 и 1. Поэтому, если системная частота равна 66 МГц, то для PCI и AGP получаем стандартное соотношение 33/66 МГц. Тот же, т.е. стандартный, вариант имеет место при частоте в 100 МГц. Все остальные значения частоты системной шины ведут к разгону обоих интерфейсов.

PCI Dynamic Decoding
- установка в "Enabled" позволяет системе запоминать PCI-команду, которая только что была запрошена. Если последующие команды совпадают с некоторой адресной областью, циклы записи будут автоматически интерпретироваться как PCI-команды.
PCI Latency Timer (PCI Clocks)
- (таймер времени ожидания для шины PCI). Значение этой опции указывает, в течение какого времени (в тактах PCI-шины) поддерживающая режим "Busmaster" PCI-карта может сохранять контроль над PCI-шиной, если к шине обращается другая PCI-карта. Фактически это и есть таймер, ограничивающий время занятия PCI-шины устройством-задатчиком шины. По истечении заданного времени арбитр шины принудительно отбирает шину у задатчика, передавая ее другому устройству. Допустимый диапазон изменения этого параметра - от 16 до 128 с шагом, кратным 8. Правда, в некоторых случаях добавляется еще значение "Auto Configured" (по умолчанию), что значительно облегчает сомнения и мучения пользователя.

Значение параметра необходимо изменять осторожно, так как оно зависит от конкретной реализации материнской платы, и только в случае, если в системе установлены по меньшей мере две PCI-карты, поддерживающие режим "Busmaster", например, SCSI- и сетевая карты. Графические карты не поддерживают режим "Busmaster". Чем меньше устанавливаемое значение, тем быстрее другая PCI-карта,требующая доступа, получит доступ к шине.

Если требуется выделить для работы, например, SCSI-карты больше времени, то можно увеличить значение для PCI-слота, в котором она находится. Значение для сетевой карты, например, соответственно необходимо уменьшить или вообще установить равным 0, хотя в некоторых случаях установка 0 не рекомендуется. В общем случае, какое значение параметра пригодно и оптимально для данной системы, зависит от применяемых PCI-карт и проверяется с помощью тестовых программ. Необходимо также учитывать, в какой степени "карты-конкуренты" чувствительны к возможным задержкам.

Опция также может носить названия: "PCI Bus Time-out", "PCI Master Latency", "Latency Timer", "PCI Clocks", "PCI Initial Latency Timer". Для последней опции ряд возможных значений имел вид: "Disabled", "16 Clocks", "24 Clocks", "32 Clocks". Еще одна старенькая опция, "PCI Bus Release Timer", имела такой набор значений: "4 CLKs", "8 CLKs", "16 CLKs", "32 CLKs".

И еще одно очень важное замечание. В свое время эта опция (и ей подобные) вводились с учетом совместного существования PCI- и ISA-шин. ISA-шина позволяла использовать одно "master"-устройство. Это применялось редко как раньше, так и теперь. Зато PCI-шина дала возможность одновременного использования нескольких "master"-устройств. Учитывая различия в скорости шин, а тем более в их пропускной способности, необходимо было решить проблему совместной работы "master"-устройств на PCI-шине и стандартных устройств на более медленной ISA-шине.

Особенно это касалось распространенных в то время звуковых и сетевых карт для ISA-шины, обладавших незначительным объемом буферной памяти, т.е. чувствительных к любым задержкам при передаче данных. "AMI BIOS" позволял выбрать значение параметра в диапазоне от 0 до 255 с единичным шагом. Значение "66" устанавливалось по умолчанию, хотя меньшее значение владения шиной PCI-устройством оказывалось более предпочтительным. Более свежие версии "AMI BIOS" стали менее демократичны: 32, 64, 96, 128, 160, 192, 224, 248 и "Disabled". К тому же "мелькнуло" еще одно название опции - "Master Latency Timer (Clks)", а по умолчанию стало устанавливаться значение "64".

Правда, это еще не весь возможный перечень. Функции "Latency Timer Value" и "Default Latency Timer Value" применяются совместно. Если в последней опции установить "Yes" (оно же и по умолчанию), то тогда первая функция будет проигнорирована. Чуть выше уже зашла речь о возможности установки параметров для отдельных слотов. Вот как реализует такую возможность "Phoenix BIOS":
"PCI Device, Slot #n",
"Default Latency Timer: [Yes]",
"Latency Timer: [0040]",
Естественно, что для работы с этими параметрами выводится отдельное конфигурационное подменю. Для n-го слота пользователь может выбрать установку по умолчанию ("Yes"), тогда в нижнем поле будет выведено значение в 16-ричной форме. При этом доступ пользователя к полю "Latency Timer:" будет заблокирован. Если же в опции "Default Latency Timer:" установить "No", то появится возможность вручную установить значение из ряда: 0000h .... 0280h. Последнее значение соответствует десятичному 640. По умолчанию устанавливается 0040h (64 такта).
Еще один вариант значений опции "Latency Timer": "20h", "40h", "60h", "80h", "A0h", "C0h", "E0h", "Default" (т.е. "40h").
Поэтому при конкретном решении стоящей перед пользователем задачи (или проблемы) надо исходить прежде всего из возможностей чипсета, версии BIOS и используемых карт расширения.
PCI Parity Check
некоторые мощные чипсеты, прежде всего серверных систем, предоставляют возможность (через "Enabled") контролировать поток данных на шине PCI по четности. При этом контролируются как адресные данные, так и собственно данные. Ошибки при этом не исправляются, но пользователь о них информируется. Что также важно, такой метод контроля должна поддерживать и сама PCI-карта расширения.
Опция может называться и "PCI Parity Checking", или "PCI Bus Parity Checking".
PCI Preempt Timer
- (таймер времени вытеснения для шины PCI). На первый взгляд по смыслу эта функция аналогична функции "PCI Latency Timer", возможна даже некоторая путаница, хотя в данном случае кое-что наоборот. Значение этой опции указывает, в течение какого времени (в тактах PCI-шины, или локальных тактах - LCLKs) поддерживающая режим "Busmaster" PCI-карта сможет не контролировать шину, а находиться в состоянии ожидания пока этой шиной владеет другая карта. Арбитр шины отслеживает указанный временной интервал с момента подачи запроса, после чего ожидающее "master"-устройство вытесняет своего товарища.
Для выбора предагаются значения из ряда: 5, 12, 20, 36, 68, 132, 260, в цифровом виде или с отображением единицы измерения - "5 LCLKs" и т.д. Обязательным является параметр "No Preemption" (или "Disabled"). Причем последний, как правило, устанавливается по умолчанию. Эта опция в таком виде уже не применяется, так что встреча с ней на старых машинах может вызвать некоторые трудности. Во всяком случае при наличии хотя бы двух "master"-устройств на PCI-шине значение "Disabled" (или аналогичное) должно быть заменено на более оптимальное.
Опция может называться и "PCI Preemption Timer".
PCI to ISA Write Buffer
- во включенном состоянии ("Enabled") система, не прерывая работы процессора, будет временно записывать данные в специальный буфер для последующей передачи данных в наиболее подходящий момент. В противном случае ("Disabled") цикл записи в шину PCI будет направляться далее напрямую в более медленную ISA шину. Необходимость в такой функции, а точнее в таком буфере, связана с тем, что скорости работы ISA- и PCI-шин различны. Включение буферной памяти позволит PCI-шине не ожидать, пока ISA-шина примет все данные.
Peer Concurrency
- (параллельная работа или, дословно, - равноправная конкуренция). Этот параметр разрешает/запрещает одновременную работу нескольких устройств на PCI-шине. При включении опции включается дополнительное буферирование циклов чтения/записи в чипсете. Но могут возникнуть проблемы, если не все PCI-карты готовы поддерживать такой режим работы. В этом случае работоспособность системы проверяется опытным путем.
Действие этой опции затрагивает и совместную работу PCI- и ISA-шин. Например, шинные PCI-циклы могут перераспределяться и буферизироваться во время ISA-операций, таких как передача по DMA-каналам в режиме "Bus-Master". Параметр может принимать значения:
"Enabled" (по умолчанию) - разрешено,
"Disabled" - запрещено.
Опция может называться и "PCI Concurrency" или "Bus Concurrency". Дополнительные устройства, "жаждущие конкуренции", появляются в опциях "PCI/IDE Concurrency" или "PCI-to-IDE Concurrency".
Одной из характерных особенностей PCI-шины и ее системы мостов является возможность выполнения обмена данными между процессором и памятью одновременно с обменами между другими абонентами шины PCI - Concurrent PCI Transferring . Однако эта возможность реализуется не всеми чипсетами, а обычными абонентами шины (графические карты, контроллеры дисков, т.п.) используется редко.
PERR#
SERR#
"AMI BIOS" через обычные "Enabled" (разрешено, включено) и "Disabled" (запрещено, отключено) предлагает пользователю "поработать" с интерфейсными сигналами PCI-шины: PERR# и SERR#. Этим сигналам, для справки, соответствуют контакты B40 и B42 соответственно. Несколько слов о самих сигналах.
"PERR#" - I/O PCI Parity Error. Сигнал выставляется приемником данных на шине через один шинный такт после выдачи сигнала PAR (Parity Error - контакт A43). Сигнал PERR# становится активным, если определена ошибка по четности на PCI-шине. При этом в PCICMD-регистре по сигналу PERR# устанавливается бит "Enable". Данной опцией как раз можно запретить установку сигнала об ошибке ("Disabled" устанавливается по умолчанию).
"SERR#" - I/O PCI System Error. В итоге также в PCICMD-регистре устанавливается бит "SERRE" (SERR# Enable). Это интегрированный сигнал, для выставления которого требуется выполнение одного из условий:
1. Выставляется сигнал PERR# на PCI-шине, что контроллируется битом 3 ERRCMD-регистра,
2. Сигнал SERR# будет выставлен через один шинный такт после определения нарушения передачи данных в процессе инициированных PCI-циклов,
3. Сигнал SERR# будет выставлен при ECC-операциях. ECC-ошибка сигнализируется через ERRCMD-регистр управления при корректируемой однобитной ошибке или множественной некорректируемой,
4. Сигнал SERR# будет выставлен, когда ошибка по четности на PCI-шине определена во время передачи адресных данных с одновременной установкой некоторых сигналов ошибки в других регистрах,

5. Могут быть дополнительные ситуации, например, выставление входного сигнала ошибки G-SERR# в бите 5 ERRCMD-регистра.

назад к оглавлению
далее>> ISA шина>>

Copyright MyCorp © 2024
Используются технологии uCoz