Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Энциклопедия PC

.pdf
Скачиваний:
30
Добавлен:
13.03.2015
Размер:
8.94 Mб
Скачать

3.6. АксессуарысистемнойплатыIBM PC 87

только в режиме одиночной передачи или по запросу и только с инкрементом (увеличением) адреса. На самой шине PCI каналов DMA нет, здесь адаптеры могут работать только либо под управлением центрального процессора, либо использовать режим прямого управления шиной, для чего имеется специальный протоколарбитража, которыйкконтроллерамDMA отношенияуженеимеет.

По стандартным каналам DMA возможно обращение как к системной памяти (расположенной на системной плате), так и к памяти, подключенной к шинам ISA и PCI. Обращение к 8-разрядной памяти, расположенной на адаптерах, возможно только по 8-битным каналам (преобразование циклов выполнять некому). Однако ПУ, использующие эти каналы, могут располагаться лишь в слотах ISA/EISA или на системной плате (контроллер НГМД, LPT-порт в режиме ЕСР или Fast Centonics, аудиокодек). Если эти устройства системной платы используют каналы DMA, то данные каналы становятся недоступными для абонентов шины ISA. Контроллерам АТА, расположенным на системной плате, стандартные каналыDMA нетребуются.

На время переходного периода, связанного с «изживанием» шины ISA, потребовалась возможность эмуляции каналов DMA для устройств шины PCI. Эта потребность в основном обусловлена обеспечением совместимости звуковых карт PCI с существующим программным обеспечением, которое во многих случаях работает с аппаратными средствами напрямую, без каких-либо драйверов. Фактический стандарт на программную модель звуковой карты SB 16 подразумевает доставкуцифровогопотокапоканалуDMA. Существуютдвамеханизмаэмуляции каналов DMA: PC/PCI и DDMA. Механизм PC/PCI (см. п. 12.5.6) был разработан фирмой Intel для обеспечения возможности использования слотов ISA блокнотными ПК, подключаемыми к док-станции по шине РСЛ. Альтернативное решение — механизм DDMA (Distributed — распределенный) DMA. Как известно, контроллеры DMA для шины ISA располагаются на системной плате и управление несколькими каналами выполняется через одни и те же регистры. DDMA позволяет «расчленить» стандартный контроллер и отдельные его каналы эмулировать средствами карт PCI. Оба этих механизма реализуемы только как частьмостамеждупервичнойшинойPCI ишинойISA, поэтомуихподдержкаможет обеспечиваться(илинеобеспечиваться) тольконасистемнойплатеиразрешатьсяв CMOS Setup. Для других картрасширения (например, адаптеров локальныхсетей, контроллеровинтерфейсов) задачаэмуляцииDMA невозникает, посколькусними ПО, какправило, работаетчерездрайверы, поставляемыевместесэтимикартами.

3.6. Аксессуарысистемной платыIBM PC

Системная плата первой модели PC содержала несколько функциональных уз-.- ов. которые благодаря открытому описанию приобрели надежный статус неприкосновенности, гарантируемый несчетным количеством программ и программах продуктов, ихиспользующих. Этиузыперечисленыниже.

88 Глава3. АрхитектураIBM PC-совместимогокомпьютера

т Схемы предоставления системных ресурсов — памяти, ввода-вывода, прерываний, прямогодоступакпамяти, описанныевыше.

я Микросхемы ROM BIOS с программным кодом начального тестирования, запускаифункцийввода-вывода.

»Системный таймер, реализованный на микросхеме 8253, использовавшийся как генератор запросов регенерации памяти, интервальный таймер и тональный генератор для динамика. В AT те же функции выполняла аналогичнаямикросхема8254.

»Системный порт AT, предназначенный для управления звуком и немаскируемыми прерываниями. В XT были три системных порта на микросхеме 8255, используемых для интерфейса клавиатуры, чтения переключателей конфигурации, управлениязвукоминемаскируемымипрерываниями.

т Канал управления звуком — логическая схема, использующая тональный сигнал таймера и программно-управляемые биты системного порта. На машинах AT такой «синтезатор» мог исполнять даже записанную музыку и речь.

