説明

データ転送システム

【課題】動作効率を向上できるデータ転送システムを提供する。
【解決手段】1つの実施形態によれば、第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、前記バスに接続された複数のマスタ装置と、前記バスに接続されたスレーブ装置とを備え、前記スレーブ装置は、前記バスにそれぞれ接続され、前記バスを介して前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、前記複数のマスタ装置の間における処理内容の関連性に依存した順番で前記複数のマスタ装置が優先順位付けされた優先順位情報に従って、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する調停部と、前記調停部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部とを有することを特徴とするデータ転送システムが提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データ転送システムに関する。
【背景技術】
【0002】
複数のマスタが低速バス及びメモリコントローラを介して高速メモリに接続されたシステムでは、高速メモリに接続されたメモリコントローラ内のメモリI/Fに対して、高速メモリに対応した高速な動作速度で(効率よく)動作することが求められている。しかし、このシステムでは、複数のマスタからメモリコントローラへ同時に転送指示(高速メモリへのアクセス要求)が出された場合、バスに接続されたメモリコントローラ内のスレーブインターフェースが低速バスと同様に低速で動作するため、メモリコントローラ内のメモリI/Fが高速メモリとの間でデータ転送処理を行わない空き時間が発生する傾向にある。これにより、システムの動作効率が低下する傾向にある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−127022号公報
【特許文献2】特開平7−36814号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
1つの実施形態は、例えば、動作効率を向上できるデータ転送システムを提供することを目的とする。
【課題を解決するための手段】
【0005】
1つの実施形態によれば、第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、前記バスに接続された複数のマスタ装置と、前記バスに接続されたスレーブ装置とを備え、前記スレーブ装置は、前記バスにそれぞれ接続され、前記バスを介して前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、前記複数のマスタ装置の間における処理内容の関連性に依存した順番で前記複数のマスタ装置が優先順位付けされた優先順位情報に従って、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する調停部と、前記調停部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部とを有することを特徴とするデータ転送システムが提供される。
【図面の簡単な説明】
【0006】
【図1】第1の実施形態にかかるデータ転送システムの構成を示す図。
【図2】第1の実施形態における優先指定テーブルの構成を示す図。
【図3】第1の実施形態にかかるデータ転送システムの動作を示すフローチャート。
【図4】第1の実施形態にかかるデータ転送システムの動作を示すタイミングチャート。
【図5】第2の実施形態にかかるデータ転送システムの構成を示す図。
【図6】第3の実施形態にかかるデータ転送システムの構成を示す図。
【図7】第3の実施形態における判定テーブルの構成を示す図。
【図8】比較例にかかるデータ転送システムの構成を示す図。
【図9】比較例にかかるデータ転送システムの動作を示すタイミングチャート。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるデータ転送システムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
第1の実施形態にかかるデータ転送システム1について図1を用いて説明する。図1は、第1の実施形態にかかるデータ転送システム1の構成を示す図である。
【0009】
データ転送システム1は、バス10、複数のマスタ装置21〜24、及びスレーブ装置30を備える。
【0010】
バス10は、複数のマスタ装置21〜24とスレーブ装置30とを接続しており、複数のマスタ装置21〜24とスレーブ装置30との間の通信を媒介している。バス10は、第1の速度でデータをそれぞれ転送する複数のライン11〜14を有する。バス10は、例えば、AHB(Advanced High−Performance Bus)規格に従ったバスであり、第1の速度は、例えば、100MHzである。すなわち、バス10に供給されるバスクロック(図4参照)の周波数は、例えば、100MHzである。また、バス10は、セクタ(512B)単位でデータを転送する。
【0011】
複数のマスタ装置21〜24は、バス10に接続されている。各マスタ装置21〜24は、スレーブ装置30に対して、バス10を介したデータ転送を能動的に行う主体として機能する。すなわち、各マスタ装置21〜24は、バス10を介して転送指示をスレーブ装置30へ送信する。
【0012】
マスタ装置21は、例えば、SATAI/Fである。すなわち、マスタ装置21は、ホスト装置HAから外部バス(SATA)経由で受信した命令やデータなどを高速メモリM1に書き込むための転送指示(ライト指示)をバス10経由でスレーブ装置30へ送信したり、ホスト装置HAへ送信すべきデータを高速メモリM1から読み出すための転送指示(リード指示)をバス10経由でスレーブ装置30へ送信したりする。マスタ装置21は、バス10経由で受信したデータなどを外部バス(SATA)経由でホスト装置HAへ送信する。
【0013】
マスタ装置22は、例えば、CPUである。すなわち、マスタ装置22は、データ転送システム1の各構成要素を統括的に制御するもので、ホスト装置HAからマスタ装置(SATAI/F)21及びバス10経由で命令を受けた場合に、その命令に従った制御を行う。例えば、マスタ装置22は、マスタ装置(NANDコントローラ)24と協働して、ホスト装置HAから命令に従って、NAND型フラッシュメモリ(以下、NANDメモリと略す)M2から読み出したデータを高速メモリM1に書き込むための転送指示(ライト指示)をバス10経由でスレーブ装置30へ送信したり、NANDメモリM2へ書き込むべきデータを高速メモリM1から読み出すための転送指示(リード指示)をバス10経由でスレーブ装置30へ送信したりする。
【0014】
マスタ装置23は、例えば、ECCモジュールである。すなわち、マスタ装置23は、マスタ装置(CPU)22やマスタ装置(NANDコントローラ)24と協働して、ECC処理(誤り訂正処理)を行ったデータを高速メモリM1に書き込むための転送指示(ライト指示)をバス10経由でスレーブ装置30へ送信したり、ECC処理(誤り訂正処理)を行うべきデータを高速メモリM1から読み出すための転送指示(リード指示)をバス10経由でスレーブ装置30へ送信したりする。
【0015】
マスタ装置24は、例えば、NANDコントローラである。すなわち、マスタ装置24は、NANDメモリM2と高速メモリM1との間のデータ転送を制御する。例えば、マスタ装置24は、マスタ装置(CPU)22と協働して、NANDメモリM2から読み出したデータを高速メモリM1に書き込むための転送指示(ライト指示)をバス10経由でスレーブ装置30へ送信したり、NANDメモリM2へ書き込むべきデータを高速メモリM1から読み出すための転送指示(リード指示)をバス10経由でスレーブ装置30へ送信したりする。
【0016】
なお、データ転送システム1、高速メモリM1、及びNANDメモリM2は、ホスト装置HAに対する外部記憶媒体として機能するものであり、例えば、SSD(Solid State Drive)である。ホスト装置HAは、例えば、パーソナルコンピュータ又はCPUコアを含む。
【0017】
高速メモリM1は、例えば、ホスト装置HAとNANDメモリM2との間でのデータ転送用のキャッシュ領域として、並びに、マスタ装置(CPU)22が使用する作業領域として機能する。高速メモリM1は、例えば、DRAM(Dynamic Random Access Memory)、又はFeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAMなど(Phase Change Random Access Memory)を含む。特に、高速メモリM1は、例えば、DDR3−SDRAMであってもよい。
【0018】
NANDメモリM2は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリM2では、データの消去がブロック単位で行われるのに対して、データの書き込み及び読み出しがページ単位で行われる。ブロックは、複数のページをひとまとめにした単位である。また、NANDメモリM2では、マスタ装置(CPU)22による内部的なデータ管理がクラスタ単位で行われ、データの更新がセクタ単位で行われる。この実施の形態では、ページは、複数のクラスタをひとまとめにした単位であるとし、クラスタは、複数のセクタをひとまとめにした単位であるとする。セクタは、ホスト装置HAからのデータの最小アクセス単位であり、例えば、512Bのサイズを有する。ホスト装置HAは、セクタ単位のLBA(Logical Block Addressing)によってアクセスするデータを指定する。
【0019】
また、複数のマスタ装置21〜24は、上記の他に、DMAコントローラや暗号化モジュールなどを含んでいても良い。
【0020】
スレーブ装置30は、バス10に接続されている。スレーブ装置30は、マスタ装置21〜24からの転送指示を受動的に待ち、マスタ装置21〜24によるデータ転送のサービスを受ける。すなわち、スレーブ装置30は、各マスタ装置21〜24から転送指示を受信する。
【0021】
スレーブ装置30は、例えば、メモリコントローラである。すなわち、スレーブ装置30は、各マスタ装置21〜24から受信した転送指示に応じて、高速メモリM1へのデータの書き込みや高速メモリM1からのデータの読み出しを制御する。
【0022】
次に、スレーブ装置30の構成について図1及び図2を用いて説明する。図2は、第1の実施形態における優先指定テーブル34aの構成を示す図である。
【0023】
スレーブ装置30は、図1に示すように、複数のスレーブインターフェース31、32、記憶部34、調停部33、及びメモリ制御ブロック35を有する。
【0024】
複数のスレーブインターフェース31、32は、それぞれ、バス10に接続されている。すなわち、スレーブインターフェース31はバス10の各ライン11〜14に接続されているとともに、スレーブインターフェース32はバス10の各ライン11〜14に接続されている。
【0025】
各スレーブインターフェース31、32は、互いに独立して異なるマスタ装置21〜24との通信を確立する。各スレーブインターフェース31、32は、マスタ装置21〜24から転送指示を第1の速度で受信する。第1の速度は、例えば、100MHzである。すなわち、各スレーブインターフェース31は、クロックとして、バス10に供給されるものと同じバスクロックが供給される。各スレーブインターフェース31に供給されるバスクロック(図4参照)の周波数は、例えば、100MHzである。また、各スレーブインターフェース31、32は、マスタ装置21〜24からデータをセクタ(512B)単位で受信したり、マスタ装置21〜24へデータをセクタ(512B)単位で送信したりする。
【0026】
記憶部34は、優先指定テーブル(優先順位情報)34aを記憶する。優先指定テーブル34aは、例えば、予め決定された複数のマスタ装置21〜24の間の優先順位を指定するテーブルであり、複数のマスタ装置21〜24の間における処理内容の関連性に依存した順番で複数のマスタ装置21〜24が優先順位付けされたテーブルである。
【0027】
具体的には、優先指定テーブル34aは、図2に示すように、識別子欄34a1及び優先順位欄34a2を含む。識別子欄34a1には、各マスタ装置21〜24の識別子ID21〜ID24が記録されている。優先順位欄34a2には、対応するマスタ装置21〜24の優先順位PR21〜PR24が記録されている。各マスタ装置21〜24の優先順位PR21〜PR24は、それぞれ、複数のマスタ装置21〜24の間における(重視している一連の処理における)処理内容の関連性に依存した順番で決定されたものである。
【0028】
調停部33は、記憶部34に記憶された優先指定テーブル34aを参照し、優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。
【0029】
具体的には、調停部33は、複数のスレーブインターフェース31、32からメモリ制御ブロック35への転送指示を調停する。すなわち、調停部33は、優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。すなわち、調停部33は、優先指定テーブル34aにおける優先順位の高いものから低いものを順番に選択することをサイクリックに(ラウンドロビン的に)行いながら、複数のスレーブインターフェース31、32で受信した転送指示に対して選択されたマスタ装置の順番で処理順を決定する。
【0030】
そして、調停部33は、複数のスレーブインターフェース31、32で受信された複数の転送指示をその決定した処理順にアクセス権を与えて順次にメモリ制御ブロック35へ供給する。
【0031】
メモリ制御ブロック35は、調停部33により決定された処理順に従い、転送指示に応じた高速メモリ(外部)M1との間のデータ転送処理を第2の速度で行う。
【0032】
具体的には、メモリ制御ブロック35は、調停部33から供給された転送指示に応じたデータ転送処理を行う。
【0033】
例えば、メモリ制御ブロック35は、転送指示がライト指示である場合、そのライト指示に従って、所定のデータを高速メモリM1へ書き込む。あるいは、例えば、メモリ制御ブロック35は、転送指示がリード指示である場合、そのリード指示に従って、所定のデータを高速メモリM1から読み出す。
【0034】
なお、高速メモリM1は、例えば、DDR3−SDRAMである場合、最低動作周波数が333MHzである。すなわち、高速メモリM1に供給されるメモリクロック(図4参照)の周波数は、例えば、333MHzである。
【0035】
そこで、メモリ制御ブロック35は、高速メモリM1に対応した高速な動作速度で動作することが求められている。すなわち、第2の速度は、第1の速度(例えば、100MHz)より速い速度であり、例えば、133MHzである。すなわち、メモリ制御ブロック35に供給されるクロック(図示せず)の周波数は、例えば、133MHzである。
【0036】
次に、データ転送システム1の動作について図3を用いて説明する。図3は、データ転送システム1の動作を示すフローチャートである。
【0037】
ステップS1の前に、予め、記憶部34は、優先指定テーブル(優先順位情報)34aを記憶する。優先指定テーブル34aは、例えば、予め決定された複数のマスタ装置21〜24の間の優先順位を指定するテーブルであり、複数のマスタ装置21〜24の間における処理内容の関連性に依存した順番で複数のマスタ装置21〜24が優先順位付けされたテーブルである。
【0038】
具体的には、優先指定テーブル34aは、図2に示すように、識別子欄34a1及び優先順位欄34a2を含む。識別子欄34a1には、各マスタ装置21〜24の識別子ID21〜ID24が記録されている。優先順位欄34a2には、各マスタ装置21〜24の優先順位PR21〜PR24が記録されている。各マスタ装置21〜24の優先順位PR21〜PR24は、それぞれ、複数のマスタ装置21〜24の間における(重視している一連の処理における)処理内容の関連性に依存した順番で決定されたものである。
【0039】
例えば、マスタ装置(CPU)22がマスタ装置(NANDコントローラ)24と協働して、NANDメモリM2から読み出した(複数のセクタを含む)クラスタ単位のデータを高速メモリM1へ書き込んだり、あるいは、NANDメモリM2へ書き込むべきクラスタ単位のデータを高速メモリM1から読み出したりする一連の処理を重視している場合を考える。この場合、一連の処理において、マスタ装置(CPU)22による処理とマスタ装置(NANDコントローラ)24による処理とが、交互に行われる関係にある。このような処理内容の関連性に依存した順番として、マスタ装置21、22、23、24の優先順位は、例えば、優先順位PR21=1、優先順位PR22=2、優先順位PR23=3、優先順位PR24=4と決定される(図2参照)。
【0040】
ステップS1では、スレーブ装置30の各スレーブインターフェース31、32が、互いに独立して異なるマスタ装置21〜24との通信を確立する。複数のスレーブインターフェース31、32は、同時に受信されたとみなせる所定の時間内に、異なるマスタ装置21〜24から転送指示をそれぞれ第1の速度で受信する。第1の速度は、例えば、100MHzである。
【0041】
例えば、複数のスレーブインターフェース31、32は、同時に受信されたとみなせる所定の時間内に、マスタ装置22、24から転送指示をそれぞれ受信する。
【0042】
ステップS2では、調停部33が、記憶部34に記憶された優先指定テーブル34aを参照し、優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。
【0043】
具体的には、調停部33は、複数のスレーブインターフェース31、32で受信された転送指示を調停する。すなわち、調停部33は、優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。すなわち、調停部33は、優先指定テーブル34aにおける優先順位の高いものから低いものを順番に選択することをサイクリックに(ラウンドロビン的に)行いながら、複数のスレーブインターフェース31、32で受信した転送指示に対して選択されたマスタ装置の順番で処理順を決定する。
【0044】
そして、調停部33は、複数のスレーブインターフェース31、32で受信された複数の転送指示をその決定した処理順にアクセス権を与えて順次にメモリ制御ブロック35へ供給する。
【0045】
例えば、優先指定テーブル34aにおいて、マスタ装置21、22、23、24の優先順位が、それぞれ、優先順位PR21=1、優先順位PR22=2、優先順位PR23=3、優先順位PR24=4と決定されている場合を考える。このとき、同時に受信されたとみなせる所定の時間内に、マスタ装置22からの転送指示がスレーブインターフェース31で受信され、マスタ装置24からの転送指示がスレーブインターフェース32で受信されたら、調停部33は、優先指定テーブル34aを参照することにより、受信タイミングの順番に関わらず、マスタ装置22からの転送指示とマスタ装置24からの転送指示とを交互に選択するように転送指示の処理順を決定する。
【0046】
ステップS3では、メモリ制御ブロック35が、調停部33により決定された処理順に従い、転送指示に応じた高速メモリ(外部)M1との間のデータ転送処理を第2の速度で行う。
【0047】
具体的には、メモリ制御ブロック35は、調停部33から供給された転送指示をアクセス権が与えられた転送指示として、その供給された転送指示に応じたデータ転送処理を行う。
【0048】
例えば、メモリ制御ブロック35は、調停部33により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1へ書き込む。あるいは、例えば、メモリ制御ブロック35は、調停部33により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1から読み出す。
【0049】
ここで、仮に、図8に示すように、データ転送システム900において、スレーブ装置(メモリコントローラ)930が1つのスレーブインターフェース931及びメモリ制御ブロック935を有する場合について考える。このとき、高速メモリM1は、例えば、DDR3−SDRAMであれば、最低動作周波数が333MHzである。すなわち、図9に示すように、高速メモリM1に供給されるメモリクロックの周波数は、例えば、333MHzである。そこで、メモリ制御ブロック935は、高速メモリM1に対応した高速な動作速度(例えば、133MHz)で動作する。この場合でも、図9に示すように、スレーブインターフェース931に供給されるバスクロックの周波数は、例えば、100MHzである。
【0050】
すなわち、スレーブインターフェース931がメモリ制御ブロック935より低速(第1の速度)で動作するため、スレーブ装置(メモリコントローラ)930内のメモリ制御ブロック935が高速メモリM1との間でデータ転送処理を行わない空き時間が発生する傾向にある。例えば、図9に示すように、スレーブインターフェース931がマスタ装置22の転送指示、マスタ装置24の転送指示を順に受信する場合、メモリ制御ブロック935がマスタ装置22の転送指示の処理を完了した時点で、スレーブインターフェース931によるマスタ装置24の転送指示の受信処理がまだ始まっていない。このため、メモリ制御ブロック935は、時間T903だけ待ってからマスタ装置24の転送指示を受けてマスタ装置24の転送指示の処理を行う。これにより、データ転送システム900全体としてみた場合に、マスタ装置22の転送指示及びマスタ装置24の転送指示の処理時間T901が長くなる傾向にあるので、データ転送システム900の動作効率が低下する傾向にある。
【0051】
それに対して、第1の実施形態では、データ転送システム1において、スレーブ装置(メモリコントローラ)30が複数のスレーブインターフェース31、32、調停部33、及びメモリ制御ブロック35を有する。複数のスレーブインターフェース31、32は、図4に示すように、複数のマスタ装置21〜24から転送指示を並行して低速(第1の速度)で受信する。調停部33は、複数のマスタ装置21〜24の間における処理内容の関連性に依存した順番で複数のマスタ装置21〜24が予め優先順位付けされた優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。メモリ制御ブロック35は、調停部33により決定された処理順に従い、転送指示に応じた高速メモリ(外部)M1との間のデータ転送処理を高速(第1の速度より速い第2の速度)で行う。
【0052】
すなわち、複数のスレーブインターフェース31、32がメモリ制御ブロック35より低速(第1の速度)であるが互いに並行して受信動作を行うため、スレーブ装置(メモリコントローラ)30内のメモリ制御ブロック35が高速メモリM1との間でデータ転送処理を行わない空き時間を低減できる。複数のマスタ装置21〜24からの転送指示を並行して受け付けることで、バス10の速度が遅い場合でも、スレーブ装置(メモリコントローラ)30に対して次に処理すべき転送指示を投入することができる。例えば、図4に示すように、スレーブインターフェース31がマスタ装置22の転送指示を受信する処理と、スレーブインターフェース32がマスタ装置24の転送指示を受信する処理とが並行して行われる場合、メモリ制御ブロック35がマスタ装置22の転送指示の処理を完了した時点で、スレーブインターフェース32によるマスタ装置24の転送指示の受信処理がすでに始まっている。このため、メモリ制御ブロック35は、直ちに(図9に示す時間T903だけ待つことなく)マスタ装置24の転送指示を受けてマスタ装置24の転送指示の処理を行う。これにより、データ転送システム1全体としてみた場合に、マスタ装置22の転送指示及びマスタ装置24の転送指示の処理時間T1が短くできる(図9に示す処理時間T901に比べて図4に示す時間T2だけ短縮できる)ので、データ転送システム1の動作効率を向上できる。
【0053】
あるいは、仮に、データ転送システム1において、調停部33が、複数のスレーブインターフェース31、32で受信した転送指示が受信された順番に処理されるように転送指示の処理順を決定する場合について考える。この場合、複数のマスタ装置21〜24の間における処理内容の関連性を無視した順番で転送指示の処理順が決定される傾向にある。
【0054】
例えば、マスタ装置(CPU)22がマスタ装置(NANDコントローラ)24と協働して、NANDメモリM2から読み出した(複数のセクタを含む)クラスタ単位のデータを高速メモリM1へ書き込んだり、あるいは、NANDメモリM2へ書き込むべきクラスタ単位のデータを高速メモリM1から読み出したりする一連の処理を重視している場合を考える。この一連の処理において、マスタ装置(CPU)22による処理とマスタ装置(NANDコントローラ)24による処理とが、交互に行われる関係にある。この場合でも、複数のスレーブインターフェース31、32がマスタ装置22の転送指示を連続的に複数受信した後にマスタ装置24の転送指示を連続的に複数受信すると、調停部33が、マスタ装置22の複数の転送指示の後にマスタ装置24の複数の転送指示が来るように、転送指示の処理順を決定する。これにより、メモリ制御ブロック35は、マスタ装置22の複数の転送指示における最初の転送指示を処理した後に、マスタ装置22の次以降の転送指示を保持する処理を行う必要があるとともに、マスタ装置24の複数の転送指示における最初の転送指示を受けるまで所定の時間待つ必要がある。そして、メモリ制御ブロック35は、マスタ装置22の次以降の転送指示を保持しながら、マスタ装置24の最初の転送指示を受けて処理することになる。すなわち、データ転送システム1全体としてみた場合に、マスタ装置22の複数の転送指示及びマスタ装置24の複数の転送指示の処理時間が長くなる傾向にあるので、データ転送システム1の動作効率が低下する傾向にある。
【0055】
それに対して、第1の実施形態では、調停部33が、複数のマスタ装置21〜24の間における処理内容の関連性に依存した順番で複数のマスタ装置21〜24が予め優先順位付けされた優先指定テーブル34aに従って、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。メモリ制御ブロック35は、調停部33により決定された処理順に従い、転送指示に応じた高速メモリ(外部)M1との間のデータ転送処理を高速(第1の速度より速い第2の速度)で行う。
【0056】
例えば、上記のような、マスタ装置(CPU)22による処理とマスタ装置(NANDコントローラ)24による処理とが、交互に行われる関係にある一連の処理を重視している場合に、複数のスレーブインターフェース31、32がマスタ装置22の転送指示を連続的に複数受信した後にマスタ装置24の転送指示を連続的に複数受信したときでも、調停部33が、マスタ装置22の転送指示とマスタ装置24の転送指示とが交互に行われるように、転送指示の処理順を決定する。これにより、メモリ制御ブロック35は、マスタ装置22の複数の転送指示における最初の転送指示を処理した後に、マスタ装置22の次以降の転送指示を保持する処理を行う必要がなく、マスタ装置24の複数の転送指示における最初の転送指示を受けるまで所定の時間待つ必要がない。そして、メモリ制御ブロック35は、マスタ装置22の次以降の転送指示を保持せずに、マスタ装置24の最初の転送指示を受けて処理することになる。すなわち、データ転送システム1全体としてみた場合に、マスタ装置22の複数の転送指示及びマスタ装置24の複数の転送指示の処理時間を短縮できるので、データ転送システム1の動作効率を向上できる。
【0057】
なお、スレーブ装置30は、2個より多くのスレーブインターフェースを有していても良い。
【0058】
また、スレーブ装置30において、記憶部34に記憶された優先指定テーブル34aは、例えば、マスタ装置21〜24の処理能力の高い順番で複数のマスタ装置21〜24が優先順位付けされたテーブルであってもよい。この場合、調停部33は、優先指定テーブル34aにおける優先順位の高いものから低いもの(複数のマスタ装置21〜24における処理能力の高いものから低いもの)を順番に選択することをサイクリックに(ラウンドロビン的に)行いながら、複数のスレーブインターフェース31、32で受信した転送指示に対して選択されたマスタ装置の順番で処理順を決定する。
【0059】
例えば、マスタ装置21の処理能力>マスタ装置22の処理能力>マスタ装置23の処理能力>マスタ装置24の処理能力である場合、優先指定テーブル34aにおいて、マスタ装置21、22、23、24の優先順位が、それぞれ、優先順位PR21=1、優先順位PR22=2、優先順位PR23=3、優先順位PR24=4と予め決定されている場合を考える。このとき、同時に受信されたとみなせる所定の時間内に、マスタ装置22からの転送指示がスレーブインターフェース31で受信され、マスタ装置24からの転送指示がスレーブインターフェース32で受信されたら、調停部33は、優先指定テーブル34aを参照することにより、受信タイミングの順番に関わらず、マスタ装置22からの転送指示とマスタ装置24からの転送指示とを交互に選択するように(処理能力の高いマスタ装置と低いマスタ装置とを交互に選択するように)転送指示の処理順を決定する。
【0060】
そして、例えば、調停部33は、複数のスレーブインターフェース31、32で受信された複数の転送指示をその決定した処理順にアクセス権を与えて順次にメモリ制御ブロック35へ供給する。
【0061】
さらに、メモリ制御ブロック35は、調停部33により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1へ書き込む。あるいは、メモリ制御ブロック35は、調停部33により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1から読み出す。
【0062】
このように、メモリ制御ブロック35は、複数のマスタ装置21〜24における処理能力の高いものから低いものを順番にサイクリックに(ラウンドロビン的に)処理することになる。これにより、データ転送システム1全体としてみた場合に、複数のマスタ装置21〜24の転送指示を処理する際における負荷を平均化することができるので、データ転送システム1の動作効率を向上できる。
【0063】
(第2の実施形態)
次に、第2の実施形態にかかるデータ転送システム100について図5を用いて説明する。図5は、第2の実施形態にかかるデータ転送システム100の構成を示す図である。
【0064】
データ転送システム100は、スレーブ装置130を備える。スレーブ装置130は、記憶部34(図1参照)を有せず、調停部133を有する。調停部133は、複数のスレーブインターフェース31、32をラウンドロビンで選択することにより、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。
【0065】
例えば、バス10の使用権を調停する回路(図示せず)は、(複数のスレーブインターフェース31、32における同時に受信したとみなせる)所定の時間内において、バス10の使用権を異なるマスタ装置21〜24に割り当てる。複数のスレーブインターフェース31、32は、この所定の時間内に、異なるマスタ装置21〜24から転送指示を受信する。このとき、調停部133は、複数のスレーブインターフェース31、32をラウンドロビンで選択し、選択されたスレーブインターフェース31、32で受信された転送指示を次に処理するように、転送指示の処理順を決定する。
【0066】
そして、例えば、調停部133は、複数のスレーブインターフェース31、32で受信された複数の転送指示をその決定した処理順にアクセス権を与えて順次にメモリ制御ブロック35へ供給する。
【0067】
さらに、メモリ制御ブロック35は、調停部133により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1へ書き込む。あるいは、メモリ制御ブロック35は、調停部133により決定された処理順に従い、マスタ装置22からの転送指示に応じたデータとマスタ装置24からの転送指示に応じたデータとを交互に高速メモリM1から読み出す。
【0068】
このように、メモリ制御ブロック35は、複数のマスタ装置21〜24における直前に選択されていないもの順番にサイクリックに(ラウンドロビン的に)処理することになる。これにより、データ転送システム100全体としてみた場合に、複数のマスタ装置21〜24の転送指示を処理する際における負荷を平均化することができるので、データ転送システム100の動作効率を向上できる。
【0069】
(第3の実施形態)
次に、第3の実施形態にかかるデータ転送システム200について図6を用いて説明する。図6は、第3の実施形態にかかるデータ転送システム200の構成を示す図である。
【0070】
データ転送システム200は、スレーブ装置230を備える。スレーブ装置230は、記憶部236、判定部237、決定部238、及びレジスタ239を有する。
【0071】
記憶部236は、メモリ制御ブロック35により転送指示が処理された際に、その処理した転送指示をメモリ制御ブロック35から受ける。そして、記憶部236は、次の転送指示がメモリ制御ブロック35により処理されるまで、直前に処理された転送指示を記憶する。
【0072】
また、レジスタ239は、メモリ制御ブロック35により処理された転送指示の内容をメモリ制御ブロック35から受ける。そして、レジスタ239は、メモリ制御ブロック35により処理された転送指示の内容を記憶する。このとき、レジスタ239は複数の記憶単位を含んでいる。そして、メモリ制御ブロック35は、レジスタ239における各記憶単位のアドレス空間と、高速メモリM1の各メモリセルのアドレス空間とを、連続したアドレス空間として認識している。
【0073】
判定部237は、記憶部236に記憶された転送指示との関係を考慮しながら、複数のスレーブインターフェース31、32で受信した転送指示のそれぞれについてデータ転送処理の処理速度を判定する。
【0074】
具体的には、判定部237は、複数のスレーブインターフェース31、32で受信した転送指示のうち、記憶部236に記憶された転送指示のアドレスに近いアドレスの転送指示についての処理速度を、記憶部に記憶された転送指示のアドレスから遠いアドレスの転送指示についての処理速度に比べて、速い速度に判定する。
【0075】
すなわち、直前にメモリ制御ブロック35により処理された転送指示の内容がレジスタ239に記憶されているので、記憶部236に記憶された転送指示のアドレスに近いアドレスの転送指示であれば、メモリ制御ブロック35は、レジスタ239にアクセスすることにより、高速メモリM1にアクセスすることなく、転送指示を高速に処理できると推定される。また、記憶部236に記憶された転送指示のアドレスに近いアドレスの転送指示であれば、直前のアドレスからのアドレス値のカウントアップ/カウントダウン動作も少なくてすむので、この観点からも、転送指示を高速に処理できると推定される。すなわち、高速メモリM1がSDRAMである場合を例とすると、連続したアドレス(RASが変わらないような)を継続させた方が、高速メモリM1に対するコマンド発行サイクルが減り、アクセスレイテンシを低下させることができる。
【0076】
そこで、判定部237は、記憶部236に記憶された転送指示のアドレスに近いアドレスの転送指示についての処理速度を、記憶部に記憶された転送指示のアドレスから遠いアドレスの転送指示についての処理速度に比べて、速い速度に判定する。
【0077】
例えば、複数のスレーブインターフェース31、32は、同時に受信されたとみなせる所定の時間内に、マスタ装置21のリード指示とマスタ装置22のライト指示とを受信した場合について考える。判定部237は、記憶部236に記憶された転送指示のアドレスに対して、マスタ装置22のライト指示のアドレスの方がマスタ装置21のリード指示のアドレスよりも近いと判定したとする。このとき、判定部237は、マスタ装置22のライト指示の処理速度PS2を、マスタ装置21のリード指示の処理速度PS1より速い速度(PS1<PS2)に判定する。そして、判定部237は、判定結果を示す判定テーブル237a(図7参照)を動的に生成し決定部238に供給する。
【0078】
具体的には、判定テーブル237aは、図7に示すように、転送指示欄237a1及び処理速度欄237a2を含む。転送指示欄237a1には、各転送指示を識別するための情報(例えば、「マスタ装置21のリード指示」、「マスタ装置22のライト指示」)が記録されている。処理速度欄237a2には、対応する転送指示の処理速度PS1、PS2が記録されている。各転送指示の処理速度PS1、PS2は、記憶部236に記憶された転送指示との関係を考慮しながら決定されたものである。
【0079】
決定部238は、判定テーブル237a(図7参照)の情報を判定部237から受ける。決定部238は、判定部237により判定された結果を示す判定テーブル237aに応じて、複数のスレーブインターフェース31、32で受信した転送指示の処理順を決定する。具体的には、決定部238は、処理速度の速い転送指示が処理速度の遅い転送指示よりも優先されるように、転送指示の処理順を決定する。
【0080】
例えば、決定部238は、判定テーブル237aにより、マスタ装置22のライト指示の処理速度PS2がマスタ装置21のリード指示の処理速度PS1より速い(PS1<PS2)ことが示されている場合、マスタ装置22のライト指示がマスタ装置21のリード指示よりも優先されるように、転送指示の処理順を決定する。
【0081】
このとき、決定部238は、その決定した転送指示の処理順により調停部33の決定した処理順を変更する(順番を入れ替える)ように、メモリ制御ブロック35経由で調停部33に変更要求を供給する。これに応じて、調停部33は、調停部33の決定した転送指示の処理順を、決定部238の決定した転送指示の処理順により変更して、変更後の転送処理の処理順にアクセス権を与えて順次にメモリ制御ブロック35へ供給する。
【0082】
そして、メモリ制御ブロック35は、決定部238により決定された処理順に従い、転送指示に応じた高速メモリM1との間のデータ転送処理を行う。すなわち、メモリ制御ブロック35は、決定部238により決定された処理順に従って調停部33により変更された処理順に従って、転送指示に応じた高速メモリM1との間のデータ転送処理を行う。
【0083】
このように、メモリ制御ブロック35は、直前に処理された転送指示から見てアドレスの近い転送指示を優先的に処理することになる。これにより、データ転送システム200全体としてみた場合に、マスタ装置21の転送指示及びマスタ装置22の転送指示の処理時間を短縮できるので、データ転送システム200の動作効率を向上できる。
【0084】
なお、複数のマスタ装置21〜24は、転送指示としてリード指示をライト指示より多く出す第1のマスタ装置と、転送指示としてライト指示をリード指示より多く出す第2のマスタ装置とを有していてもよい。例えば、複数のマスタ装置21〜24は、第1のマスタ装置としてマスタ装置21を有し、第2のマスタ装置としてマスタ装置22を有していても良い。この場合、判定部237は、記憶部236に記憶された転送指示がライト指示である場合、第1のマスタ装置から受信した転送指示についての処理速度を第2のマスタ装置から受信した転送指示についての処理速度に比べて速い速度に判定する。
【0085】
例えば、判定部237は、記憶部236に記憶された転送指示がライト指示である場合、マスタ装置21のリード指示の処理速度PS1を、マスタ装置22のライト指示の処理速度PS2より速い速度(PS1>PS2)に判定する(図7参照)。そして、決定部238は、判定テーブル237aにより、マスタ装置21のリード指示の処理速度PS1がマスタ装置22のライト指示の処理速度PS2より速い(PS1>PS2)ことが示されていることに応じて、マスタ装置21のリード指示がマスタ装置22のライト指示よりも優先されるように、転送指示の処理順を決定する。
【0086】
あるいは、例えば、判定部237は、記憶部236に記憶された転送指示がリード指示である場合、マスタ装置22のライト指示の処理速度PS2を、マスタ装置21のリード指示の処理速度PS1より速い速度(PS1<PS2)に判定する(図7参照)。そして、決定部238は、判定テーブル237aにより、マスタ装置22のライト指示の処理速度PS2がマスタ装置21のリード指示の処理速度PS1より速い(PS1<PS2)ことが示されていることに応じて、マスタ装置22のライト指示がマスタ装置21のリード指示よりも優先されるように、転送指示の処理順を決定する。
【0087】
そして、メモリ制御ブロック35は、決定部238により決定された処理順に従い、転送指示に応じた高速メモリM1との間のデータ転送処理を行う。すなわち、メモリ制御ブロック35は、決定部238により決定された処理順に従って調停部33により変更された処理順に従って、転送指示に応じた高速メモリM1との間のデータ転送処理を行う。
【0088】
このように、メモリ制御ブロック35は、直前に処理された転送指示から見て転送方向が逆の転送指示を優先的に処理することになる。すなわち、バス10の使用権を調停する回路(図示せず)は、(複数のスレーブインターフェース31、32における同時に受信したとみなせる)所定の時間内において、バス10の使用権を異なるマスタ装置21〜24に割り当てている。このため、直前に処理された転送指示から見て転送方向が逆の転送指示を優先的に処理することは、直前に処理された転送指示と異なるマスタ装置の転送指示を優先的に処理することに相当する。例えば、直前に処理されたのがマスタ装置21の転送指示(リード処理)であれば次にマスタ装置22の転送指示(ライト処理)を優先して処理し、直前に処理されたのがマスタ装置22の転送指示(ライト処理)であれば次にマスタ装置21の転送指示(リード処理)を優先して処理する。これにより、マスタ装置21の転送指示(リード処理)とマスタ装置22の転送指示(ライト処理)とを部分的に並行させながら処理することができる。すなわち、データ転送システム200全体としてみた場合に、マスタ装置21の転送指示及びマスタ装置22の転送指示の処理時間を短縮できるので、データ転送システム200の動作効率を向上できる。
【0089】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0090】
1、100、200、900 データ転送システム、10 バス、21〜24 マスタ装置、30、130、230、930 スレーブ装置、31、32、931 スレーブインターフェース、33、133 調停部、34 記憶部、35、935 メモリ制御ブロック、236 記憶部、237 判定部、238 決定部、239 レジスタ、HA ホスト装置、M1 高速メモリ、M2 NANDメモリ。

