СКИПОДы 2007 полная версия (1127795), страница 34
Текст из файла (страница 34)
Например, в устройстве управлениятаких ЭВМ нет никакого счётчика адреса, а в их памяти нет программы (по крайней мере,в нашем традиционном понимании).Схемы потоковых вычислителей.Мы рассмотрим функционирование такой ЭВМ на одном очень простом примере.Пусть нам необходимо вычислить такой оператор присваивания: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>,..,<адр._рез.М>, где адреса результатов являются адресами ячеек памяти.
С каждой командойсвязан подсчитывающий элемент, непрерывно ожидающий прибытие аргументов, которыйпересылает команду на выполнение при наличии полного комплекта аргументов. Активныххарактер памяти заключается в том, что ячейка, обладающая полным набором операндов,переходит в возбужденное состояние и передает в селекторную сеть информационныйпакет, содержащий необходимую числовую и связующую информацию о команде.Селекторная сеть обеспечивает маршрут от каждой командной ячейки к выбранному, всоответствии с кодом операции, исполнительному (функциональному) устройству измножества устройств. Пакет поступает на одно из исполнительных устройств, гдесоответствующая операция выполняется и результат подается в распределительную сеть.Распределительная сеть обрабатывает результирующий пакет, состоящий из результатоввычислений и адресов назначения.
В зависимости от содержимого пакета, результатвычислений поступает в соответствующие ячейки памяти команд, создавая, тем самым,условия возможности их активизации.Потоковая архитектура (data-flow), как одна из альтернатив фон-Нейманновской, обладаетследующими характерными чертами:- отсутствие памяти как пассивного устройства, хранящего потребляемую информацию,- отсутствие счетчика команд (и, следовательно, последовательной обработки командпрограммы, разветвлений по условию и т.д.).Потоковыевычислительныесистемыпозволяютиспользоватьпараллелизмвычислительныхалгоритмовразличныхуровней,потенциальнодостигатьпроизводительность, недоступную традиционным вычислительным системам.
Основныепроблемы, препятствующие развитию потоковых машин:1. Не решена проблема создания активной памяти большого объема, допускающейодновременную активизацию большого количества операций.2. Создание широкополосных распределительных и селекторных сетей потоковых машин исистем управления коммуникационной сетью является сложной задачей.3. Обработка векторных регулярных структур через механизмы потока данных менееэффективна, чем традиционные решения.4. Языки программирования для потоковых машин существуют, в основном, в видеграфических языков машинного уровня.
Языки типа SISAL, ориентируемые на описанияпотоковых алгоритмов, достаточно сложны для программистов.Нейронные сети.Искусcтвенная нейронная сеть — это математическая модель, а также устройствапараллельных вычислений, представляющие собой систему соединенных ивзаимодействующих между собой простых процессоров (искусственных нейронов).Такие процессоры обычно исключительно просты, особенно в сравнении с процессорами,используемыми в персональных компьютерах.Каждый процессор подобной сети имеет дело только с сигналами, которые онпериодически получает, и сигналами, которые он периодически посылает другимпроцессорам. И тем не менее, будучи соединёнными в достаточно большую сеть с114управляемым взаимодействием, такие локально простые процессоры вместе способнывыполнять довольно сложные задачи.Понятие возникло при изучении процессов, протекающих в мозге при мышлении, и припопытке смоделировать эти процессы.
Полученные модели называются искусственныминейронными сетями (ИНС).Нейронные сети не программируются в привычном смысле этого слова, они обучаются.Возможность обучения — одно из главных преимуществ нейронных сетей передтрадиционными алгоритмами. Технически обучение заключается в нахождениикоэффициентов связей между нейронами.Разработчикам решения на основе нейронной сети требуется:выбрать соответствующую модель сети;определить топологию сети (число элементов и их связи);указать параметры обучения.Наиболее известным типом ИНС является персептрон. Доказано, что при нелинейнойфункции в нейроне могут быть подобраны коэффициенты связей так, что сеть можетмоделировать любую функцию. Для персептрона общепринятым является обучениеметодом обратного распространения ошибки.
ИНС применяют при следующих классахзадач: классификация данных, распознавание образов, предсказание временных рядов.Абсолютно точный ответ с помощью ИНС получить невозможно — например,бессмысленно решать таблицу умножения. Но есть задачи, нерешаемые другим путем.