ПАРАЛЛЕЛЬНАЯ ПОТОКОВАЯ ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА

Область применения
Заявленная полезная модель относится к вычислительной технике, в частности к вычислительным системам, основанным на модели вычислений с управлением потоком данных.
Предшествующий уровень техники
Известна, выбранная в качестве ближайшего аналога, система обработки информации с использованием подхода, основанного на управлении потоком данных, содержащая один или несколько модулей ассоциативной памяти, каждый из которых выполнен с возможностью хранить поступающие в них токены, содержащие поле данных и поле ключа, отыскивать среди хранящихся токенов токены, у которых ключ совпадает с ключом поступающего токена, запоминать поступающий токен в модулях ассоциативной памяти в случае неудачного поиска, формировать пару данных из поступающего в ассоциативную память токена и найденного в ассоциативной памяти токена при удачном поиске и направлять сформированную пару данных в любое из исполнительных устройств, одно или несколько исполнительных устройств, выполненных с возможностью выполнять инструкции, хранящиеся в доступной для исполнительного устройства памяти команд по адресам, указанным в паре данных, формировать токен, содержащий поле данных и поле ключа, в котором в поле данных помещается результат выполнения инструкции, а в поле ключа - информация об инструкции, для которой этот результат является параметром, вычислять хэш-функцию, определяющую номер модуля ассоциативной памяти, направлять сформированный токен в модуль ассоциативной памяти с любым номером в соответствии с вычисленной хэш-функцией, коммутатора токенов для направления токенов из любого исполнительного устройства в любой модуль ассоциативной памяти, и коммутатора пар данных для направления пары данных из любого модуля ассоциативной памяти в любое исполнительное устройство, при этом каждый модуль ассоциативной памяти выполнен с возможностью хранить токены в любой из своих К+1 секций, каждая из которых имеет свой фиксированный размер и пронумерованных от 0 до К, получать для хранения из исполнительных устройств токен, который в этом случае именуется входным, вычислять по информации во входном токене целое Ц, находящееся в интервале от 0 до К-1, осуществлять операцию «поиск токена» по ключу во входном токене одновременно в секциях с номерами Ц и К путем сравнения ключа входного токена с ключами всех хранящихся в секции токенов, при успешном выполнении операции «поиск токена» направлять найденный токен в устройство, выполняющее операцию «формирование пары данных» и направляющее сформированную пару данных в исполнительное устройство через коммутатор пар данных, при неуспешном выполнении операции «поиск токена» записывать токен в секцию с номером Ц, а в том случае, если количество токенов в этой секции равно максимально возможному для этой секции, записывать токен в секцию с номером К (публикация RU 2360279C2, кл. МПК G06F 7/76, опубл. 27.06.2006 г. Бюл. №18).
Наличие общего коммутатора пар данных делает невозможной аппаратную реализацию масштабируемой вычислительной системы, кроме того, имеется ограничение на количество входных данных выполняемой инструкции (программы) исполнительного устройства равное двум. Используемые форматы токенов и пары данных не допускают образование многовходовых конструкций.
Таким образом, недостатками известной системы является невозможность масштабирования вычислительной системы при наличии коммутатора пар данных, а также ограничение на количество входных данных программы узла, что не позволяет добиться высокой производительности.
Раскрытие полезной модели
Техническим результатом, который может быть получен в заявленной полезной модели, является устранение вышеуказанных недостатков.
Технический результат достигается тем, что параллельная потоковая вычислительная система, содержит коммутатор токенов и соединенные с ним множество исполнительных устройств и множество модулей ассоциативной памяти, при этом каждое из исполнительных устройств непосредственно соединено с соответствующим ему модулем ассоциативной памяти, образуя одно вычислительное ядро, при этом коммутатор токенов выполнен с возможностью принимать токены или многовходовые токены, передавать каждый токен или многовходовый токен сразу на все вычислительные ядра, или, в соответствии с указанным в одном из полей токена или многовходового токена номером вычислительного ядра, передавать токен или многовходовый токен в модуль ассоциативной памяти вычислительного ядра, соответствующего указанному номеру вычислительного ядра, а каждый модуль ассоциативной памяти выполнен с возможностью принимать токены или многовходовые токены от коммутатора, выполнять сравнение токена или многовходового токена с учетом маскирования с ранее принятыми токенами или многовходовыми токенами и при совпадении выполнять над токеном или многовходовым токеном действие в соответствии с признаками совпавших токенов или многовходовых токенов, формировать и передавать на исполнительное устройство пару данных или многовходовой пакет, содержащие соответственно данные токенов или многовходовых токенов, и хранить принятые токены или многовходовые токены, а каждое исполнительное устройство выполнено с возможностью принимать пару данных или многовходовой пакет, извлекать из них информацию об адресе программы, хранящейся в исполнительном устройстве и которую следует выполнить над данными пары данных или многовходового пакета, выполнять указанную программу над данными пары данных или многовходового пакета, формировать новые токены или многовходовые токены и передавать их в коммутатор токенов.
Описание чертежей
Заявленная параллельная потоковая вычислительная система поясняется при помощи схем представленных на фиг.1-4.
На фиг.1 представлена структурная схема заявленной параллельной потоковой вычислительной системы.
На фиг.2 приведена схема формирования многовходового пакета, который используется в заявленной параллельной потоковой вычислительной системе.
На фиг.3 показана структура поля «признаки токена» многовходового токена.
На фиг.4 показана структура поля «признаки пакета» многовходового пакета.
Осуществление полезной модели
Заявленная параллельная потоковая вычислительная система, представленная на фиг.1, содержит множество модулей 5 ассоциативной памяти, множество исполнительных устройств 3 и коммутатор 6. Каждое из исполнительных устройств 3 непосредственно соединено с соответствующим ему модулем 5 ассоциативной памяти, образуя одно вычислительное ядро 1.
По линиям 2а, соединяющим коммутатор 6 и модули 5 ассоциативной памяти, и по линиям 2b, соединяющим исполнительные устройства 3 и коммутатор 6, передаются токены или многовходовые токены. А по линиям 4, соединяющим модули 5 ассоциативной памяти и исполнительные устройства 3, передаются пары данных или многовходовые пакеты.
Как токены, так и многовходовые токены представляют собой структуру данных, состоящую из поля «признаки токена», поля «данные» и поля «ключ», при этом поле «ключ» включает поле «контекст» и поле «адрес узла». В поле «признаки токена», показаном на фиг.3, записываются признаки глобальной передачи или номер вычислительного ядра, в которое должен быть передан соответствующий токен, приоритет токена, номер маски, код операции (Коп), а для многовходового токена еще и количество входов (Квх) и номер входа (Нвх). Приоритет токена указывает на очередность обработки токена при наличии в любом из исполнительных устройств 3, модулей 5 ассоциативной памяти, а также в коммутаторе 6 токенов более одного токена. При наличии в любом из исполнительных устройств 3, модулей 5 ассоциативной памяти, а также в коммутаторе 6 токенов более одного токена сначала обрабатывается токен с более высоким приоритетом. Код операции - это внутренняя команда модуля 5 ассоциативной памяти, которая должна быть выполнена над данным токеном в случае совпадения двух токенов с учетом маскирования. В поле «данных» записываются данные для последующей обработки, в поле «ключ» записывают информацию, в которой указаны, какие действия должны быть выполнены в дальнейшем над результатом, при этом в поле «контекст» записывают информацию о контексте, в котором эти действия должны быть произведены, а в поле «адрес узла» записывают адрес программы, которая должна быть выполнена над данными.
В данном описании под «многовходовыми токенами» понимаются токены, при помощи которых формируется многовходовый пакет. В отличие от токенов многовходовые токены содержат два дополнительных поля, расположенных в поле «признаки токена» - «номер входа» и «число входов». «Номер входа» указывает в какое из полей «данного» результирующего пакета должно попасть данное этого многовходового токена, а «число входов» служит для контроля и указывает сколько данных должно быть в многовходовом пакете.
Под «многовходовым пакетом», показанным на фиг.2, в данном описании понимается структура данных, содержащая следующие поля: поле «признаки пакета», поле «ключ», множество полей «данное». При этом поле «ключ» включает поле «контекст» и поле «адрес узла».
В поле «признаки пакета», показанном на фиг.4., записывается признак приоритета и число, определяющее количество данных в пакете.
Поле «контекст» формируется, например, логическим сложением всех разрядов поля «контекст» всех токенов, принимающих участие в образовании пакета с учетом маски каждого из них. Если поле «контекст» не замаскировано у совпавших токенов, то это означает, что оно одинаковое у всех токенов, и, соответственно, у пакета оно будет таким же.
Поле «адрес узла» формируется, например, логическим сложением всех разрядов поля «адрес узла» всех токенов, принимающих участие в образовании пакета с учетом маски каждого из них. Если поле «адрес узла» не замаскировано у совпавших токенов, то это означает, что оно одинаковое у всех токенов, и, соответственно, у пакета оно будет таким же.
Поля «данных» пакета наполняются данными всех токенов, принимающих участие в образовании пакета в зависимости от номера токена в многовходовом пакете.
Заявленная параллельная потоковая вычислительная система работает следующим образом.
В начале работы параллельной потоковой вычислительной системы оператор задает режим передачи данных в виде токенов или многовходовых токенов от хост-машины 8 в параллельную потоковую вычислительную систему и приема данных в виде токенов или многовходовых токенов хост-машиной 8 от параллельной потоковой вычислительной системы. Операции ввода/вывода данных с хост-машины 8 осуществляются посредством блока ввода/вывода 7.
Токены или многовходовые токены, поступающие от хост-машины 8 через блок ввода/вывода 7 на коммутатор 6 токенов, который принимает токены или многовходовые токены. Затем, если в поле «признаки токена» токена или многовходового токена имеется признак глобального токена, то коммутатор 6 токенов передает указанный принятый токен по линиям 2а передачи токенов сразу на все вычислительные ядра 1. В том случае, если в поле «признаки токена» указанного токена указан номер вычислительного ядра 1, в которое должен быть передан этот токен, то коммутатор 6 токенов передает указанный принятый токен по линии 2а передачи токенов в модуль 5 ассоциативной памяти вычислительного ядра 1, соответствующего указанному в поле «признаки токена» токена или многовходового токена номеру вычислительного ядра 1.
Один или все модули 5 ассоциативной памяти принимают указанный токен или многовходовой токен от коммутатора 6. Первый токен, не имея объекта для сравнения, записывается в модуль 5 ассоциативной памяти в ожидании приема других токенов. Затем один или все модули 5 ассоциативной памяти принимают следующий токен или многовходовый токен от коммутатора 6 и выполняют сравнение принятого указанного токена с учетом маскирования с ранее принятыми токенами или многовходовыми токенами. При этом сравнивают поле «ключ» или поля «адрес узла» и «контекст». При совпадении с учетом маскирования полей «ключ» или полей «адрес узла» и «контекст», выполняют над принятыми токенами действие в соответствии с кодом операции совпавших токенов. В данном случае формируют пару данных или многовходовой пакет, или удаляют указанный принятый токен или многовходовой токен, или удаляют хранящийся токен или многовходовой токен, или сохраняют указанный принятый токен или многовходовой токен.
Затем модуль 5 ассоциативной памяти формирует и передает на исполнительное устройство 3 по линии 4 передачи пару данных или многовходовой пакет, содержащий данные, по меньшей мере, одного токена или многовходового токена.
При формировании пары данных или многовходового пакета, при совпадении токенов или многовходовых токенов, поле «признаки пакета» заполняется на основе полей «признаки токена» соответствующих токенов или многовходовых токенов, поля «адрес узла» и «контекст» формируются из соответствующих полей токенов или многовходовых токенов путем их взаимного логического сложения с учетом маскирования. Поля «данные» пары данных или многовходового пакета содержат данные из полей «данное» соответствующих токенов или многовходовых токенов в соответствии с полем «номер входа» токена или многовходового токена. На фиг.2 представлена схема формирования многовходового пакета, который формируется в модуле ассоциативной памяти 5 из группы многовходовых токенов.
Исполнительное устройство 3 принимает пару данных или многовходовой пакет по линии 4 от модуля 5 ассоциативной памяти. Затем исполнительное устройство 3 извлекает из пары данных или из многовходового пакета информацию об адресе программы, которая хранится в исполнительном устройстве 3 (в локальной памяти исполнительного устройства 3) и которую следует выполнить над данными пары данных или многовходового пакета. Затем исполнительное устройство 3 запускает и выполняет указанную программу над указанными данными. В результате выполнения указанной программы получаются новые данные, на основании которых исполнительное устройство 3 формирует новые токены или многовходовые токены и по линии 2b передает указанные токены на коммутатор 6 токенов.
Далее коммутатор 6 токенов передает принятые токены или многовходовые токены по линиям 2а либо сразу на все вычислительные ядра 1, если в одном из полей токена или многовходового токена присутствует признак глобального токена, либо на вычислительное ядро 1, если в одном из полей токена или многовходового токена указан номер вычислительного ядра 1, в которое должен быть передан указанный токен или многовходовой токен.
Процесс обработки данных завершается после того, как исполнительные устройства 3 передадут окончательный результат обработки данных коммутатору 6 токенов, который через блок ввода/вывода 7 выдаст их на хост-машину 8.
Таким образом, за счет того, что каждое из исполнительных устройств непосредственно соединено с соответствующим ему модулем ассоциативной памяти, образуя одно вычислительное ядро, реализована возможность масштабирования вычислительной системы при отсутствии коммутатора пар данных, а также сняты ограничения на количество входных данных программы узла, что позволяет добиться высокой производительности.