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/ |