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

книги из ГПНТБ / Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие

.pdf
Скачиваний:
97
Добавлен:
27.10.2023
Размер:
29.24 Mб
Скачать

чае все необходимые перемещения совершает документ. При переме­ щении луча с помощью механических устройств (система зеркал) возникают трудности, связанные с обеспечением высокой точности работы механизма. Системы с электронным перемещением луча более гибки и более производительны. В этих системах легко организуется

повторный просмотр.

Неподвижный источник освещения может быть использован для получения неподвижного изображения перемещающегося документа, что оказывается удобным в случае, когда просматривается большой объем документов, каждый из которых содержит небольшое количе­

ство информации.

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

вконтуре каждого знака) пересекли места расположения фотодиодов

ифототранзисторов. Расположение элементов матрицы определя­

ется характеристиками шрифта или записи информации. Этот способ ■ считывания приемлем в том случае, когда для записи применяется стилизованный шрифт.

Принцип считывания с помощью «бегущего луча» основан на том, что светлое пятно с экрана ЭЛТ или пятно, получаемое путем фо­ кусировки луча от источника света, проектируется на считываемые знаки. Это световое пятно перемещается за счет движения луча по экрану ЭЛТ или за счет перемещения системы зеркал по считывае­ мым знакам. Отраженный луч с помощью оптической системы про- -ектируется на фотопреобразователь (в большинстве случаев фото­ умножитель). В момент, когда луч пересекает темную линию знака или кодовую характеристику знака, количество отраженного света уменьшается и на выходе фотоумножителя появляется электрический импульс.

При считывании с помощью «бегущего луча» считывающий эле­ мент (световое пятно) можно довести до очень малых размеров (по­ рядка 0,2—0,3 мм). Поэтому возникает возможность считывать знаки малых размеров и, следовательно, увеличить относительный объем информации, считываемой с одного документа. После считывания данные должны быть преобразованы в вид, удобный для ввода в вы­ числительную машину. Например, каждый знак, который после счи­ тывания записывается в виде матрицы из нулей и единиц (что со­ ответствует белому и черному цвету в пределах поля знака), необ­ ходимо преобразовать в соответствующий код.

Распознавание знаков может производиться методом статисти­ ческого анализа, методом наложения масок и комбинаций этих ме­ тодов. Они могут быть реализованы программным или схемным пу­ тем. При программном способе данные просмотра поступают в вы­ числительную машину, где они анализируются для выявления знака; ■ необходимость выполнять большое количество операций делает рас­ познавание знаков программным путем весьма медленным. Схемные методы не обладают той гибкостью, которую дает программный ме­

тод, зато они позволяют получить значительно большее быстро­ действие.

При-распознавании по методу масок для каждого знака имеется своя маска, которая играет роль шаблона. Опознавание оказывается возможным лишь при небольших отклонениях в размере и форме

450

знаков. Метод статистического анализа является более гибким ме­ тодом. Здесь опознавание происходит путем обнаружения существен­ ных элементов знака и их логического «объединения».

Существуют системы оптического считывания параллельного и по­ следовательного действия. При последовательном принципе работы один считывающий элемент по очереди считывает все знаки в строке. При параллельном принципе работы на каждый знак имеется свой считывающий элемент.

Рис. 7-21. Блок-схема оптического считывающего устройства последо­ вательного действия.

/ — считываемый документ; 2 — проекционный кинескоп; 3 — объектив;

4 — фо*

тоумножители; 5— видеоблок; 6 — блок управления;

7 — транспортер;

8 — блок

разверток; 9 — фиксатор знака; Ю — блок

центрирования.

 

На рис. 7-21 приведена блок-схема считывающего устройства по­ следовательного действия с помощью «бегущего луча». Считывающее устройство работает в двух режимах — в режиме поисковой разверт­ ки, во время которой происходит поиск информации на движущемся документе и управление механизмом протяжки, и в режиме рабочей развертки, при которой происходят считывание знаков в строке и вы­ дача считанной информации в логическую часть устройства.

Участок документа, находящегося перед окном считывания, по­ следовательно обегается лучом при помощи проекционного кинеско­ па и объектива. Отраженный от этого участка свет улавливается несколькими фотоэлектронными умножителями. В результате этого оптическое изображение читаемых знаков превращается в электриче­ ское. Видеосигнал с фотоэлектронных умножителей подается в видео­ блок. Полученные импульсы «черного цвета» подаются в логическую

29:

451

 

часть устройства. Работой считывающего устройства управляет блок управления.

Если перед окном считывания документа нет, в механизме про­ тяжки происходит автоматическая подача следующего документа на транспортер. При появлении документа перед началом считывания транспортер останавливается. Блок управления выдает в логическую часть сигнал Д о к у ме нт и запускает генератор поисковой развертки в блоке разверток. При помощи поисковой развертки происходит раз­ вертывание луча вдоль строки. При обнаружении подлежащей чте­ нию строки по импульсам «черного цвета» блок управления переклю-

^

I C —

I L -

Рис 7-22.

Последовательность

 

 

 

разверток

в оптическом считы­

ТР1 4 7 2

вающем

устройстве.

/ — поисковая

развертка; 2 — рабо­

 

 

 

чая

развертка.

чает блок разверток на работу от генератора рабочей развертки. На­ правления движения луча относительно знаков во время поисковой и рабочих разверток изображены на рис. 7-22.

Во время поисковой развертки луч прочерчивает горизонтальные линии параллельно строкам, продвигаясь сверху вниз заданными не­ большими шагами. Когда поисковая линия пересекает строку со зна­ ками, проявляется импульс «черного цвета», в результате чего вклю­ чается рабочая развертка. Во время рабочей развертки луч движется по знакам сверху вниз и слева направо. По окончании рабочей раз­ вертки опять включается поисковая развертка. Одновременно с ге­ нератором рабочей развертки включается фиксатор знака, выполня­ ющий поиск знака в строке.

При обнаружении знака проверяется его положение относитель­ но рабочего растра по вертикали и производится центрирование зна­ ка по вертикали. Эту функцию выполняет блок центрирования. Если

знак не сцентрирован,

то в генератор рабочих разверток

подается

■ сигнал ошибки и луч

по данному знаку развертывается

вторично.

По истечении заданного количества разверток фиксатор знака выдает сигнал о наличии знака и переходит к поиску второго знака в строке.

После считывания всей строки устройство переходит к считыванию следующей строки.

Существующие в настоящее время устройства производят в ос­ новном считывание информации, записанной стандартизированным

шрифтом. Скорость считывания для устройств последовательного

действия достигает 200—500 зн/сек, для устройств параллельного действия — до 4 000.

Г л а в а в о с ь м а я

СИСТЕМЫ ПРЕРЫВАНИЯ ПРОГРАММ

8-1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ И ХАРАКТЕРИСТИКИ

Работу вычислительной системы можно представлять в виде некоторой последовательности событий, происхо­ дящих как внутри, так и вне ее. Такими событиями явля­ ются, например, выполнение арифметических и логичес­ ких операций в процессоре, работа вводных-выводных аппаратов, изменение состояния объекта, управляемого машиной, и др. Часть из этих событий являются програм­ мно-определяемыми, так как они порождаются програм­ мой и возможные моменты их возникновения заранее из­ вестны. Другие события являются программно-независи­ мыми, так как они вызваны посторонними по отношению к программе источниками, либо моменты их возникнове­ ния не могут быть установлены заранее при программи­ ровании.

События, происходящие вне процессора, являются, как правило, программно-независимыми. Изменения со­ стояния управляемого объекта, выход параметров объ­ екта за дозволенные пределы, запросы оператора проис­ ходят независимо и асинхронно по отношению к выпол­ няемой в данной момент программе. То же относится и к периферийным устройствам, работающим одновремен­ но с выполнением программы в процессоре: хотя момент начала работы этих устройств определяется обычно про­ граммой, продолжительность, а иногда и последователь­ ность отдельных операций в периферийных аппаратах заранее точно не известны.

События, происходящие внутри процессора, могут относиться к обоим указанным типам. Последователь­ ность моментов выполнения различных математических операций известна программисту — она определяется последовательностью команд в программе. Если, на­ пример, по ходу задачи необходимо произвести сравне­ ние двух чисел X и У и делается это путем вычисления разности X—У, то момент для проверки этой разности на нуль также легко находится программистом—непос­ редственно после вычитания У из X. Данные события являются программно-определяемыми. С другой стороны, при выполнении программы могут возникнуть исключи­ тельные условия, определяемые не алгоритмом решения

453

задачи, а сочетанием операндов или ошибкой программи­ ста (переполнение разрядной сетки машины при сложе­ нии; попытка деления на нуль, выход из установленной для данной программы области памяти и др). Хотя указанные события порождаются самой программой, моменты их возникновения трудно или подчас невозмож­ но предусмотреть во время программирования.

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

В случае программно-независимых событий исполь­ зование обычных программных методов очень часто бу­ дет малоэффективным. Предположим, в составе системы

команд машины

имеется команда условного

перехода

по какому-либо

программно-независимому

событию.

Так как момент возникновения события неизвестен, не­ обходимо составить программу так, чтобы указанная команда перехода повторялась после определенного чис­ ла команд, периодически проверяя выполнение требуе­ мого условия. Этот метод называют иногда «сканирова­ нием входов». Если сканирование производится, напри­ мер, через каждые 50 команд, то это означает, что вре­ мя выполнения программы и требуемый объем памяти для хранения программы увеличиваются на 2%, а ре­ акция на проверяемое событие будет следовать с боль­ шой задержкой во времени (максимально — на длитель­ ность выполнения 50 команд). Кроме того, если прог­ рамма сложна и содержит многочисленные циклы и пе­ реходы, а количество проверяемых условий велико, то реализация сканирования является достаточно трудной задачей для программиста.

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

454

мации) можно использовать две команды: «пуск устрой­ ства» и «прием (выдача) данных». Программист разме­ щает первую команду на некоторое количество команд раньше того места в программе, когда ввод или вывод действительно понадобится, с тем чтобы к моменту вы­ полнения второй команды нужное устройство было го­ тово к передаче информации. Хотя этот способ позволяет добиться определенного повышения эффективности в

П р е р В а н н а я

программа

Запрос___________________

_______________1___________ _______________________________

прерывания

 

 

 

Прерыва ю щ а я

777777?.

 

77777777У

программа

 

 

 

 

л г 3 J

 

 

Время З а я о ш

Собственно

Выход

 

реакции нание

прерывающая

из преры­

 

состоя-

программа

вающей)

 

ния пре-

 

програм-

 

роаннои

 

м ы

 

программы

 

Рис. 8-1. Упрощенная временная диаграмма процесса прерывания.

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

Для того чтобы вычислительная система могла реа­ гировать на программно-независимые события при ми­ нимальных усилиях со стороны программиста и макси­ мально возможном быстродействии, ей необходимо при­ дать дополнительные аппаратные средства, совокупность которых получила название системы прерывания про­ грамм.

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

455

сопровождаться сигналом, оповещающим о его возник­ новении. Будем называть эти сигналы запросами преры­ вания. Программы, затребованные запросами прерыва­ ния, будем называть прерывающими программами, противопоставляя их прерванным программам, выпол­ нявшимся машиной до появления запросов.

На рис. 8-1 приведена упрощенная временная ди­ аграмма процесса прерывания. Запрос прерывания вы­ зывает к исполнению соответствующую прерывающую

.программу немедленно или с некоторой задержкой. До того момента, когда начнет исполняться первая коман­ да прерывающей программы, запрос прерывания дол­ жен, как правило, сохраняться в системе, а затем он мо­ жет быть погашен. Прекращая выполнение прерванной программы, система прерывания должна обеспечить возможность возврата к ней в последующем, т. е. воз­ можность продолжить программу с той точки, в кото­ рой произошло прерывание. Для этого необходимо за­ помнить состояние прерванной программы, существую­ щее в момент прерывания.

После исполнения прерывающей программы должен быть осуществлен выход из нее. Если за это время в си­ стеме не появились запросы прерывания, соответствую­ щие заявкам на выполнение иных более важных работ, то выход заключается в восстановлении состояния пре­ рванной программы. Если управление запоминанием со­ стояния и выходом возложено на саму прерывающую программу, то она должна состоять из трех частей: под­ готовительной и заключительной, обеспечивающих пе­ реключение программ, и собственно прерывающей про­ граммы, осуществляющей ту работу, которая была за­ требована запросом прерывания.

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

456

Таким образом, системы прерывания современных вычислительных систем выполняют следующие основные

функции:

входа в

прерывающую

программу;

а)

организация

б) приоритетный выбор между различными запроса­

ми прерывания;

возврата

к

прерванной

программе;

в)

обеспечение

г)

программное

изменение

приоритетов программ.

Характеристики

систем

прерывания.

Желательно,

чтобы указанные выше функции система прерывания вы­ полняла достаточно быстро, с минимальными потерями машинного времени и максимальной гибкостью. Для

оценки эффективности систем прерывания

могут быть

использованы следующие характеристики.

появлением

В р е м я

р е а к ц и и — время между

запроса прерывания и началом выполнения первой команды прерывающей программы. На рис. 8-1 это вре­ мя обозначено tp. Для одного и того же запроса преры­ вания в одной и той же вычислительной системе задерж­ ки в исполнении первой команды прерывающей програм­ мы будут различными в зависимости от того, сколько программ со старшим приоритетом ждет обслуживания. Для того чтобы характеризовать свойства вычислитель­ ной системы, следует учитывать время реакции для за­ проса прерывания с наивысшим приоритетом.

В р е м я о б с л у ж и в а н и я п р е р ы в а н и я — разность между полным временем выполнения прерыва­ ющей программы и временем выполнения всех полез­ ных команд (т. е. собственно прерывающей программы). Эта величина характеризует потери машинного времени

на

организацию процесса прерывания;

в соответствии

с

рис. 8-1 время обслуживания есть

сумма времен

 

ts~t~ ^в»

 

