KR20060040610A - 데이터 구동 아키텍처 메쉬 어레이에서의 메모리 액세스디바이스 제어 - Google Patents

데이터 구동 아키텍처 메쉬 어레이에서의 메모리 액세스디바이스 제어 Download PDF

Info

Publication number
KR20060040610A
KR20060040610A KR1020057025277A KR20057025277A KR20060040610A KR 20060040610 A KR20060040610 A KR 20060040610A KR 1020057025277 A KR1020057025277 A KR 1020057025277A KR 20057025277 A KR20057025277 A KR 20057025277A KR 20060040610 A KR20060040610 A KR 20060040610A
Authority
KR
South Korea
Prior art keywords
data
processing units
processor
ports
unit
Prior art date
Application number
KR1020057025277A
Other languages
English (en)
Other versions
KR100818818B1 (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 KR20060040610A publication Critical patent/KR20060040610A/ko
Application granted granted Critical
Publication of KR100818818B1 publication Critical patent/KR100818818B1/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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

제1 명령어 세트 및 착신 데이터가 상기 착신 데이터에 대해 연산하는, 데이터 구동 프로세서의, 제1 프로세싱 유닛에 제공된다. 제1 프로세싱 유닛은, 제1 명령어 세트가 외부 메모리로부터의 판독 혹은 외부 메모리로의 기입 중 어느 하나를 필요로 할 것이라는 인지에 응답하여, 프로세서의 제2 프로세싱 유닛과 외부 메모리 사이에 논리적 채널을 설정함으로써, 외부 메모리와 제2 프로세싱 유닛 사이에 추가 데이터를 전송한다. 이러한 능력은, 데이터 포트들과 별개인 제어 포트를 제1 프로세싱 유닛에 추가함으로써 구현될 수 있고, 상기 제어 포트는, 제1 프로세싱 유닛으로 하여금, 프로세서의 메모리 액세스 유닛 데이터 채널을 통해 추가 데이터를 판독 혹은 기입하기 위한 어드레싱 정보 및 모드 정보(추가 데이터의 위치 포함)를 기입하도록 한다.
데이터 구동 프로세서, 프로세싱 유닛, 명령어, 착신 데이터, 외부 메모리, 채널, 데이터 포트, 제어 포트

Description

데이터 구동 아키텍처 메쉬 어레이에서의 메모리 액세스 디바이스 제어{CONTROLLING MEMORY ACCESS DEVICES IN A DATA DRIVEN ARCHITECTURE MESH ARRAY}
아래에서 설명된 본원의 실시예들은, 광범위한 애플리케이션에 걸쳐 양호한 성능을 제공하는 한편 상대적으로 저비용으로 제공되는, 데이터 구동 프로세서(data driven processor)의 실제적인 구현에 관한 것이다.
프로세서를 위한 데이터 구동 아키텍처는, 상대적으로 적은 명령어를 사용하여 대량의 데이터를 프로세싱하는 경우의 특정 문제를 어드레스하기 위해, 비 노이만 아키텍처(von Neumann architecture)보다 더 나은 해결책을 제공하도록 발전했다. 비 노이만형 프로세서(von Neumann type processor)는 메모리 내의 거의 모든 곳으로부터 명령어들 및 데이터를 끌어낼(pull) 수 있는 클럭화된 어드레싱 스킴(clocked addressing scheme)에 의해 제어된다. 비 노이만형 프로세서는, 메모리 내에서 액세스될 수 있는 위치 혹은 명령어의 유형에 대한 제한이 거의 없고, 광범위한 서로 다른 프로그램들을 실행하는 유연성을 갖는다. 반대로, 데이터 구동 프로세서("DDP")는, 통상적으로 메모리에 연속하여 저장되는(또는 스트림으로서 도달하는) 데이터 블록들이 공급되도록 설계되고, 데이터에 대해 연산하는 단지 적은 수의 명령어들을 구비하는 프로그램에 따라 프로세스되도록 설계된다. 이러한 유 형의 프로그램들은, 문서들(예를 들어, 그래픽복사 복사기들(reprographics copiers)에서 사용되는)과, 오디오 및 비디오 데이터의 디지털 인코딩 및 필터링 등의 애플리케이션에서 발견될 수 있다. 오디오 및 비디오 데이터 애플리케이션의 실례들로서, 디지털 카메라 등의 휴대용 소비자 정보 제품, 이동 범용 컴퓨터, 및 MP3 플레이어 등의 소형 미디어 디바이스가 있다. DDP는, 소비할 입력 데이터가 더 이상 없을 때 전력 소비가 본질적으로 0으로 급격히 떨어지는 것과 같이, 그 고유의 전력 효율에 기인하는 배터리 전력 공급형 제품들(battery-powered products) 등에 특히 적합할 수 있다.
DDP를 구비하는 대부분의 소비자 제품들에 있어서, 내장형 호스트 제어기(built-in host controller; "HC")는 DDP의 개개의 프로세싱 엘리먼트들로의 명령어 공급 및 착신 데이터(incoming data)를 편성함으로써 DDP를 돕는다. 예를 들어, 소비자 제품의 주요한(primary), 범용 프로세서 또는 내장된 프로세서는 HC의 역할을 하도록 프로그램될 수 있다. HC는 DDP의 프로세싱 엘리먼트 각자에게 지시하여 태스크가 수행되도록 한다. HC는 또한 DDP와 외부 메모리 사이의 데이터 경로의 형성을 제어하여, 발신 데이터(outgoing data), 즉, 프로세싱 엘리먼트들에 의한 소비 결과를 수신한다. DDP는, DDP의 개개의 프로세싱 엘리먼트들로부터 발신되는 발신 데이터의 스트림을, HC에 의해 식별되는 순차적으로 어드레스된 메모리 위치들로 전달하는 직접 메모리 액세스(direct memory access; "DMA") 유닛을 갖출 수 있다. 통상적인 DDP의 프로세싱 엘리먼트는 착신 데이터의 소스를 알지 못하고; 그 결과 데이터가 최후에 어디에 도착(destined)하는지도 알지 못한다. 그 정보는 HC에게만 알려진다.
도 1은 데이터 구동 아키텍처를 갖는 프로세서의 블록도를 도시한다.
도 2는 프로세서의 또 다른 실시예에서 생성될 수 있는 데이터 경로의 예를 도시한다.
도 3은 프로세서의 실시예를 특징으로 하는 전자 시스템의 블록도를 도시한다.
도 4는 프로세서의 실시예의 컴포넌트들에 대한 블록도를 도시한다.
도 5는 프로세서에서 사용된 입력 데이터 포트의 일부에 대한 블록도를 도시한다.
도 6은 프로세서에서 사용된 출력 데이터 포트의 일부를 도시한다.
도 7은 입력 및 출력 데이터 포트에 사용된 선입 선출 논리(first-in first-out logic)로의 입력 및 출력 신호들을 도시한다.
도 8은 본원의 실시예에 따라 데이터를 프로세싱하는 방법에 대한 흐름도를 도시한다.
도 9는 데이터 구동 프로세서용 제어 포트 메쉬 배열에 대한 상위 레벨 블록도를 도시한다.
도 10은 서로 통신하는 제어 포트들에 의해 사용되는 제어 단어, 제어 포트 데이터 단어, 및 상태 명령어에 대한 예를 도시한다.
도 11은 제어 포트 송신기에서 사용될 수 있는 중재자(arbiter)의 간략화된 블록도를 도시한다.
도 12는 그 제어 포트의 송신기 및 수신기 부분들을 구성하기 위해, 특정한 제어 포트에게 제공할 수 있는, 선택 레지스터들의 예를 도시한다.
본원의 실시예들은 예로서 설명되는 것으로, 동일한 참조 번호가 유사한 엘리먼트를 지시하는 첨부 도면에 한정되는 것이 아니다. 이 명세서에 있어서 본원의 "일(an)" 실시예라는 언급들이 반드시 동일한 실시예일 필요는 없고, 그들은 적어도 하나를 의미한다는 것에 주목한다.
이제, 도 1을 참조하면, 이 도면은 보다 광범위한 애플리케이션에 걸쳐 양호한 성능을 제공하는 한편, 상대적으로 낮은 비용으로 실현될 것으로 예상되는 데이터 구동 아키텍처를 갖는 프로세서의 블록도를 도시한다. 프로세서는 다수의 프로세싱 유닛(PU; 104)(이 경우에는, 6개 존재함)으로 이루어진다. 각 PU(104)는, 메쉬 배열에서 도시된 바와 같이 서로 결합되어 있는 다수의 데이터 포트(이 예에서는, 16개)를 구비한다. 데이터 포트는 프로세싱 유닛들 중 임의의 하나로부터 다른 하나로의 데이터 흐름, 및 프로세싱 유닛 중 임의의 하나로부터 메모리 액세스 유닛(108)으로의 데이터 흐름을 허용하도록 프로그램가능하다.
본원의 일 실시예에 따르면, 하나 이상의 PU(104)는, 외부 메모리(120)로부터 판독되거나 그에 기입될 데이터의 위치에 관해 PU가 메모리 액세스 유닛(108)에 정보를 전송할 수 있는 제어 포트를 구비한다. 데이터 및 제어 포트들은 도 1에 명시되지는 않았지만, 데이터선(112) 및 제어선(116)에 의해 각각 암시된다. 제어 포트를 통해 전송되는, 메모리 액세스 채널에 관한 어드레싱 정보 및 모드 정보는 메모리 액세스 제어 레지스터(127)에 도착한다. 제어 레지스터(127)는, 예를 들어, 채널을 통해 전송될 데이터에 대한 위치 식별자들뿐만 아니라 DMA 채널의 동작 모드에 관한 DMA 채널에 대한 설정들(settings)을 판정한다.
보통, PU(104)는, 외부 메모리(120)에서, 데이터가 판독되거나 데이터가 기입되는 특정한 위치를 알지 못한다. PU(104)는 단지 그를 위해 프로그램된 명령어들에 기초하여, 그의 입력 포트를 통해 들어오는 데이터를 소비(consume)하고, 그의 지정된 출력 포트를 통해 결과 데이터를 제공한다. 출력 포트는 결과 데이터를 외부 메모리(120) 내의 특정 위치에 전달하도록 만들어진 데이터 경로의 일부이다. 호스트 제어기(도시되지 않음)는, 프로그램된 데이터 경로를 통해, 메모리 액세스 유닛(108)에 논리적으로 접속되는 하나 이상의 데이터 포트로부터 데이터를 판독하고 거기에 데이터를 기입하기 위해, PU에게 지시하거나 PU를 프로그램하는데 보통 사용될 수 있다. 그러나 도 1의 실시예에 있어서, 하나 이상의 PU(104)가 메모리 액세스 유닛(108)에 판독 또는 기입 요청을 보낼 수도 있고, 이로써, 그러한 태스크로부터 호스트 제어기를 자유롭게 한다. 하나 이상의 PU(104)에서 이러한 메모리 어드레싱 능력은, 프로세스될 착신 데이터의 다음 블록이 메모리 내에 연속하여 저장되지 않는 임의의 애플리케이션을 프로세스하는데 있어, 그 프로세서가 총체적으로 보다 적합하도록 한다. 프로세서에 대한 보다 상세한 설명이 후속할 것이고, PU(104)의 추가된 메모리 어드레싱 능력에 대한 일부 장점들을 설명하기 위해 예시적인 비디오 인코딩 애플리케이션이 기술될 것이다.
프로세서의 메모리 액세스 유닛(108)은 중앙 처리 장치(CPU; 124)에 의한 중재(intervention)없이 외부 메모리(120)를 판독하고 그에 기입할 수 있는 직접 메모리 액세스(DMA)일 수 있다. 메모리 액세스 유닛(108)은 하나 이상의 PU(104), CPU(124) 또는 외부 호스트 제어기(도시되지 않음)의 제어 포트로부터 수신된, 상위 레벨(higher level)의 판독 및 기입 명령들을 하위 레벨(lower level) 메모리 액세스 명령들로 변환하는 역할을 한다. 상위 레벨 판독 및 기입 명령들은 특정한, 예를 들어, 비디오, 문서, 또는 오디오 애플리케이션에 특정한 애플리케이션일 수 있다. 예로서, PU(104)는 이미지 데이터의 소정 프레임을 액세스하기 위해 메모리 액세스 유닛(108)으로의 판독 요청을 생성할 수 있지만, 어떤 화소들은 스킵될 것이다. 또 다른 예로서, 전체 이미지 프레임의 특정한 블록에 대한 판독 요청만이 존재할 수도 있다. 그러한 상위 레벨 요청들은, 예를 들어, 단순히 데카르트 좌표계에 의해 주어진 화소 위치들을 나타낸다. 이에 따라, 메모리 액세스 유닛(108)에 의해 생성되는 메모리 액세스 명령들은 화소 값들이 저장된 외부 메모리(120) 내의 특정한 어드레스를 나타낼 것이다. 일부 경우, 이들 하위 레벨 메모리 액세스들이 외부 메모리(120)의 타이밍 요구 사항들 및 신호 레벨에 부합하는 것을 보장하기 위해, 도 1에 도시된 바와 같은 메모리 인터페이스 회로(128) 역시 필요할 것이다. 다수의 DMA 채널은 판독 및 기입 트랜잭션을 요구하는데 이용가능하고, 외부 메모리로부터 및 외부 메모리로의 데이터 전송에 이용가능하다.
또한, 도 1에 도시된 프로세서는 외부 디바이스(도시되지 않음)로의 I/O 인터페이스(132)를 갖는다. PU(104)의 출력 및 입력 데이터 포트들 중 일부, 특히, 바깥쪽(outlying) PU1 및 PU4의 출력 및 입력 데이터 포트들은 I/O 인터페이스(132)에 결합된다. 인터페이스(132)는, 하드 디스크 드라이브, CD-ROM 드라이브, 및 비디오 디스플레이 등의 외부 디바이스들과 PU들(104) 사이에서 착신 데이터와 결과 데이터가 전송되도록 한다. 인터페이스(132)는, PU(104)의 데이터 포트에 의해 요구되는 시그널링과, 병렬 컴퓨터 주변 버스 혹은 고속 직렬 버스의 시그널링 사이에서 변환하도록 설계될 수 있다. 인터페이스(132)는 오디오 혹은 비디오 데이터의 착신 및 결과 스트림을 위해 사용될 수도 있다. 대안적으로, 모든 착신 및 결과 데이터, 예를 들어, 전체 이미지 프레임들이 외부 메모리(120)에 저장될 수 있고, 모든 프로세싱이 완료된 이후에만 결과 데이터가 대용량 저장 디바이스 혹은 그 외의 주변 장치에 전송될 것이다.
외부 메모리와 관련하여 프로세서의 성능을 더 향상시키기 위해, 별개의 메모리 인터페이스(138)를 통해 추가 메모리 액세스 유닛(136)이 제공될 수 있는데, 이는, 추가 외부 메모리(140)에서 이용가능한 저장(storage)을 PU(104)들도 이용하도록 할 것이다. 그러한 실시예에서, PU1-PU3의 노스 사이드(north side)의 데이터 포트들은 제1 메모리 액세스 유닛(108)에 결합되는 한편, PU4-PU6의 사우스 사이드(south side)의 데이터 포트들은 제2 메모리 액세스 유닛(136)에 결합된다. PU1-PU3이 외부 메모리(140)(사우스 사이드)에 액세스하도록 하기 위해, PU1-PU3의 사우스 사이드의 데이터 포트들은 PU4-PU6의 노스 사이드의 데이터 포트들에 결합된다.
도 1에 도시된 실시예의 프로세서는 CPU(124)도 구비한다. PU(104)들과 함 께 칩 상에 제공될 수 있는 CPU(124)는, PU(104)들 중 임의의 하나로부터 외부 메모리(120, 140)로의 데이터 채널들을 만들기 위해, 메모리 액세스 유닛(108, 136) 및 PU(104)들의 데이터 포트들을 구성하는 명령어들을 판독 및 수행하는 것이다. 데이터 포트들의 메쉬 배열을 통해 데이터 경로들을 생성하고, 개개의 태스크를 갖는 PU(104)들에게 지시하는 기능은, 외부 호스트 제어기(도시되지 않음)에게 대신 위임될 수도 있다. 도 2는 PU들 사이에 다수의 데이터 경로들을 생성하는데 있어서 데이터 포트들의 유연성을 도시하기 위해 사용될 것이다.
도 2는 프로세서의 또 다른 실시예에서 두 개의 지점 사이에 만들어질 수 있는 데이터 경로의 예를 도시한다. 이 실시예에서, 8개의 PU(104)가 존재하고, PU1와 PU8을 링크하는 경로 5개가 도시된다. 각 PU(104)는 각 측에 4 세트의 데이터선들(112)과 접속하는 데이터 포트들을 구비한다(제어 포트들과 대응 제어선들(116)이 도시되지 않음. 도 1 참조). 데이터 포트 메쉬는 PU(140)들 중 어떤 하나로부터 다른 하나로, 및 데이터 채널을 통해 외부 메모리(120, 140)로의 데이터 흐름을 지원한다. 외부 메모리(120, 140)는, 문서 프로세싱과, 비디오 및 오디오 프로세싱 등의 애플리케이션에 사용된, 비교적 고속 액세스 및 비교적 대용량에 적합한, 버퍼-형의 전용의 고체 상태 메모리일 수 있다. 대안적으로, 외부 메모리(120, 140)는 호스트 제어기(도시되지 않음)의 주 메모리의 일부 또는 전자 시스템 내의 그 외의 주 메모리의 일부일 수 있다. 외부 메모리(120, 140)는 더블 데이터 레이트 혹은 동기식 다이내믹 램으로 구성될 수 있고; 프로세서의 특정 애플리케이션에 적합한 그 외의 유형의 고체 상태 메모리가 대신 사용될 수도 있다.
위에서 언급한 바와 같이, 데이터 포트들은 프로세서 내의 임의의 두 지점 간의 논리적 접속을 구축하도록 구성될 수 있다. 이 실시예에서 데이터 포트 메쉬의 구성은, 호스트 인터페이스(139)를 통해, 컴퓨터 주변 버스(도시되지 않음)에 의해 접속되는 호스트 프로세서(도시되지 않음)에 의해 제어된다. 비교적 낮은 속도의 글로벌 버스(도시되지 않음)는 호스트 인터페이스(139)를 PU(104) 전체, 메모리 액세스 유닛(108)은 물론, 프로세서의 그 외의 컴포넌트들에 접속한다. 이 글로벌 버스는 PU(104)에 대한 명령어들 혹은 마이크로코드를 로딩함은 물론 상태 레지스터들(도시되지 않음)을 판독함으로써 프로세서를 구성 혹은 프로그램하는데 사용된다. 또한, 바깥쪽 PU 각각, 즉, PU1, PU5, PU4 및 PU8은 각각의 확장 인터페이스(EI) 유닛(141)에 결합된 한 쌍의 데이터 포트를 갖는다. EI 유닛(141)은 데이터 포트 통신 메쉬가 다수의 프로세서에 걸쳐 확장되도록 허가하고, 비디오 디스플레이, 하드 디스크 드라이브 및 프린터 등 상술한 바와 같은 외부 주변 디바이스의 프로세서로의 접속을 허용한다.
PU(104)는 다수의 사이드들을 각각 갖는 본질적으로 동일한 유닛들일 수 있고, 각 사이드는 적어도 하나가 입력 포트이고 적어도 하나가 출력 포트인 다수의 단방향 데이터 포트들을 갖는다. 도 2의 실시예에서, 인접하는 PU(104)로부터, 각 데이터 포트 쌍의 결합 유형은 지점-대-지점 단방향 접속이다. 데이터 포트들 및 각 PU의 프로그래밍 엘리먼트들에 대한 상기 데이터 포트들의 접속 설계(도 4-7과 관련하여 아래에서 추가로 설명됨)는, 각 PU 내에 있는 프로그래밍 엘리먼트들이 해당 PU의 데이터 포트들을 통해 전송 중인 어떠한 데이터에도 연루될 필요가 없게 하는 것이다. 따라서, 도 2에 도시된 예에서, 연루된(involved) 데이터 포트들을 실제로 판독 혹은 기입하는 PU(104)는 PU(1) 및 PU(8) 뿐이다. 이러한 두 개의 PU 사이에 구성될 수 있는 5개의 서로 다른 가능 데이터 경로들은 데이터 포트 메쉬 아키텍쳐의 유연성을 보여준다는 것에 주목한다. 명백히 하기 위해, PU1와 PU8 사이에서 가능한 데이터 경로들이 도 2에 모두 도시된 것은 아니며; 또한, 메모리 액세스 유닛(108 혹은 136)을 통해 임의의 소정 데이터 채널을 경유하여, PU(104) 중 임의의 하나와 외부 메모리(120 혹은 140) 사이에 유사한 프로그램가능 데이터 경로들이 만들어질 수 있다.
메모리 액세스 유닛(108)의 제어 레지스터(127)(도 1 참조)가 하나 이상의 PU(104)의 제어 포트들을 경유하여 기입되도록 하면, 비디오 프로세싱 애플리케이션에 대해 전체적으로 보다 적합한 프로세서를 구성하는 것이 기대되는데, 여기서, 프로세스되기 위해 필요한 착신 데이터의 위치는 블록-대-블록을 기반으로 항상 점차적으로 혹은 순차적으로 변하는 것은 아니다. 예로서, 씬(scene)에서 이동으로 인해, 이전 프레임으로부터 이미지 블록의 위치에 있어서의 변화를 지적하는, 현재 프레임에 대한, 이동 벡터를 생성함으로써, 압축 단계에서, 프레임-대-프레임 시간적 리던던시(frame-to-frame temporal redundancies)가 감소되는 비디오 압축을 고려한다. 이제, "현재(current)" 프레임을 재구성하기 위해 착신 비디오 데이터를 디코드하도록 PU1에게 지시하는 디코딩 혹은 압축 해제 단계를 고려한다. 이 착신 비디오 데이터는 이동 벡터를 포함할 수도 있다. 이동 벡터는 이전 프레임 내에 있는 이미지 데이터의 블록을 지적하므로, 그 블록을 페치하기 위해 외부 메모리로 의 별개의 액세스가 필요하게 될 것이다. 다시 말해, 이동 벡터는, 외부 메모리(120)에 저장되어 있고 현재 프레임을 디코드하기 위해 카피될 필요가 있는 이전 프레임의 이미지 블록을 지적한다. 이 블록의 정확한 표시 위치 (x,y)는 디코딩 프로세스의 개시 이전에 호스트 제어기에게 알려지지 않는다. 그러나, 그 정보가 프로세싱 유닛(예컨대, PU1)에게 이용가능하게 되면, 외부 메모리로의 액세스는 다음과 같이 신속하게 수행될 수 있다. 우선, PU1는 메모리 액세스 유닛의 어떤 데이터 채널 Z를 경유하여 위치 (x,y)로부터 판독하기 위해 그 제어 포트를 통해 명령을 전송한다. 이 결과, (이 경우에, 데이터 채널 Z를 경유하여 위치 (x,y)로부터 판독되는) 이동 벡터에 관련된 어드레싱 및 모드 정보를 갖는 메모리 액세스 유닛(108)의 제어 레지스터(127)를 구성한다. 그 다음 판독 데이터는 메모리 액세스 유닛(108)에 의해 페치되고, 그 채널 Z을 통해 이용가능해 진다. 논리적 데이터 경로는 (예컨대, 외부 호스트 제어기에 의해) 메모리 액세스 유닛의 채널 Z와 PU(5) 사이에서 미리 프로그램되므로, 이동 벡터에 의해 지시된 이미지 블록은 그 경로를 통해 PU5로 라우트될 것이다. 그 후 PU5는, 미리 지시를 받은 바와 같이, 이 데이터를 소비하고, 이 경우에 이동 벡터에 기초하여 그리고 미리 프로그램된 임의의 알고리즘에 따라, PU5에 의해 생성되는 디코드된 매크로 블록을 포함하는 결과 데이터를 현재 프레임에 대한 외부 메모리에 기입한다.
일반적으로, 외부 메모리에 전송될 수 있는 어드레싱 정보를 하나 이상의 PU(104)가 제어하면, 프로세서에 대한 프로그래밍 자유도 및 유연성을 전반적으로 높일 수 있다. 하나 이상의 PU에 제어 포트들을 제공하는 것은 PU(104) 내에 포함 될 알고리즘의 논리적 복잡성의 증가를 허용하고, 따라서, 애플리케이션을 실행하는 보다 복잡한 태스크를 다룰 수 있는 호스트 제어기(도시되지 않음) 혹은 CPU(124)(도 1 참조)를 구성한다. 제어 포트의 추가는 데이터 포트 메쉬 배열의 이익에 불리하게 작용하지 않고, 이는 데이터 구동 아키텍처의 장점들(감소된 타이밍 이슈 및 개선된 전력 효율을 포함), 즉, 다수 PU의 병렬 프로세싱 능력, 및 PU 설계의 범위성(scalability) 및 모듈성(modularity)을 유지한다.
이제, 도 2를 참조하면, 메모리 인터페이스 회로(128)는 메모리 액세스 유닛(108), PU(104) 전체, 및 호스트 인터페이스(139)와 칩-상(on-chip)에 있을 수 있다. 대안적으로, 컴포넌트들은 다수-칩 패키지의 일부일 수 있고, 여기서, 예를 들어, 각 PU(104)는 별개의 칩 상에 있을 수 있다.
이제, 도 3을 참조하면, 상술한 바와 같은 데이터 구동 프로세서(304)를 포함하는 전자 시스템의 블록도가 도시된다. 시스템은 표시되거나 들리거나(예컨대, 비디오 혹은 오디오 파일 압축 해제), 저장되거나(예컨대, 저장에 앞서 압축됨), 또는 인쇄되는 것 중 어느 하나에 대비하여 이미지, 오디오, 또는 그 외의 미디어를 조작할 수 있는 임의의 형태의 컴퓨팅 혹은 통신 디바이스일 수 있다. 시스템은 프로세서(304)로 하여금 예를 들어 I/O 인터페이스(132)(도 1 참조)를 경유하여 주변 장치들(도시되지 않음)에 직접 결과 데이터를 제공하도록 하는 접속기(308)를 구비한다. 또한, 시스템은 직렬 혹은 병렬 컴퓨터 주변 버스일 수 있는 버스(314)를 경유하여 프로세서(304)와 통신하도록 결합되는 호스트 제어기(310)를 구비한다. 호스트 제어기(310)는 데이터 구동 아키텍처에 의한 실행에 특히 적합하고 프 로세서(304)에 의해 제공되는 것과 같은 태스크들을 포함하는, 위에서 주어진 비디오 디코딩 예 등의 애플리케이션 프로그램을 실행하도록 구성된다. 호스트 제어기(310)는 내장된 프로세서 및 관련 주 메모리(도시되지 않음)을 포함할 수 있다.
프로세서(304)에 의해 소비될 컨텐트 데이터는 외부 메모리(316)에 저장될 수 있고(예컨대, 전체 이미지 프레임), 상술한 데이터 포트 메쉬 접속을 경유하여 프로세서(304)의 개개의 프로세싱 유닛들에 의해 액세스될 수 있다. 프로세서(304) 내의 호스트 인터페이스 유닛(도시되지 않음)은 개개의 프로세싱 유닛에게 그들의 태스크를 지시하고, 데이터 채널을 통해 프로세싱 유닛으로부터 외부 메모리(316)로의 데이터 경로들을 생성하는, 호스트 제어기(310)로부터의 명령어들을 수신한다. 프로세서(304)는 또한 데이터 채널 어드레싱 정보를 프로세서(304)의 메모리 액세스 유닛에 기입하기 위해 사용된, 자신의 하나 이상의 프로세싱 유닛 내의 제어 포트들로 기능 향상된다. 도 3에 도시된 시스템은 전압 조정기(VR) 모듈(334)에 의해 외부 메모리(316), 호스트 제어기(310), 및 프로세서(304)에 전력을 공급하기 위해 결합되는 연료 셀 혹은 재충전가능한 배터리(330)를 구비한다. 물론, 연료 셀이나 재충전가능한 배터리(330)의 출력 전압이 외부 메모리, 프로세서, 및 호스트 제어기의 요구 조건들을 충분히 안정적으로 충족시킨다면, VR 모듈(334)은 필요하지 않을 수도 있다.
이제, 도 4를 참조하면, PU(104)의 블록도가 도시된다. 이 실시예에서, PU(104)는, 8개의 입력 데이터 포트(408) 중 어느 하나를 경유하여 수신된 착신 데이터에 대해 연산하는 명령어들을 실행하기 위해 프로그램될 수 있는 하나 이상의 코어 프로그래밍 엘리먼트(PE)들을 구비한다. 각 PE는 기준선 명령어 세트 아키텍처를 구현하는 ALU(arithmetic and logic unit)는 물론 명령어 메모리를 구비한다. 또한, 하나 이상의 PE(416)에는 MAC(multiply and accumulate function) 유닛이 추가될 수 있다. 추가적인 PE들은 하나 이상의 가속기 유닛(420)(예컨대, 2의 보수 곱셈(two's-complement multiplication) 및 애플리케이션-특정 디지털 필터링 등 특정한 동작들을 수행하기 위한), 및 PU(104) 내에 있는 데이터, 상수, 및 명령어의 국부적 저장을 위한 통합된 데이터 RAM을 갖는 메모리 명령 핸들러(MCH; 424)를 포함한다. 입력 PE(428)는 PU(104)의 입력 데이터 포트(408) 중 어느 하나로부터 데이터를 판독할 수 있는 한편, 출력 PE(432)는 다수의 출력 데이터 포트(436) 중 어느 하나에 결과 데이터를 기입할 수 있다. 한 세트의 범용 레지스터(440)는 미리 결정된 세마포어 프로토콜에 따라, PE들 사이에서 데이터가 교환되도록 한다. 다수의 범용 레지스터를 경유하여 함께 결합되는 다수의 프로세싱 엘리먼트들을 갖는 데이터 구동 디지털 신호 프로세서의 또 다른 예에 대해서는 바브로의 미국 특허 출원 공개 번호 US 2002/0147768을 참조한다. 도 4의 실시예에서, PU(104)의 각 코어 PE는 PU의 입력 및 출력 데이터 포트(408, 436) 쌍을 통해 동작 중인 데이터 경로와는 관계없이 명령어들을 실행할 수 있다. 다시 말해, 입력 데이터 포트(408), 입력 PE(428), 범용 레지스터(440), 출력 PE(432), 및 출력 데이터 포트(436) 간의 데이터 경로는 PE(412, 416), 가속기 유닛(420), 및 MCH(424)와는 관계가 없다. 입력 및 출력 데이터 포트(408, 436)에 관한 추가적인 상세는 도 5-7과 관련하여 후술된다.
이제, 도 5를 참조하면, 입력 데이터 포트(408)(도 4 참조)의 일부의 블록도가 도시된다. 입력 데이터 포트(408)는 그 외의 PU로부터 데이터를 수신하는 것이다. 입력 데이터 포트는 데이터와 함께 PU 외측으로부터 Request가 제공되는 요구/용인 프로토콜에 의해 통신한다. 입력 데이터 포트는 데이터가 수락될 때 Grant을 리턴한다. 이 실시예에서, 요구/용인 프로토콜은 입력 Clock 신호의 활성 에지(active edge)에서 요구 및 용인 신호가 활성일 때마다 데이터가 전송되도록 요구한다. 이 입력 데이터는 FIFO(first-in first-out) 버퍼(510)에 일시적으로 저장된다. 따라서 데이터는 소위 다수의 송신기(P0-P7) 중 하나로부터의 Grant 신호가 수신될 때까지 FIFO(510)에 저장된다. 다중화기(514)가 제공되어, 이들 중 하나, 이 경우에, 이 입력 데이터 포트(408)가 접속되는 디바이스로부터의 8개의 용인 신호들 중 하나를 선택한다. 입력 데이터 포트(408)는, 8개의 송신기 중 FIFO(510)로부터 데이터를 수신하는 송신기를 결정하기 위해, 다중화기(514)로의 선택 입력을 제어하는 레지스터 셋팅에 의해 프로그램될 수 있다. 이 레지스터 셋팅은 FIFO(510)로의 데이터 전송이 발생하기 전 또는 후에 달라질 수 있다.
이 예에서 8개의 가능한 용인 신호들은 해당 PU의 7개(총 8개 외에)의 출력 데이터 포트 더하기 해당 PU(104)의 입력 PE(428)를 나타낸다(도 4 참조). 8개의 데이터 포트가 단순히 입력 데이터 포트(408)와 관련된 것에 대응함에 따라 데이터가 포워드될 수 있는 출력 데이터 포트가 단지 7개 존재하므로, 이 경우에, 8개의 가능한 용인 신호들이 존재한다는 것에 주목한다. 도 5에 도시된 바와 같이, FIFO로부터 모두, 즉, PU(104) 내의 그 외의 디바이스들 - 이 경우에는 8개 - 로 수신 Data, Request, 및 Initialize 신호들을 전송하기 위한 경로들이 존재한다.
초기화(Init) 신호는 데이터 경로를 구성하는 각 데이터 포트를 통과한다. 따라서, 데이터 포트가 데이터의 소스 포인트에서 초기화되면, 초기화 신호는 데이터 경로인 전체 논리 접속을 통해 전파되고, 이로써 전체 데이터 경로를 초기화한다. 초기화 신호는 마치 데이터인 것처럼 등록되고 데이터 포트를 통과함으로써, 프로세서에서의 긴 논리 접속을 통한 전파 지연의 축적을 막는다. 데이터 및 요구 신호를 포함하는, 데이터 포트 인터페이스 신호 모두는 이러한 방식으로 다루어짐으로써, 논리 접속을 통한 큰 조합 지연을 막을 수 있다. 입력 데이터 포트의 패키지 핀들과 출력 데이터 포트의 패키지 핀들 사이에 설치될 논리 접속을 허용하는 입력 데이터 포트(408)의 또 다른 구현도 가능하다. 도 6은 출력 데이터 포트(436)의 일부에 대한 블록도를 도시한다.
도 6에 도시된 출력 데이터 포트(436)는 그 외의 PU(104)로 데이터를 송신하므로, “송신기” 포트로 불릴 수도 있다. 3개의 다중화기 세트(614)가 제공되어, PU의 외부에 전송될 Request, Data, 및 Init signals을 선택한다. 이 실시예에서, 각 다중화기(614)는 7개의 PU의 입력 데이터 포트 더하기 1개의 출력 PE(432)에 대응하는 8개의 입력을 갖는다(도 4 참조). 다시 한 번, 다중화기(614)로의 선택 입력은 데이터 전송이 발생한 이전 혹은 이후에 달라질 수 있는 레지스터 셋팅에 의해 제어될 수 있다.
선택된 Request, Data, 및 Init 정보는 FIFO(620) 내의 임시 기억장치 내에 위치한다. 위에서 도 5와 관련하여 설명된 입력 데이터 포트(408)의 경우에서와 같이, 출력 데이터 포트의 FIFO(620)는 PU 외부의 디바이스로부터의 수신된 Grant에 응답하여 버퍼된 Request, Data 및 Init 정보를 제공한다.
FIFO(510)와 FIFO(620)의 조합은 도 7에서와 같은 2-딥 FIFO(720)로 도시될 수 있다. 이 2-딥 FIFO(720)은 입력 데이터 포트 및 출력 데이터 포트로 이루어진, 소정의 PU를 통한 논리접 접속의 일부이다. 입력측에, data_in, request_in, 및 init_in이 수신되어 FIFO(720)에 저장되며, 이러한 세트의 입력 정보가 수락되면 grant_int이 시그널된다. FIFO(720)는 PU 외부의 디바이스로부터의 grant_out 신호의 수신에 응답하여, data_out, request_out 및 init_out를 전송하는 프로그램된 논리적 접속의 일부이다. 위에서 언급한 바와 같이, 이러한 인터페이스 신호들은 논리 접속을 통한 큰 조합 지연을 막는 방식으로 처리된다. 이는, 데이터 경로 라우팅에 관한 특별한 염려없이, 칩 상의 시스템 설계를 용이하게 한다. 데이터 포트들 간의 모든 라우팅은 상술한 바와 같이 각 데이터 포트 내에 등록되어 있는 간단한 지점-대-지점 접속들일 수 있다. 논리적 접속은 다중화기(514)(도 5) 및 다중화기(614)(도 6)에 대한 간단한 레지스터 셋팅에 의해 프로그램된다. 그러나, PU(104)를 통한 논리적 접속에 대한 그 외의 구현들도 가능할 수 있다.
이제, 도 8을 참조하면, 이 도면은 유연적인 데이터 구동 아키텍처에 적합한 일반화된 데이터 프로세싱 방법에 대한 흐름도를 도시한다. 동작은 블록 804에서 시작하고, 여기서, 제1 세트의 명령어 및 착신 데이터가 데이터 구동 프로세서의 제1 프로세싱 유닛(PU)에 공급된다. 위에서 제안한 바와 같이, 이러한 명령어들 및 착신 데이터(제1 PU에 도달하는 착신 데이터에 대한 데이터 경로는 물론)는 상 대적으로 낮은 속도로, 프로세서의 글로벌 제어 버스를 경유하여, 온-칩 CPU 또는 외부 호스트 제어기에 의해 편성 및 구성된다. 또한, 제1 PU에 대해 하나 이상의 제어 경로가 구성되어, 프로세서의 메모리 액세스 유닛에 메모리 채널 어드레싱 정보를 보낸다.
제1 PU가 착신 데이터에 대해 연산할 때, 제1 세트의 명령어들은 외부 메모리로부터의 판독 혹은 그로의 입력 중 어느 하나를 요구한다는 것을 인지한다. 따라서, 동작은 블록 808로 이어지고, 여기서, 제1 PU는 메모리 액세스 유닛을 요구(제어 경로를 통해)하여 소정의 메모리 채널 상의 데이터를 페치 혹은 기대한다. 프로세서의 제2 PU와 외부 메모리 사이의 논리적 데이터 경로(소정의 메모리 채널을 통한)가 미리 생성되어 외부 메모리 및 제2 PU 사이에 추가적인 데이터를 전송한다. 본원의 실시예에 따르면, 상술된 추가 제어 포트 구조가 사용되어, 제1 PU로 하여금 미리 프로그램된 외부 메모리와 제2 PU 사이의 데이터 경로를 통해, 전송될 데이터의 위치를 특정하도록 한다. 이 논리 데이터 경로는 각 프로세싱 유닛 내에 있는 개개의 프로그래밍 엘리먼트에 독립적인 데이터 포트 메쉬 배열을 통해 라우트될 수 있다.
예로서, 제1 PU는 제1 명령어 세트 내의 이미지 프로세싱 이동 벡터를 인지할 수 있다. 이러한 경우에, 추가 데이터는 외부 메모리에 기입될 것이고, 이동 벡터에 기초하여 제2 PU에 의해 생성될 매크로 블록을 포함한다. 오디오 압축과 같은, 그 외의 많은 유형의 데이터 구동 애플리케이션 또한 이러한 추가 능력으로터 이득을 얻을 수 있다.
도 9는 데이터 구동 프로세서를 위한 제어 포트 메쉬 배열에 대한 상위 레벨 블록도를 도시한다. 이 도면에서는, 이해를 용이하게 하기 위해, 제어 포트 메쉬 배열만 도시된다. 본원의 실시예에서, DMA 유닛은, DMA 채널이 명령을 초기화할 수 없다는 점에서 PU에 종속 장치(slaves)이고; 오히려, DMA 채널에 대한 모든 명령들은 PU의 노스 혹은 사우스 제어 포트 중 어느 하나에 의해 초기화된다. 이 예에서 각 PU는 노스, 이스트, 사우스, 및 웨스트로 라벨된 네 개의 제어 포트 세트들을 포함한다. 각각은 포트 0 및 포트 1을 갖는다. 예를 들어, E0가 명령들을 전송하는 동안 PU1의 E1 포트는 명령들을 수신한다(메쉬 배열 내의 제어 경로의 일부가 되도록 구성될 때). 지점-대-지점 버스 접속은 인접하는 PU로부터(혹은 PU 및 DMA 유닛으로부터)의 한 쌍의 제어 포트들에 의해 지원된다.
송신기 포트와 수신기 포트 사이의 지점-대-지점 접속(PU 외부)은 명령 부분 및 상태 부분을 갖는 병렬 버스를 사용하여 설치될 수 있다. 명령 부분은, 16비트 버스를 가질 수 있고, DMA 유닛의 특정 데이터 채널에 대해, DMA 유닛에 도착되는 구성 명령어들을 전송하기 위해 사용된다. 상태 버스는 데이터 채널의 상태를 명령 개시자로 다시 보내기 위해 사용되는 3비트를 구비할 수 있다. Initialize(Init) 신호의 사용에 더해, 상술한 데이터 포트 링크와 유사한, 요구 및 용인 시그널링 프로토콜이 사용될 수 있다. 완전한 명령의 전송은 2 클록 사이클을 취할 수 있다. 이제, 도 10을 참조하면, 제1 사이클에서 제어 워드(1004)가 전송되고, 그 다음으로 제2 사이클에서 제어 포트 데이터(control port_data) 워드(1008)가 전송되어 명령을 완성한다. 도 10에 도시된 바와 같이, 제어 워드는 그 들의 정확한 수신지에 명령을 라우팅하는데 있어 제어 포트들을 돕는 라우팅 정보(라우터 ID, RID)를 포함한다. 특히, 수신기 포트는 이 예에서 포트 0이나 포트 1 중 어느 하나를 특정하는 RID 비트에 기초하여 명령의 수신지를 결정함은 물론, 명령이 판독 혹은 기입 채널을 특정하는지 여부를 판정한다. 이 명령의 최종 수신지는 요구된 판독 혹은 기입 명령을 서비스하기 위한 데이터 채널(상술한 바와 같이, 데이터 포트를 통해 이용가능한)을 셋업할 DMA 유닛임을 상기한다. 포트 비트(RID#1)는 그것이 0 혹은 1 포트인지에 따라 송신기 포트내에 설치(hard-wired)될 수 있다. R/W 비트는 명령 개시자에 의해 구동되고 제어 경로 내의 모든 제어 포트들에 의해 달라지지 않고 통과될 것이다.
제어 워드(1004)는 또한 데이터 채널의 구성을 정의하기 위해 REG_SEL 비트, 이 경우에는 4를 포함한다. 예를 들어, 0000의 REG_SEL 값에 후속하는 제어 port_data 워드(1008)는 메모리 전송의 개시를 시그널링하기 위해 사용될 수 있다. 또 다른 명령은 판독 혹은 기입(CH_ADDRX 및 CH_ADDRY)을 위한 (x,y) 데이터 위치를 나타낼 수 있다. 여러 다른 유형의 명령들은 도 10에서 정의되고, 여기서 이들은 정지 및 비디오 이미지 프로세싱 애플리케이션에 특히 적합하다. 그 외의 애프리케이션들은 서로 다른 세트의 명령들을 가질 수 있지만, 대부분은, DMA 유닛으로 하여금 외부 메모리로부터 및 외부 메모리로 (소정의 데이터 채널과 관련된 별개의 데이터 경로를 사용하여) 컨텐트 데이터를 판독 혹은 기입하도록 하는 적어도 어떤 형태의 데이터 위치 혹은 어드레싱 정보를 포함할 것이다. 이 데이터 경로는, 예를 들어, 호스트 제어기에 의해, 미리 데이터 포트 메쉬 배열로 구성될 수 있음에 주목한다.
도 10을 참조하면, 수신기 포트는 제어 워드(1004) 및 제어 port_data 워드(1008)의 수신에 응답하여 상태 지시자(1012)를 보낼 수 있다. 이 예에서, 2개의 상황(condition), 즉, 유휴 타이머가 만료되거나, EOS(end of swath)에 도달하는 상황 중 하나가 발생할 때 상태 지시자가 송신되는다. 이러한 두 개의 상황 중 어느 것도 발생하지 않는다면, 명령 지시자는 어떠한 상태 지시도 수신하지 않을 것이다. 예를 들어, 최종 판독 혹은 기입 이후에, 소정 수의 클록 사이클 동안 메모리 판독 혹은 기입 활동이 존재하지 않고 EOS 상황이 존재하지 않는다면 유휴 타이머가 끝날 수 있다. 기입 상황에서, 채널에 의한 이전 판독 혹은 기입 이후에, 데이터 포트에서 이용가능하게 될 추가 컨텐트 데이터를 위해 소정 수의 클록에 걸쳐 DMA 채널이 대기한다면 유휴 타이머는 끝난다. 기입 상황에서, 소정 데이터 경로를 통해 PU로부터 수신될 추가 컨텐트 데이터를 위해 소정 수의 클록에 걸쳐 데이터 채널이 대기할 때 유휴 타이머는 끝난다. 판독 상태에서, 최종 컨텐트 데이터 워드가 소정 수의 클록 사이클에 걸쳐 (PU로 진행하는 중에) 데이터 채널 외부로 이동하면 유휴 타이머는 끝난다. 제어 포트들 사이에서 시그널링하기 위한 요구 및 용인 프로토콜을 정의하는 다른 방법들도 가능하다.
명령 개시자가 유휴 타이머가 끝난 상태를 수신한다면, 제어 포트 제어 레지스터(도시되지 않음) 내의 Init 비트를 선정된 값으로 프로그램할 수 있고, 이로써, 제어 경로와 관련된 특정한 DMA 채널 내와 제어 경로 내에 있는 모든 명령들을 클리어링한다는 것에 주목한다. 또한, 기입 데이터 채널에 대해 유휴 타이머가 끝 난 상태가 검출된다면, 명령 개시자는 데이터 포트 제어 레지스터 내의 Init 비트를 선정된 값으로 프로그램할 수 있고, 이로써, 기입 데이터 채널이 DMA 유닛의 대기열 내의 명령들에 의해 재구성되도록 할 수 있음은 물론, 데이터 포트 경로 내의 모든 컨텐트 데이터를 클리어링할 수 있다.
이제, 도 11을 참조하면, 노스 포트 N0 및 N1(도 9 참조) 중 하나의 경우에, 제어 포트에 대해 사용될 수 있는 중재자(arbiter)에 대한 간략화된 도면이 도시된다. 중재자(1104)는 송신기 내에 있고, 이 예에서, 관련 PU의 8개의 가능한 접속 경로(송신하기 위해 요구가 수신될 수 있는 6개의 제어 포트들, 판독 명령을 소싱할 수 있는 한 개의 입력 프로그래밍 엘리먼트(IPE), 및 기입 명령을 소싱할 수 있는 한 개의 출력 프로그래밍 엘리먼트(OPE)가 존재함)로부터의 요구들을 조정한다. 다른 실시예에서, 요구를 소싱할 수 있는 6개 미만 혹은 6개 초과의 제어 포트들이 존재할 수 있다.
이제, 도 12를 참조하면, 제어 포트 North0에 대한 선택 레지스터의 예가 도시된다. 이 예에서, 제어 포트 수신기 선택을 위해 사용되는 3 비트, 및 송신기 선택을 위한 3 비트가 존재한다. 수신기 선택 비트들은, 관련 PU의 디바이스가 노스 포트를 통해 도달하는 명령들을 수신한다는 것을 지시함으로써, 제어 포트를 프로그램한다. 유사하게, 송신기 선택 비트들은, 디바이스(위에서 언급한 가능한 8개로부터의)가 노스 포트를 통해 명령들을 송신할 수 있음을 판정한다. OPE로부터의 명령은 일반적으로 DMA 기입 채널로 보내지고, IPE로부터의 명령은 DMA 판독 채널로 송신되는다. 송신기(PU 외로 명령을 전송) 및 수신기(PU의 디바이스로 명령 을 라우트)의 역할을 하도록 제어 포트를 프로그래밍하는 다른 방법들도 가능하다.
요약하면, 광범위한 애플리케이션을 실행하기 위한 보다 효과적인 데이터 구동 프로세서에 대한 다양한 실시예들이 설명되었다. 앞선 설명에서, 본원은 특정한 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구 범위에서 설명하는 바와 같은 본원의 보다 넓은 취지 및 범위로부터 벗어나지 않고 다양한 수정 및 변경이 실시될 수 있다는 것이 명백할 것이다. 예를 들어, 도면에 도시된 프로세서는 6개 혹은 8개의 PU로 구성되지만, 메쉬 배열 내에서 서로 접속된, 2개 뿐인 PU 혹은 8개 이상의 PU를 갖는 아키텍쳐 역시, PU의 일부 혹은 전체에 제어 포트를 추가하는 것으로부터 이득을 얻을 수 있다. 따라서, 명세서 및 도면은 한정적 의미라기 보다는 예시적인 것으로 간주될 것이다.

Claims (29)

  1. 데이터 구동 프로세싱 방법으로서,
    제1 명령어 세트와 착신 데이터를 상기 착신 데이터에 대해 연산하는, 데이터 구동 프로세서의, 제1 프로세싱 유닛에게 제공하는 단계; 및
    상기 데이터 구동 프로세서의 제2 프로세싱 유닛과 외부 메모리 사이에 데이터를 전송하기 위한 데이터 경로를 구성하는 단계
    를 포함하고,
    상기 제1 프로세싱 유닛은, 상기 제1 명령어 세트가 외부 메모리로부터의 판독 및 외부 메모리로의 기입 중 어느 하나를 필요로 할 것이라는 인식에 응답하여, 상기 프로세서의 메모리 액세스 유닛에게 어드레싱 정보를 제공하여 상기 데이터 경로를 통한 상기 외부 메모리와 상기 제2 프로세싱 유닛 간의 추가 데이터의 전송을 가능하게 하는 방법.
  2. 제1항에 있어서, 상기 제1 프로세싱 유닛은 상기 제1 명령어 세트에서 이미지 프로세싱 이동을 인지하며, 상기 추가 데이터는 상기 외부 메모리에 기입되는 것이고 상기 이동 벡터에 기초하여 상기 제2 프로세싱 유닛에 의해 생성된 매크로 블록을 포함하는 방법.
  3. 제1항에 있어서, 상기 데이터 경로는 외부 호스트 제어기에 의해 구성되는 방법.
  4. 제1항에 있어서, 상기 제1 프로세싱 유닛은, 상기 전송이 판독 및 기입 중 어느 것인지에 대한 지시를 상기 메모리 액세스 유닛에 제공하는 방법.
  5. 데이터 프로세서로서,
    제1 DMA(direct memory access) 유닛; 및
    각각 복수의 데이터 포트를 구비하는 복수의 프로세싱 유닛
    을 포함하고,
    상기 데이터 포트들은 서로 결합되고, 상기 프로세싱 유닛들 중 어느 하나로부터 다른 것으로, 그리고 상기 프로세싱 유닛들 중 어느 하나로부터 상기 DMA 유닛으로 데이터가 흐르도록 프로그램가능하며,
    상기 프로세싱 유닛들 중 하나는, 소비될 데이터 중 하나와 상기 프로세싱 유닛들 중 하나에 의한 결과 데이터가 전송되는 DMA 채널을 설정하는 것에 관한 정보를 상기 DMA 유닛에 전송할 제어 포트를 구비하는 프로세서.
  6. 제5항에 있어서, 메모리 인터페이스 회로를 더 포함하고, 상기 DMA 유닛은 상기 메모리 인터페이스 회로를 통해 외부 메모리에 액세스하는 프로세서.
  7. 제6항에 있어서, 상기 메모리 인터페이스 회로는 상기 DMA 유닛, 상기 복수 의 프로세싱 유닛, 및 상기 호스트 인터페이스와 하나의 칩 상에 있는 프로세서.
  8. 제6항에 있어서, 상기 메모리 인터페이스 회로는 다이내믹 RAM인 외부 메모리와 인터페이스하도록 설계된 프로세서.
  9. 제5항에 있어서, 상기 복수의 프로세싱 유닛은 각각 복수의 사이드를 구비하는 본질적으로 동일한 유닛들이고, 각 사이드는 입력 포트와 출력 포트인 복수의 단방향 데이터 포트를 구비하는 프로세서.
  10. 제9항에 있어서, 상기 입력 포트는 착신 데이터를 상기 출력 포트들 중 어느 하나에 라우트하도록 프로그램가능한 프로세서.
  11. 제10항에 있어서, 상기 복수의 프로세싱 유닛 각각은 각 사이드에 입력 제어 포트와 출력 제어 포트를 포함하는 복수의 제어 포트들을 구비하고, 프로세싱 유닛의 상기 입력 제어 포트는 착신 명령 정보를 상기 프로세싱 유닛의 상기 출력 제어 포트들 중 어느 하나에 라우트하도록 프로그램가능한 프로세서.
  12. 제9항에 있어서, 외부 디바이스로의 인터페이스를 더 포함하고, 상기 프로싱 유닛들 중 하나의 상기 출력 포트들은, 상기 프로세싱 유닛들 중 바깥쪽 하나(outlying one)의 출력 포트들 중 일부가 상기 외부 디바이스 인터페이스에 결합되 는 것을 제외하고, 상기 프로세싱 유닛들 중 인접하는 하나의 입력 포트들에 결합되는 프로세서.
  13. 제9항에 있어서, 제2 DMA 유닛을 더 포함하고, 상기 복수의 프로세싱 유닛들 중 적어도 4개가 존재하고, 상기 4개의 프로세싱 유닛들 중 제1 및 제2 프로세싱 유닛의 노스 사이드(north side) 상의 데이터 포트들은 상기 제1 DMA에 결합되고, 상기 4개의 프로세싱 유닛들 중 제3 및 제4 프로세싱 유닛의 사우스 사이드(south side) 상의 데이터 포트들은 상기 제2 DMA 유닛에 결합되고, 상기 제1 및 제2 프로세싱 유닛의 사우스 사이드의 데이터 포트들은 상기 제3 및 제4 프로세싱 유닛의 노스 사이드의 데이터 포트들에 결합되는 프로세서.
  14. 제13항에 있어서, 외부 디바이스로의 인터페이스를 더 포함하고, 상기 프로세싱 유닛들의 이스트 및 웨스트 사이드(east and west sides)의 데이터 포트들 중 일부는 상기 외부 디바이스 인터페이스에 결합되는 프로세서.
  15. 제5항에 있어서, 상기 프로세싱 유닛들 중 하나로부터 외부 메모리로의 데이터 채널을 생성하기 위해 상기 데이터 포트들과 상기 DMA 유닛을 구성하는 명령어들을 판독 및 실행하는 CPU(central processing unit)를 더 포함하는 프로세서.
  16. 제5항에 있어서, 상기 프로세싱 유닛들 중 하나로부터 외부 메모리로의 데이 터 경로를 생성하기 위해 상기 데이터 포트들과 상기 DMA 유닛을 구성하는 명령어들을 외부 호스트 제어기로부터 수신하는 호스트 인터페이스 유닛을 더 포함하는 프로세서.
  17. 호스트 제어기;
    외부 메모리;
    상기 외부 메모리를 인터페이스하는 메모리 액세스 유닛과, 복수의 데이터 포트를 각각 구비하는 복수의 프로세싱 유닛 - 상기 데이터 포트들은 서로 결합되고 상기 프로세싱 유닛들 중 어느 하나로부터 다른 것으로 그리고 상기 프로세싱 유닛들 중 어느 하나로부터 상기 메모리 액세스 유닛으로 데이터의 흐름을 허용하도록 프로그램가능함 - 과, 데이터 채널을 통해 상기 프로세싱 유닛들 중 하나로부터 상기 외부 메모리로의 데이터 경로를 생성하기 위해 상기 데이터 포트들과 상기 메모리 유닛을 구성하는 명령어들을 상기 외부 호스트 제어기로부터 수신하는 호스트 인터페이스 유닛을 구비하는 데이터 구동 프로세서; 및
    상기 외부 메모리, 상기 호스트 제어기, 및 상기 데이터 구동 프로세서에 전력을 공급하기 위해 결합된 재충전가능한 배터리 및 연료 셀 중 하나
    를 포함하는 시스템.
  18. 제17항에 있어서, 상기 호스트 제어기는 내장된 프로세서 및 그와 관련된 주 메모리를 포함하는 시스템.
  19. 제17항에 있어서, 인접하는 프로세싱 유닛들로부터의 각 데이터 포트 쌍의 결합은 지점-대-지점(point-to-point), 단방향 접속인 시스템.
  20. 제19항에 있어서, 상기 프로세싱 유닛들 각각은 해당 프로세싱 유닛의 입력 데이터 포트를 통해 수신된 착신 데이터에 대해 연산하는 명령어들을 실행하도록 프로그램될 수 있는 코어 프로그램 엘리먼트(PE), 해당 프로세싱 유닛의 복수의 입력 데이터 포트들 중 어느 하나로부터 데이터를 판독할 수 있는 입력 PE, 및 해당 프로세싱 유닛의 복수의 출력 데이터 포트들 중 어느 하나에 데이터를 기입할 수 있는 출력 PE를 구비하는 시스템.
  21. 제20항에 있어서, 각 프로세싱 유닛의 상기 코어 PE는 해당 프로세싱 유닛의 상기 입력 및 출력 데이터 포트 쌍을 통해 동작하는 데이터 경로에 관계없이 그 명령어들을 실행할 수 있는 시스템.
  22. 제17항에 있어서, 상기 제어 포트를 통해 송신되는 데이터 위치 정보는 이미지 데이터의 블록의 사이즈 및 표시 위치에 관한 정보를 포함하는 시스템.
  23. 외부 메모리;
    상기 외부 메모리에 인터페이스하는 메모리 액세스 유닛과, 각각 복수의 데 이터 포트를 갖는 복수의 프로세싱 유닛 - 상기 데이터 포트들은 서로 결합되고 상기 프로세싱 유닛들 중 어느 하나로부터 다른 것으로 그리고 상기 프로세싱 유닛들 중 어느 하나로부터 상기 메모리 액세스 유닛으로 데이터의 흐름을 허용하도록 프로그램가능함 - 과, 데이터 채널을 통해 상기 프로세싱 유닛들 중 하나로부터 상기 외부 메모리로의 데이터 경로를 생성하기 위해 상기 데이터 포트들 및 상기 메모리 유닛을 구성하는 명령어들을 수신 및 실행하는 CPU(central processing unit)를 구비하는 데이터 구동 프로세서 - 상기 프로세싱 유닛들 중 하나는 상기 메모리 액세스 유닛에 데이터 채널 정보를 기입하기 위해 사용하는 제어 포트를 구비함 - ; 및
    상기 외부 메모리 및 상기 데이터 구동 프로세서에 전력을 공급하기 위해 결합된 재충전가능한 배터리 및 연료 셀 중 하나
    를 포함하는 시스템.
  24. 제17항에 있어서, 상기 프로세싱 유닛들 중 하나는 메쉬 배열로 서로 접속된 복수의 제어 포트를 구비함으로써, 판독 및 기입 명령 중 하나, 어드레스, 및 메모리 액세스 유닛 채널 식별자를 포함하는 상기 데이터 채널 정보는 상기 프로세싱 유닛들 중 어느 하나로부터 발신하여 상기 메쉬 배열로 프로그램된 논리적 제어 채널을 통해 상기 메모리 액세스 유닛으로 라우트될 수 있는 시스템.
  25. 제23항에 있어서, 인접하는 프로세싱 유닛들로부터의 각 데이터 포트 쌍의 결합은 지점-대-지점, 단방향 접속인 시스템.
  26. 제23항에 있어서, 상기 프로세싱 유닛들 각각은, 서로 결합되고 데이터 채널 정보가 상기 프로세싱 유닛들 중 어느 하나로부터 상기 메모리 액세스 유닛으로 전송되도록 프로그램가능한 복수의 제어 포트를 구비하는 시스템.
  27. 상위 레벨 판독 및 기입 명령들을 하위 레벨 메모리 액세스 명령들로 변환하는 수단;
    데이터를 소비하는 복수의 수단;
    상기 복수의 데이터 소비 수단 중 어느 하나에 데이터를 공급하고 상기 복수의 데이터 소비 수단 중 어느 하나로부터 데이터를 수취하는 프로그램가능한 데이터 경로들을 구현하는 수단;
    상기 프로그램가능한 데이터 경로 구현 수단, 상기 복수의 데이터 소비 수단, 및 상기 상위 레벨 판독 및 기입 변환 수단을 구성하기 위한 명령어들을 상기 복수의 데이터 소비 수단 이외의 것으로부터 수신하는 수단; 및
    상기 복수의 데이터 소비 수단 중 하나로부터 상기 상위 레벨 판독 및 기입 변환 수단으로 상위 레벨 판독 및 기입 명령들을 전송하기 위한 프로그램가능 제어 경로를 구현하는 수단
    을 포함하는 데이터 프로세서.
  28. 제27항에 있어서, 상기 하위 레벨 메모리 액세스들이 외부 메모리의 타이밍 요구 조건과 신호 레벨을 충족시키도록 보장하는 수단을 더 포함하는 프로세서.
  29. 제27항에 있어서, 상기 데이터 프로세서를 확장하는 수단을 더 포함하는 프로세서.
KR1020057025277A 2003-06-30 2004-06-18 데이터 구동 아키텍처 메쉬 어레이에서의 메모리 액세스디바이스 제어 KR100818818B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/611,377 US7827386B2 (en) 2003-06-30 2003-06-30 Controlling memory access devices in a data driven architecture mesh array
US10/611,377 2003-06-30

Publications (2)

Publication Number Publication Date
KR20060040610A true KR20060040610A (ko) 2006-05-10
KR100818818B1 KR100818818B1 (ko) 2008-04-02

Family

ID=33541305

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057025277A KR100818818B1 (ko) 2003-06-30 2004-06-18 데이터 구동 아키텍처 메쉬 어레이에서의 메모리 액세스디바이스 제어

Country Status (8)

Country Link
US (1) US7827386B2 (ko)
EP (1) EP1639496A2 (ko)
JP (2) JP4430671B2 (ko)
KR (1) KR100818818B1 (ko)
CN (1) CN100452018C (ko)
MY (1) MY147182A (ko)
TW (1) TWI266997B (ko)
WO (1) WO2005006208A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519488B2 (en) 2011-07-25 2016-12-13 Samsung Electronics Co., Ltd. External intrinsic interface

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330060B1 (en) * 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
KR100640885B1 (ko) * 2004-01-27 2006-11-02 엘지전자 주식회사 듀얼 비디오 디코딩을 위한 비디오 버퍼 제어 장치
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
KR100874169B1 (ko) 2007-02-02 2008-12-15 엠텍비젼 주식회사 프로세서간 커맨드를 직접 전달하는 듀얼 포트 메모리 및이를 수행하기 위한 방법
US8756482B2 (en) 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US9118927B2 (en) 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US7669036B2 (en) * 2007-06-14 2010-02-23 Qualcomm Incorporated Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication
US8873625B2 (en) 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
JP2009140062A (ja) * 2007-12-04 2009-06-25 Hitachi Ltd ストレージ装置とストレージシステム及びパス情報設定方法
US8078829B2 (en) * 2007-12-12 2011-12-13 Itt Manufacturing Enterprises, Inc. Scaleable array of micro-engines for waveform processing
US9501448B2 (en) 2008-05-27 2016-11-22 Stillwater Supercomputing, Inc. Execution engine for executing single assignment programs with affine dependencies
EP2304577B1 (en) * 2008-05-27 2018-07-04 Stillwater Supercomputing, Inc. Execution engine
US9330028B2 (en) * 2014-03-27 2016-05-03 Intel Corporation Instruction and logic for a binary translation mechanism for control-flow security
JP6503945B2 (ja) 2015-07-13 2019-04-24 富士通株式会社 情報処理装置、並列計算機システム、ファイルサーバ通信プログラム及びファイルサーバ通信方法
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
GB201607981D0 (en) * 2016-05-06 2016-06-22 Vicentra B V Communication handling
KR102680418B1 (ko) * 2016-11-29 2024-07-03 삼성전자주식회사 컨트롤러 및 컨트롤러와 불휘발성 메모리 장치들을 포함하는 스토리지 장치
KR102400105B1 (ko) * 2017-07-25 2022-05-19 삼성전자주식회사 리플 보상기, 이를 포함하는 데이터 구동 회로 및 반도체 장치
AU2019428076B2 (en) 2019-02-06 2022-11-03 Fermat International, Inc. Analytics, algorithm architecture, and data processing system and method

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0646412B2 (ja) * 1987-07-29 1994-06-15 日本電気株式会社 デ−タフロ−プロセツサ
JPH0646413B2 (ja) * 1987-08-10 1994-06-15 日本電気株式会社 デ−タ処理プロセッサ
JPH01320564A (ja) 1988-06-23 1989-12-26 Hitachi Ltd 並列処理装置
US5522083A (en) * 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
EP0428770B1 (de) * 1989-11-21 1995-02-01 Deutsche ITT Industries GmbH Datengesteuerter Arrayprozessor
JP2766404B2 (ja) * 1991-02-12 1998-06-18 三菱電機株式会社 データ駆動形マイクロプロセッサ
US5586281A (en) * 1992-10-27 1996-12-17 Sharp Kabushiki Kaisha Data driven type information processing apparatus
JP3230898B2 (ja) * 1993-06-02 2001-11-19 シャープ株式会社 データ駆動型情報処理システム
US6073185A (en) * 1993-08-27 2000-06-06 Teranex, Inc. Parallel data processor
JP3308770B2 (ja) * 1994-07-22 2002-07-29 三菱電機株式会社 情報処理装置および情報処理装置における計算方法
JPH08249306A (ja) * 1995-03-09 1996-09-27 Sharp Corp データ駆動型情報処理装置
FR2770665B1 (fr) * 1997-11-06 2002-12-20 Alsthom Cge Alkatel Dispositif d'echange entre unites de traitement d'informations a processeurs interconnectes par un bus commun
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
US6260082B1 (en) 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
EP1193607B1 (en) * 2000-09-27 2005-03-30 Texas Instruments Incorporated Apparatus and method for the exchange of signal groups between a plurality of components in a digital signal processor having a direct memory access controller
US7178009B2 (en) 2001-04-04 2007-02-13 Intel Corporation Different register data indicators for each of a plurality of central processing units
US6754763B2 (en) * 2001-07-30 2004-06-22 Axis Systems, Inc. Multi-board connection system for use in electronic design automation
US7889951B2 (en) 2003-06-19 2011-02-15 Intel Corporation Processor to processor communication in a data driven architecture
US20040257372A1 (en) 2003-06-19 2004-12-23 Lippincott Louis A. Communication ports in a data driven architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519488B2 (en) 2011-07-25 2016-12-13 Samsung Electronics Co., Ltd. External intrinsic interface
US10102005B2 (en) 2011-07-25 2018-10-16 Samsung Electronics Co., Ltd. External intrinsic interface

Also Published As

Publication number Publication date
MY147182A (en) 2012-11-14
KR100818818B1 (ko) 2008-04-02
WO2005006208A2 (en) 2005-01-20
CN100452018C (zh) 2009-01-14
JP2007524142A (ja) 2007-08-23
TW200506640A (en) 2005-02-16
JP2009238252A (ja) 2009-10-15
US7827386B2 (en) 2010-11-02
EP1639496A2 (en) 2006-03-29
WO2005006208A3 (en) 2005-10-27
TWI266997B (en) 2006-11-21
JP5301381B2 (ja) 2013-09-25
JP4430671B2 (ja) 2010-03-10
US20040268088A1 (en) 2004-12-30
CN1813250A (zh) 2006-08-02

Similar Documents

Publication Publication Date Title
JP5301381B2 (ja) データドリブン型アーキテクチャメッシュアレイ中のメモリアクセスデバイス制御
US20060143341A1 (en) Supercharge message exchanger
US20090089515A1 (en) Memory Controller for Performing Memory Block Initialization and Copy
US9507753B2 (en) Coarse-grained reconfigurable array based on a static router
EP1535169B1 (en) Improved inter-processor communication system for communication between processors
US20090006296A1 (en) Dma engine for repeating communication patterns
TWI647571B (zh) 萬用串列匯流排集線器
US20090013397A1 (en) Processor communication tokens
CN116880773B (zh) 一种内存扩展装置及数据处理方法、系统
CN115033188B (zh) 一种基于zns固态硬盘的存储硬件加速模块系统
US11797311B2 (en) Asynchronous pipeline merging using long vector arbitration
CN101004674B (zh) 数据处理系统和包括数据处理系统的高清晰度电视机
US8495345B2 (en) Computing apparatus and method of handling interrupt
JP2004062900A (ja) バス帯域幅を増加させるためのメモリコントローラ、これを利用したデータ伝送方法及びこれを備えるコンピュータシステム
US8139601B2 (en) Token protocol
CN117033275B (zh) 加速卡间的dma方法、装置、加速卡、加速平台及介质
CN111078286B (zh) 数据通信方法、计算系统和存储介质
US20090013331A1 (en) Token protocol
JPH09319693A (ja) データ転送装置および並列コンピュータシステム
CN117851313A (zh) 一种适用于片上网络架构芯片的dma控制系统
US7984204B2 (en) Programmable direct memory access controller having pipelined and sequentially connected stages
CN117908959A (zh) 用于执行原子操作的方法及其相关产品
US8601197B2 (en) Microcontroller including flexible connections between modules
CN112740192A (zh) 大数据运算加速系统及数据传输方法

Legal Events

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

Payment date: 20130228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee