(57)【特許請求の範囲】
【請求項１】
少なくとも２面からなる複数のメモリと、
書き込み先の前記メモリを所定の順番で切り替えて、かつ所定の周期でデータを送信し前記メモリに書き込ませるデータ送信部と、
前記書き込みの周期に依存しない周期で、前記複数のメモリのうち少なくとも２面の前記メモリより同時に前記データを周期的に読み出すデータ受信部と、
前記データ送信部が前記メモリに送信する前記データに対して各データに固有な判定情報を付加する判定情報付加部と、
前記データ受信部が前記メモリより読み出した前記データに付加された前記判定情報を用いて前記データが有効であるか否かを判定し、判定結果を前記データ受信部に通知する判定情報検査部と、を備えて、
前記判定情報は、前記データが更新される前後でデータの新旧が識別可能な特有の番号であるシーケンス番号であり、
前記判定情報付加部は、前記データのヘッダーに前記シーケンス番号を付加し、前記データのフッターに前記シーケンス番号をビット反転した反転シーケンス番号を付加し、
前記判定情報検査部は、前記シーケンス番号と前記反転シーケンス番号とを読み出し、前記シーケンス番号と、前記反転シーケンス番号をビット反転した情報とを比較し、一致する場合には前記データが有効であると判定することを特徴とするデータ転送装置。
【請求項２】
前記データ受信部は、少なくとも２面の前記メモリより同時にデータを周期的に読み出し、いずれのデータも無効である旨の判定結果が通知された場合、次回の読み出しの周期において前記データを読み出すメモリを、今回読み出しを行ったメモリの一方を他方のメモリと異なるメモリに切り替える請求項１記載のデータ転送装置。
【請求項３】
前記データ受信部は、前記データを読み出す各メモリをそれぞれの所定の順序で切り替え、次回の前記読み出しの周期において切り替えられる前記メモリは、次の順位の前記メモリが今回の前記読み出しの周期において読み出しが行われていないメモリとなっているメモリである請求項２記載のデータ転送装置。
【請求項４】
前記データ送信部は、一回の前記書き込みの周期において、同一の前記データを異なる２面以上の前記メモリに遅延時間を持って書き込む請求項１記載のデータ転送装置。
【請求項５】
前記データ受信部は、同時に受信した前記データに有効と判定された前記データが複数ある場合、最新の前記シーケンス番号が付与されている前記データを使用する請求項１記載のデータ転送装置。
【請求項６】
前記判定情報検査部は、今回読み出した前記シーケンス番号を保持し、保持した前記シーケンス番号と次回読み出した前記シーケンス番号とが一致する場合、前記データ受信部に対して前記データの読み出しを停止する旨を通知する請求項１記載のデータ転送装置。
【請求項７】
前記判定情報は、前記データをビット反転した反転データであり、
前記判定情報付加部は、前記反転データを前記メモリの予め取り決められた領域に蓄積し、
前記判定情報検査部は、前記予め取り決められた領域より前記反転データを読み出し、前記データと、前記反転データをビット反転した情報とを比較し、一致する場合には前記データが有効であると判定する請求項１記載のデータ転送装置。
【請求項８】
少なくとも２面からなる複数のメモリを準備するステップと、
書き込み先の前記メモリを所定の順番で切り替えて、かつ所定の周期でデータを送信し前記メモリに書き込む書き込みステップと、
前記書き込みの周期に依存しない周期で、前記複数のメモリのうち少なくとも２面の前記メモリより同時に前記データを周期的に読み出す受信ステップと、
前記メモリに送信する前記データに対して各データに固有な判定情報を付加する判定情報付加ステップと、
前記メモリより読み出した前記データに付加された前記判定情報を用いて前記データが有効であるか否かを判定し、判定結果を前記データの受信先に通知する検査ステップと、を備えて、
前記判定情報は、前記データが更新される前後でデータの新旧が識別可能な特有の番号であるシーケンス番号であり、
前記判定情報付加ステップは、前記データのヘッダーに前記シーケンス番号を付加し、前記データのフッターに前記シーケンス番号をビット反転した反転シーケンス番号を付加し、
前記検査ステップは、前記シーケンス番号と前記反転シーケンス番号とを読み出し、前記シーケンス番号と、前記反転シーケンス番号をビット反転した情報とを比較し、一致する場合には前記データが有効であると判定することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリへのデータの書き込みおよび読み出しが相互に依存することなく行い得るデータ伝送装置およびその方法に関する。
【背景技術】
【０００２】
例えば、随時更新されるデータを外部ネットワークから取り込み、演算処理部でそのデータを処理する装置が知られている。この装置は、受信したデータをメモリやストレージに一時蓄積し、演算処理部がメモリからデータを読み出して演算処理する。
【０００３】
この場合、メモリへの書き込み側と読み出し側との動作は、お互いの動作に依存せず自由に行いたいという要求がある。また、データの書き込み速度と読み出し速度が異なる、または周期が異なる場合はデータの入出力の為のポートを２つ設けたメモリ（ＲＡＭ）であるデュアルポートメモリが用いられることがある。
【０００４】
その一方で、高速で読み出し（リード）／書き込み（ライト）可能なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）などのメモリが主流となっている。このため、デュアルポートメモリは衰退しており、長期安定供給性に対する課題がある。また、デュアルポートメモリの両方のポートで同じアドレスのデータを同時に読み出し／書き込みされた場合、処理が競合しデータが不定となる場合がある。
【０００５】
ＳＲＡＭやＳＤＲＡＭを用いて、書き込み側と読み出し側との制御でデータラインを切替えて入出力する排他的アクセス制御を行う手法がある。書き込み側と読み出し側とから同時にアクセスが行われた場合、この手法ではいずれか一方はアクセスを待機しなければならない。
【０００６】
ＳＲＡＭ／ＳＤＲＡＭとデュアルポートメモリ両方の課題として、メモリに対する１回のアクセスサイクルでは、データのビット幅（８ｂｉｔ、１６ｂｉｔなど）より長いデータ長で有効な意味を持つデータ（「データ列」と言う。）の転送をする場合、あるデータ列のリードアクセス中に同じアドレス領域のデータ列へのライトアクセスによりデータが更新されると、読み出されたデータ列に古いデータ（前回書き込まれたデータ）と新しいデータ（今回書きこまれたデータ）とが混在してしまう。
【０００７】
そこで、従来、読み出されたデータフレームに今回書き換えられたデータと前回書き換えられたままのデータとが混在するか否かを判断するための技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−３２３１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
データの混在を回避するため、メモリのアドレス領域を分割、または物理的に異なるメモリとすることでメモリの領域を２分割することが考えられる。これにより、片側のメモリ領域にライトアクセスしている場合は、もう一方のメモリ領域にリードアクセスすることができる。
【００１０】
例えば、データ列単位の書き込みが完了した後に読み出し側に面の切替えを許可し、有意なデータ列の更新中にはそのデータ列を読み出しさせないようにすることでデータの混在を回避する手法がとられる。
【００１１】
しかし、この場合、データ列の書き込みが完了しないと読み出し側でメモリを切替えることができない。このため、ライトアクセスとリードアクセスはお互いの状況を確認しあわなければならないという制約がある。
【００１２】
本発明は上述した課題を解決するためになされたものであり、書き込み側と読み出し側とがお互いのアクセスに制約を受けず、自由にリードライトすることができ、データの有効性を向上させることができるデータ転送装置およびデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るデータ転送装置は、上述した課題を解決するために、少なくとも２面からなる複数のメモリと、書き込み先の前記メモリを所定の順番で切り替えて、かつ所定の周期でデータを送信し前記メモリに書き込ませるデータ送信部と、前記書き込みの周期に依存しない周期で、前記複数のメモリのうち少なくとも２面の前記メモリより同時に前記データを周期的に読み出すデータ受信部と、前記データ送信部が前記メモリに送信する前記データに対して各データに固有な判定情報を付加する判定情報付加部と、前記データ受信部が前記メモリより読み出した前記データに付加された前記判定情報を用いて前記データが有効であるか否かを判定し、判定結果を前記データ受信部に通知する判定情報検査部と、を備えて、前記判定情報は、前記データが更新される前後でデータの新旧が識別可能な特有の番号であるシーケンス番号であり、前記判定情報付加部は、前記データのヘッダーに前記シーケンス番号を付加し、前記データのフッターに前記シーケンス番号をビット反転した反転シーケンス番号を付加し、前記判定情報検査部は、前記シーケンス番号と前記反転シーケンス番号とを読み出し、前記シーケンス番号と、前記反転シーケンス番号をビット反転した情報とを比較し、一致する場合には前記データが有効であると判定することを特徴とする。
【発明の効果】
【００１４】
本発明に係るデータ転送装置およびその方法においては、書き込み側と読み出し側とがお互いのアクセスに制約を受けず、自由にリードライトすることができる。また、データの有効性を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係るデータ転送装置の第１実施形態を示すブロック図。
【図２】デュアルポートメモリの構成例を示す説明図。
【図３】ＳＲＡＭまたはＳＤＲＡＭを用いてデュアルポートメモリ相当の機能を実現したものの構成例を示す説明図。
【図４】データ転送装置の第１のメモリ、判定情報生成付加部、および判定情報抽出検査部を特に示す説明図。
【図５】第１のメモリのメモリ構造の一例を示す図。
【図６】データ列１〜３の第１のメモリへのデータ列配置例を示す図。
【図７】シーケンス番号および反転シーケンス番号がヘッダーおよびフッターに付加されたデータ列（データ列２）の第１のメモリへのデータ列配置例を示す図。
【図８】データ列２の同期性が保たれない場合の例を時間軸に沿って示した図。
【図９】第１のメモリ内のデータ列２の同期性が保たれない場合のデータ列配置例を示す図。
【図１０】比較例としてのデータ転送装置を示す説明図。
【図１１】メモリのライト側およびリード側の切替タイミングが依存関係にある場合のタイミング図。
【図１２】メモリのライト側およびリード側の切替タイミングが依存関係にない場合のタイミング図。
【図１３】第１実施形態におけるデータ転送装置のライトアクセスおよびリードアクセスのタイミング図。
【図１４】第１実施形態におけるデータ転送装置のライト側の処理を説明するフローチャート。
【図１５】第１実施形態におけるデータ転送装置のリード側の処理を説明するフローチャート。
【図１６】同時に２面のメモリより読み出しを行う場合のデータ転送装置のライトアクセスおよびリードアクセスのタイミング図。
【図１７】同時に２面のメモリより読み出しを行う場合であって、同期性が確保されない場合のデータ転送装置のライトアクセスおよびリードアクセスのタイミング図。
【図１８】同時に２面のメモリより読み出しを行う場合であって、同期性が確保され得る場合のデータ転送装置のライトアクセスおよびリードアクセスのタイミング図。
【図１９】データ転送装置が２面のメモリに対し同時に読み出しを行う場合のリード側の処理を説明するフローチャート。
【図２０】データの有効性を判定するためのデータのデータ列配置例を示す図。
【図２１】本発明に係るデータ転送装置の第２実施形態を示すブロック図。
【図２２】第２実施形態におけるデータ転送装置のライトアクセスおよびリードアクセスのタイミング図。
【発明を実施するための形態】
【００１６】
本発明に係るデータ転送装置およびその方法の各実施形態について、図面を参照して説明する。
【００１７】
［第１実施形態］
図１は、本発明に係るデータ転送装置の第１実施形態を示すブロック図である。
【００１８】
データ転送装置１は、例えば外部ネットワークから受信した随時更新されるデータをデータ受信部１０において受信し、第１のメモリ１１ａ〜第３のメモリ１１ｃ（第１〜第３のメモリ１１ａ〜１１ｃを特に区別しない場合には単に「メモリ１１」という。）にデータを一時蓄積する。データ転送装置１は、メモリ１１に蓄積されたデータを演算処理部１２により読み出して演算処理する。
【００１９】
データ受信部１０は、外部ネットワークより、随時更新されるデータを受信する。データ受信部１０は、受信したデータを判定情報生成付加部１３に供給する。データ受信部１０は、データを書き込むアドレス（アドレスＡ）と、メモリ１１に書き込み（ライト）を行わせるための制御信号（ライトＡ）とをセレクター（ＳＥＬＡ）１４ａを介してメモリ１１へ供給する。また、データ受信部１０は、セレクター１４ａに対してデータを記憶するメモリ１１の切替を指示するための面切替信号（面切替Ａ）を供給する。第１実施形態においては、データ受信部１０は、書き込み先のメモリを所定の順番で切り替えて、かつ所定の周期でデータを送信し、メモリ１１にデータを書き込ませるデータ送信部である。
【００２０】
判定情報生成付加部１３は、判定情報としてのシーケンス番号および反転シーケンス番号を生成し、データ受信部１０より供給されたデータに付加してセレクター１４ａに供給する。
【００２１】
セレクター１４ａは、データ受信部１０より通知された面切替信号に基づいてデータを蓄積するメモリ１１を切り替える。
【００２２】
メモリ１１は、書き込みおよび読み出しが同時に実行可能であるメモリである。メモリ１１は、例えばデュアルポートメモリ、またはＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）などのメモリを用いてデュアルポートメモリ相当の機能を実現させたもので構成される。メモリ１１は、少なくとも３面設けられ、それぞれが物理的に異なるメモリである。
【００２３】
図２は、デュアルポートメモリ２０の構成例を示す説明図である。
【００２４】
図３は、ＳＲＡＭまたはＳＤＲＡＭを用いてデュアルポートメモリ相当の機能を実現したものの構成例を示す説明図である。
【００２５】
デュアルポートメモリ２０は、データの入出力の為のポートを２つ設けたメモリ（ＲＡＭ）である。
【００２６】
「ＳＲＡＭまたはＳＤＲＡＭを用いてデュアルポートメモリ相当の機能を実現した」メモリは、ＳＲＡＭ、ＳＤＲＡＭのように書き込みおよび読み出しを同時には行えないメモリ２１であっても、Ａ側のデータ・制御バスとＢ側のデータ・制御バスとの調停を行うアクセス調停部２２を有することによりデュアルポートメモリ相当の機能を実現することができる。
【００２７】
例えば、アクセス調停部２２は、Ａ側のアクセス発生時にはＡ側にメモリ２１のアクセス権を与え、Ｂ側のアクセス発生時にはＢ側にメモリ２１のアクセス権を与える。また、アクセス調停部２２は、一方のアクセス時に他方のアクセスが発生した場合、他方のアクセスを一時待機させ、一方のアクセス終了後に他方にアクセス権を与える。アクセス権の与え方は、先着優先であったり、必ず交互であったりする。
【００２８】
判定情報抽出検査部１５ａ〜１５ｃ（特に区別しない場合は単に「判定情報抽出検査部１５」という。）は、判定情報生成付加部１３によりデータ列に付加されたシーケンス番号および反転シーケンス番号を抽出し、データ列が有効であるか否かを検査し、その結果を演算処理部１２に供給する。
【００２９】
セレクター（ＳＥＬＢ）１４ｂは、演算処理部１２より供給された面切替信号（面切替Ｂ）に基づいてデータを読み出すメモリの切替を行う。
【００３０】
演算処理部１２は、セレクター１４ｂを介してデータ列をメモリ１１より読み出し（リードし）、読み出されたデータ列に対して所要の演算処理を行う。演算処理部１２は、データを読み出すアドレス（アドレスＢ）と、メモリ１１より読み出しを行わせるための制御信号（リードＢ）とをセレクター（ＳＥＬＢ）１４ｂを介してメモリ１１へ供給する。演算処理部１２は、データ受信部１０の受信タイミング（書き込みタイミング）に依存することなく、任意のタイミング（周期）でデータの読み出しを行うようになっている。第１実施形態においては、演算処理部１２は、書き込みの周期に依存しない周期で、少なくとも２面のメモリより同時にデータを受信するデータ受信部である。
【００３１】
次に、メモリ１１、判定情報生成付加部１３、および判定情報抽出検査部１５の詳細について説明する。
【００３２】
図４は、データ転送装置１の第１のメモリ１１ａ、判定情報生成付加部１３、および判定情報抽出検査部１５ａを特に示す説明図である。第１〜第３のメモリ１１ａ〜１１ｃおよび判定情報抽出検査部１５ａ〜１５ｃはそれぞれほぼ同様の構成であるため、図４においては第１のメモリ１１ａおよび判定情報抽出検査部１５ａのみを説明する。また、セレクター１４ａの記載は省略した。
【００３３】
図５は、第１のメモリ１１ａのメモリ構造の一例を示す図である。
【００３４】
図６は、データ列１〜３の第１のメモリ１１ａへのデータ列配置例を示す図である。
【００３５】
第１のメモリ１１ａは、例えばアドレス０〜ｎ−１（アドレスＡ０、Ａ１、・・・、Ａｎ−２、Ａｎ−１）が割り当てられ各データ幅がｋビット（０〜ｂｋ−１）からなるメモリである。第１のメモリ１１ａにデータ受信部１０より供給されるデータ列（データのビット幅（ここではｋビット）より長いデータ長で有効な意味を持つデータ）が直接蓄積された場合には、データ列１にはアドレスＡ０〜Ａｐ−１、データ列２にはアドレスＡｐ〜Ａ２ｐ−１、データ列３にはＡ２ｐ〜Ａ３ｐ−１のアドレス領域が割り当てられる。
【００３６】
判定情報生成付加部１３は、データ受信部１０より供給されるライトデータＡのヘッダー（先頭）にシーケンス番号を付加する。また、判定情報生成付加部１３は、ヘッダーに付加されるシーケンス番号をビット反転させた反転シーケンス番号をライトデータＡのフッター（最後尾）に付加する。すなわち、判定情報生成付加部１３は、ヘッダーとフッターとが付加されたヘッダー・フッター付ライトデータを生成する。
【００３７】
図７は、シーケンス番号および反転シーケンス番号がヘッダーおよびフッターに付加されたデータ列（データ列２）の第１のメモリ１１ａへのデータ列配置例を示す図である。
【００３８】
シーケンス番号は、第１のメモリ１１ａの全領域において唯一特有の番号であり、同じアドレス領域でデータ列が更新される前後でデータの新旧が識別可能な特有の番号とする。例えば、第１のメモリ１１ａの全領域に１０個のデータ列１〜１０を割り当てる場合、データ列１のヘッダーにはデータを更新する度に０ａ、０ｂ、０ｃ・・・（ここでは１６進数で表わすが実際には８ビットの情報である。）というシーケンス番号を付加し、フッターにはｆ５、ｆ４、ｆ３・・・という反転シーケンス番号を付加する。データ列２のヘッダーには１ａ、１ｂ、１ｃ・・・というシーケンス番号を付加し、フッターにはｅ５、ｅ４、ｅ３・・・、という反転シーケンス番号を付加する。
【００３９】
判定情報抽出検査部１５ａは、第１のメモリ１１ａから読み出すデータ列のヘッダーに付加されたシーケンス番号と、データ列と、フッターに付加された反転シーケンス番号とを順次読み出す。判定情報抽出検査部１５ａは、フッターに付加された反転シーケンス番号をさらにビット反転したデータとヘッダーに付加されたシーケンス番号とを比較し、これらのデータが一致するか否かを判定する。
【００４０】
図８は、データ列２の同期性が保たれない場合の例を時間軸に沿って示した図である。
【００４１】
図９は、第１のメモリ１１ａ内のデータ列２の同期性が保たれない場合のデータ列配置例を示す図である。
【００４２】
ヘッダーに付加されたシーケンス番号とフッターに付加された反転シーケンス番号とは、判定情報生成付加部１３により付加された時点では一致する。これに対し、図８に示すように、ヘッダーのシーケンス番号、データ列、フッターの反転シーケンス番号を順次読み出している最中に第１のメモリ１１ａに対してデータ列の書き込みが行われデータ列が更新される場合が起こり得る。
【００４３】
具体的には、第１のメモリ１１ａに蓄積されたデータ列に対してリードアクセスが開始された直後に、リード速度より若干速い速度でライトアクセスが開始された。読み出し完了前に書き込みが完了したような場合、読み出しているデータに更新前の古いデータと更新後の新しいデータとが混在してしまう。
【００４４】
なお、例えばリード側でデータ列ｎがリードされ、ライト側でデータ列ｎ−１がライトされる場合には、このような問題は生じない。
【００４５】
この場合、図９に示すように、データ列２のデータは、更新前のデータと更新後のデータとが混在する。また、フッターに付加される反転シーケンス番号は、更新後の新しいライトデータに付与されたシーケンス番号がビット反転されたデータとなる。このため、ヘッダーのシーケンス番号とフッターの反転シーケンス番号をビット反転したデータとは不一致となる。
【００４６】
判定情報抽出検査部１５ａは、フッターに付加された反転シーケンス番号をさらにビット反転したデータとヘッダーに付加されたシーケンス番号とを比較し、これらのデータが一致すると判定した場合、読み出したデータは同期性が確保されており有効である旨の信号を演算処理部１２に供給する。
【００４７】
一方、判定情報抽出検査部１５ａは、これらのデータが不一致であると判定した場合、データの同期性は確保されていないと判定し、データは無効である旨の信号を演算処理部１２に供給する。判定情報抽出検査部１５ａは、データとともにデータが無効である旨の信号を演算処理部１２に供給してもよいし、無効である旨の信号のみを供給してもよい。
【００４８】
また、判定情報抽出検査部１５ａは、有効と判定されたデータ列のシーケンス番号を保持する。判定情報抽出検査部１５ａは、この保持されたシーケンス番号と次の周期で第１のメモリ１１ａより読み出されたデータに付加されたシーケンス番号とを比較する。判定情報抽出検査部１５ａは、保持するシーケンス番号と、読み出されたデータ列に付加されたシーケンス番号とが一致する場合、スキップ信号を演算処理部１２に対して出力する。これにより、判定情報抽出検査部１５ａは、データが更新されておらず既に読み出し終えたデータと同一のデータが第１のメモリ１１ａに蓄積されていることを通知し、演算処理部１２が不要な読み出しを行わないようにすることができる。
【００４９】
なお、図１のデータ転送装置１は、データ受信部１０がデータの送信側（ライト側）、演算処理部１２がデータの受信側（リード側）である例を説明したが、もちろんライト側とリード側とを入れ替えることもできる。
【００５０】
次に、データ転送装置１が書き込みおよび読み出しを行う際にメモリ１１を切り替える場合の動作について説明する。
【００５１】
第１実施形態におけるデータ転送装置１の動作の説明に先立ち、想定され得るデータ転送装置の課題について説明する。
【００５２】
図１０は、比較例としてのデータ転送装置１００を示す説明図である。データ転送装置１００は、２面のメモリを有する。２面のメモリは、面切替信号によりいずれか一方のメモリがライト側、他方がリード側となるように切り替わる。デュアルポートメモリ１０１ａ、１０１ｂおよびセレクター１０２ａ、１０２ｂについては、図１のメモリ１１およびセレクター１４ａ、１４ｂとほぼ同様である。
【００５３】
図１１は、メモリのライト側およびリード側の切替タイミングが依存関係にある場合のタイミング図である。図１２は、メモリのライト側およびリード側の切替タイミングが依存関係にない場合のタイミング図である。
【００５４】
メモリ１０１ａ、１０１ｂはアドレス領域が分割され、または物理的に異なるメモリを有することによりメモリ領域が２分割されている。これにより、データ転送装置１００は一方のメモリ領域にライトアクセスしている場合には、他方のメモリ領域にリードアクセスするようになっている。
【００５５】
ライトおよびリードアクセスを行うメモリ領域の切替は、データ列単位の書き込みが完了した後に面切替信号によりリード側に面切替を許可することで行われる。これにより、図１１に示すように、有意なデータ列の更新中には、そのデータ列を読み込みさせないようにライトアクセスとリードアクセスのタイミングとが同時に切り替わる。
【００５６】
しかし、ライト側においてデータ列のライトアクセスが完了しないとリード側で面を切替えられないため、ライトアクセスとリードアクセスはお互いの状況を確認しあわなければならないという制約がある。
【００５７】
一方、図１２に示すように２面のデュアルポートメモリの面切替えをライト側とリード側で任意のタイミングで行う場合、図中矢印Ａで示すライトアクセスとリードアクセスとが同一面で行われる区間のデータ列の同期性が確保できない。
【００５８】
これに対し、第１実施形態におけるデータ転送装置１は、メモリ１１を３面設けることにより、読み出されたデータに更新前と更新後とのデータが混在することを防止、すなわち同期性を維持することができる。
【００５９】
図１３は、第１実施形態におけるデータ転送装置１のライトアクセスおよびリードアクセスのタイミング図である。
【００６０】
データ転送装置１は、ライト側においては、第１のメモリ（第１面）１１ａ、第２のメモリ（第２面）１１ｂ、第３のメモリ（第３面）１１ｃの順番にデータを書き込む。リード側においては、演算処理部１２の任意のタイミングにおいて、第１のメモリ１１ａ、第２のメモリ１１ｂおよび第３のメモリ１１ｃを同時に読み出す。以下、ライト側およびリード側の処理の流れをフローチャートを用いて説明する。
【００６１】
図１４は、第１実施形態におけるデータ転送装置１のライト側の処理を説明するフローチャートである。
【００６２】
ステップＳ１において、データ転送装置１は、データ受信部１０において外部ネットワークより随時更新されるデータを受信したか否かの判定を行う。データ転送装置１は、データを受信していないと判定した場合、受信するまで待機する。一方、データ転送装置１はデータを受信した場合、ステップＳ２において、受信したデータを判定情報生成付加部１３へ供給する。
【００６３】
ステップＳ３において、判定情報生成付加部１３は、シーケンス番号を生成し、受信したデータのヘッダーに付加する。また、判定情報生成付加部１３は、シーケンス番号をビット反転した反転シーケンス番号をデータのフッターに付加する。
【００６４】
ステップＳ４において、判定情報生成付加部１３は、面切替信号Ａに基づいてメモリ１１にデータを書き込む。
【００６５】
図１５は、第１実施形態におけるデータ転送装置１のリード側の処理を説明するフローチャートである。このリード側の処理は、演算処理部１２の任意のタイミングで実行される。
【００６６】
ステップＳ１１において、判定情報抽出検査部１５ａ〜１５ｃは、演算処理部１２の制御に基づいて第１〜第３のメモリ１１ａ〜１１ｃより同時にデータを読み出す。ステップＳ１２において、判定情報抽出検査部１５ａ〜１５ｃは、読み出したデータよりシーケンス番号および反転シーケンス番号を抽出する。
【００６７】
ステップＳ１３において、判定情報抽出検査部１５ａ〜１５ｃは、抽出したシーケンス番号および反転シーケンス番号より読み出したデータが有効であるか否かの判定を行う。判定情報抽出検査部１５はデータが有効であると判定した場合には、ステップＳ１４において、データが有効である旨の信号を演算処理部１２へ供給する。一方、判定情報抽出検査部１５は、データが無効であると判定した場合には、ステップＳ１５において、データが無効である旨の信号を供給する。
【００６８】
なお、複数のメモリ１１より読み出されたデータのうち有効なデータが複数ある場合、最新のシーケンス番号が付与されているデータ列を使用することにより、外部ネットワークより受信した最新のデータを以降の演算処理に使用することができる。この場合、演算処理部１２またはセレクター１４ｂは、読み出されたデータおよびシーケンス番号を受け取り、シーケンス番号よりデータの新しさを判定する機能を備える。
【００６９】
ステップＳ１６において、判定情報抽出検査部１５ａ〜１５ｃは、前回読み出したデータ列に付加されたシーケンス番号と今回読み出したデータ列に付加されたデータ列に付加されたシーケンス番号とが一致するか否かの判定を行う。判定情報抽出検査部１５ａ〜１５ｃは各シーケンス番号が不一致であると判定した場合処理を終了する。
【００７０】
一方、判定情報抽出検査部１５は、各シーケンス番号が一致すると判定した場合、ステップＳ１７において、スキップ信号を生成し、演算処理部１２に出力する。
【００７１】
なお、メモリ１１が３面設けられた例を適用して説明したが、メモリ１１の面数は３面以上であればよい。この場合、同時に読み出しを行うメモリ数は少なくとも３面であればよい。
【００７２】
このデータ転送装置１によれば、３面設けられたメモリ１１より同時にデータを読み出すことにより、同期性の確保された有効なデータを取得することができる。具体的には、図１３に示すように、第１のメモリ（第１面）１１ａに対する書き込み（ライト）が行われている場合、第１のメモリ１１ａより読み出されるデータは矢印Ｂで示す区間において書き込みと読み出しが競合するため更新前と更新後とのデータとが混在してしまう。一方、第２のメモリ１１ｂおよび第３のメモリ１１ｃより読み出されるデータは矢印Ｂで示す区間においては、同期性が確保される。
【００７３】
ライトアクセスとリードアクセスとがライト側およびリード側で任意のタイミングで行われる場合においては、リード側がデータの読み出し中に書き込みの対象となるメモリ１１が切り替わる可能性がある。図１３においては、リード側が第１〜第３のメモリ１１ａ〜１１ｃより読み出し中に、ライト側が書き込み先を第１のメモリ１１ａから第２のメモリ１１ｂに切り替える場合である。この場合、第２のメモリ１１ｂより読み出されるデータは矢印Ｃの区間において書き込みと読み出しとが競合するため更新前と更新後とのデータとが混在してしまう。
【００７４】
これに対し、第１実施形態におけるデータ転送装置１は、読み出し中において書き込みが行われるメモリが第１のメモリ１１ａから第２のメモリ１１ｂに切り替わる場合においても、第３のメモリ１１ｃについては書き込みと読み出しとが競合しないため、同期性の確保された有効なデータの読み出しを行うことができる。
【００７５】
上述したデータ転送装置１は、３面のメモリより同時にデータを読み出すものである。これに対し、以下に説明するように、読み出しの順序を考慮することにより２面を同時に読み出すようにしてもよい。
【００７６】
図１６は、同時に２面のメモリ１１より読み出しを行う場合のデータ転送装置１のライトアクセスおよびリードアクセスのタイミング図である。
【００７７】
データ転送装置１は、ライト側においては、第１のメモリ（第１面）１１ａ、第２のメモリ（第２面）１１ｂ、第３のメモリ（第３面）１１ｃに順次データを書き込む。リード側においては、演算処理部１２の各リードタイミングにおいて、第１のメモリ１１ａ、第２のメモリ１１ｂおよび第３のメモリ１１ｃのうち２つのメモリより同時に読み出す。例えば、データが読み出される１つ目のメモリは、第１のメモリ１１ａ、第２のメモリ１１ｂ、第３のメモリ１１ｃの順で切り替えられる。データが読み出される２つ目のメモリは、第３のメモリ１１ｃ、第１のメモリ１１ａ、第２のメモリ１１ｂの順で切り替えられる。
【００７８】
第１のメモリ（第１面）１１ａに対する書き込みが行われている場合、第１のメモリ１１ａより読み出されるデータは矢印Ｄで示す区間において読み出しと書き込みとが競合し更新前と更新後とのデータが混在してしまう。一方、第３のメモリ１１ｃより読み出されるデータは、同期性が確保される。
【００７９】
図１７は、同時に２面のメモリ１１より読み出しを行う場合であって、同期性が確保されない場合のデータ転送装置１のライトアクセスおよびリードアクセスのタイミング図である。
【００８０】
２つのメモリ１１より同時に読み出す場合においては、読み出しを行うメモリ１１の組み合わせによってはいずれのメモリ１１から読み出したデータも更新前と更新後とのデータが混在してしまう可能性がある。
【００８１】
例えば、データが読み出される１つ目のメモリが第２のメモリ１１ｂ、第３のメモリ１１ｃ、第１のメモリ１１ａの順で切り替えられ、２つ目のメモリが第１のメモリ１１ａ、第２のメモリ１１ｂ、第３のメモリ１１ｃの順で切り替えられる場合である。
【００８２】
この場合、第１のメモリ（第１面）１１ａに対する書き込みが行われている場合、第１のメモリ１１ａより読み出されるデータは矢印Ｅで示す区間において書き込みと読み出しとが競合してしまう。また、書き込みが行われるメモリ１１が第１のメモリ１１ａから第２のメモリ１１ｂに切り替えられた場合、読み出し中のメモリ１１のうち第２のメモリ１１ｂにおいては矢印Ｆで示す区間において書き込みと読み出しとが競合してしまう。
【００８３】
図１８は、同時に２面のメモリより読み出しを行う場合であって、同期性が確保され得る場合のデータ転送装置１のライトアクセスおよびリードアクセスのタイミング図である。
【００８４】
図１８に示すライト側の動作については、図１３および図１４で説明したものとほぼ同様である。リード側の動作については、同時に読み出したデータの双方が無効と判定された場合、次回読み出すメモリの組合せを考慮することにより無効と判定された次回の読み出しタイミングにおいては有効なデータを読み出す。図１８における矢印で示す区間は、書き込みと読み出しとが競合する区間である。
【００８５】
以下、リード側の処理をフローチャートを用いて説明する。
【００８６】
図１９は、データ転送装置１が２面のメモリに対し同時に読み出しを行う場合のリード側の処理を説明するフローチャートである。なお、判定情報抽出検査部１５がスキップ信号を生成するステップについては図示および説明を省略した。
【００８７】
ステップＳ２１〜Ｓ２５は、図１４の読出ステップＳ１１〜無効信号送信ステップＳ１５とほぼ同様であるため、ここでは説明を省略する。
【００８８】
ステップＳ２６において、データ転送装置１は、読み出した全てのデータが無効と判定されたか否かの判定を行う。この判定は、セレクター１４ｂまたは演算処理部１２で行われる。データ転送装置１は全てのデータが無効ではないと判定した場合、すなわち今回の読み出しのタイミングで有効なデータが得られたと判定した場合、処理を終了する。
【００８９】
一方、データ転送装置１は、全てのデータが無効であると判定した場合、ステップＳ２７において、次回の読み出しのタイミングにおいてデータを読み出すメモリ１１について、今回読み出しを行ったメモリの一方を他方のメモリと異なるメモリにシフトする。
【００９０】
例えば、図１８においては、データが読み出される１つ目のメモリが第２のメモリ１１ｂ、第３のメモリ１１ｃ、第１のメモリ１１ａの順で切り替えられ、２つ目のメモリが第１のメモリ１１ａ、第２のメモリ１１ｂ、第３のメモリ１１ｃの順で切り替えられるとする。第２のメモリ１１ｂと第１のメモリ１１ａとの２つのメモリ１１よりデータが読み出されると、次回の読み出しのタイミングにおいては本来であれば図１７に示すように第３のメモリ１１ｃと第２のメモリ１１ｂとからデータが読み出される。
【００９１】
しかし、１つ目のメモリである第２のメモリ１１ｂ、２つ目のメモリである第１のメモリ１１ａの双方のデータが無効であると判定された場合には、データ転送装置１は一方のメモリである１つ目のメモリ（第２のメモリ１１ｂ）を他方のメモリである２つ目のメモリ（第１のメモリ１１ａ）とは異なるメモリである第３のメモリ１１ｃにシフトする。
【００９２】
言い換えると、一方のメモリ（第１のメモリ１１ａ）をシフトせず、他方のメモリ（第２のメモリ１１ｂ）を次の順位のメモリ（第３のメモリ１１ｃ）にシフトする。シフトする側のメモリは、次の順位のメモリが今回の読み出しのタイミングにおいて読み出しが行われないメモリとなっているメモリとする。
【００９３】
このため、今回の読み出しのタイミングでデータが読み出されていないメモリ１１（第３のメモリ１１ｃ）と、データが読み出されたメモリ１１（第１のメモリ１１ａ）とから次回のタイミングで読み出しを行うこととなり、次回からはいずれか一方のメモリ１１から確実に有効なデータを読み出すことができる。
【００９４】
このデータ転送装置１によれば、読み出すデータの有効性を向上させることができる。また、データを同時に読み出すメモリ１１の面数を２面と削減できるためメモリ１１より読み出されたデータを一次保持するためのバッファ（図示せず）の容量を削減できる。
【００９５】
なお、データ列の有効性を判定するための判定情報は、シーケンス番号および反転シーケンス番号に限らない。
【００９６】
図２０は、データの有効性を判定するためのデータのデータ列配置例を示す図である。
【００９７】
判定情報生成付加部１３は、データ受信部１０より供給されたデータ列に基づいて、このデータ列をビット反転した反転データ列を生成する。反転データ列が格納されるメモリ１１の領域は、ライト側とリード側とで予め取り決められる。例えば、反転データ列を記憶する領域は、データ列のアドレスｎに１００を足したｎ＋１００と取り決める。
【００９８】
判定情報抽出検査部１５は、予め取り決められたアドレス領域からデータ列と反転データ列とを順次読み出す。判定情報抽出検査部１５は、読み出したデータ列と、反転データ列をさらに反転したデータとを比較する。判定情報抽出検査部１５は、これらのデータが一致すると判定した場合、同期性が確保され有効なデータである旨の信号を演算処理部１２に供給する。判定情報抽出検査部１５は、これらのデータが不一致であると判定した場合、データの同期性は確保されていないと判定し、データは無効である旨の信号を演算処理部１２に供給する。
【００９９】
［第２実施形態］
本発明に係るデータ転送装置４０の実施形態を添付図面に基づいて説明する。
【０１００】
図２１は、本発明に係るデータ転送装置の第２実施形態を示すブロック図である。
【０１０１】
第２実施形態におけるデータ転送装置４０が第１実施形態と異なる点は、２面の物理的に異なるメモリである第１および第２のメモリ１１ａ、１１ｂを有する点と、セレクター１４ａに代えて遅延制御部４６を有する点である。第１実施形態と対応する構成および部分については同一の符号を付し、重複する説明を省略する。
【０１０２】
遅延制御部４６は、第１のメモリ１１ａに書き込みが行われ所定時間が経過した後に第１のメモリ１１ａに書き込まれたデータと同一のデータが第２のメモリ１１ｂに書き込まれるよう、遅延を発生させる。遅延時間は、例えば演算処理部１２の読み出しのタイミングや種々の要因により決定される。
【０１０３】
データ受信部１０は、一回の書き込みタイミング（データ更新タイミング）において、同一のデータを異なるメモリ１１に遅延時間を持って書き込む。
【０１０４】
図２２は、第２実施形態におけるデータ転送装置４０のライトアクセスおよびリードアクセスのタイミング図である。
【０１０５】
ライト側においては、遅延制御部４６の作用により第１のメモリ１１ａへデータが書き込まれた後、遅延時間Ｔ経過後に同一のデータが第２のメモリ１１ｂへ書き込まれる。
【０１０６】
リード側においては、書き込みに依存しないタイミングで第１のメモリ１１ａと第２のメモリ１１ｂとが同時に読み出しを行う。矢印Ｇに示す区間においては、第１のメモリ１１ａに対する書き込みと読み出しとが競合し有効なデータが得られない。しかし、第２のメモリ１１ｂについては遅延時間Ｔを設けることにより書き込みと読み出しとが競合することなく有効なデータを得ることができる。この結果、演算処理部１２は読み出されたデータのうち有効なデータを選択して演算処理に使用することができる。
【０１０７】
なお、データ転送装置４０は、２面のメモリを設けた例を説明したが、２面以上のメモリを有してもよい。
【符号の説明】
【０１０８】
１、４０  データ転送装置
１０  データ受信部
１１ａ〜１１ｃ  第１〜第３のメモリ
１２  演算処理部
１３  判定情報生成付加部
１４ａ  セレクター（ＳＥＬＡ）
１４ｂ  セレクター（ＳＥＬＢ）
１５ａ〜１５ｃ  判定情報抽出検査部
４６  遅延制御部
【図１】
0005667867.tif 000002
【図２】
0005667867.tif 000003
【図３】
0005667867.tif 000004
【図４】
0005667867.tif 000005
【図５】
0005667867.tif 000006
【図６】
0005667867.tif 000007
【図７】
0005667867.tif 000008
【図８】
0005667867.tif 000009
【図９】
0005667867.tif 000010
【図１０】
0005667867.tif 000011
【図１１】
0005667867.tif 000012
【図１２】
0005667867.tif 000013
【図１３】
0005667867.tif 000014
【図１４】
0005667867.tif 000015
【図１５】
0005667867.tif 000016
【図１６】
0005667867.tif 000017
【図１７】
0005667867.tif 000018
【図１８】
0005667867.tif 000019
【図１９】
0005667867.tif 000020
【図２０】
0005667867.tif 000021
【図２１】
0005667867.tif 000022
【図２２】
0005667867.tif 000023