Настройка параметров ввода-вывода

Шины

Прямой доступ к памяти (DMA)

Независимо от того, отображаются ли регистры или буферы ввода-вывода на память или нет, центральному процессору необходимо как-то адресоваться к контроллерам устройств для обмена данными с ними. Центральный процессор может запрашивать данные от контроллера ввода-вывода по одному байту, но подобная организация обмена данными крайне неэффективна, так как расходует огромное количество процессорного времени. Поэтому на практике часто применяется другая схема, называемая прямым доступом к памяти (DMA, direct memory access).

DMA используется не во всех компьютерах. Главный аргумент против использования DMA состоит в том, что центральный процессор обычно значительно превосходит DMA-контроллер по скорости и может выполнить ту же работу значительно быстрее (если только скорость ограничена не быстродействием устройства ввода-вывода). При отсутствии другой работы у центрального процессора заставлять быстрый центральный процессор ждать, пока медленный контроллер DMA выполнит свою работу, бессмысленно. Кроме того, компьютер без контроллера DMA, с центральным процессором, выполняющим всю работу программно, оказывается дешевле, что крайне важно в производстве компьютеров нижней ценовой категории (например, встроенных).

В системе имеется множество шин как для ускорения общения с устройствами ввода-вывода, так и для пересылки данных между процессором ипамятью. Вследствие этой эволюции сейчас система Pentium выглядит примерно так, как изображено на рис. 3.

У этой системы восемь шин (шина кэша, локальная шина, шина памяти, PCI, SCSI, USB, IDE иISA), каждая со своей скоростью передачи данных исвоими функциями. В операционной системе для управления компьютером и его конфигурации должны находиться сведения обо всех этих шинах.

Две основные шины — это ISA (Industry Standard Architecture — промышленная стандартная архитектуpa), оригинальная шина компьютера IBM PC, и ее преемник, шина PCI (Peripheral Component Interconnect — интерфейс периферийных устройств). Шина ISA впервые появилась на компьютерах IBM PC/AT, она работает на частоте 8,33 МГц и может передавать два байта за такт с максимальной скоростью 16,67 Мбайт/с. Она включена в систему для обратной совместимости со старыми медленными платами ввода-вывода. Шина PCI была создана компанией Intel в качестве преемницы шины ISA. Она может работать на частоте 66 МГц и передавать сразу по 8 байт за такт со скоростью 528 Мбайт/с. Сейчас большинство высокоскоростных устройств ввода-вывода используют шины PCI. Даже некоторые компьютеры с процессорами, отличными от Intel, пользуются шиной PCI, поскольку с ней совместимо очень много плат ввода-вывода.

При такой конфигурации центральный процессор по локальной шине передает данные микросхеме PCI-моста, который, в свою очередь, обращается к памяти по выделенной шине памяти, часто работающей на частоте 100 МГц. Системы Pentium имеют кэш первого уровня (кэш L1), встроенный в процессор, и намного больший внешний кэш второго уровня (кэш L2), подключенный к процессору отдельной шиной кэша.

Кроме того, в систему входят три специализированные шины: IDE, USB и SCSI. Шина IDE служит для присоединения периферийных устройств к системе — дисков и устройств для чтения компакт-дисков (CD-ROM). IDE-шина — это потомок интерфейса контроллера диска на PC/AT, и сейчас она входит в стандартный комплект всех систем, основанных на процессорах Pentium.

Шина USB (Universal Serial Bus — универсальная последовательная шина) была придумана для того, чтобы присоединить к компьютеру все медленные устройства ввода-вывода, такие как клавиатура и мышь. Она использует маленький четырехпроводной разъем, причем два провода поставляют электропитание к USB-устройствам. USB — это централизованная шина, по которой главное устройство каждую миллисекунду опрашивает устройства ввода-вывода, чтобы узнать, есть ли у них данные. Она может управлять загрузкой данных со скоростью 1,5 Мбайт/с. Все USB-устройства используют один драйвер, избавляя нас тем самым от необходимости установки новых драйверов для каждого нового USB-устройства. Поэтому USB-устройства можно присоединять к системе без ее перезагрузки.

SCSI (Small Computer System Interface — системный интерфейс малых компьютеров) — это высокопроизводительная шина, применяемая для быстрых дисков, сканеров и других устройств, нуждающихся в значительной пропускной способности. Ее производительность достигает 160 Мбайт/с. Шина SCSI используется в системах Macintosh с момента их появления, кроме того, она популярна в UNIX-системах и некоторых системах на базе процессоров Intel.