яПоследовательный интерфейс клавиатуры, реализуемый наXT аппаратной логикой, анаAT спомощьюмикроконтроллера8042.

& Память конфигурации и часы-календарь — CMOS RTC — узел, появившийсясAT.

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

3.6.1. СистемныйпортPC/AT

Восьмибитныйсистемныйпортсадресом61h выполняетследующиефункции: я управлениезвуком, сохранившееполнуюсовместимостьсXT; я разрешение и идентификацияисточниковNMI (вэтомместепрограммнуюмодельXT «посмели» изменить, ноэтоизменениезатрагиваетнебольшоеколичествосугубо системныхпрограмм).

Старшие 4 бита порта допускают только чтение (R), младшие 4 бита — чтение и запись (R/W).

НазначениебитсистемногопортаAT (06lh):

ябит7 R — РСК— ошибкачетностиОЗУилисигналSERR# нашинеPCI; ш битбR — IOCHK — ошибкаконтроля нашинеISA (сигналЮСНК#);

«бит5 R — Т20 — выход2 счетчика8254;

ябит4 R — RFD — регенерацияпамяти;

жбит3 R/W — EIC — разрешение контроля шиныISA;

жбит2 R/W — ERP — разрешение контроля ОЗУ исигнала SERR# шиныPCI;

»бит1 R/W — SPK — управление звуком;

я битОR/W - T2G - вход GATE 2 счетчика 8254.

З.б. АксессуарысистемнойплатыIBM PC 89

В PC/XT применялась микросхема трехканального интерфейса ввода-вывода 18255, располагавшаясявадресахпортов60-63Ниимевшаяследующееназначение:

* чтениескан-кодовклавиатуры;

туправлениезвуком;

тразрешениеиидентификацияисточниковNMI; ^ чтениебайтаконфигурации.

3.6.2. Системныйтаймер(8253/8254)

ВовсехмоделяхPC используетсятрехканальныйсчетчик-таймер, выполняющий следующиефункции:

« генерациюпрерыванийотсистемныхчасов, вызывающихинкрементсчетчикасистемноговременивячейке40:006ЕBIOS Data Area; т генерацию запросовнарегенерациюпамяти; « генерациюзвуковыхсигналов.

В качестве счетчиков-таймеров в XT применялась микросхема 18253, а в AT — более быстродействующая 18254, которая с процессорами 80286 могла работать без тактов ожидания. На современных системных платах те же функции берет на себя чипсет, сохраняя программную совместимость с 8253/8254. Микросхемы 8253 и 8254 представляют собой трехканальные программируемые счетчики-таймеры, функционально почти совпадающие, но имеющие различающееся быстродействие (со стороны системной шины) и назначение выводов. Внутренние счетчики микросхемы имеют разрядность 16 бит, но общение с ними возможно только 8-бит- нымиоперациями. Приэтомможнозадаватьзначениетолькомладшегобайтасчетчика (LSB), только старшего (MSB) или обоих (LSB/MSB), причем сначала передается младший, а потом старший байт. Программирование микросхемы осуществляется записью байт в управляющий регистр по отдельности для каждого канала. Назначение регистров счетчиков-таймеров приведено в табл. 3.4. Все каналы работают в режиме генерации импульсов, в канале 2 используется управляющий вход GATE, высокий уровень которого разрешает счет (формирование выходного сигнала, см. ниже). Счет для каналов 0 и 1 разрешен постоянно. Входная частота длявсехканалов1,19318 МГц.

Таблица3.4. Регистрысчетчиков-таймеров

Порт, R/W___Назначение__________________________________

".40 RW

Счетчик0 — системныечасы(генерацияIRQO каждые54,936 мс—

 

частота18,206 Гц).

 

РежимОН, LSB/MSB, Binary, константасчетчика~0 ___________(соответствует

коэффициенту деления65536)____________________

'л: R\V

Счетчик1 — регенерацияпамяти(DRQO дляXT, логикарегенерации— дляAT).

___________Режим010, LSB, Binary, константасчетчика~12h (18)_______________

