Конфигурирование ресурсов платы

Во многом физическая установка платы — простейшая задача: вы вставляете ее и система готова продолжать работу. Конфигурирование же сетевой платы — совершенно особое дело. В гл. 3 рассмотрены логические адреса, используемые платами. Кроме того, отмечено, почему эти адреса должны быть уникальными во всей сети. Все это, однако, несложно. Сложность заключается в обеспечении гарантированного доступа сетевой платы к процессору, а также места для хранения ее данных, ожидающих обработки процессором.
Иными словами, сетевая плата должна иметь собственное прерывание, адрес буфера ввода/вывода и (изредка) каналы DMA.

Совет:
В современных платах значения прерываний, буферов ввода/вывода и DMA задаются либо программным путем, либо программой SETUP, либо автоматически определяются операционной системой. В платах старых образцов некоторые установки следует выполнять с помощью перемычек или переключателей, расположенных на самой плате. Поэтому до установки платы в машину, определите метод конфигурирования платы: программный или аппаратный.

Если вам знакомы эти термины, то можете пропустить несколько следующих страниц. На них я собираюсь объяснить, что означают установки и зачем они нужны.

Совет:
Если вы используете только платы PCI, а ваша операционная система поддерживает стандарт Plug-and-Play (подключи-и-работай), то можно не беспокоиться о проблемах конфигурирования, рассматриваемых далее в этой главе. Платы PCI поддерживают стандарт Plug-andPlay, т. е. конфигурируются автоматически. Они используют те же ресурсы, которые здесь описываются, - просто вам не придется конфигурировать их вручную.

Привлечение внимания процессора - запросы прерывания

Сетевая плата предназначена для передачи и приема информации. И в то же время, она ничего не может с ней сделать. Все "перемалывание" чисел, передача их в основную память или манипулирование данными должно осуществляться процессором.
Это, конечно, прекрасно, однако все остальные устройства внутри компьютера, а также подсоединенные к нему — клавиатура, жесткий диск, видеоплата, звуковая плата и т. п. — тоже конкурируют за доступ к процессору. Периферийные устройства могут получить доступ к CPU одним из двух методов. Первый: каждые несколько миллисекунд (тысячных долей секунды) процессор может обратиться к сетевой плате и спросить: "Прошу прощения, мистер NIC, нет ли у вас информации, которую необходимо обработать?". Этот метод периодического "обращения" к плате, установленной в системе, называется опросом (polling). Его работа показана на рис. 4.3.
Так все это работает, и, действительно, некоторые устаревшие сетевые платы требуют, чтобы процессор опросил их для определения их статуса. Недостаток метода заключается в том, что такой процесс крайне неэффективен. Если бы процессор работал подобным образом, ему приходилось бы постоянно прекращать обработку данных, только для того, чтобы запросить у сетевой платы информацию, которой у нее может и не быть. Это привело бы к значительной бесполезной трате времени работы процессора, особенно, если в компьютере установлено множество других устройств, которые также необходимо опросить. Если в компьютере используется только метод опроса, может случиться так, что процессор фактически будет затрачивать все свое время на переходы между устройствами и выполнение запросов: "У вас есть что-нибудь для меня?". Это не оставит, ему времени на обработку Данных, для чего, собственно говоря, и предназначен процессор.

В современных системах чаще используют альтернативный метод: прерывание (interrupt).
Если у сетевой платы есть пакеты, которые ожидают обработки (рис. 4. 4), то они сохраняются в памяти сетевой платы. Когда пакет прибывает в "зал ожидания", т. e. в память сетевой платы, она подходит к процессору, хлопает его по плечу и говорит: "Прошу прощения, мистер процессор, но в памяти мистера NIC есть некоторая информация. Когда вы улучите момент, прервите, пожалуйста, вашу работу и обработайте эту информацию или передайте ее в основную память". То, что делает сейчас сетевая плата, называют запросом прерывания (interrupt request).
Получив запрос, процессор продолжает работать. Однако, улучив момент, он обращается к плате и начинает обработку информации или перемещает её из буфера платы в основную память.
Вам трудно представить все это? Тогда вообразите, что процессор — это "главный администратор" вашего компьютера, а каждое периферийное устройство — начальник отдела. Дверь кабинета "CPU" закрыта, однако на его столе стоит множество разноцветных телефонов, так что он может отвечать по каждому отдельно. Телефон — линия горячей связи с соответствующим отделом. Скажем, если звонит розовый телефон, значит поступил запрос от жесткого диска поместить в основную память данные из кластера 492. Звонит зеленый, — клавиатура настаивает на регистрации нажатых клавиш и ее буфере прежде, чем они будут потеряны. А если звонит черный телефон... ну, в общем, вам понятна идея. Каждое устройство использует собственную горячую линию связи с процессором, с тем чтобы попросить его сделать что-нибудь для себя. Когда звонит какой-либо конкретный телефон, процессор может немедленно определить, кому необходима помощь, а если он уже работает с каким-то другим запросом, то может назначить ему приоритет. При этом процессор ориентируется на важность запросов, ассоциированных с данным телефоном.

Единственный недостаток метода — ограниченность числа телефонов. Действительно, в большинстве случаев каждому периферийному устройству нужна собственная телефонная линия — совместное их использование невозможно. Некоторые же устройства вообще могут использовать только один телефон из нескольких имеющихся. Так, ваша сетевая плата может работать только с голубым и оранжевым телефонами, а с пурпурным и черным — нет. Таким образом, вы должны назначить по одному телефону каждому устройству, которое необходимо использовать, причем эта линия должна быть одной из тех, с которыми может работать каждое конкретное устройство. Если вас когда-либо удивляло, почему многие сетевые администраторы преждевременно седеют или лысеют — это одна из причин.
Как все это работает? Аналогия с телефонами недалека от истины. В системной плате предусмотрены печатные проводники, которые работают как линии связи различных плат (установленных в слоты на шинах) с процессорами. Некоторые из этих линий называют линиями запросов прерывания (IRQ). Каждый слот системной платы содержит 16 линий IRQ, пронумерованных от 0 до 15.
Вообще говоря, каждому сетевому устройству, которому необходимы прерывания, следует назначить особую линию IRQ. Почему? Вернемся к аналогии с телефонами и предположим, что на столе у процессора стоят два красных телефона. Если они зазвонят одновременно, процессор не сможет установить, какому устройству следует уделить внимание. В таком случае одно из устройств, а возможно и оба, просто не будут работать. Когда звонит красный телефон, процессор не в состоянии установить, какое именно устройство обращается к нему. Поэтому он может игнорировать обе линии, а иногда отвечать только по одной из них. Так, если назначить одинаковое IRQ сетевой плате и порту LPT2, иногда не будет работать плата, иногда — порт, а иногда и оба сразу.
Как определить, какие прерывания может использовать ваша сетевая плата, и какие из них свободны? Ответ на первый вопрос вы найдете в документации на сетевую плату.
В ней обязательно должен быть список поддерживаемых прерываний. Большинство сетевых плат поддерживают два или три прерывания, одним их которых, вероятно, будет IRQ 5.

Совет:
Если прерывания, поддерживаемые вашей платой, недоступны, а доступны другие прерывания, попробуйте найти в вашей системе устройство, которое можно переключить на свободное прерывание. Предположим, например, что сетевая плата поддерживает IRQ 5 и 10, однако свободно только IRQ 7. Если же звуковая плата использует IRQ 5, но может поддерживать и IRQ 7, то переключите вашу звуковую плату на прерывание 7.

На второй вопрос можно ответить двояко. Один из методов заключается в тщательном документировании каждого прерывания, области буфера ввода/вывода (I/O buffer area), а также используемых каналов DMA. Запишите их на листе бумаги и храните этот лист в конверте, приклеенном к корпусу компьютера. Этот метод имеет два преимущества. Во-первых, вы всегда можете узнать конфигурацию компьютера, даже если он выключен. Во-вторых, можно с одного взгляда просмотреть всю конфигурацию компьютера, что не всегда возможно при работе с диагностическими программами. Единственный недостаток такого метода — необходимость постоянного обновления информации. Если этого не делать, все погибнет.
Ну, вообще-то, не совсем погибнет. Хотя исторически сложилось так, что диагностические программы не всегда оказываются на высоте, когда необходимо корректно идентифицировать ресурсы (в том числе IRQ), используемые каждым устройством, в Windows 95 ситуация изменилась. На вкладке Устройства (Device Manager) апплета Система (System) в Панели управления Windows 95/98, указываются ресурсы, используемые каждым устройством. Как показано на рис. 4. 5, достаточно выбрать устройство, о котором вам необходимо получить информацию, а затем щелкнуть на кнопке Свойства (Properties). На экране появится окно, содержащее значения параметров устройства. Выберите вкладку Ресурсы (Resources) и просмотрите список системных ресурсов, используемых конкретной сетевой платой (рис. 4.6).
На вкладке Устройства (Device Manager) можно не только увидеть текущую конфигурацию системы, но и провести ее реконфигурацию. Для изменения используемого устройством прерывания, щелкните на кнопке Изменить настройку (Change Setting) вкладки Ресурсы (Resources) окна свойств и введите новый номер прерывания из соответствующего диапазона. Если вы выберете номер прерывания, не поддерживаемый данным устройством, Windows 95 укажет вам на это и предложит иное значение. Если же выбранное прерывание поддерживается, но уже используется иным устройством, система предупредит вас о конфликте (рис. 4. 7). Если же вы допускаете конфликт устройств, Device Manager отобразит конфликтное устройство в списке прочих устройств, отметив его восклицательным знаком (рис. 4. 8).
Восклицательный знак возле значка устройства в списке установленных устройств не обязательно означает конфликт ресурсов. Он может извещать об иных проблемах устройства, которые не позволяют ему нормально работать.

