KR20140103343A - 디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법 - Google Patents

디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법 Download PDF

Info

Publication number
KR20140103343A
KR20140103343A KR1020147019866A KR20147019866A KR20140103343A KR 20140103343 A KR20140103343 A KR 20140103343A KR 1020147019866 A KR1020147019866 A KR 1020147019866A KR 20147019866 A KR20147019866 A KR 20147019866A KR 20140103343 A KR20140103343 A KR 20140103343A
Authority
KR
South Korea
Prior art keywords
unit
memory
address
data
memory unit
Prior art date
Application number
KR1020147019866A
Other languages
English (en)
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 KR20140103343A publication Critical patent/KR20140103343A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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

Landscapes

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

Abstract

적어도 하나의 벡터 수행 유닛(203, 205) 및 적어도 하나의 제 1 메모리 유닛(230, 231)을 포함하는 디지털 신호 프로세서(200)에서, 제 3 유닛이 제 1 메모리 유닛(230, 231)을 어드레싱하기 위하여 사용될 어드레스 벡터의 형태로 어드레싱 데이터를 제공하도록 배열되고, 상기 제 3 유닛은, 제 3 유닛(250)으로부터 제공되는 데이터가 상기 제 1 메모리 유닛(230, 231)으로부터의 판독 및/또는 이것에 대한 기록을 제어하도록 사용될 수 있는 방식으로 상기 온-칩 네트워크(244)를 통해 상기 제 1 메모리 유닛(230, 231)에 연결가능하다. 이것은 임의의 원하는 순서로 데이터의 메모리 유닛으로부터의 신속한 판독 및 이것에 대한 기록을 가능하게 한다.

Description

디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법{DIGITAL SIGNAL PROCESSOR AND METHOD FOR ADDRESSING A MEMORY IN A DIGITAL SIGNAL PROCESSOR}
본 발명은 청구항 1의 전제부에 따른 디지털 신호 프로세서에 관한 것이다. 이러한 프로세서는 특히 OFDM 시스템에 특히 적합하다.
다수의 휴대용 통신 장치는 하나 이상의 디지털 신호 프로세서(DSP)를 포함하는 무선 송수신기를 사용한다.
개선된 성능 및 신뢰도를 위하여, 다수의 휴대용 단말은 현재 수신된 무선 신호의 처리 및 송신을 위한 신호의 준비와 관련된 다수의 신호 처리 기능을 조절하기 위하여, 베이스밴드 프로세서(BBP)로 알려진 DSP의 형태를 사용한다.
이러한 프로세서에서 종종 수행되는 다수의 기능은 다수의 데이터 샘플 상에서 수행된다. 그러므로, 단일 명령 복수 데이터(SIMD) 프로세서로 알려진 프로세서의 형태는, 동일한 명령이 한번에 하나의 정수보다는 데이터의 전체 벡터에 대하여 수행되는 것을 가능하게 하므로, 유용하다. 이러한 종류의 프로세서는 벡터 명령을 처리할 수 있고, 이것은 단일 명령이 한정된 수의 데이터 유닛에 동일한 기능을 수행하는 것을 의미한다. 데이터는 바이트 또는 워드로 그룹핑되고 동작될 벡터로 패킹된다(packed).
SIMD 구조의 추가 개선으로서, 단일 명령 스트림 복수 테스크(SIMT) 구조가 개선된다. 일반적으로 SIMT 구조에서, SIMD 데이터 경로를 사용하는 하나 이상의 벡터 수행 유닛이 코어 프로세서의 부분이 될 수 있는 정수 수행 유닛과 관련되어 제공되어왔다.
국제 특허 출원 WO 2007/018467은 정수 실행 유닛 및 프로그램 메모리를 갖는 프로세서 코어 및 연결되되 코어에서 통합되지 않는 2개의 벡터 수행 유닛을 갖는 SIMT 구조에 따른 DSP를 개시한다. 벡터 수행 유닛은 복합 산술 논리 유닛(CALU) 또는 복합 곱셈-누산 유닛(CMAC)이 될 수 있다. 벡터 수행 유닛에서 처리될 데이터는 온-칩 네트워크를 통해 벡터 수행 유닛에 연결되는 데이터 메모리 유닛으로부터 제공된다.
메모리 유닛은 임의의 주어진 시간에서 판독 및 기록 명령을 제어하도록 배열된 어드레스 생성 유닛을 포함한다. 개선된 유연성을 위하여, 어드레스 생성 유닛은 메모리의 모든 n번째 어드레스로부터의 판독과 같이 상이한 판독 모드 또는 패턴을 인에이블할 수 있다. 이러한 모드는 데이터가 판독 또는 기록될 수 있는 가능한 방식을 한정하는 규칙적인 패턴을 제공해야 한다. 또한, 이용가능한 모드는 특정 어드레스 생성 유닛에 대하여 사전 선택되며 변경될 수 없다.
Nilsson, A 및 Tell, E의 글: "0.12㎛ CMOS의 휴대용 WiMAX 및 DVB-T/H를 위한 11mm2, 70mW의 완전히 프로그래밍 가능한 베이스밴드 프로세서"는 SIMT 형태 DSP를 기재하며, "메모리 뱅크가 네트워크로부터 외부 어드레싱을 허용할 수 있으므로 가속기뿐만 아니라 정수 메모리는 불규칙한 벡터 어드레싱에 대한 어드레스 시퀀스를 제공하는데 사용될 수 있다. 이것은 또한 간접적 벡터 어드레싱을 수행할 능력을 제공한다"고 간략하게 언급했다. 이 글은 이러한 해결책을 실제로 구현하는데 포함되는 문제는 전혀 언급하지 않으므로 이용가능한 해결책 역시 제공하지 않는다.
본 발명의 목적은 SIMT 구조에서 프로세서의 데이터 메모리의 더욱 유연한 어드레싱을 가능하게 하는 것이다.
이러한 목적은 벡터 수행 유닛, 스칼라 수행 유닛 또는 가속기일 수 있는 적어도 하나의 기능 유닛, 및 제 3 유닛 및 온-칩 네트워크 - 기능 유닛, 제 1 메모리 유닛 및 제 3 유닛을 연결함 - 상에서 기능 유닛에 의해 조작될 데이터를 제공하도록 배열된 적어도 하나의 제 1 메모리 유닛을 포함하는 디지털 신호 프로세서에 의해 본 발명에 따라 성취된다. 디지털 신호 프로세서는, 제 3 유닛이 제 1 메모리 유닛을 어드레싱하기 위하여 사용될 어드레스 벡터의 형태인 어드레싱 데이터를 제공하도록 배열되고, 제 3 유닛이, 제 3 유닛으로부터 제공되는 데이터가 제 1 메모리 유닛으로부터의 판독 및/또는 이것에 대한 기록을 제어하도록 사용될 수 있는 방식으로 제 1 메모리 유닛에 연결가능한 것과, 프로세서는, 제 3 유닛으로부터 검색된 어드레스 아이템의 중간 저장소로서 역할을 함으로써 제 1 유닛과 제 3 유닛 사이의 레이턴시를 보상하도록 배열되는 메모리 어드레스 인터페이스 유닛을 더 포함하는 것을 특징으로 한다.
본 발명은 또한 디지털 신호 프로세서에서 메모리를 어드레싱하는 방법에 관한 것이며, 디지털 신호 프로세서는 벡터 수행 유닛, 스칼라 수행 유닛 또는 가속기일 수 있는 적어도 하나의 기능 유닛 및 벡터 수행 유닛에 의해 조작될 데이터를 제공하도록 배열되는 제 1 메모리 유닛 및 벡터 수행 유닛 및 제 1 메모리 유닛을 연결하는 온-칩 네트워크 및 어드레스 벡터의 형태인 제 1 메모리 유닛을 위한 어드레싱 데이터를 제공하도록 배열되는 제 3 유닛을 포함하며, 상기 방법은:
Figure pct00001
제 1 메모리 유닛이 제 3 유닛으로부터 어드레싱 데이터를 수신하도록 설정하는 단계;
Figure pct00002
제 3 유닛으로부터 제 1 메모리 유닛에 어드레싱 데이터를 제공하는 단계; 및
Figure pct00003
어드레싱 데이터에 따라 제 1 메모리 유닛으로부터 데이터를 판독하거나 이것에 데이터를 기록하는 단계를 포함한다.
그러므로, 본 발명에 따르면, 어드레싱은 메모리 유닛에 걸쳐 임의의 순서로 빠르고 효율적으로 성취될 수 있다. 어드레싱이 기능 유닛에 의해 수행되는 프로세싱과 병렬로 다뤄질 수 있으므로 데이터는 데이터의 순서화된 시퀀스 만큼 효율적으로 임의의 순서로 메모리에서 어드레싱될 수 있다. 제 1 메모리 유닛은 전용 버스 또는 온-칩 네트워크를 통해 제 3 유닛으로부터 어드레싱 데이터를 수신하도록 배열될 수 있다.
메모리 어드레스 인터페이스 유닛은 제 1 유닛과 제 3 유닛 사이의 레이턴시에 의해 발생하는 문제에 대한 해결책을 제공한다. 특히, 제 1 유닛으로부터의 판독 신호는 제 3 유닛에 도달하기까지 약간의 클록 사이클이 소요될 것이다. 판독 동작을 시작할 때, 제 1 데이터 항목이 실제로 수행 유닛에 도달하기 전에 다수의 클록 사이클의 지연이 발생할 것이다. 메모리 어드레스 인터페이스 유닛의 제 1 어드레스 샘플을 저장함으로써, 제 1 유닛이 이들을 요청하기 전에, 스타트업에서의 지연이 감소될 것이다.
제 3 유닛은 프로세서에서 임의의 유닛, 예컨대
Figure pct00004
제 2 메모리 유닛, 바람직하게는 정수 메모리 유닛으로 지칭되는 메모리 유닛,
Figure pct00005
스칼라 수행 유닛
Figure pct00006
벡터 수행 유닛 또는
Figure pct00007
가속기 유닛이 될 수 있다.
상이한 유닛은 상이한 메모리 뱅크의 어드레싱을 위해 사용될 수 있다.
제 1 메모리 유닛은 복합 메모리 또는 정수 메모리가 될 수 있다.
메모리 어드레스 인터페이스 유닛은 바람직하게
- 제 1 유닛과 제 3 유닛 사이의 레이턴시의 수의 대표를 저장하도록 배열된 레이턴시 메모리 수단,
- 샘플 수, 즉, 제 3 유닛으로부터 제 1 유닛으로 전달될 어드레스 아이템의 수를 저장하도록 배열되는 샘플 메모리 수단,
- 제 3 유닛으로부터 제 1 유닛에 어드레스 아이템을 포워딩하기 위한 레지스터를 포함한다.
따라서, 메모리 어드레스 유닛은 바람직하게 하기의 기능을 수행하도록 배열된다:
- 판독 신호를 위해 대기하지 않고, 제 1 유닛이 어드레스 정보를 얻기 위한 제 3 유닛에 연결할 때 제 3 유닛으로부터 적어도 제 1 어드레스 아이템을 판독
- 판독 신호가 제 1 유닛으로부터 수신될 때, 제 1 어드레스 아이템을 제 1 유닛에 포워딩
- 모든 어드레스 항목이 판독될 때까지 연속하여 제 3 유닛으로부터 이어지는 어드레스 아이템을 판독하고 판독 신호가 제 1 유닛으로부터 수신될 때 이어지는 어드레스 아이템을 연속하여 제 1 유닛에 포워딩.
메모리 어드레스 인터페이스 유닛은 바람직하게는 어드레스 아이템의 수를 기록하여(keep track of), 어드레스 아이템이 판독될 때마다 샘플 카운터를 변경함으로써 제 3 유닛으로부터 판독한다. 메모리 어드레스 인터페이스 유닛이 제 3 유닛으로부터의 마지막 어드레스 샘플을 판독한 이후에 제 1 유닛으로부터 판독 요청을 계속 수신할 것이므로, 이것은 유리하다. 이런 식으로, 메모리 어드레스 인터페이스 유닛은 제 3 유닛으로부터 어드레스 아이템을 검색하는 것을 중단할 시기를 알게 된다. 검색이 중단될 때, 오직 마지막 어드레스 샘플이 메모리 어드레스 인터페이스 유닛으로부터 제 3 유닛에 보내진다.
모든 계산이 데이터가 어디서 오는지에 관계없이 동일한 타이밍으로 수행되는 것이 종종 중요하다. 레이턴시가 어느 유닛이 관계되었는 지에 따라 달라질 수 있으므로, 본 발명의 장점은 상이한 유닛 사이의 상이한 수의 파이프라인 단계에 의해 유발되는 지연 차이를 회피함으로써 제어될 수 있다는 것이다.
특히 유리한 실시예에서, 제 2 메모리 유닛은 미리 한정된 패턴에 따라 제 2 메모리 유닛으로부터 어드레스 데이터의 판독을 제어하도록 배열된 어드레스 생성 유닛을 포함한다. 이러한 실시예에서, 방법은 미리 한정된 패턴에 따른 제 2 메모리 유닛으로부터 어드레스 데이터의 판독을 제어하도록 배열된 어드레스 생성 유닛에 의해 제 2 메모리 유닛으로부터의 어드레스의 판독을 제어하는 단계를 포함한다. 이것은 제 2 메모리 유닛에 유지되는 어드레스의 서브셋을 다루는 것을 가능하게 하고, 이것은 OFDM-기반 디지털 TV 응용에 특히 유리하다.
본 발명에 따른 프로세서는 예컨대 LTE 및/또는 LTE 어드밴스드 표준에 따른 OFDM-기반 텔레커뮤니케이션 표준에 특히 잘 적응된다.
이하에서, 본 발명은 예시로서 그리고 첨부된 도면을 참조하여 상세히 기재될 것이다.
도 1은 SIMT 구조의 예시를 도시한다.
도 2는 어드레스 포인터의 기능을 도시한다.
도 3은 SIMT 구조의 간소화된 예시로 본 발명의 제 1 실시예를 도시한다.
도 4는 SIMT 구조의 간소화된 예시로 본 발명의 제 2 실시예를 도시한다.
도 5는 본 발명의 일 실시예에 따른 메모리 어드레스 인터페이스 유닛을 도시한다.
도 6은 본 발명의 제 3 실시예를 도시한다.
도 1은 SIMT 구조에 따른 선행 기술의 베이스밴드 프로세서(200)의 예시를 도시한다. 프로세서(200)는 컨트롤러 코어(201) 및 제 1 및 제 2 벡터 수행 유닛(203, 205)을 포함하고, 이것은 이하에서 상세히 논의될 것이다. FEC 유닛(206)은 온-칩 네트워크에 연결된다. 구체적인 구현에 있어서, 물론, FEC 유닛(206)은 다수의 상이한 유닛을 포함할 수 있다.
호스트 인터페이스 유닛(207)은 선행기술에 잘 알려진 방식으로 도 1에 도시되지 않은 호스트 프로세서에 대한 연결을 제공한다. 디지털 전단 유닛(front end unit)(209)은 선행기술에 잘 알려진 방식으로 전단 유닛에 대한 연결을 제공한다.
일반적으로 선행기술에서, 컨트롤러 코어(201)는 다중 상황 지원을 위한 명령 발행 로직 및 기능뿐만 아니라 프로그램 메모리(211)를 포함한다. 각각의 수행 상황 또는 스레드(thread)에 있어서, 지원된 이것은 프로그램 카운터, 스택 포인터 및 레지스터 파일(도 1에 명확히 도시되어 있지 않음)을 포함한다. 통상적으로, 2개 내지 3개의 스레드가 지원된다. 또한 컨트롤러 코어(201)는 선행기술에 알려진 종류의 정수 수행 유닛(212)을 포함한다.
이러한 예시에서의 제 1 벡터 수행 유닛(203)은 CMAC 벡터 수행 유닛이고, 제 2 벡터 수행 유닛은 CALU 벡터 수행 유닛이다. 각각의 벡터 수행 유닛(203, 205)은 벡터 컨트롤러(213), 벡터 로드/저장 유닛(215) 및 다수의 데이터 경로(217)를 포함한다. 각각의 벡터 수행 유닛의 벡터 컨트롤러는 발행 로직을 통해 컨트롤러 코어(201)의 프로그램 메모리(211)에 연결되어서, 프로그램 메모리로부터의 명령에 관련된 발행 신호를 수신한다.
데이터 경로(217, 227) 및 벡터 로드/저장 유닛(215, 225)의 기능은 선행 기술에 잘 알려져 있고 본 명세서에서는 더 상세히 논의되지는 않을 것이다.
오직 CMAC 유닛, 오직 CALU 유닛 또는 적절한 수의 각각의 형태만을 포함하는 임의의 수의 벡터 수행 유닛 존재할 수 있다. 또한, CMAC 및 CALU 외의 다른 형태의 벡터 수행 유닛이 될 수 있다. 상기 기재된 바와 같이, 벡터 수행 유닛은, 단일 명령이 다수의 데이터 유닛에 동일한 기능을 수행하는 것을 의미하는 벡터 명령을 처리할 수 있는 프로세서이다. 데이터는 복합 데이터 또는 실제 제이터가 될 수 있고 바이트 또는 워드로 그룹핑되고 벡터 수행 유닛에 의해 동작될 벡터로 패킹된다. 본 명세서에서, CALU 및 CMAC 유닛은 예시로서 사용되되, 벡터 수행 유닛이 데이터의 벡터에 대한 임의의 적절한 기능을 수행하기 위해 사용될 수 있음이 주목되어야 한다.
선행기술에 알려진 바와 같이, 다수의 가속기(242)가 통상적으로 사용되는데, 이는, 이 가속기들이 코딩 및 인터리빙하는 채널과 같은 특정 베이스밴드 기능의 효율적인 구현을 가능하게 하기 때문이다. 이러한 가속기는 선행 기술에 잘 알려져 있고 본 명세서에서 더 상세히 논의되지 않을 것이다. 가속기는 임의의 상이한 표준에 의해 재사용되도록 구성하는 것이 가능하다.
온-칩 네트워크(244)는 컨트롤러 코어(201), 디지털 전단 유닛(209), 호스트 인터페이스 유닛(207), 벡터 수행 유닛(203, 205), 메모리 뱅크(230, 232), 정수 뱅크(238) 및 가속기(242)를 연결한다. 벡터 수행 유닛, 스칼라 수행 유닛, 정수 수행 유닛 및 가속기는 기능적 유닛으로서 본 명세서에서 선별적으로 지칭된다. 스칼라 수행 유닛은 한번에 하나의 샘플만을 처리할 수 있되 이러한 샘플은 실제값 또는 복합값을 가질 수 있다.
다수의 동시 벡터 동작을 가능하게 하도록, 프로세서는 바람직하게 분배된 메모리 시스템을 갖고, 여기서 이 메모리는 도 1의 메모리 뱅크(0 230 내지 N 231)로 표시되는 다수의 메모리 뱅크로 분리된다. 각각의 메모리 뱅크(230, 231)는 자체 메모리(232, 233) 및 어드레스 생성 유닛(AGU; 234, 235)을 각각 갖는다. 메모리(232, 233)는 통상적으로 복합 메모리가 되지만 이는 필수적이지는 않다. 온-칩 네트워크와 관련된 이러한 배열은 다중 어드레스 계산이 병렬로 수행될 수 있으므로 메모리 시스템의 전력 효올과 프로세서의 처리량을 개선시킨다. 도 2의 PBBP는 바람직하게는 정수 메모리 뱅크(238)를 포함하고, 이것은 각각 메모리(239) 및 어드레스 생성 유닛(240)을 포함한다.
각각의 메모리는 다음으로 판독되거나 기록되어야 하는 메모리의 위치를 표시하는 어드레스 포인터를 갖는다.
예컨대, 명령
out r0 , CDM0 _ ADDR
out r1 , CDM1 _ ADDR
판독되거나 기록되어야할 복합 데이터 메모리(0)와 복합 데이터 메모리(1)에서의 위치를 개별적으로 설정한다.
각각의 어드레스 생성 유닛(234, 235)은 어드레스 계산을 수행하여 지시(order)를 제어하고, 여기서 데이터는 상응하는 메모리(232, 233)로부터 판독되거나 이에 기록되어야 한다. 증가된 유연성을 위하여, 어드레스 생성 유닛은 또한 2개 이상의 상이한 모드가 가능하도록 배열될 수 있다. 이러한 모드의 다수는 선행기술에서 알려진다. 어드레스 생성 로직은 예컨대 선형, 비트 반전된, 모듈로(modulo) 및 2D 어드레싱을 음의 증분(negative increment)을 포함하는 상이한 증분을 갖고 수행할 수 있다. 예컨대, 어드레스 생성기는 어드레싱 기능에 따른 모든 K번째 데이터 아이템을 판독하도록 배열될 수 있고 K는 정수가 된다. 대안으로, 어드레서 생성기는 메모리를 역방향으로 어드레싱하도록 배열될 수 있다. 그러므로, 예시로서, 시작 어드레스가 0일 경우에, 어드레스 생성기는 하기의 3개의 상이한 모드에 따른 상응하는 메모리로부터 판독하도록 배열될 수 있다:
Figure pct00008
각각의 어드레스를 연속하여 판독, 즉, 0, 1, 2, 3, 4, 5, 6, 7
Figure pct00009
모든 K번째 어드레스를 판독, 즉, K=2일 경우, 0, 2, 4, 6
시작 어드레스가 10이고 K=-2일 경우,
Figure pct00010
역방향 판독, 즉, 10, 8, 6, 4, 2, 0
예컨대, 벡터 수행 유닛이 2개의 상이한 메모리로부터의 데이터 항목을 곱하도록 만들기 위하여, 명령은 이하와 같다.
cmac.n CDM0, CDM1
n은 동작될 벡터의 길이가 된다. 이것은 메모리(CDM0 및 CDM1)의 각각으로부터 n개의 데이터 항목의 벡터에 수행되어 개별적인 메모리의 포인터에 의해 표시되는 데이터 항목을 갖고 시작한다.
특정 메모리의 데이터가 연속적으로 판독되거나 그 어드레스 생성 유닛에 의해 지원되는 순서로 판독되는 한, 문제는 발생하지 않는다. 그러나, 어드레스 생성기가, 벡터 수행 유닛에 의해 동작될 벡터가 불규칙한 순서로 메모리에서 유지되는 경우를 지원하지 않는다. 예컨대 시퀀스
CDM0[1, 3, 7, 5, 11] 및
CDM1[0, 1, 2, 3, 4]를 함께 곱하는 것은
CDM0로부터 판독될 시퀀스에 규칙적인 패턴이 존재하지 않으므로 상당히 복잡한 동작이 될 것이다. 선행 기술에 따르면, 그러므로, 어드레스는 메모리로부터 데이터 각각을 판독하기 전에 수동으로 AGU에 설정되어야 한다. 이것은 프로세서의 전체 성능을 감소시키는 데이터의 판독에서의 상당한 지연을 유발한다.
도 2는 제 1 및 제 2 메모리 유닛의 어드레스 포인터의 기능을 설명한다. 각각의 메모리 유닛은 벡터 수행 유닛에 대한 입력 데이터로서 제공될 데이터의 시퀀스를 포함하는 다수의 데이터 아이템을 포함한다.
제 1 메모리 유닛(230)은 CDM0이고, 데이터의 관련 시퀀스는 이러한 메모리 유닛의 블록(230a)으로서 도시된다. 어드레스 포인터(230b)는 데이터의 판독이 시작되어야 하는 곳을 표시하기 위하여 이러한 블록의 시작을 가리킨다.
제 2 메모리 유닛(231)은 벡터 수행 유닛과 같은 기능 유닛에 의해 입력 데이터로서 사용될 데이터의 시퀀스를 또한 포함하는 CDM1이다. 데이터의 이러한 시퀀스는 이러한 블록의 시작을 가리키는 어드레스 포인터(231b)에 의해 블록(231a)으로서 도시된다. 도시된 바와 같이, 제 2 메모리(231)의 데이터(231a)의 시퀀스의 위치는 제 1 메모리(230)의 데이터(230a)의 시퀀스의 위치와는 상이할 수 있다.
판독이 진행되면서, 포인터는 임의의 주어진 시간에 판독될 다음 어드레스를 가리키기 위하여 이동할 것이다. 일반적으로, 포인터 정보는 상응하는 메모리(230, 231)의 어드레스 생성 유닛(234, 235)으로부터 취해진다.
도 3은 본 발명에 특히 관련된 SIMT 구조의 부분만을 도시하는 간소화된 도면이다. 도 1과 동일한 참조 번호를 사용하는 도시된 부분들은 벡터 수행 유닛, 이러한 예시에서는 CALU 벡터 수행 유닛(205), 제 1 및 제 2 메모리 뱅크(230, 231) 및 상기 3개의 유닛을 함께 연결하는 온-칩 네트워크(244) 중 하나가 된다. 전과 마찬가지로, 메모리 뱅크(230, 231)의 각각은 메모리(232, 233) 및 어드레스 생성 유닛(234, 235)을 포함한다. 또한, 메모리(252) 및 어드레스 생성 유닛(254)을 포함하는 제 3 메모리 뱅크(250)가 존재한다. 또한, 제 3 메모리 뱅크는 네트워크(244)를 통해 다른 유닛에 연결된다.
제 3 메모리 뱅크(250)는 통상적으로 정수 메모리 뱅크이며, 이것은 어드레스 벡터로도 지칭될 수 있는 데이터 벡터의 형태로 어드레스 정보를 유지하기에 적합하게 만든다. 이러한 메모리 뱅크는 본 명세서의 어드레스 메모리로서 종종 지칭된다. 그렇지 않으면, 데이터 메모리로 지칭되는 제 1 및 제 2 메모리 뱅크(230, 231)와 정확히 동일한 형태가 될 수 있다. 본 발명에 있어서, 제 3 메모리 뱅크(250)의 메모리(252)는 제 2 메모리 뱅크(231)의 어드레싱을 위해 사용되도록 어드레스 벡터를 유지한다. 제 2 메모리 뱅크와 제 3 메모리 뱅크를 연결하는 화살표로 상징적으로 도시된 바와 같이, 연결은 메모리(233)를 직접적으로 어드레싱하기 위하여 제 2 메모리 뱅크(231)의 어드레스 생성 유닛(235)을 바이패스한다.
제 3 메모리 뱅크(250)의 메모리(252)의 데이터가 아주 쉽게 변할 수 있으므로, 이것은 제 2 메모리 뱅크(231)를 어드레싱하는 아주 유연한 방식을 제공한다.
별도의 메모리 유닛으로부터의 어드레스 데이터를 판독하는 것은 시스템의 추가 레이턴시를 도입한다. 수행 유닛이 제 2 메모리 뱅크로부터 데이터를 수신하는 것을 시작할 준비가 되면, 이것은 수행 유닛에 의해 수행된 계산을 위한 데이터를 제공하기 위한 뱅크인 제 2 메모리 뱅크에 판독 신호를 전송할 것이다. 제 2 메모리 뱅크는 어드레스 메모리 뱅크에 판독 신호를 전송할 것이다. 어드레스 메모리 뱅크는 그 제 1 어드레스 아이템을 제 2 메모리 뱅크에 전송함으로써 응답할 것이다. 그 다음에 제 2 메모리 뱅크는 수행 유닛에 데이터 아이템을 전송할 수 있다. 그러므로, 벡터 수행의 스타트업(startup)에서의 지연을 유발할 레이턴시가 존재할 것이다.
이러한 지연을 극복하기 위하여, 이러한 실시예에서, 메모리 어드레스 인터페이스 유닛(256)이 어드레스 뱅크(250)와 제 2 메모리 뱅크(231) 사이에서 배열된다. 메모리 어드레스 인터페이스 유닛(256)은 제 3 메모리 뱅크(250)로부터 검색된 어드레스 아이템의 중간 저장소를 위한 메모리 어드레스 인터페이스 유닛으로서 역할을 한다. 메모리 어드레스 인터페이스 유닛(256)의 설계 및 기능은 도 5와 연계되어 더욱 상세히 논의될 것이다.
덧붙이자면, 제 3 메모리 뱅크(250)의 어드레스 생성 유닛(254)은, 또한 예컨대 제 3 메모리 뱅크로부터의 기타 데이터 아이템을 모두 판독하기 위해 도 1과 연계되어 상기 논의된 바와 같이 판독(readout) 모드를 설정하도록 사용될 수 있다. 이것은, 일부 특정 상황에서, 제 3 메모리 뱅크의 동일한 컨텐츠와 상이한 용도를 위해 사용될 수 있음을 의미한다. 예컨대, 반복 기능이 성취될 수 있다.
이해되는 바와 같이, 유사한 배열이 제 1 메모리 뱅크(230)를 어드레싱 하기 위하여 사용될 수 있고 또한 제 1 메모리 뱅크의 어드레스 생성 유닛(234)은 편리한 방식으로 사용될 수 있다. 또한, 임의의 종류의, 임의의 수의 메모리 뱅크 및 기능 유닛이 사용될 수 있다. 어드레스 메모리로서 사용될 수 있는 다수의 메모리 뱅크가 존재할 수 있다. 메모리 뱅크 및 메모리 뱅크는 순서를 쉽게 변경할 수 있고, 모든 유닛이 네트워크(244)를 통해 상호연결되므로 그 전체 엔트리(entries)는 적절한 어드레스 메모리에 연결함으로써 판독되거나 기록된다.
도 4는 본 발명의 다른 실시예를 설명한다. 도 1과 동일한 참조 번호를 사용하여, 도시된 부분들은 CMAC 벡터 수행 유닛(203), CALU 벡터 수행 유닛(205), 제 1 및 제 2 메모리 뱅크(230, 231) 및 이러한 3개의 유닛을 함께 연결하는 네트워크(244)이다. 전과 같이, 메모리 뱅크(230, 231)의 각각은 메모리(232, 233) 및 어드레스 생성 유닛(234, 235)을 포함한다. 제 3 메모리 뱅크(250)가 또한 도시되고, 이는 메모리(252) 및 어드레스 생성 유닛(254)을 포함한다. 제 3 메모리 뱅크는 또한 네트워크(244)를 통해 다른 유닛에 연결되고 도 3과 연계되어 논의되는 바와 같이 어드레스 메모리로서 사용될 수 있다. 도 4에 도시된 실시예에서, 제 2 메모리 뱅크(235)는 CMAC 벡터 수행 유닛(203)으로부터 어드레싱된다. 이것은, 제 2 메모리 뱅크(231)로부터 판독될 어드레스가 CMAC 벡터 수행 유닛(203)에서 계산되는 것을 의미한다. 물론, 이것은 오직 예시에 불과하다. 당업자는, 어드레싱이 CALU 벡터 수행 유닛으로부터 또는 벡터 수행 유닛, 다른 수행 유닛 또는 가속기와 같은 기능 유닛의 다른 형태로부터 수행될 수 있는 것을 이해할 것이다.
이해되는 바와 같이, 도 4 및 도 5에 도시된 실시예가 결합되어서 특정 메모리 뱅크는 그 내부 어드레스 생성 유닛(231, 233)에 의해 어드레싱되어서, 다른 메모리 뱅크는 별도의 메모리 뱅크(250)로부터 어드레싱되고 나머지는 기능 유닛(203, 205)으로부터 어드레스될 것이다.
특정 메모리에서 판독하기 위한 어드레스를 계산하기 위한 다른 벡터 수행 유닛을 사용함으로써, 메모리 어드레싱이 상당히 유연한 방식으로 성취될 수 있다. 이것은 특히 이하와 같은 응용에서 유용하다:
Figure pct00011
OFDM 시스템의 파일럿 추출 및 사용자 분리,
Figure pct00012
CDMA 시스템의 레이크 핑거(Rake finger) 처리.
네트워크의 다른 유닛으로부터의 하나의 메모리 유닛의 어드레싱을 가능하게 하는 본 발명에 따른 방법으로서, 예컨대, 정수 데이터 메모리(IDM)는:
1) 제 1 메모리 유닛, 예컨대 CDM0이 어드레스 소스로서 IDM을 사용하도록 설정하고,
2) 제 2 메모리 유닛, 예컨대 CDM1이 그 어드레스 생성 유닛에 의해 선형 어드레싱을 사용하도록 설정하고,
3) 제공된 순서로 제 1 및 제 2 메모리 유닛으로부터 제공된 데이터 상에서 벡터 수행 유닛의 데이터를 처리, 예컨대 계산하고,
4) 벡터 수행 유닛에 의해 메모리 유닛으로부터 판독되는 각각의 데이터 하이템에 있어서, 메모리는 네트워크로부터, 즉, 도 3의 실시예의 제 3 메모리 유닛으로부터 또는 도 4의 실시예의 제 2 벡터 수행 유닛으로부터 새로운 어드레스를 검색하도록 프로그래밍된다. 새로운 어드레스는 데이터가 다음으로 판독될 제 1 메모리 유닛의 위치를 표시할 것이다.
대안으로, 벡터 수행 유닛에 의해 수행되는 처리의 결과를 데이터 메모리에 기록하기 위하여:
1)제 1 메모리 유닛, 예컨대, CDM0이 어드레스 소스로서 IDM을 사용하도록 설정하고,
2)제 2 메모리 유닛, 예컨대 CDM1이 그 어드레스 생성 유닛에 의해 선형 어드레싱을 사용하도록 설정하고,
3) 벡터 수행 유닛의 데이터를 처리, 예컨대, 계산하고 그 결과를 데이터 메모리에 기록한다.
4) 벡터 수행 유닛에 의해 데이터 메모리 유닛에 기록된 각각의 데이터 아이템에 있어서, 메모리는 네트워크로부터, 즉, 도 3의 실시예의 제 3 메모리 유닛으로부터 또는 도 4의 실시예의 제 2 벡터 수행 유닛으로부터 새로운 어드레스를 검색하도록 프로그래밍된다. 새로운 어드레스는 데이터가 다음으로 기록되어야 할 데이터 메모리의 위치를 표시할 것이다.
상기 예시적인 방법에서, 물론, 어드레싱 데이터는 어드레스 메모리 대신에 벡터 수행 유닛 또는 프로세서의 특정 다른 유닛으로부터 얻어질 수 있다.
도 3 및 도 4에 도시된 양쪽 예시에서, 어드레스 메모리로부터 또는 적절한 벡터 수행 유닛으로부터 개별적으로 제공될 어드레스 정보는, 판독되거나 기록될 다음 어드레스가 이것이 실제로 판독되거나 기록되어야 하기 1 클록 사이클 전에 제 2 메모리 뱅크에 도달하는 방식으로 시간이 설정되어야 한다. 즉, 파이프라이닝(pipelining)으로 인한 데이터 소자의 우선 판독(read ahead)이 존재해야 한다. 우선 판독될 데이터의 양은 어드레스 소스에 네트워크를 통해 어드레싱되는 메모리 블록으로부터 전파되는 제어 신호에 의해 제어될 수 있다. 대안으로, 이것은 메모리 어드레스 인터페이스 유닛으로 프로그래밍될 고정된 값에 의해 제어될 수 있다. 우선 판독은 또한 네트워크를 통해 미리한정된 양의 어드레스 데이터를 푸시하는 어드레스 소스에 의해 구현될 수 있으며, 여기서, 파이프라인 스테이지의 수는 하드웨어에서 인코딩된다.
어드레스 데이터를 제공하는 벡터 수행 유닛(203)과 어드레스 데이터를 사용하는 메모리 뱅크(231) 사이의 레이턴시에 의해 유발되는 문제를 극복하기 위하여, 메모리 어드레스 인터페이스 유닛(256)은 벡터 수행 유닛(203)과 제 2 메모리 뱅크(231) 사이에 배열된다. 메모리 어드레스 인터페이스 유닛(256)은 도 3의 메모리 어드레스 인터페이스 유닛(256)과 유사하고 제 3 메모리 뱅크(250)로부터 검색된 어드레스 아이템의 중간 저장소를 위한 메모리 어드레스 인터페이스 유닛의 역할을 한다.
도 5는 본 발명의 선호되는 실시예에 따른 메모리 어드레스 인터페이스 유닛(256)을 도시한다. 메모리 인터페이스는 메모리(258)와 제어 신호(260)를 갖는다. 제어 유닛(260)은 2개의 메모리를 포함한다:
- 제 3 유닛으로부터 제 1 메모리로 판독될 필요가 있는 파이프라인 단계의 수를 유지하는 레이턴시 메모리(262)
- 제 3 유닛(203, 250)으로부터 판독될 어드레스 샘플의 수를 기록(keep track of)하도록 배열된 샘플 카운터(264).
레이턴시 메모리(262)는 통상적으로 하드코딩되되 필수적인 것은 아니다. 샘플 카운트 메모리는 필요에 따라 각각의 동작을 위해 설정되도록 배열된다.
상기 논의된 바와 같이, 제 3 유닛은 어드레스 정보를 제공하는 유닛이다. 이것은 도 3에 도시된 메모리 유닛(250) 또는 도 4에 도시된 벡터 수행 유닛(203)이 될 수 있다.
데이터 메모리 뱅크(도 5에 미도시)가 제 3 어드레스 제공 유닛으로부터 어드레싱 데이터를 수신하도록 설정될 때, 메모리 어드레스 인터페이스 유닛(256)은 제 3 유닛으로부터 그 메모리(258)에 제 1 어드레스 데이터 아이템을 판독한다. 이런 식으로, 데이터 메모리 뱅크로부터 데이터를 수신하기 위한 수행 유닛은 제 1 어드레스 항목을 수신할 준비가 되었다는 신호를 보내기 위해 판독 신호를 전송할 때, 이러한 제 1 어드레스 항목은 메모리 어드레스 인터페이스 유닛에 먼저 저장되고 어떠한 지연도 없이 제 2 유닛에 전송될 수 있다. 메모리 어드레스 인터페이스 유닛 없이, 절차는:
- 수행 유닛이 판독 신호를 메모리 유닛에 전송하고,
- 메모리 유닛이 판독 신호를 어드레스를 제공하기 위한 유닛에 전송하고,
- 어드레스를 제공하기 위한 유닛은 제 1 어드레스를 전송함으로써 응답하며,
- 제 1 어드레스를 수신한 직후, 메모리 유닛은 데이터 아이템을 수행 유닛에 전송한다.
그러므로, 수행 유닛이 동작을 시작하기 전까지 다수의 클록 사이클이 소요된다. 그러나, 일단 시작되면 어드레스는 적절한 페이스로 전달될 수 있다.
시스템을 구성하기 위하여, 이하의 단계가 수행된다:
1. 코어는, 메모리 인터페이스가 큐를 채우도록 데이터 메모리에 신호를 전송하여 또는 그 기록 레지스터를 기록하여 데이터 메모리의 외부 어드레싱을 지시한다.
2. 메모리 어드레스 인터페이스 유닛은 네트워크 레이턴시에 해당하는 다수의 어드레스 아이템을 그 메모리에 갖기 위한 어드레스 데이터를 제공하는 유닛으로부터의 충분한 수의 판독 동작을 수행한다. 이것은, 어드레스 아이템의 수가 어드레스를 검색하도록 수행되어야 하는 파이프라인 단계의 수에 해당해야 하는 것을 의미한다.
수행 동안, 메모리 어드레스 인터페이스 유닛은 그 레지스터로부터 데이터 메모리 유닛으로 어드레스 데이터 아이템을 전송하고 새로운 어드레스 데이터 항목을 연속하여 검색하는 것을 계속한다.
데이터 아이템을 수신하는 기능 유닛은 적절한 수의 데이터 아이템을 수신할때까지 판독 신호를 메모리 유닛에 전송하는 것을 계속할 것이며, 메모리 유닛은 판독 신호를 메모리 어드레스 인터페이스 유닛에 전송할 것이다. 일부 데이터 아이템은 기능 유닛이 판독 신호를 전송하는 것을 시작하기 전에 어드레스 제공 유닛으로부터 먼저 판독하므로, 이것은, 일부 판독 신호가 모든 어드레스 항목이 어드레스 제공 유닛으로부터 판독된 이후에 전송될 것이다.
그러므로, 레이턴시는, 메모리 어드레스 인터페이스 유닛이 이것이 중단한 이후에 제 3 유닛으로부터 어드레스 아이템을 판독하는 것을 계속하는 것을 의미한다. 더욱 정확하게, 이것은 상기 단계 2에서 구성될 때 그 레지스터에 저장된 숫자 만큼 가능한 많은 어드레스 아이템을 판독할 것이다. 이것이 발생하는 것을 막기 위하여, 샘플 카운터는 검색된 어드레스 샘플의 수를 기록한다. 원하는 수의 어드레스 샘플이 제 3 유닛으로부터 메모리 어드레스 인터페이스 유닛으로 판독될 때, 메모리 어드레스 인터페이스 유닛은 이것이 데이터 메모리로부터 판독 신호를 수신하는 것을 계속하더라도 새로운 어드레스 샘플을 검색하는 것을 중단시킨다. 대신에, 마지막 어드레스 아이템에 있어서, 메모리 어드레스 인터페이스 유닛은 데이터 메모리에 이러한 아이템을 제공하기 위하여 그 메모리를 비울 것이다.
선호되는 실시예에서, 어드레스 정보는, 판독되거나 기록될 다음 어드레스가 이것이 실제로 판독되거나 기록되어야 하기 1 클록 사이클 전에 제 2 메모리 뱅크에 도달하는 방식으로 시간이 설정된다.
도 6은 본 발명에 따른 프로세서의 유리한 실시예를 도시하며, 여기서, 다수의 메모리 유닛은 더 적은 수의 메모리 어드레스 인터페이스 유닛을 공유할 수 있다. 상기와 같이 동일한 참조 번호가 이전 도면에 도시된 것과 동일한 유닛에 대해 사용된다. 도시된 바와 같이, 본 실시예에 따른 프로세서는 도 3 및 도 4에 도시된 프로세서와 동일한 유닛을 갖고, 이것은 모두 온-칩 네트워크(244)를 통해 연결된다. 게다가, 도 6의 실시예는 원하는 메모리 유닛(230, 231)에 어드레스 정보를 제공하도록 배열되는 어드레스 크로스바(270)를 갖는다. 도 6은 2개의 메모리 어드레스 인터페이스 유닛(256)이 도시되고, 2개의 유닛 모두 어드레스 크로스바(270)에 연결된다. 이로써, 어드레스 크로스바는 집중장치로서 기능하여, 각각의 메모리 유닛(230, 231)에 있어서, 메모리 어드레스 인터페이스 유닛(256) 중 어떤 유닛이 어드레싱 데이터를 수신해야 할지 선택한다.
특히, 본 발명의 실시예는, 복합 어드레스 패턴이 사용되고, 이것이 설계 시간에서 하드코딩될 수 없거나 시스템 메모리에서 우선 한정된 것을 저장하는 것을 고려할 수 있는 응용에서 유용하다. 이러한 패턴은 런타임 파라미터를 기초로 할 수 있고 동적으로 컴퓨팅되어야 한다.
예컨대, LTE(롱 텀 에볼루션)으로 알려진 OFDM-기반 텔레커뮤니케이션 표준은 사용자에 대한 주파수의 동적 할당을 사용한다. 사용자에게 할당된 주파수를 선택하는 것은 필수적이다. 다른 상황에서, 모든 파일럿 톤을 선택하는 것이 요구되며, 이는 테이블을 기초로 수행될 수 있다. 통상적으로, 이것은 파일럿 톤의 어드레스 정보를 얻고, 메모리로부터 원하는 데이터 아이템을 로드하고, 서로에 인접하게 관련 데이터 지점을 위치시키기 위하여 주파수의 데이터를 셔플(shuffle)한 이후에 메모리에 데이터 지점을 다시 저장하기 위하여 테이블을 보아서 성취될 수 있다.
이러한 형태의 어드레스 패턴은 종래의 어드레스 생성 유닛으로 프로그래밍될 수 없다. 이것은, 예컨대 파일럿 톤의 FFT를 수행하기 위하여, 어드레스 포인터가 각각의 동작에 대한 다수의 시간이 설정되어야 할 것임을 의미하고, 데이터의 운영이 상당히 복잡하여 DSP 프로세서의 성능이 상당히 낮아질 것을 의미한다.
대신에, 메모리 유닛이 상기 논의된 바와 같이 온-칩 네트워크로부터 새로운 어드레스를 검색하기 위해 프로그래밍 될 경우, 사용될 각각의 데이터 지점이 직접적으로 어드레싱되어서, 데이터의 운영에 필요한 용량을 감소시키고 따라서 DSP의 활용 및 성능을 증가시킬 수 있다.
본 발명은 이 특히 유용한 또 다른 응용은 디지털 TV 응용이다. DVB-T2의 각각의 OFDM 심볼은 최대 32768개의 서브캐리어로 구성되고, 데이터 지점의 세트를 생성한다. 이러한 신호는 참조 데이터로 사용될 파일럿 톤을 포함하고, 프리퀀시 스펙트럼 전체적으로 고르지 않게 분포된다. 이러한 어드레스 패턴은 통상적인 어드레스 생성 유닛에서 쉽게 다뤄질 수 없다. 본 발명에 있어서, 어드레스는 제 3 메모리 유닛에 간단하게 저장될 수 있고 벡터 수행 유닛에 데이터를 제공하는 메모리 유닛에 의해 그곳으로부터 선택될(picked) 수 있다.
디지털 TV에 있어서, 오직 32768개의(32k) 지점의 서브셋만을 사용하는 것이 또한 가능하다. 서브셋은 16k, 8k, 4k, 2k 또는 1k가 될 수 있고, 즉, 지점의 절반, ¼ 등,.. 1/32까지 될 수 있다. 본 발명에 따르면, 이 테이블의 서브셋은 어드레스 메모리에서 어드레스를 알맞게 세팅함으로써 선택될 수 있으므로, 어드레스의 하나의 테이블을 저장하는 것은 필수적일 것이다.
또한 본 발명은 예측 불가능한 타이밍을 갖는 유닛으로부터 어드레싱 데이터가 수신되어야할 경우 유용하다. 이러한 유닛의 예시는 프로그래밍 가능한 코-프로세서 또는 터보 디코더와 같은 오류 교정 유닛이다. 통상적으로, 프로그래밍 가능한 코-프로세서는 요건에 일치하는 평균 스루풋을 갖되 작은 버스트로 전달되는 데이터를 갖는 어드레스 스트림을 전달할 수 있다.
동일한 방식으로, 오류 교정 블록은 이것이 교정될 때까지 데이터의 세트 상에서 반복적으로 동작할 것이며, 몇 번의 사이클이 소요될지 확실히 예측하는 것은 불가능하다. 그러므로, 이러한 유닛으로부터의 출력은 데이터의 예측 불가능한 버스트가 될 것이다. 본 발명에 따른 메모리 어드레스 인터페이스 유닛은 데이터의 버스트를 균등하게 나누도록 사용될 수 있다. 도 5에 도시된 레지스터(258)가 FIFO 큐로 교체될 경우, 메모리 어드레스 인터페이스 유닛은 버스트에 포함된 데이터의 수를 저장하고 다음 유닛에 연속하여 이것을 전송할 수 있다.

Claims (15)

  1. 디지털 신호 프로세서(200)로서, 벡터 수행 유닛(203, 205), 스칼라 수행 유닛 또는 가속기일 수 있는 적어도 하나의 기능 유닛, 및 상기 기능 유닛, 제 3 유닛(250) 및 온-칩 네트워크(244) - 상기 기능 유닛, 제 1 메모리 유닛 및 상기 제 3 유닛을 연결함 - 에 의해 조작될 데이터를 제공하도록 배열된 적어도 하나의 제 1 메모리 유닛(230, 231)을 포함하고, 상기 디지털 신호 프로세서는, 상기 제 3 유닛(250)이, 상기 제 1 메모리 유닛(230, 231)을 어드레싱하기 위하여 사용될 어드레스 벡터의 형태인 어드레싱 데이터를 제공하도록 배열되고, 상기 제 3 유닛이, 상기 제 3 유닛(250)으로부터 제공되는 데이터가 상기 제 1 메모리 유닛(230, 231)로부터의 판독 및/또는 상기 제 1 메모리 유닛(230, 231)에 대한 기록을 제어하도록 사용될 수 있는 방식으로 상기 제 1 메모리 유닛(230, 231)에 연결가능한 것과, 상기 프로세서는, 상기 제 3 유닛으로부터 검색된 어드레스 아이템의 중간 저장소로서 역할을 함으로써 상기 제 1 유닛과 상기 제 3 유닛 사이의 레이턴시를 보상하도록 배열되는 메모리 어드레스 인터페이스 유닛(256)을 더 포함하는 것을 특징으로 하는, 디지털 신호 프로세서.
  2. 청구항 1에 있어서, 상기 제 3 유닛은, 상기 제 1 메모리 유닛을 어드레싱하기 위한 어드레스 데이터를 유지하는 어드레스 메모리 유닛, 바람직하게는 정수 메모리 유닛인, 디지털 신호 프로세서.
  3. 청구항 1에 있어서, 상기 제 3 유닛은 제 2 기능 유닛인, 디지털 신호 프로세서.
  4. 청구항 1 또는 청구항 2에 있어서, 상기 제 1 메모리 유닛(230, 231)은 복합 메모리인, 디지털 신호 프로세서.
  5. 청구항 2 또는 청구항 2를 인용하는 경우의 청구항 4에 있어서, 제 2 메모리 유닛은 미리한정된 패턴에 따른 상기 제 2 메모리 유닛으로부터의 어드레스 데이터의 판독을 제어하도록 배열된 어드레스 생성 유닛을 포함하는, 디지털 신호 프로세서.
  6. 청구항 1 내지 청구항 5 중 어느 한 항에 있어서, 적어도 하나의 메모리 어드레스 인터페이스 유닛(256)과 적어도 제 1 및 제 2 메모리 유닛(230, 231)을 상호연결하는 어드레스 크로스바(270)를 더 포함하여, 어드레스 데이터가 상기 메모리 어드레스 인터페이스 유닛(256)을 통해 상기 제 1 메모리 유닛과 상기 제 2 메모리 유닛 중 선택된 하나의 유닛에 제공될 수 있게 하는, 디지털 신호 프로세서.
  7. 청구항 1 내지 청구항 6 중 어느 한 항에 있어서, 예컨대 LTE 및/또는 LTE 어드밴스드 표준에 따른 텔레커뮤니케이션에 적응되는 디지털 신호 프로세서.
  8. 청구항 1 내지 청구항 7 중 어느 한 항에 있어서, 디지털 텔레비전 신호에 적응되는 디지털 신호 프로세서.
  9. 디지털 신호 프로세서(200)에서 메모리를 어드레싱하는 방법으로서, 상기 디지털 신호 프로세서(200)는 벡터 수행 유닛(203, 205), 스칼라 수행 유닛 또는 가속기일 수 있는 적어도 하나의 기능 유닛과, 상기 벡터 수행 유닛에 의해 조작될 데이터를 제공하도록 배열되는 적어도 하나의 제 1 메모리 유닛(230, 231)과, 상기 벡터 수행 유닛과 상기 제 1 메모리 유닛을 연결하는 온-칩 네트워크(244)와, 어드레스 벡터의 형태로 상기 제 1 메모리 유닛을 위한 어드레싱 데이터를 제공하도록 배열되는 제 3 유닛(250)을 포함하고, 상기 방법은:
    Figure pct00013
    상기 제 3 유닛으로부터 어드레싱 데이터를 수신하도록 상기 제 1 메모리 유닛을 설정하는 단계;
    Figure pct00014
    상기 제 3 유닛으로부터 상기 제 1 메모리 유닛에 어드레싱 데이터를 제공하는 단계;
    Figure pct00015
    상기 어드레싱 데이터에 따라 상기 제 1 메모리 유닛으로부터 데이터를 판독하거나 이것에 데이터를 기록하는 단계; 및
    Figure pct00016
    상기 제 3 유닛으로부터 검색된 상기 어드레스 아이템에 대한, 상기 제 1 유닛과 상기 제 3 유닛 사이의 중간 저장소로서 역할을 하도록 배열된 메모리 어드레스 인터페이스 유닛(256)에 의해 상기 제 1 유닛과 상기 제 3 유닛 사이에서의 레이턴시를 보상하는 단계를 포함하는, 메모리를 어드레싱하는 방법.
  10. 청구항 9에 있어서, 상기 제 3 유닛은 상기 제 1 메모리 유닛을 어드레싱하기 위한 어드레스 데이터를 유지하는 어드레스 메모리 유닛, 바람직하게는 정수 메모리 유닛인, 메모리를 어드레싱하는 방법.
  11. 청구항 9에 있어서, 상기 제 3 유닛은 기능 유닛인, 메모리를 어드레싱하는 방법.
  12. 청구항 9 내지 청구항 11 중 어느 한 항에 있어서, 상기 제 1 메모리 유닛(230, 231)은 복합 메모리인, 메모리를 어드레싱하는 방법.
  13. 청구항 10 또는 청구항 10을 인용하는 경우의 청구항 12에 있어서, 미리한정된 패턴에 따라 제 2 메모리 유닛으로부터의 어드레스 데이터의 판독을 제어하도록 배열된 어드레스 생성 유닛에 의해 상기 어드레스 메모리 유닛으로부터의 어드레스의 판독을 제어하는 단계를 포함하는, 메모리를 어드레싱하는 방법.
  14. 청구항 9 내지 청구항 13 중 어느 한 항에 있어서, 판독되거나 기록될 다음 어드레스가 실제로 판독되거나 기록되어야 하기 1 클록 사이클 전에 상기 제 1 메모리 유닛에 도달하는 방식으로 어드레스 정보의 시간을 설정하는(timing) 단계를 포함하는, 메모리를 어드레싱하는 방법.
  15. 청구항 14에 있어서, 먼저 판독되는 데이터의 양이 네트워크를 통해 미리결정된 양의 어드레스 데이터를 푸시하는(pushing) 어드레스 소스에 의해 제어되고, 파이프라인 스테이지의 수는 하드웨어에서 인코딩되는, 메모리를 어드레싱하는 방법.
