JP6076686B2 - デジタル信号処理のデータ転送 - Google Patents

デジタル信号処理のデータ転送 Download PDF

Info

Publication number
JP6076686B2
JP6076686B2 JP2012232839A JP2012232839A JP6076686B2 JP 6076686 B2 JP6076686 B2 JP 6076686B2 JP 2012232839 A JP2012232839 A JP 2012232839A JP 2012232839 A JP2012232839 A JP 2012232839A JP 6076686 B2 JP6076686 B2 JP 6076686B2
Authority
JP
Japan
Prior art keywords
data
thread
event
digital signal
memory device
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
JP2012232839A
Other languages
English (en)
Other versions
JP2013093026A (ja
Inventor
ジョン アンダーソン エイドリアン
ジョン アンダーソン エイドリアン
クリストファー ワス ゲイリー
クリストファー ワス ゲイリー
ジョン デイビーズ ガレス
ジョン デイビーズ ガレス
Original Assignee
イマジネーション テクノロジーズ リミティッド
イマジネーション テクノロジーズ リミティッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イマジネーション テクノロジーズ リミティッド, イマジネーション テクノロジーズ リミティッド filed Critical イマジネーション テクノロジーズ リミティッド
Publication of JP2013093026A publication Critical patent/JP2013093026A/ja
Application granted granted Critical
Publication of JP6076686B2 publication Critical patent/JP6076686B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Description

デジタル信号処理は、広範囲のアプリケーションで使用されている。これらのアプリケーションの多くは、エンドユーザにとって意味があるため又は有用であるためにデータの処理に時間の制約が存在するという意味でリアルタイムである。この一例は、デジタルテレビ及びデジタルラジオのようなデジタル放送ストリームである。デジタル信号処理システムは、データが受信されると同時くらいに早く出力される(バッファリングを禁止する)ことを可能にするほど、リアルタイムストリームを迅速に処理及び復号化できる必要がある。
デジタル信号処理システムは、より汎用のデジタル信号プロセッサに加えて、しばしば1つ以上の専用ハードウェア周辺装置を利用する。ハードウェア周辺装置は、迅速且つ効率的に特定の信号処理タスク(例えば、特定の種類の誤り訂正)を実行するように設計された処理ブロックである。デジタル信号処理システムは、特定の種類のリアルタイムデータのニーズを満たすために、ハードウェア周辺装置を所定の順序で共に直接的に接続する(すなわち、配線結合する)ことができる。
しかし、異なる種類のリアルタイムデータの要件は、かなり変化する可能性がある。例えば、世界中で使用される様々な異なるデジタルテレビ及びラジオ標準は、しばしば、例えば符号化、インターリーブ、等化等に異なるタイプ又はパラメータを使用して、異なるように構成されたリアルタイムデータを有する。従って、専用の相互接続されたハードウェア周辺装置が使用された場合、リアルタイムデータの種類毎に異なるデジタル信号処理システムが構築される必要がある。
以下に記載の実施例は、既知のデジタル信号処理システムの欠点の一部又は全部を解決する実装に限定されない。
この概要は、以下に発明の詳細な説明に更に記載する簡単な形式の概念の抜粋を紹介するために提供される。概要は、特許請求の範囲の対象の主な特徴又は不可欠な特徴を特定することを意図するものではなく、特許請求の範囲の対象の範囲を判定する際の支援として使用されることを意図するものでもない。
デジタル信号処理システムでデータを転送する技術が記載される。一例では、デジタル信号処理システムは、メモリアクセスコントローラにそれぞれ接続され、メモリデバイスからデータを読み取り、データにおいて1つ以上の動作を実行し、データをメモリデバイスに書き込むようにそれぞれ構成された複数のハードウェア周辺装置を有する。ハードウェア周辺装置を共に配線結合することを回避するため、且つ、構成可能なデジタル信号処理システムを提供するため、マルチスレッドのプロセッサは、ハードウェア周辺装置とメモリとの間のデータの転送を制御する。各プロセッサのスレッドは、メモリアクセスチャネルに割り当てられ、スレッドは、イベントの発生を検出し、これに応じて、選択されたハードウェア周辺装置がそのメモリアクセスチャネルを介してメモリデバイスからデータを読み取ること又はメモリデバイスにデータを書き込むことを可能にするように、メモリアクセスコントローラを制御するように構成される。
一態様によれば、メモリデバイスと、メモリデバイスにアクセスする複数のチャネルを提供するメモリアクセスコントローラと、メモリアクセスコントローラにそれぞれ接続され、チャネルのうち1つを介してメモリデバイスからデータを読み取り、データにおいて1つ以上の動作を実行し、チャネルのうち1つを介してデータをメモリデバイスに書き込むようにそれぞれ構成された複数の専用ハードウェアブロックと、メモリアクセスコントローラに接続され、チャネルのうち1つを制御するようにそれぞれ構成された複数のスレッドを実行するように構成されたプロセッサとを有するデジタル信号処理システムが提供される。スレッドのうち少なくとも1つは、イベントの発生を検出し、これに応じて、スレッドの関連するチャネルを使用してメモリデバイスから選択された専用ハードウェアブロックへのデータの提供を制御するように構成される。
他の態様によれば、デジタル信号処理システムにおいてデータを転送する方法が提供され、プロセッサで複数のスレッドを実行するステップであり、各スレッドは、所定のイベントが検出されるまで待機し、所定のイベントに応じて、専用ハードウェアブロックがそのスレッドに関連するメモリアクセスチャネルを介してメモリデバイスからデータを読み取ること又はメモリデバイスにデータを書き込むことを可能にするように、メモリアクセスコントローラを制御することを有する一連の動作を独立して実行するステップを有する。
ここに記載の方法は、有形の記憶媒体上の機械可読形式(例えば、プログラムがコンピュータで実行され、コンピュータプログラムがコンピュータ可読媒体に具現されてもよい場合に、ここに記載のいずれかの方法の全てのステップを実行するように適合されたコンピュータプログラムコード手段を有するコンピュータプログラムの形式)のソフトウェアにより実行されてもよい。有形の(又は過渡的ではない)記憶媒体の例は、ディスク、サムドライブ、メモリカード等を含み、伝搬信号を含まない。ソフトウェアは、方法のステップがいずれかの適切な順序又は同時に実行され得るように、並列プロセッサ又はシリアルプロセッサでの実行に適してもよい。
このことは、ファームウェア及びソフトウェアが有用な別々に取引可能な商品になり得ることを認める。これは、所望の機能を実行するために、“ダム(dumb)”ハードウェア若しくは標準ハードウェアで実行するソフトウェア又は“ダム”若しくは標準ハードウェアを制御するソフトウェアを含むことを意図する。また、所望の機能を実行するために、シリコンチップの設計又はユニバーサルプログラマブルチップの構成に使用されるようなHDL(hardware description language)ソフトウェアのように、ハードウェアの構成を“記述”又は規定するソフトウェアを含むことを意図する。
当業者に明らかなように、前述の特徴は、必要に応じて組み合わされてもよく、例示の態様のいずれかと組み合わされてもよい。
構成可能なデジタル信号処理システム 例示のリアルタイム信号のために構成可能なデジタル信号処理システムにより実行される一連の動作 構成可能なデジタル信号処理システムの制御シグナリング構造 例示のイベントフラグエンジン構造 スレッドにより制御シグナリング構造においてイベントで動作するために実行される方法のフローチャート 例示のスレッドに基づく構成及びハードウェア周辺装置のデータの転送 図6のハードウェア周辺装置を制御する例示的な一式のキュー、フラグ及び命令
実施例について、図面を参照して一例として説明する。
同様の特徴を示すために、図面を通じて共通の参照符号が使用される。
実施例について、以下に一例のみとして説明する。これらの例は、出願人に現在知られている実施例を実施する最善の方法を表しているが、これらは、実現され得る唯一の方法ではない。説明は、例示の機能を示し、例示を構成して動作するステップの順序を示している。しかし、同じ又は等価な機能又は順序が異なる例により実現されてもよい。
以下に説明するものは、汎用デジタル信号プロセッサ及び専用ハードウェア周辺装置の双方を使用する構成可能なデジタル信号処理システムであり、このシステムは、これらの要素を特定の構成に配線結合することを回避し、従って、システムの構成可能性を制限することを回避する。これは、ハードウェア周辺装置が迅速且つ効率的にデータを処理するように構成及び使用されることを可能にするために、高速データ転送システムを使用することにより実現される。これは、ハードウェア周辺装置へのメモリ転送及びハードウェア周辺装置からのメモリ転送を制御するマルチスレッドのプロセッサと、システム要素がイベントの発生を通信することを可能にする効率的なシグナリングシステムとの組み合わせを利用する。これは、リアルタイムデータを扱うために必要な計算上の性能を維持しつつ、デジタル信号処理システムが異なる標準に適合されるように十分に構成可能になることを可能にする。
まず図1を参照すると、図1は、例示の構成可能なデジタル信号処理システムの構造を示している。システムは、データの記憶に使用されるメモリデバイス102を有する。図1の例では、メモリデバイス102は、処理されているデータとデジタル信号処理システムを動作するための構成データとの双方を格納するために使用されてもよい。他の例では、これらの2つの種類のデータは、異なるメモリデバイスの間に分離されてもよい。メモリデバイス102は、如何なる適切な形式のランダムアクセスメモリ(RAM:random access memory)でもよい。
メモリデバイス102には1つ以上のデジタル信号プロセッサ(DSP:digital signal processor)104が接続される。DSP104は、例えば高速フーリエ変換及び等化のようなデータにおける信号処理計算を実行するようにプログラム可能なプロセッサである。汎用プロセッサとは考えられないが、DSP104は、以下に説明するハードウェア周辺装置よりも構成可能性が高い。DSP104は、メモリデバイス102からデータを読み取り、データにおいて信号処理動作を実行し、データをメモリデバイス102に書き戻すプログラムコード/命令を実行する。
また、メモリデバイス102にはメモリアクセスコントローラ106が接続され、メモリアクセスコントローラ106は、複数のハードウェア周辺装置108のためのメモリデバイス102へのアクセスを提供する。或る例では、メモリアクセスコントローラ106は、ダイレクトメモリアクセス(DMA:direct memory access)コントローラの形式でもよい。メモリアクセスコントローラ106は、メモリデバイス102からのデータの読み取り又はメモリデバイス102へのデータの書き込みを可能にするためにハードウェア周辺装置108により使用され得る複数のメモリアクセスチャネル(例えば、DMAチャネル)を提供する。ハードウェア周辺装置とメモリデバイスとの間のデータの転送に加えて、或る例では、メモリアクセスコントローラはまた、1つのハードウェア周辺装置から他のハードウェア周辺装置に直接的にデータを転送するように構成されてもよい点に留意すべきである。
前述のように、ハードウェア周辺装置108は、特定の信号処理タスクを実行するように構成された特化された専用ハードウェアブロックである。例えば、1つのハードウェア周辺装置は、特化されたViterbi復号化ブロックでもよく、他のものは、特化されたデインターリーブブロックでもよい。ハードウェア周辺装置はまた、固定関数アクセラレータとして知られてもよい。ハードウェア周辺装置のそれぞれは、互いに独立して動作する。ハードウェア周辺装置は、そのタスクに特有の動作パラメータを備えるほど十分に構成可能でもよいが、そのタスクを変更するほど十分には構成可能ではない(例えば、Viterbiブロックは、デインターリーブブロックとして再構成されることは不可能である)。従って、ハードウェア周辺装置は、DSP104より特定のタスクに特化している。しかし、ハードウェア周辺装置は、非常に迅速且つ効率的に特化されたタスクを実行するように構成される。
また、メモリデバイス102には全体制御プロセッサ110が接続され、全体制御プロセッサ110は、以下に詳細に説明するように、デジタル信号処理システムの動作を初期化、構成及び制御するために使用されてもよい。
前述のデジタル信号処理システムは、信号処理動作における柔軟性を提供する。例えば、異なるDSP104及びハードウェア周辺装置108がいずれかの所望の構成又は順序でデータを処理するように、システムが動作するように構成されてもよい。各ハードウェア周辺装置又はDSPは、システムの他の部分により提供され、メモリデバイスに格納された1つ以上のデータのブロック(ここではデータのバッファとも呼ばれる)で動作してもよく、システムの他の要素により使用される1つ以上のデータのバッファを生成及び格納する。このことにより、デジタル信号処理システムは、様々な異なる種類の信号(例えば、異なる放送/通信標準)に使用されることが可能になる。
図2は、どのように図1のシステムが特定の種類の信号を処理するように構成され得るかを示している。図2の例では、システムは、単に例示の目的で、入来するデジタルTV信号を処理するために使用されている。デジタル化されたベースバンド信号は、デジタル信号処理システムで受信され、システムは、まず第1のDSP(DSP(0)202で示す)を使用してこのデータを処理し、高速フーリエ変換(FFT:fast fourier transform)を実行するように構成される。これに続いて、第2のDSP(DSP(2)204で示す)は、DSP(0)202から出力されたデータで等化及びデマッピングを実行する。次に、ハードウェア周辺装置HW(1)206は、データでデインターリーブを実行し、これは、Viterbi復号化を実行する他のハードウェア周辺装置HW(3)208に渡される。更なるハードウェア周辺装置HW(0)210はViterbi復号化からデータを取得し、リードソロモン復号化を実行する。次に、復号化されたデータは、図2には示さないが、必要に応じて更なるDSP、ハードウェア周辺装置又は他のプロセッサにより更に処理されてもよい。
図2の例は、特定の種類の信号に適した全体での信号処理システムを形成するために、図1のシステムの異なるブロックがどのように共に結合され得るかを示している。図2のブロックは共に配線結合されておらず、図1のメモリデバイス102を使用してデータを交換するため、同じ信号処理システムが異なる種類の信号について異なる方法で動作するように構成されてもよい。
図1のシステムが図2に示す種類の順序で動作するために、ハードウェア周辺装置又はDSPが処理を終了すると、新たに生成されたデータで動作する次のハードウェア周辺装置が構成され、その処理動作を実行するために活性化される。これらのハードウェア周辺装置の構成及び活性化におけるいずれかの遅延は、システムスループットを劣化させ、これは、リアルタイム信号の場合には好ましくない。従って、これらの遅延は最小化されるべきであり、これは、図3を参照して以下に示す制御シグナリング構造の使用を通じて実現される。
図3は、システムの異なる要素が迅速且つ効率的にメッセージ及びシグナリングを渡すことを可能にする構成可能なデジタル信号処理システムの制御シグナリング構造を示している。この構造はまた、ハードウェア周辺装置が必要な場合にかなりの遅延なしに構成及び活性化され得るように、要素がイベントに対して迅速に反応することを可能にする。
ハードウェア周辺装置108の構成及び活性化は、マルチスレッドのプロセッサ302により制御される。或る例では、マルチスレッドのプロセッサ302は、DMA制御プロセッサ(DCP:DMA control processor)と呼ばれてもよい。マルチスレッドのプロセッサは、複数のスレッドを実行するように構成される。各スレッドは、一連の命令又は動作を独立して実行するが、これらはプロセッサリソースを共有してもよく、全てがプロセッサ302で実行する広い処理の一部になる。
マルチスレッドのプロセッサ302は、図1のメモリアクセスコントローラ106に結合され、メモリアクセスコントローラ106の動作を制御してもよい。或る例では、マルチスレッドのプロセッサ302は、メモリアクセスコントローラ106と通信する別々のハードウェア要素であるが、別の例では、マルチスレッドのプロセッサ302は、メモリアクセスコントローラ106と統合される。
以下では、マルチスレッドのプロセッサ302のスレッドは、DCP(0),DCP(1),...,DCP(k)として示される。各スレッドは、メモリアクセスコントローラ106により提供されるメモリアクセスチャネル(DMAチャネル)のうち1つを直接的に制御するように構成される。換言すると、各スレッドは、その関連するメモリアクセスチャネルを介して1つ以上のハードウェア周辺装置108及びメモリデバイス102への又は1つ以上のハードウェア周辺装置108及びメモリデバイス102からのデータの転送を制御することができる。
マルチスレッドのプロセッサ302は、イベントフラグエンジン304に接続され、イベントフラグエンジン304については以下に詳細に説明する。イベントフラグエンジン304は、デジタル信号処理システム内で指定のイベントが生じた場合にマルチスレッドのプロセッサ302に通知するように構成される。スレッドは、イベントフラグエンジン304からの情報を読み取り、それに従って反応してもよい。例えば、スレッドは、イベント(イベントフラグエンジンにより通知される)が生じるまでスレッドの動作の実行を一時停止させる“待機(wait)”命令を実行してもよい。イベントが生じた場合、このことは、スレッドを活性化させ、待機命令に続くスレッドの命令/動作を実行させる。
これは、ハードウェア周辺装置へ及びハードウェア周辺装置からデータを迅速に転送するために使用されてもよい。特定のスレッドは、イベント(前のシステム要素の終了処理等)を待機し、イベントの発生に応じて、その関連するメモリアクセスチャネルを使用してハードウェア周辺装置に渡される構成データ及びデータを転送するように、メモリアクセスコントローラを制御するように構成されてもよい。他のスレッドは、ハードウェア周辺装置により処理されるデータを待機し、その関連するメモリアクセスチャネルを使用して処理されたデータをメモリデバイスに転送し戻すように、メモリアクセスコントローラを制御するように構成されてもよい。この例は、以下の図5〜7を参照して詳細に説明する。
優先度を各スレッドに割り当てることにより、競合管理技術が実施されてもよい。例えば、前述のように、各スレッドは、0〜kの順序識別子を割り当てられる。同時の1つより多くのスレッドの実行が全て動作を実行できないようにクラッシュする場合、例えば最低の識別子を備えたスレッドに優先度が与えられる。明らかに、別の例では、最高の優先度のように異なる優先システムが適用されてもよい。システムは、競合の場合にサービス提供されることを確保するため、最も重要なハードウェア周辺装置又はシステムに不可欠なハードウェア周辺装置が最高優先度のスレッドにより処理されるように構成されてもよい。
スレッドを独立して実行することでメモリアクセスチャネルのそれぞれを管理させることにより、応答時間は、通常の単一スレッドのプロセッサがハードウェア周辺装置への/ハードウェア周辺装置からのデータの転送を全て管理していた場合より、かなり速くなる。更に、スレッドは、次のシステム要素が活性化される前の遅延を低減するその制御ソフトウェアの部分に待機命令を配置させるように構成されてもよい。例えば、イベントの待機の前にスレッドにより実行されることを可能にするために、できるだけ多くの動作が待機命令の前に配置されてもよい。これにより、イベントが発生した後に実行される必要のある動作の数を低減する。換言すると、可能な場合には、事前の計算がスレッドにより実行されてもよい。
マルチスレッドのプロセッサ302に加えて、DSP104及び全体制御プロセッサ110はまた、イベントフラグエンジン304から入力を受信し、これらの要素が同様にイベントに反応することを可能にする。このことは以下に詳細に説明する。
デジタル信号処理システムの要素がイベントに反応することを可能にするため、システムの異なる要素の間での通信を可能にする効率的なシグナリングシステムが使用される。シグナリングシステムは、システムの部分の間で信号を伝達する一式のキュー306に基づく。例えば、キュー306は、複数のFIFOキューを有してもよい。各キューは、システムの1つの要素から他の要素に渡される情報に関係する複数のデータアイテムを保持してもよい。例えば、キューの情報は、データが特定のハードウェア周辺装置又はDSPにより処理される用意ができていることを示してもよい。データアイテムは、例えば、命令アドレス若しくは他の識別子、分岐ラベル、メモリアドレス、又はシステム要素が他の要素に渡そうとする他の種類の情報の形式でもよい。
データアイテムは、マルチスレッドのプロセッサ302、DSP104又は全体制御プロセッサ110によりキューに書き込まれてもよい。更に、いずれかのキューの先頭のデータアイテムは、マルチスレッドのプロセッサ302、DSP104又は全体制御プロセッサ110により読み取られてもよく、いずれかのキューの先頭のデータアイテムは、これらのシステム要素のいずれかにより削除されてもよい。マルチスレッドのプロセッサ302、DSP104及び全体制御プロセッサ110は、データバスを使用してキュー306を読み取り、書き込み及び/又は変更する。バスへのアクセスは、バスアービター(bus arbiter)308により管理され、バスアービター308はバスの競合を処理する。
各キューは、関連する通知ロジック(図3に図示せず)を有する。通知ロジックは、いつその関連するキューが少なくとも1つのアイテムを含むかを示すためのフラグ(又は他の適切なバイナリインジケータ)をアサート(assert)するように構成される。換言すると、フラグは、その関連するキューが空であるか否かを示す。
キューの通知ロジックからのフラグは、イベントフラグエンジン304に提供される。イベントフラグエンジン304はまた、例えばハードウェア周辺装置又はポートの状態を示す更なるフラグの形式の入力を受信してもよい。一般的に、イベントフラグエンジン304は、キューをキューの情報で動作する処理要素に結び付けるマトリクス又はメッシュとして動作する。或る例では、キューとスレッド及びDSPとの間のイベントフラグエンジン304の接続は、全体制御プロセッサ110により構成されてもよい。
イベントフラグエンジン304に適用され得る構成可能ロジックの種類の例が、図4から分かる。或る例では、いずれかのDCPスレッドは、402で示すように、イベントフラグエンジンに提供されるいずれかのフラグの状態を検査してもよい。このことにより、いずれかのスレッドは、アサートされるいずれかのフラグ(特定のキューにおけるアイテムの存在を示す)を待機するように構成されることが可能になる。更に又は別法では、イベントが所定の一式の場合にのみシステム要素に通知されるように、様々なフラグが組み合わされることを可能にするため、ブールロジック(Boolean logic)のレイヤがフラグに適用されてもよい。
例えば、図4は、イベント通知をDSP(0)に提供するために使用される論理ゲート404の組み合わせを示している。他の例では、イベント通知を他の処理要素(マルチスレッドのプロセッサ302のDCPスレッド、全体制御プロセッサ110又は他のDSP104等)に提供するために、同様の組み合わせのゲートが使用されてもよい。図4の例では、ゲート404は、ANDゲートのレイヤに続いてORレイヤのゲートで構成されており、その間に構成可能な接続が存在する。
この例では、第1のANDゲート406は、Q1で示すキューに関連するフラグ及びQ3で示すキューに関連するフラグから入力を受信する。従って、これらのフラグの双方がアサートされる場合、双方のキューがその中にアイテムを有していることを示し、ANDゲート406の出力が真になる。同様に、第2のANDゲート408は、Q7で示すキューに関連するフラグ及びキューに関連しないが、例えばF3で示すハードウェア周辺装置の状態を示す他のフラグから入力を受信する。この場合にも同様に、これらのフラグの双方がアサートされる場合、ANDゲート408の出力が真になる。
2つのANDゲート406、408からの出力は、ORゲート410に提供される。ORゲート410はまた、ANDゲートを通過せずに直接的に、Q12で示す他のキューのフラグから第3の入力を受信する。従って、ORゲート410の出力は、3つの入力のうち1つ以上がアサートされる場合には常にアサートされる。ORゲートからのこの出力は、(この例では)DSP(0)に提供され、イベントを示して動作を起動するために使用される。
或る例では、ORゲートから出力を受信するシステム要素は、ORゲートへのどの入力により出力がアサートされることになったかを知りたいと思う可能性がある。これは、どれによりORゲートの出力がアサートされることになったかに応じて、要素が異なる動作を実行してもよいためである。これを可能にするために、このことを処理要素に示すために更なるロジック(図4に図示せず)が含まれてもよい。例えば、これは、マルチプレクサの形式でもよい。
更に、ORゲートへの1つより多くの入力が同時にアサートされてもよいため、どのイベントに対してシステム要素が反応するかを判定するために、優先システムがORゲートの入力に適用されてもよい。例えば、図4では、ORゲート410は、3つの入力を有し、これらのうち(図示の)最上位の入力412が最高の優先度を割り当てられ、最下位の入力414が最低の優先度を割り当てられ、中間の入力416が中間の優先度を有する。従って、ORゲートの出力がアサートされた場合、処理要素は、どのORゲートの入力がアサートされているかを判定するために更なるロジックを使用し、最高の優先度のものに反応してもよい。フラグ、ANDゲート及びORゲートの入力の間の接続は構成可能であるため、これらは、最も重要なフラグがORゲートの最高の優先度の入力に接続されるように構成されてもよい。
前述のイベントフラグエンジン構造は、異なる処理要素がシステムで生じるイベント(キューで待機する情報等)を通知される柔軟な方法を可能にする。論理ゲートの使用は非常に高速であり、通知における低い遅延を確保し、ORゲートの入力の優先付けは、処理要素が最も緊急のイベントに反応することを可能にする。前述のように、システム要件に応じて、システム要素のいずれかについて図示のものと異なるゲート及びフラグの組み合わせが構成されてもよい。
次に図5〜7を参照すると、図5〜7は、どのようにスレッド及びシグナリング構造が共に動作し、データのバッファでの何らかの処理を実行するためにハードウェア周辺装置を構成及び利用するかの例示の処理を示している。まず図5は、マルチスレッドのプロセッサ302で実行されるスレッドにより実行される動作のハイレベルなフローチャートを示している。ステップ502において、スレッドは、所定のイベントが生じることを待機する。前述のように、これは、イベントフラグエンジン304により規定され、イベントフラグエンジン304は、所定の条件でマルチスレッドのプロセッサ302への出力をアサートする。これは、アサートされるキューに関係する特定のフラグの待機の形式でもよく、論理ゲートにより規定されたフラグの組み合わせの待機の形式でもよい。
ステップ504において、イベントが検出されたか否かが判定される。検出されていない場合、スレッドは待機し続ける。イベントが検出された場合、ステップ506において、スレッドは、イベントの通知を引き起こすフラグ(又は複数のフラグ)に関連するキュー(又は複数のキュー)の先頭からデータアイテムを読み取る。ステップ508において、読み取られたデータアイテムは、キュー(又は複数のキュー)から削除される。次にステップ510において、キューから読み取られたデータアイテムは、イベントに関連する命令を実行するためにスレッドにより使用される。例えば、データアイテムは、どのような種類の動作をスレッドが実行するかを判定する。これは、例えば、ハードウェア周辺装置の構成(ステップ512)、処理のためのメモリデバイスからハードウェア周辺装置へのデータの転送(ステップ514)、及びハードウェア周辺装置からメモリデバイスへの処理されたデータの転送(ステップ516)を含んでもよい。前述のように、スレッドは、メモリデバイスとハードウェア周辺装置との間でデータを転送するために、その関連するメモリアクセスチャネルを使用する。
次に図6を参照すると、図6は、図5に示すような動作を実行するときにスレッドにより転送されるデータの種類の例を示している。この純粋に例示的な例では、ハードウェア周辺装置HW(1)206は、メモリデバイスからデータのバッファを処理するように構成及び使用されており、処理されたデータは、メモリデバイス102に書き戻される。DCP(1)602で示す例示のスレッドは、HW(1)206へのデータの転送を制御するために使用され、DCP(2)604で示す例示のスレッドは、HW(1)206からのデータの転送を制御するために使用される。この例では、スレッドDCP(1)602は、動作を開始及び制御するという点で“マスター”として動作し、スレッドDCP(2)604は、DCP(1)602により制御されるという点で“スレーブ”として動作する。これは、DCP(1)602が1つ以上のキュー306を通じてDCP(2)604にシグナリングし、以下の図7において詳細に説明するように、DCP(2)に対して所要の命令を実行させることにより実現されてもよい。ハードウェア周辺装置HW(1)206は、ハードウェア周辺装置を構成するためにデータでロードされる構成レジスタ606と、処理されているデータを保持するデータ記憶装置608とを有する。或る例では、ハードウェア周辺装置のデータ記憶装置608は、内部バッファでもよいが、処理されている入来するデータ及び出力するデータを保持するパイプラインバッファの形式でもよい点に留意すべきである。パイプラインバッファの使用は、ハードウェア周辺装置が処理される全てのデータを保持する必要性を回避し、また、入力及び出力DMA動作が同時に実行され得ることを意味する。
3つのデータのブロックは、メモリデバイス102に格納され、この動作で使用される。第1のデータのブロックは、DMA構成データ610である。DMA構成データ610は、ハードウェア周辺装置への又はハードウェア周辺装置からのデータの転送を構成及び開始するために、スレッドによりメモリアクセスコントローラ106にロードされるデータを有する。このことを以下に詳細に説明する。第2のデータのブロックは、ハードウェア周辺装置レジスタ構成データ612である。このデータのブロックは、ハードウェア周辺装置が特定のタスクを実行するように構成するためのデータを有し、特定のDMA構成データ610に応じてメモリアクセスコントローラ106によりハードウェア周辺装置構成レジスタ606にロードされる。第3のデータのブロックは、ハードウェア周辺装置により処理されるデータ又は処理されたデータを有するデータバッファ614である。これは、特定のDMA構成データ610に応じてメモリアクセスコントローラ606によりハードウェア周辺装置のデータ記憶装置608にロードされる又はハードウェア周辺装置のデータ記憶装置608から読み取られる。
図6の構造を使用した例示の動作は以下のように行われる。スレッドDCP(1)602は、イベントに反応し、HW1regDMA616で示すDMA構成データ610のブロックをメモリデバイス102からメモリアクセスコントローラ106にロードさせる。HW1regDMA616構成データは、4つのデータアイテム((i)ハードウェア周辺装置のレジスタ構成データを保持するメモリデバイス102内のメモリアドレス(この例ではHW1regConfigA618で示す)、(ii)ハードウェア周辺装置のレジスタ構成データがどこにロードされるかを示すハードウェア周辺装置のレジスタアドレス(この例ではHW1regStartで示す)、(iii)転送の方向(すなわち、メモリデバイスからハードウェア周辺装置へ又はその逆)を示すモードインジケータ(この例ではmem2peripで示す)、(iv)転送されるデータの長さを示す長さ値(この例ではHW1numRegsで示す))を有する。
HW1regDMA616をメモリアクセスコントローラ106にロードすることは、メモリアクセスコントローラ106に対して、スレッドDCP(1)602に関連するメモリアクセスチャネルを使用して指定のメモリアドレスHW1regConfigA618(ハードウェア周辺装置のレジスタ構成データ612の一部)からハードウェア周辺装置のレジスタ606にデータを転送し始めることをもたらす。HW1regConfigA618は、ハードウェア周辺装置のレジスタが所望のタスクを実行するように構成する複数のデータアイテムを有する。
ハードウェア周辺装置HW(1)がこのように構成された場合、スレッドDCP(1)は、HW1inDMA620で示すDMA構成データ610の第2のブロックをメモリデバイス102からメモリアクセスコントローラ106にロードさせる。HW1inDMA620構成データも同様に4つのデータアイテム((i)データのバッファを保持するメモリデバイス102内のメモリアドレス(この例ではHW1ipA622で示す)、(ii)データのバッファがどこにロードされるかを示すハードウェア周辺装置のレジスタアドレス(この例ではHW1inRegで示す)、(iii)転送の方向(すなわち、メモリデバイスからハードウェア周辺装置へ又はその逆)を示すモードインジケータ(この例ではmem2peripで示す)、(iv)転送されるデータの長さを示す長さ値(この例ではHW1jobLengthで示す))を有する。
HW1inDMA620をメモリアクセスコントローラ106にロードすることは、メモリアクセスコントローラに対して、スレッドDCP(1)602に関連するメモリアクセスチャネルを使用して指定のメモリアドレスHW1ipA622(データバッファ614の一部)からハードウェア周辺装置のデータ記憶装置608にデータを転送し始めることをもたらす。スレッドDCP(1)602は、ハードウェア周辺装置に転送されるデータバッファ及び構成データの双方に使用される点に留意すべきである。HW1ipA622は、その構成に従ってハードウェア周辺装置により実行されるデータを有する。
前述の動作は、DCP(1)602を使用したハードウェア周辺装置206へのデータの入力をカバーしている。DCP(2)604は、以下に説明するようにハードウェア周辺装置からのデータの転送を制御する。或る例では、ハードウェア周辺装置からデータを転送するためのメモリアクセスチャネルの開始及び確立は、データがハードウェア周辺装置に入力される前に実行されてもよい。これにより、データが処理されるとすぐに用意ができて環境が整う。スレッドDCP(1)602(マスター)は、DCP(2)604(スレーブ)に対して、HW1outDMA624で示すDMA構成データ610の第3のブロックがメモリデバイス102からメモリアクセスコントローラ106にロードされるように制御することをもたらす。HW1outDMA624構成データも同様に4つのデータアイテム((i)データのバッファのメモリデバイス102内のメモリアドレス(この例ではHW1opA626で示す)、(ii)データのバッファがどこにあるかを示すハードウェア周辺装置のメモリアドレス(この例ではHW1outRegで示す)、(iii)転送の方向(すなわち、ハードウェア周辺装置からメモリ)を示すモードインジケータ(この例ではperip2memで示す)、(iv)転送されるデータの長さを示す長さ値(この例ではHW1jobLengthで示す))を有する。
HW1outDMA624をメモリアクセスコントローラ106にロードすることは、メモリアクセスコントローラに対して、スレッドDCP(2)604に関連するメモリアクセスチャネルを使用して指定のハードウェア周辺装置のメモリアドレスHW1outReg622(データ記憶装置608の一部)からメモリデバイス102のデータバッファ614にデータを転送し始めることをもたらす。スレッドDCP(2)604(DCP(1)ではない)は、ハードウェア周辺装置からのデータの転送に使用される点に留意すべきである。HW1opA626は、その構成に従ってハードウェア周辺装置により処理されたデータを有する。
従って、図6は、ハードウェア周辺装置への及びハードウェア周辺装置からのデータの移動がどのようにメモリアクセスチャネルに関連するスレッドにより管理され得るかを示している。ハードウェア周辺装置の構成は構成データの所定のブロックの直接メモリ転送により実現されるため、このことは、非常に迅速に実行され、構成の遅延を最小化してもよい。図6についての前述の説明は、実行される動作の特定の順序を説明しているが、或る例では、この順序は異なってもよい。例えば、順序の或る側面は、高速動作のためにパイプライン化されてもよい。
次に図7を参照すると、図7は、図6に示すものと同じ処理を実施するためにスレッドにより実行され得る一式の例示のキュー状態及び命令を示している。この例では、列702は、Q2で示すキューの内容を示している(単に例示の目的である)。この例での処理は、アイテム“HW1inHandler”がQ2に配置されたときに開始する。これは、例えば、システムの他の要素がタスクを終了し、HW(1)による更なる処理のために用意のできたデータを生成することによりもたされてもよい。Q2へのHW1inHandlerの配置は、列704に示すように、Q2に関連するフラグをアサートさせる。このフラグは、イベントフラグエンジン304に提供され、イベントフラグエンジン304は、イベントをスレッドDCP(1)に通知するように構成される。イベントフラグエンジン304は、ORvecで示すレジスタの値を設定し、どのキューがイベントを生じさせるフラグを引き起こすか(例えば、前述のようにORゲートの入力から)を示す。ORvecの状態は列706に示されており、これは、イベントを引き起こすキューの識別情報が2であることを示す。
列708は、スレッドDCP(1)により実行される例示の擬似コードを示している。DCP(1)は、このイベントがイベントフラグエンジン304から通知されたときに、ラベル“Despatcher”を備えたルーチンを実行するように構成される。Despatcherコードは、ORvec値(すなわち、2)を読み取り、この値を変数Qnumとして格納する。次に、識別情報Qnum(すなわち、Q2)を備えたキューの先頭からアイテムを読み取り、これを変数StartAddrM(これは値HW1inHandlerを有する)として格納する。Q2の先頭のアイテムは、それぞれ列702及び704のアイテム及びフラグのクリアで示すように削除される。次に、Despatcherコードは、スレッドがキューの先頭から読み取られたラベル(すなわち、HW1inHandler)を備えたコードの部分にジャンプするように命令する。
HW1inHandlerコードは、ハードウェア周辺装置へのデータの構成及び読み取りを制御する。しかし、これは、適当な時期に準備ができるように、ハードウェア周辺装置からのデータの出力を管理するように他のスレッドを用意することにより開始する。換言すると、DCP(1)(マスタースレッド)は、スレーブスレッドDCP(2)が他の方向にデータを転送するように準備することを起動する。これは、データアイテム“HW1outHandler”を例示のキューQ4に書き込むことにより行われる。この状態が列710に示されている。このことは、列712のQ4のフラグがアサートされることをもたらす。スレーブスレッドDCP(2)は、列714に示す“SlaveWait”というラベルのコードを実行しており、これは、アイテムがQ4に配置されるまでDCP(2)を待機させる。DCP(2)はQ4のフラグを検出し、起動し、Q4の先頭のアイテムを変数StartAddrSに読み取る。Q4からアイテムが削除され、キュー及びフラグをクリアする。次に、DCP(2)は、以下に説明するように、キューから読み取られたコードラベル“HW1outHandler”にジャンプする。
その間に、列708のDCP(1)に戻り、DCP(1)は、コマンドStartDMAjob(HW1regDMA)でハードウェア周辺装置HW(1)の構成を開始する。これは、図6を参照して前述したように、構成ブロックHW1regDMA616がメモリアクセスコントローラ106にロードされ、構成がハードウェア周辺装置に転送されることをもたらす。スレッドDCP(1)は、これが終了するのを待機し、コマンドStartDMAjob(HW1inDMA)でメモリデバイス102からハードウェア周辺装置HW(1)へのデータバッファの転送を開始する。これは、図6を参照して前述したように、構成ブロックHW1inDMA620がメモリアクセスコントローラ106にロードされ、データバッファがハードウェア周辺装置に転送されることをもたらす。データバッファは、ハードウェア周辺装置により処理される。この場合にも同様に、スレッドは、この動作が終了するのを待機し、スレーブスレッドDCP(2)が終了したというQ5の通知を待機する。
再び列714のスレッドDCP(2)に戻り、HW1outHandlerコードが実行され、DCP(2)は、コマンドStartDMAjob(HW1outDMA)でハードウェア周辺装置HW(1)からメモリデバイスへの(用意ができた場合に)処理されたデータの転送を開始する。これは、図6を参照して前述したように、構成ブロックHW1outDMA624がメモリアクセスコントローラ106にロードされ、データバッファがメモリデバイス102に転送されることをもたらす。スレッドDCP(2)はこれが終了するのを待機し、値“Finished”をQ5に書き込むことにより、DCP(1)に通知する。これは、列716のQ5の状態により示されており、その関連するフラグが列718でアサートされる。スレッドDCP(2)は、ラベル“SlaveWait”に分岐して戻ることにより、待機に戻る。
前述のように、マスタースレッドDCP(1)は、Q5フラグがアサートされるのを待機しており、これに応じてQ5及びそのフラグをクリアする。スレッドDCP(1)は、次の開始アドレス(nextStartAddrで示す)の値を使用される次のキュー(nextQで示す)に書き込むことにより、ハードウェア周辺装置の動作が終了したことを次のシステム要素に通知する。次に、DCP(1)はDespatcherコードに戻り、Q2が次に書き込まれたときに処理が繰り返される。
前述の動作は、どのように実行スレッドが反応し、ハードウェア周辺装置への及びハードウェア周辺装置からのデータの転送及び構成を管理するためにキューの情報を使用することができるかを示している。このコードはコンパクトであり迅速に実行されるが、デジタル信号処理システムが異なる種類のデータ、ハードウェア周辺装置及び処理要件について構成されることを可能にするのに十分に柔軟性がある。シグナリングシステムは、プロセッサリソースの優先付けされた共有を提供し、イベントを処理する際のプロセッサのオーバーヘッドは非常に低くなる一方、依然としてシステム要素が最も重要なイベントに反応することを可能にする。
ここでは“プロセッサ”及び“コンピュータ”という用語は、命令を実行できるような処理機能を備えたいずれかのデバイスを示すために使用される。当業者は、このような処理機能が多くの異なるデバイスに組み込まれることを認識しており、従って、“コンピュータ”という用語は、セットトップボックス、メディアプレイヤ、デジタルラジオ、PC、サーバ、移動電話、パーソナルデジタルアシスタント及び多くの他のデバイスを含む。
当業者は、プログラム命令又はデータを格納するために利用される記憶装置は、ネットワークを通じて分散されてもよいことを認識する。例えば、遠隔コンピュータは、ソフトウェアとして記述される処理の例を格納してもよい。ローカル又は端末コンピュータは、遠隔コンピュータにアクセスし、プログラムを実行するためにソフトウェアの一部又は全部をダウンロードしてもよい。或いは、ローカルコンピュータは、必要に応じてソフトウェアの部分をダウンロードしてもよく、ローカル端末の或るソフトウェア命令を実行して遠隔コンピュータ(又はコンピュータネットワーク)の或るソフトウェア命令を実行してもよい。当業者はまた、当業者に知られている通常の技術を利用することにより、ソフトウェア命令の全部又は一部が専用回路、プログラム可能論理アレイ等により実行されてもよいことを認識する。
当業者に明らかなように、ここに提供される如何なる範囲又はデバイスの値は、考えられる効果を失うことなく拡張又は変更されてもよい。
前述の恩恵及び利点は、1つの実施例に関係してもよく、複数の実施例に関係してもよいことが分かる。実施例は、前述の問題のいずれか又は全部を解決するものに限定されず、前述の恩恵及び利点のいずれか又は全部を有するものに限定されない。
1つのアイテムへの言及は、1つ以上のこれらのアイテムを示す。ここでは“有する”という用語は、特定された方法のブロック又は要素を含むが、このようなブロック又は要素が排他的なリストを有さず、方法又は装置が更なるブロック又は要素を含んでもよいことを意味する。
ここに記載の方法のステップは、如何なる適切な順序で実行されてもよく、必要に応じて同時に実行されてもよい。更に、ここに記載の対象の要旨及び範囲を逸脱することなく、個々のブロックは方法のいずれかから削除されてもよい。考えられる効果を失うことなく、前述の例のいずれかの態様は、更なる例を形成するために、記載の他の例のいずれかの態様と組み合わされてもよい。
好ましい実施例の前述の説明は、一例のみとして与えられており、様々な変更が当業者により行われてもよいことが分かる。様々な実施例は特定の程度の詳細で上記に記載されているが、例示の要旨及び範囲を逸脱することなく、当業者は開示の実施例に様々な変更を行ってもよい。
102 メモリデバイス
104 デジタル信号プロセッサ
106 メモリアクセスコントローラ
108 ハードウェア周辺装置
110 全体制御プロセッサ

Claims (19)

  1. メモリデバイスと、
    前記メモリデバイスにアクセスする複数のチャネルを提供するメモリアクセスコントローラと、
    前記メモリアクセスコントローラにそれぞれ接続され、前記チャネルのうち1つを介して前記メモリデバイスからデータを読み取り、前記データにおいて1つ以上の動作を実行し、前記チャネルのうち1つを介してデータを前記メモリデバイスに書き込むようにそれぞれ構成された複数の専用ハードウェアブロックと、
    前記メモリアクセスコントローラに接続され、前記チャネルのうち1つを制御するようにそれぞれ構成された複数のスレッドを実行するように構成されたプロセッサであり、前記スレッドのうち少なくとも1つは、イベントの発生を検出し、これに応じて、前記スレッドの関連するチャネルを使用して前記メモリデバイスから選択された専用ハードウェアブロックへのデータの提供を制御するように構成されるプロセッサと、
    動作の終了に応じて前記プロセッサにより書き込まれた1つ以上のアイテムを保持するように構成された複数のキューと、関連するキューが少なくとも1つのアイテムを含む場合に示すためのフラグをアサートするように構成されたキュー毎の通知ロジックと、
    前記イベントの発生を検出する条件を規定する一連の論理ゲートを使用して、複数のキューからのフラグ状態を組み合わせ、前記イベントが生じたときに出力を前記少なくとも1つのスレッドに提供するように構成された構成可能なイベントフラグエンジンと
    を有するデジタル信号処理システム。
  2. 前記少なくとも1つのスレッドは、前記イベントが検出されるまで、前記スレッドに対して更なる命令を実行することを中止させる待機命令を実行する、請求項1に記載のデジタル信号処理システム。
  3. 前記イベントは、前記専用ハードウェアブロック又はデジタル信号プロセッサのうち1つにより実行される動作の終了を特定する、請求項1又は2に記載のデジタル信号処理システム。
  4. 前記少なくとも1つのスレッドは、前記フラグのうち少なくとも1つのアサートに応じて前記イベントの発生を検出するように構成される、請求項に記載のデジタル信号処理システム。
  5. 前記論理ゲートは、複数のイベントに関するフラグを受信するように構成された複数の入力を有する少なくとも1つのORゲートを有する、請求項に記載のデジタル信号処理システム。
  6. 前記ORゲートの各入力は、優先度を割り当てられ、前記少なくとも1つのスレッドは、前記ORゲートのどの入力がアサートされたかを判定し、最高の優先度のアサートされた入力において前記フラグを引き起こすイベントに関する動作を実行するように構成される、請求項に記載のデジタル信号処理システム。
  7. 前記少なくとも1つのスレッドは、アサートしたフラグに関連するキューからアイテムを読み取り、前記アイテムを使用して前記選択された専用ハードウェアブロックを選択及び構成するように更に構成される、請求項ないしのうちいずれか1項に記載のデジタル信号処理システム。
  8. 前記少なくとも1つのスレッドは、前記メモリデバイスからのデータの読み取り、前記データにおける動作の実行、及び前記メモリデバイスへのデータの書き込みのうち少なくとも1つに応じて、アイテムを前記キューのうち1つに書き込むように更に構成される、請求項ないしのうちいずれか1項に記載のデジタル信号処理システム。
  9. 前記複数のスレッドのうち少なくとも1つの更なるスレッドは、更なるイベントの発生を検出し、これに応じて、関連するチャネルを使用して前記選択された専用ハードウェアブロックから前記メモリデバイスへのデータの提供を制御するように構成される、請求項1ないしのうちいずれか1項に記載のデジタル信号処理システム。
  10. 前記プロセッサは、順序識別子を各スレッドに順に割り当て、1つより多くのスレッドが前記メモリデバイスへのアクセスを競合した場合に、その識別子に基づいてスレッドに優先度を与えるように構成される、請求項1ないしのうちいずれか1項に記載のデジタル信号処理システム。
  11. デジタル信号処理システムにおいてデータを転送する方法であって、
    プロセッサで複数のスレッドを実行するステップであり、各スレッドは、所定のイベントが検出されるまで待機し、前記所定のイベントに応じて、専用ハードウェアブロックがそのスレッドに関連するメモリアクセスチャネルを介してメモリデバイスからデータを読み取ること又はメモリデバイスにデータを書き込むことを可能にするように、メモリアクセスコントローラを制御することを有する一連の動作を独立して実行するステップを有し、
    前記方法は、キューが少なくとも1つのアイテムを含む場合を示すためのフラグをアサートするステップであり、前記キューは、動作の終了に応じて前記プロセッサにより書き込まれた1つ以上のアイテムを保持するように構成された複数のキューのうち1つであるステップと、
    前記イベントの発生を検出する条件を規定する一連の論理ゲートを有する構成可能なイベントフラグエンジンを使用して、複数のキューからのフラグ状態を組み合わせるステップと、
    前記イベントが生じたときに出力を前記構成可能なフラグエンジンからスレッドに提供するステップと
    を更に有する方法。
  12. 前記所定のイベントは、更なる専用ハードウェアブロック又はデジタル信号プロセッサが前記メモリデバイス内の前記データにおいて動作を終了したことを示す、請求項11に記載の方法。
  13. 前記所定のイベントは、フラグを監視することにより検出され、前記フラグのアサートは、前記所定のイベントの発生を示す、請求項11又は12に記載の方法。
  14. 前記一連の動作は、前記所定のイベントの検出に応じて、アサートしたフラグに関連するキューからイベント情報を読み取ることを更に有する、請求項13に記載の方法。
  15. 前記一連の動作は、前記イベント情報を読み取った後に、前記キューから前記イベント情報を削除することを更に有する、請求項14に記載の方法。
  16. メモリアクセスコントローラを制御するステップは、構成データを前記メモリデバイスから前記メモリアクセスコントローラに転送するために前記イベント情報を使用することを有する、請求項14又は15に記載の方法。
  17. 前記構成データは、前記メモリアクセスコントローラに対して、前記メモリデバイスから前記専用ハードウェアブロックへの構成データの転送、前記メモリデバイスから前記専用ハードウェアブロックへのデータのブロックの転送、及び前記専用ハードウェアブロックから前記メモリデバイスへの処理されたデータのブロックの転送のうち少なくとも1つを実行させるように構成されたパラメータを有する、請求項16に記載の方法。
  18. コンピュータに、請求項11ないし17のうちいずれか1項に記載の方法の全てのステップを実行させるコンピュータプログラム。
  19. 請求項18に記載のコンピュータプログラムを記憶したコンピュータ可読媒体。
JP2012232839A 2011-10-26 2012-10-22 デジタル信号処理のデータ転送 Active JP6076686B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1118534.5 2011-10-26
GB1118534.5A GB2495959A (en) 2011-10-26 2011-10-26 Multi-threaded memory access processor

Publications (2)

Publication Number Publication Date
JP2013093026A JP2013093026A (ja) 2013-05-16
JP6076686B2 true JP6076686B2 (ja) 2017-02-08

Family

ID=45373480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012232839A Active JP6076686B2 (ja) 2011-10-26 2012-10-22 デジタル信号処理のデータ転送

Country Status (6)

Country Link
US (4) US8990522B2 (ja)
EP (1) EP2587384B1 (ja)
JP (1) JP6076686B2 (ja)
CN (2) CN103218329B (ja)
GB (1) GB2495959A (ja)
TW (1) TWI571744B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789013B1 (en) * 2006-08-28 2014-07-22 Rockwell Automation Technologies, Inc. Ordered execution of events in a data-driven architecture
GB201314732D0 (en) * 2013-08-16 2013-10-02 Sparkle Coupon Services Ltd A data transmission method and system
GB201405323D0 (en) 2014-03-25 2014-05-07 Imagination Tech Ltd Prioritsing events to which a processor is to respond
EP3806017A1 (en) 2014-04-09 2021-04-14 Shifman, Orit Methods, platforms and systems for paying persons for use of their personal intelligence profile data
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
CN105744442B (zh) * 2016-04-27 2019-04-26 中科创达软件科技(深圳)有限公司 一种音频信号输出方法及装置
US10296393B2 (en) 2016-09-19 2019-05-21 Texas Instruments Incorporated Method for scheduling a processing device
US20210200692A1 (en) * 2017-06-20 2021-07-01 Hewlett-Packard Development Company, L.P. Signal combiner
US10572259B2 (en) * 2018-01-22 2020-02-25 Arm Limited Hints in a data processing apparatus
CN109445854B (zh) * 2018-10-31 2019-11-05 中科驭数(北京)科技有限公司 数据传输方法及装置
CN111240813A (zh) * 2018-11-29 2020-06-05 杭州嘉楠耘智信息科技有限公司 一种dma调度方法、装置和计算机可读存储介质
CN111064799A (zh) * 2019-12-25 2020-04-24 北京首信科技股份有限公司 应用于物联网的数据推送方法、装置、设备及存储介质
CN114328323A (zh) * 2021-12-01 2022-04-12 北京三快在线科技有限公司 一种数据中转单元及基于数据中转单元的数据传输方法
CN114285704B (zh) * 2022-03-03 2022-06-21 广州慧睿思通科技股份有限公司 上行信道估计方法、芯片、系统及存储介质

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
JP3258300B2 (ja) * 1999-09-03 2002-02-18 松下電器産業株式会社 Dma転送装置および画像復号装置
US6694385B1 (en) * 1999-09-10 2004-02-17 Texas Instruments Incorporated Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US6925641B1 (en) * 2000-02-04 2005-08-02 Xronix Communications, Inc. Real time DSP load management system
US7538772B1 (en) * 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
EP1421704B1 (en) * 2001-08-29 2007-11-14 Analog Devices, Inc. Methods and apparatus for clock and power control in wireless systems
US20030225739A1 (en) * 2002-05-04 2003-12-04 Chesson Gregory L. Flexible scheduling architecture
US7376950B2 (en) * 2002-05-08 2008-05-20 Intel Corporation Signal aggregation
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
JP2005202767A (ja) 2004-01-16 2005-07-28 Toshiba Corp プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路
US7882504B2 (en) * 2004-01-29 2011-02-01 Klingman Edwin E Intelligent memory device with wakeup feature
US7769950B2 (en) * 2004-03-24 2010-08-03 Qualcomm Incorporated Cached memory system and cache controller for embedded digital signal processor
US7685354B1 (en) * 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
DK1794979T3 (en) * 2004-09-10 2017-07-24 Cavium Inc Selective copying of data structure
EP1645968B1 (en) * 2004-10-11 2008-03-19 Texas Instruments Incorporated Multi-threaded DMA
GB2422926B (en) * 2005-02-04 2008-10-01 Advanced Risc Mach Ltd Data processing apparatus and method for controlling access to memory
CN100349150C (zh) 2005-06-06 2007-11-14 北京中星微电子有限公司 通过直接存储器访问控制器传输数据的系统及方法
US20070091104A1 (en) * 2005-07-08 2007-04-26 Singh Gajendra P Computer system and method
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
JP4530971B2 (ja) 2005-11-07 2010-08-25 株式会社ソニー・コンピュータエンタテインメント 起動処理装置、dma転送システム、dma転送方法
EP2016496B1 (en) * 2006-04-21 2014-03-12 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
WO2008004158A1 (en) * 2006-07-03 2008-01-10 Nxp B.V. Method and system for configuration of a hardware peripheral
US7489259B2 (en) * 2006-08-01 2009-02-10 Creative Technology Ltd. Sample rate converter and method to perform sample rate conversion
CN100533413C (zh) * 2006-08-04 2009-08-26 北京中星微电子有限公司 数字信号处理器子系统及其数据处理方法
US7769964B2 (en) * 2006-08-21 2010-08-03 Intel Corporation Technique to perform memory reference filtering
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8099574B2 (en) * 2006-12-27 2012-01-17 Intel Corporation Providing protected access to critical memory regions
US7873757B2 (en) * 2007-02-16 2011-01-18 Arm Limited Controlling complex non-linear data transfers
US20090070765A1 (en) * 2007-09-11 2009-03-12 Bea Systems, Inc. Xml-based configuration for event processing networks
US8407425B2 (en) * 2007-12-28 2013-03-26 Intel Corporation Obscuring memory access patterns in conjunction with deadlock detection or avoidance
US9081694B2 (en) * 2008-01-14 2015-07-14 Bivio Networks, Inc. Systems and methods for asymmetric multiprocessing
US20100030927A1 (en) * 2008-07-29 2010-02-04 Telefonaktiebolaget Lm Ericsson (Publ) General purpose hardware acceleration via deirect memory access
US8555016B2 (en) * 2008-12-17 2013-10-08 Intel Corporation Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
EP2377026B1 (en) * 2008-12-19 2012-11-07 ST-Ericsson SA Resolving contention between data bursts
US20100281222A1 (en) * 2009-04-29 2010-11-04 Faraday Technology Corp. Cache system and controlling method thereof
JP4962921B2 (ja) * 2009-08-26 2012-06-27 日本電気株式会社 コンピュータのメモリ再配置制御方法およびプログラム並びにコンピュータシステム
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US8886994B2 (en) * 2009-12-07 2014-11-11 Space Micro, Inc. Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment
US8054684B2 (en) * 2009-12-18 2011-11-08 Sandisk Technologies Inc. Non-volatile memory and method with atomic program sequence and write abort detection
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN102763136B (zh) * 2010-02-11 2015-04-01 诺基亚公司 用于提供多线程视频解码的方法和设备
US8819687B2 (en) * 2010-05-07 2014-08-26 Advanced Micro Devices, Inc. Scheduling for multiple memory controllers
JP5548037B2 (ja) * 2010-06-11 2014-07-16 パナソニック株式会社 命令発行制御装置及び方法
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8588228B1 (en) * 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US8239620B2 (en) * 2010-09-27 2012-08-07 Mips Technologies, Inc. Microprocessor with dual-level address translation
US8516205B2 (en) * 2010-10-29 2013-08-20 Nokia Corporation Method and apparatus for providing efficient context classification
US9405700B2 (en) * 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9064116B2 (en) * 2010-11-08 2015-06-23 Intel Corporation Techniques for security management provisioning at a data storage device
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
WO2012123061A1 (en) * 2011-02-17 2012-09-20 Hyperion Core Inc. Parallel memory systems
US20120221785A1 (en) * 2011-02-28 2012-08-30 Jaewoong Chung Polymorphic Stacked DRAM Memory Architecture
US8694754B2 (en) * 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9626184B2 (en) * 2013-06-28 2017-04-18 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters

Also Published As

Publication number Publication date
CN107066408A (zh) 2017-08-18
US8990522B2 (en) 2015-03-24
EP2587384A1 (en) 2013-05-01
US9575900B2 (en) 2017-02-21
CN103218329A (zh) 2013-07-24
GB2495959A (en) 2013-05-01
TWI571744B (zh) 2017-02-21
US20170160947A1 (en) 2017-06-08
US11372546B2 (en) 2022-06-28
US20150161058A1 (en) 2015-06-11
JP2013093026A (ja) 2013-05-16
TW201333711A (zh) 2013-08-16
CN107066408B (zh) 2020-10-30
US10268377B2 (en) 2019-04-23
GB201118534D0 (en) 2011-12-07
US20190220199A1 (en) 2019-07-18
CN103218329B (zh) 2017-04-12
US20130111159A1 (en) 2013-05-02
EP2587384B1 (en) 2017-07-12

Similar Documents

Publication Publication Date Title
JP6076686B2 (ja) デジタル信号処理のデータ転送
US11531543B2 (en) Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
US11635959B2 (en) Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
US8108571B1 (en) Multithreaded DMA controller
US9164772B2 (en) Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available
US20150212941A1 (en) Managing out-of-order memory command execution from multiple queues while maintaining data coherency
JP6240745B2 (ja) 複数のハイパーバイザを実行するシステムおよび方法
EP2972787B1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
JP2007133456A (ja) 半導体装置
US20080320240A1 (en) Method and arrangements for memory access
JP4585647B2 (ja) パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
JP2011034190A (ja) データ処理装置
US11068308B2 (en) Thread scheduling for multithreaded data processing environments
US9779044B2 (en) Access extent monitoring for data transfer reduction
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170111

R150 Certificate of patent or registration of utility model

Ref document number: 6076686

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250