(57)【特許請求の範囲】
【請求項１】
書き込みが完了してから読み出しが開始され、その読み出しが完了してから書き込みが開始される複数のバッファと、
前記バッファに書き込むデータを入力するための複数の入力ポートと、
前記バッファから読み出した前記データを出力するための複数の出力ポートと、
前記複数の出力ポートのうちの、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を保持する保持回路と、
前記入力ポートから入力された前記データを、前記複数のバッファのうちの、前記データの書き込み又は読み出しが行われておらず、前記データを格納していない状態のバッファである未使用のバッファに書き込むとともに、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を前記保持回路に書き込む書き込み制御回路と、
前記保持回路に保持された情報により特定される出力ポートが空いている場合、前記未使用のバッファへの書き込みが完了した前記データの、前記保持回路に保持された情報により特定される出力ポートへの読み出しを開始し、前記バッファからの前記データの読み出しが完了したときに前記バッファを開放する読み出し制御回路と
を備えるメモリ制御装置。
【請求項２】
前記読み出し制御回路は、前記保持回路に保持された情報により特定される出力ポートが既に他のバッファに書き込まれた他のデータの出力先となっている場合、前記他のバッファからの前記他のデータの出力が終了した後に、前記未使用のバッファへの書き込みが完了した前記データを、前記保持回路に保持された情報により特定される出力ポートに読み出す
請求項１に記載のメモリ制御装置。
【請求項３】
前記複数のバッファは、前記複数の入力ポートの数よりも、少なくとも１以上多い数となるように設けられ、
前記バッファごとに、前記保持回路を有している
請求項２に記載のメモリ制御装置。
【請求項４】
書き込みが完了してから読み出しが開始され、その読み出しが完了してから書き込みが開始される複数のバッファと、
前記バッファに書き込むデータを入力するための複数の入力ポートと、
前記バッファから読み出した前記データを出力するための複数の出力ポートと、
前記複数の出力ポートのうちの、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を保持する保持回路と
を備えるメモリ制御装置の制御方法において、
前記入力ポートから入力された前記データを、前記複数のバッファのうちの、前記データの書き込み又は読み出しが行われておらず、前記データを格納していない状態のバッファである未使用のバッファに書き込むとともに、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を前記保持回路に書き込み、
前記保持回路に保持された情報により特定される出力ポートが空いている場合、前記未使用のバッファへの書き込みが完了した前記データの、前記保持回路に保持された情報により特定される出力ポートへの読み出しを開始し、前記バッファからの前記データの読み出しが完了したときに前記バッファを開放する
ステップを含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置及びその制御方法に関し、特に、より少ないバッファ数で効率よくデータ転送をすることができるようにしたメモリ制御装置及びその制御方法に関する。
【背景技術】
【０００２】
図１は、従来のメモリ制御装置の構成を示す図である。
【０００３】
図１に示すように、メモリ制御装置１は、入力ポート１１1ないし入力ポート１１3の３つの入力ポートと、出力ポート１４1ないし出力ポート１４3の３つの出力ポートを有している。メモリ制御装置１は、入力ポート１１1ないし入力ポート１１3から入力されるデータを、メモリ制御部１２及び信号切り替え部１３を介して、出力ポート１４1ないし出力ポート１４3のいずれかから出力する。
【０００４】
具体的には、図１に示すように、メモリ制御部１２において、入力ポート１１1から入力されたデータは、書き込み制御部２１1により選択されるバッファ２２11に格納される。そして、バッファ２２11に格納されたデータは、信号切り替え部１３を介して、読み出し制御部２３1により選択された出力ポート１４1から、出力データとして出力される。
【０００５】
なお、信号切り替え部１３は、バッファ２２11ないしバッファ２２32の任意のバッファからの信号を、出力ポート１４1ないし出力ポート１４3の任意の出力ポートに接続させる機器である。
【０００６】
また、このとき、書き込み制御部２１1は、データのバッファ２２11への書き込みを終了すると、次の書き込み用のバッファとして、バッファ２２12を選択する。これにより、読み出し制御部２３1による、バッファ２２11に格納されたデータの読み出しが終了していなくとも直ちに、書き込み制御部２１1は、入力ポート１１1からのデータを、バッファ２２12に書き込み可能な状態となる。但し、バッファ２２12への書き込み処理が終了するまでに、バッファ２２11からの読み出し処理が終了していない場合、書き込み制御部２１1によるバッファ２２11への書き込みは禁止される。
【０００７】
なお、図１において、書き込み制御部２１2、バッファ２２21、バッファ２２22、及び読み出し制御部２３2、並びに、書き込み制御部２１3、バッファ２２31、バッファ２２32、及び読み出し制御部２３3は、上述した、書き込み制御部２１1、バッファ２２11、バッファ２２11、及び読み出し制御部２３1と同様の構成からなり、同様の動作を行うので、その説明は省略する。
【０００８】
次に、図２のタイミングチャートを参照して、図１のバッファ２２11ないしバッファ２２32の動作について説明する。
【０００９】
図２において、四角はバッファが使用中であることを意味し、バッファ２２11ないしバッファ２２32のそれぞれの動作について、データを書き込む処理（Write）と、データを読み出す処理（Read）を区別して表している。また、横軸は時間軸を表しており、時間の方向は図中左から右に向かう方向とされる。
【００１０】
図２に示すように、バッファ２２11にデータを書き込む処理が行われているとき、バッファ２２12においては、データを書き込む処理は行われず、その間、特に処理は行われない。そして、入力ポート１１1からのデータのバッファ２２11への書き込みが終了した後、バッファ２２11では、そのデータの読み出し処理が行われるが、そのとき、バッファ２２12においては、書き込み処理が開始される。
【００１１】
すなわち、対になっているバッファ２２11とバッファ２２12においては、一方が書き込み処理を行っているとき、他方は、その書き込み処理が完了するまで、書き込み処理以外の読み出し処理を行うことになる。つまり、対になるバッファでは、同時に書き込み処理が行われることはない。このことは、図２に示すように、図１の他のバッファ対である、バッファ２２21とバッファ２２22、及びバッファ２２31とバッファ２２32においても同様である。
【００１２】
以上のようにして、メモリ制御装置１においては、バッファ２２11とバッファ２２12、バッファ２２21とバッファ２２22、及びバッファ２２31とバッファ２２32とを切り替えながら、書き込み処理又は読み出し処理を行うことで、データ転送を実現していた。
【００１３】
また、本出願人は、メモリの制御に関することを先に提案している（例えば、特許文献１参照）。
【００１４】
先の提案においては、アクセス要求の処理順番に従って、メモリのデータの読み出しと書き込みが制御される。
【特許文献１】特開２００５−９２６３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、特許文献１を含む従来技術においては、ポート数が増加すると、それに伴って必要となるバッファ数も増加するため、リソースの使用量が増加するという問題があった。
【００１６】
例えば、図１において、仮に、ポート数を増加させようとすると、それに応じたバッファ対を設けなければならないため、ポート数×２のバッファを新たに設ける必要が出てくる。
【００１７】
また、図２においては、図１のバッファ２２11ないしバッファ２２32に対応するタイミングチャートを示しているが、各ポートの書き込みと読み出しのタイミングが一意でない場合、図中の点線で示すように、ある時点において、実際に動作している同時使用バッファは、バッファ２２11及びバッファ２２12の２つであって、他のバッファは全く動作していない状態となっている。この場合、せっかく複数のバッファを設けていても、そのリソースを有効に活用しているとは言えない。
【００１８】
本発明はこのような状況に鑑みてなされたものであり、より少ないバッファ数で効率よくデータ転送することができるようにするものである。
【課題を解決するための手段】
【００１９】
本発明の一側面のメモリ制御装置は、書き込みが完了してから読み出しが開始され、その読み出しが完了してから書き込みが開始される複数のバッファと、前記バッファに書き込むデータを入力するための複数の入力ポートと、前記バッファから読み出した前記データを出力するための複数の出力ポートと、前記複数の出力ポートのうちの、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を保持する保持回路と、前記入力ポートから入力された前記データを、前記複数のバッファのうちの、前記データの書き込み又は読み出しが行われておらず、前記データを格納していない状態のバッファである未使用のバッファに書き込むとともに、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を前記保持回路に書き込む書き込み制御回路と、前記保持回路に保持された情報により特定される出力ポートが空いている場合、前記未使用のバッファへの書き込みが完了した前記データの、前記保持回路に保持された情報により特定される出力ポートへの読み出しを開始し、前記バッファからの前記データの読み出しが完了したときに前記バッファを開放する読み出し制御回路とを備える。
【００２０】
前記読み出し制御回路は、前記保持回路に保持された情報により特定される出力ポートが既に他のバッファに書き込まれた他のデータの出力先となっている場合、前記他のバッファからの前記他のデータの出力が終了した後に、前記未使用のバッファへの書き込みが完了した前記データを、前記保持回路に保持された情報により特定される出力ポートに読み出す。
【００２１】
前記複数のバッファは、前記複数の入力ポートの数よりも、少なくとも１以上多い数となるように設けられ、前記バッファごとに、前記保持回路を有している。
【００２２】
本発明の一側面の制御方法は、書き込みが完了してから読み出しが開始され、その読み出しが完了してから書き込みが開始される複数のバッファと、前記バッファに書き込むデータを入力するための複数の入力ポートと、前記バッファから読み出した前記データを出力するための複数の出力ポートと、前記複数の出力ポートのうちの、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を保持する保持回路とを備えるメモリ制御装置の制御方法において、前記入力ポートから入力された前記データを、前記複数のバッファのうちの、前記データの書き込み又は読み出しが行われておらず、前記データを格納していない状態のバッファである未使用のバッファに書き込むとともに、前記入力ポートから入力された前記データから得られる前記データの出力先となる出力ポートを特定するための情報を前記保持回路に書き込み、前記保持回路に保持された情報により特定される出力ポートが空いている場合、前記未使用のバッファへの書き込みが完了した前記データの、前記保持回路に保持された情報により特定される出力ポートへの読み出しを開始し、前記バッファからの前記データの読み出しが完了したときに前記バッファを開放するステップを含む。
【００２３】
本発明の一側面のメモリ制御装置及びその制御方法によれば、入力ポートから入力されたデータが、複数のバッファのうちの、データの書き込み又は読み出しが行われておらず、データを格納していない状態のバッファである未使用のバッファに書き込まれるとともに、前記入力ポートから入力された前記データから得られるデータの出力先となる出力ポートを特定するための情報を保持回路に書き込まれ、前記保持回路に保持された情報により特定される出力ポートが空いている場合、未使用のバッファへの書き込みが完了したデータの、保持回路に保持された情報により特定される出力ポートへの読み出しが開始され、前記バッファからの前記データの読み出しが完了したときに前記バッファが開放される。
【発明の効果】
【００２４】
以上のように、本発明の一側面によれば、より少ないバッファ数で効率よくデータ転送することができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００２６】
図３は、本発明を適用したメモリ制御装置の一実施の形態の構成を示す図である。
【００２７】
メモリ制御装置３１は、入力ポート４１1ないし入力ポート４１3、メモリ制御部４２、及び出力ポート４３1ないし出力ポート４３3を含むようにして構成される。
【００２８】
なお、本実施の形態において、ライトサイド側の入力ポート４１1ないし入力ポート４１3を特に区別する必要がない場合には、単に、入力ポート４１と称し、同様に、リードサイド側の出力ポート４３1ないし出力ポート４３3を区別する必要がない場合には、単に、出力ポート４３と称する。
【００２９】
図３においては、入力ポート４１1ないし入力ポート４１3には、それぞれ、所定のデバイスが接続されており、それらのデバイスからのデータが入力される。本実施の形態においては、それらのデバイスから入力されるデータとして、例えば、入力ポート４１1にはAPL_RQが入力され、入力ポート４１2にはMW_RQが入力され、入力ポート４１3にはMain_RPが入力されるとして説明する。但し、RQはリクエスト（Request）、RPはレスポンス（Response）を意味し、図３の例においては、APL_RQは、APLからのリクエスト、MW_RQは、MWからのリクエスト、Main_RPは、Mainからのレスポンスを意味する。
【００３０】
入力ポート４１1ないし入力ポート４１3は、書き込み専用のポートであって、入力されるデータをメモリ制御部４２に出力する。
【００３１】
メモリ制御部４２は、書き込み制御部５１、メモリ５２、及び読み出し制御部５３を含むようにして構成される。また、図３の例では、メモリ５２は、メモリ５２1ないしメモリ５２4の４つのメモリから構成される。メモリ５２1はまた、バッファ６１1及びディスクリプタ６２1から構成され、さらに、ライトロックフラグとリードロックフラグを格納している。
【００３２】
ここで、ライトロックフラグ（Write Lock Flag）とは、データのバッファ６１1への書き込み処理が行われているか否かを示すフラグである。したがって、ライトロックフラグは、バッファ６１1に対しデータを書き込む処理が行われる場合には“１”となり、バッファ６１1に対するデータの書き込み処理が行われていない場合には“０”となる。
【００３３】
また、リードロックフラグ（Read Lock Flag）とは、バッファ６１1に格納されたデータの読み出し処理が行われているか否かを示すフラグである。したがって、リードロックフラグは、バッファ６１1に格納されているデータの読み出し処理が行われている場合には“１”となり、バッファ６１1に格納されているデータの読み出し処理が行われていない場合には“０”となる。
【００３４】
なお、繰り返しになるので説明は省略するが、メモリ５２2ないしメモリ５２4は、図３に示すように、メモリ５２1と同様の構成を有している。また、メモリ５２において、バッファ６１1ないしバッファ６１4を区別する必要がない場合には、単に、バッファ６１と称し、ディスクリプタ６２1ないしディスクリプタ６２4を区別する必要がない場合には、単に、ディスクリプタ６２と称する。
【００３５】
メモリ制御部４２に入力されたデータは、書き込み制御部５１に入力される。書き込み制御部５１は、メモリ５２1ないしメモリ５２4のライトロックフラグを参照して、バッファ６１1ないしバッファ６１4のうち、未使用のバッファ６１を選択し、選択した未使用のバッファ６１と、データを入力してきた入力ポート４１とを接続させる。すると、入力ポート４１からのデータは、選択された未使用のバッファ６１に書き込まれる。
【００３６】
なお、本実施の形態においては、バッファ６１において、データの書き込み処理や読み出し処理が行われておらず、データを格納していないバッファのことを、未使用（空き）のバッファと称する。一方、バッファ６１において、データの書き込み処理や読み出し処理が行われており、データを格納しているバッファのことを使用中のバッファと称する。
【００３７】
読み出し制御部５３は、メモリ５２1ないしメモリ５２4のリードロックフラグを参照することで、入力ポート４１からのデータを格納したバッファ６１を認識し、入力データが格納されたバッファ６１と、書き込み制御部５１によって指定された出力ポート４３とを接続させる。
【００３８】
ここに、書き込み制御部５１が特定の出力ポート４３を指定する方法であるが、例えば、書き込み制御部５１が出力ポート４３を特定するための情報をディスクリプタ６２に書き込む方法がある。かかる方法を用いることで、読み出し制御部５３は、書き込み制御部５１によって書き込まれた出力ポート４３に関する情報をディスクリプタ６２から読み出し、バッファ６１に格納されたデータを出力すべき出力ポート４３を特定する。このようにして特定された出力ポート４３と、入力ポート４１からのデータが格納されたバッファ６１とが接続され、バッファ６１に格納されたデータが出力される。
【００３９】
出力ポート４３1ないし出力ポート４３3は、読み出し専用のポートであって、読み出し制御部５３によって接続されたバッファ６１からのデータを出力する。図３においては、出力ポート４３1ないし出力ポート４３3には、それぞれ、所定のデバイスが接続されており、バッファ６１からのデータを、それらのデバイスに出力する。本実施の形態においては、それらのデバイスに出力するデータとして、出力ポート４３1からはAPL_RPが出力され、出力ポート４３2からはMW_RPが出力され、出力ポート４３3からはMain_RQが出力されるとして説明する。
【００４０】
以上のようにして、メモリ制御装置３１は構成される。
【００４１】
ここで、図３のメモリ制御装置３１の構成をより詳細に説明するために、図３において発行元であるAPLからのメッセージ（APL_RQ）を、発行先であるMWに転送する例について説明する。すなわち、図３においては、この例の場合、入力ポート４１1に入力されたメッセージが、出力ポート４３2から出力されることになる。
【００４２】
書き込み制御部５１は、バッファ６１1ないしバッファ６１4のうち、例えば、未使用のバッファ６１1を選択し、メッセージ（APL_RQ）を入力してきた入力ポート４１1と接続させる（図中の実線Ａ１）。これにより、メモリ制御部４２に入力されたメッセージは、未使用のバッファ６１1に書き込まれることになる。
【００４３】
ここで、書き込み制御部５１による未使用のバッファ６１1の選択方法であるが、メモリ５２1ないしメモリ５２4のライトロックフラグを参照することで行われる。つまり、ライトロックフラグは、バッファ６１が使用中のバッファである場合には、“１”となり、バッファ６１が未使用のバッファである場合には、“０”となるので、書き込み制御部５１は、ライトロックフラグが“０”となっているメモリ５２1のバッファ６１1を選択する。
【００４４】
なお、書き込み制御部５１は、未使用のバッファ６１1を選択後、メッセージを書き込む場合には、メモリ５２1のライトロックフラグを、“０”から“１”に書き換える。これにより、他のデータが選択された未使用のバッファ６１1に書き込まれることを防止できる。また、メモリ５２1ないしメモリ５２4のライトロックフラグがすべて“１”、すなわち、バッファ６１1ないしバッファ６１4がすべて使用中のバッファである場合、書き込み制御部５１は、ライトロックフラグの監視を開始し、メモリ５２1ないしメモリ５２4のいずれかのライトロックフラグが“０”となったとき、そのライトロックフラグに対応する未使用のバッファ６１を選択すればよい。
【００４５】
また、書き込み制御部５１は、入力ポート４１1からのメッセージを、特定の出力ポート４３2に出力するので、未使用のバッファ６１1を選択するとともに、出力ポート４３2用のメッセージであること示す情報を、ディスクリプタ６２1に書き込む。その後、入力ポート４１1からのメッセージの未使用のバッファ６１1への書き込みが終了すると、メモリ５２1のライトロックフラグは、書き込み制御部５１によって、“１”から“０”に書き換えられる。そして、書き込み制御部５１は、メモリ５２1のリードロックフラグを、“０”から“１”に書き換えて、読み出し制御部５３に対し、メモリ５２1にメッセージがあることを通知する。
【００４６】
読み出し制御部５３は、メモリ５２1ないしメモリ５２4のリードロックフラグを参照することで、バッファ６１1にメッセージが格納されたことを認識し、さらに、メモリ５２1のディスクリプタ６２1を参照することで、出力先が特定の出力ポート４３2であることを認識する。そして、読み出し制御部５３は、発行元であるAPLからのメッセージが格納されたバッファ６１1と、書き込み制御部５１によって指定された発行先（MW）の出力ポート４３2とを接続させる（図中の実線Ｂ）。
【００４７】
このとき、書き込み制御部５１は、メモリ５２1ないしメモリ５２4のライトロックフラグとリードロックフラグの状態を確認し、ライトロックフラグとリードロックフラグの両方が“０”となる未使用のバッファ６１があれば、その未使用バッファ６１と入力ポート４１1とを接続させる。例えば、図３に示すように、バッファ６１4が未使用である場合には、書き込み制御部５１によって、入力ポート４１1とメモリ５２4のバッファ６１4とが接続される（図中の実線Ａ２）。
【００４８】
また、メモリ５２1のバッファ６１1と、出力ポート４３2とが接続され、バッファ６１1に格納されたメッセージのすべてが、出力ポート４３2から出力されると、読み出し制御部５３には、発行先（MW）の出力ポート４３2側からメッセージを読み終わったことが、例えばレジスタなどを介して通知される。読み出し制御部５３は、その通知に応じてメモリ５２1のリードロックフラグを、１から０に書き換える。これにより、メモリ５２1のバッファ６１1は、未使用のバッファとなる。
【００４９】
なお、入力ポート４１1からのメッセージがバッファ６１1に格納されている最中に、入力ポート４１2と、入力ポート４１3からのメッセージが入力された場合、書き込み制御部５１は、メモリ５２1ないしメモリ５２4のライトロックフラグとリードロックフラグの状態を確認する。そして、書き込み制御部５１は、入力ポート４１2と未使用のバッファ６１2とを接続し（図中の実線Ｃ）、入力ポート４１3と未使用のバッファ６１3とを接続する（図中の実線Ｄ）。すなわち、書き込み制御部５１は、入力ポート４１からデータが入力されると、そのデータを順次、未使用のバッファ６１に書き込んでいくことになる。
【００５０】
このように、メモリ制御装置３１においては、入力ポート４１からのデータは、バッファ６１1ないしバッファ６１4からなる複数のバッファのうち、未使用のバッファに書き込まれ、未使用のバッファに書き込まれたデータは、出力先となる特定の出力ポート４３から出力される。
【００５１】
すなわち、入力ポート４１と出力ポート４３は、あらかじめ決められた特定のバッファに接続するのではなく、複数のバッファから選択された未使用のバッファに接続されるので、入力ポート４１や出力ポート４３の数を増加させるとしても、新たにバッファを設ける必要がないし、仮に、新たなバッファを設けるとしても、例えばポート数×２のバッファのような多くのバッファを設ける必要はない。よって、本実施の形態においては、従来よりも少ないバッファ数で、効率的なデータ転送を実現できる。
【００５２】
また、本実施の形態においては、容易に任意のポート同士でのデータ転送を行うことが可能となるので、任意のバッファ６１からの信号を任意の出力ポート４３に接続させる信号切り替え器などの機器を設ける必要もない。
【００５３】
次に、図４ないし図９を参照して、図３のメモリ制御装置３１における、入力ポート４１とバッファ６１、及びバッファ６１と出力ポート４３との接続動作について、さらに詳細に説明する。
【００５４】
図４に示すように、図４ないし図７及び図９においては、説明を簡略化するために、メモリ５２1ないしメモリ５２4の構成のうち、バッファ６１1ないしバッファ６１4だけを記述しているが、入力ポート４１1ないし入力ポート４１3から入力されるデータをバッファ６１1ないしバッファ６１4に書き込んだり、バッファ６１1ないしバッファ６１4に格納されたデータを読み出して、出力ポート４３1ないし出力ポート４３3から出力する際には、図３で説明した処理が行われる。
【００５５】
図５に示すように、メモリ制御部４２において、バッファ６１1が未使用（空き）、バッファ６１2が使用中、バッファ６１3が未使用（空き）、バッファ６１4が未使用（空き）のバッファである場合に、入力ポート４１1からデータが入力されたとき、書き込み制御部５１は、バッファ６１1ないしバッファ６１4のうち、未使用のバッファ６１3を選択し、入力ポート４１1と接続する（図中の点線Ａ）。これにより、入力ポート４１1からの入力データは、バッファ６１3に書き込まれる。
【００５６】
同様に、入力ポート４１2からデータが入力されたとき、書き込み制御部５１は、バッファ６１1ないしバッファ６１4のうち、未使用のバッファ６１1を選択し、入力ポート４１2と接続する（図中の点線Ｂ）。これにより、入力ポート４１2からの入力データは、バッファ６１1に書き込まれる。
【００５７】
また、このとき、読み出し制御部５３によって、使用中のバッファ６１2と出力ポート４３2とが接続され（図中の実線Ｃ）、バッファ６１2に格納されたデータが、出力ポート４３2から出力されている。
【００５８】
ここで、バッファ６１3に格納されている入力ポート４１1からの入力データは、出力ポート４３1から出力するので、読み出し制御部５３は、他のバッファが出力ポート４３1に接続されていなければ、図６に示すように、バッファ６１3と出力ポート４３1とを接続し、出力可能な状態にする（図中の実線Ｄ）。
【００５９】
一方、バッファ６１1に格納されている入力ポート４１2からの入力データは、出力ポート４３2から出力するが、図６に示すように、読み出し制御部５３によって、バッファ６１2と出力ポート４３2とが接続された状態となっているので（図中の実線Ｃ）、バッファ６１2に格納されたデータの出力ポート４３2への出力が終了するまで、バッファ６１1に格納されたデータの出力を待機する。
【００６０】
その後、バッファ６１2に格納されたデータの出力ポート４３2への出力が終了すると、読み出し制御部５３は、図７に示すように、バッファ６１1と出力ポート４３2とを接続し、出力可能な状態にする（図中の実線Ｅ）。これにより、バッファ６１1に格納された入力ポート４１2からデータは、出力ポート４３2から出力されることになる。
【００６１】
なお、このとき、バッファ６１2は、格納していたデータがすべて出力されたので、リードロックフラグが解除され、未使用のバッファとなる。
【００６２】
図８は、図４ないし図７を参照して説明した、バッファ６１1ないしバッファ６１4の動作の状態を示すタイミングチャートである。
【００６３】
図８において、四角はバッファが使用中であることを意味し、バッファ６１1ないしバッファ６１4のそれぞれの動作について、データを書き込む処理（Write）と、データを読み出す処理（Read）とを区別して表している。また、横軸は時間軸を表しており、時間の方向は図中左から右に向かう方向とされている。
【００６４】
図８に示すように、例えば、バッファ６１1とバッファ６１3において、データを書き込む処理が行われ、バッファ６１2において、データを読み出す処理が行われているとき、バッファ６１1では、データの書き込み処理が終了すると、直ちに、書き込んだデータを読み出す処理が行われる。また、バッファ６１2においては、データを読み出す処理が終了した後、また新たなデータが入力されると、その入力されたデータの書き込み処理が開始され、その後、書き込んだデータを読み出す処理が行われる。
【００６５】
また、バッファ６１3においても、データの書き込み処理が終了すると、その書き込んだデータを読み出す処理が行われ、その後、また新たなデータが入力されると、その入力されたデータの書き込み処理が開始される。バッファ６１4は、図８の例では、未使用のまま、特に動作していないが、バッファ６１1ないしバッファ６１3がすべて使用中となったときには、データが入力されることになる。
【００６６】
すなわち、図８に示すように、メモリ制御装置３１においては、バッファ６１1とバッファ６１4のうち、未使用のバッファが選択され、その未使用のバッファにデータが格納される。その後、バッファに格納されたデータが出力ポート４３から出力されると、そのバッファは、再び、未使用のバッファとなる。
【００６７】
このように、未使用のバッファを使いまわすことで、バッファの使用効率を上げることが可能となるため、余分なリソースを必要とせず、効率的なデータ転送を行うことが可能となる。また、バッファの数を少なくしても従来と同等あるいはそれ以上の性能を得ることができる。
【００６８】
また、読み出し制御部５３によって、接続する出力ポート４３を切り替えることで、バッファ６１に格納されたデータを、任意の出力ポート４３に出力できる。例えば、図７においては、バッファ６１1と出力ポート４３2とを接続し（図中の実線Ｅ）、バッファ６１3と出力ポート４３1とを接続する（図中の実線Ｄ）例について説明したが、図９に示すように、読み出し制御部５３は、例えば、バッファ６１1と出力ポート４３3とを接続させ（図中の実線Ｇ）、バッファ６１3と出力ポート４３2とを接続させる（図中の実線Ｆ）ようにしてもよい。これにより、出力先の出力ポート４３を切り替える信号切り替え器などの機器を設けなくとも、出力先の出力ポート４３を自在に切り替えることが可能となる。
【００６９】
以上のように、本発明によれば、より少ないバッファ数で効率よくデータ転送することができる。
【００７０】
すなわち、本発明によれば、複数のデバイスからの入出力に対して、経路を適切に切り替えることにより、１つのバッファリソースを効率的に使いまわし、少ないリソースで効率的な転送を実現することができる。その結果、書き込み用と読み出し用のバッファを対で持たなくとも、バンクメモリの機能を実現することが可能となる。
【００７１】
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００７２】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００７３】
【図１】従来のメモリ制御装置の構成を示す図である。
【図２】従来のメモリ制御装置の動作を説明するタイミングチャートである。
【図３】本発明を適用したメモリ制御装置の一実施の形態の構成を示す図である。
【図４】メモリ制御装置の動作を説明する図である。
【図５】メモリ制御装置の動作を説明する図である。
【図６】メモリ制御装置の動作を説明する図である。
【図７】メモリ制御装置の動作を説明する図である。
【図８】メモリ制御装置の動作を説明するタイミングチャートである。
【図９】メモリ制御装置の動作を説明する図である。
【符号の説明】
【００７４】
３１  メモリ制御装置，  ４１1ないし４１3  入力ポート，  ４２  メモリ制御部，  ４３1ないし４３2  出力ポート，  ５１  書き込み制御部，  ５２  メモリ，  ５３  読み出し制御部，  ６１1ないし６１4  バッファ，  ６２1ないし６２4  ディスクリプタ
【図１】
0004632099.tif 000002
【図２】
0004632099.tif 000003
【図３】
0004632099.tif 000004
【図４】
0004632099.tif 000005
【図５】
0004632099.tif 000006
【図６】
0004632099.tif 000007
【図７】
0004632099.tif 000008
【図８】
0004632099.tif 000009
【図９】
0004632099.tif 000010