KR101846417B1 - 다중 입력을 위한 비교 방법 및 디지털 비교기 - Google Patents

다중 입력을 위한 비교 방법 및 디지털 비교기 Download PDF

Info

Publication number
KR101846417B1
KR101846417B1 KR1020160127843A KR20160127843A KR101846417B1 KR 101846417 B1 KR101846417 B1 KR 101846417B1 KR 1020160127843 A KR1020160127843 A KR 1020160127843A KR 20160127843 A KR20160127843 A KR 20160127843A KR 101846417 B1 KR101846417 B1 KR 101846417B1
Authority
KR
South Korea
Prior art keywords
value
comparison
values
comparator
priority
Prior art date
Application number
KR1020160127843A
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 KR1020160127843A priority Critical patent/KR101846417B1/ko
Application granted granted Critical
Publication of KR101846417B1 publication Critical patent/KR101846417B1/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/02Comparing digital values

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

다중 입력(다수 개의 디지털 신호)의 크기를 비교하기 위한 방법 및 이를 처리하기 위한 회로 구조로서, 여러 입력을 동시에 비교한 후에 간단한 디지털 논리 함수를 이용하여 그 입력들 중에서 가장 큰 값(혹은 가장 작은 값)을 검출하는, 다중 입력을 위한 비교 방법 및 디지털 비교기에 관한 것으로서, (a) 다수의 값 중 어느 하나의 값(이하 제i 값)에 대하여, 상기 제i 값을 제외한 다수의 값들 각각과, 상기 제1 값을 비교 연산을 수행하되, 상기 비교 연산을 병렬적으로 수행하는 단계; (b) 상기 (a)단계에서 수행한 비교 연산들의 결과들을 모두 동일한 논리로 논리연산하여, 상기 제i 값에 대한 크기비교 결과를 산출하는 단계; (c) 상기 다수의 값들 각각에 대하여 상기 (a)단계와 (b)단계의 연산을 수행하되, 각 값들의 (a)단계와 (b)단계의 연산을 병렬적으로 수행하는 단계; 및, (d) 상기 다수의 값 각각의 크기비교 결과에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값을 검출하는 단계를 포함하는 구성을 마련한다.
상기와 같은 비교 방법 및 디지털 비교기에 의하여, 전통적인 방식에 비해서 4, 8, 및 16입력인 경우에 약 0.5, 1.1, 및 2.5배 만큼 하드웨어 자원을 더 소비하면서, 약 1.5, 1.8, 및 2.1배 만큼 동작 주파수를 향상시킬 수 있다.

Description

다중 입력을 위한 비교 방법 및 디지털 비교기{A Comparing Method for Multiple Inputs and the Digital Comparator thereof}
본 발명은 다중 입력(다수 개의 디지털 신호)의 크기를 비교하기 위한 방법 및 이를 처리하기 위한 회로 구조로서, 여러 입력을 동시에 비교한 후에 간단한 디지털 논리 함수를 이용하여 그 입력들 중에서 가장 큰 값(혹은 가장 작은 값)을 검출하는, 다중 입력을 위한 비교 방법 및 디지털 비교기에 관한 것이다.
또한, 본 발명은 다중 입력을 비교하기 위한 하드웨어 자원이 크게 증가하는 것을 방지하기 위하여, 중복된 논리동작을 재사용하고, 회로 속도의 증가, 즉 지연시간의 감소를 시키는, 다중 입력을 위한 비교 방법 및 디지털 비교기에 관한 것이다.
특히, 본 발명은 상위수준, 특히 RTL(register transfer level)에서의 설계 방법론을 이용하여 4개 이상의 입력에 대한 비교를 수행할 수 있는 비교 방법 및 그에 대한 VLSI(very large scale integrated circuit) 구조로서, 상위 수준에서 4개 이상의 다중 입력을 비교하는 경우에 초점을 맞추는, 다중 입력을 위한 비교 방법 및 디지털 비교기에 관한 것이다.
또한, 본 발명은 비교 방법을 HDL로 설계한 후에 매그나칩(Magna Chip)의 0.18μm CMOS 라이브러리를 이용하여 구현하는, 다중 입력을 위한 비교 방법 및 디지털 비교기에 관한 것이다.
일반적으로, 비교기는 두 개의 숫자의 크기를 비교하는데 사용되는 기본적이고 본질적인 연산 유닛으로 회로에서 매우 중요한 조합회로 요소이다[비특허문헌 1, 2].
정렬 연산은 본질적으로는 많은 양의 데이터를 오름차순 혹은 내림차순으로 정렬하기 위해서 수많은 비교 연산을 수행한다[비특허문헌 3]. 특히 비교 함수는 디지털 신호 처리와 영상 및 음성처리와 같은 영역들에서 많이 사용된다[비특허문헌 4, 5]. 예를 들어 영상처리 분야에서 객체 인식 알고리즘은 키포인트 로컬라이제이션(key-point localization) 단계[비특허문헌 6]에서 방대한 비교 연산을 사용한다. 또한 3D 그래픽스와 같은 데이터 집중적인 응용분야에서 매우 많이 사용된다[비특허문헌 7]. 비교기는 병렬 컴퓨팅[비특허문헌 8], 다중 접근 메모리[비특허문헌 9] 및 다중처리와 같은 영역에서 중요한 역할을 하는 정렬 네트워크(sorting network)에도 사용된다[비특허문헌 10]. 일반적인 범용 프로세서뿐만 아니라 비전 프로세서[비특허문헌 6] 및 미디어 프로세서[비특허문헌 12]와 같은 특수 목적의 프로세서도 많은 비교 명령어를 포함하고 있다.
지금까지의 디지털 비교기에 대한 연구를 2가지 측면에서 고려해 보고자 한다. 첫 번째는 비교기의 구현 수준이다. 여기에는 트랜지스터 수준 혹은 레이아웃 수준과 같은 하위 수준에서의 구현과 논리 회로 수준 혹은 HDL(hardware description language) 수준과 같은 상위 수준에서의 구현이 있다. 두 번째는 비교기의 입력 개수이다. 많은 연구들은 주로 두 개의 입력 신호에 대한 크기를 비교하는 구조에 대한 것이고, 일부 4개 이상의 입력 신호에 대한 비교기의 알고리즘 및 구조에 대한 것이다.
전통적인 비교기는 오직 두 개의 입력만 체크할 수 있게 한다. 입력의 수가 두 개 이상일 때, 데이터들은 순차적으로 비교된다. 즉, 현재 신호는 다음 신호와 비교되고, 이는 차례차례 다음 신호와 비교된다. 비교기 네트워크는 종종 캐스케이드 구조를 사용한다. 이 캐스케이드 구조는 연산 시간을 증가시킨다. 이러한 종류의 회로는 고속 시스템에 적합하지 않다. 영상 처리 분야에서, 쿼드 이진 숫자들을 동시에 비교하는 것은 종종 발생하는 상황이다[비특허문헌 6, 11]. 더욱이, 2개 이상의 입력에 대한 비교기를 구현하는 것은 향후 프로세서와 SIMD(single instruction multiple data) DSP(digital signal processing)의 발전에 많은 영향을 미칠 수 있다. 이진 비교기는 연산 논리 회로에서 중요한 블록이고, x86 명령어의 디코딩과 같은 많은 디지털 시스템에서 광대한 응용분야를 갖는다. 다중입력 다중출력(multiple-input-multiple-output, MIMO) 디코딩 알고리즘은 과도한 반복 이진 비교연산을 요구하기 때문에 차세대 통신 시스템을 위한 다중입력 다중출력 기술의 출현은 저전력 및 고성능 비교기의 필요성을 더욱 심화시켰다[비특허문헌 12].
두 수의 크기를 비교하기 위해 비교기를 구현하는 방법은 여러 가지가 있다. 비교기를 구현하기 위한 직접적이고 쉬운 방법들 중의 하나는 병렬 덧셈기를 사용하는 것이다. 다른 방법은 직접적으로 비교 함수를 펼치는 방정식에 기초하여 구현될 수 있다. 이런 방식들은 전통적인 방식이라 할 수 있고, 면적의 효율성과 전력 소모의 측면에서 많은 단점을 가지고 있다.
이를 극복하기 위해 지금까지 여러 연구가 진행되었다 [비특허문헌 13-25]. 왕(Wang)은 ANT(all-N-transistor) 동적 CMOS 논리를 이용한 고성능 트리-구조 비교기를 제안하였고[비특허문헌 13], 트랜지스터 수를 줄이기 위해 고팬인(high fanin) 동작 회로를 제안하였다[비특허문헌 14]. ANT 회로[비특허문헌 13]를 위해 요구되는 파이프라인 때문에 단일 사이클 동작에 적합하지 않다. 후앙(Huang)과 왕(Wang)은 우선순위 인코딩 알고리즘을 사용하여 [비특허문헌 13]보다 16%의 성능 향상을 보이는 단일-사이클 이단-위상(two-phase) 비교기를 제안하였다[비특허문헌 15]. 쳉(Cheng)은 효율적인 구현을 위해 변형된 1의 보수 원리와 CSA (carry save adder) 방식을 연구하였다[비특허문헌 16]. 쯔이(Tsui)는 병렬 MSB(most significant bit) 검사 방법을 이용하여 비교기를 제안하였다. [비특허문헌 17]에서는 정적인 우선순위 인코더를 이용하였고, [비특허문헌 18]에서는 MUX기반의 구조를 이용하였다. [비특허문헌 19]에서는 고성능 및 저면적 디지털 비교기를 위한 비트단위 경쟁논리회로(bitwise competition logic, BCL)가 제안되었다. 이 회로는 산술 연산을 사용하지 않고 MSB로부터 첫 번째 1의 위치를 이용하여 두 정수를 비교한다. 코소넬로(Corsonello)는 트리-기반 비교기를 제안하였는데, 비교 과정을 용이하게 하기 위해 다이나믹 맨체스터 구조를 이용한다[비특허문헌 20, 21]. 숀드허리(Chaudhury)는 2개의 수를 비교할 수 있는 디지털 이진 비교기를 제안하고 있다. 두 개의 이진수를 비교하기 위한 룩어헤드 로직(Look-Ahead Logic)을 고안하여 비교기의 속도를 향상시켰다[비특허문헌 22]. Sachdev는 이 논문에서는 2의 최대 스택 높이를 이루기 위해 전-인코딩 특징을 가지는 새로운 트리 구조의 비교기를 제안한다. 이 설계는 특히 저전력을 이루기 위해 패스트랜지스터 및/혹은 정적 로직의 구현에 적합하다[비특허문헌 23].
비록 많지는 않지만, 4개 이상의 입력을 비교하기 위한 비교기도 연구가 수행되었다. Hsia는 한번에 N개의 데이터를 비교할 수 있는 비교 셀을 제안하였다. 제안된 셀은 동적 논리 방법론에 기초한다[비특허문헌 24]. Yoo는 빠르고 작은 면적을 갖는 64비트 네 개의 이진수를 비교기를 제안하였다. 제안한 비트-단위 비교 논리 체인 (bit-wise comparing logic chain, BCLC)과 순차적 스트로브(sequential strobe, SS) 기법은 64비트 네 개의 이진 수를 1.55ns의 지연시간만에 비교할 수 있었다[비특허문헌 25]. 최근의 연구들에서 [비특허문헌 22]의 연구를 제외하고는 모두 하위 수준에서의 비교기를 구현한 것들이다. 또한 [비특허문헌 24]와 [비특허문헌 25]를 제외하고는 모두 2개의 값을 비교하는 비교기를 연구한 것이기 때문에 상위수준 설계 방법의 방향과 다소 차이를 갖는다.
따라서 다수의 입력에 대한 비교기를 상위수준에서 설계하는 기술이 필요하다.
R. J. Tocci, N. Widmer, and G. Moss, Digital Systems: Principles and Applications, 11th Edition, Pearson, 2010. I. Koren, Computer Arithmetic Algorithms, 2nd Edition, A K Peters/CRC Press,2001. K. Mehlhorn, Sorting and Searching, Springer-Verlag, 1984 W. Alexander, C and M Williams, Digital Signal Processing: Principles, Algorithms and System Design, 1st Edition, Academic Press, 2017. T. M. Savage and K. E. Vogel, An Introduction to Digital Multimedia, 2nd Edition, Jones & Bartlett Learning, 2013. D. Kim, et al., "An 81.6 GOPS Obeject Recognition Processor Based on NoC and Visual Image Processing Memory," IEEE Custom Integrated Circuits Conference, pp 443-446, Sep. 2007 R. Woo, et al. "A Low-Power 3-D Rendering Engine With Two Texture Units and 29-Mb Embedded DRAM for 3G Multimedia Terminals," IEEE Journal of Solid-State Circuits, vol. 39, no.7, pp.. 1101-1109, July 2004. Shun-Wen Cheng, "Arbitrary Long Digit Sorter HWISW Co-Design," in Proc. Asia and South Pacific Design Automation Conj, ASPDAC 03, pp. 538-543, Jan. 2003. B. Goll and H. Zimmermann, Comparators in Nanometer CMOS Technology, 1st Edition, Springer, 2015. Shun-Wen Cheng, "A high-speed magnitude comparator with small transistor count" in Proceedings of the 2003 10th IEEE International Conference on Electronics, Circuits and Systems (ICECS), pp. 1168- 1171, 2003 R. Woo, et al. "A Low-Power 3-D Rendering Engine With Two Texture Units and 29-Mb Embedded DRAM for 3G Multimedia Terminals," IEEE Journal of Solid-State Circuits, vol. 39, no.7, pp.. 1101-1109, July 2004. M. Shabany and P. Gulak, "A 0.13 μm CMOS 655 Mb/s 4 ㅧ 4 64-QAM K-Best MIMO detector," in Proc. EEE ISSCC, 2009, pp. 256-257. C.-C. Wang, C.-F. Wu, and K.-C. Tsai, "1 GHz 64-Bit high-speed comparator using ANT dynamic logic with two-phase clocking," Proc. Inst. Elect. Eng.-Comput. Digit. Tech., vol. 145, no. 6, pp. 433-436, Nov. 1998. C.-C. Wang, P.-M. Lee, C.-F. Wu, and H.-L. Wu, "High Fan-In Dynamic CMOS Comparators With Low Transistor Count," IEEE Transactions on Circuits and Systems I : Fundamental Theory and Applications, vol. 50, issue 9, pp. 1216 - 1220, Sep. 2003 C.-H. Huang and J.-S. Wang, "High-performance and power-efficient CMOS comparators," IEEE J. Solid-State Circuits, vol. 38, no. 2, pp. 254-262, Feb. 2003. S.-W. Cheng, "A High-Speed Magnitude Comparator With Small Transistor Count," IEEE Proceedings of International Conference on Electronics, Circuits and Systems, vol. 3, pp. 1168 - 1171, Dec. 2003 H.-M. Lam and C.-Y. Tsui, "High-performance single clock cycle CMOS comparator," Electron. Lett., vol. 42, no. 2, pp. 75-77, Jan. 2006. H.-M. Lam and C.-Y. Tsui, "A MUX-based high-performance single cycle CMOS comparator," IEEE Trans. Circuits Syst. II, Exp. Briefs, vol. 54, no. 7, pp. 591-595, Jul. 2007. J.-Y. Kim and H.-J. Yoo, "Bitwise Competition Logic for Compact Digital Comparator," IEEE Asian Solid Stated Circuits Conference, pp 59-62, Nov. 2007. S. Perri and P. Corsonello, "Fast low-cost implementation of single-clock cycle binary comparator," IEEE Trans. Circuits Syst. II, Exp. Briefs, vol. 55, no. 12, pp. 1239-1243, Dec. 2008. F. Frustaci, S. Perri, M. Lanuzza, and P. Corsonello, "A new low-power high-speed single-clock-cycle binary comparator," in Proc. IEEE Int. Symp. Circuits Syst., 2010, pp. 317-320. High-Speed Comparator Architectures for Fast Binary Comparison, 2012 A Low-Power High-Performance Single-Cycle Tree-Based 64-Bit Binary Comparator, 2012 High-speed multi-input comparator, 2005 A 1.55ns 0.015 mm2 64-bit Quad Number Comparator, 2009 http://infocenter.arm.com/help/index.jsp?topic=/com. arm.doc.set.amba/index.html
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 다중 입력을 비교하기 위한 하드웨어 자원이 크게 증가하는 것을 방지하기 위하여, 중복된 논리동작을 재사용하고, 회로 속도의 증가, 즉 지연시간의 감소를 시키는, 다중 입력을 위한 비교 방법 및 디지털 비교기를 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 개의 값을 비교하는 비교회로를 이용하여 다수의 값을 비교하는, 다중 입력을 위한 비교 방법에 관한 것으로서, (a) 다수의 값 중 어느 하나의 값(이하 제i 값)에 대하여, 상기 제i 값을 제외한 다수의 값들 각각과, 상기 제1 값을 비교 연산을 수행하되, 상기 비교 연산을 병렬적으로 수행하는 단계; (b) 상기 (a)단계에서 수행한 비교 연산들의 결과들을 모두 동일한 논리로 논리연산하여, 상기 제i 값에 대한 크기비교 결과를 산출하는 단계; (c) 상기 다수의 값들 각각에 대하여 상기 (a)단계와 (b)단계의 연산을 수행하되, 각 값들의 (a)단계와 (b)단계의 연산을 병렬적으로 수행하는 단계; 및, (d) 상기 다수의 값 각각의 크기비교 결과에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값을 검출하는 단계를 포함하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 (b)단계에서 비교 연산들의 결과들을 모두 논리곱(AND)으로 논리연산하고, 상기(d)단계에서 다수의 값들 중, 크기비교 결과의 값이 참(1)인 값이 가장 큰 값 또는 가장 작은 값으로 검출하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 제i 값의 크기비교 결과에 우선순위 인코더를 적용하여, 가장 큰 값 또는 가장 작은 값 중에서 우선순위가 가장 큰 값을 검출하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 비교연산은 다음 [수식 1]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 한다.
[수식 1]
Figure 112016096115407-pat00001
단, Compare()는 비교연산 함수를 나타내고, Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값임.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 비교연산은 다음 [수식 2]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 한다.
[수식 2]
Figure 112016096115407-pat00002
단, Compare()는 비교연산 함수를 나타내고,
Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 비교연산은 다음 [수식 3]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 한다.
[수식 3]
Figure 112016096115407-pat00003
단, Compare()는 비교연산 함수를 나타내고,
Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
또, 본 발명은 다중 입력을 위한 비교 방법에 있어서, 상기 비교연산은 다음 [수식 4]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 한다.
[수식 4]
Figure 112016096115407-pat00004
단, Compare()는 비교연산 함수를 나타내고,
Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
또한, 본 발명은 다중 입력을 위한 디지털 비교기에 관한 것으로서, 다수의 값 중 어느 하나의 값(이하 제i 값)을 입력받고, 상기 제i 값을 제외한 다수의 값들 각각을 입력받아, 비교 연산을 병렬적으로 수행하는 다수의 제i 비교기 그룹; 상기 i 비교기 그룹 내의 비교 연산 결과들을 입력받아 논리연산을 수행하는 다수의 제i 논리게이트 회로부; 및, 상기 다수의 제i 논리게이트 회로부의 결과값에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값으로서, 상기 다수의 값들 중 적어도 1개를 검출하는 검출기를 포함하고, 상기 다수의 제i 비교기 그룹은 병렬적으로 비교연산을 수행하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제i 비교기 그룹은 상기 제i 값과, 상기 제i 값을 제외한 값 중 하나의 값(이하 제j 값)에 대하여 비교 연산을 수행하는 다수의 제(i,j) 단위 비교기로 구성되는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제i 논리게이트 회로부는 상기 제i 비교기 그룹 내의 비교 연산들의 결과들을 모두 논리곱(AND)으로 논리연산하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제i 논리게이트 회로부는 논리연산 결과를 입력받아 사전에 정해진 우선순위에 따라 결과를 출력하는 우선순위 인코더를 더 포함하여 구성되는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제(i,j) 단위 비교기는 i의 우선순위가 j의 우선순위보다 큰 경우 "≤" 또는 "≥" 비교연산을 수행하고, 그렇지 않은 경우 "<" 또는 ">" 비교연산을 수행하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제(i,j) 단위 비교기는 "<" 또는 ">" 비교연산을 수행하되, i의 우선순위와 j의 우선순위의 비교 결과에 따라, 서로 다른 비교연산을 수행하는 것을 특징으로 한다.
또, 본 발명은 다중 입력을 위한 디지털 비교기에 있어서, 상기 제(i,j) 단위 비교기는 "<" 또는 ">" 비교연산을 수행하되, i의 우선순위와 j의 우선순위의 비교 결과에 따라, 서로 반대되는 비교연산을 수행하고 서로 반대되는 결과를 출력하는 것을 특징으로 하는 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 다중 입력을 위한 비교 방법 및 디지털 비교기에 의하면, 전통적인 방식에 비해서 4, 8, 및 16입력인 경우에 약 0.5, 1.1, 및 2.5배 만큼 하드웨어 자원을 더 소비하면서, 약 1.5, 1.8, 및 2.1배 만큼 동작 주파수를 향상시킬 수 있는 효과가 얻어진다.
도 1은 전통적인 방식의 다채널 디지털 크기 비교기의 구조 그림으로서, (a) 4채널, (b) 8채널 입력에 대한 디지털 크기 비교기의 구조도.
도 2는 본 발명의 일실시예에 따른 제1 비교 방법을 나타낸 슈도코드(pseudocode).
도 3은 본 발명의 일실시예에 따른 제1 비교 방법의 연산 과정을 예시한 표.
도 4는 본 발명의 일실시예에 따른 제2 비교 방법을 나타낸 슈도코드.
도 5는 본 발명의 일실시예에 따른 제3 비교 방법을 나타낸 슈도코드.
도 6은 본 발명의 일실시예에 따른 제3 비교 방법의 연산 과정을 예시한 표.
도 7은 본 발명의 일실시예에 따른 제4 비교 방법을 나타낸 슈도코드.
도 8은 본 발명의 일실시예에 따른 제5 비교 방법을 나타낸 슈도코드.
도 9는 본 발명의 일실시예에 따른 다중 입력을 위한 디지털 비교기의 구성에 대한 블록도.
도 10는 본 발명의 일실시예에 따른 비교기의 VLSI 구조로서, (a) 제1 비교방법, (b) 제2 비교방법, (c) 제3 비교방법, (d) 제4 비교방법, (e) 제5 비교방법, (f) 최대값 선택기에 대한 구조도.
도 11은 본 발명의 실험에 따라 사용된 조합회로의 게이트수 및 지연시간을 나타낸 표.
도 12은 본 발명의 실험에 따른 최대 동작 주파수로서, (a) 4입력, (b) 8입력, (c) 16입력의 경우를 나타낸 그래프.
도 13는 본 발명의 실험에 따른 하드웨어 자원량으로서, (a) 4입력, (b) 8입력, (c) 16입력의 경우를 나타낸 그래프.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
다음으로, 본 발명에서 이용하는 크기 비교 산술방법(Magnitude Comparing Arithmetic)에 대하여 설명한다.
논리 연산에서 가장 흔하게 사용되는 동작 중의 하나가 크기를 비교하는 동작이다. 디지털 논리 회로의 측면에서 고려할 때 이러한 동작은 크기 비교기(이하 비교기)를 사용하여 수행된다. 비교기는 두 개의 값 중에서 어느 것이 큰지 혹은 같은 지를 판단하는 회로이다. 4비트 크기 A와 B의 두 입력이 존재한다고 가정할 때, xi로 두 비트 Ai와 Bi가 같다는 것을 나타낼 수 있다.
[수학식 1]
Figure 112016096115407-pat00005
기본적인 디지털 논리 회로 이론을 고려하면, 우리는 아래와 같은 논리 관계를 이용해서 크기를 비교하기 위한 동작을 구현할 수 있다[비특허문헌 2].
[수학식 2]
Figure 112016096115407-pat00006
이러한 방법 이외에도 두 개의 수에 대한 차이값을 구한 후에 차이값이 영인지, 영보다 큰지, 혹은 영보다 작은지를 확인한 후에 두 입력에 대한 비교를 하는 방법도 있다. 그러나 이러한 방법도 결국 영값과의 최종적인 비교를 해야하므로 위의 방법에서 크게 벗어나는 것은 아니다.
다음으로, 크기비교 산술연산에서의 다채널(Multichannel)과 병렬성(Parallel)에 대하여 설명한다.
앞에서와 같이 살펴볼 수 있듯이, 비교 연산은 기본적으로 연산자가 2개이다. 만일 3개의 입력신호를 비교하거나 4개, 8개, 그리고 그 이상의 입력을 비교하기 위해서는 일반적으로 2개의 입력에 대한 비교기를 여러 단계로 나누어서, 비교하는 신호의 개수를 반으로 줄여나가면서 비교한 후에 최종적으로 가장 큰 값을 비교한다. 상기와 같은 방법을 전통적인 방식이라 하고, 도 1에 나타냈다.
전통적인 방식의 비교기는 두 개의 값을 순차적으로 비교하여 최종적으로 가장 큰 값을 선택하는 것이다. 다음 단계의 비교를 위해서는 첫 번째 단계에서 큰 값으로 판단된 입력 데이터 및 그에 대한 정보(몇 번째 입력인지에 대한 정보)를 두 번째 단계로 전송해야 하는 단점이 있다. 입력의 개수(2N)가 커지면 비교하는 단계가 N개만큼 증가한다. 즉, 임계경로가 비례적으로 증가하여 속도가 비례적으로 감소한다. 도 1(a)에는 4입력의 경우를 나타냈고, 도 1(b)에는 8입력의 경우를 나타냈다. 도 1에서 실선은 데이터 신호를 의미하고, 점선은 정보 신호를 의미한다.
최근의 SoC(System on Chip)에서 다채널 크기 비교기는 속도에 큰 영향을 미치는 요소이다. 디지털 기반의 상위 수준의 기법에서 연구나 개발이 부족하여 설계자가 요구하는 수준의 성능을 가져오지 못하고 있다. 일반적으로 2개의 값에 대한 비교기를 하위 수준(트랜지스터 수준 혹은 레이아웃 수준)에서 제작하여 성능을 개선하는 것이 현재의 일반적인 방법이다. 그러나 하위 수준에서 개발된 회로는 특정 환경(공정, 라이브러리)에 맞추어져서 개발되기 때문에 재사용이 어렵고, 칩 제작 환경이 바뀔 때마다 새로 개발해야 하는 어려움이 있다.
특히, 비교기의 입력이 여러 개일 경우, 문제점이 더욱 명확하게 나타난다. 전통적인 방법에서 가장 큰 문제는 입력의 개수가 증가하면 비례하여 성능이 감소한다는 점이다. 또한 입력 신호의 비트수가 커지면 각 단계별 지연시간을 증가시켜 성능을 더욱 감소시킨다는 점도 고려해야 한다. 최근 많은 SoC들이 NoC(network on a chip) 구조로 개발되고 있지만 아직까지는 AMBA버스(AXI) 기반의 공통 버스 구조를 가지고 있다[비특허문헌 26]. 공통 버스의 구조에서는 여러 마스터 및 슬레이브 중에서 어느 것이 버스를 사용할 것인지 결정해야하는 문제가 필연적으로 존재한다. 많은 SoC들은 버스 성능의 향상 및 신속한 응답을 위해서 파이프라인 단계가 적으면서 고속으로 동작할 수 있는 중재기(arbitor) 및 버스 매트릭스(bus matrix)를 원하고 있고, 그 동작의 핵심은 다채널 비교기에 있다. SoC 버스에서 중재기의 역할은 매우 중요한데, 좋은 중재 역할은 전체 시스템의 성능에 큰 영향을 미친다. 따라서 설계자는 좋은 알고리즘의 중재기를 사용하기를 원하고, 이에 따라 중재 알고리즘의 복잡도는 증가한다. 알고리즘의 복잡도는 내부적으로 사용되는 정보량의 증가를 의미하고, 이는 곧 데이터 크기의 증가를 의미한다. 데이터 크기가 증가되면 사용되는 회로들의 비트 수들도 커진다. 즉, 중재 동작의 핵심인 비교 동작을 위한 비교기도 커진다. 또한 다채널인 경우에 이러한 비교하고자 하는 데이터 크기의 증가는 각 단계별 지연시간을 증가시키고, 누적된 지연시간은 전체 임계경로를 증가시켜 성능을 더욱 감소시키게 된다.
전통적인 방식의 다입력 비교기의 가장 큰 문제점 중의 하나는 가장 큰 값이 여러 개일 경우에 이들을 모두 표시하기 위해서는 별도의 제어 회로를 가져야 한다는 점이다. 도 1(b)의 구조를 살펴보면 8개의 입력들 중에서 한 개의 가장 큰 값을 찾는 것은 쉬울 것이다. 그러나 만일 2개, 혹은 4개, 혹은 7개의 값이 같다면, 어떤 값이 크기가 같고, 그 중에서 어느 것을 가지고 다음 단계에서 비교를 하는지 등에 대한 정보를 처리하는 부가적인 회로가 필요하다. 채널이 커질수록 이러한 동작은 매우 복잡하고 귀찮은 작업이 될 것이다.
다음으로, 본 발명의 일실시예에 따른 크기 비교 방법에 대하여 설명한다. 특히, 다섯가지 비교 방법에 대하여 설명한다.
첫 번째 방법은 기본이 되는 방법으로 본 발명에 따른 방법의 핵심이다. 두 번째 및 세 번째 방법은 첫 번째 방법의 다른 응용 방법이다. 첫 번째는 가장 큰 값을 여러 개 검출할 수 있는 방법이고, 두 번째 및 세 번째는 한 개만 검출하는 방법이다. 네 번째는 하드웨어 자원량을 줄이기 위한 방법이고, 다섯 번째는 중복된 연산을 재사용하여 하드웨어 자원량을 줄이기 위한 방법이다. 본 발명에서 제시하는 5가지 방법은 정확히 산술 방법을 개선해 나가는 순서는 아니다. 다양한 방법이 존재할 수 있음으로 보이고자 하는 것이고, 응용분야에 따라서 제안된 방법들을 선택해서 사용할 수 있을 것이다. 다음에 각각의 방법에 대해서 하나씩 설명하고자 한다.
먼저, 제1 비교방법에 대하여 설명한다.
제1 비교방법은 제안하는 기본적인 방법으로 가장 큰 값들을 모두 검출 가능하다. 검출한 가장 큰 값들을 다양한 방법으로 활용이 가능하다. 제안하는 비교 방법은 동시에 자기 자신을 제외한 나머지 입력값들과 비교를 하고 그 비교한 결과들을 도 2와 같은 매우 간단한 논리 연산(또는 누적 AND 논리연산)을 통해 어느 값이 가장 큰지 검출할 수 있다. 도 2에서 사용된 함수는 아래와 같이 정의한다.
[함수정의]
- Parallel 함수 : 함수의 첫 번째 인수가 포함된 모든 문장을 두 번째 인수의 개수만큼 병렬적으로 처리 혹은 연산 수행
- Compare 함수 : 2개의 인수를 함수 내에 정의된 방법으로 비교한 후에 논리 값 반환
한편, 앞서 제1 비교방법의 크기 비교를 반대로 적용하면, 가장 작은 값을 검출하는 방법으로 변환할 수 있다. 이하의 방법도 마찬가지이다. 즉, 본 발명의 비교방법들은 가장 큰 값 또는 가장 작은 값을 검출하는 방법이다.
도 2의 제1 비교방법을 이용하여 4개의 입력값들을 서로 비교하여 가장 큰 값을 검출하는 과정을 도 3의 표에 예시하였다. 도 3의 표에서 RAND,i의 1은 가장 큰 값이라는 것을 표시한다.
바람직하게는, 도 2에서 병렬 AND 연산인 RAND,i를 각각 구하고, 병렬 OR 연산인 ROR,i를 각각 수행한다. 그 결과를 RAND,i & ROR,i의 식으로 AND를 하여 다시RAND,i를 구한다. 도 2 및 도 3의 알고리즘은 도 10a에 해당한다. 도 10a에서 R0에서 R3의 네 개의 출력 포트가 있는데, 비교기를 거친 결과들 각각이 AND와 OR 게이트로 입력되었다가, AND와 OR 게이트의 출력은 AND 게이트로 입력되어 최종 출력을 만든다. 첫 번째 AND 게이트가 RAND,i이고 OR 게이트가 ROR,i이다. 그리고 두 번째, 즉 최종 AND 게이트가 업데이트된 RAND,i 이다.
다음으로, 제2 비교방법에 대하여 설명한다.
제2 비교방법은 제1 비교방법의 결과는 가장 큰 값이 여러 개일 경우에 그 값들을 모두 검출하는 방법이다. 많은 응용 분야에서 검출된 가장 큰 값들 중에서 약속된 위치(가장 왼쪽 혹은 가장 오른쪽)의 값을 선택해야 하는 경우가 존재한다. 이 경우에 제안하는 제1 비교방법을 이용한 가장 간단한 방법은 제1 비교방법을 사용하면서 우선순위 인코더(priority encoder) 등을 사용하는 것이다. 본 발명에서는 우선순위 인코더(PriorityEncoder) 함수를 이용하여 가장 큰 값들 중에서 가장 왼쪽 값을 선택하도록 하였다.
도 4에서 보는 바와 같이, PriorityEncoder 함수는 입력 RAND,i 이 1인 경우에 한하여, 가장 큰 우선순위를 갖는 값이 출력을 1로 출력한다. 즉, 비교결과가 1인 값 중에서 가장 우선순위가 큰 값이 선택된다. 이때, 우선순위는 사전에 정해지며, 바람직하게는, 우선순위를 오른쪽 위치에 따라 순위를 높게 하여 가장 오른쪽 값으로 선택하거나, 왼쪽 위치로 갈수록 순위를 높게 하여 가장 왼쪽 값으로 선택하게 할 수 있다.
다음으로, 제3 비교방법에 대하여 설명한다.
제2 비교방법에서 사용한 우선순위 인코더는 MUX를 캐스케이딩하는 논리회로 구조를 갖기 때문에 입력의 개수가 늘어나면 그에 비례하여 지연시간이 증가하는 단점을 갖는다. 이러한 단점은 제3 비교방법을 통해서 해소할 수 있다. 제3 비교방법은 가장 큰 결과가 여러 개일 경우에 약속된 위치의 데이터를 검출할 수 있도록 한다. 여러 개의 큰 값이 입력될 경우에 가장 왼쪽에 입력된 하나의 값을 가장 큰 값으로 검출하도록 하였다. 가장 오른쪽 값을 검출하고자 할 경우에는 비교하는 방향을 바꾸면 가능하다.
도 6의 표에는 제3 비교방법을 이용한 비교 연산 과정을 예시하였다. 첫 번째 비교 연산을 살펴보면 D0와 D3가 동시에 40의 값을 갖지만 Rj의 결과를 살펴보면 R0만 1이 표시되어 가장 왼쪽의 값이 가장 큰 값으로 선택된 것을 볼 수 있다.
다음으로, 제4 비교방법에 대하여 설명한다.
제3 비교방법에서는 "크거나 같다"와 같은 비교를 사용한다. "같다"는 비교동작은 앞서 설명한 것과 같이 x3x2x1x0의 논리식을 사용하고 이는 "크거나"에 해당되는 논리식과 OR 연산을 거쳐야 하므로 게이트 레벨을 한 단계 혹은 그 이상 증가시키게 된다. 이로 인해 하드웨어 자원과 지연시간이 증가한다. "크거나 같다"라는 조건은 "작다"의 반전이므로 이 특성을 이용해서 비교 방법을 개선할 수 있다. 도 7에 이와 같이 개선된 제4 비교방법의 Compare 함수를 나타내었다.
다음으로, 제5 비교방법에 대하여 설명한다.
본 발명에서 제안하고 있는 비교방법은 기본적으로 입력들을 서로 병렬적으로 비교하는 방식이기 때문에 고성능에는 매우 적합하지만 그에 따른 하드웨어 자원도 증가한다. 따라서 하드웨어 자원을 줄이기 위한 시도가 필요하다. 제3 비교방법 혹은 제4 비교방법으로부터 "크거나 같다"는 조건(A≤B)을 "작다"는 조건(A>B)으로 반전하여 사용함으로써 자원을 감소시킬 수 있다. 제5 비교방법에 대한 Compare 함수를 도 8에 나타냈다. 이 함수에서 Dj와 Di의 위치가 바뀌어 있다는 것을 주의할 필요가 있다. 추후에 실험결과에서 볼 수 있듯이 이 방식을 통해서 극적으로 하드웨어의 자원을 감소시킬 수 있다.
다음으로, 본 발명의 일실시예에 따른 다중 입력을 위한 디지털 비교기의 회로 구성을 도 9를 참조하여 설명한다.
도 9에서 보는 바와 같이, 본 발명에 따른 다중 입력을 위한 디지털 비교기는 다수의 단위 비교기(11)로 구성되는 다수의 비교기 그룹(10); 각 비교기 그룹(10) 내의 비교결과들에 대하여 논리연산을 수행하는 다수의 논리게이트 회로부(20); 및, 상기 다수의 논리게이트 회로부(20)의 논리연산 결과에 따라 가장 큰 값 또는 가장 작은 값을 검출하는 검출기(30)로 구성된다.
먼저, 단위 비교기(11)는 두 개의 값을 비교하는 비교기로서, 큰 것을 비교하는 연산(>), 작은 것을 비교하는 연산(<), "크거나 같은 연산(≥)", "작거나 같은 연산(≤)" 등의 단위 연산을 수행한다.
비교기 그룹(10)은 어느 하나의 값(제i 값)에 대하여, 해당 값(제i값)과, 제i값이 아닌 다른 값과를 각각 비교하는 단위 비교기(11)들로 구성하여, 각 단위 비교기(11)를 병렬로 처리하다.
또한, 제i 논리게이트 회로부(20)는 논리곱(AND) 또는 논리합(OR)에 의해, 비교기 그룹(10)의 비교 연산 결과들을 입력받아 동일한 논리연산을 수행한다.
또한, 검출기는 다수의 제i 논리게이트 회로부의 결과값에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값으로서, 상기 다수의 값들 중 적어도 1개를 검출한다.
다음으로, 본 발명의 일실시예에 따른 비교기의 회로구조에 대하여 설명한다. 즉, VLSI로 구현하는 아키텍쳐(VLSI Architecture)를 설명한다.
본 발명에 따른 비교방법에 대한 VLSI 구조를 도 10에 나타냈다. 채널의 수는 4로 하여 예시하였다. 도 10(a)부터 도 10(e)까지는 제1 비교방법에서 제5 비교방법까지에 대한 VLSI 구조를 나타낸다. 도면에서 실선은 데이터 버스를 의미하고, 점선은 논리 연산의 결과를 전달하기 위한 배선을 의미한다. 도 10(f)는 제5 비교방법을 이용하여 다수의 데이터 중에서 가장 큰 값을 찾아서 그것만 선택하는 회로에 대한 예시를 나타냈다.
도 10(a)는 가장 기본이 되는 제1 비교방법에 대한 VLSI 구조이다. 도 2에서 3개의 문장은 도 10(a)의 2레벨 구조(비교기-AND)에 해당한다. Compare( Di, Dj )가 첫 번째 레벨을 구성하고, RAND,i가 두 번째 레벨을 구성한다.
이 구조를 살펴보면 채널의 개수가 많아지면 첫 번째 레벨에서 비교기의 개수가 많아진다. 그러나 비교기의 증가는 자원의 증가를 야기하지 지연시간의 증가를 가져오지는 않는다. 물론 비교기 증가로 인해 배선이 늘어나기 때문에 이로 인한 배선 지연의 증가는 발생할 것이다. 그러나 그것이 성능에 큰 영향을 주지는 않는다. 이와 같이 채널의 증가로 인한 첫 번째 레벨에서의 지연시간 증가는 미미하다. 다음으로 두 번째 레벨을 고려한다. 비교기의 개수가 증가하면 AND 게이트의 팬인(fan-in)이 증가한다. 실제 칩 제작을 위한 라이브러리는 입력의 개수에 제한이 있다. 따라서 AND 게이트는 케스케이딩될 것이고, 이로 인해 지연시간은 증가한다. 이 지연시간은 입력의 증가에 따라 선형적으로 발생할 것이다. 이 회로는 채널들 중에서 최대값이 여러 개일 경우에 모든 최대값을 표시할 수 있는 기능을 갖고 있다. 부가적인 회로 혹은 특별한 알고리즘을 사용하지 않으면서도 이러한 특성을 보유하고 있다는 것은 본 회로의 매우 큰 장점이다.
여러 개의 큰 값들 중에서 하나만을 선택하고자 하는 경우에는 도 10(b)와 같이 간단한 혹은 복잡한 인코더를 사용할 수 있다. 그러나 채널의 개수가 증가하면 이 인코더로 인해 지연시간이 증가하게 된다. 본 발명의 방향이 고속화인 점을 상기한다면 이러한 지연시간의 증가는 결코 좋은 결과가 아니다. 따라서 하드웨어의 구조적인 방식으로 이러한 인코딩 동작을 구현해야 한다. 이 결과가 도 10(c)에 나타나있다.
비교기에 규칙적으로 "크거나 같다"라는 조건을 삽입함으로써 가장 큰 값들 중의 하나(가장 오른쪽 혹은 가장 왼쪽)를 자동으로 선택할 수 있다. 물론 이 방식도 매우 좋은 결과를 가져왔지만, 앞 장에서 설명한 바와 같이 몇 게이트 수준의 지연시간의 증가를 유발한다. 따라서 "작다"는 조건으로 치환한 도 10(d)의 구조를 만들 수 있다. 도 10(b)와 도 10(d)는 동일한 동작을 하지만 어느 구조가 효율적인지는 구조적으로 명백하다. 그러나 이 구조는 채널 수의 증가에 따라 하드웨어 자원량이 너무 증가하는 단점을 계속 가지고 있다. 따라서 제5 비교방법을 이용하여 중복되는 비교 동작을 찾은 후에 이들을 공유하는 구조를 도 10(e)와 같이 만들 수 있다. 동작은 동일하지만 비교기가 단지 하나의 NOT 게이트로 대체된다는 것은 하드웨어 자원의 측면에서 매우 효율적이다. 도 8에서 확인할 수 있는 것과 같이, 입력이 N개일 경우에 도 10(a)에서 도 10(d)의 구조에서 사용된 비교기의 개수는 N(N-1)이다. 반면에 도 10(e)의 구조에서 사용된 제5 비교방법의 경우에는 비교기가 N(N-1)/2개로 다른 구조에 비해 반만 사용된다.
본 발명에서 제안하는 다중 채널을 비교하기 위한 회로의 VLSI의 구조와 동작 방식은 매우 단순하다. 뿐만 아니라 여러 응용도 가능하기 때문에 매우 발전 가능성이 많은 회로이기도 하다. 예를 들어 4입력을 위한 비교회로는 아주 사소한 회로만 추가해주면 2개의 2입력 비교 회로로 사용할 수 있다. 즉, 8입력 비교 회로인 경우에는 2개의 4입력 혹은 4개의 2입력을 위한 비교기로 얼마든지 동시에 사용할 수 있다. 뿐만 아니라 2개의 3채널 회로로도 확장이 가능하다.
파이프라인 구조로 만드는 경우를 고려해보자. 전통적인 방식의 경우에 32채널이라면 다섯 개의 파이프라인 단계가 필요하고, 입력을 위한 동작을 포함하여 최소 6클록이 필요하다. 그러나 본 방식의 경우에는 두 개의 파이프라인 단계만 있으면 되고, 최소 3클록만 필요하다. 또한 입력의 개수가 늘어나거나 입력을 나누어서 동작을 시키거나 하는 등의 변형에 대해서 파이프라인 단계의 변화는 없다. 핸드쉐이크 방식의 동작을 하는 SoC의 버스 구조에서 파이프라인 단계의 증가는 전체 동작에 치명적인 영향을 준다는 점을 감안하면 이는 매우 중요한 장점이다.
다음으로, 본 발명의 일실시예에 따른 구현과정과 그 결과를 설명한다.
본 발명에 따른 구조는 매그나칩(Magna Chip)의 018μm CMOS 공정을 이용하여 구현되었다. HDL(hardware description language)을 이용하여 구현한 이후에 구현된 하드웨어의 속도(최대 동작 주파수)와 자원량(게이트 수)를 측정하였다. 실험에서는 입력의 개수를 4개, 8개, 및 16개로 정하여 구현하였고, 입력의 비트너비는 8, 16, 32, 64 비트로 수행하였다. 또한 전통적인 방식을 포함하여 총 6가지 방법에 대해서 각각 구현하였다. 따라서 총 72가지 조건에 대해 각각 하드웨어를 HDL로 구현하였고, 이에 대한 실험을 수행하였다. 합성은 시놉시스(Synopsys)사의 Design CompilerTM을 이용하였고, 검증을 위한 시뮬레이션은 Cadence사의 NC SimTM을 이용하였다. 먼저 회로에 사용된 게이트들 및 조합회로들의 게이트수 및 지연시간을 실험을 통해 얻은 후에 도 11의 표에 정리하였다.
도 12에는 입력과 비트너비에 따른 최대 동작 주파수를 나타냈다. 이를 통해 구현된 하드웨어가 성능의 관점에서 얼마나 병렬화 효과가 있는지 확인할 수 있다. 전체적으로 비트수가 커지거나 입력의 개수가 늘어나면 동작속도는 느려지는 것을 보인다. 도 12에서 확인할 수 있는 것과 같이 제2 비교방법은 인코더를 사용하기 때문에 도 6의 표에 나타낸 것과 같이 지연시간이 추가되어 느린 결과를 보인다. 제3, 4, 5 비교방법은 거의 비슷한 동작속도를 보이는 것을 확인할 수 있다. 그러나 도 5에 나타낸 것과 같이 제3 비교방법은 Compare 함수에 "크거나 같다"는 조건을 가지고 있어 제4 비교방법 및 제5 비교방법 보다 OR 게이트 한 수준(도 6의 표에서 0.19ns)의 지연시간을 더 갖는다. 제3 비교방법을 제5 비교방법과 비교할 때 입력의 개수가 4일 경우에는 거의 차이를 보이지 않지만, 8개의 경우에는 7MHz의 차이를 보이고, 16개일 경우에는 17MHz의 차이를 보인다. 각 입력의 개수별로 전통적인 방법과 제5 비교방법을 비교하면 4입력의 경우에 제5 비교방법은 전통적인 방법에 비해서 평균 58.04%의 속도 향상을 보인다. 8입력의 경우에는 평균 90.13%의 증가를 보이고 16입력의 경우에는 평균 129.84%의 증가를 보인다. 우리가 앞서 논의했던 것과 같이 전통적인 방식은 비교기를 캐스캐이딩하는 방식이기 때문에 입력의 개수가 증가하면 그에 비례하여 조합 지연시간도 증가한다. 그러나 본 발명에 따른 방식은 이상적으로는 비교기로 인한 지연시간의 증가는 없고, 배선지연과 2 및 3레벨에서 게이트 지연이 증가하는 정도만 조합 지연시간이 증가한다. 따라서 입력의 개수가 늘어날수록 전통적인 방식에 비해서 제안하는 방식의 속도는 더욱 향상되는 결과를 보인다.
본 발명에 따른 기본 방법은 병렬적으로 입력값들을 서로 비교하기 때문에 면적이 크게 증가한다. 도 13에 면적에 대한 결과를 나타냈다. 전체적인 경향을 살펴보면 쉽게 예측할 수 있는 것과 같이 전통적인 방식이 가장 작은 하드웨어 자원을 사용하고, 다음으로 제5 비교방법이 작은 하드웨어 자원을 사용한다. 4입력의 경우에는 제5 비교방법은 전통적인 방식에 비해서 평균 -28.32%의 증가를 보인다. 즉, 제5 비교방법이 평균적으로 더 작은 하드웨어 자원을 사용한다는 것을 확인할 수 있다. 반면에 제3 및 제4 비교방법은 각각 129.02% 및 133.72%의 증가를 보였다. 8입력의 경우에는 제5 비교방법은 평균 31.05%의 증가를 보이는 반면에 제3 및 제4 비교방법은 각각 평균적으로 136% 및 131.6%의 증가를 보인다. 16입력의 경우에는 제5 비교방법은 평균 151.11%의 증가를 보이는 반면에 제3 및 제4 비교방법은 각각 평균적으로 328.58% 및 357.36%의 증가를 보인다.
전통적인 방식과 제5 비교방법을 종합적으로 비교해보도록 한다. 제5 비교방법은 전통적인 방식에 비해서 4, 8, 및 16입력인 경우에 각각 약 1.5, 1.8, 및 2.1배 만큼 동작주파수가 빨라지고, 약 0.5, 1.1, 및 2.5배 만큼 하드웨어 자원을 더 소비한다. 입력의 개수가 증가하면 전통적인 방식은 비교기의 레벨이 선형적으로 증가하기 때문에 그에 따라 지연시간도 선형적으로 증가하므로 제안하는 비교방법이 선형적으로 클록속도가 증가하는 경향을 보였다. 그러나 하드웨어 자원의 경우에는 비교기의 개수가 N(N-1)/2와 같이 급격하게 증가하는 것을 확인할 수 있었다.
본 발명에서는 다수 개의 디지털 신호의 크기를 비교하기 위한 알고리즘과 그에 대한 VLSI 구조를 제시하였다. 본 발명에 따른 방법은 여러 입력을 동시에 비교한 후에 간단한 디지털 논리 함수를 이용하여 그 입력들 중에서 가장 큰 값 혹은 가장 작은 값을 검출하는 방법을 제시하였다. 본 발명에 따른 비교 방법은 HDL로 설계한 후에 Magna Chip의 0.18μm CMOS 라이브러리를 이용하여 구현하여 실험을 수행하였다. 입력의 개수가 증가할수록 병렬적인 비교로 인한 하드웨어 자원의 사용율은 증가하지만 그에 따라 동작 주파수도 증가함을 확인할 수 있었다. 본 발명에 따른 비교방법은 전통적인 방식에 비해서 4, 8, 및 16입력인 경우에 약 0.5, 1.1, 및 2.5배 만큼 하드웨어 자원을 더 소비하면서, 약 1.5, 1.8, 및 2.1배 만큼 동작 주파수를 향상시킬 수 있었다. 즉, 본 발명이 목표로 하는 고속의 비교기 구현이 가능하다는 것을 확인할 수 있었다. 본 발명에서 제안된 방법은 다양한 응용분야에서 다수의 입력에 대한 비교를 수행할 수 있는 다양한 형태의 비교기로 사용될 수 있을 것으로 사료된다.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 단위 비교기 11 : 비교기 그룹
20 : 논리게이트 회로부 30 : 검출회로부

Claims (14)

  1. 2개의 값을 비교하는 비교회로를 구비한 디지털 비교기에 의하여 수행되는 방법으로서, 다수의 값을 비교하는, 다중 입력을 위한 비교 방법에 있어서,
    (a) 상기 디지털 비교기는, 다수의 값 중 어느 하나의 값(이하 제i 값)에 대하여, 상기 제i 값을 제외한 다수의 값들 각각과, 상기 제i 값을 비교 연산을 수행하되, 상기 비교 연산을 병렬적으로 수행하는 단계;
    (b) 상기 디지털 비교기는, 상기 (a)단계에서 수행한 비교 연산들의 결과들을 모두 동일한 논리로 논리연산하여, 상기 제i 값에 대한 크기비교 결과를 산출하는 단계;
    (c) 상기 디지털 비교기는, 상기 다수의 값들 각각에 대하여 상기 (a)단계와 (b)단계의 연산을 수행하되, 각 값들의 (a)단계와 (b)단계의 연산을 병렬적으로 수행하는 단계; 및,
    (d) 상기 디지털 비교기는, 상기 다수의 값 각각의 크기비교 결과에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값을 검출하는 단계를 포함하고,
    상기 (b)단계에서 비교 연산들의 결과들을 모두 논리곱(AND)으로 논리연산하고, 상기(d)단계에서 다수의 값들 중, 크기비교 결과의 값이 참(1)인 값이 가장 큰 값 또는 가장 작은 값으로 검출하는 것을 특징으로 하는 다중 입력을 위한 비교 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제i 값의 크기비교 결과에 우선순위 인코더를 적용하여, 가장 큰 값 또는 가장 작은 값 중에서 우선순위가 가장 큰 값을 검출하는 것을 특징으로 하는 다중 입력을 위한 비교 방법.
  4. 제1항에 있어서,
    상기 비교연산은 다음 [수식 1]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 하는 다중 입력을 위한 비교 방법.
    [수식 1]
    Figure 112016096115407-pat00007

    단, Compare()는 비교연산 함수를 나타내고, Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값임.
  5. 제1항에 있어서,
    상기 비교연산은 다음 [수식 2]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 하는 다중 입력을 위한 비교 방법.
    [수식 2]
    Figure 112016096115407-pat00008

    단, Compare()는 비교연산 함수를 나타내고,
    Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
  6. 제1항에 있어서,
    상기 비교연산은 다음 [수식 3]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 하는 다중 입력을 위한 비교 방법.
    [수식 3]
    Figure 112016096115407-pat00009

    단, Compare()는 비교연산 함수를 나타내고,
    Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
  7. 제1항에 있어서,
    상기 비교연산은 다음 [수식 4]의 슈도 코드(Pseudo code)에 의한 연산인 것을 특징으로 하는 다중 입력을 위한 비교 방법.
    [수식 4]
    Figure 112016096115407-pat00010

    단, Compare()는 비교연산 함수를 나타내고,
    Di는 제i 값이고, Dj는 상기 제i 값을 제외한 다수의 값들 중 하나의 값이고, i는 제i 값의 우선순위를 나타내고, j는 상기 제i 값을 제외한 다수의 값들 중 하나의 값의 우선순위를 나타냄.
  8. 다중 입력을 위한 디지털 비교기에 있어서,
    다수의 값 중 어느 하나의 값(이하 제i 값)을 입력받고, 상기 제i 값을 제외한 다수의 값들 각각을 입력받아, 비교 연산을 병렬적으로 수행하는 다수의 제i 비교기 그룹;
    상기 i 비교기 그룹 내의 비교 연산 결과들을 입력받아 논리연산을 수행하는 다수의 제i 논리게이트 회로부; 및,
    상기 다수의 제i 논리게이트 회로부의 결과값에 따라, 상기 다수의 값들 중 가장 큰 값 또는 가장 작은 값으로서, 상기 다수의 값들 중 적어도 1개를 검출하는 검출기를 포함하고,
    상기 다수의 제i 비교기 그룹은 병렬적으로 비교연산을 수행하고,
    상기 제i 논리게이트 회로부는 상기 제i 비교기 그룹 내의 비교 연산들의 결과들을 모두 논리곱(AND)으로 논리연산하는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
  9. 제8항에 있어서,
    상기 제i 비교기 그룹은 상기 제i 값과, 상기 제i 값을 제외한 값 중 하나의 값(이하 제j 값)에 대하여 비교 연산을 수행하는 다수의 제(i,j) 단위 비교기로 구성되는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
  10. 삭제
  11. 제8항에 있어서,
    상기 제i 논리게이트 회로부는 논리연산 결과를 입력받아 사전에 정해진 우선순위에 따라 결과를 출력하는 우선순위 인코더를 더 포함하여 구성되는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
  12. 제9항에 있어서,
    상기 제(i,j) 단위 비교기는 i의 우선순위가 j의 우선순위보다 큰 경우 "≤" 또는 "≥" 비교연산을 수행하고, 그렇지 않은 경우 "<" 또는 ">" 비교연산을 수행하는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
  13. 제9항에 있어서,
    상기 제(i,j) 단위 비교기는 "<" 또는 ">" 비교연산을 수행하되, i의 우선순위와 j의 우선순위의 비교 결과에 따라, 서로 다른 비교연산을 수행하는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
  14. 제9항에 있어서,
    상기 제(i,j) 단위 비교기는 "<" 또는 ">" 비교연산을 수행하되, i의 우선순위와 j의 우선순위의 비교 결과에 따라, 서로 반대되는 비교연산을 수행하고 서로 반대되는 결과를 출력하는 것을 특징으로 하는 다중 입력을 위한 디지털 비교기.
KR1020160127843A 2016-10-04 2016-10-04 다중 입력을 위한 비교 방법 및 디지털 비교기 KR101846417B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160127843A KR101846417B1 (ko) 2016-10-04 2016-10-04 다중 입력을 위한 비교 방법 및 디지털 비교기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160127843A KR101846417B1 (ko) 2016-10-04 2016-10-04 다중 입력을 위한 비교 방법 및 디지털 비교기

Publications (1)

Publication Number Publication Date
KR101846417B1 true KR101846417B1 (ko) 2018-04-06

Family

ID=61973739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160127843A KR101846417B1 (ko) 2016-10-04 2016-10-04 다중 입력을 위한 비교 방법 및 디지털 비교기

Country Status (1)

Country Link
KR (1) KR101846417B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100679324B1 (ko) 2005-09-23 2007-02-05 엠텍비젼 주식회사 다중 비교기
JP2009175861A (ja) 2008-01-22 2009-08-06 Ntt Electornics Corp 値選択回路
JP2010224818A (ja) * 2009-03-23 2010-10-07 Nec System Technologies Ltd データ選択装置、データ選択方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100679324B1 (ko) 2005-09-23 2007-02-05 엠텍비젼 주식회사 다중 비교기
JP2009175861A (ja) 2008-01-22 2009-08-06 Ntt Electornics Corp 値選択回路
JP2010224818A (ja) * 2009-03-23 2010-10-07 Nec System Technologies Ltd データ選択装置、データ選択方法及びプログラム

Similar Documents

Publication Publication Date Title
Smith et al. Designing asynchronous circuits using NULL convention logic (NCL)
Kumar et al. Low voltage high performance hybrid full adder
Cheng A high-speed magnitude comparator with small transistor count
Hasan et al. Comprehensive study of 1-bit full adder cells: review, performance comparison and scalability analysis
Balasubramanian Asynchronous carry select adders
Umapathi et al. A Comprehensive Survey on Distinctive Implementations of Carry Select Adder
Ghafari et al. A new high-speed and low area efficient pipelined 128-bit adder based on modified carry look-ahead merging with Han-Carlson tree method
US5951630A (en) Digital adder circuit
Devika et al. Design of a high-speed binary counter using a stacking circuit
Lin et al. Modular design of high-efficiency hardware median filter architecture
KR101846417B1 (ko) 다중 입력을 위한 비교 방법 및 디지털 비교기
Ykuntam et al. Design of 32-bit carry select adder with reduced area
Natarajan et al. Low power high performance carry select adder
Das et al. A timing-driven approach to synthesize fast barrel shifters
Deepthi et al. Design and Implementation of High-Speed Low-Power Carry Select Adder
Seo et al. High-level hardware design of digital comparator with multiple inputs
Tapadar et al. Power and area aware improved SQRT carry select adder (CSIA)
Soundharya et al. GDI based area delay power efficient carry select adder
Jana et al. A New Low Power RTL Optimized 16-Bit Fixed Point ALU Using Hybrid Adder Logic
Wesly et al. Design of high-performance carry select adder using multiplexer based logic in 90nm technology
Kumar et al. A reconfigurable INC/DEC/2's complement/priority encoder circuit with improved decision block
Prashasti et al. Design and Performance Evaluation of Highly Efficient Adders in Nanometer Technology
Raghunandan et al. Area and timing analysis of advanced adders under changing technologies
Joel et al. Design of Low Power High Speed Hybrid Adder Using Gdi Technique
Pathak A review of approximate adders for energy-efficient digital signal processing

Legal Events

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