OberonCore
https://forum.oberoncore.ru/

Конвеерная обработка команд
https://forum.oberoncore.ru/viewtopic.php?f=31&t=2594
Страница 1 из 1

Автор:  Сергей Губанов [ Суббота, 24 Апрель, 2010 19:55 ]
Заголовок сообщения:  Конвеерная обработка команд

Дурацкая задачка мучает. Логика против интуиции.

Поступает поток команд. Обработка каждой команды состоит из трёх последовательных фаз, занимающих время t1, t2 и t3 соответственно (пусть t1 > t2, t1 > t3). Полное время обработки одной команды равно t1+t2+t3 (это латентность). Если обрабатывать команды в одном потоке, то пропускная способность будет равна 1/(t1+t2+t3). Но можно обрабатывать команды в трёх потоках: организовать три последовательных конвеера. Латентность чуть-чуть увеличится (незначительные накладные расходы на перекладывание команд между конвеерами), но пропускная способность увеличится и будет составлять 1/t1 (определяется скоростью самого медленного конвеера).

А теперь вводится новое условие: t1 > t2 + t3.

Тогда три конвеера не нужны, хватит двух. Первый с пропускной способностью 1/t1, а второй с 1/(t2+t3).

Вот и мучаюсь. Логика говорит, что достаточно всего двух конвееров, а интуиция, зараза такая, твердит, что чем больше потоков, тем "параллельнее", то есть лучше :( :( :(

Автор:  Илья Ермаков [ Суббота, 24 Апрель, 2010 20:01 ]
Заголовок сообщения:  Re: Конвеерная обработка команд

Ну, пропускная способность не может быть выше, чем у самого медленного звена.

Кстати, не сразу понял терминологию. То, что Вы назвали конвейером, по ходу, надо называть звеном, этапом конвейера; а конвейер - это всё в целом.

Автор:  Rifat [ Суббота, 24 Апрель, 2010 20:12 ]
Заголовок сообщения:  Re: Конвеерная обработка команд

Если есть 2 конвеера, то можно применить решение "задачи Джонсона о двух станках".
Если 3 конвеера, то в принципе можно обработать быстрее, чем с 2-мя конвеерами, но, насколько я знаю, это NP-полная задача, и здесь поможет только полный перебор.

Автор:  Сергей Губанов [ Вторник, 27 Апрель, 2010 23:20 ]
Заголовок сообщения:  Re: Конвеерная обработка команд

Илья Ермаков писал(а):
Кстати, не сразу понял терминологию. То, что Вы назвали конвейером, по ходу, надо называть звеном, этапом конвейера; а конвейер - это всё в целом.
У каждого потока своя очередь входящих сообщений. Если проводить механическую аналогию - 3 конвеера, продукция которых непосредственно на следующий конвеер не попадает, а сначала отвозится на склад. Вроде так.

Автор:  Илья Ермаков [ Среда, 28 Апрель, 2010 09:39 ]
Заголовок сообщения:  Re: Конвеерная обработка команд

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

Автор:  Wlad [ Среда, 28 Апрель, 2010 19:34 ]
Заголовок сообщения:  Re: Конвеерная обработка команд

Не мучайтесь. Добавляйте столько исполнительных элементов, сколько вам позволяет ситуация!
А тому, кто начнёт мямлить что-то про "экстенсив", - просто наплюйте в глаза.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/