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

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

Цель стратегии управления или стратегии диспетчеризации состоит в том, чтобы определить, когда следует осуществлять новые инициации. Этого нельзя сделать без знания действий конвейера на любом временном шаге.

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

Одним из методов выявления и представления такой информации является метод, основанный на диаграмме состояний, в которой текущей конфигурации конвейера для каждого момента времени соответствует одно из состояний.

Дуги, идущие от одного состояния к последующим, показывают, в каком из новых состояний конвейер может находиться в следующий момент времени. Все возможные последовательности латентностей соответствуют путям на такой диаграмме. Анализируя все пути, особенно те, которые образуют замкнутые циклы, можно определить пути с минимальной средней латентностью. Тогда последовательности латентностей, которым эти пути соответствуют, являются оптимальными. В каждом состоянии закодирована информация, называемая вектором состояний, Такой вектор являетсяd-разрядной двоичной последовательностью, гдеd-время вычисления для таблицы занятости. При этомd-разрядов нумеруются от 0 доd-1 слева направо; ноль вi-ой позиции означает, что у инициации начатой черезi-единиц времени после текущего момента не будет столкновений ни с одной из незавершенных в текущий момент инициаций, а 1 означает, что столкновения будут и поэтому инициация должна быть запрещена. В векторе столкновений для каждого периода времени учитывается, будет ли новая инициация в этом периоде.

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

Вычисление начального вектора столкновений проводится следующим образом.

Для каждого значения iмежду 0 иd-1 копия таблицы занятости сдвигается наiединиц времени вправо и накладывается на оригинал таблицы. Если где-либо в пределах наложения таблиц в одной графе "время-ступень" оказываются две метки, тоi-ый разряд начального вектора состояний полагается равным 1, в противном случае равным 0. Во всех случаях 0-й разряд этого вектора столкновений равен 1, поскольку наложение таблицы занятости самой на себя приводит к столкновениям во всех графах содержащих метки. Аналогично, во всех разрядах, начиная сd, всегда стоят 0, поскольку сдвинутая и не сдвинутая таблицы не перекрываются. Так как это имеет место всегда, нет необходимости представлять эти разряды в векторе столкновений. Рассмотрим пример построения вектора столкновений для таблицы занятости В.

Латентность 0 – столкновение

0

1

2

3

4

5

6

7

Ступень 1

ВХ

ВХ

ВХ

ВХ

Ступень 2

ВХ

ВХ

Ступень 3

ВХ

ВХ

Латентность 1 – столкновение.

0

1

2

3

4

5

6

7

Ступень 1

В

ВХ

Х

В

ВХ

Ступень 2

В

Х

В

Х

Ступень 3

В

Х

В

Х

.

.

.

Латентность 3 – столкновений нет.

0

1

2

3

4

5

6

7

Ступень 1

В

В

Х

Х

В

В

Ступень 2

В

В

Х

Х

Ступень 3

В

В

Х

и т.д.

Латентность=0,1,2,3,4,5,6,7

Вектор - 1 1 1 0 0 1 1 1