KR20160051616A - 순환 반복 합의 결과의 계산장치, 방법 및 프로그램 - Google Patents

순환 반복 합의 결과의 계산장치, 방법 및 프로그램 Download PDF

Info

Publication number
KR20160051616A
KR20160051616A KR1020150147724A KR20150147724A KR20160051616A KR 20160051616 A KR20160051616 A KR 20160051616A KR 1020150147724 A KR1020150147724 A KR 1020150147724A KR 20150147724 A KR20150147724 A KR 20150147724A KR 20160051616 A KR20160051616 A KR 20160051616A
Authority
KR
South Korea
Prior art keywords
value
result
input value
sum
input
Prior art date
Application number
KR1020150147724A
Other languages
English (en)
Other versions
KR102486711B1 (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 KR20160051616A publication Critical patent/KR20160051616A/ko
Application granted granted Critical
Publication of KR102486711B1 publication Critical patent/KR102486711B1/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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • 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/535Dividing only
    • G06F7/537Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
    • 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
    • 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
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • 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
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • 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/535Dividing only
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

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

Abstract

결과 값을 순환 반복 합의 필요한 정밀도로 계산하는 장치, 방법 및 프로그램을 제공하고, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함한다. 상기 입력 값과, 상기 입력 값과 일부 중첩하는 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산에서 가산을 행한다. 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 입력을 증분하여서 적어도 하나의 결과 부분을 생성하고, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성한다. 이에 따라서, 상기 순환 반복 합은, 상기 입력 값을 사용하여 단일 반복의 가산만을 필요로 하는 평탄화된 계산으로 평탄화되어서, 상기 순환 반복 합의 상기 결과 값의 계산을 용이하게 한다.

Description

순환 반복 합의 결과의 계산장치, 방법 및 프로그램{APPARATUS, METHOD AND PROGRAM FOR CALCULATING THE RESULT OF A REPEATING ITERATIVE SUM}
본 개시는, 데이터 처리에 관한 것이다. 보다 구체적으로, 본 개시는, 데이터 처리시 순환 반복 합의 결과를 계산하는 것에 관한 것이다.
데이터 처리시에, 작은 2의 제곱이 아닌(non-power-of-two) 상수로 나눗셈을 행하는데 필요할 수도 있다. 이러한 나눗셈 연산은, 일반적으로 그래픽 처리에서 필요하다. 예를 들면, 이것이, 바로 정규화된 수로 가공할 때의 경우이어도 된다. 때때로 unorm<n>이라고도 하는 부호없는 정규화된 수의 값의 범위는 [0,1]이고, 비트 패턴x의 수치는
Figure pat00001
이다. 예를 들면, unorm6의 경우, 상기 형식은
Figure pat00002
이다. 작은 2의 제곱이 아닌(non-power-of-two) 상수에 의한 나눗셈은, 2의 정규화된 값을 곱할 때나 부동소수점 값이나 고정소수점 값으로 변환할 때 필요할 수도 있다. 이러한 나눗셈을 행하는 일 방식은,
Figure pat00003
만큼 곱한 것이고, 또 이 곱셈은 예를 들면, 상기 곱셈을 지원하도록 제공될 필요가 있는 상기 장치의 영역면에서 다소 비싸다.
형식
Figure pat00004
의 모든 수는, 형식
Figure pat00005
의 이진법 전개를 갖고, 여기서 바(bar)는 무한 반복 비트 패턴을 나타내고, 이 예의 전개는 n=6에 대해 주어진다. 그 반복 패턴의 사이즈는, 항상 n비트다. 그리고, 상기 곱셈을 일련의 가산 및 시프트로 변경하는 것이 가능하여, 합
Figure pat00006
이 된다. 그 합은, 무한이지만, 타겟 수 포맷에 대해 반복이 필요한 만큼 평가하기 위해서만 명백히 잘라버려질 수 있다.
그럼에도 불구하고, 그 합의 결과를 평가하는 것에 관련되어 복잡해지고 비용이 들므로, 감소시키는 것이 바람직할 것이다.
제1 측면에서는, 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 장치를 제공하고, 여기서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 장치는, 상기 입력 값과, 상기 입력 값과 일부 중첩하는 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행할 수 있는 가산기; 상기 가산기에서 행한 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 생성 가능한 적어도 하나의 증분기; 및 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성 가능한 결과 발생기를 구비한다.
제2 측면에서는, 데이터 처리장치에서 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 방법을 제공하고, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 방법은, 상기 데이터 처리장치에 의해 구현된, 상기 입력 값과, 상기 입력 값과 일부 중첩하는 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행하는 단계; 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 증분하는 것에 의해 생성하는 단계; 및 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성하는 단계를 포함한다.
제3 측면에서는, 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 장치를 제공하고, 여기서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 장치는, 상기 입력 값과, 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행하는 가산기 수단; 상기 가산기 수단에서 행한 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 생성하는 수단; 및 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성하는 수단을 구비한다.
본 발명은 아래의 첨부도면에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에서의 장치를 개략적으로 도시하고,
도 2는 입력 값의 정수부와 소수부간에 중첩이 정확한 순환 반복 합과, 일 실시예에 의해 상기 순환 반복 합의 결과를 필요한 정밀도로 판정하도록 구현된 스테이지들을 도시하고,
도 3은 도 2에 나타낸 스테이지들을 구현하는 일 실시예에서의 장치의 구성요소와 상호연결을 개략적으로 도시하고,
도 4는 입력 값의 정수부와 소수부간의 비중첩 부분을 갖는 순환 반복 합과, 일 실시예에 의해 상기 순환 반복 합의 결과를 필요한 정밀도로 판정하도록 구현된 스테이지들을 도시하고,
도 5는 도 4에 도시된 스테이지들을 구현하는 일 실시예에서의 장치의 구성요소와 상호연결을 개략적으로 도시하고,
도 6은 도 4에 도시된 스테이지들을 구현하는 다른 실시예에서의 장치의 구성요소와 상호연결을 개략적으로 도시하고,
도 7은 도 4에 도시된 스테이지들을 구현하는 일 실시예에서의 장치에 있어서 부동소수점 변환기의 구성요소와 상호연결을 개략적으로 도시하고,
도 8은 도 7에 도시된 부동소수점 변환기의 구성요소와 상호연결의 일부의 다른 구성을 개략적으로 도시하고,
도 9는 입력 값의 정수부와 소수부간에 이중 중첩을 갖는 순환 반복 합과, 일 실시예에 의해 상기 순환 반복 합의 결과를 필요한 정밀도로 판정하도록 구현된 스테이지들을 도시하고,
도 10은 상기 이중 중첩을 단일 중첩으로 감소시키는 도 9에 도시된 초기의 스테이지들을 구현하는 일 실시예에서의 장치의 구성요소와 상호연결을 개략적으로 도시하고,
도 11은 상기 순환 반복 합의 결과를 필요한 정밀도로 판정하는 도 9에 도시된 나중의 스테이지들을 구현하는 일 실시예에서의 장치의 구성요소와 상호연결을 개략적으로 도시하고,
도 12는 도 9에 도시된 스테이지들을 구현하는 일 실시예에서의 장치에 있어서 부동소수점 변환기의 구성요소와 상호연결을 개략적으로 도시하고,
도 13a는 입력 값의 정수부와 소수부간에 삼중 중첩을 갖는 순환 반복 합을 도시하고,
도 13b는 순환 반복 합에 있어서 다수의 레벨의 중첩을 단일 레벨의 중첩으로 감소시키기 위해 하나보다 많은 사전 평탄화(pre-flattening) 과정의 이용을 도시하고,
도 14는 일 실시예의 방법에 있어서 취해진 일련의 단계를 도시하고,
도 15는 상기 일 실시예의 방법을 프로그램 명령어에 의해 실행하도록 제어된 범용 계산장치를 개략적으로 도시한 것이다.
본 기술은, 상기 순환 반복 합을, 상기 입력 값을 사용하여 단일 반복의 가산만을 필요로 하는 평탄화된 계산으로 "평탄화"해서 상기 순환 반복 합의 결과 값의 계산을 용이하게 한다. 따라서, 본 기술을 구현하는 장치에서는, 다수의 가산을 포함한 상기 순환 반복 합에도 불구하고, 이 장치의 콤팩트 구현을 용이하게 하는, 풀 가산기 1개만을 제공할 필요가 있다. 이때, 비록 상기 형식
Figure pat00007
의 이진법 전개의 예가 상술되었지만, 본 기술은 이러한 특별한 패턴에 적용 가능할 뿐만 아니라, 역수가 (드문드문) 순환 이진법 전개를 갖는 경우의 임의의 나눗셈에 마찬가지로 적용되어도 된다. 상기 순환 이진법 전개의 희박은, 대응한 순환 반복 합의 복잡성과 그에 따라 본 기술에 포함된 상기 스테이지들의 복잡성을 감소시킨다.
일부의 실시예에서, 제1 반복의 상기 가산은, 상기 입력 값의 상기 시프트된 버전의 상기 입력 값에의 가산을 포함하고, 각각 또 다른 반복의 상기 가산은 이전의 반복 가산 결과의 또 다른 시프트된 버전의 상기 입력 값에의 가산을 포함하고, 상기 또 다른 시프트된 버전의 상기 입력 값이 상기 이전의 반복 가산 결과와 일부 중첩한다. 달리 말하면, 다수의 반복의 상기 순환 반복 합 각각은, 자체와 상기 입력 값의 가산을 포함하지만, 상기 입력 값의 다음 인스턴스는 상기 입력 값의 이전의 인스턴스에 대해 시프트된다. 상기 입력 값의 이전의 인스턴스에 대해 상기 입력 값의 다음 인스턴스의 시프트는, 상기 입력 값의 다음 인스턴스와 상기 입력 값의 이전의 인스턴스간에 일부 중첩시킨다.
일부의 실시예에서, 상기 가산기는 상기 합 연산을 행하여 합 값을 생성 가능하고; 상기 적어도 하나의 증분기는, 상기 합 연산의 캐리 결과를 사용하여 상기 시프트된 버전의 상기 입력 값과 일부 중첩하는 상기 입력 값의 최상위 부분을 증분하는 것을 포함하는 제1 결과 부분을 생성 가능한 제1 증분기; 및 상기 합 연산의 상기 캐리 결과를 사용하여 상기 합 값을 증분하는 것을 포함하는 제2 결과 부분을 생성 가능한 제2 증분기를 구비하고; 상기 결과 발생기는 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해서 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 부분으로서 상기 결과 값을 구성 가능하다.
일부의 실시예에서, 상기 입력 값의 중간 부분은, 상기 시프트된 버전의 상기 입력 값과 중첩하지 않고, 상기 제1 증분기는, 증분 값만큼 증분된 상기 일부 중첩을 갖는 상기 입력 값의 상기 최상위 부분으로서 상기 제1 결과 부분을 생성 가능하고, 상기 증분 값은 전파 값과 논리곱된 합 연산의 상기 캐리 결과에 의해 제공되고, 상기 전파 값은 상기 중간 부분이 상기 가산에 있어서 캐리 전파할지 아닐지를 가리키고, 상기 제2 증분기는 상기 증분 값만큼 증분된 상기 합 값으로서 상기 제2 결과 부분을 생성 가능하고, 상기 결과 발생기는 상기 제1 결과 부분과 상기 제2 결과 부분 양쪽이 제3 결과 부분에 의해 첨부되는 상기 결과 값을 구성 가능하다.
일부의 실시예에서, 상기 장치는, 상기 합 연산의 상기 캐리 결과만큼 상기 중간 부분을 증분하는 것을 포함하는 제3 결과 부분을 생성 가능한 제3 증분기를 더 구비한다.
일부의 실시예에서, 상기 입력 값의 중간 부분은, 상기 시프트된 버전의 상기 입력 값과 중첩하지 않고, 상기 가산기는 상기 합 연산을 행하여 합 값을 생성 가능하고; 상기 적어도 하나의 증분기는, 제1 결과 부분 입력 값을 제공하기 위해 상기 입력 값의 상기 중간 부분과의 일부 중첩을 갖는 상기 입력 값의 최상위 부분을 첨부하는 것과, 상기 합 연산의 캐리 결과를 갖는 상기 제1 결과 부분 입력 값을 증분하는 것을 포함하는, 제1 결과 부분을 생성 가능한 제1 증분기; 및 상기 합 연산의 상기 캐리 결과를 사용하여 상기 합 값을 증분하는 것을 포함하는 제2 결과 부분을 생성 가능한 제2 증분기를 구비하고, 상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 부분으로서 상기 결과 값을 구성 가능하고, 상기 적어도 하나의 제2의 하나의 결과 부분은 상기 입력 값의 상기 중간 부분과 같은 크기의 상기 제1 결과 값의 최하위 부분에 의해 첨부된다.
일부의 실시예에서, 상기 장치는, 상기 결과 값을 부동소수점 포맷 값으로 변환 가능한 부동소수점 변환기를 더 구비한다.
일부의 실시예에서, 상기 입력 값은 정수부와 소수부를 포함한다.
일부의 실시예에서, 상기 부동소수점 변환기는, 상기 입력 값의 상기 정수부를 수신하여 최상위 비트 위치를 제1 비트 위치 출력 값으로서 출력 가능한 제1 비트 위치 발생기; 1씩 증분된 상기 입력 값의 상기 정수부의 최상위 비트 위치를 제2 비트 위치 출력 값으로서 출력 가능한 제2 비트 위치 발생기; 및 상기 입력 값의 상기 소수부에서의 최상위 비트의 위치를 제3 비트 위치 출력 값으로서 발생 가능한 제3 비트 위치 발생기를 구비하고, 상기 부동소수점 변환기는, 상기 정수부가 논제로(non-zero)이고 상기 캐리 결과가 제로일 경우 상기 제1 비트 위치 출력 값을 사용하고, 상기 정수부가 논제로이고 상기 캐리 결과가 논제로일 경우 상기 제2 비트 위치 출력 값을 사용하고, 상기 정수부가 제로일 경우 상기 제3 비트 위치 출력 값을 사용하여, 상기 부동소수점 포맷 값의 지수부분을 발생 가능하다.
일부의 실시예에서, 상기 제2 비트 위치 발생기는, 상기 입력 값의 상기 정수부가 1 직후에 0이 오는 것을 포함하는지를 판정하여, 포함할 경우 상기 제1 비트 위치 출력 값을 상기 제2 비트 위치 출력 값으로서 제공하고, 포함하지 않을 경우 상기 제2 비트 위치 출력 값을 발생하기 위해 상기 제1 비트 위치 출력 값을 1씩 증분 가능하다.
일부의 실시예에서, 상기 제1 비트 위치 발생기, 상기 제2 비트 위치 발생기 및 상기 제3 비트 위치 발생기는, 병렬 연산 가능하다.
일부의 실시예에서, 상기 일부 중첩은 상기 순환 반복 합에 있어서 상기 입력 값의 이중 셀프 중첩을 포함하고, 상기 이중 셀프 중첩은 상기 순환 반복 합의 제1 반복에 있어서, 상기 입력 값의 최하위 부분, 상기 입력 값의 중간 유의값(intermediate significance) 부분 및 상기 입력 값의 최상위 부분의 가산을 포함하고, 상기 장치는 상기 입력 값용 대체 입력 값을 판정하는 것을 포함하는 상기 순환 반복 합에 있어서 상기 입력 값용 상기 이중 셀프 중첩을 제거하는 사전 평탄화 연산을 행하는 것이 가능하다.
일부의 실시예에서, 상기 입력 값은 정수부와 소수부를 포함하고, 상기 입력 값의 상기 중간 유의값 부분은 상기 소수부의 최상위 부분이고, 상기 입력 값의 상기 최하위 부분은 상기 소수부의 최하위 부분이고, 상기 소수부의 중간 유의값 부분은 상기 이중 셀프 중첩에 포함되지 않고, 상기 장치는 상기 소수부의 상기 최상위 부분과 상기 소수부의 상기 최하위 부분에 관해 사전 평탄화 합 연산을 행하여 사전 평탄화된 합 값을 생성 가능한 사전 평탄화 가산기; 상기 소수부의 상기 중간 유의값 부분이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 사전 평탄화 전파 값과 논리곱된 상기 사전 평탄화 합 연산의 캐리 결과에 의해 제공된 사전 평탄화 증분 값만큼 상기 소수부의 상기 최상위 부분을 증분하여서 제1 사전 평탄화 부분을 생성 가능한 제1 사전 평탄화 증분기; 상기 사전 평탄화 합 연산의 상기 캐리 결과만큼 증분된 상기 소수부의 상기 중간 유의값 부분으로서 제2 사전 평탄화 부분을 생성 가능한 제2 사전 평탄화 증분기; 상기 사전 평탄화 증분 값만큼 증분된 상기 사전 평탄화된 합 값으로서 제3 사전 평탄화 결과 부분을 생성 가능한 제3 사전 평탄화 증분기; 및 상기 가산에 있어서 상기 소수부의 상기 최상위 부분이 캐리 전파하는지의 표시와 논리곱된 상기 사전 평탄화 증분 값으로서 사전 평탄화 생성 값을 생성 가능한 사전 평탄화 생성값 발생기를 구비하고, 상기 장치는 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제1 사전 평탄화 부분으로 대체하여서 상기 순환 반복 합의 제1 반복과, 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분으로 대체하고 상기 사전 평탄화 생성 값에 의해 첨가하여서 상기 순환 반복 합의 제2 반복과, 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분으로 대체하여서 상기 순환 반복 합의 제3 이후의 반복에 있어서, 상기 대체 입력 값을 구성 가능하다.
일부의 실시예에서, 상기 장치는, 상기 정수부와, 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제1 사전 평탄화 부분에 관해, 제1 합 연산을 행하여 제1 합 값을 생성 가능한 제1 가산기; 상기 정수부와, 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분에 관해, 제2 합 연산을 행하여 제2 합 값을 생성 가능한 제2 가산기; 상기 제2 합 연산의 캐리 결과만큼 상기 제1 합 값을 증분하여서 제1 결과 부분을 생성 가능한 제1 증분기; 상기 제2 합 연산의 상기 캐리 결과만큼 상기 제2 합 값을 증분하여서 제2 결과 부분을 생성 가능한 제2 증분기; 및 또 다른 사전 평탄화 증분 값만큼 상기 정수부를 증분하여서 제3 결과 부분을 생성 가능한 제3 증분기를 구비한다.
일부의 실시예에서, 상기 또 다른 사전 평탄화 증분 값은 증분 기여값과 논리합된 상기 제1 합 연산의 상기 캐리 결과와 논리합된 상기 사전 평탄화 생성 값에 의해 제공되고, 상기 증분 기여값은 상기 제1 합 값이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 전파 값과 논리곱된 상기 제2 합 연산의 상기 캐리 결과에 의해 제공되고, 상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 값 부분에 후속한 상기 제3 결과 부분으로서 상기 결과 값을 구성 가능하다.
일부의 실시예에서, 상기 또 다른 사전 평탄화 증분 값은 증분 기여값에 추가된 상기 제1 합 연산의 상기 캐리 결과에 추가된 상기 사전 평탄화 생성 값에 의해 제공되고, 상기 증분 기여값은 상기 제1 합 값이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 전파 값과 논리곱된 상기 제2 합 연산의 상기 캐리 결과에 의해 제공되고, 상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 값 부분에 후속하는 상기 제3 결과 부분으로서 상기 결과 값을 구성 가능하다.
일부의 실시예에서, 상기 소수부의 상기 최상위 부분이 논제로일 때, 상기 제3 비트 위치 발생기는 대체 소수부를 사용하여 상기 제3 비트 위치 출력 값으로서 상기 입력 값의 상기 소수부에서의 상기 최상위 비트의 상기 위치를 발생 가능하고, 상기 대체 소수부는, 상기 제2 사전 평탄화 부분이 첨부된 상기 제3 사전 평탄화 부분의 적어도 하나의 인스턴스가 첨부된 상기 제2 사전 평탄화 부분이 첨부된 상기 제1 사전 평탄화 부분을 포함한다.
일부의 실시예에서, 상기 소수부의 상기 최상위 부분이 제로일 때, 상기 제3 비트 위치 발생기는 대체 소수부를 사용하여 상기 제3 비트 위치 출력 값으로서 상기 입력 값의 상기 소수부에서의 상기 최상위 비트의 상기 위치를 발생 가능하고, 상기 대체 소수부는, 상기 소수부의 상기 최하위 부분이 첨부된 상기 소수부의 상기 중간 유의값 부분을 포함한다.
일부의 실시예에서, 상기 일부 중첩은, 상기 순환 반복 합에 있어서 적어도 상기 입력 값의 삼중 셀프 중첩을 포함하고, 상기 삼중 셀프 중첩은 상기 순환 반복 합에 있어서 상기 입력 값의 상기 이중 셀프 중첩과 적어도 하나의 또 다른 셀프 중첩을 포함하고, 상기 삼중 셀프 중첩은 상기 순환 반복 합의 상기 제1 반복에서의 상기 입력 값에 3개의 증분적으로 시프트된 버전의 상기 입력 값을 가산하는 것에 해당하고, 상기 장치는, 상기 대체 입력 값용 이전의 대체 입력 값을 판정하는 것을 포함하는 상기 순환 반복 합에 있어서의 상기 입력 값의 상기 적어도 하나의 또 다른 셀프 중첩을 제거하는 적어도 하나의 또 다른 사전 평탄화 연산을 행하는 것이 가능하다.
일부의 실시예에서, 상기 장치는, 상기 사전 평탄화 연산과 병렬로 또 다른 사전 평탄화 연산을 행할 수 있다.
일부의 실시예에서, 상기 입력 값은 최소 절대값이 0이고 최대 절대값이 1인 정규화된 수를 나타낸다.
일부의 실시예에서, 상기 입력 값은 정수 요소(integer component)와 소수(fraction) 요소를 갖고, 상기 정규화된 수의 상기 최대 절대값을 나타내기 위해서 상기 정수 요소는 연속적인 시퀀스의 제1 타입의 비트 값이고 상기 소수 요소는 연속적인 시퀀스의 제2 타입의 비트 값이며, 상기 제2 타입은 상기 제1 타입과 상보적이다.
일부의 실시예에서, 상기 순환 반복 합은, 2의 제곱이 아닌 상수의 역수에 의해 곱셈을 실시한다.
일부의 실시예에서, 상기 2의 제곱이 아닌 상수는, 2의 정수 제곱 마이너스 1로서 표현 가능하다.
일부의 실시예에서, 상기 장치는, 상기 결과 값에 마지막 자리부의 절반을 가산하는 것을 포함하는 상기 결과 값에 관해 사사오입 연산을 행할 수 있다.
일부의 실시예들은, 컴퓨터에 상술한 제2 측면의 방법을 실행시키기 위한 컴퓨터 프로그램이 비일시적으로 기억된 컴퓨터 판독 가능한 기억 매체를 제공한다.
도 1은 일 실시예에서 데이터 처리장치(10)를 개략적으로 도시한 것이다. 이 데이터 처리장치(10)의 구성요소들로부터 안 것은, 도 1에 도시된 구성요소들이, 예를 들면 범용 데이터 처리 디바이스(예를 들면, 중앙처리장치나 그래픽 처리장치)이어도 되는 보다 큰 데이터 처리장치의 일부만을 나타내는 것이 일반적이다는 것이다. 데이터 처리장치(10)는, 순환 반복 합에의 입력 값에 의거하여 상기 순환 반복 합의 결과 값을 계산 가능하고(즉, 계산 가능하게 하는 구성을 갖고), 상기 입력 값은 (비록 이전의 반복에 대해 반복마다 우측으로 시프트되었지만) 상기 순환 반복 합의 반복마다 누계에 가산된다. 이하의 도면들에 대해 이러한 순환 반복 합의 특정 예들을 든다. 이때, 데이터 처리장치의 이하의 예시 구성들은, 부호 없는 정규화된 수의 면에서 기술되긴 하지만, 부호 있는 정규화된 수도 예를 들면, 먼저 입력을 부호 크기(sign-magnitude) 표현으로 변환하고 나서 그 크기를 부호 없는 경로를 통해 보내고, 끝으로 (미도시된) 부호 비트를 복원하여서 처리되어도 된다. 마찬가지로, 비정규화된 수들도, 처리되어도 되고-상기 입력 값이 정규화된 포맷으로 될 필요가 없다. 그렇지만 정규화된 입력 값을 사용하는 것이 식별된 일 특징(나중에 도시된 사용)은 상기 반복 합에 있어서 다수의 캐리들의 합계(ADD)가 하나의 캐리만이 정규화된 수에 대해 설정될 수 있다는 지식에 의거하여, OR연산으로 대체될 수 있다는 것이다.
데이터 처리장치(10)는, 적어도 하나의 가산기(11), 적어도 하나의 증분기(12) 및 결과 발생기(13)를 구비한다. 이들 구성요소들은, 제어부(14)의 일반적인 제어하에 작동한다. 상기 결과 발생기(13)는, 상기 결과 값을 부동 소수점 포맷 결과로 변환하도록 구성된 부동소수점 변환기(15)(주석: 점선 경계)를 더 구비하여도 된다. 부동소수점 변환기(15) 자체는, 상기 결과 발생기에서 발생한 상기 결과 값에 관해 사사오입(rounding) 연산을 행하는 사사오입부(16)(주석: 점선 경계)를 더 구비하여도 된다.
도 2는 도 1의 데이터 처리장치(10)가 수신할 수도 있는 입력 값의 포맷의 일례와, 본 예에서 (28-1)255인 상수값으로 입력된 본 예를 나누도록 행해지는데 필요한 순환 반복 합의 구조를 도시한 것이다. 상기 순환 반복 합의 구조는, 도 2의 박스(20)에 도시되어 있다. 이때, 본 예에서 입력 값(iiiiiiiiffffffff)은 unorm8.8, 즉 8개의 소수비트를 갖는 8비트 부호 없는 정규화된 수이다. 도 2의 20에 도시된 반복 합은, 비록 상기 입력 값이 8비트보다 많이 가질지라도 입력 값을 255로 나누는 것에 해당한다. 이때, 또한 이 부호 없는 정규화된 수(즉, 1.0)의 최대값은 여기서 사용된 표현법에 있어서 비트 패턴 "11111111.00000000"(즉, "11111111.11111111"이 아님)으로 표현된다. 상기 입력 값의 정수부는, 박스(20)에서 문자 I로 표현되고, 소수부는 문자 f로 표현된다. 또 아울러, 이때, 순환 반복 합에 있어서 상기 입력 값의 정수부와 소수부 사이의 중첩이, 상기 합의 다음 반복의 정수부가 상기 합의 이전의 반복의 소수부와 정확히 정렬한다는 점에서, 본 예에서 정확하다. 또한, 이 합에서 단일 레벨의 중첩만 있다, 즉 2보다 많은 비트들이 서로 가산되어야 하는 결코 어떠한 곳도 없다.
박스(22)는, 상기 입력 값을 사용한 단일 반복의 가산만이 필요한 평탄화된 계산으로서 상기 순환 반복 합의 계산을 실시하기 위해서 본 기술들이 박스(20)에 도시된 순환 반복 합에 적용하는 2개의 계산을 도시한 것이다. 구체적으로, 도 2의 예에 있어서, 상기 입력 값을 사용한 단일 반복의 가산이 박스(22)에 도시된 d=i+f의 계산이다. 또한, 이 합(c)의 캐리 출력 값이 결정된다. d와 c를 박스 20의 식에 대입하면, 박스 24의 식이 된다. 박스(20)에 도시된 식의 주석에 대한 중요한 특징은, 상기 합 i+f의 전파와 발생을 고려하면 이들은 캐리를 발생하거나 전파하거나 하는 어느 한쪽을 행할 수 있지만, 결코 양쪽을 행할 수는 없다는 것이다. generate(x+y)=x AND y와, propagate(x+y)=x XOR y를 상기시킨다. 이것은 여기서는 중요한데, 그 이유는 상기 합 i+f로부터 발생된 캐리가 무한 순환 반복 합에 존재하는 캐리일뿐이기 때문이다. 합(i+f)이 캐리를 발생하거나, 전체 식에서 캐리가 없다. 이것은, 상기 합의 하나의 반복으로부터의 상기 캐리가 다음 반복으로 전파할 수 있지만, 이를 통해 전파할 수 없다. 그러므로, 상기 합이 한번 행해질 필요가 있을 뿐이고, 그 결과는 상기 결과 값의 정확한 포맷에 필요한 만큼 여러 번 사용될 수 있다. 따라서, 박스 20으로부터 c와 d를 박스 22의 식에 대입하면 박스 24에 도시된 식이 된다. 박스 24의 식의 관점에서, 이것은 박스 26에 도시된 식으로 대체될 수 있고, 여기서 I는 i+f 합에 대한 캐리 값만큼 증분된 i의 값이고, D는 i+f 합으로부터 상기 캐리 값만큼 증분된 d의 값이다. 이들 대입을 실시하면 박스 28에 도시된 식이 된다(여기서, 그것은 무한대로 반복하는 상기 D항이다). 이렇게 하여, 박스 28에 도시된 식은, 박스 20에 도시된 순환 반복 합을 실시하는 평탄화된 계산이고, (박스 22와 26의 대입으로부터 알 수도 있듯이) 실시되는데 필요한 한 번의 반복의 가산(즉, d=i+f)만이 있다. 데이터 처리장치는, 상기 결과의 상기 필요한 정밀도로 박스 28의 식을 평가한다, 즉 상기 결과 값의 상기와 같은 필요한 정밀도가 얻어지는 점에서의 상기 식을 잘라버린다. 또한, 상기 결과 값의 사사오입은 마지막 자리부의 절반을 상기 결과 값에 가산하여서 (상기 결과 발생기(13)의 사사오입부(16)에 의해) 행해질 수도 있다. 이때, 무한 순환 합의 특징에 있어서 이 사사오입은 결코 같을 수 없다는 것인데, 그 이유는 필요한 경우 같은 경우에 부딪히기 위해 상기 사사오입 포인트 바로 아래의 비트들이 "10"이면, 상기 무한 순환 패턴이 반복 합의 더 아래쪽에 또 다른 "10"들이 있어야 해서, 같은 경우가 결코 일어날 수 없기 때문이라는 것이다.
도 3은 도 2에 대해 기술된 스테이지들을 실시하기 위한 데이터 처리장치의 구성을 개략적으로 도시한 것이다. 이때, 여기서는 약칭 표현을 사용하고, 여기서 도 3의 "i"는 도 2의 정수부 iiiiiiii에 해당하고, 도 3의 "f"는 도 2의 소수부 ffffffff에 해당한다. 마찬가지로, 도 3의 "I"와 "D"는 각각 도 2의 IIIIIIII와 DDDDDDDD에 해당한다. 상기 입력 값의 정수부(i)와 소수부(f)는, 상기 합 값(d)과 상기 캐리 값(c)을 생성하고, 상기 중첩의 사이즈와 같은 폭을 갖는(본 예에서는 8비트) 상기 (풀(full)) 가산기(30)에 의해 수신된다. 제1 증분기(32)는, 정수부(i)와 캐리 출력 결과(c)를 수신하고, 상기 합 값I-상기 결과 값의 정수부를 발생하기 위해서 그 정수부(i)를 그 캐리 출력 결과(c)만큼 증분한다. 제2 증분기(34)는, 그 합 값(d)와 캐리 출력 결과(c)를 수신하고, 합 값D-상기 결과 값의 적어도 하나의 소수부를 발생하기 위해서 상기 합 값(d)를 상기 캐리 출력 결과(c)만큼 증분한다. 제1 증분기(32)와 제2 증분기(34)의 폭은 상기 가산기(30)와 같다(즉, 본 예에서는 8비트). I와 D가 상기 결과 발생기(36)에 의한 상기 결과 값으로 배열된다.
도 4는 도 1의 데이터 처리장치(10)가 수신할 수도 있는 입력 값의 또 다른 포맷의 예와, 입력된 본 예를 본 예에서는 (210-1)1023인 상수값으로 나누기 위해서 실시되는데 필요한 상기 순환 반복 합의 구조를 도시한 것이다. 도 4의 박스(40)에는 상기 순환 반복 합의 구조가 도시되어 있다. 이때, 본 예에서는, 본 예의 입력 값(iiiiiiiiiiffffffff)이 unorm10.8, 즉 8소수부 비트를 갖는 10비트의 부호 없는 정규화된 수이고, 여기서 한 번 더 i는 입력값의 정수부를 나타내고, f는 소수부를 나타낸다. 본 예를 도 2의 예와 비교하면, 순환 반복 합에 있어서 입력 값의 정수부와 소수부 사이의 중첩이 본 예에서는, 상기 합의 이전의 반복의 소수부의 임의의 부와 중첩하지 않는 상기 합의 다음의 반복의 정수부의 일부가 존재한다는 점에서, 정확하지 않다는 것을 주목한다. 그럼에도 불구하고도, 이 합에서 단일 레벨의 중첩만이 있다, 즉, 2보다 많은 비트들이 서로 가산되어야 하는 어떠한 자리도 결코 없다.
상기 정수부의 중첩부와 비중첩부를 구별하기 위해서, 용어 (중첩부용) a 및 (비중첩부용) b가 박스(42)에 도시된 것처럼, 대체되어 있다. 다시 한 번, 입력 값을 사용한 단일 반복의 가산만이 필요한 평탄화된 계산, 즉 박스 44에 도시된 것들인 상기 순환 반복 합의 계산을 실시하기 위해서 박스 40 및 42에 도시된 순환 반복 합에 본 기술을 적용하는 계산이 2가지가 있다. 도 4의 상기 예에 있어서, 상기 입력 값을 사용한 상기 단일 반복의 가산은, 박스 44에 도시된 d=a+f의 계산이다. 또, 이 합(c)의 캐리 출력 값도 결정된다. d와 c를 박스 42의 식에 대입하면 박스 46의 식이 된다. 한 번 더, 상기 합 a+f의 전파와 발생을 고려하면, 이들은 캐리를 발생하거나 전파하거나 하는 어느 한쪽을 행할 수 있지만, 결코 양쪽을 행할 수는 없으므로, 여기서도 그 합은 한번 행해질 필요가 있을 뿐이고, 그 결과는 상기 결과 값의 정확한 포맷에 필요한 만큼 여러 번 사용될 수 있다. 따라서, 박스 44로부터 c와 d를 박스 42의 식에 대입하면 박스 46에 도시된 식이 된다.
박스 48은 본 예에서 행해진 3개의 증분 계산을 도시한 것이다. 증분 항은, (generate(a+f)&&propagate(b)), 즉 (c && propagate(b))로서 발생되고, 이것은 a(입력 값의 정수부의 중첩부)와 d(입력 값의 정수부의 비중첩부) 각각을 증분하여 각각 A와 D를 제공하는데 사용된다. 상기 입력 값(b)의 정수부의 비중첩부는, generate(a+f), 즉, c만큼 증분된다.
이렇게 하여, 박스 46의 식은, 박스 50에 도시된 식(여기서, 무한으로 반복하는 DB항)으로 되도록 박스 48에 도시된 식으로 대체될 수 있다. 따라서, 박스 50에 도시된 식은 박스 40에 도시된 순환 반복 합을 실시하는 평탄화된 계산이고, 여기서(도 2의 예의 이전과 같이) 행해지는데 필요한 가산(즉, d=a+f)의 반복은 한번 뿐이다. 도 2의 예에서와 같이, 데이터 처리장치는, 상기 결과에 대한 필요한 정밀도로 박스 50의 식을 평가한다, 즉 상기 결과 값의 상기 필요한 정밀도가 얻어지는 포인트에서의 상기 식을 잘라버린다. 또한, 상기 결과 값의 사사오입은, 상기 결과 발생기(13)에서 사사오입부(16)에 의해 행해져도 된다.
도 5는 도 4에 대해 기술된 스테이지들을 실시하기 위해 데이터 처리장치(10)의 구성을 개략적으로 도시한 것이다. 여기서는, 약칭 표현법의 동일한 스타일을 사용하며, 여기서 도 5의 "a"는 도 4의 중첩 정수부에 해당하고, 도 5의 "b"는 도 4의 비중첩 정수부에 해당하고, 도 5의 "f"는 도 4의 소수부에 해당한다. 마찬가지로, 도 5의 "A", "B" 및 "D" 각각은, 도 4의 AAAAAAAA, BB 및 DDDDDDDD에 해당한다. 상기 입력 값의 중첩하는 정수(a) 및 소수부(f)는, 상기 합 값(d)과 상기 캐리 출력 결과(c)를 생성하고, 상기 중첩의 사이즈와 같은 폭을 갖는(본 예에서는 8비트) 상기 (풀) 가산기(60)에 의해 수신된다. 상기 입력 값의 비중첩 정수부(b)는 b의 비트 값들이 세트 캐리 값을 전파하는지를 판정하는 전파 검출 회로소자(62)에 의해 수신된다. 이 전파 검출의 결과와 캐리 출력 결과(c)는, 그 입력들을 AND게이트(64)에 제공하고, 그 출력은 증분기(66, 68)에 보내진다. 제1 증분기(66)는, 상기 합 값A - 상기 결과 값의 정수부의 제1 부분을 발생하기 위해 상기 AND 게이트 출력만큼 상기 중첩하는 정수부(a)를 증분한다. 제2 증분기(68)는 상기 합 값D - 상기 결과 값의 적어도 하나의 소수부의 제1 부분을 발생하기 위해 상기 AND게이트 출력만큼 상기 합 값(d)를 증분한다. 상기 제1 증분기(66)와 제2 증분기(68)의 폭은, 상기 중첩의 사이즈(즉, 본 예에서는 8비트)에 대응한 가산기(60)와 같다. 제3 증분기(70)는, 본 예에서 설치된 것이고, 상기 합 값B - 상기 결과 값의 정수부와 소수부 양쪽의 제2 부분을 발생하기 위해서 비중첩하는 정수부(b)를 캐리 출력 결과(c)만큼 증분한다. A, B 및 D는 상기 결과 발생기(72)에 의한 결과 값으로 배열되어 있다.
도 6은 도 4에 도시된 구조와 다른 구성을 개략적으로 도시한 것으로, 상기 증분기(66, 70)가 단일의 제1 증분기(74)에 통합되어 있다. 상기 가산기(60), 전파 검출부(62), AND게이트(64) 및 제2 증분기(68) 자체들은 그대로이긴 하지만, AND게이트(64)부터 제1 증분기(66)까지의 경로가 제거되어 있고, 캐리 출력 값(c)과 비중첩 정수부(b)가 입력으로서 상기 제1 증분기(74)에 제공된다. AB( 및 단지 B부분만을 필요로 할 경우) 및 D는 상기 결과 발생기(76)에 의한 결과 값으로 배열된다. 이러한 교대의 배열은, 박스 48에 도시된 것처럼 A=a+(c && propagate(b)) 및 B=b+c)에 대해 행해진 캐리 값을, 도 4의 예에서 입력 값의 풀 정수부(aaaaaaaabb - 박스 42 참조)가 가산하기 위해, 대신에 AAAAAAAABB=(aaaaaaaabb)+c의 조합된 증분을 행하는 것도 가능하다는 인식을 바탕으로 한다. 도 6에 도시된 구성에 따른 장치는 발생할 것인가 아닌가를 선택할 때, 신서시스 툴이 캐리를 b를 통해 (일반적으로 최신의 신서시스 툴에 의해 잘 행해진) a에 어떻게 효율적으로 전파할 수 있는지에 약간 의존할 수도 있다. 그 장치가 단일 포맷을 처리하는데만 필요한 경우, 이들 필드를 분할할 이유가 없어서, 그것들을 통합하는 것이 보다 좋을 가능성이 있다. 다수의 포맷을 단일의 유닛에서 처리할 경우, 당신이 서로 다른 포맷으로 각각에 대해 서로 다른 폭이 필요하기 때문에 그것들을 분할하는 것이 이로울 수도 있다.
도 7은 도 1에 도시된 부동소수점 변환기(15)의 예를 개략적으로 도시한 것으로, 이 변환기는, 도 2 내지 도 6을 참조하여 기술된 상기 장치의 구성 예에서 발생한 결과 값을 변환하는데 사용되어도 된다. 도 7에서 부동소수점 변환기는 80으로 번호가 붙여져 있다. 상기 결과 값을 부동소수점 포맷으로 변환하기 위해서, 최상위 세트 비트를 찾기 위해 주사될 필요가 있고, 그리고 나서, 그에 따라 상기 결과 값은 부동소수점 포맷 값의 가수를 발생하기 위해서 시프팅을 필요로 한다. 대응한 지수값도 발생된다. 비트 주사는, 상술한 계산의 약간의 관찰을 이용하는 본 기술에 의해 향상된다. 3가지 경우가 있고, 비트 스캐너는 (도 7의 경우와 같이) 아래의 경우마다 제공되어도 된다:
1. 상기 결과 값의 정수부가 논제로일 경우, 캐리가 발생되지 않는다. 그리고, 최초의 정수 입력은, 비트 주사되어 시프트량을 발생할 수 있다. 이를 비트 스캐너(82)에 의해 행한다. 상기 가산(들)의 결과는, 그래도 실제로는 시프트할 필요가 있지만, 상기 가산(들)과 병렬로 그 비트 주사를 행할 수 있다.
2. 상기 결과 값의 정수부가 논제로일 경우, 캐리가 발생된다. (i+1)의 값이 미리 계산될 수 있고, 그리고, 이 값은 비트 주사된다. 이를 상기 비트 스캐너(84), 증분기(86)에 의해 행한다. 또는(도 8에서 비트 스캐너(88)에 도시된 것처럼), 경우 1로부터의 결과가 사용될 수 있고, 그 결과는 정수부에 1을 가산하는 것이 비트 주사 결과를 변경할 것인가 아닌가가 확인될 수 있다. 상기 최초의 입력의 정수부가 비트 패턴 "10"을 포함하는 경우, 1을 가산하는 것에 의해 비트 주사 결과를 변경시키지 않을 것이다. 포함하지 않는 경우, 1을 가산하는 것은 비트 주사 결과에 가산할 것이다. 따라서, 이러한 다른 비트 스캐너(88)는, "10" 검출부(90), 증분기(92) 및 멀티플렉서(94)로 이루어진다. "10" 검출의 결과는, 상기 멀티플렉서의 어느 입력이 출력인지, 즉 비트 스캐너(82)로부터의 수정되지 않은 결과나, 1씩 증분된 비트 스캐너(82)로부터의 결과인지를 제어한다. 이러한 논리 깊이는, 증분 후 주사(increment-then-scan)보다 낮다. 또, 상기 가산(들)의 결과는 그래도 실제로는 시프트할 필요가 있지만, 상기 가산(들)과 병렬로 비트 주사를 행할 수 있다.
3. 정수부가 제로다. 이것은 실제의 가산들을 제거한다. 그리고, 최초의 소수부 입력은, 주사될 수 있고(비트 스캐너(96)에 의해 행해질 수 있고), 미변형 입력만을 사용하여 시프트를 행한다. 또한, 이러한 경로상에서 제로에 대해 특수한 경우가 있다.
이들의 3가지의 경우가 (도 7 및 도 8의 경우와 같이) 병렬로 실시되는 경우, 전체 회로의 논리적 깊이를 얕게 하는, (i+f) 또는 (a+f) 가산들로부터 비트 스캐너(들)까지의 논리적 경로가 없다. 주목해야 하는 것은, 부동소수점 변환기(80)가 부동소수점 포맷 출력 값을 발생시킬 수 있도록 정수부와 소수부 양쪽을 상기 입력 값이 가질 필요가 없어서, 상기 입력 값이 정수뿐일 경우에, 그 대신, 비트 스캐너(96)를 거친 경로는 상기 정수의 후자부에 사용되어도 된다. 예를 들면, 상기 입력 값이 (n+m)비트 정수인 경우, 상기 m비트 부분은 비트 스캐너(96)에 의해 처리되어도 되지만, 물론 이 경우에도 상기 입력의 소수부를 나타내지 않는다.
도 7에 도시된 것처럼, 각각의 비트 스캐너에서 발생한 최상위 비트 위치들은, 선택 로직(100)의 제어하에 멀티플렉서(98)에 의해 중간으로 선택된다. 선택 로직(100)은, 정수부와 소수부 양쪽이 제로인 특수한 경우에 대해, 상기 입력 값의 소수부뿐만 아니라 (제로인지 논제로인지를 판정하기 위해서) 상기 입력 값의 정수부도 수신한다. 상기 정수부와 소수부 양쪽이 제로인 특수한 경우에 대해, 특별히 선택된 값들을 시프터(104)((멀티플렉서 98을 거침)와 상기 지수 발생부(106)에 제공할 수 있는 제로의 특수한 경우부(102)가 설치되어 있고, 이들의 특별히 선택된 값들은 출력에 있어서 "모두 제로"의 특수한 경우를 가리키는데 사용된다. 또한, 선택 로직(100)은, 비트 스캐너 82와 84로부터의 결과 사이에서 선택할 수 있도록 합 스테이지로부터 상기 캐리를 수신한다. (상술한 구성들 중 어느 구성이든 취할 수도 있는) 상기 결과 발생기(13)로부터의 결과 값은, 이 값을, 상기 멀티플렉서(98)로부터 수신된 최상위 비트(MSB) 위치에 따라 적절한 양만큼 시프트하는 상기 시프터(140)에 의해 수신된다. 상기 제로의 특수한 경우에 대해, 상기 제로의 특수한 경우부(102)는, 상기 시프터(104)에, 이 제로의 특수한 경우를 나타내는데 사용되는 상기 특별히 선택된 값을 발생하는데 필요한 경우, 상기 결과 값의 대체 값을 제공하여도 된다. 멀티플렉서(98)의 출력( 및 상기 제로의 특수한 경우부(102)로부터의 적절한 신호)는, 상기 지수 발생부(106)에 의해 수신된다. 상기 시프터(104)와 지수 발생부(106)의 출력들은, 이들을 부동소수점 포맷 출력 값에 함께 더하는 합성기(108)에 의해 수신된다. 이 부동소수점 포맷 출력 값은, 예를 들면 상기 지수로 넘쳐흐르도록 완전한 부동소수점 수를 사사오입하여서(즉, 상기 지수를 따로따로 취급하지 않고) 상기 사사오입부(109)에 의해 사사오입되어도 된다. 이것의 예를 들기 위해서, 정규화된 수 1.0에서 시작하여, 2진 형태의 무한 합은 정규화된 형태의 1.1111...*2-1가 되는 0.1111...이고, 여기서 선두의 1은 기억되지 않는다. 1을 이 표현법에 가산하면 10.0000*2^-1=1.0*2^0가 된다. 연결된 지수와 가수(즉, 지수:가수, 통상 부동소수점에서 사용된 가수 바이어스를 무시)가 11111111:11111111...+1=00000000:00000000을 제공하는 표현법에 있어서, 이것에 의해, 상기 지수를 따로따로 취급하지 않고 지수를 -1로부터 0으로 정확히 변경하는 것을 실시한다.
이때, 또 다른 구성에는, 다수의 시프터가 설치되어도 되고, 이 경우에 멀티플렉서(980)가 이들 다수의 시프터 뒤에 설치된다. 이것에 의해 각 시프터가 시프트 양이 보다 작게 처리할 수 있다(예를 들면, 각각은 단일의 시프터에 의해 16비트의 최대 시프트와 대비하여 8비트의 최대 시프트를 처리하고; 이것은 전반적인 논리 깊이를 감소시킨다). 비트 스캐너(96) 후의 상기 시프터는, 시프트하기 위해 상기 값으로서 최초의 입력의 소수부를 사용할 수 있다. 상기 모두 제로일 경우에, 시프트가 필요하지 않다.
끝으로, 도 1 내지 도 8에 대해 상술한 각종 구성에 대해, 동일 변환기에서 서로 다른 비트 폭들이 지원되는 경우, 그 구성요소간에 전달된 값들의 폭들은 변경할 것이고, 일부의 추가의 멀티플렉서는 입력 사이즈가 달라질 수 있는 각 구성요소에 입력으로 적절하게 데이터를 정렬하는데 사용될 수 있다는 것을 주목한다. 이때, 상기 가산기는 가장 큰 중첩의 사이즈인체로 있다.
이제, 도 9 내지 도 12로 가서, 순환 반복 합에서 이중 중첩이 있는, 즉 3비트가 가산될 필요가 있는 자리가 있는 예를 제시한다(unorm6.8 입력값의 경우). 상기 순환 반복 합의 구조가, 도 9의 박스(120)에 도시되어 있다. 이 때문에, 본 기술의 계산의 "평탄화"는, 먼저 단일 중첩으로부터의 본 기술을 사용하여 상기 소수부 비트들을 평탄화하고 나서, 동일 기술을 다시 사용하여 상기 합을 총체적으로 평탄화하는 본 예의 2개의 스테이지에서 행해진다. 본 예에서는, 상기 입력이 (26-1)63인 상수값으로 나누어지고 있는 중이다.
2비트 가산과 3비트 가산에 수반되는 상기 입력 값의 소수부분을 구별하기 위해서, 항 a(상위 3비트 가산 수반 부분), b(중간 2비트 가산 수반 부분) 및 c(하위 3비트 가산 수반 부분)이 박스(122)에 도시된 것처럼, 대체되어 있다. 이때, 이 때문에 본 예에서 항 c는 이전과 같이 상기 가산의 캐리 출력을 말하지 않는다. 본 예에서, 도 4의 박스 44와 48에 도시된 계산은, 본 예를 약간 변경한, 박스 124에 도시된 것들과 같은 것이 일반적이다. 이들 계산은, 소수부 비트들을 "평탄화"하고 박스 126에 도시된 것과 같은 상기 반복 합에 있어서의 중첩의 단일층만을 남기는 "사전 평탄화" 연산을 실행하기 위해서, 본 기술에 의해 박스 120 및 122에 도시된 순환 반복 합에 적용된다. 본 예의 상술한 변경은, 정수부라기보다는 오히려 소수부가 (d, A, B 및 D의 계산에 대해 이후에 입력이 변화하는) 이들 스테이지들에서 고려중에 있고 항 G의 추가의 계산의 도입중에 있다. 박스 126에 도시된 것처럼, G는 전체 캐리 항으로, 소수부로부터 초기의(비중첩하는) 정수부(iiiiii)에 보내진 전체 캐리 값을 나타낸다.
박스 126에 도시된 사전 평탄화된 반복 합에 대한 관찰결과(항들은 박스 124에서 계산된 것들로 대체되어 있고, 여기서, (AB)는 박스 126에 도시된 "AABBBB"항을 의미하고, (i+AB)/(i+DB)는 AABBBB와 iiiiii의 합/박스 126에 도시된 DDBBBB 및 iiiiii의 합을 의미한다)인 약칭 표현을 다시 사용한다)는, 다음의 것이다:
1. (AB)가 캐리(즉, G는 논제로)를 전파할 경우, AB는 그 전파의 결과로서 제로이어야 하고; 그리고, i와 G를 가산하면 캐리를 발생시키지 않을 것이다;
2. (AB)가 제로일 경우, (i+DB)로부터의 캐리는 정수항 iiiiii이 모두 1들이면 (i+AB) 합을 통해 전파만 할 것이다. 이에 따라 특별한 경우가 발생할 수 없고, 이때 unorm값 1.0의 최대값이 정수 비트가 모두 1이고 소수부 비트가 모두 0으로써 제공된 상술한 표현법을 사용하므로, 그 소수부 비트는 정수 비트가 모두 1이면 모두 0이어야 한다;
3. (AB)가 논제로일 경우, 캐리가 (i+AB)로부터 발생될지도 모르거나 캐리가 (i+DB)합으로부터 (i+AB)을 통해 전파될지도 모르지만, 양쪽이 아닐지도 모른다;
4. 어떠한 경우에도 1보다 많은 첫 번째 i에 전체 캐리를 넣을 수 없다.
또 다른 관찰결과는, 초기의(비중첩하는) 정수부(iiiiii)로 들어가는 캐리는, 또 다른 비트를 결코 얻을 수 없는데, 그 이유는, 이것이 본 초기의 정수 섹션이 모두 1이었다면 발생만 하였을 것이기 때문이지만, 그 경우에 소수부 비트들은 (다시 1.0의 최대값에 대한 상술한 표현법으로 인해) 모두 제로이므로, 캐리가 발생하지 않을 것이다는 것이다. 그리고, 다시 동일 기술을 사용하여 그 합을 전체적으로 (즉, 박스 126에 도시된 포맷으로부터 박스 130에 도시된 포맷까지, 박스 128에 도시된 계산/대체에 의해) 평탄화한다. 박스 128에 도시된 계산은, 행해질 2개의 가산, 즉 e=(i+AB) 및 j=(i+DB)(NB: 다시 약칭 표현)이 필요하다. 3개의 증분 계산은, 본 예에서 행해진다. 증분하는 항은, (i+DB 가산)으로부터 캐리 출력 값(generate(i+DB))으로서 발생되고, 이것은 e와 j 각각을 증분하여 각각 E와 F를 제공하는데 사용된다. 입력 값(i)의 정수부는, 캐리 값이 상기 입력 값의 정수부에 전파될 수 있는 능력을 나타내는 증분 항만큼 증분된다. 이때, 또한 나머지 항들과 G항의 논리합은 최대값 1.0에 대해 상술한 표현법에 관련된 상기 관찰결과 3에 근거한다. 이러한 표현법이 사용되지 않는 보다 일반적인 경우에 있어서, 상기 G항은 나머지 항들과 가산될 것이다. 따라서, 이때, G항과 나머지 항을 논리합하는 경우, 새로운 MSB는 정수항에 대해 발생될 수 없지만, 이것은 G항과 나머지 항을 가산할 때(와 정수항이 모두 1일 때) 가능하다.
이렇게 하여, 박스(126)에서의 식은, 박스 130에 도시된 식(여기서, 그것은 무한대로 반복하는 FFFFFF항이다)을 제공하기 위해, 박스 128에 도시된 식으로 대체될 수 있다. 이렇게 하여, 박스 130에 도시된 식은 박스 120에 도시된 순환 반복 합을 실시하는 완전히 평탄화된 계산이다. 이전의 예들에서와 같이, 데이터 처리장치는 상기 결과에 대한 필요한 정밀도로 박스 130의 식을 평가한다, 즉 상기 결과 값에서 그 필요한 정밀도가 얻어지는 포인트에서 상기 식을 잘라버린다. 상기 결과 값의 사사오입도 상기 결과 발생기(13)에서 상기 사사오입부(16)에 의해 행해질 수도 있다.
도 10 및 도 11은 도 9에 대해 설명한 스테이지들을 실시하기 위해 데이터 처리장치(10)의 구성을 개략적으로 도시한 것이다. 또, 여기서는 약칭 표현의 동일한 스타일을 사용하고, 여기서, 도 10의 "a"는 도 9의 aa항에 해당하는 등 한다. 박스 124의 계산에 해당하는 도 10을 참조하면, 입력 값의 a와 c 부는, 합값(d)과 캐리 출력 결과를 생성하는 (풀) 가산기(140)에 의해 수신된다. 따라서, 상기 가산기(140)는, 이 스테이지에서 2개 사이에 중첩의 사이즈와 폭(본 예에서는 2비트)을 갖게 하는데 필요할 뿐이지만, 이 가산기는 보다 넓은 폭(본 예에서는 6비트)가 (i+AB)가산 또는 (i+DB) 가산을 행하는데 필요한 나중의 스테이지(도 11 참조)에 재사용되어도 되므로, 가산기(140)는 거기서 재사용될 수 있도록 그 나중의 스테이지에서 필요한 폭을 가질 수도 있다. 상기 입력 값의 b부는 b의 비트 값이 세트 캐리 값을 전파하는지를 판정하는 전파 검출 회로소자(142)에 의해 수신된다. 가산기(140)로부터의 이 전파검출의 결과와 상기 캐리 출력 결과는, 그 입력들을 AND게이트(144)에 제공하고, 그 AND게이트의 출력은 증분기(148, 150)에 전달된다. 또한, a항은 a의 비트 값이 세트 캐리 값을 전파하는지를 판정하는 또 다른 전파 검출 회로소자(146)에 의해 수신된다. 제1 증분기(148)는, 상기 합 값A를 발생하기 위해 AND게이트(144) 출력만큼 a항을 증분한다. 제2 증분기(150)는 상기 합 값D를 발생하기 위해 상기 합 값d를 AND 게이트(144) 출력만큼 증분한다. 제3 증분기(152)는, 상기 합 값B를 발생하기 위해 b항을 상기 가산기(140)로부터의 캐리 출력만큼 증분한다. AND게이트(154)는, G값을 발생하기 위해 AND게이트(144)와 전파 검출 회로소자(146)로부터의 입력을 갖는다. 상술한 것처럼, 상기 증분기(148, 150, 152)의 폭은, 이 스테이지에서 단지 그들의 각각의 입력과 같을 필요가 있을 뿐이지만, 또 다른 스테이지에서 재사용되어도 되고(도 11 참조), 그 경우에 어느 하나의 스테이지에서 그들의 역할을 위해 필요한 가장 큰 폭을 갖는다. A, B 및 D는 상기 결과 발생기(156)에 의해 중간 결과 값 AB와 DB에 배열되어도 되지만, 어떠한 명백한 재배열도 없이 직접 다음 스테이지(도 11 참조)의 관계가 되게 되고 병렬 비트 세트로서 상기 필요한 입력에 반영되어도 된다.
박스 128의 계산에 대응하는 도 11로 가면, i와 DB항은, 상기 합 값(j)과 캐리 출력 결과를 생성하는 (풀) 가산기(160)에 의해 수신된다. i와 AB항은, 상기 합 값(e)과 상기 캐리 출력 결과를 생성하는 (풀) 가산기(162)에 의해 수신된다. 상술한 것처럼, 이들 가산기 중 하나는, 실제로는 이 스테이지에서 재사용중인 가산기(140)와 같아도 되고, 이 구성은, 상기 결과 발생기(13)의 출력이 상기 풀 가산기(들)에 역으로 보내지는 도 1에 도시된 피드백 경로에 해당하므로, 대체 입력 값을 형성한다. 상기 G항은 OR게이트(164)에 의해 수신된다. 이때, 상기 G항의 사용법에 관해 상술한 보다 일반적인 경우에, OR게이트(164)와 OR게이트(170) 양쪽은, 각각 ADD게이트로 교체된다. 이것은, I=i+(G+generate(i+AB)+(generate(i+DB)&& propagate(i+AB)))에 의해 대체되는 도 9의 박스 128에서의 "I"항의 정의에 해당한다.
상기 가산기(162)의 캐리 출력은, OR게이트(164)의 다른 입력에 제공한다. 상기 가산기(162)의 합 출력(e)은, (e)의 비트 값이 세트 캐리 값을 전파하는지를 판정하는 전파 검출 회로소자(166)에 그 입력을 제공한다. 이 전파 검출의 결과와 상기 가산기(160)로부터의 캐리 출력 결과는 상기 AND게이트(168)에 입력들을 제공하고, 그 AND게이트(168)의 출력은 OR게이트(170)에 하나의 입력을 제공한다. 이때, AND게이트(168)의 출력과 상기 가산기(162)의 캐리 출력도, (후술한) 도 12의 부동소수점 선택 로직에 전달된다. 제1 증분기(172)는 상기 합 값F를 발생하기 위해 가산기(160)의 캐리 출력만큼 j항을 증분한다. 제2 증분기(174)는, 상기 합 값E를 발생하기 위해 가산기(160)의 캐리 출력만큼 e항을 증분한다. 제3 증분기(176)는, 상기 합 값I를 발생하기 위해 OR게이트(170)의 출력만큼 i항을 증분한다. I, E 및 F는 상기 결과 발생기(178)에 의해 최종 결과 값으로 배열된다.
도 12는 도 1에 도시된 부동소수점 변환기(15)의 일례를 개략적으로 도시한 것으로, 이 변환기는 도 9 내지 도 11을 참조하여 기술된 상기 장치의 구성 예에서 발생한 결과 값을 변환하는데 사용되어도 된다. 이전과 같이, 결과 값을 부동소수점 포맷으로 변환하기 위해서, 최상위 세트 비트를 찾기 위해 주사될 필요가 있고, 그리고 상기 결과 값은 그에 따라 부동소수점 포맷 값의 가수를 발생하기 위해서 시프팅을 필요로 하고 대응한 지수값도 발생된다. 또한, 이러한 비트 주사는 도 9 내지 도 11을 참조하여 상술한 계산의 일부의 또 다른 관찰사항을 사용한 본 기술들에 의해 향상된다. 여기서는 4개의 경우가 있고, 비트 스캐너는 (바로 도 12의 경우와 같이) 아래의 경우마다 제공되어도 된다:
1. 상기 결과 값의 정수부가 논제로이고, 캐리가 그것에 전파하지 않는 경우, 도 7의 예에서와 같이, 최초의 정수 입력은, 시프트 양을 발생하기 위해 비트 주사될 수 있다. 이를 비트 스캐너(190)에 의해 행한다. 상기 가산의 결과는, 그래도 실제로는 시프트할 필요가 있지만, 그들 가산과 병렬로 비트 주사를 행할 수 있다.
2. 상기 결과 값의 정수부가 논제로이고, 캐리가 그것에 전파하는 경우, 도 7 및 도 8의 예에서와 같이, 동일한 2개의 가능성, 즉 상기 최초의 정수 입력 플러스 1을 비트 주사하거나, 상기 경우 1의 결과가 상기 캐리에 영향을 받는지를 검출하는 어느 한쪽을 행하도록 존재한다. 여기서는 제1 예만이, 비트 스캐너(192)와 증분기(194)에 의해 실시된 것처럼, 도시되어 있다.
3. 상기 정수부가 제로이고, a가 논제로일 경우, 캐리를 평탄화하는 결과(ABDB), 즉 풀 소수부는 비트 주사될 수 있고, 이 항도 시프팅을 위해 이것을 사용하는데, 그 이유는, 상기 정수 부분과의 최종 가산은 그것이 제로이기 때문에 영향을 받지 않을 것이기 때문이다. 이것은, 비트 스캐너(196)와, 상기 ABDB항을 상기 시프터(204)에 가져가는 경로에 의해 실시된다.
4. 상기 정수부가 제로이고, a가 제로일 경우, 최초의 입력 bc는 비트 주사될 수 있고, 시프팅에도 사용될 수 있다. 가산이 어떠한 영향도 미치지 않으므로, 이를 나머지 모두와 병렬로 행할 수 있다. 이것은, 비트 스캐너(198)와, bc항을 상기 시프터(204)에 가져가는 경로에 의해 실시된다.
또, 이들 4개의 경우를 (도 12의 경우와 같이) 병렬로 실시되는 경우, (i+AB) 또는 (i+DB) 가산으로부터 비트 스캐너(들)까지, 전체 회로의 논리적 깊이를 얕게 하는 논리 경로가 없는 경우이다. 도 12에 도시된 것처럼, 각각의 비트 스캐너에서 발생한 최상위 비트 위치들은, 멀티플렉서(200)에 의해 상기 선택 로직(202)의 제어하에서 사이에서 선택된다. 그 선택 로직(202)은, 입력으로서 i항, a항, 및 (도 11 참조) AND게이트(168)의 출력과 가산기(162)의 캐리 출력을 수신하여, 상술한 4개의 경우간에 선택할 수 있다. 경우 3 및 4에서 항 ABDB 및 bc뿐만 아니라 상기 결과 발생기(178)로부터의 결과 값도, 멀티플렉서(200)로부터 수신된 최상위 비트(MSB) 위치에 따라 적절한 양만큼 (선택 로직(202)에서 신호를 보낸 것처럼) 적절한 값을 시프트하는 시프터(204)에 의해 수신된다. 그 멀티플렉서(200)의 출력은, 지수 발생부(206)에 의해 수신된다. 상기 시프터(204)와 지수 발생부(206)의 출력은, 이들을 부동소수점 포맷 출력 값에 함께 넣는 합성기(208)에 의해 수신된다. 또한, 사사오입부 209는, 도 7에 사사오입부 109에 대해 상술한 것처럼, 설치되어도 된다. 마찬가지로, 도 7에 대해서도 상술한 것처럼, 변형에 있어서 다수의 시프터는, 단일의 시프터(204) 대신에 멀티플렉서(200) 앞에 설치되어도 되어서, 각 시프터가 보다 작은 시프트 양을 처리하게 한다.
도 13a는 4비트가 가산될 필요가 있는 자리가 있는, 즉 순환 반복 합에서 삼중 중첩이 있는 일례를 도시한 것이다. 이 때문에, 본 기술의 계산의 "평탄화"는, 단일 중첩 기술을 사용하여 따로따로 일 레벨의 소수부 비트 중첩을 평탄화하는 본 예와, 일 레벨의 정수/소수부 중첩에 대해 다수의 스테이지에서 행해진다. 그리고, 동일 기술은, 상기 반복 합을 완전히 평탄화하는데 다시 사용될 수 있다. 이들 다수의 스테이지는, 도 13b에 도시된 것과 같이 병렬로 적어도 일부 실시되어도 되고, 여기서 트리 구조는, 다수의 평탄화를 행하여 그들의 결과를 함께 가져오는데 사용된다. 본 기술은, 심지어는 도 13b에서 추가의 (점선 박스) 사전 평탄화 스테이지가 도시하는 것처럼 삼중 중첩보다 많은 중첩에도 적용되어도 된다. 그렇지만, 일부의 포인트에서 (해결방법마다 필요한 각각의 포맷과 회로 면적의 용도의 빈도에 따라) 보다 효율적인 해결방법을 고려하는 상기 필요한 나눗셈을 행하려고 하기 전에 보다 큰 포맷에 그 입력들을 변환하는 대안에 대해 상기 다수의 평탄화의 증가하는 실행 비용의 균형이 맞춰져야 할 것이라는 것을 인식한다.
도 14는 일 실시예의 방법에서 취해진 일련의 단계를 도시한 것이다. 그 흐름은, 그 입력 값이 수신되고, 상기 결과 값의 필요한 포맷이 무엇인지를 결정하는 단계 220에서 시작한다. 그리고, 단계 222에서는, 상기 순환 반복 합에 있어서 단일 레벨의 중첩보다 많이 있는지를 판정한다. 많이 있는 경우, 단계 224의 흐름으로 진행되어, 일 레벨의 중첩을 제거하도록 사전 평탄화 연산을 행한다. 그 후, 단계 222의 흐름으로 되돌아가, 이것이, 단일 레벨의 중첩만이 유지될 때까지 필요에 따라서 여러 번 단계 224로 되돌아갈 가능성이 있는 상기 반복 합에 있어서 남아 있는 단일 레벨의 중첩만으로 되었는지를 판정한다. 단일 레벨의 중첩만이 유지되어 있으면, 단계 226에서는, 입력 값(또는 단계 224가 적어도 한번 사용되었을 경우의 대체 입력 값)의 정수부와 소수부 사이의 정확한 중첩이 있는지를 판정한다. 이 정수부와 소수부 사이의 중첩이 정확한 경우, 단계 228의 흐름으로 진행되어 상기 정수부와 소수부는 합 값을 생성하기 위해 가산된다. 그 후, 단계 230에서는, 상기 결과 값의 제1 부분을 제공하기 위해서 상기 합 연산의 캐리 출력만큼 상기 정수부를 증분한다. 그 후, 단계 232에서는, 상기 결과 값의 제2 부분(들)을 제공하기 위해서 상기 합 연산의 캐리 출력만큼 상기 합을 증분한다. 이때, 상기 증분 단계(230, 232)가 순차적으로 실행될 필요는 없고, 도 3에 도시된 것처럼, 실제로는 병렬로 실행될 수 있다. 끝으로, 단계 234에서는, 원하는 정밀도의 상기 결과 값을 생성하는데 필요한 만큼의 같은 수의 추가의 제2 부분들에 의해 상기 결과 값을 확장시킨다.
단계 226을 참작하면, 상기 정수부와 소수부 사이의 중첩이 부정확한 경우, 단계 236의 흐름으로 진행되어, 합 값을 제공하기 위해서 상기 정수부와 소수부의 중첩 부분을 가산한다. 그 후, 단계 238에서는, 상기 정수부의 비중첩 부분이 전파하는지를 판정하고, 이것은 전파결과를 나타낸다. 그리고, 단계 240에서는, 이 전파결과를 상기 합 연산의 캐리 출력과 논리곱하고, 단계 242에서는, 그 결과 값의 제1 부분을 제공하기 위해, (단계 240의) 논리곱 결과만큼 상기 정수부의 중첩 부분을 증분한다. 그 후, 단계 244에서는, 그 결과 값의 제2 부분을 제공하기 위해 상기 합 연산의 캐리 출력만큼 상기 비중첩 정수부를 증분한다. 단계 246에서는, 상기 결과 값의 제3 부분을 제공하기 위해 상기 논리곱 결과만큼 상기 합 값을 증분한다. 이전과 같이, 단계 242, 244, 246이 순차적으로 실행될 필요가 없고, 도 5에 도시된 것처럼, 실제로는 병렬로 실행될 수 있다. 끝으로, 단계 248에서는, 원하는 정밀도의 결과 값을 제공하는데 필요한 만큼의 같은 수의 추가의 제2 및 제3 부분(교대)에 의해 상기 결과 값을 확장시킨다.
도 15는 상술한 기술들을 실시하는데 사용되어도 되는 종류의 범용 컴퓨팅 디바이스(300)를 개략적으로 도시한 것이다. 그 범용 컴퓨팅 디바이스(300)는, 중앙처리장치(302), 랜덤 액세스 메모리(304), 판독전용 메모리(306)이 버스(322)를 통해 함께 연결되어 있다. 또한, 그 범용 컴퓨팅 디바이스는 그 공통 버스(322)를 통해 모두 연결된, 네트워크 인터페이스 카드(308), 하드 디스크 드라이브(310), 디스플레이 드라이버(312), 모니터(314) 및 키보드(318)와 마우스(320)의 유저 입/출력 회로(316)를 더 구비한다. 동작상, 상기 중앙처리장치(302)는, 랜덤 액세스 메모리(304) 및/또는 판독전용 메모리(306) 등에 기억될 수도 있는 컴퓨터 프로그램 명령어들을 실행할 것이다. 컴퓨터 프로그램 명령어들은, 추가로 하드 디스크 드라이브(310)로부터 얻어질 수 있거나, 상기 네트워크 인터페이스 카드(308)를 통해 동적으로 다운로드될 수 있다. 이렇게 하여 상기 네트워크 인터페이스 카드(308)를 통해 액세스된 RAM(304), ROM(306), 하드 디스크 드라이브(310) 및 임의의 기억매체 각각은 비일시적으로 컴퓨터 프로그램이 기억된 컴퓨터 판독 가능한 기억매체를 나타낸다. 행해진 처리 결과는, 디스플레이 드라이버(312)와 모니터(314)를 거쳐 유저에게 표시되어도 된다. 범용 컴퓨팅 디바이스(300)의 동작을 제어하는 유저 입력은, 유저 입출력 회로(316)를 거쳐 상기 키보드(318)나 마우스(320)로부터 수신된다. 상기 컴퓨터 프로그램은 다양한 서로 다른 컴퓨터 언어로 기록될 수 있다는 것을 알 것이다. 그 컴퓨터 프로그램은 국소적으로 기록매체에 기억되거나 상기 범용 컴퓨팅 디바이스(300)에 동적으로 다운로드되어도 된다. 적절한 컴퓨터 프로그램의 제어하에 동작할 때, 상기 범용 컴퓨팅 디바이스(300)는 상술한 기술들을 실행할 수 있고, 상술한 기술들을 실행하기 위한 장치를 구성한다고 생각될 수 있다. 범용 컴퓨팅 디바이스(300)의 아키텍처는 상당히 달라질 수 있고 도 15는 일례일뿐이다.
따라서, 전체적으로 요약하면, 결과 값을 순환 반복 합의 필요한 정밀도로 계산하는 장치, 방법 및 프로그램을 제공하고, 여기서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함한다. 입력 값의 중첩부분과 시프트된 버전의 입력 값을 사용하여 합 연산으로서 단일 반복의 가산으로 가산을 행하고, 여기서 상기 시프트된 버전의 상기 입력 값은, 상기 입력 값과 일부 중첩한다. 적어도 하나의 결과 부분은 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 입력을 증분하여서 생성되고, 상기 결과 값은, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 구성된다. 따라서, 상기 순환 반복 합은, 상기 입력 값을 사용한 단일 반복의 가산만을 필요로 하는 평탄화된 계산으로 평탄화되기 때문에, 상기 순환 반복 합의 결과 값의 계산을 용이하게 한다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경, 추가 및 변형을 실시할 수 있다는 것을 알 것이다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 이하의 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (28)

  1. 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 장치로서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 장치는,
    상기 입력 값과, 상기 입력 값과 일부 중첩하는 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행할 수 있는 가산기;
    상기 가산기에서 행한 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 생성 가능한 적어도 하나의 증분기; 및
    상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성 가능한 결과 발생기를 구비하는, 계산장치.
  2. 제 1 항에 있어서,
    제1 반복의 상기 가산은, 상기 입력 값의 상기 시프트된 버전의 상기 입력 값에의 가산을 포함하고, 각각 또 다른 반복의 상기 가산은 이전의 반복 가산 결과의 또 다른 시프트된 버전의 상기 입력 값에의 가산을 포함하고, 상기 또 다른 시프트된 버전의 상기 입력 값이 상기 이전의 반복 가산 결과와 일부 중첩하는, 계산장치.
  3. 제 1 항에 있어서,
    상기 가산기는 상기 합 연산을 행하여 합 값을 생성 가능하고;
    상기 적어도 하나의 증분기는,
    상기 합 연산의 캐리 결과를 사용하여 상기 시프트된 버전의 상기 입력 값과 일부 중첩하는 상기 입력 값의 최상위 부분을 증분하는 것을 포함하는 제1 결과 부분을 생성 가능한 제1 증분기; 및
    상기 합 연산의 상기 캐리 결과를 사용하여 상기 합 값을 증분하는 것을 포함하는 제2 결과 부분을 생성 가능한 제2 증분기를 구비하고;
    상기 결과 발생기는 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해서 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 부분으로서 상기 결과 값을 구성 가능한, 계산장치.
  4. 제 3 항에 있어서,
    상기 입력 값의 중간 부분은, 상기 시프트된 버전의 상기 입력 값과 중첩하지 않고,
    상기 제1 증분기는, 증분 값만큼 증분된 상기 일부 중첩을 갖는 상기 입력 값의 상기 최상위 부분으로서 상기 제1 결과 부분을 생성 가능하고, 상기 증분 값은 전파 값과 논리곱된 합 연산의 상기 캐리 결과에 의해 제공되고, 상기 전파 값은 상기 중간 부분이 상기 가산에 있어서 캐리 전파할지 아닐지를 가리키고,
    상기 제2 증분기는 상기 증분 값만큼 증분된 상기 합 값으로서 상기 제2 결과 부분을 생성 가능하고,
    상기 결과 발생기는 상기 제1 결과 부분과 상기 제2 결과 부분 양쪽이 제3 결과 부분에 의해 첨부되는 상기 결과 값을 구성 가능한, 계산장치.
  5. 제 4 항에 있어서,
    상기 장치는, 상기 합 연산의 상기 캐리 결과만큼 상기 중간 부분을 증분하는 것을 포함하는 제3 결과 부분을 생성 가능한 제3 증분기를 더 구비하는, 계산장치.
  6. 제 1 항에 있어서,
    상기 입력 값의 중간 부분은, 상기 시프트된 버전의 상기 입력 값과 중첩하지 않고,
    상기 가산기는 상기 합 연산을 행하여 합 값을 생성 가능하고;
    상기 적어도 하나의 증분기는,
    제1 결과 부분 입력 값을 제공하기 위해 상기 입력 값의 상기 중간 부분과의 일부 중첩을 갖는 상기 입력 값의 최상위 부분을 첨부하는 것과, 상기 합 연산의 캐리 결과를 갖는 상기 제1 결과 부분 입력 값을 증분하는 것을 포함하는, 제1 결과 부분을 생성 가능한 제1 증분기; 및
    상기 합 연산의 상기 캐리 결과를 사용하여 상기 합 값을 증분하는 것을 포함하는 제2 결과 부분을 생성 가능한 제2 증분기를 구비하고,
    상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분에 후속하는 상기 제1 결과 부분으로서 상기 결과 값을 구성 가능하고, 상기 적어도 하나의 제2의 하나의 결과 부분은 상기 입력 값의 상기 중간 부분과 같은 크기의 상기 제1 결과 값의 최하위 부분에 의해 첨부되는, 계산장치.
  7. 제 1 항에 있어서,
    상기 장치는, 상기 결과 값을 부동소수점 포맷 값으로 변환 가능한 부동소수점 변환기를 더 구비하는 계산장치.
  8. 제 1 항에 있어서,
    상기 입력 값은 정수부와 소수부를 포함하는, 계산장치.
  9. 제 8 항에 있어서,
    상기 결과 값을 부동소수점 포맷 값으로 변환 가능한 부동소수점 변환기를 더 구비하고,
    상기 부동소수점 변환기는,
    상기 입력 값의 상기 정수부를 수신하여 최상위 비트 위치를 제1 비트 위치 출력 값으로서 출력 가능한 제1 비트 위치 발생기;
    1씩 증분된 상기 입력 값의 상기 정수부의 최상위 비트 위치를 제2 비트 위치 출력 값으로서 출력 가능한 제2 비트 위치 발생기; 및
    상기 입력 값의 상기 소수부에서의 최상위 비트의 위치를 제3 비트 위치 출력 값으로서 발생 가능한 제3 비트 위치 발생기를 구비하고,
    상기 부동소수점 변환기는, 상기 정수부가 논제로이고 상기 캐리 결과가 제로일 경우 상기 제1 비트 위치 출력 값을 사용하고, 상기 정수부가 논제로이고 상기 캐리 결과가 논제로일 경우 상기 제2 비트 위치 출력 값을 사용하고, 상기 정수부가 제로일 경우 상기 제3 비트 위치 출력 값을 사용하여, 상기 부동소수점 포맷 값의 지수부분을 발생 가능한, 계산장치.
  10. 제 9 항에 있어서,
    상기 제2 비트 위치 발생기는, 상기 입력 값의 상기 정수부가 1 직후에 0이 오는 것을 포함하는지를 판정하여, 포함할 경우 상기 제1 비트 위치 출력 값을 상기 제2 비트 위치 출력 값으로서 제공하고, 포함하지 않을 경우 상기 제2 비트 위치 출력 값을 발생하기 위해 상기 제1 비트 위치 출력 값을 1씩 증분 가능한, 계산장치.
  11. 제 9 항에 있어서,
    상기 제1 비트 위치 발생기, 상기 제2 비트 위치 발생기 및 상기 제3 비트 위치 발생기는, 병렬 연산 가능한, 계산장치.
  12. 제 1 항에 있어서,
    상기 일부 중첩은 상기 순환 반복 합에 있어서 상기 입력 값의 이중 셀프 중첩을 포함하고, 상기 이중 셀프 중첩은 상기 순환 반복 합의 제1 반복에 있어서, 상기 입력 값의 최하위 부분, 상기 입력 값의 중간 유의값(intermediate significance) 부분 및 상기 입력 값의 최상위 부분의 가산을 포함하고, 상기 장치는 상기 입력 값용 대체 입력 값을 판정하는 것을 포함하는 상기 순환 반복 합에 있어서 상기 입력 값용 상기 이중 셀프 중첩을 제거하는 사전 평탄화 연산을 행하는 것이 가능한, 계산장치.
  13. 제 12 항에 있어서,
    상기 입력 값은 정수부와 소수부를 포함하고, 상기 입력 값의 상기 중간 유의값 부분은 상기 소수부의 최상위 부분이고, 상기 입력 값의 상기 최하위 부분은 상기 소수부의 최하위 부분이고, 상기 소수부의 중간 유의값 부분은 상기 이중 셀프 중첩에 포함되지 않고, 상기 장치는,
    상기 소수부의 상기 최상위 부분과 상기 소수부의 상기 최하위 부분에 관해 사전 평탄화 합 연산을 행하여 사전 평탄화된 합 값을 생성 가능한 사전 평탄화(pre-flatten) 가산기;
    상기 소수부의 상기 중간 유의값 부분이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 사전 평탄화 전파 값과 논리곱된 상기 사전 평탄화 합 연산의 캐리 결과에 의해 제공된 사전 평탄화 증분 값만큼 상기 소수부의 상기 최상위 부분을 증분하여서 제1 사전 평탄화 부분을 생성 가능한 제1 사전 평탄화 증분기;
    상기 사전 평탄화 합 연산의 상기 캐리 결과만큼 증분된 상기 소수부의 상기 중간 유의값 부분으로서 제2 사전 평탄화 부분을 생성 가능한 제2 사전 평탄화 증분기;
    상기 사전 평탄화 증분 값만큼 증분된 상기 사전 평탄화된 합 값으로서 제3 사전 평탄화 결과 부분을 생성 가능한 제3 사전 평탄화 증분기; 및
    상기 가산에 있어서 상기 소수부의 상기 최상위 부분이 캐리 전파하는지의 표시와 논리곱된 상기 사전 평탄화 증분 값으로서 사전 평탄화 생성 값을 생성 가능한 사전 평탄화 생성값 발생기를 구비하고,
    상기 장치는, 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제1 사전 평탄화 부분으로 대체하여서 상기 순환 반복 합의 제1 반복과, 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분으로 대체하고 상기 사전 평탄화 생성 값에 의해 첨가하여서 상기 순환 반복 합의 제2 반복과, 상기 소수부를 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분으로 대체하여서 상기 순환 반복 합의 제3 이후의 반복에 있어서, 상기 대체 입력 값을 구성 가능한, 계산장치.
  14. 제 13 항에 있어서,
    상기 장치는,
    상기 정수부와, 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제1 사전 평탄화 부분에 관해, 제1 합 연산을 행하여 제1 합 값을 생성 가능한 제1 가산기;
    상기 정수부와, 상기 제2 사전 평탄화 부분에 의해 첨부된 상기 제3 사전 평탄화 부분에 관해, 제2 합 연산을 행하여 제2 합 값을 생성 가능한 제2 가산기;
    상기 제2 합 연산의 캐리 결과만큼 상기 제1 합 값을 증분하여서 제1 결과 부분을 생성 가능한 제1 증분기;
    상기 제2 합 연산의 상기 캐리 결과만큼 상기 제2 합 값을 증분하여서 제2 결과 부분을 생성 가능한 제2 증분기; 및
    또 다른 사전 평탄화 증분 값만큼 상기 정수부를 증분하여서 제3 결과 부분을 생성 가능한 제3 증분기를 구비하는, 계산장치.
  15. 제 14 항에 있어서,
    상기 또 다른 사전 평탄화 증분 값은 증분 기여값과 논리합된 상기 제1 합 연산의 상기 캐리 결과와 논리합된 상기 사전 평탄화 생성 값에 의해 제공되고,
    상기 증분 기여값은 상기 제1 합 값이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 전파 값과 논리곱된 상기 제2 합 연산의 상기 캐리 결과에 의해 제공되고,
    상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 값 부분에 후속한 상기 제3 결과 부분으로서 상기 결과 값을 구성 가능한, 계산장치.
  16. 제 14 항에 있어서,
    상기 또 다른 사전 평탄화 증분 값은 증분 기여값에 추가된 상기 제1 합 연산의 상기 캐리 결과에 추가된 상기 사전 평탄화 생성 값에 의해 제공되고,
    상기 증분 기여값은 상기 제1 합 값이 상기 가산에 있어서 캐리 전파하는 경우를 가리키는 전파 값과 논리곱된 상기 제2 합 연산의 상기 캐리 결과에 의해 제공되고,
    상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분이 후속한 상기 제1 결과 값 부분에 후속한 상기 제3 결과 부분으로서 상기 결과 값을 구성 가능한, 계산장치.
  17. 제 9 항에 있어서,
    상기 일부 중첩은 상기 순환 반복 합에 있어서 상기 입력 값의 이중 셀프 중첩을 포함하고, 상기 이중 셀프 중첩은 상기 순환 반복 합의 제1 반복에 있어서, 상기 입력 값의 최하위 부분, 상기 입력 값의 중간 유의값 부분 및 상기 입력 값의 최상위 부분의 가산을 포함하고, 상기 장치는 상기 입력 값용 대체 입력 값을 판정하는 것을 포함하는 상기 순환 반복 합에 있어서 상기 입력 값용 상기 이중 셀프 중첩을 제거하는 사전 평탄화 연산을 행하는 것이 가능하고,
    상기 소수부의 상기 최상위 부분이 논제로일 때, 상기 제3 비트 위치 발생기는 대체 소수부를 사용하여 상기 제3 비트 위치 출력 값으로서 상기 입력 값의 상기 소수부에서의 상기 최상위 비트의 상기 위치를 발생 가능하고, 상기 대체 소수부는,
    상기 제2 사전 평탄화 부분이 첨부된 상기 제3 사전 평탄화 부분의 적어도 하나의 인스턴스가 첨부된 상기 제2 사전 평탄화 부분이 첨부된 상기 제1 사전 평탄화 부분을 포함하는, 계산장치.
  18. 제 10 항에 있어서,
    상기 입력 값의 중간 부분은, 상기 시프트된 버전의 상기 입력 값과 중첩하지 않고,
    상기 가산기는 상기 합 연산을 행하여 합 값을 생성 가능하고;
    상기 적어도 하나의 증분기는,
    제1 결과 부분 입력 값을 제공하기 위해 상기 입력 값의 상기 중간 부분과의 일부 중첩을 갖는 상기 입력 값의 최상위 부분을 첨부하는 것과, 상기 합 연산의 캐리 결과를 갖는 상기 제1 결과 부분 입력 값을 증분하는 것을 포함하는, 제1 결과 부분을 생성 가능한 제1 증분기; 및
    상기 합 연산의 상기 캐리 결과를 사용하여 상기 합 값을 증분하는 것을 포함하는 제2 결과 부분을 생성 가능한 제2 증분기를 구비하고,
    상기 결과 발생기는, 상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 적어도 하나의 제2 결과 부분에 후속한 상기 제1 결과 부분으로서 상기 결과 값을 구성 가능하고, 상기 적어도 하나의 제2의 하나의 결과 부분은 상기 입력 값의 상기 중간 부분과 같은 크기의 상기 제1 결과 값의 최하위 부분에 의해 첨부되고,
    상기 소수부의 상기 최상위 부분이 제로일 때, 상기 제3 비트 위치 발생기는 대체 소수부를 사용하여 상기 제3 비트 위치 출력 값으로서 상기 입력 값의 상기 소수부에서의 상기 최상위 비트의 상기 위치를 발생 가능하고, 상기 대체 소수부는,
    상기 소수부의 상기 최하위 부분이 첨부된 상기 소수부의 상기 중간 유의값 부분을 포함하는, 계산장치.
  19. 제 12 항에 있어서,
    상기 일부 중첩은, 상기 순환 반복 합에 있어서 적어도 상기 입력 값의 삼중 셀프 중첩을 포함하고, 상기 삼중 셀프 중첩은 상기 순환 반복 합에 있어서 상기 입력 값의 상기 이중 셀프 중첩과 적어도 하나의 또 다른 셀프 중첩을 포함하고, 상기 삼중 셀프 중첩은 상기 순환 반복 합의 상기 제1 반복에서의 상기 입력 값에 3개의 증분적으로 시프트된 버전의 상기 입력 값을 가산하는 것에 해당하고,
    상기 장치는, 상기 대체 입력 값용 이전의 대체 입력 값을 판정하는 것을 포함하는 상기 순환 반복 합에 있어서의 상기 입력 값의 상기 적어도 하나의 또 다른 셀프 중첩을 제거하는 적어도 하나의 또 다른 사전 평탄화 연산을 행하는 것이 가능한, 계산장치.
  20. 제 19 항에 있어서,
    상기 장치는, 상기 사전 평탄화 연산과 병렬로 또 다른 사전 평탄화 연산을 행할 수 있는, 계산장치.
  21. 제 1 항에 있어서,
    상기 입력 값은 최소 절대값이 0이고 최대 절대값이 1인 정규화된 수를 나타내는, 계산장치.
  22. 제 21 항에 있어서,
    상기 입력 값은 정수 요소와 소수 요소를 갖고, 상기 정규화된 수의 상기 최대 절대값을 나타내기 위해서 상기 정수 요소는 연속적인 시퀀스의 제1 타입의 비트 값이고 상기 소수 요소는 연속적인 시퀀스의 제2 타입의 비트 값이며, 상기 제2 타입은 상기 제1 타입과 상보적인, 계산장치.
  23. 제 1 항에 있어서,
    상기 순환 반복 합은, 2의 제곱이 아닌 상수의 역수에 의해 곱셈을 실시하는, 계산장치.
  24. 제 23 항에 있어서,
    상기 2의 제곱이 아닌 상수는, 2의 정수 제곱 마이너스 1로서 표현 가능한, 계산장치.
  25. 제 1 항에 있어서,
    상기 장치는, 상기 결과 값에 마지막 자리부의 절반을 가산하는 것을 포함하는 상기 결과 값에 관해 사사오입 연산을 행할 수 있는, 계산장치.
  26. 데이터 처리장치에서 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 방법으로서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 방법은, 상기 데이터 처리장치에 의해 구현된,
    상기 입력 값과, 상기 입력 값과 일부 중첩하는 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행하는 단계;
    상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 증분하는 것에 의해 생성하는 단계; 및
    상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성하는 단계를 포함하는, 계산방법.
  27. 컴퓨터에 청구항 26의 방법을 실행시키기 위한 컴퓨터 프로그램이 비일시적으로 기억된 컴퓨터 판독 가능한 기억 매체.
  28. 순환 반복 합의 필요한 정밀도로 결과 값을 계산하는 장치로서, 상기 순환 반복 합은 입력 값을 사용하여 다수의 반복의 가산을 포함하고, 상기 장치는,
    상기 입력 값과, 시프트된 버전의 상기 입력 값과의 중첩 부분을 사용하여, 합 연산으로서 단일 반복의 가산을 행하는 가산기 수단;
    상기 가산기 수단에서 행한 상기 합 연산으로부터의 출력을 사용하여 상기 입력 값으로부터 얻어진 적어도 하나의 결과 부분을 생성하는 수단; 및
    상기 결과 값을 상기 필요한 정밀도로 제공하기 위해 상기 적어도 하나의 결과 부분을 사용하여 상기 결과 값을 구성하는 수단을 구비하는, 계산장치.
KR1020150147724A 2014-10-31 2015-10-23 순환 반복 합의 결과의 계산장치, 방법 및 프로그램 KR102486711B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1419456.7A GB2535426B (en) 2014-10-31 2014-10-31 Apparatus, method and program for calculating the result of a repeating iterative sum
GB1419456.7 2014-10-31

Publications (2)

Publication Number Publication Date
KR20160051616A true KR20160051616A (ko) 2016-05-11
KR102486711B1 KR102486711B1 (ko) 2023-01-10

Family

ID=52118541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150147724A KR102486711B1 (ko) 2014-10-31 2015-10-23 순환 반복 합의 결과의 계산장치, 방법 및 프로그램

Country Status (4)

Country Link
US (1) US9933999B2 (ko)
KR (1) KR102486711B1 (ko)
CN (1) CN105573712B (ko)
GB (1) GB2535426B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281463B2 (en) * 2018-03-25 2022-03-22 Intel Corporation Conversion of unorm integer values to floating-point values in low power
CN108897522A (zh) * 2018-06-14 2018-11-27 北京比特大陆科技有限公司 数据处理方法、数据处理装置以及电子设备
CN113721884B (zh) * 2021-09-01 2022-04-19 北京百度网讯科技有限公司 运算方法、装置、芯片、电子装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257609B1 (en) * 2000-10-16 2007-08-14 Nokia Corporation Multiplier and shift device using signed digit representation
KR100818011B1 (ko) * 2005-12-02 2008-03-31 후지쯔 가부시끼가이샤 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0449419A (ja) * 1990-06-19 1992-02-18 Sony Corp 係数乗算回路
US7099410B1 (en) * 1999-01-26 2006-08-29 Ericsson Inc. Reduced complexity MLSE equalizer for M-ary modulated signals
CN1375765A (zh) * 2001-03-19 2002-10-23 深圳市中兴集成电路设计有限责任公司 一种快速大数模乘运算电路
US7296049B2 (en) * 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
US7685222B2 (en) * 2004-11-01 2010-03-23 Sony Corporation Power of two multiplication engine
CN101227613B (zh) * 2008-01-22 2010-04-07 炬力集成电路设计有限公司 一种sad运算处理装置及方法
CN101866278B (zh) * 2010-06-18 2013-05-15 广东工业大学 一种异步迭代的64位整型乘法器及其计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257609B1 (en) * 2000-10-16 2007-08-14 Nokia Corporation Multiplier and shift device using signed digit representation
KR100818011B1 (ko) * 2005-12-02 2008-03-31 후지쯔 가부시끼가이샤 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법

Also Published As

Publication number Publication date
US20160124708A1 (en) 2016-05-05
US9933999B2 (en) 2018-04-03
GB201419456D0 (en) 2014-12-17
KR102486711B1 (ko) 2023-01-10
GB2535426B (en) 2021-08-11
GB2535426A (en) 2016-08-24
CN105573712A (zh) 2016-05-11
CN105573712B (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
US9785407B2 (en) Data processing apparatus having combined divide-square root circuitry
US6751644B1 (en) Method and apparatus for elimination of inherent carries
EP1672481B1 (en) Division and square root arithmetic unit
US6108682A (en) Division and/or square root calculating circuit
JP2000259394A (ja) 浮動小数点乗算器
JP2019128763A (ja) 演算処理装置および演算処理装置の制御方法
KR20160051616A (ko) 순환 반복 합의 결과의 계산장치, 방법 및 프로그램
Tomczak Hierarchical residue number systems with small moduli and simple converters
CN108334304B (zh) 数字递归除法
Jain et al. Binary division algorithm and high speed deconvolution algorithm (Based on Ancient Indian Vedic Mathematics)
JP3598096B2 (ja) ニュートンラフソン法を用いた演算方式
Jain et al. High speed convolution and deconvolution algorithm (Based on Ancient Indian Vedic Mathematics)
Balajishanmugam High-performance computing based on residue number system: a review
JPH04355827A (ja) 開平演算装置
JP3660075B2 (ja) 除算装置
Saldamli et al. Spectral modular exponentiation
Araujo et al. A new floating-point adder FPGA-based implementation using RN-coding of numbers
CN111630509B (zh) 执行积和运算的运算电路
Jacoby et al. Dual fixed-point CORDIC processor: Architecture and FPGA implementation
Kiran et al. A Scalable, Deterministic Approach to Stochastic Computing
JP2000105684A (ja) 小容量メモリを用いた除算方式
Yeung et al. A monte-carlo floating-point unit for self-validating arithmetic
Ugurdag et al. Efficient combinational circuits for division by small integer constants
JP3514566B2 (ja) 除算/開平回路
Kiran et al. A Scalable Approach to Performing Multiplication and Matrix Dot-Products in Unary

Legal Events

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