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

1.1.2. Таблицы занятости

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

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

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

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

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

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

Таблица А

0

1

2

3

4

5

6

Ступень 1

А

А

Ступень 2

А

А

А

Ступень 3

А

А

А

Таблица В

0

1

2

3

4

5

6

7

Ступень 1

В

В

В

В

Ступень 2

В

В

Ступень 3

В

В

Рис. 1.1. Примеры таблиц занятостей

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

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

Ключевым параметром к определению производительности конвейера является латентность, т. е. число единиц времени, разделяющих инициации одной или различных таблиц занятости. Латентность может иметь различные неотрицательные значения, включая 0. Различные значения латентностей для различных комбинаций таблиц занятости из рис.1.1 показаны на рис. 1.3. Обозначения снова являются табличными, однако теперь они представляют полное динамическое использование конвейера, когда несколько инициаций действуют одновременно. Как показано на рис. 3.3, между двумя инициациями возможна более чем одна латентность, однако не все латентности допустимы. Например, в статическом конвейере латентность, равная 0, невозможна, поскольку при обоих вычислениях есть вероятность использования одних и тех же ступеней одновременно. Отметим, что латентность, равная 2, для таблицы занятости А вызывает двойное использование ступени 2 в периоды времени 3 и 5, поэтому она во всех случаях недопустима. В общем случае о латентности, которая приводит к конфликту, говорят, что она вызывает столкновение.

Поскольку назначение конвейера состоит в том, чтобы произвести как можно больше вычислений за возможно более короткое время, временной мерой производительности системы является темп инициаций, или среднее число инициаций за единицу времени. Чем выше темп инициаций, тем быстрее работает машина. Однако для математических методов более удобно использовать величину, обратную темпу инициаций – среднюю латентность, т.е. число единиц времени между двумя инициациями. Очевидно, чем меньше средняя латентность, тем быстрее работает конвейер. Ясно, что для статических конвейеров нижняя граница средней латентности равна 1, поскольку латентность, равная 0, всегда приводит к столкновению. Эта граница соответствует верхней границе темпа инициаций, равной 1. Для динамических конвейеров возможны латентности, равные 0, поскольку две различные таблицы занятости могут и не перекрываться. Этим свойством обладают таблицы занятости на рис.1.1.

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

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

Рис. 1.2. Прохождение данных для таблицы занятости А

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

Если дан набор из нескольких одинаковых или различных таблиц занятости, то целью управляющей стратегии является выработка последовательности моментов времени, в которые должны выполняться инициации, или выработка такой последовательности латентностей между инициациями, которая минимизирует среднюю латентность (максимизирует темп инициаций). Как описывалось ранее, не все латентности возможны; более того, выбор латентности, используемой между одной парой инициаций, непосредственно влияет на то, какое множество латентностей будет допустимо между будущими парами. Вследствие этого стратегия, которая всегда между инициациями вводит минимальную из латентностей, возможных в текущий момент времени, не всегда приводит к максимальной производительности. Такая стратегия называется "жадной". Оптимальные стратегии должны иметь возможность прогнозировать, чтобы определить влияние на производительность каждой из возможных последовательностей латентностей. Например, на рис. 1.5 показана "жадная" стратегия, которая запускает новые инициации таблицы занятости В, чередуя латентность, равную 3, с латентностью, равной 8, что приводит к средней латентности, равной 5,5. Более "терпеливая" и более эффективная стратегия откладывает начало второй инициации до четвертой единицы времени (рис.1.6); тогда новые инициации могут осуществляться регулярно с интервалом 4. Ясно, что средняя латентность, равная 4 лучше предыдущей средней латентности.

Жадная стратегия использует ступень 1 только в течении 73% общего времени работы конвейера, а ступени 2 и 3 только 36 %. Остальное время работы конвейера эти аппаратные средства работают вхолостую. В противоположность этому терпеливая стратегия достигает почти 100%-го использования ступени 1 и 50%-го - ступеней 2 и 3. Терпеливая стратегия оптимальна хотя бы в том смысле, что часть аппаратуры используется в течении 100 % времени. Ясно, что повысить такой темп инициации невозможно, поскольку свободных циклов для использования ступени 1 не остается.

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

0

1

2

3

4

5

6

Ступень 1

А1

А2

А1

А2

Ступень2

А1

А2

А1

А2

А1

А2

Ступень 3

А1

А2

А1

А1

А, А латентность = 1

0

1

2

3

4

5

6

7

8

9

10

Ступень 1

В1

В1

В2

В2

В1

В1

В2

Ступень 2

В1

В1

В2

В2

Ступень 3

В1

В1

В2

В2

В,В латентность = 4

0

1

2

3

4

5

6

7

Ступень 1

В

В

А

А

В

В

Ступень 2

А

В

А

В

А

Ступень 3

А

А

В

В

А

А,В латентность = 0

Рис. 1.3. Примеры латентностей без столкновений

0

1

2

3

4

5

6

7

8

Ступень 1

А1

А2

Ступень 2

А1

А2

Ступень 3

А1

А2

А1

А2

А, А латентность = 2

0

1

2

3

4

5

6

7

8

9

Ступень 1

В1

В1

В2

В2

В1

В1

В2

В2

Ступень 2

В1

В2

Ступень 3

В1

В2

В, В латентность = 2

0

1

2

3

4

5

6

7

8

Ступень 1

В

А

В

В

Ступень 2

А

Ступень 3

А

А

В

А,В латентность = 1

Рис. 1.4. Примеры латентностей с столкновениями (показаны кружками)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

В1

В1

В2

В2

В1

В1

В2

В2

В3

В3

В4

В4

В3

В1

В1

В2

В2

В3

В3

В4

В1

В1

В2

В2

В3

В3

В4

Средняя латентность=5,5

Последовательность латентностей = 3,8,3,8, . . . Цикл повторяется. . .

Рис. 1.5. Жадная последовательность инициаций для таблицы занятости В

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

В1

В1

В2

В2

В1

В1

В3

В3

В2

В2

В4

В4

В3

В3

В5

В5

В1

В1

В2

В2

В3

В3

В4

В4

В1

В1

В2

В2

В3

В3

В4

В4

Средняя латентность = 4 Цикл повторяется

Последовательность латентностей = 4, 4, 4, 4, . . .

Рис. 1.5. Оптимальная последовательность инициаций для таблицы занятости В