ПОД (пособие) (1184372), страница 35
Текст из файла (страница 35)
а на передачу уходит время... и в это времяпроцессоры опять простаивают...Словом, заставить параллельную вычислительную систему или супер-ЭВМ работать смаксимальной эффективность на конкретной программе это, прямо скажем, задача не изпростых, поскольку необходимо тщательное согласование структуры программ иалгоритмов с особенностями архитектуры параллельных вычислительных систем.Нетрадиционныевычислители.архитектуры:потоковыеинейронныеПринципы потоковой обработки информации.Такая ситуация сохранялась в программировании примерно до начала 80-х годовпрошлого века. Далее, однако, обрабатываемые данные непрерывно усложнялись, пока,наконец, для некоторых задач не превзошли по сложности программы, которыеобрабатывали эти данные.
Рассмотрим в качестве примера большую базу данных, котораяхранит текущее состояние дел некоторого крупного предприятия. Можно сказать, что базаданных содержит сложно структурированную, изменяющуюся во времени модель этогопредприятия. Программы, обрабатывающие информацию из базы данных (БД)называются обычно системой управления базой данных (СУБД) [20]. СУБД позволяетвводить, удалять и модифицировать данные в БД, а также обрабатывать запросы на поиски выдачу из БД нужных сведений. Так вот, сколько бы программист не исследовалпрограммы, входящие в СУБД, он практически ничего не узнает о самом предприятии, ничто оно выпускает, ни сколько человек на нём работает и т.д.
Очевидно, что в нашеймодели предприятия (БД+СУБД) данные играют основную роль, а обрабатывающие ихпрограммы – уже второстепенную.Как Вы можете догадаться, примерно в это же время появилась идея коренным образомизменить архитектуру компьютера так, чтобы отказаться от принципа программногоуправления. Таким образом, если компьютеры традиционной архитектуры управляютсяпотоком (или потоками) команд, то компьютеры новой, нетрадиционной архитектурыдолжны управляться потоком данных. Можно сказать, что не команды должныопределять, когда какие данные надо обрабатывать, а, наоборот, данные выбирают для себя действия (операторы), которые в определённый момент надовыполнить над этими данными. Компьютеры такой архитектуры принято называтьпотоковыми ЭВМ (по-английски DFC – Data Flow Computers) [1,16].111Заметим, что сам по себе принцип потоковой обработки данных не представляет собойничего загадочного или экзотического.
Например, отметим, что уже изученные Вамиранее такие алгоритмические системы, как машина Тьюринга и Нормальные алгоритмыМаркова были обработчиками данных именно этого класса. Действительно, например, вмашине Тьюринга именно данные (текущий символ, на который указывает головка),определял, какие именно операции необходимо было выполнить на этом шаге работы!В то же время оказалось, что архитектура потоковых ЭВМ весьма сложна и сильноотличается от архитектуры традиционных ЭВМ.
Например, в устройстве управлениятаких ЭВМ нет никакого счётчика адреса, а в их памяти нет программы (по крайней мере,в нашем традиционном понимании).Схемы потоковых вычислителей.Мы рассмотрим функционирование такой ЭВМ на одном очень простом примере.Пусть нам необходимо вычислить такой оператор присваивания:x := (x+y)*p + (x+p)/z - p*y/zПредставим этот оператор в виде так называемого графа потока данных, показанного нарис. 16.1. В этом ориентированном графе есть два вида узлов: это сами обрабатываемыеданные, изображённые в виде квадратиков (в нашем примере – значения переменных x,y,zи p) и обрабатывающие элементы потоковой ЭВМ, которые мы обозначили простознаками соответствующих арифметических операций в кружочках.1 Основная идеяпотоковых вычислений состоит в следующем.
Все действия над данными производятобрабатывающие элементы (операторы), в нашем примере эти элемента обозначеныарифметическими операциями сложения, вычитания умножения и деления. Можносказать, что всё арифметико-логическое устройство потоковой ЭВМ – это набор такихобрабатывающих элементов. Каждый обрабатывающий элемент начинает автоматическивыполняться, когда есть в наличие (готовы к обработке) требуемые для него данные. Так,в нашем примере автоматически (и параллельно!) начинают выполняться операторы + , +и * во второй строке нашего графа, затем, на втором шаге работы, параллельновыполняются операторы * , / и / в третьей строке и т.д.
Здесь просматривается большоесходство со способом работы электронных схем, составленных из вентилей.Действительно, если граф потока данных "положить на левый бок", то он будет весьмапохож на электронную схему двоичного сумматора, как мы показывали её на рис. 2.2а). Приэтом роль вентилей будут играть обрабатывающие элементы, а входных и выходныхсигналов – обрабатываемые Заметим, что обрабатываемые данные в потоковом компьютере вовсене являются пассивными, как в ЭВМ традиционной архитектуры, наоборот, они "громкозаявляют" о своей готовности к обработке (можно сказать, требуют к себе "внимания" состороны обрабатывающих элементов).
Вообще говоря, здесь есть все основания отказатьсяот принципа Фон Неймана, согласно которому память только хранит данные, но необрабатывает их. Другими словами, представляется естественным совместить функциихранения и обработки данных, и разместить обрабатывающие элементы не в арифметикологическом устройстве, а прямо в оперативной памяти. Вообще говоря, граф потока данныхи является "программой" для потоковой ЭВМ, а программ в нашем привычном понимании(запись алгоритма на языке машины) здесь не существует.
Можно сказать, что здесь самиданные управляют процессом своей обработки. Отсюда можно сделать вывод, что обычныеязыки программирования плохо подходят для записи алгоритмов обработки данных впотоковых ЭВМ, так как приходится делать сложный компилятор, преобразующийобычную последовательную программу в граф потока данных. Неудивительно поэтому, чтовместе с идеей потоковых ЭВМ появились и специальные языки потоков данных (Data FlowLanguages),1 ориентированные на прямое описания графа потока данных [1].Из рассмотренной схемы обработки данных в потоковых ЭВМ можно сделать вывод, что вних может быть реализован принцип максимального параллелизма в обработке данных, так112как любые готовые данные тут же могут поступать на выполнение соответствующемуобрабатывающему элементу потоковой ЭВМ.
Ясно, что быстрее решить задачу простоневозможно. Немного подумав, можно выделить две фундаментальные трудности, которыевстают при реализации потоковой ЭВМ. Во-первых, для достаточно сложного алгоритманевозможно полностью построить граф потока данных до начала счёта. Действительно,алгоритм вводит свои входные данные и содержит условные операторы, выполнениекоторых может, в частности, зависеть и от этих входных данных. Следовательно,компилятор с некоторого традиционного языка программирования может построить тольконекоторый первоначальный граф потока данных, а устройство управления потоковой ЭВМдолжно будет в процессе счёта динамически изменять этот граф. Ясно, что это весьмасложная задача для аппаратуры центрального процессора потоковой ЭВМ.Вторая проблема заключается в том, что арифметико-логическое устройство потоковойЭВМ должно содержать много одинаковых обрабатывающих элементов.
Даже дляприведённого нами в качестве примера простейшего графа потока данных нужно по дваобрабатывающих элемента для выполнения операций сложения и деления. Для реальныхалгоритмов число таких одинаковых обрабатывающих элементов должно исчислятьсядесятками и сотнями, иначе готовые к счёту данные будут долго простаивать в ожиданииосвобождения нужного им обрабатывающего элемента, и вся выгода от потоковыхвычислений будет потеряна (и тогда ни стоило, как говорится, и огород городить).Другая трудность заключается здесь в том, что выход каждого обрабатывающего элемента(результат его работы) может быть подан на вход любого другого обрабатывающегоэлемента.
Такие вычислительные системы называются полносвязными. При достаточнобольшом числе обрабатывающих элементов (а выше мы обосновали, что иначе и быть неможет), реализовать все связи между ними становится технически неразрешимой задачей.Ясно, что перед конструкторами потоковой ЭВМ встают очень большие трудности.
Внастоящее время универсальные потоковые ЭВМ не нашли широкого применения из-засложности своей архитектуры, пока существуют только экспериментальные образцы такихЭВМ. Несколько лучше обстоит дело, если обрабатывающие элементы в потоковых ЭВМ,сделать достаточно сложными, т.е. предназначенными для выполнения крупных шаговобработки данных. В этом случае каждый такой обрабатывающий элемент можнореализовать в виде отдельного микропроцессора, снабженного собственной (локальной)памятью и соответствующей программой (программой в традиционном понимании).
Всетакие обрабатывающие элементы объединены высокоскоростными линиями связи(шинами), причём каждый элемент начинает работать, как только он имеет всенеобходимые входные данные. Эти данные могут располагаться в локальной памяти илипоступать на линии связи данного обрабатывающего элемента от других обрабатывающихэлементов. Идея управления обработки информации потоками данных нашла применение ивтакомбыстроразвивающемся направлении вычислительнойтехники,какнейрокомпьютеры.ДополнениеКлассическая архитектура потоковой ВС.Основными компонентами потоковой ВС являются:- память команд (ПК),- селекторная (арбитражная) сеть,- множество исполнительных (функциональных) устройств (ФУ),- распределительная сеть._______________|--------------->| ФУ|-----------------||| ______________||||селекторная сетьраспределительная сеть113|______________||<---------------|ПК|-----------------||______________|Память команд состоит из "ячеек" активной памяти, каждая из которых может содержатьодну команду вида <метка>: <операция>,<операнд1>,..,<операндК>,<адр_рез1>,..,<адр._рез.М>, где адреса результатов являются адресами ячеек памяти.