Какие аппаратные ресурсы компьютера подлежат распределению при работе приложений
Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандартным распределением всех его ресурсов. Соблюдать правила, установленные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики дополнительного оборудования, и даже те пользователи, которые просто хотят установить в компьютер новую плату расширения. В случае малейшего нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя.
Под распределением ресурсов в данном случае понимается:
· распределение адресного пространства системной памяти, отведение отдельных областей памяти под особые цели;
· распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера;
· распределение каналов запроса прерываний, в том числе для системных устройств;
· распределение каналов запроса прямого доступа к памяти.
А теперь рассмотрим принятое в персональных компьютерах стандартное распределение ресурсов.
Подробное распределение адресов памяти описано в табл. 1.
Из таблицы видно, что для памяти, входящей в состав устройств ввода/вывода, отводится зона всего лишь в 92 Кбайта (адреса С8000…DFFFF). В этом пространстве может располагаться как оперативная память, так и постоянная память устройств ввода/вывода. Иногда память устройств ввода/вывода захватывает также и зону адресов С0000…С7FFF.
В табл. 1 представлено стандартное распределение номеров аппаратных прерываний и соответствующих им номеров в таблице векторов прерываний (INT).
Таблица 1. Распределение адресов памяти (адреса даны в шестнадцатеричном коде) | |
Адреса памяти | Назначение |
000000. 0003FF | Таблица векторов прерываний |
000000. 09FFFF | Память DOS и пользовательских программ |
0А0000. 0АFFFF | Память дисплея EGA или VGA |
0B0000. 0B7FFF | Память монохромного дисплея MDA |
0B8000. 0BFFFF | Память дисплея CGA |
0C0000. 0C3FFF | ПЗУ BIOS для EGA/VGA |
0C8000. 0DFFFF | Память устройств ввода/вывода |
0E0000. 0EFFFF | Резерв ПЗУ ВIOS на материнской плате |
0F0000. 0FFFFF | ПЗУ BIOS на материнской плате |
Как видно из таблицы, большинство входов IRQ заняты системными ресурсами компьютера. Свободны (зарезервированы) только четыре канала: 10, 11, 12, 15, причем они находятся на 16-разрядной части разъема магистрали ISA. Правда, иногда в компьютерах применяется только один параллельный порт или (гораздо реже) только один последовательный порт, и тогда свободными оказываются еще IRQ3 и IRQ5. Сигналы IRQ0. IRQ2, IRQ8 и IRQ13 задействованы на системной плате и недоступны платам расширения.
Таблица 2. Распределение каналов аппаратных прерываний | ||
Номер прерывания IRQ | INT | Назначение |
Программируемый таймер | ||
Контроллер клавиатуры | ||
0A | Каскадирование второго контроллера | |
Часы реального времени (только АТ) | ||
Программно переадресовано на IRQ2 | ||
Резерв | ||
Резерв | ||
Резерв | ||
Математический сопроцессор | ||
Контроллер жесткого диска | ||
Резерв | ||
0B | Последовательный порт COM2 | |
0C | Последовательный порт COM1 | |
0D | Параллельный порт LPT2 | |
0E | Контроллер гибкого диска | |
0F | Параллельный порт LPT1 |
Рис. 1.3. Включение двух контроллеров прерываний
Стандартное распределение каналов запроса прямого доступа к памяти представлено в табл. 3.
Таблица 3. Стандартное распределение каналов прямого доступа к памяти | |
Номер канала ПДП | Назначение |
Резервный | |
Контроллер бисинхронного обмена SDLC | |
Накопитель на гибком диске | |
Резервный | |
Каскадирование первого контроллера | |
Резервный | |
Резервный | |
Резервный |
Отметим также, что в некоторых компьютерах предусмотрена возможность так называемого "горячего подключения" внешних устройств (то есть без выключения питания компьютера). Режим PnP должен поддерживать и эту возможность, распределяя ресурсы не только при начальной загрузке, но и по мере подключения новых устройств.
3. Дополнительные интерфейсы персонального компьютера
В этой лекции рассказывается о некоторых часто используемых интерфейсах персонального компьютера, об их особенностях и протоколах обмена информацией по этим интерфейсам.
Интерфейс Centronics
Основным назначением интерфейса Centronics (отечественный аналог — стандарт ИРПР-М) является подключение к компьютеру принтеров различных типов (из-за чего его называют принтерным портом). Поэтому распределение контактов разъема, назначение сигналов, программные средства управления интерфейсом ориентированы именно на такое применение. В то же время, с помощью данного интерфейса можно подключать к компьютеру и многие другие стандартные внешние устройства (например, сканеры, дисководы и т.д.), а также нестандартные внешние устройства.
Назначение 36 контактов разъема Centronics и соответствующих им контактов разъема принтера приведено в табл. 8.1. В таблице символ I обозначает входной сигнал компьютера, а O — выходной сигнал.
Сигналы интерфейса Centronics имеют следующее назначение:
· STROBE — сигнал стробирования данных. Данные действительны как по переднему, так и по заднему фронту этого сигнала. Сигнал говорит приемнику (принтеру) о том, что можно принимать данные с шины данных.
· -ACK — сигнал подтверждения принятия данных и готовности приемника (принтера) принять следующие данные. То есть реализуется асинхронный обмен.
· BUSY — сигнал занятости принтера обработкой полученных данных и неготовности принять следующую порцию данных. Активен также при переходе принтера в состояние off-line, при ошибке и при отсутствии бумаги. Компьютер начинает новый цикл передачи только после снятия -ACK и после снятия BUSY.
· -AUTO FD — сигнал автоматического перевода строки. Получив его, принтер переводит каретку на следующую строку текста. Остальные сигналы не являются обязательными.
· PE — сигнал конца бумаги. Получив его, компьютер переходит в режим ожидания. Если в принтер вставить лист бумаги, то сигнал снимается.
· SLCT — сигнал готовности приемника. С его помощью принтер сообщает о том, что он выбран и готов к работе. У многих принтеров имеет постоянно высокий уровень.
· -SLCT IN — сигнал, посредством которого компьютер сообщает принтеру о том, что тот выбран, и последует передача данных.
· -ERROR — сигнал ошибки принтера. Активен при внутренней ошибке, переходе принтера в состояние off-line или при отсутствии бумаги. Как видим, здесь многие сигналы дублируют друг друга.
· -INIT — сигнал инициализации (сброса) принтера. Его длительность составляет не менее 2,5 мкс. По нему происходит очистка буфера печати.
Таблица 4. Назначение контактов разъемов Centronics | |||
Контакт разъема компьютера | Сигнал | I/O | Контакт разъема принтера |
-STROBE | O | ||
D0 | O | ||
D1 | O | ||
D2 | O | ||
D3 | O | ||
D4 | O | ||
D5 | O | ||
D6 | O | ||
D7 | O | ||
-ACK | I | ||
BUSY | I | ||
PE | I | ||
SLCT | I | ||
-AUTO FD | O | ||
-ERROR | I | ||
-INIT | O | ||
-SLCT IN | O | ||
18. 25 | GND | - | 16, 17, 19. 30, 33 |
Временная диаграмма цикла передачи данных представлена на рис. 1.4. Перед началом цикла передачи данных компьютер должен убедиться, что сняты сигналы BUSY и -ACK. После этого выставляются данные, формируется строб, снимается строб, и снимаются данные. Принтер должен успеть принять данные с выбранным темпом. При получении строба принтер формирует сигнал BUSY, а после окончания обработки данных выставляет сигнал -ACK, снимает BUSY и снимает -ACK. Затем может начинаться новый цикл.
Максимальная длина соединительного кабеля по стандарту — 1,8 м. Максимальная скорость обмена — 100 Кбайт/с.
Формирование и прием сигналов интерфейса Centronics производится путем записи и чтения выделенных для него портов ввода/вывода. В компьютере может использоваться три порта Centronics, обозначаемых LPT1 (базовый адрес 378), LPT2 (базовый адрес 278) и LPT3 (базовый адрес 3BC).
Базовый адрес порта используется для передачи принтеру байта данных. Установленные на линиях данные можно считать из этого же порта.
Следующий адрес (базовый + 1) служит для чтения битов состояния принтера (бит 3 соответствует сигналу -ERROR, бит 4 — сигналу SLCT, бит 5 — сигналу PE, бит 6 — сигналу -ACK, бит 7 — сигналу BUSY ). Последний используемый адрес (базовый + 2) применяется для записи битов управления принтером (бит 0 соответствует сигналу -STROBE, бит 1 — сигналу -AUTO FD, бит 2 — сигналу -INIT, бит 3 — сигналу -SLCT IN и, наконец, бит 4, равный единице, разрешает прерывание от принтера).
Рис. 1.4. Временные диаграммы цикла передачи данных в Centronics (все временные интервалы указаны в наносекундах)
При сопряжении с компьютером через параллельный порт LPT какого-нибудь другого устройства (не принтера) назначение сигналов и порядок обмена могут быть другими, но тогда необходимы специальные программные драйверы, реализующие выбранные протоколы обмена. При разработке нестандартных внешних устройств, сопрягаемых с компьютером через Centronics, можно самостоятельно выбирать как назначение сигналов, так и протокол обмена.
Интерфейс RS-232C
Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS-232C по сравнению с Centronics являются возможность передачи на большие расстояния (по стандарту длина соединительного кабеля может доходить до 15 метров) и гораздо более простой кабель (с меньшим количеством проводов). В то же время работать с RS-232C несколько сложнее. Данные в интерфейсе RS-232C передаются в последовательном коде (бит за битом) побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону по разным проводам (дуплексный режим). Скорость передачи — до 14,4 Кбайт/с (115,2 Кбит/с).
Компьютер имеет 25-контактный разъем (типа DB25P) или 9-контактный разъем (типа DB9P) для подключения кабеля интерфейса RS-232C. Назначение контактов разъема приведено в табл. 5 (в таблице применены обозначения: I — входной сигнал компьютера, O — выходной сигнал компьютера).
Таблица 5. Назначение контактов разъемов интерфейса RS-232C | |||
Сигнал | Контакт DB25P | Контакт DB9P | I/O |
FG | - | - | |
-T x D | O | ||
-R x D | I | ||
RTS | O | ||
CTS | I | ||
DSR | I | ||
SG | - | ||
DCD | I | ||
DTR | O | ||
RI | I |
Чаще всего используется трех- или четырехпроводная связь (для двунаправленной передачи). Схема соединения двух устройств при четырехпроводной линии связи показана на рис. 1.5.
Рис. 1.5. Схема четырехпроводной линии связи для RS-232C
Для двухпроводной линии связи в случае передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.
Формат передаваемых данных показан на рис. 8.3. Собственно данные (содержащие 5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми (допустимое расхождение — не более 10%). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.
Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандартным распределением всех его ресурсов. Соблюдать правила, установленные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики дополнительного оборудования, и даже те пользователи, которые просто хотят установить в компьютер новую плату расширения. В случае малейшего нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя.
Под распределением ресурсов в данном случае понимается:
- распределение адресного пространства системной памяти, отведение отдельных областей памяти под особые цели;
- распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера;
- распределение каналов запроса прерываний, в том числе для системных устройств;
- распределение каналов запроса прямого доступа к памяти.
Понятно, что если программист захочет использовать те адреса памяти, которые отведены для системных нужд (например, для памяти дисплея или системных таблиц), то работоспособность компьютера нарушится. Если выполняемая программа попытается записать какую-либо информацию по тем адресам системной памяти, которые стандартом отведены под постоянную память (ROM), то записываемая информация будет просто потеряна, и программа работать не будет. Если писать информацию по тем адресам памяти, которые отведены под видеопамять, то будет искажаться изображение на экране видеомонитора.
Если вставляемая в компьютер плата расширения использует неправильные (занятые другими устройствами) адреса в адресном пространстве памяти, то ее работа будет невозможна, и не исключен даже выход из строя аппаратуры компьютера (так как при циклах чтения из перекрывающихся адресов памяти два устройства будут выставлять свои данные на шину одновременно, что может стать причиной выгорания буферных микросхем).
Если разработчик платы расширения с устройством ввода/вывода или пользователь, подключающий новую плату расширения, установят адрес своего устройства так, что он будет совпадать с адресом системного устройства или адресом другой платы расширения, то возможны конфликты при обращении к данному устройству. При этом в цикле записи информация будет записываться не в одно, а в два или более устройств, а в цикле чтения на шину данных будут одновременно выставлять свои данные не одно, а несколько устройств. То есть в цикле записи возможно нарушение установленных режимов работы системных устройств (например, контроллера прерываний или контроллера ПДП) или неправильная работа новой платы расширения, а в цикле чтения — даже выход из строя одного из устройств, выставляющих свои данные на магистраль одновременно.
Если при подключении к компьютеру новой платы расширения установить для нее неправильный канал запроса прерывания, это может привести к тому, что данное прерывание просто не будет обслуживаться. Может также перестать обслуживаться прерывание от системного устройства, с которым конфликтует новая плата. В худшем случае это может вызвать выход из строя новой платы расширения или же системного устройства.
Точно так же при неправильном выборе номера канала запроса прямого доступа к памяти может перестать обслуживаться запрос ПДП системного устройства, а может выйти из строя системное устройство или новая плата расширения. То есть соблюдение правил стандартного распределения ресурсов компьютера — это не чья-то прихоть, а жизненная необходимость.
Правда, в последнее время получила распространение снимающая данные проблемы технология автоматического распределения ресурсов Plug-and-Play (PnP, P&P), что можно перевести как «Вставляй и работай». При этом пользователю достаточно просто подключить свою плату к компьютеру, а все операции по распределению ресурсов компьютер выполнит самостоятельно, и любые конфликты будут автоматически устранены.
Но для этого необходимо обязательное выполнение двух условий. Во-первых, технологию PnP должен поддерживать данный компьютер и его программное обеспечение. Во-вторых, эту технологию должно поддерживать подключаемое к компьютеру устройство. Определить это довольно просто: если на плате имеются переставляемые перемычки или механические переключатели для задания параметров платы (адресов портов ввода/вывода, номера используемого прерывания, базового адреса памяти, номера канала ПДП), то можно смело утверждать, что выбор конфигурации, учет стандартного распределения ресурсов компьютера ложится на пользователя. Компьютер здесь не помощник. Конечно же, перед установкой в компьютер новых плат расширения следует внимательно прочитать инструкцию и точно следовать ей. Подробнее о работе режима PnP будет рассказано ниже.
А теперь рассмотрим принятое в персональных компьютерах стандартное распределение ресурсов.
О стандартном распределении памяти уже говорилось в предыдущей главе. Чуть подробнее распределение адресов памяти описано в табл. 8.3.
Из таблицы видно, что для памяти, входящей в состав устройств ввода/вывода, отводится зона всего лишь в 92 Кбайта (адреса С8000…DFFFF). В этом пространстве может располагаться как оперативная память, так и постоянная память устройств ввода/вывода. Иногда память устройств ввода/вывода захватывает также и зону адресов С0000…С7FFF.
Таблица 8.3. Распределение адресов памяти (адреса даны в шестнадцатеричном коде). | |
Адреса памяти | Назначение |
000000. 0003FF | Таблица векторов прерываний |
000000. 09FFFF | Память DOS и пользовательских программ |
0А0000. 0АFFFF | Память дисплея EGA или VGA |
0B0000. 0B7FFF | Память монохромного дисплея MDA |
0B8000. 0BFFFF | Память дисплея CGA |
0C0000. 0C3FFF | ПЗУ BIOS для EGA/VGA |
0C8000. 0DFFFF | Память устройств ввода/вывода |
0E0000. 0EFFFF | Резерв ПЗУ ВIOS на материнской плате |
0F0000. 0FFFFF | ПЗУ BIOS на материнской плате |
Важно помнить, что помимо этого распределения, общего для любых программных и аппаратных средств, существуют еще и распределения памяти, специфические для каждой операционной системы. Их также необходимо учитывать во избежание отказа при выполнении системных программ. Отметим, что в современных компьютерах, конечно же, не используются давно устаревшие дисплеи стандартов CGA или MDA. Однако в том случае, если требуется универсальность программного обеспечения, надо учитывать и то, что его могут попытаться запустить на компьютерах с подобными дисплеями.
Стандартное распределение адресов в адресном пространстве устройств ввода/вывода персонального компьютера приведено в табл. 8.4.
Как уже отмечалось, стандарт допускает адресацию 64К устройств ввода/вывода (то есть можно использовать 16 разрядов адреса). Однако подавляющее большинство плат расширения для упрощения аппаратуры использует только 10 младших разрядов, что соответствует всего 1К (или 1024) адресов (от 000 до 3FF в шестнадцатеричном коде). При этом 16-разрядные порты ввода/вывода имеют четные адреса, то есть их может быть всего 512.
Таблица 8.4. Распределение адресов устройств ввода/вывода. | |
Адреса | Назначение |
000. 01F | Контроллер ПДП 1 |
020. 03F | Контроллер прерываний 1 |
040. 05F | Программируемый таймер |
060. 06F | Контроллер клавиатуры |
070. 07F | Часы реального времени |
080. 09F | Регистр страницы ПДП |
0A0. 0BF | Контроллер прерываний 2 |
0С0. 0DF | Контроллер ПДП 2 |
0F0. 0FF | Математический сопроцессор |
170. 177 | Накопитель на жестком диске (второй) |
1F0. 1F7 | Накопитель на жестком диске (первый) |
200. 207 | Игровой порт (джойстик) |
278. 27F | Параллельный порт LPT2 |
2С0. 2DF | Адаптер EGA 2 |
2F8. 2FF | Последовательный порт COM2 |
300. 31F | Прототипные платы |
320. 32F | Накопитель на жестком диске XT |
360. 36F | Резервные адреса |
370. 377 | Накопитель на гибком диске (второй) |
378. 37F | Параллельный порт LPT1 |
380. 38F | Контроллер бисинхронного обмена SDLC2 |
3A0. 3AF | Контроллер бисинхронного обмена SDLC1 |
3B0. 3DF | Адаптер VGA |
3B0. 3BF | Адаптер дисплея MDA и принтера |
3C0. 3CF | Адаптер EGA 1 |
3D0. 3DF | Адаптер СGA |
3F0. 3F7 | Накопитель на гибком диске (первый) |
3F8. 3FF | Последовательный порт COM1 |
Как видно из таблицы, значительная часть возможных адресов уже занята системными устройствами, свободных адресов не так много. Резервные адреса — это те, которые зарезервированы под дальнейшее расширение системы.
В табл. 8.5 представлено стандартное распределение номеров аппаратных прерываний и соответствующих им номеров в таблице векторов прерываний (INT).
Как видно из таблицы, большинство входов IRQ заняты системными ресурсами компьютера. Свободны (зарезервированы) только четыре канала: 10, 11, 12, 15, причем они находятся на 16-разрядной части разъема магистрали ISA. Правда, иногда в компьютерах применяется только один параллельный порт или (гораздо реже) только один последовательный порт, и тогда свободными оказываются еще IRQ3 и IRQ5. Сигналы IRQ0. IRQ2, IRQ8 и IRQ13 задействованы на системной плате и недоступны платам расширения.
Таблица 8.5. Распределение каналов аппаратных прерываний. | ||
Номер прерывания IRQ | INT | Назначение |
Программируемый таймер | ||
Контроллер клавиатуры | ||
0A | Каскадирование второго контроллера | |
Часы реального времени (только АТ) | ||
Программно переадресовано на IRQ2 | ||
Резерв | ||
Резерв | ||
Резерв | ||
Математический сопроцессор | ||
Контроллер жесткого диска | ||
Резерв | ||
0B | Последовательный порт COM2 | |
0C | Последовательный порт COM1 | |
0D | Параллельный порт LPT2 | |
0E | Контроллер гибкого диска | |
0F | Параллельный порт LPT1 |
Рис. 8.6. Включение двух контроллеров прерываний.
Стандартное распределение каналов запроса прямого доступа к памяти представлено в табл. 8.6.
Таблица 8.6. Стандартное распределение каналов прямого доступа к памяти. | |
Номер канала ПДП | Назначение |
Резервный | |
Контроллер бисинхронного обмена SDLC | |
Накопитель на гибком диске | |
Резервный | |
Каскадирование первого контроллера | |
Резервный | |
Резервный | |
Резервный |
Естественно, обычному пользователю запомнить всю эту информацию о распределении ресурсов довольно сложно, к тому же при малейшей ошибке возможны неприятности. Именно из этих соображений фирмами Compaq Computer, Intel, Microsoft и Phoenix Technologies в 1993 году была предложена технология Plug-and-Play (PnP), возлагающая все заботы о конфигурации компьютера на сам компьютер. Пользователь при этом может даже ничего не знать об адресном пространстве, прерываниях и каналах прямого доступа, он просто подключает плату, и она сразу же начинает работать правильно. Правда, при этом все компоненты компьютера (базовая система ввода/вывода BIOS, операционная система, прикладное программное обеспечение, подключаемые устройства) должны поддерживать режим PnP. В конце концов, технология PnP должна работать на всех используемых интерфейсах компьютера: ISA, PCI, VLB, IDE, RS-232C и т.д. Наиболее же приспособлена для этого системная шина PCI, имеющая специально предусмотренные средства, что еще более увеличивает ее шансы стать единственным стандартом системной шины.
При включении компьютера с PnP его программа начального запуска BIOS определяет устройства, которые необходимы в процессе загрузки. Затем BIOS запрашивает у каждого из этих устройств его уникальный номер (идентификатор), хранящийся в памяти PnP-устройства. После этого BIOS разрешает все конфликты между устройствами. При этом устройства, которые не нужны для загрузки компьютера, не обслуживаются.
После загрузки операционной системы вступает в действие специальный программный драйвер — менеджер конфигурации (configuration manager), который с помощью драйверов-нумераторов шин (bus enumerators) пропределяет устройства, требующие системных ресурсов. Если подключенное устройство не поддерживает PnP и не может выдать информацию о себе, то такая информация должна быть заложена в формируемую вручную базу данных. Вся собранная информация о текущей конфигурации сохраняется в оперативной памяти, в области hardware tree. Эту информацию в дальнейшем использует программа-арбитр ресурсов (resource arbitrator) при распределении системных ресурсов между устройствами. После этого менеджер конфигурации через нумераторы шин сообщает PnP-устройствам о том, какие ресурсы компьютера им присвоены, и данная информация в дальнейшем хранится в программно доступных регистрах (или flash-EPROM) этих устройств. На этом работа PnP по распределению ресурсов заканчивается, и далее компьютер функционирует как обычно, обращаясь ко всем устройствам стандартным образом.
Отметим также, что в некоторых компьютерах предусмотрена возможность так называемого «горячего подключения» внешних устройств (то есть без выключения питания компьютера). Режим PnP должен поддерживать и эту возможность, распределяя ресурсы не только при начальной загрузке, но и по мере подключения новых устройств.
Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандартным распределением всех его ресурсов. Соблюдать правила, установленные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики дополнительного оборудования, и даже те пользователи, которые просто хотят установить в компьютер новую плату расширения. В случае малейшего нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя.
Под распределением ресурсов в данном случае понимается:
- распределение адресного пространства системной памяти, отведение отдельных областей памяти под особые цели;
- распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера;
- распределение каналов запроса прерываний, в том числе для системных устройств;
- распределение каналов запроса прямого доступа к памяти.
Понятно, что если программист захочет использовать те адреса памяти, которые отведены для системных нужд (например, для памяти дисплея или системных таблиц), то работоспособность компьютера нарушится. Если выполняемая программа попытается записать какую-либо информацию по тем адресам системной памяти, которые стандартом отведены под постоянную память (ROM), то записываемая информация будет просто потеряна, и программа работать не будет. Если писать информацию по тем адресам памяти, которые отведены под видеопамять, то будет искажаться изображение на экране видеомонитора.
равда, в последнее время получила распространение снимающая данные проблемы технология автоматического распределения ресурсов Plug-and-Play (PnP, P&P), что можно перевести как "Вставляй и работай". При этом пользователю достаточно просто подключить свою плату к компьютеру, а все операции пораспределению ресурсов компьютер выполнит самостоятельно, и любые конфликты будут автоматически устранены.
Но для этого необходимо обязательное выполнение двух условий. Во-первых, технологию PnP должен поддерживать данный компьютер и его программное обеспечение. Во-вторых, эту технологию должно поддерживать подключаемое к компьютеру устройство. Определить это довольно просто: если на плате имеются переставляемые перемычки или механические переключатели для задания параметров платы (адресов портов ввода/вывода, номера используемого прерывания, базового адреса памяти, номера канала ПДП), то можно смело утверждать, что выбор конфигурации, учет стандартного распределения ресурсов компьютера ложится на пользователя. Компьютер здесь не помощник. Конечно же, перед установкой в компьютер новых плат расширения следует внимательно прочитать инструкцию и точно следовать ей.
Существует набор зарезервированных адресов для тех или иных устройств.
Компьютерная шина (двунаправленный универсальный коммутатор) — в архитектуре компьютера подсистема, которая передаёт данные между функциональными блоками компьютера. Обычно шина управляется драйвером. В отличие от связи точка-точка, к шине можно подключить несколько устройств по одному набору проводников. Каждая шина определяет свой набор коннекторов (соединений) для физического подключения устройств, карт и кабелей.
Ранние компьютерные шины представляли собой параллельные электрические шины с несколькими подключениями, но сейчас данный термин используется для любых физических механизмов, предоставляющих такую же логическую функциональность, как параллельные компьютерные шины. Современные компьютерные шины используют как параллельные, так и последовательные соединения и могут иметь параллельные (multidrop) и цепные (daisy chain) топологии. В случае USB и некоторых других шин могут также использоваться хабы(концентраторы).
Первое поколение
Ранние компьютерные шины были группой проводников, подключающей компьютерную память и периферию к процессору. Почти всегда для памяти и периферии использовались разные шины, с разным способом доступа, задержками, протоколами.
Одним из первых усовершенствований стало использование прерываний. До их внедрения компьютеры выполняли операции ввода-вывода в цикле ожидания готовности периферийного устройства. Это было бесполезной тратой времени для программ, которые могли делать другие задачи. Также, если программа пыталась выполнить другие задачи, она могла проверить состояние устройства слишком поздно и потерять данные. Поэтому инженеры дали возможность периферии прерывать процессор. Прерывания имели приоритет, так как процессор может выполнять только код для одного прерывания в один момент времени, а также некоторые устройства требовали меньших задержек, чем другие.
Некоторое время спустя компьютеры стали распределять память между процессорами. На них доступ к шине также получил приоритеты.
Классический и простой способ обеспечить приоритеты прерываний или доступа к шине заключался в цепном подключении устройств.
Второе поколение
Компьютерные шины «второго поколения», например NuBus
Однако новые шины, так же как и предыдущее поколение, требовали одинаковых скоростей от устройств на одной шине. Процессор и память теперь были изолированы на собственной шине и их скорость росла быстрее, чем скорость периферийной шины. В результате, шины были слишком медленны для новых систем и машины страдали от нехватки данных.
Третье поколение
Шины «третьего поколения» обычно позволяют использовать как большие скорости, необходимые для памяти, видеокарт и межпроцессорного взаимодействия, так и небольшие при работе с медленными устройствами, например, приводами дисков. Также они стремятся к большей гибкости в терминах физических подключений, позволяя использовать себя и как внутренние и как внешние шины, например для объединения компьютеров. Это приводит к сложным проблемам при удовлетворении различных требований, так что большая часть работ по данным шинам связана с программным обеспечением, а не с самой аппаратурой. В общем, шины третьего поколения больше похожи на компьютерные сети, чем на изначальные идеи шин, с большими накладными расходами, чем у ранних систем. Также они позволяют использовать шину нескольким устройствам одновременно.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
В зависимости от источника возникновения сигнала прерывания делятся на:
§ асинхронные или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание
§ синхронные или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;
§ программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Термин «ловушка» (англ. trap) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.
В зависимости от возможности запрета внешние прерывания делятся на:
§ маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
§ немаскируемые (англ. Non maskable interrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.
Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться.
До окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания. Приоритезация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Приоритеты могут обслуживаться как относительные и абсолютные.
§ Относительное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то это прерывание будет обработано только после завершения текущей процедуры обработки прерывания.
§ Абсолютное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то текущая процедура обработки прерывания вытесняется, и процессор начинает выполнять обработку вновь поступившего более приоритетного прерывания. После завершения этой процедуры процессор возвращается к выполнению вытесненной процедуры обработки прерывания.
Программное прерывание — синхронное прерывание, которое может осуществить программа с помощью специальной инструкции.
Помимо архитектуры аппаратных средств и параметров системной шины специфика любого компьютера определяется принятым стандартным распределением всех его ресурсов. Соблюдать правила, установленные этим распределением, должны и программисты (как системные, так и занимающиеся разработкой прикладных программ), и разработчики дополнительного оборудования, и даже те пользователи, которые просто хотят установить в компьютер новую плату расширения. В случае малейшего нарушения этих правил возможны как непредсказуемые сбои в работе компьютера, невозможность его начальной загрузки, так и полный выход компьютера из строя.
Под распределением ресурсов в данном случае понимается:
- распределение адресного пространства системной памяти, отведение отдельных областей памяти под особые цели;
- распределение адресного пространства устройств ввода/вывода, в том числе для системных средств компьютера;
- распределение каналов запроса прерываний, в том числе для системных устройств;
- распределение каналов запроса прямого доступа к памяти.
Понятно, что если программист захочет использовать те адреса памяти, которые отведены для системных нужд (например, для памяти дисплея или системных таблиц), то работоспособность компьютера нарушится. Если выполняемая программа попытается записать какую-либо информацию по тем адресам системной памяти, которые стандартом отведены под постоянную память (ROM), то записываемая информация будет просто потеряна, и программа работать не будет. Если писать информацию по тем адресам памяти, которые отведены под видеопамять, то будет искажаться изображение на экране видеомонитора.
Если вставляемая в компьютер плата расширения использует неправильные (занятые другими устройствами) адреса в адресном пространстве памяти, то ее работа будет невозможна, и не исключен даже выход из строя аппаратуры компьютера (так как при циклах чтения из перекрывающихся адресов памяти два устройства будут выставлять свои данные на шину одновременно, что может стать причиной выгорания буферных микросхем).
Если разработчик платы расширения с устройством ввода/вывода или пользователь, подключающий новую плату расширения, установят адрес своего устройства так, что он будет совпадать с адресом системного устройства или адресом другой платы расширения, то возможны конфликты при обращении к данному устройству. При этом в цикле записи информация будет записываться не в одно, а в два или более устройств, а в цикле чтения на шину данных будут одновременно выставлять свои данные не одно, а несколько устройств. То есть в цикле записи возможно нарушение установленных режимов работы системных устройств (например, контроллера прерываний или контроллера ПДП ) или неправильная работа новой платы расширения, а в цикле чтения — даже выход из строя одного из устройств, выставляющих свои данные на магистраль одновременно.
Если при подключении к компьютеру новой платы расширения установить для нее неправильный канал запроса прерывания, это может привести к тому, что данное прерывание просто не будет обслуживаться. Может также перестать обслуживаться прерывание от системного устройства , с которым конфликтует новая плата. В худшем случае это может вызвать выход из строя новой платы расширения или же системного устройства .
Точно так же при неправильном выборе номера канала запроса прямого доступа к памяти может перестать обслуживаться запрос ПДП системного устройства , а может выйти из строя системное устройство или новая плата расширения. То есть соблюдение правил стандартного распределения ресурсов компьютера — это не чья-то прихоть, а жизненная необходимость.
Правда, в последнее время получила распространение снимающая данные проблемы технология автоматического распределения ресурсов Plug-and-Play (PnP, P&P) , что можно перевести как "Вставляй и работай". При этом пользователю достаточно просто подключить свою плату к компьютеру, а все операции по распределению ресурсов компьютер выполнит самостоятельно, и любые конфликты будут автоматически устранены.
Но для этого необходимо обязательное выполнение двух условий. Во-первых, технологию PnP должен поддерживать данный компьютер и его программное обеспечение. Во-вторых, эту технологию должно поддерживать подключаемое к компьютеру устройство. Определить это довольно просто: если на плате имеются переставляемые перемычки или механические переключатели для задания параметров платы (адресов портов ввода/вывода, номера используемого прерывания, базового адреса памяти, номера канала ПДП ), то можно смело утверждать, что выбор конфигурации, учет стандартного распределения ресурсов компьютера ложится на пользователя. Компьютер здесь не помощник. Конечно же, перед установкой в компьютер новых плат расширения следует внимательно прочитать инструкцию и точно следовать ей. Подробнее о работе режима PnP будет рассказано ниже.
А теперь рассмотрим принятое в персональных компьютерах стандартное распределение ресурсов .
О стандартном распределении памяти уже говорилось в предыдущей главе. Чуть подробнее распределение адресов памяти описано в табл. 8.3.
Из таблицы видно, что для памяти, входящей в состав устройств ввода/вывода, отводится зона всего лишь в 92 Кбайта (адреса С8000…DFFFF). В этом пространстве может располагаться как оперативная память, так и постоянная память устройств ввода/вывода. Иногда память устройств ввода/вывода захватывает также и зону адресов С0000…С7FFF.
Важно помнить, что помимо этого распределения, общего для любых программных и аппаратных средств, существуют еще и распределения памяти, специфические для каждой операционной системы. Их также необходимо учитывать во избежание отказа при выполнении системных программ . Отметим, что в современных компьютерах, конечно же, не используются давно устаревшие дисплеи стандартов CGA или MDA . Однако в том случае, если требуется универсальность программного обеспечения, надо учитывать и то, что его могут попытаться запустить на компьютерах с подобными дисплеями.
Стандартное распределение адресов в адресном пространстве устройств ввода/вывода персонального компьютера приведено в табл. 8.4.
Как уже отмечалось, стандарт допускает адресацию 64К устройств ввода/вывода (то есть можно использовать 16 разрядов адреса). Однако подавляющее большинство плат расширения для упрощения аппаратуры использует только 10 младших разрядов, что соответствует всего 1К (или 1024) адресов (от 000 до 3FF в шестнадцатеричном коде). При этом 16-разрядные порты ввода/вывода имеют четные адреса, то есть их может быть всего 512.
Как видно из таблицы, значительная часть возможных адресов уже занята системными устройствами , свободных адресов не так много. Резервные адреса — это те, которые зарезервированы под дальнейшее расширение системы.
В табл. 8.5 представлено стандартное распределение номеров аппаратных прерываний и соответствующих им номеров в таблице векторов прерываний ( INT ).
Как видно из таблицы, большинство входов IRQ заняты системными ресурсами компьютера. Свободны (зарезервированы) только четыре канала: 10, 11, 12, 15, причем они находятся на 16-разрядной части разъема магистрали ISA . Правда, иногда в компьютерах применяется только один параллельный порт или (гораздо реже) только один последовательный порт, и тогда свободными оказываются еще IRQ3 и IRQ5 . Сигналы IRQ0. IRQ2 , IRQ8 и IRQ13 задействованы на системной плате и недоступны платам расширения.
Рис. 8.6. Включение двух контроллеров прерываний.
Стандартное распределение каналов запроса прямого доступа к памяти представлено в табл. 8.6.
Естественно, обычному пользователю запомнить всю эту информацию о распределении ресурсов довольно сложно, к тому же при малейшей ошибке возможны неприятности. Именно из этих соображений фирмами Compaq Computer, Intel, Microsoft и Phoenix Technologies в 1993 году была предложена технология Plug-and-Play (PnP) , возлагающая все заботы о конфигурации компьютера на сам компьютер. Пользователь при этом может даже ничего не знать об адресном пространстве, прерываниях и каналах прямого доступа, он просто подключает плату, и она сразу же начинает работать правильно. Правда, при этом все компоненты компьютера (базовая система ввода/вывода BIOS, операционная система, прикладное программное обеспечение, подключаемые устройства) должны поддерживать режим PnP . В конце концов, технология PnP должна работать на всех используемых интерфейсах компьютера: ISA , PCI , VLB , IDE, RS-232C и т.д. Наиболее же приспособлена для этого системная шина PCI , имеющая специально предусмотренные средства, что еще более увеличивает ее шансы стать единственным стандартом системной шины.
При включении компьютера с PnP его программа начального запуска BIOS определяет устройства, которые необходимы в процессе загрузки. Затем BIOS запрашивает у каждого из этих устройств его уникальный номер (идентификатор), хранящийся в памяти PnP -устройства. После этого BIOS разрешает все конфликты между устройствами. При этом устройства, которые не нужны для загрузки компьютера, не обслуживаются.
После загрузки операционной системы вступает в действие специальный программный драйвер — менеджер конфигурации ( configuration manager ), который с помощью драйверов-нумераторов шин ( bus enumerators ) определяет устройства, требующие системных ресурсов. Если подключенное устройство не поддерживает PnP и не может выдать информацию о себе, то такая информация должна быть заложена в формируемую вручную базу данных. Вся собранная информация о текущей конфигурации сохраняется в оперативной памяти, в области hardware tree. Эту информацию в дальнейшем использует программа-арбитр ресурсов (resource arbitrator ) при распределении системных ресурсов между устройствами. После этого менеджер конфигурации через нумераторы шин сообщает PnP -устройствам о том, какие ресурсы компьютера им присвоены, и данная информация в дальнейшем хранится в программно доступных регистрах (или flash- EPROM ) этих устройств. На этом работа PnP по распределению ресурсов заканчивается, и далее компьютер функционирует как обычно, обращаясь ко всем устройствам стандартным образом.
Отметим также, что в некоторых компьютерах предусмотрена возможность так называемого "горячего подключения" внешних устройств (то есть без выключения питания компьютера). Режим PnP должен поддерживать и эту возможность, распределяя ресурсы не только при начальной загрузке, но и по мере подключения новых устройств.
Системными ресурсами называют средства, используемые устройствами компьютера для обмена данными с помощью шин [11]. К ним относятся:
- • адреса памяти и портов ввода-вывода;
- • каналы запросов прерываний (Interrupt ReQuest – IRQ);
- • каналы прямого доступа к памяти (Direct Memory Access – DMA).
Устройство, использующее один или несколько из перечисленных ресурсов, называется системным устройством. Все системные ресурсы должны быть бесконфликтно распределены между системными устройствами таким образом, чтобы каждая программа могла взаимодействовать со своими устройствами, не мешая другим устройствам и не получая от них помех. Центральный процессор, являясь самым главным (ведущим) устройством, задает только адрес и тип операции, т.е. для него безрахтично, к какой из шин подключено системное устройство.
Общим для всех видов ресурсов является то, что любое установленное в компьютере системное устройство должно использовать свой системный ресурс. Некорректное использование системных ресурсов ведет к конфликтам, в результате которых устройства либо не будут работать вообще, либо будут вести себя непредсказуемо. Эти конфликты могут быть успешно устранены только путем грамотной настройки программно-аппаратных средств. Такую процедуру обычно называют конфигурированием.
Рассмотрим, в чем состоит бесконфликтность распределения системных ресурсов и как проявляются конфликты устройств [2].
Для адресов памяти и портов ввода-вывода бесконфликтность означает, что диапазоны соответствующих адресов всех имеющихся системных устройств не должны перекрываться. В противном случае устройства могут конфликтовать. Это в первую очередь касается адресов, по которым выполняется чтение. При этом:
- • если конфликтующие устройства подключены к одной шине, то результат чтения будет неопределенным, так как помимо адресного конфликта имеется электрический конфликт;
- • если два конфликтующих устройства находятся на разных шинах, то будут прочитаны данные только одного устройства, но какого именно – зависит от настройки логических схем (мостов, хабов), соединяющих шины.
Поэтому операции чтения маршрутизируются и обычно выполняются по конкретному адресу памяти или порта только с одной из шин. Операции записи часто выполняются широковещательно: адрес направляется по всем шинам одновременно. Конфликт по адресам для записи используется (целенаправленно) для одновременной передачи информации в несколько устройств. Незапланированные конфликты по записи могут приводить к различным побочным эффектам в работе устройств, не ожидающих данной записи.
Для линий запросов прерываний возможны разные варианты бесконфликтности:
- • в системе с обычной шиной ISA (Industry Standard Architecture – промышленная стандартная архитектура) бесконфликтным является вариант, при котором одну линию запроса может использовать только одно устройство. Все остальные варианты – конфликтные;
- • в системе с шиной ISA, поддерживающей стандарт Plug and Play, возможна бесконфликтная ситуация, когда одна линия прерывания закреплена за несколькими устройствами. Для этого необходимо использовать интеллектуальный (гибко программируемый) контроллер прерываний, кроме того, сами устройства должны поддерживать стандарт Plug and Play и в них должна быть заложена возможность разделяемое™ прерываний;
- • в системах с шиной PCI (Peripheral Component Interconnect – соединение периферийных компонентов) предусмотрена бесконфликтная разделяемость прерываний с помощью аппаратных средств.
Читайте также: