ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.06.2024
Просмотров: 87
Скачиваний: 0
Упрощенная блок-схема транслятора показана на рис. 2-10. Блок
/ вводит |
программу |
с перфокарт, .редактирует текст и записывает |
его на магнитный барабан. |
||
Блок |
2 выделяет |
очередное слово .исходной программы, т. е. |
последовательность букв и цифр до ближайшего разделительного
знака (выделяет очередной |
идентификатор .или константу). |
|||
это |
Блок 3 определяет |
вид |
оператора по его первому слову. Если |
|
оператор |
описания |
типа |
переменных, обработка его выполняет |
|
ся |
одним из |
блоков 4—7, которые выделяют каждую из описанных |
в операторе переменных и заносят необходимые данные в ТР и ТП. Блок 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 |