1-е! RVV

Счетчик2 — генераторзвука.

 

ВходGATE отбита0 портаВ8255 (061). ___________РежимOil, LSB/MSB, Binary,

значениесчетчикаопределяет высотутона____

продолжениеJ>

90 Глава 3. Архитектура IBM PC-совместимого компьютера

Таблица3.4 (продолжение)

Порт, R/W

Назначение

043 W

Управляющийрегистр

 

Биты 7, 6 — выбор счетчика 0, 1,2.

 

Биты5, 4 — режимобращения:

 

00 — защелкатекущегозначения,

 

01 — LSB — толькомладшийбайт,

 

10 — MSB — толькостаршийбайт,

 

11 — LSB/MSB — сначала младший, затем старший байты.

 

Биты3-1 — режимсчетчика:

 

000 — прерываниепосчетчику,

 

001 — ждущиймультивибратор (одновибратор, у8254 несколько

 

отличается от 8253),

 

хЮ— генераторкороткихимпульсовзаданнойчастоты, xll —

 

генератормеандра,

 

100 — счетчиксобытийсразрешением,

 

101 — счетчиксобытийсперезапуском. Бит0 — 0=Bin

 

(двоичныйсчет), 1=BCD — (двоично-десятичныйсчет)

3.6.3. Каналуправлениязвуком(PC Speaker)

Стандартный канал управления звуком PC Speaker рассчитан на подключение высокоомного малогабаритного динамика. Логическая схема канала приведена на рис. 3.5. Звук формируется из тонального сигнала от второго канала таймера, работой которого можно программно управлять. Частоту сигнала (тон) можно изменять, программируя коэффициент деления счетчика. Кроме того, разрешая/запрещая формирование сигнала программно-управляемым битом 1 системного порта 61h, можно подавать сигналы определенной длительности. Такой способ формирования звука мало загружает даже процессор 8086/88 и позволяет исполнять незамысловатые мелодии, причем и в фоновом режиме, посылая команды из очереди по прерываниям от системного таймера. А с учетом физиологии слуха (инерционности восприятия) быстрым переключением частот можно достигать эффекта псевдомногоголосия. Таймер генерирует выходной сигнал при высоком уровне на входе GATE2 (при единичном значении бита 0 порта 61h). При низком уровне на входе GATE2 таймер формируетвысокийуровеньнавыходе.

1,9318 МГц

Порт061 Бит0 —————

Г

 

Порт061 Бит1

Рис. 3.5. Каналуправлениязвуком

Более интересные звуки можно извлекать, используя принцип широтно-им- пульсной модуляции, программно осуществляемый через бит 1 порта 61h. При этом на входе GATE таймера должен быть низкий уровень (бит 0 порта 61h

3.6. АксессуарысистемнойплатыIBM PC 91

должен быть нулевым), чтобы на выходе OUT2 установился высокий уровень. В - этом случае динамик играет роль фильтра нижних частот (инерционного звена) демодулятора. Процессоры, начиная с 80286, способны формировать такой поток управляющих сигналов, который позволяет воспроизводить музыкальный или речевой сигнал с качеством карманного приемника, что практически полностью загружает, например, 286-й процессор. Кроме того, качество воспроизведения сильно зависит от частотных свойств динамика. Предпочтительнее более крупные динамики, у которых лучше воспроизведение нижних частот — с ними можно добиться даже разборчивости речи. Возможно также комбинированное управление обоими битами порта 61h одновременно с программированием коэффициента деления счетчика-таймера. Для Windows З.х/95 существует даже драйвер для звукоизвлечения через эти незамысловатые аппаратные средства, но в стандартную поставку ОС он не входит. Теперь для звуковоспроизведения (и звукозаписи) используется ставший стандартным аудиокодек (см. главу 11). Роль стандартного звукового канала сводится к подачам гудков при загрузке, идентификации ошибок во время теста POST, когда сообщения на экран еще не вывести, а также к сопровождению сообщений о системных ошибках.

3.6.4. Батарейная память и часы —

CMOS Memory/ RTC