【特許請求の範囲】
【請求項1】
第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、
前記バスに接続された複数のマスタ装置と、
前記バスに接続されたスレーブ装置と、
を備え、
前記スレーブ装置は、
前記バスにそれぞれ接続され、前記バスを介して前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、
前記複数のマスタ装置の間における処理内容の関連性に依存した順番で前記複数のマスタ装置が優先順位付けされた優先順位情報に従って、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する調停部と、
前記調停部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部と、
を有する
ことを特徴とするデータ転送システム。
【請求項2】
第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、
前記バスに接続された複数のマスタ装置と、
前記バスに接続されたスレーブ装置と、
を備え、
前記スレーブ装置は、
前記バスにそれぞれ接続され、前記バスを介して前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、
前記マスタ装置の処理能力の高い順番で前記複数のマスタ装置が優先順位付けされた優先順位情報に従って、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する調停部と、
前記調停部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部と、
を有する
ことを特徴とするデータ転送システム。
【請求項3】
第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、
前記バスに接続された複数のマスタ装置と、
前記バスに接続されたスレーブ装置と、
を備え、
前記スレーブ装置は、
前記バスにそれぞれ接続され、前記バスを介して異なる前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、
前記複数のスレーブインターフェースをラウンドロビンで選択することにより、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する調停部と、
前記調停部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部と、
を有する
ことを特徴とするデータ転送システム。
【請求項4】
第1の速度でデータをそれぞれ転送する複数のラインを有するバスと、
前記バスに接続された複数のマスタ装置と、
前記バスに接続されたスレーブ装置と、
を備え、
前記スレーブ装置は、
前記バスにそれぞれ接続され、前記バスを介して前記マスタ装置から転送指示をそれぞれ前記第1の速度で受信する複数のスレーブインターフェースと、
直前に処理された転送指示を記憶する記憶部と、
前記記憶部に記憶された転送指示との関係を考慮しながら、前記複数のスレーブインターフェースで受信した転送指示のそれぞれについてデータ転送処理の処理速度を判定する判定部と、
前記判定部により判定された結果に応じて、前記複数のスレーブインターフェースで受信した転送指示の処理順を決定する決定部と、
前記決定部により決定された処理順に従い、転送指示に応じた外部との間のデータ転送処理を前記第1の速度より速い第2の速度で行う処理部と、
を有する
ことを特徴とするデータ転送システム。
【請求項5】
前記判定部は、前記複数のスレーブインターフェースで受信した転送指示のうち、前記記憶部に記憶された転送指示のアドレスに近いアドレスの転送指示についての処理速度を、前記記憶部に記憶された転送指示のアドレスから遠いアドレスの転送指示についての処理速度に比べて、速い速度に判定し、
前記決定部は、処理速度の速い転送指示が処理速度の遅い転送指示よりも優先されるように、転送指示の処理順を決定する
ことを特徴とする請求項4に記載のデータ転送システム。
【請求項6】
前記複数のマスタ装置は、
転送指示としてリード指示をライト指示より多く出す第1のマスタ装置と、
転送指示としてライト指示をリード指示より多く出す第2のマスタ装置と、
を有し、
前記判定部は、前記記憶部に記憶された転送指示がライト指示である場合、前記第1のマスタ装置から受信した転送指示についての処理速度を前記第2のマスタ装置から受信した転送指示についての処理速度に比べて速い速度に判定し、前記記憶部に記憶された転送指示がリード指示である場合、前記第2のマスタ装置から受信した転送指示についての処理速度を前記第1のマスタ装置から受信した転送指示についての処理速度に比べて速い速度に判定し、
前記決定部は、処理速度の速い転送指示が処理速度の遅い転送指示よりも優先されるように、転送指示の処理順を決定する
ことを特徴とする請求項4に記載のデータ転送システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−128627(P2012−128627A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−279006(P2010−279006)
【出願日】平成22年12月15日(2010.12.15)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(391016358)東芝情報システム株式会社 (149)
【Fターム(参考)】