KR101395260B1 - 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법 - Google Patents

마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법 Download PDF

Info

Publication number
KR101395260B1
KR101395260B1 KR1020127009136A KR20127009136A KR101395260B1 KR 101395260 B1 KR101395260 B1 KR 101395260B1 KR 1020127009136 A KR1020127009136 A KR 1020127009136A KR 20127009136 A KR20127009136 A KR 20127009136A KR 101395260 B1 KR101395260 B1 KR 101395260B1
Authority
KR
South Korea
Prior art keywords
register
destination
bits
multiply
precision
Prior art date
Application number
KR1020127009136A
Other languages
English (en)
Other versions
KR20120062890A (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 KR20120062890A publication Critical patent/KR20120062890A/ko
Application granted granted Critical
Publication of KR101395260B1 publication Critical patent/KR101395260B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache

Abstract

마이크로프로세서(10)는 곱셈 유닛(14)에 목적지 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 범용 레지스터(12); 곱셈 유닛에 적어도 고차 곱셈 명령(20) 및 고차 곱셈 누산 명령(22)을 제공하기 위해 적합화되는 제어 유닛(18)을 포함한다. 곱셈 유닛은 또한 각각 관련된 소스 비트의 수 및 목적지 비트의 수를 초과하는 상기 관련된 소스 비트의 수들의 합을 갖는 적어도 제1 및 제2 소스 오퍼랜드(24, 26)를 수신하기 위해 배열되며, 정밀도 향상 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 캐쉬 엔트리를 포함하는 레지스터 확장 캐쉬(28)에 연결되고, 범용 레지스터에 결과 오퍼랜드의 목적지 부분을 그리고 캐쉬 엔트리에 결과 오퍼랜드의 정밀도 향상 부분을 저장하기 위해 적합화된다. 결과 오퍼랜드는 수신되는 명령에 따라 고차 곱셈 누산 연산일 때 또는 고차 곱셈 누산 연산에 의해 고차 곱셈 연산으로 발생된다.

Description

마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법{MICROPROCESSOR AND METHOD FOR ENHANCED PRECISION SUM-OF-PRODUCTS CALCULATION ON A MICROPROCESSOR}
본 발명은 일반적으로 프로세스 장치들에 관한 것으로, 좀더 구체적으로, 마이크로프로세서, 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법, 및 비디오 디코딩 장치에 관한 것이다.
디지털 신호 프로세스 응용들에서 가장 빈번히 사용되는 함수들 중 하나는 곱들의 합(sum-of-products)인데:
Figure 112012028190760-pct00001
여기서 SoP는 곱들의 합이며, n은 곱들의 수이고, i는 카운터 값(counter)이고, Si는 양자화된 신호의 i번째 n 샘플들이고, Ci는 i번째 n 계수(예를 들어 필터 또는 변환 계수들)이다.
DSP들(디지털 신호 프로세서들, Digital Signal Processors) 및 또한 몇몇 표준 마이크로프로세서들은 빠르고 효율적인 곱들의 합 계산을 위한 전용 명령들을 갖는다. 아주 흔히 사용되는 명령은 내부 루프 곱셈 덧셈 연산(inner loop multiply and add operation)을 단일 명령으로 결합하는 "MAC"(곱셈 누산, Multiply-and-Accumulate) 명령이다.
마이크로프로세서 명령들의 오퍼랜드들(operands)은 제한된 비트의 수로 표현된다. 상기 제한은 마이크로프로세서 하드웨어의 레지스터 폭에 의해 정해진다. 정수 오퍼랜드들에 있어서 이러한 제한은 표현될 수 있는 값들의 최대 범위를 정한다. 디지털 신호 프로세스에서 오퍼랜드들은 양자화된 아날로그 신호들을 표현하고 오퍼랜드 크기 제한은 정밀도 또는 다시 말해서 아날로그 신호 근사치의 품질을 정한다.
예로써, 범용 마이크로프로세서들은 매우 자주 그들의 범용 레지스터들(general purpose registers)의 폭에 의해 설정되는 소스 및 목적지 오퍼랜드들에 대한 동일한 크기 제한을 갖는다. 예를 들어, 현대의 RISC(축소 명령 셋트 컴퓨터, Reduced Instruction Set Computer) 구상을 따르는 마이크로프로세서 구조는 컴퓨팅 명령들의 소스 및 목적지 오퍼랜드들을 위해 사용되는 많은 동일한 크기를 갖는 범용 레지스터들의 셋트를 가질 수 있다.
n 비트 크기를 갖는 2개의 정수 숫자들의 곱은 부호를 지니지 않는 수들(unsigned numbers)에 대하여 2·n 비트 크기의 곱을, 그리고 부호를 지닌 수들(signed numbers)에 대하여 2·n -1 비트 크기의 곱을 발생시킨다. 소스 오퍼랜드 크기들에 따라 곱셈 명령들의 결과들은 소스 레지스터와 동일한 크기를 갖는 범용 레지스터에 완벽하게 맞지 않을 수 있다. 곱들의 스퀀스를 가산함에 따라, 곱들의 합 계산은 단일 곱보다 훨씬 많은 비트를 갖는 결과 오퍼랜드들을 발생시킬 수 있다. 예를 들어, n=16, 및 부호를 지닌 16비트 값들인 Si, Ci를 갖는 곱의 합 계산은 2·16-1 + 4 = 35 비트 크기의 곱을 발생시킨다.
많은 범용 마이크로프로세서들의 명령 셋트들에서 발견되는 곱셈 명령의 흔한 유형에는 목적지 레지스터에 곱의 저차 비트(low order bit)를 저장하는 것을 포함한다. 이러한 유형의 곱셈 명령은 종종 상위 수준 언어들을 지원하기 위해 사용되나, DSP 계산(DSP computation)에 아주 적합하지는 않을 수 있다. 곱셈 명령들 및 곱들의 합 계산의 결과들은 오버플로(overflow)될 수 있다. DSP 계산에 있어서, 곱의 고차 비트(high order bit)를 저장하는 "고차 곱셈" 명령들이 사용될 수 있다. 단일 곱셈 명령들의 결과들은 오버플로될 수 없다. 그러나, 곱들의 저차 비트가 버려지기 때문에 결과 오퍼랜드의 정밀도가 감소된다.
증가되는 게이트(gate) 밀도 및 관련된 디지털 회로들에 대한 감소되는 비용으로, 몇몇 현대 범용 마이크로프로세서들은 빠른 곱셈 연산들을 제공하고 원칙적으로 통상 DSP 상에서 실행되는 응용들에 또한 사용될 수 있다. 그러나, 목적지 레지스터들의 폭으로 인해 곱의 합 계산에 대한 정밀도는 제한된 채로 있다.
DSP들은 마이크로프로세서들의 특수 계층이다. 일반적으로 DSP들은 단일 곱 및 곱들의 합 계산에서 정밀도의 손실을 방지하기 위해 확장된 폭을 갖는 누산기 레지스터들을 포함한다. 범용 제어 및 계산 응용들에서 DSP들의 확장된 폭 레지스터들은 단지 적은 이득만을 제공한다. 또한, 불규칙한 레지스터 크기들, 및 소스와 목적지 오퍼랜드들 및 레지스터들의 상이한 크기들은 범용 제어 및 계산 프로그램들에서 프로그래밍 모델 또는 레지스터 셋트를 복잡하게 만들고 DSP들의 효율(코드 밀도 및 성능)을 제한한다.
따라서, 범용 마이크로프로세서들은 DSP 응용들에 아주 적합하지는 않을 수 있고 DSP들이 범용 제어 및 계산 응용들에 아주 적합하지는 않을 수 있다. 복합적인 요구사항들을 갖는 응용들에 있어서 양 범주들에서 높은 효율성 및 성능을 갖는 마이크로프로세서 구조들이 이로울 것이다.
그러나, 범용 마이크로프로세서들은 정밀도 대 레지스터 크기 문제에도 불구하고 DSP 알고리즘에 사용될 수 있다.
대부분의 범용 마이크로프로세서들에 적절한 전형적인 접근법에서, 소스 오퍼랜드 크기들은 작은 것으로 선택될 수 있다. 작은 크기(비트 폭)의 소스 오퍼랜드들을 사용함으로써 곱들의 합 계산 결과들이 오버플로되는 것이 방지될 수 있다. 예를 들어, 비디오 또는 그래픽 응용들에서, 샘플들은 일반적으로 8 내지 12 비트 값들이고 계수들은 12 내지 16 비트 값들이다. 비디오/그래픽에 대한 곱들의 합 계산의 길이 n은 2 내지 8의 범위로 작다. 예를 들어, 32비트 레지스터들을 갖는 프로세서는 이러한 유형의 곱들의 합을 정확히 계산할 수 있다. 그러나, 32·32비트 곱셈을 이용할 때 자원 효율성이 낮은데, 비디오/그래픽 응용들에서 일반적인 출력 샘플들은 8비트 정밀도를 지니고 중간 계산용으로 16 내지 20 비트가 충분하기 때문이다.
고차 곱 명령들을 이용하는 것은 목적지 레지스터에 곱들의 고차 비트를 저장하는 추가적인 곱셈 명령들을 갖는 몇몇 마이크로프로세서들에 의해 제공되는 다른 전형적인 접근법이다. 이러한 개념은 또한 MAC(곱셈 누산, Multiply-and-Accumulate)에 사용된다. 이러한 개념들에서, 오퍼랜드들은 최상위 비트(most significant bit)의 왼쪽에 소수점(decimal point)을 갖는 고정 소수점(fixed point) 수들로 취급된다. 이론상으로 이러한 접근법은 DSP 알고리즘에 사용될 수 있다. 작은 오퍼랜드들에 있어서, 데이터 경로들(곱셈기들, 레지스터들, 산술 논리 유닛(Arithmetic Logic Unit, ALU))은 SIMD(단일 명령 복수 데이터, Single Instruction Multiple Data) 연산들을 가능하게 하기 위해 다수의 더 작은 부분들로 나누어질 수 있다. 그러나, 최상위 비트를 얻기 위해 어떻게든 계산되어야 하는 곱들의 최하위 비트(least significant bit)는 버려지고 곱의 합 계산의 정밀도에 기여하지 않는다.
또 다른 접근법은 곱셈/MAC 목적지 오퍼랜드들을 위해 2개의 연결된 범용 레지스터들에 기초하는데, 이는 많은 DSP 알고리즘에 대한 전형적인 해결책일 수 있다. 그러나, 이용가능한 목적지 레지스터들의 수는 반으로 줄어든다.
US 2002/0178203 A1에서 범용 레지스터들을 사용하는 대신에, 추가적인 전용 누산기 레지스터들이 사용될 수 있음이 제시된다. 마이크로프로세서용 프로그래밍 모델은 확장된 정밀 곱의 합 계산을 위한 하나 이상의 전용 누산기 레지스터들을 포함할 수 있다. 확장된 정밀 특수 곱셈 및 MAC 명령들을 이용하기 위해 목적지로 누산기 레지스터를 지정하는 것이 제공된다. 곱들의 합 시퀀스의 마지막에 별도의 명령은 범용 레지스터로 (일반적으로 선택적 쉬프팅(shifting), 라운딩(rounding) 및 클리핑(clipping)을 이용하여) 누산기 내용을 전송한다. 그러나, 범용 레지스터에 누산기 내용을 전송하기 위해 곱의 합 시퀀스의 마지막에 추가적인 명령들이 요구된다. 이는, 특히 짧은 시퀀스에 있어서, 성능을 감소시킨다. 프로세서의 프로그래밍 모델은 더욱 복잡해지고 연산부호 맵(opcode map), 즉 수행되는 연산을 지정하는 기계 언어 명령 부분에 대한 맵은 누산기를 지정하는 곱셈 및 MAC 명령들에 대한 추가적인 공간을 요구한다.
범용 마이크로프로세서 상에서 향상된 정밀 계산을 가능하게 하는 것이 본 발명의 목적이다.
본 발명에 따라, 첨부되는 청구항에서 기술된 바와 같은, 마이크로프로세서, 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법, 및 비디오 디코딩 장치가 제공된다. 종속항들은 특정 실시예들과 관계가 있다. 본 발명의 세부사항에 대한 이러한 그리고 다른 양상들은 하기에 기술된 실시예들을 참조하여 예시로 제시된다.
도 1은 본 발명에 따른 마이크로프로세서에 대한 도식적인 바람직한 실시예를 도시한다.
도 2는 본 발명에 따른 마이크로프로세서의 곱셈 유닛에 대한 도식적인 바람직한 실시예를 도시한다.
도 3은 본 발명에 따른 비디오 디코딩 장치에 대한 도식적인 바람직한 실시예를 도시한다.
도 4는 본 발명에 따른 정밀도 향상 곱들의 합 계산 방법의 제1 실시예에 대한 흐름도의 도식적인 예시를 도시한다.
도 5는 본 발명에 따른 정밀도 향상 곱들의 합 계산 방법의 제2 실시예에 대한 흐름도의 도식적인 예시를 도시한다.
도면들에서, 동일한 참조 부호들은 동일하거나 유사한 요소들을 기리킨다.
하기에서 기술된 본 발명의 실시예들은 당업자들에게 알려진 전자 장치들을 이용하여 완전히 또는 적어도 부분적으로 구현될 수 있다. 세부사항들은 하기에서 설명되는 기본적인 발명의 개념들을 이해하는데 필요하다고 여겨지지 않으면 생략될 것이다.
도 1을 참조하면, 본 발명에 따른 마이크로프로세서에 대한 실시예의 예시가 도시된다. 당업자들에게 알려진 ALU, 로드/저장 유닛, 등과 같은 다른 유닛들에 대한 설명 및 도면은 간명함을 위해 도시되지 않는다. 마이크로프로세서(10)는 곱셈 유닛(14)에 목적지 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 범용 레지스터(12); 곱셈 유닛에 적어도 하나의 고차 곱셈(multiply-high, MULH) 명령(20) 및 고차 곱셈 누산(multiply-high-and-accumulate, MACH) 명령(22)을 제공하기 위해 적합화되는 제어 유닛(18);을 포함한다. 곱셈 유닛(14)은 또한 각각 관련된 소스 비트의 수 및 목적지 비트의 수를 초과하는 관련된 소스 비트의 수들의 합을 갖는 적어도 제1 및 제2 소스 오퍼랜드(24, 26)를 수신하기 위해 배열되며; 정밀도 향상 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 캐쉬 엔트리(cache entry)를 포함하는 레지스터 확장 캐쉬(register-extension cache, 28)에 연결되고; 범용 레지스터(12)에 결과 오퍼랜드의 목적지 부분을 그리고 캐쉬 엔트리에 결과 오퍼랜드의 정밀도 향상 부분을 저장하기 위해 적합화된다. 결과 오퍼랜드는 고차 곱셈(MULH) 명령(20)을 수신할 때 고차 곱셈 연산에 의해 그리고 고차 곱셈 누산(MACH) 명령(22)을 수신할 때 고차 곱셈 누산 연산에 의해 발생된다.
어떠한 별도의 누산 레지스터도 사용되지 않을 수 있다. 그러므로, 상기 제시된 시스템은 목적지로 별도의 누산기 레지스터를 지정하는 것을 필요로 하는 전용 곱셈/MACH 명령들을 포함하지 않을 수 있어서, 연산부호(opcode) 공간을 절약하고 명령 디코딩을 간단하게 한다.
범용 마이크로프로세서에 있어서 ISA(명령 셋트 구조, Instruction Set Architecture) 및 프로그래밍 모듈이 간단하고 규칙적으로 유지될 수 있어서, 높은 수준 언어 컴파일러들에 대한 구축을 쉽게 한다. 또한 새로운 사용자들이 상기 구조에 빠르게 익숙해질 수 있게 도울 수 있는데, 이는 그들의 생산성을 향상시킨다. 상기 제시된 마이크로컨트롤러(microcontroller)는 추가적인 기능의 복잡도를 감추기 위해 배열된다. ISA 및 프로그래밍 모델은 추가적인 레지스터들 또는 명령들을 이용하여 확장되지 않을 수 있다. 확장된 정밀 DSP 기능이 필요없는 사용자들은 레지스터 확장 캐쉬의 존재 및 그것의 기능에 대하여 알 필요가 없다.
상기 제시된 마이크로프로세서는 임의의 프로세스 장치일 수 있다. 바람직하게는 범용 마이크로프로세서, 예를 들어 소스 및 목적지 오퍼랜드들에 대한 다수의, 동일한 크기를 갖는 범용 레지스터들 포함하는 마이크로프로세서일 수 있다.
곱의 합 계산에 대한 명령 시퀀스는 일련의 MACH 명령들이 뒤따르는 MULH 명령으로 시작할 수 있다. 제시된 개념을 이용하여, 고차 곱셈 명령으로 시작하고 모두 동일한 목적지 레지스터(12)를 사용하는 일련의 MACH 명령들이 뒤따르는 곱의 합 명령 시퀀스에 대한 향상된 정밀도가 달성될 수 있다. 범용 레지스터로 결과를 전송하기 위해 곱의 합 시퀀스의 마지막에 추가적인 명령이 필요하지 않을 수 있으므로, 성능이 향상된다.
결과 오퍼랜드의 목적지 부분은 지정된 범용 목적지 레지스터(12)에 기록되는 고차 비트를 포함할 수 있다. 결과 오퍼랜드의 정밀도 향상 부분은 결과의 저차 비트(low order bits)일 수 있고 레지스터 확장 캐쉬(28)의 캐쉬 엔트리에 저장될 수 있다.
곱셈 유닛(14)은 적어도 하나의 입력을 통해 적어도 제1 및 제2 소스 오퍼랜드(24, 26)를 수신할 수 있다. 곱셈 유닛(14)은 각각의 소스 오퍼랜드들에 대한 전용 입력을 포함할 수 있다. 그러나, 소스 오퍼랜드들은 동일한 입력을 이용하여 연속적으로 제공될 수 있거나 제1 및 제2 소스 오퍼랜드는 동일한 소스 오퍼랜드일 수 있다. 또한 소스 오퍼랜드가 고정 상수 값을 가지거나 곱셈이 두 개 이상의 소스 오퍼랜드들을 이용하여 수행되는 것은 기술된 시스템의 범위 이내이다.
목적지 비트의 수를 초과하는 연관된 소스 비트의 수들의 합은 목적지 비트의 수보다 큰 합이다.
도 1에 도시된 예시적인 실시예에서, 프로세서 부분은 예를 들어 32비트 폭의 16개의 범용 레지스터들을 갖는 레지스터 파일(30)을 포함한다. 상기 제시된 예시는 예를 들어 범용 레지스터 폭 및 범용 레지스터들의 수에 대한 특정 값들을 사용한다. 본 발명은 이러한 특정 값들에 국한되지 않는다. 레지스터 파일(30)의 32비트 판독 포트(read port, 34)는 레지스터 확장 캐쉬(28)를 포함하는 곱셈 유닛(14)에 연결된다. 곱셈 유닛은 2개의 32비트 소스 오퍼랜드들(24, 26)을 수신한다. 곱셈 유닛(14)의 32비트 출력(36)은 레지스터 파일(30)의 32비트 기록 포트(write port, 38)에 연결된다. 제어 유닛(18)의 4비트 출력 포트는 곱셈 유닛(14)에 연결되고 곱셈 유닛(14)에 MULH 및 MACH 명령들의 결과 오퍼랜드들에 대한 4비트 목적지 식별자(32)를 신호할 수 있다. 각각의 MULH/MACH 연산에 있어서 이러한 4비트 ID(32)는 레지스터 파일(30)의 16개의 범용 레지스터들(12) 중의 어떤 것이 목적지로 사용될 수 있을지를 정할 수 있다. 제어 유닛(18)의 제2 출력은 곱셈 유닛(14)에 연결될 수 있고 MULH 또는 MACH 명령(20, 22)을 실행할지를 신호할 수 있다.
도시된 예시에서 MULH 명령(20)이 실행될 때, 곱셈 유닛(14)은 소스 오퍼랜드들(24 및 26)의 64비트 곱으로써 결과 오퍼랜드를 계산할 수 있다. 목적지 부분, 즉 64비트 곱의 32 고차 비트는 곱셈 유닛(14)의 포트(36)를 통해 출력되고 32비트 기록 포트(38)를 통해 레지스터 파일(30)의 지정된 32비트 목적지 레지스터(12) 안에 기록된다. 64비트 곱의 32 저차 비트는 레지스터 확장 캐쉬(28)의 엔트리 안에 기록된다. 제어 유닛(18)으로부터 수신되는 목적지 레지스터에 대한 4비트 ID는 예를 들어 동일한 캐쉬 엔트리의 태그(tag)로써 레지스터 확장 캐쉬(28)에 저장될 수 있다.
고차 곱셈 누산(MACH) 연산은 적어도 제1 및 제2 소스 오퍼랜드들(24, 26)을 이용하는 고차 곱셈(MULH) 연산으로부터 발생되는 중간 결과 오퍼랜드의 합, 및 적어도 하나의 범용 레지스터(12)에 앞서 저장된 이전의 목적지 부분과 적어도 하나의 캐쉬 엔트리에 앞서 저장된 상응하는 이전의 정밀도 향상 부분의 연결(concatenation)을 이용하여 결과 오퍼랜드를 발생시키는 것을 포함할 수 있다. MACH 연산을 실행할 때, 결과 오퍼랜드에 대한 전체 정밀도는 고차 (또는 목적지) 비트를 포함하는 목적지 레지스터(12) 및 저차 (또는 정밀도 향상) 비트를 포함하는 캐쉬 엔트리의 내용의 연결에 곱셈의 결과를 가산함으로써 달성될 수 있다.
(제어 및 유지보수에 대한 명령들을 제외하고) 임의의 다른 명령이 실행될 때, 레지스터 확장 캐쉬(28)의 내용은 변하지 않을 수 있다.
관련된 소스 비트의 수들의 합은 목적지 비트 및 정밀도 향상 비트의 수의 합과 동일할 수 있으므로, 캐쉬 엔트리는 모든 정밀도 향상 비트를 저장하도록 구성된다. 다른 실시예에서 관련된 소스 비트의 수들의 합은 목적지 비트 및 정밀도 향상 비트의 수의 합을 초과할 수 있다. 더 작은 폭은 확장에서의 최하위 비트 부분을 잘라낼 수 있다. 이는 캐쉬 엔트리 크기를 줄이는 것을 가능하게 할 수 있으므로, 미리 정해진 목표 정밀도 요구사항을 만족시키는 것을 가능하게 하면서, 다이 영역(die area)이 절약된다.
그러나, 더 넓은 폭 역시 본 발명의 범위 내에 있고 곱의 합 계산이 오버플로될 수 있는 알고리즘에 유용할 수 있다. 누산 단계 전에 추가적인 우향 쉬프트(right-shift)를 수행하는 MULH 및 MACH 명령들을 이용하여 오버플로(overflow)가 방지될 수 있다. 예를 들어 8비트 우향 쉬프트 및 레지스터 확장의 최하위 비트로 가산되는 8비트를 갖는 256에 이르는 곱들의 합은 오버플로될 수 없고 소스 오퍼랜드들에 대하여 최대 가능 정밀도로 계산된다.
그리고 적어도 2개의 소스 오퍼랜드들은 목적지 레지스터와 동일한 폭을 갖지 않을 수 있다. 예시들은 소스 오퍼랜드들의 최대 폭이 목적지 레지스터들의 폭과 동일한 전형적인 경우를 보여준다. 2개의 소스 오퍼랜드들은 레지스터로부터, 메모리로부터 수신될 수 있거나 상수들일 수 있고 목적지 레지스터보다 더 작거나 더 큰 임의의 폭을 가질 수 있다. 2개의 소스 오퍼랜드들은 동일한 폭을 가질 수도 아닐 수도 있다.
비트의 수, 즉 곱셈기 출력에 대한 예시들에서 사용되는 비트 폭은 곱의폭이 입력 오퍼랜드 폭의 합인 부호를 지니지 않는 또는 뒤섞인 부호의 곱들을 위한 것이다. 본 발명은 이러한 폭과 관련해서 제한되지 않는다.
마이크로프로세서(10)는 각각 레지스터 식별자를 갖는 복수의(30) 범용 레지스터들(12)을 포함할 수 있고 여기서 제어 유닛(18)은 곱셈 유닛(14)에 레지스터 식별자들 중의 하나와 매칭하는 목적지 식별자(32)를 제공하도록 적합화될 수 있으며, 곱셈 유닛은 목적지 식별자(32)에 의해 식별되는 범용 레지스터(12)에 목적지 부분을 저장하기 위해 적합화된다. 복수의(30) 범용 레지스터들은 예를 들어 레지스터 파일로 제공될 수 있다. 이는 사용가능한 범용 레지스터를 선택하는 것을 가능하게 할 수 있다. 범용 레지스터들은 또한 곱셈 유닛에 소스 오퍼랜드들을 제공하기 위해 사용될 수 있다.
그리고 레지스터 확장 캐쉬(28)는 레지스터 식별자들 중의 하나에 상응하는 캐쉬 엔트리 식별자를 이용하여 각각 구별되는(즉, 캐쉬 엔트리들은 예를 들어 목적지 레지스터의 레지스터 번호와 같은 식별자들로 태그가 붙여질 수 있다.) 복수의 캐쉬 엔트리들을 포함할 수 있고 여기서 곱셈 유닛(14)은 목적지 부분 및 목적지 식별자(32)와 매칭하는 캐쉬 엔트리 식별자를 갖는 캐쉬 엔트리에 의해 제공되는 정밀도 향상 부분을 이용하여 결과 오퍼랜드를 발생시키도록 적합화된다.
캐쉬 엔트리 식별자는, 식별자들이 동일하거나 서로 고유하게 연결된다면, 특정 레지스터 식별자에 상응하여 참조될 수 있다.
레지스터 확장 캐쉬(28)는 각각의 범용 레지스터들(12)에 대한 캐쉬 엔트리를 포함할 수 있다. 그러나, 더 적은 캐쉬 엔트리들이 사용될 수 있고 캐쉬 엔트리 식별자들은 동적으로 할당될 수 있다. 이는, 예를 들어 현재 수행되는 예상되는 곱의 합 계산에 대한 최대 또는 평균에 상응하게, 캐쉬 엔트리들의 수를 줄이는 것을 가능하게 할 수 있고 따라서 캐쉬 크기가 최소화된다.
도시된 예시에서 MACH 명령이 실행될 때, 곱셈 유닛(14)은 레지스터 파일(30)의 판독 포트(34)로부터 지정된 목적지 레지스터의 32비트 값을 수신한다. 곱셈 유닛은 결과 오퍼랜드, 즉 2개의 32비트 소스 오퍼랜드들(24, 26)의 64비트 곱을 계산할 수 있다.
출력 신호(32)를 통해 제어 유닛(18)에 의해 제공되는 4비트 목적지 ID는 레지스터 확장 캐쉬(28)의 모든 유효한 캐쉬 엔트리들에 대한 목적지 ID들과 비교될 수 있다.
MACH 명령이 실행될 때 레지스터 확장 캐쉬가 (동일한 목적지 레지스터 ID를 갖는 엔트리를) 히트(hit)하였는지 조사될 수 있다. 캐쉬 히트의 경우에 곱셈의 전체 정밀도 결과가 고차 비트를 갖고 있는 목적지 범용 레지스터(12) 및 저차 비트를 갖고 있는 캐쉬 엔트리의 연결에 가산된다. 도시된 실시예에서, (발견된 매칭하는 목적지 ID를) 히트의 경우에, 결과 오퍼랜드, 즉 64비트 곱은 매칭하는 레지스터 확장 캐쉬 엔트리로부터의 32비트 값(연결의 저차 비트) 및 목적지 레지스터로부터의 32비트 값들(연결의 고차 비트)의 연결에 가산될 수 있다. 결과의 32 저차 비트는 그리고 나서 레지스터 확장 캐쉬(28)의 매칭하는 엔트리에 저장될 수 있다. 매칭하는 캐쉬 엔트리의 목적지 ID는 변경되지 않을 수 있다. 결과의 32 고차 비트는 곱셈 유닛(14)의 포트(36)를 통해 출력되고 32비트의 넓은(wide) 기록 포트(38)를 통해 레지스터 파일(30)의 32비트 목적지 레지스터 안에 기록될 수 있다.
결과 오퍼랜드의 고차 비트, 즉 누산 결과는 상응하는 목적지 레지스터에 저장된다. 저차 비트는 히트하면서 캐쉬 엔트리에 저장된다. (매칭하는 ID가 발견되지 않는) 미스(miss)인 경우에, 목적지 부분, 즉 제시된 예시에서 곱의 32 고차 비트는 목적지 레지스터(12)로부터의 값에 가산될 수 있고 32비트 결과는 곱셈 유닛(14)의 포트(36)를 통해 출력되고 32비트의 넓은 기록 포트(38)를 통해 레지스터 파일(30)의 32비트 목적지 레지스터(12) 내에 기록된다. 따라서, MACH 연산에 대한 캐쉬 미스의 경우에 결과 오퍼랜드의 목적지 부분, 즉 곱셈 결과의 고차 비트는 목적지 레지스터에 가산될 수 있고 반면 저차 비트는 버려질 수 있다.
만약 곱의 합 시퀀스가 (첫 번째 이후에) 다른 고차 곱셈 명령들에 의해 중단되지 않는다면 단일 캐쉬 엔트리로 충분할 수 있다. 다수의 엔트리들을 갖는 레지스터 확장 캐쉬(28)는 다수의 곱의 합 시퀀스의 명령들에 대한 간섭을 가능하게 할 수 있다.
고차 곱셈 연산은 고차 곱셈 무효 연산(multiply-high-and-negate operation)을 포함할 수 있고 고차 곱셈 누산 연산은 고차 곱셈 무효 누산 연산을 포함할 수 있다. "무효" 옵션을 갖는 2개의 변형들은 예를 들어 샘플들 또는 상수들이 양 및 음의 부호들 모두와 함께 사용될 수 있는 DSP 알고리즘과 관련될 수 있다. 명령 변형들 모두를 갖는 것은 반대 부호를 갖는 값을 얻기 위한 추가적인 명령을 생략하게 한다.
도 1에서 도시된 바와 같이 곱셈 유닛(14)은 레지스터 확장 캐쉬(28)를 포함할 수 있다. 이는 별도의 캐쉬 및 연결 라인들에 대한 다이 영역을 절약하는 것을 가능하게 할 수 있다. 그러나, 레지스터 확장 캐쉬는 마이크로프로세서의 곱셈 유닛에 포함되지 않을 수 있다. 그것은 임의의 다른 유닛에 위치될 수 있거나 또한 별도의 유닛일 수 있다.
그리고 고차 곱셈 연산 및 고차 곱셈 누산 연산은 단일 명령 다중 데이터(Single Instruction Multiple Data) 연산들로 구현될 수 있다. 많은 마이크로프로세서들은 (레지스터들, ALU, 곱셈기들 같은) 데이터 경로 요소들을 다수의 작은 부분들로 나누는 SIMD(단일 명령 다중 데이터) 명령들을 가질 수 있다. 이는 예를 들어 16비트 해상도로 충분한 비디오 및 그래픽 알고리즘들의 성능을 증가시킬 수 있다. 그러한 프로세서 구조에 있어서, 각각의 경로(벡터 구성요소)에 대한 확장 레지스터들이 사용될 수 있다. 32비트 레지스터들을 갖는 프로세서들은 양방향(2-way) SIMD 명령들을 이용하여 그들의 성능을 2배로 만들 수 있다. 64비트 레지스터들을 갖는 프로세서들은 4방향(4-way) SIMD 명령들을 이용하여 그들의 성능이 4배가 되게 할 수 있다.
이제 또한 도 2를 참조하면, 본 발명에 따른 마이크로프로세서(10)의 곱셈 유닛(14)에 대한 실시예의 예시가 도시된다. 도 2는 단일 엔트리 레지스터 확장 캐쉬(28)를 갖는 곱셈 유닛에 대한 예시적인 구현을 도시한다. 설명 및 도면의 간단함을 위해 파이프라인 레지스터들은 도시되지 않고 오직 본 발명에 관련될 수 있는 입출력 신호들 및 데이터 경로들이 곱셈 유닛과 함께 도시된다. 도 1에서 주어진 예시와 유사하게, 소스와 목적지 오퍼랜드 폭들(32비트) 및 목적지 ID의 폭(소스 및 목적지 오퍼랜드들에 대하여 16개의 범용 레지스터들을 어드레스하기(address) 위한 4비트)에 대한 특정 값들이 사용된다. 그러나, 이는 예시적인 값들이고 쉽게 변경될 수 있음에 주의해야 할 것이다.
도시된 예시적인 곱셈 유닛은 곱셈들에 대한 소스 오퍼랜드들로써 2개의 32비트 입력 신호들(40, 42)을 포함할 수 있다. 제3 32비트 입력 신호(44)는 연산 전의 목적지 레지스터의 값일 수 있다. 그것은 MACH 연산들에 대한 소스 오퍼랜드로 사용될 수 있다. 입력 신호(46)는 제어 신호일 수 있다. 상기 예시적인 곱셈 유닛이 MULH 또는 MACH 연산을 수행할지 결정할 수 있다. 4비트 입력 신호(48)는 목적지 ID일 수 있다. 도시된 곱셈 유닛은 32비트 출력 값(50)을 발생시킬 수 있다.
도시된 예시에서, 곱셈 유닛은 다음의 구성요소들: 64비트 곱(66)을 계산하는 32·32비트 곱셈기(52); 64비트 가산기(54); 64비트, 2개의 입력을 갖는(2-input) 다중화기(multiplexer, 56); 32비트, 2개의 입력을 갖는 다중화기(58); 확장 캐쉬 레지스터일 수 있는 32비트 레지스터(60); 4비트 레지스터(62); 4비트 균등 비교기(equality comparator, 64);를 포함한다. 도 2에 도시된 예시에서, 예시적인 곱셈 유닛의 구성요소들은 다음의 방식으로 연결되는데: 곱셈기(52)는 2개의 32비트 입력 값들(40 및 42)을 수신한다. 가산기(54)는 곱셈기(52)의 출력(66) 및 다중화기(56)의 출력을 수신한다. 가산기의 64비트 출력(68)은 32 고차 비트(50) 및 32 저차 비트(70)로 나누어진다. 32 고차 비트는 곱셈 유닛의 출력 신호(50)이다. 64비트, 2개의 입력을 갖는 다중화기(56)는 제1 입력에서 상수 0 값을 수신한다. 제2 64비트 입력은 32 고차 비트인 입력 신호(44) 및 32 저차 비트인 다중화기(58)의 출력(72)을 수신한다. 32비트 레지스터(60)는 가산기(64)의 출력(68)의 32 저차 비트(70)를 수신한다. 4비트 레지스터(62)는 4비트 입력 신호(48)를 수신한다. 32비트, 2개의 입력을 갖는 다중화기(58)는 제1 입력으로써 레지스터(60)의 32비트 출력을 그리고 제2 입력으로써 상수 0 값을 수신한다. 4비트 균등 비교기(64)는 제1 입력으로써 4비트 입력 값(48)을 그리고 제2 입력으로써 레지스터(62)의 출력을 수신한다. 비교기의 출력은 다중화기(58)의 선택 입력에 연결된다. 제어 입력 신호(46)는 다중화기(56)의 선택 입력, 레지스터(62)의 가능한(enable) 입력 및 레지스터(60)의 제1 가능한 입력에 연결된다.
레지스터들(60 및 62)는 단지 예시적인 곱셈 유닛의 저장 요소들이고 단일 캐쉬 엔트리의 태그 및 데이터 부분들을 저장한다. 다른 구성요소들이 결합될 수 있다. 클럭 신호(clock signal, 도시되지 않음)에 의해 구동되어 2개의 레지스터들은 오직 연산의 마지막에 그리고 오직 그들의 가능한 입력들이 어써트되는(asserted) 경우에만 새로운 값들을 취한다. 레지스터(62)는 제어 입력(46)에 의해 구동되는 단일의 가능한 입력을 갖는다. 레지스터(60)는 OR 구성에서 2개의 가능한 입력들을 갖는다. 만약 제어 입력(46)이 어서트되거나 만약 비교기(64)의 출력이 입력(48) 및 레지스터(62)의 값이 동일하다고 가리키면 가능하게 된다.
제시된 예시적인 곱셈 유닛은 적어도 3가지 유형의 연산들을 수행할 수 있다. 3개의 연산들 중에서 어느 것이 수행되는지는 입력 신호(46) 및 비교기 회로(64)의 출력에 의해 제어된다.
유형 1 연산은 MULH 지시가 실행될 때 수행된다. 제어 입력(46)은 다중화기(56)의 상수 0 입력을 선택하고 연산의 마지막에 레지스터들(60 및 62)의 업데이트를 가능하게 한다. 입력 값(44)은 무시된다(필요하지 않다). 비교기(64)의 출력은 무시된다(필요하지 않다). 가산기(54)는 곱셈기(52)의 64비트 출력(66)에 0을 가산한다. 가산기의 출력(68)은 곱셈기(52)의 출력(66)과 동일하다. 출력 50은 곱셈기 출력(66)의 32 고차 비트와 동일한 출력 68의 32 고차 비트이다. 연산의 마지막에, 곱셈기 출력(66)의 32 저차 비트와 동일한 가산기 출력(68)의 32 저차 비트(70)는 레지스터(60)에 저장된다. 4비트 목적지 ID(48)는 레지스터(62)에 저장된다.
유형 2 연산은 MACH 명령이 실행될 때 그리고 만약 4비트 입력 값(48)과 4비트 레지스터(62)의 값이 서로 다르면, 즉 캐쉬 미스의 경우에 수행된다. 비교기(64)의 출력은 다중화기(58)의 상수 0 입력을 선택하고 입력(46)과 함께 레지스터(60)의 업데이트를 불가능하게 한다(가능한 입력들 둘 다는 디어써트된다(deasserted)). 제어 유닛(46)은 레지스터(62)의 업데이트를 불가능하게 하고 입력 신호(44)와 다중화기(58)의 출력(72)의 연결인 다중화기(56)의 제2 입력을 선택한다. 가산기(54)는 곱셈기 출력(66)의 32 고차 비트에 32비트 입력 신호(44)를 가산한다. 결과 68의 32 고차 비트는 출력 값 50이다.
유형 3 연산은 제시된 예시에서 MACH 명령이 실행될 때 그리고 만약 입력 값(48)과 4비트 레지스터(62)의 값이 동일하면, 즉 캐쉬 히트인 경우에 수행된다. 비교기(64)의 출력은 다중화기(58)의 제1 입력을 선택하고 다중화기(58)의 출력(72)은 레지스터(60)의 값이 된다. 비교기(64)의 출력은 또한 연산의 마지막에 레지스터(60)의 업데이트를 가능하게 한다. 제어 입력(46)은 레지스터(62)의 업데이트를 불가능하게 하고 입력 신호(44)와 레지스터(60)의 값인 다중화기(58)의 출력(72)의 연결인 다중화기(56)의 제2 입력을 선택한다. 가산기(54)는 곱셈기의 64 비트 출력(66)에 32 비트 입력 신호(44)(연결의 고차 비트)와 레지스터(60)의 32비트 값의 64비트 연결을 가산한다. 결과 68의 32 고차 비트는 출력 값 50이다. 결과(68)의 32 저차 비트(70)는 연산의 마지막에 레지스터(60)에 저장된다. 레지스터(62)의 내용은 변경되지 않은 채로 있다.
예를 들어 캐쉬 엔트리에 대한 유효 플래그(valid flag) 또는 초기화 절차와 같은 추가적인 제어 방법들이 요구되지 않을 수 있다.
다수의 캐쉬 엔트리들을 갖는 레지스터 확장 캐쉬들에 있어서, 확장 및 ID 레지스터들에 더해 적어도 유효 플래그가 각각의 캐쉬 엔트리에 대해 요구될 수 있다. 초기화 절차는 시스템 시동 시간에 모든 엔트리들을 무효화할 수 있다. MULH 명령이 실행될 때 중복기록되는(overwritten) 엔트리를 어떻게(예를 들어, 가장 적게 최근에 사용된) 선택할 것인가에 대한 다양한 방법들이 알려져 있다.
일 실시예에서 레지스터 확장 캐쉬에 범용 레지스터들의 수와 동일한 엔트리들의 수가 제공될 수 있다. 각각의 범용 레지스터는 할당된 특정 확장 레지스터를 가질 수 있으며; 목적지 ID는 저장될 필요가 없을 수 있고 단일 엔트리의 경우와 마찬가지로 어떠한 유효 플래그들도 요구되지 않을 수 있다.
제시된 마이크로프로세서는, 예를 들어 8×8 포인트 IDCT 같은, 역 이산 코사인 변환(inverse discrete cosine transform, IDCT) 계산을 수행하기 위해 배열될 수 있다. 바람직하게는, 정밀도 향상 비트의 수는 IEEE-1180-1990 적합성 검사에 따르는 정밀도를 갖는 역 이산 코사인 변환 계산을 허용하도록 선택될 수 있다.
예를 들어, 동화상 전문가 그룹(Moving Picture Experts Group)에 의해 발표된 MPEG1, MPEG2, 및 MPEG4-SP/ASP와 같은 몇몇 비디오 코덱들은 디코딩 프로세스를 위해 8×8 포인트 IDCT 계산을 이용한다. 소프트웨어 비디오 디코더들에서, IDCT 계산은 전체 프로세서 부하(processor load)의 많은 부분을 차지할 수 있다. IEEE-1180-1990 적합성 검사는 예를 들어 MPEG 비디오 디코딩에 사용되는 8×8 포인트 IDCT 계산의 결과에 대한 최소 정밀도를 명시한다. 그러나, 16비트 누산으로 IEEE-1180-1990을 준수하는 IDCT 출력은 계산될 수 없다. 이에 따르기 위해, 32비트 레지스터들을 갖는 프로세서들은 SIMD 명령들을 전혀 사용할 수 없고 64비트 레지스터들을 갖는 프로세서들은 양방향 SIMD 명령들을 사용해야 한다.
도 3에 도시된 바와 같이, 본 발명에 따른 비디오 디코딩 장치(74)에 대한 도식적인 예시적 실시예는 상기에서 기술한 바와 같은 마이크로프로세서(10)를 포함할 수 있다. 예시와 같이, 추가적인 레지스터들 또는 더 넓은 레지스터들을 갖는 범용 프로세서의 프로그래밍 모델을 확장하지 않으며 IEEE-1180-1990을 준수하는 IDCT들을 계산하기 위해, 본 발명에 따르는, 32비트 레지스터들을 갖는 마이크로프로세서들은 양방향 SIMD 명령을 사용할 수 있고 64비트를 갖는 프로세들은 4방향 SIMD 명령들을 사용할 수 있다.
이제 도 4를 참조하면, 본 발명에 따른 정밀도 향상 곱들의 합 계산 방법의 제1 실시예에 대한 흐름도의 도식적 예시가 도시된다. 도시된 방법은 마이크로프로세서 상에서 향상된 정밀 곱들의 합 계산 방법의 부분으로 기술된 마이크로프로세서의 장점들 및 특성들을 구현하는 것을 허용한다. 이는, 또한 도 5를 참조한다.
상기 도해는 시작 상태(76) 및 종료 상태(78)를 포함한다.
상기 방법은 곱셈 유닛에 목적지 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 범용 레지스터, 및 정밀도 향상 비트의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 캐쉬 엔트리를 포함하는 레지스터 확장 캐쉬를 포함하는 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산에 대한 것이다. 상기 방법은 고차 곱셈 명령을 수신하는 단계(80); 각각 관련된 소스 비트의 수 및 목적지 비트의 수를 초과하는 관련된 소스 비트의 수들의 합을 갖는 적어도 제1 및 제2 소스 오퍼랜드들을 수신하는 단계(82); 적어도 제1 및 제2 소스 오퍼랜드들을 이용하여 고차 곱셈 연산을 실행함으로써 결과 오퍼랜드를 발생시키는 단계(84); 범용 레지스터에 결과 오퍼랜드의 목적지 부분을 그리고 캐쉬 엔트리에 중간 결과 오퍼랜드의 정밀도 향상 부분을 저장하는 단계(86); 고차 곱셈 누산 시퀀스의 각각의 구성요소에 대하여: 고차 곱셈 누산 명령을 수신하는 단계(90); 적어도 제1 및 제2 소스 오퍼랜드를 수신하는 단계(92); 적어도 하나의 제1 및 제2 소스 오퍼랜드들, 및 적어도 하나의 범용 레지스터에 앞서 저장된 이전의 목적지 부분과 적어도 하나의 캐쉬 엔트리에 앞서 저장된 상응하는 이전의 정밀도 향상 부분의 연결을 이용하는 고차 곱셈 연산으로부터 발생되는 새로운 결과 오퍼랜드의 합을 이용하여 고차 곱셈 누산 연산을 실행함으로써 결과 오퍼랜드를 업데이트하는 단계(94); 및 범용 레지스터에 결과 오퍼랜드의 업데이트된 목적지 부분을 그리고 캐쉬 엔트리에 결과 오퍼랜드의 업데이트된 정밀도 향상 부분을 저장하는 단계(96);를 포함할 수 있다.
곱들의 합의 상이한 구성요소들을 프로세싱할 때 소스 오퍼랜드들이 상이한 값들을 가질 수 있음에 주의해야 할 것이다. 수신되는 MACH 명령들에 대한 시퀀스는 이전의 MULH 명령들과 관련될 수 있다. 단계 90, 92, 94, 및 96은 MACH 명령들에 대한 시퀀스의 모든 구성요소들에 대해 실행될 수 있다. 이는 더 이상상응하는 MACH 명령들이 수신되지 않을 때 종료될 수 있다. 또한, 곱들의 합 시퀀스의 길이에 대한 어떠한 선험적 지식, 즉 시퀀스의 구성요소들에 대한 수에 대해서 요구되지 않을 수 있어서, 예를 들어 전용 명령들의 도입을 피할 수 있음에 주목해야 할 것이다.
상기 방법은 각각 레지스터 식별자를 갖는 복수의 범용 레지스터들, 및 레지스터 식별자들 중의 하나에 상응하는 캐쉬 엔트리 식별자를 이용하여 각각 식별되는 복수의 캐쉬 엔트리들을 포함하는 레지스터 확장 캐쉬를 포함하는 마이크로프로세서에 더 적용될 수 있다. 상기 방법은 곱셈 유닛에 레지스터 식별자들 중의 하나와 매칭하는 목적지 식별자를 제공하는 단계; 및 목적지 부분과 목적지 식별자와 매칭하는 캐쉬 엔트리 식별자를 갖는 캐쉬 엔트리에 의해 제공되는 정밀도 향상 부분을 이용하여 결과 오퍼랜드를 발생시키는 단계;를 더 포함할 수 있다. 범용 레지스터의 결과 오퍼랜드의 목적지 부분을 그리고 캐쉬 엔트리에 중간 결과 오퍼랜드의 정밀도 향상 부분을 저장하는 단계(86)는 목적지 식별자에 의해 식별되는 범용 레지스터에 목적지 부분을 저장하는 단계를 포함한다.
도 5를 참조하면, 본 발명에 따른 정밀도 향상 곱들의 합 계산 방법에 대한 제2 실시예의 흐름도의 도시적 예시가 도시된다.
도해는 시작 상태(100) 및 종료 상태(102)를 포함한다.
도시된 예시에서, 단일 엔트리 레지스터 확장 캐쉬가 사용된다. 설명에서, 다음의 레지스터 및 변수 이름들이 사용된다:
S0 소스 오퍼랜드 0
S1 소스 오퍼랜드 1
OPT 연산 유형, MULH 또는 MACH 연산이 수행되는지를 정하는 제어 값
RA 레지스터 어레이
RA[i] 레지스터 어레이(RA)의 i번째 레지스터
i 레지스터 어레이(RA)의 i번째 레지스터의 인덱스
EXR 확장 레지스터
IDR ID 레지스터
PD 소스 오퍼랜드들(S0 및 S1)의 곱 또는 무효 곱(negated product)
PDL 곱(PD)의 저차 비트
PDH 곱(PD)의 고차 비트
CON EXR(저차 비트) 및 RA[i](고차 비트)의 연결
SUM PD와 CON의 합
SUML SUM의 저차 비트
SUMH SUM의 고차 비트
104 단계에서 값들 S0, S1, i 및 OPT가 수신된다. 106 단계에서 소스 오퍼랜드들(S0 및 S1)의 곱 또는 무효 곱(PD)이 계산된다. 108 단계에서 OPT가 MULH 또는 MACH 연산을 정하는지를 조사한다. MULH의 경우에 프로세스는 110 단계를 계속한다. MACH의 경우에 프로세스는 112 단계를 계속한다.
110 단계에서 레지스터 어레이(RA)의 i번째 레지스터(RA[i])의 인덱스(i)는 ID 레지스터(IDR)에 저장된다. 곱(PD)의 저차 비트(PDL)는 확장 레지스터(EXR)에 저장된다. 곱(PD)의 고차 비트(PDH)는 레지스터 어레이(RA)의 i번째 레지스터(RA[i])에 저장된다. 프로세스는 이 단계 이후에 종료한다(102).
112 단계에서 레지스터 어레이(RA)의 i번째 레지스터(RA[i])의 값이 수신된다. 114 단계에서는 수신되는 인덱스(i)가 ID 레지스터(IDR)의 값과 동일한지를 조사한다. 수신되는 인덱스(i)가 레지스터(IDR)의 값과 다른 경우에 프로세스는 116 단계를 계속한다. 수신되는 인덱스(i)가 레지스터(IDR)의 값과 동일한 경우에 프로세스는 118 단계를 계속한다.
116 단계에서 곱(PD)의 고차 비트(PDH)는 레지스터 어레이(RA)의 i번째 레지스터(RA[i])의 값에 가산된다. 상기 결과는 동일한 레지스터(RA[i])에 저장된다. 도시된 프로세서는 이 단계 이후에 종료할 수 있다(102).
118 단계에서 확장 레지스터(EXR)와 레지스터 어레이(RA)의 i번째 레지스터(RA[i])의 값의 연결(CON)이 발생된다. EXR은 연결의 저차 비트이고 RA[i]는 연결의 고차 비트이다.
120 단계에서 곱(PD)의 합(SUM) 및 연결(CON)이 계산된다. EXR과 RA[i]의 연결로 인해 PDL와 EXR의 가산에 의해 발생되는 캐리(carry)가 PDH와 RA[i]의 합에 전해진다.
122 단계에서 SUM의 저차 비트(SUML)는 확장 레지스터(EXR)에 저장된다. SUM의 고차 비트(SUMH)는 레지스터 어레이(RA)의 i번째 레지스터(RA[i])에 저장된다. 상기 프로세서는 이 단계 이후에 종료할 수 있다(102).
또한, 컴퓨터 프로그램 제품은 프로그램가능한 장치 상에서 구동할 때 상기에서 설명한 방법의 단계들을 실행하기 위한 코드 부분들을 포함할 수 있다. 정보 프로세스 시스템에 적어도 일시적으로 커플링되는(coupled) 컴퓨터 판독가능한 매체 상에 컴퓨터 프로그램이 제공될 수 있다.
논리 블록들 사이의 경계들은 단지 예시용이고 대안적인 실시예들에서는 논리 블록들 사이의 기능을 다르게 분배할 수 있다는 것에 주의해야 할 것이다. 본 발명은 하드웨어로 구현되는 물리적 장치들로 제한되지 않을 뿐만 아니라 프로그램 코드를 이용하여 작동함으로써 장치의 원하는 기능들을 수행할 수 있는 임의의 프로그램 장치로 구현될 수도 있다. 상기 명세서 및 도면들은 예시적인 실시예들을 설명하며 제시된 예시들로 발명을 제한하려는 의도는 아니다. '포함하는(comprising)'이라는 단어는 청구항에서 언급한 것 외에 다른 요소들 또는 단계들의 존재를 제외하는 것으로 해석되지 않을 수 있다.
본 발명이 특정 구조들, 장치들 및 방법들의 면에서 설명되었으나, 단지 그러한 예시들에 국한되지 않으며 본 발명의 전체 범위는 청구항들에 의해 적절히 결정됨을 당업자들은 여기에서의 설명에 기초하여 이해할 것이다.

Claims (14)

  1. 곱셈 유닛(14);
    상기 곱셈 유닛(multiply unit, 14)에 목적지 비트(destination bit)의 수를 저장하고 제공하기 위해 배열되는 적어도 하나의 범용 레지스터(general-purpose-register, 12);
    상기 곱셈 유닛에 적어도 고차 곱셈 명령(multiply-high instruction, 20) 및 고차 곱셈 누산 명령(multiply-high-and-accumulate instruction, 22)을 제공하기 위해 적합화되는 제어 유닛(18);
    을 포함하되,
    상기 곱셈 유닛은 또한,
    각각 관련된 소스 비트(source bit)의 수 및 상기 목적지 비트의 수를 초과하는 상기 관련된 소스 비트의 수의 합을 갖는 적어도 제1 및 제2 소스 오퍼랜드(source operand, 24, 26)를 수신하기 위해 배열되며;
    정밀도 향상 비트를 저장하고 제공하기 위해 배열되는 적어도 하나의 캐쉬 엔트리(cache entry)를 포함하는 레지스터 확장 캐쉬(28)에 연결되고;
    상기 범용 레지스터에 결과 오퍼랜드의 고차 비트(high order bit)를 포함하는 목적지 비트 부분을 그리고 상기 캐쉬 엔트리에 상기 결과 오퍼랜드의 저차 비트(low order bit)를 포함하는 정밀도 향상 비트 부분을 저장하도록 적용되며;
    상기 결과 오퍼랜드는 상기 고차 곱셈 명령을 수신할 때에 고차 곱 연산에 의해, 그리고 상기 고차 곱셈 누산 명령을 수신할 때에 고차 곱셈 누산 연산에 의해 발생되고,
    상기 고차 곱셈 누산 연산은 상기 적어도 제1 및 제2 소스 오퍼랜드들 및 상기 적어도 하나의 범용 레지스터에 앞서 저장된 이전의 목적지 비트 부분과 상기 적어도 하나의 캐쉬 엔트리에 앞서 저장된 상응하는 이전의 정밀도 향상 비트 부분의 연결(concatenation)을 이용하는 고차 곱셈 연산으로부터 발생되는 중간 결과 오퍼랜드의 합을 이용하는 상기 결과 오퍼랜드를 발생시키는 것을 포함하는 것을 특징으로 하는 마이크로프로세서.
  2. 청구항 1에 있어서,
    상기 관련된 소스 비트의 수들의 상기 합은 목적지 비트와 상기 정밀도 향상 비트의 상기 수의 합을 초과하는 것을 특징으로 하는 마이크로프로세서.
  3. 제1항 또는 제2항에 있어서,
    각각 레지스터 식별자(register identifier)를 갖는 복수의(30) 범용 레지스터들을 포함하고,
    상기 제어 유닛은 상기 곱셈 유닛에 상기 레지스터 식별자들 중 하나와 매칭(matching)하는 목적지 식별자(32)를 제공하기 위해 적합화되며,
    상기 곱셈 유닛은 상기 목적지 식별자에 의해 식별되는 상기 범용 레지스터에 상기 목적지 비트 부분을 저장하기 위해 적용되는 것을 특징으로 하는 마이크로프로세서.
  4. 청구항 3에 있어서,
    상기 레지스터 확장 캐쉬는 상기 레지스터 식별자들 중 하나에 상응하는 캐쉬 엔트리 식별자를 이용하여 각각 식별되는 복수의 상기 캐쉬 엔트리들을 포함하고,
    상기 곱셈 유닛은 상기 목적지 비트 부분 및 상기 목적지 식별자와 매칭하는 상기 캐쉬 엔트리 식별자를 갖는 캐쉬 엔트리에 의해 제공되는 정밀도 향상 비트 부분을 이용하여 상기 결과 오퍼랜드를 발생시키기 위해 적합화되는 것을 특징으로 하는 마이크로프로세서.
  5. 청구항 1에 있어서,
    상기 고차 곱셈 연산은 고차 곱셈 무효 연산을 포함하고,
    상기 고차 곱셈 누산 연산은 고차 곱셈 무효 누산 연산을 포함하는 것을 특징으로 하는 마이크로프로세서.
  6. 청구항 1에 있어서,
    상기 곱셈 유닛은 상기 레지스터 확장 캐쉬를 포함하는 것을 특징으로 하는 마이크로프로세서.
  7. 청구항 1에 있어서,
    상기 고차 곱셈 연산 및 상기 고차 곱셈 누산 연산은 단일 명령 곱셈 데이터 연산들(Single Instruction Multiple Data operations)로 구현되는 것을 특징으로 하는 마이크로프로세서.
  8. 청구항 1에 있어서,
    역 이산 코사인 변환(inverse discrete cosine transform) 계산을 수행하기 위해 배열되는 것을 특징으로 하는 마이크로프로세서.
  9. 청구항 8에 있어서,
    상기 정밀도 향상 비트의 수는 IEEE-1180-1990 적합성 검사(compliance test)에 따르는 정밀도를 갖는 상기 역 이산 코사인 변환 계산을 허용하기 위해 선택되는 것을 특징으로 하는 마이크로프로세서.
  10. 제1항에서 청구되는 마이크로프로세서를 포함하는 비디오 디코딩 장치(video decoding device, 74).
  11. 곱셈 유닛, 상기 곱셈 유닛에 목적지 비트를 저장하고 제공하기 위해 배열되는 적어도 하나의 범용 레지스터, 및 정밀도 향상 비트를 저장하고 제공하기 위해 배열되는 적어도 하나의 캐쉬 엔트리를 포함하는 레지스터 확장 캐쉬를 포함하는 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법에 있어서,
    상기 방법은,
    고차 곱셈 명령을 수신하는 단계(80);
    각각 관련된 소스 비트의 수 및 상기 목적지 비트의 수를 초과하는 상기 관련된 소스 비트의 수들의 합을 갖는 적어도 제1 및 제2 소스 오퍼랜드를 수신하는 단계(82);
    상기 적어도 제1 및 제2 소스 오퍼랜드들을 이용하여 고차 곱셈 연산을 실행함으로써 결과 오퍼랜드를 발생시키는 단계(84);
    상기 범용 레지스터에 상기 결과 오퍼랜드의 고차 비트를 포함하는 목적지 비트 부분을 그리고 상기 캐쉬 엔트리에 상기 결과 오퍼랜드의 저차 비트를 포함하는 정밀도 향상 비트 부분을 저장하는 단계(86);
    고차 곱셈 누산 시퀀스(sequence)의 각각의 구성요소에 대하여,
    고차 곱셈 누산 명령을 수신하는 단계(90);
    상기 적어도 제1 및 제2 소스 오퍼랜드를 수신하는 단계(92);
    상기 적어도 제1 및 제2 소스 오퍼랜드들 및 상기 적어도 하나의 범용 레지스터에 앞서 저장된 이전의 목적지 비트 부분과 상기 적어도 하나의 캐쉬 엔트리에 앞서 저장된 상응하는 이전의 정밀도 향상 비트 부분의 연결을 이용하는 고차 곱셈 연산으로부터 발생되는 새로운 결과 오퍼랜드들의 합을 이용하여 고차 곱셈 누산 연산을 실행함으로써 상기 결과 오퍼랜드를 업데이트하는 단계(94); 및
    상기 범용 레지스터에 상기 결과 오퍼랜드의 업데이트된 목적지 비트 부분을 그리고 상기 캐쉬 엔트리에 상기 결과 오퍼랜드의 업데이트된 정밀도 향상 비트 부분을 저장하는 단계(96);
    를 포함하는 것을 특징으로 하는 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법.
  12. 청구항 11에 있어서,
    상기 마이크로프로세서는 각각 레지스터 식별자를 갖는 복수의 범용 레지스터들을 포함하고,
    상기 레지스터 확장 캐쉬는 상기 레지스터 식별자들 중의 하나에 상응하는 캐쉬 엔트리 식별자를 이용하여 각각 식별되는 복수의 상기 캐쉬 엔트리들을 포함하되,
    상기 방법은,
    상기 곱셈 유닛에 상기 레지스터 식별자들 중의 하나와 매칭하는 목적지 식별자를 제공하는 단계; 및
    상기 목적지 비트 부분 및 상기 목적지 식별자와 매칭하는 상기 캐쉬 엔트리 식별자를 갖는 캐쉬 엔트리에 의해 제공되는 정밀도 향상 비트 부분을 이용하여 상기 결과 오퍼랜드를 발생시키는 단계;
    를 포함하고,
    상기 범용 레지스터에 상기 결과 오퍼랜드의 상기 고차 비트를 포함하는 목적지 비트 부분을 그리고 상기 캐쉬 엔트리에서 상기 결과 오퍼랜드의 상기 저차 비트를 포함하는 정밀도 향상 비트 부분을 저장하는 단계(86)는 상기 목적지 식별자에 의해 식별되는 상기 범용 레지스터에 상기 목적지 비트 부분을 저장하는 단계;를 포함하는 것을 특징으로 하는 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법.
  13. 프로그램 가능한 장치 상에서 구동할 때 청구항 11 또는 12에서 청구되는 방법의 단계들을 실행하기 위한 코드 부분들을 포함하는 컴퓨터 프로그램 제품이 저장된 컴퓨터로 판독가능한 기록 매체.
  14. 삭제
KR1020127009136A 2009-11-30 2009-11-30 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법 KR101395260B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2009/008522 WO2011063824A1 (en) 2009-11-30 2009-11-30 Microprocessor and method for enhanced precision sum-of-products calculation on a microprocessor

Publications (2)

Publication Number Publication Date
KR20120062890A KR20120062890A (ko) 2012-06-14
KR101395260B1 true KR101395260B1 (ko) 2014-05-15

Family

ID=41682359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009136A KR101395260B1 (ko) 2009-11-30 2009-11-30 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법

Country Status (8)

Country Link
US (1) US9158539B2 (ko)
EP (1) EP2507701B1 (ko)
JP (1) JP5456167B2 (ko)
KR (1) KR101395260B1 (ko)
CN (1) CN102576302B (ko)
HK (1) HK1171843A1 (ko)
TW (1) TWI493453B (ko)
WO (1) WO2011063824A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102059060B1 (ko) 2011-09-28 2019-12-24 선 페이턴트 트러스트 화상 부호화 방법, 화상 복호화 방법, 화상 부호화 장치, 화상 복호화 장치 및 화상 부호화 복호화 장치
CN103268223B (zh) * 2013-04-26 2016-06-29 深圳中微电科技有限公司 在编译过程中改善乘加类指令执行性能的方法
CN109710559A (zh) * 2016-11-03 2019-05-03 北京中科寒武纪科技有限公司 Slam运算装置和方法
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
CN111814093A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种乘累加指令的处理方法和处理装置
US11275562B2 (en) * 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
US20220309125A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Data compressor for approximation of matrices for matrix multiply operations
CN113298245B (zh) * 2021-06-07 2022-11-29 中国科学院计算技术研究所 一种基于数据流架构的多精度神经网络计算装置以及方法
CN113506291B (zh) * 2021-07-29 2024-03-26 上海幻电信息科技有限公司 兼容性测试方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116432A1 (en) * 2001-02-21 2002-08-22 Morten Strjbaek Extended precision accumulator
US20040267854A1 (en) * 2003-06-26 2004-12-30 Towfique Haider Logarithmic and inverse logarithmic conversion system and method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579253A (en) * 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
JPH09186554A (ja) * 1995-12-28 1997-07-15 New Japan Radio Co Ltd ディジタルフィルタ
US5764553A (en) * 1996-02-28 1998-06-09 Lsi Logic Corporation Generalized data processing path for performing transformation and quantization functions for video encoder systems
US5880983A (en) 1996-03-25 1999-03-09 International Business Machines Corporation Floating point split multiply/add system which has infinite precision
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
JP2007072857A (ja) * 2005-09-08 2007-03-22 Oki Electric Ind Co Ltd 演算処理装置および情報処理装置
JP2008310693A (ja) * 2007-06-15 2008-12-25 Panasonic Corp 情報処理装置
TW200928793A (en) * 2007-12-26 2009-07-01 Ruei-Jau Chen Algorithm method capable of enhancing accuracy and computation speed of the computation of corrected sums of products (CSP) of computing hardware

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116432A1 (en) * 2001-02-21 2002-08-22 Morten Strjbaek Extended precision accumulator
US20040267854A1 (en) * 2003-06-26 2004-12-30 Towfique Haider Logarithmic and inverse logarithmic conversion system and method

Also Published As

Publication number Publication date
TWI493453B (zh) 2015-07-21
CN102576302A (zh) 2012-07-11
JP5456167B2 (ja) 2014-03-26
KR20120062890A (ko) 2012-06-14
EP2507701A1 (en) 2012-10-10
TW201118725A (en) 2011-06-01
HK1171843A1 (en) 2013-04-05
CN102576302B (zh) 2014-10-29
US20120198212A1 (en) 2012-08-02
EP2507701B1 (en) 2013-12-04
US9158539B2 (en) 2015-10-13
WO2011063824A1 (en) 2011-06-03
JP2013508830A (ja) 2013-03-07

Similar Documents

Publication Publication Date Title
KR101395260B1 (ko) 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법
US10599429B2 (en) Variable format, variable sparsity matrix multiplication instruction
US9703529B2 (en) Exception generation when generating a result value with programmable bit significance
US11188330B2 (en) Vector multiply-add instruction
EP2963538A1 (en) Temporally split fused multiply-accumulate operation
EP3719639B1 (en) Systems and methods to perform floating-point addition with selected rounding
US20120191767A1 (en) Circuit which Performs Split Precision, Signed/Unsigned, Fixed and Floating Point, Real and Complex Multiplication
US20060041610A1 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US7917568B2 (en) X87 fused multiply-add instruction
US20180307488A1 (en) Multiply-and-accumulate-products instruction
KR20230129559A (ko) 가변길이 명령어들을 사용하는 병렬 디코드 명령어 세트 컴퓨터 아키텍처
EP1089166A2 (en) An integer instruction set architecture and implementation
US20190196790A1 (en) Apparatus and method for processing reciprocal square root operations
US20240004647A1 (en) Vector processor with vector and element reduction method
US20130132452A1 (en) Method and Apparatus for Fast Computation of Integral and Fractional Parts of a High Precision Floating Point Multiplication Using Integer Arithmetic
CN117908962A (zh) 非线性计算方法、开源处理器、电子设备及存储介质

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
N231 Notification of change of applicant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190430

Year of fee payment: 6