- •Вычислительная модель потоковой обработки
- •2. Архитектура потоковых вычислительных систем
- •3. Статические потоковые вычислительные системы
- •4. Динамические потоковые вычислительные системы
- •5. Архитектура потоковых систем с помеченными токенами
- •6. Архитектура потоковых систем с явно адресуемыми токенами
- •7. Макропотоковые вычислительные системы
- •8. Гиперпотоковая обработка
- •9. Вычислительные системы с управлением вычислениями по запросу
- •Контрольные вопросы
7. Макропотоковые вычислительные системы
Рассмотренный ранее механизм обработки с управлением от потока дан-ных функционирует на уровне команд и относится к потоковой обработке низкого уровня(fine-graindataflow). Данному подходу сопутствуют большие из-держки при пересылке операндов. Для уменьшения коммуникационных издер-жек необходимо применять потоковую обработку на процедурном уровне, т.е.укрупненную потоковую илимакропотоковуюобработку (multithreading).
Макропотоковая модель совмещает локальность программы, характерную для фон-неймановской модели, с толерантностью к задержкам на переключение задач, свойственной потоковой архитектуре. Это достигается за счет того, что вершина графа представляет собой не одну команду, а последовательность из нескольких команд, называемых нитью(thread). По этой причине макропото- ковая организация часто называетсякрупнозернистой потоковой обработкой(coarse-graineddataflow). Макропотоковая обработка сводится к потоковому вы-полнению нитей, в то время как внутри отдельной нити характер выполнения фон-неймановский. Порядок обработки нитей меняется динамически в процессе вычислений, а последовательность команд в пределах нити определена при ком-пиляции статически. Структура макропотоковой ВС представлена на рис. 14.15.
Рис. 14.15. Структура процессорного элемента типовой макропотоковой системы
Отличие макропотоковой системы от обычной потоковой ВС состоит в организации внутреннего управляющего конвейера, где последовательность вы-полнения команд задается счетчиком команд, как в фон-неймановских маши- нах. Этот конвейер идентичен обычному конвейеру команд.
В макропотоковой архитектуре (рис. 14.1, в) каждый узел графа пред-ставляет команду, а каждая закрашенная область – одну из нитей. Если команда приостанавливается, останавливается и соответствующая нить, в то время как выполнение других нитей может продолжаться.
Существуют две формы макропотоковой обработки: без блокированияис блокированием. В модели без блокирования выполнение нити не может быть начато, пока не получены все необходимые данные. Будучи запущенной, нить выполняется до конца без приостановки. В варианте с блокированием запуск нити может быть произведен до получения всех операндов. Когда требуется отсутствующий операнд, нить приостанавливается (блокируется), а возобновле-ние выполнения откладывается на некоторое время. Процессор запоминает всю необходимую информацию о состоянии и загружает на выполнение другую готовую нить. Модель с блокированием обеспечивает более гибкий подход к формированию нитей за счет дополнительной аппаратуры для хранения блоки-рованных нитей. Это выражается в возможности использования более длинных нитей.
Возможна также потоковая обработка переменного уровня, когда узлы соответствуют как простым операциям, так и сложным последовательным процедурам. Этот случай называется комбинированной обработкой с потоками данных и потоками управления(combineddataflow/controlflow).