Вычислительные системы
ВТОРОЙ СЕМЕСТР
ЗАПОМИНАЮЩИЕ УСТРОЙСТВА ЭВМ. Запоминающие устройства классифицируют: 1. По типу запоминающих элементов (полупроводниковые, магнитные, конденсаторные, оптоэлектронные, голографические, криоген- ные). 2. По функциональному назначению (оперативные (ОЗУ), буферные (БЗУ), сверхоперативные (СОЗУ), внешние (ВЗУ), постоянные (ПЗУ)). 3. По способу организации обращения (с последовательным поис- ком, с прямым доступом, адресные, ассоциативные, стековые, мага- зинные). 4. По характеру считывания (с разрушением или без разрушения информации). 5. По способу хранения (статические или динамические). 6. По способу организации (однокоординатные, двухкоординатные, трехкоординатные, двух/трехкоординатные).
ПАМЯТЬ ЭВМ - совокупность всех запоминающих устройств, вхо- дящих в состав ЭВМ. Обычно в состав ЭВМ входит несколько различ- ных типов ЗУ. Производительность и вычислительные возможности ЭВМ в значи- тельной степени определяются составом и характеристиками ее ЗУ. Основными операциями в памяти в общем случае являются зане- сение информации в память - запись и выборка информации из памя- ти - считывание. Обе эти операции называются обращением к памяти или, подробнее, обращением при считывании и обращением при запи- си. При обращении к памяти производится считывание или запись некоторой единицы данных - различной для устройств разного типа. Такой единицей может быть бит, байт, машинное слово или блок дан- ных. Важнейшими характеристиками отдельных устройств памяти явля- ются емкость памяти, удельная емкость, быстродействие. ЕМКОСТЬ ПАМЯТИ определяется максимальным количеством данных, которые могут в ней храниться. Емкость измеряется в двоичных еди- ницах (битах), машинных словах, но большей частью в байтах. УДЕЛЬНАЯ ЕМКОСТЬ есть отношение емкости ЗУ к его физическому объему. БЫСТРОДЕЙСТВИЕ ПАМЯТИ определяется продолжительностью опера- ций обращения, т.е. временем, затрачиваемым на поиск единицы информации в памяти и на ее считывание, или временем на поиск места в памяти, предназначенного для хранения данной единицы ин- формации, и на ее запись. . - 2 - В некоторых устройствах памяти считывание информации сопро- вождается ее разрушением (стиранием). В таком случае цикл обраще- ния должен содержать операцию восстановления (регенерации) счи- танной информации на прежнем месте в памяти. Таким образом, продолжительность обращения к памяти при счи- тывании t 4обр_с 0 = t 4дост_с 0 + t 4счит 0 + t 4рег 0, где t 4дост_с 0 - промежуток времени между моментом начала операции считывания и моментом, когда становится возможным доступ к данной единице информации; t 4счит 0 - продолжительность самого физического процесса считывания; t 4рег 0 - время, затрачиваемое на регенерацию информации (равно нулю для ЗУ, которым регенерация не требуется). Продолжительность обращения при записи t 4обр_з 0 = t 4дост_з 0 + t 4подг 0 + t 4зап 0, где t 4дост_з 0 - промежуток времени между моментом начала операции записи и моментом, когда становится возможным доступ к запоминаю- щим элементам; t 4подг 0 - время подготовки, расходуемое на приведе- ние в исходное состояние запоминающих элементов для записи заданной единицы информации; t 4зап 0 - время занесения информации. В качестве продолжительности цикла обращения к памяти прини- мается величина t 4обр 0 = max(t 4обр_с 0,t 4обр_з 0). Принято разделять все запоминающие устройства на два основ- ных типа: оперативные и внешние. Основным критерием для такого разделения служит скорость доступа к информации. ОЗУ (оперативное запоминающее устройство) - запоминающее устройство, предназначенное для информации, непосредственно участвующей в процессе выполнения операций, выполняемых процессо- ром. ОЗУ должно обеспечивать поступление новой информации в процессор с той же скоростью, с какой он ее обрабатывает. ВЗУ (внешнее запоминающее устройство) - запоминающее устрой- ство, предназначенное для длительного хранения массивов информа- ции и обмена ими с ОЗУ. Обычно строятся на базе магнитных носи- телей информации. Само название этого класса устройств имеет исторический характер и произошло от больших ЭВМ, в которых все ВЗУ, как более медленные и громоздкие, размещались в собственном корпусе, а не в корпусе основного модуля. . - 3 - Внутренняя память ЭВМ организуется как взаимосвязанная сово- купность нескольких типов ЗУ. В ее состав, кроме ОЗУ, могут входить следующие типы ЗУ: ПОСТОЯННОЕ ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО (ПЗУ) - запоминающее уст- ройство, из которого может производиться только выдача хранящейся в нем информации. Занесение информации в ПЗУ производится при его изготовлении. ПОЛУПОСТОЯННОЕ (ПРОГРАММИРУЕМОЕ) ЗУ (ППЗУ) - ЗУ, в котором информация может обновляться с помощью специальной аппаратуры пе- ред режимом автоматической работы ЭВМ. Если возможно многократное обновление информации, то иногда такое ППЗУ называют репрограмми- руемым (РППЗУ). БУФЕРНОЕ ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО (БЗУ) - запоминающее уст- ройство, предназначенное для промежуточного хранения информации при обмене данными между устройствами ЭВМ, работающими с различ- ными скоростями. Конструктивно оно может быть частью любого из функциональных устройств. Местная память (cверхоперативное ЗУ, СОЗУ) - буферное запо- минающее устройство, включаемое между ОЗУ и процессором или каналами. Различают местную память процессора и местную память каналов. СТЕК (магазин) - специально организованоое ОЗУ, блок хране- ния которого состоит из регистров, соединенных друг с другом в цепочку, по которой их содержимое при обращении к ЗУ передается (сдвигается) в прямом или обратном направлении. Кеш-память - разновидность стека, в котором хранятся копии некоторых команд из ОЗУ. ВИДЕОПАМЯТЬ - область ОЗУ ЭВМ, в которой размещены данные, видимые на экране дисплея.
АДРЕСНАЯ, АССОЦИАТИВНАЯ И СТЕКОВАЯ ОРГАНИЗАЦИЯ ПАМЯТИ Запоминающее устройство, как правило, содержит множество одинаковых запоминающих элементов, образующих запоминающий мас- сив. Массив разделен на отдельные ячейки; каждая из них предназ- начена для хранения двоичного кода, число разрядов в котором определяется шириной выборки памяти (байт, машинное слово или несколько слов). Способ организации памяти зависит от методов размещения и поиска информации в запоминающем массиве. По этому признаку различают адресную, ассоциативную и стековую память. . - 4 - АДРЕСНАЯ ПАМЯТЬ При адресной организации памяти размещение и поиск информа- ции в запоминающем массиве основаны на использовании адреса хранения слова. Адресом служит номер ячейки массива, в которой это слово размещается. При записи (или считывании) слова в запоминающий массив инициирующая эту операцию команда должна указывать адрес, по которому производится запись (считывание). г====================¬ -------¦------¬ ¦ ¦ БУС ¦ ¦ ¦ 0 n-1 ¦<¬ ¦ L-------------- ¦ ¦ ^ ¦ ¦ ¦ ¦ ¦ ШИВх --------¬ ------T------¦------¬ ¦ ¦ ¦ ¦ k-1¦ ¦ БАВ ¦ 0 ... n-1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ V V ША ¦ ¦ ¦ ¦ . ¦ ¦ --------------¬ ======>¦ РгА ¦=====> ¦ ¦ . ЗМ ¦ ¦ -->¦ РгИ ¦ ¦ ¦ ¦ ¦ . ¦ ¦ ¦->¦ 0 n-1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦¦ L------T---T--- ¦ 0 ¦ ¦ ¦ N-1 ¦ ¦ ¦¦ ¦ ¦ L-------- L-----+-------------- ¦ ¦¦ ¦ ¦ ПрРгА ^ Выборка ^ ^ ¦ ¦¦ ¦ V ¦ -------------- ¦ ¦ ¦¦ ¦ ШИВых Обра- ----+-+-¬ Считывание ¦ ¦ ¦¦ ¦ щение ¦ +--------------------+--------- ¦¦ ¦ ------>¦ ¦ ПрРгИ ¦ ¦¦ ¦ ¦ +--------------------+-----------¦ ¦ Опе- ¦ БУП ¦ ПрШИВых ¦ ¦ ¦ рация ¦ +--------------------+------------ ¦ ------>¦ ¦ Запись -------¦------¬ ¦ ¦ +------------>¦ БУЗ ¦ ¦ L-------- ¦ 0 n-1 ¦ ¦ L-------------- ¦ ^ ¦ L====================- Типичная структура адресной памяти содержит запоминающий массив из N n-разрядных ячеек (обычно n равно 1, 4, 8 или 16) и его аппаратурное обрамление, включающее регистр адреса РгА, имеющий k разрядов (k больше или равно логарифму по основанию 2 от N), информационный регистр РгИ, блок адресной выборки БАВ, блок усилителей считывания БУС, блок разрядных усилителей-форми- рователей сигналов записи БУЗ и блок управления памятью БУП.
- 5 - По коду адреса в регистре адреса блок адресной выборки формирует в соответствующей ячейке памяти сигналы, позволяющие произвести считывание или запись слова в ячейку. Цикл обращения к памяти инициируется поступлением в блок управления памятью сигнала "Обращение". Общая часть цикла обраще- ния включает в себя: 1) прием в регистр адреса с шины адреса ША адреса обращения; 2) прием блоком управления и расшифровку управляющего сигнала "Операция", указывающего вид операции (считывание или запись). Далее, при считывании: 3) блок адресной выборки дешифрирует адрес и посылает сигналы считывания в заданную ячейку, при этом код записанного в ячейке слова считывается усилителями считывания и передается в информа- ционный регистр РгИ; 4) в памяти с разрушающим считыванием (при считывании все запо- минающие ячейки устанавливаются в нулевое состояние) производится регенерация информации в ячейке путем записи в нее из информаци- онного регистра РгИ считанного ранее слова; 5) считанное слово выдается из информационного регистра на выходную информационную шину ШИВых. При записи: 3) производится прием записываемого слова с выходной информаци- онной шины ШИВх в информационный регистр; 4) блок адресной выборки производит выборку и очистку ячейки, заданной в регистре адреса (в памяти с разрушающим считыванием для этого производится считывание без записи в информационный регистр); 5) в выбранную ячейку записывается слово из информационного регистра. Блок управления БУП генерирует необходимые последователь- ности управляющих сигналов, инициирующих работу отдельных узлов памяти. АССОЦИАТИВНАЯ ПАМЯТЬ В памяти этого типа поиск нужной информации производится не по адресу, а по ее содержанию (по ассоциативному признаку). При этом поиск по ассоциативному признаку (или последовательно по отдельным его разрядам) происходит параллельно во времени для всех ячеек запоминающего массива. Во многих случаях ассоциативный поиск позволяет существенно упростить и ускорить обработку дан- ных. Это достигается за счет того, что в памяти этого типа опера- ция считывания информации совмещена с выполнением ряда логических операций. Память этого типа применяется в специализированных вычисли- тельных машинах - машинах баз данных.
- 6 - СТЕКОВАЯ ПАМЯТЬ Стековая память, как и ассоциативная, является безадресной. В стековой памяти ячейки образуют одномерный массив, в котором соседние ячейки связаны друг с другом разрядными цепями передачи слов. Запись нового слова производится в верхнюю ячейку (ячей- ку 0), при этом все ранее записанные слова сдвигаются вниз, в соседние ячейки с большими на 1 номерами. Считывание возможно только из верхней ячейки памяти. Если производится считывание с удалением, все остальные слова в памяти сдвигаются в верх, в ячейки с меньшими номерами. В этой памяти порядок считывания слов соответствует правилу FIFO: последним поступил, первым обслужива- ется. В ряде устройств рассматриваемого типа предусматривается также операция простого считывания слова из нулевой ячейки без его удаления и сдвига слов в памяти. Иногда стековая память снабжается счетчиком стека, показыва- ющим количество занесенных в память слов. В вычислительных машинах часто стековую память организуют, используя адресную память и специальный регистр - указатель сте- ка. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 2-3 2СТРУКТУРЫ АДРЕСНЫХ ЗАПОМИНАЮЩИХ УСТРОЙСТВ Тип используемых запоминающих элементов определенным образом влияет на структуру памяти, в результате чего существует большое разнообразие структур ЗУ. Совокупность определенным образом соединенных запоминающих элементов (ЗЭ) образует запоминающую матрицу (массив) ЗМ, где каждый запоминающий элемент хранит бит информации. Запоминающий элемент должен реализовывать следующие режимы работы: 1) хранение состояния; 2) выдача сигнала состояния (считывание); 3) запись 0 или 1. К запоминающим элементам должны поступать управляющие сигна- лы для задания режима работы, а также информационный сигнал при записи. При считывании запоминающий элемент должен выдавать сигнал о своем состоянии. Запоминающий массив имеет систему адресных и разрядных линий (проводников). Адресные линии используются для выделения по адресу совокупности запоминающих элементов, которым устанавлива- ется режим считывания или записи. Выделение отдельных разрядов осуществляется разрядными линиями, по которым передается записы- ваемая или считываемая информация. Запоминающие устройства строятся из специальных запоминающих элементов, для которых характерно использование троичных сигналов и совмещение линий входных и выходных сигналов. Адресные и разрядные линии носят общее название линий выбор- ки. В зависимости от числа таких линий, соединенных с одним запо- минающим элементом различают двух-, трехкоординатные ЗУ и т.д., называемые соответственно 2D, 3D и т.д. Запоминающие устройства типа 2D Организация ЗУ типа 2D обеспечивает двухкоординатную выборку каждого запоминающего элемента. Основу ЗУ составляет плоская мат- рица из запоминающих элементов, сгруппированых в 2 5k 0 ячеек по n разрядов. Обращение к ячейке задается k-разрядным адресом, выде- ление разрядов производится разрядными линиями записи и считыва- ния. . - 2 - ШИВых ^ -----------------¦----------------¬ ¦0 n-1¦ ¦ УсСч ¦ L-T--------------T--------------T-- 0 5¦ 0 . . . j 5¦ 0 . . . n-1 5¦ 5-------+ 0 5-------+ 0 5-------+ 5--+-¬ ¦ 0 5--+-¬ ¦ 0 5--+-¬ ¦ 5¦ 0ЗЭ 5¦ 0< 5-¬ ¦ 0 ... 5¦ 0ЗЭ 5¦ 0< 5-¬ ¦ 0 ... 5¦ 0ЗЭ 5¦ 0< 5-¬ ¦ 5L---- ¦ ¦ 0 5L---- ¦ ¦ 0 5L---- ¦ ¦ 5-------¬ 00 5 0^ 5 ¦ ¦ 0 5 0^ 5 ¦ ¦ 0 5 0^ 5 0¦ 5 ¦ 5¦0 +--------+----+-+-------+----+-+------- 0- ¦ ¦ 5¦ ¦ . ¦ ¦ 0 5 . ¦ ¦ 0 5 . ¦ 0¦ 5¦ ¦ 0. 5 . ¦ ¦ 0 5 . ¦ ¦ 0 5 . ¦ ¦ 5¦ ¦ 0. 5 -----+-+ 0 5 -----+-+ 0 5 -----+-+ 5¦ ¦ 0. 5 --+-¬ ¦ ¦ 0 5--+-¬ ¦ ¦ 0 5--+-¬ ¦ ¦ 5¦ ¦ 0 5 ¦ 0ЗЭ 5 ¦ 0< 5-+ ¦ 0 ... 5¦ 0ЗЭ 5 ¦ 0< 5-+ ¦ 0 ... 5¦ 0ЗЭ 5 ¦ 0< 5-+ ¦ 5¦ ¦ L---- ¦ ¦ 0 5L---- ¦ ¦ 0 5L---- ¦ ¦ Адрес 5¦ ¦ 0i 5 0^ 5 ¦ ¦ 0 5 0^ 5 ¦ ¦ 0 5 0^ 5 ¦ 0¦ ======> 5¦ 0 АдрФ 5 +--------+----+-+-------+----+-+------- 0- ¦ ¦ 5¦ ¦ . ¦ ¦ 0 5 . ¦ ¦ 0 5 . 0¦ 5 0¦ 5¦ ¦ 0. 5 . ¦ ¦ 0 5 . ¦ ¦ 0 5 . 0¦ 5 ¦ 5¦ 0 5¦ 0. 5 -----+-- 0 5 -----+-- 0 5 -----+-- 5¦ 0 5¦ 0. 5 --+-¬ ¦ 0 5--+-¬ ¦ 0 5--+-¬ ¦ 5¦ 0 5¦ 0 5 ¦ 0ЗЭ 5 ¦ 0< 5- 0+ ... 5¦ 0ЗЭ 5 ¦ 0< 5- 0+ ... 5¦ 0ЗЭ 5 ¦ 0< 5- 0+ 5¦ 0 5¦ L---- 0 ¦ 5L---- 0 ¦ 5L---- 0 ¦ 5¦ 0 5¦ 02 5k 0-1 ^ ¦ ^ ¦ ^ ¦ 5¦ 0k-1 + 5--------+---- 0+------- 5--+---- 0+------- 5-- 0- ¦ L------- ¦ ¦ ¦ ^ ^ 0¦ . . . j¦ . . . n-1¦ ¦ ¦ --+--------------+--------------+-¬ ¦ ¦ ¦ УсЗап ¦ ¦ ¦ ¦0 n-1¦ Зап Чт L---------------------------------- ^ ¦ ИнфВх Адрес ячейки i поступает на схему адресного формирователя АдрФ, управляемого сигналами "Чтение" и "Запись". Основу адресно- го формирователя составляет дешифратор с 2 5k 0 выходами, который при поступлении на его входы адреса формирует сигнал для выборки линии i. При этом под действием сигнала "Чтение" формируется сигнал, настраивающий запоминающий элемент на выдачу сигнала состояния, а под действием сигнала "Запись" - соответственно на запись. Выделение разряда j в i-ом слове производится второй коорди- натной линией. При записи по линии j от усилителя записи поступа- ет сигнал, устанавливающий выбранный для записи элемент в 0 или 1. При считывании на усилитель считывания по линии j поступа- ет сигнал о состоянии элемента. Используемые запоминающие элементы должны допускать объеди- нение выходов для работы на общую линию с передачей сигналов только от выбранного элемента. . - 3 - Каждая адресная линия передает три значения сигнала: 1) выборка при записи, 2) выборка при считывании, 3) отсутствие выборки. Каждая разрядная линия записи передает в запоминающий эле- мент записываемый бит информации, а разрядная линия считывания - считываемый бит информации. Линии записи и считывания могут быть объединены в одну при использовании элементов, допускающих объ- единение выхода со входом записи. Совмещение функций записи и считывания на разрядной линии широко используется в современных полупроводниковых ЗУ. Запоминающие устройства типа 2D являются быстродействующими и достаточно удобными для реализации. Однако они неэкономичны по объему оборудования из-за наличия дешифратора с большим числом выходов. Поэтому структура 2D применяется только в ЗУ небольшой емкости. СТРУКТУРЫ АДРЕСНЫХ ЗАПОМИНАЮЩИХ УСТРОЙСТВ Запоминающие устройства типа 3D Некоторые запоминающие элементы имеют не один, а два входа выборк. Чтобы выполнялась операция выборки, требуется наличие сигнала выборки на обеих входах. Использование таких элементов позволяет строить ЗУ с трехкоординатным выделением ячеек. Запоминающий массив ЗУ типа 3D представляет собой прост- ранственную матрицу, составленную из n плоских матриц, представ- ляющих собой запоминающий массив для отдельных разрядов ячеек памяти. Запоминающие элементы для разряда сгруппированы в квад- ратную матрицу. . - 4 -
ИнфВых ^ -----------¦----------¬ ¦ УсСч ¦ L-T--------T--------T-- 0¦ ... j¦ ... n-1¦ +-----¬ ------T-------T-----¬ ¦ ¦ ¦-----+-------+¬ ¦ ¦ 5--+-¬ 0 ¦¦ 5--+-¬ 0¦¦ 5--+-¬ ¦--> 5¦ 0ЗЭ 5¦ 0< 5-¬ 0..¦+-> 5¦ 0ЗЭ 5¦ 0< 5-¬ 0..¦+-> 5¦ 0ЗЭ 5¦ 0< 5-¬ ¦¦ 5L---- ¦ 0 ¦¦ 5L---- ¦ 0¦¦ 5L---- ¦ 5--- 0-- 5---¬ 00 5 0¦¦ 5 0^ 5 ¦ 0 ¦¦ 5 0^ 5 ¦ 0¦¦ 5 0^ 5 0¦ 5¦0 0 5 +--- 0++ 5----+----+- 0-++ 5----+----+ 0--++- 5--- 0- ¦ 5¦ 0 5 ¦ 0. 5 0¦¦ 5 0: 5 0¦ 5 0 ¦¦ 5 0: 5 0¦ 5 0¦¦ 5 0: 5 0¦ 5¦ 0 5 ¦ 0. ++----¬ ¦ ++----¬ ¦ ++----¬ ¦ 5¦ 0 5 ¦ 0. 5 0¦¦ 5 --+-¬ 0¦ 5 0 ¦¦ 5--+-¬ 0¦ 5 0¦¦ 5--+-¬ 0¦ 5¦ 0 5 ¦ 0 5 0¦+-> 5¦ 0ЗЭ 5 ¦ 0< 5-+ 0..¦+-> 5¦ 0ЗЭ 5 ¦ 0< 5-+ 0..¦+-> 5¦ 0ЗЭ 5 ¦ 0< 5-+ 5¦ 0 5 ¦ 0¦¦ 5 L---- ¦ 0 ¦¦ 5L---- ¦ 0¦¦ 5L---- ¦ Адрес 5¦ 0 5 ¦ 0i' 5 0¦¦ 5 0^ 5 ¦ 0 ¦¦ 5 0^ 5 ¦ 0¦¦ 5 0^ 5 ¦ ======> 5¦ 0 АдрФ1 5 +--- 0++ 5----+----+ 0- 5- 0++- 5---+----+- 0-++-- 5-- 0- ¦ 5¦ 0 5 ¦ 0¦¦ 5 0: 5 ¦ 0 ¦¦ 5 0: 5 ¦ 0¦¦ 5 0: 5 0¦ 5¦ 0 5¦ 0. ++----¬ ¦ ++----¬ ¦ L+----¬ ¦ 5¦ 0 5¦ 0. 5 0¦¦ 5 --+-¬ ¦ 0 ¦¦ 5--+-¬ 0¦ ¦ 5--+-¬ ¦ 5¦ 0 5¦ 0. 5 0¦+-> 5¦ 0ЗЭ 5 ¦ 0< 5- 0+..¦+-> 5¦ 0ЗЭ 5 ¦ 0< 5- 0+...+-> 5¦ 0ЗЭ 5 ¦ 0< 5- 0+ 5¦ 0k-1 5¦ 0¦¦ 5 L---- 0 ¦ ¦¦ 5L---- 0 ¦ ¦ 5L---- 0 ¦ 5¦ 0--- - 1 5¦ 0 ¦¦ ^ ¦ ¦¦ ^ ¦ ¦ ^ ¦ 5¦ 0 2 + 5--- 0++ 5----+---- 0+--++-- 5--+---- 0+---+-- 5-- 0- ¦ L-------- ¦L---------+--+- ¦ ¦ ¦ ^ ^ L----------+--- ¦ L---------+-----¬ ¦ ¦ 0¦ . . . i"¦ . . . ¦ ¦ ¦ ¦ --+-------------+-------------+-¬ ¦ +-----+------------>¦k-1 АдрФ2 ¦ ¦ ¦ ¦ ¦--- k-1¦ ¦ ¦ +------------>¦ 2 ¦ ¦ ¦ ¦ L-------------------------------- ¦ ^ --------- Зап Чт ¦ ¦ Адрес 0¦... j¦ n-1¦ --+-----+-----+-¬ ¦ УсЗап ¦ L---------------- ^ ¦ ИнфВх Для адресной выборки запоминающего элемента выдается две его координаты в массиве. Код ячейки памяти разделяется на старшую и младшую части, каждая из которых поступает на свой адресный фор- мирователь. Адресные формирователи выдают код в соответствующие адресные линии. В результате в массиве оказывается выбранным эле- мент, находящийся на пересечении двух адресных линий. Адресные формирователи управляются сигналами "Чтение" и "Запись" и в зависимости от них выдают сигналы выборки для считывания или для записи. При считывании сигнал о состоянии выбранного элемента поступает по линии считывания в усилитель. При записи в запомина- ющий элемент будет занесена информация, поступившая с соот- ветствующего усилителя записи.
- 5 - Для полупроводниковых ЗУ характерно объединение в одну линию разрядных линий записи и считывания. Запоминающие устройства типа 3D более экономичны, чем ЗУ 2D. Однако элементы с тремя входами, используемыми при записи не всегда удается реализовать. Запоминающие устройства типа 2,5D В ЗУ этого типа при считывании состояния приложение элемента в запоминающем массиве определяется тремя координатами (две коор- динаты для выборки и одна для выходного сигнала), а при записи в запоминающий элемент - двумя координатами. Считывание при этом осуществляется так же, как в ЗУ типа 3D, а запись сходна с за- писью в ЗУ типа 2D. Структура одноразрядного ЗУ типа 2,5D: ИнфВых ^ -----+----¬ ¦ УсСч ¦ L----T----- ¦ +---¬ ----T--------T---¬ ¦ 5--+-¬ 0 ¦ 5--+-¬ 0¦ 5--+-¬ ¦ 5¦ 0ЗЭ 5¦ 0< 5-¬ 0...¦ 5¦ 0ЗЭ 5¦ 0< 5-¬ 0...¦ 5¦ 0ЗЭ 5¦ 0< 5-¬ ¦ 5L---- ¦ 0 ¦ 5L---- ¦ 0¦ 5L---- ¦ 5-- 0- 5--¬ 00 5 0¦ 5 0^ 5 ¦ 0 ¦ 5 0^ 5 ¦ 0¦ 5 0^ 5 0¦ 5¦0 +---- 0+---+----+---+--- 5+----+ 0---+ 5--- 0- ¦ 5¦ ¦ 0. 5 0¦ 5 0: 5 0¦ 5 0 ¦ 5 0: 5 0¦ 5 0¦ 5 0: 5 0¦ 5¦ ¦ 0. +---¬ ¦ +---¬ ¦ +---¬ ¦ 5¦ ¦ 0. 5 0¦ 5 --+-¬ 0¦ 5 0 ¦ 5--+-¬ 0¦ 5 0¦ 5--+-¬ 0¦ 5¦ ¦ 0 5 0¦ 5¦ 0ЗЭ 5 ¦ 0< 5-+ 0...¦ 5¦ 0ЗЭ 5 ¦ 0< 5-+ 0...¦ 5¦ 0ЗЭ 5 ¦ 0< 5-+ 5¦ ¦ 0¦ 5 L---- ¦ 0 ¦ 5L---- ¦ 0¦ 5L---- ¦ Адрес 5¦ ¦ 0i' 5 0¦ 5 0^ 5 ¦ 0 ¦ 5 0^ 5 ¦ 0¦ 5 0^ 5 ¦ ======> 5¦ 0АдрФ 5+---- 0+---+----+---+- 5--+--- 0-+---+- 5-- 0- ¦ 5¦ ¦ 0¦ 5 0: 5 ¦ 0 ¦ 5 0: 5 ¦ 0¦ 5 0: 5 0¦ 5¦ 0 5¦ 0. +---¬ ¦ +---¬ ¦ L---¬ ¦ 5¦ 0 5¦ 0. 5 0¦ 5 --+-¬ ¦ 0 ¦ 5--+-¬ 0¦ 5--+-¬ ¦ 5¦ 0 5¦ 0. 5 0¦ 5¦ 0ЗЭ 5 ¦ 0< 5- 0+...¦ 5¦ 0ЗЭ 5 ¦ 0< 5- 0+... 5¦ 0ЗЭ 5 ¦ 0< 5- 0+ 5¦ 0 5¦ 0¦ 5 L---- 0 ¦ ¦ 5L---- 0 ¦ 5L---- 0 ¦ 5¦ 0 5¦ 02 5r 0 ¦ ^ ¦ ¦ ^ ¦ ^ ¦ 5¦ 0r-1 + 5---- 0+ 5---+---- 0+---+- 5--+---- 0+----- 5-- 0- ¦ L----- ¦ ¦ ¦ ¦ ¦ ^ ^ L--------+---- ¦ ¦ ¦ ¦ 0¦ . . . i"¦ . . . ¦ ¦ ¦ --+------------+------------+-¬ 4 0 ВхИнф +--+----------->¦ РАдрФ 4j 0 ¦<--------- ¦ +----------->¦ r k-1¦ (0/1) ¦ ¦ L------------------------------ ^ Зап Чт ¦ Адрес Запоминающий массив ЗУ типа 2,5D можно рассматривать как группу запоминающих массивов - по одному для каждого разряда памяти. Код адреса ячейки, как и в ЗУ типа 3D, разделяется на две части (i' и i"), каждая из которых отдельно дешифрируется.
- 6 - Адресный формирователь АдрФ выдает сигнал выборки на линию i'. Разрядно-адресный формирователь j-го разряда РАдрФj выдает сигнал на линию i". При считывании оба сигнала, являющиеся сигналами вы- борки для считывания, опрашивают запоминающий элемент, выходной сигнал которого поступает на усилитель считывания разряда j. При записи адресный формирователь АдрФ выдает сигнал выборки для записи, а разрядно-адресный формирователь j-го разряда РАдрФj выдает по линии i" сигнал записи 0 или 1 в зависимости от назна- чения входного информационного сигнала j-го разряда ВхИнФj. На остальных линиях разрядно-адресного формирователя устанавлива- ется сигнал "Хранение", и поэтому изменяется состояние только элемента, лежащего на пересечении линий i' и i". Из запоминающих массивов отдельных разрядов формируется за- поминающий массив всего ЗУ. Структура n-разрядного ЗУ типа 2,5D: n -------¬ n ИнфВых -===========T===========T=/=>¦ УсСч ¦=/=======> 0¦ j¦ n-1¦ L------- -----¬ ----+---¬ ----+---¬ ----+---¬ ¦0 +->¦ ¦ ¦ ¦ ¦ ¦ Адрес ¦ ¦: ¦ ¦ ¦ ¦ ¦ ¦ =====>¦АдрФ+->¦ ЗМ 40 0 ¦...¦ ЗМ 40 0 ¦...¦ ЗМ 40 0 ¦ ¦ ¦: ¦ ¦ ¦ ¦ ¦ ¦ ¦r-1 +->¦ ¦ ¦ ¦ ¦ ¦ L----- L-------- L-------- L-------- ^..^..^ ^..^..^ ^..^..^ -+--+--+¬ -+--+--+¬ -+--+-- 4+- 0¬ ¦ РАдрФ 40 0¦<¬ ¦ РАдрФ 4j 0¦<¬ ¦РАдрФ 4n-1 0¦<¬ L-------- ¦ L-------- ¦ L------- 4-- 0 ¦ ^ 0¦ ^ j¦ ^ n-1¦ 4 0 n ИнфВх Адрес (r 7_ 0k-1) ¦ L=====+=====¦=====+======¦ 4=== 0==/========= ==================¦===========¦===========- Недостатком ЗУ типа 2,5D является то, что сигналы на линиях разрядно-адресного формирователя должны иметь 4 значения: чтения, запись 0, запись 1 и хранение. Для запоминающих элементов с раз- рушающим считыванием сигналы "Чтение" и "Запись 0" совпадают, и потребуется лишь три значения сигнала. В связи с этим ЗУ типа 2,5D используются лишь для запоминающих элементов с разрушающим считыванием. Запоминающие устройства типа 2D-M Для построения современных полупроводниковых ЗУ из элементов с неразрушающим считыванием используется структура 2D-M с двухко- ординатным выделением элементов и мультиплексированием выходных сигналов при считывании. Запоминающие элементы таких ЗУ имеют два входа и один выход. При наличии сигнала "Хранение" хотя бы на одном из входов элемент при записи находится в режиме хранения. Сигнал "Чтение" опрашива- ет состояние элемента. Сигналы "Запись" и "Запись 0" устанавлива- ют элемент в состояние 0, а "Запись" и "Запись 1"- в состояние 1. Выход запоминающего элемента объединяется со входом записи. Код адреса i-й ячейки разделяется на две части (i' и i"), одна из которых поступает на адресный формирователь АдрФ, а другая - на разрядно-адресный коммутатор РАдрК. Пока на адресный формирова- тель и коммутатор не приходит сигнал обращения к памяти, на их
- 7 - выходных линиях устанавливаются сигналы "Хранение". При наличии сигнала обращения выполняется считывание или запись в зависимости от значения сигнала "Чтение/Запись". При считывании адресный формирователь по линии i' выдает сигнал выборки для считывания, по которому со всех запоминающих элементов линии i' сигналы их состояний поступают на коммутатор. Коммутатор РАдрК мультиплексирует эти сигналы и передает на выход ИнфВых сигнал с линии i". При записи адресный формирователь выдает по линии i' сигнал выборки для записи. Коммутатор в зависимости от значения ИнфВх выдает сигнал записи 0 или 1 в линию i" и сигналы хранения в остальные линии. В результате запись производится только в эле- мент, лежащий на пересечении линий i' и i". Структура 2D-M наиболее удобна для построения полупроводни- ковых ЗУ и широко применяется в настоящее время для построения ОЗУ и ПЗУ большой емкости. Статические и динамические ОЗУ Микросхемы ОЗУ по типу элементов памяти разделяют на стати- ческие и динамические. В микросхемах статических ОЗУ в качестве элементов памяти применены статические триггеры на биполярных или МДП-транзисторах. Как известно, статический триггер способен при наличии напряжения питания сохранять свое состояние неограничен- ное время. Число состояний, в которых может находиться триггер, равно двум, что и позволяет использовать его для хранения двоич- ной единицы информации. В микросхемах динамических ОЗУ элементы памяти выполнены на основе электрических конденсаторов, сформированных внутри полуп- роводникового кристалла. Для обеспечения сохранности информации необходимо периодическое восстановление (регенерация) заряда кон- денсатора, поскольку из-за токов утечки запоминающий конденсатор может разряжаться. Это осуществляется с помощью периодических циклов регенерации, во время которых информация из элементов па- мяти считывается и вновь записывается обратно. Периодичность восстановления информации в элементах памяти называется периодом регенерации. Период регенерации Трег резко уменьшается с увеличе- нием температуры окружающей среды, однако для большинства серийно выпускаемых микросхем при наихудших условиях окружающей среды максимальное значение периода регенерации не менее 2 мс. Длитель- ность циклов регенерации обычно равна длительности циклов считы- вания или записи информации, но для полной регенерации информации в микросхеме необходимо несколько сотен таких циклов. Микросхемы динамических ОЗУ отличаются от микросхем стати- ческих ОЗУ большей информационной емкостью, что обусловлено меньшим числом компонентов в одном элементе памяти, и, следова- тельно, более плотным их размещением в полупроводниковом крис- талле. Однако динамические ОЗУ сложнее в применении, поскольку нуждаются в организации принудительной регенерации, в дополни- тельном оборудовании и более сложных устройствах управления. Серийные микросхемы динамических ОЗУ в настоящее время имеют емкость 1, 4 или 16 Мбит и применяются для создания основного ОЗУ ЭВМ. В ближайшее десятилетие планируется освоение серийного производства микросхем емкостью 256 Мбит. Емкость микросхем статических ОЗУ не превышает 256 Кбит. Они применяются для создания сверхоперативной памяти ЭВМ, а также в устройствах автоматики, микроконтроллерах и т.п. С точки зрения разработчика электронной аппаратуры тип ОЗУ
- 8 - гораздо важнее его внутренней организации, так как использование динамических ОЗУ значительно усложняет как схему разрабатываемого устройства, так и моделирование его работы в процессе разработки. Регенерация требует как правило прерывания работы процессора и поглощает заметную часть процессорного времени (5 - 10%), что крайне не желательно в системах реального времени. ПОСТОЯННЫЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА Постоянные запоминающие устройства в рабочем режиме ЭВМ допускают только считывание хранимой информации. В зависимости от типа ПЗУ занесение в него информации производится или в процессе изготовления, или в зксплуатационных условиях путем программиро- вания с помощью специального оборудования. Постоянные запоминающие устройства обычно строятся как ад- ресные ЗУ. Функционирование ПЗУ можно рассматривать, как выполне- ние однозначного преобразования k-разрядного кода адреса ячейки запоминающего массива в n-разрядный код хранящегося в ней слова. По сравнению с ОЗУ, ПЗУ строятся из более простых элементов и по более простым схемам, поэтому их быстродействие и надежность выше, а стоимость ниже, чем у ОЗУ. ПЗУ широко используются для хранения рабочих программ специ- ализированных ЭВМ и программ запуска и тестирования универсальных ЭВМ. В ПЗУ со структурой типа 2D запоминающий массив образуется системой взаимно перпендикулярных линий, в пересечениях которых устанавливаются элементы, которые либо связывают (состояние 1), либо не связывают (состояние 0) между собой горизонтальную и вер- тикальную линии. Дешифратор Дш по коду адреса в РгА выбирает одну из горизон- тальных линий, в которую подается сигнал выборки. Выходной сигнал появляется в тех вертикальных разрядных линиях, которые имеют связь с возбужденной разрядной линией. В зависимости от типа запоминающих элементов различают ре- зисторные, емкостные, индуктивные, полупроводниковые и другие ПЗУ. Полупроводниковые интегральные ПЗУ, в отличие от ОЗУ явля- ются энергонезависимыми, т.е. информация в них не исчезает при выключении питания. По способу занесения информации различают следующие типы ин- тегральных полупроводниковых ПЗУ: 1) с программированием в процессе изготовления путем нанесения с помощью фотошаблонов перемычек в необходимых местах; 2) с программированием путем выжигания перемычек или разрушения p-n-переходов; 3) с электрическим программированием и ультрафиолетовым стира- нием; 4) с электрическим программированием и электрическим стиранием информации (так называемая флеш-память). Микросхемы, программируемые в процессе изготовления или путем выжигания перемычек, обычно строятся на базе ТТЛ логики и имеют небольшую емкость (не выше 64 Кбит), но малое время досту- па, и применяются в простых устройствах автоматики, а также для хранения матриц шрифтов в контроллерах дисплеев и принтеров. Пов- торное использование микросхем этих типов невозможно, так как в них нельзя стереть и перезаписать информацию. Микросхемы ПЗУ с ультрафиолетовым стиранием информации имеют
- 9 - емкость до 1 Мбит и применяются при создании контроллеров различ- ных устройств ЭВМ для хранения программ, а также для хранения программ тестирования ЭВМ и начальной загрузки операционной системы. Новая технология памяти - с электрическим программированием и электрическим стиранием, именуемая ETOX III или флеш-технологи- ей, была анонсирована фирмой Intel в 1989 году. Изготовляемые по этой технологии микросхемы имеют емкость 8 Мбит с организацией 1 Мбит x 8 и время цикла чтения 85 нс. Длительность цикла записи байта составляет 9 мкс, длительность цикла стирания - 10 мс, дли- тельность автоматического стирания блока в 64 Кбайт составляет 1,5 с. Микросхемы этого типа применяются для создания электронных дисков переносных и карманных персональных компьютеров. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 4 2ПРИНЦИПЫ ОРГАНИЗАЦИИ СИСТЕМ ВВОДА-ВЫВОДА ЭВМ Передача информации с периферийного устройства в ядро ЭВМ называется операцией ввода, а передача из ядра ЭВМ в периферийное устройство - операцией вывода. Связь устройств ЭВМ друг с другом осуществляется с помощью средств сопряжения - интерфейсов. Интерфейс представляет собой совокупность линий и шин, сигналов, электронных схем и алгоритмов, предназначенную для осуществления обмена информацией между устройствами. От характе- ристик интерфейсов во многом зависят производительность и надеж- ность вычислительной машины. При разработке систем ввода-вывода должны быть решены следу- ющие проблемы: 1) Должна быть обеспечена возможность реализации машин с переменным составом оборудования. 2) Для эффективного использования оборудования ЭВМ должны реализовываться параллельная во времени работа процессора над программой и выполнение периферийными устройствами процедур ввода-вывода. 3) Необходимо стандартизировать программирование операций вво- да-вывода для обеспечения их независимости от особенностей пери- ферийного устройства. 4) Необходимо обеспечить автоматическое распознавание и реакцию ядра ЭВМ на многообразие ситуаций, возникающих в ПУ (готовность устройства, различные неисправности и т.п.). При конструировании ЭВМ широко применяются различные сред- ства унификации. Средства вычислительной техники проектируются на основе модульного принципа, который заключается в том, что отдельные устройства выполняются в виде конструктивно законченных модулей, из которых можно собирать ЭВМ в различных конфигурациях. При обмене межд ПУ и ЭВМ используются унифицированные форматы данных. Преобразование унифицированных форматов данных в индивидуальные, приспособленные для отдельных ПУ, производится в самих ПУ. Унификации также подвергают все компоненты интерфейса, а также формат и набор команд процессора для операций ввода-вывода. Унификация распространяется на семейство моделей ЭВМ. Для обеспечения параллельной работы процессора и периферий- ных устройств схемы управления вводом-выводом отделяют от процес- сора. Выполнение общих функций возлагают на общие для групп пери- ферийного оборудования унифицированные устройства - контроллеры прямого доступа к памяти, процессоры ввода-вывода.
- 2 - ПРЯМОЙ ДОСТУП К ПАМЯТИ В системах ввода-вывода ЭВМ используются два основных спосо- ба организации передачи данных между памятью и периферийными устройствами: программно-управляемая передача и прямой доступ к памяти. Программно-управляемая передача данных осуществляется при непосредственном участии и под управлением процессора, который при этом выполняет специальную подпрограмму процедуры ввода-выво- да. Данные между памятью и периферийным устройством пересылаются через процессор. Операция ввода - вывода инициируется текущей командой программы или запросом прерывания от периферийного устройства. При этом процессор на все время выполнения операции ввода-вывода отвлекается от выполнения основной программы. Кроме того при пересылке блока данных процессору приходится для каждой единицы передаваемых данных выполнять несколько команд, чтобы обеспечить буферизацию, преобразование форматов данных, подсчет количества переданных данных, формирование адре- сов в памяти и т.п. Это сильно снижает скорость передачи данных (не выше 100 Кб/сек), что недопустимо при работе с высокоскорост- ными ПУ. Между тем потенциально возможная скорость обмена данными при вводе-выводе определяется пропускной способностью памяти. Для быстрого ввода-вывода блоков данных используется прямой доступ к памяти. Прямым доступом к памяти называется способ обмена данными, обеспечивающий независимую от процессора передачу данных между памятью и периферийным устройством. Прямым доступом к памяти управляет контроллер ПДП, который выполняет следующие функции: 1) управление инициируемой процессором или ПУ передачей данных между ОП и ПУ; 2) задание размера блока данных, который подлежит передаче, и области памяти, используемой при передаче; 3) формирование адресов ячеек ОП, участвующих в передаче; 4) подсчет числа переданных единиц данных (байт или слов) и определение момента завершения операции ввода-вывода. Указанные функции реализуются контроллером ПДП с помощью одного или нескольких буферных регистров, регистра - счетчика текущего адреса данных и регистра-счетчика подлежащих передаче данных. При инициировании операции ввода-вывода в счетчик подлежащих передаче данных заносится размер передаваемого блока (число байт или слов), а в счетчик текущего адреса - начальный адрес области памяти, используемой при передаче. При передаче каждого байта содержимое счетчика адреса увеличивается на 1, при этом формиру- ется адрес очередной ячейки памяти, участвующей в передаче. Одновременно уменьшается на 1 содержимое счетчика подлежащих
- 3 - передаче данных; обнуление этого счетчика указывает на завершение передачи. Контроллер ПДП обычно имеет более высокий приоритет в занятии цикла обращения к памяти по сравнению с процессором. Управление памятью переходит к контроллеру ПДП, как только завер- шается цикл обращения к памяти для текущей команды процессора. Прямой доступ к памяти обеспечивает высокую скорость обмена данными за счет того, что управление обменом производится не программными, а аппаратными средствами.
ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ СИСТЕМ ВВОДА-ВЫВОДА Можно выделить два характерных принципа построения систем ввода-вывода: ЭВМ с одним общим интерфейсом и ЭВМ с множеством интерфейсов и процессорами (каналами) ввода-вывода. Структура с одним общим интерфейсом Структура с одним общим интерфейсом предполагает наличие общей шины, к которой подсоединяются все модули, в совокупности образующие ЭВМ: процессор, оперативная и постоянная память и периферийные устройства. В каждый данный момент через общую шину может происходить обмен данными только между одной парой присое- диненных к ней модулей. Таким образом, модули ЭВМ разделяют во времени один общий интерфейс, причем процессор выступает как один из модулей системы. . - 4 - Общая шина <===============================================================> A A A A A A ¦ ¦ ¦ ¦ ¦ ¦ V V V V V V -------¬ -----¬ ---¬ -------¬ ------------¬ ------------¬ ¦ Про- ¦ ¦ ¦ ¦БУ¦...¦ БУ ¦ ¦Контролллер¦...¦Контролллер¦ ¦цессор¦ ¦ ОП ¦ L--- L------- ¦ ПДП ¦ ¦ ПДП ¦ ¦ ¦ ¦ ¦ A A A L------------ L------------ L------- L----- ¦ ¦ ¦ A A A V V V ¦ ¦ ¦ ---¬ ---¬ ---¬ V V V ¦ПУ¦ ¦ПУ¦ ¦ПУ¦ ---¬ ---¬ ---¬ L--- L--- L--- ¦ПУ¦ ¦ПУ¦...¦ПУ¦ L--- L--- L--- Периферийные устройства подсоединяются к общей шине с помо- щью блоков управления периферийными устройствами (контроллеров), осуществляющих согласование форматов данных периферийных уст- ройств с форматом, принятым для передачи по общей шине. Если в периферийном устройстве операции ввода - вывода производятся для отдельных байт или слов, то используется программно-управляемая передача данных через процессор и под его управлением. Конструкция контроллера при этом сильно упрощается. Для перифериийных устройств с поблочной передачей данных (ЗУ на дисках, лентах и др.) применяется прямой доступ к памяти и контроллеры ПДП. При общем интерфейсе аппаратура управления вводом-выводом рассредоточена по отдельным модулям ЭВМ. Процессор при этом не полностью освобождается от управления операциями ввода-вывода. Более того, на все время операции передачи данных интерфейс ока- зывается занятым, а связь процессора с памятью блокированной. Интерфейс с общей шиной применяется только в малых и микро-ЭВМ, которые имеют короткое машинное слово, небольшой объем периферийного оборудования и от которых не требуется высокой про- изводительности. Структура с каналами ввода-вывода Структура системы с процессорами (каналами) ввода-вывода применяется в высокопроизводительных ЭВМ. В таких ЭВМ система ввода-вывода строится путем централизации аппаратуры управления вводом-выводом на основе применения программно-управляемых про- цессоров (каналов) ввода-вывода. Обмен информацией между памятью и периферийным устройством осуществляется через канал ввода-выво- да. . - 5 - ----------------¬ ¦Основная память¦ L---------------- A ¦ V Интерфейс основной памяти <================================================> A A A ¦ ¦ ¦ V ¦ ¦ ----------¬ ¦ ¦ ¦Процессор¦ ¦ ¦ L---------- ¦ ¦ A ¦ ¦ ¦ ¦ ¦ V Интерфейс процессор-каналы ¦ ¦ <==================================> ¦ ¦ A A ¦ ¦ ¦ ----------+------ ¦ V V V V --------------¬ --------------¬ ¦ Канал ¦ . . . ¦ Канал ¦ ¦ввода-вывода ¦ ¦ввода-вывода ¦ L-------------- L-------------- A A ¦ ¦ Интерфейс ввода-вывода V V <==========================> A A A ¦ ¦ ¦ V V V ---¬ ---¬ ---¬ ¦БУ¦ ¦БУ¦ ¦БУ¦ L--- L--- L--- A A A ¦ ¦ ¦ V V V ---¬ ---¬ ---¬ ¦ПУ¦ ¦ПУ¦ ¦ПУ¦ L--- L--- L--- Каналы ввода - вывода полностью освобождают процессор от управления операциями ввода-вывода. В вычислительной машине с каналами ввода-вывода форматы передаваемых данных неоднородны, поэтому неоходимо использовать в ЭВМ несколько специализированных интерфейсов. Можно выделить 4 типа интерфейсов: интерфейс основной памя- ти, интерфейс процессор-каналы, интерфейсы ввода-вывода, интер-
- 6 - фейсы периферийных устройств (малые интерфейсы). Через интерфейс основной памяти производится обмен информа- цией между памятью, с одной стороны, и процессором и каналами - с другой. Интерфейс процессор-каналы предназначается для передачи ин- формации между процессорами и каналами ввода-вывода. Через интерфейс ввода-вывода происходит обмен информацией между каналами и блоками управления периферийных устройств. Интерфейс периферийного устройства служат для обмена данными между периферийным устройством и его блоком управления. Унифика- ции малые интерфейсы не поддаются, так как ПУ весьма разнообразны по принципу действия, используемым форматам данных и сигналам. ОСНОВНЫЕ ПАРАМЕТРЫ ИНТЕРФЕЙСОВ Интерфейсы характеризуются следующими параметрами: 1) Пропускная способность интерфейса - это количество информа- ции, которое может быть передано через интерфейс в единицу време- ни (имеет диапазон от десятков байт до сотен мегабайт). 2) Максимальная частота передачи информационных сигналов через интерфейс (от десятков герц до сотен мегагерц). 3) Максимально допустимое расстояние между соединяемыми уст- ройствами (имеет диапазон от десятков сантиметров до нескольких километров при использовании оптоволоконных линий). 4) Динамические параметры интерфейса: время передачи отдельного слова и блока данных с учетом продолжительности процедур подго- товки и завершения передачи. Эти параметры особенно важны для систем реального времени. 5) Общее число линий (проводов) в интерфейсе. 6) Информационная ширина интерфейса - число бит данных, переда- ваемых параллельно через интерфейс. Различные интерфейсы имеют ширину 1, 8, 16, 32, 64, 128 или 256 бит. 7) Связность интерфейса: интерфейс может быть односвязным, когда существует лишь единственный путь передачи информации между парой устройств машины, и многосвязным, позволяющим устройствам обмениваться информацией по нескольким независимым путям. Много- связность интерфейсов требует дополнительной аппаратуры, но повы- шает надежность и живучесть вычислительной машины, обеспечивает возможность автоматической реконфигурации вычислительного комп- лекса при выходе из строя отдельных устройств. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 5 2КАНАЛЫ ВВОДА-ВЫВОДА Для того, чтобы операции ввода-вывода выполнялись параллель- но с выполнением вычислений, необходимо освободить процессор от управления операциями обмена информацией между периферийными устройствами и памятью. Эта задача возлагается на процессоры ввода-вывода (каналы), управляемые канальными программами. Процессор должен только выполнить инициирование операции ввода-вывода, задать номера канала и периферийного устройства, участвующих в операции, и код выполняемой операции. Канал должен обеспечивать прямой доступ к памяти, осущест- влять буферизацию и преобразование форматов передаваемых данных для согласования работы оперативной памяти и периферийного уст- ройства. Поэтому в состав канала, кроме специального процессора и ПЗУ программ, входит контроллер ПДП и буферное ОЗУ (реально все эти компоненты могут быть раэмещены в одной микросхеме). Для извещения процессора об окончании каждой операции ввода- вывода, а также о возникновении ошибок, канал формирует запросы прерываний. Кроме того, канал может выполнять ряд дополнительных функций для минимизации участия процессора в операциях ввода-вывода: 1) Организация цепочки блоков данных: если данные в памяти состоят из нескольких массивов, произвольно размещенных в памяти, то канал должен допускать задание цепочки блоков, чтобы не отвле- кать основной процессор после передачи каждого блока. 2) Организация выборочного чтения информации: иногда необходимо вводить с носителя информации отдельные части некоторого массива, пропуская ненужные данные. 3) Организация цепочки операций: иногда выгодно задавать не отдельные операции ввода-вывода, а сразу группу последовательных операций. 4) Блокировка контроля неправильной длины считанного массива бывает полезной при попытках извлечения хотя бы части информации из искаженного массива данных. ОСНОВНЫЕ ТИПЫ КАНАЛОВ ВВОДА-ВЫВОДА Способ организации взаимодействия периферийного устройства с каналом определяется соотношением быстродействия оперативной памяти и периферийного устройства. По этому признаку периферийные устройства можно классифицировать на две группы: быстродействую- щие (ЗУ на дисках и лентах) - со скоростью обмена информацией 100 Кбайт/с - 100 Мбайт/с, и медленнодействующие (перфоленточные устройства, принтеры и т.п.) - со скоростью от десятков байт до десятков килобайт в секунду. Оперативная память может выдавать и принимать данные со скоростью 1 - 100 Мбайт/с в зависимости от
- 2 - типа микросхем памяти и архитектуры ОЗУ. В зависимости от соотношения быстродействия памяти и перифе- рийных устройств в каналах ввода-вывода может быть реализован один из двух режимов работы - монопольный или мультиплексный. Монопольный режим После установления связи между каналом и периферийным уст- ройством последнее занимает канал на все время, пока полностью не завершится инициированная процессором канальная программа работы с данным устройством и не будут произведены все предусмотренные этой программой передачи данных между памятью и устройством. На все время выполнения данной канальной программы канал не- доступен другим периферийным устройствам. Канал, работающий в монопольном режиме, называют 2селектор- 2ным 0. При работе с селекторным каналом периферийное устройство после запуска операции остается связанным с каналом до ее завер- шения. Запросы на обслуживание от других устройств и команды за- пуска новых операций ввода-вывода от процессора в это время игно- рируются. Селекторные каналы применяются при работе с быстрыми уст- ройствами ввода-вывода. Мультиплексный режим (режим разделения времени) В таком режиме несколько периферийных устройств разделяют во времени канал ввода-вывода. При этом каждое из параллельно рабо- тающих устройств связывается с каналом на короткие промежутки времени только после того, как оно подготовлено к приему или вы- даче очередной порции информации. Промежуток времени, в течение которого происходит передача информации между каналом и периферийным устройством называется 2сеансом связи 0. Сеансы связи различных ПУ чередуются между собой. Во время сеанса связи одного из устройств с каналом другие уст- ройства могут выполнять работу, не требующую использования средств канала. Канал, осуществляющий мультиплексирование периферийных уст- ройств, называют 2мультиплексным 0. Мультиплексный канал одновременно обслуживает несколько па- раллельно работающих устройств, попеременно организуя с ними сеансы связи для приема или передачи небольших порций информации (от одного до нескольких сотен байт). Мультиплексные каналы применяются при работе с медленными устройствами ввода-вывода: алфавитно-цифровыми дисплеями, принте- рами, датчиками и рагуляторами телемеханических систем и т.п. . - 3 - 2МЕТОДЫ ПЕРЕДАЧИ ИНФОРМАЦИИ МЕЖДУ УСТРОЙСТВАМИ ЭВМ Используются два метода передачи дискретных сигналов: синх- ронный и асинхронный. При синхронном методе передающее устройство устанавливает одно из двух возможнных состояний сигнала (0 или 1) и поддерживает его в течение строго определенного интервала вре- мени, после истечения которого состояние сигнала на передающей стороне может быть изменено. 2Время передачи 0 сигнала, которое складывается из времени передачи сигнала по линии и времени распознавания и фиксации сигнала в регистре приемного устройства, зависит от параметров линии связи и характеристик приемного и передающего устройств. Период синхронной передачи информации должен превышать максималь- ное время передачи сигнала. Он задается специальными тактовыми импульсами, как правило поступающими от тактового генератора с кварцевым резонатором. При асинхронной передаче передающее устройство устанавливает соответствующее передаваемому коду состояние сигнала на информа- ционной линии, а принимающее устройство после приема сигнала информирует об этом передающее устройство изменением состояния сигнала на линии подтверждения приема. Передающее устройство, получив сигнал подтверждения, снимает передаваемый сигнал. Обычно при передаче сигналов на короткие расстояния (десятки сантиметров) более быстрым оказывается синхронный метод, а при передаче на большие расстояния - асинхронный. При передаче параллельного кода по параллельным линиям сиг- налы поступят в приемное устройство 2в разное время 0 из-за разброса параметров цепей, формирующих сигналы, и линий интерфейса (так называемая проблема 2состязаний 0). Используется 2два метода 0 передачи параллельного кода по нескольким линиям: со стробированием, использующим синхронную передачу, и с квитированием, в котором используется асинхронная передача. При передаче со 2стробировением 0 кроме N информационных линий используется линия "готовность данных": вначале устанавливаются значения передаваемых сигналов на информационных линиях, затем на линии готовности устанавливается уровень 1. Через строго опреде- ленный период времени (превышающий максимальное время передачи) сигнал готовности сбрасывается в 0, процесс передачи завершается, после чего можно изменить сигналы на информационных линиях и передавать следующую порцию данных. При передаче с 2квитированием 0 кроме N информационных линий и линии готовности данных используется линия подтверждения приема: вначале устанавливаются значения передаваемых сигналов на инфор- мационных линиях, затем на линии готовности устанавливается уровень 1. Приняв фронт сигнала готовности, приемное устройство считывает сигналы с информационных линий и посылает передатчику сигнал подтверждения приема. Приняв фронт сигнала подтверждения
- 4 - передатчик снимает сигнал готовности, после чего может приступать к передаче новой порции данных. 2ЦИКЛ ШИНЫ МИКРОПРОЦЕССОРА 8086 Микропроцессор 8086 взаимодействует с внешней средой с помощью 20-битной шины адреса/данных/состояния и нескольких управляющих сигналов. Собственно взаимодействие заключается в выполнении одной из двух операций: МП либо выводит (записывает) данные, либо вводит (считывает) данные или команды. В каждой из этих операций процессор должен указывать то устройство, с которым он будет взаимодействовать; другими словами, процессор должен 2адресовать 0 ячейку памяти либо порт ввода или вывода. Для передачи данных или выборки команды процессор инициирует так называемый цикл шины (кроме процессора цикл шины могут иници- ировать и другие устройства, например, процессор ввода-вывода или арифметический сопроцессор). 2Цикл шины 0 представляет собой последовательность событий, в течение которой процессор выдает адрес ячейки памяти или перифе- рийного устройства, а затем формирует сигнал записи или считыва- ния, а также выдает данные в операции записи. Выбранное устройс- тво воспринимает данные с шины в цикле записи или помещает данные на шину в цикле считывания. По окончании цикла шины устройство фиксирует записываемые данные или снимает считываемые данные. Цикл шины состоит минимум из четырех тактов синхронизации, называемых также состояниями T, которые идентифицируются спадаю- щим фронтом сигнала синхронизации CLC. В первом такте (T1) про- цессор выдает на шину адреса/данных/состояния адрес устройства, которое будет источником или получателем информации в текущем цикле шины. Во втором такте (T2) процессор снимает адрес с шины и либо переводит тристабильные буфера линий AD15-AD0 в высокоимпе- дансное состояние, подготавливая их к выводу информации в цикле считывания, либо выдает на них данные в цикле записи. Работа шинных формирователей разрешается в тактах T1 или T2 в зависимости от системной конфигурации и направления передачи информации. Управляющие сигналы, инициирующие считывание, запись или подтверждение прерываний, всегда выдаются в такте T2. В мак- симальной конфигурации системы сигнал записи формируется в такте T3, чтобы гарантировать стабилизацию сигналов данных до начала действия этого сигнала. В такте T2 старшие четыре линии адреса/состояния переключа- ются с режима выдачи адреса на режим выдачи состояния ST6 - ST3. Сигналы состояния предназначены в основном для диагностических целей. Сигналы ST4 - ST3, например, идентифицируют сегментный регистр, который участвует в формировании адреса памяти. В течение такта T3 поцессор сохраняет на линиях ST6 - ST3 информацию о состоянии. На шине AD в цикле записи сохраняются выводимые данные, а в цикле считывания производится опрос вводи-
- 5 - мых данных. Если память или периферийное устройство не может работать синхронно с процессором, оно должно до начала такта T3 сформировать низкий уровень сигнала готовности RDY. Это заставля- ет процессор ввести после такта T3 дополнительные такты, называе- мые тактами ожидания Tw. В тактах Tw на линиях шины действуют такие же уровни сигналов, что и в такте T3. Когда адресованное медленное устройство завершает операцию, оно формирует высокий уровень на входе готовности микропоцессора, что заставляет его перейти к такту T4, которым заканчивается цикл шины. В этом такте снимаются все управляющие сигналы и выбранное устройство отключа- ется от шины. Таким образом, цикл шины для памяти или периферийного уст- ройства представляет собой асинхронное действие. Устройство может управлять циклом шины только путем введения состояний ожидания. Процессор выполняет цикл шины в том случае, когда ему необ- ходимо осуществить запись или считывание информации. Если циклы шины не требуются, шинный интерфейс реализует холостые состояния Ti, в течение которых процессор сохраняет на линиях ST6 - ST3 сигналы состояния от предидущего цикла шины. Процессор выбирает во внутреннюю очередь до 6 байт командно- го потока, поэтому между выборкой команды и относящимися к ней передачами данных могут выполняться циклы шины для выборки других команд. Для правильного функционирования памяти и периферийных уст- ройств обычно требуется стабильный адрес а течение всего цикла шины. Поэтому адрес, выдаваемый на линии AD и A/S в такте T1, необходимо запомнить в регистрах/защелках и использовать зафикси- рованный адрес для выбора периферийного устройства или ячейки памяти. Специально для демультиплексирования шины адреса/дан- ных/состояния процессор формирует сигнал стробирования STB, по которому производится запись адреса в регистры-защелки. Шина адреса/дан- ных/состояния ----------¬ ------------¬ 20 ¦ ¦<======> Шина адреса ¦ ¦<=======/=======>¦Демульти-¦ (20 разрядов) ¦ ¦ ¦плексор ¦ ¦ Микропро- ¦ ¦ ¦<======> Шина данных ¦цессор 8086¦ L---------- (16 разрядов) ¦ ¦ A ¦ ¦<=====================¦============> Шина управления L------------ . - 6 - СИСТЕМНАЯ ШИНА ПЭВМ IBM PC В персональном компьютере IBM PC имеется не одна, а несколь- ко шин. Основных шин всего три: L-шина, S-шина и X-шина. Каждая из этих шин в свою очередь состоит из шины адреса, шины данных и шины управления. L-шина S-шина X-шина A A A -------------¬ ----------¬ ¦ ¦ ¦ ¦Периферийные¦ ¦ Микро- ¦ ¦ ------¬ ¦ ------¬ ¦ ¦ микросхемы ¦ ¦процессор¦<=>¦<=>¦Буфер¦<=>¦<=>¦Буфер¦<=>¦<=>¦на системной¦ L---------- ¦ L------ ¦ L------ ¦ ¦ плате ¦ ¦ ¦ ¦ L------------- V ¦ V ¦ ¦ M-шина ¦ A ¦ ¦ ¦ ------¬ ¦ ------------¬ ¦<=>¦Буфер¦<=>¦<=>¦Оперативная¦ ¦ L------ ¦ ¦ память ¦ ¦ ¦ L------------ V V Линии, идущие от микропроцессора, образуют так называемую L-шину. Входящая в состав L-шины адресная шина состоит из 20 ли- ний в IBM PC/XT (процессор 8088) и 24 линий в IBM PC/AT (процес- сор 80286) и является однонаправленной. Шина данных состоит из 8 линий в IBM PC/XT, 16 линий в IBM PC/AT на базе процессоров 80286 и 80386sx и 32 линий в ЭВМ на базе процессора 80386DX. Она явля- ется двунаправленной. Шина управления формируется сигналами, пос- тупающими непосредственно от микропроцессора, сигналами от шинно- го контроллера, а также сигналами, идущими к микропроцессору от других микросхем и периферийных адаптеров. Основной шиной, связывающей компьютер в единое целое являет- ся S-шина. Именно она выведена на специальные разъемы-слоты, в которые вставляются платы периферийных адаптеров. L-шина отделена от S-шины специальными буферными регистрами, которые не только повышают нагрузочную способность линий, но и разъединяют адресные линии этих шин, когда осуществляется прямой доступ к памяти. В режиме ПДП адреса на S-шину выставляет контроллер ПДП и страничные регистры, подключенные к X-шине, которая также через буферные регистры соединена с системной S-шиной. Таким образом, наличие трех шин позволяет выставлять адреса на системную шину различным микросхемам. Кроме этих трех шин в компьютере имеется M-шина, предназна- ченная для отделения системной S-шины от оперативной памяти. Эта
- 7 - шина включает шину управления, 16-разрядную шину данных и 10-раз- рядную шину адреса. Передача адреса с системной шины на шину памяти осуществляется через мультиплексоры: сначала выставляется 10 младших разрядов адреса, затем 10 старших разрядов. Разряд- ность адресной части шины памяти зависит от типа ЭВМ: в самых первых моделях она была равна 8, а в последних превышает 10. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 6 2ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА ЭВМ В состав современных ЭВМ входят многочисленные и разнообраз- ные по выполняемым функциям, принципам действия и характеристикам периферийные устройства, которые по назначению можно разделить на две группы: 1) внешние запоминающие устройства, предназначенные для хра- нения больших объемов информации; 2) устройства ввода-вывода, обеспечивающие связь машины с внешней средой путем ввода и вывода информации из ЭВМ, ее регист- рации и отображения. Операции ввода и вывода определяются относительно ядра ЭВМ - процессора и основной памяти. Операцией ввода называется передача в ядро ЭВМ информации из внешней среды (в том числе от пользователя), или из внешних запо- минающих устройств. Операцией вывода называется передача информации из ядра ЭВМ во внешнюю среду или во внешние запоминающие устройства. Общей характеристикой для всех периферийных устройств является скорость, с которой устройство может принимать или передавать данные. Большинство периферийных устройств имеет электромеханические узлы, скорость работы которых значительно ниже скорости работы электронных устройств ЭВМ. Скорости передачи данных, с которыми работают различные периферийные устройства, отличаются весьма значительно: от нескольких единиц до нескольких миллионов байт/с. Периферийные устройства различают по реализованному в них синхронному или асинхронному режиму передачи данных. При синхрон- ном режиме передача данных производится в определенном темпе, который задается рабочей скоростью движения носителя информации, например магнитной ленты. При асинхронном режиме передача данных может происходить в свободном темпе с остановом после передачи любого байта. ОСНОВНЫЕ ХАРАКТЕРИСТИКИ ВНЕШНИХ ЗАПОМИНАЮЩИХ УСТРОЙСТВ Одной из основных характеристик ВЗУ является общий объем хранимой информации, или емкость ВЗУ, обычно измеряемая в байтах. Из-за большого различия быстродействия оперативной памяти и ВЗУ обращения к внешней памяти вызывают потери производительности ЭВМ. Поэтому быстродействие ВЗУ является показателем не менее важным, чем его емкость. . - 2 - Обращение к ВЗУ в общем случае предполагает последовательное выполнение двух процессов: 1) доступа к ВЗУ - установки головок на участок носителя, с которого требуется считать или на который нужно записать информа- цию; 2) считывания и передачи информации из ВЗУ в оперативную па- мять или передачи информации из памяти в ВЗУ и записи ее на носи- тель. Соответственно быстродействие ВЗУ определяется двумя показа- телями: временем доступа и скоростью передачи информации. Разли- чают среднее и максимальное время доступа. В связи с определенными техническими особенностями магнитных носителей информации, на них нельзя записать и с них нельзя считать отдельный байт. Запись и считывание информации могут производиться только группами байт строго определенного размера - блоками. Внешние ЗУ делятся на устройства с прямым и последовательным доступом. В устройствах с прямым доступом, к которым относятся магнитные диски и барабаны, время доступа мало зависит от положе- ния носителя относительно головки в момент обращения к ВЗУ, что достигается циклическим движением носителя с большой скоростью относительно головки. В устройствах с последовательным доступом (ВЗУ на магнитных лентах) для поиска нужного участка носителя требуется последова- тельный просмотр записанной на носителе информации, для чего может потребоваться несколько минут. К важным характеристикам ВЗУ также относятся достоверность функционирования и относительная стоимость устройства. Обычно достоверность работы ВЗУ оценивается числом правильно воспроизводимых в режиме записи-считывания двоичных знаков на один ошибочный знак. Относительная стоимость ВЗУ определяется как отношение стои- мости устройства к его емкости. Плотность записи информации Основные характеристики ВЗУ прямо зависят от плотности записи информации на носитель. Поверхностная плотность записи информации является произ- ведением продольной плотности записи на поперечную плотность записи. Продольная плотность записи равна числу бит, записываемых на единицу длины дорожки (бит/мм, бит/см или бит/дюйм). Поперечная плотность записи равна числу дорожек, приходящихся на единицу длины в направлении, перпендикулярном движению носителя (доро- жек/мм, дорожек/см или дорожек/дюйм). Поверхностная плотность записи, таким образом, измеряется числом бит на квадратный милли- метр, квадратный сантиметр или квадратный дюйм.
- 3 - Допустимая продольная плотность записи зависит от характе- ристик магнитного носителя, зазора между носителем и головкой, конструкции головки, способа записи информации и других факторов. Увеличения поперечной плотности записи можно достигнуть уменьшением ширины дорожки и расстояния между центрами дорожек. Минимальная ширина дорожки ограничена технологическими трудностя- ми изготовления головок. При уменьшении расстояния между центрами дорожек увеличиваются перекрестные электромагнитные наводки в головках. Наибольшую плотность удается получить при контактной записи, когда магнитный носитель непосредственно соприкасается с голов- кой. Такой способ работы применяется только в устройствах с магнитными лентами и гибкими дисками, так как трение между магнитным носителем и головкой, вызывая их износ, ограничивает допустимую скорость движения носителя относительно головки. Скорость перемещения носителя влияет на такие важные харак- теристики ВЗУ, как время доступа и скорость передачи информации. С увеличением этой скорости время доступа уменьшается, а скорость передачи информации увеличивается. В устройствах на жестких дисках для увеличения линейной скорости движения носителя приме- няется бесконтактная запись. Для обеспечения высокой плотности записи зазор между головками и поверхностью диска должен быть минимальным, однако этому препятствуют механические неточности изготовления дисков и температурные деформации. Для уменьшения зазора используются различные аэродинами- ческие эффекты, создающие между головками и диском воздушную подушку толщиной в несколько микрометров. МЕТОДЫ ЗАПИСИ ИНФОРМАЦИИ НА МАГНИТНЫЙ НОСИТЕЛЬ Характеристики методов записи: 1) относительная плотность записи; 2) помехоустойчивость метода; 3) способ синхронизации (с самосинхронизацией или с внешней синхронизацией); 4) наличие или отсутствие потребности в стирании ранее запи- санной информации перед записью новой информации. Все реально используемые методы записи имеют два общих свойства: 1) используются потенциальные сигналы, поступающие на голов- ку записи; 2) не требуется предварительного стирания ранее записанной информации. . - 4 - Метод записи без возврата к нулю с переключением потока по единицам При записи 1 ток в обмотке записи изменяет направление, и носитель соответственно переходит из состояния насыщения одного знака в состояние насыщения другого знака. При записи 0 направле- ние тока в обмотке и состояние носителя не меняются. При считыва- нии 1 в обмотке головки индуцируются разнополярные импульсы, а при считывании 0 сигнал с дорожки не поступает. Поэтому для распознавания информации при считывании необходимы синхросигналы для каждого такта. Этот метод используется только в устройствах на магнитных лентах: выделяется специальная дорожка, на которую либо записывают синхросигнал, либо разряд контроля по нечетности. В последнем случае в каждом такте хотя бы с одной дорожки посту- пает сигнал 1, чем достигается самосинхронизация считываемой информации. Метод записи с фазовой модуляцией На границе каждого такта записи происходит смена направления тока в записывающей головке. Полярность тока изменяется в одном направлении при записи 0, и в противоположном при записи 1. Кроме того логическая схема тракта записи анализирует значение следую- щего записываемого двоичного знака: если должен быть записан тот же знак, что и в предыдущем такте, то в середине такта изменяется направление тока записи в головке. При считывании 1 и 0 распозна- ются по полярности импульса ЭДС в первом полутакте. По сравнению с предыдущим, при использовании этого метода частота изменения тока записи увеличивается в 2 раза, но за счет самосинхронизации и более высокой помехозащищенности он обеспечивает большую плот- ность записи. Этот устаревший метод использовался при работе с гибкими дисками. Метод частотной модуляции (FM) Ток записи изменяет направление на границе каждого такта записи и, кроме того, посередине такта при записи 1. Таким обра- зом, при записи 1 частота переключения тока вдвое больше, чем при записи 0. При считывании 1 соответствует наличие импульса произ- вольной полярности во втором полутакте, а при считывании 0 - его отсутствие. Этот метод является самосинхронизирующимся. Метод частотной модуляции применялся ранее в некоторых ЗУ на жестких дисках. . - 5 - Метод записи с модифицированной частотной модуляцией (MFM) Этот метод обеспечивает самосинхронизацию и более высокую плотность записи, чем описанные ранее методы. Переключение тока в головке при записи 1 всегда происходит в начале такта записи, а при записи 0 - посередине такта, но только в том случае, если следующий записываемый знак также 0. При считывании каждое изме- нение полярности намагничивания индуцирует в обмотке головки импульс той или иной полярности. Этот импульс соответствует 1, если он совпадает по времени с синхросигналом, и 0 в противном случае. Метод записи с групповым кодированием (RLL) Для повышения информационной емкости диска необходимо умень- шить отношение объема записываемой на диск синхронизирующей ин- формации к объему полезной информации. Для методов FM и MFM это соотношение составляет 1:1. В методе записи с групповым кодированием вместо синхроим- пульсов используется самосинхронизирующийся код, и отношение объема синхронизирующей информации к полезной составляет 1:4, что позволяет примерно в 1,5 раза увеличить скорость передачи данных и плотность записи информации на диск. Принцип RLL следующий: каждый байт поступающих данных разде- ляется на два полубайта, а затем полубайты кодируются специальным 5-разрядным кодом, отличающимся тем, что при записи каждой из кодовых комбинаций происходит по крайней мере одна перемена направления магнитного потока. При считывании каждые две 5-раз- рядные кодовые комбинации переводятся обратно в двоичные полубай- ты, объединяются и передаются в виде полного байта. От 5-разрядного кода также требуется, чтобы в любой кодовой комбинации было не более двух стоящих рядом 0, и чтобы в любой комбинации 5-разрядных кодов также было не более двух стоящих ря- дом 0. Из 32 кодовых комбинаций, возможных при 5-разрядном коде, этим условиям удовлетворяет 16. Они и приняты для кодирования по методу RLL. . - 6 - --------------------------T--------------------¬ ¦ Шестнадцатиричное число ¦ Кодовая группа RLL ¦ +-------------------------+--------------------+ ¦ 0 ¦ 11001 ¦ ¦ 1 ¦ 11011 ¦ ¦ 2 ¦ 10010 ¦ ¦ 3 ¦ 10011 ¦ ¦ 4 ¦ 11101 ¦ ¦ 5 ¦ 10101 ¦ ¦ 6 ¦ 10110 ¦ ¦ 7 ¦ 10111 ¦ ¦ 8 ¦ 11010 ¦ ¦ 9 ¦ 01001 ¦ ¦ A ¦ 01010 ¦ ¦ B ¦ 01011 ¦ ¦ C ¦ 11110 ¦ ¦ D ¦ 01101 ¦ ¦ E ¦ 01110 ¦ ¦ F ¦ 01111 ¦ L-------------------------+---------------------
ОСНОВНЫЕ ТИПЫ УСТРОЙСТВ ВВОДА-ВЫВОДА ИНФОРМАЦИИ Устройство ввода позволяет вводить в машину данные и прог- раммы. Устройства вывода служат для вывода из ЭВМ результатов об- работки данных, в том числе для их регистрации и отображения. Типы устройств ввода информации: 1) Ручного ввода: клавиатура пульта управления. 2) Полуавтоматического ввода: клавиатура дисплея, ручной мани- пулятор "мышь", световое перо, сканер, планшет, джойстик, устрой- ство ввода с перфолент, устройство ввода с магнитных носителей. 3) Автоматического ввода: читающие автоматы, речевые анализа- торы, устройства ввода с каналов связи, аналого-цифровой преобра- зователи, телетайпы. Типы устройств вывода информации: 1) Устройства фиксации на машинных носителях: перфораторы, устройства записи на магнитные носители. 2) Устройства регистрации: знакогенерирующие (АЦПУ) и графи- ческие (графопостроители). 3) Устройства наглядного отображения: дисплеи и индикаторы. 4) Устройства передачи: кодирующие устройства, цифро-аналого- вые преобразователи, модемы, телетайпы. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 7 2ПЕЧАТАЮЩИЕ УСТРОЙСТВА В зависимости от порядка вывода информации на носитель запи- си различают посимвольные, построчные и постраничные печатающие устройства. Посимвольные ПУ выводят информацию на носитель записи после- довательно символ за символом, при этом за один цикл печати формируется один знак. Построчные ПУ формируют и выводят за один цикл печати всю строку, а постраничные - всю страницу. По принципу формирования изображений символов на носителе записи различают литерные и матричные (знакосинтезирующие) ПУ. В литерных ПУ изображение формируется одновременно по всей по- верхности символа при однократном воздействии печатающей головки на носитель записи. В матричных ПУ изображение символов формиру- ется из отдельных точек последовательно или последовательно- параллельно при многократном воздействии на носитель записи. В настоящее время знакосинтезирующие ПУ полностью вытеснили литерные, так как они обеспечивают во много раз большую скорость печати, позволяют практически неограниченно расширять номенклату- ру используемых шрифтов, могут выводить не только алфавитно-циф- ровую, но и графическую информацию, многоцветные и полутоновые изображения. Наиболее широко применяются ПУ, использующие в качестве носителя обычную бумагу, так как это снижает накладные расходы, но в ряде устройств применяют ударочувствительную, электростати- ческую, электроэрозионную и другие специальные марки бумаги. По способу регистрации информации различают ПУ ударного и безударного действия. Принцип действия сильно влияет на конструк- тивные и эксплуатационные характеристики ПУ. ПУ УДАРНОГО ПРИНЦИПА ДЕЙСТВИЯ При ударном принципе действия изображение на бумаге получа- ются механическим воздействием (ударом) печатающего элемента на бумагу, как правило, через красящую ленту, из которой выдавлива- ется краситель. В некоторых литерных устройствах использовалась прямая печать, при которой краситель наносился непосредственно на поверхность литеры и далее при ударе переносился на бумагу. При использовании ударочувствительной бумаги красящая лента также не требуется. Разработаны два класса ПУ ударного принципа действия: посим- вольные и построчные. Построчные ПУ ударного действия практически не применяются из-за сложности конструкции и высокой стоимости. В настоящее время наиболее распространены посимвольные ПУ с многоэлементными матричными печатающими головками, которые форми- руют изображение знака в виде комбинации точек.
- 2 - Каждый печатающий элемент головки представляет собой тонкий стержень, соединенный с автономным быстродействующим электропри- водом (электромагнитным или пьезоэлектрическим). Печатающие эле- менты располагаются в один или несколько рядов вдоль движения носителя. При перемещении такой головки поперек движения носителя и возбуждении определенных элементов образуются отдельные знаки и вся печатаемая строка. Достоинства матричных ПУ ударного действия: простота конс- трукции, низкие накладные расходы, возможность печати на обычную бумагу, возможность многоцветной печати. Недостатки: высокий уровень шума, низкое качество печати, сильно ограниченная цветовая гамма. ПУ БЕЗУДАРНОГО ПРИНЦИПА ДЕЙСТВИЯ Применяются три класса БПУ - посимвольные, построчные и постраничные. Изображение в БПУ синтезируется из отдельных точек. В БПУ используется один из следующих способов регистрации: электрографический, феррографический, электростатический, терми- ческий и струйный. Достоинством БПУ является низкий уровень шума и высокая скорость печати. Электрографические БПУ При электрографическом способе регистрации скрытое электри- ческое изображение создается на промежуточном носителе записи с фотопроводниковым слоем на поверхности и переносится на бумагу с помощью тонера (мелкодисперсного красящего порошка). Затем изоб- ражение закрепляется термическим способом. Для создания скрытого электрического изображения на фотопроводниковый носитель воздейс- твуют электромагнитным излучением, источником которого могут быть лазеры, светодиоды, светоклапанные системы или электронно-лучевые трубки. Лазерные ПУ являются высокоскоростными, обеспечивают высокое качество печати и позволяют использовать широкую цветовую гамму. Развертка лазерного луча вдоль строки производится электромехани- ческим путем с помощью вращающегося зеркального многогранника или призмы. Светодиодные и светоклапанные системы используются в сред- нескоростных ПУ. Светодиодные системы записи представляют собой светодиодную линейку, излучение которой проецируется на промежу- точный носитель записи. В светоклапанных системах электромагнит- ное излучение, создаваемое лампой накаливания, проецируется на промежуточный носитель записи через световые затворы, например, магнитооптические или жидкокристаллические. . - 3 - В качестве промежуточного носителя используются электрогра- фические циллиндры (барабаны, покрытые фотопроводниковым слоем) или гибкая пластмассовая пленка, покрытая фотопроводниковым слоем с металлическим подслоем. Феррографические БПУ Феррографические БПУ отличаются от злектрографических только тем, что на промежуточном носителе создается скрытое магнитное, а не электрическое изображение. Для этого в качестве промежуточного носителя используют магнитные барабаны или ленты, информация на которые записывается многодорожечными блоками магнитных головок. Используемый в феррографических БПУ тонер должен быть магнито- чувствительным. Электростатические БПУ Электростатическая регистрация состоит в создании скрытого электрического изображения на диэлектрической поверхности основ- ного или промежуточного носителя. Наибольшее распространение получили электростатические БПУ без промежуточного носителя. В низ запись ведется на специальную электростатическую бумагу, рабочая поверхность которой имеет тон- кий диэлектрический слой. Для записи на такую бумагу используются одно- или многорядные записывающие головки, представляющие собой блок тонких электродов, расположенных соответственно в один или несколько рядов. При подаче на электроды высоковольтных импульсов на диэлектрической поверхности бумаги формируется скрытое изобра- жение. Затем бумага протягивается через узел проявления, в кото- ром диспергированные в жидкой органической среде частицы красите- ля визуализируют скрытое изображение. Достоинством электростатических БПУ является возможность многоцветной печати. Термические БПУ Способ термопечати основан на двух принципиально различных схемах - с использованием и без использования промежуточного носителя. Для создания изображения на носитель информации воз- действуют теплотой, выделяемой записывающей головкой, которая мо- жет содержать до нескольких тысяч отдельных элементов. В термопечатающих БПУ без промежуточного носителя использу- ется бумага, покрытая теплочувствительным веществом, которое при нагреве изменяет цвет. Недостатком этих устройств являются низкое качество печати, высокая стоимость термобумаги и ее чувствитель- ность к температуре окружающей среды. В БПУ с промежуточным носителем между термопечатающей голов- кой и бумагой размещают копировальную пленку: пластмассовую
- 4 - пленку толщиной 5-10 мкм, покрытую красящим слоем с низкой темпе- ратурой плавления. При контакте бумаги с копировальной пленкой и кратковременном прогреве ее термопечатающей головкой красящий слой локально оплавляется и переходит на бумагу, создавая на ней элемент изображения. Этот способ обеспечивает высокое качество печати, широкую гамму цветов, но при этом очень велики накладные расходы. Струйные БПУ В настоящее время выпускаются только струйные ПУ последова- тельного действия (посимвольные или растровые). В струйных ПУ печать производится с помощью мелких капелек красителя, которые вылетают из сопла печатающей головки. Число сопл в головке может достигать нескольких десятков. Для генерации капель в канале с чернилами, связанном с выходными отверстиями сопл, возбуждают ударную волну, которая, дойдя до отверстия сопла, выбрасывает каплю. Для создания ударной волны используются два способа: возбуждение пьезоэлемента или нагревание микрорезистора. Струйные ПУ обеспечивают высокое качество и скорость печати, позволяют создавать многоцветные изображения, но струйные печата- ющие головки имеют ограниченный срок службы из-за засорения ка- пилляров.
2УСТРОЙСТВА ВЫВОДА ГРАФИЧЕСКОЙ ИНФОРМАЦИИ Устройства вывода графической информации можно разделить на три основных класса: 1) электромеханические графопостроители векторного типа; 2) растровые устройства вывода графической информации; 3) устройства вывода информации на микрофильм. Графопостроители делятся на устройства с высокой, средней и малой производительностью. Производительность электромеханических графопостроителей определяется динамическими параметрами устройс- тва: максимальной скоростью и ускорением пишущего элемента. По точности устройства делятся на прецизионные, средней точности и малой точности. По области применения: автономные; работающие в составе больших ЭВМ и систем; работающие в составе рабочих станций и ПЭВМ. ВЕКТОРНЫЕ ГРАФОПОСТРОИТЕЛИ По принципу действия электромеханические векторные графо- построители делятся на устройства с неподвижным носителем инфор- мации и устройства с перемещаемым носителем информации.
- 5 - В устройствах первого типа носитель информации закреплен на плоской рабочей поверхности планшета. Перемещение пишущего эле- мента осуществляется электромеханической координатной системой по двум осям. Этот тип графопостроителей принято именовать планшет- ными. В устройствах второго типа по одной координате перемещается пишущий элемент, а по второй перемещается бумажный носитель. Графопостроители этого типа называют барабанными. В зависимости от способа перемещения носителя барабанные графопостроители делятся на устройства с перфорированным носи- телем, в которых носитель перемещается транспортным валом за краевую перфорацию, и устройства с фрикционным перемещением неперфорированного носителя, в которых перемещение носителя осу- ществляется за счет частичного или полного микрозахвата носителя транспортным валом с фрикционным покрытием (т.е. захват носителя осуществляется за счет трения о транспортный вал). УСТРОЙСТВА ВЫВОДА ИНФОРМАЦИИ НА МИКРОФИЛЬМ Устройства вывода информации на микрофильм, по сравнению с устройствами вывода на бумажный носитель, обеспечивают: 1) повышение скорости вывода алфавитно-цифровой информации в 20 раз, а графической - в 100-200 раз; 2) повышение плотности записи и, соответственно, уменьшение объема хранилищ информации; 3) ускорение процесса копирования и экономию бумаги. Недостатками этих устройств являются: 1) невозможность чтения микрофильма без специальной аппара- туры; 2) высокий уровень начальных капитальных вложений; 3) потребность в специальном программном обеспечении для учета особенностей микрофильмирующих устройств; 4) для обработки и копирования микрофильмов нужна фотолабо- ратория. Методы вывода информации на микрофильм: 1) запись с экрана ЭЛТ; 2) непосредственная запись электронным лучом; 3) запись с помощью линейки светодиодов; 4) запись лазерным лучом. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 8 2ОСНОВНЫЕ ТИПЫ И ХАРАКТЕРИСТИКИ ДИСПЛЕЕВ Основными техническими характеристиками дисплея являются: - размер экрана по диагонали; - емкость экрана; - способ формирования изображения (растровый или векторный); - способ формирования символов; - частота регенерации изображения; - зернистость монитора. Как правило, дисплей состоит из цветного или черно-белого монитора, блока управления и клавиатуры. По типу отображаемой информации дисплеи делятся на алфавит- но-цифровые и графические. Применяется три различных типа алфавитно-цифровых дисплеев: 1) дисплеи, способные отображать только алфавитно-цифровую информацию; 2) дисплеи, способные отображать псевдографические символы; 3) интеллектуальные дисплеи, обладающие редакторскими воз- можностями и осуществляющие предварительную обработку данных. Графические дисплеи делятся на два типа: векторные и растро- вые. Векторные дисплеи предназначены для получения статических и динамических изображений ограниченного объема в виде совокупности точек, отрезков векторов и символов с высокой разрешающей способ- ностью (свыше 2048x2048 точек). Изображение, как правило, являет- ся черно-белым с несколькими градациями яркости. Растровые дисплеи с режимом регенерации и матричным растро- вым способом получения графических образов на экране позволяют получать черно-белые и цветные статические и динамические изобра- жения. Их разрешающая способность достигает 1280x1024 точек. Дисплеи без режима регенерации с запоминающими экранами на ЭЛТ или плоских индикаторных панелях используются для отображения статических образов большого объема. Они дают черно-белое изобра- жение без градаций яркости и имеют разрешающую способность до 4096x4096 точек. В настоящее время все IBM-совместимые персональные компьюте- ры комплектуются графическими растровыми дисплеями с разрешающей способностью от 640x350 до 1280x1024 точек и размером по диагона- ли от 9 до 31 дюйма (в некоторых особых случаях в качестве допол- нительного устройства может использоваться алфавитно-цифровой или векторный дисплей). На наиболее дешевых моделях и на файл-серве- рах устанавливаются 14-дюймовые черно-белые (стоимостью около 100 $) или цветные (стоимостью 200-250 $). Модели среднего класса снабжаются 15-дюймовым монитором, снабженным защитой от вредных излучений (Low Radiation), соответствующей стандарту MPR II. На графические станции устанавливаются мониторы с размером по диаго-
- 2 - нали 17 и более дюймов. Контроллеры растровых дисплеев обеспечивают палитру от 2 до 256 цветов, а наиболее современные модели - 2 516 0(65536) и даже 2 524 0 (свыше 16 миллионов) цветов. В графическом режиме дисплея в видеопамяти для каждой точки экрана должен быть записан тот цвет, которым эта будет изображаться. Так что чем больше разрешающая способность дисплея и чем больше может одновременно изображаться цветов на экране, тем больший размер должна иметь видеопамять, т.е. встроенное в контроллер монитора ОЗУ. Контроллеры, обеспечи- вающие режим 640x480 точек с 16 цветами имеют 256 Кбайт памяти, обеспечивающие режим 800x600 точек с 256 цветами и 1024x768 с 16 цветами - 512 Кбайт памяти, а обеспечивающие режим 1024x768 с 256 цветами - 1 Мбайт. На четкость изображения на экране монитора существенное вли- яние оказывает размер точки (зерна) экрана. Чем меньше размер точки, тем более четким получается изображение. На мониторах стандартного размера (14 дюймов) при разрешении 640x480 удовлет- ворительное изображение получается при размере зерна 0,39 мм, а хорошее - при зерне 0,31 мм. При разрешении 800x600 точек необхо- димо зерно 0,31 мм, а для режима 1024x768 - 0,28 или 0,25 мм. На мониторах с большим зерном изображение получается нечетким. ОСОБЕННОСТИ РАСТРОВЫХ УСТРОЙСТВ Растровое устройство можно рассматривать как матрицу диск- ретных ячеек (точек), каждая из которых может быть подсвечена. Таким образом, оно является точечно-рисующим устройством. Невоз- можно, за исключением специальных случаев, непосредственно нари- совать отрезок прямой из одной адресуемой точки (пиксела) в мат- рице в другую адресуемую точку. Отрезок можно лишь аппроксимиро- вать последовательностями точек, близко лежащих к реальной траек- тории отрезка. Отрезок прямой из точек получится только в случае горизон- тальных, вертикальных или расположенных под углом 45 градусов от- резков. Все другие отрезки будут выглядеть как последовательности ступенек. Это явление называется лестничным эффектом (ступенча- тостью изображения): --¬ --¬ --¬ ¦ ¦ +-+ --+-- --+-- +-+ --+-- ¦ ¦ +-+ --+-- ----¬ ¦ ¦ +-+-+-- ----+---- --+-- +-+-+-T-T-T-¬ ----+---- ¦ ¦ L-+-+-+-+-+-- L---- L-- Чаще всего для графических устройств с растровой ЭЛТ исполь- зуется буфер кадра. Буфер кадра представляет собой большой непре-
- 3 - рывный участок памяти компьютера. Для каждой точки (пиксела) в растре отводится как минимум один бит памяти. Эта память называ- ется битовой плоскостью. Изображение в буфере кадра строится по- битно. Из-за того что бит памяти имеет только два состояния (0 или 1), имея одну битовую плоскость, можно получить лишь чер- но-белое изображение. Битовая плоскость является цифровым уст- ройством, тогда как растровая ЭЛТ - аналоговое устройство. Поэто- му при считывании информации из буфера кадра и ее выводе на гра- фическое устройство с растровой ЭЛТ должно происходить преобразо- вание из цифрового представления в аналоговый сигнал. Такое пре- образование выполняет цифро-аналоговый преобразователь (ЦАП). Графическое устройство с черно-белой растровой ЭЛТ: г===T===T===T===¬ г===T===T===T===¬ ¦ ¦ ¦ ¦ ¦ Триггер ¦ ¦ ¦ ¦ ¦ ¦---+---+---+---¦ ----¬ ------¬ ¦---+---+---+---¦ ¦ ¦ 1 +---+---+------>¦ 1 +----->¦ ЦАП +------+---+>* ¦ ¦ ¦ ¦---+---+---+---¦ L---- L------ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦---+---+---+---¦ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===¦===¦===¦===- L===¦===¦===¦===- Буфер кадра Растр ЭЛТ
Цвет или полутона серого цвета могут быть введены в буфер кадра путем использования дополнительных битовых плоскостей. Схема буфера кадра с N битовыми плоскостями для градаций се- рого цвета: г===T===T===T===¬ N-разрядный ¦ ¦ ¦ ¦ ¦ регистр г===+===+===+===+---¦ ----¬ г===T===T===T===¬ ¦ ¦ ¦ ¦ ¦ 0 +-->¦ 0 ¦ ¦ ¦ ¦ ¦ ¦ г===+===+===+===+---+---¦ +---+ ------¬ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦ 1 +---+-->¦ 1 ¦===>¦ ЦАП +-----+---+---+---+>* ¦ ¦---+---+---+---+---+---¦ +---+ L------ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ 0 +---+---+-->¦ 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦---+---+---+---+---+===- L---- ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦---+---+---+---+===- L===¦===¦===¦===- ¦ ¦ ¦ ¦ ¦ L===¦===¦===¦===- Растр ЭЛТ Буфер кадра Интенсивность каждого пиксела на ЭЛТ управляется содержимым соответствующих пикселов в каждой из N битовых плоскостей. В со- ответствующую позицию регистра загружается двоичная величина из
- 4 - каждой плоскости. Двоичное число, получившееся в результате, ин- терпретируется как уровень интенсивности между 0 и 2 5N 0-1. Всего можно получить 2 5N 0 уровней интенсивности за счет увеличения необ- ходимого объема памяти буфера кадра в N раз. Число доступных уровней интенсивности можно увеличить, нез- начительно расширив требуемую для этого память и воспользовавшись 2таблицей цветов 0: г=T=T=T=¬ N-разрядный ¦ ¦ ¦ ¦ ¦ регистр W=4 г=+=+=+=+-¦ ----¬ --T-T-T-¬ г===T===T===T===¬ ¦ ¦ ¦ ¦ ¦0+-->¦ 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ г=+=+=+=+-+-¦ +---+ 2 +-+-+-+-+ ------¬ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦1+-+-->¦ 1 ¦=¬ ¦ ¦ ¦ ¦ ¦ г==>¦ ЦАП +--+---+---+---+>* ¦ ¦-+-+-+-+-+-¦ +---+ ¦ +-+-+-+-+ ¦ L------ ¦---+---+---+---¦ ¦ ¦ ¦ ¦0+-+-+-->¦ 0 ¦ L=>¦1¦0¦1¦0¦=- ¦ ¦ ¦ ¦ ¦ ¦-+-+-+-+-+=- L---- +-+-+-+-+ ¦---+---+---+---¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-+-+-+-+=- +-+-+-+-+ L===¦===¦===¦===- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=¦=¦=¦=- +-+-+-+-+ Растр ЭЛТ ¦ ¦ ¦ ¦ ¦ Буфер кадра +-+-+-+-+ ¦ ¦ ¦ ¦ ¦ +-+-+-+-+ ¦ ¦ ¦ ¦ ¦ L-+-+-+-- Таблица цветов (2 5N 0 элементов) После считывания из буфера кадра битовых плоскостей получив- шееся число используется как индекс в таблице цветов. В этой таб- лице содержится 2 5N 0 элементов. Каждый ее элемент может содержать W бит, причем W>N, т.е. можно получить 2 5W 0 значений интенсивности, но одновременно будут доступны только 5 02 5N 0 из них. Для получения дополнительных интенсивностей таблицу цветов следует изменить (перезагрузить). Поскольку существует три основных цвета, можно реализовать простой цветной буфер кадра с тремя битовыми плоскостями, по од- ной для каждого из основных цветов. Каждая битовая плоскость бу- дет управлять индивидуальной электронной пушкой для каждого из трех основных цветов, используемых в видеотехнике (красный, зеле- . - 5 - ный, синий). Три основных цвета, комбинируясь на ЭЛТ, дают 8 цве- тов: ------------T---------T---------T-------¬ ¦ ¦ Красный ¦ Зеленый ¦ Синий ¦ +-----------+---------+---------+-------+ ¦ Черный ¦ 0 ¦ 0 ¦ 0 ¦ ¦ Красный ¦ 1 ¦ 0 ¦ 0 ¦ ¦ Зеленый ¦ 0 ¦ 1 ¦ 0 ¦ ¦ Синий ¦ 0 ¦ 0 ¦ 1 ¦ ¦ Желтый ¦ 1 ¦ 1 ¦ 0 ¦ ¦ Голубой ¦ 0 ¦ 1 ¦ 1 ¦ ¦ Пурпурный ¦ 1 ¦ 0 ¦ 1 ¦ ¦ Белый ¦ 1 ¦ 1 ¦ 1 ¦ L-----------+---------+---------+-------- Для каждой из трех цветовых пушек могут использоваться до- полнительные битовые плоскости. Если используется по 8 плоскостей на каждый цвет (буфер с 24 битовыми плоскостями), то каждая такая группа может генерировать 256 оттенков красного, зеленого или си- него цвета, и в общей сложности можно получить 16777216 = 2 524 цветов.
2ВИДЕОСИСТЕМЫ КОМПЬЮТЕРОВ СЕРИИ IBM AT Из-за большого количества пикселов в растровых графических устройствах трудно достичь производительности, необходимой для работы в реальном времени, а также приемлемой скорости регенера- ции (смены кадра). Например, если среднее время доступа к каждому индивидуальному пикселу равно 200 нс, то для доступа ко всем пик- селам кадра размером 512 Х 512 потребуется 0,0524 с. Это эквива- лентно скорости регенерации 19 кадров в секунду, что значительно ниже минимально необходимой скорости 30 кадров в секунду. В буфе- ре кадра размером 1024 Х 1024 более 1 млн. пикселов, и при сред- нем времени доступа 200 нс требуется 0,21 с для доступа ко всем пикселам. Это составляет 5 кадров в секунду. Буфер кадра 4096 Х 4096 содержит свыше 16 млн. пикселов. Для достижения скорости регенерации 30 кадров в секунду при таком растре требуется средняя эффективная скорость доступа 2 нс/пик- сел. Работа в реальном времени с растровыми графическими устройс- твами осуществляется путем одновременного доступа к группам по 16, 32, 64 и более пикселов. В случае цветного буфера кадра пик- сел может содержать до 32 бит, при этом все битовые плоскости для каждого пиксела доступны одновременно. Хотя производительности, необходимой для работы в реальном масштабе времени с приемлемыми скоростями регенерации, на растро- вых устройствах достичь труднее, чем на векторных дисплеях с ре-
- 6 - генерацией, на них легче изображать сплошные фигуры с плавными переходами цветов.
ВИДЕОКОНТРОЛЛЕРЫ EGA, VGA И SVGA Видеоконтроллеры IBM AT и совместимых с ними машин могут ра- ботать в двух режимах - текстовом и графическом. В связи с тем, что стандартные процедуры BIOS, предназначенные для вывода на эк- ран текста и графики, выполняются медленно (вследствие допущенных на начальном этапе разработки операционной системы MS DOS ошибок и просчетов), на практике применяются только процедуры переключе- ния видеорежимов и процедуры управления цветовой палитрой. Все остальные операции выполняются путем прямого взаимодействия с ап- паратурой видеоадаптеров. Реализовать переключение видеорежима напрямую через регистры очень трудно, так как в этой операции участвуют некоторые регитры, для которых нет универсального обще- го стандарта (т.е. для контроллеров разных фирм требуется загруз- ка в эти регистры различных значений). Программирование видеоадаптеров усложняется тем, что при их разработке широко использовались методы "экономии адресного про- странства": один и тот же регистр может выполнять различные функ- ции в зависимости от состояния управляющих регистров адаптера, и выполняемой над регистром операции (запись или считывание ин- формации). При работе в текстовых режимах контроллеры EGA, VGA И SVGA мониторов отображают на видеопамять область адресного пространс- тва B8000h-BFFFFh. Начало этой области соответствует левому верх- нему углу экрана. Каждому символу соответствует два байта памяти: младший байт кодирует вид символа, а старший байт - цвет символа и цвет фона, на котором будет отображен символ. Старший байт (код цвета): ----T---T---T---T---T---T---T---¬ ¦ 7 ¦ 6 5 4 ¦ 3 ¦ 2 1 0 ¦ L---+---+---+---+---+---+---+---- ¦ L-----T------ ¦ L-----T------ ¦ Цвет фона ¦ Цвет символа ¦ ¦ Мерцание Яркость . - 7 - Видеопамять в текстовом режиме имеет следующую структуру: Символ 0 Символ 1 Символ N ------+-----¬ ------+-----¬ ------+-----¬ -------T------T------T------T-- - - - --T------T------¬ B8000h ¦ код ¦ цвет ¦ код ¦ цвет ¦ ¦ код ¦ цвет ¦ +------+------+------+------+-- - - - --+------+------+ B8000h+2N ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +------+------+------+------+-- - - - --+------+------+ B8000h+4N ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +------+------+------+------+-- - - - --+------+------+ где N - длина строки в символах (40, 80, 128, 132). Стандартные цветовые атрибуты: --------------T--------------------T---------------------¬ ¦ Код цвета ¦ Стандартный цвет ¦ Цвет с повышенной ¦ ¦ ¦ ¦ интенсивностью ¦ +-------------+--------------------+---------------------+ ¦ 000 ¦ Черный ¦ Темно-серый ¦ ¦ 001 ¦ Синий ¦ Светло-синий ¦ ¦ 010 ¦ Зеленый ¦ Светло-зеленый ¦ ¦ 011 ¦ Морской волны ¦ Голубой ¦ ¦ 100 ¦ Красный ¦ Светло-красный ¦ ¦ 101 ¦ Фиолетовый ¦ Малиновый ¦ ¦ 110 ¦ Коричневый ¦ Желтый ¦ ¦ 111 ¦ Светло-серый ¦ Ярко-белый ¦ L-------------+--------------------+---------------------- ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 9 РАБОТА ВИДЕОКОНТРОЛЛЕРОВ EGA И VGA В ГРАФИЧЕСКИХ РЕЖИМАХ Графические режимы контроллеров EGA, VGA и SVGA можно разде- лить на 2 основные группы: режимы с 16 цветами и режимы с 256 цветами. Эти две группы сильно отличаются друг от друга по орга- низации видеопамяти. 2Видеорежимы с 16 цветами Контроллер EGA работает в режимах с разрешением 640х200 и 640х350 точек, контроллер VGA имеет дополнительный режим 640х480 точек, а контроллеры SVGA часто могут также реализовывать режимы 800х600 и 1024х768 точек. К сожалению, видеопамять в этих режимах имеет очень неудобную и морально устаревшую организацию, что очень сильно замедляет вывод графики. В настоящее время эти видеорежимы используются только для создания простых статических изображений (чертежей и диаграмм). В режимах с 16 цветами память разделена на 4 видеоплоскости: по одной на каждый из основных цветов и одна плоскость служит для кодирования яркости. Байт данных в видеоплоскости кодирует инфор- мацию для восьми расположенных рядом по горизонтали точек (пиксе- лов). Упрощенная схема прохождения данных через графические конт- роллеры EGA и VGA в графических режимах с 16 отображаемыми цвета- ми (цепи установки/сброса не показаны): . - 2 -
Битовая ------¬ маска ----------------->¦ ¦ -¬ ----------¬ ¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость¦ ¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 3 ¦ ¦¦ L-Защелка ¦ L------ ¦+------>¦ ¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦¦ L------------->¦¦ ¦ ¦ ¦¦ L- ¦ ¦ Сдвигающий¦L------------------------------------+ ¦ регистр ¦ ------¬ ¦ ¦ --¬ +---------------->¦ ¦ -¬ -+--------¬¦ ¦ ¦ ¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость+- Байты ¦ ¦ ¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 2 ¦ данных от ¦ ¦ ¦¦ L-Защелка ¦ L------ ¦+----->¦ ¦ процессора ¦ ¦ ¦¦ ¦ ¦¦ ¦ ¦ ==========>¦ +--+¦ L------------->¦¦ ¦ ¦ ¦ ¦ ¦¦ L- ¦ ¦ ¦ ¦ ¦L-----------------------------------+ ¦ ¦ ¦ ¦ ------¬ ¦ ¦ L-- +---------------->¦ ¦ -¬ -+--------¬¦ ¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость+- ¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 1 ¦ ¦¦ L-Защелка ¦ L------ ¦+---->¦ ¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦¦ L------------->¦¦ ¦ ¦ ¦¦ L- ¦ ¦ ¦L----------------------------------+ ¦ ¦ ------¬ ¦ ¦ L---------------->¦ ¦ -¬ -+--------¬¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость+- -->¦+--------T-->¦ ¦ ¦¦ ¦ 0 ¦ ¦ L-Защелка ¦ L------ ¦+--->¦ ¦ ¦ ¦ ¦¦ ¦ ¦ ¦ L------------->¦¦ ¦ ¦ ¦ L- ¦ ¦ L---------------------------------+ ¦ ¦ ¦ L---------- 2Сдвигающий регистр 0 служит в основном в качестве буфера для хранения байта данных, поступившего от процессора. Операция сдви- га данных используется крайне редко, так как значительно удобнее выполнять ее в процессоре. 2Регистры-защелки 0 служат для временного хранения старого со- держимого 4-х байтов с одинаковыми адресами из 4-х видеоплоскос- тей: часто необходимо изменять только некоторые из 8 точек, опи-
- 3 - сываемых этими байтами данных, а остальная информация должна ос- таваться неизменной. Чтобы в защелках сохранилось старое значение данных, перед операцией записи в видеопамять должна быть выполне- на операция чтения из видеопамяти по тому же адресу. Для определения того, какие точки должны быть изменены, а какие - сохранены, используется 2регистр битовой маски 0. Бит ре- гистра битовой маски определяет, будет ли записана в соответству- ющий бит видеопамяти информация из АЛУ или регистра-защелки: ---------¬ ----------¬ ¦ Бит из ¦ ¦ Бит из ¦ ¦ АЛУ ¦ ¦ защелки ¦ L----T---- L----T----- ¦ ¦ -----------¬ ¦ 1 0 ¦ ¦ Бит из ¦ L------- ------- ¦ регистра +-------------->\ ¦ битовой ¦ ¦ ¦ маски ¦ ¦ L----------- ¦ V Видеопамять 2Арифметико-логическое устройство 0 позволяет выполнять опера- ции И (AND), ИЛИ (OR) и ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) над содержимым ре- гистра-защелки и поступившим от процессора байтом. Это прозволяло создавать примитивные анимационные эффекты, однако в настоящее время такие приемы практически не применяются. Недостатком графических 16-цветных режимов является необхо- димость интенсивной работы с большим числом рагистров при выводе в видеопамять текстов и графики. На одну операцию вывода в видео- память приходится одна операция чтения из видеопамяти и одна-две операции записи в регистры, что замедляет работу с видеопамятью в десятки раз (из-за конструктивных особенностей контроллеров EGA и VGA обращение к регистру выполняется в несколько раз медленнее, чем обращение к видеопамяти). 2Рассмотрим наиболее часто используемые регистры: 2"Первый регистр входного состояния" 0 (Input Status Register One) расположен по адресу 3DAh. Бит 3 в этом регистре устанавли- вается в 1 в течение обратного хода луча по кадру. При выполнении различных видеоэффектов типа прокрутки изображения или перезаг- рузки палитры используемых цветов, а также при создании движущих- ся изображений состояние этого регистра приходится постоянно контролировать, так как в некоторые регистры контроллера разреша- ется записывать данные только в течение обратного хода луча.
- 4 -
2"Регистр адреса указателя последовательности" 0 (Sequenser Address Register), расположенный по адресу 3C4h, определяет, какой из 5 регистров, ассоциированных с портом 3C5h, будет досту- пен для операций ввода-вывода. Чтобы получить доступ к 2Регистру маскирования растра 0 (Map Mask Register), необходимо записать по адресу 3C4h число 2. Каж- дому из 4 младших битов регистра маскирования растра поставлена в соответствие одна битовая матрица - запись 1 в любой из этих би- тов делает соответствующую матрицу недоступной. Старшие 4 бита не используются. Регистр маскирования растра позволяет копировать сложные графические изображения из ОЗУ ЭВМ в видеопамять пооче- редно для каждой видеоплоскости, что позволяет выводить на экран заранее созданные и записанные на диск картинки-слайды. Регистр 3D4h определяет, какой из регистров контроллера электронно-лучевой трубки будет доступен для чтения-записи инфор- мации через регистр 3D5h. Так, для доступа через порт 3D5h к 2"Регистру начального 2старшего адреса" 0 (Start Address High Register) необходимо запи- сать в порт 3D4h число 0Ch, а для доступа к 2"Регистру начального 2младшего адреса" 0 (Start Address Low Register) - число 0Dh. В эти регистры записывается адрес ячейки памяти первого отображаемого на экране монитора символа или пикселя. Оба регистра доступны для чтения и записи и используются для плавной вертикальной и грубой горизонтальной 2"прокрутки" 0 изображения на экране и для переключе- ния видеостраниц. Для доступа к регистру 2"Смещение" 0 (Offset Register), который определяет объем видеопамяти, выделенной для хранения одной стро- ки видеоизображения, необходимо загрузить в регистр 3D4h код 13h. Этот регистр предназначен для поддержки режима плавной прокрутки изображения на экране - длина строки, благодаря этому регистру, может быть значительно больше высвечиваемой ее части. Регистр 2"Адрес графики" 0 расположен по адресу 3CFh и опреде- ляет, какой из следующих регистров подключен к порту 3CEh. Регистр 2"Установка/сброс" 0 с индексом 0 может быть использо- ван для выбора битовых матриц в режиме постоянного сброса или ус- тановки. Для определении битовой матрицы как "установленной" в соответствующий бит записывается 1. Если бит установлен в 0, то соответствующая матрица находится в режиме сброса. (Содержимое этого регистра имеет значение только в режиме записи 0). Регистр 2"Разрешение установки/сброса" 0 (индекс 1) разрешает (при 1 в соответствующем бите) или запрещает (при 0) режим уста- новки/сброса для каждой из 4 битовых матриц. Регистр 2"Циклический сдвиг данных" 0 с индексом 3 обеспечивает сдвиг данных на заданное число позиций вправо перед записью их в ячейку памяти, а также позволяет осуществлять, вместо простой за-
- 5 - писи информации в память, операции И, ИЛИ, и исключающее ИЛИ над содержимым ячейки памяти и передаваемыми из процессора данными. Регистр 2"Выбор считываемой матрицы" 0 с индексом 4 определяет номер считываемой битовой плоскости в режиме чтения 0. Номер би- товой плоскости кодируется в младших двух битах регитра, а стар- шие 6 бит не используются. Регистр 2"Режим" 0 имеет индекс 5. Биты 0 и 1 этого регистра определяют режим записи: - в режиме 0 данные, помещаемые в память адаптера, записыва- ются в каждую разрешенную матрицу; - в режиме 1 в память заносится без изменения содержимое ре- гистров-защелок (этот режим предназначен для копирования информа- ции с одного места видеопамяти в другое); - в режиме 2 регистр битовой маски применяется для запреще- ния или разрешения установки отдельных пикселей в заданный цвет; - в режиме 3 выполняется операция И над содержимым регистра установки/сброса и битовой маской, а результат заносится в видео- память. Бит 3 определяет режим считывания данных из видеопамяти. При 0 в этом бите процессор прочитает байт из видеплоскости, номер которой задан в регистре "выбор считываемой матрицы". При 1 в этом бите в считанном процессором байте в 1 будут установлены только те биты, для которых цвет пикселей соответствует значению, указанному в регистре 2"Сравнение цвета" 0. Регистр 2"Смешанные данные" 0 с индексом 6 управляет типом ре- жима: текстовый или графический", а также определяет начальный адрес видеопамяти. Регистр 2"Цвет безразличен" 0 с индексом 7 позво- ляет игнорировать установленные в регистре "Сравнение цветов" значения для заданных видеоплоскостей. Регистр "Битовой маски" с индексом 8 разрешает (при 1 в соответствующем бите) или запрещает (при 0) модификацию определенных битов в байте видеопамяти, к ко- торому обращается процессор. Порт 3C0h использует иной метод экономии пространства адре- сов. Перед обращением к этому порту неоходимо выполнить операцию считывания из порта 3DAh. Затем в порт 3C0h заносится индекс тре- буемого порта, а при следующем обращении к порту 3C0h будет про- изведена запись в выбранный регистр. Так, для обращения к регист- ру 2"Горизонтальное поэлементное панарамирование" 0 необходимо вна- чале задать индекс 13h. Регистр поэлементного панарамирования используется для 2плавной прокрутки 0 изображения 2по горизонтали 0 в 16-цветных графических режимай, когда каждому байту битовой плос- кости соответствует 8 пикселов на экране (и изменение одних толь- ко регистров начального адреса приводило бы к скачку сразу на 8 пикселей). ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 14 2МИКРОПРОЦЕССОРЫ СЕРИИ iX86 ФИРМЫ INTEL Выбор в программе на Ассемблере типа процессора По умолчанию Турбо Ассемблер ассемблирует код только для процессора 8086. Чтобы Турбо Ассемблер мог поддерживать другие процессоры серии iAPx86, или сопроцессоры, вы должны указывать соответствующие директивы. Следующие директивы сообщают Турбо Ас- семблеру, какой тип процессора нужно поддерживать при ассемблиро- вании кода: .186 .286C .287 .386C .387 .8087 .286 .286P .386 .386P .8086 Эти директивы можно указывать в любом месте исходного фай- ла, после чего они сразу вступают в действие. В одном исходном файле можно разместить несколько директив выбора типа процессора, при этом текущим процессором считается процессор, выбранный по последней указанной директиве. В любой момент можно указать директиву .8086, по которой Турбо Ассемблер будет снова поддерживать только процессор 8086. (В остальной части данной главы все ссылки на процессор 8086 от- носятся в равной степени и к процессору 8088.)
2ПРОЦЕССОРЫ 80186 И 80188 Процессор 80186 (который является процессором серии iAPx86) в основном аналогичен процессору 8086. Процессор 80186 поддержи- вает все инструкции процессора 8086, а также несколько новых инс- трукций и расширенные формы некоторых инструкций процессора 8086. Процессор 80188 обладает программной совместимостью с про- цессором 80186. Единственное отличие между ними заключается в том, что процессор 80186 имеет 16-разрядную шину данных, а про- цессор 80188 - 8-разрядную. Поддержка Турбо Ассемблера для ассемблирования кода процес- сора 80186 разрешается по директиве .186. Далее мы рассмотрим новые и расширенные инструкции процес- сора 80186. Перед началом рассмотрения отметим, что процессор 8086 не распознает ни одну из тех инструкций, которые мы будем обсуждать. В итоге все программы, которые содержат хотя бы одну инструкцию (новую или расширенную) процессора 80186, на процес- соре 8086 работать не будут. . - 2 - 2Новые инструкции Набор инструкций процессора 80186 содержит следующие новые инструкции: BOUND INS OUTS PUSHA ENTER LEAVE POPA Инструкции PUSHA и POPA Инструкции PUSHA и POPA предоставляют эффективное средство, с помощью которого можно заносить и извлекать из стека все восемь общих регистров. Инструкций PUSHA заносит в стек восемь общих ре- гистров в следующем порядке: AX, CX, DX, BX, SP, BP, SI, DI. POPA извлекает регистры DI, SI, BP, BS, DX, CX и AX (то есть выполняет действие, обратное действию инструкции PUSHA). Регистр SP инс- трукцией POPA не извлекается, вместо этого SP увеличивается на 16 - длину блока регистров, занесенных в стек по инструкции PUSHA, а значение SP, занесенное в стек по инструкции PUSHA, очищается ин- струкцией POPA и отбрасывается. На сегментные регистры, флаги и указатель инструкций PUSHA и POPA не влияют. Учтите, что инструкция PUSHA выполняется быстрее, чем восемь отдельных инструкций PUSH, но медленнее, чем три или четыре инс- трукции PUSH. Если вы хотите сохранить только несколько регист- ров, то лучше сделать это с помощью инструкции PUSH. Такое же за- мечание можно сделать относительно инструкций POPA и POP. Инструкции ENTER и LEAVE Инструкции ENTER и LEAVE используются для того, чтобы уста- новить и отменить границы стека, в которых передаваемые параметры и локальные динамические переменные доступны относительно BP. Эти инструкции особенно полезны при организации интерфейса Ассемблера с языками, ориентированными на работу со стеком (например, Си). Инструкция ENTER сохраняет регистр BP вызывающей программы, устанавливает его таким образом, чтобы он указывал на начало пе- редаваемых параметров (если они имеются) в новых границах стека, устанавливает, как это необходимо, SP для выделения пространства для локальных переменных, и даже копирует блок указателей на гра- ницы стека языка высокого уровня в новые границы стека (если это необходимо). Инструкция LEAVE имеет действие, обратное инструкции ENTER, и восстанавливает BP и SP в то состояние, которое они имели перед выполнением соответствующей инструкции ENTER. . - 3 - SampleFunction PROC enter 10,1 . . . leave ret SampleFunction ENDP Первый операнд инструкции ENTER представляет собой 16-бито- вое промежуточное значение, задающее число байтов, зарезервиро- ванных для локальных переменных в новой границе стека. Второй операнд инструкции ENTER - это 8-битовое промежуточное значение, задающее уровень вложенности функции, для которой должна созда- ваться новая граница стека. Этот операнд задает, сколько раз нуж- но скопировать указатели границы стека из границ стека вызывающе- го кода в новые границы стека. Инструкция BOUND Директиве BOUND проверяет, что 16-битовое значение находит- ся в диапазоне со знаком, заданном двумя смежными словами памяти, при этом верхняя граница записана по адресу, расположенному не- посредственно над нижней границей. Обе границы интерпретируются, как значения со знаком, поэтому можно задать максимальный диапа- зон от -32768 до +32767 включительно. Значения, совпадающие с нижней или верхней границей, рассматриваются, как принадлежащие заданному диапазону. Инструкция BOUND используется обычно для того, чтобы пре- дотвратить выход за границы массива. Если BX не находится в за- данном диапазоне, то генерируется прерывание INT 5. Первый операнд инструкции BOUND представляет собой 16-раз- рядный регистр общего назначения, содержащий проверяемое значе- ние. Второй операнд инструкции BOUND - это двойное слово, содер- жащее диапазон. Это двойное слово содержит 16-битовую нижнюю границу в младшем слове и 16-битовую верхнюю границу со знаком в качестве старшего слова. Инструкции INS и OUTS Инструкции INS и OUTS обеспечивают эффективную передачу данных между портами ввода-вывода и памятью. Инструкция INS перемещает один или более байтов (или слов) из порта ввода-вывода, на который указывает регистр DX, в массив в памяти, на который указывают ES:DI, увеличивая DI на 1 (или на 2) после того, как каждый байт (или слово) будет передан (или уменьшая SI, если установлен флаг направления). Инструкция OUTS перемещает один или более байтов (или слов)
- 4 - из массива в памяти, на который указывают DS:SI, в порт ввода-вы- вода, на который указывает регистр DX, увеличивая SI на 1 (или 2) после пересылки каждого байта (или слова) либо уменьшая регистр SI, если установлен флаг направления.
2Расширенные версии инструкций процессора 8086 В наборе инструкций процессора 80186 имеются следующие рас- ширенные версии инструкций процессора 8086: IMUL ROL SAR PUSH ROR SHL RCL SAL SHR RCR Занесение в стек промежуточных значений В то время как процессор 8086 может заносить в стек только регистровые операнды или операнды в памяти, процессор 80186 может заносить в него также и промежуточные значения: push 19 Сдвиги и циклические сдвиги c непосредственными значениями В то время как процессор 8086 может может только выполнять сдвиг или циклический сдвиг на 1 бит или на число битов, заданное в CL, процессор 80186 может выполнять сдвиг или циклический сдвиг на значение-константу: ror ax,3 shl dl,7 Умножение на непосредственное значение Процессор 8086 может умножать только 8- или 16-разрядный регистр или операнд в памяти на AL или AX, размещая результат в AX или DX:AX. В процессоре 80186 предусмотрены две новые формы умножения, которые используются, когда 16-разрядное умножение бу- дет размещаться в 16 битах. Одна из новых форм умножения перемножает 16-разрядный ре- гистр и 16-разрядное непосредственное значение, а результат сох- раняет обратно в 16-разрядном регистре. Например, следующая инс- трукция умножает DX на 4, а произведение записывает в DX: imul dx,4
- 5 - Первый операнд, который может представлять собой любой 16-разрядный регистр общего назначения, является одновременно ис- точником для одного из сомножителей и приемником для произведе- ния. Второй операнд, который должен представлять собой непосредс- твенное 16-битовое значение, - это другой сомножитель. Еще одна новая форма умножения перемножает 16-разрядный ре- гистр или операнд в памяти на 16-битовое непосредственное значе- ние, и сохраняет результат в заданном 16-битовом регистре. Нап- ример, следующая инструкция умножает DX на 600h и помещает произведение в CX: imul cx,dx,600h Аналогично, следующая инструкция умножает 16-разрядное зна- чение в [BX+SI+1] на 3 и помещает произведение в AX. imul ax,[bx+si+1],3 В данной форме инструкции IMUL первый операнд представляет собой приемник. Этот операнд может быть любым 16-разрядным общим регистром. Второй операнд, который может задаваться любым 16-раз- рядным общим регистром или ячейкой памяти, является источником одного из сомножителей. Третий операнд, который должен задаваться 16-битовым непосредственным значением, - это другой сомножитель. Первая из новых форм умножения - это в действительности подмножество второй новой формы. Например, следующая инструкция: imul si,10 это просто сокращенная форма инструкции: imul si,si,10 Для обеих новых форм инструкции IMUL соответствующий шест- надцатиричный код будет одинаковым. Тем не менее, удобно иметь возможность использовать более простую форму инструкции IMUL с двумя операндами, когда один и тот же регистр используется и как источник, и как приемник. При любой из новых форм умножения любая часть результата, которая не помещается в 16 битов, теряется. Если теряются знача- щие биты (предполагая, что результат должен представлять собой значение со знаком), то устанавливаются флаги переноса и перепол- нения. В новых формах операции умножения умножение значений со знаком и беззнаковых значений не различаются, поскольку результат имеет длину только 16 битов, и младшие 16 битов произведения (по- лученного в результате перемножения как значений со знаком, так и беззнаковых значений) всегда совпадают. Следовательно, для обоз- начения новых форм умножения можно использовать только инструкцию IMUL. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 15 2МИКРОПРОЦЕССОРЫ СЕРИИ iX86 ФИРМЫ INTEL ПРОЦЕССОР 80286 Процессор 80286 был первым процессором серии iAPx86, который позволил устранить ограничение памяти в 1 мегабайт и который под- держивал также защиту памяти и виртуальную память. Процессор 80286 поддерживает все инструкции процессора 80186 и кроме того позволяет использовать дополнительные инструкции, обеспечивающие управление памятью с развитой архитектурой. Процессор 80286 имеет два режима операций: реальный режим и защищенный режим. Работа процессора 80286 в реальном режиме прак- тически аналогична работе процессора 80286 (он обеспечивает тот же набор инструкций, что и процессор 80186). Средства управления памятью в процессоре 80286 доступны только в защищенном режиме. И только в этом режиме можно одновре- менно запустить на выполнение несколько не оказывающих влияние друг на друга задач. При этом можно адресоваться к памяти, объем которой превышает 1 мегабайт. Для работы в защищенном режиме в процессоре 80286 использу- ются следующие инструкции: CLTS LIDT LMSW LGDT LLDT LTR Эти инструкции процессора 80286 предназначены только для ис- пользования операционной системой. В прикладных программах нет необходимости (и возможности) использовать инструкции защищенного режима. В процессоре 80286 введены введены два дополнительных состо- яния в регистре флагов: бит вложенной задачи и поле ввода-вывода привилегированного уровня. Как и инструкции защищенного режима, оба бита предназначены только для использования в системном прог- раммном обеспечении, поэтому прикладные программисты не должны с ними работать. Процессор 80286 имеет также несколько новых ре- гистров, с которыми можно работать только с помощью инструкций защищенного режима. Это регистр задачи, регистр слова состояния машины и регистр таблицы глобальных дескрипторов. В Турбо Ассемблере разрешить ассемблирование с использовани- ем инструкций процессора 80286 (незащищенный режим) можно с по- мощью директивы .286. Поддержка инструкций защищенного режима процессора 80286 разрешается по директиве .286Р. . - 2 - ПРОЦЕССОР 80386 Процессор 80386 обеспечивает новые и расширенные инструкции, расширенный набор 32-разрядных регистров, линейные сегменты раз- мером до 4 гигабайт и возможность эмулировать одновременную рабо- ту нескольких процессоров 8086, быстрые сдвиги и циклические сдвиги, страничную память. Как и процессор 80286, процессор 80386 имеет два типа инс- трукций - привилегированные и непривилегированные. Непривилегиро- ванные инструкции может выполнять любая программа. Однако приви- легированные инструкции может выполнять только программа, выполняющаяся на текущем уровне привилегий 0 (наиболее привилеги- рованный уровень). Привилегированные инструкции процессора 80386 представляют собой расширение множества привилегированных инс- трукций процессора 80286 (инструкции защищенного режима) и также предназначены только для использования операционной системой. Поддержка непривилегированных инструкций процессора 80386 разрешается по директиве .386. Директива .386Р разрешает поддерж- ку привилегированных инструкций процессора 80386. Новые типы сегментов Возможность процессора 80386 поддерживать сегменты размером 64К (как в процессоре 80286) или линейные сегменты до 4 гигабайт потребовала двух новых типов сегментов - USE16 и USE32. При ссылке на сегмент размером 64К 16-разрядное смещение мо- жет храниться либо в базовом или индексном регистре (BX, SI, DI или BP), либо использоваться в качестве непосредственного смеще- ния. В этом режиме работает процессор 80286 (и 8086). В процессо- ре 80386 сегментам, имеющим максимальный размер 64К, дается тип использования USE16. Для ссылки на любую ячейку в 4 гигабайтовом сегменте нужно использовать 32-разрядное смещение записанное в любом из 32-раз- рядных регистров или указываемое непосредственно. Сегментам про- цессора 80386, которые имеют максимальную длину 4 гигабайта, да- ется тип USE32. Процессор 80386 позволяет использовать в качестве базового регистра или в индексного регистра все восемь 32-разряд- ных общих регистров (EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP). . - 3 - Новые регистры В процессоре 80386 общие регистры, регистр флагов и указа- тель инструкций процессора 8086 увеличены по размеру до 32 бит, кроме того добавлены два новых сегментных регистра. 31 16 15 0 --------------------T---------T---------¬-¬ ¦ ¦ AH ¦ AL ¦ ¦ EAX ¦###################+---------+---------+ ¦ ¦ ¦ AX ¦ ¦ L-------------------+-------------------- ¦ --------------------T---------T---------¬ ¦ ¦ ¦ BH ¦ BL ¦ ¦ EBX ¦###################+---------+---------+ ¦ ¦ ¦ BX ¦ ¦ L-------------------+-------------------- ¦ --------------------T---------T---------¬ ¦ ¦ ¦ CH ¦ CL ¦ ¦ ECX ¦###################+---------+---------+ ¦ ¦ ¦ CX ¦ ¦ L-------------------+-------------------- ¦ --------------------T---------T---------¬ ¦ ¦ ¦ DH ¦ DL ¦ ¦ EDX ¦###################+---------+---------+ ¦ Общие ¦ ¦ DX ¦ ¦ регистры L-------------------+-------------------- ¦ --------------------T-------------------¬ ¦ ESI ¦###################¦ SI ¦ ¦ L-------------------+-------------------- ¦ --------------------T-------------------¬ ¦ EDI ¦###################¦ DI ¦ ¦ L-------------------+-------------------- ¦ --------------------T-------------------¬ ¦ EBP ¦###################¦ BP ¦ ¦ L-------------------+-------------------- ¦ --------------------T-------------------¬ ¦ ESP ¦###################¦ SP ¦ ¦ L-------------------+---------------------- --------------------T-------------------¬ Указатель EIP ¦###################¦ IP ¦ инструкций L-------------------+-------------------- --------------------T-------------------¬ Регистр EFLAGS ¦###################¦ FLAGS ¦ флагов L-------------------+--------------------
- 4 - 15 0 --------------------¬-¬ CS ¦ ¦ ¦ L-------------------- ¦ --------------------¬ ¦ DS ¦ ¦ ¦ L-------------------- ¦ --------------------¬ ¦ DS ¦ ¦ ¦ L-------------------- ¦ --------------------¬ ¦ Cегментные ES ¦ ¦ ¦ регистры L-------------------- ¦ --------------------- | --------------------¬ ¦ FS ¦###################¦ ¦ L-------------------- ¦ --------------------¬ ¦ GS ¦###################¦ ¦ L-------------------- ¦ --------------------¬ ¦ SS ¦ ¦ ¦ L---------------------- 15 0 32-разрядные общие регистры 32-разрядные регистры общего назначения называются EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP. Младшие 16 битов этих регистров образуют множество 16-разрядных регистров процессора 8086, кото- рые нам уже хорошо знакомы. Например, младшие 16 битов регистра EAX представляют собой регистр AX. Аналогично, младшие 8 битов регистра EAX представляют собой регистр AL. В результате к раз- личным частям регистра EAX можно теперь обращаться с помощью че- тырех различных имен: 32-битового регистра EAX, 16-битового ре- гистра AX и 8-битовых регистров AH и AL. Тоже самое относится к регистрам EBX, ECX и EDX. При обращении к 32-разрядным регистрам есть имеется только один небольшой недостаток: невозможно непосредственно использо- вать старшие 16 битов 32-разрядного регистра, как 16-разрядный регистр. Если вы хотите использовать старшие 8 битов регистра AX, то можно просто сослаться на регистр AH, а если вы хотите исполь- зовать младшие 16 битов регистра ESI, как регистр, то можно прос- то ссылаться на SI. Однако нет эквивалентного способа ссылаться, скажем, на старшие 16 битов, например, регистра EAX. Чтобы получить доступ к старшим 16 битам 32-разрядного ре- гистра, можно просто выполнить циклический сдвиг 16 битов в любом направлении, обратиться с младшим 16 битам регистра и снова вы- полнить для регистра циклический сдвиг на 16.
- 5 -
32-разрядный регистр флагов Младшее слово регистра флагов процессора 80386 идентично ре- гистру флагов процессора 8086. Старшие 16 битов регистра флагов процессора 8086 содержит два новых флага. Один из этих новых фла- гов показывает, работает ли в данный момент процессор 80386 как виртуальный процессор 8086, а другой флаг предназначен для ис- пользования при разработке средств отладки. Прикладным программ- ным обеспечением эти флаги обычно не используются. 32-разрядный указатель инструкций Указатель инструкций процессора 80386 имеет размер 32 бита, что отличается от 16-битового указателя инструкций процессора 8086. Этот расширенный указатель инструкций поддерживает сегменты кода размером до 4 гигабайт. Новые сегментные регистры В процессоре 8086 к четырем сегментным регистрам, поддержи- ваемым в процессоре 8086 добавлены два новых сегментных регистра - FS и GS. Эти два новых регистра не предназначены для какой-то конкретной функции, и никакая инструкция или режим адресации по умолчанию их не использует. В итоге использование регистров FS и GS не является обязательным, но может оказаться удобным при обра- щении к данным в нескольких сегментах сразу. Регистры FS и GS используются также, как в несторовых инс- трукциях используется регистр ES: с помощью префикса переопреде- ления сегмента. Новые режимы адресации Процессор 80386 поддерживает все режимы адресации процессо- ров 8086, 80186 и 80286 и позволяет также использовать новые ре- жимы адресации. В качестве базового регистра можно использовать любой из восьми 32-разрядных общих регистров, а в качестве ин- дексного регистра - любой из 8 32-разрядных общих регистров, кро- ме регистра SP. При вычислении адреса памяти индексный регистр можно умно- жать на 2, 4 или 8. Для этого после индексного регистра просто помещается *2, *4 или *8 (это средство называется индексным масш- табированием). Например: mov ebx,8 mov eax,[DwordTable+ebx*4] . - 6 -
Индексное масштабирование может быть чрезвычайно полезно при доступе к элементам, как к массивам слов, двойных слов или чет- верных слов. Если для адресации к памяти используется единственный ре- гистр, то этот регистр всегда считается базовым. Если для адреса- ции к памяти используются два регистра, то самый левый регистр в квадратных скобках считается базовым регистром, а самый правый регистр - индексным. Если же, однако, с одним или двумя регистра- ми в квадратных скобках указывается масштабирование, то масштаби- руемый регистр всегда рассматривается, как индексный регистр. Вопрос о том, какой из регистров является базовым, важен, так как по умолчанию базовый регистр управляет сегментом, на ко- торый делается ссылка при данном обращении к памяти. Доступ к па- мяти, осуществляемый с помощью использования регистров EBP и ESP в качестве базовых, приводит к ссылке на сегмент, на который ука- зывает регистр SS, а доступ к памяти, при котором в качестве ба- зовых используются регистры EAX, EBX, ECX, EDX, ESI или EDI при- водит к ссылке на сегмент, на который указывает регистр DS. Новые режимы адресации процессора 80386 работают только с 32 -разрядными регистрами адресации к памяти. 16-разрядные регистры можно использовать только для ограниченного доступа к памяти, также, как в процессоре 8086. ВТОРОЙ СЕМЕСТР ЛЕКЦИЯ N 16 2МИКРОПРОЦЕССОРЫ СЕРИИ iX86 ФИРМЫ INTEL ПРОЦЕССОР 80386 2Новые инструкции В процессоре 80386 введены следующие новые инструкции: BSF BTR LFS MOVZX BSR BTS LGS SETxx BT CDQ LSS SHLD BTC CWDE MOVSX SHRD Проверка битов Инструкциями проверки битов процессора 80386 являются инс- трукции BT, BTC, BTR и BTS. Инструкция BT - это основная инструк- ция проверки битов, копирующая значение заданного типа во флаг переноса. Например, в следующем фрагменте программы переход на Bit3Is1 происходит только в том случае, если бит 3 регистра EAX отличен от 0: bt eax,3 jc Bit3Is1 . . Bit3Is1: . . Если EAX содержит значение 00000008h, то в этой программе произойдет переход на Bit3Is1. Если же EAX содержит значение 0FFFFFF7h, то переход выполнен не будет. Первый операнд инструк- ции BT представляет собой 16- или 32-разрядный общий регистр или ячейку памяти, содержащую проверяемый бит. Второй операнд - это номер проверяемого бита, заданный 8-битовым непосредственным зна- чением или содержимым 16- или 32-разрядного общего регистра. Если в качестве второго операнд используется регистр, то его размер должен совпадать с размером первого операнда. Номер проверяемого бита может задаваться как регистром, так и непосредственным зна- чением, а поле, в котором проверяется бит, может представлять со- бой как ячейку памяти, так и регистр. Инструкция BTC аналогична инструкции BT, только копируемое во флаг переноса значение представляет собой дополнение заданного бита. То есть флаг переноса устанавливается в значение 1, если
- 2 - заданный бит равен 0, и в значение 0, если заданный бит равен 1. Инструкция BTC устраняет необходимость использования инструкции CMC, когда требуется задать состояние флага переноса, обратное значению проверяемого бита. Инструкция BTR также аналогична инструкции BT, но после ко- пирования проверяемого бита во флаг переноса его значение стано- вится равным 0. Аналогично, инструкция BTS устанавливает проверя- емый бит, копируемый во флаг переноса, в значение 1. Эти инструкции проверки полезно использовать для анализа и установки состояния флага в одной операции (при этом подразумевается, что не может произойти прерывание между проверкой флага и установкой его в новое значение). Просмотр битов Для нахождения первого или последнего ненулевого бита опе- ранда размером в слово или двойное слово полезно использовать ин- струкции BSF и BSR. Инструкция BSF просматривает исходный опе- ранд, начиная с бита 0 (младший бит), определяя первый ненулевой бит. Если все биты операнда-источника являются нулевыми, то флаг нуля очищается. В противном случае флаг нуля устанавливается, а в целевой регистр (приемник) копируется номер первого найденного ненулевого бита. Второй операнд инструкции BFS - это 16- или 32-разрядный об- щий регистр или просматриваемая ячейка памяти, а первый операнд - это 16- или 32-разрядный общий регистр, в который будет записы- ваться номер первого ненулевого бита в просматриваемых данных. Оба операнда должны иметь одинаковый размер. Инструкция BSR аналогична инструкции BFS, но просмотр она начинает со старшего (наиболее значащего) бита операнда-источника к младшему биту. Перемещение данных с расширением по знаку или нулю Инструкции MOVZX и MOVSX позволяют вам копировать 8- или 16- разрядное значение в 16- или 32-разрядный общий регистр без необ- ходимости использования лишних инструкций для расширения значения до заданного размера. Инструкция MOVZX заполняет старшие биты приемника нулями, а инструкция MOVSX распространяет знак значения в соответствии с размером приемника. Обе инструкции аналогичны стандартной инструкции MOV. Преобразование данных типа DWORD или QWORD Для преобразования значений со знаком размером в байт в ре- гистре AL в значения со знаком размером в слово и значений со знаком в регистре AL размером в слово в значения со знаком разме-
- 3 - ром в двойное слово в процессоре 80386 предусмотрены соответс- твенно инструкции CBW и CWD. В процессор 80386 добавлены еще две инструкции преобразования, CWDE и CDQ, которые облегчают работу с 32-разрядными регистрами процессора 80386. Инструкция CWDE преобразует значение со знаком размером в слово, записанное в регистре AX, в значение со знаком размером в двойное слово, так же как инструкция CWD. Различие между этими двумя инструкциями состоит в том, что в то время как CWD помещает 32-разрядный результат в DX:AX, инструкция CWDE помещает помещает 32-разрядный результат в регистр EAX, который можно затем исполь- зовать в 32-разрядных инструкциях процессора 80386. Инструкция CWD преобразует значение со знаком размером в двойное слово в регистре EAX в значение со знаком (8-байтовое) в EDX:EAX. Сдвиг нескольких слов Инструкции процессора 80386 SHRD и SHLD, обеспечивают сдвиг на несколько битов двух регистров или регистра и ячейки памяти. Первый операнд инструкции SHLD - это 16- или 32-разрядный об- щий регистр или ячейка памяти, для которых нужно выполнить сдвиг. Второй операнд представляет собой 16- или 32-разрядный регистр, в который нужно выполнить сдвиг, а третий операнд - это число би- тов, на которые нужно осуществить сдвиг. Размеры первого и второ- го операнда должны совпадать. Третий операнд должен представлять собой непосредственное значение или регистр CL. В последнем слу- чае целевой операнд сдвигается на число битов, определяемый ре- гистров CL. Инструкция SHRD аналогична инструкции SHLD, однако она вы- полняет сдвиг из наиболее значащего (старшего) бита в направлении младших битов. Условная установка битов Общее применение для условных проверок и переходов состоит в установке значения ячейки памяти, чтобы отразить определенное состояние. Например, может оказаться желательным установить зна- чение двух переменных, что две переменные равны, указатель равен нулю, или в предыдущей операции был установлен флаг переноса. В процессоре 80386 для ускорения таких операций проверки и уста- новки предусмотрена мощная группа инструкций SET. Проверку в любом из знакомых вам условных переходах можно выполнить с помощью инструкции SET. Инструкция SETNC устанавлива- ет целевой операнд в значение 1, если флаг переноса равен 0, и сбрасывает значение целевого операнда в 0, если флаг переноса ра- вен 1. Инструкция SETS устанавливает приемник, если флаг знака равен 1, и сбрасывает его, если флаг знака равен 0 и т. д. Опе- ранд инструкции SET может быть 8-битовым общим регистром или
- 4 - 8-битовой переменной в памяти. 16- и 32-разрядные операнды не до- пускаются. Загрузка регистров SS, FS и GS Инструкция процессора 8086 LDS позволяет вам загружать как регистр DS, так и один из общих регистров из памяти в одной инс- трукции, позволяя, таким образом, очень эффективно устанавливать дальние указатели. Инструкция LES обеспечивает аналогичную воз- можность, но вместо DS загружает регистр ES. В процессоре 80386 для загрузки дальних указателей добавлены инструкции LSS, LFS и LGS, которые загружают дальние указатели на основе сегментных ре- гистров SS, FS и GS соответственно. 2Расширенные инструкции В процессор 80386 не только добавлены новые мощные инструк- ции по сравнению с набором инструкций процессором 8086/80186/80286, но также расширены имеющиеся инструкции. Это следующие инструкции: CMPS JC JNAE JNLE JPO OUTS IMUL JCXZ JNB JNO JS POPA INS JE JNBE JNP JZ POPF IRET JG JNC JNS LODS PUSHA JA JGE JNE JNZ LOOP PUSHF JAE JL JNG JO MOV SCAS JB JLE JNGE JP MOVS STOS JBE JNA JNL JPE Кроме того, в процессоре 80386 многие инструкции могут рабо- тать с 32-разрядными операндами, хотя их мнемоника явно не изме- нилась. Специальные версии инструкции MOV Процессор 80386 поддерживает специальные формы инструкции MOV, которые позволяют программе, работающей на уровень привилегий 0 (уровень с максимальными полномочиями) перемещать данные между 32-разрядными общими регистрами и специальными регистрами процес- сора 80386. Таким способом можно обращаться к следующим регистрам процессора 80386: CR0 DR0 DR3 TR6 CR2 DR1 DR6 TR7 CR3 DR2 DR7 32-разрядные версии инструкций процессора 8086
- 5 -
Многие инструкции процессора 8086 расширены таким образом, чтобы можно было использовать новые возможности адресации и новые операнды процессора 80386. Следующая инструкция выполняет 32-раз- рядное вычитание 32-битового регистра EBX из 32-битовой перемен- ной по адресу EBP+EAX*8+10h. При этом для ссылки на целевую ячей- ку памяти используются 32-разрядные регистры: sub DWORD PTR [ebp+eax*8+10h],ebx Новые версии инструкций LOOP и JCXZ Инструкции LOOP, LOOPE, LOOPNE и JCXZ работают обычно с 16-разрядным регистром CX. Процессор 8086 предусматривает как 16- разрядную, так и 32-разрядную версию этих инструкций. 32-разряд- ные версии вместо регистра CX могут работать с регистром ECX. Инструкции LOOP, LOOPE и LOOPNE используют в качестве счет- чика цикла регистр CX или ECX, в зависимости от типа сегмента (16 -битового или 32-битового). Если вы хотите обеспечить, чтобы в качестве регистра управления циклом всегда используется регистр CX (даже в 32-битовом сегменте), то используйте словную форму данных инструкций (LOOPW, LOOPWE или LOOPWNE). Аналогично, если нужно обеспечить использование в качестве управляющего циклом ре- гистра регистр ECX, используйте следующие формы инструкций: LOOPD, LOOPDE и LOOPDNE. Инструкция LOOPD уменьшает содержимое ECX и выполняет пере- ход по указанному смещению, если возвращаемое значение отлично от нуля. Инструкция LOOPDE уменьшает содержимое ECX и выполняет пере- ход на целевое смещение, пока флаг нуля равен 1, а ECX не равен 0. (LOOPDZ - это еще одна форма той же инструкции.) Аналогично, инструкция LOOPDNE уменьшает значение ECX и переходит по целевому смещению, пока флаг нуля равен 0, а ECX не равен 0. (LOOPDNZ - это эквивалентная инструкция.) Новые версии строковых инструкций В процессоре 80386 все строковые инструкции могут работать с байтами, словами или двойными словами. Версии этих инструкций, работающие с двойными словами, просто заканчиваются буквой D, а не буквами W или B. Это следующие инструкции: CMPSD MOVSD SCASD INSD OUTSD STOSD LODSD Каждая из этих инструкций работает сразу с 32 битами данных и увеличивает или уменьшает при каждом повторении соответствующий
- 6 - регистр-указатель на 4. Инструкция IRETD Инструкция IRETD аналогична инструкции IRET. Она извлекает из стека EIP, а затем CS, как двойное слово (отбрасывая старшее слово), после чего извлекает EFLAGS, как двойное слово. Инструкции PUSHFD и POPFD Инструкция PUSHFD заносит в стек полный 32-разрядный регистр флагов процессора 80386. Инструкция POPFD извлекает из стека пол- ный 32-разрядный регистр флагов. Инструкции же PUSHF и POPF заносят в стек и извлекают из не- го только младшие 16 битов регистра флагов. Инструкции PUSHAD и POPAD Инструкция PUSHAD заносит в стек восемь 32-разрядных общих регистров в следующем порядке: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI. Значение, заносимое для регистра ESP, соответствует значению регистра ESP в начале инструкции PUSHAD. Инструкция POPAD извле- кает из стека семь 32-разрядных общих регистров в следующем по- рядке: EDI, ESI, EBP, EBX, EDX, ECX и EAX. Все эти регистры можно сохранить в стеке с помощью инструкции PUSHAD, а затем восстановить с помощью инструкции POPAD. Регистр ESP инструкцией POPAD не восстанавливается. Вместо этого выполняется выполняется увеличение на 32, чтобы отбросить блок из восьми 32-разрядных об- щих регистров, ранее сохраненный в стеке. Сохраненное ранее зна- чение ESP игнорируется. Новые версии инструкции IMUL Дополнительно к формам инструкции IMUL, предусмотренным для процессоров 8086/80186/80286 в процессоре 80386 предусмотрена возможно самая удобная форма инструкции IMUL: любой общий регистр или ячейку памяти можно умножать на любой общий регистр, при этом результат снова сохраняется в одном из исходных регистров. Напри- мер, инструкция: imul ebx,[edi*4+4] умножает содержимое регистра EBX на значение размером в двойное слово, хранящееся по адресу памяти edi*4+4, а результат сохраняет снова в регистре EBX. Как можно заметить, первый операнд в этой форме инструкции IMUL представляет собой целевой регистр. Этот операнд может быть любым 16- или 32-разрядным общим регистром. Второй операнд может
- 7 - задаваться любым 16- или 32-разрядным общим регистром или ячейкой памяти. Размеры двух операндов должны совпадать. Если результат, рассматриваемый, как значение со знаком, слишком велик, чтобы его можно было разместить в приемнике, то устанавливаются флаги пере- носа и переполнения. Как можно ожидать, в процессоре 80386 имеются также расши- ренные формы инструкции IMUL для процессоров 8086/80186/80286, поддерживающие 32-разрядные операнды. Например, в следующем коде ECX умножается на 1000000000h, а результат сохраняется в регистре EBP: imul ebp,ecx,100000000h а следующая инструкция умножает ECX на EBX, записывая результат в EDX:EAX: imul ebx P E N T I U M processor Технический обзор Новое поколение процессоров фирмы INTEL Объединяя более, чем 3.1 миллион транзисторов на одной кремниевой подложке, 32-разрядный Pentium процессор характери- зуется высокой производительностью с тактовой частотой 60 и 66 МГц. Его суперскалярная архитектура использует усовершенство- ванные способы проектирования, которые позволяют выполнять бо- лее, чем одну команду за один период тактовой частоты, в ре- зультате чего Pentium в состоянии выполнять огромное количест- во PC-совместимого программного обеспечения быстрее, чем любой другой микропроцессор. Кроме существуюших наработок программ- ного обеспечения, высокопроизводительный арифметический блок с плавающей запятой Pentium проессора обеспечивает увеличение вычислительной мощности до необходимой для использования не- доступных ранее технических и научных приложений, первоначаль- но предназначенных для платформ рабочих станций. Также, как локальные и глобальные сети продолжают вытеснять устаревшие иерархические сети, управляемые большими ЭВМ, преимущества мультипроцессорности и гибкость операционной системы Pentium процессора - идеал для Хост-компьютера для современных прило- жений клиент-серверов, применяемых в промышленности. Поскольку Pentium процессор способен достигать уровня производительности равного или более высокого, чем современные рабочие станции высокого уровня, он обладает преимуществми, которых лишены обычные рабочие станции: полная совместимость с более, чем 50 000 программных приложений со стоимостью милли- арды долларов, которые были написаны под ахитектуру фирмы INTEL. В дополнение, Pentium процессор позволяет использовать все основные операционные системы, которые доступны современ- ным настольным персональным компьютерам, рабочим станциям и серверам, включая UNIX, Windows-NT, OS/2, Solaris и NEXTstep.
Pentium процессор. Технические нововведения. Многочисленные нововведения - характерная особенность Pentium процессора в виде уникального сочетания высокой произ- водительности, совместимости, интеграции данных и наращивае- мости. Это включает: - Суперскалярную архитектуру; - Раздельное кэширование программного кода и данных; - Блок предсказания правильного адреса перехода; - Высокопроизводительный блок вычислений с плавающей за- пятой; - Расширенную 64-битовую шину данных; - Поддержку многопроцессорного режима работы; - Средства задания размера страницы памяти; - Средства обнаружения ошибок и функциональной избыточ- ности; - Управление производительностью; - Наращиваемость с помощью Intel OverDrive процессора.
Архитектура Pentium процессора -------------------------------------------------------------¬ ¦ Intel Pentium Processor ¦ +------------------------------------------------------------+ ¦ 2------------¬ 8------------¬ ¦ ¦ 64-bits ¦ Code ¦ ¦ Branch ¦ ¦ ¦ ------+ Cache +------+ Prediction ¦ ¦ ¦ ¦ L----T-------- L------T------ ¦ ¦ ¦ 256-bits¦ ------------------ ¦ ¦ ¦ 3----+----+--¬ 9------------¬ ¦ ¦ ¦ ¦ Prefetch ¦ ¦ ¦ ¦ ¦ ¦ ¦ Buffers ¦ ¦ ¦ ¦ ¦ ¦ L--T------T--- ¦ ¦ ¦ ¦ 1------------¬ ¦ 4------+--¬5--+------¬ ¦ Pipelined ¦ ¦ ¦ ¦ 64-bit ¦ ¦ ¦ Integer ¦¦ Integer ¦ ¦ Floating- ¦ ¦ ¦-+ Bus +---+ ¦ ALU ¦¦ ALU ¦ ¦ Point Unit ¦ ¦ ¦ ¦ Interface ¦ ¦ L------T---L--T------- ¦ ¦ ¦ ¦ L------------- ¦ 6--+------+--¬ ---+ ¦ ¦ ¦ L-----+ Register ¦ ¦ ¦ ¦ ¦ ¦ 64-bits ¦ Set ¦ ¦ +------------+ ¦ ¦ L---T-----T--- ¦ ¦ Multiply ¦ ¦ ¦ 32-bits+-----+------- +------------+ ¦ ¦ 7---+-----+--¬64-bit¦ Add ¦ ¦ ¦ ¦ Data ¦ +------------+ ¦ ¦ ¦ Cache ¦ ¦ Divide ¦ ¦ ¦ L------------- L------------- ¦ L------------------------------------------------------------- 1 - 64-битовый шинный интерфейс; 2 - Средства кэширования программного кода; 3 - Буферы выборки с упреждением; 4 - 32-битовый целочисленный блок АЛУ; 5 - 32-битовый целочисленный блок АЛУ; 6 - Набор регистров; 7 - Средства кэширования данных; 8 - Блок предсказания правильного адреса перехода; 9 - Блок конвеерных вычислений с плавающей запятой.
Суперскалярная архитектура. Суперскалярная архитектура Pentium процессора представля- ет собой совместимую только с INTEL двухконвеерную индустри- альную архитектуру, позволяющую процессору достигать новых уровней производительности посредством выполнения более, чем одной команды за один период тактовой частоты. Термин "су- перскалярная" обозначает микропроцессорную архитектуру, кото- рая содержит более одного вычислительного блока. Эти вычисли- тельные блоки, или конвееры, являются узлами, где происходят все основные процессы обработки данных и команд. Появление суперскалярной архитектуры Pentium процессора представляет собой естественное развитие предыдущего семейства процессоров с 32-битовой архитектурой фирмы INTEL. Например, процессор Intel486 способен выполнять несколько своих команд за один период тактовой частоты, однако предыдущие семейства процессоров фирмы INTEL требовали множество циклов тактовой частоты для выполнения одной команды. Возможность выполнять множество команд за один период тактовой частоты существует благодаря тому, что Pentium про- цессор имеет два конвеера, которые могут выполнять две инструкции одновременно. Так же, как и Intel486 с одним конве- ером, двойной конвеер Pentium процессора выполняет простую ко- манду за пять этапов: предварительная подготовка, первое деко- дирование ( декодирование команды ), второе декодирование ( генерация адреса ), выполнение и обратная выгрузка. Это позво- ляет нескольким командам находиться в различных стадиях выпол- нения, увеличивя тем самым вычислительную производительность. Каждый конвеер имеет свое арифметическо-логическое устройство (ALU), совокупность устройств генерации адреса и интерфейс кэ- ширования данных. Так же как и процессор Intel486, Pentium процессор использует аппаратное выполнение команд, заменяющее множество микрокоманд, используемых в предыдуших семействах микропроцессоров. Эти инструкции включают загрузки, запомина- ния и простые операции АЛУ, которые могут выполняться аппарат- ными средствами процессора, без использования микрокода. Это повышает производительность без затрагивания совместимости. В случае выполнения более сложных команд, для дополнительного ускорения производительности выполнения расширенного микрокода Pentium процессора для выполнения команд используются оба кон- веера суперскалярной архитектуры. В результате этих архитектурных нововведений, по сравне- нию с предыдущими микропроцессорами, значительно большее коли- чество команд может быть выполнено за одно и то же время.
Раздельное кэширование программного кода и данных. Другое важнейшее революционное усовершенствование, реали- зованное в Pentium процессоре, это введение раздельного кэши- рования. Кэширование увеличивает производительность посредст- вом активизации места временного хранения для часто используе- мого программного кода и данных, получаемых из быстрой памяти, заменяя по возможности обращение ко внешней системной памяти для некоторых команд. Процессор Intel486, например, содержит один 8-KB блок встроенной кэш-памяти, используемой одновремен- но для кэширования программного кода и данных. Проектировщики фирмы INTEL обошли это ограничение исполь- зованием дополнительного контура, выполненного на 3.1 миллио- нах транзисторов Pentium процессора ( для сравнения, Intel486 содержит 1.2 миллиона транзисторов ) создающих раздельное внутреннее кэширование программного кода и данных. Это улучша- ет производительность посредством исключения конфликтов на ши- не и делает двойное кэширование доступным чаще, чем это было возможно ранее. Например, во время фазы предварительной подго- товки, используется код команды, полученный из кэша команд. В случае наличия одного блока кэш-памяти, возможен конфликт меж- ду процессом предварительной подготовки команды и доступом к данным. Выполнение раздельного кэширования для команд и данных исключает такие конфликты, давая возможность обеим командам выполняться одновременно. Кэш-память программного кода и дан- ных Pentium процессора содержит по 8 KB информации каждая, и каждая организована как набор двухканального ассоциативного кэша - предназначенная для записи только предварительно просмотренного специфицированного 32-байтного сегмента, причем быстрее, чем внешний кэш. Все эти особенности расширения про- изводительности потребовали использования 64-битовой внутрен- ней шины данных, которая обеспечивает возможность двойного кэ- ширования и суперскалярной конвеерной обработки одновременно с загрузкой следующих данных. Кэш данных имеет два интерфейса, по одному для каждого из конвееров, что позволяет ему обеспе- чивать данными две одельные инструкции в течение одного машин- ного цикла. После того, как данные достаются из кэша, они за- писываются в главную память в режиме обратной записи. Такая техника кэширования дает лучшую производительность, чем простое кэширование с непосредственной записью, при котором процессор записывает данные одновременно в кэш и основную па- мять. Тем не менне, Pentium процессор способен динамически конфигурироваться для поддержки кэширования с непосредственной записью. Таким образом, кэширование данных использует два различ- ных великолепных решения: кэш с обратной записью и алгоритм, названный MESI ( модификация, исключение, распределение, осво- бождение) протокол. Кэш с обратной записью позволяет записы- вать в кэш без обращения к основной памяти в отличие от используемого до этого непосредственного простого кэширования. Эти решения увеличивают производитльность посредством исполь- зования преобразованной шины и предупредительного исключения самого узкого места в системе. В свою очередь MESI-протокол позволяет данным в кэш-памяти и внешней памяти совпадать - ве- ликолепное решение в усовершенствованных мультипроцессорных системах, где различные процессоры могут использовать для ра- боты одни и те же данные. Рекомендуемый объем общей кэш-памяти для настольных систем, основанных на Pentium процессоре, равен 128-256 K, а для серверов - 256 K и выше.
Блок предсказания правильного адреса перехода. Блок предсказания правильного адреса перехода - это сле- дующее великолепное решение для вычисленй, увеличивающее про- изводительность посредством полного заполнения конвееров ко- мандами, основанное на предварительном определении правильного набора команд, которые должны быть выполнены. Pentium про- цессор - это первый и единственный PC-совместимый процессор, использующий блок предсказания, который до этого традиционно был связан с вычислительными платформами больших ЭВМ. Для лучшего понимания этой концепции, рассмотрим типичное программное приложение. После выполнения каждого программного цикла, программа выполняет соответствующую проверку для опре- деления, необходимо ли возвратиться в начало цикла или выйти и продолжить выполнение следующего шага. Эти два решения, или пути, называют предсказанием адреса перехода. Блок предсказа- ния правильного адреса перехода прогнозирует, какая ветвь программы будет затребована, основываясь на допущении, что предыдущая ветвь, которая была пройдена, будет использоваться снова. Pentium процессор выполняет предсказание правильного адреса перехода, используя специальный буфер предсказания пе- рехода (BTB). В отличие от альтернативной архитектуры, это программно-шаблонное нововведение дает возможность для пере- компилирования программного кода, увеличивая при этом скорость и производительность существующего прикладного программного обеспечения. Если команда управляет ветвлением программы, бу- фер BTB запоминает команду и адрес, на который необходимо пе- рейти, и предсказывает, какая ветвь команд в следующий момент будет использоваться. Когда буфер содержит правильное предска- зание, переход выполняется без задержки.
Высокопроизводительный блок вычислений с плавающей запятой. Наростающая волна 32-разрядных программных приложений включает много интенсивно вычисляющих, графически ориентиро- программ, которые занимают много процессорных ресурсов на вы- полнение операций с плавающей запятой, обеспечивающих матема- тические вычисления. Поскольку требования к персональным компьютерам со стороны программного обеспечения по вычислениям с плавающей запятой постоянно возрастают, удовлетворить эти потребности могут усовершенствования в микропроцессорной тех- нологии. Процессор Intel486 DX, например, был первым микропро- цессором, интегрированным на одной подложке с математическим сопроцессором. Предыдущие семейства процессоров фирмы INTEL, при необходимости использования вычислений с плавающей запя- той, использовали внешний математический сопроцессор. Pentium процессор позволяет выполнять математические вы- числения на более высоком уровне благодаря использованию усо- вершенствованного встроенного блока вычислений с плавающей за- пятой, который включает восьмитактовый конвеер и аппаратно ре- ализованные основные математические функции. Четырехтактовые конвеерные команды вычислений с плавающей запятой дополняют четырехтактовую целочисленную конвееризацмю. Большая часть ко- манд вычислений с плавающей запятой могут выполняться в одном целочисленном конвеере, после чего подаются в конвеер вычисле- ний с плавающей запятой. Обычные функции вычислений с плаваю- щей запятой, такие как сложение, умножение и деление, реализо- ваны аппаратно с целью ускорения вычислений. В результате этих инноваций, Pentium процессор выполняет команды вычислений с плавающей запятой в пять раз быстрее, чем 33-МГц Intel486 DX, оптимизируя их для высокоскоростных численных вычислений, являющихся неотъемлемой частью таких усовершенствованных видеоприложений, как CAD и 3D-графика. Pentium процессор на тактовой частоте 66 МГц работает как "числодробилка" с рейтингом 64.5 по тесту SPECint92, практи- чески не уступая RISC-процессору Alpha компании Digital, но с тактовой частотой вдвое более высокой. Общая производительность Pentium процессора превосходит в 6 раз 25 МГц Intel486 SX и в 2.6 раз - 66 МГц Intel486 DX2. Индекс по рейтингу iCOMP для 66 МГц Pentium процессора, кото- рый выполняет 112 миллионов операций в секунду, составляет 567. Индекс по iCOMP ( Intel COmparative Microprocessor Peformance ) выполняет относительное сравнение производитель- ности 32-битовых процессоров фирмы INTEL.
Расширенная 64-битовая шина данных. Pentium процессор снаружи представляет собой 32-битовое устройство. Внешняя шина данных к памяти является 64-битовой, удваивая количество данных, передаваемых в течение одного шин- ного цикла. Pentium процессор поддерживает несколько типов шинных циклов, включая пакетный режим, в течение которого про- исходит порция данных из 256 бит в кэш данных и в течение од- ного шинного цикла. Шина данных является главной магистралью, которая переда- ет информацию между процессором и подсистемой памяти. Благода- ря этой 64-битовой шине данных, Pentium процессор существенно повышает скорость передачи по сравнению с процессором Intel486 DX - 528 MB/сек для 66 МГц, по сравнению со 160 MB/сек для 50 МГц процессора Intel486 DX. Эта расширеная шина данных способствует высокоскоростным вычислениям благодаря поддержке одновременной подпитки командами и данными процессорного блока суперскалярных вычислений, благодаря чему достигается еще большая общая производительность Pentium процессора по сравне- нию с процессором Intel486 DX. В общем, имея более широкую шину данных, Pentium про- цессор обеспечивает конвееризацию шинных циклов, что способствует увеличению пропускной способности шины. Конвеери- зация шинных циклов позволяет второму циклу стартовать ранше завершения выполнения первого цикла. Это дает подсистеме памя- ти больше времени для декодирования адреса, что позволяет использовать более медленные и менее дорогостоящие компоненты памяти, уменьшая в результате общую стоимость системы. Ускоре- ние процессов чтения и записи, параллелилизм адреса и данных, а также декодирование в течение одного цикла - все вместе поз- воляет улучшить пропускную способность и повышает возможности системы.
Мультипроцессорность. -------------------------------------------------------------¬ ¦ Внутреннее определнние ошибок и тестирование ¦ ¦ с помощью функциональной избыточности ¦ +---------------------------T----T---------------------------+ ¦ Master ¦ ¦ Checker ¦ ¦ ---------¬ -----¬¦ ¦ ---------¬ -----¬¦ ¦ --+ +---+ ¦¦ ¦ --+ +---+ ¦¦ ¦ ¦ L---T----- L--T--¦ ¦ ¦ L---T----- L--T--¦ ¦ ¦ ¦ ---------- ¦ ¦ ¦ ¦ ---------- ¦ ¦ ¦ ----+--+-¬ -----¬¦ ¦ ¦ ----+--+-¬ -----¬¦ ¦----¬ ¦ ¦ +---+ ¦¦ ¦----¬ ¦ ¦ +---+ ¦¦ ¦+ +-+ L-T----T-- ¦ ¦¦ -T-¦+ +-+ L-T----T-- ¦ ¦¦ ¦L---- ¦ --+-¬--+-¬ ¦ ¦¦ ¦ ¦L---- ¦ --+-¬--+-¬ ¦ ¦¦ ¦ ¦ ¦ ¦¦ ¦ --+ ¦¦ ¦ ¦ ¦ ¦ ¦¦ ¦ --+ ¦¦ ¦ ¦ L-T--L-T-- ¦ ¦ ¦¦ ¦ ¦ ¦ L-T--L-T-- ¦ ¦ ¦¦ ¦ ¦ --+----+-¬ ¦ +----+¦ ¦ ¦ ¦ --+----+-¬ ¦ +----+¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦ L-T----T-- ¦ +----+¦ ¦ ¦ ¦ L-T----T-- ¦ +----+¦ ¦ ¦ +----+---- ¦ ¦¦ ¦ ¦ ¦ +----+---- ¦ ¦¦ ¦ ¦ --+----+-¬ +----+¦ ¦ ¦ ¦ --+----+-¬ +----+¦ ¦ L-+ ¦ ¦ ¦¦ ¦ ¦ L-+ ¦ ¦ ¦¦ ¦ L--------- L-----¦ ¦ ¦ L--------- L-----¦ +-------------T-------------- ¦ L------T------T-------------+ ¦ ¦ ¦ Check ¦ ¦ ¦ ¦ +----------------+--------- ¦ ¦ ¦ Outputs Inputs IERR# ¦ L------------------------------------------------------------- Pentium процессор - это идеал для наростающей волны муль- типроцессорных систем, а также высочайший уровень производи- тельности и вычислительной мощности в области современных вы- числительных средств. Мультипроцессорные приложения, которые соединяют два или более Pentium процессоров - хорошо обслужи- ваются посредством усовершенствованной архитектуры кристаллов, раздельным встроенным кэшированием программного кода и данных, а также наборами микросхем для управления внешней кэш-памятью и утонченными средствами контроля целостности данных. Как обсуждалось ранее, Pentium процессор поддерживает упорядоченный кэш с его MESI протоколом. Когда один процессор получает доступ к данным, которые кэшируются в другом про- цессоре, он имеет возможность приема правильных данных. И если данные модифицировались, все процессоры получают возможность доступа к приему данных в модифицированном виде. Новейший Pentium процессор фирмы INTEL также определяет, какие команды распознаются системой в соответствии с ипользуемым способом программирования. Это строго определенно подсказывает, каким образом программному обеспечению, разработанному для однопро- цессорной системы, корректно работать в многопроцессорном ок- ружении.
Средства разделения памяти на страницы. Pentium процессор предлагает опции поддержки любой из традиционных размеров страниц памяти - 4 KB или более широкие, 4 MB страницы. Эта опция позволяет производить вычисление частоты свопинга страниц в комплексных графических приложени- ях, буферах фреймов, а также ядер операционных систем, где увеличенный размер страницы сейчас позволяет пользователям перепланировать шире первоначально громоздкие объекты. Увели- чение страниц дает результат в виде повышения производитель- ности, причем все это отражается на прикладном программном обеспечении.
Определение ошибок и функциональная избыточность. Хорошая защита данных и обеспечение их целостности посредством внутренних средств становится крайне важным в при- ложениях, критичным к потерям данных благодаря распространению современного окружения клиент-серверов. Pentium процессор со- держит два усовершенствования, традиционно присущих проектиро- ванию класса больших ЭВМ - внутреннее определение ошибок и контроль за счет функциональной избыточности ( FCR ) - это по- могает обеспечить целостность данных развивающихся сегодня систем, базирующихся на настольных компьютерах. Внутреннее определение ошибок дополняет битом четности внутренний код и кэширование данных, сдвиговую ассоциативную таблицу страниц, микрокод, а также целевой буфер перехода, по- могая определять ошибки таким образом, что это остается неза- метным и для пользователя, и для системы. В то же время конт- роль с помощью функциональной избыточности оптимизирован для приложений, критических к потерям данных, где Pentium про- цессор может работать в конфигурации основной/контролирующий. Если между двумя процессорами обнаруживаются разногласия, система извещается об ошибке. В результате происходит обнару- жение более, чем 99% ошибок. Кроме того, на подложке процессора расположено устройство встроенного тестирования. Самотестирование охватывает более 70% узлов Pentium процессора, не требует выполнения сброса кристалла и представляет собой процедуру, обычно используемую при диагностике систем. Другими встроенными решениями является реализация стандарта IEEE 1149.1, позволяющая тестировать внешние соединения проессора и отладочный режим, дающий воз- можность программному обеспечению просматривать регистры и состояние процессора.
Управление производительностью. Управление производительностью - особенность Pentium про- цессора, что позволяет разработчикам систем и прикладных расширений оптимизировать свои аппаратные и программные средства посредством определения потенциально узкого места для программного кода. а работчики могут наблюдать и считать такты для внутренних событий процессора, таких, как производитель- ность чтения и записи данных, кэширование совпадений и выпаде- ний, прерываний и использования шины. Это позволяет им изме- рять эффективность, которую имеет код в двойной архитектуре Pentium процессора и в своих продуктах и выполнять тонкую настройку своих приложений или систем для достижения оптималь- ной производительности. Выгода для конечных пользователей - это более высокие достоинства и высшая производительность, и все это благодаря хорошему взаимодействию с Pentium процессо- ром, пользовательской системой и прикладным программным обеспечением. Давая возможность разработчикам проектировать системы с управлением энергопотреблением, защитой и другими свойствами, Pentium процессор поддерживаем режим управления системой (SMM), подобный режиму архитектуры Intel SL. ВТОРОЙ СЕМЕСТР СЕМИНАР N 1-2 ПРИНЦИПЫ ОРГАНИЗАЦИИ СИСТЕМ ОБРАБОТКИ ПРЕРЫВАНИЯ ПРОГРАММ Во время выполнения программы внутри ЭВМ и во внешней среде могут возникать события, требующие немедленной реакции на них со стороны машины. Реакция состоит в том, что машина прерывает обработку текущей программы и переходит к выполнению некоторой другой программы, специально предназначенной для данного события. По завершении этой программы ЭВМ возвращается к выполнению прерван- ной программы. Такой процесс называется прерыванием программы. Принципиаль- но важным является то, что моменты возникновения событий, требую- щих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании. Каждое событие, требующее прерывания, сопровождается сигна- лом, оповещающим об этом событии ЭВМ, который называется запросом прерывания. Программу, затребованную запросом прерывания, называ- ют прерывающей программой, а программу, выполнявшуюся до появле- ния запроса - прерываемой программой. Запросы на прерывание могут возникать как внутри самой ЭВМ, так и во внешней среде. Внутренние запросы на прерывание возникают при сбоях в аппа- ратуре ЭВМ, переполнении разрядной сетки, попытке деления на 0, нарушении защиты памяти, при затребовании или завершении операции ввода-вывода периферийным устройством. Внешние запросы могут поступать от датчиков технологического процесса и других ЭВМ. В сущности запросы прерывания поступают от нескольких парал- лельно развивающихся во времени процессов, требующих в произволь- ные моменты времени обслуживания со стороны процессора. К этим процессам относится выполнение основной программы, контроль пра- вильности работы ЭВМ, операции ввода-вывода и т.п. Система прерываний позволяет значительно эффективнее исполь- зовать процессор при наличии нескольких протекающих параллельно во времени процессов. Для эффективной реализации системы прерываний ЭВМ снабжается соответствующими аппаратными и программными средствами, совокуп- ность которых называется контроллером прерываний. Основными функциями системы прерываний являются: - запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе; - восстановление состояния прерванной программы и возврат к ней. . - 2 - При наличии нескольких источников запросов прерываний должен быть установлен определенный порядок в обслуживании поступающих запросов, т.е. должны быть установлены приоритетные соотношения между запросами. Приоритетные соотношения определяют, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и уста- навливают, имеет или не имеет право данный запрос прерывать ту или иную программу. Прерывающая программа, как правило, состоит из трех частей: 1) подготовительной, обеспечивающей сохранение состояния прер- ванной программы; 2) основной, выполняющей затребованную запросом работу; 3) завершающей, обеспечивающей продолжение работы прерванной программы. Характеристики системы прерывания: 1) Общее количество типов запросов прерываний (число входов в систему прерывания). 2) Время реакции - время между появлением запроса прерывания и началом выполнения прерывающей программы. Время реакции на запрос прерывания зависит от того, сколько программ со старшим приоритетом ждет обслуживания. Поэтому в документации обычно указывают время реакции на запрос с наивысшим приоритетом. 3) Затраты времени на переключение программ, которые равны сум- марному расходу времени на запоминание и восстановление состояния программы. 4) Глубина прерывания - это максимальное число программ, кото- рые могут прерывать друг друга. Если после перехода к прерывающей программе и вплоть до ее окончания прием других запросов запреща- ется, то говорят, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Глубина прерывания обычно совпадает с числом уровней приоритета в системе прерываний. Системы с большим значением глу- бины прерывания обеспечивают более быструю реакцию на срочные запросы. Насыщение системы прерываний Если запрос на прерывание окажется необслуженным к моменту прихода нового запроса от того же источника, то возникает так на- зываемое насыщение системы прерываний. В этом случае предыдущий запрос прерывания от данного источника будет машиной утрачен, что недопустимо. Быстродействие ЭВМ, характеристики системы прерыва- ний, число источников прерывания и частоты возникновения запросов должны быть согласованы таким образом, чтобы насыщение было не- возможным. . - 3 - Допустимые моменты прерывания программ Обычно прерывание допускается после завершения выполнения текущей команды. В этом случае время реакции определяется в основном временем выполнения одной команды. Это время реакции может оказаться недопустимо большим для ЭВМ, работающих в реальном масштабе времени. В таких машинах часто допускается прерывание после любого такта выполнения коман- ды. Однако при этом возрастает количество информации, подлежащей запоминанию и восстановлению при переключении программ, так как в этом случае необходимо сохранять состояния счетчика тактов, регистра кода операции и некоторых других в момент прерывания. Имеются ситуации, в которых желательно немедленное прерыва- ние. Например, если аппаратура контроля обнаружила ошибку, то целесообразно сразу прервать операцию, пока ошибка не оказала влияние на следующие такты работы машины.
Число классов (уровней) прерываний В ЭВМ число различных запросов прерывания может достигать нескольких сотен. В таких случаях запросы обычно разделяют на от- дельные классы или уровни. Совокупность запросов, инициирующих одну и ту же прерывающую программу, образует класс или уровень прерывания. Запросы от источников прерываний ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ V V V V V V V V V V V V V V V V V V V V V V V V V --T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-¬ ¦0¦0¦1¦0¦0¦.¦.¦.¦.¦.¦0¦0¦0¦0¦0¦.¦.¦.¦.¦.¦0¦0¦0¦1¦0¦ РгЗП LT+T+T+T+T+-+-+-+-+-+T+T+T+T+T+-+-+-+-+-+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ -+-+-+-+-+¬ -+-+-+-+-+¬ -+-+-+-+-+¬ ¦1 ¦ ¦1 ¦ ¦1 ¦ L----T----- L----T----- L----T----- ¦ ¦ ¦ЗПКk ----¬ ¦ ¦ЗПКi +---------+1 ¦ ОСП ¦ЗПК1 +-------------------+---------+ +----- +-------------------+-------------------+---------+ ¦ V V V L---- ---------------------------------------------------¬ ¦ Схема распознавания класса прерывания ¦ L--------------------------------------------------- Запросы от всех источников прерывания поступают на регистр запросов прерывания РгЗП, устанавливая соответствующие его разря- ды в состояние 1, указывающее на наличие запроса прерывания от
- 4 - определенного источника. Запросы классов прерывания ЗПК1-ЗПКk формируются элементами ИЛИ, объединяющими разряды РгЗП, относящи- еся к соответствующим классам. Еще одна схема ИЛИ формирует общий сигнал прерывания ОСП, поступающий в устройство управления про- цессора. Информация о действительной причине прерывания, породившей запрос данного класса, содержится в коде прерывания, который отражает состояние разрядов РгЗП, относящихся к данному классу прерывания. После принятия запроса прерывания на исполнение и передачи управления прерывающей программе соответствующий триггер РгЗП сбрасывается. Объединение запросов в классы прерывания поз- воляет уменьшить объем аппаратуры, но связано с замедлением рабо- ты системы прерывания. Приоритетное обслуживание запросов прерывания Вектором прерывания называют вектор начального состояния прерывающей программы. Вектор прерывания содержит всю необходимую информацию для перехода к прерывающей программе, в том числе ее начальный адрес. Каждому уровню прерывания, а в микро-ЭВМ - каж- дому запросу, соответствует свой вектор прерывания. Векторы прерывания обычно находятся в специально выделенных фиксированных ячейках памяти. Процедура организации перехода к прерывающей программе выде- ляет из всех выставленных запросов тот, который имеет наибольший приоритет, выполняет передачу текущего состояния прерываемой программы из регистров процессора в стек, загружает в регистры процессора вектор прерывания и передает управление прерывающей программе. В простейшем случае вектор прерывания состоит лишь из начального адреса прерывающей программы. Различают абсолютный и относительный приоритеты. Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы. Зап- рос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы. Если наиболее приоритетный из выставленных запросов прерыва- ния не превосходит по уровню приоритета выполняемую процессором программу, то запрос прерывания игнорируется или его обслуживание откладывается до завершения выполнения текущей программы. Простейший способ установления приоритетных соотношений меж- ду запросами состоит в том, что приоритет определяется порядком присоединения линий сигналов запросов ко входам системы прерыва- ния. При появлении нескольких запросов прерывания первым воспри- нимается запрос, поступивший на вход с меньшим номером. В этом случае приоритет является жестко фиксированным. . - 5 - Процедура прерывания с опросом источников прерывания В системе с фиксированными приоритетами каждому источнику запросов соответствует отдельный разряд в регистре запросов прерывания. При наличии запроса или нескольких запросов формируется общий сигнал прерывания ОСП, инициирующий выполняемую специальной программой или аппаратурой процедуру опроса регистра прерывания или просто линий сигналов прерывания для установленного источни- ка, выставившего запрос с наибольшим приоритетом. Программный опрос источников прерываний занимает сравнитель- но много времени. Для ускорения опроса его выполняют аппаратными средствами. Циклический опрос источников прерываний --------------¬ ¦ Счетчик ¦<---------------------------------¬ ¦ ¦<---------------¬ ¦ L-T------T--T-- Сброс ¦ ¦ Код номера n¦ ... 2¦ 1¦ ¦ ¦ запроса ¦ ¦ +------------------+-----------------+----------> ¦ +--+------------------+-----------------+----------> +------+--+------------------+-----------------+----------> --+------+--+-¬ ¦ ¦ ¦ Дешифратор ¦ ¦ ¦ L-T------T--T-- ¦ От ГТИ ---¬ ¦ k¦ ... 2¦ 1¦ ---¬ ¦ ---------+& +-- 1 ¦ ¦ L--+& +--¬ ¦ --+ ¦ ---+------+-----+ ¦ ¦ ¦ ¦ L--- ¦ ¦ L--- ¦ ----¬ ¦ ¦ ¦ ¦ ---¬ L--+1 ¦ ¦ ¦ Общий сигнал 2 ¦ L-----+& +-----+ ¦ ¦ --T---¬ ¦ прерывания ---+------------+ ¦ . ¦ +--+--+S¦ T +-+------------------> ¦ L--- . ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ . ---+ ¦ +--+R¦ +-- ¦ . ¦ L---- ¦ L-+---- ¦ ---¬ ¦ ¦ Сброс счетчика k L------------+& +--- L------------------------------ ----------------+ ¦ Запросы L--- прерывания Опрос k линий источников прерывания производится циклически с помощью n-разрядного счетчика, на который с некоторой частотой поступают импульсы от тактового генератора. Поиск приоритетного запроса прерывания начинается со сброса счетчика и триггера T в нулевое состояние; при этом импульсы генератора начинают посту-
- 6 - пать на вход счетчика. При помощи дешифратора и элементов И в каждом такте поиска проверяется наличие запроса прерывания, номер которого совпадает с кодом счетчика. Если на данном входе нет запроса, то к счетчику прибавляется 1 и проверяется следующий вход. Если имеется запрос, триггер T переходит в состояние 1; при этом в процессор посылается общий сигнал прерывания ОСП и прекра- щается поступление импульсов на вход счетчика, т.е. завершается цикл просмотра входов системы прерывания. Содержимое счетчика используется для формирования начального адреса прерывающей прог- раммы. Цепочечная однотактная схема определения приоритетного запроса Время реакции при аппаратном циклическом опросе в некоторых случаях может оказаться недопустимо большим, поэтому может потре- боваться схема, позволяющая определить номер запроса за один такт. Рассмотрим цепочечную однотактную схему определения приори- тетного запроса. ЗП1 ЗП2 ЗП3 ¦ ¦ ¦ Приоритет ¦ ---¬ ¦ ---¬ ¦ ---¬ ---------T+--------+& +-T+--------+& +-T+--------+& +--> ... ¦¦ -- 7@ 0 ¦ ¦¦ -- 7@ 0 ¦ ¦¦ -- 7@ 0 ¦ ¦¦ ---¬ ¦ L--- ¦¦ ---¬ ¦ L--- ¦¦ ---¬ ¦ L--- ¦L-+& +-+ ¦L-+& +-+ ¦L-+& +-+ L--+ ¦ ¦ L--+ ¦ ¦ L--+ ¦ ¦ ---¬ L--- ¦ L--- ¦ L--- +--+1 ¦ ОСП ---¬ ¦ +--------------+--+ +-----+& +-> +--------------+--------------+--+ ¦ ---+ ¦ ¦ ¦ ¦ L--- ¦ L--- ------+--------------+--------------+-----¬ ¦ ¦ Шифратор номера приоритетного запроса ¦ ¦ L--------------------T--------------------- ¦ ¦ -------------¬ ¦ Порог прерывания ¦======>¦ Компаратор +--- ================================+======>¦ ¦ Разрешение ¦ L------------- прерывания V Код запроса Процесс определения приоритетного запроса инициируется сиг- налом "Приоритет", поступающим на цепочку последовательно вклю- ченных схем И. При отсутствии запросов этот сигнал пройдет через цепочку и сигнал общего запроса прерывания не сформируется. Если среди выставленных запросов прерывания наибольший приоритет имеет
- 7 - i-й запрос, то распространение сигнала "Приоритет" правее схемы И с номером i блокируется. На i-м выходе цепочечной схемы будет сигнал 1, а на всех остальных - 0. При этом в процессор поступает общий сигнал прерывания, а шифратор формирует код i-го запроса. По сигналу процессора "Подтверждение прерывания" этот код переда- ется в процессор и используется для формирования начального адреса прерывающей программы.
ВЕКТОРНОЕ ПРЕРЫВАНИЕ Процедура опроса источников прерывания, даже если она выпол- няется аппаратными средствами, требует больших затрат времени. Более гибким и динамичным является векторное прерывание, при котором исключается опрос источников прерывания. Прерывание называется векторным, если источник прерывания, выставляя запрос, посылает в процессор код адреса в памяти своего вектора прерывания. Отметим, что прерывание на основе опроса источников прерыва- ний всегда сопровождается переходом по одному и тому же адресу и инициирует одну и ту же прерывающую подпрограмму, которая после идентификации источника запроса и формирования адреса соответ- ствующей программы прерывания передает ей управление. При вектор- ном прерывании каждому запросу прерывания соответствует переход к программе, расположенной по адресу, задаваемому вектором прерыва- ния. ПРОГРАММНОЕ УПРАВЛЕНИЕ ПРИОРИТЕТОМ Относительная степень важности программ в ходе вычислитель- ного процесса может меняться. требуя установления новых приори- тетных отношений. Необходимо иметь возможность изменять по мере надобности приоритетные соотношения программным путем. В ЭВМ широко применяются два способа реализации программно управляемого приоритета, в которых используются или порог преры- вания, или маски прерывания. Метод порога прерывания Этот метод позволяет в ходе вычислительного процесса прог- раммным путем изменять уровень приоритета процессора относительно приоритетов источников прерываний. Порог прерывания - это минимальный уровень приоритета запросов, которым разрешается прерывать программу, выполняемую процессором. Порог прерывания задается командой программы, устанавли- вающей в регистре порога прерывания код порога прерывания.
- 8 - Специальная схема выделяет наиболее приоритетный запрос прерыва- ния, сравнивает его приоритет с порогом прерывания и, если он оказывается выше порога, вырабатывает общий сигнал прерывания, запускающий процедуру обработки прерывания. Метод маски прерывания В современных ЭВМ общего назначения наибольшее распростране- ние получило программное управление приоритетом на основе маски прерывания. Маска прерывания представляет собой двоичный код, разряды которого поставлены в соответствие отдельным запросам или классам прерываний. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состоя- ние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса. Таким образом можно изменять приоритеты запросов без переключения линий, по которым они поступают. Каждая прерывающая программа может устанавливать свою маску. Замаскированные запросы можно либо игнорировать, либо запо- минать, чтобы можно было осуществить затребованные действия, когда запрет будет снят.
ВТОРОЙ СЕМЕСТР СЕМИНАР N 3 ОРГАНИЗАЦИЯ СИСТЕМЫ ПРЕРЫВАНИЙ МИКРОПРОЦЕССОРА 8086 Микропроцессор 8086 имеет простую, но достаточно универсаль- ную систему прерываний. Каждому прерыванию поставлен в соот- ветствие код типа. Допускается обработка до 256 типов прерываний. Прерывания могут инициироваться внешними устройствами и командами программных прерываний. В некоторых случаях прерывания генерирует сам микропроцессор. Возможные источники прерываний: Немаскируемое прерывание -----------------------------------------¬ ¦NMI -----------¬ - - - - - - - - - -¦- - - - - - - ¬ --->¦ ¦ V МП 8086 --->¦ ¦ INT ¦ ------------------------------¬¦ Запросы --->¦ +-------->¦ Схемы прерываний ¦ от --->¦Контроллер¦ ¦ L---T-----T-----T-----T--------¦ уст- --->¦прерываний¦ ¦ ¦ ¦ ¦ ройств --->¦ ¦ ¦ ----+---¬ ¦ ----+---¬ ¦ ¦ --->¦ ¦ ¦Команда¦ ¦ ¦Ошибка ¦ ¦ --->¦ ¦ ¦ ¦ INT ¦ ¦ ¦деления¦ ¦ ¦ L----------- L-------- ¦ L-------- ¦ ¦ ----+---¬ ------+-----¬ ¦ ¦Команда¦ ¦Одношаговый¦ ¦ ¦ INT0 ¦ ¦ режим ¦ ¦ L-------- L------------ L - - - - - - - - - - - - - - - - - Внешние прерывания В микропроцессоре имеются два входа прерываний - маскируемо- го прерывания INT и немаскируемого прерывания NMI. На вход INT подается сигнал от программируемого контроллера прерываний, который обрабатывает сигналы запросов прерываний от периферийных устройств. Для программы контроллер прерываний выг- лядит, как порт ввода-вывода, в котором фиксируется код типа прерывания. Его основная функция заключается в восприятии сигна- лов от периферийных устройств, определении запроса с максимальным приоритетом и генерировании сигнала INT, если запрос имеет больший приоритет, чем выполняемая микропроцессором программа. Если установлен сигнал на линии INT и установлен в 1 флажок разрешения прерывания IF, то после завершения выполнения текущей команды происходит прерывание и процессор выполняет следующие действия: 1) выдает контроллеру прерывания подтверждение прерывания; 2) считывает из контроллера прерывания код типа прерывания; 3) заносит в стек содержимое регистра флагов; 4) заносит в стек содержимое регистров IP и CS; 5) вызывает и выполняет процедуру прерывания; 6) извлекает из стека содержимое CS и IP; 7) извлекает из стека содержимое регистра флагов; 8) возвращается к выполнению следующей команды прерванной прог- раммы. Линия немаскируемого прерывания NMI используется для сигна- лизации о катастрофических событиях в системе. Немаскированные
- 2 - прерывания имеют фиксированный код 2. Немаскированное прерывание выполняется быстрее маскированного, так как не требует подтверж- дения и считывания типа. Если установлен сигнал на линии NMI, то после завершения выполнения текущей команды происходит прерывание и процессор выполняет следующие действия: 1) заносит в стек содержимое регистра флагов; 2) заносит в стек содержимое регистра IP и CS, запоминая тем самым точку возврата из процедуры прерывания; 3) вызывает и выполняет процедуру прерывания; 4) извлекает из стека содержимое CS и IP; 5) извлекает из стека содержимое регистра флагов; 6) возвращается к выполнению следующей команды. Наибольшее время запаздывания реакции на внешние прерывания получается при выполнении команд умножения, деления и многобитно- го сдвига. Внутренние прерывания В процессоре 8086 предусмотрено несколько внутренних преры- ваний, генерируемых при выполнении программы. Команда INT n вызывает прерывание сразу после своего завершения. Тип прерывания n, закодированный программистом в команде, определяет вызываемую процедуру прерывания. Следовательно, эту команду можно использо- вать для отладки процедур прерываний, обслуживающих периферийные устройства. Команда INTO генерирует прерывание типа 4 после своего завершения, если установлен флаг переполнения OF. Процессор самостоятельно генерирует прерывание типа 0 сразу после выполнения команд деления DIV и IDIV, если имело место деление на 0. Если установлен флаг пошаговой работы TF, процессор автома- тически генерирует прерывание типа 1 после выполнения каждой команды. Пошаговый режим предназначен для отладки программ. Внутренние прерывания характеризуются следующими свойствами: 1) Тип прерывания либо предопределен, либо содержится в коде команды. 2) Подтверждение прерывания не выдается. 3) Внутренние прерывания нельзя запретить, кроме прерываний пошаговой работы. 4) Любое внутреннее прерывание (за исключением прерывания поша- говой работы) имеет более высокий приоритет, чем внешние прерыва- ния. Если запрос NMI или INT появляется при выполнении команды, которая сама генерирует внутреннее прерывание (например, ошибка деления), оно обрабатывается первым. По командам внутреннего прерывания процессор выполняет следующие действия: 1) заносит в стек содержимое регистра флагов; 2) заносит в стек содержимое регистра IP и CS; 3) вызывает и выполняет процедуру прерывания; 4) извлекает из стека содержимое CS и IP; 5) извлекает из стека содержимое регистра флагов; 6) возвращается к выполнению следующей команды. Приоритеты прерываний в порядке их убывания: 1) прерывание из-за ошибки деления; 2) программное прерывание, инициируемое командой INT; 3) команда прерывания при переполнении;
- 3 - 4) немаскируемое прерывание NMI; 5) маскируемое прерывание INT; 6) прерывание пошаговой работы. Таблица указателей векторов прерываний Таблица указателей векторов прерываний осуществляет связь между кодом типа прерывания и процедурой, которая обслуживает прерывание данного типа. Таблица занимает 1 Кбайт памяти с диапа- зоном адресов 0 - 3FF и может содержать до 256 элементов. Каждый элемент i таблицы представляет собой полный начальный логический адрес процедуры, которая обслуживает прерывание типа i. Слово с меньшим адресом содержит смещение, а слово с большим адресом - базовый адрес сегмента. Так как каждый элемент таблицы состоит из 4 байт, процессор вычисляет адрес нужного элемента таблицы путем умножения кода типа на 4. Процедуры прерываний Когда вызывается процедура прерывания, содержимое регистров флагов, CS и IP включено в стек, а флаги IF и TF сброшены. Проце- дура может разрешить внешние прерывания командой STI, допуская прерывание самой себя запросом на входе INT. Кроме того, она может быть всегда прервана запросом на входе немаскируемых прерываний на входе NMI. Внутренние прерывания, возникающие при выполнении процедуры, будут также прерывать ее. В каждой процеду- ре необходимо тщательно следить за тем, чтобы в ней не возникло прерывание того типа, которое она обслуживает. Необходимо также задавать объем стека, рассчитанный на максимальную глубину вложе- ния прерываний. Каждая процедура прерывания должна запоминать в стеке содер- жимое всех регистров, которые она использует, до их модификации, а перед завершением восстанавливать содержимое этих регистров. Целесообразно разрешать восприятие прерываний по входу INT для всех частей процедуры, за исключением критических секций, которые нельзя прерывать без риска получения ошибочных результа- тов. Если прерывания запрещены слишком долго, возникает потенци- альная опасность потери запросов прерываний по входу INT. Процедура прерывания должна заканчиваться командой возврата из прерывания IRET. Перед ее выполнением предполагается, что стек находится в том состоянии, в каком он был сразу после вызова процедуры. Команда IRET извлекает три верхних слова из стека в регистры IP, CS и флагов. Фактические действия процедуры зависят от ее назначения. Если процедура обслуживает периферийное устройство, она должна передать ему приказ о снятии запроса прерывания. Затем она может получить от устройства информацию о его состоянии, определить причину прерывания и предпринять соответствующие действия. Программные прерывания можно использовать для вызова обслу- живающих программ операционной системы (вызов супервизора). Прерывание типа 0 Прерывание из-за ошибки деления возникает в том случае, когда результат операции деления превышает максимально допустимое значение, например, при делении на 0. . - 4 - Прерывание типа 1 Прерывание пошагового режима автоматически генерируется мик- ропроцессором после выполнения каждой команды, если установлен флаг TF. При выполнении прерывания содержимое регистра флагов загружается в стек, а затем флажки IF и TF сбрасываются. Следова- тельно, после вызова соответствующей процедуры процессор перехо- дит в обычный режим работы. Когда процедура завершается, из стека извлекаются старые состояния флажков и процессор возвращается в пошаговый режим работы. Пошаговый режим работы используется программами-отладчиками для индикации содержимого внутренних регистров процессора после выполнения каждой команды отлаживаемой программы. Прерывание типа 3 Прерывание типа 3 - это прерывание контрольной точки. Контрольной точкой называется любое место в программе, где ее выполнение приостанавливается и вызывается специальная программа обработки. Контрольные точки используются программами-отладчиками для отображения содержимого регистров, ячеек памяти и портов ввода-вывода в критических местах программы. Команда INT3 имеет длину 1 байт, что позволяет вставлять ее в любом месте программы: запоминается заменяемая команда и вместо нее подставляется команда INT3. Процедура контрольной точки, после выполнения своих основных функций, восстанавливает ранее замененную команду и производит декремент слова в стеке, которое хранило старое значение IP, чтобы после завершения процедуры произошел переход к этой команде. ВТОРОЙ СЕМЕСТР СЕМИНАР N 4 2КОНТРОЛЛЕР ПРЕРЫВАНИЙ Программируемый контроллер прерываний 8259 предназначен для обработки до 8 приоритетных уровней прерываний. Возможно каскади- рование микросхем, при этом общее число уровней прерывания будет достигать 64. Контроллер 8259 имеет несколько режимов работы, которые ус- танавливаются программным путем. В ПЭВМ IBM используется только один из этих режимов, который устанавливается программами началь- ной загрузки BIOS при запуске машины. Без крайней необходимости не желательно перепрограммировать контроллер, так как неправиль- ное программирование нарушает логику работы всей системы. Условное графическое изображение микросхемы: -------T-----T------¬ ¦ 756 0 ¦ PIC ¦ ¦ 11 ---+ D0 ¦ ¦ ¦ 10 ---+ D1 ¦ ¦ ¦ 9 ---+ D2 ¦ ¦ ¦ 8 ---+ D3 ¦ ¦ ¦ 7 ---+ D4 ¦ ¦ ¦ 6 ---+ D5 ¦ ¦ ¦ 5 ---+ D6 ¦ ¦ ¦ 4 ---+ D7 ¦ ¦ ¦ +------+ ¦ ¦ 27 ---+ A0 ¦ ¦ INT +--- 17 +------+ ¦ ¦ 18 ---+ IRQ0 ¦ ¦ ¦ 19 ---+ IRQ1 ¦ ¦ ¦ 20 ---+ IRQ2 ¦ ¦ CAS0 +--- 12 21 ---+ IRQ3 ¦ ¦ ¦ 22 ---+ IRQ4 ¦ ¦ CAS1 +--- 13 23 ---+ IRQ5 ¦ ¦ ¦ 24 ---+ IRQ6 ¦ ¦ CAS2 +--- 15 25 ---+ IRQ7 ¦ ¦ ¦ +------+ +------+ 1 --- 7@ 0 CS ¦ ¦ ¦ 2 --- 7@ 0 WR ¦ ¦ GND +--- 14 3 --- 7@ 0 RD ¦ ¦ ¦ 26 --- 7@ 0 INTA ¦ ¦ U 4cc 0 +--- 28 16 --- 7@ 0 MS/SW¦ ¦ ¦ L------+-----+------- . - 2 - D0-D7 - канал данных; A0 - адресная линия нулевого разряда; IRQ0-IRQ7 - входы запросов прерываний; 4__ CS - сигнал "выбор микросхемы"; 4__ WR - сигнал "запись информации"; 4__ RD - сигнал "чтение информации"; 4____ INTA - сигнал "подтверждение прерывания"; 4__ __ MS/SW - выбор ведомой микросхемы; INT - сигнал прерывания; CAS0-CAS2 - шина каскадирования; GND - "земля"; U 4cc 0 - напряжение питания. 4____ INTA INT ¦ ^ -----------¬ ---¬ v ¦ ¦ Буферные ¦ ¦ ¦ -------------------+------¬ D0-D7 <==>¦ регистры ¦<=>¦ ¦ ¦ Устройство управления ¦ ¦ данных ¦ ¦ ¦ L---------T---------------- L----------- ¦ ¦ ^ ¦ ^ г¦ ¦=======- ¦ ¦ 4__ 0 -----------¬ ¦¦ L-------------+-----------+-----¬ RD --->¦Логическая¦ ¦¦Внутренняя 8-разрядная шина дпнных¦ 4__ 0 ¦ схема ¦ ¦¦ --------------T------------------ WR --->¦ чтения- ¦<=¦¦ ¦ ^ ¦ ^ ^ ¦ записи ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ A0 --->¦ ¦ ¦¦ ¦ ¦ ¦ v ¦ L----------- ¦¦ ¦ v v ---------+-¬<- IRQ0 4__ 0 ^ ¦¦ ¦ ------------¬¦ ¦<- IRQ1 CS ---------- ¦¦ ¦ ¦ Регист𠦦 Регистр ¦<- IRQ2 ¦¦ ¦ ¦обслуженных¦¦ запросов ¦<- IRQ3 -----------¬ ¦¦ ¦ ¦ запросов ¦¦прерывания¦<- IRQ4 CAS0 <-->¦ Буферная ¦ ¦¦ ¦ L------------¦ ¦<- IRQ5 ¦ схема ¦ ¦¦ ¦ ^ ¦ ¦<- IRQ6 CAS1 <-->¦ каскади- ¦<=-¦ ¦ ¦ L-----------<- IRQ7 ¦ рования ¦ ¦ ¦ ¦ ^ CAS2 <-->¦ ¦ ¦ ¦ ------¦------------¦--------¬ L----------- ¦ ¦ ¦Схема маскирования запросов¦ 4__ __ 0 ^ ¦ ¦<=>¦ прерывания и анализа их ¦ MS/SW ---------- ¦ ¦ ¦ по приоритету ¦ L--- L---------------------------- . - 3 - Регистр запросов прерывания IRR предназначен для записи и хранения запросов прерывания (IRQ). Регистр обслуженных запросов ISR предназначен для хранения сигнала, обслуживаемого в данный момент. Схема маскирования IMR разрешает или запрещает прохождение сигналов с выхода регистра запросов прерывния на входы схемы ана- лиза по уровню приоритета. Сигналы, прошедшие через схему маски- рования, анализируются по уровню приоритета. Запросы с более вы- соким приоритетом, занесенные в регистр обслуженных запросов, запрещают прохождение через схему маскирования равных или низших по уровню приоритета запросов. Для разрешения прохождения этих запросов необходимо подать на микросхему команду "Конец прерыва- ния" либо команду специального маскирования. Различные сочетания сигналов, подаваемых на вход логической схемы чтения/записи, позволяют записывать команды в регистры мик- росхемы, а также считывать содержимое этих регистров на шину дан- ных. Устройство управления предназначено для выдачи сигнала INT после поступления одного или нескольких запросов на входы IRQ0- IRQ7, а также для формирования команды CALL. Если необходимо обслуживать более 8 линий запросов прерыва- ния, используется метод каскадирования: один контроллер включает- 4__ __ ся как ведущая микросхема (на входе MS/SV напряжение высокого 4__ __ уровня), а остальные - как ведомые (на входах MS/SV напряжение низкого уровня), причем каждой ведомой микросхеме присваивается номер, который устанавливается программным путем перед началом работы. В машинах IBM AT имеется 15 линий сигналов прерывания, для обслуживания которых используются ведущая и одна ведомая микрос- хемы. Для каскадирования используется линия IRQ2 ведущей микрос- хемы (в результате ошибок проектирования линии прерываний были распределены достаточно произвольным образом). Каждому приоритетному уровню прерывания контроллер 8259 ста- вит в соответствие определенный, задаваемый программно, номер прерывания. Ведомой микросхеме программным методом присваивается код, равный номеру входа IRQ ведущей микросхемы, с которым соеди- нен выход запроса прерывания INT ведомой микросхемы. Внутри мик- росхемы приоритет зависит от номера IRQ и задается программно. . - 4 - ------------------¬ IRQ0 (таймер) ----+ ¦ IRQ1 (клавиатура) ----+ ¦ IRQ2 (каскадирование) --+ ¦ К шине IRQ3 (порт COM2) --+-+ Ведущий ¦ INT управления IRQ4 (порт COM1) --+-+ контроллер +-----------------> IRQ5 (резерв) --+-+ ¦ процессора IRQ6 (кондроллер НГМД) --+-+ ¦ IRQ7 (принтер) --+-+ ¦ ¦ L-T------T------T-- ¦ ¦CAS0 ¦CAS1 ¦CAS2 L---+------+------+---------¬ ¦ ¦ ¦ ¦ v v v ¦ ------------------¬ ¦ IRQ8 (часы) ----+ ¦ ¦ IRQ9 (контроллер EGA) ----+ ¦ ¦ IRQ10 (резерв) ----+ ¦ ¦ IRQ11 (резерв) ----+ Ведомый ¦ INT ¦ IRQ12 (резерв) ----+ контроллер +-------- IRQ13 (сопроцессор) ----+ ¦ IRQ14 (НЖМД) ----+ ¦ IRQ15 (резерв) ----+ ¦ L------------------ Приоритеты прерываний распределены в следующем порядке (по убыванию приоритета): IRQ0 - прерывание таймера; IRQ1 - прерывание от клавиатуры; IRQ8 - прерывание от часов реального времени; IRQ9 - прерывание от контроллер EGA; IRQ10 - зарезервированная линия; IRQ11 - зарезервированная линия; IRQ12 - зарезервированная линия; IRQ13 - прерывание от математического сопроцессора; IRQ14 - прерывание от контроллера жестких дисков; IRQ15 - зарезервированная линия; IRQ3 - прерывание от последовательного порта COM2; IRQ4 - прерывание от последовательного порта COM1; IRQ5 - зарезервированная линия; IRQ6 - прерывание от контроллера гибких дисков; IRQ7 - прерывание от параллельного порта (от принтера). Часть линий прерываний жестко закреплена за устройствами оп- ределенных типов, а другая часть находится в полном распоряжении пользователя. Возможность свободного использования зарезервиро- ванных линий создает определенные проблемы, называемые конфликта- ми прерываний. Такой конфликт может возникнуть в результате ошиб-
- 5 - ки пользователя в процессе установки контроллера какого-либо но- вого устройства: может возникнуть ситуация, когда два контроллера посылают запросы прерываний на одну и ту же линию, и процессор не знает, какое из устройств послало сигнал. Для предотвращения конфликта перед установкой нового устройства необходимо использо- вать специальную программу, которая определяет, какие из линий прерываний в системе свободны, а затем настроить новый контроллер на одну из свободных линий путем соответствующей установки перек- лючателей на контроллере. Имеется два типа команд, посылаемых программой в контроллер 8259 - команды инициализации и команды операции. Возможны следую- щие операции: - индивидуальное маскирование запросов прерывания; - специальное маскирование обслуженных запросов; - установка статуса уровней приоритета (по установке исходного состояния, по обслуженному запросу, по указанию); - операции конца прерывания (обычный конец, специальный конец, автоматический конец); - чтение регистров IRR, ISR, IMR. Команды операций бывают трех типов: - маскирование запросов прерывания; - команды обработки конца прерывания; - опрос регистров и специальное маскирование. Байты команды маскирования запросов прерывания выводятся со- ответственно в порты 21h и A1h для ведущего и ведомого контролле- ров. Команды операций второго и третьего типа используют порты с адресами 20h (ведущий) и A0h (ведомый). Разряды регистра маски прерываний соответствуют номерам IRQ. Для того, чтобы замаскировать (запретить) аппаратное прерывание какого-либо уровня, надо заслать в регистр маски байт, в котором бит, соответствующий этому уровню, установлен в 1. Например, для маскирования НГМД в порт 21h надо заслать двоичное число 01000000b. Из всего списка команд контроллера 8259 программисту обычно необходима только команда "Обычный конец прерывания" с кодом 20h. Если написанная вами программа содержит обработчик аппаратного прерывания, полностью заменяющий собой стандартный обработчик BI- OS, этот обработчик (после завершения обработки прерывания) дол- жен выдавать команду "Обычный конец прерывания" 20h в порт 20h, и при необходимости, такую же команду в порт A0h (если номер преры- вания больше 7). Если же ваша программа просто перехватывает пре- рывание, а затем передает управление стандартному обработчику BIOS, то команды завершения прерывания будет посылать этот обра- ботчик. . - 6 - 2ПОРТ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ Порт последовательной передачи данных RS-232-C (асинхронный адаптер) предназначен для подключения к ПЭВМ IBM PC/AT низкоско- ростных периферийных устройств, работающих со скоростями передачи данных не выше 115200 бит/с (14400 байт/с), к которым относятся: - манипуляторы типа "мышь"; - графопостроители; - ручные сканеры; - принтеры; - модедемы. При использовании метода последовательной передачи данных данные и синхронизирующая информация передаются по одной линии последовательно во времени (по одному биту). Синхронизация необ- ходима, так как частоты задающих генераторов приемника и передат- чика не совпадают даже при использовании кварцевых резонаторов (расхождение может составлять доли процента). Для синхрониза группе информационных битов обычно предшест- вует специальный 2"стартовый" 0 бит. Для контроля правильности пере- дачи данных после группы информационных битов передается бит про- верки на четность (P). Завершают посылку один или два стоповых бита. START ¦ 0 1 2 3 4 5 6 7 P STOP -----------¬ V ----T---T---T---T---T---T---T---T---¬ ------ L---+---+---+---+---+---+---+---+---+---+---+---- Использование (или неиспользование) бита четности, число информационных, стартовых и стоповых битов определяет 2протокол 2передачи данных 0. РЕГИСТРЫ ПОРТА ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ ПЭВМ IBM AT в стандартной конфигурации имеет один или два порта последовательной передачи данных. Порт N1 имеет кодовое обозначение COM1 и базовый адрес 3F8h (занимает пространство ад- ресов от 3F8h до 3FFh). Порт COM1 вырабатывает прерывание IRQ4 (INT 0Ch). Порт N2 обозначается COM2, занимает пространство ад- ресов от 2F8h до 2FFh и вырабатывает прерывание IRQ3 (INT 0Bh). Порт 3F8h (2F8h) - этот адрес разделяют два регистра: 1) регистр данных (при передаче в него записываются, а при приеме из него считываются байты данных). 2) регистр младшего байта делителя частоты. Порт 3F9h (2F9h) - этот адрес разделяют два регистра:
- 7 - 1) регистр управления прерываниями: - если бит 0 установлен в 1, разрешено прерывание при пос- туплении байта данных; - если бит 1 установлен в 1, разрешено прерывание при завер- шении передачи байта данных; - если бит 2 установлен в 1, разрешено прерывание по ошибке; - если бит 3 установлен в 1, разрешено прерывание по сигналу от модема; - биты 4-7 не используются и должны быть установлены в 0. 2) регистр старшего байта делителя частоты. Порт 3FAh (2FAh) - регистр идентификации прерывания: - если бит 0 установлен в 1, то это означает наличие сигнала прерывания; - биты 1 и 2 идентифицируют источник сигнала прерывания: 00 - изменилось состояние модема; 01 - завершилась передача байта; 10 - завершен прием байта; 11 - ошибка при приеме данных. - биты 3 - 7 не используются (установлены в 0). Порт 3FBh (2FBh) - регистр управления: - биты 0 и 1 задают длину передаваемого слова в битах: (00 - 5 бит, 01 - 6 бит, 10 - 7 бит, 11 - 8 бит); - бит 2 определяет число стоповых битов (0 - 1 бит, 1 - 2 бита); - биты 3 определяет наличие контроля по четности (0 - нет контроля, 1 - есть контроль); - бит 4 определяет тип контроля (0 - контроль на нечетность, 1 - на четность); - бит 5 при установке в 1 блокирует контроль по четности; - бит 6 - выдает на линию передачи сигнал "Обрыв линии"; - бит 7 управляет регистрами 3F8h и 3F9h: при установке в 1 этого бита данные регистры используются для загрузки делителя частоты тактового генератора, а при 0 - как регистр данных и ре- гистр управления прерываниями соответственно. Порт 3FCh (2FCh) - регистр управления модемом: - бит 0 - готовность выходных данных (при 1 данные готовы); - бит 1 - готовность к приему данных; - биты 2 и 3 - сигналы OUT1 и OUT2 для модема; - бит 4 - запуск самотестирования контроллера последователь- ного порта; - биты 5-7 не используются и должны быть установлены в 0. Порт 3FDh (2FDh) - регистр состояния линии связи: - бит 0 устанавливается в 1, когда данные получены и готовы для считывания, и сбрасывается при чтении данных из регистра
- 8 - 3F8h; - бит 1 устанавливается при ошибке переполнения приемника (в приемник поступил новый байт, когда предыдущий еще не был счи- тан); - бит 2 устанавливается при обнаружении ошибки по четности; - бит 3 устанавливается при обнаружении ошибки синхрониза- ции; - бит 4 устанавливается при обнаружении сигнала "Разрыв ли- нии"; - бит 5 устанавливается в 1, когда завершена передача байта данных и в передатчик можно записывать новый байт; - бит 6 устанавливается в 1, когда регистр сдвига передатчи- ка пуст; - бит 7 устанавливается при обнаружении сигнала "Тайм-аут". Порт 3FEh (2FEh) - регистр состояния модема. ВТОРОЙ СЕМЕСТР СЕМИНАР N 5 2ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ 2НА ЖЕСТКИХ МАГНИТНЫХ ДИСКАХ (НЖМД) В настоящее время имеется несколько основных стандартов на интерфейсы для ПЭВМ и мини-ЭВМ, разработанных различными фирмами: ST506/412 - разработан фирмой Seagate Technology, применялся в ранних моделях IBM PC/AT, имеет скорость передачи данных 0,6 Мбайт/с при MFM-кодировании и 0,9 Мбайт/с при RLL-кодировании; ESDI (Enhanced Small Device Interface) - разработан по ини- циативе фирмы Maxtor, в настоящее время вытеснен с рынка персо- нальных компьютеров в результате жесткой конкурентной борьбы с интерфейсами IDE и SCSI; IDE (Integrated Drive Electronics) - разрабатывается под контролем ANSI и по спецификации ANSI носит название ATA, ATA-2, ATA-3, имеет скорость передачи данных до 16,5 Мбайт/с; SCSI (Small Computer System Interface) - универсальный ин- терфейс, был предложен фирмой Shugart Associates и в дальнейшем разрабатывался под контролем ANSI, имеет скорость передачи данных до 40 Мбайт/с. IPI (Intelligent Peripherial Interface) - применяется в уни- версальных вычислительных машинах, имеет скорость передачи данных до 10 Мбайт/с, из сферы ПЭВМ и файл-серверов вытеснен более прос- тым и дешевым интерфейсом SCSI. Интерфейс ESDI В интерфейсе ST412 по кабелю данных передавались необрабо- танные сигналы, представляющие из себя смесь битов синхронизации и данных. Разделение этих битов производилось схемами, находящи- мися в адаптере. При этом специальные схемы фазовой автоподстрой- ки частоты и генератора, управляемого напряжение, следили за из- менением фазы входных сигналов и соответствующим образом подстра- ивали схемы разделения. В интерфейсе ESDI функции разделения данных перенесены не- посредственно в накопитель. Это изменение дает два основных преи- мущуства: во-первых, уменьшение вероятности искажения сигнала в результате передачи его по кабелю, а во-вторых, появилась возмож- ность подстраивать сам разделитель данных под характеристики дис- ковода и носителя. ESDI - универсальный помехоустойчивый интерфейс, который предназначен для работы с периферийными устройствами любого типа. Спецификации ESDI определяют логический и физический интерфейс между контроллером и ПУ, но не определяют ни способ передачи дан- ных между контроллером и процессором, ни способ записи информации на внешнем устройстве. . - 2 - Подключение внешних устройств в интерфейсе ESDI: Шина управления г=========================T======= = = ==========¬ ¦ --------¦------¬ --------¦------¬ ¦ ¦ Устройство 1 ¦ ... ¦ Устройство N ¦ ¦ L-------T------- L-------T------- -------¦-----¬ Шина данных ¦ ¦ ¦ Контроллер ¦===================- ¦ ¦ ¦ Шина данных ¦ ¦ ESDI ¦==========================================- L------T------ ¦ Шина компьютера = = ====¦================================ = =
Интерфейс IDE Интерфейс IDE был разработан в качестве недорогой альтерна- тивы интерфейсам ESDI и SCSI. Отличительная особенность этого ин- терфейса - реализация функций контроллера в накопителе. При этом плата, которая является промежуточной между системной шиной ПК и НЖМД представляет собой довольно простое устройство, содержащее дешифратор базовых адресов контроллера и формирователи сигналов интерфейса. Интерфейс позволяет подключать один или два НЖМД. Объем одного диска не может превышать 504 Mb. НЖМД подключается к адаптеру одним 40-жильным кабелем: ----------¬ ----------¬ ¦ НЖМД N1 ¦ ¦ НЖМД N2 ¦ L----T----- L----T----- ¦ Шина IDE ¦ ¦============- ¦ -------¦------¬ ¦ Адаптер IDE ¦ L------T------- ¦ Шина компьютера ¦ = = ===================¦======== = = Примечание: НЖМД N1 называют "ведущим" (Master), НЖМД N2 - "ведомым" (Slave); поскольку оба накопителя подключены к одному и тому же кабелю, номер накопителя задается переключателями на са- мом накопителе. При установке второго накопителя для наращивания дисковой памяти ПЭВМ необходимо внимательно изучить инструкцию, поставляемую фирмами - поставщиками комплектующих вместе с нако- . - 3 - пителем (на заводе-изготовителе переключатели могут быть установ- лены в положение "Master"). Интерфейс Enhanced IDE (Fast ATA) позволяет подключать до 4-х устройств различных типов (накопителей на жестких или опти- ческих дисках) емкостью более 504 Мбайт каждое (на данный момент в широкой продаже имеются диски с интерфейсом EIDE емкостью 4Gb). Интерфейс SCSI Интерфейс SCSI определяет шину данных между центральным про- цессором и несколькими ВЗУ, каждое из которых имеет свой собс- твенный контроллер. Помимо электрических и физических параметров этой шины, интерфейс SCSI определяет систему команд, с помощью которой устройства, подключенные к шине, осуществляют связь между собой. ---------------¬ ---------------¬ ---------------¬ ¦ Устройство 1 ¦ ¦ Устройство 2 ¦ ... ¦ Устройство N ¦ L------T-------- L------T-------- L-------T------- ¦ ¦ ¦ -------¦-------¬ -------¦-------¬ --------¦------¬ ¦ Контроллер 1 ¦ ¦ Контроллер 2 ¦ ... ¦ Контроллер N ¦ L------T-------- L------T-------- L-------T------- ¦ ¦ Шина SCSI ¦ L================+==========================- ¦ -------¦-------¬ ¦ Адаптер SCSI ¦ L------T-------- Шина компьютера ¦ = = ====================¦============ = = Интерфейс SCSI предусматривает передачу данных по параллель- ной 8-разрядной шине со скоростью до 4 Мбайт/с, интерфейс SCSI-2 - по 8 или 16-разрядной шине (со скоростями 10 и 20 Мбайт/с соот- ветственно. Интерфейс SCSI-3 разрабатывается и будет позволять передавать данные со скоростью 40 Мбайт/с.
ФУНКЦИИ АДАПТЕРА НЖМД С ИНТЕРФЕЙСОМ ST412 Адаптер жесткого диска позволяет: 1) поддерживать формат данных на диске, совместимый с форма- том данных IBM; 2) поддерживать не только стандартные, но также и задаваемые пользователем типы НЖМД; 3) генерировать прерывание IRQ14; 4) осуществлять поиск требуемых циллиндров одновременно на
- 4 - двух НЖМД (если головки находятся не на требуемом циллиндре, то инициируется его поиск, а затем выполняется чтение или запись ин- формации); 5) осуществлять предкомпенсацию записываемых данных в соот- ветствии с параметрами подключенных НЖМД; 6) производить автоматическое переключение головок накопите- ля (при обнаружении конца дорожки во время мультисекторной пере- дачи адаптер выбирает следующую дорожку, а при обнаружении конца циллиндра - следующий циллиндр, после чего продолжается выполне- ние команды); 7) обнаруживать ошибки в считываемой информации и корректи- ровать пакеты ошибок длиной до 11 бит; 8) управлять последовательностью размещения секторов на до- рожке (чередованием); 9) производить обмен данными с ЦП и ОЗУ в режиме программно- го ввода-вывода; 10) производить внутреннюю диагностику аппаратуры адаптера. Получив команды и данные от ЦП через программно-доступные регистры, адаптер НЖМД начинает выполнять операцию. Передача в ОЗУ компьютера считываемых данных, а также прием из ОЗУ записыва- емых данных происходит через буферную память адаптера НЖМД, необ- ходимую для согласования временных параметров обмена данными меж- ду НЖМД и системной шиной, а также для коррекции информации (при записи информации на диск формируется циклический избыточный код контроля ошибок, который приписывается в конец каждого поля иден- тификатора сектора и каждого поля данных). ПОРТЫ ВВОДА-ВЫВОДА Регистр данных 1F0h испльзуется при выполнении операции чте- ния или записи сектора в программном режиме ввода-вывода. Этот регистр недоступен, пока не начнется операция чтения или записи. Передача данных осуществляется 16-разрядными словами. Регистр ошибок 1F1h доступен только по чтению. Он определяет состояние адаптера после выполнения операции. Состояние этого ре- гистра действительно: 1) после выполнения команды, если установлен бит "Error" в регистре состояния; 2) после выполнения команды "Диагностика" или после выполне- ния внутренней диагностики адаптера по системному сбросу. Коды регистра ошибок в диагностическом режиме: 01h - нет ошибки, 02h - ошибка адаптера, 03h - ошибка буфера сектора, 04h - ошибка аппаратуры вычисления контрольных кодов, 05h - ошибка про- цессора. Значения битов регистра ошибок после выполнения команды (ус- танавливаются в 1 при наличии соответствующей ошибки):
- 5 - бит 0 - не найден адресный маркер сектора; бит 1 - при выполнении команды "Рекалибровка" не найдена ну- левая дорожка; бит 2 - аварийное прекращение выполнения команды; бит 3 не используется; бит 4 - сектор с заданными координатами (циллиндр, головка, сектор) не найден; бит 5 не используется; бит 6 - наличие некорректируемой ошибки данных; бит 7 - в идентификаторе сектора обнаружена метка дефектного сектора. В регистр стартового циллиндра предкомпенсации 1F1h (доступ- ный только для записи) заносится уменьшенный в 4 раза по отноше- нию к действительному номер циллиндра, начиная с которого адаптер осуществляет запись данных с предкомпенсацией. В регистр счетчика секторов 1F2h заносится количество секто- ров, которое должно быть считано или записано. Значение этого регистра уменьшается на 1 при обработке каждого сектора. При мультисекторном считывании сектора долны располагаться на диске последовательно друг за другом (т.е. область данных должна быть непрерывной). Внимание! При записи 0 в этот регистр происходит обработка 256 секторов. Этот регистр доступен для считывания - в случае возникнове- ния ошибки при выполнении операции чтения или записи в этом ре- гистре будет находиться число необработанных секторов. В регистр номера сектора 1F3h загружается стартовый номер сектора при операциях чтения-записи. После обработки каждого сек- тора в этот регистр заносится номер следующего сектора, подлежа- щего обработке. Регистр доступен для чтения/записи. После выполнени команды он содержит номер последнего обработанного сектора. Регистры младшего (1F4h) и старшего (1F5h) байтов номера циллиндра определяют стартовый циллиндр для выполнения команды. Внимание! В регистре старшего байта используются только 2 младших разряда. Регистр доступен для чтения/записи. После выполнени команды он содержит текущий адрес циллиндра. Биты регистра выбора НЖМД и номера головки 1F6h (доступного для чтения/записи) имеют следующие значения: биты 0-3 - номер головки; бит 4 - выбор НЖМД (1 или 2); биты 5 и 6 - размер сектора (всегда используется двоичный
- 6 - код 10, соответствующий размеру физического сектора 512 байт); бит 7 не используется. Регистр состояния 1F7h, доступный только для чтения, отобра- жает состояние адаптера и НЖМД. Значения битов регистра состояния (возникновение опреде- ленного состояния индицируется установкой соответствующего бита в 1): бит 0 - при выполнении команды произошла ошибка (этот бит сбрасывается при поступлении следующей команды); бит 1 - сигнал "Index" активен; бит 2 - индицирует, что при считывании с диска имела место ошибка, но данные были успешно скорректированы; бит 3 - имеется запрос на обмен данными с буфером в ОЗУ; бит 4 - индицирует, что головки чтения-записи завершили по- иск заданного сектора; бит 5 - неисправность накопителя; бит 6 - НГМД готов к выолнению операций чтения, записи или поиска; бит 7 - НГМД "занят", ему нельзя передавать команды или дан- ные, нельзя считывать содержимое регистров (во избежание получе- ния ложных данных). Регистр команд 1F7h используется для загрузки выполняемой команды (загрузка команды должна производиться только после того, как подготовлены и записаны в регистры 1F1h-1F6h все необходимые для ее выполнения даннные). Регистр управления 3F6h доступен только для записи. Значения битов этого регистра следующие: бит 0 не используется; бит 1 - разрешение прерывания (0 - разрешено, 1 - запреще- но); бит 2 - сброс адаптера (сброс происходит при установке этого бита в 1); бит 3 - разрешение использования бита 3 для выбора головки (0 - запрет, 1 - разрешение); биты 4-7 не используются. 2ВТОРОЙ СЕМЕСТР СЕМИНАР N 6 _ИНТЕРФЕЙС ТУРБО АССЕМБЛЕРА И ТУРБО СИ Для смешанного программирования на языке высокого уровня и Ассемблере прекрасно подходит Турбо Си. Для объединения кода Ас- семблера и Си в нем предусмотрен не один, а целых два механизма. Средство встроенного Ассемблера в Турбо Си обеспечивает быстрый и удобный способ для включения кода Ассемблера непосредственно в функцию Си. Для тех, кто предпочитает при программировании на Ас- семблере использовать отдельные модули, целиком написанные на этом языке, такие модули можно ассемблировать отдельно, а затем компоновать с программами Турбо Си. Встроенный Ассемблер - это не что иное, как возможность вставлять практически любой код Ассемблера в программы на Си. Каждый раз, когда Турбо Си обнаруживает ключевое слово asm, указывающее, что это строка Ассемблера, он помещает данную строку Ассемблера непосредственно в скомпилированный код с одним измене- нием: ссылки на переменные Си преобразуются в соответствующий эквивалент на Ассемблере. Предусмотрена возможность объединения инструкций встроенного ассемблера в блоки с испотльзованием кон- струкции asm {...} . Турбо Си компилирует свой код таким образом, чтобы избежать многих потенциально опасных взаимодействий со встроенным Ассемб- лером. Тем не менее, неправильно функционирующий встроенный код Ассемблера определенно может привести к серьезным ошибкам. Однако ошибки во встроенном коде Ассемблера гораздо менее вероятны, чем в программе, целиком написанной на Ассемблере, поскольку Турбо Си берет на себя множество мелочей, таких, как вход в функции и выход из них, передачу параметров и выделение памяти для перемен- ных. . - 2 - Как работает встроенный Ассемблер Обычно Турбо Си компилирует каждый файл исходного кода на языке Си в объектный файл, а затем вызывает утилиту TLINK для компоновки объектных файлов в выполняемую программу. --------------------------------¬ ¦ Исходный файл на языке Си ¦ L---------------T---------------- V г=============¬ ¦ Турбо Си ¦ Компиляция L======T======- V --------------------------------¬ ¦ Объектный файл ¦ L---------------T---------------- V г=============¬ ¦ TLINK ¦ Компоновка L======T======- V --------------------------------¬ ¦ Выполняемый файл ¦ L-------------------------------- Рис. 1 Цикл компиляции и компоновки Турбо Си. Однако при использовании встроенного Ассемблера Турбо Си до- бавляет в цикл компиляции и компоновки дополнительный шаг. При обработке Турбо Си каждого модуля, где содержится встро- енный код Ассемблера, сначала весь модуль компилируется в исход- ный файл на языке Ассемблера, а затем для трансляции полученного кода Ассемблера а объектный код вызывается Турбо Ассемблер. После этого для компоновки объектных файлов вызывается утилита TLINK. . - 3 -
--------------------------------¬ ¦ Исходный файл на языке Си ¦ L---------------T---------------- V г=============¬ ¦ Турбо Си ¦ Компиляция L======T======- V --------------------------------¬ ¦ Исходный файл на Ассемблере ¦ L---------------T---------------- V г=================¬ ¦ Турбо Ассемблер ¦ Ассемблирование L========T========- V --------------------------------¬ ¦ Объектный файл ¦ L---------------T---------------- V г=============¬ ¦ TLINK ¦ Компоновка L======T======- V --------------------------------¬ ¦ Выполняемый файл ¦ L-------------------------------- Рис. 2. Цикл компиляции, ассемблирования и компоновки Турбо Си. Встроенный код Ассемблера просто передается Турбо Си в файл на языке Ассемблера. Турбо Си не нужно ничего знать об ассембли- ровании встроенного кода, вместо этого Турбо Си компилирует исходный код языка Си на уровень Ассемблера, а затем позволяет Турбо Ассемблеру выполнить трансляцию. Обычно Турбо Си компилирует исходный код непосредственно в объектный код. Существует несколько способов, с помощью которых можно сообщить Турбо Си, что нужно поддерживать встроенный Ассем- блер путем компиляции на язык Ассемблера и последующего вызова утилиты TLINK. Параметр командной строки -s указывает Турбо Си, что нужно транслировать исходный код в код Ассемблера, после чего прекра- тить работу. Файл с расширением .ASM, сгенерированный Турбо Си при использовании параметра -s, можно отдельно ассемблировать и скомпоновать с другими модулями Си и Ассемблера. Параметр -b или вставленная в программу на C директива: #pragma inline
- 4 - указывают Турбо Си, что нужно выполнить трансляцию в Ассемблер, а затем для получения объектного кода вызвать Турбо Ассемблер. Лучше помещать указание #pragma inline возможно ближе к началу исходного кода языка Си, так как любой исходный код языка Си, после которым следует следует данная директива, будет компилиро- ваться дважды: один раз в обычном режиме, а другой раз в режиме Си -> Ассемблер. Встроенный код Турбо Ассемблера Встроенный код Ассемблера может находиться в сегменте кода или сегменте данных Турбо Си. Код Ассемблера, размещенный в функ- ции, ассемблируется в сегмент кода Турбо Си, а встроенный код, размещенный вне функции, ассемблируется в сегмент данных Турбо Си. Например, программа: // Таблица квадратов значений asm SquareLookUpTable label word; asm dw 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100; // Функция для поиска квадрата значения между 0 и 10 int LookUpSquare(int Value) { asm mov bx,Value; // получить значение для возведения в квадрат asm shl bx,1; // умножить на 2 для поиска в таблице элементов размером в слово asm mov ax,[SquareLookUpTable+bx]; // поиск в таблице return(_AX); } помещает данные для таблицы SquareLookUpTable в сегмент данных Турбо Си, а встроенный код Ассемблера в LookUpTable в сегмент кода Турбо Си. С равным успехом данные можно было бы поместить в сегмент кода. Рассмотрим следующую версию LookUpSquare, где SquareLookUpTable находится в сегменте кода Турбо Си: int LookUpSquare(int Value) { asm jmp SkipAroundData /* пропустить таблицу данных */ asm SquareLookUpTable label word; asm dw 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100; SkipAroundData: asm mov bx,Value; asm shl bx,1; asm mov ax,[SquareLookUpTable+bx]; return(_AX); }
- 5 - Так как SquareLookUpTable находится в таблице кода Турбо Си, то чтобы из нее можно было считывать, казалось бы требуется ис- пользовать префикс переопределения сегмента CS:. Фактически для доступа к SquareLookUpTable данный код автоматически ассемблиру- ется с префиксом CS:. Турбо Си генерирует корректный код Ассем- блера, чтобы Турбо Ассемблер знал, к каком сегменте находится SquareLookUpTable, а Турбо Ассемблер затем генерирует необходимые префиксы переопределения сегментов. Формат встроенных операторов на языке Ассемблера Встроенные операторы на языке Ассемблера во многом похожи на обычные строки Ассемблера, но начинаются с ключевого слова asm. Точка с запятой в отличие от других операторов Си в опера- торах встроенного Ассемблера не является обязательной, хотя она может использоваться для их завершения. Комментировать код встроенного Ассемблера можно только с помощью комментариев Си. В поле операнда могут содержаться ссылки на символические имена и на переменные Си. Обращение к элементам структуры/объединения Встроенный код Ассемблера может ссылаться непосредственно на элементы структуры. Например, в следующем фрагменте программы: . . struct Student { char Teacher[30]; int Grade; } JohnQPublic; . . asm mov ax,JohnQPublic.Grade; . . в регистр AX загружается содержимое элемента Grade структуры JohnQPublic типа Student. Встроенный код Ассемблера может также обращаться к элементам структуры, адресуясь к ним относительно базового или индексного регистра. Например: asm mov bx,OFFSET JohnQPublic; asm mov ax,[bx].Grade; . - 6 - Здесь в регистр AX также загружается элемент Grade структуры JohnQPublic. Поскольку Grade находится в структуре Student по смещению 30, последний пример на самом деле принимает вид: asm mov bx,OFFSET JohnQPublic; asm mov ax,[bx]+30 Возможность обращаться к элементам структуры относительно регистра-указателя является достаточно мощным средством, позволя- ющим во встроенном коде Ассемблера работать с массивами и струк- турами и использовать указатели на структуры. Ограничения адресации к операндам в памяти Единственное изменение, которое Турбо Си вносит в операторы встроенного Ассемблера, состоит в преобразовании ссылок на память и адреса памяти (например, имен переменных и адресов перехода) из их представления в Си в соответствующий эквивалент на Ассемблере. Такие изменения налагают два ограничения: в инструкциях перехода встроенного Ассемблера можно ссылаться только на метки Си, а в прочих инструкциях можно ссылаться на что угодно, кроме меток языка Си. Заметим, что вызов подпрограммы не считается переходом, поэтому в качестве операндов при вызове функции Си в инструкции встроенного Ассемблера можно указывать имена функций Си и метки Ассемблера, но не метки Си. Если в коде встроенного Ассемблера имеется ссылка на имя функции Си, то перед именем функции должен указываться символ подчеркивания. Размер динамических локальных переменных Когда Турбо Си заменяет в операторе встроенного Ассемблера ссылку на динамическую локальную переменную операндом вида [BP-02], он не помещает в измененный оператор операцию назначения размера (типа WORD PTR или BYTE PTR). Поэтому при обращении к динамической локальной переменной, когда в качестве источника или приемника используется ячейка памяти, нужно указывать размер опе- ранда. Пример: int i; asm mov WORD PTR i,0; asm inc WORD PTR i; Необходимость сохранения регистров В конце каждого используемого вами кода встроенного Ассем- блера регистры BP, CS, DS и SS должны содержать те же значения, которые они имели перед началом выполнения кода встроенного
- 7 - Ассемблера. Несоблюдение этого правила часто будет приводить к аварийному завершению программы и перезагрузкам системы. Регистры AX, BX, CX, DX, SI, DI, ES и флаги в коде встроенного Ассемблера можно свободно изменять.
_СПОСОБЫ ПЕРЕДАЧИ ПАРАМЕТРОВ В ПОДПРОГРАММЫ При организации подпрограмм важно выбрать правильный способ передачи параметров. Для микропроцессорных систем разработано несколько таких способов. Передача параметров через глобальную область данных Понятие общих (глобальных) данных относится к данным, храни- мым в тех ячейках памяти, к которым могут обращаться и вызывающая программа, и подпрограмма. Для этого и программа, и подпрограмма должны знать адрес глобальной области. Этот способ применяется для передачи данных большого объема, но имеет определенные огра- ничения при совместном использовании ассемблера и языков высокого уровня: объем области глобальных данных не должен превышать 64К байт. Передача параметров через регистры Небольшой объем данных может быть передан через регистры общего назначения AX, BX, CX, DX, SI, DI, BP и SP, а также через сегментные регистры DS и ES - всего 10 регистров, через которые можно передать 20 байт информации. Этот способ обеспечивает мак- симальную эффективность при работе с небольшими объемами данных, так как процессор работает с регистрами значительно быстрее, чем с памятью. Основной недостаток данного способа заключается в жестких ограничениях на число передаваемых параметров. Рассмотрим участок кода программы, в котором выполняется вызов подпрограммы сложения двух целых чисел с передачей парамет- ров в регистрах AX и BX. Подпрограмма возвращает результат сложе- ния в регистре AX. Фрагмент кода основной программы: . . mov AX,17 mov BX,7021 call Addition . . Код подпрограммы:
- 8 - Addition proc near add AX,BX ret Addition endp Передача параметров через специально выделенную область памяти Передача параметров может осуществляться через специально выделенную область памяти, называемую областью параметров. Вызы- вающая программа перед вызовом подпрограммы записывает данные в последовательных ячейках области параметров. Затем начальный адрес этой области передается в подпрограмму через регистры, глобальную область данных или через стек. Иногда передавать пара- метры в смежных ячейках памяти по каким либо причинам неудобно. В таких ситуациях целесообразно передавать подпрограмме адрес таблицы, содержащей адреса параметров, либо поместить эту таблицу в глобальную область памяти. Передача параметров через сегмент кода Когда программа хранится в ПЗУ, можно разместить область параметров в сегменте кода сразу после команды CALL, а начальный адрес этой области передавать через стек. Когда выполняется команда CALL, адрес возврата, фактически являющийся адресом пер- вого параметра, включается в стек, а управление передается первой команде подпрограммы. Подпрограмма может извлечь из стека этот адрес, последовательно считать параметры, произвести необходимые операции и затем, перед вызовом команды RET модифицировать в сте- ке адрес возврата так, чтобы он указывал не на область парамет- ров, а на следующую команду программы. Этот способ применяется крайне редко, так как требует либо применения префикса замены сегмента DS на CS при считывании пара- метров, либо использования так называемой "малой модели памяти", обеспечивающей совпадение сегментов CS и DS. Передача параметров через стек Передача параметров через стек удобна и широко применяется в языках высокого уровня. Вызывающая программа загружает передавае- мые параметры в стек перед выполнением команды CALL. Вызываемая подпрограмма получает указатель стека в регистрах SS и SP, а затем копирует содержимое регистра SP в BP и использует адреса- цию относительно регистровой пары SS:BP для считывания параметров из стека. Копирование SP в BP необходимо, так как указатель стека может изменяться и в самой подпрограмме. После возврата из под- программы вызывающая программа должна удалить параметры из стека, изменив содержимое SP.
- 9 - Рассмотрим пример передачи через стек двух 16-разрядных чисел в подпрограмму, которая выполняет их сложение и возвращает результат в регистре AX. Фрагмент кода основной программы: . . mov ax,112 push ax mov ax,361 push ax call Addition . . Код подпрограммы: Addition proc near push bp ; сохранить содержимое BP mov bp,sp mov ax,word ptr [bp+4] add ax,word ptr [bp+6] pop bp ; восстановить содержимое BP ret 4 ; удалить параметры из стека Addition endp Данная подпрограмма может быть оформлена и без использования регистрс BP: Addition proc near mov ax,word ptr [sp+2] add ax,word ptr [sp+4] ret 4 Addition endp ВТОРОЙ СЕМЕСТР СЕМИНАР N 9 2СИСТЕМНЫЕ ШИНЫ ПЭВМ СЕРИИ IBM AT Стандартная шина ISA (AT-bus) является 16-разрядной и рабо- тает на частоте 8 МГц: --------------¬ -------------¬ ¦ Процессор и ¦ ¦ Подсистема ¦ ¦ кэш-память ¦=============T=============¦ ОЗУ ¦ L-------------- ¦ L------------- -------¦-----¬ ¦ Микросхемы ¦ ¦ интерфейса ¦ ¦ шины ISA ¦ L------T------ ¦ Стандартная 8 МГц ¦ 16-разрядная шина ISA г========T========+========T========¬ ---¦--¬ ---¦--¬ ---¦--¬ ---¦--¬ ---¦--¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------ L------ L------ L------ L------ Контроллеры периферийных устройств Процессоры 386 и 486 являются 32-разрядными и работают с внешней тактовой частотой 20, 25, 33 или 40 МГц, а по шине ISA 32-битные данные будут передаваться 16-битными блоками с частотой всего 8 МГц, т.е. имеет место резкое замедление скорости обмена данными между процессором и ПУ. Наиболее высокой скорости передачи данных требуют две под- системы ПЭВМ: видеосистема и накопители на жестких дисках. Для обеспечения эффективной работы этих подсистем было разработано несколько технологий построения "локальной шины" (Local Bus), из которых в настоящее время используются две: - VESA local bus (VLB), разработанная ассоциацией Video Electronic Standarts Association: - Peripherial Component Interconnect (PCI), разработанная фирмой Intel. Особенность технологии Local Bus состоит в том, что высокос- коростные ПУ не связаны с системной шиной, а подключаются напря- мую к процессору, работают на полной частоте процессора и обмени- ваются 32-битными блоками данных. . - 2 - Шина VL-bus имеет следующую структуру: --------------¬ -------------¬ ¦ Процессор и ¦ ¦ Подсистема ¦ ¦ кэш-память ¦=============T=============¦ ОЗУ ¦ L-------------- ¦ L------------- -------¦-----¬ ¦ VL-bus ¦ ¦ контроллер ¦ L------T------ 32-разрядная шина VL-bus ¦ (25-40 МГц) г=============T===========+===========¬ ------¦----¬ ------¦----¬ ----¦---¬ -----¦-----¬ ¦ Видео- ¦ ¦ Дисковый ¦ ¦Сетевая¦ ¦Контроллер¦ ¦контроллер¦ ¦контроллер¦ ¦ плата ¦ ¦ ISA ¦ L----------- L----------- L-------- L----T------ ¦ Стандартная ¦ 8 МГц 16-разрядная ¦ шина ISA г========T========+========¬ ---¦--¬ ---¦--¬ ---¦--¬ ---¦--¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------ L------ L------ L------ Контроллеры периферийных устройств Достоинством VLB является относительная простота конструкции и высокая пропускная способность (до 132 Мбайт/с на частоте 33 МГц). Недостатками VLB является низкая нагрузочная способность (2-3 контроллера ПУ) и ограничение по тактовой частоте (на часто- тах выше 33 МГц в работе шины возникают задержки). После появления процессора Pentium ассоциация VESA приступи- ла к работе над новым стандартом VL-bus. Он предусматривает ис- пользование 64-разрядной шины данных, увеличение числа разъемов расширения (до 5) и повышение рабочей частоты до 50 МГц. Ожидае- мая скорость передачи теоретически должна возрасти до 400 Мб/с. Спецификация PCI позволяет обеспечить большую гибкость и быстродействие шины, но предполагает значительные аппаратные зат- раты, что увеличивает стоимость системной платы. Поэтому шина PCI применяется только в старших моделях ПЭВМ (с процессорами 486DX4 и Pentium). К шине PCI можно подключить до 10 ПУ, но разъемов расширения при этом можно использовать не более трех: каждая плата расшире- ния PCI может разделяться между двумя ПУ, и несколько ПУ можно разместить на самой системной плате (так называемые встроенные контроллеры). Шина PCI является процессорно-независимой (т.е. ис- пользуется не только с процессорами фирмы Intel). Она может ис- пользовать 124 контактный разъем (с 32-разрядной шиной данных)
- 3 - или 188-контактный разъем (с 64-разрядной шиной данных), при этом теоретически возможная скорость обмена составляет соответственно 132 и 264 Мбайт/с. Шина PCI имеет следующую структуру: --------------¬ -------------¬ ¦ Процессор и ¦ ¦ Подсистема ¦ ¦ кэш-память ¦=T=====================T===¦ ОЗУ ¦ L-------------- ¦ ¦ L------------- ¦ ¦ ------¦------¬ -----¦-----¬ ¦ Контроллер ¦ ¦Контроллер¦ ¦ PCI ¦ ¦ ISA ¦ L-----T------- L----T------ 32-разрядная шина ¦ PCI (33 МГц) ¦ Стандартная 8 МГц г===========T=¦=======¬ ¦16-разрядная шина ISA ------¦----¬------¦----¬----¦---¬ г===¦==T======T======¬ ¦ Видео- ¦¦ Дисковый ¦¦Сетевая¦ ---¦--¬---¦--¬---¦--¬---¦--¬ ¦контроллер¦¦контролле𦦠плата ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ L-----------L-----------L-------- L------L------L------L------ Контроллеры периферийных устройств
КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ Прямой доступ к памяти (Direct Memory Access - DMA) исполь- зуется для выполнения операций передачи данных непосредственно между оперативной памятью и устройствами ввода/вывода. Обычно это такие устройства, как НГМД, НЖМД, кассетные накопители на магнит- ной ленте КНМЛ (стриммеры). При использовании ОМА процессор не участвует в операциях ввода/вывода, контроллер прямого доступа сам формирует все сигна- лы, необходимые для обмена данными с устройством. Скорость такого непосредственного обмена значительно выше, чем при традиционном вводе/выводе с использованием центрального процесора и команд INP, OUT.
Контроллер прямого доступа IBM PC/XT Контроллер прямого доступа для IBM PC/XT реализован на базе микросхемы Intel 8237A и содержит четыре канала. Эти каналы ис- пользуются следующим образом: 0 - обновление содержимого динамической памяти компьютера, этот канал имеет наивысший прморитет; 1 - не используется; 2 - адаптер НГМД; 3 - адаптер НЖМД. Канал 0 имеет наивысший приоритет, канал 3 - низший.
Регистры каналов DMA Каждый канал содержит 16-разрядные регистры: - регистр текущего адреса CAR, содержит текущий адрес ячейки памяти при выполнении операции обмена данными с использо- ванием DMA; - регистр циклов прямого доступа к памяти CWR, содержит чис- ло слов, предназначенных для передачи минус единица; при выполнении обмена данными регистр работает в режиме вычи- тания; - регистр хранения базового адреса BAR, используется для хранения базового адреса памяти, используемого при переда- че данных; в процессе работы канала DMA содержимое этого регистра не изменяется; - регистр хранения базового числа циклов прямого досту к па- мяти WCR; он хранит число циклов DMA, его содержимое также не изменяется; - регистр режима MR, определяющий работу канала. Приведем адреса регистров и их форматы для компьютера IBM PC/XT. Порты 00h - 07h Эти регистры содержат базовые адреса и счетчики передаваемых данных каналов О - 3. Их назначение следующее: 00h Запись: Базовый адрес канала О Чтение: Текущий адрес 01h Запись: Счетчик канала О Чтение: Текущий адрес 02h Запись: Базовый адрес канала 1 Чтение: Текущий адрес 03h Запись: Счетчик канала 1 Чтение: Текущий адрес 04h Запись: Базовый адрес канала 2 Чтение: Текущий адрес 05h Запись: Счетчик канала 2 Чтение: Текущий адрес 06h Запись: Базовый адрес канала 3 Чтение: Текущий адрес 07h Запись: Счетчик канала 3 Чтение: Текущий адрес
Порт 08h Этот порт используется при записи в качестве управляющего регистра и при чтении как регистр состояния. Формат управляющего регистра: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L- 1 - использование режима память-память; ¦ ¦ ¦ ¦ ¦ ¦ ¦ 0 - обычный режим работы ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--- если используется режим память-память,то 1 ¦ ¦ ¦ ¦ ¦ ¦ этом разряде разрешает захват канала, ¦ ¦ ¦ ¦ ¦ ¦ 0 - запрещает; в обычном режиме работы ¦ ¦ ¦ ¦ ¦ ¦ состояние этого бита безразлично ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L----- 1 - запрет работы DMA; ¦ ¦ ¦ ¦ ¦ 0 - разрешение работы DMA ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------- 1 - использование сжатия во времени, если ¦ ¦ ¦ ¦ установлен бит обычного режима работы; ¦ ¦ ¦ ¦ 0 - обычный режим работы ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--------- 1 - вращение приоритетов: ¦ ¦ ¦ 0 - фиксированные приоритеты ¦ ¦ ¦ ¦ ¦ L----------- 1 - удлиненный цикл записи; ¦ ¦ 0 - нормальный цикл записи ¦ ¦ ¦ L------------- 1 - используется низкий уровень для ¦ сигнала запроса на DMA DREQ; ¦ 0 - используется высокий уровень ¦ L--------------- 1 - используется высокий уровень для сигнала запроса на DMA DACK; 0 - используется низкий уровень Обычно этот регистр инициализируется BIOS в процессе тести- рования системы, и впоследствии изменять режим работы контроллера DMA не требуется. Ошибки при инициализации этого порта могут при- вести к "зависанию" системы. При чтении из порта 08h программа получает слово состояния контроллера DMA: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ L-+-+-+-+-+-+-+-- L--T--- L-----+- Биты 0-3 устанавливаются в 1 при достижении ¦ счетчиками каналов 0-3 конечных значений ¦ L------------ Биты 4-7 установлены в 1, если имеется разрешение на DMA соответственно каналов 0-3
Порт 09h Регистр запроса. Предназначен для организации программного (а не аппаратного) запроса на DMA. Для использования программного запроса канал должен быть запрограммирован в режиме блочной пере- дачи. Формат регистра: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ L-+-+-+-+-+T+-+-- L---T---- ¦ L-+- Номер используемого канала: ¦ ¦ 00 - канал О; 10 - канал 2; ¦ ¦ 01 - канал; 11 - канал 3 ¦ ¦ ¦ L----- 0 - установить запрос; 1 - сбросить запрос ¦ L----------- Не используются.
Порт 0Ah Регистр маски. Используется для маскирования запросов на прямой доступ для отдельных каналов: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ L-+-+-+-+-+T+-+-- L---T---- ¦ L-+- Номер канала: ¦ ¦ 00 - канал О; 10 - канал 2; ¦ ¦ 01 - канал; 11 - канал 3 ¦ ¦ ¦ L----- 0 - установить маску; 1 - сбросить маску ¦ L----------- Не используются.
Порт 0Bh Регистр режима. Служит для определения режимов работы калов контроллера DMA: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+T+T+-+-+-+-- LT- ¦ ¦ LT- L-+- Номер канала: ¦ ¦ ¦ ¦ 00 - канал О; 10 - канал 2; ¦ ¦ ¦ ¦ 01 - канал; 11 - канал 3 ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------ Тип цикла DMA: ¦ ¦ ¦ 00 - цикл проверки; ¦ ¦ ¦ 01 - цикл записи; ¦ ¦ ¦ 10 - цикл чтения; ¦ ¦ ¦ 11 - запрещеннная комбинация. ¦ ¦ ¦ ¦ ¦ L--------- 1 - режим автоинициализации ¦ ¦ ¦ L----------- Приращение адреса: ¦ 0 - инкрементирование, 1 декрементирование ¦ L-------------- Режим обслуживания 00 - передача по требованию; 01 - одиночная передача; 10 - блочнная передача; 11 - каскадирование
Порт 0Ch Сброс триггера байтов. Для загрузки внутренних 16-разрядных регистров контроллера используется последовательный вывод младше- го, затем старшего байтов слова. После сброса триггера байтов можно начинать загрузку 16-разрядных регистров.
Порт 0Dh Запись в этот порт вызывает сброс контроллера. Для дальней- шего использования контроллер должен быть заново проинициализиро- ван. Порт 0Eh Сброс регистра маски. После записи в этот регистр любого значения разрешается работа всех четырех каналов прямого доступа.
Порт 0Fh Маскирование/размаскирование каналов. С помощью этого порта можно выполнить одновременное маскирование или размаскированис нескольких каналов: 7 6 5 4 З 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+T+T+T+T- L--T--- ¦ ¦ ¦ L- 1 - маскирование канала 0; ¦ ¦ ¦ ¦ 0 - разрешение канала 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--- 1 - маскирование канала 1; ¦ ¦ ¦ 0 - разрешение канала 1 ¦ ¦ ¦ ¦ ¦ L----- 1 - маскирование канала 2: ¦ ¦ 0 - разрешение канала 2 ¦ ¦ ¦ L------- 1 - маскирование канала 3: ¦ 0 - разрешение канала 3 ¦ L------------ Не используются
Порты 81h-8Fh Это порты регистров страниц. Для работы с памятью контроллер прямого доступа использует 20-разрядные физические адреса. Шестнадцать младших битов адреса необходимо записать в регистр базового адреса канала. Старшие че- тыре бита - биты 16-10 должны быть записаны в соответствующие порты регистров страниц. При инициализации регистров базового ад- реса и регистра страниц необходимо следить за тем, чтобы в про- цессе передачи данных не происходил переход за границу 64 кило- байт. Для адресации регистров страниц можно использовать порты: 81h Регистр страниц канала 2 82h Регистр страниц канала 3 83h Регистр страниц канала 1 9.1.2. Инициализация канала DMA Для инициализации канала программа должна выполнить следую- щие шаги: - сбросить триггер байтов командой записи в регистр 0Ch; - задать режим работы канала, выполнив запись по адресу 0Bh в регистр режима MR; - заслать младшие 16 битов 20-битового адреса области па- мяти, которая будет использована для передачи данных, в регистр базового адеса (адрес порта зависит от номера ка- нала: 0-й канал использует адрес 00h, 1-й канал - 02h, 2-и канал - 04h, З-й канал - 06h); - заслать номер страницы (старшие 4 бита 20-битового адре- са) в соответствующий регистр страниц (81h, 82h или 83h); - загрузить регистр циклов прямого доступа к памяти CWR значением, на 1 меньшим требуемого количества переда- ваемых байтов (адреса этих портов для каналов 0...3 соот- ветственно 01h, 03h, 05h, 07h); - разрешить работу канала, выполнив запись в регистр маски каналов по адресу 0Ah. Сразу после разрешения канал начинает передачу данных. Окон- чив передачу, устройство обычно вырабатывает прерывание, которое служит признаком окончания передачи данных.
9.2. Контроллер прямого доступа для IBM AT Контроллер DMA компьютера IBM AT совместим снизу вверх с контроллером IBM PC/XT. Он состоит из двух каскадно включенных микросхем Intel 8237A-5. Второй контроллер обслуживает каналы DMA с номерами 4-7. Приведем назначение каналов DMA для IBM AT: 0 - Зарезервировано 1 - Управление синхронной передачей данных SDLC 2 - Адаптер накопителя на гибком магнитном диске (НГМД) 3 - Адаптер накопителя на магнитном диске (НЖМД); 4 - Используется для каскадного соединения с первым контроллером DMA. 5-6 Зарезервировано Другое отличие - это разрядность каналов. Каналы 0-3 являют- ся каналами 8-битовой передачи данных, а каналы 4-7 обеспечивают 16-битовую передачу данных. В связи с этим используются все 8 би- тов регистров страниц. Формируется 24-битовый адрес из 16 младших битов адреса, записываемых в базовые регистры, и 8 старших битов адреса, записываемых в регистры страниц. Размер страницы составляет 128 килобайт, поэтому при переда- че данных с использованием DMA не должна пересекаться граница 128 килобайт. Приведем назначение и адреса регистров страниц контроллера для IBM AT: 81h - Регистр страниц канала 2 82h - Регистр страниц канала 3 83h - Регистр страниц канала 1 87h - Регистр страниц канала 0 89h - Регистр страниц канала 6 8Bh - Регистр страниц канала 5 8Ah - Регистр страниц канала 7 8Fh - Регенерация динамической памяти Для 16-битовых каналов 4-7 передача данных начинается с гра- ницы слова и все адреса относятся к 16-битовым словам. Порты 0C0h-0CFh Эти регистры содержат базовые адреса и счетчики передаваемых данных каналов 4-7. Их назначение следующее: 0C0h - Запись: Базовый адрес канала 4 Чтение: Текущий адрес 0C2h - Запись: Счетчик канала 4 Чтение: Текущий адрес 0C4h - Запись: Базовый адрес канала 5 Чтение: Текущий адрес 0C6h - Запись: Счетчик канала 5 Чтение: Текущий адрес 0C8h - Запись: Базовый адрес канала 6 Чтение: Текущий адрес 0CAh - Запись: Счетчик канала 6 Чтение: Текущий адрес 0CCh - Запись: Базовый адрес канала 7 Чтение: Текущий адрес 0CEh - Запись: Счетчик канала 7 Чтение: Текущий адрес Порты 0D0h-0DFh Это управляющие порты и порты состояния второй микросхемы 8237A-5. По формату и назначению они соответствуют рассмотренным ранее для контроллера DMA компьютеров IBM PC/XT: 0D0h - Управляющий регистр/регистр состояния 0D2h - Регистр запроса 0D4h - Регистр маски 0D6h - Регистр режима 0D8h - Сброс триггера байтов 0DAh - Сброс контроллера 0DCh - Сброс регистра маски 0DEh - Маскирование/размаскирование каналов РЕГИСТРЫ КОНТРОЛЛЕРА VGA Рассматриваемые ниже регистры VGA часто используются программистами для прямого управления контроллером в обход операционной системы, так как использованние функций DOS замедляет некотороые операции передачи данных в тысячи раз.
НАИМЕНОВАНИЕ РЕГИСТРА: INPUT STATUS REGISTER ONE АДРЕС ПОРТА: 3BAh Monochrome Mode Read Only 3DAh Color Mode Read Only ------------------------------------------------------------¬ ¦ INPUT STATUS REGISTER ONE ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-------- Display Enable ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L----------- Light Pen Strobe ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-------------- Light Pen Switch ¦ ¦ ¦ ¦ ¦ ¦ L----------------- Vertical Retrace ¦ ¦ ¦ ¦ ¦ L-------------------- Diagnostic 1 ¦ ¦ ¦ ¦ L----------------------- Diagnostic 2 ¦ ¦ L--+-------------------------- Not Used ¦ L------------------------------------------------------------ DISPLAY ENABLE: D0 1 Указывает на то,что дисплей отключен. Это происходит во время обратного хода по строке или кадру. Система Мulti Function Video Controller имеет арбитраж процессор/video RAM, поэтому обновление video RAM может быть произведено в любое время, не вызывая при этом разрушения отображаемого образа [изображения] LIGHT PEN STROBE: D1 1 Указывает, что установлена схема-защелка светового пера. 0 Указывает, что схема-защелка светового пера возвращена в исходное положение. LIGHT PEN SWITCH: D2 1 Указывает, что переключатель светого пера разомкнут. 0 Указывает, что переключатель светового пера замкнут. VERTICAL RETRACE: D3 1 Указывает на то, что СRT находится в промежутке обратного хода по кадру. 0 Указывает, что CRT находится в промежутке дисплея. DIAGNOSTIC 1,0: D5 D4 Эти два бита идут от двух из шести color output атрибутного контроллера. Биты D5 и D4 регистра Color Plane Enable атрибутного контроллера определяют, какой Сolor Output используется. Color Plane Input Status Register Register One D5 D4 D5 D4 0 0 Red Blue 0 1 S.Red S.Green 1 0 S.Blue Green 1 1 Not Used Not Used . SEQUENCER: НАИМЕНОВАНИЕ РЕГИСТРА: EGA SEQUENCER INDEX АДРЕС ПОРТА: 3C4h Write Only ------------------------------------------------------------¬ ¦ EGA SEQUENCER INDEX ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--- Sequencer Index ¦ ¦ L--+--+--+--+------------ Not Used ¦ L------------------------------------------------------------ SEQUENCER INDEX: D2 D1 D0 Двоичный адрес нужного регистра при 3C5h 0 0 0 00h Reset Register 0 0 1 01h Clocking Mode Register 0 1 0 02h Map Mask Register 0 1 1 03h Character Map Select Register 1 0 0 04h Memory Mode Register 1 X X Все другие комбинации не обеспечиваются
MAP MASK: ------------------------------------------------------------¬ ¦ INDEX = 02h MAP MASK ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--- Enable Plane 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------ Enable Plane 1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--------- Enable Plane 2 ¦ ¦ ¦ ¦ ¦ ¦ L------------ Enable Plane 3 ¦ ¦ L--+--+--+--------------- Not Used ¦ L------------------------------------------------------------ ENABLE PLANE: D3,D2,D1,D0 Каждый бит разрешает процессору записи в соответствующую матрицу видеопамяти. Одновременные записи производятся в том случае, когда когда на высшем уровне находится более одного бита(1). Матрицы 0-1 и 2-3 в режиме ODD/EVEN (выбранном регистром Memory Mode D2) должны иметь одно и то же значение маски карты. . НАИМЕНОВАНИЕ РЕГИСТРА: CRTC INDEX АДРЕС ПОРТА: 3B0h, 3B2h, 3B4h, or 3B6h MONOCHROME MODE Write Only 3D0h, 3D2h, 3D4h or 3D6h COLOR MODE Write Only ------------------------------------------------------------¬ ¦ CRTC INDEX ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--- CRTC Data Index ¦ ¦ L--+--+------------------ Special Function ¦ L------------------------------------------------------------ CRTC DATA INDEX: D4-D0 D4 D3 D2 D1 D0 ДОСТУП HEX R# REG.NAME 0 0 0 0 0 W 00h R0 Horizontal Total 0 0 0 0 1 W 01h R1 Horizontal Display End 0 0 0 1 0 W 02h R2 Start Horizont. Blanking 0 0 0 1 1 W 03h R3 End Horizontal Blanking 0 0 1 0 0 W 04h R4 Start Horizontal Retrace 0 0 1 0 1 W 05h R5 End Horizontal Retrace 0 0 1 1 0 W 06h R6 Vertical Total 0 0 1 1 1 W 07h R7 CRTC Overflow 0 1 0 0 0 W 08h R8 Preset Row Scan 0 1 0 0 1 W 09h R9 Maximum Scan Line 0 1 0 1 0 W 0Ah RA Cursor Start 0 1 0 1 1 W 0Bh RB Cursor End 0 1 1 0 0 R/W 0Ch RC Start Address High 0 1 1 0 1 R/W 0Dh RD Start Address Low 0 1 1 1 0 R/W 0Eh RE Cursor Location High 0 1 1 1 1 R/W 0Fh RF Cursor Location Low 1 0 0 0 0 W 10h R10 Vertical Retrace Start 1 0 0 0 0 R 10h R10 Light Pen High 1 0 0 0 1 W 11h R11 Vertical Retrace End 1 0 0 0 1 R 11h R11 Light Pen Low 1 0 0 1 0 W 12h R12 Vertical Display End 1 0 0 1 1 W 13h R13 Offset 1 0 1 0 0 W 14h R14 Underline Location 1 0 1 0 1 W 15h R15 Start Vertical Blanking 1 0 1 1 0 W 16h R16 End Vertical Blanking 1 0 1 1 1 W 17h R17 Mode Control 1 1 0 0 0 W 18h R18 Line Compare SPECIAL FUNCTION: D7,D6,D5 Эти три бита используются .
CURSOR START : Только запись. ------------------------------------------------------------¬ ¦ INDEX = 0Ah CURSOR START ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--- ROW Scan Cursor Begins ¦ ¦ L--+--+------------------ Not Used ¦ L------------------------------------------------------------ ROW SCAN CURSOR BEGINS: D4-D0 Курсор появляется, когда счет строк равен содержимому регистра,а адрес дисплея указывается такой, который равен содержимому регистров OEh и OFh. CURSOR END: Только запись -------------------------------------------------------------¬ ¦ INDEX = 0Bh CURSOR END ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+- Row Scan Cursor Ends ¦ ¦ ¦ L--+---------------- Cursor Skew Control ¦ ¦ L---------------------- Not Used ¦ L------------------------------------------------------------- ROW SCAN CURSOR ENDS: D4-D0 Если счет строк будет равен или превышает содержимое этого регистра , то отображения курсора на дисплее не будет . CURSOR SKEW CONTROL: D6 D5 Значение, запрограммированное в этом регистре определяет перекос курсора, измеренный в character clocks. 0 0 Задержки курсора нет. 0 1 Курсор задерживается на один character clock. 1 0 Курсор задерживается на два character clocs . 1 1 Курсор задерживается на три character clocs.
START ADDRESS HIGH: Чтение / Запись. ------------------------------------------------------------¬ ¦ INDEX = 0Ch START ADDRESS HIGH ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--+--+--+--- High Order Start Address ¦ L------------------------------------------------------------ Зто восемь высоких битов 16-ти битового регистра, которые используются для определения начального адреса экранного буфера дисплея.
START ADDRESS LOW: Чтение / Запись ------------------------------------------------------------¬ ¦ INDEX = 0Dh START ADRESS LOW ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--+--+--+--- Low Order Start Address ¦ L------------------------------------------------------------ Это восемь младших битов 16-ти битового регистра , используемые для определения начального адреса экранного буфера дисплея .
CURSOR LOCATION HIGH: Чтение/ Запись. ------------------------------------------------------------¬ ¦ INDEX = 0Eh CURSOR LOCATION HIGH ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--+--+--+--- High Order Cursor Location ¦ L------------------------------------------------------------ Это восемь старших битов 16-битового адресного регистра, используемые для определения положения курсора в видеопамяти.
CURSOR LOCATION LOW: Чтение/Запись. ------------------------------------------------------------¬ ¦ INDEX = 0Fh CURSOR LOCATION LOW ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--+--+--+--- Low Order Cursor Location ¦ L------------------------------------------------------------ Это восемь младших битов 16-битового адресного регистра, используемые для определения положения курсора в видеопамяти.
OFFSET: Только запись. ------------------------------------------------------------¬ ¦ INDEX = 13h OFFSET ¦ +-----------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--+--+--+--+--+--+--+--- Logical Line Width ¦ L------------------------------------------------------------ Этот регистр содержит значение , используемое для смещения счетчика адресов памяти к началу следующей отображаемой текстовой строки. Это значение представляет собой слова или двойные слова , в зависимости от CRTC clocking mode, в одной текстовой строке.
LINE COMPARE: Только запись. -------------------------------------------------------------¬ ¦ INDEX = 18h LINE COMPARE ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-+-+----- Line Compare Value ¦ L------------------------------------------------------------- Это 8 младших битов 9-ти битового регистра Line Compare. Бит 8 находится в регистре переполнения CRTC. Адрес памяти дисплея установится в положение 0 в начале следующих двух строк после того, как число отображенных на дисплее строк станет равным содержимому этого регистра. .
НАИМЕНОВАНИЕ РЕГИСТРА: GRAPHICS 1 AND 2 ADDRESS АДРЕС ПОРТА: 3CEh только запись -------------------------------------------------------------¬ ¦ GRAPHICS 1 AND 2 ADDRESS ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+----- Graphics Address ¦ ¦ L-+-+-+------------- Not Used ¦ L------------------------------------------------------------- GRAPHICS ADDRESS: D3 D2 D1 D0 Hex Register Name 0 0 0 0 00 Set/Reset 0 0 0 1 01 Enable Set/Reset 0 0 1 0 02 Color Compare 0 0 1 1 03 Data Rotate 0 1 0 0 04 Read Msp Select 0 1 0 1 05 Mode 0 1 1 0 06 Miscellaneous 0 1 1 1 07 Color Don't Care 1 0 0 0 08 Bit Mask
НАИМЕНОВАНИЕ РЕГИСТРА: GRAPHICS CONTROLLER DATA АДРЕС ПОРТА: 3CFh только запись SET/RESET: -------------------------------------------------------------¬ ¦ INDEX = 00h SET/RESET ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-+-+----- Refer to Mapping Table ¦ L------------------------------------------------------------- Активные положения битов в этом регистре приведены в разделах Mapping Table в начале этого раздела. Этот регистр разрешает или Возврат значений байта в четырех видеоплоскостях соответствующих битам в этом регистре : 1=Set байт, 0=Reset байт. Этот регистр является активным, когда Graphics Controller находится в положении Mode 0, а Enable Set/Reset активируется. Этот регистр эффективен только при записи в видеопамяти. . ENABLE SET/RESET: -------------------------------------------------------------¬ ¦ INDEX = 01h ENABLE SET/RESET ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-+-+----- Refer to Mapping Table ¦ L------------------------------------------------------------- Активные положения бита в этом регистре приведены в Mapping Table в начале этого раздела. Этот регистр контролирует активацию Set/Reset регистра. Программирование любого бита с logie 1 разрешает соответствующий бит в регистре Set/Reset . Logie 0 запрещает соответствующий бит Set/Reset, позволяя записать данные процессора без изменений. COLOR COMPARE: -------------------------------------------------------------¬ ¦ INDEX = 02h COLOR COMPARE ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-+-+----- Refer to Mapping Table ¦ L------------------------------------------------------------- Активные положения бита в этом регистре приведены в Mapping Table в начале этого раздела. Этот регистр определяет эталонный цвет для Read Mode1(см. Mode Register). В этом режиме, когда процессор считывает с памяти дисплея, байт возврата данных будет в положении 1 в каждом положении бита, где данные в 4 плоскостях памяти согласуются со значением в регистре Color Compare (см. таблицу ниже). Тестироваться будут только плоскости, разрешенные регистром Color Don't Care. Color Compare ----------------¬ Register -------+VRAM Plane 0 ¦ ¦ ¦1 1 0 1 1 0 1 0¦ --------¬ ¦ L---------------- C.P.U. ¦ Bit +------- ----------------¬ ----------------¬ ¦ +-------------+VRAM Plane 1 ¦ ¦ ¦ ¦ 0 = 1 ¦ ¦1 1 0 0 1 1 0 1¦ ¦0 1 0 0 1 0 0 0+------+ 1 = 1 ¦ L---------------- ¦ ¦ ¦ 2 = 0 ¦ ----------------¬ L---------------- ¦ 3 = 1 +-------------+VRAM Plane 2 ¦ ¦ 4 = X ¦ ¦1 0 1 1 0 1 1 0¦ Диаграмма показывает ¦ 5 = X ¦ L---------------- сравнение с GP A = 0, ¦ 6 = X ¦ ----------------¬ GP B = 1 ¦ 7 = X +-------------+VRAM Plane 3 ¦ ¦ 8 = X ¦ ¦1 1 1 1 1 0 1 1¦ L-------- L---------------- . DATA ROTATE: -------------------------------------------------------------¬ ¦ INDEX = 03h DATA ROTATE ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+----- Rotate Count ¦ ¦ ¦ ¦ ¦ L-+----------- Function Select ¦ ¦ L-+-+--------------- Not Used ¦ L------------------------------------------------------------- ROTATE COUNT: D2-D0 Загруженное 3 битовое двоичное значение определяет число положений бита для вращения данных процессора при записи в видеопамять нужно загрузить эти 3 бита как двоичное 0. Эта функция является Rotate Logie Right (см. таблицу ниже). ROTATE COUNT 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦X¦X¦X¦X¦X¦1¦0¦1¦ Count = 5h L-+-+-+-+-+-+-+-- CPU BUS VIDEO MEMORY 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ --T-T-T-T-T-T-T-¬ ----+0¦1¦0¦0¦1¦1¦0¦1+---¬ -----------> ¦0¦1¦1¦0¦1¦0¦1¦0¦ ¦ L-+-+-+-+-+-+-+-- ¦ L-+-+-+-+-+-+-+-- L-----------<------------ FUNCTION SELECT: D4 D3 Эти два бита используются для выбора логических функций аппаратных, которые можно предварительно форматировать между фиксатором данных памяти и любыми данными, выбранными регистром Write Mode. D4 D3 0 0 Данные без изменений. 0 1 Logical AND c фиксированными данными 1 0 Logical OR с фиксированными данными 1 1 Logical XOR с фиксированными данными. . READ MAP SELECT: -------------------------------------------------------------¬ ¦ INDEX = 04h READ MAP SELECT ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+----- Map Select ¦ ¦ L-+-+-+-+----------- Not Used ¦ L------------------------------------------------------------- MAP SELECT: D2-D0 Этот регистр используется для выбора Video Memory Plane, который будет считываться процессором. Этот регистр выбирает плоскости от 0 до 7, как запрограммированно в двоичном исчислении для операции чтения. Фактические положения плоскостей памяти контролируются Graphicr Position A u B. (GP A, GP B).
MODE: -------------------------------------------------------------¬ ¦ INDEX = 05h MODE ¦ +------------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+----- Write Mode ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--------- Not Used ¦ ¦ ¦ ¦ ¦ ¦ L----------- Read Mode ¦ ¦ ¦ ¦ ¦ L------------- Odd/Even ¦ ¦ ¦ ¦ L--------------- Shift Register Mode ¦ ¦ L-+----------------- Not Used ¦ L------------------------------------------------------------- . WRITE MODE: D1 D0 Эти два бита выбирают режим записи. Имеются три ценных режима записи, которые контролируют переход данных процессора в Video Planer. 0 0 Write Mode 0: Data Rotate,Logical Function u Set/Reset срабатывают в этом режиме. 0 1 Write Mode 1: Активные Video Memory Plane(s) записываются с содержимым фиксаторов данных 32- битового процессора,эти фиксаторы загружаются предыдущим считыванием процессора из видеопамяти. 1 0 Write Mode 2: В этом режиме положение бита, соответствующего адресу Video Plane (контролируемого GPA и GPB), используется как значение 8 бит записи в видеоплотность, например, Write Mode 2; Данные процессора - это ``10101100``. Видеоплотность 3 будет записываться с 8 битами(один байт) с таким же значением, как бит 3 данных процессора. D1 D0 1 1 Обычно эта комбинация не используется. Это то же самое, что Write Mode 1. READ MODE: D3 0 Этот процессор считывает данные из активной Video Memory Plane. 1 Разрешает Color Compare Register (подробности см. в Color Compare). ODD/EDEN: D4 0 Регистр выбора Read Plane контролирует, из какой плоскости процессор считывает данные. 1 Бит AO адреса процессора замещает бит 0 регистра Read Plane Select (см.Read Plane Select). Поэтому A 0 определяет, с какой плоскости будут считываться данные, с четной или нечетной. SHIFT REGISTER MODE: D5 Этот регистр контролирует, каким образом данные из Video Memory Planes смещаются в секцию палитры атрибутного контроллера в Graphics Mode. После каждого CRT считывания из видеопамяти в палитру может быть смещено до 16 бит. Нижеследующая таблица показывает порядок смещения видеоданных (P1 = Memory Plane 1 и т.д.) . D5 = 0: -----------T----------¬ ¦ P1 ¦ P0 ¦ COLOR Palette +----------+----------+ ¦ 01234567 ¦ 01234567 +-----¬ -------------¬ L----------+----------- ¦ ¦ ¦ ¦ ¦ ¦ -----------¬ ¦ ¦ ¦ ¦ P1 ¦ L------+ A0 ¦ -----------+----------+ ¦ ¦ ¦ 00000000 ¦ 01234567 +-----¬ ¦ ¦ L----------+----------- L------+ A1 ¦ ¦ ¦ ¦ ¦ -----------T----------¬ -------+ A2 ¦ ¦ P3 ¦ P2 ¦ ¦ ¦ ¦ +----------+----------+ ¦ ¦ ¦ ¦ 01234567 ¦ 01234567 +------ ¦ ¦ L----------+----------- -------+ A3 ¦ ¦ ¦ ¦ -----------¬ ¦ ¦ ¦ ¦ P3 ¦ ¦ L------------- -----------+----------+ ¦ ¦ 00000000 ¦ 01234567 +------ L----------+----------- D5 = 1: -----------T----------¬ ¦ P1 P0 ¦ P1 P0 ¦ COLOR Palette +----+-----+----+-----+ ¦1357¦ 1357¦0246¦0246 +-----¬ -------------¬ L----+-----+----+------ ¦ ¦ ¦ ¦ ¦ ¦ -----------¬ L------+ A0 ¦ ¦ P1 P0 ¦ ¦ ¦ -----T-----+----+-----+ ¦ ¦ ¦0000¦ 0000¦1357¦1357 +------------+ A1 ¦ L----+-----+----+------ ¦ ¦ ¦ ¦ -----------T----------¬ ¦ ¦ ¦ P3 P2 ¦ P3 P2 ¦ -------+ A2 ¦ +----+-----+----+-----+ ¦ ¦ ¦ ¦1357¦ 1357¦0246¦0246 +------ ¦ ¦ L----+-----+----+------ ¦ ¦ -------+ A3 ¦ -----T-----¬ ¦ ¦ ¦ ¦ P3 ¦ P2 ¦ ¦ ¦ ¦ -----T-----+----+-----+ ¦ L------------- ¦0000¦ 0000¦1357¦1357 +------ L----+-----+----+------ . COLOR DON`T CARE: ---------------------------------------------------------¬ ¦ INDEX = 07h Color Don't Care ¦ +--------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Refer to Mapping Table ¦ ¦ ¦ L--------------------------------------------------------- Активное наложение битов в этом регистре описаны в Mapping Table в начале этого раздела. Этот регистр взаимодействует только с Read Mode 1. Только А позволяет включить соответствующую Video Memory Plane в color compare (как изображено в таблицах GPA и GPB). BIT MASK: ---------------------------------------------------------¬ ¦ INDEX = 08h Bit Mask ¦ +--------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-+-+------ Bit Mask ¦ L--------------------------------------------------------- BIT MASK: 0 Это позволяет записать соответствующий бит в каждой плоскости памяти вместе с данными из фиксаторов процессора. Фиксаторы процессора загружаются Video memory чтения процессора. 1 Это позволяет соответствующий бит в плоскостях видеопамяти изменить выбранным режимом записи и данными CPU. . ATTRIBUTES CONTROLLER: ATTRIBUTE ADDRESS AND DATA: Регистры Attribute Address и Data являются регистрами только записи, которая занимает одни и те же адреса порта 1 0 (3C0h). Чтобы сначала выбрать регистр Attribute Address процессор должен считывать из адреса 1 0 3BAh или 3DAh. Это приводит в адресное состояние flip-flop выбора address/data. Запись в порты 3C0h с нужным атрибутным адресом позволяет выбрать этот регистр для последующей записи данных и переключает тригер выбора адреса/данных. Дополнительная запись переключает между адресом и данными в этом адресе порта. ATTRIBUTE ADDRESS: First Write to 3C0h -------------------------------------------------------¬ ¦ ATTRIBUTE ADDRESS ¦ +------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+-+---- Attribute Address ¦ ¦ ¦ ¦ L-------------- Palette Address Source ¦ ¦ L-+---------------- Not Used ¦ ¦ ¦ L------------------------------------------------------- INDEX: D4 D3 D2 D1 D0 0 X X X X 00h - 0Fh Palette Registers 1 0 0 0 0 10h Mode Control 1 0 0 0 1 11h Over-scan Color 1 0 0 1 0 12h Color Plane Enable 1 0 0 1 1 13h Horizontal Picture Element Panning PALETE ADDRESS SOURCE: D5 0 Разрешена загрузка Palette регистров. Биты D3-D0 атрибутного регистра адресов применяются к входам color palette address. 1 Видеоданные применяются к входам адреса патитры цветов. . PALETTE: -------------------------------------------------------¬ ¦ INDEX = 00h-0Fh Palette Registers ¦ +------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L---- Blue ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------ Green ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-------- Red ¦ ¦ ¦ ¦ ¦ ¦ L---------- Secondary Blue/Mono Video ¦ ¦ ¦ ¦ ¦ L------------ Secondary Green/Intensity ¦ ¦ ¦ ¦ L-------------- Secondary Red ¦ ¦ L-+---------------- Not Used ¦ L------------------------------------------------------- Это регистры 16 палитр. Каждый из этих регистров соответствует одной возможной комбинации из 4 входов видеоплоскости в систему атрибутного контроллера. FUNCTION DIAGRAM: Sec.Red ------------¬ ---------------------+ ¦ ¦ Sec.Green ¦ Direct ¦ ¦ -------------------+ ¦ ¦ ¦ Sec.Blue ¦ Drive ¦ ¦ ¦ -----------------+ ¦ ¦ ¦ ¦ Red ¦ Video ¦ ¦ ¦ ¦ ---------------+ ¦ ¦ ¦ ¦ ¦ Green ¦ Out ¦ ¦ ¦ ¦ ¦ -------------+ ¦ ¦ ¦ ¦ ¦ ¦ Blue ¦ ¦ ¦ ¦ ¦ ¦ ¦ -----------+ ¦ -------¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--¬ -------------T+T+T+T+T+T+T-¬ L------------ ¦Video ¦ ¦ ¦ 00h ¦1¦0¦0¦1¦0¦1¦ ¦ ¦Shift +-¬L-+ A0 • LT+T+T+T+T+T- ¦ ¦Regis-+¬L--+ A1 • ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ter ¦L---+ A2 • -+T+T+T+T+T+¬ ¦ ¦ +----+ A3 /Fh ¦0¦1¦1¦0¦0¦1¦ ¦ ¦ ¦ ¦ L-+-+-+-+-+-- ¦ L------- L--------------------------- Attributes Controller Palette Выход из палитры будет таким: For A3-0 = 00h:ONS.Red For A3-0 = OFh:OFFS.Red OOFS.Green ONS.Green OFFS.Blue ONS.Blue ONRed OFFRed OFFGreen OFFGreen ONBlue ONBlue . COLOR PLANE ENABLE: -------------------------------------------------------¬ ¦ INDEX = 12h Color Plane Enable ¦ +------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+---- Enable Color Plane ¦ ¦ ¦ ¦ L-+------------ Video Status MUX ¦ ¦ L-+---------------- Not Used ¦ ¦ ¦ L------------------------------------------------------- ENABLE COLOR PLANE D3 - D0 1 Данные соответствующей Video Memory plane (plane 3-0) применяются к палитре цветов. 0 Выход палитры цветов соединяется с logic 0. VIDEO STATUS MUX: D5 D4 Эти биты выбирают 2 из 6 цветовых выхода для Status Port (см. порты 3BAh, 3DAh биты D5 и D4). Status Port D5 D4 0 0 Red Blue 0 1 S.Red S.Green 1 0 S.Blue Green 1 1 Not Used Not Used
HORIZONTAL PICTURE ELEMENT PANNING: -------------------------------------------------------¬ ¦ INDEX = 13h Horizontal Pel Panning ¦ +------------------------------------------------------+ ¦ BIT 7 6 5 4 3 2 1 0 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-+-+-+---- Horizontal Pel Panning ¦ ¦ L-+-+-+------------ Not Used ¦ ¦ ¦ L------------------------------------------------------- HORIZONTAL PEL PANNING D3 - D0 Этот регистр используется для горизонтальной прокрутки. В 8 Pels на character modes этот регистр обычно программируеися со значением 0. Отображаемое значение смещается влево определенным числом точек растра, определяемым с помощью этого регистра. Максимально разрешается 7. В 9 точках на character modes этот регистр обычно программируется со значением 8. Программирование значений 0-7 будет все больше смещать изображение влево. Поделитесь этой записью или добавьте в закладки | Полезные публикации |