В AT для хранения информации о конфигурации компьютера имеется специальная микросхема памяти КМОП небольшого объема, питание которой при выключенном компьютере осуществляется от батарейки. В той же микросхеме располагаются и часы-календарь, также питающиеся от той же батарейки. Эта память и часы — CMOS Memory and Real Time Clock, сокращенно CMOS RTC — стали стандартным элементом архитектуры PC. Содержимое этой памяти и дату сначала модифицировали с помощью внешней загружаемой утилиты Setup, а позже эту утилиту встроили в BIOS. Микросхемы CMOS RTC имеют встроенную систему контроля непрерывности питания, отслеживающую и разряд батареи ниже допустимого уровня. Достоверность информации конфигурирования проверяется контрольнойсуммой.

Таймер синхронизируется от собственного генератора с кварцевым резонатором, какправило, на32,768 кГц. Таймерная частьсодержит:

® часы-календарь(год, месяц, число, час, минута, секунда); & будильник, подающийсигналвназначенныйчас, минутуисекунду; « генератор меандра, позволяющий формировать запросы прерываний с заданной частотой (как правило, 1024 Гц).

Микросхема CMOS RTC является источником аппаратного прерывания с номером 8, прерывания могут возникать от будильника, генератора меандра и после смены времени в часах. Отдельные источники прерывания идентифицируютсячтениемячейкиОСЬиразрешаютсязаписьювячейкуOBh.

Доступ к ячейкам CMOS RTC осуществляется через порты ввода-вывода OTOh (индексячейки) и071h (данные). Заметим, чтобит7 порта70h использу-

92 Глава3. АрхитектураIBM PC-совместимогокомпьютера

ется и для блокировки NMI (см. п. 3.4.1), так что диапазон адресов памяти CMOS ограничен пределами 0-7Fh. Поскольку эта память имеет быстродействие порядка единиц микросекунд, между командами записи адреса и чтения-записи данных необходима программная задержка. Во время изменения состояния часов данные, считываемые из ячеек 0-9, могут оказаться некорректными. Признаком этой ситуации является единичное значение бита 7 ячейки OAh. Для определения момента окончания смены состояния часов можно пользоваться и разрешением соответствующего источника прерывания. Для работы с часами и будильником имеется сервис BIOS Int lAh (см. ниже), который избавляет от необходимости программирования операций с учетом требуемых задержек, но может выдавать результаты и не с первого раза, если вызов попадет на момент изменения показаний часов. Вэтом случае вызов придется повторять.

Назначение ячеек CMOS RTC приведено в табл. 3.5. Обратим внимание на формат представления даты, являющийся одним из источников проблемы «двух нулей» (проблемы 2000 года, кратко называемой и Y2K). Первоначально под год отводился лишь байт 09 (две младшие цифры), старшие подразумевались всегда равными 19. Впоследствии (в эпоху 386-х и 486-х машин) добавили еще один байт для века (32h или 37h), однако он автоматически (аппаратно схемой RTC) при переходе от 1999 к 2000 году инкрементируется не всеми таймерами. В таком случае после наступления 2000-го года его можно установить и вручную (до инкремента в 2099 году эти компьютеры, наверное, и не доживут). Однако и здесь возможен подвох — не во всех версиях BIOS на XXI век правильный календарь — дни недели, указанные в календаре CMOS Setup, могут не совпадать с реальными. Дни недели календаря BIOS задействуются (и то необязательно) только при ручной установке даты через CMOS Setup — операционные системы используют свои календари. А вот неверный отсчет високосных годов может исказить дату.

Таблица3.5. СтандартноеназначениеячеекCMOS RTC

Индекс_____Назначение__________________________________

00h-09h, 32h

ЯчейкиRTC вBCD-формате:

(37 вPS/2)

00 - секунды;

 

01

— секундыбудильника;

 

02 - минуты;

 

03 — минутыбудильника;

 

04

— часы;

 

05

— часыбудильника;

 

06

— деньнедели;

 

07 — деньмесяца;

 

08 - месяц;

09 — год(2 младшиецифры); 32h — век-1 (2 старшиецифры года); _____________37h — век-1 (2

старшиецифры года) вPS/2___________________

OAh RTC Status Register А(статус-регистр):

Бит7 — обновлениевремени: 0- готовкчтению.

Биты[6:4] — делительчастоты, длякварцана32,768 кГц— 010.

_____________Биты[3:0]~0110 — выходнаячастотамеандра1024 Гц_____________

 

3.6. АксессуарысистемнойплатыIBM PC 93

 

 

Индекс

Назначение

 

 

OBh

RTC Status Register В(статус-регистр):

 

Бит7 — остановкачасов: 0~нормальныйход.

 

Бит6 — разрешениепериодическихпрерываний: СНзапрещено.

 

Бит5 — разрешениепрерыванияотбудильника: 0=запрещено.

 

Бит4 — разрешениепрерыванияпоокончаниисменывремени: 0-

 

запрещено.

 

Бит3 — разрешениевыходногомеандра(см. регистрOAh): 0-

 

запрещено.

 

Бит 2 - BCD/BIN формат: 0-BCD.

 

Бит1 — 12/24-часовойрежим: 1-24-часовой.

 

Бит0 — зимнее/летнеевремя: ________________0-переключение

запрещено_____________________

ОСЬ

RTC Status Register С— чтениефлаговидентификаторовпрерывания:

 

Бит7 — IRQF — общийзапроспрерывания.

Бит6 — PF — периодическиепрерывания.

Бит5 — AF — прерываниеотбудильника.

Бит4 — UF — прерываниепоокончаниисменывремени. Биты[3:0] — зарезервированы

ODh RTCStatusRegisterD:

 

Бит7 — питание: 1-норма, 0=разрядбатареи. Биты[6:0] —

 

зарезервированы__________

OEh

POST Diagnostic Status Byte:

 

Бит7 — l=Power Lost — терялось питаниеCMOS.

 

Бит6 — 1-Checksum Bad — ошибкаконтрольнойсуммыCMOS.

 

Бит5 — 1-Bad config — ошибкаконфигурации.

 

Бит4 — 1-RAM Size Error — несоответствие размераОЗУ,

 

определенноготестом, записивCMOS.

 

Бит3 — 1-HDD Error — ошибкаприинициализациижесткогодиска.

 

Бит2 — l=Time Valid — нетформальнойошибкичасов-календаря

 

(например, 30 февраля, 25 часов). _____________Биты[1:0] —

зарезервированы___________________________

OFh

Shutdown Code — используетсяPOST дляопределенияпредысторииостанова:

 

00-аппаратныйилипрограммныйсброс;

 

01-размерпамятиопределен;

 

02-тестпамятипрошел;

 

03-тестпамятивыявилошибку; 04=POST

 

завершен, идет загрузкасистемы;

 

05-JMP FAR [0:0467h] синициализациейконтроллерапрерываний;

 

06-тестзащищенногорежимапрошел;

 

07=тестзащищенногорежимавыявилошибку;

 

08-ошибкаприопределенииразмерапамяти;

 

09=перемещен блокExtended Memory (lNT15h);

 

OA-JMP FAR [0:0467h] безинициализацииконтроллерапрерываний;

_____________ОВ-используется80386___________________________________

lOh

ТипыНГМД:

 

Биты[7:4] — дисководА

 

Биты[3:0] — дисководВ______________0°нет. 1°360 Кбайт, 2=1,2 Мбайт,

3=720 Кбайт, 4=1,44 Мбайт_______

'. th_________Зарезервирован_______________________________________

Tib

ТипыНЖМД:

 

Биты[7:4] — привод0;

Биты[3:0] — привод 1: 0=нет, 1-Еп=типы1-14, Рп=типвбайте19h

____________(длявторого привода— вlAh)_________________________

продолжение^>

94 Глава3. АрхитектураIBM PC-совместимогокомпьютера

Таблица3.5 (продолжение)

Индекс

Назначение

13h

Зарезервирован

14h

Установленноеоборудование:

