KR101047768B1 - 범용 어레이 처리 - Google Patents

범용 어레이 처리 Download PDF

Info

Publication number
KR101047768B1
KR101047768B1 KR1020087028956A KR20087028956A KR101047768B1 KR 101047768 B1 KR101047768 B1 KR 101047768B1 KR 1020087028956 A KR1020087028956 A KR 1020087028956A KR 20087028956 A KR20087028956 A KR 20087028956A KR 101047768 B1 KR101047768 B1 KR 101047768B1
Authority
KR
South Korea
Prior art keywords
parallel processing
multiplication
opcode
array processor
results
Prior art date
Application number
KR1020087028956A
Other languages
English (en)
Other versions
KR20090005399A (ko
Inventor
가렛 웹스터 시
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20090005399A publication Critical patent/KR20090005399A/ko
Application granted granted Critical
Publication of KR101047768B1 publication Critical patent/KR101047768B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent 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/3897Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 처리 방법 및 장치들을 포함하는 범용 어레이 처리 기술들에 관한 것이다. 프로세서들은 곱셈기들, 다중화기들, 및 ALU들과 같은 재사용가능한 계산 컴포넌트들을 사용하여 설계된 병렬 처리 경로들을 포함할 수 있다. 상기 경로들을 통한 데이터의 흐름 및 수행된 연산들은 op코드들에 기반하여 제어될 수 있다. 프로세서들은 공유되고, 스케일링가능하며, 행렬 연산들을 수행하도록 구성될 수 있다. 특히, 이러한 연산은 MIMO-OFDM 통신 시스템의 물리적 섹션들에 대해 유용할 수 있다.

Description

범용 어레이 처리{GENERAL PURPOSE ARRAY PROCESSING}
본 발명은 일반적으로는 어레이 처리에 관한 것이고, 보다 구체적으로는 범용 어레이 처리 기술들에 관한 것이다.
U.S.C.§119 하의 우선권 주장
본 특허 출원은, 출원번호가 60/795,981이고, 발명의 명칭이 "General Purpose Array Processor"이고, 출원인이 2006년 4월 28일이며, 본 발명의 양수인에게 양도되었으며, 본 명세서에 참조로써 명시적으로 통합된 미국 가출원 특허의 우선권을 주장한다.
통신 시스템들에서 뿐만 아니라 광범위한 다른 시스템들에서, 다수의 행렬 연산들이 데이터를 처리하기 위해 수행될 수 있다. 예를 들어, 다양한 복소 행렬-관련 알고리즘들이 통신 시스템들에서 사용되어 전송된 신호들을 코딩/디코딩하고 및/또는 복수의 통신 채널들로부터 온 데이터들을 분할하거나 혹은 재구성할 수 있다(즉, 다중화/역다중화). 이러한 알고리즘들은, 특정 시퀀스로 다수의 행렬 산술 연산들을 사용하여 구현될 수 있는 푸리에 변환들과 같은 다양한 행렬-관련 알고리즘들을 수행할 수 있다.
통신 시스템들은 특히 연산의 물리적 계층에서 다수의 행렬 연산들을 수행할 수 있다. 통신 시스템의 상기 물리적 계층은 데이터의 채널화 및 코딩 뿐 아니라, 데이러 링크 계층들과 같은 하이레벨 데이터 계층과의 인터페이스와 연관된 기능들을 제공할 수 있다. 현재 직교 주파수 분할 다중화(OFDM)와 같은 몇몇 통신 기술들에서의 직교성의 사용으로 인해, 데이터의 수신 및 전송동안 수행되는 행렬-관련 연산들의 수가 클 수 있다. 더욱이, 다중-입력 다중-출력(MIMO) 기술의 사용은 통신 시스템들에서의 행렬 연산들에 대한 의존성을 더 증가시킨다.
종래의 통신 시스템들은 특수 회로를 통해 다양한 알고리즘들을 수행하기 위한 컴포넌트 레벨로부터 설계될 수 있다. 예를 들어, 통신 시스템의 물리적 계층들은, 각각이 물리적 계층의 데이터 경로를 따라 특정 알고리즘을 수행하는 특수 컴포넌트들의 세트를 사용하여 설계될 수 있다. 각각의 알고리즘은 푸리에 변환 회로와 같은 특수 회로, 또는 다른 산술 및/또는 논리 회로로 배선접속(hardwired)될 수 있다.
이전의 전기 및 전자 엔지니어 협회(Institue of Electrical and Elctronics Engineers : IEEE) 표준의 레거시(legacy) 지원 및 통신 시스템들의 증가적인 복잡도는 통신 시스템이 수행하도록 기대될 수 있는 잠재적인 행렬 관련 알고리즘들 모두를 수행하기 위한 특수 회로의 개발에 관련된 자원들을 손상시켰다. 특히, 비용, 공간 및 전력 사용 자원들은 기존의 설계 기술들을 사용하여 설계된 어플리케이션들에서 손상되었다.
범용 어레이 처리를 위한 기술들이 본 명세서에서 개시된다. 본 발명의 일 양상에 있어서, 범용 어레이 프로세서는 시스템 설계들의 손상된 자원들을 완화시킨다. 이러한 범용 어레이 프로세서들은 복수의 행렬-관련 알고리즘들에서 및/또는 복수의 고차(higher) 레벨의 처리 엘리먼트들에 의해 사용될 수 있는 복수의 행렬-관련 연산들을 실행하도록 구성될 수 있다. 몇몇 실시예들에서, 상기 복수의 행렬-관련 연산은 행렬의 컴포넌트들에 대해 실행되는 산술 연산들을 포함할 수 있다.
범용 어레이 프로세서의 몇몇 실시예들은 통신 시스템의 물리적 계층에서 사용될 수 있다. 몇몇 실시예들에서, 상기 범용 어레이 프로세서는 곱셈기들, ALU들, 다중화기들, 및 레지스터들과 같은 기본 하드웨어 컴포넌트들을 사용하여 소유자 자원들에 의해 사용된 복수의 일반적으로 사용되는 연산들을 만족시키기 위한 기능을 제공할 수 있다. 몇몇 실시예들에서, 상기 소유자 자원들은, 예를 들어, 고속 푸리에 변환, 공간 처리, 최소 평균 제곱 에러 결정, 채널 결정, 가중치 계산, 및/또는 위상 정정을 수행할 수 있다. 몇몇 실시예들에서, 상기 범용 어레이 프로세서는 실수 및/또는 복소수 행렬 곱셈들을 수반하는 임의의 알고리즘의 일부분들을 수행하도록 구성될 수 있다.
본 발명의 일 양상은 어레이 프로세서 장치를 포함한다. 몇몇 실시예들에서, 상기 어레이 프로세서 장치는 복수의 다중화기들, 복수의 곱셈기들, 복수의 산술 논리 유닛들(ALU), 및 적어도 하나의 op코드 제어 엘리먼트를 포함한다. 몇몇 실시예들에서, 상기 복수의 다중화기들, 상기 복수의 곱셈기들, 및 상기 복수의 ALU들은 두 개의 병렬 처리 경로들을 형성하도록 구성되고 배열되며, 각각의 병렬 처리 경로는 상기 op코드 제어 엘리먼트에 의해 수신된 op코드에 따라 일련의 행렬 연산들을 수행하도록 구성된다.
몇몇 실시예들에 있어서, 상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함한다. 몇몇 실시예들에서, 상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들 의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함한다.
몇몇 실시예들에서, 상기 두 개의 병렬 처리 회로들은 상기 곱셈 연산, 상기 외부 가산치와의 곱셈 연산, 상기 외부 감산치와의 곱셈 연산, 상기 누산치와의 곱셈 연산, 상기 결과들의 합산치와의 곱셈 연산, 상기 결과들의 감산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 누산치와의 곱셈 연산, 및 상기 결과들의 감산치 및 누산치와의 곱셈 연산 각각을 수행하도록 구성된다.
몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 제 1 파이프라인 병렬 처리 경로를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 제 2 파이프라인 병렬 처리 경로를 포함한다. 몇몇 실시예들에서, 상기 제 1 병렬 처리 경로의 제 1 파이프라인 스테이지로의 입력은 상기 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지의 출력을 포함한다. 몇몇 실시예들에서, 상기 op코드 제어 엘리먼트는 상기 op코드에 기반하여 상기 제 1 파이프라인 스테이지로의 입력 및 상기 제 2 파이프라인 스테이지로의 입력을 선택하도록 구성된다. 몇몇 실시예들에서, 상기 제 2 병렬 처리 경로의 제 3 파이프라인 스테이지는 상기 제 1 병렬 처리 경로의 제 4 파이프라인 스테이지의 출력을 포함할 수 있다.
몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 곱셈 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 산술-논리 스테이지를 포함한다. 몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 곱셈 스테이지를 포함한다. 몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 제 1 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 제 2 산술-논리 스테이지를 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 실수 행렬 값들을 처리하기 위한 처리 경로를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 허수 행렬 값들을 처리하기 위한 처리 경로를 포함한다.
몇몇 실시예들에서, 상기 복수의 곱셈기들은 두 개의 곱셈기들을 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 상기 두 개의 곱셈기들 중 제 1 곱셈기를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 상기 두 개의 곱셈기들 중 제 2 곱셈기를 포함한다. 몇몇 실시예들에서, 상기 복수의 ALU들은 두 개의 ALU들을 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 상기 두 개의 ALU들 중 제 1 ALU를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 상기 두 개의 ALU들 중 제 2 ALU를 포함한다. 몇몇 실시예들에서, 상기 제 1 ALU의 제 1 입력은 상기 복수의 곱셈기들 중 제 1 곱셈기의 출력을 포함하고, 상기 제 1 ALU의 제 2 입력은 상기 복수의 곱셈기들 중 제 2 곱셈기의 출력을 포함하고, 상기 제 2 ALU의 입력은 상기 제 2 곱셈기의 출력을 포함한다.
몇몇 실시예들에서, 상기 op코드 제어기는 상기 op코드에 기반하여 상기 복수의 ALU들 중 적어도 하나에 의해 수행되는 산술 연산을 선택하도록 구성된다. 몇몇 실시예들에서, 상기 op코드 제어기는 상기 op코드에 기반하여 상기 복수의 곱셈기들을 통해 데이터의 흐름을 제어하도록 구성된다. 몇몇 실시예들에서, 상기 데이터의 흐름을 제어하는 것은 상기 두 개의 병렬 처리 경로들 및 외부 데이터의 입력 간의 데이터 의존성들을 제어하는 것을 포함한다. 몇몇 실시예들에서, MIMO OFDM 수신기 장치는 적어도 하나의 어레이 프로세서 장치를 포함한다. 몇몇 실시예들에서, MIMO OFDM 수신기 장치는 복수의 어레이 프로세서 장치를 포함한다. 몇몇 실시예들에서, MIMO OFDM 송신기 장치는 적어도 하나의 어레이 프로세서 장치를 포함한다. 몇몇 실시예들에서, MIMO OFDM 송신기 장치는 복수의 어레이 프로세서 장치를 포함한다.
본 발명의 일 양상은 어레이 프로세서 장치를 포함한다. 몇몇 실시예들에서, 상기 어레이 프로세서 장치는 op코드에 기반하여 두 개의 병렬 처리 경로들을 통해 데이터의 경로를 제어하기 위한 수단, 상기 두 개의 병렬 처리 경로들 각각에서 데이터에 대해 두 개의 병렬 행렬 연산들을 수행하기 위한 수단, 및 상기 op코드에 기반하여 상기 두 개의 병렬 행렬 연산들을 선택하기 위한 수단을 포함한다.
몇몇 실시예들에서, 상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함한다. 몇몇 실시예들에서, 상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함한다.
몇몇 실시예들에서, 상기 두 개의 병렬 행렬 연산들을 수행하기 위한 수단은 상기 곱셈 연산, 상기 외부 가산치와의 곱셈 연산, 상기 외부 감산치와의 곱셈 연산, 상기 누산치와의 곱셈 연산, 상기 결과들의 합산치와의 곱셈 연산, 상기 결과들의 감산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 상기 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 누산치와의 곱셈 연산, 및 상기 결과들의 감산치 및 누산치와의 곱셈 연산 각각을 수행하기 위한 수단을 수행하기 위한 수단을 포함한다.
몇몇 실시예들에서, 상기 데이터의 경로를 제어하기 위한 수단은, 상기 두 개의 병렬 처리 경로들 간의 데이터의 의존성을 제어하기 위한 수단, 및 상기 두 개의 병렬 처리 경로들로의 외부 데이터의 입력을 제어하기 위한 수단을 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 행렬 연산을 수행하기 위한 수단은, 실수 행렬 값들을 처리하기 위한 수단, 및 상기 실수 행렬 값들과 동시에 허수 행렬 값들을 처리하기 위한 수단을 포함한다. 몇몇 실시예들에서, 상기 op코드에 기반하여 상기 데이터의 경로를 제어하기 위한 수단은 복수의 곱셈기들의 출력을 선택하기 위한 수단을 포함한다. 몇몇 실시예들에서, 상기 op코드에 기반하여 상기 두 개의 병렬 행렬 연산들을 선택하기 위한 수단은 적어도 하나의 ALU에 의해 수행되는 산술 연산을 선택하기 위한 수단을 포함한다.
본 발명의 일 양상은 행렬 연산들을 수행하는 방법을 포함한다. 몇몇 실시예들에서, 상기 방법은 op코드에 기반하여 두 개의 병렬 처리 경로들을 통한 데이터의 흐름을 제어하는 단계, 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로에서 제 1 행렬 연산을 수행하는 단계, 및 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로에서 제 2 행렬 연산을 수행하는 단계를 포함한다.
몇몇 실시예들에서, 상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함한다. 몇몇 실시예들에서, 상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함한다.
몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들을 통해 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로의 제 1 파이프라인 스테이지의 출력을 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지의 입력으로 전달하는 단계를 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들을 통해 상기 데이터의 흐름을 제어하는 단계는 상기 op코드에 기반하여 상기 제 1 병렬 처리 경로의 상기 제 1 파이프라인 스테이지 및 상기 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지로의 입력을 선택하는 단계를 포함한다.
몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 곱셈 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 산술-논리 스테이지를 포함한다. 몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 곱셈 스테이지를 포함한다. 몇몇 실시예들에서, 상기 제 1 파이프라인 스테이지는 제 1 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 제 2 산술-논리 스테이지를 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 제 2 병렬 처리 경로의 제 3 파이프라인 단계의 출력을 상기 제 1 병렬 처리 경로들의 제 4 파이프라인 스테이지의 입력으로 전달하는 단계를 포함한다.
몇몇 실시예들에서, 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 1 병렬 처리 경로에서 상기 제 1 행렬 연산을 수행하는 단계는 실수 행렬 값들을 처리하는 단계를 포함하고, 그리고 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 2 병렬 처리 경로에서 상기 제 2 행렬 연산을 수행하는 단계는 허수 행렬 값들을 처리하는 단계를 포함한다. 몇몇 실시예들에서, 상기 op코드에 기반하여 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 op코드에 기반하여 복수의 다중화기들을 제어하는 단계를 포함한다.
몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 간의 데이터 의존성들을 제어하는 단계 및 외부 데이터의 입력을 제어하는 단계를 포함한다. 몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들을 통해 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로의 제 1 곱셈기의 출력을 전달하는 단계(directing) 및 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로의 제 2 곱셈기의 출력을 전달하는 단계를 포함한다. 몇몇 실시예들에서, 상기 제 1 곱셈기의 출력을 전달하는 단계는 상기 제 1 곱셈기의 출력을 상기 제 1 병렬 처리 경로의 제 1 ALU의 제 1 입력으로 전달하는 단계를 포함하고, 상기 제 2 곱셈기의 출력을 전달하는 단계는 상기 제 2 곱셈기의 출력을 상기 제 1 ALU의 제 2 입력 및 상기 제 2 병렬 처리 경로의 제 2 ALU의 입력으로 전달하는 단계를 포함한다.
몇몇 실시예들에서, 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 1 병렬 처리 경로에서 상기 제 1 행렬 연산을 수행하는 단계는 상기 op코드에 기반하여 제 1 ALU에 대한 제 1 연산을 선택하는 단계를 포함하고, 그리고 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 2 병렬 처리 경로에서 상기 제 2 행렬 연산을 수행하는 단계는 상기 op코드에 기반하여 제 2 ALU에 대한 제 2 연산을 선택하는 단계를 포함한다.
본 발명의 일 양상은 저장된 명령을 포함하는 기계-판독가능한 매체를 포함한다. 몇몇 실시예들에서, 상기 명령은, op코드에 기반하여 병렬 행렬 연산을 수행하기 위해 두 개의 병렬 처리 경로들의 개별 곱셈 단계들에서 데이터 의존성을 선택하기 위한 제 1 명령 세트, 상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들의 개별 산술-논리 스테이지들에서 개별적인 산술-논리 연산들 및 데이터 의존성들을 선택하기 위한 제 2 명령 세트를 포함한다.
몇몇 실시예들에서, 상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함한다. 몇몇 실시예들에서, 상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함한다.
첨부 도면들은 축척에 맞게 그려진 것으로 의도되지 않는다. 상기 도면들에서, 여러 도면상에 도시된 각각의 동일한 혹은 거의 동일한 컴포넌트들은 유사 번호로써 나타난다. 명료성의 목적을 위해, 모든 컴포넌트가 모든 도면마다 라벨링되지 않았다.
도 1은 본 발명의 몇몇 실시예들에 따라, 두 개의 통신국들의 블록도를 예시한 도면.
도 2는 본 발명의 몇몇 실시예들에 따라, 데이터 프로세서의 예시적인 물리 섹션을 예시한 도면.
도 3은 본 발명의 몇몇 실시예들에 따라, 예시적인 범용 어레이 프로세서의 블록도를 예시한 도면.
도 4는 본 발명의 몇몇 실시예들에 따라, 범용 어레이 처리를 수행하기 위해 사용될 수 있는 예시적인 프로세스를 예시한 도면.
본 발명의 실시예들은 그 응용예들에 있어서, 후속하는 설명에서 설명되거나 도면들에서 예시된 동작들 및 컴포넌트들의 배열 및 구성의 상세항목들에 제한되지 않는다. 본 발명은 다른 실시예들이 가능하며, 다양한 방식으로 구현되거나 실행될 수 있다. 또한, 본 명세서에서 사용된 구문이나 용어는 설명의 목적을 위한 것이지 제한으로서 간주되지 않아야 한다. "포함하는", "구성되는", "가지는", "내포하는","수반하는" 및 본 명세서에서의 이들의 변경들은 이하에서 나열된 항목들 및 이들의 등가물 뿐 아니라 부가적인 항목들을 포함하는 것을 의미한다. 본 명세서에서 사용된 단어 "예시적인" 및 이의 변형들은 "예, 경우, 예시로서 제공하는" 것을 의미한다. 본 명세서에서 "예시적인" 것으로서 설명된 임의의 실시예 혹은 설계는 다른 실시예들 및 설계들에 대해 반드시 바람직하거나 유리한 것으로서 해석되지는 않는다.
본 명세서에서 설명된 범용 어레이 처리 기술들은, 예컨대, IEEE 802.11a, 802.11g, 및/또는 802.11n 등을 구현하는, 예를 들어 무선 광역 네트워크들(WWAN), 무선 도심 지역 네트워크들(WMAN), 무선 근거리 네트워크들(WLAN)과 같은 다양한 통신 시스템들을 위해 사용될 수 있다. 상기 용어 "네트워크" 및 "시스템"은 본 명세서에서 상호교환가능하게 사용될 수 있다. 본 명세서에서 설명된 상기 범용 어레이 처리 기술들은 또한 주파수 분할 다중 접속(FDMA), 코드 분할 다중 접속(CDMA), 시분할 다중 접속(TDMA), 공간 분할 다중 접속(SDMA), 직교 FDMA(OFDMA), 단일 캐리어 FDMA(SC-FDMA), 직교 주파수 분할 다중화(OFDM) 등과 같은 다양한 다중 접속 방식들과 함께 사용될 수도 있다. OFDMA 네트워크는 직교 주파수 분할 다중화(OFDM)를 사용한다. SC-FDMA 네트워크는 단일-캐리어 주파수 다중화(SC-FDM)를 사용한다. OFDM 및 SC-FDM은 시스템 대역폭을 다수(K)의 직교 서브캐리어들로 분할하는데, 상기 직교 서브캐리어들은 톤(tone)들, 및/또는 빈들로서 지칭될 수 있다. 각각의 서브캐리어는 데이터와 함께 변조된다. 일반적으로, 변조 심볼들은 OFDM을 사용하여 주파수 도메인으로 전송되고, SC-FDM을 사용하여 시간 도메인으로 전송될 수 있다.
도 1은 무선 통신 네트워크(105)에 있는 두 개의 국들(101 및 103)의 일 실시예의 블록도를 도시한다. 도 1에서, 국(101)은 데이터 송신기로서 동작하고, 국(103)은 데이터 수신기로서 동작한다. 몇몇 실시예들에서, 단일 국이 데이터의 송신기 및 수신기 둘 다로서 동작할 수 있다는 점이 이해되어야 한다.
국들(101 및 103)은 각각, 액세스 포인트, 기지국, 노드, 터미널, 이동국, 사용자 장비, 가입자 유닛, 및/또는 몇몇 다른 디바이스 또는 다른 네트워크 엔티티의 일부분일 수 있으며, 그리고/또는 상기 액세스 포인트, 기지국, 노드, 터미널, 이동국, 사용자 장비, 가입자 유닛, 및/또는 몇몇 다른 디바이스 또는 다른 네트워크 엔티티의 기능들 중 일부 혹은 모두를 포함할 수 있다.
도 1의 예시된 실시예에서, 국(101)은 다수의 안테나들이 구비될 수 있다. 도 1의 예시된 실시예에서, 국(103) 역시 다수의 안테나들이 구비될 수 있다. 각각이 다중 입력들/출력들(예를 들어, 안테나들)을 가지는 수신기 국 및 송신기 국이 있는 통신 네트워크는 다중-입력 다중-출력(MIMO) 네트워크라 지칭될 수 있다. IEEE 802.11n 개발 표준은 MIMO 네트워크의 몇몇 구현예들에서 사용될 수 있는 통신 프로토콜들을 설명한다. 각각의 송신 안테나 및 각각의 수신 안테나는 물리적 안테나 혹은 안테나 어레이일 수 있다. 국(101) 및/또는 국(103)의 다른 실시예들은 다수의 안테나들이 아닌 단일 안테나를 포함할 수 있다는 점이 이해되어야 한다.
송신기 국(101)에서, 전송 데이터 프로세서(107)는 데이터 소스(109)로부터 데이터를 수신하고, 상기 데이터를 처리하여 통신 네트워크(105)를 통해 출력할 수 있다. 상기 데이터는 데이터 심볼 및/또는 파일럿 심볼을 포함할 수 있다. 데이터 심볼들 및 파일럿 심볼들은 위상 시프트 키잉(PSK) 또는 직교 진폭 변조(OAM)와 같은 변조 방식으로부터의 변조 심볼들일 수 있다. 몇몇 구현예들에서, 전송 데이터 프로세서(107)는 다중 출력 안테나들을 통한 다중 스트림들에서의 전송을 위해 상기 코딩된 데이터 신호를 다중화할 수 있다.
몇몇 실시예들에 있어서, 상기 데이터 신호는 수신기 국(103)에 의해(예를 들어, 다수의 수신 안테나들에 의해) 수신될 수 있다. 수신기 국(103)에서, 수신 데이터 프로세서(111)는 상기 수신 안테나들로부터 상기 데이터 신호를 수신하고, 데이터 목적지(113)에 의한 사용을 위해 상기 데이터를 처리할 수 있다.
수신 데이터 프로세서(111) 및/또는 전송 데이터 프로세서(107)에 의해 수행된 상기 처리 중 몇몇은 물리적 계층 처리를 포함할 수 있다. 물리적 계층 처리는 수신 이후 및/또는 전송을 위해 원시(raw) 데이터 비트들을 처리하는 동작을 포함할 수 있다. 물리적 계층 처리는 공지된 통신의 개방형 시스템 상호 연결 모델의 최저 계층과 일반적으로 연관된 동작들을 포함할 수 있다. 무선 통신 시스템들에 있어서, 물리적 계층 처리는 잠재적으로 질의할 수 있는 신뢰성으로 복수의 비트 스트림들로부터 조합된 비트 스트림을 결정하는 동작 및/또는 하나의 비트 스트림을 복수의 비트 스트림들로 분할하는 동작을 포함할 수 있다. 이러한 처리는 당해 분야에 알려진 바와 같은 복수의 행렬 연산들을 포함할 수 있다. 상기 물리적 계층 처리가 수행된 이후, 정보(예를 들어, 처리된 비트 스트림)가 더 높은 통신 계층(예를 들어, MAC 서브-계층을 포함할 수 있는, 데이터 링크 계층)에 제공될 수 있고 그리고/또는 원격 위치에 전송될 수 있다. 몇몇 구현예들에서, 수신 데이터 프로세서(111) 및 전송 데이터 프로세서(107) 중 하나 혹은 이들 모두에 의해 수행되는 처리는 고차 레벨 처리를 포함할 수 있다. 다른 어플리케이션들에 있어서, 이러한 고차 계층 처리는 예를 들어, 데이터 소스(109) 및/또는 데이터 목적지(113)에 의해 수행될 수 있다.
도 2는 물리적 계층 처리를 수행하기 위해 전송 데이터 프로세서(107) 또는 수신 데이터 프로세서(111) 중 어느 하나에서 사용될 수 있는 데이터 프로세서의 예시적인 물리적 섹션(201)을 예시한다. 예시된 바와 같이, 물리적 섹션(201)은, 물리적 섹션(201)에 의해 처리된 데이터가 데이터 링크 계층 처리를 위해 데이터 링크 섹션(205)로 출력되도록 하고 그리고/또는 데이터가 전송 이전에 물리적 섹션(201)에 의한 물리적 계층 처리를 위해 데이터 링크 계층(205)으로부터 수신도록 허용하는 물리적/데이터 링크 인터페이스(203)를 포함할 수 있다.
물리적 섹션(201)은 입력 및/또는 출력 디바이스(213)로 결합될 수 있는데, 상기 입력 및/또는 출력 디바이스(213)를 통해 정보가 원격 통신 시스템으로부터 수신되고 그리고/또는 원격 통신 시스템으로 전송될 수 있다. 몇몇 실시예들에서, 입력 및/또는 출력 디바이스(213)는 수신기 및/또는 송신기 국들(101, 103)의 안테나들을 포함할 수 있다.
물리적 섹션(201)은 복수의 범용 어레이 프로세서들(207) 및 소유자 자원들(209)을 포함할 수 있다. 복수의 범용 어레이 프로세서들(207) 및 소유자 자원들(209)은 통신 네트워크(211)(예를 들어, 시스템 버스)에 의해 결합될 수 있다. 복수의 범용 어레이 프로세서들(207) 및 소유자 자원들(209)은 물리적 계층 처리와 연관된 연산들을 수행할 수 있다. 본 발명의 몇몇 실시예들에 있어서, 소유자 자원들(209)은 하나 이상의 행렬 관련 연산들을 포함할 수 있는 하나 이상의 물리적 계층 처리를 수행하도록 구성되는 제어 엘리먼트들을 포함할 수 있다. 몇몇 실시예들에서, 소유자 자원들(209)은 범용 어레이 프로세서들(207)을 사용하여 물리적 계층 처리 알고리즘들을 수행하여 이들 알고리즘들의 행렬 관련 연산들의 적어도 일부분을 수행할 수 있다. 몇몇 구현예들에 있어서, 소유자 자원들(209)은 행렬 데이터 및 op코드들을 범용 어레이 프로세서들(207)로 전송할 수 있다. 범용 어레이 프로세서들(207)은 op코드들에 의해 지시된 연산들을 상기 행렬 데이터에 대해 수행하여 결과를 소유자 자원들(209)에 전송할 수 있다.
예를 들어, 고속 푸리에 변환 소유자 자원은, 상기 범용 어레이 프로세서들(207) 중 하나가 고속 푸리에 성능에 관련된 하나 이상의 행렬 연산들을 수행할 것을 요청하는 op코드들 및 데이터를 전송할 수 있다. 상기 범용 어레이 프로세서들(207) 중 하나는 상기 하나 이상의 행렬 연산들을 수행하고, 그 결과를 상기 고속 푸리에 변환 소유자 자원에 제공할 수 있는데, 이는 상기 결과를 사용하여 고속 푸리에 변환을 완료하기 위한 임의의 나머지 단계들을 수행할 수 있다.
몇몇 실시예에서, 상기 범용 어레이 프로세서들(207) 중 하나는 곱셈들, 가산들, 및 감산들과 같은 산술 연산들을 수행하도록 구성될 수 있다. 이러한 연산들은 예를 들어, 범용 어레이 프로세서의 매 클록 사이클마다 행렬의 개별적인 부분들에 대해 수행될 수 있다. 산술 연산들의 조합된 다수의 사이클 시리즈는 상기 범용 어레이 프로세서로 출력되고, 행렬 연산의 결과를 생성하기 위해 수신되어 처리될 수 있다. 예를 들어, 행렬 A:
Figure 112010087832373-pct00001
및 행렬 B:
Figure 112010087832373-pct00002
의 행렬 곱은 상기 행렬 곱 연산과 연관된 일련의 스칼라 연산들을 사용하여 결정될 수 있다. 이러한 일련의 연산들은 결과 행렬 C:
Figure 112010087832373-pct00003
로 결정될 수 있으며, 상기 행렬 C의 4개 값은 4번의 개별적인 스칼라 계산들에 의해 결정될 수 있다. 몇몇 실시예들에 있어서, 범용 어레이 프로세서는 행렬 연산으로부터 기인한 행렬의 각각의 값에 대해 각각의 스칼라 계산들을 수행하도록 사용될 수 있다. 예를 들어, a11,a12,a21,a22,b11,b12,b21,및 b22에 대한 값들이 범용 어레이 프로세서로 입력되어 행렬 C의 값들 각각에 대응하여 조합된다. 이하에서 설명되는 바와 같이, 곱셈 및 가산을 지시하는 op코드들은 상기 값들의 조합들 각각을 사용하여 입력될 수 있다. 이들 4개 계산들 각각의 출력은 소유자 자원에 의해 수신되어 결과 행렬 C로서 처리될 수 있다.
몇몇 실시예들에서, 상기 범용 어레이 프로세서들(207) 중 하나 이상은 상기 소유자 자원들 중 하나 이상에 의해 공유될 수 있다. 몇몇 예시적인 구현예들에 있어서, 소유자 자원들로부터의 공유된 입력들의 수는 3 내지 6의 범위일 수 있다. 각각의 소유자 자원들에 대해 전용 및 특수 어레이 처리 회로를 사용하는 것 대신, 이러한 범용 어레이 프로세서들은 상기 복수의 소유자 자원들에 사용된 행렬 연산들을 수행할 수 있는 표준 기능을 제공할 수 있다.
몇몇 실시예들에서, 하나 이상의 범용 어레이 프로세서들(207)을 사용하여 각각의 소유자 자원에 대해 특수 회로가 아닌 행렬 연산들을 수행하여, 시스템 설계의 전체적인 하드웨어 비용을 낮출 수 있다. 게다가, 몇몇 실시예들에서, 범용 어레이 프로세서들(207)은 시간 공유 방식(예를 들어, 시분할 다중 접속(TDMA) 스케줄)에 따라 액세스될 수 있다. 이러한 시간 공유는 몇몇 통신 시스템에서 나타날 수 있는 클록 속도와 데이터 샘플링 속도간의 차(예를 들어,
Figure 112010087832373-pct00004
)들에 영향을 줄 수 있다(leverage). 이러한 큰 차들을 가지는 시스템들에서, 다수의 알고리즘들이, 처리 속도에 크게 부정적으로 영향을 주지 않고, 특수 전용 하드웨어에 의해 수행된다기 보다는 범용 어레이 프로세서들(207) 중에서 시간-다중화될 수 있다. MIMO-OFDM 처리 타임라인에 기반하여, 다양한 소유자 자원들이 단일 TDMA 중재자(arbiter)에 의해 하나 이상의 범용 어레이 프로세서들을 제어할 수 있다. 이러한 TDMA 중재자들은 당해 분야에 공지되어 있다.
몇몇 실시예들에서, 범용 어레이 프로세서들(207)은 시스템의 설계 요건들을 사용하여 스케일링되도록 배열되거나 구성될 수 있다. 예를 들어, 만약 2x2 MIMO 설계가 N개의 범용 어레이 프로세서들을 포함한다면, 4x4 MIMO 설계는 2*N개의 범용 어레이 프로세서들과 실질적으로 유사한 하드웨어 아키텍처를 사용할 수 있다. 증가한 범용 어레이 프로세서들의 개수는 프로세싱 처리량에 있어서 실질적으로 선형적인 증가를 초래할 수 있다.
도 3은, 예를 들어, 도 2에 예시된 상기 범용 어레이 프로세서들(207) 중 하나로서 사용될 수 있는 예시적인 범용 어레이 프로세서(301)의 블록도를 예시한다. 몇몇 실시예들에서, 범용 어레이 프로세서(301)는 소유자 자원들로부터 수신된 op코드에 기반하여 상기 소유자 자원으로부터 수신된 행렬 관련 데이터에 대해 복수의 가능한 산술 연산들 중 하나를 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 복수의 산술 연산들은 행렬 연산들을 수행할 때 MIMO-OFDM 모뎀에 유용할 수 있는 산술 연산들을 포함할 수 있다. 몇몇 실시예들에서, 상기 복수의 산술 연산들은 다수의 디지털 신호 처리 관련 알고리즘들을 구현하기 위한 연산들, 예를 들어, 고속 푸리에 변환들, 공간 처리, 최소 평균 제곱 에러 결정, 채널 결정, 가중치 결정, 및/또는 위상 정정을 포함할 수 있다. 일 구현예에서, 상기 산술 연산들은 곱셈, 가산, 감산 및 누적 연산들을 포함할 수 있다.
몇몇 실시예들에서, 범용 어레이 프로세서(301)는, 원하는 경우, 클록 사이클 당 적어도 한 번의 곱셈을 완료하도록 구성될 수 있다. 몇몇 실시예들에서, 범용 어레이 프로세서(301)에 의해 수행되는 단일 곱셈의 레이턴시(latency)는 다수의 파이프라인 스테이지들을 포함할 수 있다. 몇몇 구현예들에서, 상기 파이프라인 스테이지들의 수는 대략 3개일 수 있다. 몇몇 구현예들에서, 후속하는 클록 사이클이 합산되고, 저장되고, 누산되고, 그리고/또는 그렇지 않은 경우 이전 사이클의 결과와 조합되어, 이에 의해 사이클 레이턴시를 증가시킬 수 있다.
몇몇 실시예들에서, 범용 어레이 프로세서(301)는 두 개의 병렬 처리 경로(303,305)를 포함할 수 있다. 몇몇 실시예들에서, 각각의 처리 경로(303,305)는 일반적으로, 한 세트의 입력 데이터와 관련된 처리 연산들을 수행할 수 있다. 몇 몇 실시예들에서, 상기 두 개의 병렬 처리 경로들은, 아래에서 보다 상세하게 설명될 바와 같이, 데이터 의존성 및/또는 op코드에 따른 서로 간의 교환을 허용할 수 있다.
몇몇 실시예들에서, 상기 두 개의 병렬 처리 경로들은 다양한 행렬 연산들에 대해 사용될 수 있도록 배열된 복수의 계산 엘리먼트들을 포함할 수 있다. 별도의 연산들을 위해 특수 엘리먼트들을 설계한다기 보다 다양한 행렬 연산들에 대해 사용가능한 상기 계산 엘리먼트들을 배열함으로써, 상기 계산 엘리먼트들은 다양한 연산들을 수행하기 위해 재사용될 수 있으며, 이에 의해 비용과 공간을 절약할 수 있다.
상기 두 개의 처리 경로들(303,305)의 사용은 범용 어레이 프로세서(301)가 실수 및 복소 데이터의 병렬 처리를 수행하는 것을 허용할 수 있다. 몇몇 실시예들에서, 제 1 처리 경로는 직교 진폭 변조된 통신 신호의 I 컴포넌트들에 관련된 데이터에 대해 행렬 연산을 수행할 수 있고, 제 2 처리 경로는 상기 직교 진폭 변조된 통신 신호의 Q 컴포넌트들에 관련된 데이터에 대해 행렬 연산을 수행할 수 있다. 다른 실시예들에서, 범용 어레이 프로세서는 단일 I 혹은 Q 컴포넌트를 처리할 수 있다. 몇몇 구현예들에서, 한 쌍의 범용 어레이 프로세서들가 이제 I 및 Q 처리를 병렬로 수행할 수 있거나 혹은 단일 범용 프로세서가 I 및 Q 처리를 순차적으로 수행할 수 있다.
몇몇 실시예들에서, 각각의 병렬 처리 경로(303,305)는 복수의 다중화기들, 복수의 레지스터들, 곱셈기 및 산술 논리 유닛을 포함할 수있다. 상기 컴포넌트들 은 통신 네트워크에 의해 결합되어, 도 3에 도시된 바와 같이, 두 개의 병렬 처리 경로들(303,305)를 형성할 수 있다.
처리 경로(303)의 다중화기들(307 및 309) 및 처리 경로(305)의 다중화기들(311 및 313)은 (예를 들어, 통신 네트워크(211)로부터 수신된) 복수의 공유된 소유자 자원들로부터 개별 처리 경로들로의 입력을 선택할 수 있다. 대응하는 op코드는 op코드 다중화기(315)에 의해 선택될 수 있다. 몇몇 실시예들에서, 대응하는 부가적인 입력들은, 아래에서 더 상세히 설명되는 바와 같이, 범용 어레이 프로세서(301)의 추후 파이프라인 스테이지들에서 op코드 다중화기(315)에 의해 선택된 상기 op코드에 의해 표시되는 연산에서 사용하기 위해 다중화기들(317,319, 및 321)에서 선택될 수 있다. 몇몇 실시예들에서, 다중화기들(307,309,311,313,315,317,319 및 321)로의 상기 입력은 범용 어레이 프로세서(301)를 공유하는 복수의 소유자 자원들 중 하나로부터 단일 통신 패킷으로서 수신될 수 있다.
몇몇 실시예들에서, 다중화기들(307,309,311 및 313)로의 입력들은 소유자 자원의 등록된 출력들로부터 수신될 수 있다. 몇몇 실시예들에서, 상기 소유자 자원의 물리적 위치가 예상치 못한 상호연결 지연들을 생성할 수 있으므로, 상기 다중화기들(307,309,311,313 및 315)의 출력들은 선택 이후 등록될 수 있다. 몇몇 실시예들에서, 상기 다중화기들(307,309,311,313 및 315)의 선택된 출력들은, 범용 어레이 프로세서(301)의 후속하는 파이프라인 스테이지에서의 사용을 위해, 레지스터들(323,325,327,329, 및 331)로 개별적으로 입력될 수 있다.
매 클록 사이클마다, 새로운 입력이 레지스터들(323,325,327,329, 및 331)로 제공될 수 있고, 이전에 저장된 값들이 출력될 수 있다. 몇몇 실시예들에서, 각각의 레지스터는 입력의 비트폭에 대응하는 다수의 비트들을 저장할 수 있다.
몇몇 실시예들에서, 상기 다중화기들(317,319 및 321)의 선택된 출력은 레지스터들(333,335,및 337)로 각각 입력될 수 있다. 몇몇 구현예들에서, 상기 레지스터들(333,335, 및 337) 각각은 다수의 레지스터들을 포함할 수 있어서, 레지스터들(333,335 및 337)은 다수의 클록 사이클들에 대응하는 다수의 입력 값들을 저장할 수 있다. 몇몇 구현예들에서, 각각의 레지스터들(333,335, 및 337)은 입력의 두 개의 클록 사이클들을 저장할 수 있다. 각각의 클록 사이클들마다, 각각의 레지스터(333,335, 및 337)은 개별 다중화기로부터 새로운 입력을 수신할 수 있다. 각각의 레지스터는, 아래에서 설명되는 바와 같이, 상기 저장된 입력값들 중 하나를 상기 새로운 입력과 교체하고, 상기 범용 어레이 프로세서(301)의 다른 컴포넌트들에 의해 사용되기 위해 상기 저장된 입력을 출력할 수 있다. 몇몇 구현예들에서, 가장 오래 저장된 입력값이 매 클록 사이클마다(예를 들어, 우선 입력 우선 출력(FIFO) 방식에 따라) 교체될 수 있다.
몇몇 실시예들에서, 상기 레지스터(323)의 출력은 다중화기(339)에 제공될 수 있다. 매 클록 사이클마다, 상기 다중화기로의 입력은 레지스터(323)로부터의 출력, 및 산술 논리 유닛(ALU)(359) 및 ALU(361)의 출력들을 포함할 수 있으며, 이들 모두는 아래에서 더 상세히 설명될 것이다. 아래에서 설명되는 바와 같이, 입력들의 선택은 수신된 op코드에 기반하여 제 1 op코드 디코더(341)에 의해 이루어 질 수 있다.
몇몇 실시예들에서, 레지스터(327)의 콘텐츠들이 다중화기(343)에 제공될 수 있다. 매 클록 사이클마다, 상기 다중화기(343)로의 입력은 레지스터(327)로부터의 출력, 및 ALU(361)로부터의 출력을 포함하는데, 이는 아래에서 더 상세하게 논의될 것이다. 입력들의 선택은 상기 수신된 op코드에 기반하여 제 1 op코드 디코더(341)에 의해, 다중화기(339)에 대한 입력의 선택과 실질적으로 유사하게 이루어질 수 있다.
몇몇 구현예들에서, 다중화기들(339 및 343)은 곱셈기들(345 및 347)로의 피드백 경로를 제공한다. 만약, 예를 들어, 범용 어레이 프로세서(301)에 의해 수행된 후속적인 연산이 이전 연산의 결과들을 참조한다면, 상기 다중화기들은 상기 이전 연산으로부터의 결과들(예를 들어, ALU(359 및 361)중 하나 혹은 둘 다의 출력)을 선택할 수 있다. 이러한 선택은 연산 속도를 높이기 위해 소유자 자원이 추후 연산을 수행시 바이패스되도록 할 수 있다.
몇몇 실시예들에서, 상기 다중화기(343)의 출력 및 상기 레지스터(325)의 콘텐츠가 곱셈기(345)에 제공될 수 있고, 상기 다중화기(343)의 출력 및 상기 레지스터(329)의 콘텐츠는 곱셈기(347)에 제공될 수 있다. 곱셈기들(345 및 347)은 그들의 수신된 개별 입력들에 대해 곱셈을 수행할 수 있다. 몇몇 구현예들에서, 곱셈기들(345 및 347)은 파이프라인 곱셈기들을 포함할 수 있다. 파이프라인 곱셈기들은 당해 분야에 공지되어 있다. 매 클록 사이클마다, 각각의 곱셈기들(345 및 347)은 개별적인 곱셈 결과를 출력할 수 있다.
상기 곱셈기(345)의 출력은 시프트 엘리먼트(349)에 제공될 수 있다. 이러한 출력이 시프트 엘리먼트(349)에 제공되는 파이프라인 단계에서, 대응하는 레지스터(335)의 콘텐츠가 엘리먼트(333)를 시프트하기 위해 제공될 수 있다. 상기 입력은 동일한 클록 사이클에서 다중화기(319)의 선택된 출력에 대응할 수 있는데, 상기 동일한 클록 사이클에서 곱셈기(345)의 출력을 생성하는데 사용된 다중화기(307)의 출력은 다중화기(307)에서 선택되었다. 아래에 설명될 바와 같이, 몇몇 구현예들에서, 곱셈기(345)의 출력의 비트들은 크기에서 시프트될 수 있고, 시프트 엘리먼트(349)는 레지스터(335)로부터 수신된 값에 따라 곱셈기(345)의 결과의 비트들을 시프트할 수 있어서, 상기 결과의 비트 크기들은 ALU(359)에 의해 수용된 비트들의 기대 크기들과 매치한다. 몇몇 구현예들에서, 예를 들어, 시프트 엘리먼트(349)는 레지스터(335)로부터 수신된 값의 크기와 동일한 비트수를 시프트할 수 있다. 몇몇 구현예들에서, 상기 값들은 0(즉, 시프트 없음) 내지 Log2N의 범위에 있을 수 있는데, 여기서 N은 시프트 엘리먼트(349)에 의해 수신된 비트수이다. 비트 시프트는 당해 분야에 공지되어 있다. 시프트 엘리먼트(349)는 이후 상기 시프트된 결과를 ALU(351)에 제공할 수 있다.
곱셈기(347)의 출력은 시프트-다중화기 엘리먼트(351) 및 다중화기(353)에 제공될 수 있다. 시프트-다중화기 엘리먼트(351)는, 시프트 엘리먼트(349)와 유사하게, 레지스터(335)로부터 수신된 값에 따라 상기 결과 비트들을 시프트할 수 있다. 시프트-다중화기 엘리먼트(351)는 또한 ALU(361)로부터의 입력을 수신할 수 있는데, 이는 또한 레지스터(335)로부터 수신된 값에 따라 시프트될 수도 있다. 몇몇 실시예들에서, 상기 시프트-다중화기 엘리먼트(351)의 출력은 수신된 op코드에 따라 제 2 op코드 디코더(355)에 의해 선택될 수 있다. 상기 시프트-다중화기 엘리먼트(351)의 출력은 이후 ALU(361)에 제공될 수 있다.
곱셈기(347)의 출력에 부가하여, 다중화기(353)는 또한 ALU(359)의 출력 및 레지스터(333)의 콘텐츠를 포함하는 입력을 수신할 수도 있다. 상기 레지스터(333)으로부터의 입력은 동일한 클록 사이클에서 다중화기(317)에서 선택된 입력에 대응할 수 있는데, 왜냐하면 곱셈기(345)의 결과들을 생성하는데 사용된 입력이 다중화기(309)에서 선택되었기 때문이다. 다중화기(353)의 출력은 상기 수신된 op코드에 따라 제 2 op코드 디코더(355)에 의해 선택될 수 있다. 다중화기(353)의 출력은 ALU(359)에 제공될 수 있다.
몇몇 실시예들에서, 다중화기(357)는 ALU(361) 및 레지스터(337)로부터의 입력을 수신할 수 있다. 상기 레지스터(337)로부터의 입력은 동일한 클록 사이클에서 다중화기(321)에서 선택된 입력에 대응할 수 있는데, 왜냐하면 곱셈기(345)의 결과를 생성하는데 사용된 입력은 다중화기(307)에서 선택되었기 때문이다. 다중화기(357)의 출력은 수신된 op코드에 따라 제 2 op코드 디코더(355)에 의해 선택될 수 있다. 다중화기(357)의 출력은 ALU(361)에 제공될 수 있다.
몇몇 실시예들에서, ALU(359)는 시프트 엘리먼트(349) 및 다중화기(353)의 출력을 수신할 수 있다. 몇몇 실시예들에서, ALU(361)는 시프트-다중화기 엘리먼트(351) 및 다중화기 엘리먼트(357)의 출력을 수신할 수 있다. ALU(359) 및 ALU(361)은 그들의 개별적인 수신된 입력에 대해 개별적으로 원하는 산술 연산들을 수행할 수 있다. 상기 원하는 산술 연산들은 수신된 op코드에 따라 제 2 op코드 디코더(355)에 의해 선택될 수 있다. 몇몇 구현예들에서, 상기 연산들은 가산, 항등(identity) 가산(예를 들어, 0이 되는 가산), 및 감산 중 하나를 포함할 수 있다. ALU들은 당해 분야에 공지되어 있다. ALU(359) 및 ALU(361)은 개별 레지스터들(363 및 365)로 상기 원하는 산술 연산들의 결과들을 출력할 수 있다.
ALU(359 및 361)에 의해 수행된 산술 연산은 범용 어레이 프로세서(301)의 매 클록 사이클의 한 가지 중요한 특성일 수 있다. 몇몇 구현예들에서, 상기 곱셈기들(345 및 347)의 출력들은 독립적인 결과로서 처리될 수 있거나 또는 상기 ALU들에 의해 함께 조합될 수도 있다. 더욱이, 몇몇 구현예들에서, 상기 곱셈기(345 및 347)의 출력들은 다수의 클록 사이클들에 대해 병렬로 누산될 수 있는데, 예를 들어, 행렬 곱셈 연산의 일부분들을 수행하는데 있어서 유용할 수 있다. 몇몇 구현예들에서, 상기 곱셈기(345 및 347)의 출력들은 또한 다중화기들(353 및 357)을 통해 외부 값들을 사용하여 이 외부 값들에 대해 연산될 수 있다.
레지스터(363)는 ALU(359)의 출력을 수용할 수 있으며, 레지스터(363)는 후속하는 클록 사이클들 내에서 데이터 의존적인 계산들에서 사용하기 위해 상기 출력을 다중화기들(333 및 353) 및 시프트-다중화기 엘리먼트(351)에 제공할 수 있다. 레지스터(363)는 또한 (예를 들어, 통신 네트워크(211)를 통해) 상기 출력들을 초래하는 연산들의 수행을 요구하는 소유자 자원으로 ALU(359)의 출력을 제공할 수 있다.
레지스터(365)는 ALU(361)의 출력을 수용할 수 있으며, 레지스터(365)는 후속하는 클록 사이클들에서 데이터 의존적인 계산들에서 사용하기 위해 상기 ALU(361)의 출력을 다중화기들(357,343,339)로 제공할 수 있다. 레지스터(365)는 또한 (예를 들어, 통신 네트워크(211)를 통해) 상기 출력들을 초래하는 연산들의 수행을 요구하는 소유자 자원으로 상기 출력을 제공할 수 있다.
위에서 언급된 바와 같이, 다양한 다중화기들이 출력 선택 및 ALU들의 연산들은 범용 어레이 프로세서(301)에 의해 수신된 op코드들에 의해 결정될 수 있다. 상기 op코드들은 어느 다중화기 입력이 선택되고 어느 ALU 연산들이 실행될지를 제 1 및 제 2 op코드 디코더들(341 및 355)로 지시하는 다중-비트 시퀀스를 포함할 수 있다. 몇몇 구현예들에서, 레지스터(367)는, 범용 어레이 레지스터 프로세서(301)의 각 스테이지에서의 사용을 위해 제 1 op코드 디코더가 op코드를 디코딩한 후, 상기 op코드를 저장할 수 있다. 다음 파이프라인 스테이지에 대해, 레지스터(367)는 다음 스테이지동안 사용하기 위해 상기 op코드를 op코드 디코더(369)에 제공할 수 있다. 상기 스테이지 이후, 상기 op코드는 레지스터(369)에 저장될 수 있다. 레지스터들(363 및 365)에 의해 상기 소유자 자원으로 결과가 출력될 때, 대응하는 op코드 역시 레지스터(369)로 출력되어 (예를 들어, 소유자 자원에 대해) 유효 연산이 완료되었음을 표시할 수 있다.
몇몇 실시예들에 있어서, 상기 제 1 및 제 2 op코드 디코더들(341 및 355)에 의해 수행된 op코드들의 디코딩은 다중화기들 및 ALU들로 원하는 입력들을 생성하는 임의의 op코드 디코딩 방법에 따라 수행될 수 있다. op코드 디코딩은 당해 분야에 공지되어 있다. 다른 실시예들에서, ALU들 및/또는 다중화기들을 제어하기 위한 임의의 개수의 op코드 디코더들 혹은 다른 메커니즘들이 사용될 수 있다.
일 구현예에서, 인지된 op코드들은 두 부분으로 나누어질 수 있는데, 한 부분은 제 1 op코드 디코더(341)에 의해 디코딩되고, 한 부분은 제 2 op코드 디코더(355)에 의해 디코딩된다. 다음 표는 제 1 op코드 디코더 부분의 예시적인 정의들을 제공한다.
Figure 112008081632765-pct00005
왼편 열은 수신된 op코드의 2비트 값들을 표시하고 오른편 열은 다중화기들(339 및 343)에 의해 선택된 출력들을 표시한다. 예를 들어, 수신된 op코드가 00의 제 1 op코드 디코더 부분을 포함한다면, 다중화기(339)는 다중화기(307)로부터 출력될 입력을 선택하고, 다중화기(343)는 다중화기(311)로부터 출력될 입력을 선택한다.
다음 표는 상기 제 2 op코드 디코더 부분의 예시적인 정의들을 제공한다.
Figure 112008081632765-pct00006
Figure 112008081632765-pct00007
왼편 열은 수신된 op코드의 4비트 값들을 표시하고, 오른편 열은 ALU들(359,361) 중 하나 이상에 의해 출력된 하나 이상의 결과들을 표시한다. 예를 들어, 만약 수신된 op코드가 0000의 제 2 op코드 디코더 부분을 포함한다면, 상기 ALU는 디폴트 휴지상태 값(예를 들어, 모두 0들)을 출력할 수 있다. 몇몇 구현예들에서, 휴지상태 op코드는 중지(stall) 메커니즘으로서 사용될 수 있어서, 상기 휴지상태 기간동안, 상기 처리 경로들은 여전히 이전 연산으로부터 액티브할 수 있다.
또다른 예로서, 만약 수신된 op코드가 0001의 제 2 op코드 디코더 부분을 포 함한다면, 임의의 누산이 없는 곱셈 연산의 결과는 각 ALU(359, 361)의 출력일 수 있다. 이러한 출력은 ALU(359)에 대한 다중화기(307 및 309)의 출력들의 곱 및 ALU(361)에 대한 다중화기(311 및 313)의 출력들의 곱에 대응할 수 있다. 이러한 출력은, 각각의 ALU들(359 및 361)에 의해 수행된 연산이 항등 가산(예를 들어, 입력 값들의 합이 0이 됨)에 대응하고, 시프트-다중화기 엘리먼트(351)의 출력이 곱셈기(347)의 출력이 되도록 선택되는 경우 초래될 수 있다. 만약, 상기 op코드 디코더 부분이 대신 0010을 포함한다면, 상기 출력은 ALU(359)에 대한 다중화기(317)의 출력에 가산된 다중화기들(307 및 309)의 출력들의 곱 및 ALU(361)에 대한 다중화기(321)의 출력에 가산된 다중화기들(311 및 313)의 출력들의 곱에 대응할 수 있다. 이러한 출력은, 각각의 ALU에 의해 수행된 연산이 개별적인 ALU 입력들의 합에 대응하고, 다중화기(353)의 출력이 레지스터(333)의 콘텐츠가 되도록 선택되고, 다중화기(357)의 출력이 레지스터(337)의 출력이 되도록 선택되고, 시프트-다중화기 엘리먼트(351)의 출력이 곱셈기(347)의 출력이 되도록 선택되는 경우 초래될 수 있다.
또다른 예시로서, 만약 수신된 op코드가 0111의 제 2 op코드 디코더 부분을 포함한다면, 외부 가산치와의 곱 및 합의 결과는 ALU(361)의 출력일 수 있다. 몇몇 구현예들에 있어서, 상기 ALU(359)의 출력은 휴지상태 출력 값(예를 들어, 모두 0들)일 수 있다. 이러한 결과를 생성하는 것은 위에서 설명된 결과들에 비해(즉, 제 2 op코드 디코더 부분들 0000, 0001, 0010에 대해), 하나의 부가적인 클록 사이클이 소요될 수 있다. 몇몇 구현에들에 있어서, 이러한 결과들은 제 1 클록 사이 클 동안 ALU(359)에 의한 가산 연산들을 수행함으로써 생성될 수 있다. 상기 제 1 클록 사이클동안, 상기 다중화기(353)의 출력은 곱셈기(347)의 출력을 포함하도록 선택될 수 있다. 또한, 몇몇 실시예들에서, 다중화기(357)의 출력은 레지스터(337)의 출력이 되도록 선택될 수 있고, ALU(361)에 의해 수행된 연산은 항등 가산일 수 있다. 제 2 클록 동안, ALU(361)는 가산 연산을 수행할 수 있고, 시프트-다중화기 엘리먼트(351)의 출력은 레지스터(363)로부터 입력될 수 있고, 다중화기(357)의 출력은 레지스터(365)로부터의 입력(즉, 이전 클록 사이클로부터 ALU(361)에 의한 항등 가산의 출력)이 되도록 선택될 수 있다.
상이한 개수의 클록 사이클들을 사용하는 수용(accommodating) 연산들은, 새로운 입력이 이전 입력과 충돌함에 따라 데이터를 덮어쓰는 복잡성을 생성한다. 몇몇 구현예들에서, 중지(stall) 메커니즘이, 부가적인 클록 사이클들을 요구하는 연산이 수행되는 경우, 범용 어레이 프로세서를 통해 데이터의 진행을 중지시키기 위해 포함될 수 있다. 이러한 데이터의 중지는 당해분야에 공지되어 있다.
다른 구현예들에 있어서, 상기 소유자 자원들은 연산에 의해 요구되는 상기 부가적인 클록 사이클들에 대응하는 다수의 휴지상태 연산들을 삽입함으로써 이러한 중지를 제어할 수 있다. 이러한 구현예들은 별도의 중지 메커니즘을 포함하지 않을 수 있다. 이러한 휴지상태(예를 들어, NOP) 명령의 삽입은 당해 분야에 공지되어 있다. 상기 휴지상태 사이클동안, 상기 ALU들이 액티브할 수 있고, 이전 op코드 제어 연산의 결과를 출력할 수 있다.
몇몇 실시예들에 있어서, 범용 어레이 프로세서(301)의 엘리먼트들 중 데이 터경로들은 원하는 비트폭들을 포함할 수 있다. 상기 원하는 비트폭들은 원하는 성능 및 비용 목표들에 따라 선택될 수 있다. 비트폭이 증가함에 따라 비용이 증가할 수 있고, 계산의 정확도 역시 증가할 수 있다. 아래표는 원래 N의 비트폭이 각각의 다중화기들(307,309,311 및 313)로 입력되는 실시예를 위해 사용될 수 있는 비트 폭들의 일 예시적인 세트를 표시한다. 다양한 구현예들에서, N은 임의의 값을 포함할 수 있다. 두 개의 예시적인 구현예들에 있어서, N은 16 및 18을 포함할 수 있다. N을 감소시키는 것은 처리된 데이터의 양자화 에러들을 증가시킬 수 있고, 범용 어레이 프로세서(301)에 의해 사용된 면적을 감소시킬 수 있다.
Figure 112008081632765-pct00008
Figure 112008081632765-pct00009
가장 좌측 열은 데이터경로 부분을 표시한다(예를 들어, 상기 식별된 엘리먼트들로부터의 출력). 중간 열은 상기 부분의 비트폭을 표시한다. 가장 우측 열은 데이터경로 부분에서의 상기 비트들의 포맷(formatting)을 나타낸다. 예를 들어, 다중화기들(307,309,311,313,317 및 321)은 개별 다중화기들로의 입력으로서 수신 된 상기 비트들 모두를 나타내는 N비트를 포함할 수 있다. 또다른 예로서, 곱셈기들(345 및 347)로부터의 출력은 N+3 비트를 포함할 수 있다. 비트들의 곱이 상기 비트수를 N+3 초과로 증가시킬수 있기 때문에, 상기 N+3 비트는 상기 곱의 완전한 결과를 나타내지 않을 수도 있다. 상기 개별 포맷 열에서 표시된 바와 같이, 비트 출력은 (제외된 부호 비트를 가지는) 최상위 비트들을 상기 N-4번째 최하위 비트로 나타낼 수 있다.
범용 어레이 프로세서(301), op코드들 및 비트폭들에 대한 상기 설명은 단지 예들로서 주어진다. 본 발명의 다른 실시예들에서, 임의의 원하는 엘리먼트들의 배열은 op코드들의 임의의 세트에 기반하여 임의의 원하는 연산들을 수행하기 위해 임의의 원하는 비트폭들을 사용하여 동작하는 범용 어레이 처리를 생성하도록 조합될 수 있다.
예시적인 범용 어레이 프로세서를 설명함에 따라, 범용 어레이 처리를 수행하는 방법이 설명될 수 있다. 도 4는 블록(401)에서 시작하고, 본 발명의 몇몇 실시예들에 따라 범용 어레이 처리를 수행하기 위해 사용될 수 있는 예시적인 프로세스(400)를 예시한다.
블록(403)에서 나타난 바와 같이, 프로세스(400)는 하나 이상의 소유자 자원들로부터의 입력을 수신하는 단계를 포함한다. 전술된 바와 같이, 상기 입력은 단일 범용 어레이 프로세서를 공유하는 하나 이상의 소유자 자원들로부터의 통신을 통해 수신될 수 있다.
블록(405)에서 나타난 바와 같이, 프로세스(400)는 처리를 위한 입력을 선택 하는 단계를 포함할 수 있다. 상기 입력을 선택하는 것은 블록(403)에서 수신된 입력들 중 하나를 선택하는 단계를 포함할 수 있다. 상기 선택된 입력은 연산 데이터(예를 들어, 산술 연산들이 수행될 수 있는 비트 시퀀스들) 및 op코드를 포함할 수 있다. 상기 입력을 선택하는 단계는 시분할 다중 접속 방식에 기반하여 입력을 선택하는 단계를 포함할 수 있다. 이러한 방식은 범용 어레이 프로세서를 공유하는 복수의 소유자 자원들에 의해 데이터가 처리되는 순서에 기반하여 입력들을 선택할 수 있다. 몇몇 실시예들에 있어서, 각각의 소유자 자원에 충분한 시간이 할당되어, 데이터가 상기 시간동안 상기 개별 소유자 자원에 의해/대해 처리될 수 있고, 상기 소유자 자원들 다음 자원 또는 또다른 처리 혹은 전송 엘리먼트에 의해 사용될 수 있다.
블록(407)에서 나타난 바와 같이, 프로세스(400)는 상기 입력의 적어도 일부분들을 두 개의 병렬 처리 경로들로 제공하는 단계를 포함할 수 있다. 전술된 바와 같이, 각각의 처리 경로들은 상기 op코드에 따라 상기 연산 데이터에 대해 하나 이상의 원하는 연산들을 수행하도록 구성되고 배열되는 복수의 계산 컴포넌트들을 포함할 수 있다.
블록(409)에서 나타난 바와 같이, 프로세스(400)는 상기 op코드에 기반하여 상기 두 개의 처리 경로들을 통한 상기 입력의 흐름을 제어하는 단계를 포함할 수 있다. 상기 입력의 흐름은 상기 op코드 자체 뿐 아니라, 상기 연산 데이터 및 상기 연산 데이터에 대해 연산들을 수행한 결과들을 포함할 수 있다. 상기 데이터의 흐름은 특정한 원하는 행렬-관련 연산이 상기 데이터를 사용하여 수행될 수 있도록 제어될 수 있다.
몇몇 구현예들에 있어서, 상기 데이터의 흐름을 지시하는 단계는 상기 처리 경로들 중 하나의 출력이 나머지 처리 경로의 입력으로서 사용될 수 있도록 상기 데이터의 흐름을 지시할 수 있다. 예를 들어, 하나의 파이프라인 처리 경로의 입력은 상이한 처리 경로의 이전 파이프라인 처리 경로의 출력을 포함할 수 있다. 몇몇 실시예들에서, 상기 데이터의 흐름을 지시하는 단계는 상기 op코드들에 따라 하나 이상의 처리 스테이지들에서 입력들을 선택하는 단계를 포함할 수 있다.
블록(411)에서 나타난 바와 같이, 처리(400)는 상기 op코드에 기반하여 제 1 병렬 처리 경로에서의 제 1 행렬-관련 연산을 수행하는 단계를 포함함다. 상기 행렬-관련 연산은, 상기 op코드에 기반하여 선택된 산술 연산을 포함할 수 있다.
블록(413)에서 나타난 바와 같이, 프로세스(400)는 상기 op코드에 기반하여 제 2 병렬 처리 경로에서의 제 2 행렬-관련 연산을 수행하는 단계를 포함한다. 상기 행렬 관련-연산은 상기 op코드에 기반하여 선택된 산술 연산을 포함할 수 있다.
몇몇 구현예들에서, 상기 제 1 및 제 2 행렬 연산들의 결과들은 상기 소유자 자원으로 출력되고 그리고/또는 후속하는 처리에서 사용될 수 있다. 프로세스(400)는 블록(415)에서 종료될 수 있다.
본 명세서에서 설명된 기술들은 MIMO 무선 통신 시스템들 내에서 뿐만 아니라 임의의 통신 시스템 내에서, 무선 혹은 하나 이상의 파일롯 톤들을 사용하여 구현될 수 있다. 본 명세서에서 설명된 기술들은 하드웨어 구현, 소프트웨어 구현 혹은 이들의 조합을 포함하여, 다양한 방식들로 구현될 수 있다. 하드웨어 구현에 대해, 송신국에서의 송신 및/또는 수신국에서의 수신을 위해 데이터를 처리하는데 사용되는 처리 유닛들은 하나 이상의 주문형 반도체들(ASIC), 디지털 신호 처리기들(DSP), 디지털 신호 처리 장치들(DSPD), 프로그래머블 논리 디바이스들(PLD), 필드 프로그래머블 게이트 어레이들(FPGA), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본 명세서에서 설명된 기능들을 수행하기 위해 설계된 다른 전자 유닛들 혹은 이들의 조합 내에서 구현될 수 있다. 상기 송신 및 수신국들이 다수의 프로세서들을 포함하는 실시예들에서, 각각의 스테이션에 있는 프로세서들은 하드웨어 유닛들을 공유할 수 있다.
소프트웨어 구현에 대해, 데이터 전송 및 수신 기술들은 본 명세서에 설명된 기능들을 수행하는 소프트웨어 모듈들(예를 들어, 프로시저들, 기능들 등)을 사용하여 구현될 수 있다. 상기 소프트웨어 코드들은 메모리 유닛에 저장되고 프로세서에 의해 수행될 수 있다. 상기 메모리 유닛은 상기 프로세서 내에 구현되거나 상기 프로세서에 대해 외부에서 구현될 수 있다.
하나 이상의 예시적인 실시예들에서, 설명된 상기 기능들은 하드웨어, 소프트웨어, 펌웨어 혹은 이들의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터-판독가능한 매체상에 하나 이상의 명령들 및 코드로서 저장되거나 하나 이상의 명령들 및 코드를 통해 전송될 수 있다. 컴퓨터-판독가능한 매체는 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체 및 컴퓨터 저장 매체 모두를 포함한다. 저장 매체 는 컴퓨터에 의해 액세스될 수 있는 임의의 사용가능한 매체일 수 있다. 제한이 아닌 예시로써, 이러한 컴퓨터 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 혹은 다른 광학 디스크 저장소, 자기 디스크 저장소 혹은 다른 자기 저장 디바이스들, 혹은 명령들 혹은 데이터 구조들의 형태로 원하는 프로그램 코드를 운반하거나 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터-판독가능한 매체에 적절히 따를 수 있다. 예를 들어, 상기 소프트웨어가 웹사이트, 서버 혹은 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선(DSL), 혹은 적외선, 무선, 혹은 마이크로파와 같은 무선 기술들을 사용하여 전송된다면, 상기 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선(DSL), 혹은 적외선, 무선, 혹은 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함될 수 있다. 디스켓 및 디스크는 본 명세서에서 사용된 바와 같이, 콤팩트 디스크, 레이저 디스크, 광학 디스크, 디지털 다용도 디스크(DVD), 플로피 디스켓 및 블루-레이 디스크를 포함하며, 디스켓들은 일반적으로 데이터를 자기적으로 재생하는 반면, 디스크들은 레이저를 사용하여 광학적으로 데이터를 재생한다. 상기 항목들의 조합들 역시 컴퓨터-판독가능한 매체의 범위 내에 포함되어야 한다.
상기 개시된 실시예들의 이전 설명은 당업자로 하여금 본 발명을 사용하거나 제작할 수 있도록 제공된다. 이들 실시예들에 대한 다양한 수정들이 당업자들에게 자명할 것이며, 본 명세서에서 정의된 포괄적인 원리들은 본 발명의 사상 혹은 범위에서 벗어남이 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본 명 세서에 나타난 실시예들로 한정되는 것으로 의도되는 것이 아니라, 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따른다.

Claims (49)

  1. 어레이(array) 프로세서 장치로서,
    복수의 다중화기들;
    복수의 곱셈기들;
    복수의 산술 논리 유닛들(ALU); 및
    적어도 하나의 op코드(opcode) 제어 엘리먼트를 포함하고,
    상기 복수의 다중화기들, 상기 복수의 곱셈기들, 및 상기 복수의 ALU들은 두 개의 병렬 처리 경로들을 형성하도록 구성되고 배열되며, 각각의 병렬 처리 경로는 상기 op코드 제어 엘리먼트에 의해 수신된 op코드에 따라 행렬 연산들의 세트를 수행하도록 구성되는,
    어레이 프로세서 장치.
  2. 제1항에 있어서,
    상기 op코드는 휴지상태(idle) op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함하는,
    어레이 프로세서 장치.
  3. 제2항에 있어서,
    상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산 치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함하는,
    어레이 프로세서 장치.
  4. 제3항에 있어서,
    상기 두 개의 병렬 처리 경로들은 상기 곱셈 연산, 상기 외부 가산치와의 곱셈 연산, 상기 외부 감산치와의 곱셈 연산, 상기 누산치와의 곱셈 연산, 상기 결과들의 합산치와의 곱셈 연산, 상기 결과들의 감산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 상기 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 누산치와의 곱셈 연산, 및 상기 결과들의 감산치 및 누산치와의 곱셈 연산 각각을 수행하도록 구성되는,
    어레이 프로세서 장치.
  5. 제1항에 있어서,
    상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 제 1 파이프라인(pipelined) 병렬 처리 경로를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 제 2 파이프라인 병렬 처리 경로를 포함하는,
    어레이 프로세서 장치.
  6. 제5항에 있어서,
    상기 제 1 병렬 처리 경로의 제 1 파이프라인 스테이지로의 입력은 상기 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지의 출력을 포함할 수 있는,
    어레이 프로세서 장치.
  7. 제6항에 있어서,
    상기 op코드 제어 엘리먼트는 상기 op코드에 기반하여 상기 제 1 파이프라인 스테이지로의 입력 및 상기 제 2 파이프라인 스테이지로의 입력을 선택하도록 구성되는,
    어레이 프로세서 장치.
  8. 제6항에 있어서,
    상기 제 2 병렬 처리 경로의 제 3 파이프라인 스테이지로의 입력은 상기 제 1 병렬 처리 경로의 제 4 파이프라인 스테이지의 출력을 포함할 수 있는,
    어레이 프로세서 장치.
  9. 제6항에 있어서,
    상기 제 1 파이프라인 스테이지는 곱셈 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 산술-논리 스테이지를 포함하는,
    어레이 프로세서 장치.
  10. 제6항에 있어서,
    상기 제 1 파이프라인 스테이지는 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 곱셈 스테이지를 포함하는,
    어레이 프로세서 장치.
  11. 제6항에 있어서,
    상기 제 1 파이프라인 스테이지는 제 1 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 제 2 산술-논리 스테이지를 포함하는,
    어레이 프로세서 장치.
  12. 제1항에 있어서,
    상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 실수 행렬 값들을 처리하기 위한 처리 경로를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 허수 행렬 값들을 처리하기 위한 처리 경로를 포함하는,
    어레이 프로세서 장치.
  13. 제1항에 있어서,
    상기 복수의 곱셈기들은 두 개의 곱셈기들을 포함하는,
    어레이 프로세서 장치.
  14. 제13항에 있어서,
    상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 상기 두 개의 곱셈기들 중 제 1 곱셈기를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 상기 두 개의 곱셈기들 중 제 2 곱셈기를 포함하는,
    어레이 프로세서 장치.
  15. 제1항에 있어서,
    상기 복수의 ALU들은 두 개의 ALU들을 포함하는,
    어레이 프로세서 장치.
  16. 제15항에 있어서,
    상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로는 상기 두 개의 ALU들 중 제 1 ALU를 포함하고, 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로는 상기 두 개의 ALU들 중 제 2 ALU를 포함하는,
    어레이 프로세서 장치.
  17. 제16항에 있어서,
    상기 제 1 ALU의 제 1 입력은 상기 복수의 곱셈기들 중 제 1 곱셈기의 출력을 포함하고, 상기 제 1 ALU의 제 2 입력은 상기 복수의 곱셈기들 중 제 2 곱셈기의 출력을 포함하고, 상기 제 2 ALU의 입력은 상기 제 2 곱셈기의 출력을 포함하는,
    어레이 프로세서 장치.
  18. 제1항에 있어서,
    상기 op코드 제어기는 상기 op코드에 기반하여 상기 복수의 ALU들 중 적어도 하나의 ALU에 의해 수행되는 산술 연산을 선택하도록 구성되는,
    어레이 프로세서 장치.
  19. 제1항에 있어서,
    상기 op코드 제어기는 상기 op코드에 기반하여 상기 복수의 곱셈기들을 통해 데이터의 흐름을 제어하도록 구성되는,
    어레이 프로세서 장치.
  20. 제19항에 있어서,
    상기 데이터의 흐름을 제어하는 것은 상기 두 개의 병렬 처리 경로들 및 외부 데이터의 입력 간의 데이터 의존성들을 제어하는 것을 포함하는,
    어레이 프로세서 장치.
  21. MIMO OFDM 수신기 장치로서,
    상기 MIMO OFDM 수신기 장치는 제1항 내지 제 20항 중 어느 한 항에 기재된 상기 어레이 프로세서 장치를 포함하는,
    MIMO OFDM 수신기 장치.
  22. MIMO OFDM 수신기 장치로서,
    상기 MIMO OFDM 수신기 장치는 복수의 어레이 프로세서 장치들을 포함하고,
    상기 복수의 어레이 프로세서 장치들 각각은 제 1항 내지 제 20항 중 어느 한 항에 기재된 상기 어레이 프로세서 장치인,
    MIMO OFDM 수신기 장치.
  23. MIMO OFDM 송신기 장치로서,
    상기 MIMO OFDM 송신기 장치는 제1항 내지 제 20항 중 어느 한 항에 기재된 상기 어레이 프로세서 장치를 포함하는,
    MIMO OFDM 송신기 장치.
  24. MIMO OFDM 송신기 장치로서,
    상기 MIMO OFDM 송신기 장치는 복수의 어레이 프로세서 장치들을 포함하고,
    상기 복수의 어레이 프로세서 장치들 각각은 제 1항 내지 제 20항 중 어느 한 항에 기재된 상기 어레이 프로세서 장치인,
    MIMO OFDM 송신기 장치.
  25. 어레이 프로세서 장치로서,
    op코드에 기반하여 두 개의 병렬 처리 경로들을 통한 데이터의 경로를 제어하기 위한 수단;
    상기 두 개의 병렬 처리 경로들 각각에서 데이터에 대해 두 개의 병렬 행렬 연산들을 수행하기 위한 수단; 및
    상기 op코드에 기반하여 상기 두 개의 병렬 행렬 연산들을 선택하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  26. 제25항에 있어서,
    상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함하는,
    어레이 프로세서 장치.
  27. 제26항에 있어서,
    상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함하는,
    어레이 프로세서 장치.
  28. 제27항에 있어서,
    상기 두 개의 병렬 행렬 연산들을 수행하기 위한 수단은 상기 곱셈 연산, 상기 외부 가산치와의 곱셈 연산, 상기 외부 감산치와의 곱셈 연산, 상기 누산치와의 곱셈 연산, 상기 결과들의 합산치와의 곱셈 연산, 상기 결과들의 감산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 상기 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 상기 결과들의 합산치 및 누산치와의 곱셈 연산, 및 상기 결과들의 감산치 및 누산치와의 곱셈 연산 각각을 수행하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  29. 제25항에 있어서,
    상기 데이터의 경로를 제어하기 위한 수단은,
    상기 두 개의 병렬 처리 경로들 간의 데이터의 의존성을 제어하기 위한 수단; 및
    상기 두 개의 병렬 처리 경로들로의 외부 데이터의 입력을 제어하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  30. 제25항에 있어서,
    상기 두 개의 병렬 행렬 연산들을 수행하기 위한 수단은,
    실수 행렬 값들을 처리하기 위한 수단; 및
    상기 실수 행렬 값들과 동시에 허수 행렬 값들을 처리하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  31. 제25항에 있어서,
    상기 op코드에 기반하여 상기 데이터의 경로를 제어하기 위한 수단은 복수의 곱셈기들의 출력을 선택하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  32. 제25항에 있어서,
    상기 op코드에 기반하여 상기 두 개의 병렬 행렬 연산들을 선택하기 위한 수단은 적어도 하나의 ALU에 의해 수행되는 산술 연산을 선택하기 위한 수단을 포함하는,
    어레이 프로세서 장치.
  33. 행렬 연산들을 수행하는 방법으로서,
    op코드에 기반하여 두 개의 병렬 처리 경로들을 통한 데이터의 흐름을 제어하는 단계;
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로에서 제 1 행렬 연산을 수행하는 단계; 및
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로에서 제 2 행렬 연산을 수행하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  34. 제33항에 있어서,
    상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함하는,
    행렬 연산들을 수행하는 방법.
  35. 제34항에 있어서,
    상기 곱셈 연산 op코드는 곱셈 연산, 외부 가산치와의 곱셈 연산, 외부 감산치와의 곱셈 연산, 누산치와의 곱셈 연산, 결과들의 합산치와의 곱셈 연산, 결과들의 감산치와의 곱셈 연산, 결과들의 합산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 외부 감산치와의 곱셈 연산, 결과들의 감산치 및 외부 가산치와의 곱셈 연산, 결과들의 합산치 및 누산치와의 곱셈 연산, 및 결과들의 감산치 및 누산치와의 곱셈 연산 중 적어도 하나의 표시를 포함하는,
    행렬 연산들을 수행하는 방법.
  36. 제33항에 있어서,
    상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로의 제 1 파이프라인 스테이지의 출력을 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지의 입력으로 전달하는(directing) 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  37. 제36항에 있어서,
    상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 op코드에 기반하여 상기 제 1 병렬 처리 경로의 상기 제 1 파이프라인 스테이지 및 상기 제 2 병렬 처리 경로의 제 2 파이프라인 스테이지로의 입력을 선택하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  38. 제36항에 있어서,
    상기 제 1 파이프라인 스테이지는 곱셈 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 산술-논리 스테이지를 포함하는,
    행렬 연산들을 수행하는 방법.
  39. 제36항에 있어서,
    상기 제 1 파이프라인 스테이지는 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 곱셈 스테이지를 포함하는,
    행렬 연산들을 수행하는 방법.
  40. 제36항에 있어서,
    상기 제 1 파이프라인 스테이지는 제 1 산술-논리 스테이지를 포함하고, 상기 제 2 파이프라인 스테이지는 제 2 산술-논리 스테이지를 포함하는,
    행렬 연산들을 수행하는 방법.
  41. 제36항에 있어서,
    상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 제 2 병렬 처리 경로의 제 3 파이프라인 스테이지의 출력을 상기 제 1 병렬 처리 경로들의 제 4 파이프라인 스테이지의 입력으로 전달하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  42. 제33항에 있어서,
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 1 병렬 처리 경로에서 상기 제 1 행렬 연산을 수행하는 단계는 실수 행렬 값들을 처리하는 단계를 포함하고; 그리고
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 2 병렬 처리 경로에서 상기 제 2 행렬 연산을 수행하는 단계는 허수 행렬 값들을 처리하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  43. 제33항에 있어서,
    상기 op코드에 기반하여 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 op코드에 기반하여 복수의 다중화기들을 제어하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  44. 제43항에 있어서,
    상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 간의 데이터 의존성들을 제어하는 단계 및 외부 데이터의 입력을 제어하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  45. 제43항에 있어서,
    상기 두 개의 병렬 처리 경로들을 통한 상기 데이터의 흐름을 제어하는 단계는 상기 두 개의 병렬 처리 경로들 중 제 1 병렬 처리 경로의 제 1 곱셈기의 출력을 전달하는 단계 및 상기 두 개의 병렬 처리 경로들 중 제 2 병렬 처리 경로의 제 2 곱셈기의 출력을 전달하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  46. 제45항에 있어서,
    상기 제 1 곱셈기의 출력을 전달하는 단계는 상기 제 1 곱셈기의 출력을 상기 제 1 병렬 처리 경로의 제 1 ALU의 제 1 입력으로 전달하는 단계를 포함하고, 상기 제 2 곱셈기의 출력을 전달하는 단계는 상기 제 2 곱셈기의 출력을 상기 제 1 ALU의 제 2 입력 및 상기 제 2 병렬 처리 경로의 제 2 ALU의 입력으로 전달하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  47. 제33항에 있어서,
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 1 병렬 처리 경로에서 상기 제 1 행렬 연산을 수행하는 단계는 상기 op코드에 기반하여 제 1 ALU에 대한 제 1 연산을 선택하는 단계를 포함하고; 그리고
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들 중 상기 제 2 병렬 처리 경로에서 상기 제 2 행렬 연산을 수행하는 단계는 상기 op코드에 기반하여 제 2 ALU에 대한 제 2 연산을 선택하는 단계를 포함하는,
    행렬 연산들을 수행하는 방법.
  48. 저장된 명령을 포함하는 기계-판독가능한 매체로서,
    상기 명령은,
    op코드에 기반하여 병렬 행렬 연산을 수행하기 위해 두 개의 병렬 처리 경로들의 개별 곱셈 스테이지들에서 데이터 의존성을 선택하기 위한 제 1 명령 세트;
    상기 op코드에 기반하여 상기 두 개의 병렬 처리 경로들의 개별 산술-논리 스테이지들에서 개별적인 산술-논리 연산들 및 데이터 의존성들을 선택하기 위한 제 2 명령 세트를 포함하는,
    기계-판독가능한 매체.
  49. 제48항에 있어서,
    상기 op코드는 휴지상태 op코드 및 곱셈 연산 op코드 중 적어도 하나를 포함하는,
    기계-판독가능한 매체.
KR1020087028956A 2006-04-28 2007-04-29 범용 어레이 처리 KR101047768B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US79598106P 2006-04-28 2006-04-28
US60/795,981 2006-04-28
PCT/US2007/067721 WO2007127971A1 (en) 2006-04-28 2007-04-29 General purpose array processing

Publications (2)

Publication Number Publication Date
KR20090005399A KR20090005399A (ko) 2009-01-13
KR101047768B1 true KR101047768B1 (ko) 2011-07-07

Family

ID=38421744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087028956A KR101047768B1 (ko) 2006-04-28 2007-04-29 범용 어레이 처리

Country Status (6)

Country Link
US (1) US8250337B2 (ko)
EP (1) EP2013762B1 (ko)
JP (1) JP2009535721A (ko)
KR (1) KR101047768B1 (ko)
CN (1) CN101432723A (ko)
WO (1) WO2007127971A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483442B2 (en) 2013-09-13 2016-11-01 Kabushiki Kaisha Toshiba Matrix operation apparatus

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8855040B1 (en) 2008-04-21 2014-10-07 Google Inc. Cross-cell MIMO
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
KR101107784B1 (ko) * 2010-11-16 2012-01-20 (주)대흥이엔지 파일형 방벽
US8804764B2 (en) 2010-12-21 2014-08-12 International Business Machines Corporation Data path for data extraction from streaming data
US20120198213A1 (en) * 2011-01-31 2012-08-02 International Business Machines Corporation Packet handler including plurality of parallel action machines
US9424043B1 (en) * 2012-12-27 2016-08-23 Altera Corporation Forward-flow selection
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
CN110825439B (zh) * 2018-08-10 2021-03-09 北京百度网讯科技有限公司 信息处理方法和处理器
US10963256B2 (en) * 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055861A1 (en) 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62140137A (ja) * 1985-12-16 1987-06-23 Toshiba Corp Aluを用いたデータ保持方法
US5117499A (en) * 1988-01-22 1992-05-26 Sharp Kabushiki Kaisha Data flow type processing apparatus having external and cache memories for fetching paired executing instruction when mishit occurs
US4996661A (en) * 1988-10-05 1991-02-26 United Technologies Corporation Single chip complex floating point numeric processor
JP2869668B2 (ja) 1990-06-13 1999-03-10 沖電気工業株式会社 ディジタルデータの離散フーリエ又はコサイン変換装置
JPH05346935A (ja) 1992-06-15 1993-12-27 Sony Corp 行列データ乗算装置および行列データ乗算方法
US5633897A (en) * 1995-11-16 1997-05-27 Atmel Corporation Digital signal processor optimized for decoding a signal encoded in accordance with a Viterbi algorithm
JP2970512B2 (ja) 1995-12-28 1999-11-02 日本電気株式会社 ベクトルプロセッサ
US6029267A (en) * 1997-11-25 2000-02-22 Lucent Technologies Inc. Single-cycle, soft decision, compare-select operation using dual-add processor
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
JP2001092808A (ja) 1999-09-24 2001-04-06 Sanyo Electric Co Ltd データ処理装置
US7072929B2 (en) * 2000-11-01 2006-07-04 Pts Corporation Methods and apparatus for efficient complex long multiplication and covariance matrix implementation
JP2003016051A (ja) 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
JP3333779B2 (ja) 2001-12-26 2002-10-15 松下電器産業株式会社 行列演算装置
JP2003346139A (ja) 2002-05-23 2003-12-05 Canon Inc 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US7567997B2 (en) * 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7463628B2 (en) * 2004-03-30 2008-12-09 Extreme Networks, Inc. Packet data modification processor command instruction set

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055861A1 (en) 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483442B2 (en) 2013-09-13 2016-11-01 Kabushiki Kaisha Toshiba Matrix operation apparatus

Also Published As

Publication number Publication date
EP2013762A1 (en) 2009-01-14
US20080109635A1 (en) 2008-05-08
CN101432723A (zh) 2009-05-13
US8250337B2 (en) 2012-08-21
JP2009535721A (ja) 2009-10-01
WO2007127971A1 (en) 2007-11-08
EP2013762B1 (en) 2018-09-19
WO2007127971A9 (en) 2008-10-16
KR20090005399A (ko) 2009-01-13

Similar Documents

Publication Publication Date Title
KR101047768B1 (ko) 범용 어레이 처리
JP4927841B2 (ja) 短い複素乗算器及び独立ベクトル・ロード・ユニットを含むクラスタードsimdマイクロ・アーキテクチャを有するプログラマブル・デジタル信号プロセッサ
JP5080469B2 (ja) 複素ベクトル命令を実行するように構成されるクラスタードsimdマイクロ・アーキテクチャを含むプログラマブル・デジタル信号プロセッサ
Javeed et al. Low latency flexible FPGA implementation of point multiplication on elliptic curves over GF (p)
Janhunen et al. Fixed-and floating-point processor comparison for MIMO-OFDM detector
EP1866741B1 (en) Canonical signed digit multiplier
Ahn et al. Implementation of an SDR platform using GPU and its application to a 2× 2 MIMO WiMAX system
Jati et al. SPQCop: Side-channel protected post-quantum cryptoprocessor
Liao et al. Power-Saving 4$\times $4 Lattice-Reduction Processor for MIMO Detection With Redundancy Checking
Shahabuddin et al. Programmable ASIPs for multimode MIMO transceiver
Janhunen et al. Fixed-versus floating-point implementation of MIMO-OFDM detector
US7305608B2 (en) DSL trellis encoding
Weiss et al. A new scalable DSP architecture for system on chip (SoC) domains
Hänninen et al. Novel detector implementations for 3G LTE downlink and uplink
WO2022061788A1 (en) Versatile systolic array for maximum likelihood mimo detectors
US7676533B2 (en) System for executing SIMD instruction for real/complex FFT conversion
Bertilsson et al. Low-latency parallel Hermitian positive-definite matrix inversion for massive MIMO
JP6008194B2 (ja) Fft/ifftを実行するバタフライ演算器を有するデジタルデータ処理プロセッサおよび移動通信端末
Chen et al. Design space exploration of SDR vector processor for 5G micro base stations
Kirubanandasarathy et al. Design of pipeline R2MDC FFT for implementation of MIMO OFDM transceivers using FPGA
Wang et al. Fixed-point analysis and parameter optimization of the radix-$2^{k} $ pipelined FFT processor
Mehdaoui et al. The efficiency of the CORDIC Operator in the MIMO MC-CDMA receiver.
Gewehr et al. Hardware Acceleration of Crystals-Kyber in Low-Complexity Embedded Systems with RISC-V Instruction Set Extensions
Bellini et al. Near optimal blind deconvolution
KR102628157B1 (ko) Eht에 대한 p 매트릭스

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8