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

книги из ГПНТБ / Ландау И.Я. Применение ЦВМ для проектирования ЦВМ

.pdf
Скачиваний:
7
Добавлен:
23.10.2023
Размер:
7.98 Mб
Скачать

Упрощенная блок-схема транслятора показана на рис. 2-10. Блок

/ вводит

программу

с перфокарт, .редактирует текст и записывает

его на магнитный барабан.

Блок

2 выделяет

очередное слово .исходной программы, т. е.

последовательность букв и цифр до ближайшего разделительного

знака (выделяет очередной

идентификатор .или константу).

это

Блок 3 определяет

вид

оператора по его первому слову. Если

оператор

описания

типа

переменных, обработка его выполняет­

ся

одним из

блоков 47, которые выделяют каждую из описанных

в операторе переменных и заносят необходимые данные в ТР и ТП. Блок 8 производит печать текста программы и ошибок, обна­ руженных синтаксическим контролем при трансляции очередного

оператора.

 

 

 

 

После обработки всех операторов описания

типа (которые

на­

ходятся в начале программы) завершается

формирование

ТР

и

ТП (блок 9) н начинается трансляция остальной программы.

 

Если первое слово очередного оператора

не КОНЕЦ (что озна­

чает окончание текста программы), управление

передается

блоку

12, который выполняет обработку этого оператора. В противном случае управление передается блоку 11, который определяет значе­ ния внутренних меток (второй проход).

На рис. 2-11 показана блок-схема блока «Трансляция оператора».

Для

обработки операторов каждого

вида имеется

свой блок (на

рис.

2-11 показаны лишь некоторые

из них — блоки

2—4). Выбор

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

Блок 7 формирует оттранслированную программу па магнитном барабане.

Если первый разделитель «:», то выделенное слово является меткой; блок 6 заносит его в список меток. Затем выделяется сле­ дующее слово (блок 9) и производится анализ разделителя.

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

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

60

рование) не требует повторных вводов. Наличие ката­ лога позволяет вызывать п заносить программы в би­ блиотеку по их названию и защищать программы от случайных повреждении. Архивариус печатает на АЦПУ протокол работы. Таким образом, разработчик всегда знает, какие :програм,мы имеются в библиотеке, а также вносились ли в них исправления и какие именно. С по­ мощью архивариуса можно также вывести па печать текст любой из программ (без трансляции).

Программа после трансляции еще не готова для мо­ делирования: ее надо предварительно «склеить» с не­ обходимыми подпрограммами и з'аменить в последних формальные параметры на фактические. Эту работу выполняет компоновщик. Вызвав указанную (предвари­ тельно оттранслированную) программу из библиотеки, компоновщик по ТП определяет нужные для ее работы подпрограммы, вызывает их из библиотеки и подставля­ ет в них названия фактических параметров. Если какието из подпрограмм в свою очередь требуют новых под­ программ—-эта процедура повторяется. Из ТП всех вызванных программ формируется таблица ссылок (ТС), в которой указаны названия всех подпрограмм и их размещение в памяти. Затем компоновщик формирует таблицу регистров модели (ТРМ) путем объединения ТР всех подпрограмм и распределяет память для логи­ ческих шкал.

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

отдельные

подпрограммы

переносятся

компоновщиком

на

магнитный барабан

чем делается отметка

в

ТС) и

вызываются оттуда

во время

моделирования

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

61

Здесь приводится весьма поверхностное описание транслятора, архивариуса и компоновщика; рассмотре­ ние устройства этих программ выходит за рамки данной книги. Читатель, интересующийся этими вопросами, мо­ жет найти такие сведения в литературе по системному программированию [Л. 11].

В программе моделирования используется метод ин­ терпретации, что приводит к сравнительно невысокой скорости моделирования (около 50 операторов в секунду на ЦВМ'БЭСМ-4). Однако применение компилирующей программы вызывает значительное ограничение возмож­ ностей языка (разрядность переменных не должна пре­ вышать разрядности машинного слова той ЦВМ, на ко­ торой производится моделирование; надо исключить такие операторы, как ЗАДЕРЖКА, БЛОКИРОВКА; ограничить длину программы и т. д.). В результате это­ го язык не только потеряет универсальность, но и станет зависимым от той ЦВМ, на которой он реализуется.

Основное отличие программы моделирования от рас­ смотренной выше программы интерпретирующего типа состоит в имитации параллельной работы различных блоков моделируемого устройства, т. е. в реализации операторов БЛОКИРОВКА, ЗАДЕРЖКА, ПУСК, ЖДАТЬ, ЧЕРЕЗ.

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

При выполнении операторов ПУСК, ЧЕРЕЗ из на­ званий блоков (подпрограмм) формируются команды передачи управления с возвратом: управление передает­ ся к началу соответствующего блока (подпрограммы), а в его выход (оператор КОНЕЦ) заносится команда возврата в основную программу.

Устроена программа моделирования следующим об­ разом: выделяется очередной оператор модели и опреде­ ляется его вид, после чего управление передается блоку обработки соответствующего вида операторов. Блок об­ работки выполняет оператор (вычисляет значение выра­ жения, заводит шкалу времени т. д.) и программа пере­

62

ходит к выделению следующего оператора. Если в глав­ ной программе встретился оператор КОНЕЦ, управле­ ние передается блоку «таймер», который производит пе-

Рнс. 2-12. Блок-схема программы моделирования.

реход к следующему такту моделирования (опрашивает шкалы времени, выполняет операторы ВВОД, ПЕЧАТЬ и т. д.). Упрощенная блок-схема программы моделиро­ вания показана на рис. -2-12.

2-9. СИНТЕЗ ЛОГИЧЕСКИХ СХЕМ

Моделирование работы схем — не единственное при­ менение языка ФОРОС (и других языков такого типа): такой язык может служить удобным средством обще­ ния для разработчиков ЦВМ, позволяющим наглядно и однозначно описать структуру и функционирование лю­ бого устройства (подобно тому, как языки программи­ рования используются не только для подготовки про­ грамм для ЦВМ, но и для публикации алгоритмов).

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

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

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

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

щие

программы разработаны. Рассмотрим

принципы

построения таких программ иа примере

системы

ALERT [Л. 26].

 

Входной информацией для системы ALERT является

описание проектируемой машины на языке

высокого

уровня

(«архитектурный план» машины); ALERT пере­

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

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

Система ALERT разрабатывалась для того, чтобы возможно больший объем рутинной работы конструкто­

ра переложить на ЦВМ, оставив для

человека

только1

1 Для

простоты изложения в этом параграфе

вместо

языка

Айверсона

используются аналогичные понятия

языка

ФОРОС,

64

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

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

Выполняемая системой ALERT работа состоит в ряде последовательных преобразований входного текста, кото­ рые называются: трансляция, построение дешифраторов; макрогенерация, последовательностный анализ, опреде­ ление триггеров, управляющие цепи, объединение и рас­ ширение (рис. 2-13).

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

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

добавления

его к начальному

адресу массива. В языке описания

схем массив

представляет не

совокупность чисел, а логическую

структуру (регистр или набор регистров), а индекс переменной озна­

чает выбор одного

из элементов этой структуры. Такой выбор вы-

5 -5 0 4

65

Рис. 2-13. Блок-схема системы ALERT.

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

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

66

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

После макрогенерации определяется синхронизация микропро­ грамм (если она не была задана разработчиком в архитектурном плане). Это делает программа «Последовательностный анализ», ко­ торая просматривает каждую микропрограмму архитектурного пла­ на по отдельности и делит ее на группы операторов таким образом, чтобы все операторы одной группы выполнялись параллельно в од­ ном такте. В качестве точек деления выбираются операторы пере­ дачи управления (ИДИ, ПУСК, ЕСЛИ), а также те операторы при­ сваивания, которые изменяют значение какой-либо из ранее упоми­ навшихся в данной группе переменных. Полученные точки деления

L заносятся в таблицу событий; в дальнейшем они используются для генерации схем управления.

Программа «Определение триггеров» вписывает в текст специ­ альные операторы присваивания, описывающие элементы памяти (на предыдущих этапах не делалось различия между комбинационными схемами и схемами с памятью). Для каждого триггера записыва­ ются два уравнения — для входа установки в 1 и входа установ­ ки в 0. Это делается для тех переменных, которые специально от­ мечены разработчиком в архитектурном плане, а также переменных, значения которых используются более чем в одном такте.

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

ратора.

Текущее значение

счетчика

событий

определяет номер точки

' деления

в таблице событий и тем

самым ту

группу

операторов ми­

кропрограммы, которая должна выполняться

в данном такте. Таким

образом,

число разрядов

счетчика

событий

равно

S = Fx Inn, где

/г— длина таблицы событии данной микропрограммы,

а Г* обознача­

ет наименьшее целое число,

не меньшее чем х.

Пока содержимое счет­

чика событий некоторой микропрограммы не равно 0, он продолжает считать импульсы тактового генератора и 'микропрограмма выпол­ няется; после завершения микропрограммы (или при выполнении оператора СТОП) п ее счетчик событий заносится 0. При выполне­ нии операторов передачи управления в счетчик событий заносится номер нужной точки деления.

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

Просматривается текст и, если в нем имеются одинаковые опе­ раторы, то они исключаются.

Производится оптимизация комбинационных схем.

Если входные сигналы триггеров описаны более чем в одном операторе присваивания, то все такие операторы сливаются в один оператор ИЛИ.

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

5*

67

в виде одного оператора присваивания, их необходимо расписать (количество операторов при этом будет равно количеству разрядов регистра), изменив соответственно названия входных и выходных переменных. Так, например, оператор

Rl (1 : 5) = R2(1 : 5) * ‘ А (5)‘;

должен быть расписан в виде пяти операторов:

R 1(1)= R 2(I) * А;

R 1(2)= R 2(2) * А;

R1 (3) =R 2(3) * А;

R1(4) = R2 (4) * А;

R1 (5) =R 2(5) * А;

Это выполняется программой «Расширение», которая одновре­ менно переводит текст в необходимый внешний формат.

2-10. МИНИМИЗАЦИЯ ЛОГИЧЕСКИХ СХЕМ

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

k

1=1

где г,- — число элементов типа г в схеме, га,-— цена одного такогоэлемента и k — количество типов. Цена здесь — некоторый коэффи­ циент, который может отражать как стоимость элемента, так и дру­ гие особенности элементов разных типов (например, их надежност­ ные свойства).

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

левых

функций — метод Квайна [Л. 27]- Пусть заданная система

физических элементов состоит из

однотипных элементов И, ИЛИ,

НЕ, а

логическая функция задана

в совершенной дизъюнктивной

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

)ункции f

называются конъюнкции {а,-}, полученные из термов.

&,-}/ последовательным применением к ним тождества

г

( b j А у ) V ('э A r ) = b; .

08

После получения простых импликаит f из них строятся так на­ зываемые тупиковые выражения, т. е. такие комбинации, дизъюнк­ ция которых эквивалентна f, причем удаление хотя бы одной импликанты нарушает эту эквивалентность. Можно показать, что все мини­ мальные формы / находятся среди ее тупиковых выражений, поэтому для решения задачи достаточно выбрать те из тупиковых выражений

f, в которых содержится наименьшее число знаков

V.A."-

Ана­

логичным образом решается задача минимизации

и в том

случае,

если f представлена в совершенной конъюнктивной нормальной фор­ ме (СКИФ).

Поскольку для минимизации логической функции необходим пе­ ребор большого числа вариантов, практическое применение подобных методов к достаточно большим схемам невозможно, так как для этого требуется слишком много машинного времени. Кроме того, получение минимальной ДНФ или КНФ для некоторой функции не означает, что для этой же функции нельзя получить более минималь­ ное выражение. Действительно, ДНФ (КНФ) описывают двухступенные комбинационные схемы в базисе И, ИЛИ; многоступенные схе­ мы (если применяемая система элементов позволяет их строить) являются более экономными по числу элементов. Покажем это па примере (заимствованном из (Л. 28]).

Минимальная ДНФ

 

 

f — (x lF Х г,

Х в) = ( Х2 А Ха А *4А х«) V (^-1 А х г А х $) \J

V (^1 А х% А -"''в) V (^i А л’з А х 4 А х $ )

 

содержит 13 знаков

А>

V - Однако

возможна запись той же функции

в скобочной форме:

 

 

 

 

f (Si> Л'г. •••■ -K-e) = ((-^i

А х а) V (-''з A

X.t)) А ((-’Л A Xs) V (л'г V

ло))'

которая содержит только 7 знаков A> V -

выра­

Известны алгоритмы получения

абсолютно минимальных

жений заданной функции, однако практически реализовать их нель­ зя из-за слишком большого числа операций: число операций т лишь на последнем этапе получения абсолютно минимального выражения функции п переменных оценивается [Л. 29] как

2=2"-1 + 1 < т < 2'~п.

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

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

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

69

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