Биты [7:6] - количество НГМД: 00=1, 01=2. Биты[5:4] — типпервичноговидеоадаптера:

00 - EGA или VGA,

01 - CGA, 40 столбцов,

10- CGA, 80 столбцов,

11- MDA, 80 столбцов.

Биты[3:2] — зарезервированы.

Бит1 — 1=естьматематическийсопроцессор. _____________Бит 0 - 1-есть НГМД________________________________

15h-16h______Размер базовой памяти, Кб (Low/High) Q280h=640K__________________

17h-18h______Размер дополнительной памяти, Кб (Low/High)___________________

19h, lAh______Расширенный тип диска С, D (в PS/2 — зарезервированы)_____________

lBh-2Dh_____Зарезервированы______________________________________

2Eh-2Fh

Контрольная сумма CMOS с 10h no 20h (High/Low)

 

30h-31h______Реальный размер расширенной памяти, Кб (Low/High)_______________

32h-33h

В PS/2 контрольная CRC-сумма CMOS с 10h no 31h (High/Low)

33h

ФлагиPOST:

 

 

Бит 7 — наличие 128 Кбайт ОЗУ под границей 1 Мбайт:

 

1=есть, доступнатеневаяпамять.

 

Бит6 — Setup флаг: ________________1=первая загрузка после выполнения

Setup; обычно установлен 0____

34h-3Fh

Зарезервированы (можно писать свою информацию

___________для привязки ПО к машине)_____________________________________

38h-3Fh______В PS/2 пароль, доступ по несуществующим адресам 78h-7Fh___________

40h-7Fh

Используетсядляхранениянастроекчипсетасистемнойплаты,

___________назначение ячеек не стандартизовано__________________________

Свободные ячейки CMOS RTC иногда используют для привязки ПО к конкретному компьютеру (системной плате). Эта привязка выполняется в процессе установки ПО, и если не сохранить образ CMOS на диске, то при разрушении информации в CMOS (например, из-за разряда батарейки) пользователь потеряет право на использование ПО. По этой причине такой способ привязки нельзя считать корректным, поскольку изготовитель ПО на себя ответственность за батарейку, естественно, неберет.

В PC XT памяти CMOS не было, конфигурация оборудования (объем памяти, количество дисководов и т. п.) задавалась переключателями DIP (см. п. 3.6.1), состояние которых опрашивалось во время теста POST. Часов-календаря тоже не было, поэтому время и дату при загрузке приходилось задавать вручную (при незаданной дате на момент загрузки устанавливалась дата 01.01.1980 и время 00:00). Потом появились интерфейсные карты, в составе которых были и часы-календарь на микросхеме МС146818.

3.6.5. Системнаяподдержкатаймеров—

BIOS (Int lAh и Int 15h)

Сервисы BIOS Int lAh позволяют считывать и модифицировать значениясистемного таймера, даты и времени, а также установки будильника часов реального

З.б. АксессуарысистемнойплатыIBM PC 95

времени CMOS RTC. Перечисленные ниже номера функций указываются при вызовеврегистреАН.

тАН=0 — чтение системного таймера (двойного слова по адресу 40:006Eh в BIOS Data Area, инкрементируемого по прерываниям от канала 0 счетчикатаймера 8253/8254 примерно раз в 55 мс. Таймер обнуляется при выполнении теста POST после аппаратного сброса). Возвращает значение таймера, в СХ — старшую часть, в DX — младшую. AL=0, еслизапоследние 24 часа не было переполнения таймера. В современных версиях AL возвращает счетчик переполнений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).

