KR101974779B1 - 16비트 이하 양의 정수용 파이프라인형 제곱기 - Google Patents

16비트 이하 양의 정수용 파이프라인형 제곱기 Download PDF

Info

Publication number
KR101974779B1
KR101974779B1 KR1020180043769A KR20180043769A KR101974779B1 KR 101974779 B1 KR101974779 B1 KR 101974779B1 KR 1020180043769 A KR1020180043769 A KR 1020180043769A KR 20180043769 A KR20180043769 A KR 20180043769A KR 101974779 B1 KR101974779 B1 KR 101974779B1
Authority
KR
South Korea
Prior art keywords
stage
partial product
squared
product matrix
bits
Prior art date
Application number
KR1020180043769A
Other languages
English (en)
Inventor
오형철
임세민
최성진
Original Assignee
고려대학교 세종산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 세종산학협력단 filed Critical 고려대학교 세종산학협력단
Priority to KR1020180043769A priority Critical patent/KR101974779B1/ko
Application granted granted Critical
Publication of KR101974779B1 publication Critical patent/KR101974779B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5523Calculates a power, e.g. the square, of a number or a function, e.g. polynomials

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

16비트 이하 양의 정수용 파이프라인형 제곱기가 제시된다. 본 발명에서 제안하는 16비트 이하 양의 정수용 파이프라인형 제곱기는 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하고; 상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누고; 복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하고; 및 복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하고, 복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한한다.

Description