затрачиваемых на запоминание состояния прерванной программы и выход из прерывающей программы.

Г л у б и н а п р е р ы в а н и я — максимальное число программ, которые могут прерывать друг друга. Систе­ ма прерывания может быть построена так, что после возбуждения прерывающей программы и вплоть до ее окончания прием других запросов прерывания запреща­ ется. В таких случаях говорят, что система имеет глуби­ ну прерывания, равную единице. Если на прием запро­ сов никаких ограничений не накладывается, система

457

имеет произвольную глубину прерывания. Возможны промежуточные случаи, когда глубина прерывания огра­ ничивается определенным числом программ.

На рис. 8-2 показано, как влияет глубина прерывания на задержки в выполнении прерывающих программ для систем с различной глубиной. На рис. 8-2, а изображены моменты поступления трех запросов прерывания, при этом предполагается, что приоритет каждого последую-

Запросы

J__ L

 

 

 

 

t

 

 

 

 

прерывания

1

а)

Z

 

3

 

Очередность

 

t

исполнения

РУ///АЧЧЧЧЧЧЧЧЧЧЧЧЧЧКЖа

 

программ в системе

б)

 

 

 

 

с единичной глубиной

 

 

 

 

 

 

 

г

 

 

2

 

Очередность

7

 

 

 

s\\444S

t

 

 

 

■*■

исполнения

V777.

„ )

 

 

а _________

программ б

_

 

 

 

 

системе

с глубиной. > 3

 

с

 

 

 

 

в системах

различной

глубиной

Рис. 8-2. Прерывание прерывания.

 

 

щего запроса

выше, чем

у

предыдущего.

В системах

с единичной глубиной прерывания (рис. 8-2,6) очеред­ ность выполнения прерывающих программ определяет­ ся, главным образом, порядком поступления запросов прерывания во времени. Во время исполнения преры­ вающей программы никакие другие прерывания невоз­ можны. В системах с большей глубиной прерывания (рис. 8-2, в) прерывающая программа может быть прер­ вана другой программой, а прерванная программа в свою очередь может быть прерывающей по отношению к другой программе. Следовательно, увеличение глуби­ ны прерывания принципиально позволяет уменьшить вре­ мя реакции системы на запрос прерывания.

Глубина прерывания имеет важное значение для ор­

ганизации

приоритетного

обслуживания запросов пре­

рывания.

В идеальном случае вычислительная система

должна в

любой момент

времени выполнять наиболее

важную из ждущих обслуживания программ. Если в си­ стеме с глубиной прерывания п запрос прерывания с наибольшим приоритетом появится тогда, когда п ра­ нее пришедших запросов образовали цепь прервавших

458

друг

друга

программ,

подобную

изображенной на

рис.

8-2,8, то

выполнение

наиболее

важной прерываю­

щей программы будет отложено, пока не закончится идущая в данный момент программа. В системе с глуби­ ной прерывания п+1 программа с наивысшим приорите­ том могла бы начать работу немедленно. Таким обра­ зом, чем больше глубина прерывания, тем лучше могут быть учтены приоритеты запросов при обслуживании прерываний.

Н а с ы щ е н и е с и с т е м ы п р е р ы в а н и я . Если время реакции или обслуживания источника прерывания настолько велико, что запрос окажется необслуженным к моменту прихода нового запроса от того же источника, то возникает явление, называемое насыщением системы прерывания. В этом случае факт посылки предыдущего запроса прерывания от данного источника будет систе­ мой утрачен, что, вообще говоря, является недопусти­ мым. Быстродействие вычислительной системы, логи­ ческие возможности системы прерывания и количество источников прерывания должны быть согласованы та­ ким образом, чтобы насыщение системы прерывания бы­ ло невозможным.

8-2. ВХ О Д В П РЕРЫ ВА Ю Щ У Ю ПРОГРАММУ

При поступлении запроса прерывания от любого из источников система прерывания прежде всего должна определить допустимый момент прерывания текущей программы и начальный адрес прерывающей программы.

Определение допустимого момента прерывания. Из­ вестны по крайней мере три различных способа опреде­ ления допустимого момента для прерывания:

1. В состав команды может быть включен специаль­ ный разряд, указывающий, разрешается прерывание или нет после окончания данной команды. Таким образом, вдоль программы могут быть «расставлены» опорные точки, указывающие допустимые моменты прерывания. Полезность такого подхода определяется тем, что пре­ рывания могут быть позволены в тех точках программы, где, например, регистры арифметического устройства не содержат информации, которая может понадобиться в дальнейшем. Следовательно, ее не надо сохранять, и в этом случае время обслуживания прерывания может быть уменьшено. Однако время реакции в таких систе­

459

Соседние файлы в папке книги из ГПНТБ