1.3. Упорядочение данных

В структуру параллельной памяти на рис. 3 включена коммутационная сеть, которая обеспечивает маршрутизацию данных: направление элементов данных, составляющих вы­бранную структуру, на определенные шины данных памяти. Конкретный вид коммутации, которая должна быть выполнена при обращении к параллельной памяти, обусловлен алгорит­мом обработки данных. Если вести анализ коммутационной сети с таких позиций, то можно сказать только, что для обес­печения универсальности она должна осуществлять все воз­можные переключения шин данных. При ширине доступа, со­ставляющей сотни элементов, реализация и управление такой сетью непростая задача. Однако у этой проблемы есть и еще одна сторона. Рассмот­рим ее на примере 2D-параллельной памяти 8 X 8 и таблиц размещения, приведенных на рис. 4, в и 5,6. И в том, и в другом случае обеспечивается параллельная выборка строя двухмерного массива. Если сравнить таблицы, то легко заме­тить, что первое размещение сохраняет одинаковый порядок элементов во всех строках, а при втором все строки имеют разный порядок элементов. Такое нарушение является, видимо, платой за дополнительную возможность параллельного доступа к столбцам двухмерного массива.

Анализ других размещений, предложенных на рис. 5, и различных геометрических форматов, которые могут быть при этом реализованы, показывает, что во всех случаях параллельно выбираемая совокупность данных имеет различную упоря­доченность. Эта упорядоченность подчинена определенному закону и изменяется при переходе от одного размещения к дру­гому, от одного геометрического формата к другому и, наконец, для конкретного формата и таблицы размещения при из­менении адреса формата.

Конечно, желательно установить какой-то единый порядок следования элементов, хотя бы для каждого геометрического формата. Чтобы обеспечить независимость порядка элементов в формате от его адреса, необходимо реализовать при каждом обращении к памяти перестановку выбираемых элементов, приводящую их к установленному для данного формата по­рядку.

Проиллюстрируем это на примере выборки строки в парал­лельной памяти, основанной на размещении рис. 5,6. Обо­значим Аi1 —вектор, образованный элементами строки масси­ва A с номером i1 . При считывании (записи) строки по адресу it порядок элементов в ней определяется соответствующей строкой таблицы размещения. Так, в третьей строке на шине данных нулевого блока размещается элемент aзз, на шине пер­вого блока — а32 и т. д. (рис. 7). Вектор А3 в целом имеет вид

А3' = (a33 a32 a31 a30 a37 a36 a35 a34).

Чтобы привести его к порядку, соответствующему упорядочен­ности элементов строки в массиве A,

А3 = (a30 a31 a32 a33 a34 a35 a36 a37) ,

необходимо реализовать перестановку элементов, показанную на рис. 7. Для других адресов формата строки необходимы другие перестановки в соответствии с порядком элементов в таблице размещения.

Таким образом, в каждом проекте параллельной памяти, когда определен закон размещения данных в многоблочной запоминающей среде, определяется и структура упорядочивающих преобразований, которые позволяют получать правильный порядок элементов на выходе памяти. Именно в таком «узком» смысле мы будем в дальнейшем рассматривать работу комму­тационной сети, имея в виду, что речь идет не о маршрутизации данных в общем смысле (в связи с алгоритмом их обра­ботки), а только о приведении их к исходной упорядоченности.

Рис. 7. Коммутация шин данных, обеспечивающая упорядочение элементов геометрического формата

Соседние файлы в папке 2.3. Процессорные матрицы