JP4906734B2 - Video processing - Google Patents

Video processing Download PDF

Info

Publication number
JP4906734B2
JP4906734B2 JP2007541436A JP2007541436A JP4906734B2 JP 4906734 B2 JP4906734 B2 JP 4906734B2 JP 2007541436 A JP2007541436 A JP 2007541436A JP 2007541436 A JP2007541436 A JP 2007541436A JP 4906734 B2 JP4906734 B2 JP 4906734B2
Authority
JP
Japan
Prior art keywords
execution unit
vector
scalar
stream
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2007541436A
Other languages
Japanese (ja)
Other versions
JP2008521097A (en
Inventor
シリッシュ ガドレ,
アシッシュ カランディカー,
スティーヴン リュウ,
クリストファー, ティー. チェン,
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/267,638 external-priority patent/US8493396B2/en
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2008521097A publication Critical patent/JP2008521097A/en
Application granted granted Critical
Publication of JP4906734B2 publication Critical patent/JP4906734B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • 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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, 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
    • G06T1/60Memory management
    • 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/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Abstract

A latency tolerant system for executing video processing operations is described. So too is a stream processing in a video processor, a video processor having scalar and vector components and multidimensional datapath processing in a video processor.

Description

関連出願の相互参照Cross-reference of related applications

本出願は、「A METHOD AND SYSTEM FOR VIDEO PROCESSING」と題し、2004年11月15日に出願したGadre他の米国特許仮出願第60/628,414号の、米国特許法第119(e)条の下での利益を主張するものであり、当該仮出願を、その全体を参照することによって本明細書に援用するものである。   This application is entitled “A METHOD AND SYSTEM FOR VIDEO PROCESSING” and is filed on Nov. 15, 2004 in US Provisional Patent Application No. 60 / 628,414 of Gadre et al. The provisional application of which is hereby incorporated by reference in its entirety.

発明の分野Field of Invention

[001]本記載内容の分野は、デジタル電子コンピュータシステムに関するものである。より詳細には、本記載内容は、ビデオ情報をコンピュータシステムにおいて効率的に処理するシステムに関するものである。一側面に関して、ビデオ処理オペレーションを実行する耐待ち時間システムを説明する。別の一側面に関して、ビデオプロセッサにおけるストリーム処理を説明する。さらに、ビデオプロセッサにおける多次元データパス処理を説明する。また、スカラーコンポーネント及びベクトルコンポーネントを有するビデオプロセッサを説明する。   [001] The field of this description relates to digital electronic computer systems. More particularly, this description relates to a system that efficiently processes video information in a computer system. In one aspect, a latency-tolerant system that performs video processing operations is described. Regarding another aspect, stream processing in a video processor will be described. Further, multidimensional data path processing in the video processor will be described. A video processor having a scalar component and a vector component is also described.

背景background

[002]画像及びフルモーションビデオの表示は、近年の大幅な進歩に伴って改良されつつある電子業界の分野である。高品質ビデオ、特に高精細度デジタルビデオの表示及びレンダリングは、最新ビデオ技術のアプリケーション及びデバイスの主要な目標である。ビデオ技術は、携帯電話、パーソナルビデオレコーダ、デジタルビデオプロジェクタ、高精細度テレビ等にわたる多種多様な製品に使用されている。高精細度ビデオの生成及び表示に対応するデバイスの登場と成長展開は、大幅な技術革新と進歩を経験している電子業界の一つの領域である。   [002] Display of images and full motion video is an area of the electronics industry that is being improved with significant progress in recent years. The display and rendering of high quality video, especially high definition digital video, is a major goal of modern video technology applications and devices. Video technology is used in a wide variety of products ranging from mobile phones, personal video recorders, digital video projectors, high-definition televisions and the like. The advent and growth of devices that support the generation and display of high-definition video is one area of the electronics industry that has experienced significant technological innovation and progress.

[003]多くの家庭用電化製品タイプ及び業務用レベルのデバイスにおいて導入されているビデオ技術は、一以上のビデオプロセッサを利用して、表示用のビデオ信号をフォーマット及び/又は強化する。これは特に、デジタルビデオアプリケーションに当てはまることである。例えば、一以上のビデオプロセッサは、標準的なセットトップボックスに組み込まれており、HDTV放送信号を、ディスプレイによって使用可能なビデオ信号に変換するために使用されている。このような変換には、例えば、スケーリングがあり、当該スケーリングでは、ビデオ信号が、16:9以外のビデオ画像から、16:9のディスプレイ(例えばワイドスクリーン)での適切な表示のために、変換される。一以上のビデオプロセッサを使用して走査変換を実行することが可能であり、当該走査変換では、奇数及び偶数の走査線が別個に表示されるインターレース形式から、フレーム全体が単一のスイープで描かれるプログレッシブ形式に、ビデオ信号が変換される。   [003] Video technologies deployed in many consumer electronics types and business-level devices utilize one or more video processors to format and / or enhance the video signal for display. This is especially true for digital video applications. For example, one or more video processors are incorporated into a standard set-top box and are used to convert HDTV broadcast signals into video signals that can be used by a display. Such conversion includes, for example, scaling, where a video signal is converted from a video image other than 16: 9 for proper display on a 16: 9 display (eg, widescreen). Is done. It is possible to perform scan conversion using one or more video processors, where the entire frame is drawn in a single sweep, from an interlaced format where the odd and even scan lines are displayed separately. The video signal is converted into a progressive format.

[004]ビデオプロセッサのアプリケーションの更なる例には、信号の圧縮解除があり、当該圧縮解除においては、例えば、ビデオ信号が圧縮形式(例えばMPEG−2)で受信され、圧縮解除されて表示用にフォーマットされる。別の例は、再インターレース走査変換であり、当該変換は、到来するデジタルビデオ信号を、DVI(Digital Visual Interface)形式から、市場に導入されている膨大な数の旧式のテレビディスプレイと互換性のある複合(コンポジット)ビデオ形式に変換することを伴う。   [004] A further example of a video processor application is signal decompression, in which, for example, a video signal is received in a compressed format (eg MPEG-2) and decompressed for display. To be formatted. Another example is a re-interlaced scan conversion that converts an incoming digital video signal from the DVI (Digital Visual Interface) format to the vast number of older television displays introduced on the market. With conversion to some composite video format.

[005]より高度なユーザーは、例えば、インループ/アウトオブループ・デブロッキングフィルタ、高性能(advanced)動き適応型順次走査変換、符号化オペレーション用の入力ノイズフィルタリング、多相スケーリング/再サンプリング、サブピクチャ合成、並びに、色空間変換、調整、ピクセルポイントオペレーション(例えば、鮮明化、ヒストグラム調整等)、及び、種々のビデオの表面フォーマット変換サポートオペレーションのようなプロセッサ増幅器のオペレーション等、より高性能のビデオプロセッサ機能を必要とする。   [005] More advanced users include, for example, in-loop / out-of-loop deblocking filters, advanced motion adaptive progressive scan conversion, input noise filtering for encoding operations, polyphase scaling / resampling, Higher performance such as sub-picture synthesis and processor amplifier operations such as color space conversion, adjustment, pixel point operations (eg sharpening, histogram adjustment, etc.) and various video surface format conversion support operations Requires video processor function.

[006]このような高性能のビデオプロセッサ機能を提供することに関する問題は、かかる機能を実装する十分に強力なアーキテクチャを有するビデオプロセッサが、多くのタイプのデバイスに組み込むにはあまりに高価なものであるということである。ビデオ処理機能が高性能になれば、それに応じて、シリコンダイ領域、トランジスタ数、メモリ速度要件等の点で、そのような機能を実装するために必要となる集積回路デバイスも更に高価となる。   [006] The problem with providing such high performance video processor functionality is that a video processor with a sufficiently powerful architecture to implement such functionality is too expensive to be incorporated into many types of devices. That is. As video processing functions become more sophisticated, the integrated circuit devices required to implement such functions are also more expensive in terms of silicon die area, number of transistors, memory speed requirements, and the like.

[007]したがって、従来技術のシステム設計者は、ビデオプロセッサの性能とコストに関してトレードオフを強いられてきた。許容可能なコスト性能比を有すると広く見なされている従来のビデオプロセッサは、多くの場合、待ち時間の制約(例えば、ビデオの中断(stuttering)又はビデオ処理アプリケーションの停滞を防ぐためのもの)、及び計算密度(例えば、ダイの平方ミリメートルあたりのプロセッサオペレーションの数)に関して殆ど十分ではなかった。さらに、従来技術のビデオプロセッサは一般に、ビデオデバイスが複数のビデオストリームを処理することを期待されている場合(例えば、複数の到来ストリーム及び送出ディスプレイストリームの同時処理)など、線形スケーリング性能の要件に適合していない。   [007] Accordingly, prior art system designers have been forced to make trade-offs regarding video processor performance and cost. Conventional video processors, widely regarded as having an acceptable cost / performance ratio, often have latency constraints (eg, to prevent video stuttering or stagnation of video processing applications), And in terms of computational density (eg, number of processor operations per square millimeter of die). In addition, prior art video processors typically meet linear scaling performance requirements, such as when a video device is expected to process multiple video streams (eg, simultaneous processing of multiple incoming and outgoing display streams). Not compatible.

[008]したがって、従来技術の制限を克服する新規のビデオプロセッサシステムが必要とされている。新規のビデオプロセッサシステムは、ますます高度化するユーザーによって期待されている高性能なビデオプロセッサ機能を扱うよう、拡張可能であり、高い計算密度を有する必要がある。   [008] Accordingly, there is a need for new video processor systems that overcome the limitations of the prior art. New video processor systems need to be scalable and have a high computational density to handle the high performance video processor functions expected by increasingly sophisticated users.

概要Overview

[009]本記載内容の実施の形態は、新規のビデオプロセッサシステムを提供するものであり、当該ビデオプロセッサシステムは、高性能なビデオ処理機能をサポートし、集積回路シリコンダイ領域、トランジスタ数、メモリ速度要件などを効率的に利用する。本記載内容の実施の形態は、高い計算密度を保持し、複数のビデオストリームを処理するために容易に拡張することができる。   [009] Embodiments described herein provide a novel video processor system that supports high performance video processing functions, integrated circuit silicon die area, transistor count, memory. Use speed requirements efficiently. Embodiments of this description retain high computational density and can be easily extended to handle multiple video streams.

[010]ある実施の形態では、ビデオプロセッサでビデオ処理オペレーションを実行する耐待ち時間システムが実施される。本システムは、ビデオプロセッサとホストCPU間の通信を実施するホストインターフェイスと、ホストインターフェイスに結合され、且つスカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ホストインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットとを備える。コマンドFIFOが、ベクトル実行ユニットがメモリコマンドFIFOにアクセスすることによって要求駆動ベースで動作できるようにするために備えられる。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられる。DMAエンジンは、複数の異なる記憶域の間のDMA転送を実施し、データストアメモリ及び命令キャッシュにベクトル実行ユニットのデータと命令をロードするために、メモリインターフェイスに組み込まれている。   [010] In one embodiment, a latency-tolerant system is implemented that performs video processing operations on a video processor. The system is coupled to a host interface that implements communication between the video processor and the host CPU, a scalar execution unit coupled to the host interface and configured to perform scalar video processing operations, and to the host interface; A vector execution unit configured to perform vector video processing operations. A command FIFO is provided to allow the vector execution unit to operate on a request driven basis by accessing the memory command FIFO. A memory interface is provided for performing communication between the video processor and the frame buffer memory. The DMA engine is incorporated into the memory interface to perform DMA transfers between different storage locations and load vector execution unit data and instructions into the data store memory and instruction cache.

[011]ある実施の形態では、ベクトル実行ユニットは、コマンドFIFOにアクセスすることよってスカラー実行ユニットに対して非同期に動作して、要求駆動ベースで動作するように構成されている。要求駆動ベースは、異なる記憶域(例えば、フレームバッファメモリ、システムメモリ、キャッシュメモリなど)からベクトル実行ユニットのコマンドFIFOへのデータ転送の待ち時間を隠蔽するように構成することができる。コマンドFIFOは、ベクトル実行ユニットの停滞を防ぐためにパイプライン型FIFOであってもよい。   [011] In an embodiment, the vector execution unit is configured to operate asynchronously with respect to the scalar execution unit by accessing a command FIFO and to operate on a request driven basis. The request driven base can be configured to conceal the latency of data transfer from different storage areas (eg, frame buffer memory, system memory, cache memory, etc.) to the command execution unit command FIFO. The command FIFO may be a pipelined FIFO to prevent stagnation of vector execution units.

[012]ある実施の形態では、本発明は、ビデオ処理オペレーションを実行するためのビデオプロセッサとして実施される。ビデオプロセッサは、ビデオプロセッサとホストCPUとの間の通信を実施するホストインターフェイスを備える。ビデオプロセッサは、ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスを備える。スカラー実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、且つ、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されている。ビデオプロセッサは、スタンドアロンのビデオプロセッサ集積回路であってもよく、或いは、GPU集積回路に組み込まれたコンポーネントであってもよい。   [012] In one embodiment, the present invention is implemented as a video processor for performing video processing operations. The video processor includes a host interface that implements communication between the video processor and the host CPU. The video processor includes a memory interface that implements communication between the video processor and the frame buffer memory. A scalar execution unit is coupled to the host interface and the memory interface and is configured to perform scalar video processing operations. A vector execution unit is coupled to the host interface and the memory interface and is configured to perform vector video processing operations. The video processor may be a stand-alone video processor integrated circuit or may be a component embedded in a GPU integrated circuit.

[013]ある実施の形態では、スカラー実行ユニットは、ビデオプロセッサのコントローラとして機能し、ベクトル実行ユニットのオペレーションを制御する。スカラー実行ユニットは、アプリケーションのフロー制御アルゴリズムを実行するように構成することができ、ベクトル実行ユニットはアプリケーションのピクセル処理オペレーションを実行するように構成することができる。ベクトルインターフェイスユニットが、スカラー実行ユニットをベクトル実行ユニットにインターフェイスするためにビデオプロセッサにそなえられてもよい。ある実施の形態では、スカラー実行ユニット及びベクトル実行ユニットは、非同期に動作するように構成される。スカラー実行ユニットは第1のクロック周波数で実行することができ、ベクトル実行ユニットは異なるクロック周波数で(例えば、より速い、より遅いなど)実行することができる。ベクトル実行ユニットは、スカラー実行ユニットの制御の下で、要求駆動ベースで動作することができる。   [013] In an embodiment, the scalar execution unit functions as a controller of the video processor and controls the operation of the vector execution unit. The scalar execution unit can be configured to execute the flow control algorithm of the application, and the vector execution unit can be configured to execute the pixel processing operation of the application. A vector interface unit may be provided in the video processor to interface the scalar execution unit to the vector execution unit. In some embodiments, the scalar execution unit and the vector execution unit are configured to operate asynchronously. The scalar execution unit can execute at a first clock frequency and the vector execution unit can execute at a different clock frequency (eg, faster, slower, etc.). The vector execution unit can operate on a demand driven basis under the control of the scalar execution unit.

[014]ある実施の形態では、本発明は、ビデオ処理オペレーションを実行するためのビデオプロセッサ用の多次元データパス処理システムとして実施される。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。データストアメモリが、ベクトル実行ユニットのデータを格納するために備えられる。データストアメモリは、配列状に構成された対称バンクデータ構造を有する複数のタイルを有する。バンクデータ構造は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。   [014] In one embodiment, the present invention is implemented as a multi-dimensional data path processing system for a video processor for performing video processing operations. The video processor comprises a scalar execution unit configured to perform scalar video processing operations and a vector execution unit configured to perform vector video processing operations. A data store memory is provided for storing vector execution unit data. The data store memory has a plurality of tiles having a symmetric bank data structure arranged in an array. The bank data structure is configured to support access to different tiles in each bank.

[015]個々の構成の要件に応じて、各々のバンクデータ構造は、複数のタイル(例えば、4×4、8×8、8×16、16×24など)を備えることができる。ある実施の形態では、バンクは、各バンクの異なるタイルへのアクセスをサポートするように構成されている。これにより、単一のアクセスで、二つの隣接するバンクから1行又は1列のタイルを取り出すことができる。ある実施の形態では、クロスバーが、複数のバンクデータ構造のタイルにアクセスする構成(例えば、行、列、ブロックなど)を選択するために使用される。また、コレクタを、クロスバーによってアクセスされるバンクのタイルを受け取るため、及び1クロックごとにベクトルデータパスの前端にタイルを提供するために備えることができる。   [015] Depending on individual configuration requirements, each bank data structure may comprise multiple tiles (eg, 4x4, 8x8, 8x16, 16x24, etc.). In one embodiment, the banks are configured to support access to different tiles in each bank. As a result, a single row or column of tiles can be extracted from two adjacent banks with a single access. In one embodiment, a crossbar is used to select a configuration (eg, row, column, block, etc.) that accesses multiple bank data structure tiles. A collector can also be provided to receive tiles for banks accessed by the crossbar and to provide tiles at the front end of the vector data path every clock.

[016]ある実施の形態では、本発明は、ビデオプロセッサのためのストリームベースのメモリアクセスシステムとして実施される。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。フレームバッファメモリが、スカラー実行ユニット及びベクトル実行ユニットのデータを格納するために備えられる。メモリインターフェイスが、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を実施するために備えられる。フレームバッファメモリは、複数のタイルを備える。メモリインターフェイスは、スカラー実行ユニットのタイルの第1の順次アクセスの第1のストリームを実施し、ベクトル実行ユニットのタイルの第2の順次アクセスの第2のストリームを実施する。   [016] In one embodiment, the present invention is implemented as a stream-based memory access system for a video processor. The video processor comprises a scalar execution unit configured to perform scalar video processing operations and a vector execution unit configured to perform vector video processing operations. A frame buffer memory is provided for storing scalar execution unit and vector execution unit data. A memory interface is provided for performing communication between the scalar execution unit, the vector execution unit, and the frame buffer memory. The frame buffer memory includes a plurality of tiles. The memory interface implements a first stream of first sequential accesses of tiles of scalar execution units and a second stream of second sequential access of tiles of vector execution units.

[017]ある実施の形態において、第1のストリーム及び第2のストリームは、アクセス待ち時間を元の記憶域(例えば、フレームバッファメモリ、システムメモリなど)から隠蔽するような方法でプリフェッチされた、一連の順次プリフェッチタイルを備える。ある実施の形態では、メモリインターフェイスは、複数の異なる元の記憶域からのストリーム、及び、複数の異なる終端記憶域へのストリームを含む複数の異なるストリームを管理するように構成される。ある実施の形態では、メモリインターフェイスに組み込まれているDMAエンジンを使用して、複数のメモリ読み取り及び複数のメモリ書き込みを実施し、多数のストリームをサポートする。   [017] In an embodiment, the first stream and the second stream are prefetched in a manner that conceals access latency from original storage (eg, frame buffer memory, system memory, etc.), With a series of sequential prefetch tiles. In one embodiment, the memory interface is configured to manage a plurality of different streams including streams from a plurality of different original storage areas and a stream to a plurality of different terminal storage areas. In one embodiment, a DMA engine embedded in the memory interface is used to perform multiple memory reads and multiple memory writes to support multiple streams.

[018]概して、この書面は、少なくとも以下の四つの方法を開示する。
A)この説明において広範に教示する方法は、ビデオ処理オペレーションを実行するビデオプロセッサにおける多次元データパス処理システムのための方法であり、スカラー実行ユニットを使用することによってスカラービデオ処理オペレーションを実行するステップと、ベクトル実行ユニットを使用することによってベクトルビデオ処理オペレーションを実行するステップと、データストアメモリを使用することによってベクトル実行ユニットのデータを格納するステップとを、含み、データストアメモリは配列状に構成された対称バンクデータ構造を有する複数のタイルを備え、当該バンクデータ構造は各バンクの異なるタイルへのアクセスをサポートするように構成される。さらに、上述のAの方法では、各々のバンクデータ構造が4×4のパターンに構成された複数のタイルを含む。また、上述のAの方法では、各々のバンクデータ構造が、8×8、8×16、又は16×24のパターンに構成された複数のタイルを含む。加えて、上述のAの方法は、バンクデータ構造が、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成され、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への当該二つのバンクデータ構造の1行のタイルを含むアクセスである。上述のAの方法ではまた、タイルが、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成され、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への当該二つの隣接するバンクデータ構造の1列のタイルを含むアクセスである。さらに、上述のAの方法は、複数のバンクデータ構造のタイルにアクセスするための構成を、データストアに結合されたクロスバーを使用することによって、選択するステップを含む。この選択ステップにおいて、クロスバーは、複数のバンクデータ構造のタイルにアクセスして、1クロック毎にベクトルデータパスにデータを供給する。また、クロスバーによってアクセスされる複数のバンクデータ構造のタイルを、コレクタを使用することによって受け取るステップと、タイルをベクトルデータパスの前端に1クロックごとに提供するステップと、を含む。
[018] In general, this document discloses at least the following four methods.
A) The method broadly taught in this description is a method for a multi-dimensional data path processing system in a video processor that performs video processing operations, and performing a scalar video processing operation by using a scalar execution unit And executing the vector video processing operation by using the vector execution unit, and storing the data of the vector execution unit by using the data store memory, wherein the data store memory is arranged in an array. A plurality of tiles having a symmetric bank data structure configured to support access to different tiles in each bank. Further, in the method A described above, each bank data structure includes a plurality of tiles arranged in a 4 × 4 pattern. In the method A described above, each bank data structure includes a plurality of tiles configured in an 8 × 8, 8 × 16, or 16 × 24 pattern. In addition, the method of A above is configured such that the bank data structures support access to different tiles of each bank data structure, and at least one access is associated with the two adjacent bank data structures. Access including one row tile of one bank data structure. In the above method A, the tile is also configured to support access to different tiles of each bank data structure, and at least one access is the two adjacent banks to the two adjacent bank data structures. Access that includes one column of tiles in the data structure. Further, the method A described above includes selecting a configuration for accessing a plurality of bank data structure tiles by using a crossbar coupled to the data store. In this selection step, the crossbar accesses a plurality of bank data structure tiles and supplies data to the vector data path every clock. Also, receiving a plurality of bank data structure tiles accessed by the crossbar by using a collector and providing the tiles to the front end of the vector data path every clock.

B)この説明において広範に教示する方法はまた、ビデオ処理オペレーションを実行するための方法であって、当該方法はコンピュータ可読コードを実行するコンピュータシステムのビデオプロセッサを使用して実施され、また、当該方法は、ビデオプロセッサとホストCPUとの間の通信を、ホストインターフェイスを使用することによって確立するステップと、ビデオプロセッサとフレームバッファメモリとの間の通信を、メモリインターフェイスを使用することによって確立するステップと、スカラービデオ処理オペレーションを、ホストインターフェイス及びメモリインターフェイスに結合されたスカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ホストインターフェイス及びメモリインターフェイスに結合されたベクトル実行ユニットを使用することによって実行するステップと、を含む。上述のBの方法では、更に、スカラー実行ユニットが、ビデオプロセッサのコントローラとして機能し、ベクトル実行ユニットのオペレーションを制御する。上述の方法Bはまた、スカラー実行ユニットとベクトル実行ユニットのインターフェイスを取るためにベクトルインターフェイスユニットを備える。上述のBの方法ではまた、スカラー実行ユニット及びベクトル実行ユニットが、非同期に動作するように構成される。また、スカラー実行ユニットは第1のクロック周波数で実行し、ベクトル実行ユニットは第2のクロック周波数で実行する。上述のBの方法では、スカラー実行ユニットが、アプリケーションのフロー制御アルゴリズムを実行するように構成され、ベクトル実行ユニットが、アプリケーションのピクセル処理オペレーションを実行するように構成される。さらに、ベクトル実行ユニットは、スカラー実行ユニットの制御のもとで、要求駆動ベースで動作するように構成される。加えて、スカラー実行ユニットは、メモリコマンドFIFOを使用してベクトル実行ユニットに関数呼び出しを送るように構成され、ベクトル実行ユニットはメモリコマンドFIFOにアクセスすることによって要求駆動ベースで動作する。また、ビデオプロセッサの非同期動作は、アプリケーションのベクトルサブルーチン又はスカラーサブルーチンの別個の独立した更新をサポートするように構成される。最後に、上述のBの方法では、スカラー実行ユニットが、VLIW(超長命令語)コードを使用して動作するように構成される。 B) The method broadly taught in this description is also a method for performing video processing operations, the method being implemented using a video processor of a computer system executing computer readable code, and The method establishes communication between the video processor and the host CPU by using the host interface, and establishes communication between the video processor and the frame buffer memory by using the memory interface. Performing a scalar video processing operation by using a scalar execution unit coupled to the host interface and the memory interface; and vector video processing operation to the host interface and And executing by the use of combined vector execution unit to the memory interface, a. In the above method B, the scalar execution unit further functions as a controller of the video processor and controls the operation of the vector execution unit. Method B described above also comprises a vector interface unit for interfacing the scalar execution unit with the vector execution unit. In method B above, the scalar execution unit and the vector execution unit are also configured to operate asynchronously. The scalar execution unit executes at the first clock frequency, and the vector execution unit executes at the second clock frequency. In the method B above, the scalar execution unit is configured to execute the flow control algorithm of the application, and the vector execution unit is configured to execute the pixel processing operation of the application. Further, the vector execution unit is configured to operate on a demand driven basis under the control of the scalar execution unit. In addition, the scalar execution unit is configured to send function calls to the vector execution unit using a memory command FIFO, and the vector execution unit operates on a request driven basis by accessing the memory command FIFO. Also, the asynchronous operation of the video processor is configured to support separate and independent updates of the application's vector subroutine or scalar subroutine. Finally, in method B above, the scalar execution unit is configured to operate using VLIW (very long instruction word) code.

C)本明細書に説明する方法はまた、ビデオ処理オペレーションを実行するビデオプロセッサにおけるストリームベースのメモリアクセスのための方法を広範に教示するものであり、当該方法は、スカラービデオ処理オペレーションを、スカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ベクトル実行ユニットを使用することによって実行するステップと、スカラー実行ユニット及びベクトル実行ユニットのデータを、フレームバッファメモリを使用することによって格納するステップと、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を、メモリインターフェイスを使用して実施するステップと、を含み、フレームバッファメモリは複数のタイルを備え、メモリインターフェイスは、ベクトル実行ユニット又はスカラー実行ユニットのために、タイルの第1の順次アクセスを含む第1のストリームを実施し、タイルの第2の順次アクセスを含む第2のストリームを実施する。上述のCの方法はまた、少なくとも一つのプリフェッチされたタイルを含む第1のストリーム及び第2のストリームを有する。上述のCの方法はさらに、フレームバッファメモリの第1のロケーションから生じる第1のストリームと、フレームバッファメモリの第2のロケーションから生じる第2のストリームとを備える。前述のCの方法ではまた、メモリインターフェイスが、複数の異なる発生元ロケーションからのストリーム、及び、複数の異なる終端ロケーションへのストリームを含む複数のストリームを管理するように構成される。この点において、少なくとも一つの発生元ロケーション又は少なくとも一つの終端ロケーションは、システムメモリ内にある。上述のCの方法はまた、複数のメモリ読み取りを実施して第1のストリーム及び第2のストリームをサポートするステップと、メモリインターフェイスに組み込まれたDMAエンジンを使用することによって、複数のメモリ読み取りを実施して第1のストリーム及び第2のストリームをサポートするステップと、を含む。さらに、Cの方法では、第1のストリームが、第2のストリームよりも多い待ち時間を受け、当該第1のストリームは、タイルを格納するために第2のストリームよりも多数のバッファを組み込む。Cの方法ではまた、メモリインターフェイスが、第1のストリーム又は第2のストリームの調整可能な数のタイルをプリフェッチして、第1のストリーム又は第2のストリームの待ち時間を補償するように構成される。 C) The method described herein also broadly teaches a method for stream-based memory access in a video processor that performs video processing operations, which includes scalar video processing operations. Executing by using an execution unit; performing a vector video processing operation by using a vector execution unit; and using scalar execution unit and vector execution unit data by using a frame buffer memory. Storing, and performing communication between the scalar execution unit, the vector execution unit, and the frame buffer memory using a memory interface, wherein the frame buffer memory includes a plurality of frame buffer memories. And a memory interface for a vector execution unit or a scalar execution unit that implements a first stream that includes a first sequential access of tiles and a second stream that includes a second sequential access of tiles. carry out. The method C described above also has a first stream and a second stream that include at least one prefetched tile. The method C described above further comprises a first stream originating from a first location in the frame buffer memory and a second stream originating from a second location in the frame buffer memory. In method C above, the memory interface is also configured to manage multiple streams, including streams from multiple different origin locations and streams to multiple different end locations. In this regard, at least one origin location or at least one end location is in system memory. The method C described above also performs multiple memory reads to support the first stream and the second stream, and uses the DMA engine built into the memory interface to perform multiple memory reads. Implementing to support a first stream and a second stream. Further, in method C, the first stream experiences more latency than the second stream, and the first stream incorporates more buffers than the second stream to store tiles. In method C, the memory interface is also configured to prefetch an adjustable number of tiles of the first stream or second stream to compensate for the latency of the first stream or second stream. The

D)本明細書に説明する方法はまた、耐待ち時間ビデオ処理オペレーションの方法を広範に含むものであり、当該方法は、ビデオプロセッサとホストCPUとの間の通信を、ホストインターフェイスを使用することによって実施するステップと、スカラービデオ処理オペレーションを、ホストインターフェイスに結合されたスカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ホストインターフェイスに結合されたベクトル実行ユニットを使用することによって実行するステップと、ベクトル実行ユニットがメモリコマンドFIFOにアクセスすることによって要求駆動ベースで動作できるようにするステップと、ビデオプロセッサとフレームバッファメモリとの間の通信を、メモリインターフェイスを使用することによって実施するステップと、複数の異なる記憶域の間のDMA転送を、メモリインターフェイスに組み込まれ、且つ、データストアメモリ及び命令キャッシュにベクトル実行ユニットのデータと命令をロードするように構成されたDMAエンジンを使用することによって、実施するステップとを含む。上述のDの方法では更に、ベクトル実行ユニットが、コマンドFIFOにアクセスして要求駆動ベースで動作することによって、スカラー実行ユニットに対して非同期に動作するように構成される。上述のDの方法ではまた、要求駆動ベースが、異なる記憶域からベクトル実行ユニットのコマンドFIFOへのデータ転送の待ち時間を隠蔽するように構成される。さらに、上述のDの方法では、スカラー実行ユニットが、アルゴリズムのフロー制御処理を実施するように構成され、ベクトル実行ユニットはビデオ処理ワークロードの大部分を実施するように構成される。ここで、スカラー実行ユニットは、ベクトル実行ユニットの作業パラメータを事前に計算して、データ転送待ち時間を隠蔽するように構成される。上述のDの方法では、ベクトル実行ユニットが、DMAエンジン経由でのメモリ読み取りをスケジュールし、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成される。ここで、メモリ読み取りは、スカラー実行ユニットによるベクトルサブルーチンの呼び出しに先立ち、ベクトルサブルーチンの実行のためのコマンドをプリフェッチするようにスケジュールされる。 D) The methods described herein also broadly include methods of latency-tolerant video processing operations that use a host interface for communication between the video processor and the host CPU. Performing a scalar video processing operation by using a scalar execution unit coupled to the host interface, and using a vector execution unit coupled to the host interface. The communication between the video processor and the frame buffer memory, and the step of enabling the vector execution unit to operate on a demand driven basis by accessing the memory command FIFO. The steps implemented by using the interface and DMA transfers between different storage areas are incorporated into the memory interface and load the data execution memory and instruction cache into the data store memory and instruction cache. Implementing by using a DMA engine configured to: In the method D described above, the vector execution unit is further configured to operate asynchronously with respect to the scalar execution unit by accessing the command FIFO and operating on a request driven basis. In method D above, the request driven base is also configured to conceal the latency of data transfer from different storage to the command FIFO of the vector execution unit. Further, in the method D described above, the scalar execution unit is configured to perform the flow control processing of the algorithm, and the vector execution unit is configured to perform the majority of the video processing workload. Here, the scalar execution unit is configured to pre-calculate the working parameters of the vector execution unit to conceal the data transfer latency. In the method D above, the vector execution unit is configured to schedule memory reads via the DMA engine and prefetch commands for subsequent execution of the vector subroutine. Here, the memory read is scheduled to prefetch a command for execution of the vector subroutine prior to calling the vector subroutine by the scalar execution unit.

[019]本発明を、添付の図面の図において、限定することなく、例示の目的で説明する。当該図面においては、同様の参照番号によって同様の要素を参照する。   [019] The present invention will now be described for purposes of illustration and not limitation in the figures of the accompanying drawings. In the drawings, like elements are referred to by like reference numerals.

発明の詳細な説明Detailed Description of the Invention

[026]以下、本発明の好適な実施の形態の詳細について言及し、当該実施の形態の例を添付の図面に示す。本発明を好適な実施の形態に関して説明するが、これら実施の形態は本発明をそれらに限定するよう意図したものでないことが理解されよう。一方、本発明は、代替、変更、及び等価物を網羅することが意図されたものであり、これらは、添付の特許請求の範囲によって定義される本発明の精神及び範囲内に含まれる。さらに、本発明の実施の形態の以下の詳細な説明では、本発明を完全な理解のために、多数の具体的な詳細を示す。しかしながら、本発明はそれら具体的な詳細なくしても実施され得ることは、当業者には理解されるであろう。例によっては、本発明の実施の形態の態様を不必要に不明瞭にしないように、既知の方法、手順、コンポーネント、及び回路については、詳細には説明しない。   [026] Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that these embodiments are not intended to limit the invention thereto. On the contrary, the invention is intended to cover alternatives, modifications, and equivalents, which are included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the embodiments of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be appreciated by one skilled in the art that the present invention may be practiced without these specific details. In some instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the embodiments of the present invention.

<表記及び用語>
[027]以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対するオペレーションの手順、ステップ、論理ブロック、処理、及び、その他の記号による表記で、示されている。これらの説明及び表記は、当業者の分野の内容を他の当業者に最も効果的に伝達するために、データ処理分野の当業者によって使用される手段である。手順、コンピュータ実行ステップ、論理ブロック、プロセス等は、本明細書において、また一般的に、所望の結果を導く首尾一貫した一連のステップ又は命令であると考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、必須ではないが、それらの量は、コンピュータシステムにおいて、格納、転送、結合、比較、その他の操作が行われうる電子信号又は磁気信号の形態をとる。主として一般的な用法であるという理由から、それらの信号をビット、値、要素、記号、文字、項、数等として参照することが、時として都合がよいことが判明している。
<Notation and terminology>
[027] Some portions of the detailed descriptions that follow are presented in terms of procedures, steps, logic blocks, processes, and other symbolic representations of operations on data bits within a computer memory. These descriptions and notations are the means used by those skilled in the data processing arts to most effectively convey the substance of their art to others skilled in the art. Procedures, computer-executed steps, logic blocks, processes, etc., are considered herein and generally a consistent series of steps or instructions that lead to a desired result. Steps are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electronic or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

[028]しかしながら、それら及び類似の用語は全て、適切な物理量に関連付けられるべきものであり、それらの量に適用される便利なラベルに過ぎないことを念頭におく必要がある。特に具体的に別の記述がない限り、以下の説明から明らかなように、本発明全体を通じて、「処理」、「アクセス」、「実行」「格納」、「レンダリング」等のいずれの用語を使用する説明も、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されるデータを、コンピュータシステムメモリ又はレジスタその他のそのような情報記憶、伝送又は表示装置内の物理量として同様に表される他のデータへと操作及び変換する、コンピュータシステム(例えば、図1のコンピュータシステム100)又は類似の電子計算装置のアクション及びプロセスを指すことを理解されたい。   [028] However, it should be borne in mind that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to those quantities. Unless otherwise specifically stated, as will be clear from the following description, the terms “process”, “access”, “execute”, “store”, “render”, etc. are used throughout the present invention. Similarly, data expressed as physical (electronic) quantities in computer system registers and memories are also represented as physical quantities in computer system memory or registers or other such information storage, transmission or display devices. It should be understood that it refers to the actions and processes of a computer system (eg, computer system 100 of FIG. 1) or similar electronic computing device that manipulates and converts to other data.

<コンピュータシステムプラットフォーム>
[029]図1は、本発明のある実施の形態に係るコンピュータシステム100を示している。コンピュータシステム100は、本発明の実施の形態に係る基本コンピュータシステムのコンポーネントを示しており、特定のハードウェアベース及びソフトウェアベースの機能用に実行プラットフォームを提供するものである。一般に、コンピュータシステム100は、少なくとも一つのCPU101と、システムメモリ115と、少なくとも一つのグラフィックス処理ユニット(GPU)110と、一つのビデオ処理ユニット(VPU)111と、を備えている。CPU101は、ブリッジコンポーネント105を介してシステムメモリ115に結合することができ、又はCPU101の内部にあるメモリコントローラ(図示せず)を介してシステムメモリ115に直接結合することができる。ブリッジコンポーネント105(例えば、Northbridge)は、種々の入出力装置(例えば、一以上のハードディスクドライブ、イーサネットアダプタ、CD−ROM、DVD等)を接続する拡張バスをサポートすることができる。GPU110及びビデオ処理装置111は、ディスプレイ112に結合されている。一以上の追加のGPUを、オプションでシステム100に結合して、その計算能力が更に増強することが可能である。GPU110及びビデオ処理ユニット111は、ブリッジコンポーネント105を介してCPU101及びシステムメモリ115に結合されている。システム100は、例えば、専用グラフィックスレンダリングGPU110に結合された強力な汎用CPU101を有するデスクトップコンピュータシステム又はサーバコンピュータシステムとして実施されてもよい。このような実施の形態においては、周辺バス、専用のグラフィックスメモリ及びシステムメモリ、入出力装置等を追加するコンポーネントが含まれてもよい。同様に、システム100は、ハンドヘルドデバイス(例えば、携帯電話等)、或いは、例えば、ワシントン州レドモンドのMicrosoft Corporationから提供されているXbox(登録商標)又は日本の東京のSony Computer Entertainment Corporationから提供されているPlayStation3(登録商標)等のセットトップビデオゲームコンソールデバイスとして実施されてもよい。
<Computer system platform>
[029] FIG. 1 illustrates a computer system 100 according to an embodiment of the invention. Computer system 100 illustrates the components of a basic computer system according to an embodiment of the present invention and provides an execution platform for specific hardware-based and software-based functions. In general, the computer system 100 includes at least one CPU 101, a system memory 115, at least one graphics processing unit (GPU) 110, and one video processing unit (VPU) 111. The CPU 101 can be coupled to the system memory 115 via the bridge component 105 or can be directly coupled to the system memory 115 via a memory controller (not shown) internal to the CPU 101. The bridge component 105 (eg, Northbridge) can support an expansion bus that connects various input / output devices (eg, one or more hard disk drives, Ethernet adapters, CD-ROMs, DVDs, etc.). GPU 110 and video processing device 111 are coupled to display 112. One or more additional GPUs can optionally be coupled to the system 100 to further enhance its computing power. The GPU 110 and the video processing unit 111 are coupled to the CPU 101 and the system memory 115 via the bridge component 105. The system 100 may be implemented, for example, as a desktop computer system or server computer system having a powerful general purpose CPU 101 coupled to a dedicated graphics rendering GPU 110. In such an embodiment, a component for adding a peripheral bus, a dedicated graphics memory and system memory, an input / output device and the like may be included. Similarly, the system 100 may be a handheld device (eg, a mobile phone, etc.) or provided by, for example, Xbox® provided by Microsoft Corporation of Redmond, Washington or Sony Computer Entertainment Corporation of Tokyo, Japan. It may be implemented as a set-top video game console device such as PlayStation3®.

[030]GPU110は、別個のコンポーネント、コネクタ(例えば、AGPスロット、PCI−Expressスロット等)を介してコンピュータシステム100に結合するよう設計された別個のグラフィックスカード、別個の集積回路ダイ(例えば、マザーボードに直接搭載)、又はコンピュータシステムのチップセットコンポーネントの集積回路ダイに含められた(例えば、ブリッジチップ105内に組み込まれる)集積GPUとして実装され得ることを理解されたい。さらに、ローカルグラフィックスメモリが、GPU110の高帯域グラフィックスデータストレージ用に含められてもよい。さらに、GPU110及びビデオ処理装置111は、同一の集積回路ダイに統合されてもよく(例えば、コンポーネント120として)、或いは、コンピュータシステム100のマザーボードに接続されるか又は搭載される別個の分離した集積回路コンポーネントであってもよいことを理解されたい。   [030] The GPU 110 is a separate graphics card, separate integrated circuit die (eg, motherboard) designed to couple to the computer system 100 via separate components, connectors (eg, AGP slots, PCI-Express slots, etc.). It should be understood that it can be implemented as an integrated GPU included directly in the bridge chip 105 (e.g., embedded in the bridge chip 105) or directly on the integrated circuit die of a chipset component of a computer system. In addition, local graphics memory may be included for high bandwidth graphics data storage of the GPU 110. Further, the GPU 110 and the video processing unit 111 may be integrated into the same integrated circuit die (eg, as the component 120) or may be separate discrete integrated connected to or mounted on the motherboard of the computer system 100. It should be understood that it may be a circuit component.

本発明の実施の形態Embodiment of the present invention

[031]図2は、本発明のある実施の形態に係るビデオ処理ユニット111の内部コンポーネントを示す図である。図2に示すように、ビデオ処理ユニット111は、スカラー実行ユニット201と、ベクトル実行ユニット202と、メモリインターフェイス203と、ホストインターフェイス204と、を備えている。   [031] FIG. 2 is a diagram illustrating the internal components of the video processing unit 111 according to an embodiment of the present invention. As shown in FIG. 2, the video processing unit 111 includes a scalar execution unit 201, a vector execution unit 202, a memory interface 203, and a host interface 204.

[032]図2の実施の形態では、ビデオ処理ユニット(以降、単にビデオプロセッサ)111は、ビデオ処理オペレーションを実行する機能コンポーネントを有する。ビデオプロセッサ111は、ホストインターフェイス204を使用し、ブリッジ105を経由するビデオプロセッサ111とホストCPU101との間の通信を確立する。ビデオプロセッサ111は、メモリインターフェイス203を使用し、ビデオプロセッサ111とフレームバッファメモリ205(例えば、結合されたディスプレイ112用(図示せず))との間の通信を確立する。スカラー実行ユニット201は、ホストインターフェイス204及びメモリインターフェイス203に結合されており、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットは、ホストインターフェイス204及びメモリインターフェイス203に結合されており、ベクトルビデオ処理オペレーションを実行するように構成されている。   [032] In the embodiment of FIG. 2, the video processing unit (hereinafter simply video processor) 111 has functional components that perform video processing operations. The video processor 111 uses the host interface 204 to establish communication between the video processor 111 and the host CPU 101 via the bridge 105. Video processor 111 uses memory interface 203 to establish communication between video processor 111 and frame buffer memory 205 (eg, for a combined display 112 (not shown)). The scalar execution unit 201 is coupled to the host interface 204 and the memory interface 203 and is configured to perform scalar video processing operations. The vector execution unit is coupled to the host interface 204 and the memory interface 203 and is configured to perform vector video processing operations.

[033]図2の実施の形態は、ビデオプロセッサ111が、その実行機能を、スカラーオペレーションとベクトルオペレーションに分割する方式を示している。スカラーオペレーションは、スカラー実行ユニット201によって実施される。ベクトルオペレーションは、ベクトル実行ユニット202によって実施される。   [033] The embodiment of FIG. 2 illustrates a manner in which the video processor 111 divides its execution function into scalar operations and vector operations. Scalar operations are performed by the scalar execution unit 201. Vector operations are performed by the vector execution unit 202.

[034]ある実施の形態では、ベクトル実行ユニット202は、スカラー実行ユニット201のスレーブコプロセッサとして機能するように構成される。そのような実施の形態では、スカラー実行ユニットは、ベクトル実行ユニット202のワークロードを、制御ストリームをベクトル実行ユニット202に供給し、且つ、ベクトル実行ユニット202のデータ入出力を管理することによって、管理する。制御ストリームは通常、関数パラメータ、サブルーチン引数等を含む。通常のビデオ処理アプリケーションでは、アプリケーションの処理アルゴリズムの制御フローはスカラー実行ユニット201で実行されるが、実際のピクセル/データ処理オペレーションはベクトル実行ユニット202で実施される。   [034] In one embodiment, vector execution unit 202 is configured to function as a slave coprocessor of scalar execution unit 201. In such an embodiment, the scalar execution unit manages the workload of the vector execution unit 202 by supplying a control stream to the vector execution unit 202 and managing the data input / output of the vector execution unit 202. To do. A control stream typically includes function parameters, subroutine arguments, and the like. In a typical video processing application, the control flow of the application processing algorithm is executed by the scalar execution unit 201, while the actual pixel / data processing operations are executed by the vector execution unit 202.

[035]更に図2を参照する。スカラー実行ユニット201は、RISCベースの実行技術が組み込まれたRISC型のスカラー実行ユニットとして実施することができる。ベクトル実行ユニット202は、例えば、一つ又は複数のSIMDパイプラインを有するSIMDマシンとして実施してもよい。二つのSIMDパイプラインの実施の形態では、例えば、各SIMDパイプラインは幅16ピクセルのデータパス(又はそれ以上)で実施することができ、従って、クロックあたり最大32ピクセルのデータ出力を生み出す計算能力をベクトル実行ユニット202にもたらす。ある実施の形態では、スカラー実行ユニット201は、VLIW(超長命令語)ソフトウェアコードを使用して動作し、クロックあたりベースでスカラーオペレーションの並列実行を最適化するように構成されたハードウェアを備える。   [035] Still referring to FIG. The scalar execution unit 201 can be implemented as a RISC type scalar execution unit incorporating RISC-based execution technology. Vector execution unit 202 may be implemented, for example, as a SIMD machine having one or more SIMD pipelines. In two SIMD pipeline embodiments, for example, each SIMD pipeline can be implemented with a 16 pixel wide data path (or more), thus, computing power to produce a data output of up to 32 pixels per clock. To the vector execution unit 202. In one embodiment, scalar execution unit 201 comprises hardware that operates using VLIW (very long instruction word) software code and is configured to optimize parallel execution of scalar operations on a per clock basis. .

[036]図2の実施の形態では、スカラー実行ユニット201は、スカラープロセッサ210に結合された命令キャッシュ211及びデータキャッシュ212を備えている。キャッシュ211〜212は、例えば、フレームバッファ205等の外部メモリへのアクセス用のメモリインターフェイス203とインターフェイスする。スカラー実行ユニット201は更に、ベクトル実行ユニット202との通信を確立するためにベクトルインターフェイスユニット213を備えている。ある実施の形態では、ベクトルインターフェイスユニット213は、スカラー実行ユニット201とベクトル実行ユニット202との間の非同期通信を可能にするように構成された一以上の同期メールボックス214を備えることができる。   In the embodiment of FIG. 2, scalar execution unit 201 includes an instruction cache 211 and a data cache 212 coupled to scalar processor 210. The caches 211 to 212 interface with a memory interface 203 for accessing an external memory such as the frame buffer 205, for example. The scalar execution unit 201 further comprises a vector interface unit 213 for establishing communication with the vector execution unit 202. In certain embodiments, the vector interface unit 213 can comprise one or more synchronous mailboxes 214 configured to allow asynchronous communication between the scalar execution unit 201 and the vector execution unit 202.

[037]図2の実施の形態では、ベクトル実行ユニット202は、ベクトル制御ユニット220を備えており、当該ベクトル制御ユニット220は、ベクトル実行データパスであるベクトルデータパス221のオペレーションを制御するように構成されている。ベクトル制御ユニット220は、スカラー実行ユニット201から命令及びデータを受け取るために、コマンドFIFO225を備えている。命令キャッシュ222は、命令をベクトル制御ユニット220に供給するように結合されている。データストアメモリ223は、入力データをベクトルデータパス221に供給し、結果として生じたデータをベクトルデータパス221から受け取るように、結合されている。データストア223は、ベクトルデータパス221の命令キャッシュ及びデータRAMとして機能する。命令キャッシュ222及びデータストア223は、フレームバッファ205のような外部メモリにアクセスするためのメモリインターフェイス203に結合されている。図2の実施の形態はまた、第2のベクトルデータパス231及び対応の第2のデータストア233(例えば、点線の外枠)も示している。第2のベクトルデータパス231及び第2のデータストア233は、ベクトル実行ユニット202が二つのベクトル実行パイプライン(例えば、二重化SIMDパイプライン構成)を有する場合を説明するために示されていることを理解されたい。本発明の実施の形態は、多数のベクトル実行パイプライン(例えば、4、8、16など)を有するベクトル実行ユニットに適している。   [037] In the embodiment of FIG. 2, the vector execution unit 202 comprises a vector control unit 220, which controls the operation of the vector data path 221 that is a vector execution data path. It is configured. The vector control unit 220 includes a command FIFO 225 for receiving instructions and data from the scalar execution unit 201. Instruction cache 222 is coupled to provide instructions to vector control unit 220. The data store memory 223 is coupled to provide input data to the vector data path 221 and receive the resulting data from the vector data path 221. The data store 223 functions as an instruction cache and data RAM for the vector data path 221. Instruction cache 222 and data store 223 are coupled to a memory interface 203 for accessing external memory, such as frame buffer 205. The embodiment of FIG. 2 also shows a second vector data path 231 and a corresponding second data store 233 (eg, a dotted outline). The second vector data path 231 and the second data store 233 are shown to illustrate the case where the vector execution unit 202 has two vector execution pipelines (eg, a duplexed SIMD pipeline configuration). I want you to understand. Embodiments of the present invention are suitable for vector execution units having multiple vector execution pipelines (eg, 4, 8, 16, etc.).

[038]スカラー実行ユニット201は、データ及びコマンド入力をベクトル実行ユニット202に供給する。ある実施の形態では、スカラー実行ユニット201は、関数呼び出しをベクトル実行ユニット202に、メモリマップコマンドFIFO225を使用して送る。ベクトル実行ユニット202のコマンドは、このコマンドFIFO225のキューに入れられる。   [038] The scalar execution unit 201 provides data and command inputs to the vector execution unit 202. In one embodiment, scalar execution unit 201 sends a function call to vector execution unit 202 using memory map command FIFO 225. The command of the vector execution unit 202 is put in the queue of this command FIFO 225.

[039]コマンドFIFO225の使用は、スカラー実行ユニット201をベクトル実行ユニット202から効果的に分離する。スカラー実行ユニット201は、その独自の個別のクロックで機能し、ベクトル実行ユニット202のクロック周波数とは異なり、且つ、当該ベクトル実行ユニット202のクロック周波数とは独立に制御されるその独自の個別のクロック周波数で動作することができる。   The use of command FIFO 225 effectively separates scalar execution unit 201 from vector execution unit 202. The scalar execution unit 201 functions with its own individual clock, which is different from the clock frequency of the vector execution unit 202 and is controlled independently of the clock frequency of the vector execution unit 202. Can operate at frequency.

[040]コマンドFIFO225は、ベクトル実行ユニット202が要求駆動ユニットとして動作できるようにする。例えば、作業は、スカラー実行ユニット201からコマンドFIFO225に渡され、次いで、分離した非同期方式で処理するためにベクトル実行ユニット202によってアクセスされる。したがって、ベクトル実行ユニット202は、スカラー実行ユニット201による必要に応じて、あるいは要求に応じて、そのワークロードを処理することになる。このような機能によって、ベクトル実行ユニット202は、最大性能が要求されない場合に(例えば、一以上の内部クロックを軽減/又は停止することによって)パワーを節約することが可能となる。   [040] Command FIFO 225 enables vector execution unit 202 to operate as a request drive unit. For example, work is passed from the scalar execution unit 201 to the command FIFO 225 and then accessed by the vector execution unit 202 for processing in a separate asynchronous manner. Accordingly, the vector execution unit 202 will process the workload as needed by the scalar execution unit 201 or upon request. Such a function allows the vector execution unit 202 to save power when maximum performance is not required (eg, by mitigating / or stopping one or more internal clocks).

[041]スカラー部分(例えば、スカラー実行ユニット201による実行用)及びベクトル部分(例えば、ベクトル実行ユニット202による実行用)へのビデオ処理機能の分割によって、ビデオプロセッサ111用に構築されたビデオ処理プログラムを、別個のスカラーソフトウェアコード及びベクトルソフトウェアコードにコンパイルすることが可能となる。スカラーソフトウェアのコード及びベクトルソフトウェアのコードを、個別にコンパイルして、その後一貫性のあるアプリケーションを形成するようにリンクすることができる。   [041] A video processing program built for video processor 111 by dividing the video processing function into a scalar part (eg, for execution by scalar execution unit 201) and a vector part (eg, for execution by vector execution unit 202) Can be compiled into separate scalar software code and vector software code. Scalar software code and vector software code can be compiled separately and then linked to form a consistent application.

[042]この分割によって、ベクトルソフトウェアコード関数を個別に書いて、スカラーソフトウェアコード関数と区別することが可能となる。例えば、ベクトル関数を個別に書いて(例えば、異なる時間において、異なるエンジニアのチームによって等)、スカラー関数(例えば、スカラースレッド、プロセス等)によって/と共に使用する一以上のサブルーチン又はライブラリ関数として提供することが可能である。これによって、スカラーソフトウェアコード及び/又はベクトルソフトウェアコードの個別の独立した更新が可能になる。例えば、ベクトルサブルーチンを、スカラーサブルーチンから独立して更新することが可能であり(例えば、以前に配布されたプログラムの更新、配布プログラムの機能を増強するために追加された新しい特徴等の更新を通じて)、又、その逆も可能である。分割は、スカラープロセッサ210(例えばキャッシュ221〜212)及びベクトル制御ユニット220とベクトルデータパス221(例えばキャッシュ222〜223)のそれぞれ別個のキャッシュによって容易になる。上述したように、スカラー実行ユニット201及びベクトル実行ユニット202は、コマンドFIFO225を介して通信する。   [042] This partitioning allows vector software code functions to be written separately to distinguish them from scalar software code functions. For example, vector functions can be written individually (eg, at different times by different teams of engineers, etc.) and provided as one or more subroutines or library functions for use with / with scalar functions (eg, scalar threads, processes, etc.) It is possible. This allows for independent and independent updates of scalar software code and / or vector software code. For example, vector subroutines can be updated independently of scalar subroutines (eg, through updates to previously distributed programs, new features added to enhance the functionality of distributed programs, etc.). The reverse is also possible. Partitioning is facilitated by the scalar processor 210 (eg, caches 221-212) and separate caches of vector control unit 220 and vector data path 221 (eg, caches 222-223). As described above, the scalar execution unit 201 and the vector execution unit 202 communicate via the command FIFO 225.

[043]図3は、本発明のある実施の形態に係るビデオプロセッサ111の例示的なソフトウェアプログラム300を示している。図3に示すように、ソフトウェアプログラム300は、ビデオプロセッサ111のプログラミングモデルの特性を表しており、これにより、スカラー制御スレッド301は、ベクトルデータスレッド302と共にビデオプロセッサ111によって実行される。   [043] FIG. 3 illustrates an exemplary software program 300 of the video processor 111 according to an embodiment of the present invention. As shown in FIG. 3, the software program 300 represents the characteristics of the programming model of the video processor 111, whereby the scalar control thread 301 is executed by the video processor 111 along with the vector data thread 302.

[044]図3の実施の形態のソフトウェアプログラム300の例は、ビデオプロセッサ111のプログラミングモデルを表しており、これによって、スカラー実行ユニット201上のスカラー制御プログラム(例えば、スカラー制御スレッド301)は、ベクトル実行ユニット202におけるサブルーチン呼び出し(例えば、ベクトルデータスレッド302)を実行する。ソフトウェアプログラム300の例は、コンパイラ又はソフトウェアプログラマがビデオ処理アプリケーションをスカラー部分(例えば、第1のスレッド)とベクトル部分(例えば、第2のスレッド)に分解した場合を示している。   [044] The example software program 300 of the embodiment of FIG. 3 represents the programming model of the video processor 111 so that the scalar control program (eg, scalar control thread 301) on the scalar execution unit 201 is: A subroutine call (eg, vector data thread 302) in the vector execution unit 202 is executed. The example software program 300 illustrates the case where a compiler or software programmer breaks a video processing application into a scalar part (eg, a first thread) and a vector part (eg, a second thread).

[045]図3に示すように、スカラー実行ユニット201上で実行しているスカラー制御スレッド301は、事前に作業パラメータを計算して、これらパラメータを、処理作業の大部分を行うベクトル実行ユニット202に供給する。上述したように、二つのスレッド301及び302のソフトウェアコードは、個別に書いてコンパイルすることができる。   [045] As shown in FIG. 3, the scalar control thread 301 executing on the scalar execution unit 201 calculates work parameters in advance and uses these parameters for the vector execution unit 202 that performs most of the processing work. To supply. As described above, the software code for the two threads 301 and 302 can be written and compiled separately.

[046]スカラースレッドは、以下のことを担っている。
1.ホストユニット204とのインターフェイスを取り、クラスインターフェイスを実施する
2.ベクトル実行ユニット202の初期化、セットアップ、及び構成
3.以下のことを各反復が行なうよう、ループ内の作業単位、チャンク、又は作業セットにおけるアルゴリズムの実行
a.現在の作業セットのパラメータを計算する
b.ベクトル実行ユニットへの入力データの転送を開始する
c.ベクトル実行ユニットからの出力データの転送を開始する
[046] A scalar thread is responsible for:
1. 1. Interface with host unit 204 and implement class interface 2. Initialization, setup and configuration of vector execution unit 202 Run the algorithm in a unit of work, chunk, or working set in a loop so that each iteration does the following: a. Calculate the parameters of the current working set b. Initiate transfer of input data to the vector execution unit c. Start transfer of output data from the vector execution unit

[047]スカラースレッドの標準的な実行モデルは「応答不要送信(fire-and-forget)」である。応答不要送信との用語は、ビデオベースバンド処理の標準的なモデルの場合に、コマンド及びデータが(例えばコマンドFIFO225を介して)スカラー実行ユニット201からベクトル実行ユニット202に送信され、アルゴリズムが完了するまでベクトル実行ユニット202から戻りデータがない特性を指す。   [047] The standard execution model for scalar threads is "fire-and-forget". The term response-free transmission means that in the standard model of video baseband processing, commands and data are transmitted from the scalar execution unit 201 to the vector execution unit 202 (eg, via the command FIFO 225), completing the algorithm. Up to this point, there is no return data from the vector execution unit 202.

[048]図3のプログラム300の例では、スカラー実行ユニット201は、コマンドFIFO225にスペースがなくなるまで(例えば、!end_of_alg & !cmd_fifo_full)、ベクトル実行ユニット202に対して作業をスケジューリングし続ける。スカラー実行ユニット201によってスケジュールされた作業は、パラメータを計算して、それらパラメータをベクトルサブルーチンに送信し、続いて、作業を実行するためにベクトルサブルーチンを呼び出す。ベクトル実行ユニット202によるサブルーチンの実行(例えば、vector_funcB)は、主に待ち時間を主記憶装置(例えば、システムメモリ115)から隠蔽するように、適切な時間で遅延される。したがって、ビデオプロセッサ111のアーキテクチャは、命令及びデータトラフィックの両方に対してベクトル実行ユニット202側に待ち時間補償機構をもたらす。これらの待ち時間補償機構を、以下により詳細に説明する。   [048] In the example program 300 of FIG. 3, the scalar execution unit 201 continues to schedule work for the vector execution unit 202 until there is no more space in the command FIFO 225 (eg,! End_of_alg &! Cmd_fifo_full). The work scheduled by the scalar execution unit 201 calculates parameters, sends them to the vector subroutine, and then calls the vector subroutine to perform the work. Execution of a subroutine (eg, vector_funcB) by the vector execution unit 202 is delayed by an appropriate amount of time, mainly to hide latency from the main storage (eg, system memory 115). Thus, the architecture of the video processor 111 provides a latency compensation mechanism on the vector execution unit 202 side for both instruction and data traffic. These latency compensation mechanisms are described in more detail below.

[049]ソフトウェアプログラム300の例は、二つ以上のベクトル実行パイプラインが存在する(例えば、図2のベクトルデータパス221及び第2のベクトルデータパス231)場合には、より複雑になることに留意されたい。同様に、ソフトウェアプログラム300の例は、プログラム300が二つのベクトル実行パイプラインを有するコンピュータシステム用に作成されているが、尚も単一のベクトル実行パイプラインを有するシステム上で実行する能力を保持している場合には、より複雑になるであろう。   [049] The example software program 300 would be more complicated if there are two or more vector execution pipelines (eg, the vector data path 221 and the second vector data path 231 of FIG. 2). Please keep in mind. Similarly, the example software program 300 is written for a computer system that has two vector execution pipelines, but still retains the ability to execute on a system that has a single vector execution pipeline. If so, it will be more complicated.

[050]したがって、図2及び図3の説明において上述したように、スカラー実行ユニット201はベクトル実行ユニット202の計算を開始することを担っている。ある実施の形態では、スカラー実行ユニット201からベクトル実行ユニット202に渡されるコマンドには、以下の主たるタイプがある。
1.現在の作業セットデータをメモリからベクトル実行ユニット202のデータRAMに転送するためにスカラー実行ユニット201によって開始される読み取りコマンド(例えば、memRd)
2.スカラー実行ユニット201からベクトル実行ユニット202へのパラメータの受け渡し
3.実行すべきベクトルサブルーチンのPC(例えば、プログラムカウンタ)の形式の実行コマンド
4.ベクトル計算の結果をメモリにコピーするためにスカラー実行ユニット201によって開始される書き込みコマンド(例えば、memWr)
Accordingly, as described above in the description of FIGS. 2 and 3, the scalar execution unit 201 is responsible for initiating the calculation of the vector execution unit 202. In one embodiment, there are the following main types of commands passed from the scalar execution unit 201 to the vector execution unit 202:
1. A read command (eg, memRd) initiated by the scalar execution unit 201 to transfer the current working set data from memory to the data RAM of the vector execution unit 202
2. 2. Parameter passing from the scalar execution unit 201 to the vector execution unit 202 3. Execution command in the form of a PC (eg, program counter) of the vector subroutine to be executed A write command (eg, memWr) initiated by the scalar execution unit 201 to copy the result of the vector calculation to memory

[051]ある実施の形態では、これらのコマンドを受け取ると、ベクトル実行ユニット202は、メモリインターフェイス203へのmemRdコマンドを即座にスケジュールする(例えば、フレームバッファ205から要求されたデータを読み取るなど)。ベクトル実行ユニット202はまた、実行コマンドを検査して、実行すべきベクトルサブルーチンをプリフェッチする(キャッシュ222に存在しない場合)。   [051] In some embodiments, upon receiving these commands, the vector execution unit 202 immediately schedules a memRd command to the memory interface 203 (eg, reading requested data from the frame buffer 205, etc.). Vector execution unit 202 also examines the execute command and prefetches the vector subroutine to be executed (if not present in cache 222).

[052]この状況でのベクトル実行ユニット202の目的は、ベクトル実行ユニット202が現在の実行に従事している間に、次の幾つかの実行の命令及びデータストリームを前もってスケジュールすることである。この事前スケジュール機能は、命令/データをその記憶域から取り出す際に要する待ち時間を効果的に隠蔽する。これらの読み取り要求を前もって行うために、ベクトル実行ユニット202、データストア(例えば、データストア223)、及び命令キャッシュ(例えば、キャッシュ222)は、高速最適化ハードウェアを使用することによって実施される。   [052] The purpose of the vector execution unit 202 in this situation is to schedule the next several execution instructions and data streams in advance while the vector execution unit 202 is engaged in the current execution. This pre-scheduling function effectively hides the latency required to fetch instructions / data from its storage. To perform these read requests in advance, the vector execution unit 202, the data store (eg, data store 223), and the instruction cache (eg, cache 222) are implemented by using fast optimization hardware.

[053]上述したように、データストア(例えば、データストア223)は、ベクトル実行ユニット202の作業RAMとして機能する。スカラー実行ユニット201は、FIFOのコレクションであるかの如くデータストアを認識してデータストアと対話する。FIFOは、それによってビデオプロセッサ111が動作する「ストリーム」を含む。ある実施の形態では、ストリームは一般に、スカラー実行ユニット201が(例えば、ベクトル実行ユニット202に)転送を開始する入出力FIFOである。上述したように、スカラー実行ユニット201及びベクトル実行ユニット202のオペレーションは分離される。   [053] As described above, the data store (eg, data store 223) functions as a working RAM for the vector execution unit 202. The scalar execution unit 201 recognizes the data store and interacts with the data store as if it were a collection of FIFOs. The FIFO includes a “stream” through which the video processor 111 operates. In one embodiment, the stream is generally an input / output FIFO that the scalar execution unit 201 initiates transfer (eg, to the vector execution unit 202). As described above, the operations of scalar execution unit 201 and vector execution unit 202 are separated.

[054]入出力ストリームが満杯になると、ベクトル制御ユニット220内のDMAエンジンは、コマンドFIFO225の処理を停止する。そのため、まもなくコマンドFIFO225は満杯になる。スカラー実行ユニット201は、コマンドFIFO225が満杯になった場合、ベクトル実行ユニット202への更なる作業の発行を停止する。   [054] When the input / output stream is full, the DMA engine in the vector control unit 220 stops processing the command FIFO 225. As a result, the command FIFO 225 will soon be full. The scalar execution unit 201 stops issuing further work to the vector execution unit 202 when the command FIFO 225 becomes full.

[055]ある実施の形態では、ベクトル実行ユニット202は、入出力ストリームに加えて中間ストリームを必要とする。したがって、全データストア223は、スカラー実行ユニット201との対話に関してストリームのコレクションと見なすことができる。   [055] In one embodiment, vector execution unit 202 requires an intermediate stream in addition to the input and output streams. Thus, the entire data store 223 can be viewed as a collection of streams for interaction with the scalar execution unit 201.

[056]図4は、本発明のある実施の形態によるビデオプロセッサを使用したビデオとのサブピクチャの混合(ブレンディング)の例を示している。図4は、ビデオサーフェス(video surface)がサブピクチャと混合され、次いでARGサーフェスに変換される場合の例示的な事例を示している。サーフェスを含むデータは、輝度パラメータ412及び色度パラメータ413としてフレームバッファメモリ205内に存在する。サブピクチャのピクセル要素414もまた、図示したように、フレームバッファメモリ205内に存在する。ベクトルサブルーチン命令及びパラメータ411は、図示したように、メモリ205にインスタンス化される。   [056] FIG. 4 illustrates an example of blending (blending) sub-pictures with video using a video processor according to an embodiment of the present invention. FIG. 4 shows an exemplary case where a video surface is mixed with a sub-picture and then converted to an ARG surface. Data including the surface exists in the frame buffer memory 205 as a luminance parameter 412 and a chromaticity parameter 413. A sub-picture pixel element 414 is also present in the frame buffer memory 205 as shown. Vector subroutine instructions and parameters 411 are instantiated in memory 205 as shown.

[057]ある実施の形態では、各ストリームは、「タイル」と呼ばれるデータの作業2DチャンクのFIFOを備える。このような実施の形態では、ベクトル実行ユニット202は、各ストリームについて読み取りタイルポインタ及び書き込みタイルポインタを保持する。例えば、入力ストリームの場合、ベクトルサブルーチンが実行されると、ベクトルサブルーチンは、現在の(読み取り)タイルを消費するか、又は読み取ることができる。バックグラウンドでは、データはmemRdコマンドによって現在の(書き込み)タイルに転送される。ベクトル実行ユニットはまた、出力ストリーム用の出力タイルを生成することもできる。次いで、これらのタイルは、実行コマンドに続くmemWr()コマンドによってメモリに移動される。これによって、タイルを効果的にプリフェッチして、操作されるよう準備し、効果的に待ち時間を隠蔽する。   [057] In one embodiment, each stream comprises a working 2D chunk FIFO of data called "tiles". In such an embodiment, the vector execution unit 202 maintains a read tile pointer and a write tile pointer for each stream. For example, for an input stream, when the vector subroutine is executed, the vector subroutine can consume or read the current (read) tile. In the background, data is transferred to the current (write) tile by the memRd command. The vector execution unit can also generate output tiles for the output stream. These tiles are then moved to memory by the memWr () command following the execute command. This effectively prefetches tiles and prepares them to be manipulated, effectively hiding latency.

[058]図4のサブピクチャ混合の例では、ベクトルデータパス221は、ベクトルサブルーチン命令及びパラメータ411のインスタンス化されたインスタンスによって構成される(例えば、&v_subp_blend)。このことは、線421によって示されている。スカラー実行ユニット201は、サーフェスのチャンク(例えば、タイル)を読み取り、それらを(例えば、メモリインターフェイス203内の)DMAエンジン401を使用してデータストア223にロードする。ロードオペレーションは、線422、線423、及び線424によって示されている。   [058] In the example of sub-picture mixing of FIG. 4, the vector data path 221 is composed of instantiated instances of vector subroutine instructions and parameters 411 (eg, & v_subp_blend). This is indicated by line 421. Scalar execution unit 201 reads chunks (eg, tiles) of the surface and loads them into data store 223 using DMA engine 401 (eg, in memory interface 203). The load operation is indicated by line 422, line 423, and line 424.

[059]引き続き図4を参照する。複数の入力サーフェスが存在するので、複数の入力ストリームが保持される必要がある。各ストリームは、対応するFIFOを有する。各ストリームは、異なる数のタイルを有することができる。図4の例は、サブピクチャサーフェスがシステムメモリ115内(例えば、サブピクチャのピクセルエレメント414)にあり、したがって追加のバッファリング(例えば、n、n+1、n+2、n+3など)を有するが、ビデオストリーム(例えば、輝度412、色度413など)はより少ない数のタイルを有することができる場合を示している。使用されるバッファ/FIFOの数は、ストリームが受けた待ち時間の程度に従って調整することができる。   [059] Still referring to FIG. Since there are multiple input surfaces, multiple input streams need to be maintained. Each stream has a corresponding FIFO. Each stream can have a different number of tiles. In the example of FIG. 4, the sub-picture surface is in system memory 115 (eg, sub-picture pixel element 414) and thus has additional buffering (eg, n, n + 1, n + 2, n + 3, etc.), but the video stream (E.g., luminance 412, chromaticity 413, etc.) indicates a case where a smaller number of tiles can be provided. The number of buffers / FIFOs used can be adjusted according to the degree of latency experienced by the stream.

[060]上述したように、データストア223は、先読みプリフェッチ方法を使用して、待ち時間を隠蔽する。これによって、ストリームは、データが適切なベクトルデータパス実行ハードウェアにプリフェッチされる際に、二つ以上のタイルで当該データをもつことができる(例えば、FIFO n、n+1、n+2等として示されている)。   [060] As described above, the data store 223 uses a look-ahead prefetch method to conceal latency. This allows the stream to have the data in more than one tile when the data is prefetched to the appropriate vector data path execution hardware (eg, shown as FIFO n, n + 1, n + 2, etc.) )

[061]データストアがロードされると、FIFOは、ベクトルデータパスハードウェア221によってアクセスされ、ベクトルサブルーチン(例えば、サブルーチン430)によって操作される。ベクトルデータパスオペレーションの結果は、出力ストリーム403を構成する。この出力ストリームは、DMAエンジン401を介してスカラー実行ユニット201によってコピーされ、フレームバッファメモリ205(例えば、ARGB_OUT415)に戻される。このことは、線425によって示されている。   [061] When the data store is loaded, the FIFO is accessed by the vector data path hardware 221 and manipulated by a vector subroutine (eg, subroutine 430). The result of the vector data path operation constitutes the output stream 403. This output stream is copied by the scalar execution unit 201 via the DMA engine 401 and returned to the frame buffer memory 205 (for example, ARGB_OUT 415). This is indicated by line 425.

[062]したがって、本発明の実施の形態は、ストリーム処理の重要な特徴を使用するが、それはデータスストレージ及びメモリが複数のメモリタイトルとして抽象化されるということである。したがって、ストリームは、順次アクセスされるタイルのコレクションと見なすことができる。ストリームは、データをプリフェッチするために使用される。このデータは、タイルの形式をとる。タイルは、データの元となる特定のメモリソースから(例えば、システムメモリ、フレームバッファメモリ等)、待ち時間を隠蔽するためにプリフェッチされる。同様に、ストリームは、異なる場所に向けることができる(例えば、ベクトル実行ユニットのキャッシュ、スカラー実行ユニットのキャッシュ、フレームバッファメモリ、システムメモリ等)。ストリームの別の特徴は、一般に先読みプリフェッチモードでタイルにアクセスすることである。上述したように、待ち時間が大きくなれば、それに応じてプリフェッチはより深くなり、ストリームあたりで使用されるバッファリングはより多くなる(例えば、図4に示すように)。   [062] Thus, embodiments of the present invention use an important feature of stream processing, which is that data storage and memory are abstracted as multiple memory titles. Thus, a stream can be viewed as a collection of tiles that are accessed sequentially. The stream is used to prefetch data. This data takes the form of tiles. Tiles are prefetched to conceal latency from specific memory sources from which data originates (eg, system memory, frame buffer memory, etc.). Similarly, streams can be directed to different locations (eg, vector execution unit cache, scalar execution unit cache, frame buffer memory, system memory, etc.). Another feature of the stream is to access the tiles generally in a look-ahead prefetch mode. As described above, the higher the latency, the deeper the prefetch and the more buffering used per stream (eg, as shown in FIG. 4).

[063]図5は、本発明のある実施の形態に係るベクトル実行ユニットの内部コンポーネントを示す図である。図5は、ベクトル実行ユニット202の種々の機能ユニット及びレジスタ/SRAMリソースの構成を、プログラミングの観点から示している。   [063] FIG. 5 is a diagram illustrating the internal components of a vector execution unit according to an embodiment of the invention. FIG. 5 illustrates the configuration of the various functional units and register / SRAM resources of the vector execution unit 202 from a programming perspective.

[064]図5の実施の形態では、ベクトル実行ユニット202は、ビデオベースバンド処理の性能及び種々のコーデック(圧縮−復元アルゴリズム)の実行用に最適化されたVLIWデジタル信号プロセッサを備えている。したがって、ベクトル実行ユニット202は、ビデオ処理/コーデック実行の効率を高めることに向けられた多数の特性を有する。   [064] In the embodiment of FIG. 5, vector execution unit 202 comprises a VLIW digital signal processor optimized for video baseband processing performance and various codec (compression-decompression algorithm) execution. Thus, the vector execution unit 202 has a number of characteristics that are aimed at increasing the efficiency of video processing / codec execution.

[065]図5の実施の形態では、上記特性は以下のものを含む。
1.複数のベクトル実行パイプラインの組み込み用のオプションを提供することによる拡張性能
2.パイプ毎の二つのデータアドレス発生器(DAG)の割り当て
3.メモリ/レジスタのオペランド
4.2D(x、y)ポインタ/反復子(iterator)
5.深いパイプライン(例えば、11〜12)ステージ
6.スカラー(整数)/分岐ユニット
7.可変命令幅(Long/Short命令)
8.オペランド抽出のためのデータアライナ
9.標準的なオペランド及び結果の2Dデータパス(4×4)形状
10.リモートプロシージャ呼び出しを実行する、スカラー実行ユニットに対するスレーブのベクトル実行ユニット
[065] In the embodiment of FIG. 5, the characteristics include the following.
1. 1. Extended performance by providing options for incorporating multiple vector execution pipelines 2. Assignment of two data address generators (DAG) per pipe Memory / Register Operand 4.2D (x, y) Pointer / Iterator
5. 5. Deep pipeline (eg, 11-12) stage 6. Scalar (integer) / branching unit Variable instruction width (Long / Short instruction)
8). 8. Data aligner for operand extraction Standard operand and resulting 2D data path (4x4) shape 10. Slave vector execution unit to scalar execution unit to execute remote procedure calls

[066]一般に、プログラマの観点からは、ベクトル実行ユニット202は、二つのDAG503を備えるSIMDデータパスとして見られる。命令は、VLIWの方式で発行され(例えば、命令はベクトルデータパス504及びアドレス発生器503に対して同時に発行され)、命令デコーダ501によってデコードされ適切な実行ユニットにディスパッチされる。命令は、可変長であり、最も一般に使用される命令が短形式でエンコードされている。完全な命令セットは、VLIWタイプの命令として、長形式で使用可能である。   [066] In general, from the programmer's perspective, the vector execution unit 202 is viewed as a SIMD data path comprising two DAGs 503. Instructions are issued in a VLIW manner (eg, instructions are issued simultaneously to the vector data path 504 and the address generator 503), decoded by the instruction decoder 501, and dispatched to the appropriate execution unit. The instructions are variable length, and the most commonly used instructions are encoded in short form. The complete instruction set is available in long form as a VLIW type instruction.

[067]凡例(legend)502は、三つのこのようなVLIW命令を有する三つのクロックサイクルを示している。凡例510によれば、VLIW命令502の最上部は、二つのアドレス命令(例えば、二つのDSG503用)及びベクトルデータパス504用の一つの命令を備える。中間部のVLIW命令は、一つの整数命令(例えば、整数ユニット505用)、一つのアドレス命令、及び一つのベクトル命令を備える。最下部のVLIW命令は、一つの分岐命令(例えば、分岐ユニット506用)、一つのアドレス命令、及び一つのベクトル命令を備える。   [067] Legend 502 shows three clock cycles with three such VLIW instructions. According to legend 510, the top of VLIW instruction 502 comprises two address instructions (eg, for two DSGs 503) and one instruction for vector data path 504. The intermediate VLIW instruction includes one integer instruction (for example, for the integer unit 505), one address instruction, and one vector instruction. The lowest VLIW instruction comprises one branch instruction (eg, for branch unit 506), one address instruction, and one vector instruction.

[068]ベクトル実行ユニットは、単一のデータパイプ又は複数のデータパイプを有するように構成することができる。各データパイプは、ローカルRAM(例えば、データストア511)、クロスバー516、二つのDAG503、及びSIMD実行ユニット(例えば、ベクトルデータパス504)から成る。図5は、説明の目的で基本構成を示しており、ここでは、一つのデータパイプのみがインスタンス化される。二つのデータパイプがインスタンス化される場合、それらは独立したスレッドとして、又は共同のスレッドとして実行することができる。   [068] The vector execution unit may be configured to have a single data pipe or multiple data pipes. Each data pipe consists of local RAM (eg, data store 511), crossbar 516, two DAGs 503, and SIMD execution units (eg, vector data path 504). FIG. 5 shows a basic configuration for purposes of illustration, where only one data pipe is instantiated. When two data pipes are instantiated, they can run as independent threads or as joint threads.

[069]六つの異なるポート(例えば、四つの読み取り及び二つの書き込み)を、アドレスレジスタファイルユニット515を介してアクセスすることができる。これらのレジスタは、スカラー実行ユニットから、若しくは、整数ユニット505又はアドレスユニット503の結果からパラメータを受け取る。DAG503はまた、コレクションコントローラとして機能し、レジスタの配置を管理してデータストア511の内容をアドレス指定する(例えば、RA0、RA1、RA2、RA3、WA0、及びWA1)。クロスバー516は、ベクトルデータパス504に任意の順序/組み合わせで出力データポートR0、R1、R2、R3を割り当てて所定の命令を実施するように結合されている。ベクトルデータパス504の出力は、図示したように、データストア511にフィードバックすることができる(例えば、W0)。定数RAM517は、頻繁に使用されるオペランドを整数ユニット505からベクトルデータパス504、及びデータストア511に供給するために使用される。   [069] Six different ports (eg, four reads and two writes) can be accessed via the address register file unit 515. These registers receive parameters from a scalar execution unit or from the result of integer unit 505 or address unit 503. The DAG 503 also functions as a collection controller, managing register placement and addressing the contents of the data store 511 (eg, RA0, RA1, RA2, RA3, WA0, and WA1). Crossbar 516 is coupled to execute predetermined instructions by assigning output data ports R0, R1, R2, R3 to vector data path 504 in any order / combination. The output of the vector data path 504 can be fed back to the data store 511 as shown (eg, W0). The constant RAM 517 is used to supply frequently used operands from the integer unit 505 to the vector data path 504 and the data store 511.

[070]図6は、本発明のある実施の形態に係り、メモリ600の複数のバンク601〜604、及び対称配列のタイル610を有するデータストアのレイアウトを示す図である。図6に示すように、説明の目的で、データストア610の一部だけが示されている。データストア610は論理的に、タイルの配列(又は複数の配列)を備えている。各タイルは、4×4形状のサブタイルの配列である。物理的には、メモリ600によって示されるように、データストア610は、メモリの「N」個の物理バンク(例えば、バンク601〜604)の配列に格納される。   [070] FIG. 6 is a diagram illustrating a layout of a data store having multiple banks 601-604 of memory 600 and symmetrically arranged tiles 610, according to an embodiment of the present invention. As shown in FIG. 6, only a portion of the data store 610 is shown for illustrative purposes. The data store 610 logically comprises an array (or multiple arrays) of tiles. Each tile is an array of 4 × 4 sub-tiles. Physically, as indicated by memory 600, data store 610 is stored in an array of “N” physical banks (eg, banks 601-604) of memory.

[071]さらに、データストア610は、ストリーム内の論理タイルを視覚的に示している。図6の実施の形態において、このタイルは、高さ16バイト、幅16バイトである。このタイルは、サブタイルの配列である(この例では4×4)。各サブタイルは、物理バンクに格納される。これは図6において、8バンクの物理メモリがある場合(例えば、バンク0〜7)、各4×4サブタイル内の番号によって示される。バンク内のサブタイルの編成は、2×2構成のサブタイトル内に共通のバンクが存在しないようになっている。これによって、バンクの衝突が発生することなく、不整列アクセス(例えば、x及びy方向に)が可能になる。   [071] In addition, the data store 610 visually shows the logical tiles in the stream. In the embodiment of FIG. 6, this tile is 16 bytes high and 16 bytes wide. This tile is an array of subtiles (4 × 4 in this example). Each subtile is stored in a physical bank. This is indicated in FIG. 6 by the number in each 4 × 4 subtile when there are 8 banks of physical memory (eg, banks 0-7). The organization of the subtiles in the bank is such that there is no common bank in the 2 × 2 subtitles. This allows misaligned accesses (eg, in the x and y directions) without causing bank collisions.

[072]バンク601〜604は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。例えば、ある事例では、クロスバー516は、バンク601から2×4のタイルのセットにアクセスすることができる(例えば、バンク601の最初の2行)。別の事例では、クロスバー516は、二つの隣接するバンクから1×8のタイルのセットにアクセスすることができる。同様に、別の事例では、クロスバー516は、二つの隣接するバンクから8×1のタイルのセットにアクセスすることができる。何れの場合にも、DAG/コレクタ503は、バンクがクロスバー516によってアクセスされるとタイルを受け取り、それらタイルを1クロック毎にベクトルデータパス504の前端部に供給することができる。   [072] Banks 601-604 are configured to support access to different tiles in each bank. For example, in one instance, the crossbar 516 can access a set of 2 × 4 tiles from the bank 601 (eg, the first two rows of the bank 601). In another case, the crossbar 516 can access a set of 1 × 8 tiles from two adjacent banks. Similarly, in another case, the crossbar 516 can access an 8 × 1 set of tiles from two adjacent banks. In either case, the DAG / collector 503 can receive tiles as the bank is accessed by the crossbar 516 and supply the tiles to the front end of the vector data path 504 every clock.

[073]このように、本発明の実施の形態は、高性能なビデオ処理機能をサポートし、しかも集積回路シリコンダイ領域、トランジスタ数、メモリ速度要件などを効率的に利用する新しいビデオプロセッサアーキテクチャを提供する。本発明の実施の形態は、高い計算密度を保持し、複数のビデオストリームを処理するために容易に拡張することができる。本発明の実施の形態は、例えば、MPEG-2/WMV9/H.264エンコードアシスト(例えば、インループデコーダ)、MPEG-2/WMV9/H.264デコード(例えば、ポストエントロピーデコーディング)、及びインループ/アウトオブループデブロッキングフィルタなど、多数の高性能なビデオ処理オペレーションを提供することができる。   [073] Thus, embodiments of the present invention utilize a new video processor architecture that supports high performance video processing functions and that efficiently utilizes integrated circuit silicon die area, transistor count, memory speed requirements, and the like. provide. Embodiments of the present invention retain high computational density and can be easily extended to handle multiple video streams. The embodiment of the present invention is, for example, MPEG-2 / WMV9 / H. H.264 encoding assist (for example, in-loop decoder), MPEG-2 / WMV9 / H.264. A number of high performance video processing operations can be provided, such as H.264 decoding (eg, post-entropy decoding) and in-loop / out-of-loop deblocking filters.

[074]本発明の実施の形態によって提供される更なるビデオ処理オペレーションには、例えば、高性能動き適応型順次走査変換、エンコード用入力ノイズフィルタリング、多相スケーリング/リサンプリング、及びサブピクチャ合成等がある。本発明のビデオプロセッサアーキテクチャはまた、例えば、色空間補正、色空間調整、鮮明化やヒストグラム調整のようなピクセルポイントオペレーション、及び種々のビデオサーフェスフォーマット変換といった、特定のビデオプロセッサ増幅器(procamp)アプリケーションにも使用することができる。   [074] Further video processing operations provided by embodiments of the present invention include, for example, high performance motion adaptive progressive scan conversion, input noise filtering for encoding, polyphase scaling / resampling, and sub-picture synthesis. There is. The video processor architecture of the present invention is also suitable for specific video processor amplifier applications such as color space correction, color space adjustment, pixel point operations such as sharpening and histogram adjustment, and various video surface format conversions. Can also be used.

[075]広く、且つ、非限定的に、本書面は、以下の事項を開示している。即ち、ビデオ処理オペレーションを実行する耐待ち時間システムを説明している。システムは、ビデオプロセッサとホストCPU間の通信を実施するホストインターフェイスと、ホストインターフェイスに結合され、且つ、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ホストインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。コマンドFIFOが、ベクトル実行ユニットがメモリコマンドFIFOにアクセスすることによって要求駆動ベースで動作できるようにするために備えられている。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられている。DMAエンジンが、複数の異なる記憶域の間のDMA転送を実施し、コマンドFIFOにベクトル実行ユニットのデータと命令をロードするために、メモリインターフェイスに組み込まれる。また、ビデオ処理オペレーションを実行するビデオプロセッサを説明している。ビデオプロセッサは、ビデオプロセッサとホストCPUとの間の通信を実施するホストインターフェイスを備える。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられている。スカラー実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、ベクトルビデオ処理オペレーションを実行するように構成されている。また、ビデオ処理オペレーションを実行するビデオプロセッサ用の多次元データパス処理システムを説明している。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。データストアメモリが、ベクトル実行ユニットのデータを格納するために備えられている。データストアメモリは、配列状に構成された対称バンクデータ構造を有する複数のタイルを備える。バンクデータ構造は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。また、ビデオオペレーションを実行するビデオプロセッサ用のストリームベースのメモリアクセスシステムを説明している。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。フレームバッファメモリが、スカラー実行ユニット及びベクトル実行ユニットのデータを格納するために備えられている。メモリインターフェイスが、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を確立するために備えられている。フレームバッファメモリは、複数のタイルを備える。メモリインターフェイスは、タイルの第1の順次アクセスを実施し、ベクトル実行ユニット又はスカラー実行ユニットのタイルの第2の順次アクセスを含む第2のストリームを実施する。   [075] Broadly and without limitation, this document discloses the following: That is, a latency-tolerant system that performs video processing operations is described. The system is coupled to a host interface that implements communication between the video processor and the host CPU, a scalar execution unit coupled to the host interface and configured to perform scalar video processing operations, the host interface, and A vector execution unit configured to perform vector video processing operations. A command FIFO is provided to allow the vector execution unit to operate on a request driven basis by accessing the memory command FIFO. A memory interface is provided for performing communication between the video processor and the frame buffer memory. A DMA engine is incorporated into the memory interface to perform DMA transfers between different storage locations and load vector execution unit data and instructions into the command FIFO. A video processor that performs video processing operations is also described. The video processor includes a host interface that implements communication between the video processor and the host CPU. A memory interface is provided for performing communication between the video processor and the frame buffer memory. A scalar execution unit is coupled to the host interface and the memory interface and is configured to perform scalar video processing operations. A vector execution unit is coupled to the host interface and the memory interface and is configured to perform vector video processing operations. A multi-dimensional data path processing system for a video processor that performs video processing operations is also described. The video processor comprises a scalar execution unit configured to perform scalar video processing operations and a vector execution unit configured to perform vector video processing operations. A data store memory is provided for storing vector execution unit data. The data store memory comprises a plurality of tiles having a symmetric bank data structure arranged in an array. The bank data structure is configured to support access to different tiles in each bank. A stream-based memory access system for a video processor that performs video operations is also described. The video processor comprises a scalar execution unit configured to perform scalar video processing operations and a vector execution unit configured to perform vector video processing operations. A frame buffer memory is provided for storing scalar execution unit and vector execution unit data. A memory interface is provided for establishing communication between the scalar execution unit, the vector execution unit, and the frame buffer memory. The frame buffer memory includes a plurality of tiles. The memory interface implements a first sequential access of tiles and a second stream including a second sequential access of tiles of vector execution units or scalar execution units.

[076]本発明の具体的な実施の形態についての上述の説明は、例示と説明の目的で提示したものである。これらは、包括的であること、又は本発明を開示した厳密な形態に限定することを意図しておらず、上記の教示の下に多くの変更及び変形が可能である。本実施の形態は、本発明の原理及びその実践的な用途を最良に説明し、それによって当業者が本発明及び種々の実施の形態を、考えられる特定の使用に適するように様々変更を加えて最良に使用できるようにするために、選択して、説明したものである。本発明の範囲は本明細書に添付の特許請求の範囲及びそれらの均等物によって定義されることが意図される。   [076] The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and many modifications and variations are possible under the above teachings. This embodiment best describes the principles of the invention and its practical application, so that those skilled in the art can make various modifications to the invention and various embodiments to suit the particular use contemplated. It has been chosen and described in order to be best used. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

1 概要
VP2は、スカラー制御プロセッサに結合されたVLIW SIMDビデオDSPである。その主な焦点は、ビデオコーデック及びビデオベースバンド処理である。

1.1 VP2.0の核心
・効率:VP2.0は、perf/mm2及びperf/mWに関して、ビデオアプリケーション用途向けの計算効率の高いマシンとなる
・プログラム能力:VP2.0は、プログラミング能力が高く、容易にコンパイル可能であり、プログラムマシンに更に安全なものとなる
・拡張性:VP2.0の設計/アーキテクチャは、複数のアプリケーション分野の性能要件に適合するように拡張可能であるべきである

1.2 設計目標
・計算密度
VP1.0に大きく優るperf/mm2の利点を提供
H.264のような新たなアプリケーション分野の効率的な実現
・SW開発者の負担を軽減するHWの耐待ち時間性
メモリアクセス及び計算を再順序付けすることによりデータフェッチ待ち時間を隠蔽
命令ストリームの自動プリフェッチ
・データパス待ち時間を隠蔽
中間結果の選択的転送
ストリーミング計算モデル
・拡張性:
アーキテクチャ的にVP2ベクトルユニットはそのデータパスを2倍に拡張及び1/2倍に縮小可能
周波数の改善は選択的再パイプライン処理によって達成可能

1.3 アプリケーションターゲット
VP2.0の設計及び命令セットは、以下のアプリケーションを極めて効率的に行うように最適化される。
・mpeg2/wmv9/H.264エンコードアシスト(インループデコーダ)
・mpeg2/wmv9/H.264デコード(ポストエントロピーデコーディング)
・インループ/アウトオブループのデブロッキングフィルタ
・高性能動き適応順次走査変換
・エンコード用入力ノイズフィルタリング
・多相スケーリング/リサンプリング
・サブピクチャ合成
・procamp、色空間変換、色空間調整、鮮明化やヒストグラム調整等といったクセルポイントオペレーション
・様々なビデオサーフェスフォーマット変換サポート

アーキテクチャ的にVP2.0は以下の領域において効率的となり得る。
・2Dのプリミティブ、ブリッツ、回転など
・微調整ベースのソフトウェア動き推定アルゴリズム
・16/32ビットのMACアプリケーション
1 Overview VP2 is a VLIW SIMD video DSP coupled to a scalar control processor. Its main focus is video codec and video baseband processing.

1.1 VP2.0 Core / Efficiency: VP2.0 is a computationally efficient machine for video applications with respect to perf / mm2 and perf / mW. Program Capability: VP2.0 has high programming capabilities Can be easily compiled and made more secure to the program machine. Extensibility: VP2.0 design / architecture should be extensible to meet the performance requirements of multiple application areas.

1.2 Design Goals / Calculation Density Provides perf / mm2 advantage over VP1.0. Efficient implementation of new application fields such as H.264 HW latency tolerance to reduce the burden on SW developers Hiding data fetch latency by reordering memory access and computation Automatic prefetching of instruction streams Hide data path latency Selective transfer of intermediate results Streaming computation model / extensibility:
Architecturally, the VP2 vector unit can expand its data path by a factor of 2 and reduce it by a factor of 2. Frequency improvement can be achieved by selective re-pipelining

1.3 Application Target The design and instruction set of VP2.0 is optimized to perform the following applications very efficiently.
Mpeg2 / wmv9 / H. H.264 encoding assist (in-loop decoder)
Mpeg2 / wmv9 / H. H.264 decoding (post-entropy decoding)
・ In-loop / out-of-loop deblocking filter ・ High-performance motion adaptive progressive scan conversion ・ Encoding input noise filtering ・ Polyphase scaling / resampling ・ Sub-picture synthesis ・ procamp, color space conversion, color space adjustment, sharpening Hexe point operation such as histogram adjustment, various video surface format conversion support

Architecturally, VP2.0 can be efficient in the following areas:
-2D primitive, blitz, rotation, etc.-Fine-tuned software motion estimation algorithm-16 / 32-bit MAC application

2 トップレベルのアーキテクチャ
VP2.0マシンはスカラープロセッサ及びベクトルプロセッサに分割されている。ベクトルプロセッサは、スカラープロセッサに対するスレーブコプロセッサとして動作する。スカラープロセッサは、制御ストリーム(パラメータ、サブルーチン引数)をベクトルプロセッサに供給し、またベクトルプロセッサへのデータ入出力を管理することを担う。アルゴリズムの全ての制御フローはスカラーマシンで実行されるが、実際のピクセル/データ処理オペレーションはベクトルプロセッサで行われる。
スカラープロセッサは標準的なRISCスタイルのスカラーであり、ベクトルコプロセッサは一つ又は二つのSIMDパイプ(各SIMDパイプは16ピクセルデータパスを有する)を備えるSIMDマシンである。したがって、ベクトルコプロセッサは、生の計算能力として最大32ピクセルの処理結果を作成することができる。
スカラープロセッサは、メモリマップドコマンドFIFOを使用して、ベクトルコプロセッサに関数呼び出しを送る。コプロセッサコマンドは、このFIFOのキューに入れられる。スカラープロセッサは、このFIFOを使用してベクトルプロセッサから完全に分離される。スカラープロセッサは、独自のクロックで動作することができる。ベクトルプロセッサは、要求駆動ユニットとして動作する。
VP2.0のトップレベルの図を以下に示す。

Figure 0004906734



VP2.0プログラムは、別個のスカラーコード及びベクトルコードにコンパイルされ、後に結合することができる。別々に、ベクトル関数は、個々に書き込まれ、サブルーチン又はライブラリ関数としてスカラースレッドに供給することができる。スカラープロセッサは、独自の命令及びデータキャッシュを有する。ベクトルユニットもまた、命令キャッシュ及びデータRAM(データストアと呼ばれる)を有する。これらの二つのエンジンは分離され、FIFOを通じて通信する。 2 Top Level Architecture The VP2.0 machine is divided into a scalar processor and a vector processor. The vector processor operates as a slave coprocessor for the scalar processor. The scalar processor is responsible for supplying control streams (parameters, subroutine arguments) to the vector processor and managing data input and output to the vector processor. All control flow of the algorithm is performed on a scalar machine, but the actual pixel / data processing operations are performed on a vector processor.
The scalar processor is a standard RISC style scalar and the vector coprocessor is a SIMD machine with one or two SIMD pipes (each SIMD pipe has a 16 pixel data path). Thus, the vector coprocessor can create a processing result of up to 32 pixels as raw computing power.
The scalar processor uses the memory mapped command FIFO to send function calls to the vector coprocessor. Coprocessor commands are queued in this FIFO. The scalar processor is completely separated from the vector processor using this FIFO. A scalar processor can operate with its own clock. The vector processor operates as a request drive unit.
A top level view of VP2.0 is shown below.
Figure 0004906734



The VP2.0 program can be compiled into separate scalar and vector code and later combined. Separately, vector functions can be written individually and supplied to scalar threads as subroutines or library functions. A scalar processor has its own instruction and data cache. The vector unit also has an instruction cache and a data RAM (called a data store). These two engines are separated and communicate through a FIFO.

3 単純プログラミングモデル
VP2.0の最も単純なプログラミングモデルは、ベクトルスレーブコプロセッサでサブルーチン呼び出しを実行するスカラー制御プログラムである。ここにはプログラマが問題をこれらの二つのスレッドに分解している本質的な仮定がある。スカラープロセッサで実行しているスレッドは、事前に作業パラメータを計算して、それらを主力となるベクトルプロセッサに供給している。これらの二つのスレッドのプログラムは、個別に書き込まれてコンパイルされることが期待される。
スカラースレッドは、以下の事項を担う。
1.ホストユニットとインターフェイスを取り、クラスインターフェイスを実装する
2.ベクトルユニットの初期化、セットアップ、及び設定
3.以下のことを各反復が行なうよう、ループ内の作業単位、チャンク、又は作業セットにおけるアルゴリズムの実行
a.現在の作業セットのパラメータを計算
b.ベクトルプロセッサへの入力データの転送を開始
c.ベクトルプロセッサからの出力データの転送を開始
スカラースレッドの標準的な実行モデルは応答不要送信である。これは、ベクトルコプロセッサからの戻りデータがない場合のビデオベースバンド処理用の標準的なモデルであると期待される。スカラープロセッサは、コマンドFIFOにスペースがある限り、ベクトルプロセッサ用の作業をスケジュールし続ける。ベクトルプロセッサによるサブルーチンの実行は、主に主記憶装置からの待ち時間による時間で遅延される。したがって、ベクトル側に待ち時間補償機構を提供することが重要である。VP2.0では、ベクトルプロセッサは、命令及びデータトラフィックの両方に待ち時間補償を提供する。その機構について、セクションにおいて概略を示す。
標準的なVPプログラムは、以下のようなものである。

Figure 0004906734



より複雑なプログラミングモデルは、二つのデータパイプを有する場合である。或いは、二つのデータパイプのコードを書いて、そのコードを一つのデータパイプマシン上で実行する場合である。そのプログラミングモデルを、第6節において考察する。 3 Simple Programming Model The simplest programming model of VP2.0 is a scalar control program that executes subroutine calls on a vector slave coprocessor. Here is an essential assumption that the programmer breaks down the problem into these two threads. A thread executing on a scalar processor calculates work parameters in advance and supplies them to a main vector processor. These two threaded programs are expected to be written and compiled separately.
The scalar thread is responsible for:
1. Take the interface with the host unit and implement the class interface. 2. Vector unit initialization, setup and configuration. Run the algorithm in a unit of work, chunk, or working set in a loop so that each iteration does the following: a. Calculate current working set parameters b. Start transfer of input data to vector processor c. Start transfer of output data from vector processor The standard execution model of scalar threads is response-free transmission. This is expected to be a standard model for video baseband processing in the absence of return data from the vector coprocessor. The scalar processor continues to schedule work for the vector processor as long as there is space in the command FIFO. The execution of the subroutine by the vector processor is delayed mainly by the time due to the waiting time from the main memory. Therefore, it is important to provide a latency compensation mechanism on the vector side. In VP2.0, the vector processor provides latency compensation for both instruction and data traffic. The mechanism is outlined in the section.
A standard VP program is as follows.
Figure 0004906734



A more complex programming model is the case with two data pipes. Alternatively, code for two data pipes is written and the code is executed on one data pipe machine. The programming model is discussed in Section 6.

4 ストリーミングモデル
上に概説したように、スカラーエンジンは、ベクトルプロセッサでの計算の開始を担っている。スカラーエンジンからベクトルエンジンに渡されるコマンドには、以下の主なタイプがある。
1.現在の作業セットデータをメモリからベクトルエンジンのデータRAMに転送するためにスカラーによって開始される読み取りコマンド(memRd)
2.スカラーからベクトルに渡すパラメータ
3.実行すべきベクトルサブルーチンのPCの形式での実行コマンド
4.ベクトル計算の結果をメモリにコピーするためにスカラーによって開始される書き込みコマンド(たとえば、memWr)
これらのコマンドを受け取ると、ベクトルプロセッサは即座に、フレームバッファ(FB)インターフェイスへのmemRdコマンドをスケジュールする。ベクトルプロセッサはまた、実行コマンドを検査して、実行すべきベクトルサブルーチンをプリフェッチする(キャッシュに存在しない場合)。一つの目的は、ベクトルエンジンが現在の実行に従事している間に、次の幾つかの実行の命令とデータスチームを前もってスケジュールすることである。これらの読み取り要求を事前に行うために、ベクトルエンジンは、ハードウェア内のデータストア及び命令キャッシュを管理する。
データストアは、ベクトルプロセッサの作業RAMである。スカラープロセッサは、このデータストアを、FIFO又はストリームのコレクションと見なす。ストリームは本質的には、スカラーが転送を開始する入出力FIFOである。入出力ストリームが満杯になると、ベクトルのDMAエンジンは、スカラーからのコマンドFIFOの処理を停止して、まもなくそれが満杯になる。したがって、スカラーは、ベクトルエンジンにそれ以上作業を発行することを停止する。入出力ストリームに加えて、ベクトルは中間ストリームを必要としてもよい。したがって、データストア全体は、スカラー側からはストリームのコレクションと見なすことができる。各ストリームは、タイルと呼ばれる作業2DチャンクのFIFOである。ベクトルプロセッサは、各ストリーム用の読み取りタイルポインタ及び書き込みタイルポインタを保持する。入力ストリームの場合、ベクトルサブルーチンが実行されると、ベクトルサブルーチンは現在の(読み取り)タイルを消費するか、又は読み取ることができる。バックグラウンドでは、データはmemRdコマンドによって現在の(書き込み)タイルに転送される。ベクトルプロセッサはまた、出力ストリーム用の出力タイルを生成することもできる。次いで、これらのタイルは、実行コマンドに続くmemWr()コマンドによってメモリに移動される。
このモデルを、ビデオとのサブピクチャの混合の例によって説明する。例えば、ビデオサーフェス(例えば、NV12形式)がサブピクチャと混合され、次いで、ARGBサーフェスに変換される場合の単純化した例を考察する。これらのサーフェスは、メモリに存在する。スカラープロセッサは、これらサーフェスのチャンク(タイル)を読み取り、それらをデータストアにロードする。複数の入力サーフェスが存在するので、複数の入力ストリームを保持する必要がある。各ストリームは様々な数のタイルを有することができるが(例えば、この例では、サブピクチャサーフェスがシステムメモリ内にあり、したがって、それを更にバッファすべきであると仮定する)、ビデオストリームはより少ない数のタイルを有することがある。

Figure 0004906734

4 Streaming model As outlined above, the scalar engine is responsible for initiating calculations on a vector processor. There are the following main types of commands passed from the scalar engine to the vector engine.
1. Read command (memRd) initiated by scalar to transfer current working set data from memory to vector engine data RAM
2. 2. Parameters passed from scalar to vector 3. Execution command in PC format of vector subroutine to be executed A write command (eg memWr) initiated by a scalar to copy the result of the vector calculation to memory
Upon receipt of these commands, the vector processor immediately schedules a memRd command to the frame buffer (FB) interface. The vector processor also examines the execute command and prefetches the vector subroutine to be executed (if it is not in the cache). One goal is to schedule the next few execution instructions and data steam in advance while the vector engine is engaged in the current execution. In order to make these read requests in advance, the vector engine manages a data store and instruction cache in hardware.
The data store is the working RAM of the vector processor. The scalar processor sees this data store as a FIFO or a collection of streams. The stream is essentially an input / output FIFO where the scalar begins to transfer. When the I / O stream is full, the vector DMA engine stops processing the command FIFO from the scalar and it will soon be full. Thus, the scalar stops issuing further work to the vector engine. In addition to input and output streams, vectors may require intermediate streams. Thus, the entire data store can be viewed as a collection of streams from the scalar side. Each stream is a working 2D chunk FIFO called a tile. The vector processor maintains a read tile pointer and a write tile pointer for each stream. For an input stream, when the vector subroutine is executed, the vector subroutine can consume or read the current (read) tile. In the background, data is transferred to the current (write) tile by the memRd command. The vector processor can also generate output tiles for the output stream. These tiles are then moved to memory by the memWr () command following the execute command.
This model is illustrated by an example of mixing sub-pictures with video. For example, consider a simplified example where a video surface (eg, NV12 format) is mixed with a subpicture and then converted to an ARGB surface. These surfaces exist in memory. The scalar processor reads these surface chunks (tiles) and loads them into the data store. Since there are multiple input surfaces, it is necessary to hold multiple input streams. Each stream can have a different number of tiles (eg, in this example, assume that the sub-picture surface is in system memory and therefore should be buffered further), but the video stream is more May have a small number of tiles.
Figure 0004906734

5 ベクトルコプロセッサ
VP2のベクトルコプロセッサは、ビデオベースバンド処理及びコーデック向けに設計されたVLIW DSPである。本プロセッサの一部の重要な設計特性は、以下のものを含む。
1.拡張性の高い性能、一つ又は二つのデータパイプ
2.各パイプが二つのデータアドレス発生器(DAG)を有する
3.メモリ/レジスタのオペランド
4.2D(x、y)ポインタ/反復子
5.深いパイプライン(11〜12)ステージ
6.スカラー(整数)/分岐ユニット
7.可変命令幅(Long/Short命令)
8.オペランド抽出のためのデータアライナ
9.標準的なオペランド及び結果の2Dデータパス(4×4)形状
10.リモートプロシージャ呼び出しを実行する、スカラープロセッサに対するスレーブプロセッサ
プログラマの観点からのベクトルコプロセッサは、簡単に言えば、二つのDAGを備えるSIMDデータパスである。命令は、VLIWの方式で発行される(即ち、命令はベクトルデータパス及びアドレス発生器に対して同時に発行される)。命令は、可変長であり、最も一般に使用される命令は短形式でエンコードされる。完全な命令セットは、長形式で使用可能である。例えば、プログラマの観点からは、種々の機能ユニット及びレジスタ/SRAMリソースの構成は、以下に示す通りである。

Figure 0004906734



ベクトルユニットは、単一のデータパイプ又は二重のデータパイプをインスタンス化する。各データパイプは、ローカルRAM(データストア)、二つのDAG、及びSIMD実行ユニットから成る。基本構成では、一つのデータパイプのみが存在する。二つのデータパイプが存在する場合、それらは独立したスレッドとして、又は共同のスレッドとして実行することができる。ベクトルプロセッサの完全なパイプラインの図を以下に示す。これは、二つのデータパイプを備える完全構成である。
Figure 0004906734

5 Vector Coprocessor The vector coprocessor of VP2 is a VLIW DSP designed for video baseband processing and codecs. Some important design characteristics of the processor include:
1. Highly scalable performance, one or two data pipes 2. Each pipe has two data address generators (DAG). 4. Memory / register operands 4.2D (x, y) pointer / iterator 5. Deep pipeline (11-12) stage 6. Scalar (integer) / branching unit Variable instruction width (Long / Short instruction)
8). 8. Data aligner for operand extraction Standard operand and resulting 2D data path (4 × 4) shape Slave processor to scalar processor that performs remote procedure calls The vector coprocessor from the programmer's point of view is simply a SIMD data path with two DAGs. Instructions are issued in a VLIW manner (ie, instructions are issued simultaneously to the vector data path and address generator). The instructions are variable length and the most commonly used instructions are encoded in short form. The complete instruction set is available in long form. For example, from the programmer's point of view, the configuration of the various functional units and registers / SRAM resources is as follows.
Figure 0004906734



A vector unit instantiates a single data pipe or a double data pipe. Each data pipe consists of a local RAM (data store), two DAGs, and a SIMD execution unit. In the basic configuration, there is only one data pipe. If there are two data pipes, they can run as independent threads or as joint threads. A complete pipeline diagram of the vector processor is shown below. This is a complete configuration with two data pipes.
Figure 0004906734

6 高度なプログラミングモデル
第3節では、基本アーキテクチャを説明するためにRPCモデルを示した。この節では、更に高度な概念を示す。

6.1 二重データパイプ構成
二重パイプ構成において、プロセッサの以下のリソースが共用される。
・スカラーコントローラ
・ベクトルコプロセッサのベクトル制御ユニット
・命令/データフェッチ用のDMAエンジン
・命令キャッシュ(デュアルポートであってもよい)
以下のリソースは複製される。
・データパイプ(アドレス/分岐/ベクトル実行ユニット)
・データストア
・レジスタファイル
以下の事項に留意されたい。
1.プログラムは、一つのパイプを用いるインスタンスで二つのパイプ用に作成することができる。ベクトル制御ユニットは、同一の物理パイプ上に各パイプの実行をマップする。しかし、両パイプ用のストリームが一つのデータストアだけに存在するので、データストアのサイズを調整する必要がある。簡単な方法は、ストリーム内のタイルのサイズ又はタイルの数を半分に削減することである。これは、設定時にスカラースレッドによって行われる。マクロアーキテクチャステージにおいて解決する必要のあるグローバルレジスタの重複及びストリームマッピングのような問題が存在する。
2.一つのパイプ用に作成されたプログラムは、二つのパイプを備えるインスタンスで実行することができる。しかし、このコードは、一つのパイプでのみで動作し、他方のパイプを使用しない。マシンは、半アイドル状態になる。
3.プログラムは、それぞれ二つの完全に異なるスレッドを実行する二つのパイプ用に作成することができる。これは、マルチスレッドではない単一のスカラーしか備えていないので、好ましくない場合もある。一つのスカラー実行スレッドしかサポートしないので、これは好ましくないことがあるが、このモデルをサポートすることができる。
4.プログラムは、それぞれ同一のスレッドを実行する二つのパイプ用に作成することができる。これは、多くのビデオベースバンド処理などの、並列化可能アルゴリズムに期待される標準的なモデルである。これにより、同じ命令ストリームを使用して、ビデオの二つのストリップ又は二等分などを操作することができる。各データパイプは、独自の実行ユニット及びデータストアを有する。スカラーコントローラは、二つのデータパイプを供給する必要がある。しかしながら、そのパラメータ、読み取り及び書き込みコマンドは、相互に関連(オフセット)しているので、スカラー性能要件は厳密に倍加することはない。このモデルの例を、以下に示す

Figure 0004906734



5.プログラムは、二つの共同するスレッドを用いて作成することができる。これは、単一のスカラー制御スレッドを有するが、複数の機能ベクトルの機能ブロックが相互に接続される必要である場合のコーデックに期待されるモデルである。これは、機能ブロックのDirectShowのpinモデルと類似している。そのようなアプリケーションの例を、以下に示す。このモデルは、二つのデータパイプしか備えていないので、二つの共同のスレッドのみに制限される。更に注意することは、スレッドが二つのスレッド間でバランスを取る必要があることである。そのようにしないと、性能が損なわれる。これらの制約の範囲内で、このモデルは二つのデータパイプで機能し、さらに単一パイプに縮小することができる。
Figure 0004906734


6.二つのデータパイプは、相互に同期することができる。同期化の基本的な手法は、データ駆動である。ベクトル関数は、データが処理に使用可能である場合に実行される。ストリームは、メモリからの読み取り、又は他のデータパイプからの書き込みによって満たされる。データが使用可能となると、ベクトル制御ユニットは実行をアクティブ化してそれを動作させる。ストリームはまた、計数セマフォーとして使用することもできる。スカラーコントローラ及びベクトルデータパイプは何れも、タイルポインタを増分及び減分して、データ転送が行われない場合にも計数セマフォーとしてストリーム記述子を使用することができる。 6 Advanced programming model In Section 3, the RPC model was presented to illustrate the basic architecture. This section presents more advanced concepts.

6.1 Dual data pipe configuration In the dual pipe configuration, the following resources of the processor are shared.
-Scalar controller-Vector coprocessor vector control unit-DMA engine for instruction / data fetch-Instruction cache (may be dual port)
The following resources are replicated:
Data pipe (address / branch / vector execution unit)
• Data store • Register file Note the following items.
1. A program can be created for two pipes in an instance that uses one pipe. The vector control unit maps the execution of each pipe onto the same physical pipe. However, since the streams for both pipes exist only in one data store, it is necessary to adjust the size of the data store. A simple way is to reduce the size or number of tiles in the stream by half. This is done by a scalar thread at setup time. There are problems such as global register duplication and stream mapping that need to be resolved in the macro architecture stage.
2. A program created for one pipe can be executed on an instance with two pipes. However, this code works with only one pipe and does not use the other pipe. The machine becomes semi-idle.
3. A program can be created for two pipes, each running two completely different threads. This may be undesirable because it has only a single scalar that is not multi-threaded. Although this may not be desirable because it only supports one scalar execution thread, it can support this model.
4). Programs can be created for two pipes, each executing the same thread. This is the standard model expected for parallelizable algorithms, such as many video baseband processing. This allows the same instruction stream to be used to manipulate two strips of video or bisection and the like. Each data pipe has its own execution unit and data store. The scalar controller needs to supply two data pipes. However, because the parameters, read and write commands are interrelated (offset), the scalar performance requirement does not double exactly. An example of this model is shown below
Figure 0004906734



5. A program can be created using two collaborative threads. This is the model expected for a codec when it has a single scalar control thread, but the function blocks of multiple function vectors need to be interconnected. This is similar to the DirectShow pin model of the functional block. An example of such an application is shown below. Since this model has only two data pipes, it is limited to only two joint threads. Note further that the thread needs to be balanced between the two threads. Otherwise, performance will be compromised. Within these constraints, the model works with two data pipes and can be further reduced to a single pipe.
Figure 0004906734


6). The two data pipes can be synchronized with each other. The basic method of synchronization is data driving. A vector function is executed when data is available for processing. The stream is filled by reading from memory or writing from other data pipes. As data becomes available, the vector control unit activates execution and runs it. The stream can also be used as a counting semaphore. Both the scalar controller and the vector data pipe can increment and decrement the tile pointer and use the stream descriptor as a counting semaphore even when no data transfer takes place.

補足的な概要:
一般に、本発明の実施の形態は以下のことを実行する。
1.メディアアルゴリズムをスカラー及びベクトル部分に分解する。
既製のスカラー設計であり、これはまた、パワーと性能要件に基づいて異なるクロック速度でスカラー及びベクトル部分を実行できる能力ももたらす。
2.ストリーム処理
3.2Dデータパス処理
4.待ち時間隠蔽(データ及びコマンドの両フェッチに対する)
Supplemental overview:
In general, embodiments of the present invention do the following:
1. Decompose the media algorithm into scalar and vector parts.
An off-the-shelf scalar design, which also provides the ability to run scalar and vector parts at different clock speeds based on power and performance requirements.
2. 3. Stream processing 3.2D data path processing Latency hiding (for both data and command fetches)

応用分野
暗号:
命令コードの隠蔽
暗号化プログラムは、単にチップ上に乗せることができる。スカラー/コントローラブロックは単に、特定のオペレーションが実行されるよう要求し、暗号化エンジンは命令等をフェッチする。スカラーは、どのアルゴリズムが実行中であるかを確認することさえもできないので、非常に安全である。これは、ユーザーから暗号化アルゴリズムを隠蔽する機構をもたらす。
2D
VP2命令セットアーキテクチャは、2D処理の命令をサポートする。これらは、多くのGUI/windowシステムで使用されるROP3及びROP4のサポートを含む。これにより、メディアプロセッサは、メディアプロセッサ上で2Dオペレーションを実行することができる。ここで特有の利点は、省力化である。
Application areas
Cipher:
Hiding the instruction code The encryption program can simply be placed on the chip. The scalar / controller block simply requests that a specific operation be performed, and the encryption engine fetches instructions and the like. A scalar is very safe because it cannot even see which algorithm is running. This provides a mechanism to hide the encryption algorithm from the user.
2D
The VP2 instruction set architecture supports 2D processing instructions. These include support for ROP3 and ROP4 used in many GUI / window systems. This allows the media processor to perform 2D operations on the media processor. A unique advantage here is labor saving.

ISA
命令スロットとしての条件コード:
条件コードオペレーションに対して、(多重発行命令バンドルに)別個の発行スロットを備える。従来技術では、条件コード/述語レジスタにも影響を与えうるSIMD命令が使用される。しかし、VP2データ処理及び述語レジスタで行われる手法によれば、処理は独立してスケジュールされ、その結果、より高い性能をもたらすことができる。
ISA
Condition code as instruction slot:
Provide separate issue slots (in multiple issue instruction bundles) for condition code operations. The prior art uses SIMD instructions that can also affect the condition code / predicate register. However, with VP2 data processing and the approach performed with predicate registers, processing can be scheduled independently, resulting in higher performance.

メモリI/O
マイクロコーディングされたDMAエンジン:
DMAエンジンは、ストリームのデータのプリフェッチ、データ形式のフォーマッティング、エッジのパディングなど、様々なオペレーションを実行するようにプログラムすることができる(又は独自の小さなマイクロコードを有することができる)。一般に、プログラム可能DMAエンジンであって、ハードワイヤードの機能ではない。したがって、メモリ入出力プロセッサとメディア処理コアとの組み合わせは、全般的なシステムレベルの性能を増強する。メディアプロセッサコアは、データ入出力処理を行う必要から負荷を軽減される。

記憶装置階層アーキテクチャ:
VP2アーキテクチャでは、記憶装置の階層は、メモリBWを最小化して、待ち時間補償を行うように最適化される。以下のような多種多様な方式が提供される。
− スクラッチramとしてベクトルコアに可視であるストリーミングデータストアの第1レベル。スカラープロセッサによって生成された要求ストリームを前もって調べるためにHWによって管理される。このデータストアは、オプションで、データ再使用のためにL2キャッシュによって支援される。L2キャッシュは、ストリームベースで個々のセクタに分割することができる。
− ストリーミングデータストアによって支援されるL1キャッシュ。データストアは、次の関連データセットをプリフェッチしている。
− データタグとしてStreamポインタを使用するキャッシュ。
− L1データストア及びL2キャッシュをプリフェッチ/キャッシュするためのスカラー生成ストリームアドレスの使用。
Memory I / O
Microcoded DMA engine:
The DMA engine can be programmed to perform a variety of operations (or have its own small microcode), such as prefetching data in a stream, data format formatting, edge padding, etc. Generally, it is a programmable DMA engine, not a hardwired function. Thus, the combination of a memory input / output processor and a media processing core enhances overall system level performance. The media processor core reduces the load because it needs to perform data input / output processing.

Storage hierarchy architecture:
In the VP2 architecture, the storage hierarchy is optimized to minimize the memory BW and provide latency compensation. A variety of methods are provided as follows.
A first level of streaming data store that is visible to the vector core as a scratch ram. Managed by the HW to examine in advance the request stream generated by the scalar processor. This data store is optionally supported by an L2 cache for data reuse. The L2 cache can be divided into individual sectors on a stream basis.
-L1 cache supported by a streaming data store. The data store is prefetching the next related data set.
-A cache that uses a Stream pointer as a data tag.
-Use of scalar generated stream address to prefetch / cache L1 data store and L2 cache.

ベクトル通信リンクへの最適化スカラー:
MemRd/Wrフォーマット
システムメモリとローカルメモリとの間の読み取り及び書き込みを行うためのスカラーからの短縮コマンド。DMAエンジンを管理するために必要な制御フロー帯域幅を節約する。同時に、サポートされるトランザクションのタイプを制限しない。

ベクトルL2に対するスカラー2ベクトルの推測

通信の帯域幅を削減するためのパラメータ修飾子及び反復子のサポートによるパラメータ圧縮。

パイプラインキャッシュ:
パイプライン命令キャッシュ。以下のような様々な方式がサポートされる。
− ベクトルとスカラープロセッサとの間の作動時の実行を追跡することにより各キャッシュラインのライフサイクルを管理。これにより、ベクトルプロセッサが実行を開始する前に命令を作動可能状態にすることができる。命令がまだキャッシュ内にない場合は、プリフェッチされる。
− 小規模な待ち時間構成の場合、小型のFIFOに変えることにより命令キャッシュが最小化される。既にFIFO内にある実行は再使用することができるが、それ以外の場合は再度フェッチされる。

全般的アーキテクチャ
データストアは、さまざまな処理要素の間で共用することができる。これらは、ストリームを通じて通信し、相互に供給することができる。アーキテクチャは、SIMDベクトルコア、DMAエンジン、ストリームを通じて接続された固定機能ユニットのような、異種の機能ユニットのセットを想定する。
Optimized scalar for vector communication links:
MemRd / Wr format Short command from scalar to read and write between system memory and local memory. Saves the control flow bandwidth required to manage the DMA engine. At the same time, it does not limit the types of transactions that are supported.

Scalar 2 vector guess for vector L2

Parameter compression with support for parameter modifiers and iterators to reduce communication bandwidth.

Pipeline cache:
Pipeline instruction cache. Various schemes are supported:
-Manage the life cycle of each cache line by tracking operational execution between the vector and the scalar processor. This allows the instructions to be ready before the vector processor begins execution. If the instruction is not already in the cache, it is prefetched.
-For small latency configurations, instruction cache is minimized by changing to a smaller FIFO. Execution already in the FIFO can be reused, otherwise it is fetched again.

General Architecture Data stores can be shared between various processing elements. These can be communicated through a stream and supplied to each other. The architecture assumes a heterogeneous set of functional units such as SIMD vector cores, DMA engines, fixed functional units connected through streams.

計算/DP
任意/柔軟な形式/ハーフパイプ
データパスは、様々な形式で動作する。データパスの形式は、問題セットと適合するように構成することができる。通常、1Dデータパスが行われる。VP2は、アルゴリズムに適合するように、4×4、8×4、又は16×1などの可変サイズとなりうる形式を処理する。

拡張性
VP2データパスアーキテクチャは、命令搬送技法を使用して(注:16ウェイのSIMDパイプを備え、各オペランドは1バイト幅である。8ウェイのSIMDパイプを備え(二つのパイプをまとめる)、各オペランドが2バイトのより広いSIMDデータパスを備えることができ、同様に4ウェイのSIMDパイプを備え(四つのパイプをまとめる)、各オペランドが4バイトのより広いSIMDデータパスを備えることができる)、領域を節約するために複数サイクルにわたってより狭いデータパスでより広いSIMD命令を実行することができる。
例えば、VP2は、16ウェイのSIMDから8ウェイのSIMDまでデータパスを拡大縮小することができる。

バイトレーンの結合
オペランド幅を増大するためにSIMDのウェイを結合。例、現在8ビットオペランドの16ウェイSIMD。8ウェイのSIMDで16ビットのオペランド、及び4ウェイのSIMDで32ビットのオペランドに増大することができる。

SIMDアドレス発生器
SIMDパイプの各ウェイに対して別個のストリームアドレス発生器。
VP2は、要求がデータストアへの最小アクセスに合体されるSIMDアドレス発生器を使用することができる。

クロスバー及びコレクタを使用するデータ展開
クロスバーを使用してさらに多くのデータオペランドを作成する能力。読み取りポートのプレッシャを軽減してパワーを節約。

X2命令:
全ての命令がデータパス内の全てのHW要素(加算器/乗算器)を使用することができるわけではない。したがって、加算/減算のような単純な命令に対しては、複雑な命令の場合よりも広いデータ形式を処理することができる。そのため、最小共通サイズに性能を限定する代わりに、VP2では、読み取りポートがオペレーション帯域幅を保持できる限り、より広い形式で動作するよう便宜的に試みる柔軟な命令セットを使用する。

マルチスレッド/マルチコアのメディア処理
VP2アーキテクチャは、以下のような様々なマルチスレッドのオプションをサポートする。
− マルチスレッドスカラープロセッサは、ストリームを通じて接続された複数ベクトルユニットでプロシージャ呼び出しをスケジュールする。
− 命令で/命令により単一ベクトルエンジン上で実行するか又は実行スレッドスイッチングにより実行する複数スレッド。

異なるベクトル/スカラーを使用するパワー管理
分離されたスカラー及びベクトル部分により、これらの二つのブロックを、パワー及び性能の要件に基づいて異なる速度で実行することができる。
Calculation / DP
Arbitrary / Flexible format / Halfpipe The data path operates in various formats. The format of the data path can be configured to match the problem set. Usually, a 1D data pass is performed. VP2 processes a format that can be a variable size, such as 4 × 4, 8 × 4, or 16 × 1, to fit the algorithm.

Scalability The VP2 datapath architecture uses instruction transport techniques (Note: with 16-way SIMD pipes, each operand is 1 byte wide. With 8-way SIMD pipes (bundling two pipes) Each operand can have a wider SIMD data path of 2 bytes, as well as a 4-way SIMD pipe (collecting 4 pipes), each operand can have a wider SIMD data path of 4 bytes. ) Wider SIMD instructions can be executed with narrower data paths over multiple cycles to save space.
For example, VP2 can scale the data path from 16-way SIMD to 8-way SIMD.

Combine byte lanes Combine SIMD ways to increase operand width. Example: 16-way SIMD currently with 8-bit operands. It can be expanded to 16-bit operands with 8-way SIMD and 32-bit operands with 4-way SIMD.

SIMD address generator A separate stream address generator for each way of the SIMD pipe.
VP2 can use a SIMD address generator where requests are combined into a minimum access to the data store.

Data expansion using crossbars and collectors The ability to create more data operands using crossbars. Reduces read port pressure to save power.

X2 instruction:
Not all instructions can use all HW elements (adders / multipliers) in the data path. Therefore, for simple instructions such as addition / subtraction, a wider data format can be processed than in the case of complex instructions. Therefore, instead of limiting performance to the smallest common size, VP2 uses a flexible instruction set that conveniently attempts to operate in a wider format as long as the read port can maintain the operation bandwidth.

Multi-thread / multi-core media processing The VP2 architecture supports various multi-threading options, including:
A multi-thread scalar processor schedules a procedure call with multiple vector units connected through a stream.
Multiple threads executing on a single vector engine with / with instructions or by execution thread switching.

Power management using different vectors / scalars Separated scalar and vector parts allow these two blocks to run at different speeds based on power and performance requirements.

コンテキストスイッチ:
このメディアプロセッサは、その少ないレジスタのアーキテクチャにより、非常に高速のコンテキストスイッチをサポートする能力を有する。HWサポートは、スカラー−ベクトルコマンドキューを追跡し、保存し、それを再生してコンテキストスイッチングを達成するために存在する。また、コンテキストスイッチは、ページフォールトで開始されうる。
これにより、メディアプロセッサは、入出力表示処理のようなリアルタイム処理タスクを保持することができ、同時に、2Dアクセラレーション又は表示パイプラインを供給するためのジャストインタイムのビデオ拡張のような非リアルタイムのタスクをサポートすることもできる。
このコンテキストスイッチ機能は、その命令セットと共に、VP2が統合されたピクセル/コーデック処理となるようにすることができる。
Context switch:
This media processor has the ability to support very fast context switches due to its low register architecture. HW support exists to track, save and replay a scalar-vector command queue to achieve context switching. A context switch can also be initiated with a page fault.
This allows the media processor to hold real-time processing tasks such as input / output display processing, and at the same time non-real-time video extensions such as just-in-time video extensions to provide 2D acceleration or display pipelines. It can also support tasks.
This context switch function, along with its instruction set, allows VP2 to be an integrated pixel / codec process.

データストアの編成:
VP2は、以下の特性を有するデータストアの編成を使用する。
各方向最大16ピクセルまでバンク競合を生じることなくアクセスすることができる。これは、ストライド要件を最小に抑えつつ行われる。
データストア編成により、データ形式の効率的な置き換えが可能になる。
2Dアドレシングはデータストア内でサポートされ、ビデオなどの多くのメディア処理アプリケーションにおいてリニアアドレスのSW計算を除去する。
Data store organization:
VP2 uses a data store organization with the following characteristics:
Up to 16 pixels in each direction can be accessed without causing bank contention. This is done while minimizing stride requirements.
Data store organization enables efficient replacement of data formats.
2D addressing is supported in the data store and eliminates the linear address SW calculation in many media processing applications such as video.

Figure 0004906734
Figure 0004906734

アプリケーション   application

Figure 0004906734
Figure 0004906734

Figure 0004906734
Figure 0004906734

アーキテクチャ   architecture

高計算密度
・VP1アーキテクチャの2倍のperf/mm2
・新しいアプリケーションで効率的(固定機能HWに比べ)
プログラム能力
・「妥当に」コンパイル可能:スカラーについてはC、ベクトルについては固有
・HWで管理される待ち時間隠蔽
・ハング及び不正アドレスに対する保護
拡張可能性
・2倍及び_倍の拡張オプション
・クロック周波数を通じて拡張可能
高精度のオペレーションのサポート
・10b+20b整数データ型
High computational density ・ perf / mm2 twice that of VP1 architecture
・ Efficient with new applications (compared to fixed function HW)
Program Capability • Compile “reasonably”: C for scalar, unique for vector • HW-managed latency hiding • Scalability protection against hangs and illegal addresses • Double and _ times expansion options • Clock frequency Supports high-precision operations that can be extended through 10b + 20b integer data types

Figure 0004906734
Figure 0004906734

ブロック概要
・スカラープロセッサ
・プログラムフロー制御
・タイルラスタライズ及びアドレス計算
・緩く結合されたベクトルユニットを供給
・ベクトルプロセッサ
・3発行VLIW(v+I、A、B)
・4×4 SIMDデータパス
・データストアから直接のベクトルオペランド(レジスタファイル転送なし)
・スカラー/ベクトルインターフェイス
・緩く結合されたプロセッサ−スカラーはコマンドFIFOを供給
・HWによって管理される命令及びデータストリーミング(待ち時間隠蔽)
・命令及びデータが作動状態のときにベクトルコマンド発行
Block overview-Scalar processor-Program flow control-Tile rasterization and address calculation-Supply loosely coupled vector units-Vector processor-3 issue VLIW (v + I, A, B)
-4x4 SIMD data path-Vector operands directly from the data store (no register file transfer)
Scalar / vector interface Loosely coupled processor-scalar supplies command FIFO Instruction and data streaming managed by HW (latency hiding)
-Vector command issued when command and data are in operation

Figure 0004906734
Figure 0004906734


VP1からの継承
・内積指向性のデータパス
・VP2は2タップから4タップの計算へ
・A/I/B/V命令を備えるVLIW(変更された発行規則)
・データパスアーキテクチャ:アキュムレータ、データ転送、HWインターロック
・フリーな置き換え、16×16−>4×4に変更
・専用のアドレスユニット
・複雑な命令セット(ビデオに最適化)
Inheritance from VP1 ・ Inner product-oriented data path ・ VP2 calculation from 2 taps to 4 taps ・ VLIW with A / I / B / V instructions (changed issuance rules)
・ Data path architecture: Accumulator, data transfer, HW interlock ・ Free replacement, change to 16 × 16-> 4 × 4 ・ Dedicated address unit ・ Complex instruction set (optimized for video)

VP2の特徴1
・分離されたスカラープロセッサ
・Cでのコンパイル可能な外部ループコードの最適なターゲット
・命令ストリーミング
・HW管理の命令プリフェッチ(パイプラインI$を使用)
・アプリケーションは命令キャッシュよりも大きいフットプリントを保有可能
・データプリフェッチ
・データストア内のHW管理のストリーム
・プログラマは外部ループ制御する必要なし
・精度の向上
・10b単精度
・新たな20b倍精度
・より優れたISA
・より優れたエラー管理
・メモリ保護、命令トラップ
Feature 1 of VP2
-Separate scalar processor-Optimal target for compilable external loop code in C-Instruction streaming-HW-managed instruction prefetch (uses pipeline I $)
・ Application can have a larger footprint than instruction cache ・ Data prefetch ・ HW management stream in data store ・ No need for external loop control ・ Improved accuracy ・ 10b single precision ・ New 20b double precision ・ More Excellent ISA
-Better error management-Memory protection, instruction trap

VP2の特徴2
・4×4のSIMDデータパス
・VP1は16×1のSIMDマシンであった
・高機能コードに非常に効率的な編成(H.264、WMV9)
・2D処理に必要な帯域幅を軽減
・改善されたデータベース編成
・データパスに適合し、VP1に比べはるかに安価な転置機能を提供するタイル型4×4構造
・マルチポートRAMをエミュレートするSPA様のコレクタ構造
・ベクトルパイプはデータストアから直接動作(ベクトルレジスタファイルなし)
・専用のクロスバーステージ
・不整列オペランドを抽出
・わずかな数の読み取りポートから複数のオペランドを作成
・定数RAM
・データストア読み取り帯域幅のプレッシャを軽減
・非常に柔軟な条件コード/述語のサポート
Feature 2 of VP2
-4x4 SIMD data path-VP1 was a 16x1 SIMD machine-Very efficient organization for high-performance code (H.264, WMV9)
-Reduced bandwidth required for 2D processing-Improved database organization-Tile-type 4x4 structure that fits the data path and provides a much cheaper transposition function compared to VP1-SPA that emulates multi-port RAM Collector structure-Vector pipe operates directly from the data store (no vector register file)
-Dedicated crossbar stage-Extract unaligned operands-Create multiple operands from just a few read ports-Constant RAM
・ Reduces data store read bandwidth pressure ・ Supports very flexible condition codes / predicates

対象アプリケーション
・コーデック
・mpeg2/wmv9/H.264エンコードアシスト(インループデコーダ)
・mpeg2/wmv9/H.264デコード(ポストVLDデコーディング)
・インループ/アウトオブループのデブロッキングフィルタ
・画像処理/強調
・高性能動き適応順次走査変換
・エンコード用入力ノイズフィルタリング
・多相スケーリング/リサンプリング
・サブピクチャ合成
・ピクセル単位の変換:procamp、色空間補正、ガンマ、LCDオーバードライブ、ヒストグラム調整など
・ビデオサーフェスフォーマット変換
Applicable application codec mpeg2 / wmv9 / H. H.264 encoding assist (in-loop decoder)
Mpeg2 / wmv9 / H. H.264 decoding (post-VLD decoding)
-In-loop / out-of-loop deblocking filter-Image processing / enhancement-High performance motion adaptive progressive scan conversion-Encoding input noise filtering-Multiphase scaling / resampling-Sub-picture synthesis-Pixel-by-pixel conversion: procamp, color Spatial correction, gamma, LCD overdrive, histogram adjustment, etc.Video surface format conversion

潜在的な対象アプリケーション
・2Dプリミティブ、ブリッツ、回転など
・微調整ベースのソフトウェアモーション推定アルゴリズム
・16/32ビットのMACアプリケーション(オーディオ?)
Potential target applications • 2D primitive, blitz, rotation, etc. • Fine-tuned software motion estimation algorithm • 16 / 32-bit MAC application (audio?)

プログラミングモデル   Programming model

Figure 0004906734
Figure 0004906734

Figure 0004906734
Figure 0004906734

本発明のある実施の形態に係るコンピュータシステムの基本コンポーネントを示す概略図である。1 is a schematic diagram illustrating basic components of a computer system according to an embodiment of the present invention. 本発明のある実施の形態に係るビデオプロセッサユニットの内部コンポーネントを示す図である。FIG. 3 is a diagram showing internal components of a video processor unit according to an embodiment of the present invention. 本発明のある実施の形態に係るビデオプロセッサの例示的なソフトウェアプログラムを示す図である。FIG. 3 illustrates an exemplary software program for a video processor according to an embodiment of the present invention. 本発明のある実施の形態に係り、ビデオプロセッサを使用してサブピクチャをビデオと混合させる例を示す図である。FIG. 7 is a diagram illustrating an example of mixing a sub-picture with video using a video processor according to an embodiment of the present invention. 本発明のある実施の形態に係るベクトル実行の内部コンポーネントを示す図である。FIG. 6 is a diagram illustrating internal components of vector execution according to an embodiment of the present invention. 本発明のある実施の形態に係るタイルの対称配列を有するデータストアメモリのレイアウトを示す図である。FIG. 3 is a diagram showing a layout of a data store memory having a symmetrical arrangement of tiles according to an embodiment of the present invention.

Claims (16)

スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットのデータを格納するデータストアメモリと、
前記スカラー実行ユニットと前記ベクトル実行ユニットと前記データストアメモリとの間の通信を実施するメモリインターフェイスと、
を備え、
前記データストアメモリは配列状に構成された対称バンクデータ構造を有する複数のタイルを備え、
前記バンクデータ構造は各バンクの異なるタイルへのアクセスをサポートするように構成されており、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルへの第1の順次アクセスを含む第1のストリームと、タイルへの第2の順次アクセスを含む第2のストリームとを実施し、
前記メモリインターフェイスが、前記第1のストリーム及び前記第2のストリームの待ち時間を補償するために、該第1及び第2のストリームの該待ち時間に基づいて、プリフェッチするタイルの数を調整して、前記第1の順次アクセス及び前記第2の順次アクセスに関するタイル内のデータのプリフェッチを開始する、
システム。
A scalar execution unit configured to perform scalar video processing operations;
A vector execution unit configured to perform vector video processing operations;
A data store memory for storing data of the vector execution unit;
A memory interface for performing communication between the scalar execution unit, the vector execution unit, and the data store memory;
With
The data store memory comprises a plurality of tiles having a symmetric bank data structure arranged in an array,
The bank data structure is configured to support access to different tiles in each bank;
A first stream including a first sequential access to the tile and a second stream including a second sequential access to the tile to the vector execution unit or the scalar execution unit; Carried out,
Wherein the memory interface, in order to compensate for the latency of the first stream and the second stream, and based on the said waiting time of the first and second streams, adjust the number of tiles to prefetch Te, it starts to prefetch data in the tile for the first sequential access and the second sequential access of,
system.
前記システムが、ビデオ処理オペレーションを実行するためのビデオプロセッサ用の多次元データパス処理システムである、請求項1に記載のシステム。  The system of claim 1, wherein the system is a multi-dimensional data path processing system for a video processor for performing video processing operations. ビデオ処理オペレーションをサポートする多次元データパス処理のためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストCPUと、
前記マザーボードに結合され、且つ前記CPUに結合された、請求項1に記載の前記システムを有するビデオプロセッサと、
を備えるシステム。
A system for multidimensional data path processing that supports video processing operations,
With the motherboard,
A host CPU coupled to the motherboard;
The video processor having the system of claim 1 coupled to the motherboard and coupled to the CPU;
A system comprising:
前記バンクデータ構造の各々が、4×4、8×8、8×16、又は16×24のパターンに構成された複数のタイルを備え、
前記バンクデータ構造が、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含む少なくとも一つのアクセスをサポートするように構成されており、
前記タイルが、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含むものであり、
当該システムが、前記データストアメモリに結合されており、且つ、前記複数のバンクデータ構造のタイルにアクセスするための構成を選択するクロスバーを更に備え、
前記クロスバーが、前記複数のバンクデータ構造の前記タイルにアクセスして、1クロック毎にベクトルデータパスにデータを供給するようになっており、
当該システムが、前記クロスバーによってアクセスされる前記複数のバンクデータ構造の前記タイル内のデータを受け取り、1クロック毎に前記ベクトルデータパスの前端に前記タイル内のデータを供給するためのコレクタを更に備える、請求項1〜3のいずれか一項に記載のシステム。
Each of the bank data structures comprises a plurality of tiles arranged in a 4x4, 8x8, 8x16, or 16x24 pattern;
The bank data structure is configured to support access to different tiles of each bank data structure and includes at least a row of tiles of the two adjacent bank data structures to two adjacent bank data structures Configured to support a single access,
The tiles are configured to support access to different tiles of each bank data structure, and at least one access of the tiles of the two adjacent bank data structures to two adjacent bank data structures. Contains columns,
The system further comprises a crossbar coupled to the data store memory and selecting a configuration for accessing the plurality of bank data structure tiles;
The crossbar accesses the tiles of the plurality of bank data structures to supply data to the vector data path every clock;
The system further includes a collector for receiving data in the tiles of the plurality of bank data structures accessed by the crossbar and supplying the data in the tiles to the front end of the vector data path every clock. The system as described in any one of Claims 1-3 provided.
ビデオ処理オペレーションを実行するためのビデオプロセッサであって、
前記ビデオプロセッサとホストCPUとの間の通信を実施するホストインターフェイスと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルへの第1の順次アクセスを含む第1のストリームと、タイルへの第2の順次アクセスを含む第2のストリームとを実施し、
前記メモリインターフェイスが、前記第1のストリーム及び前記第2のストリームの待ち時間を補償するために、該第1及び第2のストリームの該待ち時間に基づいて、プリフェッチするタイルの数を調整して、前記第1の順次アクセス及び前記第2の順次アクセスに関するタイル内のデータのプリフェッチを開始する、
ビデオプロセッサ。
A video processor for performing video processing operations,
A host interface for performing communication between the video processor and a host CPU;
A memory interface for performing communication between the video processor and a frame buffer memory;
A scalar execution unit coupled to the host interface and the memory interface and configured to perform scalar video processing operations;
A vector execution unit coupled to the host interface and the memory interface and configured to perform vector video processing operations;
With
The frame buffer memory comprises a plurality of tiles;
A first stream including a first sequential access to the tile and a second stream including a second sequential access to the tile to the vector execution unit or the scalar execution unit; Carried out,
Wherein the memory interface, in order to compensate for the latency of the first stream and the second stream, and based on the said waiting time of the first and second streams, adjust the number of tiles to prefetch Te, it starts to prefetch data in the tile for the first sequential access and the second sequential access of,
Video processor.
ビデオ処理オペレーションを実行するためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストCPUと、
前記マザーボードに結合され、且つ、前記CPUに結合された請求項5に記載の前記ビデオプロセッサと、
を備えるシステム。
A system for performing video processing operations,
With the motherboard,
A host CPU coupled to the motherboard;
The video processor of claim 5 coupled to the motherboard and coupled to the CPU;
A system comprising:
前記スカラー実行ユニットが、前記ビデオプロセッサのコントローラとして機能し、前記ベクトル実行ユニットの前記オペレーションを制御するようになっており、
当該ビデオプロセッサが、前記スカラー実行ユニットと前記ベクトル実行ユニットのインターフェイスを取るベクトルインターフェイスユニットを更に備え、
前記スカラー実行ユニット及び前記ベクトル実行ユニットが、非同期に動作するように構成されている、請求項5に記載のビデオプロセッサ。
The scalar execution unit functions as a controller of the video processor and controls the operation of the vector execution unit;
The video processor further comprises a vector interface unit that interfaces the scalar execution unit and the vector execution unit;
The video processor of claim 5, wherein the scalar execution unit and the vector execution unit are configured to operate asynchronously.
前記スカラー実行ユニットが、第1のクロック周波数で実行し、前記ベクトル実行ユニットは第2のクロック周波数で実行するようになっており、
前記スカラー実行ユニットが、アプリケーションのフロー制御アルゴリズムを実行するように構成されており、前記ベクトル実行ユニットが、前記アプリケーションのピクセル処理オペレーションを実行するように構成されており、
前記ベクトル実行ユニットが、前記スカラー実行ユニットの前記制御の下で要求駆動ベースで動作するように構成されており、
前記スカラー実行ユニットが、コマンドFIFOを使用して前記ベクトル実行ユニットに関数呼び出しを送るように構成されており、前記ベクトル実行ユニットが、前記コマンドFIFOにアクセスすることによって要求駆動ベースで動作するようになっており、
前記ビデオプロセッサの前記非同期オペレーションが、前記アプリケーションのベクトルサブルーチン又はスカラーサブルーチンの別個の独立した更新をサポートするように構成されている、請求項7に記載のビデオプロセッサ又は請求項6に記載のシステム。
The scalar execution unit executes at a first clock frequency, and the vector execution unit executes at a second clock frequency;
The scalar execution unit is configured to execute an application flow control algorithm, and the vector execution unit is configured to execute a pixel processing operation of the application;
The vector execution unit is configured to operate on a demand driven basis under the control of the scalar execution unit;
The scalar execution unit is configured to send a function call to the vector execution unit using a command FIFO such that the vector execution unit operates on a request driven basis by accessing the command FIFO. And
The video processor of claim 7 or the system of claim 6, wherein the asynchronous operation of the video processor is configured to support separate independent updates of the application's vector subroutine or scalar subroutine.
前記スカラー実行ユニットが、VLIW(超長命令語)コードを使用して動作するように構成されている、請求項5に記載のビデオプロセッサ。  The video processor of claim 5, wherein the scalar execution unit is configured to operate using VLIW (very long instruction word) code. ビデオ処理オペレーションを実行するビデオプロセッサのためのストリームベースのメモリアクセスシステムであって、
スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記スカラー実行ユニット及び前記ベクトル実行ユニット用のデータを格納するフレームバッファメモリと、
前記スカラー実行ユニットと前記ベクトル実行ユニットと前記フレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルへの第1の順次アクセスを含む第1のストリームと、タイルへの第2の順次アクセスを含む第2のストリームとを実施し、
前記メモリインターフェイスが、前記第1のストリーム及び前記第2のストリームの待ち時間を補償するために、該第1及び第2のストリームの該待ち時間に基づいて、プリフェッチするタイルの数を調整して、前記第1の順次アクセス及び前記第2の順次アクセスに関するタイル内のデータのプリフェッチを開始する、
システム。
A stream-based memory access system for a video processor that performs video processing operations, comprising:
A scalar execution unit configured to perform scalar video processing operations;
A vector execution unit configured to perform vector video processing operations;
A frame buffer memory for storing data for the scalar execution unit and the vector execution unit;
A memory interface for performing communication between the scalar execution unit, the vector execution unit, and the frame buffer memory;
With
The frame buffer memory comprises a plurality of tiles;
A first stream including a first sequential access to the tile and a second stream including a second sequential access to the tile to the vector execution unit or the scalar execution unit; Carried out,
Wherein the memory interface, in order to compensate for the latency of the first stream and the second stream, and based on the said waiting time of the first and second streams, adjust the number of tiles to prefetch Te, it starts to prefetch data in the tile for the first sequential access and the second sequential access of,
system.
ビデオ処理オペレーションをサポートするためにストリームベースのメモリアクセスを実行するシステムであって、
マザーボードと、
前記マザーボードに結合されたホストCPUと、
前記マザーボードに結合され、前記CPUに結合されたビデオプロセッサであって、
前記ビデオプロセッサと前記ホストCPUとの間の通信を確立するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記スカラー実行ユニットと前記ベクトル実行ユニットとに結合されており、前記スカラー実行ユニットと前記ベクトル実行ユニットとフレームバッファメモリとの間のストリームベースの通信を確立するメモリインターフェイスと、
を有する該ビデオプロセッサと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルへの第1の順次アクセスを含む第1のストリームと、タイルへの第2の順次アクセスを含む第2のストリームとを実施し、
前記メモリインターフェイスが、前記第1のストリーム及び前記第2のストリームの待ち時間を補償するために、該第1及び第2のストリームの該待ち時間に基づいて、プリフェッチするタイルの数を調整して、前記第1の順次アクセス及び前記第2の順次アクセスに関するタイル内のデータのプリフェッチを開始する、
システム。
A system that performs stream-based memory access to support video processing operations,
With the motherboard,
A host CPU coupled to the motherboard;
A video processor coupled to the motherboard and coupled to the CPU,
A host interface establishing communication between the video processor and the host CPU;
A scalar execution unit coupled to the host interface and configured to perform scalar video processing operations;
A vector execution unit coupled to the host interface and configured to perform vector video processing operations;
A memory interface coupled to the scalar execution unit and the vector execution unit to establish stream-based communication between the scalar execution unit, the vector execution unit, and a frame buffer memory;
The video processor comprising:
With
The frame buffer memory comprises a plurality of tiles;
A first stream including a first sequential access to the tile and a second stream including a second sequential access to the tile to the vector execution unit or the scalar execution unit; Carried out,
Wherein the memory interface, in order to compensate for the latency of the first stream and the second stream, and based on the said waiting time of the first and second streams, adjust the number of tiles to prefetch Te, it starts to prefetch data in the tile for the first sequential access and the second sequential access of,
system.
前記第1のストリーム及び前記第2のストリームが、少なくとも一つのプリフェッチされたタイル内のデータを含み、
前記第1のストリームが、前記フレームバッファメモリの第1のロケーションから生じ、前記第2のストリームが、前記フレームバッファメモリの第2のロケーションから生じるようになっており、
前記メモリインターフェイスが、複数の異なる発生元ロケーションからのストリーム、及び複数の異なる終端ロケーションへのストリームを含む複数のストリームを管理するように構成されており、
前記発生元ロケーションの少なくとも一つ、又は前記終端ロケーションの少なくとも一つが、システムメモリ内にあり、
当該システムが、前記メモリインターフェイスに組み込まれており、前記第1のストリーム及び前記第2のストリームをサポートするために複数のメモリ読み取りを実施し、前記第1のストリーム及び前記第2のストリームをサポートするために複数のメモリ書き込みを実施するように構成されたDMAエンジンを更に備え、
前記メモリインターフェイスが、前記第1のストリーム又は前記第2のストリームの調整可能な数のタイル内のデータをプリフェッチして、前記第1のストリーム又は前記第2のストリームの待ち時間を補償するように構成されている、請求項10に記載のシステム。
The first stream and the second stream include data in at least one prefetched tile;
The first stream originates from a first location of the frame buffer memory and the second stream originates from a second location of the frame buffer memory;
The memory interface is configured to manage a plurality of streams including streams from a plurality of different origin locations and streams to a plurality of different end locations;
At least one of the source locations or at least one of the end locations is in system memory;
The system is embedded in the memory interface, performs a plurality of memory reads to support the first stream and the second stream, and supports the first stream and the second stream A DMA engine configured to perform a plurality of memory writes to
The memory interface prefetches data in an adjustable number of tiles of the first stream or the second stream to compensate for latency of the first stream or the second stream; The system of claim 10, wherein the system is configured.
ビデオプロセッサとホストCPUとの間の通信を実施するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットがコマンドFIFOにアクセスすることによって要求駆動ベースで動作できるようにするコマンドFIFOと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
複数の異なる記憶域の間のDMA転送を実施し、データストアメモリ及び命令キャッシュに前記ベクトル実行ユニットのデータと命令をロードするために前記メモリインターフェイスに組み込まれたDMAエンジンと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルへの第1の順次アクセスを含む第1のストリームと、タイルへの第2の順次アクセスを含む第2のストリームとを実施し、
前記メモリインターフェイスが、前記第1のストリーム及び前記第2のストリームの待ち時間を補償するために、該第1及び第2のストリームの該待ち時間に基づいて、プリフェッチするタイルの数を調整して、前記第1の順次アクセス及び前記第2の順次アクセスに関するタイル内のデータのプリフェッチを開始する、
システム。
A host interface for performing communication between the video processor and the host CPU;
A scalar execution unit coupled to the host interface and configured to perform scalar video processing operations;
A vector execution unit coupled to the host interface and configured to perform vector video processing operations;
A command FIFO that allows the vector execution unit to operate on a request driven basis by accessing the command FIFO;
A memory interface for performing communication between the video processor and a frame buffer memory;
A DMA engine embedded in the memory interface for performing DMA transfers between a plurality of different storage areas and loading the vector execution unit data and instructions into a data store memory and instruction cache;
With
The frame buffer memory comprises a plurality of tiles;
A first stream including a first sequential access to the tile and a second stream including a second sequential access to the tile to the vector execution unit or the scalar execution unit; Carried out,
Wherein the memory interface, in order to compensate for the latency of the first stream and the second stream, and based on the said waiting time of the first and second streams, adjust the number of tiles to prefetch Te, it starts to prefetch data in the tile for the first sequential access and the second sequential access of,
system.
前記システムがビデオ処理オペレーションを実行する耐待ち時間システムである、請求項13に記載のシステム。  The system of claim 13, wherein the system is a tolerant system that performs video processing operations. マザーボードと、
前記マザーボードに結合されたホストCPUと、
前記マザーボードに結合されており、前記CPUに結合されたビデオプロセッサと、
を更に備える請求項14に記載のシステム。
With the motherboard,
A host CPU coupled to the motherboard;
A video processor coupled to the motherboard and coupled to the CPU;
15. The system of claim 14, further comprising:
前記ベクトル実行ユニットが、前記要求駆動ベースで動作するために前記コマンドFIFOにアクセスすることによって前記スカラー実行ユニットに対して非同期に動作するように構成されており、
前記要求駆動ベースが、前記異なる記憶域から前記ベクトル実行ユニットの前記コマンドFIFOへのデータ転送の待ち時間を隠蔽するように構成されており、
前記スカラー実行ユニットがアルゴリズムのフロー制御処理を実施するように構成されており、前記ベクトル実行ユニットがビデオ処理ワークロードの大部分を実施するように構成されており、
前記スカラー実行ユニットが、データ転送待ち時間を隠蔽するために前記ベクトル実行ユニットの作業パラメータを事前計算するように構成されており、
前記ベクトル実行ユニットが、前記DMAエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されており、
前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされるようになっており、
前記ベクトル実行ユニットが、前記DMAエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されており、前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされている、
請求項13〜15のいずれか一項に記載のシステム。
The vector execution unit is configured to operate asynchronously with respect to the scalar execution unit by accessing the command FIFO to operate on the request driven basis;
The request driven base is configured to conceal the latency of data transfer from the different storage to the command FIFO of the vector execution unit;
The scalar execution unit is configured to perform algorithmic flow control processing, and the vector execution unit is configured to perform most of the video processing workload;
The scalar execution unit is configured to precalculate the working parameters of the vector execution unit to conceal data transfer latency;
The vector execution unit is configured to schedule memory reads via the DMA engine to prefetch commands for subsequent execution of vector subroutines;
The memory read is scheduled to prefetch commands for the execution of the vector subroutine prior to invoking the vector subroutine by the scalar execution unit;
The vector execution unit is configured to schedule a memory read via the DMA engine and prefetch commands for subsequent execution of a vector subroutine, wherein the memory read is performed by the scalar execution unit. Scheduled to prefetch commands for the execution of the vector subroutine prior to calling the vector subroutine;
The system according to any one of claims 13 to 15.
JP2007541436A 2004-11-15 2005-11-14 Video processing Active JP4906734B2 (en)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US62841404P 2004-11-15 2004-11-15
US60/628,414 2004-11-15
US11/267,638 US8493396B2 (en) 2004-11-15 2005-11-04 Multidimensional datapath processing in a video processor
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,700 2005-11-04
US11/267,875 US8687008B2 (en) 2004-11-15 2005-11-04 Latency tolerant system for executing video processing operations
US11/267,638 2005-11-04
US11/267,599 2005-11-04
US11/267,875 2005-11-04
PCT/US2005/041329 WO2006055546A2 (en) 2004-11-15 2005-11-14 A video processor having a scalar component controlling a vector component to implement video processing

Publications (2)

Publication Number Publication Date
JP2008521097A JP2008521097A (en) 2008-06-19
JP4906734B2 true JP4906734B2 (en) 2012-03-28

Family

ID=36407688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007541436A Active JP4906734B2 (en) 2004-11-15 2005-11-14 Video processing

Country Status (5)

Country Link
EP (1) EP1812928A4 (en)
JP (1) JP4906734B2 (en)
KR (5) KR101030174B1 (en)
CA (1) CA2585157A1 (en)
WO (1) WO2006055546A2 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
EP3014429B1 (en) 2013-09-06 2020-03-04 Huawei Technologies Co., Ltd. Method and apparatus for asynchronous processor removal of meta-stability
US10275370B2 (en) * 2015-01-05 2019-04-30 Google Llc Operating system dongle
KR102067714B1 (en) * 2016-11-17 2020-01-17 주식회사 엘지화학 Battery module and battery pack including the same
US20210141697A1 (en) * 2018-03-06 2021-05-13 DinoplusAI Holdings Limited Mission-Critical AI Processor with Multi-Layer Fault Tolerance Support
KR102067128B1 (en) * 2018-06-07 2020-01-16 코츠테크놀로지주식회사 Health monitoring device and large area display including the same
WO2022220835A1 (en) * 2021-04-15 2022-10-20 Zeku, Inc. Shared register for vector register file and scalar register file

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0877347A (en) * 1994-03-08 1996-03-22 Texas Instr Inc <Ti> Data processor for image/graphics processing and its operating method
JPH08153032A (en) * 1994-11-29 1996-06-11 Matsushita Electric Ind Co Ltd Data look-ahead buffer method via network
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
JPH08297605A (en) * 1995-04-26 1996-11-12 Hitachi Ltd Data processor and system using the same
JPH09325759A (en) * 1995-11-22 1997-12-16 Nintendo Co Ltd High performance low cost video game system provided with coprocessor providing high speed high efficiency 3d graphics and digital sound signals processing
JPH10222476A (en) * 1996-10-15 1998-08-21 Samsung Electron Co Ltd Mpeg audio decoding device and its decoding method
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
JP2000148695A (en) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp Geometric processing processor and floating point power calculating device and data output controller
JP2001022638A (en) * 1999-07-05 2001-01-26 Hitachi Ltd Information processing system
US20020144061A1 (en) * 1998-12-31 2002-10-03 Cray Inc. Vector and scalar data cache for a vector multiprocessor
JP2003178294A (en) * 2001-12-12 2003-06-27 Sony Corp Image processor and its method
US20030204673A1 (en) * 2002-04-26 2003-10-30 Suresh Venkumahanti Data prefetching apparatus in a data processing system and method therefor
US20040073771A1 (en) * 2002-10-10 2004-04-15 Yen-Kuang Chen Apparatus and method for facilitating memory data access with generic read/write patterns
JP2004252990A (en) * 2001-03-22 2004-09-09 Sony Computer Entertainment Inc Computer processor and processing device

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
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
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
US5040109A (en) * 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
JPH0795766B2 (en) * 1989-06-30 1995-10-11 株式会社日立製作所 Digital data communication device and data communication adapter used therefor
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
EP0607988B1 (en) * 1993-01-22 1999-10-13 Matsushita Electric Industrial Co., Ltd. Program controlled processor
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
KR100262453B1 (en) * 1996-08-19 2000-08-01 윤종용 Method and apparatus for processing video data
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
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US20060064517A1 (en) * 2004-09-23 2006-03-23 Honeywell International Inc. Event-driven DMA controller

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JPH0877347A (en) * 1994-03-08 1996-03-22 Texas Instr Inc <Ti> Data processor for image/graphics processing and its operating method
JPH08153032A (en) * 1994-11-29 1996-06-11 Matsushita Electric Ind Co Ltd Data look-ahead buffer method via network
JPH08297605A (en) * 1995-04-26 1996-11-12 Hitachi Ltd Data processor and system using the same
US6239810B1 (en) * 1995-11-22 2001-05-29 Nintendo Co., Ltd. High performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
JPH09325759A (en) * 1995-11-22 1997-12-16 Nintendo Co Ltd High performance low cost video game system provided with coprocessor providing high speed high efficiency 3d graphics and digital sound signals processing
JPH10222476A (en) * 1996-10-15 1998-08-21 Samsung Electron Co Ltd Mpeg audio decoding device and its decoding method
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
JP2000148695A (en) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp Geometric processing processor and floating point power calculating device and data output controller
US20020144061A1 (en) * 1998-12-31 2002-10-03 Cray Inc. Vector and scalar data cache for a vector multiprocessor
JP2001022638A (en) * 1999-07-05 2001-01-26 Hitachi Ltd Information processing system
JP2004252990A (en) * 2001-03-22 2004-09-09 Sony Computer Entertainment Inc Computer processor and processing device
JP2003178294A (en) * 2001-12-12 2003-06-27 Sony Corp Image processor and its method
US20030204673A1 (en) * 2002-04-26 2003-10-30 Suresh Venkumahanti Data prefetching apparatus in a data processing system and method therefor
US20040073771A1 (en) * 2002-10-10 2004-04-15 Yen-Kuang Chen Apparatus and method for facilitating memory data access with generic read/write patterns

Also Published As

Publication number Publication date
KR20070063580A (en) 2007-06-19
KR20100093141A (en) 2010-08-24
WO2006055546A3 (en) 2008-06-19
KR100880982B1 (en) 2009-02-03
JP2008521097A (en) 2008-06-19
KR20080080419A (en) 2008-09-03
KR101002485B1 (en) 2010-12-17
KR101030174B1 (en) 2011-04-18
KR100917067B1 (en) 2009-09-15
KR101084806B1 (en) 2011-11-21
KR20090020715A (en) 2009-02-26
KR20110011758A (en) 2011-02-08
CA2585157A1 (en) 2006-05-26
WO2006055546A9 (en) 2007-09-27
WO2006055546A2 (en) 2006-05-26
EP1812928A2 (en) 2007-08-01
EP1812928A4 (en) 2010-03-31

Similar Documents

Publication Publication Date Title
KR101061345B1 (en) Video processing
Rathnam et al. An architectural overview of the programmable multimedia processor, TM-1
US8869147B2 (en) Multi-threaded processor with deferred thread output control
JP4906734B2 (en) Video processing
KR100888369B1 (en) Picture processing engine and picture processing system
US20110249744A1 (en) Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
TWI733808B (en) Architecture for interleaved rasterization and pixel shading for virtual reality and multi-view systems
US20110227920A1 (en) Method and System For a Shader Processor With Closely-Coupled Peripherals
CN110574067A (en) Image processor I/O unit
Basoglu et al. Single‐chip processor for media applications: the MAP1000™
Undy et al. A low-cost graphics and multimedia workstation chip set
TWI327434B (en) Video processing
Lee et al. MPEG-2 decoder implementation on MAP1000A media processor using the C language
Glaskowsky Fujitsu aims media processor at DVD
Hollenbeck three VLSI parts, zyxwvutsrqpon

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090609

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120110

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4906734

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250