Скачиваний:
34
Добавлен:
01.05.2014
Размер:
654.85 Кб
Скачать

3.2. Диаграмма состояний

Если начальное состояние конвейера в момент времени 0 известно, то можно вычислить эквивалентные состояния для всех будущих моментов времени.

В правилах генерирования состояний полагается, что если вектор столкновений в момент времени tизвестен, то векторы столкновений для состояний, соответствующих моменту времениt+1 вычисляются по следующей процедуре.

1. Вектор столкновений для момента времени tсдвигается влево на один разряд, самый левый разряд отбрасывается, а в правый заносится 0.

2. Если в 0-м разряде этого вектора содержится 1, то это новый вектор столкновений.

3. Если в 0-м разряде содержится 0, то в момент t+1 возможны два состояния в зависимости от того, произведена ли новая инициация в моментt+1. Если инициация не произведена, то сдвинутый вектор столкновений представляет очередное состояние. Если же в момент времениt+1 произведена инициация, то новый вектор столкновений является результатом поразрядной логической операции ИЛИ сдвинутого вектора и копии начального вектора столкновений.

4. Во всех случаях, когда новый вектор столкновений идентичен вектору для одного из предыдущих состояний, дуга из текущего состояния "возвращается" к этому предыдущему. Если же вектор столкновений является новым, то определяется новое состояние и проводится дуга от старого состояния к новому состоянию. Дуги, соответствующие единицам времени, в течении которых производятся новые инициации, помеченные значком *.

Рис. 1. Диаграмма состояний для таблицы занятости А

Рис. 2. Диаграмма состояний для таблицы занятости В

3.3. Модифицированная диаграмма состояний

Хотя вектор столкновений для таблицы занятости В сравнительно прост, получаемая диаграмма состояний достаточно велика. Для более сложных векторов число состояний растет с пугающей быстротой.В силу своей сложности они быстро утрачивают полезность при проектировании реальных систем. Для преодоления этого узкого места можно построить модифицированную диаграмму состояний. Такая диаграмма подобна исходной, но содержит только состояния, возникающие при новых инициациях. В исходной диаграмме это состояние помечено звездочкой на одной из входящих дуг. Два состояния на новой диаграмме соединяются дугой в том и только в том случае, если в исходной диаграмме они были соединены серией дуг, из которых только последняя была помечена "*". Кроме того, эта дуга в новой диаграмме помечена числом, соответствующим числу дуг между двумя состояниями в исходной диаграмме. Это число есть латентность между двумя инициациями.

Процедура генерирования модифицированной диаграммы состояний состоит из следующих этапов.

1. Начать с вектора столкновений как с начального состояния.

2. Для любого необработанного состояния и каждого k,такого, чтоk-й разряд соответствующего вектора столкновений равен 0:

а) сдвинуть вектор столкновений на kразрядов влево;

б) отбросить первые k разрядов;

в) добавить kнулей справа;

г) произвести операцию логического ИЛИ с копией начального вектора столкновений;

д) получено новое состояние; соединить его с текущим состоянием дугой с меткой k.

3. Добавить дугу с меткой >= dот каждого состояния назад к начальному состоянию, гдеd– время вычисления для таблицы занятости. Для простоты дуги, задействованные на шаге 3, не всегда показываются, а часто просто подразумеваются как очевидные.

>=5

Рис. 3. Модифицированная диаграмма состояний для таблицы занятости А

Рис. 4. Модифицированная диаграмма состояний для таблицы занятости В