Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Лекция 6. Механизмы продвижения модельного времени

Реальные объекты являются динамическими системами. Они функционируют во времени, в них протекают определённые процессы, которые можно представить чередой сменяющих друг друга состояний. Время является непременным атрибутом таких систем и, следовательно, его надо уметь моделировать наряду с другими параметрами.

При моделировании реальные параметры объекта заменяются модельными. Это касается и реального времени tр: в ходе моделирования оно представляется некоторым искусственным (системным) временем, которое обычно называют модельным временем, и обозначают tm..

Существуют два классических способа продвижения модельного времени: "принцип Dt" и "принцип dz".

Рассмотрим их особенности на конкретном примере, показанном на рис.1.

 

В реальном объекте протекает некий процесс, представляющий собой цепочку событий E1...E7 (E – от слова Event - событие). Событие - это любое изменение состояния системы, например переключение триггера из "1" в "0" или увеличение содержимого счётчика с приходом очередного счётного импульса. Событие считается мгновенным и по этой причине на временной оси оно отображается точкой. В общем случае события могут появляться в произвольные моменты времени.

Принцип Dt весьма прост. Ось времени разбивается на равные временные интервалы (такты) длительностью Dt. Следовательно, модельное время может принимать только дискретные значения, кратные этому временному интервалу: Dt, 2Dt, 3Dt и так далее. Моделирующая программа (моделятор) продвигает модельное время в соответствии с формулой:

НЕ нашли? Не то? Что вы ищете?

tm := tm + Dt.

На деле это означает, что моделятор является циклической программой, которая в течение одного цикла своей работы обрабатывает один такт модельного времени длительностью Dt. Для регистрации модельного времени в программе создаётся соответствующая переменная - счётчик модельного времени T (модельные часы), который просто считает количество выполненных циклов (T:=T+1).

В начале моделирования этот счётчик сбрасывается в нулевое состояние (T:=0), а затем его содержимое увеличивается на "1" с каждым циклом работы моделятора: (T := T+1). Таким образом, переменная T показывает текущее модельное время, которое движется скачками одинаковой длины Dt (подобно секундной стрелке на часах) от "0" до Tmax. Величина Tmax задаётся пользователем и определяет конечное время моделирования.

Длительность такта Dt также является прерогативой пользователя и для синхронных цифровых устройств обычно составляет половину периода синхронизации.

Разрешённые временные отметки никак не привязаны к моментам появления реальных событий в объекте, поэтому последние приходится искусственно передвигать на границы тактов, вынужденно искажая реальную картину. На рис.1 показано, что каждое реальное событие "привязываются" к левой границе того такта, в пределах которого оно в действительности произошло. Понятно, что принятое соглашение может быть другим: реальное событие с тем же успехом можно перенести на конец того такта, в котором это событие произошло.

Основное (а, возможно, и единственное) достоинство принципа Dt заключается в простоте его машинной реализации. Про недостатки следует поговорить подробнее.

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

Много процессорного времени тратится на обработку "пустых" интервалов (рис.1). Их число резко возрастает при попытке более точно смоделировать реальные события, так как для этого надо уменьшать длительность такта Dt.

Между тем, если в реальном объекте не происходит никаких событий (изменений), то состояние его остаётся неизменным. А раз так, то нет никакой необходимости моделировать объект в промежутках между соседними событиями - ничего нового мы не получим.

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

Принцип dz реализует только что описанный механизм продвижения модельного времени. Перед началом моделирования счётчик модельного времени сбрасываются в "0" (tm := 0) и задаётся начальное состояние моделируемого объекта Z0 (рис.1). Затем моделятор отыскивает ближайшее будущее событие (на рис.1 - это событие E1) и переводит стрелку модельных часов на время свершения этого события (tm := tm1). Время tm1 и событие E1 становятся текущими.

Моделятор имитирует реакцию объекта на событие E1, что может привести к появлению новых событий. Затем модельное время передвигается на ближайшее следующее событие E2 (tm := tm2) и цикл работы моделятора повторяется вновь. Понятно, что "расстояние" между соседними событиями может быть произвольным, поэтому шкала модельного времени получается неравномерной.

