KR20210130098A - 하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템 - Google Patents

하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템 Download PDF

Info

Publication number
KR20210130098A
KR20210130098A KR1020210033796A KR20210033796A KR20210130098A KR 20210130098 A KR20210130098 A KR 20210130098A KR 1020210033796 A KR1020210033796 A KR 1020210033796A KR 20210033796 A KR20210033796 A KR 20210033796A KR 20210130098 A KR20210130098 A KR 20210130098A
Authority
KR
South Korea
Prior art keywords
operator
integer
function
approximation
floating
Prior art date
Application number
KR1020210033796A
Other languages
English (en)
Inventor
릴롱 쉬
천지 왕
이빙 미쉘 왕
광오 김
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210130098A publication Critical patent/KR20210130098A/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • 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/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

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)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Nonlinear Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

디지털 처리 장치를 이용하여 수학적인 함수를 근사화하기 위한 시스템 및 방법이 개시된다. 가속 함수는 수학적 함수용의 적어도 하나의 연산자에 수행된다. 상기 가속 함수는 상기 수학적 함수를 근사화하는 소정의 시퀀스의 덧셈 연산들을 포함하고, 상기 수학적 함수는 밑이 2인 로그 함수, 2의 승수, 곱셈, 역 제곱근, 역함수, 나눗셈, 제곱근, 및 아크 탄젠트를 포함할 수 있다. 상기 소정의 시퀀스의 덧셈 연산들은 제1 소정의 수의 정수 형식의 연산자들의 덧셈들과 제2 소정의 수의 부동 소수점 형식의 연산자들의 덧셈들을 포함하며, 여기서 정수 형식의 연산자들의 덧셈들과 부동 소수점 형식의 연산자들의 덧셈들은 임의의 순서로 발생할 수 있다.

Description

하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템{HARDWARE ACCELERATION MACHINE LEARNING AND IMAGE PROCESSING SYSTEM WITH ADD AND SHIFT OPERATIONS}
본원에 개시된 내용은 계산 장치들(computing devices)에 관한 것이다. 더욱 상세하게는, 본원에 개시된 내용은 복잡한 수학적 함수들이 덧셈 및 시프트 연산들을 이용하는 근사화에 의해 대체된 시스템 및 방법에 관한 것이다.
머신 러닝(machine-learning)(ML) 트레이닝 및 유추 애플리케이션은 전형적으로 컨벌류선, 내적 및 행렬 곱과 같은 함수들용의 곱셈을 수행하기 위해 32 비트 부동 소수점 연산들을 이용하는 계산적으로 고비용인 복잡한 수학적 함수들과 관련된다. 계산적으로 고비용인 다른 복잡한 수학적 함수들은, 이에 한정됨이 없이, 제곱근, 로그 함수, 나눗셈, 삼각 함수(사인 및/또는 코사인), 및 푸리어 변환을 포함한다. 또한, ML 트레이닝 및 유추 애플리케이션을 위해 이용되는 하드웨어는 전형적으로 큰 파워 소모 특성을 가질 수 있으며, 칩 상에서 해당하는 큰 하드웨어 풋프린트(영역)를 커버할 수 있다.
다양한 세트의 복잡한 수학적 계산들을 위한 작은 하드웨어 풋프린트를 생성하는 것은 중요한 설계 트레이드 오프의 고려를 포함한다. 다른 한편, 그러나, 또한 파워 소모를 감소시키면서 칩 상에서 하드웨어 풋프린트의 영역을 감소시키기 위하여 수학적 연산들의 세트를 단순화하는 것이 유리할 수 있다. 예를 들어, 모바일 폰들은 제한된 유용 파워를 가진다. 따라서, 작은 하드웨어 풋프린트를 이용하여 다양한 세트의 복잡한 수학적 계산을 수행하고 감소된 파워 소모 특성을 갖는 칩을 갖는 것이 유리할 수 있다.
본 개시의 목적은 복잡한 수학적 함수들이 덧셈 및 시프트 연산들을 이용하는 근사화에 의해 대체된 시스템 및 방법를 제공하는 것이다.
일 예시 실시예는 디지털 처리 장치를 이용하여 수학적 함수를 근사화하는 방법을 제공하고, 상기 디지털 장치는: 수학적 함수용의 적어도 하나의 연산자 상의 가속 함수를 수행하되, 상기 가속 함수는 상기 수학적 함수를 근사화하는 소정의 시퀀스의 덧셈 연산들을 포함하고, 상기 수학적 함수는 밑이 2인 로그 함수, 2의 승수, 곱셈, 역 제곱근, 역함수, 나눗셈, 제곱근, 및 아크 탄젠트를 포함하는 단계; 및 상기 디지털 처리 장치가 상기 가속 함수를 수행한 결과를 리턴시키는 단계를 포함할 수 있다. 일 실시예에서, 상기 소정의 시퀀스의 덧셈 연산들은 제1 소정의 수의 정수 형식의 연산자들의 덧셈들과 제2 소정의 수의 부동 소수점 형식의 연산자들의 덧셈들을 포함할 수 있고, 여기서 정수 형식의 연산자들의 덧셈들과 부동 소수점 형식의 연산자들의 덧셈들은 임의의 순서로 발생할 수 있다.
예시 실시예는 디지털 컴퓨팅 장치를 제공하며, 상기 디지털 컴퓨팅 장치는 메모리와 디지털 처리 장치를 포함할 수 있다. 상기 메모리는 값들을 저장할 수 있다. 상기 디지털 처리 장치는 상기 메모리에 결합될 수 있다. 상기 디지털 처리 장치는: 상기 메모리에 저장된 적어도 하나의 값과 관련된 수학적 함수용의 가속 함수를 수행하는 단계로서, 상기 가속 함수는 상기 수학적 함수를 근사화하는 소정의 시퀀스의 덧셈 연산들을 포함하고, 상기 수학적 함수는 밑이 2인 로그 함수, 2의 승수, 곱셈, 역 제곱근, 역함수, 나눗셈, 제곱근, 및 아크 탄젠트를 포함하고; 및 상기 가속 함수를 수행한 결과를 리턴시킬 수 있다. 일 실시예에서, 상기 소정의 시퀀스의 덧셈 연산들은 제1 소정의 수의 정수 형식의 연산자들의 덧셈들과 제2 소정의 수의 부동 소수점 형식의 연산자들의 덧셈들을 포함하며, 여기서 정수 형식의 연산자들의 덧셈들과 부동 소수점 형식의 연산자들의 덧셈들은 임의의 순서로 발생할 수 있다.
본 발명 에 따르면, 복잡한 수학적 함수들이 덧셈 및 시프트 연산들을 이용하는 근사화에 의해 대체될 수 있다.
하기에서는, 본원에 개시된 내용의 양태들이 도면에 도시된 예시적인 실시예를 참조하여 기술될 것이다.
도 1은 본원에 개시된 내용에 따라 덧셈 및 시프트 연산들을 기반으로 하는 근사치를 이용한 복잡한 수학적 함수를 계산하는 예시적인 시퀀스를 도시한다.
도 2는 본원에 개시된 내용에 따라 계산을 가속시키고 레이턴시 및 파워 소모를 줄이기 위해 어디에서 가속 함수가 사용될 수 있는지를 계산적으로 복잡한 수학적 함수들을 이용한 전형적인 구배 히스토그램(histogram of gradient: HoG) 검출기의 예시를 도시한다.
도 3은 본원에 개시된 내용에 따라 가속 함수들을 수행하는 디지털 기반의 처리 장치를 구비하는 전자 장치를 도시한다.
상세한 설명에서, 본 개시의 완전한 이해를 제공하기 위해 수 많은 특정의 구체적인 사항들이 설명된다. 그러나, 본 개시된 양태들은 이러한 특정의 구체적인 사항들이 없이도 실행될 수 있음은 당업자에 의해 이해될 것이다. 다른 경우에, 공지된 방법들, 절차들, 부품들, 및 회로들은 본원에 개시된 내용을 불명료하게 하지 않기 위해 상세히 기술되자 않는다.
본 명세서를 통하여, “하나의 실시예” 또는 “일 실시예”의 참조는 그 실시예와 연관되어 기술된 특별한 특징, 구조, 또는 특성이 본원에 개시된 적어도 하나의 실시예에 구비될 수 있음을 의미한다. 따라서, 본 명세서를 통하여 여러 곳에서 구문 “하나의 실시예에서” 또는 “일 실시예에서” 또는 “일 실시예에 따라” (또는 유사한 의미를 갖는 다른 구문들)가 나타나는 것은 반드시 모두가 동일한 실시예를 참조하지 않아도 된다. 또한, 특별한 특징들, 구조들, 또는 특성들이 하나 이상의 실시예에서 어떤 적절한 방식으로 조합될 수 있다. 이와 관련하여, 본원에서 사용되었듯이, 단어 “예시적인”은 “예시, 경우 또는 도시”를 위해 제공되는 것을 의미한다. 본원에서 “예시적인”으로 기술된 어떤 실시예는 다른 실시예들에 대해 반드시 더 선호하는 또는 장점을 갖는 것으로서 해석되지는 않는다. 또한, 특별한 특징들, 구조들, 또는 특성들이 하나 이상의 실시예에서 어떤 적절한 방식으로 조합될 수 있다. 또한, 본원에서의 논의의 문맥에 따라, 단수의 용어가 해당 단수 형태를 포함하는 해당 복수의 형태 또는 복수의 용어를 구비할 수 있다. 유사하게, 하이픈으로 연결된 용어(예: “2차원의(two-dimensional)”, “소정의(pre-determined)”, “픽셀 특정의(pixel-specific), 등)가 해당하는 하이픈으로 연결되지 않은 버전(예: “2차원의(two dimensional)의”, “소정의(predetermined)”, “픽셀 특정의(pixel specific), 등)과 함께 때때로 서로 바꾸어 쓸 수 있도록 사용될 수 있으며, 대문자로 시작하는 단어(예: 카운터 클록(Counter Clock), “로우 설렉트(Row Select)”, “PIXOUT”, 등)는 해당하는 대문자로 시작하지 않는 버전(예: 카운터 클록(counter clock), “로우 설렉트(row select)”, “pixout”, 등)과 함께 서로 바꾸어 쓸 수 있도록 사용될 수 있다. 이러한 때때로 서로 바꾸어 쓰는 것은 서로 불일치하는 것으로 간주되어서는 안된다.
또한, 본원에서의 논의의 문맥에 따라, 단수의 용어가 해당 단수 형태를 포함하는 해당 복수의 형태 또는 복수의 용어를 구비할 수 있다. 본원에서 도시되고 논의된 (부품도를 포함하는) 여러 도면은 단지 도시 목적이며, 크기대로 도시되지 않았음을 또한 유의해야 한다. 유사하게, 여러 파형들과 타이밍도들은 단지 도시 목적으로 도시되어 있다. 예를 들어, 구성요소의 몇몇의 크기는 명확성을 위해 다른 구성요소에 비해 상대적으로 과장될 수도 있다. 또한, 적절히 고려되면, 참조 부호들은 해당 및/또는 유사한 구성요소를 나타내기 위해 도면들 사이에서 반복되어 있다.
본원에서 사용되는 용어들은 단지 몇몇 예시 실시예들을 기술하는 것을 목적으로 하며, 청구되는 내용을 한정하는 것을 의도하지는 않는다. 본원에서 사용되는 바와 같이, 문맥이 명확히 다르게 지칭하지 않는 한, 단수 형태 “하나의(a, an)”및 “상기(the)”는 또한 복수 형태를 포함한다. 본 명세서에서 사용될 때, 용어들 “포함하다” 및/또는 “포함하는”은 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 부품들의 존재를 규정하며, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 부품들, 및/또는 그룹들의 존재 또는 부가를 배제하지 않는다. 본원에서 사용된 용어들 “제1”“제2”등은 서로 선행하는 명사를 위한 표시로서 사용되며, 명확히 다르게 정의되지 않는 한 (예를 들어, 공간적인, 시간적인, 로직적인, 등의) 순서의 어떤 형태를 의미하지는 않는다. 또한, 동일한 참조 부호들은 동일한 또는 유사한 기능을 갖는 부분들, 부품들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위해 2개 이상의 도면에 걸쳐 사용될 수 있다. 이러한 사용은 그러나 단지 논의의 도시의 간략화와 용이성을 위한 것이며, 이러한 부품들 또는 유닛들의 구조적 및 설계적 상세 항목들은 모든 실시예를 통해서 같다거나 이러한 공통적으로 참조되는 부분들/모듈들이 본원에 개시된 예시 실시예들의 몇몇을 수행하기 위한 유일한 방법이라는 것의 의미하지는 않는다.
요소 또는 층이 다른 요소 또는 층의 “위에 있다”, “연결된다”, 또는 “결합된다”라고 언급될 때, 이는 그 다른 요소 또는 층의 직접 위에 있거나, 연결되거나, 결합되거나, 또는 중간에 또 다른 요소나 층이 존재할 수 있음을 의미한다. 반대로, 요소가 다른 요소 또는 층의 “바로 위에 있다”, “직접 연결된다”, 또는 “직접 결합된다”라고 언급될 때, 그 중간에 다른 요소나 층이 존재하지 않는다. 유사한 참조부호들은 본원을 통하여 유사한 요소들을 지칭한다. 본원에서 사용되듯이, 용어 “및/또는”는 연관된 나열된 항목의 하나 이상의 어떤 및 모든 조합을 포함한다.
본원에서 사용된 용어들 “제1”“제2”등은 서로 선행하는 명사를 위한 표시로서 사용되며, 명확히 다르게 정의되지 않는 한 (예를 들어, 공간적인, 시간적인, 로직적인, 등의) 순서의 어떤 형태를 의미하지는 않는다. 또한, 동일한 참조 부호들은 동일한 또는 유사한 기능을 갖는 부분들, 부품들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위해 2개 이상의 도면에 걸쳐 사용될 수 있다. 이러한 사용은 그러나 단지 논의의 도시의 간략화와 용이성을 위한 것이며, 이러한 부품들 또는 유닛들의 구조적 및 설계적 상세 항목들은 모든 실시예를 통해서 같다거나 이러한 공통적으로 참조되는 부분들/모듈들이 본원에 개시된 예시 실시예들의 몇몇을 수행하기 위한 유일한 방법이라는 것의 의미하지는 않는다.
달리 정의되지 않으면, 본원에서 사용되는 (기술적 및 과학적 용어를 포함하는) 모든 용어들은 본 내용이 속하는 당업자에 의하여 통상적으로 이해되는 바와 같이 동일한 의미를 가진다. 통상적으로 이용되는 사전에서 정의된 것들과 같은 용어들은 관련 분야의 문맥에서의 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며 본원에서 그와 같이 표현적으로 정의되지 않는 한 이상화된 지나치게 형식적인 의미로 해석되지 않아야 함을 또한 이해하여야 한다.
본원에서 사용되었듯이, 용어 “모듈”은 모듈과 관련되어 본원에 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 어떤 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어들로 구현될 수 있으며, 본원에서 기술된 어떤 구현예에서 사용된 용어 “하드웨어”는, 예를 들어, 단독으로 또는 어떤 조합으로, 하드와이어드 회로, 프로그래머블 회로, 스테이트 머신 회로, 및/또는 프로그래머블 회로에 의해 실행되는 명령어를 저장하는 펌웨어를 포함할 수 있다. 모듈들은, 일괄적으로 또는 개별적으로, 보다 큰 시스템의 부분, 예를 들어, 이에 한정됨이 없이, 집적 회로(IC), 시스템 온 칩(SoC) 등을 형성하는 회로로서 구현될 수 있다.
본원에 개시된 내용은 구현할 더 적은 파워 및/또는 칩 영역을 이용하는 덧셈 및 시크트 연산들의 조합을 이용하여 복잡한 수학적 함수를 근사화하고, 결과를 산출하기 위해 개선된 레이턴시를 제공하는 시스템 및 방법을 제공한다. 본원에 개시된 내용은, 곱셈 연산과 같이, 계산적으로 복잡하고 고비용의 정확한 수학적 함수를 수학적 함수의 근사치인 함수로 대체하기 위하여 사용될 수 있다. 일 실시예에서, 본원에 개시된 내용은 높은 정확도를 유지하면서(즉, 약 0.3% 미만의 오류를 가지면서) 배타적으로 ADD와 SHIFT 연산들의 조합을 이용하여 계산적으로 복잡한 함수들을 근사화한다. 계산적으로 복잡한 수학적 함수를 대체하는 이 근사화 함수는, 이 근사화 함수가 가속 함수에 해당하는 계산적으로 복잡한 수학 함수보다 빨리 동작하기 때문에, 본원에서 가속 함수로 지칭될 수 있다.
계산적으로 복잡한 수학적 함수를 대체하는 가속 함수를 이용하면 디지털 기반 처리 장치 및/또는 디지털 기반 애플리케이션을 위한 계산적 워크 로드(workload)를 감소시킬 수 있다. 가속 함수에 의해 대체될 수 있는 계산적으로 복잡한 수학적 함수들은 컨벌류션(convolution), 내적(dot-product), 행렬 곱, 제곱근, 로그 함수, 나눗셈, 삼각함수(사인 및/또는 코사인), 및/또는 푸리어 변환을 포함할 수 있다. 이러한 가속 함수는 또한, 예를 들어, 32비트 부동소수점 수로부터 1비트 내지 16비트 정수(또는 하위 비트(낮은 비트), 즉 12비트, 10비트 등)로의 비트 감소; 부동 소수점 기반의 연산들을 대신하는 정수 기반 연산들; 배타적 OR(XOR) 연산들, 시프트 연산들, 룩업 테이블들을 이용한 곱셈 연산들의 감소; 및 테일러 시리즈 또는 뉴톤 방법과 같은 수치 근사화를 제공할 수 있다.
본원에서 개시된 내용은, 또한 임의의 알고리즘들과 애플리케이션들를 가속하기 위해서 적용될 수 있지만, 에지 장치 상의 트레이닝과 유추를 위한 머신 러닝 및 컴퓨터 비전 알고리즘들에 적용 가능하다. 하드웨어 설계는 복잡한 수학적 연산들을 위한 회로를 덧셈, 뺄셈, 및 시프트 연산들을 위한 회로로 대체하여 단순화되고 가속화될 수 있다.
도 1은 본원에 개시된 내용에 따라 덧셈 및 시프트 연산들을 기반으로 하는 근사치를 이용한 복잡한 수학적 함수를 계산하는 예시적인 시퀀스(100)를 도시한다. 예시 시퀀스(100)를 수행하는 근본적인 하드웨어는 덧셈 및 시프트 연산들을 기반으로 하는 근사화를 수행하기 위한 근본적인 하드웨어를 구비하도록 구성될 수 있음을 이해하여야 한다. 일 실시예에서, 본원에 개시된 내용은 가속 함수들과 연관되어 본원에 기재된 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 어떤 조합을 포함할 수 있는 모듈로서 구현될 수 있다.
101에서, 복잡한 수학적 함수는, 컨트롤러(310) 및/또는 이미지 처리 장치(350)(둘다 도 5)와 같은 디지털 처리 장치에 의해 수행된다. 예를 들어, 복잡한 수학적 함수는, 이에 한정됨이 없이, 컨벌류션, 내적, 행렬 곱, 제곱근, 로그 함수, 나눗셈, 삼각함수(사인 및/또는 코사인), 및 푸리어 변환을 포함할 수 있다. 본원에 개시된 바와 같이, 복잡한 수학적 함수는 계산적으로 덜 복잡하고 덧셈 및 시프트 연산들에 기반을 둘 수 있는 가속 함수에 의해 대체될 수 있다.
102에서, 복잡한 수학적 함수는 해당하는 가속 함수에 의해서 근사화될 수 있다. 그렇지 않으면, 순서는 103으로 이어지며, 거기서 계산적으로 복잡한 수학적 함수가 실행된다. 102에서, 수학적 함수는 해당하는 가속 함수에 의해 근사화될 수 있으면, 순서는 104로 이어지며, 거기서 계산적으로 복잡한 수학적 연산에 해당하는 소정의 시퀀스의 덧셈 및 시프트 연산들일 수 있는 가속 함수가 수행된다. 복잡한 수학적 함수용의 연산자(들)는 IEEE 754 형식을 이용하여 나타낼 수 있는 부동 소수점 및/또는 정수들일 수 있다.
표 1은 하나의 시퀀스의 덧셈 및/또는 이진 시프트 연산을 포함할 수 있고 복잡한 수학적인 함수들을 근사화하는데 사용될 수 있는 가속 함수들의 예시 세트를 보여준다. 표 1에서 보여지지 않는 다른 함수들은 (테일러 시리즈와 같은) 수치적 근사치에 의해 근사화될 수 있으며, 이때 근사치의 각 항(term)은 ADD/SUB/SHIFT 연산들에 의해 대체될 수 있다.
함수 가속 함수 복잡성 도메인 오류 한계
log2(x) e+m+ Σ0 1 fadd, 1 iadd [2-10, 210] 0.043
pow2(x) t ←x- Σ0; e←
Figure pat00001
; m←x-
Figure pat00002
1 fadd, 1 iadd [-10, 10] 3%
mul(x,y) pow2(log2(x)+log2(y)) 2 iadd [0, 100] 6%
isqrt(x) Σ1 - (x>>1) 1 iadd [10-8, 104] 4%
inv(x) isqrt(mul(x,x) - -
Σ2 - x 1 iadd
div(y,x) mul(y,inv(x)) [1, 255] 7%
pow2(log2(x)-log2(y)) 2 iadd
sqrt(x) isqrt(isqrt(mul(x,x))) [-255, 255] 6%
Σ3 + (x>>1) 1 iadd
atan(y,x) div(y,x) 2 iadd [-255, 255]
표 1에서, 최좌측의 행은 하나의 시퀀스의 덧셈 및 시프트 연산들을 이용하는 가속 함수에 의해 근사화될 수 있는 몇몇 복잡한 수학적 함수들을 열거한다. 우측으로 다음 행은 같은 행에서 복잡한 수학적 함수를 대체하는데 수행될 수 있는 덜 복잡한 가속 함수를 보여준다. 중간 행은, “fadd”가 부동 소수점 덧셈 연산을 나타내고 “iadd”가 정수 덧셈 연산을 나타내는 가속 함수의 복잡성을 보여준다. “도메인”으로 명명된 행은 가속 함수로의 입력의 도메인 또는 범위를 보여주며, 최우측의 행은 가속 함수의 오류 한계를 보여준다.
표 1의 첫번째 열에서, 복잡한 수학적 함수는 x의 밑이 2인 로그 함수(즉, log2(x))이다. 복잡한 수학적 함수의 연산자 x는 가수와 지수를 갖는 부동 소수점 형식이어야 한다. 가속 함수는 정수 덧셈 연산으로서 가수(m)과 지수(e)를 더하고, 부동 소수점 덧셈 연산으로서 가수와 지수의 합에 값(S1)을 더하여 밑이 2인 로그 함수를 생성시킨다. 값 S0은 log2(x)의 근사치의 정확성을 증가시키는 상수 옵셋이다. “매직 수들(magic numbers)”로서 지칭될 수 있는, Σ0와 표 1에서 Σ1- Σ3로 나타낸 다른 상수들의 값들은 함수로부터 함수로 변할 수 있고, 가수의 비트들의 수에 따라 변할 수 있다.
표 1의 두번째 열에서, 복잡한 수학적 함수는 x의 2 승수(즉, pow2(x))이다. 정수 형식에서 임시값(t)은 연산자(x) 빼기(또는 부의 덧셈) 값(α)으로서 생성될 수 있다. 플로어 함수는 x의 2승수의 결과의 지수를 생성하기 위해 t의 임시값 상에서 수행될 수 있다. 가수는 연산자(x) 빼기 임시값(t)의 플로어 함수로서 생성될 수 있다.
표 1의 세번째 열에서, 복잡한 수학적 함수는 제1 연산자(x)와 제2 연산자(y)의 곱이다(즉, mul(x,y)). mul(x,y)용의 가속 함수는 이론적 오류 한계([E-, E+] of [2/(1.5- σ/2)2-1, +σ]) 또는 약 ±6%를 갖는 pow2(log2(x)+log2(y)) 이다. log2(x)용의 가속 함수는 표 1의 첫번째 열에서 나타나고, pow2(x)용의 가속 함수는 표 1의 두번째 열에서 나타난다. 정량화 오류는 작은 정수 값들에서 커진다. 하기의 예시 유사 코드는 더 많은 정확한 결과를 위한 보정항을 포함한다:
IF mx + my < 1
MUL_C(x,y) ←MUL(X,Y) + MUL(POW2(ex+ey),MUL(mx,my))
ELSE
MUL_C(x,y) ←MUL(X,Y) + MUL(POW2(ex+ey), MUL(1-mx, 1-my))
ENDIF
상기 예시 유사 코드는 ±3%의 20x 오류 감소를 가져온다. 이 오류 감소는 표 2에 보여진다.
INT x*y MUL(x,y) MUL_C(x,y)
8 bit 16 bit 16 bit 12 bit 10 bit
절대 오류 α 0.1835 0.8581 0.0475 0.1300 0.5110
상대 오류(%) α 1.6% 2.7% 0.15% 0.33% 1.2%
Error Bound +22% +2.4% +0.42% +0.84% +2.9%
표 2의 결과들은 범위 (0,10)의 10,000(x,y)값 쌍으로부터의 몬테 카를로(Monte Carlo) 시뮬레이션으로부터 얻어졌다. 절대 오류는 z_est-z_act로 정의될 수 있다. 상대 오류는 (z_est-z_act)/z_act*100%로 정의될 수 있다.
표 1을 다시 참조하면, 표 1의 4번째 열에서, 복잡한 수학적 함수는 연산자(x)의 역제곱근(즉, isqrt(x))이다. 가속 함수는, 상수(Σ1) 빼기 우측으로의 정수 형식의 연산자(x)의 이진 시프트로부터의 결과인 값이다. 상수(Σ1)는 상수((Σ0)로부터 얻어질 수 있다.
표 1의 다섯번째 열에서, 복잡한 수학적 함수는 연산자(x)의 역수(즉, inv(x))이다. 연산자(x)의 역수의 하나의 가속 함수는, 표 1의 열 4 및 열 4에 각각 보여진 x 곱하기 x의 곱셈의 역제곱근이다. 다른 가속 함수는 정수 형식에서 상수((Σ2) 빼기 연산자(x)이다.
표 1의 여섯번째 열에서, 복잡한 수학적 함수는 제수(divisor)(x)의한 피제수(divident)(y)의 몫이다. div(y,x)의 하나의 가속 함수는, 도 1의 열 3과 열 4에 각각 보여진 x의 역수와 y의 곱셈이다. div(y,x)의 다른 가속 함수는 pow2(log2(x)-log2(y))이다. log2(x)의 가속 함수는 표 1의 첫번째 열이고, pow2(x)의 가속 함수는 표 1의 두번째 열이다.
표 1의 일곱번째 열에서, 복잡한 수학적 함수는 연산자(x)의 제곱근(즉, sqrt(x))이다. sqrt(x)의 하나의 가속 함수는, mul(x,x)의 가속함수가 표 1의 열 3에 보여진 isqrt(isqrt(mul(x,x)))이고, isqrt(x) i를 위한 상기 가속 함수는 표 1의 열 4에 보여진다. sqrt(x)의 다른 함수는 상수((Σ 더하기 정수 형식의 연산자(x)의 합이다. 시프트 및 덧셈 연산에 의해 형성된 가속 함수의 예시 유사 코드가 하기에 도시되어 있다.
/* 부동수(float)는 IEEE 754 단일 정확도 부동 소수점 형식이고,
int는 32비트라고 가정하자. */
float sqrt_approx(float z)
{
    int val_int = *(int*)&z; /* Same bits, but as an int */
    /*
     * 하기 코드를 정당화하기 위하여, 다음을 증명한다
     *
     * ((((val_int / 2^m) - b) / 2) + b) * 2^m = ((val_int - 2^m) / 2) + ((b + 1) / 2) * 2^m)
     *
     * where
     *
b = 지수 바이어스
m = 가수 비트의 수
     *
     * .
     */
    val_int -= 1 << 23; /* Subtract 2^m. */
    val_int >>= 1; /* Divide by 2. */
    val_int += 1 << 29; /* Add ((b + 1) / 2) * 2^m. */
*(float*)&val_int;로 되돌아간다; 다시 부동수로서 해석한다.
}
표 1의 여덟번째 열에서, 복잡한 수학적 함수는 y와 x의 아크탄젠트(즉, atan(y,x))이다. 이 가속 함수는 div(y,x)이고, 표 1의 여섯번째 열에 보여진다.
도 1을 다시 참조하면, 104에서, 선택된 함수가 수행된다. 선택된 특별한 가속 함수와 원래의 수학적 함수에 따라서, 수학적 함수의 연산자들은 이 가속 함수가 수행되기 전에 부동 소수점 형식에서 정수 형식으로 변환된다. 105에서, 이 가속 함수의 결과는 리턴된다.
도 2는 본원에 개시된 내용에 따라 계산을 가속시키고 레이턴시 및 파워 소모를 줄이기 위해 어디에서 가속 함수가 사용될 수 있는지를 계산적으로 복잡한 수학적 함수를을 이용한 전형적인 구배 히스토그램(histogram of gradient: HoG) 검출기(200)의 예시를 도시한다. 도 2의 상부 부분은 HoG 검출기(200)의 데이터의 여러 단계를 나타낸다. 입력 이미지는 8×8 픽셀들의 셀들을 형성하도록 처리된다. 구배 벡터들이 각 픽셀에 대해 계산되고, 셀 구배들의 히스토그램이 202에서 생성된다. 202에서 사용되는 전형적인 복잡한 수학적 함수들은 다음을 포함한다:
Figure pat00003
Figure pat00004
여기서 gx는 x방향의 구배이고, gy는 y방향의 구배이다.
g의 복잡한 계산은 5개의 iadd 연산들과 1개의 fadd 연산을 가져오는 l 비트 가속 함수에 의해 대체될 수 있다. θ의 복잡한 계산은 2개의 iadd 연산들을 가져오는 가속 함수들에 의해 대체될 수 있다.
도 2의 203에서, 히스토그램 정규화가 발생한다. 히스토그램 정규화를 계산하기 위해 이용되는 전형적인 복잡한 수학적 함수는 다음과 같다
Figure pat00005
여기서
Figure pat00006
는 히스토그램이고
Figure pat00007
Figure pat00008
의 크기이며,
Figure pat00009
는 벡터의 크기를 계산하는 연산이다.
히스토그램 정규화의 복잡한 계산은 2개의 iadd 연산들과 1개의 fadd 연산을 가져오는 낮은 비트 가속 함수들에 의해 대체될 수 있다.
204에서, 윈도우 디스크립터가 생성되고, 205에서, 선형 서포트 벡터 머신(SVM) 분류가 계산될 수 있다. 일반적인 선형 SVM 분류는 다음과 같다
Figure pat00010
여기서 H는 상술한 것으로부터의 정규화된 히스토그램이고, V는 SVM 분류기의 변수 또는 가중치들(weights)의 벡터이다.
SVM 분류의 전형적인 복잡한 계산은 1개의 iadd 연산과 1개의 fadd 연산을 가져오는 낮은 비트 가속 함수들에 의해 대체될 수 있다. 가중치가 선형 SVM 분류에 대해 알려지면, 1개의 iadd 연산이 절감될 수 있다. 요약하면, (Level 1(L1) 캐시에 충분하도록 작을 수 있는)픽셀 8.3 iadd/pixel, 1.6 fadd/pixel, 및 9kB 메모리 액세스용의 총 가속 함수 연산.
표 3은 본원에 개시된 내용에 따라 복잡한 계산들을 이용하는 전형적인 HoG 검출기용의 픽셀당 비용과 가속 함수들을 이용하는 HoG 검출기용의 픽셀당 비용을 설명한다.
전형적인 HoG 검출기용의 비용/픽셀
fmul fadd I/O Total
연산들 11.4* 1.7 9 bit --
에너지(pJ) 12.5 0.7 5 18.2
레이턴시 57 5 1 63
가속된 HoG 검출기용의 비용/픽셀
Iadd fadd I/O Total
연산들 7.6 1.7 9 bit --
에너지(pJ) 0.4 0.7 5 6.1
레이턴시 1 5 1 7
* 각각의 복잡한 함수(div, sqrt, atan)가 일반적인 하드웨어 구현에서 4개의 부동 소수점 곱셈 연산들에 의해 계산될 수 있다고 가정한다.
표 3에서 볼 수 있듯이, 총 파워 소비는 원래의 파워 소비의 1/3으로 감소할 수 있으며, 총 레이턴시는 원래 레이턴시의 1/9로 감소할 수 있다.
표 4는 본원에 개시된 내용에 따라 전형적인 HoG 검출기와 낮은 비트 가속 함수들을 이용하는 HoG 검출기의 트레이닝 및 테스팅 정확도를 설명한다.
트레이닝 정확도 (1111 샘플)
# pos # neg # true pos # fal neg 정확도
전형적인 HoG 282 829 278 3 99.37%
가속 HoG 288 823 278 3 99.83%
실측 자료 281 830 --
테스트 정확도 (1111 샘플)
# pos # neg # true pos # fal neg 정확도
전형적인 HoG 281 830 277 3 99.28%
가속 HoG 285 826 276 5 98.74%
실측 자료 281 830 --
표 4에서 볼 수 있듯이, 가속 함수들을 이용하면 2000 샘플들에 걸친 개인 검출의 성능의 단지 0.5% 저하가 생긴다.
도 3은 본원에 개시된 내용에 따라 가속 함수들을 수행하는 디지털 기반의 처리 장치를 구비하는 전자 장치(300)를 도시한다. 전자 장치(300)는, 이에 한정됨이 없이, 컴퓨팅 장치, PDA(personal digital assistant), 랩탑 컴퓨터, 모바일 컴퓨터, 웹 태블릿, 무선 폰, 셀 폰, 스마트폰, 디지털 뮤직 플레이어, 또는 유선 또는 무선 전자 장치에 사용될 수 있다. 전자 장치(300)는 컨트롤러(310), 이에 한정됨이 없이, 키패드, 키보드, 디스플레이, 터치스크린 디스플레이, 카메라, 및/또는 이미지 센서와 같은 입력/출력 장치(320), 메모리(330), 인터페이스(340), GPU(350), 버스(370)를 통해 서로 결합되는 이미징 처리 유닛(360)을 구비할 수 있다. 일 실시예에서, 상기 이미징 처리 유닛(360)은 본원에 개시된 내용에 따라 가속 함수를 수행하는 디지털 기반의 처리 장치를 구비할 수 있다. 컨트롤러(310)는, 예를 들어, 적어도 하나의 마이크로프로세서, 적어도 하나의 디지털 신호 프로세서, 적어도 하나의 마이크로컨트롤러 등을 구비할 수 있다. 메모리(330)는 컨트롤러(310)에 의해 사용되는 명령 코드 또는 유저 데이터를 저장하도록 구성될 수 있다.
전자 장치(300)와 전자 장치(300)의 다양한 시스템 성분들은, 컨트롤러(310)와 같은, 본원에 기재된 내용에 따라 메모리 장치(330)에 저장된 정보 상의 가속 함수들을 수행하는 디지털 기반의 처리 장치를 구비할 수 있다. 인터페이스(340)는 RF 신호를 이용하여 데이터를 무선 통신 네트워크로 또는 그로부터 송수신하도록 구성된 무선 인터페이스를 구비하도록 구성될 수 있다. 무선 인터페이스(340)는, 예를 들어, 안테나, 무선 트랜시버 등을 구비할 수 있다. 전자 시스템(300)은 또한, 이에 한정됨이 없이, CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communications), NADC(North American Digital Communications), E-TDMA(Extended Time Division Multiple Access), WCDMA(Wideband CDMA), CDMA2000, Wi-Fi, Muni Wi-Fi(Municipal Wi-Fi), Bluetooth, DECT(Digital Enhanced Cordless Telecommunications), Wireless USB(Universal Serial Bus), Flash-OFDM(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing), IEEE 802.20, GPRS(General Packet Radio Service), iBurst, WiBro(Wireless Broadband), WiMAX, WiMAX-Advanced, UMTS-TDD(Universal Mobile Telecommunication Service - Time Division Duplex), HSPA(High Speed Packet Access), EVDO(Evolution Data Optimized), LTE-Advanced(Long Term Evolution - Advanced), MMDS(Multichannel Multipoint Distribution Service) 등과 같은 통신 시스템의 통신 인터페이스 프로토콜에서 사용될 수 있다.
본 명세서에서 기술된 내용과 동작들의 실시예들은 디지털 전자 회로에서, 또는 본 명세서에 개시된 구조들 및 그 구조적 균등물들을 비롯한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서, 또는 그것들의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 내용의 실시예들은 하나 이상의 컴퓨터 프로그램들, 즉 데이터 처리 장치에 의해 또는 그 동작을 제어하기 위해 실행을 위한 컴퓨터 저장 매체 상에서 인코딩되는 컴퓨터 프로그램 명령어들의 하나 이상의 모듈구현될 수 있다. 대체하여 또는 추가적으로, 데이터 처리 장치에 의한 실행을 위한 적절한 수신 장치로, 프로그램 명령어들은, 예를 들어, 전송을 위해 정보를 인코딩하기 위해 발생되는 기계에 의해 발생되는 전기, 광학, 또는 전자기 신호와 같은, 인공적으로 발생되는 전파 신호 상에서 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 장치, 또는 그 조합이거나 그에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체가 전파되지 않는 신호인 반면, 컴퓨터 저장 매체는 인공적으로 발생된 전파되는 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스이거나 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 분리된 물리적 성분들 또는 매체들(예: 다수의 CD, 디스크, 또는 다른 저장 장치들)이거나 그에 포함될 수 있다. 또한, 본 명세서에서 기술된 동작들은, 하나 이상의 컴퓨터 판독 가능 저장 장치에 저장된 또는 다른 소스들로부터 수신한 데이터 상에서 데이터 처리 장치에 의해 수행되는 동작들로서 구현될 수 있다.
본 명세서는 많은 특정 구현 상세사항들을 포함할 수 있지만, 이러한 구현 상세사항들은 청구되는 내용의 범위에 대한 한정으로 해석되어서는 안되고, 차라리 특별한 실시예들에 대해 특정적인 특징들의 기술로서 해석되어야 한다. 별개의 실시예들의 문맥에서 본 명세서에서 기술된 어떤 특징들은 또한 하나의 실시예에서의 조합으로 구현될 수 있다. 반대로, 하나의 실시예의 문맥에서 기술된 여러 특징들은 또한 별도로 또는 어떤 적절한 서브 조합으로 다수의 실시예에서 구현될 수 있다. 더욱이, 특징들이 어떤 조합으로 작용하는 것으로 또한 이와 같이 처음에 청구되는 것으로 상술될 수 있지만, 청구되는 조합으로부터의 하나 이상의 특징은 일부의 경우에 조합으로부터 제거될 수 있으며, 청구된 조합은 서브 조합 또는 서브 조합의 변형을 의도할 수 있다.
유사하게, 동작들이 특별한 순서로 도면에 도시되었지만, 원하는 결과들을 얻기 위해서, 이러한 동작들은 도시된 특별한 순서로 또는 순차적 순서로 수행되어야 하고, 또는 모든 도시된 동작들은 수행되어야 한다는 점을 이해하여야 한다. 어떤 경우에는, 멀티 태스킹과 병렬 처리가 유리하다. 더욱이, 상술한 실시예에서의 여러 시스템 성분의 분리는 모든 실시예에서의 이러한 분리를 요하는 것으로 이해해서는 아니되며, 기술한 프로그램 성분들 또는 시스템들은 일반적으로 하나의 소프트웨어 제품에서 같이 일체화되고 다수의 소프트웨어 제품들로 패키징되는 것으로 이해하여야 한다.
따라서, 내용의 특별한 실시예들이 본원에서 기술되었다. 다른 실시예들은 하기의 청구항들의 범위 내에 있다. 일부의 경우에, 청구항에서 설명된 동작들은 다른 순서로 수행될 수 있으며, 역시 바람직한 결과를 달성할 수 있다. 또한, 첨부된 도면에 도시된 프로세스들은, 바람직한 결과들을 얻기 위해서, 도시된 특별한 순서 또는 순차적 순서를 반드시 요하지 않는다. 어떤 구현예에서는, 멀티 태스킹과 병렬 처리가 유리하다.
당업자가 알 수 있듯이, 본원에서 기술된 혁신적인 컨셉은 넓은 범위의 응용에 걸쳐 수정되고 변할 수 있다. 따라서, 청구된 내용의 범위는 상기 논의된 특정한 예시적 교시로 한정되어서는 아니되며, 대신 하기의 청구항에 의해 정의되어야 한다.
310: 컨트롤러
320: I/O 장치
330: 메모리 장치
340: 인터페이스
350: 그래픽스 처리 유닛
360: 이미지 처리 유닛

Claims (18)

  1. 디지털 처리 장치를 이용하여 수학적 함수를 근사화하는 방법에 있어서,
    상기 디지털 처리 장치가 수학적 함수용의 적어도 하나의 연산자 상의 가속 함수를 수행하는 단계로서, 상기 가속 함수는 상기 수학적 함수를 근사화하는 소정의 시퀀스의 덧셈 연산들을 포함하고, 상기 수학적 함수는 밑이 2인 로그 함수, 2의 승수, 곱셈, 역 제곱근, 역함수, 나눗셈, 제곱근, 및 아크 탄젠트를 포함하는 단계; 및
    상기 디지털 처리 장치가 상기 가속 함수를 수행한 결과를 리턴시키는 단계를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 소정의 시퀀스의 덧셈 연산들은 제1 소정의 수의 정수 형식의 연산자들의 덧셈들과 제2 소정의 수의 부동 소수점 형식의 연산자들의 덧셈들을 포함하며, 여기서 정수 형식의 연산자들의 덧셈들과 부동 소수점 형식의 연산자들의 덧셈들은 임의의 순서로 발생하는 방법.
  3. 청구항 1에 있어서,
    상기 수학적 함수는 부동 소수점 형식인 제1 연산자의 밑이 2인 로그 함수를 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제2 연산자가 되도록 선택하는 단계;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제3 연산자가 되도록 선택하는 단계;
    상기 제2 연산자를 상기 제3 연산자에 더하여 제4 연산자를 형성하는 단계; 및
    상기 정수 형식의 소정의 상수를 상기 제4 연산자에 더하는 단계로서, 상기 제4 연산자는 상기 제1 연산자의 밑이 2인 로그 함수의 근사치인 단계를 더 포함하는 방법.
  4. 청구항 1에 있어서,
    상기 수학적 함수는 부동 소수점 형식인 제1 연산자의 승수를 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제2 연산자가 되도록 선택하는 단계;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제3 연산자가 되도록 선택하는 단계;
    상기 제 2 연산자를 소정의 상수의 부의 값(negative value)에 더하여 제 4 연산자를 형성하는 단계;
    제5 연산자를 제4 연산자의 플로어 값(floor value)으로 결정하는 단계; 및
    상기 제4 연산자를 상기 제4 연산자의 플로어 값의 부의 값에 더하여 제6 연산자를 결정하는 단계로서, 상기 제5 연산자는 상기 제1 연산자의 2의 승수의 지수이고, 상기 제6 연산자를 상기 제1 연산자의 2의 승수의 가수인 단계를 더 포함하는 방법.
  5. 청구항 1에 있어서,
    상기 수학적 함수는 부동 소수점 형식의 제1 연산자와 상기 부동 소수점 형식의 제2 연산자의 곱셈을 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제3 연산자가 되도록 선택하는 단계;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제4 연산자가 되도록 선택하는 단계;
    상기 제3 연산자를 상기 제4 연산자에 더하여 제5 연산자를 형성하는 단계;
    상기 정수 형식의 소정의 상수를 상기 제5 연산자에 더하는 단계로서, 상기 제5 연산자는 상기 제1 연산자의 2진 로그 함수의 근사치인 단계;
    상기 제2 연산자의 가수 부분이 정수 형식의 제6 연산자가 되도록 선택하는 단계;
    상기 제2 연산자의 지수 부분이 상기 정수 형식의 제7 연산자가 되도록 선택하는 단계;
    상기 제6 연산자를 상기 제7 연산자에 더하여 제8 연산자를 형성하는 단계;
    상기 정수 형식의 소정의 상수를 상기 제8 연산자에 더하는 단계로서, 상기 제8 연산자는 상기 제2 연산자의 2진 로그 함수의 근사치인 단계;
    상기 제5 연산자와 상기 제8 연산자를 더하여 상기 부동 소수점 형식의 제9 연산자를 형성하는 단계;
    상기 제9 연산자의 가수 부분이 정수 형식의 제10 연산자가 되도록 선택하는 단계;
    상기 제9 연산자의 지수 부분이 상기 정수 형식의 제11 연산자가 되도록 선택하는 단계;
    상기 제 11 연산자를 상기 소정의 상수의 부의 값(negative value)에 더하여 제 12 연산자를 형성하는 단계;
    제13 연산자를 제12 연산자의 플로어 값으로 결정하는 단계; 및
    상기 제12 연산자를 상기 제12 연산자의 플로어 값의 부의 값에 더하여 제14 연산자를 결정하는 단계로서, 상기 제13 연산자는 상기 제1 연산자와 상기 제2 연산자의 곱의 근사치의 지수이고, 상기 제14 연산자는 상기 제1 연산자와 상기 제2 연산자의 곱의 근사치의 가수인 단계를 더 포함하는 방법.
  6. 청구항 1에 있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 역제곱근을 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 최소 유효 비트(least-significant bit)를 향한 방향으로 1비트 상기 제1 연산자를 시프트시켜 제2 연산자를 형성하는 단계; 및
    제1 소정의 상수를 상기 제2 연산자의 부의 값에 더하여 상기 제1 연산자의 역제곱근의 근사치를 형성하는 단계를 더 포함하는 방법.
  7. 청구항 1에 있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 역수를 포함하고,
    상기 디지털 처리 장치에 의해 상기 수학적 함수를 근사화하는 단계는 소정의 상수를 상기 제1 연산자의 부의 값에 더하여 상기 제1 연산자의 상기 역수의 근사치를 형성하는 단계를 더 포함하는 방법.
  8. 청구항 1에 있어서,
    상기 수학적 함수는 부동 소수점 형식의 제1 연산자를 상기 부동 소수점 형식의 제2 연산자로 나누는 나눗셈을 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제3 연산자가 되도록 선택하는 단계;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제4 연산자가 되도록 선택하는 단계;
    상기 제3 연산자를 상기 제4 연산자에 더하여 제5 연산자를 형성하는 단계; 및
    상기 정수 형식의 소정의 상수를 상기 제5 연산자에 더하는 단계로서, 상기 제5 연산자는 상기 제1 연산자의 2진 로그 함수의 근사치인 단계;
    상기 제2 연산자의 가수 부분이 정수 형식의 제6 연산자가 되도록 선택하는 단계;
    상기 제2 연산자의 지수 부분이 상기 정수 형식의 제7 연산자가 되도록 선택하는 단계;
    상기 제6 연산자를 상기 제7 연산자에 더하여 제8 연산자를 형성하는 단계;
    상기 정수 형식의 소정의 상수를 상기 제8 연산자에 더하는 단계로서, 상기 제8 연산자는 상기 제2 연산자의 2진 로그 함수의 근사치인 단계;
    상기 제5 연산자를 상기 제8 연산자의 부의 값에 더하여 상기 부동 소수점 형식의 제9 연산자를 형성하는 단계;
    상기 제9 연산자의 가수 부분이 정수 형식의 제10 연산자가 되도록 선택하는 단계;
    상기 제9 연산자의 지수 부분이 상기 정수 형식의 제11 연산자가 되도록 선택하는 단계;
    상기 제 11 연산자를 상기 소정의 상수의 부의 값(negative value)에 더하여 제 12 연산자를 형성하는 단계;
    제13 연산자를 제12 연산자의 플로어 값으로 결정하는 단계; 및
    상기 제12 연산자를 상기 제12 연산자의 플로어 값의 부의 값에 더하여 제14 연산자를 결정하는 단계로서, 상기 제13 연산자는 상기 제1 연산자와 상기 제2 연산자의 몫의 근사치의 지수이고, 상기 제14 연산자는 상기 제1 연산자와 상기 제2 연산자의 몫의 근사치의 가수인 단계를 더 포함하는 방법.
  9. 청구항 1에 있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 제곱근을 포함하고,
    상기 가속 함수를 수행하는 단계는:
    상기 제1 연산자의 최소 유효 비트(least-significant bit)를 향한 방향으로 1비트 상기 제1 연산자를 시프트시켜 제2 연산자를 형성하는 단계; 및
    제1 소정의 상수를 상기 제2 연산자의 부의 값에 더하여 상기 제1 연산자의 제곱근의 근사치를 형성하는 단계를 더 포함하는 방법.
  10. 디지털 컴퓨팅 장치에 있어서,
    값들을 저장하는 메모리; 및
    상기 메모리에 결합된 디지털 처리 장치로서, 상기 디지털 처리 장치는:
    상기 디지털 처리 장치가 상기 메모리에 저장된 적어도 하나의 값과 관련된 수학적 함수용의 가속 함수를 수행하는 단계로서, 상기 가속 함수는 상기 수학적 함수를 근사화하는 소정의 시퀀스의 덧셈 연산들을 포함하고, 상기 수학적 함수는 밑이 2인 로그 함수, 2의 승수, 곱셈, 역 제곱근, 역함수, 나눗셈, 제곱근, 및 아크 탄젠트를 포함하고; 및
    상기 가속 함수를 수행한 결과를 리턴시키는 디지털 컴퓨팅 장치.
  11. 청구항 10에 있어서,
    상기 소정의 시퀀스의 덧셈 연산들은 제1 소정의 수의 정수 형식의 연산자들의 덧셈들과 제2 소정의 수의 부동 소수점 형식의 연산자들의 덧셈들을 포함하며, 여기서 정수 형식의 연산자들의 덧셈들과 부동 소수점 형식의 연산자들의 덧셈들은 임의의 순서로 발생할 수 있는 디지털 컴퓨팅 장치.
  12. 청구항 10에 있어서,
    상기 수학적 함수는 부동 소수점 형식인 제1 연산자의 밑이 2인 로그 함수를 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제2 연산자가 되도록 선택하고;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제3 연산자가 되도록 선택하고;
    상기 제2 연산자를 상기 제3 연산자에 더하여 제4 연산자를 형성하고; 및
    상기 정수 형식의 소정의 상수를 상기 제4 연산자에 더하여 상기 가속 함수를 수행하되, 상기 제4 연산자는 상기 제1 연산자의 밑이 2인 로그 함수의 근사치인 디지털 컴퓨팅 장치.
  13. 청구항 10에 있어서,
    상기 수학적 함수는 부동 소수점 형식인 제1 연산자의 2의 승수를 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제2 연산자가 되도록 선택하고;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제3 연산자가 되도록 선택하고;
    상기 제 2 연산자를 소정의 상수의 부의 값(negative value)에 더하여 제 4 연산자를 형성하고;
    제5 연산자를 제4 연산자의 플로어 값(floor value)으로 결정하고; 및
    상기 제4 연산자를 상기 제4 연산자의 플로어 값의 부의 값에 더하여 제6 연산자를 결정하여 상기 가속 함수를 수행하되, 상기 제5 연산자는 상기 제1 연산자의 2의 승수의 지수이고, 상기 제6 연산자를 상기 제1 연산자의 2의 승수의 가수인 디지털 컴퓨팅 장치.
  14. 청구항 10에 있어서,
    상기 수학적 함수는 부동 소수점 형식의 제1 연산자와 상기 부동 소수점 형식의 제2 연산자의 곱셈을 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제3 연산자가 되도록 선택하고;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제4 연산자가 되도록 선택하고;
    상기 제3 연산자를 상기 제4 연산자에 더하여 제5 연산자를 형성하고;
    상기 정수 형식의 소정의 상수를 상기 제5 연산자에 더하되, 상기 제5 연산자는 상기 제1 연산자의 2진 로그 함수의 근사치이고;
    상기 제2 연산자의 가수 부분이 정수 형식의 제6 연산자가 되도록 선택하고;
    상기 제2 연산자의 지수 부분이 상기 정수 형식의 제7 연산자가 되도록 선택하고;
    상기 제6 연산자를 상기 제7 연산자에 더하여 제8 연산자를 형성하고;
    상기 정수 형식의 소정의 상수를 상기 제8 연산자에 더하되, 상기 제8 연산자는 상기 제2 연산자의 2진 로그 함수의 근사치이고;
    상기 제5 연산자와 상기 제8 연산자를 더하여 상기 부동 소수점 형식의 제9 연산자를 형성하고;
    상기 제9 연산자의 가수 부분이 정수 형식의 제10 연산자가 되도록 선택하고;
    상기 제9 연산자의 지수 부분이 상기 정수 형식의 제11 연산자가 되도록 선택하고;
    상기 제 11 연산자를 상기 소정의 상수의 부의 값(negative value)에 더하여 제 12 연산자를 형성하고;
    제13 연산자를 제12 연산자의 플로어 값으로 결정하고; 및
    상기 제12 연산자를 상기 제12 연산자의 플로어 값의 부의 값에 더하여 제14 연산자를 결정하여 상기 가속 함수를 수행하되, 상기 제13 연산자는 상기 제1 연산자와 상기 제2 연산자의 곱의 근사치의 지수이고, 상기 제14 연산자는 상기 제1 연산자와 상기 제2 연산자의 곱의 근사치의 가수인 디지털 컴퓨팅 장치.
  15. 청구항 10에있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 역제곱근을 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 최소 유효 비트(least-significant bit)를 향한 방향으로 1비트 상기 제1 연산자를 시프트시켜 제2 연산자를 형성하고; 및
    제1 소정의 상수를 상기 제2 연산자의 부의 값에 더하여 상기 제1 연산자의 역제곱근의 근사치를 형성하여 상기 가속 함수를 수행하는 디지털 컴퓨팅 장치.
  16. 청구항 10에 있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 역수를 포함하고,
    상기 디지털 처리 장치는 소정의 상수를 상기 제1 연산자의 부의 값에 더하여 상기 제1 연산자의 역수의 근사치를 형성하여 상기 가속 함수를 수행하는 디지털 컴퓨팅 장치.
  17. 청구항 10에 있어서,
    상기 수학적 함수는 부동 소수점 형식의 제1 연산자를 상기 부동 소수점 형식의 제2 연산자로 나누는 나눗셈을 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 가수 부분이 정수 형식의 제3 연산자가 되도록 선택하고;
    상기 제1 연산자의 지수 부분이 상기 정수 형식의 제4 연산자가 되도록 선택하고;
    상기 제3 연산자를 상기 제4 연산자에 더하여 제5 연산자를 형성하고;
    상기 정수 형식의 소정의 상수를 상기 제5 연산자에 더하되, 상기 제5 연산자는 상기 제1 연산자의 2진 로그 함수의 근사치이고;
    상기 제2 연산자의 가수 부분이 정수 형식의 제6 연산자가 되도록 선택하고;
    상기 제2 연산자의 지수 부분이 상기 정수 형식의 제7 연산자가 되도록 선택하고;
    상기 제6 연산자를 상기 제7 연산자에 더하여 제8 연산자를 형성하고;
    상기 정수 형식의 소정의 상수를 상기 제8 연산자에 더하되, 상기 제8 연산자는 상기 제2 연산자의 2진 로그 함수의 근사치이고;
    상기 제5 연산자를 상기 제8 연산자의 부의 값에 더하여 상기 부동 소수점 형식의 제9 연산자를 형성하고;
    상기 제9 연산자의 가수 부분이 정수 형식의 제10 연산자가 되도록 선택하고;
    상기 제9 연산자의 지수 부분이 상기 정수 형식의 제11 연산자가 되도록 선택하고;
    상기 제 11 연산자를 상기 소정의 상수의 부의 값(negative value)에 더하여 제 12 연산자를 형성하고;
    제13 연산자를 제12 연산자의 플로어 값으로 결정하고; 및
    상기 제12 연산자를 상기 제12 연산자의 플로어 값의 부의 값에 더하여 제14 연산자를 결정하여 상기 가속 함수를 수행하되, 상기 제13 연산자는 상기 제1 연산자와 상기 제2 연산자의 몫의 근사치의 지수이고, 상기 제14 연산자는 상기 제1 연산자와 상기 제2 연산자의 몫의 근사치의 가수인 디지털 컴퓨팅 장치.
  18. 청구항 10에 있어서,
    상기 수학적 함수는 정수 형식의 제1 연산자의 제곱근을 포함하고,
    상기 디지털 처리 장치는:
    상기 제1 연산자의 최소 유효 비트(least-significant bit)를 향한 방향으로 1비트 상기 제1 연산자를 시프트시켜 제2 연산자를 형성하고; 및
    제1 소정의 상수를 상기 제2 연산자의 부의 값에 더하여 상기 제1 연산자의 제곱근의 근사치를 형성하여 상기 가속 함수를 수행하는 디지털 컴퓨팅 장치.
KR1020210033796A 2020-04-21 2021-03-16 하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템 KR20210130098A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063013531P 2020-04-21 2020-04-21
US63/013,531 2020-04-21
US16/903,335 US20210326107A1 (en) 2020-04-21 2020-06-16 Hardware acceleration machine learning and image processing system with add and shift operations
US16/903,335 2020-06-16

Publications (1)

Publication Number Publication Date
KR20210130098A true KR20210130098A (ko) 2021-10-29

Family

ID=78081729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210033796A KR20210130098A (ko) 2020-04-21 2021-03-16 하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템

Country Status (3)

Country Link
US (1) US20210326107A1 (ko)
KR (1) KR20210130098A (ko)
CN (1) CN113535119A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12118332B2 (en) * 2022-09-20 2024-10-15 Apple Inc. Execution circuitry for floating-point power operation
CN115936965A (zh) * 2022-11-07 2023-04-07 格兰菲智能科技有限公司 应用于gpu的函数计算系统、方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823301A (en) * 1987-10-22 1989-04-18 Tektronix, Inc. Method and circuit for computing reciprocals
US9848793B2 (en) * 2013-02-15 2017-12-26 Masdar Institute Of Science And Technology Machine-based patient-specific seizure classification system

Also Published As

Publication number Publication date
CN113535119A (zh) 2021-10-22
US20210326107A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
EP3729257B1 (en) System and method of floating point multiply operation processing
Kumar FPGA implementation of the trigonometric functions using the CORDIC algorithm
US20160313976A1 (en) High performance division and root computation unit
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
KR20210130098A (ko) 하드웨어 가속 머신 러닝 및 덧셈 및 시프트 연산들을 갖는 이미지 처리 시스템
MX2008010873A (es) Procesador de punto de flotacion con requerimientos de potencia reducidos para suprecision seleccionable.
JP7368939B2 (ja) ルックアップテーブルを利用して加速化されたコンピューティングの方法及びシステム
KR102581403B1 (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
EP2057535B1 (en) Multi-stage floating-point accumulator
WO2016028443A1 (en) Emulation of fused multiply-add operations
KR20150041540A (ko) 수치 연산을 처리하는 장치 및 방법
KR20210126506A (ko) 부동 소수점의 내적을 계산하는 컴퓨팅 유닛 아키텍쳐 및 그에 따른 방법
WO2016171823A1 (en) Division and root computation with fast result formatting
Kumar et al. Hardware implementation of methodologies of fixed point division algorithms
WO2018057114A2 (en) Piecewise polynomial evaluation instruction
US8868633B2 (en) Method and circuitry for square root determination
US9519459B2 (en) High efficiency computer floating point multiplier unit
US9612800B2 (en) Implementing a square root operation in a computer system
US20230086090A1 (en) Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit
EP4105838A1 (en) Mixed-precision neural network accelerator tile with lattice fusion
US10466967B2 (en) System and method for piecewise linear approximation
CN114385112A (zh) 处理模数乘法的装置及方法
CN109558109B (zh) 数据运算装置及相关产品
US10037191B2 (en) Performing a comparison computation in a computer system
KR20200074855A (ko) Log1p()의 고정밀도 컴퓨터용 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination