KR20150132287A - 멀티-모드 래딕스-2x 버터플라이 벡터 프로세싱 회로들, 및 연관된 벡터 프로세서들을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들, 시스템들, 및 방법들 - Google Patents
멀티-모드 래딕스-2x 버터플라이 벡터 프로세싱 회로들, 및 연관된 벡터 프로세서들을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들, 시스템들, 및 방법들 Download PDFInfo
- Publication number
- KR20150132287A KR20150132287A KR1020157028376A KR20157028376A KR20150132287A KR 20150132287 A KR20150132287 A KR 20150132287A KR 1020157028376 A KR1020157028376 A KR 1020157028376A KR 20157028376 A KR20157028376 A KR 20157028376A KR 20150132287 A KR20150132287 A KR 20150132287A
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- radix
- accumulator
- input
- output
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 753
- 238000012545 processing Methods 0.000 title claims abstract description 249
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000001186 cumulative effect Effects 0.000 claims description 84
- 238000009825 accumulation Methods 0.000 claims description 56
- 230000035508 accumulation Effects 0.000 description 55
- 238000010586 diagram Methods 0.000 description 31
- 230000015654 memory Effects 0.000 description 30
- 230000006870 function Effects 0.000 description 14
- 238000007792 addition Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000003775 Density Functional Theory Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 235000014121 butter Nutrition 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010183 spectrum analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Computer Hardware Design (AREA)
Abstract
멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로를 제공하기 위해, 벡터 프로세싱 엔진들(VPE들)은 프로그램 가능한 데이터 경로 구성들을 가진다. 연관된 벡터 프로세서들, 시스템들, 및 방법들 또는 개시된다. 여기에 개시된 VPE들은 복수의 벡터 프로세싱 스테이지들을 포함하며, 각 벡터 프로세싱 스테이지는 빠른 푸리에 변환(FET) 벡터 프로세싱 동작들을 효율적으로 수행하기 위해 래딕스-2X 버터플라이 벡터 동작들을 수행하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 블록들을 가진다. 벡터 프로세싱 블록들의 데이터 경로 구성들은 래딕스-2X 버터플라이 벡터 동작들의 상이한 유형들 뿐만 아니라 다른 산술적 로직 벡터 동작들을 제공하도록 프로그램될 수 있다. 결과적으로, 더 적은 VPE들이 바람직한 래딕스-2X 버터플라이 벡터 동작들 및 벡터 프로세서 내의 산술적 로직 벡터 동작들의 다른 유형들을 제공할 수 있고, 따라서 벡터 프로세서 내의 영역을 절약할 수 있는 반면, 스칼라 프로세싱 엔진들에 비해 더 적은 레지스터 기록들 및 더 빠른 벡터 명령 실행 회수들의 벡터 프로세싱 이점들을 여전히 유지한다.
Description
[0001] 본 출원은 또한 발명의 명칭이 “캐리 전파를 줄이기 위해 리던던트 캐리-저장 포맷을 채용한 벡터 프로세싱 캐리-저장 누적기들과 이에 연관된 벡터 프로세서들, 시스템들, 및 방법들”이고, 2013년 3월 13일에 제출된 미국 특허 출원 제13/798,618호(퀄컴 사건표 123248호)와 연관되며, 상기 미국 특허출원은 인용에 의해 그 전체가 본 명세서에 포함된다.
[0002] 본 출원은 발명의 명칭이 “멀티-모드 벡터 프로세싱을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들과 이에 연관된 벡터 프로세서들, 시스템들, 및 방법들”이고, 2013년 3월 13일에 출원된 미국 특허 출원 제13/798,641호(퀄컴 사건표 123249호)와 연관되며, 상기 미국 특허출원은 인용에 의해 그 전체가 본 명세서에 포함된다.
[0003] 본 개시물의 분야는, 단일 명령, 다중 데이터(SIMD) 프로세서들 및 다중 명령, 다중 데이터(MIMD) 프로세서들을 포함하는 벡터 및 스칼라 연산들을 프로세싱하기 위한 벡터 프로세서들 및 연관된 시스템들에 관한 것이다.
[0004] 무선 컴퓨팅 시스템들은 빠르게 디지털 정보 영역에서 가장 유행하는 기술들 중 하나가 되고 있다. 기술에서의 진보들은 더 작고 더 강력한 무선 통신 디바이스들로 귀결된다. 예를 들어, 무선 컴퓨팅 디바이스들은 일반적으로 작고, 가볍고 그리고 사용자에 의해 쉽게 운반되는 휴대용 무선 전화들, 개인 디지털 보조 어시스턴트들(PDAs), 및 페이징 디바이스들을 포함한다. 보다 특별히, 셀룰러 전화들 및 인터넷 프로토콜(IP) 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 통신할 수 있다. 게다가, 많은 그러한 무선 통신들 디바이스들은 다른 유형들의 디바이스들을 포함한다. 예를 들어, 무선 전화들은 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더, 및/또는 오디오 파일 플레이어를 포함할 수 있다. 또한, 무선 전화들은 인터넷에 접속하도록 사용될 수 있는 웹 인터페이스를 포함할 수 있다. 게다가, 무선 통신 디바이스들은 설계된 무선 통신 기술 기준들(예를 들면, 코드 분할 다중 접속(CDMA), 광대역 CDMA(WCDMA), 및 롱 텀 에볼루션(LTE))에 따라 고속 무선 통신 데이터를 프로세싱하기 위한 복소 프로세싱 자원들을 포함할 수 있다. 그러한 것으로서, 이러한 무선 통신들 디바이스들은 상당한 컴퓨팅 능력들을 포함한다.
[0005] 무선 컴퓨팅 디바이스들이 더 작아지고 더 강력해짐에 따라, 그들은 점점 제약된 자원이 된다. 예를 들어, 스크린 크기, 이용가능한 메모리 및 파일 시스템 공간의 양, 및 입력 및 출력 능력들의 양은 디바이스의 작은 크기에 의해 제한될 수 있다. 게다가, 배터리 용량, 배터리에 의해 제공되는 전력의 양, 및 배터리의 수명 또한 제한된다. 디바이스의 배터리 수명을 증가시키는 한가지 방법은 파워를 덜 소비하는 프로세서들을 디자인하는 것이다.
[0006] 이와 관련하여, 베이스밴드(baseband) 프로세서들이 벡터 프로세서들을 포함하는 무선 통신들 디바이스들에 dl용될 수 있다. 벡터 프로세서들은 벡터들, 즉, 데이터의 어레이들, 상에서 동작하는 고-레벨 동작들을 제공하는 벡터 구조를 가진다. 데이터의 하나의 세트 상에서 벡터 명령을 실행하고 그 다음으로 벡터 내에서 후속 요소들에 대한 벡터 명령을 다시 페칭(re-fetching)하고 디코딩하는 것과 반대로, 벡터 프로세싱은 데이터 요소들의 전체 어레이에 걸쳐 한번 벡터 명령을 페칭(fetching)하는 것과 그 다음으로 벡터 명령을 여러 번 실행하는 것을 수반한다. 다른 팩터들 중 각각의 벡터 명령은 더 적은 회수로 페칭되는 것을 필요로 하기 때문에, 이러한 프로세스는 프로그램을 실행하는데 필요한 에너지가 감소되는 것을 허용한다. 벡터 명령들은 긴 벡터들 상에서 동일한 시간에 다중 클럭 싸이클들에 걸쳐 동작하기 때문에, 높은 병렬도(degree of parallelism)가 간단한 순차 벡터 명령 디스패치로 달성될 수 있다.
[0007] 도 1은 무선 컴퓨터 디바이스와 같은 컴퓨팅 디바이스에 적용될 수 있는 예시적인 베이스밴드 프로세서(10)를 도시한다. 베이스밴드 프로세서(10)는, 각각이 특정 적용들에 대한 기능-특정 벡터 프로세싱을 제공하는 것에 전용되는 다중 프로세싱 엔진들(PEs)(12)를 포함한다. 이 예에서, 여섯개의 분리된 PE들(12(0)-12(5))이 베이스밴드 프로세서(10) 내에 제공된다. PE들(12(0)-12(5)) 각각은 공유된 메모리(16)로부터 PE들 (12(0)-12(5))까지 제공된 고정 X-비트 너비의 벡터 데이터에 대해 벡터 프로세싱을 제공하도록 구성된다. 예를 들어, 벡터 데이터(14)는 512비트들의 너비일 수 있다. 벡터 데이터(14)는 X-비트 폭 벡터 데이터 샘플 세트들(18(0)-18(Y))(예를 들면, 16-비트 및 32-비트 샘플 세트들)의 더 작은 배수들로 정의될 수 있다. 이러한 방식으로, 높은 병렬도를 달성하기 위해, PE들(12(0)-12(5))은 PE들(12(0)-12(5))에 병렬로 제공된 다중 벡터 데이터 샘플 세트들 상에 벡터 프로세싱을 제공할 수 있다. 각각의 PE(12(0)-12(5))는 벡터 데이터(14) 상에서 프로세싱된 벡터 명령의 결과들을 저장하기 위해 벡터 레지스터 파일(VR)을 포함할 수 있다.
[0008] 도 1의 베이스밴드 프로세서(10) 내의 각각의 PE(12(0)-12(5))는 특정한, 전용되는 회로 및 고정된 동작들의 특정 유형들을 효율적으로 수행하도록 디자인된 하드웨어를 포함한다. 예를 들어, WCDMA 및 LTE는 전문화된 동작들의 상이한 유형들을 수반하기 때문에, 도 1의 베이스밴드 프로세서(10)는 분리된 광밴드 코드 분할 다중 접속(WCDMA) PE들(12(0), 12(1)) 및 롱텀 에볼루션(LTE) PE들(12(4), 12(5))을 포함한다. 따라서, 분리된 WCDMA-특정 PE들(12(0), 12(1)) 및 LTE-특정 PE들(12(4), 12(5))을 제공함으로써, PE들(12(0), 12(1), 12(4), 12(5)) 각각은 매우 효율적인 동작을 위해 WCDMA 및 LTE에 대해 빈번하게 수행되는 기능들에 특화된 전문적이고, 전용된 회로를 포함하도록 디자인될 수 있다. 이러한 디자인은 더 일반적인 회로 및 관련없는 동작들의 더 큰 개수를 지지하도록 유연하게 디자인된 하드웨어를 포함하는 스칼라 프로세싱 엔진들과 상반되나, 덜 효율적인 방식이다.
[0009] 벡터 누적 동작들은 일반적으로 PE들에서 수행된다. 이와 관련하여, PE들은 각각이 효율적인 프로세싱을 위해 특정 벡터 누적 동작들을 지지하는 전문화된 회로 및 하드웨어를 가지는 기능-특정 누적기 구조들을 포함한다. 벡터 누적 동작들을 이용하는 PE들에 의해 지지되는 공통 벡터 동작들의 예들은, 예들로서, 필터링하는 동작들, 상관(correlation) 동작들, 및 무선 통신들 알고리즘들에 대해 빠른 푸리에 변환(FFT) 벡터 프로세싱 동작들을 수행하는데 공통적으로 사용되는 래딕스-2X(예를 들면, 래딕스-2 및 래딕스-4) 버터플라이 동작들을 포함한다. PE들에 기능-특정 누적기 구조들을 제공하는 것은 자주 실행된, 전문화된 누적 동작들에 대한 이점이 있다. 그러나, PE들 내에 제공된 분리된 기능-특정 누적기 구조들 각각은 전문화된 회로 및 메모리들을 포함하기 때문에, PE들 내에 기능-특정 누적기 구조들을 제공하는 것은 베이스밴드 프로세서에 대해 요구되는 영역과 전력을 증가시킬 수 있다.
[0010] 여기 개시된 실시예들은 멀티-모드 래딕스(radix)-2X 버터플라이 벡터 프로세싱 회로들을 제공하기 위해 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들(VPE들)을 포함한다. 연관된 벡터 프로세서들, 시스템들, 및 방법들 역시 개시된다. 여기 개시된 VPE들은 복수의 벡터 프로세싱 스테이지들 ― 각각의 벡터 프로세싱 스테이지는, 빠른 푸리에 변환들(FFT) 벡터 프로세싱을 효율적으로 수행하는 래딕스-2X 버터플라이 벡터 동작들을 수행하기 위해 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 블록들을 포함함 ― 을 포함한다. 벡터 프로세싱 블록들의 데이터 경로 구성들은 래딕스-2X 버터플라이 벡터 동작들의 상이한 유형뿐만 아니라 다른 산술 로직 벡터 동작들을 제공하도록 프로그램될 수 있다. 결과적으로, 더 적은 VPE들이 바람직한 래딕스-2X 버터플라이 벡터 동작들 및 산술 로직 벡터 동작들의 다른 유형들을 벡터 프로세서에 제공할 수 있고, 따라서 벡터 프로세서 내의 영역을 절약하는 반면, 스칼라 프로세싱 엔진들에 비해 더 적은 레지스터 기록들 및 더 빠른 벡터 명령 실행 회수들의 벡터 프로세싱 이점들을 여전히 보유한다.
[0011] 이와 관련하여, 여기에 개시된 어떤 실시예들에서, VPE 내의 벡터 프로세싱 스테이지 내에 프로그램 가능한 데이터 경로 구성들을 가지는 복수의 곱셈기mpultipier) 블록들이 제공된다. 복수의 곱셈기 블록들은 VPE 내의 다른 벡터 프로세싱 스테이지 내에 제공된 프로그램 가능한 데이터 경로 구성들을 가지는 복수의 누적기 블록들과 융합된다. 각각의 곱셈기 블록의 데이터 경로들은 실행될 특정 래딕스-2X 버터플라이 벡터 명령에 따라 래딕스-2X 버터플라이 벡터 동작의 포인트에 대한 곱셈(multiplication)을 제공하도록 프로그램될 수 있다. 각각의 누적기 블록의 데이터 경로들은 실행될 래딕스-2X 버터플라이 벡터 명령에 따라 복수의 곱셈기 블록들 중 하나의 곱셈기 블록으로부터 래딕스-2X 버터플라이 곱셈 물건들을 누적시키도록 프로그램될 수 있다. 누적기 블록들의 데이터 경로 구성들 역시 실행될 래딕스-2X 버터플라이 벡터 명령에 따라 복수의 곱셈기 블록들 중 다른 곱셈기 블록들로부터의 래딕스-2X 버터플라이 곱셈 물건들을 축적하도록 다른 싸이클들에서 재프로그램될 수 있다. 누적기 블록들에 의해 누적된 마지막 누적된 래딕스-2X 버터플라이 곱셈 물건들은 FFT 벡터 프로세싱 동작의 N 포인트들을 제공할 수 있다.
[0012] 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱을 제공하기 위해 프로그램 가능한 데이터 경로 구성들을 가지는 VPE들은 오직, 고정된 기능들을 제공하는 고정된 데이터 경로 구성들을 포함하는 VPE들과 구분된다. 여기에 개시된 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 VPE들은 또한, 예를 들어 디지털 단일 프로세서들(DSP들)에 제공된 것들과 같은, 스칼라 프로세싱 엔진들과 구분된다. 스칼라 프로세싱 엔진들은 비-고정된 기능들의 상이한 유형들을 수행하기 위해 유연한 공통 회로 및 로직을 이용하나, 스칼라 프로세싱 엔진들은 또한 벡터 명령 실행 동안의 중간의 결과들을 레지스터 파일들에 기록하며 그것에 의해 추가적인 전력을 소비하고, 벡터 명령 실행 회수를 증가시킨다.
[0013] 이와 관련하여 하나의 실시예에서, 적어도 하나의 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로를 제공하도록 구성된 VPE가 제공된다. VPE는 적어도 하나의 곱셈기 블록을 포함하는 적어도 하나의 곱 벡터 프로세싱 스테이지를 포함한다. 각각의 곱셈기 블록은 복수의 입력 데이터 경로들 중 하나의 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 래딕스 벡터 데이터 입력 샘플 세트를 수신하도록 구성된다. 적어도 하나의 곱 벡터 프로세싱 스테이지에 의해 실행되는 래딕스 버터플라이 벡터 명령에 따라, 프로그램 가능한 곱 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 내에 래딕스 벡터 데이터 출력 샘플 세트를 제공하기 위해, 각각의 곱셈기 블록은 또한 트위들 팩터 구성요소와 래딕스 벡터 데이터 입력 샘플 세트를 곱하도록 구성된다. VPE는 또한 복수의 누적기 블록들을 포함하는 적어도 하나의 누적 벡터 프로세싱 스테이지를 포함한다. 복수의 누적기 블록 중 각각의 누적기 블록은 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 중 곱 출력 데이터 경로로부터의 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하도록 구성된다. 복수의 누적기 블록들 중 각각의 누적기 블록은 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 결과 샘플 세트가 누적된 래딕스 벡터를 제공하기 위해 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하도록 더 구성된다. 복수의 누적기 블록들 중 각각의 누적기 블록은 복수의 출력 데이터 경로들 중 출력 데이터 경로 내에 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 더 구성된다. VPE는 또한 복수의 누적기 블록들 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하도록 구성된 출력 프로세싱 스테이지를 구성한다.
[0014] 다른 실시예에서, 적어도 하나의 멀티-모드 래딕스-2X 버터플아이 벡터 프로세싱 회로를 제공하도록 구성된 VPE가 제공된다. VPE는 적어도 하나의 곱셈기 블록 수단을 포함하는 적어도 하나의 곱 벡터 프로세싱 스테이지 수단을 포함한다. 각각의 곱셈기 블록 수단은 복수의 입력 데이터 경로들 중 하나의 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 래딕스 벡터 데이터 입력 샘플 세트를 수신하도록 구성된다. 각각의 곱셈기 블록 수단은 또한 적어도 하나의 곱 벡터 프로세싱 스테이지 수단에 의해 실행된 래딕스 버터플라이 벡터 명령에 따라, 프로그램 가능한 곱 데이터 경로 구성에 기초하는 복수의 곱 출력 데이터 경로들 내에 래딕스 벡터 곱 출력 샘플 세트를 제공하기 위해 트위들 팩터 구성요소와 래딕스 벡터 데이터 입력 샘플 세트를 곱하도록 구성된다. VPE는 또한 복수의 누적기 블록 수단을 포함하는 적어도 하나의 누적 벡터 프로세싱 스테이지 수단을 포함한다. 복수의 누적기 블록 수단 중 각각의 누적기 블록 수단은 프로그램 가능한 누적기 데이터 경로 구성에 기초하는 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하도록 구성된다. 복수의 누적기 블록 수단 중 각각의 누적기 블록 수단은 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하기 위해 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하도록 더 구성된다. 복수의 누적기 블록 수단 중 각각의 누적기 블록 수단은, 복수의 출력 데이터 경로들 중 하나의 출력 데이터 경로에 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 추가로 구성된다. VPE는 또한 복수의 누적기 블록들 중 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하도록 구성된 출력 프로세싱 스테이지 수단을 포함한다.
[0015] 다른 실시예들에서, 벡터 프로세싱 엔진(VPE) 내에서 프로세싱하는 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로 내에서 래딕스-2X 벡터 데이터를 프로세싱하는 방법이 제공된다. 방법은 적어도 하나의 곱 벡터 프로세싱 스테이지 내의 적어도 하나의 곱셈기 블록에서의 복수의 입력 데이터 경로들 중 하나의 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 래딕스 벡터 데이터 입력 샘플 세트를 수신하는 단계를 포함한다. 방법은 또한 적어도 하나의 곱 벡터 프로세싱 스테이지에 의해 실행된 래딕스 버터플라이 벡터 명령에 따라, 프로그램 가능한 곱 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 내에 래딕스 벡터 곱 출력 샘플 세트를 제공하도록, 적어도 하나의 곱셈기 블록에서 래딕스 벡터 데이터 입력 샘플 세트를 트윈들 팩터 구성요소와 곱하는 단계를 포함한다. 방법은 또한 적어도 하나의 누적 벡터 프로세싱 스테이지 내의 복수의 누적기 블록들 중 누적기 블록 내의 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 상기 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하는 단계를 포함한다. 방법은 또한 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하기 위해 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하는 단계를 포함한다. 방법은 또한 복수의 출력 데이터 경로들 중 하나의 출력 데이터 경로에 래딕스 벡터 누적된 결과 샘플 세트를 제공하는 단계를 포함한다. 방법은 또한 출력 프로세싱 스테이지 내에서, 복수의 누적기 블록들 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하는 단계를 포함한다.
[0016] 다른 실시예에서, 벡터 프로세서가 제공된다. 벡터 프로세서는 벡터 데이터 메모리로부터 래딕스 벡터 데이터 입력 샘플 세트를 수신하도록 구성된 적어도 하나의 벡터 레지스터를 포함한다. 벡터 프로세서는 또한 래딕스 벡터 결과 출력 샘플 세트를 저장하도록 구성된 적어도 하나의 벡터 결과 레지스터를 포함한다. 벡터 프로세서는 또한 VPE를 포함한다. VPE는 적어도 하나의 곱 벡터 프로세싱 스테이지를 구성한다. 곱 벡터 프로세싱 스테이지는 적어도 하나의 곱 벡터 프로세싱 스테이지 내에서 적어도 하나의 곱셈기 블록 내의 복수의 입력 데이터 경로들 중 하나의 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 래딕스 벡터 데이터 입력 샘플 세트를 수신하도록 구성된다. 적어도 하나의 곱셈기 블록 내에서 래딕스 벡터 데이터 입력 샘플 세트와 적어도 하나의 곱 벡터 프로세싱 스테이지에 의해 실행되는 래딕스 버터플라이 벡터 명령에 따라 프로그램 가능한 곱 데이터 경로 구성에 기초하는 복수의 곱 출력 데이터 경로들 내에서 래딕스 벡터 곱 출력 샘플 세트를 제공하기 위해 곱 벡터 프로세싱 스테지들은 또한 트위들 팩터 구성요소를 곱하도록 구성된다. VPE는 또한 적어도 하나의 누적 벡터 프로세싱 스테이지를 포함한다. 누적 벡터 프로세싱 스테이지는 적어도 하나의 누적 벡터 프로세싱 스테이지 내의 복수의 누적기 블록들 중 각각의 누적기 블록 내의 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하도록 구성된다. 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하기 위해, 누적 벡터 프로세싱 스테이지는 또한 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 적어도 하나의 누적기 블록 내에 누적하도록 구성된다. 누적 벡터 프로세싱 스테이지는 또한 복수의 출력 데이터 경로들 중 하나의 출력 데이터에 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 구성된다. VPE는 또한 복수의 누적기 블록들 중 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하도록 구성된 출력 프로세싱 스테이지를 포함한다.
[0017] 도 1은 다중 벡터 프로세싱 엔진들(VPEs) ― 다중 벡터 프로세싱 엔진들 각각은 특정 적용들에 대한 기능-특정 벡터 프로세싱을 제공하도록 전용됨 ― 을 포함하는 예시적인 벡터 프로세서의 개략도이다.
[0018] 도 2는 별도의 VPEs를 제공할 필요 없이, VPE에 제공된 공통 회로 및 하드웨어가 다수의 적용들 또는 기술들에 대한 매우 효율적인 방식에서의 벡터 동작들의 특정 유형들을 수행하도록 다수의 모드들에서 프로그램될 수 있기 때문에, 프로그램 가능한 데이터 경로 구성들을 갖는 일반적인 VPE를 포함하는 예시적인 벡터 프로세서의 개략도이다.
[0019] 도 3은 도 2의 VPE ― 벡터 프로세싱 스테이지들 중 어떤 것은 프로그램 가능한 데이터 경로 구성들을 갖는 예시적 벡터 프로세싱 블록들을 포함함 ― 에서 제공된 예시적 벡터 프로세싱 스테이지들의 개략도이다.
[0020] 도 4A는 도 2 및 도 3의 예시적인 벡터 프로세서 내에 포함된 프로그램 가능한 데이터 경로 구성들을 가지는 적어도 하나의 벡터 프로세싱 블록의 예시적인 벡터 프로세싱을 도시하는 흐름도이다.
[0021] 도 4B는 곱셈기 블록들 및 누적기 블록들의 예시적인 벡터 프로세싱을 도시한 흐름도이며, 누적기 블록들 각각은 프로그램 가능한 데이터 경로 구성들을 가지며, 도 2 및 도 3의 예시적인 벡터 프로세서 내의 상이한 벡터 프로세싱 스테이지들에서 제공된다.
[0022] 도 5는 도 2 및 도 3의 VPE의 벡터 프로세싱 스테이지에서 제공된 복수의 곱셈기 블록들의 더 자세한 개략도이며, 복수의 곱셈기 블록들 각각은 프로그램 가능한 데이터 경로 구성들을 가지므로, 복수의 곱셈기 블록들은 벡터 곱 동작들의 특정의, 상이한 유형들을 수행하도록 다중 모드들에서 프로그램될 수 있다.
[0023] 도 6은 도 5에서의 복수의 곱셈기 블록들 중 하나의 곱셈기 블록의 내부 구성요소들의 개략도이며, 복수의 곱셈기 블록은 8-비트 벡터 데이터 입력 샘플 세트들에 의한 8-비트 및 16-비트 벡터 데이터 입력 샘플 세트들에 의한 16-비트에 대해 곱 동작들을 제공하도록 프로그램될 수 있는 프로그램 가능한 데이터 경로들 구조들을 가진다.
[0024] 도 7은 도 2 및 도 3의 VPE에서의 곱셈기 블록 및 누적기 블록의 일반화된 개략도이며, 누적기 블록은 캐리 전파를 줄이기 위해 리던던트(redundant) 캐리-저장 포맷을 사용하는 캐리-저장 누적기 구조를 사용한다.
[0025] 도 8은 도 2 및 도 3의 VPE에서 제공되는 도 7의 누적기 블록의 예시적인 내부 구성요소들의 자세한 개략도이며, 누적기 블록은 프로그램 가능한 데이터 경로 구성들을 가지므로, 누적기 블록은 리던던트 캐리-저장 포맷을 가지는 벡터 누적 동작들의 특정의, 상이한 유형들을 수행하도록 다중 모드들에서 프로그램될 수 있다.
[0026] 도 9A는 이중 24-비트 누적기 모드를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0027] 도 9B는 단일40-비트 누적기 모드를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0028] 도 9C는 단일 24-비트 누적기 모드에 의해 따르는 16-비트 캐리-저장 덧셈기를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0029] 도 10은 래딕스-4 버터플라이 벡터 동작의 각각의 싸이클을 수행하도록 구성된 래딕스 버터플라이 회로를 구성하도록 도 2 및 도 3의 VPE에서의 리던던트 캐리-저장 포맷 내에서 4개의 누적기들과 융합되도록 프로그램된 데이터 경로 구성들을 가지는 곱셈기의 개념적인 개략도이다.
[0030] 도 11은 래딕스-2 또는 래딕스-4 버터플라이 벡터 동작을 수행하도록 구성된 도 10의 래딕스 버터플라이 회로의 하나의 싸이클의 개략도이다.
[0031] 도 12는 프로그램 가능한 데이터 경로 구성들을 가지는 VPE를 포함하는 벡터 프로세서를 포함할 수 있는 예시적인 프로세서-기초 시스템의 블록도이고, VPE내의 공통 회로 및 하드웨어는 여기에 개시된 실시예들에 따라, 분리된 VPE들을 제공할 필요 없이, 다중의 적용들 또는 기술들에 대한 고효율적인 방식으로 벡터 동작들의 특정 유형들을 수행하도록 디자인된 전용 회로로서 행동하도록 프로그램될 수 있다.
[0018] 도 2는 별도의 VPEs를 제공할 필요 없이, VPE에 제공된 공통 회로 및 하드웨어가 다수의 적용들 또는 기술들에 대한 매우 효율적인 방식에서의 벡터 동작들의 특정 유형들을 수행하도록 다수의 모드들에서 프로그램될 수 있기 때문에, 프로그램 가능한 데이터 경로 구성들을 갖는 일반적인 VPE를 포함하는 예시적인 벡터 프로세서의 개략도이다.
[0019] 도 3은 도 2의 VPE ― 벡터 프로세싱 스테이지들 중 어떤 것은 프로그램 가능한 데이터 경로 구성들을 갖는 예시적 벡터 프로세싱 블록들을 포함함 ― 에서 제공된 예시적 벡터 프로세싱 스테이지들의 개략도이다.
[0020] 도 4A는 도 2 및 도 3의 예시적인 벡터 프로세서 내에 포함된 프로그램 가능한 데이터 경로 구성들을 가지는 적어도 하나의 벡터 프로세싱 블록의 예시적인 벡터 프로세싱을 도시하는 흐름도이다.
[0021] 도 4B는 곱셈기 블록들 및 누적기 블록들의 예시적인 벡터 프로세싱을 도시한 흐름도이며, 누적기 블록들 각각은 프로그램 가능한 데이터 경로 구성들을 가지며, 도 2 및 도 3의 예시적인 벡터 프로세서 내의 상이한 벡터 프로세싱 스테이지들에서 제공된다.
[0022] 도 5는 도 2 및 도 3의 VPE의 벡터 프로세싱 스테이지에서 제공된 복수의 곱셈기 블록들의 더 자세한 개략도이며, 복수의 곱셈기 블록들 각각은 프로그램 가능한 데이터 경로 구성들을 가지므로, 복수의 곱셈기 블록들은 벡터 곱 동작들의 특정의, 상이한 유형들을 수행하도록 다중 모드들에서 프로그램될 수 있다.
[0023] 도 6은 도 5에서의 복수의 곱셈기 블록들 중 하나의 곱셈기 블록의 내부 구성요소들의 개략도이며, 복수의 곱셈기 블록은 8-비트 벡터 데이터 입력 샘플 세트들에 의한 8-비트 및 16-비트 벡터 데이터 입력 샘플 세트들에 의한 16-비트에 대해 곱 동작들을 제공하도록 프로그램될 수 있는 프로그램 가능한 데이터 경로들 구조들을 가진다.
[0024] 도 7은 도 2 및 도 3의 VPE에서의 곱셈기 블록 및 누적기 블록의 일반화된 개략도이며, 누적기 블록은 캐리 전파를 줄이기 위해 리던던트(redundant) 캐리-저장 포맷을 사용하는 캐리-저장 누적기 구조를 사용한다.
[0025] 도 8은 도 2 및 도 3의 VPE에서 제공되는 도 7의 누적기 블록의 예시적인 내부 구성요소들의 자세한 개략도이며, 누적기 블록은 프로그램 가능한 데이터 경로 구성들을 가지므로, 누적기 블록은 리던던트 캐리-저장 포맷을 가지는 벡터 누적 동작들의 특정의, 상이한 유형들을 수행하도록 다중 모드들에서 프로그램될 수 있다.
[0026] 도 9A는 이중 24-비트 누적기 모드를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0027] 도 9B는 단일40-비트 누적기 모드를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0028] 도 9C는 단일 24-비트 누적기 모드에 의해 따르는 16-비트 캐리-저장 덧셈기를 제공하기 위해 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록의 개략도이다.
[0029] 도 10은 래딕스-4 버터플라이 벡터 동작의 각각의 싸이클을 수행하도록 구성된 래딕스 버터플라이 회로를 구성하도록 도 2 및 도 3의 VPE에서의 리던던트 캐리-저장 포맷 내에서 4개의 누적기들과 융합되도록 프로그램된 데이터 경로 구성들을 가지는 곱셈기의 개념적인 개략도이다.
[0030] 도 11은 래딕스-2 또는 래딕스-4 버터플라이 벡터 동작을 수행하도록 구성된 도 10의 래딕스 버터플라이 회로의 하나의 싸이클의 개략도이다.
[0031] 도 12는 프로그램 가능한 데이터 경로 구성들을 가지는 VPE를 포함하는 벡터 프로세서를 포함할 수 있는 예시적인 프로세서-기초 시스템의 블록도이고, VPE내의 공통 회로 및 하드웨어는 여기에 개시된 실시예들에 따라, 분리된 VPE들을 제공할 필요 없이, 다중의 적용들 또는 기술들에 대한 고효율적인 방식으로 벡터 동작들의 특정 유형들을 수행하도록 디자인된 전용 회로로서 행동하도록 프로그램될 수 있다.
[0032] 이제 도면들을 참조하면, 본 발명의 몇가지 예시적인 실시예들이 설명된다. 단어 “예시적인”은 여기에서, “예, 예시, 또는 실례로서 제공되는 것”을 의미하도록 사용된다. 여기에 “예시적인”으로 설명된 임의의 실시예는 다른 실시예들에 비해 선호되거나 유리한 것으로 이해될 필요가 없다.
[0033] 여기에 개시된 실시예들은 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들(VPE들)를 포함한다. 연관된 벡터 프로세서들, 시스템들, 및 방법들 역시 개시된다. 여기에 개시된 VPE들은 복수의 벡터 프로세싱 스테이지들을 포함하며, 각각의 벡터 프로세싱 스테이지는 빠른 푸리에 변환들(FFT) 벡터 프로세싱 동작들을 효율적으로 수행하도록 래딕스-2X 버터플라이 벡터 동작들을 수행하기 위해 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 블록들을 가진다. 벡터 프로세싱 블록들의 데이터 경로 구성들은 래딕스-2X 버터플라이 벡터 동작들뿐만 아니라 다른 산술 로직 벡터 동작들의 상이한 유형들을 제공하도록 프로그램될 수 있다. 결과적으로, 더 적은 VPE들은 벡터 프로세서 내에 바람직한 래딕스-2X 버터플라이 벡터 동작들 및 산술 로직 벡터 동작들의 다른 유형들을 제공할 수 있고, 따라서, 벡터 프로세서 내의 영역을 절약하는 반면, 스칼라 프로세싱 엔진들에 비해 더 적은 레지스터 기록들 및 더 빠른 벡터 명령 실행 회수들의 벡터 프로세싱 이점들을 여전히 보유한다.
[0034] 이와 관련하여, 여기에 개시된 어떤 실시예들에서, VPE내의 벡터 프로세싱 스테이지 내에 프로그램 가능한 데이터 경로 구성들을 가지는 복수의 곱셈기 블록들이 제공된다. 복수의 곱셈기 블록들은 VPE 내의 다른 벡터 프로세싱 스테이지 내에 제공된 프로그램 가능한 데이터 경로 구성들을 가지는 복수의 누적기 블록들과 융합된다. 각각의 곱셈기 블록의 데이터 경로들은 실행될 특정 래딕스-2X 버터플라이 벡터 명령에 따라, 래딕스-2X 버터플라이 벡터 동작의 포인트에 대해 곱셈mpultiplication)을 제공하도록 프로그램될 수 있다. 각각의 누적기 블록의 데이터 경로들은 실행될 래딕스-2X 버터플라이 벡터 명령에 따라, 복수의 곱셈기 블록들 중 하나의 곱셈기 블록으로부터 래딕스-2X 버터플라이 곱셈 물건들을 누적시키도록 프로그램될 수 있다. 누적기 블록들의 데이터 경로 구성들 역시 실행될 래딕스-2X 버터플라이 벡터 명령에 따라 복수의 곱셈기 블록들 중 다른 곱셈기 블록들로부터의 래딕스-2X 버터플라이 곱셈 물건들을 축적하도록 다른 싸이클들에서 재프로그램될 수 있다. 누적기 블록들로부터 누적된 마지막으로 누적된 래딕스-2X 버터플라이 곱셈 물건들은 FFT 벡터 프로세싱 동작의 N 포인트들을 제공할 수 있다.
[0035] 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 VPE들은 오직 고정된 기능들을 제공하는 고정된 데이터 경로 구성들을 포함하는 VPE들과 구분된다. 여기에 개시된 래딕스-2X 버터플라이 벡터 프로세싱을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 VPE들 또한, 예를 들어 디지털 단일 프로세서들(DSP들)에서 제공된 것들과 같은 스칼라 프로세싱 엔진들과 구분된다. 스칼라 프로세싱 엔진들은 유연한, 공통 회로 및 비-고정된 기능들의 상이한 유형들을 수행하는 로직을 이용하나, 레지스터 파일들에 벡터 명령 실행 동안의 중간의 결과들 또한 기록하며, 그것에 의해 추가적인 전력을 소비하고, 벡터 명령 실행 회수를 증가시킨다.
[0036] 이와 관련하여, 도 2는 벡터 프로세싱 엔진(VPE)(22)으로서 인용되기도 하는, 예시적인 벡터 프로세싱 유닛(22)를 포함하는 베이스밴드 프로세서(20)의 개략도이다. 베이스밴드 프로세서(20) 및 베이스밴드 프로세서의 VPE(22)는 반도체 다이(24) 내에 제공될 수 있다. 이 실시예에서, 도 3에서 시작하여 이하에서 보다 상세히 논의될 바와 같이, 베이스밴드 프로세서(20)는 프로그램 가능한 데이터 경로 구성들을 가지는 공통 VPE(22)를 포함한다. 이러한 방식에서, VPE(22)는 베이스밴드 프로세서(20) 내에 분리된 VPE들을 제공할 필요 없는 상이한 동작 모드들 내에 벡터 동작들의 상이한, 특정한 유형들을 제공하도록 프로그램될 수 있고 재프로그램 될 수 있는 공통 회로 및 하드웨어를 포함한다. VPE(22)는 또한, 베이스밴드 프로세서(20) 내에 분리된 VPE들을 제공할 필요 없이, 다수의 적용들 또는 기술들에 대한 고효율적인 방식으로 일반적인 산술 동작들을 수행하기 위해 벡터 산술 모드로 프로그램될 수 있다.
[0037] 도 3에서 시작하는 벡터 멀티-모드 프로세싱에 대한 VPE(22) 내에 제공되는 프로그램 가능한 데이터 경로 구성들을 논의하기 이전에, 도 2의 베이스밴드 프로세서(20)가 첫번째로 설명된다. 이러한 비-제한적 예에서의 베이스밴드 프로세서(20)는 512-비트 벡터 프로세서이다. 베이스밴드 프로세서(20)는 베이스밴드 프로세서(20) 내의 벡터 프로세싱을 제공하는 VPE(22)를 지원할 VPE(22)에 더하여 추가적인 구성요소들을 포함한다. 베이스밴드 프로세서(20)는 벡터 유닛 데이터 메모리(LMEM)(32)로부터 벡터 데이터(30)을 수신하고 저장하도록 구성되는 벡터 레지스터들(28)을 포함한다. 예를 들어, 벡터 데이터(30)는 디자인 선택(예를 들면, 512 비트들)에 따라 정의되는 ‘X’를 가지는 X비트의 너비이다. 벡터 데이터(30)는 벡터 데이터 샘플 세트들(34)로 나뉠 수 있다. 예를 들어, 벡터 데이터(30)은 256-비트들 너비일 수 있으며, 더 작은 벡터 데이터 샘플 세트들(34(Y)-34(0))을 포함할 수 있으며, 벡터 데이터 샘플 세트들(34(Y)-34(0))의 일부는 16-비트들 너비, 및 벡터 데이터 샘플 세트들((34(Y)-34(0))의 다른 것들은 32-비트 너비이다. VPE(22)는 높은 병렬도를 성취하기 위해 VPE(22)에 평행하게 제공된 어떤 선택된 곱 벡터 데이터 샘플 세트들(34(Y)-34(0)) 상에 벡터 프로세싱을 제공할 수 있다. 벡터 레지스터들(28)은 또한 VPE(22)가 벡터 데이터(30)를 프로세스할 때 생성된 결과들을 저장하도록 구성된다. 어떤 실시예들에서, VPE(22)는 더 빠른 벡터 명령 실행 횟수들을 제공하는 레지스터 기록들을 줄이기 위해 벡터 레지스터들(28) 내에 중간의 벡터 프로세싱 결과들을 저장하지 않도록 구성된다. 이러한 구성은 스칼라 프로세싱(DSP들)과 같은, 레지스터들 내에 중간의 결과들을 저장하는 스칼라 프로세싱 엔진들에 의해 실행되는 스칼라 명령들에 반대된다.
[0038] 도 2의 베이스밴드 프로세서(20)는 또한 벡터 명령들의 조건부 실행에서 사용을 위한 VPE(22)에 대한 조건들을 저장하고, 벡터 명령 실행의 결과로서 업데이트된 조건들을 저장하도록 구성된 조건 레지스터들(36)을 포함한다. 베이스밴드 프로세서(20)는 또한 누적 레지스터들(38), 글로벌 레지스터들(40), 및 어드레스 레지스터들(42)을 포함한다. 누적 레지스터들(38)은 벡터 데이터(30) 상에서 어떤 전문화된 동작들을 수행하는 것의 결과로서 누적된 결과들을 저장하기 위해 VPE(22)에 의해 사용되도록 구성된다. 글로벌 레지스터들(40)은 VPE(22)에 의해 지지되는 어떤 벡터 명령들에 대해 스칼라 피연산자(operands)를 저장하도록 구성된다. 어드레스 레지스터들(42)는 벡터 유닛 데이터 메모리(32)로부터의 벡터 데이터(30)를 검색하고 벡터 유닛 데이터 메모리(32) 내의 벡터 프로세싱 결과들을 저장하기 위해 벡터 로드에 의해 주소를 부여할 수 있는 어드레스들을 저장하고, VPE(32)에 의해 지지되는 명령들을 저장하도록 구성된다.
[0039] 도 2를 계속 참조하면, 이 실시예에서의 베이스밴드 프로세서(20)는 또한 VPE(22)에 의해 제공된 벡터 프로세싱에 추가하여 베이스밴드 프로세서(20) 내에서 스칼라 프로세싱을 제공하도록 스칼라 프로세서(44)(또한 “정수 유닛”로서 인용됨)를 포함한다. 고효율 동작에 대해 실행되는 명령의 유형에 기초하여 벡터 및 스칼라 명령 동작들 모두를 지지하도록 구성된 CPU를 제공하는 것이 바람직할 수 있다. 이 실시예에서, 비-제한적인 예로서, 스칼라 프로세서(44)는 32-비트 감소된 명령 세트 컴퓨팅(RISC) 스칼라 프로세서이다. 스칼라 프로세서(44)는 이 예에서의 스칼라 명령 프로세싱을 지지하기 위한 산술 로직 유닛(ALU)(46)을 포함한다. 베이스밴드 프로세서(20)는 프로그램 메모리(50)로부터의 명령들을 페칭(fetching)하고, 페칭된 명령들을 디코딩(decoding)하고, 그리고 페칭된 몇령들을 스칼라 프로세서(44)로, 또는 벡터 데이터 경로(49)를 통해 명령 유형에 기초한 VPE(22)으로 지향시키도록 구성된 명령 디스페치(dispatch) 회로(48)를 포함한다. 스칼라 프로세서(44)는 스칼라 명령들이 실행될 때 스칼라 프로세서(44)에 의한 사용을 위해 범용 레지스터들(52)를 포함한다. 정수 유닛 데이터 메모리(DMEM)(54)는 스칼라 명령 실행에 대한 스칼라 프로세서(44)에 의한 접속을 위해 메인 메모리로부터 범용 레지스터들(52)로 데이터를 제공하도록 베이스밴드 프로세서(20)내에 포함된다. DMEM(54)은 비-제한적인 예로서 캐시 메모리일 수 있다. 스칼라 프로세서(44)가 메모리 제어기 데이터 경로들(59)을 통해 메인 메모리로의 접속을 요구하는 벡터 명령들을 실행할 때, 베이스밴드 프로세서(20)는 또한 범용 레지스터들(52)로부터 메모리 어드레스들을 수신하도록 구성된 메모리 제어기 레지스터들(58)를 포함하는 메모리 제어기(56)를 포함한다.
[0040] 이제 도 2의 베이스밴드 프로세서(20)의 예시적인 구성요소들이 설명되며, 래딕스-2X 버터플라이 벡터 프로세싱뿐만 아니라 공통 회로 및 하드웨어를 가지는 다른 산술 로직 벡터 동작들을 제공하는 VPE의 프로그램 가능한 데이터 경로 구성들 및 VPE(22)에 대한 더 자세한 사항이 이제 논의된다. 이하에서 더 자세히 논의되는, 도 3 내지 도 8C는 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱뿐만 아니라 다른 산술 로직 벡터 동작들을 제공하기 위한 프로그램 데이터 경로 구성들을 가지는 도 2의 VPE(22) 내에서 포함된 예시적인 벡터 프로세싱 블록들을 포함한다. 또한, 이하에서 더 자세히 논의되는, 도 9 내지 도 11은 래딕스-2X 버터플라이 동작의 각 싸이클을 수행하도록 구성된 래딕스 버터플라이 회로를 구성하기 위해 곱셈기 블록들과 예시적인 누적기 블록들을 융합하도록 예시적으로 프로그램된 데이터 경로 구성들을 제공한다.
[0041] 이와 관련하여, 도 3은 도 2의 VPE의 예시적인 개략도를 도시한다. 도 3에 도시되고 이하의 도 4 내지 도8C에서 보다 상세히 설명될 바와 같이, VPE(22)는 프로그램 가능한 데이터 경로 구성들로 구성될 예시적 벡터 프로세싱 블록들을 가지는 복수의 예시적 벡터 프로세싱 스테이지들(60)을 포함한다. 이하에서 보다 자세히 논의될 것과 같이, 벡터 프로세싱 블록들에서 제공되는 프로그램 가능한 데이터 경로 구성들은, 특정한 회로들 및 하드웨어가 도 2의 벡터 유닛 데이터 메모리(32)로부터 수신된 벡터 데이터(30) 상에서 상이한, 특정한 벡터 프로세싱 동작들을 수행하는 것을 지지하도록 프로그램되고 재프로그램되는 것을 허용한다. 예를 들어, 어떤 벡터 프로세싱 동작들은 곱해진 벡터 데이터 결과들의 누적이 뒤따르는 벡터 데이터(30)의 곱셈을 공통적으로 요구할 수 있다. 벡터 프로세싱과 같은 비-제한적인 예들은 무선 통신들 알골리즘에 대한 빠른 푸리에 변환(FFT)을 수행하는데 일반적으로 사용되는 필터링 동작들, 협력 동작들, 및 래딕스-2X 및 래딕스-4X 버터플라이 동작들을 포함하며, 병렬 곱셈들의 시리즈들은 곱셈 결과들의 병렬 누적기들의 시리즈들에 뒤이어 제공된다. 또한, 이하의 도 7 내지 도 9C에 관하여 더 자세히 논의될 것과 같이, 도 2의 VPE(22)는 또한 캐리-저장 누적기들에 리던던트 캐리-저장 포맷을 제공하기 위해 곱셈기들과 캐리-저장 누적기를 융합하는 옵션을 가진다. 캐리-저장 누적기들에 리던던트 캐리-저장 포맷을 제공하는 것은 각 누적 단계 동안 캐리 전파 경로 및 캐리 전파 덧셈 동작을 제공할 필요를 제거할 수 있다.
[0042] 이와 관련하여, 도 3을 더 참조하면, VPE(22)의 M0 곱 벡터 프로세싱 스테이지(60(1))가 첫번째로 설명될 것이다. M0 곱 벡터 프로세싱 스테이지(60(1))는 각각이 프로그램 가능한 데이터 경로 구성들을 가지는, 곱셈기 블록들(62(A)-62(0))의 임의의 바람직한 개수의 형성에 있어서 복수의 벡터 프로세싱 블록들을 내포하는 제2 벡터 프로세싱 스테이지이다. 곱셈기 블록들(62(A)-62(0))은 VPE(22)에서 벡터 곱 동작들을 수행하도록 제공된다. 복수의 곱셈기 블록들(62(A)-62(0))은 최대 12개의 곱 벡터 데이터 샘플 세트들(34(Y)-34(0))의 곱셈을 제공하기 위한 M0 곱 벡터 프로세싱 스테이지(60(1)) 내에 서로에게 평행하게 배치된다. 이 실시예에서, ‘A’는, 이 예에서의 M0 곱 벡터 프로세싱 스테이지(60(1))에 포함되는 4개의 곱셈기 블록들(62(3)-62(0))을 의미하는 3과 같다. 곱셈기 벡터 데이터 샘플 세트들(34(Y)-34(0))은 입력 판독(RR) 벡터 프로세싱 스테이지 내에 제공된 복수의 래치들(64(Y)-64(0))로 벡터 프로세싱하기 위해 VPE(22)로 로딩된다. 이 실시예에는 VPE(22) 내의 12개의 래치들(64(11)-64(0))이 있으며, 이 실시예에서 ‘Y’는 11과 동일함을 의미한다. 래치들(64(11)-64(0))은 벡터 데이터 입력 샘플 세트들(66(11)-66(0))로서 벡터 레지스터들(28)(도 2를 참조)로부터 검색된 곱 벡터 데이터 샘플 세트들(34(11)-34(0))을 래칭(latching)하도록 구성된다. 이러한 예에서, 각각의 래치(64(11)-64(0))는 8-비트들 너비이다. 벡터 데이터(30)의 96-비트들 너비의 총합(즉, 12 래치들 x 각 8비트들)에 대해, 래치들(64(11)-64(0)) 각각은 곱 벡터 데이터 입력 샘플 세트들(66(11)-66(0))을 래칭하도록 구성된다.
[0043] 도 3을 계속하여 참조하면, 복수의 곱셈기 블록들(62(3)-62(0))은 벡터 곱 동작들을 제공하기 위해 벡터 데이터 입력 샘플 세트들(66(11)-66(0))의 어떤 조합들을 수신할 수 있도록 구성되며, ‘Y’는 이 예에서의 11과 동일하다. 곱 벡터 데이터 입력 샘플 세트들(66(11)-66(0))은 VPE(22)의 디자인에 따라, 복수의 입력 데이터 경로들(A3-A0, B3-B0 및 C3-C0)에 제공된다. 도 3에 도시된 바와 같이, 벡터 데이터 입력 샘플 세트들(66(3)-66(0))은 입력 데이터 경로들(C3-C0)에 대응된다. 도 3에 도시된 바와 같이, 벡터 데이터 입력 샘플 세트들(66(7)-66(4))은 입력 데이터 경로들(B3-B0)에 대응된다. 도 3에 도시된 바와 같이, 벡터 데이터 입력 샘플 세트들(66(11)-66(8))은 입력 데이터 경로들(A3-A0)에 대응된다. 복수의 곱셈기 블록들(62(3)-62(0))은 벡터 곱 동작들을 제공하기 위해, 복수의 곱셈기 블록들(62(3)-62(0))에 제공된 입력 데이터 경로들(A3-A0, B3-B0, C3-C0) 각각에 따라, 수신된 벡터 데이터 샘플 세트들(66(11)-66(0))을 프로세싱하도록 구성된다.
[0044] 도 4 및 도 5를 참조하여 이하에서 보다 상세히 논의될 것과 같이, 도 3의 곱셈기 블록들(62(3)-62(0))에 제공된 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))은 상이한 데이터 경로 구성들을 가지도록 프로그램될 수 있다. 이러한 상이한 데이터 경로 구성들은 각각의 곱셈기 블록(62(3)-62(0))에 제공된 특정한 입력 데이터 경로들(A3-A0, B3-B0, C3-C0)에 따라 곱셈기 블록들(62(3)-62(0))에 제공된 특정한 수신된 벡터 데이터 입력 샘플 세트들(66(11)-66(0))의 곱셈의 상이한 조합들 및/또는 상이한 비트 길이들을 제공한다. 이와 관련하여, 복수의 곱셈기 블록들(62(3)-62(0))은 벡터 데이터 입력 샘플 세트들(66(11)-66(0)) 모두의 특정한 조합을 곱하는 것의 곱셈 결과를 포함하는 벡터 결과 출력 샘플 세트로서 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 제공한다.
[0045] 예를 들어, 곱셈기 블록들(62(3)-62(0))의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))은 도 2의 베이스밴드 프로세서(20)의 명령 디스패치(48) 내의 벡터 명령 디코더로부터 제공된 세팅들에 따라 프로그램될 수 있다. 이러한 실시예에서, 곱셈기 블록들(62(3)-62(0))의 4개의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))이 있다. 벡터 명령은 VPE(22)에 의해 수행되도록 동작의 특정한 유형을 명시한다. 따라서, VPE(22)는 곱셈기 블록들(62(3)-62(0))의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))이 고효율적인 방식으로 동일한 공통 회로를 가지는 벡터 곱 동작들의 상이한 유형들을 제공하도록 구성하기 위해 프로그램되고 그리고 재프로그램될 수 있다. 예를 들어, VPE(22)는 명령 디스패치(48) 내의 명령 파이프 라인에서의 벡터 명령들의 디코딩에 따라, 실행된 벡터 명령 각각에 대한 싸이클-바이-클록 싸이클(cycle-by-clock cycle) 기초로 곱셈기 블록들(62(3)-62(0))의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))을 구성하고 그리고 재구성하도록 프로그램될 수 있다. 따라서, 만약 VPE(22) 내의 M0 곱 벡터 프로세싱 스테이지(60(1))가 매 클록 싸이클마다 벡터 데이터 입력 샘플 세트들(66)을 프로세싱하도록 구성되므로, 결과적으로, 곱셈기 블록들(62(3)-62(0))은 명령 디스패치(48)에서 명령 파이프 라인에서의 벡터 명령들의 디코딩에 따라 매 클록 싸이클마다 벡터 곱 동작들을 수행한다.
[0046] 곱셈기 블록들(62)은 실수 및 복소수 곱셈들을 수행하도록 프로그램될 수 있다. 도 3을 계속해서 참조하면, 하나의 벡터 프로세싱 블록 데이터 경로 구성에서, 곱셈기 블록(62)은 두개의 8-비트 벡터 데이터 입력 샘플 세트들(66) 모두를 곱하도록 구성될 수 있다. 하나의 곱 블록 데이터 경로 구성에서, 곱셈기 블록(62)은 8-비트 벡터 데이터 입력 샘플 세트들(66)의 제2 쌍이 곱해진 8-비트 벡터 데이터 입력 샘플 세트들(66)의 제1쌍으로부터 형성된 두개의 16-비트 벡터 데이터 입력 샘플 세트들(66) 모두로 곱하도록 구성될 수 있다. 이것은 도 6에서 도시되며, 이하에서 보다 상세히 논의된다. 다시, 곱셈기 블록들(62(3)-62(0))에서 프로그램 가능한 데이터 경로 구성들을 제공하는 것은 곱셈기 블록들(62(3)-62(0))이 VPE(22)에서의 영역을 줄이기 위해 곱 동작들의 상이한 유형들을 수행하도록 구성되고 재구성될 수 있으며, 바람직한 벡터 프로세싱 동작들을 실행하기 위해 베이스밴드 프로세서(20)에 제공될 더 적은 VPE(22)를 아마도 허용하는 유연성을 제공한다.
[0047] 다시 도 3을 참조하면, 복수의 곱셈기 블록들(62(3)-62(0))은 다음의 벡터 프로세싱 스테이지(60) 또는 출력 프로세싱 스테이지 중 하나에 프로그램 가능한 출력 데이터 경로들(70(3)-70(0)) 내에 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 제공하도록 구성된다. 복수의 곱셈기 블록들(62(3)-62(0))에 의해 실행되는 벡터 명령에 기초하는 프로그램된 구성에 따라, 프로그램 가능한 출력 데이터 경로들(70(3)-70(0)) 내에 벡터 곱 출력 샘플 세트들(68(3)-68(0))이 제공된다. 이 예에서, 이하에서 논의되는 바와 같이, 프로그램 가능한 출력 데이터 경로들(70(3)-70(0)) 내의 벡터 곱 출력 샘플 세트들(68(3)-68(0))은 누적을 위해 M1 누적 벡터 프로세싱 스테이지(60(2)에 제공된다. VPE(22)의 이러한 특정 디자인에서, 곱해진 결과들의 누적이 뒤따르는 벡터 데이터 입력들의 곱셈들을 필요로 하는 전문화된 벡터 명령들을 지지하도록 누적기들이 뒤따라는 복수의 곱셈기 블록들(62(3)-62(0))을 제공하는 것이 바람직하다. 예를 들어, FET 동작들을 제공하기 위해 공통적으로 사용되는 래딕스-2 및 래딕스-4 버터플라이 동작들은 곱셈 결과들의 누적이 뒤따르는 곱 동작들의 시리즈들을 포함한다. 그러나, VPE(22) 내에 제공되는 벡터 프로세싱 블록들의 이러한 조합들은 예시적이고, 제한되지 않음을 주의하라. 프로그램 가능한 데이터 경로 구성들을 가지는 VPE는 벡터 프로세싱 블록들을 가지는 벡터 프로세싱 스테이지들의 하나 또는 임의의 다른 개수를 포함하도록 구성될 수 있다. 벡터 프로세싱 블록들은 디자인 및 VPE에 의해 지지되도록 디자인된 특정한 벡터 명령들에 따라 동작들의 임의의 유형을 수행하도록 제공될 수 있다.
[0048] 도 3을 계속해서 참조하면, 이러한 실시예에서, 벡터 곱 출력 샘플 세트들(68(3)-68(0))은 M1 누적기 벡터 프로세생 스테이지(60(2))인 다음의 벡터 프로세싱 스테이지 내에 제공되는 복수의 누적기 블록들(72(3)-72(0))에 제공된다. 복수의 누적기 블록들(72(A)-72(0)) 중 각각의 누적기 블록은 두개의 누적기들(72(X)(1), 72(X)(0))(즉, 72(3)(1), 72(3)(0), 72(2)(1), 72(2)(0), 72(1)(1), 72(1)(0), 72(0)(1), 72(0)(0))을 내포한다. 복수의 누적기 블록들(72(3)-72(0))은 벡터 곱 출력 샘플 세트들(68(3)-68(0))의 결과들을 누적한다. 이하에서 도 7 내지 도 9C을 참조하여 더 상세히 논의되는 바와 같이, 복수의 누적기 블록들(72(3)-72(0))은 캐리-저장 누적기들로서 제공되며, 캐리 물건은 누적 프로세스 동안 누적 동작이 완료되기 전까지 본질적으로 저장되고, 전파되지 않는다. 복수의 누적기 블록들(72(3)-72(0)) 내에 리던던트 캐리-저장 포맷을 제공하기 위해 복수의 누적기 블록들(72(3)-72(0))은 또한 도 5 및 도 6의 복수의 곱셈기 블록들(62(3)-62(0))과 융합되는 옵션을 가진다. 복수의 누적기 블록들(72(3)-72(0)) 내에 리던던트 캐리-저장 포맷을 제공하는 것은, 각각의 누적 단계 동안 복수의 누적기 블록들(72(3)-72(0)) 내에 캐리 전파 경로 및 캐리 전파 추가 동작을 제공할 필요를 제거할 수 있다. M1 누적 벡터 프로세싱 스테이지(60(2)) 및 M1 누적 벡터 프로세싱 스테이지의 복수의 누적기 블록들(72(3)-72(0))은 이제 도 3을 참조하여 소개된다.
[0049] 도 3을 참조하면, M1 누적 벡터 프로세싱 스테이지(60(2)) 내의 복수의 누적기 블록들(72(3)-72(0))은, 프로그램 가능한 출력 데이터 경로 구성들에 따라, 다음의 벡터 프로세싱 스테이지(60) 또는 출력 프로세싱 스테이지 중 하나에, 누적기 출력 샘플 세트들(76(3)-76(0))(즉, 76(3)(1), 76(3)(0), 76(2)(1), 76(2)(0), 76(1)(1), 76(1)(0), 76(0)(1), 76(0)(0))을 제공하기 위해 프로그램 가능한 출력 데이터 경로들(74(3)-74(0)(즉, 74(3)(1), 74(3)(0), 74(2)(1), 74(2)(0), 74(1)(1), 74(1)(0), 74(0)(1), 74(0)(0))에 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 누적하도록 구성된다. 이러한 예에서, 누적기 출력 샘플 세트들(76(3)-76(0))은 ALU 프로세싱 스테이지인 출력 프로세싱 스테이지에 제공된다. 예를 들어, 이하에서 보다 상세하게 논의되는 바와 같이, 비-제한적인 예로서, 누적기 출력 샘플 세트들(76(3)-76(0))은 또한 도 2의 베이스밴드 프로세서(20) 내의 스칼라 프로세서(44) 내의 ALU(46)에 제공될 수 있다. 예를 들어, ALU(46)는 보다 일반적인 프로세싱 동작들에서 사용되도록 VPE(22)에 의해 실행되는 전문화된 벡터 명령들에 따라, 누적기 출력 샘플 세트들(76(3)-76(0))을 취할 수 있다.
[0050] 다시 도 3을 참조하면, 누적기 블록들(72(3)-72(0))의 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 데이터 경로들(80(3)-80(0))은 상이한 조합들 및/또는 곱셈기 블록들(62(3)-62(0))로부터 누적기 블록들(72(3)-72(0))까지 제공된 벡터 곱 출력 샘플 세트들(68(3)-68(0))의 비트 길이를 수신하도록 재구성되도록 프로그램될 수 있다. 각각의 누적기 블록(72)은 두개의 누적기들(72(X)(1), 72(X)(0))로 구성되기 때문에, 프로그램 가능한 입력 데이터 경로들(78(A)-78(0))은 78(3)(1), 78(3)(0), 78(2)(1), 78(2)(0), 78(1)(1), 78(1)(0), 78(0)(1), 78(0)(0)로서 도 3에 보여진다. 유사하게, 프로그램 가능한 내부 데이터 경로들(80(3)-80(A))은 80(3)(1), 80(3)(0), 80(2)(1), 80(2)(0), 80(1)(1), 80(1)(0), 80(0)(1), 80(0)(0)로서 도 3에서 보여진다. 누적기 블록들(72(3)-72(0))내에 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))을 제공하는 것은 도 8 내지 도 9C를 참조하여 이하에서 보다 상세히 논의된다. 이러한 방식에서, 누적기 블록들(72(3)-72(0))의 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 입력 데이터 경로들(80(3)-80(0))에 따라, 누적기 블록들(72(3)-72(0))은 누적된 벡터 곱 출력 샘플 세트들(68(3)-68(0))의 프로그램된 조합에 따라 누적기 출력 샘플 세트들(76(3)-76(0))을 제공할 수 있다. 다시, 이것은 누적기 블록들(72(3)-72(0))이 VPE(22)에서의 영역을 줄이기 위해 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))의 프로그래밍에 기초하여 누적 동작들의 상이한 유형들을 수행하도록 구성되고 재구성될 수 있으며, 바람직한 벡터 프로세싱 동작들을 실행하기 위해 베이스밴드 프로세서(20)에 제공될 더 적은 VPE(22)를 아마도 허용하는 유연성을 제공한다.
[0051] 예를 들어, 하나의 누적기 모드 구성에서, 두개의 누적기 블록들(72)의 프로그램 가능한 입력 데이터 경로(78) 및/또는 프로그램 가능한 내부 데이터 경로들(80)은 비-제한적인 예로서 단일 40-비트 누적기를 제공하기 위해 프로그램될 수 있다. 이것은 도 9A에 도시되며, 이하에서 보다 상세하게 논의된다. 다른 누적기 모드 구성에서, 두개의 누적기 블록들(72)의 프로그램 가능한 입력 데이터 경로(78) 및/또는 프로그램 가능한 내부 데이터 경로(80)은 비-제한적인 예로서 이중 24-비트 누적기들을 제공하도록 프로그램될 수 있다. 이것은 도 9B에 도시되며, 이하에서 보다 상세하게 논의된다. 다른 누적기 모드 구성에서, 두개의 누적기 블록들(72)의 프로그램 가능한 입력 데이터 경로(78) 및/또는 프로그램 가능한 내부 데이터 경로(80)는 단일 24-비트 누적기가 뒤따르는 16-비트 캐리-저장 덧셈기를 제공하도록 프로그램될 수 있다. 이것은 도 9C에 도시되며, 이하에서 보다 상세하게 논의된다. 곱셈 및 누적 동작들의 특정한, 상이한 조합들은 또한 곱셈기 블록들(62(3)-62(0)) 및 누적기 블록들(72(3)-72(0))(예를 들면, 16-비트 누적을 가지는 16-비트 복소 곱셈, 및 16-비트 누적을 가지는 32-비트 복소 곱셈)의 프로그래밍에 따라 VPE(22)에 의해 지지될 수 있다.
[0052] 누적기 블록들(72(3)-72(0))의 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))은 도 2의 베이스밴드 프로세서(20)의 명령 디스패치(48) 내의 벡터 명령 디코더로부터 제공된 설정들에 따라 프로그램될 수 있다. 벡터 명령은 VPE(22)에 의해 수행되는 동작의 특정한 유형을 명시한다. 따라서, VPE(22)는 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 명령 디스패치(48) 에서 명령 파이프라인에서의 벡터 명령의 디코딩에 따라 실행된 각각의 벡터 명령에 대해 누적기 블록들(72(3)-72(0))의 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))을 재프로그램하도록 구성될 수 있다. 벡터 명령은 하나 또는 그 초과의 VPE(22)의 클록 싸이클들에 걸쳐 실행될 수 있다. 또한 이 예에서, VPE(22)는 클록 싸이클-바이-클록 싸이클에 기초하는 벡터 명령의 각 클록 싸이클 동안, 누적기 블록들(72(3)-72(0))의 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))을 재프로그램하도록 구성될 수 있다. 따라서, 예를 들어, 만약 VPE(22) 내의 M1 누적 벡터 프로세싱 스테이지(60(2))에 의해 실행된 벡터 명령이 매 클록 싸이클마다 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 프로세싱하면, 결과적으로, 누적기 블록들(72(3)-72(0))의 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))은 벡터 명령의 실행 중에 클록 싸이클마다 재구성될 수 있다. 도 4A 및 4B는 예시적인 벡터 프로세싱의 실례를 더 제공하기 위한 곱셈기 블록들(62(A)-62(0))의 예시적인 벡터 프로세싱 및 도 2 및 도 3의 VPE(22) 내의 누적기 블록들(72(A)(1)-72(0)(0))을 도시하는 흐름도들이다. 도 4A는 도 2 및 도 3의 예시적인 VPE에 포함된 프로그램 가능한 데이터 경로 구성들을 가지는 일반화된 벡터 프로세싱 블록 ― 곱셈기 블록들(62(A)-62(0), 누적기 블록들(72(A)(1)-72(0)(0)), 또는 둘다 일 수 있음 ― 예시적인 벡터 프로세싱을 도시한 흐름도이다. 도 4B는 곱셈기 블록들(62(A)-62(0)) 및 누적기 블록들(72(A)(1)-72(0)(0))의 예시적인 벡터 프로세싱을 도시한 흐름도이며, 누적기 블록들 각각은 프로그램 가능한 데이터 경로 구성들을 가지며 도 2 및 도 3의 예시적인 VPE(22) 내의 상이한 벡터 프로세싱 스테이지들 내에 제공된다.
[0053] 이와 관련하여, 도 4A에서 도시된 바와 같이, VPE(22)의 프로세스는 입력 프로세싱 스테이지(60(0))(블록 81) 내의 복수의 입력 데이터 경로들(A3-A0) 중 하나의 입력 데이터 경로 내의 백터 어레이의 폭의 복수의 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 수신하는 것을 포함한다. 벡터 프로세싱은 다음으로 벡터 프로세싱 블록들(62(A)-62(0) 및/또는 72(A)(1)-72(0)(0))(블록 83) 내의 복수의 입력 데이터 경로들(A3-A0)로부터 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 수신하는 것을 포함한다. 벡터 프로세싱은 다음으로 벡터 프로세싱 스테이지(60(1), 60(2))(블록 85)에 의해 실행되는 벡터 명령에 따라 벡터 프로세싱 블록들(62(A)-62(0), 72(A)(1)-72(0)(0))에 대해 프로그램 가능한 데이터 경로 구성들(67(A)-67(0), 70(3)-70(0), 78(A)(1)-78(0)(0), 80(A)(1)-80(0)(0), 74(A)(1)-74(0)(0))에 기초하여 벡터 결과 출력 샘플 세트들(68(A)-68(0), 76(A)(1)-76(0)(0))을 제공하기 위해 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 프로세싱하는 것을 포함한다. 벡터 프로세싱은 다음으로 출력 데이터 경로들(70(A)-70(0), 74(A)(1)-74(0)(0))(블록 87) 내에 벡터 결과 출력 샘플 세트들(68(A)-68(0), 76(A)(1)-76(0)(0))을 제공하는 것을 포함한다. 벡터 프로세싱은 다음으로 출력 프로세싱 스테이지(60(3))(블록 89) 내의 벡터 프로세싱 스테이지(60(1), 60(2))로부터 벡터 결과 출력 샘플 세트들(68(A)-68(0), 76(A)(1)-76(0)(0))을 수신하는 것을 포함한다.
[0054] 도 4를 참조하여 상술된 벡터 프로세싱 내의 각각의 프로세싱 스테이지(60(0)-60(3))는 병렬화(parallelization) 벡터 프로세싱을 위해 동시에 발생함을 주의하여야 하며, 벡터 프로세싱 블록들(62(A)-62(0), 72(A)(1)-72(0)(0))의 프로그램 가능한 데이터 경로 구성들(67(A)-67(0), 70(3)-70(0), 78(A)(1)-78(0)(0), 80(A)(1)-80(0)(0), 74(A)(1)-74(0)(0))은 각 클록 싸이클 만큼 자주 재프로그램될 수 있다. 상술한 바와 같이, 이것은 벡터 프로세싱 블록들(62(A)-62(0), 72(A)(1)-72(0)(0))이 상이한 벡터 명령들에 대한 상이한 동작들을 효율적으로, 그리고 공통 벡터 프로세싱 블록들(62(A)-62(0), 72(A)(1)-72(0)(0))의 사용을 통해 수행하는 것을 허용한다.
[0055] 도 4B는 누적 동작들이 뒤따르는 곱 동작들을 내포하는 벡터 명령들에 대한 도 3의 VPE(22) 내의 곱셈기 블록들(62(A)-62(0)) 및 누적기 블록들(72(A)(1)-72(0)(0))의 예시적인 벡터 프로세싱을 도시한 흐름도이다. 예를 들어, FET 벡터 동작들은 누적기 동작들이 뒤따르는 곱 동작들을 내포한다. 도 4B의 흐름도는 도 4A에서 상술된 VPE(22)의 예시적인 일반화된 벡터 프로세싱의 예시적인 세부사항을 추가로 제공한다. 이와 관련하여, 벡터 프로세싱은 입력 프로세싱 스테이지(60(0))(블록 93) 내의 복수의 입력 데이터 경로들(A3-C0) 중 하나의 입력 데이터 경로 내의 벡터 어레이의 폭의 복수의 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 수신하는 것을 포함한다. 벡터 프로세싱은 그 다음으로, 복수의 곱셈기 블록들(62(A)-62(0))(블록 95) 내의 복수의 입력 데이터 경로들(A3-C0)로부터 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 수신하는 것을 포함한다. 벡터 프로세싱은 그 다음으로, 벡터 프로세싱 스테이지(60(1))(블록 97)에 의해 실행되는 벡터 명령에 따라 곱셈기 블록들(62(A)-62(0))에 대한 프로그램 가능한 데이터 경로 구성들(67(A)-67(0), 70(3)-70(0))에 기초하여, 복수의 곱 출력 데이터 경로들(70(A)-70(0)) 중 곱 출력 데이터 경로들(70(A)-70(0)) 내에 곱 벡터 결과 출력 샘플 세트들(68(A)-68(0))을 제공하도록 벡터 데이터 입력 샘플 세트들(34(Y)-34(0))을 곱하는 것을 포함한다. 벡터 프로세싱은 다음으로, 복수의 누적기 블록들(72(A)(1)-72(0)(0))(블록 99) 내의 복수의 곱 출력 데이터 경로들(70(A)-70(0))로부터 곱 벡터 결과 출력 샘플 세트들(68(A)-68(0))을 수신하는 것을 포함한다. 벡터 프로세싱은 다음으로, 제2 벡터 프로세싱 스테이지(60(2))(블록 101)에 의해 실행되는 벡터 명령에 따라 누적기 블록들(72(A)(1)-72(0)(0))에 대한 프로그램 가능한 데이터 경로 구성들(78(A)(1)-78(0)(0), 80(A)(1)-80(0)(0), 74(A)(1)-74(0)(0))에 기초하여 벡터 누적된 결과 샘플 세트들(76(A)(1)-76(0)(0))을 제공하기 위해 곱 벡터 결과 출력 샘플 세트들(68(A)-68(0)) 모두를 누적하는 것을 포함한다. 벡터 프로세싱은 그 다음으로, 출력 데이터 경로들(74(A)(1)-74(0)(0))(블록 103) 내에 벡터 누적된 결과 샘플 세트들(76(A)(1)-76(0)(0))을 제공하는 것을 포함한다. 벡터 프로세싱은 그 다음으로, 출력 프로세싱 스테이지(60(3)) (블록 105) 내의 누적기 블록들(72(A)(1)-72(0)(0))로부터 벡터 결과 출력 샘플 세트들(76(A)(1)-76(0)(0))을 수신하는 것을 포함한다.
[0056] 이제 도 3의 예시적인 VPE(22) 및 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 블록들을 이용한 도 4A 및 도 4B 내의 벡터 프로세싱의 개관이 설명되었고, 설명의 나머지는 도 5 내지 도 9C 내의 이러한 벡터 프로세싱 블록들의 보다 예시적이며, 비-제한적인 세부사항들을 설명한다.
[0057] 이와 관련하여, 도 5는 도 3의 VPE(22)의 M0 곱 벡터 프로세싱 스테이지(60(1)) 내의 복수의 곱셈기 블록들(62(3)-62(0))에 대한 추가적인 상세한 개략도이다. 도 6은 도 5에서의 곱셈기 블록(62)의 내부 구성요소들의 개략도이다. 도 5에서 도시된 바와 같이, 특정한 입력 데이터 경로들(A3-A0, B3-B0, C3-C0)에 따라 곱셈기 블록들(62(3)-62(0))에 의해 수신된 벡터 데이터 입력 샘플 세트들(66(11)-66(0))이 보여진다. 도 6을 참조하여 이하에서 더 상세히 논의되는 바와 같이, 이 예에서 곱셈기 블록들(62(3)-62(0)) 각각은 8-비트 곱셈기들에 의한 4개의 8-비트를 포함한다. 다시 도 5를 참조하면, 이 예에서 곱셈기 블록들(62(3)-62(0)) 각각은 피승수(multiplicand) 입력 ’B’ 또는 피승수 입력 ‘C’ 중 하나에 의해 피승수 입력 ‘A’을 곱하도록 구성된다. 곱셈기 블록(62) 내에서 모두 곱해질 수 있는 피승수 입력들 ‘A’, ‘B’ 또는 ‘C’은 도 5에서 보여진 바와 같이, 곱셈기 블록들(62(3)-62(0))에 연결된 입력 데이터 경로들(A3-A0, B3-B0, C3-C0)에 의해 제어된다. 피승수 선택자 입력(82(3)-82(0))은 피승수 입력 ‘B’ 또는 피승수 입력 ‘C’가 피승수 입력 ‘A’에 의해 곱해지도록 선택되는지 여부를 선택하는 각각의 곱셈기 블록(62(3)-62(0)) 내의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))을 제어하는 각각의 곱셈기 블록(62(3)-62(0))에 입력으로서 제공된다. 이러한 방식에서, 원하는 바와 같이, 곱셈기 블록들(62(3)-62(0))은 상이한 곱 동작들을 제공하도록 재프로그램되기 위해 곱셈기 블록들의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))에 대한 능력과 함께 제공된다.
[0058] 도 5를 계속해서 참조하면, 예로서 곱셈기 블록(62(3))을 사용하면, 입력 데이터 경로들(A3, A2)은 입력들(AH, AL)에 각각 연결된다. 입력(AH)은 피승수 입력 A의 높은 비트들을 나타내며, 입력(AL)은 입력 피승수 입력('A')의 낮은 비트들을 의미한다. 입력 데이터 경로들(B3, B2)은 입력들(BH, BL)에 각각 연결된다. 입력(BH)는 피승수 입력('B')의 높은 비트들을 나타내며, 입력(BL)은 입력 피승수 입력('B')의 낮은 비트들을 나타낸다. 입력 데이터 경로들(C3, C2)는 입력들(CI, CQ)에 각각 연결된다. 입력(CI)는 이 예에서 입력 피승수 입력('C')의 실수 비트들 부분을 나타낸다. CQ는 이 예에서 입력 피승수 입력('C')의 허수 비트 부분을 나타낸다. 도 6을 참조하여 이하에서 더 상세히 논의되는 바와 같이, 피승수 선택자 입력(82(3))은 또한, 곱셈기 블록(62(3))의 프로그램 가능한 내부 데이터 경로들(67(3))이 피승수 입력('B') 또는 피승수 입력('C')과 피승수 입력('A')에 8-비트 곱셈을 수행하도록 구성되는지 여부, 또는 곱셈기 블록(62(3))이 이 예에서 피승수 입력('B') 또는 피승수 입력('C')과 피승수 입력('A')에 16-비트 곱셈을 수행하도록 구성되는지 여부를 제어한다.
[0059] 도 5를 계속해서 참조하면, 곱셈기 블록들(62(3)-62(0)) 각각은 곱셈기 블록들의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))의 구성에 기초하여 곱셈 동작의 캐리('C') 및 합('S') 벡터 출력 샘플 세트들로서 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 생성하도록 구성된다. 도 7 내지 도 9C를 참조하여 이하에서 논의되는 바와 같이, 벡터 곱 출력 샘플 세트들(68(3)-68(0))의 캐리('C') 및 합('S')은 융합되고, 복수의 누적기들(72(3)-72(0)) 내에 리던던트 캐리-저장 포맷을 제공하기 위해 복수의 누적기들(72(3)-72(0))에 대한 리던던트 캐리-저장 포멧 내에 캐리('C') 및 합('S')이 제공되는 것을 의미한다. 이하에서 더 상세히 설명되는 바와 같이, 복수의 누적기들(72(3)-72(0)) 내에 리던던트 캐리-저장 맷을 제공하는 것은 복수의 누적기들(72(3)-72(0))에 의해 수행되는 누적 동작들 동안 캐리 전파 경로 및 캐리 전파 추가 동작을 제공할 필요를 제거할 수 있다.
[0060] 그들의 프로그램 가능한 내부 데이터 경로들(67(3)-67(0))의 구성에 기초하는 곱셈 동작의 캐리('C') 및 합('S') 벡터 출력 샘플 세트들로서 벡터 곱 출력 샘플 세트들(68(3)-68(0))을 생성하는 곱셈기 블록들(62(3)-62(0))의 예들이 도 5에 보여진다. 예를 들어, 곱셈기 블록(62(3))은 8-비트 곱셈들에 대한 32-비트 값으로서 캐리(C00) 및 합(S00)을 생성하고 16-비트 곱셈들에 대한 64-비트 값으로서 캐리(C01) 및 합(S01)을 생성하도록 구성된다. 다른 곱셈기 블록들(62(2)-62(0))은 이 예에서 동일한 능력을 가진다. 이와 관련하여, 곱셈기 블록(62(2))은 8-비트 곱셈들에 대한 32-비트 값으로서 캐리(C10) 및 합(S10)을 생성하고, 16-비트 곱셈들에 대한 64-비트 값으로서 캐리(C11) 및 합(S11)을 생성하도록 구성된다. 곱셈기 블록(62(1))은 8-비트 곱셈들에 대한 32-비트 값으로서 캐리(C20) 및 합(S20)을 생성하고, 16-비트 곱셈들에 대한 64-비트 값으로서 캐리(C21) 및 합(S21)을 생성하도록 구성된다. 곱셈기 블록(62(0))은 8-비트 곱셈들에 대한 32-비트 값으로서 캐리(C30) 및 합(S30)을 생성하고 16-비트 곱셈들에 대한 64-비트 값으로서 캐리(C31) 및 합(S31)을 생성하도록 구성된다.
[0061] 도 5의 곱셈기 블록 내에 제공되는 프로그램 가능한 데이터 경로 구성들의 예시적인 세부사항을 더 설명하기 위해, 도 6이 제공된다. 도 6은 8-비트 벡터 데이터 입력 샘플 세트(66)에 의한 8-비트 및 16-비트 벡터 데이터 입력 샘플 세트(66)에 의한 16-비트를 곱하는 것이 가능한 프로그램 가능한 데이터 경로 구성들을 가지는 도 3 및 도 5의 곱셈기 블록(62)의 내부 구성요소들의 개략도이다. 이와 관련하여, 곱셈기 블록(62)은 이 예에서 4개의 8x8 비트 곱셈기들(84(3)-84(0))을 포함한다. 곱셈기들(84)의 임의의 바람직한 개수가 제공될 수 있다. 제1 곱셈기(84(3))는 8-비트 벡터 데이터 입력 샘플 세트(66A[H])(입력 피승수 입력('A')의 높은 비트임)를 수신하고, 벡터 데이터 입력 샘플 세트(66A[H])를 8-비트 벡터 데이터 입력 샘플 세트(66B[H])(입력 피승수 입력('B')의 높은 비트임) 또는 8-비트 벡터 데이터 입력 샘플 세트(66C[I])(입력 피승수 입력('C')의 높은 비트임) 중 하나와 곱하도록 구성된다. 멀티플렉서(multiplexor)(86(3))는 곱셈기(84(3)에 피승수로서 제공되는 8-비트 벡터 데이터 입력 샘플 세트(66B[H]) 또는 8-비트 벡터 데이터 입력 샘플 세트(66C[I]) 중 하나를 선택하도록 구성되어 제공된다. 멀티플렉서(86(3))는 이 실시예에서 피승수 선택자 입력(82) 내의 높은 비트인 피승수 선택자 비트 입력(82[3])에 의해 제어된다. 이러한 방식에서, 8-비트 벡터 데이터 입력 샘플 세트(66B[H]) 또는 8-비트 벡터 데이터 입력 샘플 세트(66C[I])가 수신된 벡터 데이터 입력 샘플 세트(66A[H])와 곱해지는지 여부를 제어하기 위해, 멀티플렉서(86(3)) 및 피승수 선택자 비트 입력(82[3])은 곱셈기(84(3))에 대한 프로그램 가능한 내부 데이터 경로(67[0]) 구성을 제공한다.
[0062] 도 6을 계속해서 참조하면, 다른 곱셈기들(84(2)-84(0))은 또한 제1 곱셈기(84(3))로서 제공된 유사한 프로그램 가능한 내부 데이터 경로들(67[2]-67[0])을 포함한다. 곱셈기(84(2))는 피승수 입력('A')의 낮은 비트인 8-비트 벡터 데이터 입력 샘플 세트(66A[L])와 곱해지도록 프로그램 가능한 내부 데이터 경로(67[1]) 내에 8-비트 벡터 데이터 입력 샘플 세트(66B[H]) 또는 8-비트 벡터 데이터 입력 샘플 세트(66C[I]) 중 하나를 제공하는 프로그램 가능한 구성을 가지는 프로그램 가능한 내부 데이터 경로(67[2])를 포함한다. 이 실시예에서의 선택은 피승수 선택자 입력(82) 내의 피승수 선택자 비트 입력(82[2])에 따라, 멀티플렉서(86(20)에 의해 제어된다. 곱셈기(84(1))는 8-비트 벡터 데이터 입력 샘플 세트(66A[H])와 곱해지기 위해 프로그램 가능한 내부 데이터 경로(67[1]) 내에서 피승수 입력('B')의 낮은 비트인 8-비트 벡터 데이터 입력 샘플 세트(66B[L]) 또는 피승수 입력('C')의 낮은 비트인 8-비트 벡터 데이터 입력 샘플 세트(66C[Q]) 중 하나를 제공하도록 프로그램 가능한 프로그램 가능한 내부 데이터 경로(67[1])를 포함한다. 이 실시예에서, 선택은 피승수 선택자 입력(82) 내의 피승수 선택자 비트 입력(82[1])에 따라 멀티플렉서(86(1))에 의해 제어된다. 게다가, 곱셈기(84(0))는 8-비트 벡터 데이터 입력 샘플 세트(66A[L])와 곱해지기 위해, 프로그램 가능한 내부 데이터 경로(67[0]) 내에8-비트 벡터 데이터 입력 샘플 세트(66B[L]) 또는 8-비트 벡터 데이터 입력 샘플 세트(66C[Q]) 중 하나를 제공하도록 프로그램 가능한 프로그램 가능한 내부 데이터 경로(67[0])를 포함한다. 이 예에서, 선택은 피승수 선택자 입력(82) 내의 피승수 선택자 비트 입력(82[0])에 따라 멀티플렉서(86(0))에 의해 제어된다.
[0063] 도 6을 계속해서 참조하면, 상술한 바와 같이, 곱셈기들(84(3)-84(0))은 상이한 비트 길이 곱셈 동작들을 수행하도록 구성될 수 있다. 이와 관련하여, 각각의 곱셈기(84(3)-84(0))는 비트 길이 곱 모드 입력들(88(3)-88(0)) 각각을 포함한다. 이 예에서, 각각의 곱셈기(84(3)-84(0))는 프로그램 가능한 데이터 경로들(90(3)-90(0), 91, 92(3)-92(0))의 구성을 제어하는 입력들에 따라, 8-비트 모드에 의한 8-비트로 각기 프로그램될 수 있다. 각각의 곱셈기(84(3)-84(0))는 또한, 프로그램 가능한 데이터 경로들(90(3)-90(0), 91, 92(3)-92(0)) 각각의 구성을 제어하는 입력들에 따라, 더 큰 비트 곱셈 동작 ― 16-비트 모드에 의한 16-비트 및 8-비트 모드에 의한 24-비트를 포함함 ― 의 일부를 제공하도록 프로그램될 수 있다. 예를 들어, 만약 각각의 곱셈기(84(3)-84(0))가 프로그램 가능한 데이터 경로들(90(3)-90(0))의 구성에 따라 8-비트 곱 모드에 의한 8-비트로 구성되면, 유닛으로서 복수의 곱셈기들(84(3)-84(0))은 곱셈기 블록(62)의 일부로서 8-비트 곱셈기들에 의해 2개의 개별적인 8-비트를 구성하도록 구성될 수 있다. 만약, 각각의 곱셈기(84(3)-84(0))가 프로그램 가능한 데이터 경로(91)의 구성에 따라 16-비트 곱 모드에 의해 16-비트로 구성되면, 유닛으로서 복수의 곱셈기들(84(3)-84(0))은 곱셈기 블록(62)의 일부로서 16-비트 곱셈기에 의해 단일의 16-비트를 구성하도록 구성될 수 있다. 만약 곱셈기들(84(3)-84(0))이 프로그램 가능한 데이터 경로들(92(3)-92(0))의 구성에 따라 8-비트 곱 모드에 의해 24-비트로 구성되면, 유닛으로서 복수의 곱셈기들(84(3)-84(0))은 곱셈기 블록(62)의 일부로서 8-비트 곱셈기에 의해 24-비트에 의한 한 개의 16-비트를 구성하도록 구성될 수 있다.
[0064] 도 6을 계속해서 참조하면, 이 예에서의 곱셈기들(84(3)-84(0))은 16-비트 곱 모드에 의해 16-비트로 구성됨으로서 보여진다. 각각의 16-비트 입력 합들(94(3), 94(2)) 및 16-비트 입력 캐리들(96(3), 96(2))은 각각의 곱셈기(84(3), 84(2))에 의해 생성된다. 각각의 16-비트 입력 합들(94(1), 94(0)) 및 입력 캐리들(96(1), 96(0))은 각각의 곱셈기(84(1), 84(0))에 의해 생성된다. 입력 합들(94(3)-94(0)) 및 입력 캐리들(96(3)-96(0))을 함께 추가하기 위해, 16-비트 입력 합들(94(1), 94(0)) 및 입력 캐리들(96(1), 96(0))과 마찬가지로 16-비트 입력 합들(94(3), 94(2)) 및 입력 캐리들(96(3), 96(2))은 또한 24-비트 4:2 압축기(109)에 제공된다. 프로그램 가능한 데이터 경로(91)가 입력 합들(94(3)-94(0)) 및 입력 캐리들(96(3)-96(0))과 함께 활성화되고 게이팅(gating)될 때, 추가된 입력 합들(94(3)-94(0)) 및 입력 캐리들(96(3)-96(0))은 단일의 합(98) 및 단일의 캐리(100)를 16-비트 곱 모드에 의한 16-비트 내에 제공한다. 프로그램 가능한 데이터 경로(91)은 16-비트 워드로서 조합된 입력 합들(94(3), 94(2))을 가지는 제1 AND-기초 게이트(102(3))에 의해 게이팅되고, 24-비트 4:2 압축기(109)에 제공되도록 16-비트로서 조합된 입력 캐리들(96(3), 96(2))을 가지는 제2 AND-기초 게이트(102(2))에 의해 게이팅된다. 프로그램 가능한 데이터 경로(91)는 또한 16-비트 워드로서 조합된 입력 합들(94(1), 94(0))을 가지는 제3 AND-기초 게이트(102(1))에 의해 게이팅되고, 24-비트 4:2 압축기(109)에 제공되는 16-비트로서 조합된 입력 캐리들(96(1), 96(0))을 가지는 제4 AND-기초 게이트(102(0))에 의해 게이팅된다. 만약 곱셈기 블록(62)이 16-비트에 의한 16-비트 또는 8-비트 곱 모드에 의한 24-비트로 구성되면, 프로그램 가능한 출력 데이터 경로(70[0])는 압축된 32-비트 합(S0) 및 32-비트 캐리(C0) 부분적 물건으로서 벡터 곱 출력 샘플 세트(68[0])와 함께 제공된다.
[0065] 만약 곱셈기 블록(62) 내의 곱셈기들(84(3)-84(0))이 8-비트 곱셈기 모드에 의해 8-비트로 구성되면, 프로그램 가능한 출력 데이터 경로(70[1]) 구성은 16-비트 입력 합들(94(3)-94(0)) 및 압축 없이 부분적 물건들로서, 대응하는 16-비트 입력 캐리들(96(3)-96(0))로서 제공된다. 만약 곱셈기 블록(62) 내의 곱셈기들(84(3)-84(0))이 8-비트 곱 모드에 의해 8-비트로 구성되면, 프로그램 가능한 출력 데이터 경로(70[1])는 16-비트 입력 합들(94(3)-94(0)) 및 압축 없이 부분적 물건들로서, 대응하는 16-비트 입력 캐리들(96(3)-96(0))로서 제공된다. 곱셈기 블록(62)의 곱셈 모드에 의존하는 벡터 곱 출력 샘플 세트들(68[0], 68[1])은 실행되는 벡터 명령에 따라 합 및 캐리 물건들의 누적을 위해 누적기 블록들(72(3)-72(0))에 제공된다.
[0066] 이제까지 프로그램 가능한 데이터 구성들을 가지는 도 5 및 도 6의 곱셈기 블록들(62(3)-62(0))이 설명되었고, 리던던트 캐리-저장 포맷으로 구성된 누적기 블록들(72(3)-72(0))과 융합되는 VPE(22) 내의 곱셈기 블록들(62(3)-62(0))의 특징들이 도 7을 참조하여 이제부터 일반적으로 설명된다.
[0067] 이와 관련하여, 도 7은 도 2 및 도 3의 VPE 내의 곱셈기 블록 및 누적기 블록의 일반화된 개략도이며, 누적기 블록은 캐리 전파를 줄이기 위해 리던던트 캐리-저장 포맷을 이용하는 캐리-저장 누적기 구조를 이용한다. 앞서 논의되고 도 7에서 도시된 바와 같이, 곱셈기 블록들(62)은 피승수 입력들(66[H], 66[L])을 곱하고, 벡터 곱 출력 샘플 세트들(68)로서 적어도 하나의 입력 합(94) 및 적어도 하나의 입력 캐리(96)을 프로그램 가능한 출력 데이터 경로(70) 내에 제공하도록 구성된다. 각각의 누적 단계에 있어서 누적기 블록(72) 내에 캐리 전파 경로 및 캐리 전파 덧셈기를 제공할 필요를 제거하기 위해, 프로그램 가능한 출력 데이터 경로(70) 내의 벡터 곱 출력 샘플 세트들(68) 내의 적어도 하나의 입력 합(94) 및 적어도 하나의 입력 캐리(96)가 적어도 하나의 누적기 블록(72)에 대한 리던던트 캐리-저장 포맷으로 융합된다. 다시 말해서, 벡터 곱 출력 샘플 세트들(68) 내의 캐리(96)는 누적기 블록(72)에 대한 캐리-저장 포맷 내의 벡터 입력 캐리(96)로서 제공된다. 이러한 방식으로, 벡터 곱 출력 샘플 세트들(68) 내의 입력 합(94) 및 입력 캐리(96)는 누적기 블록(72)의 압축기(108) ― 이 실시예에서 이것은 복소 게이트 4:2 압축기임 ― 에 제공될 수 있다. 압축기(108)는 입력 합(94) 및 입력 캐리(96)를 이전의 누적된 벡터 출력 합(112) 및 이전의 시프트(shift)된 누적 벡터 출력 캐리(117)와 각각 융합되도록 구성된다. 이전의 시프트된 누적 벡터 출력 캐리(117)는 누적 동작 동안 본질적으로 저장된 캐리 누적이다.
[0068] 이러한 방식으로, 오직 단일의, 마지막 캐리 전파 덧셈기는 누적기 블록(72)에 의해 생성된 누적의 일부로서 입력 합(94)에 수신된 입력 캐리(96)를 전파하도록 누적기 블록(72) 내에 제공될 필요가 없다. 누적기 블록(72) 내에서 각각의 누적 단계 동안 캐리 전파 추가 동작을 수행하는 것과 연관된 전력 소비는 이 실시예에서 감소된다. 또한, 누적기 블록(72) 내에서 각각의 누적 단계 동안 캐리 전파 추가 동작을 수행하는 것과 연관된 게이트 딜레이는 또한 이 실시예에서 제거된다.
[0069] 도 7을 계속해서 참조하면, 압축기(108)는 리던던트 형태의 입력 합(94) 및 입력 캐리(96)는 이전의 누적된 벡터 출력 합(112) 및 이전의 시프트된 누적된 벡터 출력 캐리(117)와 각각 누적되도록 구성된다. 시프트된 누적된 벡터 출력 캐리(117)는 다음의 수신된 입력 합(94) 및 입력 캐리(96)의 다음의 누적이 압축기(108)에 의해 수행되기 전에, 누적된 벡터 출력 캐리(114)를 시프트하는 것에 의해 압축기(108) 비트에 의해 생성된 누적된 벡터 출력 캐리(114)에 의해 생성된다. 최종 시프트된 누적된 벡터 출력 캐리(117)는 누적기 블록(72) 내에 제공되는 단일의 최종 캐리 전파 덧셈기(119) ― 최종 누적된 벡터 출력 합(112)을 최종 누적기 출력 샘플 세트(76) 2의 보수 기호로 바꾸기 위해 최종 시프트된 누적된 벡터 출력 캐리(117)를 전하함 ― 에 의해 최종 누적된 벡터 출력 합(112)에 더해진다. 최종 누적된 벡터 출력 합(112)은 프로그램 가능한 출력 데이터 경로(74)(도 3을 참조)에 누적기 출력 샘플 세트(76)로서 제공된다.
[0070] 이제까지 리던던트 캐리-저장 포맷 내에 구성된 누적기 블록(72)를 가지는 곱셈기 블록들(62)의 융합을 도시하는 도 7이 설명되었고, 누적기 블록들(72(3)-72(0))에 관한 더 예시적인 세부사항이 도 8을 참조하여 이제부터 설명된다. 이하에서 설명되는 도 9A 내지 도 9C는 공통 회로 및 하드웨어를 가지는 상이한 벡터 누적 동작들을 제공하기 위해, 상이한 누적 모드들에서 리던던트 캐리-저장 포맷으로 구성된 누적기 블록들(72(3)-72(0))의 더 예시적인 세부사항을 제공한다.
[0071] 도 8은 도 3의 VPE(22) 내에 제공된 누적기 블록(72)의 예시적인 내부 구성요소들의 상세한 개략도이다. 앞서 논의되고 이하에서 보다 상세히 논의되는 바와 같이, 누적기 블록(72)은 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))로 구성되므로, 누적기 블록(72)은 벡터 누적 동작들의 특정한, 상이한 유형들을 수행하도록 디자인된 전용 회로로서 행동하도록 프로그램될 수 있다. 예를 들어, 표시된 누적 동작 및 표시되지 않은 누적 동작을 포함하는 누적기 블록(72)은 상이한 누적들 및 덧셈들의 개수를 제공하도록 프로그램될 수 있다. 프로그램 가능한 입력 데이터 경로들(78(3)-78(0)) 및/또는 누적 동작들의 상이한 유형들을 제공하도록 구성되는 누적기 블록(72) 내의 프로그램 가능한 내부 데이터 경로들(80(3)-80(0))의 특정한 예들은 이하에서 논의되는 도 9A 내지 도 9C에서 도시된다. 또한, 누적기 블록(72)은 감소된 조합 논리를 가지는 고속 누적 동작들을 제공하기 위해 캐리 전파를 피하거나 줄이도록 리던던트 캐리 산술(arithmetic)을 제공하는 캐리-저장 누적기들(72[0], 72[1])을 포함하도록 구성된다.
[0072] 누적기 블록(72)의 예시적인 내부 구성요소들은 도 8에서 보여진다. 도 8에 도시된 바와 같이, 이 예에서 누적기 블록(72)은 모두 누적되기 위해 제1 입력 합(94[0]) 및 제1 입력 캐리(96[0])와 제2 입력 합(94[1]) 및 제2 입력 캐리(96[1])를 곱셈기 블록(62)으로부터 수신하도록 구성된다. 도 8을 참조하면, 입력 합들(94[0], 94[1]) 및 입력 캐리들(96[0], 96[1])은 벡터 입력 합들(94[0], 94[1]) 및 벡터 입력 캐리들(96[0], 96[1])로서 인용될 수 있다. 앞서 설명되고 도 6에서 도시된 바와 같이, 이 실시예에서의 벡터 입력 합들(94[0], 94[1]) 및 벡터 입력 캐리들(96[0], 96[1]) 각각은 16-비트들의 길이이다. 이 예에서의 누적기 블록(72)은 2개의 24-비트 캐리-저장 누적기들(72[0], 72[1])로서 제공되며, 각각은 공통 요소 숫자들 ― 캐리-저장 누적기(72[0])로 디자인되는 '[0]' 및 캐리-저장 누적기(72[1])로 디자인되는 '[1]' ― 을 가지는 유사한 구성요소들을 포함한다. 캐리-저장 누적기들(72[0], 72[1])은 벡터 누적 동작들을 동시에 수행하도록 구성될 수 있다.
[0073] 도 8의 캐리-저장 누적기(72[0])를 참조하면, 벡터 입력 합(94[0]) 및 벡터 입력 캐리(96[0])는 프로그램 가능한 내부 데이터 경로(80[0])의 일부로서 제공되는 멀티플렉서(104(0))의 입력이다. 배타적 OR-기초 게이트들이 포함될 수 있는 부정(negating) 회로(106(0))는 또한 입력(107(0))에 따라 부정의(negative) 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]')를 요구하는 누적 동작들에 대한 멀리플렉서(104(0))로의 입력으로서 부정의 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]')을 생성하도록 제공된다. 멀티플렉서(104(0))는 벡터 명령 디코딩의 결과로서 생성된 선택자 입력(110(0))에 따라 압축기(108(0))에 제공되는 벡터 입력 합(94[0]) 및 벡터 입력 캐리(96[0]) 또는 부정의 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]') 중 하나를 선택하도록 구성된다. 이와 관련하여, 선택자 입력(110(0))은 캐리-저장 누적기(72[0])의 프로그램 가능한 입력 데이터 경로(78[0])가 누적기 블록(72)에 의해 수행되도록 구성된 누적 동작에 따라 압축기(108(0))에 벡터 입력 합(94[0]) 및 벡터 입력 캐리(96[0]), 또는 부정의 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]') 중 하나를 제공하도록 프로그램 가능한 것을 허용한다.
[0074] 도 8을 계속해서 참조하면, 이 실시예에서 캐리-저장 누적기(72[0])의 압축기(108(0))는 복소 게이트 4:2 압축기이다. 이와 관련하여, 압축기(108)는 리던던트 캐리-저장 동작들에서 합들과 캐리들을 누적하도록 구성된다. 압축기(108)는 현재의 벡터 입력 합(94[0]) 및 벡터 입력 캐리(96[0]), 또는 현재의 부정의 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]')를 이전의 벡터 입력 합(94[0]) 및 벡터 입력 캐리(96[0]), 또는 누적된 부정의 벡터 입력 합(94[0]') 및 부정의 벡터 입력 캐리(96[0]')를 압축기(108(0))에 대한 4개의 입력들로서 함께 누적하도록 구성된다. 압축기(108(0))는 누적기 출력 샘플 세트들(76(3)-76(0))을 제공하기 위해 프로그램 가능한 출력 데이터 경로(74[0])(도 3을 참조) 내의 누적기 출력 샘플 세트(76[0])로서 누적된 벡터 출력 합(112(0)) 및 누적된 벡터 출력 캐리(114(0))을 제공한다. 누적된 벡터 출력 캐리(114(0))는 각각의 누적 단계 동안 비트 폭 증가를 제어하는 시프트된 누적된 벡터 출력 캐리(117(0))를 제공하기 위해 누적 동작들 동안 비트 시프터(shifter)(116(0))에 의해 시프트된다. 예를 들어, 이 실시예에서의 비트 시프터(116(0))는 리던던트 캐리-저장 포맷에서 압축기(108(0))에 융합되는 배럴-시프터(barrel-shifter)이다. 이러한 방식으로, 시프트된 누적된 벡터 출력 캐리(117(0))는 누적기(72[0])에 의해 수행되는 누적 동작 동안 누적된 벡터 출력 합(112(0))으로 전파되어야만 하는 것 없이 본질적으로 저장된다. 이러한 방식으로, 각각의 누적기(72[0])에서의 누적 단계 동안 캐리 전파 추가 동작을 수행하는 것과 연관된 전력 소비 및 게이트 딜레이는 이 실시예에서 제거된다.
[0075] 추가적으로 후속하는 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[0]) 또는 부정의 벡터 입력 합들(94[0]') 및 부정의 벡터 입력 캐리들(96[0]')은 현재의 누적 벡터 출력 합(112(0) 및 현재의 누적 벡터 출력 캐리(117(0))와 누적될 수 있다. 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[0])은, 또는 부정의 벡터 입력 합들(94[0]') 및 부정의 벡터 입력 캐리들(96[0]')은, 벡터 명령 디코딩의 결과로서 생성된 합-캐리 선택자(120(0))에 따라 프로그램 가능한 내부 데이터 경로(80[0])의 일부로서 멀티플렉서(118(0))에 의해 선택된다. 현재 누적된 벡터 출력 합(112(0)) 및 현재 시프트된 누적된 벡터 출력 합(117(0))은 업데이트된 누적된 벡터 출력 합(112(0)) 및 누적된 벡터 출력 캐리(114(0))를 제공하기 위해 캐리-저장 누적기(72[0])에 있어서 압축기(108(0)에 대한 입력으로서 제공될 수 있다. 이와 관련하여, 합-캐리 선택자(120(0))는 누적기(72[0])의 프로그램 가능한 내부 데이터 경로(80[0])가 누적기 블록(72)에 의해 수행되도록 구성된 누적 동작에 따라 압축기(108(0))에 대한 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[0])을 제공하도록 프로그램 가능한 것을 허용한다. 홀드(hold) 게이트들(122(0), 124(0))은 또한 이 실시예에서 캐리-저장 누적기(72[0])에서의 누적의 동작 타이밍을 제어하는 홀드 상태 입력(126(0))에 따라, 멀티플렉서(118(0))가 누적된 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))의 현재 상태을 유지시키는 것을 제공된다.
[0076] 도 8을 계속해서 참조하면, 캐리-저장 누적기(72[0])의 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))와 캐리-저장 누적기(72[1])의 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))는 제어 게이트들(134(0), 136(0), 134(1), 136(1))에 의해 각각 게이팅된다. 제어 게이트들(134(0), 136(0), 134(1), 136(1))은, 압축기들(108(0), 108(1))로 반환되는 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))와 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))를 각각 제어한다.
[0077] 요약하면, 도 8의 누적기 블록(72)의 누적기들(72[0], 72[1])의 프로그램 가능한 입력 데이터 경로들(78[0], 78[1]) 및 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])을 가지는, 누적기 블록(72)은 상이한 모드들로 구성될 수 있다. 누적기 블록(72)은 도 8에 도시된 공통 누적기 회로를 가지는 특정한 벡터 프로세싱 명령에 따라, 상이한 누적 동작들을 제공하도록 구성될 수 있다. 공통 누적기 회로를 가지는 특정한 벡터 프로세싱 명령에 따라 상이한 누적 동작들을 제공하도록 구성되는 누적기 블록(72)의 예들은 하기 도 9A 내지 도 9C에서 도시된다.
[0078] 이와 관련하여, 도 9A는 도 8의 누적기 블록(72)의 개략도이다. 이 예에서, 누적기 블록(72)은 이중 24-비트 누적기 모드를 제공하도록 프로그램된 프로그램 가능한 입력 데이터 경로들(78[0], 78[1]) 및 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])을 가진다. 도 9의 누적기 블록(72)에서 각각의 캐리-저장 누적기(72[0], 72[1])는 24-비트 누적기를 제공하도록 구성된다. 누적기들(72[0], 72[1])의 24-비트 누적 용량들은 압축기들(108(0), 108(1))의 비트 용량에 의해 제공된다. 도 8을 참조한 누적기들((72[0], 72[1]))의 논의는 도 9A의 누적기들(72[0], 72[1])에 의해 제공되는 개별적인 24-비트 누적들을 설명한다. 누적 블록(72)에서 이중 24-비트 누적들을 제공하기 위해 누적기들(72[0], 72[1])에 의해 수행되는 누적들의 일반적인 데이터 경로는 도 9A의 프로그램 가능한 누적 데이터 경로들(132(0), 132(1))에서 각각 보여진다.
[0079] 도 9A를 계속해서 참조하면, 캐리-저장 누적기(72[0])의 예시적인 구성요소들이 설명될 것이나, 캐리-저장 누적기(72[1])에 동일하게 적용 가능하다. 이 실시예에서, 캐리-저장 누적기(72[0])의 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))와, 캐리-저장 누적기(72[1])의 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))는 제어 게이트들(134(0), 136(0) 및 134(1), 136(1))에 의해 각각 게이팅 된다. 제어 게이트들(134(0), 136(0) 및 134(1), 136(1))은, 압축기들(108(0), 108(1))로 반환되는 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 합(117(0))과 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))를 각각 제어한다. 벡터 명령들의 디코딩으로부터 양쪽 제어 게이트들(134(0), 136(0) 및 134(1), 136(1))으로 각각 제공되는 제어 입력들(138(0), 138(1))은 압축기들(108(0), 108(1))로 반환되는 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))와, 캐리-저장 누적기(72[1])의 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))를 각각 제어한다. 제어 입력들(138(0), 138(1)) 및 제어 게이트들(134(0), 136(0))은 도 9B 및 9C를 참조하여 이하에서 더 상세히 논의되는 바와 같이, 누적기들(72[0], 72[1]) 각각이 분리된 누적 동작들 또는 조합된 누적 동작들을 수행하도록 프로그램되는지 여부를 제어할 수 있다. 따라서, 이 실시예에서 제어 입력들(138(0), 138(1)) 및 제어 게이트들(134(0), 136(0), 134(1), 136(1))은 누적기들(72[0], 72[1])의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])의 일부를 각각 형성한다.
[0080] 다시 도 8을 참조하면, 누적기 블록(72)의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])은 또한 개별적인 누적기들(72[0], 72[1])의 24-비트 용량보다 더 큰 누적 동작들을 수행하도록 프로그램 및/또는 재프로그램될 수 있다. 이와 관련하여, 누적기들((72[0], 72[1])의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])은 단일의 벡터 누적 동작에서 함께 이용되는 모든 누적기들(72[0], 72[1])을 제공하도록 프로그램될 수 있다. 누적기들(72[0], 72[1])은 누적기들(72[0], 72[1])의 개별적인 비트 누적 용량들보다 더 큰 비트 용량의 단일 누적 동작을 제공하도록 프로그램될 수 있다. 누적기들(72[0], 72[1])의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])은 캐리-저장 누적기(72[0])가 압축기(108(0))로부터 다음의 캐리 출력(NCO)으로서 오버플로우(overflow) 캐리 출력을 전파하는 것을 허용하도록 구성될 수 있다. NCO(137(0))는 캐리-저장 누적기(72[1]) 내의 압축기(108(1))에 다음의 캐리 입력(NCI)(139(1))으로서 제공될 수 있다. 누적기들(72[0], 72[1]) 내의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])로서 제공된 이러한 캐리 전파 구성 용량은, 도 8을 참조하여 이전에 설명된 바와 같이, 누적기들(72[0], 72[1])이 이러한 실시예에서 40-비트 누적을 제공하기 위해 24-비트 오버플로우 캐리 전파를 24-비트 캐리 및 합 누적들에 제공하는 것을 허용한다.
[0081] 이와 관련하여, 도 9B는 도 8의 동일한 누적기 블록(72)의 개략도이다. 도 9B에서, 누적기 블록(72)는 단일의 누적 동작 모드에서 구성되도록 보여진다. 도 9B에서, 누적기들(72[0], 72[1])은 누적기 블록(72) 내에 단일의 누적 동작을 제공하기 위해 구성된 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])을 가진다. 누적기 블록(72)의 단일의 누적기 모드의 이러한 예에서, 누적기들(72[0], 72[1])은 단일의 40-비트 누적된 벡터 출력 합(112) 및 시프트된 누적된 벡터 출력 캐리(117)를 누적한다. 단일의 누적된 벡터 출력 합(112)은 프로그램 가능한 출력 데이터 경로들(74[0], 74[1])(또한 도 3을 참조) 내에서 누적기 출력 샘플 세트(76)로서 제공된 누적된 벡터 출력 합들(112(0), 112(1))로 구성된다. 누적된 벡터 출력 합(112(0))은 단일의 40-비트 누적된 벡터 출력 합(112)의 최하위 비트들을 포함한다. 누적된 벡터 출력 합(112(1))은 단일의 40-비트 누적된 벡터 출력 합(112)의 최상위 비트들을 포함한다. 유사하게, 시프트된 누적된 벡터 출력 캐리(117)는 시프트된 누적된 출력 캐리들(117(0), 117(1))로 구성된다. 시프트된 누적된 벡터 출력 캐리(117(0))는 단일의 시프트된 누적된 벡터 출력 캐리(117)의 최하위 비트들을 포함한다. 시프트된 누적된 벡터 출력 합(114(1))은 단일의 시프트된 누적된 벡터 출력 캐리(114)의 최상위 비트들을 포함한다. 누적 벡터 출력 합(114[0]) 및 시프트된 누적된 벡터 출력 캐리(117(0))는 프로그램 가능한 출력 데이터 경로(74[0])(도 3 참조)에 제공된다.
[0082] 도 9B를 계속해서 참조하면, 누적기 블록(72)이 단일 누적 모드(예를 들면, 40-비트 누적)로 구성될 때, 누적기들(72[0], 72[1])에 의해 수행된 누적 동작들의 일반적인 데이터 경로는 프로그램 가능한 누적 데이터 경로(146)로서 보여진다. 이와 관련하여, 앞서 설명한 바와 같이 누적기 블록(72)은 벡터 입력 합(94) 및 벡터 입력 캐리(96)를 수신한다. 경우에 따라, 캐리-저장 누적기(72[0])는 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[0]), 또는 부정의 벡터 입력 합들(94[0]') 및 부정의 벡터 입력 캐리들(96[0]')의 누적들로부터 누적된 벡터 출력 합(112(0)) 및 누적된 벡터 출력 캐리(114(0))의 최하위 비트들을 누적한다. 경우에 따라, 캐리-저장 누적기(72[1])는 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[0]), 또는 부정의 벡터 입력 합들(94[0]') 및 부정의 벡터 입력 캐리들(96[0]')의 누적들로부터 누적된 벡터 출력 합(112(1)) 및 누적된 벡터 출력 캐리(114(1))의 최상위 비트들을 누적한다.
[0083] 도 9B를 계속해서 참조하면, 단일의 누적된 벡터 출력 합(112) 및 누적된 벡터 출력 캐리(114)를 제공하도록 누적기들(72[0], 72[1])을 프로그램하기 위해, 누적기들(72[0], 72[1])의 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])은 단일의 누적 동작을 제공하도록 프로그램된다. 이와 관련하여, 캐리-저장 누적기(72[0])의 압축기(108(0))의 NCO(137(0)) 및 캐리-저장 누적기(72[1])의 압축기(108(1))의 NCI(139(1))는 단일의 누적기(예를 들면, 40-비트 누적기)를 누적기 블록(72)에 제공하기 위해 구성된다. 캐리-저장 누적기(72[1])의 압축기(108(1))의 NCI(139(1))는 NCI 제어 입력(142(1))를 가지는 NCI 게이트(140(1))에 의해 게이팅된다. 이러한 방식으로, 캐리-저장 누적기(72[0])로부터 캐리-저장 누적기(72[1])까지 오버플로우 캐리 전파를 이용한 단일의 누적 동작을 제공하기 위해 누적기 블록(72)에 누적기들(72[0], 72[1])이 요구될 때, NCI 제어 입력(142(1))은 캐리-저장 누적기(72[1])의 프로그램 가능한 내부 데이터 경로(80[1])의 일부로서 활성화될 수 있다. NCI 제어 입력(142(1))은 NCI 게이트(140(1))가 압축기(108(0))로부터 압축기(108(1))까지 오버플로우 캐리 전파를 허용하도록 야기한다. NCI 제어 입력(142(1))은 압축기(108(0))가 압축기(108(1))에 대한 NCI(139(1))로서 NCO(137(0))를 생성하도록 야기시키기 위해 캐리-저장 누적기(72[0]) 내의 압축기(108(0))의 캐리 전파 입력(144(0))에 또한 연결된다. 이러한 구성들은 캐리-저장 누적기(72[1])가 단일의 누적된 벡터 출력 합(112) 및 누적된 벡터 출력 캐리(114)를 제공할 수 있는 방식으로 벡터 입력 합들(94[1]) 및 벡터 입력 캐리들(96[1])을 누적하는 것을 허용한다.
[0084] 도 9B에 보여지는 바와 같이, 누적기 블록(72) 내의 캐리-저장 누적기(72[1])는 또한 NCI(139(0))에 의해 게이팅된 NCI 게이트(140(0)) 및 NCI 제어 입력(142(0))을 포함함을 유의하라. 그러나, 캐리-저장 누적기(72[0])는 단일의 누적 동작의 최하위 비트들을 누적하기 때문에, 이 실시예에서 NCI 제어 입력(142(0)) 및 NCI(139(0)) 모두는 논리적('0')에 관련된다. 또한 캐리-저장 누적기(72[1])의 압축기(108(0))는 또한 캐리 전파 입력(144(1))을 포함하나, 캐리 전파 입력(144(1))은 이 실시예에서 누적기(72(1))가 NCO(12(1))을 생성하지 않도록 하기 위해 논리적('0')과 연관된다. 누적기 블록(72)의 이러한 실시예에서 제공된 캐리-저장 누적기(72[1]) 너머에 다른 누적기가 존재하지 않으므로, 캐리-저장 누적기(72[1])는 이 실시예에서, 다음의 누적기에 캐리 전파를 수행할 필요가 없다.
[0085] 도 9C는 도 8의 동일한 누적기 블록(72)의 다른 누적기 모드의 개략도이다. 이와 관련하여, 도 9C는 누적기 블록(72)에 다른 누적 모드를 제공하기 위해 단일의 누적기가 뒤따르는 캐리-저장 덧셈기를 제공하는 프로그램된 데이터 경로 구성들을 가지는 도 8의 누적기 블록(72)의 개략도이다. 몇몇의 누적기 동작들은 복소 산술을 수행하는 추가의 덧셈기를 필요로 할 수 있다. 도 9C에서, 누적기들(72[0], 72[1])은 단일의 24-비트 누적기에 뒤따르는 16-비트 캐리-저장 덧셈기를 제공하기 위해 구성된 프로그램 가능한 내부 데이터 경로들(80[0], 80[1])을 가진다.
[0086] 도 9C를 참조하면, 누적기 블록(72)이 단일의 누적기가 뒤따르는 캐리-저장 덧셈기로 구성될 때 누적기들(72[0], 72[1])에 의해 수행되는 누적들의 일반적인 데이터 경로는 프로그램 가능한 데이터 경로에 의해 보여진다. 이와 관련하여, 멀티플렉서(118(0))가 벡터 입력 합들(94[1]) 및 벡터 입력 캐리들(96[0])을 제어 게이트들(134(0), 136(0))에 제공하도록 하기 위해 합-캐리 선택자(120(0))가 벡터 명령 디코딩의 결과로서 생성된다. 제어 게이트들(134(0), 136(0))이 벡터 입력 합(94[1]) 및 벡터 입력 캐리(96[1])를 압축기(108(0))에 제공하도록 야기하기 위해 캐리-저장 누적기(72)의 프로그램 가능한 내부 데이터 경로(80[1])를 프로그램 하도록 제어 입력(138(0))이 활성화된다. 벡터 입력 합(94[1]) 및 벡터 입력 캐리(96[1])는 누적된 벡터 출력 합(112(0)) 및 누적된 벡터 출력 캐리(114(0))를 제공하도록 캐리-저장 누적기(72[0])의 압축기(108(0))에 의해 벡터 입력 합들(94[0]) 및 벡터 입력 캐리들(96[1])과 함께 누적된다. 캐리-저장 덧셈기를 제공하기 위해 누적된 벡터 출력 합(112(0)) 및 시프트된 누적된 벡터 출력 캐리(117(0))는 프로그램 가능한 출력 데이터 경로(74[0])(또한, 도 3 참조) 내에 누적기 출력 샘플 세트(76[0])로서 제공된다. 24-비트 누적기로서 프로그램 가능한 출력 데이터 경로(74[1])(또한, 도 3 참조) 내의 누적기 출력 샘플 세트(76[1])로서 누적된 벡터 출력 합(112(1)) 및 시프트된 누적된 벡터 출력 캐리(117(1))를 제공하기 위해 시프트된 누적된 벡터 출력 캐리(117(0))는 또한, 벡터 입력 합(94[1]) 및 벡터 입력 캐리(96[1])를 누적시키기 위해 멀티플렉서(104(1)를 통해 압축기(108(1))로 전달되는 프로그램 데이터 경로(148)에서 보여지는 바와 같이, 캐리-저장 누적기(72[1])에 제공된다.
[0087] 도 5 내지 도 9C에서 상술된 바와 같이, VPE(22)에서 제공된 곱셈기 블록들(62(0-A)) 및 누적기 블록들(72(0-A))은 또한 래딕스-2X 버터플라이 벡터 동작들을 제공하도록 간편하게 프로그램될 수 있다. 래딕스-2X 버터플라이 벡터 동작들은 FET 벡터 프로세싱 동작들을 수행하도록 사용될 수 있다. FET 동작들은 예로서 선형 필터링, 상호 분석, 및 스펙트럼 분석과 같은 다양한 디지털 신호 프로세싱 적용들에서 일반적으로 수행된다. 따라서, 감소된 프로세싱 회수들 및 전력 효율적인 방식으로 FET 벡터 프로세싱 동작들을 수행할 수 있는 VPE들을 제공하는 것이 유리할 수 있다.
[0088] 알려진 바와 같이, 이산(Discrete) FET(DFT)는 길이 N의 데이터({x(n)})의 다른 시퀀스가 주어진 N복소수들의 시퀀스들({X(k)})을 계산함으로써 계산될 수 있다.
[0089] k의 각각의 값에 있어서, X(k)의 직접 계산은 N 복소 곱셈들(4N 실제 곱셈들) 및 N-1 복소 덧셈들(4N-2 실제 추가들)을 내포하는 것이 상기 X(k)에 대한 형태로부터 관찰된다. 결과적으로, DFT의 모든 N 값들을 계산하는 것은 N2 복소 곱셈들 및 N2-N 복소 덧셈들을 필요로 한다. 이하에서 보여지는 위상 팩터 WN의 대칭 및 주기성 특성(property)들을 인지함으로써, 분할 정복 접근은 N = 2X 포인트 DFT를 계산하도록 이용될 수 있다.
[0090] N-포인트 데이터 시퀀스는 x(n)의 짝수 및 홀수 샘플들에 각각 대응하는 두개의 N/2-포인트 데이터 시퀀스들(f1(n), f2(n))로 나뉘며, 이는:
또는
과 같다.
[0092] F1(k) 및 F2(k)는 N/2의 주기로 주기적이므로, F1(k+N/2) = F1(k) 및 F2(k+N/2) = F2(k)이다. 추가로, 트위들 팩터는 + N/2 = - 이다. 따라서, 식은 다음과 같이 표현될 수 있고, 결과적으로 N2 에서 N/2 log2N 곱셈들까지 곱셈들의 숫자가 감소한다.
[0093] 이와 관련하여, 도 10 내지 도 12를 참조하여 이하에서 보다 상세히 기술될 바와 같이, VPE(22)는 다른 산술적 논리 벡터 동작들을 제공하는데 사용될 수 있는 바와 같이 동일한 곱셈기 블록들(62(0-A)) 및 누적기 블록들(72(0-A))을 가지는 FET 동작들을 제공할 수 있다. 곱셈기 블록들(62(0)-62(A)) 내의 각 곱셈기8p4(0)-84(3))(도 6을 참조) 각각의 프로그램 가능한 데이터 경로들(90(3)-90(0)), 91, 92(3)-92(0))은 실행되는 특정한 래딕스-2X 버터플라이 벡터 명령에 따라 래딕스-2X 버터플라이 벡터 동작의 포인트에 대한 곱셈을 제공하도록 프로그램될 수 있다. 누적기 블록들(72(0)-72(A))(도 3 참조)의 프로그램 가능한 입력 데이터 경로들(78(0)-78(A)), 내부 데이터 경로들(80(0)-80(A)), 및/또는 출력 데이터 경로들(74(0)-74(A))은 실행될 래딕스-2X 버터플라이 벡터 명령에 따라 복수의 곱셈기 블록들(62(0)-62(A)) 중 곱셈기 블록(62)으로부터 래딕스-2X 버터플라이 곱셈 물건들을 누적하도록 프로그램될 수 있다. 누적기 블록들(72(0)-72(A))의 프로그램 가능한 입력 데이터 경로들(78(0)-78(A)), 내부 데이터 경로들(80(0)-80(A)), 및/또는 출력 데이터 경로들(74(0)-74(A))은 실행되는 래딕스-2X 버터플라이 벡터 명령에 따라 복수의 곱셈기 블록들(62(0)-62(A)) 중 곱셈기 블록(62)으로부터 래딕스-2X 버터플라이 곱셈 물건들을 누적하도록 다른 싸이클들에서 재프로그램될 수 있다. 누적기 블록들(72(0)-72(A))에 의해 누적된 마지막 누적된 래딕스-2X 버터플라이 곱셈 물건들은 FET 프로세싱 동작의 N 포인트들을 제공할 수 있다.
[0094] 곱셈기 블록들(62(0)-62(A)) 및 누적기 블록들(72(0)-72(A))은 또한 스케일링(scaling)을 하는 FET, 곱셈을 하는 FET, 위상-램프(ramp) 곱셈을 하는 FET, 삽입하는(interpolating) FET, 빠른 컨볼루션(convolution), FHT 변환들과 같이 다른 연관된 FET 동작들로 구성될 수 있다. 결과적으로, 더 적은 VPE들은 벡터 프로세서 내에 바람직한 래딕스-2X 버터플라이 벡터 동작들 및 산술 로직 벡터 동작들의 다른 유형들을 제공할 수 있으므로, 벡터 프로세서 내의 영역을 절약할 수 있으며, 여전히 스칼라 프로세싱 엔진들에 비해 더 적은 레지스터 기록들 및 더 빠른 벡터 명령 실행 횟수를 유지한다.
[0095] DFT 내의 데이터 포인트들 N의 개수가 4의 거듭 제곱이면(즉, N=4X), 래딕스-2 알고리즘은 계산에 이용될 수 있다. 그러나, 이러한 예에서, 래딕스-2X FET 알고리즘을 이용하는 것이 더 계산적으로 효율적이다. 예를 들어, 래딕스-4 FET 알고리즘은 N-포인트 입력 시퀀스를 4개의 부분 수열들, x(4n), x(4n+1), x(4n+2), x(4n+3), n = 0, 1, ... , N/4-1로 나누거나 데시메이팅(decimating)함으로써 제공될 수 있다.
및
[0096] 따라서, 상기 식으로부터 얻어지는 네개의 N/4-포인트 DFT들(F(l,q))은 N-포인트 DFT를 산출하도록 결합된다. N/4-포인트 DFT들을 조합하기 위한 표현은 래딕스-4 데시메이션-인-타임(decimation-in-time) 버터플라이 동작을 정의하며, 다음과 같이 매트릭스 형태로 표현될 수 있다.
[0097] 상술된 래딕스-4 버터플라이 동작 매트릭스는 포인트 q에 대한 N-포인트 DFT 내의 단일 포인트로서 제공된 N/4-포인트들을 재조합하도록 풀릴 수 있다. 모든 포인트들 q에 대한 전체 DFT를 풀기 위해, N-포인트 DFT 에 대해 계산된 단일 포인트들은 누적될 수 있다.
[0098] 이와 관련하여, 도 10은 상술된 래딕스-4 버터플라이 동작 매트릭스를 풀도록 래딕스 버터플라이 회로(146)를 형성하기 위해 누적 벡터 프로세싱 스테이지(60(2))(도 8 참조)에서 병렬인 두개의 누적기 블록들(72(0), 72(1))로 융합된 곱셈 벡터 프로세싱 스테이지(60(1))(도 5 참조) 내의 곱셈기(84)를 가지는 도 3의 VPE의 개념적인 개략도이다. 도 10을 참조하면, 래딕스 버터플라이 회로(146)는 래딕스-2 또는 래딕스-4 중 하나를 수행하도록 구성된다. VPE(22)는 곱셈기 블록(62)이 네개의 누적기들, 누적기 블록 (72[1]) 내의 누적기들(72[1][1], 72(1)(0)) 및 누적기 블록(72[1]) 내의 누적기들(72(0)(1), 72(0)(0))로 융합되도록 프로그램되며, VPE(22)는 이 실시예에서 래딕스 버터플라이 회로(146)을 제공하도록 리던던트 캐리-저장 포맷에서 구성된다. 리던던트 캐리-저장 포맷에서 구성될 수 있는 누적기 블록들(72)의 논의는 도 7 내지 도 9C를 참조하여 이전에 논의되었다. 곱셈기 블록(84)는 N-포인트 DFT의 하나의 포인트를 제공하기 위해 4개의 트위들 팩터들이 곱해진 단일 벡터 데이터 입력 샘플 세트(66)(즉, N/4 래딕스 포인트)의 4개의 곱셈 물건들을 제공할 수 있다. 래딕스 버터플라이 회로(146)에 포함되도록 프로그램된 곱셈기 블록(62) 내의 곱셈기들(84)의 개수는 실행되는 특정한 래딕스 버터플라이 벡터 명령에 띠라 래딕스 버터플라이 벡터 명령을 수행하는데 사용되는 비트 폭 벡터 데이터 입력 샘플 세트(66)에 기초한다.
[0099] 도 10을 계속해서 참조하면, 트위들 팩터 생성기(148(3)-148(0))는 VPE(22)에 제공된다. 래딕스 버터플라이 회로(146) 내에 포함되도록 프로그램된 곱셈기 블록(62) 내의 곱셈기(들)(84)에 제공되도록, 트위들 팩터 생성기들(148(3)-148(0))은 버터플라이 레인들(149(3)-149(0)) 내에서 트위들 팩터들(WN q)을 각각 생성할 수 있다. 트위들 팩터 생성기들(148(3)-148(0))을 제공함으로써, 래딕스 버터플라이 벡터 동작에 대한 트위들 팩터들(WN q)이 제공될 수 있다. 래딕스 버터플라이 회로(146)이 래딕스-2 버터플라이 벡터 동작을 위해 구성되면, 오직 단일의 트위들 팩터(WN 0) ― 1인 ― 가 트위들 팩터 생성기(148(0))로부터 필요하게 된다. 그러나, 래딕스 버터플라이 회로(146)가 래딕스-4 버퍼플라이 벡터 동작을 위해 구성되면, 4개의 트위들 팩터들(WN 3 - WN 0)이 하기 트위들 팩터 매트릭스에 따라 트위들 팩터 생성기들(148(3)-148(0))에 의해 생성되도록 필요하게 된다.
[0100] 이 실시예에서, 도 10의 동일한 곱셈기 블록(62)은 4회 반복되고, 4개의 누적기들(72(1)(1), 72(1)(0), 72(0)(1), 72(0)(0))로 융합된다. 이는 이 실시예의 래딕스 버터플라이 회로(146)가 N-포인트 DFT의 하나의 포인트를 제공하기 위해, 단일의 곱셈기 블록(62)가 4개의 트위들 팩터들에 의해 곱해진 단일의 벡터 데이터 입력 샘플 세트(66)(즉, N/4 래딕스 포인트)의 4개의 곱셈 물건들을 제공할 수 있도록 구성될 수 있기 때문이다. 래딕스 버터플라이 회로(146)에 포함되도록 프로그램된 곱셈기 블록(62) 내의 곱셈기들(84)의 개수는 실행되는 특정한 래딕스 버터플라이 벡터 명령에 따라 래딕스 버터플라이 벡터 명령을 수행하는데 사용되는 비트 폭 벡터 데이터 입력 샘플 세트(66)에 기초한다. 또한, 도 10의 래딕스 버터플라이 회로(146) 내의 누적기 블록(72[0])의 각각의 누적기(72[0](1), 72[0](0)) 및 누적기 블록(72[1])의 각각의 누적기(72[1][1], 72[1][0])는 N/4 래딕스 포인트를 누적하도록 프로그램되나, 추가적인 누적기 블록들(72)은 래딕스 버터플라이 동작의 비트 폭에 의존하여 래딕스 버터플라이 회로(146)에 포함되도록 프로그램될 수 있다.
[0101] 또한 이 실시예에서, 도 10의 래딕스 버터플라이 회로(146)는 클록 사이클 마다 N-포인트 래딕스-4 버터플라이 동작을 위해 N/2 log2N 곱셈들과 4개의 누적들을 제공할 수 있다. 따라서, N-포인트 래딕스-4 버터플라이 벡터 동작 중 하나의 버터플라이 동작을 완료하기 위해 오직 4개의 클록 사이클들이 필요하다. 이는 래딕스-2 버터플라이 동작으로서 동일한 스루풋(throughput)이다. 따라서, 래딕스 버터플라이 회로(146)는 N 클록 싸이클들에 래딕스-4 버터플라이 벡터 동작을 완료할 수 있다. 또한, 여기의 실시예들에 따르는 VPE(22)는 곱셈기 블록들(62(0)-62(A)) 및 누적기 블록들(72(0)-72(A))에 대한 데이터 경로 구성들에 따라 래딕스 버터플라이 회로들(146)의 개수를 제공할 수 있다. 따라서, VPE(22)가 클록 사이클 마다 N-포인트 래딕스 버터플라이 벡터 동작들 중 M 개를 수행하도록 구성될 수 있다면 ― 하나의 예로서 마치 래딕스-16 드래곤플라이 벡터 동작을 수행하면 ― N-포인트 래딕스-4 버터플라이 트랜잭션(transaction)을 수행하기 위해 VPE(22)에 대한 전반적인 클록 사이클 카운트는 (N/2 Log2 N) / M로 줄어든다. 게다가, 곱셈기 블록(62)과 리던던트 캐리-저장 포맷에서 구성된 누적기 블록들(72[91], 72[0])을 융합함으로써, 각각의 누적 단계 동안 캐리 전파 경로 및 캐리 전파 추가 동작은 전술한 바와 같이 필요없으며, 이를 통해 추가적인 프로세싱 시간과 전력 소비를 절약한다.
[0102] 추가적인 예시들을 제공하기 위해, 도 11은 래딕스-2 또는 래딕스-4 버터플라이 벡터 동작을 수행하도록 구성된 도 10의 래딕스 버터플라이 회로(146)의 하나의 싸이클의 개략도이다. 래딕스-2 버터플라이 벡터 동작을 수행하도록 구성된 래딕스 버터플라이 회로(146)는 첫째로 래딕스-4 버터플라이 벡터 동작이 뒤따르도록 기술될 수 있다. 위에서 논의된 바와 같이 래딕스-2 버터플라이 벡터 동작에 따르면, 하기 식들은 N 포인트 래딕스-2 버터플라이 동작을 제공하도록 풀린다.
[0103] 도 11을 계속해서 참조하면, 벡터 데이터 입력 샘플 세트들(66[1], 66[0])은 곱 벡터 프로세싱 스테이지(60(1))에서 수신된다. 짝수 및 홀수 샘플들 또는 X(k)의 포인트들에 기초하여, 벡터 데이터 입력 샘플 세트들(66[1], 66[0])은 2개의 N/2-포인트 데이터 시퀀스들 F1(k) 및 F2(k)로 나뉘는 DFT 포인트로 구성된다. ‘k’는 시퀀스에서 하나의 N/2 포인트를 나타내며, ‘k’는 각 싸이클 동안 누적된다. 곱셈기(84)는 벡터 곱 출력 샘플 세트들(즉, WN kF2(k))를 제공하기 위해 버터플라이 레인(149) 상의 입력으로서 트위들 팩터 W의 ‘e’ 구성요소 및 거듭제곱 구성요소와 F2(k)를 곱하는 두개의 곱셈들 양쪽을 제공하는 것이 일반적으로 필요하다. 그러나, 래딕스-2 버터플라이 동작에 대한 트위들 팩터는 하나이므로, 곱셈기(84)는 오직 이 예에서 ‘e’를 F2(k)에 곱하도록 사용될 수 있다. 따라서, 곱셈기(84)에 의한 중간의 곱셈 결과의 레지스터 저장이 절약된다. 누적기(72[1](1))는 누적된 벡터 출력 합(112[1](1)) 및 누적된 벡터 출력 캐리(117[1](1))로서 짝수 시퀀스 X(k) 내의 N/2 포인트를 제공하기 위해 벡터 곱 출력 샘플 세트들(68[0])을 데이터 포인트(F1(k))에 더한다. 누적기(72[0](1))는 누적된 벡터 출력 합(112[0](1)) 및 누적된 벡터 출력 캐리(117[0](1))로서 홀수 시퀀스 X(k+N/2) 내의 N/2 포인트를 제공하기 위해 벡터 곱 출력 샘플 세트들(68[0])을 데이터 포인트(F1(k))의 부정에 더한다. 부정 회로(106[0](1))은 벡터 곱 출력 샘플 세트(68[0])에 더해지기 전에 데이터 포인트(F1(k))를 부정한다. 짝수 시퀀스(X(k)) 및 홀수 시퀀스(X(k+N/2)) 각각의 가중(summation)을 나타내는 마지막 누적 출력 샘플 세트들(76[1](1), 76[1](0))을 제공하도록 데이터 시퀀스들이 합해질 때까지, 데이터 시퀀스들이 추가적인 벡터 데이터 입력 샘플 세트들(66[1], 66[0])이 수신되고 누적기들(72[1](1), 72[0](1))에 제공될 수 있으며, 누적된 벡터 출력 합(112[1](1)) 및 누적된 벡터 출력 캐리(117[1](1))와 누적된 벡터 출력 합(112[0](1)) 및 누적된 벡터 출력 캐리(117[0](1))가 각각 누적된다.
[0104] 위에서 논의된 바와 같이, 래딕스 버터플라이 회로(146)는 또한 래딕스-4 버터플라이 벡터 동작을 제공하도록 프로그램될 수 있다. 이와 관련하여, 벡터 포멧에서 N/4 래딕스 포인트들을 포함하는 벡터 데이터 입력 샘플 세트(66[0])는 곱 벡터 프로세싱 스테이지(60(1))에서 수신된다. 벡터 데이터 입력 샘플 세트(66[0])는 샘플들의 N/4 포인트 데이터 시퀀스들(F2(k)) 또는 X(k)의 포인트들로 나뉜 DFT 포인트로 구성된다. ‘k’는 시퀀스에서 하나의 N/4 포인트를 나타내며, ‘k’는 각각의 싸이클 동안 누적된다. 곱셈기(84)는 벡터 곱 출력 샘플 세트(68[0])(즉, WNkF2(k))를 제공하기 위해 ‘e’ 구성요소와 F2(k)를 곱하고 트위들 팩터(즉, WNk)의 거듭제곱 구성요소를 결정하는 두개의 곱셈들을 일반적으로 수행한다. 그러나, 래딕스-4 버터플라이 동작은 오직 4개의 가능한 트위들 팩터들(1, -1, j, -j)을 포함하므로, 트위들 팩터의 거듭제곱 구성요소의 복소 곱셈은 트위들 팩터(-1)에 의한 곱셈을 위해 F2(k)의 부정을 간단하게 제공함으로써, 트위들 팩터(j)에 의한 곱셈을 위해 F2(k)를 교환함으로써 그리고 트위들 팩터(-j)에 의한 곱셈을 위해 F2(k)를 부정 및 교환함으로써 피해질 수 있다. F2(k)의 부정 및/또는 교환은, 더욱이 레지스터 저장들 및 전력 소비를 절약하기 위해 오직 제1 싸이클 동안 트위들 팩터의 ‘e’ 구성요소를 F2(k)에 곱하는 것을 수행하도록 곱셈기(84)가 대신 사용될 수 있는 래딕스 버터플라이 회로(146)의 위상-램프 동작 동안 프로그램될 수 있다.
[0105] 이와 관련하여 도 11을 계속해서 참조하면, 이하에서 재생산되는 래딕스-4 트위들 팩터 매트릭스의 열(1)에 따라 누적기(72[1](1))는 항상 1의 트위들 팩터를 제공할 것이다. 그러나, 이하에서 재생산되는 래딕스-4 트위들 팩터 매트릭스의 열(2)에 따라 누적기(72[1](0))는 래딕스-4 트위들 팩터에 대한 임의의 트위들 팩터들을 제공할 수 있어야 한다. 따라서, 누적기(72[1](0))는, 부정 회로(106[1](0)) 및 각각의 N/4 포인트 시퀀스의 누적에 대한 각각의 누적기 블록(72[1]) 내의 누적기들(72[1][1], 72[1][0]) 및 누적기 블록(72[0]) 내의 누적기들(72[0](1), 72[0](0))에게 래딕스-4 트위들 팩터들 각각에 따라 +F2(k), -jF2(k), -F2(k) 및 +jF2(k)를 제공하도록 제어되는 교환 회로(109[1](0))를 포함한다. 누적기(72[0](1))는 이하에서 재생산된 래딕스-4 트위들 팩터 매트릭스에 따라 래딕스-4 트위들 팩터에 대한 임의의 트위들 팩터들을 제공할 수 있어야만 한다. 누적기(72[0](1))는 오직, 각각의 N/4 포인트 시퀀스의 누적에 대한 각각의 누적기들(72[1](1), 72[0](1))에 +F2(k) 및 누적기들(72[1](0), 72[0](0))에 -F2(k)를 제공하는 부정 회로(106[0](1))를 요구한다. 누적기(72[0](0))는 이하에서 재상산되는 래딕스-4 트위들 팩터 매트릭스 의 열(4)에 따라 래딕스-4 트위들 팩터에 대한 임의의 트위들 팩터들을 제공할 수 있어야만 한다. 따라서, 누적기(72[0](0))는 부정 회로(106[0](0)) 및 각각의 N/4 포인트 시퀀스의 누적에 대한 각각의 누적기 블록(72[1]) 내의 누적기들(72[1][1], 72[1][0]) 및 누적기 블록(72[0]) 내의 누적기들(72[0](1), 72[0](0))에 래딕스-4 트위들 팩터들 각각에 따라 +F2(k), -jF2(k), -F2(k) 및 +jF2(k)를 제공하도록 제어되는 교환 회로(109[1](0))를 포함한다.
[0106] 따라서 요약하면, 도 11의 래딕스-4 버터플라이 벡터 동작을 수행하도록 프로그램되는 래딕스 버터플라이 회로(146) 내의 누적기들(72[1][1], 72[1][0], 72[0](1), 72[0](0))은 하기와 같이 4개의 싸이클들에 걸쳐 뒤따르는 계산들을 수행할 수 있다. 이러한 계산들은 4개의 N/4 누적된 포인트 시퀀스들을 제공하기 위해 누적되며, 이러한 계산들은 그 다음으로 FET를 해결하도록 함께 누적될 수 있다.
[0107] VPE(22)는 또한 래딕스-16 버터플라이 동작(또한 “드래곤플라이 동작”으로 알려진) 용량을 제공하기 위해 도 11의 래딕스 버터플라이 회로(146)과 같은 4개에 달하는 래딕스 버터플라이 회로들을 수행하도록 프로그램될 수 있다. 이러한 시나리오에서, 트위들 팩터들은 간단한 +1, =1, +j, -j보다 더 복잡하게 되며, 그렇게 함으로써 각각의 래딕스 버터플라이 회로(146) 내의 곱셈기(84)에 의한 복소 곱셈을 요구한다.
[0108] 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 동작들을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지며, 그리고 여기서 논의된 개념들 및 실시예들에 따라, 도 2 및 도 3에서의 VPE(22)를 포함하나, 도 2 및 도 3에서의 VPE(22)에 제한되지 않는 VPE들은 임의의 프로세서에 기초한 디바이스에 제공되거나 임의의 프로세서로 집적될 수 있다. 제한 없는 예들은, 셋톱 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신들 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, 개인 디지털 어시스턴트(PDA), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 음악 재생기, 디지털 음악 재생기, 휴대용 음악 재생기, 디지털 영상 재생기, 영상 재생기, 디지털 영상 디스크(DVD) 재생기, 및 휴대용 디지털 영상 재생기를 포함한다.
[0109] 이와 관련하여, 도 12는 프로세서에 기초한 시스템(150)의 예를 도시한다. 이 예에서, 프로세서에 기초한 시스템(150)은 적어도 하나 또는 그 초과의 프로세싱 유닛들(PU들)(152)을 포함하고, 각각의 프로세싱 유닛은 하나 또는 그 초과의 프로세서들 또는 코어들(154)을 포함한다. PU(152)는 비-제한하는 예로서 도 2의 베이스밴드 프로세서(20)일 수 있다. 프로세서(154)는 비-제한하는 예로서 도 2에서 제공된 베이스밴드 프로세서(20)와 같은 벡터 프로세서일 수 있다. 이와 관련하여, 프로세서(154)는 또한 도 2의 VPE(22)를 포함하나 도 2의 VPE(22)에 제한되지 않는 VPE(156)을 포함할 수 있다. PU(들)(152)은 일시적으로 저장된 데이터로의 빠른 접속을 위해 프로세서(들)(154)에 커플링된 캐시 메모리(158)을 가질 수 있다. PU(들)(152)은 시스템 버스(160)에 커플링되고 프로세서에 기초한 시스템(150)에 포함된 마스터 및 슬레이브 디바이스들과 상호 커플링할 수 있다. 잘 알려진 바와 같이, PU(들)(152)은 시스템 버스(160)에 걸쳐 어드레스, 제어, 및 데이터 정보를 교환함으로써 이러한 다른 디바이스들과 통신한다. 예를 들어, PU(들)(152)은 슬레이브 디바이스의 예로서 메모리 제어기(162)에 버스 트랜잭션 요청들을 통신할 수 있다. 도 12에 도시되지 않음에도 불구하고, 다중 시스템 버스들(160)은 제공될 수 있으며, 각 시스템 버스(160)는 상이한 구조를 구성한다.
[0110] 다른 마스터 및 슬레이브 디바이스들은 시스템 버스(160)에 연결될 수 있다. 도 12에 도시된 바와 같이, 이러한 디바이스들은 예로서, 메모리 시스템(164), 하나 또는 그 초과의 입력 디바이스들(166), 하나 또는 그 초과의 출력 디바이스들(168), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(170), 및 하나 또는 그 초과의 디스플레이 제어기들(172)을 포함할 수 있다. 메모리 시스템(164)은 메모리 제어기(162)에 의해 접속 가능한 메모리(165)를 포함할 수 있다. 입력 디바이스(들)(166)은 입력 키들, 스위치들, 보이스 프로세서들, 기타 등등을 포함하나, 이에 제한되지 않는 입력 디바이스 임의의 유형을 포함할 수 있다. 출력 디바이스(들)(168)은 오디오, 영상, 다른 시각 표시기(visual indicator), 기타 등등을 포함하나, 이에 제한되지 않는 출력 디바이스의 임의의 유형을 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(170)은 네트워크(174)에 그리고 네트워크(174)로부터 데이터의 교환이 혀용되도록 구성된 임의의 디바이스들일 수 있다. 네트워크(174)는 유선 또는 무선 네트워크, 개인 또는 공공 네트워크, 로컬 영역 네트워크(LAN), 광역 네트워크(WLAN), 및 인터넷을 포함하나, 이에 제한되지 않는 임의의 네트워크 유형일 수 있다. 네트워크 인터페이스 디바이스(들)(170)은 바람직한 통신 프로토콜의 임의의 유형을 지지하도록 구성될 수 있다.
[0111] PU들(152)은 또한 하나 또는 그 초과의 디스플레이들(178)에 전송된 정보를 제어하기 위해 시스템 버스(160)에 걸쳐 디스플레이 제어기(들)(172)에 접속하도록 구성될 수 있다. 디스플레이 제어기(들)(172)은 하나 또는 그 초과의 영상 프로세서들(170)을 통해 디스플레이 되도록 디스플레이(들)(178)에 정보를 전송하고, 디스플레이 제어기(들)(172)은 디스플레이(들)(178)에 적합한 포맷으로 디스플레이 되도록 정보를 프로세싱한다.
[0112] 당해 분야의 기술의 제어기들은 여기서 개시된 이중 전압 도메인 메모리 버퍼들의 실시예와 연결되어 기술된 다양한 예시된 로지컬 블록들, 모듈들, 회로들 및 알고리즘들은 전기적 하드웨어, 메모리 또는 다른 컴퓨터-판독 가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스들에 의해 실행되는 명령들 또는 양쪽의 조합들로서 실시될 수 있다. 여기에 기술된 중재자(arbiter)들, 마스터 디바이스들, 및 슬레이브 디바이스들은 예로서 임의의 회로, 하드웨어 구성요소, 집적 회로(IC), 또는 IC 칩에 사용될 수 있다. 여기에 개시된 메모리는 임의의 메모리 유형 및 크기일 수 있으며, 바람직한 정보의 임의의 유형을 저장하도록 구성될 수 있다. 이러한 호환성을 명확하게 예시하기 위해, 다양한 예시적 구성요소들, 블록들, 모듈들, 회로들, 및 단계들은 위에서 이들의 기능적인 측면에서 일반적으로 기술되었다. 어떻게 그러한 기능이 실행되는지는 전반적인 시스템 상에서 실시된 특정한 적용, 디자인 선택들 및/또는 디자인 강제들에 의존한다. 숙련된 장인들은 각각의 특정한 적용에 대한 다양한 방법들로 기술된 기능들을 실행할 수 있으나, 그러한 실행 결정들은 현재의 개시의 범위를 벗어나는 것으로서 해석되어서는 안된다.
[0113] 여기에 개시된 실시예들에 연결되어 기술된 다양한 예시적 로지컬 블록들, 모듈들, 및 회로들은 프로세서, DSP, 주문형 집적 회로(ASIC), FPGA 또는 다른 프로그램 가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소들, 또는 여기에 기술된 기능들을 수행하도록 디자인된 것들의 임의의 조합을 통해 실행되거나 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있으나, 대안적으로, 프로세서는 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들면, DSP 및 마이크로프로세서의 조합, 복수의 컴퓨팅 디바이스들, DSP 코어와 함께 하는 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 실행될 수 있다.
[0114] 여기에 개시된 실시예들은 하드웨어에서, 및 하드웨어에 저정된 명령들에서 구현될 수 있고, 그리고 예를 들어, 랜덤 접속 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 프로그램 가능한 ROM(EPROM), 전기적으로 소거가능한 프로그램 가능한 ROM(EEPROM), 레지스터들, 하드디스크, 제거 가능한 디스크, CD-ROM, 또는 당해 분야에 알려진 컴퓨터 판독가능 매체의 임의의 다른 형태에 위치할 수 있다. 예시적인 저장매체는 프로세서와 커플링되며, 프로세서는 저장매체로부터 정보를 판독하여 저장매체에 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서에 필수 불가결할 수 있다. 프로세서 및 저장매체는 ASIC 에 위치할 수 있다. ASIC 는 원격 스테이션에 위치할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격 스테이션, 기본 스테이션, 또는 서버 내에 이산 구성요소들로서 위치할 수 있다.
[0115] 여기의 예시적인 실시예들에서 기술된 동작적 단계들은 예시들 및 논의를 제공하도록 기술됨 또한 유의한다. 기술된 동작들은 예시된 시퀀스들 외에 수많은 상이한 시퀀스들로 수행될 수 있다. 추가적으로, 단일의 동작적 단계에서 기술된 동작들은 많은 상이한 단계들에서 실제로 수행될 수 있다. 게다가, 예시적 실시예들에서 논의된 하나 또는 그 초과의 동작적 단계들은 조합될 수 있다. 흐름도에서 예시된 동작적 단계들은 당업자에게 이미 명확할 수 있는 바와 같이, 수많은 상이한 변형들의 대상이 될 수 있다. 당업자들은 정보 및 신호들이 다양한 다른 과학 기술들 및 기술들 중 임의의 것을 사용하여 표현될 수 있음을 또한 이해할 것이다. 예를 들어, 상기 설명을 통해 참조될 수 있는 데이터, 명령들, 지휘들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 잔자기 파들, 자기장들 또는 입자들, 광학 필드 또는 입자들, 또는 이것들의 임의의 조합에 의해 표현될 수 있다.
[0116] 이러한 개시의 상기 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 만들거나 이용할 수 있도록 제공된다. 이러한 개시에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 따라서, 이러한 개시는 여기에 기술된 예들 및 디자인들로 한정되도록 의도되지 않으며, 여기에 개시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
Claims (31)
- 적어도 하나의 멀티-모드 래딕스(radix)-2X 버터플라이 벡터 프로세싱 회로를 제공하도록 구성되는 벡터 프로세싱 엔진(VPE)으로서,
상기 벡터 프로세싱 엔진은,
적어도 하나의 곱셈기(multiplier) 블록을 포함하는 적어도 하나의 곱(multiply) 벡터 프로세싱 스테이지 ― 상기 적어도 하나의 곱셈기 블록은,
복수의 입력 데이터 경로들 중 제 1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 하나의 래딕스 벡터 데이터 입력 샘플 세트를 수신하고; 그리고
상기 적어도 하나의 곱 벡터 프로세싱 스테이지에 의해 실행되는 래딕스 버터플라이 벡터 명령에 따라 프로그램 가능한 곱 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들에 래딕스 벡터 곱 출력 샘플 세트를 제공하도록 상기 래딕스 벡터 데이터 입력 샘플 세트와 트위들(twiddle) 팩터 구성요소를 곱하도록 구성됨 ― ;
복수의 누적기 블록들을 포함하는 적어도 하나의 누적 벡터 프로세싱 스테이지 ― 상기 복수의 누적기 블록들 중 각 누적기 블록은,
누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 상기 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하고;
상기 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하고;
복수의 출력 데이터 경로들 중 하나의 출력 데이터 경로에 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 구성됨 ― ; 및
상기 복수의 누적기 블록들 각각으로부터 상기 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하도록 구성되는 출력 프로세싱 스테이지를 포함하는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 대해 래딕스 버터플라이 결과를 제공하기 위해 상기 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 추가하도록 구성된 적어도 하나의 덧셈기를 더 포함하는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 트위들 팩터 구성요소는 ‘e’인,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 상기 래딕스 버터플라이 벡터 명령에 따라 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들에 트위들 팩터 입력을 적용하도록 더 구성되는,
벡터 프로세싱 엔진. - 제4항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 래딕스 버터플라이 벡터 명령에 따라 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 마이너스 1(-1)의 트위들 팩터 입력을 적용하도록 상기 복수의 래딕스 벡터 곱 출력 샘플 세트들 중 수신된 래딕스 벡터 곱 출력 샘플 세트를 부정(negating)하도록 구성된 부정(negation) 회로를 더 포함하는,
벡터 프로세싱 엔진. - 제5항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 상기 래딕스 버터플라이 벡터 명령에 따라 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 ‘-j’의 트위들 팩터 입력을 적용하도록 상기 부정된 래딕스 벡터 곱 출력 샘플 세트를 부정된 복소수 래딕스 벡터 곱 출력 샘플 세트로 변환하도록 구성된 교환(swap) 회로를 더 포함하는,
벡터 프로세싱 엔진. - 제4항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 상기 래딕스 버터플라이 벡터 명령에 따라 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 ‘j’의 트위들 팩터 입력을 적용하도록 상기 복수의 래딕스 벡터 곱 출력 샘플 세트들 중 수신된 래딕스 벡터 곱 출력 샘플 세트를 복소수 래딕스 벡터 곱 출력 샘플 세트로 변환하도록 구성된 교환 회로를 더 포함하는,
벡터 프로세싱 엔진. - 제4항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 래딕스-2 버터플라이 벡터 명령에 따라 구성된 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스-2 버터플라이 트위들 팩터 입력으로서 상기 트위들 팩터 입력을 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들에 적용하도록 구성되는,
벡터 프로세싱 엔진. - 제4항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 래딕스-4 버터플라이 벡터 명령에 따라 구성된 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스-4 버터플라이 트위들 팩터 입력으로서 상기 트위들 팩터 입력을 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들에 인가하도록 구성되는,
벡터 프로세싱 엔진. - 제4항에 있어서,
상기 트위들 팩터 입력을 생성하도록 구성된 트위들 팩터 생성기를 더 포함하는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 적어도 하나의 곱셈기 블록은 복수의 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로들를 제공하기 위한 복수의 곱셈기 블록들로 구성되는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 프로그램 가능한 곱 데이터 경로 구성 및 상기 프로그램 가능한 누적기 데이터 경로 구성 각각은 상기 실행되는 래딕스 버터플라이 벡터 명령에 기초하여 재구성되도록 구성되는,
벡터 프로세싱 엔진. - 제12항에 있어서,
상기 프로그램 가능한 곱 데이터 경로 구성 및 상기 프로그램 가능한 누적기 데이터 경로 구성 각각은 상기 VPE에 의해 실행되는 각 래딕스 버터플라이 벡터 명령에 대해 재구성되도록 구성되는,
벡터 프로세싱 엔진. - 제13항에 있어서,
상기 프로그램 가능한 곱 데이터 경로 구성 및 상기 프로그램 가능한 누적기 데이터 경로 구성 각각은 상기 VPE에 의해 실행되는 래딕스 버터플라이 벡터 명령의 각각의 클럭 싸이클 상에서 재구성되도록 구성되는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 복수의 누적기 블록들 중 각 누적기 블록은, 각각이
적어도 하나의 래딕스 벡터 입력 합 및 적어도 하나의 래딕스 벡터 입력 캐리를 포함하는 각각의 래딕스 벡터 곱 출력 샘플 세트로서 상기 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하고;
적어도 하나의 이전에 누적된 래딕스 벡터 출력 합 및 적어도 하나의 이전에 누적된 래딕스 벡터 출력 캐리를 수신하고;
적어도 하나의 현재 누적된 래딕스 벡터 출력 합을 누적하고 ― 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 합은, 상기 적어도 하나의 현재 래딕스 벡터 누적된 출력 합으로서, 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 합으로 누적된 상기 적어도 하나의 래딕스 벡터 입력 합으로 구성됨 ― ;
적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리를 누적하고 ― 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리는, 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리로서, 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 캐리로 누적된 상기 적어도 하나의 래딕스 벡터 입력 캐리로 구성됨 ― ; 그리고
상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 합 및 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리를, 상기 래딕스 벡터 누적된 결과 샘플 세트들 중 상기 적어도 하나의 래딕스 벡터 누적된 결과 샘플 세트들로서, 상기 복수의 출력 데이터 경로들 중 상기 출력 데이터 경로 내에 제공하도록 구성된 적어도 하나의 캐리-저장 누적기를 포함하는,
벡터 프로세싱 엔진. - 제15항에 있어서,
상기 적어도 하나의 캐리-저장 누적기는 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 캐리를 상기 적어도 하나의 래딕스 벡터 입력 합 및 상기 적어도 하나의 래딕스 벡터 입력 캐리로 전파하지 않도록 구성되는,
벡터 프로세싱 엔진. - 제15항에 있어서,
상기 적어도 하나의 캐리-저장 누적기는, 제1 벡터 누적된 데이터 경로 내에 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 합과 상기 제1 벡터 누적된 데이터 경로와는 별개인 제2 벡터 누적된 데이터 경로 내에 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리를 유지하도록 더 구성되는,
벡터 프로세싱 엔진. - 제15항에 있어서,
상기 적어도 하나의 캐리-저장 누적기는,
상기 적어도 하나의 래딕스 벡터 입력 합 및 상기 적어도 하나의 래딕스 벡터 입력 캐리를 수신하고;
상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 합 및 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 캐리를 수신하고;
상기 적어도 하나의 현재 래딕스 벡터 누적된 출력 합으로서, 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 합에 누적된 상기 적어도 하나의 래딕스 벡터 입력 합으로 구성된 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 합을 생성하고;
상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리로서, 상기 적어도 하나의 이전에 누적된 래딕스 벡터 출력 캐리에 누적된 상기 적어도 하나의 래딕스 벡터 입력 캐리로 구성된 상기 적어도 하나의 현재 누적된 래딕스 벡터 출력 캐리를 생성하도록 구성된 적어도 하나의 압축기를 포함하는,
벡터 프로세싱 엔진. - 제18항에 있어서,
상기 적어도 하나의 압축기는 적어도 하나의 4:2 압축기로 구성되는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 복수의 입력 데이터 경로들 중 하나의 입력 데이터 경로에 벡터 어레이의 폭의 상기 복수의 래딕스 벡터 데이터 입력 샘플 세트들을 제공하도록 구성된 입력 판독 스테이지를 더 포함하는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 복수의 누적기 블록들은, 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 벡터 레지스터에 저장하도록 구성되지 않는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 적어도 하나의 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로는 고속 푸리에 변환(FFT) 벡터 명령을 실행하도록 구성되는,
벡터 프로세싱 엔진. - 제1항에 있어서,
상기 적어도 하나의 래딕스-2X 버터플라이 벡터 프로세싱 회로는 보간(interpolating) FFT 벡터 명령을 실행하도록 구성되는,
벡터 프로세싱 엔진. - 적어도 하나의 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로를 제공하도록 구성된 벡터 프로세싱 엔진(VPE)으로서,
적어도 하나의 곱셈기 블록 수단을 포함하는 적어도 하나의 곱 벡터 프로세싱 스테이지 수단 ― 상기 적어도 하나의 곱셈기 블록 수단은,
복수의 입력 데이터 경로들 중 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 하나의 래딕스 벡터 데이터 입력 샘플 세트를 수신하고; 그리고
상기 적어도 하나의 곱 벡터 프로세싱 스테이지 수단에 의해 실행되는 래딕스 버터플라이 벡터 명령에 따라 프로그램 가능한 곱 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들에 래딕스 벡터 곱 출력 샘플 세트를 제공하도록 트위들 팩터 구성요소와 상기 래딕스 벡터 데이터 입력 샘플 세트를 곱하도록 구성됨 ― ;
복수의 누적기 블록 수단을 포함하는 적어도 하나의 누적 벡터 프로세싱 스테이지 수단 ― 상기 복수의 누적기 블록 수단 중 각각의 누적기 블록 수단은,
프로그램 가능한 누적기 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하고,
상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하고; 그리고
복수의 출력 데이터 경로들 중 하나의 출력 데이터 경로에 상기 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 구성됨 ― ; 및
상기 복수의 누적기 블록들 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하도록 구성된 출력 프로세싱 스테이지 수단을 포함하는,
벡터 프로세싱 엔진. - 벡터 프로세싱 엔진(VPE) 내에서 프로세싱하는 멀티-모드 래딕스-2X 버터플라이 벡터 프로세싱 회로에서의 래딕스-2X 벡터 데이터의 프로세싱 방법으로서,
적어도 하나의 곱 벡터 프로세싱 스테이지 내에서 적어도 하나의 곱셈기 블록 내의 복수의 입력 데이터 경로들 중 제1 입력 데이터 경로로부터의 복수의 래딕스 벡터 데이터 입력 샘플 세트들로부터 하나의 래딕스 벡터 데이터 입력 샘플 세트를 수신하는 단계;
상기 적어도 하나의 곱 벡터 프로세싱 스테이지에 의해 실행된 래딕스 버터플라이 벡터 명령에 따라 프로그램 가능한 곱 데이터 경로 구성에 기초하여 복수의 곱 출력 데이터 경로들 내에 래딕스 벡터 곱 출력 샘플 세트를 제공하도록, 상기 래딕스 벡터 데이터 입력 샘플 세트와 트윈들 팩터 구성요소를 상기 적어도 하나의 곱셈기 블록에서 곱하는 단계;
적어도 하나의 누적 벡터 프로세싱 스테이지 내의 복수의 누적기 블록들 중 각각의 누적기 블록 내의 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 상기 복수의 곱 출력 데이터 경로들 중 하나의 곱 출력 데이터 경로로부터 복수의 래딕스 벡터 곱 출력 샘플 세트들을 수신하는 단계;
상기 누적기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 래딕스 벡터 누적된 결과 샘플 세트를 제공하도록 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 누적하는 단계;
복수의 출력 데이터 경로들 중 하나의 출력 데이터 경로에 상기 래딕스 벡터 누적된 결과 샘플 세트를 제공하는 단계; 및
출력 프로세싱 스테이지 내에서, 상기 복수의 누적기 블록들 각각으로부터 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 수신하는 단계를 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제25항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 대한 래딕스 버터플라이 결과를 제공하도록 상기 복수의 래딕스 벡터 누적된 결과 샘플 세트들을 추가하는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제25항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 따라 각 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들에 트위들 팩터 입력을 적용하는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제27항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 따라 각각의 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 마이너스 1(-1)의 상기 트위들 팩터 입력을 적용하도록 상기 복수의 래딕스 벡터 곱 출력 샘플 세트들 중 수신된 래딕스 벡터 곱 출력 샘플을 부정하는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제28항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 따라 각각의 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 ‘-j’의 상기 트위들 팩터 입력을 적용하도록 부정된 복소 래딕스 벡터 곱 출력 샘플 세트로 상기 부정된 래딕스 벡터 곱 출력 샘플 세트를 변환하기 위해 상기 수신된 래딕스 벡터 곱 출력 샘플 세트를 교환하는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제27항에 있어서,
상기 래딕스 버터플라이 벡터 명령에 따라 각각의 누적기 블록에 대해 상기 프로그램 가능한 누적기 데이터 경로 구성에 기초하여 ‘j’의 상기 트위들 팩터 입력을 적용하도록 복소 래딕스 벡터 곱 출력 샘플 세트로 상기 복수의 래딕스 벡터 곱 출력 샘플 세트들 중 상기 수신된 래딕스 벡터 곱 출력 샘플 세트를 변환하기 위해 래딕스 벡터 곱 출력 샘플 세트를 교환하는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법. - 제25항에 있어서,
벡터 레지스터에 상기 수신된 복수의 래딕스 벡터 곱 출력 샘플 세트들을 저장하지 않는 단계를 더 포함하는,
래딕스 2X 벡터 데이터의 프로세싱 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/798,599 | 2013-03-13 | ||
US13/798,599 US9275014B2 (en) | 2013-03-13 | 2013-03-13 | Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods |
PCT/US2014/021782 WO2014164298A2 (en) | 2013-03-13 | 2014-03-07 | Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150132287A true KR20150132287A (ko) | 2015-11-25 |
Family
ID=50473780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157028376A KR20150132287A (ko) | 2013-03-13 | 2014-03-07 | 멀티-모드 래딕스-2x 버터플라이 벡터 프로세싱 회로들, 및 연관된 벡터 프로세서들을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들, 시스템들, 및 방법들 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9275014B2 (ko) |
EP (1) | EP2972988A2 (ko) |
JP (1) | JP2016514330A (ko) |
KR (1) | KR20150132287A (ko) |
CN (1) | CN104969215B (ko) |
TW (1) | TWI601066B (ko) |
WO (1) | WO2014164298A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190045316A (ko) * | 2016-09-13 | 2019-05-02 | 에이알엠 리미티드 | 벡터 곱셈 덧셈 명령 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495154B2 (en) | 2013-03-13 | 2016-11-15 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods |
US9880845B2 (en) | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US9684509B2 (en) | 2013-11-15 | 2017-06-20 | Qualcomm Incorporated | Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods |
US9792118B2 (en) | 2013-11-15 | 2017-10-17 | Qualcomm Incorporated | Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods |
US9977676B2 (en) | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
US9619227B2 (en) | 2013-11-15 | 2017-04-11 | Qualcomm Incorporated | Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods |
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 |
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 |
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 |
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 |
US10210135B2 (en) * | 2015-12-31 | 2019-02-19 | Cavium, Llc | Methods and apparatus for providing a programmable mixed-radix DFT/IDFT processor using vector engines |
US10349251B2 (en) * | 2015-12-31 | 2019-07-09 | Cavium, Llc | Methods and apparatus for twiddle factor generation for use with a programmable mixed-radix DFT/IDFT processor |
US10311018B2 (en) * | 2015-12-31 | 2019-06-04 | Cavium, Llc | Methods and apparatus for a vector subsystem for use with a programmable mixed-radix DFT/IDFT processor |
CN105718424B (zh) * | 2016-01-26 | 2018-11-02 | 北京空间飞行器总体设计部 | 一种并行快速傅立叶变换处理方法 |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US10489877B2 (en) | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
US10331445B2 (en) | 2017-05-24 | 2019-06-25 | Microsoft Technology Licensing, Llc | Multifunction vector processor circuits |
US11803377B2 (en) * | 2017-09-08 | 2023-10-31 | Oracle International Corporation | Efficient direct convolution using SIMD instructions |
US10910061B2 (en) * | 2018-03-14 | 2021-02-02 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
US20200142670A1 (en) * | 2018-05-29 | 2020-05-07 | Marwan A. Jaber | Radix-23 Fast Fourier Transform for an Embedded Digital Signal Processor |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US10942985B2 (en) * | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11132198B2 (en) | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
CN110780842A (zh) * | 2019-10-25 | 2020-02-11 | 无锡恒鼎超级计算中心有限公司 | 基于神威架构的船舶三维声弹性模拟计算的并行优化方法 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN112800387B (zh) * | 2021-03-30 | 2021-08-03 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04252372A (ja) * | 1991-01-28 | 1992-09-08 | Nippon Telegr & Teleph Corp <Ntt> | 可変パイプライン構造 |
DE69519449T2 (de) | 1994-05-05 | 2001-06-21 | Conexant Systems, Inc. | Raumzeigersdatenpfad |
US5805875A (en) | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
US6006245A (en) | 1996-12-20 | 1999-12-21 | Compaq Computer Corporation | Enhanced fast fourier transform technique on vector processor with operand routing and slot-selectable operation |
JP3951071B2 (ja) * | 1997-05-02 | 2007-08-01 | ソニー株式会社 | 演算装置および演算方法 |
US6061705A (en) | 1998-01-21 | 2000-05-09 | Telefonaktiebolaget Lm Ericsson | Power and area efficient fast fourier transform processor |
WO1999045462A1 (de) | 1998-03-03 | 1999-09-10 | Siemens Aktiengesellschaft | Datenpfad für signalverarbeitungsprozessoren |
JP3940542B2 (ja) | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
JP2003016051A (ja) * | 2001-06-29 | 2003-01-17 | Nec Corp | 複素ベクトル演算プロセッサ |
US7107305B2 (en) * | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
US6986021B2 (en) * | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7159099B2 (en) | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US20040193837A1 (en) | 2003-03-31 | 2004-09-30 | Patrick Devaney | CPU datapaths and local memory that executes either vector or superscalar instructions |
US7702712B2 (en) | 2003-12-05 | 2010-04-20 | Qualcomm Incorporated | FFT architecture and method |
US7272751B2 (en) | 2004-01-15 | 2007-09-18 | International Business Machines Corporation | Error detection during processor idle cycles |
KR100985110B1 (ko) | 2004-01-28 | 2010-10-05 | 삼성전자주식회사 | 단순한 구조의 4:2 csa 셀 및 4:2 캐리 저장 가산 방법 |
US7299342B2 (en) * | 2005-05-24 | 2007-11-20 | Coresonic Ab | Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement |
US7415595B2 (en) * | 2005-05-24 | 2008-08-19 | Coresonic Ab | Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory |
JP2009505486A (ja) * | 2005-08-08 | 2009-02-05 | フリースケール セミコンダクター インコーポレイテッド | マルチモード無線広帯域信号プロセッサシステムおよび方法 |
US20070106718A1 (en) | 2005-11-04 | 2007-05-10 | Shum Hoi L | Fast fourier transform on a single-instruction-stream, multiple-data-stream processor |
US8024394B2 (en) | 2006-02-06 | 2011-09-20 | Via Technologies, Inc. | Dual mode floating point multiply accumulate unit |
US7519646B2 (en) | 2006-10-26 | 2009-04-14 | Intel Corporation | Reconfigurable SIMD vector processing system |
US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
DE102007014808A1 (de) | 2007-03-28 | 2008-10-02 | Texas Instruments Deutschland Gmbh | Multiplizier- und Multiplizier- und Addiereinheit |
US8320478B2 (en) | 2008-12-19 | 2012-11-27 | Entropic Communications, Inc. | System and method for generating a signal with a random low peak to average power ratio waveform for an orthogonal frequency division multiplexing system |
US20110072236A1 (en) | 2009-09-20 | 2011-03-24 | Mimar Tibet | Method for efficient and parallel color space conversion in a programmable processor |
CN102768654A (zh) | 2011-05-05 | 2012-11-07 | 中兴通讯股份有限公司 | 具有fft基2蝶运算处理能力的装置及其实现运算的方法 |
JP2013025468A (ja) * | 2011-07-19 | 2013-02-04 | Hitachi Advanced Digital Inc | 高速フーリエ変換装置 |
DE102011108576A1 (de) | 2011-07-27 | 2013-01-31 | Texas Instruments Deutschland Gmbh | Selbstgetaktete Multipliziereinheit |
CN102375805B (zh) | 2011-10-31 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
CN102637124B (zh) | 2012-03-22 | 2015-09-30 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
US9495154B2 (en) | 2013-03-13 | 2016-11-15 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods |
US20140280407A1 (en) | 2013-03-13 | 2014-09-18 | Qualcomm Incorporated | Vector processing carry-save accumulators employing redundant carry-save format to reduce carry propagation, and related vector processors, systems, and methods |
-
2013
- 2013-03-13 US US13/798,599 patent/US9275014B2/en not_active Expired - Fee Related
-
2014
- 2014-03-06 TW TW103107652A patent/TWI601066B/zh active
- 2014-03-07 EP EP14716472.7A patent/EP2972988A2/en not_active Withdrawn
- 2014-03-07 JP JP2016500848A patent/JP2016514330A/ja not_active Ceased
- 2014-03-07 CN CN201480007022.9A patent/CN104969215B/zh not_active Expired - Fee Related
- 2014-03-07 WO PCT/US2014/021782 patent/WO2014164298A2/en active Search and Examination
- 2014-03-07 KR KR1020157028376A patent/KR20150132287A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190045316A (ko) * | 2016-09-13 | 2019-05-02 | 에이알엠 리미티드 | 벡터 곱셈 덧셈 명령 |
Also Published As
Publication number | Publication date |
---|---|
JP2016514330A (ja) | 2016-05-19 |
CN104969215A (zh) | 2015-10-07 |
US9275014B2 (en) | 2016-03-01 |
CN104969215B (zh) | 2017-12-01 |
WO2014164298A2 (en) | 2014-10-09 |
WO2014164298A3 (en) | 2015-07-02 |
EP2972988A2 (en) | 2016-01-20 |
TWI601066B (zh) | 2017-10-01 |
US20140280420A1 (en) | 2014-09-18 |
TW201502978A (zh) | 2015-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150132287A (ko) | 멀티-모드 래딕스-2x 버터플라이 벡터 프로세싱 회로들, 및 연관된 벡터 프로세서들을 제공하기 위한 프로그램 가능한 데이터 경로 구성들을 가지는 벡터 프로세싱 엔진들, 시스템들, 및 방법들 | |
KR101735742B1 (ko) | 다중-모드 벡터 프로세싱을 제공하기 위한 프로그램 가능 데이터 경로 구성들을 가진 벡터 프로세싱 엔진들, 및 관련 벡터 프로세서들, 시스템들, 및 방법들 | |
US9792118B2 (en) | Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods | |
US9684509B2 (en) | Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods | |
US9977676B2 (en) | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods | |
US9880845B2 (en) | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods | |
US9619227B2 (en) | Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods | |
US20150143076A1 (en) | VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS | |
US20140280407A1 (en) | Vector processing carry-save accumulators employing redundant carry-save format to reduce carry propagation, and related vector processors, systems, and methods | |
Revanna et al. | A scalable FFT processor architecture for OFDM based communication systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |