JP2014050103A - デジタル信号処理のためのタイルベースインタリーブ処理及びデインタリーブ処理 - Google Patents

デジタル信号処理のためのタイルベースインタリーブ処理及びデインタリーブ処理 Download PDF

Info

Publication number
JP2014050103A
JP2014050103A JP2013169110A JP2013169110A JP2014050103A JP 2014050103 A JP2014050103 A JP 2014050103A JP 2013169110 A JP2013169110 A JP 2013169110A JP 2013169110 A JP2013169110 A JP 2013169110A JP 2014050103 A JP2014050103 A JP 2014050103A
Authority
JP
Japan
Prior art keywords
data items
memory
dram
sequence
chip
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.)
Granted
Application number
JP2013169110A
Other languages
English (en)
Other versions
JP2014050103A5 (ja
JP5575310B2 (ja
Inventor
Murrin Paul
ミュリン ポール
John Anderson Adrian
ジョン アンダーソン エイドリアン
El-Hajjar Mohammed
エル−ハヤール モハメッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of JP2014050103A publication Critical patent/JP2014050103A/ja
Publication of JP2014050103A5 publication Critical patent/JP2014050103A5/ja
Application granted granted Critical
Publication of JP5575310B2 publication Critical patent/JP5575310B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/276Interleaving address generation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Static Random-Access Memory (AREA)
  • Dram (AREA)

Abstract

【課題】ロー・カラムインタリーブされたデータのタイルベースのインタリーブ処理及びデインタリーブ処理のための技術を提供することである。
【解決手段】本発明の一実施例では、デインタリーブ処理は、オンチップメモリからDRAMへの第1のメモリ転送段階とDRAMからオンチップメモリへの第2のメモリ転送段階との2つのメモリ転送段階に分割される。各段階は、ロー・カラムインタリーブされたデータブロックの一部に対して実行され、第2段階の出力がデインタリーブされたデータを有するように、データアイテムをリオーダリングする。第1段階では、データアイテムは、メモリリードアドレスの非リニアシーケンスに従ってオンチップメモリから読み込まれ、DRAMに書き込まれる。第2段階では、データアイテムは、DRAMインタフェースを効率的に利用するリニアアドレスシーケンスのバーストに従ってDRAMから読み込まれ、メモリライトアドレスの非リニアシーケンスに従ってオンチップメモリに書き込まれる。
【選択図】図5

Description

本発明は、デジタル信号処理に関する。
デジタル信号処理は、広範なアプリケーションに利用される。これらのアプリケーションの多くは、エンドユーザに意味のあるもの又は有用なものにするため、データ処理に対する時間の制約が存在するという意味でリアルタイムである。この具体例は、デジタルテレビやデジタルラジオなどのデジタル放送ストリームである。デジタル信号処理システムは、受信とほぼ同時にデータが出力されることを可能にするのに十分迅速にリアルタイムストリームを処理及び復号化することが可能である必要がある(barring buffering)。
デジタル信号処理システムは、より汎用的なデジタル信号プロセッサに加えて、1以上の専用のハードウェア周辺装置をしばしば利用する。ハードウェア周辺装置は、迅速かつ効率的に特定の信号処理タスクを実行するよう設計された処理ブロックである。例えば、インタリーブ処理及びデインタリーブ処理は、ハードウェア周辺装置を用いてリアルタイムデータに対して通常実行される処理である。インタリーブ処理及びデインタリーブ処理は、メモリ集約的処理であり、これを実行するハードウェア周辺装置は、データをリオーダリングするため、付属の専用のメモリ装置を利用する。
しかしながら、異なるタイプのリアルタイムデータの要求は大きく変わるものである可能性がある。例えば、世界中で利用される各種の異なるデジタルテレビ及びラジオの規格は、符号化、インタリーブ処理、等化などの異なるタイプ又はパラメータを利用するなど、しばしばリアルタイムデータを異なって構成している。デジタル信号処理システムは異なる規格により利用されるのに十分フレキシブルであるべきである場合、インタリーブ処理又はデインタリーブ処理に利用される専用のメモリ装置は、最大のメモリ要求によって規格を処理するため十分大きなものである必要がある。この結果、インタリーブ処理又はデインタリーブ処理ハードウェア周辺装置により利用されるメモリは、しばしば過少利用される。
メモリ装置の具体例は、DRAM(Dynamic Random Access Memory)装置である。DRAM装置は、各ページが典型的には数千バイトのサイズのページに格納したコンテンツを構成する。各DRAMは、限定数のページしか一度に開くことができず(典型的には、4ページ)、多くのオーバヘッドサイクルが、データにアクセスするのにページを開くために必要とされる。
後述される実施例は、既知のデジタル信号処理システムの問題点の何れか又はすべてを解決する実現形態に限定されるものでない。
本概要は、詳細な説明においてさらに後述されるコンセプトを簡略された形式により紹介するため提供される。本概要は、請求される主題のキーとなる特徴又は必須の特徴を特定することを意図するものでなく、また請求される主題の範囲を決定するのに役立つものとして利用されることを意図するものでない。
本発明の1つの課題は、ロー・カラムインタリーブされたデータのタイルベースのインタリーブ処理及びデインタリーブ処理のための技術を提供することである。
一実施例では、デインタリーブ処理は、オンチップメモリからDRAMへの第1のメモリ転送段階とDRAMからオンチップメモリへの第2のメモリ転送段階との2つのメモリ転送段階に分割される。各段階は、ロー・カラムインタリーブされたデータブロックの一部に対して実行され、第2段階の出力がデインタリーブされたデータを有するように、データアイテムをリオーダリングする。第1段階では、データアイテムは、メモリリードアドレスの非リニアシーケンスに従ってオンチップメモリから読み込まれ、DRAMに書き込まれる。第2段階では、データアイテムは、DRAMインタフェースを効率的に利用するリニアアドレスシーケンスのバーストに従ってDRAMから読み込まれ、メモリライトアドレスの非リニアシーケンスに従ってオンチップメモリに書き込まれる。
第1の態様は、第1シーケンスに配置される複数のデータアイテムを格納する第1メモリであって、各データアイテムが前記第1メモリ上の関連するメモリアドレスを有する、前記第1メモリと、第2メモリと、前記第1メモリと前記第2メモリとに接続され、DRAMに対するポートを有する転送エンジンであって、第1メモリ転送段階において前記第1メモリから前記DRAMに前記複数のデータアイテムを直接転送し、第2メモリ転送段階において前記DRAMから前記第2メモリに前記複数のデータアイテムを直接転送するよう構成される前記転送エンジンとを有するデジタル信号処理システムオンチップであって、前記第1メモリ転送段階において、前記転送エンジンは、所定のメモリリードアドレスの非リニアシーケンスに従って前記第1メモリから前記複数のデータアイテムを読み込み、前記複数のデータアイテムを前記DRAMに書き込むよう構成され、前記第2メモリ転送段階において、前記転送エンジンは、リニアアドレスシーケンスの各バーストがDRAMインタフェースのバーストサイズに基づき選択された長さを有する、リニアアドレスシーケンスのバーストに従って前記DRAMから前記複数のデータアイテムを読み込み、前記複数のデータアイテムが前記第1シーケンスと異なる第2シーケンスにより前記第2メモリに配置されるように、所定のメモリライトアドレスの非リニアシーケンスに従って前記複数のデータアイテムを前記第2メモリに書き込むよう構成され、前記第1シーケンスと前記第2シーケンスとの1つは、ロー・カラムインタリーブされたデータを有するデジタル信号処理システムオンチップを提供する。
第2の態様は、デジタル信号処理システムにおいてデータアイテムに対してインタリーブ又はデインタリーブ処理を実行する方法であって、第1オンチップメモリから、所定のメモリリードアドレスの非リニアシーケンスに従って第1シーケンスに格納されている第1の複数のデータアイテムを読み込むステップと、前記第1の複数のデータアイテムをDRAMに書き込むステップと、前記DRAMから、リニアアドレスシーケンスの各バーストがDRAMインタフェースのバーストサイズに基づき選択される長さを有する、リニアアドレスシーケンスのバーストに従って前記第1の複数のデータアイテムを読み込むステップと、前記データアイテムが前記第1シーケンスと異なる第2シーケンスにより第2オンチップメモリ上に配置されるように、所定のメモリライトアドレスの非リニアシーケンスに従って前記第1の複数のデータアイテムを前記第2オンチップメモリに書き込むステップとを有し、前記第1シーケンスと前記第2シーケンスとの1つは、ロー・カラムインタリーブされたデータを有する方法を提供する。
第3の態様は、コンピュータ上で実行されると、上述した方法の何れかのすべてのステップを実行するよう構成されるコンピュータプログラムコードを有するコンピュータプログラムを提供する。コンピュータプログラムは、コンピュータ可読記憶媒体上で実現されてもよい。
第4の態様は、図5〜10の何れかを参照して説明されるようなインタリーブ処理又はデインタリーブ処理を実行する方法を提供する。
ここに記載される方法は、例えば、説明された方法の構成要素となる部分を実行するようコンピュータを設定するコンピュータプログラムコードを有するコンピュータプログラムの形態などにより、有形の記憶媒体に格納されたマシーン可読形態のソフトウェアにより設定されたコンピュータにより実行されてもよい。有形な(又は非一時的な)記憶媒体の具体例として、ディスク、サムドライブ、メモリカードなどがあげられ、伝搬信号は含まない。ソフトウェアは、方法のステップが何れか適切な順序により又は同時に実行されるように、パラレルプロセッサ又はシリアルプロセッサにより実行に適したものとすることが可能である。
これは、ファームウェア及びソフトウェアが価値のある分離して取引可能な商品とすることが可能であることを認める。所望の機能を実行するため、“ダム”又は標準的なハードウェアを実行又は制御するソフトウェアを網羅することが意図される。また、所望の機能を実行するため、ユニバーサルプログラムマブルチップを設定するため又はシリコンチップを設計するため利用されるように、HDL(Hardware Description Language)ソフトウェアなどのハードウェアのコンフィギュレーションを記述又は定義するソフトウェアを含むことが意図される。
上記特徴は、適切な場合、当業者に明らかなように組み合わされてもよく、実施例の態様の何れかと組み合わせ可能である。
本発明によると、ロー・カラムインタリーブされたデータのタイルベースのインタリーブ処理及びデインタリーブ処理のための技術を提供することができる。
図1は、デジタル信号処理システムを示す。 図2は、転送エンジンの概略図を示す。 図3は、デインタリーブ処理の各種の方法例を示す概略図を示す。 図4は、転送エンジンを利用して2つのデータブロックに対して実行されるロー・カラム処理の具体例を示す。 図5は、デインタリーブ処理のさらなる2つの方法例を示す概略図を示す。 図6は、DRAM装置の制限に対抗するためのエンハンスメントを有する図4のロー・カラム処理の具体例を示す。 図7は、一例となる時間インタリーブ処理されたデータブロックを示す。 図8は、デインタリーブ処理の方法例のフロー図である。 図9は、図7に示されるような入力されたインタリーブ処理されたブロックの図8の方法の第1段階の終了時にDRAMに格納されるデータアイテムのグリッド表示を示す。 図10は、図7に示されるような入力されたインタリーブ処理されたブロックの図8の方法の第2段階の終了時にオンチップメモリに格納されるデータアイテムのグリッド表示を示す。
以下、図面に基づいて本発明の実施の形態を説明する。図面を通じて、共通の参照番号は同様の特徴を示すのに利用される。
各実施例は、例示のため以下で説明される。これらの具体例は、実施例を実現可能な唯一の方法ではないが、現在出願人が知っている実施例を実現するための最善の方法を表すものである。本説明は、具体例の機能と、当該具体例を構成及び実行するためのステップシーケンスとを提供する。しかしながら、同一の又は等価な機能及びシーケンスが、異なる具体例により実現されてもよい。汎用デジタル信号プロセッサ(DSP)と特殊なハードウェア周辺装置との双方を利用するデジタル信号処理システムが後述される。メモリの効率的な利用を可能にするため、システムの異なる要素が共有されるオンチップメモリにアクセスする。DMA(Direct Memory Access)コントローラなどの転送エンジンによって、データアイテムがオンチップメモリとの間で読み書きされる。オンチップメモリは、SRAM(Static Random Access Memory)を有し、転送エンジンはまた、外部の又はチップ上のDRAM(Dynamic RAM)に対するポートを有する。転送エンジンは、データアイテムの各種シーケンスがメモリとの間で読み書きされることを可能にするアドレス生成要素を有し、当該シーケンスは、データアイテムのリニア及び非リニアシーケンスを有してもよい。
“リニア”という用語は、ここではデータアイテムのシーケンスのリード処理/ライト処理に関連して、連続的なデータアイテムのリード処理/ライト処理を表すのに利用される。他方、“非リニア”という用語は、ここではデータアイテムのシーケンスのリード処理/ライト処理に関連して、不連続なデータアイテムのリード処理/ライト処理を表すのに利用され、非リニアシーケンスの具体例が後述される。
以下の説明において、DRAMの利用は、シンクロナスDRAM、DDR(Double Data Rate)DRAM及びバーストアクセスDRAMを含む何れかの形態のDRAMをカバーすることが意図される。上述されるように、DRAM装置は、格納されたコンテンツをページに構成し、一度には限定数のページしか開くことができない。何れかのタイプのDRAMにアクセスすると、異なるページに頻繁にアクセスするデータアクセスパターンは、ページを開くのに多くのオーバヘッドサイクルを必要とするため、非効率的なものとなりうる。バーストアクセスDRAMでは、DRAMインタフェースは、4,8,16,32又は64(又はそれ以上)の連続するバイトのバーストを読み書きする。不完全なDRAMインタフェースバーストを利用するアクセスパターンもまた非効率的である。
データアイテムの異なるシーケンスを読み書きする能力は、データアイテムがメモリ位置間で又はあるメモリから他のメモリ(SRAMとDRAMとの間など)に転送されながら、インタリーブ処理やデインタリーブ処理などのリオーダリング処理がまとめてデータアイテムに対して実行されることを可能にするこれは、インタリーブ処理やデインタリーブ処理により利用されるデジタル信号処理システムに専用の(共有されない)メモリが含まれる必要を回避し、チップ面積及びコストを低下させる。利用される異なるシーケンスは、以下でより詳細に説明されるように、DRAM(面積及びコストに関してDRAMよりも利用するのが安価で、より大きなDRAMが利用されてもよい)など、特定のタイプのメモリ装置のパフォーマンスの制約に対抗するよう構成されてもよい。
以下の説明では、時間インタリーブ処理/デインタリーブ処理が例示のために利用されるが、本方法はビットインタリーブ処理/デインタリーブ処理などの他の形態のインタリーブ処理/デインタリーブ処理にも適用可能であることが理解されるであろう。
まず、一例となるデジタル信号処理システムオンチップ100の構成を示す図1が参照される。システム100は、オンチップメモリ102と、転送エンジン106に接続されるDRAM112とを有する。メモリ装置102,112の双方が、データアイテムの格納のため利用され、それらは共に、共有メモリスペース(例えば、MPEG又は他のビデオストリーム関連データと共に、デジタル信号処理システムに関するデータを格納する)を設けるようにしてもよい。オンチップメモリ102は、DRAMではないが、SRAM(限定せず)などの何れか適切な形態のRAMとすることが可能である。DRAM112は、チップ上又はチップの外部にあってもよく(それはDSP104により直接的にはアクセス可能でないという意味で)、以下の説明では、“オンチップ”メモリという用語は、DRAM112がまたオンチップメモリであるという事実にもかかわらず(すなわち、同じシリコン部分上に形成されるように、システム100のオンチップの一体化された部分)、非DRAMメモリ要素であるオンチップメモリ102を表すのに利用される。
1以上のDSP104は、オンチップメモリ102に接続される。DSP104は、例えば、高速フーリエ変換及び等化など、データに対して信号処理計算を実行するようプログラム可能なプロセッサである。汎用プロセッサとみなされることはないが、DSP104は、後述されるハードウェア周辺装置よりも設定可能なものである。DSP104は、オンチップメモリ102からデータを読み、当該データに対して信号処理演算を実行し、オンチップメモリ102にデータを書き戻すためのプログラムコード/命令を実行する。
複数のハードウェア(HW)周辺装置108のためオンチップメモリ102へのアクセスを提供する転送エンジン106がまた、オンチップメモリ102に接続される。いくつかの具体例では、転送エンジン106は、DMA(Direct Memory Access)コントローラの形態をとりうる。転送エンジン106は、オンチップメモリ102との間のデータのリード処理又はライト処理を可能にするため、ハードウェア周辺装置108により利用可能な複数のメモリアクセスチャネル(DMAチャネルなど)を提供する。
上述されるように、ハードウェア周辺装置108は、特定の信号処理タスクを実行するため構成される特化した専用の固定機能ハードウェアブロックである。例えば、1つのハードウェア周辺装置は、特化したViterbi復号化ブロックであってもよく、他のものは特化したReed−Solomon復号化ブロックであってもよい。ハードウェア周辺装置はまた、アクセラレータとして知られてもよい。各ハードウェア周辺装置は、互いに独立して動作する。ハードウェア周辺装置は、各自のタスクに固有の動作パラメータにより提供されるのに十分設定可能なものであってもよいが、各自のタスクを変更するのに十分設定可能なものではない(例えば、Viterbiブロックは、Reed−Solomonブロックとして再構成することができないなど)。従って、ハードウェア周辺装置は、DSP104よりも特定のタスクに特化したものとなる。しかしながら、ハードウェア周辺装置は、極めて迅速かつ効率的に各自の特化したタスクを実行するよう構成される。また、デジタル信号処理システムの処理を初期化、設定及び制御するのに利用可能な全体制御プロセッサ110がまた、オンチップメモリ102に接続される。
上述されたデジタル信号処理システムは、信号処理演算においてフレキシビリティを提供する。例えば、システムは、異なるDSP104及びハードウェア周辺装置108が何れか所望の構成又はシーケンスによりデータを処理するため動作するよう構成可能である。各ハードウェア周辺装置又はDSPは、システムの他の部分により提供され、オンチップメモリ102に格納される1以上のデータブロック(ここでは、データのバッファとも呼ばれる)上で動作可能であり、システムの他の要素により利用される1以上のデータのバッファを生成及び格納する。これは、デジタル信号処理システムが、例えば、異なる放送/通信規格について、異なるタイプの広範な信号について利用されることを可能にする。
オンチップメモリ102により提供される共通のメモリスペースの利用は、システム100のオンチップに用意されたトータルのメモリ格納量の低減を可能にする。共通のメモリスペースを利用しない場合、各処理要素には各自の専用のメモリが設けられる。例えば、各DSP104は、各自のワークスペースメモリを有してもよく、全体制御プロセッサ110は、実行コード及びデータを格納するための他の別のメモリを有し、ハードウェア周辺装置108は、入力及び出力バッファを有し、1以上の追加的なメモリが、処理要素間のデータのやりとりのため利用されてもよい。
デジタル信号処理システムは、異なる通信規格が実現されることを可能にするため設定可能であるため、各個別のメモリは、何れか与えられたメモリに対する最大要求を有する特定の規格のために独立してサイズが設計される必要がある。すなわち、DSPメモリは、DSPメモリに対して最大の要求を有する規格を収容するのに十分な大きさである必要がある。同様に、ハードウェア周辺装置のバッファは、ハードウェア周辺装置のバッファに対して最大の要求を有する規格を収容するのに十分な大きさである必要がある(大きなDSPメモリの要求を有する規格と異なるものであるかもしれない)。この結果、有意なメモリ量が処理要素の一部によって一般には未使用となる。
しかしながら、共通のメモリスペースがオンチップメモリ102により提供される場合、異なる規格のメモリ要求は全体として考慮することができる(システムの個々の要素に対する要求でなく)。すなわち、オンチップメモリ102は、各規格の最大となるトータルのメモリ要求を収容するのに十分な大きさである必要がある。これは、各規格の間の異なるメモリ要求を平均化するという効果を有する(例えば、ある規格はより大きなDSPメモリを要求するが、より小さなバッファしか要求せず、他の規格はその反対である可能性がある)。これは、有意により小さな全体のメモリ量しか要求しないという効果を有し、シリコン面積を節約する。
オンチップメモリ102により提供される共通のメモリスペースは、デジタル信号プロセッサのワークスペース、全体制御プロセッサの実行コード及びデータ、1以上のハードウェア周辺装置の入力及び出力バッファ、プロセッサ間でデータをやりとりするための1以上のバッファなど、システムにより利用される異なるタイプのデータのすべてと共に、デジタル信号処理システムの他の設定データを保持可能である。
次に、転送エンジン106の概略図を示す図2が参照される。転送エンジン106は、オンチップメモリ102に接続するよう構成される第1メモリポート202と、DRAM112に接続するよう構成される第2メモリポート204とを有する。転送エンジン106はまた、各周辺ポート206が関連するハードウェア周辺装置108に接続するよう構成される複数の周辺ポート206を有する。メモリポート202,204と周辺ポート206とはすべて、これらのポートの何れかがこれらのポートの他の何れかに接続されることを可能にするクロスバー208に接続される。
転送エンジン106はさらに、メモリポート202,204の双方に接続され、メモリポート202,204に接続されるメモリの一方又は双方についてリード及び/又はライトアドレスのシーケンスを生成するよう構成されるアドレス生成要素210を有する。いくつかの具体例では、アドレス生成要素210は、いくつかの異なるモード(リニア及び非リニアモードなど)により動作するようプログラムされ、可能なモードセットから1以上の動作モードを選択するよう構成される設定可能なアドレス生成装置を有してもよい。他の具体例では、アドレス生成要素210は、特定のアドレスシーケンスを生成するよう構成される1以上の専用のハードウェアブロックを有してもよい(例えば、特定のデータアイテム構成のためのロー・カラムモードを利用したシーケンス、特定のデータアイテム構成のためのバーストロー・カラムモードを利用したシーケンスなど)。いくつかの具体例では、アドレス生成要素210は、リニアシーケンスと非リニアシーケンスとの双方を生成してもよく、他の具体例では、直接的な接続がリニアシーケンスに利用され、アドレス生成要素は、非リニアシーケンスのみを生成するのに利用されてもよい。
リード及び/又はライトアドレスの非リニアシーケンスを生成することによって、アドレス生成要素210は、転送エンジン106のポートの1つに接続されたメモリ(オンチップメモリ102又はDRAM112など)に格納されるデータアイテムの非リニアリオーダリングを実行できる。例えば、図2は、オンチップメモリ102に格納されているデータアイテムの第1シーケンス212がDRAM112への転送中にどのようにしてリオーダリングできるかを示す。図2の具体例では、0〜7により示されるメモリアドレスに格納されるオンチップメモリ102上に8つのデータアイテムがある。他の具体例では、メモリアドレスは、ゼロ以外のベースアドレスからスタートすることができ、及び/又は各データアイテムは、メモリ装置上の単一のメモリ位置より大きなものとすることができる。本例では、これらのデータアイテムは、DRAM112に転送されるが、第1シーケンス212と異なる第2シーケンス214にオーダリングされる。簡単化のため、他の具体例では、当該アドレスはゼロ以外のベースアドレスからスタートできるが、第2シーケンス214のデータアイテムは、DRAM112上の0’〜7’により示されるメモリアドレスに格納される。
第1の具体例では、アドレス生成要素210は、[3,6,4,1,2,7,0,5]の非リニアリードシーケンスを生成し、当該リードシーケンスを第1メモリポート202に提供することができる。アドレス生成要素210はまた、[0’,1’,2’,3’,4’,5’,6’,7’]のリニアライトシーケンスを生成し、これを第2メモリポート204に提供することができる(DRAM112上の当該アドレスは、単なる説明だけのため、オンチップメモリ102上のアドレスと区別するため、0’,1’などと示される)。これは、第1メモリポート202にリードシーケンスの第1アドレス(アドレス3)からデータアイテムをまずリードさせ、それは本例ではデータアイテム“A”である。当該データアイテムは、クロスバー208を介し第2メモリポート204にわたされ、当該データアイテムをライトシーケンスの第1メモリアドレス(アドレス0’)に書き込む。これは、データアイテム“A”を第1シーケンス212の第4データアイテムから第2シーケンス214の第1データアイテムにリオーダリングさせる。当該処理は、リードシーケンスの次のアドレス(アドレス6、アドレス4など)を読み、ライトシーケンスの次のアドレス(アドレス1’、アドレス2’,...)に対応するデータアイテム(B,C,...)に書き込むことによって繰り返される。この結果、第1シーケンスからのデータアイテム(G,D,E,A,C,H,B,F)は、DRAM上で第2シーケンス(A,B,C,D,E,F,G,H)に格納される。
第2の具体例では、データアイテムの同一のリオーダリングがまた、アドレス生成要素210が[0,1,2,3,4,5,6,7]のリニアリードシーケンスと、[6’,3’,4’,0’,2’,7’,1’,5’]の非リニアライトシーケンスとを生成することによって実現可能である。本例では、データアイテム“G”がまず、オンチップメモリのアドレス0から読まれ、DRAM上のアドレス6’に書き込まれ、次にデータアイテム“D”が、オンチップメモリのアドレス1から読まれ、DRAM上のアドレス3’に書き込まれるなどされる。同様に、第3の具体例では、データアイテムの同一のリオーダリングがまた、アドレス生成要素210が非リニアリードシーケンスと非リニアライトシーケンスとを生成することによって実現できる。これの一例は、[0,2,4,6,1,3,5,7]のリードシーケンスと、[6’,4’,2’,1’,3’,0’,7’,5’]のライトシーケンスとになるであろう。
上記の各具体例では、第1シーケンスから第2シーケンスへのリオーダリングは、転送エンジン106によってオンチップメモリ102からDRAM112へのデータアイテムの直接的な転送中に同時に実行される。同様の処理がまた、DRAM112からオンチップメモリ102への転送のため、又はオンチップメモリからオンチップメモリの他の位置への転送のため、及びDRAMからDRAMの他のアドレスへの転送のため実行される。
上記の具体例はまた、リード及びライトアドレスシーケンスが転送の実行前に完全に生成されることを示した。しかしながら、当該アドレスシーケンスの生成はまた、例えば、1以上の以前のデータアイテムが読み書きされているとき、1以上のリード及びライトアドレスを生成することによって、転送と同時に実行可能である。
上述された処理は、オンチップメモリ102のデータアイテムが、DRAM112へのメモリ転送処理の必須の部分として異なるシーケンスにリオーダリングされることを可能にし、同様に、DRAM112上のデータアイテムは、オンチップメモリ102へのメモリ転送処理の一部として異なるシーケンスにリオーダリングできる。これは、例えば、インタリーブ処理スキームに従ってリード/ライトアドレスシーケンスを生成するよう構成されるアドレス生成要素210を利用するなどによって、インタリーブ処理又はデインタリーブ処理を実現するのに利用可能である。
図3は、デインタリーブ処理の各種の方法例を示す概略図を示す。第1の概略図300では、デインタリーブ処理が、オンチップメモリ102からオンチップメモリ102への単一の転送において実行される。以降の2つの概略図302,304では、オンチップメモリ102からDRAM112への1つの転送と、DRAMからオンチップメモリ102への第2の転送との2つの転送がある。第2概略図302では、オンチップメモリ102に格納されるデータアイテムのデインタリーブ処理は、リニアライトシーケンスに従ってデータアイテムをDRAM112に書き込み、“ロー・カラムモード”又は“ロー・カラムインタリーブ”として参照されてもよい特定の非リニアシーケンスを利用して、それらをDRAM112から読むことによって、実行されてもよい。この非リニアシーケンスは、図4を参照して以下で詳細に説明される。あるいは、データアイテムのデインタリーブ処理は、図3の第3の概略図304に示されるように、ロー・カラムモードを利用してデータアイテムをDRAM112に書き込み、それらをリニアに読むことによって実行されてもよい。
図3に示されるすべての実現形態では、デインタリーブ処理は、すべてのインタリーブ処理されたデータが入力メモリ(すなわち、図3の各図の左側に示されるオンチップメモリ102)に格納されるまでスタートすることはできない。
ロー・カラムモードは、複数のロー及びカラムを有する1以上のグリッド又はテーブルに配置されるデータアイテムを検討する。これは、0〜23の連続的なメモリアドレスを有する(説明のためのみ)入力データアイテムの第1ブロック402と、24〜47の連続的なメモリアドレスを有する(再び説明のためのみ)入力データアイテムの第2ブロック404とを示す図4に示される。図3の第2の具体例302を参照してロー・カラムモードを説明する場合、これらのメモリアドレスはDRAM112にある。図4に示される具体例では、データアイテムは、図4の破線により示されるように、6データアイテム毎にカラムブレークを有すると考えられる。これは、連続的なメモリアドレスが6つのローを有するグリッドのカラムに沿って配置されるとみなされることを意味する(これは、データがカラムの下方に読み書きされると説明されてもよい)。
グリッド形式に提供されるデータアイテムは、入力データアイテム402の第1ブロックの第1グリッド406と、入力データアイテム404の第2ブロックの第2グリッド408とを示す図4において示される。第1グリッドと第2グリッドとは共に、6つのローと4つのカラムとを有する。連続的にアドレス指定されるデータアイテムはカラムの下方に配置されることに留意できる。しかしながら、他の具体例では、データアイテムはまた、連続的なアイテムがローに沿って配置されるように提供可能であり、この場合、以下の説明は依然として適用されるが、ローとカラムとの参照が逆にされる。
ロー・カラムモードの目的は、入力データアイテム(DRAM112などから)がグリッドのカラムをトラバースするシーケンスに配置されるとき、出力データアイテム(オンチップメモリ102への出力などとして)が、グリッドのローをトラバースするシーケンスに配置されるように、各グリッドを転置することである。例えば、グリッド406を参照すると、入力データシーケンスの最初の4つのデータアイテムがA,B,C,Dである場合(第1カラムを下方に4つのアイテムを読む)、出力データシーケンスの最初の4つのデータアイテムは、A,G,M,S(第1ローに沿って4つのアイテムを読む)である。このようなロー・カラム処理は、いくつのローがグリッドに提供されるものとしてどのように定義されるかに依存して、データアイテムの順序を変更する。
ロー・カラムモードを実現するため、アドレス生成要素210は、ロー・カラム転置をもたらすリード及びライトシーケンスを生成する。これは、非リニアリードシーケンス(DRAM112などから)とリニアライトシーケンス(図4に示され、以下で詳細に説明される)とを生成することによって、又はリニアリードシーケンス(オンチップメモリ102などから)と非リニアライトシーケンス(図3の第3の具体例304に示されるように)とを生成することによって、実現可能である。さらなる具体例では、非リニアリードシーケンスと非リニアライトシーケンスとがまた、図6を参照して後述されるように、効率的なメモリアクセスを可能にするため利用可能である。
図4は、不連続なメモリアドレスを有すると理解できる非リニアリードシーケンス410の具体例を示す。一例では、アドレスシーケンスは、以下の擬似コードにより示されるアルゴリズムを利用して生成可能である。
Figure 2014050103
ここで、“rows”(N1)はグリッドのロー数であり(図4の例では6)、“columns”はグリッドのカラム数であり(図4の例では4)、“numBlocks”はデータアイテムのブロック数であり(図4の例では2)、“numItems”はすべてのブロックにおけるデータアイテムの合計数である(図4の例では48)。変数“a”,“b”及び“o”は、すべてが0以上に初期化されるか、又はオフセットを適用するため非ゼロ値に初期化されるアルゴリズム内で利用される内部変数である。
N0(ローの個数とカラムの個数との積)、N1(グリッドのローの個数)、及びN2(ローの個数、カラムの個数及びデータアイテムのブロック数の積の初期値を計算した後、アルゴリズムは、存在するデータアイテムの個数について繰り返しを行い、各繰り返しにおいてシーケンスの次のアドレス(“nextItemAddr”)を計算する。効果的には、アルゴリズムは、ローのエンドに到達するまで(最初の“if”ステートメントにより判定される)、入力シーケンスから固定数のデータアイテムをスキップし(図4では6など)、その後、当該ローのスタートポイントを1だけインクリメントし、繰り返す。ブロックのエンドは、第2の“if”ステートメントにより検出され、計算をリセットするが、剰余演算rem(.)から計算されるオフセットを加える(図4では24)。その後、当該処理は、“numItems”に到達するまで繰り返される。“numItems”は存在するデータアイテムの合計数より大きな値に設定可能であり、そうである場合、アルゴリズムは、すべてのブロックがアクセスされると第1ブロックに戻ることに留意されたい。
上記アルゴリズムにより生成されるリードシーケンス410は、先頭のローが第1ブロックのシーケンスを示し(グリッド406)、最後のローが第2ブロックのシーケンスを示す(グリッド408)図4に示される。リードシーケンス410の最初の4つのアイテムを一例として取り上げると、これらは、入力データアイテム402からデータアイテムA,G,M,Sに対応するアドレス0,6,12,18から読む。これは、グリッド406の第1ローに対応すると理解できる。
アドレス生成要素210は、リードシーケンス410及びライトシーケンス412が転送エンジン106により利用されるとき、データアイテムが非リニアシーケンスにおいて読まれ、リニアシーケンスにおいて書き込まれるように、連続するメモリアドレスを有するリニアライトシーケンス412を生成する。図4のライトシーケンスは簡単化のため0〜47のアドレスを有するが、他の具体例では、アドレスは何れかのベースアドレスからスタート可能であることに留意されたい。リードシーケンス410とライトシーケンス412との組み合わせの結果は、出力データアイテム414の第1ブロックと出力データアイテム416の第2ブロックとに見つけることができる。これらの出力データアイテムをグリッド406,408と比較することによって、ロー・カラム処理の実行が成功したことが確認できる。
同じ結果がまた、以下のようにリニアリードシーケンスと非リニアライトシーケンス(図3の第2の具体例304などと同様に)とを生成することによって取得可能である(簡単化のため、第1ブロックのみが示される)。
Figure 2014050103
非リニアライトシーケンスは、詳細に上述された非リニアリードシーケンスに対して同様の技術を利用して生成可能である。上記の具体例は、アドレス生成要素210が、データアイテムのセットに対するロー・カラム交換など、インタリーブ処理/デインタリーブ処理を実現するのにどのように利用可能であるか示す。
図5は、DRAM112とやりとりすることによりより効率的であるデインタリーブ処理のさらなる2つの方法例を示す概略図502,506を示す。これらの方法の双方が、時間でインタリーブ処理を2つのメモリ間転送処理(オンチップメモリからDRAMと、その後のDRAMからオンチップメモリ)に分割し、各処理は、少なくとも1つの非リニアアドレスシーケンスを利用する。これらの方法の双方はまた、ロー・カラム(R−C)モード(図4の矢印521,561を参照して上述されたような)とバーストロー・カラム(B R−C)モード(矢印523,524,562〜564)との組み合わせを利用する。
図5は、データアイテムがオンチップメモリ102からDRAM112に転送され、その後にオンチップメモリ102に戻されることを示すが、データアイテムは、オンチップメモリから別のオンチップメモリに書き戻されてもよいことが理解されるであろう。データアイテムはオンチップメモリ102から最初に読まれるか、又はオンチップメモリ102の異なる部分に書き戻されてもよい。一例では、データアイテムは、タイリングバッファと呼ばれるオンチップメモリ102の一部から読み込まれ(矢印521,561により示される処理において)、その後に、デインタリーバ出力バッファと呼ばれるオンチップメモリ102の別の部分に(デインタリーブ処理形態により)書き戻されてもよい(矢印524,564により示される処理において)。これら2つのバッファは、異なるサイズを有してもよい。以下の説明では、同一のオンチップメモリ102との間で転送されるデータアイテムの参照は単なる例示であり、説明された方法はまた、あるオンチップメモリ要素から他のオンチップメモリ要素(DRAMを介し)に、又はオンチップメモリ102の一部からオンチップメモリ102の他の部分(DRAMを介し)にデータアイテムを転送するのに利用されてもよい。
バーストロー・カラムモードは、上述されたロー・カラムモードの変形とみなされてもよいし、あるいは、ロー・カラムモードは、1のバースト長を有するバーストロー・カラムの特定のインスタンスとみなされてもよい。バーストロー・カラムモードは、ロー及びカラムを有するグリッド(上述されたような)にデータが配置されることを考える。しかしながら、ローに沿ってトラバースしながら各カラムから1つのデータアイテムを単に読むのでなく(ロー・カラムケースと同様に)、バーストロー・カラムモードは、ローに沿って次のカラムにスキップする前に(すなわち、(r−L)個のデータアイテムをスキップすることによって(ただし、r=グリッドにおけるローの個数)、所定数の連続するアドレスを読む(当該所定数は、“バースト長”Lと呼ばれる)。例えば、図4のグリッド406を参照して、バースト長が3である場合、バーストロー・カラムモードはまず、1つのバーストにおいて3つの連続するアイテム(アイテムA,B,C)を読み、その後に次のカラムに移動し、次の3つの連続するアイテム(G,H,I)を読み、次に、M,N,Oと、その後のS,T,Uを読む。その後、第1カラムにラップバックし、D,E,Fを読み、口のJ,K,Lを読むなどである。従って、バーストロー・カラムモードは、1つのみでなく連続するデータアイテムのグループが読まれる点を除き、ロー・カラムモードと同じであるとみなすことが可能であり、あるいは、ロー・カラムモードは1に等しいバースト長を有するバーストロー・カラムモードであるとみなされてもよい。
バーストロー・カラムモードのリードシーケンスは、一例では、以下の擬似コードにより示されるアルゴリズムを用いて生成可能である。
Figure 2014050103
この擬似コードの変数は、ロー・カラムモードの説明において上述されたように定義される。さらに、“burstLength”(N3)は、各バーストにおいて読む連続するアイテムの個数であり、N4はローの個数(N1)とカラムの個数との積からN3を差し引いたものである。バーストロー・カラム演算のライトシーケンスがまた、同様にして生成可能であることに留意されたい。
バーストロー・カラムモードは、特にB R−Cモードにおけるバースト長(L)がDRAMインタフェースバーストサイズと同一又は近い場合、DRAM112などの特定タイプのメモリ装置によってデインタリーブ処理が効率的に実行されることを可能にするのに利用可能である。このようにして(又は後述される他の具体例に従って)、DRAMインタフェースバーストサイズに基づきバースト長(又はバーストサイズ)を選択することによって、これは、DRAMインタフェースを効率的に利用する。他方、多くの従来技術によるデインタリーバのアクセスパターンは、広範に離間したデータアイテムを連続的にリード/ライトすることを試み、不完全な(DRAMインタフェース)バーストと多数のDRAMページのクロス化との双方によって、DRAM装置により非効率的なメモリアクセスをもたらす。
例えば、図4のロー・カラム演算は、グリッドにおけるロー数だけ離間した連続するデータアイテムを読む。多数のローが存在する具体例では、これは、メモリ装置において広範に離間したアクセスを生じさせる可能性があり、異なるDRAMページからの非効率的なアクセスを生じさせる。図3に示される具体例に戻って、第2の具体例302では、ロー・カラムモードにおけるDRAMから読み込みは非効率的であり、第3の具体例304では、ロー・カラムモードにおけるDRAMへの書き込みもまた非効率的である。
図6は、異なるページへの頻繁なアクセス又は部分的なバーストの充填に関連するDRAMアクセスの非効率性を受けないデインタリーブ処理の具体例を示す。本例は、図5の第1概略図502に示される。図6の具体例は、図4のものと同じロー・カラムの結果を生じさせるが(すなわち、6つのロー、4つのカラム及び2つのブロックによりスワップ)、DRAMと同様にページングされた装置の効率的な処理をもたらすリニアシーケンシャルなメモリアクセスの多数のランを用いてこれを実行する。図6の具体例では、転送エンジンは、オンチップメモリ102から入力データアイテムのシーケンスを読み、当該データアイテムをDRAM112に格納し、その後、DRAM112からデータアイテムを読み、スワップ又は交換されたロー及びカラムによりこれらをオンチップメモリ102に書き込む(それらの元の位置を上書きする可能性がある)。
説明のため、入力データアイテム602は図4の具体例において利用されたものと同じである。ゼロからスタートしてメモリアドレスの連続するシーケンスを有する合計で48個のデータアイテムがある。まず、これらのデータアイテムは、ブロック又はタイル毎に6つのローと2つのカラムとによるロー・カラムモードにおいてオンチップメモリ102から読まれる。図6に示されるように、これらのデータアイテムは、各タイルが6つのロー及び2つのカラムを有するタイル604に配置されるとみなされてもよい。このタイルのサイズは、ここでは単なる一例として利用され、多数の実現形態では、タイルサイズは、DRAMインタフェースのバーストサイズに等しく設定されてもよい。これら各タイルのローに沿って順番に読む非リニアリードシーケンス606は(すなわち、ロー・カラムモードを利用して)、上述されたようなアドレス生成要素210により生成される。リニアライトシーケンス608はまた、アドレス生成要素210により生成される。転送エンジン106は、非リニアリードシーケンス606を用いてオンチップメモリ102から読み(図5の矢印521)、リニアライトシーケンス608を用いてDRAM112に書き込む(矢印522)。このようなDRAMへの書き込みは、連続するアドレスにリニアに書き込むため、非効率でなく、データアイテムの個数が十分である場合、DRAMページの境界をときにはクロスするであろう。
この処理の結果として、DRAM112上のデータアイテム610は、タイル604からのロー・カラムスワップに対応すると理解できる。その後、非リニアリードシーケンス612が、DRAM112からこれらのデータアイテムを読むアドレス生成要素210により生成される。このリードシーケンスは、バーストロー・カラムモードを用いて生成され、非効率的なアクセスを回避するよう構成される。本例におけるバーストロー・カラムモードは、バースト毎に6つのアイテム、12個のロー及び2つのカラムを利用する。DRAMリードシーケンス612がデータアイテムのバーストを読むため、これらは、DRAM上の連続するアドレスに配置され、ページ境界をクロスする可能性はなく、DRAMインタフェース上で利用可能なバーストを効率的に利用する(特に、アドレス生成要素のバースト長LがDRAMインタフェースバーストサイズに近い場合)。従って、(非バースト)ロー・カラムアクセスに対して有意に少ないページ境界がクロスされることになる。
非リニアライトシーケンス614はまた、オンチップメモリ102にデータアイテムを書き戻すため生成される。このライトシーケンス614はまた、バーストロー・カラムモードを用いて生成され、本例では、バースト毎に2つのアイテム、4つのロー及び3つのカラムを利用する。リードシーケンス612(図5の矢印523)ライトシーケンス614(矢印524)の組み合わせは、ページ境界及び不完全なバーストによる非効率性を生じさせることなく、データがDRAM112に格納されたことを除き、オンチップメモリ102に書き戻される出力データアイテム616が、6つのロー、4つのカラム及び2つのブロックによる基本的なロー・カラム演算が実行されるかのように(これは、図4と比較できる)同一のシーケンスにあるようなものである。さらに、オンチップメモリ102からの最初のリード(図5の矢印521)は2つのみのカラムのタイルによるロー・カラム演算を利用したため、これは、1つの完全なタイルがオンチップメモリ102に到達するとすぐに、DRAMへのデータの転送が始まることを可能にし、図4と同様に4つのカラムブロックが利用される場合より速い。これは、データが経時的にストリームにより到達するリアルタイムデータのケースにおいてパフォーマンスを向上させることが可能である。
図7〜10は、異なるページへのアクセスに関するDRAMアクセスの非効率性をおけない他のデインタリーブ処理の具体例を示す。本方法はまた、図5の第2の概略図に示される。図5から理解できるように、本方法は、バースト内でDRAM112とのリニアなインタラクションのみを伴い、すなわち、DRAMへの書き込み(矢印562)とDRAMからの読み込み(矢印563)との双方に対するバーストロー・カラムモードを利用する。上述されるように、これは、大変少数のページ境界がクロスすることになり、DRAMインタフェースバーストが効率的に利用され、これは、方法の全体的なパフォーマンスを向上させる。
説明のため、本方法は、複数のロー及びカラムを有する1以上のグリッド又はテーブルにデータアイテムが配置されるとみなし(上記の具体例と同様に)、さらにロー・カラム構成のデータセットから構成されるタイルのコンセプトを利用する。後述されるようにタイルは、DRAMインタフェースバースト又はページサイズに従ってサイジングされてもよい。メモリのデータは連続するメモリ位置に格納されることが理解されるであろう。
図7は、各タイルが20個のアイテムを有する10個のタイル702(T〜T)に配置される200個のデータアイテム(アドレス0〜199がラベル付けされる)を有する一例となる時間インタリーブされたデータブロック700を示す。DRAM112がベースとモードによりアクセスされるDRAMである場合、タイルサイズは、DRAMインタフェースのバーストサイズに一致するよう選択されてもよく、メモリ伝送(後述されるように)がDRAMインタフェースを効率的に利用するため、これはさらに本方法の効率性を向上させる。タイルサイズがDRAMインタフェースのバーストサイズに一致しない場合、タイルサイズはDRAMインタフェースバーストサイズより小さいか、又はタイル毎に複数のバーストがあってもよい。多くの具体例において、タイルサイズがDRAMインタフェースバーストサイズに正確に一致しない場合、タイルはDRAMにおいてページ境界に配列され、これはDRAMインタフェースの効率性を有意に向上させる可能性がある。以下でより詳細に説明されるように、タイルサイズの選択は、オンチップRAMのタイリングバッファのサイズに対する制約を設ける(すなわち、データが読まれるオンチップメモリ102)。これは、本方法が、少なくとも1つのタイル全体がタイリングバッファに格納されるまでスタートできないためである。
図7の一例となる時間インタリーブされたブロック700は200個のデータアイテムを有するが、これらのブロックは、これより有意に大きなものであってもよく、数千個のデータアイテムを有してもよいことが理解されるであろう。さらに、時間インタリーブされたブロック内のロー及びカラムの構成は、本方法が利用されるシステムにより設定されてもよい。
本例におけるデインタリーブ処理は、図8に示されるフロー図を参照して説明できるように、各伝送(又は“タイリングジョブ”)がいくつかのタイルを伝送するメモリ間伝送の複数の段階に分割される。図8に示される方法は、各タイリングジョブにおいてN個のタイルを伝送し、Nの値はタイルのカラムに等しくなるよう選択されてもよい(例えば、図7に示される具体例では、N=2)。しかしながら、他の具体例では、タイリングジョブは、要求されるタイリングジョブの個数を減少させるため、タイルのいくつかのカラムを有してもよい(例えば、複数のカラムなど)。説明のため、図8に示される方法は、N=2による図7に示される時間インタリーブされたデータブロック700を参照して説明される。タイリングジョブがタイルの複数のカラムを有する具体例では、本方法は、後述されるように実行され、アドレス生成要素の設定のみが変更される(すなわち、これは、アドレス生成要素により多くのデータを処理するよう通知する)。
本方法は、タイルT,Tがオンチップメモリ102に格納されるなど、時間インタリーブされたブロックからの最低限のN個のタイル(すなわち、少なくともN個のタイル)がオンチップメモリ102に格納されると(ブロック802)、スタート可能である。上述されるように、これらのインタリーブされたタイルT,Tが格納されるオンチップメモリ102の部分は、タイリングバッファと呼ばれてもよく、メモリ間伝送の第1段階81がN個のタイルに対して実行されるとき、当該タイリングバッファは、N個のデータタイルを格納可能にサイジングされてもよい。一例では、タイリングバッファは、システムスループット、利用可能なメモリ帯域幅及びDRAMインタフェースに応じて、1以上のタイリングジョブを可能にするようにしてサイジング可能な弾性バッファであってもよい。
第1タイルTは、オンチップメモリ102からロー・カラムモードを利用して読まれる(図5のブロック804及び矢印561)。利用される当該第1タイルの非リニアリードシーケンスは、
Figure 2014050103
となる。ここで、上記の番号は、図7に示されるように、オンチップメモリのデータアイテムのアドレスに対応する。ロー・カラムモードの以前の説明(及び特に提供された擬似コードの具体例)を参照して、データアイテム(すなわち、1つのデータアイテム)が読まれ、その後、次の9個のデータアイテムが、他のデータアイテムが読まれる前にスキップされる。合計で4つのデータアイテムが読まれるまで(タイルのカラム数)、これが繰り返され、当該処理全体が1つのデータアイテムのオフセットにより繰り返され(すなわち、アドレス1が読まれ、次は11が読まれる)、タイル全体が読まれるまで続けられる。
その後、当該データアイテムのシーケンスは、バーストロー・カラムモードを利用して、タイルのデータ要素の個数に等しいバースト長L(L=20など)によってDRAM112に書き込まれる(ブロック806及び矢印562)。
Figure 2014050103
ただし、第1ローは、第2ローに示されるデータアイテムが読み込まれたオンチップメモリ102の元のアドレスと区別するため、0’〜19’によりラベル付けされるDRAMのデータアイテムのアドレスに対応する。
これら2つの処理(ブロック804のリード処理及びブロック806のライト処理)は、その後、N個すべてのタイルがDRAMに書き込まれるまで(ブロック808の“Yes”)繰り返される。当該段階において、N個のタイルをDRAMに書き込むと、格納されているすべてのデータアイテムがオンチップメモリ102から読まれたことにない、この場合、オンチップメモリは、時間インタリーブされたブロックからのデータアイテムのさらなるN個のタイルにより再充填されてもよい(ブロック810)。あるいは、オンチップメモリにさらなる格納されているタイルがすでにある場合(例えば、少なくともN個のさらなるタイルなど)、本方法は、オンチップメモリの再充填を必要とすることなく(すなわち、ブロック810が省略される)、さらなるタイルを読み(ブロック804において)、それらをDRAMに書き込み続けてもよい。
当該第1段階81は、時間インタリーブされたブロック700の全体がオンチップメモリ102から読み込まれ、適切な場合には、オンチップメモリ102が再充填されることにより(ブロック810において)、DRAMに書き込まれる(ブロック812において“Yes”)まで、繰り返される。本例では、各伝送が2つのタイルを伝送する5つの伝送がある(N=2であり、ブロック700が10個のタイルを有するため)。
図9は、図7に示されるように、時間インタリーブされた入力ブロック700の第1段階81のエンドにおいてDRAMに格納されているデータアイテムのグリッド表現902(ブロック700の元のアドレス位置により参照される)を示す。グリッド902に平行して、DRAM122の各データアイテムのアドレスを特定する第2グリッド904がある(オンチップメモリ102の元のアドレス0〜199と区別するため、0’〜199’によりラベル付けされる)。このグリッド表現では、元のタイルは、デインタリーブされていないが、リオーダリングされ(ブロック700と比較して)、タイルからのリオーダリングされたデータアイテムは、連続するメモリアドレスを占有する(例えば、Tはアドレス0’〜19’に格納されるなど)。図9から理解できるように、グリッドは、データアイテムの各カラム(連続するデータアイテムがカラムに配置される場合)が2つのタイルを有するように、40個のロー及び5個のカラムを有する。あるカラムのタイル間の境界は、破線906によりマーク付けされる。
本方法の第2段階82では、データアイテムは、オンチップメモリ102に転送され(又は上述されるように他のオンチップメモリ要素)、さらなるリオーダリング処理が、データのデインタリーブを完了させるのに利用される。第1タイルTは、バーストロー・カラムモードを利用して、タイルのデータ要素の個数に再び等しいバースト長L(本例では、L=20)によりDRAM112から読み込まれ(図5のブロック814及び矢印563)、すなわち、リードシーケンスは、
Figure 2014050103
となり、ここで、第1ローはDRAM112のデータアイテムのアドレスに対応し、第2ローはデータアイテムが読まれたオンチップメモリ102における元のアドレスを示す。
その後、タイルTは、バーストロー・カラムモードを利用して、オンチップメモリ102に書き込まれる(ブロック816及び矢印564)。バーストロー・カラムモードは、例えば、図7に示される例では4である、元の時間インタリーブされたブロック700のタイルのカラム数に等しいバースト長700を利用する。従って、データは、オンチップメモリの連続する4つのアドレスに書き込まれ、次の16個のアドレスはスキップされ(元の時間インタリーブされたブロックのカラム数=転置されたブロックのカラム数=20,20−4=16)、その後、データが次の4つの連続するアドレスに書き込まれるなどである。非リニアライトシーケンスは、
Figure 2014050103
となり、ここで、第1ローは、第1段階81においてデータアイテムが読まれたオンチップメモリ102の元のアドレスと区別するため、0”,1”とラベル付けされたライトが指示されるオンチップメモリのアドレスに対応し、これらの元のアドレスが第2ローに示される。
DRAMに対してライト及びリードを実行する最初の2つのバーストロー・カラム処理(矢印562,563)に利用されるバースト長は、同一のバースト長(L=20など)を利用し、オンチップメモリに対してライトを実行する第3バーストロー・カラム処理(矢印564)は異なるバースト長(L=4など)を利用することに留意すべきである。
当該第2段階82は、その後、すべてのタイルがオンチップメモリ102に書き込まれるまで(ブロック818において“Yes”)、タイル単位で(及び第1段階81と同じタイルサイズを利用して)繰り返される。
図10は、図7に示されるような時間インタリーブされた入力ブロック700の第2段階82のエンドにおいてオンチップメモリに格納されるデータアイテム(ブロック700において元のアドレス位置により参照される)のグリッド表現1002を示す。グリッド1002に平行して、オンチップメモリの元のアドレス0〜199及びDRAM112のアドレス0’〜199’と区別するため0”〜199”とラベル付けされた)オンチップメモリ102の各データアイテムのアドレスを特定する第2グリッド1004がある。このグリッド表現では、元のデータアイテムは、破線により示されるように、第1タイルTが4つのローと5つのカラムとを有するように(ブロック700と同様に5つのローと4つのカラムとの代わりに)、図10から理解できるようにデインタリーブされる。図10から理解できるように、1つのデインタリーブされたブロックのグリッドは、20個のロー及び10個のカラムを有する。
図7,9,10は0のベースアドレスからスタートするアドレスを示すが、他の例では、これらのアドレスは何れかのベースアドレスからスタートしてもよいことが理解されるであろう。
上記説明及び図8から、本方法のリード/ライトジョブは、時間インタリーブされたブロック全体でなく、いくつかのタイル(1以上のタイルなど)に対して実行されてもよいことが理解できる。これは、本方法が特定のDRAMインタフェースバーストサイズに対して最適化されることを可能にし、例えば、タイルは1つのDRAMインタフェースバーストと同じサイズに設定可能であり、このとき、タイリングジョブはDRAMインタフェースバーストの整数となるであろう(例えば、図7、9及び10を参照して上述された具体例では2などである)。DRAMインタフェースにより定義されるDRAMインタフェースバーストサイズは、DRAM内においてページ又はサブページレベルに設定されてもよく、バス帯域幅に依存し、バーストのスタートがページのスタートと揃えられ、可能な場合にはページ内で完全に終了するように設定されてもよい(メモリページングによる非効率性を防ぐため)。上述されるように、タイルサイズはDRAMインタフェースバーストサイズに正確には一致せず、あるいはDRAMインタフェースバーストサイズの倍数である場合、未使用のDRAMキャパシティを犠牲にしてDRAM効率性を向上させるため、タイルがページ境界に揃えられてもよい。
上記説明及び図8は、本方法が直接に実行されることを示すが(すなわち、第1段階81が終了した後に第2段階82が実行される)、本方法の態様は、1つの時間インタリーブされたブロックからのタイルがSRAMから読み込まれ、DRAMに書き込まれ(第1段階81において)、同時にもう1つの時間インタリーブされたブロックからのタイルがDRAMから見込まれ、SRAMに書き込まれる(第2段階82において)ように、パラレルに実行されてもよい。これは、あるアドレスが他の時間インタリーブされたブロックからのデータアイテムにより上書きされる(ブロック806において)前に読み込まれる(ブロック814において)ようなタイミングである限り、DRAMへの書き込み処理(ブロック806)が第2段階82において読み込まれるのと同じアドレスセットを利用してもよい(ブロック814)。
図8及び上述された方法は、データアイテムのグリッドの転置処理(デインタリーブを実行するため)を2つの別々の部分に分割する。この転置の第1部分は、SRAMからのリード(図5のブロック804及び矢印561)と、DRAMへのライト(ブロック806及び矢印562)との実行時に実行され、転置の第2部分は、DRAMからのリード(ブロック814及び矢印563)と、SRAMへのライト(ブロック816及び矢印564)との実行時に実行される。これらすべての転置は、アドレスの非リニアシーケンスを利用するが、異なる非リニアシーケンスが利用される。第1部分では、ロー・カラムモードがSRAMからのリードについて利用され(バースト長=1)、第2部分では、バーストロー・カラムモードが、SRAMへのライトに利用される(バースト長=タイルのカラム数)。DRAMとのインタラクション(ブロック806のライト及びブロック814のリード)は、タイルのデータ要素数に等しいバースト長によりバーストロー・カラムモードを利用する(例えば、図7〜10に示される具体例では、L=20)。
図5(具体例506)及び図7〜10を参照して上述された方法は、タイルサイズがDRAMインタフェースバーストサイズに従って選択される場合、データのタイルの転送に関するマルチ段階処理の利用のため(時間インタリーブされたブロック全体の代わりに)、利用可能な帯域幅(及び特にバーストアクセスされたDRAM)を効率的に利用する。タイルの配置は、特定の実現形態に固有のものであり、上述された方法は、タイル毎のデータアイテムの何れかの個数とタイルの何れかの配置に適用されてもよい。
例えば、本方法がDVB−T2に利用される場合、カラムのタイル数(N)は、図7〜10に示される具体例が2つのFECブロックが存在するシナリオに対応するように、FEC(Forward Error Correction)ブロックの個数に等しくなるよう設定されてもよい。他の具体例では、3つのFECブロックがあってもよく、N=3であり、3つのタイルがタイリングジョブにおいてSRAMからDRAMに転送され、DRAMの連続したアドレスに書き込まれる。
上述された方法のデインタリーブ処理は、複数の段階に分割される。上述した方法を利用して、デインタリーブ処理がスタート可能になるまで、タイリングバッファにインタリーブされたデータブロック全体を格納する必要はない。図8を参照して説明されたように、本方法のスタート前、タイリングバッファにはN個のタイルが格納されさえすればよい。
図5(具体例506)及び図7〜10を参照して上述された方法は、図2に示されるようなアドレス生成要素210を利用して実現されてもよい。このアドレス生成要素210は、設定可能であってもよいし、又は本方法の特定の実現形態において利用される要求される(所定の)非リニアアドレスシーケンスを生成するよう構成される具体的なハードウェアロジックを有してもよい。
上述された方法は、何れかインタリーブされたデータブロックをデインタリーブするのに利用されてもよい。適用例は、OFDM信号と、特にDVB−T2などのデジタル地上波テレビ(DTT)信号とを含むが、本方法はOFDM、DTT又はDVB−T2に限定されるものでない。上述された方法はまた、インタリーブされたデータブロックを構成するため、データをインタリーブするのに利用されてもよい。インタリーブ処理のために上述された方法を利用するため、デインタリーブ処理でなく、方法のステップは同じままであり、相違は、入力データ(ブロック802において格納されるものなど)はデインタリーブされたデータ(及びインタリーブされていないデータ)を有し、出力データ(例えば、図8のエンドにおいてSRAMに書き戻されるものなど)はインタリーブされたデータ(及びでインタリーブされていないデータ)を有する。
“プロセッサ”及び“コンピュータ”という用語は、ここでは命令を実行可能となるような処理能力を備えた何れかの装置を表すのに利用される。当業者は、このような処理能力が多数の異なる装置に搭載されていることを理解し、“コンピュータ”という用語が、セットトップボックス、メディアプレーヤー、デジタルラジオ、PC、サーバ、携帯電話、PDA及び他の多数の装置を含む。
当業者は、プログラム命令又はデータを格納するのに利用されるストレージ装置がネットワーク全体に分散可能であることを理解するであろう。例えば、リモートコンピュータは、ソフトウェアとして記述されるプロセスの具体例を格納してもよい。ローカル又はターミナルコンピュータは、リモートコンピュータにアクセスし、プログラムを実行するためソフトウェアの一部又はすべてをダウンロードしてもよい。あるいは、ローカルコンピュータは、必要に応じてソフトウェアの一部をダウンロードするか、又はローカルターミナルの一部のソフトウェア命令と、リモートコンピュータ(又はコンピュータネットワーク)の一部とを実行してもよい。当業者はまた、当業者に知られる従来の技術を利用することによって、ソフトウェア命令のすべて又は一部が専用回路、プログラマブルロジックアレイなどにより実行されてもよいことを理解するであろう。
“ロジック”という特定の表現は、機能を実行する構成を表す。ロジックの具体例は、これらの機能を実行するよう構成される回路を含む。例えば、このような回路は、製造処理において利用可能なトランジスタ及び/又は他のハードウェア要素を含むものであってもよい。このようなトランジスタ及び/又は他の要素は、レジスタ、フリップフロップ又はラッチなどのメモリ、ブール演算などの論理演算子、加算器、乗算器又はシフタなどの数学演算子及びインターコネクトを実現及び/又は含む回路又は構成を形成するのに利用されてもよい。このような要素は、カスタム回路若しくは標準的なセルライブラリ、マクロ又は他のレベルの抽象化として提供されてもよい。このような要素は、特定の構成において相互接続されてもよい。ロジックは、固定的な機能である回路を含むものであってもよく、回路が機能を実行するようプログラム可能であり、このようなプログラミングは、ファームウェア又はソフトウェア更新又は制御機構から提供されてもよい。ある機能を実行するため特定されるロジックはまた、構成要素となる機能又はサブプロセスを実現するロジックを含むものであってもよい。一例では、ハードウェアロジックは、固定的な機能処理、処理、状態マシーン又はプロセスを実現する回路を有する。
ここに与えられる何れかの範囲又はデバイス値は、当業者に明らかなように、求められる効果を失うことなく拡張又は変更されてもよい。
上述される利益及び効果は1つの実施例に関するものであってもよいし、又は複数の実施例に関するものであってもよいことが理解されるであろう。これらの実施例は、説明された利益及び効果の何れか又はすべてを有するもの又は説明された問題の何れか又はすべてを解決するものに限定されるものでない。
“ある”アイテムという表現は、これらのアイテムの1以上を表す。“有する”という用語は、ここでは特定された方法のブロック又は要素を含むことを意味するが、このようなブロック又は要素が排他的リストを有さず、装置はさらなるブロック又は要素を含むものであってもよく、方法はさらなる処理又は要素を含むものであってもよい。
ここに説明される方法のステップは、適切である場合、何れか適切な順序により又は同時に実行されてもよい。さらに、各ブロックは、ここに説明された主題の趣旨及び範囲から逸脱することなく方法の何れかから削除されてもよい。上述された具体例の何れかの態様は、求められる効果を失うことなくさらなる具体例を形成するため、上述されたそのたの具体例の何れかの態様と組み合わされてもよい。
好適な実施例の上記説明は単なる例示のために与えられ、各種変更が当業者に可能であることが理解されるであろう。各種実施例がある具体性の程度により、又は1以上の個別の実施例を参照して説明されたが、当業者は、具体例の趣旨又は範囲から逸脱することなく、開示された実施例に対して多数の変更が可能である。
100 デジタル信号処理システムオンチップ
102 オンチップメモリ
104 DSP
106 転送エンジン
108 ハードウェア周辺装置
110 制御プロセッサ
112 DRAM
210 アドレス生成要素

Claims (20)

  1. 第1シーケンスに配置される複数のデータアイテムを格納する第1メモリであって、各データアイテムが前記第1メモリ上の関連するメモリアドレスを有する、前記第1メモリと、
    第2メモリと、
    前記第1メモリと前記第2メモリとに接続され、DRAMに対するポートを有する転送エンジンであって、第1メモリ転送段階において前記第1メモリから前記DRAMに前記複数のデータアイテムを直接転送し、第2メモリ転送段階において前記DRAMから前記第2メモリに前記複数のデータアイテムを直接転送するよう構成される前記転送エンジンと、
    を有するデジタル信号処理システムオンチップであって、
    前記第1メモリ転送段階において、前記転送エンジンは、所定のメモリリードアドレスの非リニアシーケンスに従って前記第1メモリから前記複数のデータアイテムを読み込み、前記複数のデータアイテムを前記DRAMに書き込むよう構成され、
    前記第2メモリ転送段階において、前記転送エンジンは、リニアアドレスシーケンスの各バーストがDRAMインタフェースのバーストサイズに基づき選択された長さを有する、リニアアドレスシーケンスのバーストに従って前記DRAMから前記複数のデータアイテムを読み込み、前記複数のデータアイテムが前記第1シーケンスと異なる第2シーケンスにより前記第2メモリに配置されるように、所定のメモリライトアドレスの非リニアシーケンスに従って前記複数のデータアイテムを前記第2メモリに書き込むよう構成され、
    前記第1シーケンスと前記第2シーケンスとの1つは、ロー・カラムインタリーブされたデータを有するデジタル信号処理システムオンチップ。
  2. 前記第1メモリと前記第2メモリとは共にSRAMである、請求項1記載のデジタル信号処理システムオンチップ。
  3. 前記第1メモリと前記第2メモリとは、同一のオンチップメモリである、請求項1又は2記載のデジタル信号処理システムオンチップ。
  4. 前記DRAMをさらに有する、請求項1乃至3何れか一項記載のデジタル信号処理システムオンチップ。
  5. 前記複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記転送エンジンはさらに、前記データアイテムのブロックのすべてが前記第2メモリに書き込まれるまで、前記第1及び第2メモリ転送段階を繰り返すよう構成される、請求項1乃至4何れか一項記載のデジタル信号処理システムオンチップ。
  6. 前記所定のメモリリードアドレスの非リニアシーケンスと前記所定のメモリライトアドレスの非リニアシーケンスとを生成するよう構成される少なくとも1つのアドレス生成要素をさらに有する、請求項1乃至5何れか一項記載のデジタル信号処理システムオンチップ。
  7. 前記複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記データアイテムのブロックは、データアイテムのいくつかのロー及びデータアイテムのいくつかのカラムを有するグリッドとして構成されるとして定義される、請求項1乃至6何れか一項記載のデジタル信号処理システムオンチップ。
  8. 前記グリッドはさらに、各タイルが前記グリッドの矩形部分を有し、さらにデータアイテムのR個のロー及びC個のカラムを有する複数のタイルを有し、
    前記複数のデータアイテムは、1以上のタイルを有する、請求項7記載のデジタル信号処理システムオンチップ。
  9. 前記所定のメモリリードアドレスの非リニアシーケンスは、前記第1の複数のデータアイテムの各タイルについて、固定数のメモリアドレスにより分離され、初期的なスタートアドレスからスタートする不連続なメモリアドレスのシーケンスを有し、
    前記固定数は、前記グリッドのロー数未満の数に対応し、
    前記タイルの境界に到達するまで、各追加的なシーケンスがオフセット初期的なスタートアドレスからスタートする不連続なメモリアドレスの1以上の追加的なシーケンスに続く、請求項8記載のデジタル信号処理システムオンチップ。
  10. 前記所定のメモリライトアドレスの非リニアシーケンスは、前記第2メモリの固定数のメモリアドレスにより分離され、前記第2メモリの初期的なスタートアドレスからスタートするC個の連続的なメモリアドレスのグループのシーケンスを有し、
    前記固定数は、前記グリッドにおけるカラム数未満のCに対応する、請求項8又は9記載のデジタル信号処理システムオンチップ。
  11. 前記複数のデータアイテムは、前記グリッドのタイルを有する、請求項8乃至10何れか一項記載のデジタル信号処理システムオンチップ。
  12. 前記第2メモリ転送段階において、前記リニアアドレスのバーストは、前記第2メモリの固定数のメモリアドレスにより分離され、前記第2メモリの初期的なスタートアドレスからスターとするX個の連続的なメモリアドレスのバーストのシーケンスを有し、
    Xは、前記グリッドのタイルのデータアイテムの個数に等しい、請求項8乃至11何れか一項記載のデジタル信号処理システムオンチップ。
  13. 前記第1メモリ転送段階において、前記転送エンジンは、各リニアアドレスのバーストがDRAMインタフェースのバーストサイズに基づき選択された長さを有する、リニアアドレスシーケンスのバーストに従って前記複数のデータアイテムを前記DRAMに書き込むよう構成される、請求項8乃至12何れか一項記載のデジタル信号処理システムオンチップ。
  14. 前記第1メモリ転送段階において、前記リニアアドレスシーケンスのバーストは、前記第2メモリの固定数のメモリアドレスにより分離され、前記第2メモリの初期的なスタートアドレスからスタートするX個の連続的なメモリアドレスのバーストのシーケンスを有し、
    Xは、前記グリッドのタイルのデータアイテムの個数に等しい、請求項13記載のデジタル信号処理システムオンチップ。
  15. タイルは、前記DRAMインタフェースのバーストのサイズに基づきサイジングされる、請求項8乃至14何れか一項記載のデジタル信号処理システムオンチップ。
  16. デジタル信号処理システムにおいてデータアイテムに対してインタリーブ又はデインタリーブ処理を実行する方法であって、
    第1オンチップメモリから、所定のメモリリードアドレスの非リニアシーケンスに従って第1シーケンスに格納されている第1の複数のデータアイテムを読み込むステップと、
    前記第1の複数のデータアイテムをDRAMに書き込むステップと、
    前記DRAMから、リニアアドレスシーケンスの各バーストがDRAMインタフェースのバーストサイズに基づき選択される長さを有する、リニアアドレスシーケンスのバーストに従って前記第1の複数のデータアイテムを読み込むステップと、
    前記データアイテムが前記第1シーケンスと異なる第2シーケンスにより第2オンチップメモリ上に配置されるように、所定のメモリライトアドレスの非リニアシーケンスに従って前記第1の複数のデータアイテムを前記第2オンチップメモリに書き込むステップと、
    を有し、
    前記第1シーケンスと前記第2シーケンスとの1つは、ロー・カラムインタリーブされたデータを有する方法。
  17. 前記第1の複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記データアイテムのブロックは、データアイテムのいくつかのローとデータアイテムのいくつかのカラムとを有するグリッドとして配置されるものとして定義され、
    前記グリッドはさらに、各タイルが前記グリッドの矩形部分を有し、さらにデータアイテムのR個のローとC個のカラムとを有し、
    前記第1オンチップメモリから、所定のメモリリードアドレスの非リニアシーケンスに従って第1シーケンスに格納されている第1の複数のデータアイテムを読み込むステップは、前記第1の複数のデータアイテムの各タイルについて、
    (i)前記第1オンチップメモリの初期的なスタートアドレスのデータアイテムを読み込むステップと、
    (ii)固定数のデータアイテムをスキップするステップであって、前記固定数は前記グリッドのロー数未満のものに対応する、前記スキップするステップと、
    (iii)データアイテムを読み込むステップと、
    (iv)前記タイルの境界に到達するまで、ステップ(ii)及び(iii)を繰り返すステップと、
    (v)前記初期的なスタートアドレスにオフセットを加えるステップと、
    (vi)前記タイルの各データアイテムが読み込まれるまで、ステップ(i)〜(v)を繰り返すステップと、
    を有する、請求項16記載の方法。
  18. 前記第1の複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記データアイテムのブロックは、データアイテムのいくつかのローとデータアイテムのいくつかのカラムとを有するグリッドとして配置されるものとして定義され、
    前記グリッドはさらに、各タイルが前記グリッドの矩形部分を有し、さらにデータアイテムのR個のローとC個のカラムとを有する複数のタイルを有し、
    前記第1の複数のデータアイテムは、1以上のタイルを有し、
    前記所定のメモリライトアドレスの非リニアシーケンスに従って前記第1の複数のデータアイテムを前記第2オンチップメモリに書き込むステップは、
    (i)前記第1の複数のデータアイテムからのC個のデータアイテムを前記第2オンチップメモリの複数の連続的なアドレスであって、前記第2オンチップメモリの前記タイルの初期的なスタートアドレスからスタートする前記複数の連続的なアドレスに書き込むステップと、
    (ii)前記第2オンチップメモリの固定数のアドレスをスキップするステップであって、前記固定数は前記グリッドのカラム数未満のCに対応する、前記スキップするステップと、
    (iii)前記第1の複数のデータアイテムからのC個のデータアイテムを前記第2オンチップメモリの複数の連続的なアドレスに書き込むステップと、
    (iv)ステップ(ii)及び(iii)を繰り返すステップと、
    を有する、請求項16又は17記載の方法。
  19. 前記第1の複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記データアイテムのブロックは、データアイテムのいくつかのローとデータアイテムのいくつかのカラムとを有するグリッドとして配置されるとして定義され、
    前記グリッドはさらに、各タイルが前記グリッドの矩形部分を有し、データアイテムのR個のローとC個のカラムとをさらに有する複数のタイルを有し、
    前記第1の複数のデータアイテムは、1以上のタイルを有し、
    前記第1の複数のデータアイテムを前記DRAMに書き込むステップは、
    (i)前記第1の複数のデータアイテムからのX個のデータアイテムを前記DRAMの前記タイルの初期的なスタートアドレスからスタートする前記DRAMの複数の連続的なアドレスに書き込むステップと、
    (ii)前記DRAMの固定数のアドレスをスキップするステップと、
    (iii)前記第1の複数のデータアイテムからのX個のデータアイテムを前記DRAMの複数の連続的なアドレスに書き込むステップと、
    (iv)ステップ(ii)及び(iii)を繰り返すステップと、
    を有し、
    Xは、前記グリッドのタイルのデータアイテムの個数に等しい、請求項16乃至18何れか一項記載の方法。
  20. 前記第1の複数のデータアイテムは、データアイテムのブロックのサブセットを有し、
    前記データアイテムのブロックは、データアイテムのいくつかのローとデータアイテムのいくつかのカラムとを有するグリッドとして配置されるものとして定義され、
    前記グリッドはさらに、各タイルが前記グリッドの矩形部分を有し、さらにデータアイテムのR個のローとC個のカラムとを有する複数のタイルを有し、
    前記第1の複数のデータアイテムは、1以上のタイルを有し、
    前記DRAMから、リニアアドレスシーケンスのバーストに従って前記第1の複数のデータアイテムを読み込むステップは、
    (i)前記第1の複数のデータアイテムからのX個のデータアイテムを前記DRAMの初期的なスタートアドレスからスタートする前記DRAMの複数の連続的なアドレスから読み込むステップと、
    (ii)前記DRAMの固定数のアドレスをスキップするステップと、
    (iii)前記第1の複数のデータアイテムからのX個のデータアイテムを前記DRAMの複数の連続的なアドレスから読み込むステップと、
    (iv)ステップ(ii)及び(iii)を繰り返すステップと、
    を有し、
    Xは、前記グリッドのタイルのデータアイテムの個数に等しい、請求項16乃至19何れか一項記載の方法。
JP2013169110A 2012-08-30 2013-08-16 デジタル信号処理のためのタイルベースインタリーブ処理及びデインタリーブ処理 Active JP5575310B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1215425.8A GB2497154B (en) 2012-08-30 2012-08-30 Tile based interleaving and de-interleaving for digital signal processing
GB1215425.8 2012-08-30

Publications (3)

Publication Number Publication Date
JP2014050103A true JP2014050103A (ja) 2014-03-17
JP2014050103A5 JP2014050103A5 (ja) 2014-04-24
JP5575310B2 JP5575310B2 (ja) 2014-08-20

Family

ID=47074965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013169110A Active JP5575310B2 (ja) 2012-08-30 2013-08-16 デジタル信号処理のためのタイルベースインタリーブ処理及びデインタリーブ処理

Country Status (6)

Country Link
US (4) US10296456B2 (ja)
JP (1) JP5575310B2 (ja)
CN (1) CN103678190B (ja)
DE (1) DE102013014168B4 (ja)
GB (1) GB2497154B (ja)
TW (1) TWI604726B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
GB2497154B (en) * 2012-08-30 2013-10-16 Imagination Tech Ltd Tile based interleaving and de-interleaving for digital signal processing
US10186236B2 (en) * 2013-05-23 2019-01-22 Intel Corporation Universal codec
KR102354992B1 (ko) 2015-03-02 2022-01-24 삼성전자주식회사 양안 시차 영상에 대한 타일 기반 렌더링 방법 및 장치
KR102341267B1 (ko) 2015-05-04 2021-12-20 삼성전자주식회사 양안 시차 영상에 대한 렌더링 방법 및 장치
CN105681904A (zh) * 2016-01-18 2016-06-15 四川长虹电器股份有限公司 提高电视响应速度的方法
TWI617138B (zh) * 2016-01-26 2018-03-01 晨星半導體股份有限公司 時間解交錯電路與方法
CN107038122A (zh) * 2016-02-04 2017-08-11 晨星半导体股份有限公司 时间解交错电路与方法
US11979340B2 (en) 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
WO2018152841A1 (en) * 2017-02-27 2018-08-30 Alto Beam (China) Inc. Apparatus for performing deinterleaving of a binary data stream and dvb-t2 receiver
CN109728826B (zh) * 2017-10-27 2023-07-07 深圳市中兴微电子技术有限公司 一种数据交织与解交织方法和装置
GB202008299D0 (en) * 2020-06-02 2020-07-15 Imagination Tech Ltd Manipulation of data in a memory
US20220197653A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Processors, methods, systems, and instructions to select and store data elements from strided data element positions in a first dimension from three source two-dimensional arrays in a result two-dimensional array
US20220206854A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US20240015217A1 (en) * 2022-07-06 2024-01-11 Mellanox Technologies, Ltd. Patterned Remote Direct Memory Access (RDMA)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000307440A (ja) * 1999-04-23 2000-11-02 Denso Corp データ列変換装置,及びデータ伝送システム
WO2001091308A1 (fr) * 2000-05-22 2001-11-29 Yozan Inc. Convertisseur d'adresses, entrelaceur et desentrelaceur
JP2003051813A (ja) * 2001-04-23 2003-02-21 Lucent Technol Inc 等化方法及びその装置
WO2003085838A1 (fr) * 2002-04-05 2003-10-16 Sony Corporation Dispositif et procede d'entrelacement, dispositif et procede de desentrelacement
US20080028188A1 (en) * 2006-07-25 2008-01-31 Legend Silicon Time de-interleaver implementation using sdram in a tds-ofdm receiver
US20110113305A1 (en) * 2009-11-12 2011-05-12 Broadlogic Network Technologies Inc. High throughput interleaver / deinterleaver

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802387A (en) * 1996-12-27 1998-09-01 Lucent Technologies Inc. Efficient data transfer in a digital signal processor
WO1999007132A1 (en) * 1997-07-31 1999-02-11 British Telecommunications Public Limited Company Generation of voice messages
JP3738134B2 (ja) * 1998-06-19 2006-01-25 三洋電機株式会社 デジタル信号処理装置
US7177988B2 (en) 2002-01-24 2007-02-13 Broadcom Corporation Method and system for synchronizing processor and DMA using ownership flags
JP3980901B2 (ja) * 2002-02-12 2007-09-26 沖電気工業株式会社 デジタル信号処理装置
GB2391337B (en) * 2002-04-26 2005-06-15 Motorola Inc Instruction cache and method for reducing memory conflicts
US7600163B2 (en) * 2003-09-23 2009-10-06 Realtek Semiconductor Corp. Convolutional interleaver and deinterleaver
CN100512361C (zh) 2004-06-22 2009-07-08 中兴通讯股份有限公司 一种非对称数字用户线中卷积交织和解交织的实现装置
CN101032085B (zh) 2004-09-29 2010-06-09 松下电器产业株式会社 数据交织装置
US20060236045A1 (en) 2005-04-13 2006-10-19 Analog Devices, Inc. Apparatus for deinterleaving interleaved data using direct memory access
JP2008159109A (ja) 2006-12-21 2008-07-10 Matsushita Electric Ind Co Ltd データ転送装置
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
CN101237240B (zh) 2008-02-26 2011-07-20 北京海尔集成电路设计有限公司 一种利用外部存储器实现卷积交织/解交织的方法及设备
US20090313399A1 (en) 2008-06-13 2009-12-17 Texas Instruments Incorporated Direct memory access channel
GB2502556B (en) * 2012-05-30 2017-08-02 Imagination Tech Ltd Noise variance estimation and interference detection
GB2499270B (en) * 2012-06-07 2014-07-09 Imagination Tech Ltd Efficient demapping of constellations
GB2505446B (en) * 2012-08-30 2014-08-13 Imagination Tech Ltd Memory address generation for digital signal processing
GB2497154B (en) * 2012-08-30 2013-10-16 Imagination Tech Ltd Tile based interleaving and de-interleaving for digital signal processing
GB2513677B (en) * 2013-10-17 2015-09-02 Imagination Tech Ltd Channel impulse response
GB2531367B (en) * 2015-01-09 2016-12-28 Imagination Tech Ltd Impulsive noise rejection
TWI569587B (zh) * 2015-02-06 2017-02-01 晨星半導體股份有限公司 解迴旋交錯器
GB2536655B (en) * 2015-03-24 2017-09-20 Imagination Tech Ltd Logging events with timestamps
GB2536658B (en) * 2015-03-24 2017-03-22 Imagination Tech Ltd Controlling data flow between processors in a processing system
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US10216412B2 (en) * 2017-02-14 2019-02-26 Arm Limited Data processing systems
US10387160B2 (en) * 2017-04-01 2019-08-20 Intel Corporation Shared local memory tiling mechanism
US10896043B2 (en) * 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000307440A (ja) * 1999-04-23 2000-11-02 Denso Corp データ列変換装置,及びデータ伝送システム
WO2001091308A1 (fr) * 2000-05-22 2001-11-29 Yozan Inc. Convertisseur d'adresses, entrelaceur et desentrelaceur
JP2003051813A (ja) * 2001-04-23 2003-02-21 Lucent Technol Inc 等化方法及びその装置
WO2003085838A1 (fr) * 2002-04-05 2003-10-16 Sony Corporation Dispositif et procede d'entrelacement, dispositif et procede de desentrelacement
US20080028188A1 (en) * 2006-07-25 2008-01-31 Legend Silicon Time de-interleaver implementation using sdram in a tds-ofdm receiver
US20110113305A1 (en) * 2009-11-12 2011-05-12 Broadlogic Network Technologies Inc. High throughput interleaver / deinterleaver

Also Published As

Publication number Publication date
US20200242029A1 (en) 2020-07-30
US20140068168A1 (en) 2014-03-06
CN103678190A (zh) 2014-03-26
DE102013014168A1 (de) 2014-03-06
US20220075723A1 (en) 2022-03-10
US11755474B2 (en) 2023-09-12
US10296456B2 (en) 2019-05-21
US10657050B2 (en) 2020-05-19
CN103678190B (zh) 2016-10-26
US20190236006A1 (en) 2019-08-01
DE102013014168B4 (de) 2016-07-07
TW201419837A (zh) 2014-05-16
TWI604726B (zh) 2017-11-01
JP5575310B2 (ja) 2014-08-20
US11210217B2 (en) 2021-12-28
GB2497154A (en) 2013-06-05
GB2497154B (en) 2013-10-16
GB201215425D0 (en) 2012-10-17

Similar Documents

Publication Publication Date Title
JP5575310B2 (ja) デジタル信号処理のためのタイルベースインタリーブ処理及びデインタリーブ処理
US9684592B2 (en) Memory address generation for digital signal processing
US20210374512A1 (en) Multicast network and memory transfer optimizations for neural network hardware acceleration
GB2517850A (en) An improved decoder for low-density parity-check codes
JPWO2012108411A1 (ja) 符号化/復号化処理プロセッサ、および無線通信装置
US11721373B2 (en) Shared multi-port memory from single port
JP5752666B2 (ja) デジタル信号処理用のメモリアクセス
TWI601424B (zh) 時間解交錯電路與方法
Briki et al. A conflict-free memory mapping approach to design parallel hardware interleaver architectures with optimized network and controller
US9442661B2 (en) Multidimensional storage array and method utilizing an input shifter to allow an entire column or row to be accessed in a single clock cycle
TWI551062B (zh) 時間及單元解交錯電路及執行時間及單元解交錯處理之方法
JP2004312348A (ja) インターリーブ/デインターリーブ方法及び装置
WO2016095426A1 (zh) 3G协议的turbo码并行译码方法及装置
JP6863661B2 (ja) レートデマッチング及びデインターリーブ回路
CN110383785B (zh) 在dvb-t2接收机中执行二进制数据流的时域去交织的装置
US20160028575A1 (en) Ofdm processing system and method
WO2013039376A1 (en) Interleaver for duo -binary turbo codes for a wimax communication system
US20140129756A1 (en) Data processing device and data processing method
KR20040083697A (ko) 디지털 tv 시스템에서의 외부 메모리를 이용한디인터리빙 장치 및 그 구현 방법
JP2009044654A (ja) アフィン変換装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140311

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140311

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140311

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140522

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140701

R150 Certificate of patent or registration of utility model

Ref document number: 5575310

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

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