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

2. Какие условия необходимы, чтобы программные объекты а и в (команды, операторы, программы) являлись независимыми и выполнялись параллельно?

Программные объекты A и B (команды, операторы, программы) являются независимыми и могут выполняться параллельно,если выполняется следующее условие:

(InB OutA) v (InA OutB) v (OutA OutB) = ∅, (1.1),

где In(A) — набор входных, а Out(A) — набор выходных переменных объекта A. Если условие (1.1) не выполняется, то между A и B

существует зависимость и они не могут выполняться параллельно.

Если условие (1.1) нарушается в первом терме, то такая зависимость называется прямой. Приведем пример:

A: R = R1 + R2

B: Z = R + C

Здесь операторы A и B не могут выполняться одновременно,так как результат A является операндом B.

Если условие нарушено во втором терме, то такая зависимость называется обратной:

A: R = R1 + R2

B: R1 = C1 + C2

Здесь операторы A и B не могут выполняться одновременно, так как выполнение B вызывает изменение операнда в A.

Наконец, если условие не выполняется в третьем терме, то такая зависимость называется конкуренционной:

A: R = R1 + R2

B: R = C1 + C2

Здесь одновременное выполнение операторов дает неопределенный результат.

Увеличение параллелизма любой программы заключается в поиске и устранении указанных зависимостей.

  1. Конвейерная технология предполагает….

Другая форма параллелизма, конвейеризация, также требует наличия нескольких ЦП и АЛУ. В то время как одно множество данных обрабатывается на одном устройстве, другое множество данных может обрабатываться на следующем устройстве и т.д. В этом смысле в процессе обработки возникает поток данных от одного устройства (ЦП или АЛУ) к следующему. В течении всего процесса над одним множеством данных выполняются одно за другим nдействий. Одновременно в "конвейере" на разных стадиях обработки может находиться от 1 доnмножеств данных.

Параллелизм ассемблерного уровня реализуется двумя способами:

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

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

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

1) система выполняет повторяющуюся операцию;

2) эта операция может быть разделена на независимые части;

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

Обработка команды может быть разделена на несколько основных этапов, назовем их микрокомандами. Выделим основные пять микрокоманд:

• Выборка команды 

• Расшифровка команды

• Выборка необходимых операндов 

• Выполнение команды 

• Сохранение результатов

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

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

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

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

Соседние файлы в папке Вопросы и ответы на итоговый тест