Программа на языке диаграмм причинно-следственных связей (ПСС-программа) *.sr |  |
В файлах *.sr содержатся программы на языке диаграмм
причинно-следтсвенных связей (ПСС-программы). Эти программы создаются
моделирующими процессорами и содержат информацию о ходе моделирования схемы.
Во время моделирования на каждом МодПр создается свой раздел ПСС-программы.
После завершения моделирования разделы автоматически собираются в один файл.
ПСС-программа состоит из последовательности команд. Каждая команда
записывается в отдельной строке.
Команды ПСС-программы объединены в разделы. В одном разделе содержатся команды
одного МодПр. Раздел начинается с установки переменной Processor.
Значение этой переменной соответствует имени процессора, который записывал
этот раздел ПСС-программы.
Команды ПСС-програмы в пределах одного раздела приводятся в порядке их
появления в реальном времени. Команды следующего процессора начинаются с
команды установки переменной Processor, которая задаёт новое имя
процессора.
В зависимости от настроек в проекте МодПр и от типа загруженной схемы, в
ПСС-диаграмме имена элементов и имена узлов схемы могут задаваться либо
символическими именами, либо порядковыми номерами.
Содержание
Синтаксис команд ПСС-программы
Общий синтаксис команд ПСС-программы представлен на рисунке:
<realtime> <thread> <command> [<arg1>[ <arg2>[ <arg3>]]]
где:
<realtime> - физическое время момента
добавления команды в ПСС-программу. Это целое число, которое показывается
количество миллисекунд, прошедших с момента начала моделирования до момента
добавления этой компнды.
<thread> - имя потока, который произвёл запись.
<command> - имя одной из четырёх рассмотренных ниже команд.
<arg1>, <arg2>, <arg3> - параметры команды.
Смысл и назначение этих параметров зависит от самой команды.
Потоки моделирующего процессора
-
S
Сервисный поток.
Имя произошло от английского слова “service”.
В этом потоке получаются сообщения из сети, в этом потоке выполняются
функции интерфейса МодПр. При использовании консервативного протокола
синхронизации в этом потоке выполняется обработка маркера.
Это основной поток, который создаётся
автоматически при запуске программы.
-
P
Вычислительный поток.
Имя произошло от английского слова “process”.
В этом потоке выполняется координатор процесса моделирования,
в нём производится работа с локальным списком событий, вычисления значений
сигналов на выходах элементов. В этом же потоке производятся откаты
при использовании оптимистических протоколов синхронизации.
Команды ПСС-программы
-
P <name> <val>
Изменить значение переменной.
Имя этой команды сложилось исторически. Более-менее достоверных фактов,
указывающих на причины выбора именно этого имени, не сохранилось. Есть
предположение, что это имя перекочевало из старых версий ПСС-программ, в
которых не было чёткого разделения команд на типы и единственная
более-менее похожая на установку значения переменной команда в старой
версии ПСС-программы называлась P - установить имя
процессора. В таком случае P - это первая буква английского
слова “processor”. Сейчас устанавливается много разных переменных, а не
только имена процессоров, но имя команды осталось старое.
<name> - имя переменной. При построении ПСС-диаграммы
пользователи могут указывать, какие из переменных следует показывать на
ПСС-диаграмме.
<val> - новое значение переменной
На ПСС-диаграммах значения переменных отображаются на осях
соответствующего процессора.
-
E <type> <val>
Внутреннее событие на процессоре.
Е - от английского слова “event” (событие).
<type> - тип события.
При построении ПСС-диаграммы пользователи
могут указывать, какие типы событий показывать на ПСС-диаграмме.
<val> - значение события.
Примером внутреннего события может быть добавление и извлечение из
очереди. Тогда «добавить» и «извлечь» - типы событий, а значения,
которые были добавлены или извлечены - значения этих событий.
На ПСС-диаграммах внутренние события отображаются на оси соответсвующего
процессора, между значениями переменных до и после наступления этого
события.
-
S <proc> <type> <val>
Отправить сообщение по сети другому процессору.
S - от английского слова “send” (отправить).
<proc> - имя процессора - получателя этого сообщения.
<type> - тип сообщения.
При построении ПСС-диаграммы пользователи
могут указывать, сообщений каких типов показывать на ПСС-диаграмме.
<val> - значение сообщения.
Примером сообщения может быть сообщение о событии или сообщение-маркер.
Тогда «событие» и «маркер» - типы сообщений, а информация о том, какое именно
событие и какая информация хранится в маркере - это значение сообщения.
На ПСС-диаграмме отправленные сообщения отображаются под или над осью
процессора, с которого это сообщение было отправлено.
-
R <proc> <type> <val>
Получить сообщение по сети от другого процессора.
R - от английского слова “receive” (получить).
<proc> - имя процессора - отправителя сообщения.
<type> - тип сообщения.
При построении ПСС-диаграммы пользователи
могут указывать, сообщений каких типов показывать на ПСС-диаграмме.
<val> - значение сообщения.
На ПСС-диаграмме полученные сообщения отображаются под или над осью
процессора, который это сообщение получил. Если в ПСС-программе
существует команда об отправке сообщения, соответствющего данному, то
эти два сообщения будут соединены синей линией.
Полученное сообщение считается соответствующим отправленному, если
совпадает тип и значение сообщения, а также соответствуют имена
процессора-отправителя и процессора-получателя.
На ПСС-диаграммах события получения сообщения всегда отображаются правее
соотвтствующего события отправки сообщения.
Пример команды ПСС-программы представлен на рисунке:
0 S P Processor P1
Эта команда означает, в течение 0 ms после начала процесса моделирования
сервисный поток установил значение переменной Processor, равное
P1.
Переменные ПСС-программы
-
LVT <ts>
Локальное виртуальное время изменилось и стало равным ts.
Версии КПМ: последовательный, консервативный, оптимистический.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
LVT.
-
Processor <name>
Установить имя процессора.
Версии КПМ: последовательный, консервативный, оптимистический.
Отключить запись этой переменной в ПСС-программу нельзя.
Каждый процессор начинает свой раздел ПСС-программы с указания своего
имени путём установки значения этой переменной.
-
SE.CI.CC.<proc> <ts>
Канальные часы для канала связи с процессором <proc>
изменили свое значение и стали показывать время <ts>.
Версии КПМ: консервативный.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SE.
-
SE.CI.LVTH <ts>
Изменился горизонт расширения локального виртуального времени и стал
равным <ts>.
Версии КПМ: консервативный.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SE.
Горизонт расширения может расширяться в двух случаях: при изменении
показаний канальных часов, либо при получении специального сообщения
от подсистемы восстановления из состояния тупика.
-
SE.Color <bool>
Цвет процессора.
Значение «ложь» соответствует красному цвету, значение «истина» - белому.
Версии КПМ: консервативный с маркером.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SE.
В красный цвет процессор окрашивается после обработки события или
отправки/получения сообщения о событии. В белый цвет процессор
окрашивается после получения маркера.
-
SE.Executing <bool>
Эта переменная принимает значение «ложь», если процессор находится в
состоянии тупика и не обрабатывает события.
Версии КПМ: консервативный.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SE.
Используя значения этих переменных, можно установить, какое количество
времени процессор занимался полезными вычислениями, а сколько времени
он простаивал.
-
SE.FinID <id>
Эта переменная записывается только на процессоре-инициализаторе
завершения процесса моделирования.
<id> - идентификатор последнего отправленного сообщения
Fin.
Версии КПМ: консервативный.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SE.
Процесс моделирования считается завершенным, если на
процессор-инициализатор пришло сообщение
Fin с этим идентификатором.
-
SFSM.Suspend.<name> <bool>
Эта переменная принимает значение “1”, когда на входах элемента
<name> изменились значения сигналов, а на выходах
значения сигналов еще не обновлены.
Версии КПМ: последовательный, консервативный, оптимистический.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SFSM.Suspend.
Когда сигналы на выходах пересчитаны в соответствие с новыми сигналами
на входах, эта переменная снова принимает значение “0”.
-
SFSM.Values.<name> <val>[@<ts>]
В узле схемы <name> сигнал принял значение
<val>.
Момент вируального времени
<ts> указывается, если отключена запись значения
переменной LVT.
Версии КПМ: последовательный, консервативный, оптимистический.
Для записи этой переменной в ПСС-программу, в
проекте АПМ следует установить свойство
SFSM.Values.
Последняя модификация: 28.12.06 12:48 q Не проходите мимо! Оставьте Ваш комментарий в форуме! >>>
Внимание! Копирование любых материалов с этого сайта без письменного согласия авторов запрещено!
(c) Yuri V. Ladyzhensky, DonNTU
(c) Yuri V. Popoff, DonNTU, popoff.donetsk.ua, style.donetsk.ua
2006
|
|