KR20090092840A - 비디오 처리 - Google Patents

비디오 처리

Info

Publication number
KR20090092840A
KR20090092840A KR1020097015040A KR20097015040A KR20090092840A KR 20090092840 A KR20090092840 A KR 20090092840A KR 1020097015040 A KR1020097015040 A KR 1020097015040A KR 20097015040 A KR20097015040 A KR 20097015040A KR 20090092840 A KR20090092840 A KR 20090092840A
Authority
KR
South Korea
Prior art keywords
vector
execution unit
scalar
data
simd
Prior art date
Application number
KR1020097015040A
Other languages
English (en)
Other versions
KR101061345B1 (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 KR20090092840A publication Critical patent/KR20090092840A/ko
Application granted granted Critical
Publication of KR101061345B1 publication Critical patent/KR101061345B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/37Details of the operation on graphic patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

비디오 처리 동작을 실행하기 위한 지연 감내 시스템이 설명된다. 스칼라 및 벡터 컴포넌트를 구비한 비디오 프로세서, 비디오 프로세서에서의 스트림 처리, 및 비디오 프로세서에서의 다차원 데이터 경로 처리도 설명된다.

Description

비디오 처리{VIDEO PROCESSING}
본 발명은 디지털 전자 컴퓨터 시스템에 관한 것이다. 구체적으로는, 본 발명은 컴퓨터 시스템 상에서 비디오 정보를 효율적으로 처리하기 위한 시스템에 관한 것이다. 일 양태에서는, 비디오 처리 동작을 실행하기 위한 지연 감내 시스템이 기술된다. 다른 양태에서는, 비디오 프로세서에서의 스트림 처리가 기술된다. 또한, 비디오 프로세서에서의 다차원 데이터 경로 처리가 기술된다. 스칼라 및 벡터 컴포넌트들을 구비한 비디오 프로세서도 기술된다.
본 출원은 "비디오 처리 방법 및 시스템(A METHOD AND SYSTEM FOR VIDEO PROCESSING)"라는 명칭으로 가드레(Gadre) 등에 의해 2004년 11월 15일자로 출원된 미국 가출원 번호 제60/628,414호의 35 U.S.C. Section 119(e) 하의 이익을 청구하며, 이 가출원의 전체 내용은 본 명세서에 포함되어 있다.
이미지 및 풀-모션 비디오의 디스플레이는 최근에 크게 발전하고 있는 전자 산업의 한 영역이다. 고품질 비디오, 특히 고선명도 디지털 비디오의 디스플레이 및 렌더링은 현대 비디오 기술 애플리케이션 및 장치의 주 목표이다. 비디오 기술은 셀룰러 전화, 개인용 비디오 레코더, 디지털 비디오 프로젝터, 고선명도 텔레비젼 등의 다양한 제품에 이용된다. 고선명 비디오 생성 및 디스플레이가 가능한 장치들의 출현 및 성장 보급은 고도의 혁신 및 진보를 겪는 전자 산업의 한 영역이다.
많은 소비자 전자 타입 및 전문가 레벨 장치들로 보급되는 비디오 기술은 디스플레이를 위해 비디오 신호를 포맷 및/또는 향상시키기 위하여 하나 이상의 비디오 프로세서에 의존한다. 이것은 특히 디지털 비디오 애플리케이션에 대해 사실이다. 예를 들어, 하나 이상의 비디오 프로세서는 일반적인 셋톱 박스 내에 포함되고, HDTV 방송 신호를 디스플레이에 의해 이용 가능한 비디오 신호로 변환하는 데 이용된다. 이러한 변환은 예를 들어 비디오 신호가 트루 16x9(예를 들어, 와이드 스크린) 디스플레이 상의 적절한 디스플레이를 위해 비(non-) 16x9 비디오 이미지로부터 변환되는 스케일링을 포함한다. 하나 이상의 비디오 프로세서는, 비디오 신호가 홀수 및 짝수 스캔 라인들이 개별적으로 디스플레이되는 인터레이스 포맷에서 전체 프레임이 단일 스위프 내에 묘화되는 진행 포맷으로 변환되는 스캔 변환을 수행하는 데 이용될 수 있다.
비디오 프로세서 애플리케이션의 추가 예는 예를 들어 비디오 신호가 압축 포맷(예를 들어, MPEG-2)으로 수신되고 디스플레이를 위해 압축 해제되고 포맷되는 신호 압축 해제를 포함한다. 또 하나의 예는 리인터레이싱 스캔 변환(re-interlacing scan conversion)인데, 이는 수신 디지털 비디오 신호를 DVI(Digital Visual Interface) 포맷에서 시장에 설치된 많은 수의 구식 텔레비젼 디스플레이와 호환 가능한 합성 비디오 포맷으로 변환하는 것을 포함한다.
보다 세련된 사용자들은 예를 들어 루프내/루프외 디블록킹 필터, 개량된 모션 적응 디인터레이싱, 인코딩 동작을 위한 입력 잡음 필터링, 다위상 스케일링/리샘플링, 서브-픽처 합성, 및 칼라 공간 변환, 조정, 픽셀 포인트 조작(예를 들어, 샤프닝, 히스토그램 조정 등) 및 다양한 비디오 표면 포맷 변환 지원 동작과 같은 프로세서-증폭기 동작들과 같은 보다 정교한 비디오 프로세서 기능들을 필요로 한다.
이러한 정교한 비디오 프로세서 기능을 제공하는 것과 관련된 문제는 이러한 기능을 구현하기에 충분히 강력한 아키텍처를 가진 비디오 프로세서가 많은 타입의 장치에 포함되기에는 과도하게 비용이 많이 들 수 있다는 것이다. 비디오 처리 기능이 더 정교할수록, 이러한 기능을 구현하는 데 필요한 집적 회로는 실리콘 다이 면적, 트랜지스터 수, 메모리 속도 요건 등의 면에서 더 비용이 증가할 것이다.
따라서, 종래의 시스템 설계자들은 비디오 프로세서 성능과 비용에 관련하여 절충점을 찾아야만 했다. 수용 가능한 비용/성능 비를 갖는 것으로 널리 간주되는 종래의 비디오 프로세서는 종종 지연 제한(예를 들어, 비디오 떨림 또는 비디오 처리 애플리케이션의 기능 정지를 방지하기 위해) 및 연산 밀도(예를 들어, 다이(die) 제곱 밀리미터당 프로세서 연산 횟수) 면에서 거의 충분하지 못했었다. 더욱이, 종래의 비디오 프로세서들은 일반적으로, 비디오 장치가 다수의 비디오 스트림을 처리(예를 들어, 다수의 수신 스트림 및 발신 디스플레이 스트림의 동시 처리)할 것으로 예상되는 경우에서와 같이 선형 스케일링 성능 요건에 적합하지 않다.
따라서, 종래 기술의 한계를 극복하는 새로운 비디오 프로세서 시스템이 필요하다. 새로운 비디오 프로세서 시스템은 더욱 세련된 사용자들에 의해 기대되는 정교한 비디오 프로세서 기능들을 처리하기 위해 스케일링이 가능해야 하고, 높은 연산 밀도를 가져야 한다.
본 발명의 실시예들은 집적 회로 실리콘 다이 면적, 트랜지스터 수, 메모리 속도 요건 등을 효율적으로 이용하면서 정교한 비디오 처리 기능들을 지원하는 새로운 비디오 프로세서 시스템을 제공한다. 본 발명의 실시예들은 다수의 비디오 스트림을 처리하기 위해 높은 연산 밀도를 유지하며, 쉽게 스케일링이 가능하다.
일 실시예에서는, 비디오 프로세서에서 비디오 처리 동작들을 실행하기 위한 지연 감내 시스템이 구현된다. 이 시스템은 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스, 호스트 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛, 및 호스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 벡터 실행 유닛이 메모리 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작하는 것을 가능하게 하기 위한 커맨드 FIFO가 포함된다. 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스가 포함된다. 복수의 상이한 메모리 위치 간의 DMA 전달을 구현하고, 벡터 실행 유닛에 대한 데이터 및 명령을 데이터 저장 메모리 및 명령 캐시에 로딩하기 위한 DMA 엔진이 메모리 인터페이스 내에 구축된다.
일 실시예에서, 벡터 실행 유닛은 요구 구동 기반으로 동작하기 위해 커맨드 FIFO를 액세스함으로써 스칼라 실행 유닛에 관하여 비동기적으로 동작하도록 구성된다. 요구 구동 기반은 상이한 메모리 위치들(예를 들어, 프레임 버퍼 메모리, 시스템 메모리, 캐시 메모리 등)에서 벡터 실행 유닛의 커맨드 FIFO로의 데이터 전달의 지연을 숨기도록 구성될 수 있다. 커맨드 FIFO는 벡터 실행 유닛의 기능 정지를 방지하기 위한 파이프라인 FIFO일 수 있다.
일 실시예에서, 본 발명은 비디오 처리 동작을 실행하기 위한 비디오 프로세서로서 구현된다. 비디오 프로세서는 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스를 포함한다. 비디오 프로세서는 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스를 포함한다. 스칼라 실행 유닛이 호스트 인터페이스 및 메모리 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된다. 벡터 실행 유닛이 호스트 인터페이스 및 메모리 인터페이스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된다. 비디오 프로세서는 독립형 비디오 프로세서 집적 회로이거나, GPU 집적 회로 내에 집적된 컴포넌트일 수 있다.
일 실시예에서, 스칼라 실행 유닛은 비디오 프로세서의 제어기로서 기능하여, 벡터 실행 유닛의 동작을 제어한다. 스칼라 실행 유닛은 애플리케이션의 흐름 제어 알고리즘을 실행하도록 구성될 수 있고, 벡터 실행 유닛은 애플리케이션의 픽셀 처리 동작을 실행하도록 구성될 수 있다. 스칼라 실행 유닛과 벡터 실행 유닛을 인터페이스하기 위한 벡터 인터페이스 유닛이 비디오 프로세서 내에 포함될 수 있다. 일 실시예에서, 스칼라 실행 유닛 및 벡터 실행 유닛은 비동기적으로 동작하도록 구성된다. 스칼라 실행 유닛은 제1 클럭 주파수로 실행할 수 있고, 벡터 실행 유닛은 상이한 클럭 주파수(예를 들어, 더 빠르거나, 더 느린 등)로 실행할 수 있다. 벡터 실행 유닛은 스칼라 실행 유닛의 제어하에 요구 구동 기반으로 동작할 수 있다.
일 실시예에서, 본 발명은 비디오 처리 동작을 실행하기 위한 비디오 프로세서용의 다차원 데이터 경로 처리 시스템으로서 구현된다. 비디오 프로세서는 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛 및 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 벡터 실행 유닛에 대한 데이터를 저장하기 위한 데이터 저장 메모리가 포함된다. 데이터 저장 메모리는 어레이로 배열된 대칭 뱅크 데이터 구조들을 가진 복수의 타일을 포함한다. 뱅크 데이터 구조들은 각 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성된다.
특정 구성의 요건에 따라, 뱅크 데이터 구조들 각각은 복수의 타일(예를 들어, 4x4, 8x8, 8x16, 16x24 등)을 포함할 수 있다. 일 실시예에서, 뱅크들은 각 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성된다. 이것은 단일 액세스가 2개의 인접 뱅크로부터 타일들의 행(row) 또는 열(column)을 검색하는 것을 가능하게 한다. 일 실시예에서, 복수의 뱅크 데이터 구조의 타일들(예를 들어, 행, 열, 블록 등)을 액세스하기 위한 구성을 선택하기 위해 크로스바가 사용된다. 크로스바에 의해 액세스되는 뱅크들의 타일들을 수신하고 타일들을 클럭 단위로 벡터 데이터 경로의 프론트 엔드에 제공하기 위한 콜렉터가 포함될 수 있다.
일 실시예에서, 본 발명은 비디오 프로세서용의 스트림 기반 메모리 액세스 시스템으로서 구현된다. 비디오 프로세서는 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛 및 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 스칼라 실행 유닛 및 벡터 실행 유닛에 대한 데이터를 저장하기 위한 프레임 버퍼 메모리가 포함된다. 스칼라 실행 유닛 및 벡터 실행 유닛과 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스가 포함된다. 프레임 버퍼 메모리는 복수의 타일을 포함한다. 메모리 인터페이스는 스칼라 실행 유닛에 대한 제1 순차적 타일 액세스의 제1 스트림을 구현하고, 벡터 실행 유닛에 대한 제2 순차적 타일 액세스의 제2 스트림을 구현한다.
일 실시예에서, 제1 스트림 및 제2 스트림은 발원 메모리 위치(예를 들어, 프레임 버퍼 메모리, 시스템 메모리 등)로부터의 액세스 지연을 숨기는 방식으로 프리페치되는 일련의 순차적 프리페치 타일들을 포함한다. 일 실시예에서, 메모리 인터페이스는 복수의 상이한 발원 위치로부터의 그리고 복수의 상이한 종료 위치로의 복수의 상이한 스트림을 관리하도록 구성된다. 일 실시예에서, 메모리 인터페이스 내에 구축된 DMA 엔진이 다수의 스트림을 지원하기 위해 복수의 메모리 판독 및 복수의 메모리 기입을 구현하는 데 사용된다.
대체로, 본 발명은 적어도 다음 4개의 방법을 개시한다.
A) 본 명세서에 광범위하게 교시되는 방법은 비디오 처리 동작을 실행하기 위한 비디오 프로세서에서의 다차원 데이터 경로 처리 시스템의 방법으로서, 스칼라 실행 유닛을 이용하여 스칼라 비디오 처리 동작을 실행하는 단계; 벡터 실행 유닛을 이용하여 벡터 비디오 처리 동작을 실행하는 단계; 데이터 저장 메모리를 이용하여 벡터 실행 유닛에 대한 데이터를 저장하는 단계를 포함하고, 데이터 저장 메모리는 어레이로 배열된 대칭 뱅크 데이터 구조들을 포함하는 복수의 타일을 포함하고, 뱅크 데이터 구조들은 각 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성된다. 또한, 상기 A 방법은 4x4 패턴으로 배열된 복수의 타일을 포함하는 뱅크 데이터 구조들 각각을 포함한다. 또한, 상기 A 방법은 8x8, 8x16 또는 16x24 패턴으로 배열된 복수의 타일을 포함하는 뱅크 데이터 구조들 각각을 포함한다. 또한, 상기 A 방법은 각각의 뱅크 데이터 구조의 상이한 타일들로의 액세스를 지원하도록 구성된 뱅크 데이터 구조들을 포함하고, 적어도 하나의 액세스는 2개의 뱅크 데이터 구조의 타일들의 행을 포함하는 2개의 인접한 뱅크 데이터 구조에 대한 것이다. 상기 A 방법은 또한 각각의 뱅크 데이터 구조의 상이한 타일들로의 액세스를 지원하도록 구성된 타일들을 포함하며, 적어도 하나의 액세스는 2개의 인접 뱅크 데이터 구조의 타일들의 열을 포함하는 2개의 인접 뱅크 데이터 구조에 대한 것이다. 또한, 상기 A 방법은 데이터 저장 메모리에 연결된 크로스바를 이용하여 복수의 뱅크 데이터 구조의 타일들을 액세스하기 위한 구성을 선택하는 단계를 포함한다. 이 선택 단계에서, 크로스바는 클럭 단위로 벡터 데이터 경로에 데이터를 제공하기 위해 복수의 뱅크 데이터 구조의 타일들을 액세스한다. 또한, 콜렉터를 이용하여 크로스바에 의해 액세스되는 복수의 뱅크 데이터 구조의 타일들을 수신하는 단계, 및 클럭 단위로 벡터 데이터 경로의 프론트 엔드에 타일들을 제공하는 단계를 포함한다.
B) 본 명세서에서 광범위하게 교시되는 방법은 또한 비디오 처리 동작을 실행하기 위한 방법으로서, 컴퓨터 판독 가능 코드를 실행하는 컴퓨터 시스템의 비디오 프로세서를 이용하여 구현되며, 호스트 인터페이스를 이용하여 비디오 프로세서와 호스트 CPU 간의 통신을 설정하는 단계; 메모리 인터페이스를 이용하여 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 설정하는 단계; 호스트 인터페이스 및 메모리 인터페이스에 연결된 스칼라 실행 유닛을 이용하여 스칼라 비디오 처리 동작을 실행하는 단계; 및 호스트 인터페이스 및 메모리 인터페이스에 연결된 벡터 실행 유닛을 이용하여 벡터 비디오 처리 동작을 실행하는 단계를 포함한다. 상기 B 방법은 비디오 프로세서의 제어기로서 기능하여 벡터 실행 유닛의 동작을 제어하는 스칼라 실행 유닛을 더 포함한다. 상기 B 방법은 스칼라 실행 유닛과 벡터 실행 유닛을 인터페이스하기 위한 벡터 인터페이스 유닛을 더 포함한다. 상기 B 방법은 비동기적으로 동작하도록 구성된 스칼라 실행 유닛 및 벡터 실행 유닛을 더 포함한다. 또한, 스칼라 실행 유닛은 제1 클럭 주파수로 실행하고, 벡터 실행 유닛은 제2 클럭 주파수로 실행한다. 상기 B 방법은 애플리케이션의 흐름 제어 알고리즘을 실행하도록 구성된 스칼라 실행 유닛 및 애플리케이션의 픽셀 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 또한, 벡터 실행 유닛은 스칼라 실행 유닛의 제어하에 요구 구동 기반으로 동작하도록 구성된다. 또한, 스칼라 실행 유닛은 메모리 커맨드 FIFO를 이용하여 벡터 실행 유닛에 기능 호출들을 전송하도록 구성되며, 벡터 실행 유닛은 메모리 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작한다. 또한, 비디오 프로세서의 비동기 동작은 애플리케이션의 벡터 서브 루틴 또는 스칼라 서브 루틴의 개별적인 독립적 갱신을 지원하도록 구성된다. 마지막으로, 상기 B 방법은 VLIW(very long instruction word) 코드를 이용하여 동작하도록 구성된 스칼라 실행 유닛을 포함한다.
C) 본 명세서에 설명되는 방법은 또한 비디오 처리 동작을 실행하기 위한 비디오 프로세서에서의 스트림 기반 메모리 액세스를 위한 방법을 광범위하게 교시하고 있는데, 이 방법은 스칼라 실행 유닛을 이용하여 스칼라 비디오 처리 동작을 실행하는 단계; 벡터 실행 유닛을 이용하여 벡터 비디오 처리 동작을 실행하는 단계; 프레임 버퍼 메모리를 이용하여 스칼라 실행 유닛 및 벡터 실행 유닛에 대한 데이터를 저장하는 단계; 및 메모리 인터페이스를 이용하여 스칼라 실행 유닛 및 벡터 실행 유닛과 프레임 버퍼 메모리 간의 통신을 구현하는 단계를 포함하고, 상기 프레임 버퍼 메모리는 복수의 타일을 포함하고, 상기 메모리 인터페이스는 벡터 실행 유닛 또는 스칼라 실행 유닛에 대해 제1 순차적 타일 액세스를 포함하는 제1 스트림을 구현하고, 제2 순차적 타일 액세스를 포함하는 제2 스트림을 구현한다. 상기 C 방법은 또한 적어도 하나의 프리페치 타일을 포함하는 제1 스트림 및 제2 스트림을 갖는다. 상기 C 방법은 프레임 버퍼 메모리 내의 제1 위치로부터 발원되는 제1 스트림, 및 프레임 버퍼 메모리의 제2 위치로부터 발원되는 제2 스트림을 더 포함한다. 상기 C 방법은 복수의 상이한 발원 위치로부터의 그리고 복수의 상이한 종료 위치로의 복수의 스트림을 관리하도록 구성된 메모리 인터페이스를 더 포함한다. 이와 관련하여, 발원 위치들 중 적어도 하나 또는 종료 위치들 중 적어도 하나는 시스템 메모리 내에 있다. 상기 C 방법은 메모리 인터페이스 내에 구축된 DMA 엔진을 이용하여 제1 스트림 및 제2 스트림을 지원하기 위해 복수의 메모리 판독을 구현하고, 제1 스트림 및 제2 스트림을 지원하기 위해 복수의 메모리 기입을 구현하는 단계를 더 포함한다. 또한, 상기 C 방법은 제2 스트림보다 높은 양의 지연을 경험하는 제1 스트림을 포함하고, 제1 스트림은 제2 스트림보다 많은 수의 타일 저장용 버퍼를 포함한다. 상기 C 방법은 또한 제1 스트림 또는 제2 스트림의 지연을 보상하기 위하여 제1 스트림 또는 제2 스트림의 조정 가능한 수의 타일들을 프리페치하도록 구성된 메모리 인터페이스를 포함한다.
D) 본 명세서에 설명되는 방법은 또한 지연 감내 비디오 처리 동작을 위한 방법을 광범위하게 포함하는데, 이 방법은 호스트 인터페이스를 이용하여 비디오 프로세서와 호스트 CPU 간의 통신을 구현하는 단계; 호스트 인터페이스에 연결된 스칼라 실행 유닛을 이용하여 스칼라 비디오 처리 동작을 실행하는 단계; 호스트 인터페이스에 연결된 벡터 실행 유닛을 이용하여 벡터 비디오 처리 동작을 실행하는 단계; 벡터 실행 유닛이 메모리 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작할 수 있게 하는 단계; 메모리 인터페이스를 이용하여 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하는 단계; 및 메모리 인터페이스 내에 구축되고 벡터 실행 유닛에 대한 데이터 및 명령을 데이터 저장 메모리 및 명령 캐시에 로딩하도록 구성된 DMA 엔진을 이용하여 복수의 상이한 메모리 위치 간의 DMA 전달을 구현하는 단계를 포함한다. 상기 D 방법은 요구 구동 기반으로 동작하기 위하여 커맨드 FIFO를 액세스함으로써 스칼라 실행 유닛에 관하여 비동기적으로 동작하도록 구성된 벡터 실행 유닛을 더 포함한다. 상기 D 방법은 상이한 메모리 위치들에서 벡터 실행 유닛의 커맨드 FIFO로의 데이터 전달의 지연을 숨기도록 구성된 요구 구동 기반을 더 포함한다. 또한, 상기 D 방법은 알고리즘 흐름 제어 처리를 구현하도록 구성된 스칼라 실행 유닛을 포함하고, 벡터 실행 유닛은 비디오 처리 작업 부하의 대부분을 구현하도록 구성된다. 이와 관련하여, 스칼라 실행 유닛은 데이터 전달 지연을 숨기기 위하여 벡터 실행 유닛에 대한 작업 파라미터를 사전 계산하도록 구성된다. 상기 D 방법은 벡터 서브 루틴의 후속 실행을 위한 커맨드를 프리페치하기 위해 DMA 엔진을 통해 메모리 판독을 스케쥴링하도록 구성된 벡터 실행 유닛을 포함한다. 여기서, 메모리 판독은 스칼라 실행 유닛에 의한 벡터 서브 루틴의 호출 이전에 벡터 서브 루틴의 실행을 위한 커맨드를 프리페치하도록 스케쥴링된다.
본 발명의 또다른 특징에 따르면, 제1 양태는, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛; 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛; 및 상기 벡터 실행 유닛에 대한 데이터를 저장하기 위한 데이터 저장 메모리를 포함하고, 상기 데이터 저장 메모리는 어레이로 배열된 대칭 뱅크 데이터 구조들을 포함하는 복수의 타일을 포함하고, 상기 뱅크 데이터 구조들은 각각의 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성되는 시스템이다.
본 발명의 제2 양태는, 제1 양태에 있어서, 상기 시스템은 비디오 처리 동작을 실행하기 위한 비디오 프로세서용의 다차원 데이터 경로 처리 시스템이다.
본 발명의 제3 양태는, 비디오 처리 동작을 지원하기 위한 다차원 데이터 경로 처리용 시스템으로서, 마더보드; 상기 마더보드에 연결된 호스트 CPU; 및 상기 마더보드 및 상기 CPU에 연결되고, 제1항의 시스템을 포함하는 비디오 프로세서를 포함하는 시스템이다.
본 발명의 제4 양태는, 제1 내지 제3 양태 중 어느 한 양태에 있어서, 상기 뱅크 데이터 구조들 각각은 4x4 패턴으로 배열된 복수의 타일을 포함한다.
본 발명의 제5 양태는, 제1 내지 제3 양태 중 어느 한 양태에 있어서, 상기 뱅크 데이터 구조들 각각은 8x8 또는 8x16 또는 16x24 패턴으로 배열된 복수의 타일을 포함한다.
본 발명의 제6 양태는, 제1 내지 제3 양태 중 어느 한 양태에 있어서, 상기 뱅크 데이터 구조들은 각각의 뱅크 데이터 구조의 상이한 타일들로의 액세스를 지원하도록 구성되고, 적어도 하나의 액세스는 2개의 상기 뱅크 데이터 구조들의 타일들의 행을 포함하는 2개의 인접한 뱅크 데이터 구조들에 대한 것이다.
본 발명의 제7 양태는, 제1 내지 제3 양태 중 어느 한 양태에 있어서, 상기 타일들은 각각의 뱅크 데이터 구조의 상이한 타일들로의 액세스를 지원하도록 구성되고, 적어도 하나의 액세스는 2개의 인접한 상기 뱅크 데이터 구조들의 타일들의 열을 포함하는 2개의 인접한 뱅크 데이터 구조들에 대한 것이다.
본 발명의 제8 양태는, 제1 내지 제3 양태 중 어느 한 양태에 있어서, 상기 데이터 저장 메모리에 연결되고, 상기 복수의 뱅크 데이터 구조의 타일들을 액세스하기 위한 구성을 선택하기 위한 크로스바를 더 포함한다.
본 발명의 제9 양태는, 제8 양태에 있어서, 상기 크로스바는 데이터를 벡터 데이터 경로에 클럭 단위 기반으로 제공하기 위해 상기 복수의 뱅크 데이터 구조의 타일들을 액세스한다.
본 발명의 제10 양태는, 제9 양태에 있어서, 상기 크로스바에 의해 액세스되는 상기 복수의 뱅크 데이터 구조의 타일들을 수신하고, 상기 타일들을 벡터 데이터 경로의 프론트 엔드에 클럭 단위 기반으로 제공하는 콜렉터를 더 포함한다.
본 발명의 제11 양태는, 비디오 처리 동작을 실행하기 위한 비디오 프로세서로서, 상기 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스; 상기 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스; 상기 호스트 인터페이스 및 상기 메모리 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛; 및 상기 호스트 인터페이스 및 상기 메모리 인터페이스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함하는 비디오 프로세서이다.
본 발명의 제12 양태는, 비디오 처리 동작을 실행하기 위한 시스템으로서, 마더보드; 상기 마더보드에 연결된 호스트 CPU; 및 상기 마더보드 및 상기 CPU에 연결된 제11 양태의 상기 비디오 프로세서를 포함하는 시스템이다.
본 발명의 제13 양태는, 제11 양태에 있어서, 상기 스칼라 실행 유닛은 상기 비디오 프로세서의 제어기로서 기능하고, 상기 벡터 실행 유닛의 동작을 제어한다.
본 발명의 제14 양태는, 제11 양태에 있어서, 상기 스칼라 실행 유닛을 상기 벡터 실행 유닛과 인터페이스하기 위한 벡터 인터페이스 유닛을 더 포함한다.
본 발명의 제15 양태는, 제11 양태에 있어서, 상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛은 비동기적으로 동작하도록 구성된다.
본 발명의 제16 양태는, 제15 양태의 비디오 프로세서 또는 제12 양태의 시스템으로서, 상기 스칼라 실행 유닛은 제1 클럭 주파수로 실행하고, 상기 벡터 실행 유닛은 제2 클럭 주파수로 실행한다.
본 발명의 제17 양태는, 제11 양태의 비디오 프로세서 또는 제12 양태의 시스템으로서, 상기 스칼라 실행 유닛은 애플리케이션의 흐름 제어 알고리즘을 실행하도록 구성되고, 상기 벡터 실행 유닛은 상기 애플리케이션의 픽셀 처리 동작을 실행하도록 구성된다.
본 발명의 제18 양태는, 제17 양태에 있어서, 상기 벡터 실행 유닛은 상기 스칼라 실행 유닛의 제어하에 요구 구동 기반으로(on a demand driven basis) 동작하도록 구성된다.
본 발명의 제19 양태는, 제17 양태에 있어서, 상기 스칼라 실행 유닛은 커맨드 FIFO를 이용하여 상기 벡터 실행 유닛에 기능 호출들(function calls)을 전송하도록 구성되고, 상기 벡터 실행 유닛은 상기 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작한다.
본 발명의 제20 양태는, 제17 양태에 있어서, 상기 비디오 프로세서의 비동기적인 동작은 상기 애플리케이션의 벡터 서브 루틴 또는 스칼라 서브 루틴의 개별적인 독립적 갱신을 지원하도록 구성된다.
본 발명의 제21 양태는, 제11 양태에 있어서, 상기 스칼라 실행 유닛은 VLIW(very long instruction word) 코드를 이용하여 동작하도록 구성된다.
본 발명의 제22 양태는, 비디오 처리 동작을 실행하기 위한 비디오 프로세서용 스트림 기반 메모리 액세스 시스템으로서, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛; 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛; 상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛에 대한 데이터를 저장하기 위한 프레임 버퍼 메모리; 및 상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛과 상기 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스를 포함하고, 상기 프레임 버퍼 메모리는 복수의 타일을 포함하고, 상기 메모리 인터페이스는 상기 벡터 실행 유닛 또는 상기 스칼라 실행 유닛에 대해 제1 순차적 타일 액세스를 포함하는 제1 스트림을 구현하고, 제2 순차적 타일 액세스를 포함하는 제2 스트림을 구현하는 시스템이다.
본 발명의 제23 양태는, 비디오 처리 동작을 지원하기 위해 스트림 기반 메모리 액세스들을 실행하는 시스템으로서, 마더보드; 상기 마더보드에 연결되는 호스트 CPU; 상기 마더보드 및 상기 CPU에 연결된 비디오 프로세서 - 상기 비디오 프로세서는, 상기 비디오 프로세서와 상기 호스트 CPU 간의 통신을 설정하기 위한 호스트 인터페이스, 상기 호스트 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛, 및 상기 호스트 인터페이스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함함 - ; 및 상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛에 연결되고, 상기 스칼라 실행 유닛과 상기 벡터 실행 유닛과 프레임 버퍼 메모리 간의 스트림 기반 통신을 설정하기 위한 메모리 인터페이스를 포함하고, 상기 프레임 버퍼 메모리는 복수의 타일을 포함하고, 상기 메모리 인터페이스는 상기 벡터 실행 유닛 또는 상기 스칼라 실행 유닛에 대해 제1 순차적 타일 액세스를 포함하는 제1 스트림을 구현하고, 제2 순차적 타일 액세스를 포함하는 제2 스트림을 구현하는 시스템이다.
본 발명의 제24 양태는, 제22 양태에 있어서, 상기 제1 스트림 및 상기 제2 스트림은 적어도 하나의 프리페치된 타일(prefetched tile)을 포함한다.
본 발명의 제25 양태는, 제22 양태에 있어서, 상기 제1 스트림은 상기 프레임 버퍼 메모리 내의 제1 위치로부터 발원되고, 상기 제2 스트림은 상기 프레임 버퍼 메모리 내의 제2 위치로부터 발원된다.
본 발명의 제26 양태는, 제22 또는 제23 양태에 있어서, 상기 메모리 인터페이스는 복수의 상이한 발원 위치로부터, 그리고 복수의 상이한 종료 위치까지의 복수의 스트림을 관리하도록 구성된다.
본 발명의 제27 양태는, 제26 양태에 있어서, 상기 발원 위치들 중 적어도 하나 또는 상기 종료 위치들 중 적어도 하나는 시스템 메모리 내에 있다.
본 발명의 제28 양태는, 제22 또는 제23 양태에 있어서, 상기 메모리 인터페이스 내에 구축되고, 상기 제1 스트림 및 상기 제2 스트림을 지원하기 위해 복수의 메모리 판독을 구현하고, 상기 제1 스트림 및 상기 제2 스트림을 지원하기 위해 복수의 메모리 기입을 구현하도록 구성된 DMA 엔진을 더 포함한다.
본 발명의 제29 양태는, 제22 또는 제23 양태에 있어서, 상기 제1 스트림은 상기 제2 스트림보다 더 높은 양의 지연을 경험하고, 상기 제1 스트림은 상기 제2 스트림보다 많은 수의 타일 저장용 버퍼들을 통합한다.
본 발명의 제30 양태는, 제22 또는 제23 양태에 있어서, 상기 메모리 인터페이스는 상기 제1 스트림 또는 상기 제2 스트림의 지연을 보상하기 위하여 상기 제1 스트림 또는 상기 제2 스트림의 조정 가능한 수의 타일을 프리페치하도록 구성된다.
본 발명의 제31 양태는, 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스; 상기 호스트 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛; 상기 호스트 인터페이스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛; 커맨드 FIFO로서, 상기 벡터 실행 유닛이 상기 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작할 수 있게 하는 커맨드 FIFO; 상기 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스; 및 상기 메모리 인터페이스 내에 구축되고, 복수의 상이한 메모리 위치 간의 DMA 전달을 구현하고, 데이터 저장 메모리 및 명령 캐시에 상기 벡터 실행 유닛에 대한 데이터 및 명령을 로딩하기 위한 DMA 엔진을 포함하는 시스템이다.
본 발명의 제32 양태는, 제31 양태에 있어서, 상기 시스템은 비디오 처리 동작을 실행하기 위한 지연 감내 시스템(latency tolerant system)이다.
본 발명의 제33 양태는, 제32 양태에 있어서, 마더보드; 상기 마더보드에 연결된 호스트 CPU; 상기 마더보드 및 상기 CPU에 연결된 비디오 프로세서를 더 포함한다.
본 발명의 제34 양태는, 제31 내지 제33 양태 중 어느 한 양태에 있어서, 상기 벡터 실행 유닛은 요구 구동 기반으로 동작하기 위하여 상기 커맨드 FIFO를 액세스함으로써 상기 스칼라 실행 유닛에 대하여 비동기적으로 동작하도록 구성된다.
본 발명의 제35 양태는, 제31 내지 제33 양태 중 어느 한 양태에 있어서, 상기 요구 구동 기반은 상기 상이한 메모리 위치들로부터 상기 벡터 실행 유닛의 커맨드 FIFO로의 데이터 전달의 지연을 숨기도록 구성된다.
본 발명의 제36 양태는, 제31 내지 제33 양태 중 어느 한 양태에 있어서, 상기 스칼라 실행 유닛은 알고리즘 흐름 제어 처리를 구현하도록 구성되고, 상기 벡터 실행 유닛은 비디오 처리 작업 부하의 대부분을 구현하도록 구성된다.
본 발명의 제37 양태는, 제36 양태에 있어서, 상기 스칼라 실행 유닛은 데이터 전달 지연을 숨기기 위해 상기 벡터 실행 유닛에 대한 작업 파라미터들을 사전 계산하도록 구성된다.
본 발명의 제38 양태는, 제31 양태에 있어서, 상기 벡터 실행 유닛은 벡터 서브 루틴의 후속 실행을 위한 커맨드들을 프리페치하기 위해 상기 DMA 엔진을 통해 메모리 판독을 스케쥴링하도록 구성된다.
본 발명의 제39 양태는, 제38 양태에 있어서, 상기 메모리 판독은 상기 스칼라 실행 유닛에 의한 상기 벡터 서브 루틴에 대한 호출 이전에 상기 벡터 서브 루틴의 실행을 위한 커맨드들을 프리페치하도록 스케쥴링된다.
본 발명의 제40 양태는, 제33 양태에 있어서, 상기 벡터 실행 유닛은 벡터 서브 루틴의 후속 실행을 위한 커맨드들을 프리페치하기 위해 상기 DMA 엔진을 통해 메모리 판독을 스케쥴링하도록 구성되고, 상기 메모리 판독은 상기 스칼라 실행 유닛에 의한 상기 벡터 서브 루틴에 대한 호출 이전에 상기 벡터 서브 루틴의 실행을 위한 커맨드들을 프리페치하도록 스케쥴링된다.
본 발명의 실시예들은 집적 회로 실리콘 다이 면적, 트랜지스터 수, 메모리 속도 요건 등을 효율적으로 이용하면서 정교한 비디오 처리 기능들을 지원하는 새로운 비디오 프로세서 아키텍처를 제공한다. 본 발명의 실시예들은 다수의 비디오 스트림을 처리하기 위하여 높은 연산 밀도를 유지하며, 쉽게 스케일링이 가능하다. 본 발명의 실시예들은 예를 들어 MPEG-2/WMV9/H.264 인코드 지원(예를 들어, 루프내 디코더), MPEG-2/WMV9/H.264 디코드(예를 들어, 포스트 엔트로피 디코딩), 및 루프내/루프외 비블록킹 필터와 같은 다수의 정교한 비디오 처리 동작을 제공할 수 있다.
본 발명의 실시예들에 의해 제공되는 추가적인 비디오 처리 동작은 예를 들어 향상된 모션 적응 디인터레이싱, 인코딩을 위한 입력 잡음 필터링, 다위상 스케일링/리샘플링, 및 서브 픽처 합성을 포함한다. 본 발명의 비디오 프로세서 아키텍처는 또한 예를 들어 칼라 공간 변환, 칼라 공간 조정, 샤프닝, 히스토그램 조정과 같은 픽셀 포인트 조작, 및 다양한 비디오 표면 포맷 변환과 같은 소정의 비디오 프로세서-증폭기(프로캠프) 애플리케이션에 이용될 수 있다.
본 발명은 한정적이 아니라 예시적으로 설명되며, 첨부 도면들에서 동일한 참조 번호는 유사한 요소를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 기본 컴포넌트를 나타내는 개략도.
도 2는 본 발명의 일 실시예에 따른 비디오 프로세서의 내부 컴포넌트를 나타내는 도면.
도 3은 본 발명의 일 실시예에 따른 비디오 프로세서에 대한 예시적인 소프트웨어 프로그램을 나타내는 도면.
도 4는 본 발명의 일 실시예에 따른 비디오 프로세서를 이용하는 비디오와의 서브 픽처 혼합의 일례를 나타내는 도면.
도 5는 본 발명의 일 실시예에 따른 벡터 실행 유닛의 내부 컴포넌트를 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른 대칭 타일 어레이를 구비한 데이터 저장 메모리의 레이아웃을 나타내는 도면.
이제 본 발명의 바람직한 실시예들을 상세히 참조하는데, 그 예는 첨부 도면들에 도시되어 있다. 본 발명은 바람직한 실시예들과 관련하여 설명되지만, 본 발명은 이들 실시예에 한정되는 것은 아니라는 것을 이해할 것이다. 오히려, 본 발명은 첨부된 청구범위에 의해 정의되는 발명의 사상 및 범위 내에 포함될 수 있는 대안, 변형 및 균등물을 포함하는 것으로 의도한다. 더욱이, 아래의 본 발명의 실시예들의 상세한 설명에서, 다양한 특정 상세는 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세 없이도 실시될 수 있다는 것을 이 분야의 전문가들은 이해할 것이다. 다른 사례에서, 본 발명의 실시예들의 양태를 불필요하게 불명확하게 하지 않기 위하여 공지 방법, 프로시저, 컴포넌트 및 회로는 상세히 설명되지 않는다.
기호 및 용어
이어지는 상세한 설명의 몇몇 부분은 프로시저, 단계, 논리 블록, 처리 및 컴퓨터 메모리 내의 데이터 비트 상의 동작의 다른 기호 표현을 이용하여 제공된다. 이들 설명 및 표현은 데이터 처리 분야의 전문가들이 그들의 작업의 내용을 다른 전문가에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 본 명세서에서, 일반적으로, 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세서 등은 원하는 결과를 도출하는 단계들 또는 명령들의 모순 없는 시퀀스인 것으로 고려된다. 이 단계들은 물리량의 물리적 조작을 요구하는 단계들이다. 통상적으로, 반드시 그렇지는 않지만, 이들 양은 컴퓨터 시스템에서 저장, 전송, 조합, 비교 및 조작될 수 있는 전기 또는 자기적 신호의 형태를 갖는다. 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 수 등으로 지칭하는 것이 때때로 주로 일반적인 사용을 위해 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 이들 양에 적용되는 편리한 라벨일 뿐이라는 것에 유의해야 한다. 아래의 설명으로부터 명백하듯이, 특별히 달리 언급되지 않는 한, 본 발명을 통해, "처리" 또는 "액세스" 또는 "실행" 또는 "저장" 또는 "렌더링" 등과 같은 용어를 이용하는 설명은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표현되는 데이터를, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 장치 내의 물리량으로 유사하게 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100)) 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭하는 것으로 이해된다.
컴퓨터 시스템 플랫폼
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 나타낸다. 컴퓨터 시스템(100)은 소정의 하드웨어 기반 및 소프트웨어 기반 기능을 위한 실행 플랫폼을 제공하는 본 발명의 실시예들에 따른 기본 컴퓨터 시스템의 컴포넌트들을 나타낸다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115), 적어도 하나의 그래픽 프로세서 유닛(GPU;110) 및 하나의 비디오 프로세서 유닛(VPU;111)을 포함한다. CPU(101)는 브리지 컴포넌트(105)를 통해 시스템 메모리(115)에 연결되거나 CPU(101) 내부의 메모리 제어기(도시되지 않음)를 통해 시스템 메모리(115)에 직접 연결될 수 있다. 브리지 컴포넌트(105; 예를 들어, 노스브리지)는 다양한 I/O 장치들(예를 들어, 하나 이상의 하드 디스크 드라이브, 이더넷 어댑터, CD ROM, DVD 등)을 접속시키는 확장 버스들을 지원할 수 있다. GPU(110) 및 비디오 프로세서 유닛(111)은 디스플레이(112)에 연결된다. 연산 능력을 더 향상시키기 위하여 하나 이상의 추가 GPU가 옵션으로 시스템(100)에 연결될 수 있다. GPU(110) 및 비디오 프로세서 유닛(111)은 브리지 컴포넌트(105)를 통해 CPU(101) 및 시스템 메모리(115)에 연결된다. 시스템(100)은 예를 들어 전용 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 구비한 데스크탑 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로서 구현될 수 있다. 이러한 실시예에서, 주변 버스, 특수 그래픽 메모리 및 시스템 메모리, I/O 장치 등을 추가하는 컴포넌트들이 포함될 수 있다. 마찬가지로, 시스템(100)은 핸드헬드 장치(예를 들어, 셀폰 등) 또는 예를 들어 워싱톤 레드먼드의 마이크로소프트사로부터 입수할 수 있는 Xbox(등록 상표) 또는 일본, 도꾜의 소니 컴퓨터 엔터테인먼트사로부터 입수할 수 있는 PlayStation3(등록 상표)와 같은 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다.
GPU(110)는 개별 컴포넌트, 커넥터(예를 들어, AGP 슬롯, PCI 익스프레스 슬롯 등)를 통해 컴퓨터 시스템에 연결되도록 설계된 개별 그래픽 카드, 개별 집적 회로 다이(예를 들어, 마더보드에 직접 실장됨), 또는 컴퓨터 시스템 칩셋 컴포넌트의 집적 회로 다이 내에 포함된 집적 GPU(예를 들어, 브리지 칩(105) 내에 집적됨)로서 구현될 수 있다는 것을 이해해야 한다. 또한, 높은 대역폭 그래픽 데이터 저장을 위해 GPU(110)에 대해 로컬 그래픽 메모리가 포함될 수 있다. 또한, GPU(110) 및 비디오 프로세서 유닛(111)은 동일 집적 회로 다이 상에 집적되거나(예를 들어, 컴포넌트(120)로서) 컴퓨터 시스템(100)의 마더보드에 접속되거나 그 위에 실장되는 개별 집적 회로 컴포넌트들일 수 있다는 것을 이해해야 한다.
본 발명의 실시예들
도 2는 본 발명의 일 실시예에 따른 비디오 프로세서 유닛(111)의 내부 컴포넌트를 나타내는 도면이다. 도 2에 도시된 바와 같이, 비디오 프로세서 유닛(111)은 스칼라 실행 유닛(201), 벡터 실행 유닛(202), 메모리 인터페이스(203) 및 호스트 인터페이스(204)를 포함한다.
도 2의 실시예에서, 비디오 프로세서 유닛(이하 간단히 비디오 프로세서라 함; 111)은 비디오 처리 동작을 실행하기 위한 기능 컴포넌트들을 포함한다. 비디오 프로세서(111)는 호스트 인터페이스(204)를 이용하여 브리지(105)를 통해 비디오 프로세서(111)와 호스트 CPU(101) 간의 통신을 설정한다. 비디오 프로세서(111)는 메모리 인터페이스(203)를 이용하여 비디오 프로세서(111)와 프레임 버퍼 메모리(205)(예를 들어, 도시되지 않은 연결된 디스플레이(112)를 위한 것임) 간의 통신을 설정한다. 스칼라 실행 유닛(201)은 호스트 인터페이스(204) 및 메모리 인터페이스(203)에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된다. 벡터 실행 유닛은 호스트 인터페이스(204) 및 메모리 인터페이스(203)에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된다.
도 2의 실시예는 비디오 프로세서(111)가 그의 실행 기능을 스칼라 동작 및 벡터 동작으로 분할하는 방식을 설명한다. 스칼라 동작은 스칼라 실행 유닛(201)에 의해 구현된다. 벡터 동작은 벡터 실행 유닛(202)에 의해 구현된다.
일 실시예에서, 벡터 실행 유닛(202)은 스칼라 실행 유닛(201)에 대해 슬레이브 코프로세서로서 기능하도록 구성된다. 이러한 실시예에서, 스칼라 실행 유닛은 벡터 실행 유닛(202)에 제어 스트림을 공급하고 벡터 실행 유닛(202)에 대한 데이터 입출력을 관리함으로써 벡터 실행 유닛(202)의 작업 부하를 관리한다. 제어 스트림은 일반적으로 기능 파라미터, 서브루틴 독립 변수 등을 포함한다. 대표적인 비디오 처리 애플리케이션에서, 애플리케이션의 처리 알고리즘의 제어 흐름은 스칼라 실행 유닛(210) 상에서 실행되는 반면, 실제 픽셀/데이터 처리 동작은 벡터 실행 유닛(202) 상에서 구현된다.
도 2를 계속 참조하면, 스칼라 실행 유닛(201)은 RISC 기반 실행 기술을 포함하는 RISC 스타일 스칼라 실행 유닛으로서 구현될 수 있다. 벡터 실행 유닛(202)은 예를 들어 하나 이상의 SIMD 파이프라인을 구비한 SIMD 머신으로서 구현될 수 있다. 예를 들어, SIMD 파이프라인 실시예에서, 각각의 SIMD 파이프라인은 16 픽셀 폭의 데이터 경로(또는 더 넓음)로 구현되며, 따라서 벡터 실행 유닛(202)에 클럭당 최대 32 픽셀의 결과적인 데이터 출력을 생성하는 순수한 컴퓨팅 능력을 제공할 수 있다. 일 실시예에서, 스칼라 실행 유닛(201)은 클럭 단위로 스칼라 동작의 병렬 실행을 최적화하기 위해 VLIW 소프트웨어 코드를 이용하여 동작하도록 구성된 하드웨어를 포함한다.
도 2의 실시예에서, 스칼라 실행 유닛(201)은 스칼라 프로세서(210)에 연결된 명령 캐시(211) 및 데이터 캐시(212)를 포함한다. 캐시들(211, 212)은 예를 들어 프레임 버퍼(205)와 같은 외부 메모리로의 액세스를 위해 메모리 인터페이스(203)와 인터페이스한다. 스칼라 실행 유닛(201)은 벡터 실행 유닛(202)과의 통신을 설정하기 위한 벡터 인터페이스 유닛(213)을 더 포함한다. 일 실시예에서, 벡터 인터페이스 유닛(213)은 스칼라 실행 유닛(201)과 벡터 실행 유닛(202) 간의 비동기 통신을 가능하게 하도록 구성된 하나 이상의 동기 메일 박스(214)를 포함할 수 있다.
도 2의 실시예에서, 벡터 실행 유닛(202)은 벡터 실행 데이터 경로, 즉 벡터 데이터 경로(221)의 동작을 제어하도록 구성된 벡터 제어 유닛(220)을 포함한다. 벡터 제어 유닛(220)은 스칼라 실행 유닛(201)으로부터 명령 및 데이터를 수신하기 위한 커맨드 FIFO(225)를 포함한다. 벡터 제어 유닛(220)에 명령을 제공하도록 명령 캐시가 연결된다. 벡터 데이터 경로(221)에 입력 데이터를 제공하고 벡터 데이터 경로(221)로부터 결과적인 데이터를 수신하도록 데이터 저장 메모리(223)가 연결된다. 데이터 저장 메모리(223)는 벡터 데이터 경로(221)에 대한 명령 캐시 및 데이터 RAM으로서 기능한다. 명령 캐시(222) 및 데이터 저장 메모리(223)는 프레임 버퍼(205)와 같은 외부 메모리를 액세스하기 위해 메모리 인터페이스(203)에 연결된다. 도 2의 실시예는 또한 제2 데이터 벡터 경로(231) 및 각각의 제2 데이터 저장 메모리(223)(예를 들어, 점선)를 나타낸다. 제2 벡터 데이터 경로(231) 및 제2 데이터 저장 메모리(233)는 벡터 실행 유닛(202)이 2개의 벡터 실행 파이프라인(예를 들어, 듀얼 SIMD 파이프라인 구성)을 갖는 사례를 나타내도록 도시된다는 것을 이해해야 한다. 본 발명의 실시예들은 많은 수의 벡터 실행 파이프라인(예를 들어, 4, 8, 16 등)을 가진 벡터 실행 유닛에 적합하다.
스칼라 실행 유닛(201)은 벡터 실행 유닛(202)에 대해 데이터 및 커맨드 입력을 제공한다. 일 실시예에서, 스칼라 실행 유닛(201)은 메모리 맵핑된 커맨드 FIFO(225)를 이용하여 벡터 실행 유닛(202)에 기능 호출들을 전송한다. 벡터 실행 유닛(202) 커맨드는 커맨드 FIFO(225) 내에 큐잉된다.
커맨드 FIFO(225)의 사용은 스칼라 실행 유닛(201)과 벡터 실행 유닛(202)을 효과적으로 분리한다. 스칼라 실행 유닛(201)은 그 자신의 개별 클럭 상에서 기능하여, 벡터 실행 유닛(202)의 클럭 주파수와 다르고 개별적으로 제어될 수 있는 그 자신의 개별 클럭 주파수로 동작할 수 있다.
커맨드 FIFO(225)는 벡터 실행 유닛(202)이 요구 구동 유닛으로서 동작하는 것을 가능하게 한다. 예를 들어, 작업이 스칼라 실행 유닛(201)에서 커맨드 FIFO(225)로 핸드 오프된 후, 분리 비동기 방식으로 처리하기 위해 벡터 실행 유닛(202)에 의해 액세스될 수 있다. 벡터 실행 유닛(202)은 이런 식으로 필요에 따라 또는 요구에 따라 스칼라 실행 유닛(201)에 의해 그의 작업 부하를 처리한다. 이러한 기능은 벡터 실행 유닛(202)이 최대 성능이 요구되지 않을 때 (예를 들어, 하나 이상의 내부 클럭을 줄이거나 정지시킴으로써) 능력을 보존하는 것을 가능하게 한다.
비디오 처리 기능의 스칼라 부분(예를 들어, 스칼라 실행 유닛(201)에 의한 실행을 위해) 및 벡터 부분(예를 들어, 벡터 실행 유닛(202)에 의한 실행을 위해)으로의 분할은 비디오 프로세서(111)에 대해 구축된 비디오 처리 프로그램들이 개별 스칼라 소프트웨어 코드 및 벡터 소프트웨어 코드로 컴파일되는 것을 가능하게 한다. 스칼라 소프트웨어 코드 및 벡터 소프트웨어 코드는 개별적으로 컴파일된 후, 함께 링크되어 코히런트 애플리케이션을 형성할 수 있다.
분할(partitioning)은 벡터 소프트웨어 코드 함수들이 스칼라 소프트웨어 코드 함수들과 별개로 다르게 작성되는 것을 가능하게 한다. 예를 들어, 벡터 함수들은 개별적으로(예를 들어, 상이한 시간에, 상이한 엔지니어 팀에 의해 등) 작성될 수 있으며, 스칼라 함수들(스칼라 스레드, 프로세스 등)에 의해/과 함께 사용하기 위해 하나 이상의 서브루틴 또는 라이브러리 함수로서 제공될 수 있다. 이것은 스칼라 소프트웨어 코드 및/또는 벡터 소프트웨어 코드의 개별적인 독립적 갱신을 가능하게 한다. 예를 들어, 벡터 서브루틴이 스칼라 서브루틴과 독립적으로 (예를 들어, 사전 배포된 프로그램, 배포된 프로그램의 기능을 향상시키기 위해 추가된 새로운 특징 등의 갱신을 통해) 갱신될 수 있으며, 그 역도 성립한다. 분할은 스칼라 프로세서(210)의 개별 캐시(예를 들어, 캐시 211, 212) 및 벡터 제어 유닛(220) 및 벡터 데이터 경로(221)의 개별 캐시(예를 들어, 캐시 222, 223)에 의해 용이해진다. 전술한 바와 같이, 스칼라 실행 유닛(201) 및 벡터 실행 유닛(202)은 커맨드 FIFO(225)를 통해 통신한다.
도 3은 본 발명의 일 실시예에 따른 비디오 프로세서(111)용의 예시적인 소프트웨어 프로그램(300)을 나타내는 도면이다. 도 3에 도시된 바와 같이, 소프트웨어 프로그램(300)은 비디오 프로세서(111)에 대한 프로그래밍 모델의 속성을 나타내며, 이에 의해 스칼라 제어 스레드(301)가 벡터 데이터 스레드(302)와 함께 비디오 프로세서(111)에 의해 실행된다.
도 3의 실시예의 소프트웨어 프로그램(300)의 예는 비디오 프로세서(111)에 대한 프로그래밍 모델을 나타내며, 이에 의해 스칼라 실행 유닛(301) 상의 스칼라 제어 프로그램(예를 들어, 스칼라 제어 스레드 301)이 벡터 실행 유닛(202) 상에서 서브루틴 호출(예를 들어, 벡터 데이터 스레드(302)을 실행한다. 소프트웨어 프로그램(300)의 예는 컴파일러 또는 소프트웨어 프로그래머가 비디오 처리 애플리케이션을 스칼라 부분(예를 들어, 제1 스레드) 및 벡터 부분(예를 들어, 제2 스레드)으로 분할한 사례를 나타낸다.
도 3에 도시된 바와 같이, 스칼라 실행 유닛(201) 상에서 실행되는 스칼라 제어 스레드(301)는 재빨리 작업 파라미터를 계산하고 이들 파라미터를 처리 작업의 대부분을 수행하는 벡터 실행 유닛(202)에 공급한다. 전술한 바와 같이, 2개의 스레드(301, 302)에 대한 소프트웨어 코드는 개별적으로 작성되고 컴파일될 수 있다.
스칼라 스레드는 다음을 담당한다.
1. 호스트 유닛(204)과의 인터페이싱 및 클래스 인터페이스의 구현
2. 벡터 실행 유닛(202)의 초기화, 셋업 및 구성
3. 루프 내의 작업 유닛들, 청크들 또는 작업 세트들 내의 알고리즘을 실행하여, 각각의 반복에 의해
a. 현재 작업 세트에 대한 파라미터가 계산되고,
b. 벡터 실행 유닛으로의 입력 데이터 전달이 개시되고,
c. 벡터 실행 유닛으로부터의 출력 데이터의 전달이 개시된다.
스칼라 스레드의 대표적인 실행 모델은 "파이어 앤드 포겟(fire-and-forget"이다. 파이어 앤드 포겟이라는 용어는, 비디오 기저 대역 처리 애플리케이션에 대한 대표적인 모델에 대해 커맨드 및 데이터가 스칼라 실행 유닛(201)으로부터 (예를 들어, 커맨드 FIFO(225)를 통해) 벡터 실행 유닛(202)으로 전송되고 알고리즘이 완료될 때까지 벡터 실행 유닛(202)으로부터 리턴 데이터가 존재하지 않는 속성을 지칭한다.
도 3의 프로그램(300) 예에서, 스칼라 실행 유닛(201)은 커맨드 FIFO(225) 내에 어떠한 공간도 더 이상 존재하지 않을 때까지(예를 들어, lend_of_alg &!cmd_fifo_full) 벡터 실행 유닛(202)에 대한 스케쥴링 작업을 유지한다. 스칼라 실행 유닛(201)에 의해 스케쥴링된 작업은 파라미터를 계산하고 파라미터를 벡터 서브루틴으로 전송한 후, 벡터 서브루틴을 호출하여 작업을 수행한다. 벡터 실행 유닛(202)에 의한 서브루틴(예를 들어, vector_funcB)의 실행은 주로 주 메모리(예를 들어, 시스템 메모리 115)로부터의 지연을 숨기기 위하여 적시에 지연된다. 따라서, 비디오 프로세서(111)의 아키텍처는 명령 및 데이터 트래픽 양자에 대해 벡터 실행 유닛(202) 측 상의 지연 보상 메카니즘을 제공한다. 이러한 지연 보상 메카니즘은 후술한다.
소프트웨어 프로그램(300)의 예는 2개 이상의 파이프라인(예를 들어, 도 2의 벡터 데이터 경로(221) 및 제2 벡터 데이터 경로(231))이 존재하는 사례에서 더 복잡하다는 점에 유의해야 한다. 마찬가지로, 소프트웨어 프로그램(300)의 예는 프로그램(300)이 2개의 벡터 실행 파이프라인을 가진 컴퓨터 시스템에 대해 작성되지만 단일 벡터 실행 파이프라인을 가진 시스템 상에서 실행될 수 있는 능력을 여전히 보유하는 상황에 대해 더 복잡할 것이다.
따라서, 도 2 및 도 3의 설명에서 전술한 바와 같이, 스칼라 실행 유닛(201)은 벡터 실행 유닛(202) 상에서의 연산 개시를 담당한다. 일 실시예에서, 스칼라 실행 유닛(201)에서 벡터 실행 유닛(202)으로 전달된 커맨드는 아래의 주요 타입을 갖는다.
1. 메모리로부터 벡터 실행 유닛(202)의 데이터 RAM으로 현재의 작업 설정 데이터를 전달하기 위해 스칼라 실행 유닛(201)에 의해 개시되는 판독 커맨드(예를 들어, memRd)
2. 스칼라 실행 유닛(201)에서 벡터 실행 유닛(202)으로 전달되는 파라미터
3. 실행될 벡터 서브루틴의 PC(예를 들어, 프로그램 카운터) 형태의 실행 커맨드
4. 벡터 연산의 결과를 메모리로 복사하기 위해 스칼라 실행 유닛(201)에 의해 개시되는 기입 커맨드(예를 들어, memWr)
일 실시예에서, 벡터 실행 유닛(202)은 이들 커맨드의 수신시에 즉시 메모리 인터페이스(203)에 대해 memRd 커맨드를 스케쥴링한다(예를 들어, 프레임 버퍼(205)로부터 요청된 데이터를 판독하기 위해). 벡터 실행 유닛(202)은 또한 실행 커맨드를 검사하고, (캐시(222) 내에 존재하지 않는 경우) 실행될 벡터 서브루틴을 프리페치한다.
이 상황에서 벡터 실행 유닛(202)의 목적은 벡터 실행 유닛(202)이 현재의 실행 커맨드 상에서 작업하면서 다음 소수의 실행 커맨드의 명령 및 데이터 스트림을 미리 스케쥴링하는 것이다. 사전 스케쥴링 특징은 메모리 위치들로부터 명령/데이터를 페치하는 데 수반되는 지연을 효과적으로 숨긴다. 이러한 판독 요청을 재빨리 행하기 위하여, 벡터 실행 유닛(202), 데이터 저장 메모리(예를 들어, 223), 및 명령 캐시(예를 들어, 222)는 고속 최적 하드웨어를 이용하여 구현된다.
전술한 바와 같이, 데이터 저장 메모리(예를 들어, 223)는 벡터 실행 유닛(202)의 작업 RAM으로서 기능한다. 스칼라 실행 유닛(201)은 데이터 저장 메모리가 FIFO의 집합인 것처럼 인식하고 그와 상호작용한다. FIFO는 비디오 프로세서(111)가 동작하는 "스트림"을 포함한다. 일 실시예에서, 스트림은 일반적으로 스칼라 실행 유닛(201)이 전송(예를 들어, 벡터 실행 유닛(202)에 대해)을 개시하는 입출력 FIFO이다. 전술한 바와 같이, 스칼라 실행 유닛(201) 및 벡터 실행 유닛(202)의 동작은 분리된다.
입출력 스트림이 가득 찬 경우, 벡터 제어 유닛(220) 내의 DMA 엔진이 커맨드 FIFO(225)의 처리를 중지한다. 이것은 곧 커맨드 FIFO(225)가 가득 차게 한다. 스칼라 실행 유닛(201)은 커맨드 FIFO(225)가 가득 찬 때 벡터 실행 유닛(202)에 대한 추가 작업의 발행을 중지한다.
일 실시예에서, 벡터 실행 유닛(202)은 입출력 스트림 외에 중간 스트림을 필요로 할 수 있다. 따라서, 전체 데이터 저장 메모리(223)는 스칼라 실행 유닛(201)과의 상호작용과 관련하여 스트림들의 집합으로 보여질 수 있다.
도 4는 본 발명의 일 실시예에 따른 비디오 프로세서를 이용한 비디오와의 서브 픽처 혼합의 일례를 나타낸다. 도 4는 비디오 표면이 서브 픽처와 혼합된 후 ARGB 표면으로 변환되는 예시적인 사례를 나타낸다. 표면을 포함하는 데이터는 프레임 버퍼 메모리(205) 내에 휘도(Luma) 파라미터(412) 및 색도(Chroma) 파라미터(413)로서 위치한다. 도시된 바와 같이, 서브 픽처 픽셀 요소(414)도 프레임 버퍼 메모리(205) 내에 위치한다. 벡터 서브루틴 명령 및 파라미터(411)는 도시된 바와 같이 메모리(205) 내에 인스턴스화되어 있다.
일 실시예에서, 각각의 스트림은 "타일"이라고 하는 데이터의 작업 2D 청크들의 FIFO를 포함한다. 이러한 실시예에서, 벡터 실행 유닛(202)은 각각의 스트림에 대해 판독 타일 포인터 및 기입 타일 포인터를 유지한다. 예를 들어, 입력 스트림에 대해, 벡터 서브 루틴이 실행될 때, 벡터 서브 루틴은 현재(판독) 타일로부터 소비하거나 판독할 수 있다. 그 배경에서, memRd 커맨드에 의해 데이터가 현재(기입) 타일로 전송된다. 벡터 실행 유닛은 또한 출력 스트림에 대한 출력 타일을 생성할 수 있다. 이어서, 이들 타일은 실행 커맨드에 이어지는 memWr0 커맨드에 의해 메모리로 이동된다. 이것은 타일들을 효과적으로 프리페치하며, 타일들이 조작될 준비가 되게 하여 지연을 효과적으로 숨긴다.
도 4의 서브 픽처 혼합 예에서, 벡터 데이터 경로(221)는 벡터 서브 루틴 명령 및 파라미터(411)(예를 들어, &v_subp_blend)의 인스턴스화된 인스턴스에 의해 구성된다. 이것은 라인 421로 도시되어 있다. 스칼라 실행 유닛(201)은 표면들의 청크들(예를 들어, 타일들)을 판독하고, 이들을 DMA 엔진(401)(예를 들어, 메모리 인터페이스(203) 내의)을 이용하여 데이터 저장 메모리(223)에 로딩한다. 로딩 동작은 라인 422, 423 및 424에 의해 도시된다.
도 4를 계속 참조하면, 다수의 입력 표면이 존재하므로, 다수의 입력 스트림이 유지되는 것이 필요하다. 각각의 스트림은 대응 FIFO를 갖는다. 각각의 스트림은 상이한 수의 타일을 가질 수 있다. 도 4의 예는 서브 픽처 표면이 시스템 메모리(115)(예를 들어, 서브 픽처 픽셀 요소 414) 내에 있고, 따라서 추가 버퍼링(예를 들어, n, n+1, n+2, n+3 등)을 갖는 반면, 비디오 스트림(예를 들어, 휘도(412), 색도(413) 등)이 보다 적은 수의 타일을 가질 수 있는 사례를 나타낸다. 사용되는 버퍼/FIFO의 수는 스트림이 겪는 지연의 정도에 따라 조정될 수 있다.
전술한 바와 같이, 데이터 저장 메모리(223)는 지연을 숨기기 위하여 예측 프리페치 방법을 이용한다. 이 때문에, 데이터가 적절한 벡터 데이터 경로 실행 하드웨어(예를 들어, FIFO n, n+1, n+2 등으로 도시)에 대해 프리페치될 때, 스트림이 둘 이상의 타일 내에 데이터를 가질 수 있다.
데이터 저장 메모리가 로딩되면, FIFO는 벡터 데이터 경로 하드웨어(221)에 의해 액세스되고, 벡터 서브 루틴(예를 들어, 430)에 의해 조작된다. 벡터 데이터 경로 동작의 결과는 출력 스트림(403)을 포함한다. 이 출력 스트림은 스칼라 실행 유닛(201)에 의해 DMA 엔진(401)을 통해 프레임 버퍼 메모리(205)(예를 들어, ARGB_OUT 415)로 복사된다. 이것은 라인 425로 도시되어 있다.
이와 같이, 본 발명의 실시예들은 데이터 저장 메모리가 복수의 메모리 타일로서 추상화되는 스트림 처리의 중요한 양태를 이용한다. 따라서, 스트림은 순차적으로 액세스되는 타일들의 집합으로 볼 수 있다. 스트림들은 데이터를 프리페치하는 데 사용된다. 이 데이터는 타일의 형태를 갖는다. 타일들은 데이터가 발원되는 특정 메모리 소스(예를 들어, 시스템 메모리, 프레임 버퍼 메모리 등)로부터의 지연을 숨기기 위해 프리페치된다. 마찬가지로, 스트림들은 상이한 위치들(예를 들어, 벡터 실행 유닛에 대한 캐시, 스칼라 실행 유닛에 대한 캐시, 프레임 버퍼 메모리, 시스템 메모리 등)을 향할 수 있다. 스트림들의 또 하나의 특징은 이들이 일반적으로 예측 프리페치 모드로 타일들을 액세스한다는 것이다. 전술한 바와 같이, 지연이 클수록, 프리페치는 더 어렵고, 스트림에 대해 사용되는 버퍼링은 더 많다(예를 들어, 도 4에 도시된 바와 같이).
도 5는 본 발명의 일 실시예에 따른 벡터 실행 유닛의 내부 컴포넌트들을 나타내는 도면이다. 도 5는 프로그램의 관점에서 벡터 실행 유닛(202)의 다양한 기능 유닛 및 레지스터/SRAM 자원의 배열을 나타낸다.
도 5의 실시예에서, 벡터 실행 유닛(202)은 비디오 기저 대역 처리의 성능 및 다양한 코덱(압축-압축 해제 알고리즘)의 실행을 위해 최적화된 VLIW 디지털 신호 프로세서를 포함한다. 따라서, 벡터 실행 유닛(202)은 비디오 처리/코덱 실행의 효율 향상을 지향하는 다수의 속성을 갖는다.
도 5의 실시예에서, 속성들은 다음을 포함한다.
1. 다수의 벡터 실행 파이프라인의 포함을 위한 옵션을 제공함에 의한 스케일링 가능한 성능
2. 파이프당 2개의 데이터 어드레스 생성기(DAG)의 할당
3. 메모리/레지스터 피연산자
4. 2D (x,y) 포인터/반복기
5. 디프(deep) 파이프라인(예를 들어, 11-12) 스테이지
6. 스칼라(정수)/분기 유닛
7. 가변 명령 폭(장/단 명령)
8. 피연산자 추출을 위한 데이터 정렬기
9. 대표적인 피연산자 및 결과의 2D 데이터 경로(4x4) 형상
10. 원격 프로시저 호출을 실행하는 스칼라 실행 유닛에 대한 슬레이브 벡터 실행 유닛
일반적으로, 벡터 실행 유닛(202)의 프로그래머의 뷰는 2개의 DAG(503)를 구비한 SIMD 데이터 경로로서이다. 명령들은 VLIW 방식으로 발행되며(예를 들어, 명령들은 벡터 데이터 경로(504) 및 어드레스 생성기(503)에 대해 동시에 발행된다), 명령 디코더(501)에 의해 디코딩되어 적절한 실행 유닛으로 발송된다. 명령들은 가변 길이를 가지며, 가장 일반적으로 사용되는 명령들은 짧은 형태로 인코딩된다. 풀 명령 세트는 VLIW 타입의 명령과 같이 긴 형태로 이용 가능하다.
레전드(502)는 3개의 VLIW 명령을 가진 3개의 클럭 사이클을 나타낸다. 레전드(510)에 따르면, VLIW 명령들(502)의 최상위는 2개의 어드레스 명령(예를 들어, 2개의 DAG(503)에 대해) 및 벡터 데이터 경로(504)에 대한 하나의 명령을 포함한다. 중간 VLIW 명령은 하나의 정수 명령(예를 들어, 정수 유닛 505에 대해), 하나의 어드레스 명령 및 하나의 벡터 명령을 포함한다. 최하위 VLIW 명령은 분기 명령(예를 들어, 분기 유닛(506)에 대해), 하나의 어드레스 명령 및 하나의 벡터 명령을 포함한다.
벡터 실행 유닛은 단일 데이터 파이프 또는 다수의 데이터 파이프를 갖도록 구성될 수 있다. 각각의 데이터 파이프는 로컬 RAM(예를 들어, 데이터 저장 메모리 511), 크로스바(516), 2개의 DAG(503), 및 SIMD 실행 유닛(예를 들어, 벡터 데이터 경로 504)으로 구성된다. 도 5는 하나의 데이터 파이프만이 인스턴스화된 설명을 위한 기본 구성을 나타낸다. 2개의 데이터 파이프가 인스턴스화될 때, 이들은 개별 스레드로서 또는 협동 스레드로서 실행될 수 있다.
6개의 상이한 포트(예를 들어, 4개의 판독 및 2개의 기입)가 어드레스 레지스터 파일 유닛(515)에 의해 액세스될 수 있다. 이들 레지스터는 스칼라 실행 유닛으로부터 또는 정수 유닛(505) 또는 어드레스 유닛(503)의 결과로부터 파라미터를 수신한다. DAG(503)는 또한 수집 제어기로서 기능하며, 데이터 저장 메모리(511; 예를 들어 RA0, RA1, RA2, RA3, WA0 및 WA1)의 내용에 어드레스하기 위해 레지스터들의 분배를 관리한다. 크로스바(516)가 주어진 명령을 구현하기 위해 출력 데이터 포트들(R0, R1, R2, R3)을 임의의 순서/조합으로 벡터 데이터 경로(504)에 할당하도록 연결된다. 벡터 데이터 경로(504)의 출력은 지시되는 바와 같이(예를 들어, W0) 데이터 저장 메모리(511)로 피드백될 수 있다. 상수 RAM(517)이 정수 유닛(505)에서 벡터 데이터 경로(504) 및 데이터 저장 메모리(511)로 자주 사용되는 피연산자를 제공하는 데 사용된다.
도 6은 본 발명의 일 실시예에 따른 메모리(600)의 복수의 뱅크(601-604) 및 대칭 타일 어레이를 가진 데이터 저장 메모리(610)의 레이아웃을 나타낸다. 도 6에 도시된 바와 같이, 설명을 위해, 데이터 저장 메모리(610)의 일부만이 도시된다. 데이터 저장 메모리(610)는 논리적으로 타일들의 어레이(또는 어레이들)를 포함한다. 각각의 타일은 4x4 형태의 서브 타일들의 어레이이다. 물리적으로, 메모리(600)로 도시된 바와 같이, 데이터 저장 메모리(610)는 "N" 개의 물리적 메모리 뱅크(예를 들어, 뱅크 601-604)의 어레이 내에 저장된다.
또한, 데이터 저장 메모리(610)는 스트림 내의 논리적 타일을 시각적으로 도시한다. 도 6의 실시예에서, 이 타일은 16 바이트의 높이와 16 바이트의 폭을 갖는다. 이 타일은 서브 타일들의 어레이이다(이 예에서는 4x4). 각각의 서브 타일은 물리적 뱅크 내에 저장된다. 8개의 물리적 메모리 뱅크(예를 들어, 뱅크 0 내지 7)가 존재하는 경우, 이것은 도 6에서 각각의 4x4 서브 타일 내의 수로 표시된다. 뱅크들 내의 서브 타일들의 구성은 서브 타일들의 2x2 배열 내에 공통 뱅크가 존재하지 않도록 이루어진다. 이것은 어떠한 뱅크 충돌 없이 임의의 비정렬 액세스(예를 들어, x 및 y 방향 양자에서)를 가능하게 한다.
뱅크들(601-604)은 각각의 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성된다. 예를 들어, 하나의 사례에서, 크로스바(516)는 뱅크(601)로부터 2x4 타일 세트(예를 들어, 뱅크(601)의 최초 2행)를 액세스할 수 있다. 다른 사례에서, 크로스바(516)는 2개의 인접 뱅크로부터 1x8 타일 세트를 액세스할 수 있다. 마찬가지로, 다른 사례에서, 크로스바(516)는 2개의 인접 뱅크로부터 8x1 타일 세트를 액세스할 수 있다. 각각의 사례에서, DAG/콜렉터(503)는 뱅크들이 크로스바(516)에 의해 액세스될 때 타일들을 수신하여, 이 타일들을 클럭 단위로 벡터 데이터 경로(504)의 프론트 엔드에 제공할 수 있다.
이러한 방식으로, 본 발명의 실시예들은 집적 회로 실리콘 다이 면적, 트랜지스터 수, 메모리 속도 요건 등을 효율적으로 이용하면서 정교한 비디오 처리 기능들을 지원하는 새로운 비디오 프로세서 아키텍처를 제공한다. 본 발명의 실시예들은 다수의 비디오 스트림을 처리하기 위하여 높은 연산 밀도를 유지하며, 쉽게 스케일링이 가능하다. 본 발명의 실시예들은 예를 들어 MPEG-2/WMV9/H.264 인코드 지원(예를 들어, 루프내 디코더), MPEG-2/WMV9/H.264 디코드(예를 들어, 포스트 엔트로피 디코딩), 및 루프내/루프외 비블록킹 필터와 같은 다수의 정교한 비디오 처리 동작을 제공할 수 있다.
본 발명의 실시예들에 의해 제공되는 추가적인 비디오 처리 동작은 예를 들어 향상된 모션 적응 디인터레이싱, 인코딩을 위한 입력 잡음 필터링, 다위상 스케일링/리샘플링, 및 서브 픽처 합성을 포함한다. 본 발명의 비디오 프로세서 아키텍처는 또한 예를 들어 칼라 공간 변환, 칼라 공간 조정, 샤프닝, 히스토그램 조정과 같은 픽셀 포인트 조작, 및 다양한 비디오 표면 포맷 변환과 같은 소정의 비디오 프로세서-증폭기(프로캠프) 애플리케이션에 이용될 수 있다.
광범위하게 그리고 제한 없이, 본 발명은 다음을 개시하였다. 비디오 처리 동작을 실행하기 위한 지연 감내 시스템이 설명되었다. 이 시스템은 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스, 호스트 인터페이스에 연결되고 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛, 및 호스트 인터페이스에 연결되고 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 벡터 실행 유닛이 메모리 커맨드 FIFO를 액세스함으로써 요구 구동 기반으로 동작하게 하기 위한 커맨드 FIFO가 포함된다. 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스가 포함된다. 복수의 상이한 메모리 위치 간의 DMA 전달을 구현하고 벡터 실행 유닛에 대한 데이터 및 명령을 커맨드 FIFO에 로딩하기 위한 DMA 엔진이 메모리 인터페이스 내에 구축된다. 비디오 처리 동작을 실행하기 위한 비디오 프로세서가 설명되었다. 비디오 프로세서는 비디오 프로세서와 호스트 CPU 간의 통신을 구현하기 위한 호스트 인터페이스를 포함한다. 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 구현하기 위한 메모리 인터페이스가 포함된다. 스칼라 실행 유닛이 호스트 인터페이스 및 메모리 인터페이스에 연결되고, 스칼라 비디오 처리 동작을 실행하도록 구성된다. 벡터 실행 유닛이 호스트 인터페이스 및 메모리 인터페이스에 연결되고, 벡터 비디오 처리 동작을 실행하도록 구성된다. 비디오 처리 동작을 실행하기 위한 비디오 프로세서용의 다차원 데이터 경로 처리 시스템이 설명되었다. 비디오 프로세서는 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛 및 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 벡터 실행 유닛에 대한 데이터를 저장하기 위한 데이터 저장 메모리가 포함된다. 데이터 저장 메모리는 어레이로 배열된 대칭 뱅크 데이터 구조들을 가진 복수의 타일을 포함한다. 뱅크 데이터 구조들은 각각의 뱅크의 상이한 타일들로의 액세스를 지원하도록 구성된다. 비디오 처리 동작을 실행하기 위한 비디오 프로세서용의 스트림 기반 메모리 액세스 시스템이 설명되었다. 비디오 프로세서는 스칼라 비디오 처리 동작을 실행하도록 구성된 스칼라 실행 유닛 및 벡터 비디오 처리 동작을 실행하도록 구성된 벡터 실행 유닛을 포함한다. 스칼라 실행 유닛 및 벡터 실행 유닛에 대한 데이터를 저장하기 위한 프레임 버퍼 메모리가 포함된다. 스칼라 실행 유닛 및 벡터 실행 유닛과 프레임 버퍼 메모리 간의 통신을 설정하기 위한 메모리 인터페이스가 포함된다. 프레임 버퍼 메모리는 복수의 타일을 포함한다. 메모리 인터페이스는 벡터 실행 유닛 또는 스칼라 실행 유닛에 대해 제1 순차적 타일 액세스를 포함하는 제1 스트림을 구현하고 제2 순차적 타일 액세스를 포함하는 제2 스트림을 구현한다.
본 발명의 특정 실시예들의 전술한 설명은 예시 및 설명을 위해 제공되었다. 이들은 고갈적이거나 본 발명을 개시된 특정 형태로 한정하려는 것은 아니며, 위의 가르침에 비추어 많은 수정 및 변형이 가능하다. 실시예들은 발명의 원리 및 그의 실제 이용을 가장 잘 설명하여 이 분야의 전문가들이 고려된 특정 이용에 적합할 때 발명 및 다양한 수정이 이루어진 다양한 실시예를 가장 잘 이용할 수 있도록 하기 위하여 선택되고 설명되었다. 본 발명의 범위는 첨부된 청구범위 및 그의 균등물에 의해 정의되는 것을 의도한다.
부록 A
1 개요
VP2는 스칼라 제어 프로세서에 연결된 VLIW SIMD 비디오 DSP이다. 그의 주 초점은 비디오 코덱 및 비디오 기저 대역 처리이다.
1.1 VP2 .0의 정신
- 효율: VP2.0은 perf/mm2 및 perf/mW의 면에서 비디오 애플리케이션들에 대한 연산 효율적인 머신이다.
- 프로그래밍 가능성: 매우 프로그래머블하고, 쉽게 호환 가능하며, 머신을 프로그래밍하는 데 보다 안전하다.
- 스케일링 가능성: VP2.0 설계/아키텍처는 다수의 애플리케이션 영역에 대한 성능 요건과 매칭되도록 스케일링 가능해야 한다.
1.2 설계 목표
- 연산 밀도
- VP1.0보다 상당한 perf/mm2 이점을 제공한다.
- H.264와 같은 새로운 애플리케이션 영역의 효율적인 구현
- SW 개발자의 부담을 덜어주는 HW에서의 지연 감내
- 메모리 액세스 및 연산을 재배열함으로써 데이터 페치 지연을 숨김
- 명령 스트림의 자동 프리페치
- 데이터 경로 지연의 숨김
- 중간 결과의 선택적 전달
- 스트리밍 연산 모델
- 스케일링 가능성
- 구조적으로 VP2 벡터 유닛은 2x 만큼 위로, 그리고 1/2x 만큼 아래로 그의 데이터 경로를 스케일링할 수 있다.
- 선택적 리파이프라이닝에 의해 주파수 개선이 달성될 수 있다.
1.3 애플리케이션 타겟
VP2.0 설계 및 명령 세트는 다음의 애플리케이션을 매우 효율적으로 수행하도록 최적화된다.
- mpeg2/wmv9/H.264 인코드 지원(루프내 디코더)
- mpeg2/wmv9/H.264 디코드(포스트 엔트로피 디코딩)
- 루프내/루프외 디블록킹 필터
- 향상된 모션 적응 디인터레이싱
- 인코딩을 위한 입력 잡음 필터링
- 다위상 스케일링/리샘플링
- 서브 픽처 합성
- 프로캠프, 칼라 공간 변환, 조정, 샤프닝, 히스토그램 조정과 같은 픽셀 포인트 동작들 등
- 다양한 비디오 표면 포맷 변환 지원
구조적으로 VP2.0은 다음 영역에서 효율적일 수 있다.
- 2D 원시 함수, 블릿, 로테이트 등
- 정밀 기반 소프트웨어 모션 추정 알고리즘
- 16/32 비트 MAC 애플리케이션
2 최상위 레벨 아키텍처
VP2.0 머신은 스칼라 및 벡터 프로세서로 분할되어 있다. 벡터 프로세서는 스칼라 프로세서에 대해 슬레이브 코프로세서로서 동작한다. 스칼라 프로세서는 벡터 프로세서에 제어 스트림(파라미터, 서브 루틴 독립 변수)을 공급하고 벡터 프로세서로의 데이터 I/O를 관리하는 것을 담당한다. 알고리즘의 모든 제어 흐름은 스칼라 머신 상에서 실행되는 반면, 실제의 픽셀/데이터 처리 동작은 벡터 프로세서 상에서 행해진다.
스칼라 프로세서는 대표적인 RISC 스타일 스칼라이고, 벡터 코프로세서는 1 또는 2개의 SIMD 파이프(각 SIMD 파이프는 16 픽셀 데이터 경로를 가짐)를 가진 SIMD 머신이다. 따라서, 벡터 코프로세서는 순수 연산 능력으로서 결과의 최대 32 픽셀을 생성할 수 있다.
스칼라 프로세서는 메모리 맵핑된 커맨드 FIFO를 이용하여 벡터 코프로세서에 기능 호출들을 전송한다. 코프로세서 커맨드는 이 FIFO에 큐잉된다. 스칼라 프로세서는 이 FIFO를 이용하여 벡터 프로세서로부터 완전히 분리된다. 스칼라 프로세서는 그 자신의 클럭 상에서 실행될 수 있다. 벡터 프로세서는 요구 구동 유닛으로서 동작한다.
VP2.0의 최상위 레벨도가 아래에 주어진다.
VP2.O은 개별 스칼라 코드 및 벡터 코드로 컴파일된 후, 후에 함께 링크될 수 있다. 별개로, 벡터 함수들은 개별적으로 작성될 수 있으며, 서브 루틴 또는 라이브러리 함수로서 스칼라 스레드에 제공될 수 있다. 스칼라 프로세서는 그 자신의 명령 및 데이터 캐시를 갖는다. 벡터 유닛도 명령 캐시 및 데이터 RAM(데이터 저장 메모리로 지칭됨)을 갖는다. 이들 2개의 엔진은 분리되고, FIFO를 통해 통신한다.
3 단순 프로그래밍 모델
VP2.0에 대한 가장 간단한 프로그래밍 모델은 벡터 슬레이브 코프로세서 상에서 서브 루틴 호출을 실행하는 스칼라 제어 프로그램이다. 여기서 프로그래머는 문제를 2개의 스레드로 분해하였다는 고유한 가정이 존재한다. 스칼라 프로세서 상에서 실행되는 스레드는 재빨리 작업 파라미터를 계산하고 이들을 주 기계인 벡터 프로세서에 공급한다. 이들 2개의 스레드를 위한 프로그램은 개별적으로 작성되고 컴파일되는 것으로 예상된다.
스칼라 스레드는 다음을 담당한다.
1. 호스트 유닛과의 인터페이싱 및 클래스 인터페이스 구현
2. 벡터 유닛의 초기화, 셋업 및 구성
3. 루프 내의 작업 유닛들, 청크들 또는 작업 세트들 내의 알고리즘을 실행하여 각각의 반복은
a. 현재 작업 세트에 대한 파라미터를 계산한다.
b. 입력 데이터의 벡터 프로세서로의 전달을 개시한다.
c. 벡터 프로세서로부터의 출력 데이터의 전달을 개시한다.
스칼라 스레드의 대표적인 실행 모델은 파이어 앤드 포겟이다. 이것은 벡터 코프로세서로부터 리턴 데이터가 존재하지 않는 비디오 기저 대역 처리에 대한 대표적인 모델일 것으로 예상된다. 스칼라 프로세서는 커맨드 FIFO 내에 공간이 존재할 때까지 벡터 프로세서에 대한 스케쥴링 작업을 유지할 것이다. 벡터 프로세서에 의한 서브 루틴의 실행은 주로 주 메모리로부터의 지연으로 인해 적시에 지연된다. 따라서, 벡터 측에 지연 보상 메카니즘을 제공하는 것이 중요하다. VP2.0에서, 벡터 프로세서는 명령 및 데이터 트래픽 양자에 대한 지연 보상을 제공한다. 그를 위한 메카니즘이 섹션에서 요약된다.
대표적인 VP 프로그램은 아래와 같을 것이다.
보다 복잡한 프로그래밍 모델은 2개의 데이터 파이프를 가질 때이다. 또는, 2개의 파이프에 대한 코드를 작성하고 이를 하나의 데이터 파이프 머신 상에서 실행시키기를 원할 때이다. 그를 위한 프로그래밍 모델은 섹션 6에서 조사된다.
4 스트리밍 모델
앞에서 요약된 바와 같이, 스칼라 엔진은 벡터 프로세서 상의 연산 개시를 담당한다. 스칼라 엔진에서 벡터 엔진으로 전달되는 커맨드는 다음 주요 타입을 갖는다.
1. 현재 작업 세트 데이터를 메모리에서 벡터 엔진의 데이터 RAM으로 전달하기 위해 스칼라에 의해 개시되는 판독 커맨드(memRd)
2. 스칼라에서 벡터로 전달되는 파라미터
3. 실행될 벡터 서브 루틴의 PC 형태의 실행 커맨드
4. 벡터 연산의 결과를 메모리에 복사하기 위해 스칼라에 의해 개시되는 기입 커맨드(memWr)
벡터 프로세서는 이들 커맨드의 수신시에 즉시 프레임 버퍼(FB) 인터페이스에 대해 memRd 커맨드를 스케쥴링한다. 또한, 실행 커맨드를 검사하고, 실행될 벡터 서브 루틴을 프리페치한다(캐시 내에 존재하지 않는 경우). 하나의 목적은 벡터 엔진이 현재 실행 커맨드 상에서 작업하고 있는 동안 다음 소수의 실행 커맨드의 명령 및 데이터 스트림을 미리 스케쥴링하는 것이다. 이러한 판독 요청을 재빨리 행하기 위하여, 벡터 엔진은 하드웨어에서 데이터 저장 메모리 및 명령 캐시를 관리한다.
데이터 저장 메모리는 벡터 프로세서의 작업 RAM이다. 스칼라 프로세서는 이 데이터 저장 메모리를 FIFO 또는 스트림의 집합으로 본다. 스트림들은 본질적으로 스칼라가 전달을 개시하는 입출력 FIFO이다. 입출력 스트림이 가득 차면, 벡터 DMA 엔진은 스칼라로부터 커맨드 FIFO의 처리를 중지하며, 곧 가득 차게 된다. 따라서, 스칼라는 벡터 엔진에 대한 더 이상의 작업 발행을 중지한다. 입출력 스트림 외에, 벡터는 중간 스트림을 필요로 할 수 있다. 따라서, 전체 데이터 저장 메모리는 스칼라 측으로부터 스트림의 집합으로서 보여질 수 있다. 각각의 스트림은 타일이라고 하는 작업 2D 청크들의 FIFO이다. 벡터 프로세서는 각각의 스트림에 대해 판독 타일 포인터 및 기입 타일 포인터를 유지한다. 입력 스트림에 대해, 벡터 서브 루틴이 실행될 때, 현재(판독) 타일로부터 소비하거나 판독할 수 있다. 그 배경에서, 데이터는 memRd 커맨드에 의해 현재(기입) 타일로 전송된다. 벡터 프로세서는 또한 출력 스트림에 대한 출력 타일을 생성할 수 있다. 이어서, 이 타일들은 실행 커맨드에 이어지는 memWr() 커맨드에 의해 메모리로 이동된다.
이 모델은 비디오와의 서브 픽처 혼합에 대한 예로 설명된다. 예를 들어, 비디오 표면(예를 들어, NV12 포맷)이 서브 픽처와 혼합된 후 ARGB 표면으로 변환되는 간단한 예를 고려한다. 이들 표면은 메모리 내에 위치한다. 스칼라 프로세서는 이들 표면의 청크들(타일들)을 판독하여 이들을 데이터 저장 메모리 내에 로딩한다. 다수의 입력 표면이 존재하므로, 다수의 입력 스트림을 유지해야 한다. 각각의 스트림은 상이한 수의 타일을 가질 수 있는 반면(예를 들어, 이 예에서, 서브 픽처 표면이 시스템 메모리 내에 있는 것으로 가정할 수 있고, 따라서 그것을 더 버퍼링해야 한다), 비디오 스트림은 보다 적은 수의 타일들을 가질 수 있다.
5 벡터 코프로세서
VP2의 벡터 코프로세서는 비디오 기저대역 처리 및 코덱을 위해 설계된 VLIW DSP이다. 이 프로세서의 몇 가지 중요한 설계 속성은 다음을 포함한다.
1. 스케일링 가능한 성능, 1 또는 2개의 데이터 파이프.
2. 각각의 파이프가 2개의 데이터 어드레스 생성기(DAG)를 구비한다.
3. 메모리/레지스터 피연산자
4. 2D (x,y) 포인터/반복기
5. 디프 파이프라인 (11-12) 스테이지
6. 스칼라(정수)/분기 유닛
7. 가변 명령 폭(긴/짧은 명령)
8. 피연산자 추출을 위한 데이터 정렬기
9. 대표적인 피연산자 및 결과의 2D 데이터 경로 (4x4) 형상
10. 스칼라 프로세서에 대한 슬레이브 프로세서, 원격 프로시저 호출을 실행한다.
벡터 코프로세서의 프로그래머의 뷰는 가장 간단한 용어로 2개의 DAG를 구비한 SIMD 데이터 경로이다. 명령들은 VLIW 방식으로 발행된다(즉, 명령들은 벡터 데이터 경로 및 어드레스 생성기에 대해 동시에 발행된다). 명령들은 가변 길이를 가지며, 가장 일반적으로 사용되는 명령들은 짧은 형태로 인코딩된다. 풀 명령 세트는 긴 형태로 이용 가능하다. 예를 들어, 프로그래머의 관점에서, 다양한 기능 유닛 및 레지스터/SRAM 자원들의 배열은 아래 나타낸 바와 같다.
벡터 유닛은 단일 데이터 파이프 또는 듀얼 데이터 파이프를 인스턴스화한다. 각각의 데이터 파이프는 로컬 RAM(데이터 저장 메모리), 2개의 DAG 및 SIMD 실행 유닛으로 구성된다. 기본 구성에 있어서는 하나의 데이터 파이프만이 존재한다. 2개의 데이터 파이프가 존재할 때, 이들은 독립적인 스레드로서 또는 협동 스레드로서 실행될 수 있다. 벡터 프로세서의 완전한 파이프라인도가 아래에 기술된다. 여기서, 전체 구성은 2개의 데이터 파이프를 갖는다.
6 향상된 프로그래밍 모델
섹션 3에서, 기본 아키텍처를 설명하기 위하여 RPC 모델이 소개되었다. 이 섹션에서는 보다 향상된 개념이 소개된다.
6.1 듀얼 데이터 파이프 구성
듀얼 파이프 구성에서는 아래의 프로세서 자원들이 공유된다.
- 스칼라 제어기
- 벡터 코프로세서 내의 벡터 제어 유닛
- 명령/데이터 페치를 위한 DMA 엔진
- 명령 캐시(듀얼 포트화될 수 있다)
다음의 자원들이 복제된다.
- 데이터 파이프(어드레스/분기/벡터 실행 유닛)
- 데이터 저장 메모리
- 레지스터 파일
다음과 같은 점에 유의해야 한다.
1. 1 파이프만을 가진 인스턴스 상에서 2 파이프에 대해 프로그램이 작성될 수 있다. 벡터 제어 유닛은 동일 물리적 파이프 상에 각 파이프에 대한 실행 커맨드를 맵핑할 것이다. 그러나, 양 파이프에 대한 스트림이 단지 하나의 데이터 저장 메모리에만 존재하므로, 데이터 저장소의 크기는 조정되어야 한다. 간단한 방법은 타일 크기를 줄이거나 스트림 내의 타일들의 수를 반감시키는 것이다. 이것은 구성시에 스칼라 스레드에 의해 행해진다. 마이크로 아키텍처 스테이지에서 해결되어야 하는 글로벌 레지스터의 복제 및 스트림 맵핑과 같은 문제가 존재한다.
2. 1 파이프에 대해 작성된 프로그램은 2 파이프를 가진 인스턴스 상에서 실행될 수 있다. 그러나, 이 코드는 하나의 파이프 상에서만 실행되고 나머지 파이프는 사용하지 않는다. 머신은 절반이 유휴 상태가 된다.
3. 2개의 완전히 상이한 스레드를 각각 실행하는 2 파이프에 대해 프로그램이 작성될 수 있다. 멀티 스레드화되지 않은 단일 스칼라만을 구비하므로, 이것은 바람직하지 않을 수 있다. 하나의 스칼라 실행 스레드만을 지원하므로, 이것은 바람직하지 않을 수 있지만, 이 모델은 지원될 수도 있다.
4. 동일 스레드를 각각 실행하는 2 파이프에 대해 프로그램이 작성될 수 있다. 이것은 대부분의 비디오 기저대역 처리와 같은 병렬 가능 알고리즘에 대해 예상되는 대표적인 모델이다. 이것은 비디오의 2개의 스트림 또는 2개의 절반 등에서 동작하기 위해 동일 명령 스트림을 사용하는 것을 허용한다. 각각의 데이터 파이프는 그 자신의 실행 유닛 및 데이터 저장소를 갖는다. 스칼라 제어기는 2개의 데이터 파이프를 제공해야 한다. 그러나, 파라미터, 판독 및 기입 커맨드는 서로 관련되며(오프셋), 따라서 스칼라 성능 요건이 정확하게 2배로 상승하는 것은 아니다. 이 모델의 일례가 아래에 도시된다.
5. 2개의 협동 스레드를 갖는 프로그램이 작성될 수 있다. 이것은 단일 스칼라 제어 스레드를 갖지만 다수의 기능적인 벡터 기능 블록이 함께 접속되는 것이 필요할 수 있는 코덱에 대해 예상되는 모델이다. 이것은 기능 블록들의 다이렉트-쇼우 핀 모델과 유사하다. 이러한 애플리케이션의 일례가 아래 도시된다. 이 모델은 단지 2개의 협동 스레드로 제한되는데, 이는 2개의 데이터 파이프만을 갖기 때문이다. 또 하나의 제한은 스레드들이 2개의 스레드 사이에 균형을 이루어야 한다는 것이다. 그렇지 않으면 성능 손실이 발생한다. 이러한 제한 내에서, 이 모델은 2개의 데이터 파이프 상에서 동작하며, 또한 단일 파이프로 스케일링될 수 있다.
6. 2개의 데이터 파이프가 서로 동기화될 수 있다. 동기화에 대한 기본 접근법은 데이터 구동 방식이다. 벡터 함수들은 데이터가 프로세스에 이용 가능할 때 실행된다. 스트림들은 메모리로부터의 판독들 또는 다른 데이터 파이프로부터의 기입들에 의해 채워진다. 데이터가 이용 가능하면, 벡터 제어 유닛은 실행 커맨드를 활성화시켜 실행한다. 스트림들은 또한 카운팅 세마포어로서 사용될 수 있다. 스칼라 제어기 및 벡터 데이터 파이프 양자는 타일 포인터들을 증감시킬 수 있으며, 데이터 전달이 존재하지 않는 경우에도 스트림 기술자를 카운팅 세마포어로서 사용할 수 있다.
보충 개요:
일반적으로, 본 발명의 실시예들은 다음을 수행한다.
1. 매체 알고리즘의 스칼라 및 벡터 부분으로의 분해
오프 더 셀프 스칼라 설계, 이는 또한 전력 및 성능 요건에 기초하여 상이한 클럭 속도로 스칼라 및 벡터 부분을 실행할 수 있는 능력을 제공한다.
2. 스트림 처리
3. 2D 데이터 경로 처리
4. 지연 숨김(데이터 및 커맨드 페치 양자에 대해)
애플리케이션 영역
숨김:
연산 코드 숨김
암호화 프로그램은 단지 칩을 숨길 수 있다. 스칼라/제어기 블록은 단지 특정 동작이 수행되는 것을 요구하며, 암호화 엔진은 명령 등을 페치할 것이다. 스칼라는 심지어 알고리즘이 실행되고 있는지를 알 수 없으므로, 매우 안전하다. 이것은 사용자로부터 암호화 알고리즘을 숨기기 위한 메카니즘을 제공한다.
2D
VP2 명령 세트 아키텍처는 2D 처리를 위한 명령들을 지원한다. 이들은 많은 GUI/윈도우 시스템에 사용되는 ROP3 및 ROP4 지원을 포함한다. 이것은 매체 프로세서가 매체 프로세서 상에서 2D 연산을 실행하는 것을 가능하게 한다. 여기서 고유한 이점은 전력 절감이다.
ISA
명령 슬롯으로서의 조건 코드:
조건 코드 연산을 위해 (다중 발행 명령 번들 내의) 개별 발행 슬롯을 구비한다. 종래 기술은 조건 코드/술어 레지스터에 영향을 미칠 수도 있는 사람 사용 SIMD 명령이다. 그러나, VP2에서 취해지는 접근법에서, 데이터 처리 및 술어 레지스터 처리는 독립적으로 스케쥴링되어, 보다 높은 성능을 얻을 수 있다.
메모리 I/O
마이크로코드화된 DMA 엔진:
DMA 엔진은 스트림에 대한 데이터 프리페치, 데이터 스트림 포맷팅, 에지 패딩 등과 같은 다양한 동작을 수행하도록 프로그래밍될 수 있다(또는 그 자신의 작은 마이크로코드를 가질 수 있다). 일반적으로, 프로그래머블 DMA 엔진이며, 유선 기능은 없다. 따라서, 메모리 I/O 프로세서와 매체 처리 코어의 조합은 전체 시스템 레벨 성능을 향상시킨다. 매체 프로세서 코어는 데이터 I/O 처리를 행해야 하는 부담이 없다.
메모리 계층 구조:
VP2 아키텍처에서, 메모리 계층 구조는 메모리 BW를 최소화하는 것은 물론 지연 보상을 제공하도록 최적화된다. 다음과 같은 많은 상이한 스킴이 제공된다.
- 스크래치 RAM으로서 벡터 코어에게 보일 수 있는 스트리밍 데이터 저장소의 제1 레벨. 스칼라 프로세서에 의해 생성된 요구 스트림을 사전에 조사하도록 HW에 의해 관리된다. 이 데이터 저장소는 데이터 재사용을 위한 L2 캐시에 의해 옵션으로 보강된다. L2 캐시는 스트림 기반으로 개별 섹터들로 분할될 수 있다.
- 스트리밍 데이터 저장소에 의해 보강된 L1 캐시. 데이터 저장소는 다음 관련 데이터 세트를 프리페치하였다.
- 스트림 포인터를 데이터 태그로서 사용하는 캐시
- 스칼라 생성 스트림 어드레스를 이용한 L1 데이터 저장소 및 L2 캐시의 프리페치/캐싱
최적화된 스칼라-벡터 통신 링크:
MemRd/Wr 포맷:
시스템 메모리를 로컬 메모리로 판독 및 기입하기 위한 스칼라로부터의 콤팩트 커맨드. DMA 엔진을 관리하는 데 필요한 제어 흐름 대역폭 상에 저장한다. 동시에 지원 트랜잭션들의 타입을 제한하지 않는다.
벡터 L2에 대한 스칼라-벡터에 관한 고찰:
통신 대역폭을 줄이기 위해 파라미터 변경자 및 반복기를 지원하는 파라미터 압축.
파이프라인 캐시:
파이프라인화된 명령 캐시. 다음과 같이 다양한 스킴이 지원된다.
- 벡터와 스칼라 프로세서 사이의 인 플라이트 실행을 추적함으로써 각 캐시 라인의 수명을 관리한다. 이것은 벡터 프로세서가 실행을 시작하기 전에 명령들이 준비되는 것을 가능하게 한다. 명령들이 아직 캐시 내에 있지 않은 경우, 명령들은 프리페치된다.
- 적은 지연 구성에 대해, 명령 캐시는 작은 FIFO로 변경됨으로써 최소화된다. FIFO 내의 기존 실행들이 재이용될 수 있으며, 그렇지 않은 경우 다시 페치된다.
전체 아키텍처:
데이터 저장소는 다양한 처리 요소 사이에 공유될 수 있다. 이들은 스트림을 통해 통신하며 서로 공급할 수 있다. 이 아키텍처는 SIMD 벡터 코어들, DMA 엔진들, 스트림을 통해 접속된 고정 함수 유닛들과 같은 한 세트의 이종 기능 유닛들을 구상한다.
연산/DP
임의/유연 형상/절반 파이프:
데이터 경로는 가변 형상들 상에서 동작한다. 데이터 경로의 형상은 문제 세트에 매칭되도록 구성될 수 있다. 일반적으로, 사람들은 1D 데이터 경로를 행한다. VP2는 알고리즘에 매칭되도록 4x4, 8x4 또는 16x1 등의 가변 크기를 가질 수 있는 형상을 처리할 수 있다.
스케일링 가능성:
VP2 데이터 경로 아키텍처는 면적을 줄이기 위하여 다수의 사이클을 통해 보다 좁은 데이터 경로 상에서 보다 넓은 SIMD 명령들을 실행하기 위하여 명령 안내 기술을 이용한다(주: 16 웨이 SIMD 파이프를 갖는데, 각각의 피연산자는 1바이트 폭을 갖는다. 8 웨이 SIMD 파이프(2개의 파이프를 함께 그룹화함) 및 각각의 피연산자가 2 바이트인 보다 넓은 SIMD 데이터 경로를 가질 수 있으며, 마찬가지로 4 웨이 SIMD 파이프(4개의 파이프를 함께 그룹화함) 및 각각의 피연산자가 4 바이트인 보다 넓은 SIMD 데이터 경로를 가질 수 있다).
예를 들어, VP2는 데이터 경로를 16 웨이 SIMD에서 8 웨이 SIMD로 스케일링할 수 있다.
바이트 레인들의 연결:
피연산자 폭을 증가시키기 위한 SIMD 웨이들의 연결. 예를 들어, 현재 16 웨이 SIMD는 8 비트 피연산자를 갖는다. 이것을 8 웨이 SIMD의 16 비트 피연산자 및 4 웨이 SIMD의 32 비트 피연산자로 증가시킬 수 있다.
SIMD 어드레스 생성기
SIMD 파이프의 각 웨이에 대한 개별 스트림 어드레스 생성기.
VP2는 요청들이 데이터 저장소에 대한 최소 액세스로 합체된 SIMD 어드레스 생성기를 이용할 수 있다.
크로스바 및 콜렉터를 이용한 데이터 확장
크로스바를 이용하여 보다 많은 데이터 피연산자를 생성할 수 있는 능력. 판독 포트 압력을 줄이고 전력을 줄인다.
X2 명령들:
모든 명령들이 데이터 경로 내의 모든 HW 요소(가산기/승산기)를 이용할 수 있는 것은 아니다. 따라서, 복잡한 명령보다 넓은 데이터 형상을 처리할 수 있는 덧셈/뺄셈과 같은 간단한 명령에 대해 가능하다. 따라서, 성능을 최소 공통 크기로 제한하는 대신에, VP2는 판독 포트들이 동작 대역폭을 유지할 수 있는 한 보다 넓은 형상 상에서 동작하도록 적절히 시도하는 유연한 명령 세트를 이용한다.
멀티스레드/멀티코어 매체 처리
VP2 아키텍처은 다음과 같은 다양한 멀티스레딩 옵션을 지원한다.
- 멀티스레드 스칼라 프로세서는 스트림을 통해 접속된 다수의 벡터 유닛 상에서 프로시저 호출을 스케쥴링한다.
- 다수의 스레드는 명령 단위 또는 실행 단위의 스레드 스위칭에 의해 단일 벡터 엔진 상에서 실행된다.
상이한 벡터/스칼라를 이용한 전력 관리
스칼라 및 벡터 부분이 분리되는 경우, 전력 및 성능 요건에 기초하여 이들 2 블록을 상이한 속도로 실행할 수 있다.
콘텍스트 스위치:
이 매체 프로세서는 레지스터가 없는 구조를 가지므로 매우 빠른 콘텍스트 스위치를 지원하는 능력을 갖고 있다. HW 지원이 스칼라-벡터 커맨드 큐를 추적하고, 이것을 저장하고 재생하여 콘텍스트 스위칭을 달성하기 위해 존재한다. 또한, 콘텍스트 스위치는 페이지 고장시에 개시될 수 있다.
이것은 매체 프로세서가 입출력 디스플레이 처리와 같은 실시간 처리 태스크를 유지하면서 디스플레이 파이프라인을 공급하기 위해 2D 가속화 또는 최적시의 비디오 향상과 같은 비 실시간 태스크를 지원할 수 있게 한다.
이러한 콘텍스트 스위치 능력은 그의 명령 세트와 함께 VP2가 통합 픽셀/코덱 처리하는 것을 가능하게 한다.
데이터 구성:
VP2는 다음과 같은 특성을 가진 데이터 저장소 구성을 이용한다.
각 방향으로 최대 16 픽셀이 뱅크 충돌없이 액세스될 수 있다. 이것은 스트라이드 요건을 최소로 유지하면서 행해진다.
데이터 저장소 구성은 데이터 형상들의 효율적인 전이를 가능하게 한다.
2D 어드레싱이 데이터 저장소 내에서 지원되어, 비디오와 같은 대부분의 매체 처리 애플리케이션에서 선형 어드레스의 SW 연산을 제거한다.

Claims (21)

  1. 비디오 처리 동작들을 실행하기 위한 비디오 프로세서의 설정가능한 SIMD 엔진으로서,
    입력 데이터를 수신하기 위한 복수의 입력, 및 출력 데이터를 제공하기 위한 복수의 출력을 가지고, 비디오 프로세서 집적 회로 내에 포함되는 SIMD 컴포넌트; 및
    상기 SIMD 컴포넌트에 포함된 복수의 실행 유닛
    을 포함하고,
    상기 실행 유닛들 각각은 제1 데이터 경로 및 제2 데이터 경로를 포함하며, 상기 실행 유닛들 각각은 저정밀도 입력 세트 또는 고정밀도 입력 세트에 대한 산술 동작들을 선택적으로 구현하도록 구성되고,
    상기 실행 유닛들 각각은 상기 제1 데이터 경로 및 상기 제2 데이터 경로가 결합되어 단일한 고정밀도 출력을 생성하도록 하는 제1 설정을 가지고,
    상기 실행 유닛들 각각은 상기 제1 데이터 경로 및 상기 제2 데이터 경로가 분할되어 개별적인 제1 저정밀도 출력 및 제2 저정밀도 출력을 생성하도록 하는 제2 설정을 가지는, 설정가능한 SIMD 엔진.
  2. 제1항에 있어서,
    SIMD 컴포넌트는 상기 비디오 프로세서의 벡터 실행 유닛 내에 포함되는, 설정가능한 SIMD 엔진.
  3. 제2항에 있어서,
    상기 SIMD 컴포넌트는 상기 벡터 실행 유닛에 연결된 스칼라 실행 유닛의 제어 하에 실행되도록 구성되는, 설정가능한 SIMD 엔진.
  4. 제3항에 있어서,
    상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛은 비동기적으로 동작하도록 구성되는, 설정가능한 SIMD 엔진.
  5. 제1항에 있어서,
    상기 실행 유닛들 각각에 의해 생성되는 상기 단일한 고정밀도 출력은 20비트 출력인, 설정가능한 SIMD 엔진.
  6. 제1항에 있어서,
    상기 실행 유닛들 각각에 의해 생성되는 상기 개별적인 제1 저정밀도 출력 및 제2 저정밀도 출력은 10비트 출력인, 설정가능한 SIMD 엔진.
  7. 제1항에 있어서,
    상기 SIMD 컴포넌트는 적어도 16개의 실행 유닛을 포함하는, 설정가능한 SIMD 엔진.
  8. 제7항에 있어서,
    상기 적어도 16개의 실행 유닛은 16개의 고정밀도 출력 또는 32개의 저정밀도 출력을 생성하도록 구성될 수 있는, 설정가능한 SIMD 엔진.
  9. 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법으로서, 상기 방법은 컴퓨터 판독가능 코드(computer readable code)를 실행하는 컴퓨터 시스템의 비디오 프로세서의 설정가능한 SIMD 엔진을 사용하여 구현되고, 상기 방법은,
    상기 비디오 프로세서 집적 회로 상에서 실행되는 비디오 처리 애플리케이션을 액세스하는 단계 - 상기 SIMD 엔진은 상기 비디오 프로세서 집적 회로 내에 포함됨 -;
    복수의 실행 유닛을 가지는 상기 SIMD 엔진을, 상기 비디오 처리 애플리케이션의 명령들에 따라 설정하는 단계;
    상기 SIMD 엔진이 저정밀도 출력으로 설정된 경우, 각 실행 유닛의 제1 데이터 경로 및 제2 데이터 경로가 분할되어 개별적인 제1 저정밀도 출력 및 제2 저정밀도 출력을 생성하도록 하는 저정밀도 설정을 이용하여 SIMD 명령들을 실행하는 단계;
    상기 SIMD 엔진이 고정밀도 출력으로 설정된 경우, 각 실행 유닛의 제1 데이터 경로 및 제2 데이터 경로가 결합되어 단일한 고정밀도 출력을 생성하도록 하는 고정밀도 설정을 이용하여 SIMD 명령들을 실행하는 단계; 및
    상기 비디오 처리 애플리케이션에 의해 사용되도록 상기 SIMD 엔진의 출력을 제공하는 단계
    를 포함하는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  10. 제9항에 있어서,
    SIMD 엔진은 상기 비디오 프로세서의 벡터 실행 유닛 내에 포함되는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  11. 제10항에 있어서,
    상기 SIMD 엔진은 상기 벡터 실행 유닛에 연결된 스칼라 실행 유닛의 제어 하에 실행되도록 구성되는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  12. 제11항에 있어서,
    상기 스칼라 실행 유닛 및 상기 벡터 실행 유닛은 비동기적으로 동작하도록 구성되는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  13. 제9항에 있어서,
    상기 실행 유닛들 각각에 의해 생성되는 상기 단일한 고정밀도 출력은 적어도 20비트 출력인, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  14. 제9항에 있어서,
    상기 실행 유닛들 각각에 의해 생성되는 상기 개별적인 제1 저정밀도 출력 및 제2 저정밀도 출력은 적어도 10비트 출력인, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  15. 제9항에 있어서,
    상기 SIMD 엔진은 적어도 16개의 실행 유닛을 포함하는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  16. 제15항에 있어서,
    상기 적어도 16개의 실행 유닛은 16개의 고정밀도 출력 또는 32개의 저정밀도 출력을 생성하도록 구성될 수 있는, 설정가능한 SIMD 비디오 처리 동작들을 실행하는 방법.
  17. 비디오 처리 동작들을 실행하기 위한 시스템으로서,
    마더보드;
    상기 마더보드에 연결된 호스트 CPU; 및
    상기 마더보드 및 상기 CPU에 연결된 비디오 프로세서 집적 회로 장치
    를 포함하고,
    상기 비디오 프로세서 집적 회로 장치는,
    상기 비디오 프로세서와 상기 호스트 CPU 간의 통신을 확립하기 위한 호스트 인터페이스;
    상기 비디오 프로세서와 프레임 버퍼 메모리 간의 통신을 확립하기 위한 메모리 인터페이스;
    상기 호스트 인터페이스 및 상기 메모리 인터페이스에 연결되고, 스칼라 비디오 처리 동작들을 실행하도록 구성되는 스칼라 실행 유닛;
    상기 호스트 인터페이스 및 상기 메모리 인터페이스에 연결되고, 벡터 비디오 처리 동작들을 실행하도록 구성되는 벡터 실행 유닛;
    상기 벡터 실행 유닛에 포함되고, 입력 데이터를 수신하기 위한 복수의 입력, 및 출력 데이터를 제공하기 위한 복수의 출력을 가지는 SIMD 컴포넌트; 및
    상기 SIMD 컴포넌트에 포함되는 복수의 실행 유닛
    을 포함하며,
    상기 실행 유닛들 각각은 제1 데이터 경로 및 제2 데이터 경로를 가지고, 상기 실행 유닛들 각각은 저정밀도 입력 세트 또는 고정밀도 입력 세트에 대한 산술 동작들을 선택적으로 구현하도록 구성되며,
    상기 실행 유닛들 각각은 상기 제1 데이터 경로 및 상기 제2 데이터 경로가 결합되어 단일한 고정밀도 출력을 생성하도록 하는 제1 설정을 가지고,
    상기 실행 유닛들 각각은 상기 제1 데이터 경로 및 상기 제2 데이터 경로가 분할되어 개별적인 제1 저정밀도 출력 및 제2 저정밀도 출력을 생성하도록 하는 제2 설정을 가지는, 비디오 처리 동작들을 실행하기 위한 시스템.
  18. 제17항에 있어서,
    상기 SIMD 컴포넌트는 적어도 16개의 실행 유닛을 포함하는, 비디오 처리 동작들을 실행하기 위한 시스템.
  19. 제17항에 있어서,
    상기 적어도 16개의 실행 유닛은 16개의 고정밀도 출력 또는 32개의 저정밀도 출력을 생성하도록 구성될 수 있는, 비디오 처리 동작들을 실행하기 위한 시스템.
  20. 제17항에 있어서,
    상기 SIMD 엔진은, 저정밀도 입력들을 받아들이고, 상기 제1 데이터 경로 및 상기 제2 데이터 경로를 이용함으로써 그로부터 상기 단일한 고정밀도 출력을 생성하기 위한 제3 설정을 가지는, 비디오 처리 동작들을 실행하기 위한 시스템.
  21. 제17항에 있어서,
    상기 실행 유닛들 각각은 곱셈-누적 명령들(multiply-accumulate instructions)을 위한 결과들을 피드백하기 위해 복수의 누산기를 포함하는, 비디오 처리 동작들을 실행하기 위한 시스템.
KR1020097015040A 2004-11-15 2005-11-14 비디오 처리 KR101061345B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US62841404P 2004-11-15 2004-11-15
US60/628,414 2004-11-15
US11/267,875 2005-11-04
US11/267,700 US8698817B2 (en) 2004-11-15 2005-11-04 Video processor having scalar and vector components
US11/267,599 US8416251B2 (en) 2004-11-15 2005-11-04 Stream processing in a video processor
US11/267,638 2005-11-04
US11/267,599 2005-11-04
US11/267,875 US8687008B2 (en) 2004-11-15 2005-11-04 Latency tolerant system for executing video processing operations
US11/267,700 2005-11-04
US11/267,638 US8493396B2 (en) 2004-11-15 2005-11-04 Multidimensional datapath processing in a video processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020097002765A Division KR101002485B1 (ko) 2004-11-15 2005-11-14 비디오 처리

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020107018048A Division KR101030174B1 (ko) 2004-11-15 2005-11-14 비디오 처리

Publications (2)

Publication Number Publication Date
KR20090092840A true KR20090092840A (ko) 2009-09-01
KR101061345B1 KR101061345B1 (ko) 2011-08-31

Family

ID=40414018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097015040A KR101061345B1 (ko) 2004-11-15 2005-11-14 비디오 처리

Country Status (3)

Country Link
US (11) US8736623B1 (ko)
KR (1) KR101061345B1 (ko)
CN (1) CN101371233B (ko)

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9849372B2 (en) * 2012-09-28 2017-12-26 Sony Interactive Entertainment Inc. Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title
US20040162637A1 (en) 2002-07-25 2004-08-19 Yulun Wang Medical tele-robotic system with a master remote station with an arbitrator
US6925357B2 (en) 2002-07-25 2005-08-02 Intouch Health, Inc. Medical tele-robotic system
US7813836B2 (en) 2003-12-09 2010-10-12 Intouch Technologies, Inc. Protocol for a remotely controlled videoconferencing robot
US20050204438A1 (en) 2004-02-26 2005-09-15 Yulun Wang Graphical interface for a remote presence system
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8077963B2 (en) 2004-07-13 2011-12-13 Yulun Wang Mobile robot with a head-based movement mapping scheme
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8736623B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Programmable DMA engine for implementing memory transfers and video processing for a video processor
US9041744B2 (en) * 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US9198728B2 (en) 2005-09-30 2015-12-01 Intouch Technologies, Inc. Multi-camera mobile teleconferencing platform
US7483032B1 (en) * 2005-10-18 2009-01-27 Nvidia Corporation Zero frame buffer
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7949054B2 (en) * 2006-06-01 2011-05-24 Microsoft Corporation Flexible data organization for images
US8849679B2 (en) 2006-06-15 2014-09-30 Intouch Technologies, Inc. Remote controlled robot system that provides medical images
EP1873627B1 (en) * 2006-06-28 2009-05-27 STMicroelectronics S.r.l. A clustered SIMD processor architecture
US8265793B2 (en) 2007-03-20 2012-09-11 Irobot Corporation Mobile robot for telecommunication
US9160783B2 (en) 2007-05-09 2015-10-13 Intouch Technologies, Inc. Robot system that operates through a network firewall
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
US8725504B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Inverse quantization in audio decoding
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8019979B2 (en) * 2007-09-12 2011-09-13 Sigma Designs, Inc. Efficient implementation of branch intensive algorithms in VLIW and superscalar processors
US8495602B2 (en) * 2007-09-28 2013-07-23 Qualcomm Incorporated Shader compile system and method
US8704834B2 (en) * 2007-12-03 2014-04-22 Nvidia Corporation Synchronization of video input data streams and video output data streams
US8934539B2 (en) * 2007-12-03 2015-01-13 Nvidia Corporation Vector processor acceleration for media quantization
US8687875B2 (en) * 2007-12-03 2014-04-01 Nvidia Corporation Comparator based acceleration for media quantization
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US10875182B2 (en) 2008-03-20 2020-12-29 Teladoc Health, Inc. Remote presence system mounted to operating room hardware
US8179418B2 (en) 2008-04-14 2012-05-15 Intouch Technologies, Inc. Robotic based health care system
US8170241B2 (en) 2008-04-17 2012-05-01 Intouch Technologies, Inc. Mobile tele-presence system with a microphone system
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US7873938B2 (en) * 2008-06-27 2011-01-18 Transwitch Corporation Method for constructing a variable bitwidth video processor
US9193065B2 (en) 2008-07-10 2015-11-24 Intouch Technologies, Inc. Docking system for a tele-presence robot
US9842192B2 (en) 2008-07-11 2017-12-12 Intouch Technologies, Inc. Tele-presence robot system with multi-cast features
US8340819B2 (en) 2008-09-18 2012-12-25 Intouch Technologies, Inc. Mobile videoconferencing robot system with network adaptive driving
US8996165B2 (en) * 2008-10-21 2015-03-31 Intouch Technologies, Inc. Telepresence robot with a camera boom
US8463435B2 (en) 2008-11-25 2013-06-11 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US9138891B2 (en) * 2008-11-25 2015-09-22 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US8849680B2 (en) 2009-01-29 2014-09-30 Intouch Technologies, Inc. Documentation through a remote presence robot
US8897920B2 (en) 2009-04-17 2014-11-25 Intouch Technologies, Inc. Tele-presence robot system with software modularity, projector and laser pointer
US8384755B2 (en) 2009-08-26 2013-02-26 Intouch Technologies, Inc. Portable remote presence robot
US11399153B2 (en) 2009-08-26 2022-07-26 Teladoc Health, Inc. Portable telepresence apparatus
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
US8923405B1 (en) * 2010-01-25 2014-12-30 Ambarella, Inc. Memory access ordering for a transformation
US11154981B2 (en) 2010-02-04 2021-10-26 Teladoc Health, Inc. Robot user interface for telepresence robot system
US8670017B2 (en) 2010-03-04 2014-03-11 Intouch Technologies, Inc. Remote presence system including a cart that supports a robot face and an overhead camera
US20110249744A1 (en) * 2010-04-12 2011-10-13 Neil Bailey Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
US9014848B2 (en) 2010-05-20 2015-04-21 Irobot Corporation Mobile robot system
US8918213B2 (en) 2010-05-20 2014-12-23 Irobot Corporation Mobile human interface robot
US8935005B2 (en) 2010-05-20 2015-01-13 Irobot Corporation Operating a mobile robot
US10343283B2 (en) 2010-05-24 2019-07-09 Intouch Technologies, Inc. Telepresence robot system that can be accessed by a cellular phone
US10808882B2 (en) 2010-05-26 2020-10-20 Intouch Technologies, Inc. Tele-robotic system with a robot face placed on a chair
US9529574B2 (en) 2010-09-23 2016-12-27 Apple Inc. Auto multi-threading in macroscalar compilers
US8949808B2 (en) * 2010-09-23 2015-02-03 Apple Inc. Systems and methods for compiler-based full-function vectorization
US8621448B2 (en) 2010-09-23 2013-12-31 Apple Inc. Systems and methods for compiler-based vectorization of non-leaf code
US9285793B2 (en) 2010-10-21 2016-03-15 Bluewireless Technology Limited Data processing unit including a scalar processing unit and a heterogeneous processor unit
GB2484906A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing unit with scalar processor and vector processor array
US9264664B2 (en) 2010-12-03 2016-02-16 Intouch Technologies, Inc. Systems and methods for dynamic bandwidth allocation
US20120194526A1 (en) * 2010-12-15 2012-08-02 Benjamin Thomas Sander Task Scheduling
US8930019B2 (en) 2010-12-30 2015-01-06 Irobot Corporation Mobile human interface robot
CN102611899B (zh) * 2011-01-25 2014-11-05 上海渐华科技发展有限公司 基于opengles平台的3d视频游戏信息处理方法及装置
US9323250B2 (en) 2011-01-28 2016-04-26 Intouch Technologies, Inc. Time-dependent navigation of telepresence robots
US8718837B2 (en) 2011-01-28 2014-05-06 Intouch Technologies Interfacing with a mobile telepresence robot
US10769739B2 (en) 2011-04-25 2020-09-08 Intouch Technologies, Inc. Systems and methods for management of information among medical providers and facilities
US20140139616A1 (en) 2012-01-27 2014-05-22 Intouch Technologies, Inc. Enhanced Diagnostics for a Telepresence Robot
US9098611B2 (en) 2012-11-26 2015-08-04 Intouch Technologies, Inc. Enhanced video interaction for a user interface of a telepresence network
US8832412B2 (en) * 2011-07-20 2014-09-09 Broadcom Corporation Scalable processing unit
US8836751B2 (en) 2011-11-08 2014-09-16 Intouch Technologies, Inc. Tele-presence system with a user interface that displays different communication links
US20130135327A1 (en) * 2011-11-29 2013-05-30 Advanced Micro Devices, Inc. Saving and Restoring Non-Shader State Using a Command Processor
US20130145202A1 (en) * 2011-12-06 2013-06-06 Advanced Micro Devices, Inc. Handling Virtual-to-Physical Address Translation Failures
US20130159665A1 (en) * 2011-12-15 2013-06-20 Verisilicon Holdings Co., Ltd. Specialized vector instruction and datapath for matrix multiplication
CN104025019B (zh) * 2011-12-23 2018-01-05 英特尔公司 用于执行双块绝对差求和的系统、装置和方法
GB2502047B (en) * 2012-04-04 2019-06-05 Snell Advanced Media Ltd Video sequence processing
US8902278B2 (en) 2012-04-11 2014-12-02 Intouch Technologies, Inc. Systems and methods for visualizing and managing telepresence devices in healthcare networks
US9251313B2 (en) 2012-04-11 2016-02-02 Intouch Technologies, Inc. Systems and methods for visualizing and managing telepresence devices in healthcare networks
US9361021B2 (en) 2012-05-22 2016-06-07 Irobot Corporation Graphical user interfaces including touchpad driving interfaces for telemedicine devices
EP2852475A4 (en) 2012-05-22 2016-01-20 Intouch Technologies Inc SOCIAL BEHAVIOR OF A MEDICAL TELEPRESCENT ROBOT
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US8823426B2 (en) * 2012-10-24 2014-09-02 SK Hynix Inc. Deserializers
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US9407920B2 (en) * 2013-01-22 2016-08-02 Vixs Systems, Inc. Video processor with reduced memory bandwidth and methods for use therewith
US10796617B2 (en) * 2013-06-12 2020-10-06 Infineon Technologies Ag Device, method and system for processing an image data stream
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
PL3041576T3 (pl) 2013-09-05 2019-12-31 Idexx Laboratories, Inc. Sposoby wykrywania choroby nerek
WO2015035327A1 (en) 2013-09-06 2015-03-12 Futurewei Technologies, Inc. Method and apparatus for asynchronous processor with fast and slow mode
US10185604B2 (en) * 2013-10-31 2019-01-22 Advanced Micro Devices, Inc. Methods and apparatus for software chaining of co-processor commands before submission to a command queue
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US9619214B2 (en) 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9934146B2 (en) * 2014-09-26 2018-04-03 Intel Corporation Hardware apparatuses and methods to control cache line coherency
EP3193254A4 (en) * 2014-10-09 2017-10-11 Huawei Technologies Co. Ltd. Asynchronous instruction execution apparatus and method
US9588746B2 (en) 2014-12-19 2017-03-07 International Business Machines Corporation Compiler method for generating instructions for vector operations on a multi-endian processor
US10169014B2 (en) 2014-12-19 2019-01-01 International Business Machines Corporation Compiler method for generating instructions for vector operations in a multi-endian instruction set
US10310998B2 (en) 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
KR102395541B1 (ko) * 2015-07-09 2022-05-11 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US9880821B2 (en) 2015-08-17 2018-01-30 International Business Machines Corporation Compiler optimizations for vector operations that are reformatting-resistant
US9594668B1 (en) 2015-09-04 2017-03-14 International Business Machines Corporation Debugger display of vector register contents after compiler optimizations for vector instructions
US10115175B2 (en) * 2016-02-19 2018-10-30 Qualcomm Incorporated Uniform predicates in shaders for graphics processing units
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10521390B2 (en) * 2016-11-17 2019-12-31 The United States Of America As Represented By The Secretary Of The Air Force Systems and method for mapping FIFOs to processor address space
US10275391B2 (en) * 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result
US11150943B2 (en) * 2017-04-10 2021-10-19 Intel Corporation Enabling a single context hardware system to operate as a multi-context system
US11862302B2 (en) 2017-04-24 2024-01-02 Teladoc Health, Inc. Automated transcription and documentation of tele-health encounters
US11010659B2 (en) * 2017-04-24 2021-05-18 Intel Corporation Dynamic precision for neural network compute operations
CN107182083B (zh) * 2017-05-27 2021-08-10 努比亚技术有限公司 移动终端及数据包传输方法
US10483007B2 (en) 2017-07-25 2019-11-19 Intouch Technologies, Inc. Modular telehealth cart with thermal imaging and touch screen user interface
US11636944B2 (en) 2017-08-25 2023-04-25 Teladoc Health, Inc. Connectivity infrastructure for a telehealth platform
US10366001B1 (en) * 2017-09-15 2019-07-30 Xilinx, Inc. Partitioning memory blocks for reducing dynamic power consumption
US10567504B2 (en) * 2017-11-29 2020-02-18 International Business Machines Corporation Protecting in-flight transaction requests
US10579557B2 (en) 2018-01-16 2020-03-03 Advanced Micro Devices, Inc. Near-memory hardened compute blocks for configurable computing substrates
US10617299B2 (en) 2018-04-27 2020-04-14 Intouch Technologies, Inc. Telehealth cart that supports a removable tablet with seamless audio/video switching
CN110543351B (zh) 2018-05-29 2023-11-17 华为技术有限公司 数据处理方法以及计算机设备
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
CN110851073B (zh) * 2018-08-20 2023-06-02 慧荣科技股份有限公司 储存装置及巨集指令的执行方法
CN109558170B (zh) * 2018-11-06 2021-05-04 极芯通讯技术(南京)有限公司 一种支持数据级并行和多指令融合的二维数据通路架构
US11625393B2 (en) * 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
CN110119375B (zh) * 2019-05-16 2020-08-25 湖南毂梁微电子有限公司 一种将多个标量核链接为单核向量处理阵列的控制方法
CN110345090B (zh) * 2019-05-20 2020-04-14 重庆大学 热力发电热源管理系统
US11269651B2 (en) * 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation
US10922781B1 (en) 2019-12-05 2021-02-16 Nxp Usa, Inc. System for processing images from multiple image sensors
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US10999497B1 (en) 2020-03-31 2021-05-04 Nxp Usa, Inc. System for parallelly processing image lines from multiple image sensors
US20210334234A1 (en) * 2020-04-22 2021-10-28 Micron Technology, Inc. Distributed graphics processor unit architecture
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN114626540A (zh) * 2020-12-11 2022-06-14 上海阵量智能科技有限公司 处理器和相关产品
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Family Cites Families (255)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3091657A (en) * 1962-11-14 1963-05-28 Flexiflor Electrical Systems I Wiring ducts
US3614710A (en) 1969-07-07 1971-10-19 Berkey Colortran Mfg Inc Bipost socket for luminaires
US3614740A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
US3987291A (en) 1975-05-01 1976-10-19 International Business Machines Corporation Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location
US4101960A (en) 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4541046A (en) 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4566005A (en) 1983-03-07 1986-01-21 International Business Machines Corporation Data management for plasma display
US4748585A (en) 1985-12-26 1988-05-31 Chiarulli Donald M Processor utilizing reconfigurable process segments to accomodate data word length
US4965751A (en) * 1987-08-18 1990-10-23 Hewlett-Packard Company Graphics system with programmable tile size and multiplexed pixel data and partial pixel addresses based on tile size
US4985848A (en) 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US4965716A (en) 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
US4897717A (en) 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
US4958303A (en) * 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
US5210834A (en) * 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
US4897779A (en) 1988-07-20 1990-01-30 Digital Equipment Corporation Method and apparatus for optimizing inter-processor instruction transfers
US5040109A (en) 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US5175828A (en) 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
JPH0795766B2 (ja) * 1989-06-30 1995-10-11 株式会社日立製作所 デジタル・データ通信装置及びそれに使用するデータ通信アダプタ
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JPH07101885B2 (ja) 1990-02-15 1995-11-01 日立電線株式会社 ネットワークを相互接続するブリッジ回路
JP3218567B2 (ja) * 1990-09-28 2001-10-15 クロームアロイ・ガス・タービン・コーポレイション 高強力ニッケル基超合金類の溶接
US5123456A (en) * 1990-10-05 1992-06-23 Band-It-Idex, Inc. Banding tool with including clamping plunger
JPH0799508B2 (ja) * 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5596746A (en) * 1991-10-21 1997-01-21 General Electric Company Method for transforming relational data base schemas into object models using ideal table meta models
US5522080A (en) 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
US5659723A (en) * 1991-12-20 1997-08-19 International Business Machines Corporation Entity/relationship to object oriented logical model conversion method
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5375223A (en) 1993-01-07 1994-12-20 International Business Machines Corporation Single register arbiter circuit
US5682554A (en) * 1993-01-15 1997-10-28 Silicon Graphics, Inc. Apparatus and method for handling data transfer between a general purpose computer and a cooperating processor
DE69421103T2 (de) 1993-01-22 2000-06-08 Matsushita Electric Ind Co Ltd Programmgesteuertes Prozessor
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5388245A (en) * 1993-06-01 1995-02-07 Intel Corporation Memory arbitration method and apparatus for multiple-cycle memory coprocessors employing a data cache unit and stack RAM
JP3248992B2 (ja) 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US6073158A (en) 1993-07-29 2000-06-06 Cirrus Logic, Inc. System and method for processing multiple received signal sources
US5574944A (en) 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
US5802574A (en) 1993-12-28 1998-09-01 Intel Corporation Method and apparatus for quickly modifying cache state
US5761476A (en) 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5809524A (en) 1994-01-04 1998-09-15 Intel Corporation Method and apparatus for cache memory replacement line identification
JPH0877347A (ja) 1994-03-08 1996-03-22 Texas Instr Inc <Ti> 画像/グラフィックス処理用のデータ処理装置およびその操作方法
US5560030A (en) * 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
JPH0877002A (ja) 1994-08-31 1996-03-22 Sony Corp 並列プロセッサ装置
US5542078A (en) * 1994-09-29 1996-07-30 Ontos, Inc. Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
GB2293668B (en) 1994-09-30 1999-09-29 Advanced Risc Mach Ltd Accessing data memories
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US5768564A (en) * 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
US5920352A (en) 1994-10-28 1999-07-06 Matsushita Electric Industrial Co., Ltd. Image memory storage system and method for a block oriented image processing system
JPH08153032A (ja) 1994-11-29 1996-06-11 Matsushita Electric Ind Co Ltd ネットワーク経由データ先読みバッファ方法
JP3619565B2 (ja) 1995-04-26 2005-02-09 株式会社ルネサステクノロジ データ処理装置、及びそれを用いたシステム
US5649173A (en) * 1995-03-06 1997-07-15 Seiko Epson Corporation Hardware architecture for image generation and manipulation
US5764243A (en) 1995-03-24 1998-06-09 3Dlabs Inc. Ltd. Rendering architecture with selectable processing of multi-pixel spans
EP0735487B1 (en) 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
EP0823092A1 (en) * 1995-04-24 1998-02-11 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5754191A (en) * 1995-06-23 1998-05-19 Cirrus Logic, Inc. Method and apparatus for optimizing pixel data write operations to a tile based frame buffer
US5917730A (en) * 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US6016474A (en) 1995-09-11 2000-01-18 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US20020116595A1 (en) 1996-01-11 2002-08-22 Morton Steven G. Digital signal processor integrated circuit
US6317819B1 (en) * 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US6128771A (en) * 1996-02-09 2000-10-03 Sun Microsystems, Inc. System and method for automatically modifying database access methods to insert database object handling instructions
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US6049672A (en) * 1996-03-08 2000-04-11 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US5950012A (en) 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US5784640A (en) * 1996-03-18 1998-07-21 Advanced Micro Devices, Inc. CPU with DSP function preprocessor having look-up table for translating instruction sequences intended to perform DSP function into DSP macros
DE29606102U1 (de) 1996-04-02 1996-06-05 Hermann Kleinhuis GmbH & Co KG, 58507 Lüdenscheid Kabelkanal
US6092094A (en) 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
JPH09287217A (ja) 1996-04-19 1997-11-04 Ohbayashi Corp 高遮音特性を有するプレキャストコンクリート板
US6131152A (en) 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
US5848254A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6222552B1 (en) 1996-07-26 2001-04-24 International Business Machines Corporation Systems and methods for caching depth information of three-dimensional images
KR100262453B1 (ko) 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
US6192073B1 (en) 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5835788A (en) * 1996-09-18 1998-11-10 Electronics For Imaging System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory
US5812147A (en) * 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5678904A (en) * 1996-10-15 1997-10-21 Hung; Tzu-Wen Detachable wardrobe
US5893066A (en) 1996-10-15 1999-04-06 Samsung Electronics Co. Ltd. Fast requantization apparatus and method for MPEG audio decoding
US5949410A (en) 1996-10-18 1999-09-07 Samsung Electronics Company, Ltd. Apparatus and method for synchronizing audio and video frames in an MPEG presentation system
US5925124A (en) 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US6141740A (en) 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US5940090A (en) 1997-05-07 1999-08-17 Cirrus Logic, Inc. Method and apparatus for internally caching the minimum and maximum XY pixel address values in a graphics subsystem
US5940858A (en) 1997-05-30 1999-08-17 National Semiconductor Corporation Cache circuit with programmable sizing and method of operation
US6269475B1 (en) * 1997-06-02 2001-07-31 Webgain, Inc. Interface for object oriented programming language
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
KR100243100B1 (ko) 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US6163781A (en) * 1997-09-11 2000-12-19 Physician Weblink Technology Services, Inc. Object-to-relational data converter mapping attributes to object instance into relational tables
US5983020A (en) * 1997-10-02 1999-11-09 International Business Machines Corporation Rule-based engine for transformation of class hierarchy of an object-oriented program
US5999199A (en) 1997-11-12 1999-12-07 Cirrus Logic, Inc. Non-sequential fetch and store of XY pixel data in a graphics processor
US6301600B1 (en) 1997-11-18 2001-10-09 Intrinsity, Inc. Method and apparatus for dynamic partitionable saturating adder/subtractor
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
JPH11190447A (ja) 1997-12-26 1999-07-13 Matsushita Electric Ind Co Ltd ガス遮断装置
US6480927B1 (en) 1997-12-31 2002-11-12 Unisys Corporation High-performance modular memory system with crossbar connections
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6542937B1 (en) * 1998-02-27 2003-04-01 Amada Company, Limited Apparatus and method for transferring and editing sheet metal part data
US6192458B1 (en) 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US6850893B2 (en) * 2000-01-14 2005-02-01 Saba Software, Inc. Method and apparatus for an improved security system mechanism in a business applications management system platform
US6631423B1 (en) 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6144392A (en) 1998-04-30 2000-11-07 Ati Technologies, Inc. Method and apparatus for formatting a texture in a frame buffer
US6150610A (en) * 1998-05-26 2000-11-21 The Wiremold Company Tamper-resistant surface mounted raceway cover
US6282634B1 (en) 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6252610B1 (en) 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
US6208361B1 (en) * 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
US6611272B1 (en) 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
US6490654B2 (en) 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
AU5686299A (en) 1998-08-20 2000-03-14 Raycer, Inc. Method and apparatus for generating texture
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
JP3983394B2 (ja) 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
US6570579B1 (en) * 1998-11-09 2003-05-27 Broadcom Corporation Graphics display system
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
TW442734B (en) 1998-11-23 2001-06-23 Winbond Electronics Corp Protocol transformation circuit and data transmission method for direct memory access to universal serial bus
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6496902B1 (en) 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US6298354B1 (en) * 1999-02-19 2001-10-02 Sun Microsystems, Inc. Mechanism and process to transform a grammar-derived intermediate form to an object-oriented configuration database
US6437789B1 (en) 1999-02-19 2002-08-20 Evans & Sutherland Computer Corporation Multi-level cache controller
US6209078B1 (en) * 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
CA2267482C (en) * 1999-03-30 2004-08-10 Ibm Canada Limited-Ibm Canada Limitee Report program language source code translation to object-oriented language source code which emulates report program language behaviour
US7031330B1 (en) 1999-04-15 2006-04-18 Marconi Intellectual Property (Ringfence), Inc. Very wide memory TDM switching system
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
JP3639464B2 (ja) 1999-07-05 2005-04-20 株式会社ルネサステクノロジ 情報処理システム
US6915385B1 (en) * 1999-07-30 2005-07-05 International Business Machines Corporation Apparatus for unaligned cache reads and methods therefor
US6880126B1 (en) * 1999-08-03 2005-04-12 International Business Machines Corporation Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data
US6529201B1 (en) 1999-08-19 2003-03-04 International Business Machines Corporation Method and apparatus for storing and accessing texture maps
US6657635B1 (en) 1999-09-03 2003-12-02 Nvidia Corporation Binning flush in graphics data processing
US6825848B1 (en) 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6381600B1 (en) * 1999-09-22 2002-04-30 International Business Machines Corporation Exporting and importing of data in object-relational databases
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6631463B1 (en) 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US6975324B1 (en) 1999-11-09 2005-12-13 Broadcom Corporation Video and graphics system with a video transport processor
US6754670B1 (en) * 1999-12-17 2004-06-22 International Business Machines Corporation Mapping relational tables to object oriented classes
US6597357B1 (en) 1999-12-20 2003-07-22 Microsoft Corporation Method and system for efficiently implementing two sided vertex lighting in hardware
US6499090B1 (en) 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US6978457B1 (en) 2000-01-31 2005-12-20 Agilent Technologies, Inc. Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
US6715035B1 (en) 2000-02-17 2004-03-30 International Business Machines Corporation Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
JP3474173B2 (ja) 2000-02-25 2003-12-08 株式会社ソニー・コンピュータエンタテインメント 画像出力装置に応じた画像データを作成する情報処理装置およびそのための記録媒体
US6370617B1 (en) * 2000-04-10 2002-04-09 Silicon Integrated Systems Corp. Non-stalling pipeline tag controller
US6624818B1 (en) 2000-04-21 2003-09-23 Ati International, Srl Method and apparatus for shared microcode in a multi-thread computation engine
US7003781B1 (en) * 2000-05-05 2006-02-21 Bristol Technology Inc. Method and apparatus for correlation of events in a distributed multi-system computing environment
US6859217B2 (en) * 2000-07-19 2005-02-22 Microsoft Corporation System and method to display and manage data within hierarchies and polyarchies of information
US6674841B1 (en) 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6668370B1 (en) * 2000-09-21 2003-12-23 International Business Machines Corporation Synchronous execution of object-oriented scripts and procedural code from within an interactive test facility
US6560685B1 (en) 2000-09-27 2003-05-06 Sony Corporation System and method to improve speed and reduce memory allocation for set top box boot-up
US6629188B1 (en) 2000-11-13 2003-09-30 Nvidia Corporation Circuit and method for prefetching data for a texture cache
US6957230B2 (en) * 2000-11-30 2005-10-18 Microsoft Corporation Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values
US7296070B2 (en) * 2000-12-22 2007-11-13 Tier-3 Pty. Ltd. Integrated monitoring system
US7047524B1 (en) * 2000-12-30 2006-05-16 Hyperformix Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language
US6788303B2 (en) 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6772172B2 (en) * 2001-04-27 2004-08-03 Sun Microsystems, Inc. Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database
US6940503B2 (en) 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
TWI242725B (en) * 2001-06-11 2005-11-01 Oce Tech Bv A method for executing a hot migrate operation through an incremental roll-over process that uses migration plug-in means for conversion during an upgrade transition, and a multiprocessing system and a system arranged for implementing such method
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
KR100395756B1 (ko) 2001-06-16 2003-08-21 삼성전자주식회사 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
JP3835207B2 (ja) 2001-06-27 2006-10-18 ソニー株式会社 試着画像提供システム及び試着画像提供方法、試着画像生成装置及び試着画像生成方法
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US6922716B2 (en) 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7016418B2 (en) 2001-08-07 2006-03-21 Ati Technologies, Inc. Tiled memory configuration for mapping video data and method thereof
US20030037473A1 (en) 2001-08-21 2003-02-27 Pifer Jeffrey C. Apparatus for displaying a transparency
US6784888B2 (en) 2001-10-03 2004-08-31 Ati Technologies, Inc. Method and apparatus for executing a predefined instruction set
JP3840966B2 (ja) 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US20040073773A1 (en) 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US7159212B2 (en) 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6983408B2 (en) 2002-03-08 2006-01-03 Microsoft Corporation Managing error/status information generated during video processing
US6812929B2 (en) 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US7015909B1 (en) 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US6732242B2 (en) 2002-03-28 2004-05-04 Intel Corporation External bus transaction scheduling system
US7146468B2 (en) 2002-04-24 2006-12-05 Ip-First, Llc. Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache
US6785772B2 (en) 2002-04-26 2004-08-31 Freescale Semiconductor, Inc. Data prefetching apparatus in a data processing system and method therefor
US6891543B2 (en) 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7035979B2 (en) 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US7027059B2 (en) 2002-05-30 2006-04-11 Intel Corporation Dynamically constructed rasterizers
US6990656B2 (en) * 2002-06-27 2006-01-24 Microsoft Corporation Dynamic metabase store
US6952214B2 (en) 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
US6809732B2 (en) 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US6825843B2 (en) 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7434229B2 (en) * 2002-07-31 2008-10-07 Genesys Telecommunications Laboratories, Inc. Method for improving temporal consistency and snapshot recency in a monitored real-time software-reporting-application architecture
US7099887B2 (en) * 2002-08-08 2006-08-29 International Business Machines Corporation Hierarchical environments supporting relational schemas
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
US6944744B2 (en) 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US7249350B2 (en) 2002-09-30 2007-07-24 Intel Corporation Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions
US7480893B2 (en) * 2002-10-04 2009-01-20 Siemens Corporate Research, Inc. Rule-based system and method for checking compliance of architectural analysis and design models
US6957317B2 (en) 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US6981106B1 (en) 2002-11-26 2005-12-27 Unisys Corporation System and method for accelerating ownership within a directory-based memory system
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US6839062B2 (en) 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US6976126B2 (en) 2003-03-11 2005-12-13 Arm Limited Accessing data values in a cache
US20040205326A1 (en) 2003-03-12 2004-10-14 Sindagi Vijay K.G. Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
US20040193837A1 (en) 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US7148888B2 (en) 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7032097B2 (en) 2003-04-24 2006-04-18 International Business Machines Corporation Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US6993628B2 (en) 2003-04-28 2006-01-31 International Business Machines Corporation Cache allocation mechanism for saving elected unworthy member via substitute victimization and imputed worthiness of substitute victim member
US20040221117A1 (en) * 2003-05-02 2004-11-04 Shelor Charles F. Logic and method for reading data from cache
US7151544B2 (en) 2003-05-16 2006-12-19 Sun Microsystems, Inc. Method for improving texture cache access by removing redundant requests
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7260677B1 (en) 2003-07-16 2007-08-21 Unisys Corporation Programmable system and method for accessing a shared memory
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
GB2406404C (en) 2003-09-26 2011-11-02 Advanced Risc Mach Ltd Data processing apparatus and method for handling corrupted data values
US7202872B2 (en) 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US20080079737A1 (en) * 2003-11-19 2008-04-03 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of mode control commands (MCCS) programmed within pre-profiled scenes of the graphics-based application
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7406698B2 (en) 2003-12-30 2008-07-29 Microsoft Corporation Driver framework component for synchronizing interactions between a multi-threaded environment and a driver operating in a less-threaded software environment
US6985151B1 (en) 2004-01-06 2006-01-10 Nvidia Corporation Shader pixel storage in a graphics memory
US7702757B2 (en) * 2004-04-07 2010-04-20 Xiotech Corporation Method, apparatus and program storage device for providing control to a networked storage architecture
US7154500B2 (en) 2004-04-20 2006-12-26 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US7724263B2 (en) 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7328359B2 (en) 2004-07-21 2008-02-05 Intel Corporation Technique to create link determinism
JP4520790B2 (ja) 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US20060064517A1 (en) 2004-09-23 2006-03-23 Honeywell International Inc. Event-driven DMA controller
US7669009B2 (en) * 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US8736623B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Programmable DMA engine for implementing memory transfers and video processing for a video processor
US20060106626A1 (en) * 2004-11-16 2006-05-18 Jun-Jang Jeng Method and apparatus of model driven business solution monitoring and control
US7680805B2 (en) * 2004-12-30 2010-03-16 Sap Ag Synchronization method for an object oriented information system (IS) model
US7869835B1 (en) 2005-03-02 2011-01-11 Nvidia Corporation Method and system for pre-loading and executing computer instructions within the cache memory
US20060293935A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for incrementally exposing business application errors using an integrated display
US7958486B2 (en) * 2005-04-22 2011-06-07 Sap Ag Methods and systems for data-focused debugging and tracing capabilities
US20060293940A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for applying intelligent filters and identifying life cycle events for data elements during business application debugging
US20060293934A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for providing an integrated business application configuration environment
DE102005020688B4 (de) * 2005-05-03 2008-01-03 Siemens Ag Mobiltelefon
US7486290B1 (en) 2005-06-10 2009-02-03 Nvidia Corporation Graphical shader by using delay
US7450131B2 (en) 2005-09-30 2008-11-11 Intel Corporation Memory layout for re-ordering instructions using pointers
US7451293B2 (en) 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7725687B2 (en) 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor
US7493452B2 (en) 2006-08-18 2009-02-17 International Business Machines Corporation Method to efficiently prefetch and batch compiler-assisted software cache accesses
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
US8269782B2 (en) 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
US7959261B2 (en) 2007-05-08 2011-06-14 Lexmark International, Inc. Micro-fluid ejection devices having reduced input/output addressable heaters
US8990543B2 (en) 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
US8645439B2 (en) 2009-12-24 2014-02-04 Mcmaster University Bit-width allocation for scientific computations

Also Published As

Publication number Publication date
US8493396B2 (en) 2013-07-23
US9111368B1 (en) 2015-08-18
US20060176309A1 (en) 2006-08-10
US8698817B2 (en) 2014-04-15
US20060103659A1 (en) 2006-05-18
US8725990B1 (en) 2014-05-13
US8683184B1 (en) 2014-03-25
US8416251B2 (en) 2013-04-09
US8493397B1 (en) 2013-07-23
US8736623B1 (en) 2014-05-27
US20060176308A1 (en) 2006-08-10
US8687008B2 (en) 2014-04-01
KR101061345B1 (ko) 2011-08-31
US8738891B1 (en) 2014-05-27
CN101371233B (zh) 2012-10-17
CN101371233A (zh) 2009-02-18
US8424012B1 (en) 2013-04-16
US20060152520A1 (en) 2006-07-13

Similar Documents

Publication Publication Date Title
KR101061345B1 (ko) 비디오 처리
Rathnam et al. An architectural overview of the programmable multimedia processor, TM-1
US6847365B1 (en) Systems and methods for efficient processing of multimedia data
KR101030174B1 (ko) 비디오 처리
TWI733808B (zh) 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構
US20160358300A1 (en) Automated conversion of gpgpu workloads to 3d pipeline workloads
Basoglu et al. Single‐chip processor for media applications: the MAP1000™
EP4062988A1 (en) Video streaming for cloud gaming
TWI327434B (en) Video processing
Jaspers Architecture design of video processing systems on a chip
CN111489280A (zh) 用于向头戴式显示器的流送的固定凹形压缩

Legal Events

Date Code Title Description
A107 Divisional application of patent
A107 Divisional application of patent
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170811

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180801

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190801

Year of fee payment: 9