ENT1 GATE SNF STO2,REFUS




ENTER STO2

ADVANCE X$TSRV,FN$EXP

LEAVE STO2

OUT TERMINATE 1

REFUS TRANSFER.1,,COUT

ADVANCE 250,FN$EXP

TRANSFER,ENT1

COUT SAVEVALUE NREF+,1

TRANSFER,OUT

 

Рис. 15

 

В начале моделирования элементы всех определенных матриц уста-

навливаются равными 0. Для установки отличных от 0 начальных значе-

ний отдельных элементов матриц используется оператор INITIAL, имею-

щий следующий формат:

INITIAL MX$ имя (a,b),значение

INITIAL MXj (a,b),значение

Здесь имя и j - соответственно имя и номер матрицы; a и b - номера

соответственно строки и столбца, задаваемые константами; значение -

присваиваемое элементу матрицы начальное значение, задаваемое также

константой.

Для изменения значений элементов матриц в процессе моделирова-

ния служит блок MSAVEVALUE (сохранить значение элемента матрицы),

имеющий следующий формат:

Имя MSAVEVALUE A,B,C,D

В поле A указывается имя или номер матрицы, после которого,

как и в блоке SAVEVALUE, может стоять знак + или -. В полях B и C

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

изменяемый элемент матрицы. В поле D указывается величина, исполь-

зуемая для изменения заданного элемента матрицы. Например:

MSAVEVALUE 5,3,2,X1

MSAVEVALUE MTAB+,P$ROW,P$COL,1

 

Матрицы имеют единственный СЧА с названием MX, ссылка на кото-

рый записывается в следующем виде:

MX$ имя (a,b)

MXj (a,b)

Здесь имя и j - соответственно имя и номер матрицы; a и b - номера

соответственно строки и столбца, задаваемые константами или ссылка-

ми на СЧА параметров транзактов. Например:

MX5(2,1)

 

MX$MTAB(P$ROW,P$COL)

 

Блоки для работы со списками пользователя

 

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

событий, то при большом количестве таких транзактов симулятор

расходует слишком много времени на просмотр этого списка с целью

выбора очередного транзакта для продвижения. Для экономии машинного

времени заблокированные транзакты целесообразно помещать в так на-

зываемые списки пользователя и оставлять их там до тех пор, пока не

выполнятся условия, позволяюшие дальнейшее продвижение этих тран-

зактов. Кроме того, размещение ожидающих транзактов в списках поль-

зователя позволяет организовать различные дисциплины очередей, от-

личные от дисциплины "раньше пришел - раньше обслужен", реализован-

ной в списке текущих событий.

Списки пользователя представляют собой некоторые буферы, куда

могут временно помещаться транзакты, выведенные из списка текущих

событий. В отличие от списков текущих и будущих событий транзакты

вводятся в списки пользователя и выводятся из них не автоматически,

а в соответствии с логикой модели с помощью специальных блоков.

 

Для ввода транзактов в список пользователя служит блок LINK

(ввести в список), который может быть использован в двух режимах:

условном и безусловном. Ограничимся рассмотрением лишь безусловного

режима, в котором блок LINK имеет следующий формат:

Имя LINK A,B

В поле A задается имя или номер списка пользователя, в который

безусловным образом помещается транзакт, вошедший в блок. Поле B

определяет, в какое место списка пользователя следует поместить

этот транзакт. Если в поле B записано ключевое слово FIFO, то тран-

закт помещается в конец списка, если LIFO - в начало списка. В дру-

гих случаях транзакты упорядочиваются в соответствии с вычисленным

значением поля B, где обычно записывается один из СЧА транзактов,

таких как PR, M1 или P. Если поле B содержит СЧА PR, то транзакты

упорядочиваются по убыванию приоритета. В остальных случаях произ-

водится упорядочение по возрастанию указанного СЧА.

Например, блок

LINK 5,FIFO

помещает транзакты в список пользователя с номером 5 в порядке их

поступления в блок. Блок

LINK BUFER,P$ORDER

помещает транзакты в список пользователя с именем BUFER, упорядочи-

вая их по возрастанию параметра с именем ORDER.

Условия, при которых транзакт помещается в список пользовате-

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

разработчиком модели. Например, направить транзакт в список пользо-

вателя в случае занятости устройства можно так, как показано на

рис. 16. Если устройство с именем FAC4 занято, то блок GATE не

впускает транзакт в блок SEIZE, а направляет его в блок LINK с име-

нем WAIT, и транзакт вводится в конец списка пользователя с именем

BUFER.

 

....................

GATE NU FAC4,WAIT

SEIZE FAC4

....................

WAIT LINK BUFER,FIFO

....................

 

Рис. 16

 

Для вывода одного или нескольких транзактов из списка пользо-

Вателя и помещения их обратно в список текущих событий служит блок

UNLINK (вывести из списка), имеющий следующий формат:

Имя UNLINK X A,B,C,D,E,F

В поле A указывается имя или номер списка пользователя. Поле B

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

зователя транзакты. В поле C указывается число выводимых транзактов

или ALL для вывода всех находящихся в списке транзактов.

Операнды в полях D и E вместе со вспомогательным операндом X

определяют способ и условия вывода транзактов из списка пользовате-

ля. Если поля D и E пусты, то и операнд X не используется, а тран-

закты выводятся с начала списка пользователя. Если поле D содержит

ключевое слово BACK, то поле E и вспомогательный операнд X не

используются, а транзакты выводятся с конца списка. В остальных

случаях значение поля D интерпретируется как номер параметра тран-

зактов, находящихся в списке пользователя, а из списка выводится

заданное число тех транзактов, у которых значение этого параметра

по отношению к значению операнда в поле E удовлетворяет условию,

заданному вспомогательным операндом X. Операнд X принимает те же

значения, что и в блоке TEST.

В поле F указывается имя блока, куда переходит транзакт, выхо-

дящий из блока UNLINK, если из списка пользователя не выведен ни

один транзакт. Если это поле пусто, то выводящий транзакт переходит

в следующий блок независимо от количества выведенных транзактов.

Например, блок

UNLINK 5,NEXT,1

выводит из списка пользователя с номером 5 один транзакт с начала

списка и направляет его в блок с именем NEXT. Блок



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: