KR20060027808A - 데이터 구동 아키텍처에서의 선택가능한 하드웨어가속기들을 위한 장치 및 방법 - Google Patents

데이터 구동 아키텍처에서의 선택가능한 하드웨어가속기들을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20060027808A
KR20060027808A KR1020057024574A KR20057024574A KR20060027808A KR 20060027808 A KR20060027808 A KR 20060027808A KR 1020057024574 A KR1020057024574 A KR 1020057024574A KR 20057024574 A KR20057024574 A KR 20057024574A KR 20060027808 A KR20060027808 A KR 20060027808A
Authority
KR
South Korea
Prior art keywords
hardware accelerator
processing
data
register
processing elements
Prior art date
Application number
KR1020057024574A
Other languages
English (en)
Other versions
KR100880300B1 (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 KR20060027808A publication Critical patent/KR20060027808A/ko
Application granted granted Critical
Publication of KR100880300B1 publication Critical patent/KR100880300B1/ko

Links

Images

Classifications

    • 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
    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

선택가능한 하드웨어 가속기들을 채택한 방법 및 장치가 설명되었다. 일 실시예에서, 본 장치는 복수의 프로세싱 소자(PE들)를 포함한다. 복수의 하드웨어 소자는 선택 유닛에 결합된다. 레지스터는 선택 유닛 및 복수의 프로세싱 소자에 결합된다. 일 실시예에서, 레지스터는 복수의 범용 레지스터(GPR)를 포함하는데, 이들은 복수의 프로세싱 소자뿐만이 아니라 복수의 하드웨어 가속기에 의해 액세스 가능하다. 일 실시예에서, 적어도 하나의 GPR은 프로세싱 소자가 선택 유닛을 경유해서 선택된 하드웨어 가속기에 액세스하는 것을 가능케 하는 비트를 포함한다.
디지털 신호 처리, 데이터 구동 아키텍처, 하드웨어 가속기, 프로세싱 소자, 범용 레지스터

Description

데이터 구동 아키텍처에서의 선택가능한 하드웨어 가속기들을 위한 장치 및 방법{AN APPARATUS AND METHOD FOR SELECTABLE HARDWARE ACCELERATORS IN A DATA DRIVEN ARCHITECTURE}
본 발명의 하나 또는 그 이상의 실시예는 일반적으로 디지털 신호 처리 분야에 관한 것이다. 더 특정하게는, 본 발명의 하나 또는 그 이상의 실시예는 데이터 구동 아키텍처(data driven architecture)에서의 선택가능한 하드웨어 가속기들을 위한 방법 및 장치에 관한 것이다.
다중처리 디지털 신호 프로세서(multiprocessing digital signal processor)들은 일반적으로 계층적 또는 피어 투 피어(peer to peer) 프로세서 어레이를 사용한다. 유감스럽게도, 새로운 프로세싱 소자들이 디지털 신호 프로세서들에 추가될때, 기존 코드의 재기입이 종종 요구된다. 또한, 디지털 신호 프로세서들을 가동하는 소프트웨어는 하드웨어 타이밍에 의존하고 따라서 다른 실리콘 프로세서 기술들에 대해서 이식성이 없다. 그 결과, 이런 프로세서들의 일 버전 상에 기입된 이진 또는 어셈블리 코드는 다른 프로세싱 소자들을 갖는 다른 버전들에 대해서는 이식성이 없을 수 있다. 다중처리 디지털 신호 프로세서들을 구현하는 한 기술은 데이터 구동 아키텍처를 사용하는 것이다.
데이터 구동 아키텍처와는 대조적으로, 현재 널리 사용되는 프로세서들은 이른바 폰 노이만 방식으로 개발되었다 폰 노이만 방식에 따르면, 프로세서들은 한번에 하나씩 순차적으로 명령어들을 처리한다. 또한, 폰 노이만 방식 프로세서들은 데이터 입/출력(I/O)을 제어하는 클록을 사용하여 작동하고 한 번에 한 명령어씩 프로그램들을 실행한다. 그 결과, 프로세싱 속도를 높이려면 클록 주파수를 증가시켜야 하는데, 이는 전력 소모의 증가를 불러온다.
환언하면, 마이크로프로세서가 돌아가려면, 데이터 전송과 데이터를 메모리에 기입하는 것의 동기화를 요구하게 된다. 동기화를 이루는 한가지 방법은 모든 회로들을 클록 신호라고 불리는 공통 신호에 결부시키는 것이다. 유감스럽게도, 대다수의 내부 회로가 이 클록에 결부되기 때문에, 이 내부 회로는 데이터 집중형 애플리케이션(data intensive application)들을 처리할 때 성능이 떨어진다. 대조적으로, 데이터 구동 아키텍처들은 데이터 시퀀스에 관계치 않고 데이터를 이용할 수 있을 때에만 처리하는 프로세서들을 활용한다. 따라서, 다중 데이터가 입력될 때는 언제든지 다중 프로그램들이 판독되기 때문에, 데이터 처리가 데이터 구동 아키텍처 내에서 병렬로 실행된다.
하드웨어 가속기들은 프로세싱을 향상시키고 처리 속도를 증가시키기 위해서 공통으로 사용되는 데이터 처리 기능들 또는 연산들을 가속시키도록 설계된다. 데이터 구동 아키텍처에서, 몇몇 하드웨어 가속기들이 데이터 처리 성능을 향상시키기 위해 디지털 처리부들로서 실시될 수 있다. 유감스럽게도, 하나의 디지털 처리부 내에서 제어될 수 있는 하드웨어 가속기들의 수는 하드웨어 가속기들의 어드레 싱과 같은 몇몇 요인들에 의해서 제한된다. 이런 제한들의 결과로, 하드웨어 가속기들의 수는 소수의 매우 크고 복잡한 하드웨어 가속기들에 국한된다. 이런 결과는 데이터 구동 아키텍처의 디지털 처리부들 내에 몇 개의 더 작고 단순한 하드웨어 가속기들을 갖고자 하는 목적과 상반된다.
본 발명의 여러 실시예들이 이하의 첨부 도면들의 그림들에서 예를 드는 방식으로 도해될 것인데, 이는 본 발명을 제한하고자 하는 의도에서 제시되는 것은 아니다.
도1은 본 발명의 일 실시예에 따라서 미디어 신호 프로세서를 도해하는 블록도.
도2는 본 발명의 추가 실시예에 따라서, 미디어 신호 프로세서를 도해하는 블록도.
도3a는 본 발명의 추가 실시예에 따라서, 도1 및 도2의 통신 제어 레지스터들을 추가로 도해하는 블록도.
도3b는 본 발명의 일 실시예에 따라서 하드웨어 가속기 제어 레지스터를 도해하는 블록도.
도4 내지 도9는 본 발명의 일 실시예에 따라서 데이터 구동 프로세싱용의 하드웨어 가속기 액세스를 도해한 도면들.
도10은 본 발명의 일 실시예에 따라서 미디어 프로세서를 도해하는 블록도.
도11은 본 발명의 일 실시예에 따라서 미디어 프로세싱 아키텍처를 도해하는 시스템 레벨도.
데이터 구동 아키텍처에서 선택가능한 하드웨어 가속기들을 채택한 방법 및 장치가 기술된다. 일 실시예에서, 본 장치는 복수의 프로세싱 소자(processing element)(PE들)를 포함한다. 복수의 하드웨어 가속기들은 선택 유닛에 결합된다. 또한, 레지스터가 선택 유닛과 복수의 프로세싱 소자에 결합된다. 일 실시예에서, 이 레지스터는 복수의 범용 레지스터(GPR)를 포함하는데, 범용 레지스터들은 복수의 프로세싱 소자뿐만 아니라 복수의 하드웨어 가속기에 의해 액세스 가능하다. 일 실시예에서, 적어도 하나의 GPR은 프로세싱 소자가 선택 유닛을 통해서 선택된 하드웨어 가속기에 액세스하는 것을 가능케 하는 비트(bit)를 포함한다.
미디어 프로세싱 애플리케이션들은 전형적으로는 많은 양의 데이터들에 대해서 연산들의 작은 세트들을 실행한다. 명령어 흐름 애플리케이션들을 위해 설계된 범용 프로세서들은, 범용 프로세서들이 폰 노이만 방식으로 설계되었기 때문에, 데이터 집중형 애플리케이션들에 대해서는 만족스럽게 실행하지 못한다. 폰 노이만 방식에 따르면, 이 프로세서들은 한 번에 하나씩 명령어들을 순차적으로 처리한다. 또한, 범용 프로세서가 돌아가려면 데이터 전송과 데이터를 메모리에 기입하는 것의 동기화가 요구된다. 이 동기화 방법은 모든 회로들을 클록 신호라고 불리는 공통 신호에 결부시킴으로써 대개는 실행된다.
그에 따라, 최근의 진보에서는 화상 처리 애플리케이션들과 같은 데이터 집중형 애플리케이션들에 대해서 데이터 구동 아키텍처들을 사용하기에 이르렀다. 범용 프로세서들과는 달리, 데이터 구동 아키텍처들은 데이터 시퀀스에 관계없이 데이터를 이용할 수 있을 때에만 동작하는 프로세서들을 활용한다. 프로그램들이 다중 데이터가 입력될 때는 언제든지 판독되기 때문에, 데이터 구동 아키텍처들 내에서 데이터 처리가 병렬로 실행된다. 그에 따라, 일 실시예는 미디어 신호 프로세서(MSP)를 제공하는데, 이는 데이터 구동 아키텍처 내에 통합되어, 비디오 프로세싱, 화상 프로세싱, 사운드 프로세싱, 보안 기반 애플리케이션 등의 미디어 프로세싱 애플리케이션들과 같은 것을 포함하나 이것들에만 국한되지는 않는 데이터 집중형 애플리케이션들을 실행할 수 있다.
도해된 대로, 미디어 신호 프로세서(MSP)(100)는 하나 또는 그 이상의 프로세싱 소자(120)(102-1,..., 120-n)로 구성된다. 도해된 대로, 각각의 프로세싱 소자(PE)(120)는 통신 제어 레지스터 파일(110)에 결합된다. 레지스터 파일(110)은 PE들(120)이 데이터를 교환하는 것을 허용할 뿐만이 아니라 레지스터 파일(110) 내에 포함된 하나 또는 그 이상의 범용 레지스터들(GPR들) 내에 기억 능력을 제공한다. PE들(120)은 MSP(110)의 기본 빌딩 블록들이고, 흐름 제어, 수치 논리부 기능들, 및 곱셈 누산(multiply-accumulate) 명령어들, 비트 회전 명령어들과 같은 커스텀 인터페이스 기능들을 제공하도록 설계된 명령어 세트를 포함할 수 있다. 이러므로, MSP(100)가 실행하도록 설계된 기능에 의존하여 PE들(120)은 미디어 신호 프로세서(100)에 의해 구현되는 미디어 처리 애플리케이션의 바라는 기능성들과 병렬 실행 알고리즘 부분들을 성취하도록 구분될 수 있다.
미디어 처리 애플리케이션의 성능을 향상시킬 뿐만 아니라 촉진시키기 위해 MSP(100)는 복수의 하드웨어 가속기(150)(150-1,..., 150-n)를 포함한다. 기존에는, 하드웨어 가속기들은 공통적으로 사용되는 미디어 기능들을 가속하기 위해 결선된 로직을 제공하도록 설계되었다. 예를 들어, 만일 MSP(100)가 촬상 애플리케이션들을 실행하도록 구성되었다면, 하드웨어 가속기들은 예를 들어 비트 레벨 텍스트 인코더/디코더 기능들, 제이페그(JPEG), 호프만 인코더/디코더 기능들 또는 2D 삼각 필터 기능들을 실행하도록 구성될 수 있다.
이런 구성들에서, 하드웨어 가속기들은 하나 또는 두 개의 하드웨어 가속기에 국한될 것인데, 이 가속기들은 통신 제어 레지스터들(100)에 결선된다. 또한, 하드웨어 가속기들은 PE들(120)에 의해 직접 제어된다. PE들(120)의 명령어 세트는 MSP 내의 하드웨어 가속기들 및 그외의 PE들(120)에 어드레싱하는 것을 취급하도록 설계된다. 유감스럽게도, PE들의 수와, 하나의 PE에 의해 제어될 수 있는 하드웨어 가속기들의 수는 몇몇 요인들에 의해 제한되는데, 이 요인들에는 하드웨어 가속기들의 어드레싱에 할당된 명령어 워드의 비트 수도 포함된다. 그 결과, 종래의 화상 신호 처리부에서는 하드웨어 가속기들의 수와 귀결되는 제어 비트들을 제한하는 것이 바람직하다.
종래의 화상 신호 처리부들과는 대조적으로, MSP(100)는, 종래의 화상 신호 프로세서들에서의 한 쌍의 매우 크고 복잡한 하드웨어 가속기와는 반대로, 몇 개의 더 작고 단순한 하드웨어 가속기들을 사용하도록 설계되었다. 일 실시예에서, 제어 로직(130) 뿐만 아니라 스위치(140)는 복수의 하드웨어 가속기를 감당하도록 제공된다. 그에 따라, PE들(120)은 통신 제어 레지스터 파일(110) 내의 레지스터들을 경유해 선택된 하드웨어 가속기에게 지시할 수 있다. PE들(120)에 의한 선택된 하드웨어 가속기들의 인에이블먼트 및 활성화는 이하에서 더 자세히 설명된다. 그에 따라, MSP(100)는, 지정된 하드웨어 가속기들 내에 바라는 기술(미디어 처리 기능들) 부분들을 구현함으로써, 화상 처리 애플리케이션, 비디오 처리 애플리케이션, 오디오 처리 애플리케이션, 보안 애플리케이션 등과 같은 것을 병행으로 실행하도록 구성될 수 있다.
도2는 묘사된 바와 같이 MSP(100)를 추가로 도해하는 블록도이다. 도해된 대로, MSP(200)는 여러 프로세싱 소자들(120)의 구성을 더 예시한다. 일 실시예에서, 범용 프로세싱 소자(GPE)는 더 복잡한 PE들이 생성될 수 있는 기본 프로세싱 소자이다. 일 실시예에서, PE들은, 입력 포트들에 연결되어 들어오는(incoming) 데이터 스트림들을 받아들이는 입력 프로세싱 소자들(IPE), 범용 프로세싱 소자들(GPE), 곱셈 누적 프로세싱 소자들(MACPE), 및 출력 포트들에 연결되어 바라는 프로세싱 기능성을 실행하기 위한 밖으로 나가는(outgoing) 데이터 스트림들을 보내는 출력 프로세싱 소자들(OPE)로 분류될 수 있다.
또한, MSP(200)는 로컬 데이터용 내부 메모리 및 오프 칩 메모리 상에서의 대역폭 병목 현상을 경감하기 위한 가변 저장 장치를 포함할 수 있다. 예를 들어, MSP(200)는 복수의 데이터 스트림을 취급하기 위한 메모리 명령 핸들러(MCH) 뿐만이 아니라 데이터 랜덤 액세스 메모리(RAM)(270)를 포함할 수 있다. 도해된 대로, 입력 PE(220-1) 뿐만 아니라 출력 PE(220-5)도 데이터 스트림들의 입력 및 출력 프로세싱을 취급할 수 있는 반면에, PE들 (220-2) 내지 (220-4)는 하드웨어 가속기들(250)(250-1,..., 250-n)을 사용하여 몇몇 종류의 알고리즘 기능성을 실행한다. 또한, 각각의 PE(220)는, 예를 들어, 16 로컬 레지스터들과 예를 들어 16 비트의 폭을 갖고 16 비트 피연산자(operand)들 또는 8 비트 피연산자들에 사용될 수 있는 간접 레지스터들을 포함할 수 있다. 바라는 미디어 처리 기능성들을 실행하기 위해서, 여러 PE들이 레지스트 파일(210)을 활용한다.
일 실시예에서, 레지스터 파일(300)은 레지스터 파일(210)로서 사용되어 PE들이 데이터를 교환하도록 허용하고 또한 도3a에 예시된 대로 데이터 조작용의 범용 레지스터들을 제공한다. 일 실시예에서, 데이터 유효(DV) 비트들은 데이터 흐름뿐만이 아니라 PE에 의한 범용 목적의 레지스터들(GPR)(310)(310-1,...,310-n)의 소유권을 조정하기 위한 세마포어(semaphore) 시스템을 구현한다. 일 실시예에서, 모든 PE들(220)은, 레지스터 파일(300)로 및 레지스터 파일(300)로부터의 데이터를 공유할 때, 도4 내지 도9을 참조하여 묘사된 대로, 미리 정의된 표준 세마포어 프로토콜을 따르도록 요구된다. 일 실시예에서 각각의 PE(220)는 예를 들어 명령어들을 보유하기 위한 128 명령어 메모리를 갖는다. 전형적으로는, 이 명령어들은 몇몇 데이터 흐름 및 수치연산 명령어들에 덧붙여서 하나 또는 그 이상의 반복 연산들로 구성된다.
일 실시예에서, GPR들(310)은 GPR들(310)을 통과해 나아가는 데이터에게 데이터 유효(DV) 비트(306)(306-1,..., 306-n)로 태그함으로써 PE들(220) 간에 데이터를 교환한다. DV 비트(306)의 목적은 삼중적이다; 데이터 기억 리소스의 소유권을 확립하고, 데이터의 하나 또는 그 이상의 소비자를 확립하고, 선택된 하드웨어 가속기의 활성화를 식별하는 것이 그것이다. 도4에 도해된 실시예에서, PE 대 PE 데이터 동기화가 설명된다. 초기에, PE0 (220-2)는, 예를 들어 GPR(360)에 기입된 결과로 HWA DV 비트(362)(도3a의 비트 304)를 설정함으로써(이는 PE1 (220-3)에 의한 소비를 위한 것임) 선택된 하드웨어 가속기(HWA)(250)의 인에이블먼트(enablement)를 요구할 수 있다. 이러므로, PE0는 DV 비트(364)를 어써트한다. 또한, HWA DV 비트(362)는 PEO (220-2)에 의한 HWA(250)의 제어를 알리기 위해서 설정된다.
일 실시예에서, HWA DV 비트(362)의 설정은 제어 로직(230)에게 프로세싱 소자가 HWA(250)의 인에이블먼트 또는 활성화를 요구하고 있음을 경보해 준다. 일 실시예에서, 도3b에 묘사된 대로, 범용 레지스터(320)는 제어 로직(230)(도2)용의 제어 레지스터로서 지정될 수 있다. 이런 실시예에 따라서, PE(220)는, 레지스터(320)가 제어 블록(230)을 위한 명령 채널로서 기능하는 식으로 제어 데이터를 지정된 레지스터(320)로 기입하는 것을 책임진다. 일 실시예에서, PE(220)는 선택된 하드웨어 가속기(HWA 선택)(322)에게 표시하여 하드웨어 가속기용의 입력 데이터(324)를 식별할 뿐만이 아니라 출력 데이터용의 로케이션을 식별하도록 하는 것을 책임진다. 일 실시예에서, PE(220)는 제어 데이터(330)에 기입함으로써 미디어 처리 기능을 실행하도록 HWA(250)에게 지시한다. 대안 실시예에서, 컨트롤러(도시 안됨)는 컨트롤러(230)(도 2)를 설정하여 지정된 하드웨어 가속기를 인에이블하는 것을 책임질 수도 있다.
다시 도5를 참조하면, HWA DV 비트(362)뿐만이 아니라 DV 비트(364)는, GPR0 (360)의 소유권을 초기에 주장하기 위해 PE0 (220-2)에 의해 설정될 뿐만이 아니라, 발생된 데이터가 선택된 하드웨어 가속기(220)에 의해 제공된 것을 표시한다. PE1 (220-3)은 GPR(360) 내의 데이터에 의존하고, 이것을 이용할 수 있을 때까지 스톨(stall)된다. 도해된 대로, 데이터를 이용할 수 있을 때까지, PE1 (220-3) 및 PE2 (220-4)는 스톨된다. 이러므로, 일단 HWA가 연산을 실행하고 출력 데이터를 GPR(360) 내로 기입하였다면, PE1의 DV 비트(366)는 도6에 묘사된 대로 설정된다. 일 실시예에서, DV 비트(366)가 GPR(360) 내에 설정되었으므로, PE1은 데이터를 이제 판독할 수 있고 실행을 계속할 수 있다. GPR(360) 내의 데이터가 PE1 (220-3)에 의해 단 한번 필요하다고 가정하면, PE1 (220-3)은 데이터 판독과 함께 그 대응하는 DV 비트(366)를 클리어한다. 일 실시예에서, 레지스터(310)에 대한 판독 명령어는 DV 비트를 리셋하는 것과 함께, 하나의 명령어로서 실행된다.
도7에서, PE0 (220-2)는 PE2 (220-4)에 대한 새로운 피스의 데이터를 발생시키고, 그 결과를 GPR(360)에 기입한다. PE0 는, 일단 PE2 (220-4)가 데이터를 판독하도록 인에이블하기 위해 데이터가 GPR(360) 내로 기입되면, DV 비트(368)를 설정한다. PE0는 도8에 묘사된 대로 DV 비트(362)를 리셋하여 GPR(360)에 대해 이것이 종료되었음을 알린다. DV 비트(368)의 어써트의 검출은 데이터가 소비하는데에 쓰여질 수 있음을 알리는 것이다. 그 결과, PE2는 스톨로부터 해제되는데, 이는 DV 비트(368)가 프로세싱을 재개하도록 설정되기 때문이다. 다음으로, PE2 (220-4)는 GPR(360)로부터 데이터를 판독하고 DV 비트(368)를 클리어한다.
그에 따라, 일단 클리어되면, GPR(360)은 모든 DV 비트들이 도9에 도해된 대로 리셋되기 때문에 모든 PE들(220)에 이용할 수 있게 된다. 여기서 설명하는 대로는, 용어 '설정(set)' 또는 '어써트(assert)' 뿐만이 아니라 '리셋' 또는 '디어써트(deassert)'는 특정 논리값들을 함의하지는 않는다. 그보다는, 비트는 '1'에 설정되거나 또는 '0'에 설정되고, 양자가 모두 본 발명의 실시예들로서 간주된다. 그 결과, 비트는, 여기 설명된 본 발명의 실시예에 따라서 활성 '0'(어써트된 로우 신호)일 수도 있고 활성 '1'(어써트된 하이 신호)일 수도 있다.
그에 따라, DV 비트들을 활용함으로써, PE들은 레지스터 파일(300) 내의 GPR(310)의 소유권을 지정할 수 있다(도3a). 일 실시예에서, 설정 DV 비트의 검출은, 데이터가 GPR(360) 내에 기입될 때까지, 데이터에 좌우되는, PE(220)의 스톨을 야기한다. 일 실시예에서, HWA DV 비트(362)는 요구된 데이터가 PE(220)에 의해 또는 선택된 HWA에 의해 발생되는 지의 여부를 표시한다. 일 실시예에서, 제어 레지스터(320)(도3b)는 HWA(250)과 HWA(250)을 선택한 PE(220)를 식별하기 위해서 액세스된다. 그에 따라, MSP(200)의 여러 PE들(220)이 표시된 프로그램 데이터 흐름과 관련 없이 데이터 구동되고 기능한다.
도10은 본 발명의 일 실시예에 따라서 함께 결합되어 미디어 프로세서(400)를 형성하는 복수의 MSP(200)를 수용한 블록도를 도해하였다. 도해된 대로, MSP들(200)은 데이터로 하여금 한 유닛에서 다른 유닛으로 흘러가도록 허용하는 양방향 데이터 연결을 인에이블하는 여러 포트들을 포함한다. 이러므로, 각각의 포트는 여럿의 별개의 단방향 데이터 버스들을 경유해서 동시적으로 데이터를 보내고 수신하는 능력을 갖는다. 일 실시예에서, MSP들(200)의 여러 포트들은, 예를 들어 포트 선택 레지스터를 경유해서 제어되는, 두 개의 유닛 간의 각각의 방향을 따라 있는 FIFO 장치들로 구성된다.
그에 따라, 한 유닛 내의 임의의 포트는, 예를 들어 16비트 폭의 데이터 버스를 활용할 수 있는 그 외의 MSP들(200)의 각각의 포트들에 연결될 수 있다. 그에 따라, 미디어 프로세서(400)는 복수의 MSP(200)를 활용하여 자유롭게 데이터를 교환하고 공유하는데, 이는 오디오, 비디오 및 촬상 애플리케이션들과 같은 데이터 집중형 애플리케이션의 성능을 향상시킨다.
더 나아가, 미디어 프로세서(400)의 MSP들(200) 내에 여러 HWA들을 포함시킴으로써, 미디어 프로세서(400)는, 비디오 처리 애플리케이션, 화상 처리 애플리케이션, 오디오 처리 애플리케이션 등과 같은 것의 내에서 사용된다. 또한, 예를 들어, 스트림 및 블록 암호들(stream and block ciphers)뿐만이 아니라 키 발생기(key generator)들과 같은 보안 기반 가속기들을 통합함으로써, 미디어 프로세서(400)는 바라는 미디어 처리 애플리케이션에서 교환되는 데이터를 보안 처리한다. 또한, 미디어 프로세서(400)는 메모리 액세스 유닛들 (420) 및 (425)뿐만이 아니라 메모리 인터페이스 유닛들 (430) 및 (435)를 포함한다. 유사하게, 입력/출력(I/O) 블록(460)은 여러 I/O 장치들에 대한 액세스를 제공한다.
일 실시예에서, 미디어 프로세서(400)는 데이터 구동 아키텍처에 통합되어 바라는 미디어 처리 기능성을 제공할 수 있다. 일 실시예에서, 데이터 구동 미디어 아키텍처(500)가 도11을 참조해 도해된다. 여기서, 도11은 본 발명의 일 실시예에 따라서 데이터 구동 미디어 아키텍처(500)의 시스템 레벨 다이어그램을 도해하였다. 미디어 아키텍처(500)는 메모리 (450) 및 (440)에 결합된 미디어 프로세서(400)를 포함한다. 일 실시예에서, 메모리는, 예를 들어 133Mhz(266 MHz DDR 장치들)로 돌아가는 이중 데이터 속도(DDR) 동기식 데이터 랜덤 액세스 메모리(synchronous data random access memory, SDRAM)를 한 예로 들 수 있다.
도해된 입력 미디어 스트림(502)은 미디어 프로세서(400)에게 제공되고, 이는 예를 들어 화소 정보 및 오디오 스트림, 비디오 스트림 등과 같은 미디어 스트림을 처리한다. 미디어 프로세서(400)는, 예를 들어 PCI 버스와 같은 버스(예로 든 것임)에 결합된다. 버스(560)는 호스트 프로세서(510)로의 결합을 인에이블하고, 호스트 프로세서는 메모리(520)에 결합된다. 유사하게, 버스(560)는 I/O 인터페이스들(530)에 결합하는데, 이 버스는 USB(532), IEEE 프로토콜 (1394), 병렬 포트(536) 및 전화기(537)를 포함할 수 있다. 더 나아가, 네트워크 인터페이스(540)는 네트워크(550)를 버스(560)에 결합할 수 있다.
그에 따라, 미디어 아키텍처 장치들이 더욱 범용 목적을 갖는 미디어 프로세싱 구현 쪽으로 진화함에 따라, 화상 신호 프로세서들 내에서 현재 사용되는 매우 크고 복잡한 하드웨어 가속기들과는 대조적으로, 예를 들어 고정 미디어 처리 기능 가속기들에 대한 요구가 점점 더 커질 것이다. 예를 들어, 미디어 신호 프로세서는 비디어 인코딩 동작들 동안에만 사용되곤 하던 절대치 차들의 합(sum of absolute differences, SAD) 엔진과 같은 미디어 처리 기능을 구현할 수 있다. 동일한 MSP는 디스플레이 동작 동안에 익숙하게 사용되는 스케일링 가속기를 가질 수도 있다. 추가의 미디어 처리 기능들은, 예를 들어 MPEG 비디오 재생 동작의 비트 스트림 디코드 페이즈 동안에 익숙하게 사용되는 가변 길이 코드 디코더 블록일 수 있다.
설명된 실시예들에 따라서, 이런 가속기들의 각각은, 도1 내지 도3b를 참도하여 묘사된 대로, PE들의 명령어 워드 내의 유가 비트들(valuable bits) 또는 통신 레지스터들 내의 PE 선택 비트들을 테이크 업(take up)하지 않고 동일한 MSP 내에 존재할 수 있다. 그에 따라, 여기 설명된 미디어 신호 프로세서에 의해 사용되는 하드웨어 가속기들은 데이터 구동 아키텍처 내에서 통신 제어 레지스터들의 경로 밖으로 스위칭 아웃되었을 때 자신들의 컨텍스트를 유지할 수 있다. 또한, PE 선택 비트들의 경로의 변경들은 사용 중이 아닐 때 하드웨어 가속기들의 디스에이블링을 이루어 준다. 그에 따라, 예를 들어 전용 제어 레지스터를 활용하면, PE들은 바라는 하드웨어 가속기의 선택을 제어할 수 있다.
대안 실시예
미디어를 제공하기 위한 MSP의 일 구현예의 몇몇 특징들이 설명되었다. 그러나, MSP의 여러 구현들이 앞서 설명한 특징들을 포함하고, 보완하고, 보충하고 및/또는 대체하는 다수의 특징들을 제공한다. 특징들은 다른 실시예의 구현들에서, 미디어의 일부로서 또는 디지털 신호의 일부로서 구현될 수 있다. 또한, 설명의 목적으로, 앞서의 설명은 본 발명의 실시예들의 철저한 이해를 제공하기 위해 특정 명칭들을 사용하였다. 그러나, 당업자에게는 본 발명의 실시예들을 실시하기 위해서 특정의 상세 사항들이 반드시 요구되지는 않는다는 것이 명백할 것이다.
또한, 여기 설명된 실시예가 MSP를 지향하고 있지만, 당업자는, 본 발명의 실시예들이 그 외의 시스템들에도 적용될 수 있다는 점을 알아야 한다. 사실상, 데이터 구동을 위한 시스템들은, 청구범위에서 규정되는 바에 따라서, 본 발명의 실시예 내에 드는 것이다. 이상 설명한 실시예들은 본 발명의 실시예들의 원리와 그 실제적인 응용을 최적으로 설명하기 위해 선택되었고 기술되었다. 이런 실시예들은 당업자로 하여금 상정되는 특정 사용에 알맞은 여러 변형들을 가할 수 있으면서 본 발명과 여러 실시예들을 최적으로 활용할 수 있게끔 선택되었다.
본 발명의 여러 실시예들의 수많은 특성들 및 이점들이 본 발명의 여러 실시예들의 상세한 구조 및 기능과 함께 이상의 설명에서 제시되었지만, 이 개시는 오직 예시적 목적을 위한 것이다. 몇몇 경우에, 특정의 서브 어셈블리들이 하나의 그런 실시예에서 자세히 설명되기는 하였다. 그렇지만, 이런 서브 어셈블리들은 본 발명의 다른 실시예들에서도 사용될 수 있음을 인식하고 있고 그렇게 의도한 것이다. 본 발명의 실시예들의 원리의 범주 내에서, 부분들의 구조 및 관리 면에서 볼 때, 첨부된 청구범위에서 표현된 용어들이 갖는 광의의 일반적 의미에 의해 표현되는 그 끝에 이르기까지 변경들이 상세히 이뤄질 수 있다.
예시적인 실시예들 및 최적 모드를 개시하였지만, 청구범위에 의해 규정된 본 발명의 실시예들의 범위 내에 들면서, 개시된 실시예들에 대해서 변경들 및 변형들이 이뤄질 수 있다.

Claims (28)

  1. 미디어 신호 프로세서의 복수의 프로세싱 소자에 의해 액세스 가능한 레지스터 파일을 제공하는 단계와,
    프로세싱 소자에 의해 설정된 상기 레지스터 파일 내의 레지스터의 적어도 하나의 비트에 따라서, 복수의 하드웨어 가속기 중에서 선택된 하드웨어 가속기를 인에이블하는 단계와,
    상기 프로세싱 소자에게 상기 선택된 하드웨어 가속기에 대한 소유권(ownership)을 허여하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 선택된 하드웨어 가속기를 인에이블하는 단계는,
    프로세스가 하드웨어 가속기의 선택을 바랄 경우 프로세싱 소자가 비트를 설정하도록 인에이블하는 단계와,
    만일 상기 비트가 설정되면 상기 선택된 하드웨어 가속기를 활성화하는 단계를 포함하는
    방법.
  3. 제1항에 있어서, 상기 선택된 하드웨어 가속기를 인에이블하는 단계는,
    상기 복수의 프로세싱 소자로부터 제어 명령들(control commands)을 수신하 도록 상기 레지스터 파일 내의 적어도 하나의 레지스터를 지정하는 단계와,
    상기 레지스터 내에서 검출된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기를 활성화하는 단계
    를 포함하는 방법.
  4. 제1항에 있어서,
    상기 복수의 하드웨어 가속기에 결합된 선택 유닛을 제공하는 단계와,
    상기 복수의 프로세싱 소자로부터 제어 명령들을 수신하도록 상기 레지스터 파일 내의 적어도 하나의 레지스터를 지정하는 단계와,
    프로세싱 소자에게 선택된 하드웨어 가속기로의 액세스를 제공하도록 상기 선택 유닛에게 지시하는 단계와,
    수신된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기에게 지시하는 단계
    를 포함하는 방법.
  5. 제3항에 있어서, 상기 선택된 하드웨어 가속기를 활성화하는 단계는,
    상기 제어 명령을 기입한 프로세싱 소자를 식별하는 단계와,
    상기 제어 명령에 따라서, 상기 선택된 하드웨어 가속기용의 입력 데이터 스트림을 결정하는 단계와,
    상기 제어 명령에 따라서, 상기 선택된 하드웨어 가속기용의 출력 데이터 스 트림을 결정하는 단계와,
    수신된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기에게 지시하는 단계와,
    데이터가 하나 또는 그 이상의 데이터 의존형 프로세싱 소자를 위해 이용가능한지의 여부를 표시하도록 상기 레지스터 파일의 레지스터 내의 제어 비트를 갱신하는 단계와,
    상기 하나 또는 그 이상의 데이터 의존형 프로세싱 소자에게, 명령어들(instructions)을 실행하기 위해 필요로 하는 상기 데이터를 하나 또는 그 이상의 레지스터에서 얻을 수 있게 되기까지, 상기 명령어들을 실행하는 것을 기다리도록 요구하는 단계
    를 포함하는 방법.
  6. 방법을 수행하도록 시스템을 프로그램하는 데에 사용될 수 있는 명령어들을 저장한 머신 판독 가능 매체를 포함하는 제조 물품으로서, 상기 방법은,
    미디어 신호 프로세서의 복수의 프로세싱 소자에 의해 액세스 가능한 레지스터 파일을 제공하는 단계와,
    프로세싱 소자에 의해 설정된 상기 레지스터 파일 내의 레지스터의 적어도 하나의 비트에 따라서, 복수의 하드웨어 가속기 중에서 선택된 하드웨어 가속기를 인에이블하는 단계와,
    상기 프로세싱 소자에게 상기 선택된 하드웨어 가속기에 대한 소유권을 허여 하는 단계를 포함하는
    제조 물품.
  7. 제6항에 있어서, 상기 선택된 하드웨어 가속기를 인에이블하는 단계는,
    프로세스가 하드웨어 가속기의 선택을 바랄 경우 프로세싱 소자가 비트를 설정하도록 인에이블하는 단계와,
    만일 상기 비트가 설정되면 상기 선택된 하드웨어 가속기를 활성화하는 단계를 포함하는
    제조 물품.
  8. 제6항에 있어서, 상기 선택된 하드웨어 가속기를 인에이블하는 단계는,
    상기 복수의 프로세싱 소자로부터 제어 명령들을 수신하도록 상기 레지스터 파일 내의 적어도 하나의 레지스터를 지정하는 단계와,
    상기 레지스터 내에서 검출된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기를 활성화하는 단계를 포함하는
    제조 물품.
  9. 제6항에 있어서, 상기 방법은,
    상기 복수의 하드웨어 가속기에 결합된 선택 유닛을 제공하는 단계와,
    상기 복수의 프로세싱 소자로부터 제어 명령들을 수신하도록 상기 레지스터 파일 내의 적어도 하나의 레지스터를 지정하는 단계와,
    프로세싱 소자에게 선택된 하드웨어 가속기로의 액세스를 제공하도록 상기 선택 유닛에게 지시하는 단계와,
    수신된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기에게 지시하는 단계를 더 포함하는
    제조 물품.
  10. 제8항에 있어서, 상기 선택된 하드웨어 가속기를 활성화하는 단계는,
    상기 제어 명령을 기입한 프로세싱 소자를 식별하는 단계와,.
    상기 제어 명령에 따라서, 상기 선택된 하드웨어 가속기용의 입력 데이터 스트림을 결정하는 단계와,
    상기 제어 명령에 따라서, 상기 선택된 하드웨어 가속기용의 출력 데이터 스트림을 결정하는 단계와,
    수신된 제어 명령에 따라서 미디어 프로세싱 기능을 실행하도록 상기 선택된 하드웨어 가속기에게 지시하는 단계와,
    데이터가 하나 또는 그 이상의 데이터 의존형 프로세싱 소자를 위해 이용가능한지의 여부를 표시하도록 상기 레지스터 파일의 레지스터 내의 제어 비트를 갱신하는 단계와,
    상기 하나 또는 그 이상의 데이터 의존형 프로세싱 소자에게, 명령어들을 실행하기 위해 필요로 하는 상기 데이터를 하나 또는 그 이상의 레지스터에서 얻을 수 있게 되기까지, 상기 명령어들을 실행하는 것을 기다리도록 요구하는 단계를 포함하는
    제조 물품.
  11. 복수의 프로세싱 소자와,
    선택 유닛에 결합된 복수의 하드웨어 가속기와,
    상기 선택 유닛과 상기 복수의 프로세싱 소자에 결합된 레지스터 파일
    을 포함하고,
    상기 레지스터 파일은, 상기 복수의 하드웨어 가속기, 상기 선택 유닛 및 상기 복수의 프로세싱 소자에 의해 액세스 가능한 복수의 범용 레지스터를 포함하고, 상기 범용 레지스터 중의 적어도 하나는 프로세싱 소자로 하여금 선택된 하드웨어 가속기를 활성화하도록 상기 선택 유닛에게 지시하도록 허용하는 적어도 하나의 비트를 포함하는
    프로세서.
  12. 제11항에 있어서, 상기 복수의 프로세싱 소자는,
    상기 레지스터 파일에 결합되어, 입력 데이터를 수신하는 입력 프로세싱 소자와,
    상기 레지스터 파일에 결합되어, 데이터를 전송하는 출력 프로세싱 소자를 포함하는
    프로세서.
  13. 제11항에 있어서, 상기 선택 유닛은 상기 레지스터 파일 중의 적어도 하나의 레지스터 내의, 프로세싱 소자로부터의 제어 명령을 수신하고, 상기 수신된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기를 활성화하는
    프로세서.
  14. 제11항에 있어서, 상기 제어 유닛은, 제어 명령을 기입한 프로세싱 소자를 식별하고, 데이터가 상기 선택된 하드웨어 가속기로부터 상기 식별된 프로세싱 소자를 위해 이용가능한 때를 표시하도록 상기 레지스터 파일의 레지스터 내의 제어 비트를 설정하는
    프로세서.
  15. 제11항에 있어서, 프로세싱 소자는, 상기 프로세싱 소자가 하드웨어 가속기의 선택을 바랄 때 하나의 비트를 설정하고, 하나 또는 그 이상의 데이터 의존형 프로세싱 소자를 식별하도록 하나 또는 그 이상의 비트를 설정하여 상기 하나 또는 그 이상의 비트가 리셋될 때까지 상기 식별된 프로세싱 소자들이 명령어들을 실행하는 것을 금지하는
    프로세서.
  16. 제11항에 있어서, 상기 프로세싱 소자는, 상기 레지스터 파일 내의 적어도 하나의 레지스터에 제어 명령을 기입하여, 상기 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 선택된 하드웨어 가속기에게 지시하고, 상기 선택된 하드웨어 가속기가 사용중인 것을 표시하도록 제어 비트를 설정하는
    프로세서.
  17. 제11항에 있어서, 프로세싱 소자는, 하나 또는 그 이상의 데이터 의존형 프로세싱 소자를 식별하도록 상기 레지스터 파일의 레지스터 내에 하나 또는 그 이상의 제어 비트를 설정하여, 상기 식별된 프로세싱 소자들에 의해 요구되는 데이터가 하나 또는 그 이상의 레지스터에서 이용가능할 때까지 상기 식별된 프로세싱 소자들을 스톨(stall)하고 명령어들의 실행을 금지하는
    프로세서.
  18. 제11항에 있어서, 상기 하드웨어 가속기들은 화상 처리 하드웨어 가속기들을 포함하는 프로세서.
  19. 제11항에 있어서, 상기 하드웨어 가속기들은 비디오 처리 하드웨어 가속기들을 포함하는 프로세서.
  20. 제11항에 있어서, 상기 하드웨어 가속기들은 오디오 처리 하드웨어 가속기들을 포함하는 프로세서.
  21. 시스템으로서,
    각각의 사이의 데이터 교환이 가능하도록 입력 및 출력 포트들을 경유해서 함께 결합된 복수의 미디어 신호 프로세서
    를 포함하고,
    상기 미디어 신호 프로세서들은,
    복수의 프로세싱 소자와,
    선택 유닛에 결합된 복수의 하드웨어 가속기와,
    상기 선택 유닛과 상기 복수의 프로세싱 소자에 결합된 레지스터 파일 -상기 레지스터 파일은, 상기 복수의 하드웨어 가속기와 상기 복수의 프로세싱 소자에 의해 액세스 가능한 복수의 범용 레지스터를 포함하고, 상기 범용 레지스터 중의 적어도 하나는 프로세싱 소자로 하여금 상기 선택 유닛을 경유해서 선택된 하드웨어 가속기를 활성화하도록 허용하는 적어도 하나의 비트를 포함함- 과,
    하나 또는 그 이상의 상기 미디어 신호 프로세서에 결합된 메모리 인터페이스와,
    상기 메모리 인터페이스에 결합된 랜덤 액세스 메모리를 포함하는
    시스템.
  22. 제21항에 있어서, 상기 선택 유닛은, 상기 레지스터 파일의 적어도 하나의 레지스터 내에 프로세싱 소자로부터 제어 명령을 수신하고, 상기 수신된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 상기 선택된 하드웨어 가속기를 활성화하는
    시스템.
  23. 제21항에 있어서, 상기 제어 유닛은, 제어 명령을 기입한 프로세싱 소자를 식별하고, 데이터가 상기 선택된 하드웨어 가속기로부터 상기 식별된 프로세싱 소자를 위해 이용가능한 때를 표시하도록 상기 레지스터 파일의 레지스터 내의 제어 비트를 설정하는
    시스템.
  24. 제21항에 있어서, 프로세싱 소자는, 상기 프로세싱 소자가 하드웨어 가속기의 선택을 바랄 때 하나의 비트를 설정하고, 하나 또는 그 이상의 데이터 의존형 프로세싱 소자에 대응하는 비트들을 설정하여 상기 하나 또는 그 이상의 비트가 리셋될 때까지 상기 식별된 프로세싱 소자들이 명령어들을 실행하는 것을 금지하는
    시스템.
  25. 제21항에 있어서, 상기 프로세싱 소자는, 상기 레지스터 파일 내의 적어도 하나의 레지스터에 제어 명령을 기입하여 상기 기입된 제어 명령에 따라서 미디어 프로세싱 기능을 수행하도록 선택된 하드웨어 가속기에게 지시하고, 하드웨어 가속기가 사용중인 것을 표시하도록 제어 비트를 설정하는
    시스템.
  26. 제21항에 있어서, 프로세싱 소자는, 하나 또는 그 이상의 데이터 의존형 프로세싱 소자를 식별하기 위해 상기 레지스터 파일의 레지스터 내에 하나 또는 그 이상의 제어 비트를 설정하여, 상기 식별된 프로세싱 소자들에 의해 요구되는 데이터가 하나 또는 그 이상의 레지스터에서 이용가능할 때까지 상기 식별된 프로세싱 소자들을 스톨하고 명령어들의 실행을 금지하는
    시스템.
  27. 제21항에 있어서, 상기 랜덤 액세스 메모리(RAM)는 동기식 데이터 랜덤 액세스 메모리(SDRAM)인 시스템.
  28. 제21항에 있어서, 상기 SDRAM은 이중 데이터 속도(DDR) SDRAM인 시스템.
KR1020057024574A 2003-06-23 2004-05-26 데이터 구동 아키텍처에서의 선택가능한 하드웨어가속기들을 위한 장치 및 방법 KR100880300B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/600,617 2003-06-23
US10/601,617 US7714870B2 (en) 2003-06-23 2003-06-23 Apparatus and method for selectable hardware accelerators in a data driven architecture

Publications (2)

Publication Number Publication Date
KR20060027808A true KR20060027808A (ko) 2006-03-28
KR100880300B1 KR100880300B1 (ko) 2009-01-28

Family

ID=33517998

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057024574A KR100880300B1 (ko) 2003-06-23 2004-05-26 데이터 구동 아키텍처에서의 선택가능한 하드웨어가속기들을 위한 장치 및 방법

Country Status (9)

Country Link
US (3) US7714870B2 (ko)
EP (1) EP1636695B1 (ko)
JP (1) JP2007520766A (ko)
KR (1) KR100880300B1 (ko)
AT (1) ATE501479T1 (ko)
DE (1) DE602004031729D1 (ko)
MY (1) MY146717A (ko)
TW (1) TWI251750B (ko)
WO (1) WO2005001685A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8284836B2 (en) 2008-01-08 2012-10-09 Samsung Electronics Co., Ltd. Motion compensation method and apparatus to perform parallel processing on macroblocks in a video decoding system

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7714870B2 (en) 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
JP3866749B2 (ja) * 2005-03-07 2007-01-10 富士通株式会社 マイクロプロセッサ
US20060230213A1 (en) * 2005-03-29 2006-10-12 Via Technologies, Inc. Digital signal system with accelerators and method for operating the same
US20070139424A1 (en) * 2005-12-19 2007-06-21 Ivo Tousek DSP System With Multi-Tier Accelerator Architecture and Method for Operating The Same
JP2007179326A (ja) * 2005-12-28 2007-07-12 Matsushita Electric Ind Co Ltd 演算処理装置
US20080189251A1 (en) 2006-08-25 2008-08-07 Jeremy Branscome Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
US7953221B2 (en) * 2006-12-28 2011-05-31 Intel Corporation Method for processing multiple operations
JP2009026136A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置
JP2009026135A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置
US7966343B2 (en) 2008-04-07 2011-06-21 Teradata Us, Inc. Accessing data in a column store database based on hardware compatible data structures
US8458129B2 (en) 2008-06-23 2013-06-04 Teradata Us, Inc. Methods and systems for real-time continuous updates
US8862625B2 (en) 2008-04-07 2014-10-14 Teradata Us, Inc. Accessing data in a column store database based on hardware compatible indexing and replicated reordered columns
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
WO2009052494A2 (en) * 2007-10-18 2009-04-23 Interdigital Technology Corporation Wireless transmit/receive unit
US8082418B2 (en) * 2007-12-17 2011-12-20 Intel Corporation Method and apparatus for coherent device initialization and access
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
US8738997B2 (en) * 2009-01-22 2014-05-27 Qualcomm Incorporated Methods and systems using threshold switches for protocol accelerators
US8171175B2 (en) * 2009-01-23 2012-05-01 Qualcomm Incorporated Methods and systems using data rate driven protocol accelerator for mobile devices
TW201132218A (en) * 2010-03-04 2011-09-16 Gemtek Technology Co Ltd Wireless networking system and related wireless routing circuit
US8839256B2 (en) * 2010-06-09 2014-09-16 International Business Machines Corporation Utilization of special purpose accelerators using general purpose processors
EP2442228A1 (en) * 2010-10-13 2012-04-18 Thomas Lippert A computer cluster arrangement for processing a computaton task and method for operation thereof
JP5739758B2 (ja) * 2011-07-21 2015-06-24 ルネサスエレクトロニクス株式会社 メモリコントローラ及びsimdプロセッサ
US9405552B2 (en) 2011-12-29 2016-08-02 Intel Corporation Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US9830154B2 (en) * 2011-12-29 2017-11-28 Intel Corporation Method, apparatus and system for data stream processing with a programmable accelerator
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US8902238B2 (en) * 2012-10-15 2014-12-02 Intel Corporation Parallel flood-fill techniques and architecture
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
CN104142907B (zh) * 2013-05-10 2018-02-27 联想(北京)有限公司 增强型处理器、处理方法和电子设备
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US10055807B2 (en) 2016-03-02 2018-08-21 Samsung Electronics Co., Ltd. Hardware architecture for acceleration of computer vision and imaging processing
CN105635323B (zh) 2016-03-14 2018-05-22 北京百度网讯科技有限公司 数据传输控制方法和装置
US10970133B2 (en) * 2016-04-20 2021-04-06 International Business Machines Corporation System and method for hardware acceleration for operator parallelization with streams
US9703603B1 (en) * 2016-04-25 2017-07-11 Nxp Usa, Inc. System and method for executing accelerator call
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10740152B2 (en) * 2016-12-06 2020-08-11 Intel Corporation Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10289479B2 (en) * 2017-05-01 2019-05-14 International Business Machines Corporation Hardware accelerator address translation fault resolution
US10572337B2 (en) * 2017-05-01 2020-02-25 International Business Machines Corporation Live partition mobility enabled hardware accelerator address translation fault resolution
US10545816B2 (en) * 2017-05-01 2020-01-28 International Business Machines Corporation Managed hardware accelerator address translation fault resolution utilizing a credit
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11340949B2 (en) * 2018-05-08 2022-05-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and node for managing a request for hardware acceleration by means of an accelerator device
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11119766B2 (en) 2018-12-06 2021-09-14 International Business Machines Corporation Hardware accelerator with locally stored macros
US10678724B1 (en) * 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10971199B2 (en) 2019-06-20 2021-04-06 Sandisk Technologies Llc Microcontroller for non-volatile memory with combinational logic
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11263014B2 (en) * 2019-08-05 2022-03-01 Arm Limited Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry
US20210173784A1 (en) * 2019-12-06 2021-06-10 Alibaba Group Holding Limited Memory control method and system
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals
CN116438512A (zh) * 2020-12-22 2023-07-14 阿里巴巴集团控股有限公司 具有集成特定领域加速器的处理***
US11965396B1 (en) * 2022-10-14 2024-04-23 Saudi Arabian Oil Company Thrust force to operate control valve

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55162154A (en) * 1979-06-01 1980-12-17 Nec Corp Data processor
JPS6319058A (ja) 1986-07-11 1988-01-26 Fujitsu Ltd メモリ装置
US4949280A (en) * 1988-05-10 1990-08-14 Battelle Memorial Institute Parallel processor-based raster graphics system architecture
JP2545627B2 (ja) 1990-02-21 1996-10-23 富士通株式会社 Cpu間インタフェース方式
JPH05158889A (ja) 1991-12-04 1993-06-25 Koufu Nippon Denki Kk 情報処理システム
JPH06231101A (ja) 1993-01-29 1994-08-19 Natl Aerospace Lab 受信タイムアウト検出機構
JP3671543B2 (ja) * 1996-09-10 2005-07-13 ソニー株式会社 データ伝送方法、データ送信装置、データ受信装置のパラメータ設定方法、データ受信装置及びデータ伝送システム
US6311204B1 (en) * 1996-10-11 2001-10-30 C-Cube Semiconductor Ii Inc. Processing system with register-based process sharing
US5940086A (en) * 1997-01-10 1999-08-17 Hewlett Packard Company System and method for dynamically allocating data among geometry accelerators in a computer graphics system
US6028643A (en) * 1997-09-03 2000-02-22 Colorgraphic Communications Corporation Multiple-screen video adapter with television tuner
US6477177B1 (en) * 1997-11-14 2002-11-05 Agere Systems Guardian Corp. Multiple device access to serial data stream
US6128307A (en) * 1997-12-01 2000-10-03 Advanced Micro Devices, Inc. Programmable data flow processor for performing data transfers
US6301603B1 (en) * 1998-02-17 2001-10-09 Euphonics Incorporated Scalable audio processing on a heterogeneous processor array
US6292200B1 (en) * 1998-10-23 2001-09-18 Silicon Graphics, Inc. Apparatus and method for utilizing multiple rendering pipes for a single 3-D display
US6275891B1 (en) * 1999-02-25 2001-08-14 Lsi Logic Corporation Modular and scalable system for signal and multimedia processing
US6624816B1 (en) * 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
JP2001167058A (ja) 1999-12-07 2001-06-22 Matsushita Electric Ind Co Ltd 情報処理装置
US7793076B1 (en) * 1999-12-17 2010-09-07 Intel Corporation Digital signals processor having a plurality of independent dedicated processors
US6891893B2 (en) * 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US6930689B1 (en) * 2000-12-26 2005-08-16 Texas Instruments Incorporated Hardware extensions for image and video processing
KR100420856B1 (ko) * 2001-01-26 2004-03-02 학교법인연세대학교 순서 비의존 투명성을 하드웨어적으로 제공해주는 병렬 렌더링 가속기
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
DE60215007T2 (de) 2001-06-29 2007-05-03 Koninklijke Philips Electronics N.V. Multiprozessorsystem und verfahren zum betrieb eines multiprozessorsystems
US20030028751A1 (en) * 2001-08-03 2003-02-06 Mcdonald Robert G. Modular accelerator framework
GB2386442B (en) 2002-03-12 2004-05-05 Toshiba Res Europ Ltd Allocation of hardware accelerators
US6963613B2 (en) * 2002-04-01 2005-11-08 Broadcom Corporation Method of communicating between modules in a decoding system
US7430652B2 (en) * 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
US7079147B2 (en) * 2003-05-14 2006-07-18 Lsi Logic Corporation System and method for cooperative operation of a processor and coprocessor
US7714870B2 (en) 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
US7286609B2 (en) * 2003-08-08 2007-10-23 Intel Corporation Adaptive multicarrier wireless communication system, apparatus and associated methods

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8284836B2 (en) 2008-01-08 2012-10-09 Samsung Electronics Co., Ltd. Motion compensation method and apparatus to perform parallel processing on macroblocks in a video decoding system
KR101439848B1 (ko) * 2008-01-08 2014-09-17 삼성전자주식회사 움직임 보상 방법 및 장치

Also Published As

Publication number Publication date
JP2007520766A (ja) 2007-07-26
US8754893B2 (en) 2014-06-17
US20040257370A1 (en) 2004-12-23
TW200504526A (en) 2005-02-01
US20090309884A1 (en) 2009-12-17
WO2005001685A1 (en) 2005-01-06
DE602004031729D1 (de) 2011-04-21
KR100880300B1 (ko) 2009-01-28
ATE501479T1 (de) 2011-03-15
EP1636695B1 (en) 2011-03-09
US8063907B2 (en) 2011-11-22
US7714870B2 (en) 2010-05-11
US20120032964A1 (en) 2012-02-09
MY146717A (en) 2012-09-14
TWI251750B (en) 2006-03-21
EP1636695A1 (en) 2006-03-22

Similar Documents

Publication Publication Date Title
KR100880300B1 (ko) 데이터 구동 아키텍처에서의 선택가능한 하드웨어가속기들을 위한 장치 및 방법
US20210149820A1 (en) Two address translations from a single table look-aside buffer read
JP3559046B2 (ja) データ処理マネージメントシステム
US5872987A (en) Massively parallel computer including auxiliary vector processor
US11119779B2 (en) Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization
US6757820B2 (en) Decompression bit processing with a general purpose alignment tool
US20030046520A1 (en) Selective writing of data elements from packed data based upon a mask using predication
JPH11312122A (ja) 使用者が構築可能なオンチッププログラムメモリシステム
US10877509B2 (en) Communicating signals between divided and undivided clock domains
JPH0728761A (ja) 非対称ベクトルマルチプロセッサ
US8019972B2 (en) Digital signal processor having a plurality of independent dedicated processors
EP1623318B1 (en) Processing system with instruction- and thread-level parallelism
US20100281234A1 (en) Interleaved multi-threaded vector processor
US20140007133A1 (en) System and method to provide single thread access to a specific memory region
US7287151B2 (en) Communication path to each part of distributed register file from functional units in addition to partial communication network
US20040093484A1 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
Seidel A Task Level Programmable Processor
US20100281236A1 (en) Apparatus and method for transferring data within a vector processor
Foster Computer architecture
Schaumont et al. System on Chip
GPPn Inst. Memory Data Memory
JPH08161168A (ja) データ処理装置
JPH05298093A (ja) 処理装置
JPH0887491A (ja) ベクトル計算機
JPH07104997A (ja) データ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180103

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190103

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 12