JP5811099B2 - メモリ制御装置、及びメモリ制御方法 - Google Patents

メモリ制御装置、及びメモリ制御方法 Download PDF

Info

Publication number
JP5811099B2
JP5811099B2 JP2012545821A JP2012545821A JP5811099B2 JP 5811099 B2 JP5811099 B2 JP 5811099B2 JP 2012545821 A JP2012545821 A JP 2012545821A JP 2012545821 A JP2012545821 A JP 2012545821A JP 5811099 B2 JP5811099 B2 JP 5811099B2
Authority
JP
Japan
Prior art keywords
array
control information
output
data
gag
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
JP2012545821A
Other languages
English (en)
Other versions
JPWO2012070683A1 (ja
Inventor
希実 石原
希実 石原
克敏 関
克敏 関
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2012545821A priority Critical patent/JP5811099B2/ja
Publication of JPWO2012070683A1 publication Critical patent/JPWO2012070683A1/ja
Application granted granted Critical
Publication of JP5811099B2 publication Critical patent/JP5811099B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、メモリ制御装置、及びメモリ制御方法に関し、特に、複数のデータを同時に読み出し及び複数のデータを同時に書き込むメモリ制御装置、及びメモリ制御方法に関する。
例えばマルチバンク構成のメモリの制御などにおいて、複数のデータを同時に読み出し、及び複数のデータを同時に書き込むメモリ制御の技術が、数多く開示されている。
例えば、特許文献1は、データ配列変換システムの一例を開示する。
特許文献1のデータ配列変換システムは、入力された2次元データの行と列とを入れ替えて出力するデータ配列変換システムである。
このデータ配列変換システムは、入力手段と出力手段とを有している。入力手段は、入力行列の成分を中間行列の成分に変換する。そして、入力手段は、この中間行列の行成分または列成分を複数の行または列メモリ手段に同時に書き込む。出力手段は、複数の行または列メモリ手段に保持されている中間行列の行成分または列成分を同時に読み出する。そして、出力手段は、中間行列の成分を出力行列の成分に変換し、入力行列に対して行と列とを入れ替えた出力行列を出力する。
また、例えば、特許文献2は、リストに配列されるインデックスの指すメモリバンクにアクセスすることで、規定の算出式の計算処理を実行する計算機において、同一メモリバンクへの連続アクセスを防止する技術の一例を開示する。
特許文献2の計算機は、インデックスの基数に対する剰余を求める。次に、その計算機は、そのインデックスとその剰余の規定する数値との対応関係を管理する作業配列、を作成する。同時に、その計算機は、そのインデックスとそのインデックスのリスト配列順序との対応関係を管理する作業配列、を作成する。更に、特許文献2の計算機は、規定の算出式を、特定の形式で再構成する。ここで、特定の形式は、剰余系を内側ループとし、剰余の規定する数値の出現頻度を外側ループとする、形式である。
そして、特許文献2の計算機は、作成した作業配列に示される計算順序に従ってメモリバンクにアクセスし、再構成した算出式による計算処理を実行する。
また、例えば、非特許文献1は、関連技術であるアドレス生成器に関する技術を開示する。
ある種の信号処理アルゴリズムにおいては、入力・出力のデータフォーマット(データ配列)が規定されている。そして、このような規定されたデータフォーマットのデータをメモリから自動で読み出すようにアドレスを生成するアドレス生成器がある。
このアドレス生成器を用いることにより、プロセッサがメモリアクセスの処理を行う必要がなくなり、処理サイクル数を削減できることが知られている。
このようなアドレス生成器の関連技術として、非特許文献1に示されるGeneric Address Generator(汎用アドレス生成器:GAG)がある。そのアドレス生成器について、例を用いて、以下に具体的に説明する。
図37は、関連する技術のアドレス生成器900の構成を示す図である。このアドレス生成器900は、GAG940とGAG940の制御情報(アドレス生成コマンド)を格納するGAG用命令メモリ930とを有する。
GAG用命令メモリ930は、GAG制御情報931を含む。尚、図37に示すGAG制御情報931は、GAGの制御情報の一例である。
図37に示すように、GAG940は、複数のループ構造設定を持つGAG制御情報931によってその動作を規定する。各ループ構造設定は、Base(ベース)値と、Inner Loop(内部ループ)のLimit(リミット)値及びStep(ステップ)値と、Outer Loop(外部ループ)のLimit値及びStep値とからなる。
本例では、図37に示すようにGAG制御情報931は、ループ構造1設定とループ構造2設定とを含む。図37に示すループ構造1設定は、例えば、Base値が「0」、Inner Loop Limit値及びStep値がそれぞれ「2」及び「1」、Outer Loop Limit値及びStep値がそれぞれ「2」及び「4」である。
また、GAG940は、ループ構造1設定による動作を終了すると、自動的にループ構造2設定による動作を開始する。
以下、これら複数のループ構造設定をまとめて、GAG制御情報とも呼ぶ。
図38は、上述のループ構造1設定に基づいた、アドレス生成器900の動作の一例を示す図である。図38を参照して、アドレス生成器900がどのようなアドレスを生成するかを説明する。尚、本例においては、アクセスするメモリは8ワードであるとする。
図38を参照すると、GAG940は、まず、Base値をメモリアクセスアドレスとしてセットする。具体的には、本例ではBase値は「0」であるので、GAG940は、メモリの0番地をアクセスする(S901)。
次に、GAG940はInner Loopの実行を開始する。より具体的には、GAG940は、Base値に対し、Inner LoopのLimit値の回数だけStep値を加算して更新しつつ、メモリにアクセスする。本例では、Inner LoopのLimit値が「2」、Step値が「1」である。従って、GAG940は、まず、Base値に「1」を加算してメモリの1番地をアクセスし、次に、更にもう一度「1」を加算してメモリの2番地をアクセスする(S902)。
Inner Loopの処理を終了すると、GAG940は、次にOuter Loopを実行する。より具体的には、Inner Loopの実行が終了すると、GAG940は、Outer LoopのLimit値をデクリメントする。続けて、GAG940は、Outer LoopのLimit値をチェックする。そして、そのLimit値が「0」でない場合、GAG940は、Base値をOuter LoopのStep値「4」で更新し、更新した新たなBase値に基づいて、Inner Loopを実行する。
本例においては、Outer LoopのLimit値の初期値は、「2」である。1回目のInner Loopが終了すると、GAG940は、そのLimit値から「1」デクリメントし、そのLimit値は「1」となる。ここで、Limit値が「0」でないため、GAG940は、BaseをOuter LoopのStep値で更新する。ここで、Outer LoopのStep値は「4」なので、新たなBase値は「4」となる(S903)。
次に、GAG940は、再度Inner Loopを実行する(S904)。
Inner Loopが終了すると、GAG940は、Outer LoopのLimit値を「1」デクリメントする。ここで、Limit値が「0」となるので、GAG940は、Outer Loopの処理を終了する。
このようなアドレス生成器900を利用して、メモリアクセスを行うようにすることにより、プロセッサの負担を軽減することができる。
特開2003−208415号公報 特開2000−035892号公報
Reiner W.Hartenstein,Michael Herz,Thomas Hoffman,Ulrich Nageldinger : Exploiting Contemporary Memory Techniques in Reconfigurable Accelerators,Proceedings of 8th International workshop on Field−Programmable Logic and Applications,FPL’98,Tallin,Estonia,August 31 − September 3,1998
しかしながら、上述した技術文献に記載された技術は、マルチバンク構成のメモリの制御において、入力(メモリへの書き込み)時と出力(メモリからの読み出し)時とでデータ配列が異なる場合、対応可能なデータ配列の組み合わせが非常に限定されている、という問題点を有する。
その理由は、上述の技術文献に記載された技術は、入力時と出力時とで異なるデータ配列の組み合わせに、汎用的に対応することができないためである。このことを、以下に、具体的に説明する。
特許文献1に開示されたデータ配列変換システムは、特定の変換のみを可能としている。その特定の変換は、入力のデータフォーマットが2のN乗行と2のN乗列とからなる2次元データ配列であり、かつ出力のデータフォーマットが入力データフォーマットの行と列とを入れ替えた配列である、変換である。
特許文献2に開示された計算機における作業配列の作成の技術は、入力・出力のデータフォーマットが規定されたデータ配列の変換に適したものではない。
非特許文献1に示されるGAGは、複数組のデータ群を格納しているメモリから、メモリに格納されて配列とは異なる配列で、一度に一組のデータを順次読み出す場合の読み出しアドレスを生成することができる。また、このGAGは、保持している複数組のデータ群を、保持している配列とは異なる配列で、一度に一組のデータを順次メモリに書き込む場合の書き込みアドレスを生成することができる。
一方、高度に最適化された信号処理用回路において、一度に複数組のデータを並列に読み出すこと、及び一度に複数組のデータを書き込むことが必要とされる場合がある。このような場合、メモリの構成は、通常マルチバンク構成である。
更に、マルチバンク構成のメモリ制御は、メモリアクセスのスループット低下を防止するため、同時に読み出される複数組のデータの配列を考慮して、一度に書き込む複数組のデータを格納するバンクを決定する機能を有していることが望ましい。即ち、マルチバンク構成のメモリ制御は、どのポートから入力された一組のデータをどのメモリバンクに書き込むかを選択する機能を有していることが望ましい。更に、マルチバンク構成のメモリ制御は、どのバンクから読み出した一組のデータをどのポートに出力するかを選択する機能を有していることが望ましい。しかし、非特許文献1に示されるGAGは、そのような機能は有していない。
即ち、マルチバンク構成のメモリの制御において、上述の技術文献に記載された技術により対応可能な、入力時と出力時とで異なるデータフォーマットの組み合わせは、2次元データ配列の行と列とを入れ替えたデータフォーマットの組み合わせのみ、であるためである。
本発明の目的は、上述した問題点を解決できるメモリ制御装置、及びメモリ制御方法を提供することにある。
本発明のメモリ制御装置は、第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、
前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、
前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含む。
本発明のメモリ制御方法は、メモリ制御装置が、
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、
前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、
前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する。
本発明のメモリ制御情報生成プログラムは、第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、
前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、GAG制御情報を生成する処理と、をコンピュータに実行させる。
本発明は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にするという効果がある。
図1は、本発明の第1の実施形態の構成を示すブロック図である。 図2は、本発明の第1乃至第3の実施形態のシャッフル回路の構成を示すブロック図である。 図3は、本発明の第1乃至第3の実施形態の2−D GAGの構成を示すブロック図である。 図4は、本発明の第2の実施形態における入力データ配列の例を示す図である。 図5は、本発明の第2の実施形態における出力データ配列の例を示す図である。 図6は、本発明の第1の実施形態の具体的な構成を示すブロック図である。 図7は、本発明の第1及び第3の実施形態におけるデータ入力側の動作を示すタイムチャートである。 図8は、本発明の第1の実施形態におけるデータ出力側の動作を示すタイムチャートである。 図9は、本発明の第2の実施形態の構成を示すブロック図である。 図10は、本発明の第2の実施形態における入力データ配列の例を示す図である。 図11は、本発明の第2の実施形態における出力データ配列の例を示す図である。 図12は、本発明の第2の実施形態のGAG制御情報自動生成部の動作を示すフローチャートである。 図13は、本発明の第2の実施形態の出力タイミング配列生成ステップの動作を示す擬似コードのリストである。 図14は、本発明の第2の実施形態のcalc_delay関数の動作を示す擬似コードのリストである。 図15は、本発明の第2の実施形態のメモリ配置方法決定ステップの動作を示す擬似コードのリストである。 図16は、本発明の第2の実施形態のinitialize_data関数の動作を示す擬似コードのリストである。 図17は、本発明の第2の実施形態のdo_shuffle関数の動作を示す擬似コードのリストである。 図18は、本発明の第2の実施形態のdsearch_vac_col関数の動作を示す擬似コードのリストである。 図19は、本発明の第2の実施形態の書き込み側GAG制御情報生成ステップの動作を示す擬似コードのリストである。 図20は、本発明の第2の実施形態のmk_addr_map関数の動作を示す擬似コードのリストである。 図21は、本発明の第2の実施形態の関数mk_adr_map_sub関数の動作を示す擬似コードのリストである。 図22は、本発明の第2の実施形態のloop_analyzer関数の動作を示す擬似コードのリストである。 図23は、本発明の第2の実施形態のiloop_analyze関数の動作を示す擬似コードのリストである。 図24は、本発明の第2の実施形態のoloop_analyze関数の動作を示す擬似コードのリストである。 図25は、本発明の第2の実施形態の読み出しアドレス配列生成ステップの動作を示す擬似コードのリストである。 図26は、本発明の第2の実施形態における入力データ配列及び出力データ配列と出力タイミング配列との関係の例を示す図である。 図27は、本発明の第2の実施形態におけるメモリ内データ配列を生成するプロセスの一部を示す図である。 図28は、本発明の第2の実施形態における入力データ配列702及びメモリ内データ配列721と、書き込みアドレス配列731との関係の例を示す図である。 図29は、本発明の第2の実施形態におけるループ構造分析のプロセスの例の一部を示した図である。 図30は、本発明の第2の実施形態におけるループ構造分析のプロセスの例の一部を示した図である。 図31は、本発明の第2の実施形態におけるメモリ内データ配列及び出力データ配列と読み出しアドレス配列との関係の例を示す図である。 図32は、本発明の第3の実施形態の構成を示すブロック図である。 図33は、本発明の第3の実施形態におけるメモリ内データ配列及び出力データ配列と読み出しアドレス配列と関係の例を示す図である。 図34は、本発明の第3の実施形態におけるデータ出力側の動作を示すタイムチャートである。 図35は、本発明の第4の実施形態の構成を示すブロック図である。 図36は、本発明の第6の実施形態の構成を示すブロック図である。 図37は、関連する技術の、アドレス生成器の構成を示す図である。 図38は、関連する技術の、アドレス生成器の動作の一例を示す図である。 図39は、本発明の第2の実施形態における入力データ配列の例を示す図である。 図40は、本発明の第5の実施形態の構成を示すブロック図である。 図41は、本発明の第5の実施形態のデータ保持出力回路の構成を示すブロック図である。 図42は、本発明の第5の実施形態のリード 2−D GAGの構成を示すブロック図である。 図43は、本発明の第5の実施形態のGAG制御情報自動生成部の動作を示すフローチャートである。 図44は、本発明の第2の実施形態のGAG制御情報自動生成部の出力タイミング情報生成ステップの詳細な動作を示すフローチャートである。 図45は、本発明の第2の実施形態のGAG制御情報自動生成部の前部有効領域及び後部有効領域を算出するステップの詳細な動作を示すフローチャートである。 図46は、本発明の第2の実施形態のGAG制御情報自動生成部の出力タイミング情報を生成するステップの詳細な動作を示すフローチャートである。 図47は、本発明の第5の実施形態におけるリタイミングデータの例を示す図である。 図48は、本発明の第5の実施形態におけるリタイミングデータの例を示す図である。 図49は、本発明の第5の実施形態におけるリタイミングデータの例を示す図である。 図50は、本発明の第5の実施形態におけるリタイミングデータの例を示す図である。 図51は、本発明の第5の実施形態における出力タイミング情報の例を示す図である。
次に、本発明の実施形態について図面を参照して詳細に説明する。
以下の説明において、複数の同一モジュールを区別して説明する必要がある場合、符号に続けて「#識別番号」の形式でサフィックスを付加して表記する。例えば、制御回路999というモジュールが2つあり、これを区別して説明する場合、制御回路999#1、制御回路999#2と表記する。複数の同一モジュールを区別しないで説明する場合(例えば、全ての制御回路900について説明する場合)、サフィックスを付加しないで単に制御回路999と表記する。また、例えば、制御回路999#0〜制御回路999#(M−1)を、制御回路999#0〜#(M−1)とも表記する。但し、Mは2以上の自然数とする。
[第1の実施の形態]
図1は、本発明の第1の実施形態の構成を示すブロック図である。
図1を参照すると、本実施形態に係るデータ保持出力回路100は、Write 2−D GAG(書込2次元汎用アドレス生成器)210、リード 2−D GAG(読出2次元汎用アドレス生成器)220、シャッフル回路300#1〜#2及びメモリ400#0〜#(M−1)を含む。
メモリ400は、例えば、マルチバンク構造のメモリの各バンクである。メモリ400は、例えば、ワードアドレスで示される番地に、ワード単位のデータ(データの組、入力データの組及び出力データの組とも呼ばれる)を記憶する。
次に、シャッフル回路300について、図2を用いて説明する。図2は、シャッフル回路300の構造を示すブロック図である。
シャッフル回路300は、M個の入力ポート311、M個の入力に対し1つを選択するM個のM:1 セレクタ(M対1セレクタ)310及びM個の出力ポート312を含む。シャッフル回路300は、M個の入力ポート311に、M個のシャッフル前データBS#0〜#(M−1)を受け取る。また、シャッフル回路300のM個のM:1 セレクタ310#0〜#(M−1)は、M個のシャッフル回路用制御情報BA#0〜#(M−1)を受け取る。
シャッフル前データBS#0〜#(M−1)は、シャッフル回路300#1の場合、外部からシャッフル回路300に入力される入力データID#0〜#(M−1)である。シャッフル前データBS#0〜#(M−1)は、シャッフル回路300#2の場合、メモリ400#0〜#(M−1)から出力されるメモリ出力データMO#0〜#(M−1)である。シャッフル回路用制御情報BA#0〜#(M−1)は、「0」〜「(M−1)」の値のいずれかを、それぞれ排他的に持つ。
シャッフル回路300は、受け取ったシャッフル前データBS#0〜#(M−1)をそれぞれM分岐し、各M:1 セレクタ310#0〜#(M−1)にシャッフル前データBS#0〜#(M−1)を入力する。また、シャッフル回路300は、M:1 セレクタ310#0〜#(M−1)それぞれに、受け取ったシャッフル回路用制御情報BA#0〜#(M−1)をそれぞれ入力する。
各M:1 セレクタ310#0〜#(M−1)は、シャッフル回路用制御情報BA#0〜#(M−1)に基づいて、シャッフル前データBS#0〜#(M−1)の内のいずれか1つを、それぞれ選択する。尚、シャッフル回路300#1に入力されるシャッフル回路用制御情報BAは、入力データ選択部用制御情報とも呼ばれる。また、シャッフル回路300#1に入力されるシャッフル回路用制御情報BAは、出力データ選択部用制御情報とも呼ばれる。
そして、各M:1 セレクタ310#0〜#(M−1)は、選択した1つのシャッフル前データBS#0〜#(M−1)を、それぞれシャッフル後データAS#0〜#(M−1)として、各出力ポート312から出力する。シャッフル後データAS#0〜#(M−1)は、シャッフル回路300#1の場合、メモリ400#0〜#(M−1)に出力するメモリ入力データMI#0〜#(M−1)である。シャッフル後データAS#0〜#(M−1)は、シャッフル回路300#2の場合、シャッフル回路300から外部へ出力する出力データOD#0〜#(M−1)である。
次に、ライト 2−D GAG210及びリード 2−D GAG220について、図3を用いて説明する。以後、ライト 2−D GAG210及びリード 2−D GAG220を総称して2−D GAG200とも呼ぶ。図3は、2−D GAG200の構造を示すブロック図である。
2−D GAG200は、シャッフル回路用制御情報生成器201及びメモリ用ワードアドレス生成器202を含む。シャッフル回路用制御情報生成器201及びメモリ用ワードアドレス生成器202は、それぞれ、M個の命令メモリ(GAG用命令メモリ)203と、M個のGAG204とを含む。各命令メモリ203は、GAG制御情報205を保持する。
命令メモリ203とGAG204との組み合わせは、各々、背景技術において図37及び図38を用いて説明したアドレス生成器900と同様の動作を行う。
GAG制御情報205は、例えば、関連技術として説明した図37に示すようなGAG制御情報931と同様の情報である。GAG制御情報205は、例えば、図4に示すような入力データ配列702と図5に示すような出力データ配列に基づいて、生成された情報である。
GAG制御情報205は、ループ構造を1つ以上含む。そのループ構造は、例えば、ベースアドレスとアドレスの増分値であるステップ数とそのベースアドレスに対してそのステップ数を順次加算してアドレスを生成する回数とを含むループ構造である。
図4は、入力データ配列702の例を示す図である。図4に示すように、入力データ配列702は、例えば、それぞれA〜Pのインデックスが割り当てられた配列である。入力データ配列702は、例えば、メモリ400#0〜#(M−1)それぞれに、同時に書き込む複数ワードの入力データの配列を指定する。
図5は、出力データ配列703の例を示す図である。図5に示すように、出力データ配列703は、例えば、それぞれA〜Pのインデックスが割り当てられた配列である。出力データ配列703は、例えば、メモリ400#0〜#(M−1)から同時に読み出す複数ワードのデータを出力する際の、出力データの配列を指定する。
ライト 2−D GAG210のシャッフル回路用制御情報生成器201は、対応するGAG制御情報205に基づいて、シャッフル回路用制御情報BA#0〜#(M−1)をシャッフル回路300#1に出力する。また、メモリ用ワードアドレス生成器202は、対応するGAG制御情報205に基づいて、メモリ用ワードアドレスWA#0〜#(M−1)を、出力する。図1に示すように、メモリ用ワードアドレス生成器202は、メモリ用ワードアドレスWA#0〜#(M−1)それぞれをメモリ入力用ワードアドレスIWA#0〜#(M−1)として、M個のメモリ400#0〜#(M−1)にそれぞれ出力する。尚、メモリ400#0〜#(M−1)は、これらメモリ入力用ワードアドレスIWA#0〜#(M−1)が示す番地に、シャッフル回路300#1から出力されたメモリ入力データMI#0〜#(M−1)を書き込む。
リード 2−D GAG220のシャッフル回路用制御情報生成器201は、対応するGAG制御情報205に基づいて、シャッフル回路用制御情報BA#0〜#(M−1)をシャッフル回路300#2に出力する。また、メモリ用ワードアドレス生成器202は、対応するGAG制御情報205に基づいて、メモリ用ワードアドレスWA#0〜#(M−1)を、出力する。図1に示すように、メモリ用ワードアドレス生成器202は、メモリ用ワードアドレスWA#0〜#(M−1)それぞれをメモリ出力用ワードアドレスOWA#0〜#(M−1)として、M個のメモリ400#0〜#(M−1)にそれぞれ出力する。尚、メモリ400#0〜#(M−1)は、これらメモリ出力用ワードアドレスOWA#0〜#(M−1)が示す番地からデータを読み出し、メモリ出力データMO#0−#(M−1)として、シャッフル回路300#2に出力する。
次に、本実施形態の動作について、図2〜図8を参照して詳細に説明する。
尚、本実施形態の動作の説明において、前提を以下の例のとおりであると仮定する。
データ保持出力回路100は、例えば、4つのメモリ400#0〜#3を含む。即ち、図4のデータ保持出力回路100は、図1に示すデータ保持出力回路100において、M=4とした場合のデータ保持出力回路100である。
データ配列の変換対象の入力データは、例えば、行方向に「4」の、列方向に「4」の、行列の要素に対応し、16個である。出力データも同様である。ここで、行方向は、メモリ400の数に対応し、同じタイミングでデータが入力される。また、列方向は、メモリ400のワードアドレスに対応する。
命令メモリ203、及びメモリ400は、制御情報及びデータを格納するために必要十分な領域を有している。
命令メモリ203は、例えば、GAG制御情報205を、GAG204が動作する際に使用する順番で、命令メモリ203の先頭から順に保持している。
また、ライト 2−D GAG200のシャッフル回路用制御情報生成器201のGAG204は、例えば、データ保持出力回路100に入力データが入力されるタイミングと同じタイミングで、シャッフル回路用制御情報BA#0〜#3を出力する。
更に、ライト 2−D GAG200のメモリ用ワードアドレス生成器202のGAG204は、例えば、シャッフル回路用制御情報BA#0〜#3の出力を開始した次のサイクルから、メモリ入力用ワードアドレスIWA#0〜#3を出力する。
また、リード 2−D GAG220のメモリ用ワードアドレス生成器202のGAG204は、例えば、メモリ400#0〜#3に全データが溜まった次のサイクルから、メモリ出力用ワードアドレスOWA#0〜#3を出力する。
更に、リード 2−D GAG220のシャッフル回路用制御情報生成器201のGAG204は、例えば、メモリ出力用ワードアドレスOWA#0〜#3の出力が開始された次のサイクルから、シャッフル回路用制御情報BA#0〜#3を出力する。
また、シャッフル回路用制御情報BA#0〜#3は、例えば、1〜4の整数である。そして、各M:1 セレクタ310は、入力されたシャッフル前データBS#0〜#3の内、その識別番号(#の後の数字)が、シャッフル回路用制御情報BAから「1」減算した値と一致する、シャッフル前データBSを選択し出力する。
更に、各メモリ400#0〜#3のアドレスは、例えば、先頭番地を「1」として、ワード単位で「1」ずつ増加する値である。
メモリ400は、例えば、メモリ入力用ワードアドレスIWAに対応する番地に、入力されたデータを格納する。
更に、メモリ400は、例えば、メモリ出力用ワードアドレスOWAを受け取った次のサイクルに、そのメモリ出力用ワードアドレスOWAに対応する番地に格納されているデータを読み出し、出力する。
以上を前提として、本実施形態の動作を説明する。
図6は、上述の前提に基づく、本実施形態の具体的な構成の例を示すブロック図である。
上述の前提に基づいて、各情報及びデータ線は4組である。尚、以下の説明において、メモリ400に入力するデータをメモリ入力データMI、メモリ400から出力するデータをメモリ出力データと呼ぶ。
まず、データ入力側の動作を説明する。
図7は、データ入力側(ライト 2−D GAG210及びシャッフル回路300#1)の動作を示すタイムチャートである。図7を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。
まず、クロック0〜3において、入力データID#0〜#3(シャッフル前データBS#0〜#3)が入力される。これに応じて、ライト 2−D GAG210は、シャッフル回路用制御情報BA#0〜#3を出力する。このシャッフル回路用制御情報BA#0〜#3は、前述のとおり、各M:1 セレクタ310#0〜#(M−1)がシャッフル回路300#1に入力されたシャッフル前データBS#0〜#3の内のどれを選択するかを指示する。
シャッフル回路300は、シャッフル回路用制御情報BA#0〜#3に基づいて、メモリ入力データMI#0〜#3(シャッフル後データAS#0〜#3)を出力する。
次に、ライト 2−D GAG210は、メモリ入力用ワードアドレスIWA#0〜#3をメモリ400#0〜#3に出力する。このメモリ入力用ワードアドレスIWA#0〜#3は、前述のとおり、シャッフル後データAS#0〜#3をメモリ400#0〜#3のどのワードに格納するかを指示する。メモリ400#0〜#3は、メモリ入力用ワードアドレスIWA#0〜#3に基づいて、シャッフル後データAS#0〜#3を格納する。
次に、データ出力側の動作を説明する。
図8は、データ出力側(リード 2−D GAG220、シャッフル回路300#2及びメモリ400#0〜#3)の動作を示すタイムチャートである。図8を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。
まず、上述の入力側の動作によって、16個の全ての入力データがメモリに書き込まれると、リード 2−D GAG220は、メモリ出力用ワードアドレスOWA#0〜#3を出力する。このメモリ出力用ワードアドレスOWA#0〜#3は前述のとおり、シャッフル前データBS#0〜#3をメモリ400#0〜#3のどのワードから読み出すかを指示する。メモリ400#0〜#3は、メモリ出力用ワードアドレスOWA#0〜#3に基づいて、シャッフル前データBS#0〜#3(MO#0〜#3)を出力する
次に、リード 2−D GAG220は、シャッフル回路用制御情報BA#0〜#3を出力する。これらに基づいて、シャッフル回路300#2は、上述のシャッフル回路300#1と同様に動作し、出力データOD#0〜#3(シャッフル後データAS#0〜#3)を出力する。
尚、本実施形態においては前述のような前提であると仮定したが、本実施形態で示す機能と同等のものが実現できる場合、これに限る必要はない。例えば、GAG204は、GAG用の命令メモリ203に対して、GAG制御情報205を読み出す位置を示す情報を入力し、動作開始時にその位置からGAG制御情報205を読み出すようにしてもよい。
上述した本実施形態における効果は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、ライト 2−D GAG210及びシャッフル回路300#1が、同時に入力された入力パターン配列の複数ワードの入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、リード 2−D GAG220及びシャッフル回路300#2が、複数のメモリ400から同時に出力する複数の出力データそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。
[第2の実施の形態]
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
図9は、本発明の第2の実施形態の構成を示すブロック図である。
第2の実施形態は、第1の実施形態の要素に加えて、GAG制御情報205を生成するGAG制御情報自動生成部500を有する。尚、データ保持出力回路100とGAG制御情報自動生成部500とは、併せてメモリ制御装置とも呼ばれる。
GAG制御情報自動生成部500は、データ保持出力回路100のスループットを最大にするGAG制御情報205を生成する。
このデータ保持出力回路100のスループットは、全てのメモリ400が常に出力データを出力している状態の時に最大である。同時に読み出す出力データが全て別々のメモリ400に格納されている場合に、全てのメモリ400は、常に出力データを出力する。
従って、ライト 2−D GAG210は、シャッフル回路用制御情報BAを生成する。そのシャッフル回路用制御情報BAは、出力時に同時にメモリ400から出力する出力データODとなる、入力データIDを別々のメモリ400に分散させるように、シャッフル回路300#1を動作させる。同時に、ライト 2−D GAG210は、更にメモリ400に書き込むためのメモリ入力用ワードアドレスを生成する。
また、リード 2−D GAG220は、同時に出力する出力データOD#0〜#(M−1)を、適切なメモリ400から読み出すためのメモリ出力用ワードアドレスを生成する。同時に、リード 2−D GAG220は、読み出した出力データOD#0〜#(M−1)を並べ替えるシャッフル回路300#2へのシャッフル回路用制御情報BAを生成する。
GAG制御情報自動生成部500は、上述のようなライト 2−D GAG210及びリード 2−D GAG220用の、GAG制御情報205を自動生成する。
GAG制御情報自動生成部500は、各要素に一意な値を割り当てられた入力データ配列700と出力データの各要素の配列を示す出力データ配列701とを入力として、ライト 2−D GAG制御情報205を自動生成する。入力データ配列700は、行を時間サイクル、列をポートとして入力データの配列を示す。出力データ配列701は、入力データ配列700を上述のデータ保持出力回路100によって並び替えた後の出力データの各要素の配列を示す。
次に、実施形態1において図1を用いて説明したデータ保持出力回路100内のライト 2−D GAG210用に、GAG制御情報205を生成するGAG制御情報自動生成部500の動作の概要を説明する。
GAG制御情報自動生成部500は、図10に示すような入力データ配列700と図11に示すような出力データ配列701とに基づいて、ライト 2−D GAG210用の命令メモリの内容を生成する。
図10は、入力データ配列の例を示す図である。図11は、出力データ配列の例を示す図である。図10及び図11を参照すると、入力データ配列700及び出力データ配列701は、それぞれN行M列の配列であり、それぞれサイズN×Mの行列で表される。但し、Nは、自然数である。入力データ配列700及び出力データ配列701は、データ保持出力回路100に同時に入力及び同時に出力されるデータを列方向に持つ。
入力データ配列700及び出力データ配列701のM列は、シャッフル回路300#1の入力ID#0〜#(M−1)に対応しており、同時刻にデータ保持出力回路100へ入力される入力データを示している。
一方、入力データ配列700及び出力データ配列701のN行は、データ保持出力回路100へ入力されるデータの入力時刻サイクルを表しており、「0」、「1」、「2」、・・・、「N−1」はそれぞれ、1サイクル目入力、2サイクル目入力、3サイクル目入力、・・・、Nサイクル目入力を示している。
また、入力データ配列700の配列内要素は、それぞれ一意のデータが割り振られる。例えば、図10に示す入力データ配列700は、「0」〜「N×(M−1)」の自然数が要素内に格納される様子を示している。
また、図11に示す出力データ配列701の配列内各要素にも、それぞれ一意のデータが割り振られ、更に、それぞれの要素は、入力データ配列700の要素と一対一に対応する。
次に、第2の実施形態の動作について、図を参照して説明する。図12は、本実施形態のGAG制御情報自動生成部500の動作を示すフローチャートである。
図12を参照すると、GAG制御情報自動生成部500は、出力タイミング配列生成ステップS610、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631、書き込み側GAG制御情報生成ステップS632、読み出しアドレス配列生成ステップS640、読み出し側GAG制御情報生成ステップS650を順次実行する。
出力タイミング配列生成ステップS610について、図13、図14を用いて説明する。
出力タイミング配列生成ステップS610において、GAG制御情報自動生成部500は、入力データ配列700と出力データ配列701を走査することにより、入力データ配列700の各要素が出力データ配列701の先頭から何行目で出力されるかを分析する。そして、GAG制御情報自動生成部500は、その分析結果をN行M列の出力タイミング配列timingsに記録する。
図13は、出力タイミング配列生成ステップS610の動作を示す擬似コード(make_timings)のリストである。図13に示す擬似コードにおいて、出力タイミング配列生成ステップS610の入力である入力データ配列700をdata_inで、同じく出力データ配列701をdata_outで示す。また、図13に示す擬似コードにおいて、出力タイミング配列生成ステップS610の出力である出力タイミング配列を、timingsで示す。
まず、GAG制御情報自動生成部500は、図13の6行目で示すように、入力データのN行について、7行目〜14行目までの処理を繰り返す。
更に、GAG制御情報自動生成部500は、7行目で示すように、入力データのrow行目M列について、8行目〜13行目までの処理を適用する。
次に、GAG制御情報自動生成部500は、9行目に示すように、入力データ配列700の要素を1つ取得する。続けて、GAG制御情報自動生成部500は、10行目に示すように、calc_delay関数を呼び出し、取得した要素が出力データ配列701の何行目にあるかを取得する。次に、GAG制御情報自動生成部500は、この結果を、出力タイミング配列timingsのrow行目col列目に設定する。
図14は、図13の10行目のcalc_delay関数の動作を示す擬似コードのリストである。このcalc_delay関数は、入力データ配列700の1つの要素(SRC)と出力データ配列701(data_out)とを引数とし、入力データ配列700の要素が出力データ配列701の何行目に存在するかを調べ、その行数を返す関数である。
まず、GAG制御情報自動生成部500は、図14の3行目で示すように、引数で与えられた出力データ配列701のN行において、4行目〜10行目までの処理を行う。
更に、GAG制御情報自動生成部500は、4行目に示すように、出力データ配列701のrow行目のM列それぞれに対し、5行目〜9行目までの処理を行う。
次に、GAG制御情報自動生成部500は、5行目に示すように、引数で与えられた要素srcと、data_out(出力データ配列701)のrow行目col列目を比較する。そして、これらが一致していた場合、GAG制御情報自動生成部500は、一時変数resultに行番号rowを格納する。一致しなかった場合、GAG制御情報自動生成部500は、何も処理を行わない。最後に、GAG制御情報自動生成部500は、一時変数resultを返し、処理を終了する。
メモリ配置方法決定ステップS620について、図15、図16、図17、図18を用いて説明する。
本ステップにおいて、入力は、入力データ配列700(data_in)及び出力タイミング配列timingsである。また、出力は、メモリ内データ配列data_memである。
メモリ内データ配列data_memは、N行M列の2次元配列であり、入力データをメモリ400に格納した状態を示す。メモリ内データ配列data_memのN行はメモリ400の先頭から数えたワードアドレスを示し、M列はM個のメモリ400の内のどのメモリ400に書き込まれたかを示す。
図15は、メモリ配置方法決定ステップS620の動作を示す擬似コード(shuffle_timings)のリストである。まず、GAG制御情報自動生成部500は、5行目に示すように、initialize_data関数を実行させて、メモリ内データ配列data_memを初期化する。
ここで、initialize_data関数の処理内容を説明する。図16は、initialize_data関数の動作を示す擬似コードのリストである。図16に示すように、GAG制御情報自動生成部500は、data_memの全要素に無効データINVを設定する。
ここで、無効データINVは、入力データ配列700、出力データ配列701、及び出力タイミング配列においては使用されない値である。すなわち、無効データINVが格納されている要素は、有効なデータがまだ何も格納されていない要素であることを意味する。
initialize_data関数実行後、GAG制御情報自動生成部500は、do_shuffle関数を実行する。
ここで、do_shuffle関数の処理内容を説明する。図17は、do_shuffle関数の動作を示す擬似コードのリストである。do_shuffle関数は、引数として、入力データdata_in、出力タイミング配列timings、及びメモリ内データ配列data_memを持つ。
まず、GAG制御情報自動生成部500は、図17の4行目に示すように、M列の要素を持つuse_b配列を用意する。尚、use_b配列の各要素の初期状態は、無効データINVである。
GAG制御情報自動生成部500は、本use_b配列を、あるタイミング、すなわちtimings配列のある要素で指定されるサイクル数目、に出力されるデータをどのメモリに書き込むかを調べる際、既にどの列が使用されているかを示す配列として用いる。
次に、GAG制御情報自動生成部500は、図17の5行目〜14行目に示すように、出力の各サイクルにおいて、出力されるデータのメモリ書き込み方法を調査、決定する。GAG制御情報自動生成部500は、図17の6行目〜13行目に示すように、全行全列を走査し、現在調査しているtimings配列の要素と一致するデータが見つかった場合にsearch_vec_col関数を呼ぶことによって、この調査、決定の処理を行う。
ここで、search_vec_col関数の処理内容を説明する。図18は、search_vec_col関数の動作を示す擬似コードのリストである。search_vec_col関数は引数として、現在調査中のタイミングを示すiと、このタイミングiに一致するデータの位置row及びcolと、use_b配列と、入力データ配列700data_in(入力データ配列700)と、メモリ内データ配列data_memとを持つ。
まず、GAG制御情報自動生成部500は、5行目〜12行目に示すように、配置可能な列が見つかるまで、use_b配列とメモリ内データ配列data_memの走査を行う。この走査中に、メモリ内データ配列data_memに有効なデータがなく、更に、use_b配列の該当列に有効なデータが配置されていない場合、GAG制御情報自動生成部500は、その場所に現在のデータを配置する。
具体的には、GAG制御情報自動生成部500は、入力データ配列700のrow行目col列目の要素を、メモリ内データ配列data_memのrow行目及び見つかった配置可能な列の位置に格納する。また、GAG制御情報自動生成部500は、use_b配列の該当列に1を格納し、その位置に有効なデータが格納されたことを記録する。
次に、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632について、図19〜図24を用いて説明する。
本ステップにおいて、入力は、入力データ配列700(data_in)及びメモリ内データ配列(data_mem)である。GAG制御情報205のBase値について、出力は、シャッフル回路用制御情報生成GAG用のb_addr_c、及びメモリ用ワードアドレス生成GAG用のb_addr_rである。更に、GAG制御情報205のInner Loop Stepについて、出力は、シャッフル回路用制御情報生成GAG用のilp_c、及びメモリ用ワードアドレス生成GAG用のilp_rである。また更に、GAG制御情報205のOuter Loop Stepについて、出力は、シャッフル回路用制御情報生成GAG用のolp_c、及びメモリ用ワードアドレス生成GAG用のolp_rである。また更に、Inner及びOuter LoopのLimit値として、出力は、それぞれilp_n及びolp_nである。尚、各出力は、2次元の配列で表される。
この配列の1次元目は、ループ構造のインデクスを示しており、2次元目はGAG#0〜#(M−1)のインデクスを示している。例えば、Inner Loop Limit ilp_nについて、ilp_n[2][1]は、GAG#1の2番ループ構造のLimit値であることを示す。
図19は、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632の動作を示す擬似コードgen_gag_addのリストである。
図19に示すように、GAG制御情報自動生成部500は、gen_gag_addrにおいて、2つの関数を実行する。1つ目の関数は、mk_addr_map関数である。2つ目の関数は、loop_analyzer関数である。
まず、mk_addr_map関数の処理内容について説明する。mk_addr_map関数は、GAG制御情報自動生成部500において、書き込みアドレス配列生成ステップS631を実現する関数である。mk_addr_map関数は、入力データ配列700とメモリ内データ配列721とを分析し、入力データ配列700に対応するように、GAG204が出力するシャッフル回路用制御情報マップとメモリ用ワードアドレスマップとを生成する。
図20は、mk_addr_map関数の動作を示す擬似コードのリストである。
mk_addr_map関数の入力は、入力データ配列700(data_in)及びメモリ内データ配列(data_mem)であり、出力はメモリ用ワードアドレスマップ(r_addr_map)及びシャッフル回路用制御情報マップ(c_addr_map)である。以後、メモリ用ワードアドレスマップr_addr_map及びシャッフル回路用制御情報マップc_addr_mapを併せて、アドレス配列とも呼ぶ。
ここで、これらの出力はN行M列の2次元配列である。そして、それらの2次元配列の各要素は、入力データ配列700の各要素にそれぞれ対応しており、入力データ配列700の各要素が入力された際に出力するシャッフル回路用制御情報、及びメモリ用ワードアドレスである。
図20に示すように、GAG制御情報自動生成部500は、data_inの全要素に対し、mk_addr_map_subをコールする。
図21は、mk_addr_map_sub関数の動作を示す擬似コードのリストである。図21に示すように、GAG制御情報自動生成部500は、指定された行row、列colのdata_memの要素に対し、data_inの位置を検索する。そして、GAG制御情報自動生成部500は、検出した位置をr_addr_mapとc_addr_mapの行row、列colに記録する。以上により、GAG制御情報自動生成部500は、メモリ用ワードアドレスマップr_addr_map及びシャッフル回路用制御情報マップc_addr_mapを生成する。
次に、loop_analyzer関数の処理内容について説明する。loop_analyzer関数は、GAG制御情報自動生成部500において、書き込み側GAG制御情報生成ステップS632を実現する関数である。loop_analyzer関数は、mk_addr_map関数が生成したシャッフル回路用制御情報マップc_addr_mapとメモリ用ワードアドレスマップr_addr_mapとを分析し、GAG制御情報205を生成する。
図22は、loop_analyzer関数の擬似コードのリストである。
loop_analyzer関数の入力は、r_addr_map及びc_addr_mapである。また、loop_analyzer関数の出力は、まず、メモリ用ワードアドレス生成器202及びシャッフル回路用制御情報生成器201のBaseであるb_addr_r及びb_addr_cを含む。更に、loop_analyzer関数の出力は、Inner Loop Stepのilp_r及びilp_cと、Outer Loop Stepのolp_r及びolp_cとを含む。更に、loop_analyzer関数の出力は、Inner Loop及びOuter LoopのLimit値であるilp_n及びolp_nを含む。
尚、これらの各出力は2次元の配列で表される。これらの配列の1次元目はループ構造のインデクスを示しており、2次元目はGAG#0〜#(M−1)のインデクスを示している。例えば、Inner Loop Limit ilp_nについて、ilp_n[2][1]は、GAG#1の2番ループ構造のLimit値であることを示す。
loop_analyzer関数は、主に3つの処理を含む。
1番目の処理は、図22の7〜10行目に示される、Base値、Limit値、Step値を初期化する初期化ステップである。2番目の処理は、図22の13、14行目に示されるInner Loop分析(iloop_analyze)である。3番目の処理は、図22の15、16行目に示されるOuter Loop分析(oloop_analyze)である。
まず、初期化ステップにおいて、GAG制御情報自動生成部500は、0番ループ構造のbase値、Limit値、Step値に対し、base値をアドレスマップの先頭アドレスで初期化する。更に、GAG制御情報自動生成部500は、Inner Loop Limit値及びStep値をそれぞれ「0」及び「0」で、Outer LoopLimit値及びStep値をそれぞれ「1」及び「0」で初期化する。
初期化が終わると、GAG制御情報自動生成部500は、Inner Loop分析、Outer Loop分析の処理を開始する。
具体的には、GAG制御情報自動生成部500は、アドレスマップの先頭から順にまずInner Loopの分析を開始する。Inner Loopの分析中に、Inner LoopのStep値で表せない要素を検出した場合、GAG制御情報自動生成部500は、次にOuter Loopの分析を行う。
その後、Outer Loopで表せない要素を検出した場合、GAG制御情報自動生成部500は、該当ループ構造の分析を終了し、次のループ構造に移り、アドレスマップを引き続き分析する。
Inner Loopの分析処理iloop_analyzeについて、図23を用いて説明する。図23は、iloop_analyze関数の動作を示す擬似コードのリストである。
本処理においてGAG制御情報自動生成部500は、あるループ構造分析で初めて本処理を実行する場合、Inner Loop Stepであるilp_r、ilp_cのそのループ構造の対応するGAGユニット番号のオフセット値を登録する。これは、アドレスマップ上の、現在分析を行っている行rowと、その前の行row−1の要素の差分をとることにより求めることができる。
ここで、差分が負の値だった場合、GAG制御情報自動生成部500は、メモリ用ワードアドレスならばNを、シャッフル回路用制御情報ならばMを加算することによって正の値に修正する。尚、本処理は、図23の7〜11行目に対応している。
また、10行目のmodify_negative_val関数は、第5引数及び第6引数で与えられた配列の、第1引数及び第2引数で与えられた位置の要素が負の値である場合、それぞれ第3引数、第4引数の値を加算する関数である。例として10行目の場合、ilp_r[lp_n][col]の要素が負の値である場合、ilp_r[lp_n][col]=ilp_r[lp_n][col] + Nとする。また、ilp_c[lp_n][col]の要素が負の値である場合、ilp_c[lp_n][col]=ilp_c[lp_n][col] + Mとする。
次に、本処理の2回目以降において、GAG制御情報自動生成部500は、求めたStepとアドレスマップの現在分析を行っている行の前の行row−1で、アドレスマップの現在分析を行っているrowを表すことができるか否かを分析する。
具体的には、GAG制御情報自動生成部500は、アドレスマップの現在分析を行っているrowとアドレスマップの現在分析を行っている行の前の行row−1の差分をとり、それがStep値と一致するか否かを分析する。一致した場合、GAG制御情報自動生成部500は、Inner LoopのLimit値であるilp_nを1インクリメントする。一致しなかった場合、GAG制御情報自動生成部500は、fin_flag=1とし、Inner Loop分析を終了する。尚、以上の処理は、図23の13〜18行目に対応している。
Outer Loopの分析処理oloop_analyzeについて、図24を用いて説明する。図24は、loop_analyzer内のoloop_analyze関数の動作を示す擬似コードのリストである。
まず、あるループ構造分析で初めて本oloop_analyzを実行する場合、GAG制御情報自動生成部500は、Outer Loop Stepであるolp_r、olp_cの該当ループ構造の該当GAGユニット番号に、オフセット値を登録する。GAG制御情報自動生成部500は、アドレスマップの現在分析を行っているrowの要素と、このループ構造のベースアドレス値の差分をとることにより、オフセット値を求める。
尚、差分が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正の値に修正する。また、GAG制御情報自動生成部500は、現在分析を行っている行を一時保存領域buf_posに保存する。これは、Outer Loop構造が成り立たないことが判明した場合、分析を開始した行に戻って、次のループ構造の分析を開始するためである。
尚、以上の処理は図24の7行から12行に対応している。
以上の処理を終了したら、GAG制御情報自動生成部500は、st_flag=1とし、Outer Loop構造が成り立つか否かの分析に移る。
次に、Outer Loop構造が成り立つか否かの分析方法について説明する。
GAG制御情報自動生成部500は、Outer Loop構造が成り立つか否かの分析を、既に分析したInner Loop構造が現在分析を行っているアドレスマップの区間に適用できるか否かを分析することにより行う。
具体的には、GAG制御情報自動生成部500は、アドレスマップの現在分析を行っている行rowの要素とアドレスマップの現在分析を行っている行の前の行row−1の要素との差分を求め、その結果が既に求めたInner LoopのStep値と一致するか否かを分析する。
尚、差分結果が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正の値に修正する。一致した場合、GAG制御情報自動生成部500は、一時変数tmp_lpを「1」インクリメントする。
次に、tmp_lpがInner Loop構造のLimit値と同値になった場合、GAG制御情報自動生成部500は、Outer Loop構造が成立したと判断し、Outer LoopのLimit値olp_nを「1」インクリメントする。更に、GAG制御情報自動生成部500は、st_flag=2とし、その先もOuter Loop構造が成り立つか否かの分析に移行する。
一方、tmp_lpがInner LoopのLimit値と同値になる前に、Step値と一致しないアドレスマップの構造が出現した場合には、GAG制御情報自動生成部500は、Outer Loopが成り立たなかったと判定し、Outer Loop構造の分析を終了し、次のループ構造の分析に移行する。ここで、GAG制御情報自動生成部500は、アドレスマップの分析位置rowをOuter Loop構造分析開始時点で一時保存していたbuf_posの値で更新する。
尚、以上の処理は、図24の25行から37行に対応している。
Outer Loop構造が成り立ち、次のOuter Loop構造が成り立つか否かの分析を開始する際、すなわち、st_flag=2の際には、GAG制御情報自動生成部500は、新規Outer Loop構造のオフセット値が既に求めたolp_r、olp_cに一致するか否かを分析する。
具体的には、GAG制御情報自動生成部500は、現在の行とベースアドレスの差分を求める。次に、GAG制御情報自動生成部500は、その差分を求めた結果が、既に求めたOuter Loop Stepであるolp_r、olp_cに、Outer Loop構造数olp_nをかけた値と等しいか否かを分析する。尚、差分結果が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正に修正する。
等しい場合、GAG制御情報自動生成部500は、新しいOuter Loop構造の分析が可能であると判断し、st_flag=1とし、そのOuter Loop構造が成り立つか否かの分析を開始する。
一方、等しくなかった場合、GAG制御情報自動生成部500は、Outer Loop構造の分析を終了する。
尚、以上の処理は、図24の14行から25行に対応している。
上述の処理により、GAG制御情報自動生成部500は、メモリ用ワードアドレス生成器202、及びシャッフル回路用制御情報生成器201のGAG制御情報205を生成する。命令メモリ203は、これらの生成された各GAG204に対応するGAG制御情報205を格納する。そして、各GAG204は、命令メモリ203に格納されたGAG制御情報205に基づいて動作し、入力データに対して、適切なアドレスを生成する。
次に、読み出しアドレス配列生成ステップS640について、図25を用いて説明する。
図25は、読み出しアドレス配列生成ステップS640の動作を示す擬似コード(make_rd_addr)のリストである。読み出しアドレス配列生成ステップS640は、メモリ内データ配列721(data_mem)及び出力データ配列701(data_out)を入力とする。また、読み出しアドレス配列生成ステップS640は、メモリ用ワードアドレスを示す読み出しアドレス配列(read_r_addr)及びシャッフル回路用制御情報を示す読み出しアドレス配列(read_c_addr)を出力とする。
GAG制御情報自動生成部500は、まず、6行から14行に示すように、read_r_addrの生成を行う。
具体的には、GAG制御情報自動生成部500は、data_out(出力データ配列701)の各行、各列について、各要素のデータをそれぞれ、data_mem(メモリ内データ配列721)から検索する。GAG制御情報自動生成部500は、検索を、9行目のfind_data関数で行う。
このfind_data関数は第1引数で与えられたデータを、第2引数で与えられた2次元配列から検索し、見つかった行、列の位置をそれぞれ第3、第4引数で与えられた変数に格納して返す関数である。
次に、GAG制御情報自動生成部500は、検索して得られた行、列(f_row、f_col)について、11行目に示すようにアドレスを格納する。また、GAG制御情報自動生成部500は、ここで本アドレスによって読み出されるデータを12行目に示すように、mem_out_arrayに一時的に保存する。
次に、GAG制御情報自動生成部500は、17行から24行に示すように、シャッフル回路用制御情報を示す読み出しアドレス配列(read_c_addr)を生成する。具体的には、GAG制御情報自動生成部500は、data_out(出力データ配列701)の各行において、メモリ400から出力されたデータの内どのメモリ400から出力された値を取得すればよいかをfind_data関数で検索する。そして、GAG制御情報自動生成部500は、その検索した結果(f_col)を22行目に示すように保存する。これによって、GAG制御情報自動生成部500は、シャッフル回路用制御情報を示す読み出しアドレス配列(read_c_addr)を生成する。
次に、読み出し側GAG制御情報生成ステップS650について説明する。
読み出し側GAG制御情報生成ステップS650において、GAG制御情報自動生成部500は、ステップS640で生成された読み出しアドレス配列に基づいて、リード 2−D GAG用のGAG制御情報205を生成する。具体的には、GAG制御情報自動生成部500は、読み出しアドレス配列を用いて、前述した書き込み側GAG制御情報生成ステップS632と同様の処理を実行する。読み出し側GAG制御情報生成ステップS650の処理は、書き込み側GAG制御情報生成ステップS632と同等であるため、説明を省略する。
次に、入力データ内に、出力データとして出力されない、不要なデータが存在する場合について説明する。
例えば、GAG制御情報自動生成部500は、メモリ配置方法決定ステップS620において、一旦その不要なデータの配置を保留する。そして、GAG制御情報自動生成部500は、他のデータの配置を決定した後で、その不要なデータをメモリ内の空いている場所に保存するようにして出力しないようにする。
また、GAG制御情報自動生成部500は、不要なデータの位置である、行row、列colと同じインデクスを持つメモリの位置に無効データであることを示すデータを格納しておくようにしてもよい。この場合、GAG制御情報自動生成部500は、書き込み側GAG制御情報生成時に、Inner LoopやOuter Loopが成り立ちやすいアドレスを挿入するようにしてもよい。
尚、本実施形態において、シャッフル回路用制御情報とメモリ用ワードアドレスとにおけるInner Loop及びOuter LoopのLimit値は同じであるものとして説明した。しかし、シャッフル回路用制御情報及びメモリ用ワードアドレスにおいて、Limit値が異なるような場合がある。この場合、シャッフル回路用制御情報及びメモリ用ワードアドレスの内のどちらか一方だけにおいて、Inner Loop或いはOuter Loopが成り立たない状態が発生する。上述の説明において、GAG制御情報自動生成部500は、そのような状態が発生した場合、そのループ構造の分析を終了し、新たなループ構造の分析に移る。
ここで、例えば、GAG制御情報自動生成部500は、シャッフル回路用制御情報及びメモリ用ワードアドレスについてそれぞれ別次元として扱うようにし、個別にループ構造の分析を実行するようにしてもよい。
次に、本実施形態における動作について、図26〜図31を参照し、具体的な値を示して更に詳細に説明する。
説明の簡略化のために、前提として、メモリ内データ配列721の行数(メモリ400のワードアドレス)Nを「4」であるとする。また、メモリ内データ配列721の列数(メモリ400の数)Mを、図6に示すメモリ400#0〜#3に基づいて、「4」であるとする。
まず、図26を参照して、出力タイミング配列711生成ステップS610の具体的な動作について説明する。図26は、入力データ配列702及び出力データ配列703と出力タイミング配列711との関係の例を示した図である。
図26を参照すると、入力データ配列702の各要素に対し、出力データ配列703の先頭から何サイクル目で出力されるか、すなわち、何行目に位置しているか、が出力タイミング配列711に示されていることが分かる。例えば、四角及び矢印で示した要素Aは、出力データの1行目に位置しているので、出力タイミング配列711に1と記録する。また例えば、四角及び矢印で示した要素Bは、出力データの2行目に位置しているので、出力タイミング配列711に2と記録する。
次に、図27を参照して、メモリ配置方法決定ステップS620の具体的な動作について説明する。図27は、メモリ配置方法決定ステップS620が、メモリ内データ配列721を生成するプロセスの一部を示す図である。
図27に示すように、GAG制御情報自動生成部500は、入力データ配列702と出力データ配列703とから生成した出力タイミング配列711を用い、メモリ内データ配列721を生成する。尚、メモリ配置後タイミング配列722は、メモリ内データ配列721の各要素が出力データ配列703の先頭から何サイクル目で出力されるか、即ち、出力データ配列703の何行目に位置しているか、を示す。このメモリ配置後タイミング配列722は、メモリ内データ配列721の生成に伴って決定されて行く。
処理を開始すると、GAG制御情報自動生成部500は、図27のプロセスP621において、まず、出力タイミング配列711の1列目について分析を開始する。すると、GAG制御情報自動生成部500は、1列目に記録された要素は全て1なので、全要素を互いに排他的に、異なる列に配置する必要があることを検出する。そこで、GAG制御情報自動生成部500は、1行目は1列目に、2行目は2列目に、3行目は3列目、4行目は4列目というように、各要素をずらして配置する。こうして、GAG制御情報自動生成部500は、図27のプロセスP622に示すような配置が決定する。
次に、GAG制御情報自動生成部500は、プロセスP622において、出力タイミング配列711の2列目の分析を行う。すると、ここでもGAG制御情報自動生成部500は、全要素が「2」であり同じタイミングで出力することが要求されるため、全要素を互いに排他的に、異なる列に配置する必要があることを検出する。そこで、GAG制御情報自動生成部500は、1行目は2列目に配置し、2行目は3列目に、というように、各要素をずらして配置する。GAG制御情報自動生成部500は、同様の処理を繰り返し、最終的に図27のプロセスP623に示すように、メモリ内データ配列721を生成する。
次に、図28〜図30を参照して、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632の具体的な動作について説明する。
まず、図28を参照して、GAG制御情報自動生成部500が、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップ(書き込みアドレス配列)を生成する、書き込みアドレス配列生成ステップ631の具体例について説明する。
図28は、入力データ配列702及びメモリ内データ配列721と、書き込みアドレス配列731との関係の例を示す図である。
図28において、書き込みアドレス配列731は、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップの対応する各要素を「メモリ用ワードアドレス、シャッフル回路用制御情報」という形式で持つ。書き込みアドレス配列731のメモリ用ワードアドレス及びシャッフル回路用制御情報は、入力データ配列702の各要素が入力された際にライト 2−D GAG210のGAG204が生成する、メモリ入力用ワードアドレス及びシャッフル回路用制御情報である。
図28に示す書き込みアドレス配列731において、例えば入力データ配列702の要素Aが入力された場合、メモリ用ワードアドレスはAを1行目に書き込むことを示し、シャッフル回路用制御情報は1列目のAをそのまま選択することを示す。
また例えば、図28に示すように、入力データ配列702の要素Fの位置と同位置のメモリ内データ配列721の位置には、要素Eが書き込まれる。そこで、入力データ配列702の要素Fの位置と同位置の書き込みアドレス配列731の位置の、メモリ用ワードアドレスは、入力データ配列702のEが先頭から2行目なので「2」である。また、シャッフル回路用制御情報は、Eが1列目なので「1」である。従って、GAG制御情報自動生成部500は、入力データ配列702の要素Fの位置と同位置の書き込みアドレス配列731の位置の要素「2,1」を生成する。
このようにして、GAG制御情報自動生成部500は、入力データ配列702の全要素を分析し、図28に示す書き込みアドレス配列731を生成する。
次に、図29を参照して、書き込み側GAG制御情報生成ステップS632のループ構造分析の具体例について説明する。
図29は、本実施形態におけるループ構造分析のプロセスの一部を示した図である。図29は、図28に示すように生成されたメモリ用ワードアドレス及びシャッフル回路用制御情報に対し、どのようにBase、Inner LoopのLimit値、Step値が生成されるかを示す。尚、以下の説明は、1列目についての説明である。
まず、図29のプロセスP631において、GAG制御情報自動生成部500は、1行目の分析にて、base値を設定する。ここでは、GAG制御情報自動生成部500は、1列目、1行目の要素(1,1)に基づいて、baseを(1,1)と設定する。
また、図には示していないが、GAG制御情報自動生成部500は、Inner LoopのLimit値及びStep値と、Outer LoopのLimit値及びStep値を、ここで初期化する。
次に、図29のプロセスP632は、2行目の分析の様子を示している。ここでは、GAG制御情報自動生成部500は、現在の行と前の行との差分をInner LoopのStep値として算出する。尚、差分が負の値になった場合は、列数(本例では、「4」)を加算する。プロセスP632で、算出されるStep値は、(1,3)である。
次に、図29のプロセスP633に示すように、GAG制御情報自動生成部500は、3行目の分析に移る。3行目の分析では、GAG制御情報自動生成部500は、現在の行を、前の行とInner LoopのStep値とを用いて表すことができるか否かを分析する。具体的には、GAG制御情報自動生成部500は、現在の行と前の行との差分がStep値と一致するか否かを判定する。3行目と2行目との差分は(1,−1)であり、負の値には列の最大数である4を加算するので、プロセスP633において算出される差分結果は、(1,3)である。従って、Step値と差分結果とが同値であるため、GAG制御情報自動生成部500は、Inner LoopのLimit値を+1インクリメントする。
最後に、図29のプロセスP634に示すように、GAG制御情報自動生成部500は、4行目の分析を行う。4行目においても3行目と同様に、現在の行と前の行との差分結果がStep値と一致するため、GAG制御情報自動生成部500は、Limit値を「1」加算する。
結果として、本例において、GAG制御情報自動生成部500は、Base=(1,1)、Inner Loop Limit=3、Inner Loop Step=(1,3)、Outer Loop Limit=0及びOuter Loop Step=(0,0)を生成する。
次に、図30を参照して、書き込み側GAG制御情報生成ステップS632のループ構造分析の他の具体例について説明する。図30は、本実施形態におけるループ構造分析の他のプロセスの例の一部を示した図である。図30は、GAG制御情報自動生成部500がOuter Loopを分析する場合の例を示す。尚、図30も図29と同様に、1列目を例として説明を行う。
まず、プロセスP641に示すように、GAG制御情報自動生成部500は、Base値を(1,1)と設定する。次にプロセスP642に示すように、GAG制御情報自動生成部500は、2行目を分析してInner LoopのStep値を(1,3)と設定する。
次に、プロセスP643に示すように、GAG制御情報自動生成部500は、3行目を分析して、現在の行と前の行との差分結果として、(4,2)を算出する。この差分結果は、Inner LoopのStep値とは一致しない。そこで、GAG制御情報自動生成部500は、現在の行と最初にInner Loopを開始した行との差分(5,1)を算出し、Outer LoopのStep値を(5,1)と設定する。続けて、GAG制御情報自動生成部500は、Outer Loopの分析を開始する。
すると、プロセスP644に示すように、GAG制御情報自動生成部500は、4行目を分析して、現在の行と前の行との差分結果(1,3)を算出する。この差分結果は、先に求めたInner LoopのStep値と一致する。更に、Outer LoopのStep値からのInner Loopの構造は、先に求めたInner Loopの構造と一致する。従って、GAG制御情報自動生成部500は、Outer Loopが成り立つと判定し、Outer Loop Limitを「1」インクリメントする。
結果として、本例においてGAG制御情報自動生成部500は、Base=(1,1)、Inner Loop Limit=1、Inner Loop Step = (1,3)、Outer Loop Limit=2及びOuter Loop Step=(5,1)を生成する。
次に、図31を参照して、読み出しアドレス配列生成ステップS640を具体的に説明する。
図31は、メモリ内データ配列721及び出力データ配列703と、リード 2−D GAG用の読み出しアドレス配列741との関係の例を示す図である。図31において、読み出しアドレス配列741は、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップの対応する各要素を、1オリジンで、「メモリ用ワードアドレス、シャッフル回路用制御情報」の形式で持つ。読み出しアドレス配列741のメモリ用ワードアドレス及びシャッフル回路用制御情報は、出力データ配列703の各要素を出力する際に、リード 2−D GAG220のGAG204が生成する、メモリ出力用ワードアドレス及びシャッフル回路用制御情報である。
まず、GAG制御情報自動生成部500は、出力データ配列703を行毎に分析し、該当行の出力データと一致するデータをメモリ内データ配列721から探す。
次に、GAG制御情報自動生成部500は、一致するデータを検出した行位置を、読み出しアドレス配列741の出力データ配列703と対応した行に、メモリワード用アドレスとして記録する。
更に、GAG制御情報自動生成部500は、そのアドレスを用いて読み出されるデータと、出力データ配列703を比較し、同様の並びとなるように、シャッフル回路用制御情報を生成する。
例えば、GAG制御情報自動生成部500は、読み出しアドレス配列741の2行目の要素を以下のように生成する。出力データ配列703の2行目に存在するデータは、B、F、J、Nである。GAG制御情報自動生成部500は、これらのデータを、メモリ内データ配列721の1、2、3、4列目のそれぞれ4、1、2、3行目に検出する。
このとき、メモリ内データ配列721の1、2、3、4列目のデータは、それぞれN、B、F、Jである。そこで、GAG制御情報自動生成部500は、シャッフル回路300用に、これらのデータを出力データ配列703にあるように並べ替える制御情報を生成する。
具体的には、GAG制御情報自動生成部500は、シャッフル回路300#2が、OD#0,1,2,3にB、F、J、Nというデータを出力するように、制御情報を生成する。すなわち、GAG制御情報自動生成部500は、リード 2−D GAG220がシャッフル回路用制御情報BA#0〜3に、それぞれ2、3、4、1を出力するように、制御情報を生成する。
GAG制御情報自動生成部500は、この値を、読み出しアドレス配列741のシャッフル回路用制御情報に記録する。
尚、読み出し側GAG制御情報生成ステップS650の具体的な動作については、書き込み側GAG制御情報生成ステップS632と同様であるため、説明を省略する。
尚、本実施形態においては、ループ数をInner LoopとOuter Loopの2つとしたが、これに限る必要はなく、例えば、1つであってもよいし、3つ以上であってもよい。
上述した本実施形態における効果は、第1の実施例の効果に加えて、2次元GAGを制御するGAG制御情報205を、自動的に生成することを可能にする点である。
その理由は、GAG制御情報自動生成部500が、入力データ配列700と出力データ配列701とを分析してメモリ内データ配列721を生成し、更に入力データ配列700と出力データ配列701とメモリ内データ配列721とに基づいてGAG制御情報205を生成するようにしたからである。
[第3の実施の形態]
次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
前述の第1の実施形態のデータ保持出力回路100は、メモリワード用アドレスに基づいてメモリ400から読み出されたメモリ出力データを、シャッフル回路用制御情報に基づいてシャッフル回路300#2が、どの出力ポート312に出力するかを決定するものであった。
これに対し、本実施形態のデータ保持出力回路は、メモリ用ワードアドレスをシャッフル回路用制御情報が示すメモリ400に入力してメモリ出力データを読み出す。そして、本実施形態のデータ保持出力回路は、読み出したメモリ出力データをそのメモリ出力データのメモリ用ワードアドレスを生成したGAG204に対応する(サッフィクスが同じ)出力ポート312に出力する。
図32は、本発明の第3の実施形態の構成を示すブロック図である。図32を参照すると、本発明の第3の実施形態に係るデータ保持出力回路130は、第1の実施形態のデータ保持出力回路100に比べて、ワードシャッフル機構330及びデータシャッフル機構340を含む。
また、本実施形態のリード 2−D GAG220は、メモリ出力用ワードアドレスOWA#0〜#3に替えて、TWA#0〜#3を出力する。TWA#0〜#3は、各TWA#0〜#3を出力するGAG204に対応する(サッフィクスが同じ)出力ポート312に出力するデータのアドレスである。
ワードシャッフル機構330は、各メモリ400#0〜#3に、TWA#0〜#3をシャッフル回路用制御情報BA#0〜#3に基づいて並べ替えた、メモリ出力用ワードアドレスOWA#0〜#3を、出力する。
データシャッフル機構340は、メモリ出力データMO#0〜#3をシャッフル回路用制御情報BA#0〜#3に基づいて、その各メモリ出力データ#0〜#3のメモリ用ワードアドレスを生成したGAG204に対応する(サッフィクスが同じ)出力ポート312に出力する。
本実施形態の動作について、図32〜図34を参照して詳細に説明する。
図33は、本実施形態における、メモリ内データ配列721及び出力データ配列703と、読み出しアドレス配列651との関係の例を示す図である。
図34は、本実施形態におけるデータ出力側の動作を示すタイムチャートである。図34を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。
尚、本実施形態においては、メモリ出力用ワードアドレスOWA#0〜#3は、TWA#0〜#3及びシャッフル回路用制御情報BA#0〜#3がワードシャッフル機構330に入力されてから1サイクル後に出力されるものとする。
また、出力データOD#0〜#3は、メモリ出力データMO#0〜#3がデータシャッフル機構340に入力されてから、1サイクル後に出力されるものとする。
また、シャッフル回路用制御情報BA#0〜#3は、データシャッフル機構340に入力された後遅延され、MO#0〜#3からの出力1サイクル毎に、シャッフル回路用制御情報BA#0〜#3が入力された順に内部で使用されるものと仮定した。
本実施例においては、まず、リード 2−D GAG220より生成されたTWA#0〜3は、同じくリード 2−D GAG220から出力されたシャッフル回路用制御情報BA#0〜3によって並べなおされる。
例として、2サイクル目を見ると、TWA#0〜3は1、2、3、4と入力され、シャッフル回路用制御情報BA#0〜3は2、3、4、1と入力される。この結果、3サイクル目のメモリ出力用ワードアドレスOWA#0〜#3へのアドレスが示すように、TWA#0〜3はメモリ400#0〜3へはそれぞれ、3、4、1、2と入力されるように並べなおされる。
これは、各TWAを同番号のシャッフル回路用制御情報BAが示す番号に遷移させることにより実現される。
出力データMO#0〜3は、リード 2−D GAG220が生成したシャッフル回路用制御情報BA#0〜3をデータシャッフル機構340内部で遅延させた信号によって再度並びなおされて出力される。
例として、4サイクル目にメモリ400#0〜#3から出力されたK、O、C、Gデータ列について説明する。
このデータ列は、先頭データが入力されてから2サイクル後に入力されたデータであるので、本データに適用されるシャッフル回路用制御情報BA#0〜#3は先頭から2サイクル後に入力される制御情報であり、具体的にはシャッフル回路用制御情報BA#0〜3はそれぞれ3、4、1、2となっているものである。
ここで、メモリ400#0〜#3から出力されたメモリ出力データMO#0〜#3は、シャッフル回路用制御情報BA#0〜3それぞれが示すポートへと遷移される。よって出力データOD#0〜#3の並びは、C、G、K、Oとなり、これらがデータ保持出力回路130から出力される。
上述した本実施形態における効果は、第1の実施形態と同様に、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、ライト 2−D GAG210及びシャッフル回路300#1が、同時に入力された入力パターン配列の複数ワードの入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、リード 2−D GAG220、ワードシャッフル機構330お呼びデータシャッフル機構340が、複数のメモリ400から同時に出力する複数の出力データそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。
[第4の実施形態]
次に、本発明の第4の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
図35は、本発明の第4の実施形態の構成を示すブロック図である。図35を参照すると、本実施形態に係るメモリ制御装置140は、書込アドレス生成部2124、読出アドレス生成部2224、入力データ選択制御部2114、出力データ選択制御部2214、入力データ選択部3101及び出力データ選択部3102とを含む。
メモリ制御装置140は、複数のメモリ(図示しない)へのデータの書き込み、及び複数のメモリからのデータの読み出し、を制御する。
書込アドレス生成部2124は、GAG制御情報205に基づいて、前述の複数のメモリそれぞれに対応する書き込みアドレスを出力する。書込アドレス生成部2124は、第1の実施形態のライト 2−D GAG210のメモリ用ワードアドレス生成器202のGAG204と同等の構成要素である。
GAG制御情報205は、例えば、図37に示すGAG制御情報931のように、ベースアドレスと、アドレスの増分値であるステップ数と、ベースアドレスに対してステップ数を順次加算してアドレスを生成する回数とを含むループ構造を、1つ以上含む。GAG制御情報205は、入力データ配列と出力データ配列とに基づいて生成された情報である。ここで、入力データ配列は、前述の複数のメモリへ同時に書き込む複数ワードの入力データの配列を指定する配列である。また、出力データ配列は、前述の複数のメモリから同時に読み出す複数ワードの出力データの配列を指定する配列である。
読出アドレス生成部2224は、GAG制御情報205に基づいて、前述の複数のメモリそれぞれに対応する読み出しアドレスを出力する。読出アドレス生成部2224は、第1の実施形態のリード 2−D GAG220のメモリ用ワードアドレス生成器202のGAG204と同等の構成要素である。
入力データ選択制御部2114は、GAG制御情報205に基づいて、入力データ選択部用制御情報(ライト側シャッフル回路用制御情報に対応)を出力する。ここで、入力データ選択部用制御情報は、前述の複数のメモリそれぞれに書き込む入力データのワードを指定する情報である。入力データ選択制御部2114は、第1の実施形態のライト 2−D GAG210のシャッフル回路用制御情報生成器201のGAG204と同等の構成要素である。
出力データ選択制御部2214は、GAG制御情報205に基づいて、出力データ選択部用制御情報(リード側シャッフル回路用制御情報に対応)を出力する。ここで、出力データ選択部用制御情報は、前述の複数のメモリから読み出した複数ワードのデータの内の各ワードを排他的に指定する。出力データ選択制御部2214は、第1の実施形態のリード 2−D GAG220のシャッフル回路用制御情報生成器201のGAG204と同等の構成要素である。
入力データ選択部3101は、入力データ選択制御部2114が出力する入力データ選択部用制御情報に基づいて、前述の入力データ配列の入力データの内の各ワードを排他的に選択し、出力する。入力データ選択部3101は、第1の実施形態のシャッフル回路300#1と同等の構成要素である。
尚、入力データ選択部用制御情報は、入力データ選択部3101に、出力データ選択部3102が同時に読み出す複数ワードのデータのそれぞれのワードを、前述の複数のメモリに排他的に格納するように、選択させる情報である。
出力データ選択部3102は、前述の読み出しアドレスに対応して前述の複数のメモリそれぞれから同時に読み出された複数ワードのデータを受け取る。そして、出力データ選択部3102は、前述の出力データ選択部用制御情報に基づいて、受け取った複数ワードのデータの内の各ワードを排他的に選択し、前述の出力データ配列の複数ワードの出力データを出力する。出力データ選択部3102は、第1の実施形態のシャッフル回路300#2と同等の構成要素である。
上述した本実施形態における効果は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、書込アドレス生成部2124、入力データ選択制御部2114及び入力データ選択部3101が、入力パターン配列の入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、読出アドレス生成部2224、出力データ選択制御部2214及び出力データ選択部3102が、複数のメモリから同時に読み出したデータそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。
[第5の実施の形態]
次に、本発明の第5の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
既に説明したように、図6に示すリード 2−D GAG220は、全てのメモリ400から同時にデータを読み出して全ての出力ポート312から同時に出力を開始するように、メモリ出力用ワードアドレスOWA#0〜#3及びシャッフル回路用制御情報BA#0〜#3を出力する。
しかし、実際の使用においては、メモリ400からのデータの読み出しを開始するタイミング、即ち出力ポート312から出力データOD#0〜#3それぞれの出力を開始するサイクル、が異なる場合がある。
図39は、メモリ400毎に出力を開始するタイミングが異なる出力データ配列763の例を示す図である。
図39に示すように、出力データ配列の各列は出力ポート312#0〜#3に対応し、出力データ配列の各行はサイクル0〜6に対応する。
図39に示すように、出力データ配列763は、サイクル0において、出力ポート312#0から、「A」のインデックスが割り当てられた出力データOD#0が出力されることを示す。尚、出力ポート312#0は、出力データOD#0を出力する出力ポート312である。以下の、出力ポート312#1〜#3についても同様である。
また、出力データ配列763は、サイクル0において、出力ポート312#1〜#3から、出力データOD#1〜#3が出力されないことを示す。尚、出力データ配列763において、出力データOD#1〜#3が出力されない要素は、「Z」で示している。
また、出力データ配列763は、サイクル1において、出力ポート312#0及び#1それぞれから、「B」及び「E」のインデックスそれぞれが割り当てられた出力データOD#0及び#1それぞれが出力されることを示す。また、出力データ配列763は、サイクル1において、出力ポート312#2及び#3それぞれから、出力データOD#2及び#3が出力されないことを示す。
以後も同様であり、例えば、出力データ配列763は、サイクル6において、出力ポート312#0〜#2からは、既に並べ替えられたデータの出力が完了しているために、出力データOD#〜#2が出力されないことを示す。また、出力データ配列763は、サイクル6において、出力ポート312#3から、「P」のインデックスが割り当てられた出力データOD#3が出力されることを示す。
例えば、複数の図4に示す入力データ配列702から出力データ配列763へのデータの並べ替えを連続して実行する場合が考えられる。このような場合、先行する並べ替え処理においてメモリ400からのデータの出力が完了していない時点で、次の並べ替え処理が開始される。このような場合、先行の並べ替え処理を終了していない出力データODを記憶するメモリ400と、それに続く後続の並べ替え処理を開始している出力データODを記憶するメモリ400とが、同一サイクルにおいて、同一メモリ400にならないような制御が求められる。
本実施形態は、以上説明したような、メモリ400からの読み出し開始タイミングが異なるような場合に対応する、GAG制御情報自動生成部とデータ保持出力回路との実施形態を示す。
図40は、本実施形態の構成を示すブロック図である。
図40に示すように、第5の実施形態は、第2の実施形態に比べて、GAG制御情報自動生成部550に替えてGAG制御情報自動生成部560を、データ保持出力回路100に替えてデータ保持出力回路160を有する点が異なる。
まず、データ保持出力回路160について説明する。
図41は、本実施形態のデータ保持出力回路160の構成を示すブロック図である。
図41に示すようにデータ保持出力回路160は、図6に示すデータ保持出力回路100に比べて、タイミング生成部260を更に含む点が異なる。また、データ保持出力回路160は、図6に示すデータ保持出力回路100に比べて、リード 2−D GAG220に替えて、リード 2−D GAG270を含む点が異なる。また、命令メモリ203は、GAG制御情報205に替えて、GAG制御情報275を格納する点が異なる。
図42は、リード 2−D GAG270の構成を示すブロック図である。リード 2−D GAG270は、図3に示す2−D GAG200に比べて、シャッフル回路用制御情報生成器201に替えてシャッフル回路用制御情報生成器271を含む点が異なる。また、リード 2−D GAG270は、2−D GAG200に比べて、メモリ用ワードアドレス生成器202に替えてメモリ用ワードアドレス生成器272を含む点が異なる。
シャッフル回路用制御情報生成器271は、図3に示すシャッフル回路用制御情報生成器201に比べて、GAG204に替えてGAG274を含む点が異なる。
メモリ用ワードアドレス生成器272は、図3に示すメモリ用ワードアドレス生成器202に比べて、GAG204に替えてGAG274を含む点が異なる。
また、シャッフル回路用制御情報生成器271及びメモリ用ワードアドレス生成器272の命令メモリ203は、GAG制御情報205に替えて、GAG制御情報275を記憶する点が、第1及び第2の実施形態と異なる。GAG制御情報275の詳細は後述する。
タイミング生成部260は、各メモリ400からのデータ読出の開始タイミングが異なる出力データ配列763で、データ保持出力回路160がデータを出力するようにリード 2−D GAG220を制御する。
タイミング生成部260は、リード 2−D GAG270のシャッフル回路用制御情報生成器271のGAG274#0〜#3に対し、出力データ配列763に対応する、制御情報の生成開始を指示するリードサイクルスタート信号RSS#0〜#3を出力する。また、タイミング生成部260は、メモリ用ワードアドレス生成器272のGAG274#0〜#3に対しても、同じくリードサイクルスタート信号RSS#0〜#3を出力する。
尚、タイミング生成部260は、例えば、ある入力データと出力データとの組の並べ替え処理毎に、予め定められたタイミング生成条件に基づいてリードサイクルスタート信号RSS#0〜#3生成する。タイミング生成条件は、出力データOD#0〜#3それぞれに対して、リードサイクルスタート信号RSS#0〜#3を出力するタイミング決定する情報である。
尚、タイミング生成部260は、例えば、内部に配置した記憶手段(図示しない)にタイミング生成条件を保持し、並べ替え処理の開始時にその並べ替えに対応したタイミング生成条件をメモリから読み出して出力する。また、タイミング生成部260は、例えば、外部の手段(図示しない)から指定されたタイミング生成条件に基づいて、リードサイクルスタート信号RSS#0〜#3を生成するようにしてもよい。
GAG274#0〜#3は、GAG制御情報275に基づいて、リードサイクルスタート信号RSS#0〜#3の入力に対応する、シャッフル回路用制御情報BA#0〜#3及びメモリ出力用ワードアドレスOWA#0〜#3を生成し、出力する。
以上で、データ保持出力回路160についての説明を終了する。
次に、本実施形態の、GAG制御情報自動生成部560について説明する。
GAG制御情報自動生成部560は、第2の実施形態のGAG制御情報自動生成部500に比べて、以下のように動作する構成を含む点が異なる。まず、GAG制御情報自動生成部560は、例えば出力データ配列763のような出力データOD#0〜#3それぞれの出力を開始するタイミングが異なる出力データ配列から出力タイミング情報を生成する。次に、GAG制御情報自動生成部560は、出力データ配列703に替えて、生成した出力タイミング情報を利用して、GAG制御情報275を自動生成する。即ち、GAG制御情報275は、GAG制御情報205に比べて、出力タイミング情報を利用して生成される点が異なる。
次に、本実施形態の動作について、図を参照して説明する。図43は、本実施形態のGAG制御情報自動生成部560の動作を示すフローチャートである。
図43に示すように、GAG制御情報自動生成部560は、出力タイミング情報生成ステップS660、出力タイミング配列生成ステップS616、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631、書き込み側GAG制御情報生成ステップS632、読み出しアドレス配列生成ステップS646、読み出し側GAG制御情報生成ステップS650を順次実行する。
まず、GAG制御情報自動生成部560は、出力データ配列763に基づいて、出力タイミング情報768を生成する(S660)。具体的には、GAG制御情報自動生成部560は、図示しないメモリに保持されているloop_cycle及びoutput_data[x][y]を入力データとして、retimed_data[x][y]を生成する。ここで、loop_cycleは、入力データの入力が開始されてから、全入力データが装置へ入力されるまでの時間を示す。output_data[x][y]は、出力データ配列763であり、xはサイクル、yは出力ポート312の番号を示す。retimed_data[x][y]は、出力タイミング情報768であり、xはサイクル、yは出力ポート312の番号を示す。
図44は、出力タイミング情報生成ステップS660の詳細な動作を示すフローチャートである。最初に、GAG制御情報自動生成部560は、output_dataをコピーし、ベースとなるretimed_dataを作成する(S661)。
次に、GAG制御情報自動生成部560は、全出力ポート312の内で最も開始タイミングが早い出力ポート312(最早列に対応)の、開始サイクルを取得する。続けて、GAG制御情報自動生成部560は、取得した開始サイクルの値を、min_delayとして図示しない記憶手段に記憶する(S662)。
次に、GAG制御情報自動生成部560は、各出力ポート312の開始サイクル数とmin_delayとの差分を算出する。続けて、GAG制御情報自動生成部560は、算出した差分を、diff_delayとして図示しない記憶手段に記憶する(S663)。
次に、GAG制御情報自動生成部560は、loop_cycle及びdiff_delayに基づいて、前部有効領域、後部有効領域を算出する(S664)。
次に、GAG制御情報自動生成部560は、前部有効領域及び後部有効領域に基づいてリタイミングデータを生成する。続けて、GAG制御情報自動生成部560は、生成したリタイミングデータ及びloop_cycleに基づいて出力タイミング情報768を生成する(S665)。
図45は、前部有効領域及び後部有効領域を算出するステップS664の詳細な動作を示すフローチャートである。前部有効領域及び後部有効領域を算出する処理は、2つのループ処理で構成される。
最初に、1つ目のループにおいて、GAG制御情報自動生成部560は、出力ポート312の数だけステップS6642を繰り返す処理を行う(S6641)。
GAG制御情報自動生成部560は、出力ポート312の前部有効領域(f_v_area)として、対応する出力ポート312のdiff_delayを図示しない記憶手段に記憶する(S6642)。
次に、2つ目のループにおいて、GAG制御情報自動生成部560は、出力ポート312の数だけステップS6345を繰り返す処理を行う(S6644)。
GAG制御情報自動生成部560は、出力ポート312の後部有効領域(l_v_area)として、対応するf_v_areaにloop_cycleを、加算した値を図示しない記憶手段に記憶する(S6645)。
図46は、出力タイミング情報768を生成するステップS665の詳細な動作を示すフローチャートである。出力タイミング情報768を生成する処理は、外側ループと内側ループとの2重ループで構成される。
外側ループにおいて、GAG制御情報自動生成部560は、出力ポート312#t(t=0〜3)について順次、ステップS6652〜ステップS6656の処理を行う(S6651)。
外側ループの中の処理において、まず、GAG制御情報自動生成部560は、offset(内側ループで使用する変数)に「1」を設定する(S6652)。
次に、内側ループにおいて、GAG制御情報自動生成部560は、1つの出力ポート312#tについて、リタイミングデータを生成する(S6653)。具体的には、GAG制御情報自動生成部560は、f_v_area[t]−1のサイクルから0(先頭)のサイクルまでのリタイミングデータの要素を配置する処理を繰り返す。
内側ループの中の処理において、まず、GAG制御情報自動生成部560は、f_v_area[t]からoffsetを減算した値l_posを算出する(S6654)。
次に、GAG制御情報自動生成部560は、l_posに存在するoutput_data[l_pos][t]の要素をretimed_data[r][t]にコピーする(S6655)。これはすなわち、最も開始タイミングが早いメモリ400の出力が終了するサイクルを基点として、その他のメモリ400について、前記サイクル以降に出力されるデータを折り返して配置する処理に等しい。
次に、GAG制御情報自動生成部560は、Offsetに「1」加算する。(S6656)。
外側ループの処理が終了した後に、GAG制御情報自動生成部560は、retimed_dataを、先頭から数えて、loop_cycleと同じ長さになるように調整し、出力タイミング情報768を生成する(S6657)。
次に、上述の動作について、具体的な値を示して詳細に説明する。
尚、前提として、入力データ配列702は図4に示す入力データ配列702、及び出力データ配列763は図39に示す出力データ配列763、であるとする。従って、loop_cycleは、「4」であるとする。まず、GAG制御情報自動生成部560は、出力データ配列763(output_data)をコピーし、ベースとなるリタイミングデータ(retimed_data)を作成する(S661)。図47は、ベースとなるリタイミングデータ764を示す図である。
次に、GAG制御情報自動生成部560は、min_deleyを取得する(S662)。図39に示す出力データ配列763を参照すると、最も早いデータ出力の開始タイミングはサイクル0であるため、min_delayは、「0」である。
次に、GAG制御情報自動生成部560は、各出力ポート312のdiff_delayを算出する(S663)。出力データ配列763の場合、出力ポート312#0のdiff_delayは「0」、出力ポート312#1のdiff_delayは「1」、出力ポート312#2のdiff_delayは「2」、出力ポート312#3のdiff_delayは「3」である。
次に、GAG制御情報自動生成部560は、各出力ポート312に対応するf_v_area(前部有効領域)を算出する。出力データ配列763の場合、出力ポート312#0のf_v_areaは「0」、出力ポート312#1のf_v_areaは「1」、出力ポート312#2のf_v_areaは「2」、出力ポート312#3のf_v_areaは「3」である(S6641、S6642)。
次に、GAG制御情報自動生成部560は、各出力ポート312に対応するl_v_area(後部有効領域)を算出する。出力データ配列763の場合、出力ポート312#0のl_v_areaは「4」、出力ポート312#1のl_v_areaは「5」、出力ポート312#2のl_v_areaは「6」、出力ポート312#3のl_v_areaは「7」である(S6644、S6645)。
次に、GAG制御情報自動生成部560は、出力ポート312#0について、出力タイミング情報768の要素を決定する外側ループを実行する(S6651)。
次に、出力データ配列763の場合、出力ポート312#0のf_v_areaは[0]であるため、GAG制御情報自動生成部560は、内側ループは1度も実行しないと判断し(S6653)、リタイミングデータ764を変更しない。具体的には、ステップS6653で、for(r=−1;r>=0;r−−)となり、内側ループを実行しない。
次に、GAG制御情報自動生成部560は、出力ポート312#0について、出力タイミング情報768の要素を生成する(S6651)。
次に、GAG制御情報自動生成部560は、出力ポート312#1について、出力タイミング情報768の要素を生成する外側ループを実行する(S6651)。
次に、出力データ配列763の場合、出力ポート312#0のf_v_areaは[1]であるため、GAG制御情報自動生成部560は、0サイクル目のリタイミングデータの要素を決定する内側ループを実行する(S6653)。具体的には、ステップS6653で、for(r=0;r>=0;r−−)となり、サイクル0分のみ内側ループを実行する。
次に、出力データ配列763の場合、GAG制御情報自動生成部560は、l_pos=l_v_area[1]−offset=5−1=4を算出する(S6654)。
次に、GAG制御情報自動生成部560は、retimed_data[0][1]にoutput_data[4][1]の「H」を格納する(S6655)。図48は、出力ポート#1の0サイクル目の位置に「H」が格納された、リタイミングデータ765を示す図である。
GAG制御情報自動生成部560は、出力ポート#2についても同様にして、内側ループの1回目において、l_pos=l_v_area[2]−offset=6−1=5を算出する(S6654)。次に、GAG制御情報自動生成部560は、retimed_data[1][2]にoutput_data[5][2]の「L」を格納する(S6655)。次に、GAG制御情報自動生成部560は、内側ループの2回目において、l_pos=l_v_area[2]−offset=6−2=4を算出する(S6654)。次に、GAG制御情報自動生成部560は、retimed_data[0][2]にoutput_data[4][2]の「K」を格納する(S6655)。
図49は、出力ポート#2の0サイクル目及び1サイクル目の位置それぞれに、「K」及び「L」それぞれが、格納された、リタイミングデータ766を示す図である。
GAG制御情報自動生成部560は、出力ポート#3についても同様にして、出力タイミング情報768の要素を決定し、格納する。図50は、出力ポート#3の0サイクル目、1サイクル目及び2サイクル目の位置それぞれに、「N」、「O」及び「P」が、格納された、リタイミングデータ767を示す図である。
最後に、リタイミングデータ767をloop_cycleで調整し、出力タイミング情報768を生成する。図51は、出力タイミング情報768の例を示す図である。
以上をまとめると、出力タイミング情報生成ステップS660は、出力データ配列763に基づいて、第1の要素に対応する第2の要素に、第3の要素に対応する第4の要素を、再配置した出力タイミング情報を生成する。
ここで、第1の要素は、出力データ配列763の列(出力ポート312に対応)の内の読み出しを開始するタイミングが最も早い列である最早列における、各メモリ400からの読み出しが行われる出力データ配列763の行(サイクルに対応)の要素である。第2の要素は、出力データ配列763の各列における、各メモリ400からの読み出しが行われない出力データ配列763の行の要素である。第3の要素は、最早列における、読み出しの終了以後の出力データ配列763の行の要素である。第4の要素は、出力データ配列763の各列における、各メモリ400からの読み出しが行われる出力データ配列763の行の要素である。
以上が、図43の出力タイミング情報生成手段ステップS660の説明である。
次に、GAG制御情報自動生成部560は、出力タイミング配列生成ステップS616を実行する。出力タイミング配列生成ステップS616は、第2の実施形態において説明した出力タイミング配列S610と比べて、出力データ配列703に替えて出力タイミング情報768(retimed_data)を入力とする点が異なる。出力タイミング配列生成ステップS616は、retimed_dataを入力とする点を除いて、出力タイミング配列S610と同じである。
次に、GAG制御情報自動生成部560は、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631及び書き込み側GAG制御情報生成ステップS632を順次実行する。メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631及び書き込み側GAG制御情報生成ステップS632の動作は、第2の実施形態と同じである。
次に、GAG制御情報自動生成部560は、読み出しアドレス配列生成ステップS646を実行する。読み出しアドレス配列生成ステップS646は、第2の実施形態において説明した読み出しアドレス配列生成ステップS640と比べて、出力データ配列703に替えて、retimed_dataを入力とする点が異なる。読み出しアドレス配列生成ステップS646は、出力タイミング情報768(retimed_data)を入力とする点を除いて、読み出しアドレス配列生成ステップS640と同じである。
次に、GAG制御情報自動生成部560は、読み出し側GAG制御情報生成ステップS650を実行する。読み出し側GAG制御情報生成ステップS650の動作は、第2の実施形態と同じである。
上述した本実施形態における効果は、各メモリ400からのデータ読出の開始タイミングが異なる場合において、連続した並べ替え処理に汎用的に対応することを可能にする点である。具体的には、先行の並べ替え処理を終了していない出力データODを記憶するメモリ400と、それに続く後続の並べ替え処理を開始している出力データODを記憶するメモリ400とが、同一サイクルにおいて、同一メモリ400にならないように制御することが可能になる。
その理由は、以下のような構成を含むからである。即ち、第1に、GAG制御情報自動生成部560が、出力データ配列763に基づいて出力タイミング情報768を生成する。第2にGAG制御情報自動生成部560が、出力データ配列763に替えて出力タイミング情報768を利用して、GAG制御情報275を生成する。第3にデータ保持出力回路160のリード 2−D GAG270が、この生成されたGAG制御情報205に基づいて、タイミング生成部260のRSS#0〜#3に対応するOWA#0〜#3及びBA#0〜#3を出力する。
[第6の実施形態]
次に、本発明の第6の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
第6の実施形態は、プログラムにより所定の処理をコンピュータに実行させる実施形態である。第5の実施形態は、プログラムをコンピュータの記録媒体に記録して実行することにより、GAG制御情報205を生成する。
図36は、本実施形態の構成を示すブロック図である。図36は、本実施形態に係る、コンピュータ150の構成を示すブロック図である。図36を参照すると、コンピュータ150は、プロセッサ部540、記憶媒体550及び記憶部530を含む。記憶媒体550は、例えば、ディスク装置である。
プロセッサ部540は、記憶媒体550に格納されたメモリ制御情報生成プログラムを、例えば記憶部530に展開し、展開したメモリ制御情報生成プログラムに基づいて所定の処理を実行する。
記憶媒体550は、上述の各実施形態における情報処理端末の処理の一部をコンピュータに実行させるプログラムを記憶する。
記憶媒体550に格納されたメモリ制御情報生成プログラムは、例えば、実施形態2で説明した図12のフローチャートで示されるプログラムである。
記憶部530は、展開されたそのメモリ制御情報生成プログラム及びそのメモリ制御情報生成プログラムの作業情報(例えば、入力データ配列)を記憶する。
上述した本実施形態における効果は、2次元GAGを制御するGAG制御情報205を、自動的に生成することが可能になる点である。
その理由は、記憶媒体550に格納された制御情報自動生成のためのプログラムに基づいて、プロセッサ部540がGAG制御情報205を生成するようにしたからである。
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、
前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、
前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、
前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含むメモリ制御装置。
(付記2)
前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、
前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する書き込み側GAG制御情報生成手段と、を含むGAG制御情報自動生成手段を更に含む付記1記載のメモリ制御装置。
(付記3)
前記GAG制御情報自動生成手段は、
前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、
前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む付記2記載のメモリ制御装置。
(付記4)
前記出力データ配列は、前記第1から第Mのメモリからの読み出しを開始するタイミングが異なる出力データ配列であって、
前記GAG制御情報自動生成手段は、前記出力データ配列に基づいて、前記出力データ配列の行の要素を再配置した出力タイミング情報を生成する出力タイミング情報生成手段を更に含み、
前記出力タイミング情報生成手段は、前記出力データ配列の列の内の読み出しを開始するタイミングが最も早い前記列である最早列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われない前記出力データ配列の行の要素に、前記最早列における読み出しの終了以後の前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素を、再配置した出力タイミング情報を生成し、
前記出力タイミング配列生成手段は、前記入力データ配列及び前記出力タイミング情報に基づいて、出力タイミング配列を生成する
付記2または3に記載のメモリ制御装置。
(付記5)
前記出力タイミング情報生成手段は、前記第1から第Mのメモリそれぞれの読み出しを開始するタイミングに基づいて、前部有効領域及び後部有効領域を算出し、前記第1から第Mのメモリの中で出力を開始するタイミングが最も早い前記第1から第Mのメモリ以外の前記第1から第Mのメモリの前記出力データ配列の要素において、後部有効領域の要素をコピーして、前部有効領域に再配置して出力タイミング情報を生成する
付記4記載のメモリ制御装置。
(付記6)
前記出力タイミング情報生成手段は、前記第1から第Mのメモリの中で出力を開始するタイミングが最も早い前記第1から第Mのメモリが出力を開始する時刻と、それ以外の前記第1から第Mのメモリが出力を開始する時刻との差分に対応する値を前記前部有効領域として算出する
付記5記載のメモリ制御装置。
(付記7)
前記出力タイミング情報生成手段は、前記前部有効領域に、入力データ配列がデータ並べ替え機構への入力を開始してから入力が終了するまでの時刻との差分に対応する値を、加算して前記後部有効領域として算出する
(付記8)
前記書込アドレス生成手段、前記読出アドレス生成手段、前記入力データ選択制御手段及び前記出力データ選択制御手段のそれぞれに対応する前記GAG制御情報を保持する命令記憶手段を更に含む付記1乃至7のいずれかに記載のメモリ制御装置。
(付記9)
前記第1から第Mのメモリを更に含む付記1乃至8のいずれかに記載のメモリ制御装置。
(付記10)
メモリ制御装置が、
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、
前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、
前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、
前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力するメモリ制御方法。
(付記11)
GAG制御情報自動生成手段が、
前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成し、
前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する付記10記載のメモリ制御方法。
(付記12)
前記GAG制御情報自動生成手段は、
前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成し、
前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する付記11記載のメモリ制御方法。
(付記13)
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、
前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)を生成する処理と、をコンピュータに実行させるメモリ制御情報生成プログラム。
(付記14)
前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する処理と、
前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する処理と、をコンピュータに実行させる付記13記載のメモリ制御情報生成プログラム。
(付記15)
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成し、
前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)を生成するメモリ制御方法。
(付記16)
前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む読み出しアドレス配列を生成し、
前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する付記15記載のメモリ制御方法。
(付記17)
第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、
前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、
前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、
前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)を生成する書き込み側GAG制御情報生成手段と、を含むメモリ制御装置。
(付記18)
前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、
前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む付記17記載のメモリ制御装置。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年11月24日に出願された日本出願特願2010−260790及び2011年5月24日に出願された日本出願特願2011−115484を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、マルチバンクのメモリを使用した、一般的で複雑な信号処理アルゴリズムで動作するプロセッサ用コンパイラ等に適用できる。
100 データ保持出力回路
130 データ保持出力回路
140 メモリ制御装置
150 コンピュータ
160 データ保持出力回路
200 2−D GAG
201 シャッフル回路用制御情報生成器
202 メモリ用ワードアドレス生成器
203 命令メモリ
204 GAG
205 GAG制御情報
210 ライト 2−D GAG
220 リード 2−D GAG
260 タイミング生成部
270 リード 2−D GAG
271 シャッフル回路用制御情報生成器
272 メモリ用ワードアドレス生成器
274 GAG
275 GAG制御情報
300 シャッフル回路
310 M:1 セレクタ
311 入力ポート
312 出力ポート
330 ワードシャッフル機構
340 データシャッフル機構
400 メモリ
500 GAG制御情報自動生成部
530 記憶部
540 プロセッサ部
550 記憶媒体
560 GAG制御情報自動生成部
651 読み出しアドレス配列
700 入力データ配列
701 出力データ配列
702 入力データ配列
703 出力データ配列
711 出力タイミング配列
721 メモリ内データ配列
721 モリ内データ配列
722 メモリ配置後タイミング配列
731 アドレス配列
741 読み出しアドレス配列
763 出力データ配列
764 リタイミングデータ
765 リタイミングデータ
766 リタイミングデータ
767 リタイミングデータ
768 出力タイミング情報
900 アドレス生成器
930 GAG用命令メモリ
931 GAG制御情報
940 GAG
2114 入力データ選択制御部
2124 書込アドレス生成部
2214 出力データ選択制御部
2224 読出アドレス生成部
3101 入力データ選択部
3102 出力データ選択部

Claims (10)

  1. 第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、
    前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、
    前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含むメモリ制御装置。
  2. 前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、
    前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、
    前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、
    前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する書き込み側GAG制御情報生成手段と、を含むGAG制御情報自動生成手段を更に含む
    請求項1記載のメモリ制御装置。
  3. 前記GAG制御情報自動生成手段は、
    前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、
    前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む請求項2記載のメモリ制御装置。
    命令記憶手段を更に含む
    請求項2記載のメモリ制御装置。
  4. 前記出力データ配列は、前記第1から第Mのメモリからの読み出しを開始するタイミングが異なる出力データ配列であって、
    前記GAG制御情報自動生成手段は、前記出力データ配列に基づいて、前記出力データ配列の行の要素を再配置した出力タイミング情報を生成する出力タイミング情報生成手段を更に含み、
    前記出力タイミング情報生成手段は、前記出力データ配列の列の内の読み出しを開始するタイミングが最も早い前記列である最早列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われない前記出力データ配列の行の要素に、前記最早列における読み出しの終了以後の前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素を、再配置した出力タイミング情報を生成し、
    前記出力タイミング配列生成手段は、前記入力データ配列及び前記出力タイミング情報に基づいて、出力タイミング配列を生成する
    請求項2または3に記載のメモリ制御装置。
  5. 前記書込アドレス生成手段、前記読出アドレス生成手段、前記入力データ選択制御手段及び前記出力データ選択制御手段のそれぞれに対応する前記GAG制御情報を保持する命令記憶手段を更に含む請求項1乃至4のいずれかに記載のメモリ制御装置
  6. 前記第1から第Mのメモリを更に含む請求項1乃至5のいずれかに記載のメモリ制御装置。
  7. メモリ制御装置が、
    第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、
    前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、
    前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、
    前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力するメモリ制御方法。
  8. GAG制御情報自動生成手段が、
    前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、
    前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、
    前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成し、
    前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する請求項7記載のメモリ制御方法。
  9. 前記GAG制御情報自動生成手段は、
    前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成し、
    前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する請求項8記載のメモリ制御方法。
  10. 第1から第M(Mは2以上の任意の自然数)のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、
    前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、
    前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、
    前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報(GAG制御情報)を生成する処理と、をコンピュータに実行させるメモリ制御情報生成プログラム。
JP2012545821A 2010-11-24 2011-11-22 メモリ制御装置、及びメモリ制御方法 Active JP5811099B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012545821A JP5811099B2 (ja) 2010-11-24 2011-11-22 メモリ制御装置、及びメモリ制御方法

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2010260790 2010-11-24
JP2010260790 2010-11-24
JP2011115484 2011-05-24
JP2011115484 2011-05-24
JP2012545821A JP5811099B2 (ja) 2010-11-24 2011-11-22 メモリ制御装置、及びメモリ制御方法
PCT/JP2011/077441 WO2012070683A1 (ja) 2010-11-24 2011-11-22 メモリ制御装置、及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JPWO2012070683A1 JPWO2012070683A1 (ja) 2014-05-19
JP5811099B2 true JP5811099B2 (ja) 2015-11-11

Family

ID=46146017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012545821A Active JP5811099B2 (ja) 2010-11-24 2011-11-22 メモリ制御装置、及びメモリ制御方法

Country Status (2)

Country Link
JP (1) JP5811099B2 (ja)
WO (1) WO2012070683A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61231639A (ja) * 1985-04-05 1986-10-15 レイセオン カンパニ− アドレス・ジエネレータ
JPH10207868A (ja) * 1997-01-21 1998-08-07 Sharp Corp 2次元配列転置回路
JP2005022387A (ja) * 2003-07-04 2005-01-27 Hitachi Information Technology Co Ltd 画像データ回転処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61231639A (ja) * 1985-04-05 1986-10-15 レイセオン カンパニ− アドレス・ジエネレータ
JPH10207868A (ja) * 1997-01-21 1998-08-07 Sharp Corp 2次元配列転置回路
JP2005022387A (ja) * 2003-07-04 2005-01-27 Hitachi Information Technology Co Ltd 画像データ回転処理装置

Also Published As

Publication number Publication date
JPWO2012070683A1 (ja) 2014-05-19
WO2012070683A1 (ja) 2012-05-31

Similar Documents

Publication Publication Date Title
US8560795B2 (en) Memory arrangement for multi-processor systems including a memory queue
US7594046B2 (en) Data processing in which concurrently executed processes communicate via a FIFO buffer
US10409596B2 (en) Method and apparatus for performing vector operations using look up tables
JPWO2004079583A1 (ja) データ転送制御装置およびdmaデータ転送制御方法
US9576619B2 (en) Shiftable memory supporting atomic operation
KR20060045756A (ko) 프로세서
JP4007483B2 (ja) 高位合成装置および高位合成方法
US20120102262A1 (en) Memory control device, storage device, and memory control method
KR100407548B1 (ko) 트레이스 제어 회로
KR100539112B1 (ko) 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서
CN107818192B (zh) 存储器事务层级模型模拟方法及系统
JP2011048681A (ja) プロセッサ
JP2007310565A (ja) システムlsi検証装置及びシステムlsi検証プログラム
JP2012159903A (ja) データ処理システム、データ処理装置、及びデータ処理方法
JP5108690B2 (ja) Dma装置及びdma転送方法
JP5811099B2 (ja) メモリ制御装置、及びメモリ制御方法
JP5630281B2 (ja) ベクトル命令制御回路及びリストベクトルの追い越し制御方法
JP2005524136A (ja) 命令キャッシュ、及びメモリ競合を低減する方法
JP2014191663A (ja) 演算処理装置、情報処理装置、および演算処理装置の制御方法
US7228393B2 (en) Memory interleaving
JP5979965B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
KR20140141535A (ko) 디펜던시 문제의 효율적인 병렬 계산
JP2009199384A (ja) データ処理装置
JP6481549B2 (ja) 情報処理装置および情報処理装置の制御方法
CN114298890B (zh) 数据处理装置及其方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141017

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150831

R150 Certificate of patent or registration of utility model

Ref document number: 5811099

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150