Таким образом, модельное время, продвигаемое по принципу dz, определяется по простой формуле:

tm := tближ , если время вычисляется в абсолютных единицах,

tm := tm + Dtближ , если время вычисляется в относительных единицах.

В этих формулах tближ - ближайшее будущее событие, по отношению к текущему модельному времени, а Dtближ - "расстояние" между текущим и ближайшим будущим событиями.

Во многих работах, посвящённых имитационному моделированию больших систем, состояния объекта обозначают через Zi, а скачкообразные (релейные) изменения состояний - через dzi (рис.1). По этой причине событийный механизм управления временем называют принципом dz или принципом особых состояний. Особые состояния - это, на мой взгляд, не очень удачное название. На самом деле под ними следует понимать особые точки процесса, в которых происходят события, ведущие к скачкообразному (dzi) изменению состояний объекта.

Результаты сравнения рассмотренных принципов управления модельным временем приведены в таблице 1.

Таблица 1

Принцип Dt

Принцип dz

Модельное время не "привязано" к реальным событиям. Оно движется само по себе, не обращая внимания на происходящие в объекте процессы.

Модельное время "опирается" на события, то есть временные отметки "привязаны" к моментам наступления реальных событий.

Шкала модельного времени tm равномерна. Время движется шагами одинаковой длины Dt :

tm := tm + Dt

или

T:=T+1

tm - счётчик модельного времени, модельные часы;

Dt - длительность такта;

Шкала модельного времени tm не равномерна. Время движется скачками разной длины, равной "расстоянию" между соседними событиями:

tm := tближ

или

tm := tm + Dtближ

tm - модельные часы;

tближ - время наступления ближайшего будущего события;

Dtближ - "расстояние" между текущим и ближайшим будущим событиями.

Моменты появления событий при моделировании искажаются. Их приходится "привязывать" к разрешённым временным отметкам Dt, 2Dt, 3Dt, ... , то есть к границам тактов.

Моменты появления событий при моделировании не искажаются.

Так как время наступления события фактически округляется до длительности такта Dt, то возникает систематическая погрешность метода, которая может достигать величины Dt.

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

Нарушаются причинно-следственные связи.

Не нарушаются причинно-следственные связи.

Последовательные события в пределах одного такта неразличимы и будут отображаться как одновременные.

Адекватность воспроизведения последовательных событий не искажается, как бы близко друг к другу они не находились.

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

Временные задержки в структурных элементах моделируются естественным образом.

Непроизводительно (вхолостую) тратится машинное время на обработку "пустых" тактов.

"Холостые" циклы работы моделятора отсутствуют. Эффективность алгоритма гораздо выше.

На рис.2 показана последовательность действий при подготовке реальных сигналов для моделирования по принципу Dt. Сначала ось времени разбивается на одинаковые интервалы длительностью Dt. Сверху эта длительность ограничена одним совершенно необходимым условием: в пределах такта любой сигнал должен переключаться не более одного раза. В противном случае фронт и спад сигнала будут перенесены на начало одного и того же такта, и длительность импульса станет равной нулю.

На рис.2,а показаны временные диаграммы работы двоичного суммирующего счётчика с последовательным переносом. Входной сигнал CLOCK поступает на вход счётчика, который находился в состоянии "7" (Q1=Q2=Q3=1, Q4=0).

Счётчик должен переключиться в состояние "8" (Q1=Q2=Q3=0, Q4=1). При последовательном переносе один триггер управляет другим и на временных диаграммах отчётливо видны задержки при смене состояния каждого триггера. Причинно-следственные связи для наглядности показаны пунктирными стрелками. Триггеры срабатывают один за другим, начиная с младшего разряда счётчика.

При моделировании длительности фронтов и спадов сигналов игнорируются, и они представляются мгновенными событиями C1...C9 (рис.2,б). Задержки распространения сигналов в элементах представляются чистыми задержками, и, к сожалению, при моделировании по принципу Dt воспроизводиться не будут, потому что все переключения в пределах такта будут перенесены на его начало (рис.2,в). Последовательные события становятся параллельными и причинно-следственные связи теряются.


Реальное, модельное и машинное времена

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

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

Понятно, что для адекватного моделирования между реальным и модельным временем должно быть установлено определённое соотношение - масштаб Mt. Это постоянное число, которое может принимать значения как меньше, так и больше единицы. При Mt = 1 моделирование выполняется в реальном масштабе времени. При Mt < 1 моделирование выполняется в замедленном, а при Mt > 1 - ускоренном темпе. Итак, между названными временами существует пропорциональная зависимость:

tm = Mt * tp.

В аналоговых вычислительных машинах (теперь это музейная редкость) природа переменных tp и tm одинаковая - обе переменные непрерывные.

В цифровых ЭВМ переменная tm может быть представлена только как дискретная величина. В этом случае необходимо выбрать единицу дискретного времени. Её обозначают через Dt и называют квантом времени (временным шагом). Фактически это разрешающая способность по времени при моделировании: последовательные события, "расстояние" между которыми меньше Dt, будут восприниматься как одновременные.

Не следует путать (или отождествлять) модельное время tm с машинным tэвм. Машинное (процессорное) время - это реальное физическое время, которое требуется на прогон имитационной модели. Можно промоделировать поведение какой либо динамической системы в течение нескольких лет (модельное время) всего за несколько секунд (машинное время). Чаще, правда, ситуация оказывается противоположной, например на моделирование работы микропроцессора i8086 на интервале в 100нс требуется более одной секунды машинного времени.

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

Чтобы не нарушалась хронологическая последовательность событий в моделируемом объекте, надо иметь какой-нибудь механизм имитации параллельных процессов. Обычно это делается так: модельное время останавливается ("замораживается") до тех пор, пока одно за другим не будут обработаны все кратные события. Такой механизм называют псевдопараллельной обработкой, потому что процессы протекают параллельно в модельном времени (оно остановлено) и обрабатываются последовательно в машинном времени. При этом события в модельном времени отображаются как мгновенные (они обозначаются точкой на оси времени tm), тогда как в машинном времени они конечны (моделирование реакции системы на событие требует определённого процессорного времени).

Связь между модельным tm и машинным tэвм временами представлена в графическом виде на рис.3.


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

Перед началом моделирования составляется календарь (очередь) будущих событий, в котором все события сортируются в хронологическом порядке. Счётчик модельного времени (модельные часы) устанавливается в "0" и запускается моделятор.

Он выбирает из очереди будущих событий ближайшее (на рис.3 это событие D1) и устанавливает модельные часы на время свершения (наступления) выбранного события (tm := tD1). Моделируется реакция системы на событие D1. При этом могут появиться новые события, которые моделятор должен включить в календарь событий, соблюдая хронологический порядок. На обработку события D1 будет затрачено определённое машинное время.

Таким образом, при обработке события D1 модельное время фиксировано (событие в модельном времени мгновенно), а по координате tэвм рабочая точка непрерывно перемещается, пока не закончится обработка реакции объекта на событие D1. После этого модельное время "оживает" ("размораживается") и моделятор передвигает стрелку модельных часов на ближайшее следующее событие (на рис.3 это событие C1): tm := tC1.

Кратные (одновременные) события, например C2 и D2 на рис.3, обрабатываются моделятором похожим образом. Модельное время останавливается, пока не будет обработан весь список кратных событий.

Заметим, что последовательность их обработки не влияет на результат, потому что изменение состояния системы от каждого такого события произойдёт не в текущий момент модельного времени, а с задержкой, вызванной инерционностью реальных объектов. Другими словами, это случится не в текущем, а в последующих циклах работы моделятора.

Единственное условие, которое необходимо выполнить в данной ситуации – сначала сменить все старые значения на новые в точках, где обнаружены кратные события, а уже затем приступить к их обработке.