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

Устройство относится к области обработки информации и может быть использовано в вычислительной технике, системах коммуникации и защиты информации от несанкционированного доступа.
2
.
j-1
k
Известен многовходовый одноразрядный сумматор (пат. №2047216 Россия, G06F 7/50. Многовходовый одноразрядный сумматор). Многовходовый одноразрядный сумматор содержит К элементов сложения по модулю два (К [logn] n разрядность входного двоичного слова), выход r-го из которых соединен с r-м выходом сумматора, отличающийся тем, что содержит p мажоритарных элементов (p [n/2]), s-й которых  имеет порог, равный 2s, i-й вход  сумматора соединен с i-м входом первого элемента сложения по модулю два и 1-м входом s-го мажоритарного элемента, t-й вход j-го элемента сложения по модулю два , ,  соединен с выходом мажоритарного элемента с порогом t∙2, (k+1)-й выход сумматора соединен с выходом мажоритарного элемента с порогом 2
2
Данный многовходовый одноразрядный сумматор можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n многовходовых одноразрядных сумматоров, при этом общее число используемых в устройстве сумматоров составляет O(n).
Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки, при которой с использованием одного многовходового одноразрядного сумматора последовательно рассчитывается каждый порядковый номер, существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известен метод и устройство для подсчета количества бит с высоким логическим уровнем (пат. №5541865 США, G06F 7/60, 007/50. Method and apparatus for performing a population count operation). Устройство, предназначенное для вычисления числа бит с высоким логическим уровнем элемента данных, включает: первый набор сумматоров с сохранением переноса, состоящий из первого, второго, третьего и четвертого сумматоров, входы которых соединены с входами устройства так, чтобы получить первую, вторую, третью и четвертую битовые части первого элемента данных соответственно, первый и второй сумматоры с сохранением переноса формируют на своих выходах первый многобитовый блок данных, а третий и четвертый сумматоры с сохранением переноса формируют на своих выходах второй многобитовый блок данных; второй набор сумматоров, состоящий из пятого и шестого сумматоров с сохранением переноса, входы которых соединены так, чтобы получить первый и второй многобитовые блоки данных соответственно, пятый и шестой сумматоры с сохранением переноса формируют на своих выходах третий многобитовый блок данных; седьмой сумматор с сохранением переноса, входы которого соединены так, чтобы получить третий многобитовый блок выходных данных, который формирует на своих выходах четвертый многобитовый блок данных; полный сумматор, входы которого соединены так, чтобы получить четвертый многобитовый блок данных, который формирует на своих выходах количество бит с высоким логическим уровнем. Каждый сумматор с сохранением переноса представляет собой 4-2 сумматор с сохранением переноса. Полный сумматор представляет собой четырехбитовый полный сумматор.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом общее число используемых сумматоров составляет O(n).
Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известно устройство для расчета количества бит с высоким логическим уровнем (пат. №6754685 США, G06F 5/01, 7/60, 007/00. Dynamic popcount/shift circuit). Устройство выполняет функцию расчета количества бит с высоким логическим уровнем входной строки данных и функцию сдвига данных. Метод, положенный в основу работы устройства, обеспечивает баланс между нагрузкой счетчиков числа бит с высоким логическим уровнем и схем сдвига данных. Это приводит к увеличению скорости выполнения операции. Устройство имеет входы для битов первого вектора, второго вектора, средства для вычисления числа бит с высоким логическим уровнем первого вектора, средства для осуществления операции сдвига множества бит второго вектора на основе результатов расчета числа бит с высоким логическим уровнем первого вектора, средств для формирования третьего вектора, получающегося на основе операции сдвига. Устройство состоит из множества динамических уровней, за которыми следуют статические уровни. На динамических уровнях используются динамические узлы, которые вычисляют величины, зависящие от отдельных бит указателя и разреженного вектора. Устройство расширяется путем повторения базовой схемы, поэтому оно может быть изменено в соответствии с размером указателя и разреженного вектора.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом аппаратурная сложность устройства составляет O(n).
Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Известно устройство и метод для расчета количества бит с высоким логическим уровнем (пат. №5717616 США, G06F 7/60, 017/00 Computer hardware instruction and method for computing population counts). Устройство предназначено для вычисления числа бит с высоким логическим уровнем в строках большой длины. При этом вся строка разделяется на более мелкие части и для каждой из частей рассчитывается число бит с высоким логическим уровнем. Для ускорения выполнения операции используются сумматоры с сохранением переноса. Устройство состоит из регистра данных, содержащего строку битов, в которой рассчитывается число битов с высоким логическим уровнем, множества полных сумматоров, каждый из которых имеет выход, и суммирует биты с высоким логическим уровнем из уникального набора битов из регистра данных, множества сумматоров с сохранением переноса, каждый из которых имеет выход, и суммирует биты с высоким логическим уровнем из уникального набора битов из аккумулирующего регистра. Каждый из сумматоров с сохранением переноса формирует уникальный набор выходных данных в регистре назначения, где регистр назначения хранит количество бит с высоким логическим уровнем из подмножества бит регистра данных и группу бит из аккумулирующего регистра в формате суммы с сохранением переноса. Множество полных сумматоров образуют иерархическую структуру так, что первый уровень сумматоров рассчитывает число бит с высоким логическим уровнем, хранящихся в регистре данных. Входы полных сумматоров второго уровня соединены с выходами сумматоров первого уровня так, что каждый из сумматоров второго уровня складывает результаты на выходах двух сумматоров первого уровня, причем каждый из выходов сумматора первого уровня соединен с одним входом сумматора второго уровня. Число полных сумматоров первого уровня составляет половину от числа бит в регистре данных, число полных сумматоров на втором уровне составляет четверть от числа бит в регистре данных. Сумматоры с сохранением переноса суммируют одинаковое количество бит. Роль регистра назначения и аккумулирующего регистра выполняет один и тот же регистр.
2
Данное устройство можно использовать для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n. Но для параллельной обработки необходимо использовать n устройств подсчета количества бит с высоким логическим уровнем, при этом общее число используемых сумматоров составляет O(n).
Недостатком такого решения является существенное усложнение схемы с параллельной обработкой. При использовании последовательной обработки существенно возрастает время расчета порядковых номеров битов с высоким логическим уровнем.
Задачей настоящего решения является разработка простого устройства с количеством используемых сумматоров не более O(n) для расчета значений порядковых номеров битов и общего числа бит с высоким логическим уровнем в строке данных длиной n бит, обеспечивающего высокое быстродействие за счет параллельной обработки данных.
2
Техническим результатом является сокращение числа используемых в устройстве сумматоров до 5/2n-2log(n)-2 при сохранении высокой скорости выполнения операции.
k
l-1
-1
j-1
j-1
k-1
j-l
j-1
1
2
n
1
2
n
1
2
n
ij
2
ij
ij
ij
l,k
n/2,k
ij
2i-1,
j+1
2ij+1
2ij+1
2ij+1
i,k
2
2i-1
2i-1
2i-1
2i-1,
2i-1
i,k
2i
i,k
2i
2i,
2i
2i
n/2,k
11
i,j
l.j
1,k
i,k
i,j
Поставленная задача достигается тем, что устройство для расчета порядковых номеров битов с высоким логическим уровнем в строке данных, согласно решению содержит n=2 бинарных входов битов строки данных Db, Db,.…, Db, где k - целое положительное число, n выходов Q, Q,.…, Q значений порядковых номеров битов с высоким логическим уровнем в строке данных, выход POPCNT числа битов с высоким логическим уровнем в строке данных, n элементов логического умножения И, И…, И, каждый из которых имеет выход Y, первый вход X1 и второй бинарный вход Х2, и формирует на выходе Y результат умножения данных на входах X1 и Х2, вычислительные блоки M, образующие структуру с k уровнями обработки, где индекс j меняется от 1 до k=logn и указывает номер уровня обработки, а индекс i меняется от 1 до 2 и указывает номер блока на уровне j, каждый блок M имеет вход I_NUM1 результатов суммирования с нижнего уровня и выход O_NUM2 результатов суммирования, каждый блок M, где j=2,.…, k, i=1, 2, …, 2j дополнительно имеет вход I_NUM2 результатов суммирования с нижнего уровня и выход O_NUM результатов суммирования, передаваемых на верхний уровень, каждый блок M, где j=2,.…, k, i=2, 3, …, 2 дополнительно имеет вход I_NUM результатов суммирования с верхнего уровня и выход O_NUM1 результатов суммирования, блок M дополнительно имеет выход O_NUM1 результатов суммирования, блок M дополнительно имеет выход I_NUM2 результатов суммирования, при этом у блока M уровня j, где j=1, 2,.…, k-1, i=1, 2,.…, 2, выход O_NUM1 соединен с входом I_NUM блока M выход O_NUM2 соединен с входом I_NUM блока M вход I_NUM1 соединен с выходом O_NUM блока M, вход I_NUM2 соединен с выходом O_NUM блока M у блоков M последнего уровня k, где k=logn, i=1, 2,.…, 2 выход O_NUM1 соединен с первым входом X1 логического элемента И вход I_NUM1 соединен с входом Db устройства и вторым бинарным входом Х2 логического элемента И, выход логического элемента И соединен с выходом Q устройства, выход O_NUM2 блока Мсоединен с первым входом X1 логического элемента И, вход I_NUM2 блока М соединен с входом Db устройства и вторым бинарным входом Х2 логического элемента И выход логического элемента И соединен с выходом Q, устройства, выход O_NUM2 блока M дополнительно соединен с выходом POPCNT устройства. У блока М вход I_NUM1 соединен с выходом O_NUM2. Каждый блок промежуточного уровня M, где j=2,.…, k-1, i=2, включает в себя сумматор с первым I1 и вторым I2 входами, и выходом OU, причем вход блока I_NUM1 соединен с первым входом сумматора I1, вход I_NUM соединен со вторым входом сумматора I2 и с выходом O_NUM1, выход O_NUM2 соединен с выходом OU сумматора. Каждый блок M, где j=2,.…, k-1 включает в себя сумматор с первым I1 и вторым I2 входами, и выходом OU, причем вход I_NUM1 соединен с первым входом сумматора I1 и с выходом O_NUM2, вход I_NUM2 соединен со вторым входом сумматора I2, выход O_NUM соединен с выходом OU сумматора. Блок М включает в себя сумматор с первым I1 и вторым I2 входами, и выходом OU, причем вход I_NUM1 соединен с первым входом сумматора I1 и с выходом O_NUM1, вход I_NUM2 соединен со вторым входом сумматора I2, выход O_NUM соединен с выходом OU сумматора и с выходом O_NUM2. Каждый блок М последнего уровня k, где i=2,.…, n/2, состоит из трех сумматоров, каждый из которых имеет первый I1 и второй I2 входы, и выход OU, причем вход I_NUM1 соединен с первыми входами I1 первого и второго сумматоров, вход I_NUM2 соединен со вторым входом I2 первого сумматора, вход I_NUM соединен со вторым входом I2 второго сумматора и с первым входом I1 третьего сумматора, выход OU первого сумматора соединен со вторым входом I2 третьего сумматора и с выходом O_NUM при его наличии, выход O_NUM1 соединен с выходом OU второго сумматора, выход O_NUM2 соединен с выходом OU третьего сумматора. Каждый блок промежуточного уровня M, где j=2,.…, k-1, i=2, 3,.…, 2-1 состоит из двух сумматоров, имеющих первый I1 и второй I2 входы, и выход OU, причем вход I_NUM1 соединен с первыми входами I1 первого и второго сумматоров, вход I_NUM2 соединен со вторым входом I2 первого сумматора, вход I_NUM соединен с вторым входом I2 второго сумматора и с выходом O_NUM1, выход O_NUM соединен с выходом OU первого сумматора, выход O_NUM2 соединен с выходом OU второго сумматора.
i,k
2
s,t
1,m
pq
1,k
n/2,k
k-1
t-1
q-1
Изобретение поясняется чертежами, где на фиг.1 приведена структурно-функциональная схема устройства для расчета порядковых номеров битов с высоким логическим уровнем в строке данных длиной n=8, на фиг.2 приведена схема блоков М последнего уровня преобразования k, где k=logn, i=2, 3,.…, 2, на фиг.3 приведена схема блоков промежуточного уровня М, где 1<t<k, a 1<s<2, на фиг.4 приведена схема блоков М, где 1<m<k, на фиг.5 приведена схема блоков M, где q=2,.…, k-1, p=2, на фиг.6 приведена схема блока М, на фиг.7 приведена схема блока M, где
11
М - первый блок первого уровня;
12
22
М, М - первый и второй блоки второго уровня;
13
23
33
43
M, М, M, M - первый, второй, третий и четвертый блоки третьего уровня;
1
8
И- И - логические элементы И;
X1 - первый вход логического элемента И;
Х2 - второй бинарный вход логического элемента И;
Y - выход логического элемента И;
O_NUM - выход результатов суммирования, передаваемых на верхний уровень;
O_NUM1, O_NUM2 - первый и второй выходы результатов суммирования, передаваемых на нижний уровень;
I_NUM - вход результатов суммирования с верхнего уровня;
I_NUM1, I_NUM2 - первый и второй входы результатов суммирования с нижнего уровня;
1
2
3
4,
5
6
7
8
Q, Q, Q, QQ, Q, Q, Q - выходы значений порядковых номеров битов с высоким логическим уровнем;
1
2
3
4
5
6
7
8
Db, Db, Db, Db, Db, Db, Db, Db - бинарные входы битов входной строки данных;
POPCNT - выход суммы битов с высоким логическим уровнем;
ADD - сумматор;
I1, I2 - входы сумматора;
OU - выход сумматора.
i,j
2
11
1
2…
n
j-1
В общем случае предлагаемое устройство имеет n бинарных входов для получения битов входной строки данных, n выходов результатов расчета порядковых номеров битов с высоким логическим уровнем, выход результатов расчета количества битов с высоким логическим уровнем. Предлагаемое устройство содержит вычислительные блоки M, образующие пирамидальную структуру с k=logn уровнями обработки, причем индекс i меняется от 1 до 2 и указывает номер блока на уровне, а индекс j меняется от 1 до k и указывает номер уровня обработки. Таким образом, на первом уровне (j=1) расположен единственный блок М, на втором уровне расположено два блока, на третьем - четыре и так далее до последнего уровня (j=k), содержащего n/2 блоков. Устройство также содержит n элементов логического умножения И, И, И, каждый из которых имеет выход Y, первый вход X1 и второй бинарный вход Х2, при этом число на выходе Y равно числу на входе Х1, если на входе Х2 высокий логический уровень, если на входе Х2 низкий логический уровень, то число на выходе Y равно нулю.
i,j
Блоки M разделяются на семь типов.
11
1. Блок М имеет вход I_NUM1 и выход J_NUM2, которые соединены между собой.
Остальные блоки состоят из сумматоров ADD, каждый из которых имеет первый I1 и второй I2 входы для подачи суммируемых чисел и выход OU, на котором формируется сумма чисел, подаваемых на входы I1 и I2.
i,k
2
i,k
i,k
i,k
i,k
i,k
i,k
i,k
i,k
23
33
i,k
k-l
2. Блоки M последнего уровня преобразования k, где k=logn, i=2, 3,.…, 2-1 состоят из трех сумматоров ADD. Схема блоков M приведена на фиг.2. Блоки М имеют выход результатов суммирования, передаваемых на верхний уровень O_NUM, первый O_NUM1 и второй O_NUM2 выходы результатов суммирования, передаваемых на нижний уровень, вход I_NUM результатов суммирования с верхнего уровня, первый I_NUM1 и второй I_NUM2 входы результатов суммирования с нижнего уровня. Вход I_NUM1 блока M соединен с первым входом I1 первого сумматора и со вторым входом I2 второго сумматора. Вход I_NUM2 блока M соединен со вторым входом I2 первого сумматора. Вход I_NUM блока M соединен со вторым входом I2 второго сумматора и с первым входом I1 третьего сумматора. Выход O_NUM блока M соединен с выходом OU первого сумматора и со вторым входом I2 третьего сумматора. Выход O_NUM1 блока M соединен с выходом OU второго сумматора. Выход O_NUM2 блока M соединен с выходом OU третьего сумматора. На фиг.1 блоки М, М соответствуют описанию блока M, схема которого представлена на фиг.2.
s,t
s,t
s,t
s,t
s,t
s,t
s,t
s,t
s,t
s,t
t-1
3. Блоки M промежуточного уровня преобразования t, где 1<t<k, a 1<s<2состоят из двух сумматоров ADD. Схема блоков M приведена на фиг.3. Блоки M имеют выход результатов суммирования, передаваемых на верхний уровень O_NUM, первый O_NUM1 и второй O_NUM2 выходы результатов суммирования, передаваемых на нижний уровень, вход I_NUM результатов суммирования с верхнего уровня, первый I_NUM1 и второй I_NUM2 входы результатов суммирования с нижнего уровня. Вход I_NUM1 блока M соединен с первым входом I1 первого сумматора и со первым входом I1 второго сумматора. Вход I_NUM2 блока M соединен со вторым входом I2 первого сумматора. Вход I_NUM блока M соединен со вторым входом I2 второго сумматора и с выходом O_NUM1 блока M M. Выход O_NUM блока M соединен с выходом OU первого сумматора. Выход O_NUM2 блока M соединен с выходом OU второго сумматора. На фиг.1 не изображены блоки, которые соответствуют описанию блоков M, схема которых представлена на фиг.3, так как эти блоки появляются при длине входной строки данных n более восьми бит.
1m
1m
1,m
1,m
1,m
1,m
I2
1m
4. Блоки М промежуточного уровня преобразования m, где 1<m<k состоят из одного сумматора ADD. Схема блоков М приведена на фиг.4. Блоки М, имеют выход результатов суммирования, передаваемых на верхний уровень O_NUM, выход O_NUM2 результатов суммирования, передаваемых на нижний уровень, первый I_NUM1 и второй I_NUM2 входы результатов суммирования с нижнего уровня. Вход I_NUM1 блока М соединен с первым входом I1 сумматора и с выходом O_NUM2. Вход I_NUM2 блока М соединен со вторым входом I2 сумматора. Выход O_NUM блока М соединен с выходом OU сумматора. На фиг.1 блок M соответствуют описанию блока М, схема которого представлена на фиг.4.
p,q
p,q
p,q
p.q
p,q
p,q
p.q
22
p,q
q-1
5. Блоки M промежуточного уровня преобразования q, где 1<q<k, p=2 состоят из одного сумматора ADD. Схема блоков M приведена на фиг.5. Блоки M имеют первый O_NUM1 и второй O_NUM2 выходы результатов суммирования, передаваемых на нижний уровень, вход результатов суммирования с нижнего уровня I_NUM1, вход I_NUM результатов суммирования с верхнего уровня. Вход I_NUM1 блока M соединен с первым входом I1 сумматора. Вход I_NUM блока M соединен со вторым входом I2 сумматора и с выходом O_NUM1 блока M. Выход O_NUM2 блока M соединен с выходом OU сумматора. На фиг.1 блок М соответствуют описанию блока M, схема которого представлена на фиг.5.
1,k
2
1,k
1,k
1,k
1,k
1,k
1,k
1,k
1,k
1,k
i,k
13
1,k
6. Блок M последнего уровня преобразования k, где k=logn, состоит из одного сумматора ADD. Схема блока М приведена на фиг.6. Блок M имеет выход результатов суммирования, передаваемых на верхний уровень O_NUM, первый O_NUM1 и второй O_NUM2 выходы результатов суммирования, передаваемых на нижний уровень, первый I_NUM1 и второй I_NUM2 входы результатов суммирования с нижнего уровня. Вход I_NUM1 блока M соединен с первым входом I1 сумматора блока M и с выходом O_NUM1 блока M. Вход I_NUM2 блока M соединен со вторым входом I2 сумматора блока M. Выход O_NUM блока M соединен с выходом OU сумматора блока M и с выходом O_NUM2 блока M. На фиг.1 блок M соответствует описанию блока М, схема которого представлена на фиг.6.
n/2,k
2
n/2,k
n/2,k
n/2,k
n/2,k
n/2,k
n/2,k
n/2,k
n/2,k
43
n/2,k
7. Блок M последнего уровня преобразования k, где k=logn, состоит из трех сумматоров ADD. Схема блока M приведена на фиг.7. Блок M имеет первый O_NUM1 и второй O_NUM2 выходы результатов суммирования, передаваемых на нижний уровень, вход I_NUM результатов суммирования с верхнего уровня, первый I_NUM1 и второй I_NUM2 входы результатов суммирования с нижнего уровня. Вход I_NUM1 блока M соединен с первым входом I1 первого сумматора и с первым входом I1 второго сумматора. Вход I_NUM2 блока M соединен со вторым входом I2 первого сумматора. Вход I_NUM блока M соединен со вторым входом I2 второго сумматора и с первым входом I1 третьего сумматора. Выход OU первого сумматора блока M соединен со вторым входом I2 третьего сумматора. Выход O_NUM1 блока M соединен с выходом OU второго сумматора. Выход O_NUM2 блока M соединен с выходом OU третьего сумматора. На фиг.1 блок М соответствует описанию блока M, схема которого представлена на фиг.7.
Соединения между блоками устройства следующие.
р,m
2p-1, m+1
р,m
2р,m+1
р,m
2p-1, m+1
р,m
2р,m+1
i,k
2
2i-1
i,k
2i-1
2i-1
2p-1
2p-1
i,k
2
2i
i,k
2i
2i
2i
2i
n/2,k
m-1
k-1
k-l
Если у блока М уровня m, где m=1, 2,.…, k-1; р=1, 2,.…, 2 существует выход O_NUM1, то он соединен с входом I_NUM блока M уровня m+1. Выход O_NUM2 блока М уровня m соединен с входом I_NUM блока М уровня m+1. Вход I_NUM1 блока М уровня m соединен с выходом O_NUM блока M уровня m+1, если у блока М уровня m существует вход I_NUM2, то он соединен с выходом O_NUM блока М уровня m+1. Выход O_NUM1 каждого блока M последнего уровня k, где k=lоgn, a i=1, 2,.…, 2 соединен с первым входом X1 логического элемента И, вход I_NUM1 блока М соединен с входом Db устройства и вторым бинарным входом Х2 логического элемента И, выход логического элемента И соединен с выходом Q устройства, выход O_NUM2 блока М последнего уровня k, где k=logn, i=1, 2,.…, 2, соединен с первым входом X1 логического элемента И, вход I_NUM2 блока М соединен с входом Db устройства и вторым бинарным входом Х2 логического элемента И, выход логического элемента И соединен с выходом Q устройства. Выход O_NUM2 блока М дополнительно соединен с выходом POPCNT суммы битов с высоким логическим уровнем во входной строке данного устройства.
1
2
n
3
1
2
n
3
з
2
з
Устройство работает следующим образом. На бинарные входы Db, Db,.…, Db устройства для расчета порядковых номеров битов с высоким логическим уровнем поступают биты входной строки данных. Через время задержки t на выходах Q, Q,.…, Q, устройства появляются значения порядковых номеров битов с высоким логическим уровнем во входной строке данных. Скорость выполнения операции зависит от типа используемых сумматоров. Если задержка сумматора не зависит от числа суммируемых разрядов и равна τ, задержка t выполнения предлагаемым устройством расчета порядковых номеров битов с высоким логическим уровнем составляет t=2τ(log(n)-1). Задержка формирования результата на выходе POPCNT также равна t.
i,j
2
В блоках M могут использоваться сумматоры с сохранением переноса, сумматоры со сквозным переносом, сумматоры с ускоренным переносом и другие сумматоры, описанные, например, в книге Жан М. Рабаи, Ананта Чандракасан, Боривож Николич. Цифровые интегральные схемы. Методология проектирования. М.: Вильямс, 2007, 912 с. При расчете порядковых номеров битов с высоким логическим уровнем в n разрядной строке данных используются схемы для суммирования входных данных с числом разрядов от 1 до lоgn.
i,j
i,j
В блоках M могут использоваться сумматоры, суммирующие входные данные по модулю 2. В этом случае устройство определяет четность или нечетность порядкового номера бита с высоким логическим уровнем в строке данных. В общем случае, если в блоках M используются сумматоры, суммирующие входные данные по модулю d, порядковые номера битов с высоким логическим уровнем в строке данных также будут вычисляться по модулю d.
р,m
2
2
2
2
р,m
р,m
m-1
m-1
Число разрядов суммируемых величин в блоках различно. У блока Муровня m, где m=1, 3,.…, k; p=1, 2,.…, 2 выход O_NUM1 имеет число двоичных разрядов, равное int(log(p))+k-m+1, где функция int(log(p)) вычисляет ближайшее целое число, большее чем log(p), а выходы O_NUM2 и O_NUM имеют число двоичных разрядов, равное int(log(p))+k-m+2. Таким образом, последний сумматор последнего уровня, формирующий результат на выходе O_NUM2, имеет k+1 разряд. У блока М уровня m, где m=1, 3,.…, k; р=1, 2,.…, 2 входы I_NUM1, I_NUM2 имеют число двоичных разрядов, равное k-m+1. В блоках М можно использовать одинаковые сумматоры с числом разрядов суммируемых чисел, равным k, но при этом часть старших разрядов части сумматоров не будет использоваться.
i
Заметим, что устройство можно использовать при значениях длины входной строки данных n, отличной от степени числа 2. При этом используется только часть блоков, на которые поступают биты строки входных данных. Неиспользуемые блоки и логические элементы И можно исключить из устройства.
2
Таким образом, устройство выполняет расчет порядковых номеров битов с высоким логическим уровнем входной бинарной строки данных. Одновременно с расчетом порядковых номеров битов устройство осуществляет расчет количества битов с высоким логическим уровнем во входной строке данных. Устройство характеризуется небольшим числом используемых сумматоров. Аппаратурная сложность устройства, определяемая количеством используемых сумматоров, составляет 5/2n-2log(n)-2, где n - число бит входной строки данных. Это значительно меньше количества сумматоров, необходимого для расчета порядковых номеров битов с высоким логическим уровнем с использованием n устройств расчета количества бит с высоким логическим уровнем. Обработка данных в предлагаемом устройстве выполняется параллельно, что обеспечивает высокую скорость выполнения операции.