Предупреждение:
Пользователи Microsoft Windows могут использовать основанную на DOS программу MSD, как инструмент получения системной информации. Ее можно использовать для вывода информации о конфигурации системы. Однако чтобы эта информация была точна, программу следует запускать из DOS (но не из окна DOS в Windows) Обратите внимание: в предыдущем примере сетевой адаптер использует прерывание 11. После запуска на том же компьютере MSD, он сообщил, что IRQ 11 свободно и доступно для использования. Таким образом, вас ждет кошмарная работа по поиску неисправностей.

Куда направляются данные?
Выбор базовых адресов ввода/вывода

Теперь вы знаете, каким образом сетевая плата привлекает внимание процессора, когда у нее есть информация, которую следует передать. Где же хранится эта информация?
И (вопрос, связанный с предыдущим) где хранятся инструкции, которые процессор передаёт периферийным устройствам?
Ответ на оба вопроса лежит в адресах ввода/вывода. По существу, это просто адреса почтовых ящиков, которые процессор может использовать как для размещения данных, ожидающих обработки, так и инструкций устройству, которому принадлежит адрес (диапазон адресов ввода/вывода). Каждое устройство должно иметь собственный адрес, ввода/вывода, для того чтобы процессор передавал соответствующие инструкции каждому устройству. Это позволяет избежать путаницы, при которой, например, процессор "приказал" бы сетевой плате воспроизвести звук. Поэтому, для избежания конфликтов, необходимо либо указать устройству, какие адреса ввода/вывода оно должно использовать, либо позволить системе самой себя сконфигурировать. Базовым адресом ввода/вывода называют тот, который задает нижнюю границу диапазона адресов ввода/вывода.

Примечание:
Как правило, вам достаточно задать базовый адрес ввода/вывода, а остальные устанавливаются автоматически. Однако, некоторые платы требуют полного задания диапазона, позволяя выбрать один из поддерживаемых платой.

Зачем нужны буквы в адресах памяти

Адреса ввода/вывода и памяти компьютера записывают в шестнадцатеричном формате, подобном хорошо знакомой десятичной системе счисления. Это делают по различным причинам, но в основном потому, что компьютеры работают в двоичной системе счисления, а двоичные числа слишком длинны и громоздки для людей. Если же вы похожи на одну мою знакомую, которая может шутя переводить автомобильные номера в двоичную систему счисления, я снимаю перед вами шляпу. Если бы она, засмеявшись, не представила этому простое объяснение, я, вероятно, попала бы в аварию, начав преобразовывать числа во время поездки на автомобиле.
Чтобы облегчить работу с двоичными числами, программисты сначала использовали восьмеричную систему счисления, а сейчас – шестнадцатеричную. Она позволяет выразить числа в более удобной форме. Почему не используются десятичные числа? Главным образом из-за использования байтов (1 байт равен 8 битам). Десятичная система счисления не слишком удобна для работы с байтами, так как для этого предпочтительней такая система счисления, в которой проще выполнять деление на 4.
Однако в десятичной системе счисления тем более нет шестнадцати различных символов, необходимых для выражения шестнадцатеричных чисел. Поэтому для их выражения используют буквы алфавита – отсутствие шести цифр возмещают буквы A-F. Следовательно, вплоть до числа 9 шестнадцатеричные и десятичные числа одинаковы. Начиная с числа 10, они различаются. В шестнадцатеричной системе числу 10 соответствует буква А, 11-В, 12-С и т. д., вплоть до числа 16, когда запас букв кончается. 16 в десятичной системе соответствует 10 в шестнадцатеричной, 17-11 в шестнадцатеричной и т. д.
Шестнадцатеричные числа часто записывают с буквой «h» в нижнем регистре в конце, так что вы можете распознать шестнадцатеричное число, например, 330h. Буква «h» в число не входит.
При желании вы сможете научиться вручную преобразовывать числа из одной системы в другую, но для большинства из нас простейший способ конвертирования шестнадцатеричных чисел в десятичные заключается в запуске калькулятора Windows в режиме Научный (Scientific). Убедитесь, что калькулятор установлен на отображение исходной числовой системы (например, шестнадцатеричной). Затем введите число и переключите текущую систему счисления на ту, в которую желаете преобразовать число.
Это не столь головоломная задача, как конвертирование в уме, но вы же не обязаны сообщать всем, что используете калькулятор Windows!

Получение информации CPU - прямой доступ к памяти

Мы уже обсудили, каким образом сетевая плата привлекает внимание процессора, чтобы сообщить о наличии у нее информационного пакета. И, однако, даже если процессор узнал об этом, каким же образом информация фактически передается из процессора в оперативную память?
В первых персональных компьютерах, появившихся в начале восьмидесятых годов, передача данных от сетевой платы в оперативную память выполнялась процессором, чему последний отнюдь не радовался. Почему? Да потому, что когда информация передавалась из платы компьютера в основную память, она проходила через процессор по одному биту за раз (рис. 4.9). Этот метод передачи информации известен как программируемый ввод/вывод (PIO). Метод PIO значительно загружает процессор, а это означает, что у процессора остается меньше времени на выполнение прочей работы.
В середине восьмидесятых годов появилась новая БИС, известная как микросхема контроллера прямого доступа к памяти (DMA), реализующая в компьютерах принципиально новый способ передачи данных. Как мы уже знаем, когда на компьютер поступает пакет, он направляется в память сетевой платы. В этот же момент сетевая плата направляет в процессор запрос прерывания, в котором просит сделать что-нибудь с только что принятыми данными. С установленной на системной плате микросхемой контроллера DMA процессору более не приходится прекращать работу и самому заниматься передачей данных. Вместо этого он может приостановить на мгновение вычисления какой-нибудь огромной электронной таблицы и сказать микросхеме контроллера DMA на материнской плате: "Пожалуйста, передайте эту нужную мне информацию и дайте знать, когда закончите". Реальная ценность прямого доступа к памяти заключается в том, что современные микросхемы контроллеров DMA передают информацию в любом направлении, не отвлекая процессор от вычислений.

Когда микросхема контроллера DMA заканчивает передавать информацию, она сообщает процессору о выполнении задачи. Как показано на рис. 4. 10, установка микросхем контроллера DMA на системной плате повышает эффективность обработки и передачи информации в любой компьютерной системе.
На современные системные платы устанавливают две микросхемы DMA. Каждая микросхема контроллера DMA поддерживает четыре канала DMA (выделенных путей передачи информации). Таким образом, на материнской плате предусмотрены восемь каналов DMA, пронумерованных от 0 до 7.
Как и в случае с линиями IRQ, чтобы избежать заторов в передаче данных, и сбоев системы, каждое устройство, применяющее DMA, должно использовать уникальный канал DMA. К сожалению, нет программных утилит, позволяющих получить корректные данные. Лучший способ отслеживания реальной загрузки каналов DMA — документирование параметров ваших плат, выполненное при инсталляции. Поскольку большинство плат особенно новейших образцов - не используют каналы DMA, эта задача не столь сложна.

DMA используют не только на системных платах. Некоторые сетевые ты специального типа, называемые сетевыми интерфейсными платами с управлением шиной (bus-mastered network interface card) — фактически, это может быть любая плата — тоже имеют в своем составе микросхемы DMA. Почему их называют платами с "управлением шиной"?
Слоты, в которые Вставляют видео-, звуковую, SCSI-плату и т. д. называют слотами расширения (expansion slots) иди слотами шины (bus slots). Плата же, установленная в слот шины, должна контролировать, т. е. управлять передачей данных по собственному каналу DMA. Отсюда и произошло выражение "управление шиной" (bus-mastered). Платой с управлением шиной (bus-mastered card) можно назвать любую плату, на которой установлена микросхема DMA. В настоящее время можно приобрести сетевые платы, платы контроллеров жёстких дисков и платы SCSI, в которых предусмотрено управление шиной.
В 1998 г фирма IBM выпустила несколько образцов плат с управлением шиной.
Фирма уверяла, что размещение микросхем DMA на плате ускоряет как работу платы, так и передачу по каналу DMA в большей степени, чем при размещении двух микросхем DMA на системной плате. Как оказалось, фирма IBM была права. Используя собственные микросхемы DMA, сетевая плата с управлением шиной (ведущая плата) может связываться с оперативной памятью системы без вмешательства процессора (рис. 4. 11).

Смотрите также

Концентраторы и подключение устройств
Термин "концентратор" является общим названием устройств, связывающих сетевые компоненты друг с другом. Этими устройствами может Выть любое оборудование: от простых коммутационных панелей ...

Серебряная нить, шелковая связь - сетевые кабели
Вероятно, сэр Вальтер Скотт ничего не знал о сетевых кабелях, когда писал об этих "связях", но, в принципе, сказано верно: действительно, сетевые кабели почти невидимы, но они являются вес ...

Сквозные протоколы и шлюзы
Интернет — это единая глобальная структура, объединяющая на сегодня около 13 000 различных локальных сетей, не считая отдельных пользователей. Раньше все сети, входившие в состав Интернета, испо ...