шАН=1 — установка системного таймера (СХ — старшая часть, в DX — младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случаеошибкиустанавливается флагCF=1.

» АН=2 — чтение времени из RTC. Возвращает в упакованном BCD-формате час (в регистре СН), минуту (CL), секунду (DH) и признак коррекции летнего/зимнего времени (DL=1 — коррекция используется, DL=0 — нет). Признаком успешной операции является флаг CF=0. Во избежание ошибок некоторых BIOS при вызове флаг CF должен быть сброшен.

« АН=3 — установка времени в RTC, назначение регистров и признак результата аналогиченфункции2.

т АН=4 — чтение даты из RTC. Возвращает в упакованном BCD-формате век (в регистре СН), две старшие цифры года (CL), месяц (DH) и день (DL). Признаком успешной операции является флаг CF=0. Во избежание ошибок некоторых BIOS при вызове флаг CF должен быть сброшен.

« АН=5 — установка даты в RTC, назначение регистров и признак результата аналогиченфункции4.

» АН=б — установка времени срабатывания будильника RTC. Возвращает в упакованном BCD-формате час (в регистре СН), минуту (CL) и секунду (DH). Если будильник уже установлен, переустановка не производится и возвращается флаг CF=1. Присрабатывании будильник вызывает прерывание Int 4Ah.

« АН=7 — отменаустановкибудильника.

Функции BIOS Int 15h позволяют программировать таймер CMOS RTC — вводить задержку или запускать таймер установки флага, указывая время в микросекундах (СХ — старшее слово, DX — младшее). Нулевое значение интервала не вызывает никаких действий. Достижимое разрешение в зависимости от производительности ПК может достигать единиц миллисекунд, максимальная выдержка — около 70 часов. Перечисленные ниже номера функций указываются при зызове в регистреАНилиАХ.

» AH=86h — задержка на заданное время. Управление будет возвращено вызвавшему процессу только через указанный интервал. По окончании задержки будет установлен бит 7 в ячейке BDA 0040:ООАО. Таймер может оказаться занятым, тогда вызов сразу возвратит флаг CF=1 (при успехе CF=0, а в AL окажется маска, записанная в 8259А#2).

96Глава3. АрхитектураIBM PC-совместимогокомпьютера

«AX=8300h — запуск таймера, устанавливающего флаг (бит 7 ES:BX) после указанной задержки после указанной задержки. При успешном запуске CF=0; если таймер занят (он один) — CF=1 и AL=0. Управление возвращается процессу сразу, а флаг будет установлен через заданное время. Перед завершением программа, запускавшая таймер, должна его сбросить функцией 830 lh (во-первых, чтобы освободить; во-вторых, чтобы снять «адскую машинку», которая неожиданно сама может изменить значение ячейки памяти, вполне возможно уже задействованную другим, ничего не «подозревающим» процессом).

ж AX=8301h — сбростогожетаймера.

3.7. Взаимодействиепрограммс периферийнымиустройствами

Открытая архитектура PC предрасполагает к широкому использованию различных адаптеров расширения, подключаемых к стандартным внешним интерфейсам или устанавливаемых в слоты шин ISA/EISA, PCI, PC Card, MCA, VLB. Чаще всего программы с адаптерами общаются через инструкции обращения к памяти и портам ввода-вывода, используя прерывания, прямой доступ к памяти и непосредственное управление шиной. Общение через область памяти, к которой приписан адаптер, для нестандартных адаптеров ISA применяется редко, поскольку карта распределения памяти забита (и перегорожена) довольно плотно. Однако для устройств PCI рекомендуется общение через память, и в спецификацию PCI заложены требования по полной перемещаемости ресурсов, занимаемых любым устройством. Эта рекомендация вытекает из архитектурных особенностей процессоров х86, у которых существует множество способов адресации кпамятиитолькодва(непосредственныйикосвенный) — кпортамввода-вывода. Поэтому драйверы, ориентированные на перемещаемость ресурсов, получаются болееизящнымиприотображениивсехрегистровввода-выводанапамять(memory mapped I/O). Кроме того, пространство памяти гораздо просторнее — 4 Гбайт против 64 Кбайт, «перегороженных» вдоль и поперек традиционными регистрами PC-совместимых компьютеров.

3.7.1. Методыпередачиданных

Для передачи данных между программой и устройством применяют разные методы:

» программно-управляемый обмен; * программированный ввод-вывод; м обменпоканалуDMA;

« обмен в режиме прямого управления шиной.

Первыедваметодапозволяютпрограмменепосредственнообмениватьсяданнымисустройством — все данные во время обмена сустройством проходят че-