- •Министерство образования и науки российской федерации
- •«Самарский государственный технический университет»
- •Ю. В. Калмыков, а. В. Тараканов
- •Введение
- •1. Содержание и объем курсовой работы
- •2. Оформление курсовой работы
- •3. Распараллеливание обработки
- •4. Потоковая обработка информации
- •4.1. Организация потоковой обработки информации
- •4 14 .2. Построение программ коммутации
- •Программа коммутации
- •5. Организация параллельных
- •6. Пример создания мультипоточного
- •В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера.
- •7. Определение временных
- •Первоначально необходимо установить настройки среды программирования, как показано на рис. 7.1 – 7.3.
- •8. Порядок выполнения работы
- •9. Содержание расчетно-пояснительной
- •Сызрань 2010 Приложение п2
- •1) Функция изменения состояния синхронизирующего объекта события, устанавливающая его в состояние “Включено”.
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Окончание прил. П2
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Окончание прил. П3
- •Приложение п5
- •Продолжение прил. П5
- •Продолжение прил. П5
- •Окончание прил. П5
- •Приложение п6
- •Библиографический список
- •Оглавление
- •Системное программное обеспечение
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •446001, Г. Сызрань, ул. Советская, 45
4. Потоковая обработка информации
в вычислительных системах
на асинхронном решающем поле
4.1. Организация потоковой обработки информации
Одним из практических способов организации управления совместной работой исполнительных устройств при выполнении одной программы в ВС является управление потоком данных или организация потоковой обработки информации. При этом способе поступление необходимых данных непосредственно в текст команды – единственное условие, определяющее возможность ее выполнения одним из исполнительных устройств системы. Таким образом, достигается предельно простая синхронизация взаимосвязанных работ и параллельное выполнение независимых работ, определенных программой. В идеальном случае параллельное выполнение алгоритма в ВС обусловлено его информационно-логическим графом.
В различных вариантах построения ВС, управляемой потоком данных, по одной команде может выполняться как элементарная операция, так и некоторая программно реализованная процедура. Известны два способа реализации метода управления потоком данных.
Первый способ предполагает размещение всей программы или ее частей в активной памяти, состоящей из ячеек команд. В каждую ячейку предусмотрена запись кода операции (идентификатора процедуры), всех необходимых операндов и адреса ячейки, в которую надлежит отправить результат. Готовые к выполнению команды, т. е. те, в тексте которых имеются все операнды, выбираются исполнительными устройствами – вычислителями решающего поля для выполнения. Предполагается возможность одновременной выборки вычислителями достаточно большого числа готовых к выполнению команд. После выборки команды вычислителем операнды в ее тексте уничтожаются, что обеспечивает повторное выполнение команды в цикле. Результаты направляются по указанным в командах адресам в качестве операндов для последующего выполнения других команд. Данный способ требует разработки специальной многовходовой активной памяти большого объема, развитой переключающей сети, нуждается в решении ряда вопросов хранения и подкачки исходной информации, организации процесса в случае, когда память команд не вмещает программу полностью, и т. д.
Второй способ предполагает динамическую коммутацию исполнительных устройств при одновременном выполнении ими предписанных операций таким образом, чтобы результаты выполнения одних команд служили аргументами для выполнения других команд, назначенных к выполнению на том же или другом исполнительном устройстве. Данный способ требует разработки специальных коммутирующих устройств, распределяющих команды между ограниченным числом исполнительных устройств и устанавливающих связи между ними. Способ получил распространение при построении модульных арифметическо-логических устройств.
При выборе модели потоковой обработки информации необходимо учитывать невозможность полного отказа от последовательной обработки программного кода: ввода, трансляции и перемещения программы, подкачки информации, динамической коммутации устройств, выбора исполнительных устройств на основе текущего использования ресурсов, учета последовательности событий, возникающих при выполнении программы, и т.д.
Важно также сохранить для универсальной потоковой системы традиционную форму программ, отражающую отработанные способы параллельно-последовательного представления алгоритмов.
Для иллюстрации решения проблем, связанных с организацией потоковой обработки информации, выберем модель асинхронной модульной ВС, в которой применение указанных способов управления потоком данных сочетается с последовательной обработкой команд программы коммутации ВС состоит (рис. 4.1) из m процессоров коммутации (которые будем называть просто процессорами), памяти команд (ПК), адресного генератора (АГ) с таблицами соответствия TCj, j=1, ..., m, исполнительных устройств решающего поля, буферов исполнительных устройств, оперативной памяти данных (ОПД). В состав исполнительных устройств входят вычислители Вi (с буферами Бi,), i=l, ..., n, и процессор памяти (ПП), осуществляющий обмен информацией с ОПД и связанный со своим буфером – очередью заявок к памяти (ОЗП). Вычислители могут быть построены на основе микро- и миниЭВМ, что способствует унификации устройств, реализации большого набора операций с учетом модификации и расширяемости, возможности переменной комплектации, повышению надежности.
Рассмотрим кратко принципы работы такой ВС.
Каждый процессор выполняет свою программу коммутации (так как такая программа является единственным представителем вычислительного процесса в ВС, будем называть ее просто программой), соответствующую задаче, программному модулю, процессу и так далее на основе реализации первого уровня распараллеливания.
Р и с. 4.1. Схема ВС, управляемой потоком данных
Программа, записанная в ПК, имеет традиционный вид, но может содержать математические адреса вычислителей, интерпретируемые как адреса особой области памяти, не допускающей повторного использования данных. Процессоры и решающее поле работают независимо друг от друга, за исключением выполнения условных переходов, определяемых результатами счета. Процессоры производят модификацию команд и полностью выполняют команды индексации, цикла, переходов, организации векторных операций. Как средство частичного выполнения команд они выступают как исполнительные устройства, в связи с чем, наряду со специальным, предусматривается их стандартное подключение к решающему полю. С помощью базирования программ и данных реализуется стековый принцип обработки.
При обработке основной группы команд из системы команд ВС процессор по дисциплине, реализуемой адресным генератором, занимает или использует ячейки команд буферов исполнительных устройств, организованных по первому способу управления потоком данных. Он записывает в эти ячейки коды операций и физические адреса ячеек команд буферов, в которые необходимо передать результаты. Подобные же команды формируются в ОЗП. Команда на считывание располагает адресом ячейки команды в некотором буфере, куда должна направляться информация. При формировании команды записи ее адрес как адрес результата сообщается той команде, по которой он вырабатывается. Таким образом, процессор выполняет функции динамической коммутации исполнительных устройств для реализации второго уровня распараллеливания. Предусмотрены команды вычисления условных выражений, исключающие необходимость условных переходов при счете значений арифметических операторов. Это минимизирует задержки коммутации для определения направлений ветвления.
Асинхронно работающие исполнительные устройства (вычислители и ПП) выполняют команды из своих буферов, располагающие всеми операндами. Результаты направляются по указанным адресам, что реализует второй способ управления потоком данных.
При выполнении процессором памяти заявок соблюдается не только алгоритмический порядок преобразования данных по одним и тем же адресам, но и очередность бесконфликтного обращения к модулям памяти. При этом поддерживается соответствие между потоками поступающих и обслуженных заявок, обусловленными тем, что каждая команда исходной программы может порождать несколько заявок к памяти данных, выдаваемых за один машинный такт.
Таким образом, в выбранной модели потоковая обработка информации основана на динамическом преобразовании схемы обработки информации в схему коммутации исполнительных устройств решающего поля.
Программа коммутации представляет в ВС вычислительный процесс и является объектом программирования или трансляции. Ее выполнение и работа исполнительных устройств происходят асинхронно, т. е. процесс коммутации отделен от процесса выполнения исполнительными устройствами предписанных им операций. Простыми средствами достигается виртуализация вычислительного ресурса.
По мере того как частичная коммутация позволяет начать выполнение операций, исполнительные устройства выполняют предписанные им операции асинхронно после поступления на их вход необходимых операндов. Они передают результаты на входы других (или, в частности, этого же) исполнительных устройств в соответствии с необходимостью дальнейшей обработки информации, определенной данным алгоритмом и учтенной на этапе коммутации связей. При этом становится принципиально возможным абсолютное распараллеливание участков выполняемого алгоритма, так как каждое исполнительное устройство получает возможность выполнения операции сразу же, как только будут получены от других исполнительных устройств необходимые операнды. От скорости процесса коммутации зависит возможность распараллеливания вычислений на уровне исполнительных устройств. Вместе с тем очевидно, что практически разница скоростей коммутации и выполнения не может быть столь значительной, что возможна и целесообразна коммутация связей исполнительных устройств для выполнения всего алгоритма сразу. Да и ограниченный вычислительный ресурс этого не позволит. Поэтому по программе коммутации происходит постепенное «развертывание» графа, отражающего вычислительный процесс.