KR1020147019866A 2011-12-20 2012-11-28 디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법 KR20140103343A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1151230-8 2011-12-20
SE1151230A SE537423C2 (sv) 2011-12-20 2011-12-20 Digital signalprocessor och förfarande för adressering av ett minne i en digital signalprocessor
PCT/SE2012/051320 WO2013095257A1 (en) 2011-12-20 2012-11-28 Digital signal processor and method for addressing a memory in a digital signal processor

Publications (1)

Publication Number Publication Date
KR20140103343A true KR20140103343A (ko) 2014-08-26

Family

ID=47594965

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147019866A KR20140103343A (ko) 2011-12-20 2012-11-28 디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법

Country Status (7)

Country Link
US (1) US9557996B2 (ko)
EP (1) EP2751705B1 (ko)
KR (1) KR20140103343A (ko)
CN (1) CN103999074B (ko)
ES (1) ES2653951T3 (ko)
SE (1) SE537423C2 (ko)
WO (1) WO2013095257A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160226544A1 (en) * 2015-02-04 2016-08-04 GM Global Technology Operations LLC Adaptive wireless baseband interface
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809552A (en) * 1992-01-29 1998-09-15 Fujitsu Limited Data processing system, memory access device and method including selecting the number of pipeline stages based on pipeline conditions
US6594710B1 (en) 1999-05-26 2003-07-15 Nec Electronics, Inc. Apparatus and method for a random access peripheral unit
US6665790B1 (en) 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US6976147B1 (en) * 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US7017028B2 (en) 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7620047B2 (en) * 2004-11-23 2009-11-17 Emerson Network Power - Embedded Computing, Inc. Method of transporting a RapidIO packet over an IP packet network
US20070198815A1 (en) 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
CN101282477A (zh) * 2008-05-06 2008-10-08 艾诺通信系统(苏州)有限责任公司 基于RapidIO互联的多核DSP阵列媒体处理系统及其方法
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution

Also Published As

Publication number Publication date
EP2751705A1 (en) 2014-07-09
SE537423C2 (sv) 2015-04-21
WO2013095257A1 (en) 2013-06-27
US20140351555A1 (en) 2014-11-27
CN103999074B (zh) 2017-04-12
CN103999074A (zh) 2014-08-20
US9557996B2 (en) 2017-01-31
ES2653951T3 (es) 2018-02-09
EP2751705B1 (en) 2017-10-18
SE1151230A1 (sv) 2013-06-21

Similar Documents

Publication Publication Date Title
US9471320B2 (en) Using L1 cache as re-order buffer
CN111183418B (zh) 可配置硬件加速器
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
SE536462C2 (sv) Digital signalprocessor och basbandskommunikationsanordning
WO2009141789A1 (en) A data handling system comprising memory banks and data rearrangement
CN107977232B (zh) 一种数据处理方法、数据处理电路和网络设备
US9804853B2 (en) Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction
US10346049B2 (en) Distributed contiguous reads in a network on a chip architecture
KR20140103343A (ko) 디지털 신호 프로세서 및 디지털 신호 프로세서에서의 메모리 어드레싱 방법
CN116685943A (zh) 可编程原子单元中的自调度线程
EP3559803B1 (en) Vector generating instruction
Ren et al. Swift: A computationally-intensive dsp architecture for communication applications
EP2751671B1 (en) Digital signal processor and baseband communication device
WO2007018553A1 (en) Multi-mode wireless broadband signal processor system and method
US8607033B2 (en) Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory
US8209523B2 (en) Data moving processor
US20140281368A1 (en) Cycle sliced vectors and slot execution on a shared datapath
Ren et al. A VLIW DSP for communication applications
KR100698310B1 (ko) 데이터 억세스 제어 장치 및 데이터 호출 방법
JP2015060256A (ja) データ供給回路、演算処理回路、及びデータ供給方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application