KR20130111466A - 급수 전개를 이용하는 초월 및 비선형 컴포넌트들 - Google Patents

급수 전개를 이용하는 초월 및 비선형 컴포넌트들 Download PDF

Info

Publication number
KR20130111466A
KR20130111466A KR1020130034906A KR20130034906A KR20130111466A KR 20130111466 A KR20130111466 A KR 20130111466A KR 1020130034906 A KR1020130034906 A KR 1020130034906A KR 20130034906 A KR20130034906 A KR 20130034906A KR 20130111466 A KR20130111466 A KR 20130111466A
Authority
KR
South Korea
Prior art keywords
value
function
series
values
component
Prior art date
Application number
KR1020130034906A
Other languages
English (en)
Other versions
KR101471750B1 (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 KR20130111466A publication Critical patent/KR20130111466A/ko
Application granted granted Critical
Publication of KR101471750B1 publication Critical patent/KR101471750B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/035Reduction of table size
    • G06F1/0356Reduction of table size by using two or more smaller tables, e.g. addressed by parts of the argument
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/0307Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/08Powers or roots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/12Reciprocal functions

Landscapes

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

Abstract

일 실시예에서, 초월 함수 또는 기타 비선형 함수를 구현하는 하드웨어는 함수의 급수 전개에 기초한다. 예를 들어, 테일러 급수 전개가 기초로 사용될 수도 있다. 테일러 급수의 최초 항들 중 하나 이상이 사용될 수도 있으며, 하드웨어로 구현될 수도 있다. 일부 실시예들에서, 테일러 급수 전개에 대한 변경들을 이용하여 결과의 정확도를 향상시킬 수도 있다. 일 실시예에서, 함수 피연산자들에 대한 다양한 비트 폭들이 소정의 구현에서의 사용을 위해 허용될 수도 있다. 집적 회로 설계에서 사용하기 위한 급수-근사화된 컴포넌트들의 라이브러리를 구축하기 위한 방법이 제공되며, 이 방법은 허용 가능한 구현들을 합성하고, 정확도를 위해 결과들을 테스트한다. 원하는 레벨의 정확도를 생성하는 (면적에 관하여) 가장 작은 구현이 라이브러리 요소로서 선택될 수도 있다.

Description

급수 전개를 이용하는 초월 및 비선형 컴포넌트들{TRANSCENDENTAL AND NON-LINEAR COMPONENTS USING SERIES EXPANSION}
본 발명은 집적 회로 분야에 관한 것으로서, 구체적으로는 집적 회로에서의 초월 함수 및 소정의 비선형 함수의 구현에 관한 것이다.
"초월" 함수로서 지칭되는 수학 함수들의 클래스가 존재한다. 초월 함수들은 대수 연산들의 유한 시퀀스로 표현될 수 없는 함수들이다. 그 예들은 지수 함수, 로그 함수 및 삼각 함수를 포함한다.
초월 함수들은 집적 회로들에서 다양한 용도를 갖는다. 예를 들어, 다양한 초월 함수들은 종종 픽셀들과 같은 비디오 값들의 조작에 사용된다. 감마/디감마 연산들은 예를 들어 초월 함수들을 포함한다. 따라서, 집적 회로들에서 초월 함수들을 구현하는 것이 필요하다.
초월 함수들은 유한 대수 표현을 갖지 않으므로, 이 함수들은 하드웨어에서 직접 구현될 수 없다. 초월 함수를 근사화하는 한 가지 기법은 다양한 사전 선택된 포인트들에서의 소정의 초월 함수의 결과들을 저장하는 탐색표(LUT)를 사용한다. 함수에 대한 입력 피연산자에 가장 가까운 2개의 포인트가 LUT로부터 판독되고, 2개의 포인트 사이의 선형 보간을 이용하여 입력 피연산자에 대한 답을 근사화한다. 허용 가능한 레벨의 정확도를 달성하기 위해, LUT들은 매우 커져야 한다. 소정의 다른 비선형 함수들(예를 들어, 역함수 1/x, 제곱근 등)도 마찬가지로 허용 가능한 레벨의 정확도를 제공하기 위해 큰 LUT들을 필요로 할 수도 있다.
일 실시예에서, 초월 함수 또는 기타 비선형 함수를 구현하는 하드웨어는 함수의 급수 전개에 기초한다. 예를 들어, 테일러 급수 전개가 기초로 사용될 수도 있다. 테일러 급수의 최초 항들 중 하나 이상이 사용될 수도 있으며, 하드웨어로 구현될 수도 있다. 일부 실시예들에서, 테일러 급수 전개에 대한 변경들을 이용하여 결과의 정확도를 향상시킬 수도 있다.
일 실시예에서, 함수 피연산자들에 대한 다양한 비트 폭들이 소정의 구현에서의 사용을 위해 허용될 수도 있다. 집적 회로 설계에서 사용하기 위한 급수-근사화된 컴포넌트들의 라이브러리를 구축하기 위한 방법이 제공되며, 이 방법은 허용 가능한 구현들을 합성하고, 정확도를 위해 결과들을 테스트한다. 원하는 레벨의 정확도를 생성하는 (면적에 관하여) 가장 작은 구현이 라이브러리 요소로서 선택될 수도 있다.
아래의 상세한 설명은 첨부 도면들을 참조하며, 이제 도면들이 간단히 설명된다.
도 1은 집적 회로의 일 실시예의 블록도이다.
도 2는 급수-근사화된 컴포넌트들을 포함하는 블록의 일 실시예의 블록도이다.
도 3은 테일러 급수 전개를 나타내는 식이다.
도 4는 테일러 급수 전개식의 최초 2개 항에 기초하여 구현되는 초월 또는 기타 비선형 컴포넌트의 일 실시예의 블록도이다.
도 5는 일 실시예에서 테일러 급수 전개식에 대한 x-a 항의 생성을 나타내는 블록도이다.
도 6은 테일러 급수 전개식의 최초 3개 항에 기초하여 구현되는 초월 또는 기타 비선형 컴포넌트의 일 실시예의 블록도이다.
도 7은 간격의 중심에 있는 포인트에 대한 테일러 급수 전개의 일 실시예의 도면이다.
도 8은 간격의 각각의 경계에서 동일한 에러를 제공하도록 선택된 포인트에 대한 테일러 급수 전개의 일 실시예의 도면이다.
도 9는 제1 도함수 항의 선형 보간 근사화의 일 실시예의 도면이다.
도 10은 선형 보간 근사화의 결과와 테일러 급수 전개를 병합하는 변경된 테일러 급수 전개의 도면이다.
도 11은 추가적인 간격들을 이용하는 변경된 테일러 급수의 일 실시예의 도면이다.
도 12는 급수의 3개 최초 항을 이용하는 테일러 급수 전개의 일 실시예의 도면이다.
도 13은 급수의 3개 최초 항에 기초하는 변경된 테일러 급수 전개의 다른 실시예의 도면이다.
도 14는 3항 테일러 급수에 대한 VFit 근사화의 도면이다.
도 15는 컴퓨터 액세스 가능 저장 매체의 일 실시예의 블록도이다.
도 16은 초월 함수 구현들의 라이브러리를 구축하는 일 실시예를 나타내는 흐름도이다.
본 발명은 다양한 변경들 및 대안 형태들이 가능하지만, 특정 실시예들이 도면들에 예시되고, 본 명세서에서 상세히 설명될 것이다. 그러나, 도면들 및 이들에 대한 상세한 설명은 본 발명을 개시되는 특정 형태로 한정하려는 것이 아니라, 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내에 있는 모든 변경들, 균등물들 및 대안들을 커버하는 것을 의도한다. 본 명세서에서 사용되는 표제들은 체계화를 위한 것일 뿐, 설명의 범위를 한정하는 것을 의도하지 않는다. 본원 전반에서 사용되는 바와 같은 "할 수도 있다(may)"라는 용어는 강제의 의미(즉, 해야 한다(must)의 의미)가 아니라 허가의 의미(즉, 가능성을 갖는다는 의미)로 사용된다. 마찬가지로, "포함(include, including, includes)"이라는 용어는 포함하지만 그에 한정되지 않는다는 것을 의미한다.
다양한 유닛들, 회로들 또는 기타 컴포넌트들이 작업 또는 작업들을 수행하도록 "구성된다"로서 설명될 수도 있다. 이와 관련하여, "구성된다"는 동작 동안 작업 또는 작업들을 수행하는 "회로를 갖는다"는 것을 일반적으로 의미하는 구조의 광범위한 기재이다. 따라서, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 동작하지 않는 경우에도 작업을 수행하도록 구성될 수 있다. 일반적으로, "구성된다"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들 및/또는 연산을 구현하기 위해 실행될 수 있는 프로그램 명령어들을 저장하는 메모리를 포함할 수도 있다. 메모리는 정적 또는 동적 랜덤 액세스 메모리와 같은 휘발성 메모리 및/또는 광 또는 자기 디스크 저장 장치, 플래시 메모리, 프로그래밍 가능한 판독 전용 메모리 등과 같은 비휘발성 메모리를 포함할 수 있다. 유사하게, 설명의 편의를 위해, 다양한 유닛들/회로들/컴포넌트들은 작업 또는 작업들을 수행하는 것으로 설명될 수도 있다. 이러한 설명들은 "구성된다"라는 표현을 포함하는 것으로 해석되어야 한다. 하나 이상의 작업을 수행하도록 구성되는 유닛/회로/컴포넌트의 기재는 이 유닛/회로/컴포넌트에 대해 35 U.S.C.§112, 단락 6의 해석을 요구하지 않는 것을 명백히 의도한다.
이제, 도 1을 참조하면, 집적 회로(10)의 블록도가 도시되어 있다. 도시된 실시예에서, 집적 회로(10)는 다수의 블록(12A-12H)을 포함한다. 블록(12C)은 분해도로 도시되며, 다양한 컴포넌트들(14A-14C) 및 급수-근사화된 컴포넌트(16)를 포함한다. 다양한 실시예들에서, 하나의 블록이 둘 이상의 급수-근사화된 컴포넌트(16)를 포함할 수도 있고, 둘 이상의 블록이 급수-근사화된 컴포넌트들을 포함할 수도 있다.
블록들(12A-12H)은 집적 회로(10)의 설계가 의도하는 다양한 동작들을 수행하도록 구성될 수도 있다. 블록들(12A-12H)은 집적 회로(10)의 정의에 기초하여 설계를 논리 서브섹션들로 분할함으로써 결정될 수도 있다. 예를 들어, 집적 회로(10)는 시스템 온 칩(SoC)일 수도 있다. 블록들(12A-12H)은 프로세서들, 주변 장치들, 통신 패브릭 회로들, 메모리 제어기들, 기타 등등을 포함할 수도 있다. 블록들은 다수의 계층 구조 레벨을 가질 수도 있다(즉, 블록들은 다른 블록들을 포함할 수도 있다). 예를 들어, 프로세서 블록은 불러오기(fetch) 및 디코딩, 캐시, 명령어 발행, 실행 유닛 등을 위한 블록들을 포함할 수도 있다. 블록들은 다른 블록들 외에도 컴포넌트들을 포함할 수도 있거나, 블록들이 계층 구조 내의 최저 레벨인 경우에는 컴포넌트들만을 포함할 수도 있다. 도 1에는 도시되지 않았지만, 블록들(12A-12H)은 일반적으로 집적 회로(10)의 전체 동작을 구현하기 위해 필요에 따라 상호접속될 수도 있다.
블록의 컴포넌트들(14A-14C)은 다양한 회로 요소들일 수 있다. 예를 들어, 컴포넌트들은 가산기, 승산기, 멀티플렉서, 시프터, 로테이터, 레지스터, 메모리 등과 같은 데이터 흐름 회로의 인스턴스들일 수도 있다. 컴포넌트들(14A-14C)은 또한 블록의 레지스터-전송 레벨(RTL) 설명서 내에 기재된 식들에 대응하는 논리 회로일 수도 있다. 일반적으로, RTL 설명서는 Verilog 또는 VHDL과 같은 하드웨어 설계 언어로 작성될 수도 있으며, 기록된 상태 및 그 상태에 대한 논리 연산들과 관련하여 논리 회로를 설명할 수도 있다. 기록된 상태는 임의의 계시되는(clocked) 저장 장치들(예컨대, 레지스터, 래치, 플립-플롭 등) 내에 저장될 수도 있다. 합성 도구를 이용하여, RTL 설명서를 판독하고, 집적 회로(10)에서의 구현을 위해 RTL 설명서에 대응하는 논리 회로를 생성할 수도 있다. 다른 예들에서는, 맞춤형 회로가 설계자에 의해 개발될 수도 있고, 도식 캡처 도구들을 통해 캡처될 수도 있다. 맞춤형 회로는 또한 컴포넌트(14A-14C)일 수도 있다.
급수-근사화된 컴포넌트(16)는 초월 함수 또는 기타 비선형 함수를 구현하는 컴포넌트일 수도 있다. 모든 비선형 함수들이 급수-근사화된 컴포넌트들로서 구현되는 것은 아니지만, 일부 그러한 함수들은 급수-근사화된 구현(예로서, 역함수 1/x, 제곱근 등)으로부터 이익을 얻을 수도 있다. 구체적으로, 일 실시예에서, 초월/비선형 함수는 초월/비선형 함수의 급수 전개식으로부터 얻어지는 회로에 의해 구현될 수도 있다. 회로는 전개식의 선택된 항들로부터 얻어질 수도 있고, 그리고/또는 급수 전개식의 오리지널 항들로부터 변경될 수도 있다. 다양한 실시예들이 아래에 더 상세히 설명된다. 아래의 설명에서의 일부 예들에서는, 초월 함수가 일례로서 사용될 수도 있지만, 일반적으로 급수 전개 근사화는 임의의 비선형 함수에 대해 사용될 수도 있다. 다른 예들에서는, 역함수와 같은 비선형 함수가 일례로서 사용된다. 따라서, 급수-근사화된 컴포넌트는 일반적으로 함수의 급수 전개 표현의 항들 또는 급수 전개 항들로부터 변경된 (예를 들어, 급수 전개 항들로부터 에러 감소를 위해 최적화된) 항들을 이용하여 초월 또는 비선형 함수를 근사화하는 컴포넌트일 수도 있다. 근사화된 함수는 급수-근사화된 함수로서 참조될 수도 있다.
컴포넌트들(14A-14C, 16)은 블록(12C)의 연산을 실현하기 위해 함께 결합될 수도 있다. 따라서, 급수 근사화되지 않은 컴포넌트들은 급수-근사화된 컴포넌트들에 대한 입력들을 생성할 수도 있으며, 그 반대도 마찬가지이다. 게다가, 다른 블록들로부터의 입력들 및 다른 블록들로의 출력들이 초월 및 급수 근사화되지 않은 컴포넌트들 모두에 의해 생성될 수도 있다.
도 2는 일 실시예에서 구현될 수 있는 블록(12I)의 더 구체적인 예이다. 도 2의 실시예는 픽셀 값들에 대해 감마/디감마 정정을 수행하는 감마/디감마 정정 블록일 수도 있다. 감마 정정은 사람들이 광 및 컬러를 인식하는 방법과 관련하여 픽셀 비트들의 사용을 개선하기 위해 사람의 시각 특성들을 보상하도록 픽셀 값들에 적용되는 비선형 연산이다. 감마 정정은 입력 픽셀 값을, 통상적으로 감마 정정에 대해 0과 1 사이이고 디감마 정정에 대해서는 1보다 큰 (일반적으로 그리스 문자 "감마", 따라서 함수 이름으로서 참조되는) 거듭제곱으로 상승시킴으로써 출력 픽셀 값을 생성한다. (픽셀 값에서) 0 근처의 감마 함수의 부분은 다소 선형이며, 픽셀 값이 증가함에 따라 점점 비선형이 된다.
도 2의 실시예에서의 급수-근사화된 컴포넌트들은 log(x) 컴포넌트(20) 및 2x 컴포넌트(22)를 포함할 수도 있다. log(x) 컴포넌트(20)는 로그 밑수 2, 즉 log2를 구현할 수도 있다. 2x 컴포넌트(20)는 역로그 컴포넌트로서도 참조될 수도 있는데, 그 이유는 2를 x의 거듭제곱으로 상승시키는 것이 x의 log2의 역이기 때문이다. 그러나, 다른 실시예들에서는 로그 및 역로그 함수들 둘 다에 대한 밑수가 일치하는 한은 임의의 밑수가 사용될 수 있는 점에 유의한다. 다른 밑수의 하나의 구현은 밑수 2의 로그 및 역로그 함수들을 사용할 수도 있으며, x의 값과 log2(밑수)를 곱하여 정확한 답에 도달할 수도 있다. 예를 들어, 일부 구현들에서 e의 밑수가 요구되며, log2(e) 항을 이용하여 구현될 수도 있다.
도시된 실시예에서, 입력 픽셀 값은 정수이고, 급수-근사화된 컴포넌트들은 부동 소수점 값들에 대해 작용한다. 따라서, 고정 대 부동 변환 컴포넌트(24)가 픽셀 값을 변환하기 위해 포함된다.
전술한 바와 같이, 감마 정정은 픽셀 값을 거듭제곱 감마로 상승시킴으로써 수행된다. 픽셀 값의 로그를 취함으로써, "거듭제곱으로 상승시키는" 계산은 승산이 된다. 따라서, log(x) 컴포넌트(20)의 출력은 승산기 컴포넌트(26)에서 입력 감마 값과 곱해질 수도 있다. 그 결과는 오버플로우를 방지하기 위해 반올림되고 최대값으로 고정될 수도 있다(반올림/고정 컴포넌트(28)). 그 결과는 2x 컴포넌트(22)에 제공된다. 승산기(26)로부터의 곱의 역로그를 취함으로써, 값 감마로 상승된 입력 픽셀이 생성될 수 있다. 그 결과는 부동 소수점으로부터 다시 고정 소수점으로 변환될 수도 있다(부동 대 고정 변환 컴포넌트(30)). 이 실시예에서, 오프셋(B)이 감마 정정된 픽셀에 더해지며, 가산기 컴포넌트(32)는 오프셋을 더하기 위해 제공될 수도 있다. 다른 실시예들은 오프셋을 더하지 않을 수도 있으며, 가산기 컴포넌트(32)를 필요로 하지 않을 수도 있다. 그 결과는 반올림 및 고정되어(컴포넌트 34), 멀티플렉서 컴포넌트(36)에 제공될 수도 있다.
2-x 및 2x 함수들에 대한 테일러 급수 값들이 상이할 수도 있으므로 이들 함수는 별개의 구현들일 수도 있다는 점에 유의한다. 일부 실시예들에서는, 2-x 함수가 구현될 수도 있으며, 2x는 2-x를 이용하여 구현될 수도 있다. 예를 들어, 2x는 21, 2x 및 2-1의 곱과 수학적으로 동일하다. 2x와 2-1의 곱은 2x-1과 동일하며, 이는 또한 지수에서 -1을 추출함으로써 2-(1-x)로 쓸 수 있다. 따라서, 2x는 21과 2-(1-x)의 곱과도 수학적으로 동일하다. 입력으로서 1-X를 갖는 2-x 함수를 사용하고 그 결과를 2 (21)과 곱함으로써, 2x 함수가 실현될 수도 있다. 2를 곱하는 것은 시프트로서 구현될 수 있다. 원할 경우에, 2의 다른 거듭제곱들도 사용될 수도 있다.
이 실시예에서는, 입력 픽셀 범위의 일부가 선형 연산에 의해 근사화된다. 선형 경로는 승산기 컴포넌트(38) 및 반올림/고정 컴포넌트(40)로서 도시된다. 승산기 컴포넌트(38)는 입력 픽셀 값과 팩터 M을 곱하도록 구성될 수도 있으며, 그 곱은 반올림/고정 컴포넌트(40)에 의해 반올림/고정될 수도 있다. 그 결과는 이 실시예에서 멀티플렉서 컴포넌트(36)에 대한 다른 입력이다. 비교기 컴포넌트(42)가 픽셀 값과 선형 경로를 사용하기 위한 임계치를 비교할 수도 있다. 임계치는 비교기 컴포넌트(42)에 대한 값 Z 입력으로서 도시된다. 픽셀 값이 Z 이하인 경우, 선형 경로가 멀티플렉서 컴포넌트(36)를 통해 선택될 수도 있다. 그렇지 않은 경우,(컴포넌트들(20-34)을 포함하는) 비선형 경로가 멀티플렉서 컴포넌트(36)를 통해 선택될 수도 있다. 다른 실시예들은 선형 경로를 구현하지 않을 수도 있으며, 대신에 전체 함수 범위에 대해 비선형 경로를 이용할 수도 있다. 그러한 실시예에서, 요소들(36, 38, 40, 42)은 배제될 수도 있다.
전술한 바와 같이, 급수-근사화된 컴포넌트들의 일부 실시예들은 컴포넌트에 대응하는 급수-근사화된 함수의 무한 급수 전개로부터 얻어지는 하드웨어를 이용하여 구현될 수도 있다. 무한 급수 전개는 비대수(non-algebraic) 초월 함수 또는 비선형 함수를 대수로 변환한다. 유한 급수의 최초 몇 개의 항을 구현함으로써 초월/비선형 함수의 적당히 정밀한 근사화가 달성될 수도 있다. 게다가, 일부 실시예들에서는, 아래에 더 상세히 설명되는 바와 같이, 최초 급수 전개 구현을 변경함으로써 급수-근사화된 컴포넌트들의 에러 특성들이 개선될 수도 있다.
일 실시예에서는, 테일러 급수 전개식이 급수-근사화된 컴포넌트들의 기초로서 사용된다. 테일러 급수 전개에 대한 식이 도 3에 도시되어 있다. 일반적으로, 테일러 급수 전개식(또는 더 간단하게 "테일러 급수")은 사전 선택된 포인트(도 3의 "a")에서의 함수의 값 및 무한 수의 그의 도함수들을 포함한다. 둘 이상의 사전 선택된 포인트가 사용될 수도 있으며, 이 경우에 소정의 입력 값에 가장 가까운 사전 선택된 포인트가 선택될 수도 있고, 그의 함수 및 도함수 값들이 그 소정 입력 값에 대해 사용될 수도 있다. 소정의 사전 선택된 포인트를 사용하는 입력 값들의 세트는 "간격"으로서 참조될 수도 있고, 소정의 사전 선택된 포인트는 간격에 대응하는 것으로서 참조될 수도 있다. 하나의 사전 선택된 포인트만이 사용되는 경우, 간격은 x의 전체 범위일 수도 있다.
일반적으로, 입력 x에 대한 함수(도 3의 "f(x)")의 값은 a("f(a)")에서의 함수의 값과 a("f'(a)", "f"(a)" 등)에서의 각각의 도함수 및 x와 a 사이의 차이를 포함하는 곱들의 합이다. 구체적으로, a에서의 각각의 도함수는 도함수의 차수에 대응하는 인수(factorial)에 의해 나누어질 수도 있다(예를 들어, 1차 도함수는 1의 인수에 의해 나누어지고, 2차 도함수는 2의 인수에 의해 나누어지고, 3차 도함수는 3의 인수에 의해 나누어지고, 기타 등등이다). 이어서, 그 결과는 도함수의 차수의 거듭제곱으로 상승된 x와 a의 차이(1차 도함수에 대해 "x-a", 2차 도함수에 대해 "(x-a)2", 3차 도함수에 대해 "(x-a)3", 기타 등등)에 의해 곱해질 수도 있다.
급수-근사화된 컴포넌트가 부동 소수점 피연산자들을 이용하여 구현되는 경우, 정규 수의 가수(mantissa)는 정확히 1과 거의 2 사이인 것으로 알려져 있다. 가수 범위의 중앙 근처의 어딘가에서 a가 선택되는 경우, x-a의 범위는 약 -0.5 내지 +0.5이다. x-a 항이 상승되는 각각의 추가적인 거듭제곱은 점점 더 작은 수를 유도하여, 테일러 급수 내의 대응하는 항들의 효과들을 줄인다. 둘 이상의 a 값이 가수 범위에 걸쳐 사용될 때, 더 높은 차수의 도함수들의 효과 감소가 훨씬 더 심해질 수도 있다. 따라서, 초월/비선형 함수들에 대한 테일러 급수의 부동 소수점 구현이 아래에서 일례로서 사용된다. 테일러 급수는 가수 생성을 위해 사용될 수도 있으며, 지수 생성이 병렬로 처리될 수도 있다.
도 4는 테일러 급수의 부동 소수점 구현에 기초하는 급수-근사화된 컴포넌트(16)의 일 실시예를 나타내는 블록도이다. 도 4의 실시예는 테일러 급수의 최초 2개의 항(f(a) 및 그의 1차 도함수 f'(a))을 구현한다. 급수-근사화된 컴포넌트(16)는 지수 계산 유닛(50) 및 가수 계산 유닛(52)을 포함할 수도 있다. 지수 계산 유닛(50)은 입력 값의 지수 부분을 수신하도록 결합되고, 출력 지수를 생성하도록 구성된다. 출력 지수는 출력 가수가 정규화를 필요로 하는 경우에 조정될 수도 있다.
도시된 실시예에서, 가수 계산 유닛(52)은 구현에서 각각의 선택된 a에 대한 f(a) 및 f'(a) 값들의 탐색표(LUT)(참조 번호 54)를 포함한다. 표 내의 사전 선택된 포인트들(a들)의 수는 실시예마다 다를 수도 있다. 각각의 사전 선택된 포인트는 가수 값들의 간격과 연관될 수도 있다. 따라서, 가수의 최상위 비트들(MSB)은 어느 간격이 입력 가수를 포함하는지를 정의할 수도 있으며, 이들 MSB는 LUT(54)에 대한 입력으로서 역할할 수도 있다. LUT(54)는 입력 가수의 MSB들에 응답하여 선택된 엔트리로부터 f(a) 및 f'(a)의 값을 출력하도록 구성될 수도 있다.
LUT(54)로부터의 f(a) 출력은 가산기(56)에 입력으로서 결합될 수도 있고, f'(a) 출력은 승산기(58)에 입력으로서 결합될 수도 있다. 가산기(56) 및 승산기(58)는 함께 승산-가산 회로 또는 승산-가산 유닛으로서 참조될 수도 있다. 승산기(58)의 출력은 가산기(56)에 입력으로서 결합될 수도 있다. 승산기(58)는 LUT(54)로부터의 f'(a) 값은 물론, 입력 가수 및 a에 기초하는 x-a 항을 수신하도록 결합될 수도 있다.
구체적으로, 일 실시예에서, a가 간격의 중앙으로서 선택되는 경우, 도 5에 도시된 바와 같이 x-a가 계산될 수도 있다. 도 5는 x(입력 값)의 가수 부분 및 x에 대응하는 a의 값(즉, x를 포함하는 간격에 대한 a의 값)을 나타낸다. 양 가수들은 이진 소수점의 좌측에 있는 암시된 1로부터 시작한다. 게다가, 양 가수들은 간격을 정의하는 동일 세트의 MSB 가수 비트들을 갖는다. 이들 비트는 도 5에 어드레스 비트들 a6:a0으로서 표시되는데, 그 이유는 이 비트들이 LUT(54)에 대한 어드레스 비트들로서도 사용될 수도 있기 때문이다. 어드레스 비트들 뒤의 MSB는 도 5에서 x의 값 내에 부호 비트("s")로서 표시된다. 이러한 부호 비트는 간격 부호 비트로서 참조될 수도 있다. s 비트가 1인 경우, x의 값은 a 이상이고, x-a의 값은 양이다. s 비트가 0인 경우, x의 값은 a보다 작고 x-a는 음이다.
도 5에 도시된 바와 같이, a가 간격의 중앙에서 선택되는 경우, (간격 부호 비트 아래의) a의 최하위 비트들은 0이다. 따라서, x가 a보다 큰 경우에 x-a의 값은 간단히 x의 최하위 비트들(예로서, 도 5의 d6:d0)이다. x-a의 값이 음인 경우, x-a는 x의 최하위 비트들의 1의 보수이다.
도 5에 기초하는 실시예에서, 보수 델타 회로(60)는 x-a의 값을 생성하도록 구성될 수도 있다. x가 양인 경우(간격 부호 비트가 1인 경우), 보수 델타 회로(60)는 x의 최하위 비트들을 x-a로서 전달하도록 구성될 수도 있다. x-a가 음인 경우, 보수 델타 회로(60)는 x의 최하위 비트들의 1의 보수를 x-a로서 전달하도록 구성될 수도 있다. 더 일반적으로, 다른 실시예들에서, 보수 델타 회로(60)는 x로부터 a를 빼도록 구성되는 가산기로 대체될 수도 있다. 보수 델타 회로(60)의 출력은 승산기(58)에 입력으로서 결합될 수도 있다.
도 4의 실시예는 옵션으로서 반올림 LUT(62)를 포함할 수도 있다. LUT(54) 및 승산-가산 회로(56/58)는 각각의 입력 값(x)에 대한 초월/비선형 함수의 근사화를 수행한다. 따라서, 적어도 일부 결과들에서 일부 부정확성이 존재할 수도 있다. 구체적으로, 결과들은 IEEE(Institute for Electrical and Electronic Engineers) 표준 754 및 후속 표준들과 같은 부동 소수점 표준들의 정확도 요건을 충족시키지 못할 수도 있다. IEEE 표준은 결과들이 완전히 정확한 결과와 비교할 때 최종 장소에서 +/- 1/2 단위(ULP) 내로 정확할 것을 요구하며, 또한 반올림이 "통계적으로 치우치지 않을 것을" (즉, 반올림에 대한 동점들 중 절반이 반올림되고, 나머지 절반이 반내림될 것을) 요구한다. 일 실시예에서, 급수-근사화된 컴포넌트(16)는 반올림 LUT(62)를 포함하지 않고 하나의 완전한 ULP 내의 정확성을 갖는 결과들을 생성할 수도 있다. 반올림 LUT(62)는 통계적으로 치우치지 않는 요구를 충족시키는 것을 포함하는 정확한 반올림을 수행하도록 프로그래밍될 수도 있다.
일부 예들에서는, IEEE 표준 정확도를 충족시키지 못하는 결과들이 허용 가능할 수도 있다. 예를 들어, 급수-근사화된 함수들은 그래픽 연산들에서 사용될 수도 있으며, 소정 양의 정확도가 허용 가능할 수도 있는데, 그 이유는 시각 이미지가 여전히 매우 정확하고 시각적으로 만족스러울 수도 있기 때문이다. 그러나, 더 정확한 결과들이 요구되는 경우, 반올림 LUT(62)가 포함될 수도 있다. 반올림 LUT(62)는 IEEE 정확한 결과를 생성하지 않는 각각의 입력 가수 값에 대한 반올림 값을 포함할 수도 있으며, 결과를 IEEE 정확한 결과로 반올림하는 반올림 팩터를 생성할 수도 있다. 일 실시예에서, LUT(62)는 2개의 표일 수도 있으며, 하나의 표는 (IEEE 정확한 결과에 비해) 1 ULP 낮은 결과를 생성하는 입력 가수들을 목록화하고, 나머지 표는 1 ULP 높은 결과를 생성하는 입력 가수들을 목록화한다. 표들은 입력 가수가 표에서 발견되는 경우에 1을 생성할 수도 있고, 출력들은 -1(1 ULP 높음), +1(1 ULP 낮음)의 반올림을 또는 어느 표도 입력 가수를 포함하지 않는 경우에는 디폴트 0을 선택하는 mux를 제어하는 데 사용될 수도 있다.
아래에 더 상세히 설명되는 일 실시예에서, 급수-근사화된 컴포넌트(16)에 대해 실행 가능 모델이 생성될 수도 있다. 실행 가능 모델은 C, C++ 등과 같은 고레벨 프로그래밍 언어로 표현될 수도 있다. 실행 가능 모델은 실행 가능 이진 코드로 컴파일되고, 컴퓨터 내의 프로세서 상에서 실행될 수도 있다. 대안으로서, 실행 가능 모델은 실행 가능 이진 코드 또는 저레벨 프로세서 명령어들로 표현될 수도 있다. 더구나, 급수-근사화된 컴포넌트(16)의 RTL 설명서는 실행 가능 모델로서 시뮬레이션될 수 있다. 실행 가능 모델은 각각의 가능한 입력 가수에 대해 실행될 수도 있으며, 결과를 +/- 1/2 ULP 내로 반올림하는 반올림 값이 반올림 LUT(62)를 채우기 위해 기록될 수도 있다. 반올림 LUT(62)의 출력은 가산기(56)에 입력으로서 결합될 수도 있으며, 가산기 출력은 IEEE 정확한 결과일 수도 있다. 반올림 LUT(62)를 포함하지 않는 실시예들에서, 가산기(56)는 2 입력 가산기일 수도 있다.
결과는 정규 부동 소수점 수가 아닌 것이 가능하다(즉, 가수는 이진 소수점의 좌측의 단일 이진수 1 및 이진 소수점의 우측의 나머지 숫자들이 아니다). 가수를 정규화하기 위해 정규화 회로(64)가 제공될 수도 있다. 가산기(66)는 정규화 회로(64)에 의해 적용되는 시프트 양을 더함으로써 지수 계산 유닛(50)에 의해 생성되는 지수를 조정하도록 구성될 수도 있다.
급수-근사화된 함수로부터의(또는 급수-근사화된 함수를 하나의 컴포넌트로서 갖는 전체 함수로부터의) 결과에서 원하는 레벨의 정확도를 제공하기 위해 필요에 따라 가수 폭들이 선택될 수도 있다. 예를 들어, 연산되는 값들이 픽셀들인 경우, 원하는 컬러 깊이보다 다소 큰 가수 폭이 허용 가능할 수도 있다. 일반적으로, 가수의 폭이 넓을수록, 급수-근사화된 함수로부터의 결과가 정확한 결과에 비해 더 정확할 수도 있다(그 이유는 결과의 LSB들에서 에러들이 발생하기 때문이다). 그러나, 더 넓은 가수는 또한 일반적으로 더 넓은 승산기(58) 및 가산기(56)를 유발한다. 특히 승산기(58)의 경우, 증가된 폭은 집적 회로(10) 내의 급수-근사화된 컴포넌트(16)의 실현에 있어서 면적 증가를 유발할 수도 있다. 소정의 구현에 더 좁은 가수가 사용되는 경우, 최대 에러들을 줄이기 위해 더 많은 간격이 정의되는 것이 필요할 수도 있다. 더 많은 간격은 LUT(54)의 크기를 증가시킬 수도 있지만, 더 좁은 가수는 승산기(58)/가산기(56)의 크기를 줄일 수도 있다. 따라서, 급수-근사화된 컴포넌트(16)에 대한 정확도 타겟을 충족시키는 다양한 설계 변경들이 가능할 수도 있다. 일 실시예에서, 급수-근사화된 컴포넌트(16)에 대한 파라미터들을 자동으로 선택하기 위한 방법이 이용될 수도 있다. 이 방법에 관한 추가적인 상세들이 아래에 제공된다.
도 6은 급수-근사화된 컴포넌트(12)의 다른 실시예의 블록도이다. 도 6의 실시예는 (f(a), f'(a) 및 f"(a)에 대응하는) 테일러 급수의 최초 3개 항을 구현할 수도 있다. 도 4의 실시예와 유사하게, 도 6의 실시예는 정규화를 위해 지수를 조정하기 위해 지수 계산 유닛(50), 가수 계산 유닛(52) 및 가산기(66)를 구현할 수도 있다. 가수 계산 유닛(52)은 도 4의 실시예와 유사한 방식으로 결합되는 LUT(54), 승산기(58), 가산기(56)(2개 또는 3개의 입력이 아니라, 3개 또는 4개의 입력을 가짐), 정규화 회로(64), 보수 델타 회로(60) 및 옵션으로서 반올림 LUT(62)를 포함할 수도 있다.
게다가, 도 6의 실시예는 f"(a) LUT(70), 승산기(72) 및 제곱 회로(74)를 포함할 수도 있다. 제곱 회로(74)는 x-a 항을 수신하도록 결합될 수 있으며, 이를 제곱하여 승산기(72)에 대한 입력으로서 (x-a)2 항을 생성하도록 구성될 수도 있다. 일반적으로, 제곱 회로(74)는 승산기일 수도 있다. 그러나, 승산기는 승산기들(58, 72)과 같은 완전한 범용 승산기로부터 단순화될 수도 있는데, 그 이유는 동일한 값이 승산기의 양 피연산자들로서 입력되는 것으로 알려져 있기 때문이다.
승산기(72)의 나머지 입력은 LUT(70)로부터의 f"(a) 항일 수도 있다. LUT(54)와 유사하게, LUT(72)는 가수의 MSB들에 의해 인덱싱될 수도 있다. LUT(72)는 LUT(54)와 동일한 수의 엔트리들을 가질 수도 있으며, 원할 경우에는 동일 표 내에 물리적으로 포함될 수도 있다. LUT(70)의 출력은 도 3에 도시된 바와 같은 테일러 급수의 세 번째 항과 일치하도록 2의 인수(또는 단순히 2)에 의해 나누어진 f"(a) 항일 수도 있다. 따라서, 승산기(72)의 출력은 테일러 급수의 세 번째 항일 수도 있다.
도 4 및 6에 도시된 급수-근사화된 컴포넌트(16)의 실시예들은 컴포넌트(16)의 논리적 표현들이라는 점에 유의한다. 도시된 바와 같은 실시예들을 설명하는 컴포넌트(16)의 RTL 설명서가 생성될 수도 있으며, 실제 구현을 생성하기 위해 합성 도구를 이용하여 합성될 수도 있다. 합성 도구는 다양한 실시예들에서 논리적 설계의 임의의 부울 등가물(Boolean equivalent)을 생성할 수도 있다.
다양한 실시예들에서 다양한 급수-근사화된 함수들이 지원될 수도 있다. 예를 들어, 일 실시예는 log(x), antilog(x)(또는 2x), 1/x, 역제곱근, 제곱근 및 2-x 중 하나 이상을 지원할 수도 있다. 다른 실시예들은 필요에 따라 위의 함수들 및 다른 함수들의 임의의 서브세트, 또는 위의 함수들 및 다른 함수들의 모두를 지원할 수도 있다.
각각의 지원되는 함수에 대해, LUT 표들(54, 70)은 테일러 급수 근사화에 기초하여 가수를 계산하도록 개발될 수도 있다. 지수는 지수 계산 유닛(50)에 의해 직접 계산될 수도 있다. 예를 들어, 1/x에 대해, 지수가 입력 지수의 음수(즉, 1의 팩터를 빼지 않은 음수)인 정확히 1.0의 가수의 경우를 제외하고, 지수는 입력 지수에서 1을 뺀 값의 음수이다. 역제곱근은 입력 지수를 2로 나눈 값에서 1을 뺀 값(또는 가수가 정확히 1.0인 경우에는 1의 팩터를 빼지 않은 값)의 음수인 지수를 갖는다.
이어서, 도 7-14를 참조하면, 급수-근사화된 컴포넌트(16)의 다양한 실시예들이 테일러 급수로부터 얻어지는 실시예들에 대해 그래픽 형태로 도시되어 있다. 함수 1/x가 일례로서 사용된다. 각각의 도면에서, 수평축은 함수에 대한 x 입력의 가수 부분이고, 수직축은 f(x)의 값이다. 함수는 실선 곡선(80)으로 표시된다. 컴포넌트(16)로부터의 대응하는 결과는 각각의 도면에서 점선 또는 점선들로서 표시된다.
이제, 도 7을 참조하면, 급수의 최초 2개 항 및 가수에 대한 단일 간격을 이용하여 테일러 급수를 나타내는 도면이 도시되어 있다. 이 예에서, a는 간격의 중점(간격/2)으로서 선택된다. 이 예에서는 하나의 간격이 도시되므로, a는 1.5이다. 점선(82)은 이 함수에 대한 2항 테일러 급수의 결과를 나타낸다. 도면에서 알 수 있듯이, 에러는 a에서 가장 작고(0의 에러), a로부터의 거리가 증가함에 따라 증가한다. 더 많은 간격을 포함하면 에러를 줄일 수도 있다.
이 예에서 최대 에러는 간격들의 끝점들(예를 들어, 하나의 간격의 경우, 1.0 및 거의 2.0의 가수들)에 존재한다. 많은 함수에 대해, 에러는 간격의 하나의 끝에서 다른 끝에서보다 클 수도 있으며, 따라서 최대 에러는 간격의 하나의 끝에서 발생하는 에러일 수도 있다. 함수 1/x의 예에서, 변경되지 않은 2항 테일러 급수 근사화에 대한 1.0에서의 에러는 x=1.0에서 약 .111 그리고 x=2.0에서 약 0.0556이다. 그러나, a를 간격의 중앙에서 선택함으로써 x-a 생성이 보수 델타 회로(60)에서 간단히 이루어지게 할 수도 있다.
다른 실시예에서, 2항 테일러 급수에 대한 최적화가 구현되어, 간격의 각각의 끝에서의 에러가 동일(또는 급수-근사화된 컴포넌트(16)의 에러 범위들 내에서 대략 동일)하게 할 수도 있다. 각각의 끝에서 대략 동일한 에러를 제공하기 위한 한 가지 메커니즘은 f'(a) 항을 간격에 걸쳐 함수의 평균 기울기(즉, 평균 1차 도함수 f'(a))가 되도록 조정하는 것이다. 함수 1/x의 경우, 이 기울기는 -0.5일 수도 있으며, a는 2의 제곱근(예를 들어, 약 1.414)일 수도 있다. 최대 에러 크기는 감소할 수도 있는데, 그 이유는 최대 에러가 (도 7의 실시예에서 최대 에러를 갖지 않았던) 간격의 다른 끝에서 증가할 수 있는 반면에 하나의 끝에서는 감소할 수도 있기 때문이다. 그러한 실시예가 함수 1/x에 대해 점선(84)을 갖는 도 8에 그래픽으로 도시된다. 각각의 끝에서의 최대 에러는 약 0.086일 수도 있다. 간격의 중점에서의 a의 사용을 계속하기 위하여, f(a)가 평균 기울기를 갖는 최적화된 선 상에서 재평가될 수도 있다.
a는 다른 실시예들에서 상이하게 선택될 수도 있다는 점에 유의한다. 그러한 실시예들에서는, 전체 가산기가 보수 델타 회로(60) 대신 사용되어, x-a 생성 회로의 크기를 증가시킬 수도 있다.
도 9는 일 실시예에 따른 선형 보간 근사화의 이용을 나타낸다. 선형 보간 근사화는 급수-근사화된 함수의 간격 끝점들을 선(예를 들어, 도 9의 선(86))에 연결시키는 것으로서 정의될 수도 있다. 따라서, 1 간격의 예에서, 최소 에러(0)는 끝점들 x=1.0 및 2.0에 있고, 최대 에러는 중앙 근처에서 발생할 수도 있다. 도 9의 1/x에 대해, 최대 에러는 x=2의 제곱근에서 발생할 수도 있으며, 약 0.086일 수도 있다. 선형 보간 근사화가 구현되는 경우, 선(86)의 기울기는 각각의 간격에 대한 LUT(54)로부터의 f'(a) 출력일 수도 있다.
대안으로서, f(a)의 저장된 값들이 간격에 대한 기울기 f'(a)를 계산하는 데 사용될 수도 있다. 그러한 실시예에서, f(a) 항들은 각각의 간격의 끝들에 대해 저장되며, 주어진 간격에 대해 LUT(54)로부터 2개의 연속 항이 판독될 수도 있다. 일 실시예에서, LUT(54)에 제2 판독 포트를 추가하는 것을 피하기 위해 LUT(54)는 짝수 및 홀수 부분들로 분할될 수도 있다. 하나의 f(a) 항이 짝수 부분으로부터 판독되고, 나머지가 홀수 부분으로부터 판독될 수도 있다. 가산기가 2개의 f(a) 항으로부터 승산기(56) 내로 기울기(f'(a)) 항을 계산하는 데 사용될 수도 있다. x-a 항은 간격의 중앙이 아니라 끝점들로부터(예를 들어, 주어진 입력 값(x)에 더 가까운 끝점으로부터) 계산될 수도 있다. 끝점 값들 중 어느 값을 f(a)로서 사용할지를 선택하기 위해 멀티플렉서가 추가될 수도 있다.
도 10은 1/x 함수의 근사화의 또 다른 실시예를 나타낸다. 이 실시예에서는, 2항 테일러 급수 근사화(예를 들어, 도 7 또는 도 8과 관련하여 전술한 실시예)와 도 9의 선형 보간 근사화의 조합이 설명된다. 도 10의 실시예는 본 명세서에서 "중앙 피트(median fit)"로서 참조될 수도 있다. 중앙 피트는 테일러 급수 근사화들 중 하나와 선형 보간 근사화를 평균함으로써 생성될 수도 있다. 구체적으로, 일 실시예에서, 평균은 기하학적 평균일 수도 있다. 평균의 결과가 도 10에 1 간격 예에 대해 도시된다. 다수의 간격이 사용되는 경우, 간격들에 대한 LUT 값들을 생성하기 위해 간격들이 개별적으로 평균될 수도 있다. 결과적인 근사화가 도 10에 점선(88)으로 표시된다.
중앙 피트의 경우, 최대 에러는 3개의 포인트에서 발생할 수도 있지만, 이전 실시예들의 최대 에러보다 작을 수도 있다. 구체적으로, 최대 에러는 끝점들에서 그리고 중앙 근처에서(예를 들어, 도 10에 도시된 바와 같은 1/x의 경우에 x=2의 제곱근에서) 발생할 수도 있다. 최대 에러는 이 예에서 약 0.043일 수도 있다.
도 11은 4개의 간격이 사용될 때의 근사화를 나타내는 도면이다. 간격들은 도 11에서 x=1.25, 1.5, 1.75 및 2.0에 있는 굵은 수직 점선들에 의해 범위가 정해진다. 각각의 간격 내에서 도 7-10의 실시예들 중 임의의 실시예가 사용될 수도 있다. 따라서, 각각의 간격 내에서의 근사화를 나타내는 4개의 점선(90, 92, 94, 96)이 존재한다. 도 11을 도 7-10과 비교하면, 추가적인 간격들의 사용을 통해 에러가 상당히 감소할 수도 있다는 것이 명백하다. 따라서, 각각의 간격에서의 근사화의 복잡성과 사용되는 간격들의 수 사이에서 균형점이 발견될 수도 있다.
도 12는 일 실시예에서의 단일 간격을 이용하는 3항 테일러 급수 근사화의 일례이다. 2차 도함수 항을 근사화에 추가하는 것은 일반적으로 a의 양측에서 근사화를 "휘게" 하여 근사화가 양측에서 곡선에 더 가까워지게 하는 효과를 가질 수도 있다. 최초 3개 항에 기초하는 근사화가 도 12에 곡선(110)으로서 도시된다. 도 12에서 알 수 있듯이, 3항 근사화에서의 에러는 끝점들에서 가장 크다.
개량된 3항 테일러 급수 근사화가 이루어질 수도 있다. 예를 들어, 하나의 개량이 도 13에 곡선(112)으로 도시된다. 이 근사화는 간격들의 끝점들에서 에러를 대략 0으로 줄인다. 일 실시예에서, 도 13의 근사화는 (도 8의 2항 최적화와 유사하게) 기간에 걸친 평균 기울기를 f'(a) 항으로 사용하는 것을 포함할 수도 있다. f"(a) 항이 0과 동일한 것으로 가정하면, 끝점들 중 하나(예로서, 1.0 끝점)에서 에러가 계산될 수 있다. 이어서, 에러는 테일러 급수의 제3 항과 동일하게 설정될 수도 있으며, 개량된 3항 테일러 급수 근사화를 생성하기 위해 f"(a)를 풀 수도 있다. 일 실시예에서, f"(a) 항은 0.66667일 수도 있고, 에러는 약 -0.01336(최소) 및 0.009(최대)로 감소할 수도 있다. 1/x 예에 대해 +/- 0.00736의 동일한 최소 및 최대 에러들을 갖는 최적화된 해가 시행착오를 통해 결정되었다. 최적화된 해는 0.66422의 f(a), -0.48531의 f'(a) 및 0.68612의 f"(a)를 포함한다.
일반화된 함수(및 다수의 간격)에 대해 최적화된 3항 테일러 급수 근사화를 발견하는 것은 계산 집약적인 시행착오 작업일 수도 있다. 도 12에 도시된 3항 테일러 급수를 근사화하기 위한 한 가지 방법은 본 명세서에서 설명되는 바와 같은 "Vfit"를 수행하는 것이다. Vfit는 LUT(54)에 저장된 f'(a) 항 및 LUT(54)에 저장된 f"(a) 항으로부터 정확한 f'(a) 항을 생성하기 위해 추가적인 가산기와 더불어, 2항 테일러 급수와 동일한 하드웨어를 사용한다. 구체적으로, 더 가파른 하위 간격에서, LUT(54)로부터의 f"(a) 항은 LUT(54)로부터의 f'(a) 항을 더 가파르게 하는 데 사용되고, LUT(54)로부터의 f"(a) 항은 LUT(54)로부터의 f'(a) 항을 덜 가파르게 하는 데 사용된다. 도 14에 일 실시예에 대한 Vfit가 도시된다. Vfit 프로세스에서, 간격은 2개의 하위 간격으로서 취급될 수도 있으며, 하나의 하위 간격은 간격의 하나의 끝점에서 시작되고 a에서 끝나며, 나머지 하위 간격은 a에서 시작되고 간격의 나머지 끝점에서 끝난다. 간격의 중심에서 a를 선택하는 Vfit의 간소화된 버전이 도 14에 도시된다. 중앙 피트가 하나의 하위 간격(예로서, 도 14의 점선(98))에서 수행될 수도 있다. 구체적으로, 중앙 피트는 더 큰 2차 도함수를 갖는 하위 간격에서 수행될 수도 있다. 하위 간격에 대한 중앙 피트는 함수 곡선(80) 상에 있지 않은 중앙에서의 끝점에서(a에서) 종료된다. 끝점은 도 14에 포인트(100)로서 도시된다. 다른 하위 간격에 대해, 의사 중앙 피트 선(도 14의 선(102))이 구성될 수도 있다. 일 실시예에서, 선(102)은 (1) 곡선(80) 상의 포인트 f(t)를 발견하고 - f(t)는 포인트(100)를 통과하여 간격 경계로 진행하는 선이 곡선(80)에 접하는 포인트이다 -, (2) t에서의 곡선(80)과 선 사이의 수직 거리가 간격의 끝점에서의 선과 곡선(80) 사이의 수직 거리와 동일한 특성을 갖는 의사 중앙 피트 선을 구성함으로써 구성될 수 있다. 마지막으로, 간격에 대한 f'(a) 값은 포인트(100)를 통과하고 간격 에지들에서 중앙 선(98) 및 의사 중앙 선(102)으로부터 부호 및 크기 양자에서 동일하게 떨어진 선(예를 들어, 도 14의 선(104))의 기울기일 수도 있다.
LUT들(54, 70)은 다음과 같이 도 14에 도시된 근사화에 기초하여 채워질 수도 있다. f(a) 값은 포인트(100)일 수도 있으며; f'(a) 값은 선(104)의 기울기일 수도 있고, f"(a) 값은 하위 간격들 각각에 대한 도 14의 선들(98, 102)의 기울기를 생성하기 위해 f'(a) 값에 추가될 수도 있는 양 또는 음의 값일 수도 있다. 일 실시예에서, 1/x의 예에 대한 결과는 f(a)=.64983(a=1.5에서), f'(a)=-.48583, 및 f"(a)=0.18084일 수도 있다(따라서, 더 가파른 하위 간격들에서 f'(x)=-0.66667이고, 덜 가파른 하위 간격에서 f'(x)=-0.30500이다).
다른 실시예에서, 더 최적화된 Vfit가 사용될 수도 있으며, 여기서는 각각의 하위 간격에 대해 중앙 피트 선이 생성되고, a는 2개의 중앙 피트 선이 교차하는 포인트로서 선택된다. 이어서, 교점을 통과하고, 간격 에지들에서 각각의 하위 간격에 대한 중앙 선들로부터 부호 및 크기 양자에서 동일하게 떨어진 선의 기울기로서 f'(a)가 계산된다. 일 실시예에서, 1/x의 예에 대한 결과는 a=1.37258, f(a)=.71783, f'(a)=-0.54642, 및 f"(a)=0.18214일 수도 있다(따라서, 더 가파른 하위 간격들에서 f'(a)=-0.72855이고, 덜 가파른 하위 간격에서 f'(a)=-0.36428이다).
이제, 도 15를 참조하면, 컴퓨터 액세스 가능 저장 매체(200)의 일 실시예의 블록도가 도시되어 있다. 일반적으로, 컴퓨터 액세스 가능 저장 매체는 명령어들 및/또는 데이터를 컴퓨터에 제공하기 위해 사용 중에 컴퓨터에 의해 액세스 가능한 임의의 저장 매체들을 포함할 수도 있다. 예를 들어, 컴퓨터 액세스 가능 저장 매체는 자기 또는 광학 매체, 예를 들어 디스크(고정식 또는 이동식), 테이프, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW 또는 블루레이와 같은 저장 매체들을 포함할 수도 있다. 저장 매체들은 RAM(예를 들어, 동기식 동적 RAM(SDRAM), 램버스 DRAM(RDRAM), 정적 RAM(SRAM) 등), ROM 또는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리 매체들을 더 포함할 수도 있다. 저장 매체들은 저장 매체들이 명령어들/데이터를 제공하는 컴퓨터 내에 물리적으로 포함될 수도 있다. 대안으로서, 저장 매체들은 컴퓨터에 접속될 수도 있다. 예컨대, 저장 매체들은 네트워크 접속 저장 장치와 같이 네트워크 또는 무선 링크를 통해 컴퓨터에 접속될 수도 있다. 저장 매체들은 유니버설 직렬 버스(USB)와 같은 주변 장치 인터페이스를 통해 접속될 수도 있다.
도 15의 컴퓨터 액세스 가능 저장 매체(200)는 합성 도구(120), 급수-근사화된 컴포넌트 생성기(122), 급수-근사화된 컴포넌트 RTL(124), 블록 RTL(126) 및/또는 급수-근사화된 컴포넌트 실행 가능 모델(들)(128) 중 하나 이상을 저장할 수도 있다. 합성 도구(120)는 컴퓨터 상에서 실행될 때 합성 도구에 대해 본 명세서에서 설명되는 연산을 구현하는 명령어들을 포함할 수도 있다. 일 실시예에서, 합성 도구(120)는 Synopsys Inc., Cadence Design Systems Inc. 등으로부터 입수가능한 것들과 같은 상용 도구일 수도 있다. 유사하게, 급수-근사화된 컴포넌트 생성기(122)는 컴퓨터 상에서 실행될 때 급수-근사화된 컴포넌트 생성기에 대해 본 명세서에서 설명되는 연산을 구현하는 명령어들을 포함할 수도 있다. 급수-근사화된 컴포넌트 RTL(124)은 다양한 급수-근사화된 컴포넌트 실시예들의 RTL 설명서들을 포함할 수도 있다. 블록 RTL(126)은 급수-근사화된 컴포넌트들, 급수 근사화되지 않은 컴포넌트들 및/또는 다른 블록들을 인스턴스화할 수도 있는 다양한 블록들의 RTL 설명서들을 포함할 수도 있다. 급수-근사화된 컴포넌트 실행 가능 모델(128)은 급수-근사화된 컴포넌트 RTL(124)에 대응하는 실행 가능 모델들을 포함할 수도 있다. 캐리어 매체는 컴퓨터 액세스 가능 저장 매체들은 물론, 유선 또는 무선 송신과 같은 송신 매체들도 포함할 수도 있다.
설계자들이 급수-근사화된 함수들을 하드웨어로 효율적으로 구현하는 것을 돕기 위해 급수-근사화된 컴포넌트들의 라이브러리를 개발하기 위한 방법이 제공된다. 합성 도구들은 컴포넌트들의 기초 셀 라이브러리를 이용하여 급수-근사화된 컴포넌트들(예를 들어, 도 4 및 6 참조)의 LUT들 및 승산-가산 회로들을 합성하여, 효율적인 네트 리스트 구현들을 생성하려고 시도할 수도 있다. 그러나, 합성 도구들의 버전마다, 합성 도구들의 판매자마다, 셀 라이브러리마다 상당한 변경들이 존재할 수도 있다. 따라서, 합성 도구의 버전들 또는 판매자들이 변경되는 경우에 라이브러리를 재생성하기 위해 컴포넌트들(예로서, RTL(124))의 재합성 가능한 버전을 갖는 것이 바람직할 수도 있다. 즉, (합성 후에 결과적인 컴포넌트에 의해 점유되는 면적과 관련하여) 가장 작고 집적 회로(10)의 정확도 요건을 충족시키는 선택은 합성 도구의 버전/판매자에 따라 상이할 수도 있다.
급수-근사화된 컴포넌트 생성기(122)는 사용자에 의해 설정되는 입력 가이드라인들 내에서의 각각의 가능한 구현을 위해 급수-근사화된 컴포넌트 RTL(124) 및 급수-근사화된 컴포넌트 실행 가능 모델(128)을 생성하도록 구성될 수도 있다. 도 16은 급수-근사화된 컴포넌트 생성기(122)의 일 실시예의 연산을 설명하는 흐름도이다. 블록들은 이해의 편의를 위해 특정 순서로 도시되지만, 다른 순서들이 사용될 수도 있다. 급수-근사화된 컴포넌트 생성기(122)는 컴퓨터 상에서 실행될 때 컴퓨터 상에서 도 16에 도시된 연산을 구현하는 명령어들을 포함할 수도 있다.
급수-근사화된 컴포넌트 생성기(122)는 급수-근사화된 컴포넌트를 설명하는 액세스 가능 입력 파라미터들의 범위들을 수신하도록 구성될 수도 있다(블록 130). 입력 파라미터들은 예를 들어 허용 가능한 가수 폭들 및/또는 탐색표 깊이들(간격들)의 범위를 포함할 수도 있다. LUT 출력들(f(a), f'(a), f"(a))의 폭들은 입력 파라미터 폭일 수도 있거나, 파라미터들에 의해 직접 변경될 수도 있다. 파라미터들은 구현될 초월/비선형 함수를 더 포함할 수도 있다. 일부 실시예들에서, 파라미터들은 어떠한 급수 전개들(예로서, 중앙, 선형 보간, 테일러, 2항, 3항 등)이 허용 가능한지를 더 지정할 수도 있다. 파라미터들은 임의의 원하는 방식으로 급수-근사화된 컴포넌트 생성기(122)에 제공될 수도 있다. 예를 들어, 사용자는 하나 이상의 입력 장치를 이용하여 파라미터들을 직접 입력할 수도 있다. 파라미터들은 또한 파라미터 파일 내에 저장될 수도 있다. 사용자는 방법의 커버리지를 보증하기 위해, 사용자가 요건을 충족시키지 못할 것으로 생각하는 구현들을 포함하는 범위들을 정의하기로 결정할 수도 있다. 즉, 적어도 일부 작동 불가 옵션들이 시도되는 경우, 방법에서 많은 작동 가능 해법이 생성되고 분석되었다는 소정의 신뢰를 갖는 것이 가능할 수도 있다.
급수-근사화된 컴포넌트 생성기(122)는 지정된 범위들 내에서의 각각의 가능한 급수-근사화된 컴포넌트 구현을 위해 급수-근사화된 컴포넌트 RTL을 생성할 수도 있다(블록 132). 각각의 구현은 예를 들어 그 자신의 RTL 파일에 저장될 수도 있다. 생성된 구현들의 세트는 지정된 한도 내에서 소모될 수도 있다.
급수-근사화된 컴포넌트 생성기(122)는 합성 도구(120)를 호출하여 각각의 구현을 합성할 수도 있다(블록 134). 일부 실시예들에서, 급수-근사화된 컴포넌트 생성기(122)는 각각의 구현의 실행 가능 모델도 생성할 수도 있다(블록 136). 실행 가능 모델은 C 또는 C++와 같은 고레벨 프로그래밍 언어로 표현될 수도 있으며, 실행 가능 코드로 컴파일링될 수도 있다. 일반적으로, 실행 가능 모델은 대응하는 급수-근사화된 컴포넌트 생성기(122)에서 설명되는 회로의 연산을 모방하여, 동일 입력 피연산자에 대해 동일한 결과를 생성할 수도 있다. 실행 가능 모델은 예를 들어 집적 회로의 다른 컴포넌트들에 대응하는 실행 가능 코드와 함께 검증 목적들을 위해 사용될 수도 있다. 일 실시예에서, 실행 가능 모델은 각각의 가능한 입력에 대한 결과들의 탐색표, 및 입력 피연산자에 응답하여 표를 판독하는 코드를 포함할 수도 있다. 다른 실시예에서, 실행 가능 코드는 구현에 따라 결과를 계산하는 코드를 포함할 수도 있다.
급수-근사화된 컴포넌트 생성기(122)는 실행 가능 모델을 호출하고, 각각의 가능한 입력에 대해 모델을 실행할 수도 있다(블록 138). 급수-근사화된 컴포넌트 생성기(122)는 모델로부터의 결과와 정확한 결과(IEEE 정확한 결과가 요구되는지의 여부에 따라, IEEE 정확한 결과 또는 1 ULP 정확도 내의 결과)를 비교할 수도 있다. 모델은 (RTL 구현에 대응하는 결과들에 더하여) 정확한 결과들을 생성할 수도 있고, 비교를 행할 수도 있다. 대안으로서, 급수-근사화된 컴포넌트 생성기(122)는 정확한 결과들을 생성하고, 비교를 행할 수도 있다. 옵션으로서, 반올림 LUT(62)가 사용될 경우, 급수-근사화된 컴포넌트 생성기(122)는 어느 입력들이 부정확한 결과들을 생성하였는지 및 부정확도의 값에 주목함으로써 LUT(62)를 생성할 수도 있다(블록 140). 값들(또는 구체적으로 부정확도의 음수)은 부정확도를 정정하기 위해 LUT(62)에 저장될 수도 있다.
각각의 구현에 대해 합성 및 정확도 결정이 완료되면(블록 136 및 138이 완료되면), 급수-근사화된 컴포넌트 생성기(122)는 각각의 구현의 합성된 결과들에 의해 점유되는 면적을 비교할 수도 있고, 급수-근사화된 컴포넌트에 대한 정확도 요건을 충족시키는 최소 면적 구현을 선택할 수도 있다(블록 142). 합성에 의해 제공되는 네트 리스트를 배치하고 라우팅함으로써 면적이 결정될 수도 있다. 대안으로서, 면적은 네트 리스트에서 호출되는 게이트들, 맞춤형 회로들 및/또는 표준 셀들 및 이러한 다양한 회로들의 상대적 크기들로부터 추정될 수도 있다. 선택된 구현은 블록 설계자들의 블록들 내에서의 인스턴스화를 위해 블록 설계자들에 의해 이용될 수도 있는 구현들의 라이브러리에 추가될 수도 있다(블록 144).
위의 개시 내용을 충분히 인식한다면, 이 분야의 기술자들에게는 다양한 변형들 및 변경들이 명백해질 것이다. 아래의 청구항들은 모든 그러한 변형들 및 변경들을 포함하는 것으로 해석되는 것을 의도한다.

Claims (18)

  1. 집적 회로로서,
    상기 집적 회로에 대해 정의된 연산(operation)을 구현하도록 함께 결합된 복수의 컴포넌트
    를 포함하고,
    상기 복수의 컴포넌트 중 제1 컴포넌트는 함수를 구현하는 급수-근사화된(series-approximated) 컴포넌트이고,
    상기 급수-근사화된 컴포넌트는 상기 함수의 급수 전개식 표현(series expansion representation)으로부터 얻어지는 하드웨어를 이용하여 상기 함수를 구현하는 집적 회로.
  2. 제1항에 있어서,
    하드웨어는 상기 급수 전개식의 선택된 항들에 대응하는 집적 회로.
  3. 제2항에 있어서,
    상기 선택된 항들은 상기 함수의 1차 도함수를 포함하는 집적 회로.
  4. 제3항에 있어서,
    상기 선택된 항들은 상기 함수의 2차 도함수를 더 포함하는 집적 회로.
  5. 제2항에 있어서,
    상기 선택된 항들은 상기 선택된 항들을 근사화하도록 변경되는 집적 회로.
  6. 제5항에 있어서,
    제1 도함수 항이 중앙 피트(median fit)로 변경되는 집적 회로.
  7. 제5항에 있어서,
    제2 도함수 항이 v-fit로 변경되는 집적 회로.
  8. 제1항에 있어서,
    상기 제1 컴포넌트는
    상기 회로에 의해 구현되는 함수에 대응하는 제1 복수의 값 및 제2 복수의 값을 저장하는 표 - 상기 제1 복수의 값은 복수의 선택된 포인트에서의 상기 함수의 값을 포함하고, 상기 제2 복수의 값은 상기 복수의 선택된 포인트에서의 상기 함수의 1차 도함수의 값을 포함하고, 상기 표는 상기 함수에 대한 입력 피연산자(input operand)의 적어도 일부를 수신하도록 결합되고, 상기 제1 복수의 값 중 제1 값 및 상기 제2 복수의 값 중 제2 값을 출력하도록 구성되며, 상기 제1 값 및 상기 제2 값은 상기 함수의 급수 근사식 내의 항들에 대응함 -; 및
    상기 표에 결합된 승산-가산 회로(multiply-add circuitry)
    를 포함하고,
    상기 승산-가산 회로는 상기 제1 값 및 상기 제2 값에 대응하는 상기 복수의 선택된 포인트 중의 제1의 선택된 포인트와 상기 입력 피연산자 간의 차이를 제2 값에 승산하도록 구성되며, 상기 승산-가산 회로는 상기 승산의 결과를 상기 제1 값에 더하도록 구성되는 집적 회로.
  9. 제8항에 있어서,
    상기 표는 또한 제3 복수의 값을 저장하도록 구성되고, 상기 제3 복수의 값은 상기 복수의 선택된 포인트에서의 상기 함수의 2차 도함수를 포함하고, 상기 표는 상기 입력 피연산자의 상기 일부에 응답하여 상기 제3 복수의 값 중 제3 값을 출력하도록 구성되는 집적 회로.
  10. 제9항에 있어서,
    상기 승산-가산 회로는 상기 입력 피연산자와 상기 제1의 선택된 포인트 간의 차이의 제곱을 상기 제3 값에 승산하여 제2 결과를 생성하도록 구성되고, 상기 승산-가산 회로는 또한 상기 제2 결과를 상기 결과 및 상기 제1 값에 더하도록 구성되는 집적 회로.
  11. 제8항에 있어서,
    상기 제1의 선택된 포인트는 상기 제1 값 및 상기 제2 값이 사용되는 입력 피연산자 값들의 간격의 중앙에 있고, 상기 차이를 계산하도록 구성된 상기 회로는 상기 차이가 양인 경우에 상기 제1 값의 복수의 최하위 비트(least significant bits)를 상기 차이로서 제공하도록 구성되는 집적 회로.
  12. 제11항에 있어서,
    상기 차이는 상기 차이가 음인 경우에 상기 복수의 최하위 비트의 1의 보수(complement)인 집적 회로.
  13. 회로로서,
    함수에 대한 입력 피연산자의 적어도 일부를 수신하도록 결합된 표 - 상기 표는 복수의 엔트리를 갖고, 상기 복수의 엔트리 각각은 상기 입력 피연산자의 값들의 간격에 대응하고, 상기 복수의 엔트리 각각은 상기 함수의 급수 전개식 내의 제1 항에 대응하는 제1 값 및 상기 급수 전개식 내의 제2 항에 대응하는 제2 값을 저장하고, 상기 표는 상기 복수의 엔트리 중 선택된 엔트리로부터 상기 제1 값 및 상기 제2 값을 출력하도록 구성되고, 상기 선택된 엔트리는 상기 입력 피연산자에 응답하여 선택됨 -;
    상기 표에 결합되고, 상기 입력 피연산자와 값들의 상기 간격 내의 제3 값 간의 차이를 상기 제2 값에 곱하도록 구성된 승산기; 및
    상기 표 및 상기 승산기에 결합되고, 상기 제1 값을 상기 승산기의 결과에 더하도록 구성된 가산기
    를 포함하는 회로.
  14. 제13항에 있어서,
    상기 제1 값은 상기 제3 값에서의 상기 함수의 값이고, 상기 제2 값은 상기 제3 값에서의 상기 함수의 1차 도함수의 값인 회로.
  15. 제14항에 있어서,
    상기 제3 값은 상기 간격의 중앙에 있는 회로.
  16. 제14항에 있어서,
    상기 제3 값은 상기 가산기의 결과 내의 에러가 상기 간격의 각각의 끝에 대해 대략 동일해지는 값인 회로.
  17. 제14항에 있어서,
    상기 제2 값은 제3 포인트에서의 상기 함수의 1차 도함수와 상기 1차 도함수의 제2 근사화를 평균한 결과인 회로.
  18. 제17항에 있어서,
    상기 제2 근사화는 상기 함수 상에서 상기 간격의 끝점들 사이에 선을 형성함으로써 이루어지는 회로.
KR1020130034906A 2012-03-30 2013-03-29 급수 전개를 이용하는 초월 및 비선형 컴포넌트들 KR101471750B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/435,900 2012-03-30
US13/435,900 US9015217B2 (en) 2012-03-30 2012-03-30 Transcendental and non-linear components using series expansion

Publications (2)

Publication Number Publication Date
KR20130111466A true KR20130111466A (ko) 2013-10-10
KR101471750B1 KR101471750B1 (ko) 2014-12-10

Family

ID=48044571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130034906A KR101471750B1 (ko) 2012-03-30 2013-03-29 급수 전개를 이용하는 초월 및 비선형 컴포넌트들

Country Status (7)

Country Link
US (1) US9015217B2 (ko)
EP (1) EP2645199A1 (ko)
JP (1) JP5666649B2 (ko)
KR (1) KR101471750B1 (ko)
CN (1) CN103365824B (ko)
TW (1) TWI484352B (ko)
WO (1) WO2013148619A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130185345A1 (en) * 2012-01-16 2013-07-18 Designart Networks Ltd Algebraic processor
US9207880B2 (en) * 2013-12-27 2015-12-08 Intel Corporation Processor with architecturally-visible programmable on-die storage to store data that is accessible by instruction
GB2525648C (en) * 2014-05-01 2019-10-09 Imagination Tech Ltd Approximating functions
US9779272B2 (en) * 2015-04-14 2017-10-03 Analog Devices, Inc. Extended use of logarithm and exponent instructions
CN105354006B (zh) * 2015-11-27 2017-11-21 中国科学院计算技术研究所 一种非线性函数的快速运算装置及其方法
US10713013B1 (en) * 2016-02-24 2020-07-14 Xilinx, Inc. Apparatus and method for an exponential operator for a half-precision floating-point format
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10055195B2 (en) 2016-09-20 2018-08-21 Altera Corporation Variable precision floating-point adder and subtractor
US10331162B2 (en) * 2017-05-15 2019-06-25 International Business Machines Corporation Power series truncation using constant tables for function interpolation in transcendental functions
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929778B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10929760B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10871946B2 (en) 2018-09-27 2020-12-22 Intel Corporation Methods for using a multiplier to support multiple sub-multiplication operations
US10732932B2 (en) 2018-12-21 2020-08-04 Intel Corporation Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension
US20210200539A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Generic linear unit hardware accelerator
CN112749803B (zh) * 2021-03-05 2023-05-30 成都启英泰伦科技有限公司 一种神经网络的激活函数计算量化方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3003A (en) * 1843-03-17 Improvement in the method of propelling vessels by means of continuous streams of water
US4482975A (en) * 1982-03-29 1984-11-13 Motorola, Inc. Function generator
US5197024A (en) 1989-06-14 1993-03-23 Pickett Lester C Method and apparatus for exponential/logarithmic computation
US5224064A (en) 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
JP3091574B2 (ja) 1992-07-21 2000-09-25 三洋電機株式会社 データ変換回路及びデータ変換方法
US5367702A (en) * 1993-01-04 1994-11-22 Texas Instruments Incorporated System and method for approximating nonlinear functions
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5600581A (en) 1995-02-22 1997-02-04 Motorola, Inc. Logarithm/inverse-logarithm converter utilizing linear interpolation and method of using same
US5963460A (en) 1996-12-17 1999-10-05 Metaflow Technologies, Inc. Apparatus for computing transcendental functions quickly
US6223192B1 (en) * 1997-10-23 2001-04-24 Advanced Micro Devices, Inc. Bipartite look-up table with output values having minimized absolute error
US6127860A (en) 1997-11-17 2000-10-03 Lucent Technologies, Inc. Linear expansion based sine generator
US6363405B1 (en) 1997-12-24 2002-03-26 Elbrus International Limited Computer system and method for parallel computations using table approximation methods
US6567831B1 (en) * 1997-12-24 2003-05-20 Elbrus International Limited Computer system and method for parallel computations using table approximation
KR100321705B1 (ko) 1998-09-29 2002-03-08 이계철 2의멱수함수를이용한신경회로망의비선형함수변환장치및그방법
US6581085B1 (en) * 1999-05-12 2003-06-17 Ati International Srl Approximation circuit and method
US6760390B1 (en) 2000-10-25 2004-07-06 Motorola, Inc. Log-map metric calculation using the avg* kernel
US6807554B2 (en) 2001-08-10 2004-10-19 Hughes Electronics Corporation Method, system and computer program product for digitally generating a function
US6931612B1 (en) 2002-05-15 2005-08-16 Lsi Logic Corporation Design and optimization methods for integrated circuits
US6981009B2 (en) 2002-07-09 2005-12-27 Silicon Integrated Systems Corp. Apparatus and method for computing a logarithm of a floating-point number
US7117238B1 (en) * 2002-09-19 2006-10-03 Nvidia Corporation Method and system for performing pipelined reciprocal and reciprocal square root operations
KR100499111B1 (ko) 2003-04-30 2005-07-04 삼성탈레스 주식회사 급수전개함수의 근사화 방법 및 그 시스템
JP3845636B2 (ja) 2004-01-21 2006-11-15 株式会社東芝 関数近似値の演算器
JP2005227811A (ja) 2004-02-10 2005-08-25 Olympus Corp 近似回路
JP2006065633A (ja) 2004-08-27 2006-03-09 Sony Computer Entertainment Inc 演算方法および装置
US8346831B1 (en) 2006-07-25 2013-01-01 Vivante Corporation Systems and methods for computing mathematical functions
JP4755129B2 (ja) 2007-03-16 2011-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8099685B2 (en) 2007-07-31 2012-01-17 Mentor Graphics Corporation Model based microdevice design layout correction
CN101741775B (zh) * 2009-12-22 2013-03-06 上海大学 基于泰勒展开的单频率的ofdm时变信道估计方法
US8570203B2 (en) 2010-08-27 2013-10-29 M.S. Ramaiah School Of Advanced Studies Method and apparatus for direct digital synthesis of signals using Taylor series expansion
US20130185345A1 (en) * 2012-01-16 2013-07-18 Designart Networks Ltd Algebraic processor
US8504954B1 (en) 2012-03-30 2013-08-06 Apple Inc. Methodology for automatically generating series-approximated components

Also Published As

Publication number Publication date
US20130262540A1 (en) 2013-10-03
JP2013214305A (ja) 2013-10-17
CN103365824B (zh) 2016-08-24
US9015217B2 (en) 2015-04-21
CN103365824A (zh) 2013-10-23
WO2013148619A1 (en) 2013-10-03
JP5666649B2 (ja) 2015-02-12
KR101471750B1 (ko) 2014-12-10
TWI484352B (zh) 2015-05-11
EP2645199A1 (en) 2013-10-02
TW201346594A (zh) 2013-11-16

Similar Documents

Publication Publication Date Title
KR101471750B1 (ko) 급수 전개를 이용하는 초월 및 비선형 컴포넌트들
US8504954B1 (en) Methodology for automatically generating series-approximated components
US8539014B2 (en) Solving linear matrices in an integrated circuit device
US8396914B1 (en) Matrix decomposition in an integrated circuit device
US8577951B1 (en) Matrix operations in an integrated circuit device
US8990278B1 (en) Circuitry for computing mathematical functions
US20200225912A1 (en) Approximating Functions
Tlelo-Cuautle et al. VHDL descriptions for the FPGA implementation of PWL-function-based multi-scroll chaotic oscillators
Coleman et al. A 32 bit logarithmic arithmetic unit and its performance compared to floating-point
TW201818266A (zh) 用查找表執行遞歸運算的方法、設備及其測試方法
Deng et al. Automated optimization of look-up table implementation for function evaluation on FPGAs
Sadeghian et al. Optimized low-power elementary function approximation for Chebyshev series approximations
Alimohammad et al. A unified architecture for the accurate and high-throughput implementation of six key elementary functions
Sivasankaran Design and implementation of high speed and high accuracy fixed-width modified booth multiplier for DSP application
US10037191B2 (en) Performing a comparison computation in a computer system
Lee et al. A parallel look-up logarithmic number system addition/subtraction scheme for FPGA
Chen et al. Design and implementation of decimal reciprocal unit
NAIK RAJEEV GANDHI MEMORIAL COLLEGE OF ENGINEERING AND TECHNOLOGY
GB2522948A (en) Check Procedure For Floating Point Operations
Michard et al. Divgen: a divider unit generator
Ruddy Computational acceleration for next generation chemical standoff sensors using fpgas
WO2016203085A1 (es) Sistema y método para la optimización de anchos de palabra de circuitos digitales mediante simulaciones bit-true

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
LAPS Lapse due to unpaid annual fee