KR100329339B1 - 압축데이터에의한승산-가산연산수행장치 - Google Patents
압축데이터에의한승산-가산연산수행장치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 47
- 230000036961 partial effect Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 7
- 238000007792 addition Methods 0.000 description 59
- 230000006835 compression Effects 0.000 description 35
- 238000007906 compression Methods 0.000 description 35
- 230000035508 accumulation Effects 0.000 description 20
- 238000009825 accumulation Methods 0.000 description 20
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 14
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000009467 reduction Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001074710 Eucalyptus populnea Species 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000747 poly(lactic acid) Polymers 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4806—Computations with complex numbers
- G06F7/4812—Complex multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction 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/5336—Reduction 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/5338—Reduction 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
일반적인 컴퓨터 시스템에서, 프로세서들은 한가지 결과를 생성하는 명령들을 이용하여 다수의 비트(예컨대, 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 압축데이타 및 제2 압축데이타를 내부에 저장하고 있고, 상기 제1 압축데이타의 상기 데이타 요소들의 각각이 상기 제2 압축데이타내에 대응하는 데이타 요소를 가지고 있는 컴퓨터 시스템에서, 단일 명령에 응답하여 승산-가산 연산을 수행하는 방법에 있어서,상기 제1 압축데이타의 데이타 요소와 이에 대응하는 상기 제2 압축데이타의 데이타 요소를 함께 승산한 결과에 대응하는 중간 결과 데이타 요소를 발생하기 위해 상기 제1 압축데이타의 데이타 요소와 이에 대응하는 상기 제2 압축데이타의 데이타 요소를 함께 승산하는 단계로서, 상기 중간 결과 데이타 요소가 복수의 데이터 세트로 분할되어 있는, 상기 단계;상기 중간 결과 데이타 요소들의 합을 나타내는 복수의 결과 데이타 요소를 발생시키는 단계로서, 상기 복수의 결과 데이타 요소중의 제1결과 데이타 요소는 상기 복수의 데이터 세트중의 제1 데이터세트에 상기 중간 결과 데이타 요소들의 합을 나타내고, 상기 복수의 결과 데이타 요소중의 제2결과 데이타 요소는 상기 복수의 데이터 세트중의 제2 데이터세트에 상기 중간 결과 데이타 요소들의 합을 나타내는, 상기 단계; 및상기 복수의 결과 데이타 요소들을 합산하지 않고 상기 단일 명령의 실행을 완료하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제1항에 있어서, 다른 명령에 대한 피연산자로서 사용하기 위해 상기 복수의 결과 데이타 요소를 제3 압축데이타로서 저장하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
- 제1항에 있어서, 레지스터로부터의 상기 제1 및 제2 압축데이타를 액세스하는 단계; 및상기 제1 압축데이타에 대한 상기 복수의 결과 데이타 요소를 상기 레지스터에 기록하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 복수의 결과 데이타 요소의 각각은 상기 압축데이터의 상기 데이타 요소에 비해 고정밀도를 제공하는 것을 특징으로 하는 방법.
- 제4항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 방법.
- 데이타 요소들을 각각 포함하고 있는 제1 및 제2 압축데이타를 개별적인 레지스터에 각각 저장하기 위한 레지스터 파일로서, 상기 제1 압축데이타의 상기 데이타 요소들의 각각은 상기 제2 압축데이타내의 데이타 요소들의 각각과 대응하는, 상기 레지스터 파일;제1 및 제2 압축 데이터를 피연산자로서 특정하는 명령을 디코딩하기 위한디코더; 및상기 레지스터 파일과 상기 디코더에 접속되어 있는 제1회로(130)를 구비하고 있고,상기 제1회로는, 상기 명령에 응답하여,복수의 데이터 세트로 쌍을 이룬 대응하는 중간 데이타 요소를 발생하기 위해 상기 제1 및 제2 압축데이타의 상기 대응하는 데이타 요소들을 함께 동시에 승산하고,복수의 결과 데이타 요소를 발생하기 위해 각각의 상기 복수의 세트의 중간 데이타 요소들을 산술적으로 조합하고, 각각의 상기 복수의 결과 데이타 요소는 상기 데이타 요소에 비해 고정밀도를 제공하고, 상기 복수의 결과 데이타 요소중의 제1 및 제2결과 데이타 요소는 상기 복수의 데이터세트의 제1 및 제2 데이터세트에 상기 중간 결과 데이타 요소들의 가산을 각각 나타내며,상기 단일 명령을 실행한 결과로서 상기 레지스터 파일중의 하나의 레지스터에 상기 복수의 결과 데이타 요소를 제3 압축데이타로서 저장하는 것을 특징으로 하는 프로세서.
- 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 복수의 데이터세트중의 다른 하나의 데이터세트에 상기 중간 결과 데이타 요소들의 가산을 나타내는 것을 특징으로 하는 프로세서.
- 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 고정밀도를 제공하는 것을 특징으로 하는 프로세서.
- 제6항에 있어서, 각각의 상기 복수의 결과 데이타 요소는 상기 압축데이터의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 프로세서.
- 제6항에 있어서, 상기 제1회로는 포화로 동작하는 것을 특징으로 하는 프로세서.
- 제6항에 있어서, 상기 제1회로는 상기 디코더에 접속되고 상기 명령에 응답하는 제2회로(801)를 포함하고 있고, 상기 제2회로는,각각의 승산기가 상기 복수의 데이타 요소 쌍중 상이한 하나의 데이타 요소를 수신하기 위해 접속되어 있는 복수의 승산기,상기 복수의 승산기중 2개의 승산기에 각각 접속되어 있는 복수의 산술 유닛으로서, 이들 산술 유닛중 2개의 산술 유닛이 가산기인, 상기 복수의 산술 유닛, 및상기 복수의 산술 유닛에 접속되고, 상기 제3 압축데이타가 다른 명령에 의해 피연산자로서 사용되도록 하기 위해 상기 레지스터 파일에 저장되어지게 하는 제3회로(800)를 포함하고 있는 것을 특징으로 하는 프로세서.
- 제11항에 있어서, 각각의 승산기는 2개의 부분적을 발생하는 16 비트 승산을 적어도 한번 수행하는 것을 특징으로 하는 프로세서.
- 제12항에 있어서,상기 복수의 승산기중 제1 및 제2승산기에 접속되고, 상기 제1승산기에 의해 발생된 2개의 부분적을 수신하고 상기 제2승산기에 의해 발생된 2개의 부분적을 수신하여 2개의 부분적으로 된 단일 세트를 발생하는, 제1 캐리 세이브 가산기(CSA); 및상기 복수의 승산기중 제3 및 제4승산기에 접속되고, 상기 제3승산기에 의해 발생된 2개의 부분적을 수신하고 상기 제4승산기에 의해 발생된 2개의 부분적을 수신하여 2개의 부분적으로 된 단일 세트를 발생하는, 제2 캐리 세이브 가산기(CSA)를 더 포함하고 있는 것을 특징으로 하는 프로세서.
- 제12항에 있어서, 상기 제1, 제2, 제3 및 제4승산기의 각각은 8개의 부분적을 선택하기 위한 수단을 포함하고 있고, 상기 승산기의 각각은 CSA들로 이루어 진 4개의 레벨을 포함하고 있는 것을 특징으로 하는 프로세서.
- 제14항에 있어서, CSA들로 이루어 진 상기 4개의 레벨의 각각은 상기 8개의 부분적을 6개의 부분적으로 감소시키는 제1레벨, 상기 6개의 부분적을 4개의 부분적으로 감소시키는 제2레벨, 상기 4개의 부분적을 3개의 부분적으로 감소시키는 제3레벨, 및 상기 3개의 부분적을 2개의 부분적으로 감소시키는 제4레벨을 포함하고 있는 것을 특징으로 하는 프로세서.
- 제15항에 있어서, 상기 가산기중의 제1가산기는, 상기 제1 CSA에 접속되어 있고 상기 제1 CSA에 의해 발생된 상기 2개의 부분적의 합을 생성하며,상기 가산기중의 제2가산기는, 상기 제2 CSA에 접속되어 있고 상기 제2 CSA에 의해 발생된 상기 2개의 부분적의 합을 생성하는 것을 특징으로 하는 프로세서.
- 제12항에 있어서, 각각의 상기 승산기는 한 세트의 8개의 부분적을 선택하기 위해 2-비트 부스 엔코딩을 구현하는 것을 특징으로 하는 프로세서.
- 제17항에 있어서, 각각의 상기 승산기는 상기 부분적의 부호 확장을 대체하기 위해 부호 발생법을 구현하는 것을 특징으로 하는 프로세서.
- 제18항에 있어서, 각각의 상기 승산기는 상기 부호 발생법에 의해 발생된 잉여 비트를 개별 부분적 행의 대응하는 빈 비트 위치에 재배치시키는 것을 특징으로 하는 프로세서.
- 컴퓨터 시스템에 사용하기 위한 장치에 있어서,데이타 요소들을 각각 포함하고 있는 제1 압축데이타와 제2 압축데이타를 내부에 저장하고 있는 기억 영역으로서, 상기 제1 압축데이타의 상기 데이타 요소들의 각각은 상기 제2 압축데이타내에 대응하는 데이타 요소를 가지고 있는 기억 영역; 및상기 기억 영역에 접속되고, 신호에 응답하여 동작하는 회로를 포함하고 있고,상기 회로는,복수의 데이터 세트로 분할되는 대응하는 중간 결과 데이타 요소를 발생하기 위해 상기 제1 압축데이타와 상기 제2 압축데이타의 상기 대응하는 데이타 요소들을 함께 승산하는 제1수단;상기 중간 결과 데이타 요소들의 합에 의한 복수의 결과 데이타 요소와, 상기 복수의 데이터 세트중의 제1 데이터 세트에 상기 복수의 결과 데이타 요소중의 제1 결과 데이타 요소와, 상기 복수의 데이터 세트중의 제2 데이터 세트에 상기 중간 결과 데이타 요소들의 합을 나타내는 상기 중간 결과 데이타 요소들의 합을 나타내는 상기 복수의 결과 데이타 요소중의 제2 결과 데이타 요소를 발생하는 제2수단; 및상기 복수의 결과 데이타 요소를 제3 압축데이타로서 상기 기억 영역에 저장하는 제3수단을 포함하고 있는 것을 특징으로 하는 장치.
- 제20항에 있어서, 상기 제1 압축데이타와 상기 제2 압축데이타의 각각은 적어도 4개의 데이타 요소를 포함하고 있고, 상기 복수의 데이터 세트의 각각은 적어도 2개의 중간 결과 데이타 요소를 포함하고 있는 것을 특징으로 하는 장치.
- 제20항에 있어서, 상기 합산은 포화로 수행되는 것을 특징으로 하는 장치.
- 제20항에 있어서, 상기 중간 결과 데이타 요소와 상기 복수의 결과 데이타 요소는 상기 압축데이타의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 장치.
- 명령들로 된 프로그램을 실행하는 데이타 처리 시스템에서, 복소수들을 승산하는 방법에 있어서,A) 승산-가산 명령인 제1명령을 수신하는 단계;B) 상기 제1명령에 응답하여:B1) 압축 데이타로서 저장된 8개의 데이타 요소를 판독하는 단계로서, 상기 8개의 데이타 요소로 된 제1 데이타 서브세트는 상기 복소수중 제1복소수의 각각의 성분의 2가지 표현을 포함하고 있고, 상기 8개의 데이타 요소로 된 제2 데이터 서브세트는 상기 복소수중 제2복소수의 각각의 성분의 2가지 표현을 포함하고 있으며, 상기 성분들의 각각의 표현은 상기 성분의 양수 또는 음수를 표현하는, 상기 단계; 및B2) 상기 제1 및 제2 데이터 서브세트를 사용하여 상기 제1 및 제2 복소수의 적을 나타내는, 결과적으로 얻어진 복소수를 발생하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제24항에 있어서, 상기 제1 데이터 서브세트의 제1 및 제3 데이타 요소의 각각은 상기 제1복소수의 실수 성분의 양수를 나타내고, 상기 제1 데이터 서브세트의 제2 및 제4 데이타 요소의 각각은 상기 제1복소수의 허수 성분의 양수를 나타내는 것을 특징으로 하는 방법.
- 제25항에 있어서, 상기 제2 데이터 서브세트의 제1 및 제4 데이타 요소의 각각은 상기 제2복소수의 실수 성분의 양수를 나타내고, 상기 제2서브세트의 제2 데이타 요소는 상기 제2복소수의 허수 성분의 음수를 나타내며, 상기 제2서브세트의 제3 데이타 요소는 상기 제2복소수의 허수 성분의 양수를 나타내는 것을 특징으로 하는 방법.
- 제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 중간 결과에 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제24항에 있어서, 상기 제1복소수를 나타내는 상기 8개의 데이타 요소는 제1 압축 데이타 항목에 저장되어 있고, 상기 제2복소수를 나타내는 상기 8개의 데이타 요소는 제2 압축 데이타 항목에 저장되어 있는 것을 특징으로 하는 방법.
- 제24항에 있어서, 결과적으로 얻어진 복소수를 발생하는 상기 단계는,상기 결과적으로 얻어진 복소수의 실수 및 허수 성분을 각각 나타내는 제1 및 제2 데이타 요소를 가지고 있는 제3 압축 데이타 항목으로서 상기 결과적으로 얻어진 복소수를 기록하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
- 제29항에 있어서, 상기 제1 및 제2 데이타 항목의 각각의 상기 데이타 요소는 N 비트를 포함하고 있고, 상기 제3 압축 데이타 항목의 각각의 상기 데이타 요소는 2N 비트를 포함하고 있는 것을 특징으로 하는 방법.
- 제29항에 있어서,C) 상기 제3 압축 데이타 항목을 기초로 제4 압축 데이타 항목을 발생하는 단계로서, 상기 제4 압축 데이타 항목은 제1 데이타 요소 쌍 및 제2 데이타 요소 쌍을 가지고 있고, 상기 제1 데이타 요소 쌍의 각각의 데이터 요소는 상기 결과적으로 얻어진 복소수의 실수 성분을 나타내며, 상기 제2 데이타 요소 쌍의 각각의 데이터 요소는 상기 결과적으로 얻어진 복소수의 허수 성분을 나타내는 것을 특징으로 하는 방법.
- 제24항에 있어서, 상기 결과적으로 얻어진 복소수의 실수 및 허수 성분을 압축 데이터가 누산되는 누산 압축 데이타 항목의 제1 및 제2 데이타 요소에 각각 가산하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
- 제32항에 있어서, 각각 가산하는 상기 단계는 다른 단일 명령에 응답하여 수행되는 것을 특징으로 하는 방법.
- 값을 승산 및 누산하는 방법에 있어서,제1 단일 승산-가산 명령에 응답하여 데이타 요소(A0,A1,A2,A3)를 가지고 있는 제1 압축 피연산자 및 데이타 요소(B0,B1,B2,B3)를 가지고 있는 제2 압축 피연산자를 식별하고, (A0*B0)+(A1*B1)를 나타내는 제1 데이타 요소와 (A2*B2)+(A3*B3)를 나타내는 제2 데이타 요소를 가지고 있는 제3 압축 데이타를 발생하는 단계; 및상기 제3 압축 데이타를 누산값에 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제34항에 있어서, 상기 제3 압축 데이타의 상기 제1 및 제2 데이타 요소는 상기 제1 및 제2 압축 피연산자의 상기 데이타 요소에 비해 2배의 비트를 포함하고 있는 것을 특징으로 하는 방법.
- 제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 데이타 요소들을 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제34항에 있어서, 상기 제3 압축데이타를 누산값에 가산하는 상기 단계는,상기 제1 데이타 요소들을 가산하는 상기 단계의 결과와 상기 제2데이타 요소들을 가산하는 상기 단계의 결과를 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제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 압축 데이타의 데이타 요소들을 가산하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
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)
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)
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 |
-
1995
- 1995-08-31 US US08/522,067 patent/US6385634B1/en not_active Expired - Lifetime
-
1996
- 1996-02-23 US US08/606,212 patent/US6035316A/en not_active Expired - Lifetime
- 1996-08-07 CN CNB2006100025714A patent/CN100461093C/zh not_active Expired - Lifetime
- 1996-08-07 KR KR1019980701542A patent/KR100329339B1/ko not_active IP Right Cessation
-
1997
- 1997-10-29 US US08/960,413 patent/US5983256A/en not_active Expired - Lifetime
-
2001
- 2001-11-19 US US09/989,736 patent/US7424505B2/en not_active Expired - Fee Related
-
2004
- 2004-06-04 US US10/861,167 patent/US7509367B2/en not_active Expired - Fee Related
-
2005
- 2005-05-24 HK HK05104364.5A patent/HK1072989A1/xx not_active IP Right Cessation
-
2009
- 2009-03-23 US US12/409,275 patent/US8185571B2/en not_active Expired - Fee Related
-
2011
- 2011-07-01 US US13/175,373 patent/US8626814B2/en not_active Expired - Fee Related
-
2012
- 2012-04-26 US US13/456,761 patent/US8725787B2/en not_active Expired - Fee Related
- 2012-09-04 US US13/603,370 patent/US8396915B2/en not_active Expired - Fee Related
- 2012-10-01 US US13/633,086 patent/US8495123B2/en not_active Expired - Fee Related
-
2013
- 2013-03-13 US US13/801,356 patent/US8793299B2/en not_active Expired - Fee Related
- 2013-03-13 US US13/801,335 patent/US8745119B2/en not_active Expired - Fee Related
- 2013-05-30 US US13/906,248 patent/US20130262836A1/en not_active Abandoned
- 2013-05-30 US US13/906,240 patent/US20130262547A1/en not_active Abandoned
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 |