Перейти к содержимому

Pci perr serr support что это

  • автор:

Re: Как определить шина PCI или PCI-express, и какого типа сетевая карточка e1000

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум Arch + Atheros == wifi ? (2008)
  • Форум как определить версию GPU для GeForce 8***/9*** (2009)
  • Форум AVerTV Hybrid NanoExpress (2010)
  • Форум PCI bridge ASMedia ASM1083 (2011)
  • Форум Intel Corporation Device 5902 — что за зверь? (2018)
  • Форум как назначить irq (2007)
  • Форум внешний монитор (2007)
  • Форум e1000 непонятки с какой же частотой они работают с шиной (2007)
  • Форум Работа с MSI прерываниями, Как корректно выделить вектор прерываний ? (2011)
  • Форум Помогите настроить FM-tuner (2002)

5.2. Все о 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-устройствами). Параметр может принимать значения:

Опция может называться «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». Если последняя превышает или равна 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-регистра.

16 Bit ISA I/O Command WS — данная опция используется для компенсации возможной разницы между скоростью работы системных устройств ПК и его периферии. Подобная компенсация необходима, например, если в системе не выделено дополнительное время ожидания/ответа устройства. В таком случае система может решить, что какое-либо неуспевающее ответить устройство вообще не функционирует и перестанет давать запросы на ввод/вывод из этого устройства. Данную опцию необходимо отключать («Disabled») для повышения быстродействия только в случае, когда все устройства в таком режиме нормально функционируют, в противном случае возможна потеря данных. Естественно отключение опции при отсутствии в системе ISA-карт расширения.

Опция может называться «ISA 16-bit I/O Wait States». При этом появляется возможность установить количество тактов ожидания вручную: 0, 1, 2, 3.

16 Bit ISA Mem Command WS — данная опция по назначению аналогична предыдущей, с той лишь разницей, что она позволяет нужным образом соотнести скорость работы памяти ISA-устройства с возможностью системы записывать/читать из этой памяти. Параметр может принимать значения:

«Enabled» — разрешено, «Disabled» — запрещено.

Опция может называться «ISA 16-bit Mem Wait States». При этом появляется возможность установить количество тактов ожидания вручную: 0, 1, 2, 3.

ISA Bus Clock — опция установки тактовой частоты ISA-шины. Стандартное значение скорости ISA-шины составляет около 8,33 МГц.

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

Например, тактовая частота PCI-шины составляет 33 МГц. Если изменить делитель с PCICLK/4 на PCICLK/3, то ISA-шина будет работать с частотой 11 МГц. Но необходимо помнить, что повышение тактовой частоты может привести к перегреву элементов ISA-карты и выходу ее из строя. В лучшем случае может возрасти риск ошибок при работе, особенно это опасно для контроллеров дисков (в случае устаревших систем). И хотя многие ISA-устройства работают на более высоких скоростях, необходимо снизить скорость шины, если какое-либо ISA-устройство функционирует неверно.

Из вышесказанного следует, что для правильной установки тактовой частоты ISA-шины необходимо знать тактовую частоту PCI-шины. В данном случае речь идет о том, что в первых системах с использованием PCI-шины частота самой PCI-шины зависила от системной тактовой частоты и поэтому имела ряд значений: 25, 30 и 33 МГц, т.п. В более «старых» системах частота ISA-шины была «привязана» к системной частоте, которая колебалась от 16 до 50 МГц, тем самым давая простор и для ISA-шины

Опция в разное время носила и разные названия: «ISA Clock», «ISA Clock Frequency», «ISA Bus Clock Frequency», «ISA Bus Clock Option», «ISA Bus Speed», «ISA Clock Select», «ISA Clock Divisor», «AT BUS Clock», «AT Bus Clock Frequency», «AT BUS Clock Selection», «AT Bus Clock Source».. Наличие в названиях опций сочетания «AT Bus» свидетельствует о «старости» опций. Стоит напомнить, что 8.33 МГц — это «стаpая» тактовая частота шины IBM AT.

Ну и, наконец, ряд возможных параметров для выбора: PCI (или PCICLK, или CLK ) / 2, 3, 4, 5, 6, 8, 10, и даже 12, а также фиксированное значение — «7.159 MHz» (оно может устанавливаться и по умолчанию). Опять необходимо дополнительно отметить, что некотоpые системные интерфейсные ISA-платы разрабатывались для такой фиксированной частоты. Для систем с 286-ми и 386-ми процессорами CLK могло означать половину скорости ядра CPU. Тогда в установках скорости ISA-шины параметр обозначался как CLK2/x.

Еще одно замечание. Необходимо не забывать о скорости ISA-шины при разгоне процессоров, если разгон строится от тактовой частоты системной шины.

Несколько другое содержание заключено в опции «ISA Clock Select Enable». Установив опцию в «Disabled», мы получаем стандартную частоту ISA-шины (PCI/4), выбрав же «Enabled», получаем возможность поварьировать частотой шины вручную.

И еще одна опция напоследок — «PCI-ISA BCLK Divider» (BCLK — Bus CLK). И значения: «AUTO», «PCICLK1/2», «PCICLK1/3», «PCICLK1/4».

AT BUS Clock Selection (выбоp метода синхpонизации шины ЭВМ): Задает коэффициент деления тактовой частоты CPU для получения им доступа к шине ISA/EISA. Hепpавильная установка может вызвать значительное снижение пpо изводительности.Значения задаются в выpажениях вида CLK/x или же CLKn/x, где х может иметь значения 2, 3,4,5 и т.д. CLK пpедставляет собой тактовую часто ту CPU, за исключением пpоцессоpов, тpебующих нес кольких схем внешней синхpонизации — поэтому для 486DX33, 486DX2/66 и для 486DX3/99 это значение бу дет всегда 33. Вам следует попытаться достичь 8.33 МГц (это «стаpая» тактовая частота шины IBM AT; есть платы, котоpые могут pаботать и быстpее, но это делать не обязательно). Hекотоpые системные платы имеют тактовую частоту 7.15 МГц. Типовые (pекомендуемые) установки : Быстродействие CPU Соответствующая установка 16 CLK/2 25 Или DX2/50 CLK/3 33, DX2/66 или DX3/99 CLK/4 40 Или DX2/80 CLK/5 50 Или DX2/100 CLK/6 Вы может пробовать и другие значения, чтобы увеличить эффективность. Если вы выбираете слишком маленький делитель ( CLK/2 для DX33 ), ваша система может зависать. Для слишком большого делителя ( CLK/5 для DX33 ) эффективность ISA-плат будет уменьшаться. Эта установка пpедназначена только для обмена данных с платами ISA, но не VESA, котоpые pаботают синхpонно с тактовой частотой CPU — 25, 33 МГц и выше. Если ваша ISA-плата имеет достаточное быстpодействие, вы можете попытаться установить тактовыю частоту 12 МГц. Обратите внимание, что, если вы пеpеключаете кваpцевые pезонатоpы для изменения тактовой частоты CPU, то одновpеменно вы изменяете и частоту ISAшины — если вы не изменяете пpедустановки для компенсации. То, что вы можете увеличить тактовую частоту CPU, еще не означает, что вы можете увеличить и тактовую частоту шины. Вполне возможно, что пpоблемы возникнут лишь с одной платой — но и этого достаточно. — ISA Clock Frequency Тактовая частота шины ISA. На большинстве плат она получается делением основной частоты платы (25/33/40/50 МГц) на указанный в параметре де╜литель. Стандартом предусмотрена частота 8 МГц, однако большинство плат успешно работает на 10-13 МГц, а некоторые — и на 16-20-25 МГц. Повышение частоты ускоряет обмен с платами (на другие шины она никак не влияет), но возрастает риск ошибок при работе (особенно это опасно для контроллеров дисков — могут искажаться передаваемые данные).

ISA Command Delay — опция установки задержки перед передачей данных для ISA-шины. Эта старенькая опция позволяла выбрать стандартный режим работы для ISA-устройств («Normal Delay») и со вставкой дополнительного такта ожидания («Extra Delay»).

ISA Slave Wait States — опция установки тактов ожидания для ISA-устройства, не работающего в режиме задатчика шины, т.е. «мастер»-устройства. Возможные значения: «4 WS», «5 WS». Подобная опция могла называться и «ISA Wait States» со значениями «5 ISACLKs» и «4 ISACLKs», что говорит конкретно о тактах ожидания в частотах ISA-шины.

FQXSPIO0007N: в системе [ComputerSystemElementName] произошла PCI PERR.

В системе [ComputerSystemElementName] произошла PCI PERR.

Это сообщение используется в случае, когда реализация обнаружила PCI PERR.

Уровень серьезности​

Категория оповещений​

Критическая ошибка — другое

Подлежит обслуживанию​

Информация CIM​

Prefix:PLAT

и ID:0232

SNMP Trap ID​

Автоматическое уведомление службы поддержки​

Действие пользователя​

Чтобы устранить неполадку, выполните указанные ниже действия.

  1. Проверьте светодиодный индикатор PCI.
  2. Извлеките и снова установите адаптеры и платы-адаптеры Riser, испытывающие неполадки.
  3. Обновите микропрограмму сервера (UEFI и BMC) и микропрограмму адаптера.

Для некоторых кластерных решений требуются определенные уровни кода или скоординированные обновления кода.

Предоставить обратную связь

Pci perr serr support что это

PCI Local Bus Specification Revision 21 Jun. 1, 1995.
PCI Local Bus Specification, Production Version, Revision 2.0, (Apr. 30, 1993) .COPYRGT.1992, 1993 PCI Special Interest Group.

Primary Examiner:
MYERS, PAUL R
Attorney, Agent or Firm:
AKIN GUMP STRAUSS HAUER & FELD LLP (Houston, TX, US)

What is claimed is:

1. An apparatus for communicating error signals in a computer having an interrupt input, said apparatus comprising:

a first expansion bus having a first line for carrying a first type of error signal and a second line for carrying a second type of error signal;

a second expansion bus having a third line for carrying the first type of error signal and a fourth line for carrying the second type of error signal;

a buffer to unify said first type of error signal from said third line of said second expansion bus with said first line of said first expansion bus, forming a first output signal representing the occurrence of the first type of error in the computer;

a synchronizing circuit to receive the second type of error signal from the first and second expansion buses, the synchronizing circuit forming a second output signal representing the occurrence of the second type of error in the computer; and

an interrupt controller coupled to said interrupt input of said computer, said interrupt controller receiving said first and second output signals from said buffer and said synchronizing circuit, said interrupt controller interrupting said computer upon receipt of either said output signals.

2. The apparatus of claim 1, wherein said first expansion bus is a Peripheral Component Interconnect bus.

3. The apparatus of claim 1, wherein said second expansion bus is a Peripheral Component Interconnect bus.

4. The apparatus of claim 3, wherein said first expansion bus is a Peripheral Component Interconnect bus.

5. The apparatus of claim 1, wherein said first type of error signal includes a system error signal.

6. The apparatus of claim 1, wherein said second type of error signal includes a parity error signal.

7. The apparatus of claim 6, wherein said first type of error signal includes a system error signal.

8. The apparatus of claim 1, wherein said buffer to unify the first type of error signal is a tristate buffer having a data input connected to ground, a control input connected to said third line, and an output connected to said first line of said first expansion bus.

9. The apparatus of claim 1, wherein said first expansion bus has a clock signal, and wherein said synchronizing circuit to receive said second type of error signal has a register, said register receiving said second type of error signal from said fourth line of said second expansion bus and from said second line of said first expansion bus, said register clocked by said clock signal, said register providing an output to said interrupt controller.

10. The apparatus of claim 9, wherein a plurality of devices are plugged into said first and second expansion buses, and further comprising a processor for polling devices located on said expansion buses to identify the source of said first or second type of error signals upon receipt of said NMI signal.

11. The apparatus of claim 1, further comprising an Extended Industry Standard Architecture (EISA) bus having interrupt signals, wherein said interrupt controller is coupled to said EISA bus for handling said EISA interrupt signals.

12. The apparatus of claim 11, further comprising a processor for clearing said NMI signal.

13. The apparatus of claim 1 wherein said interrupt controller interrupts said computer with a non-maskable interrupt (NMI) signal.

14. A computer with an error handling capability, comprising:

a processor having an interrupt input;

a first expansion bus having a first line for carrying a first type of error signal and a second line for carrying a second type of error signal;

a second expansion bus having a third line for carrying the first type of error signal and a fourth line for carrying the second type of error signal;

a buffer to unify said first type of error signal from said third line of said second expansion bus with said first line of said first expansion bus, forming a first output signal representing the occurrence of the first type of error in the computer;

a synchronizing circuit to receive the second type of error signal from the first and second expansion buses, the synchronizing circuit forming a second output signal representing the occurrence of the second type of error in the computer; and

an interrupt controller coupled to said interrupt input of said processor, said interrupt controller receiving said first and second output signals from said buffer and said synchronizing circuit, said interrupt controller interrupting said processor upon receipt of either said output signals.

15. The computer of claim 14, wherein said first expansion bus is a Peripheral Component Interconnect bus.

16. The computer of claim 14, wherein said second expansion bus is a Peripheral Component Interconnect bus.

17. The computer of claim 16, wherein said first expansion bus is a Peripheral Component Interconnect bus.

18. The computer of claim 14, wherein said first type of error signal include a system error signal.

19. The computer of claim 14, wherein said second type of error signal includes a parity error signal.

20. The computer of claim 19, wherein said first type of error signal includes a system error signal.

21. The computer of claim 14, wherein said buffer to unify the first type of error signal is a tristate buffer having a data input connected to ground, a control input connected to said third line, and an output connected to said first line of said first expansion bus.

22. The computer of claim 21, wherein a plurality of devices are plugged into said first and second expansion buses, and wherein said processor further polls devices located on said expansion buses to identify the source of said first or second type of error signals upon receipt of said NMI signal.

23. The computer of claim 14, wherein said first expansion bus has a clock signal, and wherein said synchronizing circuit to receive said second type of error signal has a register, said register receiving said second type of error signal from said fourth line of said second expansion bus and from said second line of said first expansion bus, said register clocked by said clock signal, said register providing an output to said interrupt controller.

24. The computer of claim 23, wherein said processor further clears said NMI signal.

25. The computer of claim 14, further comprising an Extended Industry Standard Architecture (EISA) bus having interrupt signals, wherein said interrupt controller is coupled to said EISA bus for handling said EISA interrupt signals.

26. The computer of claim 14, wherein said interrupt controller interrupts said processor with a non-maskable interrupt (NMI) signal.

Description:

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates in general to an apparatus for handling errors generated by peripherals located on multiple expansion buses, and more specifically, to an apparatus for handling errors generated by peripherals located on multiple PCI buses.

2. Description of the Related Art

Over the past ten years, remarkable increases in hardware price/performance ratios have caused a startling shift in both technical and office computing environments. Distributed workstation-server networks are displacing once pervasive terminals which used to be attached to mainframes and minicomputers. In a computer network, each individual user’s workstation is referred to as a client computer, while the machine that provides shared resources such as printers, file storage and communication services is referred to as a file server, or simply server. The server is connected to a local area network (LAN) which is connected to the client computers. Client and server computers are all considered nodes in the network. Client nodes use standard communications protocols to exchange service requests and responses with server nodes. The server has a mass storage device, typically a magnetic hard disk, that is connected to a network and utilized as a central resource for supporting multiple users over the network. The information typically stored on such a system consists of binary computer data such as executable programs and corresponding data.

The rise in client workstation performance by more than a factor of ten in the last few years has enabled more powerful application software to be used with corresponding ravenous appetite for data from the LAN. Further, client computers running multi-tasking operating systems such as UNIX, Windows 95, or Windows NT are capable of sending multiple requests concurrently to the server. As such, the performance requirement on the host server becomes significant.