Шина IEEE 1394. Иногда ее также называют FireWire, хотя, строго говоря, FireWire — это название, данное компанией Apple собственной реализации шины 1394. Как и USB, IEEE 1394 является бит-последовательной шиной, но она поддерживает пакетную передачу данных со скоростью, достигающей 50 Мбайт/с. Это ее свойство позволяет подключать к компьютеру портативные цифровые видеокамеры и томуподобные мультимедийные устройства. В отличие от USB шина IEEE 1394 не имеет центрального контроллера. Шины SCSI и IEEE 1394 конкурируют с разработанной более быстрой версией шины USB.

Операционная система должна уметь распознавать аппаратные составляющие и уметь их настраивать. Это требование привело компании Intel и Microsoft к разработке системы персонального компьютера, называемой plug and play («включи и работай»). В основе этой системы лежала концепция, близкая к той, что была впервые реализована компанией Apple Macintosh. До появления plug and play каждая плата ввода-вывода имела фиксированные адреса регистров ввода-вывода и уровень запроса прерывания. Например, клавиатура использовала прерывание 1 и адреса в диапазоне от 0x60 до 0x64; контроллер гибкого диска использовал прерывание б и адреса от 0x3F0 до 0x3F7; принтер пользовался прерыванием 7 и адресами от 0x378 до 0х37А и т. д.

Все в этой схеме было хорошо до тех пор, пока пользователь не покупал звуковую карту и модем, и оказывалось, что оба устройства случайно использовали, скажем, прерывание 4. В таком случае они конфликтовали и не могли работать вместе. Возможным решением было встроить набор DIP-переключателей или джамперов (jumper - перемычка) в каждую плату и объяснить пользователю необходимость настройки каждой платы таким образом, чтобы адреса портов и номера прерываний различных устройств не конфликтовали друг с другом. В середине 90-х, начале 2000-х годов п одростки, посвятившие свою жизнь изучению тонкостей аппаратуры персонального компьютера, иногда могли сделать это без ошибок. К сожалению, кроме них это практически никому не удавалось, что приводило к полному хаосу.

Стандарт plug and play позволяет системе автоматически собирать информацию об устройствах ввода-вывода, централизованно назначать уровни прерывания и адреса ввода-вывода, а затем сообщать каждой плате эту информацию - вот краткое описание процесса. Такая система работает на компьютерах Pentium. Каждый компьютер с процессором Pentium содержит материнскую плату (в США благодаря успехам борьбы за политическую корректность эту плату теперь решено называть родительской). На материнской плате находится BIOS (Basic Input Output System - базовая система ввода-вывода). BIOS содержит программы ввода-вывода низкого уровня, включая процедуры для чтения с клавиатуры, вывода информации на экран, ввода-вывода данных с диска и т. д. В настоящее время эти функции хранятся во флэш-ОЗУ, которая в обычных условиях является неизменяемой, но, если в BIOS нашлись какие-либо ошибки, ее может изменить операционная система.

При начальной загрузке компьютера стартует программа BIOS. Сначала она проверяет количество установленной в системе оперативной памяти, подключены ли клавиатура и другие основные устройства и корректно ли они отзываются. BIOS начинает проверку с шин ISA и PCI, чтобы определить все устройства, присоединенные к ним.

Некоторые из этих устройств являются традиционными, их также называют унаследованными (legacy), то есть созданными до изобретения plug and play. Они имеют фиксированные уровни прерывания и адрес порта ввода-вывода (например, заданные с помощью переключателей или перемычек на плате ввода-вывода без возможности их изменения операционной системой). Эти устройства регистрируются. Устройства plug and play тоже регистрируются. Если присутствующие устройства отличаются от тех, что были во время последней загрузки, конфигурируются новые устройства.

Затем BIOS определяет устройство, с которого будет происходить загрузка, по очереди пробуя каждое из списка, хранящегося в CMOS-памяти. Пользователь может изменить этот список, войдя в конфигурационную программу BIOS сразу после загрузки. Обычно сначала делается попытка загрузиться с гибкого диска. Если это не удается, пробуется компакт-диск. Если в компьютере отсутствуют и гибкий диск, и компакт-диск, система загружается с жесткого диска. С загрузочного устройства считывается в память и выполняется первый сектор. В этом секторе находится программа, обычно проверяющая таблицу разделов в конце загрузочного сектора, чтобы определить, который из разделов является активным. Затем из того же раздела читается вторичный загрузчик. Он считывает из активного раздела операционную систему и запускает ее.

После этого операционная система опрашивает BIOS, чтобы получить информацию о конфигурации компьютера. Для каждого устройства она проверяет наличие драйвера. Если драйвер отсутствует, операционная система просит пользователя вставить гибкий диск или компакт-диск, содержащий драйвер (эти диски поставляются производителем устройства).

Если же все драйверы на месте, операционная система загружает их в ядро. Затем она инициализирует таблицы драйверов, создает все необходимые фоновые процессы и запускает программу ввода пароля или графический интерфейс на каждом терминале. По крайней мере, предполагается, что операционная система должна работать таким образом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: