KR100818819B1 - 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리명령 핸들러 - Google Patents

데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리명령 핸들러 Download PDF

Info

Publication number
KR100818819B1
KR100818819B1 KR1020057024970A KR20057024970A KR100818819B1 KR 100818819 B1 KR100818819 B1 KR 100818819B1 KR 1020057024970 A KR1020057024970 A KR 1020057024970A KR 20057024970 A KR20057024970 A KR 20057024970A KR 100818819 B1 KR100818819 B1 KR 100818819B1
Authority
KR
South Korea
Prior art keywords
memory
cluster communication
memory address
data
communication registers
Prior art date
Application number
KR1020057024970A
Other languages
English (en)
Other versions
KR20060024444A (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 KR20060024444A publication Critical patent/KR20060024444A/ko
Application granted granted Critical
Publication of KR100818819B1 publication Critical patent/KR100818819B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)

Abstract

화상 프로세싱 시스템에 이용되기 위한 화상 신호 프로세서가 개시된다. 화상 신호 프로세서는 데이터를 저장하기 위한 로컬 메모리와, 복수의 메모리 어드레스 생성기들을 갖는 메모리 명령 핸들러를 포함한다. 각각의 메모리 어드레스 생성기는 로컬 메모리에 대한 메모리 어드레스를 생성하고 화상 프로세싱 태스크를 돕기 위해 메모리 어드레스에 위치된 로컬 어드레스의 데이터에 대하여 동작을 수행하기 위한 명령을 해석한다.
화상 프로세싱 시스템, 화상 신호 프로세서, 로컬 메모리, 메모리 명령 핸들러

Description

데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리 명령 핸들러{MEMORY COMMAND HANDLER FOR USE IN AN IMAGE SIGNAL PROCESSOR HAVING A DATA DRIVEN ARCHITECTURE}
본 발명의 실시예들은 화상 프로세싱 분야에 관한 것이다. 더 구체적으로, 본 발명의 실시예들은 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리 명령 핸들러에 관한 것이다.
일반적으로, 이미지 프로세싱은 포토카피, 스캔된 화상, 사진, 비디오 등과 같은 2차원 화상들의 도메인에 대한 신호 프로세싱 기술의 응용이다. 전형적으로, 화상 프로세싱은 화상을 분석 및 조작하는 것과 관련되고 전자적 수단을 이용하여 수행된다. 화상 프로세싱은 일반적으로 세가지 동작들, 즉 광 스캐너 등과 같은 디바이스를 이용하여 또는 어떤 다른 타입의 디바이스(예를 들면, 디지털 카메라, 디지털 캠코더 등)를 통해 직접 화상을 임포트하는 동작; 소정의 방식으로 화상을 조작 또는 분석하는 동작; 마지막으로 결과를 출력하는 동작을 수반한다.
비록 항상 그러한 것은 아니지만, 많은 경우에, 화상은 특정한 또는 사전 프로그램된 방식으로 전자 수단에 의해 조작 또는 분석된다. 이 단계에서, 화상 인핸스먼트 및 데이터 압축 등과 같은 기술이 이용될 수 있다. 예를 들어, 화상은 사람의 눈에 보이지 않는 패턴들을 찾기 위해 분석 또는 인핸스될 수 있다. 화상의 분석은 구조, 명암, 컬러 및 사람의 눈에 의해 인식될 수 없는 관계를 식별할 수 있는 기술들을 이용할 수 있다. 이러한 방식으로, 화상 프로세싱 기술은 예를 들면 법의학적으로 문제들을 식별하는데 이용될 수 있다. 다른 예로서, 화상 프로세싱 기술들은 위성 사진으로부터 기상 지도를 생성하는데에도 이용될 수 있다. 더 일반적으로, 화상 프로세싱은 디지털 카메라 등과 같은 기기 내에 스캔된 또는 그러한 기기로 촬상된 비트맵 그래픽 포맷의 화상들을 처리할 수 있으며, 그런 다음 분석, 조작, 인핸스 등을 할 수 있다. 또한, 종종 화상은 이전에 스캔된 또는 비디오 소스로부터 입력된 손상된 화상들을 다듬는 등의 화상 프로세싱 기술들에 의해 향상된다.
한가지 특별한 예로서, 문서 이미징 애플리케이션에서 화상 프로세싱은 전형적으로 고성능의 고정-기능 ASICs(Application Specific Integrated Circuits)에 의해 처리되어 왔다. 그러나, 이 고정-기능 ASICs은 화상 프로세싱 태스크에서 거의 유연성을 제공하지 않는다. 반면에, 프로그래머블 솔루션(예를 들면, FPGAs(Field Programable Gate Arrays), DSPs(Digital Signal Processors) 등)은 화상 프로세싱 태스크에 더 많은 융통성을 제공하지만, 이 애플리케이션들이 경쟁력 있게 하고 널리 이용되기 위해 요구되는 가격 대 성능 특성을 제공하지 않는다. 또한, 입수가능하고 프로그램가능하고 스케일링이 가능한 솔루션의 부족 때문에, 상이한 성능 세그먼트들에 걸친 제품들이 공통의 플랫폼에 표준화되지 않았다.
도 1은 본 발명의 일 실시예에 따른, 화상 프로세싱용 시스템 구성의 예를 도시한 블럭도.
도 2는 본 발명의 일 실시예에 따른, 화상 신호 프로세서(Image Signal Processor: ISP)용 아키텍처의 예를 도시한 블럭도.
도 3은 본 발명의 일 실시예에 따른, 복수의 클러스터 통신 레지스터들(Cluster Communication Registers: CCRs)을 포함하는 공유 메모리의 예를 도시한 블럭도.
도 4는 본 발명의 일 실시예에 따른, 메모리 명령 핸들러를 도시한 블럭도.
도 5는 본 발명의 일 실시예에 따른, 클러스터 통신 레지스터들(CCRs)에 맵핑된 메모리 어드레스 생성기(Memory Address Generators: MAGs)의 예를 도시한 도면.
도 6은 본 발명의 일 실시예에 따른, 메모리 어드레스 생성기 내에서 이용될 수 있는 다양한 레지스터들을 나타내는 블럭도.
도 7은 본 발명의 일 실시예에 따른, 메모리 어드레스 생성기들(MAGs) 각각에 의해 지원될 수 있는 명령들의 예를 리스트한 도면.
도 8은 본 발명의 일 실시예에 따른, 명령들을 인코딩하는 방법의 일 예를 도시한 도면.
다음의 설명에서, 본 발명의 다양한 실시예들이 상세히 설명될 것이다. 그러나, 그러한 상세한 내용들은 본 발명의 이해를 용이하게 하고 본 발명을 채용하기 위한 바람직한 실시예들을 설명하기 위해 포함된다. 그러한 상세한 내용들은 설명된 특정 실시예들에 본 발명을 제한하려는 것이 아닌데, 그 이유는 본 발명의 범위 내에 포함되는 다른 변형들이나 실시예들이 가능하기 때문이다. 또한, 다양한 상세한 내용들이 본 발명의 실시예들의 완전한 이해를 제공하기 위해 설명되었지만, 본 발명을 실시하기 위해 이러한 특정한 상세한 사항들은 필요하지 않다는 것을 당업자는 잘 알 것이다. 다른 예들에서는, 공지된 방법, 데이터 타입, 프로토콜, 프로시저, 컴포넌트, 전기적 구조 및 회로 등과 같은 상세한 내용들은 본 발명을 모호하게 만들지 않기 위해 자세히 설명되지 않거나 블럭도 형태로 도시된다. 또한, 본 발명의 실시예들은 특정 실시예들로 설명될 것이지만, 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 또는 그 조합으로 실시될 수 있다.
본 발명의 실시예들은 화상 프로세싱 분야에 관한 것이다. 더 구체적으로, 본 발명의 실시예들은 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리 명령 핸들러에 관한 것이다. 보다 더 구체적으로, 본 발명의 실시예들은 상이한 화상 프로세싱 태스크들을 핸들링하고 하나의 명령을 이용하여 다수의 파라미터들을 제어하기 위한 어드레스 생성 디바이스로서 기능하는 메모리 명령 핸들러(Memory Command Handler: MCH)를 갖는 화상 프로세서 내에서 이용되기 위한 화상 신호 프로세서(ISP)에 관한 것이다. 또한, 메모리 명령 핸들러는 예를 들면 2차원 서브-샘플링된 어레이들에 유지된 데이터의 자동적인 공급을 가능하게 해주는 복수의 메모리 어드레스 생성기들(MAGs)을 이용함으로써 강력한 어드레싱 기능들을 포함한다.
바람직하게, 그의 강력한 어드레싱 기능들과 관련하여 데이터 구동 아키텍처를 이용하는 메모리 명령 핸들러는 화상 프로세싱 태스크들을 효율적으로 관리하기 위해 메모리 어드레스 생성기들 내의 파라미터들을 제어하기 위해 이용될 수 있다. 예를 들어, 전형적으로, 화상 프로세싱 태스크들과 같은 데이터 플로우 애플리케이션에서, 지령들의 매우 작은 세트가 많은 데이터 스트림들에 작동하기 위해 효율적으로 이용될 수 있다. 본 발명의 실시예들은 화상 프로세싱 애플리케이션들의 효율을 최대화하기 위해 최적화된 아키텍처들과 관련된다.
도 1은 본 발명의 일 실시예에 따른 화상 프로세싱용 시스템 구성(100)의 예를 도시한 블럭도이다. 시스템 구성(100)은 서로 연결된 복수의 개별적인 화상 신호 프로세서들(ISPs)(104)을 갖는 적어도 하나의 화상 프로세서(102)를 포함한다. 당업계에 공지되어 있는 바와 같이, 화상 프로세서들은 전형적으로 다수의 개별적인 화상 신호 프로세서들을 포함한다.
그러나, 본 발명의 실시예들에 따르면, 화상 프로세서(102)는 아래에 설명되는 바와 같이, 데이터가 구동되는 공유 레지스터 아키텍처를 구현한다. 본 발명의 일 실시예에서, 화상 신호 프로세서들(ISPs)(104) 사이의 데이터 경로들은 16비트 폭일 수 있고, 약 266MHz의 코어 주파수에서 작동할 수 있다. 앞서 논의된 바와 같이, 전형적으로 데이터 플로우 애플리케이션에서, 지령들의 매우 작은 세트가 많은 데이터 스트림들에 작동한다. 본 발명의 일 실시예에 따른 시스템 구성(100)은 이러한 타입의 화상 프로세싱 데이터 플로우 애플리케이션들의 최대 성능을 제공하기 위해 최적화된다. 일 실시예에서 화상 프로세서(102)는 프로그램 가능한 포트들을 통해 서로 연결되는 여덟개의 화상 신호 프로세서들(ISPs)(104)을 포함할 수 있다. 일 실시예에서, 프로그램 가능한 포트들은 동일한 포트들일 수 있다.
아래에 설명되는 바와 같이, 시스템 구성(100)은 다른 디바이스들(예를 들면, 입력 픽셀 스트림을 생성할 수 있는 다른 화상 프로세싱 칩들이나 디바이스들)로부터의 입력 픽셀 스트림(105)에 대해 이미지 프로세싱 태스크를 수행하기 위해 고도로 스케일링 가능하고 프로그램 가능하다.
또한, 일 실시예에 있어서, 메모리 디바이스들(106, 107)은 화상 프로세서(102)에 연결될 수 있다. 일 실시예에서, 메모리 디바이스들(106, 107)은 더블 데이터 레이트(Double Data Rate: DDR) 동기식 다이내믹 랜덤 액세스 메모리들(Synchronous Dynamic Random Access Memories: SDRAMs)일 수 있다. 일 실시예에서, 이 DDR SDRAM 디바이스들은 초당 1Gbyte 이상의 데이터 이동 대역폭을 제공할 수 있다. 이 데이터 플로우 대역폭은 화상 신호 프로세서들(104)의 프로세싱 성능과 밸런스될 수 있다.
도 1에 도시된 바와 같이, 시스템 구성(100)은 버스(103)에 의해 화상 프로세서(102)에 접속된 적어도 하나의 호스트 프로세서(111), 입출력(I/O) 인터페이스(133), 네트워크 인터페이스(134)를 포함한다. 버스(103)는 예를 들면 주변 컴포넌트 인터페이스(Peripheral component interface: PCI) 타입의 버스일 수 있다. 시스템 메모리 디바이스들(113)은 또한 프로세서(111)에 연결될 수 있다. 또한, 시스템 구성(100)은 예를 들면 코프로세서(co-processor), 모뎀 등과 같은 부가적인 컴포넌트들(도시되지 않음)을 포함할 수 있으나, 이것은 시스템 구성의 단지 매우 기본적인 예일 뿐이다. 앞서 논의된 바와 같이, 호스트 프로세서(111)는 버스(103)에 의해 호스트 프로세서 및 앞서 설명된 다른 컴포넌트들에 연결될 수 있다. 본 명세서의 목적상, 프로세서 또는 CPU라는 용어는 지령들의 시퀀스를 실행할 수 있는 임의의 머신을 일컫고, 범용 마이크로 프로세서, 특수 목적 마이크로프로세서, ASICs(Application Specific Integrated Circuits), 멀티-미디어 콘트롤러, 마이크로프로세서, 마이크로콘트롤러 등을 포함할 수 있지만, 이들로만 한정되지는 않는다. 일 실시예에서, 프로세서(111)는 INTEL ARCHITECTURE 지령 세트를 실행할 수 있는 범용 마이크로프로세서일 수 있다. 예를 들어 프로세서(111)는 PENTIUM 클래스 프로세서들 중의 하나이거나 CELERON 클래스 프로세서들 중 하나일 수 있다.
시스템 메모리 디바이스(113) 뿐만 아니라 메모리 디바이스(106, 107)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory), 더블 데이터 레이트(DDR) SDRAM 또는 DRAM 등과 같은 디지털 정보를 저장하도록 적응된 임의의 메모리 디바이스를 포함할 수 있다. 따라서, 일 실시예에서, 메모리 디바이스(106, 107)와 시스템 메모리 디바이스(113)는 휘발성 메모리를 포함한다. 또한, 메모리 디바이스(106, 107)와 시스템 메모리 디바이스(113)는 또한 ROM(Read-Only Memory) 등과 같은 불휘발성 메모리로 구성되든가 이를 포함할 수 있다는 것을 알 것이다.
또한, 시스템 구성(100)은 I/O 디바이스들(139)과 인터페이스하기 위한 I/O 인터페이스 및 포트들(133)을 포함할 수 있다. I/O 인터페이스(133)는 PCI 슬롯, PCI 에이전트, USB(Universal Serial Bus) 인터페이스, IEEE(Institute of Electrical Electronics Engineering) 1394 인터페이스, 패러렐 포트 인터페이스, 전화 인터페이스, IDE(Integrated Drive Electronic) 인터페이스(예를 들면, 하드 드라이브), 고속 시리얼 인터페이스 및 당업자가 잘 알 수 있는 바와 같이 다른 타입의 인터페이스를 포함하지만, 이들로 한정되는 것은 아니다. 시스템 구성(100)에 적당한 I/O 인터페이스를 통해 접속될 수 있는 광범위하게 다양한 상이한 타입의 I/O 디바이스들이 있다는 것을 또한 알아야 할 것이다. I/O 디바이스들의 예로는 적당한 I/O 기능들을 수행하기 위한 임의의 I/O 디바이스를 포함할 수 있다. 예를 들어, I/O 디바이스들은 모니터, 키보드, 모뎀, 프린터, 스토리지 디바이스(예를 들면, CD ROM(Compact Disk ROM), DVD(Digital Video Disk), 하드 드라이브, 플로피 드라이브 등), 또는 임의의 다른 타입의 I/O 디바이스(예를 들면, 입력 디바이스, 마우스, 트랙볼, 포인터 디바이스), 미디어 카드(예를 들면, 오디오, 비디오 그래픽 등)를 포함할 수 있다. 특별히, I/O 디바이스들은 전화, 팩스 머신, 스캐너, 포토카피 머신, 디지털 카피어, 비디오 카메라, 디지털 카메라, 멀티-기능 주변 장치 등 및 화상 프로세서에의 연결을 위해 적합한 시스템 구성(100)을 네트워크(140)에 연결하기 위해 제공될 수 있다. 또한, 네트워크 인터페이스(134)는 시스템 구성(100)을 네트워크(140)에 연결하도록 제공될 수 있다. 네트워크 인터페이스(134)는 당업계에 공지된 바와 같이, 표준 및 적합한 네트워크 프로토콜을 이용하여 네트워크(140)(예를 들어, LAN(Local Area Network), WAN(Wide Area Network), 인터넷 등)와 통신하기 위해 제공된다.
예시적인 시스템 구성(100)의 화상 프로세서(102)는 마이크로코드 다운로딩, 레지스터 구성, 레지스터 초기화를 위해, 그리고 화상 프로세싱을 위한 화상 데이터의 업로딩 및 다운로딩을 위해 외부 호스트 프로세서(111) 및 버스(103)를 이용할 수 있다. 앞서 설명된 인터페이스들 중 임의의 것으로부터 판독된 데이터는 화상 프로세서(102)의 화상 신호 프로세서들(104)에 의해 처리될 수 있다. 일 실시예에서, 화상 신호 프로세서(104)는 화상 프로세서(102)를 거쳐 빠르고 융통성 있는 데이터의 이동을 용이하게 하기 위해 4채널(quad) 포트들을 통해 공유되는 메시 토폴로지 내에서 서로 연결될 수 있다. 일 예에서, 화상 프로세서(102)는 여덟개 화상 프로세서들(ISPs)(104)을 포함할 수 있다. 또한, 글로벌 버스(123)은 PCI 버스(103)에 연결되고, 화상 프로세서(102)의 화상 신호 프로세서들(104) 모두 및 화상 프로세서(102)의 다른 기능 유닛들(도시되지 않음) 모두에 연결된다. 화상 프로세서(102)의 다양한 유닛들 및 레지스터들은 글로벌 버스(123)를 통해 셋업되고 제어될 수 있다. 특히 글로벌 버스(123)는 각각의 ISP의 구성 레지스터에 대한 판독 및 기입을 위해 이용된다. 일 실시예에서, 글로벌 버스는 6비트이고, 16바트 데이터 버스 및 8비트 어드레스 버스를 가지며, 인터럽트 상태를 PCI 버스(103)에 전달한다.
이제 도 2를 참조하면, 도 2는 본 발명의 일 실시예에 따른 화상 신호 프로세서(ISP)(200)용 아키텍처의 예를 도시한 블럭도이다. 도 2에 도시된 바와 같이, ISP(200)는 입력 프로그래밍 소자(입력 PE)(202), 출력 프로그래밍 소자(출력 PE)(204), 제1 다중적-어큐뮬레이트 프로그래밍 소자(Multiply-Accumulate Programming Element: MACPE)(206), 제2 MACPE(208), 범용 프로그래밍 소자(General Purpose Programming Element: GPE)(210), 제1 및 제2 액셀러레이터 유닛(214, 216) 각각 및 메모리 명령 핸들러(220)를 포함하며, 이들은 모두 공유 메모리(230)에 연결된다. 일 실시예에서, 공유 메모리(230)는 복수의 클러스터 통신 레지스터들(CCRs)을 포함할 수 있다. 또한 특정 실시예에서, 각각의 클러스터 통신 레지스터는 16비트 폭일 수 있다. 화상 신호 프로세서(200)의 클러스터 통신 레지스터들(CCRs)(230)은, 하기에서 더 상세히 설명되는 바와 같이, 데이터를 저장하고 프로세싱 소자들 사이에서 데이터를 전송하기 위해 이용된다. 입력 및 출력 프로그래밍 소자들(202, 204)은 화상 신호 프로세서(200)를 통해 데이터를 라우트하도록 구성된다. 또한, 화상 신호 프로세서(200)는 하기에서 논의되는 바와 같이, 대역폭 액세스 효율을 최대화하기 위해 메모리 명령 핸들러(200)에 의해 관리되는 데이터 스토리지 메모리(222)를 포함할 수 있다.
또한, 각각의 프로그래밍 소자(202, 204, 206, 208, 및 210)는 제각기 로컬 레지스터들(예를 들면, 열여섯개 16비트 로컬 레지스터들)을 포함한다. 클러스터 통신 레지스터들(230)및 다른 로컬 레지스터들은, 예를 들면 16비트 화상 및 이중 8비트 화상에 대한 화상 프로세싱 애플리케이션들에 이용될 수 있다. 모든 프로세싱 소자들은 동시적으로 실행할 수 있고, 하기에서 논의되는 바와 같이 플로우 제어 지령들 및 산술 논리 유닛(Arithmetic Logic Unit: ALU) 지령들을 포함하는 공통 베이스 라인 지령 세트를 구현한다. 특히, MAC 프로그래밍 소자들(206, 208)은 각각 부가적인 다중-어큐뮬레이트 지령들을 구현할 수 있고, 범용 프로그래밍 소자(210)는 부가적인 비트-회전 지령들을 구현할 수 있다. 화상 신호 프로세서(ISP)(200)의 프로그램 능력과 결합된 프로그래밍 소자들의 성능은 프로그래머가 최적의 성능을 위해 알고리즘들을 빠르게 개발하고 튜닝하게 해준다. 또한, ISP(200)는 전용 하드웨어 엑셀러레이터들(214, 216)을 포함할 수 있다. 예를 들어, 이 액셀러레이터 유닛들(214, 216)은 Huffman 인코더/디코더 액셀러레이터, G4 엔진 액셀러레이터, 고속 2D 삼각 필터 액셀러레이터 등을 포함할 수 있다.
앞서 논의된 바와 같이, 화상 프로세싱 애플리케이션들은 전형적으로 많은 양의 데이터에 대해 작은 세트의 동작들을 수행한다. 화상 프로세서 및 화상 프로세서의 각 화상 신호 프로세서(ISP)(200)는 화상 프로세싱 기능들을 구현하기 위해 데이터 플로우/데이터 구동 아키텍처를 구현할 수 있다. 각각의 화상 신호 프로세서(200)에 있어서, 각각의 프로그래밍 소자(202, 204, 206, 208, 210)는 제각기 지령들을 보유하기 위한 명령 메모리(240)를 포함한다. 일 실시예에서, 지령 메모리(240)는 128 명령 메모리일 수 있다. 전형적으로, 지령 세트는 데이터 플로우 및 산술 지령들에 부가하여 세개 또는 네개의 타이트한 루프들로 구성되어 이용될 수 있다. 또한, 각각의 프로그래밍 소자는 로컬 데이터 스토리지를 위한 로컬 레지스터들(예를 들면, 열여섯개 16비트 레지스터)을 가질 수 있고, 또한 클러스터 통신 레지스터들(CCRs)(230) 모두에 대한 판독/기입 액세스를 갖는다. 클러스터 통신 레지스터들(230)은 프로그래밍 소자들 사이에서 데이터를 교환하기 위해 이용된다. 특히, 일 실시예에서, 클러스터 통신 레지스터들(230)을 통한 데이터 전달은 데이터 유효(Data Valid: DV) 비트들로 태그될 수 있다. 데이터 유효 비트들은 데이터 스토리지 자원의 소유권을 설정하기 위해 이용될 수 있고 하기에서 설명되는 바와 같이 데이터의 하나 이상의 소비자들을 설정할 수 있다.
간단히 요약하면, 시스템 구성(100)(도 1)의 화상 프로세서(102)는 복수의 화상 신호 프로세서들(ISPs)(200)(도 2)을 포함한다. 일 실시예에서, 화상 프로세서는 여덟개의 화상 신호 프로세서들(ISPs)(200)을 포함한다. 하지만, 아키텍처에 대한 임의의 중대한 변화 없이 임의의 적당한 개수의 화상 신호 프로세서들이 이용될 수 있다는 것을 알아야 한다. 프로그래밍 소자들(202, 204, 206, 208, 210)과 하드-와이어드 액셀러레이터들(214, 216)은, 일 실시예에서 클러스터 통신 레지스터들(CCRs)(예를 들면 16비트 레지스터들)로서 구현될 수 있는 공유 메모리(230)를 통해 상호 접속될 수 있다. 일 실시예에서, 화상 신호 프로세서(200) 내의 다섯개의 프로그래밍 소자들은 클러스터 통신 레지스터들(230)을 통해 서로 통신한다. 이 실시예에서, 클러스터 통신 레지스터들(230)은 화상 신호 프로세서(200) 내의 다섯개의 프로그래밍 소자들이 서로 통신할 수 있는 유일한 메커니즘이다. 메모리 명령 핸들러(230)는, 하기에서 논의되는 바와 같이, 프로그래밍 소자들에 대한 데이터 플로우를 관리하기 위해 이용된다.
이제 특별히 화상 신호 프로세서(200)의 개개의 컴포넌트들 중 일부를 살펴보기 위해, 프로그래밍 소자들(PEs)(202, 203, 206, 208, 210)이 구체적으로 논의될 것이다. 앞서 논의된 바와 같이, 각각의 프로그래밍 소자는 클러스터 통신 레지스터들(230)과 연관하여 작동하는 그 자신의 로컬 레지스터들의 세트를 갖는다. 본 발명의 일 실시예에서, 로컬 레지스터들 및 클러스터 통신 레지스터들은 모두 16비트 폭일 수 있고 16비트 피연산자 및 두개의 8비트 연산자들 중 어떤 것에 대해서든 이용될 수 있다. 또한, 각각의 프로그래밍 소자는 지령들의 기본 세트를 위해 설계될 수 있다. 일 실시예에서, 지령들의 기본 세트는 플로우 제어를 지원하는 플로우 제어 지령들, 산술 및 논리 기능을 지원하는 ALU 지령들, 및 커스텀 지령들로 분류될 수 있다. 예를 들어, 커스텀 지령들과 관련하여, MAC 플그래밍 소자들(MACPEs)(206, 208)은 다중 어큐뮬레이트 지령들을 갖고, 범용 프로그래밍 소자(GPE)(210)는 비트-회전 지령들을 포함할 수 있다. 그러나, 프로그래밍 소자들(202, 204, 206, 208, 210) 모두는 플로우 제어 지령들 및 ALU 지령들을 모두 지원한다.
플로우 제어 지령들의 예로는, 로드, 메모리 판독 지령, 메모리 기입 지령, 파괴, 조건부 호출, 인터럽트 제어, 조건부 점프, 간접 레지스터 제어, 루프 지령, 동작(op) 없음, 반복, 리턴, 중지, 팩(pack), 및 언팩(unpack)을 포함한다. ALU 지령들의 예들로는 절대값 함수, 덧셈 함수, 덧셈 및 어큐뮬레이트 함수, 덧셈 및 시프트 함수, 뺄셈 함수, 뺄셈 및 어큐뮬레이트 함수, 비트형 AND 함수, 비트형 OR 함수, 비트형 배타적 OR 함수, 최소/최대 함수, 저장 어큐뮬레이트 함수, 사인 확장 함수, 좌측 시프트 함수, 우측 시프트 함수, 및 데이터 유효 비트들을 테스트하기 위한 지령을 포함한다. MAC 프로그래밍 소자들(MACPEs)(206, 208)용 커스텀 지령들과 관련해서 전형적인 지령들로는, 다중적 어큐뮬레이트 함수, 다중적 지령, 모드 설정을 포함한다. 범용 프로그래밍 소자(GPE)(210)용 커스텀 지령들과 관련해서 전형적인 지령들로는 비트 회전 지령을 포함한다.
범용 프로그래밍 소자(GPE)(210)는 커스텀 비트 회전 지령과 함께, 앞서 논의된 바와 같이, 기본적인 플로우 및 ALU 지령들을 포함하며, 모든 다른 프로그래밍 소자들(202, 204, 206, 208)이 설치될 수 있는 기본적인 프로그래밍 소자이다. 따라서, 범용 프로그래밍 소자(GPE)(210)는 앞서 논의된 베이스 라인 지령 세트를 구현한다. 입력 프로그래밍 소자(202)는 인입하는 데이터를 수신하기 위한 입력 포트로서 4채널 포트(quad port) 인터페이스와 함께 범용 프로그래밍 소자(210)(비트 회전 지령을 빼고)에 기초한다. 마찬가지로, 출력 프로그래밍 소자(204)는 데이터를 출력하기 위한 출력 포트로서 4채널 포트(quad port) 인터페이스와 함께 범용 프로그래밍 소자(210)(비트 회전 지령을 빼고)에 기초한다. MAC 프로그래밍 소자(206, 208)도 유사하게, 다중 어큐뮬레이터(242, 244) 각각에 의해 제공되는 인핸스된 MAC 기능과 함께 범용 프로그래밍 소자(210)(비트 회전 지령을 빼고)에 기초한다. 일 실시예에서, MAC 프로그래밍 소자(206, 208)는 이중 SIMD(Single Instruction Multiple Data) 8x8 지령들 또는 하나의 16x16 다중 어큐뮬레이트 지령을 지원한다. 이러한 기본적인 기능에 부가하여, MAC 프로그래밍 소자(206, 208)는 화상 프로세싱 알고리즘에 유용한 산술 논리 함수들의 광범위한 어레이를 제공한다. MAC 프로그래밍 소자(206, 208)의 다중 어큐뮬레이터들(242, 244) 각각은, 임의의 다른 ALU 유닛처럼, 클러스터 통신 레지스터들(CCRs)(230) 중 임의의 것이나 또는 로컬 레지스터들로부터의 데이터를 이용할 수 있다.
이제 일 실시예의 공유 메모리(230)를 살펴보면, 공유 메모리(230)는 앞서 논의된 바와 같이 복수의 클러스터 통신 레지스터들(CCRs)(230)일 수 있다. 일 실시예에서, 클러스터 통신 레지스터들(CCRs)(230)은 각각 16비트 레지스터들일 수 있다. 클러스터 통신 레지스터들(CCRs)(230)은 프로세싱 소자들(202, 204, 206, 208, 210)이 데이터를 교환할 수 있게 해주며, 범용 레지스터드로서 이용될 수 있다. 일 실시예에서, 데이터 유효(DV) 비트들은 다양한 프로세싱 소자들에 의한 데이터 플로우 및 클러스터 통신 레지스터 소유권을 조정하기 위해 세마포어(semaphore) 시스템을 구현할 수 있다.
도 3을 간단히 참조하면, 도 3은 본 발명의 일 실시예에 따라 복수의 클러스터 통신 레지스터들(CCRs)(3021-N)을 포함하는 공유 메모리(230)의 예를 도시한다. 일 실시예에서, 각각의 통신 레지스터(3021-N)는 16 데이터 비트들을 포함할 수 있고, 화상 신호 프로세서(200) 내의 각 프로세싱 소자에 대해 그에(예를 들면, PE1, PE2, PE3, , PEn) 부가된 하나의 추가 데이터 비트(304)를 갖는다. 이러한 방식에서, 데이터 유효(DV) 비트로 용어가 붙여진, 이 추가적 프로세싱 소자 식별 비트들(304)은 프로세싱 소자에 의한 각 클러스터 레지스터의 소유권을 나타내기 위해 이용될 수 있다. 예를 들어, 프로세서 소자 식별 데이터 비트(DV bit)는 현재 클러스터 통신 레지스터를 소유하는 프로세싱 소자를 나타내기 위해 하이로 설정될 수 있다.
다시 도 2를 참조하여, 이제 메모리 명령 핸들러(220)가 더 상세히 설명될 것이다. 메모리 명령 핸들러(220)는 화상 신호 프로세서(ISP)(200) 내의 데이터, 상수, 지령들의 로컬 스토리지를 가능하게 해주는 메모리(222)(예를 들면, 데이터 RAM)에 연결될 수 있다. 이것은 화상 프로세싱의 액세스 패턴 특성을 위해 최적화된 로컬 스토리지용 스케일링 가능한 메커니즘을 제공한다. 메모리 명령 핸들러(220)는 예를 들면 컴포넌트, 로우, 컬럼, 또는 2D 블럭별로 화상 프로세싱에 종종 요구되는 구조적 패턴들 내의 데이터를 액세스하기 위한 수단을 제공한다. 메모리 명령 핸들러(220)는 하기에서 나중에 더 상세히 설명되는 바와 같이, 화상 프로세싱 애플리케이션에서 메모리 어드레스 생성기들(MAGs)을 이용하여 독립적인 데이터 스트림들을 지원하기 위해 이용된다.
앞서 논의된 바와 같이, 각 프로그래밍 소자(202, 204, 206, 208, 210)가 처리할 데이터는 전형적으로 하나 이상의 클러스터 통신 레지스터들(CCRs)(302)을 통해 온다. 본 발명의 일 실시예에서, 클러스터 통신 레지스터들(CCRs)(302)은 16비트 폭이고, 이에 따라 16비트 폭의 데이터 경로들을 필요로 한다. 따라서, 본 실시예에서, 메모리 명령 핸들러(220)에 대한 모든 통신은 동일한 16비트 데이터 경로(221)를 통해 수행될 것이 요구된다. 제한된 16비트 데이터 경로(221)는 메모리 명령 핸들러(220)를 셋업하고 제어하는 데에 몇가지 문제를 만든다. 예를 들어, 좁은 데이터 경로는 명령들 및 각 명령에 포함되는 정보의 개수를 제한한다. 그러나, 16비트 데이터 경로들은, 싱글 픽셀이 보통 16 비트의 서브샘플링된 컬러 공간에 의해, 예를 들면, YU, YV, 또는 La, Lb, 또는 YCr, YCb 등으로 표현되기 때문에, 화상 프로세싱 애플리케이션들에 대해 최적이다. 또한, 예를 든다면, 하기에서 논의되는 바와 같이, 일 실시예에 따르면, 메모리 명령 핸들러(220)는 고유의 효율적인 방식으로 16 비트 데이터 경로를 이용하여 작동할 수 있다.
간단한 살펴보면, 일반적으로, 본 발명의 실시예들은 화상 프로세싱과 관련하여 데이터를 저장하는 로컬 메모리에 연결된 복수의 메모리 어드레스 생성기들을 갖는 메모리 명령 핸들러를 포함하는 화상 신호 프로세서에 관련된다. 각 메모리 어드레스 생성기는 로컬 메모리에 대한 메모리 어드레스를 생성하고 화상 프로세싱 태스들을 돕기 위해 메모리 어드레스에 위치된 로컬 메모리의 데이터에 대하여 수행될 명령을 해석한다. 공유 메모리는 복수의 메모리 어드레스 생성기들에 연결되고, 메모리 어드레스 생성기들에 의해 로컬 메모리에 보내질 데이터 및 수행될 명령들을 저장하기 위해 이용된다. 일 실시예에서, 공유 메모리는 클러스터 통신 레지스터 인터페이스를 이용하여 메모리 어드레스 생성기들과 인터페이스하는 복수의 클러스터 통신 레지스터들을 포함할 수 있다. 복수의 클러스터 통신 레지스터들은 데이터를 저장하기 위한 데이터 클러스터 통신 레지스터들 및 명령들을 저장하기 위한 명령 클러스터 통신 레지스터들을 포함할 수 있다.
특히, 클러스터 통신 레지스터들의 쌍은 각 메모리 어드레스 생성기에 할당될 수 있는데, 여기서 클러스터 통신 레지스터들의 각 쌍은 데이터 클러스터 통신 레지스터 및 명령 클러스터 통신 레지스터를 포함한다. 또한, 하기에서 논의되는 바와 같이, 메모리 명령 핸들러는 메모리 어드레스 생성기들에 의한 로컬 메모리로의 액세스를 중재하기 위한 아비터(arbiter)를 포함한다. 또한, 특정 실시예에서, 복수의 클러스터 통신 레지스터들은 적어도 16비트 레지스터들일 수 있고, 16비트 폭의 데이터 경로들이 클러스터 통신 레지스터들을 메모리 어드레스 생성기들에 연결하기 위해, 메모리 어드레스 생성기들을 아비터에 연결하기 위해, 그리고 아비터를 로컬 메모리에 연결하기 위해 이용될 수 있다.
이제 도 4를 참조하면, 도 4는 본 발명의 일 실시예에 따른 메모리 명령 핸들러(400)를 도시한 블럭도이다. 메모리 명령 핸들러(400)는 로컬 메모리(402)와 연관하여 예를 들면 컴포넌트, 로우, 컬럼, 또는 2D 블럭별로 화상 프로세싱에 의해 종종 요구되는 데이터 및 구조적 패턴들을 액세스하기 위한 수단을 제공한다. 메모리 명령 핸들러(400)는 로컬 메모리(402)와 연관되어 작동하고, 메모리 어드레스 생성기(MACs)(404), 아비터(406), 클러스터 통신 레지스터들(CCRs)(414)에 연결을 위한 클러스터 통신 레지스터(CCR) 인터페이스, 및 글로벌 버스 인터페이스(420)를 포함한다. 메모리 어드레스 생성기들(MAGs)(404)(예를 들면, GB MAG, MAG0, MAG1, , MAG7)은 독립적인 데이터 스트림을 지원하기 위해 이용된다.
특히, 도 4에 도시된 실시예에서, 아홉개 메모리 어드레스 생성기들(MAGs)(404)은 MAG0-7을 이용하는 클러스터 통신 레지스터들(CCRs)(414)로의 그리고 클러스터 통신 레지스터들(CCRs)(414)로부터의 여덟개까지의 독립적인 데이터 스트림과, 글로벌(GB) 버스(423)를 이용하는 글로벌 버스 인터페이스(420)를 통한 글로벌 버스(423)로부터의 또 다른 독립적인 데이터 스트림을 지원하기 위해 이용된다. 그러나, 임의의 개수의 메모이 어드레스 생성기들이 임의의 개수의 적당한 데이터 스트림을 지원하기 위해 이용될 수 있음을 알아야 한다. MAG0-7 각각은 클러스터 통신 레지스터(CCR) 인터페이스(410)를 통해 클러스터 통신 레지스터들(CCRs)(414) 및 아비터(406)에 연결되고, GB MAG은 아비터(406)에 직접 연결된다. 아비터(406)는 메모리(402)에 대한 액세스를 클럭 사이클에 기초하여 제어한다.
또한, 글로벌 버스 인터페이스(420)는 메모리 명령 핸들러(400)를 글로벌 버스(423) 및 화상 프로세서의 다른 모든 ISPs의 다른 모든 MAGs에 연결한다. 글로벌 버스(423)는 PCI 버스에 연결되고, 화상 프로세서의 다른 모든 화상 신호 프로세서들(ISPs) 및 화상 프로세서의 다른 모든 기능 유닛들(도시되지 않음)에 연결된다. 화상 프로세서의 다양한 유닛들 및 레지스터들이 글로벌 버스(423)를 통해 셋업되고 제어될 수 있다. 특히, 글로벌 버스(423)는 각각의 ISP의 구성 레지스터들에 대한 판독 및 기입을 위해 이용된다. 일 실시예에서, 글로벌 버스(423)는 16비트이고, 16비트 데이터 버스 및 8비트 어드레스 버스를 포함하고, 인터럽트 상태를 PCI 버스에 전달한다. 메모리 명령 핸들러(400)는 메모리 어드레스 생성기들(404)에 대한 모든 명령들을 위해 글로벌 버스 인터페이스(420)를 통해 프로그램될 수 있다.
메모리(402)로의 데이터는 MAG0-7을 이용하여 클러스터 통신 레지스터들(CCRs)(414)을 통해 그리고 소정의 명령들을 통해 통신된다. 또한, 메모리(402)로의 데이터는 GB MAG을 이용하여 다른 ISP의 다른 MAGs으로부터의 데이터를 포함하여, 글로벌 버스(423)로부터 통신될 수 있다. 이제 메모리 명령 핸들러(400) 및 메모리(402)의 각 컴포넌트들이 상세히 논의된다. 메모리(402)부터 시작하면, 일 실시예에서, 메모리(402)는 SRAM(Static Random Access Memory)일 수 있다. SRAM(402)은 일 실시예에서 16비트 워드들의 N 어드레스들로 구성된다. SRAM(402)은 소프트웨어에게 하나의 연속적인 메모리 영역으로서 보인다. 도 4에 도시된 바와 같이, SRAM 블럭(402)은 데이터-인 포트(DI), 데이터-아웃 포트(DO), 제어 포트(CNTL), 및 어드레스 포트(A)를 가지며, 이들은 모두 아비터(406)에 연결된다.
이제 아비터(406)를 살펴보면, 아비터(406)는 메모리 어드레스 생성기들(MAGs)(404)로부터의 SRAM 블럭(402)에 대한 액세스를 위한 모든 요청들을 받고 메모리 제어(CNTL), 어드레스(A), 데이터(DI 및 DO) 버스들의 소유권을 중재한다. 아비터(406)는 일 실시예에서, 액세스를 허여받은 마지막 메모리 어드레스 생성기(404)가 최저 우선권으로 가정하고, 그 다음 메모리 어드레스 생성기(404)가 최고 우선권으로 가정하고, 내림차순 우선권 체인이 각각의 순차적인 메모리 어드레스 생성기를 통해 진행되는 라운드-로빈(round-robin) 타입 중재를 실시한다. 아비터(406)는 클럭 단위를 기초로 어느 메모리 어드레스 생성기(404)가 메모리 액세스 사이클을 수행하게 되는지를 결정한다.
이제 클러스터 통신 레지스터(CCR) 인터페이스(410)를 살펴보면, CCR 인터페이스(410)는 메모리 어드레스 생성기들을 거쳐 SRAM 블럭(402)으로의 그리고 SRAM 블럭(402)으로부터의 데이터 및 명령들을 전달하기 위해 메모리 어드레스 생성기들(MAGs)(404)(예를 들면, MAG0-7)을 클러스터 통신 레지스터들(414)에 연결한다. 메모리 어드레스 생성기들(404)(예를 들면, MAG0-7)은 클러스터 통신 레지스터들(CCRs)(414)의 특정 쌍들에 연결된다. 클러스터 통신 레지스터들(CCRs)의 각 쌍은 하나의 명령 CCR 및 하나의 데이터 CCR을 포함한다. 명령 CCRs은 메모리 어드레스 생성기들(404)에 다양한 판독 및 기입 명령들을 보내기 위해 이용된다. 데이터 CCRs은 메모리 어드레스 생성기들(404)을 거쳐 SRAM 블럭(402)에 데이터 워드를 보내기 위해 이용된다.
일 실시예에서, 적당한 데이터 유효(DV) 비트가 메모리 명령 핸들러(400)를 위한 클러스터 통신 레지스터(CCR)(414) 내에 세트될 수 있고, 그 특정 메모리 어드레스 생성기(MAG)(404)에 대한 클러스터 통신 레지스터를 이용하여 특정 메모리 어드레스 생성기(MAG)(404)(예를 들면, MAG0-7 중의 하나)가 선택된다. 메모리 명령 핸들러(400)의 데이터 유효(DV) 비트가 세트되지 않았다면, 메모리 명령 핸들러(400)는 클러스터 통신 레지스터 내의 명령이나 데이터에 응답하지 않는다. 이것은 클러스터 통신 레지스터가 메모리 명령 핸들러 내의 특정 메모리 어드레스 생성기에 연결되었지만, 클러스터 통신 레지스터들(CCRs)(414)이 다른 프로그래밍 소자들과 통신하기 위해 이용되도록 해준다. 메모리 어드레스 생성기가 클러스터 통신 레지스터를 통해 데이터를 리턴할 때는, 데이터 유효(DV) 비트들의 임의의 조합이 세트될 수 있어서 데이터를 전체 화상 신호 프로세서 내의 프로그래밍 소자들의 임의의 조합에 리턴한다.
도 5를 간단히 살펴보면, 도 5는 본 발명의 일 실시예에 따른, 특정 클러스터 통신 레지스터들(CCRs)에 맵핑된 메모리 어드레스 생성기들(Memory Address Generators: MAGs)의 예를 도시한 도면이다. 도 5에 도시된 바와 같이, CCR0과 CCR1은 명령 및 데이터(502, 504) 각각을 위해 MAG0에 할당된다. CCR2와 CCR3은 명령 및 데이터(506, 508) 각각을 위해 MAG1에 할당되고, CCR4와 CCR5는 명령 및 데이터(510, 512) 각각을 위해 MAG2에 할당된다.
도 4를 다시 참조하여, 이제 메모리 어드레스 생성기들(MAGs)(404)이 논의될 것이다. 메모리 어드레스 생성기들(MAGs)(404)은 데이터 클러스터 통신 레지스터들(414)을 통해 SRAM 메모리 블럭(412)으로 전달되는 각 워드에 대한 어드레스를 생성하고, 클러스터 통신 레지스터들(414)을 통해 메모리 어드레스 생성기들(404)에 보내지는 명령들 및 GB MAC을 통한 글로벌 버스(423)로부터의 명령들을 해석하기 위해 이용된다. 일 실시예에서, 각각의 화상 신호 프로세서 내의 각각의 메모리 명령 핸들러 내에는 아홉개의 메모리 어드레스 생성기들(MAGs)(404)이 있다. 각각의 메모리 어드레스 생성기(MAG)는 클러스터 통신 레지스터(CCR)(414) 또는 글로벌 버스(423)를 통해 명령들을 수신하고 이들을 하기에서 더 상세히 설명되는 바와 같이 메모리 어드레스 생성기에 의해 지원되는 다양한 함수들로 디코드하는 명령 해석기를 포함한다.
바람직하게, 각각의 메모리 어드레스 생성기(MAG)(404)는 다양한 포맷 및 디멘전의 2D 어레이들을 다룰 수 있도록, 화상 신호 프로세싱 알고리즘을 위해 특별히 최적화된다. 각 메모리 어드레스 생성기(MAG)(404)의 파워 및 유연성은 클러스터 통신 레지스터들(414)을 통해 프로세싱 소자들에 의해 프로그램되는 다양한 파라미터들에 의해 생성된다. 바람직하게, 본 발명의 실시예들은 명령들이 싱글 16비트 워드이도록 해준다.
본 발명의 일 실시예에 따른 메모리 명령 핸들러(400)의 메모리 어드레스 생성기들(MAGs)(404)은 몇 개의 오프셋 레지스터, 카운터, 포인터 등을 이용함으로써 그들의 유연한 기능을 얻는다. 도 6을 잠시 살펴보면, 도 6은 본 발명의 일 실시예에 따른, 메모리 어드레스 생성기(MAG)(404) 내에서 이용될 수 있는 다양한 레지스터들을 나타내는 블럭도이다. 도 6에 도시된 바와 같이, 각각의 메모리 어드레스 생성기(404)는 마스크 레지스터(602), 데이터 경로 데이터 유효(DV) 비트들 레지스터(604), 베이스 오프셋 레지스터(606), 메모리 포인터 레지스터(608), 제1 증분 레지스터(610), 제2 증분 레지스터(612), 동작 완료 레지스터(614), 다양한 제어 비트들용 레지스터(616)를 포함할 수 있다. 물론, 각 메모리 어드레스 생성기(404)는 도 6에 도시되지 않은 추가의 레지스터들을 포함할 수 있다. 또한, 명령들의 인코딩은 파라미터들의 최대 비트 수를 허용하는 방식으로 달성될 수 있다.
앞서 논의된 바와 같이, 각 메모리 어드레스 생성기(404)의 명령 해석기는 명령 클러스터 통신 레지스터(CCR)(414)를 통해 명령들을 수신하고 이들을 특정 메모리 어드레스 생성기에 의해 지원되는 함수들로 인코드한다. 이제 도 7을 참조하면, 도 7은 본 발명의 일 실시예에 따른, 메모리 어드레스 생성기들(MAGs)(404) 각각에 의해 지원될 수 있는 명령들의 예를 리스트한 도면이다. 도 7에 도시된 바와 같이, 이 명령들은 원형 버퍼 어드레싱을 생성하기 위해 어드레스 계산에 이용되는 마스크 기록 명령(702), 데이터 판독을 위해 타겟 프로세싱 소자들을 결정하기 위한 데이터 경로 데이터 유효(DV) 비트들 세트(704), 특정된 어드레스로부터 RAM을 판독하기 위한 직접 판독 명령(read immediate command: 706), 클러스터 통신 레지스터(CCR)로부터 특정된 RAM 어들스에 RAM 기입을 하기 위한 직접 기입 명령(write immediate command: 708), 어드레스 계산에 이용될 초기 오프셋 값을 제공하는 MPR 기입 명령(710), 1D 또는 2D 어드레싱을 위한 X 및 Y 증분값들을 제공하기 위한 증분 레지스터 기입 명령(7120, 어드레싱에 이용되는 베이스 오프셋 레지스터를 설정하기 위한 베이스 오프셋 레지스터 기입 명령(714), 메모리 어드레스 생성기(MAG) 메모리 포인터를 이용하여 데이터 클러스터 통신 레지스터(CCR) 내에 N 워드를 판독하기 위한 N워드 간접 판독 명령(716), MAG 메모리 포인터를 이용하여 데이터 CCR로부터 N 워드를 기입하기 위한 N워드 간접 기입 명령(718), 블럭 전송이 완료된 것을 프로세싱 소자를 제어하는 메모리 명령 핸들러(MCH)에게 신호하기 위해 이용되는 동작(연산)(op) 완료 판독 명령(720), 무한한 간접 메모리 명령 핸들러(MCH) 동작들을 설정하기 위한 무한 간접 동작 명령(722)을 포함하지만 이들에 국한되지는 않는다.
이제 도 8을 참조하면, 도 8은 본 발명의 일 실시예에 따른, 명령 인코딩 방법의 일 예를 도시한 도면이다. 예를 들어, 도 8에 도시된 바와 같이, 직접 판독 명령은 16비트 데이터 경로의 예의 상위 두개 비트들에 00으로서 인코드된다. 이것은 명령 내에 포함될 직접 어드레스에 대해 14 비트를 남기는데, 이것은 각각의 메모리 어드레스 생성기(MAG)에게 일 예에 있어서 32KB 데이터를 직접 어드레스하는 능력을 준다. 직접 판독 비트들(read immediate bits)은 의도적으로 00으로 선택되어 검색 테이블이, 명령으로서 간단히 검색 입력 테이블을 기입함으로써 구현될 수 있다는 것에 유의한다. 예를 들어, 명령 클러스터 통신 레지스터(CCR)에 0057h를 기입하는 것은 RAM 내의 0057h 위치에 대한 직접 판독을 유발할 것인데, 이것은 입력값에 대한 새로운 출력값을 리턴할 것이다. 물론 베이스 오프셋 레지스터는 검색 테이블 어드레스를 오프셋시킬 수 있다. 또한, 어떤 명령들은 많은 파라미터 데이터를 필요로 하지 않으며 더 긴 명령들로 인코드될 수 있다. 이 예는 판독 동작 완료 레지스터 세트인데, 본 예에서, 이 명령은 오직 아혹개 비트의 파라미터 데이터만을 필요로 한다. 예를 들어, 도 8에 도시된 바와 같이, 많은 명령들이 고정된 값들(즉, 0 또는 1)을 갖는다.
따라서, 본 발명의 실시예들에 따른 메모리 명령 핸들러(MCH)를 이용하는 화상 신호 프로세서들(ISPs)을 갖는 화상 프로세서는 일 실시예에서 싱글 16비트 명령들을 이용하여 많은 개수의 파라미터들을 제어할 수 있고 많은 상이한 화상 프로세싱 태스크들을 처리할 수 있는 어드레스 생성 기능을 제공한다. 메모리 어드레스 생성기들(MAGs) 및 메모리 명령 핸들러의 강력한 어드레싱 능력은 바람직하게 2차원의 서브-샘플링된 어레이들과 같은 데이터의 자동 공급을 제공한다. 또한, 본 발명의 실시예들에 따른 메모리 명령 핸들러(MCH)를 이용하는 화상 신호 프로세서들(ISPs)을 갖는 화상 프로세서는 프로세서의 프로그램 능력을 갖는 ASCI 성능을 제공한다. 또한, 아키텍처는 일 실시예에서 광범위한 문서 프로세싱 화상 경로들(예를 들면, 높은 ppm 모노크롬, 바이너리 컬러, 콘톤(contone) 컬러, MRC-기반 알고리즘, 등)을 구현하면서 한편 자주 이용되는 이미징 함수들(예를 들면, 컬러 반전, 압축, 및 필터 동작들)의 실행을 가속하는 유연성을 제공한다.
본 발명의 실시예와 그의 다양한 기능 컴포넌트들이 특정 실시예들에서 설명되었으나, 본 발명의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 또는 이들의 조합으로 구현될 수 있고 이들의 시스템, 서브시스템, 컴포넌트 또는 서브-컴포넌트에서 이용될 수 있다는 것을 알아야 한다. 소프트웨어나 펌웨어로 구현될 때, 본 발명의 구성 요소들은 필요한 태스크들을 수행하기 위한 지령들/코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 머신 판독가능 매체(예를 들면, 프로세서 판독 가능 매체 또는 컴퓨터 프로그램 제품)에 저장될 수 있으며, 또는 반송파 내에 구현된 컴퓨터 데이터 신호나 또는 반송파에 의해 변조된 신호로 전송 매체 또는 통신 링크를 통해 전송될 수 있다. 머신 판독가능 매체는 머신(예를 들면, 프로세서, 컴퓨터 등)에 의해 판독가능하고 실행 가능한 형태로 정보를 저장하거나 전송할 수 있는 임의의 매체를 포함할 수 있다. 머신 판독 가능 매체의 예들로는, 전자 회로, 반도체 메모리 디바이스, ROM, 플래시 메모리, 소거가능 프로그래머블 ROM(EPROM), 플로피 디스켓, 컴팩트 디스크(CD-ROM), 광 디스크, 하드 디스크, 광섬유 매체, 무선 주파수(RF) 링크 등을 포함한다. 컴퓨터 데이터 신호는 전자 네트워크 채널들, 광섬유, 공기, 전자기, RF 링크, 바코드 등과 같은 전송 매체를 통해 전파될 수 있는 임의의 신호를 포함할 수 있다. 코드 세그먼트들은 인터넷, 인트라넷 등과 같은 네트워크를 통해 다운로드될 수 있다.
또한, 본 발명의 실시예들은 예시적인 실시예들을 참조하여 설명되었지만, 이 설명들은 제한적인 의미로 해석되어서는 않된다. 본 발명의 실시예들이 속하는 기술 분야의 당업자는, 본 발명의 예시적인 실시예들의 다양한 변형들 및 다른 실시예들이 본 발명의 사상 및 범위 내에 놓인다는 것을 잘 알 것이다.

Claims (38)

  1. 화상 신호 프로세서로서,
    데이터를 저장하기 위한 로컬 메모리, 및
    복수의 메모리 어드레스 생성기들을 포함하는 메모리 명령 핸들러
    를 포함하고,
    상기 메모리 어드레스 생성기 각각은 상기 로컬 메모리에 대한 메모리 어드레스를 생성하고, 화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 수행될 명령을 해석하는, 화상 신호 프로세서.
  2. 제1항에 있어서,
    상기 복수의 메모리 어드레스 생성기들에 연결된 공유 메모리를 더 포함하고,
    상기 공유 메모리는 상기 로컬 메모리에 보낼 데이터 및 상기 메모리 어드레스 생성기들에 의해 수행될 명령들을 저장하는 화상 신호 프로세서.
  3. 제2항에 있어서,
    상기 공유 메모리는 복수의 클러스터 통신 레지스터들을 포함하는 화상 신호 프로세서.
  4. 제3항에 있어서,
    상기 복수의 클러스터 통신 레지스터들을 상기 복수의 메모리 어드레스 생성기들에 연결하는 클러스터 통신 레지스터 인터페이스를 더 포함하는 화상 신호 프로세서.
  5. 제3항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 데이터를 저장하기 위한 데이터 클러스터 통신 레지스터들 및 명령들을 저장하기 위한 명령 클러스터 통신 레지스터들을 포함하는 화상 신호 프로세서.
  6. 제5항에 있어서,
    한 쌍의 클러스터 통신 레지스터들이 각각의 메모리 어드레스 생성기에 할당되는 화상 신호 프로세서.
  7. 제6항에 있어서,
    상기 클러스터 통신 레지스터들의 각 쌍은 데이터 클러스터 통신 레지스터들 및 명령 클러스터 통신 레지스터들을 포함하는 화상 신호 프로세서.
  8. 제3항에 있어서,
    상기 메모리 어드레스 생성기들에 의한 상기 로컬 메모리에 대한 액세스를 중재하기 위한 아비터(arbiter)를 더 포함하는 화상 신호 프로세서.
  9. 제8항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 적어도 16비트 레지스터들인 화상 신호 프로세서.
  10. 제9항에 있어서,
    상기 클러스터 통신 레지스터들을 상기 메모리 어드레스 생성기들에 연결하고, 상기 메모리 어드레스 생성기들을 상기 아비터에 연결하고, 상기 아비터를 상기 로컬 메모리에 연결하는 16비트 데이터 경로들을 더 포함하는 화상 신호 프로세서.
  11. 제10항에 있어서,
    상기 로컬 메모리는 SRAM(Static Random Access Memory)를 포함하는 화상 신호 프로세서.
  12. 화상 신호 프로세서의 로컬 메모리에 데이터를 저장하는 단계,
    상기 화상 신호 프로세서 내의 메모리 어드레스 생성기를 이용하여 상기 로컬 메모리에 대한 메모리 어드레스를 생성하는 단계, 및
    화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스 생성기를 이용하여 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 연산을 수행하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 화상 신호 프로세서의 공유 메모리 내의 상기 로컬 메모리에 보내질 데이터를 저장하는 단계; 및
    상기 로컬 메모리 내의 데이터에 대해 수행될 명령들을 상기 공유 메모리에 저장하는 단계
    를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 공유 메모리는 복수의 클러스터 통신 레지스터들을 포함하는 방법.
  15. 제14항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 데이터를 저장하기 위한 데이터 클러스터 통신 레지스터들 및 명령들을 저장하기 위한 명령 클러스터 통신 레지스터들을 포함하는 방법.
  16. 제15항에 있어서,
    한 쌍의 클러스터 통신 레지스터들을 상기 복수의 메모리 어드레스 생성기들 중 하나에 할당하는 단계를 더 포함하고,
    각 메모리 어드레스 생성기는 상기 화상 신호 프로세서 내의 상기 로컬 메모리에 대한 메모리 어드레스를 생성하고, 화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 연산을 수행하는 방법.
  17. 제16항에 있어서,
    상기 복수의 메모리 어드레스 생성기들에 의한 상기 로컬 메모리에 대한 액세스를 중재하는 단계를 더 포함하는 방법.
  18. 제14항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 적어도 16비트 레지스터들인 방법.
  19. 제18항에 있어서,
    16비트 데이터 경로들이 상기 클러스터 통신 레지스터들을 상기 메모리 어드레스 생성기들에 연결하고, 상기 메모리 어드레스 생성기들을 상기 로컬 메모리에 연결하는 방법.
  20. 머신에 의해 실행될 때 상기 머신이 하기의 동작들을 수행하도록 유발하는 지령들을 저장하고 있는 머신 판독가능 매체로서, 상기 동작들은
    화상 신호 프로세서의 로컬 메모리에 데이터를 저장하는 동작,
    상기 화상 신호 프로세서 내의 메모리 어드레스 생성기를 이용하여 상기 로컬 메모리에 대한 메모리 어드레스를 생성하는 동작, 및
    화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스 생성기를 이용하여 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 연산을 수행하는 동작
    을 포함하는 머신 판독가능 매체.
  21. 제20항에 있어서,
    상기 화상 신호 프로세서의 공유 메모리 내의 상기 로컬 메모리에 보내질 데이터를 저장하는 동작; 및
    상기 로컬 메모리 내의 데이터에 대해 수행될 명령들을 상기 공유 메모리에 저장하는 동작
    을 더 포함하는 머신 판독가능 매체.
  22. 제21항에 있어서,
    상기 공유 메모리는 복수의 클러스터 통신 레지스터들을 포함하는 머신 판독가능 매체.
  23. 제22항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 데이터를 저장하기 위한 데이터 클러스터 통신 레지스터들 및 명령들을 저장하기 위한 명령 클러스터 통신 레지스터들을 포함하는 머신 판독가능 매체.
  24. 제23항에 있어서,
    한 쌍의 클러스터 통신 레지스터들을 상기 복수의 메모리 어드레스 생성기들 중 하나에 할당하는 동작을 더 포함하고,
    각 메모리 어드레스 생성기는 상기 화상 신호 프로세서 내의 상기 로컬 메모리에 대한 메모리 어드레스를 생성하고, 화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 연산을 수행하는 머신 판독가능 매체.
  25. 제24항에 있어서,
    상기 복수의 메모리 어드레스 생성기들에 의한 상기 로컬 메모리에 대한 액세스를 중재하는 동작을 더 포함하는 머신 판독가능 매체.
  26. 제22항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 적어도 16비트 레지스터들인 머신 판독가능 매체.
  27. 제26항에 있어서,
    16비트 데이터 경로들이 상기 클러스터 통신 레지스터들을 상기 메모리 어드레스 생성기들에 연결하고, 상기 메모리 어드레스 생성기들을 상기 로컬 메모리에 연결하는 머신 판독가능 매체.
  28. 화상 프로세서 시스템으로서,
    화상 프로세서에 연결된 프로세서, 및
    상기 화상 프로세서에 연결된 더블 데이터 레이트 동기식 다이내믹 랜덤 액세스 메모리(Double Data Rate Synchronous Dynamic Random Access Memory: DDR SDRAM)
    을 포함하고, 상기 화상 프로세서는 서로 연결된 복수의 화상 신호 프로세서들을 포함하고, 각 화상 신호 프로세서는,
    데이터를 저장하기 위한 로컬 메모리, 및
    복수의 메모리 어드레스 생성기들을 포함하는 메모리 명령 핸들러
    를 포함하고, 상기 메모리 어드레스 생성기 각각은 상기 로컬 메모리에 대한 메모리 어드레스를 생성하고, 화상 프로세싱 태스크들을 돕기 위해 상기 메모리 어드레스에 위치된 상기 로컬 메모리의 데이터에 대해 수행될 명령을 해석하는, 화상 프로세서 시스템.
  29. 제28항에 있어서,
    상기 복수의 메모리 어드레스 생성기들에 연결된 공유 메모리를 더 포함하고,
    상기 공유 메모리는 상기 로컬 메모리에 보낼 데이터 및 상기 메모리 어드레스 생성기들에 의해 수행될 명령들을 저장하는 화상 프로세서 시스템.
  30. 제29항에 있어서,
    상기 공유 메모리는 복수의 클러스터 통신 레지스터들을 포함하는 화상 프로세서 시스템.
  31. 제30항에 있어서,
    상기 복수의 클러스터 통신 레지스터들을 상기 복수의 메모리 어드레스 생성기들에 연결하는 클러스터 통신 레지스터 인터페이스를 더 포함하는 화상 프로세서 시스템.
  32. 제30항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 데이터를 저장하기 위한 데이터 클러스터 통신 레지스터들 및 명령들을 저장하기 위한 명령 클러스터 통신 레지스터들을 포함하는 화상 프로세서 시스템.
  33. 제32항에 있어서,
    한 쌍의 클러스터 통신 레지스터들이 각각의 메모리 어드레스 생성기에 할당되는 화상 프로세서 시스템.
  34. 제33항에 있어서,
    상기 클러스터 통신 레지스터들의 각 쌍은 데이터 클러스터 통신 레지스터들 및 명령 클러스터 통신 레지스터들을 포함하는 화상 프로세서 시스템.
  35. 제30항에 있어서,
    상기 메모리 어드레스 생성기들에 의한 상기 로컬 메모리에 대한 액세스를 중재하기 위한 아비터(arbiter)를 더 포함하는 화상 프로세서 시스템.
  36. 제35항에 있어서,
    상기 복수의 클러스터 통신 레지스터들은 적어도 16비트 레지스터들인 화상 프로세서 시스템.
  37. 제36항에 있어서,
    상기 클러스터 통신 레지스터들을 상기 메모리 어드레스 생성기들에 연결하고, 상기 메모리 어드레스 생성기들을 상기 아비터에 연결하고, 상기 아비터를 상기 로컬 메모리에 연결하는 16비트 데이터 경로들을 더 포함하는 화상 프로세서 시 스템.
  38. 제37항에 있어서,
    상기 로컬 메모리는 SRAM(Static Random Access Memory)를 포함하는 화상 프로세서 시스템.
KR1020057024970A 2003-06-27 2004-06-09 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리명령 핸들러 KR100818819B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/609,042 US7088371B2 (en) 2003-06-27 2003-06-27 Memory command handler for use in an image signal processor having a data driven architecture
US10/609,042 2003-06-27

Publications (2)

Publication Number Publication Date
KR20060024444A KR20060024444A (ko) 2006-03-16
KR100818819B1 true KR100818819B1 (ko) 2008-04-02

Family

ID=33540745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057024970A KR100818819B1 (ko) 2003-06-27 2004-06-09 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리명령 핸들러

Country Status (9)

Country Link
US (1) US7088371B2 (ko)
EP (1) EP1639495B1 (ko)
JP (1) JP4344383B2 (ko)
KR (1) KR100818819B1 (ko)
AT (1) ATE470189T1 (ko)
DE (1) DE602004027493D1 (ko)
MY (1) MY137269A (ko)
TW (1) TWI269168B (ko)
WO (1) WO2005006207A2 (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8942426B2 (en) * 2006-03-02 2015-01-27 Michael Bar-Am On-train rail track monitoring system
US8766995B2 (en) * 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US7529849B2 (en) * 2006-07-27 2009-05-05 International Business Machines Corporation Reduction of message flow between bus-connected consumers and producers
KR100867640B1 (ko) * 2007-02-06 2008-11-10 삼성전자주식회사 다중 접근 경로를 가지는 이미지 프로세싱 메모리를포함하는 시스템 온 칩
JP2008249977A (ja) * 2007-03-30 2008-10-16 Seiko Epson Corp 電気光学表示装置の描画回路、電気光学表示装置の描画方法、電気光学表示装置及び電子機器
US8260002B2 (en) * 2008-09-26 2012-09-04 Axis Ab Video analytics system, computer program product, and associated methodology for efficiently using SIMD operations
KR20100078193A (ko) * 2008-12-30 2010-07-08 주식회사 동부하이텍 슬레이브 및 그와 마스터 간의 통신 방법
CA2825937A1 (en) 2011-01-28 2012-08-02 Eye IO, LLC Encoding of video stream based on scene type
WO2013100783A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9262704B1 (en) * 2015-03-04 2016-02-16 Xerox Corporation Rendering images to lower bits per pixel formats using reduced numbers of registers
CA2984313C (en) * 2015-04-27 2024-03-26 First Advantage Corporation Device and method for performing validation and authentication of a physical structure or physical object
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
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
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
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
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10506161B2 (en) 2017-10-26 2019-12-10 Qualcomm Incorporated Image signal processor data traffic management
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in 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
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues 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
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
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations 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
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage 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
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
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003167726A (ja) * 2001-11-22 2003-06-13 Univ Of Washington コプロセッサ装置およびデータ転送を容易にするための方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790130A (en) * 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
US20040236877A1 (en) * 1997-12-17 2004-11-25 Lee A. Burton Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM)
US6202106B1 (en) 1998-09-09 2001-03-13 Xilinx, Inc. Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller
US6421744B1 (en) 1999-10-25 2002-07-16 Motorola, Inc. Direct memory access controller and method therefor
US6785743B1 (en) 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
JP2002215606A (ja) * 2001-01-24 2002-08-02 Mitsubishi Electric Corp データ処理装置
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US7293155B2 (en) 2003-05-30 2007-11-06 Intel Corporation Management of access to data from memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003167726A (ja) * 2001-11-22 2003-06-13 Univ Of Washington コプロセッサ装置およびデータ転送を容易にするための方法

Also Published As

Publication number Publication date
EP1639495B1 (en) 2010-06-02
TW200500859A (en) 2005-01-01
US20040263524A1 (en) 2004-12-30
DE602004027493D1 (de) 2010-07-15
EP1639495A2 (en) 2006-03-29
WO2005006207A3 (en) 2005-10-20
US7088371B2 (en) 2006-08-08
KR20060024444A (ko) 2006-03-16
TWI269168B (en) 2006-12-21
JP4344383B2 (ja) 2009-10-14
WO2005006207A2 (en) 2005-01-20
JP2007520767A (ja) 2007-07-26
ATE470189T1 (de) 2010-06-15
MY137269A (en) 2009-01-30

Similar Documents

Publication Publication Date Title
KR100818819B1 (ko) 데이터 구동 아키텍처를 갖는 화상 신호 프로세서용 메모리명령 핸들러
US7714870B2 (en) Apparatus and method for selectable hardware accelerators in a data driven architecture
JP3559046B2 (ja) データ処理マネージメントシステム
US10776126B1 (en) Flexible hardware engines for handling operating on multidimensional vectors in a video processor
KR101787819B1 (ko) 정렬 가속화 프로세서들, 방법들, 시스템들 및 명령어들
JP5918287B2 (ja) 演算マスクのマスクされていない要素をコンソリデートする命令処理装置、方法、システム、及びプログラム
AU747283B2 (en) Data processing system for logically adjacent data samples such as image data in a machine vision system
JP2014182807A (ja) 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム
JP4430671B2 (ja) データドリブン型アーキテクチャメッシュアレイ中のメモリアクセスデバイス制御
JP4413922B2 (ja) 画像処理用可変タップ・フィルタ・アーキテクチャ
JP2011141823A (ja) データ処理装置および並列演算装置
US20070208887A1 (en) Method, apparatus, and medium for controlling direct memory access
JP2003517684A (ja) 複数の独立の専用プロセッサを有するデジタル信号プロセッサ
US7340113B2 (en) Image processing apparatus with SIMD-type microprocessor to perform labeling
US20090282223A1 (en) Data processing circuit
WO2022046147A1 (en) Lookup table processing and programming for camera image signal processing
US20230214345A1 (en) Multi-node memory address space for pcie devices
JP2003196259A (ja) データ駆動型情報処理装置およびデータ処理方法
JP2942449B2 (ja) データ処理装置
JP3442175B2 (ja) 中央演算処理装置
JP3647078B2 (ja) プロセッサ
KR100307400B1 (ko) 통신 시스템에서의 프로세서간 데이터 전송장치
JP2004118235A (ja) データ処理装置
JPH1074190A (ja) 並列プロセッサ
JPH04186431A (ja) データプロセッサ

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