Научная статья на тему 'КЛЕТОЧНО-АВТОМАТНЫЕ АЛГОРИТМЫ СОРТИРОВКИ СТРОК И УМНОЖЕНИЯ ЦЕЛЫХ ЧИСЕЛ ПО СХЕМЕ АТРУБИНА'

КЛЕТОЧНО-АВТОМАТНЫЕ АЛГОРИТМЫ СОРТИРОВКИ СТРОК И УМНОЖЕНИЯ ЦЕЛЫХ ЧИСЕЛ ПО СХЕМЕ АТРУБИНА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
39
8
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КЛЕТОЧНЫЕ АВТОМАТЫ / СОРТИРОВКА / УМНОЖИТЕЛЬ АТРУБИНА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Матюшкин Игорь Валерьевич, Жемерикин Антон Валерьевич, Заплетина Мария Андреевна

Приведены отсутствующие в литературе последних десятилетий клеточно-автоматные формулировки алгоритмов сортировки массивов символов и строк. Впервые предложен клеточный автомат, умножающий два целых числа, записанных в системе счисления с произвольным основанием. Алгоритм основан на схеме параллельного умножения Атрубина для систолического массива процессоров и требует четыре компонента (регистра) вместо пяти.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CELLULAR AUTOMATA ALGORITHMS FOR STRING SORTING AND INTEGER MULTIPLICATION BY ATRUBIN’S SCHEME

The cellular automata formulations of the algorithm for sorting arrays of characters and strings, not available in literature of recent decades, have been presented. For the first time, the cellular automation, that multiplies two integers written in a number system with an arbitrary basis, has been proposed. The algorithm is based on the Atrubin’s scheme for parallel multiplication by means of a symbolic array of processors and requires four components (registers) instead of five.

Текст научной работы на тему «КЛЕТОЧНО-АВТОМАТНЫЕ АЛГОРИТМЫ СОРТИРОВКИ СТРОК И УМНОЖЕНИЯ ЦЕЛЫХ ЧИСЕЛ ПО СХЕМЕ АТРУБИНА»

ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ INFORMATION TECHNOLOGIES

УДК 519.7+519.683

Клеточно-автоматные алгоритмы сортировки строк и умножения целых чисел по схеме Атрубина

12 3 2 2

И.В. Матюшкин ' ' , А.В. Жемерикин , М.А. Заплетина

1 Институт проблем проектирования в микроэлектронике РАН

2Национальный исследовательский университет «МИЭТ»

о

АО «НИИМЭ и Микрон» (г. Москва)

Cellular Automata Algorithms for String Sorting and Integer Multiplication by Atrubin's Scheme

•12 3 * * 2 * 2

I. V. Matyushkin ' ' , A.V. Zhemerikin , M.A. Zapletina

institute for Design Problems in Microelectronics

of Russian Academy of Sciences, Moscow

2National Research University of Electronic Technology, Moscow

о

3JSC «NIME andMikron», Moscow

Приведены отсутствующие в литературе последних десятилетий клеточно-автоматные формулировки алгоритмов сортировки массивов символов и строк. Впервые предложен клеточный автомат, умножающий два целых числа, записанных в системе счисления с произвольным основанием. Алгоритм основан на схеме параллельного умножения Атрубина для систолического массива процессоров и требует четыре компонента (регистра) вместо пяти.

Ключевые слова: клеточные автоматы; сортировка; КА-произведение двух целых чисел; умножитель Атрубина.

The cellular automata formulations of the algorithm for sorting arrays of characters and strings, not available in literature of recent decades, have been presented. For the first time, the cellular automation, that multiplies two integers written in a number system with an arbitrary basis, has been proposed. The algorithm is based on the Atrubin's scheme for parallel multiplication by means of a symbolic array of processors and requires four components (registers) instead of five.

Keywords: cellular automata; sorting; algorithm; parallel multiplication; Atrubin's multiplier.

© И.В. Матюшкин, А.В. Жемерикин, М.А. Заплетина, 2016

Введение. С появлением многоядерных процессоров и других нетрадиционных архитектур приобрела актуальность задача адаптации вычислительных алгоритмов к структуре вычислителя [1], подразумевающая значительную степень параллелизма обработки информации. Один из путей решения этой задачи состоит в использовании формализма клеточных автоматов (КА) при задании параллельного алгоритма [2].

В настоящей работе рассматриваются три типовые задачи, встречающиеся в практике программирования: сортировка символов, сортировка строк (или двумерная сортировка) и умножение чисел в системе с основанием N. Существуют и другие задачи, потенциально разрешимые с помощью КА: генерация простых чисел [3], выполнение четырех арифметических действий над числами [4, 5] и т.д.

Отметим, что в литературе за обозримый период нет четкой формулировки КА-алгоритма сортировки, хотя известны решения даже «в железе» [6]. Известный, в том числе в теории КА, алгоритм параллельного умножения, сформулированный Атру-биным для систолического массива процессоров, использует открытость системы (данные вводятся через поток в буфере, а результаты тоже выводятся в потоки). Таким образом, строгая КА-формулировка также отсутствует в литературе. При переформулировке удается улучшить алгоритм Атрубина по числу используемых регистров на ячейку (элементарный процессор) с 5 до 4 регистров (компонент).

Одномерная сортировка. В общей формулировке требуется упорядочить массив однородных объектов, для которых задано бинарное отношение сравнения. Без ограничения общности будем считать, что объект изоморфен символу, а символы упорядочены лексикографически в алфавите Alf, т.е. Va,b Ф a е Alf, a < b. Знак «<» есть бинарное отношение строгого порядка (соответствующая функция возвращает 0 или 1). При сравнении двух одинаковых символов будем считать, что функция возвращает 0. Далее примем, что конструкция «:=» означает знак присвоения, принятый в программировании, и все величины справа от него берутся в текущий момент времени t, а величина слева - в следующий момент времени (t + 1). Целочисленные операции div и mod определяются стандартно, например 7div2 = 3, 7mod2 = 1.

Простейшее КА-решение, использующее блочный механизм Марголуса, основано на идее «всплытия пузырьком». Блочный автомат Марголуса представим через классический синхронный КА. Отметим, что в более развитых методах сортировки для минимизации проходов по массиву в той или иной мере используют глобальную информацию, что делает их непригодными для использования в КА.

Исходные предположения следующие. Ячейка одномерного КА может сравнивать два символа, каждый сортируемый символ первоначально «вписан» в ячейку. Количество ячеек N, они нумеруются индексом 0 < i < N — 1. Состояние ячейки представлено двумя компонентами^ S; F^, где S — целое число (буква), F — булево. Соседство имеет

радиус r = 1, т. е. три ячейки (или две для граничных), в индексах i-я - центральная, i — 1, i +1 - боковые. Границы поля не замкнуты. Начальные состояния для каждой из

ячеек: S — случайное целое число/буква или введенное пользователем; F = (idiv2)mod2, где div — целочисленное деление, mod - остаток от деления по модулю 2.

Локальная функция перехода (ЛФП) определяется следующим образом:

Si := (Fi = F+0• (CS- > Si+i)• Si+i + (S. < Si+i)• S.) + + (Fi = F—i)• ((Si < Si—i)• Si—1 + (Si > S— i)• Si),

F := F—i.

Правила для граничных ячеек:

- для 0-й ячейки

^с := (Ъ = Ъ)• ((^ > • $ + & <• So), Ъ>:= 1 -

- для ( N — 1 )-й ячейки

:= (^—1 = FN—2) • —1 < SN—2) • SN—2, FN—1 := FN—2-

На рис. 1 показана диаграмма «время-пространство» для КА, сортирующего массив символов. Когда состояние автомата перестанет изменяться, наступает останов. При строгом понимании вычислимости нужно технически обеспечить это требование, что сложно. Сложность сортировки «всплытия пузырьком» составляет 0(N2). Рассматриваемый КА дает эмпирически 0(Ы), точнее 0,8N, при N примерно меньше 100 (рис.2). Для наихудшего случая, когда наименьший элемент находится в конце поля, за время его миграции почти полностью завершаются все перестройки. На рис.1 легко различимы траектории движения («всплытия») подобных элементов. В отличие от классической модели вычислений нельзя использовать центральный процессорный элемент и нет возможности переносить данные между удаленными регистрами. Поэтому феномен таких «движений» с целью переноса данных есть квинтесценция вычислимости в КА.

180

160

140

£ О 120

О 100

о - 80

и

S 3- 60

40

20

0

>

/

Рис.1. Диаграмма «время-пространство» для КА сортировки (ось времени направлена вниз, поле КА есть массив из 100 ячеек, градации серого отражают состояние ячейки, начальное состояние случайное)

50

100 Число ячеек

150

200

Рис.2. Эмпирическая зависимость числа ходов до останова от числа ячеек N

Двумерная сортировка. Часто сортируемый объект имеет сложную структуру, например, некоторого слова в алфавите A. Сортировку слов назовем двумерной. Алгоритм двумерной сортировки опирается на предыдущий алгоритм и используется для сортировки слов, записанных в некотором массиве из N строк (каждое слово имеет не более M знаков) слева направо. Пустые ячейки/клетки заполняются пробелами. Состояние ячейки КА имеет три компонента: символ данных A е Alf, а также два флага с тремя состояниями. Флаг сравнения W е {¡0,1,2} со следующей семантикой: 0 - клетки не сравнивались (по компоненту A); 1 - символы сравнивались и не равны; 2 - символы сравнивалась и равны. Флаг блочности K е {1,2} разделяет слова на блоки (как и в КА Марголуса на разбиении) и выделяет активный столбец, т. е. сравнение разрешено

только между ячейками с одинаковым значением этого флага. Ячейка КА имеет окрестность Неймана. В начальном состоянии поле КА состоит из букв и пробелов (00) (пробел в отношении порядка предшествует любому символу алфавита) со всеми нулевыми флагами, кроме первого столбца. В первом столбце стоят флаги блочности и активности так, чтобы разбить слова по парам.

Идея алгоритма состоит в следующем. Назовем фронтом колонку с ненулевыми K. В каждый момент времени фронт единственен и перемещается (вправо) от столбца с первыми до столбца с последними буквами слов. При переходе с последнего столбца на первый флаг K изменяется так, чтобы сместить активные блоки и тем самым завершить попарное сравнение слов. Фронт по флагу W следует (слева) за фронтом по флагу K. От значения флага W зависит, нужно сравнивать символы или нет. Если символы не равны, то ячейка получает значение флага W = 1. По результату сравнения меняем буквы. Если клетка слева уже имеет W = 1, то нет смысла проводить дальнейшее сравнение и значение флага W наследуется.

Опишем алгоритм формально. В скобках от литеры компонента будем писать двумерный индекс ячейки. Шаблон окрестности используем по Нейману, т. е. у ячейки только четыре соседа. Границы поля не замкнуты. Начальное состояние поля КА определяется формулой

w(i, j) = 0, A(i, j) е Alf, K(i,0) = (idiv2) mod 2 +1,

0 < i < N, 0 < j < M.

Локальная функция перехода определяется следующим образом. Вначале зададим переход для флага блочности:

K(i, j — 1), j Ф 0;

K(i, N — 1)mod2 +1, (j = 0) л (K(i, N — 1) Ф 0) л (imod2 = 0);

K(i, j):=| (1)

|K(i, N — 1), (j = 0) л (K(i, N — 1) Ф 0) л (imod2 = 1);

K (i, j), otherwise.

Последние три формулы, так как происходит обращение к абсолютному для ячейки индексу i, необходимо трактовать как спецификацию граничной ЛФП для ячеек четных и нечетных номеров, расположенных в самом левом столбце. Именно в силу гранично-сти не происходит нарушения идеологии (локальности и однородности) КА. Иначе говоря, для каждой граничной ячейки перед началом вычислительного процесса определяется индивидуальный закон ее функционирования (условие 2 или 3 из формулы (1)).

В зависимости от флага K на текущем ходу определены изменения других компонентов: для K(i, j) = 0 завершить выполнение ЛФП; для K е (1,2) пусть

+1, K (i +1, j) = K (i, j); 5 :=| — 1, K(i — 1, j) = K(i, j);

0, otherwise.

Индекс (i+5) означает номер слова (верхнее или нижнее), с которым будет сравниваться данное слово. Если 5=0, то завершить выполнение ЛФП. В противном случае

0, (W(i, j) Ф 0);

W(i, j) := 11, (A(i, j) Ф A(i + 5, j)) v (W(i, j — 1) = 1);

2, A(i, j) = A(i + 5, j),

' Л(г, у) := {Л(г + 5, у), (Ж (I, у) = Ж (г + 5, у) = 1) л Л(г, у) := к ((5 = -1) л (а(г, у) < Л(г + 5, у))) V ((5 = 1) л (Л(г, у) > Л((г + 5), у)));

Л(г, у), Ж (I, у) Ф Ж (I + 5, у).

Поскольку по индексам строк есть выделенное направление (сверху вниз) упорядочения, то в ЛФП по компоненте А прибегаем к дилемме по значению 5 .

При моделировании (табл.1) использовалась оригинальная программа SoftCAM. В табл.1 верхний индекс возле буквы - это флаг К, нижний - флаг Ж, серым фоном помечены фронты по флагам К и Ж.

Таблица 1

Пример работы алгоритма двумерной сортировки

1-я итерация, инициализация алгоритма 4-я итерация

а°о Ъ°о /0 1 о е°о о о г0 ' о а0о Ъ01 /'о е°о о о

о°о о0о /0о о о о о л о0о о01 /'о о о о о

ъ\ Л а0о /■ 0о п 0о о о Ъ°о г°о а01 /■ 2о п оо о о

ь\ г 0о е °о Л о о о о Ъ0о г°о е 01 Л о о о о

а°о Л о о о о о о а°о Р°о Р°1 1 о о о о о

а\ Р °о Р 0о / о 1 о е °о о о И°о а оо ' 01 / 'о е °о о о

с\ и оо * 0о г 0о о °о т 0о е°о и 0о * 01 ' 2о о °о т 0о

] 20 о0о 1 о к о е °о о о о о ] °о о°о 1 о к 1 е 2о о о о о

т\о о 0о п 0о 1 о к о е °о У 0о Ъ0о а оо ' °1 к \ е °о У °о

Ъ 'о а 0о / 0 ' о т 0о а 0о п0о т оо о °о П°1 т 1о а оо п0о

7-я итерация 54-я итерация

¿2о а°о Ъ°о /0 1 о е°о о о а\ Р °о Р 0о / 0 1 о е °о о о

о0о о0о /0о о о о о Ъ >о а 0о ' 0о т 0о а оо п0о

Ъ1о г°о а0о /■ 0о п оо о о Ъ2о г0о а0о / °о п °о о о

Ъ2о г °о е °о Л о о о о Ъ2о г 0о е 0о Л о о о о

а2о Р 0о Р °о / о 1 о е °о о о Л и 0о * °о ' 0о о 0о т0о

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

¿'о а°о Л о о о о о о а°о г0 ' о о о о о о о

Л и 0о * 0о ' 0о о 0о т 0о ] 2о о0о 1 о к о е °о о о о о

] 2о о°о 1 о к о е °о о о о о т2о о °о п 0о 1 о к о е °о У °о

Ъ 2о а оо ^ о ' о т 0о а 0о п0о а°о Ъ0о ¡о 1 о е°о о о

т\ о °о п 0о 1 о к о е °о У °о о°о о0о /0 1 о о о о о

Результаты моделирования показывают корректность работы предложенного алгоритма, сложность которого имеет порядок N■M.

Клеточный автомат умножения целых чисел. Впервые одномерный КА-алгоритм для умножения двух чисел был рассмотрен Атрубиным в 1962 г. Он показал, что серийное умножение может быть выполнено некоторой последовательной коммутационной сетью [7]. Входными и выходными данными для алгоритма служат двоичные числа. Алгоритм представляет собой КА-реализацию умножения двоичных чисел столбиком с использованием систолического массива процессоров. В последнее время алгоритм Атрубина исследовался эпизодически [8-12], а доказательство корректности его работы получено лишь в 1993 г. [10].

Итак, Атрубин показал возможность параллельного умножения малозатратными средствами одномерных структур (итерированного/итеративного массива). Рассмотрим вначале неформально КА-модификацию его алгоритма. Отметим, что в таком представлении наблюдается сходство с алгоритмами параллельных подстановок, например ¿-системами, и формализмом алгорифмов Маркова.

Первоначально в КА записано последовательно два числа в некоторой системе счисления (слева направо). Эти числа разбиваются (табл.2) по разрядам, каждая клетка КА хранит цифру одного разряда (вторая строка). Кроме чисел-операндов состояние ячейки хранит идентификатор (первая строка), который показывает, к какому операнду относится цифра: а - к первому, Ь - второму. Если цифра с идентификатором «а» стоит слева от цифры с идентификатором «Ь», то проводится умножение этих двух чисел, а результат записывается в стек (третья строка). После этого в данных ячейках меняются местами идентификаторы и цифры. Все результаты умножения складываются, и общий

Таблица 2

Выполнение параллельного умножения чисел по предлагаемому алгоритму

в десятичной системе счисления

Начальное состояние поля КА Состояние поля после 3-го хода

а а а Ь Ь Ь Ь Флаг Ь а Ь а Ь а Ь

9 6 3 8 4 0 2 Цифра 8 9 4 6 0 3 2

0 0 0 0 0 0 0 Стек 7 2 2 4 0 0 0

0 0 0 0 0 0 0 Ответ 7 7 2 9 2 0 0

Состояние поля после 1 -го хода Состояние поля после 4-го хода

а а Ь а Ь Ь Ь Флаг Ь Ь а Ь а Ь а

9 6 8 3 4 0 2 Цифра 8 4 9 0 6 2 3

0 0 2 4 0 0 0 Стек 0 3 6 0 0 0 6

0 0 2 4 0 0 0 Ответ 8 0 8 9 2 0 6

Состояние поля после 2-го хода Состояние поля после 5-го хода

а Ь а Ь а Ь Ь Флаг Ь Ь Ь а Ь а а

9 8 6 4 3 0 2 Цифра 8 4 0 9 2 6 3

0 4 8 1 2 0 0 Стек 0 0 0 0 1 2 0

0 5 0 5 2 0 0 Ответ 8 0 8 9 3 2 6

963-8402 = 8091126 Состояние поля после 6-го хода (конечное)

Ь Ь Ь Ь а а а

8 4 0 2 9 6 3

0 0 0 1 8 0 0

8 0 9 1 1 2 6

итог записывается в четвертую строку. Данный алгоритм работает до тех пор, пока операнды полностью не поменяются местами и не будут завершены операции переноса в старший разряд при суммировании. После завершения алгоритма в четвертой строке содержится результат. В табл.2 показаны все шаги выполнения алгоритма для конкретного примера в десятичной системе. Ячейки-столбцы, активные на следующем шаге, отмечены серым фоном.

Дадим точную формулировку предлагаемому КА. Пусть первое число а1а2...ап содержит п знаков, второе Ъ1Ъ2...Ът - т знаков, а основание системы N > 1. КА синхронный, одномерный, с радиусом окрестности 1 (для граничных ячеек 1/2, т.е. не учитываются «пропавшие» соседи). Поля КА индексируется слева направо 0 < / < п + т. Состояние ячейки определяется 4-компонентной структурой:

state =

а е \a.

{a, b}

d е{0,.., N -1} D е {0,1} R е{0,.., N -1}

Флаг принадлежности Цифра числа Пер енос в стар ший знак Цифра ответа

В начальной конфигурации числа записываются одно за другим, начиная со старшего разряда:

a =

I a, 0 < i, I b, n < i < n + m,

d =

| ai+1, 0 <i, |bi-n+1, n < i < n + m.

Остальные компоненты равны нулю, т.е. V/Д = 0, Д = 0.

Для внутренних ячеек опишем ЛФП, которая в зависимости от выполнения тех или иных условий меняет вид - ЛФП1, ЛФП2, ЛФП3 (табл.3). Если ни одно из условий ЛФП2-3 не выполнено, выполняется ЛФП1. Для граничных ячеек ЛФП наследуются, если ввести фиктивного соседа и положить stаte_1 / staten+m = (а0/п+т_150,0,0). Первый переход (ЛФП1) призван корректно провести сложение в ответе и учесть то, что «держим в уме». Два других срабатывают «рядом» в один такт, каждый для своей «колонки» компонентов.

Условия и переходы состояний КА

Таблица 3

— <

>

ЛФП Условия наступления Переход

1 2 V 3 X = R + D+1, R := XmodN, Dt := XdivN

2 а, = a а,+1 = ь X = R + Dt+1 + (di • dt+1)divN, R := XmodN, Dt := XdivN, ai := b, di := di+1

3 а, = Ь а, _1 = a X = R + Dt+1 + (di • dt-1)modN, R := XmodN, Dt := XdivN, ai := b, di := di-1

Нетрудно видеть, что сложность алгоритма линейная и лежит в пределах от (n + m +1) до 2(m + n — 1) . Верхний предел связан с гипотетической возможностью переноса старшего разряда («в уме») по всем позициям, как в случае сложения, например 89999 + 00001 = 90000 (можно даже усилить верхнюю границу: n + 2m — 1). Поскольку при сложении присутствует синхронизм в сбросе того, что «в уме», в старший разряд ответа, то не происходит ситуации такой, что D = 2, всегда D = 0 или D = 1. В противном случае это стало бы проблемой при перемножении двоичных чисел (N = 2). Рассмотренные примеры умножения чисел показывают корректность работы алгоритма и для двоичной системы.

Заключение. Приведенные решения трех типовых задач являются аппаратно-независимыми, поскольку операции сравнения и умножения цифр, а также выделения младшего и старшего разряда считаются выполнимыми/реализуемыми ячейкой КА-вычислителя. Однако если требуется реализовать высокопроизводительный вычислительный узел с архитектурой КА и если для него уже заданы спецификации, то вопросы схемотехнической и/или логической реализации стандартной ячейки узла неизбежно повлекут за собой и вопросы реализации перечисленных операций. Поэтому абстрактность предложенных алгоритмов отчасти вынужденная и может рассматриваться и как достоинство, и как недостаток работы. Так, КА-версия алгоритма Атрубина, с одной стороны, далека от практики конкретных систолических процессоров и свойственной им конвейерности вычислений, но, с другой стороны, разработчики неконвейерных вычислительных систем могут воспользоваться полученным алгоритмом для реализации умножения, причем без ограничений на точность вычислений и количества знаков после запятой (способность умножать есть естественное требование к таким системам).

Полученное КА-решение сформулировано более четко в отличие от изложенного в [7] и предполагает некоторую экономию памяти. «Накладные» расходы при вычислениях в стеке устанавливают паритет с версией Атрубина, но формально в предлагаемом алгоритме используются 4 компонента вместо 5 регистров и он характеризуется таким же быстродействием, что и исходный алгоритм. Полученные результаты восполняют пробел относительно КА-решений в области сортировки, образовавшийся ввиду элементарности задач.

Работа выполнена в рамках НИР «Исследование перспективных моделей вычислений и реализующих их архитектур высокопроизводительных информационно-вычислительных комплексов нового поколения» по программе фундаментальных исследований ОНИТ РАН «Архитектурно-программные решения и обеспечение безопасности суперкомпьютерных информационно-вычислительных комплексов новых поколений».

Литература

1. Stempkovsky A.L., Vlasov P.A., Kozin G.V. Algorithmic environment for VLSI design on cellular automata // Proc. of a Joint Symposium: Information Processing and Software, Systems Design Automation (Moscow, June 5/6, 1990). — Springer—Verlag, 1990. — P. 308—312.

2. Kim K.-W., Lee W.-J. Efficient cellular automata based montgomery AB2 multipliers over GF(2m) // IETE Technical Review. — 2014. — 31:1. — P. 92—102.

3. Fisher P.C. Generation on primes by one dimensional real time iterative array // J. ACM. — 1965. — 12. — P. 388—394.

4. Heen O. Efficient constant speed-up for one dimensional cellular automata calculators // Parallel Computing. — 1997. — Vol. 23. - N. 11. - P. 1663-1671.

5. Petraglio E., Henry J.-M., Tempesti G. Arithmetic operations on self-replicating cellular automata // Lecture Notes in Artificial Intellegence. — 1999. — Vol. 1674. — P. 447—456.

6. Bidlo M., Vasicek Z., Slany K. Sorting network development using cellular automata // Proc. 9th Intern. Conf. «Evolvable Systems: From Biology to Hardware» (York, UK, Sept. 6-8, 2010). - London: Springer London, 2010. - Р. 85-96.

7. Atrubin A.J. A one-dimensional real-time iterative multiplier // IEEE Trans. on Electronic Computers. -1965. - Vol. EC-14. - N.3. - Р. 394-399.

8. Goyal L.N. Design of an arithmetic element for serial processing in an iterative structure // Computer Arithmetic: IEEE 3rd Symposium on. - 1975. - Р. 223-231.

9. Goyal L.N. A note on atrubin's real-time iterative multiplier // IEEE Trans. on Electronic Computers. -1976. - Vol. 25. - N.05. - P. 546-548.

10. Shimon Even, Ami Litman. A systematic design and explanation of the atrubin multiplier // Sequences II / Eds. R. Capocelli, A. DeSantis, U. Vaccaro. - Springer Verlag, 1993.- P. 189-202.

11. Guy Even Real-time iterative systolic integer multiplier // Integration, The VLSI Journal. - 1997. -Vol. 22. - N. 1-2. - P. 23-38.

12. Jebelean T., Szakacs L. Functional-based synthesis of systolic online multipliers // Proc. of the Seventh Inter. Symposium on Symbolic and Numeric Algorithms for Scientific Computing (Timisoara, Romania, Sept. 25-29 2005). - 2005. - P. 267-275.

Статья поступила 24 марта 2016 г.

Матюшкин Игорь Валерьевич - кандидат физико-математических наук, доцент кафедры проектирования и конструирования интегральных микросхем (ПКИМС) МИЭТ, ведущий научный сотрудник отдела САПР ИППМ РАН, старший научный сотрудник отдела функциональной электроники АО «НИИМЭИ Микрон» (г. Москва). Область научных интересов: математическое моделирование, метаматематика и философия науки, клеточные автоматы, моделирование наноразмерных систем, моделирование технологических процессов микро- и наноэлектроники. E-mail: imatyushkin@ippm.ru

Жемерикин Антон Валерьевич - студент МИЭТ. Область научных интересов: клеточные автоматы, параллельные вычисления, математическое моделирование.

Заплетина Мария Андреевна - магистрант кафедры ПКИМС МИЭТ. Область научных интересов: клеточные автоматы, параллельные алгоритмы вычислений на GPU, численные методы, приборно-технологическое моделирование.

Вниманию читателей журнала «Известия высших учебных заведений. Электроника»

Оформить годовую подписку на электронную копию журнала можно на сайтах

• Научной электронной библиотеки: www.elibrary.ru

• ООО «Агентство «Книга-Сервис»: www.rucont.ru;www.akc.ru;

www.pressa-rf.ru

♦Урал-Пресс: www.delpress.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.