KR20160037083A - 독립형 부동소수점 변환장치 - Google Patents
독립형 부동소수점 변환장치 Download PDFInfo
- Publication number
- KR20160037083A KR20160037083A KR1020150131319A KR20150131319A KR20160037083A KR 20160037083 A KR20160037083 A KR 20160037083A KR 1020150131319 A KR1020150131319 A KR 1020150131319A KR 20150131319 A KR20150131319 A KR 20150131319A KR 20160037083 A KR20160037083 A KR 20160037083A
- Authority
- KR
- South Korea
- Prior art keywords
- floating
- rounding
- point
- input
- circuit element
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
데이터 처리장치는, 부동소수점 가산기 회로소자; 및 정수, 고정소수점 수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 부동소수점 변환 회로소자를 구비한다. 상기 부동소수점 변환 회로소자는 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다르다.
Description
본 발명은, 데이터 처리 분야에 관련되어 있다.
데이터 처리장치에서는, 몇몇 서로 다른 형식 중 하나로 수를 표현할 수 있다. 예를 들면, 32비트 정수 형식은, 32비트를 사용하여 정수를 이진법으로 표현한다. 또 다른 예는, 64비트를 사용하여 정수를 이진법으로 표현하는 64비트 정수 형식이다. 그 64비트 형식에서 사용된 증가된 비트 수에 의해, 상기 32비트 정수 형식으로 가능할 수도 있는 것보다 큰 범위의 값을 표현할 수 있다.
다른 예의 형식은 부동소수점 수다. 부동소수점 수를 사용하여 간단한 정수라기보다는 실수를 표현할 수 있다. 정수 형식의 경우와 같이, 부동소수점 수를 표현하는데 사용된 비트의 수를 증가시키는 것은, 표현될 수 있는 값들의 범위를 증가시키는 것이 일반적이다. 추가로, 부동소수점 수를 표현하는데 사용된 비트의 수를 증가시키는 것은, 수를 표현할 수 있는 정확도를 증가시킬 수도 있다.
데이터 처리장치에서는, 다수의 서로 다른 형식을 부동소수점 형식으로 변환할 수 있는 것이 바람직한 경우가 많다. 예를 들면, 프로그래머가 정수를 소수부에 가산하고 싶은 경우, 일 해결방법은 먼저 그 정수를 부동소수점 수로 변환하는 것이다. 이와는 달리, 보다 높은 정밀도를 요구하고 이 경우에 보다 적은 비트로 표현한 입력 부동소수점 수가 그 입력 형식을 제공하는 경우 부동소수점 수를 표현하는데 사용된 비트의 수를 증가시키는 것이 바람직할 수도 있다.
다수의 서로 다른 형식간에 직접 변환할 수 있는 것이 바람직할 것인데, 이는 2개 이상의 변환을 필요로 하는 중간 형식으로 변환한 결과로서 지연시간을 짧게 할 수도 있기 때문이다. 그렇지만, 다수의 직접 변환을 처리하는 회로소자는, 보다 복잡한 것이 일반적이므로, 적은 직접 변환을 지원하는 회로소자보다는 많은 공간을 요구한다. 회로가 클수록 저전력 디바이스에서는 바람직하지 않을 수 있는 소비전력이 보다 높은 디바이스가 보다 커지게 될 수 있다.
제1 측면에 따른 데이터 처리장치는, 부동소수점 가산기 회로소자; 및 정수, 고정 소수점수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 부동소수점 변환 회로소자를 구비하고, 상기 부동소수점 변환 회로소자는 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다르다.
제2 측면에 의하면, 부동소수점 가산기 회로소자와, 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다른 부동소수점 변환 회로소자를 구비하는, 데이터 처리장치의 작동방법은, 상기 데이터 처리장치에서 행한, 정수, 고정 소수점수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력을 수신하는 단계; 및 상기 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 단계를 포함한다.
제3 측면에 의하면, 데이터 처리장치는, 부동소수점 가산을 행하기 위한 수단; 및 정수, 고정소수점 수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는, 부동소수점 변환을 행하기 위한 수단을 구비하고, 상기 부동소수점 변환을 행하기 위한 수단은, 상기 부동소수점 가산을 행하기 위한 수단과는 물리적으로 완전히 다르다.
본 발명은, 아래의 첨부도면에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에 따라 회로소자의 구성을 개략적으로 도시한 도면이고,
도 2는 일 실시예에 따라 입력의 자리를 정규화하는데 적절한 회로소자를 개략적으로 도시한 도면이고,
도 3은 일 실시예에 따라 각종 입력을 조정하는 방법을 도시하는 도면이고,
도 4는 일 실시예에 따라 정규화된 자리를 라운딩하는데 적절한 회로소자를 개략적으로 도시하는 도면이고,
도 5는 일 실시예에 따라 서로 다른 형식이 복수 있는 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 방법을 설명하는 흐름도이고,
도 6은 일 실시예에 따라 입력의 자리를 정규화하는 처리, 지수를 생성하는 처리, 상기 정규화된 자리에 관해 라운딩(rounding)을 행하는 처리, 및 상기 지수를 조정하는 처리를 설명하는 흐름도이고,
도 7은 일 실시예에 따라 변환된 출력을 발생시키기 위해서 입력으로부터 생성된 서로 다른 값을 조합하는 처리를 설명하는 흐름도다.
도 1은 일 실시예에 따라 회로소자의 구성을 개략적으로 도시한 도면이고,
도 2는 일 실시예에 따라 입력의 자리를 정규화하는데 적절한 회로소자를 개략적으로 도시한 도면이고,
도 3은 일 실시예에 따라 각종 입력을 조정하는 방법을 도시하는 도면이고,
도 4는 일 실시예에 따라 정규화된 자리를 라운딩하는데 적절한 회로소자를 개략적으로 도시하는 도면이고,
도 5는 일 실시예에 따라 서로 다른 형식이 복수 있는 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 방법을 설명하는 흐름도이고,
도 6은 일 실시예에 따라 입력의 자리를 정규화하는 처리, 지수를 생성하는 처리, 상기 정규화된 자리에 관해 라운딩(rounding)을 행하는 처리, 및 상기 지수를 조정하는 처리를 설명하는 흐름도이고,
도 7은 일 실시예에 따라 변환된 출력을 발생시키기 위해서 입력으로부터 생성된 서로 다른 값을 조합하는 처리를 설명하는 흐름도다.
부동소수점(FP)은, 적은 수의 비트를 사용한 실수를 근사화시키는 유용한 방식이다. IEEE 754-2008 부동소수점 표준은, 부동소수점 수의 복수의 서로 다른 형식을 제안하고 있다. 예들로서는, 이진 64(배정밀도, 즉 DP라고도 알려짐), 이진 32(단정밀도, 즉 SP라고도 알려짐), 및 이진 16(반정밀도, 즉 HP라고도 알려짐)이 있다. 상기 숫자 64, 32 및 16은 형식마다 요구된 비트들의 수를 말한다.
부동소수점 수들은, 과학수업에서 배운 "과학적 표기법"과 아주 유사하고, 이때, 네가티브 2백만 대신에, -2.0×106을 기록하는 것이 가능하다. 이러한 숫자의 부분들은, 부호(이 경우에는 -), 자리(2.0), 지수의 베이스(base)(10), 지수(6)다. 이 부분들 모두는 부동소수점 수로 아날로그이긴 하지만, 차이점이 있고, 그것의 가장 중요한 점은 그 구성 부분들이 2진수로서 기억된다는 것이고, 상기 지수의 베이스는 항상 2다. 부동소수점 수는, 일반적으로, 부호 비트, 약간의 수의 바이어스된 지수 비트들, 및 약간의 수의 소수부 비트들로 구성된다:
부호는 음수일 경우는 1이고 양수일 경우는 0이다. 제로를 포함하는 매 수마다 부호를 갖는다.
상기 지수가 편향되어 있고, 이것이 의미하는 것은, 참된 지수가 그 숫자에 기억된 것과 다르다는 것이다. 예를 들면, 편향된(biased) SP 지수의 길이는 8비트이고, 범위는 0 내지 255다. 지수 0과 255는 특수한 경우이지만, 그 밖의 모든 지수는 바이어스 127을 갖는 것이고, 이는 참된 지수가 상기 편향된 지수보다 127작은 것을 의미한다. 가장 작은 편향된 지수는 1이고, 이는 -126의 참된 지수에 해당한다. 최대 편향된 지수는 254이고, 이는 127의 참된 지수에 해당한다. HP와 DP 지수는 같은 방식으로 작용하고, 이때의 바이어스들은 상기 표에 나타내어 있다. SP지수 255(또는 DP지수 2047, 또는 HP지수 31)는 무한대와 NaN들(not a number)이라고 부르는 특수기호를 위해 유보되어 있다. (포지티브 또는 네가티브일 수 있는) 무한대의 소수부는 제로다. 지수 255 및 논제로 소수부의 임의의 수는 NaN이다. 무한대는 포화값을 제공하여서, 그것은 실제로 "이 계산에 의해 이 형식으로 표현할 수 있는 것보다 큰 수로 된"과 같은 어떤 것을 의미한다. NaN들은, 실수에 관해 수학적으로 정의되지 않은 연산, 예를 들면 0으로 나누거나 또는 음수의 제곱근을 취하는 연산으로 반환된다.
상기 형식 중 임의의 형식에 있어서, 지수 0는, 비정규 수들과 제로들을 위해 유보되어 있다. 정규수는, 부호×1.소수부×2e의 값을 표기하고, 여기서 e는 상기 편향된 지수로부터 계산된 참된 지수다. 1.소수부의 항을 자리(significand)라고 부르고, 그 1은 부동소수점 수의 일부로서 기억되지 않지만, 대신에 상기 지수로부터 추론된다. 0이외의 모든 지수들과 최대 지수는, 1.소수의 형태의 자리를 가리킨다. 지수 0은 0.소수부의 형태의 자리와, 주어진 형식의 1-바이어스와 같은 참된 지수를 가리킨다. 이러한 수를 비정규라고 부른다(역사상 이 수들을 비정상(denormal)이라고 하였지만, 현대의 사용법은 비정규(subnormal) 항을 선호한다).
0인 지수와 소수부 양쪽의 수는 0들이다. 아래의 표의 수는 HP형식의 예다. 그 엔트리들은 2진수이고, 여기서는 판독능력을 향상시키기 위해서 '_'문자가 첨가되었다. 이때, 비정규 엔트리(지수가 0인 표의 4번째 라인)와 다른 자리를 발생시킨다
부동소수점 구현이 복잡한 큰 부분은 비정규에 기인하므로, 그들은 마이크로코드나 소프트웨어에 의해 종종 처리될 수 있다.
부호를 처리하는 방식을 부호 절대값(sign-magnitude)이라고 부르고, 그것은 컴퓨터에 정수를 기억하는 통상의 방식과는 다르다(2의 보수). 부호 절대값 표기법에 있어서, 같은 수의 양 및 음의 버전은 부호비트에서만 다르다. 부호비트와 3개의 자리 비트로 이루어진 4비트 부호 절대값 정수는 아래와 같이 플러스 1 및 마이너스 1을 표기할 것이다:
+1=0001
-1=1001
2의 보수 표기법에 있어서, n비트 정수 i는 2진수의 n=1비트 값 2n+i의 저차 n비트들로 표기되기 때문에, 4비트 2의 보수 정수는 아래와 같이 플러스 1 및 마이너스 1을 표기할 것이다:
+1=0001
-1=1111
2의 보수 형식은, 실제로 컴퓨터 산술을 간략화하기 때문에 부호있는 정수에 범용적이다.
고정소수점 수는, 정수와 유사하거나 심지어 정수와 같기도 하지만, 실제로 특정한 수의 소수부 비트들을 갖는 값을 표기한다. 센서 데이터는 고정 소수점 형식으로 되어 있는 경우가 많다. 고정 소수점 수에 의해, 프로그래머는, "이진점", 즉 상기 정수와 상기 수의 소수부 사이의 구분자를 추적하는 경우가 많고, 또한 상기 비트들이 정확한 자리에 있도록 상기 수를 일정하게 이동시켜야 한다.
대부분의 부동소수점 연산은, 마치 제한되지 않은 범위와 정밀도로 상기 연산을 행하는 것처럼 IEEE-754 표준에 의거하여 계산되고 나서 부동소수점 수에 맞추어 라운딩될 필요가 있다. 그 계산이 부동소수점 수와 정확히 일치하면, 그 값은 항상 되돌려지지만, 통상 그 계산은 2개의 연속적인 부동소수점 수 사이에 있는 값을 야기한다. 라운딩은 그 2개의 연속적인 수 중 어느 쪽이 반환되어야 하는지를 선택하는 처리다.
라운딩 모드라고 하는 라운딩 방식은 많이 있다; 이 모드들의 6개의 예가 아래에 있다.
하나의 공통 구현은, 상기 연산을 행하고, 절단 값(즉, 부동소수점 수에 맞춘 값)과 나머지 비트 모두를 보고 나서, 특정 조건이 성립하면 그 절단 값을 조절하기 위한 것이다. 이들 계산은 모두 아래의 3개의 값에 근거한다.
L - (least) 상기 절단 값의 최하위 비트
G - (guard) 다음 최상위 비트(즉, 상기 절단(truncation)에 포함되지 않은 제1 비트)
S - (sticky) 상기 절단의 일부가 아닌 나머지 모든 비트들의 논리적 OR
이들 3개의 값과 상기 절단 값이라면, 다음의 표에 따라 상기 정확히 라운딩된 값을 계산할 수 있다:
예를 들면, 2개의 4비트 자리를 곱셈하고 나서, 4비트 자리로 라운딩하는 것을 생각한다.
sig1 = 1011(십진수 11)
sig2 = 0111(십진수 7)
곱셈에 의해:
sig1×sig2=1001_101(십진수 77)
상기 절단된 4비트 결과는 상기 결과- 1101에서 4개의 최우측 비트다. 상기 절단된 4비트 결과(제1 디지트 - 1)의 최하위 비트를 L로 하고, 다음 비트(1)을 G로 하며, S를 나머지 비트들의 논리적 OR이다, 즉 S=(0│1)=1이다. 라운드하기 위해서는, 상기 표의 라운딩 모드와 게산에 따라 우리의 4비트 결과(1001)를 조절한다. 그래서, 이를테면 RNA 라운딩 모드에, G가 세트되어서 1001+1=1010를 반환해서 증분한다. RX라운딩 모드의 경우, G│S가 참이어서 L을 1로 세트하고(그것은 이미 1이기 때문에, 이 경우에는 변화가 없다) 1001을 반환한다.
라운딩을 행하는 보다 빠른 방식은, 자리 가산의 일부로서 라운딩 상수를 삽입하는 방식이 있다. 이것이 어떻게 효과가 있는지를 알기 위해서, 달러와 센트로 수들을 가산하고 나서 달러로 라운딩하는 것을 생각해본다. 가산하면,
$1.27 + $2.35 = $3.62
합 $3.62는 $3보다 $4에 보다 가까워서, 라운드 투 니어스트(round-to-nearest) 모드 양쪽 다 $4를 반환해야 한다는 것을 안다. 그 수를 2진법으로 표기하였으면, 상술한 상기 L, G, S방법을 사용하여 같은 결과를 달성할 수 있었다. 그렇지만 5십 센트만을 가산하고 나서 그 결과를 절단한다고 가정한다.
$1.27 + $2.35 + $0.50(라운딩 삽입)=$4.12
단지 합($4.12)으로부터 달러량($4)을 반환했으면, RNA 라운딩 모드를 사용하여 정확히 라운딩하였다. $0.50 대신에 $0.99를 가산했으면, RP 라운딩 모드를 사용하여 정확히 라운딩했을 것이다. RNE는 약간 더 복잡하다: $0.50를 가산하고, 절단하고 나서, 나머지 센트를 본다. 나머지 센트가 논제로인 경우, 상기 절단된 결과는 정확하다. 나머지가 0센트이면, 상기 삽입전에 2달러량 사이에 정확히 있으므로, 짝수 달러량을 선택한다. 2진 부동소수점의 경우, 이것은, 달러량의 최하위 비트가 0으로 설정되게 된다.
3개의 수를 가산하는 것은 2개의 수를 가산하는 것보다 약간 느릴 뿐이므로, 2개의 자리를 가산하고, L, G 및 S를 검사하고 나서, 라운딩 모드에 따라 우리의 결과를 증분한 경우보다 삽입 라운딩을 사용하여서 훨씬 보다 빨리 상기 라운딩된 결과를 얻는다. 부동소수점 수의 경우, 상기 라운딩 삽입은, 3개의 서로 다른 값 중 하나이고, 그 값은 상기 라운딩 모드와 (때때로) 상기 결과의 부호에 좌우된다.
RNA과 RNE 양쪽은, 우리에게 G위치에 1을 삽입하기를 요구한다(이것은, 상기 달러와 센트의 예로 $0.50을 가산하는 것과 같다).
RP 및 RM 라운딩은 상기 모드뿐만 아니라 부호에도 좌우된다. RP는 포지티브 결과를 (포지티브 무한대로) 자리 올림하지만, 네가티브 결과를 절단한다(다시 포지티브 무한대로 라운딩한다). 마찬가지로, RM은 네가티브 결과를 (네가티브 무한대로) 자리 올림하지만, 포지티브 결과를 절단한다(다시 네가티브 무한대로 라운딩한다). 이렇게 하여, RM 및 RP를, 상기 부호가 라운딩 방향과 일치할 때 자리올림(RU: round up)하는 경우와, 상기 부호가 라운딩 삽입과 다를 때 절단(RZ)하는 경우의 2개의 경우로 분할한다. RU의 경우, G비트 위치와 논리적으로 S에 기여하는 위치마다 1을 삽입한다(이것은 달러와 센트의 예에서 $0.99를 가산하는 것과 같다).
RZ 및 RX 모드의 경우와, RZ모드로 감소되는 RP 및 RM 모드의 경우에, 우리는 0들을 삽입한다.
대부분의 라운딩 모드의 경우, 라운딩 삽입을 가산하고 나서 절단하는 것에 의해 상기 정확히 라운딩된 결과를 준다. 2개의 예외는, 상기 가산 후 우리에게 G와 S의 검사를 요구하는 RNE와 RX다. RNE의 경우, G와 S 양쪽이 0일 경우 L을 0으로 설정한다. RX의 경우, G 또는 S가 논제로일 경우 L을 1로 설정한다.
제1 측면의 부동소수점 변환 회로소자는, 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다르다(예를 들면, 분리되어 있다). 상술한 것처럼, 상기 부동소수점 변환 회로소자가 상기 가산기 회로소자의 일부를 형성하는 것이 일반적인데, 그 이유는 특별한 형식의 부동소수점 수에의 변환이 부동소수점 수에 관한 ADD연산을 행할 때 필요로 하는 경우가 많이 있을 수도 있기 때문이다. 그렇지만, 상기 부동소수점 가산기 회로소자의 나머지가 큰 경우가 많고, 변환을 행하기 위해서 전체 유닛에 전원을 투입하는 것은 낭비다. 변환을 행하는 상기 회로소자와 분리함으로써, 회로 크기를 전체적으로 감소시키는 것이 가능하다. 복수의 서로 다른 형식은, 정수, 고정소수점 수, 및 상기 출력의 상기 형식보다 작은 형식을 갖는 부동소수점 수를 포함하기도 한다. 그러므로, 부동소수점 변환 회로소자는, 적어도 임의의 입력에 대한 이들 형식을 접수한다. 이러한 다양한 서로 다른 형식을 접수함으로써, 상기 부동소수점 변환 회로소자는 입력을 중간 형식으로 변환하고 나서 그 중간 형식을 상기 출력 형식으로 변환해야 하지 않고 변환을 행할 수 있다.
상기 형식들의 목록은, 비정규 부동소수점 수를 포함하기도 한다. 따라서, 변환이 행해질 수 있기 전에 특별한 방식으로 입력이 포맷되는 것이 필요하기 보다는 보다 큰 범위의 입력들의 변환을 행하는 것도 가능할 수도 있다.
비정규 부동소수점 수를 정규화하는 방식이 몇 개가 있을 수도 있지만, 일부의 실시예에서, 비정규 부동소수점 수인 입력에 응답하여, 최상위 비트가 1이도록 입력을 여러 회 이동시켜서 정규화된 자리를 발생시켜도 된다.
상기 부동소수점 변환 회로소자는, 음의 정수나 고정소수점 입력을 반전 가능한 인버터 회로소자; 그 입력에서 선두의 1의 위치를 결정 가능한 카운트 선두의 제로 회로소자; 및 그 입력을 정규화 가능한 좌측 시프터 회로소자; 및 시프트된 입력, 라운딩 모드에 따른 라운딩 상수, 및 그 시프트된 입력이 반전되었을 경우의 캐리 입력(carry-in)을 조합하기 위한 정수 가산기 회로소자 중, 하나 이상을 구비하여도 된다. 이러한 회로소자를 사용하여 적은 양의 회로공간을 사용한 부동소수점 변환을 행하여도 된다. 상기 정수 가산기 회로소자의 캐리 입력 값의 이용은, 음수로부터의 변환이 효율적으로 처리되어도 된다는 것을 의미한다. 특히, 음의 정수를 표시하는 일 방법은, 2의 보수 표현법을 사용하는 것이다. 1의 보수를 취하고(즉, 상기 수의 2진 표현법으로 0들과 1들을 반전시키고) 나서 1을 가산함으로써 하나의 수와 그것의 2의 보수 표현법간에 변환하는 것이 가능하다. 부동소수점 수는, 음수를 표현하는데 2의 보수 표현법을 사용하지 않는다. 따라서, 상기 부동소수점 변환 회로소자에의 상기 입력이 2의 보수 형태에 있는 경우, 이미 설명한 것처럼, 이것을, 상기 1의 보수 형태를 취하고 1을 가산하여서 행한다. 상기 정수 가산기 회로소자가 라운딩을 이루기 위해서 이미 라운딩 상수를 가산하여도 되므로, 그 라운딩 상수가 가산될 때까지 상기 1을 가산하는 것을 지연시키고 상기 라운딩 가산을 행하는 상기 정수 가산기에 캐리 입력 값을 제공하여서 양쪽의 가산을 동시에 행하는 것이 가능하다. 이것은 상기 처리에서 추가의 스텝을 저감하고, 또한 제2 가산유닛을 상기 장치에 제공시키는 것을 저감한다.
상기 부동소수점 변환 회로소자는, 라운딩 상수를 상기 정규화된 자리에 가산하여서 라운딩된 자리를 발생시키기 위해 상기 정규화된 자리를 라운드하는 라운딩 회로소자를 구비하여도 된다. 특히, 상기 라운딩 회로소자는 삽입 라운딩을 행하여도 된다. 따라서, 그 수 자체의 어떠한 해석도 요하지 않고 라운딩을 실시하여도 된다. 이 때문에, 상기 라운딩 처리는, 간단하고 빠르게 이루어질 수도 있다.
상기 라운딩 회로소자는, 라운딩 모드에 따라 상기 라운딩 상수를 생성하기 위한 회로소자이어도 된다. 다수의 서로 다른 라운딩 모드와 그들의 동작은 이미 기술되어 있다. 상기 라운딩 모드에 따라 상기 라운딩 상수를 생성함으로써, 다양한 서로 다른 라운딩 모드를 지원하기 위해 그 라운딩 회로소자를 사용하는 것이 가능하기도 하다.
상기 라운딩 회로소자는, 상기 라운딩 모드가 0으로 라운드되는가 아닌가에 따라 상기 라운딩 상수를 생성하여도 된다. 또한, 상기 라운딩 회로소자는, 상기 라운딩 모드가 자리 올림인가 아닌가에 따라 상기 라운딩 상수를 생성하여도 된다. 끝으로, 상기 라운딩 상수는, 상기 출력의 형식에 따라 생성되어도 된다. 상기 라운딩 상수는 이들 라운딩 모드 중 어느 쪽의 라운딩 모드가 사용되는지(이들 라운딩 모드 중 임의의 것이 사용되는 경우)에 따라 달라질 수도 있다. 또한, 상기 라운딩 상수는 상기 출력의 형식에 따라 달라져도 된다. 상기 출력의 형식은, 어떤 수를 표현하는데 사용된 비트의 수 및/또는 실제 이들 비트의 사용방법을 가리키기도 한다.
일례로서, 상기 라운딩 회로소자는, 상기 출력이 32비트 부동소수점 수인 경우와 상기 라운딩 방법이 라운딩 투 제로가 아닌 경우를 나타내는 제1 값; 상기 출력이 32비트 부동소수점 수인 경우와 상기 라운딩 방법이 자리 올림인 경우를 나타내는 제2 값; 상기 출력이 64비트 부동소수점 수인 경우와 상기 라운딩 방법이 라운딩 투 제로가 아닌 경우를 나타내는 제3 값; 및 상기 출력이 64비트 부동소수점 수인 경우와 상기 라운딩 방법이 자리 올림인 경우를 나타내는 제4 값에 따라, 라운딩 상수를 생성하여도 된다. 예를 들면, 상기 라운딩 상수는 이들 4개의 값의 연속이어도 된다.
상기 라운딩 상수는 64비트 수이어도 된다. 따라서, 32비트와 64비트의 양쪽 입력을 라운드하는 것이 가능할 수도 있다. 다른 실시예에서, 상기 라운딩 상수는 32비트 수이어도 된다.
일례에서, 상기 라운딩 회로소자는, 24회 출력된 값 0; 상기 제1 값; 28회 출력된 상기 제2 값; 상기 제3 값과 상기 제2 값의 논리적 OR을 행하는 제1 결과; 10회 출력된 제2 결과의 순서로 출력하여서 상기 라운딩 상수를 생성하기 위한 것이고, 상기 제2 결과는, 상기 제4 값과 상기 제2 값의 논리적 OR을 행한 결과다.
상기 라운딩 회로소자는, 상기 라운딩 상수를 상기 정규화된 자리에의 상기 가산이 오버플로우를 발생시켰는지의 여부를 나타내는 캐리 출력(carry out) 값을 출력하기 위한 회로소자다. 예를 들면, 상기 캐리 출력 값은, 상기 라운딩 상수의 상기 정규화된 자리에의 가산이 상기 가산을 행하는 상기 회로소자가 표현할 수 있는 가장 큰 수보다 컸는지 아닌지를 나타내기도 한다.
상기 부동소수점 변환 회로소자는, 부동소수점 수를 발생시키기 위해서, 라운딩된 자리, 지수 또는 조정된 지수 중 하나, 및 부호 비트를 조합하는 조합 회로소자를 구비하기도 한다. 상기 캐리 출력 값의 존재에 따라(즉, 상기 회로소자가 표현할 수 있는 것보다 상기 가산의 결과가 컸었는지 아닌지에 따라), 상기 라운딩된 자리는 상기 지수나 상기 조정된 지수 중 어느 한쪽과 조합되어도 된다. 예를 들면, 일부의 실시예에서, 상기 조합 회로소자는, 상기 캐리 출력 값이 오버플로우가 일어나지 않은 것을 나타내는 경우 상기 라운딩된 자리와 상기 지수를 조합하여도 되고, 상기 캐리 출력 값이 오버플로우가 일어난 것을 나타내는 경우 상기 라운딩된 자리와 상기 조정된 지수를 조합하여도 된다.
상기 부동소수점 변환 회로소자는, 상기 입력을 수신하고, 상기 시프터 회로소자를 사용하여 상기 입력을 시프트하여서 정규화된 자리를 생성하는 자리 구성 회로소자를 구비하여도 된다. 추가로, 2의 보수 형식인 입력에 응답하여, 상기 자리 구성 회로소자는, 상기 입력의 비트들을 반전시켜서 상기 정규화된 자리를 생성하기 위한 회로소자이어도 된다. 전술한 것처럼, 일부의 실시예에서, 2의 보수 형식으로부터 자연적 표현으로의 완전 변환도 1의 가산을 포함하기도 한다. 이것은, 어떠한 나중의 가산 스텝에서 상기 캐리 입력 값의 값을 '1'로 설정하여서 이루어질 수 있다.
상기 부동소수점 변환 회로소자는, 상기 입력을 수신하고, 상기 출력의 정밀도를 갖는 지수 바이어스에 따라 지수를 제공하는 지수 구성 회로소자를 구비하여도 되고, 상기 부동소수점 수인 상기 입력에 응답하여, 상기 지수 구성 회로소자는, 상기 출력의 상기 정밀도를 갖는 상기 지수 바이어스와 상기 입력의 지수를 가산하고, 상기 여러 회와 상기 입력의 정밀도를 갖는 지수 바이어스를 감산함으로써, 상기 지수를 제공하기 위한 회로소자이고; 0인 상기 입력의 상기 지수에 응답하여, 상기 지수 구성 회로소자는, 1을 가산하여서 상기 지수를 조정하기 위한 회로소자이고, 부동소수점 수가 아닌 상기 입력에 응답하여, 상기 지수 구성 회로소자는 상기 출력의 상기 정밀도를 갖는 상기 지수 바이어스, 상기 입력의 비소수부 비트의 수, 상기 여러 회를 가산하고, 1을 감산하여서, 상기 지수를 제공하기 위한 회로소자다.
일부의 실시예에서, 상기 자리 구성 회로소자는, 상기 입력이 소정수의 비트를 갖도록 상기 입력을 조정하기 위한 회로소자이어도 된다. 이것은, "패딩(padding)"을 통해 이루어질 수 있다. 하위 비트들을 가산함으로써, 정확한(소정의) 수의 총 비트를 갖게 상기 수를 만들 수 있다.예를 들면, 하위 비트들은 64비트 수를 발생시키기 위해서 32비트 수에 가산되어도 된다. 마찬가지로, 비트들은, 64비트 수를 발생시키기 위해서 16비트 수에 가산되어도 된다. 그리고, 이 수정된 64비트 수는 상기 입력이 되어도 된다.
도 1은 일 실시예에 따른 회로소자의 구성을 개략적으로 도시한 것이다. (부동소수점 변환 회로소자라고도 하는) 부동소수점 변환장치(10)는, 특별한 형식의 입력을 수신한다. 그 부동소수점 변환장치는, 서로 다른 형식의 출력을 발생시키도록 상기 입력을 변환한다. 그리고, 이 출력은, 물리적으로 상기 부동소수점 변환장치(10)와 분리된, 예를 들면 (여기서는 부동소수점 가산기 회로소자라고도 하는) 부동소수점 가산기(20)에 제공되어도 된다. 이 때문에, 여기서는, 부동소수점 변환장치(10)는 서로 완전히 다른 부품으로서 구현되는 것을 주목한다. 부동소수점 변환장치(10)는, 상기 자리 구성유닛(30)과 상기 지수 구성유닛(40)에 보내진 상기 입력을 수신한다. 상기 자리 구성유닛(30)은, 스텝 1a에서 상기 입력을 수신하고 정규화된 자리를 생성한다. 전술한 것처럼, 상기 자리는, 표현되는 수의 유효 자릿수를 포함한다. 달리 말하면, 상기 자리는 상기 지수를 제외하는 수의 일부이다. 상기 자리 구성유닛(30)은 정규화된 자리를 발생시킨다. 달리 말하면, 상기 자리 구성유닛(30)의 출력은, 수 1을 가장 유효한 자릿수로서 포함한다. 상기 자리를 정규화하고 이 값을 상기 라운딩 유닛(50)에 넘겨 줌으로써, 상기 라운딩 유닛(50)은, 형식이 유사한 수에 관해 연산할 수 있다. 따라서, 상기 라운딩 유닛(50)은, 형식 서로 다른 복수의 서로 다른 입력을 처리할 필요가 없다.
스텝 2a에서는, 상기 라운딩 유닛(50)은 라운딩된 정규화 자리를 발생시키기 위해서, 상기 자리 구성유닛(30)에서 발생시킨 상기 정규화된 자리에 관해 라운딩을 행한다.
부동소수점 변환장치(10)에의 입력도, 상기 지수 구성유닛(40)에 건네진다. 상기 지수 구성유닛(40)은, 스텝 1b에서 상기 출력 수의 지수가 무엇인지를 판정하기 위해서 2개의 서로 다른 식 중 하나를 사용하여도 된다. 또한, 상기 자리 구성유닛(30)과 상기 지수 구성유닛(40) 각각은 거의 병렬로 연산하여도 된다. 상기 지수 구성유닛(40)의 출력은, 상기 지수 조정유닛(60)과 상기 조합유닛(70) 양쪽에 건네진다.
상기 지수 조정유닛(60)은, 스텝 2b에서 상기 지수 구성유닛(40)으로부터 구성되어 있던 지수를 수신하고 1을 이 값에 가산하여서 조정된 지수를 발생시킨다. 이렇게 되는 조정된 지수는, 출력으로서 상기 조합유닛(70)에 건네진다. 이때, 상기 라운딩 유닛(50)과 상기 지수 조정유닛(60)은 각각 병렬로 연산해도 된다.
상기 조합유닛(70)은, 입력으로서, 상기 지수 구성유닛(40)이 산출한 상기 지수와, 상기 지수 조정유닛(60)이 산출한 상기 조정된 지수와, 상기 라운딩 유닛(50)이 생성한 상기 라운딩된 정규화 자리를 수신한다. 상기 라운딩 유닛(50)으로부터 상기 라운딩된 정규화 자리의 적어도 일부는 상기 지수 구성유닛(40)으로부터의 상기 지수 또는 상기 지수 조정유닛(60)으로부터의 상기 조정된 지수 중 어느 한쪽과 조합되어, 상기 변환된 수인 상기 출력을 발생시킨다. 상기 조합유닛(70)으로부터의 출력은, 예를 들면, 상기 부동소수점 가사산기(20)에 건네지기도 한다.
부동소수점 변환장치(10)는, 다양한 서로 다른 형식으로부터 및 다양한 서로 다른 형식으로 변환 가능하다. 특히, 도 1에 도시된 실시예에서 부동소수점 변환장치(10)는, 16비트 정수, 32비트 정수, 64비트 정수, 부동소수점 수, 또는 고정소수점 수를 입력으로 할 수 있다. 정수 입력은, 부호 있거나 부호 없는 입력 중 어느 한쪽이어도 된다. 상기 입력이 고정소수점 수나 정수인 경우, 상기 출력은 표준 부동소수점 형식 중 임의의 형식이어도 된다. 상기 입력이 부동소수점 수인 경우, 상기 출력은 어떠한 보다 큰 형식의 부동소수점 수이어도 된다(예를 들면, 반정밀도 또는 단정밀도 부동소수점 수는 배정밀도 수로 변환되어도 되거나, 반정밀도 수가 단정밀도 수로 변환되어도 된다). 이것 모두는, 동일한 회로소자를 사용하여 이루어져도 된다. 여기서 설명된 부동소수점 변환장치(10)는, 다른 제안된 해결책에 대해 특히 작고 빠른 이점이 있다. 특히, 상기 부동소수점 변환장치(10)의 지연시간은 2사이클로서 적어도 된다.
상기 자리 구성유닛(30), 상기 지수 구성유닛(40), 상기 라운딩 유닛(50) 및 상기 지수 조정유닛(60) 각각에서 행한 처리들은, 4개의 서로 다른 스텝으로서 간주되어도 되고, 그 중의 일부는 병렬로 행해져도 된다. 상기 자리 구성유닛(30)은, 처리 1a를 실행한다고 말해져도 되고, 상기 지수 구성유닛(40)은 처리 1b를 행한다고 말해져도 되고(처리 1a 및 1b는 병렬로 실행되어도 된다는 것을 알 것이다), 상기 라운딩 유닛(50)은 처리 2a를 행한다고 말해져도 되고, 상기 지수 조정유닛(60)은 처리 2b를 행한다고 말해져도 된다(또, 처리 2a 및 2b는 병렬로 실행된다). 그렇지만, 이때, 이 스텝들의 분포는 예시일 뿐이고, 여기서 설명된 실시예들은 거의 또는 완전히 병렬로 특별한 처리를 행하여도 되지만, 그 밖의 실시예에서, 상기 처리들은 순차적으로 행해져도 되거나, 다른 방식으로 병렬화되어도 된다.
도 2는 일 실시예에 따라 상기 자리 구성유닛(30)을 도시한 것이다. 전술한 것처럼, 상기 자리 구성유닛(30)은 스텝 1a를 행한다고 말해져도 된다. 특히, 상기 자리 구성유닛(30)은, 상기 입력으로부터 정규화된 자리를 생성하도록 구성된다. 상기 자리 구성유닛(30)은, 상기 입력을 수신하는 멀티플렉서(80)를 구비한다. 상기 멀티플렉서(80)는 일관된 형식을 갖도록 입력들을 변환하도록 구성된다. 특히, 상기 멀티플렉서(80)의 출력은 64비트를 갖는다. 이것은, 64비트보다 적을 수도 있는 입력을 패딩에 의해 이루어져도 된다. 추가로, 상기 패딩은, 주목 비트가 모두 정렬되도록 최하위 비트에서 발생하기도 한다. 접수된 서로 다른 입력과, 상기 변환이 발생하는 방식은, 도 3을 참조하여 도시되어 있다.
상기 자리 구성유닛(30)에의 입력이 음의 정수 또는 음의 고정소수점 수에 해당하는 경우, 먼저 neg_convert의 값이 1로 설정되고 멀티플렉서(90)가 출력으로서, 멀티플렉서(80)의 출력의 반전된 버전을 출력으로서 선택하도록 구성된다. 그 변환은, 인버터(100)에 의해 이루어진다. 달리 말하면, 상기 입력이 2의 보수 형식인 경우, 인버터(100)를 사용하여, 상기 1의 보수는, 멀티플렉서(90)에 의해 취해져 출력된다. 그렇지 않은 경우, 상기 멀티플렉서(80)의 원래의 형태는, 멀티플렉서(90)에 의해 출력된다. 추가로, 상기 값 neg_convert는 상기 입력이 2의 보수 형식이었는지 아닌지를 나타내기 위해서 상기 멀티플렉서(90)에 의해 출력된다. 따라서, 상기 멀티플렉서(90)의 출력은 2의 보수 형식이 아니다. 멀티플렉서(90)에서 출력한 상기 결과로 얻어진 64비트 값을, ls_in [63:0]라고 한다. 자연적인 형태로의 변환은 이 스테이지에서 전체적으로 완전하지 않은데, 그 이유는 2의 보수 형식으로부터 자연적인 형식으로의 변환도 상기 값 1이 가산되는 것을 요구하기 때문이다. 그렇지만, 이 가산은 나중의 스테이지에서 이루어진다.
도 2에 도시된 실시예에서는, 선두의 0들의 수를 카운터(105)가 카운트한다. 그리고, 그 값은 lzc[5:0]의 값으로서 좌측 시프터(110)에 보내지고, 그 좌측 시프터(110)는 멀티플렉서(90)에서 출력한 값을 상기 lzc[5:0]의 값으로 나타낸 여러 회 좌측으로 시프트 한다. 달리 말하면, 상기 멀티플렉서(90)에서 출력한 값은 가장 유효한 자릿수가 1과 같아질 때까지 좌측으로 시프트된다. 카운터(105) 등의 특정한 카운터는 필요하지 않은데, 그 이유는, 선두의 0들의 수가 상기 시스템에서 다른 회로소자에 의해 제공되어도 되기 때문이다. 예를 들면, 명령어들을 복호화하는 디코딩 유닛은, 상기 좌측 시프터(110)에 선두의 0들의 수를 제공하여도 된다.
이 처리의 결과는, 상기 라운딩 유닛(50)에 건네지는 정규화 자리다.
도 3은 일 실시예에서, 64비트의 일관된 형식을 갖도록 상기 멀티플렉서(80)에서 입력을 변환할 수 있는 방법을 도시한 것이다:
반정밀도 정수의 경우, 상기 64비트 형식 숫자는, 반정밀도 입력의 상기 자리의 11비트들 다음에 53개의 0들로 구성되고,
단정밀도 수의 경우, 상기 출력은, 상기 입력의 자리의 23비트들 다음에 41개의 0들로 구성되고,
16비트의 부호 있거나 부호 없는 정수나 고정소수점 수의 경우, 상기 출력은, 16비트 수 다음에 48개의 0들로 구성되고,
32비트의 부호 있거나 부호 없는 정수나 고정소수점 수의 경우, 상기 출력은, 32비트 수 다음에 32개의 0들로 구성되고,
64비트의 부호 있거나 부호 없는 정수나 고정소수점 수의 경우, 상기 입력은, 상기 출력으로서 직접 출력된다.
전술한 것처럼 상기 입력은 이들 방식 중 하나로 상기 멀티플렉서(80)에 의해 변환되고, 상기 출력은 멀티플렉서(90)와 인버터(100)에 송신된다.
도 4는 일 실시예에 따른 라운딩 유닛(50)을 도시한 것이다. 도 4에 도시된 실시예에서, 상기 라운딩 유닛은, 정수 가산기(120)를 구비한다. 상기 정수 가산기는, 입력으로서, 상기 자리 구성유닛(30)의 좌측 시프터(110)로부터 출력된 상기 정규화 자리, 라운딩 상수 cvt_round[63:0], 및 상기 자리 구성유닛(30)에서의 멀티플렉서(90)에 의해 결정된 neg_convert의 값을 수신한다.
캐리 입력 값으로서 상기 값 neg_convert을 상기 정수 가산기(120)에 제공함으로써, 2의 보수 형식에 있는 입력을 변환하는 것이 가능하다. 초기의 스텝은, 상기 자리 구성유닛(30)에서의 상기 멀티플렉서(90)를 사용하여 발생하고, 이때의 입력은 반전된다. 상기 캐리 입력 값을 사용하여 상기 정수 가산기(120)에서의 1을 가산하는 가산 스텝을 행함으로써, 단일 정수 가산기만이 필요하다. 이때, 상기 자리 구성유닛(30)에서의 상기 멀티플렉서(90)에의 입력이 2의 보수 형식에 있지 않는 경우, 상기 neg_convert의 값은 제로이기 때문에, 상기 라운딩 유닛(50)의 정수 가산기(120)에 캐리 입력 값이 제공되지 않는다.
이제, 상기 라운딩 상수 cvt_round[63:0]의 구성을 설명한다. 도 4에 도시된 실시예들에서, 상기 삽입 라운딩의 처리는, 상기 라운딩을 행하기 위해서 사용된다. 삽입 라운딩은, 라운드될 상기 수를 해석하지 않고 라운딩이 이루어지는 기술이다. 대신에, 가산 및 절단과 같은 연산은, 그 수 자체를 해석하지 않고 행해져도 된다. 그 라운딩 상수는 다수의 파라미터에 따라 생성된다. 제1 파라미터는, 상기 출력 사이즈가 단정밀도 수(32비트)인지 또는 배정밀도 수(64비트)인지의 여부를 나타낸다. 제2 파라미터는, 상기 라운딩 모드가 제로로 라운딩하는지 아닌지를 나타낸다. 달리 말하면, 이 파라미터는, 상기 라운딩 모드가 그 수를 라운딩되게 절단하는지 아닌지를 표현한다. 제3 파라미터는, 상기 라운딩 모드가 자리 올림하는지 아닌지를 나타낸다. 달리 말하면, 이 파라미터는, 상기 라운딩 모드가 수의 최대 한계를 취하는 것을 포함하는지 아닌지를 표현한다. 그 후, 이들 파라미터를 사용하여, 4개의 서로 다른 값이 산출될 수 있다. 이들 값 각각은 단일 비트이고 다음과 같다:
sp_guard는, 상기 출력이 단정밀도인 경우와 상기 라운딩 모드가 라운딩 투 제로가 아닌 경우에 1이고; 그렇지 않은 경우 그 값은 0이며;
sp_ru는, 상기 출력이 단정밀도인 경우와 상기 라운딩 모드가 자리 올림인 경우에 1이고; 그렇지 않은 경우 그 값은 0이며;
dp_guard는, 상기 출력이 배정밀도인 경우와 상기 라운딩 모드가 라운딩 투 제로가 아닌 경우에 1이고; 그렇지 않은 경우 그 값은 0이며;
dp_ru는, 상기 출력이 배정밀도인 경우와 상기 라운딩 모드가 자리 올림인 경우에 1이고; 그렇지 않은 경우 그 값은 0이다.
그리고, 64비트 라운딩 상수 cvt_round[63:0]은, 24개의 0들 다음에, sp_gurard의 값, 이 다음에 28회 반복된 sp_ru의 값, 이 다음에 dp_guard 및 sp_ru의 값의 논리적 OR, 이 다음에 10회 반복된 dp_ru 및 sp_ru의 값의 논리적 OR을 출력하여서 생성되어도 된다.
상기 자리 구성유닛(30)에서 상기 좌측 시프터(110)에 의해 출력된 정규화 자리에 상기 라운딩 상수 cvt_round[63:0]을 가산한 결과는, 정규화 라운딩된 자리(rounded_sig[63:0])이다. 상기 정수 가산기(120)의 또 다른 출력은, 상기 정수 가산기(120)에서 행한 가산 결과가 오버플로우를 발생하는 경우에 캐리 출력 값인 카운트이어도 된다. 이 값은, 상기 지수 구성유닛(40)이 산출한 지수 또는 상기 지수 조정유닛(60)에서 발생시킨 상기 조정된 지수를 사용할 것인가를 판정하기 위해서 상기 조합유닛(70)에서 사용한다.
도 5는 일 실시예에 따라 입력에 관해 변환을 행하여서 출력으로서 부동소수점 수를 생성하는 방법에 해당하는 흐름도를 도시한 것이다.
스텝 S10에서는, 상기 입력을 수신한다. 또한, 상기 입력은, 반정밀도 부동소수점 수, 단정밀도 부동소수점 수, 16비트 정수, 32비트 정수, 64비트 정수, 16비트 고정소수점 수, 32비트 고정소수점 수 또는 64비트 고정소수점 수를 포함하는 다양한 다른 형식을 갖기도 한다. (처리 1a에 해당한) 스텝 S20에서는, 상기 입력을 사용하여 정규화 자리를 생성한다. 이것은, 예를 들면, 도 2에 도시된 것과 같은 상기 자리 구성유닛(30)을 사용하여 실행되어도 된다. (처리 1b에 해당한) 스텝 S30에서는, 상기 입력에 따라 지수를 생성한다. 그 후, (처리 2a에 해당한) 스텝 S40에서는, 상기 스텝 S20에서 발생시킨 상기 정규화 자리를 라운딩 한다. 예를 들면, 이것을, 도 4에 도시된 것과 같은 상기 라운딩 유닛(50)을 사용하여 행하여도 된다. 그 정규화 자리를 라운딩하는 스텝은, 다수의 서로 다른 방법을 사용하여도 된다. 그렇지만, 도 5에 도시된 실시예에서, 상기 라운딩 처리는, 라운딩 상수를 상기 정규화 자리에의 가산을 포함하는 삽입 라운딩을 사용한다. (처리 2b에 해당한) 스텝 S50에서는, 조정된 지수를 생성하기 위해서 스텝 S30에서 생성된 지수를 조정한다. 끝으로, 스텝 S60에서는, 상기 출력 값을 발생시키기 위해서, 스텝 S40에서 발생시킨 상기 정규화 라운드된 자리의 적어도 일부를, 상기 출력 수가 양수 또는 음수인지를 나타내는 부호 있는 비트와, 스텝 S30에서 생성된 지수나 스텝 S50에서 생성된 상기 조정된 지수 중 한쪽을 조합한다. 이 최종 스텝은, 도 7에 보다 상세히 설명되어 있다.
또한, 도 5에 도시된 실시예에서, 일련의 스텝들이 순서적으로 도시되어 있다. 그렇지만, 이것은 필요조건은 아니다. 그 밖의 실시예에서는, 스텝 S20에서의 상기 정규화 자리의 생성과 스텝 S30에서의 상기 지수의 생성이 병렬로 일어나기도 한다. 마찬가지로, 스텝 S40에서의 상기 정규화된 자리를 라운딩하는 처리와 스텝 S50에서 상기 조정된 지수의 생성이 병렬로 일어나도 된다. 또는, 그 밖의 병렬화가 적절할 수도 있다. 마찬가지로, 상기 병렬화는 완전히 병렬화되어도 되거나 거의 병렬화되어도 된다. 달리 말하면, 상기 병렬화는, 실제로, 약간의 양의 인터리빙을 포함하기도 하거나, "병렬로"가 일어나는 처리들에서 공유 변수를 이용하는 것을 포함하기도 한다.
도 6은, 일 실시예에 따라, 입력의 자리를 정규화하는 처리, 지수 생성 처리, 상기 정규화 자리를 라운딩하는 처리, 및 지수 조정처리를 설명하는 상세한 흐름도다.
처리 1a는 도 5의 스텝 S20에 해당한다. 이 처리도, 예를 들면, 상기 자리 구성유닛(30)에 의해 행해져도 된다. 스텝 S21에서는, 그 입력을 변환한다. 예를 들면, 상기 입력은 64비트 값을 발생시키기 위해서 패딩되어도 되고, 이때의 패딩은 추가의 0들의 형태의 최하위 비트에 가산된다. 이러한 포맷팅을 도 3에 상세히 도시하고 있다. 스텝 S22에서는, 상기 변환된 입력 값이 음의 값인지 아닌지를 판정한다. 예를 들면, 그 변환된 입력이 2의 보수 형식으로 되어 있는지 아닌지를 판정할 수 있다.
그 입력이 음의 값인 경우에는, 수의 1의 보수를 취하는 경우의 스텝 S24의 흐름으로 진행된다. 이것을, 그 수의 모든 비트를 반전하여서 실시할 수 있다. 그리고, 그 처리의 결과는, 스텝 S25에서 x회 좌측으로 시프트 된다. 여기서, 상기 x값은 상기 수에서 선두의 0들의 수를 표현한다. 따라서, 스텝 S25에서는, 가장 유효한 자릿수(digit)가 1일 때까지 상기 값을 좌측으로 시프트 한다. 달리 말하면, 상기 1의 보수를 취한 결과는 정규화 된다. 그 후, 스텝 S41의 흐름으로 진행된다.
스텝 S22에서는, 상기 변환된 입력의 값이 음의 값이 아닐 경우에(즉, 양의 값 또는 0일 경우), 스텝 S23의 흐름으로 계속되어 그 입력을 x회 좌측으로 시프트 한다. 이러한 좌측 시프트는, 스텝 S25에서 행한 것과 같이 일어난다. 그 후, 스텝 S42의 흐름으로 진행된다.
처리 1a와 거의 동시에, 처리 1b가 일어난다. 처리 1b는, 도 5의 스텝 S30에 해당하고, 상기 지수의 생성을 포함한다. 이것은, 예를 들면, 도 1에 도시된 지수 구성유닛(40)에 의해 실시되어도 된다.
스텝 S31에서는, 상기 입력이 부동소수점 수인지 아닌지를 판정한다. 그 입력이 부동소수점 수가 아닐 경우, 스텝 S33의 흐름으로 진행된다. 스텝 S33에서는, 하기 식을 사용하여 상기 지수를 산출한다:
(obias+size-fbits-x-1)
여기서, 'obias'는 상기 출력에 대한 상기 수의 지수에 관련된 바이어스다. 지수는 양 또는 음일 수 있지만, 일반적으로 부호 없는 수로서 표현된다. 따라서, 상기 표현된 지수로부터 실제의 지수를 결정하기 위해서는, 바이어스를 감산하는 것이 필요하다. 예를 들면, 단정밀도 수의 상기 바이어스는 127이다. 이에 따라, 상기 지수가 수 1로서 표현되는 경우, 참된 지수는 -126(즉, 1-127)이다. 반정밀도 부동소수점 수의 바이어스는 15이고, 배정밀도 부동소수점 수의 바이어스는 1023이다.
'size'는 입력된 수를 표현하는데 사용된 비트들의 수다.
'fbits'는 (만약 있다면) 상기 입력에서의 소수부를 표현하는데 사용된 비트들의 수를 표현한다. 예를 들면, 3개의 소수부 비트의 32비트 고정소수점 수의 값은 3이었을 것이다. 또는, 소수부가 없는 64비트 정수의 값은 0이었을 것이다.
'x'는 입력 수에서 선두의 0들의 수다.
이렇게 상기 출력 지수의 값을 산출하였다면, 스텝 S50의 흐름으로 진행된다. 스텝 S31에서는, 그 입력이 부동소수점 수라고 판정할 경우, 스텝 S32의 흐름으로 진행되어, 하기 식을 사용하여 그 출력 지수를 산출한다:
(obias-ibias+iexp-x),
여기서, 'obias'는 이전에 설명한 것과 같은 상기 출력의 지수의 바이어스다.
'ibias'는 입력 수의 지수의 바이어스다.
'iexp'는 입력 지수의 값이다.
'x'는 입력 수에서 선두의 0들의 수다.
그 후, 스텝 S34의 흐름으로 진행되어, 그 입력 지수가 0인지 아닌지를 판정한다. 상기 입력 지수가 0인 경우, 스텝 S35에서는, 상기 출력 지수를 1씩 증분한다. 양쪽 다일 경우에는, 그 후, 스텝 S50의 흐름으로 진행된다.
처리 1b를 구현하는데 사용될 수도 있는 서로 다른 회로들이 많이 있다. 그렇지만, 상기 입력들을 다중화해서 스텝 S32와 S33이 동시에 필요하지 않으므로, 양쪽의 스텝은, 3:2 캐리 보존 가산기 뒤에 11비트 캐리 전달 가산기가 있는 것을 사용하여 행해질 수 있다. 이러한 구현으로 잠재적으로 복잡한 회로소자를 추가할 필요가 없어서, 처리 1b를 적은 양의 회로 공간을 사용하여(이 때문에 적은 양의 전력으로) 행할 수 있다.
처리 2b는 도 5의 스텝 S50에 해당한다. 이 처리는, 예를 들면, 라운딩 유닛(50)을 사용하여 실시되어도 되고, 그 일례가 도 4에 도시되어 있다.
처리 2a는, 이전의 스텝 S22에서 상기 입력이 음이라고 발견되었을 경우 스텝 S41에서 시작하여도 된다. 스텝 S41에서는 상기 자리에 값 1을 가산하고, 스텝 S42의 흐름으로 진행된다.
또한, 처리 2a는, 스텝 S22에서, 상기 입력이 음이 아니었다고 판정했을 경우에 스텝 S42에서 바로 시작하여도 된다. 스텝 S42에서는, 라운딩 상수를 가산한다. 이때, 스텝 S41 및 S42는, 그렇지 않은 경우 상기 입력이 음이고 0이었을 경우에 1로 설정된 캐리 입력 값으로서 neg_convert의 값을 취하는 정수 가산기를 사용하여 행해져도 된다. 이러한 회로소자는, 도 4에 도시된 실시예들을 참조하여 설명되어 있다. 이러한 처리를 위한 정수 가산기를 사용하는 이점은, 특히 정수 가산기가 작은 것이다. 이에 따라, 적은 양의 회로소자를 사용하여 상기 라운딩을 행할 수 있어, 그 회로의 소비전력이 비교적 적다. 스텝 S43에서는, 상기 라운딩 상수( 및 필요한 경우 상수 1)를 가산하는 결과가 생성중인 캐리 출력 값으로 되었는지 아닌지를 판정한다. 달리 말하면, 상기 라운딩 상수를 가산하는 결과가 오버플로우를 발생시켰는지 아닌지를 판정한다. 캐리 출력 값을 스텝 S43에서 생성하였을 경우, 스텝 S44의 흐름으로 진행되어 상기 출력된 소수부가 0으로 설정된다.
처리 2b는 도 5에 도시된 것처럼 스텝 S50에 해당한다. 또한, 처리 2b는, 예를 들면, 도 1에 도시된 지수 조정유닛(60)을 사용하여 실시되어도 된다.
상기 지수 조정유닛은, 처리 1b에서 생성된 지수를 취하고 1을 가산하여서 조정된 지수를 생성한다.
이때, 처리 2a와 처리 2b는 병렬로 행해져도 된다.
도 7은 상기 조합유닛(70)이 상기 라운딩 유닛(50)의 결과들과, 상기 지수 구성유닛(40)과 상기 지수 조정유닛(60) 중 한쪽을 조합하는 방법을 나타내는 흐름도다. 이 조합유닛(70)은, 도 5에 도시된 조합 스텝 S60을 행한다.
스텝 S61에서는, 상기 입력이 음인지 아닌지를 판정한다. 그 입력이 음일 경우, 스텝 S62에서는 상기 출력에 사용된 부호 있는 비트를 음으로 설정한다. 그렇지 않은 경우, 스텝 S63에서는, 상기 출력의 부호 있는 비트를 양으로 설정한다. 양쪽 다일 경우에, 스텝 64의 흐름으로 진행되어 상기 라운딩 가산기, 예를 들면 정수 가산기(120)의 캐리 출력이 1인지 아닌지를 판정한다. 상기 캐리 출력 값이 1이 아닌 경우, 상기 출력의 지수는 처리 1b에서 생성된 것과 같다. 상기 라운딩 가산기의 캐리 출력이 1일 경우, 스텝 S65에서, 상기 출력의 지수는 스텝 S50에서 산출된 상기 조정된 지수와 같다. 양쪽 다일 경우에는, 스텝 S67의 흐름으로 진행되어 상기 라운딩된 정규화 자리의 적어도 일부를 상기 소수부 성분으로서 사용한다. 특히, 단정밀도 출력을 원하는 경우, 상기 라운딩된 정규화 자리의 상위 24비트가 사용된다. 그렇지만, 배정밀도 출력을 원하는 경우, 상위 53비트가 사용된다.
따라서, 상기 출력은, 처리 2a의 결과로서 발생시키고 상기 라운딩 유닛(50)에서 출력한, 부호 있는 비트, 상기 지수 또는 조정된 지수, 상기 조정된 정규화 자리로 구성된다.
이에 따라, 상술한 회로소자를 사용하기 때문에, 효율적인 시공간에서 동일한 회로소자를 사용한 많은 서로 다른 입력 형식들로부터 변환하는 것이 가능하다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경, 추가 및 변형을 할 수 있다는 것을 알 것이다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 이하의 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.
Claims (18)
- 부동소수점 가산기 회로소자; 및
정수, 고정소수점 수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 부동소수점 변환 회로소자를 구비하고,
상기 부동소수점 변환 회로소자는 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다른, 데이터 처리장치.
- 제 1 항에 있어서,
상기 형식들의 목록은 비정규 부동소수점 수를 포함하는, 데이터 처리장치.
- 제 1 항에 있어서,
상기 부동소수점 변환 회로소자는, 상기 비정규 부동소수점 수인 상기 입력에 응답하여, 최상위 비트가 1이도록 상기 입력을 여러 회 이동시켜서 정규화된 자리를 생성 가능한, 데이터 처리장치.
- 제 1 항에 있어서,
상기 부동소수점 변환 회로소자는,
음의 정수나 고정소수점 입력을 반전 가능한 인버터 회로소자;
상기 입력에서 선두의 1의 위치를 결정 가능한 카운트 선두의 제로 회로소자; 및
상기 입력을 정규화 가능한 좌측 시프터 회로소자; 및
시프트된 입력, 라운딩 모드에 따른 라운딩 상수, 및 상기 시프트된 입력이 반전되었을 경우의 캐리 입력을 조합하기 위한 정수 가산기 회로소자 중, 하나 이상을 구비하는, 데이터 처리장치.
- 제 1 항에 있어서,
상기 부동소수점 변환 회로소자는,
라운딩 상수를 상기 정규화된 자리에 가산하여서 라운딩된 자리를 발생시키기 위해 상기 정규화된 자리를 라운드하는 라운딩 회로소자를 구비하는, 데이터 처리장치.
- 제 5 항에 있어서,
상기 라운딩 회로소자는, 라운딩 모드에 따라 상기 라운딩 상수를 생성하는, 데이터 처리장치.
- 제 6 항에 있어서,
상기 라운딩 회로소자는, 상기 라운딩 모드가 0으로 라운드되는가 아닌가에 따라 상기 라운딩 상수를 생성하고,
상기 라운딩 회로소자는, 상기 라운딩 모드가 자리 올림인가 아닌가에 따라 상기 라운딩 상수를 생성하며,
상기 라운딩 회로소자는, 상기 출력의 형식에 따라 상기 라운딩 상수를 생성하는, 데이터 처리장치.
- 제 6 항에 있어서,
상기 라운딩 회로소자는,
상기 출력이 32비트 부동소수점 수인 경우와 상기 라운딩 방법이 라운딩 투 제로(rounding to zero)가 아닌 경우를 나타내는 제1 값;
상기 출력이 32비트 부동소수점 수인 경우와 상기 라운딩 방법이 자리 올림인 경우를 나타내는 제2 값;
상기 출력이 64비트 부동소수점 수인 경우와 상기 라운딩 방법이 라운딩 투 제로가 아닌 경우를 나타내는 제3 값; 및
상기 출력이 64비트 부동소수점 수인 경우와 상기 라운딩 방법이 자리 올림인 경우를 나타내는 제4 값에 따라,
상기 라운딩 상수를 생성하는, 데이터 처리장치.
- 제 5 항에 있어서,
상기 라운딩 상수는 64비트 수인, 데이터 처리장치.
- 제 8 항에 있어서,
상기 라운딩 회로소자는,
24회 출력된 값 0;
상기 제1 값;
28회 출력된 상기 제2 값;
상기 제3 값과 상기 제2 값의 논리적 OR을 행하는 제1 결과;
10회 출력된 제2 결과의 순서로 출력하여서 상기 라운딩 상수를 생성하고,
상기 제2 결과는, 상기 제4 값과 상기 제2 값의 논리적 OR을 행한 결과인, 데이터 처리장치.
- 제 5 항에 있어서,
상기 라운딩 회로소자는, 상기 라운딩 상수를 상기 정규화된 자리에의 상기 가산이 오버플로우를 발생시켰는지의 여부를 나타내는 캐리 출력 값을 출력하는, 데이터 처리장치.
- 제 11 항에 있어서,
상기 부동소수점 변환 회로소자는,
상기 부동소수점 수를 발생시키기 위해서, 라운딩된 자리, 지수 또는 조정된 지수 중 하나, 및 부호 비트를 조합하는 조합 회로소자를 구비하는, 데이터 처리장치.
- 제 12 항에 있어서,
상기 조합 회로소자는, 상기 캐리 출력 값이 오버플로우가 일어나지 않은 것을 나타내는 경우 상기 라운딩된 자리와 상기 지수를 조합하고,
상기 조합 회로소자는, 상기 캐리 출력 값이 오버플로우가 일어난 것을 나타내는 경우 상기 라운딩된 자리와 상기 조정된 지수를 조합하는, 데이터 처리장치.
- 제 1 항에 있어서,
상기 부동소수점 변환 회로소자는,
상기 입력을 수신하고, 상기 시프터 회로소자를 사용하여 상기 입력을 시프트하여서 정규화된 자리를 생성하는 자리 구성 회로소자를 구비하고,
상기 자리 구성 회로소자는, 2의 보수 형식인 상기 입력에 응답하여, 상기 입력의 상기 비트들을 반전시켜서 상기 정규화된 자리를 생성하는, 데이터 처리장치.
- 제 1 항에 있어서,
상기 부동소수점 변환 회로소자는,
상기 입력을 수신하고, 상기 출력의 정밀도를 갖는 지수 바이어스에 따라 지수를 제공하는 지수 구성 회로소자를 구비하고,
상기 지수 구성 회로소자는, 부동소수점 수인 상기 입력에 응답하여, 상기 출력의 상기 정밀도를 갖는 상기 지수 바이어스와 상기 입력의 지수를 가산하고, 상기 여러 회와 상기 입력의 정밀도를 갖는 지수 바이어스를 감산함으로써, 상기 지수를 제공하고;
상기 지수 구성 회로소자는, 0인 상기 입력의 상기 지수에 응답하여, 1을 가산하여서 상기 지수를 조정하고,
상기 지수 구성 회로소자는, 부동소수점 수가 아닌 상기 입력에 응답하여, 상기 출력의 상기 정밀도를 갖는 상기 지수 바이어스, 상기 입력의 비소수부 비트의 수, 상기 여러 회를 가산하고, 1을 감산하여서, 상기 지수를 제공하는, 데이터 처리장치.
- 제 14 항에 있어서,
상기 자리 구성 회로소자는, 상기 입력이 소정수의 비트를 갖도록 상기 입력을 조정하는, 데이터 처리장치.
- 부동소수점 가산기 회로소자와, 상기 부동소수점 가산기 회로소자와는 물리적으로 완전히 다른 부동소수점 변환 회로소자를 구비하는, 데이터 처리장치의 작동방법으로서, 상기 데이터 처리장치에서 행한,
정수, 고정소수점 수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력을 수신하는 단계; 및
상기 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는 단계를 포함하는, 데이터 처리장치의 작동방법.
- 부동소수점 가산을 행하기 위한 수단; 및
정수, 고정소수점 수, 및 출력된 부동소수점 수보다 작은 형식의 부동소수점 수로 이루어진 형식들의 목록으로부터 일 형식의 임의의 입력에 관해 변환을 행하여서 출력인 부동소수점 수를 생성하는, 부동소수점 변환을 행하기 위한 수단을 구비하고,
상기 부동소수점 변환을 행하기 위한 수단은, 상기 부동소수점 가산을 행하기 위한 수단과는 물리적으로 완전히 다른, 데이터 처리장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498,172 | 2014-09-26 | ||
US14/498,172 US9582248B2 (en) | 2014-09-26 | 2014-09-26 | Standalone floating-point conversion unit |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160037083A true KR20160037083A (ko) | 2016-04-05 |
KR102430645B1 KR102430645B1 (ko) | 2022-08-09 |
Family
ID=54200337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150131319A KR102430645B1 (ko) | 2014-09-26 | 2015-09-17 | 독립형 부동소수점 변환장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9582248B2 (ko) |
KR (1) | KR102430645B1 (ko) |
CN (1) | CN105468331B (ko) |
GB (1) | GB2532309B (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9608662B2 (en) * | 2014-09-26 | 2017-03-28 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
CN109858623B (zh) | 2016-04-28 | 2021-10-15 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN109934331B (zh) * | 2016-04-29 | 2020-06-19 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
US10019231B2 (en) * | 2016-08-22 | 2018-07-10 | Arm Limited | Apparatus and method for fixed point to floating point conversion and negative power of two detector |
GB2560766B (en) * | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
GB2556645B (en) * | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN108052307B (zh) * | 2017-11-27 | 2020-07-03 | 北京时代民芯科技有限公司 | 处理器浮点单元前导零数量的超前运算方法及系统 |
US11281463B2 (en) * | 2018-03-25 | 2022-03-22 | Intel Corporation | Conversion of unorm integer values to floating-point values in low power |
CN108762720B (zh) * | 2018-06-14 | 2021-06-29 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN110069240B (zh) * | 2019-04-30 | 2021-09-03 | 北京探境科技有限公司 | 定点与浮点数据计算方法及装置 |
CN110221808B (zh) * | 2019-06-03 | 2020-10-09 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
US11210064B2 (en) | 2019-07-30 | 2021-12-28 | International Business Machines Corporation | Parallelized rounding for decimal floating point to binary coded decimal conversion |
US11221826B2 (en) * | 2019-07-30 | 2022-01-11 | International Business Machines Corporation | Parallel rounding for conversion from binary floating point to binary coded decimal |
CN111123818B (zh) * | 2019-11-05 | 2020-12-25 | 珠海格力电器股份有限公司 | 一种plc浮点数和定点数相互转换控制系统及方法 |
US11150806B1 (en) * | 2021-04-22 | 2021-10-19 | Coupang Corp. | Systems and methods for reducing disk usage and network latency |
CN118585164A (zh) * | 2023-03-03 | 2024-09-03 | 华为技术有限公司 | 浮点数据精度转换方法和装置 |
CN117155396A (zh) * | 2023-09-07 | 2023-12-01 | 上海合芯数字科技有限公司 | 浮点数的转换处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
KR20120053344A (ko) * | 2010-11-17 | 2012-05-25 | 삼성전자주식회사 | 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법 |
US20120215822A1 (en) * | 2011-02-22 | 2012-08-23 | Arm Limited | Number format pre-conversion instructions |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249798B1 (en) | 1996-10-10 | 2001-06-19 | Institute For The Development Of Emerging Architectures, L.L.C. | Method, apparatus and computer system for directly transferring and translating data between an integer processing unit and a floating point processing unit |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US20060047734A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Fast conversion of integer to float using table lookup |
US7401107B2 (en) | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
WO2007133101A1 (en) * | 2006-05-16 | 2007-11-22 | Intel Corporation | Floating point addition for different floating point formats |
US8280936B2 (en) * | 2006-12-29 | 2012-10-02 | Intel Corporation | Packed restricted floating point representation and logic for conversion to single precision float |
CN102243577A (zh) * | 2010-05-10 | 2011-11-16 | 上海华虹集成电路有限责任公司 | 一种快速实现浮点加法的电路 |
JP5683839B2 (ja) | 2010-05-17 | 2015-03-11 | セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー | 撮像装置の制御回路 |
EP2596422A4 (en) * | 2010-07-01 | 2016-04-27 | Ericsson Telefon Ab L M | CIRCULAR FLOATING VIRGIN NUMBER GENERATOR AND CIRCULAR FLOATING VIRGIN NUMBER ADDITIONER |
US8965945B2 (en) * | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
CN102103479B (zh) * | 2011-03-02 | 2015-06-10 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
GB201111035D0 (en) * | 2011-06-29 | 2011-08-10 | Advanced Risc Mach Ltd | Floating point adder |
US9608662B2 (en) * | 2014-09-26 | 2017-03-28 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
-
2014
- 2014-09-26 US US14/498,172 patent/US9582248B2/en active Active
-
2015
- 2015-08-06 GB GB1513897.7A patent/GB2532309B/en active Active
- 2015-09-17 KR KR1020150131319A patent/KR102430645B1/ko active IP Right Grant
- 2015-09-18 CN CN201510600250.3A patent/CN105468331B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
KR20120053344A (ko) * | 2010-11-17 | 2012-05-25 | 삼성전자주식회사 | 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법 |
US20120215822A1 (en) * | 2011-02-22 | 2012-08-23 | Arm Limited | Number format pre-conversion instructions |
Also Published As
Publication number | Publication date |
---|---|
GB201513897D0 (en) | 2015-09-23 |
CN105468331B (zh) | 2020-12-11 |
GB2532309A (en) | 2016-05-18 |
US9582248B2 (en) | 2017-02-28 |
GB2532309B (en) | 2017-06-14 |
CN105468331A (zh) | 2016-04-06 |
US20160092169A1 (en) | 2016-03-31 |
KR102430645B1 (ko) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102430645B1 (ko) | 독립형 부동소수점 변환장치 | |
US10019231B2 (en) | Apparatus and method for fixed point to floating point conversion and negative power of two detector | |
US9608662B2 (en) | Apparatus and method for converting floating-point operand into a value having a different format | |
Hormigo et al. | New formats for computing with real-numbers under round-to-nearest | |
JP2015170359A (ja) | 浮動小数点オペランドを乗算するためのデータ処理装置及び方法 | |
US20170293471A1 (en) | Arithmetic units and related converters | |
KR20120053344A (ko) | 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법 | |
US9059726B2 (en) | Apparatus and method for performing a convert-to-integer operation | |
US8626807B2 (en) | Reuse of rounder for fixed conversion of log instructions | |
US10310809B2 (en) | Apparatus and method for supporting a conversion instruction | |
US11119731B2 (en) | Apparatus and method for rounding | |
US9933999B2 (en) | Apparatus, method and program for calculating the result of a repeating iterative sum | |
JP2018097864A (ja) | リーディングゼロ予想 | |
US9658827B2 (en) | Apparatus and method for performing reciprocal estimation operation | |
KR100974190B1 (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
US11983237B2 (en) | Floating point dot product multiplier-accumulator | |
US11893360B2 (en) | Process for a floating point dot product multiplier-accumulator | |
Siddamshetty et al. | Efficient Hardware Architecture for Posit Addition/Subtraction | |
KR20230015844A (ko) | 극소 검출 | |
US10346130B2 (en) | Handling floating point operations | |
Ram et al. | Efficient Hardware Design of Parameterized Posit Multiplier and Posit Adder | |
US20190155573A1 (en) | Handling floating-point operations | |
Balasaraswathi et al. | IMPLEMENTATION OF FLOATING POINT FFT PROCESSOR WITH SINGLE PRECISION FOR REDUCTION IN POWER | |
JP2021047778A (ja) | 演算回路 | |
JP3803653B2 (ja) | 乗算処理装置 |
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 |