Поля Базового адреса сегмента, Границы и DPL, а также биты Грануляции и Присутствия выполняют функции, аналогичные тем, что были у них в дескрипторах сегментов данных. Поле Границы должно иметь значение, равное или больше чем 67H, на один байт меньше минимального размера сегмента состояния задачи. Попытка выполнить переключение на задачу, дескриптор TSS которой имеет границу меньше чем 67H, генерирует исключение. При использовании битового массива разрешения ввода/вывода требуется большее значение Границы. Большее значение Границы может также понадобиться для самой операционной системы, если система хранит в TSS дополнительные данные.
Как и в случае вызова подпрограмм, имеется две возможности вызова задачи - непосредственный вызов через указание селектора сегмента TSS нужной задачи в поле команды CALL и косвенный вызов через шлюз вызова задачи. Как и при вызове подпрограмм, непосредственный вызов возможен только в случае, если вызывающий код обладает уровнем привилегий, не меньшим, чем вызываемая задача. При вызове через шлюз (который может располагаться и в таблице LDT) достаточно иметь права доступа к шлюзу. При переключении задач процессор выполняет следующие действия:
· Выполняется команда CALL, селектор которой указывает на дескриптор сегмента типа TSS.
· В TSS текущей задачи сохраняются значения регистров процессора. На текущий сегмент TSS указывает регистр процессора TR, содержащий селектор сегмента.
· В TR загружается селектор сегмента TSS задачи, на которую переключается процессор.
· Из нового TSS в регистр LDTR переносится значение селектора таблицы LDT в таблице GDT задачи.
· Восстанавливаются значения регистров процессора (из соответствующих полей нового сегмента TSS).
· В поле селектора возврата заносится селектор сегмента TSS снимаемой с выполнения задачи для организации возврата к прерванной задаче в будущем.
Вызов задачи через шлюз происходит аналогично, добавляется только этап поиска дескриптора сегмента TSS по значению селектора дескриптора шлюза вызова. Использование всех возможностей, предоставляемых процессорами Intel 80386, 80486 и Pentium, позволяет организовать операционной системе высоконадежную многозадачную среду.
86. Параллелизм на уровне команд. Параллелизм на уровне процессоров.
Параллелизм на уровне команд имеет место, когда обработка нескольких команд или выполнение различных этапов одной и той же команды может перекрываться во времени. Разработчики вычислительной техники издавна прибегали к методам, известным под общим названием «совмещения операций», при котором аппаратура ВМ в любой момент времени выполняет одновременно более одной операции. Этот общий принцип включает в себя два понятия: параллелизм и конвейеризацию. Хотя у них много общего и их зачастую трудно различить на практике, термины эти отражают два принципиально различных подхода.
В первом варианте совмещение операций достигается за счет того, что в составе вычислительной системы отдельные устройства присутствуют в нескольких копиях. Так в состав процессора может входить несколько АЛУ, и высокая производительность обеспечивается за счет одновременной работы всех этих АЛУ.
Во втором варианте процессоры выделяются определенным процессам либо по инициативе программы, либо в процессе работы операционной системой.
М. Флинн основывает свою макроскопическую классификацию параллельной архитектуры не на структуре машин, а скорее на том, как в машине ее команды увязываются с обрабатываемыми данными. Поток определяется как последовательность элементов(команд или данных), выполняемая или обрабатываемая процессором. В соответствии с тем, являются ли потоки или данных одиночными или множественными, возникли четыре больших класса:
1. ОКОД - один поток команд - один поток данных. Это является представлением обычной последовательной ЭВМ фон Неймана, в которой имеется один поток команд (и поэтому практически только одно устройство обработки команд), где каждая арифметическая команда инициирует одну арифметическую операцию с одним потоком данных, логически связанных аргументов и результатов. Не играет роли. применяется ли конвейерная обработка для повышения скорости обработки команд или арифметических операций. Это не что иное как последовательная скалярная ЭВМ, примерами которой являются CDC 6600(неконвейерная); CDC 7600 (конвейерная арифметика); AMDAHL 470/6 (конвейерная обработка команд).
2. ОКМД - один поток команд - много потоков данных. В таких ЭВМ сохраняется один поток команд, но уже векторных, которые инициируют множественные операции. Каждый элемент вектора рассматривается как член того потока данных, исключая вырожденный случай векторов единичной длины, т.е. имеется много потоков данных. Этот класс поэтому включает в себя все машины с векторными командами. Опять же не имеет значения, как реализована векторная обработка: посредством конвейеров или с помощью матриц процессоров. Примеры: машина CRAY-1(конвейерная вектор-ЭВМ); ILLIAC IV(процессорная матрица); DAP (процессорная матрица);
3. МКОД - много потоков команд - один поток данных. Этот класс, по-видимому, вакантен, так как подразумевается, что несколько команд работают одновременно с одним элементом данных. Флинн указывает, что этот класс включает специализированную организацию потока, использующую много потоков команд с одиночной последовательностью данных, но никаких примеров по данному классу не приводит.
4. МКМД - много потоков команд - много потоков данных. Много потоков команд предусматривают существование нескольких устройств обработки команд и, следовательно, необходимо несколько потоков данных. Поэтому этот класс включает в себя все формы мультипроцессорных конфигураций - от объединенных больших ЭВМ до больших матриц микропроцессоров. Следующие термины и понятия стали общеиспользуемыми на языке научных работников в области ЭВМ:
ОКМД - синоним матрицы процессоров, работающих в синхронном режиме под действием общего УУ. Этот термин применяется, чтобы отделить архитектуру матричной структуры от конвейерной, и не включает в себя конвейерную ЭВМ.
МКМД - синоним матрицы объединенных процессоров, каждый из которых подчиняется своему собственному потоку команд, как указывалось в первоначальном определении Флинна.
Систематика Шора.
Классификация Шора базируется на том, как построена машина из своих составных частей. Было определено шесть различных типов машин, различаемых по цифровому обозначению.
Машина I - обычная архитектура по фон Нейману с одним устройством управления, устройством обработки (УО), памятью команд(ПК) и памятью данных(ПД). Все разряды слова выбираются из единственной ПД для их параллельной обработки в УО. Устройство обработки может содержать множество функциональных устройств, которые могут быть, а могут и не быть конвейерными: поэтому эта группа включает в себя как конвейерную скалярную (например, CDC 7600), так и конвейерную векторную ЭВМ (например, CRAY-1), архитектурная схожесть которых уже отмечалась.
Машина II — это машина I за исключением того, что считывание данных из ПД производится из разрядной секции всех слов памяти, а не из всех разрядов одного слова, и УО организовано для выполнения операций разрядно-последовательным способом. Если память рассматривать как двумерную матрицу разрядов, где каждая строка содержит одно слово, то машина II считывает вертикальную секцию разрядов, тогда как машина - горизонтальную секцию. Примерами являются машины DAP фирмы ICL и STARAN.
Машина III представляет собой комбинацию машин I и II. В ней содержится двумерная память, из которой считывание можно осуществлять либо словами, либо разрядными секциями; горизонтальное УО (гор. ОУ) обрабатывает слова, а вертикальное (верт. ОУ) - разрядные секции. В двух словах, она представляет собой ортогональную машину Шумана. Как машину DAP, так и STARAN можно запрограммировать на выполнение функций машина III, но поскольку они не имеют отдельных ОУ для обработки слов и разрядных секций, их нельзя отнести к этому классу. Серия машин OMEN-60 фирмы Sanders Associates является реализацией машины III с точным соответствием упомянутому определению.
Машина IV получается путем дублирования УО и ПД машины I (называемых процессорными элементами), а команды этому ансамблю ПЭ выдаются единственным устройством управления. Хорошо известным примером является машина РЕРЕ. Отсутствие соединений между ПЭ ограничивает применимость машины, но делает дальнейшее наращивание ПЭ относительно простым.
Машина V представляет собой машину IV с дополнительным оборудованием, в котором ПЭ устанавливаются в линию и обеспечиваются соединения каждого ПЭ с ближайшими соседними ПЭ. Это означает, что любой ПЭ может обращаться к словам в своей памяти и памяти непосредственных соседей. Примером такой машины является ILLIAC IV, в которой предусмотрена кратчайшая связь между каждым восемью ПЭ.
Машина VI. Все машины I - V придерживаются концепции отдельной памяти данных и устройств обработки вместе с шиной данных или коммутирующим элементом между ними и, исключая некоторые реализации одноразрядных процессоров машины II (например, DAP), содержат ПЭ и ПД на одной плате ИС. Машина VI, названная матрицей с функциональной памятью (памятью с встроенной логикой), представляет собой другой подход, предусматривающий распределение логики процессора по всему запоминающему устройству. Примерами могут служить как простые ассоциативные запоминающие устройства, так и сложные ассоциативные процессоры. Забыв на время о трудном случае с конвейерной векторной ЭВМ, можно сделать вывод, что машины II - V являются разновидностями ОКМД класса Флинна и что машина I соответствует классу ОКОД. Однако, конвейерная векторная ЭВМ, для которой несомненно нужна своя категория, неудовлетворительно отражена в этой классификации, т.к. мы находим ее в той же группе, куда помещена конвейерная скалярная ЭВМ без внутреннего распараллеливания, не говоря уже о требовании к выполнению арифметических действия разрядно-параллельным способом.
87. Принципы организации ввода-вывода и команды ввода-вывода.
В вычислительной системе, состоящей из множества подсистем, необходим механизм для их взаимодействия. Эти подсистемы должны быстро и эффективно обмениваться данными. Одним из простейших механизмов, позволяющих организовать взаимодействие различных подсистем, является единственная центральная шина, к которой подсоединяются все подсистемы. Доступ к такой шине разделяется между всеми подсистемами. Подобная организация имеет два основных преимущества: низкая стоимость и универсальность. Поскольку такая шина является единственным местом подсоединения для разных устройств, новые устройства могут быть легко добавлены, и одни и те же периферийные устройства можно даже применять в разных вычислительных системах, использующих однотипную шину. Стоимость такой организации получается достаточно низкой, поскольку для реализации множества путей передачи информации используется единственный набор линий шины, разделяемый множеством устройств.
Главным недостатком организации с единственной шиной является то, что шина создает узкое горло, ограничивая, возможно, максимальную пропускную способность ввода/вывода. Если весь поток ввода/вывода должен проходить через центральную шину, такое ограничение пропускной способности весьма реально. В коммерческих системах, где ввод/вывод осуществляется очень часто, а также в суперкомпьютерах, где необходимые скорости ввода/вывода очень высоки из-за высокой производительности процессора, одним из главных вопросов разработки является создание системы нескольких шин, способной удовлетворить все запросы.
Одна из причин больших трудностей, возникающих при разработке шин, заключается в том, что максимальная скорость шины главным образом лимитируется физическими факторами: длиной шины и количеством подсоединяемых устройств (и, следовательно, нагрузкой на шину). Эти физические ограничения не позволяют произвольно ускорять шины. Требования быстродействия системы ввода/вывода и высокой пропускной способности являются противоречивыми. В современных крупных системах используется целый комплекс взаимосвязанных шин, каждая из которых обеспечивает упрощение взаимодействия различных подсистем, высокую пропускную способность, избыточность (для увеличения отказоустойчивости) и эффективность.
Традиционно шины делятся на шины, обеспечивающие организацию связи процессора с памятью, и шины ввода/вывода. Шины ввода/вывода могут иметь большую протяженность, поддерживать подсоединение многих типов устройств, и обычно следуют одному из шинных стандартов. Шины процессор-память, с другой стороны, сравнительно короткие, обычно высокоскоростные и соответствуют организации системы памяти для обеспечения максимальной пропускной способности канала память-процессор. На этапе разработки системы, для шины процессор-память заранее известны все типы и параметры устройств, которые должны соединяться между собой, в то время как разработчик шины ввода/вывода должен иметь дело с устройствами, различающимися по задержке и пропускной способности.
С целью снижения стоимости некоторые компьютеры имеют единственную шину для памяти и устройств ввода/вывода. Такая шина часто называется системной. Персональные компьютеры, как правило, строятся на основе одной системной шины в стандартах ISA, EISA или MCA. Необходимость сохранения баланса производительности по мере роста быстродействия микропроцессоров привела к двухуровневой организации шин в персональных компьютерах на основе локальной шины. Локальной шиной называется шина, электрически выходящая непосредственно на контакты микропроцессора. Она обычно объединяет процессор, память, схемы буферизации для системной шины и ее контроллер, а также некоторые вспомогательные схемы. Типичными примерами локальных шин являются VL-Bus и PCI.
Рассмотрим типичную транзакцию на шине. Шинная транзакция включает в себя две части: посылку адреса и прием (или посылку) данных. Шинные транзакции обычно определяются характером взаимодействия с памятью: транзакция типа "Чтение" передает данные из памяти (либо в ЦП, либо в устройство ввода/вывода), транзакция типа "Запись" записывает данные в память. В транзакции типа "Чтение" по шине сначала посылается в память адрес вместе с соответствующими сигналами управления, индицирующими чтение. Память отвечает, возвращая на шину данные с соответствующими сигналами управления. Транзакция типа "Запись" требует, чтобы ЦП или устройство в/в послало в память адрес и данные и не ожидает возврата данных. Обычно ЦП вынужден простаивать во время интервала между посылкой адреса и получением данных при выполнении чтения, но часто он не ожидает завершения операции при записи данных в память.
Разработка шины связана с реализацией ряда дополнительных возможностей. Решение о выборе той или иной возможности зависит от целевых параметров стоимости и производительности. Первые три возможности являются очевидными: раздельные линии адреса и данных, более широкие (имеющие большую разрядность) шины данных и режим групповых пересылок (пересылки нескольких слов) дают увеличение производительности за счет увеличения стоимости.
Главное устройство шины (bus master). - это устройство, которое может инициировать транзакции чтения или записи. ЦП, например, всегда является главным устройством шины. Шина имеет несколько главных устройств, если имеется несколько ЦП или когда устройства ввода/вывода могут инициировать транзакции на шине. Если имеется несколько таких устройств, то требуется схема арбитража, чтобы решить, кто следующий захватит шину. Арбитраж часто основан либо на схеме с фиксированным приоритетом, либо на более "справедливой" схеме, которая случайным образом выбирает, какое главное устройство захватит шину.
В настоящее время используются два типа шин, отличающиеся способом коммутации: шины с коммутацией цепей (и шины с коммутацией пакетов, получившие свои названия по аналогии со способами коммутации в сетях передачи данных. Шина с коммутацией пакетов при наличии нескольких главных устройств шины обеспечивает значительно большую пропускную способность по сравнению с шиной с коммутацией цепей за счет разделения транзакции на две логические части: запроса шины и ответа. Такая методика получила название "расщепления" транзакций. В некоторых системах такая возможность называется шиной соединения/разъединения или конвейерной шиной. Транзакция чтения разбивается на транзакцию запроса чтения, которая содержит адрес, и транзакцию ответа памяти, которая содержит данные. Каждая транзакция теперь должна быть помечена (тегирована) соответствующим образом, чтобы ЦП и память могли сообщить что есть что.
Шина с коммутацией цепей не делает расщепления транзакций, любая транзакция на ней есть неделимая операция. Главное устройство запрашивает шину, после арбитража помещает на нее адрес и блокирует шину до окончания обслуживания запроса. Большая часть этого времени обслуживания при этом тратится не на выполнение операций на шине (например, на задержку выборки из памяти). Таким образом, в шинах с коммутацией цепей это время просто теряется. Расщепленные транзакции делают шину доступной для других главных устройств пока память читает слово по запрошенному адресу. Это, правда, также означает, что ЦП должен бороться за шину для посылки данных, а память должна бороться за шину, чтобы вернуть данные. Таким образом, шина с расщеплением транзакций имеет более высокую пропускную способность, но обычно она имеет и большую задержку, чем шина, которая захватывается на все время выполнения транзакции. Транзакция называется расщепленной, поскольку произвольное количество других пакетов или транзакций могут использовать шину между запросом и ответом.
Последний вопрос связан с выбором типа синхронизации и определяет является ли шина синхронной или асинхронной. Если шина синхронная, то она включает сигналы синхронизации, которые передаются по линиям управления шины, и фиксированный протокол, определяющий расположение сигналов адреса и данных относительно сигналов синхронизации. Поскольку практически никакой дополнительной логики не требуется для того, чтобы решить, что делать в следующий момент времени, эти шины могут быть и быстрыми, и дешевыми. Однако они имеют два главных недостатка. Все на шине должно происходить с одной и той же частотой синхронизации, поэтому из-за проблемы перекоса синхросигналов, синхронные шины не могут быть длинными. Обычно шины процессор-память синхронные.
Асинхронная шина, с другой стороны, не тактируется. Вместо этого обычно используется старт-стопный режим передачи и протокол "рукопожатия" между источником и приемником данных на шине. Эта схема позволяет гораздо проще приспособить широкое разнообразие устройств и удлинить шину без беспокойства о перекосе сигналов синхронизации и о системе синхронизации. Если может использоваться синхронная шина, то она обычно быстрее, чем асинхронная, из-за отсутствия накладных расходов на синхронизацию шины для каждой транзакции. Выбор типа шины (синхронной или асинхронной) определяет не только пропускную способность, но также непосредственно влияет на емкость системы ввода/вывода в терминах физического расстояния и количества устройств, которые могут быть подсоединены к шине. Асинхронные шины по мере изменения технологии лучше масштабируются. Шины ввода/вывода обычно асинхронные.
Команды ввода/вывода процессора i486 обеспечивают доступ к портам ввода/вывода процессора для пересылки данных. Эти команды в качестве операнда имеют адрес порта в адресном пространстве ввода/вывода. Существует два вида команд ввода/вывода:
Команды, выполняющие пересылку отдельного элемента (байта, слова или двойного слова) в регистр или из регистра.
Команды, пересылающие строки элементов (строки байтов, слов или двойных слов), расположенных в памяти. Эти команды называются "строковыми командами ввода/вывода", или "блочные команды ввода/вывода".
Эти команды во время цикла шины устанавливают низкое состояние (логический 0) сигнала M/IO#, указывая внешнему аппаратному обеспечению на то, что происходит доступ к адресному пространству ввода/вывода. При использовании ввода/вывода, управляемого памятью, использовать команды ввода/вывода не имеет смысла.
88. BIOS.
BIOS (basic input/output system) - базовая система ввода-вывода - это встроенное в компьютер программное обеспечение, которое ему доступно без обращения к диску. На PC BIOS содержит код, необходимый для управления клавиатурой, видеокартой, дисками, портами и другими устройствами.
Обычно BIOS размещается в микросхеме ПЗУ (ROM), размещенной на материнской плате компьютера (поэтому этот чип часто называют ROM BIOS). Эта технология позволяет BIOS всегда быть доступным, несмотря на повреждения, например, дисковой системы. Это также позволяет компьютеру самостоятельно загружаться. Поскольку доступ к RAM (оперативной памяти) осуществляется значительно быстрее, чем к ROM, многие производители компьютеров создают системы таким образом, чтобы при включении компьютера выполнялось копирование BIOS из ROM в оперативную память. Задействованная при этом область памяти называется Shadow Memory (теневая память).
В настоящее время, почти все материнские платы комплектуются Flash BIOS, BIOSом, который в любой момент может быть перезаписан в микросхеме ROM при помощи специальной программы.
BIOS PC стандартизирован, поэтому, в принципе менять его, также как, например, операционные системы нет необходимости. Дополнительные возможности компьютера можно использовать только использованием нового программного обеспечения.
BIOS, который поддерживает технологию Plug-and-Play, называется PnP BIOS. При использовании этой технологии BIOS должен быть обязательно прошит во Flash ROM.
Предназначение базовой системы ввода/вывода: обслуживание компонентов компьютера, определение и установка взаимосвязи между этими компонентами, режимов их работы.
Одна из первых функций BIOS - автоматическое тестирование основных аппаратных компонентов при включении машины, включая оперативную память (RAM - Random Access Memory). Если в процессе тестирования памяти или других аппаратных компонентов обнаруживаются ошибки, BIOS выдает на экран соответствующие сообщения. Дальнейшая работа машины на этом прекращается и пользователю нужно принимать меры к устранению выявленной ошибки.
Вторая важная функция BIOS, вступающая в действие по окончании тестирования, - вызов блока начальной загрузки DOS. Поскольку DOS - сложная система, состоящая из нескольких модулей, загрузка ее в память проходит в две ступени; сначала BIOS загружает с системного диска в оперативную память специальный блок начальной загрузки, а затем уже передает на него управление, а тот, в свою очередь, осуществляет загрузку других модулей DOS. При такой двухступенчатой организации загрузки с BIOS снимается забота о поиске и настройке различных модулей DOS. Единственное условие нормальной работы BIOS - это обнаружение на фиксированном месте системного диска блока начальной загрузки. При этом роль системного диска в ПК может играть гибкий или жесткий магнитный диск.
Третья важная функция BIOS - обслуживание системных вызовов или прерываний. Системные вызовы вырабатываются программными или аппаратными средствами с целью выполнения различных операций. Для реализации системных вызовов используется механизм прерываний. Суть этого механизма заключается в том, что текущая работа машины может быть приостановлена на короткое время одним из сигналов, который указывает на возникновение ситуации, требующей немедленной обработки. Прерывания можно разделить на три группы: аппаратные, логические и программные. Источники аппаратных прерываний - падение напряжения питания, нажатие клавиши на клавиатуре, приход очередного импульса от счетчика времени, возникновение специальных сигналов от накопителей на гибких или жестких дисках и др. Логические, или процессорные, прерывания возникают при различных нестандартных ситуациях в работе основного процессора - деление на нуль, переполнение регистров, появление "точки останова" и др. Программные прерывания - самая обширная категория. Вырабатываются они, когда программа хочет получить определенный сервис со стороны другой программы, причем этот сервис обычно связан с работой аппаратных средств.
Каждое прерывание имеет свой уникальный номер и с ним может быть связана определенная подпрограмма, призванная обслуживать возникшую ситуацию. Сама обслуживающая подпрограмма тоже может быть приостановлена другим прерыванием, но чаще всего на период работы подпрограммы, обслуживающей некоторое прерывание, другие прерывания "маскируются", т.е. не обслуживаются немедленно, а ставятся в очередь.
Итак, в аппаратных компонентах машины, в самой DOS и в прикладных программах могут вырабатываться прерывания, которые нужно обслуживать. На BIOS возлагается задача обслуживания прерываний нижнего уровня - тех, которые требуют непосредственного управления аппаратными компонентами. Этим прерываниям присвоены номера с 0 по 31 (шестнадцатиричные номера 0 - 1F). Другие прерывания - с номерами 32-63 (шестнадцатиричные номера 20 - 3F) - относятся к более высокому уровню, и их обслуживание возлагается на другие модули DOS.
Таким образом, BIOS является своеобразной программной оболочкой вокруг аппаратных средств ПК, предоставляя возможность другим программам, в частности самой DOS, обращаться к аппаратным компонентам через механизм прерываний.
89. Таймер и системные часы.
Компьютеры IBM AT и PS/2 оснащены часами реального времени. Эти часы питаются от аккумулятора, поэтому их показания не пропадают при выключении компьютера. Доступ к часам реального времени возможен либо через ячейки КМОП-памяти, либо через специальные функции BIOS (что более предпочтительно с точки зрения независимости работы программы от особенностей аппаратуры). Использование регистров КМОП-памяти часами реального времени приведено в таблице:
Часы реального времени вырабатывают аппаратное прерывание IRQ8, которому соответствует прерывание с номером 70h. Это прерывание может вырабатываться по трем причинам:
- Прерывание по окончанию изменения данных. Вырабатывается при установленном в 1 бите 4 регистра состояния B после каждого обновления регистров часов.
- Прерывание будильника вырабатывается при совпадении регистров часов и регистров будильника и при установленном в 1 бите 5 регистра состояний B.
- Периодическое прерывание вырабатывается с интервалом примерно 1 миллисекунда при установленном в 1 бите 6 регистра состояний B.
При срабатывании будильника BIOS вырабатывает прерывание INT 4Ah. Программа может подготовить собственный обработчик для этого прерывания. Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам КМОП-памяти, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания 1Ah.
Таймер Кроме часов реального времени, любой компьютер (даже простейший IBM PC) содержит устройство, называемое системным таймером. Это устройство подключено к линии запроса на прерывание IRQ0 и вырабатывает прерывание INT 8h приблизительно 18,2 раза в секунду (точное значение - 1193180/65536 раз в секунду).
При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Этот обработчик каждый раз увеличивает на 1 текущее значение четырехбайтовой переменной, располагающейся в области данных BIOS по адресу 0000:046Ch - счетчик тиков таймера. Если этот счетчик переполняется (прошло более 24 часов с момента запуска таймера), в ячейку 0000:0470h заносится 1.
Другое действие, выполняемое стандартным обработчиком прерывания таймера - контроль за работой двигателей НГМД. Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель. Ячейка с адресом 0000:0440h содержит время, оставшееся до выключения двигателя. Это время постоянно уменьшается обработчиком прерывания таймера. Когда оно становится равно 0, обработчик выключает двигатель НГМД.
Последнее действие, которое выполняет обработчик прерывания таймера - вызов прерывания INT 1Ch. После инициализации системы вектор INT 1Ch указывает на команду IRET, т.е. ничего не выполняется. Программа может установить собственный обработчик этого прерывания для того чтобы выполнять какие-либо периодические действия.
Необходимо отметить, что прерывание INT 1Ch вызывается обработчиком прерывания INT 8h до сброса контроллера прерывания, поэтому во время выполнения прерывания INT 1Ch все аппаратные прерывания запрещены. В частности, запрещены прерывания от клавиатуры.
Обработчик прерывания INT 1Ch должен заканчиваться командой IRET. Если же вы подготавливаете собственный обработчик для прерывания INT 8h, перед завершением его работы необходимо сбросить контроллер прерываний.
Таймер обычно реализуется на микросхеме Intel 8253 (для компьютеров IBM PC и IBM XT) или 8254 (для компьютеров IBM AT и IBM PS/2).
Таймеры 8253 и 8254 состоят из трех независимых каналов, или счетчиков. Каждый канал содержит регистры:
- состояния канала RS (8 разрядов);
- управляющего слова RSW (8 разрядов);
- буферный регистр OL (16 разрядов);
- регистр счетчика CE (16 разрядов);
- регистр констант пересчета CR (16 разрядов).
Каналы таймера подключаются к внешним устройствам при помощи трех линий:
GATE - управляющий вход;
CLOCK - вход тактовой частоты;
OUT - выход таймера.
Регистр счетчика CE работает в режиме вычитания. Его содержимое уменьшается по заднему фронту сигнала CLOCK при условии, что на вход GATE установлен уровень логической 1.
В зависимости от режима работы таймера при достижении счетчиком CE нуля тем или иным образом изменяется выходной сигнал OUT.
Буферный регистр OL предназначен для запоминания текущего содержимого регистра счетчика CE без остановки процесса счета. После запоминания буферный регистр доступен программе для чтения.
Регистр констант пересчета CR может загружаться в регистр счетчика, если это требуется в текущем режиме работы таймера. Как нетрудно догадаться по названию, регистры состояния канала и управляющего слова предназначены, соответственно, для определения текущего состояния канала и для задания режима работы таймера.
Возможны шесть режимов работы таймера. Они разделяются на три типа:
Режимы 0, 4 - однократное выполнение функций. Режимы 1, 5 - работа с перезапуском. Режимы 2, 3 - работа с автозагрузкой.
В режиме однократного выполнения функций перед началом счета содержимое регистра констант пересчета CR переписывается в регистр счетчика CE по сигналу CLOCK, если сигнал GATE установлен в 1. В дальнейшем содержимое регистра CE уменьшается по мере прихода импульсов CLOCK. Процесс счета можно приостановить, если подать на вход GATE уровень логического 0. Если затем на вход GATE подать 1, счет будет продолжен дальше. Для повторения выполнения функции необходима новая загрузка регистра CR, т.е. повторное программирование таймера.
При работе с перезапуском не требуется повторного программирования таймера для выполнения той же функции. По фронту сигнала GATE значение константы из регистра CR вновь переписывается в регистр CE, даже если текущая операция не была завершена.
В режиме автозагрузки регистр CR автоматически переписывается в регистр CE после завершения счета. Сигнал на выходе OUT появляется только при наличии на входе GATE уровня логической 1. Этот режим используется для создания программируемых импульсных генераторов и генераторов прямоугольных импульсов (меандра).
В компьютере IBM PC/XT/AT/PS2 задействованы все три канала таймера.
Канал 0 используется в системных часах времени суток (не следует путать с часами реального времени, реализованными на другой микросхеме). Этот канал работает в режиме 3 и используется как генератор импульсов с частотой примерно 18.2 Гц. Именно эти импульсы вызывают аппаратное прерывание INT 8h.
Канал 1 используется для регенерации содержимого динамической памяти компьютера. Выход канала OUT используется для запроса к каналу прямого доступа DMA, который и выполняет обновление содержимого памяти. Вам не следует перепрограммировать этот канал, так как это может привести к нарушениям в работе основной оперативной памяти компьютера.
Канал 2 подключен к громкоговорителю компьютера и может быть использован для генерации различных звуков или музыки, либо как генератор случайных чисел. Канал использует режим 3 таймера 8253/8254.
90. Видеосистемы. Состав и общие характеристики. Стандарт VESA.
Видеоадаптеры EGA и VGA можно условно разделить на шесть логических блоков:
*Видеопамять. В видеопамяти размещаются данные, отображаемые адаптером на экране дисплея. Для видеоадаптеров EGA и VGA видеопамять, как правило, имеет объем 256К байт. На некоторых моделях Super VGA и XGA объем видеопамяти может быть увеличен до 1М байт. Видеопамять находится в адресном пространстве процессора и программы могут непосредственно производить с ней обмен данными. Физически видеопамять разделена на четыре банка или цветовых слоя, разделяющих единое адресное пространство.
* Графический контроллер. Посредством его происходит обмен данными между центральным процессором компьютера и видеопамятью. Аппаратура графического контроллера позволяет производить над данными, поступающими в видеопамять, и над данными, расположенными в регистрах-защелках (регистры-защелки описаны ниже) простейшие логические операции (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, циклический сдвиг).
* Последовательный преобразователь. Выбирает из видеопамяти один или несколько байт, преобразует их в последовательный поток битов и затем передает контроллеру атрибутов.
* Контроллер атрибутов. Преобразует информацию о цветах из формата, в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ. Преобразование цветов осуществляется в соответствии с таблицей цветовой палитры (Color Look-up Table). Модифицируя таблицу цветовой палитры, можно выбирать 16 цветов, поддерживаемых видеоадаптером EGA из 64 цветов, которые может отображать цветной улучшенный дисплей.
* Синхронизатор. Управляет всеми временными параметрами видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеоадаптера.
На рисунке представлена блок схема видеоадаптеров EGA и VGA, отображающая связи между их основными логическими блоками.
Стандарт VESA описывает расширение прерывания INT 10H, отвечающего за управление видео адаптерами. Поддержка VESA обычно включается производителями видеоадаптеров в ПЗУ самого адаптера или поставляется в виде отдельной резидентной программы. Для того чтобы вызывать функции VBE (VESABIOSExtension) следует записать в регистр AH значение 4FH. Если VBE поддерживается то в AL вернется 4FH. С помощью VBE легко использовать многие возможности режима SVGA.
Этот драйвер был разработатн и представлен как универсальный драйвер для любых карт с VESAVBE 2.0 совместимым BIOS. Другое преимущество этого драйвера заключается в том ,что он пытается принудительно включить TV вывод. VESA BIOS EXTENSION (VBE) Версия 3.0 Дата: 16 сентября, 1998 (Страница 70) гласит:
Dual-Controller Designs. VBE 3.0 поддерживает дизайн с двумя контроллерами, предполагая, что поскольку оба контроллера обычно имеют одного производителя, и управляются единственной BIOSROM на той же карте, то возможно скрыть от приложения факт наличия на самом деле двух контроллеров. Это ограничивает их независимое одновременное использование, но позволяет приложениям, выпущенным до VBE 3.0 нормально работать. VBE функция 00h (Вернуть информацию о контроллере) возвращает комбинированную информацию двух контроллеров, включая объединенный список доступных режимов. Когда приложение выбирает режим, активируется соответствующий контроллер. Каждая из остальных VBE функций затем работает с активным контроллером.
Так что у вас ест шанс получить работающий TV выход, используя этот драйвер. (Предполагается, что TV-выход - отдельный контроллер[standalonehead] или отдельный выход как минимум.)