Text
                    Л. Н. КОРОЛЕВ
МИКРОПРОЦЕССОРЫ,
МИКРО- И МИНИ-ЭВМ
Допущено Государственным комитетом СССР
по народному образованию в качестве
учебного пособия для студентов вузов,
«обучающихся по специальности
«.Прикладная математика»
ИЗДАТЕЛЬСТВО
МОСКОВСКОГО УНИВЕРСИТЕТА
*988


Оглавление t Введение 3 Раздел I. Функциональные элементы вычислительной техники ^2 $ 1.1. Вентили и комбинационные схемы , 12 $ 1.2. Алгебраическое задание функций и логических схем 17 § 1.3. Понятие о минимизации логических схем' ... 19 § 1.4. Комбинационные схемы 22 § 1.5. Последовательностные логические схемы ... 33 1.5.1. Триггеры 34 1.5.2. Регистры , . 38 § 1.6. Интегральные схемы (ИС) 41 § 1.7. Запоминающие устройства вычислительных машин 43 1.7.1. Запоминающее устройство с произвольной выборкой (ЗУПВ) 45 1.7.2. Постоянные запоминающие устройства (ПЗУ) . 46 1.7.3. Ассоциативные запоминающие устройства (АЗУ) 47 § 1.8. Понятие о языке логического проектирования . . 50 1.8Л. Способы описания работы ЭВМ 50 1.8.2. Операционное предложение языка МРП . . 54 § 1.9. Микропрограммирование 59 1.9.1. Горизонтальное и вертикальное микропрограммирование 63 Раздел II. Микропроцессорные элементы вычислительной техники «.«••• 66 § 2.1. Структурная схема микропроцессора .... 66 2.1.1. Ар ифметическо-логическое устройство (АЛУ) . 71 2.1.2. Регистры общего назначения (РОЦ) .... 75 § 2.2. Система команд микропроцессора 76 2.2.1. Арифметическо-логические операции .... 79 2.2.2. Команды межрегистровых передач и обменов с памятью 80 2.2.3. Команды передачи управления ..... 80 2.2.4. Регистры устройства управления и команды перехода 81 § 2.3. Основной, цикл работы микропроцессора ... 85 § 2.4. Схема структурной организации микроЭВМ на основе микропроцессорного набора 88 § 2.5. Обзор микропроцессоров 92 2.5.1. 16-разрядные микропроцессоры 95 2.5.2. Микро- и мини-ЭВМ архитектурной линии семейства СМ 3/4 и PDP-11 108 3
ББК 32.973 К68 УДК 681.5 Рецензенты: кафедра прикладной математики АШСИ, член-корреспондент АН СССР Л, И. Преснухин Королев Л. Н. К68 Микропроцессоры, микро- и мини-ЭВМ. — М.: Изд-во Моск. ун-та. 1988. — 213 с. ISBN 5-211-00153-2. В пособии дано представление об основных функциональных элементах вычислительной техники, о комбинационных и последовательных схемах, представлена типовая функциональная схема микропроцессора. Приведены сведения о программном и математическом обеспечении микроЭВМ, в частности в машинной графике, о мультимикропроцессорных системах, специализированных вычислительных системах, созданных на основе микропроцессорной техники, и перспективах развития этого направления. Для студентов вузов, обучающихся по специальности «Прикладная математика». 2405000000(4309000000)-130 ^ * 077(02)—88 © Издательство ISBN 6—211—00153—2 Московского университета, 1988
Раздел III. Программное обеспечение микропроцессоров | микро- и мини-ЭВМ ,.<••>. 123 1 $ 3.1. Основные черты программного обеспечения микро- j ЭВМ 123 1 3.1.1. Программное обеспечение встраиваемых ЭВМ . 124 3.1.2. Общая характеристика программного обеспечения бытовых, или семейных, ЭВМ 126 3.1.3. Программное обеспечение школьных компьютеров 127 § 3.2. Общая характеристика языка БЕЙСИК . . . 130 3.2.1. Средства рисования на экране в языке БЕЙСИК 135 § *3.3. Структура программного обеспечения профессиональных микроЭВМ 143 § 3.4. Структура и функциональные возможности операционной системы СР/М и ОС МикроДОС . . . 148 § 3.5. Операционная система UNIX 153 § 3.6. Характеристики операционной системы Альфа ДОС/ /ДОС-16 159 Раздел IV. Программное обеспечение машинной графики 162 § 4.1 Основные задачи машинной графики .... 162 § 4.2. Математическая модель изображений . . . . 168 4.2.1. Клеточные автоматы 174 4.2.2. Общее определение клеточного автомата и картинная логика 177 § 4.3. Векторные и растровые дисплеи 179 4.3.1. Уровни программного обеспечения машинной графики 184 Раздел V. Мультимикропроцессорные системы, многомашинные комплексы и сети ЭВМ , , , • 188 §5.1. Типы параллелизма в обработке данных . . 188 § 5.2. Типы архитектур вычислительных систем . . . 192 § 5.3. Сети ЭВМ . - . 199 § 5.4. Программное обеспечение сетевого взаимодействия 205 5.4.1. Способы передачи данных в сетях .... 209 5.4.2. Понятие о протоколах взаимодействия в сетях 211 Литература #•#■•• 213 *
Введение Наше время называют временем компьютерной революции, и такое название не является преувеличением. В середине 70-х годов началась новая эпоха в развитии вычислительной техники, обязанная своему происхождению поистине фантастическим успехам микроэлектроники. Создание" технологических процессов, которые позволили на одном срезе кристалла площадью в несколько десятков квадратных миллиметров размещать электронные схемы, состоящие из десятков и даже сотен тысяч логически активных элементов, позволило в массовых количествах производить микропроцессоры, которые по своим параметрам и функциональным возможностям превосходят центральные процессоры некоторых больших дорогостоящих стационарных ЭВМ. На основе микропроцессоров создаются микро- и мини-ЭВМ, персональные ЭВМ различного назначения и высокопроизводительные вычислительные системы. В настоящее время приставка «микро» характеризует не маломощность этих устройств, а малость их физических размеров. Что же касается функциональных возможностей вычислительной техники, построенной на основе микропроцессорных наборов и больших интегральных схем, то приставки «микро» и «мини» уже не отражают сути дела. Хотелось бы подчеркнуть, что микроминиатюризация не самоцель, а, по-видимому, в современных условиях единственный путь к достижению главной цели — повышению быстродействия и увеличению логических возможностей радиоэлектронной аппаратуры. Быстродействие отдельных переключательных элементов достигло столь высоких порядков, что быстродействие схемы в целом определяется длиной проводников, связывающих отдельные логические элементы, так как сказывается время преодоления электрическим сигналом даже очень не- 5
больших расстояний, измеряемых долями милли- ] метра. 1 Второй не менее важный результат микроминиа- I тюризации — уменьшение в несколько тысяч раз ко- ] личества контактов в ЭВМ, которые требуют пайки. 1 Это приводит к тысячекратному уменьшению трудо- I затрат при производстве ЭВМ на основе использова- I ния микроэлектронных интегральных схем. Несмотря I на то что создание автоматических линий по произ- 1 водству интегральных схем, в особенности микропро- I цессорных интегральньх схем, — дело крайне доро- I гостоящее и наукоемкое, такие линии созданы. В свя- I зи с этим начался процесс массового выпуска та- 1 ких схем. Массовость — понятие относительное, в I данном случае речь идет о десятках миллионов штук 1 в год. В какой-то степени этот процесс можно 1 сравнить с книгопечатанием: много труда и времени I требуется, чтобы написать и набрать книгу, испра- 1 вить все ошибки, но когда этот процесс завершен, I выпустить книгу большим тиражом в несколько со- I тен тысяч экземпляров не представляет труда. I В конечном итоге переход на новую технологию 1 изготовления ЭВМ на основе интегральных схем и 1 микропроцессоров привел к резкому ее удешевлению. 1 Начиная с 1960 г. стоимость вычислительных машин I в расчете на одну операцию за каждое десятилетие 1 снижалась приблизительно в 100 раз, а стоимость I хранения одного символа информации в памяти I ЭВМ — в 4—5 раз. Эти цифры означают, что через 1 10 лет за ту же цену можно купить ЭВМ в 100 раз I более быструю с объемом памяти в 4—5 раз боль- | шим! I Все эти факторы позволили с середины 70-х го- 1 дов приступить к массовому, можно сказать, масси- I рованному выпуску дешевых ЭВМ с достаточно вы- I сокими техническими параметрами. В 70-х годах в 1 мире насчитывалось около миллиона компьютеров, а 1 в 80-х — уже порядка 25 миллионов. Основную до- 1 лю в этом приросте составляют микроЭВМ, персо- I нальные компьютеры и мини-ЭВМ нового поколения. I Последствия такого «взрыва» в области производст- 1 ва компьютеров не замедлили сказаться. Открылась 1 возможность их рентабельного внедрения во все сфе- 1 ры производственной деятельности, науки, образова- 1 ния, быта. Раньше массовое внедрение сдерживалось I дороговизной ЭВМ, их ограниченным выпуском по 1 6
сравнению с потребностями. Кроме того, переход к большим интегральным схемам резко повысил надежность ЭВМ. Важность фактора надежности и его влияние на возможность применения средств вычислительной техники, особенно в жизненно необходимых областях народного хозяйства, трудно переоценить и не нуждаются в доказательстве. Революция в области вычислительной техники подняла на новый уровень значимость информатики, которая в широком смысле ее понимания объединяет целое семейство научно-технических направлений. Это семейство прежде всего включает новое направление современной математики, связанное с созданием методов математического моделирования явлений природы и общественной деятельности человека, а на основе этих методов — алгоритмов и программ для электронных вычислительных машин. Значимость математики в создании универсальных методов обработки данных, пригодных для решения целого класса различных по своей физической сущности задач, трудно переоценить. Важно отметить, что современная «компьютерная» математика свои главные усилия направляет на учет разброса в точности задания исходных данных, что совершенно необходимо для получения практически надежных результатов. Необходимость такого приближения к практическим нуждам, как это ни парадоксально, потребовала создания новых теорий, по логической глубине превосходящих то, что было ранее создано в классической математике. В современной «компьютерной» математике дальнейшее развитие получила теория алгоритмов, которая легла в теоретическую основу программирования. Программирование со своими многочисленными проблемами в диапазоне от теоретических методов доказательства правильности программ до методов оптимизации машинных кодов входит в состав этой новой математики как ее неотъемлемый раздел. Особое место в программировании занимает теория и практика разработки системного математического обеспечения, которое превращает лишенную интеллекта аппаратуру ЭВМ в логически развитый, «думающий» инструмент. В семейство научно-технических направлений, составляющих содержание информатики, входят теория н практика, связанные с созданием ЭВМ как технического устройства. Если на заре появления вычис- 7
лительной техники ставилась задача о возможности решения той или иной задачи с ее помощью, то теперь перед специалистами в области информатики ставится задача создания ЭВМ, оптимально приспособленных к решению заданного класса задач. Отсюда очевидна связь между «компьютерной» математикой и компьютерной инженерией. В этом тесном взаимодействии особая роль принадлежит программированию и дискретной математике. Теоретические результаты этих разделов математики дают методику построения алгоритмов автоматического проектирования отдельных устройств и ЭВМ в целом. Содружество вычислительной техники и математики дает новый стимул развития этих двух основных направлений информатики. Мы стоим на пороге появления машин нового поколения, логические возможности которых возрастут во много раз, а принцип работы будет основан на автоматизации процесса логических выводов. В этих условиях роль математики, особенно математической логики, еще более возрастет. Компьютерная революция оказала влияние не только на многие научно-технические дисциплины, но и на всю сферу производственной и общественной деятельности людей. Темпы внедрения ЭВМ в эти сферы резко возросли, в результате чего сильно увеличилась потребность в специалистах, умеющих использовать этот универсальный логический инструмент в различных отраслях производства, в управлении, в образовании, в науке. Соответственно велению времени во всех развитых странах мира начался процесс подготовки широких слоев населения к овладению основами использования ЭВМ. Этот процесс иногда квалифицируют как информатизацию всех ступеней образования и всех сфер профессиональной деятельности. Иногда этот процесс называют всеобщей компьютеризацией. Но как бы громко и красиво этот процесс ни назывался, непреложный факт состоит в том, что ЭВМ разных классов и типов станут неотъемлемым элементом в повседневной производственной и управленческой деятельности. Для развитого общества они приобретут такое же значение, как электричество, современные виды транспорта, телефонная связь. Особое место в процессе компьютеризации принадлежит наиболее массово используемым микро- и мини-ЭВМ. 8
Вполне естественно, что компьютеризация не могла не повлиять на все уровни образования, включая высшее. В 1970 г. в Советском Союзе в вузах была введена новая специальность «прикладная математика», имеющая четыре специализации: применение ЭВМ, математическое обеспечение ЭВМ, математическое обеспечение АСУ и математическое обеспечение САПР. Приведенный перечень специализаций позволяет сделать вывод о том, что по этой специальности готовятся специалисты, имеющие дело со всеми аспектами применения вычислительной техники, способные создавать общесистемное математическое и программное обеспечение для ЭВМ. Программы и учебные планы подготовки специалистов в рамках этой специальности непрерывно совершенствуются с учетом потребностей развития информатики и ее современной материальной основы — вычислительной техники. Тому свидетельство — введение нового курса в учебные планы подготовки специалистов по прикладной математике, который должен дать более детальное представление о функциональных возможностях микропроцессоров, микро- и мини-ЭВМ. С основными общими сведениями об ЭВМ и программировании знакомят студентов 1-го и 2-го курсов в рамках предмета «ЭВМ и программирование». Курс по микропроцессорам микро- и мини-ЭВМ является логическим продолжением этого основного курса. В нем более детально рассматриваются специфические особенности этой техники, определяющие сферы ее применения и ее программное обеспечение. Для специалистов, которые используют микропроцессоры и встроенные микроЭВМ как основное логическое звено цифровой автоматики, очень важно иметь более полное представление о структуре микропроцессора, о его системе команд, о способах взаимодействия с внешними устройствами. Профессиональные микрокомпьютеры находят все большее применение в качестве автоматизированных рабочих мест систем проектирования различного направления, в качестве интеллектуальных терминалов в вычислительных системах автоматизации научных исследований, в качестве рабочих мест систем автоматизации управленческой, учетно-бухгалтерской деятельности. Для этих автоматизированных рабочих мест важен диалоговый, интерактивный режим общения с вычислительной средой, с другими абонентами 9
этой среды. Очень существенно, что диалог с ЭВМ почти во всех случаях основан на использовании дисплея, который служит не только для визуализации результатов решения поставленной перед ЭВМ задачи, но главным образом является усовершенствованной заменой носителя для создания текстовых и графических документов с возможностью их исправления, замены, модификации во время работы. Знания о составе программного обеспечения, организующего диалоговое взаимодействие, об общем механизме работы различных уровней системных программ, полезны не только для системных программистов, но и для обычных пользователей. Предлагаемая книга является учебным пособием по курсу, о котором идет речь. Она состоит из пяти разделов. В первом разделе рассматриваются на функциональном уровне элементарные логически активные элементы, из которых строятся все остальные логические схемы ЭВМ — вентили и треггеры. Дается понятие о комбинационных и последовательност- ных схемах, способах описания их функций, затрагиваются проблемы минимизации. Второй раздел посвящен рассмотрению микропроцессорных элементов вычислительной техники. В нем приводится общая схема типового микропроцессора, его регистровая структура, характеристика системы команд. Дается краткий обзор наиболее известных микропроцессоров. В этом же разделе приводится схема типовой структуры микроЭВМ на основе микропроцессора. В третьем разделе даются описания программного обеспечения различных типов микро- и мини-ЭВМ, рассматриваются функции операционных систем персональных компьютеров, кратко характеризуются ОС СР/М и ОС UNIX. В отдельный раздел выделены вопросы, связан- йые с машинной графикой. Наконец, пятый раздел касается мультимикро- процессорных систем, их классификации и общих механизмов взаимодействия и работы. В нем также приводятся общие сведения о сетях ЭВМ и характере взаимодействия ЭВМ, включенных в сеть. При написании этой книги было желание сделать ее содержание доступным лицам, не обладающим знаниями в области электроники, так как она прежде всего адресована студентам, специализирующим- 10
гя в области прикладной математики. Предполагается что ее читатели прослушали перед этим курс «9ВМ и программирование», знакомы с нотацией, ппинятой в языке программирования. Предполагается также что читатели знакомы с основами дискретной математики, а именно с ее разделами, посвященными булевой алгебре. Автор стремился, где это казалось возможным, связать изложение с теми знаниями из общих разделов математики, которыми владеют студенты 1-го и 2-го курсов. Автор стремился также рассказать о математических задачах, которые.возникают при рассмотрении, казалось бы, чисто технических проблем. Книга не содержит рецептов решения задач, о которых говорится в ходе изложения. Предполагалось, что некоторые из проблем заинтересуют читателя и возбудят в нем желание самостоятельно более подробно изучить данный вопрос и решить поставленные задачи.
РАЗДЕЛ I ФУНКЦИОНАЛЬНЫЕ ЭЛЕМЕНТЫ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ § 1.1. ВЕНТИЛИ И КОМБИНАЦИОННЫЕ СХЕМЫ В вычислительной технике существует понятие логически активных элементов, способных выполнять простейшие действия по преобразованию информации, представленной либо в виде электрических сигналов, либо в виде характеристик намагниченности, света, состояния молекул и т. п. Вне зависимости от физического представления логически активный элемент реализует какую-либо функцию булевой алгебры или двоичной (бинарной) логики. Такие элементы, следуя общепринятой терминологии, будем называть вентилями. Напомним, что булевой называют функцию от п двоичных переменных х\, Хъ ..., хп, принимающую значения 0 и 1. Булевых функций от одной переменной может быть только четыре: fi(x) — l — тождественная единица, ?2 (х) =0 — тождественный нуль, !г(х)=х — отрицание, /4 (х) =*х — тождество. Различных булевых функций от двух переменных может быть шестнадцать, а от п переменных — 22п. Часто к разряду вентилей относят и элементы, реализующие также функции от одного переменного. Конкретная булева функция задается своей таблицей истинности, которая строится следующим образом. В строках таблицы выписываются все возможные комбинации значений переменных этой булевой функции, а в последнем столбце указываются значения, которые принимает булева функция для каждой комбинации значений. Ниже представлен пример таблицы истинности для некоторой функции от трех переменных. В отличие от обозначений логических операций, принятых в логике, а также от их обозначений, принятых в некоторых языках программирования, здесь 12
0 0 0 0 1 1 1 1 1 1 *i 0 0 1 1 0 0 1 1 ** 0 1 0 1 0 1 0 1 / (*i. *«, *s) 1 о о 1 1 о о- ! 1 используются обозначения, принятые в инженерной практике: — значения булевых переменных обозначаются 0 и 1; — логическая операция конъюнкции обозначается знаком умножения • (его можно опускать в тех случаях, когда это не вредит смыслу); — логическая операция дизъюнкции обозначается знаком сложения +; — одноместная логическая операция отрицания обозначается чертой над соответствующей переменной или выражением. Обычно при создании логических схем ЭВМ используются следующие вентили. 1. Вентиль И реализует конъюнкцию с таблицей истинности, приведенной ниже. Графическое обозначение вентиля на функциональных схемах представлено на рис. 1. 2. Вентиль ИЛИ реализует функцию дизъюнкции € таблицей истинности, приведенной ниже. Графиче- *1 э о 1 1 1 *« 0 1 0 1 и 0 0 0 1 ,'1 *1 0 1 о ' 1 1 * *г 0 1 1 0 1 или о 1 1 1 - „^ ! *г 3> Х1 ' Х2 Рис. 1 13
ское обозначение вентиля ИЛИ представлено на рис. 2. *1 х? 3> х7 + х2 и/ж Рис. 2 3. Вентиль НЕ-И реализует отрицание конъюнкции, или функцию Шеффера, с таблицей истинности» приведенной ниже. Графическое изображение этой функции представлено на рис. 3. *1 0 0 1 1 *а 0 1 0 1 НЕ-И 1 1 1 0 D- ч о о 1 1 *2 ч 0 1 0 1 НЕ-ИЛИ 1 о о 0 х1 • хг Рис. 3 ЖЕ-И 4. Вентиль НЕ-ИЛИ реализует отрицание дизъюнкции, или стрелку Пирса, обозначается в алгебре логики значкбм f и задается таблицей истинности, приведенной выше. Графическое его изображение представлено на рис. 4. х2 х1 + х2 НЕ- ■ИМ Рис. 4 цию 14 5. Вентиль исключающее-ИЛИ реализует функ* f(*U Хг)=ХгХц+ХГХ2.
Эту функцию называют также двоичным сложением, сложением по модулю 2, и обозначают знаком ©! Ее таблица истинности приведена ниже. Графическое изображение представлено на рисгб. 6. Вентиль исключатощее-НЕ-ИЛИ реализует функцию эквивалентности. Ее таблица истинности приведена ниже. Графическое изображение представлено на рис. <5. ч \ о 0 1 1 *2 0 1 0 1 ф 0 1 1 0 *1 0 0 1 1 *« 0 1 0 1 а 1 0 о 1 ж, «2 3))— *' **+ *? © Рис. б *1 3D-" + Хг)(ь + *г) Рис. 6 7. Очень важный вентиль, который на-' зывают инвертором, соответствует функции НЕ, или отрицанию, и выражает функцию f (я)=х. Ее таблица истинности приведена справа. Графически инвертор изображается так, как показано на рис. 7. НЕ -£ю- НЕ Рис. 7 Выбор этих семи функций в качестве основных активных логических элементов обусловлен сравнительной простотой их реализации на основе полупровод- 15
никовых приборов: диодов и транзисторов. Из курса ? дискретной математики известно, что для реализации любой функции булевой алгебры достаточно бы- ; ло бы трех вентилей — И, ИЛИ, НЕ — или даже во- : обще одного — НЕ-ИЛИ. Эти наборы вентилей соответствуют функционально полным системам функций, т. е. таким, через которые могут быть выражены все остальные. Однако в схемотехнике чаще всего используются выше перечисленные И, ИЛИ, НЕ. Как было упомянуто основными элементами, реализующими вентили, являются диоды и транзисторы — полупроводниковые приборы, изготовляемые главным образом на кремниевой основе. Диод — прибор, меняющий свое сопротивление в зависимости от величины потенциала, подаваемого на его входы. Очень приближенно можно сказать, что диод обладает свойством пропускать ток при соответствующем напряжении только в одну сторону. Если в электрическую цепь включить параллельно два диода и подать на них электрические сигналы, закрывающие эти два диода, то ток по цепи не пойдет. Если на один из них или на оба вместе подать сигнал, открывающий диоды, то ток по цепи пойдет. Очевидно, что такая схема позволяет реализовать вентиль ИЛИ при условии, что мы будем считать «запирающий» электрический сигнал выразителем нуля, а «открывающий» — выразителем единицы. На рис. 8а изображена схема ИЛИ. С использованием диодов строится! и вентиль, реализующий функцию И (рис. 86). диод -о 5 -£ Рис. 8 Другой полупроводниковый элемент, широко используемый в вычислительной технике и вообще в электронике, — триод (транзистор), которые играет роль главным образом усилителя сигналов. С его помощью реализуется, в частности, функция НЕ, или: 16
инвертор. Его изображение на схемах представлено на рис. 9. Эмиттер - источник носителей заряда. База является управляющим электродом. Коллектор «собирает» заряды, поданные с эмиттера. В зависимости от характеристик тока, приложенного к базе, резко меняется сопротивление между эмиттером и коллектором. Таким образом можно ЛЛ «открывать» или «запирать» цепь эмиттер '— коллектор. Тем самым триод становится идеальным управляемым переключателем. С помощью триодов, соответствующим образом включенных в схемы, можно реализовать логические функции и запоминающие элементы. Современная технология производства инте* тральных схем позволяет на одном кристалле кремния площадью в 20—30 мм2 создать десятки и сотни тысяч диодов и триодов. § 1.2. АЛГЕБРАИЧЕСКОЕ ЗАДАНИЕ ФУНКЦИЙ И ЛОГИЧЕСКИХ СХЕМ Итак, основными логическими функциями булевой алгебры, составляющими функционально полный набор, являются функции И, ИЛИ, НЕ. Функцию Шеффера f(xv x2) = x1-x2, также представляющую функционально полный набор, редко употребляют , для описания логических схем. Таблица истинности задает функцию алгебры логики однозначно, однако ее построение для функции от многих переменных весьма трудоемко. Таблица становится необозримой* и ее анализ и преобразования значительно усложняются. Так, таблица для функции от десяти переменных состоит из 1024 строк, а от одиннадцати — из 2048. Аналитическое представление логических функций лишено таких недостатков, поэтому в основном будем пользоваться им. Как известно, любую функцию булевой алгебры можно задать формулой, объединяющей переменные знаками логических операций И, ИЛИ, НЕ (в наших обозначениях умножением, сложением и отрицанием). Формул, представляющих одну и ту же функцию, может быть бесчислен- коллектор эмиттео> 17
яое множество, так как к любой формуле всегда I можно добавить произвольное число членов, не меня- 1 ющих ее значения. Отсюда следует, что среди всех I возможных эквивалентных формул существуют в 1 определенном смысле хорошие и плохие. Нас, естест- 1 венно, интересуют такие формулы, для реализации | которых требуется меньше диодов, триодов, связей | между элементами. Аналитическое задание функций I в виде алгебраических выражений позволяет 1 упростить их эквивалентные преобразования в поис- 1 ках нужного, оптимального в определенном смысле I выражения. Дизъюнктивная и конъюнктивная совер- 1 шенные нормальные формы, т. е. формулы, построен- 1 ные по строго определенным правилам с точностью | до порядка следования конъюнктивных (или дизъ- 1 аонктивных) членов, являют собой пример однознач- 1 лого представления булевой функции в виде фор* I мульной (алгебраической) записи. I Дизъюнктивная совершенная нормальная форма мз таблицы истинности получается по следующему ] простому алгоритму. Она построена из суммы конъ- I юнкций, которые составлены в соответствии только J «с теми комбинациями значений переменных, на ко- I торых функция принимает значение единицы. Под 1 соответствием с комбинацией (набором) понимаем j следующее: в конъюнкцию, или в нашей терминоло- I тии в произведение, собираются в качестве сомножителей без знака отрицания все переменные, значения которых в наборе равны 1, и со знаком отри- j цания все те переменные, значения которых в набо- | ре равны 0. В виде формулы это записывается так: j f(xvx2, ...,*„)= V£ хЬ-&- ... •#. " Mdi6t 6rt)=i Символ V2 обозначает логическую сумму. При этом принято считать, что x°i = x{, х\ = х{, t= 1, ... ... , п. Число конъюнкций в дизъюнктивной нормальной форме (ДНФ) в точности равно числу единичных значений функций на всех возможных комбинациях значений ее переменных. Такое стандартизованное алгебраическое представление функции в виде ДНФ я КНФ, как правило, может быть сокращено. Отталкиваясь от ДНФ, можно пытаться получать более простые и экономные по числу вхождений переменных и числу операций формулы. Поскольку для каж- 18
дой реализации операции булевой алгебры в логической схеме требуется вентиль, то получение выражения с меньшим числом логических операций практически очень важно. Для минимизации алгебраических выражений используются известные соотношения булевой алгебры, которые приведены ниже (эти соотношения выписаны для одной переменной, но они верны и для функций многих переменных): х + 0 = ху х-0=0, х+1 = 1, х-1=х, х + х=1, *•* = *, х + х=х9 хх=0 х + у=у + х, х-у = у-х, x + (y + z) = (x + y) +z, x-y-z=x-y-zf x(y + z) = xy+xzt x + (y-z)=(x+y)-(x+z). (х + У) = х-у, х-у = х + у, * = #, (x + y)-y=y, (x-y) + y = y. Из этих основных соотношений _следуют, например, такие полезные соотношения, как х+х-у=х+у, х(х+у)= = х-у у х-у(х + у) — ху. Как известно из дискретного анализа, существуют дизъюнктивные формулы представления функции, которые дальше уже нельзя упростить, они называются сокращенными (тупико* выми). Известно также, что не всякая сокращенная форма является минимальной по числу вхождений. Однако минимальную по числу переменных следует искать среди сокращенных форм. Следовательно, успех работы по получению хорошего формульного представления зависит от последовательности применения основных соотношений к исходной формуле. Для функций от большого числа переменных возможных путей такого процесса весьма много. § 1.3. ПОНЯТИЕ О МИНИМИЗАЦИИ ЛОГИЧЕСКИХ СХЕМ ^ При создании логических схем на основе логически активных элементов возникают задачи их оптимального построения. Критерии оптимальности могут 19
быть очень разными, они определяются соображениями экономии приборов и связей между вентилями, простоты технологии изготовления, повышения быстродействия схем. Возникает целый ряд задач, чисто математических по постановкам и требующих разра* ботки сложных алгоритмов. В инженерной практике для минимизации логических схем от небольшого числа переменных по критерию сокращения числа вхождений переменных в формулу, т. е. по критерию минимизации числа вентильных схем, подходящих для реализации конкретной функции, используются некоторые хорошо зарекомендовавшие себя приемы. Совершенную ДНФ можно задать иной компактной записью. Любой набор значений переменных можно рассматривать как целое число в двоичном представлении. Например, набору значений трех пе» ременных *i=0, х2=0, *з=1 (0 0 1) соответствует целое число 1, набору *i=l, х2=1, *з=0 (110) соответствует целое число 6. ДНФ, следовательно, можно ] представить списком целых чисел, соответствующих тем наборам переменных, на которых функция принимает значение 1. Пусть, например, функция от трех переменных задана таблицей истинности, приведенной ниже. Эта № о 1 2 3 4 5 6 1 7 *i 0 0 0 0 1 , 1 1 1 х% 0 0 i 1 0 0 i 1 ч 0 1 . 0 1 0 1 0 1 / (*Ь *2, *8) о 1 1 о 1 0 ! о 1 функция принимает значение 1 на наборах с номерами 1, 2, 4, 7. Запись f(x\, лг2, #з)=\/2(1, 2, 4, 7) понимается следующим образом: функция принимает единичные значения на наборах 001 = 1, 010=2, 100=— =4 и 111=7. С помощью этой записи функция вполне однозначно определяется. Как мы знаем, каждому набору соответствует вполне определенный конъюнктивный член в ДНФ. Конъюнктивный член иногда называют минитермом. На использовании номе- 20
ров минитермов основан другой способ задания функций: с помощью так называемых минимизирующих карт Карно. Очевидно, что эпитет «минимизирующие» указывает на назначение этих карт. Карты Карно строятся в виде двумерной таблицы с числом строк, равным 2s, и числом столбцов, равным 2fe, так, чтобы 2*.2s=2rt (или k+s=n), где п — число переменных. Кроме того, k и s подчиняются соотношению s<ck< ^5+1. Строки метятся наборами значений, которые принимают переменные хи х2> ..., Xk- Столбцы метятся наборами, которые могут принимать оставшиеся переменные Xk+u *ш$ ••• *«• Заметим, что наборы значений переменных, рассматриваемые как комбинации нулей и единиц, можно расположить так, чтобы следующая по порядку комбинация отличалась от предыдущей только в одном разряде, например 000, 001, 011, 010, 110, 111, 101, 100. Столбцы и строки нашей таблицы пометим наборами значений переменных по указанному правилу. Таблица для функций от трех переменных приведена ниже. В этой ] 1 0 0 о 1 4 0 1 1 1 5 1 1 3 7 1 0 2 6 таблице выписаны номера соответствующих минитермов. Например, клетка на пересечении строки, помеченной 1, и столбца, помеченного 01, соответствует значениям переменных, заданных набором 101, т. е. конъюнкции ххх<2.Хг. Таблица для функций четырех ] 00 1 01 11 ] ю 1 00 0 4 12 8 01 i 5 13 9 И 3 7 15 11 10 2 6 14 10 21
переменных приведена ниже. Такого рода таблицы ! обладают следующим свойством. Если мы выделим в I них какой-либо квадрат (или прямоугольник), обра- зованный пересечением нескольких соседних столбцов и соседних строк, то в нем окажутся номера минитер* I мов, имеющих совпадающие между собой участки 1 произведений. Рассмотрим для примера квадрат из 1 клеток 5, 7, 13, 15, образованный пересечением строк I 01, И и столбцов 01, 11. Конъюнкции, соответствую- 1 щие клеткам* 5 и 7, совпадают по переменным хи х2у 1 Х4 и отличаются значением переменной #з. Выпишем I их: 5 — xiX2Xzx4; 7 — £1*2*3*4. Выпишем также конъ- 1 юнкции, соответствующие клеткам 13 и 15: 13 — I х\х2х%х^ 15 — X\x2xzx^ Если ДНФ некоторой функ- 1 ции равна 1 на этих наборах, то конъюнкции сокра- 1 щаются до одной, содержащей только неизменные I переменные, в данном случае до х2хА. В самом деле, 1 f(xu *2, *з, *4)=2(5, 7, 13, 15)^*2*4(*i#3+*i*3+*i*3+ I +хххь) =x2Xt. Конкретная функция на карте Карно за- I дается путем проставления единиц в клетках, соответ- 1 ствующих наборам, на которых функция равна 1.Для 1 функции трех переменных f(xu х2, *з)=2(1, 3, 5, 7) I вид карты приведен ниже. 1 Г\. xtx9 1 *1 ^^ 0 1 00 01 1 1 11 1 1 10 ! 1 ' Клетки, образующие квадрат единичных значений функции, имеют только один общий неменяющийся член лгз. Следовательно, все четыре конъюнкции с номерами 1, 3, 5, 7 можно в формуле заменить на #з. § 1.4. КОМБИНАЦИОННЫЕ СХЕМЫ Комбинационной называют логическую схему, имеющую п входов и т выходов, при этом значения переменных на каждом выходе однозначно зависят только от значений входных переменных. Тем самым комбинационная схема реализует систему из т булевых функций. 22
Входные переменные комбинационной схемы обозначим через хи х2у ... хп, выходные — через уи У2, .-• Ут. Графически такая схема представлена на рис. 10. *1 —П *з—И %п *1 Рис. 10 Рис. 11 Систему булевых функций, отвечающих такой схеме, можно по определению записать так: #ie/i(*it *at • • • # xn)f Ут~~1т\х1* *S» • • • » *n)- С ростом пит число различных комбинационных схем очень быстро растет. При заданных пит это число N=m*2\ В средствах цифровой автоматики из всего великого множества комбинационных схем очень широко используется несколько типов, имеющих свои собственные названия: дешифратор, мультиплексор, де- мультиплексор, сумматор, вычитатель и т. д. Было сказано, что комбинационная схема описывается системой булевых функций. Слово «система» в данном случае понимается в том смысле, что значения функций зависят от одних и тех же переменных и комбинация значений переменных на выходах •однозначно определена комбинацией значений переменных на входах. Если говорить о реализации функций, зависящих от одних и тех же входных перемен- яых, то здесь возникают также задачи минимизации, ■л •У2 'Уз f(Xl,*2,X3) 23
но приемы их решения иные, нежели те, которые применяются для одной функции. Рассмотрим, как можно реализовать комбинационную схему, используя заданный набор вентилей:] И, ИЛИ, НЕ. Сначала остановимся на комбинацион-] ной схеме с п входами и одним выходом, т. е. рассмотрим одну функцию от нескольких переменных! f(xu ..., хп). На первом этапе известными приемами! следует попытаться преобразовать формулу к сокра-1 щенному виду, добившись минимального числа вхож-1 дений переменных с использованием только перечис«| ленных выше операций логического сложения, умножения и отрицания. После этого достаточно каждой] операции поставить в соответствие необходимый вен-1 тиль и соединить выходы одних вентилей с входами! других. _ _ _ _ 1 lyCTb / (Х^ Х%у Хз) = Х^Х2Х3 т~ Х^Х2Х^ » Х]Х%Х$ + Х^Х2Х^-pi + хгх2х3. Карта Карно для нее приведена ниже. \ ** ^^^-^ о. 1 00 01 1 1 11 1 1 10 1 Мы уже знаем, что выделенный квадрат из единиц позволяет заменить всю совокупность этих конъюнкций на переменную #з. Получим / (#1» #2» •^3/==:= %В г Х^Х^Xq + Х$ + #1#2* Схема из вентилей для этого случая приведена на рис. 11. В случае системы булевых функций для их реализации наименьшим числом вентилей приходится поступать иначе. Пример. Пусть комбинационная схема с тремя входами хи *2, Хъ и тремя выходами fu /2, h задана следующей системой булевых функций: /2 v^l» %2 *^3/ == ^2 ' Х\%2рЗ* / 8 \^1> %U* %з)=== %3 ' -^1^2*^8" (1) 24 J
Очевидно, что каждую формулу, задающую функции /,-, можно упростить и записать систему таким образом: fl==Xli Х2Х3* /2 = ^2 + ¥з» (2) Ниже приведены вентильные схемы для системы (1) (рис. 12). На их реализацию затрачено 5 вентилей и 3 инвертора. В схеме же для представления (2) (рис. 13) использовано 6 вентилей и 3 инвертора. Тем самым, упростив каждую формулу в отдельности (2), мы усложнили реализацию комбинационной схемы. *7 — —tX> Хз л>ъ Рис. 13 При минимизации комбинационных схем возникает более сложная комбинаторная задача. Нужно преобразовать формулы выходов с учетом того, что подобные члены разных функций реализуются одной подсхемой вентилей. Комбинационную схему можно представить таблицей истинности, приведенной ниже, на примере схемы с тремя входами и восемью выходами. В схемотехнике часто бывает так, что безразлично, какое значение функции выдаст логическая схема на некотором наборе входных переменных. Появляются тем самым не полностью определенные функ- 25
-d ** о о о о 1 1 1 1 *ш 0 0 1 1 0 0 1 1 *• о 1 о 1 о 1 о 1 '* 1 0 о о 1 о 0 0 /. 0 1 0 1 0 1 0 , 0 /• 1 0 0 1 0 0 1 1 • f. 0 0 0 1 0 0 0 1 и 1 0 0 1 0 1 0 0 /• 0 0 1 0 0 1 0 1 и 1 0 0 1 0 0 0 0 —л\ и || 0 || 0 || о 11 * 11 ° 13 ° Е1 0 1 I 11 ции алгебры логики. В таблице истинности, где каж- | дому набору входных переменных сопоставляется 0| или 1, тот факт, что функция на этом наборе не оп- II ределена, отмечается крестиком (X) в том месте, где! должно быть ее значение. В этом случае для получе- 1 ния хороших реализаций логических функций можно»! по собственному усмотрению вместо X ставить 0 или I 1 (вводить или не вводить в ДНФ соответствующий I конъюнктивный член) Удачная замена неопределен-1 ности нулем или единицей иногда дает резкое сокра- М щение вентилей при реализации. и Таким образом, в полной постановке задача полу- jl чения минимальной по числу вентилей комбинацион- jl ной схемы должна также учитывать возможность JI произвола в разрешении неопределенности. Как я и всякая задача, связанная с эквивалентными преобра- у зованиями формул (приведением подобных, сокраще- 1 нием и т. п.), эта задача по своему существу являет- ]| ся переборной, не имеющей единственного решения. 1 Пример. Пусть с помощью карты Карно задана | функция четырех переменных (см. таблицу), причем | значение, которое функция принимает на наборе 0111,. | нам не задано. В таблице это показано крестиком. I Если мы для определенности положим это значение | равным 0, то получим алгебраическое выражение | функции в виде f(xu х2, х$х4) =х2хА(х{+Хз). Если же I на этом наборе определить значение функции как 1, 1 то получим выражение I /(#1, *2> #3, #4)=#2#4. | Реализация последнего выражения в виде вентиль- 1 ной схемы, очевидно, более проста. | При разработке модулей и устройств вычислитель- | ной техники наиболе часто используются комбинаци- 1 26
00 01 И 10 00 - 01 1 1 11 X 1 10 онные схемы нескольких типов, которые описаны ниже. Эти схемы составляют основу наборов интегральных схем. Дешифратор — комбинационная схема, имеющая п входов и т=2п выходов. Набор входных переменных рассматривается как двоичное число, определяющее номер выхода, который следует возбудить, т. е. задать ему значение 1. Остальные выходы при этом должны получить значение, равное 0. Иными словами, дешифратор подает сигнал, равный 1, только на одну из 2п выходных линий. *' ] о о 1 1 *2 0 1 0 1 и 1 0 0 0 h 0 . 1 0 0 h 0 0 1 0 и о 0 0 1 Таблица истинности для дешифратора 2X4, где 2 — число входов, 4 — число выходов, приведена ниже. Систему булевых функций, определяющих дешифратор, можно записать следующим образом: k = 0, ... , 2"-\ В частности, для дешифратора 2x4 имеем 97
M*i. ^) = ^A=V2(I). M*i. *a)=^л= V 2(3). Такой дешифратор может быть реализован схемой! вентилей, приведенной на рис. 14. J При создании интегральных схем (ИС) возникает! проблема раскладки на плоскости проводников, со-1 единяющих вентильные схемы. Ее суть состоит в еле-J дующем: необходимо выбрать расположение вентилей! и соединений между ними, обеспечивающее допуски! на минимально близкое расположение параллельных! соединительных линий, пересечение проводников толь- ] ко под прямыми углами и наименьшее число этих пе- 1 ресечений. I На рис. 14 приведено расположение соединитель-! ных линий, в котором имеются три пересечения и 1 удовлетворяется требование перпендикулярности этих! пересечений. На этом примере видно, что даже для | простой схемы необходимо иметь два изолированных 1 друг от друга слоя, на которые наносятся проводные 1 линии. При реализации более^сложных комбинацион- 1 ных схем может понадобиться большее число слоев. I Перпендикулярность пересечений необходима для I уменьшения эффекта наводок. Здесь снова возникает I непростая математическая задача построения алго- I ритмов, минимизирующих число слоев и межслой- ] ных связей. В конечном итоге задача сводится к пре- ] образованию некоторой графовой структуры к виду,, 1 удовлетворяющему ряду ограничений. Читатель мо- I жет проверить даже на простом примере схемы с ! рис. 14, что, расположив на плоскости иным обра- I зом вентили и инверторы, он получит различные ха- ] рактеристики, например, по числу пересечений. Me- ] тоды решения задачи расположения вентилей и трас- | сировки сигнальных линий относятся к сравнительна \ новому наукоемкому направлению автоматизации ] проектирования радиоэлектронной аппаратуры, тре- j бующему совместной работы математиков, алгорит- ■] мистов и инженеров-электроников. ] Последнее замечание, касающееся математиче- ] ских проблем, возникающих при создании приборов- ] микроэлектроники на основе ИС, имеет следующее \ отношение к содержанию данного пособия. . 28 j
В настоящее время проектируется изготовление ИС по заказам, отражающим конкретную специфику их использования. С помощью заказных интегральных схем можно на уровне аппаратуры реализовы- вать некоторые функции программного обеспечения или логические функции, упрощающие создание программного обеспечения. Поэтому к работе по проектированию интегральных схем все шире привлекают- Х1 ф-ft tt^=D-- IW* Рис. 14 ■ Дешифратор 3*8 Рис. 15 ся математики-прикладники. Предприятия-изгото* вители заказных ИС в качестве документации к заказу требуют, как правило, фотошаблоны, указывающие точно все трассы и соединения в подлежащей изготовлению схеме. Работа по созданию алгоритмов трассировки тем самым возлагается на математиков, участвующих в таких разработках. Дешифраторы на укрупненных схемах, как, впрочем, и любые другие комбинационные схемы, обозначаются прямоугольником с указанием стрелки входа, стрелки выхода и «размерности» дешифратора (рис. 15). Дешифраторы широко используются в схемах управления памятью. На вход подается адрес той ячейки памятник которой мы хотим обратиться по записи или чтению. Адрес — целое число, представленное в двоичном виде, т. е. некоторым упорядоченным набором нулей и единиц. Этот набор определяет значения входных переменных. В результате подачи такого набора на входе дешифратора возбуждается одна и только одна выходная линия, которая в свою очередь возбуждает схемы только одной ячейки запоминающего устройства для выборки из нее информации или для занесения в эту ячейку новой информации. Схематически связь дешифратора с памятью представлена на рис. 16. 2&
Следующий часто используемый тип комбинации онных схем называется мультиплексором. Он имеет л=2т сигнальных и тп селектирующих (управляют адресный регистр ^11 | Дешифратор 1 Регистр записи |^-> запись j | | | шшшш ШШШШ mmmm шшшш шшшш шшш шшш шшшш Регистр считывания " памяти V т схемы '.отдельных разрядов - считывание Рис. 16 щих) входов и только один выход. Алгоритм его функционирования можно выразить следующим образом. Единственный выход мультиплексора принимает значение той вход- ^ ной сигнальной перемен- ■Х$ Н ной, номер которой ука« х1 rU зан набором селектиру- хг *j ющих сигналов. Если на- х3 J бор, поступающий по се- х4 J \тт^У лектирующим линиям, *5 ——*J представляет двоичное х6 ——Ji число k, то на единст- х А венном выходе появится I I значение входной пере- I ♦ k менной Xk. Крупноблоч- | | ) но мультиплексор представлен на рис. 17. Система булевых функций, вписывающая мультиплексор, выглядит следующим образом: So Si S* Рис. 17 /Wo» SV ••• t $«—It *09 *V ••• » Xtfti— 0 ==*fc» 30
где k = ^? 2ls(. Реализовать мультиплексор мож- i«0 но используя дешифратор по схеме, изображенной на'рис 18. *1 х* Si So Дешифратор 2*4 3> rD—4 SO 3> т=2 п=2т=Ь Рис. 18 Мультиплексор используется, например, для преобразования параллельного кода в последовательный. Переменные на входе х0, хг, ... , х2т~\ интерпретируются как некий код, передающийся по параллельным линиям (шинам). Если теперь на селекторные входы последовательно подавать наборы, соответствующие двоичным числам 0, 1, 2, ..., 2т—1„ то на единственном выходе получим сигналы, соответствующие разрядам 0, 1, 2, ... параллельного кода. Мультиплексор также широко используется в схемах управления, так как с его помощью на выход можно выдавать управляющие сигналы, зависящие от состояний других устройств, выраженных сигналами на входах. Следующая комбинационная схема, о которой надо сказать, — демультиплексор. Эта схема имеет один вход х, тп селектирующих (управляющих) входов и 2т=я выходов. Действие демультиплексора согласно его названию' прямо противоположно действию мультиплексора. Сигнал х направляется на тот выход, номер которого указан в селектирующем* наборе переменных. Система булевых функций, определяющая демультиплексор, может быть записана так: 31
ft(S0, Sv ... , Sm-lX) = X-S0°-Sl1 ... S^Y1, * = £ai-2\ i=o, i,..., 2m-i. Например, для m=2 /о fa» si> x) = x%Si> /a wo> ^i> •^/==*^ 50 s19 /3 ($о> Sp X) — X Sq S19 Реализовать демультиплексор можно опять же с ис« сюльзованием дешифратора по схеме, представленной на рис. 19. *-*• ^о —^* Is < < < =ttW« u у 55^ Рис. 19 Рис. 20 Следующая важная комбинационная схема — полный одноразрядный сумматор. В качестве трех его входов участвуют два' разряда складываемых операндов и один разряд — перенос из соседнего младшего разряда. Два его выхода означают результат суммирования s в данном разряде и перенос с в старший разряд, если такой произошел. Система булевых функций, определяющая его работу, запишется в виде s(x, у, z) = xyz + xyz + !cyz + xyzy с(х, у, z) = xyz+xyz + xyz + xyz. 32
Эти формулы могут быть упрощены следующим образом: с = ху+ (x®y)z и реализованы схемой вентилей, представленной на рис. 20. Многоразрядный сумматор получается последовательным соединением подобного рода одноразрядных сумматоров. Соответственно можно построить комбинационную схему вычитателя. Заметим, однако, что если реально соединить в общую комбинационную схему несколько схем сумматоров, то такая схема скорее всего работать не будет, так как в ней никак не учтены времена срабатывания вентилей. Этот недостаток может быть устранен добавлением вентилей, разрешающих или запрещающих работу схем в определенные такты времени, т. е. осуществляющих синхронизацию работы. § 1.5. ПОСЛЕДОВАТЕЛЬНОСТНЫЕ ЛОГИЧЕСКИЕ СХЕМЫ Последовательностные логические схемы, или схемы с памятью, как и комбинационные схемы, представляют собой функциональные элементы, имеющие п входов и т выходов. Однако функции выходов зависят не только .от значений входных переменных, но и от переменных, определяющих внутреннее состояние схемы. Очевидно, что значения этих внутренних переменных должны храниться внутри схемы, т. е. некоторым образом запомниться. Отсюда название — «схемы с памятью». В общем случае состояние схемы меняется каждый раз с появлением новых входных данных. Мы будем рассматривать схемы, у которых значения выходных переменных в момент t зависит от значений входных переменных, поступивших в этот момент, и от состояния схемы, сложившегося к этому моменту. Предполагается, следовательно, что наши схемы срабатывают в дискретные моменты времени по тактам. В некоторые дискретные моменты времени ... -.., tu ti+u ... происходит подача входных сигналов, получение выходных сигналов и изменение внутреннего состояния. Между моментами ti и tt+i внутреннее 2 Л. Н, Королев 33
состояние не меняется. Предполагается, что число внутренних состояний конечно. Это позволяет нам выразить каждое состояние двоичным числом и говорить о двоичных переменных, характеризующих внутреннее состояние. Последовательностная схема может быть описана' системой булевых функций вида УЛи) = !Л*<» *i. .-• . *л-ь Qo(^-i). Qi('t-i), ... ;; ...» Qs-i (ti-\))t j . . . , Q^! (ti-dh » A=0f ... f m—1, /=0, ... , s—1, где yk — значения выходов, Qj — переменные состояний, Xo, X\y ..., Xn-x — входные сигналы в момент //. Эту схему можно задать таблицей состояний, по-| добной таблице истинности. Очень часто в качестве внутренних переменных, характеризующих состояние системы в момент й+ь используются значения выходных переменных, полученные в момент ti. Такие схе« мы часто называются схемами с обратными связями. ' Мы будем рассматривать только синхронные последов ательностные схемы, внутренние состояния кото- * рых меняются только в дискретные моменты времени и зависят от поступивших внешних сигналов и предыстории. В каком-то смысле машина Тьюринга мо- | жет быть отнесена к последовательностным схемам. 1.5.1. Триггеры. Для начала мы рассмотрим простейшие последовательностные схемы триггеры — устройства, хранящие значения 0 или 1. В практике разработки устройств ЭВМ используется в основном небольшое число триггеров, имеющих различные логические возможности и свои собственные названия: базовый триггер-защелка, /^-триггер, //(-триггер, Г-триггер и D-триггер. Для создания триггеров используется схема, состоящая из двух вентилей НЕ-И, представленных на рис. 21. Здесь S — сигнал установки в единичное состояние, R — сигнал сброса (установка в нулевое состояние). Если R и 5 держать в состоянии 1, то триггер не будет менять своего состояния. Для того чтобы на выходе Q устано» вить 1, согласно схеме рис. 21 на вход S следует по- 34
о Для того чтобы сделать Q' равным 1, на R дать "» г-1* Л следует подать и. Поведение этой схемы формально может быть рписано следующим образом: с-^з-^+s, (3) Непременным условием правильной работы триггера с двумя выходами Q и Q' является соотношение Q'=* =£. Очень важно с точки зрения схемотехники иметь R — Рис. 21 Рис. 22 наряду с переменной и ее отрицание. Попробуем проанализировать эту формальную запись. Когда на входы R и S установлена комбинация 00, на выходах должны получиться Q и Q', равные 1. Если мы установим комбинацию S=0,_/?=1, то Q примет значение 1, a Q' — значение Q, Если мы установим входы S=l, /?=0, то Q станет равным 0, a Q'=Q=* = 1. Наконец, если подать н_а вход комбинацию И, то новыми значениями Q и Q будут те, которые уже имелись до этого момента. Вернемся к случаю подачи на вход R и S нулей, при которых наша формула дает значение Q = Q'=1. Как вы видели выше, установка #=S=1 сохраняет старое значение Q и Q'= ^Q. _Ho если Q и Q' не удовлетворяют соотношению Q'=Q, как в рассматриваемом случае (Q=Q'=1), то это состояние не сохранится и при установке #=S=1 будет неопределенным. В реальных условиях одновременно подать сигнал на два входа невозможно. На какой-то момент времени один сигнал (или его передний фронт) опередит другой, точно предсказать, что окажется на выходах — Q или Q\ невозможно (см. формулу (3)). Физические процессы, управляющие работой триггера, разумеется, не столь примитивны, как толь- 2* 35
ко что описано. При создании их учитывается и иг- рает существенную роль форма сигнала. Триггер ра^ ботает правильно, только если форма сигнала укла-\ дывается во вполне определенные рамки, соответствующие характеристикам диодов и резисторов, на которых выполнен тот или иной триггер. Некоторые схемы построены так, что меняют свое состояние по^ переднему фронту сигнала, т. е. в момент его нарастания, другие срабатывают по заднему фронту вход- „ ного сигнала, т. е. в момент убывания сигнала. В схемы триггеров вводят специальные элементы за- s держки, учитывают при их инженерном воплощении . возможные разбросы входных сигналов . по форме и по времени. Создание надежно работающих элементарных по- следовательностных схем, к которым, в частности, относится триггер, в свое время явилось крупным ин- ; женерным достижением. Таким образом* формулы I (3), характеризующие работу простейшего триггер- \ ного элемента, следует рассматривать скорее как . мнемонику, нежели как отражение реальной дейст- .' вительности. Работающий по вышеприведенным за- | конам триггер называется базовым или триггером- | защелкой. На основе триггера-защелки строятся другие j триггеры, работающие по некоторым другим зако1- j нам и имеющие свои собственные названия. В прак- ■ тике часто используется синхронный RS-триггер. Он имеет три входа 5, /?, Си. Вход 5 называется входом | установки 1, вход R — входом сброса или установки 1 0. Вход Си называется входом синхронизации. Изме- I нить свое состояние синхронный /?5-триггер может 1 только в том случае, когда на вход Си подан сигнал 1. Если Си=0, то триггер сохраняет свое состояние вне зависимости от значений, поданных на входы R и S. Этим он отличается от триггера-защелки, который может изменить свое состояние в любой момент при подаче сигналов R и 5. Таблица состояний синхронного /?5-триггера в предположении, что /ж—йв — 1, приведена ниже. Схема синхронного ^-триггера построена на рис. 22. Мы в дальнейшем будем' рассматривать синхронные, или тактируемые, схемы» которые меняют свое состояние только в том случае, когда переменная синхронизации равна 1. Поэтому в дальнейшем в таблицах состояний не будем выписывать столбец со значениями синхронизирующей 36
Си 1 1 1 1 0 s 0 0 1 1 X R 0 1 0 1 X QC+U Q(t) 0 1 ? Q(t) j 0 0 1 1 к 0 1 0 1 Qit+D Q(t) о 1 3(0 переменной. Тактом назовем моменты времени, когда эта переменная равна 1. Особо широкое использование в схемотехнике получил так называемый JK-триггер. Синхронный //(-триггер отличается от ^-триггера тем, что при #=S=1 он меняет свое состояние на противоположное, т. е. у него нет неопределенного состояния, так в триггере-защелке и в /^-триггере. Таблица, задающая работу //С-триггера, приведена ниже. Простой Т-триггер со счетным входом функционирует следующим образом: с приходом каждого нового сигнала, равного 1, он меняет свое внутреннее состояние на противоположное. Его ведена ниже. Наконец, т 0 1 <?(*+» Q(t) Q(t) D 0 1 QC+l) 0 1 таблица состояний при- D-триггер так же, как и Г-триггер, имеет один вход и работает согласно вышеприведенной таблице. Иными словами, он выполняет только функции хранения поданного на него значения переменной, и это значение может быть считано (скопировано) сколько угодно раз, пока его не сменит новое значение. Графическое изображение триггеров RS, JK, Т и D дано на рис. 23, Си — вход Рис. 23 37
синхронизации. Если Си=0, то никаких изменений в> триггерах не происходит. 1.5.2. Регистры. Триггеры — элементы, на основе! которых строятся регистры различного назначения.! Перечислим некоторые из этих устройств. 1. Регистр с последовательной записью и последо- вательным считыванием информации, или сдвиговый I регистр, изображен на рис. 24 и функционирует nq| считывание 1—\—г* I— запись сброс (очистка) Рис. 24 Аъ А2 Ai A0 ■ ♦ I ♦ , ♦ ■ ♦ и^. Сброс ТТ тт h h Рис. 25 Си следующему алгоритму. В такт /+1 из каждого разряда i регистра в соседний слева (старший) разряд! поступает значение переменной Qt(t)9 т. е. вся информация, расположенная j в разрядах регистра, сдвигается на один разряд. При1 этом младший разряд устанавливается в состояние, соответствующее сигналу, появившемуся на единственном входе регистра. Очевидно, что регистр с последовательной записью и последовательным считыванием может быть реализован на основе /?-триггеров. 2. Регистр с параллельной записью и параллельным считыванием изображен на рис. 25. Такой регистр может быть реализован на RS-, JK- и /?-триг- герах. 3. Регистр-счетчик изображен на рис. 26. Он функционирует так: на один вход в младший разряд регистра поступает в каждый такт сигнал 1 или 0. Сигналы 1 пересчитываются с использованием Г-триггера, который с приходом 1 меняет значение на противоположное. Схемы И управляют переноса^ ми из разряда в разряд. Можно проверить, что число сосчитанных единиц на входе будет выражаться в двоичном представлении, если удовлетворяются соотношения Qi(t+l)=Qi(t)@'Qi^(t)-... -Qi(0, где i — номер разряда. 38
4 Регистр-счетчик с параллельной записью и со считыванием широко употребляется для реализации счетчика команд в ЭВМ. Он имеет счетный вход, шины параллельной записи и шины параллельного чтения. Если разряды регистра реализованы с использованием Г-триггера, то, направляя параллельно на все Г-входы разрядов единичный сигнал, мы можем инвертировать все разряды регистра, т. е. все нули заменить на единицы и наоборот. Такой регистр называется ивертируемым регистром. 1* р_ __1 т Y- г° р 1 т I Чт± HJ д_ 1 i _L г Т± Г? L т 17бхое Рис. 26 Существует множество различных вариаций регистров: инверсные счетчики, регистры с параллельной записью и последовательным считыванием и, наоборот, с последовательной записью и параллельным считыванием. Арифметическо-логическое устройство (АЛУ) ЭВМ, как правило, включает в свой состав два регистра: регистр первого операнда (или регистр сумматора), регистр второго операнда и собственно комбинационные схемы, выполняющие арифметические и логические действия. В состав АЛУ входят регистры со многими перечисленными выше функциями. В самом деле, для выполнения операции вычитания, например, необходимо уметь инвертировать один из операндов. При выполнении арифметических действий под числами с плавающей запятой следует уметь выравнивать порядки. Соответственно необходимо уметь выполнять функцию сдвига. При этом число выполненных сдвигов надо считать, т. е. иметь счетчик сдвигов. Схемы регистров современных арифметико-логических устройств, как правило, многофункциональны. Вид функции, которую должна выполнять схема такого мно- 39
i гофункционального регистра, выбирается на основе! комбинации значений сигналов управления. Эти сиг-1 налы вырабатываются устройством управления ЭВМ 1 в процессе дешифрации команд программы. 1 Выше главное внимание уделялось описанию фун- ] кциональных логических возможностей ряда элемен- 1 тов вычислительной техники. В стороне остался один 1 очень важный аспект, связанный с их реальной рабо- 1 той. Описывая устройства, мы лишь упоминали роль 1 так называемых синхронизирующих переменных, или 1 синхроимпульсов. Роль этих переменных чрезвычай-1 но велика. Как известно, для срабатывания элемен-1 тарного логического элемента, вентиля или триггера, I необходимо некоторое время. Сигналы, которые мы 1 обозначали 0 и 1, устанавливаются на выходах через 1 промежуток времени т. Пока это время не пройдет, 1 новых сигналов на вход логической схемы подавать | нельзя. В вычислительных машинах существует уст- | ройство, называемое генератором тактовых сигна- i лов, которое и вырабатывает синхронизирующие сиг- * налы. ■; С функциональной точки зрения синхроимпульс — ■ единичное значение некоторой входной переменной, \ а логические схемы, комбинационные и последова- \ тельностные, могут выполнять свою работу только I в том случае, если эта переменная возбуждена (равна единице). Значение 1 на синхронизирующем вхо- ] де логических схем держится некоторое время, рав- } ное длине синхроимпульса. Все переходные процессы, j связанные с физическими процессами в электронных j схемах, должны завершиться к началу следующего сигнала синхроимпульса. Величина такта выбирается из следующего условия: она должна быть не мень- ; ше времени срабатывания самого медленного элемен- 1 та в цепях логических схем. Последнее утверждение j не совсем точно. В реальной вычислительной маши- 1 не, в ее центральной логической части, существуют 1 элементы, срабатывающие за разное время, поэтому реально в ЭВМ существуют несколько серий синхроимпульсов различной длительности, обязательно соизмеримых между собой, которые направляются на ' разные устройства в соответствии со скоростями их срабатывания. Итак, мы рассмотрели в общих чертах некоторые стандартные типы логических схем, комбинационных и последовательностных, которые позволяют на их
плавать вычислительные машины. Эти ти- 0СНОВ1м составляют наборы, или серии, интеграль- пы с^мм> производящихся в массовом количестве. § 1.6. ИНТЕГРАЛЬНЫЕ СХЕМЫ (ИС| чти схемы представляют собой комбинационные „„последовательные схемы, реализованные на од- u «юзе кремниевого кристалла, на основе довольна сложного, высокоточного технологического про- ,°а Этот процесс включает в себя создание логи- „!рки активных элементов путем внедрения в соответствующие точки кремниевой пластинки окислов пелкоземельных элементов, напыления металлических площадок. Таким путем в едином технологическом процессе удается создать на поверхности кристалла диоды, транзисторы, резисторы и проводники, связывающие отдельные вентили в единое целое Эпитет «интегральный» отражает не только объединение отдельных этапов производства схемы в один технологический цикл, но и то, что в такой схеме все заранее предусмотрено: формирователи фронтов сигналов, подвод питания, усилители, защита от помех Таким образом, интегральная схема представляет собой готовый продукт, не требующий каких- либо доработок, выполняющий вполне определенную заданную функцию. Интегральные схемы - те более крупные по сравнению с вентилями блоки, которые находятся в распоряжении инженера-проектировщика ЭВМ. В своем развитии серии чИС прошли несколько эта- пов Вначале появились так называемые ИС малой степени интеграции, содержащие на одном кристалле несколько десятков вентилей: дешифраторы 2X4, 3x8 мультиплексоры с 8-16 входами, двоичный параллельный сумматор на 2-4 разряда, счетчики на 4-8 разрядов, сдвиговые регистры различных типов также на 4-8 разрядов, параллельный двоичный умножитель, несколько типов запоминающих устройств. Период малых ИС - середина и конец 60-х годов. Им на смену пришли ИС средней степени интеграции содержащие уже сотни вентилей на одном кристалле (конец 60-х - начало 70-х годов). Соответственно в число-типовых логических схем, реализованных на их основе, входили те же по наименованию схемы, но с большим числом разрядов, входов и вы- 41
ходов: дешифраторы 4X16 или 8x64, 8- или ю-раа-Я рядные сумматоры, блоки памяти, содержащие не-| сколько десятков и даже сотен двоичных зарядов. 1 В начале и середине 70-х годов стали выпускаться! промышленностью так называемые большие инте-1 тральные схемы, состоящие из нескольких регистров.! Примерами таких схем могут служить целое арифме-1 тическо-логическое устройство, модуль управления! памятью и память, содержащая уже несколько тысяч 1 хранящих элементов. 1 В конце 70-х и начале 80-х годов для разработки Я машин стали выпускать так называемые сверхболь-Я шие интегральные схемы (СБИС), содержащие наш одном кристалле уже десятки и сотни тысяч актив-1 ных логических элементов. На основе СБИС удается I создавать оперативные запоминающие устройства из 1 модулей, содержащих 64, 256К и более битов инфор- Я мации, однокристальные ЭВМ, крупные управляющие I блоки и многое другое. 1 Для создания вычислительных машин и средств 1 цифровой автоматики в настоящее время использу- 1 ются все классы интегральных схем малой, средней, 1 большой и сверхбольшой степени интеграции. Серии 1 интегральных схем отличаются друг от друга быст- 1 родействием, энергоемкостью, стоимостью. Например, 1 современные сверхвысокопроизводительные ЭВМ, до- 1 стигающие производительности в сотни миллионов | операций в секунду, в качестве основной элементной I базы используют ИС средней степени интеграции I (СИС), но с очень высокими параметрами по быст- I родействию (по времени задержки на один вентиль). 1 При конструировании малых ЭВМ, персональных I компьютеров используют большие интегральные схе- 1 мы. В некоторых устройствах ЭВМ используются ИС 1 малой степени интеграции и даже отдельные полу- J проводниковые приборы, способные преобразовывать I электрические сигналы большой мощности. Посколь- | ку в дальнейшем изложении нам иногда придется I пользоваться такими понятиями, как быстродействие, 1 время срабатывания, тактовая частота, то здесь ]| имеет смысл привести систему единиц времени, упот- II ребляемую в вычислительной технике: 1 1 миллисекунда (мс) = 10~3с, ]1 1 микросекунда (мкс) = Ю-6 с, 1 1 наносекунда (не) = 10~9 с, || 1 пикосекунда (пс) = 10~12 с. I *2 I
п образности ниже приведены величины расстояний пробегаемых электрическим импульсом за эти единицГР4емени:км = 24 ш1о м^ ! мс _ 240 км = 24-107 мм, 1 мкс — 240 м = 24-104 мм, 1 не — 24 см = 24-10 мм, 1 пс — 0,24 мм = 0,24 мм. Тактовая частота вычислительных машин на сегодняшний день измеряется МГц. Частоте 1 МГц соответствует такт в Ю-6 с (1 мкс), частоте в 10 МГц — 100 не, частоте 100 МГц — 10 не. Соответственно этому следует понимать слова «схема работает в на- носекундном диапазоне». § 1.7. ЗАПОМИНАЮЩИЕ УСТРОЙСТВА ВЫЧИСЛИТЕЛЬНЫХ МАШИН В отличие от других функциональных схем, занимающихся переработкой информации, ее преобразованием, запоминающие устройства (ЗУ) выполняют только одну функцию — хранение информации. К запоминающим устройствам могут быть применены только две операции — считывание (выборка) и запись. Большинство запоминающих устройств устроены таким образом, что процесс выборки не меняет их содержимого — они как бы выдают во вне копию информации, которая в них продолжает храниться. При операции записи в том месте, куда адресована запись, старое содержание безвозвратно теряется и замещается новой информацией. Существуют понятия среды хранения и носителя информации. В качестве среды хранения используются магнитные покрытия, хранящие регистры, оптические плоскости, объемы различных веществ, обладающих электроакустическим свойством и многое другое. Соответственно носителями информации могут быть магнитные домены (намагниченные участки соответствующей среды хранения), электрические потенциалы, участки поверхности с различной пропускной способностью в отношении света, участки оптических поверхностей с разными направлениями поляризации, молекулы жидких кристаллов и т. д. Различают ЗУ с разрушающим считыванием, в которых после считывания информации следует восстанавливать копию, и ЗУ без разрушения информации,. 4$
когда процесс считывания не изменяет той информа, ции, которая была ранее записана. Вне зависимости | от физической сущности процесса запоминания по! своему функциональному назначению ЗУ делятся на| три крупных класса: | — регистровые внутренние запоминающие уст* 1 ройства (РЗУ); • — оперативные запоминающие устройства (ОЗУ);! — внешние запоминающие устройства (ВЗУ). | Регистровые запоминающие устройства входят I в состав центрального процессора, служат для проме-1 жуточного хранения данных, адресной информации/, управляющей информации. Эти запоминающие уст-' ройства обладают наибольшим быстродействием и, обычно невелики по объему. Оперативные запоминающие устройства составляют важнейший модуль любой ЭВМ, в них хранятся программы и данные, т. е. та информация, которая заставляет ЭВМ выполнять нужную нам работу в автоматическом режиме. Эпитет «оперативное», собственно, и говорит о том, что в ОЗУ содер- ; жится вся оперативно используемая информация. Временные характеристики и объемы ОЗУ в конеч- , ном итоге определяют производительность и функциональные характеристики ЭВМ в целом. В современ- ■ ных микро- и мини-ЭВМ объемы ОЗУ достигают : нескольких миллионов байтов, что соответствует ин- . формационной емкости нескольких томов книг. :t К классу внешних запоминающих устройств отно- ] сятся магнитные ленты, диски, барабаны, оптические ? запоминающие устройства. Существенно, что прямого > доступа к ним цетральный процессор не имеет. , Прежде чем воспользоваться информацией, хранящейся на ВЗУ, она должна быть перенесена в оперативную память. ВЗУ служат для хранения больших ? объемов информации, используются для создания ар- % хивов, баз данных долговременного хранения. Важ- I но и то, что информацию, находящуюся в ВЗУ, мож- I но переносить в буквальном смысле от одной ЭВМ к другой. ВЗУ представляют важный элемент в системах, требующих взаимного обмена информационными массивами. Каждый вышеперечисленный класс запоминающих устройств в свою очередь подразделяется на несколько типов, отличающихся своим функциональным назначением. 44
1 7 1 Запоминающее устройство с произвольной боо'кой (ЗУПВ), или в английской терминологии 1?АМ— random access memory, — адресное запоми- ющее устройство, состоящее из ячеек одинаковой наорядности. Оперативные запоминающие устройства ^сех классов ЭВМ представляют собой ЗУПВ. Принцип работы такого ЗУ состоит в том, что к нему за считыванием или записью информации обращаются по адресу той ячейки, из которой надо выбрать или записать новую информацию. Основные логические схемы, управляющие работой ЗУПВ, следующие: дешифратор адреса (ДА), буферный регистр считывания (БРС), буферный регистр записи (БРЗ), адресные шины (АШ), шины записи, шины считывания, шины управления считыванием и записью. Блок- схема ЗУПВ показана на рис. 27. АШ t ♦ ♦ ♦•-t ДА ±±Jl t\ □ □□ ттт ттт~ Рис. 27 ± Н \ ■• \ ] БРЗ S разряд ячейки ячейка памяти сигнал считыдания сигнал записи А БРС Двоичный код-адреса поступает на ДА и возбуждает линию, идущую к выбранной ячейке памяти. Эта линия открывает вентили, обеспечивающие передачу значения, хранящегося в каждом разряде выбранной ячейки, в соответствующий разряд буферного регистра считывания. При записи в ячейку памяти направление потока разрядной информации меняется на противоположное. Режим считывания или записи регулируется управляющими сигналами. Например, если мы хотим записать какую-то двоичную комбинацию в ячейку с адресом А, то мы сначала должны позаботиться о том, чтобы эта информация была передана по шинам записи в БРЗ. Затем мы 45
I должны позаботиться о том, чтобы двоичный код! адреса А попал на дешифратор, а сигнал управления 1 записью был послан в ЗУ. После этого произойдет! копирование информации с БРЗ в нужную ячейку! памяти. Слова «сначала», «затем», «после того» оз-1 начают некоторую последовательность тактов работы,, ] причем в каждом такте производится то или иное! специфическое действие. 1 1.7.2. Постоянные запоминающие устройства] (ПЗУ) находят все более и более широкое примене-1 ние главным образом в микро- и мини-ЭВМ, в бор- J товых ЭВМ, в средствах цифровой автоматики, а ] также в стационарных ЭВМ с микропрограммным! управлением. В английской терминологии такого! рода память называют ROM — read-only memory —1 память, работающая только на считывание. Ее блок- I схема почти такая, как у RAM за исключением I того, что отсутствует регистр записи — он не нужен. 1 Сами ячейки ЗУ выполнены таким образом, что ин- 1 формация в них не может быть изменена — она, как I говорят, жестко запаяна в памяти. Иными словами* ] информация, находящаяся в такой памяти, заранее I заложена в нее при изготовлении. В такой памяти 1 информация не разрушается. В обычном ферритовом i и электронном ЗУПВ всякое считывание, как прави- 1 ло, требует восстановления только что считанной информации, так как сам процесс считывания разру- ] шает информацию, хранящуюся в ячейке. При снятии \ электрического питания в энергозависимой памяти \ с произвольной выборкой -хранящаяся там информация пропадает. Память типа ROM лишена всех этих недостатков — ее содержание не меняется ни при каких обстоятельствах, кроме разве физического ее разрушения. Существовало и существует большое разнообразие способов изготовления памяти типа ROM, но принцип примерно один и тот же. Во время изготовления тем или иным способом уничтожаются либо часть логически активных элементов, либо физически разрушаются связи. Если себе представить, что в качестве исходной берется память, разряды каждой ячейки которой заполнены единицами или- элементами, которые при каждом обращении к ним могут выдавать только единичные сигналы, а затем часть «единиц» неким образом заменить нулем, та мы получим постоянное ЗУ, заполненное нужными наборами нулей и единиц. Существуют специальные 46
устройства — программаторы, с помощью которых производится начальная «запись» необходимых наборов в такое стандартное запоминающее устройство, первоначально заполненное единицами. Часто работа программаторов основана на том, что в разряды памяти которые должны содержать нули, поступает нал т0ка высокой силы и он реально выжигает соответствующий логический элемент. В некоторых программаторах для этой цели используется лазерный луч. 1.7.3. Ассоциативные запоминающие устройства /АЗУ). Ассоциативная память представляет собой массив ячеек, содержимое каждой из которых рассматривается как набор нулей и единиц. К этому устройству в общем случае запрос осуществляется заданием перечня разрядов, по которым следует производить поиск ячейки с заданным содержанием выделенных разрядов. Поиск осуществляется по двум регистрам: регистру-маске и регистру-контексту. Перечень разрядов для поиска задается в регистре-маске. Этот регистр имеет такую же разрядность, как и ячейка памяти АЗУ, и содержит единицы только в тех разрядах, по которым ведется поиск. В регистре-контексте задается содержание этих разрядов, т. е. та комбинация нулей и единиц, которую устройство будет отыскивать в ячейках АЗУ. Его размерность совпадает с размерностью регистра-маски. Если ячейка с заданной комбинацией найдется, то АЗУ дает положительный ответ с указанием места расположения найденной ячейки, в противоположном случае — отрицательный ответ на запрос. Поиск по контексту производится либо на точное совпадение комбинаций в регистре-контексте и в проверяемой ячейке, либо на выполнение отношений больше — меньше. В памяти может быть несколько ячеек, имеющих одинаковое содержание в разрядах, указанных в регистре-маске, которое совпадает с содержанием регистра-контекста. В подобных случаях обычно поиск призводится в несколько тактов: сначала отыскивается номер первой такой ячейки, затем (в следующий такт работы) второй и т. д. Номер найденной ячейки передается на дешифратор адреса, и все содержимое такой ячейки можно считать или записать в нее новое содержание. Блок-схема рассмотренного запоминающего устройства представлена на рис. 28. 47
Ассоциативное заполняющее устройство можно мыслить себе как массив из п булевых векторов Ь[1], Ь[2], ..., Ь[п], каждый из которых содержит т двоичных компонент. Обозначим буквой k вектор-, контекст, буквой г — вектор-маску. Ячейки памяти АЗУ Регистр считывания Регистр - контекст К 2 ж ж Ж tit ш ч 1/11 Регистр-маска I ж г ш t t п Н И ш 1 рши ьшп lit lit* в ил Рис. 28 в ЦП Регистр номера позиции совпадения ♦ 4 ♦ iff Дешифратор считывания т т т т t f т f Тогда алгоритм работы АЗУ может быть сформулирован следующим образом: одновременно для всех f= С/Г выполнить следующую проверку истинности логического выражения (6МЛ')-(*Лг): (*> для всех выражений вида (*), принимающих значение истины, запомнить (выдать) соответствующие значения индексов i и векторов Ь [i]. Логические операции в выражении (*) понимаются как покомпонентные над всеми разрядами ячейки ассоциативного ЗУ. Для описания алгоритма работы АЗУ мы не воспользовались формализмами обычных языков программирования по той простой причине, что в них нет средств указания параллелизма в выполнении операций. Самое же существенное в работе АЗУ именно то, что поиск информации по контексту в них осуществляется параллельно — по всем ячейкам памяти одновременно. АЗУ значительно дороже обычных 48
адресных запоминающих устройств, но наличие такого устройства в ЭВМ резко ускоряв! решение всякого рода поисковых задач. Кроме всего прочего, любое адресное запоминающее устройство можно рассматривать как частный случай ассоциативного. В самом деле, если каждую ячейку памяти дополнить разрядами, содержащими ее адрес (к каждой ячейке «пристегнуть» ее адрес), то функции так организованного ассоциативного запоминающего, устройства будут эквивалентны функциям обычного адресного запоминающего устройства. Надо только задать в разрядах регистра-маски, соответствующих адресам, единицы, а в регистре-контексте — искомый адрес. Ассоциативные запоминающие устройства нашли в последнее время применение в качестве «сверхоперативных» запоминающих устройств, чаще их называют памятью типа КЕШ (скрытая память). КЕШ имеет следующее функциональное назначение. Команды и данные, выбранные из ОЗУ, поступают одновременно и в центральную часть ЭВМ, и в сверхоперативную память вместе с кодом своего адреса по ОЗУ. Прежде чем обратиться к ОЗУ, логические схемы центрального процессора пытаются отыскать нужную информацию в сверхоперативной памяти. Этот поиск производится на основе механизма ассоциативного поиска, где в качестве контекста выступает адрес по ОЗУ. Если искомая информация найдена в скрытой памяти, то она без особого замедления поступает в центральный процессор. В противоположном случае происходит обычное обращение к более медленному ОЗУ. Поскольку объем скрытой памяти ограничен, то может оказаться так, что весь ее объем уже занят. Тогда вновь затребованная информация из ОЗУ замещает в скрытой памяти те данные, обращения к которым давно уже не было. В результате в скрытой памяти «оседает» та информация, которая используется, наиболее часто. Это экономит число обращений к основной оперативной памяти и тем самым ускоряет общее время, затрачиваемое ЭВМ на решение задач. Существует понятие времени доступа к ОЗУ — минимального времени, которое должно пройти между двумя обращениями к ОЗУ. Оно отчитывается от момента поступления адреса на дешифратор' до момента появления слова на буферном регистре считывания или до завершения записи в нужную 4&
ячейку. Время доступа в скрытую память в несколько раз меньше времени доступа к ОЗУ. Именно за счет этого и достигается выигрыш в общей производи* тельности ЭВМ в два-три раза. Другие типы запоминающих устройств, образующих так называемый класс внешних запоминающих устройств, мы рассмотрим в разделе, посвященном общей организации микро- и мини-ЭВМ. Перечисленные выше типы запоминающих устройств — RAM, ROM — и ассоциативное запоминающее устройство входят в состав центральной части ЭВМ — ее центрального процессора. Время обращения к ним не зависит от физического расположения искомой информации в ячейках памяти. § 1.8. ПОНЯТИЕ О ЯЗЫКЕ ЛОГИЧЕСКОГО ПРОЕКТИРОВАНИЯ 1.8.1. Способы описания работы ЭВМ. Для точного описания функционирования комбинационных и последовательностных схем были использованы аппарат булевых функций, таблицы истинности, таблицы состояний. Когда речь идет о точном описании функционирования ЭВМ, перечисленных выше средств недостаточно. Пожалуй, главным принципиальным отличием между функционированием отдельных элементов и функционированием систем, собранных из них, является параллелизм работы. Уже при описании алгоритма работы ассоциативного запоминающего устройства потребовалось явным образом указывать на такой параллелизм и имеющихся в нашем распоряжении формальных языковых средств оказалось недостаточно. В то же время необходимость в точном описании параллельного взаимодействия узлов и модулей ЭВМ существует. Точное описание необходимо не только для пояснения алгоритмов работы ЭВМ, но и на этапе ее проектирования. Обратимся к процессу проектирования ЭВМ. При наличии необходимого набора интегральных схем разработка логической структуры ЭВМ составляет содержание схемотехники. Для описания алгоритмов функционирования отдельных устройств и машины в целом используются различные языки. В этом разделе мы рассмотрим язык «самого низкого уровня» из всех известных языков, связанных с вычислитель- 50
лыми машинами. Следуя принятой терминологии, мы будем его называть языком межрегистровых передач (МРП). Смысл такого названия будет ясен из дальнейшего изложения. В то же время язык МРП может служить одним из примеров объектно-ориентированного языка и языка задания параллельных процессов. Мы назвали его "языком самого низкого уровня, так как он имеет дело с весьма тонкими деталями выполнения алгоритмов на ЭВМ и прежде всего с деталями функционирования самой вычислительной машины. Главным образом язык МРП предназначен для описания логической структуры цифровых аз- томатов. К объектам, на которые воздействуют алгоритмы, записанные на МРП, относятся: — регистры разных типов и назначений; — шины и отдельные линии передачи двоичной информации; — управляющие и синхронизирующие сигналы; — комбинационные схемы различных типов; — запоминающие устройства, воспринимаемые как массивы или множества регистров. Из этих объектов, по существу, и состоит центральная часть любой вычислительной машины. Основная масса операций, выполняемых при работе цифрового автомата типа ЭВМ, состоит в передачах информации из одного регистра на другой, изменении содержимого регистров, формировании управляющих и синхронизирующих сигналов, управляющих меж* регистровыми передачами и преобразованием информации, хранящейся на этих регистрах. Как мы уже знаем, регистры каждого типа выполняют специфические, только им свойственные функции. Тем самым тип регистра определяет то множество операций, которые можно к нему применить. Например, к сдвиговому регистру можно применить операцию сдвига, операцию передачи информации, хранящейся на нем, в другой регистр, операцию передачи на него информации из другого регистра: Можно также (это относится к любому регистру) заблокировать его работу, подав соответствующий управляющий сигнал. Регистры с параллельной записью и параллельным считыванием могут воспринимать только две операции: считывание и запись. Объекты, с которыми имеет дело язык МРП, связаны с вполне определенными интегральными схемами, с помощью которых они реализованы. Если ста- 51
вится задача описания цифрового устройства на ос- I нове заданной номенклатуры интегральных схем, то I в качестве допустимьх объектов языка МРП высту- 1 пают только те типы объектов, которые соответству- 1 ют заданной номенклатуре. 1 Очевидно, что язык МРП может быть использован I в качестве инструмента структурного проектирования, I т. е. проектирования, абстрагированного от учета фи- I зических процессов и физических свойств электрон- I ной аппаратуры. В программировании мы всегда I имеем дело с алгоритмическими процессами, рабо- I тающими по шагам. Понятию шага алгоритма в дан- 1 ном случае соответствует важное понятие такта 1 работы. Если в привычных нам алгоритмах понятие I шага весьма расплывчато — шагом можно назвать 1 выполнение одного простого или одного сложного i (такого, как цикл) оператора, то в языке МРП по- 1 нятие такта имеет четкий физический смысл. Такт 1 прямо соответствует промежутку времени между 1 тактирующими импульсами вычислительной системы. | В течение такта выполняются все действия, указан- | ные в операторах языка МРП. Кроме понятия такта | существует также понятие цикла работы устройства. I Цикл состоит из нескольких тактов, имеющих свои 1 собственные названия, например Ти Г2, ..., Тп. Если | речь идет о работе арифметическо-логического уст- Я ройства, то цикл его работы состоит из приема one- ч ранда на первый регистр сумматора, приема операнда на второй регистр сумматора, выполнения сложения с запоминанием результата в регистре результа- : тов. Перечисленная последовательность операций и составляет стандартный цикл работы АЛУ, состоящий из трех тактов. Реально «нумерация» тактов внутри цикла достигается тем, что с каждым последовательным появлением синхронизирующего сигнала, идущего от общего генератора тактовой частоты ЭВМ, возбуждаются последовательно одна за другой сигнальные линии. С логической точки зрения это означает, что имеется некоторая схема, на вход которой через равные промежутки времени поступает единичный сигнал, а на нескольких выходах Ти Т2,... ..., Тп последовательно появляются единичные сигналы, идентифицирующие такт, соответствующий данному моменту времени. После того, что сказано выше, понятно назначение языка межрегистровых передач: язык должен позво- 52
лять четко и однозначно описывать действия, происходящие в дискретном устройстве в каждом такте цикла его работы. Однако действия, происходящие в некотором такте цикла, зависят не только от номера такта, но и от ряда других условий, связанных с внутренним состоянием отдельных регистров, разрядов, наличием иных управляющих сигналов. В основном операционном предложении языка МРП (или оператора) указываются условия и списки действий, которые могут быть выполнены, если условие истинно. В реальных устройствах, как правило, в один такт цикла могут выполняться параллельно несколько действий: несколько передач между регистрами и преобразований информации, находящейся в них. Следовательно, язык МРП должен быть приспособлен и к описанию параллельных процессов. Как всякий формальный алгоритмический язык, v МРП можно строго описать. Однако в данном разделе ставится задача дать только общее представление об этом своеобразном алгоритмическом языке, поэтому не будем говорить о его синтаксисе и формальных правилах записи выражений, остановимся лишь на способах описания объектов и их типов. Каждому объекту описываемого устройства присваивается свой индивидуальный идентификатор. Идентифицируются каждый регистр, каждая шина, отдельные линии передачи, каждый управляющий сигнал. Конечно, можно выбирать идентификаторы типов произвольным образом, из соображений хорошей мнемоники, а можно выбрать в качестве идентификатора типа и заводской маркер, соответствующий интегральной схеме. Так, идентификатор К 155 ИМ 2 является заводским маркером двухразрядного сумматора 155-й интегральной серии. Важную часть языка составляют описания типов, включающие наименование типа и список идентификаторов объектов, относящихся к данному типу. Например, если идентификатор типа, обозначающий четырехразрядный хранящий регистр с параллельной записью и считыванием, нами обозначен как РП4, а описываемое нами устройство включает 5 таких регистров с именами Р1, Р2, РЗ, Р4, Р5, тогда в разделе описаний языка МРП должен присутствовать фрагмент ТИП РП4 (0 : 3) Р1, Р2, РЗ, Р4, Р5; В скобках указаны размерность (разрядность) типа 53
и способ нумерации разрядов от 0 до 3. Отдельные сигналы, значениями которых могут быть только 0; или 1, относятся к одному общему типу одноразрядных регистров. Соответственно в описаниях может ' присутствовать фрагмент вида I ТИП S: SI, S2, S3, S4, Т1, Т2, Т5; где S — идентификатор типа, соответствующий одно- разрядному регистру. Описание типов объектов не- * обходимо для контроля правильности построения: операторов языка и тем самым правильности работы описываемого устройства. Несколько слов следует сказать о типе, который соответствует шинам параллельной передачи данных. Физически объект типа шины представляет собой группу проводов (линий), по каждому из которых может передаваться значение одной переменной. Передача предполагается синхронной, т. е. выполняемой за один такт. Линии шины и разряды регистров упо- ■ рядочены, т. е. имеют свои номера. Тем самым регистры и шины можно интерпретировать как одномер- 1 ные массивы булевых переменных. При описании и 1 проектировании устройств иногда возникает необхо- I димость выделять отдельные разряды регистров и | шин, т. е. конкретные элементы массива. Соответст- | венно появляются аналоги переменных с индексами. | Например, если в выражении языка МРП появляется % обозначение Р1 (3), то речь идет о третьем разряде : регистра Р1. Таким образом, в языке предусмотрены операции как над целыми регистрами, так и над отдельными разрядами этих регистров. 1.8.2. Операционное предложение языка МРП. Основной операцией языка является операция передачи. Она обозначается стрелкой (-<-), указывающей направление передачи. В языке допускаются операции взаимодействия объектов разных типов. Пусть у нас, например, имеется тип 16-разрядных регистров и тип 8-разрядных регистров с параллельной записью и считыванием. Выражение Р1(8: 15)-<-Р2(0 : 7) означает, что содержимое разрядов с нулевого по седьмой из регистра Р2 передается в разряды с 8 по 15 регистра Р1. Допустима и такая запись: Р1 (8: 15)-<- «-Р2, при этом предполагается, что Р2 относится к типу 8-разрядных регистров. Структура операционного предложения (ОП) МРП следующая: (ОП>: := [(метка)]*— (условное выражение): (список действий); 54
(метка): : = (идентификатор); /Условное выражение является формулой булевой алгебры с переменными, принимающими значения О или 1, например Т1-Т2+ТЗ.) (список действий): : = (микрооперация) | (список действий), (микрооперация); Как мы уже говорили, основной микрооперацией языка является передача из регистра в регистр. Можно было бы, вообще говоря, ограничиться только этой одной операцией. Она в нашем предметном рассмотрении универсальна. В самом деле, для того чтобы какая-либо комбинационная схема выполнила свою работу, на нее нужно передать набор значений входных переменных. Для того чтобы выполнил свою функцию регистр того или иного типа, на него достаточно передать значения переменных, взятых из другого регистра или из отдельных линий, несущих управляющие сигналы. Например, чтобы сумматор выполнил свою работу, на его регистры нужно передать значения двух операндов, взятых из других регистров памяти или снятых с шин. Однако такая детализация, требующая описания всех инициализирующих тот или иной регистр передач, не всегда удобна, поэтому среди микроопераций допускаются и более сложные микрооперации типа сдвига на один разряд вправо, влево. Если некоторый регистр А относится к типу счетчиков, то запись Вч-А+1 означает, по существу, две^ микрооперации, выполняемые за один такт: прибавление к счетчику единицы и передача его содержимого в регистр В. Язык в принципе позволяет расширять символы операций над регистрами. Например, передача инвертированного кода с регистра А на регистр В может обозначаться так: В^-А. Семантика «выполнения» операционных предложений МРП состоит в следующем. Просматриваются все условные выражения всех операционных предложений операторов. В тех операторах, где условие истинно, параллельно «выполняется» весь список микроопераций, следующий за условием, т. е. одновременно выполняются несколько операционных предложений и несколько списков микроопераций. Коллизии, которые могут при этом возникнуть, указывают на неправильно спроектированное устройство. 55
Перейдем к рассмотрению некоторых примеров. Попытаемся описать на языке межрегистровых пере~| дач функционирование АЛУ, включающего сумматор, параллельного действия. Сумматор будем рассмат-1 ривать как единое целое, хотя в его состав входяг| несколько функционально законченных логических схем: накапливающий регистр, комбинационные схемы, осуществляющие так называемый быстрый перенос, комбинационные схемы, собственно осуще- | ствляющие процесс суммирования, схемы, определяющие появление переполнения и знак результата, и ряд других схем. Такой сумматор АЛУ будем считать функциональным регистром, имеющим п входов для приема разрядов операнда. Управляющие входы указывают, какое надлежит выполнить действие: сложение (СЛ), вычитание (ВЫ), поразрядное умножение (И), поразрядное сложение (ИЛИ), инверсию (НЕ). Выходами регистра сумматора мы будем считать: признак знака S, признак переполнения С, признак нулевого результата Z и сам п-разрядный результат. По ходу изложения будем вводить идентификаторы объектов. Вторым регистром в нашем гипотетическом АЛУ будет /г-разрядный регистр опе- АЛУ шШГс ГОТ т ВНЕШ "1 РО 2 ВНУШ РСП СУМ ТО1 а ! ВЫХШ I СЛ ВЫ И ИЛИ НЕ I "Mfi t Г t Выд 7"; Т2 7*з Т4 СИ Рис. 29 ранда РО, который связан с внешним миром я-раз- рядной шиной ВХШ и с регистром сумматора внутренней шиной ВНУШ. На рис. 29 представлена блок- схема нашего АЛУ. 56
Из приведенной блок-схемы видно, что объектами алгоритма, описывающего функционирование АЛУ, являются: регистр СУМ, его тип обозначим через А (1 :я); хранящий регистр РО, его тип обозначим через В (1 : л); — одноразрядные регистры Z, S, С, ГОТ, их тип обозначим через С; шины параллельного приема/выдачи ВХШ, ВЫХШ, ВНШ, их тип обозначим через Ш (1:п); наконец, имеются сигнальные линии, связанные с регистрами Z, S, С, и одноразрядные регистры, хранящие тип выполняемой АЛУ операции (СЛ, ВЫ, И, ИЛИ, НЕ). Кроме того, на схеме обозначены входные сигнальные линии Т1, Т2, ТЗ, Т4 и СИ, которые несут информацию о номере такта работы АЛУ и синхронизации. Мы опустим здесь раздел описания типов — выше на содержательном уровне типы объектов описаны. Перейдем к составлению операционных предложений алгоритма работы нашего АЛУ. Выраженный неформально алгоритм работы состоит в следующем. В первый такт работы происходит прием операнда в РО при условии, что АЛУ готово к работе (ГОТ=1). Условие, определяющее возможность выполнения передачи с внешней шины (ВНЕШ) операнда на регистр операндов РО, записывается в виде выражения гот-тьси Это выражение принимает значение 1 (истины) в том и только том случае, когда одновременно сигнал ГОТ и сигнал Т1 равны 1. Кроме того, передача может произойти только в том случае, если в этот момент сигнал синхронизации также равен 1. Во второй такт работы в зависимости от значений сигналов, определяющих тип операции, производится лередача информации с РО в регистр СУМ и осуществляется соответствующее действие. В третий такт производится коррекция результатов поразрядных операций, а именно: работают схемы сквозного переноса, корректируется младший разряд сумматора для представления чисел в дополнительном коде. Заметим, что необходимость корректировки результата может возникнуть только после 57
операций сложения и вычитания. После логических поразрядных операций в действиях, связанных с тактом ТЗ, необходимости не возникает. При простейшей' организации АЛУ в период этого такта может не производиться никаких действий, т. е. АЛУ в этом такте может простаивать. Кроме того, может потре-; боваться еще один такт Т4 для передачи результата во внешний мир по выходной шине (ВЫХШ). Схема операционной части программы, описывающей работу АЛУ, выглядит следующим образом: ГОТ-Т1: РО^-ВНЕШ; ГОТ+-0; (СЛ + И+ИЛИ).Т2: СУМч-РО; ВЫ-Т2: СУМ-*-РО^ НЕ-Т2: ВЫХШч-РО; ГОТч-1; ТЗ: работа схемы сквозного переноса Т4: ВЫХШ^-СУМ В этой схеме в прямоугольник заключены действия, I выполняемые в такте ТЗ. Они должны быть детали- | зированы и превращены в список микроопераций над J регистрами многофункционального сумматора, реги- £ стровый состав которого мы не расшифровали, обо- ^ значив его общим названием СУМ. Синтаксис язы- i ка МРП, разумеется, не допускает подобного рода обозначений действий, происходящих в соответствующих тактах. Однако в языке предусматривается возможность указаний переходов на подпрограммы, описывающие детальные процедуры выполнения тех или иных действий. Наша цель — дать только самые общие представления о языке МРП, чтобы в дальнейшем иметь возможность использовать его фрагменты для описания алгоритмов функционирования некоторых устройств ЭВМ в более строгой по сравнению со словесной форме. Для описания таких алгоритмов часто используются языки ПАСКАЛЬ и АЛГОЛ. Однако средства этих языков оказываются недостаточными в том случае, когда речь идет об описании параллельно протекающих действий. Хотя язык МРП в смысле наглядности уступает этим языкам высокого уровня, он хорошо приспособлен к описанию «микропаралле- 58
лизма», который свойствен процессам, протекающим в логических схемах дискретных устройств. Если проанализировать наш алгоритм, то окажется, что он обладает недостатком: вне зависимости от 'того, какую операцию должно выполнить АЛУ, двухтактовую или многотактовую, оно будет занято в течение всех тактов и в ряде случаев просто простаивать. Устройства такого рода называются устройствами с жестким циклом. Здесь неявно предполагается, что с появлением каждого тактирующего сигнала СИ происходит переход к следующему по номеру такту, т. е. номер такта навязывается устройству извне. Этого можно избежать, включив схему генерации номеров тактов внутрь устройства, что позволит, необходимым образом меняя значения тактов, пропускать их, не теряя при этом времени. Для этого в каждом операционном операторе должен быть укдзан номер такта, который возбуждается после выполнения списка микроопераций. § 1.9. МИКРОПРОГРАММИРОВАНИЕ Из рассмотренного выше примера описания работы многофункционального арифметико-логического устройства следует, что функции, выполняемые им в цикле работы, состоящем из нескольких тактов, однозначно определяются комбинацией управляющих сигналов СИ, Т1, Т2, ТЗ, Т4, СЛ, ВЫ, НЕ, ГОТ и т. д. Конкретные значения большинства из этих сигналов вырабатываются вне АЛУ. Устройства, форми* рующие вектор значений управляющих сигналов, называются устройствами управления. Таких устройств в ЭВМ может быть несколько. Как правило, с каждым более или менее сложным модулем ЭВМ связано свое устройство управления, своя система управляющих сигналов. Это относится к таким узлам ЭВМ, как арифметическо-логическое устройство, оперативное запоминающее устройство, дешифратор команд, регистровое запоминающее устройство. Физически каждый сигнал управления открывает или блокирует группу вентилей, возбуждая или выключая из работы тот или иной узел ЭВМ, ту или иную схему. Образно говоря, сигналы управления выполняют роль шлюзов или плотин, регулирующих потоки информации, протекающей по многочисленной и сложной сети каналов, объединяющих отдельные 59
узлы ЭВМ в единое целое. Можно выделить крупные шлюзы и плотины, регулирующие движение по боль-: шим магистралям, и более мелкие устройства, регулирующие движение в притоках. В ЭВМ устройства управления также образуют некоторую иерархичес- ■ кую систему. Центральное устройство управления ре-j гулирует поток информации между крупными узлами] ЭВМ, местные устройства управляют потоками ин- ] формации внутри отдельных устройств. В зависимости от способа получения управляющих сигналов устройства управления делятся на схемно-реализованные и микропрограммно-реализованные. Схемная реализация устройства управления основана на том, что создается логическая (чаще всего комбинационная) схема, на вход которой поступают^ управляющие сигналы от устройств более высокого уровня иерархии, а на выходе получается система сигналов, управляющих работой того или иного узла. Как мы знаем, работа ЭВМ основана на том, что * она автоматически выполняет команды программы. . Таким образом, самый высокий уровень иерархии управления состоит в анализе информации, содержащейся в машинной команде. Машинную команду, f представляющую собой вектор из нулей и единиц, в некотором смысле можно рассматривать как сово- . купность управляющих сигналов. Разряды кода операции поступают на вход комбинационной схемы, которая, по сути дела, является дешифратором. На I выходе этого дешифратора возбуждается одна из | нескольких линий. Если вернуться к АЛУ, то как | раз управляющие сигналы, характеризующие ту one- ] рацию, которую следует выполнить, поступают от дешифратора кода операций. В редких случаях удается реализовать схему, генерирующую сигналы управления в виде простого дешифратора; как правило, эти схемы представляют ! собой комбинационные схемы с п входами и т выходами. Такие схемы, как мы знаем, описываются системой булевых функций, реализованных с использованием вентилей различного назначения. Иными словами, схемная реализация устройства управления предполагает создание соответствующей комбинационной схемы, и всякое изменение управления требует создания новой комбинационной схемы, что эквивалентно перепроектированию ЭВМ. 60
Микропрограммный принцип реализации устрой- тва управления основан на том, что любую комби- саЦИонную схему можно реализовать запоминающим Устройством, т. е. все необходимые комбинации управляющих сигналов заранее записываются в память типа ПЗУ. Входные сигналы: тактовые импульсы сигналы о состоянии управляемых устройств — после некоторых логических преобразований поступают на дешифратор адреса этой памяти, и из нее извлекается необходимая комбинация управляющих сигналов. Комбинационная схема может быть однозначно задана таблицей истинности, приведенной ниже. Эту таблицу можно интерпретировать как таблицу, за- *0 0 0 1 1 0 0 1 1 . . . *Л-1 0 1 0 1 'о 0 1 0 0 '* 1 1 1 0 1 ... '«-1 1 0 о 1 дающую соответствие между наборами значений п входных переменных Хо, хи . •, Хп-\ и наборами, характеризующими значения выходных функций /о, /ii •••> /m-ь Запоминающее устройство состоит из 2п ячеек, каждая из которых имеет т разрядов, следовательно, по своим функциям оно сможет заменить любую комбинационную схему с п входами и т выходами (см. рис. 30). Входы х0 х1 fz fi fo Выходы Ж г l"! считывания > 2 ячеек т разрядов Рис. за 61
Последовательность управляющих сигналов, nocJ тупающих из такого запоминающего устройства! можно рассматривать как некоторую программу! определяющую функционирование управляемых схем! дискретных устройств. Набор управляющих сигна! лов несет информацию о тех микрооперациях, кото! рые должны быть выполнены устройствами в данный временной такт. Правомочно поэтому назвать строки! памяти микрокомандами, а их объединение — микШ ропрограммой. 1 Каждый управляющий сигнал связан с конкрет! ной микрооперацией, которая должна быть выполне! на, если он принял значение 1. Следовательно, двоич! ный набор микрокоманды можно рассматривать каЛ перечень тех микроопераций, которые возбуждаются устройством управления для параллельного, одно! временного выполнения в различных устройствам! ЭВМ. Комбинацию на входах можно рассматривать как информацию о тех условиях, при которых долж-1 на быть возбуждена соответствующая группа микро! операций. В этом можно усмотреть связь с языковш межрегистровых передач. Если угодно, то микропрог! раммный способ управления можно рассматривать! как машинную реализацию этого языка. ! В некоторых различных по своему функциональ-i ному назначению циклах работы ЭВМ выполняются! группы одинаковых микрокоманд. Например, приЙ разных по смыслу обращениях в основную память за|| командой или за данными необходимо выполнить! одинаковую группу микрокоманд, формирующих ад-у рее по памяти, вызывающих этот адрес на дешиф-1 ратор оперативной памяти с учетом сигналов ее го-1 товности к работе. Такие группы микрокоманд формируются в микроподпрограммы. Возможность использовать подпрограммы значительно экономит микропрограммную память. В то же время это требует усложнения микропрограммного устройства управления. В нем в том или ином виде должны существовать аппаратные средства, обеспечивающие переход к подпрограммам, возврат из подпрограмм, команды условного и безусловного переходов. Итак, микропрограммная реализация системы управления позволяет программировать микрооперации, выполняемые различными регистрами ЭВМ, в желаемой последовательности. При этом, меняя содержимое памяти, содержащее указания на после- 62
довательность микроопераций, можно в некоторых пределах менять эту последовательность, а вместе с ней и характер функционирования вычислительной машины. В области микропрограммирования сложилась следующая терминология, довольно близкая к понятиям, связанным вообще с программированием. Микрооперация — элементарное действие, соответствующее передаче информации из одного регистра в ДРУГ°Й> выполнению элементарных сдвигов в рамках одного регистра, передаче данных в шины. Считается, что каждая микрооперация возбуждается засылкой сигнала во вполне определенную сигнальную линию, связанную непосредственно с данными регистрами. В первом приближении можно считать, что в каждый такт^работы ЭВМ выбирается из микропрограммной памяти следующая по порядку ячейка (микрокоманда), содержащая набор нулей и единиц, которые преобразуются в управляющие сигналы, передаваемые всем устройствам ЭВМ в данный такт работы. В следующий такт происходит выборка следующего слова из микропрограммной памяти. Ячейки этой памяти часто называют управляющимш словами, а саму память — управляющей памятью^ или памятью управляющих слов, или реже команд- ником. Как мы уже отмечали, такие укрупненные операции, выполняемые ЭВМ, как сложение, умножение,, деление, требуют для выполнения целой последовательности микроопераций и нескольких тактов работы. Каждой такой укрупненной операции в управляющей памяти соответствует целая группа микрокоманд, представляющих своего рода подпрограмму выполнения укрупненной операции. Сама управляющая память нуждается в собственной системе управления, которая обеспечит должную временную последовательность выборки управляющих слов, организацию циклической выборки микрокоманд, переход на подпрограммы. 1.9.1. Горизонтальное и вертикальное микропрограммирование. В зависимости от того, как кодируются значения управляющих сигналов в микрокомандах, различают горизонтальное и вертикальное микропрограммирование. Выше, разъясняя основной принцип микропрограммной реализации управления, мы предполагали, 63
что с каждой микрооперацией в управляющем слове! связан один индивидуальный разряд, который Ин-1 формирует о том, следует или не следует выполнять! данную микрооперацию в данном такте работы. Сле-1 довательно, в управляющем слове должно быть! столько разрядов, сколько имеется различных микро-1 операций и соответствующих им устройств, которые! могут функционировать. Чем больше различных мик«1 роопераций, тем, следовательно, должно быть боль-1 ше разрядов в управляющем слове. ! Устройство управления непосредственно преобра-! зует каждый разряд выбранного из памяти управ-И ляющего слова в соответствующий управляющий! сигнал. I При таком способе задания управляющих сигна-1 лов чем сложнее ЭВМ, чем большее число микроопе-1 раций она способна выполнять одновременно, тем! большее число разрядов требуется в управляющем! слове. Известны ЭВМ с микропрограммным управле-Ц нием, в которых длина (разрядность) управляющего! слова превышает 200 разрядов. Такой способ полу-« чения набора управляющих сигналов непосредствен-! но из разрядов выбранного управляющего слова и! называется горизонтальным микропрограммирова- Я нием. 1 Если внимательно обследовать состав управляю-! щих слов, то в них можно четко выделить поля, свя- Ц занные с группой микроопераций, часто повторяю- | щихся от слова к слову, например, это может быть I группа микроопераций, управляющая работой реги- I стров АЛ У. Возникает естественное желание, исполь- I зуя этот факт, сократить объемы управляющей па- I мяти, уменьшив ее разрядность. I Представим себе, что общее число различных I микроопераций равно 100, а различных комбинаций, I этих операций не более 32 = 25. Все эти комбинации I (управляющие слова) можно перенумеровать. Для I этого потребуется всего 5 двоичных разрядов. В ре- I зультате в управляющей памяти можно хранить не 1 100-разрядные наборы микроопераций, а номера этих I наборов. Правда, для этого потребуется ввести до-'| тюлнительную комбинационную схему, которая, по- I лучив на вход 5-разрядный код, развернет его I в 100-разрядную комбинацию управляющих сигналов. I В этом случае мы имеем дело с вертикальным микро- I программированием. I £4 л
Вертикальное микропрограммирование позволяет оезко сокращать объемы управляющей памяти и, следовательно, удешевлять устройство управления. В середине 70-х годов академиком В. М. Глушко- вым и его учениками был предложен регулярный метод оптимизации микропрограмм по критерию экономии объемов управляющей памяти, Ьсновываю- щийся на математической теории оптимального кодирования. Эти методы оптимизации микропрограмм были, в частности, применены при проектировании отечественной мини-ЭВМ «Мир-2» для непосредственной микропрограммной интерпретации внешнего языка этой ЭВМ АНАЛИТИК. Сравним между собой горизонтальный и вертикальный способы расшифровки управляющих сигналов. Горизонтальное микропрограммирование не требует для своего осуществления введения дополнительных декодирующих схем, что упрощает процесс перепрограммирования способов функционирования ЭВМ. Для этого необходимо просто заменить содержимое управляющей памяти. В случае вертикального микропрограммирования приходится заменять не только содержимое памяти, но и комбинационные схемы, дешифрирующие поля управляющего слова. Это более сложная инженерная работа. 3 Л. Н. Королев
РАЗДЕЛ II МИКРОПРОЦЕССОРНЫЕ ЭЛЕМЕНТЫ I ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ 1 § 2.1. СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРА Предпосылки создания программно-управляемого? универсального логического элемента, а микропро* цессоры относятся к таковым, следующие. Прежде всего создания такого элемента требовали многочисленные средства приборной автоматики. Развитие этих средств идет в направлении все большего усложнения функций управления автоматическими приборами, устройствами и целыми производствен-, ными процессами. Использование мини-ЭВМ, первоначально созданных для этих целей, сдерживалось их сравнительно большими габаритами и дороговизной. Во-вторых, развитие технологии и производства интегральных схем открыло реальную возможность создания микроминиатюрного универсального при* бора, легко настраиваемого на выполнение любых сложных логических функций путем изменения программы его работы. Возможность разместить на одном срезе кристалла все необходимые вентили, резисторы, соединения между ними привело не только к поразительному уменьшению габаритов, но и к резкому повышению надежности этого прибора. Тысячи и сотни тысяч контактных соединений, которые являлись основной причиной появления сбоев, оказа* лись убранными внутрь больших интегральных схем. Сочетание микроминиатюризации, повышенной надежности и гибкой настраиваемости требовало своего воплощения, и это воплощение было найдено. Хорошо отработанные принципы гибкого программного- управления, опробованные еще в ЭВМ первых поколений, говорили о том, что для алгоритмической полноты ЭВМ достаточно очень ограниченного числа операций и это может быть достигнуто сравнительна просто. 66
В-третьих, немалую роль сыграло развитие идей микропрограммного принципа управления от так называемого горизонтального к вертикальному микропрограммному управлению. Последнее требовало усложнения логических схем генерации управляющих сигналов и вело к необходимости создания программно-управляемого устройства управления. Появление микропроцессорного элемента в какой- то степени разрешало противоречие, связанное с ростом степени интеграции электронных приборов. Это противоречие заключается в следующем. Возможность на одном кристалле создавать схемы из многих сотен и тысяч вентилей влечет за собой возможность получать самые различные логические функциональные элементы с большим числом входов и выходов, ведет к росту номенклатуры типов интегральных схем. Ограничение числа типов означает недоиспользование возможностей интегральной технологии. Допустить увеличение их разнообразия — значит нарушить важный для техники принцип унификации. Появление микропроцессоров в какой-то сте-» пени разрешает указанное противоречие. Микропроцессоров различного типа в начальный период их появления насчитывалось около сотни. К настоящему времени из этого разнообразия типов выжили около десятка микропроцессорных семейств. Как мы далее увидим, микропроцессор представляет собой почти готовую миниатюрную ЭВМ, и эта вычислительная техника повторила путь развития больших ЭВМ от огромного разнообразия типов до небольшого числа семейств программно-преемственных ЭВМ традиционной структуры и неожиданного появления совсем новых идей построения, которые не укладываются в старые схемы. При проектировании структуры микропроцессоров {МП), в особенности МП первого поколения, приходилось учитывать ограничения, определяемые уровнем развития технологии производства интегральных схем: ограничение числа логически активных элементов (вентилей), которые можно было разместить на одном кристалле; ограничение числа связей, допустимых между вентилями; ограничение числа входов « выходов интегральной схемы, содержащей микропроцессор. В то же время необходимо было позаботиться о том, чтобы при этих ограничениях обеспечивались как можно более широкие функциональные 3* 67
возможности. Поэтому в структуре типичных микро-, процессоров вполне определенно усматриваются многие компромиссные решения. Ограничения технологии изготовления повлекли за собой малоразрядность1 первых типовых МП. С другой стороны, реальная необходимость выполнения обработки данных с приемлемой точностьдо, потребовала включения в состав Ьпераций МП средств, позволяющих программнымN путем выполнять многоразрядные действия. В свою очередь необходимость в программной реализации многих функций потребовала особого внимания к средствам, обеспечивающим обращение к подпрограммам, вложенным друг в друга. Поскольку МП является основным логическим звеном цифровой автоматики, предназначенным для управления различными внешними по отношению к МП устройствами, при его проектировании особое внимание уделялось средствам взаимодействия с внешними объектами с использованием развитой системы прерываний, портов связи и других средств. На вопрос, чем же с функциональной точки зрения микропроцессор отличается от центральной части мини-ЭВМ и обычных универсальных ЭВМ, по-видимому, надо ответить так: — меньшей разрядностью обрабатываемых данных, меньшей точностью вычислений; — упрощенной системой арифметическо-логичес- ких команд; — меньшими объемами прямоадресуемой памяти, выполнением операций адресной арифметики и операций по обмену данными с внешними устройствами с помощью одного и того же АЛ У. Ответ этот весьма расплывчатый по той простой причине, что структура МП развивается вместе с интегральной технологией. Перспективные микропроцессоры будут лишены этих отличий. Упрощенную структуру МП мы рассмотрим на примере, очень близком к реальному микропроцессору фирмы Intel, а именно на примере МП Intel-8008. Этот тип микропроцессора появился на мировом рынке в 1971 г. Его предшественником был 4-разрядный МП lntel-4004. Успех и огромный спрос на эти новые электронные приборы ознаменовали начало целой эры в вычислительной технике, эры ее массового внедрения в самые разнообразные сферы науки, производства, управления, образования. 68
Общая крупноблочная схема упрощенного микропроцессора представлена на рис. 31. Если оставаться на уровне рассмотрения крупноблочной схемы, то микропроцессор ничем не отличается от центральной части любой вычислительной машины. Он имеет арифметическо-логическое устройство, несколько внутренних регистров для хранения результатов промежуточных вычислений, устройство управления с дешифратором команд, счетчик команд. Все модули этой машины объединены общей шиной для передачи данных и линиями передач сигналов управления, которые на схеме опущены, но, разумеется, существуют: Можно заметить лишь одно важное отличие от обычной ЭВМ. На схеме не указана основная память, в которой должны храниться данные и команды. Предполагается, что команды и данные поступают в микропроцессор из внешней по отношению к нему среды через буферный регистр данных, а затем во внутреннюю шину, питая нужной информацией все остальные блоки микропроцессора. Соответ-* ственно информация, выработанная микропроцессором, поступает вовне через буферный регистр дан-^ ных, а также по нескольким другим линиям, характеризующим состояние МП, его готовность к работе. На схеме отдельно выделены логические схемы, генерирующие внутренние тактовые импульсы и так называемые состояния. Эти важные схемы позволяют микропроцессору организовать свой независимый цикл работы по тактам «собственного производства». При этом учитываются и внешние тактовые сигналы, что позволяет синхронизовать цикл и такты работы микропроцессора с остальными устройствами приборов цифровой автоматики, в которые микропроцессор включается как отдельный функциональный элемент. Говоря об ЭВМ какого-либо типа, называют ее основные характеристики: разрядность машинного слова, объем оперативной прямоадресованной памяти, набор выполняемых ею операций, быстродействие. Это относится и к микропроцессорам. Основные характеристики типового МП, о котором у нас пойдет речь, таковы: разрядность машинного слова — байт (8 двоичных разрядов), объем адресуемой памяти — 214 байт=16 К байт, набор арифметических операций над двоичными целыми числами, занимающими 8 разрядов, — целочисленные сложение и вычитание, набор логических операций над булевыми векто- 69
г Буферный регистр данных О» О, ф ■5я ^ «^ фффффффф ц it •а 5* ^5" 1 с; с*, с: 50 if И 1|Г IN О <5 СЭ [ Ч: ^S СЭ <М 5*^ ^ с5 тры ения ^ £ § ■с 55 :* кома =* ^ 1 ^ <: jt <Ъ СМ ^§§ 3: ^ « S с:
рами из 8 разрядов — логическое поразрядное сложение, логическое умножение, инверсия и сдвиги. Микропроцессоры с такого рода основными характеристиками выпускались в середине 70-х годов и относились к МП первого поколения. Рассмотрим более подробно состав и функции устройств, представленных на крупноблочной схеме типичного микропроцессора. 2.1.1. Арифметическо-логическое устройство (АЛУ). Арифметическо-логическое устройство вклкь чает в свой состав многофункциональной сумматор и два вспомогательных 8-разрядных регистра, предназначенных для временного хранения операндов и ре* зультатов работы. Схематично регистровая организация АЛУ представлена на рис. 32. п jrifc-jl 1C[Z|5|P параллельный сумматор -So -So Fi Рис. 32 Хранящие регистры а и Ъ связаны с другими блоками микропроцессора через общую внутреннюю шину. На схеме штриховыми линиями указаны управляющие сигналы, комбинация которых определяет функцию Ft9 которую должно выполнить АЛУ. Управляющий сигнал Sa регулирует передачу информации из регистра а в сумматор в прямом (Sa = 0) или обратном (Sfl=l) коде. Сигнал S& выполняет те же функции управления по отношению к передаче из регистра Ь в сумматор. Сигнал Sc управляет работой схем переноса из одного разряда сумматора в другой. Он либо разрешает перенос, либо его брокирует (запрещает). Сигнал So разрешает (50=1) или запрещает (S0=0) добавление 1 в младший разряд сумматора. Как известно, чтобы обратный код превратить в дополнительный необходимо добавлять 1 в младший разряд. В набор арифметических операций, выполняемых АЛУ, входят сложение, вычитание, 71
сравнение, логическое поразрядное умножение (конъюнкция), исключающее-ИЛИ, отрицание эквивалентности. Ниже приведена таблица соответствия между выполняемой АЛУ арифметической микрооперацией и наборами управляющих сигналов. Знаком + в таблице обозначена операция арифметического сложения. \sc sa ' 0 0 0 0 1 1 1 1 ■ st 1 о 0 i 1 0 0 1 1 ; s° ! о 0 0 1 0 1 0 1 Fl 1 F0 = A + B \.Fi = A + B + l Ft^A+Ъ F8 = A + B+l Fi = l+B F6=l + B+1 Fe=7+5 F7 = A + B+l\ Сложение Сложение с добавлением 1 Вычитание в обратном коде Вычитание в дополнительном коде Обратное вычитание в обратном коде | Обратное вычитание в дополнительном коде 1 Суммирование обратных кодов Суммирование обратных кодов с добавлением 1 | В данной таблице перечислены все мыслимые комбинации двухместных арифметических операций. Однако не все они реально используются. Параллельный многоразрядный сумматор включает в свой состав логическую схему сквозного, или быстрого, переноса, намного ускоряющую арифметические действия. Управляющий сигнал Sc служит для включения или выключения схем переноса. Если схема переноса выключена (Sc = 0), то АЛУ выполняет поразрядные логические функции. Различных комбинаций управляющих сигналов Sa, St, S0 может быть восемь, поэтому Можно задать до восьми различных булевых микроопераций над разрядами регистров а и Ь. 12
Выпишем булевы формулы, определяющие работу одного разряда многофункционального сумматора с учетом значений сигналов, управляющих выбором той или иной результирующей функции. Входными переменными этих формул являются: сц — значение 1-го разряда регистра а, bi — значение иго разряда регистра ft, Sc, Say Sb, S0 — управляющие сигналы ранее определенного значения, а-\ — перенос из младшего разряда. Выходами 1-го разряда сумматора являются два значения: разряд суммы fi и значение переноса а следующий старший разряд а. Поскольку сумматор должен прежде всего складывать, то в общей формуле, определяющей его работу, должны быть такие фрагменты: а*ф&*©<4_1 для суммы ft\ afbi + Ci-xfaQbi) для переноса ct. Еще раз напомним, что здесь знак © означает иск- лючающее-ИЛИ, а знак умножения • — конъюнкцию. Теперь с учетом управляющих сигналов можем записать следующую формулу: ^==(Sae^)©(Sb!©MerSc-^b ct =SC((S«фа{)• (§Гфад + си (at фSaфSb0 ft,)), t = 2, 3 8, h=(Sa®(h)®(Sb®bJ9 C1=S9((SaQaJ.(Sb®bJ). Члены в скобках (5a©at- и 5&ФЬ*) при Sa=l или Sb=l соответственно становятся равными щ и 5;, что означает инвертирование разрядов, поступающих из регистров а или ft в сумматор. В частности, при Sb= 1 на сумматор поступает обратный код, что соответствует операции вычитания в обратном коде. При So=0 блокируются переносы в старшие разряды сумматора. Если So=0, то наши формулы преобразуются в следующие: ft^iSaQaAQiSbQbt), с, = 0. 73
Следовательно, при Sa—0 и 5& = 0 мы получим в ка- 1 честве результата логическую операцию исключаю- I щее-ИЛИ, при Sa=0, Sb=l — операцию эквива- I лентности. В том случае, если регистр а содержит I нули во всех разрядах и 5&=1, мы получим логи- 1 ческую операцию НЕ в отношении разрядов регистра 1 Ь. Переменные Sa, S&, Sc, So можно рассматривать I как некоторые параметры, варьируя значения кото- ) рых можно получать разные функции на основе ис- ) пользования одной и той же логической схемы. Рассмотрим схему с п входами, одним выходом и » с некоторым числом управляющих сигналов. Поставим задачу создания «универсальной» схемы, которая ч на выходе воспроизводила бы любую из 22* возможных функций алгебры логики, зависящей от п переменных. Выбор функции пусть осуществляется подачей на вход управляющих сигналов. Как обычно, входные переменные обозначим буквами Хо, хи ..., Хп-и управляющие переменные — 50, Su S2, ... ..., S*. Очевидно, что такую «универсальную» функцию можно описать функцией алгебры логики, содержащей 2п конъюнкций вида Srx$-xf. ... .х&, f=0,2n-l. Для функции от двух переменных формула будет выглядеть так: f v*o> *i)== ^o^o^i "Ь ^i^o^i ~Ь ^^х^х^ + S^XqX^. Задавая некоторую комбинацию значений S0, Sb S2, 5з, мы можем реализовать любую функцию из шестнадцати возможных. В реальных устройствах такого полного универсализма обычно не нужно. Как мы видим на примере АЛУ, его многофункциональный сумматор реализует только часть всех возможных функций. В этой связи возникает своеобразная задача минимизации подобного рода управляемых многофункциональных схем как по числу входных управляющих сигналов, так и по общему числу вентильных схем. В общем случае задача может быть поставлена так: заданы п входных «неуправляемых» переменных, где п фиксировано, заданы k управляющих переменных, где k подлежит выбору, задан список из т функций /i, /2, ..., fmt m < 22", каждую из которых 74 j
следует реализовать, подавая на схемы комбинацию значений управляющих сигналов, минимальным числом вентильных схем. ч Вообще говоря, речь идет о реализации логической схемы n+k входами и т выходами. В данном случае, -в- отличие от предыдущих постановок задач минимизации комбинационных схем, разрешается варьировать число управляющих селектирующих входов. Очевидно, что целое число k должно удовлетворять соотношению £>log2m. Набор подлежащих реализации функций может быть задан перечнем номеров конъюнкций, входящих в ДНФ каждой функции fi = \/2 (и, i2, ..., is), i=l,m. Минимизацию можно проводить в два этапа: сначала минимизировать комбинационную схему, подающую управляющие сигналы (k входов и т выходов), а затем попытаться минимизировать систему функций, определяющих fi\Xo> Х\> • • • > Хп)> Итак, мы рассмотрели организацию АЛУ микропроцессора и высказали ряд соображений о воз» можных путях его реализации. 2.1.2. Регистры общего назначения (РОН). В сое* тав упрощенного МП входят восемь 8-разрядных регистров общего назначения. Некоторые из них предназначены для выполнения вполне определенных функций. Регистры общего назначения объединяет равнодоступность со стороны АЛУ. Поскольку регистры неодинаковы по своему назначению, они имеют собственные имена. В рассматриваемом микропроцессоре имена регистров таковы: L, Я, £, D, С, В, Л. Регистры L и Н служат для хранения соответственно младших и старших разрядов полного 14-разрядного адреса по обращению к основному запоминающему устройству, которое, как мы знаем, является «внешним» по отношению к МП. Формирование разрядов адреса производится с помощью арифметических операций, выполняемыми в АЛУ. Адресом, состоящим из 14 разрядов, можно покрыть пространство памяти из 214 байтов (16К байтов). При необходимости обращения к памяти за командами или данными из регистров L и Н производится последовательная выдача в буферный регистр данных адресной информации и далее ее передача во внешнюю шину. Для того чтобы отличать назначение 75
адреса, выданного во внешнюю шину, используются два двоичных разряда старшего байта — адреса из регистра Н. Различаются обращения за командой, за считыванием данных, записью данных, по вводу/выводу. Остальные регистры Еу D, С, В, А используются для хранения данных и индексов, меняющих адреса. Регистр А при этом играет некоторую особую роль: в нем сохраняется результат предыдущей операции, выполненной в АЛУ. Его иногда называют регистром-накопителем. Как мы знаем, в АЛУ существуют.два вспомогательных регистра а и Ь, которые участвуют в выполнении операций на сумматоре. В конечном итоге результат операции заносится в дополнительный регистр и копируется затем в Л. Следующий важный блок МП — его устройство управления, которое содержит дешифратов команд и генерирует управляющие и синхронизирующие сигналы. Команда, принятая из памяти в БРД, по внутренней шине передается в 8-разрядный регистр команд, дешифрируется, и результаты этой дешифровки поступают в устройство управления, рассылающее все необходимые управляющие сигналы для выполнения микроопераций другими устройствами микропроцессора. § 2.2. СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА Команды рассматриваемого МП разноформатны: они могут содержать один, два и три байта. Код операции всегда располагается в первом байте команды, собственно он и подлежит дешифровке в устройстве управления. Два других байта, если они необходимы для выполнения действий, играют роль носителей значения операнда или адреса операнда по основной памяти. Общая структура первого байта команды представлена на рис. 33. Такую же структуру имеет однобайтовая команда. р7 mu | K0ML 1>6 П 1нды h ^ поле й h о2 л, поле s В° Рис. 33 76
Два старших разряда идентифицируют тип команды. В командах пересылок из регистра в регистр или в командах пересылки содержимого регистра в память поле d служит для указания регистра назначения, поле 5 — для указания регистра источника. В некоторых командах необходимо указывать либо только номер регистра источника, либо только номер регистра назначения. В этом случае свободное поле (либо df либо s) используется как продолжение кода операции. Общее число различных команд, выполняемых МП описываемого типа, равно сорока восьми. Они подразделяются на следующие группы: арифметичес- ко-логические команды, или команды работы с сумматором (таких команд двадцать восемь); команды обмена между регистрами, регистрами и основной памятью, или команды загрузки (таких команд семь); команды управления, которые воздействуют на счетчик команд и другие управляющие регистры ^таких команд десять); команды ввода/вывода (таких команд четыре). Существуют также специальные команды ожидания и останова. Все это разнообразие команд закодировано весьма искусно, чтобы достичь большой экономии объемов запоминающего устройства, выделяемых для хранения программ. Общая схема кодировки такова. Однобайтовые команды используются для задания арифметическо-логических операций типа присваивания А:=А0б, где б — либо один из регистров общего назначения, либо операнд, выбранный из основной памяти. Буквой А обозначен регистр, содержимое которого используется как значение первого операнда s двуместных операциях. Символ 0 обозначает одну «з операций с сумматором (сложение, вычитание, И, ИЛИ, исключающее-ИЛИ, сравнение, четыре операции сдвига). Однобайтовый формат также используется для задания операций регистровых обменов типа гг. = г2, г:=М, М: = г, где М — операнд в основной памяти, находящейся по адресу, указанному в совокупности регистров L и Н. Конкретный номер регистра назначения гь в который производится засылка информации указывается в поле d (см. рис. 33). В поле s указывается конкретный номер регистра, из которого берется информация. В случае использования команд, требующих обращения к оперативной памяти по ад- 77
nprv H\L где I — знак коннатенадии, одно из полей команды Id или s) используется для других целей. 1 К однобайтовому формату относятся также и неко- * торые другие команды управления и ввода/вывода. При составлении программ стараются пользоваться однобайтовыми командами, наиболее информационна насыщенными и компактными по кодировке. Однако 1 обойтись только ими в ряде случаев просто невозможно или очень сложно. В системе команд большинства микропроцессоров существует возможность в программах размещать данные, используемые в командах. По смыслу эти. данные могут представлять либо адреса памяти, либа операнды, используемые в арифметических -и логических операциях. Наличие в системе команд МП двухбайтовых и трехбайтовых команд, по существу, означает регламентированный способ включения данных в поток команд. Второй байт двухбайтового формата содержит код операнда, с которым будет производиться то или иное действие. Первый байт кодирует код операции. Структура двухбайтовой команды приведена на рис. 34. Ml В7 Л ПЛ П3 в, Во код операции непосредственный операнд В Рис. 34 Этот двухбайтовый формат используется для кодирования арифметическо-логических операций, выполняемых по правилу А:=А0'В'. Иными словами,, второй операнд для двухместной операции выбирается из байта,'следующего за кодом операции. Трехбайтовый формат используется для кодирования многочисленных операций перехода. Два байта, следующие за байтом кода операции, содержат полный 14-разрядный код адреса основной памяти. Структура трехбайтовой команды представлена на рис. 35. , Система адресации в рассматриваемом МП допускает прямую адресацию операнда по памяти и непосредственное извлечение его из кода команды. При. этом следует отметить, что адресация по памяти ос~ 78
кована на использовании содержимого регистров L Я, которые интерпретируются как младшие и старшие разряды 14-разрядного адреса. Поскольку L и Н в то же время являются регистрами общего назначения и их можно перевычислять, тго обеспечиваются широкие возможности программной реализации любых иных способов адресации. На- Трехдайтодые команды \К * h л* »з h Bi XI Е А, As А4 Аз Az Ai A.\ X X An An An An As As] Вгкод операции Вг-м/!адшие разряды адреса В3-старшие разряды адреса Рис. 35 пример, если в цикле позаботиться о том, чтобы с каждым шагом в регистре Н добавлялась в младший разряд 1 (это можно выполнить, вставив в программу команду сложения), то можно организовать последовательную выборку элементов обрабатываемого массива. Очевидно, что можно использовать и любой другой шаг индексирования, а не обязательно единичный. Приведенный пример показывает возможность индексирования адресов с любым шагом а циклах. Поскольку в регистры L и Н можно засылать произвольную информацию из оперативной памяти, то, следовательно, можно осуществлять косвенную адресацию по любой паре байтов, находящихся во внешней по отношению к МП оперативной памяти. Для этого следует позаботиться о том, чтобы перед исполнением команды, требующей привлечения к работе операнда по адресу, расположенному в L,H, в эти регистры была переслана информация из байтов оперативной памяти, которые мы хотим использовать в качестве косвенных адресов. 2.2.1. Арифметическо-логические операции МП включают сложение, сложение с учетом переноса, вычитание, вычитание с учетом заема, сравнения содержимого АЛУ с операндом без изменения содержимого сумматора, логическое умножение, неэквивалентность, исключающее-ИЛИ, циклический сдвиг влево, циклический сдвиг вправо, циклический сдвиг >с учетом разряда переноса — итого 12 операций. Из «их 8 первых операций имеют по три модификации: 79
операция с операндом, выбранным из регистра, номер которого указан в первом байте; операция с операн- • дом, выбранным из памяти по адресу, расположен*! ному в регистрах L и Н; операция с операндом, выб-1 ранным из второго байта команды. | 2.2.2. Команды межрегистровых передач и обме- нов с памятью. В первом байте команды указываются * номер регистра источника и номер регистра назначения. Таких команд пять: n: =rj; M: =п; п: = М„ , ri:==/B/i, M: = /B/1. К этой группе принадлежат также две команды манипулирования с регистрами: п:=Г1+1; п:=Г1—1. Именно с помощью такого рода операций удается упростить составление циклических программ, требующих последовательного перебора - элементов массива данных. 2.2.3. Команды передачи управлений. Такого рода команд насчитывается десять. Гибкость в организации переходов обусловлена спецификой применения микропроцессоров как интерпретаторов более сложных операций по сравнению с теми, которые непосредственно могут быть выполнены на уровне машинных команд. Для того, например, чтобы с помощью МП выполнить операцию деления, которой нет в основном списке команд, нужно составить подпрограмму, содержащую более десятка команд, работающих в цикле, требуется и подпрограмма для выполнения операции умножения. Таким образом, система интерпретации более укрупненных и сложных операций, выполняемых универсальными ЭВМ, представляет собой систему, насчитывающую несколько десятков подпрограмм, к которым производятся обращения из ' разных мест главной, ведущей программы, поэтому в МП особое внимание уделено аппаратным средствам, облегчающим обращение к подпрограммам. Следует отметить, что очень часто подпрограммы вложены друг в друга, т. е. в них присутствуют обращения к другим подпрограммам более низкого уровня иерархии, в которых в свою очередь могут быть обращения к подпрограммам следующей ступени вложенности, и т. д. В составе десяти команд перехода имеются следующие: безусловный переход по адресу, указанному в двух байтах, следующих за байтом кода операций типа GOTO B2IB3; условный переход по признаку, номер которого указан в двух разрядах кода операций (в первом байте). Прежде чем перейти к рассказу о командах перехода к под-
ш-П I APr АРг АР3 АР^ APs АЬ АРТ программам, рассмотрим регистровую структуру устройства управления. 2.2.4. Регистры устройства управления и команды перехода. Устройство управления включает в свой состав 8 адресных регистров, организованных в стек. Эта внутренняя регистровая память содержит: 14-разрядный регистр адреса команды PC, семь также 14-разрядных адрес- ных регистров для хране- <" Внутренняя шина^> ния адресов возвратов и \г— Т ^ трехразрядный регистр I JL SP — указатель стека ■ РС (см. рис. 36). Регистр адреса PC является функциональным регистром-счетчиком с параллельной записью и считыванием. Источником информации для него служат внутренняя шина рис зб данных, питающая его адресной информацией, выбираемой из второго и третьего байтов, следующих за первым байтом команды, и адресная информация, поступающая из регистров адресной памяти. Как и во всех других ЭВМ, регистр адреса PC служит для автоматического формирования адреса байта, с которого начинается выборка из внешнего па отношению к МП оперативного запоминающего устройства команды для дешифрования и выполнения микропроцессором. Тем самым регистр PC управ- , ляет последовательностью выбора команд из программы, т. е. формирует поток команд, выполняемый: микропроцессором. Как мы знаем, команды МП разноформатны и могут содержать один, два или три байта. При последовательной выборке команд из линейных участков программы это следует учитывать. После того как выполнена однобайтовая команда, к PC автоматически прибавляется 1. В этом случае начало вновь выбираемой команды расположено в следующем байте. Если выполнена двух- или трехбайтовая команда,, то для определения адреса следующей команды к PC следует уже прибавить соответственно 2 или 3. Какое число будет прибавлено к счетчику команд , PC, регулируется специальными управляющими: сигналами, формируемыми устройством управления 81
«а основе логического анализа типа выполнившейся 1 команды. Массив этих регистров обозначим через АР, 1 элемент массива с номером, указанным в указателе I стека SP, — через APsp. I Микрооперации, выполняемые с использованием I РС и адресных регистров довольно разнообразны. 1 К ним прежде всего относятся микрооперации, пере- 1 сылающие содержимое второго и третьего байтов, 1 следующих за первым байтом команд условного и | безусловного перехода: 1 РС(7:0)«-В2, РС(13:8)+-В3, Ц где В2 и В3 — содержимое соответственно второго и | третьего байта в потоке команд, следующих за бай- 1 том выполняемой команды перехода. Адресные регистры АРЬ АР2, ..., АР7 используются для хранения адресов возвратов. Соответственно существуют микрооперации, с помощью которых производится пересылка содержимого одного из этих регистров в PC. Номер регистра АР, из которого берется информация для пересылки в PC, указывается в счетчике SP. Соответственно определены микрооперации типа PGe-APsp, raeSP=l, 2, ...,7. Кроме того, для запоминания адресов возвратов требуется сохранить значение счетчика PC. Это выполняется с помощью микроопераций вида APSP*-PC. В свою очередь над трехразрядным регистром SP предусмотрены две микрооперации прибавления к нему 1 и вычитание из него 1: SP^-SP+l, SP^-SP—1. <3 помощью перечисленных выше микроопераций формируются весьма гибкие правила организации потока «оманд. Безусловный переход к подпрограмме — весьма интересная команда, использующая регистры стека адресов перехода. Эта команда производит переход по адресу, который указан во втором и третьем байте команды (так же, как и при безусловном переходе), но при этом увеличенное на 3 содержимое счетчика команд передается в стек. *2 ■!
Последовательность микроопераций, выполняемых при осуществлении операции безусловного перехода на подпрограмму, такова: APsP4-PC + 3, SP+-SP+1, РС(7:0)-*-Ва, РС(13:8)+-В3. В качестве первой микрооперации выполняется запоминание счетчика PC, увеличенного на 3 в адресном регистре, номер которого указан в счетчике SP* Вторая микрооперация увеличивает значение счетчика SP на 1. Это делается для того, чтобы в случае появления новой команды перехода на подпрограмму упрятать значение PC в новый регистр, сохранив ранее упрятанное значение. С помощью третьей и четвертой микроопераций производится засылка в PC адреса начала той подпрограммы, к которой мы собираемся обратиться. Тем самым организуется автоматическое запоминание адресов возвратов из подпрограммы. При этом может оказаться, что в стеке уже хранятся адреса возвратов из подпрограммы более высокого уровня иерархии вложенности (адреса возвратов охватывающих программ). Согласно общим правилам работы со стеком эти ранее накопленные адреса возвратов как бы продвигаются в стек, освобождая верхушку для сохранения адреса возврата в текущую подпрограмму. Поскольку глубина стека ограничена семью регистрами, то тем самым допускается не более семи уровней вложенности. Условный переход на подпрограмму по признаку 1. Этот переход на подпрограмму выполняется па вышеуказанным правилам в том случае, если признак результата, выработанный АЛУ, номер которого указан в коде операции перехода, равен 1. В противном случае перехода не происходит и выполняется следующая команда. Условный переход на подпрограмму по признаку О» Переход выполняется так же, каки предыдущая команда, но при значении признака равным нулю. Безусловный возврат по стеку адресов возврата» Эта однобайтовая команда выполняется следующим образом. В счетчик команд переносится содержимое 8Э
верхушки стека, стрелка указателя стека «продвигается» вверх. Тем самым получается возврат к последней в иерархии вложенности программе, адрес .возврата к которой был сохранен в стеке. Последовательность микроопераций в этом случае такова: SP«-SP —1, РСч-АР5Р. Первая микрооперация меняет счетчик SP так, «чтобы он указывал на адресный регистр, в котором хранится последний по времени появления адрес возврата. Вторая микрокоманда восстанавливает адрес возврата в счетчик адреса команд PC и, следовательно, обеспечивает переход на продолжение выполне- шия программы, из которой было последнее обращение к подпрограмме. Условный возврат по признаку 1 выполняется в том случае, если признак результата, номер которого указан в двух разрядах кода операции, равен 1. Возврат производится по алгоритму безусловного возврата. Если признак оказался равным 0, то команда не выполняется и происходит переход к выполнению следующей по номеру команды. Условный возврат по признаку 0. В отличие от предыдущей команды возврат происходит только в том случае, если признак результата операции в АЛУ равен 0. Переход к стандартным программам. Во многих МП за некоторыми подпрограммами, особенно часто употребляемыми и потому включенными в стандартное программное обеспечение, закреплены номера и раз и навсегда выделены в оперативной памяти точки входа. При обращении к ним из других программ достаточно указывать их номер. Аппаратура преобразует эти номера в стандартные адреса входов. В типичных МП существуют специальные команды перехода к таким нумерованным программам, которые называются обращением к макрооперациям. Команды ввода/вывода. В микропроцессорах обычно предусмотрен так называемый побайтный программируемый ввод/вывод. Передача байта на внешние устройства и прием байта с внешних устройств производится через аккумулятор (сумматор). При этом об окончании процесса ввода/вывода свидетельствует «4
сигнал прерывания ГОТОВО. Ввод/вывод организуется с помощью двух команд. Команда ввода однобайтовая, в ней указан номер устройства ввода (до 8 устройств). Команда вывода также однобайтовая, в ней указан номер устройства вывода (до 31 устройства). К командам управления относятся две важные команды, позволяющие синхронизировать работу МП с остальными устройствами средств цифровой автоматики, и в частности с устройствами ввода / вывода, — команда «ожидания признака готовности» от внешних по отношению |к МП устройств и команда «ожидания прерывания». Например, печатающее устройство сравнительно с МП работает медленно, и прежде, чем выдать на печать следующий символ, следует убедиться, что устройство печати готово его принять. Блок-схема программы, осуществляющей такой вывод, представлена на рис. 37. Команда ВыВода на печать очереа- ного 1-го симдо/ia т Команда ожидания готовности устройства (ИИ) \ 1 1-1 + 1 § 2.3. ОСНОВНОЙ ЦИКЛ РАБОТЫ МИКРОПРОЦЕССОРА На общей схеме МП (см. рис. 31) указаны в виде двух прямоугольников генератор тактовых сигналов я генератор состояний. Эти два блока, относящиеся к устройству управления, формируют временную диаграмму работы микропроцессора и синхронизируют ее с работой других устройств, связанных с МП. Упрощенно можно сказать, что работа МП складывается из трех циклов: выборки команды, извлечения операнда из основной памяти, выполнения операции. Каждый цикл длится в течение одного или нескольких тактов. Такты отсчитываются генератором 85
тактовых сигналов. В каждом такте устройство уп- | равления формирует вектор управляющих сигналов» I которые рассылаются по сигнальным линиям в другие I устройства микропроцессора и тем самым опреде-1 ляют, какие микрооперации будут выполнены в соот- I ветствующий такт работы МП. 1 В рассматриваемом МП общий цикл работы скла- | дывается из восьми тактов. В первых двух тактах Т\ J и Т2 производится передача двух байтов адреса ко-- манды в регистр адреса оперативной памяти. Потом. I МП переходит в режим ожидания данных из опера* тивной памяти, в этом случае ожидания выборки кода команды из памяти. Этот такт работы назовем тактом Тож. По получении из памяти сигнала готовности, означающего, что нужная информация из нее получена, МП переходит к следующему такту работы Т3. В этом такте полученная команда поступает на регистр команд микропроцессора и начинается ее дешифрация на устройстве управления. В результате дешифрации, как правило, производится формирование адреса операнда. Следовательно, возникает необходимость его извлечения из памяти. Как мы видели, извлечение данных из памяти происходит в тактах Tt и Т2. Устройство управления переводит МП в эти такты работы и в такт ожидания Тож. После появления операнда в течение двух тактов Т4 и Ts МП переводится в режим выполнения операции на АЛУ* Однако переход к тактам извлечения операнда и выполнения операции с ним не всегда необходимы. Так, в командах перехода эти такты пропускаются и МП переходит снова к циклу извлечения команды по новому адресу, сформированному в регистре счетчика команд. После выполнения команды, связанной с работой АЛУ, может потребоваться выполнение команды по записи результата вычислений в оперативную* память. Происходит это в тактах Tq и 7V, в которых производятся (передача адреса записи в регистр адреса оперативной .памяти, ожидание готовности памяти и посылка в нее результата. После завершения всех тактов, необходимых для извлечения команды операнда, записи результата, МП снова переводится в начальное состояние — к такту Т\. Следует обратить внимание на то, что в общем цикле работы повторяются некоторые одинаковые группы операций, например группа операций извлече» ния данных из оперативной памяти. 86
В одном случае эти данные используются МП в качестве кода .команды, в другом — как операнды для вычислений. При дешифрации команд в зависимости от кода команды может потребоваться пропускать некоторые стандартные действия. ■ В некоторых командах для их наполнения не требуется, например, извлечение операнда из памяти. В вышеприведенных рассуждениях Ти Тъ, Гож, Г4, Тб, Т*> 7V тем самым не обязательно отражают временную последовательность выполнения действий в МП, а выражают набор микроопераций, который должен быть выполнен в соответствующем такте работы МП. Какое значение следует придать тактирующему ямшульсу в тот или иной .период времени, определяет соответствующая часть устройства управления на основе логических условий, полученных три дешифрации команд. В типовом МП различаются три основных состояния: So — состояние, характеризующее период ожидания поступления команды из оперативной памяти, Si — состояние ожидания операнда и $2 — состояние пересылки результата в память. Каждой команде, которую может выполнить МП, соответствует ее временная диаграмма, т. е. та последовательность тактов работы МП, которая необходима для ее выполнения. Схемы устройства управления, получив в качестве исходной информации команду, подлежащую выполнению, как раз и вырабатывают соответствующую последовательность тактов, пропуская при необходимости некоторые из них. В свою очередь номер такта служит информацией для создания управляющих сигналов, инициализирующих необходимые микрооперации в АЛУ или на регистрах устройства управления. Язык межрегистровых передач, о котором сказано выше, или подобные ему языки служат для точного описания того, что происходит в микропроцессоре в тот или иной такт работы. Например, если МП находится в состоянии приема команд и в такте с номером 7\, то производится передача младших разрядов счетчика команд PC в младшие разряды адресного регистра оперативной памяти МА. В такте Т2 в этом же состоянии передаются старшие разряды адреса. На языке МРП это запишется так: S0-7\: MA[L]4-PCIL], Г2=1, 7г = 0; V7V МА{Н]«-РС1Н], Га = 0, Гож-1; 87
где So — сигнал состояния режима считывания ко- 1 манды, MA[L] и МА[Н] — соответственно младшие-1 и старшие разряды регистра адреса запоминающего | устройства, a PO[L] и РС[Н] — младшие и старшие | разряды счетчика команд микропроцессора. £ Соответственно данной схеме работы блок управ- | ления выдает три сигнала So, Si, S2, которые выходят | во внешний мир. Иапользуя их, можно координиро- | вать совместную работу МП £ другими устройствами. § Например, если эти признаки говорят о том, что МП" I находится в состоянии ожидания команды, то в ответ не следует подавать данные, полученные с внешние устройств, но об этом уже заботятся логические схемы, внешние по отношению к МП. § 2.4. СХЕМА СТРУКТУРНОЙ ОРГАНИЗАЦИИ МИКРОЭВМ НА ОСНОВЕ МИКРОПРОЦЕССОРНОГО НАБОРА Для того чтобы микропроцессор превратить в микроЭВМ, которую можно использовать как функционально законченное автономно работающее устройство, кроме микропроцессора надо подсоединить основную память, внешние устройства ввода/вывода,, дополнительные устройства на магнитных лентах,, дисках. Необходимо синхронизировать работу этих многочисленных модулей и устройств, объединить их* шинами передачи данных и линиями передачи сигналов управления. Тем самым, чтобы микропроцессор превратить в микроЭВМ, к нему надо «добавить» порядка 20—30 интегральных схем, реализующих логические функции управления внешними запоминающими устройствами и устройствами ввода/вывода. Если взглянуть на плату современной микроЭВМ, то интегральную схему микропроцессора — основного обрабатывающего звена — не так просто отыскать среди многочисленных других интегральных схем. Крупноблочная схема микроЭВМ на основе микропроцессора представлена на рис. 38. Простейший микропроцессор с внешним миром связан двунаправленной восьмипроводной шиной, по которой в зависимости от состояния МП поступают либо адреса, либо данные для записи, либо данные для считывания, либо байты от устройства ввода и байты в направлении устройств вывода. В зависимости от смысла информации ее нужно направлять в 88
прерываний внешняя готовность т^А МП (микропроцессор) So | Si ) S21 дешифратор состояния tml t общий генератор частоты сигналы готовности от 6вода /выбода w логические схемы формирования сигналов управления сигналы управления IL мультиплексное обслуживание 75 адреса, сигналы управления 1L ОЗУ данные внешние 11 устройство Рис. 38
разные устройства и схемы. Например, если по шине направлен адрес, то его нужно передать в адресный регистр соответствующего запоминающего устройства. Данные в свою очередь могут быть предназначены для записи в основную память либо для подачи на соответствующие регистры внешних выводных устройств. Следовательно, шина нуждается в мульти» плексном обслуживании, и на нашей схеме выделен такой «распределительный» узел — логическая схема,, направляющая потоки данных из общего русла по не* обходимым ответвлениям. Селектирующие сигналы^ управляющие работой мультиплексного обслуживания, вырабатываются общим для всей ЭВМ устройством управления, схемы которого генерируют в нужной временной последовательности все необходимые управляющие сигналы. Для выработки управляющих сигналов используются сигналы So, Si, S2, характеризующие состояние микропроцессора, сигналы готовности внешних устройств и запоминающего устройства, сигналы, поступающие от общего генератора частоты. Даже из рассмотрения этой весьма да-лекой от реальности общей блок-схемы организации микро- ЭВМ становится очевидным, что наиболее сложная ее схема — это схема общего управления, хотя бы по. той простой причине, что на ее входы поступает достаточно большое количество управляющих сигналов. Следовательно, в логике ее работы должно учитываться очень большое число возможных сочетаний: внешних признаков и сигналов. Общая схема управления обычно состоит из нескольких интегральных схем, включающих дешифраторы, мультиплексоры,, небольшое число отдельных хранящих разрядов. Для того чтобы упростить проектирование и производство микроЭВМ на основе использования микропроцессоров промышленностью, серийно выпускаются микропроцессорные наборы — комплекты интегральных схем с унифицированными электротехническими и частотными характеристиками, которые требуют одинакового электропитания, рассчитаны на вполне определенные одинаковые характеристики входных и выходных сигналов. Типовой комплект включает в свой состав следу* ющие интегральные схемы: — большую интегральную схему (БИС), представляющую собой собственно микропроцессор, включающую в свой состав внутренние регист- 90
ры, устройство управления, арифметическо-ло- гическое устройство, буферные регистры и т. д.; — интегральную схему, осуществляющую управление вводом/выводом информации по параллельным линиям; — интегральную схему, управляющую внешними прерываниями, организующую их приоритеты; — интегральную схему, обеспечивающую доступ к оперативной памяти, внешней по отношению к МП; — интегральные схемы, представляющие собой адресные запоминающие устройства, модули оперативной памяти, модули .постоянной памяти для хранения микропрограмм; — интегральные схемы, выдающие синхронизирующие импульсы, ведущие отсчет времени. Для каждой ИС, входящей в микропроцессорный набор, четко определены назначения всех ее входных и .выходных контактов, которые физически представляют собой гребенку ножек. В микропроцессорном комплекте самой сложной является БИС микропроцессора. Число входных/выходных ножек этой БИС достигает 40 или более в зависимости от типа микропроцессора. При разработке ИС микропроцессорных наборов их проектировщики стараются минимизировать число входов и выходов. Это упрощает последующую компоновку микроЭВМ на основе использования микропроцессорных комплектов. 8-разрядный микропроцессор явился основой для построения многих микроЭВМ и средств цифровой автоматики и очень широко применялся в свое время. Надо сказать, что, несмотря на малую разрядность, микропроцессоры такого типа достаточно широко применяются и в настоящее время в силу сравнительной простоты устройства и дешевизны. Однако при применении их в качестве основного звена микроЭВМ, в особенности персональных ЭВМ, малая разрядность и другие ограничения требуют в конечном итоге усложнения структурной организации и программного обеапечения микроЭВМ, построенных на их основе. На смену простым МП пришли более развитые, к общему обзору которых мы переходим. 91
$ 2.5. ОБЗОР МИКРОПРОЦЕССОРОВ I За время, прошедшее с момента появления микро-» j процессорных элементов вычислительной техник^! сменилось несколько поколений этих устройств. Если:! каждое поколение больших ЭВМ характеризуется § элементной базой, на которой они создавались (pa- | диолампы, диоды и транзисторы, интегральные схе~ t мы, большие интегральные схемы), то главной опре- ; деляющей характеристикой принадлежности МП к тому или другому их поколению считается их разрядность и структура. Разумеется, возможность увеличения разрядности определяется возможностями технологии изготовления больших интегральных схем, и: в этом смысле поколения МП также зависят от элементной базы. Разрядность и объем оперативной памяти, которую можно подключить к МП, определяют его функциональные возможности. Рост указанных параметров от поколения к поколению МП происходит скачками, которые позволяют делить МП довольно четко по поколениям. К пер-вому поколению МП относятся 4-разрядные и даже 2-разрядные устройства. Число элементарных операций над такими малоразрядными данными в подобных микропроцессорах оценивается несколькими тысячами в секунду. Однако, чтобы на их основе выполнять полезные укрупненные действия с данными большой разрядности, требуется создавать программы эмуляции, проводить большие объемы элемен* тарных вычислений, а это увеличивает время выполнения полезной работы и снижает эффективность применения МП. Очень быстро, через 2—3 года, на смену мало- разрядным МП пришли 8-разрядные их собратья, которые относят ко второму поколению. Типичным представителем этих МП был Intel-8008. Его быстродействие достигало 50000 операций в секунду над, 8-разрядными данными. За счет увеличения разрядности по отношению к свое;му 4-разрядному предшественнику этот процессор оказался гораздо более эффективным в использовании. На смену 8-разрядным МП пришли 16-разрядные. Это дало возможность вести-вычисления с большей точностью, в состав операций включить аппаратно .выполняемые умножение и деление, что привело к более эффективному их использованию в различных 92
сферах применения. Микропроцессоры этого 16-раз- ряд'ного класса относят к третьему поколению. На смену 16-разрядным процессорам затем (в начале 80-х годов) приходят 32-разрядные МП четвертого поколения. Точность вычислений над данными,, представленными 32-разрядными МП, эквивалентна точности, равной 10 десятичным знакам. Такая точность уже пригодна для решения серьезных математических и инженерных задач и микроЭВМ, построенные на основе МП такой большой разрядности стал» небезуспешно конкурировать с большими стационарными ЭВМ общего назначения. Переход от одного поколения МП к другому сопровождался соответственно увеличением допустимых объемов прямоадресуемой оперативной памяти, совершенствованием устройств ввода/вывода^ внешних запоминающих устройств. При этом следует отметить, что до настоящего временя в различных областях находят применение МП самой различной разрядности, включая и 8-разрядные МП. 8-разрядные микропроцессоры второго поколения быстро эволюционировали. Среди них скоро появились процессоры, быстродействие которых достигло 500 000 операций в секунду. В их состав были включены логические схемы, облегчающие работу с 16-разрядными данными, и схемы, увеличившие адресное пространство до 215 байт=64К байт. Увеличение адресного пространства означает возможность, подключения к МП оперативной памяти большего объема, т. е. возможность заставить МП выполнять сложные программы, обрабатывающие большие массивы информации. При этом следует учитывать еще и следующее. Совершенствование математического обеспечения, возможность использовать для (программирования не один, а несколько высокоуровневых языков программирования в конечном счете требуют места в памяти для размещения трансляторов и других многочисленных служебных программ. Так, например, развитая система программирования на основе простейшего языка БЕЙСИК требует для своей работы объем памяти порядка 32К байтов. Рост памяти, необходимой для служебных целей, весьма значителен, а ограниченность объема памяти, которую можно подключить к МП, приводит к ограничениям на программное обеспечение и: 9а
тем самым к меньшим удобствам при использовании щ вычислительной машины. Щ К концу 70-х годов к выпуску микропроцессоров J различного типа подключились до 300 -конкурирующих щ фирм и число различных по архитектуре и системе Я команд микропроцессоров достигло 80. Любопытно Я отметить, что в истории разработки микропроцессо-1| ров повторились те же этапы, которые пережила Л большая вычислительная техника. Имеется в виду || прежде всего то, что сначала и там и здесь возникло 'I очень большое разнообразие типов и процесс стан- 11 дартизации, который необходим для сохранения слож- *■ ного программного обеспечения, касался лишь разра- I ^боток, .проводившихся одной фирмой. I К настоящему времени сложилось несколько архи- | тектурных линий микропроцессоров, связанных с наиболее мощными и преуспевающими американскими фирмами, .производящими основной объем такого рода продукции. К ним относится и фирма Intel, о продукции которой шла речь выше. Непрерывно совершенствуя технологию производства, повышая степень интеграции и быстродействие своих электронных компонент, эта фирма выпустила целое семейство микропроцессоров. Буквально через два года после выпуска Intel-8008 фирма предложила новый усовершенствованный микропроцессор Intel-8080. В структуре этого МП были устранены многие ограничения, присущие Intel-8008. Прежде всего было увеличено адресное пространство с 16 до 64К байтов, т. е. в четыре раза. Далее, были введены действия с двойной, т. е. с 16-разрядной, информацией (с двумя байтами). Разработчики фирмы позаботились о том, чтобы сохранить все те одно- байтовые действия, которые имелись в МП Intel-8008, т. е. о программной совместимости новой модели с предшествующей. Важным структурным изменением явился перенос стека адресов возвратов из внутренней регистровой памяти в оперативную. Дело в том, что семиуровневый стек модели 8008 во многих случаях оказался недостаточным. Кроме того, в стек, размещенный в основной памяти, оказалось возможным «упрятывать» не только старое значение счетчика команд, но и значения общих регистров, регистров признаков. Это упрощало разработку программного обеспечения- вооб- 94
ще и программ управления внешними устройствами в частности. Базовое программное обеспечение, поставляемое фирмой, включает в свой состав операционные системы и системы программирования (трансляторы, редакторы, отладчики и т. п.). Это базовое обеспечение программируется на языке ассемблера, учитывающем все особенности системы команд, а по существу, повторяющем в символьном виде все существующие у данного типа ЭВМ команды. Такой ассемблер имеется и для микропроцессора Intel-8008. При переходе к новой модели с расширенными возможностями разработчики предусмотрели и то, чтобы программы, записанные на автокоде для Intel-8008, воспринимались и микропроцессором новой модели, несмотря на то, что в системе команд появились заметные различия. Архитектура Intel-8080 стала своего рода стандартом для 8-разрядных микропроцессоров с расширенными возможностями. Они выпускались огромными тиражами, исчисляемыми миллионами штук, и находили самые разнообразные применения в средствах цифровой автоматики в микро- и мини-ЭВМ, В, нашей стране архитектурными аналогами этого микропроцессора являются МП КР580ИК80А, К1801ВМ1 к др. Они используются в составе ЭВМ БК-0010, ВК-0010Ш, «Корвет» и ЭВМ семейств ДВК, массовый выпуск которых начался в середине 80-х годов. Быстродействие этих МП в операциях типа регистр—регистр варьируется от 500 тысяч (К1801М1). 2.5.1. 16-разрядные микропроцессоры. Микропроцессор Jntel-8080 послужил основой для создания целого ряда микроЭВМ и нашел особо широкое применение в персональных ЭВМ (ПЭВМ). Многочисленные фирмы, занятые производством ПЭВМ, использовали этот тип МП. Широкий спрос на персональные ЭВМ, а следовательно, и на микропроцессорные элементы побудил фирму Intel .приступить к выпуску нового типа МП семейства 8080, который получил название Intel-8086. Этот микропроцессор уже принадлежит к новому поколению усовершенствованных 16-разрядных микропроцессоров с расширенной адресацией. Его общая блок-схема представлена на рис. 39. ' В нашей стране архитектурным аналогом этого типа 16-разрядных микропроцессоров являются МП типа КМ1810ВМ86, используемые в профессиональ- 95
ных компьютерах ЕС-1840, К-1811, К-1818, которые включены в ПЭВМ < Электроника 85» и др. Быстро», J действие их при выполнении операций типа регистр- регистр близко к миллиону операций в секунду, ад. Ц ресное пространство характеризуется диапазоном, близким к одному миллиону байтов (1М байт). ^адресная 20. шина) пи и на данных OD ^инии управления | МП НС ГОЕК сегментные регистры АЛУ ! адресные регистры рои \<}\ РегистрЬ1 одщего назначим Х^ чения [регистры данных) =Л Рис. 39 Первой особенностью, отличающей МП Intel-8086 от его предшественника, является разделение адресной шины и шины данных. Этим было ликвидировано «узкое горло», снижавшее быстродействие и усложнявшее структурную организацию микроЭВМ на основе МП Intel-8080. Второе важное отличие — увеличение адресного пространства основной памяти до 1М байта. Третье отличие — значительное расширение разрядности и функций АЛУ, которое способно | выполнять действия деления, умножения в десятичной (точнее, двоично-десятичной) арифметике и действия обработки строк большой длины. Для облегчения переноса программного обеспечения, созданного для предшествующей модели, разработчики 16-разрядных МП сохранили также все операции над байтами, которые выполнял МП Intel-8080. Общее число команд, выполняемых МП Intel-8086 достигло восьмидесяти четырех. Это потребовало значительно изменить кодировку команд и их форматы. Основные команды могут занимать от одного до шести байтов. Значительно изменился состав внутренних регистров микро-» процессора и их функциональное назначение. Эти новые возможности отвечали прежде всего потребностям рынка микро- и персональных ЭВМ. Кроме того, разработчики позаботились о том, чтобы была сохранена преемственность программ, создание
ных Для Intel-8080, выпускавшихся в то время сериями в несколько сот тысяч ежегодно. В связи с расширением адресности и добавлением новых операций добиться совместимости на уровне машинных кодов, естественно, было невозможно. Однако при проектировании-микропроцессора новой модели была предусмотрена возможность сравнительно простого преобразования программ, написанных на автокоде его предшественника, в программы, написанные на автокоде Intel-8086. Осуществляющий это преобразование конвертор получил название CONV-86. Сохранены действия с байтами; в определенных режимах можно использовать .пространство адресов в 64К байта, как и у .процессора 8080. Если не принимать в расчет предысторию, то архитектура Intel-8086 представляется не очень логичной и соответственно переусложненной. Мы остановимся на общей характеристике его регистровой структуры. Несмотря на ее относительную сложность, в составе регистров и распределении функций между ними можно усмотреть некоторые общие черты со структурной организацией микропроцессоров других семейств. Представляют также интерес те решения, которые приняты проектировщиками ради удовлетворения противоречивым требованиям: расширения функций и сохранения преемственности в отношении предыдущих моделей. Регистры МП. В состав МП входит четыре 16-разрядных регистра данных, имеющих следующие собственные имена: АХ, ВХ, СХ, DX. Каждый такой регистр состоит из двух байтов, которые также имеют свои фирменные названия: АН, AL у регистра АХ; ВН, BL у регистра ВХ; СН, CL и DH, DL соответственно у регистров СХ и DX. Таким образом, можно сказать, что регистры данных включают восемь байтовых регистров, пооарно объединенных в двухбайтовые. Такая интерпретация отвечает способности МП производить действия не только с двухбайтовыми словами, но и с байтами. В этой группе регистров, (Предназначенных главным образом для хранения данных, регистр АХ рассматривается как накопитель результатов работы АЛУ — аккумулятор. Регистр ВХ также выполняет специальную функцию — используется для базирования адресов. Следующая группа регистров, которые называются адресными, включает в свой состав также четыре 4 Л. Н. Королев 97
словных (двухбайтовых) регистра, имеющих назвав ния SP, BP, SI и DI. Регистр SP выполняет функции I указателя стека в основной -памяти. В стеке хранит- I ся информация, необходимая для возврата из под. I программ и для прерываний. Три другие регистра BP, SI, DI попользуются для формирования адресов при разных способах индексации и косвенного обра- щения. Арифметическо-логическое устройство имеет прямой доступ к этим регистрам, т. е. может менять их содержимое, поэтому за ними сохранилось название регистров общего назначения, хотя почти за каждым из них закреплены определенные функции. Следующая группа регистров относятся к устрой- | ству управления. Это группа из четырех двухбайтовых регистров, названных сегментными: CS, DS, SS, ES. В состав регистров управления входит также двухбайтовый регистр, выполняющий роль счетчика | команд (IP), и 16-разрядный регистр признаков7 (FLAGS), или регистр флагов. В регистре флагов хранятся признаки, характеризующие состояние МП, режима работы, в котором он находится. Назначение сегментных регистров определяется своеобразным способом формирования исполнцтельного 20-разрядного адреса, направляемого в основную память. В командах МП, имеющих байтовую структуру, по существу, нет возможности в программах задавать прямой полный физический адрес по основной памяти, задается лишь 16-разрядное смещение или логический адрес. Можно сказать и по-другому: адресация в МП этого типа ведется только внутри сегмента, занимающего адресное пространство в 64К байта; таких сегментов в памяти может быть четыре. Сегментные регистры служат для указания начала расположения соответствующего сегмента в основной памяти. CS — сегмент управления (control segment) — используется исключительно для хранения программ. Когда речь идет о выборке команды по счетчику команд, то адрес обращения к памяти формируется с помощью информации, записанной в этом сегментном регистре. Все манипуляции со стеком связаны с сегментом SS. Данные размещаются в сегменте, адресуемом регистром DI. Однако при обращении к данным доступны и все остальные сегменты. При обработке строк результаты размещаются в сегменте, адресуемом с помощью регистра ES. 98
Существует следующая связь между четырьмя ад- песными регистрами SP, ВР, SI, DI, о которых речь шла выше, и сегментными регистрами: в командах, я которых используется адрес, сформированный в SP, предполагается обращение к памяти через стековый Сегментный регистр SS; для регистра ВР (адрес ба- чы программ) используется сегмент CS; адреса, сформированные в регистрах CI и DI соответственно, связаны с использованием сегментов, адресуемых регистрами ES и DS. Очетаик команд IP связан с использованием управляющего сегмента CS. Рассмотрим схему формирования 20-разрядного полного физического адреса ло основной памяти. Как мы уже знаем, адресные регистры SP, ВР, SI, DI и регистры общего назначения, в которых также может быть сформирован адрес, имеют только 16 двоичных разрядов. Вся адресная арифметика тем самым дает возможность получать только 16-разрядный логический адрес. Полный физический 20-разрядный адрес формируется следующим образом. В зависимости от команды или регистра, в котором сформировался логический адрес, выбирается для использования соответствующий сегментный регистр. К 16 разрядам выбранного сегментного регистра справа добавляются четыре двоичных нуля (двоичное число, содержащееся в сегментном регистре, умножается на 24= 16) и к полученному результату прибавляется логический адрес (см. рис. 40). сегментный регистр логический адрес полный Физический адрес по основной памяти 15 Ш 13 12 11 2 10 I I I I I I • ■• I I I I 0 0 0 0 15 3 2 10 I I • • • I I I I I . I I I 19 18 17 16 15 3 2 10 I I I I I I I I I I М I I Рис. 40 В системе команд МП предусмотрены специальные команды, позволяющие заполнять сегментные регистры ло усмотрению системного программиста, т. е. расположение сегментов в основной памяти может быть выбрано достаточно произвольно. Они могут перекрывать друг друга по физическим адресам, находиться друг от друга на почтительном расстоянии, 4* 99
если это позволяет реальный объем оперативной па. 1 мяти. Например, если объем реальной физической 1 памяти, подключенный к МП, равен всего 64К бай- | там, то можно во все сегментные регистры заслать 1 нули, что будет означать, по существу, соединение! всех сегментов воедино, а .в этих 64К байтах памяти \ расположатся и программы, и данные, и стек, и ре-1 зультирующие строки. С другой стороны, если объем физической памяти реально равен 1М байту, то все четыре сегмента займут только четвертую часть этого объема (4Х64К байт=256К байт). Однако в динамике работы, меняя содержимое сегментных регистров,, можно по ходу дела как бы перемещать сегменты по этой большой памяти и, таким образом, использовать весь предоставленный объем физической памяти. Наличие программно-доступных сегментных регистров позволяет тем самым осуществить динамическое . распределение физической памяти. Наличие в ЭВМ средств динамического распреде- ■* ления .памяти весьма важно для организации мульти- / программного режима. В МП такие аппаратные сред- ■ ства предусмотрены. Может показаться странным» % зачем в структуре такой «маленькой» машины, как ' МП, предусматриваются достаточно развитые средства динамического распределения памяти, появившиеся у больших стационарных ЭВМ сравнительно недавно. Дело в том, что если микропроцессор используется в качестве основного логического элемента микроЭВМ типа персонального компьютера, то одновременно с программой пользователя в основной памяти находятся много других служебных и управляющих программ. Например, для работы служебной программы высвечивания на экране требуется достаточно большой объем физической памяти. Когда эта программа включается в работу, можно изменить со- * держимое сегментных регистров, что будет означать выделение этой программе независимых новых участков памяти. Тем самым интересы пользовательской программы никак н£ будут затронуты. Иными словами, динамическая сегментация позволяет делить па* мять между многими программами. Теперь нам следует рассмотреть функции регистра признаков FLAGS. Эти признаки характеризуют состояние микропроцессора и управляют его работой. В пяти разрядах регистра хранятся признаки результата работы АЛУ: CF — перенос, ZF — нулевой ре- 100
зультат, SF — знак результата, AF — переполнение и pF — четность, использующиеся в командах условного перехода. Кроме аналогичных известных по Intel-8008 признаков здесь введен дополнительный признак AF, характеризующий переполнение при выполнении действии десятичной арифметики. Во флаговом регистре имеются три управляющих разряда. Один из них управляет направлением обработки символьных строк при выполнении команд символьной обработки. Символьные строки можно обрабатывать справа налево и слева направо, такая возможность обеспечивает более быстрое выполнение операций сравнения строк, их редактирования. Затем существует разряд (триггер), управляющий прерыванием, точнее, признак, разрешающий или запрещающий реакцию на внешние прерывания. Наконец, имеется разряд TF, переводящий МП в режим трассировки. Об этом режиме следует сказать особо. Если признак TF поставлен в состояние 1, то после выполнения каждой команды происходит прерывание исполняемой программы, т. е. принудительная передача управления к некоторой подпрограмме с запоминанием всего необходимого для возврата. Если упомянутая подпрограмма, на которую передается управление при прерывании, состоит всего из двух команд — СТОП и ВОЗВРАТ, то режим трассировки обеспечивает останов после каждой выполненной команды основной программы. Но более интересен случай, когда подпрограмма реакции на прерывания после выполнения каждой команды производит выдачу на экран дисплея результата выполненной команды, значения исходных операндов, значения ос* новных регистров МП. Такая подпрограмма реализует отладочный режим, позволяя проследить за тем, что происходит при исполнении программы на выбранном участке ее работы. Именно для разработки мощных систем семантической отладки программ и используется режим трассировки. Без режима трассировки было бы очень трудно отлаживать сложные программы базового программного обеспечения. Кроме того, он попользуется и для создания программ диагностики, проверяющих правильность работы микропроцессора и всего оборудования, которое с ним связано. Микропроцессор обсуждаемого типа благодаря своим логическим возможностям нашел очень широ- 101
кое применение прежде всего при создании персо* нальных ЭВМ, предназначенных для автоматизации профессиональной деятельности. На основе intel-8086 сотнями тысяч и миллионами штук выпускают микроЭВМ такие мощные фирмы, как IBM, Apple. Архитектура этого МП стала своего рода стандартом несмотря на то, что существуют и выпускаются многие другие МП'с более развитыми возможностями и более интересной структуры. В СССР близким по структуре к МП Intel-8086 является микропроцессор К-1801. На основе этого микропроцессора намечен массовый вьшуск персональных компьютеров отечественного производства. Краткие сведения об автокоде. Автокод для Intel-8086 получил название ASM-86, что, по-видимому, следует расшифровать как ассемблер-микро-86. Переменным этого машинно-ориентированного языка соответствуют значения адресов, указывающих на расположение в памяти соответствующих элементов данных или входов в программу. Кроме того, при описании переменных обязательно требуется указывать тип и сегмент, к которому .переменная относится. В командах ассемблеру указывается, к какому типу следует отнести ту или иную переменную. Для указания шла данных однобайтовых переменных зарезервировано обозначение DB, двухбайтовых — DW, четырехбайтовых — DD, с помощью этих обозначений можно задавать константы и уточнять тип переменных в командах. Подлежат описанию начальные и конечные адреса сегментов, используемых в программах. Кроме этого, в состав команд ассемблеру входят обычные для всех ассемблеров псевдокоманды EQV, ORG. He во всех ассемблерах существует возможность описывать процедуры, в ASM-86 такая возможность обеспечивается псевдокомандами PROC и ENDP. Внешняя переменная описывается .псевдокомандой EXTR. Операционные команды ASM-86 содержат метку, отделяемую двоеточием, мнемонический код операции, информацию об операндах и комментарий. Комментарий следует после точки с запятой, ограничивающей команду. Наиболее сложная часть — информация об операндах. Чаще всего эта информация содержит имена регистров общего назначения, в которых находятся один или два операнда. Однако в машинной системе команд МП существует большое количество способов получения 102
логического адреса операнда или самого операнда. При так называемой «непосредственной адресации» операнд извлекается из байтов самой команды. При абсолютной адресации в команде содержится полный 20-разрядный адрес по физической памяти. Точнее з команде содержится 16 разрядов, указывающих на начало сегмента и 16 разрядов логического адреса. Полный адрес вычисляется по правилам образования адреса с использованием сегментных регистров. В машинной системе команд существует возможность извлечения операнда по косвенному адресу, сформированному на некоторых регистрах общего назначения (ВХ, SI, DI). Существуют модификации машинных команд, позволяющих базировать логический адрес, дающий возможность его индексировать. Допустимы базирование с одновременным индексированием и адресация относительно счетчика команд в командах условных и безусловных переходов. Все эти возможные способы машинной адресации должны учитываться в ассемблере. Кроме того, в системе команд предусмотрена возможность работы как с отдельными байтами, так и с двухбайтовыми операндами. Ассемблер должен получить точную информацию о том, с какого рода операндами оперирует записанная на ассемблере команда. Например, для операции сложения предусмотрен мнемонический код ADC (сложение с учетом переноса). Это мнемоническое обозначение служит для обозначения сложения байтов, слов и для операндов, выбираемых из регистров, и для операндов, выбираемых из памяти по косвенному базируемому и индексированному адресу. Соответственно существует не очень простой для понимания свод правил построения информации об операндах в командах на языке ассемблера, которые позволяют транслятору с этого языка правильно формировать машинную команду. В частности, для указания косвенной адресации используются квадратные скобки, в которые заключают имя регистра, хранящего косвенный адрес. Например команда К: MOV[BX],0 присваивает слову памяти с адресом, указанным в регистре ВХ, значение пуля. Чтобы то же самое выполнить не над словом, а над байтом, прямо в ассемблерной команде следует описать тап операнда и команда будет выглядеть так: К: MOV BYTE PTR[BX], 0. Здесь BYTE PTR — обозначение типа операнда, выбираемого по косвенному адресу. ЮЗ
По синтаксису ассемблер ASM-86 весьма близок к ассемблеру ЕС ЭВМ (IBM-360/370), а по своей сложности он, по-видимому, превосходит этот один из наиболее сложных машинно-ориентированных языков. Программирование на ассемблере для микропроцессор ров или микроЭВМ, созданных на их основе, являет, ся п-епогативой системных программистов достаточно высокой квалификации, в совершенстве знающих структуру ЭВМ и ее машинный код. Если это дело доверить программистам более низкой квалификации, которые используют в своей работе только наиболее простые и понятные конструкции ассемблера, то изготовленные ими программы, как правило, работают малоэффективно и медленно. А как известно, программирование на ассемблере на то и существует, чтобы получать очень эффективные высококачественные по своей производительности программы. Организация ввода/вывода. Для ввода/вывода используются две основные команды: IN — для приема информации от внешнего устройства и OUT — для передачи информации в устройство. Каждая из этих двух команд имеет модификации для приема-передачи байта, для приема-передачи слова (двух байтов сразу), для выбора адреса устройства из байта команды и для выбора адреса устройства по адресу, находящемуся в регистре DX. Если говорить более точно, то в адресах указывается не устройство, а так называемый порт. Порт представляет собой специально выделенную группу ячеек физической памяти, которая не аходит в состав основной, адресуемой в других командах микропроцессора памяти. Ячейки этой особой памяти для портов непосредственно связаны с регистрами внешних устройств, хранящих информацию, предназначенную для вывода/ввода. Организа-' ция связи с внешними устройствами посредством портов обладает тем преимуществом, что позволяет подключать к одному порту разные внешние устройства. Имеются ввиду процесс комплектации микроЭВМ конкретным составом внешних устройств. В каком-то смысле порты можно считать логическими адресами регистров внешних устройств. Реальное соединение входного (выходного) регистра внешнего устройства с выбранным портом эквивалентно отображению логического регистра на физический. Кроме того, ячейки памяти портов могут служить в качестве буферов для временного хранения информации перед тем, как 104
она активизирует работу реального устройства или воспринимается центральным процессором микроЭВМ. Командами IN, OUT можно задать обращение к 216 портам, т. е. число портов приема-передачи по адресации очень велико. В действительности из них используется весьма небольшая часть. Такие большие логические возможности по числу допустимых портов приобретают практический смысл, когда микроЭВМ связываются в сеть. С точки зрения конкретной микроЭВМ, входящей в сеть, связанные с ней другие ЭВМ этой сети являются по отношению к ней внешними устройствами. Очень важную роль для организации работы с устройствами ввода/вывода играет система прерыва-^ ний и команды, обеспечивающие совместную работу центрального процессора (МП) и внешних (вводных/ выводных) устройств. Для того чтобы внешнее устройство, например игольчатая печать, правильно работало, байты, кодирующие символы, должны поступать на него во вполне определенном темпе. Если, устройство способно печатать 10 символов в секунду, то нельзя к нему обращаться в более быстром темпе. Когда печатающее устройство достигло конца строки, следует передвинуть каретку на начало новой строки и продвинуть бумагу. Этот процесс занимает уже секунды, и, пока он не завершен, нового символа выдавать на печать нельзя. Работой внешних устройств управляют специальные программы, которые называются драйверами. Эти программы должны быть информированы о том, что происходит на внешних устройствах, управляемых ими. Вернувшись к тому же примеру с печатью, видим, что программы должны знать, готово ли печатающее устройство к приему следующего символа. Система прерываний представляет собой главным образом систему сигнализации о том, что происходит во внешнем по отношению к МП мире. Очевидно, что от организации прерываний зависит не только эффективность управления, но и простота структуры программ, управляющих устройствами ввода/вывода и координирующих их совместную работу. Система прерываний в Intel-8086 организована следующим образом. В МП из внешнего мира идут две сигнальных линии, по которым поступают сигналы прерываний от внешних устройств. По одной из них поступают наиболее важные по значению «немаскируемые» сиг- 105
налы прерываний, по другой - менее приоритетные или обытаые прерывания. Внешнее устройство, .внутреннее логические схемы которого фиксируют некоторое событие, формируют и посылают сигнал по линии прерывания и по шине данных отправляют в микропроцессор лсод, идентифицирующий соответствующее конкретное устройство. Сигнал прерывания, поступая в МП, прерывает его работу, т. е. выполнение команд программы, которыми МП занят в этот момент, и .принудительно передает управление другой специальной .программе, реагирующей на это прерывание. Представьте себе, что после каждой команды обычной программы, выполняемой МП, как бы вставлена команда условного перехода на подпрограмму THnaJF INT GOTO PP. Если булева переменная INT, обозначающая значение сигнала прерывания, равна 0 (ложь), то программа будет выполняться обычным образом. В тот момент, когда INT окажется равной 1 (истина), произойдет переход к другой программе ло метке PP. Конечно же, .писать лосле каждой команды обычной программы подобного рода условный переход, не имеющий никакого отношения к ее содержательному смыслу, неразумно. Об этом заботится специальная логическая схема МП, которая лосле наполнения очередной команды проверяет, не появился ли сигнал прерывания. Если его нет, то выполняется следующая команда программы. Но если он обнаружен этой схемой, то обычное течение процесса прохождения программ резко меняется. При прерывании флаговый регистр, содержимое сегментного регистра программ CS и счетчик команд запоминаются в стеке. Соответственно указатель стека изменяется, определяя место размещения сохраненного содержания счетчика команд в стеке. Одновременно с этим логическая схема прерывания формирует содержимое счетчика команд для перехода к системной программе реакции на /прерывание. Формирование производится следующим образом. Как мы уже говорили, одновременно с посылкой сигнала по линии прерывания устройство по шине данных отправляет свой номер — код идентификатора. Этот 8-разрядный номер умножается на четыре, и полученное число засылается в счетчик команд в качестве адреса начала подпрограммы реакции на прерывание. Тем самым .по номеру устройства, выдавше- 106
го сигнал прерывания, выбирается вполне ®Х1фъдё0&$^%& ный вход в подпрограмму. Эти входы расположены в первых 1024 ячейках физической памяти через четыре байта, т. е. адреса входов имеют значения 0, 4, 8, 12, 16 и т. д. до 1024. Таким образом, микропроцессор различает прерывания от 256 причин. Часть прерываний формируется не внешними устройствами, а внутренними устройствами процессора. К внутренним относятся прерывания по переполнению, при появлении недопустимых операндов в операции деления, по сигналу трассировки и ряду других причин. Внутренние прерывания обладают наибольшим приоритетом и обслуживаются в первую очередь. Существенно, что в тот момент, когда .производится передача управления на подпрограмму, обслуживающую прерывания, в регистре флагов устанавливается признак, запрещающий другие прерывания, т. е. выполнение программы реа/кции на прерывания нельзя прервать. Это важное условие позволяет разобраться в ситуациях, когда одновременно несколько внешних устройств требуют к себе внимания. Мы говорили, что сигналы прерывания поступают в МП по двум линиям. Наиболее важные — немаскируемые прерывания, которые нельзя игнорировать и задержать. Когда мы говорили о невозможности прервать программу реакции, то это не совсем так. Если во время работы такой программы появился сигнал на более приоритетной линии, то работа и такой программы может быть прервана. Дело в том, что цреры- вания, идущие по линии наивысшего приоритета, свидетельствуют главным образом об отказах устройств* ошибках аппаратуры или недозволенных действиях. В этом случае прекращается нормальная работа по обслуживанию внешних устройств и должны выполняться подпрограммы принятия экстренных мер. Эти подпрограммы могут высветить на экране диагностическое сообщение о характере отказа либо попытаться повторить вычисления с контрольной точки, если прерывание зафиксировало ошибку в аппаратуре. Система прерываний рассматриваемых МП называется двухприоритетной системой прерываний по вектору. «Двухприоритетная» означает, что реально существуют две сигнальных линии с разным приоритетом. Слова «по вектору»' отражают то, что для каждого прерывания выбирается своя индивидуаль- 107
яая точка входа в подпрограммы, обслуживающие прерывания. В конечном итоге всякое прерывание влечет «принудительный» переход к выполнению какой-то подпрограммы. Эта подпрограмма, как и обычные подпрограммы, заканчивается командой возврата. По этой команде восстанавливается «упрятанный» в стек счетчик команд, сегментный регистр CS и флаговый регистр, т. е. восстанавливается состояние МП, которое было до прерывания. Ранее прерванная программа теперь может продолжать свою работу. Отметиш следующую важную особенность. Сегментный регистр CS, как мы помним, указывает на начало сегмента, предназначенного для хранения программ (для хранения данных служат другие сегменты). При переходе к системным подпрограммам реакций на прерывания в случае необходимости можно в этот сегментный регистр заслать новое содержимое, выделив тем самым новую область физической памяти, в которой расположены системные программы. Иными словами, системные программы и обычные пользовательские программы можно размещать в непересекающихся участках физической памяти и тем самым исключить их взаимное влияние друг на друга. В том случае, когда программы пользователя и системные программы расположены физически в одном сегменте, не исключена возможность такой ситуации, что нелепая случайная ошибка в пользовательской программе испортит системную программу. Сегментная организация памяти позволяет защитить раз- личные программы и данные друг от друга, что повышает надежность системы в целом. Теперь мы /перейдем к рассмотрению другой архитектурной линии построения микро- и мини-ЭВМ, которая также приобрела статус некоторого стандарта и озязана с семейством машин фирмы DEC, а именно с семейством PDP-11. В нашей стране эта архитектурная линия представлена мини-машинами серийного производства линии СМ 3/4, «Электроника-60», НЦ-80. На ее архитектурной основе созданы персональные ЭВМ: ДВК-2, ДВК-2М, ДВК-3. В дальнейшем линия будет представлена и другими более совершенными профессиональными и персональными ЭВМ массового выпуска. 2.5.2. Микро- и мини-ЭВМ архитектурной линии семейства СМ 3/4 и PDP-11. Фирму DEC считают пионером в области создания мини-ЭВМ в капитали- 108
сТйческих странах. Первые ее малые машины PDP-8 нашли в 60-х годах очень широкое применение и огромный по масштабам того времени спрос. Эти 8-раз- рядные машины, очень просто устроенные, неприхотливые и небольшие по габаритам, применялись главным образом для управления и сбора информации в различного рода лабораторных установках для проведения физических экспериментов как средство цифровой программно-управляемой автоматики в производственных процессах. В Советском Союзе приблизительно в это же время была также создана мини-ЭВМ «Сетунь» — машина весьма оригинальной структуры. Она была выпущена в небольшом количестве экземпляров, и в силу ряда причин дальнейший ее выпуск был прекращен. Думаю, что основная причина состояла в том, что не все в то время смогли оценить важность производства машин такого класса. Только тогда, когда стало ясно по зарубежному опыту значение мини-техники, у нас обратили взимание на мини-ЭВМ и за основу взяли архитектуру, т. е. систему команд и общие принципы организации, зарубежных машин, выпускаемых большими сериями. Архитектурная линия, о которой пойдет речь, обладает рядом интересных особенностей, своеобразием построения системы команд, способами организации управления устройствами ввода/вывода и программным обеспечением, созданным для машин этого типа. За рубежом в классе микроЭВМ эта линия представлена семейством LSI-11, а в классе мини-машин — семейством PDP-11. Как некое продолжение этой линии можно рассматривать так называемые супермини-ЭВМ VAX-11/780, 750, 730 и др. Машины типа VAX заметно отличаются по системе команд и возможностям арифметическо-логического устройства от семейства PDP-11. Так, разрядность машинного слова у машин типа VAX равна 32, т. е. в два раза больше, чем 16 разрядов машин PDP-11. Тем самым значительно повышена точность вычислений. Увеличено также адресное пространство, что позволяет VAX комплектовать оперативными запоминающими устройством в 4 и 8М байтов. Семейства PDP-11 и VAX объединяет принцип организации взаимодействия устройств и модулей системы на основе использования «общей шины». Это, пожалуй, главное, в чем схожи две архитектуры. С некоторой долей прибли- 109
жения «общую шипу» можно считать основой архи- Гектуры вычислительных машин этой серии. Общая шина (UNIBUS) представляет собой мно. жество линий «передачи информации со следующим их ' функциональным разделением: адресные линии, па которым .производится обмен адресами между устройствами; линии данных, по которым производится об* мен данными; линии управляющих сигналов. Шина имеет свой блок управления, основная задача которого состоит в регулировании потоков информации по линиям шины, соблюдение приоритета и правильного направления информации от отправителя к получателю. К этому «главному» устройству могут быть подключены модули памяти, вводные/выводные устройства, внешние запоминающие устройства и другое оборудование. В том числе к шине как наиболее приоритетное устройство может быть • подключен цент- ральный процессор или микропроцессор. Каждое устройство, подключенное к шине, должно иметь в своем составе логическую схему, адаптирующую это устройство к строго оговоренным правилам работы с шиной; Такие логические схемы называются адаптерами, В функцйаг адаптера входит, во- первых, преобразование информации, поступающей из устройства в шину, к тем электрическим характеристикам и кодировке, которую шина способна воспринять. Во-вторых, на адаптер возлагаются логические функции: он должен «понять», какая информация» идущая по шине, относится именно к тому устройству, которое он представляет. Адаптер должен «отследить» момент времени, когда ему разрешено подать на линии шины информацию, предназначенную другому модулю или устройству. -Со стороны шины работой адаптеров управляют сигналы, идущие по ее управляющим и адресным линиям. Часть адаптера, связанная с конкретным устройством, естественно, учитывает особенности этого устройства. Итак, со стороны шины все подключаемые к ней устройства имеют как бы одно лицо, или, как говорят в технике, подключаются в соответствии с единым интерфейсом. Об устройстве, которое может быть подключено к общей шине, говорят, что Мно имеет выход на шину. Тем самым создается логический и физический единообразный способ подключения любых устройств к общей шине,: а это позволяет комплектовать ЭВМ различным оборудованием, различно
йЫ'Мй типами внешних устройств сравнительно прос- то. Любой модуль или устройство, подключаемое к обшей шине, в своем составе должно иметь несколько буферных регистров для временного хранения информации до того момента, пока не освободится шина для ее передачи, или готовых лринять информацию, поступающую с шины для последующей ее передачи на обработку в устройстве. Для внешних устройств, осуществляющих прием и передачу информации, например для устройства типа памяти, таких буферных регистров должно быть не менее двух: буферный регистр приема и буферный регистр передачи. Кроме того, в каждом устройстве могут существовать также специальные регистры для приема/выдачи управляющей информации — адресов, сигналов прерывания и др. Тем самым каждое устройство, подключаемое к общей шине, представлено группой связанных с ним (регистров. С точки зрения центрального процессора общую шину можно рассматривать как множество адресуемых функциональных регистров, т. е. как регистровую память. Посылка информации в эту регистровую .память интерфейса возбуждает некоторую функцию, реально выполняемую соответствующим внешним устройством. Таким образом, работа программ, управляющих работой этих внешних устройств, логически сводится к обмену информацией с регистрами интерфейса. Единообразие способа их подключения и адресации упрощает разработку соответствующих драйверов. Идея «шинной архитектуры» оказалась весьма плодотворной и нашла свое отражение во многих других архитектурных решениях при проектировании ЭВМ и вычислительных систем. Крупноблочная схема ЭВМ с общей шиной представлена на рис. 41. Что касается конкретной мвдроЭВМ семейства LSI-11, то адресные линии общей шины рассчитаны на передачу адресов из J8 двоичных разрядов, т. е. покрывают адресное пространство от 0 до 218—1 в 256К байтов. Линии данных рассчитаны на передачу 16-разрядных слов. Управляющие линии несут сигналы прерываний, готовности, так называемый «географический адрес» устройства, точнее, его порядковый номер по физическому расположению. Осязаемо с точки зрения внешнего инженерного воплощения шина выглядит как несколько «посадочных» мест для 111
подключения адаптеров устройств. Обычно таких ф* зиЕиГпосадочных мест около двадцати. Это озн* чает что конкретную установку можно комплекта, вать' комбинацией из двадцати различных устройств. Характеристика системы команд ЭВМ типа PDP-11, СМ-3, СМ-4. Все команды этих машин имеют одинаковый формат, равный основной разрядности^ т. е. двум байтам. Правда, в потоке команд в ряде ОЗУ А А ВУ1 Адресные линии S §5 Линии данных ВУ2\ УпраЗляюицие линии 15?х Общая .шин(г Рис. 41 случаев к основной команде может быть добавлено еще одно или два слова, содержащие, как правило, адресную информацию. Арифметическо-логическое устройство может выполнять действия с байтами (8 разрядов) и со словами (16 разрядов). Однако в этих ЭВМ выборка из памяти осуществляется словами. Адрес начала слова соответствует четному байту. Имеется 6 типов команд, различающихся назначением разрядов в командном слове. Мы здесь подробно рассмотрим основной тип кома-яды, содержащий указание на два олеранда, участвующие в операции. Двухадресный формат команды содержит три поля: 4-разрядный код операции; 6-разрядное поле, указывающее на первый операнд; 6-разрядное поле, указывающее на второй операнд. Мы здесь сознательно не говорим О'б адресах первого и второго операндов, так как в этих 6-разрядных полях содержится не адрес, а указание на то, каким образом этот адрес должен быть вычислен. Можно сказать, что в указанных 6 разрядах закодирован алгоритм получения логического 16-разрядного адреса. Рассмотрим подробнее способы вычисления адреса. В трех первых разрядах 6-разрядного поля указан способ получения адреса, в трех оставшихся раз- 112
ядах — номер регистра общего назначения, содержимое которого участвует в формировании адреса (рис.42). S 4 J 2 7 0 ,—v , v /77- Г- no/ie способа фор ми- номера регистра робания адреса Рис. 42. Адресное поле команды На АЛГОЛе способы адресации могут быть описаны следующими способами. 1. Н т=0 Шеп ОПЕРАНДАМ где R[0:7] — массив регистров общего назначения, г — целое число в подполе г. Это означает, что при т=0 в качестве операнда выбирается содержимое регистра, т. е. адресам операнда считается номер регистра, указанный в подполе г. 2. ifm-l_then А: =ВД Здесь А — вычисляемый адрес, который содержится в регистре с номером, указанным в г. Иными словами, адрес операнда выбирается из указанного в ,поле г регистра. Этот способ называется косвенной адресацией по регистру. 3. if (B = 0)A(m = 2)then begin A: = R[r]; R[r]: = = R [r] + 2 end if (B=l)A(m = 2) then begin A: = R [r]; R[r]: = = R [r] + 1 end Значение переменной В указывает, имеется т в виду работа с байтом (В=1) или со словом (В=0). Смысл этого способа вычисления адреса состоит в том, что после выборки в качестве адреса информации из регистра R[r] к нему добавляется 1 или 2 в. зависимости от длины операнда, с (которым производится работа. Такая команда значительно упрощает работу по выборке элементов из байтовых или словных мае- 11*
сивов. Такой способу адресации называется автоинкре. ментной адресацией. 4. if (В = 0)Л(т = 3) then begin R[r]: = R [r]—2; A:=R[r] end if (B= 1)Л(т = 3) then begin R[r] : = R[r] —1; A: = R [r] end Этот способ называется автодекрементной адресацией. Автодекрементный способ адресации служит тем же целям, что и автоинкрементная адресация, однако обеспечивает .последовательную выборку эле- ментов массива в обратном направлении, т. е. в направлении уменьшения адресов. 5. if m = 4 them A: =R[r] + M[PC + 2J где М[0:2|16] — массив слов оперативной памяти. Этот способ называется индексированием. Для получения логического адреса к содержимому регистра R[r] прибавляется значение слова, следующего за исполняемой командой в лотоке команд, PC — счет чик команд. Предусмотрена также косвенная адресация. В этом' случае вычисляется адресная величина в соответствии с алгоритмами 2, 3, 4, но она используется не как адрес операнда, а как адрес слова памяти, в котором этот адрес находится. Если символом М мы обозначим массив слов памяти, то косвенный адрес вычисляется по формуле А: = М[А]. Исходное А вычисляется всеми указанными выше способами, поэтому говорят о косвенной адресации по регистру, косвенной автоинкрементной и автодекрементной адресации, о косвенной адресации с индексированием. Как следует из вышеизложенного, в микроЭВМ рассматриваемого класса существуют регистры, адресуемые разрядами подполя г. Эти регистры занимают адреса с 0 «по 7 общего единого для ЭВМ адресного пространства. Их, следовательно, можно считать лер- выми словами основной памяти. Реально они расположены в центральном .процессоре или микропроцессоре. Два последних регистра с адресами 6 и 7 выполняют вполне определенные функции. Реписгр 7 является 16-разрядным счетчиком команд (PC). Регистр 6 играет роль указателя стека (SP). 114
go всех перечисленных выше способах адресации лгут участвовать также регистры PC и SP. Это дает полнительные возможности относительной адресаций п0 счетчику команд, например, можно организо- u Tb относительные передачи управления внутри 3оОГрамм«ого модуля. Очевидно, что такая возможность упрощает программирование модулей, свободно перемещаемых по памяти. Преобразование 16-раз- пядного логического адреса в 18-разрядный физический адрес производится с помощью так называемой карты памяти. Она представляет собой восемь ^разрядных регистров. Логический адрес можно рассматривать как адрес, состоящий из трех полей: указателя регистра карты памяти (три разряда), значения страничного смещения (семь разрядов), номера байта в странице (шесть разрядов). Формирование физического адреса производится по схеме, приведенной на рис. 43. Страница содержит 64 -байта, лри преобразовании адреса номер байта в странице остается неизменным, т. е. 6 последних разрядов логического адреса остаются неизменными и в результирующем физическом* адресе. Страничное смещение логического адреса, рассматриваемое как двоичное целое, складывается с 12-разрядным двоичным числом, которое находится в одном из регистров карты памяти, указываемом в трех старших разрядах логического адреса. В результате сложения содержимого страничного смещения с содержимым регистра карты мы получаем 12-разрядное число, (Представляющее старшие разряды физического адреса. К этим 12 разрядам присоединяются 6 младших разрядов логического адреса, в результате чего формируется полный 18-разрядный физический адрес (ФА). В формальной записи это мож'но изобразить так: ФА - MAP [22б15 + 2би + б131 + у 21~% + 2 26,, где MAP — массив регистров карты памяти, 6i5^ 6i4,..., бо — значения соответствующих разрядов логического адреса, начиная с младшего. Что же позволяют делать такие средства преобразования адресов? Прежде ©сего это один из способов динамического распределения памяти. В пространстве физических адресов можно произвольным 11S
\Дешифрдтор\^~ I ZE л 15 П13 1211 10 9 8 7 в 5 Ь 3 2 1 О номер строки карты памяти страничное смесце- К- ние --Л * логический адрес номер байта 6 странице СИ V 11 16 15 14 номер 13 12 11 10 9 8 7 6 , ризическои страницы 5 4 3 2 1 0 номер байта 5 странице физический адресе Рис. 43. Схема формирования физического адреса
йоазом размещать блоки, каждый из которых со- тоит из 128 страниц. Общее число физических стра- сйц в которых можно разместить блоки, равно oi2=i4096. В этом пространстве 128-страничные блоки можно размещать подряд, с перекрытием, с разрыва- мй по пространству. К регистрам карты памяти доступ осуществляется специальными командами, т. е. они программно-изменяемые, что и определяет возможность динамического, перемещения блоков. Важность аппарата динамического распределения уже обсуждалась ранее. Несмотря на то что логически этот аппарат заметно отличается от сегментного распределения, реализованного в архитектуре Intel-8086, цели достигаются те же самые: увеличение реально доступных объемов запоминающих устройств сверх того, что определено адресным пространством логического адреса; достижение независимости различных программ, даже если их логические адреса совпадают. ВоО)бще, логический адрес часто называют математическим адресом, виртуальным адресом, т. е. адресом, который сам по себе не является указателем ячейки физической памяти ЭВМ. Машины, умеющие программно-аппаратно преобразовывать виртуальный адрес в физический, называются машинами с виртуальной, воображаемой па- мятью. В крупных стационарных ЭВМ с виртуальной памятью обычно логический адрес значительно превышает реальные объемы физической памяти. Например, в ЕС ЭВМ Ряда 2 виртуальный адрес покрывает адресное пространство объемом 224 байтов (16М байтов), в то «время как реальные объемы физической памяти, поставляемые заводом, сейчас равны 4—8М байтам. В крупных вычислительных системах виртуальный адрес может достигать 232 байтов, что соответствует объему адресуемого пространства свыше 4Г байтов или 4096М байтов. Как мы видим, в микроЭВМ ситуация противоположная — логический адрес может адресовать только часть физического адресного пространства. Однако в 32-раэрядных микропроцессорах следующего поколения виртуальный адрес будет способен адресовать гигабайтные объемы. Теперь обратимся к операциям ввода/вывода «и прерываний, которые по своей организации значительно отличаются от того, что мы уже знаем. Каждое устройство ввода/вывода, внешние запоминающие 117
устройства, подключаемые к общей шине, имеют, ка* уже говорилось, своих «представителей» в системе & виде адресов общего адресного пространства. Эта адреса строга зафиксированы. Ячейки с фиксирован* ными адресами называют регистрами интерфейса. Обычно с каждым устройством связаны несколько регистров. Если устройство может принимать и вы* давать информацию (внешние запоминающие устрой* ства, терминал с клавиатурой и дисплеем), то его приемную и передающую части представляют каждую два регистра. В первом регистре каждой пары, обычно появляется информация о текущем состоянии конкретного устройства, или в этот регистр заносятся сигналы управления его работой (при приеме). Вто* рой регистр служит для хранения байта данных, принимаемого или отправляемого из устройства в центральную часть. Для некоторых устройств число ре* гистров-представителей больше четырех. Управляющие регистры интерфейса как приемника, так и передатчика могут выставить сигнал запроса на прерывание центрального процессора. Как правило, этот запрос связан по смыслу с состоянием готовности к приему (передаче) данных. Отметим, что сигналы готовности и запроса на прерывание не совпадают. Некоторые устройства: запросом на прерывание информируют и о других состояниях, связанных, например, с неисправностью. Содержимое этих регистров может быть считано обычными командами обращения к памяти, если указан соответствующий фиксированный адрес. За регистрами закреплены адреса в конце участка физической памяти в 64К байта. Обращаться с регистрами интерфейса приходится системным программам: драйверам, управляющим программам операционной системы, которые вызываются в работу по сигналам прерываний. В ряде моделей микропроцессоров предусмотрены специальные аппаратные средства, отключающие систему преобразования логического адреса в физический при переходе на выполнение системных программ. В этом случае логический и физический адреса совпадают. В тех моделях, где такие аппаратные средства отсутствуют, перед обращением к регистрам интерфейса программным путем изменяются регистры карт памяти так^чтоф?гдобиться такого соответствия. Прерывания в, этом семействе машин относятся к категории мно- 118
Оуровневых, приоритетных по вектору. Правда, в мйКроЭВМ этой серии используется только один уровень прерываний. у В центральном процессоре имеется специальный регистр PSW — слово-состояние программы, который играет ту же роль, что и регистр флага. PSW в своем составе содержит три разряда, указывающие на приоритет по прерываниям, присвоенный в данный момент центральному процессору. Меняя программным путем уровень, т. е. засылая в эти разряды тот или иной номер уровня прерываний, можно достаточно гибко выбирать ту группу внешних устройств, на прерывания от которых следует реагировать центральному процессору. При возникновении прерывания дозволенного уровня аппаратно уровень прерывания в PSW центрального процессора делается самым высоким. Это эквивалентно тому, что при переходе в режим прерывания процессор блокируется от дальнейших прерываний. Вместе с сигналом прерывания устройство по общей шине передает свой идентификатор, т. е. адрес слова в векторе прерываний. Для каждого устройства в векторе прерываний содержатся Два слова. В первом указано новое значение PSW, т. е. новые признаки состояния ЦП, в которое о« должен войти, и адрес перехода к подпрограмме реакции на данное прерывание. При этом старые значения PSW и счетчика команд упрятываются в -стек, по указателю стека SP. Как мы видидо, эта система прерываний весьма похожа на систему прерываний для Intel-8086, рассмотренную ранее. В PSW содержится разряд Т, имеющий тот же смысл, что и в других системах, т.е. разряд трассировки, необходимый для организации отладочных систем. Стек в машинах рассматриваемой архитектуры, используется не только для организации упрятывания информации, необходимой для возврата из прерываний, но ,и для организации вложенных процедур и рекурсивного обращения к процедурам. Он также может быть использован для реализации арифметических выражений, записанных в польской обратной записи. Как мы знаем, на этапе трансляции арифметических выражений они переводятся в такую бесскобочную форму записи, из которой сравнительно легко получить последовательность машинных команд, вычисляющих заданное выражение. 119
Общая характеристика автокода. Типы данных & ассемблере для машин архитектуры с общей шиной СМ-3/4, LSI-11 ограничиваются восьмеричными бай. тами, словными данными и десятичными числами. От* личить их в автокоде можно по точке, следующей за десятичным числом. Например, 1776 — восьмерична* константа, 1776. — десятичная константа. Счетчик ав- токодовских адресов (не путать со счетчиком команд в машине!), указывается точкой. Вместо команды ORG, принятой в большинстве автокодов для присвоения значений счетчику ячеек, используется обо-' значение . = N, где N — начальное, обычно восьмеричное значение счетчика. Вместо команды EQV используется знак равенства. Для представления констант используются зарезервированные слова WORD, BYTE, ASCII — имеются в виду словная, байтовая константы и массив символов в стандартной кодировке ASCII. Метка отделяется двоеточием, коммен* тарии следуют после точки с запятой. Допускаются вставки-пояснения. Перед всеми ключевыми словами команд ассемблеру (псевдокоманд) ставится точ-ка, что позволяет транслятору их выделять ,из потока других команд. Отличительной чертой ассемблера является сравнительно небольшое число команд, характерное для архитектуры этих машин. Основные двухадресные команды: пересылка слова MOV, пересылка байта MOVB, сложение, вычитание, поразрядное сравнение XOR, команды сдвигов сразу на несколько разрядов. К группе одноадресных команд относятся команды, имеющие дело с одним операндом, адрес которого указан в шести младших разрядах адресного поля команды (поля т и г). К этим операциям относятся очистка содержимого памяти или регистров, обращение кода, приращения, некоторые виды сдвигов и операции, облегчающие составление программ, имитирующих выполнение арифметических операций с большой точностью. К следующей группе относятся операции переходов, операции, воздействующие на регистры системы прерываний, а также операции со стеком. Среди этих команд есть безусловный переход, условный переход,, переход к подпрограмме и возврат из подпрограммы. Среди команд возвратов различают возврат из подпрограммы с одновременной засылкой единицы в разряд Т слова-состояния программы и возраст с за- 120
сылкой нуля в этот разряд. С помощью этих двух команд удается сравнительно просто реализовать отладочные программы пошагового выполнения команд исследуемой программы. Таковы в общих чертах архитектурные особенности этой линии развития микропроцессорной техники и микро- и мини-ЭВМ на их основе. Заметим, что, вообще говоря, с точки зрения системного программиста семантика языков ассемблера семейств Intel и PDP имеет много общего. Оба семейства имеют регистры общего назначения, обладающие приблизительно одними и теми же функциями АЛУ. Разумеется, с точки зрения системного программиста, который разрабатывает программы, управляющие распределением памяти, устройствами ввода/вывода, э-rti различия в архитектуре весьма существенны. Рассмотрение многочисленных, разных по синтаксису, но близких по семантике ассемблеров для микро- и мини-ЭВМ, по-видимому, и привело к созданию промежуточного машинно-независимого языка С. Идея разработки промежуточного машинно-независимого языка не нова. Давно существовало желание создать язык, сохраняющий черты автокода, который, с одной стороны, упрощал бы работу трансляторов по переводу с высокоуровневых программ на этот промежуточный язык, а с другой стороны, упрощал бы трансляцию'команд с промежуточного языка в коды команд любой конкретной машины. В начале 70-х годов в Советском Союзе под руководством профессора Э. 3. Любимского был создан язык такого типа, получивший название АЛМО (алгоритмический машинно-ориентированный). В смысле машинной ориентации он охватывал ряд отечественных ЭВМ, выпускавшихся в то время: БЭСМ-6, М-20, М-220 и др. Его использование позволило сократить трудозатраты на разработку трансляторов с некоторых языков. При этом поступали следующим образом. Транслятор с любого высокоуровневого языка разрабатывался с использованием языка АЛМО. Далее на каждую из машин перечисленных типов достаточно было составить сравнительно несложный транслятор, переводящий программы с языка АЛМО в соответствующий машинный язык. Следовательно, вместо разработки нескольких сложных трансляторов с нескольких высокоуровневых машин- Mi
но-независимых языков для каждой машины, доста. точно было составить один транслятор с АЛЛ\о Транслятор с высокоуровневых языков на АЛМб можно было разрабатывать вне зависимости от та нов ЭВМ. Язык С в сравнении с АЛМО, по-видимому, больше ориентирован в сторону высокоуровневых языкоа% Он сейчас довольно широко используется для разра^ ботки так называемого мобильного программного обеспечения.
РАЗДЕЛ III ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРОПРОЦЕССОРОВ МИКРО- И МИНИ-ЭВМ § 3.1. ОСНОВНЫЕ ЧЕРТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МИКРОЭВМ В данном разделе мы расскажем о некоторых системах математического и программного обеспечения микроЭВМ, широко используемых в классе персональных и профессиональных компьютеров, т. е. о системах общего назначения. Главным образом разговор пойдет о программном обеспечении, поддерживаемом операционными системами СР/М, UNIX, MS—DOS. По функциональным возможностям, точнее, по тем услугам, которые предоставляют перечисленные выше операционные системы пользователю, они близки. Различаются эти системы своей внутренней организацией, а именно файловыми системами, языком директив обращений к операционной системе, методами обращения к устройствам ввода/вывода, системой примитивов машинной графики. Сферы «влияния» этих систем весьма расплывчато можно разграничить следующим образом. Семейством ОС СР/М оснащаются микроЭВМ на основе микропроцессоров семейств с малой разрядностью (8—16). Системой UNIX микро- и мини-ЭВМ «деков- ской линии» (PDP-11, СМ 3/4, VAX) и MS-DOS оснащаются микроЭВМ, программно совместимые с персональными компьютерами фирмы IBM. Из систем, которые не являются слепком с зарубежный разработок, следует назвать ДССП — диалоговую систему структурированного программирования, разработанную в МГУ под руководством Н. П. Брусенцова. Эта система устанавливается на микроЭВМ ДВК-2, ДВК-2М, БК-0010. Такое деление расплывчато по той причине, что установка перечисленных выше систем на конкретном типе микроЭВМ не всегда зависит от фирмы — изготовителя аппаратуры. Так, например, система UNIX в настоящее время устанавливается на машинах разных фирм и изготовителей, включая и ЭВМ фирмы IBM. Вышеприведенное деление ско- 123
рее отражает инициативу в разработке и применена» первых версий этих систем. Программное обеспечение микроЭВМ можно раз- делить на две части: программные средства, облег* чающие работу системных программистов, занимающихся совершенствованием и развитием базового обеспечения, и программные средства, используемые программистами-непрофессионалами или программистами-пользователями, которых не интересует «внутренняя кухня», но которым необходимы средства, упрощающие взаимодействие с ЭВМ. Что касается средств для системных программистов, то они включают как обязательный элемент машинно-ориентированный язык ассемблера, язык высокого уровня PL/ /М, ряд изощренных отладочных средств, позволяющих «увидеть» результаты работы системных программ на уровне нулей и единиц в общих регистрах и ячейках оперативной памяти. Обычному пользователю представляется в распоряжение спектр языков высокого уровня и очень ши* рокая номенклатура различных сервисных услуг. При этом если системного программиста в большей степени интересует возможность создавать эффективные программы, то для пользователя важны прежде всего удобства, легкость освоения способов использования компьютеров, развитая и доходчивая диагностика ошибок, простота набора директив и операторов. Состав средств, включаемых в базовое программное обеспечение микроЭВМ массового производства зависит от назначения ЭВМ и области их приме* нения. Как мы уже знаем, микроЭВМ по назначению можно отнести к четырем основным классам: — встраиваемые микроЭВМ, — бытовые, или семейные, микроЭВМ, — школьные микроЭВМ, ■* — профессиональные микроЭВМ. Вполне естественно, что состав и принципы построения базового программного обеспечения отра* жают «профессиональную» принадлежность ЭВМ. 3.1.1. Программное обеспечение встраиваемых ЭВМ включает в свой состав предметно-ориентированную операционную систему и набор функциональных программ, осуществляющих автоматизацию управления технологическими объектами той систе- 124
МЫ, в которой микроЭВМ используются как главное звено управления. Операционную систему (ОС) встраиваемых мик~ роЭВМ часто называют ведущей программой, монитором. Функции ОС таких микроЭВМ отличаются друг от друга и прямо зависят от того, в работе какой технологической системы она участвует. Такие микроЭВМ, как правило, работают в режиме реального времени, точнее, осуществляют управление в реальном времени. Соответственно ОС этих ЭВМ должны обеспечить режим реального времени^ й в этом смысле у всех этих ОС есть общие черты и функции, не зависящие от конкретного назначения системы управления. . Общие функции сводятся к следующему. Операционные системы обеспечивают сбор информации, поступающей с датчиков и с линий передачи данных, характеризующей состояние управляемых объектов. С точки зрения микроЭВМ управляемые объекты можно рассматривать как нестандартные устройства ввода/вывода. Запросы от устройств поступают па линиям прерываний. Следовательно, общая функция всех управляющих ОС состоит в организации своевременной реакции на сигналы прерываний и сводится к тому, чтобы по получении определенного сигнала прерывания передать управление на соответствующую программу реакции. Программы реакций на прерывания представляют собой важную часть функционального наполнения программного обеспечения ,и различаются по смыслу выполняемой ими работы в разных системах управления. Окончательным4 результатом работы программ, вызванных по сигналам прерывания, как правило, является требование на вызов задачи обработки. Задачами обработки могут быть задачи сбора информации, поступающей с датчиков, ее первичной обработки, сложные логические задачи принятия решений, побуждающих к действию те или иные объекты управления. Характерно, что вызываемые по прерываниям задачи, точнее, исполнительные программы не равнозначны по своей важности. Они заранее распределены по приоритетам. Вторая общая черта ОС реального времени для встроенных микроЭВМ состоит в планировании последовательности запуска задач функционального наполнения системы с соблюдением приоритета. Это 125
называется приоритетным обслуживанием обрабат^ вающих программ. Как правило, все управляемые от ЭВМ системы .имеют в своем составе 'пульт (идй пульты) оператора. Третья общая функция ОС сводится к функции обслуживания операторских терминалов, т. е. организации высвечивания на них заранее заданной индикации в соответствии с состоянием системы управления. В ряде систем автоматизированного управления существенна роль человека-оператора, который может змешиваться ;в работу системы, давая ей те или иные указания. Поэтому четвертой функцией, общей для таких систем, является функция организации диалога с оператором. В каждой конкретной системе управления существует свой набор директив (или команд), которыми может пользоваться оператор. Безотносительно к смыслу подаваемых директив в :любых системах ОС должна принять сообщение, набранное оператором на пульте управления, вызвать для работы функциональную программу и передать -ей это сообщение в качестве исходных данных. Тем самым общая функция для операционных систем реального времени сводится к организации обмена сообщениями между задачами и внешними объектами. Механизмы выполнения вышеизложенных функций на микроЭВМ одного типа одинаковы. Эти механизмы составляют проблемно-независимое ядро ОС для встроенных микроЭВМ. 3.1.2. Общая характеристика программного обеспечения бытовых, или семейных, ЭВМ. Само название этого класса говорит о их назначении. Они используются главным образом (на 90%) в качестве игровых автоматов, но, кроме того, в состав :их программного обеспечения входят также некоторые обучающие программы. Поэтому такие компьютеры можно /использовать не только для проведения досуга, но и в качестве небольших информационно-поисковых систем, для подготовки 'печатного материала, несложных расчетов. Программное обеспечение бытовых компьютеров -существенно ориентировано на диалоговый режим работы с использованием клавиатуры и дисплея. Главной компонентой системных программ является -операционная система, поддерживающая режим ^взаимодействия и интерпретации запросов пользова- 126
теля на основе жестко фиксированного меню, выда- раемого на экране. Основным языком программирования является БЕЙСИК. Часто в состав программно обеспечения бытовых компьютеров входят интерпретаторы с таких примитивных языков, как: ЛОГО- Мировой парк бытовых компьютеров продолжает расти, и они выпускаются миллионными партиями в год. Следует отметить, что спрос на бытовые компьютеры с малыми техническими возможностями несмотря на то, что цены на них из года в год снижаются, уменьшился. Вероятно, это объясняется темг что широкому кругу лиц, овладевшему методами работы на бытовых компьютерах, теперь уже необходимы ЭВМ с большими техническими возможностями, но, кроме того, немаловажную роль играет изменчивость моды. 3.1.3. Программное обеспечение школьных компьютеров. Программное обеспечение следующего класса микроЭВМ, условно называемого школьными компьютер ам,и, нацелено на то, чтобы создать среду, которая позволяет применять эту технику не только для овладения основами программирования, но и для автоматизации обучения другим предметам, для образной демонстрации примеров и явлений, о которых гово- рится в школьных курсах. Программное обеспечение школьных ,и бытовых компьютеров имеет много общих черт. По существу^ «школьное» программное обеспечение является даль* нейшим развитием тех частей программного обеспечения бытовых компьютеров, которые поддерживают обучающие программы, заложенные в них. В этом разделе мы рассмотрим, с чисто внешней стороны, те возможности, которые представляют такие системы пользователю-непрофессионалу: школьнику и учителю-предметнику. Проведем этот обзор, опираясь на системы программного обеспечения в версии, рассчитанной на маломощные школьные компьютеры типа ЯМАХ А. Такой компьютер снабжен клавиатурой, цветным растровым дисплеем, печатающим устройством, флоппи-дисками, т. е. обычным комплектом для микроЭВМ такого назначения. Когда пользователь в соответствии с .инструкцией включил свой компьютер и нажал клавишу начального ввода, не забыв при этом заправить системный гибкий диск, происходит загрузка в оперативную память резидента операционной системы и на дисплее 127 ~
высвечивается приглашение к работе. Разработчики при этом стараются, чтобы приглашение выглядев достаточно эффектно. Здесь не обходится без кон сультаций с художниками. Как правило, после на#са» тия соответствующей функциональной клавиши дЛ1! набора букв, на экране высвечивается меню, предла. гающее пользователю выбрать одну из подсистем, ^ рамках которой он собирается работать. Прежде все. го в меню указывается список нескольких языков программирования. Этот набор включает обязательно БЕЙСИК, а также ФОРТРАН, ПАСКАЛЬ. Кроме списка языков меню содержит предложения к вызову игротеки, текстового редактора, системы работы с файлами и пр. Подводя курсор к нужной строке и на* жимая после этого оговоренную в инструкции клавишу, вы вызываете необходимую систему. Снова на эк- ране загорается приглашение к работе в вызванной системе и меню средств данной системы, которыми можно пользоваться. Бели вы забыли что-либо, то по специальному вашему указанию на экране высветится текст, поясняющий, как надо работать, т. е. что надо набирать на клавиатуре пульта, чтобы вызвать то или иное действие. Если вы начали работать и допустили ошибку в наборе, то система попросит повторить набор или точно укажет место ошибки, а иногда даже сама исправит вашу ошибку. Как, наверное, заметил читатель, вышеприведен' ный абзац больше похож на рекламу диалоговых возможностей компьютера. Однако при этом следует учесть, что все разработчики программного обеспечения микроЭВМ массового использования придерживаются основной концепции: система должна быть дружественной по отношению к пользователю, должна ему помогать. На реализацию этого обязательного принципа затрачено много усилий системных программистов, которые кроме всего прочего должны учитывать психологию пользователя, знать наиболее часто допускаемые им ошибки и придумывать возможные сценарии взаимодействия таким образом, чтобы пользователю было просто и интересно взаимодействовать с ЭВМ. В простых системах, к классу которых принадлежат бытовые компьютеры БК-0010, ЯМАХ А, можно работать в рамках только одного языка программирования, чаще всего в рамках языка БЕЙСИК. После нажатия клавиши начального ввода вы входите в 128
с0СИК-систему и уже из нее можете обратиться к угим подсистемам, например к игротеке. В «много- ычных» системах, т. е. в системах, позволяющих "спользовать несколько языков, в качестве отдельной иоМПоненты программного обеспечения, не связанной К конкретным языком, используется интерпретатор командного языка. С помощью командного языка можно обратиться к экранному редактору, программам управления файлами, средствам машинной графики, игротеке и другим сервисным программам. В качестве примера такой системы рассмотрим средства, предоставляемые пользователю в системе jViSX-БЕИСИК комплекса ЯМАХА, учитывая, что таких комплексов в нашей стране установлено достаточно много. Прежде всего пользователю предоставляются средства манипулирования курсором в режиме экранного редактирования, при этом используются функциональные клавиши пульта. Эти средства дают возможность путем нажатия одной клавиши переместить курсор на начало предыдущего слова, на начало текущего набираемого слова, удалить символ или группу символов относительно расположения курсора, выполнить вставку группы слов в строку по указанию курсора, при этом ранее набранный текст автоматически раздвигается. К группе действий, выполняемых по нажатию функциональных клавишей, относятся также действия по очистке всего экрана, по стиранию строки. Все это позволяет, глядя на экран, редактировать по ходу дела набираемый текст, исправлять допущенные ошибки. Следующая группа команд непосредственно связана с управлением интерпретатором языка БЕЙСИК. Эти команды представляют собой зарезервированные слова, набираемые на клавиатуре. Они позволяют запросить автоматическую нумерацию строк при наборе операторов языка БЕЙСИК с заданными шагом и начальным номером строки (оператор AUTO (начальный номер), [(шаг)]), перенумерацию строк с указанием номера строки, с которой надо начать перенумерацию (оператор RENUM (новый номер), (старый номер), (шаг)), выполнить удаление строк (оператор DELETE (начальный номер), (конечный номер)), вывести на экран указанные строки (LIST (начало) — (конец)), стереть всю программу (NEW) для того, чтобы начать набор заново. 5 Л. Н. Королев 129
В отличие от действий экранного редактирования предназначенных для манипуляции с текстом любого содержания, вышеприведенные, команды интерпретатору AUTO, RENUM, DELETE, LIST, NEW существенно рассчитаны на манипуляции с текстон БЕИСИК-программ, каждому оператору которых ставится в соответствие номер — целое число. К командам интерпретатору /следует отнести также: RUN (номер оператора) — начать выполнение программы; CONT — продолжить выполнение программы; TRON— включить режим трассировки; TROFF — выключить режим трассировки; STOP — остановить выполнение программы; END — закончить программу. § 3.2. ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА БЕЙСИК Версий языка БЕЙСИК, установленных на мик^ роЭВМ разных типов, чрезвычайно много. Эти верт сии отличаются синтаксисом, используемым алфавитом и набором встроенных функций, включенных * состав языка. В многообразии версий остается небольшая группа операторов, более или менее одинаковых для всех версий. Мы их назовем базовыми операторами языка БЕЙСИК. Данные, с которыми имеют дело базовые оператары языка БЕЙСИК, no- типу могут быть целыми, вещественными,и строковыми. На диапазон представляемых данных накладыват ются некоторые ограничения, причем в разных версиях свои. Например, целые со знаком по модулю w некоторых системах не должны превосходить 215г или —32768^целое^32767. Длина строковой переменной не должна превосходить 255 символов, вклю- чая пробелы. Простейший оператор языка — оператор присваивания: LET (переменная) = (выражение) В ряде систем ключевое слово LET можно опускать,, это не приведет к путанице. Не меньшее значение имеет оператор вывода на' экран PRINT: PRINT (список выражений) Используя этот оператор, можно работать с ЭВМ & режиме калькулятора. Результаты выполнения" one- 130
-ратора PRINT высвечиваются на экране телевизора. * Что касается выражений, то в операторах LET и PRINT рни могут быть либо арифметическими, либо сТроковыми. Над строками символов определены следующие две основные операции: — слияние строк; — извлечение из строки подстроки (исходная строка остается без изменений). Вторая операция имеет многочисленные модификации: извлечение первого символа, выборка последнего символа, выборка первых п символов, выборка п хвостовых символов, выборка символов из середины строки. Разновидностью оператора присваивания можко считать оператор ввода вида INPUT (список переменных)? С помощью этого оператора переменным, указанным в списке, последовательно друг за другом присваиваются значения, набираемые на клавиатуре пульта. Условный оператор, типичный для всех языков программирования, имеет вид IF (условие) THEN (действие 1) ELSE (действие 2) (действие 1, 2): :=(номер строки куда следует перейти)[(оператор, который следует выполнить) В качестве условия выступает логическое выражение, которое может включать отношения и знаки логических операций. В БЕИСИКе существует также простой оператор перехода GOTO, имеющий обычный смысл и, как утверждают многие, делающий язык БЕЙСИК неструктурированным. В некоторых описаниях языка оператор GOTO отсутствует или авторы советуют его не употреблять. Однако наличие условного оператора позволяет заменить GOTO на IF —THEN с заведомо истинным условием. Вообще говоря, перечисленных выше четырех операторов INPUT, LET, IF-THEN-ELSE, PRINT достаточно для составления программ любой сложности, в том числе ветвящихся и циклических, хотя это не всегда удобно. 5* 131
В язык включен оператор цикла фортрановско*,) типа вида FOR V = Ei TO Е2 STEP E8 Si) S2 } тело цикла S3j NEXT V При использовании оператора FOR следует обратить внимание на следующее обстоятельство. В некоторых реализациях БЕЙСИКа считается, что операторы те- ла цикла должны выполниться хотя бы один раз, а сохраняемое значение параметра цикла при этом окажется увеличенным на величину шага. В некото* рых реализациях этого не предполагается. В отдель* ных версиях допускается укороченный оператор IF- THEN без ELSE. Такой оператор может служить * качестве замены цикла типа WHILE. К управляющим конструкциям относятся важные операторы обращения к подпрограммам GOSUB (номер строки) и возврата из подпрограммы RETURN. В ряде версий введены переходы типа переключателей вида ON (целочисленное выражение) GOTO (список номеров строк переходов) Такого рода переходы правомочно назвать переходами по вектору. Значение целочисленного выражения определяет порядковый номер в списке номеров строк, и на этот номер осуществляется переход. В языке БЕЙСИК в качестве единственной структуры данных определены массивы и переменные с индексами. Как правило, размерность массива не должна превосходить пяти. Массивы необходимо описывать. Для этого существует оператор объявления массивов DIM вида DIM (список объявленных массивов) Элемент списка состоит из имени массива со списком максимальных значений .индексов. Индексы могут принимать целочисленные значения, начиная с единицы. Разрешается использовать массивы, каждый элемент которых представляет строку символов. При этом предполагается, что строки-элементы имеют одинаковое число букв. «Подравниваются» строки- элементы путем добавления пробелов оправа. 132
В различных версиях существует различное количество так называемых встроенных функций. Обязательно в систему встроенных функций зходят все элементарные функции, а также многие другие в зависимости от целей использования микроЭВМ. За каждой встроенной функцией зарезервированы свои наименования, например ABS, ATN, SIN, COS и др. В БЕИСИКе допускается возможность определять свои собственные функции. Для этого существует описатель DEF вида DEF FN (бь бг> ((список параметров)) = (выражение, определяющее функцию) Символы бь бг — две произвольно выбранные программистом буквы, идентифицирующие описываемую собственную функцию. Из программы обращение к так описанной функции производится указанием ее имени: FN (6162) (фактические значения параметров) Такой идентификатор функции может встречаться в арифметических или строковых выражениях. Кроме того, можно по своему разумению определить назначение функциональных клавиш. Многие пульты снабжены функциональными клавишами. Часть из них строго зарезервирована для системных нужд, остальные остаются свободными. Можно составить и ввести в память машины программу, которая будет выполняться при нажатии на определенную клавишу из числа свободных. Назначения клавиши определяется оператором КЕУ ^номер функциональной клавиши), (строка символов) Строка -символов чаще всего имеет смысл текста программы. В языке БЕЙСИК определены три оператора: DATA, READ, RESTORE, которые служат для запоминания данных и их последовательного извлечения. Оператор DATA имеет следующий формат: DATA (список значений) Список значений может включать целые, вещественные и строковые константы. С помощью этого оператора создается массив значений, которые могут быть прочитаны оператором READ и только им. Оператор READ содержит вслед за ключевым словом список имен переменных, которым по очереди 133
и присваиваются значения из массива DATA. Прй этом следует представлять себе, что по массиву зна- чений DATA продвигается указатель очередного эле* мента, всякий новый оператор READ в качестве зна* чения, присваиваемого переменной списка, выбирает значение из массива DATA по указателю и указатель потом продвигается на одну позицию вниз. Например, если в массиве DATA находятся значения .25 1.7, 77., «АВ», то последовательность операторов READ А, В READ E, С присвоит переменной А значение 0.25, В — значение 1.7, Е — значение 77 и С —строковое значение «АВ». Для того чтобы вернуться к началу DATA (это часто бывает необходимо) существует оператор RESTORE, который возвращает указатель в начало. В программе может быть несколько операторов DATA. Появление каждого нового оператора DATA дополняет массив значений, но не передвигает указатель. В операторе RESTORE указывается номер строки, содержащей необходимый оператор DATA, и указатель будет передвинут в начало списка значений, связанного именно с этим оператором. Если в программе только один оператор DATA, то указатель перемещается на его единственное начало. Существенно, что в списке DATA стоят только константы. Казалось бы, что эту группу операторов легко заменить операторами LET, INPUT, однако это не так. Все то, что занесено в память операторами DATA, сохраняется до конца решения задачи и не меняется. Это позволяет не терять исходных данных задачи. В языке БЕЙСИК существует оператор форматного вывода, похожий по своим функциям на форматный вывод в ФОРТРАНе. Однако способ указания формата вывода значительно отличается. Вывод по шаблону задается оператором PRINT USING, за которым следует описание формата и список выражений, подлежащих вычислению и выводу на экран. Формат позволяет задать форму выдачи целых чисел, чисел с плавающей запятой, количество цифр, высвечиваемых на экране и т. п. Мы здесь не приводим синтаксиса задания формата; в разных системах он различается главным образом используемыми знаками. Например, комбинация из знаков ф опреде* 134
ляет количество символов (цифр), которые выдаются йа экран. Например, формат вида ##.## указывает, что на экран выводятся две цифры целой части и дм цифры дробной части, формат вида ##.##" задает выдачу с плавающей точкой. Если попытаться определить место языка БЕЙСИК среди других языков программирования, то прежде всего следует отметить, что он прямо рассчитан на диалоговое взаимодействие с 'пользователем, имеющим в распоряжении экран для визуализации результатов, редактирования программ в ходе набора и пошагового их выполнения. Известные нам широко применяемые языки АЛГОЛ, ПАСКАЛЬ и др. — «пакетные» языки, т. е. языки, рассчитанные на выполнение программ в пакетном режиме. Несмотря на то что с использованием терминального доступа формирование программ и задач на этих языках производится с использованием дисплеев и той же клавиатуры, их изначальная ориентация на пакетную обработку остается в силе. Правда, сейчас появляются диалоговые версии этих языков, однако «приспосабливание» противоречит таким концепциям, как блочность, модульность, возможность раздельной трансляции с последующим редактированием связей. Язык БЕЙСИК, созданный как самый простой язык для начинающих программистов, непрерывно развивается, расширяются его возможности, главным образом за счет появления новых встроенных функций и директив управления выполнением программ, 3.2.1. Средства рисования на экране в языке БЕЙСИК. Важным направлением расширения возможностей явилось добавление в БЕЙСИК (точнее в систему программирования на основе этого языка) средств, позволяющих рисовать на дисплее. Это стало возможным и необходимым в связи с появлением в составе микроЭВМ растровых цветных графических дисплеев, позволяющих их использовать не только для визуализации алфавитно-цифровой информации, но и для выдачи графиков, рисунков, мультипликаций. Программное обеспечение, упрощающее создание рисунков и мультипликаций на графических дисплеях в настоящее время бурно развивается и является важным элементом целого научно-технического направления использования компьютеров, которое получило название машинной графики. Это направле- 135
ние знаменует собой новый уровень взаимодействия человека с машиной. Здесь к месту вспомнить из- вестную поговорку: «Лучше один раз увидеть, чем сто раз услышать». В применении к компьютерам, ис- лтользуемым как инструмент обучения, возможность создавать на дисплее графики, таблицы, картинки позволяет резко повысить эффективность обучения -заметно его интенсифицировать. Сначала йы расскажем о самых простых средствах рисования на экране дисплея. Графический экран следует представлять как строки и столбцы точек с целочисленными координатами, каждую из которых можно определенными командами заставить светиться. Реальные экраны обычных цветных мониторов бытовых и школьных компьютеров содержат 250—500 точек по горизонтали и столько же по вертикали. В цветных дисплеях число горизонтальных строк обычно меньше. Так, например, в мониторе ЭВМ «Искра-226» на экране может быть расположено 256 строк и 512 столбцов, т.'е. 217« 128 тысяч дискретных позиций для высвечивания. В мониторе ЭВМ ЯМАХА—192 строки и 256 столбцов. Тем самым каждую точку экрана можно пометить целочисленными координатами — ее номерами в строке и в столбце. Начало координат помещается либо в верхнем левом углу, либо в левом нижнем углу. Ось X направлена по горизонтали, ось Y—по вертикали. В част* ности, в ЭВМ типа ЯМАХА начало координат находится в верхнем левом углу экрана. Ось X направлена вправо, ось Y—вниз. Во многих графических операторах требуется указывать координаты точек и учитывать принятое расположение осей, чтобы рисунки были правильно ориентированы. Экран может быть использован в текстовом и в графическом режимах, при этом допускается наложение текста на трафику. Специальной командой SCREEN задается режим использования экрана. Для того чтобы начать рисовать на экране какую-либо фигуру или линию, необходимо задать координаты некоторой начальной точки экрана. Для этого существует специальная команда LOCATE, в параметрах которой указывают эти начальные координаты. Рисовать можно точку за точкой, указывая приращения координат по оси X и Y относительно предыдущей точки. 136
Оператор отрисовки по приращениям во многих йСтемах имеет вид PLOT <ДХ>, <AY>, <Р> g некоторых системах вместо оператора PLOT используется разновидность этого оператора DPAW с соответствующими параметрами. Более подробно об эт0м операторе будет сказано ниже. В операторе же PLOT параметры АХ и AY — дискретные приращения по осям X и Y соответственно. Следует отметить, что з качестве АХ и AY могут выступать арифметические целочисленные выражения, содержащие идентификаторы переменных и константы; Р — признаки, характеризующие цвет выставляемой точки либо говорящие о том, что данную новую точку не следует высвечивать. Очевидно, что, используя только команду PLOT, можно высветить на экране любую желаемую мозаичную картину. Существует понятие графического курсора, движением которого можно управлять командой PLOT. Общий вид команды PLOT таков: PLOT (список элементов движения) Элемент списка движения состоит из арифметических выражений для АХ, для AY и признака Р. Оператор PLOT задает путь графического курсора от точки с начальными (Хо, Y0) координатами до какой-то другой точки. С помощью оператора PLOT составляются подпрограммы рисования определенных фигур или фрагментов фигур, а для рисования более крупной картинки^ содержащей «запрограммирован-, ные» фрагменты, можно использовать эти подпрограммы. Это позволяет с помощью оператора PLOT создавать графические объекты, не привязанные к определенному месту экрана. Такой графический объект задается подпрограммой, при обращении к которой можно в качестве фактических параметров задать любую начальную точку на экране и привязать этот графический объект к данной точке. Если позаботиться о том, чтобы в списке элементов движения операторов в подпрограмме, задающей графический объект, все АХ и AY были бы одинаковы, то, сделав их параметрами подпрограммы, можно увеличивать или уменьшать размер объекта на экране монитора. Приведем пример подпрограммы с параметрами: б Л. Н. Королев 137
подпрограмма: 100 PLOT (X, Y, К), (Х + 2, Y+2, К), /у Y, С) >> 110 RETURN ! обращения: 30 X = 2; REM задание параметров 40 Y=l 50 GOSUB 100 45 REM задание других параметров ,| 60 X = 4 70 Y=2 80 GOSUB 100 Подпрограмма содержит всего один оператор PLOT и оператор возврата RETURN. В качестве фор. мальных параметров подпрограммы используются переменные X и Y. Здесь, задав переменным конкретные значения, например Х=2, Y=l, мы, обратившись к подпрограмме, выполним оператор следующего» вида: PLOT (2, 1, К), (4,3, К), (2,1, С) Символ К пусть означает красный цвет, символ С — синий. Конкретизированный оператор PLOT в этоы; случае выполнит отрисовку ломаной линии с координатами (2, 1), (6, 4), (8, 5). Если задать в качестве значений параметров X и Y соответственно числа 4 и: 2, то подпрограмма нарисует ломаную линию с координатами (4, 2), (8, 6), (12, 8). Здесь мы предполагаем, что начало отсчета приращений координат находится в точке Х = 0, Y = 0. Отметим, что поточечное рисование с помощыо оператора PLOT требует больших трудозатрат — по* I стилю оно похоже на программирование в машинных кодах. В соответствий с принципом «дружественности» во многих системах введены специальные команды для рисования прямых линий, окружностей я= средства, позволяющие компановать изображение и& , заранее заготовленных графических объектов. 138
Если обратиться к графическим командам систе- -ы MSX-БЕЙСИК для ЭВМ ЯМАХА, то состав предоставляемых средств графического взаимодействия ^вольно разнообразен. Предусмотрены специальные педства, позволяющие задавать режим использования экрана при высвечивании текстовой информации. \1оЖНО, например, задать удвоенный по величине формат буквенно-цифровой информации. Разумеется, ^ожно задать цветовой фон экрана, цвет изображения букв, цвет бордюра. Это делается командой COLOR. Специальная команда предусмотрена для рисования окружности или ее части. В команде CIRCLE задается центр окружности, радиус, угол сектора. Командой LINE можно воспользоваться для рисования линий и прямоугольников. Предусмотрена специальная команда SCREEN для закрашивания фигур, ограниченных контуром определенного цвета. Важной ^ командой является команда DRAW, в качестве параметров которой выступают имя графического объекта (или строка, непосредственно выражающая графический объект) и указание, что с этим графическим объектом следует сделать. Перечислим действия, которые можно производить -с заданным графическим объектом (ГО): — передвинуть ГО в заданную абсолютными ко- . ординатами точку экрана; — передвинуть ГО в точку с заданными относительными координатами; — задать движение объекта в одном из восьми заданных направлений по экрану; — повернуть изображение (поворот системы координат) ; — масштабировать изображение. С помощью команды DRAW и других вышеперечисленных можно создавать мультипликационные фильмы и различного рода компьютерные игры. Представляют интерес методы формирования изображений с помощью так называемых спрайтов. Дословный перевод английского термина SPRITE — светлячок. Спрайт можно рассматривать как графический, объект, представляющий мозаичный прямоугольник, например, размером 8X8 (64 точки). Мозаикой в одном спрайте можно изобразить любой символ или фигуру. Общее число различных изображений, кото- 6* 139
Рис. 44 рые можно разместить в одном спрайте 8X8, очеа^ но, равно 264. вй* Теперь представим себе, что мы запаслись б*,* лиотекой некоторого числа спраитов и имеем возмо ность на плоскости экрана дисплея собирать карти** ки уже не из отдельных точГ с помощью оператора PLOT а из прямоугольников размА* ром 8X8 точек, т. е. пользе ваться «крупными мазками> Такая возможность конструй%* рования из более крупных блоков, хотя и является некоторым ограничением, однако - пред, ставляет и ряд удобств. На^ пример, если потребовались литеры греческого алфавита которых нет в стандартном алфавите, поставляемом с ЭВМ, можно заготовить спрайты, соответствующие графике этих букв и в дальнейшем ими пользоваться для формирования текста. Кодировка спрайта более компактна по сравнению с кодировкой в виде -списка пар приращений в операторах PLOT. Точечная картинка буквы у представлена на рис. 44. С помощью оператора PLOT пришлось бы закодировать эту букву следующим образом: PLOT (1,0), (5,0), (1,2), (1,4), (2,3), (3,2), (3,4) (4,1), (4,5), (5.1), (5.5), (6.2), (6.4), (7.3); Мы здесь опустили признак Р, считая, что все точки высвечиваются каким-то одним цветом. В списке PLOT 14 элементов, в каждом элементе по две цифры, т. е. двадцать восемь цифр. На кодировку одной цифры надо не менее трех двоичных разрядов, следовательно, на содержательную часть списка следует употребить 84 двоичных разряда. Если предположить, что в библиотеке спраитов у нас имеется полный набор всех возможных конфигураций в спрайте, то для их идентификации двоичным кодом понадобится 64 двоичных разряда. Реально для рисования нет надобности использовать весь мыслимый набор спраитов, и их кодировка оказывается еще более компактной. Во многих системах размер спрайта выбирается 2X4. Для их коди- 140
р0вки необходим один байт, следовательно, каждому {якому спрайту можно поставить в соответствие определенный код символа в 8-битовой кодировке Гоа- 1йческие объекты можно формировать из этих'более Мелких элементов, кодируя строки и столбцы изображения последовательностью букв и символов клавиатуры. Техника спраитов упрощает создание многоплановых картинок. Вспомним технологию создания мультипликационных фильмов. Сначала рисуется картина заднего плана, изображающая место действия, например лес, поле и речку. Затем на прозрачной пленке рисуется фигура, которая должна двигаться на фоне этого ландшафта. Точнее, рисуется серия фигур одного и того же объекта в разных положениях. Прозрачные пленки с нарисованными на них непрозрачными красками фигурами последовательно накладываются на картину фона, и тем самым получается серия кадров, представляющая движение фигуры по полю или вдоль речки. Короче говоря, происходит наложение картинки переднего плана на картинку заднего плана. Число планов может быть и больше двух. При формировании сложных картинок из спраитов каждому из них приписывается еще и номер плоскости, к которой он принадлежит. Это позволяет по тем же принципам накладывать одни спрайтовые изображения на другие. При этом в результирующей картинке спрайты плоскостей переднего плана «затмевают» спрайты, относящиеся к плоскостям задних планов. Стандартная фигура спрайта — прямоугольник— резко облегчает решение задачи получения многоплановых кадров для мультипликаций на растровом экране дисплея. Этим достигается увеличение скорости смены кадров на экране и, следовательно, открывается возможность имитировать «плавные» движения. Среди команд машинной графики в ряде систем существуют команды работы со спрайтами. В частности, в ЭВМ ЯМАХА в системе MSX-1 существует команда PUT SPRITE —поместить спрайт. В параметрах этой команды указываются: — номер плоскости спрайта (до 32); — координаты X и Y левого верхнего угла спрайта; — цвета спрайта; — номер спрайта (его конфигурация). 141
Использование техники спрайтов, в особенности когда они достаточно крупны (8X8, 16x16), иногда приводит к некоторым дефектам в изображении. Гра. фический объект, представленный спрайтами, — обо. зательно мозаичная фигура, ограниченная вертикаль! ными и горизонтальными линиями. При наложении таких фигур друг на друга могут появиться «краевые эффекты» высвечивания лишних частей. Во многих мини-ЭВМ в систему, основанную ца языке БЕЙСИК, добавляются команды, рассчитанные на системного программиста. К ним относятся сред, ства ввода программ на машинном языке, записи байтов в память по указанному адресу, команды позволяющие обрабатывать прерывания от функвдо* нальных клавиш и ряд других. В этом разделе мы рассмотрели основные возможности, предоставляемые БЕИСИК-системой и ее расширениями с чисто внешней стороны, имея в виду ответ на вопрос, что можно делать, пользуясь сред- ствами программного обеспечения школьного персонального компьютера. Существенно отметить следующее. Предприятия- изготовители поставляют школьные персональные ЭВМ целым комплектом, представляющим собой оборудование для класса компьютерного обучения. В состав такого класса входят 8 и более рабочих мест учеников и рабочее место преподавателя. Рабочее место ученика снабжено персональным компьютером, включающим цветной или черно-белый дисплей, клавиатуру, кассетный магнитофон или дисковод для гибких дисков. Рабочее место учителя снабжено более совершенным периферийным оборудованием: дисковой памятью значительно большего объема, чем у ученических ПЭВМ, графическим устройством выдачи на печать текстовой и графической информации. Все ученические компьютеры связаны с рабочим местом преподавателя линиями связи, и, по существу, компьютерный класс представляет собой локальную сеть, в которой учительский компьютер выполняет роль главного вычислителя. Программное обеспечение учительского компьютера более развито по сравнению с таковым у ученических ПЭВМ. Средства программного обеспечения рабочего места учителя позволяют передавать на любой ученический терминал текстовое сообщение, дуб- 142
г р0Вать на экранах учеников то, что высвечивается а экране учителя. Учитель имеет возможность в ?воЮ очередь высветить на своем экране то, что набрано на экране любого ученика, считать с ученического магнитофона или диска любую интересующую рГо информацию и, если необходимо, вывести ее на печать. Командный язык, которым пользуется учитель, содержит на этот счет все необходимые дирек- тйВы. Их интерпретация и выполнение осуществляет- сЯ средствами программного обеспечения — монитором команд учителя. Соответствующие программные модули включены в состав только учительского терминала и недоступны для выполнения с терминалов учеников. По своему составу и развитости программное обеспечение рабочего места учителя приближается к составу программного обеспечения хороших профессиональных персональных ЭВМ (ППЭВМ). § 3.3. СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРОФЕССИОНАЛЬНЫХ МИКРОЭВМ Профессиональные микроЭВМ предназначены для комплектации индивидуальных рабочих мест исследователей, инженеров-конструкторов, проектировщиков, управленческого персонала, другими словами — для автоматизации научных исследований, проектирования и организационно-управленческой деятельности. Собственно, почти все типы и классы ЭВМ, большие и малые, служат вышеперечисленным целям. Отличие здесь можно усмотреть только в тенденции глубокой персонализации вычислительных услуг. Если большие и средние стационарные ЭВМ служили для создания центров коллективного пользования и делили свои ресурсы между большими контингентами специалистов с использованием режима мультипрограммирования или режима разделения времени, то с использованием ПГГЭВМ очень значительная часть вычислительных ресурсов передается в монопольное владение отдельному лицу. Это, во-первых, позволяет снять значительную долю накладных расходов, которые идут на мультиплексное обслуживание групп пользователей большими \и средними ЭВМ и, во-вторых, обеспечивает более продуктивное использование ^человеческого» фактора. Исследователю, имеющему $ своем распоряжении микроЭВМ с достаточно раз- 143
витыми функциональными возможностями, нет необ* I ходимости терять свое время в ожидании сеансов I связи с ЭВМ вычислительных центров и быть завися- I мым от задержек, возникающих в сеансах связи в I периоды пиковых нагрузок в дневное рабочее время. I Вышеприведенные рассуждения верны, конечно, I если профессиональных персональных ЭВМ установ* I лено в той или иной организации достаточное коли- I чество. I Современные профессиональные микроЭВМ по I своей производительности, объемам доступной поль- I зователю оперативной и внешней памяти приближа- I ются к стационарным ЭВМ третьего поколения, а не- I которые типы превосходят их по главным парамет- I рам. С функциональной точки зрения тем не менее I остается такое немаловажное различие, как основная I разрядность. У современных больших и средних ЭВМ I общего назначения основная разрядность машинного I слова данных, с которыми производятся арифметиче- I ские и логические действия, равна 64 битам или пре- I вышает это значение. У большинства типов профес- I сиональных ЭВМ эта разрядность в настоящее время I составляет 16 двоичных разрядов. Однако уже появ- I ляются в массовом производстве микроЭВМ с раз* I рядностью 32, которая вполне достаточна для прове- I дения ряда сложных научных и инженерных расчетов. I Что же касается программного обеспечения про- I фессиональных микроЭВМ, то оно мало чем отли- 1 чается от такового для стационарных ЭВМ. I В предыдущих разделах, посвященных программ- I ному обеспечению бытовые и школьных микроЭВМ,, I построенных на основе микропроцессорной техники* I мы вели разговор о системе программирования, ос- I нованной на языке БЕЙСИК и его расширениях, ка- I саясь внешней стороны средств, предоставляемых I обычному пользователю. Далее мы расскажем о I принципах внутренней организации программного I обеспечения микроЭВМ профессионального назначения. Основу системного программного обеспечения любой ЭВМ составляют операционные системы (ОС). Комплекс программ, называемых операционной системой, предназначен для управления ходом процесса обработки данных, внешними устройствами^ I взаимодействием пользователя с ЭВМ. Кроме того, в I состав операционной системы входят программы* I обеспечивающие хранение и поиск необходимой ин- I 144
формации в базе данных системы, т. е. программы системы управления данными. Операционная система1 тем самым представляет собой комплекс управляющих программ. Эти программы работают в режиме реального времени, т. е. основаны на учете событий,, которые происходят на внешних устройствах и, вообще, во внешней по отношению к центральной часта ЭВМ среде, включая сюда и пользователя — человека. Все базовое математическое обеспечение можно представить как некоторую иерархическую структуру (рис. 45), на нижнем базовом уровне которой, наибо- 6 Программы пользователей', команды пользователей 5 Монитор команд / \ 4 Служебные обрабатывающие программы / \ 3 Управление данными / \ 2 Планировщик ресурсов / \ / Супервизор у/ >w 0 Аппаратура / Рис. 45 лее близком к аппаратуре, расположены программы управления физическим обменом с внешними устройствами, программы реакции на прерывания. Этот комплекс программы часто называют супервизором системы, резидентной частью операционной системы.. Следующий слой занимается распределением физических ресурсов, главным образом распределением физической оперативной памяти между задачей пользователя и служебными программами. Далее следует уровень, обеспечивающий работу с базой данных системы. Он имеет дело главным образом с организацией информации на внешней памяти, гибких и твердых дисках. Затем следует уровень интерпретатора команд, направленных в адрес операционной системы. Этот уровень называют также мониторнои частью операционной системы или просто монитором. Далее идет уровень служебных обрабатывающих про- 14S
грамм — трансляторов, редакторов связей, текстовых редакторов, отладочных программ, библиотечных процедур общего назначения. Наконец, следует уровень программ пользователя. Иногда можно слышать, что операционные системы микроЭВМ отличаются от ОС больших ЭВМ тем, что в микроЭВМ нет необходимости в организации мультипрограммирования, так как они работают в однопользовательском режиме, а большие ЭВМ обслуживают одновременно нескольких пользователей. Подобное утверждение и верно и неверно. Верно в том смысле, что в микроЭВМ находится задача одного пользователя. Неверно, так как наряду с ней в памяти находятся программы операционной системы, причем несколько 'Программ одновременно. Кроме того, в профессиональных микроЭВМ пользователю предоставляется ёозможность организовывать свой собственный мультизадачный режим, т. е. режим одновременной работы пользователя с несколькими своими задачами, с несколькими окнами на дисплее, связанными каждое со своей задачей. Кроме того, в настоящее время микроЭВМ связываются в сети, что означает одновременную работу каждой микроЭВМ сети с несколькими пользователями. Вполне поэтому можно утверждать, что все быстрее исчезает различие в общей организации операционных систем больших и малых ЭВМ. Каждый уровень описанной выше иерархии характеризуется своим интерфейсом, т. е. правилами обращения к нему со стороны других уровней. Общение пользователя с системой основано на применении языков высокого уровня и использовании командного языка общения с системой. Синтаксис командного языка различен в разных.операционных системах, семантика большинства команд одинакова. Источником информации для монитора команд являются программы пользователей. Монитор дешифрирует команду пользователя, преобразуя ее в язык запросов к другим уровням иерархии: планировщику ресурсов, управлению данными, супервизору. Так, если выдана команда RUN, то монитор должен вызвать интерпретатор языка БЕЙСИК и передать ему номер строки, с которой следует начать выполнение фрагмента программы. Если выдана команда TRON, то следует передать управление программе трассировки, которая в свою очередь должна изменить ре- 146
жим работы микропроцессора, выставив в разряд Т флагового регистра единицу. Команды средств машинной графики также интерпретируются монитором, который, преобразуя их соответствующим образом, передает видиопроцессору. Уровень управления данными получает команды из программ пользователя и от монитора команд. В функции этого уровня входит интерпретация (выполнение) всех команд, связанных с вызовом файлов, поиском в них затребованных записей, формированием каталогов и т. п. Результатом работы этого уровня является выдача директив планировщику ресурсов, выделяющему в оперативной памяти соответствующие буферы для приема—передачи и выдачи информации супервизору для организации физических обменов с внешними запоминающими устройствами. Функции супервизора, как уже отмечалось, состоят в приеме «заказов» на работу от более высоких уровней, обращении к соответствующим драйверам, реакции на прерывания, поступающие от внешних устройств. При этом существенно отметить то, что при передаче всякого рода сообщений, команд и данных -с одного уровня на другой следует запомнить, кому передать полученную, например, с внешних запоминающих устройств информацию., Для того чтобы не потерять адрес «заказчика», используется система переключения с задачи на задачу с запоминанием возвратов в стеке. Это позволяет точно фиксировать пройденный по иерархии путь и, следовательно, дает возможность вернуться в исходную точку. Переключением с задачи на задачу с запоминанием информации, необходимой для возврата, также занимается супервизор. Эта часть супервизора называется в больших операционных системах планировщиком задач, для микроЭВМ она называется «управление мультизадачным режимом». Теперь мы перейдем к обзору характеристик некоторых операционных систем, используемых на персональных ЭВМ в настоящее время. К числу таких систем относятся MSX—DOS для профессиональных компьютеров фирмы IBM, семейство СР/М для микроЭВМ линии Intel, UNIX, ДЕМОС и ИНМОС для семейства PDP-11, СМ 3/4, MSX-1,-2 для ЭВМ типа ЯМАХА и ряд других систем. Мы дадим общее представление только о двух из них: о СР/М как одной из первых развитых ОС и о 147
UNIX, которая завоевывает все более и более внушительные позиции. В нашей стране нашли широкое применение операционные системы ОС МикроДОС, семейство ОС ДВК и др. Некоторые из перечисленных ОС обеспечивают программную преемственность с зарубежными аналогами, адаптированными и развитыми версиями которых они являются. § 3.4. СТРУКТУРА И ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ ОПЕРАЦИОННОЙ СИСТЕМЫ СР/М и ОС МикроДОС Первоначально СР/М разрабатывались как однозадачная операционная система для управления прохождением задачи одного пользователя, имеющего в распоряжении клавиатуру для набора программ,, данных и директив диалогового взаимодействия с ЭВМ, т. е. была рассчитана на персональное использование мини-ЭВМ. Затем система подверглась значительным модификациям, и в настоящее время существуют версии СР/М, поддерживающие мультизадачный режим и работу пользователя в рамках сети. Эти версии соответственно получили названия МР/М и CP/NET. Основу систем составляют три подсистемы: — процессор команд консоли (клавиатуры) (Con- sol Command Processor — ССР); — базовая дисковая операционная система (Basic Disc Operating System — BDOS); — базовая система ввода/вывода (Basic I/O System—BIOS). Подсистемы BIOS и BDOS являются ядром, содержащим основную часть машинно-зависимых программ. Процессор команд обеспечивает дешифрацию и интерпретацию команд, вводимых пользователем с клавиатуры. Команды пользователя можно условна разделить на несколько групп. К первой группе относятся команды управления трансляцией -и запуска программ. В параметрах этих команд указывается транслятор и входные данные для трансляции. Как правило, СР/М работает с языками ассемблера, диалоговым языком БЕЙСИК, языком ПАСКАЛЬ и какой-либо версией ФОРТРАНа. По команде, набираемой на клавиатуре пульта, в работу вызывается та или иная система программирования, содержащая транслятор и редактор ,связей,. 148
объединяющий воедино модули программы пользователя. Вторую группу составляют команды динамической .отладки. С помощью этих команд можно получить трассу программы — путь прохождения вычислений по ее различным ветвям, организовать остановы з заданных точках программы, заставить систему высвечивать на экране значения некоторых переменных, интересующих пользователя. К этой же группе команд следует отнести и команды выдачи состояния памяти на некоторый момент процесса вычислений. При интерпретации команд отладки используется режим пошаговой работы. Этот режим поддерживается логическими схемами микропроцессора. С этой делью в аппаратуру ЭВМ вводится специальный режим пошагового выполнения команд. В аппаратуре существует специальный разряд Т, установка которого в единичное состояние включает этот режим. Установка производится специальной командой. Затем работа протекает следующим образом: после выполнения очередной команды программы происходит прерывание и передача управления на специальную подпрограмму операционной системы. Эта подпрограмма сразу же снимает установленную в' разряде Т единицу, чтобы далее не прерываться после каждой команды, указанной подпрограммы. Далее подпрограмма работает уже без всяких прерываний и производит логический анализ только что выполненной команды трассируемой программы, высвечивая на дисплее терминала исходные данные, результат и другую важную для отладки исследуемой программы информацию. После завершения работы этой подпрограммы производится возврат к прерванной трассируемой программе, снова восстанавливается единица в управляющем разряде Т и процесс продолжается. Иными словами, осуществляется процедура, которую можно описать так: выполняется очередная команда трассируемой программы, выводятся результаты ее работы, осуществляется переход к выполнению следующей команды трассируемой программы. В таком отладочном режиме по желанию можно получить и другую информацию, например высветить на экране значения регистров общего назначения. Режим пошаговой «прокрутки» программ весьма полезен при семантической отладке сложных элементов программного обеспечения, таких как операцион- 149
ные системы, трансляторы, программы управление работой внешних устройств. Следующая группа пультовых команд — команды: редактирования. Система редактирования в рамках СР/М весьма развита и включает в свой состав весь необходимый спектр директив редактирования: стирание, замену, контекстную замену, поиск необходимого места для вставок. Весьма развита система манипулирования файлами, их созданием, уничтожением,, сжатием, сохранением, переименованием и т. д. В манипулировании файлами участвует подсистема. BDOS. Следует выделить пультовую команду, которая заставляет систему воспринимать команды, которые обычно набираются с консоли, из текста, находящегося в массиве памяти, или из файла. Это открывает возможность программировать и каталогизировать часто употребляемые последовательности' команд, избавляя пользователя от их набора на клавиатуре пульта терминала. Представляет интерес организация работы с внешними устройствами, которой ведает подсистема BIOS.. В СР/М определены понятия логического устройства; ввода/вывода и физического устройства ввода/вывода: Программисту даются средства при написании программ для обращения к логическим устройствам. К устройству ввода обращаются командой ВВЕСТИ^, к устройству печати — командой ОТПЕЧАТАТЬ, & дисплею — командой ВЫСВЕТИТЬ. Причем в командах обращения указывается параметр, характеризующий способ ввода/вывода числовых данных (посимвольный или построчный). Такой подход позволяет программисту абстрагироваться от конкретного физического устройства, не думать о том, как оно функционирует, какой фирмой изготовлено, какова ширина каретки печатающей машинки. Отображение логических устройств на физические осуществляет операционная система, а именно ее подсистема BIOS. Введение уровня логических устройств ввода/вывода, или, как еще говорят, введение понятия и правил работы с виртуальными устройствами, возникло не только из абстрактных соображений об удобствах программирования, но имеет и более4 прозаическую причину. С появлением микроЭВМ многие фирм** стали выпускать периферийное оборудование дл* комплектации этих машин: малогабаритные печатаю^ щие устройства, дисплеи разных типов, устройств 150
связи с телефонными каналами, планшетки для ввода графической информации, графопостроителе и т. п. Переделывать каждый раз отлаженные программы программного обеспечения микроЭВМ в связи с подключением новых, более совершенных периферийных устройств нерационально и накладно. К тому же в продажу микроЭВМ поступают в различной комплектации стоимостью от нескольких сотен до нескольких тысяч рублей в зависимости от совершенства и стоимости периферии. Подсчитано, что в настоящее время число различных комплектаций для микроЭВМ, основанных на однотипном микропроцессоре, достигает нескольких сотен. В подсистеме BIOS существует специальная на- строичная таблица, в которой задаются параметры^ конкретных устройств ввода/вывода, подключенных к данной установке. Настройка этих параметров влечет за собой генерацию соответствующих программ-драйверов, управляющих работой физических устройств. В СР/М отображение логических устройств на физические производится специальными программа- ми, которые дешифрируют директивы обращения к: виртуальным устройствам и обращаются к подпрограммам, управляющим конкретными устройствами. В некоторых случаях, если того пожелает программист, вместо вывода на реальные физические устройства массивы данных, предназначенные для вывода, переписываются на диск. Это позволяет результаты, полученные на одной мини-ЭВМ, передать в качестве исходной информации на другую или по каналам связи заинтересованному абоненту. Соответственно директива ВВЕСТИ реализует ввод информации либо с клавиатуры, либо с экрана дисплея,, либо с гибкого магнитного диска (флоппи-диска) ил» производит прием информации по каналам связи. Очень большое внимание при разработке СР/М. было уделено организации обмена с внешними запоминающими устройствами. В начальный период персональные микроЭВМ комплектовались кассетами от бытовых магнитофонов, которые и использовались & качестве внешнего запоминающего устройства. Магнитофонные кассеты обеспечивали только последовательный метод доступа, операции обмена отнимали много времени. При интенсивном использовании маг- нитная лента не обеспечивала должной надежности — быстро стиралась. В середине 70-х годов появились 151
гибкие магнитные диски, а затем (в конце 70-х годов)— малогабаритные «твердые», или винчестерские, диски. Объемы памяти флоппи-дисков в зависимости от типа в настоящее время достигают 150— 500К байтов. Объемы винчестерских мини-дисков достигают 10—80М. байтов. Это уже вполне солидные по объему устройства, позволяющие использовать лрямой и индексно-последовательный методы доступа. В настоящее время именно на дисковое запоминающее устройство ориентирована файловая система в СР/М. С точки зрения программиста, файл состоит из записей одинаковой длины по 128 байтов. Записи могут быть скомпанованы в блок, содержащий от 0 до 128 записей. Тем самым максимальная длина блока в байтах может достигать 16К байтов. Файл в свою очередь может содержать до 256К байтов, разделенных на блоки и записи. Каждый файл предваряется идентифицирующей его записью, которая содержит имя файла и информацию о его расположении на дисках, дате заведения и статусе разрешения на чтение или на чтение и запись. Для экономии внешней памяти широко используется списочная организация. Поскольку пользователю разрешается динамически накапливать записи, то для этого в каталоге диска имеется начало списка свободных мест для записей. Каталог файлов с информацией об их расположении, списки свободных и занятых мест находятся в служебной зоне диска. В оперативной памяти микроЭВМ для ускорения работы по обмену информацией с дисками выделяется буфер. При начале работы с каким-либо файлом з этот буфер со служебной зоны диска переносится оглавление файла и информация о списке свободных и занятых мест на диске, а также выделяется место для буферизации нескольких записей. Это позволяет исключить многократные обращения к диску за считыванием информации. Жесткий формат физических записей, принятый в СР/М, упрощает и ускоряет работу с внешними запоминающими устройствами. С усовершенствованием технических характеристик микроЭВМ — увеличением объема оперативной памяти (1—16М байтов), объема дисковой памяти (нескольких десятков М байтов), скорости работы и арифметических возможностей микроЭВМ, превративших их в серьезных со- 152
г яерников стационарных ЭВМ средней производительности,—открылась возможность с помощью такого рода машин решать достаточно сложные математические и логические задачи. В свою очередь это потребовало совершенствования операционных систем и расширения их функциональных возможностей. Для профессиональных микроЭВМ с расширенны- ми возможностями разработана операционная систе- ма МР/М, поддерживающая мультизадачный режим, аналогичный мультизадачному режиму в операцион- ных системах универсальных машин общего назначения. Сейчас микроЭВМ все чаще используются в качестве интеллектуальных терминалов в сетях, построенных на их основе. Разработана версия операционной системы, получившая название CP/NET, поддерживающая режим сетевого взаимодействия. Командный язык сетевого взаимодействия, доступный для пользователя, включает в свой состав целый ряд директив, которые представляют следующие возможности: — передачу сообщений (писем) с любого терминала на любой другой; — обмен файлами между абонентами сети; — вход в сеть; — выход из сети; — абонент, который определен как главный, или хозяин сети, может контролировать доступ r сети, исключать пользователей сети, регистрировать новых пользователей, посылать циркулярные письма всем абонентам сети; — каждый абонент может узнать, кто в данный момент работает за терминалами, или отправить сообщение на имя одного из пользователей сети —сеть поддерживает почтовую переписку. Таковы возможности, предоставляемые пользователям микроЭВМ. Большинство этих возможностей реализуется операционной системой, которая и определяет взаимоотношения человека с вычислительной машиной. § 3.5. ОПЕРАЦИОННАЯ СИСТЕМА UNIX Операционная система UNIX начала широко распространяться в начале 70-х годов. Она была разработана первоначально для машин фирмы DEC, но 7 Л. Н. Королев 153
благодаря своим хорошо продуманным возможностям очень быстро нашла применение для других типо& микро- и мини-ЭВМ. Ее распространению содействск вали, во-первых, заранее предусмотренная при про. ектировании простота переноса на другие ЭВМ (мо- бильность), во-вторых, комплексный учет нужд пользователей, стремление упростить общение пользователя с системой и предоставить ему развитые средства управления прохождением задач, организации и хранения данных, редактирования и контроля за состоя* нием системы. Существенно, что система прямо рас* считана на диалоговое общение с использованием терминалов. Современный терминальный доступ предполагает наличие в составе терминала дисплея и клавиатуры, практически исключающих необходимость в вводе ин* формации с помощью перфокарт или перфолент, С точки зрения пользователя, система UNIX предоставляет широкий набор системных команд, задавая которые он может потребовать от ЭВМ выполнения многих полезных для него процедур и действий. Система поддерживает целый спектр языков программирования, таких как ФОРТРАН-4, ФОРТРАН-77, ПАСКАЛЬ, БЕЙСИК. Набор системных команд включает в себя около 100 директив. Среди них особенно большую группу составляют директивы манипулирования файлами -я директивы редактирования. Меньшую по числу, но не по важности часть директив составляют группа, задающая обмен сообщениями (почтовая служба), группа директив управления процессом прохождения задач и группа директив, предназначенная для так называемого администратора системы, позволяющая следить за работой пользователей в рамках системы и за работой системы в целом. Для микро- и мини- ЭВМ, находящихся в персональном владении, ис- пользуются не все директивы. В частности, это касается директив, обеспечивающих многопользовательский режим. Следует заметить, что в своем полном объеме система UNIX предназначена для использования также и на больших ЭВМ в режимах многопультового доступа и может быть приспособлена для режима сетевого взаимодействия. Мы вкратце поста* раемся здесь рассказать о командном языке систем? UNIX, т. е. о предоставляемых пользователю сред* ствах взаимодействия с операционной системой. 154
Прежде всего о командах, позволяющих манипулировать с файлами. Программы, данные, тексты документов хранятся в файловой системе ОС UNIX Я реально могут быть расположены на гибких и постоянных дисках. Файлы могут создаваться пользователем, но есть файлы, содержащие информацию, всегда присутствующую в системе. С точки зрения операционной системы содержимое файла — некоторый набор символьных строк. Система не вникает в его смысл. Этим обеспечивается единообразие при манипулировании, редактировании и других операций с отдельными файлами. В UNIX принята иерархическая файловая структура. Иногда файловую систему определяют как поименованные каталогизированные наборы данных. Самый верхний уровень иерархии возглавляется так называемым корневым каталогом системы. В корневом каталоге содержится информация о именах и расположении других каталогов файлов, в том числе начальных каталогов пользователей. Начальный каталог каждого пользователя, как правило, содержит ссылки на файлы именно этого пользователя, но в начальном каталоге могут быть ссылки и на другие каталоги этого пользователя. Следовательно, любому пользователю предоставляется возможность создавать свою собственную иерархическую файловую систему. Каталоги можно рассматривать как некоторую текстовую буквенно-цифровую информацию. В некотором смысле любой каталог можно считать файлом, имеющим свое имя. Однако средства работы с файлами-каталогами отличаются от средств, предоставляемых UNIX для работы с текстовыми файлами другой природы. Команды работы с каталогами обеспечивают прежде всего отыскание нужного каталога, отталкиваясь от которого можно находить в системе нужную информацию. Полное имя искомой информации в файловой системе складывается из последовательности имен промежуточных каталогов, по которым надо пройти, ^тобы добраться до искомой информации. Например, обращение с полным именем вида ОТДЕЛ 2. ИВАНОВ. РАЗДЕЛ 1. ПР2. означает, что мы хотим вызвать файл ПР2, входящий в РАЗДЕЛ 1 пользователя Иванова, который является сотрудником отдела 2. С точки зрения ОС UNIX ОТДЕЛ 2, ИВАНОВ, 7* 155
РАЗДЕЛ 1 — имена каталогов в их иерархическом соподчинении. Имя ПР2 — собственно имя текстовой информации, которой нужно пользоваться. При раба, те с системой в большинстве случаев полное струк% турное имя указывать не обязательно. Существует понятие текущего каталога. Именно к текущему ка- талогу обращается система при поиске файла с тре* буемым именем. В частности, текущим каталогом может оказаться каталог РАЗДЕЛ 1. В этом случае пользователю достаточно при обращении к системе указать только имя: ПР2. В системе UNIX существуют команды, позволяющие установить в качестве текущего нужный нам каталог и определить тот каталог, с которым в данный момент работает система. Целая группа команд позволяет перейти из одного каталога в другой, просмотреть содержимое текущего каталога, создать новые каталог и файл, удалить ненужный уже каталог или файл. Однако все действия, связанные с изменением, дополнением, удалением каталогов и файлов, строго контролируются системой. Пользователь обычно не может испортить чужого каталога или файла. Права на проведение таких действий контролируются системой паролей. Чтобы что-то совершить с «чужой» информацией, надо знать соответствующий пароль, В системе UNIX есть специальная таблица, в которой содержится информация о правах доступа пользователя к хранящейся информации. Наибольшими правами наделен администратор системы, снабженный специальным паролем. Ему почти все дозволено, за исключением, быть может, возможности изменять файлы, содержащие программы системного обеспечения. Над файлами в системе определены некоторые полезные действия, выполняемые по указанию пользователя. К ним, в частности, относится команда объединения файлов. С помощью такой команды можно два или несколько текстов (файлов) слить в один, назвать слитный файл новым именем и увидеть результат слияния на экране терминала. Существуют команды, позволяющие копировать файлы, один файл заменять другим. Пользователю предоставляется возможность переименовывать уже созданные файлы. Специальная команда обеспечивает просмотр содержимого нужного файла на экране или вывод era на печать. С помощью команды сравнения двух фай- 156
лов можно выяснить те позиции, в которых эти файлы отличаются друг от друга. Кроме того, при сравнении двух файлов системой вырабатывается специальный признак —число, характеризующее результат сравнения. Этим признаком можно пользоваться для задания своего рода условных переходов к той или иной последовательности команд в зависимости от результатов сравнения. Пользователь может специальными командами защитить свой файл или, наоборот, разрешить пользоваться этим файлом другим пользователям. Можно, например, запретить запись новой информации в свой файл, разрешив только считывание информации из этого файла. Мы рассмотрели в общих чертах команды, обращенные к файловой системе UNIX. Даже из одного весьма общего изложения, в котором опущены многие детали, можно составить представление о высокой развитости файловой системы и ее ориентации на нужды пользователей. Теперь мы рассмотрим другие команды, обеспечивающие взаимодействие с ОС UNIX и взаимодействие пользователей между собой. Это может показаться странным: о каком взаимодействии пользователей между собой может идти речь применительно к персональным компьютерам? Само название «персональный» предполагает монопольное владение машиной одним лицом. Тем не менее это далеко не так. Во-первых, персональные профессиональные компьютеры все чаще и чаще объединяются в сети. Обмен информацией по сети между пользователями приобретает все большее значение. Во-вторых, развитым персональным компьютером, как правило, пользуется не одно лицо, а попеременно несколько пользователей. Даже если такой компьютер не связан с сетью, он не является предметом индивидуального пользования и в нем могут храниться программы и файлы, принадлежащие разным пользователям. В этом случае возникает необходимость их общения — обмена сообщениями между собой. При работе одного пользователя в компьютере ввод и вывод направлены к дисплею или от него к ЭВМ. Но иногда возникает необходимость направлять результаты работы одного пользователя в адрес другого. В системе UNIX существуют соответствующие команды, изменяющие направление ввода/вывода. Группа команд позволяет организовать обмен со- 157
общениями между различными пользователями. Лю. бой пользователь, севший за терминал, будет осве. домлен системой, есть ли адресованные ему сообщи ния. Это весьма удобно, особенно для пользователей работающих совместно над каким-либо проектом! Следует отметить, что на отечественной машине БЭСМ-6 в свое время была создана система ДЖИН (автор В. В. Кобелев), в которой аппарат обмена сообщениями в режиме многопультового доступа был введен в практику повседневной работы и показал свою высокую эффективность, особенно в коллективах, занимающихся решением одной крупнбй проблемы. В операционной системе ОС UNIX существует возможность послать всем пользователям одинаковое сообщение — циркуляр. Обычно это прерогатива администратора системы или начальника группы. Существуют команды, запрещающие посылку сообщений каким-либо пользователям. Это позволяет некоторым образом регулировать дисциплину обмена письмами через ЭВМ. Представляют интерес команды, уже не относящиеся к почтовой службе, позволяющие вести более тонкий анализ содержания файлов, например команды поиска информации в группе файлов, соответствующей некоторому заданному шаблону, команды, подсчитывающие объемы файлов в словах и ряд других. Имеется группа команд, позволяющих регулировать ход выполнения программы. Можно, например, попросить систему задержать выполнение какой-либо программы на заданное время или до появления некоторого события. Администратору системы даются команды, которые позволяют прекратить выполнение программы любого пользователя, работающего в сети. Целая группа информационных команд пoзвoляet получить все необходимые сведения о состоянии системы в данный момент времени, все каталоги, имена всех пользователей, допущенных к работе и имеющих свои файлы в системе, информацию о занятости пространства дисков и т. п. Разумеется не все перечисленные средства ОС UNIX необходимы. Для разных применений микро- ЭВМ требуются, вообще говоря, и разные средства, разные наборы команд обращения к системе. В самой системе UNIX предусмотрены возможности ее 158
настройки на конкретный характер применения, иначе говоря, имеются средства генерации различных версий системы. Характеризуя в общих чертах систе* му UNIX с точки зрения пользователя, можно сказать, что она вобрала в себя все те средства общения с ЭВМ, которые были опробированы в других операционных системах, причем средства эти хорошо систематизированы, учитывают естественную иерархию пользователей, их деловые взаимоотношения, необходимость общения между собой с помощью ЭВМ. § 3.6. ХАРАКТЕРИСТИКИ ОПЕРАЦИОННОЙ СИСТЕМЫ АЛЬФА ДОС/ДОС-16 Операционная система Альфа ДОС/ДОС-16 используется на персональных ЭВМ, построенных на основе 16-разрядных микропроцессоров типа К1810ВМ86, К1810ВМ88. По своей структуре она близка к операционной системе MS-DOS, используемой на ПЭВМ IBM PC, IBM PC-XT и представляет собой русифицированную версию MS-DOS с рядом полезных дополнений. В системе ДОС-16 хорошо развиты средства, позволяющие расширять ее возможности силами пользователя, предоставляющие право пользователю со* здавать требуемую операционную среду для его прикладной программы. Например, можно нестандартным образом обрабатывать прерывания, вводить новые функции, обращение к которым производится по правилам стандартных обращений к ОС, использовать драйверы внешних устройств своего собственного изготовления. Операционная система ДОС-16 обеспечивает возможность использовать весь задел программного обеспечения, разработанного для семейства персональных компьютеров IBM PC, включая трансляторы с языков БЕЙСИК, ФОРТРАН, ПАСКАЛЬ, ПЛ-1, ЛИСП, подмножества АДА, СИ и др. Возможно использование многих пакетов прикладных программ без какой-либо адаптации или с небольшими изменениями, связанными с различиями в комплектации внешними устройствами. ДОС-16 построена по модульному принципу, включает в свой состав резидентную часть, занимающую около 60К байтов в оперативной памяти, И нерезидентную часть, модули которой вызывают- 159
ся в работу по мере необходимости. ДОС-16 включает в свой состав следующие основные блоки: 1) базовую систему ввода/вывода, расположен- ную в постоянном запоминающем устройстве и служащую для ввода в память ПЭВМ резидентных модулей ОС и выполнения обращений к стандартным устройствам ввода/вывода; 2) блок начальной загрузки (Boot Record), который находится в ОЗУ и организует затем считывание и размещение в памяти других резидентных частей ОС; 3) резидентную базовую систему ввода/вывода (BIO. COM), в состав которой входят драйверы внешних запоминающих устройств и модули обработки заказов на считывание системных и пользо- вательных файлов; 4) модуль обработки прерываний (DOS.COM), основной функцией которого является обработка обращений к операционной системе от программ пользователя и системных программ (точнее его можно было бы назвать модулем обработки программных прерываний). Важным блоком системного программного обеспечения, тесно связанным с операционной системой, является так называемый командный процессор, в функции которого входит обработка и исполнение многочисленных директив, набираемых пользователем на клавиатуре или получаемых из командных файлов, считываемых с дисков. Набор директив командного языка ДОС-16 близок по своему содержанию к командному языку UNIX и обеспечивает удобный интерфейс пользователя с ПЭВМ. В его состав входят команды обращения к файловой системе и манипуляции с файлами, команды, генерирующие операционную среду, команды входа в отладчики, системы редактирования, команды управления графикой. Файловая система ДОС-16 по логике своего построения близка к иерархической файловой системе UNIX. Условно можно файлы разделить на три категории: исполняемые файлы, содержащие тексты программ; управляющие файлы, содержащие последовательность команд, адресованных к командному процессору; текстовые файлы, содержащие любую другую информацию. В каталогах файловой системы тип файла отмечается особым образом, что позволяет должным образом его обрабатывать. Пользова- 160
теЛю предоставляются широкие возможности для формирования командных файлов. Это упрощает общение с системой: вместо утомительной работы по набору последовательности команд на клавиатуре достаточно обратиться к сформированному командному файлу. Такое обращение может быть выполнено из пользовательской программы. Этот принцип формирования командных файлов напоминает систему каталогизированных процедур, используемую на машинах серии ЕС ЭВМ. Особо следует отметить те средства обработки программных прерываний, которые ориентированы на расширение функций ОС по сравнению со стандартными. Обработка прерываний на ПЭВМ типа ЕС-1840/1841 организована по векторному принципу. В ОС существует «нижний» уровень обработки прерываний, имеющий дело с физическими сигналами прерываний, и «верхний» уровень, реализованный средствами модуля DOC. COM. Часть адресов вектора прерываний в этом модуле жестко закреплена за стандартными обращениями к ОС. Часть адресов выделяется для организации пользовательских прерываний. В случае появления программного прерывания со «стандартным» номером, система передает управление на стандартные программы обработки прерываний операционной системы. В случае появления прерывания со «свободным» номером, управление передается в программу пользователя по адресу, указанному им самим. Программа будет выполнять ту обработку, которую задал пользователь. В частности, такая программа может быть драйвером, управляющим подключенными к ПЭМВ нестандартными внешними устройствами; может реализо- вывать новую функцию, удобную для использования в конкретной задаче. Командные файлы и использование «пользовательских» прерываний дают достаточно гибкие средства расширения операционных возможностей системы в целом, настройки ее на конкретный комплект вводных/выводных и внешних запоминающих устройств.
РАЗДЕЛ IV ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МАШИННОЙ ГРАФИКИ § 4.1. ОСНОВНЫЕ ЗАДАЧИ МАШИННОЙ ГРАФИКИ Ранее мы уже отмечали,, что машинная графика превратилась в целое научно-техническое направление информатики, очень быстро и бурно развивающееся. Неотъемлемой частью любых профессиональных ЭВМ являются устройства, позволяющие визуализировать результаты работы программ в виде графиков и картинок и вводить в ЭВМ графическую информацию разного рода. Обязать ЭВМ рисовать необходимо во множестве приложений, прежде всего в системах автоматического проектирования, для изготовления конструкторской и технологической документации. К техническим средствам машинной графики относятся: печатающие устройства, графопостроители различных типов и, наконец, дисплей — электроннолучевая трубка, — на экране которого можно высвечивать тексты, картинки и создавать целые фильмы, демонстрирующие течение исследуемых процессов во времени и пространстве. Применительно к персональным микроЭВМ обычно говорят об интерактивной машинной графике, имея в виду участие человека в процессе создания графических объектов и их обработки. Интерактив' ность — важная отличительная особенность, отражающая новый уровень взаимодействия человека с ЭВМ. Машинная графика, если ее рассматривать как научно-техническое направление, изучает математические, алгоритмические и технические вопросы, связанные с тремя проблемами, описанными ниже. Первая проблема — задача отображения, или задача разработки, методов и алгоритмов рисования на различного рода устройствах, связанных с ЭВМ: графопостроителях, дисплеях, табло. Вторая проблема — преобразование изображений. Она связана с преобразованием видеосигналов, по- 162
щупающих с фото- и телекамер и от устройств ис- кусственного видения, которыми снабжаются многие робототехнические устройства и автоматы. Основная цель — улучшение качества изображений. Третья проблема, наиболее сложная и наукоемка^ — анализ и интерпретация изображений. Целью здесь является уяснение смысла того, что изображено. Эта задача смыкается с проблемами распознавания образов, идентификации объектов. Рассмотрим простой пример первой задачи, связанной с рисованием. Пусть нам заданы пространственные координаты вершин выпуклого многогранника. Следует построить его проекцию на плоскость, заданную, например, уравнением Ах+Ву+С=0, и отобразить на экран. Очевидно, что математически задача сводится к пересчету координат вершин многогранника. Постановка задачи такова, что нам следует прежде всего определить ребра выпуклого многогранника, т. е. составить список троек координат, фиксирующих начало и конец каждого ребра. Уже эта задача алгоритмически не очень проста. Нам известно только определение выпуклого многогранника, которое гласит, что все вершины, не принадлежащие какой-либо выбранной грани, расположены только по одну сторону от нее. Пусть читатель подумает о том, какой можно предложить алгоритм, чтобы построить ребра, исходя из этого предположения, и как должны быть заданы вершины, чтобы в принципе это можно было сделать. После того как получен список ребер, к каждой тройке координат начала и конца ребра следует применить преобразование координат в соответствии с матрицей перехода и получить координаты начала и конца проекции каждого ребра на заданную плоскость. Далее с учетом разрешающей способности экрана, на который мы собираемся выдать вид проекции, следует преобразовать полученные координаты в дискретную экранную систему координат. Для этого их надо масштабировать и округлить так, чтобы значения координат по оси X не превосходили, числа точек в строке, а координаты по оси Y — числа строк. Далее следует выполнить алгоритм убирания невидимых участков граней. Мы снова предлагаем: читателю придумать такой алгоритм. Исходными дан- 163
ными для него является список пространственных координат, определяющих начало и конец каждого ребра, и список вершин, принадлежащих каждой гра* ни многогранника. Простейший переборный алгоритм, проверяющий, точки каких ребер «затеняются» какими гранями, весьма трудоемкий, а речь идет о том, чтобы придумать экономный быстро работающий алгоритм. Все перечисленные выше задачи являются чисто математическими, где требуется привлечение методов линейной алгебры, тригонометрии, стереометрии. Соответственно возникла своеобразная математическая дисциплина — вычислительная геометрия, обслуживающая задачи машинной графики. В конечном итоге этот уровень программ в качестве результатов своей работы вырабатывает список экранных координат участков граней,-которые видны, участков граней, которые невидимы (их можно рисовать штриховыми линиями). На основе списка формируется последовательность команд для системных программ формирования экранной памяти. Выбрав подходящий шаг изменения положения плоскости проекции и выполняя для каждого нового положения вышеприведенные расчеты, можно получить на экране мультипликационный фильм, демонстрирующий вращение многогранника. Если совсем немного усложнить задачу и потребовать, чтобы проекция была изометрической, то математика для решения этой задачи становится намного сложнее. В этом случае должны быть заданы координаты наблюдателя в исходной пространственной системе координат, уравнение оси вращения, которая необязательно проходит через начало координат, более сложными становятся расчеты невидимых граней. В машинной графике существуют понятия мировой системы координат, в которой задаются все исходные данные о координатах, описывающих объекты, системы координат наблюдателя, системы координат плоскостей проекции, системы координат в плоскости наблюдения и, наконец, системы координат экрана. На вышеприведенном примере мы рассмотрели этапы преобразования координат от одной системы к другой. К мировой пространственной системе координат можно прибавить еще и время, так как во многих задачах машинной графики требуется изо- 164
\ \ бражение Чперемещения объектов в отображаемом на экране *рре. Заметим, что этот мир может быть вЫдуманным,\не отражающим никакой реальности а может достаточно точно отражать динамику физических процессов, являясь источником познания окружающей среды на наглядных примерах. Во многих системах процесс рисования происходит в полностью автоматическом режиме, например при изготовлении фотошаблонов для производства интегральных схем. Но чаще всего в автоматизированных системах, результатом которых является графический документ, требуется непременное участие человека, поэтому программное обеспечение средств рисования носит диалоговый интерактивный характер. Если иметь в виду отображение пространственных фигур и объектов, их формы аппроксимируются многогранниками.. Поверхности, заданные аналитическими формулами, чаще всего отображаются в виде проекций ребер плоских граней. Сама по себе задача удачного покрытия фигур сеткой граней требует привлечения достаточно сильных средств математики. Сейчас существуют алгоритмы и программы, которые на основе такого исходного представления выполняют как бы обратную работу по сглаживанию изображения, наложению теней и бликов, так что на экране фигура приобретает естественный вид. Легко себе представить математическую сложность этой задачи. В этом случае, кроме всего прочего, следует определить координаты воображаемого источника света, каким-то образом задать фактуру изображаемой фигуры, т. е. учесть характеристики отражающей поверхности. Конечно, для решения таких сложных задач микропроцессорной техники недостаточно. Для того чтобы решить задачу «художественного» воспроизведения сконструированных в мозгу человека и переданных в ЭВМ объектов, требуются быстродействие в сотни миллионов операций в секунду. Даже для более простой задачи создания мультфильмов используется ЭВМ типа Сгау-1, производительностью порядка 100 млн операций в секунду. Следующая задача машинной графики, названная нами преобразованием изображений, включает в свой состав очень широкий спектр преобразований видеоинформации, введенной в ЭВМ. В настоящее время фотографии со спутников и космических аппаратов 165
передаются на Землю в оцифрованном вшгё и одно§ из первых задач обработки является восстановление- исходного изображения, освобождение его от помехь возникающих при передаче по каналам дальней кос* мической связи. Рассмотрим некоторые проблемы в> этой области. Проблема оптимальной оцифровки. Принцип оцифровки изображений основан на том, что исхода ный фотокадр сканируется узким лучом по строкам, непрерывный график изменения интенсивности: отраженного (или проницающего) сигнала квантуется и усредненная величина интенсивности на каждом кванте в виде целого двоичного числа передается па каналам связи. Чем плотнее расположены строка сканирования, чем меньше квант, тем точнее может быть восстановлено изображение на приемном, пункте. Первая задача, которую можно отнести к обработке изображений, относится к кодированию изображений. Удачный выбор способа кодирования в- ряде случаев позволяет многократно сократить объем передаваемой по каналам связи информации. Приведем простой пример. Пусть речь идет о кодировании развертки изображения участка звездного неба.. Пусть чувствительность фото- или телекамеры соответствует восприятию звезд не больше пятой величины, т. е. на кадре будет только несколько светлых точек на темном фоне. Это эквивалентно тому, что* на каждой строке развертки такого изображения из нескольких сот квантов значимыми могут оказаться* всего несколько штук в пределах десятки. Тогда содержимое одной строки лучше закодировать последовательностью пар чисел. Первое число будет обозначать номер значимого кванта, второе — его значение- Схема такого кодирования представлена на рис. 46. В приведенном рис. 46 предполагается, что* строка содержит семь квантов, а амплитуда сигнала, внутри кванта кодируется четырьмя двоичными разрядами, т. е. точность дается шестнадцатью уровнями интенсивности. Из этой простой схемы видно, что эффект уплотнения прямо определяется характером рисунка. Достаточно в данной развертке добавить еще два значимых кванта, и эффект экономии кода сразу значительно снизится. Пусть обрабатываемый кадр содержит N=2n квантов, из которых k^2m квантов значащие, число уровней амплитуды сигнала 166
исходный сигнал U U кВантоданный сигнал ттт. 2к5ант , Зкдант Т код строки без уплотнения ♦ \ 5 О дВоичный код , в 5кдант „ Л п Л 4 квант »Ш>ШШ„А б квант , 7 квант 0101 1234 00 00 56 78 0000 00 0 0 0 0 0 0. 0001 0000 9101112 13141516 171819 20 2122 23 24 25262728 уплотненный код, указывающий позиции двоичных единиц 2,4,24 уплотненный код, указывающий значимые кванты и их интенсивность (0,5) (6,1) 28 двоичных единиц 15 двоичных единиц 16 двоичных единиц Рис. 46
равно 2s, тогда для случая прямого последователь, ного кодирования потребуется N-s двойных разря- дов. Для кодирования расположения единиц в стро. ке прямого двоичного разложения потребуется более k- (m+s) двоичных разрядов, наконед, для кодирования указанием номера значащего кванта и его амплитуды потребуется k(s+n) двоичных разрядов. Для того чтобы рассмотренные способы уплотнения имело смысл применять, необходимо выполнение условий k(m+s)<cN-s или k(s+n)<^N-s. Уплотнять код можно, используя не значения квантов, а значения их первых разностей. Для некоторых типов картинок такое кодирование дает хороший результат. Однако следует помнить, что кодирование по первым разностям может оказаться менее помехоустойчивым по сравнению с прямым линейным кодированием. Смысл предыдущих рассуждений сводится к тому, чтобы продемонстрировать еще раз необходимость применения математических методов исследования в даже очень простых задачах, связанных с обработкой изображений. § 4.2. МАТЕМАТИЧЕСКАЯ МОДЕЛЬ ИЗОБРАЖЕНИЙ Для того чтобы можно было применить математические методы к задачам анализа изображений, следует создать математические модели изображений. Эти модели должны строиться с учетом возможности их представления некоторой структурой данных в памяти ЭВМ. В то,же время математическая модель должна как можно более точно отражать существенные свойства реальных процессов. Рассмотрим, как происходит процесс видения. Предметы отображаются на сетчатку глаза, которая состоит из очень большого числа рецепторов, воспринимающих световые сигналы и передающих информацию о них в кору головного мозга. Рецепторы глаза преобразуют световой сигнал в биотоки, значения интенсивности сигнала кодируются некоторыми характеристиками биотоков и передаются в нервные волокна. Для нас существенно, что сетчатка глаза — дискретное устройство, состоящее из отдельных воспринимающих элементов. Тем самым первый этап зрительного восприятия состоит в преобразо- 168
вании предметов реального мира в мозаичный образ на сёХчатке глаза. В мозгу,производится сложнейшая логическая работа по дальнейшему анализу информации поступившей от сетчатки глаза. Первичная цель этой работы — по мозаичной проекции объектов восстановить реальный предметный мир. Иными словами, решается обратная задача: по неточно заданной косвенной информации восстановить реальную картину взаимного расположения объектов, их фактуру, отражательную способность и пр. Математические модели изображений должны учитывать эти реалии и прежде всего дискретный характер исходных данных^ возможность восстановить по дискретной модели сведения о таких непрерывных характеристиках предметов, как форма, занимаемый объем, скорость движения. За исходную модель изображения можно взять двумерную функцию z=f(x, у)у где х, у — координаты плоскости проекции изображения, a z — значение интенсивности освещенности точки (л:, у). Функ^ цию / (х, у) нельзя считать непрерывной, так как границу контура следует интерпретировать как скачок изменения интенсивности освещенности или разрыв функции. Единственно, что можно предположить, это то, что наша функция ограничена в любой замкнутой области. Будем считать, что мы всегда имеем дело с кадром — прямоугольной областью a<x<.br c<y<d. Любая аппаратура «чтения» изображений в конечном итоге превращает исходное изображение в цифровой код, т. е. исходную функцию задает таблицей ее значений в дискретных точках. Эти значения затем вводятся в ЭВМ для последующей обработки. В общем случае аппаратура производит следующие преобразования. На исходный кадр накладывается сетка (для определенности пусть квадратная). В качестве значения функции z в средней точке квадрата сетки Xi, yi берется усредненная интенсивность по площади квадрата yj+h xt+h где h — шаг сетки. 169>
Полученные значения *// квантуются на аппарат- но заданное число уровней k. Процесс кантования состоит в следующем: исходное значение 'гц заменяется целым числом 2ц — номером уровдя — соглас- но следующей формуле: ?„=entier ^(t/-°J°/(*.y»M ( где My |max/(#, у) —minf(x, у)\. Иными словами, весь интервал значений гц разбивается на k равных частей, и в качестве значения Zij берется номер интервала, в который попало значение Ztj. В ЭВМ вводятся именно эти целые числа, кодирующие интенсивность изображения в дискретном ряде точек исходного кадра. Если выбранное число уровней квантования — ky то для того, чтобы закодировать целое число в диапазоне от 0 до k— 1, потребуется S=[log2k]+l двоичных разрядов. При заданном k и числе точек кадра, передаваемых в ЭВМ, можно рассчитать объем необходимой памяти для хранения кадра. Современная аппаратура считывания допускает £=256 уровней квантования. Число оцифрованных точек кадра достигает 1024X1024. При преобразовании исходной модели изображения, выражаемой функцией z=f(xt у), которая может принимать значения на континууме от maxf(x, у) до гшп/(л:, у), в машинно-кодированный вид аппаратура вносит ошибки, связанные с заменой функции таблицей ее дискретных значений и с квантованием. В результате в памяти ЭВМ мы имеем весьма приближенное отображение исходной функции. Одной из первых задач машинной графики является математическая задача восстановления исходной функции по приближенно заданной информации. На этот счет существует целый спектр математических исследований, особый вклад в которые принадлежит академику А. Н. Тихонову и его школе. Развитая теория позволяет определить степень приближения восстановленной функции к исходно заданной на основе знания характеристик аппаратуры и априорно известных свойств исходной функции. В частности, эта теория дает методику расчета характеристик аппаратуры, которые необходимы для получения нужного приближения. Однако следует отметить, что 170
задача построения оптимальной системы квантование й развертдк сложна и не существует универсального рецепта на этот счет. Следующая проблема обработки и анализа изображений связана с выделением «полезного» сигнала на уровне шумов, т. е. с улучшением качества изображения. Для того чтобы рассмотреть круг таких задач, построим другую математическую дискретную модель в упрощенном варианте. Пусть плоское изображение задано в виде мозаики черных и белых клеток или точек. Это значит, что число уровней квантования амплитуд выбрано равным 2. Точки на плоскости образуют строки и столбцы по точной аналогии с тем, как выглядит картинка на экране телевизора. Следует заметить, что такой способ задания изображений широко применяется в полиграфии. Для этого достаточно внимательно рассмотреть газетную фотографию. Полутона изображений передаются плотностью заполнения соответствующих областей точками. Таким образом, рассматриваемая модель не является чисто абстрактной. Эту модель легко представить в памяти ЭВМ в виде двумерной матрицы нулей и единиц. Для этого каждой точке растра ставится во взаимооднозначное соответствие один двоичный разряд памяти, при этом черная точка обозначается единицей, светлая — нулем. Теперь любой алгоритм обработки изображений можно интерпретировать как некоторое преобразование такого рода булевой матрицы, представляющей собой макет растрового изображения. Вычислительные машины хорошо приспособлены для выполнения логических операций над булевыми матрицами. Во всех компьютерах существуют машинные команды, позволяющие выполнять логические операции И, ИЛИ, НЕ, исключающее-ИЛИ над всеми разрядами машинного слова одновременно. Если размерность булевых матриц кратна размерности машинного слова, то преобразования проводятся достаточно быстро. В задачах анализа изображений возникает проблема разработки такой системы операций над булевыми матрицами, чтобы с их помощью можно было конструировать различные алгоритмы обработки макетов изображений. Из общих соображений видно, что в этом наборе должны быть такие простые одноместные операции, как «отрицание», что эквива- 171:
.лентно получению мозаики негативного изображения и «сдвиг», который интерпретируется как сдвиг изоб* ражения по растру. Понятно, что сдвиг вверх/вниз по вертикали эквивалентен циклической перенумера, ции строк, сдвиг вправо/влево по горизонтали — ццк. лической перенумерации столбцов. Композиция этих двух сдвигов дает перемещение изображения по диагонали. Однако в реальных задачах часто возникает необходимость сдвига изображения на один шаг в произвольном направлении. Комбинацией простейших сдвигов этого достичь невозможно. Из тех же общих соображений можно предполо^ жить, что при обработке булевых матриц, интерпретируемых как мозаичное изображение, должны существовать двухместные булевы операции, эквивалентные операциям И, ИЛИ и др. С помощью таких операций можно выполнять сложение изображений, их вычитание. Введение этих операций позволит использовать весь накопленный арсенал булевой алгебры при обработке растровых изображений. Если вернуться к практике построения мультипликаций, где на одной плоскости совмещаются несколько графических объектов, принадлежащих разным плоскостям и затеняющих друг друга, то станет ясно, что введенных двухместных операций недостаточно. . Прежде всего надо уметь задавать на черно-белом двоичном растре графический объект. Если не выходить за рамки двоичного представления, то графический объект на растре можно представить двумя булевыми матрицами: матрицей маски, говорящей о том, какие элементы растра относятся к графическому объекту, и матрицей собственно графического объекта. Появляется необходимость введения новых своеобразных четырехместных операций. Пусть М{ и Mi — соответственно матрицы, задающие первый графический объект и его маску. Пусть М2 и М2 — соответствующие матрицы для второго изображения. Речь идет о построении операций fi(Mu Mu М2, М2), которые в результате своего выполнения образуют две матрицы Af3 и А?3, обозначающие новый графический объект и его. маску. Из этого класса операций необходима прежде всего операция наложения графических объектов. Операция наложения выражается следующей последовательностью обычных двухместных булевых операций: М3= (JBtx&M2) VMu Мъ=Мх&М2. J 72
для иллюстрации работы операции наложения ниже приведен пример с матрицами 8x8 (рис 47) Здесь пустые клетки в матрицах соответствуют значению нулевого элемента. При этом предполагается, что в масках единицами «закрашены» элементы растра, не относящиеся к соответствующим графическим объектам. В двоичной системе представления графический объект, занимающий только часть пространства плоскости, как мы установили, требует для 1R & \Т \1 I/ [± / 1 1 1 7 /I / i\ [7 \D_ 1 1 Г I j / \1 1 1 1 1 1 \1 T 1\ 1\ 1\ \r \o П 1 0 1 r~ 1\\ ! 0 I I ] Tj 5 lITCIT 7\ " !r J;l M1 Mi M9 Mi M, Рис. 47. Операция наложения графических объектов своего задания пары матриц. Для представления графического объекта, по-видимому, более удобно использовать троичную логику, обозначая конфигурацию собственно объекта, как и прежде, нулями и единицами, а не относящиеся к нему элементы — третьим символом, например звездочкой. Однако, абсолютное большинство современных ЭВМ работают с использованием двоичной системы и двоичного представления информации любого рода. Реализация на таких ЭВМ операций с троичными матрицами может вызвать затруднения. Любые алгоритмы обработки изображений всегда основаны на некоторых априорных знаниях относительно характера изображения. В этой связи рассмотрим в простейшей постановке задачу очистки двоичного изображения от «шумовых» вкраплений. Решение задачи очистки изображения от дефектов, связанных с появлением лишних точек или с изъянами на сплошном фоне, обычно основано на предположении, что изолированные и черная и белая точки на сплошном фоне это шум. Такого рода предположение и есть выражение нашего априорного знания о характере картинки. В фотостудиях есть специалисты-ретушеры, в обязанность которых входит «обработка изображения» на предмет улучшения качества портрета. Они работают над фотографиями, не зная предмета, и часто фотона
портрет оказывается не похожим на оригинал. Что. бы не допустить такого явления в машинной обра ботке, требуется знание предмета. Это «знание» т^Г или иным образом оказывается включенным в алго ритмы обработки. Рассмотрим пример по обработке изображения, представляющего собой несколько сплошь зачерненных выпуклых фигур. Пусть целью обработки является очистка изображения от помех т. е. от лишних черных точек в его мозаичном изображении и от лишних белых точек, если они оказав лись внутри зачерненных фигур. Алгоритм обработки в этом случае обычно основан на следующем принципе: из изображения выбрасываются все одиночные изолированные точки и зачерняются все белые точки, окруженные черными. Даже в такой тривиальной постановке возникает целый ряд проблем. Например, на рис. 48 изображен фрагмент мозаики и неясно, то ли это четыре изолированные шумовые точки, то ли фигура квадрата, испорченная белыми вкраплениями. В подобного рода случаях системы обработки изображений выдают два варианта решения задачи, оставляя выбор за человеком-специалистом. Но для того чтобы выбрать подходящий вариант, специалисту необходимо посмотреть на эти оба варианта и возможно даже поправить алгоритм обработки. Так возникает неотъемлемый элемент систем обработки графической информации, требующий вмешательства человека. Для того чтобы иметь возможность некоторым регулярным способом строить алгоритмы обработки, желательно иметь набор базовых элементарных процедур обработки, на основе которых можно было бы создавать алгоритмы произвольной сложности и необходимой целенаправленности. Иными словами, возникает необходимость в создании некоторой алгебры изображений. Иногда ее называют картинной логикой. Мы ранее рассмотрели один из возможных подходов к созданию такой алгебры на основе булевых операций. Теперь рассмотрим другой подход, основанный на применении клеточных автоматов. 4.2.1. Клеточные автоматы. Простейший двоичный клеточный автомат можно рассматривать как дву- Рис. 48 174
ерную матрицу, состоящую из п строк и т столбцов, каждый элемент которой может принимать значение О или 1. Такой элемент называем клеткой. Теоретически можно полагать, что число строк и столбцов неограниченно, т. е. клетки занимают всю плоскость, разумеется, реально всегда предполагается конечное число строк и столбцов. Такая конечная структура может быть смоделирована в памяти любой ЭВМ булевой матрицей. Работает клеточный автомат следующим образом. Задается некоторый шаблон, представляющий собой, вообще говоря, произвольную область клеток. Чаще всего это прямоугольник или квадрат со сторонами из трех строк и трех столбцов. В шаблоне метится «средняя клетка». Шаблон определяет конечное множество соседей данной «средней клетки». Аналитически шаблон можно задать списком идентифицированных соседей. Если координаты (индексы) средней точки шаблона мы обозначим 0, 0, то, например, ее соседями можно объявить клетки с относительными индексами: (0, 0), (0, 1), (1, 0), (1, 1), (0, 1), (-1,0), (-1,-1), (1,-1), (-1, 1). Но шаблон может быть выбран произвольно, не обязательно симметричным, лишь бы он содержал конечное число точек. Шаблон далее прилагается к каждой клетке исходной матрицы; середина шаблона совмещается с клеткой сц. Соответственно определяются все объявленные шаблоном соседи выбранной клетки матрицы. Для нашего примера соседями сц будут клетки с индексами (i, /), (t, /+1), (t, /—1), (t+1, /), (f+1, /+1), (t+1, Ы), (t-1, /), (t-1, /+1), {i— 1, /—1). Новое значение элемента сц есть некоторая заданная функция от значений ее соседей, выбранных в соответствии с шаблоном. Будем предполагать, что самый ближайший сосед клетки сц — она сама, если это определено шаблоном. Шаг работы клеточного автомата состоит в том, что перевычисляются значения всех клеток матрицы на основе их значений на предыдущем шаге. Номер шага клеточного автомата будем отмечать верхним индексом. В нашем примере сц —Ччи/ > и,/+ь си-и ...» cj_if/-i). Функцию ф можно выбирать достаточно произвольно, лишь бы в качестве результата она давала 175
О или 1. Эта функция часто задается алгоритмом е^ вычисления, например 1 , если 2с/т>5, c(ij\ если 2с\т =4, (%) О , если Ъс\т < 3, ^+1) = где суммирование ведется по всем элементам, определенным шаблоном соседства. Клеточный автомат работающий по алгоритму, выраженному (*), на пер-* вом же шаге превратит в нули все элементы, у которых мало единичных соседей, заменит на единицы все нулевые элементы, «плотно» окруженные единичными соседями. Такой алгоритм может быть с успехом применен для очистки мозаичного представления изображений от изолированных черных и белых точек. Изображение станет более контрастным. Выполнив один шаг обработки, переходим к следующему шагу и т. д.; ведем пошаговый процесс преобразования исходной матрицы. В зависимости от конфигурации нулей и единиц начальной матрицы этот процесс может прекратиться в том смысле* что далее ничего меняться в матрице не будет, может оказаться циклическим с периодом разной длины (с разным количеством шагов). Можно задать достаточно произвольные условия останова клеточного автомата. Если, например, в качестве единственного соседа клетки определить только ее саму и алгоритм преобразования задать формулой J О при с\?=\, ( 1 при c\^ = 0t cik.+l)- то можно им воспользоваться для получения негативной мозаики, т. е. имитировать получение негатива. Если выбрать в качестве шаблона элементы с относительными индексами (0, 0) и (1, 1), а в качестве алгоритма преобразования \/*1) = с{$м+\, то произойдет сдвиг всего мозаичного изображения по диагонали вниз. Иными словами, выбирая должным образом список соседей и алгоритм вычисления функции ф, можно использовать двоичный клеточный автомат для самых изощренных преобразований мозаичных изображений. Существенно отметить, что вы- 176
числения новых значений в каждой клетке сц производятся независимо от вычислений в любой другой кЛетке cim. Следовательно, такой процесс может производиться параллельно в рамках одного шага. Это позволяет строить мультимикропроцессорные систе- мы, имитирующие работу клеточного автомата для обработки изображений. Такие системы реально созданы. 4.2.2. Общее определение клеточного автомата и картинная логика. В качестве примера выше рассмотрен простейший двоичный клеточный автомат, каждый элемент которого может находиться в двух дискретных состояниях. Это своего рода «черно-белый» автомат без полутонов. Но, имея в виду применение клеточных автоматов к обработке полутоновых и цветных изображений, можно рассматривать и более сложные конструкции автоматов. Пусть теперь каждая клетка характеризуется векторным признаком pi(pOy P\y p2, ..., ps). Признаки роу р\у ..., ps могут указывать цвет, яркость и пр. Шаблон будем строить, как и ранее, идентифицируя соседей по индексам. Однако теперь будем рассматривать не только двумерные плоские структуры, но и многомерные, т. е. использовать многомерные матрицы клеток. Каждый признак (компонента) вектора состояний «а (&+1)-м шаге работы такого обобщенного клеточного автомата определяется как функция значений всех признаков ее соседей: Pi — Ф* (Pi > P2 » • • • » Рт ;> 1, 2, ..., г — номера соседей клетки. При размерности матрицы, равной трем, такой клеточный автомат может интерпретироваться как описание динамики поведения трехмерных пространственных объектов. Поскольку мы имеем дело со счетным множеством клеток, теоретически нет необходимости в обобщении клеточного автомата на размерность более единицы. В самом деле, выбрав начальную клетку для отсчета, мы можем перенумеровать (точнее, создать алгоритм перенумерации) их всех, используя натуральный ряд, т. е. привести все к одномерному массиву. Но в этом случае возникнут некоторые осложнения в определении соседей и потеряется образность. Клеточный автомат представляет собой как бы систему одноместных операций, в качестве операнда 177
выступает картинка, зафиксированная в матрице клеток. Двухместные и вообще многоместные операции над картинками имеют в машинной графике большое значение. В этих операциях в качестве операндов выступают несколько разных картинок, представленных одинаковыми по размеру матрицами кле« ток. Если снова предполагать, что мы имеем дело с черно-белой мозаикой, представленной двумерным массивом нулей и единиц, то совершенно очевидный смысл приобретают операции логического сложения картинок и сравнения — это частный случай применения клеточных автоматов. К двум картинкам можно применить все двухместные булевы операции, задавая соответствующим образом правила работы клеточного автомата. К этим операциям необходимо добавить сдвиг и обращение, и мы получим тот базовый набор операции на основе которого можно задавать более сложные операции. Полезность такой «картинной» алгебры можно продемонстрировать на следующем примере. Пусть нам даны две картинки, изображающие мозаикой два снимка с движущимся на фоне домов предметом. Выполнив над этими картинками операцию ис- ключающее-ИЛИ (сложение по модулю два), мы получим картинку, в которой единицами отмечены те фрагменты, в которых нет совпадения. Это позволяет автоматически отыскивать на двух фотогра* фиях движущиеся предметы. Если мы знаем, что исходные фотографии представляли собой два кадра панорамы, имеющие некоторую область пересечения, то, используя последовательно операцию сдвига и сравнения, можно заставить ЭВМ автоматически совместить два изображения. В основу программ, входящих во многие пакеты прикладных программ, ориентированных на обработку изображений, положены идеи клеточных автоматов. Однако реализация этих программ на обычных последовательных машинах требует затрат очень большого времени. В то же время еще раз следует подчеркнуть, многие алгоритмы такого рода допускают параллельную обработку. Все операции двух* местной картинной логики реализуются поразрядными операциями и могут быть выполнены по всем разрядам одновременно и независимо. 178
§ 4.3. ВЕКТОРНЫЕ И РАСТРОВЫЕ ДИСПЛЕИ Прежде чем говорить об алгоритмах и программах машинной графики, читателю необходимо представить в общих чертах принципы работы технических средств, связанных с воспроизведением изображений. К простейшим и хорошо известным устройствам относятся различного рода печатающие устройства. На заре появления ЭВМ для вывода результатов применялись узкоформатные цифровые печатающие устройства, которые способны были выводить на узкую рулонную бумажную ленту колонки цифр. Затем их сменили широкоформатные буквопечатающие устройства, так называемые АЦПУ (алфавитно- цифровые печатающие устройства). С их помощью удавалось выводить не только тексты и различного рода таблицы, но и рисунки, выполненные как мозаика из букв и цифр. Такие АЦПУ создавались на основе использования электрифицированных пишущих машинок (для малых ЭВМ) и на основе АЦПУ барабанного типа (для больших ЭВМ). Начавшееся использование ЭВМ в целях автоматизации проект- но-конструкторской деятельности потребовало создания графопостроителей — автоматически управляемых от ЭВМ приборов для вычерчивания непрерывных линий. Графопостроители «непрерывного» действия, т. е. умеющие вычерчивать непрерывные линии, делятся на два вида: рулонные и планшетные. Действие графопостроителей рулонного типа основано на следующем принципе. По неподвижной каретке, расположенной вдоль оси вала, на котором расположена бумага, может двигаться вправо и влево чертежная головка с рисующим пером. В свою очередь бумага может двигаться вперед и в обратном направлении, вращаемая валиком. Вычислительная машина может подавать на такое устройство следующие команды: поднять перо, опустить перо, продвинуть головку вправо (влево), продернуть бумагу вперед (назад). Соответствующим образом комбинируя эти команды, можно вычерчивать на бумаге рисунки любой сложности. Команды, ведающие продергиванием бумаги и движением головки вдоль каретки, задают перемещение на одну дискретную позицию, линейные размеры которой составляют доли миллиметра. Тем са- 179
мым «непрерывный» рисунок, по существу, представляет собой ломаную линию, состоящую из очень мелких звеньев, почти незаметных для глаза. В памяти ЭВМ любой рисунок, подлежащий вы* даче на графопостроитель, представляется в виде массива чисел, отражающих всю последовательность дискретных перемещений с указанием их направления и указанием, следует или не следует при этом опускать перо для вычерчивания. Оператор PLOT который мы рассматривали выше, вполне отражает принцип задания команд вычерчивания на графопостроителе, если считать, что все Ах и Ау в списке этого оператора одинаковы по абсолютной величине и соответствуют линейному размеру минимальных дискретных перемещений по оси X (по оси каретки) и по оси Y (перпендикулярно оси каретки). Второй тип «непрерывных» графопостроителей, называемых планшетными, отличается от рулонных тем, что бумага остается неподвижной, а вдоль чертежного стола перемещается каретка. Рисующая головка, как и у рулонных графопостроителей, перемещается вдоль каретки. Система команд управления рисованием в принципе остается той же самой. Рулонные и планшетные графопостроители «непрерывного» действия часто называют координатографами. В вычислительной технике широкое применение нашли графические устройства выдачи на бумагу, основанные на принципе мозаичной печати. Их называют * иногда игольчатыми печатающими устройствами. Представьте себе, то вдоль оси каретки графопостроителя рулонного типа расположены на очень близком расстоянии игольчатые стержни, которые в то же время являются подвижными сердечниками электромагнитов. Подавая на эти электромагниты соответствующий ток, мы можем заставить иглу- стержень выдвинуться и через красящую ленту оставить на бумаге точечный след. Одновременно подавая электрический ток на выбранную комбинацию игл, мы можем отпечатать строку точек. Продвинув затем бумагу вверх на небольшое расстояние, мы можем напечатать новую строку, состоящую из заданной комбинации точек. Тем самым на бумаге удается получать любую заданную мозаичную картинку. Если расстояние между позициями точек по строке и расстояние между строками достаточно ма- 180
лы, то отпечатанные точки сливаются, создавая впечатление непрерывного рисунка. Набор команд, управляющих печатью на такого рода устройствах, содержит перечень номеров игл, которые надо возбудить при печати одной строки, и команды, управляющие продергиванием бумаги. Чтобы можно было производить печать на стандартном формате бумаги для машинописи, на одной строке должно содержаться более тысячи печатающих игл. Такие устройства делаются, но они трудоемки в изготовлении и, следовательно, дороги. В игольчатой печати для микроЭВМ и персональных компьютеров используют иную электромеханическую схему. По каретке движется печатающая головка, представляющая блок, который содержит мозаичный прямоугольник (или квадрат), содержащий 8x5 (или 8X8) игл. Такое мозаичное поле достаточно для представления набором точек букв, цифр и других знаков, применяемых при печати текста. Старт-стопно, продвигая печатающую головку вдоль каретки и возбуждая нужным образом электромагниты, можно последовательно заполнить строку на бумаге текстом. Таким же образом можно отпечатать набор из 8 строк любой заданной конфигурации и тем самым использовать такое буквопечатающее устройство в качестве графопостроителя для рисования произвольных картинок и чертежей. Набор команд, которые в этом случае выдаются от ЭВМ на печатающее игольчатое устройство с подвижной головкой, содержит команду продвижения головки на новую позицию вдоль каретки и команду, содержащую информацию, какие иглы из набора головки должны на установленной позиции быть выдвинуты. Кроме этих основных команд существуют, разумеется, команда, позволяющая передвинуть бумагу на новую строку, и команда установки головки в исходное положение в начало строки. С точки зрения программиста, разрабатывающего программы управления техникой выдачи на печать изображений, координатографы и игольчатые мозаичные печатающие устройства различаются способом представления информации в памяти ЭВМ о графическом объекте, подлежащем выводу. В случае координатографа это массив приращений координат^ В случае игольчатой печати в памяти создается ко- 181
пия мозаики, подлежащей выводу с помощью корте* жей нулей и единиц. Выше мы в общих чертах рассмотрели графические устройства для получения так называемых твердых копий. Эти устройства выдачи информации названы так в отличие от дисплеев, на экранах ко* торых информация фиксируется только на то время пока она не сменится другой. Восстановить графи* веское изображение на экране можно только в том случае, если информация о нем хранится в памяти ЭВМ. В настоящее время применяются два типа дисплеев: векторные и растровые. Принципиальное различие этих двух типов сводится к следующему. В векторном дисплее рисунок на люминофоре экрана задается непрерывным движением электронного луча по заданной траектории. Траектория движения определяется ломаной линией, состоящей из векторов, задаваемых координатами начальной и конечной точки. Эти координаты можно задавать хотя и с ограниченной, но достаточно высокой точностью. Тем самым на экране создается видимость гладких непрерывных линий. Оператор PLOT, о котором шла речь выше, со своим списком пар приращений может служить примером задания траектории движения луча. В векторных дисплеях можно управлять не только движением, но и интенсивностью свечения, получая эффект тонких и толстых линий рисунка. Поскольку послесвечение люминофора очень непродолжительно, то для того, чтобы рисунок необходимое время «держался» на экране, движение луча по экрану надо повторять 30—60 раз в секунду. С электронно-лучевой трубкой дисплея связан видеопроцессор, в состав которого как основное логическое звено входят собственный микропроцессор и ряд других логических схем, управляющих системами отклонения и фокусировки электронного луча. В состав видеопроцессора входит буферная память, несущая всю необходимую информацию для управления движением луча. Она также называется экранной памятью или памятью регенерации. Частота обращения к ней определяется частотой регенерации. Эта память содержит последовательность координат векторов, определяющих движение луча по всему экрану, и указания об его интенсивности на том или ином участке траектории движения. Отметим, что J 82
каждая буква на таком экране задается также последовательностью векторов. В дисплейных процесс сорах-существуют специальные схемы генераторов символов. Векторные дисплеи можно использовать в этом случае как алфавитно-цифровые. Иными словами, принцип их работы такой же, как и у планшетных графопостроителей. Функции внутреннего программного обеспечения векторных дисплеев состоят в том, чтобы своевременно заполнить экранную память командами, определяющими маршруты электронного луча так, как требует видеопроцессор, который их и преобразует в сигналы, управляющие электроникой, ведающей отклонением луча. При этом следует отметить, что чем сложнее рисунок (чем больше векторов и перемещений в нем задано), тем больше времени затрачивает дисплейный процессор на опрос команд буферной памяти и их анализ. Сложные рисунки приводят в силу этого к эффекту мерцания, так как темп повторения рисунка (темп регенерации) снижается. Одной из технических характеристик векторных дисплеев является допустимое число векторов, которое можно задавать до появления мерцания на экране. В векторных дисплеях такое допустимое число достигает 3—4 тысяч векторов на один кадр. Следующий тип дисплеев — растровые дисплеи. Обычный бытовой телевизор принадлежит к такого рода дисплеям. Движение луча или нескольких лучей, если дисплей цветной, происходит по строго определенному алгоритму. Луч движется по строке от ее начала до конца, затем переходит на другую строку и т. д. Совершив движение по последней строке, луч возвращается к сканированию первой. Изображение получается путем изменения интенсивности луча во время сканирования строк. Как вы знаете, в цветных дисплеях люминофор наносится вдоль строк в виде точек в углах треугольника очень малого размера. Тем самым свечение возможно только в дискретных точках, которые и образуют точечный растр экрана. Следовательно, изображение на таких экранах формируется из дискретных светящихся компонент. Эти компоненты называются пикселами от английского словосочетания PICTURE CELL — клетка изображения. Если сравнивать с графическими устройствами вывода, то такой принцип аналогичен игольчатым точечным печатающим устройствами 18&
точечным графопостроителям, в которых изображение букв, символов и картинок формируются в виде строк точек. Как и у векторных дисплеев, в состав растровых входят экранная память и видеопроцессор, включающий в свой состав микропроцессор. Логически самый простой способ задания информации о высвечивании кадра — заполнить экранную память информацией о цвете и интенсивности свечения каждого элемента изображения. В современных растровых дисплеях общее число элементов может достигать нескольких миллионов, т. е. при таком подходе понадобилась бы экранная память слишком большого объема, правда, на микропроцессор возлагались бы очень простые функции последовательного считывания ячеек памяти, их простейший анализ и формирование сигналов для электронных схем, управляющих интенсивностью свечения. Разработчиками видеопроцессоров придумано много способов компактного размещения информации в экранной памяти. Об одном способе мы уже знаем — техника спрайтов, которая на порядок сокращает объемы экранной памяти, необходимой для хранения информации о кадре. В то же время усложняются процедуры работы видеопроцессора. 4.3.1. Уровни программного обеспечения машинной графики. Программное обеспечение машинной графики состоит из трех уровней. Самый нижний уровень составляют программы видеопроцессора, которые в качестве исходных данных имеют информацию, записанную в экранной памяти, и организуют ее сканирование на предмет управления процессом регенерации. Эти программы обычно жестко запаяны и реализованы в виде микропрограмм, они относятся к категории программ реального времени. Их разработка относится к компетенции проектировщиков дисплейных систем и, в частности, разработчиков видеопроцессоров. При этом очень важна структура информации в экранной памяти. В конечном итоге так или иначе любой графический объект, любой кадр должен быть преобразован и приведен к такой структуре. Второй уровень программного обеспечения машинной графики связан с процедурами формирования кадра экранной памяти видеопроцессора. Исходными данными для этих программ являются команды примитивов машинной графики. Это команды типа: 184
1 нарисовать отрезок, начертить окружность, пере- I ^естить спрайт, изменить цветовую гамму фона, по- I ^естить литеру. Программы формирования нового 1 кадра> анализируя параметры соответствующих 1 к0манд, вносят изменения в экранную память или I формируют ее заново. По той причине, что кодиров- I ка экранной памяти в очень большой степени зави- 1 сит от аппаратуры видеопроцессора, этот уровень программ является машинно-зависимым. Существуют несколько стандартов задания графических примитивов в памяти ЭВМ. Такие стандарты представляют собой своего рода машинно-независимый язык задания графических объектов. В настоящее время широко используется стандарт GKS, который начал разрабатываться в середине 70-х годов и в оригинале был ориентирован на векторные I дисплеи и на задание объектов плоской двумерной I графики. Использование машинно-независимых стан- ■ дартов в данном случае чрезвычайно важно. Дис- j плейная техника непрерывно развивается, меняются ! требования на представление информации в дисплей- | ной памяти видеопроцессоров, и каждый раз переде- 1 лывать пакеты графических программ в связи с по- j явлением новых видеоустройств затруднительно. Если пакеты графических программ ориентирова- I ны на стандартное представление объектов, то рабо- I та по программированию новых видеоустройств сведется лишь к изменению программ второго уровня — к разработке сравнительно несложных программ перекодировки стандартного описания графического j объекта согласно требованиям нового устройства. | Коль скоро представление графического объекта ( стандартизовано, исходя из этого описания, его можно выдать на графические устройства любого типа, подключая соответствующие программы перекодировки. I Наконец, третий уровень программного обеспечения связан с процедурами формирования динамической последовательности смены кадров или сюжета процесса визуализации. Он имеет дело с преобразованием графических объектов, их объединением, вращением, .уменьшением, компоновкой во времени и пространстве. Исходными данными для этих программ являются воображение и творчество пользователя. Операции с графическими объектами задаются на машинно-независимых языках. Эта часть поддержи- в Л. Н. Королев 18а
вается такими известными системами, как ГРДфДл (графический АЛГОЛ), ГРАФОР (графически ФОРТРАН). По существу, указанные системы пред* ставляют собой пакеты прикладных программ — ком плекс программных модулей, которые в конечном счете формируют последовательность простейщн* команд, графических примитивов. Во всех системах этого уровня есть, например, процедура, позволяющая вращать трехмерный объект и видеть это вращение в плоскости экрана. В системах имеются процедуры, позволяющие применять к графическим объектам аффинные преобразования, выводить на экран проекции рисунков при разных пространственных расположениях плоскости и т. д. В настоящее время разработка пакетов машинной графики превратилась в целое направление программирования, значение которого все больше и больше возрастает. Потребителями этих пакетов являются и физики-экспериментаторы, и геодезисты, и геофизики, и специалисты в области разработки систем автоматизации проектирования, и, наконец, мультипликаторы и кинематографисты. При разработке каждого из охарактеризованных выше уровней программного обеспечения машинной графики возникает своя проблематика, требующая собственной методики анализа и приемов решения, возникающих из этой проблематики задач. Проблемы, связанные с созданием алгоритмов и микропрограмм видеопроцессоров, диктуются техническими характеристиками дисплея, возможностями электроники и по своей сути являются инженерно- конструкторскими проблемами. Мы на них не будем останавливаться несмотря на то, что и в этой сфере возникает ряд важных и интересных задач, требующих усилий математиков и системных программистов. Проблемы второго уровня программного обеспечения, связанные с созданием программ, выполняющих (интерпретирующих команды)' примитивы машинной графики, требуют для своего решения усилий системных программистов-аналитиков, знающих, с одной стороны, характер функционирования аппаратуры, требования к кодировке экранной памяти и, с другой стороны, требования к набору примитивов машинной графики, к набору команд, связанному с прикладными задачами. Эта проблематика и задачи, вытекающие из нее, представляют специфический интерес для 186
сИстемных программистов. Более общий интерес представляют математические проблемы машинной рафики, возникающие в большом числе прикладных £дач науки, техники, проектирования производства. лбтее представление о возникающих здесь проблемах и задачах позволит читателю оценить их сложность и значимость и, возможно, вызовет интерес и попытку найти хорошие решения. Мы не сумеем в "той книге перечислить все проблемы, возникающие L приложений, - их количество все время растет, напоминая лавинообразный процесс, что отражает обычную ситуацию - решение одних задач порождает целый спектр новых. 8*
РАЗДЕЛ V МУЛЬТИМИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ, МНОГОМАШИННЫЕ КОМПЛЕКСЫ И СЕТИ ЭВМ $ 5.1. ТИПЫ ПАРАЛЛЕЛИЗМА В ОБРАБОТКЕ ДАННЫХ Многие чрезвычайно важные задачи научного и народнохозяйственного значения для своего решения требуют очень высокого быстродействия. Подсчитано, что для своевременной обработки данных со спутников, осуществляющих контроль окружающей среды, доставляющих информацию, необходимую для прогноза погоды, о ледовой обстановке, лесных по» жарах и т.. п., требуется суммарное быстродействие, исчисляемое миллиардами операций в одну секунду. Для того чтобы в приемлемое время спроектировать новый космический аппарат и выполнить математическое моделирование его прочностных и аэродинамических характеристик в условиях, близких к реальным, требуются ЭВМ с быстродействием, превышающим миллиард (109) высокоточных операций в секунду. В начале 80-х годов разработчики вычислительной техники стремились достичь быстродействия в 1 миллиард операций в секунду. В 90-х годах надеются достичь быстродействия в 10 миллиардов операций в секунду на одной вычислительной установке. Это стремление — не погоня за рекордами быстродействия, а необходимость удовлетворить насущным требованиям научно-технического прогресса. Как бы быстро не росло быстродействие элементной базы, удовлетворить этим требованиям в рамках традиционных структур вычислительных средств не представляется возможным. Единственный реальный путь достижения таких сверхвысоких быстродействий — объединение нескольких центральных про* цессоров в единую параллельно работающую систему. Технология производства больших интегральных схем достигла такого уровня, что позволяет на одном кристалле разместить достаточно сложные по своей логической организации и высокие по быстродейст- 188
Ito ™S?Pp™ ь»?*"™ длительной техники. Это открыло реальные возможности объединять « единую параллельно работающую системе coZ и даже тысячи процессорных элементов «тш и Несмотря на то что такие процессорные элементы каждый в отдельности не обладают максимально воз можной производительностью, запараллеливание их работы в единой системе может дать многократный выигрыш в общей производительности системы. Вычислительные системы, объединяющие в своем составе большое число процессорных элементов, выполненных на основе микропроцессоров, получили название мультимикропроцессорных систем. Для того чтобы использовать потенциальные возможности вычислительных систем, допускающих параллельную обработку, алгоритм решения задачи, подлежащей решению, должен быть распараллелен. К счастью, как правило, хорошо подвергаются распараллеливанию алгоритмы как раз тех задач, которые требуют для своего решения огромного быстродействия. Многие задачи гидродинамики приводятся к вычислительным разностным схемам, допускающим глубокое распараллеливание. Задачи линейной алгебры, связанные с решением систем линейных алгебраических уравнений, также хорошо распараллеливаются. Как мы знаем, многие задачи анализа изображений и распознавания образов решаются методами, допускающими параллельное выполнение операций над каждой клеткой изображения. Различаются несколько типов параллельной обработки информации, и эти различия существенны, так как структура современных параллельно работающих вычислительных систем соответствует каждая своему типу параллелизма. Рассмотрим некоторые из этих типов. Конвейерная параллельная обработка. Суть ее следует из самого названия. Вычислительная система в этом случае состоит из нескольких процессорных элементов: ПЭЬ ПЭг, ..., ПЭ„, каждый из которых выполняет свою специфическую функцию над данными, полученными от своего предшественника. Схематическая связь процессоров в конвейерной системе изображена на рис. 49. Здесь уместна аналогия с обычным заводским конвейером. Конвейерный принцип обработки реали- 189
во многих быстродействующих ЭВМ. В качест- «^процессорных элементов в них выступают такие отдельные функциональные устройства, как «сложи- тели», «вычитатели», «умножители». Входные данные f1dv пз2 пз3 ■**... -*■ пэ„ | Результат Рис. 49 Предположим, надо сосчитать скалярное произве- п дение двух векторов по формуле IT atb^ где at и bt — компоненты соответствующих векторов. Конвейер, состоящий из «умножителя» и «сложителя», справится с этой задачей в два раза быстрее по сравнению с машиной, выполняющей все действия последовательно. В самом деле, пока происходит умножение двух компонент вектора, «сложитель» в это время выполняет накапливание суммы. Операции умножения и сложения выполняются разными устройствами одновременно. Этот пример соответствует глубине конвейеризации, равной двум. В реальных вычислительных машинах глубина конвейеризации достигает нескольких десятков, а иногда и сотен. В том случае, когда речь идет о пооперационной конвейеризации, описанной выше, в качестве процессорных элементов используются комбинационные схемы, осуществляющие элементарные арифметико- логические операции, т. е. процессорные элементы сравнительно просты по своей структуре. Следует отметить, что впервые принцип конвейеризации в структурах ЭВМ был провозглашен советским ученым, академиком С. А. Лебедевым на Международной Дартмундской конференции в 1965 г. Правда, в то время он назывался принципом «водопровода», образно и четко отражая механизм такого рода параллелизма. Этот принцип был реализован в устройстве управления отечественной машины БЭСМ-6. Дешифрация и интерпретация команд в этой ЭВМ представляют собой многоэтапный процесс, требующий вычисления исполнительного математического 190
адреса, его преобразования в физический адрес, действий по выборке операнда и т. д. Глубина конвейеризации при анализе некоторых команд достигает в этой ЭВМ глубины, равной 8. Второй тип параллелизма, по принципу совпадающий с первым, называется макроконвейерным параллелизмом. Приставка «макро» указывает на то, что речь идет не о пооперационном конвейере, а о действиях более укрупненных, выполняемых в каждом узле. Реально такие системы организуются в виде цепочки центральных процессоров, каждый из которых решает достаточно крупный фрагмент одной задачи, передавая полученные результаты следующей ЭВМ и получая исходные данные от предыдущей. К типичным представителям этого класса систем относятся такие советские вычислительные системы, как макроконвейерная система, разработанная в Институте кибернетики АН УССР (ЕС-2701), и система МАРС, разрабатываемая в Сибирском отделении АН СССР. В качестве процессорных элементов в такого рода системах могут использоваться микропроцессоры, которые связаны каждый со своей локальной оперативной памятью, хранящей собственные программы и данные. Могут также использоваться центральные процессоры серийно выпускаемых ЭВМ. Обычно для того, чтобы можно было обмениваться результатами вычислений, процессорные элементы могут обращаться к общей памяти либо к общей магистрали передачи информации. В конвейерных системах процессорные элементы, как правило, выполняют различные функции, т. е. состоят из функционально неоднородных элементов. К третьему типу параллелизма относится вектор- ный, или матричный, параллелизм, назовем его «пространственным», параллелизмом, имея в виду ситуацию, когда с каждой точкой некоторого дискретного пространства связан свой процессор, независимо от других и параллельно с ними вычисляющий новые характеристики «своей» точки. Вычислительные системы, реализующие работу клеточного автомата, а такие существуют, относятся к этому типу. К нему же следует отнести некоторые типы векторных и матричных процессоров. Векторные и матричные процессоры относят к категории однородных вычислительных сред. Во всех 191
узлах такой системы располагаются одинаковые по типу процессорные элементы, выполняющие в каждый данный такт работы одинаковую команду, но с раз. личными данными, расположенными в локальной па. мяти каждого из них. Все вычислительные системы, реализующие тог или иной тип параллелизма, характерны тем, что несколько одинаковых или разнотипных разного уровня сложности процессорных элементов объединены в единую структуру. В зависимости от того, каким образом это объединение осуществлено, различаются типы их архитектур. § 5.2. ТИПЫ АРХИТЕКТУР ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ Сложилась следующая классификация типов архитектур вычислительных систем, состоящих из нескольких лроцессирующих элементов и характеризующих способ распределенной (.параллельной) обработки данных, реализованной в них. 1. Архитектура типа ОКМД (SIMD) расшифровывается как одиночный поток команд, множественный .поток данных. 2. Архитектура типа МКОД (MISD) — множественный поток команд, одиночный поток данных. 3. Архитектура типа МКМД (MIMD) — множественный поток команд, множественный поток данных. К архитектуре первого типа ОКМД относятся вычислительные комплексы, содержащие п процессорных элементов ПЭ/ и имеющие единое управление, генерирующее одинаковый поток команд для всех процессорных элементов. Каждый ПЭ,- работает со своей локальной памятью, и к тому же между собой они связаны возможностью обращения к информации, хранящейся в специальных регистрах ПЭ. Доступа непосредственно к адресуемой локальной памяти соседей в таких системах обычно нет. Системы могут образовывать одномерные и многомерные структуры. Типичным примером одномерной структуры является 8-(Процессорный модуль вычислительной системы ПС-2000, представляющий оригинальную отечественную разработку. Разработчиками этот модуль назван обрабатывающим устройством. Элементарные процессоры (ЭП), входящие в состав этого обрабатывающего устройства, объединены между собой общей 192
дойной управления, по которой синхронно на все ЭП поступает одинаковая команда из общей для всех ЭП памяти команд. В состав ЭП входят собственные адресные регистры, предназначенные для формирования адресов, собственная память данных и собственное управление. Управление ЭП, получая извне команду, дешифрирует ее и вычисляет адреса операндов, относящихся к своей локальной памяти. Кроме того, по общей шине управления в схемы управления каждого ЭП поступают некоторые признаки, определяющие условия выполнения поступившей извне команды. В частности, при сочетании некоторых признаков конкретный дроцессарный элемент может пропустить выполнение общей для ©сех команды. Важной структурной особенностью является возможность адресные регистры каждого ЭП заполнять различной по содержанию информацией. Поскольку адресные регистры используются для индексации и базирования адресов, то каждый ЭП может использовать операнды, имеющие исполнительные адреса, отличные от адресов, содержащихся в командах, и адресов по обращению к локальной памяти, используемых другими ЭП. Так можно строить различные конфигурации слоев памяти, используемых при выполнении одинаковых команд, поступающих на все ЭП одновременно. Блок-схема обрабатывающего элемента представлена на рис. 50. слои локальной памяти общая командная шина -С 03У~о AL_ ~3Z ш," /!0t\ • • • сальные ОЗУ 731 \пз7 т 03У1 IajL 1 обш, память команд данных Рис. 50 Слоем локальных запоминающих устройств называют совокупность физических адресов ПЭо, ПЭЬ..., ..., ПЭ7 операндов А0,АЬ... ,А7, которые используются при исполнении данной команды. Если во всех адрес- 193
ных регистрах процессорных элементов содержитСд одинаковая информация, то все Ац 1 = 0, 7, равны и этот слой представляет собой воображаемую прямую линию. Если адресные регистры элементарных пюо цессоров начинены различной информацией, то слой лредставляет собой ступенчатую линию. Это важно лри решении некоторых сложных задач. Для того чтобы локальное ОЗУ можно было бы начинять исходными данными и выводить результаты вычислений на внешние устройства, каждый процессорный элемент имеет выход на общую шину данных. Эта шина выходит из обрабатывающего элемента вовне. Реально она связана с мини-ЭВМ, к которой подключены внешние за/поминающие устройства и устройства ввода/вьивода. Каждый процессорный элемент имеет связь с соседним ПЭ и может считать и записать к себе в память информацию из специально выделенного для этих целей регистра арифметико-логического устройства соседнего процессорного элемента. Соответственно в системе есть команды, смысл которых можно выразить словами: «считать данные у соседа слава (справа)». Такая организация вычислительной системы позволяет ускорить решение задач, в которых встречаются фрагменты покомпонентных векторных вычислений. Например, если в задаче есть фрагмент, требующий сложения двух векторов, то сложение восьми компонент может быть выполнено одновременно и ускорение по сравнению с последовательным выполнением такого сложения будет восьмикратным. Другим классическим примером машины шла ОКМД является система ILLIAC-IV, которая в свое время относилась к классу самых высокопроизводительных систем. ИЛЛИАК-IV является примером двумерной структуры. Ее 64 процессорных элемента на логическом уровне представляют двумерную матрицу размерности 8X8. Каждый ПЭ имеет свою локальную память и, кроме того, связан с ближайшими четырьмя соседями. На рис. 51 изображена блок-схема вычислительной системы типа ИЛЛИАК-IV (кружочками обозначены элементы ПЭ). На все процессоры синхронно подается одинаковая команда из общей .памяти команд, и каждый ПЭ выполняет ее с использованием операндов из своей локальной памяти. В системе существуют специальные средства, позволяющие блокировать выполнение 194
°6^%lilv тл7Д* некот°РЬ1ми ПЭ системы. Система ИЛЛИАК-1У была предназначена для решения за- дач, сводящихся к решению разностных схем уравне- фффффффф фффффффф <1 фффффффф фффффффф фффффффф фффффффф <! фффффффф < П П A A A A j zzzzzzz^zzzzzza 7] общий поток \ команд общее истройстдо управления Рис. 51 ний в частных производных. Например, решение уравнения AU(x, #)=0 сводится к итерационной разностной схеме где верхний индекс указывает номер шага итерации. Очевидно, что решение такой задачи на машине типа ИЛЛИАК-IV может быть ускорено в 64 раза по сравнению с последовательным вычислением на однопроцессорной ЭВМ. Обратим внимание читателя на то, что указанный процесс мог бы выполняться на клеточном автомате с развитой арифметикой. К архитектуре вычислительных систем типа МКОД принадлежат мультипроцессорные комплексы с общей оперативной памятью. Типичным примером такой системы может служить система ЭЛЬБРУС. Ее несколько (до десяти) процессоров, каждый из которых работает по своей программе, имеют доступ к общей оперативной памяти (см. рис. 52). Тем самым система обслуживает несколько независимых потоков команд и имеет общее поле данных для всех этих различных потоков. Системы лодобного типа можно реализовывать на основе микропроцессоров, имеющих выход на общую шину, к которой подсоединено общее для всех ОЗУ данных и локальные 195
ОЗУ для хранения индивидуальных для каждого про. цессора программ. В использовании мультипроцессорных систем воз. никает целый -комплекс проблем, связанных с так называемым макрораспараллеливанием. Наибольший эффект применения такой архитектуры при решении Одщая оператибная память Выходы В сеть Рис. 52. Блок-схема вычислительной системы ЭЛЬБРУС одной задачи, разбитой на несколько параллельно выполняемых программ, получается в том случае, когда отсутствуют задержки во взаимном ожидании результатов вычислений, выполняемых на разных процессорных элементах. Однако добиться такого распараллеливания не так просто. Возьмем простейший пример. Пусть нам на такой системе следует выполнить алгоритм суммирования массива из N чисел, расположенных в общей памяти, система содержит п процессорных элементов. Разобьем наш массив на п подмаосивов, каждый раз- 196
\ „арности ~N/n. Каждому процессору зададим прог- сВОю задачу, просуммируем п результатов их работы Если #>п, то последний этап займет относительно кемного времени. Время, потраченное каждым про- цессорным элементом на свою долю суммирования будет различным, даже если исходный массив был разбит на (равные части. Так будет, если в каком-либо подмассиве окажется много нулевых элементов, на суммирование которых время не тратится. Последний этап «подведения» итогов можно завершить только в том случае, когда все процессоры окончили свою работу. Следовательно, те процессоры, которые раньше окончили свою работу, будут простаивать, уменьшая принципиально достижимый эффект (распараллеливания вычислений. В реальных задачах ситуации гораздо более сложны, «и организовать счет задачи так, чтобы все параллельные участки оканчивались бы одновременно, оказывается, очень трудно. Это вызывает эффект «деградации» в мультипроцессорных параллельно работающих системах: с ростом числа процессоров, включаемых в систему, относительный рост общей ее производительности происходит непропорционально медленно. На рис. 53 график демонстрирует это явление. щои$одитель-\ теть системы ^теоретически возможный рост реальный рост производительности чис/io профессоров Рис. 53 Мало того, возможны случаи, когда дальнейшее увеличение числа процессоров в системе приводит к уменьшению производительности. Теоретический анализ подтверждает такую возможность. Этот эффект затрудняет оценку общей производительности мультипроцессорных вычислительных систем. Она в очень сильной степени зависит от того круга задач, которые на такой системе решаются. В редких случаях задачу удается так распаралле- 197
лить, чтобы полностью использовать все возможности системы. Эффект деградации хорошо моделируется следующей простой формулой. Пусть вычислительная система с параллельной обработкой состоит из п процессорных элементов. Наибольший выигрыш от -работы такой системы получает, ся в том случае, если все п процессоров заняты по- лезной работой и не простаивают. За коэффициент выигрыша S примем отношение времени счета задача на одном процессоре ко времени счета той же задача системой из п процессоров. Предполагаем, что система состоит из процессоров одинакового быстродействия и сравнение ведется с одним процессором того же быстродействия. Очевидно, что максимальное значение коэффициента 5 равно п (л-<кратный выигрыш). Это происходит в том случае, когда задачу удалось оптимальным образом распараллелить. Но если этого не удалось сделать, то какая-то часть процессоров будет во время счета простаивать. Долю параллельно работающих процессоров обозначим а. Соответственно формула для коэффициента ускорения будет выглядеть так: 5(а, я) = I v ' ' (1 — а)+а/п При а=1, что означает 100%-ную занятость всех процессоров, значение 5 становится равным п и достигает максимального значения. При а = 0, что означает отсутствие параллелизма, значение S равно 1, т. е. принимает минимально возможное значение. График функции S(a, n) при фиксированном большом п говорит о том, что малые изменения а в области его значений, близких к 1, влекут за собой резкие изменения .значений функции S(a, n). Иными словами, незначительные изменения в " проценте занятости а процессоров влекут значительные потери в производительности по сравнению с максимально возможной. Что это действительно так, говорит опыт применения мультштродессо/рных систем для решения практических задач: даже небольшие отклонения от оптимального распараллеливания влекут за собой потери в теоретически достижимой производительности, особенно если число процессоров велико. К архитектуре типа МКМД — множественный поток команд, множественный поток данных — относятся многомашинные комплексы, состоящие из впол- 198
не автономных ЭВМ, объединенных между собой линиями связи. В рассмотренных выше типах архитектур ОКМД и МКОД отдельные процессорные элементы, объединенные в вычислительную систему, не могут считаться автономными ЭВМ, так как они либо лишены своей собственной оперативной памяти (МКОД), либо обязаны все выполнять одинаковые команды, назначаемые общим устройством управления (ОКМД). Когда речь идет о многомашинных комплексах, предполагается следующее. Каждая ЭВМ имеет свою собственную оперативную память, срои собственные внешние устройства, способные решать задачи по своей собственной программе. Все они связаны каналами обмена информацией. К этому типу архитектур относятся региональные, территориальные вычислительные сети, локальные вычислительные сети, отдельные неоднородные вычислительные комплексы. Мультипроцессорные системы типа ОКМД и МКОД называются сильно связанными вычислительными системами. Этот термин показывает, что процессорные элементы существенно связаны в своей работе либо общей оперативной памятью, либо общим для всех них управлением. В противовес этому вычислительные комплексы типа МКМД называют слабо связанными системами, характеризуя этим термином полную автономию в работе каждого вычислительного узла этой системы, возможность безболезненного изъятия из системы процессорного элемента или подключения к такой системе новой ЭВМ без останова обычной работы многомашинного комплекса. Часто такие комплексы объединяются на общее поле внешних запоминающих устройств. Многомашинные комплексы предоставляют средства для распределенной обработки информации. .В этом случае каждая ЭВМ комплекса решает свой круг достаточно независимых задач и по запросу извне может переслать результаты в другие точки распределительной системы. § 5.3. СЕТИ ЭВМ Более подробно остановимся на понятии сети ЭВМ. По своему функциональному назначению они делятся на сети общего и специального назначения. 199
К сетям специального назначения относятся, на* пример, вычислительные сети для резервирования авиационных билетов, сети, объединяющие вычислительные машины банков, — их можно назвать финансовыми сетями, вычислительные сети, обслуживающие спутники связи и многие другие. К сетям общего назначения относят, как правило, сети, объединяющие вычислительные центры научно- исследовательских институтов и позволяющие вестк обмен информацией разнородного характера между машинами, в частности передачу программ из одних центров в другие, располагающие более мощными ЭВМ. Очень важным элементом работы вычислительных сетей общего назначения является обмен между локальными банками данных, содержащими полезную информацию по различным разделам науки и техники, накапливаемую в вычислительных центрах, обслуживающих те или иные научные .направления. Такое деление на специализированные сети и сет общего назначения достаточно условно. Абонентом сети общего назначения может стать любой институт, любой научный сотрудник вне зависимости от рода его профессии. Абонентами специализированных сетей являются только учреждения и служащие вполне определенной сферы деятельности. Вне зависимости от своего функционального назначения сети ЭВМ подразделяются на локальные и территориально распределенные. Под локальной сетью понимают объединение машин, расположенных в одном здании (соседних зданиях), принадлежащих одному уч|реждению, институту, подчиненных некоторому собственному ритму и режиму .работы. Под территориально распределенными вычисли- тельными сетями понимают вычислительные центры,, отдельные машины и отдельные терминалы, расположенные в разных городах, странах и даже на разных континентах, объединенных единой системой передачи данных, обеспечивающей дистанционный доступ иа одной точки — абонентского пункта — к любой другой точке сети. В частности, в территориально распределенные сети включаются и локальные сети отдельных учреждений. Обычно локальные многомашинные комплексы п сети включают в свой состав неоднородные ЭВМ разной производительности и назначения. Тогда весь 200
объем по обработке данных можно достаточно од. зумно распределить между ними, учоты^аГпотен?и альные возможности каждой ЭВМ п«т потенци- принципа построения может служить^^Jf™ НЕПРА факультета ВМиК Mil ОнГобъедшяеП своем составе ЭВМ разных типов: СМ 3/4, Электр ника, БЭСМ-6, спецпроцессоры обработки изображе ний. Естественно, общую работу целесообразно между машинами разделить так, чтобы первичную обработку данных выполняли «малые» машины сети, а трудоемкие этапы счета — крупные ЭВМ сети. К первичной обработке, в частности, можно отнести этапы, связанные с трансляцией и редактированием программ, с формированием текстовых и других файлов и т. п. Эту работу, выполняемую с участием человека, сидящего за терминалом, вполне можно поручить недорогим малым микроЭВМ и персональным компьютерам. Когда программа синтаксически отлажена, исходные данные для нее приготовлены, все это можно передать для исполнения крупной ЭВМ (речь идет о крупной счетной задаче). На мини-ЭВМ можно также возложить работу по подготовке результатов вычислений к выводу на графопостроители, на экраны дисплея. Это обеспечивает более эффективное использование вычислительных машин, увязанных в сеть. Другим примером локальной сети может служить школьный компьютерный класс. Рабочие места школьников включены в общую сеть передачи данных и связаны по приему и передаче с рабочим местом учителя. Как мы знаем, (рабочие места школьников и учителей представляют собой персональные ЭВМ. Примером большой территориально распределенной сети общего назначения может служить одна из первых сетей такого рода ARPA. Вычислительные машины и вычислительные центры этой системы расположены не только на территории США, но и во всех западноевропейскую странах, в Австралии и Африке. В начале своего развития в сеть ARPA входили вычислительные центры только крупнейших американских университетов и научно-исследовательских лабораторий. Затем эта сеть начала быстро развиваться за счет включения в свой состав все новых и новых абонентов. Был период, когда сеть ежедневно увеличивалась на одну ЭВМ. Главное назначение этой сети состояло в обеспечении дистанционного доступа к суперЭВМ, которыми располагали некоторые 201
университеты и лаборатории. В " частности, в состав сети входила машина ILLIAC-IV, которая упоминалась выше. Чзрез сеть обеспечивается доступ к таким ЭВМ, как Сгау-1, -2, Cyber 203, 205, обладающих очень высоким быстродействием и соответственно очень дорогим, владеть которыми не под силу даже крупным лабораториям. В Советском Союзе создается территориально распределенная академсеть, которая объединит вычислительные центры крупных академических институтов, расположенных в Москве, Ленинграде, Киеве, Минске, Новосибирске и ряде столиц союзных республик. Сети ЭВМ различаются своей топологией. Известны три основных вида топологии: типа «кольцо», типа «звезда» и типа «произвольная сеть» (рис. 54). абонентский пункт Кольцо Щ процессоры Збезда Рис. 54. Топология сетей Сеть Обычно при объединении в кольцо в системе все ЭВМ более или менее равноправны в использовании аппаратных средств межмашинной передачи данных. В топологии типа «кольцо» очень часто объединяются персональные ЭВМ, комплектующие учебные классы. Их объединяет общая магистраль передачи данных, пересылающая информацию от одной ПЭВМ к другой последовательным кодом. Соответственно для входа в такую сеть каждая ПЭВМ должна быть снабжена интерфейсным модулем сопряжения с магистралью. Магистраль с последовательным интерфейсом — наиболее дешевый способ передачи данных, хотя и сравнительно медленный. Он применя- 202
\ ется в локальных сетях, подобных учебным классам, где не требуется высокая скорость обмена. Топология типа «звезда» применяется также при организации локальных сетей. На концах «лучей» в этом случае располагаются терминальные ЭВМ, относящиеся к классу мини-ЭВМ или к классу персональных ЭВМ. Такая топология типична для локальных сетей в системах автоматизации проектирования. Терминальные ЭВМ, снабженные дисплеями и другими графическими устройствами, представляют собой автоматизированные рабочие места проектировщиков. Центральная ЭВМ в этом случае является как бы хозяином всего проекта в целом. В функции ее программ входит согласование тех изменений, которые выдаются проектировщиками со своих рабочих мест, и увязка «их в единое целое. Вообще, объединение терминалов в систему коллективного дистанционного доступа чаще всего производится по топологии «звезда». В качестве системы передачи данных в подобного рода локальных сетях используются низкочастотные линии связи с последовательным и редко параллельным интерфейсом. Существуют и территориально распределенные сети, организованные по этому принципу. Как правило, это сети специального назначения. Топология типа «произвольная сеть» характерна для больших территориально распределенных сетей ЭВМ. В этом случае система передачи данных между объединениями ЭВМ и вычислительными центрами представляет собой в свою очередь подсеть из специализированных связных мини-ЭВМ. Функции ЭВМ, принадлежащих к подсети передачи данных, сводятся к регулированию потоков передаваемой по сети информации, выбору маршрута передачи, контролю за правильностью передачи и за состоянием системы передачи в целом. Иначе говоря, каждая мини-ЭВМ подсети осуществляет функции своего рода перевалочного пункта, пункта приема—передачи. В территориально распределенных сетях принята система передачи данных с коммутацией пакетов. В системах пакетной передачи сообщение (обычно файл), которое надлежит передать от одного центра к другому, разбивается на части-пакеты. В зависимости от состояния сети передачи данных эти пакеты могут быть доставлены в пункт назначения по различным маршрутам. В пункте назначения из полу- 203
генных пакетов формируется исходное сообщение (файл). Такой способ предполагает, что в сети передачи данных между двумя любыми точками существуют альтернативные пути доставки сообщений. Преимущество такого метода состоит в том, что увеличивается надежность передачи, так как есть возможность обойти участки, вышедшие из строя по ' каким-либо причинам. Кроме того, каждый узел сети держит пакет в своей памяти до тех пор, пока не получит уведомление, что пакет получен соседним узлом, а если такого уведомления нет, то он может послать пакет по другому маршруту. Существуют строгие правила оформления пакетов, лредопределяющие однозначность понимания каждым узлом подсети от кого и кому направить пакет. Каждый пакет содержит необходимую информацию, которая позволяет конечному получателю сформировать все сообщения и проконтролировать правильность передачи, отсутствие утери информации. Как уже было сказано, в узлах подсистемы передачи данных расположены мини-ЭВМ, которые осведомлены о состоянии своих соседей, свободных маршрутах, участках, выбывших из строя. Эта информация необходима для правильного выбора маршрута пакета. Для получения такой информации мини-ЭВМ узлов ведут постоянный обмен служебными сообщениями. Таким образом, в сети передачи данных по каналам идут сообщения разного назначения. Мини-ЭВМ должны уметь разобраться в этом потоке, отсортировать информацию, раз/делив ее на служебную и пакетную. Они должны уметь буферизовать сообщения, динамически выделяя для этого участки своего оперативного запоминающего устройства. Программное обеспечение мини-ЭВМ узлов передачи данных весьма специфично, оно обеопечивает эффективное выполнение только этих функций. Очевидно, что надежность узлов коммуникации сообщений должна быть очень высокой. Достигается это, в частности, тем, что мини-ЭВМ способны продолжать работу даже в случае отключения общего энергоснабжения. В этом случае автоматически производится переключение на питание от аккумуляторных батарей* 204
I § 5.4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 1 СЕТЕВОГО ВЗАИМОДЕЙСТВИЯ Территориально распределенные вычислительные сети общего назначения и локальные сети дают воз- I ложность дистанционного доступа к ЭВМ со многих абонентских пунктов. Соответствецно существует понятие теледоступа и телеобработки, которые, с точки зрения .пользователя, означают возможность со своего рабочего места, оборудованного клавиатурой и дисплеем, сформировать программу решения задачи, сформировать исходные данные и запустить ее на счет, выбрав для этого одну из ЭВМ, включенных в сеть. При этом пользователя не очень заботит то, каким образом его задание на счет (программа) и его данные окажутся в ЭВМ, .расположенной, возможно, за тысячи километров от абонентского пункта. Но для того чтобы послать свою задачу на счет, пользователь должен знать некоторые определенные правила: он должен тем или иным способом указать идентификатор ЭВМ в сети, должен знать и указать ! идентификатор той системной программы, выбранной ЭВМ, /которая примет его задание, поместит в очередь. Кроме всего прочего, дистанционное задание должно содержать обратный адрес, по которому сле- j дует возвратить результаты счета. Очевидно, чтобы все ЭВМ сети, доступные абонентам, могли «понимать», что делать с сообщениями-заданиями, полученными по каналам дистанционной связи, правила 1 оформления сообщений должны быть стандартизованы в рамках всей сети. Правила, регламентирующие порядок взаимодействия абонентов сети, называются ; сетевыми протоколами. I Пользователь, желающий переслать некое содержательное сообщение в адрес какой-либо ЭВМ сети, должен прежде, всего убедиться, имеется ли связь с ! данной ЭВМ. Для этого необходимо послать служеб- | ное сообщение зацроса на связь и, только получив | ответ, что связь установлена, можно начать процесс взаимодействия абонентского пункта с избранной | ЭВМ. По окончании своей работы пользователь дол- 1 жен не забыть сформировать сообщение о том, что сеанс закончен. Заметим, что инициатором взаимодействия с ЭВМ сети не обязательно должен быть пользователь-чел о- лзек. В некоторых сетях существенно иметь возмож- 205
ность общения между программами, работают на разных ЭВМ, связанных каналами передачи * ных. Общение между прикладными программами If** ламентируются правилами, называемыми проток**** ^ ми прикладного уровня. Эти правила находятся **** прямой зависимости от смысла взаимодействия пп * кладных .программ между собой, и, обычно, не суш«Г ствует единых формализованных правил, регламен тирующих такое взаимодействие. Например, можно себе представить две программы, работающие' на раз. ных ЭВМ, ведущих обработку телеметрической информации, поступающей со спутника в зоне видимости радиоаппаратуры, связанной с каждой ЭВМ в отдельности. Если эти зоны видимости не пересекаются, необходимость объединения полученной информации возникает только в определенные промежутки времени. Следовательно, время сеансов взаимодействия определено внешними условиями, не зависящими от хода вычислительного процесса. Другой пример. Пусть две различные ЭВМ занимаются решением частей какой-либо крупной задачи, например методом итераций. Необходимое число итераций непредсказуемо. Чтобы обменяться результатами счета, двум программам надо установить факт окончания обработки каждой из частей задачи. Для этого нужно уметь запрашивать друг от друга информацию о текущем состоянии. В зависимости от содержания задачи характеристики состояния могут выражаться самыми различными способами: текущим значением какой-либо переменной, взаимным отношением некоторых переменных одной ч другой программы, состоянием вектора булевых переменных и т. д. Смысл взаимодействий в первом и во втором примере совершенно различен, соответственно различаются и правила взаимодействий. Тем не менее в этих взаимодействиях можно найти нечто общее, а именно: в том и другом случае речь идет о синхронизации взаимодействующих процессов. Поскольку существуют достаточно универсальные методы, обеспечивающие синхронизацию, есть надежда, что протоколы этого высокого логического уровня удается стандартизировать для многих случаев. В современных ЭВМ любое взаимодействие между программами осуществляется под контролем и через посредство операционных систем. 206
В частности, когда пользователь набрал свое задание (программу) на терминале и нажал клавишу запуска в решение, под управлением операционной сцстемы производится целая серия действий, скры- I тЫх от глаз пользователя: постановка текста задачи ! в буфер ввода, трансляция, сборка, загрузка в выделенное место оперативной памяти, интерпретация J команд языка заданий. j Сетевое взаимодействие между прикладными прог- ' раммами или между пользователем и удаленной ЭВМ осуществляется также под контролем операционных систем. Тем самым возникает уровень общения операционных систем ЭВМ, объединенных в сеть. Этот уровень общения регламентируется своими правилами, своим протоколом взаимодействия. С точки зрения операционной системы каналы связи, объединяющие абонентские пункты в сеть, можно рассматривать как внешние вводные/выводные устройства. Чтобы операционные системы взаимодействующих ЭВМ могли «понимать» друг друга, должен быть стандартизован способ представления данных, содержащихся в сообщении. Получив сообщение извне, системные программы ОС должны однозначно выделить из него адрес получателя, адрес отправителя и некоторые другие реквизиты сообщения, зависящие от способа транспортировки сообщений. Как мы уже знаем, ОС взаимодействуют с внешними устройствами с помощью механизма портов назначения и портов отправления. Протоколами взаимодействия ОС определяются объем буферов оперативной памяти, связанных с портами приема—передачи, правила оформления служебных сообщений на запрос порта, его освобождение, правила, определяющие форму сообщений об отказах на связь. В неоднородных сетях ЭВМ, объединяющих разнотипные ЭВМ, возникает проблема, связанная с тем, что операционные системы разных машин могут значительно различаться. В этом случае над каждой ОС строятся соответствующие сетевые надстройки, или препроцессоры, которые общесетевые стандарты данных преобразуют в форму, приемлемую для конкретной ОС. Дополнение операционных систем программами сетевого взаимодействия является работой, требующей высокой квалификации системного программиста. 207
Часть операционной ЭВМ, включенной в сеть, за- нимающаяся приемом и передачей сообщений, называется транспортной станцией. Программы транспортной станции организуют работу портов, прием сообщений, их отправку и налаживание логической связи между портами взаимодействующих ЭВМ. Термины «логическая связь», «логический, или виртуальный, канал» подчеркивают независимость этих понятий от физического способа передачи сообщений по реальным каналам связи и физического способа их организации. Вычислительные машины объединяются в сеть реальными каналами передачи данных, использующими разные физические принципы транспортировки информации: проводную связь, спутниковую связь, радиорелейную связь, оптоволоконную связь и др. С каждой сетью ЭВМ, будь то малая локальная или большая территориально-распределенная, связана подсеть передачи данных. Эта подсеть может быть совсем простой, представляющей собой низкочастотные телеграфные провода, по которым все данные передаются медленными телеграфными посылками. Подсеть может быть очень сложной, включающей в свой состав специальные сетевые процессоры, спутники, связи, участки оптоволоконной связи. Вне зависимости от его физического воплощения существует понятие канала как абстрактной среды передачи данных. Канал может быть выделенным, жестко связывающим двух абонентов, всегда готовый выполнить функцию транспортировки сообщений. Каналы могут быть коммутируемыми, связывающими двух абонентов на период сеанса связи, а затем перекоммутируемыми на связь других абонентов. В качестве функциональных возможностей по транспортировке данных каналы как среда передачи характеризуются возможностью передавать данные только в одном направлении — они называются симплексными, лередавать данные попеременно то в одном, то в другом направлении — они называются полудуплексными, и, наконец, каналы, способные передавать информацию в обе стороны одновременно — они называются дуплексными. Дуллексные каналы наиболее часто используются в сетях ЭВМ, и в самой простой физической реализации они представляют собой два провода, по одному из которых идет прием* по другому — передача. 208
I При программировании программ, управляющих ] передачей данных, эти характеристики каналов при- ' ходится учитывать. При организации передачи данных необходимо учитывать многие требования и факторы, часто противоречивые. В некоторых сетях на лервое место выд- I вигается требование высокой достоверности. Соот- . ветственно каждая посылка сообщения снабжается | дополнительной контрольной информацией, позволяющей проверить правильность приема в пункте назначения. Простейший способ контроля — это снабжение каждого -передаваемого байта дополнительным контрольным разрядом, позволяющим проводить проверку на четность. Такой контроль фиксирует одиночную ошибку, но не фиксирует двойных ошибок. При более жестких требованиях к достоверности все сообщение делится на порции одинаковой длины и каждая порция кодируется кодом Хемминга. Это позволяет фиксировать двойные ошибки и автоматически исправлять одиночные. Кодирование и декодирование производится либо специальными логическими схемами, -либо программами. Приемы повышения надежности приводят к росту Накладных расходов по объему передаваемой информации и тем самым снижают допустимый темп передачи. Обычно разработчики способов передачи ищут не- ' который компромисс, позволяющий при обеспечении должной надежности получить достаточно эффективное использование линий связи. Линии связи, реализующие каналы, — одно из самых дорогих устройств при создании больших вычислительных сетей, причем ! чем более высокоскоростные каналы используются, ! тем дороже становится стоимость всей сети передачи данных. Особенно дорого обходится высокоскоростная I связь, основанная на использовании коаксиального кабеля, допускающего темп передачи свыше 100000 I битов в секунду. 5.4.1. Способы передачи данных в сетях. В сетях I 3BM приняты два главных способа передачи данных J от одного абонента к другому. Первый называется методом коммутации каналов. I Такой метод используется в обычной телефонной связи. Когда вы набираете номер, то реально происходит на нескольких иерархически построенных подстанциях нужная коммутация, возникает так называемый 209
составной канал, на время сеанса связывающий дВух разговаривающих. В сетях ЭВМ, связанных коммутируемыми каналами, определены правила организаций работы каналов, близкие к тем, которые существуют в телефонии. Второй, наиболее в настоящее время распространенный способ передачи данных называется методом коммутации сообщений. Если попытаться и здесь применить известную аналогию, то ближе всего подходит служба по пересылке почтовых отправлений. Письмо, содержащее индекс и адрес, в этом случае может быть доставлено получателю самыми разными маршрутами и разными видами транспорта. В почтовой службе существуют определенные правила препровождения писем. В сетях с коммутацией сообщений также существуют стандартизованные правила препровождения сообщений и правила выбора подходящих маршрутов. Когда говорят о системах с коммутацией сообщений, обычно предполагают, что подсеть передачи данных включает в свой состав так называемые сетевые процессоры. Каждый сетевой процессор, представляющий собой микроЭВМ, обычно связан каналами связи с несколькими соседними сетевыми процессорами. Получив сообщение, предназначенное какому-то абоненту, сетевой процессор должен определить дальнейший маршрут его следования, т. е. определить какому соседу целесообразно его направить. Алгоритм выбо* ра маршрута основан на анализе таблицы маршрутов, имеющейся в каждом сетевом процессоре. Эта таблица отражает топологию связей между сетевыми процессорами и абонентами сети. Во-первых, сообщение должно быть направлено только к такому соседу, от которого в принципе можно добраться до получателя. Во-вторых, если есть несколько возможностей для пересылки сообщения, следует выбрать того соседа, связь с которым в данный момент времени менее всего загружена. Естественно, что у каждого сетевого процессора должна иметься текущая информация о загруженности каналов, об обрывах в каналах. Эта информация устанавливается путем опроса состояний каналов и состояний соседей. В оперативной памяти сетевого процессора выделяются буфера. Это позволяет по одному каналу передавать пакеты, принадлежащие разным сообщениям. Сетевой процессор собирает в одно целое паке- 210
ту, принадлежащие одному сообщению, налаживает связь с соседним сетевым процессором, т. е. организует логический канал связи и передает пакеты- дальше. Режим датаграмм отличается от режима коммутации пакетов, тем что все датаграмы «ищут» свой независимый путь к получателю и могут прийти к нему не в порядке их отправления, а в любом произвольном. Получатель должен собрать датаграммы а единое целое в соответствии с их порядковыми номерами, содержащимися в реквизитах датаграммы. 5.4.2. Понятие о протоколах взаимодействия в сетях. Для того чтобы унифицировать алгоритмы управления каналами, транспортировки и облегчить включение в сеть новых абонентов, Международный консультативный комитет по телеграфии и телефонии (МККТТ) выработал рекомендации по правилам взаимодействия в вычислительных сетях, по протоколам взаимодействия. Согласно этим рекомендациям протоколы делятся на 7 уровней. Логически самый высокий уровень регламентирует связь прикладных программ в вычислительной сети. Следующий уровень протоколов регламентирует взаимодействие операционных систем и представление данных в сети. Следующий, более низкий уровень относится к правилам организации сеансов связи и выходу из сеансов связи, т. е. регламентирует правила обращения к услугам сети и отключения от сети. Три следующих уровня протоколов регламентируют правила работы алгоритмов, управляющих транспортировкой информации, работой портов и транспортных станций (транспортный уровень и сетевой уровень), регламентируют правила управления каналами (канальный уровень). Наконец, последний уровень протоколов регламентирует правила физического подключения абонентов к сети. Из рассмотренных выше уровней протоколов первые два нижних уровня реализуются в основном аппаратными средствами, более высокие уровни —программными средствами. Разработка программ и микропрограмм, управляющих сетевым взаимодействием, — сфера деятельности системных программистов. Создание же протоколов передачи данных и алгоритмов их реализации неизбежно требует участия математиков. Разработка методов создания корректирующих кодов, учитываю- 211
щих особенности конкретных линий связи, требуем привлечения специалистов в области дискретной мате- матики. Определение оптимального размера кодо! граммы в системах передачи данных с перезапросом сводится к решению довольно сложной оптимизационной задачи. Если, например, кодограмму выбрать большой по длине, то служебная информация займет в ней относительно немного места и линии связи будут более эффективно использоваться для передач содержательной информации. Однако если линия- связи не очень надежна, то при обменах будут часто возникать повторные посылки длинных сообщений — появятся большие накладные расходы. В то же время если кодограмму выбрать короткой, то затраты времени на повторные посылки по перезапросам уменьшатся, но в процентном отношении увеличится служебная информация и накладные расходы за счет этого возрастут. Задача сводится к отысканию минимума функции накладных расходов, зависящей от принятой длины кодограммы и характеристик надежности линий связи. Здесь требуются совместные усилия специалистов в области теории вероятности, дискретной математики и исследования операций. Следует также учесть, что методы контроля кодограмм должны быть реализованы так, чтобы эта реализация не давала задержек. Иначе возникнут новые накладные расходы за счет времени, затрачиваемого* ЭВМ на контроль и анализ полученного сообщения.
Литература 1. Микропроцессоры / Под ред. Л. Н. Преснухина. М.: Высшая школа, 1986. 2. Брусенцов Н. П. Микрокомпьютеры. М.: Наука, 1985. 3. Г о л о в к и н Б. А. Параллельные вычислительные системы^ М.: Наука, 1980. 4. Г и л м о р Р. Введение в микропроцессорную технику. М.: Мир, 1984. 5. Д а м к е Д. Операционные системы микроЭВМ. М.: Финансы и статистика, 1985. 6. Ф о л и С, Ван Д э м. Основы интерактивной машинной графики. Т. 1, 2. М.: Мир, 1985. 7. Уокерли Дж. Архитектура и программирование микроЭВМ. М.: Мир, 1984. 3. Королев Л. Н. Микропроцессоры к персональные компьютеры. М.: Знание, 1986.
Учебное издание Королев Лев Николаевич МИКРОПРОЦЕССОРЫ, МИКРО- И МИНИ-ЭВМ Зав. редакцией С. И. Зеленский Редактор Е. Д. Егорушкина Художественный редактор Ю. М Добрянская Технический редактор Л1 Б. Терентьева Корректоры Н. В. Картышева, Л. С. Клочкова ИБ № 3103 -Сдано в набор 10.11.87. Подписано в печать 28.07.88. Л-36800, Формат ^84ХЮ87з2. Бумага тип. № 3. Гарнитура литературная. Высокая печать. Усл. печ. л. 11,34. Уч.-изд. л. 11,27 Тираж 40 000 экз. Заказ 244. Изд. № 374 Цена 35 коп. Ордена «Знак Почета» издательство Московского университета. 103009, Москва, ул, Герцена, 5/7. Типография ордена «Знак Почета» изд-ва МГУ. 119899, Москва, Ленинские горы.
Магазины — опорные пункты по изучению спроса и распространению книг Издательства МГУ 117296, Москва, Ломоносовский проспект, 18 магазин № ПО «Университетская книжная лавка» (для москвичей) 252001, Киев, ул. Крещатик, 44 магазин № 12 «Книги» 630090, Новосибирск, ул. Ильича, 6 магазин № 2 Магазин № 93 «Книга — почтой» принимает предварительные заказы на книги Издательства МГУ и вы* сылает литературу иногородним покупателям. Адрес магазина: 117168, Москва, ул. Кржижановского, 14 магазин № 93 «Книга — почтой».
В 1989 году в Издательстве Московского университета выходит книга Программно-аппаратные средства и математическое обеспечение вычислительных систем: Сборник/ Под ред. Л. Н. Королева, В. М. Репина. — 13 л. Сборник посвящен актуальным вопросам исследования, создания и развития программно-аппаратных средств и математического обеспечения систем коллективного пользования ЭВМ для автоматизированных систем обучения и научных исследований. Особое внимание уделяется технологии передачи, обработки и отображения данных, терминальным ЭВМ, интеллектуализации вычислительных средств, электронно-модульной аппаратуре и микропроцессорной технике и их математическому обеспечению. Для специалистов в области электронно-вычислительных средств автоматизации.