БЫСТРОДЕЙСТВУЮЩЕЕ УСТРОЙСТВО ДЛЯ РАСЧЕТА ПОРЯДКОВЫХ НОМЕРОВ БИТОВ С ВЫСОКИМ ЛОГИЧЕСКИМ УРОВНЕМ В СТРОКЕ ДАННЫХ
HIGH-SPEED APPARATUS FOR COUNTING INDEX NUMBERS OF HIGH BITS IN DATA LINE

Устройство относится к области обработки информации и может быть использовано в вычислительной технике, системах коммуникации и защиты информации от несанкционированного доступа.
2
j-1
k
Известен многовходовый одноразрядный сумматор (см. патент на изобретение RU 2047216, МПК G06F 7/50). Многовходовый одноразрядный сумматор содержит К элементов сложения по модулю два (K[logn] n разрядность входного двоичного слова), выход r-го из которых  соединен с r-м выходом сумматора, отличающийся тем, что содержит p мажоритарных элементов (p[n/2]), s-й из которых  имеет порог, равный 2s, i-й вход  сумматора соединен с i-м входом первого элемента сложения по модулю два и i-м входом s-го мажоритарного элемента, t-й вход j-го элемента сложения по модулю два  соединен с выходом мажоритарного элемента с порогом t·2, (k+1)-й выход сумматора соединен с выходом мажоритарного элемента с порогом 2.
2
Данный многовходовый одноразрядный сумматор можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n многовходовых одноразрядных сумматоров. При этом общее число сумматоров, используемых в устройстве, составляет O(n). Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки, при которой с использованием одного многовходового одноразрядного сумматора последовательно рассчитывается каждый порядковый номер, существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известен метод и устройство для подсчета количества бит с высоким логическим уровнем (см. патент на изобретение US 5541865, МПК G06F 7/60, G06F 007/50). Устройство, предназначенное для вычисления числа бит с высоким логическим уровнем элемента данных, включает: первый набор сумматоров с сохранением переноса, состоящий из первого, второго, третьего и четвертого сумматоров, входы которых соединены с входами устройства так, чтобы получить первую, вторую, третью и четвертую битовые части первого элемента данных соответственно, первый и второй сумматоры с сохранением переноса формируют на своих выходах первый многобитовый блок данных, а третий и четвертый сумматоры с сохранением переноса формируют на своих выходах второй многобитовый блок данных; второй набор сумматоров, состоящий из пятого и шестого сумматоров с сохранением переноса, входы которых соединены так, чтобы получить первый и второй многобитовые блоки данных соответственно, пятый и шестой сумматоры с сохранением переноса формируют на своих выходах третий многобитовый блок данных; седьмой сумматор с сохранением переноса, входы которого соединены так, чтобы получить третий многобитовый блок выходных данных, который формирует на своих выходах четвертый многобитовый блок данных; полный сумматор, входы которого соединены так, чтобы получить четвертый многобитовый блок данных, который формирует на своих выходах количество бит с высоким логическим уровнем. Каждый сумматор с сохранением переноса представляет собой 4-2 сумматор с сохранением переноса. Полный сумматор представляет собой четырехбитовый полный сумматор.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом общее число используемых сумматоров составляет O(n). Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известно устройство для расчета количества бит с высоким логическим уровнем (см. патент на изобретение US 6754685, МПК G06F 5/01, G06F 7/60, G06F 007/00). Устройство выполняет функцию расчета количества бит с высоким логическим уровнем входной строки данных и функцию сдвига данных. Метод, положенный в основу работы устройства, обеспечивает баланс между нагрузкой счетчиков числа бит с высоким логическим уровнем и схем сдвига данных. Это приводит к увеличению скорости выполнения операции. Устройство имеет входы для битов первого вектора, второго вектора, средства для вычисления числа бит с высоким логическим уровнем первого вектора, средства для осуществления операции сдвига множества бит второго вектора на основе результатов расчета числа бит с высоким логическим уровнем первого вектора, средств для формирования третьего вектора, получающегося на основе операции сдвига. Устройство состоит из множества динамических уровней, за которыми следуют статические уровни. На динамических уровнях используются динамические узлы, которые вычисляют величины, зависящие от отдельных бит указателя и разреженного вектора. Устройство расширяется путем повторения базовой схемы, поэтому оно может быть изменено в соответствии с размером указателя и разреженного вектора.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом аппаратурная сложность устройства составляет O(n). Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известно устройство и метод для расчета количества бит с высоким логическим уровнем (см. патент на изобретение US 5717616 США, МПК G06F 7/60, G06F 017/00). Устройство предназначено для вычисления числа бит с высоким логическим уровнем в строках большой длины. При этом вся строка разделяется более мелкие части и для каждой из частей рассчитывается число бит с высоким логическим уровнем. Для ускорения выполнения операции используются сумматоры с сохранением переноса. Устройство состоит из регистра данных, содержащего строку битов, в которой рассчитывается число битов с высоким логическим уровнем, множества полных сумматоров, каждый из которых имеет выход и суммирует биты с высоким логическим уровнем из уникального набора битов из регистра данных, множества сумматоров с сохранением переноса, каждый из которых имеет выход, и суммирует биты с высоким логическим уровнем из уникального набора битов из аккумулирующего регистра. Каждый из сумматоров с сохранением переноса формирует уникальный набор выходных данных в регистре назначения, где регистр назначения хранит количество бит с высоким логическим уровнем из подмножества бит регистра данных и группу бит из аккумулирующего регистра в формате суммы с сохранением переноса. Множество полных сумматоров образуют иерархическую структуру так, что первый уровень сумматоров рассчитывает число бит с высоким логическим уровнем, хранящихся в регистре данных. Входы полных сумматоров второго уровня соединены с выходами сумматоров первого уровня так, что каждый из сумматоров второго уровня складывает результаты на выходах двух сумматоров первого уровня, причем каждый из выходов сумматора первого уровня соединен с одним входом сумматора второго уровня. Число полных сумматоров первого уровня составляет половину от числа бит в регистре данных, число полных сумматоров на втором уровне составляет четверть от числа бит в регистре данных. Сумматоры с сохранением переноса суммируют одинаковое количество бит. Роль регистра назначения и аккумулирующего регистра выполняет один и тот же регистр.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом общее число используемых сумматоров составляет O(n). Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
2
Задачей настоящего решения является разработка быстродействующего устройства расчета порядковых номеров битов и общего числа бит с высоким логическим уровнем в строке данных длиной n, при этом число используемых сумматоров должно быть более O(nlogn).
3
2
3
2
Техническим результатом является обеспечение задержки расчета порядковых номеров битов и общего числа бит с высоким логическим уровнем не более tlogn, где t - задержка сумматора с сохранением переноса, при этом число используемых в устройстве сумматоров составляет nlogn.
Поставленная задача достигается тем, что быстродействующее устройство расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной
k
m
m
m-1
m-1
m-1
m-1
j
i
m-1
m
i
m-1
q
m
i
m-1
i
m-1
i
m
p
m-1
i
m-1
i,m
i,m
q
m
1
11
1
1
2
2
k
j
k
j
n
k
j
k
j
n=2 бит, где k - положительное целое число, согласно изобретению содержит n бинарных входов  битов входной строки данных, n выходов  порядковых номеров битов с высоким логическим уровнем, выход POPCNT количества битов с высоким логическим уровнем, n элементов логического умножения , каждый из которых имеет выход Y, соединеный с выходом Q, первый вход X1 и второй бинарный вход Х2, иерархические вычислительные уровни , каждый из которых имеет 2 входов D и 2 выходов , причем каждый вычислительный уровень  состоит из первого и второго вычислительных уровней L и 2 сумматоров , имеющих первый А и второй В входы и выход С, каждый вход  уровня L соединен с входом D первого вычислительного уровня L, каждый вход D, где q=i+2, уровня L соединен с входом D второго уровня L, каждый выход S первого уровня L соединен с выходом S уровня L, выход S, где p=2, первого уровня L дополнительно соединен со вторыми входами В сумматоров , каждый выход S второго уровня L соединен с первым входом А сумматора SM, каждый выход С сумматора SM соединен с выходом S, где q=i+2, уровня L, a каждый вычислительный уровень L состоит из сумматора SM, имеющего первый А и второй В входы и выход С, причем первый вход А сумматора соединен с входом D и выходом S, второй вход В сумматора соединен с входом D, выход С сумматора соединен с выходом S, каждый вход  вычислительного уровня L соединен с входом устройства DS, каждый выход  уровня L соединен с первым входом X1 элемента И, выход S уровня L дополнительно соединен с выходом POPCNT устройства, каждый вход D уровня L дополнительно соединен со вторым бинарным входом Х2 элемента И.
1
2
3
Изобретение поясняется чертежами, где на фиг.1 приведена схема устройства расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n=8, на фиг.2 приведена схема вычислительного уровня L, на фиг.3 приведена схема вычислительного уровня L, на фиг.4 приведена структурно-функциональная схема вычислительного уровня L устройства, на фиг.5 приведена диаграмма орграфа матрицы сумматоров устройства для случая n=16, где
11
43
SM-SM сумматоры;
А, В - первый и второй входы сумматора;
С - выход сумматора;
1
2
3
L, L, L, - вычислительные уровни;
1
2
1
D, D - входы вычислительного уровня L;
1
4
2
D-D - входы вычислительного уровня L;
1
8
3
D-D - входы вычислительного уровня L;
1
16
4
D-D - входы вычислительного уровня L;
1
2
1
S,S - выходы результатов суммирования вычислительного уровня L;
1
4
2
S-S - выходы результатов суммирования вычислительного уровня L;
1
8
3
S-S - выходы результатов суммирования вычислительного уровня L,
1
16
4
S-S - выходы результатов суммирования вычислительного уровня L;
1
8
DS-DS - бинарные входы битов входной строки данных устройства;
1
8
Q-Q - выходы значений порядковых номеров битов с высоким логическим уровнем;
POPCNT - выход количества битов с высоким логическим уровнем;
1
8
И-И - логические элементы И;
X1 - первый вход логического элемента И;
Х2 - второй бинарный вход логического элемента И;
Y - выход логического элемента И.
1
n
1
n
i,j
i,j
2
1
2
n
k-1
В общем случае предлагаемое устройство имеет n бинарных входов DS-DS для получения битов входной строки данных, n выходов Q-Q результатов расчета порядковых номеров битов с высоким логическим уровнем, выход POPCNT результатов расчета количества бит с высоким логическим уровнем. Устройство содержит сумматоры SM, имеющие первый А и второй В входы для подачи суммируемых величин и выход С результатов суммирования чисел, подаваемых на входы А и В. Сумматоры SM образуют матрицу с k=logn стадиями суммирования и n линиями (фиг.5), причем индекс i, указывающий номер сумматора, на стадии суммирования, меняется от 1 до 2, а индекс j, указывающий номер стадии суммирования, меняется от 1 до k. На каждой стадии суммирования расположено n/2 сумматоров. Устройство также содержит n элементов логического умножения И, И…, И, каждый из которых имеет выход Y, первый вход X1 и второй бинарный вход Х2, при этом число на выходе Y равно числу на входе XI, если на вход Х2 подается сигнал с высоким логическим уровенем, если на вход Х2 подается сигнал с низким логическим уровнем, то на выходе Y образуется код числа, равного нулю.
Ниже приведены два способа описания соединений сумматоров.
2
Для описания первого способа рассматривается матрица с числом линий n и числом стадий суммирования (столбцов) k=logn.
1
16
1
16
1
16
i
Устройство содержит nk/2 сумматоров, которые располагаются в матрице приведенным ниже способом, при этом на каждой стадии суммирования находится n/2 сумматоров. Расположение сумматоров иллюстрируется диаграммой орграфа для случая n=16, k=4, представленной на фиг.5. Во всех вершинах, кроме висячих, определяющих входы и выходы матрицы, расположены сумматоры. Входы D-D матрицы соединены с соответстующими входами DS-DS устройства. Матрица имеет выходы S-S. Каждый выход  матрицы соединен с входом X1 элемента логического умножения И. На фиг.5 представлены 4 стадии суммирования j=1, j=2, j=3, j=4. Каждая вершина орграфа, в которой расположен сумматор, имеет две входящие дуги и одну или несколько исходящих дуг. Две входящие дуги определяют соединения первого А и второго В входов сумматора. Исходящие дуги определяют соединения выхода сумматора.
i
i
i
i
Сумматоры первой стадии расположены на четных линиях с номерами 2i, . Сумматоры второй стадии расположены на линиях с номерами 4i и . Сумматоры третьей стадии расположены на линиях с номерами 8i, 8i-1, 8i-2, . В общем случае сумматоры стадии  расположены на линиях с номерами  Каждый вход  соединен с входом A первого, ближайшего к входу DS, сумматора, расположенного на линии i, если такого сумматора нет, вход DS соединен с выходом S. Выход С каждого сумматора, расположенного на линии  и стадии  соединен с входом А сумматора следующей за j стадии, расположенного на линии i, причем если на линии i нет ни одного сумматора на стадиях с номером, большим j, то выход С соединен с выходом S.
i,1
i,1
j
Каждый вход матрицы  дополнительно соединен с входом В сумматора МS, расположенного на линии 2i первой стадии. Выход С каждого сумматора MS, расположенного на линии  первой стадии дополнительно соединен с входами В двух сумматоров, расположенных на второй стадии, на линиях с номерами 4i и . Выход С каждого сумматора, расположенного на линии  второй стадии дополнительно соединен с входами В четырех сумматоров, расположенных на четырех линиях с номерами 8i, 8i-1, 8i-2,  третьей стадии. В общем случае, выход С каждого сумматора стадии  расположенного на линии с номером  дополнительно соединен с входами В 2 сумматоров, расположенных на линиях с номерами  стадии j+1.
2
1
n
1
n
k
1
n
1
n
k
1
n
1
n
Описанная выше матрица с числом линий n и числом стадий суммирования k=logn, имеющая входы D-D и выходы S-S представляет собой вычислительный уровень L c входами D-D и выходами S-S. Альтернативный способ построения уровня L и соединения входов D-D и входов S-S приведен далее.
i,j
1
2
3
m
1
2
r
1
2
r
1
11
1
1
2
2
m
Согласно второму способу для описания соединений сумматоры SM удобно сгруппировать в вычислительные уровни . Некоторые вычислительные уровни L, L, L выделены на диаграмме орграфа, представленной на фиг.5. Каждый уровень L имеет r=2 входов результатов вычислений D, D,…,D и r выходов результатов вычислений S, S,…,S. При этом, как показано на фиг.2, вычислительный уровень L состоит из сумматора SM, первый вход А которого соединен с входом D и с выходом S, второй вход В соединен с входом D, а выход С соединен с выходом S.
2
1
12
22
1
4
2
1
2
1
1
2
1
1
2
2
2
1
3
2
1
1
4
2
2
1
1
2
1
1
2
2
2
1
3
2
12
4
2
22
2
1
12
22
1
1
12
2
1
22
На фиг.3 представлен вычислительный уровень L. Он состоит из первого и второго уровней L и двух сумматоров SM и SM. Входы D-D уровня L образованы входами D,D уровней L. При этом вход D уровня L соединен с входом D первого уровня L, вход D уровня L соединен с входом D первого уровня L, вход D, уровня L соединен с входом D второго уровня L, вход D уровня L соединен с входом Dвторого уровня L. Выход S уровня L соединен с выходом S первого уровня L, выход S уровня L соединен с выходом S первого уровня L, выход S уровня L соединен с выходом С первого сумматора SM, а выход S уровня L соединен с выходом С второго сумматора SM. При этом выход S первого уровня L дополнительно соединен с входом В первого сумматора SM и с входом В второго сумматора SM, выход S второго уровня L соединен с входом А первого сумматора SM, выход S второго уровня L соединен с входом А второго сумматора SM.
1
2
3
1
2
1
8
3
3
2
13
23
33
43
1
4
3
1
4
2
5
8
3
1
4
2
1
4
2
1
4
3
1
4
13
23
33
43
3
5
8
5
8
1
8
1
8
4
2
3
13
23
33
43
43
На фиг.1 представлено устройство для расчета порядковых номеров битов с высоким логическим уровнем для случая n=8. Устройство содержит четыре вычислительных уровня L, два вычислительных уровня L, один вычислительный уровень L. Причем уровни L находятся внутри уровней L и не изображены на фиг.1. Устройство также содержит элементы логического умножения И-И. Выходы уровня L соединены через элементы логического умножения с выходами устройства. Уровень L включает первый и второй уровни L и четыре сумматора SM, SM, SM, SM. Входы D-D уровня L образованы входами D-D первого уровня L. Входы D-D уровня L образованы входами D-D, второго уровня L. Выходы S-S первого уровня L образуют выходы S-S уровня L и соединены с первыми входами X1 элементов логического умножения И-И. Выходы С сумматоров SM, SM, SM, SM уровня L образуют выходы S-S и соединены с первыми входами элементов логического умножения И-И. Вторые бинарные входы Х2 элементов логического умножения И-И соединены с входами устройства D-D. Выход S первого уровня L, входящего в состав уровня L, дополнительно соединен с входами В сумматоров SM, SM, SM, SM. Выход POPCNT устройства соединен с выходом С сумматора SM.
k
k-1
k-2
k-3
k-m
m-1
m-1
m-1
m-1
1
2
n
1
2
n
1
2
3
k
m-1
i
m
i
m-1
q
m
i
m-1
i
m-1
i
m
p
m-1
i,m
i
m-1
i,m
i,m
q
m
1
1
2
1
2
11
1
1
2
2
k
1
2
n
1
2
n
1
2
n
1
2
n
i
k
i
n
k
i
k
i
i
В общем случае устройство для расчета порядковых номеров битов с высоким логическим уровнем в бинарной строке данных длиной n=2, где k - положительное целое число, имеет n бинарных входов DS,DS,…,DS битов входной строки данных, n выходов Q,Q,…,Q порядковых номеров битов с высоким логическим уровнем, выход POPCNT количества битов с высоким логическим уровнем. Устройство содержит 2 вычислительных уровней L, 2 вычислительных уровней L, 2 вычислительных уровней L, один вычислительный уровень L. В общем случае устройство содержит 2 вычислительных уровней . Каждый вычислительный уровень  состоит из первого и второго вычислительных уровней L и 2 сумматоров , имеющих первый А и второй В входы для подачи суммируемых чисел и выход С результатов суммирования чисел на входах А и В. Каждый вход D уровня L образован входом D первого вычислительного уровня L, каждый вход D, где q=i+2, уровня L образован входом D второго уровня L. Каждый выход S первого уровня L образует выход S уровня L, выход S, где p=2, первого уровня L дополнительно соединен со вторыми входами В сумматоров SM. Каждый выход S второго уровня L соединен с первым входом А сумматора SM, каждый выход С сумматора SM образует выход S, где q=i+2, уровня L. Вычислительный уровень L имеет бинарные входы D,D, выходы S,S и состоит из сумматора SM, имеющего первый А и второй В входы для подачи суммируемых чисел и выход С результатов суммировния чисел на входах А и В, причем первый вход А сумматора соединен с входом D и выходом S, второй вход В сумматора соединен с входом D, выход С сумматора соединен с выходом S. Уровень L имеет n бинарных входов D,D,…,D, образующих входы устройства DS,DS,…,DS, n выходов S,S…,S результатов суммирования. Устройство также содержит n элементов логического умножения И,И,…,И. Каждый элемент логического умножения имеет выход Y, первый вход X1 и второй бинарный вход Х2, при этом число на выходе Y равно числу на входе X1, если на вход Х2 подается высокий логический уровень, если на входе Х2 низкий логический уровень, то число на выходе Y равно нулю. Каждый выход результатов суммирования S уровня L соединен с первым входом X1 элемента логического умножения И, где i=1,…,n. Выход результатов суммирования S уровня L дополнительно соединен с выходом POPCNT устройства. Каждый вход D уровня L соединен со вторым бинарным входом Х2 элемента логического умножения . Каждый выход Y элемента логического умножения И образует выход Q порядкового номера бита с высоким логическим уровнем.
1
2
n
3
1
2
n
3
3
2
ЗИ
ЗИ
3
2
Устройство работает следующим образом. На бинарные входы DS, DS,…, DS устройства для расчета порядковых номеров битов с высоким логическим уровнем поступают биты входной строки данных. Через время задержки t на выходах Q,Q,…,Q устройства появляются значения порядковых номеров битов с высоким логическим уровнем во входной строке данных. Скорость выполнения операции зависит от типа используемых сумматоров. Если задержка сумматора не зависит от числа суммируемых разрядов и равна t, задержка выполнения предлагаемым устройством расчета порядковых номеров битов с высоким логическим уровнем составляет tlog(n)+t, где t - задержка на логическом элементе И, которой обычно можно пренебречь. Задержка формирования результата на выходе POPCNT равна tlog(n).
2
В качестве сумматоров  могут использоваться сумматоры с сохранением переноса, сумматоры с последовательным переносом, сумматоры со сквозным переносом, сумматоры с ускоренным переносом и другие сумматоры, описанные, например, в книгах Жан М. Рабаи, Ананта Чандракасан, Боривож Николич. Цифровые интегральные схемы. Методология проектирования. М.: Вильямс, 2007. 912 с., или Хамахер К., Вранешич 3., Заки С. Организация ЭВМ. 5-е изд. СПб.: Питер; Киев: Изд. группа BHV, 2003. 848 с. При расчете порядковых номеров битов с высоким логическим уровнем в n разрядной строке данных используются сумматоры входных данных с числом разрядов от 1 до logn.
i,j
В качестве сумматоров SM могут также использоваться сумматоры по модулю 2. В этом случае устройство определяет четность или нечетность порядкового номера бита с высоким логическим уровнем в строке данных. В общем случае, если используются сумматоры по модулю d, порядковые номера битов с высоким логическим уровнем в строке данных также будут вычисляться по модулю d.
i,j
i,j
Число разрядов суммируемых сумматорами SM величин различно. У сумматора SM уровня  на первый вход поступает число с количеством двоичных разрядов от 1 до j, а на второй вход поступает число с количеством двоичных разрядов j.
2
3
2
3
Для ускорения работы уровни L, L и т.д. можно рассматривать как единые устройства, не имеющие иерархической структуры, реализующие логические функции в соответствии с приведенным описанием. При этом осуществляется оптимизация быстродействия уровней L, L и т.д.
Устройство можно использовать при значениях длины входной строки данных n, отличной от степени числа 2. При этом используется только часть сумматоров, на которые поступают биты строки входных данных. Неиспользуемые сумматоры можно исключить из устройства.
2
Таким образом, устройство выполняет расчет порядковых номеров битов с высоким логическим уровнем входной бинарной строки данных. Одновременно с расчетом порядковых номеров битов устройство осуществляет расчет количества битов с высоким логическим уровнем во входной строке данных. Устройство характеризуется высокой скоростью выполнения операции. Задержка выдачи результата составляет не более задержки известных устройств расчета количества бит с высоким логическим уровнем. Аппаратурная сложность устройства, определяемая количеством используемых сумматоров, составляет nlog(n), где n - число бит входной строки данных. Это значительно меньше количества сумматоров, необходимого для расчета порядковых номеров битов с высоким логическим уровнем с использованием n устройств расчета количества бит с высоким логическим уровнем.