16비트 이하 양의 정수용 파이프라인형 제곱기{Pipelined squarer for unsigned integers of up to 16 bits}
본 발명은 16비트 이하 양의 정수(또는 부호가 없는 정수)의 제곱을 계산하는 파이프라인형 제곱기에 관한 것이다.
제곱 연산은 같은 수를 거듭하여 곱하는 것으로서, 다양한 응용 분야에서 널리 사용되는 연산이다. 최적화 응용이나 식별 응용 및 클러스터링 응용(S.L. Chiu, "Fuzzy model identification based on cluster estimation," J. Intelligent and Fuzzy Syst., vol.2, pp.267-278, 1994. DOI: 10.3233/IFS-1994-2306) 등에서 널리 사용되는 척도인 L2-노름(Norm)의 계산은 제곱 연산을 필요로 한다. 또한 제곱 연산은 이미지 압축이나 패턴 인식과 같은 다양한 신호처리 문제에서 집중적으로 사용된다.
도 1은 본 발명의 일 실시예에 따른 4비트 양의 정수의 제곱 연산을 위한 폴딩과 병합 기술을 설명하기 위한 도면이다.
제곱기의 설계에는 흔히 폴딩(folding)과 병합(merging) 기술(A.G.M. Strollo and D.D. Caro, "Booth folding encoding for high performance square circuits," IEEE Trans. Circuits and Syst. II, vol.50, no.5, pp.250-254, May 2003. DOI: 10.1109/TCSII.2003.810574)이 사용된다.
도 1은 4비트 양의 정수의 제곱 연산을 위한 폴딩과 병합 기술을 보인 것이다. 도 1에서 사용된 기술들을 확장하는 기법들이 제안되어 있으며, 또한, 큰 진수(radix)를 사용하는 기술(D.W. Matula, "Higher radix squaring operations employing left-to-right dual recoding," Proc. 19th IEEE Symp. Computer Arith., pp.40-47, June 2009. DOI: 10.1109/ARITH.2009.34)이나 부호화된 자릿수(signed-digit) 기술을 사용하는 기법(Y. Tanaka and S. Wei, "Efficient squaring circuit using canonical signed-digit number representation," IEICE Electron. Express, vol.11, no.2, p.20130955, Jan. 2014. DOI: 10.1587/elex.11.20130955)들이 종래기술에서 제안되었다.
제곱 연산이 사용되는 다양한 응용들이 휴대용 장치에서 사용되고 제곱 연산이 많은 응용들에서 집중적으로 사용되는 것을 고려할 때, 적은 비용으로 빠르게 계산하는 효율적인 제곱기의 설계가 필요하다.
본 발명이 이루고자 하는 기술적 과제는 전술한 종래의 설계 기술을 보완하여 제곱기의 성능을 효율적으로 향상시키기 위한 것으로서, 파이프라이닝(pipelining) 기술을 제곱기의 설계에 적용하는 기술을 제공하고, 제곱 연산이 사용되는 다양한 응용들이 휴대용 장치에서 사용되고 제곱 연산이 많은 응용들에서 집중적으로 사용되며 적은 비용으로 빠르게 계산하는 효율적인 제곱기를 제공하는데 있다.
일 측면에 있어서, 본 발명에서 제안하는 16비트 이하 양의 정수용 파이프라인형 제곱기는 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하고; 상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누고; 복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하고; 및 복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하고, 복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한한다.
상기 부분곱행렬의 임의의 열의 최대 비트 행의 수는 하기 수학식을 이용하여 계산하고,
Figure 112018037390577-pat00001
여기서,
Figure 112018037390577-pat00002
는 16비트 이하 양의 정수(
Figure 112018037390577-pat00003
)이다.
12비트의 양의 정수
Figure 112018037390577-pat00004
의 제곱을 연산하기 위한 파이프라인형 제곱기는 -여기서 A, B, D는 4비트의 부호가 없는 정수를 나타내고,
Figure 112018037390577-pat00005
는 연결(concatenation)연산을 나타냄-,
Figure 112018037390577-pat00006
의 부분곱행렬을 발생시키는 게이트(gate)들과 부분곱행렬을 합하는 CSA 트리를 포함하는 첫 번째 단;
Figure 112018037390577-pat00007
의 부분곱행렬을 발생시키는 게이트들과 부분곱행렬을 합하는 CSA 트리를 포함하고,
Figure 112018037390577-pat00008
의 부분곱행렬에 상기 첫 번째 단에서 계산된 합 벡터(S1)의 상위 세 비트와 캐리 벡터(C1)의 상위 네 비트를 병합하여 더하는 두 번째 단;
Figure 112018037390577-pat00009
의 부분곱행렬을 발생시키는 게이트들과 부분곱행렬을 합하는 CSA 트리를 포함하고,
Figure 112018037390577-pat00010
의 부분곱행렬에 상기 두 번째 단에서 계산된 합 벡터(S2)와 캐리 벡터(C2)의 상위 네 비트씩을 병합하여 더하는 세 번째 단; 및 최종 가산을 수행하고, 최종 제곱값의 나머지 11비트를 생성하는 가산기를 포함한다.
상기 첫 번째 단은, 최종 제곱값 중 하위 7개 비트(SQ[6:0])는 리플-캐리(ripple-carry) 방식으로 구성하고, 합 벡터(S1) 및 캐리 벡터(C1)는 하위 7개 비트와 함께 파이프라인 레지스터(register)에 저장되고, 두 번째 단에서 CSA 트리의 레벨 수가 감소되도록 CSA 트리를 조정하여 캐리 벡터(C1)에 항상 0인 비트를 생성한다.
상기 두 번째 단은, 세 개의 레벨을 갖는 CSA 트리로 구성되고, 최종 제곱값 중 두 개의 비트가 리플-캐리 연산 방식으로 계산된다.
상기 세 번째 단은, 최종 제곱값 중 네 개의 비트가 리플-캐리 연산 방식으로 계산된다.
16비트의 양의 정수
Figure 112018037390577-pat00011
의 제곱을 연산하기 위한 파이프라인형 제곱기는 -여기서 A, B, C, D는 4비트의 부호가 없는 정수를 나타내고,
Figure 112018037390577-pat00012
는 연결(concatenation)연산을 나타냄-, 상기 12비트의 양의 정수의 제곱을 연산하기 위한 파이프라인형 제곱기와 동일한 동일한 구성에 네 번째 단 및 다섯 번째 단을 더 포함하며, 첫 번째 단은, 상기 상기 12비트의 양의 정수의 제곱기 동일하고, 첫 번째 단에서 사용하는 매개 변수만 해당 16비트 양의 정수 제곱기에 따라 변환하고, 두 번째 단은, 상기 상기 12비트의 양의 정수의 제곱기 동일하고, 두 번째 단의 합 벡터(S2)와 캐리 벡터(C2)가 세 번째 단에서 병합되고, 세 번째 단, 네 번째 단 및 다섯 번째 단은 해당하는 연산의 부분곱행렬을 이전 단의 합 벡터와 캐리 벡터를 병합하여 더한다.
상기 두 번째 단은, 세 번째 단의 부분곱행렬의 열 중 최대 비트 행의 수는 열 개이고, 두 번째 단에서의 CSA 트리를 세 번째 단의 부분곱행렬의 열 중 최대 비트 수가 아홉 개가 되도록 구성된다.
세 번째 단, 네 번째 단 및 다섯 번째 단은, 최종 제곱값 중 네 개의 비트가 리플-캐리 연산 방식으로 계산되고, 다섯 번째 단의 합 벡터(S5)와 캐리 벡터(C5)의 최종적인 가산은 가산기에 의해 수행되어 최종 제곱 값의 나머지 11비트를 생성한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 16비트 이하 양의 정수용 파이프라인형 제곱기의 계산 방법은 16비트 이하 양의 정수용 파이프라인형 제곱기에 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하는 단계; 상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누는 단계; 복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하는 단계; 및 복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하는 단계를 포함하고, 복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한한다.
본 발명의 실시예들에 따르면 제곱기의 각 파이프라인 단(stage)에서 소용되는 시간지연이, 균형을 잘 이루도록, 설계의 임계 경로 지연(critical path delay)에 관한 분석을 기반으로 설정된 기준 값을 초과하지 않도록 조정한다. 마지막 파이프라인 단에서의 최종 가산기를 앞의 파이프라인 단들에 정량적으로 분배하는 기술을 사용하고, 12비트 입력을 위한 제곱기의 경우에 최종 제곱기는 전가산기(full-adder) 시간지연의 약 3.5배 이내의 임계경로지연을 갖는다. 본 발명의 16비트 제곱기는 매번 두 개의 8비트 양의 정수의 제곱을 계산할 수 있도록 구성할 수 있고, 이는 영상 응용에서 가장 흔한 8비트와 12비트 응용에 적용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 4비트 양의 정수의 제곱 연산을 위한 폴딩과 병합 기술을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 12비트의 양의 정수 제곱기에 대한 파이프라인 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 12비트 양의 정수 제곱기의 전체 구조를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 제곱기의 첫 번째 단의 구성을 나타내는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 제곱기의 두 번째 단의 구성을 나타내는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 16비트의 양의 정수 제곱기에 대한 파이프라인 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 16비트 양의 정수 제곱기의 전체 구조를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 16비트 이하 양의 정수용 파이프라인형 제곱기의 계산 방법을 설명하기 위한 흐름도이다.
큰 진수(radix)를 사용하는 기술이나 부호화된 자릿수(signed-digit) 기술을 사용하는 기법들이 종래기술에서 제안되었고, 본 발명은 이들 기법들과도 함께 적용할 수 있다. 본 발명은 전술한 종래의 설계 기술을 보완하여 제곱기의 성능을 효율적으로 향상시키기 위한 것으로서, 파이프라이닝(pipelining) 기술을 제곱기의 설계에 적용하는 기술에 관한 것이다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예에 따른 16비트 이하 양의 정수용 파이프라인형 제곱기는, 먼저 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구한다. 상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나눈다. 이후, 복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산한다. 복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더한다.
복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한한다. 도 2 내지 도 7을 참조하여, 본 발명의 실시예에 따른 16비트 이하 양의 정수용 파이프라인형 제곱기에 대하여 더욱 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 12비트의 양의 정수 제곱기에 대한 파이프라인 방법을 설명하기 위한 도면이다.
제공하는 제곱기는 12비트의 부호가 없는 정수
Figure 112018037390577-pat00013
의 제곱을 연산한다. 여기서 A, B, D는 4비트의 부호가 없는 정수를 나타내고, "
Figure 112018037390577-pat00014
"는 연결(concatenation)연산을 나타낸다. 부분곱행렬(partial product matrix)을 도 2의 점선과 같이 세 부분으로 나누고, 4단 곱셈기의 앞 세 개 단(210, 220, 230)에서 처리한다. 이 세 개의 단 각각은 A, B, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과에 A, B 또는 D의 제곱을 추가한다. 추가적으로, 두 번째와 세 번째 단에서는 이전 단계의 결과도 축적(accumulate)한다. 도 2의 세 개의 박스(210, 220, 230) 각각에서는, 합(sum)과 캐리(carry) 의 형태로 구성된 중간 값의 형태로, 박스에 기입된 값을 계산한다. A, B 및 D의 제곱은 도 1에 표시된 병합 후(after-merging) 부분곱행렬과 유사하게 구현된다. 네 번째 단(240)에서는 최종 제곱값을 얻기 위해, 세 번째 단(230)에서 나오는 합(sum)과 캐리(carry) 벡터를 더한다. 앞의 세 단(210, 220, 230)에서의 최대지연시간(maximum time delay)은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라진다.
전술한 방식으로 설계할 때, 최적화된 제곱기를 제공하기 위해, CSA(carry-save adder) 트리(tree)에 의해 축적될 부분곱행렬의 비트 행의 최대 수를 분석하여 일정 수 이하의 레벨(level)로 CSA(carry-save adder) 트리(tree)를 제한한다. 양의 정수
Figure 112018037390577-pat00015
Figure 112018037390577-pat00016
이고
Figure 112018037390577-pat00017
일 때
Figure 112018037390577-pat00018
비트의 양의 정수를 계산하는 제곱기를 고려해볼 때,
Figure 112018037390577-pat00019
를 임의의 단에서 누적될 부분곱행렬의 임의의 열의 최대 비트 수라고 하면,
Figure 112018037390577-pat00020
를 아래 수학식 1로 표현할 수 있다.
Figure 112018037390577-pat00021
수학식1
수학식 1은 다음과 같이 얻어진다.
Figure 112018037390577-pat00022
이고
Figure 112018037390577-pat00023
는 4비트 수라고 하면, 피연산자를
Figure 112018037390577-pat00024
로 나타낼 수 있다. 도 2의 형태로
Figure 112018037390577-pat00025
의 부분곱행렬을 분할하면 행의 개수의 최대값은
Figure 112018037390577-pat00026
아래의 부분곱행렬 부분에서 발생한다. 설명의 편의를 위해 이 수를
Figure 112018037390577-pat00027
으로 쓰면.
Figure 112018037390577-pat00028
가 짝수일 때,
Figure 112018037390577-pat00029
Figure 112018037390577-pat00030
이다.
Figure 112018037390577-pat00031
의 부분곱행렬의 각 열의 비트 수는 4보다 작거나 같고, 이 전 단계에서 각 열에 더해질 수 있는 비트 수는 최대 2비트이기 때문에,
Figure 112018037390577-pat00032
이다.
Figure 112018037390577-pat00033
가 홀수이면,
Figure 112018037390577-pat00034
Figure 112018037390577-pat00035
이다.
Figure 112018037390577-pat00036
의 부분곱행렬의 각 열의 비트 수는 2보다 작거나 같다.
수학식 1로부터, 16비트 제곱기에서는 부분곱행렬의 열의 비트 수가 10비트 이하이므로, 네 개의 레벨로 구성된 CSA 트리를 필요로 하게 된다. 이에 따라, 각 파이프라인 단의 시간지연을 네 개의 전가산기 지연보다 작거나 같도록 설계한다.
본 발명에서 예시하는 12비트 제곱기의 시간지연 평가에서는 반가산기의 시간지연을 가산기 지연의 절반으로 평가한다. 또한 네 번째 단의 최종 가산기의 부담을 앞의 세 단계로 분배한다.
도 3은 본 발명의 일 실시예에 따른 12비트 양의 정수 제곱기의 전체 구조를 나타내는 도면이다.
블록 D2_2BD는
Figure 112018037390577-pat00037
의 부분곱행렬을 발생시키는 게이트(gate)들과 부분곱행렬을 합하는 CSA 트리로 구성된다. 도 4 및 도 5를 참조하여 본 발명의 일 실시예에 따른 12비트 양의 정수 제곱기의 전체 구조를 더욱 상세히 설명한다.
도 4는 본 발명의 일 실시예에 따른 제곱기의 첫 번째 단의 구성을 나타내는 예시도이다.
도 4에서는 최종 제곱값 중 하위 7개 비트는 리플-캐리(ripple-carry) 방식으로 구성하고 SQ[6:0]으로 나타낸다. 합과 캐리 벡터는 S1과 C1으로 나타내며, SQ[6:0]과 함께 파이프라인 레지스터(register)에 저장된다. 첫 번째 단(310)의 최대시간지연은
Figure 112018037390577-pat00038
이며,
Figure 112018037390577-pat00039
는 전가산기의 시간지연을 의미한다.
두 번째 단(320)에서는, 블록 B2_2AD+C1+S1 안의 CSA 트리에서,
Figure 112018037390577-pat00040
의 부분곱행렬에 S1의 상위 세 비트와 C1의 상위 네 비트를 병합하며 더한다.
도 5는 본 발명의 일 실시예에 따른 제곱기의 두 번째 단(320)의 구성을 나타내는 예시도이다.
첫 번째 단(310)에서 CSA 트리를 조정하여 C1에 항상 0인 비트를 생성하여 두 번째 단(320)에서 CSA 트리의 레벨 수가 감소되도록 한다. 도 5에서 볼 수 있듯이 부분곱행렬의 열 중 최대 비트 수는 7이지만 부분곱행렬의 0이 아닌 성분의 수가 적어 세 개의 레벨을 갖는 CSA 트리로 구성할 수 있다. 두 번째 단(320)의 합과 캐리 벡터는 S2와 C2로 표시되었다. 최대지연시간이
Figure 112018037390577-pat00041
이다. 최종 제곱값 중 오직 두 개의 비트만이 리플-캐리 연산 방식으로 구성된다.
세 번째 단(330)에서는, 블록 A2_2AB+C2+S2 안의 세 개의 레벨(level)로 구성된 CSA 트리에서
Figure 112018037390577-pat00042
의 부분곱행렬에 S2와 C2의 상위 네 비트씩을 병합하여 합한다. 세 번째 단(330)의 합과 캐리 벡터는 S3와 C3로 표현되었다. 추가로 최종 제곱값의 네 개의 비트(SQ[12:9])는 최대지연시간이
Figure 112018037390577-pat00043
인 리플-캐리 방식으로 계산한다. 세 번째 단(330)의 두 중간 결과 S3, C3의 최종적인 가산은 네 번째 단(340)의 가산기에 의해 수행되어 최종 제곱값의 나머지 11비트를 생성한다. 전술하였듯이, 최종 가산기의 최대 지연 시간이
Figure 112018037390577-pat00044
를 초과하지 않는다면, 임계 경로 지연은
Figure 112018037390577-pat00045
이다. 초과하는 경우에는 Carry-Lookahead 덧셈기 등의 다른 구조를 채용하거나 단을 나눈다.
도 6은 본 발명의 일 실시예에 따른 16비트의 양의 정수 제곱기에 대한 파이프라인 방법을 설명하기 위한 도면이다.
16비트 제곱기는 전술한 12비트 제곱기 설계와 동일한 방법으로 제공하며, 16비트의 부호가 없는 정수
Figure 112018037390577-pat00046
의 제곱을 연산한다. 부분곱행렬을 도 6의 점선과 같이, 다섯 부분으로 나누고, 6단 곱셈기의 앞 다섯 개의 단(610, 620, 630, 640, 650)에서 처리한다. 이 다섯 개의 단 중 첫 번째 당(610), 두 번째 단(620), 네 번째 단(640)과 다섯 번째 단(650) 각각은 A, B, C, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과에 A, B, C 또는 D의 제곱을 추가하고, 세 번째 단(630)에서는 A, B, C, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과 두 개를 더한다. 추가적으로, 두 번째 단(620), 세 번째 단(630), 네 번째 단(640) 및 다섯 번째 단(650)에서는 이전 단계의 결과도 축적(accumulate)한다. 최종적인 가산은 여섯 번째 단(660)의 가산기에 의해 수행되어 최종 제곱값의 나머지 11비트를 생성한다
도 7은 본 발명의 일 실시예에 따른 16비트 양의 정수 제곱기의 전체 구조를 나타내는 도면이다.
각 단의 블록들은 전술한 12비트 양의 정수 제곱기와 동일하게 부분곱행렬을 발생시키는 게이트(gate)들과 부분곱행렬을 합하는 CSA 트리로 구성된다.
첫 번째 단(710)은 전술한 12비트 양의 정수 제곱기 디자인과 동일하게 설계하고, 블록에서 사용하는 매개 변수만 해당 16비트 양의 정수 제곱기에 맞게 변환한다. 두 번째 단(720)에서도 전술한 12비트 양의 정수 제곱기 디자인과 동일하게 설계하되, 합과 캐리 벡터 S2와 C2가 이 후 세 번째 단(730)에서 병합(merge)되며 더해지는 과정에서 세 번째 단(730)의 부분곱행렬의 열 중 최대 비트 수가 10개가 될 수 있는데, 두 번째 단(720)에서의 CSA 트리를 세 번째 단(730)의 부분곱행렬의 열 중 최대 비트 수가 9개가 되도록 구성하여 최대지연시간이
Figure 112018037390577-pat00047
이 될 수 있도록 한다.
세 번째 단(730), 네 번째 단(740)과 다섯 번째 단(750)은 전술한 방식과 같이 해당하는 연산의 부분곱행렬을 이전 단의 합과 캐리 벡터를 병합하여 합한다. 세 번째, 네 번째와 다섯 번째 단(750)의 최대 지연 시간은
Figure 112018037390577-pat00048
이며, 최종 제곱값 중 네 개의 비트가 리플-캐리 연산 방식으로 계산된다. 다섯 번째 단(750)의 두 중간 결과 S5, C5의 최종적인 가산은 여섯 번째 단(760)의 가산기에 의해 수행되어 최종 제곱 값의 나머지 11비트를 생성한다.
도 8은 본 발명의 일 실시예에 따른 16비트 이하 양의 정수용 파이프라인형 제곱기의 계산 방법을 설명하기 위한 흐름도이다.
제안하는 16비트 이하 양의 정수용 파이프라인형 제곱기의 계산 방법은 16비트 이하 양의 정수용 파이프라인형 제곱기에 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하는 단계(810), 상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누는 단계(820), 복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하는 단계(830) 및 복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하는 단계를 포함한다.
본 발명의 일 실시예에 따른 16비트 이하 양의 정수용 파이프라인형 제곱기의 계산 방법은 복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한한다.
본 발명의 일 실시예에 따른 12비트의 양의 정수 제곱기는, 12비트의 부호가 없는 정수
Figure 112018037390577-pat00049
의 제곱을 연산한다. 여기서 A, B, D는 4비트의 부호가 없는 정수를 나타내고, "
Figure 112018037390577-pat00050
"는 연결(concatenation)연산을 나타낸다. 부분곱행렬(partial product matrix)을 도 2의 점선과 같이 세 부분으로 나누고, 4단 곱셈기의 앞 세 개 단(210, 220, 230)에서 처리한다. 이 세 개의 단 각각은 A, B, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과에 A, B 또는 D의 제곱을 추가한다. 추가적으로, 두 번째와 세 번째 단에서는 이전 단계의 결과도 축적(accumulate)한다. 도 2의 세 개의 박스(210, 220, 230) 각각에서는, 합(sum)과 캐리(carry) 의 형태로 구성된 중간 값의 형태로, 박스에 기입된 값을 계산한다. A, B 및 D의 제곱은 도 1에 표시된 병합 후(after-merging) 부분곱행렬과 유사하게 구현된다. 네 번째 단(240)에서는 최종 제곱값을 얻기 위해, 세 번째 단(230)에서 나오는 합(sum)과 캐리(carry) 벡터를 더한다. 앞의 세 단(210, 220, 230)에서의 최대지연시간(maximum time delay)은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라진다.
본 발명의 또 다른 실시예에 따른 16비트의 양의 정수 제곱기는, 전술한 12비트 제곱기 설계와 동일한 방법으로 제공하며, 16비트의 부호가 없는 정수
Figure 112018037390577-pat00051
의 제곱을 연산한다. 부분곱행렬을 도 6의 점선과 같이, 다섯 부분으로 나누고, 6단 곱셈기의 앞 다섯 개의 단에서 처리한다. 이 다섯 개의 단 중 첫 번째, 두 번째, 네 번째와 다섯 번째 단 각각은 A, B, C, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과에 A, B, C 또는 D의 제곱을 추가하고, 세 번째 단에서는 A, B, C, D 중 두 개의 수의 곱셈이 시프트(shift)된 결과 두 개를 더한다. 추가적으로, 두 번째, 세 번째와 네 번째 및 다섯 번째 단에서는 이전 단계의 결과도 축적(accumulate)한다.
전술한 방식으로 설계한 12비트 양의 정수 제곱기의 성능을 인텔 FPGA 구현의 결과를 통해 평가한다. 비교를 위해 아래의 4가지의 제곱기를 고려한다.
1) 제곱기A는 인텔 FPGA의 전용 DSP 하드웨어를 사용하는 곱셈기이며, Quartus Prime 17.0의 파라미터화 된 모듈 라이브러리(library of parameterized modules, LPM)에서 제공된다. 제곱기A는 파이프라인 단계를 추가하여도 동작 주파수가 증가하지 않는다. 즉, 파이프라인 구조로 되어 있지 않다.
2) 제곱기B는 Quartus Prime 17.0의 LPM라이브러리에서 LPM_MULT란 이름으로 제공하고 있는 곱셈기이며, 4단 파이프라인으로 구성한다.
3) 제곱기C는 Quartus Prime 17.0의 LPM_MULT 코어(core)에서 "제곱 연산" 구성 옵션(option)으로 얻은 제곱기이며, 3단 파이프라인으로 구성한다. 이 설계는 단을 추가하여도 더 이상의 속도 향상을 얻을 수 없다.
4) 제곱기D는 본 발명에서 제공하는 제곱기와 비슷한 방식으로 설계된 제곱기이다. 그러나 최종 덧셈 연산을 분산시키지 않고 전체를 독립적인 단계로 분리한다.
본 발명에서 제공하는 제곱기와 위에서 나열한 네 가지 제곱기는 베릴로그(verilog)로 모델화하였고, 인텔 Stratix FPGA, 5SGSMD3E1H29C1을 타겟(target)으로, Quartus Prime 17.0 도구로 합성하였다. [표 1]은 합성 결과를 보인 것이다.
[표 1]
Figure 112018037390577-pat00052
제곱기A는 FPGA에서 전용 곱셈기 회로를 사용하며 빠르게 동작하지만 동작 주파수를 더 이상 높일 수 없다. 나머지 제곱기들은 논리 요소들과 플립-플랍(flip-flop)들을 사용하여 구성하는데, DSP 블록(block)이나 블록(block) RAM은 사용되지 않는다. 제곱기B는 4단 파이프라인을 사용하여 제곱기A보다 속도를 높일 수는 있지만 상당한 하드웨어 비용이 요구된다. 제곱기C는 제곱 연산의 두 입력의 동일성을 이용하므로 하드웨어 비용을 크게 줄이면서 동작 주파수를 거의 동일하게 유지할 수 있다. 그러나 제곱기C의 최대 동작 주파수는 세 개의 파이프라인 단으로 달성되며 더 이상 증가될 수 없다.
곱셈기는 일반적으로, PPM 생성, PPM 누적 및 최종 덧셈연산과 같이, 연산을 기능적으로 나누어 파이프라인화 한다. 그런 다음 최종 덧셈연산의 일부분을 앞 단으로 옮기고 시간 재조정 (Retiming) 프로세스를 수행할 수 있다. 제곱기D는 계산량에 따라 연산을 나누고 제곱기C보다 동작 주파수를 약 11% 높일 수 있다. 제곱기D는 최적화된 CSA 트리를 채택하지만 최종 단계에서 최종 리플-캐리(ripple-carry) 가산기를 그대로 배치하는데 이 가산기가 제곱기의 최대임계경로를 갖는다. 본 발명에서 설계하는 제곱기는 마지막 단계의 최종 가산기를 이 전 단계에 정량적으로 분배함으로써 제곱기D보다 비용이 적고 제곱기C보다 약 23% 빠르게 작동한다. 게이트 사용량도 비교를 위해 전술한 제곱기들과 비슷하다. 네 번째 단의 최종 가산기로 11비트 리플-캐리 덧셈기를 채택하는데, 평가에서 사용된 FPGA에서 구현할 때, 다른 단계의 CSA 트리보다 빠르게 작동한다. FPGA가 아닌 다른 구현기술을 사용할 때, 이 네 번째 단이 다른 단보다 느린 경우 하드웨어 비용을 고려하면서 다른 고속 가산 아키텍처를 고려해야한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다.  또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다.  이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다.  예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다.  또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.  소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다.  소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다.  상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.  상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.  컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.  프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (11)

16비트 이하 양의 정수용 파이프라인형 제곱기에 있어서,
입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하고;
상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누고;
복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하고; 및
복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하고,
복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한하는
제곱기.
제1항에 있어서,
상기 부분곱행렬의 임의의 열의 최대 비트 행의 수는 하기 수학식을 이용하여 계산하고,
Figure 112018037390577-pat00053

여기서,
Figure 112018037390577-pat00054
는 16비트 이하 양의 정수(
Figure 112018037390577-pat00055
)인
제곱기.
제1항에 있어서,
12비트의 양의 정수
Figure 112018037390577-pat00056
의 제곱을 연산하기 위한 파이프라인형 제곱기는 -여기서 A, B, D는 4비트의 부호가 없는 정수를 나타내고,
Figure 112018037390577-pat00057
는 연결(concatenation)연산을 나타냄-,
Figure 112018037390577-pat00058
의 부분곱행렬을 발생시키는 게이트(gate)들과 부분곱행렬을 합하는 CSA 트리를 포함하는 첫 번째 단;
Figure 112018037390577-pat00059
의 부분곱행렬을 발생시키는 게이트들과 부분곱행렬을 합하는 CSA 트리를 포함하고,
Figure 112018037390577-pat00060
의 부분곱행렬에 상기 첫 번째 단에서 계산된 합 벡터(S1)의 상위 세 비트와 캐리 벡터(C1)의 상위 네 비트를 병합하여 더하는 두 번째 단;
Figure 112018037390577-pat00061
의 부분곱행렬을 발생시키는 게이트들과 부분곱행렬을 합하는 CSA 트리를 포함하고,
Figure 112018037390577-pat00062
의 부분곱행렬에 상기 두 번째 단에서 계산된 합 벡터(S2)와 캐리 벡터(C2)의 상위 네 비트씩을 병합하여 더하는 세 번째 단; 및
최종 가산을 수행하고, 최종 제곱값의 나머지 11비트를 생성하는 가산기
를 포함하는 제곱기.
제3항에 있어서,
상기 첫 번째 단은,
최종 제곱값 중 하위 7개 비트(SQ[6:0])는 리플-캐리(ripple-carry) 방식으로 구성하고, 합 벡터(S1) 및 캐리 벡터(C1)는 하위 7개 비트와 함께 파이프라인 레지스터(register)에 저장되고,
두 번째 단에서 CSA 트리의 레벨 수가 감소되도록 CSA 트리를 조정하여 캐리 벡터(C1)에 항상 0인 비트를 생성하는
제곱기.
제3항에 있어서,
상기 두 번째 단은,
세 개의 레벨을 갖는 CSA 트리로 구성되고, 최종 제곱값 중 두 개의 비트가 리플-캐리 연산 방식으로 계산되는
제곱기.
제3항에 있어서,
상기 세 번째 단은,
최종 제곱값 중 네 개의 비트가 리플-캐리 연산 방식으로 계산되는
제곱기.
제3항에 있어서,
16비트의 양의 정수
Figure 112018037390577-pat00063
의 제곱을 연산하기 위한 파이프라인형 제곱기는 -여기서 A, B, C, D는 4비트의 부호가 없는 정수를 나타내고,
Figure 112018037390577-pat00064
는 연결(concatenation)연산을 나타냄-,
상기 12비트의 양의 정수의 제곱을 연산하기 위한 파이프라인형 제곱기와 동일한 동일한 구성에 네 번째 단 및 다섯 번째 단을 더 포함하며,
첫 번째 단은, 상기 상기 12비트의 양의 정수의 제곱기 동일하고, 첫 번째 단에서 사용하는 매개 변수만 해당 16비트 양의 정수 제곱기에 따라 변환하고,
두 번째 단은, 상기 상기 12비트의 양의 정수의 제곱기 동일하고, 두 번째 단의 합 벡터(S2)와 캐리 벡터(C2)가 세 번째 단에서 병합되고,
세 번째 단, 네 번째 단 및 다섯 번째 단은 해당하는 연산의 부분곱행렬을 이전 단의 합 벡터와 캐리 벡터를 병합하여 더하는
제곱기.
제7항에 있어서,
상기 두 번째 단은,
세 번째 단의 부분곱행렬의 열 중 최대 비트 행의 수는 열 개이고, 두 번째 단에서의 CSA 트리를 세 번째 단의 부분곱행렬의 열 중 최대 비트 수가 아홉 개가 되도록 구성되는
제곱기.
제7항에 있어서,
세 번째 단, 네 번째 단 및 다섯 번째 단은,
최종 제곱값 중 네 개의 비트가 리플-캐리 연산 방식으로 계산되고, 다섯 번째 단의 합 벡터(S5)와 캐리 벡터(C5)의 최종적인 가산은 가산기에 의해 수행되어 최종 제곱 값의 나머지 11비트를 생성하는
제곱기.
16비트 이하 양의 정수용 파이프라인형 제곱기에 입력되는 16비트 이하 양의 정수를 부호가 없는 복수의 정수들과, 연결 연산으로 나타내어 부분곱행렬을 구하는 단계;
상기 파이프라인형 제곱기는 복수의 단의 곱셈기로 구성되고, 복수의 단의 곱셈기를 이용하여 앞 단부터 순서대로 16비트 이하 양의 정수에 대한 제곱 계산을 처리하기 위해 상기 부분곱행렬을 복수의 부분으로 나누는 단계;
복수의 부분으로 나눠진 부분곱행렬을 합과 캐리의 형태로 구성된 중간 값의 형태로 계산하고, 복수의 단의 곱셈기 중 두 번째 단부터는 이전 단의 부분곱행렬 결과를 축적하여 계산하는 단계; 및
복수의 단의 곱셈기 중 마지막 단에서는 최종 제곱값을 얻기 위해 이전 단에서 나오는 합과 캐리 벡터를 더하는 단계
를 포함하고,
복수의 단의 곱셈기의 각 단에서의 최대지연시간은 각 단에서 처리할 부분곱행렬의 최대 비트 행의 수에 따라 달라지고, 최적화된 제곱기를 제공하기 위해 CSA(Carry-Save Adder) 트리에 의해 축적될 부분곱행렬의 최대 비트 행의 수를 분석하여 CSA 트리를 제한하는
제곱기의 계산 방법.
제10항에 있어서,
상기 부분곱행렬의 임의의 열의 최대 비트 행의 수는 하기 수학식을 이용하여 계산하고,
Figure 112018037390577-pat00065

여기서,
Figure 112018037390577-pat00066
는 16비트 이하 양의 정수(
Figure 112018037390577-pat00067
)인
제곱기의 계산 방법.
KR1020180043769A 2018-04-16 2018-04-16 16비트 이하 양의 정수용 파이프라인형 제곱기 KR101974779B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180043769A KR101974779B1 (ko) 2018-04-16 2018-04-16 16비트 이하 양의 정수용 파이프라인형 제곱기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180043769A KR101974779B1 (ko) 2018-04-16 2018-04-16 16비트 이하 양의 정수용 파이프라인형 제곱기

Publications (1)

Publication Number Publication Date
KR101974779B1 true KR101974779B1 (ko) 2019-05-02

Family

ID=66581468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180043769A KR101974779B1 (ko) 2018-04-16 2018-04-16 16비트 이하 양의 정수용 파이프라인형 제곱기

Country Status (1)

Country Link
KR (1) KR101974779B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970029019A (ko) * 1995-11-10 1997-06-26 김광호 파이프라인 가산기
KR20110085385A (ko) * 2010-01-20 2011-07-27 광운대학교 산학협력단 부스 부호화 기반 병렬방식 곱셈누적기
KR20150116339A (ko) * 2014-04-07 2015-10-15 부산대학교 산학협력단 공개키 암호를 위한 다중 제곱 연산 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970029019A (ko) * 1995-11-10 1997-06-26 김광호 파이프라인 가산기
KR20110085385A (ko) * 2010-01-20 2011-07-27 광운대학교 산학협력단 부스 부호화 기반 병렬방식 곱셈누적기
KR20150116339A (ko) * 2014-04-07 2015-10-15 부산대학교 산학협력단 공개키 암호를 위한 다중 제곱 연산 장치 및 방법

Similar Documents

Publication Publication Date Title
CN111465924B (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
CN111758106B (zh) 用于大规模并行神经推理计算元件的方法和系统
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
CN109564585B (zh) 基于点积的处理元件
Kumm et al. Optimization of constant matrix multiplication with low power and high throughput
Meher Seamless pipelining of DSP circuits
Véstias et al. A configurable architecture for running hybrid convolutional neural networks in low-density FPGAs
WO2021073918A1 (en) Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine
EP4095719A1 (en) Sparse matrix multiplication in hardware
Ullah et al. Factored radix-8 systolic array for tensor processing
US10725741B2 (en) Digital circuit with compressed carry
KR101974779B1 (ko) 16비트 이하 양의 정수용 파이프라인형 제곱기
US7673257B1 (en) System, method and computer program product for word-level operator-to-cell mapping
CN109634556B (zh) 一种乘累加器及累加输出方法
CN110659014B (zh) 乘法器及神经网络计算平台
Anuradha et al. Implementation of high speed 64-bit MAC unit using FPGA
KR20220158768A (ko) 기계 학습 가속을 위한 전력 감소
JP6979076B2 (ja) 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
Gustafsson et al. Basic arithmetic circuits
Venieris et al. Towards heterogeneous solvers for large-scale linear systems
Choi et al. Pipelined squarer for unsigned integers of up to 12 bits
Boulasikis et al. Efficient Utilization of FPGA Multipliers for Convolutional Neural Networks
JPH05324694A (ja) 再構成可能並列プロセッサ
Samanth et al. A novel approach to develop low power MACs for 2D image filtering

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant