(57)【要約】【課題】効率的なＲＡＭ管理を実現でき、データアクセスにベリファイが必要なホスト装置に対しても効率的にＲＡＭを有効に制御可能なデータ転送制御装置およびその方法を提供する。【解決手段】デュアルポートＲＡＭ１３はリングバッファ構造となっており、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴの３つのポインタは、各ポインタに対して1bit毎の周回管理ビットＣＭＢＴをもつ。周回管理ビットＣＭＢＴは偶数周の時0、奇数周の時1（逆でも可）のように相互のポインタの周回管理を行う。デュアルポートＲＡＭ１３の最後のページの書き込み/読み出し後、周回管理ビットＣＭＢＴを反転させて最初のページを示すことで、ポインタの周回違いを把握することができる。【選択図】図１
2007257032.tif 000002
【特許請求の範囲】
【請求項１】
２つのポートを有し、当該２つのポートのうち少なくとも一方がベリファイ機能を持つホスト装置と接続されるデュアルポートＲＡＭと、
上記デュアルポートＲＡＭのホスト装置とのデータ転送を制御する転送制御部と、を有し、
上記デュアルポートＲＡＭは、一定単位記憶領域を複数持つことで全体の記憶領域が形成されたリングバッファ構造を有し、
各ポートはそれぞれ上記記憶領域のいずれの一定単位記憶領域にアクセスしているかを示すホストポインタを有し、かつ、ベリファイ機能を持つホスト装置と接続されるポートはベリファイを行っているデータが格納されている一定単位記憶領域を示すアンカーポインタを有し、
上記各ホストポインタ、アンカーポインタは周回管理ビットを含み、
上記転送制御部は、上記各ポートにおける各ホストポインタ、アンカーポインタ、並びに周回管理ビットに基づいてデータの転送方向を判断し、上記２つのポートを通したホスト装置とのデータ転送制御を行う
データ転送制御装置。
【請求項２】
上記転送制御部は、上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの書き込み可否と第２ホスト装置からの読み出し可否を並行して判断する機能を有する
請求項１記載のデータ転送制御装置。
【請求項３】
上記転送制御部は、上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの読み出し可否と第２ホスト装置からの書き込み可否を並行して判断する機能を有する
請求項１記載のデータ転送制御装置。
【請求項４】
上記転送制御部は、上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの書き込み可否と第２ホスト装置からの読み出し可否を並行して判断する機能と、
上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの読み出し可否と第２ホスト装置からの書き込み可否を並行して判断する機能と、を有する
請求項１記載のデータ転送制御装置。
【請求項５】
上記転送制御部は、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を判定する機能を有する
請求項１記載のデータ転送制御装置。
【請求項６】
上記転送制御部は、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を奇数周、偶数周で分けて判定する
請求項５記載のデータ転送制御装置。
【請求項７】
上記転送制御部は、上記デュアルポートＲＡＭの最後の一定単位記憶領域のアクセス後、上記周回管理ビットを反転させて最初の一定単位記憶領域を示すことで、ポインタの周回違いを把握する
請求項５記載のデータ転送制御装置。
【請求項８】
上記転送制御部は、上記デュアルポートＲＡＭの記憶領域が満杯状態であるか否か示すデータをセット可能なレジスタを有する
請求項１記載のデータ転送制御装置。
【請求項９】
上記転送制御部は、上記デュアルポートＲＡＭの記憶領域が空状態であるか否か示すデータをセット可能なレジスタを有する
請求項１記載のデータ転送制御装置。
【請求項１０】
上記転送制御部は、上記デュアルポートＲＡＭの記憶領域が満杯状態であるか否か示すデータをセット可能なレジスタと、
上記デュアルポートＲＡＭの記憶領域が空状態であるか否か示すデータをセット可能なレジスタと、を有する
請求項１記載のデータ転送制御装置。
【請求項１１】
２つのポートを有し、当該２つのポートのうち少なくとも一方がベリファイ機能を持つホスト装置と接続されるデュアルポートＲＡＭとホスト装置とのデータ転送制御方法であって、
上記デュアルポートＲＡＭは、一定単位記憶領域を複数持つことで全体の記憶領域が形成されたリングバッファ構造とし、
各ポートはそれぞれ上記記憶領域のいずれの一定単位記憶領域にアクセスしているかを示すホストポインタを有し、かつ、ベリファイ機能を持つホスト装置と接続されるポートはベリファイを行っているデータが格納されている一定単位記憶領域を示すアンカーポインタを有し、
上記各ホストポインタ、アンカーポインタは周回管理ビットを含み、
上記各ポートにおける各ホストポインタ、アンカーポインタ、並びに周回管理ビットに基づいてデータの転送方向を判断し、上記２つのポートを通したホスト装置とのデータ転送制御を行うに際し、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を判定する
データ転送制御方法。
【請求項１２】
上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を奇数周、偶数周で分けて判定する
請求項１１記載のデータ転送制御方法。
【請求項１３】
上記デュアルポートＲＡＭの最後の一定単位記憶領域のアクセス後、上記周回管理ビットを反転させて最初の一定単位記憶領域を示すことで、ポインタの周回違いを把握する
請求項１１記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デュアルポートＲＡＭを用いたデータ転送制御に係り、特に、たとえば書き込み時にベリファイ（Verify）が必要なフラッシュメモリ等の不揮発性メモリにおける書き込み、読み出しに時のデータ転送を制御するデータ転送制御装置およびその方法に関するものである。
【背景技術】
【０００２】
デュアルポートＲＡＭにおけるデータ転送制御方式として、ポインタ技術を用いた方式が提案されている（特許文献１参照）。
【０００３】
このデータ転送制御方式においては、デュアルポートＲＡＭを複数の領域に分割し、この複数の領域の各々に領域内の格納データの先頭を示す先頭ポインタと最後を示す最終ポインタを格納し、分割領域毎に転送の役割を付与する。
そして、分割領域毎に受信側においては先頭ポインタの示すアドレスから読み出し、送信側においては最終ポインタの示すアドレスの次のアドレスへ書き込み、受信側および送信側とも読み出し、書き込み終了後ポインタを更新する。
【０００４】
このように特許文献1に記載されたデータ転送制御方式は、ポインタ技術を用いて情報処理システムにおける装置間のデータ転送において、少量のデータ転送に対しても効率の良い転送を実現することを目的としている。
【０００５】
ところで、フラッシュメモリ等の不揮発性メモリにおいては、書き込みを行った後は必ずベリファイ（Verify）を行い、書き込みの正常終了の確認を行う必要がある。
この書き込み、ベリファイの２ステップを必要とする情報記録装置における管理技術として、ベリファイ管理用ポインタを用いる技術が提案されている（特許文献２参照）。
【０００６】
この情報記録装置は、ホストコンピュータからの要求を一つ前の要求と比較して連続した書き込みであるかどうかを判断するための判断機能を備えている。
そして、この情報記録装置においては、一つ前の書き込み動作の書き込み中にホストコンピュータから連続した要求があった場合には、書き込み終了後、ベリファイに続けて行わず、次の書き込み要求に対応する書き込みを引き続いて行う。
また、情報記録装置においては、一つ前の書き込み動作のベリファイ中にホストコンピュータから連続した書き込み要求があった場合には、ベリファイ終了後引き続き、次の書き込み要求に対応する書き込みを行う。
【特許文献１】特開平２−２４２４６３号公報
【特許文献２】特開平８−３２８７５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところが、特許文献1に記載されたデータ転送制御方式は、複数の分割領域毎にポインタを持つ必要があることから、管理が複雑にならざるを得ない。
【０００８】
また、特許文献２に記載された情報記録装置においては、一つ前の要求を記憶して比較する処理が必要であり、また、連続した書き込みであることが対象であり、連続でない場合には制御対象となっていない。したがって、デュアルポートＲＡＭ全体を効率的に管理することは困難である。
【０００９】
前述したように、フラッシュメモリ等の不揮発性メモリに対して書き込みを行った後は必ずベリファイを行い、書き込みの正常終了の確認を行わなければならない。
したがって、特許文献１や２に記載された技術を採用したとしても、非効率なＲＡＭ制御を行わざるを得ないのが現状である。
【００１０】
本発明は、効率的なＲＡＭ管理を実現でき、データアクセスにベリファイが必要なホスト装置に対しても効率的にＲＡＭを有効に制御可能なデータ転送制御装置およびその方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の観点のデータ転送制御装置は、２つのポートを有し、当該２つのポートのうち少なくとも一方がベリファイ機能を持つホスト装置と接続されるデュアルポートＲＡＭと、上記デュアルポートＲＡＭのホスト装置とのデータ転送を制御する転送制御部と、を有し、上記デュアルポートＲＡＭは、一定単位記憶領域を複数持つことで全体の記憶領域が形成されたリングバッファ構造を有し、各ポートはそれぞれ上記記憶領域のいずれの一定単位記憶領域にアクセスしているかを示すホストポインタを有し、かつ、ベリファイ機能を持つホスト装置と接続されるポートはベリファイを行っているデータが格納されている一定単位記憶領域を示すアンカーポインタを有し、上記各ホストポインタ、アンカーポインタは周回管理ビットを含み、上記転送制御部は、上記各ポートにおける各ホストポインタ、アンカーポインタ、並びに周回管理ビットに基づいてデータの転送方向を判断し、上記２つのポートを通したホスト装置とのデータ転送制御を行う。
【００１２】
好適には、上記転送制御部は、上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの書き込み可否と第２ホスト装置からの読み出し可否を並行して判断する機能を有する。
【００１３】
好適には、上記転送制御部は、上記各ポインタによりデュアルポートＲＡＭに対して、第１ホスト装置からの読み出し可否と第２ホスト装置からの書き込み可否を並行して判断する機能を有する。
【００１４】
好適には、上記転送制御部は、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を判定する機能を有する。
【００１５】
好適には、上記転送制御部は、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を奇数周、偶数周で分けて判定する。
【００１６】
好適には、上記転送制御部は、上記デュアルポートＲＡＭの最後の一定単位記憶領域のアクセス後、上記周回管理ビットを反転させて最初の一定単位記憶領域を示すことで、ポインタの周回違いを把握する。
【００１７】
好適には、上記転送制御部は、上記デュアルポートＲＡＭの記憶領域が満杯状態であるか否か示すデータをセット可能なレジスタを有する。
【００１８】
好適には、上記転送制御部は、上記デュアルポートＲＡＭの記憶領域が空状態であるか否か示すデータをセット可能なレジスタを有する。
【００１９】
本発明の第２の観点は、２つのポートを有し、当該２つのポートのうち少なくとも一方がベリファイ機能を持つホスト装置と接続されるデュアルポートＲＡＭとホスト装置とのデータ転送制御方法であって、上記デュアルポートＲＡＭは、一定単位記憶領域を複数持つことで全体の記憶領域が形成されたリングバッファ構造とし、各ポートはそれぞれ上記記憶領域のいずれの一定単位記憶領域にアクセスしているかを示すホストポインタを有し、かつ、ベリファイ機能を持つホスト装置と接続されるポートはベリファイを行っているデータが格納されている一定単位記憶領域を示すアンカーポインタを有し、上記各ホストポインタ、アンカーポインタは周回管理ビットを含み、上記各ポートにおける各ホストポインタ、アンカーポインタ、並びに周回管理ビットに基づいてデータの転送方向を判断し、上記２つのポートを通したホスト装置とのデータ転送制御を行うに際し、上記各ポインタの周回管理ビットに基づいて、上記デュアルポートＲＡＭにおけるリングバッファの周回数を判定する。
【発明の効果】
【００２０】
本発明によれば、ベリファイ完了時にポインタの位置を進めることができるため、ベリファイ機能を持つホストに対してのデータ書き込み/データ読み出し時に、デュアルポートＲＡＭの制御の処理時間の短縮/処理の効率化を図ることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２２】
図１は、本発明の第１の実施形態に係るデュアルポートＲＡＭにおけるデータ転送制御装置を採用した情報処理システムの構成例を示すブロック図である。
【００２３】
本情報処理システム１０は、図１に示すように、第1ホスト装置（ホスト１）１１、第２ホスト装置（ホスト２）１２、デュアルポートＲＡＭ１３、および転送制御部１４を有する。
【００２４】
本実施形態においては、第１ホスト装置１１は、ベリファイ（Verify）操作が不要なメモリを含む処理装置として構成されており、第２ホスト装置１２は、ベリファイ操作が必要なたとえばフラッシュメモリからなる不揮発性メモリを含む処理装置として構成される。
【００２５】
本実施形態の情報処理システム１０は、図１もしくは図１に準ずるシステム構成を持つ場合に有効なデュアルポートＲＡＭ１３に対しての制御法式を採用している。
ただし、本発明は、図１の構成の場合の他にも、第１ホスト装置１１がデータ書き込み時のベリファイ機能を持ち（必要とする構成で）、第２ホスト装置１２がベリファイ機能を持たない（必要としない構成の）場合、あるいは、第１ホスト装置１２と第２ホスト装置１２が共にベリファイ機能を持つ（必要とする構成の）場合においても有効である。
【００２６】
図１のデュアルポートＲＡＭ１３は内部にページ（Page）という一定単位の記憶領域を持つ。このように、本実施形態のデュアルポートＲＡＭ１３は、ページを複数持つことで記憶領域を形成している。
そして、デュアルポートＲＡＭ１３は、２つのポート１３１，１３２を有する。デュアルポートＲＡＭは、ポート１３１を通して第１ホスト装置１１からのデータ書き込み/読み出しが可能である。同様に、デュアルポートＲＡＭ１３は、ポート１３２を通して第２ホスト装置１２からのデータ書き込み/読み出しが可能である。
図１において、ＲＤＴ１は第１ホスト装置１１への読み出しデータを示し、ＷＤＴ１は第１ホスト装置１１からの書き込みデータを示し、ＲＤＴ２は第２ホスト装置１２への読み出しデータを示し、ＷＤＴ２は第２ホスト装置１２からの書き込みデータを示す。
【００２７】
第１ホスト装置１１からの書き込みは第１ホストポインタＨＳＰＮＴ１によって制御される。第１ホストポインタＨＳＰＮＴ１は、第１ホスト装置１１がデュアルポートＲＡＭ１３のどの記憶領域に対して書き込み/読み出しを行っているかをページ単位で示すアドレスポインタ（ＡＤＰＮＴ１）である。
【００２８】
第１ホスト装置１１と同様に、第２ホスト装置１２からの書き込みは、第２ホストポインタＨＳＰＮＴ２によって制御される。第２ホストポインタＨＳＰＮＴ２は、第２ホスト装置１２がデュアルポートＲＡＭ１３のどの記憶領域に対して書き込み/読み出しを行っているかをページ単位で示すアドレスポインタ（ＡＤＰＮＴ２）である。
【００２９】
さらに、図１に示されている、アンカーポインタＡＮＰＮＴは、現在第２ホスト装置１２がベリファイを行っているデータがデュアルポートＲＡＭ１３内で格納されている領域をページ単位で示すポインタである。
【００３０】
デュアルポートＲＡＭ１３を制御する転送制御部１４は、３つのポインタ、すなわち第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴがデュアルポートＲＡＭ１３内の領域を示す位置を元に、後は第１ホスト装置１１から第２ホスト装置１２へのデータ転送、あるいは、第２ホスト装置１２から第１ホスト装置１１へのデータ転送のいずれの方向へのデータ転送であるかを把握する。
転送制御部１４は、転送方向を把握することで、第１ホスト装置１１に第１ホストリクエスト信号ＲＥＱ１を出力することによる書き込み/読み出しの可否の制御を行い、第２ホスト装置１２に第２ホストリクエスト信号ＲＥＱ２を出力することによる書き込み/読み出しの可否の制御を行いデュアルポートＲＡＭ１３が満杯であることの把握、ＲＡＭ１３が空であることの把握等の制御を可能とする。
【００３１】
また、図１のデュアルポートＲＡＭ１３はリングバッファ構造となっており、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴの３つのポインタは、各ポインタに対して1bit毎の周回管理ビットＣＭＢＴをもつ。
周回管理ビットＣＭＢＴは偶数周の時0、奇数周の時1（逆でも可）のように相互のポインタの周回管理を行う。
デュアルポートＲＡＭ１３の最後のページの書き込み/読み出し後、周回管理ビットＣＭＢＴを反転させて最初のページを示すことで、ポインタの周回違いを把握することができる。
【００３２】
表１は、転送方向が第１ホスト装置１１から第２ホスト装置１２の際の各ポインタの周回管理ビットによる第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴの位置関係を示している。
一方、表２は、転送方向が第２ホスト装置１２から第１ホスト装置１１の際の各ポインタの周回管理ビットによる第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴの位置関係を示している。
【００３３】
【表１】
2007257032.tif 000003
【００３４】
【表２】
2007257032.tif 000004
【００３５】
３つのポインタ（第１ホストポインタ、第２ホストポインタ、アンカーポインタ)は、転送方向が第１ホスト装置１１から第２ホスト装置１２の場合は各ポインタの位置は表１の条件に従う。転送方向が第２ホスト装置１２から第１ホスト装置１１の場合は各ポインタの位置は表２の条件に従う。
なお、表１および表２においては、表記の簡単化のため、第１ホストポインタをホスト１、第２ホストポインタをホスト２、アンカーポインタをアンカーと表記している。
【００３６】
なお、本実施形態においては、３つのポインタの位置関係は以下の１６通りがある。
・ホスト１＝ホスト２＝アンカー、
・ホスト１＝ホスト２＞アンカー、
・ホスト１＞ホスト２＝アンカー、
・ホスト１＞ホスト２＞アンカー、
・ホスト１＝アンカー＞ホスト２、
・ホスト１＞アンカー＞ホスト２、
・ホスト２＝ホスト１＞アンカー、
・ホスト２＞ホスト１＝アンカー、
・ホスト２＞ホスト１＞アンカー、
・ホスト２＝アンカー＞ホスト１、
・ホスト２＞アンカー＞ホスト１、
・アンカー＝ホスト１＞ホスト２、
・アンカー＞ホスト１＝ホスト２、
・アンカー＞ホスト１＞ホスト２、
・アンカー＝ホスト２＞ホスト１、
・アンカー＞ホスト２＞ホスト１。
本来は、上記１６通り全てに対して、（周回管理ビット３つの組み合わせ）と(第１ホスト装置１１と第２ホスト装置１２の転送方向２通り)の場合分けを行う必要があり、合計16×8×2=256（通り）の第１ホストリクエスト信号ＲＥＱ１、第２ホストリクエスト信号ＲＥＱ２のアクティブ(Active)、非アクティブ(Non-Active)または(ポインタの位置としてありえない状態：禁止)を提示する必要がある。
256通りの表を提示するのでは煩雑となることから、表１および表２のような表記を行っている。
【００３７】
転送方向が第１ホスト装置１１から第２ホスト装置１２の場合、表１に示すように、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＣＰＮＴの各周回管理ビットが「０００」および「１１１」の場合、各ポインタの位置関係は「ホスト１≧ホスト２≧アンカー」となり、各周回管理ビットが「００１」および「１１０」の場合、各ポインタの位置関係は「アンカー≧ホスト１≧ホスト２」となり、周回管理ビットが「０１０」および「１０１」の場合、「禁止」となり、各周回管理ビットが「０１１」および「１００」の場合、各ポインタの位置関係は「ホスト２≧アンカー≧ホスト１」となる。
【００３８】
転送方向が第２ホスト装置１２から第１ホスト装置１１の場合、表２に示すように、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＣＰＮＴの各周回管理ビットが「０００」および「１１１」の場合、各ポインタの位置関係は「ホスト２＝アンカー≧ホスト１」となり、周回管理ビットが「０１０」、「０１０」、「１０１」、および「１１０」の場合、「禁止」となり、各周回管理ビットが「０１１」および「１００」の場合、各ポインタの位置関係は「ホスト１≧ホスト２＝アンカー」となる。
【００３９】
表１、表２の条件に従うように第１リクエスト信号ＲＥＱ１がアクティブ（Active）になる条件を図２、図３に示す。
なお、以下の説明においては、デュアルポートＲＡＭは８つのページ０〜７を持つ構成をとるものとする。
【００４０】
図２の例は、第１ホストポインタＨＳＰＮＴ１がページ４を指し示し、第２ホストポインタＨＳＰＮＴ２およびアンカーポインタＡＮＰＮＴがページ２を指し示している。
図３の例は、第１ホストポインタＨＳＰＮＴ１がページ１を指し示し、第２ホストポインタＨＳＰＮＴ２およびアンカーポインタＡＮＰＮＴがページ４を指し示している。
【００４１】
図２に示すように、転送方向が第１ホスト装置１１から第２ホスト装置１２のときはデュアルポートＲＡＭ１３が満杯でなければ第１ホスト装置１１はＲＡＭ１３にデータを書き込むことが可能である。
よって、転送方向が第１ホスト装置１１から第２ホスト装置１２のときはＲＡＭ１３が満杯でないとき第１ホストリクエスト信号ＲＥＱ１はアクティブ（Active）となる。
図２の例においては、ページ４〜７、ページ０，１に対して第１ホスト装置１１から書き込み可能である。
【００４２】
図３に示すように、転送方向が第２ホスト装置１２から第１ホスト装置１１のときはＲＡＭ１３が空でなければ第１ホスト装置１１はＲＡＭ１３からデータを読み取ることが可能である。
よって、転送方向が第２ホスト装置１２から第１ホスト装置１１のときはＲＡＭ１３が空でないとき第１ホストリクエスト信号ＲＥＱ１はアクティブ（Active）となる。
図３の例においては、ページ１〜３のデータを第１ホスト装置１１に転送可能である。
【００４３】
表１、表２の条件に従うように第２ホストリクエスト信号ＲＥＱ２がアクティブ（Active）になる条件を図４、図５に示す。
【００４４】
図４（Ａ）の例は、第１ホストポインタＨＳＰＮＴ１がページ６を指し示し、第２ホストポインタＨＳＰＮＴ２がページ３を指し示し、アンカーポインタＡＮＰＮＴがページ１を指し示している。
図４（Ｂ）の例は、第１ホストポインタＨＳＰＮＴ１がページ４を指し示し、第２ホストポインタＨＳＰＮＴ２もページ４を指し示し、アンカーポインタＡＮＰＮＴがページ１を指し示している。
図５の例は、第１ホストポインタＨＳＰＮＴ１がページ２を指し示し、第２ホストポインタＨＳＰＮＴ２およびアンカーポインタＡＮＰＮＴがページ４を指し示している。
【００４５】
図４（Ａ），（Ｂ）に示すように、転送方向が第１ホスト装置１１から第２ホスト装置１２のときはＲＡＭ１３が空でないこと、かつ、第１ホストポインタＨＳＰＮＴ１と第２ホストポインタＨＳＰＮＴ２が周回管理ビットを含めて同じでないとき、第２ホスト装置１２はＲＡＭ１３からデータを読み出すことが可能である。
よって、転送方向が第１ホスト装置１１から第２ホスト装置１２のときはＲＡＭ１３が空でないこと、かつ、第１ホストポインタＨＳＰＮＴ１と第２ホストポインタＨＳＰＮＴ２が周回管理ビットを含めて同じでないとき第２ホストリクエスト信号ＲＥＱ２はアクティブ（Active）となる。
【００４６】
図４（Ａ）の例においては、ページ３〜５のデータを第２ホスト装置１２に転送可能である。
ＲＡＭ１３が空でないときは、ＲＡＭ１３から第２ホスト装置１２に書き込むデータがある。
ただし、ＲＡＭ１３が空でないときも第１ホストポインタＨＳＰＮＴ１と第２ホストポインタＨＳＰＮＴ２が同じ位置にあるときはＲＡＭ１３から第２ホスト装置１２に書き込み可能なデータは全てＲＡＭ１３から第２ホスト装置１２に転送済の状態(ただしベリファイは未完了状態)である。
よって、ＲＡＭ１３が空でないときでも、第１ホストポインタＨＳＰＮＴ１と第２ホストポインタＨＳＰＮＴ２が周回管理ビットを含めて同じページにあるとき、第２ホストリクエスト信号ＲＥＱ２は非アクティブ（Non-Active）となる。
図４（Ｂ）の例においては、ページ１〜３のデータはベリファイが未完了であり、ＲＡＭ１３から第２ホスト装置１２に転送可能なデータはない。
この場合、ＲＡＭ１３に有効なデータ（ベリファイ待ちのデータ）は存在する。
しかし、ＲＡＭ１３から第２ホスト装置１２に転送可能なデータはないため第２ホストリクエスト信号ＲＥＱ２は非アクティブ（Non-Active）である。
【００４７】
図５に示すように、転送方向が第２ホスト装置１２から第１ホスト装置１１のときはＲＡＭ１３が満杯でなければ第２ホスト装置１２はＲＡＭ１３にデータを書き込むが可能である。
よって、転送方向が第２ホスト装置１２から第１ホスト装置１１のときはＲＡＭ１３が満杯でないとき第２ホストリクエスト信号ＲＥＱ２はアクティブ（Active）となる。
図５の例においては、ページ４〜７、ページ０，１に第２ホスト装置１２から書き込みが可能である。
ＲＡＭ１３が満杯でないときは第２ホスト装置１２からＲＡＭ１３に書き込むデータが存在する。
【００４８】
表１、表２の条件に従うようにデュアルポートＲＡＭ１３が空であると判定する各ポインタの位置条件を図６、図７に示す。
【００４９】
図６の例は、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、およびアンカーポインタＡＮＰＮＴが共にページ４を指し示している。
図７の例は、第１ホストポインタＨＳＰＮＴ１がページ４を指し示し、第２ホストポインタＨＳＰＮＴ２およびアンカーポインタＡＮＰＮＴがページ４を指し示している。
【００５０】
図６に示すように、転送方向が第１ホスト装置１１から第２ホスト装置１２のときは各ポインタが同じページを指し、各ポインタの周回管理ビットが同じであるとき、デュアルポートＲＡＭ１３はデータが空であると判定する。
【００５１】
図７に示すように、転送方向が第２ホスト装置１２から第１ホスト装置１１のときも転送方向が第１ホスト装置１１から第２ホスト装置１２のとき同様、各ポインタが同じページを指し、各ポインタの周回管理ビットが同じであるとき、デュアルポートＲＡＭ１３はデータが空であると判定する。
【００５２】
表１、表２の条件に従うようにデュアルポートＲＡＭ１３が満杯であると判定する各ポインタの位置条件を図８、図９に示す。
【００５３】
図８の例は、第１ホストポインタＨＳＰＮＴ１がページ４を指し示し、第２ホストポインタＨＳＰＮＴ２がページ４、またはページ０〜３、またはページ５〜７を指し示し、アンカーポインタＡＮＰＮＴがページ４を指し示している。
図９の例は、第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、およびアンカーポインタＡＮＰＮＴが共にページ４を指し示している。
【００５４】
図８に示すように、転送方向が第１ホスト装置１１から第２ホスト装置１２のときは第１ホストポインタＨＳＰＮＴ１とアンカーポインタＡＮＰＮＴの周回管理ビットが異なり、かつ、第１ホストポインタＨＳＰＮＴ１とアンカーポインタＡＮＰＮＴが同じページを指し、かつ第２ホストポインタＨＳＰＮＴ２の示すページがアンカーポインタ=ホスト1ポインタ≧ホスト2ポインタ（ホスト２ポインタの周回管理ビットはホスト１ポインタと等しい）、または、ホスト2ポインタ≧アンカーポインタ=ホスト1ポインタ（ホスト２ポインタの周回管理ビットはアンカーポインタと等しい）であるとき、デュアルポートＲＡＭ１３はデータが満杯であると判定する。
【００５５】
より具体的には、第１ホストポインタＨＳＰＮＴ１とアンカーポインタＡＮＰＮＴの周回管理ビットは異なり、かつ、第１ホストポインタＨＳＰＮＴ１とアンカーポインタＡＮＰＮＴは同じページにあり、かつ、第２ホストポインタＨＳＰＮＴ２は図８中の(1)〜(4)のどれかが当てはまる。
(1)：第２ホストポインタＨＳＰＮＴ２は周回管理ビットを含めて第１ホストポインタＨＳＰＮＴ１と同じページにある。
(2)：第２ホストポインタＨＳＰＮＴ２は第１ホストポインタＨＳＰＮＴ１（アンカーポインタＡＮＰＮＴ）より番号の小さいページにある。
第２ホストポインタＨＳＰＮＴ２の周回管理ビットは第１ホストポインタＨＳＰＮＴ１と同じである。
(3)：第２ホストポインタＨＳＰＮＴ２はアンカーポインタＡＮＰＮＴ（第１ホストポインタＨＳＰＮＴ１）より番号の大きいページにある。
第２ホストポインタＨＳＰＮＴ２の周回管理ビットはアンカーポインタＡＮＰＮＴと同じである。
(4)：第２ホストポインタＨＳＰＮＴ２は周回管理ビットを含めてアンカーポインタＡＮＰＮＴと同じページにある。
このとき第１ホスト装置１１からＲＡＭ１３へこれ以上データを書けない。
【００５６】
図９に示すように、転送方向が第２ホスト装置１２から第１ホスト装置１１のときは第１ホストポインタＨＳＰＮＴ１のみ他のポインタと周回管理ビットが異なり、かつ、各ポインタが同じページを指しているとき、デュアルポートＲＡＭ１３はデータが満杯であると判定する。
【００５７】
３つのポインタ(第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴ)は第１ホスト装置１１、第２ホスト装置１２からポインタを進める信号を受け取ることにより、ポインタの位置を進めることができる。
また、３つのポインタ(第１ホストポインタＨＳＰＮＴ１、第２ホストポインタＨＳＰＮＴ２、アンカーポインタＡＮＰＮＴ)は直接値を書き換えることも可能である。
【００５８】
このように、本実施形態によれば、ベリファイ機能用にポインタを設けることで、ベリファイ完了時にポインタの位置を進めることができるため、ベリファイ機能を持つホスト装置に対してのデータ書き込み/データ読み出し時に、デュアルポートＲＡＭ１３の制御の処理時間の短縮/処理の効率化を図ることができる。
換言すれば、本実施形態によれば、連続であるないに関わらず、デュアルポートＲＡＭ１３の制御を行うことができる。一つ前の要求を記憶しておく必要はなく、デュアルポートＲＡＭ全体を管理できるためより効率的に制御できる利点がある。
また、本実施形態によれば、デュアルポートＲＡＭは内部にページという一定単位の記憶領域を持ち、ページを複数持つことで記憶領域を形成しており、そして、各ポインタに対して1bit毎の周回管理ビットを持つことにより、記憶領域全体を管理することができる。
すなわち、領域毎にポインタを持つ必要がなく、より少ないポインタ数でデュアルポートＲＡＭ全体を管理できるため、より効率的に制御できる利点がある。
【００５９】
以下に、本実施形態における転送制御部１４の構成および機能についてさらに詳細に説明する。
【００６０】
図１０は、本実施形態に係るデータ転送制御装置の構成例を示す回路図である。
【００６１】
このデータ転送制御装置２００（図１では符号１４で示す）は、図１０に示すように、第１ホストポインタＨＳＰＮＴ１用の同期式カウンタ２０１、アンカーポインタＡＮＰＮＴ用の同期式カウンタ２０２、第２ホストポインタＨＳＰＮＴ２用の同期式カウンタ２０３、比較回路２０４，２０５、排他的論理和ゲート（ＥＸＯＲ）２０６、ＡＮＤゲート２０７〜２１４、ＯＲゲート２１５，２１６、およびフリップフロップ２１７〜２２３を有する。
【００６２】
なお、同期式カウンタ２０１〜２０３、フリップフロップ２１７〜２２３は、図１１に示すように、データイン端子、クロック端子、非同期リセット端子、データアウト端子を有しており、フリップフロップ２１７〜２２３のクロック端子、非同期リセット端子、でデータイン端子への入力信号名は省略されている。
【００６３】
同期式カウンタ２０１は、第１ホスト装置１１からの転送応答信号がデータイン端子に入力される。転送応答信号が論理１のとき、第１ホスト装置１１からの転送応答を受けつけることになり、論理０のとき、第１ホスト装置１１からの転送要求はないことになる。
同期式カウンタ２０１は、第１ホスト装置１１からの転送応答を受けた際に＋１される（カウントアップされる）。
同期式カウンタ２０１の出力は、第１ホストポインタＨＳＰＮＴ１となり、その最上位１ビットは周回管理ビットである。
【００６４】
同期式カウンタ２０２は、第２ホスト装置１２からのベリファイ完了信号がデータイン端子に入力される。ベリファイ完了信号が論理１のとき、第２ホスト装置１２からのベリファイ完了応答を受けつけることになり、論理０のとき、第２ホスト装置１２からのベリファイ応答はないことになる。
同期式カウンタ２０２は、第２ホスト装置１２からのベリファイ応答を受けた際に＋１される（カウントアップされる）。
同期式カウンタ２０２の出力は、アンカーポインタＡＮＰＮＴとなり、その最上位１ビットは周回管理ビットである。
【００６５】
同期式カウンタ２０３は、第２ホスト装置１２からの転送応答信号がデータイン端子に入力される。転送応答信号が論理１のとき、第２ホスト装置１２からの転送応答を受けつけることになり、論理０のとき、第２ホスト装置１２からの転送要求はないことになる。
同期式カウンタ２０３は、第２ホスト装置１２からの転送応答を受けた際に＋１される（カウントアップされる）。
同期式カウンタ２０３の出力は、第２ホストポインタＨＳＰＮＴ２となり、その最上位１ビットは周回管理ビットである。
【００６６】
比較回路２０４は、同期式カウンタ２０１の出力である第１ホストポインタＨＳＰＮＴ１と同期式カウンタ２０２の出力であるアンカーポインタＡＮＰＮＴとの比較を行う。そして、比較回路２０４は、周回管理ビットを除いた全ビットが一致した場合に論理１を出力し、一致しない場合に論理０を出力する。比較回路２０４の出力は、ＡＮＤゲート２０７および２０８の正入力に入力される。
【００６７】
比較回路２０５は、同期式カウンタ２０１の出力である第１ホストポインタＨＳＰＮＴ１と同期式カウンタ２０３の出力である第２ホストポインタＨＳＰＮＴ２との比較を行う。そして、比較回路２０５は、周回管理ビットを含めた全ビットが一致した場合に論理１を出力し、一致しない場合に論理０を出力する。比較回路２０５の出力は、ＡＮＤゲート２１１の負入力に入力される。
【００６８】
ＥＸＯＲゲート２０６は、第１ホストポインタＨＳＰＮＴ１の最上位ビット（周回管理ビット）とアンカーポインタＡＮＰＮＴの最上位ビット（周回管理ビット）の排他的論理和をとり、その結果をＡＮＤゲート２０７の正入力およびＡＮＤゲート２０８の負入力に出力する。
【００６９】
ＡＮＤゲート２０７は、比較回路２０４の出力とＥＸＯＲゲート２０６の出力との論理積をとり、ＡＮＤゲート２０９，２１１の負入力に出力する。
ＡＮＤゲート２０８は、比較回路２０４の出力の正入力とＥＸＯＲゲート２０４の出力の負入力との論理積をとり、ＡＮＤゲート２１１，２１２の負入力に出力する。
【００７０】
ＡＮＤゲート２０９は、フリップフロップ２１７の出力信号とＡＮＤゲート２０７の出力信号の負入力との論理積をとり、ＯＲゲート２１５に出力する。
ＡＮＤゲート２１０は、フリップフロップ２１７の出力信号の負入力とＡＮＤゲート２０７の出力信号の負入力との論理積をとり、ＯＲゲート２１５に出力する。
ＡＮＤゲート２１１は、フリップフロップ２１７の出力信号とＡＮＤゲート２０７の出力信号の負入力と、比較回路２０５の出力信号の負入力との論理積をとり、ＯＲゲート２１６に出力する。
ＡＮＤゲート２１２は、フリップフロップ２１７の出力信号の負入力とＡＮＤゲート２０８の出力信号の負入力との論理積をとり、ＯＲゲート２１６に出力する。
ＡＮＤゲート２１３は、フリップフロップ２１８の出力信号とＯＲゲート２１５の出力信号の論理積をとる。ＡＮＤゲート２１３の出力信号がフリップフロップ２２０のデータイン端子に入力される。
ＡＮＤゲート２１４は、フリップフロップ２１９の出力信号とＯＲゲート２１６の出力信号の論理積をとる。ＡＮＤゲート２１４の出力信号がフリップフロップ２２１のデータイン端子に入力される。
【００７１】
フリップフロップ２１７は、転送方向指定信号を論理１または論理０で出力する。フリップフロップ２１７から出力される転送方向指定信号が論理１のときの転送方向は第１ホスト装置１１→デュアルポートＲＡＭ１３→第２ホスト装置１２である。一方、フリップフロップ２１７から出力される転送方向指定信号が論理０のときの転送方向は第２ホスト装置１２→デュアルポートＲＡＭ１３→第１ホスト装置１１である。
【００７２】
フリップフロップ２１８は、第１ホスト装置１１のポインタ制御イネーブル信号を論理１または論理０で出力する。
フリップフロップ２１８から出力されるポインタ制御イネーブル信号が論理１のとき、第１ホストポインタＨＳＰＮＴ１は本回路によるＲＡＭ制御を行う。一方、フリップフロップ２１８から出力されるポインタ制御イネーブル信号が論理０のときは本回路によるＲＡＭ制御は行わない。
【００７３】
フリップフロップ２１９は、第２ホスト装置１２のポインタ制御イネーブル信号を論理１または論理０で出力する。
フリップフロップ２１９から出力されるポインタ制御イネーブル信号が論理１のとき、第２ホストポインタＨＳＰＮＴ２は本回路によるＲＡＭ制御を行う。一方、フリップフロップ２１９から出力されるポインタ制御イネーブル信号が論理０のときは本回路によるＲＡＭ制御は行わない。
【００７４】
フリップフロップ２２０は、第１ホスト装置１１への転送要求信号（第１ホストリクエスト信号ＲＥＱ１）を論理１または論理０で出力する。
フリップフロップ２２０から出力される転送要求信号が論理１のときは第１ホスト装置１１に転送要求を行う。一方、フリップフロップ２２０から出力される転送要求信号が論理０のときは第１ホスト装置１１への転送要求は行わない。
【００７５】
フリップフロップ２２１は、第２ホスト装置１２への転送要求信号（第２ホストリクエスト信号ＲＥＱ２）を論理１または論理０で出力する。
フリップフロップ２２１から出力される転送要求信号が論理１のときは第２ホスト装置１２に転送要求を行う。一方、フリップフロップ２２１から出力される転送要求信号が論理０のときは第２ホスト装置１２への転送要求は行わない。
【００７６】
フリップフロップ２２２は、ANDゲート２０７の出力信号がデータイン端子に入力され、ＲＡＭ１３が満杯であることを示す信号を論理１または論理０で出力する。
フリップフロップ２２２から出力される信号が論理１のとき、ＲＡＭ１３は満杯であることを示す。一方、フリップフロップ２２２から出力される信号が論理０のとき、ＲＡＭ１３は満杯でないことを示す。
【００７７】
フリップフロップ２２３は、ANDゲート２０８の出力信号がデータイン端子に入力され、ＲＡＭ１３が空であることを示す信号を論理１または論理０で出力する。
フリップフロップ２２３から出力される信号が論理１のとき、ＲＡＭ１３は空であることを示す。一方、フリップフロップ２２３から出力される信号が論理０のとき、ＲＡＭ１３は空ではないことを示す。
【００７８】
次に、図１０のデータ転送制御装置の動作を転送方向が第１ホスト装置から第２ホスト装置の場合と、第２ホスト装置から第１ホスト装置の場合とに分けて説明する。
【００７９】
図１２は、転送方向が第１ホスト装置から第２ホスト装置の場合の図１０のデータ転送制御装置の動作を説明するためのフローチャートである。
図１３は、転送方向が第２ホスト装置から第１ホスト装置の場合の図１０のデータ転送制御装置の動作を説明するためのフローチャートである。
なおここでは、デュアルポートＲＡＭはページ０とページ１の記憶領域を持つものとする。
そして、第１ホストポインタＨＳＰＮＴ１は論理０でページ０を示し、論理１でページ１を示す。同様に、第２ホストポインタＨＳＰＮＴ２は論理０でページ０を示し、論理１でページ１を示す。
【００８０】
まず、図１２に関連付けて、転送方向が第１ホスト装置から第２ホスト装置の場合の図１０のデータ転送制御装置の動作を説明する。
【００８１】
ステップＳＴ１：
「第１ホスト装置１１の制御許可信号」＝“0”かつ「第２ホスト装置１２の制御許可信号」＝“0”、もしくは、リセット（Reset）解除した状態から開始する。
【００８２】
ステップＳＴ２：
転送前準備を行う。すなわち、
「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１（周回管理ビット除く）」に“0”をセットし、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１の周回管理ビット」に“0”をセットする。
「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２（周回管理ビット除く）」に“0”をセットし、「第２ホストポインタ（ホスト２ポインタ）ＨＳＰＮＴ２の周回管理ビット」に“0”をセットする。
「アンカーポインタＡＮＰＮＴ（周回管理ビット除く）」に“0”をセットし、「アンカーポインタＡＮＰＮＴの周回管理ビット」に“0”をセットする。
「転送方向指定信号」に“1”(第１ホスト装置→デュアルポートＲＡＭ→第２ホスト装置)をセットし、「第１ホスト装置のポインタ制御イネーブル信号」に“1”(制御許可)をセットし、「第２ホスト装置のポインタ制御イネーブル信号」に“1”(制御許可)をセットする。
【００８３】
ステップＳＴ３：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１（周回管理ビット除く）」は“0”、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１の周回管理ビット」は“0”、「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２（周回管理ビット除く）」は“0”、「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２の周回管理ビット」は“0”、「アンカーポインタＡＮＰＮＴ（周回管理ビット除く）」は“0”、「アンカーポインタＡＮＰＮＴの周回管理ビット」は“0”、「ＲＡＭは空である」、「第１ホスト装置１１側に転送要求を行う」、「第２ホスト装置１２側に転送要求を行わない」である。
そして、ＲＡＭ１３のページ０に第１ホスト装置１１からデータを転送する。
【００８４】
ステップＳＴ４：
「第１ホスト装置１１からの転送応答信号」が“1”であるかの判定を行う。
論理１である場合、第１ホスト装置１１からＲＡＭ１３のページ０へのデータ転送が完了する。そして、ＲＡＭ１３のページ０には第１ホスト装置１１から書き込んだデータが存在する。
【００８５】
ステップＳＴ５：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“1”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“0”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“0”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは空ではない、満杯でもない」、「第１ホスト装置側に転送要求を行う」、「第２ホスト装置側に転送要求を行う」である。
そして、ＲＡＭ１３のページ１に第１ホスト装置１１からデータを転送する。
【００８６】
ステップＳＴ６：
「ホスト1からの転送応答信号」が”1"であるかの判定を行う。
なお、後で示すステップＳＴ６の処理は、後で説明するステップＳＴ９の処理と同時に起こりうる。
転送応答信号が論理１の場合、第１ホスト装置１１からＲＡＭ１３のページ１へのデータ転送が完了する。
【００８７】
ステップＳＴ７：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“0”、「第１ホストポインタの周回管理ビット」は“1”、「第２ホストポインタ（周回管理ビット除く）」は“0”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“0”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは満杯である」、「ホスト1側に転送要求を行わない」、「ホスト2側に転送要求を行う」である。
ページ０，１には第１ホスト装置１１から書き込んだデータが存在する。
【００８８】
ステップＳＴ８：
「第１ホスト装置の制御許可信号」および「第２ホスト装置の制御許可信号」の両方に“0”をセットする。もしくは、レジスタの初期化が行われるまで処理を継続する。
【００８９】
ステップＳＴ９：
「第２ホスト装置からの転送応答信号」が“1”であるかを判定する。
ここで、転送応答信号が論理１の場合、ＲＡＭ１３から第２ホスト装置１２にデータ転送が完了する。
【００９０】
ステップＳＴ１０：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“1”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“1”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“0”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは空ではない、満杯でもない」、「第１ホスト装置側に転送要求を行う」、「第２ホスト装置側に転送要求を行わない」である。
このとき、第１ホスト装置１１→デュアルポートＲＡＭ→第２ホスト装置１２という転送時はＲＡＭ１３のページ０から第２ホスト装置１２に転送後、第２ホスト装置１２はベリファイを行う。
【００９１】
ステップＳＴ１１：
「第２ホスト装置からのベリファイ完了信号」が“1”であるかの判定を行う。
ベリファイ完了信号が論理１の場合、ＲＡＭ１３のページ０のデータを第２ホスト装置１２でベリファイが完了したことを示す。
【００９２】
ステップＳＴ１２：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“1”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“1”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“1”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは空である」、「ホスト1側に転送要求を行う」、「ホスト2側に転送要求を行わない」である。
このとき、ページ０，１にデータは存在しない。
【００９３】
ステップＳＴ１３：
「第１ホスト装置の制御許可信号」および「第２ホスト装置の制御許可信号」の両方に“0”をセットする。もしくは、レジスタの初期化が行われるまで処理を継続する。
【００９４】
次に、図１３に関連付けて、転送方向が第２ホスト装置から第１ホスト装置の場合の図１１のデータ転送制御装置の動作を説明する。
【００９５】
ステップＳＴ２１：
「第１ホスト装置１１の制御許可信号」＝“0”かつ「第２ホスト装置１２の制御許可信号」＝“0”、もしくは、リセット（Reset）解除した状態から開始する。
【００９６】
ステップＳＴ２２：
転送前準備を行う。すなわち、
「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１（周回管理ビット除く）」に“0”をセットし、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１の周回管理ビット」に“0”をセットする。
「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２（周回管理ビット除く）」に“0”をセットし、「第２ホストポインタ（ホスト２ポインタ）ＨＳＰＮＴ２の周回管理ビット」に“0”をセットする。
「アンカーポインタＡＮＰＮＴ（周回管理ビット除く）」に“0”をセットし、「アンカーポインタＡＮＰＮＴの周回管理ビット」に“0”をセットする。
「転送方向指定信号」に“0”(第２ホスト装置→デュアルポートＲＡＭ→第１ホスト装置)をセットし、「第１ホスト装置のポインタ制御イネーブル信号」に“1”(制御許可)をセットし、
「第２ホスト装置のポインタ制御イネーブル信号」に“1”(制御許可)をセットする。
【００９７】
ステップＳＴ２３：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１（周回管理ビット除く）」は“0”、「第１ホストポインタ（ホスト1ポインタ）ＨＳＰＮＴ１の周回管理ビット」は“0”、「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２（周回管理ビット除く）」は“0”、「第２ホストポインタ（ホスト2ポインタ）ＨＳＰＮＴ２の周回管理ビット」は“0”、「アンカーポインタＡＮＰＮＴ（周回管理ビット除く）」は“0”、「アンカーポインタＡＮＰＮＴの周回管理ビット」は“0”、「ＲＡＭは空である」、「第１ホスト装置１１側に転送要求を行わない」、「第２ホスト装置１２側に転送要求を行う」である。
そして、ＲＡＭ１３のページ０に第２ホスト装置１２からデータを転送する。
【００９８】
ステップＳＴ２４：
「第２ホスト装置１２からの転送応答信号」が“1”であるかの判定を行う。
論理１である場合、第２ホスト装置１２からＲＡＭ１３のページ０へのデータ転送が完了する。
そして、ＲＡＭ１３のページ０には第２ホスト装置１２から書き込んだデータが存在する。
このとき、第２ホスト装置１２→デュアルポートＲＡＭ→第１ホスト装置１１という転送時はベリファイを行わないため、アンカーポインタＡＮＰＮＴは第２ホストポインタＨＳＰＮＴ２と共に移動する。
【００９９】
ステップＳＴ２５：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“0”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“1”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“1”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは空ではない、満杯でもない」、「第１ホスト装置側に転送要求を行う」、「第２ホスト装置側に転送要求を行う」である。
そして、ＲＡＭ１３のページ１に第２ホスト装置１２からデータを転送する。
【０１００】
ステップＳＴ２６：
「ホスト1からの転送応答信号」が“1”であるかの判定を行う。
なお、後で示すステップＳＴ２６の処理は、後で説明するステップＳＴ２９の処理と同時に起こりうる。
転送応答信号が論理１の場合、第２ホスト装置１２からＲＡＭ１３のページ１へのデータ転送が完了する。
そして、ＲＡＭ１３のページ１には第２ホスト装置１２から書き込んだデータが存在する。
このとき、第２ホスト装置１２→デュアルポートＲＡＭ→第１ホスト装置１１という転送時はベリファイを行わないため、アンカーポインタＡＮＰＮＴは第２ホストポインタＨＳＰＮＴ２と共に移動する。
【０１０１】
ステップＳＴ２７：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“0”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“0”、「第２ホストポインタの周回管理ビット」は“1”、「アンカーポインタ（周回管理ビット除く）」は“0”、「アンカーの周回管理ビット」は“1”、「ＲＡＭは満杯である」、「ホスト1側に転送要求を行う」、「ホスト2側に転送要求を行わない」である。
ページ０，１には第２ホスト装置１２から書き込んだデータが存在する。
【０１０２】
ステップＳＴ２８：
「第１ホスト装置の制御許可信号」および「第２ホスト装置の制御許可信号」の両方に“0”をセットする。もしくは、レジスタの初期化が行われるまで処理を継続する。
【０１０３】
ステップＳＴ２９：
「第１ホスト装置からの転送応答信号」が“1”であるかを判定する。
ここで、転送応答信号が論理１の場合、ＲＡＭ１３から第１ホスト装置１１にデータ転送が完了する。
【０１０４】
ステップＳＴ３０：
ＲＡＭ１３の状態をレジスタから読み取る。
この場合、「第１ホストポインタ（周回管理ビット除く）」は“1”、「第１ホストポインタの周回管理ビット」は“0”、「第２ホストポインタ（周回管理ビット除く）」は“1”、「第２ホストポインタの周回管理ビット」は“0”、「アンカーポインタ（周回管理ビット除く）」は“1”、「アンカーの周回管理ビット」は“0”、「ＲＡＭは空である」、「第１ホスト装置側に転送要求を行わない」、「第２ホスト装置側に転送要求を行う」である。
このとき、ページ０，１にデータは存在しない。
【０１０５】
ステップＳＴ３１：
「第１ホスト装置の制御許可信号」および「第２ホスト装置の制御許可信号」の両方に“0”をセットする。もしくは、レジスタの初期化が行われるまで処理を継続する。
【０１０６】
以上のように、本実施形態によれば、デュアルポートＲＡＭは内部にページという一定単位の記憶領域を持ち、ページを複数持つことで記憶領域を形成しており、そして、各ポインタに対して1bit毎の周回管理ビットを持つことにより、記憶領域全体を管理することができる。
すなわち、領域毎にポインタを持つ必要がなく、より少ないポインタ数でデュアルポートＲＡＭ全体を管理できるため、より効率的に制御できる利点がある。
【０１０７】
図１４は、本実施形態に係るデュアルポートＲＡＭのポインタ制御の応用例を説明するための図である。
【０１０８】
この応用例においては、ＲＡＭ１３に入力されるクロックとデータバスの切り替え機能を有するセレクタモジュール１５を設け、ＲＡＭの１ページに対して一つのシングルポートＲＡＭを設けている。
以上の２点に対応することで、シングルポートＲＡＭに対しても本実施形態のポインタ制御方法を実装することが可能である。
【０１０９】
図１５は、転送方向が第１ホスト装置から第２ホスト装置の場合の図１４の情報処理シスムのデータ転送制御装置の動作を説明するためのフローチャートである。
図１６は、転送方向が第２ホスト装置から第１ホスト装置の場合の図１４の情報処理システムにおけるデータ転送制御装置の動作を説明するためのフローチャートである。
【０１１０】
図１５のフローチャートが図１２のフローチャートと異なる点は、ステップＳＴ５とステップＳＴ６との間にステップＳＴ５Ａを設けたことにある。
同様に、図１６のフローチャートが図１３のフローチャートと異なる点は、ステップＳＴ２５とステップＳＴ２６との間にステップＳＴ２５Ａを設けたことにある。
ステップＳＴ５ＡおよびＳＴ２５Ａの処理は、ＲＡＭクロックを切り替える切り替えモジュール（セレクタモジュール）によりＲＡＭのページ０に入力されるクロックとデータバスとを第１ホスト装置１１がアクセスするクロックとデータバスから第２ホスト装置１２がアクセスするクロックとデータバスに切り替える。
その他の処理は図１２および図１３と同様である。
【図面の簡単な説明】
【０１１１】
【図１】本発明の第１の実施形態に係るデュアルポートＲＡＭにおけるデータ転送制御装置を採用した情報処理システムの構成例を示すブロック図である。
【図２】転送方向が第１ホスト装置から第２ホスト装置の場合の表１の条件に従うように第１リクエスト信号ＲＥＱ１がアクティブ（Active）になる条件を示す図である。
【図３】転送方向が第２ホスト装置から第１ホスト装置の場合の表２の条件に従うように第１リクエスト信号ＲＥＱ１がアクティブ（Active）になる条件を示す図である。
【図４】転送方向が第１ホスト装置から第２ホスト装置の場合の表１の条件に従うように第２リクエスト信号ＲＥＱ２がアクティブ（Active）になる条件を示す図である。
【図５】転送方向が第２ホスト装置から第１ホスト装置の場合の表２の条件に従うように第２リクエスト信号ＲＥＱ２がアクティブ（Active）になる条件を示す図である。
【図６】転送方向が第１ホスト装置から第２ホスト装置の場合の表１の条件に従うようにデュアルポートＲＡＭが空であると判定する各ポインタの位置条件を示す図である。
【図７】転送方向が第２ホスト装置から第１ホスト装置の場合の表２の条件に従うようにデュアルポートＲＡＭが空であると判定する各ポインタの位置条件を示す図である。
【図８】転送方向が第１ホスト装置から第２ホスト装置の場合の表１の条件に従うようにデュアルポートＲＡＭが満杯であると判定する各ポインタの位置条件を示す図である。
【図９】転送方向が第２ホスト装置から第１ホスト装置の場合の表２の条件に従うようにデュアルポートＲＡＭが満杯であると判定する各ポインタの位置条件を示す図である。
【図１０】本実施形態に係るデータ転送制御装置の構成例を示す回路図である。
【図１１】図１０のカウントとフリップフロップの端子についての説明図である。
【図１２】転送方向が第１ホスト装置から第２ホスト装置の場合の図１０のデータ転送制御装置の動作を説明するためのフローチャートである。
【図１３】転送方向が第２ホスト装置から第１ホスト装置の場合の図１０のデータ転送制御装置の動作を説明するためのフローチャートである。
【図１４】本実施形態に係るデュアルポートＲＡＭのポインタ制御の応用例を説明するための図である。
【図１５】転送方向が第１ホスト装置から第２ホスト装置の場合の図１４の情報処理シスムのデータ転送制御装置の動作を説明するためのフローチャートである。
【図１６】転送方向が第２ホスト装置から第１ホスト装置の場合の図１４の情報処理システムにおけるデータ転送制御装置の動作を説明するためのフローチャートである。
【符号の説明】
【０１１２】
１０・・・情報処理システム、１１・・・第１ホスト装置（ホスト１）、１２・・・第２ホスト装置（ホスト２）、１３・・・デュアルポートＲＡＭ、１３１・・・第１ポート、１３２・・・第２ポート、１４・・・転送制御部、ＨＳＰＮＴ１・・・第１ホストポインタ、ＨＳＰＮＴ２・・・第２ホストポインタ、ＡＮＰＮＴ・・・アンカーポインタ。
【図１】
2007257032.tif 000005
【図２】
2007257032.tif 000006
【図３】
2007257032.tif 000007
【図４】
2007257032.tif 000008
【図５】
2007257032.tif 000009
【図６】
2007257032.tif 000010
【図７】
2007257032.tif 000011
【図８】
2007257032.tif 000012
【図９】
2007257032.tif 000013
【図１０】
2007257032.tif 000014
【図１１】
2007257032.tif 000015
【図１２】
2007257032.tif 000016
【図１３】
2007257032.tif 000017
【図１４】
2007257032.tif 000018
【図１５】
2007257032.tif 000019
【図１６】
2007257032.tif 000020