KR100329339B1 - 압축데이터에의한승산-가산연산수행장치 - Google Patents

압축데이터에의한승산-가산연산수행장치 Download PDF

Info

Publication number
KR100329339B1
KR100329339B1 KR1019980701542A KR19980701542A KR100329339B1 KR 100329339 B1 KR100329339 B1 KR 100329339B1 KR 1019980701542 A KR1019980701542 A KR 1019980701542A KR 19980701542 A KR19980701542 A KR 19980701542A KR 100329339 B1 KR100329339 B1 KR 100329339B1
Authority
KR
South Korea
Prior art keywords
data
compressed
data elements
elements
result
Prior art date
Application number
KR1019980701542A
Other languages
English (en)
Other versions
KR19990044305A (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 피터 엔. 데트킨
Priority claimed from PCT/US1996/012799 external-priority patent/WO1997008610A1/en
Publication of KR19990044305A publication Critical patent/KR19990044305A/ko
Application granted granted Critical
Publication of KR100329339B1 publication Critical patent/KR100329339B1/ko

Links

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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • 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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • 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
    • 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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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/52Multiplying; 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Signal Processing (AREA)
  • Discrete Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)

Abstract

제1 및 제2압축 데이터를 각각 가지고 있는 제1 및 제2기억 영역을 가진 프로세서가 공개된다. 각각의 압축 데이터는 제1, 제2, 제3 및 제4데이터 요소를 포함하고 있다. 승산 가산 회로가 상기 제1 및 제2기억 영역에 접속되어 있다. 승산 가산 회로는 제1승산기(810), 제2승산기(811), 제3승산기(812) 및 제4승산기(813)를 포함하고 있고, 이때 각각의 승산기는 대응하는 세트의 상기 데이터 요소를 수신한다. 상기 승산 가산 회로는 또한 상기 제1 및 제2승산기(810,811)에 접속되어 있는 제1가산기(850), 및 상기 제3 및 제4승산기(812,813)에 접속되어 있는 제2가산기(851)를 포함하고 있다. 제3기억 영역(871)이 상기 가산기(850,851)에 접속되어 있다. 상기 제3기억 영역(871)은 상기 제1 및 제2가산기(850,851)의 출력을 제3압축 데이터의 제1 및 제2데이터 요소로서 각각 세이브하기 위한 제1 및 제2필드를 포함하고 있다.

Description

압축 데이터에 의한 승산-가산 연산 수행 장치{AN APPARATUS FOR PERFORMING MULTIPLY-ADD OPERATIONS ON PACKED DATA}
일반적인 컴퓨터 시스템에서, 프로세서들은 한가지 결과를 생성하는 명령들을 이용하여 다수의 비트(예컨대, 64)에 의해 표현된 값에 대해 연산을 행할 수 있도록 구현된다. 예컨대, 가산 명령의 실행은 제1의 64 비트값과 제2의 64 비트값을 함께 가산하고 그 결과를 제3의 64 비트값으로서 저장한다. 하지만, 멀티미디어 응용(예컨대, 컴퓨터 지원 협력(CSC--혼합된 미디어 데이터 처리와의 원격 회의의 통합)을 목표로 하는 응용), 2D/3D 그래픽스, 이미지 처리, 비디오 압축/압축해제, 인식 알고리즘 및 오디오 처리)은 적은 수의 비트로 표현될 수 있는 많은 양의 데이터의 처리를 필요로 한다. 예컨대, 그래픽 데이터는 일반적으로 8 비트 또는 16 비트를 필요로 하며, 사운드 데이터는 일반적으로 8 비트 또는 16 비트를 필요로 한다. 이들 각각의 멀티미디어 응용은 하나 이상의 알고리즘을 필요로 하며, 이때 이들 각각의 알고리즘은 다수의 연산을 필요로 한다. 예컨대, 알고리즘은 가산, 비교 및 시프트 연산을 필요로 할 수도 있다.
(동일한 특성을 가지고 있는 기타 다른 응용 외에) 멀티미디어 응용의 효율성을 개선하기 위해서, 프로세서들은 압축 데이터 포맷을 제공할 수도 있다. 압축 데이터 포맷은 단일 값을 표현하는데에 일반적으로 사용되는 비트들이 다수의 고정된 크기의 데이터 요소로 분할되어 있고 이들 각각이 별개의 값을 나타내는 포맷이다. 예컨대, 64 비트 레지스터는 2개의 32 비트 요소로 분할될 수도 있으며, 이때 이들 각각은 별개의 32비트값을 나타낸다. 또한, 이들 프로세서는 단일 명령에 응답하여 별개로 처리하기 위한 명령을 제공하며, 이때 이들 압축 데이터형의 각각의 요소는 병렬로 되어 있다. 예컨대, 압축 가산 명령은 제1압축 데이터와 제2압축 데이터로부터의 대응하는 데이터 요소들을 함께 가산한다. 따라서, 멀티미디어 알고리즘이 다수의 데이터 요소에 대해서 수행되어야 하는 5 가지의 연산을 포함하고 있는 루프를 필요로 하면, 상기 데이터를 압축하고 그리고 압축된 데이터 명령을 사용하여 이들 연산을 병렬로 수행하는 것이 바람직하다. 이 방법으로, 이들 프로세서는 멀티미디어 응용을 보다 효율적으로 처리할 수 있다.
하지만, 연산 루프가 압축 데이터에 대해 상기 프로세서에 의해 수행될 수없는 연산을 포함하고 있으면(즉, 상기 프로세서가 적절한 명령을 가지고 있지 않으면), 상기 데이터는 상기 연산을 수행하기 위해서 압축 해제되어야 한다. 예컨대, 상기 멀티미디어 알고리즘이 가산 연산을 필요로 하고 이전에 설명한 압축 가산 명령이 이용가능하지 않으면, 프로그래머는 상기 제1압축 데이터와 상기 제2압축 데이터를 압축 해제해야 하고(즉, 상기 제1압축 데이터와 제2압축 데이터를 포함하고 있는 요소들을 분리해야 하고), 분리된 요소들을 함께 개별적으로 가산해야 하며, 그리고 나서 그 결과를 다른 압축 처리를 위해 압축 결과내에 압축해야 한다. 이와 같은 압축 및 압축 해제를 수행하는데 필요한 처리 시간은 압축 데이터 포맷이 제공해 주는 성능의 이점을 소멸시키게 된다. 그러므로, 일반적인 멀티미디어 알고리즘을 위해 필요한 모든 연산을 제공하는 한 세트의 압축 데이터 명령을 컴퓨터 시스템내에 포함시키는 것이 바람직하다. 하지만, 오늘날의 범용 마이크로프로세서상에서의 제한된 다이(die) 영역으로 인해, 추가될 수 있는 명령 수가 제한된다. 그러므로, 융통성과 최고의 성능 이점을 제공하는 명령(즉, 광범위한 멀티미디어 알고리즘에 사용될 수 있는 명령)을 발명하는 것이 바람직하다.
멀티미디어 알고리즘에 사용하기 위한 연산들을 제공하기 위한 한가지 기술은 별개의 디지탈 신호 프로세서(DSP)를 기존의 범용 프로세서(예컨대, 미국, 캘리포니아, 산타클라라 소재의 인텔 코포레이션에 의해 제조된 IntelR486)에 결합하는 것이다. 상기 범용 프로세서는 압축 데이터를 이용하여 수행될 수 있는 작업(예컨대, 비디오 처리)을 상기 DSP에 할당한다.
이러한 한가지 DSP는 두 값을 함께 승산한 결과를 누산값에 가산하는 승산 누산 명령을 포함하고 있다. (가와카미(Kawakami), 유이치(Yuichi) 등의 "음성 대역 응용을 위한 단일 칩 디지탈 신호 프로세서", IEEE 국제 고체 상태 회로 회의, 1980, 페이지 40-41을 참조하자). 이 DSP의 승산 누산 연산의 일예가 아래의 표 1에 나타내어져 있으며, 이때 상기 명령은 소스 1과 소스 2로 각각 액세스되는 데이터 값(A1,B1)에 대해 수행된다.
이 명령의 한가지 제한은 제한된 효율성이다. 즉, 이 명령은 두 값과 누산 값에 대해 연산을 수행한다. 예컨대, 두 세트의 두 값을 승산하고 누산하는 것은 직렬로 수행되는 2가지의 명령, 즉 1)중간 누산값을 생성하기 위해 제1세트로부터의 제1값, 제2세트로부터의 제1값, 및 제로의 누산값을 승산 및 누산하는 명령; 2)결과를 생성하기 위해 제1세트로부터의 제2값, 제2세트로부터의 제2값, 및 중간 누산값을 승산 및 누산하는 명령을 필요로 한다.
다른 DSP는 두 세트의 2개의 값과 하나의 누산값에 대한 연산을 수행하는 승산 누산 명령을 포함하고 있다("병렬 승산기를 가진 디지탈 신호 프로세서", 특허 번호 4,771,379, 이하에서는 "앤도(Ando) 등" 참조 문헌이라고 함). 이 DSP의 승산 누산 명령의 일예가 아래의 표 2에 나타내어져 있으며, 이때 상기 명령은 소스1-4로서 각각 액세스되는 데이터 값(A1,A2,B1,B2)에 대해 수행된다.
이 기술을 이용하여, 하나의 명령으로 두 세트의 2개의 값이 승산된 후에, 누산값에 가산된다.
이 승산 누산 명령은 상기 누산값에 항상 가산되기 때문에 융통성이 제한된다. 결과적으로, 승산 누산 이외의 연산에서는 상기 명령을 사용하기가 어렵다. 예컨대, 복소수들의 승산이 멀티미디어 응용에서 일반적으로 사용된다. 두 복소수(예컨대, r1i1과 r2i2)의 승산은 다음의 식에 따라 수행된다:
실수 성분 = r1·r2 - i1·i2
허수 성분 = r1·i2 + r2·i1
이 DSP는 하나의 승산 누산 명령을 사용하여 두 복소수를 함께 승산하는 기능을 수행할 수 없다.
이 승산 누산 명령의 한계는, 그러한 계산의 결과가 누산보다는 후속되는 승산 연산에 필요할 때, 보다 분명히 알 수 있다. 예컨대, 상기 실수 성분이 상기 DSP를 사용하여 산출되면, 상기 누산값은 상기 결과를 정확하게 산출하기 위해서 제로로 초기화될 필요가 있다. 이때, 상기 누산값은 상기 허수 성분을 산출하기위해서 다시 제로로 초기화될 필요가 있다. 결과적으로 얻어진 복소수와 제3복소수(예컨대, r3,i3)에 대한 다른 복소수 승산을 수행하기 위해서는, 결과적으로 얻어진 상기 복소수가 다시 스케일링되어 수용될 수 있는 메모리 포맷으로 저장되어야 하며, 상기 누산값은 다시 제로로 초기화되어야 한다. 이때, 상기 복소수 승산은 위에서 설명한 바와 같이 수행될 수 있다. 이들 각각의 연산에서, 상기 누산값에 전념하는 ALU는 불필요한 하드웨어이며, 그리고 이 누산값을 다시 초기화하는데에는 잉여의 명령이 필요하다. 이들 잉여의 명령도 달리 필요한 것이 아니다.
이 기술의 또 다른 제한은 데이터가 고가의 다중 포트 메모리를 통해 액세스되어야 한다는 것이다. 이는 상기 승산기가 데이터 메모리에 집적 접속되어 있기 때문이다. 그러므로, 이용될 수 있는 병렬 접속의 양은 상호 접속의 비용, 및 이 상호 접속이 상기 명령으로부터 분리되지 않는다는 사실에 의해 적은 수로 제한된다.
상기 앤도 등의 참조 문헌에는 또한 이러한 고가의 상호 접속에 대한 대안은 승산될 각각의 후속되는 쌍의 데이터에 지연을 도입하는 것임이 설명되어 있다. 이 해결책은 이전의 표 1에 나타낸 해결책에 의해 제공된 성능 이점을 소멸시킨다.
또한, 다중 포트 메모리의 개념 또는 메모리에 대한 파이프라인 액세스의 개념은 다수의 주소의 사용을 수반한다. 이와 같이 데이터마다 하나의 주소를 확실하게 사용하는 것은 압축 데이터의 중요한 개념이 이 기술에 이용되지 않는다는 것을 명확하게 보여 준다.
발명의 요약
프로세서는 제1 및 제2압축 데이터를 각각 가지고 있는 제1 및 제2기억 영역을 가지고 있다. 각각의 압축 데이터는 제1, 제2, 제3 및 제4데이터 요소를 포함하고 있다.
승산 가산 회로가 상기 제1 및 제2기억 영역에 접속되어 있다. 이 승산 가산 회로는 제1, 제2, 제3 및 제4승산기를 포함하고 있고, 이때 각각의 승산기는 대응하는 세트의 상기 데이터 요소를 수신한다. 상기 승산 가산 회로는 또한 상기 제1 및 제2승산기에 접속되어 있는 제1가산기, 및 상기 제3 및 제4승산기에 접속되어 있는 제2가산기를 포함하고 있다. 제3기억 영역이 상기 가산기들에 접속되어 있다. 상기 제3기억 영역은 상기 제1 및 제2가산기의 출력을 제3압축 데이터의 제1 및 제2데이터 요소로서 각각 세이브하기 위한 제1 및 제2필드를 포함하고 있다.
이 특허 출원은 발명의 명칭이 "압축 데이터(packed data)에 대한 승산 가산 연산 수행 방법 및 동작"이고 알렉산더 디. 펠레그(Alexander D. Peleg), 밀린드 미틀(Millind Mittal), 래리 엠. 메네마이어(Larry M. Mennemeier), 베니 에이튼(Benny Eitan), 앤드류 에프. 글루(Andrew F. Glew), 캐롤 듀롱(Carole Dulong), 에이치 코와시(Eiichi Kowashi), 및 울프 위트(Wolf Witt)를 발명자로 하여 1995년 8월 31일에 출원된 특허 출원 번호 08/522,067의 일부 계속 출원이다.
특히, 본 발명은 컴퓨터 시스템 분야에 관한 것이다. 보다 구체적으로, 본 발명은 압축 데이터 연산 분야에 관한 것이다.
도 1은 본 발명의 일실시예를 가지고 있는 컴퓨터 시스템을 나타낸 도면.
도 2는 본 발명의 일실시예에 따른 프로세서의 레지스터 파일을 나타낸 도면.
도 3은 본 발명의 일실시예에 따라 데이터를 처리하기 위해 프로세서에 의해 사용된 전반적인 스텝을 나타낸 흐름도.
도 4는 본 발명의 일실시예에 따른 압축 데이터형을 나타낸 도면.
도 5a는 본 발명의 일실시예에 따른 레지스터내 압축 데이터 표현을 나타낸 도면.
도 5b는 본 발명의 일실시예에 따른 레지스터내 압축 데이터 표현을 나타낸 도면.
도 5c는 본 발명의 일실시예에 따른 레지스터내 압축 데이터 표현을 나타낸 도면.
도 6a는 본 발명의 일실시예에 따른 압축 데이터의 사용을 지시하기 위한 제어 신호 포맷을 나타낸 도면.
도 6b는 본 발명의 일실시예에 따른 압축 데이터의 사용을 지시하기 위한 제2제어 신호 포맷을 나타낸 도면.
도 7은 본 발명의 일실시예에 따라 압축 데이터에 대해 승산 가산 연산을 수행하는 단계를 나타낸 흐름도.
도 8은 본 발명의 일실시예에 따라 압축 데이터에 대해 승산 가산 연산을 수행하는 회로를 나타낸 도면.
도 9a-도 9e는 본 발명의 일실시예를 위해 부분적 합산 및 저감을 수행하는 월리스 트리를 나타낸 도면.
도 10a-도 10af는 본 발명의 일실시예를 위해 도 9a-도 9e의 월리스 트리를 구현하는 회로의 일실시예를 나타낸 도면.
도 11은 본 발명의 일실시예에 따라 압축 데이터에 대해 승산 가산 연산을 수행하기 위한 회로를 나타낸 도면.
이하의 설명에서, 본 발명의 철저한 이해를 제공하기 위해 다수의 특정한 사항이 설명된다. 하지만, 이들 특정 사항 없이도 본 발명이 실시될 수 있음을 알 수 있다. 기타 다른 예에서는, 잘 알려진 회로, 구성 및 기술은 본 발명이 보호해지지 않도록 하기 위해 상세히 나타내지 않는다.
정 의
본 발명의 실시예의 설명을 이해하기 위한 기초를 제공하기 위해서 이하의 정의가 제공된다.
비트 X 내지 비트 Y:
2진수의 보조 필드를 정의한다. 예컨대, 바이트 001110102(2진수로 나타냄)의 비트 6 내지 비트 0은 보조 필드 1110102를 나타낸다. 2진수의 뒤에 있는 '2'는 2진수를 나타낸다. 그러므로, 10002는 810과 동일하고 F16은 1510과 동일하다.
RX: 레지스터임. 레지스터는 데이터를 저장 및 제공할 수 있는 어떤 장치이다. 레지스터의 다른 기능에 대해서는 후술된다. 레지스터는 프로세서와 동일한 다이상에 또는 프로세서와 동일한 패키지내에 반드시 포함되지는 않다.
SRC1, SRC2, 및 DEST:
기억 영역(예컨대, 메모리 주소, 레지스터 등)을 나타낸다.
소스 1-i 및 결과 1-i:
데이터를 나타낸다.
개 요
본 출원에는 압축 데이터에 대해 승산 가산 연산을 수행하는 프로세서의 장치에 대해 설명되어 있다. 일실시예에서, 2개의 승산 가산 연산이 아래의 표 3a 및 표 3b에 나타낸 단일의 승산 가산 명령을 사용하여 수행된다. 표 3a에는 공개된 승산 가산 연산의 간단화된 표현이 나타내어져 있고, 표 3b에는 공개된 승산 가산 연산의 비트 레벨 예가 나타내어져 있다.
이와 같이, 승산 가산 연산의 상기 설명된 실시예는 소스 1 및 소스 2의 대응하는 16 비트 데이터 요소를 함께 승산하여 4개의 32 비트 중간 결과를 발생한다. 이들 32 비트 중간 결과는 쌍으로 합산되어, 압축 결과의 각각의 요소에 압축되는 2개의 32 비트 결과를 생성한다. 추가로 후술되는 바와 같이, 다른 실시예에서는 상기 데이터 요소의 비트 수, 중간 결과, 및 결과를 변화시킨다. 또한, 다른 실시예에서는 사용된 데이터 요소의 개수, 발생된 중간 결과의 개수, 및 결과적으로 얻어진 압축 데이터의 데이터 요소의 개수를 변화시킨다.
컴퓨터 시스템
도 1에는 본 발명의 일실시예에 따른 예시적인 컴퓨터 시스템(100)이 예시되어 있다. 컴퓨터 시스템(100)은 버스(101), 정보 통신을 위한 기타 다른 통신 하드웨어 및 소프트웨어, 및 버스(101)에 접속되어 정보를 처리하는 프로세서(109)를 포함하고 있다. 프로세서(109)는 CISC 또는 RISC형 구조를 포함해서 임의의 형태의 구조를 가지고 있는 중앙 처리 장치를 나타낸다. 컴퓨터 시스템(100)은 프로세서(109)에 의해 실행될 정보와 명령을 저장하기 위해 버스(101)에 접속되어 있는 랜덤 액세스 메모리(RAM) 또는 기타 다른 동적 기억 장치(메인 메모리(104)라고 함)를 더 포함하고 있다. 메인 메모리(104)는 또한 프로세서(109)에 의해 명령이 실행되는 동안에 임시 변수 또는 기타 다른 중간 정보를 저장하기 위해 사용될 수 있다. 컴퓨터 시스템(100)은 또한 프로세서(109)용의 정적 정보 및 명령을 저장하기 위해 버스(101)에 접속되어 있는 판독 전용 메모리(ROM)(106) 및/또는 기타 다른 정적 기억 장치를 포함하고 있다. 데이터 기억 장치(107)는 정보 및 명령을 저장하기 위해 버스(101)에 접속되어 있다.
도 1에는 또한 실행 유닛(130), 승산 가산 유닛(145), 레지스터 파일(150), 캐시(160), 디코더(165), 및 내부 버스(170)를 포함하고 있는 프로세서(109)가 예시되어 있다. 물론, 프로세서(109)는 본 발명을 이해하는데 필요가 없는 추가적인 회로를 포함하고 있다.
실행 유닛(130)은 프로세서(109)에 의해 수신된 명령을 실행하는데에 사용된다. 범용 프로세서에서 일반적으로 구현되는 명령을 인식하는 외에, 실행 유닛(130)은 압축 데이터 포맷에 대한 연산을 수행하기 위한 압축 명령 세트(140)의 명령(142)을 인식한다. 압축 명령 세트(140)는 승산 가산 연산을 지원하기 위한 명령을 포함하고 있다. 또한, 압축 명령 세트(140)는 또한 압축 연산, 압축 해제 연산, 압축 가산 연산, 압축 감산 연산, 압축 승산 연산, 압축 시프트 연산, 압축 비교 연산, 개체 계수 연산, 한 세트의 압축 논리 연산(압축 AND, 압축 ANDNOT, 압축 OR, 압축 XOR을 포함함)을 포함하고 있을 수도 있으며, 이들 연산은 1995년 8월 31일자로 특허 출원된 미국 특허 출원 번호 제4,771,379호 "압축 데이터에 대해 연산을 행하는 한 세트의 명령"에 설명되어 있다. 실행 유닛(130)은 승산 가산 연산을 수행하기 위한 승산 가산 유닛(145)을 더 포함하고 있다.
실행 유닛(130)은 내부 버스(170)에 의해 레지스터 파일(150)에 접속되어 있다. 레지스터 파일(150)은 데이터를 포함해서 정보를 저장하기 위한 프로세서(109)상의 기억 영역을 나타낸다. 실행 유닛(130)은 또한 캐시(160)와 디코더(165)에 접속되어 있다. 캐시(160)는 예컨대 메인 메모리(140)로부터 데이터 및/또는 제어 신호를 캐시하는데에 사용된다. 디코더(165)는 프로세서(109)에 의해 수신된 명령을 제어 신호 및/또는 마이크로코드 엔트리 포인트로 디코딩하는데에 사용된다. 실행 유닛(130)은 적절한 연산을 수행한다. 예컨대, 가산 명령이 수신되면, 디코더(165)에 의해 실행 유닛(130)은 필요한 가산을 수행할 수 있다. 디코더(165)는 임의의 개수의 상이한 메카니즘(예컨대, 룩업 테이블, 하드웨어 구현, PLA 등)을 사용하여 구현될 수도 있다. 이와 같이, 상기 디코더와 실행 유닛에 의한 각종 명령의 실행은 일련의 if/then문으로 표현되지만, 명령의 실행은 이들 if/then 문의 일련의 처리를 필요로 하지 않음을 알 수 있다. 오히려, if/then 처리를 논리적으로 수행하기 위한 어떤 메카니즘이 본 발명의 범위에 속하는 것으로 간주된다.
도 1에는 또한 컴퓨터 시스템(100)에 접속될 수 있는 자기 디스크 또는 광 디스크와 같은 데이터 기억 장치(107), 및 대응하는 디스크 드라이브가 도시되어 있다. 컴퓨터 시스템(100)은 또한 컴퓨터 사용자에게 정보를 디스플레이해 주기 위해 버스(101)를 통해 디스플레이 장치(121)에 접속될 수 있다. 디스플레이 장치(121)는 프레임 버퍼, 특수형 그래픽 렌더링(rendering) 장치, 음극선관(CRT), 및/또는 평면 패널 디스플레이를 포함할 수 있다. 영숫자 키와 기타 다른 키를 포함하고 있는 영숫자 입력 장치(122)는 일반적으로 프로세서(109)측에 정보 및 명령 선택을 전송하기 위해 버스(101)에 접속되어 있다. 다른 종류의 사용자 입력 장치는 방향 정보 및 명령 선택을 프로세서(109)측으로 전송하기 위한, 그리고 디스플레이 장치(121)상에서의 커서 이동을 제어하기 위한 마우스, 트랙볼, 펜, 터치 스크린, 또는 커서 방향 키와 같은 커서 제어기(123)이다. 이 입력 장치는 일반적으로, 이 장치가 평면에서의 위치를 특정할 수 있도록 해 주는 두 축, 즉 제1축(예컨대, x)과 제2축(예컨대, y)에 2개의 자유각을 가지고 있다. 하지만, 본 발명은 단지 2개의 자유각을 가지고 있는 입력 장치에 한정되어서는 안된다.
버스(101)에 접속될 수 있는 기타 다른 장치는 페이퍼, 필름, 또는 유사한 종류의 매체와 같은 매체상에 명령, 데이터, 또는 기타 다른 정보를 프린팅하는데에 사용될 수 있는 하드 카피 장치(124)이다. 또한, 컴퓨터 시스템(100)은 사운드 기록을 위한 장치, 및/또는 정보를 기록하기 위해 마이크로폰에 접속된 오디오 디지타이저와 같은 재생기(125)에 접속될 수 있다. 또한, 디지타이징된 사운드를 재생하기 위해 디지탈/아날로그(D/A) 변환기에 접속되는 스피커를 포함하고 있을 수도 있다.
또한, 컴퓨터 시스템(100)은 컴퓨터망(예컨대, LAN)의 터미널일 수 있다. 이때, 컴퓨터 시스템(100)은 컴퓨터망의 컴퓨터 보조 시스템일 수 있다. 컴퓨터 시스템(100)은 비디오 디지타이징 장치(126)를 임의적으로 포함하고 있다. 비디오 디지타이징 장치(126)는 상기 컴퓨터망의 다른 장치측에 전송될 수 있는 비디오 이미지를 캡쳐하는데에 사용될 수 있다.
일실시예에서, 상기 프로세서(109)는 또한 미국, 캘리포니아, 산타 클라라 소재의 인텔 코포레이션에 의해 제조된 기존의 프로세서(예컨대, 펜티엄R프로세서)에 의해 사용된 x86 명령 세트와 호환성이 있는 명령 세트를 지원한다. 이와 같이, 일실시예에서, 프로세서(109)는 미국, 캘리포니아, 산타 클라라 소재의 인텔코포레이션에 의해 정의된, IA™-인텔 구조에서 지원되는 모든 연산을 지원한다(미국, 캘리포니아, 산타 클라라 소재의 인텔 코포레이션로부터 이용가능한마이크로프로세서, 인텔 데이터북 제1권 및 제2권 참조). 결과적으로, 프로세서(109)는 본 발명의 연산 이외에 기존의 x86 연산을 지원할 수 있다. x86 기초 명령 세트에 포함되어 있는 본 발명이 설명되지만, 다른 실시예는 기타 다른 명령 세트에 본 발명을 포함시킬 수 있다. 예컨대, 본 발명은 새로운 명령 세트를 이용하여 64 비트 프로세서에 포함될 수 있다.
도 2에는 본 발명의 일실시예에 따른 상기 프로세서의 레지스터 파일이 예시되어 있다. 상기 레지스터 파일(150)은 제어/상태 정보, 정수 데이터, 부동 소숫점 데이터, 및 압축 데이터를 포함해서, 정보를 저장하는데에 사용된다. 도 2에 도시된 실시예에서, 상기 레지스터 파일(150)은 정수 레지스터(201), 레지스터(209), 상태 레지스터(208), 및 명령 포인터 레지스터(211)를 포함하고 있다. 상태 레지스터(208)는 프로세서(109)의 상태를 지시해 준다. 명령 포인터 레지스터(211)는 실행될 다음의 명령의 주소를 저장한다. 정수 레지스터(201), 레지스터(209), 상태 레지스터(208) 및 명령 포인터 레지스터(211)는 모두 내부 버스(170)에 접속되어 있다. 어떤 추가적인 레지스터가 또한 내부 버스(170)에 접속된다.
일실시예에서, 상기 레지스터(209)는 압축 데이터 및 부동 소숫점 데이터용으로 사용된다. 이러한 일실시예에서, 상기 프로세서(109)는 제공된 때에 스택 참조된 부동 소숫점 레지스터 또는 스택 참조되지 않는 압축 데이터 레지스터인 레지스터(209)로 간주되어야 한다. 이 실시예에서, 스택 참조된 부동 소숫점 레지스터와 스택 참조되지 않는 압축 데이터 레지스터로서 레지스터(209)에 대한 동작간을 상기 프로세서(109)가 절환할 수 있도록 해 주는 메카니즘이 포함되어 있다. 이러한 다른 실시예에서, 상기 프로세서(109)는 스택 참조되지 않는 부동 소숫점 레지스터 및 압축 데이터 레지스터로서 레지스터(209)에 대해 동시에 동작할 수 있다. 다른 예로서, 다른 실시예에서 이들 동일한 레지스터가 정수 데이터를 저장하기 위해 사용될 수 있다.
물론, 다른 실시예가 보다 많은 또는 보다 적은 세트의 레지스터를 포함하도록 구현될 수도 있다. 예컨대, 다른 실시예는 부동 소숫점 데이터를 저장하기 위한 별개의 세트의 부동 소숫점 레지스터를 포함하고 있을 수도 있다. 다른 예로서, 다른 실시예는 각각 제어/상태 정보를 저장하기 위한 제1세트의 레지스터, 각각 정수, 부동 소숫점, 및 압축 데이터를 저장할 수 있는 제2세트의 레지스터를 포함하고 있을 수 있다. 명료성의 문제로서, 실시예의 레지스터는 특정 형태의 회로에 의미를 한정해서는 안된다. 오히려, 실시예의 레지스터는 데이터를 저장 및 제공하고 여기에서 설명하는 기능을 수행하는데에 필요할 수 있다.
각종 세트의 레지스터(예컨대, 정수 레지스터(201), 레지스터(209))는 상이한 개수의 레지스터 및/또는 상이한 크기의 레지스터를 포함하도록 구현될 수도 있다. 예컨대, 일실시예에서, 상기 정수 레지스터(201)는 32 비트를 저장할 수 있도록 구현되어 있지만, 상기 레지스터(209)는 80 비트를 저장하도록 구현되어 있다(80 비트 모두는 부동 소수점 데이터를 저장하는데에 사용되고 64 비트만이 압축 데이터용으로 사용됨). 또한, 레지스터(209)는 8개의 레지스터, 즉 R0212a 내지 R7212h를 포함하고 있다. R1212a, R2212b 및 R3212c는 레지스터(209)중의 개별적인 레지스터의 예이다. 레지스터(209)중의 하나의 레지스터의 32 비트는 정수 레지스터(201)중의 하나의 정수 레지스터내로 이동될 수 있다. 유사하게, 정수 레지스터내의 값은 레지스터(209)중의 하나의 레지스터의 32 비트내로 이동될 수 있다. 다른 실시예에서, 각각의 정수 레지스터(201)들은 64 비트를 포함하고 있고, 데이터중의 64 비트는 상기 정수 레지스터(201)와 상기 레지스터(209)사이에서 이동될 수도 있다.
도 3에는 본 발명의 일실시예에 따라 데이터를 처리하기 위해 상기 프로세서에 의해 사용되는 전반적인 스텝을 나타낸 흐름도이다. 즉, 도 3에는 압축 데이터에 대한 연산을 수행하거나, 압축 해제된 데이터에 대한 연산을 수행하거나, 일부 다른 연산을 수행하는 동안에 프로세서(109)가 따르는 스텝들이 예시되어 있다. 예컨대, 그러한 연산들은 캐시(160), 메인 메모리(104), 판독 전용 메모리(ROM)(106) 또는 데이터 기억 장치(107)의 데이터를 레지스터 파일(150)중의 하나의 레지스터에 로드하는 로드 동작을 포함하고 있다.
스텝 301에서, 상기 디코더(165)는 캐시(160) 또는 버스(101)로부터 제어 신호를 수신한다. 디코더(165)는 수행될 연산을 결정하기 위해 제어 신호를 디코딩한다.
스텝 302에서, 디코더(165)는 레지스터 파일(150), 또는 메모리내의 위치를액세스한다. 상기 레지스터 파일(150)내의 레지스터, 또는 상기 메모리내의 메모리 위치는 상기 제어 신호에 특정된 레지스터 주소에 따라 액세스된다. 예컨대, 압축 데이터에 대한 연산에 있어서, 상기 제어 신호는 SRC1, SRC2 및 DEST 레지스터 주소를 포함하고 있을 수 있다. SRC1은 제1소스 레지스터의 주소이다. SRC2는 제2소스 레지스터의 주소이다. 어떤 경우에, 상기 SRC2 주소는 모든 연산이 두 소스 주소를 필요로 하는 것은 아니기 때문에 선택적이다. 상기 SRC2 주소가 연산에 필요가 없으면, SRC1 주소만이 사용된다. DEST는 결과 데이터가 저장되는 목적 레지스터의 주소이다. 일실시예에서, SRC1 또는 SRC2는 또한 DEST로서 사용된다. SRC1, SRC2 및 DEST는 도 6a 및 도 6b와 관련하여 보다 충분히 설명되어 있다. 대응하는 레지스터에 저장되어 있는 데이터는 각각 소스 1, 소스 2 및 결과라고 한다. 이들 각각의 데이터는 64 비트의 길이를 가지고 있다.
본 발명의 다른 실시예에서, SRC1, SRC2 및 DEST중 어느 하나 또는 모두는 프로세서(109)의 주소 지정 가능 메모리 공간에 메모리 위치를 정의할 수 있다. 예컨대, SRC1은 메인 메모리(104)의 메모리 위치를 나타낼 수도 있고, SRC2는 정수 레지스터(201)중의 제1래지스터를 나타낼 수 있으며, DEST는 레지스터(209)중의 제2레지스터를 나타낼 수 있다. 여기에서 설명의 간단화를 위해, 본 발명은 상기 레지스터 파일(150)을 액세스하는 것과 관련하여 설명된다. 하지만, 이들 액세스는 메모리 대신에 행해질 수 있다.
스텝 303에서, 실행 유닛(130)은 액세스된 데이터에 대한 연산을 수행할 수 있도록 인에이블된다. 스텝 304에서는 상기 결과가 상기 제어 신호의 요건에 따라레지스터 파일(150)내에 다시 저장된다.
데이터 및 기억 포맷
도 4에는 본 발명의 일실시예에 따른 압축 데이터형이 예시되어 있다. 3개의 압축 데이터 포맷, 즉 압축 바이트(401), 압축 워드(402), 및 압축 2배 워드(403)가 예시되어 있다. 본 발명의 일실시예에서 압축 바이트는 8개의 데이터 요소를 포함하고 있는 64 비트 길이이다. 각각의 데이터 요소는 1 바이트 길이이다. 일반적으로, 데이터 요소는 동일한 길이의 기타 다른 데이터 요소를 가지고 있는 단일의 레지스터(또는 메모리 위치)에 저장되어 있는 데이터의 개별적인 부분이다. 본 발명의 일실시예에서, 레지스터에 저장된 데이터 요소의 개수는 데이터 요소의 비트의 길이에 의해 분리된 64 비트이다.
압축 워드(402)는 64 비트 길이이고 그리고 4개의 워드(402) 데이터 요소를 포함하고 있다. 각각의 워드(402) 데이터 요소는 16 정보 비트를 포함하고 있다.
압축 이중 워드(403)는 64 비트 길이이고 그리고 2개의 이중 워드(403) 데이터 요소를 포함하고 있다. 각각의 이중 워드(403) 데이터 요소는 32 정보 비트를 포함하고 있다.
도 5a 내지 도 5c에는 본 발명의 일실시예에 따른 레지스터내 압축 데이터 기억 표현이 예시되어 있다. 부호 없는 압축 바이트 레지스터내 표현(510)은 레지스터(R0212a 내지 R7212h)중 하나의 레지스터내에의 부호 없는 압축 바이트(401)의 기억을 나타낸다. 각각의 바이트 데이터 요소에 관한 정보는 바이트 0을 위해 비트 7 내지 비트 0에, 바이트 1을 위해 비트 15 내지 비트 8에, 바이트 2를 위해 비트 23 내지 비트 16에, 바이트 3을 위해 비트 31 내지 비트 24에, 바이트 4를 위해 비트 39 내지 비트 32에, 바이트 5를 위해 비트 47 내지 비트 40에, 바이트 6을 위해 비트 55 내지 비트 48에 그리고 바이트 7을 위해 비트 63 내지 비트 56에 저장된다. 이와 같이, 이용 가능한 모든 비트들이 상기 레지스터에 사용된다. 이 기억 배열은 상기 프로세서의 기억 효율을 증가시킨다. 마찬가지로, 8개의 데이터 요소가 액세스되는 경우에, 이제 하나의 연산이 8개의 데이터 요소에 대해 동시에 수행될 수 있다. 부호 없는 압축 바이트 레지스터내 표현(511)은 부호 있는 압축 바이트(401)의 기억을 나타낸다. 모든 바이트 데이터 요소의 제8비트는 부호 지시기임에 주의하자.
부호 없는 압축 워드 레지스터내 표현(512)은 워드 3 내지 워드 0이 레지스터(209)중 하나의 레지스터에 어떻게 저장되는지를 나타낸다. 비트 15 내지 비트 0은 워드 0에 관한 데이터 요소 정보를 포함하고 있고, 비트 31 내지 비트 16은 데이터 요소 워드 1에 관한 정보를 포함하고 있으며, 비트 47 내지 비트 32는 데이터 요소 워드 2에 관한 정보를 포함하고 있고, 비트 63 내지 비트 48은 데이터 요소 워드 3에 관한 정보를 포함하고 있다. 부호 있는 압축 워드 래지스터내 표현(513)은 부호 없는 압축 워드 레지스터내 표현(512)과 유사하다. 각각의 워드 데이터 요소의 16 비트는 부호 지시기임에 주의하자.
부호 없는 압축 이중 워드 레지스터내 표현(514)은 레지스터(209)가 어떻게 2개의 이중워드 데이터 요소를 저장하는지를 보여 준다. 이중 워드 0은 상기 레지스터의 비트 31 내지 비트 0에 저장된다. 이중 워드 1은 상기 레지스터의 비트 63 내지 비트 32에 저장된다. 부호 있는 압축 이중 워드 래지스터내 표현(515)은 부호 없는 압축 이중 워드 레지스터내 표현(514)과 유사하다. 필요한 부호 비트는 이중 워드 데이터 요소의 32 비트임에 주의하자.
이전에 언급한 바와 같이, 레지스터(209)는 압축 데이터 및 부동 소숫점 데이터를 위해 사용될 수도 있다. 본 발명의 이 실시예에서, 개별적인 프로그래밍 프로세서(109)는 주소 지정된 레지스터, 예컨대 R0212a가 압축 데이터 또는 부동 소숫점 데이터를 저장하고 있는지를 추적하는데 필요할 수도 있다. 다른 실시예에서, 프로세서(109)는 레지스터(209)의 개별적인 레지스터에 저장된 데이터형을 추적할 수 있다. 이때, 이 다른 실시예는 예컨대 압축 가산 연산이 부동 소숫점 데이터에 대해 시도되었으면 오류를 발생할 수 있다.
제어 신호 포맷
이하에서는 압축 데이터를 처리하기 위해 프로세서(109)에 의해 사용되는 제어 신호 포맷의 일실시예에 대해 설명한다. 본 발명의 일실시예에서, 제어 신호는 32 비트로서 표현된다. 디코더(165)는 버스(101)로부터 제어 신호를 수신할 수 있다. 다른 실시예에서, 디코더(165)는 캐시(160)로부터 그러한 제어 신호를 수신할 수도 있다.
도 6a에는 본 발명의 일실시예에 따른 압축 데이터의 사용을 지시하기 위한 제어 신호 포맷이 예시되어 있다. 연산 필드(OP)(601), 즉 비트 31 내지 비트 26은 프로세서(109)에 의해 수행될 상기 연산, 예컨대 압축 가산 등에 관한 정보를 제공한다. SRC1(602), 즉 비트 25 내지 20은 레지스터(209)내의 하나의 레지스터의 소스 레지스터 주소를 제공한다. 이 소스 레지스터는 제어 신호의 실행에 사용될 제1압축 데이터, 즉 소스 1을 포함하고 있다. 유사하게, SRC(603), 즉 비트 19 내지 비트 14는 레지스터(209)내의 하나의 레지스터의 주소를 포함하고 있다. 이 제2소스 레지스터는 상기 연산의 실행 동안에 사용될 상기 압축 데이터, 즉 소스 2를 포함하고 있다. DEST(605), 즉 비트 5 내지 비트 0은 레지스터(209)중의 하나의 레지스터의 주소를 포함하고 있다. 이 목적 레지스터는 압축 데이터 연산의 결과 압축 데이터, 즉 Result를 저장하게 된다.
제어 비트 SZ(610), 즉 비트 12 및 비트 13은 제1 및 제2압축 데이터 소스 레지스터내의 데이터 요소의 길이를 지시해 준다. SZ(610)가 012이면, 상기 압축 데이터는 압축 바이트 401로서 포매팅된다. SZ(610)가 102이면, 상기 압축 데이터는 압축 워드(402)로서 포매팅된다. 002또는 112인 SZ(610)는 예약되지만, 다른 실시예에서 이들 값중 하나의 값이 압축 이중 워드(403)를 지시하는데에 사용될 수 있다.
제어 비트(T)(611), 즉 비트 11은 상기 연산이 포화 모드로 실행되어야 하는지를 지시해 준다. T(611)가 1이면, 포화 연산이 수행된다. T(611)가 0이면, 비포화 연산이 수행된다. 포화 연산에 대해서는 후술된다.
제어 비트(S)(612), 즉 비트 10은 부호 있는 연산의 이용을 지시해 준다.S(612)가 1이면 부호 있는 연산이 수행된다. S(612)가 0이면 부호 없는 연산이 수행된다.
도 6b에는 본 발명의 일실시예에 따라 압축 데이터의 사용을 지시해 주는 제2제어 부호 포맷이 예시되어 있다. 이 포맷은 인텔 코포레이션, 리터러쳐 세일즈(미국, 일리노이 60056-7641, 마운트 프로스펙트, 피.오.박스 7641)로부터 이용 가능한 "펜티엄 프로세서 패밀리 사용자 매뉴얼"에 설명된 일반적인 정수 옵코드 포맷과 대응된다. OP(601), SZ(610), T(611) 및 S(612)는 모두 하나의 큰 필드로 조합됨에 주의하자. 어떤 제어 신호에 있어서, 비트 3 내지 비트 5는 SRC1(602)이다. SRC1(602) 주소가 존재하는 일실시예에서, 비트 3 내지 비트 5는 또한 DEST(605)와 대응된다. SRC2(603) 주소가 존재하는 일실시예에서, 비트 0 내지 비트 2는 또한 DEST(605)과 대응된다. 기타 다른 제어 신호의 경우에는, 압축 시프트 중간 연산과 마찬가지로, 비트 3 내지 비트 5는 옵코드 필드의 확장을 나타낸다. 일실시예에서, 이 확장에 의해 프로그래머는 시프트 카운트값과 같은 제어 신호를 가지고 중간 값을 포함시킬 수 있다. 일실시예에서, 상기 중간값은 제어 신호를 따른다. 이에 대해서는 부록 F의 페이지 F-1 내지 F-3에서 "펜티엄 프로세서 패밀리 사용자 매뉴얼"에 보다 상세히 설명되어 있다. 비트 0 내지 비트 2는 SRC2(603)를 나타낸다. 이 일반적인 포맷은 레지스터-레지스터, 메모리-레지스터, 레지스터-메모리, 레지스터-레지스터, 레지스터-중간, 레지스터-메모리 주소 지정을 가능하게 한다. 또한, 일실시예에서, 이 일반적인 포맷은 정수 레지스터-레지스터 주소 지정 및 레지스터-정수 레지스터 주소 지정을 지원할 수 있다.
포화/비포화에 관한 설명
이전에 언급한 바와 같이, T(611)는 연산들이 임의적으로 포화되는지를 지시해 준다. 포화가 인에이블된 동작의 결과가 데이터의 범위를 오버플로우 또는 언더플로우한 경우에는 상기 결과가 클램핑된다. 클램핑 수단은 상기 결과를 최대값 또는 최소값으로 설정한다. 상기 범위의 최대값 또는 최소값을 초과하는 경우, 언더플로우의 경우에 상기 포화는 상기 결과를 상기 범위내의 최저값으로 고정시키고, 오버플로우의 경우에는 최고값으로 고정시킨다. 각각의 데이터 포맷의 허용 가능한 범위가 표 4에 나타내어져 있다.
데이타 포맷 최소값 최대값
부호없는 바이트 0 255
부호있는 바이트 -128 127
부호없는 워드 0 65535
부호있는 워드 -32768 32767
부호없는 이중워드 0 264-1
부호있는 이중워드 -263 263-1
이상에서 언급한 바와 같이, T(611)는 어느 포화 동작이 수행중인지를 지시해 준다. 그러므로, 부호 없는 바이트 데이터 포맷을 이용하여, 연산 결과 = 258이고 포화가 인에이블되면, 상기 결과는 연산 목적 레지스터에 저장되기 전에 255로 클램핑된다. 이와 유사하게, 연산 결과 = 32999이고 프로세서(109)가 포화가 인에이블된 부호 없는 워드 데이터 포맷을 이용하면, 상기 결과는 상기 연산 목적 레지스터에 저장되기 전에 -32768로 클램핑된다.
승산 가산 연산
본 발명의 일실시예에서, 상기 SRC1 레지스터는 압축 데이터(소스1)를 포함하고 있고, SRC2 레지스터는 압축 데이터(소스2)를 포함하고 있으며, 상기 DEST 레지스터는 소스 1과 소스 2에 대해 승산 가산 연산을 수행한 결과(Result)를 포함하게 된다. 상기 승산 가산 연산의 제1스텝에서, 소스 1은 한 세트의 각각의 중간 결과의 셋트를 발생하기 위해 소스 2의 각각의 데이터 요소와 독립적으로 승산되는 각각의 데이터 요소를 가지게 된다. 이들 중간 결과는 승산 가산 연산의 결과를 발생하기 위해 데이터 요소의 쌍마다 합산된다.
본 발명의 일실시예에서, 승산 가산 연산은 부호있는 압축 데이터에 대해 행해지며, 그리고 어떤 오버플로우를 회피하기 위해 상기 결과를 잘라낸다. 또한, 이 연산은 압축 워드 데이터에 대해 행해지고 그 결과는 압축 2배 워드이다. 하지만, 다른 실시예에서는 기타 다른 압축 데이터형에 대한 연산을 지원할 수 있다.
도 7은 본 발명의 일실시예에 따라 압축 데이터에 대해 승산 가산 연산을 수행하는 스텝들을 나타낸 흐름도이다.
스텝(701)에서, 디코더(165)는 프로세서(109)에 의해 수신된 제어 신호를 디코딩한다. 이와 같이, 디코더(165)는 승산 가산 연산을 위한 연산 코드를 디코딩한다.
스텝(702)에서, 내부 버스(170)를 통해, 디코더(165)는 SRC1(602)과 SRC2(603)의 주소가 주어지면 레지스터 파일(150)의 레지스터(209)를 액세스한다. 레지스터(209)는 SRC1(602) 레지스터(소스1)에 저장된 압축 데이터 및 SRC2(603) 레지스터(소스2)에 저장된 압축 데이터를 실행 유닛(130)에 제공한다. 즉, 레지스터(209)는 내부 버스(170)를 통해 상기 압축 데이터를 실행 유닛(130)에 전달한다.
스텝(703)에서, 디코더(165)는 상기 명령을 수행하기 위해 상기 실행 유닛(130)의 승산 가산 유닛(145)을 인에이블시킨다. 스텝(714)에서는 이하의 연산이 수행된다. 소스 1의 비트 15 내지 비트 0은 소스 2의 비트 15 내지 비트 0과 승산되며, 따라서 제1의 32 비트 중간 결과(중간 결과 1)가 발생된다. 소스 1의 비트 31 내지 16은 소스 2의 비트 31 내지 16과 승산되며, 따라서 제2의 32 비트 중간 결과(중간 결과 2)가 발생된다. 소스 1의 비트 47 내지 32는 소스 2의 비트 47 내지 비트 32와 승산되며, 따라서 제3의 32 비트 중간 결과(중간 결과 3)가 발생된다. 소스 1의 비트 63 내지 48은 소스 2의 비트 63 내지 비트 48과 승산되며, 따라서 제4의 32 비트 중간 결과(중간 결과 4)가 발생된다. 중간 결과 1은 중간 결과 2에 가산되며, 따라서 결과 비트 31 내지 0이 발생되며, 중간 결과 3은 중간 결과 4에 가산되며, 따라서 결과 비트 63 내지 32가 발생된다.
상이한 실시예들에서는 승산과 가산을 직렬로, 병렬로, 또는 직렬 연산과 병렬 연산의 어떤 조합으로 수행할 수도 있다.
스텝(720)에서, 상기 결과는 상기 DEST 레지스터에 저장된다.
압축 데이터 승산 가산 회로
일실시예에서, 승산 가산 연산은 압축 해제된 데이터에 대한 단일의 승산과 동일한 개수의 클럭 사이클로 다수의 데이터 요소를 실행할 수 있다. 동일한 개수의 클럭 사이클로 실행을 수행하기 위해, 병렬 연산이 이용된다. 즉, 레지스터들은 상기 데이터 요소에 대한 승산 가산 연산을 수행하도록 동시에 명령을 받는다.
요컨대, 도 8에는 본 발명의 일실시예에 따라 압축 데이터에 대해 승산 가산 연산을 수행하는 회로가 예시되어 있다. 연산 제어기(800)는 승산 가산 명령을 위한 제어 신호를 처리한다. 연산 제어기(800)는 압축 승산 가산기(801)를 제어하기 위해 인에이블 라인(880)상에서 신호들을 출력한다.
압축 승산 가산기(801)는 입력들, 즉 소스 1[63:0](831), 소스 2[63:0](833) 및 인에이블(880)을 가지고 있다. 압축 승산 가산기(801)는 4개의 16×16 승산기 회로, 즉 16×16 승산기 A(810), 16×16 승산기 B(811), 16×16 승산기 C(812) 및 16×16 승산기 D(813)를 포함하고 있다. 16×16 승산기 A(810)는 입력으로서 소스 1[15:0] 및 소스 2[15:0]를 가지고 있다. 16×16 승산기 B(811)는 입력으로서 소스 1[31:16] 및 소스 2[31:16]를 가지고 있다. 16×16 승산기 C(812)는 입력으로서 소스 1[47:32] 및 소스 2[47:32]를 가지고 있다. 16×16 승산기 D(813)는 입력으로서 소스 1[63:48] 및 소스 2[63:48]를 가지고 있다. 16×16 승산기 A(810)와 16×16 승산기 B(811)에 의해 발생된 32 비트 중간 결과는 가산기(1350)에 의해 수신되고, 16×16 승산기 C(812)와 16×16 승산기 D(813)에 의해 발생된 32 비트 중간 결과는 가산기(851)에 의해 수신된다.
상기 가산기(850)와 가산기(851)는 각각의 32 비트 입력을 가산한다. 가산기(850)의 출력(즉, Result의 결과 비트 31 내지 0)과 가산기(851)의 출력(즉, Result의 비트 63 내지 32)은 64 비트 결과에 조합되어 결과 레지스터(871)측에 전달된다.
일실시예에서, 가산기(851)와 가산기(850)의 각각은 적절한 전달 지연 소자를 가지고 있는 32 비트 가산기로 구성되어 있다. 하지만, 다른 실시예에서는 어떤 개수의 방법으로 가산기(851)와 가산기(850)를 구현할 수 있다.
표 1을 참조하여 설명한 종래의 DSP 프로세서를 사용하여 상기 승산 가산 명령과 같은 것을 수행하는 동작은 누산값을 제로화하는 하나의 명령과 4개의 승산 누산 명령을 필요로 한다. 표 2를 참조하여 설명된 종래의 DSP 프로세서를 사용하여 상기 승산 가산 명령을 수행하는 동작은 상기 누산값을 제로화하는 하나의 명령과 2개의 누산 명령을 필요로 한다.
본 발명의 승산 가산 유닛(145)의 일실시예에서, 본 발명에서 압축 승산 연산에 사용된 각각의 16 비트 승산기는 2 비트 부스(booth) 알고리즘을 이용하여 구현된다. 승산기에서 부스 알고리즘의 주된 목적은 합산될 부분적의 개수를 줄이는 것이다. 결과적으로 부분적의 개수가 적어지면 상기 승산기의 하드웨어와 면적 요건이 줄어든다. 아래의 표 5에는 16개의 부분적이 발생되는 일반적인 16 비트 승산 과정이 설명되어 있다. 각각의 부분적은 1비트씩 좌측으로 시프트되고 그리고 상기 승수의 각각의 비트가 "1"이냐 "0"이냐에 따라 모두 "0"인 항 또는 상기 피승수의 잉여의 비트를 포함하고 있다. 모두 16개의 부분적(partial product; pp)을 합산함으로써 32 비트 결과가 발생된다.
한편, 아래의 표 6에 나타낸 2 비트 부스 승산기들은 서로 다르게 동작한다. 이 경우에는 총 8개의 부분적이 존재하고 각각의 부분적은 17 비트 길이이다. 모든 부분적은 각각의 부분적의 내용을 규정하는 자기 자신의 부스 엔코더를 가지고 있다. 다른 실시예에서는 부분적을 선택하는데에 기타 다른 부스 엔코더 기술들이 사용될 수 있다.
일반적인 2 비트 부스 엔코더는 제로 연산, 플러스 1 연산, 플러스 2 연산, 마이너스 1 연산, 및 마이너스 2 연산용인 5개의 출력을 가지고 있다. 그 진리표는 아래의 표 6에 제공되어 있다.
표 6에 설명되어 있는 바와 같이, yk+1, yk 및 yk-1은 내림 차순으로 배열된 인접 승수 비트들이다. 아래의 표 7에는 부스 엔코더 출력에 따른 부분적의 형태가 설명되어 있다.
부분적 저감에 필요한 캐리 세이브 주소(CAS)의 개수를 줄이는데에는 부분적을 부호 확장하는 대신에 부호 발생법이 사용된다. 표 8에는 부호 발생법이 나타내어져 있다. 부분적의 부호 비트의 보수는 상기 부분적에 추가되어 있다. 이때, 2개의 1 비트가 상기 부호 비트의 보수에 추가되어 있다.
부호 확장법 부호 발생법
1 S1 S1 S1 부분적 1 1 S1 부분적 1
S2 S2 부분적 2 1 S2 부분적 2
부분적 3 1 S3 부분적 3
아래의 표 9에는 8개의 부분적을 발생하기 위해 2 비트 부스 엔코더 및 부호발생법을 이용하여 본 발명의 일실시예에 사용된 16 비트 승산 과정이 나타내어져 있다.
일실시예에서, 각각의 부스 엔코더는 3개의 인접 승산기 비트를 포함하고 있다(y0은 승수 비트의 최하위 비트이고 y15는 승수 비트의 최상위 비트임). 상기 부분적의 형태는 특정 부스 엔코더에 접속되어 있는 17개의 선택기와 하나의 부정 회로에 의해 정의된다. 상기 선택기의 데이터 비트는 2개의 인접 승수 비트, 이들의 보수 및 Vcc(제로 연산용)를 포함하고 있다. 이때, 상기 선택된 출력은 흔히 월리스 트리(Wallace Tree)라고 하는 부분적 저감 트리(partial product reduction tree)의 미로(maze)를 통과한다.
상기 부분적들이 일단 모두 선택되면 부분적의 합산이 시작된다. 상기 월리스 트리는 전가산기와 반가산기로 구성되어 있다. 도 9a-도 9e에는 승산 가산 유닛(145)의 4개의 16 비트 승산기 각각에 의해 구현된 바와 같이, 본 발명의 일실시예를 위해 부분적 합산과 저감을 수행하는 월리스 트리가 예시되어 있다. 예시된바와 같이, 8개의 부분적은 6개의 부분적으로, 다음에 4개의 부분적으로, 다음에 3개의 부분적으로, 마지막으로 2개의 부분적으로 감소된다.
특히, 도 9a-도 9e에 예시된 바와 같이, 각각의 행의 첨자인 숫자는 부분적의 비트들(ase15,as15,a14-a0)을 나타낸다. 각각의 행은 별개의 부분적을 나타낸다. Negh-nega는 각각의 부분적에 있어서 2의 보수의 +1 부분을 나타낸다. 결과적으로, 상기 승수의 특정 부스 엔코딩된 비트가 음수이면, 대응하는 부분적의 "neg" 비트는 1이며, 이에 대해서는 다음의 행에 설명되어 있다.
또한, 도 9a-도 9e에 추가로 예시된 바와 같이, S<위치><가산기 번호>는 캐리 세이브 가산기의 합 부분을 나타낸다. <가산기 번호>는 합이 가산기의 어느 행에 속하는지를 지시해 준다. 가산기들은 도 9a-도 9e의 위에서 아래로 번호가 매겨져 있다. <위치>는 이 가산기가 어느 비트 위치(0...31)에 대해 동작하는지를 나타낸다. 예컨대, S42는 비트 위치 4에 해당하는 캐리 세이브 가산기(2)의 합을 나타낸다.
C<위치><레벨>은 캐리 세이브 가산기의 캐리 부분을 나타낸다. <레벨>은 캐리를 위한 가산기의 각각의 행을 지시한다. <위치>는 이 가산기가 어느 비트 위치(0...31)에서 동작하는지를 지시해 준다. 캐리 세이브 가산기는 전가산기 또는 반가산기일 수 있다. 전가산기는 3개의 비트를 함께 가산한다. 반가산기는 2개의 비트를 가산한다.
도 9a-도 9e에는 또한 이전에 설명한 부호 발생법의 구현이 예시되어 있다.예시된 바와 같이, 상기 부호 발생법은 제1부분적 행의 위에 있는 행의 비트 위치 16상에 '1'을 생성한다. 마지막 부분적 행에서, 최상위 부스 엔코딩 수가 음수이면, 상기 부분적이 2의 보수로 되기 때문에 아래의 행에 1이 생성된다. 이러한 처리를 위해서는 일반적으로 8개가 아닌 10개의 행이 필요하게 된다. 승산이 많은 행을 필요로 할수록 캐리 전달 가산기가 가산할 수 있는 2개의 수로 상기 부분적을 줄이기 위해서는 보다 많은 하드웨어가 필요하다.
하지만, 2진 승산은 가산을 통해 수행된다. 2개수의 2진수가 가산되면, 2진수의 차수는 무의미하다. 그 결과는 어떤 2진수가 제1의 2진수인지에 관계없이 동일하다. 이 원리는 필요한 캐리 세이브의 개수를 줄이기 위해 월리스 트리 전체에 걸쳐서 사용된다. 특히, 일실시예에서, 도 9a의 제1행의 비트 위치 16은 negh를 또한 포함하고 있는 도 9의 마지막 행의 비트 위치 16측으로 아래로 이동한다. 결과적으로, 보다 적은 수의 행들이 사용되기 때문에 상기 감소를 행하는데에는 보다 적은 하드웨어가 필요하다.
도 9b에는 제1감소 레벨의 결과가 예시되어 있다. 박스(box)들은 어떤 비트가 캐리 세이브 가산기에 의해 연산되는지를 지시해 준다. 다수의 비트가 6행의 모든 것을 맞추기 위해 주위로 이동한다. 예컨대, 비트 dse15는 제1행으로 이동한다. cse15는 제5행으로 이동된다. 하지만, 비트는 단지 동일한 비트 위치에서 위로 또는 아래로 이동해야 한다. 도 9b에서부터 도 9c쪽으로 행의 개수는 4개로 감소된다. 도 9c에서부터 도 9e쪽으로, 행의 개수는 3개으로 감소된다. 마지막으로,캐리 세이브 가산기의 하나의 추가적인 행은 도 9e에 도시된 바와 같이 행의 개수를 2개로 감소시킨다.
도 10a-도 10af에는 도 9a-도 9e에 예시된 월리스 트리 도면을 구현한, 전가산기와 반가산기로 구성된 회로의 일실시예가 예시되어 있다. 도 10a-도 10af의 각각은 도 9c에 나타낸 두 개의 최종 부분적의 특정 비트 위치에 관한 각각의 비트를 발생시키는 승산기 로직을 예시한다. 따라서, 두 개의 최종 부분적이 캐리 전달 가산기(CAP)에 의해 합쳐진다.
도 11에는 상기 유닛(145)의 블록도의 일실시예가 예시되어 있다. 예시된 2개의 동일한 16 비트 승산기가 존재한다. 이들 승산기는 0-31 비트 또는 32-63 비트에 대해 승산 가산 연산을 수행할 수 있다. 추가적인 2개의 16 비트 승산기가 또한 상기 승산 가산 유닛(145)을 완성하기 위해, 예시된 상기 승산기와 매우 유사한 구조로 제공되어 있다. 예시된 바와 같이, 각각의 승산기는 1.5 클럭 사이클에서 2개의 부분적을 생성하기 위해 16 비트 승산을 행한다. 2번째 클럭의 하측 국면인 다음의 1/2 클럭 사이클에서, 승산기(1110,1120)에 의해 발생된 4개의 부분적이 4:2 CSA(1130)에 의해 다시 합산된다. 상기 제어 신호(1150)는 상기 승산기(1110)의 부분적 또는 상기 4:2 CSA(1130)(sumres 및 coutres)의 출력측에서 발생된 부분적을 선택한다. 상기 선택된 데이터는 승산기(120)의 부분적들과 함께 래치된다. 3번째 클럭의 상측 국면에서, CPA(1140)는 결과적으로 얻어진 부분적들을 가산함으로써 32 비트 결과를 발생한다.
32 비트 합의 최종적인 분할은 상기 fub의 외부에 있는 멀티플렉서-래치에의해 달성되며, 상기 선택된 데이터는 3번째 클럭 사이클의 하측 국면에서 다시 기록된다.
일실시예에서, 상기 승산 가산 유닛(145)은 3 대기 시간-1처리량 규칙으로 동작한다. 바꾸어 말하면, 상기 유닛(145)은 파이프 처리되지 않은 데이터 스트림이 상기 입력측에 도입될 때마다 자신의 작업을 완료하기 위해서는 3개의 클럭 사이클을 필요로 한다.
상기 데이터는 0L에서 유닛(145)의 입력측에서 이용 가능하지만, 상기 데이터는 1H가 시작될 때까지 유효하지 않을 수도 있다. 그러므로, 상기 승산은 1H의 시작 부분에서 시작되는 것으로 추정된다. 1H 동안에, 상기 피승수 입력측의 유효하고 안정된 데이터가 상기 지연 소자를 통과해서 각각 래치(1160,1170)에 의해 래치된다. 동시에, 상기 승산기 입력측의 데이터는 상기 입력 버퍼 및 상기 부스 엔코더(1165,1175)를 통해 전달되어 래치(1160,1170)에 의해 래치된다. 이때, 승수 경로와 피승수 경로상의 데이터는 서로 완전하게 동기화된다. 1L에서, 상기 데이터는 비트 선택기 어레이, 및 월리스 트리의 제1부분을 형성하고 있는 한 세트의 전가산기를 통과하고, 그리고 래치(1180,1182)의 셋업 시간 전에 유효하게 된다. 이때의 부분적의 개수는 8개에서 4개로 감소된다. 2H에서, 상기 데이터는 상기 월리스 트리의 나머지 부분을 구성하고 있는 다른 세트의 전가산기를 통과하고, 그리고 래치(1184,1186)에 의해 래치되기 전에 2H의 끝부분에서 유효하게 되고 안정된다.
이전에 설명한 바와 같이, 2L 동안에 상기 데이터는 최종적인 부분적 선택을위해 4:2 압축기(1130)(직렬 접속된 2개의 전가산기)와 2-1 mux(1135)를 통과한다. 상기 데이터는 래치(1190)에 의해 래치되기 전에 2L의 끝부분에서 유효하게 된다. 3H 동안에, 상기 래치(1190)의 출력측의 2개의 부분적은 최종적으로 하나의 합 벡터로 감소된다. 이 합 벡터는 멀티플렉서-래치 경계, 즉 유닛(145)의 바깥쪽의 래치(1195)에 의해 분할 및 래치된다. 3L에서, 상기 데이터는 재기록 동작에 이용될 수 있다.
이전에 설명한 바와 같이, 이전의 승산 누산 명령들은 자신들의 승산 결과를 누산값에 항상 가산한다. 이 누산값은 승산 및 누산 이외의 연산을 수행하는데 병목이 된다(예컨대, 상기 누산값은 상기 이전의 누산값을 필요로 하지 않는 새로운 세트의 연산들이 필요할 때마다 클리어되어야 함). 이 누산값은 또한 라운딩(rounding)과 같은 연산이 누산 전에 수행될 필요가 있는 경우에 병목이 된다.
이와 대조적으로, 상기 공개된 승산 가산 연산은 누산값에 대해 캐리 포워드를 행하지 않는다. 결과적으로, 이들 명령은 보다 다양한 알고리즘을 사용하기에 용이하다. 또한, 소프트웨어 파이프라인 처리가 필적하는 처리량을 얻는데 사용될 수 있다. 상기 승산 가산 명령의 융통성을 설명하기 위해, 여러 가지 예시적인 멀티미디어 알고리즘에 대해서 후술된다. 이들 멀티미디어 알고리즘의 일부는 추가적인 압축 데이터 명령을 사용한다. 이들 추가적인 압축 데이터 명령의 동작은 상기 설명된 알고리즘과 관련되어 설명된다. 이들 압축 데이터 명령의 추가적인 설명을 위해서는, 1995년 8월 31일자로 특허 출원된 미국 특허 출원번호 제521,360호"압축 데이터에 대해 연산을 행하는 한 세트의 명령"을 참조하자. 물론, 기타 다른 압축 데이터 명령이 사용될 수도 있다. 또한, 데이터 이동, 루프 처리, 및 조건적 분기를 처리하는데에 범용 프로세서 명령의 사용을 필요로 하는 다수의 스텝들이 다음의 예에서는 생략되어 있다.
1)복소수의 승산
상기 공개된 승산 가산 명령은 표 10a에 도시된 단일 명령으로 2개의 복소수를 승산하는데에 사용될 수 있다. 이전에 설명한 바와 같이, 2개의 복소수(예컨대, r1i1과 r2i2)의 승산은 다음 식에 따라 수행된다:
실수 성분 = r1·r2 - i1·i2
허수 성분 = r1·i2 + r2·i1
이 명령이 클럭 사이클마다 완료될 수 있도록 구현되면, 본 발명은 클럭 사이클마다 2개의 복소수를 승산할 수 있다.
다른 예로서, 표 10b에는 3개의 복소수를 함께 승산하는데에 사용되는 명령들이 나타내어져 있다.
2)승산 누산 연산
상기 공개된 승산 가산 명령은 값을 승산 및 누산하는데에 사용될 수도 있다. 예컨대, 2개의 세트의 4개의 데이터 요소(A1-4,B1-4)가 아래의 표 11에 나타낸바와 같이 승산 및 누산될 수 있다. 일실시예에서, 표 6에 나타낸 각각의 명령은 각각의 클럭 사이클을 완료할 수 있도록 구현된다.
각각의 세트의 데이터 요소의 개수가 8개를 초과하고 그리고 4의 배수이면, 이들 세트의 승산 및 누산은 아래의 표 12에 나타낸 바와 같이 수행되는 경우에는 보다 적은 개수의 명령을 필요로 한다.
또 다른 예로서, 표 13에는 세트(A,B)와 세트(C,D)의 별개의 승산 및 누산이 나타내어져 있으며, 여기서 이들 각각의 세트는 2개의 데이터 요소를 포함하고 있다.
또 다른 예로서, 표 14에는 세트(A,B)와 세트(C,D)의 별개의 승산 및 누산이 나타내어 있으며, 여기서 이들 각각의 세트는 4개의 데이터 요소를 포함하고 있다.
3)도트적 알고리즘(Dot Product Algorithms)
도트적(내적(inner product)이라고도 함)은 신호 처리 및 매트릭스 연산에사용된다. 예컨대, 도트적은 매트릭스의 적, 디지탈 필터링 연산(예컨대, FIR 및 IIR 필터링)을 산출하고 상관 관계 시퀀스를 산출할 때에 사용된다. 다수의 음성 압축 알고리즘(예컨대, GSM, G.728, CELP 및 VSELP)과 Hi-Fi 압축 알고리즘(예컨대, MPEG 및 보조 대역 코딩)은 디지탈 필터링과 상관 관계 계산을 폭넓게 이용하므로, 내적의 성능을 증가시키면 이들 알고리즘의 성능이 증가한다.
2개의 길이 N 시퀀스(A,B)의 도트적은 다음과 같이 정의된다:
도트적 계산을 수행하는 동작은, 각각의 시퀀스의 대응하는 요소들이 함께 승산되고 그 결과가 도트적 결과를 형성하기 위해 누산되는 승산 누산 연산을 널리 이용한다.
상기 도트적 계산은 상기 승산 가산 명령을 사용하여 수행될 수 있다. 예컨대, 4개의 16 비트 요소를 포함하고 있는 압축 데이터형이 사용되면, 상기 도트적 계산은 각각 4개의 값을 포함하고 있는 두 시퀀스에 대해:
1) 이동 명령을 사용하여 소스 1을 발생하기 위해 상기 A 시퀀스로부터의 4개의 16 비트 값을 액세스하고;
2) 이동 명령을 사용하여 소스 2를 발생하기 위해 상기 B 시퀀스로부터의 4개의 16 비트 값을 액세스하며;
3) 승산 가산 명령, 압축 가산 명령, 및 시프트 명령을 사용하여 이전에 설명한 승산 및 누산을 수행함으로써, 수행될 수도 있다.
매우 적은 개수 이상의 요소를 가지고 있는 벡터의 경우에는, 표 9에 나타낸 방법이 사용되며, 그리고 최종 결과들이 결국에 함께 가산된다. 기타 다른 지원 명령으로는 누산기 레지스터를 초기화하기 위한 압축 OR 및 XOR 명령, 계산의 최종 단계에서 원하지 않는 값을 시프트시키기 위한 압축 시프트 명령을 들 수 있다. 루프 제어 동작은 프로세서(109)의 명령 세트에 이미 존재하는 명령을 사용하여 달성된다.
4)이산 코사인 변환 알고리즘
이산 코사인 변환(DCT)은 다수의 신호 처리 알고리즘에서 사용되는 잘 알려진 기능이다. 특히, 비디오 및 이미지 압축 알고리즘이 이 변환을 널리 이용한다.
이미지 및 비디오 압축 알고리즘에서, DCT는 공간 표현으로부터 주파수 표현으로 픽셀 블록을 변환하는데에 사용된다. 주파수 표현에서, 화상 정보는 주파수 성분으로 분리되며, 이때 이들 성분의 일부는 다른 성분보다 중요하다. 상기 압축 알고리즘은 재구성된 화상 내용에 악영향을 미치지 않는 주파수 성분을 선택적으로 정량화하거나 폐기한다. 이 방법으로 압축이 달성된다.
상기 DCT의 많은 구현예들이 존재하며, 가장 일반적인 것은 고속 푸우리에 변환(TFT) 계산 흐름을 기초로 모델링된 어떤 종류의 고속 변환 방법이다. 이러한 고속 변환시에 차수 N 변환은 차수 N/2 변환과 재조합된 결과와의 조합으로 분해된다. 이 분해는 최소 차수 2 변환에 도달될 때까지 실행될 수 있다. 이 기본적인 2 변환 커넬(kernel)은 종종 버터플라이(butterfly) 연산이라고 한다. 이 버터플라이 연산은 다음과 같이 표현된다:
X = a*x + b*y
Y = c*x - d*y
여기서, a, b, c 및 d는 계수이며, x 및 y는 입력 데이터이고, X와 Y는 변환 출력이다.
상기 승산 가산은 상기 DCT 계산이 압축 데이터를 사용하여 아래의 방법으로 수행될 수 있도록 해 준다:
1) 이동 명령과 압축 해제 명령을 사용하여 소스 1(아래의 표 10 참조)을 발생하기 위해 x와 y를 나타내는 2개의 16비트 값을 액세스한다;
2) 아래의 표 10에 나타낸 소스 2를 발생한다. 소스 2는 다수의 버터플라이 연산에서 다시 사용될 수 있음에 주의하자;
3) 결과를 발생하기 위해 소스 1과 소스 2를 사용하여 승산 가산 명령을 수행한다(아래의 표 15 참조).
어떤 상황에서는 버터플라이 연산의 계수들이 1이다. 이들 경우에, 상기 버퍼플라이 연산은 단지 압축 가산 명령과 압축 감산 명령을 사용하여 수행될 수 있는 가산 및 감산으로 변질된다.
IEEE 문헌에는 역 DCT가 화상 회의를 위해 수행되어야 하는 정확도가 특정되어 있다. (IEEE 회로 및 시스템 협회, "8×8 역 이산 코사인 변환의 구현을 위한 IEEE 표준 사양서", IEEE Std. 1180-1990(미국, 뉴욕 10017, 뉴욕 이스트 제47스트리트 345, IEEE Inc., 1991년 3월 18) 참조). 필요한 정확도는 32 비트 출력을 발생하기 위해 16 비트 입력을 사용하기 때문에 상기 공개된 승산 가산 명령에 의해 충족된다.
이 방법으로, 상기 공개된 승산 가산 명령은 복소수의 승산을 필요로 하는 알고리즘, 변환을 필요로 하는 알고리즘, 및 승산 누산 연산을 필요로 하는 알고리즘을 포함해서, 다수의 상이한 알고리즘의 성능을 개선하는데 사용될 수 있다. 결과적으로, 이 승산 가산 명령은 설명한 이전의 명령보다 많은 개수의 알고리즘의 성능을 개선하기 위해 범용 프로세서내에서 사용될 수 있다.
본 발명은 여러 가지 실시예에 의해 설명되었지만, 본 발명은 설명된 실시예에 한정되지 않음을 당업자는 알 수 있다. 본 발명의 방법 및 장치는 첨부된 청구의 범위의 취지 및 범위내에서 수정예 및 변형예로 실시될 수 있다. 따라서, 이상에서의 설명은 본 발명을 한정하는 것이 아니고 예시하는 것으로 간주되어야 한다.

Claims (38)

  1. 데이타 요소들을 각각 포함하고 있는 제1 압축데이타 및 제2 압축데이타를 내부에 저장하고 있고, 상기 제1 압축데이타의 상기 데이타 요소들의 각각이 상기 제2 압축데이타내에 대응하는 데이타 요소를 가지고 있는 컴퓨터 시스템에서, 단일 명령에 응답하여 승산-가산 연산을 수행하는 방법에 있어서,
    상기 제1 압축데이타의 데이타 요소와 이에 대응하는 상기 제2 압축데이타의 데이타 요소를 함께 승산한 결과에 대응하는 중간 결과 데이타 요소를 발생하기 위해 상기 제1 압축데이타의 데이타 요소와 이에 대응하는 상기 제2 압축데이타의 데이타 요소를 함께 승산하는 단계로서, 상기 중간 결과 데이타 요소가 복수의 데이터 세트로 분할되어 있는, 상기 단계;
    상기 중간 결과 데이타 요소들의 합을 나타내는 복수의 결과 데이타 요소를 발생시키는 단계로서, 상기 복수의 결과 데이타 요소중의 제1결과 데이타 요소는 상기 복수의 데이터 세트중의 제1 데이터세트에 상기 중간 결과 데이타 요소들의 합을 나타내고, 상기 복수의 결과 데이타 요소중의 제2결과 데이타 요소는 상기 복수의 데이터 세트중의 제2 데이터세트에 상기 중간 결과 데이타 요소들의 합을 나타내는, 상기 단계; 및
    상기 복수의 결과 데이타 요소들을 합산하지 않고 상기 단일 명령의 실행을 완료하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 다른 명령에 대한 피연산자로서 사용하기 위해 상기 복수의 결과 데이타 요소를 제3 압축데이타로서 저장하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 레지스터로부터의 상기 제1 및 제2 압축데이타를 액세스하는 단계; 및
    상기 제1 압축데이타에 대한 상기 복수의 결과 데이타 요소를 상기 레지스터에 기록하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 복수의 결과 데이타 요소의 각각은 상기 압축데이터의 상기 데이타 요소에 비해 고정밀도를 제공하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 방법.
  6. 데이타 요소들을 각각 포함하고 있는 제1 및 제2 압축데이타를 개별적인 레지스터에 각각 저장하기 위한 레지스터 파일로서, 상기 제1 압축데이타의 상기 데이타 요소들의 각각은 상기 제2 압축데이타내의 데이타 요소들의 각각과 대응하는, 상기 레지스터 파일;
    제1 및 제2 압축 데이터를 피연산자로서 특정하는 명령을 디코딩하기 위한디코더; 및
    상기 레지스터 파일과 상기 디코더에 접속되어 있는 제1회로(130)를 구비하고 있고,
    상기 제1회로는, 상기 명령에 응답하여,
    복수의 데이터 세트로 쌍을 이룬 대응하는 중간 데이타 요소를 발생하기 위해 상기 제1 및 제2 압축데이타의 상기 대응하는 데이타 요소들을 함께 동시에 승산하고,
    복수의 결과 데이타 요소를 발생하기 위해 각각의 상기 복수의 세트의 중간 데이타 요소들을 산술적으로 조합하고, 각각의 상기 복수의 결과 데이타 요소는 상기 데이타 요소에 비해 고정밀도를 제공하고, 상기 복수의 결과 데이타 요소중의 제1 및 제2결과 데이타 요소는 상기 복수의 데이터세트의 제1 및 제2 데이터세트에 상기 중간 결과 데이타 요소들의 가산을 각각 나타내며,
    상기 단일 명령을 실행한 결과로서 상기 레지스터 파일중의 하나의 레지스터에 상기 복수의 결과 데이타 요소를 제3 압축데이타로서 저장하는 것을 특징으로 하는 프로세서.
  7. 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 복수의 데이터세트중의 다른 하나의 데이터세트에 상기 중간 결과 데이타 요소들의 가산을 나타내는 것을 특징으로 하는 프로세서.
  8. 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 고정밀도를 제공하는 것을 특징으로 하는 프로세서.
  9. 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 프로세서.
  10. 제6항에 있어서, 상기 제1회로는 포화로 동작하는 것을 특징으로 하는 프로세서.
  11. 제6항에 있어서, 상기 제1회로는 상기 디코더에 접속되고 상기 명령에 응답하는 제2회로(801)를 포함하고 있고, 상기 제2회로는,
    각각의 승산기가 상기 복수의 데이타 요소 쌍중 상이한 하나의 데이타 요소를 수신하기 위해 접속되어 있는 복수의 승산기,
    상기 복수의 승산기중 2개의 승산기에 각각 접속되어 있는 복수의 산술 유닛으로서, 이들 산술 유닛중 2개의 산술 유닛이 가산기인, 상기 복수의 산술 유닛, 및
    상기 복수의 산술 유닛에 접속되고, 상기 제3 압축데이타가 다른 명령에 의해 피연산자로서 사용되도록 하기 위해 상기 레지스터 파일에 저장되어지게 하는 제3회로(800)를 포함하고 있는 것을 특징으로 하는 프로세서.
  12. 제11항에 있어서, 각각의 승산기는 2개의 부분적을 발생하는 16 비트 승산을 적어도 한번 수행하는 것을 특징으로 하는 프로세서.
  13. 제12항에 있어서,
    상기 복수의 승산기중 제1 및 제2승산기에 접속되고, 상기 제1승산기에 의해 발생된 2개의 부분적을 수신하고 상기 제2승산기에 의해 발생된 2개의 부분적을 수신하여 2개의 부분적으로 된 단일 세트를 발생하는, 제1 캐리 세이브 가산기(CSA); 및
    상기 복수의 승산기중 제3 및 제4승산기에 접속되고, 상기 제3승산기에 의해 발생된 2개의 부분적을 수신하고 상기 제4승산기에 의해 발생된 2개의 부분적을 수신하여 2개의 부분적으로 된 단일 세트를 발생하는, 제2 캐리 세이브 가산기(CSA)를 더 포함하고 있는 것을 특징으로 하는 프로세서.
  14. 제12항에 있어서, 상기 제1, 제2, 제3 및 제4승산기의 각각은 8개의 부분적을 선택하기 위한 수단을 포함하고 있고, 상기 승산기의 각각은 CSA들로 이루어 진 4개의 레벨을 포함하고 있는 것을 특징으로 하는 프로세서.
  15. 제14항에 있어서, CSA들로 이루어 진 상기 4개의 레벨의 각각은 상기 8개의 부분적을 6개의 부분적으로 감소시키는 제1레벨, 상기 6개의 부분적을 4개의 부분적으로 감소시키는 제2레벨, 상기 4개의 부분적을 3개의 부분적으로 감소시키는 제3레벨, 및 상기 3개의 부분적을 2개의 부분적으로 감소시키는 제4레벨을 포함하고 있는 것을 특징으로 하는 프로세서.
  16. 제15항에 있어서, 상기 가산기중의 제1가산기는, 상기 제1 CSA에 접속되어 있고 상기 제1 CSA에 의해 발생된 상기 2개의 부분적의 합을 생성하며,
    상기 가산기중의 제2가산기는, 상기 제2 CSA에 접속되어 있고 상기 제2 CSA에 의해 발생된 상기 2개의 부분적의 합을 생성하는 것을 특징으로 하는 프로세서.
  17. 제12항에 있어서, 각각의 상기 승산기는 한 세트의 8개의 부분적을 선택하기 위해 2-비트 부스 엔코딩을 구현하는 것을 특징으로 하는 프로세서.
  18. 제17항에 있어서, 각각의 상기 승산기는 상기 부분적의 부호 확장을 대체하기 위해 부호 발생법을 구현하는 것을 특징으로 하는 프로세서.
  19. 제18항에 있어서, 각각의 상기 승산기는 상기 부호 발생법에 의해 발생된 잉여 비트를 개별 부분적 행의 대응하는 빈 비트 위치에 재배치시키는 것을 특징으로 하는 프로세서.
  20. 컴퓨터 시스템에 사용하기 위한 장치에 있어서,
    데이타 요소들을 각각 포함하고 있는 제1 압축데이타와 제2 압축데이타를 내부에 저장하고 있는 기억 영역으로서, 상기 제1 압축데이타의 상기 데이타 요소들의 각각은 상기 제2 압축데이타내에 대응하는 데이타 요소를 가지고 있는 기억 영역; 및
    상기 기억 영역에 접속되고, 신호에 응답하여 동작하는 회로를 포함하고 있고,
    상기 회로는,
    복수의 데이터 세트로 분할되는 대응하는 중간 결과 데이타 요소를 발생하기 위해 상기 제1 압축데이타와 상기 제2 압축데이타의 상기 대응하는 데이타 요소들을 함께 승산하는 제1수단;
    상기 중간 결과 데이타 요소들의 합에 의한 복수의 결과 데이타 요소와, 상기 복수의 데이터 세트중의 제1 데이터 세트에 상기 복수의 결과 데이타 요소중의 제1 결과 데이타 요소와, 상기 복수의 데이터 세트중의 제2 데이터 세트에 상기 중간 결과 데이타 요소들의 합을 나타내는 상기 중간 결과 데이타 요소들의 합을 나타내는 상기 복수의 결과 데이타 요소중의 제2 결과 데이타 요소를 발생하는 제2수단; 및
    상기 복수의 결과 데이타 요소를 제3 압축데이타로서 상기 기억 영역에 저장하는 제3수단을 포함하고 있는 것을 특징으로 하는 장치.
  21. 제20항에 있어서, 상기 제1 압축데이타와 상기 제2 압축데이타의 각각은 적어도 4개의 데이타 요소를 포함하고 있고, 상기 복수의 데이터 세트의 각각은 적어도 2개의 중간 결과 데이타 요소를 포함하고 있는 것을 특징으로 하는 장치.
  22. 제20항에 있어서, 상기 합산은 포화로 수행되는 것을 특징으로 하는 장치.
  23. 제20항에 있어서, 상기 중간 결과 데이타 요소와 상기 복수의 결과 데이타 요소는 상기 압축데이타의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 장치.
  24. 명령들로 된 프로그램을 실행하는 데이타 처리 시스템에서, 복소수들을 승산하는 방법에 있어서,
    A) 승산-가산 명령인 제1명령을 수신하는 단계;
    B) 상기 제1명령에 응답하여:
    B1) 압축 데이타로서 저장된 8개의 데이타 요소를 판독하는 단계로서, 상기 8개의 데이타 요소로 된 제1 데이타 서브세트는 상기 복소수중 제1복소수의 각각의 성분의 2가지 표현을 포함하고 있고, 상기 8개의 데이타 요소로 된 제2 데이터 서브세트는 상기 복소수중 제2복소수의 각각의 성분의 2가지 표현을 포함하고 있으며, 상기 성분들의 각각의 표현은 상기 성분의 양수 또는 음수를 표현하는, 상기 단계; 및
    B2) 상기 제1 및 제2 데이터 서브세트를 사용하여 상기 제1 및 제2 복소수의 적을 나타내는, 결과적으로 얻어진 복소수를 발생하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  25. 제24항에 있어서, 상기 제1 데이터 서브세트의 제1 및 제3 데이타 요소의 각각은 상기 제1복소수의 실수 성분의 양수를 나타내고, 상기 제1 데이터 서브세트의 제2 및 제4 데이타 요소의 각각은 상기 제1복소수의 허수 성분의 양수를 나타내는 것을 특징으로 하는 방법.
  26. 제25항에 있어서, 상기 제2 데이터 서브세트의 제1 및 제4 데이타 요소의 각각은 상기 제2복소수의 실수 성분의 양수를 나타내고, 상기 제2서브세트의 제2 데이타 요소는 상기 제2복소수의 허수 성분의 음수를 나타내며, 상기 제2서브세트의 제3 데이타 요소는 상기 제2복소수의 허수 성분의 양수를 나타내는 것을 특징으로 하는 방법.
  27. 제24항에 있어서, 결과적으로 얻어진 복소수를 발생하는 상기 단계는,
    a) 제1 중간 결과를 발생하기 위해 상기 제1 데이터 서브세트의 상기 제1 데이타 요소와 상기 제2 데이터 서브세트의 상기 제1 데이타 요소를 승산하는 단계;
    b) 제2 중간 결과를 발생하기 위해 상기 제1 데이터 서브세트의 상기 제2 데이타 요소와 상기 제2 데이터 서브세트의 상기 제2 데이타 요소를 승산하는 단계;
    c) 상기 결과적으로 얻어진 복소수의 실수 성분을 발생하기 위해 상기 제1중간 결과를 상기 제2 중간 결과에 가산하는 단계;
    d) 제3 중간 결과를 발생하기 위해 상기 제1 데이터 서브세트의 상기 제3 데이타 요소와 상기 제2 데이터 서브세트의 상기 제3 데이타 요소를 승산하는 단계;
    e) 제4 중간 결과를 발생하기 위해 상기 제1 데이터 서브세트의 상기 제4 데이타 요소와 상기 제2 데이터 서브세트의 상기 제4 데이타 요소를 승산하는 단계; 및
    f) 상기 결과적으로 얻어진 복소수의 허수 성분을 발생하기 위해 상기 제3 중간 결과를 상기 제4 중간 결과에 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  28. 제24항에 있어서, 상기 제1복소수를 나타내는 상기 8개의 데이타 요소는 제1 압축 데이타 항목에 저장되어 있고, 상기 제2복소수를 나타내는 상기 8개의 데이타 요소는 제2 압축 데이타 항목에 저장되어 있는 것을 특징으로 하는 방법.
  29. 제24항에 있어서, 결과적으로 얻어진 복소수를 발생하는 상기 단계는,
    상기 결과적으로 얻어진 복소수의 실수 및 허수 성분을 각각 나타내는 제1 및 제2 데이타 요소를 가지고 있는 제3 압축 데이타 항목으로서 상기 결과적으로 얻어진 복소수를 기록하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
  30. 제29항에 있어서, 상기 제1 및 제2 데이타 항목의 각각의 상기 데이타 요소는 N 비트를 포함하고 있고, 상기 제3 압축 데이타 항목의 각각의 상기 데이타 요소는 2N 비트를 포함하고 있는 것을 특징으로 하는 방법.
  31. 제29항에 있어서,
    C) 상기 제3 압축 데이타 항목을 기초로 제4 압축 데이타 항목을 발생하는 단계로서, 상기 제4 압축 데이타 항목은 제1 데이타 요소 쌍 및 제2 데이타 요소 쌍을 가지고 있고, 상기 제1 데이타 요소 쌍의 각각의 데이터 요소는 상기 결과적으로 얻어진 복소수의 실수 성분을 나타내며, 상기 제2 데이타 요소 쌍의 각각의 데이터 요소는 상기 결과적으로 얻어진 복소수의 허수 성분을 나타내는 것을 특징으로 하는 방법.
  32. 제24항에 있어서, 상기 결과적으로 얻어진 복소수의 실수 및 허수 성분을 압축 데이터가 누산되는 누산 압축 데이타 항목의 제1 및 제2 데이타 요소에 각각 가산하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
  33. 제32항에 있어서, 각각 가산하는 상기 단계는 다른 단일 명령에 응답하여 수행되는 것을 특징으로 하는 방법.
  34. 값을 승산 및 누산하는 방법에 있어서,
    제1 단일 승산-가산 명령에 응답하여 데이타 요소(A0,A1,A2,A3)를 가지고 있는 제1 압축 피연산자 및 데이타 요소(B0,B1,B2,B3)를 가지고 있는 제2 압축 피연산자를 식별하고, (A0*B0)+(A1*B1)를 나타내는 제1 데이타 요소와 (A2*B2)+(A3*B3)를 나타내는 제2 데이타 요소를 가지고 있는 제3 압축 데이타를 발생하는 단계; 및
    상기 제3 압축 데이타를 누산값에 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  35. 제34항에 있어서, 상기 제3 압축 데이타의 상기 제1 및 제2 데이타 요소는 상기 제1 및 제2 압축 피연산자의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 방법.
  36. 제34항에 있어서, 상기 제3 압축 데이타를 누산값에 가산하는 상기 단계는,
    제2 단일 승산-가산 명령에 응답하여 데이타 요소(C0,C1,C2,C3)를 가지고 있는 제4 압축 피연산자 및 데이타 요소(D0,D1,D2,D3)를 가지고 있는 제5 압축 피연산자를 식별하여, (C0*D0)+(C1*D1)를 나타내는 제1 데이타요소 및 (C2*D2)+(C3*D3)를 나타내는 제2 데이타 요소를 가지고 있는 제6 압축데이타를 발생하는 단계;
    상기 제3 및 제6 압축데이타로부터의 상기 제1 데이타 요소들을 가산하는 단계; 및
    상기 제3 및 제6 압축데이타로부터의 상기 제2 데이타 요소들을 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  37. 제34항에 있어서, 상기 제3 압축데이타를 누산값에 가산하는 상기 단계는,
    상기 제1 데이타 요소들을 가산하는 상기 단계의 결과와 상기 제2데이타 요소들을 가산하는 상기 단계의 결과를 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  38. 제34항에 있어서, 상기 제3 압축데이타를 누산값에 가산하는 상기 단계는,
    제2 단일 승산-가산 명령에 응답하여 데이타 요소(C0,C1,C2,C3)를 가지고 있는 제4 압축 피연산자 및 데이타 요소(D0,D1,D2,D3)를 가지고 있는 제5 압축 피연산자를 식별하고, (C0*D0)+(C1*D1)를 나타내는 제1 데이타 요소 및(C2*D2)+(C3*D3)를 나타내는 제2 데이타 요소를 가지고 있는 제6 압축 데이타를 발생하는 단계;
    상기 제3 및 제5 압축 데이타로부터의 상기 제1 및 제2데이타 요소를 가산한 결과를 각각 저장하는 제1 및 제2 데이타 요소를 가지고 있는 제7 압축 데이타를 발생하는 단계;
    상기 제7 압축 데이타의 상기 제1 데이타 요소에 대응하는 제8 압축 데이타내의 한 위치에 저장된 상기 제7 압축 데이타의 상기 제2 데이타 요소를 가지고 있는 제8 압축 데이타를 발생하기 위해 상기 제7 압축 데이타를 압축 해제하는 단계; 및
    대응하는 위치에 있는 상기 제7 및 제8 압축 데이타의 데이타 요소들을 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
KR1019980701542A 1995-08-31 1996-08-07 압축데이터에의한승산-가산연산수행장치 KR100329339B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US08/522,067 US6385634B1 (en) 1995-08-31 1995-08-31 Method for performing multiply-add operations on packed data
US8/522,067 1995-08-31
US08/522,067 1995-08-31
US08/606,212 US6035316A (en) 1995-08-31 1996-02-23 Apparatus for performing multiply-add operations on packed data
US08/606,212 1996-02-23
US8/606,212 1996-02-23
PCT/US1996/012799 WO1997008610A1 (en) 1995-08-31 1996-08-07 An apparatus for performing multiply-add operations on packed data

Publications (2)

Publication Number Publication Date
KR19990044305A KR19990044305A (ko) 1999-06-25
KR100329339B1 true KR100329339B1 (ko) 2002-07-06

Family

ID=24079328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980701542A KR100329339B1 (ko) 1995-08-31 1996-08-07 압축데이터에의한승산-가산연산수행장치

Country Status (4)

Country Link
US (14) US6385634B1 (ko)
KR (1) KR100329339B1 (ko)
CN (1) CN100461093C (ko)
HK (1) HK1072989A1 (ko)

Families Citing this family (252)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
EP0849665B1 (en) * 1992-12-31 2001-10-04 Seiko Epson Corporation System and method for register renaming
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
JP3790307B2 (ja) 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
WO1999038088A1 (fr) * 1998-01-21 1999-07-29 Matsushita Electric Industrial Co., Ltd. Procede et dispositif pour operation arithmetique
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6377970B1 (en) 1998-03-31 2002-04-23 Intel Corporation Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
JP3287305B2 (ja) * 1998-04-23 2002-06-04 日本電気株式会社 積和演算装置
ATE557343T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6366944B1 (en) * 1999-01-15 2002-04-02 Razak Hossain Method and apparatus for performing signed/unsigned multiplication
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6397240B1 (en) * 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system
US7509486B1 (en) * 1999-07-08 2009-03-24 Broadcom Corporation Encryption processor for performing accelerated computations to establish secure network sessions connections
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6282556B1 (en) * 1999-10-08 2001-08-28 Sony Corporation Of Japan High performance pipelined data path for a media processor
US7890566B1 (en) * 2000-02-18 2011-02-15 Texas Instruments Incorporated Microprocessor with rounding dot product instruction
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7010558B2 (en) * 2001-04-19 2006-03-07 Arc International Data processor with enhanced instruction execution and method
US7333530B1 (en) * 2001-08-06 2008-02-19 Analog Devices, Inc. Despread signal recovery in digital signal processors
US7107305B2 (en) * 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
US7624138B2 (en) * 2001-10-29 2009-11-24 Intel Corporation Method and apparatus for efficient integer transform
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US20030158880A1 (en) * 2002-02-13 2003-08-21 Ng Kenneth Y. Booth encoder and partial products circuit
US7085797B2 (en) 2002-02-26 2006-08-01 Broadcom Corporation Addition circuit for accumulating redundant binary numbers
US20030236810A1 (en) * 2002-06-25 2003-12-25 Intel Corporation Big number multiplication apparatus and method
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US20040249474A1 (en) * 2003-03-31 2004-12-09 Lee Ruby B. Compare-plus-tally instructions
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
US7043518B2 (en) * 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
US9465611B2 (en) * 2003-10-02 2016-10-11 Broadcom Corporation Processor execution unit with configurable SIMD functional blocks for complex number operations
US7308470B2 (en) * 2003-12-05 2007-12-11 Intel Corporation Smaller and lower power static mux circuitry in generating multiplier partial product signals
US7437401B2 (en) * 2004-02-20 2008-10-14 Altera Corporation Multiplier-accumulator block mode splitting
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US8073892B2 (en) * 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US7917568B2 (en) * 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction
US7958180B2 (en) * 2007-07-05 2011-06-07 International Business Machines Corporation Multiplier engine
JP2009075676A (ja) * 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8239442B2 (en) * 2008-08-08 2012-08-07 Analog Devices, Inc. Computing module for efficient FFT and FIR hardware accelerator
US9086872B2 (en) * 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
US8570336B2 (en) 2009-12-08 2013-10-29 Intel Corporation Texture unit for general purpose computing
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
US8838664B2 (en) 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
WO2013095515A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US9218182B2 (en) * 2012-06-29 2015-12-22 Intel Corporation Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op)
US9804839B2 (en) * 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9465578B2 (en) * 2013-12-13 2016-10-11 Nvidia Corporation Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
WO2016144726A1 (en) 2015-03-12 2016-09-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US11847427B2 (en) 2015-04-04 2023-12-19 Texas Instruments Incorporated Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor
US9817791B2 (en) 2015-04-04 2017-11-14 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word
US9952865B2 (en) 2015-04-04 2018-04-24 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US10169297B2 (en) 2015-04-16 2019-01-01 Hewlett Packard Enterprise Development Lp Resistive memory arrays for performing multiply-accumulate operations
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US9898286B2 (en) 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9727353B2 (en) 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US10503474B2 (en) 2015-12-31 2019-12-10 Texas Instruments Incorporated Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US10146535B2 (en) 2016-10-20 2018-12-04 Intel Corporatoin Systems, apparatuses, and methods for chained fused multiply add
EP4148563A1 (en) 2016-10-20 2023-03-15 INTEL Corporation Systems, apparatuses, and methods for fused multiply add
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10401412B2 (en) 2016-12-16 2019-09-03 Texas Instruments Incorporated Line fault signature analysis
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
WO2019005132A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
WO2019005130A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND ACCUMULATION OF COMPLEX VALUES
WO2019005115A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10552154B2 (en) * 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11074073B2 (en) 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10664277B2 (en) * 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US10749502B2 (en) * 2017-09-29 2020-08-18 Intel Corporation Apparatus and method for performing horizontal filter operations
US10795677B2 (en) 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11243765B2 (en) 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US20190102199A1 (en) * 2017-09-30 2019-04-04 Intel Corporation Methods and systems for executing vectorized pythagorean tuple instructions
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10452394B2 (en) * 2017-11-28 2019-10-22 Intel Corporation Apparatus and method for complex multiplication
US10489154B2 (en) * 2017-11-28 2019-11-26 Intel Corporation Apparatus and method for complex multiply and accumulate
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US11768681B2 (en) * 2018-01-24 2023-09-26 Intel Corporation Apparatus and method for vector multiply and accumulate of packed bytes
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10684825B2 (en) * 2018-08-28 2020-06-16 Cavium, Llc Compressing like magnitude partial products in multiply accumulation
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US11113231B2 (en) 2018-12-31 2021-09-07 Samsung Electronics Co., Ltd. Method of processing in memory (PIM) using memory device and memory device performing the same
US11194585B2 (en) * 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
CN111814093A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种乘累加指令的处理方法和处理装置
US10790830B1 (en) 2019-05-20 2020-09-29 Achronix Semiconductor Corporation Fused memory and arithmetic circuit
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11256476B2 (en) * 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11132198B2 (en) 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US12061910B2 (en) 2019-12-05 2024-08-13 International Business Machines Corporation Dispatching multiply and accumulate operations based on accumulator register index number
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory
US20230015148A1 (en) * 2021-07-16 2023-01-19 Google Llc Multiplier and Adder in Systolic Array

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3641736A (en) 1970-06-22 1972-02-15 Raymond J Dwyer Machine for making filled packages
US3675001A (en) 1970-12-10 1972-07-04 Ibm Fast adder for multi-number additions
US3711692A (en) 1971-03-15 1973-01-16 Goodyear Aerospace Corp Determination of number of ones in a data field by addition
US3723715A (en) 1971-08-25 1973-03-27 Ibm Fast modulo threshold operator binary adder for multi-number additions
FR2212952A5 (ko) 1972-12-29 1974-07-26 Cit Alcatel
US3900724A (en) 1974-02-11 1975-08-19 Trw Inc Asynchronous binary multiplier using non-threshold logic
US4161784A (en) 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4344151A (en) 1980-04-21 1982-08-10 Rockwell International Corporation ROM-Based complex multiplier useful for FFT butterfly arithmetic unit
US4418383A (en) 1980-06-30 1983-11-29 International Business Machines Corporation Data flow component for processor and microprocessor systems
US4393468A (en) 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
JPS5824941A (ja) 1981-08-07 1983-02-15 Hitachi Ltd 演算装置
JPS58182754A (ja) 1982-04-19 1983-10-25 Hitachi Ltd 演算処理装置
US4498177A (en) 1982-08-30 1985-02-05 Sperry Corporation M Out of N code checker circuit
JPS6072069A (ja) 1983-09-28 1985-04-24 Nec Corp ベクトル演算処理装置
JPS60134974A (ja) 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
FR2563349B1 (fr) 1984-04-18 1989-04-28 France Etat Multiplieur matriciel systolique de traitement de donnees numeriques
US4707800A (en) 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
CN85107063A (zh) * 1985-09-27 1987-01-31 耿树贵 整数多功能叠接单元的阵列乘法器
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US5021945A (en) 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4760525A (en) 1986-06-10 1988-07-26 The United States Of America As Represented By The Secretary Of The Air Force Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction
US4890218A (en) 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4876660A (en) 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JP2613223B2 (ja) 1987-09-10 1997-05-21 株式会社日立製作所 演算装置
US4985848A (en) 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5189636A (en) 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US4989168A (en) 1987-11-30 1991-01-29 Fujitsu Limited Multiplying unit in a computer system, capable of population counting
US5032865A (en) 1987-12-14 1991-07-16 General Dynamics Corporation Air Defense Systems Div. Calculating the dot product of large dimensional vectors in two's complement representation
US5126964A (en) 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
EP0344347B1 (de) * 1988-06-02 1993-12-29 Deutsche ITT Industries GmbH Einrichtung zur digitalen Signalverarbeitung
US4972362A (en) 1988-06-17 1990-11-20 Bipolar Integrated Technology, Inc. Method and apparatus for implementing binary multiplication using booth type multiplication
WO1990005335A1 (en) 1988-11-04 1990-05-17 Hitachi, Ltd. Apparatus for multiplication, division and extraction of square root
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US4969118A (en) 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
KR920007505B1 (ko) 1989-02-02 1992-09-04 정호선 신경회로망을 이용한 곱셈기
US5081698A (en) 1989-02-14 1992-01-14 Intel Corporation Method and apparatus for graphics display data manipulation
US5001662A (en) 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US4956801A (en) 1989-09-15 1990-09-11 Sun Microsystems, Inc. Matrix arithmetic circuit for processing matrix transformation operations
DE58908705D1 (de) * 1989-09-20 1995-01-12 Itt Ind Gmbh Deutsche Schaltungsanordnung zur Produktsummenberechnung.
US5262976A (en) 1989-11-13 1993-11-16 Harris Corporation Plural-bit recoding multiplier
US5590365A (en) 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US5193167A (en) 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
JP2651267B2 (ja) 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
JP2523962B2 (ja) 1990-08-20 1996-08-14 松下電器産業株式会社 浮動小数点演算装置
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
JP2601960B2 (ja) * 1990-11-15 1997-04-23 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理方法及びその装置
US5268995A (en) 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
JPH04242861A (ja) 1990-12-28 1992-08-31 Sony Corp 内積演算回路
US5408581A (en) 1991-03-14 1995-04-18 Technology Research Association Of Medical And Welfare Apparatus Apparatus and method for speech signal processing
US5303355A (en) 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US5680161A (en) 1991-04-03 1997-10-21 Radius Inc. Method and apparatus for high speed graphics data compression
US5241492A (en) 1991-05-06 1993-08-31 Motorola, Inc. Apparatus for performing multiply and accumulate instructions with reduced power and a method therefor
US5187679A (en) 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters
US5420815A (en) 1991-10-29 1995-05-30 Advanced Micro Devices, Inc. Digital multiplication and accumulation system
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5241493A (en) 1991-12-16 1993-08-31 International Business Machines Corporation Floating point arithmetic unit with size efficient pipelined multiply-add architecture
US5311508A (en) 1991-12-23 1994-05-10 Square D Company Apparatus for receiving and decoding a serial data packet containing the status of a network of single point I/O devices
US5210711A (en) 1992-02-26 1993-05-11 Sony Corporation Of America Very fast variable input multi-bit adder
NZ251947A (en) 1992-04-13 1996-11-26 Meat Research Corp Image analysis for meat inspection
US5325320A (en) 1992-05-01 1994-06-28 Seiko Epson Area efficient multiplier for use in an integrated circuit
US5457805A (en) * 1992-06-30 1995-10-10 Nec Corporation Microcomputer enabling high speed execution of product-sum operation
JP3268024B2 (ja) 1992-08-25 2002-03-25 日本化学産業株式会社 天井の換気構造
US5426783A (en) 1992-11-02 1995-06-20 Amdahl Corporation System for processing eight bytes or less by the move, pack and unpack instruction of the ESA/390 instruction set
US5321644A (en) 1992-11-04 1994-06-14 Unisys Corporation Method and apparatus for division error detection
ZA938324B (en) 1992-11-24 1994-06-07 Qualcomm Inc Pilot carrier dot product circuit
US5606677A (en) 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US5651121A (en) 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
JPH06242928A (ja) 1993-02-22 1994-09-02 Nec Corp 加算器およびこれを用いた乗算回路
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
JP3546437B2 (ja) 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US5806049A (en) 1993-04-21 1998-09-08 Petruzzi; Christopher R. Data processing system for global assessment of investment opportunity and cost
US5410670A (en) 1993-06-02 1995-04-25 Microunity Systems Engineering, Inc. Accessing system that reduces access times due to transmission delays and I/O access circuitry in a burst mode random access memory
EP0645699A1 (en) 1993-09-29 1995-03-29 International Business Machines Corporation Fast multiply-add instruction sequence in a pipeline floating-point processor
EP0654733B1 (en) 1993-11-23 2000-05-24 Hewlett-Packard Company Parallel data processing in a single processor
US5883824A (en) * 1993-11-29 1999-03-16 Hewlett-Packard Company Parallel adding and averaging circuit and method
US5390135A (en) 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5805913A (en) 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
JP2885041B2 (ja) 1993-12-27 1999-04-19 日本電気株式会社 アダプティブフィルタ修正係数演算回路
US5541865A (en) 1993-12-30 1996-07-30 Intel Corporation Method and apparatus for performing a population count operation
US5673427A (en) 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
GB2317978B (en) 1994-03-02 1998-05-20 Advanced Risc Mach Ltd Electronic multiplying and adding apparatus and method
US5487022A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5734874A (en) 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5642306A (en) 1994-07-27 1997-06-24 Intel Corporation Method and apparatus for a single instruction multiple data early-out zero-skip multiplier
US5579253A (en) 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
EP0706040A1 (en) 1994-10-07 1996-04-10 Bp Chemicals S.N.C. Property determination
WO1996017291A1 (en) 1994-12-02 1996-06-06 Intel Corporation Microprocessor with packing operation of composite operands
US5819101A (en) 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
US5500811A (en) 1995-01-23 1996-03-19 Microunity Systems Engineering, Inc. Finite impulse response filter
US5721697A (en) 1995-06-16 1998-02-24 Hewlett-Packard Company Performing tree additions via multiplication
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6006318A (en) 1995-08-16 1999-12-21 Microunity Systems Engineering, Inc. General purpose, dynamic partitioning, programmable media processor
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5721892A (en) 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US7085795B2 (en) * 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
US6058408A (en) 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US6237016B1 (en) 1995-09-05 2001-05-22 Intel Corporation Method and apparatus for multiplying and accumulating data samples and complex coefficients
US6470370B2 (en) 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5983253A (en) * 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5737537A (en) 1995-09-29 1998-04-07 Intel Corporation Two-measure block classification scheme for encoding video images
KR0151922B1 (ko) 1995-12-12 1998-10-15 양승택 필드 및 프레임 움직임 추정 장치
WO1997024681A1 (en) * 1995-12-19 1997-07-10 Intel Corporation A computer system performing a two-dimensional rotation of packed data representing multimedia information
US5852726A (en) 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5701508A (en) 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5907842A (en) 1995-12-20 1999-05-25 Intel Corporation Method of sorting numbers to obtain maxima/minima values with ordering
US5742529A (en) 1995-12-21 1998-04-21 Intel Corporation Method and an apparatus for providing the absolute difference of unsigned values
US5880979A (en) 1995-12-21 1999-03-09 Intel Corporation System for providing the absolute difference of unsigned values
KR100197793B1 (ko) 1995-12-23 1999-06-15 정선종 선형 단축 배열 구조를 이용한 블록정합 움직임 추정장치
US5983257A (en) 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5793661A (en) 1995-12-26 1998-08-11 Intel Corporation Method and apparatus for performing multiply and accumulate operations on packed data
US5835392A (en) 1995-12-28 1998-11-10 Intel Corporation Method for performing complex fast fourier transforms (FFT's)
US5793900A (en) 1995-12-29 1998-08-11 Stanford University Generating categorical depth maps using passive defocus sensing
US5862067A (en) 1995-12-29 1999-01-19 Intel Corporation Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations
US5740037A (en) 1996-01-22 1998-04-14 Hughes Aircraft Company Graphical user interface system for manportable applications
US5852473A (en) 1996-02-20 1998-12-22 Tektronix, Inc. 3-2 pulldown detector
US5880983A (en) 1996-03-25 1999-03-09 International Business Machines Corporation Floating point split multiply/add system which has infinite precision
US5719642A (en) 1996-05-07 1998-02-17 National Science Council Of R.O.C. Full-search block matching motion estimation processor
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5841676A (en) 1996-11-04 1998-11-24 General Electric Company System and method for estimating a change point time in a manufacturing process
US6061521A (en) 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5884071A (en) * 1997-03-31 1999-03-16 Intel Corporation Method and apparatus for decoding enhancement instructions using alias encodings
US5865752A (en) 1997-05-07 1999-02-02 General Electric Company Method and apparatus for ultrasound imaging using normalized difference between successive frames
US5876342A (en) 1997-06-30 1999-03-02 Siemens Medical Systems, Inc. System and method for 3-D ultrasound imaging and motion estimation
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US5884089A (en) 1997-10-14 1999-03-16 Motorola, Inc. Method for calculating an L1 norm and parallel computer processor
US6026483A (en) 1997-10-23 2000-02-15 Advanced Micro Devices, Inc. Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands
US6178482B1 (en) * 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6122725A (en) 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6192467B1 (en) * 1998-03-31 2001-02-20 Intel Corporation Executing partial-width packed data instructions
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6378060B1 (en) * 1998-08-24 2002-04-23 Microunity Systems Engineering, Inc. System to implement a cross-bar switch of a broadband processor
US6272512B1 (en) 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic

Also Published As

Publication number Publication date
US20090265409A1 (en) 2009-10-22
US20040220992A1 (en) 2004-11-04
US6035316A (en) 2000-03-07
US8793299B2 (en) 2014-07-29
US20120331028A1 (en) 2012-12-27
US8745119B2 (en) 2014-06-03
US20110264895A1 (en) 2011-10-27
US20130198254A1 (en) 2013-08-01
US20130262836A1 (en) 2013-10-03
US20020059355A1 (en) 2002-05-16
US20130091190A1 (en) 2013-04-11
US20130219151A1 (en) 2013-08-22
US8495123B2 (en) 2013-07-23
US8626814B2 (en) 2014-01-07
US20130262547A1 (en) 2013-10-03
US7509367B2 (en) 2009-03-24
KR19990044305A (ko) 1999-06-25
US5983256A (en) 1999-11-09
HK1072989A1 (en) 2005-09-16
CN1801082A (zh) 2006-07-12
US8396915B2 (en) 2013-03-12
US8185571B2 (en) 2012-05-22
US6385634B1 (en) 2002-05-07
US7424505B2 (en) 2008-09-09
CN100461093C (zh) 2009-02-11
US20120216018A1 (en) 2012-08-23
US8725787B2 (en) 2014-05-13

Similar Documents

Publication Publication Date Title
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US5859997A (en) Method for performing multiply-substrate operations on packed data
JP3711147B2 (ja) パック・データを処理する1組の命令
US7395298B2 (en) Method and apparatus for performing multiply-add operations on packed data
US7430578B2 (en) Method and apparatus for performing multiply-add operations on packed byte data
US7725520B2 (en) Processor
US5742529A (en) Method and an apparatus for providing the absolute difference of unsigned values

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
FPAY Annual fee payment

Payment date: 20130228

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 15

EXPY Expiration of term