One solution to solving the server bottleneck deploys a plurality of high speed processors in the server. Each processor is typically an advanced 32-bit processor such as a Pentium™ or a Pentium Pro™ microprocessor available from Intel Corporation of Santa Clara, Calif. To complement the fast processors, fast memory system, disk system, and input/output (I/O) cards are needed. High end servers typically offer one or more Peripheral Component Interconnect (PCI) expansion buses for accepting add-on I/O cards for the I/O hungry server computer. The PCI bus is a relatively fast physical interconnect apparatus intended for use between peripheral controller components and processor/memory systems. In addition to offering higher bandwidth, the PCI bus also provides specific error detection and reporting capabilities for server systems via error reporting pins such as PERRY and SERR#. PERR# is a parity error signal for reporting data parity errors during all PCI transactions except PCI special cycles, while SERR# is provided for reporting address parity errors, data parity errors on special cycle commands, or any other system errors where the result may be catastrophic. PERR# and SERR# thus provide vital feedback data to the processor with respect to the system health and are monitored by the processor to provide a reliable computer system. The # at the end of a signal name indicates that the active state occurs when the signal is at a low voltage. A more detailed description of the structure/operation of the PCI bus architecture and associated provisions for handling errors is provided in «Peripheral Component Interconnect (PCI) Local Bus Specification, Revision 2.1 Production Version,» published Jun. 1, 1995; «Preliminary PCI System Designs Guide» Revision 1.0, published Sep. 8, 1993; and «Peripheral Component Interconnect (PCI) Add-in Board/Connector Addendum,» published Feb. 26, 1993; all by the PCI Special Interest Group, the content of which references are incorporated herein by reference as if they were fully set forth.

As an enterprise class server has to handle a wide range of peripherals for diverse applications, the ability to accept a multitude of expansion boards is important. To satisfy the I/O requirement, a number of peripheral devices compatible with the PCI bus architecture may be arranged on the primary PCI bus with no other PCI buses present; or a number of PCI peripheral devices could be attached to the primary PCI bus or to a number of secondary PCI buses through respective PCI bridges which are connected to the primary PCI bus. Each secondary PCI bus could also have a number of additional PCI buses attached through PCI bridges to it and these tertiary PCI buses could have additional PCI buses attached to them in various combinations. Although the use of secondary and tertiary PCI buses increases the total number of slots available on the server, devices plugged on secondary and tertiary PCI buses suffer delays in communicating with the processors on the host bus as they must negotiate with one or more layers of arbitration to ultimately reach the processor. To partially eliminate this problem, multiple peer-to-peer PCI bridges are supported by a new Pentium Pro™ host bus to provide a modular approach to improving I/O performance. This peer-to-peer arrangement eliminates delays incurred by traversing through one or more levels of arbitration present in the hierarchical arrangement, resulting in higher system performance. However, the peer-to-peer PCI bridge arrangement results in disparate sets of PERR# and SERR# signals. As the PERR# and SERR# signals of the secondary PCI bus operate independent of the respective PERR# and SERR# on the primary PCI bus in a peer-to-peer arrangement, errors occurring on the secondary PCI bus may not be handled in a manner consistent with those occurring on the primary PCI bus. The resulting differences may cause applications to behave differently when error conditions are encountered, depending on the position of the slot upon which the PCI expansion card has been inserted. Thus, to ensure that errors on the primary and the secondary PCI buses are handled robustly and consistently, an apparatus is needed for unifying error signals generated by peripherals located in the secondary and the primary buses before presenting the error signals to the processors. Further, an apparatus is needed for isolating the source of the error signals to extinguish the problems.

SUMMARY OF THE INVENTION

An apparatus for handling bus error signals is provided for a computer having a processor, an interrupt controller, and first and second buses which are preferably PCI buses. The first bus has a line for carrying a first type of error signal, preferably a first PERR# error signal, and another line for carrying a second type of error signal, preferably a first SERR# error signal. Similarly, the second bus has a line for carrying the first type of error signal, preferably a second PERR# error signal, and another line for carrying a second SERR# error signal.

The apparatus has a buffer with an input connected to ground, an enable input connected to the second SERR# signal, and an output connected to the first SERR# signal. When the second SERR# signal is asserted, the first SERR# signal is also asserted via the buffer. The output of the first SERR# signal is provided to one input of the interrupt controller which generates a non-maskable interrupt (NMI) signal to the processor.

The apparatus also receives the first and second PERR# signals and logically ORs the signals together to generate a combined PERR# signal. The combined PERR# signal is presented to a register which is clocked by the PCI system clock to synchronize the combined PERR# signal to the PCI clock before presenting the combined PERR# signal to a second input of the interrupt controller. Upon receipt of the combined PERR# signal, the interrupt controller generates another NMI signal to the processor.

Thus, upon receipt of either of the combined SERR# or the PCI clock synchronized PERR#, the interrupt controller generates an interrupt signal, preferably a non-maskable interrupt (NMI) signal, to the processor, causing the processor to execute an interrupt handling routine after completing the current instruction. Upon entry to the interrupt handling routine, the processor reads the interrupt status registers to locate the interrupt error group or groups that generated the interrupt. Next, the processor clears the interrupt enable registers to allow detection of new interrupts. For each group that was associated with the error indication, the processor polls all devices that might have caused the error and takes appropriate corrective actions.

The thus described apparatus unifies error signals generated by peripherals located in the secondary and the primary expansion buses before presenting the error signals to the processors so that errors on both PCI buses are handled robustly and consistently. Hence, a more reliable computer system is provided for applications that require high performance and reliability .

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which:

FIG. 1 is a block diagram of a computer system in accordance with the present invention;

FIG. 2 is a block diagram of a processor circuit board of the computer system of FIG. 1;

FIG. 3 is a schematic of the apparatus for handling bus errors of the present invention; and

FIG. 4 is a flow diagram of an NMI interrupt handler routine which responds to the interrupt signals generated by the circuit of FIG. 3.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Turning now to FIG. 1, a server computer system S is disclosed. To provide sufficient processing capability for enterprise-class server applications, the server computer system S of FIG. 1 deploys one or more processors, preferably the Pentium Pro™ processor available from Intel Corporation located in Santa Clara, Calif. The Pentium Pro™ processors reside on a processor card C which is plugged into one of the P6 slots 100-102. The P6 slots 100-102 are connected to a 72-pin Pentium Pro™ host bus called the P6 bus 103. The P6 bus 103 is a high performance bus which preferably supports two processor cards mounted on slots 100-102. Preferably, each processor card C supports two Pentium Pro™ processors. Thus, the preferred embodiment supports up to four processors.

In addition to the processors, the P6 bus 103 is connected to a memory controller 104 and a data path device 106 which collectively form a DRAM control subsystem. Preferably, the DRAM controller is an 82453GX and the data path device 106 is an 82452GX, both of which are available from Intel Corporation. The DRAM controller 104 provides control and timing to the memory subsystem, while the data path device 106 interfaces the 72-bit P6 host bus to the memory array. The memory controller 104 and the data path 106 are capable of taking a memory request from the CPU, queueing it, and responding after the requested operation has completed. Additionally, the controller 104 provides memory error correction which is vital in server applications, including the capability of single-bit error correction and multi-bit error detection on the fly. Memory arrangements having non-interleaved, x2 and x4 interleaving configurations are supported by the memory controller 104. A plurality of memory modules 110-112 are connected to memory slots 108 to provide up to four gigabytes of memory. The controller 104 minimizes the impact of the idle cycles by allowing read operations to bypass around the write operations and be completed first as long as the memory addresses for the read/write pair do not match. During operation, the actual performance of the memory subsystem will depend in part on the mix of read and write operations and the memory access patterns for a given application.

In addition to the memory controllers, a robust input/output system is needed for the server S. The I/O subsystem designed for the server must be scalable while meeting the performance requirements for the four Pentium Pro™ processors. The PCI bus provides a combination of high performance and scalable I/O for the demanding environment faced in server applications. To provide PCI connections, one or more PCI bridges 114 are connected to the P6 bus 103. The peer-to-peer arrangement of the PCI bus eliminates one or more levels of arbitration present in the hierarchical arrangement, resulting in higher system performance. Preferably, the PCI bridge 114 is an 82454GX PCI bridge (PB) from Intel which integrates the bus arbitration logic required to connect up to two 82454GX PB components without any external glue logic. In the preferred embodiment, one PCI bridge is configured to be the compatibility PCI bridge by strapping options at power-up. This PCI bridge provides the PC compatible path to the boot ROM and the EISA/ISA bus. A second PCI bridge, called an auxiliary bridge, is configured by strapping options to be the auxiliary PCI bridge. An arbiter 120 is connected to the secondary PCI bus 115 to arbitrate accesses to and from the secondary PCI bus 115. The arbitration for the processor bus is controlled by the compatibility bridge, which will have a higher priority than the auxiliary bridge to ensure a proper response time for ISA bus masters. The plurality of PCI bridges 114 provides a plurality of PCI buses, which because of their direct connections to the P6 bus 103, provides inherently faster arbitration response than the alternative of cascading PCI bridges together to provide for multiple PCI buses. This ability not only provides for design flexibility, but also for redundant I/O channels for systems in which reliability is paramount.

As in the DRAM controller 104, the PCI bridge 114 supports a full 64-bit interface to the CPU bus, including support for all protocols as well as error correction. The PCI bridge 114 supports an 8-deep transaction in-order queue as well as separate 4-deep queues for both outbound (processor to PCI) and inbound (PCI to processor) transactions that are for the I/O bus agent. Also, like the DRAM controller 104, the PCI bridge 114 provides four 32-byte data buffers in both the inbound and outbound directions. The buffers decouple the host bus 103 from the PCI buses 115-117 and optimize performance by allowing the posting of data at full bus speeds in both directions. However, unlike the DRAM controller 104, the PCI bridge 114 supports up to two outstanding deferred-reply requests. This feature allows a bus transaction to be split and completed later, preventing the Pentium Pro™ P6 bus 103 from becoming blocked by long latency I/O operations. In this mode, the PCI bridge 114 would defer Pentium Pro™ memory reads, I/O reads, I/O writes, and interrupt acknowledge transactions. However, memory write transactions are not deferred since they are better optimized through posting.

Attached to the secondary PCI bus 115 is a SCSI disk controller 116. The SCSI controller 116 provides the capability of handling simultaneous disk commands which is necessary in a multi-threaded, multi-tasking operating system. Preferably, the SCSI controller 116 is a 53C825 available from NCR Corporation. Attached to the 53C825 are a plurality of SCSI connectors 118 which drive a plurality of disk drives adapted to support the host system’s simultaneous issuance of multiple commands to one or more SCSI devices. The ability to overlap commands and queue the commands to one or more devices can significantly boost performance in environments such as Windows 95 and NT. In addition to the SCSI controller 116, a plurality of devices may be plugged into the secondary PCI bus 115 over a plurality of secondary PCI slots 122.

On the primary PCI bus 117, an interrupt controller 124 handles interrupt requests coming into the PCI bridge 114 for eventual transmission to one of the processors in slots 100-102. The interrupt controller 124 routes interrupt requests from devices located on PCI buses 115-117 to the processors on slots 100-102 during multiprocessor operation. Additionally, a number of PCI peripherals may be plugged into a plurality of primary PCI slots 126. Additionally, an EISA system controller ESC 128, preferably the Intel 82374EB device, and a PCI-EISA bridge PCEB 130, preferably the Intel 82375EB, are connected to the primary PCI bus 117. The ESC 128 and the PCEB 130 must be connected to the primary PCI bus 117, as the auxiliary bus controller must request arbitration from the compatibility bus controller 114 on some operations. That added latency means that the auxiliary bus or secondary PCI bus 115 cannot meet PCI version 2.1 latency specifications, and that EISA and ISA bus bridges have to be on the compatibility bus or primary PCI bus 117.

The ESC 128 and the PCEB 130 work in tandem to provide an EISA I/O subsystem interface for the computer system S. The combination of the ESC 128 and the PCEB 130 provides an I/O subsystem capable of taking advantage of the power of the PCI bus architecture while maintaining access to a large base of EISA and ISA expansion cards, and the corresponding software applications. With the inclusion of the ESC 128 and the PCEB 130, the system S now contains three levels of buses structured in the following hierarchy: P6 bus 103 as the execution bus; an expansion bus system having primary and secondary PCI buses 115-117; and an EISA bus as another I/O bus. This bus hierarchy allows concurrency for simultaneous operation on all three bus environments. Data buffering permits concurrency for operations that cross over into another bus environment. The ESC 128 implements system functions such as timer/counter, DMA, interrupt controller, and EISA subsystem control functions such as EISA bus controller and EISA bus arbiter. The PCEB 130 provides the interface to the bridge between the PCI and EISA buses by translating bus protocols in both directions. It uses extensive buffering on both the PCI and EISA interfaces to allow concurrent bus operations.

The ESC 128 and the PCEB 130 are connected to a plurality of EISA slots 132. Additionally, the ESC 128 also generates chip selects for certain functions that typically reside on an X bus. The ESC 128 generates chip select signals from an integrated system management unit (ISM) 158, a keyboard controller 156, a flash ROM 154, a non-volatile RAM 152, and a general purpose I/O device 144 which supports floppy drives, serial ports, and parallel ports over floppy connectors 146, serial connectors 148, and parallel connectors 150. The EISA slots 132 have system data lines connected to the data bus of the X bus via a buffer 134 which provides accesses to I/O devices as well as the system BIOS in the flash ROM 154. Further, the EISA slots 132 have system address lines that are connected to the address lines of the X bus via buffer 136. The EISA slots 132 have latched address lines which are connected to the system address lines via buffer 138. Finally, a video controller 140 is connected to the X bus address lines, the EISA/132 system data lines, and the latched address lines. Preferably, the video controller is a Cirrus Logic 5424 controller. The video controller 140 is connected to a video RAM 142 which is preferably 512 kilobytes in size.

Turning to FIG. 2, more detail is provided on the processor card C which can be inserted into either slot 100 or slot 102. In FIG. 2, the processor card C has a first CPU 200 and a second CPU 201. The CPU 200 is powered by a DC-DC converter 202, while the CPU 201 is powered by a DC-DC converter 203. The voltage generated by the DC-DC converter 202 is specified via a plurality of DIP switches 213. Similarly, a plurality of DIP switches 215 specifies the voltage to be generated by the DC-DC converter 203. The DC-DC converters 202-203 provide power to the respective CPUs 200-201. Additionally, a redundant DC-DC converter 205 is available. The output voltage on the DC-DC converter 205 is also specified by DIP switches 213. In one mode of operation where the CPU 200 is the primary CPU, the DC converters 202 and 205 provide power to the CPU 200, while the DC-DC converter 203 solely powers the CPU 201. In the event that DIP switches 213 and 215 are equal in value, the DC-DC converter 205 can be set up so that it powers both CPUs 200-201. This comparison is provided by an ID logic 206 which receives inputs from DIP switches 213-215 and receives an install signal from the DC-DC converter 205. Thus, in the event that the setting of DIP switches 213-215 is equal and the DC-DC converter 205 is installed, the DC-DC converter 205 provides power to both CPUs 200-201. The CPUs 200-201 are eventually connected to the processor bus 103 to access memory and to provide the results of the processing to the rest of the server computer S. Although the preferred embodiment uses DIP switches 213 and 215, it is known by those skilled in the art to have the CPUs 200-201 generate and present the voltage request signals directly to the DC-DC converters 202, 203 and 205 in place of the DIP switches 213 and 215.

Each of CPUs 200-201 can operate in parallel for applications that can take advantage of parallel processing. In addition to being able to operate in parallel, the dual processors on the processor card C can operate in a functional redundancy check (FRC) mode to provide an additional reliability check. The FRC mode configuration consists of one master CPU and one slave or checker CPU. The two CPUs are connected as one logical unit. The master runs code and produces results. Meanwhile, the slave runs the same code and compares its results with the master’s results. If there is any disagreement, an error is registered. The two CPUs 200-201 are maintained in lock-step by synchronizing all of their inputs to the clock of the CPU board. In the preferred embodiment, the Pentium Pro™ provides the FRC mode logic. All of the inputs and most of the outputs of the FRC pair 200-201 are tied directly together. One processor is configured as master or checker during system reset. The processor configured as the master behaves as a normal processor. The processor configured as the checker never drives its outputs, but compares them to the outputs of its master. If a discrepancy arises, the checker signals the master by asserting FRCERR for one clock cycle. After the assertion of FRCERR, the checker stops further checking and its internal state is undefined. Upon receiving FRCERR, the master FRC CPU jumps to an appropriate error handling routine so that it can robustly recover from the error.

In a server system such as that of computer system S, reliability is important. Errors that are encountered need to be handled robustly so that the system remains operational and available. Thus, in addition to providing a robust error recovery for the processors via the FRC capability, the computer system S also provides a robust error recovery for faults generated by I/O cards on PCI buses 115 and 117. The PCI standard provides PERR# and SERR# for parity and system errors to be detected and reported separately on each PCI bus. The PCI error handling is provided to agents that detect, report, and recover from errors. The parity reporting capability of the PCI architecture provides a mechanism to determine transaction-by-transaction if the master is successful in addressing the desired target and if data being transferred between them occurs correctly. Only the master of corrupted bus transfers reports parity errors to software using mechanisms other than PERR#. This gives the originator of the access, at each level in software, the prerogative of recovery. A master of an access that detects a parity error can continue the transaction or terminate it. Similarly, the target of an access that detects a parity error can either continue the operation or cause it to be stopped via target termination. When the master of an access becomes aware that a parity error has occurred on its transaction, it is required to inform the processor. The recommended route is for the master to inform its device driver of the error by generating an interrupt, among other options.

If none of these options is available to the device, it may as a last recourse, pass responsibility of handling the error to the operating system by asserting SERR#, which is a PCI pin used to indicate errors other than parity errors. When a PCI agent, which can be a PCI master or a slave device, asserts SERR#, it is required to set the signalled system error bit in the PCI’s configuration space status register. The end agent interested in SERR# is the central resource that converts the low going SERR# pulse into a signal to the processor, preferably a non-maskable interrupt (NMI) signal, among other methods. Typically, an agent may assert SERR# upon the detection of a parity error that is not reported by some other mechanisms; upon the abnormal termination of a transaction; or upon a catastrophic error that leaves the agent questioning its ability to operate correctly. Thus, the assertion of SERR# is performed only as a last recourse in handling errors.

As can be seen, SERR# and PERR# provide support for a robust error handling mechanism which contributes to a reliable server system. However, in a peer-to-peer multiple PCI bus system, SERR# and PERR# of the secondary PCI bus is isolated from the SERR# and PERR# of the primary PCI bus. As such, the errors generated by the secondary PCI devices located on the secondary PCI slots are not handled in a manner consistent with the errors generated by the primary PCI peripherals located on the primary PCI slots 126. This problem is resolved by the circuit of FIG. 3.

Turning to FIG. 3, a plurality of primary PCI slots 126A, 126B, and 126C are connected to the PCI bus 117. One or more PCI-compatible I/O cards (not shown) are inserted into slots 126A-126C. Each of slots 126A-126C has one signal connected to a CSERR# line 190 which is the primary channel SERR#. Further, each of the primary PCI slots 126A-126C has a signal connected to CPERR# line 192 which is the primary channel PERR*. Similarly, on the secondary PCI bus 115, each secondary PCI slot 122A and 122B has signals that are connected to a SSERR# line 194 and a SPERR# line 196 of the secondary PCI bus 115, respectively. Further, the SCSI interface device 116 has an output signal connected to the SSERR# line 194 and another output signal connected to the SPERR# line 196 of the secondary PCI bus 115.

Although the preferred embodiment transmits the system error signal SSERR# 194 from the secondary PCI bus 115 to the CSERR# 190 on the primary PCI bus 117, one skilled in the art can substitute the role of the first and second PCI buses by reversing the connections so that the system error signal CSERR# 190 from the primary PCI bus 117 is transmitted to the secondary PCI bus 115. In such a system, the CSERR# signal 190 is connected to the enable input of the tristate buffer 200, while the input of the buffer 200 is connected to ground and the output of the buffer 200 is connected to the SSERR# signal 194 of the secondary PCI bus 115. As such, system errors generated on the primary PCI bus 117 are communicated to the system error input pin SSERR# 194 of the secondary PCI bus 115 for eventual notification to the ESC 128.

The circuit to handle system error signals is discussed next. In FIG. 3, the SSERR# line 194 of the secondary PCI bus 115 and the CSERR# line 190 of the primary PCI bus 117 are coupled to each other via a tristate buffer 200. The tristate buffer 200 has an output enable line connected to the SSERR# line 194. The input of the tristate buffer 200 is connected to ground, while the output of the tristate buffer 200 is connected to the CSERR# line 190. Thus, when the SSERR# line 194 is asserted, an asynchronous assertion of the CSERR# line 190 is generated via the tristate buffer 200. The CSERR# line 190 is presented to the SERR# input of the ESC 128. Upon sampling the SERR# input active, the ESC 128 generates an NMI interrupt to the processors 200-201.

Turning to the handling of parity error signals on buses 115 and 117, a SPERR# line 196 from the secondary PCI bus 115 is provided to one input of an AND gate 202. A CPERR# line 192 carrying the PERR# signal for the primary PCI bus 117 is provided to the other input of the AND gate 202. The output of the AND gate 202 is provided to the D input of a flip-flop 204. The flip-flop 204 is clocked by PCI— CLK, the clock signal of the primary PCI bus 117. The output of the flip-flop 204 is provided to the PERR# input of the ESC 128 which causes the ESC 128 to generate an interrupt to the processors located on card C. Thus, the PERR# input is generated by logically ORing and then synchronizing the PERR# signals from the primary and the secondary PCI buses 115 and 117 with PCI— CLK. The thus connected PERR# signals from either PCI bus are received by the ESC 128 on the rising edge of PCI— CLK. Upon sampling PERR# active, the ESC 128 generates an NMI interrupt to the CPU. The error handler of FIG. 3 thus consolidates SERR# and PERR# signals from separate PCI buses 115 and 117, combines them, and routes them through the ESC 128. This routing allows an operating system to handle multiple NMIs even if the source of the NMI is located on different PCI buses.

Upon the receipt of the NMI interrupt at the NMI pin of the processor, the processor finishes the current instruction and immediately initiates an interrupt cycle. An NMI generally arises as a result of a serious hardware problem and is different from a standard interrupt in that it cannot be suppressed or masked in the processor, as the name suggests. As numerous interrupts may be generated at once, the software in the operating system must handle the NMI requests in a specific sequence to prevent losing interrupt requests.

Turning to FIG. 4, the NMI handling sequence is disclosed. After completing the current instruction, the processor jumps to the start of the software in FIG. 4. At this point, the processor needs to isolate the specific device generating the NMI error from six groups. The NMI error groups, along with the respective addresses for the NMI status register and the NMI enable register for the preferred embodiment of the computer system S are as follows:

______________________________________
NMI Error Group NMI Status Register NMI Enable Register
______________________________________
Motherboard parity error
port 61h, bit 7
port 61h, bit 2
(PERR#)
Add-in borad parity
port 61h, bit 6
port 61h, bit 3
errors (IOCHK#)
Fail safe timer timeout
port 461h, bit 7
port 461h, bit 2
EISA bus timeout
port 461h, bit 6
port 461h, bit 3
Software generated NMI
port 461h, bit 5
port 461h, bit 1
System error (SERR#)
N/A, detect through
ESC config register,
process of elimination
offset 40h, bit 3
______________________________________

In step 400, the routine sets the NMI group to group 0 to initiate a systematic search for all six groups. In step 402, the NMI status register of the ESC 128 is checked to see if the corresponding NMI error group has been set. In the case of the SERR# group, no individual bit is available, so each potential source must be checked individually. If the error bit of the group is not set in step 402, the routine jumps to step 411 which increments the NMI group to examine the next group for potential errors. Alternatively, if in step 402 an error bit is set, then the processor writes to the ESC 128 NMI enable register to clear the NMI groups in step 404. This write operation resets the edge detect flip-flop for each group and allows the detection of new NMIs that occur for that particular group. Next, in step 406, the processor may optionally write to the ESC NMI enable register to mask further NMIs from occurring during the execution of the NMI handler. As the reading of status register does not tell which bus the error occurred on, in the case of the PERR# signal or the IOCHK# signal, the software has to search the devices on both PCI buses to locate the source of the error. In step 408, the processor polls each device on the primary and secondary PCI buses 115, 117 that is capable of asserting the error for the particular NMI error group. Next, in step 410, the corrective actions are taken by the processor in the NMI handler. The corrective action may be as simple as informing the user that an error has occurred, or may be as complex as requiring certain software to be reexecuted and data retransmitted. From step 410, or if no error exists for the current NMI group in step 402, the NMI group index is incremented to point to the next NMI group in step 411. In step 412, if the processor has not checked all NMI groups the routine loops back to step 402 to check the next group set. Alternatively, once the processor has polled all devices from all active error groups, and has taken all appropriate corrective actions, it is ready to return from the interrupt. Before doing so, the processor should briefly disable the NMI and then reenable the NMI by writing to the ESC NMI enable register in step 414. This write operation causes a new edge on the processor’s NMI input if any new NMI errors occurred during the processing of the previous errors. Finally, the routine returns from the NMI interrupt call. Although the preferred embodiment uses NMI signals, one skilled in the art would know that other types of interrupts are available to signal error conditions to the processor and enable the processor to institute error recovery procedures.

As discussed above, the present invention unifies error signals generated by peripherals located in the secondary and the primary buses before presenting the error signals to the processors so that errors on the primary and the secondary PCI buses are handled robustly and consistently. Thus, when the second SERR# signal is asserted on the second PCI bus, the first SERR# signal on the first PCI bus is also asserted via the buffer. The output of the first SERR# signal is provided to one input of the interrupt controller which generates an NMI interrupt at the processor. The apparatus of the present invention also receives the first and second PERR# signals from the first and second PCI buses and logically ORs the signals together to generate a combined PERR# signal. The combined PERR# signal is presented to a register which is clocked by the PCI system clock to synchronize the combined PERR# signal to the PCI clock before presenting the PERR# signal to a second input of the system controller. Finally, the processor identifies the interrupt groups and polls expansion boards to locate and handle the source of the error signals. The thus described apparatus unifies error signals before presenting the error signals to the processors so that errors on the primary and the secondary PCI buses are handled robustly and consistently resulting in a more reliable computer system S.

The foregoing disclosure and description of the invention are illustrative and explanatory thereof, and various changes in the size, shape, materials, components, circuit elements, wiring connections and contacts, as well as in the details of the illustrated circuitry and construction and method of operation may be made without departing from the spirit of the invention.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *