JP4445486B2 - Data processing system - Google Patents

Data processing system Download PDF

Info

Publication number
JP4445486B2
JP4445486B2 JP2006124134A JP2006124134A JP4445486B2 JP 4445486 B2 JP4445486 B2 JP 4445486B2 JP 2006124134 A JP2006124134 A JP 2006124134A JP 2006124134 A JP2006124134 A JP 2006124134A JP 4445486 B2 JP4445486 B2 JP 4445486B2
Authority
JP
Japan
Prior art keywords
data
data stream
instruction
processing device
controller
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
JP2006124134A
Other languages
Japanese (ja)
Other versions
JP2006313546A (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/121,185 external-priority patent/US7630388B2/en
Priority claimed from GB0510350A external-priority patent/GB0510350D0/en
Priority claimed from GBGB0520072.0A external-priority patent/GB0520072D0/en
Priority claimed from GB0604353A external-priority patent/GB2425862B/en
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2006313546A publication Critical patent/JP2006313546A/en
Application granted granted Critical
Publication of JP4445486B2 publication Critical patent/JP4445486B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理の分野に関するものである。更に特に、本発明は、1つ以上のデータストリーム上で実行されるべき操作を必要とするデータ処理システムに関するものである。   The present invention relates to the field of data processing. More particularly, the present invention relates to data processing systems that require operations to be performed on one or more data streams.

データに関する操作を実行することが可能であるデータ処理システムを提供するということが知られており、そのような操作は、双方向、すなわち入力から出力、または出力から入力のデータフローを包含し得ると共に、入力データと出力データの各々は、関連するデータフォーマットを有することができる。双方向のデータフローに関して共通に必要とされるデータストリーム操作の例は、ストリーム上の可変長コード化シンタックス要素の読み出しと同様に、データストリームのデータ位置合せ、バッファリング、先送り及び巻戻し、そしてデータストリームのマージ及び接続機能を含む。同様に、多くの場合、異なる一時的なシーケンスを有する出力のデータストリームを提供するために、すなわちデータストリームに対する命令順変更(out-of-order)アクセスを提供するために、入力の一時的なシーケンスに変更を加えることが必要とされる。実行されるべき操作を必要とするそのようなデータ処理システムの例は、既知のフォーマットに従ってコード化されたオーディオデータ、及び/またはビデオデータを含むマルチメディアデータストリームを処理するためのシステムであり、フォーマットは国際“標準”(例えば、MP3、またはMPEG)によって定義されつつある。   It is known to provide a data processing system capable of performing operations on data, and such operations may involve bi-directional, ie input to output, or output to input data flow. In addition, each of the input data and the output data can have an associated data format. Examples of commonly required data stream operations for bidirectional data flow are data alignment, buffering, forward and rewind of the data stream, as well as reading variable length coded syntax elements on the stream, It includes data stream merging and connection functions. Similarly, in order to provide an output data stream with a different temporal sequence in many cases, ie to provide out-of-order access to the data stream, It is necessary to make changes to the sequence. An example of such a data processing system that requires operations to be performed is a system for processing a multimedia data stream containing audio data and / or video data encoded according to a known format; Formats are being defined by international “standards” (eg, MP3 or MPEG).

しかしながら、これらの既知のデータ処理システムは、プログラマが、入力データストリームのどの部分が受信され、操作され、そして出力されたかを記録することのような多数のデータ処理タスクを明白に管理すること、またはデータ処理を実行するための複数の機能を有するソフトウェアライブラリを提供すると共に維持することを要求されるので、プログラマに深刻な負担を負わせる。データ処理の明白な管理も多大な時間を必要とすると共に、ソフトウェアライブラリを提供して維持することも多大な時間を必要とし、非能率的である。従って、更に効率的な方法で、入力データ及び出力データの処理と関連付けられた少なくともいくつかのタスクをプログラマから取り去るデータ処理システムが必要とされる。   However, these known data processing systems allow a programmer to explicitly manage a number of data processing tasks such as recording which parts of the input data stream have been received, manipulated and output. Alternatively, a software library having a plurality of functions for executing data processing is required to be provided and maintained, which places a serious burden on the programmer. The obvious management of data processing is also time consuming and providing and maintaining a software library is time consuming and inefficient. Accordingly, there is a need for a data processing system that removes at least some of the tasks associated with processing input and output data from the programmer in a more efficient manner.

メイン処理装置を備えるデータ処理装置において、時々、メイン処理装置に成り代わって特定のデータ処理タスクを処理するために使用され得る疎結合のコプロセッサとも言われる(それがメイン処理装置の外部にあると共に、データエンジンとメイン処理装置との間の同期化が、処理またはタスクレベルに関してのみ実行されるという意味において、疎結合される)データエンジンを提供するということが知られている。この説明において、メイン処理装置(すなわち、メインプロセッサ)という用語は、それが中央演算処理装置(CPU)であり得るか、または代わりにデータ処理装置の中の他の単純化された制御要素、例えば、単に起動を制御すると共に、その後、1つ以上のデータエンジンに全ての他のタスクを委託する制御要素であり得ると定義される。データエンジンを提供することは、タスクの全てがメイン処理装置によって処理されるデータ処理装置に関しての様々な性能改良をもたらすことができ、これらの改良は、例えば実行スピードの増加、タスクの特定のセットに関する電力消費量の減少、または要求される機能をサポートするのに必要とされるトータルのシリコン領域の減少のうちの1つ以上である。しかしながら、データストリーム処理タスクは、一般的に計算的に集約されており、データエンジンに割り当てられる時は、データエンジンのコンピュータ処理能力の大部分を消費でき、従って、メイン処理装置に成り代わって他のデータ処理タスクを実行する利用価値を減らす。   In a data processing device with a main processing unit, sometimes referred to as a loosely coupled coprocessor that can be used to process a specific data processing task on behalf of the main processing unit (it is external to the main processing unit) At the same time, it is known to provide a data engine that is loosely coupled in the sense that the synchronization between the data engine and the main processing unit is performed only on a process or task level. In this description, the term main processing unit (i.e. main processor) refers to whether it can be a central processing unit (CPU) or alternatively other simplified control elements in the data processing unit, e.g. It is defined that it can simply be a control element that controls activation and then delegates all other tasks to one or more data engines. Providing a data engine can result in various performance improvements with respect to a data processing device where all of the tasks are processed by the main processing device, such as increased execution speed, a specific set of tasks. One or more of a reduction in power consumption or a reduction in the total silicon area required to support the required functionality. However, data stream processing tasks are generally computationally intensive and, when assigned to a data engine, can consume a large portion of the data engine's computer processing power, thus impersonating the main processing unit. Reduce the utility value of performing data processing tasks.

2005年5月4日に出願された米国特許出願番号11/121,185号は、ローカルに記憶されたデータストリームに窓を提供するために使用され得るローカルなファーストインファーストアウト(First-in-First-Out:FIFO)メモリを備えるデータ処理装置について説明する。米国特許出願番号1l/121,185号の内容は、参照によってここに組み込まれる。   US patent application Ser. No. 11 / 121,185, filed May 4, 2005, is a first-in-first-out that can be used to provide a window to a locally stored data stream. A data processing apparatus including an Out (FIFO) memory will be described. The contents of US Patent Application No. 11 / 121,185 are hereby incorporated by reference.

第1の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、前記データストリーム処理装置が、前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、少なくとも1つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行するように動作可能なデータストリーム制御器とを備え、前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答するデータ処理システムを提供する。   According to a first aspect, the present invention executes a main processing device operable to execute a plurality of data processing tasks, and executes some of the plurality of data processing tasks on behalf of the main processing device. A data engine having an operable data engine core, and a data stream processing device that provides a data communication path between the main processing device and the data engine core, the data stream processing device comprising: A control interface operable to receive at least one instruction from the engine core; and at least one input data stream for receiving at least one input data stream and generating at least one output data stream including a series of data elements; At least one operation on one input data stream A data stream controller operable to perform the data stream processing unit from the data engine core to control the data stream controller to perform the at least one operation. A data processing system is provided that is responsive to at least one instruction.

入力データストリーム、及び出力データストリームの各々は、例えば、データエンジン、または(直接的なメモリアクセスのような)外部の処理から提供され得ることに注意が必要である。   Note that each of the input data stream and the output data stream can be provided from, for example, a data engine or external processing (such as direct memory access).

本発明は、データストリームの処理が、データエンジンに成り代わって入力データストリームに関する操作を実行するデータストリーム処理装置を提供することによって、更に能率的に実行され得るということを認識する。メイン処理装置によってデータエンジンに割当てられた処理タスクのサブセットが、制御インタフェースを経由してデータストリーム処理装置に委託され得るので、その効率が向上する。少なくともデータストリーム処理操作のサブセットがデータエンジンに成り代わってデータストリーム処理装置によって実行されるので、これは、データエンジンにおける計算処理の負担を減少させる。従って、他のデータ処理操作を実行するためのデータエンジンの容量が増大すると共に、データストリーム処理装置が、データエンジンと並列に処理タスクを実行することができるので、全体の計算効率が向上する。更に、いくつかの単純な処理操作は、結合されて、データストリーム処理装置によって能率的に実行され得る更に複合的な操作になり得る。データストリーム処理装置は、データストリーム内に定義されたシンタックス要素の判定及び復号と同様に、データストリームにおけるデータ位置合せ、バッファリング、巻戻しまたは先送り、そしてデータストリームの接続及びマージのような、データストリーム操作に関するサポートを提供する。このように、データストリーム処理装置は、メイン処理装置及びデータエンジンの負担を軽減するように、データ処理タスクのサブセットを実行するために使用される。効果的に、これは、データストリーム制御器の制御インタフェースが、メイン処理装置からの、もしくはデータエンジンからの更なる介入なしで、それぞれの処理を実行することが可能である状態機械と見なされ得ることを意味する。データストリーム制御器が2つ以上のインタフェースを備える装置において、各インタフェースは、関連する状態機械、及び関連する処理を備えることになると共に、特定の処理は、インタフェースの残りの他のものと関連付けられた状態機械の現在の状態によって変わる可能性がある。複数の状態機械の各々の状態に関する情報は、データストリーム制御器を経由して交換され得る。   The present invention recognizes that the processing of the data stream can be performed more efficiently by providing a data stream processing device that performs operations on the input data stream on behalf of the data engine. A subset of the processing tasks assigned to the data engine by the main processing unit can be delegated to the data stream processing unit via the control interface, thus improving its efficiency. This reduces the computational burden on the data engine since at least a subset of the data stream processing operations are performed by the data stream processing device on behalf of the data engine. Therefore, the capacity of the data engine for executing other data processing operations increases, and the data stream processing apparatus can execute processing tasks in parallel with the data engine, so that the overall calculation efficiency is improved. In addition, some simple processing operations can be combined into more complex operations that can be efficiently performed by the data stream processing device. The data stream processing unit, as well as determining and decoding syntax elements defined in the data stream, such as data alignment, buffering, rewind or forward, and data stream connection and merging in the data stream, Provides support for data stream operations. Thus, the data stream processing device is used to perform a subset of data processing tasks so as to reduce the burden on the main processing device and the data engine. Effectively, this can be viewed as a state machine in which the control interface of the data stream controller is able to perform the respective processing without further intervention from the main processing unit or from the data engine. Means that. In devices where the data stream controller comprises more than one interface, each interface will have an associated state machine and associated process, and a particular process is associated with the rest of the interface. Depending on the current state of the machine. Information regarding the state of each of the plurality of state machines may be exchanged via a data stream controller.

データストリーム処理装置は、入力データストリームに関する操作を実行するようにデータストリーム処理装置のデータ制御器を制御するために、データエンジンコアからの(制御信号のような)命令に応答する。入力データストリームに関する1つ以上の操作を実行するために、データエンジンコアからデータストリーム処理操作に命令を送信する能力は、データエンジンコアによって出力された命令を適宜定義することによって、出力データストリームの生成に包含されるいくつかのデータ処理タスクが、プログラマから取り去られることを可能にする。更に、データストリーム処理装置によって入力データストリームに関して実行される制御操作に対する命令を定義する能力は、実行され得る操作の種類において、拡張された柔軟性をプログラマに提供する。   The data stream processor responds to instructions (such as control signals) from the data engine core to control the data controller of the data stream processor to perform operations on the input data stream. The ability to send instructions from the data engine core to a data stream processing operation to perform one or more operations on the input data stream is defined by appropriately defining the instructions output by the data engine core. Several data processing tasks involved in the generation can be removed from the programmer. Furthermore, the ability to define instructions for control operations performed on the input data stream by the data stream processing device provides the programmer with expanded flexibility in the types of operations that can be performed.

メイン処理装置は、様々な形式をとることができる。例えば、それは中央演算処理装置(CPU)であり得るか、または代わりにデータ処理装置の中の他の単純化された制御要素、例えば、単に起動を制御すると共に、その後、1つ以上のデータエンジンに全ての他のタスクを委託する制御要素であり得る。   The main processing unit can take a variety of forms. For example, it can be a central processing unit (CPU) or alternatively other simplified control elements in the data processing unit, such as simply controlling activation and then one or more data engines Can be a control element that delegates all other tasks to

一実施例において、データストリーム処理装置は、少なくとも1つの入力データストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能である。データストリーム処理装置は、少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する。基準点を保存するというタスクがデータストリーム制御器によって実行されるので、これは、入力データストリームの中のデータ要素に対するアクセスを単純化する。これは、データエンジンコアによりデータストリーム処理装置に対して出力された命令の複雑さを減少させる。   In one embodiment, the data stream processing device is operable to store management information including at least one reference position in at least one input data stream. The data stream processing device executes at least one instruction based on the at least one reference position. This simplifies access to data elements in the input data stream, as the task of saving the reference point is performed by the data stream controller. This reduces the complexity of the instructions output to the data stream processing device by the data engine core.

一実施例において、データエンジンコアによって実行されるデータ処理タスクのいくつかは、データエンジンコアによって実行可能な命令セットの少なくとも1つの命令を含む一連の命令を有する。データエンジンコアは、少なくとも1つの命令の実行に関して、少なくとも1つの命令をデータストリーム処理装置の制御インタフェースに対して出力するように動作可能である。データエンジンコアによって実行されるべき処理タスクが命令セットの命令に容易に割り当てられ得るので、これは、データストリーム処理装置とデータエンジンコアとの双方向の情報授受(双方向通信)を単純化する。   In one embodiment, some of the data processing tasks performed by the data engine core have a series of instructions including at least one instruction of an instruction set executable by the data engine core. The data engine core is operable to output at least one instruction to the control interface of the data stream processing device with respect to execution of the at least one instruction. This simplifies bi-directional information exchange (bi-directional communication) between the data stream processing device and the data engine core, since the processing tasks to be executed by the data engine core can be easily assigned to the instructions of the instruction set. .

一実施例において、入力データストリームは、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、命令セットは、規則の所定のセットに基づいて定義される。規則のセットは、例えば、MP3標準のようなオーディオデータ標準、またはMPEG標準のようなビデオデータ標準と一致するであろう。特定のマルチメディアデータストリームを処理する場合に典型的に実行される処理操作のセットを実行するべく具体的に調整されるように、命令セットを定義する能力は、処理操作の特別なセットに関する処理性能を微調整するための多くの柔軟性を提供する。   In one embodiment, the input data stream is a multimedia data stream structured according to a predetermined set of rules, and the instruction set is defined based on the predetermined set of rules. The set of rules will match, for example, an audio data standard such as the MP3 standard, or a video data standard such as the MPEG standard. The ability to define an instruction set so that it is specifically tailored to perform a set of processing operations typically performed when processing a particular multimedia data stream has the ability to process a special set of processing operations. Provides a lot of flexibility to fine tune performance.

一実施例において、データストリーム処理装置は、データストリーム制御器による入力データストリームの受信に関して、もしくは出力データストリーム要素の送信に関して、少なくとも1つの命令に従って非同期的に動作するように動作可能である。これは、入力データストリーム、または出力データストリームに関して処理タスクを実行する場合に、データストリームの到着、もしくは出発における変化量に適合する柔軟性を提供する。   In one embodiment, the data stream processing device is operable to operate asynchronously according to at least one instruction with respect to receiving an input data stream by a data stream controller or with respect to transmitting an output data stream element. This provides flexibility to adapt to changes in the arrival or departure of the data stream when performing processing tasks on the input data stream or the output data stream.

一実施例において、データストリーム制御器は、データエンジン、及び構成情報を備えるメイン処理装置のうちの少なくとも1つによって構成可能である。データストリーム処理装置が、ランタイム中に、メイン処理装置かデータエンジンのいずれかからのこの構成情報を要求する必要性がないので、これは、メイン処理装置からの自立性の拡張されたレベルをデータストリーム処理装置に提供する。   In one embodiment, the data stream controller is configurable by at least one of a data engine and a main processing device comprising configuration information. Since the data stream processing unit does not need to request this configuration information from either the main processing unit or the data engine during runtime, this data extends an extended level of independence from the main processing unit. Provided to a stream processing apparatus.

一実施例において、データストリーム制御器は、少なくとも1つの操作を実行しているとき、少なくとも1つのデータストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である。しばらく後での出力のためにデータの一部分がバッファされ得るので、これは、データエンジンにデータストリームに対する命令順変更アクセスを生じさせる効率的な方法を提供する。   In one embodiment, the data stream controller is operable to selectively buffer at least a portion of the at least one data stream within a connected buffering resource when performing at least one operation. is there. This provides an efficient way for the data engine to cause instruction reordering access to the data stream, since a portion of the data can be buffered for later output.

一実施例において、データストリーム処理装置は、バッファリングリソースから選択的にデータを出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、データストリーム制御器は、少なくとも1つの出力データストリームを生成するために、マルチプレクサの出力を制御するように動作可能である。データの選択された部分が、データストリーム処理装置からの命令に応答して、バッファリングに容易に割り当てられ得るので、このシンプルな回路構成は、データフローの効率的で、それにも拘らず効果的な管理を可能にする。   In one embodiment, the data stream processing apparatus comprises a data output logic circuit having a multiplexer operable to selectively output data from buffering resources, and the data stream controller includes at least one output data stream. Is operable to control the output of the multiplexer. This simple circuit configuration is efficient and nevertheless effective for data flow because selected portions of data can be easily assigned to buffering in response to instructions from the data stream processor. Management is possible.

一実施例において、接続されたバッファリングリソースは、ソフトウェアFIFOである。いくつかのそのような実施例において、メモリ領域は、パーティションポインタによって定義される一方、データへのアクセスは、少なくとも1つのヘッドポインタ、及び少なくとも1つのテールポインタの状態によって制御される。ソフトウェアFIFOの使用は、バッファされたデータに対する更に急速で、効率的なアクセスを可能にすると共に、データストリーム処理装置が、ヘッドポインタ、及びテールポインタを単に管理することによってバッファリングリソースを管理するのを容易にする。   In one embodiment, the connected buffering resource is a software FIFO. In some such embodiments, the memory area is defined by a partition pointer, while access to data is controlled by the state of at least one head pointer and at least one tail pointer. The use of a software FIFO allows for more rapid and efficient access to buffered data and allows the data stream processor to manage buffering resources by simply managing the head and tail pointers. To make it easier.

一実施例において、データストリーム制御器は、少なくとも1つの入力データストリームのどの部分が接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である。従って、プログラマは、どこに要求されたデータ部分が記憶されるかという知識を持っている必要がなく、より正確に言うと、プログラマは、データストリームの特定の部分を単に要求し得ると共に、データストリーム処理装置は、データがバッファから読み出される必要があるかどうかを独立して決定し得る。   In one embodiment, the data stream controller is operable to save a history of which portions of the at least one input data stream are currently stored in the connected buffering resource. Thus, the programmer need not have knowledge of where the requested data portion is stored, more precisely, the programmer can simply request a particular portion of the data stream and the data stream The processing unit can independently determine whether data needs to be read from the buffer.

一実施例において、構成情報は、データストリーム制御器と接続されたバッファリングリソースのサイズを含む。これは、データストリーム処理装置が、更に自立的にバッファリング操作を管理することを可能にすると共に、プログラマ、もしくはデータエンジンが、バッファ占有レベルを記録する必要性を取り除く。   In one embodiment, the configuration information includes the size of buffering resources connected to the data stream controller. This allows the data stream processor to manage buffering operations more autonomously, and removes the need for the programmer or data engine to record the buffer occupancy level.

一実施例において、データストリーム処理装置は、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、処理モジュールは、データプロセッサコアによって実行可能な命令セットの少なくとも1つの命令の実行に応答して、処理タスクを実行するように動作可能である。処理インタフェースが、データストリーム処理装置から入力/出力データ要素に対する更なるデータフロー経路を提供するので、これは、データストリーム処理装置の機能性を拡張する。処理モジュールのアクセス可能性によって利用可能にされた処理リソースは、特に効率的方法における復号化のような専門のデータ処理機能を実行するために使用され得る。   In one embodiment, the data stream processing device comprises a processing interface that provides a data path to the processing module, and the processing module is responsive to execution of at least one instruction of an instruction set executable by the data processor core; It is operable to execute a processing task. This extends the functionality of the data stream processor as the processing interface provides additional data flow paths from the data stream processor to the input / output data elements. The processing resources made available by the accessibility of the processing module can be used to perform specialized data processing functions such as decryption, particularly in an efficient manner.

一実施例において、データエンジン、及びメイン処理装置のうちの少なくとも1つによってデータストリーム処理装置に供給された構成情報は、少なくとも1つの処理リソースの特性を含む。これは、最初の構成操作の後で、データストリーム処理装置の自立性を増加させ、データストリーム機能装置からの、データストリーム処理タスクを実行する命令に従うためにどの追加の処理リソースがそれに利用可能であるかを決定するために、それはメイン処理装置を参照する必要性がない。   In one embodiment, the configuration information provided to the data stream processing device by at least one of the data engine and the main processing device includes characteristics of at least one processing resource. This increases the autonomy of the data stream processing device after the initial configuration operation and what additional processing resources are available to it to follow the instructions to perform the data stream processing task from the data stream functional device. It does not need to reference the main processing unit to determine if it is.

一実施例において、データエンジン、及びメイン処理装置のうちの少なくとも1つによってデータストリーム処理装置に提供された構成情報は、データストリーム制御器と接続されたバッファリングリソースのスタート地点、及びエンド地点を含む。更に、これは、データストリーム操作を実行する際のデータストリーム処理装置の自立性を増加する。   In one embodiment, the configuration information provided to the data stream processing device by at least one of the data engine and the main processing device includes a start point and an end point of a buffering resource connected to the data stream controller. Including. In addition, this increases the autonomy of the data stream processing device when performing data stream operations.

一実施例において、少なくとも1つの入力データストリームは、入力の一時的なシーケンスに順序よく配置された複数のデータ部分を含むと共に、少なくとも1つの出力データストリームは、入力の一時的なシーケンスと異なる出力の一時的なシーケンスに順序よく配置された、入力の一時的なシーケンスの複数のデータ部分を含む。これは、一定ビットレート(Constant Bit-Rate:CBR)オーディオ符号化アルゴリズムのようなアプリケーションのための平凡なデータ操作動作である、入力データストリームに対する命令順変更アクセスを提供する。   In one embodiment, the at least one input data stream includes a plurality of data portions arranged in order in a temporary sequence of inputs, and the at least one output data stream has a different output than the temporary sequence of inputs. It includes a plurality of data portions of a temporary sequence of inputs arranged in order in the temporary sequence. This provides instruction reordering access to the input data stream, which is a trivial data manipulation operation for applications such as Constant Bit-Rate (CBR) audio coding algorithms.

一実施例において、データエンジンコアによって実行可能な命令セットの少なくとも1つの命令は、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである。このように命令を分類することは、異常終了操作が条件付き応答命令と関連付けられるように規定することによって、更に容易に計算処理のデッドロックが回避されることを可能にする。   In one embodiment, at least one instruction of the instruction set executable by the data engine core is either an instruction with a conditional response or an instruction with an unconditional response. Classifying instructions in this way allows calculation processing deadlocks to be more easily avoided by providing that abnormal termination operations are associated with conditional response instructions.

一実施例において、少なくとも1つの命令は、データストリーム機能装置によって出力された少なくとも1つの命令に応答してデータストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、それぞれの処理は、データストリーム制御器によって維持される、関連する状態機械を備える。所定の状態を有するデータストリーム処理装置によって実行される計算の処理を結び付けることによって、データストリーム処理装置が、その処理タスクと関連した状態にある時間の間、その制御処理の性能を排除し、特定の処理タスクの完了を危うくする特定の制御処理を容易に抑制することが可能である。データストリーム制御器のそれぞれの状態として処理タスクをモデル化することは、同様に、実行されたデータ操作をデータストリーム処理装置が記録することを可能にさせる効率的な方法である。   In one embodiment, the at least one instruction corresponds to a respective process to be performed by the data stream controller in response to the at least one instruction output by the data stream functional unit, and each process is a data It has an associated state machine maintained by the stream controller. By combining the processing of calculations performed by a data stream processing device having a given state, the performance of the control processing is eliminated and identified during the time that the data stream processing device is in a state associated with its processing task. It is possible to easily suppress specific control processing that jeopardizes completion of the processing task. Modeling a processing task as each state of the data stream controller is also an efficient way to allow the data stream processing device to record the data operations performed.

一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、選択的に少なくとも1つの入力データストリームのデータ要素をバッファさせるように動作可能なバッファリング命令を含む。バッファリングは、命令順変更アクセス及びデータストリームの接続に関して頻繁に実行されるタスクであり、明示的なバッファリング命令の提供は、効率的なデータ操作を可能にする。   In one embodiment, the instruction set executable by the data engine core includes buffering instructions operable to cause the data stream controller to selectively buffer data elements of at least one input data stream. Buffering is a task that is frequently performed with respect to instruction reordering access and data stream connection, and the provision of explicit buffering instructions allows efficient data manipulation.

一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、バッファリングリソースから少なくとも1つの入力データストリームの少なくとも1つのデータ要素を読み出させると共に、少なくとも1つの出力データストリームに対して少なくとも1つのデータ要素を出力させるように動作可能なデータ読み出し命令を含む。これは、どこにバッファされたデータ要素が実際に記憶されるかをプログラマが正確に指定する必要性なしで、そしてデータストリームに関する操作を行うためにプログラマによって考案されたプログラムコード内に物理的なデータ位置に関する情報を保存するオーバーヘッドなしで、バッファされたデータ要素に対するプログラマによるアクセスを容易にする。   In one embodiment, the instruction set executable by the data engine core causes the data stream controller to read at least one data element of at least one input data stream from the buffering resource and at least one output data stream. Includes a data read instruction operable to cause at least one data element to be output. This is done without the need for the programmer to specify exactly where the buffered data elements are actually stored, and in the program code devised by the programmer to perform operations on the data stream. Facilitates programmer access to buffered data elements without the overhead of storing location information.

一実施例において、管理情報は、データストリーム制御器によって少なくとも1つの出力データストリームに対して次に供給されるべき、少なくとも1つの入力データストリームのうちの1つにおけるデータを示す少なくとも現在の出力位置を含む。これは、既にどのデータが出力されたかを記録するプログラマの負担を軽減すると共に、データストリームのデータにアクセスするためにデータエンジンに供給されなければならない命令を単純化する。   In one embodiment, the management information is at least a current output position indicating data in one of the at least one input data stream to be subsequently supplied to the at least one output data stream by the data stream controller. including. This alleviates the burden on the programmer to record what data has already been output and simplifies the instructions that must be supplied to the data engine to access the data stream data.

一実施例において、データエンジンコアによって実行可能な命令セットは、対応する入力データストリームと関連付けられた入力の一時的なシーケンスにおける以前の地点のデータ要素と現在の出力位置が対応するように、現在の出力位置を変更させるように動作可能な後退(back step)命令を含む。これは、入力データストリームに対する命令順変更アクセスを容易にする。   In one embodiment, the instruction set executable by the data engine core is such that the current output position corresponds to the data element at the previous point in the temporary sequence of inputs associated with the corresponding input data stream. Includes a back step command operable to change the output position. This facilitates instruction order change access to the input data stream.

一実施例において、管理情報は、少なくとも1つの入力データストリームのどのデータ要素がバッファリングリソースに記憶されたかを示す履歴、及び少なくとも1つの入力データストリームのどのデータ要素がデータストリーム制御器によって受信されたかを示す履歴のうちの少なくとも1つを含む。これは、上述のデータ管理タスクの1つ以上がデータストリーム制御器によって独立して管理され得ると共に、これらの管理タスクの複雑さが、プログラマに容易に隠され得ることを意味する。   In one embodiment, the management information includes a history indicating which data elements of at least one input data stream are stored in the buffering resource, and which data elements of at least one input data stream are received by the data stream controller. At least one of the history indicating This means that one or more of the data management tasks described above can be managed independently by the data stream controller, and the complexity of these management tasks can be easily hidden from the programmer.

一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、前記データエンジンからのデータを少なくとも1つの出力データストリームに挿入させるように動作可能なデータ挿入命令を含む。これは、データエンジンからの指定されたデータをデータストリームに挿入するための柔軟性を提供する。   In one embodiment, the instruction set executable by the data engine core includes data insertion instructions operable to cause a data stream controller to insert data from the data engine into at least one output data stream. This provides the flexibility to insert specified data from the data engine into the data stream.

一実施例において、データ処理システムは、データストリーム制御器に対する少なくとも1つの入力データストリームの供給のためのデータ通信経路をメモリアクセス制御器に直接提供するように動作可能な直接メモリアクセスインタフェースを備える。   In one embodiment, the data processing system comprises a direct memory access interface operable to provide a data communication path directly to the memory access controller for supply of at least one input data stream to the data stream controller.

そのような一実施例において、構成情報は、直接メモリアクセス制御器の少なくとも1つの特性を含む。メイン処理装置を参照することなくデータに対するアクセスが獲得され得るので、これは、操作がより効率的に実行されるべきデータストリームに対するアクセスを実行する。そのような一実施例において、メイン処理装置によってデータストリーム処理装置に供給された構成情報は、DMA制御器の少なくとも1つの特性を含む。これは、データストリーム制御器が、入力データストリームに対するアクセスを更に容易に独立して管理し得ると共に、それがメイン処理装置の処理負担を減少させると共に、それによって効率を向上させることを意味する。   In one such embodiment, the configuration information includes at least one characteristic of the direct memory access controller. This performs access to the data stream where the operation is to be performed more efficiently since access to the data can be obtained without reference to the main processing unit. In one such embodiment, the configuration information provided by the main processing device to the data stream processing device includes at least one characteristic of the DMA controller. This means that the data stream controller can more easily and independently manage access to the input data stream, which reduces the processing burden on the main processing unit and thereby increases efficiency.

一実施例において、データストリーム処理装置は、データストリーム制御器が記憶されたデータ要素を少なくとも1つの出力データストリームに供給する前に、少なくとも1つの入力データストリームのデータ要素を一時的に記憶するためのデータ入力レジスタを備える。入力データ要素のローカルなバッファリングは、着信データの到着の一連のレートに即応するために、データストリーム処理装置の中でいくつかの柔軟性を提供すると共に、着信データストリームのどのデータ要素が既に受信されたかを記録することのようなデータ管理動作を促進する。   In one embodiment, the data stream processing device temporarily stores data elements of at least one input data stream before the data stream controller provides the stored data elements to the at least one output data stream. Data input register. Local buffering of input data elements provides some flexibility within the data stream processing device to respond to a series of rates of arrival of incoming data, and which data elements of the incoming data stream are already Facilitates data management operations such as recording what has been received.

一実施例において、前記データエンジンコアによって実行可能な命令セットは、カウント設定命令と関連付けられた命令が、データエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む。カウント設定命令の実行の後で、データストリーム処理装置は、データ要素、またはシンタックス要素に関する要求を実行し続けることになる。しかしながら、データストリーム処理装置は、データの更なる要求に関係なくデータポインタがこの上限に留まるように、データストリームポインタ値がセットされた上限を越えて進むことを妨げることになる。データポインタが上限に達した後で出力されるあらゆるデータ要素要求信号、またはデータポインタがこの上限を越えなければならないことにつながるであろうデータ要素要求信号は、構成可能なエラーコードか、もしくは固定したエラーコード(すなわち、ゼロ)、及びデータストリーム処理装置によって維持される管理情報の一部と対応する状態レジスタにおけるビットの設定のどちらも引き起こすことになる。データストリーム処理装置は、(i)新しい値によってカウント設定命令を再発行する、(ii)リセット命令を出力する、あるいは(iii)特別なコード(すなわち、−1)によってカウント設定命令を発行することにより、上限に到達した最終状態から解除され得る。   In one embodiment, the instruction set executable by the data engine core relates to the state of the data pointer at the moment the instruction associated with the set count instruction is transmitted from the data engine core to the data stream processing device. And a count setting instruction operable to instruct the data stream processing apparatus to set an upper limit of a data pointer state. After execution of the count setting instruction, the data stream processing device will continue to execute requests for data elements, or syntax elements. However, the data stream processing device will prevent the data stream pointer value from proceeding beyond the set upper limit so that the data pointer remains at this upper limit regardless of further requests for data. Any data element request signal that is output after the data pointer reaches the upper limit, or a data element request signal that would lead to the data pointer must exceed this upper limit, is a configurable error code or fixed Error code (i.e., zero) and the setting of bits in the status register corresponding to some of the management information maintained by the data stream processor. The data stream processing device (i) reissues the count setting instruction with a new value, (ii) outputs a reset instruction, or (iii) issues a count setting instruction with a special code (ie -1) Thus, the final state that has reached the upper limit can be released.

データストリーム処理装置が、データを伴うデータ通信経路を有する別個の存在として提供され得るが、一実施例において、データストリーム処理装置は、データエンジンに少なくとも一部組み込まれる。このように、データストリーム処理装置の選択的な部分は、データエンジンに移動され得る。例えば、データストリーム処理装置のデータアクセスレジスタの一部分であるバレルシフターは、データエンジンの算術論理演算装置(arithmetic logic unit:ALU)のバレルシフターと結合されるであろう。   Although the data stream processing device may be provided as a separate entity having a data communication path with data, in one embodiment, the data stream processing device is at least partially integrated into the data engine. In this way, selective portions of the data stream processing device can be moved to the data engine. For example, a barrel shifter that is part of a data access register of a data stream processor may be combined with a data engine arithmetic logic unit (ALU) barrel shifter.

第2の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンとの間のデータ通信経路を提供するためのデータストリーム処理装置を提供すると共に、前記データストリーム処理装置は、前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、少なくとも1つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行するように動作可能なデータストリーム制御器とを備え、前記データストリーム処理装置は、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答する。   According to a second aspect, the present invention executes a main processing device operable to execute a plurality of data processing tasks, and executes some of the plurality of data processing tasks on behalf of the main processing device. And a data stream processing device for providing a data communication path to and from a data engine having a data engine core operable so that the data stream processing device receives at least one instruction from the data engine core. A control interface operable to receive and at least one input data stream to receive at least one input data stream and to generate at least one output data stream that includes a series of data elements. Data operable to perform one operation And a stream controller, said data stream processing device, for controlling said data stream controller to perform said at least one operation, responsive to said at least one instruction from the data engine core.

第3の特徴によれば、本発明は、複数のデータ処理タスクをメイン処理装置に割当てる処理と、データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、前記データエンジンコアからの少なくとも1つの命令を、前記データストリーム処理装置において受信する処理と、少なくとも1つの入力データストリームを、前記データストリーム処理装置のデータストリーム制御器において受信する処理と、一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行する処理とを含み、前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答するデータ処理方法を提供する。   According to a third aspect, the present invention uses the process of assigning a plurality of data processing tasks to a main processing device and a data engine having a data engine core, and uses the data processing on behalf of the main processing device. A process that performs some of the processing tasks, a process that uses a data stream processing device to provide a data communication path between the main processing device and the data engine core, and at least from the data engine core A process for receiving an instruction at the data stream processor, a process for receiving at least one input data stream at a data stream controller of the data stream processor, and at least one output comprising a series of data elements To generate the data stream, the at least one input data Performing at least one operation on the data stream, wherein the data stream processing unit from the data engine core to control the data stream controller to perform the at least one operation. A data processing method is provided that is responsive to at least one instruction.

第4の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、前記データストリーム処理装置が、前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、少なくとも1つのデータストリームに対する第1のインタフェースと、一連のデータ要素を含む少なくとも1つのデータ要素ストリームに対する第2のインタフェースとを有すると共に、前記第1のインタフェースと前記第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行するように動作可能であるデータストリーム制御器とを備え、前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答するデータ処理システムを提供する。   According to a fourth aspect, the present invention provides a main processing device operable to execute a plurality of data processing tasks, and executes some of the plurality of data processing tasks on behalf of the main processing device. A data engine having an operable data engine core, and a data stream processing device that provides a data communication path between the main processing device and the data engine core, the data stream processing device comprising: A control interface operable to receive at least one instruction from the engine core; a first interface for at least one data stream; and a second interface for at least one data element stream comprising a series of data elements. And having the first interface and the A data stream controller operable to perform at least one operation for managing data transfer between the two interfaces, wherein the data stream processing device performs the at least one operation A data processing system responsive to the at least one instruction from the data engine core to control the data stream controller.

第5の特徴によれば、本発明は、メイン処理装置とデータエンジンコアとの間のデータ通信経路を提供するためのデータストリーム処理装置を提供すると共に、前記データストリーム処理装置は、前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、少なくとも1つのデータストリームに対する第1のインタフェースと、一連のデータ要素を含む少なくとも1つのデータ要素ストリームに対する第2のインタフェースとを有すると共に、前記第1のインタフェースと前記第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行するように動作可能であるデータストリーム制御器とを備え、前記データストリーム処理装置は、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答する。   According to a fifth aspect, the present invention provides a data stream processing device for providing a data communication path between a main processing device and a data engine core, and the data stream processing device comprises the data engine. A control interface operable to receive at least one instruction from the core; a first interface for at least one data stream; and a second interface for at least one data element stream including a series of data elements. And a data stream controller operable to perform at least one operation for managing data transfer between the first interface and the second interface, the data stream processing device Performs the at least one operation To control the data stream controller to so that, responsive to said at least one instruction from the data engine core.

本発明に基づくデータストリーム処理装置の実施例が、データ処理システムに関して上述された関連した任意の特徴のうちのどれでも1つ以上を含むかもしれないということが認識されることになる。   It will be appreciated that embodiments of the data stream processing apparatus according to the present invention may include one or more of any of the related features described above with respect to the data processing system.

第6の特徴によれば、本発明は、複数のデータ処理タスクをメイン処理装置に割当てる処理と、データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、前記データエンジンコアからの少なくとも1つの命令を、前記データストリーム処理装置において受信する処理と、少なくとも1つのデータストリームに対する第1のインタフェースと、データストリーム制御器の少なくとも1つのデータ要素ストリームに対する第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行する処理とを含み、前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答するデータ処理方法を提供する。   According to a sixth aspect, the present invention uses the process of assigning a plurality of data processing tasks to a main processing device and a data engine having a data engine core, and uses the data processing on behalf of the main processing device. A process that performs some of the processing tasks, a process that uses a data stream processing device to provide a data communication path between the main processing device and the data engine core, and at least from the data engine core Data transfer between processing to receive one instruction at the data stream processing device, a first interface for at least one data stream, and a second interface for at least one data element stream of the data stream controller A process that performs at least one operation for managing A data processing method in which the data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation. provide.

データ要素ストリームは、データストリーム処理装置が接続されたデータエンジンコアの命令セット構造の範囲において意味のある“値”のストリームであり、すなわちそれに関する操作が命令、及びリソースを使用することによって実行され得る要素である。データ要素は、1つ以上のビットから構成され得ると共に、一実施例において、データ要素は、標準によって定義されたシンタックス要素を含むことができる。シンタックス要素のそのような1つの例は、ハフマンワード(Huffman word)であろう。   A data element stream is a stream of “values” that is meaningful in the scope of the instruction set structure of the data engine core to which the data stream processing device is connected, that is, operations related thereto are executed by using instructions and resources. It is an element to get A data element can be composed of one or more bits, and in one embodiment, a data element can include a syntax element defined by the standard. One such example of a syntax element would be a Huffman word.

シンタックス要素は、IS0-IEC 11172-3 MPEG 1 audio、IS0-IEC 13818-3 MPEG 2 audio、IS0-IEC 13818-7 MPEG 2、AAC audio、IS0-IEC 14496-3 MPEG-4 MC twinVQ audioや、IS0-IEC 11172-2 MPEG 1 video、IS0-IEC 13818-2 MPEG 2 video、IS0-IEC 14496-2 MPEG-4 video、H.261 , H.262, H.263, H.264 video 及びVCIのような多くの異なる国際標準のうちのいずれにでも従って定義されるように構造化され得る。   The syntax elements are IS0-IEC 11172-3 MPEG 1 audio, IS0-IEC 13818-3 MPEG 2 audio, IS0-IEC 13818-7 MPEG 2, AAC audio, IS0-IEC 14496-3 MPEG-4 MC twinVQ audio, , IS0-IEC 11172-2 MPEG 1 video, IS0-IEC 13818-2 MPEG 2 video, IS0-IEC 14496-2 MPEG-4 video, H.261, H.262, H.263, H.264 video and VCI Can be structured as defined according to any of a number of different international standards.

データストリームは、データエンジンを囲むサブシステム層(データストリーム処理装置はその一部分である)において発見されたハードウェア装置の物理的構造、またはサブシステムを囲む構造の範囲において意味のある“パターン”のストリームである。例えば、それらのパターンは、シンタックス要素よりむしろ、バスを横断して転送されるか、もしくはメモリに記憶されるであろうデータ部分(すなわち、数量または原子の単位)を含む。データストリームは、データ要素ストリームを含むデータの一部分が提供する、データの異なって定義された部分から構成される。   The data stream is a “pattern” that is meaningful in the physical structure of the hardware device found in the subsystem layer surrounding the data engine (the data stream processing device is part of it), or in the scope of the structure surrounding the subsystem. It is a stream. For example, the patterns include data portions (ie units of quantities or atoms) that will be transferred across the bus or stored in memory, rather than syntax elements. A data stream consists of differently defined portions of data provided by a portion of data that includes a data element stream.

本発明の上述の目的、及び他の目的、特徴、そして利点は、添付図面に関連して読まれるべきである、実例となる実施例の以下の詳細な記述から明白になる。   The above objects and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments, which should be read in conjunction with the accompanying drawings.

図1は、データ処理システムを概略的に説明する。システムは、メイン処理装置110と、メモリ120と、直接メモリアクセス(DMA)制御器130と、データエンジンコア142を有するデータエンジン140と、データストリーム処理装置150と、そしてシステムバス160とを備える。   FIG. 1 schematically illustrates a data processing system. The system includes a main processing unit 110, a memory 120, a direct memory access (DMA) controller 130, a data engine 140 having a data engine core 142, a data stream processing unit 150, and a system bus 160.

データストリーム処理装置150は、データエンジン140とシステムバス160との間に位置すると共に、データエンジンコア142の制御下にある処理タスクを実行するように動作可能である。データエンジン140のデータエンジンコア142は、メイン処理装置110に成り代わって処理タスクのサブセットを実行するように構成されると共に、疎結合のコプロセッサであると考えられ得る。データエンジンコア142は、それがメイン処理装置110と一緒に集積化されないと共に、データエンジンコア142、及びメイン処理装置110の間の同期化が、処理またはタスクレベルでのみ実行されるという意味において、疎結合される。この装置において、データエンジンコア142は、メイン処理装置110によって共有されるいくつかのリソースへのアクセスを有している。特に、DMA制御器130、及びメモリ120に対するアクセスは、共有される。   The data stream processing unit 150 is located between the data engine 140 and the system bus 160 and is operable to perform processing tasks that are under the control of the data engine core 142. The data engine core 142 of the data engine 140 is configured to perform a subset of processing tasks on behalf of the main processing unit 110 and may be considered a loosely coupled coprocessor. Data engine core 142 is in the sense that it is not integrated with main processor 110 and that synchronization between data engine core 142 and main processor 110 is performed only at the process or task level. Loosely coupled. In this device, the data engine core 142 has access to several resources shared by the main processing device 110. In particular, access to the DMA controller 130 and the memory 120 is shared.

データエンジンコア142は、メイン処理装置110に成り代わって命令のセットを実行するように動作可能であると共に、少なくともプログラム命令のセットのサブセットの実行に関して、それがデータストリーム処理装置150に命令する少なくとも1つの命令(例えば、制御信号)を生成するように動作可能である。この命令に応答して、データストリーム処理装置150は、1つ以上のデータストリーム処理タスクを実行するように制御される。データストリーム処理装置150は、バス160を経由すると共に、DMA制御器の制御下で、メモリ120から1つ以上の入力データストリームを受信するように構成可能である。   The data engine core 142 is operable to execute a set of instructions on behalf of the main processing unit 110 and at least instruct it to the data stream processing unit 150 with respect to execution of a subset of the set of program instructions. It is operable to generate a single instruction (eg, a control signal). In response to this instruction, the data stream processing device 150 is controlled to perform one or more data stream processing tasks. The data stream processing device 150 can be configured to receive one or more input data streams from the memory 120 via the bus 160 and under the control of the DMA controller.

データストリーム処理装置150は、1つ以上の出力データストリームを生成するために、入力データストリームに関して操作を実行するように動作可能である。これらのデータストリーム操作を実行するために、データストリーム処理装置150は、バッファメモリに対するアクセスを有する(図示せず)。特にこの装置において、バッファメモリは、メモリ120の一部分を構成する。代替装置において、バッファメモリは、データストリーム処理装置150の中に局所的に提供される。データストリーム処理装置150によって実行される操作は、例えば、入力データストリームに対する命令順変更アクセスを可能にするか、または単一の出力データストリームを生成するために、少なくとも2つの入力データストリームの一部分の接続を可能にする。データストリーム処理装置150は、例えば、バッファサイズと位置、バッファメモリに関するスタートアドレスとエンドアドレス、及びDMA制御器130の特性のような構成情報を有するメイン処理装置110によって構成可能である。   Data stream processor 150 is operable to perform operations on the input data stream to generate one or more output data streams. In order to perform these data stream operations, the data stream processor 150 has access to a buffer memory (not shown). Particularly in this device, the buffer memory forms part of the memory 120. In an alternative device, the buffer memory is provided locally in the data stream processing device 150. The operations performed by the data stream processing unit 150 may be part of at least two input data streams, for example to enable instruction reordering access to the input data streams or to generate a single output data stream. Enable connection. The data stream processing device 150 can be configured by the main processing device 110 having configuration information such as buffer size and position, start address and end address for the buffer memory, and characteristics of the DMA controller 130, for example.

図1において、データストリーム処理装置150とデータエンジン140の組み合わせは、プログラミングと集積化の両方の観点において、向上した性能と減少した複雑さを有するデータストリーム処理を提供する。データストリーム処理装置150、及びデータエンジン140は、ホストシステムからの更なる双方向の情報授受の必要性なしに、データストリームを処理することが可能であるDMAスレーブ装置として効果的に機能する。データエンジンコア142によってデータストリーム処理タスクを実行するために提供されたアプリケーションプログラムインタフェース(Application Program Interface:API)は、ビットストリームに対する命令順変更アクセスのためのストリームバッファリング、及び巻き戻し機能と同様に、自動データ位置合せを伴う可変長ビットストリームアクセスのための機能を提供する。そのような命令順変更アクセスは、一定ビットレート(Constant Bit-Rate:CBR)オーディオ符号化アルゴリズムでは一般的である。   In FIG. 1, the combination of data stream processor 150 and data engine 140 provides data stream processing with improved performance and reduced complexity, both in terms of programming and integration. The data stream processing device 150 and the data engine 140 effectively function as a DMA slave device capable of processing a data stream without the need for further bidirectional information exchange from the host system. An application program interface (API) provided to execute a data stream processing task by the data engine core 142 is similar to stream buffering and rewinding functions for instruction order change access to a bitstream. Provides functionality for variable length bitstream access with automatic data alignment. Such instruction order change access is common in a constant bit-rate (CBR) audio encoding algorithm.

図2は、更に詳細に図1のデータエンジン140を概略的に説明する。図1において、データストリーム処理装置150は、データエンジン140の外部に提供される。しかしながら、これに代る装置において、データストリーム処理装置150は、データエンジン140の構成要素として統合され得る。これは、図2において、データストリーム処理装置150の点線によって示される。データエンジンコアは、データエンジン制御器210、及びデータストリーム機能装置220、及び複数の他の機能装置230を備える。データエンジン制御器210は、メイン処理装置110(図1参照)から、実行のためのプログラム命令を受信するように動作可能であると共に、各命令を、実行するために、データストリーム機能装置220及び複数の機能装置230のうちの適切なものに送信するように構成される。データエンジン制御器210は、データエンジンコア140の中のデータの動き、及びデータストリーム機能装置220、または他の機能装置230による実行のためのプログラム命令の発行をもたらす制御信号を出力する。これらの命令の実行は、データを使用するか、もしくはデータを生成することができる。   FIG. 2 schematically illustrates the data engine 140 of FIG. 1 in further detail. In FIG. 1, the data stream processing device 150 is provided outside the data engine 140. However, in an alternative device, the data stream processing device 150 can be integrated as a component of the data engine 140. This is indicated in FIG. 2 by the dotted line of the data stream processing device 150. The data engine core includes a data engine controller 210, a data stream function device 220, and a plurality of other function devices 230. Data engine controller 210 is operable to receive program instructions for execution from main processing unit 110 (see FIG. 1) and to execute each instruction, data stream function unit 220 and It is configured to transmit to an appropriate one of the plurality of functional devices 230. Data engine controller 210 outputs control signals that result in the movement of data in data engine core 140 and the issue of program instructions for execution by data stream functional unit 220 or other functional unit 230. Execution of these instructions can use data or generate data.

データストリーム機能装置220、及び複数の他の機能装置230は、それぞれ、メイン処理装置110に成り代わって少なくとも1つのプログラム命令を実行するように動作可能である。機能装置230のうちの異なるものは、異なる処理タスクを実行することに専念する。データストリーム機能装置220は、データストリーム処理装置150に送信される命令を生成する指示を実行するように構成される特別な種類の機能装置である。データストリーム機能装置220によってデータストリーム処理装置150に入力として供給される命令(この場合、制御信号)は、入力データストリームに対するアクセス、及び入力データストリームの操作を含むタスクを実行するように、データストリーム処理装置150を制御する。処理されるべきデータストリームの例は、圧縮され、及び/またはコード化された形式におけるビデオデータ、及びオーディオデータを含むが、それに限定されない。   Data stream functional unit 220 and a plurality of other functional units 230 are each operable to execute at least one program instruction on behalf of main processing unit 110. Different ones of the functional devices 230 are dedicated to performing different processing tasks. Data stream functional unit 220 is a special type of functional unit configured to execute instructions for generating instructions to be transmitted to data stream processing unit 150. The instructions (in this case, control signals) supplied as input to the data stream processing unit 150 by the data stream functional unit 220 perform the tasks including access to the input data stream and manipulation of the input data stream. The processing device 150 is controlled. Examples of data streams to be processed include, but are not limited to, video data and audio data in a compressed and / or coded format.

図3は、データストリーム処理装置の中のロジック回路、及び、どのようにデータストリーム処理装置150がデータエンジンコア142とインターフェイスするかを概略的に説明する。データストリーム処理装置は、構成モジュール310と、データ受信モジュール320と、バッファインタフェース330と、データストリーム制御器340と、制御インタフェース350と、そしてアクセラレータ362に対するアクセスを提供するアクセラレータインタフェース360とを備える。データ受信モジュール320は、DMAインタフェース370と通信するように構成される。バッファインタフェース330は、外部のバッファ332とのデータ通信経路を提供する。   FIG. 3 schematically illustrates the logic circuitry in the data stream processing device and how the data stream processing device 150 interfaces with the data engine core 142. The data stream processing apparatus includes a configuration module 310, a data reception module 320, a buffer interface 330, a data stream controller 340, a control interface 350, and an accelerator interface 360 that provides access to the accelerator 362. The data receiving module 320 is configured to communicate with the DMA interface 370. The buffer interface 330 provides a data communication path with the external buffer 332.

同様に、データストリーム処理装置150は、管理データを管理レコードに記憶する管理モジュール380を備えている。この実施例における管理レコードは、管理モジュール380によって局所的に記憶されるファイルであるが、しかし、代替装置において、管理レコードは、データストリーム処理装置150の外部メモリに記憶されるファイルである。管理レコードは、管理モジュール380を経由して、データストリーム制御器340によってアクセス可能である。管理データは、バッファに記憶されたデータのポインタ、及びヘッダ部分の始まりと終わりを示すマーカーデータを含むが、それに限定されない。この明細書においては、モジュールという用語、及びロジックという用語は、ハードウェア要素、ソフトウェア要素、またはそれらの組み合わせを含むことができる構成要素のことを指すために使用されることになるということに注意が必要である。   Similarly, the data stream processing device 150 includes a management module 380 that stores management data in a management record. The management record in this embodiment is a file stored locally by the management module 380, however, in an alternative device, the management record is a file stored in the external memory of the data stream processing device 150. The management record is accessible by the data stream controller 340 via the management module 380. The management data includes, but is not limited to, a pointer to data stored in the buffer and marker data indicating the beginning and end of the header portion. Note that in this specification, the terms module and logic will be used to refer to components that may include hardware elements, software elements, or combinations thereof. is required.

データ受信モジュール320は、ハンドシェイクプロトコルによってDMAインタフェース370と通信すると共に、DMAインタフェース370を経由して1つ以上の入力データストリームを受信するように動作可能である。データ受信モジュール320は、図3において、更に詳細に説明される。構成モジュール310は、バッファ332の特性、DMAインターフェイス370を経由してアクセス可能であるDMA制御器130(図1参照)の特性、及びアクセラレータインターフェイス360を経由してアクセス可能であるアクセラレータ処理モジュール362の特性を含む構成情報を有するメイン処理装置110によってプログラムされる。   The data receiving module 320 communicates with the DMA interface 370 via a handshake protocol and is operable to receive one or more input data streams via the DMA interface 370. The data receiving module 320 is described in further detail in FIG. The configuration module 310 includes the characteristics of the buffer 332, the characteristics of the DMA controller 130 (see FIG. 1) accessible via the DMA interface 370, and the accelerator processing module 362 accessible via the accelerator interface 360. Programmed by the main processor 110 having configuration information including characteristics.

そのような構成情報によりデータストリーム処理装置150の構成モジュール310をプログラムすることによって、データストリーム処理装置150によって実行されるバッファリングの実施の詳細は、プログラマから隠されることができる。これは、データストリーム処理装置150が、構成モジュール310に記憶される構成情報に基づくデータストリーム機能装置220によるプログラム命令の実行に応答して実行されたバッファリング処理を管理し得るからである。従って、データストリーム機能装置220によって実行されるプログラム命令において、そこに記憶すると共に、バッファされたデータをそこから読み出すバッファの位置を明白に明示するという要求は、取り除かれる。   By programming the configuration module 310 of the data stream processing device 150 with such configuration information, the details of the buffering implementation performed by the data stream processing device 150 can be hidden from the programmer. This is because the data stream processing device 150 can manage the buffering process executed in response to the execution of the program instruction by the data stream function device 220 based on the configuration information stored in the configuration module 310. Thus, the requirement in program instructions executed by data stream functional unit 220 to explicitly specify the location of the buffer to store and read buffered data therefrom is eliminated.

制御インタフェース350は、データストリーム機能装置220と直接的に通信できると共に、データストリーム機能装置220によって出力される制御信号を受信する。データエンジンコア142は、メイン処理装置からプログラム命令のサブセットを受信すると共に、データエンジンコア142は、それらのプログラム命令と関連付けられた処理タスクの実行に関与する。制御器210は、制御信号を生成するためにプログラム命令を実行する。制御器210は、処理タスクをデータストリーム機能装置220、及び他の機能装置230に割り当てる。それは、データストリーム機能装置220に対して、扱えるデータストリームと関連付けられた少なくともいくつかの処理タスクを割り当てることになる。特に、制御器210は、処理タスクのサブセットを実行するために、制御信号をデータストリーム機能装置220に送信する。データストリーム機能装置220は、順繰りに、制御信号をデータストリーム処理装置150の制御インタフェース350に送信する。   The control interface 350 can directly communicate with the data stream function device 220 and receives a control signal output by the data stream function device 220. Data engine core 142 receives a subset of program instructions from the main processing unit, and data engine core 142 is responsible for executing the processing tasks associated with those program instructions. The controller 210 executes program instructions to generate control signals. The controller 210 assigns processing tasks to the data stream functional device 220 and other functional devices 230. That would assign at least some processing tasks associated with the data stream that can be handled to the data stream functional unit 220. In particular, the controller 210 sends control signals to the data stream functional unit 220 to perform a subset of processing tasks. The data stream function device 220 sequentially transmits control signals to the control interface 350 of the data stream processing device 150.

データストリーム制御器340は、制御インタフェース350を経由してデータストリーム機能装置220から受信された命令に基づいて、入力データストリームに関して実行される操作を制御する。データストリーム制御器340は、入力データストリームのいくつかのデータ要素(例えば、ビット、バイト、またはワード)を、バッファ332における一時記憶のためのバッファインタフェース330に導くように動作可能である。データストリーム制御器340は、データ受信モジュール320、アクセラレータインタフェース360、バッファインタフェースロジック330、及び制御インタフェース350を含む複数のインタフェースを備えている。データストリーム制御器340は、1つ以上の出力データ要素ストリームを生成するために、1つ以上の入力データストリームに関して操作を実行することができるように、もしくは、出力データストリームを供給するために、1つ以上の入力データ要素ストリームに関して操作を実行することができるように、双方向のデータフローをサポートする。データ要素ストリームが、データストリーム処理装置150が通信しているデータエンジンコアの命令セット構造に関して意味のある値のストリーム、すなわち操作が命令及びリソースを用いて実行され得る要素であることを思い出す必要がある。データ要素の例は、国際標準によって定義されたシンタックス要素である。アクセラレータ362は、マルチメディアデータストリームのようなデータストリームのシンタックス要素を処理するように動作可能である。   Data stream controller 340 controls operations performed on the input data stream based on instructions received from data stream functional unit 220 via control interface 350. Data stream controller 340 is operable to direct several data elements (eg, bits, bytes, or words) of the input data stream to buffer interface 330 for temporary storage in buffer 332. The data stream controller 340 includes a plurality of interfaces including a data receiving module 320, an accelerator interface 360, a buffer interface logic 330, and a control interface 350. The data stream controller 340 can perform operations on one or more input data streams to generate one or more output data element streams, or provide an output data stream. Bidirectional data flow is supported so that operations can be performed on one or more input data element streams. It should be remembered that the data element stream is a meaningful value stream with respect to the instruction set structure of the data engine core with which the data stream processor 150 is communicating, ie, the elements whose operations can be performed using instructions and resources. is there. Examples of data elements are syntax elements defined by international standards. Accelerator 362 is operable to process syntax elements of a data stream, such as a multimedia data stream.

(メイン処理装置110によって実行可能な一連の命令と共に、)データストリーム機能装置220による実行のためのプログラム命令を提供するプログラマは、位置、現在の収容能力、またはバッファに供給されたデータのために使用されるべき記憶アドレスのようなバッファの特性の知識を、データストリーム処理装置150がこの点で自立的であるので、持つ必要がない。データストリーム処理装置150の自立性は、それが構成データを、バッファ332、アクセラレータ362、及びDMA制御器130のような接続されるデータ処理リソースの詳細を指定する構成モジュール310に記憶するという事実の少なくとも一部分に起因する。   Programmers that provide program instructions for execution by the data stream functional unit 220 (along with a series of instructions that can be executed by the main processing unit 110) can be used for location, current capacity, or data supplied to the buffer. There is no need to have knowledge of the characteristics of the buffer, such as the storage address to be used, because the data stream processor 150 is self-supporting in this respect. The independence of data stream processor 150 is the fact that it stores configuration data in configuration module 310 that specifies details of the connected data processing resources such as buffer 332, accelerator 362, and DMA controller 130. At least in part.

構成モジュール310は、メイン処理装置110(図1を参照)、及びバス160と接続された他の演算処理装置によってアクセス可能であるが、データエンジン140によってアクセス可能ではない。更に、データストリーム処理装置150は、管理モジュール380を経由して、データ受信モジュール340によって各入力データストリームのどれだけのデータ要素が受信されたか、各入力データストリームのどのデータ要素が現在バッファに記憶されているか、各入力データストリームのどのデータ要素が制御インタフェース350またはアクセラレータインタフェース360を経由して既に出力されたか、を記録する管理レコードを保存する。   The configuration module 310 is accessible by the main processing unit 110 (see FIG. 1) and other processing units connected to the bus 160, but is not accessible by the data engine 140. Further, the data stream processing device 150 stores how many data elements of each input data stream are received by the data receiving module 340 via the management module 380, and which data elements of each input data stream are stored in the current buffer. Or a management record that records which data elements of each input data stream have already been output via the control interface 350 or the accelerator interface 360.

アクセラレータインタフェース360は、入力/出力データ通信経路にアクセラレータ362を提供する。アクセラレータ362は、急速かつ能率的に一連の専門の処理タスクを実行するように構成される。特にこの装置において、アクセラレータは、データストリームのハフマン符号化/復号化を実行するように構成される。アクセラレータ362は、制御インタフェース350を経由して受信される、データストリーム機能装置220によって供給された命令に応答してデータストリーム符号化/復号化を実行するように動作可能である。このアクセラレータ命令(または、命令のシーケンス)に応答して、データストリーム処理装置150は、アクセラレータ362によって操作されるべきデータ要素を読み出す操作と、それらのデータ要素の符号化/復号化を実行する操作の両方を自立的に実行する。   The accelerator interface 360 provides an accelerator 362 for the input / output data communication path. The accelerator 362 is configured to perform a series of specialized processing tasks quickly and efficiently. In particular, in this apparatus, the accelerator is configured to perform Huffman encoding / decoding of the data stream. Accelerator 362 is operable to perform data stream encoding / decoding in response to instructions supplied by data stream functional unit 220 received via control interface 350. In response to this accelerator instruction (or sequence of instructions), the data stream processing device 150 reads the data elements to be manipulated by the accelerator 362 and performs the encoding / decoding of those data elements. Run both independently.

図3において示されたように、データエンジンコア142は、複数の命令を含む命令セットを実行すると共に、各命令の実行に応答して制御インタフェース350に対する制御信号を生成するように動作可能である。データエンジンコア142によって実行可能な命令セットは、以下の命令を含む。   As shown in FIG. 3, the data engine core 142 is operable to execute an instruction set that includes a plurality of instructions and to generate control signals for the control interface 350 in response to execution of each instruction. . The instruction set that can be executed by the data engine core 142 includes the following instructions.

(i)入力データストリームから指定されたデータ要素を読み出すための“getbits()”命令。
(ii)データストリーム制御器340に入力データストリームの指定されたデータ要素をバッファするように命令するための“bufferbits()”命令。
(iii)それに続く次のデータ要素が出力データストリームに既に供給された後で、事前にバッファされたデータストリームのデータ要素を読み出すことによって、データストリームのデータに対する命令順変更アクセスを得るための“backstep()”命令。
(iv)データエンジンからのデータを、データストリームに対する挿入のためのデータストリーム処理装置に挿入するように動作可能な“putbits()”命令。
(v)データストリーム処理装置150の中でデータを記録するカウンタを設定するための“setcount()”命令。
(vi)カウンタをリセットするための“rstcount()”命令。
(vii)バッファ332の深さを設定するための“setbufferdepth()”命令。
(viii)データストリームからのシンタックス要素の自立的な読み出しのための“get Huffword()”命令。シンタックス要素は、複数のデータ要素を含む可能性がある。
(ix)バッファからデータを削除するための“unbufferbits()”命令。
(x)ストリーム自身、またはビットポインタを前進させることなく、データストリームからの限られた数のビットに対するアクセスを可能にする“peakbits()”命令。
(i) A “getbits ()” instruction to read the specified data element from the input data stream.
(ii) A “bufferbits ()” instruction to instruct the data stream controller 340 to buffer specified data elements of the input data stream.
(iii) After the next data element following it has already been supplied to the output data stream, by reading the data element of the pre-buffered data stream, “ backstep () ”command.
(iv) A “putbits ()” instruction operable to insert data from the data engine into a data stream processor for insertion into the data stream.
(v) A “setcount ()” instruction for setting a counter for recording data in the data stream processing device 150.
(vi) “rstcount ()” instruction to reset the counter.
(vii) “setbufferdepth ()” instruction for setting the depth of the buffer 332.
(viii) A “get Huffword ()” instruction for autonomous reading of syntax elements from the data stream. A syntax element may contain multiple data elements.
(ix) “unbufferbits ()” command to delete data from the buffer.
(x) A “peakbits ()” instruction that allows access to the stream itself or a limited number of bits from the data stream without advancing the bit pointer.

例えば、出力に関するバッファリングは、後に“unbufferbits()”命令が続いている“putbits()”命令が後に続く“backstep()”命令を実行することによって成し遂げられ得る。   For example, buffering for output may be accomplished by executing a “backstep ()” instruction followed by a “putbits ()” instruction followed by an “unbufferbits ()” instruction.

一代替装置において、データストリーム処理装置は、1つのデータストリーム(入力または出力のいずれか)を取得すると共に、それを別の異なってフォーマットされたデータストリームに変換する基礎的な機能を実行するように動作可能である。この場合、上述のリストから必要とされるであろう唯一の命令は、入力ストリームに関する“getbits()”命令、及び出力ストリームに関する“putbits()”命令である。   In an alternative device, the data stream processing device takes one data stream (either input or output) and performs the basic function of converting it to another differently formatted data stream It is possible to operate. In this case, the only instructions that would be needed from the above list are the “getbits ()” instruction for the input stream and the “putbits ()” instruction for the output stream.

データエンジンコア142によって実行されると共に、データエンジンのデータストリーム機能装置220から制御インタフェース350を経由してデータストリーム処理装置150に対して送信された命令に帰着する指示の全ては、(a)条件付き応答命令か、(b)無条件応答命令のいずれかである。無条件応答命令(例えば、“getbits()”命令)は、内部的か、または外部的かに拘わらず、他の処理のロック状態に依存していないものである。従って、これらの命令は、戻ることを保証される。一方、条件応答命令は、ロック状態に依存していることができ、従って、対応する“abort()”命令が、デッドロックを妨げるように、これらの命令に提供される。“getbits()”命令は無条件応答命令であるが、必要とされるデータが利用可能ではない場合には停止することになる、ということに注意が必要である。   All of the instructions executed by the data engine core 142 and resulting in instructions sent from the data stream function device 220 of the data engine to the data stream processing device 150 via the control interface 350 are: Either a response command with a response or (b) an unconditional response command. An unconditional response instruction (for example, a “getbits ()” instruction) is independent of the lock state of other processes, whether internal or external. These instructions are therefore guaranteed to return. On the other hand, condition response instructions can depend on the lock state, and thus a corresponding “abort ()” instruction is provided to these instructions to prevent deadlock. Note that the “getbits ()” instruction is an unconditional response instruction, but will stop if the required data is not available.

“setcount()”命令、及び“resetcount()”命令は、データストリームアクセスを更に安全にするために、明確に提供される。例えば、“ISO.IEC 11172-3”、及び“ISO.IEC 13818-3”(MPEG1、2オーディオ)の標準において、一定の数のビットが読まれることは定義されるけれど、読まれるデータの量がデータ要素(例えば、シンタックス要素)の整数の数と一致するか、またはそれが処理ループの処理ステップの完全な数と一致するという保証は全くない。犠牲の大きい“ブレーク”命令を回避するために、“setcount()”命令は、データストリーム処理装置150が、指定された数のビットを提供すると共に、後でゼロ及び終了状態を生成することを可能にする。これが保証するのは、コードがループの終りで終了することになるということである。   The “setcount ()” and “resetcount ()” instructions are explicitly provided to make data stream access more secure. For example, in the “ISO.IEC 11172-3” and “ISO.IEC 13818-3” (MPEG1, 2 audio) standards, it is defined that a certain number of bits are read, but the amount of data read. There is no guarantee that will match the integer number of data elements (eg, syntax elements) or that it will match the full number of processing steps of the processing loop. In order to avoid the costly “break” instruction, the “setcount ()” instruction allows the data stream processing unit 150 to provide a specified number of bits and later generate zero and exit conditions. enable. This guarantees that the code will end at the end of the loop.

データストリーム処理装置150によって生成された出力データストリームは、制御インタフェース350を経由して、データエンジン140に送信される。データエンジン140によってデータストリーム処理装置150から受信されたデータは、データエンジン140におけるレジスタ(図示せず)に記憶される。   The output data stream generated by the data stream processing device 150 is transmitted to the data engine 140 via the control interface 350. Data received from the data stream processing device 150 by the data engine 140 is stored in a register (not shown) in the data engine 140.

上述の各々のプログラム命令の実行によって生成された命令信号は、制御インタフェース350を経由して、データエンジンコア142によってデータストリーム処理装置150に供給される。データエンジンコア142による各命令の実行は、データストリーム処理装置150内の処理タスクを誘発する。制御インタフェース350は、そこを経由して、自立処理(例えば、“bufferbytes()”命令、“getbits()”命令等)が開始されて終了するポートである。各自立処理は、それ自身の状態機械を備えている。   The instruction signal generated by the execution of each program instruction described above is supplied to the data stream processing device 150 by the data engine core 142 via the control interface 350. Execution of each instruction by the data engine core 142 induces a processing task in the data stream processing device 150. The control interface 350 is a port through which a self-supporting process (for example, “bufferbytes ()” instruction, “getbits ()” instruction, etc.) starts and ends. Each self-supporting process has its own state machine.

DMAインタフェース370、及びデータ受信モジュール320、もしくはバッファインタフェースロジック330は、入力データストリームからのデータの受信に応答して動作を実行するが、一方制御インタフェース350は、入力データストリームに関して操作を実行するようにデータストリーム処理装置150を制御するために、(一般的に、入力データストリームの受信に対して非同期的に)データエンジンコア142から受信される命令に応答する。従って、例えば、DMAインタフェース370は、たとえ、制御インタフェース350を経由して受信される対応する命令がないとしても、バス信号に応答するように構成される。従って、データストリーム処理装置の動作は、調整を必要とすると共に、この調整は状態機械を用いて実行される。もし“bufferbytes()”操作が、データ受信モジュール320からバッファインタフェースロジック330に対してデータが転送されつつあるようなデータストリーム処理装置150によって実行されている場合、その場合に、バッファリングが進行中である間に制御インタフェース350を経由して受信される“getbits()”命令は、バッファリングと同時に処理されることができない。バッファリングは、“getbits()”命令の受信に関係なく継続されることになる。メモリアクセスを含むバッファリングの中断は、浪費的な電力消費に帰着すると共に、同様に命令間の依存による機能的に誤った動作に帰着するであろう。状態機械は、バッファリング動作が“getbits()”命令を受信次第停止することを防止する。状態機械の使用の更なる例は、“bufferbytes()”動作と関連付けられた状態機械である。バッファリング動作の間、バッファインタフェースロジック330は、データを接続されたバッファ332に書き込むためのライトイネーブル信号を生成する。しかしながら、もしバッファリング動作が他の処理によるバッファ332の使用のために停止される場合、それはデータストリーム処理装置150によるバッファ332の使用に対して優先すると共に、それは、バッファ332に対するライトイネーブル信号が、機能停止の期間の間、高いまま維持される場合である。これは、電力のかなりの量を浪費するであろう。これを防止するために、バッファリング処理と関連付けられた状態機械は、あらゆる機能停止の期間の間、ライトイネーブル信号を下げる(低い状態にする)と共に、バッファ332が再び利用可能になるときにライトイネーブル信号を復活させるように動作可能である。   The DMA interface 370 and the data receiving module 320 or buffer interface logic 330 perform operations in response to receiving data from the input data stream, while the control interface 350 performs operations on the input data stream. In response to commands received from the data engine core 142 (generally asynchronously with respect to receiving the input data stream) to control the data stream processing device 150. Thus, for example, the DMA interface 370 is configured to respond to bus signals even if there is no corresponding command received via the control interface 350. Thus, the operation of the data stream processing device requires adjustment and this adjustment is performed using a state machine. If a “bufferbytes ()” operation is being performed by the data stream processing device 150 such that data is being transferred from the data receiving module 320 to the buffer interface logic 330, then buffering is in progress The “getbits ()” instruction received via the control interface 350 during this time cannot be processed simultaneously with buffering. Buffering will continue regardless of receipt of the “getbits ()” instruction. Interruption of buffering, including memory access, will result in wasted power consumption as well as functionally misbehavior due to inter-instruction dependencies. The state machine prevents the buffering operation from stopping upon receipt of the “getbits ()” instruction. A further example of the use of a state machine is the state machine associated with the “bufferbytes ()” operation. During the buffering operation, the buffer interface logic 330 generates a write enable signal for writing data to the connected buffer 332. However, if the buffering operation is stopped due to the use of the buffer 332 by another process, it takes precedence over the use of the buffer 332 by the data stream processor 150 and it indicates that the write enable signal for the buffer 332 is This is the case when it remains high during the period of outage. This will waste a significant amount of power. To prevent this, the state machine associated with the buffering process lowers the write enable signal during any outage period (low state) and writes when the buffer 332 becomes available again. It is operable to restore the enable signal.

制御インタフェース350は、データストリーム処理装置150の現在の状態を有効にすると共に、その上で実行される処理が、セットされ、リセットされ、保存されて復元されることを可能にする(データエンジンコア142により実行される)一組の命令をサポートする。   The control interface 350 enables the current state of the data stream processing device 150 and allows the processing performed thereon to be set, reset, saved and restored (Data Engine Core). Supports a set of instructions (executed by 142).

図4は、どのように一連のデータストリーム処理タスクが図1のデータ処理装置によって実行されるかを概略的に説明するフローチャートである。セッションがステージ410で初期化され、その結果データ処理装置が起動される。次に、ステージ420において、起動時に、それに利用可能なデータ処理リソースの特性を決定したメイン処理装置110は、バッファインタフェース330を経由して利用可能なあらゆるバッファリングリソース、及び、アクセラレータインタフェース360を経由して利用可能なあらゆる処理リソースの特性を指定するデータストリーム処理装置150の構成モジュール310(図3を参照)に、構成情報を送信する。   FIG. 4 is a flow chart that schematically illustrates how a series of data stream processing tasks are performed by the data processing apparatus of FIG. The session is initialized at stage 410 and as a result the data processing device is activated. Next, in stage 420, the main processing device 110 that has determined the characteristics of the data processing resources that can be used at the time of activation, passes through any buffering resources that can be used via the buffer interface 330 and the accelerator interface 360. The configuration information is transmitted to the configuration module 310 (see FIG. 3) of the data stream processing device 150 that specifies the characteristics of all processing resources that can be used.

構成モジュール310によって記憶される構成情報は、データエンジン140にアクセス可能ではない。一度、構成モジュールがステージ420において構成されたならば、データエンジンコア142がスタート(開始)されると共に、メイン処理装置110がそれに成り代わって処理タスクのサブセットを実行するために利用することができるようになる。   Configuration information stored by the configuration module 310 is not accessible to the data engine 140. Once the configuration module is configured in stage 420, the data engine core 142 is started and can be used by the main processing unit 110 to execute a subset of processing tasks on its behalf. It becomes like this.

ステージ430において、データエンジンコア142は、プログラム命令を受信すると共に、これらの命令(の少なくともいくつか)を、実行するためのデータストリーム機能装置220(図2を参照)に送信する。あるプログラム命令の実行に応答したデータストリーム機能装置220は、1つ以上の入力データストリームのデータ要素に関してデータ処理タスクを実行するために、制御インタフェース350を経由して、少なくとも1つの命令をデータストリーム制御器340に出力する。実行され得るデータ処理タスクは、データ要素のバッファリングを必要とするデータ操作を包含する。例えば、命令順変更ストリームアクセス、またはデータストリーム接続(すなわち、出力データストリームを形成するための2つ以上の入力データストリームの部分の連結)である。データストリーム機能装置220によって実行される所定の命令の実行と関連付けられたタスクが完了された後で、処理はステージ460に進行する。   At stage 430, the data engine core 142 receives program instructions and sends (at least some of) these instructions to the data stream functional unit 220 (see FIG. 2) for execution. In response to execution of certain program instructions, the data stream functional unit 220 sends at least one instruction to the data stream via the control interface 350 to perform data processing tasks on the data elements of one or more input data streams. Output to the controller 340. Data processing tasks that may be performed include data operations that require buffering of data elements. For example, instruction reordering stream access, or data stream connection (ie concatenation of parts of two or more input data streams to form an output data stream). After the task associated with execution of the predetermined instruction executed by the data stream functional unit 220 is completed, processing proceeds to stage 460.

ステージ460において、データエンジンコア制御器210を経由して受信された全てのデータストリーム処理タスクが完了されたか否かが判定される。もし更なるタスクがまだ実行されなければならない場合、その場合には処理はステージ440に戻る。しかしながら、もし全ての処理タスクがステージ460において既に完了されていた場合、処理はステージ470に進行し、その結果データエンジンコアがストップ(停止)される。図4のフローチャートにおいて、説明の目的のために、データエンジン制御器210によって受信された全てのプログラム命令がデータストリーム機能装置220に行くことになっている、と仮定される点に注意が必要である。しかし、データストリーム操作を包含しないいくつかの命令は、実際には、データストリーム機能装置220よりむしろ、実行するための他の機能装置230に導かれるということが認識されることになる。   At stage 460, it is determined whether all data stream processing tasks received via the data engine core controller 210 have been completed. If further tasks must still be performed, then processing returns to stage 440. However, if all processing tasks have already been completed at stage 460, processing proceeds to stage 470, which results in the data engine core being stopped. It should be noted in the flowchart of FIG. 4 that for purposes of explanation, it is assumed that all program instructions received by the data engine controller 210 are to go to the data stream functional unit 220. is there. However, it will be appreciated that some instructions that do not involve data stream operations are actually directed to other functional units 230 to execute rather than the data stream functional unit 220.

図5は、データストリームのデータ要素の入力及び出力を、それらが通過するとき管理するためにデータストリーム演算処理装置150の中で使用されるロジック回路を概略的に説明する図である。ロジック回路は、データ入力レジスタ510のセット(それは、図3のデータ受信モジュール320の一部分である)と、データアクセスレジスタ520及び接続されたビットポインタ522のセット(両方とも図3の制御インタフェース350の構成要素である)と、接続された内部バッファ532と接続する双方向性のデータ通信経路を有する多重化モジュール530(それは、図3のデータストリーム制御器340の一部を構成する)とを備える。図5のバッファ532がデータストリーム演算処理装置150の外部にあるのに対して、図3のバッファ332がデータストリーム演算処理装置150の内部にあるという点で、図5の装置が図3の装置に対する代替である点に注意が必要である。   FIG. 5 is a diagram schematically illustrating the logic circuitry used in the data stream processing unit 150 to manage the input and output of the data elements of the data stream as they pass through. The logic circuit includes a set of data input registers 510 (which is part of the data receiving module 320 of FIG. 3) and a set of data access registers 520 and connected bit pointers 522 (both of the control interface 350 of FIG. 3). And a multiplexing module 530 (which forms part of the data stream controller 340 of FIG. 3) having a bidirectional data communication path that connects to a connected internal buffer 532. . 5 is external to the data stream arithmetic processing unit 150, whereas the buffer 332 in FIG. 3 is internal to the data stream arithmetic processing unit 150, the apparatus of FIG. Note that it is an alternative to.

DMAインタフェース370(図3を参照)によって受信される入力データストリームのデータ要素は、データ入力レジスタ510内のファーストインファーストアウト(First-in-First-Out:FIFO)基盤に一時的に記憶される。データ入力レジスタ510のFIFOの性質によって、データストリームはDMAインタフェース370を経由して順次にアクセスされることが可能になる。管理モジュール380(図3を参照)は、どのくらいのデータ要素が受信されたか、そして、どのデータ要素がデータ入力レジスタ510にまだあるかを記録する。データ要素は、データ入力レジスタ510から出力されると共に、多重化モジュール530に供給される。制御インタフェース350(図3を参照)を経由してデータストリーム機能装置220から受信された命令に基づいて、多重化モジュール530は、データ入力レジスタ510からのいくつかのデータ要素を、一時記憶のためのバッファ532まで導くと共に、データ入力レジスタ510からのデータ要素の他のものを、データエンジンコア142にアクセス可能である、制御インタフェース350のデータアクセスレジスタ520まで直接導く。データストリーム処理装置150は、入力データストリームにおける少なくとも1つの基準点を含む管理情報を保存する。この基準点は、図5におけるデータアクセスレジスタ520と関連付けられた状態機械の状態と対応する。同様にデータ入力レジスタ510は、データ入力処理と関連付けられた基準点情報を記憶する、関連する状態機械を有している。データストリーム処理装置150が、データストリームに関する少なくとも1つの基準点を記憶することが可能であるという事実は、効果的に、それが状態情報を記憶することが可能であるということを意味する。これは、(上述のように)データストリームからビットを自動的に読み出すようにする“getbits()”命令の実行を可能にする。同様に、記憶された状態情報によって、データストリーム処理装置150は、どのポートからデータを獲得するか、またはどのポートにデータを書き込むか(すなわち、データ入力レジスタ510と接続されたインタフェース、またはバッファ532と接続されたインタフェース)を自動的に選択することが可能になる。   The data elements of the input data stream received by the DMA interface 370 (see FIG. 3) are temporarily stored in a first-in-first-out (FIFO) infrastructure in the data input register 510. . The FIFO nature of the data input register 510 allows the data stream to be accessed sequentially via the DMA interface 370. The management module 380 (see FIG. 3) records how many data elements have been received and which data elements are still in the data input register 510. The data element is output from the data input register 510 and supplied to the multiplexing module 530. Based on instructions received from the data stream functional unit 220 via the control interface 350 (see FIG. 3), the multiplexing module 530 may store some data elements from the data input register 510 for temporary storage. And direct other data elements from the data input register 510 directly to the data access register 520 of the control interface 350, which is accessible to the data engine core 142. The data stream processing device 150 stores management information including at least one reference point in the input data stream. This reference point corresponds to the state machine state associated with the data access register 520 in FIG. Similarly, the data input register 510 has an associated state machine that stores reference point information associated with the data input process. The fact that the data stream processing device 150 can store at least one reference point for the data stream effectively means that it can store state information. This allows execution of a “getbits ()” instruction that automatically reads bits from the data stream (as described above). Similarly, depending on the stored state information, the data stream processing device 150 acquires data from which port or writes data to which port (ie, an interface connected to the data input register 510, or a buffer 532). It is possible to automatically select the interface connected to the.

多重化モジュール530は、同様に、“getbits()”命令の実行に応答して生成された命令に応答して、データアクセスレジスタ520に対して出力するための、入力データストリームのバッファされたデータ要素を、バッファ532から読み出すように動作可能である。更に、管理モジュール380は、どのデータ要素がまだバッファに存在するか、そしてどこにそれらが位置しているかを記録すると共に、同様に、どのデータ要素がデータアクセスレジスタ520に存在するかを記録する。出力データストリームは、“putbits()”命令を使用して、データ要素を、データアクセスレジスタ520から送信ストリーム上に選択的に出力することによって生成される。   Multiplex module 530 similarly buffered data in the input data stream for output to data access register 520 in response to an instruction generated in response to execution of a “getbits ()” instruction. The element is operable to read from the buffer 532. In addition, the management module 380 records which data elements are still in the buffer and where they are located, as well as which data elements are present in the data access register 520. The output data stream is generated by selectively outputting data elements from the data access register 520 onto the transmission stream using the “putbits ()” instruction.

ビットポインタ522は、出力データストリームに対して次に供給されるべきデータ要素を指し示す。ビットポインタをリセットするために、“resetbitpointer()”命令、もしくは“reset()”命令が使用される。図5のデータアクセスレジスタ520は、データエンジンコアからの命令に関して動作する場合に、データストリーム処理装置150によって基準点として使用される、データストリームにおける基準点を、自動的に選択する。データストリーム処理装置150は、この基準点を含む管理情報を保存する。管理情報は、同様に、どのデータ要素がバッファ532に記憶されたか、及びどのデータ要素がDMAインタフェースを経由してデータ入力レジスタ510で受信されたかという記録を含む。図3を参照して上述されたように、DMAインタフェース370、アクセラレータインタフェース360、バッファインタフェース330、及び制御インタフェース350の全ては、すべて関連付けられた状態機械を有する。従って、例えば、バッファインタフェース330と関連付けられた状態機械が、どのデータ要素が接続されたバッファ332に記憶されたかを指定する管理情報を記憶するように、管理情報は、それぞれのインタフェースの状態機械に分配され得る/割り当てられ得る。   Bit pointer 522 points to the next data element to be supplied to the output data stream. In order to reset the bit pointer, a “resetbitpointer ()” instruction or a “reset ()” instruction is used. The data access register 520 of FIG. 5 automatically selects a reference point in the data stream that is used as a reference point by the data stream processing device 150 when operating on instructions from the data engine core. The data stream processing device 150 stores management information including this reference point. The management information also includes a record of which data elements are stored in the buffer 532 and which data elements are received at the data input register 510 via the DMA interface. As described above with reference to FIG. 3, DMA interface 370, accelerator interface 360, buffer interface 330, and control interface 350 all have an associated state machine. Thus, for example, the management information is stored in the state machine of each interface so that the state machine associated with the buffer interface 330 stores management information specifying which data elements are stored in the connected buffer 332. Can be distributed / assigned.

図6は、データストリーム処理装置を通過するデータの流れを制御するロジック回路を概略的に説明する図である。このロジック回路は、バッファ532(図4を参照)からのデータ要素と、入力データレジスタからのデータ要素とを多重化するように動作可能である。図6の装置は、図3のDMAインタフェース370から制御インタフェース350までのデータ経路と対応する。マルチプレクサ610、及びマルチプレクサ612は、データ経路と接続されている一方、マルチプレクサ614、マルチプレクサ618、マルチプレクサ620、及びマルチプレクサ622は、制御経路と接続されている。マルチプレクサ610は、バッファ332からのバッファされたデータ、またはFIFOデータ入力レジスタ510からの直接のデータのどちらが、制御インタフェース350を経由してデータエンジン140に供給されるかを制御する。マルチプレクサ612は、FIFO入力レジスタ510からのデータが、出力のための制御インタフェース350に直接供給されるか、または、代わりに一時記憶のためのバッファ332に供給されるかを制御する。データ部分は、データストリーム機能装置220(図2を参照)からの命令に応答して、バッファされると共に、出力されることになる。マルチプレクサ614、及びマルチプレクサ618は、制御インタフェース350を経由してデータエンジンコア(図3を参照)からACK信号(肯定応答)を受信するように動作可能である。マルチプレクサ620、及びマルチプレクサ622は、制御インタフェース350を経由して要求信号をデータエンジンコア142に出力するように動作可能である。もしデータがFIFO510に到達していない場合、FIFOは、マルチプレクサ620、及びマルチプレクサ622を経由して制御インタフェース350に到達する保留信号を出力する。保留信号は、データエンジン制御器210(図3を参照)を停止させる。一方、もしデータストリームがFIFO510に供給されつつある場合、その場合にACK信号(肯定応答信号)がデータエンジンコア142から、制御インタフェース350とマルチプレクサ614及びマルチプレクサ618を経由して、FIFO510に送信されることになる。マルチプレクサ610、及びマルチプレクサ612を経由してFIFO510を制御インタフェース350と接続するメインのデータ経路は、以下のように設定され得る。   FIG. 6 is a diagram schematically illustrating a logic circuit that controls the flow of data passing through the data stream processing apparatus. The logic circuit is operable to multiplex data elements from the buffer 532 (see FIG. 4) and data elements from the input data register. The device of FIG. 6 corresponds to the data path from the DMA interface 370 to the control interface 350 of FIG. Multiplexer 610 and multiplexer 612 are connected to the data path, while multiplexer 614, multiplexer 618, multiplexer 620, and multiplexer 622 are connected to the control path. Multiplexer 610 controls whether buffered data from buffer 332 or direct data from FIFO data input register 510 is supplied to data engine 140 via control interface 350. The multiplexer 612 controls whether the data from the FIFO input register 510 is supplied directly to the control interface 350 for output or alternatively to the buffer 332 for temporary storage. The data portion will be buffered and output in response to commands from the data stream functional unit 220 (see FIG. 2). Multiplexer 614 and multiplexer 618 are operable to receive an ACK signal (acknowledgment) from the data engine core (see FIG. 3) via control interface 350. Multiplexer 620 and multiplexer 622 are operable to output a request signal to data engine core 142 via control interface 350. If the data does not reach the FIFO 510, the FIFO outputs a hold signal that reaches the control interface 350 via the multiplexer 620 and the multiplexer 622. The hold signal stops the data engine controller 210 (see FIG. 3). On the other hand, if a data stream is being supplied to the FIFO 510, then an ACK signal (acknowledgment signal) is sent from the data engine core 142 to the FIFO 510 via the control interface 350, the multiplexer 614, and the multiplexer 618. It will be. The main data path connecting the FIFO 510 and the control interface 350 via the multiplexer 610 and the multiplexer 612 can be set as follows.

(i)データエンジン140による使用(消耗)のために、入力FIFO510から制御インタフェース350まで、データをストレートに通過させる。
(ii)バッファ332からデータを読み取る。
(iii)キャッシュ332に記憶するために入力FIFO510からのデータをバッファする。
(i) Data is passed straight from the input FIFO 510 to the control interface 350 for use (consumption) by the data engine 140.
(ii) Read data from the buffer 332.
(iii) Buffer data from input FIFO 510 for storage in cache 332.

要求/肯定応答のマルチプレクサ614、マルチプレクサ618、マルチプレクサ620、及びマルチプレクサ622は、先例に従わなければならない。例えば、バッファリングモードにおいては、FIFO510からのデータがキャッシュ332に供給されつつあるとき、バッファリングが進行中である間、データエンジン140によるデータに関するあらゆる要求が機能停止に帰着することになるのを保証するために、ゼロの信号入力が、要求制御経路620、622上に配置されることになる。簡素化のために、図6において示された回路は、データフローの制御と関連付けられた回路素子の全てを示していない。例えば、更なる回路素子(図示せず)が、データエンジン140におけるデータの到着を認識するACK信号(肯定応答信号)を、制御器340に提供するために用意される。   Request / acknowledge multiplexer 614, multiplexer 618, multiplexer 620, and multiplexer 622 must follow the precedent. For example, in buffering mode, when data from the FIFO 510 is being fed into the cache 332, any request for data by the data engine 140 will result in an outage while buffering is in progress. To guarantee, a zero signal input will be placed on the request control path 620,622. For simplicity, the circuit shown in FIG. 6 does not show all of the circuit elements associated with data flow control. For example, additional circuit elements (not shown) are provided to provide the controller 340 with an ACK signal (acknowledgment signal) that recognizes the arrival of data at the data engine 140.

図7は、データストリーム処理装置を通過するデータの流れを制御すると共に、同様に、データ転送が中断されたとき、転送中の保留データを記憶するように動作可能であるロジック回路を概略的に説明する図である。この装置は、図6の装置に対する代替装置である。回路構成の下方の部分710は、図6の回路構成に対して、形式と機能の両方において同一である。回路構成の上方の部分720は、転送における保留データを保存するように動作可能である。データエンジンコア142が、DMAインタフェースを経由してデータ受信モジュール320に供給されているデータストリームを包含するデータ転送を中断するための命令をデータストリーム処理装置150(図3を参照)に送信する場合には、図7の装置は有益である。データがその時まだDMAインタフェース370に対する転送状態にあるときに、もしデータエンジンコア142がデータ転送を終了させる命令を出力する場合、その場合には、現在データエンジンコア142によって必要とされないが、そのデータをバッファすることが望ましい。なぜなら、そうでない場合には、データエンジンコア142が処理を再開するとき、もし既にDMA制御器によって出力されたデータが単に処分される場合には、データストリームが恐らく破損されるからである。図7の回路構成の上方の部分720は、エンジンコア142からの停止命令が手続きされる前に、転送中のデータ、またはデータストリーム処理装置150に送信された“オーバフローデータ”を消耗するように機能する。オーバフローデータは、入力FIFO510によって受信されると共に、マルチプレクサ744を経由して、記憶するためのバッファ742に供給される。データエンジンコア142による処理の再開に関して、バッファ742に記憶されるデータは、上方の回路部分720を下方の回路部分710と接続するインタフェース730を経由して、処理するために、回路構成710の下方部分に供給される。図7の回路構成によって、データストリームはデータの損失なしで中断されることが可能になる。上述のように、データストリーム処理装置150は、(少なくとも)そのインタフェースの各々と関連付けられた状態機械を有している。データ異常終了が発生した場合は、後の時点における処理の再開を可能にするために、異常終了動作の前の時点における状態機械の状態が保存されるということが認識されることになる。   FIG. 7 schematically illustrates a logic circuit that is operable to control the flow of data through the data stream processor and similarly store pending data being transferred when the data transfer is interrupted. It is a figure explaining. This device is an alternative to the device of FIG. The lower portion 710 of the circuit configuration is identical in both form and function to the circuit configuration of FIG. The upper portion 720 of the circuitry is operable to store pending data in the transfer. When the data engine core 142 transmits an instruction for interrupting the data transfer including the data stream supplied to the data receiving module 320 via the DMA interface to the data stream processing device 150 (see FIG. 3). The apparatus of FIG. 7 is useful. If the data engine core 142 outputs a command to terminate the data transfer when the data is still in a transfer state to the DMA interface 370 at that time, then the data engine core 142 does not currently require it, but the data It is desirable to buffer. Otherwise, when the data engine core 142 resumes processing, if the data already output by the DMA controller is simply discarded, the data stream is probably corrupted. The upper portion 720 of the circuit configuration of FIG. 7 consumes data being transferred or “overflow data” sent to the data stream processor 150 before the stop command from the engine core 142 is processed. Function. Overflow data is received by the input FIFO 510 and supplied to the buffer 742 for storage via the multiplexer 744. Regarding the resumption of processing by the data engine core 142, the data stored in the buffer 742 is processed below the circuit configuration 710 for processing via the interface 730 that connects the upper circuit portion 720 to the lower circuit portion 710. Supplied to the part. The circuit configuration of FIG. 7 allows the data stream to be interrupted without data loss. As mentioned above, the data stream processing device 150 has (at least) a state machine associated with each of its interfaces. If an abnormal data end occurs, it will be recognized that the state machine state at the time prior to the abnormal end operation is saved to allow the process to resume at a later time.

図8は、図6のロジック回路によって実行される多重化動作の状態機械表現を概略的に説明する図である。   FIG. 8 is a diagram schematically illustrating a state machine representation of the multiplexing operation performed by the logic circuit of FIG.

図8で表されたデータ多重化処理タスクに関して、データストリーム処理装置150は、デフォルト出力状態810、バッファリング状態820、及びバッファデータ読み出し状態830を含む3つの処理状態のうちの1つにおいて操作することができる。   With respect to the data multiplexing processing task depicted in FIG. 8, the data stream processing device 150 operates in one of three processing states including a default output state 810, a buffering state 820, and a buffer data read state 830. be able to.

状態810において、データは、データ入力レジスタ510(図4を参照)から直接読み取られると共に、出力データストリームの送信の準備が整ったデータアクセスレジスタ520に供給される。状態820は、データ入力レジスタ510から読み取られたデータが、多重化モジュール530によって、出力から要求されるようなときまでの一時記憶のためのバッファ532に経路指定されるバッファリング状態である。状態810から状態820までの状態遷移は、“bufferbytes()”命令の実行の結果生成されるデータストリーム機能装置220(図3を参照)からの命令に応答して実行される。(状態810から状態820までの)この状態遷移が発生した場合、管理ロジック回路380によって維持されるカウンタはリセットされ、それ以降、このカウンタは、バッファされたデータストリームの連続したデータ要素の数を記録し、所定のカウント値でバッファリング状態820に入ることを保証する。状態820において、1度データ要素(例えば、ビット、バイト、またはワード)の要求された数がバッファされたら、その場合には、デフォルトの出力状態に戻る状態遷移が実行される。   In state 810, data is read directly from the data input register 510 (see FIG. 4) and provided to a data access register 520 ready for transmission of the output data stream. State 820 is a buffering state in which data read from the data input register 510 is routed by the multiplexing module 530 to a buffer 532 for temporary storage until such time as requested from the output. The state transition from the state 810 to the state 820 is executed in response to an instruction from the data stream function device 220 (see FIG. 3) generated as a result of executing the “bufferbytes ()” instruction. When this state transition occurs (from state 810 to state 820), the counter maintained by management logic circuit 380 is reset, and thereafter this counter determines the number of consecutive data elements in the buffered data stream. Record and guarantee to enter the buffering state 820 with a predetermined count value. In state 820, once the requested number of data elements (eg, bits, bytes, or words) has been buffered, then a state transition is performed to return to the default output state.

もしシステムがデフォルトの出力状態810にあるときにデータストリーム機能装置220(図3を参照)が“backstep()”命令を実行する場合、その場合に、バッファデータ読み出し状態830への状態遷移が発生することになる。バッファデータ読み出し状態830において、データストリーム処理装置の管理モジュール380は、入力データストリームの一時的なシーケンスにおける以前の地点と対応する、記憶されたデータ要素の記憶場所を決定するために、データストリーム制御器340によって参照されると共に、データストリーム制御器340は、その記憶されたデータの出力データストリームに対する出力に備えて準備するために、ビットポインタ522(図5を参照)をリセットする。これが所定の入力データストリームに対する命令順変更アクセスが達成されるやり方である。データストリーム処理装置150が、バッファリング状態820か、またはバッファデータ読み出し状態830のいずれかにあるときの、データエンジンコア142からのデータに関するあらゆる要求は、機能停止に帰着することになる。この機能停止は、図6の装置のマルチプレクサ620にゼロを供給することによって達成される。   If the data stream function device 220 (see FIG. 3) executes a “backstep ()” instruction when the system is in the default output state 810, then a state transition to the buffer data read state 830 occurs. Will do. In the buffer data read state 830, the management module 380 of the data stream processing device determines the storage location of the stored data element corresponding to the previous point in the temporary sequence of the input data stream. In addition to being referenced by the device 340, the data stream controller 340 resets the bit pointer 522 (see FIG. 5) to prepare for output of the stored data to the output data stream. This is the way in which instruction reordering access to a given input data stream is achieved. Any request for data from the data engine core 142 when the data stream processor 150 is in either the buffering state 820 or the buffer data read state 830 will result in a stall. This outage is achieved by supplying zero to the multiplexer 620 of the apparatus of FIG.

図9Aは、MP3オーディオデータストリームの一部分のフォーマットを概略的に説明する図である。データストリーム処理装置150は、FIFOデータ入力レジスタ510(図3を参照)を使用して、DMAインタフェース370を経由し、順次に入力データストリームにアクセスする。しかしながら、MP3標準は、以前のフレームに記憶されるメインデータにアクセスするために、入力MP3データストリームの処理の間、ビットストリームにおいて512バイトまで戻ることが可能であることを指定する。MP3オーディオは、MPEG1のレイヤ3オーディオ、及びMPEG2のレイヤ3オーディオと対応すると共に、以下の工業標準規格“IS0-IEC 11172-3”、“IS0-IEC 13818-3”に関係する。   FIG. 9A is a diagram schematically illustrating a format of a part of an MP3 audio data stream. The data stream processing device 150 uses the FIFO data input register 510 (see FIG. 3) to sequentially access the input data stream via the DMA interface 370. However, the MP3 standard specifies that it is possible to return up to 512 bytes in the bitstream during processing of the input MP3 data stream to access the main data stored in the previous frame. MP3 audio corresponds to MPEG1 layer 3 audio and MPEG2 layer 3 audio, and is related to the following industry standards “IS0-IEC 11172-3” and “IS0-IEC 13818-3”.

512バイトがヘッダの日付、巡回冗長検査(CRC)データ、及び側面情報(side information)を除外する点に注意が必要である。そのような“backstep”命令のあとで、全てのヘッダ、CRC、及び側面情報は、読み飛ばされる。従って、最高512バイトのペイロードデータが、そのペイロードデータと関連付けられたヘッダ、及びCRC情報が受信される前に、入力データストリームに出現する可能性があるということが認識されることになる。従って、関連するヘッダ情報が受信された後で、しばらくの間このデータをバッファするという要求が存在することになる。   Note that 512 bytes exclude the header date, cyclic redundancy check (CRC) data, and side information. After such a “backstep” instruction, all header, CRC, and side information is skipped. Accordingly, it will be appreciated that up to 512 bytes of payload data may appear in the input data stream before the header and CRC information associated with the payload data is received. Thus, there will be a request to buffer this data for some time after the relevant header information is received.

図9Aを参照すると、代表的なMP3ビットストリーム部分は、全部で66データ要素“DS[O:65]”を含む。データストリームは、データ要素“DS[O:4]”を含む第1のヘッダ部分910と、データ要素“DS[5:34]”を含む第1のペイロードデータ部分920と、データ要素“DS[35:45]”を含む第2のペイロードデータ部分930と、データ要素“DS[46:50]”を含む第2のヘッダ部分940と、そしてデータ要素“DS[51:65]”を含む第3のペイロードデータ部分950とを有する。   Referring to FIG. 9A, a typical MP3 bitstream portion includes a total of 66 data elements “DS [O: 65]”. The data stream includes a first header portion 910 that includes a data element “DS [O: 4]”, a first payload data portion 920 that includes a data element “DS [5:34]”, and a data element “DS [ 35:45] ”, a second payload data portion 930 containing a data element“ DS [46:50] ”and a second header portion 940 containing a data element“ DS [51:65] ”. 3 payload data portions 950.

第1のペイロードデータ部分920は、第1のヘッダ部分910と結合されている一方、第2のぺーロードデータ部分930と、第3のペイロードデータ部分950の両方は、第2のヘッダ部分940と結合されている。第2のペイロードデータ部分930が、関連するヘッダ部分(第2のヘッダ部分940)の受信より前に、入力の一時的なシーケンスにおける地点に現れるので、そのペイロードデータが処理されるときに関連したヘッダ情報が利用可能であるように、出力の前に第2のデータ部分930をバッファすることは適切である。   The first payload data portion 920 is combined with the first header portion 910, while both the second payload data portion 930 and the third payload data portion 950 are the second header portion 940 and Are combined. Since the second payload data portion 930 appears at a point in the temporary sequence of inputs prior to receipt of the associated header portion (second header portion 940), it was relevant when that payload data was processed. It is appropriate to buffer the second data portion 930 before output so that header information is available.

図9Bは、図9Aの入力データストリーム部分に関してデータエンジンコア142及びデータストリーム処理装置150(図3を参照)によって実行される一連のデータ操作(もしくは処理タスク)を概略的に説明する図である。   FIG. 9B schematically illustrates a series of data operations (or processing tasks) performed by the data engine core 142 and the data stream processing device 150 (see FIG. 3) for the input data stream portion of FIG. 9A. .

ステップ1において、第1のヘッダ部分910は、データエンジン140によって読み込まれる。この動作は、5つのデータ要素を表す5つの入力引数を有する“getbits()”命令のデータストリーム機能装置220(図3を参照)による実行に応答して行われる。これは、FIFOデータ入力レジスタ510から読み出されると共に、出力の準備が整ったデータアクセスレジスタ520(図5を参照)に供給されたデータ要素“DS[O:4]”に帰着する。   In step 1, the first header portion 910 is read by the data engine 140. This operation is performed in response to execution by the data stream functional unit 220 (see FIG. 3) of a “getbits ()” instruction having five input arguments representing five data elements. This results in the data element “DS [O: 4]” being read from the FIFO data input register 510 and supplied to the data access register 520 (see FIG. 5) ready for output.

ステップ2において、第1のペイロードデータ部分920は、入力データレジスタ510から読み取られる。これは、プログラム命令“getbits(30)”を実行するデータストリーム機能装置220によって達成されると共に、その結果データ要素“DS[5:34]”が、入力データレジスタ510から除去され、出力の用意のためにデータアクセスレジスタ520に記憶される。   In step 2, the first payload data portion 920 is read from the input data register 510. This is accomplished by the data stream functional unit 220 executing the program instruction “getbits (30)”, so that the data element “DS [5:34]” is removed from the input data register 510 and ready for output. Stored in the data access register 520.

ステップ3において、第2のぺーロードデータ部分920は、データ入力レジスタ510から読み取られると共に、それが一時記憶のためのバッファ532に導かれる多重化モジュール530に供給される。この動作は、データストリーム機能装置220による命令“bufferbits(11)”の実行に応答したデータストリーム処理装置150によって行われる。“DS[35:45]”と対応する11個のデータ要素は、バッファに記憶される。管理モジュール380(図3を参照)は、どのデータ要素がバッファされるかということ、及びそれらが記憶されるバッファの位置を保存する。   In step 3, the second payload data portion 920 is read from the data input register 510 and provided to the multiplexing module 530 where it is routed to a buffer 532 for temporary storage. This operation is performed by the data stream processing device 150 in response to the execution of the command “bufferbits (11)” by the data stream function device 220. Eleven data elements corresponding to “DS [35:45]” are stored in the buffer. The management module 380 (see FIG. 3) saves which data elements are buffered and the location of the buffer where they are stored.

ステップ4において、第2のヘッダ部分940は、入力データレジスタ510から読み取られると共に、出力データストリームの送信の準備が整ったデータアクセスレジスタ520に記憶される。第2のペイロードデータ部分930のデータ要素が、ステップ3でバッファされたので、第2のヘッダ部分は、第1のペイロードデータ部分920の後に直接出力されることになる。   In step 4, the second header portion 940 is read from the input data register 510 and stored in the data access register 520 ready for transmission of the output data stream. Since the data elements of the second payload data portion 930 were buffered in step 3, the second header portion will be output directly after the first payload data portion 920.

ステップ5において、データエンジンコア142は、バッファ532にアクセスする準備をする。従って、データストリーム機能装置220は、命令“backstep(11)”を実行すると共に、その結果、出力データストリームに供給するためのデータの現在の出力位置を制御するビットポインタ522が、“DS[35]”、すなわち第2のペイロードデータ部分の開始点35に対応するように巻き戻される。   In step 5, the data engine core 142 prepares to access the buffer 532. Therefore, the data stream functional unit 220 executes the instruction “backstep (11)” and, as a result, the bit pointer 522 that controls the current output position of the data to be supplied to the output data stream is “DS [35 ] ”, Ie, rewound to correspond to the start point 35 of the second payload data portion.

ステップ6において、第2のペイロードデータ部分930は、データアクセスレジスタ520から出力するための準備が整ったバッファから読み出される。ビットポインタ522が、ステップ5においてリセットされたので、このデータは、データストリーム機能装置220による命令“getbits(11)”の実行によって、出力データストリームに加えられ得る。   In step 6, the second payload data portion 930 is read from a buffer ready for output from the data access register 520. Since the bit pointer 522 has been reset in step 5, this data can be added to the output data stream by execution of the instruction “getbits (11)” by the data stream functional unit 220.

最終的に、ステップ7において、(第2のペイロードデータ部分930と同様に、)第2のヘッダ部分と結合された第3のペイロードデータ部分950は、入力データレジスタ510から読み取られると共に、出力の準備が整ったデータアクセスレジスタ520に記憶される。これは、データストリーム機能装置220による命令“getbits(15)”の実行によって達成され、それに応答してデータ要素“DS[51:65]”が出力される。   Finally, in step 7, the third payload data portion 950 combined with the second header portion (similar to the second payload data portion 930) is read from the input data register 510 and the output It is stored in the ready data access register 520. This is achieved by the execution of the instruction “getbits (15)” by the data stream functional unit 220, and in response, the data element “DS [51:65]” is output.

図10は、図3のバッファがソフトウェアFIFOとして実装される装置を概略的に説明する図である。図10は、データストリーム処理装置150、及びデータエンジンコア142の構成要素のサブセットを示すと共に、それらの双方向の情報授受(双方向通信)をソフトウェアFIFO1005によって説明する。ソフトウェアFIFO1005は、データストリーム制御器340と接続され、データストリーム制御器340は、バッファリングのために、ソフトウェアFIFO1005に対して入力データストリームのデータ要素を選択的に供給するように動作可能である。データストリーム制御器340は、管理モジュール380によって維持される管理レコードに記憶されるローカルなヘッドアドレス1010、及びローカルなテールアドレス1020のうちの少なくとも1つに応答して、ソフトウェアFIFO1005の注入と排出を管理するように動作可能である。ソフトウェアFIFOと関連付けられたメモリ領域は、パーティションポインタによって定義される。   FIG. 10 is a diagram schematically illustrating an apparatus in which the buffer of FIG. 3 is implemented as a software FIFO. FIG. 10 shows a subset of the components of the data stream processing device 150 and the data engine core 142, and their bidirectional information exchange (bidirectional communication) will be described by the software FIFO 1005. A software FIFO 1005 is connected to the data stream controller 340, and the data stream controller 340 is operable to selectively provide data elements of the input data stream to the software FIFO 1005 for buffering. Data stream controller 340 injects and ejects software FIFO 1005 in response to at least one of local head address 1010 and local tail address 1020 stored in a management record maintained by management module 380. Operate to manage. The memory area associated with the software FIFO is defined by the partition pointer.

ローカルなヘッドアドレス1010、及びローカルなテールアドレス1020は、ソフトウェアFIFO1005として使用するように割り当てられたメモリ領域と関連付けられた物理アドレスである。ヘッドポインタ1010は、新しいデータ要素がデータ入力レジスタ510(図5を参照)からソフトウェアFIFO1005によって受信されたときに書き込まれるメモリ位置を制御する。テールポジションの、もしくはテールポジションに近接するデータ要素が、例えば、それらが出力データストリームに既に送られたので、もはや必要とされないとき、テールポインタ1020は前進する。   The local head address 1010 and the local tail address 1020 are physical addresses associated with memory areas allocated for use as the software FIFO 1005. Head pointer 1010 controls the memory location to be written when a new data element is received by software FIFO 1005 from data input register 510 (see FIG. 5). The tail pointer 1020 advances when data elements at or near the tail position are no longer needed, for example because they have already been sent to the output data stream.

管理モジュール380は、バッファに記憶されたどのデータ要素がもはや必要とされないかを記録すると共に、ヘッドポインタ1010、及びテールポインタ1020の前進を管理する。しかしながら、管理モジュール380によって記憶される現在のポインタ値を変更するための指令信号をデータストリーム制御器340に送信するデータストリーム機能装置220による命令の実行に応答して、これらの2つのポインタ1010、及びポインタ1020は、同様に変更され得る。これの例は、図9Bのステップ5を参照して上述された。   The management module 380 records which data elements stored in the buffer are no longer needed and manages the advancement of the head pointer 1010 and the tail pointer 1020. However, these two pointers 1010, And the pointer 1020 may be changed as well. An example of this was described above with reference to step 5 of FIG. 9B.

ヘッドポインタは、DMAインタフェース370及びデータ受信モジュール320を介してデータストリーム処理装置に提供されたDMAデータと、バッファにおける利用可能空間(ヘッドがまだテールに噛みついていない)とに基づいて移動される。テールポインタは、制御インタフェース350から出力された“getbit()”タイプの命令に応答して更新される。しかしながら、そのテールポインタは、“forward()”命令(“bufferbytes()”命令に等価である)の後で修正されない。   The head pointer is moved based on the DMA data provided to the data stream processing device via the DMA interface 370 and the data receiving module 320 and the available space in the buffer (the head has not yet engaged the tail). The tail pointer is updated in response to a “getbit ()” type instruction output from the control interface 350. However, the tail pointer is not modified after the “forward ()” instruction (equivalent to the “bufferbytes ()” instruction).

ソフトウェアFIFO1005は、ヘッドポインタ、及びテールポインタが、各々記憶されるデータの開始、及び終了を定義すると共に、循環型バッファに関する従来の方法において、メモリアドレス空間の終りで循環する循環型バッファメモリ(リングバッファ)として形成される。   The software FIFO 1005 defines a circular buffer memory (ring) in which the head pointer and tail pointer define the beginning and end of stored data, respectively, and circulate at the end of the memory address space in a conventional manner for circular buffers. Buffer).

データストリーム処理装置150を備えないシステムにおいてデータ処理動作を実行するために、プログラマによって、多数のデータ処理動作がソフトウェアにおいて明白に指定される必要がある。例えば、以下に示す(Cプログラミング言語で書かれた)プログラムコードの一部分は、本技術による“getbits()”命令に相当する機能、すなわちデータストリームのデータの部分の読み出し機能を実行する。   In order to perform data processing operations in a system that does not include a data stream processor 150, a number of data processing operations need to be explicitly specified in software by the programmer. For example, a portion of program code (written in the C programming language) shown below performs a function corresponding to a “getbits ()” instruction according to the present technology, that is, a function for reading a data portion of a data stream.

Figure 0004445486
Figure 0004445486

上述のプログラムコードから、ビット整列、マスキング、及び連結のようなデータ処理動作は、ソフトウェア機能において指定されるということが分かる。本技術によれば、これらのデータ処理動作の全ては、プログラマから取り除かれる。本技術に従ってデータの部分を読み出すために、データエンジンコア142は、“getbits()”命令を単に実行すると共に、これは制御インタフェース350(図3を参照)に送信される制御信号に帰着し、それに応答してデータストリーム処理装置150は、データストリームからのデータの部分の読み出しを実行する。   From the above program code, it can be seen that data processing operations such as bit alignment, masking, and concatenation are specified in software functions. According to the present technique, all of these data processing operations are removed from the programmer. To read a portion of data in accordance with the present technique, the data engine core 142 simply executes a “getbits ()” instruction, which results in a control signal sent to the control interface 350 (see FIG. 3), In response, the data stream processing device 150 performs reading of the data portion from the data stream.

上述のプログラムコードは、読み出されたデータのフォーマットがシステムの物理的性質、すなわちバス幅及びポート幅によって決定されるシステムにおいて使用するためのものである。   The above program code is for use in a system where the format of the read data is determined by the physical properties of the system, i.e. the bus width and port width.

図11Aは、データワード1100からデータの部分が読み出される上述のプログラムコードにおける“事例1”を概略的に説明する図である。図11Aにおいて、バス幅(ワード長と等価である)は、Nビットであると共に、読み出されるべきデータの部分は、データ部分“bits2get”と対応する。この場合に、データの要求されたビット数は、それが1つのデータワード1100の中に含まれるほど十分に小さい。部分1110は、既に消耗されたデータと対応する。利用可能なデータのうちで、サブセットのみが“bits2get”と対応する。このデータを読み出すために、利用可能なビットは、最下位ビット(LSB)配列される(least significant bit (LSB) aligned)と共に、ワードの不必要なビットはマスクされる。   FIG. 11A is a diagram schematically illustrating “example 1” in the above-described program code in which the data portion is read from the data word 1100. In FIG. 11A, the bus width (equivalent to the word length) is N bits, and the portion of the data to be read corresponds to the data portion “bits2get”. In this case, the requested number of bits of data is sufficiently small that it is contained within one data word 1100. Portion 1110 corresponds to data that has already been consumed. Of the available data, only a subset corresponds to “bits2get”. To read this data, the available bits are least significant bit (LSB) aligned and unnecessary bits of the word are masked.

図11Bは、上述のプログラムコードにおける“事例2”を概略的に説明する。この例において、読み出されるべきビット“bits2get”は、2つのデータワード、すなわち第1のデータワード1200、及び第2のデータワード1300に及ぶ。第1のデータワード1200のデータ部分1210は、既に消耗されたビットと対応する。第1のデータワード1200の利用可能なビット“part1bits”は、データの要求を満たすのに数において十分ではなく、従って、データワード1300が同様に読み出されなければならないと共に、要求を満たすために必要とされるビットの追加の数と対応する第2のデータワード“part2bits”の部分は、第2のデータワード1200から抽出される。第1のデータワード1200からの“part1bits”、及び第2のデータワードからの“part2bits”は、その場合に、出力の準備をするためにLSB配列(LSB alignment)形式で連結される。   FIG. 11B schematically illustrates “Case 2” in the above program code. In this example, the bit “bits2get” to be read spans two data words: a first data word 1200 and a second data word 1300. The data portion 1210 of the first data word 1200 corresponds to a bit that has already been consumed. The available bits “part1bits” of the first data word 1200 are not sufficient in number to satisfy the data request, so the data word 1300 must be read as well and to satisfy the request. The part of the second data word “part2bits” corresponding to the additional number of bits required is extracted from the second data word 1200. In this case, “part1bits” from the first data word 1200 and “part2bits” from the second data word are concatenated in an LSB alignment (LSB alignment) format to prepare for output.

図12A、及び図12Bは、“setcount()”命令の使用を概略的に説明する図である。“setcount()”命令、及びresetcount()命令は、データストリームアクセスを更に安全にするために、明確に提供される。   12A and 12B are diagrams schematically illustrating the use of the “setcount ()” instruction. The “setcount ()” and resetcount () instructions are explicitly provided to make data stream access more secure.

図12Aにおいて、“setcount()”命令の引き数は、データストリームから読み取られ得るビットの数に対する制限がないということを意味するデフォルト値である。従って、データストリームのポインタは、無制限にインクリメントされ得る。しかしながら、データストリームのポインタが、ポインタの値を少なくとも含む関連する状態を有する点に注意が必要である。追加の状態変数は、データポインタがロックされるか、もしくは解除されるかどうかに対応する。ロックされた状態において、データ出力は防止される。   In FIG. 12A, the argument of the “setcount ()” instruction is a default value that means there is no limit on the number of bits that can be read from the data stream. Thus, the data stream pointer can be incremented indefinitely. However, it should be noted that the pointer of the data stream has an associated state that includes at least the value of the pointer. An additional state variable corresponds to whether the data pointer is locked or released. Data output is prevented in the locked state.

図12Bにおいて、“setcount()”命令は、引数Mを有している。これは、“setcount(M)”命令に関連付けられた命令(すなわち、制御信号)が、データエンジンコア142からデータストリーム処理装置150(図3を参照)に送信された瞬間に、ビットポインタの状態と関連するデータポインタ状態に関する上限を設定する。図12Bにおいて、“setcount(M)”命令がデータストリーム処理装置150に送信されたときのデータストリームポインタの状態は“t”の値に対応した。データストリームポインタが“(t+K)”の値を有するときの状態と対応する次の時刻において、データ読み出し命令“getElements(P)”の実行に起因する命令信号が、データストリーム処理装置150によって受信された。“getelements(P)”命令は、データストリームからP個のデータ要素の読み出しを要求した。しかしながら、図12Bで示されたように、P個のデータ要素の読み出しは、データストリームポインタに関する“setcount(M)”のしきい値を越えることに帰着する。しきい値は、“t+M”に等しい。従って、“getElements(P)”動作の出力は、無効であると宣言される。   In FIG. 12B, the “setcount ()” instruction has an argument M. This is because the state of the bit pointer at the moment the instruction (ie, control signal) associated with the “setcount (M)” instruction is sent from the data engine core 142 to the data stream processing device 150 (see FIG. 3). Set an upper bound on the data pointer state associated with. In FIG. 12B, the state of the data stream pointer when the “setcount (M)” instruction is transmitted to the data stream processing device 150 corresponds to the value of “t”. At the next time corresponding to the state when the data stream pointer has a value of “(t + K)”, an instruction signal resulting from the execution of the data read instruction “getElements (P)” is transmitted by the data stream processing device 150. Received. The “getelements (P)” instruction requested reading P data elements from the data stream. However, as shown in FIG. 12B, the reading of the P data elements results in exceeding the “setcount (M)” threshold for the data stream pointer. The threshold is equal to “t + M”. Therefore, the output of the “getElements (P)” operation is declared invalid.

本発明の実施例の上述の討論において、メインプロセッサ(すなわち、メイン処理装置)は単一のデータエンジンに接続されると説明された一方、それは、同様に、複数のデータエンジンを備える単一の階層に接続されることができるであろう。多くのデータエンジンを階層型方式で配置することが同様に可能である。例えば、メインプロセッサは、自身をデータエンジンとして更に高いレベルの階層に提示し得る。   In the above discussion of the embodiments of the present invention, it has been described that the main processor (ie, the main processing unit) is connected to a single data engine, while it is likewise a single processor comprising multiple data engines. Could be connected to a hierarchy. It is equally possible to arrange many data engines in a hierarchical manner. For example, the main processor may present itself as a data engine to a higher level hierarchy.

興味のある読み手のために、本発明の実施例の更に一般的な特徴が、以下の段落において説明される。   For the interested reader, more general features of embodiments of the present invention are described in the following paragraphs.

「概観」
“AudioDE”は、ポータブルオーディオアプリケーション内に内蔵されたデジタル信号処理に合わせて調整される、アプリケーションクラス特有のデータエンジンである。構造上の特性の組み合わせ、及び高度に並列処理化しているコンパイラは、オーディオアプリケーションに関する最小の電力及び領域の要求に帰着する解決法をもたらす。付随の専用システム関数、及び一般的な“ARM-AMBA”インタフェース関数(AIKO)は、“AudioDE”の容易な集積化をサポートする。
"Overview"
“AudioDE” is an application class specific data engine that is tailored to digital signal processing built into portable audio applications. A combination of structural characteristics and a highly parallelizing compiler provides a solution that results in minimal power and area requirements for audio applications. The accompanying dedicated system functions and the general “ARM-AMBA” interface function (AIKO) support easy integration of “AudioDE”.

「導入」
“AudioDE”のための設計目標は、ポータブルオーディオプレーヤーの必要条件、すなわち電力及び領域に関する性能(PPA)の最大化に焦点を合わせる。これは、まだ小さなコアサイズ、及び小さなメモリフットプリントで、そのタスクのために最小の“MHz”を必要とするデジタル信号処理プラットフォーム(DSP)に帰着する。整数及び分数の両方のデータ計算に関して、マイクロ構造が標準のDSP命令セットを特色とするので、名前にもかかわらず、他のDSPアルゴリズムに対して“AudioDE”が等しくうまく用いられ得る。
"Introduction"
The design goal for “AudioDE” focuses on maximizing the requirements of portable audio players, namely power and area performance (PPA). This results in a digital signal processing platform (DSP) that still requires a minimum “MHz” for its task, with a small core size, and a small memory footprint. For both integer and fractional data calculations, "AudioDE" can be used equally well for other DSP algorithms, despite the name, because the microstructure features a standard DSP instruction set.

“AudioDE”コアは、計算のリソース、レジスタファイル、メモリ帯域幅、及びアドレス生成能力の間のバランスをとる。この特性は、可変長−ロング命令ワード(Variable Length - Long Instruction Word:VL−LIW)制御器に関する複数の命令セットと共に、興味のある応用分野では一般的であるので、“MHz”要求を最小限にする非常に速い極めて並列的なアルゴリズムの開発を可能にする。   The “AudioDE” core strikes a balance between computational resources, register files, memory bandwidth, and address generation capabilities. This property, along with multiple instruction sets for variable length-long instruction word (VL-LIW) controllers, is common in applications of interest, thus minimizing "MHz" requirements. Enables the development of very fast and extremely parallel algorithms.

“AudioDE”は、単一の24ビットの整数演算装置(Arithmetic Logic Unit:ALU)と、48ビットの累算を行う単一の24x24ビットの積和演算装置(Multiplier and Accumulator unit:MAC)とを備えるデュアルハーバード構造である。これらのユニットは、2つのデータメモリポート、及び付随のアドレス生成器と、並列に動作する。効率的な単一サイクルメモリアクセスは、ビット反転、及びモジュロアドレス指定のような全てのアドレス指定モードに関してサポートされる。   “AudioDE” includes a single 24-bit integer arithmetic unit (ALU) and a single 24 × 24-bit multiply-accumulate unit (Multiplier and Accumulator unit: MAC) that accumulates 48 bits. It has a dual Harvard structure. These units operate in parallel with two data memory ports and an associated address generator. Efficient single cycle memory access is supported for all addressing modes such as bit inversion and modulo addressing.

ALUは、圧縮されたメディアファイルに関して典型的であるビットストリームアクセスを容易にするための命令によって拡張される。この特徴によって、“AudioDE”は、DMA駆動された入力ストリームのデータを直接処理することが可能になると共に、多くの標準に共通であるように、ストリームにおける命令順変更アクセスに関する自動バッファリング設備を提供する。メモリポートのような他の外部インタフェースと同じように、データが利用不可能であるときに、“AudioDE”は自動的に低電力モードに入る。   The ALU is extended with instructions to facilitate bitstream access that is typical for compressed media files. This feature allows “AudioDE” to directly process data from DMA-driven input streams and provides an automatic buffering facility for instruction reordering access in the stream, as is common to many standards. provide. As with other external interfaces such as memory ports, “AudioDE” automatically enters a low power mode when data is not available.

“OptimoDE”構造は、総合的な一式の開発ツールを搭載している。これらのツールは、コア、命令セットシミュレータのようなシミュレーション手段の強化を可能にする構造上の手段、及び“OptimoDE”の高度な並列処理化コンパイラの両方を備えている。コンパイラは、あらゆる手作りのアセンブリライブラリと同じくらい良好なコード効率を達成する。それらのツールが対話型環境において操作され得るので、ソースレベルにおける最適化のため、及びスピードとオブジェクトコードサイズとの間のトレードオフのためにフィードバックが提供される。   The “OptimoDE” structure is equipped with a comprehensive set of development tools. These tools include both cores, structural means that allow for enhanced simulation means such as instruction set simulators, and "OptimoDE" advanced parallel processing compilers. The compiler achieves code efficiency as good as any handmade assembly library. Since these tools can be operated in an interactive environment, feedback is provided for optimization at the source level and for trade-offs between speed and object code size.

MP3デコーダは、“AudioDE”コア、及び“OptimoDE”ツールの効率に関する良い例である。デコーダは、22[Kbyte]のプログラム、及び22[Kbyte]のデータメモリを備えて、わずか8[MHz]サイクルを必要とするようにプログラムされ得ると共に、42[Kgate]コアに対する1.2[V]の印加で、0.13[μm]のCMOSにおける0.8[mW]の電力消費をもたらす。   The MP3 decoder is a good example of the efficiency of the “AudioDE” core and “OptimoDE” tool. The decoder can be programmed to require only 8 [MHz] cycles with a 22 [Kbyte] program and 22 [Kbyte] data memory, and 1.2 [V] for the 42 [Kgate] core. ] Results in a power consumption of 0.8 [mW] in a 0.13 [μm] CMOS.

「“OptimoDE”技術」
“AudioDE”は、構造の一部として提供された標準のツール及びIPフレームワークを使用して、標準の“OptimoDE”構造から得られる。これは、特定の構成がこの明細書において提示されるけれど、更に良くアプリケーションに適合する変形、または拡張を生成することは簡単であるということを意味する。データエンジンの開発サイクルには以下の3つの段階がある。:
“OptimoDE” technology
“AudioDE” is derived from the standard “OptimoDE” structure using the standard tools and IP framework provided as part of the structure. This means that although specific configurations are presented in this specification, it is easy to generate variations or extensions that better fit the application. There are three stages in the data engine development cycle: :

−設計段階:マイクロ構造の選択、または創作。
−プログラミング段階:データエンジン上で動作することになるタスクに関する、固定された構造のためのソースコードのコンパイル、及びプロファイリング、
−実装段階:合成可能な“Verilog”におけるマイクロ構造の具体化。これは、標準の具体化、もしくは利用者に定義されたリソースの具体化を包含する。
-Design stage: selection or creation of microstructures.
-Programming phase: compiling and profiling source code for a fixed structure for tasks that will run on the data engine;
-Implementation stage: Implementation of the microstructure in synthesizable "Verilog". This includes standard instantiations or resource instantiations defined by users.

マイクロ構造が修正され得るとき、最初の2つの段階は反復過定になり得る。全てが1つのフレームワークの一部である構成ツールは、この過程を単純化する。他の場合は、最後の2つの段階のみが適用できると共に、固定された構造のためのマシンコードのみが生成されることになる。図13は、この過程を説明する。   When the microstructure can be modified, the first two stages can be over-determined repeatedly. A configuration tool that is all part of one framework simplifies this process. In other cases, only the last two stages can be applied and only machine code for a fixed structure will be generated. FIG. 13 illustrates this process.

設計段階の結果は、“DesignDE”構成ツールによる固定の特性を有するマイクロ構造のリリースである。ISSモデルが、同様に生成される。   The result of the design phase is the release of a microstructure with fixed characteristics by the “DesignDE” configuration tool. An ISS model is similarly generated.

この過程の一部分は、関連したコードフラグメントのプログラミングとプリファイリングを包含すると共に、マイクロ構造を改善する特定の目的がなければ、以下に説明されたプログラミング段階と等しい。   Part of this process involves the programming and profiling of related code fragments and is equivalent to the programming steps described below, unless there is a specific purpose to improve the microstructure.

“DesignDE”は、いくつかの構成要素を備えている。構成ツールは、所定のマイクロ構造を取り込むと共に、容易な修正及び拡張を可能にする。後者の事例において、デザイナーはデータ経路リソース間の相互接続を定義する。機能装置を有する標準のリソースライブラリが提供される。   “DesignDE” has several components. The configuration tool captures a given microstructure and allows easy modification and expansion. In the latter case, the designer defines the interconnection between data path resources. A standard resource library with functional devices is provided.

利用者に定義されたリソースの設計は、そのような構成要素のライブラリを維持すると共に、“C”、“C++”、または“システムC(System C)”のソース記述から“Verilog”を生成するライブラリアン(Librarian)によって促進される。この“Verilog”は、機能的に正しいと共に、合成可能である。   User-defined resource design maintains a library of such components and generates a “Verilog” from the source description of “C”, “C ++”, or “System C” Promoted by Librarian. This “Verilog” is functionally correct and can be synthesized.

プログラミング段階の結果は、提供されたマイクロ構造のための所定のソースコードと対応する“DEvelop”コンパイラによるマイクロコードのリリースである。   The result of the programming phase is the release of microcode by the “DEvelop” compiler corresponding to the given source code for the provided microstructure.

ソースコードのコンパイルは、対話型方式で実行される。“DEvelop”は、詳細なスケジュール、及びリソースの使用法に関して、詳細で静的なプロファイリング結果を提供する。   The source code is compiled in an interactive manner. “DEvelop” provides detailed and static profiling results regarding detailed schedules and resource usage.

改良された動的なプロファイリングは、マイクロ構造を補足するISSモデルに基づいて実行され得る。   Improved dynamic profiling can be performed based on an ISS model that complements the microstructure.

実装段階の結果は、“BuildDE”ツールによって例示されたマイクロ構造の合成可能な“Verilog”である。コード開発が設計段階の結果のみを必要とするので、実装段階は、それとの並列処理において実行され得ると共に、従って、経過時間を減少させる。   The result of the implementation phase is a synthesizable “Verilog” of the microstructure exemplified by the “BuildDE” tool. Since code development requires only the results of the design phase, the implementation phase can be performed in parallel with it, thus reducing elapsed time.

「アプリケーションクラス特有の設計フロー」
“AudioDE”は、“OptimoDE”ツールを用いて構成されたコアの特有の結果である。“OptimoDE”の開始するマイクロ構造のうちの1つからスタートして、このセクションは、“AudioDE”の設計過程を示す。
"Application class specific design flow"
“AudioDE” is a unique result of a core constructed using the “OptimoDE” tool. Starting from one of the “OptimoDE” starting microstructures, this section shows the design process of “AudioDE”.

図14は、設計過程における様々なステップを説明する。処理の目的は、過剰設計のリスクを除外する一方、コアコストとその効率との間のバランスを発見することである。   FIG. 14 illustrates various steps in the design process. The purpose of the process is to find the balance between core cost and its efficiency while eliminating the risk of overdesign.

アルゴリズム及びアプリケーションクラス分析:出発点として、多くの現存するオーディオアプリケーション、及び一般的なDSPアプリケーションが分析されて、輪郭を描かれた。とりわけ、以下の観測結果は、オーディオアルゴリズムに関連したと思われた。:   Algorithm and application class analysis: As a starting point, many existing audio applications and general DSP applications were analyzed and outlined. In particular, the following observations seemed to be related to the audio algorithm. :

−ノイズ要求は、中間のスケーリングオーバーヘッドを減少させる24ビットデータ経路を支持する。
−オーディオ符号化アルゴリズムは、MACの集中的フィルターバンクに基づいている。
−可変長データは、ビットストリームから読まれると共に、ビットストリームに挿入される。
Noise requirements support a 24-bit data path that reduces intermediate scaling overhead.
-The audio encoding algorithm is based on MAC's centralized filter bank.
-Variable length data is read from the bitstream and inserted into the bitstream.

それら、及び更に精巧な観測結果が、命令セット特殊化、もしくはデータ経路の並列処理化のいずれかによって解決されるべきマイクロ構造に関する性能予測を定義するために使用される。   These, and more elaborate observations, are used to define performance predictions for the microstructure to be solved either by instruction set specialization or data path parallelization.

アプリケーション特有のリソース、及び命令セット:“AudioDE”に関するこの方法のアプリケーションのうちの1つは、ビットストリームアクセスに関する標準のALUの強化に帰着した。アルゴリズム分析が示すのは、特にこの目的のための命令を提供することが特筆すべき節約に帰着するということである。   Application-specific resources and instruction set: One of the applications of this method for “AudioDE” resulted in an enhancement of the standard ALU for bitstream access. Algorithmic analysis shows that providing instructions specifically for this purpose results in significant savings.

この特殊化は、計算周期の“MHz”を節約するばかりでなく、ストリーミングメディアに対する統一されたインタフェースを提供することにより、構造上の複雑さを減少させるので、特に効果的である。   This specialization is particularly effective because it not only saves the “MHz” of the calculation period, but also reduces the structural complexity by providing a unified interface to streaming media.

一般的に、“AudioDE”は、信号処理のための分数演算、標準の“C”のサポートのための整数演算、及びゼロオーバーヘッドアドレス計算(zero-overhead address computation)のための拡張された命令に関して等しい注意を有する豊かな命令セットを特色とする。   In general, "AudioDE" refers to extended instructions for fractional arithmetic for signal processing, integer arithmetic for standard "C" support, and zero-overhead address computation. Featuring a rich instruction set with equal attention.

システム構造チューニング:マイクロ構造定義のこの特徴は、継続的なゼロオーバーヘッド並列MACスタイル計算(zero-overhead parallel MAC-style computation)を実行する能力に対応する。性能インジケータは、伝統的なDSPベンチマークアルゴリズムと、オーディオアプリケーションにおいて発見されたフィルタコードの両方である。   System structure tuning: This feature of the micro structure definition corresponds to the ability to perform continuous zero-overhead parallel MAC-style computation. The performance indicators are both traditional DSP benchmark algorithms and filter codes found in audio applications.

このチューニングステージは、領域及び電力消費に関して効率的な状態を維持する一方、高スループットの計算をサポートするデータ経路を定義した。従って、“AudioDE”システム構造は、単一のMAC及びALUだけを含むように選択された。これが動作の並列処理を制限するけれども、ALU及びMACは、ユニット上に100%の負荷がある状態でアルゴリズムが操作され得るように配置され、従って、高いレベルのデータ移動の並列処理を提供する。   This tuning stage defined a data path that supports high-throughput calculations while maintaining efficient state and power consumption. Therefore, the “AudioDE” system structure was chosen to include only a single MAC and ALU. Although this limits the parallelism of operation, the ALU and MAC are arranged so that the algorithm can be operated with 100% load on the unit, thus providing a high level of data movement parallelism.

「“AudioDE”ハードウェア構造」
全体のハードウェア構造は、図15において説明される。
"AudioDE hardware structure"
The overall hardware structure is illustrated in FIG.

“AudioDE”は、多重命令セット、及び可変長−ロング命令ワード(Variable Length - Long Instruction Word:VL−LIW)を備える低分岐遅延制御器(low branch delay controller)を特色とする。“OptimoDE”コンパイラは、全てのプログラムにおいて命令及びデータのパイプラインの十分な可視性を備えていると共に、ループ制御の複雑さは、ハードウェアの複雑さを減少させる開発ツールによって解決される。   “AudioDE” features a low branch delay controller with multiple instruction sets and a variable length-long instruction word (VL-LIW). The “OptimoDE” compiler has sufficient visibility of the instruction and data pipeline in all programs, and the complexity of loop control is solved by development tools that reduce hardware complexity.

全ての“AudioDE”機能装置は、内部のパイプラインがない単一サイクルである。“OptimoDE”コンパイラが全てのデータ経路動作の原因となるので、制御器におけるいかなる修正もなく、更に高いクロック周波数を達成するために、装置はパイプライン化され得る。   All “AudioDE” functional devices are single cycle with no internal pipeline. Since the “OptimoDE” compiler is responsible for all data path operations, the device can be pipelined to achieve higher clock frequencies without any modification in the controller.

“AudioDE”データパスは、24ビットALU、及び24ビットMAC装置から構成される。MACユニットは、単精度乗算(single-precision multiplication)、または単一サイクル倍精度累算(single-cycle, double-precision accumulation)を実行する。分数乗算は、出力の自動位置合せによってサポートされる。飽和装置は、装置の不可欠な部分であるので、全ての命令は、飽和状態にするか、または非飽和状態にすることができる。更に、ALUとMACの両方は、乗算、右シフト、及び型変換のために、絶対的かつ明白な丸め命令をサポートする。   The “AudioDE” data path is composed of a 24-bit ALU and a 24-bit MAC device. The MAC unit performs single-precision multiplication or single-cycle, double-precision accumulation. Fractional multiplication is supported by automatic output alignment. Since the saturator is an integral part of the device, all instructions can be saturated or desaturated. In addition, both ALU and MAC support absolute and explicit rounding instructions for multiplication, right shifting, and type conversion.

データ経路は、大きな高帯域幅レジスタファイルを特色とする。そのサイズは、FFT及びDCT、または同様のアルゴリズムの高スピードの基数4の計算に適当である。   The data path features a large high bandwidth register file. Its size is suitable for high speed radix-4 calculations of FFT and DCT, or similar algorithms.

“AudioDE”コアにおける構造上の複雑さを減少させると共に、コンパイラのタスクを単純化するために、算術データ経路は、比較的に、以下で説明されるアドレス生成データ経路から分離される。   To reduce structural complexity in the “AudioDE” core and simplify compiler tasks, the arithmetic data path is relatively separated from the address generation data path described below.

高い基数のアルゴリズムと同様に、シンプルな単一サイクルの積和演算シーケンスを維持するために、第3の単一ワイドプログラムメモリポート(third single-wide program memory port)の隣に、2つの独立したデータメモリポートが提供された。   As with the high radix algorithm, two independent next to the third single-wide program memory port to maintain a simple single-cycle multiply-accumulate sequence A data memory port was provided.

原価重視の内臓されたアプリケーションに関するメモリ必要条件を最小限にするために、X−メモリ及びY−メモリは、非対称的な状態にされる。X−メモリのみが、典型的なオーディオ処理要求を満たすために、24ビット幅であり、一方Y−メモリは、整数及び係数データに十分な16ビットに最適化される。大きなデータ経路レジスタファイルは、24ビットデータがX−メモリにのみ制限されるという事実と関連付けられた不利な条件がないということをが保証する。   In order to minimize the memory requirements for cost-sensitive embedded applications, the X-memory and Y-memory are made asymmetric. Only the X-memory is 24 bits wide to meet typical audio processing requirements, while the Y-memory is optimized for 16 bits sufficient for integer and coefficient data. A large data path register file ensures that there are no adverse conditions associated with the fact that 24-bit data is limited only to X-memory.

上記のセクションにおいて論じられたように、コスト最適化、及びシステム集積化問題に関して全体の自由を与えるために、“AudioDE”のメモリは、データ経路の外にある。   As discussed in the above section, the “AudioDE” memory is outside the data path to provide total freedom regarding cost optimization and system integration issues.

各データメモリは、15ビットアドレス範囲を有するそれ自身のアドレス生成器を備えている。これがシングルタスクに関して維持されるアドレス範囲である点に注意が必要であり、トータルのアドレス範囲は、サブシステムにおけるメモリ管理機能によって拡張され得る。   Each data memory has its own address generator with a 15 bit address range. Note that this is the address range maintained for a single task, and the total address range can be extended by memory management functions in the subsystem.

アドレス生成器は、自動モジュロアドレス指定、及びプログラム可能なビット反転アドレス指定を含む全てのモードにおいて、単一サイクル動作が可能である。後者は、特にFFTアルゴリズムにとって重要である。   The address generator is capable of single cycle operation in all modes including automatic modulo addressing and programmable bit-reversed addressing. The latter is particularly important for the FFT algorithm.

電力、領域を節約すると共に、複雑さを制御するように、利用可能な1次ポインタ及び2次ポインタ操作レジスタフィールドの数は最適化される。   The number of available primary pointer and secondary pointer manipulation register fields is optimized to save power, space, and control complexity.

ストリームインタフェースは、プログラミングと集積化の両方の観点から、改良された性能及び減少された複雑さに関する“AudioDE”のユニークなマルチメディアの特定の機能である。   The stream interface is a unique multimedia specific feature of “AudioDE” for improved performance and reduced complexity, both from a programming and integration perspective.

このインタフェースによって、“AudioDE”は、DMAスレーブ装置として接続されると共に、ホストシステムとの更なる双方向の情報授受(双方向通信)の必要性なしで、ビットストリームを処理することが可能になる。   This interface allows “AudioDE” to be connected as a DMA slave device and to process bitstreams without the need for further bidirectional information exchange (bidirectional communication) with the host system. .

そのデータ経路APIは、自動データ位置合せ機能を有する可変長ビットストリームアクセスに関する機能、及び一定ビットレート(Constant Bit-Rate:CBR)オーディオ符号化アルゴリズムにおいては一般的であるビットストリームに対する命令順変更アクセスのためのストリームバッファと巻き戻し機能を提供する。   The data path API is a function related to variable length bit stream access having an automatic data alignment function, and an instruction reordering access to a bit stream which is common in a constant bit rate (CBR) audio encoding algorithm Provides a stream buffer and rewind function for

「電力減少機能」
低電力消費に関する一般的な“OptimoDE”アプローチは、利用可能な並列処理全てを活用することによって“MHz”要求を減少させることである。これは、非常に高いリソース活動を伴う非常に濃密なコードに帰着し、従って、同様にリソースの不必要なオンオフトグリング(on-off toggling)を最小限にする。更に、ループ本体に関して、そのような濃密なコードは、キャッシュか、もしくはコアの外側のシステムの範囲内でのメモリ管理に関する他の最適化に適当である。
"Power reduction function"
A common "OptimoDE" approach for low power consumption is to reduce "MHz" requirements by taking advantage of all available parallelism. This results in a very dense code with very high resource activity, thus minimizing unnecessary on-off toggling of resources as well. Further, with respect to the loop body, such dense code is suitable for other optimizations related to memory management within the cache or system outside the core.

それらの構造上の利点は別として、“AudioDE”コアは、追加の電力節約技術を備えている。その特定の低電力ライブラリに加えて、ARM社の物理的IP部門から提供されるライブラリがシリコン−マッピングの間に使用され得る。   Apart from their structural advantages, the “AudioDE” core has additional power saving technologies. In addition to that particular low power library, a library provided by ARM's physical IP department can be used during silicon-mapping.

クロックゲーティング:“AudioDE”コア記述は、十分に業界標準クロックゲーティングと互換性がある。   Clock gating: The "AudioDE" core description is fully compatible with industry standard clock gating.

“AudioDE”は、特に、ストリーミングインタフェースと、外部記憶装置使用の両方のために設計されている。データが利用不可能である場合、“AudioDE”コアは、自動的に低電力機能停止モード(low-power stall mode)に入る。   “AudioDE” is specifically designed for both streaming interfaces and use of external storage devices. If data is not available, the “AudioDE” core automatically enters a low-power stall mode.

“OptimoDE”コンパイラは、完全な命令及びデータパイプラインの十分な可視性を備えている。従って、データが入力に利用可能であるに違いないとき、もしくはそれが生じるとき、この特性は、予期しないパイプライン機能停止、及び関係がある追加の論理回路を回避する。   The “OptimoDE” compiler has full visibility of the complete instruction and data pipeline. Thus, when data must be available for input, or when it occurs, this property avoids unexpected pipeline outages and related additional logic.

「システム集積化」
“AudioDE”はデータエンジンに関係するけれど、それは、同様に明確に費用効率がよいシステム集積化のためにも設計される。この理由によって、いくつかの構成要素は、例えばDMA制御器のような、システムに既に存在するブロックとこれらの機能を共有する可能性を提供するために、コアから明白に除外された。
"System integration"
“AudioDE” is related to the data engine, but it is also designed for clearly cost-effective system integration. For this reason, some components have been explicitly excluded from the core to provide the possibility to share these functions with blocks that already exist in the system, for example DMA controllers.

原価重視のシステムメモリの特徴に関して、最適化に関する同じ自由がシステム設計者に提供される。システム集積化シナリオの2つの例が、以下で説明される。両方のシナリオは、“OptimoDE”のためのAMBA集積化キット(AMBA Integration Kit:AIKO)のような標準の“OptimoDE”の構成要素によってサポートされる。   With respect to cost-sensitive system memory features, the same freedom for optimization is provided to system designers. Two examples of system integration scenarios are described below. Both scenarios are supported by standard “OptimoDE” components, such as AMBA Integration Kit (AIKO) for “OptimoDE”.

最小限コストの解決法:このシナリオは、アプリケーション柔軟性を犠牲にして見えてくる、電力を最適化されると共に領域を最適化された解決法に対応する。これは、例えば低コストでポータブルのフラッシュカードをベースにしたオーディオプレーヤー製品に適合するであろう。   Minimal cost solution: This scenario corresponds to a power optimized and area optimized solution that appears at the expense of application flexibility. This would be compatible with audio player products based on, for example, low cost portable flash cards.

この場合、“AudioDE”は、ローカルな専用のメモリに統合される。メモリサイズ及び接続形態は、最も良い結果の関数として自由に選択され得るので、この構成は、電力消費を最小限にする。更に、ストリーミングインタフェースは、あらゆる高速なシステムの双方向通信(system interaction)の必要性を完全に取り除き、従って“AudioDE”が非常に効率的な高性能の周辺装置として動作することを可能にする。   In this case, “AudioDE” is integrated into a local dedicated memory. This configuration minimizes power consumption because the memory size and topology can be freely selected as a function of the best results. In addition, the streaming interface completely eliminates the need for any fast system interaction, thus allowing "AudioDE" to operate as a highly efficient high performance peripheral.

AIKOインタフェースは、それらのメモリが常にシステムに対して見えるということを保証する。   The AIKO interface ensures that their memory is always visible to the system.

柔軟性のある共用メモリ構造:このシナリオは、最小のメモリ電力消費の制限下にあるアプリケーション開発に関する最高の柔軟性を対象にする。そのようなアプリケーションの例は、多くの異なるコーデックをサポートするオーディオプレーヤーであろう。   Flexible shared memory structure: This scenario targets the highest flexibility for application development subject to the limitations of minimum memory power consumption. An example of such an application would be an audio player that supports many different codecs.

ホストバス、またはDMAコントローラのようなあらゆるシステムリソースと同様に、この場合、全ての“AudioDE”メモリポートは、柔軟性のある単一のレベルの共用メモリアービタ回路(single-level shared memory arbiter)に接続される。この構成は、まだ最小の電力消費のための最適なメモリサイズ及びレイアウトを可能にする一方、全てのシステム機能のロックフリー(lock-free)、及びスターベイションフリー(starvation-free)の動作を保証する。   As with any system resource such as the host bus or DMA controller, all “AudioDE” memory ports in this case are connected to a flexible single-level shared memory arbiter circuit. Connected. This configuration still allows for optimal memory size and layout for minimal power consumption, while providing lock-free and starvation-free operation of all system functions. Guarantee.

特にこの“AudioDE”のサブシステムは、同様に、メモリ及びタスクのアドレス空間の動的な構成を可能にするための軽量のメモリ管理機能を特色とする。   In particular, the "AudioDE" subsystem also features a lightweight memory management function to enable dynamic configuration of memory and task address spaces.

「MP3アプリケーション例」
性能証明の要点を確立する手段として、IS0/IEC仕様のMP3デコーダアルゴリズムが“AudioDE”のためにコンパイルされた。このアルゴリズムには、2つの明白な特徴がある。第1に、ビットストリームデコード及び逆量子化(dequantize)機能は、ステレオ処理、及び大きな2ステージの合成フィルターバンクが後に接続される。
"MP3 application example"
As a means to establish the point of performance certification, the MP3 decoder algorithm of IS0 / IEC specification was compiled for "AudioDE". This algorithm has two distinct features. First, the bitstream decoding and dequantize functions are later connected with stereo processing and a large two-stage synthesis filter bank.

コードの最初の部分は、豊かな“AudioDE”ビットストリームアクセスAPIを使用した。これは、シンプルかつコンパクトで、非常に効率的なコードに帰着した。アルゴリズムの第2の部分は、“AudioDE”の高い基数の処理能力を利用するために組織化された。両方のセクションのために、Cコードがソース言語として使用された。   The first part of the code used the rich “AudioDE” bitstream access API. This resulted in a simple, compact and very efficient code. The second part of the algorithm was organized to take advantage of the high radix processing power of “AudioDE”. For both sections, C code was used as the source language.

その結果生じるアルゴリズムは、320[Kbit/s]のビットストリームから、48[KHz]でサンプリングされたステレオの信号のために8[MHz]周期を必要とした。このコードは、22[Kbyte]のプログラムメモリ、及び22[Kbyte]のデータメモリを使用した。電力節約技術を配置することは、上記のセクションにおいて、ARM社の物理的IP低電力ライブラリ(Physical IP low-power libraries)を使用して、1.2[V]で0.13[μm]のCMOSにおける0.1[mW/MHz]の電力消費を有する42[Kgate]コアをもたらす、と記述した。そのようなオーディオストリームを復号化する場合、“AudioDE”コアに関する電力消費は、ちょうど0.8[mW]以下であり、一方、最適なメモリサブシステムによって、全消費電力は、十分に2[mW]未満となるであろう。   The resulting algorithm required 8 [MHz] periods for a stereo signal sampled at 48 [KHz] from a 320 [Kbit / s] bitstream. This code used 22 [Kbyte] program memory and 22 [Kbyte] data memory. Deploying power saving technology is described in the above section using 0.13 [μm] at 1.2 [V] using ARM's Physical IP low-power libraries. It has been described to yield a 42 [Kgate] core with a power consumption of 0.1 [mW / MHz] in CMOS. When decoding such an audio stream, the power consumption for the “AudioDE” core is just below 0.8 [mW], while with an optimal memory subsystem, the total power consumption is sufficiently 2 [mW ] Would be less.

「結論」
“AudioDE”は、“OptimoDE”構造から得られると共に、標準が供給された構成ツール及び開発ツールを使用する、小さくかつ電力の効率的なコアである。これの結果は、半分のゲート及びリソースにより、まだほぼ代替解決法の2倍のスピードでMP3ベンチマークアルゴリズムを実行することが可能な設計である。
"Conclusion"
“AudioDE” is a small, power efficient core that uses the configuration and development tools derived from the “OptimoDE” structure and supplied with standards. The result of this is a design that can run the MP3 benchmark algorithm with half the gate and resources, yet almost twice as fast as the alternative solution.

発明の実例となる実施例が添付図面を参照してここに詳細に示されたが、本発明がそれらの厳密な実施例に限定されないと共に、添付された特許請求の範囲によって定義された発明の範囲、及び精神から逸脱することなく、当業者により、それに対する様々な変更、及び修正が達成され得ると理解されるべきである。   While illustrative embodiments of the invention have been illustrated in detail herein with reference to the accompanying drawings, the invention is not limited to those precise embodiments and is intended to be the subject of the invention as defined by the appended claims. It should be understood that various changes and modifications thereto can be achieved by those skilled in the art without departing from the scope and spirit.

データ処理システムを概略的に説明する図である。1 is a diagram schematically illustrating a data processing system. FIG. 更に詳細に図1のデータエンジンを概略的に説明する図である。FIG. 2 schematically illustrates the data engine of FIG. 1 in more detail. 図1のデータストリーム処理装置の中のロジック回路、及び、どのようにデータストリーム処理装置がデータエンジンコアとインターフェイスするかを概略的に説明する図である。FIG. 2 is a diagram schematically illustrating a logic circuit in the data stream processing apparatus of FIG. 1 and how the data stream processing apparatus interfaces with a data engine core. どのように一連のデータストリーム処理タスクが図1のデータ処理装置によって実行されるかを概略的に説明するフローチャートである。FIG. 2 is a flowchart schematically illustrating how a series of data stream processing tasks are performed by the data processing apparatus of FIG. データストリームのデータ要素の入力及び出力を、それらが通過するとき管理するためにデータストリーム演算処理装置150の中で使用されるロジック回路を概略的に説明する図である。FIG. 2 schematically illustrates a logic circuit used in a data stream processing unit 150 to manage the input and output of data elements of a data stream as they pass through. データストリーム処理装置を通過するデータの流れを制御するロジック回路を概略的に説明する図である。It is a figure which illustrates schematically the logic circuit which controls the flow of the data which passes a data stream processing apparatus. データストリーム処理装置を通過するデータの流れを制御すると共に、同様に、データ転送が中断されたとき、転送中の保留データを記憶するように動作可能であるロジック回路を概略的に説明する図である。FIG. 6 schematically illustrates a logic circuit that controls the flow of data through a data stream processing device and is similarly operable to store pending data being transferred when the data transfer is interrupted. is there. 図6のロジック回路によって実行される多重化動作の状態機械表現を概略的に説明する図である。FIG. 7 schematically illustrates a state machine representation of a multiplexing operation performed by the logic circuit of FIG. 6. MP3オーディオデータストリームの一部分のフォーマットを概略的に説明する図である。It is a figure which illustrates roughly the format of the part of MP3 audio data stream. 図9Aの入力データストリーム部分に関してデータエンジンコア及び図3のデータストリーム処理装置によって実行される一連のデータ操作(もしくは処理タスク)を概略的に説明する図である。FIG. 9B is a diagram schematically illustrating a series of data operations (or processing tasks) executed by the data engine core and the data stream processing apparatus of FIG. 3 for the input data stream portion of FIG. 9A. 図3のバッファがソフトウェアFIFOとして実装される装置を概略的に説明する図である。FIG. 4 is a diagram schematically illustrating an apparatus in which the buffer of FIG. 3 is implemented as a software FIFO. 所定のサイズを有するデータワードからのデータ部分の読み出しを説明する図である。It is a figure explaining reading of the data part from the data word which has a predetermined size. 所定のサイズを有するデータワードからのデータ部分の読み出しを説明する図である。It is a figure explaining reading of the data part from the data word which has a predetermined size. どのように“setcount()”命令がデータ保護機能を実行するかを概略的に説明する図である。It is a figure which illustrates roughly how a "setcount ()" command performs a data protection function. どのように“setcount()”命令がデータ保護機能を実行するかを概略的に説明する図である。It is a figure which illustrates roughly how a "setcount ()" command performs a data protection function. 本発明の実施例の一般的な特徴を概略的に説明する図である。It is a figure which illustrates roughly the general characteristic of the Example of this invention. 本発明の実施例の一般的な特徴を概略的に説明する図である。It is a figure which illustrates roughly the general characteristic of the Example of this invention. 本発明の実施例の一般的な特徴を概略的に説明する図である。It is a figure which illustrates roughly the general characteristic of the Example of this invention.

符号の説明Explanation of symbols

110 メイン処理装置
120 メモリ
130 直接メモリアクセス(DMA)制御器
140 データエンジン
142 データエンジンコア
150 データストリーム処理装置
160 システムバス
210 データエンジン制御器
220 データストリーム機能装置
230 複数の他の機能装置
310 構成モジュール
320 データ受信モジュール
330 バッファインタフェース
332 バッファ
340 データストリーム制御器
350 制御インタフェース
360 アクセラレータインタフェース
362 アクセラレータ
370 DMAインタフェース
380 管理モジュール
510 データ入力レジスタ
520 データアクセスレジスタ
522 ビットポインタ
530 多重化モジュール
532 内部バッファ
810 デフォルト出力状態
820 バッファリング状態
830 バッファデータ読み出し状態
1005 ソフトウェアFIFO
1010 ヘッドアドレス
1020 テールアドレス
110 Main Processing Unit 120 Memory 130 Direct Memory Access (DMA) Controller 140 Data Engine 142 Data Engine Core 150 Data Stream Processing Unit 160 System Bus 210 Data Engine Controller 220 Data Stream Functional Unit 230 Multiple Other Functional Units 310 Configuration Module 320 Data reception module 330 Buffer interface 332 Buffer 340 Data stream controller 350 Control interface 360 Accelerator interface 362 Accelerator 370 DMA interface 380 Management module 510 Data input register 520 Data access register 522 Bit pointer 530 Multiplex module 532 Internal buffer 810 Default output state 820 bag Aringu state 830 buffer data read state 1005 software FIFO
1010 Head address 1020 Tail address

Claims (58)

(i)複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、
(ii)前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、
(iii)前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも1つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行するように動作可能なデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つの入力データストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理システム。
(i) a main processing unit operable to perform a plurality of data processing tasks;
(ii) a data engine having a data engine core operable to perform some of the plurality of data processing tasks on behalf of the main processing unit;
(iii) a data stream processing device that provides a data communication path between the main processing device and the data engine core;
The data stream processing device is
(a) a control interface operable to receive at least one instruction from the data engine core;
(b) receiving at least one input data stream and operative to perform at least one operation on the at least one input data stream to generate at least one output data stream including a series of data elements With a possible data stream controller,
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one reference position in the at least one input data stream;
The data stream processing system, wherein the data stream processing device executes at least one command based on the at least one reference position .
前記データエンジンコアによって実行されるデータ処理タスクのいくつかが、前記データエンジンコアによって実行可能な命令セットの少なくとも1つの命令を含む一連の命令を含み、
前記データエンジンコアが、前記少なくとも1つの命令の実行に関して、前記少なくとも1つの命令を前記データストリーム処理装置の前記制御インタフェースに出力するように動作可能である
ことを特徴とする請求項1に記載のデータストリーム処理システム。
Some of the data processing tasks performed by the data engine core comprise a series of instructions including at least one instruction of an instruction set executable by the data engine core;
The data engine core is operable to output the at least one instruction to the control interface of the data stream processing device with respect to execution of the at least one instruction. Data stream processing system.
前記入力データストリームが、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、
前記命令セットが、前記規則の所定のセットに基づいて定義される
ことを特徴とする請求項2に記載のデータストリーム処理システム。
The input data stream is a multimedia data stream structured according to a predetermined set of rules;
The data stream processing system of claim 2 , wherein the instruction set is defined based on the predetermined set of rules.
前記データストリーム処理装置が、前記データストリーム制御器による前記入力データストリームの受信に関して、もしくは前記出力データストリーム要素の送信に関して、前記少なくとも1つの命令に従って非同期的に動作するように動作可能である
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The data stream processing device is operable to operate asynchronously according to the at least one instruction with respect to reception of the input data stream by the data stream controller or with respect to transmission of the output data stream element; The data stream processing system according to claim 1, wherein:
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも1つによって構成可能である
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The data stream processing system of claim 1, wherein the data stream controller is configurable by at least one of the data engine and the main processing device comprising configuration information.
前記データストリーム制御器が、前記少なくとも1つの操作を実行しているとき、前記少なくとも1つの入力データストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である
ことを特徴とする請求項1に記載のデータストリーム処理システム。
When the data stream controller is performing the at least one operation, the data stream controller is operable to selectively buffer at least a portion of the at least one input data stream within a connected buffering resource. The data stream processing system according to claim 1.
前記データストリーム処理装置が、前記バッファリングリソースから選択的にデータを出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、
前記データストリーム制御器が、前記少なくとも1つの出力データストリームを生成するために、前記マルチプレクサの出力を制御するように動作可能である
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The data stream processing apparatus comprises a data output logic circuit having a multiplexer operable to selectively output data from the buffering resource;
The data stream processing system of claim 6 , wherein the data stream controller is operable to control an output of the multiplexer to generate the at least one output data stream.
前記接続されたバッファリングリソースが、ソフトウェアFIFOである
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The data stream processing system according to claim 6 , wherein the connected buffering resource is a software FIFO.
前記データストリーム制御器が、前記少なくとも1つの入力データストリームのどの部分が前記接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である
ことを特徴とする請求項6に記載のデータストリーム処理システム。
Claim 6 wherein the data stream controller, characterized in that said operable such that at least one of which parts of the input data stream to store the history of whether the currently stored in the connected buffered resources The data stream processing system described in 1.
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも1つによって構成可能であると共に、
前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのサイズを含む
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The data stream controller is configurable by at least one of the data engine and the main processing unit comprising configuration information;
The data stream processing system according to claim 6 , wherein the configuration information includes a size of the buffering resource connected to the data stream controller.
前記データストリーム処理装置が、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、
前記処理モジュールが、前記データプロセッサコアによって実行可能な前記命令セットの少なくとも1つの命令の実行に応答して、処理タスクを実行するように動作可能である
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The data stream processing device comprises a processing interface for providing a data path to a processing module;
The processing module of claim 1, wherein the processing module is operable to perform a processing task in response to execution of at least one instruction of the instruction set executable by the data processor core. Data stream processing system.
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも1つによって構成可能であると共に、
前記データエンジン、及び前記メイン処理装置のうちの少なくとも1つによって前記データストリーム処理装置に供給された前記構成情報が、少なくとも1つの前記処理リソースの特性を含む
ことを特徴とする請求項11に記載のデータストリーム処理システム。
The data stream controller is configurable by at least one of the data engine and the main processing unit comprising configuration information;
Claim 11 wherein the data engine, and the configuration information supplied to the data stream processing unit by at least one of the main processing apparatus, characterized by comprising at least the property of one of the processing resources Data stream processing system.
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも1つによって構成可能であると共に、
前記データエンジン、及び前記メイン処理装置のうちの少なくとも1つによって前記データストリーム処理装置に提供された前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのスタート地点、及びエンド地点を含む
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The data stream controller is configurable by at least one of the data engine and the main processing unit comprising configuration information;
The configuration information provided to the data stream processing device by at least one of the data engine and the main processing device is a start point and an end point of the buffering resource connected to the data stream controller. The data stream processing system according to claim 6 , comprising:
前記少なくとも1つの入力データストリームが、入力の一時的なシーケンスに順序よく配置された複数のデータ部分を含むと共に、
前記少なくとも1つの出力データストリームが、前記入力の一時的なシーケンスと異なる出力の一時的なシーケンスに順序よく配置された、前記入力の一時的なシーケンスの前記複数のデータ部分を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The at least one input data stream includes a plurality of data portions arranged in order in a temporary sequence of inputs;
The at least one output data stream includes the plurality of data portions of the temporary sequence of inputs arranged in order in a temporary sequence of outputs different from the temporary sequence of inputs. The data stream processing system according to claim 1.
前記データエンジンコアによって実行可能な前記命令セットの前記少なくとも1つの命令が、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである
ことを特徴とする請求項2に記載のデータストリーム処理システム。
Wherein said executable said instruction set by the data engine core at least one instruction, or an instruction having a response conditional, according to claim 2, characterized in that one of the instruction with an unconditional response Data stream processing system.
前記少なくとも1つの命令が、前記データストリーム機能装置によって出力された前記少なくとも1つの命令に応答して前記データストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、
前記それぞれの処理が、前記データストリーム制御器によって維持される、関連する状態機械を備える
ことを特徴とする請求項2に記載のデータストリーム処理システム。
The at least one instruction corresponds to a respective process to be performed by the data stream controller in response to the at least one instruction output by the data stream functional unit;
The data stream processing system of claim 2 , wherein the respective processing comprises an associated state machine maintained by the data stream controller.
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、選択的に前記少なくとも1つの入力データストリームのデータ部分をバッファさせるように動作可能なバッファリング命令を含む
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The instruction set executable by the data engine core includes a buffering instruction operable to cause the data stream controller to selectively buffer a data portion of the at least one input data stream. The data stream processing system according to claim 6 .
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記バッファリングリソースから前記少なくとも1つの入力データストリームの少なくとも1つのデータ要素を読み出させると共に、前記少なくとも1つの出力データストリームに対して前記少なくとも1つのデータ要素を出力させるように動作可能なデータ読み出し命令を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The instruction set executable by the data engine core causes the data stream controller to read at least one data element of the at least one input data stream from the buffering resource and the at least one output data The data stream processing system of claim 1 , further comprising a data read instruction operable to cause the stream to output the at least one data element.
前記管理情報が、前記データストリーム制御器によって前記少なくとも1つの出力データストリームに対して次に供給されるべき、前記少なくとも1つの入力データストリームのうちの1つにおけるデータを示す少なくとも現在の出力位置を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The management information is at least a current output position indicating data in one of the at least one input data stream to be next supplied to the at least one output data stream by the data stream controller. The data stream processing system according to claim 1 , further comprising:
前記データエンジンコアによって実行可能な前記命令セットが、対応する入力データストリームと関連付けられた入力の一時的なシーケンスにおける以前の地点のデータ要素と現在の出力位置が対応するように、前記現在の出力位置を変更させるように動作可能な後退命令を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The current output such that the instruction set executable by the data engine core corresponds to a data element at a previous point in a temporary sequence of inputs associated with a corresponding input data stream and a current output position. The data stream processing system of claim 1 , further comprising a back command operable to cause the position to change.
前記管理情報が、前記少なくとも1つの入力データストリームのどのデータ要素が前記バッファリングリソースに記憶されたかを示す履歴、及び前記少なくとも1つの入力データストリームのどのデータ要素が前記データストリーム制御器によって受信されたかを示す履歴のうちの少なくとも1つを含む
ことを特徴とする請求項6に記載のデータストリーム処理システム。
The management information includes a history indicating which data elements of the at least one input data stream are stored in the buffering resource, and which data elements of the at least one input data stream are received by the data stream controller. The data stream processing system according to claim 6 , comprising at least one of histories indicating whether or not.
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記データエンジンからのデータを前記少なくとも1つの出力データストリームに挿入させるように動作可能なデータ挿入命令を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The instruction set executable by the data engine core includes data insertion instructions operable to cause the data stream controller to insert data from the data engine into the at least one output data stream. The data stream processing system according to claim 1 .
前記データストリーム制御器に対する前記少なくとも1つの入力データストリームの供給のためのデータ通信経路を直接メモリアクセス制御器に提供するように動作可能な直接メモリアクセスインタフェースを備える
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The direct memory access interface operable to provide a direct memory access controller with a data communication path for supply of the at least one input data stream to the data stream controller. The described data stream processing system.
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも1つによって構成可能であると共に、
前記構成情報が、前記直接メモリアクセス制御器の少なくとも1つの特性を含む
ことを特徴とする請求項23に記載のデータストリーム処理システム。
The data stream controller is configurable by at least one of the data engine and the main processing unit comprising configuration information;
The data stream processing system of claim 23 , wherein the configuration information includes at least one characteristic of the direct memory access controller.
前記データストリーム処理装置が、前記データストリーム制御器が前記記憶されたデータ要素を前記少なくとも1つの出力データストリームに供給する前に、前記少なくとも1つの入力データストリームのデータ要素を一時的に記憶するためのデータ入力レジスタを備える
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The data stream processing device for temporarily storing data elements of the at least one input data stream before the data stream controller supplies the stored data elements to the at least one output data stream; The data stream processing system according to claim 1, further comprising: a data input register.
前記データエンジンコアによって実行可能な前記命令セットが、カウント設定命令と関連付けられた命令がデータエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The instruction set executable by the data engine core is related to the state of the data pointer at a moment when an instruction associated with a count setting instruction is transmitted from the data engine core to the data stream processing device. The data stream processing system of claim 1 , further comprising a count setting instruction operable to instruct the processing device to set an upper limit of a data pointer state.
前記データストリーム処理装置が、前記データエンジンに少なくとも一部組み込まれる
ことを特徴とする請求項1に記載のデータストリーム処理システム。
The data stream processing system according to claim 1, wherein the data stream processing device is at least partially incorporated in the data engine.
複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンとの間のデータ通信経路を提供するためのデータストリーム処理装置であって、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも1つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行するように動作可能なデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つの入力データストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理装置。
A data engine having a main processing device operable to execute a plurality of data processing tasks, and a data engine core operable to execute some of the plurality of data processing tasks on behalf of the main processing device A data stream processing device for providing a data communication path between
The data stream processing device is
(a) a control interface operable to receive at least one instruction from the data engine core;
(b) receiving at least one input data stream and operative to perform at least one operation on the at least one input data stream to generate at least one output data stream including a series of data elements With a possible data stream controller,
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one reference position in the at least one input data stream;
The data stream processing apparatus, wherein the data stream processing apparatus executes at least one command based on the at least one reference position .
(i)複数のデータ処理タスクをメイン処理装置に割当てる処理と、
(ii)データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、
(iii)データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、
(iv)前記データエンジンコアからの少なくとも1つの命令を、前記データストリーム処理装置において受信する処理と、
(v)少なくとも1つの入力データストリームを、前記データストリーム処理装置のデータストリーム制御器において受信する処理と、
(vi)一連のデータ要素を含む少なくとも1つの出力データストリームを生成するために、前記少なくとも1つの入力データストリームに関して少なくとも1つの操作を実行する処理とを含み、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つの入力データストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理方法。
(i) a process of assigning a plurality of data processing tasks to the main processing unit;
(ii) using a data engine having a data engine core to execute some of the plurality of data processing tasks on behalf of the main processing device;
(iii) using a data stream processing device to provide a data communication path between the main processing device and the data engine core;
(iv) a process of receiving at least one instruction from the data engine core in the data stream processing device;
(v) receiving at least one input data stream at a data stream controller of the data stream processing device;
(vi) performing at least one operation on the at least one input data stream to generate at least one output data stream including a series of data elements;
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one reference position in the at least one input data stream;
The data stream processing method, wherein the data stream processing device executes at least one command based on the at least one reference position .
(i)複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、
(ii)前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、
(iii)前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも1つのデータストリームに対する第1のインタフェースと、一連のデータ要素を含む少なくとも1つのデータ要素ストリームに対する第2のインタフェースとを有すると共に、前記第1のインタフェースと前記第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行するように動作可能であるデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理システム。
(i) a main processing unit operable to perform a plurality of data processing tasks;
(ii) a data engine having a data engine core operable to perform some of the plurality of data processing tasks on behalf of the main processing unit;
(iii) a data stream processing device that provides a data communication path between the main processing device and the data engine core;
The data stream processing device is
(a) a control interface operable to receive at least one instruction from the data engine core;
(b) having a first interface for at least one data stream and a second interface for at least one data element stream including a series of data elements, and wherein the first interface and the second interface A data stream controller operable to perform at least one operation for managing data transfer between,
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one reference position in the at least one data stream or the at least one data element stream;
The data stream processing system, wherein the data stream processing device executes at least one command based on the at least one reference position .
前記データエンジンコアによって実行されるデータ処理タスクのいくつかが、前記データエンジンコアによって実行可能な命令セットの少なくとも1つの命令を含む一連の命令を含み、
前記データエンジンコアが、前記少なくとも1つの命令の実行に関して、前記少なくとも1つの命令を前記データストリーム処理装置の前記制御インタフェースに出力するように動作可能である
ことを特徴とする請求項30に記載のデータストリーム処理システム。
Some of the data processing tasks performed by the data engine core comprise a series of instructions including at least one instruction of an instruction set executable by the data engine core;
32. The method of claim 30 , wherein the data engine core is operable to output the at least one instruction to the control interface of the data stream processing device with respect to execution of the at least one instruction. Data stream processing system.
前記少なくとも1つのデータストリームが、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、
前記命令セットが、前記規則の所定のセットに基づいて定義される
ことを特徴とする請求項31に記載のデータストリーム処理システム。
The at least one data stream is a multimedia data stream structured according to a predetermined set of rules;
32. The data stream processing system of claim 31 , wherein the instruction set is defined based on a predetermined set of rules.
前記データストリーム処理装置が、前記第1のインタフェースの前記少なくとも1つのデータストリーム、または前記第2のインタフェースの前記少なくとも1つのデータ要素ストリームの受信または送信に関して、前記少なくとも1つの命令に従って非同期的に動作するように動作可能である
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The data stream processing device operates asynchronously according to the at least one instruction with respect to reception or transmission of the at least one data stream of the first interface or the at least one data element stream of the second interface The data stream processing system of claim 30 , wherein the data stream processing system is operable to:
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能である
ことを特徴とする請求項30に記載のデータストリーム処理システム。
31. The data stream processing system of claim 30 , wherein the data stream controller is configurable by the main processing device comprising configuration information.
前記データストリーム制御器が、前記少なくとも1つの操作を実行しているとき、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である
ことを特徴とする請求項30に記載のデータストリーム処理システム。
When the data stream controller is performing the at least one operation, selectively the at least one data stream, or at least a portion of the at least one data element stream, in a connected buffering resource. The data stream processing system of claim 30 , wherein the data stream processing system is operable to buffer.
前記データストリーム処理装置が、前記バッファリングリソースから選択的にデータ要素を出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、
前記データストリーム制御器が、前記少なくとも1つのデータ要素ストリームを生成するために、前記マルチプレクサの出力を制御するように動作可能である
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The data stream processing apparatus comprises a data output logic circuit having a multiplexer operable to selectively output data elements from the buffering resources;
36. The data stream processing system of claim 35 , wherein the data stream controller is operable to control an output of the multiplexer to generate the at least one data element stream.
前記接続されたバッファリングリソースが、ソフトウェアFIFOである
ことを特徴とする請求項35に記載のデータストリーム処理システム。
36. The data stream processing system of claim 35 , wherein the connected buffering resource is a software FIFO.
前記データストリーム制御器が、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのどの部分が前記接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The data stream controller is operable to store a history of the at least one data stream or which portion of the at least one data element stream is currently stored in the connected buffering resource. 36. A data stream processing system according to claim 35 .
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのサイズを含む
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The data stream controller can be configured by the main processing unit with configuration information;
36. The data stream processing system according to claim 35 , wherein the configuration information includes a size of the buffering resource connected to the data stream controller.
前記データストリーム処理装置が、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、
前記処理モジュールが、前記データプロセッサコアによって実行可能な前記命令セットの少なくとも1つの命令の実行に応答して、処理タスクを実行するように動作可能である
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The data stream processing device comprises a processing interface for providing a data path to a processing module;
The processing module, wherein the response by the data processor core for execution of at least one instruction executable said instruction set, according to claim 30, characterized in that it is operable to perform processing tasks Data stream processing system.
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記メイン処理装置によって前記データストリーム処理装置に供給された前記構成情報が、少なくとも1つの前記処理リソースの特性を含む
ことを特徴とする請求項40に記載のデータストリーム処理システム。
The data stream controller can be configured by the main processing unit with configuration information;
41. The data stream processing system according to claim 40 , wherein the configuration information supplied to the data stream processing device by the main processing device includes characteristics of at least one of the processing resources.
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記メイン処理装置によって前記データストリーム処理装置に提供された前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのスタート地点、及びエンド地点を含む
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The data stream controller can be configured by the main processing unit with configuration information;
Wherein the configuration information provided to the data stream processing unit by the main processing unit, the data stream controller and connected to the starting point of the buffering resources, and to claim 35, characterized in that it comprises an end point The described data stream processing system.
前記少なくとも1つのデータストリームが、第1の一時的なシーケンスに順序よく配置された複数のデータ要素を含むと共に、
前記少なくとも1つのデータ要素ストリームが、前記第1の一時的なシーケンスと異なる第2の一時的なシーケンスに順序よく配置された、前記第1の一時的なシーケンスの前記複数のデータ要素を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The at least one data stream includes a plurality of data elements arranged in order in a first temporary sequence;
The at least one data element stream includes the plurality of data elements of the first temporary sequence arranged in order in a second temporary sequence different from the first temporary sequence; 31. A data stream processing system according to claim 30 , wherein:
前記データエンジンコアによって実行可能な前記命令セットの前記少なくとも1つの命令が、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである
ことを特徴とする請求項31に記載のデータストリーム処理システム。
32. The method of claim 31 , wherein the at least one instruction of the instruction set executable by the data engine core is either an instruction having a conditional response or an instruction having an unconditional response. Data stream processing system.
前記少なくとも1つの命令が、前記データストリーム機能装置によって出力された前記少なくとも1つの命令に応答して前記データストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、
前記それぞれの処理が、前記データストリーム制御器によって維持される、関連する状態機械を備える
ことを特徴とする請求項31に記載のデータストリーム処理システム。
The at least one instruction corresponds to a respective process to be performed by the data stream controller in response to the at least one instruction output by the data stream functional unit;
32. The data stream processing system of claim 31 , wherein each of the processes comprises an associated state machine maintained by the data stream controller.
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、選択的に前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのデータをバッファさせるように動作可能なバッファリング命令を含む
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The instruction set executable by the data engine core is operable to cause the data stream controller to selectively buffer the data of the at least one data stream or the at least one data element stream. 36. The data stream processing system of claim 35 , comprising instructions.
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記バッファリングリソースから少なくとも1つのデータ項目を読み出させると共に、前記第1のインタフェースまたは前記第2のインタフェースに対して前記少なくとも1つのデータ項目を出力させるように動作可能なデータ読み出し命令を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The instruction set executable by the data engine core causes the data stream controller to read at least one data item from the buffering resource and to the first interface or the second interface The data stream processing system of claim 30 , further comprising a data read command operable to cause the at least one data item to be output.
前記管理情報が、前記データストリーム制御器によって前記第1のインタフェースまたは前記第2のインタフェースに対して次に供給されるべき、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのうちの1つにおけるデータ項目を示す少なくとも現在の出力位置を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
Of the at least one data stream, or the at least one data element stream, the management information to be next supplied to the first interface or the second interface by the data stream controller 32. The data stream processing system of claim 30 , including at least a current output position indicating a data item in one.
前記データエンジンコアによって実行可能な前記命令セットが、対応する少なくとも1つのデータストリーム、または少なくとも1つのデータ要素ストリームのうちの1つと関連付けられた一時的なシーケンスにおける以前の地点のデータ項目と現在の出力位置が対応するように、前記現在の出力位置を変更させるように動作可能な後退命令を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The instruction set executable by the data engine core is a data item at a previous point in a temporary sequence associated with one of the corresponding at least one data stream or at least one data element stream and the current 31. The data stream processing system of claim 30 , further comprising a back command operable to change the current output position so that the output position corresponds.
前記管理情報が、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのどのデータが前記バッファリングリソースに記憶されたかを示す履歴、及び前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのどのデータが前記データストリーム制御器によって受信されたかを示す履歴のうちの少なくとも1つを含む
ことを特徴とする請求項35に記載のデータストリーム処理システム。
The management information is a history indicating which data of the at least one data stream or the at least one data element stream is stored in the buffering resource, and the at least one data stream, or the at least one data 36. The data stream processing system of claim 35 , comprising at least one of a history indicating which data of an element stream was received by the data stream controller.
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記データエンジンからのデータを前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームに挿入させるように動作可能なデータ挿入命令を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The instruction set executable by the data engine core is operable to cause the data stream controller to insert data from the data engine into the at least one data stream or the at least one data element stream. The data stream processing system according to claim 30 , further comprising a data insertion instruction.
前記データストリーム制御器に対する前記少なくとも1つのデータストリームの供給のためのデータ通信経路を直接メモリアクセス制御器に提供するように動作可能な直接メモリアクセスインタフェースを備える
ことを特徴とする請求項30に記載のデータストリーム処理システム。
Claim 30, characterized in that it comprises an operable direct memory access interface to provide a data communication path to the direct memory access controller for the supply of the at least one data stream for the data stream controller Data stream processing system.
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記構成情報が、前記直接メモリアクセス制御器の少なくとも1つの特性を含む
ことを特徴とする請求項52に記載のデータストリーム処理システム。
The data stream controller can be configured by the main processing unit with configuration information;
53. The data stream processing system of claim 52 , wherein the configuration information includes at least one characteristic of the direct memory access controller.
前記データストリーム処理装置が、前記データストリーム制御器が前記記憶されたデータを前記第1のインタフェースまたは前記第2のインタフェースに出力する前に、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームのデータを一時的に記憶するためのデータ入力レジスタを備える
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The data stream processing device before the data stream controller outputs the stored data to the first interface or the second interface, the at least one data stream, or the at least one data element; The data stream processing system according to claim 30 , further comprising a data input register for temporarily storing data of the stream.
前記データエンジンコアによって実行可能な前記命令セットが、カウント設定命令と関連付けられた命令がデータエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The instruction set executable by the data engine core is related to the state of the data pointer at a moment when an instruction associated with a count setting instruction is transmitted from the data engine core to the data stream processing device. 31. The data stream processing system of claim 30 , including a count setting instruction operable to instruct the processing device to set an upper limit of a data pointer state.
前記データストリーム処理装置が、前記データエンジンに少なくとも一部組み込まれる
ことを特徴とする請求項30に記載のデータストリーム処理システム。
The data stream processing system according to claim 30 , wherein the data stream processing device is at least partially incorporated in the data engine.
メイン処理装置とデータエンジンコアとの間のデータ通信経路を提供するためのデータストリーム処理装置であって、
前記データストリーム処理装置が、
前記データエンジンコアから少なくとも1つの命令を受信するように動作可能な制御インタフェースと、
少なくとも1つのデータストリームに対する第1のインタフェースと、一連のデータ要素を含む少なくとも1つのデータ要素ストリームに対する第2のインタフェースとを有すると共に、前記第1のインタフェースと前記第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行するように動作可能であるデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理装置。
A data stream processing device for providing a data communication path between a main processing device and a data engine core,
The data stream processing device is
A control interface operable to receive at least one instruction from the data engine core;
Data between the first interface and the second interface having a first interface for at least one data stream and a second interface for at least one data element stream including a series of data elements A data stream controller operable to perform at least one operation for managing transfers,
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one reference position in the at least one data stream or the at least one data element stream;
The data stream processing apparatus, wherein the data stream processing apparatus executes at least one command based on the at least one reference position .
複数のデータ処理タスクをメイン処理装置に割当てる処理と、
データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、
データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、
前記データエンジンコアからの少なくとも1つの命令を、前記データストリーム処理装置において受信する処理と、
少なくとも1つのデータストリームに対する第1のインタフェースと、データストリーム制御器の少なくとも1つのデータ要素ストリームに対する第2のインタフェースとの間のデータ転送を管理するための少なくとも1つの操作を実行する処理とを含み、
前記データストリーム処理装置が、前記少なくとも1つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも1つの命令に応答し、
前記データストリーム処理装置が、前記少なくとも1つのデータストリーム、または前記少なくとも1つのデータ要素ストリームにおける少なくとも1つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも1つの基準位置に基づいて、少なくとも1つの命令を実行する
ことを特徴とするデータストリーム処理方法。
Assigning multiple data processing tasks to the main processing unit;
Using a data engine having a data engine core to perform some of the plurality of data processing tasks on behalf of the main processing unit;
Using a data stream processing device to provide a data communication path between the main processing device and the data engine core;
Receiving at least one instruction from the data engine core at the data stream processing device;
Processing to perform at least one operation for managing data transfer between a first interface for at least one data stream and a second interface for at least one data element stream of the data stream controller. ,
The data stream processing device is responsive to the at least one instruction from the data engine core to control the data stream controller to perform the at least one operation ;
The data stream processing device is operable to store management information including at least one data stream or at least one reference position in the at least one data element stream;
The data stream processing method, wherein the data stream processing device executes at least one command based on the at least one reference position .
JP2006124134A 2005-05-04 2006-04-27 Data processing system Active JP4445486B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/121,185 US7630388B2 (en) 2005-05-04 2005-05-04 Software defined FIFO memory for storing a set of data from a stream of source data
GB0510350A GB0510350D0 (en) 2005-05-20 2005-05-20 Data engine
GBGB0520072.0A GB0520072D0 (en) 2005-05-04 2005-10-03 Data processing system
GB0604353A GB2425862B (en) 2005-05-04 2006-03-03 A data stream processor for performing data processing tasks for a coprocessor

Publications (2)

Publication Number Publication Date
JP2006313546A JP2006313546A (en) 2006-11-16
JP4445486B2 true JP4445486B2 (en) 2010-04-07

Family

ID=37393972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006124134A Active JP4445486B2 (en) 2005-05-04 2006-04-27 Data processing system

Country Status (2)

Country Link
US (1) US7920584B2 (en)
JP (1) JP4445486B2 (en)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456231C (en) * 2007-03-19 2009-01-28 中国人民解放军国防科学技术大学 Stream processor expanding method for flexible distribution operating group resource
CN100444118C (en) * 2007-03-19 2008-12-17 中国人民解放军国防科学技术大学 Software and hardware combined command relative controlling method based on logic transmitting rank
CN100461094C (en) * 2007-03-19 2009-02-11 中国人民解放军国防科学技术大学 Instruction control method aimed at stream processor
US7830905B2 (en) * 2007-04-20 2010-11-09 Cray Inc. Speculative forwarding in a high-radix router
US20090228693A1 (en) * 2007-05-22 2009-09-10 Koenck Steven E System and method for large microcoded programs
US20090228686A1 (en) * 2007-05-22 2009-09-10 Koenck Steven E Energy efficient processing device
US7693167B2 (en) * 2007-05-22 2010-04-06 Rockwell Collins, Inc. Mobile nodal based communication system, method and apparatus
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US7958309B2 (en) 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic selection of a memory access size
US8140771B2 (en) 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8117401B2 (en) 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8948822B2 (en) * 2008-04-23 2015-02-03 Qualcomm Incorporated Coordinating power management functions in a multi-media device
US7843554B2 (en) * 2008-04-25 2010-11-30 Rockwell Collins, Inc. High dynamic range sensor system and method
US8908763B2 (en) * 2008-06-25 2014-12-09 Qualcomm Incorporated Fragmented reference in temporal compression for video coding
US8948270B2 (en) * 2008-08-19 2015-02-03 Qualcomm Incorporated Power and computational load management techniques in video processing
US8964828B2 (en) * 2008-08-19 2015-02-24 Qualcomm Incorporated Power and computational load management techniques in video processing
DE102009040839A1 (en) * 2008-09-30 2010-04-15 Carl Zeiss Microimaging Gmbh Peripheral interface, data stream and data transmission method
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9183270B2 (en) 2010-05-17 2015-11-10 Wal-Mart Stores, Inc. Social genome
US8595234B2 (en) * 2010-05-17 2013-11-26 Wal-Mart Stores, Inc. Processing data feeds
US10591983B2 (en) * 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
WO2015194133A1 (en) * 2014-06-19 2015-12-23 日本電気株式会社 Arithmetic device, arithmetic device control method, and storage medium in which arithmetic device control program is recorded
DE102015104776B4 (en) * 2015-03-27 2023-08-31 Infineon Technologies Ag Method and device for processing radar signals
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
US11853244B2 (en) 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
US10437600B1 (en) * 2017-05-02 2019-10-08 Ambarella, Inc. Memory hierarchy to transfer vector data for operators of a directed acyclic graph
IT201700056483A1 (en) * 2017-05-24 2018-11-24 Lumson Spa Container of fluid substances with mobile bottom, with hermetic closure system and method of use
IT201700056451A1 (en) * 2017-05-24 2018-11-24 Lumson Spa Container of fluid substances with hermetic closure system and method of use
US11151077B2 (en) 2017-06-28 2021-10-19 Wisconsin Alumni Research Foundation Computer architecture with fixed program dataflow elements and stream processor

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313582A (en) * 1991-04-30 1994-05-17 Standard Microsystems Corporation Method and apparatus for buffering data within stations of a communication network
US5440740A (en) * 1992-10-13 1995-08-08 Chen; Fetchi System and method for managing devices on multiple digital signal processors
DE69427734T2 (en) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearly addressed microprocessor cache
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US6055579A (en) * 1997-11-17 2000-04-25 Silicon Graphics, Inc. Distributed control and synchronization of multiple data processors using flexible command queues
KR100572945B1 (en) 1998-02-04 2006-04-24 텍사스 인스트루먼츠 인코포레이티드 Digital signal processor with efficiently connectable hardware co-processor
US6643716B2 (en) * 1999-03-29 2003-11-04 Intel Corporation Method and apparatus for processing serial data using a single receive fifo
US6999994B1 (en) * 1999-07-01 2006-02-14 International Business Machines Corporation Hardware device for processing the tasks of an algorithm in parallel
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6625639B1 (en) * 1999-10-20 2003-09-23 International Business Machines Corporation Apparatus and method for processing a task in a clustered computing environment
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6574273B1 (en) 2000-01-12 2003-06-03 Sony Corporation Method and apparatus for decoding MPEG video signals with continuous data transfer
US7233331B2 (en) * 2000-03-16 2007-06-19 Square Enix Co., Ltd. Parallel object task engine and processing method
US7653710B2 (en) * 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
DE10323189B4 (en) 2003-05-22 2005-03-17 Fujitsu Siemens Computers Gmbh MPEG-2 data stream processing device, decodes individual elementary streams of dismantled data stream, alters stream e.g. for time stretching
US20050036557A1 (en) * 2003-08-13 2005-02-17 Jeyendran Balakrishnan Method and system for time synchronized forwarding of ancillary information in stream processed MPEG-2 systems streams
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing

Also Published As

Publication number Publication date
JP2006313546A (en) 2006-11-16
US20060251092A1 (en) 2006-11-09
US7920584B2 (en) 2011-04-05

Similar Documents

Publication Publication Date Title
JP4445486B2 (en) Data processing system
US10417175B2 (en) Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US20190303297A1 (en) Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US6385704B1 (en) Accessing shared memory using token bit held by default by a single processor
KR100861631B1 (en) Multiprocessor system and computer readable medium recording multigrain parallelizing compiler
US20060026578A1 (en) Programmable processor architecture hirarchical compilation
JP2022539844A (en) Quiescent Reconfigurable Data Processor
EP0918280A1 (en) System for context switching on predetermined interruption points
EP1134654A1 (en) Program product and data processor
KR20180021812A (en) Block-based architecture that executes contiguous blocks in parallel
JP2003502728A (en) Computer system including processor and coprocessor
Karim et al. A multilevel computing architecture for embedded multimedia applications
JP2004171573A (en) Coprocessor extension architecture built by using novel splint-instruction transaction model
JP4279317B2 (en) Data processing method and data processing apparatus
US5960401A (en) Method for exponent processing in an audio decoding system
WO2021243490A1 (en) Processor, processing method, and related device
JP2008181535A (en) Digital signal processing apparatus
US20080120497A1 (en) Automated configuration of a processing system using decoupled memory access and computation
KR100463642B1 (en) Apparatus for accelerating multimedia processing by using the coprocessor
De Oliveira et al. The Philips Nexperia digital video platform
GB2425862A (en) Data processing system
David et al. Self-timed architecture of a reduced instruction set computer
Karim et al. The Hyperprocessor: A template System-on-Chip architecture for embedded multimedia applications
JP2004110436A (en) Read/write control circuit for memory, non-contact memory card, read/write device, and read/write system for non-contact memory card

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090302

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090331

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: 20091218

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: 20100115

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4445486

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250