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

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

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

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

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

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

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

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

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

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

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

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

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

Правильность этой процедуры непосредственно вытекает из предыдущей. На шаге 2 берется каждое состояние и из него формируется перечень всех состояний, в которых возможна еще одна инициация. По одному такому состоянию существует для каждого 0 в векторе столкновений. Шаг 3 соответствует вырожденному случаю, когда все действия в конвейере прекращаются прежде, чем будет произведена новая инициация. Это соответствует всем путям, которые проходят через состояние 00…0 в немодифицированной диаграмме.

На рис. 10 дана модифицированная диаграмма состояний для таблицы занятости А, полученная с помощью приведенной процедуры. Число состояний здесь намного меньше по сравнению с эквивалентной немодифицированнной диаграммой, но циклы видны гораздо более явно. Некоторые из них включают циклы (3,5), (1,7), (3, 5, 7) и (5, 7). Наименьшая средняя латентность здесь, очевидно равна 4, а жадный цикл (1,7) входит в число тех, которые позволяют достигнуть этого значения.