KR102591638B1 - 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션 - Google Patents

3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션 Download PDF

Info

Publication number
KR102591638B1
KR102591638B1 KR1020160079523A KR20160079523A KR102591638B1 KR 102591638 B1 KR102591638 B1 KR 102591638B1 KR 1020160079523 A KR1020160079523 A KR 1020160079523A KR 20160079523 A KR20160079523 A KR 20160079523A KR 102591638 B1 KR102591638 B1 KR 102591638B1
Authority
KR
South Korea
Prior art keywords
sum
vector
carry
resultant
shift amount
Prior art date
Application number
KR1020160079523A
Other languages
English (en)
Other versions
KR20170024524A (ko
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 삼성전자주식회사
Publication of KR20170024524A publication Critical patent/KR20170024524A/ko
Application granted granted Critical
Publication of KR102591638B1 publication Critical patent/KR102591638B1/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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/50Adding; Subtracting
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/5443Sum of products

Landscapes

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

Abstract

단일 곱셈-누산기 회로의 고속 근경로 회로는 가수 유효수, 곱셈 캐리, 및 곱셈 합을 수신하고 결과 합 벡터 및 결과 합 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들; 상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 처리하는 하나 또는 그 이상의 선행 제로 예측기들; 및 상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더하는 하나 또는 그 이상의 가산기들을 포함한다.

Description

3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션{FAST CLOSE PATH SOLUTION FOR A THREE-PATH FUSED MULTIPLY-ADD DESIGN}
본 발명은 디지털 회로들에 관한 것이며, 보다 구체적으로, 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션에 관한 것이다.
부동 소수점 회로는 부동 소수점 수에 다양한 수학적 연산을 수행하도록 설계된다. 이러한 회로의 속도를 향상 시키거나 특별한 부동 소수점 함수를 수행하기 위해 특별한 하드웨어가 쓰일 수 있다. 예를 들어, 디지털 신호 처리 연산에서 일반적으로 사용되는 곱셈 -누산(multiply-accumulate) 기능들을 처리하기 위해, 단일 곱셈-누산기(fused multiply-adder) 회로가 부동 소수점 회로 내에 구현될 수 있다.
상위 레벨에서, 단일 곱셈-누산기 회로는 기본적으로 수식 (A×B)+C을 실행 시키는 단일 명령을 수행하기 위해 곱셈연산을 덧셈연산과 합친다. 단일 곱셈-누산기 회로내에서, 처음에 피승수와 승수는 부분 곱 생성 모듈에 의해 곱해진다. 이후, 부분 곱은 부분곱을 예비(redundant) 형태의 합과 캐리로 변환시키는 부분 곱 환원 모듈에 의해 더해진다. 예비 합과 캐리는 제2 예비 합과 캐리를 형성하기 위해 캐리-저장 가산기를 통해 가수(加數, addend)에 더해진다. 제2 예비 합과 캐리는 총합을 얻기 위해 이어서 캐리-전파 가산기내에서 더해진다.
1990년 초부터, (A×B)+C를 처리하기 위한 단일 명령 수식을 이용하는 과잉된 알고리즘들은 디지털 신호 처리와 그래픽 처리에 적용을 위해 제시되어 왔다. 증가하는 단일 곱셈-누산 명령의 이용을 보상하기 위해, 일부 칩들의 부동 소수점 가산기(floating-point adder, FPA) 및 부동 소수점 곱셈기(FPM)은 단일 곱셈시에 (A×B)+0.0 및 단일 덧셈시에는 (A×1.0)+C 와 같은 상수를 이용함으로써, 단일 곱셈-누산기에 의해 교체되었다. 산업상의 구현과 증가되는 알고리즘적 활동의 조합은 단일 곱셈-누산 명령을 부동 소수점 연산을 위한 IEEE 표준에 포함시킬 것을 고려해보도록 IEEE 754R 위원회를 촉구 시켰다.
그러나, 종래의 단일 곱셈-누산기 회로들은 선행 제로 예측기(leading zero anticipator, ZPA) 스테이지에서부터, 우선순위 인코더(priority encoder, PENC)로, 정상화 쉬프트 스테이지(normalization shift stage)로, 그리고 최종적으로는 풀 가산/라운드 스테이지에 까지 흐르는 연속적인 사건 연쇄를 갖는 임계 근경로(近經路, close path)를 포함한다. 결과적으로, 종래의 접근 방법에서는 근경로는 과도한 로직 깊이를 가졌으며, 그에 따라, 큰 레이턴시(latency)를 가졌다. 본 발명의 실시예에서는 선행기술들의 이러한 한계점들과 다른 한계점들을 다룬다.
본 발명의 목적은 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션을 제공하는 것이다.
본 발명의 실시예에 따르면, 단일 곱셈-누산기 회로는 고속 근경로 회로를 포함한다. 단일 곱셈-누산기 회로의 고속 근경로 회로는 가수, 곱셈 캐리, 및 곱셈 합을 수신하고, 결과 합 벡터 및 결과 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들을 포함할 수 있다. 상기 고속 근경로 회로는 하나 또는 그 이상의 압축기들에 연결되는 하나 또는 그 이상의 선행 제로 예측기들을 포함한다. 상기 하나 또는 그 이상의 선행 제로 예측기들은 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 처리한다. 상기 고속 근경로 회로는 상기 하나 또는 그 이상의 압축기들에 연결되는 하나 또는 그 이상의 가산기들을 포함한다. 상기 하나 또는 그 이상의 가산기들은, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더한다.
본 발명의 다른 실시예에 따르면, 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법이 제공된다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 유효 가수부, 곱셈 캐리, 및 곱셈 합을 하나 또는 그 이상의 압축기들에 의해 수신하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 결과 합 벡터 및 결과 캐리 벡터를 상기 하나 또는 그 이상의 압축기들에 의해 생성하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 하나 또는 그 이상의 선행 제로 예측기들에 의해 수신하고 처리하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 상기 하나 또는 그 이상의 선행 제로 예측기들의 출력을 하나 또는 그 이상의 우선순위 인코더들에 의해 수신하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 쉬프트량을 상기 하나 또는 그 이상의 우선순위 인코더들에 의해 결정하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 하나 또는 그 이상의 가산기들에 의해 수신하는 단계를 포함할 수 있다. 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법은 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 상기 하나 또는 그 이상의 가산기들에 의해 더하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따른 단일 곱셈-누산기 회로가 제공된다. 단일 곱셈-누산기 회로는 제1 유효수 및 제2 유효수를 수신하는 곱셈 어레이를 포함할 수 있다. 상기 곱셈 어레이는 곱셈 캐리 및 곱셈 합을 생성할 수 있다. 상기 단일 곱셈-누산기 회로는 제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 가산 앵커 경로를 포함할 수 있다. 상기 단일 곱셈-누산기 회로는 상기 제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 곱셈 앵커 경로를 포함할 수 있다. 상기 단일 곱셈-누산기 회로는 상기 제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 고속 근경로 회로를 포함할 수 있다. 상기 고속 근경로 회로는 상기 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하고, 결과 합 벡터 및 결과 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들을 포함할 수 있다. 상기 고속 근경로 회로는 하나 또는 그 이상의 압축기들에 연결되는 하나 또는 그 이상의 선행 제로 예측기들을 포함한다. 상기 하나 또는 그 이상의 선행 제로 예측기들은 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 처리한다. 상기 고속 근경로 회로는 상기 하나 또는 그 이상의 압축기들에 연결되는 하나 또는 그 이상의 가산기들을 포함한다. 상기 하나 또는 그 이상의 가산기들은, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더한다.
본 발명의 개념의 실시예들은 감소 된 게이트의 깊이를 갖고, 그에 따라 감소 된 레이턴시를 갖는 3-경로 단일 곱셈-누산기 회로의 근경로를 갖는다. 임계적인 근경로의 게이트 깊이 및 레이턴시를 감소시킴으로써, 단일 곱셈-누산기 회로는 더 높은 주파수에서 동작 할 수 있다.
본 발명의 전술한 및 후술될 추가적인 특징 및 효과는 다음의 도면들 함께 참조되어 후술될 상세한 설명에 의해 더욱 명확해질 것이다.
도 1은 본 발명의 일 실시예에 따른 3-경로 단일 곱셈-누산기의 예시적인 블록도이다.
도 2는 단일 곱셈-누산기의 근경로의 예시적인 블록도이다.
도 3은 본 발명의 일 실시예에 따른 3-경로 단일 곱셈-누산기 회로를 위한 고속 근경로 솔루션을 제공하기 위한 기술을 나타내는 순서도를 도시한다.
도 4는 도 1에 도시된 3-경로 단일 곱셈-누산기 회로를 포함하는 컴퓨팅 시스템의 블록도이다.
이하 본 발명의 개념의 구체적인 실시예에 대한 참조가 상세하게 제공될 것이다. 본 발명의 개념의 구체적인 실시예에 대한 예들은 첨부된 도면에 도시될 것이다. 후속하는 상세한 설명에서, 본 발명의 개념에 대한 완전한 이해가 가능해지도록 수많은 구체적인 사항들이 제공될 것이다. 그러나, 당업자는 이러한 상세한 설명이 없이도 본 발명의 개념을 실시할 수 있다는 것을 이해하여야 한다. 다른 예에서, 공지 또는 공용의 방법들, 단계들, 구성들, 회로들, 및 네트워크들은 본 발명의 실시예의 양태를 불필요하게 모호하게 하지 않기 위해 상세하게 기재되지 않았다.
본 명세서에서 제1 및 제2 등이 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 이러한 구성 요소는 이러한 용어에 의해 한정되지 않는 것으로 이해 될 것이다. 상기 용어들은 하나의 구성 요소를 다른 것과 구별하기 위해 사용된다. 예를 들어, 제1 논리 단계는 제 2 논리 단계로 명명될 수 있으며, 이와 유사하게 본 발명의 개념의 범위를 벗어나지 않은 상태에서, 제2 논리 스테이지는 제1 논리 스테이지로 명명될 수 있다.
본 발명의 개념의 발명의 설명에 사용된 용어들은 특정한 실시예들을 기술하기 위한 목적으로만 사용되는 것이며, 본 발명의 개념을 한정하는 의도로는 사용되지 않는다. 문맥상 명백히 다르게 지시하지 않는 한 단수 형태는 본 발명의 개념의 설명 및 부가된 청구항에 사용될 때, 복수의 형태를 포함하는 의도로 사용된 것으로 이해되어야 한다. 또한, 본 명세서에 사용된 “및/또는” 용어는 하나 또는 그 이상의 관련된 나열된 사항의 모든 가능한 조합을 지시하거나 포함하는 것으로 이해되어야 한다. “포함하는” 용어가 본 명세서에 사용되는 경우, 기술된 특징, 숫자, 단계, 동작, 구성, 및/또는 부품들의 존재를 명기하는 것이며, 이들의 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성, 부품, 및/또는 그룹의 존재 또는 부가를 배제하지 않는 것으로 더 이해되어야 한다. 구성 및 특징의 도시는 일정한 비례로 그려진 것은 아니며, 일부 구성 및 특징은 확대/축소하여 그려질 수도 있다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다.
도 1은 본 발명의 일 실시예에 따른 3-경로 단일 곱셈-누산기의 예시적인 블록도이다.
3-경로 단일 곱셈-누산기(100)는 곱셈 어레이(120), 가산 앵커 경로(125), 근경로(130), 곱셈 앵커 경로(135), 그리고, 가산/라운드 유닛(145)를 포함할 수 있다. 후술할 바와 같이 가산/라운드 유닛(145)은 근경로와 함께 이용될 필요는 없다. 곱셈 어레이(120)는 A 유효수(significand)와 B 유효수를 수신 받을 수 있다. C 가수 유효수는 가산 앵커 경로(125)에 직접 제공될 수 있다. 3-경로 단일 곱셈-누산기(100)는 곱셈 어레이(120) 내의 캐리-저장-가산기(carry-save-adder) 트리를 뒤따르는 데이터-경로를 다수의 경로 즉, 각각이 서로 다른 데이터 “앵커(anchor)”로 설계된 가산 앵커 경로(125), 곱셈 앵커 경로(135) 및 근경로(130)로 분리시킬 수 있다.
이와 같은 앵커 케이스로의 분할은 방대한 정렬 구성 요소뿐만 아니라 보수 처리 단계에 대한 요구를 제거한다. 대신, 3-경로 단일 곱셈-누산기(100)는 로컬 레벨에서 포인트 정렬을 분할하고, 반전을 정정 할 수 있다. 두꺼운 선과 화살표는 두 개의 피연산자(예를 들어, 곱셈 합(122) 및 곱셈 캐리(124))를 갖는 경로를 표시한다. 얇은 선 및 화살표는 하나의 피연산자 (예를 들어, C 가수 유효수 105)를 갖는 경로를 나타낸다. 후술할 바와 같이 근경로(130)는 직접 결과 유효수(150)를 생성할 수 있다. 대안적으로 또는 부가적으로, 가산 앵커 경로(125) 및/또는 곱셈 앵커 경로(135)는 결과 유효수(150)를 출력할 수 있는 가산/라운드 유닛(145)를 통해 라우팅 될 수 있다.
도 2는 도 1의 단일 곱셈-누산기(100)의 근경로(130)의 예시적인 블록도이다. 3개의 부동 소수점 피연산자들(예를 들어, opA, opB, 및 opC)이 주어진 상태에서, 3-경로 단일 곱셈-누산기(100, 도 1에 도시됨)는 다음과 같은 기능을 수행할 수 있다. 결과=opC+(opA*opB). 예를 들어, opA_Mant, opB_Mant, 및 opC_Mant가 opA, opB, 및 opC의 가수들(mantissas)과 각각 동일 하고, opA_Exp, opB_Exp, 및 opC_Exp가 opA, opB, and opC의 지수(exponent)들과 각각 동일하고, opA_Val, opB_Val, 및 opC_Val이 opA, opB, and opC의 수치값들과 각각 동일한 경우, 단일 곱셈-누산(fused multiply-add, FMA)에 대한 3-경로 솔루션에서, 근경로 회로(130)는 다음과 같은 케이스 의 세트들을 커버할 수 있다. 델타가 (opC_Exp - (opA_Exp + opB_Exp))와 동일하면, 근경로 회로(130)는 ((델타가 2보다 작거나 같고, -1 보다 크거나 같음) and (연산이 유효한 뺄셈임))를 만족하는 모든 케이스를 커버할 수 있다. 수식으로는 202에 도시된 바와 같이 다음과 같을 수 있다: ((2 >= 델타 >= -1) & (연산이 유효한 뺄셈임)).
세 개의 피연산자가 근경로 회로(130)에 제공될 수 있다: opC_Mant (예를 들어, 가산 유효수), pS (예를 들어, 곱셈 합), and pC (예를 들어, 곱셈 캐리). 보다 구체적으로, 근경로 회로(130)는 C 가수 유효수[52:0](예를 들어, 도 1의 105), 곱셈 합[105:1](예를 들어, 도1 의 122), 및 곱셈 캐리[105:0](예를 들어, 도 1의 124)를 포함 및/또는 수신 받을 수 있다. 본 명세서에서 사용하는 표기와 관련하여, [52:0] 표기는, 예를 들어, 52 비트의 최상위 비트(Most Significant Bit)와 논리 '0'인 1 비트의 최하위 비트(Least Significant Bit)를 갖는 53 비트를 갖는 값일 수 있다. 다른 예로써, [105:1] 표기는 최상위 비트 105 비트와 최하위 비트 1비트를 갖는 105 비트를 갖는 값을 의미할 수 있다. 예시적인 비트 표기법이 표기되어 있지만, 다른 적절한 비트 표기법, 비트 폭 및/또는 다른 대체적인 표기들이 여기서 설명된 본 발명의 개념을 벗어나지 않고 이용될 수 있음이 이해될 것이다.
근경로 회로(130)는 반전 정렬된 가산기 연산자를 곱항(product terms)과 조합 시키거나, 정렬된 가산기 연산자를 반전된 곱항와 조합 시키기 위해 3:2 CSA(210) 및 3:2 CSA(215)를 포함할 수 있다. 본 문장에서 3:2 표기는 로직 블록에 의해 3개의 입력들이 수신되고, 2개의 출력이 제공된다는 것을 의미한다. 일부 실시예에서, 논리적으로 반대의 항이 반전된 곱셈 연산자와 미-보상 가산항에 대해 생성될 수도 있다. 3:2 CSA(210)은 정렬기(205)로부터의 출력 값을 입력값으로써 수신 받을 수 있다. 정렬기(205)는 C 가수 유효수[52:0](105)의 작은 정렬을 수행하여 pS 값(122) 및 pC값(124)과 정렬될 수 있는 opCAlign 값(207)을 생성할 수 있다. 정렬기(205)는 expDiff[1:0] 신호를 수신하고, 적어도 expDiff[1:0] 신호를 근거로 정렬을 수행할 수 있다.
연산의 흐름은 두 개의 서브 경로(212, 214)로 나뉘어질 수 있다. 제1 서브 경로(212)에서, 세 개의 피연산자는 3:2 CSA(210)에 보내진다. 보다 구체적으로, opCAlign 값(207), 부정 pC 값(124), 및 부정 pS 값(122)은 3:2 CSA(210)으로 보내지고, 3:2 CSA(210)에 의해 수신될 수 있다. 3:2 CSA(210)은 결과 합 rS_CgeAB(216) 벡터 및 결과 캐리 rC_CgeAB(218) 벡터를 생성할 수 있다. rS_CgeAB(216) 벡터 및 rC_CgeAB(218) 벡터는 선행 제로 예측기(leading zero anticipator, LZA, 220) 및 우선순위 인코더(priority encoder, PENC, 230)에 보내질 수 있다. LZA(220)은 선행하는 제로의 개수를 결정할 수 있다. PENC(230)은 정규화 시키는 쉬프트량 ShftAmt_CgeAB(232)를 결정할 수 있다. 서브 경로(212)와 관련하여, C는 AB(예를 들어, CgeAB)와 같거나 크다는 것이 가정된다. 수식 형태에서, CgeAB는 다음과 같다: CgeAB = (|opC_Val| >= |(opA_Val * opB_Val)|).
예를 들어, C>AB인지를 판단하는 것과 같이 어느 피연산자가 진정하게 큰지 결정하기 위해 3:2 CSA(210)에 의한 제1 3:2 조합 출력은 비교기(235)에 전달될 수 있다. 비교기 결과는 하나 또는 그 이상의 선택기들(예를 들어, 멀티플렉서((240) 및/또는 (260)))에 신호를 주어 정확한 올바른 조합을 선택할 수 있다. 결과는 증분과 고속-라운딩을 대비하여 정규화될 수 있다. 일 실시예에서, 멀티플렉서(240, 260)는 올바른 조합을 선택할 수 있는 단일 멀티플렉서일 수 있다. 보다 구체적으로, 비교기(235)는 C가 AB보다 크거나 작은지(예를 들어, C >= AB) 또는 C는 AB보다 작은지(예를 들어, C < AB)를 나타내는 선택 신호(238)를 생성할 수 있다. 선택 신호(238)는 쉬프트량 선택 신호의 적어도 일부로써 기능할 수 있다. 멀티플렉서(240, 260) 각각은 선택 신호(238)에 의해 제어될 수 있다. 다시 말해, 같은 선택 신호(238)는 두개의 멀티플렉서들(240, 260)를 위해 이용될 수 있다. 위에서 설명한 바와 같이, LZA(220)의 동작은 어떤 피연산자가 큰지에 영향을 받지 않으므로, LZA(220)은 3:2 CSA(210)으로부터 수신된 입력들의 조합을 전달할 수 있다. 일 실시예에서, LZA(220)은 3:2 CSA(210)으로부터 출력된 출력값을 입력값으로써 수신할 수 있다. LZA(220)의 출력값은 PENC(230)에 전달될 수 있다. PENC(230)는 LZA(220)의 출력값을 인코딩할 수 있다. 선택기 또는 멀티플렉서(240)는 PENC(230)로부터 출력된 출력값을 하나의 입력값으로써 수신할 수 있다. 멀티플렉서(240)은 비교기(235)에 의해 생성된 선택 신호(238)에 의해 제어될 수 있다.
제2 서브 경로(214)에서, 세개의 피연산자는 3:2 CSA(215)에 보내진다. 보다 구체적으로, 부정 opCAlign 값(207), pC 값(124), 및 pS 값(122)은 3:2 CSA(215)으로 보내지고, 3:2 CSA(215)에 의해 수신될 수 있다. 3:2 CSA(215)는 결과 합 rS_CltAB(222) 벡터 및 결과 캐리 rC_CltAB(224) 벡터를 생성할 수 있다. rS_CltAB(222) 벡터 및 rC_CltAB(224) 벡터는 LZA(250) 및 PENC(255)에 보내질 수 있다. LZA(250)은 선행하는 제로의 개수를 결정할 수 있다. PENC(255)은 정규화 시키는 쉬프트량 ShftAmt_CltAB(234)를 결정할 수 있다. 서브 경로(214)와 관련하여, C는 AB(예를 들어, CltAB)보다 작다는 것이 가정된다. 수식 형태에서, CltAB는 다음과 같다: CltAB = (|opC_Val| < |(opA_Val * opB_Val)|).
LZA(250)의 동작은 어떤 피연산자가 큰지에 영향을 받지 않으므로, LZA(250)은 3:2 CSA(215)으로부터 수신된 입력들의 조합을 전달할 수 있다. 일 실시예에서, LZA(250)은 3:2 CSA(215)으로부터 출력된 출력값을 입력값으로써 수신할 수 있다. LZA(250)의 출력값은 PENC(255)에 전달될 수 있다. PENC(255)는 LZA(250)의 출력값을 인코딩할 수 있다. 멀티플렉서(240)는 PENC(255)로부터 출력된 출력값(예를 들어, 234)을 하나의 입력값으로써 수신할 수 있다. 서브 경로들(212, 214)과 병렬로, 비교기(235)는 C 가 AB(예를 들어, CgeAB)보다 크거나 같은지 또는 C는 AB보다 작은지(예를 들어, CltAB) 결정할 수 있다. 본 명세서에서 사용된 '~에 병렬로' 또는 '~과 병렬로' 용어의 의미는 ~에 실질적으로 동시에 또는 ~과 실질적으로 동시에라는 의미로 사용될 수 있다.
멀티플렉서(240)는 비교기(235)의 출력(238)에 의해 제어될 수 있다. 멀티플렉서(240)는 ShftAmt_CgeAB(232) 및 ShftAmt_CltAB(234) 중에서 쉬프트량 shftAmt[6:0](242)을 선택할 수 있다. 예를 들어, 비교 결과가 CgeAB일 때, 멀티플렉서(240)은 ShftAmt_CgeAB(232)를 선택할 수 있다. 이와 반대로 비교 결과가 CltAB이면 멀티플렉서(240)는 ShftAmt_CltAB(234)를 선택할 수 있다.
본 발명의 일 실시예에 따르면, 가산기(225)와 가산기(245)는 LZA들(예를 들어, 220 및/또는 250) 및/또는 PENC들(예를 들어, 230 및/또는 255)과 병렬로 배치될 수 있다. 가산기(225) 3:2 CSA(210)로부터의 출력값들을 입력값들로써 수신할 수 있다. 가산기(245)는 3:2 CSA(215)로부터의 출력값들을 입력값들로써 수신할 수 있다. 가산기(225) 및 가산기(245)는 각각 3:2 CSA(210) 및 3:2 CSA(215)의 출력값들을 LZA들 및/또는 PENC들과 병렬로 처리할 수 있다. 가산기(225)는 3:2 CSA(210)의 출력값들을 더할 수 있다. 가산기(245)는 3:2 CSA(215)의 출력값들을 더할 수 있다. 보다 구체적으로, rS_CgeAB(216) 및 rC_CgeAB(218)의 비정규화 합인 sum_CgeAB(228)은 LZA 및/또는 PENC 연산과 병렬로 연산될 수 있다. 또한, rS_CltAB(226) 및 rC_CltAB(224)의 비정규화 합인 sum_CltAB(226)은 LZA 및/또는 PENC 연산과 병렬로 연산될 수 있다.
일 실시예에서, 선택기나 멀티플렉서(260)는 가산기(225)의 출력값(228) 및 가산기(245)로부터의 출력값들(226)을 입력값으로써 수신 받을 수 있다. 멀티플렉서(260)은 비교기(235)의 출력값(예를 들어, 238)에 의해 제어될 수 있다. 가산기(225) 및 가산기(245)에 의해 수행되는 덧셈 연산은 정규화 이전에 수행될 수 있다. 다시 말해, 가산기(225) 및 가산기(245) 각각은 비정규화 합을 생성할 수 있다. 멀티플렉서(260)는 가산기(225) 및 가산기(245)에 의해 생성된 비정규화 합들 중에서 선택할 수 있다. 보다 구체적으로, 멀티플렉서(260)은 sum_CgeAB(228) 및 sum_CltAB(226) 중에서 합(244)를 선택할 수 있다. 예를 들어, 비교 결과가 CgeAB이면, 멀티플렉서(260)은 sum_CgeAB(228)을 선택할 수 있다. 반대로, 비교 결과가 CltAB이면, 멀티플렉서(260)은 sum_CltAB(226)을 선택할 수 있다.
근경로(130)가 임계 타이밍 아크(critical timing arc)이므로, LZA 및 PENC와 병렬로 덧셈 연산을 수행함으로써, 로직 깊이와 레이턴시가 감소된다. 노멀라이저(265)는 멀티플렉서(240)의 출력값(예를 들어, 242) 및 멀티플렉서(260)의 출력값(예를 들어, 244)을 입력값으로써 수신할 수 있다. 예를 들어, 노멀라이저(265)는 멀티플렉서(240)으로부터 ShiftAmt[6:0](242)을 수신 받고, 멀티플렉서(260)로부터 합(244)을 수신 받을 수 있다. 노멀라이저(265)는 ShiftAmt[6:0](242)를 이용하여 합(244)을 정규화 시킬 수 있다.
발명의 일 예에서, 1-비트 조절기(270)는 노멀라이저(265)의 출력값을 수신할 수 있다. 1-비트 조절기(270)는 하나의 비트로 데이터를 조절할 수 있다. 1-비트 조절기(270)의 출력값은 증분기(275)로 전달될 수 있다. 증분기(275)는 1-비트 조절기(270)로부터 수신한 값을 증분 시킬 수 있다. 1-비트 조절기(270)의 출력값은 또한 선택기나 멀티플렉서(280)에 전달될 수 있다. 멀티플렉서(280)는 1-비트 조절기(270) 및 증분기(275)로부터의 출력값을 수신 받을 수 있다. 멀티플렉서(280)는 이러한 수신된 값들로부터 어느 하나를 선택할 수 있다. 멀티플렉서(280)는 라운드 신호(282)에 의해 제어될 수 있다. 멀티플렉서(280)는 근경로 결과[52:0] 값(284)을 출력할 수 있다. 본 발명의 개념의 실시예에 따라, 증분기(275)는 풀 가산기를 대신하여 사용될 수 있고, 그에 따라 성능을 향상 시키고, 레이턴시를 감소 시킬 수 있다. 또한, 단일 멀티플렉서(280)는 먹싱의 복수의 스테이지들을 이용하는 종래의 풀 라운드 단계보다 빠른 고속 라운딩에 사용될 수 있다.
도 3은 본 발명의 일 실시예에 따른 3-경로 단일 곱셈-누산기 회로를 위한 고속 근경로 솔루션을 제공하기 위한 기술을 나타내는 순서도이다. 이 기술은 가수 유효수(예를 들어, 도 1의 105), 곱셈 캐리(예를 들어 도 1의 124) 및 곱셈 합(예를 들어, 도 1의 122)을 포함하는 3개의 피연산자를 근경로 회로(예를 들어, 도 1의 130)가 수신할 수 있는 305에서 시작될 수 있다. 일 실시예에서, 가수 유효수는 예를 들어, 도 2의 정렬기(205)에 의해 정렬될 수 있다. 이러한 흐름은 두개의 병렬 경로(385, 390)를 따라 진행될 수 있다. 경로(385)에 있는 단계들은 경로(390)에 있는 단계들과 병렬로(즉, 실질적으로 동시에) 수행될 수 있다. 경로(385)는 CgeAB를 가정 한다. 경로(390)은 CltAB를 가정한다.
310에 도시된 바와 같이, 경로 385에서, 제1 압축기(예를 들어, 도 2의 210)는 적어도 가수 유효수 및 곱셈 캐리를 근거로 결과 합 벡터(예를 들어 도 2의 216) 및 결과 캐리 벡터(예를 들어, 도 2의 218)를 생성할 수 있다. 이후, 경로(385)는 세개의 서브 경로(315, 325, 330)로 나뉘어질 수 있다. 315에서, 결과 합 벡터(예를 들어, 도 2의 216) 및 결과 캐리 벡터(예를 들어, 도 2의 218)은 제1 LZA(예를 들어, 도 2의 220)에 전달될 수 있다. 320에서, 제1 PENC(예를 들어, 도 2의 230)는 정규화를 위해 쉬프트량(예를 들어, 도 2의 232)을 결정할 수 있다. 한편 325에서, 가산기(예를 들어, 도 2의 225)는 결과 합 벡터(예를 들어 도 2의 216) 및 결과 캐리 벡터(예를 들어, 도 2의 218)의 비정규화 합(예를 들어 도 2의 228)을 병렬로 연산할 수 있다. 나아가, 비교기(예를 들어, 도 2의 235)는 330에 도시된 바와 같이, C가 AB보다 크거나 같은지 병렬로 결정할 수 있다.
335에 도시된 바와 같이, 경로 390에서, 제2 압축기(예를 들어, 도 2의 215)는 적어도 가수 유효수, 곱셈 캐리 및 곱셈 합을 근거로 결과 합 벡터(예를 들어 도 2의 222) 및 결과 캐리 벡터(예를 들어, 도 2의 224)를 생성할 수 있다. 이후, 경로(385)는 두개의 서브 경로(340, 345)로 나뉘어질 수 있다. 340에서, 결과 합 벡터(예를 들어, 도 2의 222) 및 결과 캐리 벡터(예를 들어, 도 2의 224)은 제2 LZA(예를 들어, 도 2의 250)에 전달될 수 있다. 350에서, 제2 PENC(예를 들어, 도 2의 255)는 정규화를 위해 쉬프트량(예를 들어, 도 2의 234)을 결정할 수 있다. 한편 345에서, 제2 가산기(예를 들어, 도 2의 245)는 결과 합 벡터(예를 들어 도 2의 222) 및 결과 캐리 벡터(예를 들어, 도 2의 224)의 비정규화 합(예를 들어 도 2의 226)을 병렬로 연산할 수 있다.
도 3의 단계와 구성들은 특정한 순서로 기술되었으나, 이러한 단계 및/또는 구성들은 본 명세서에서 개시하는 본 발명의 사상으로부터 벗어나지 않는 범위에서 다른 순서로 배열될 수 있으며, 중간에 개재되는 단계들을 포함할 수 있다.
두 개의 경로들(385, 390)은 먹싱 스테이지가 355 및 360에서 시작될 수 있는 322에서 합쳐질 수 있다. 보다 구체적으로, 355에서, 쉬프트량은 선택될 수 있다. 예를 들어, 멀티플렉서(예를 들어, 도 2의 240)는 제1 쉬프트량(예를 들어, 도 2의 232) 및 제2 쉬프트량(도 2의 234) 중에서 쉬프트량(예를 들어 도 2의 242)을 선택할 수 있다. 다시 말해, 비교 결과가 CgeAB이면, 멀티플렉서(예를 들어, 도 2의 240)는 도 2의 ShftAmt_CgeAB(232)를 선택할 수 있다. 이와 반대로 비교 결과가 CltAB이면, 멀티플렉서(예를 들어 도 2의 240)는 ShftAmt_CltAB(예를 들어 도 2의 234)를 선택할 수 있다. 360에서, 멀티플렉서(예를 들어, 도 2의 260)는 복수의 합들(예를 들어, 도 2의 sum_CgeAB(228) a및 sum_CltAB(226)) 중에서 합(예를 들어 도 2의 244)를 선택할 수 있다. 예를 들어, 비교 결과가 CgeAB이면, 멀티플렉서(예를 들어, 도 2의 260)ㄴ,ㄴ sum_CgeAB(228)을 선택할 수 있다. 이와 반대로, 비교 결과가 CltAB이면, 멀티플렉서(예를 들어, 도 2의 260)는 sum_CltAB(226)을 선택할 수 있다.
365에서, 노멀라이저(예를 들어, 도 2의 265)는 355에서 결정된 쉬프트량을 이용하여 선택된 합(예를 들어, 도 2의 244)을 정규화 시킬 수 있다. 370에서, 증분기(예를 들어, 도 2의 275)는 정규화된 합을 증분시킬 수 있다. 375에서, 제1 라운드가 수행될 수 있다. 예를 들어, 멀티플렉서(예를 들어, 도 2의 280)는 라운드 신호(예를 들어, 도 2의 282)에 의해 제어될 수 있으며, 정규화된 합 및 증분된 정규화된 합 중에서 선택할 수 있다. 380에서, 근경로 회로(130)은 근경로 결과값(도 2의 284)을 출력할 수 있다.
도 4는 도 1에 도시된 3-경로 단일 곱셈-누산기 회로를 포함하는 컴퓨팅 시스템의 블록도이다. 컴퓨팅 시스템(400)은 어느 하나 또는 전부가 시스템 버스(405)에 의해 전기적으로 연결될 수 있는 클럭(410), 랜덤 엑세스 메모리(random access memory: RAM, 415), 유저 인터페이스(420), 베이스 밴드 칩셋과 같은 모뎀(425), 솔리드 스테이트 드라이브/디스크(solid state drive/disk: SSD, 440), 및/또는 프로세서(435)를 포함할 수 있다. 프로세서(435)는 고속 근경로 회로(130)를 갖는 도 1의 3-경로 단일 곱셈-누산기 회로(100)를 포함할 수 있다. 3-경로 단일 곱셈-누산기 회로(100)는 클럭(410), 랜덤 엑세스 메모리(415, RAM), 유저 인터페이스(420), 모뎀(425), 및/또는 솔리드 스테이트 드라이브/디스크(440, SSD)를 포함하거나 이들에 인터페이스로 접속할 수 있다.
일 실시예에서, 단일 곱셈-누산기 회로의 고속 근경로 회로는 가수 유효수, 곱셈 캐리, 곱셈합을 수신하는 하나 또는 그 이상의 압축기들을 포함하고, 결과 합 벡터 및 결과 캐리 벡터를 생성할 수 있다. 고속 근경로 회로는 하나 또는 그 이상의 압축기들에 연결된 하나 또는 그 이상의 선행 제로 예측기들을 포함할 수 있다. 하나 또는 그 이상의 선행 제로 예측기들은 결과 합 벡터 및 결과 캐리 벡터를 수신하고 처리할 수 있다. 근경로 회로는 하나 또는 그 이상의 압축기들에 연결된 하나 또는 그 이상의 가산기들을 포함할 수 있다. 하나 또는 그 이상의 가산기들은 결과 합 벡터 및 결과 캐리 벡터를 처리하는 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 결과 합 벡터 및 결과 캐리 벡터를 수신하고 더할 수 있다.
일 실시예에서, 고속 근경로 회로는 하나 또는 그 이상의 선행 제로 예측기들에 연결된 하나 또는 그 이상의 우선순위 인코더들을 포함할 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 하나 또는 그 이상의 선행 제로 예측기들의 출력을 수신하여 쉬프트량을 결정할 수 있다. 하나 또는 그 이상의 가산기들은 쉬프트량을 결정하는 하나 또는 그 이상의 우선순위 인코더들과 병렬로 결과 합 벡터 및 결과 캐리 벡터를 수신하고 더할 수 있다.
쉬프트량은 제1 쉬프트량으로 지칭될 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 제1 쉬프트량을 생성하는 제1 우선순위 인코더를 포함할 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 제2 쉬프트량을 생성하는 제2 우선순위 인코더를 포함할 수 있다. 근경로 회로는 선택 신호를 생성하는 비교기 및 선택 신호에 응답하여 제1 쉬프트량 및 제2 쉬프트량 중 선택 쉬프트량을 선택하는 선택기를 더 포함할 수 있다.
선택기는 제1 선택기로 지칭될 수 있다. 하나 또는 그 이상의 가산기들은 제1 비정규화 합 및 제2 비정규화 합을 생성할 수 있다. 고속 근경로 회로는 제1 비정규화 합 및 제2 비정규화 합 중에서 선택 합을 선택하는 제2 선택기를 더 포함할 수 있다. 고속 근경로 회로는 선택 쉬프트량에 응답하여 선택 합을 정규화 시키는 노멀라이저를 더 포함할 수 있다.
고속 근경로 회로는 하나의 비트로 노멀라이저의 출력을 조절하는 1-비트 조절기(270), 1-비트 조절기(270)의 출력을 증분시키는 증분기, 및 라운드 신호에 응답하여 1-비트 조절기의 출력 및 증분기의 출력 중에서 선택하는 제3 선택기를 더 포함하고, 근경로 결과를 생성할 수 있다.
하나 또는 그 이상의 압축기들은 가수 유효수를 수신 받는 비부정 입력, 곱셈 캐리를 수신 받는 제1 부정 입력, 및 곱셈 합을 수신 받는 제2 부정 입력을 갖는 제1 압축기를 포함할 수 있다. 제1 압축기는 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 생성한다. 하나 또는 그 이상의 압축기들은 가수 유효수를 수신하는 부정 입력, 곱셈 캐리를 수신 받는 제1 비부정 입력 및 곱셈 합을 수신 받는 제2 비부정 입력을 갖는 제2 압축기를 포함할 수 있다. 제2 압축기는 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 생성할 수 있다.
하나 또는 그 이상의 가산기들 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 수신하고 더하는 제1 가산기를 포함할 수 있다. 하나 또는 그 이상의 가산기들은 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 수신하고 더하는 제2 가산기를 더 포함할 수 있다. 하나 또는 이상의 선행 제로 예측기들은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로, 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 수신하고 처리하는 제1 선행 제로 예측기를 포함할 수 있다. 하나 또는 이상의 선행 제로 예측기들은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로, 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 수신하고 처리하는 제2 선행 제로 예측기를 더 포함할 수 있다.
하나 또는 그 이상의 우선순위 인코더들은 제1 선행 제로 예측기의 출력을 수신하고 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로, 제1 쉬프트량을 결정하는 제1 우선순위 인코더를 포함할 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 제2 선행 제로 예측기의 출력을 수신하고 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로, 제2 쉬프트량을 결정하는 제2 우선순위 인코더를 포함할 더 수 있다.
고속 근경로 회로는 선택 신호를 생성하는 비교기 및 선택 신호에 응답하여 제1 쉬프트량 및 제2 쉬프트량 중에서 선택 쉬프트량을 선택하는 제1 선택기를 더 포함할 수 있다. 제1 가산기는 제1 비정규화 합을 생성할 수 있다. 제2 가산기는 제2 비정규화 합을 생성할 수 있다. 고속 근경로 회로는 제1 비정규화 합 및 제2 비정규화 합 중에서 선택 합을 선택하는 제2 선택기를 더 포함할 수 있다. 고속 근경로 회로는 선택 쉬프트량에 응답하여 선택 합을 정규화 시키는 노멀라이저, 노멀라이저의 출력을 하나의 비트로 조절하는 1-비트 조절기, 1-비트 조절기의 출력을 증분시키는 증분기, 및 라운드 신호에 응답하여 1-비트 조절기의 출력 및 증분기의 출력 중에서 선택하는 제3 선택기를 더 포함할 수 있다. 제3 선택기는 근경로 결과를 생성할 수 있다.
일 실시예에서, 방법은 단일 곱셈-누산기내의 고속 근경로를 제공하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 압축기들에 의해 가수 유효수, 곱셈 캐리, 및 곱셈 합을 수신하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 압축기들에 의해 결과 합 벡터 및 결과 캐리 벡터를 생성하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 선행 제로 예측기들에 의해 결과 합 벡터 및 결과 캐리 벡터를 수신하고 처리하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 우선순위 인코더들에 의해 하나 또는 그 이상의 선행 제로 예측기들의 출력을 수신하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 우선순위 인코더들에 의해 쉬프트량을 결정하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 가산기들에 의해 결과 합 벡터 및 결과 캐리 벡터를 수신하는 단계를 포함할 수 있다. 방법은 하나 또는 그 이상의 가산기들에 의해 결과 합 벡터 및 결과 캐리 벡터를 결과 합 벡터 및 결과 캐리 벡터를 처리하는 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 더하는 단계를 포함할 수 있다.
방법은 하나 또는 그 이상의 가산기들에 의해 결과 합 벡터 및 결과 캐리 벡터를 쉬프트량을 결정하는 하나 또는 그 이상의 우선순위 인코더들과 병렬로 더하는 단계를 포함할 수 있다. 쉬프트량은 제1 쉬프트량으로 지칭될 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 제1 우선순위 인코더 및 제2 우선순위 인코더를 포함할 수 있다. 방법은 제1 우선순위 인코더에 의해 제1 쉬프트량을 생성하는 단계를 포함할 수 있다. 방법은 제2 우선순위 인코더에 의해 제2 쉬프트량을 생성하는 단계를 포함할 수 있다. 방법은 비교기에 의해 선택 신호를 생성하는 단계를 포함할 수 있다. 방법은 선택기에 의해 선택 신호에 응답하여 제1 쉬프트량 및 제2 쉬프트량 중에서 선택하는 단계를 포함할 수 있다.
선택기는 제1 선택기로 지칭될 수 있다. 방법은 하나 또는 그 이상의 가산기들에 의해 제1 비정규화 합 및 제2 비정규화 합을 생성하는 단계를 포함할 수 있다. 방법은 제2 선택기에 의해 제1 비정규화 합 및 제2 비정규화 합 중에서 선택 합을 선택하는 단계를 포함할 수 있다. 방법은 노멀라이저에 의해 쉬프트량에 응답하여 선택 합을 정규화 시키는 단계를 포함할 수 있다. 방법은 1-비트 조절기에 의해 노멀라이저의 출력을 하나의 비트로 조절하는 단계를 포함할 수 있다. 방법은 증분기에 의해 1-비트 조절기의 출력을 증분시키는 단계를 포함할 수 있다. 방법은 제3 선택기에 의해 라운드 신호에 응답하여 1-비트 조절기의 출력 및 증분기의 출력 중에서 선택하는 단계를 포함할 수 있다. 방법은 제3 선택기에 의해 근경로 결과를 생성하는 단계를 포함할 수 있다.
하나 또는 그 이상의 압축기들은 비부정 입력, 제1 부정 입력, 제2 부정 입력을 갖는 제1 압축기를 포함할 수 있다. 하나 또는 그 이상의 압축기들은 부정 입력, 제1 비부정 입력, 및 제2 비부정 입력을 갖는 제2 압축기를 포함할 수 있다. 방법은 제1 압축기의 비부정 입력에 의해 가수 유효수를 수신하는 단계를 포함할 수 있다. 방법은 제1 압축기의 제1 부정 입력에 의해 곱셈 캐리를 수신하는 단계를 포함할 수 있다. 방법은 제1 압축기의 제2 부정 입력에 의해 곱셈 합을 수신하는 단계를 포함할 수 있다. 방법은 제2 압축기의 부정 입력에 의해 가수 유효수를 수신하는 단계를 포함할 수 있다. 방법은 제2 압축기의 제1 비부정 입력에 의해 곱셈 캐리를 수신하는 단계를 포함할 수 있다. 방법은 제2 압축기의 제2 비부정 입력에 의해 곱셈 합을 수신하는 단계를 포함할 수 있다. 방법은 제1 압축기에 의해 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 생성하는 단계를 포함한다. 방법은 제2 압축기에 의해, 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 생성하는 단계를 포함할 수 있다.
하나 또는 그 이상의 가산기들은 제1 가산기 및 제2 가산기를 포함할 수 있다. 하나 또는 그 이상의 선행 제로 예측기들은 제1 선행 제로 예측기 및 제2 선행 제로 예측기를 포함할 수 있다. 하나 또는 그 이상의 우선순위 인코더들은 제1 우선순위 인코더 및 제2 우선순위 인코더를 포함할 수 있다. 방법은 제1 가산기에 의해 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 수신하고 더하는 단계를 포함할 수 있다. 방법은 제2 가산기에 의해 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 수신하고 더하는 단계를 포함할 수 있다. 방법은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 제1 선행 제로 예측기에 의해 수신하고 처리하는 단계를 포함한다. 방법은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 제2 선행 제로 예측기에 의해 수신하고 처리하는 단계를 포함한다.
방법은 제1 선행 제로 예측기의 출력을 제1 우선순위 인코더에 의해 수신하는 단계를 포함한다. 방법은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로 제1 쉬프트량을 제1 우선순위 인코더에 의해 결정하는 단계를 포함할 수 있다. 방법은 제2 선행 제로 예측기의 출력을 제2 우선순위 인코더에 의해 수신하는 단계를 포함한다. 방법은 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 더하는 제1 가산기와 병렬로, 그리고 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 더하는 제2 가산기와 병렬로 제2 쉬프트량을 제2 우선순위 인코더에 의해 결정하는 단계를 포함할 수 있다.
일 실시예들은 단일 곱셈-누산기 회로를 포함한다. 단일 곱셈-누산기 회로는 제1 유효수 및 제2 유효수를 수신하는 곱셈 어레이를 포함할 수 있다. 곱셈 어레이는 곱셈 캐리 및 곱셈 합을 생성할 수 있다. 단일 곱셈-누산기 회로는 제3 가수 유효수, 곱셈 캐리, 및 곱셈 합을 수신하는 가산 앵커 경로를 포함할 수 있다. 단일 곱셈-누산기는 제3 가수 유효부, 곱셈 캐리, 및 곱셈 합을 수신하는 곱셈 앵커 경로를 포함할 수 있다. 단일 곱셈-누산기 회로는 제3 가수 유효수, 곱셈 캐리, 곱셈 합을 수신하는 고속 근경로 회로를 포함할 수 있다. 고속 근경로 회로는 가수 유효수, 곱셈 캐리, 및 곱셈 합을 수신하고 결과 합 벡터 및 결과 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들을 포함할 수 있다. 고속 근경로 회로는 하나 또는 그 이상의 압축기에 연결된 하나 또는 그 이상의 선행 제로 예측기들을 포함할 수 있다. 하나 또는 그 이상의 선행 제로 예측기들은 결과 합 벡터 및 결과 캐리 벡터를 수신하고 처리할 수 있다. 고속 근경로 회로는 하나 또는 그 이상의 압축기들에 연결된 하나 또는 그 이상의 가산기들을 포함할 수 있다. 하나 또는 그 이상의 가산기들은 결과 합 벡터 및 결과 캐리 벡터를 처리하는 하나 또는 그 이상의 선행 제로 예측기와 병렬로 결과 합 벡터 및 결과 캐리 벡터를 수신하고 더할 수 있다.
후술되는 사항들은 발명의 특정한 측면이 적용될 수 있는 적절한 기계 또는 기계들에 대한 간략한, 일반적이 설명을 제공하기 위함이다. 일반적으로 기계 또는 기계들은 프로세서, 메모리, 예를 들어 랜덤 엑세스 메모리(RAM), 리드 온리 메모리(ROM), 또는 다른 상태 보존 매체, 저장 장치, 영상 인터페이스, 및 인력/출력 인터페이스 포트가 결합된 시스템 버스를 포함한다. 기계 또는 기계들은 키보드나 마우스와 같은 종래의 입력 장치와 다른 자동 기계로부터 수신된 지시, 가상 현실 환경과의 상호 작용, 바이오 인식 피드백, 또는 다른 입력 신호에 의해 그 적어도 일부가 제어될 수 있다. 본 명세서에서 사용될 때, “기계” 용어는 단일 기계, 기계에 통신 가능하도록 결합된 가상 기계 또는 시스템, 가상 기계들, 또는 함께 동작하는 장치들을 넓게 포함할 의도로 사용된다. 예시적인 기계들은 퍼스널 컴퓨터, 워크 스테이션, 서버, 휴대용 컴퓨터, 휴대용 장치, 전화기 및 태블릿 뿐만 아니라 예를 들어 자동차, 기차, 택시 등과 같은 개인 또는 공공 교통 수단 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램할 수 있는 또는 프로그램할 수 없는 로직 장치들 또는 어레이들, 응용 주문형 집적 회로(application specific integrated circuits, ASICs), 내장형 컴퓨터, 스마트 카드 또는 이들과 유사한 내장된 제어부를 포함할 수 있다. 기계 또는 기계들은 하나 또는 그 이상의 원격의 기계들에 대한 네트워크 인터페이스, 모뎀, 또는 다른 통신 가능한 커플링과 같은 하나 또는 그 이상의 연결들을 이용할 수 있다. 기계들은 인트라넷, 인터넷, 로컬 영역 네트워크, 광역 영역 네트워크와 같은 물리적 및/또는 논리적 네트워크의 방식을 통해 상호 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(radio frequency: RF), 위성, 마이크로파, Institute of Electrical and Electronics Engineers (IEEE) 545.11, Bluetooth®, 광학적, 적외선, 케이블, 레이저등을 포함하는 다양한 유선 및/또는 무선 근거리 또는 원거리 캐리어들 및 프로토콜을 이용할 수 있음을 알 수 있다.
본 발명의 개념의 실시예들은 기능, 단계, 데이터 구조 및 응용 프로그램들을 포함하는 관련된 데이터들과 함께 또는 이를 인용함으로써 설명될 수 있다. 이는 기계에 의해 수행되는 처리 과제들내의 기계 결과내에서 또는 추상적인 데이터 종류를 정의할 때에 또는 저레벨의 하드웨어 수준에서 접근될 수 있다. 관련된 데이터들은, 예를 들어, RAM, ROM과 같은 휘발성 및/또는 비휘발성 메모리나 다른 저장 장치 및 이들과 관련된 하드 드라이브들, 플로피 디스크들, 광학 저장소, 테이프들, 플래쉬 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 저장 매체, 생체적 저장소에 저장될 수 있다. 관련된 데이터는 물리적 및/또는 논리적 네트워크를 통해 패킷, 시리얼 데이터, 패러럴 데이터, 및 전파되는 신호들을 포함하는 전송 환경을 통해 전송될 수 있으며, 압축되거나 암호화된 형태로 이용될 수 있다. 관련된 데이터들은 분산된 환경에서 사용되고, 기계 접근을 위해 지역적 및/또는 원격으로 저장될 수 있다.
도시된 실시예를 참조하여 본 발명의 개념의 원리들이 기술되고 나타내어졌으나, 도시된 실시예들의 배열 및 세부 사항들은 이와 같은 원리들에서 벗어 나지 않고 변경될 수 있으며, 필요한 방식으로 조합될 수 있다. 비록 전술한 논의들은 특정한 실시예에 초점이 맞추어져있었으나, 다른 배치들도 고려될 수 있다. 특히, “본 발명의 개념의 실시예에 따르면”이나 이와 유사한 설명이 사용되었을지라도, 이러한 표현들은 구현될 수 있는 가능성을 의미하는 것이며, 본 발명의 개념을 특정한 구현예에 한정하려는 의미는 아니다. 본 명세서에서 사용될 때, 이러한 용어들은 다른 실시예들과 조합될 수 있는 동일한 또는 다른 실시예들은 지시할 수 있다.
본 발명의 개념의 실시예들은 하나 또는 그 이상의 프로세서에 의해 실행될 수 있는 본 명세서에서 기술된 본 발명의 개념의 구성들을 수행하기 위한 명령들을 포함하는 지시를 포함하는 비일시적인 기계-판독가능한 매체를 포함할 수 있다.
전술한 실시예들은 본 발명의 개념을 한정하는 것으로 해석되어서는 안 된다. 비록, 몇 개의 실시예들만이 기술되었으나, 당업자는 본 명세서의 개시에 의해 신규하게 교시된 내용 및 효과로부터 실질적으로 벗어나지 않고 이러한 실시예들에 대한 많은 변경들이 가능함을 쉽게 알 수 있을 것이다. 따라서, 이러한 모든 변경들은 청구항에 정의된 본 발명의 개념의 범위에 포함되려는 의도로 이해될 것이다.
210, 215: 3:2 CSA 220, 250: LZA
230, 255: 우선순위 인코더 240, 260: 멀티플렉서
265: 노멀라이저 270: 1-비트 조절기

Claims (20)

  1. 가수 유효수, 곱셈 캐리, 및 곱셈 합을 수신하고, 결과 합 벡터 및 결과 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들;
    상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 처리하는 하나 또는 그 이상의 선행 제로 예측기들;
    상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더하는 하나 또는 그 이상의 가산기들;
    상기 하나 또는 그 이상의 선행 제로 예측기들에 연결되고, 상기 하나 또는 그 이상의 선행 제로 예측기들의 출력을 수신 받고 제1 쉬프트량을 생성하는 제1 우선순위 인코더;
    제2 쉬프트량을 생성하는 제2 우선순위 인코더;
    선택 신호를 생성하는 비교기;
    상기 선택 신호에 응답하여 상기 제1 쉬프트량 및 상기 제2 쉬프트량 중에서 선택 쉬프트량을 선택하는 제1 선택기; 및
    상기 선택 신호에 응답하여 제1 비정규화 합 및 제2 비정규화합 중에서 선택 합을 선택하는 제2 선택기를 포함하되,
    상기 하나 또는 그 이상의 가산기들은 상기 제1 우선순위 인코더와 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더하며, 상기 제1 비정규화 합 및 상기 제2 비정규화 합을 생성하도룩 구성된 단일 곱셈-누산기 회로의 고속 근경로 회로.
  2. 제1 항에 있어서,
    상기 선택 쉬프트량에 응답하여 상기 선택 합을 정규화 시키는 노멀라이저를 더 포함하는 단일 곱셈-누산기 회로의 고속 근경로 회로.
  3. 제2 항에 있어서,
    상기 노멀라이저의 출력을 하나의 비트로 조절하는 1-비트 조절기를 더 포함하는 단일 곱셈-누산기 회로의 고속 근경로 회로.
  4. 제3 항에 있어서,
    상기 1-비트 조절기의 출력을 증분시키는 증분기를 더 포함하는 단일 곱셈-누산기 회로의 고속 근경로 회로.
  5. 제 1 항에 있어서,
    상기 하나 또는 그 이상의 압축기들은 상기 가수 유효수를 수신하는 비부정 입력, 상기 곱셈 캐리를 수신하는 제1 부정 입력, 상기 곱셈 합을 수신하는 제2 부정 입력을 갖는 제1 압축기를 포함하고, 상기 제1 압축기는 제1 결과 합 벡터 및 제1 결과 캐리 벡터를 생성하고,
    상기 하나 또는 그 이상의 압축기들은 상기 가수 유효수를 수신하는 부정 입력, 상기 곱셈 캐리를 수신하는 제1 비부정 입력, 및 상기 곱셈 합을 수신하는 제2 비부정 입력을 갖는 제2 압축기를 포함하고, 상기 제2 압축기는 제2 결과 합 벡터 및 제2 결과 캐리 벡터를 생성하는 단일 곱셈-누산기 회로의 고속 근경로 회로.
  6. 가수 유효수, 곱셈 캐리, 및 곱셈 합을 하나 또는 그 이상의 압축기들에 의해 수신하는 단계;
    결과 합 벡터 및 결과 캐리 벡터를 상기 하나 또는 그 이상의 압축기들에 의해 생성하는 단계;
    상기 결과 합 벡터 및 상기 결과 캐리 벡터를 하나 또는 그 이상의 선행 제로 예측기들에 의해 수신하고 처리하는 단계;
    상기 하나 또는 그 이상의 선행 제로 예측기들의 출력을 제1 우선순위 인코더에 의해 수신하는 단계;
    제1 쉬프트량을 상기 제1 우선순위 인코더에 의해 결정하는 단계;
    상기 결과 합 벡터 및 상기 결과 캐리 벡터를 하나 또는 그 이상의 가산기들에 의해 수신하는 단계;
    상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 상기 하나 또는 그 이상의 가산기들에 의해 더하는 단계;
    상기 제1 쉬프트량을 결정하는 상기 제1 우선순위 인코더와 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 상기 하나 또는 그 이상의 가산기에 의해 더하는 단계;
    상기 제1 쉬프트량을 상기 제1 우선순위 인코더에 의해 생성하는 단계;
    제2 쉬프트량을 제2 우선순위 인코더에 의해 생성하는 단계;
    선택 신호를 비교기에 의해 생성하는 단계;
    상기 선택 신호에 응답하여 상기 제1 쉬프트량 및 상기 제2 쉬프트량 중에서 선택 쉬프트량을 제1 선택기에 의해 선택하는 단계;
    제1 비정규화 합 및 제2 비정규화 합을 상기 하나 또는 그 이상의 가산기들에 의해 생성하는 단계; 및
    상기 제1 비정규화 합 및 제2 비정규화 합 중에서 선택 합을 제2 선택기에 의해 선택하는 단계를 포함하는 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법.
  7. 제6 항에 있어서,
    상기 선택 쉬프트량에 응답하여 상기 선택 합을 노멀라이저에 의해 정규화 시키는 단계;
    상기 노멀라이저의 출력을 하나의 비트로 1-비트 조절기에 의해 조절하는 단계;
    1-비트 조절기의 출력을 증분기에 의해 증분하는 단계;
    라운드 신호에 응답하여 상기 1-비트 조절기의 출력 및 상기 증분기의 출력 중에서 제3 선택기에 의해 선택하는 단계; 및
    근경로 결과를 상기 제3 선택기에 의해 생성하는 단계를 더 포함하는 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법.
  8. 제6 항에 있어서,
    상기 하나 또는 그 이상의 압축기들은 비부정 입력, 제1 부정 입력, 제2 부정 입력을 갖는 제1 압축기를 포함하고, 상기 하나 또는 그 이상의 압축기들은 부정 입력, 제1 비부정 입력, 및 제2 비부정 입력을 갖는 제2 압축기를 더 포함하고,
    상기 가수 유효수를 상기 제1 압축기의 상기 비부정 입력에 의해 수신하는 단계;
    상기 곱셈 캐리를 상기 제1 압축기의 상기 제1 부정 입력에 의해 수신하는 단계;
    상기 곱셉 합을 상기 제1 압축기의 상기 제2 부정 입력에 의해 수신하는 단계;
    상기 가수 유효수를 상기 제2 압축기의 상기 부정 입력에 의해 수신하는 단계
    상기 곱셈 캐리를 상기 제2 압축기의 상기 제1 비부정 입력에 의해 수신하는 단계;
    상기 곱셈 합을 상기 제2 압축기의 상기 제2 비부정 입력에 의해 수신하는 단계;
    제1 결과 합 벡터 및 제1 결과 캐리 벡터를 상기 제1 압축기에 의해 생성하는 단계; 및
    제2 결과 합 벡터 및 제2 결과 캐리 벡터를 상기 제2 압축기에 의해 생성하는 단계를 더 포함하는 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법.
  9. 제 8 항에 있어서,
    상기 하나 또는 그 이상의 가산기들은 제1 가산기 및 제2 가신기를 포함하고, 상기 하나 또는 그 이상의 선행 제로 예측기들은 제1 선행 제로 예측기 및 제2 선행 제로 예측기를 포함하고,
    상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 상기 제1 가산기에 의해 수신하고 더하는 단계;
    상기 제2 결과 합 벡터 및 상기 제2 결과 캐리 벡터를 상기 제2 가산기에 의해 수신하고 더하는 단계;
    상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 더하는 상기 제1 가산기와 병렬로, 그리고 상기 제2 결과 합 벡터 및 상기 제2 결과 캐리 벡터를 더하는 상기 제2 가산기와 병렬로, 상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 상기 제1 선행 제로 예측기에 의해 수신하고 처리하는 단계;
    상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 더하는 상기 제1 가산기와 병렬로, 그리고 상기 제2 결과 합 벡터 및 상기 제2 결과 캐리 벡터를 더하는 상기 제2 가산기와 병렬로, 상기 제2 결과 합 벡터 및 상기 2 결과 캐리 벡터를 상기 제2 선행 제로 예측기에 의해 수신하고 처리하는 단계;
    상기 제1 선행 제로 예측기의 출력을 상기 제1 우선순위 인코더에 의해 수신하는 단계;
    상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 더하는 상기 제1 가산기와 병렬로, 그리고 상기 제2 결과 합 벡터 및 상기 제2 결과 캐리 벡터를 더하는 상기 제2 가산기와 병렬로, 상기 제1 쉬프트량을 상기 제1 우선순위 인코더에 의해 결정하는 단계;
    상기 제2 선행 제로 예측기의 출력을 상기 제2우선순위 인코더에 의해 수신하는 단계; 및
    상기 제1 결과 합 벡터 및 상기 제1 결과 캐리 벡터를 더하는 상기 제1 가산기와 병렬로, 그리고 상기 제2 결과 합 벡터 및 상기 제2 결과 캐리 벡터를 더하는 상기 제2 가산기와 병렬로, 상기 제2 쉬프트량을 상기 제2 우선순위 인코더에 의해 결정하는 단계를 더 포함하는 단일 곱셈-누산기 회로내의 고속 근경로를 제공하는 방법.
  10. 제1 유효수 및 제2 유효수를 수신하고 곱셈 캐리 및 곱셈 합을 생성하는 곱셈 어레이;
    제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 가산 앵커 경로;
    상기 제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 곱셈 앵커 경로; 및
    상기 제3 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하는 고속 근경로 회로를 포함하고,
    상기 고속 근경로 회로는
    상기 가수 유효수, 상기 곱셈 캐리, 및 상기 곱셈 합을 수신하고, 결과 합 벡터 및 결과 캐리 벡터를 생성하는 하나 또는 그 이상의 압축기들;
    상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 처리하는 하나 또는 그 이상의 선행 제로 예측기들;
    상기 하나 또는 그 이상의 압축기들에 연결되고, 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 처리하는 상기 하나 또는 그 이상의 선행 제로 예측기들과 병렬로 상기 결과 합 벡터 및 상기 결과 캐리 벡터를 수신하고 더하고, 제1 비정규화 합 및 제2 비정규화 합을 생성하도록 구성된 하나 또는 그 이상의 가산기들;
    제1 쉬프트량을 생성하는 제1 우선순위 인코더;
    제2 쉬프트량을 생성하는 제2 우선순위 인코더;
    선택 신호를 생성하는 비교기;
    상기 선택 신호에 응답하여 상기 제1 쉬프트량 및 상기 제2 쉬프트량 중에서 선택 쉬프트량을 선택하는 제1 선택기; 및
    상기 선택 신호에 응답하여 상기 제1 비정규화 합 및 상기 제2 비정규화합 중에서 선택 합을 선택하는 제2 선택기를 포함하는 단일 곱셈-누산기 회로.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020160079523A 2015-08-25 2016-06-24 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션 KR102591638B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562209871P 2015-08-25 2015-08-25
US62/209,871 2015-08-25
US15/012,825 2016-02-01
US15/012,825 US10108397B2 (en) 2015-08-25 2016-02-01 Fast close path solution for a three-path fused multiply-add design

Publications (2)

Publication Number Publication Date
KR20170024524A KR20170024524A (ko) 2017-03-07
KR102591638B1 true KR102591638B1 (ko) 2023-10-19

Family

ID=58095506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160079523A KR102591638B1 (ko) 2015-08-25 2016-06-24 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션

Country Status (2)

Country Link
US (1) US10108397B2 (ko)
KR (1) KR102591638B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275218B1 (en) * 2017-10-25 2019-04-30 Arm Limited Apparatus and method for subtracting significand values of floating-point operands
US10628124B2 (en) * 2018-03-22 2020-04-21 Advanced Micro Devices, Inc. Stochastic rounding logic
US10776207B2 (en) 2018-09-06 2020-09-15 International Business Machines Corporation Load exploitation and improved pipelineability of hardware instructions
US20220114413A1 (en) * 2020-10-12 2022-04-14 Black Sesame International Holding Limited Integer-based fused convolutional layer in a convolutional neural network
CN112927125B (zh) * 2021-01-31 2023-06-23 成都商汤科技有限公司 一种数据处理方法、装置、计算机设备及存储介质
US11640360B1 (en) 2022-01-25 2023-05-02 Nxp B.V. Processing pipeline where fast data passes slow data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256150A1 (en) 2007-04-10 2008-10-16 Eric Quinnell Three-path fused multiply-adder circuit
US20110040815A1 (en) 2009-08-12 2011-02-17 Arm Limited Apparatus and method for performing fused multiply add floating point operation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904446B2 (en) 2001-08-24 2005-06-07 Freescale Semiconductor, Inc. Floating point multiplier/accumulator with reduced latency and method thereof
US8892619B2 (en) 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design
US9152382B2 (en) 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256150A1 (en) 2007-04-10 2008-10-16 Eric Quinnell Three-path fused multiply-adder circuit
US20110040815A1 (en) 2009-08-12 2011-02-17 Arm Limited Apparatus and method for performing fused multiply add floating point operation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
비특허문헌1(https://ieeexplore.ieee.org/document/4487224)

Also Published As

Publication number Publication date
US20170060532A1 (en) 2017-03-02
KR20170024524A (ko) 2017-03-07
US10108397B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR102591638B1 (ko) 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션
US8078660B2 (en) Bridge fused multiply-adder circuit
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
Detrey et al. Parameterized floating-point logarithm and exponential functions for FPGAs
US9959093B2 (en) Binary fused multiply-add floating-point calculations
JP2021525403A (ja) 改良された低精度の2進浮動小数点形式設定
KR20180050203A (ko) 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합
Sohn et al. A fused floating-point three-term adder
CN105045560A (zh) 一种定点乘加运算方法和装置
Detrey et al. A parameterizable floating-point logarithm operator for FPGAs
Jaiswal et al. High performance FPGA implementation of double precision floating point adder/subtractor
EP2254041A1 (en) Cordic operational circuit and method
Jeevan et al. A new high-speed multiplier based on carry-look-ahead adder and compressor
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
Ghosh et al. FPGA based implementation of a double precision IEEE floating-point adder
Issa et al. Design of High Precision Radix-8 MAF Unit with Reduced Latency
Gowreesrinivas et al. FPGA implementation of single-precision floating point multiplication with Karatsuba algorithm using vedic mathematics
Dhanabal et al. Implementation of Low Power and Area Efficient Floating-Point Fused Multiply-Add Unit
Vázquez et al. Radix-10 restoring square root for 6-input LUTs programmable devices
Gupta et al. VLSI architecture of exponential block for non-linear SVM classification
Kumar et al. Performance Evaluation of Multi-operands Floating-Point Adder
US11314482B2 (en) Low latency floating-point division operations
Ushenina et al. Implementing sticky bit generators based on FPGA carry-chains for floating-point adders
Gupta et al. A high speed floating point dot product unit
US20210072958A1 (en) Analog arithmetic unit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant