(57)【要約】      （修正有）【課題】書き込み要求及び読み出し要求の順序を保証することができるアクセス要求制御装置を提供する。【解決手段】アクセス要求制御装置１００は、第１のマスタがデータ記憶部にデータを書き込んだ後に、第２のマスタがデータ記憶部からデータを読み出す順序を保証するアクセス要求制御装置であって、第１のマスタの書き込み要求及び第２のマスタの読み出し要求を保証対象インターフェースに出力し、第１のマスタの読み出し要求及び第２のマスタの書き込み要求を保証非対象インターフェースを介してデータ記憶部に向けて転送する要求振り分け部１０１を有する。書き込みアドレスチェック部３と読み出しアドレスチェック部４は、第２のマスタの読み出し要求を入力した場合に、第２のマスタの読み出し要求と同じアドレスに対する第１のマスタの書き込み要求を転送していない場合には第２のマスタの読み出し要求をバッファ５に保存する。【選択図】図２
2018081418.tif 000002
【特許請求の範囲】
【請求項１】
第１のマスタがデータ記憶部にデータを書き込んだ後に、第２のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御装置であって、
前記第１のマスタの書き込み要求及び前記第２のマスタの読み出し要求を保証対象インターフェースに出力し、前記第１のマスタの読み出し要求及び前記第２のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送する要求振り分け部と、
バッファと、
前記保証対象インターフェースに接続され、前記第１のマスタの書き込み要求を入力した場合には、前記入力した前記第１のマスタの書き込み要求を前記データ記憶部に向けて転送する転送部とを有し、
前記転送部は、
前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送済みである場合には前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送し、
前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送していない場合には前記第２のマスタの読み出し要求を前記バッファに保存することを特徴とするアクセス要求制御装置。
【請求項２】
前記転送部は、前記第２のマスタの読み出し要求を前記バッファに保存した場合、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を入力して転送した後に、前記バッファに保存されている前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送することを特徴とする請求項１に記載のアクセス要求制御装置。
【請求項３】
前記転送部は、前記バッファに保存されている前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を入力した場合、前記バッファに保存されている前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送せず、前記第２のマスタの読み出し要求の応答として前記第１のマスタの書き込み要求のデータを前記第２のマスタに向けて出力することを特徴とする請求項１に記載のアクセス要求制御装置。
【請求項４】
前記転送部は、前記バッファに保存されている前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を入力した場合、前記バッファに保存されている前記第２のマスタの読み出し要求及び前記第１のマスタの書き込み要求を前記データ記憶部に向けて転送せず、前記第２のマスタの読み出し要求の応答として前記第１のマスタの書き込み要求のデータを前記第２のマスタに向けて出力することを特徴とする請求項１又は３に記載のアクセス要求制御装置。
【請求項５】
前記要求振り分け部は、前記第１のマスタの書き込み要求を第１の保証対象インターフェースに出力し、前記第２のマスタの読み出し要求を第２の保証対象インターフェースに出力し、
前記転送部は、
前記第１の保証対象インターフェースに接続され、前記第１のマスタの書き込み要求を前記データ記憶部に向けて転送する第１の転送部と、
前記第２の保証対象インターフェースに接続され、前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送する第２の転送部とを有することを特徴とする請求項２に記載のアクセス要求制御装置。
【請求項６】
前記第２の転送部は、
前記第２のマスタの読み出し要求を入力し、前記第２のマスタの読み出し要求のアドレスが保証対象アドレス領域のアドレスである場合、前記第１の転送部が前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送していない場合には前記第２のマスタの読み出し要求を前記バッファに保存し、
前記第２のマスタの読み出し要求を入力し、前記第２のマスタの読み出し要求のアドレスが前記保証対象アドレス領域のアドレスでない場合には、前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送することを特徴とする請求項５に記載のアクセス要求制御装置。
【請求項７】
前記第１のマスタの書き込み要求は、アドレス順に発行され、
前記第１の転送部は、入力した前記第１のマスタの書き込み要求のアドレスを書き込み実行済みアドレスとして保存し、新たに入力した前記第１のマスタの書き込み要求のアドレスが前記書き込み実行済みアドレスより大きい場合には、前記新たに入力した前記第１のマスタの書き込み要求のアドレスを前記書き込み実行済みアドレスとして更新保存し、
前記第２の転送部は、入力した前記第２のマスタの読み出し要求が前記書き込み実行済みアドレスより小さい場合には、前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送し、入力した前記第２のマスタの読み出し要求が前記書き込み実行済みアドレスより大きい場合には、前記第２のマスタの読み出し要求を前記バッファに保存することを特徴とする請求項６に記載のアクセス要求制御装置。
【請求項８】
前記第１の転送部は、前記第１のマスタの書き込み要求のアドレスが前記保証対象アドレス領域の上限まで達して前記保証対象アドレス領域の下限に戻った場合にはフラグを設定し、
前記第２の転送部は、入力した前記第２のマスタの読み出し要求が前記書き込み実行済みアドレスより大きい場合には、前記フラグに応じて、前記第２のマスタの読み出し要求を前記バッファに保存することを特徴とする請求項７に記載のアクセス要求制御装置。
【請求項９】
前記第１の転送部は、前記第２のマスタの読み出し要求のアドレスが前記保証対象アドレス領域の上限まで達して前記保証対象アドレス領域の下限に戻った場合には前記フラグをクリアすることを特徴とする請求項８に記載のアクセス要求制御装置。
【請求項１０】
さらに、前記保証非対象インターフェースを介して前記第１のマスタの読み出し要求及び前記第２のマスタの書き込み要求を入力し、前記転送部により転送された前記第１のマスタの書き込み要求及び前記第２のマスタの読み出し要求を入力し、前記入力した要求を調停して前記データ記憶部に向けて転送する調停部を有することを特徴とする請求項１乃至９のいずれか１項に記載のアクセス要求制御装置。
【請求項１１】
前記要求振り分け部は、第３のマスタの書き込み要求及び読み出し要求を前記保証非対象インターフェースを介して前記データ記憶部に向けて転送することを特徴とする請求項１乃至１０のいずれか１項に記載のアクセス要求制御装置。
【請求項１２】
請求項１乃至１１のいずれか１項に記載のアクセス要求制御装置と、
前記第１のマスタと、
前記第２のマスタと、
前記第１のマスタと前記第２のマスタと前記アクセス要求制御装置に接続されるバスシステムと、
前記アクセス要求制御装置により転送された要求を入力し、前記データ記憶部を制御するデータ記憶コントローラと
を有することを特徴とするデータアクセスシステム。
【請求項１３】
第１のマスタがデータ記憶部にデータを書き込んだ後に、第２のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御方法であって、
要求振り分け部により、前記第１のマスタの書き込み要求及び前記第２のマスタの読み出し要求を保証対象インターフェースに出力し、前記第１のマスタの読み出し要求及び前記第２のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送するステップと、
転送部により、前記保証対象インターフェースを介して、前記第１のマスタの書き込み要求を入力した場合には、前記入力した前記第１のマスタの書き込み要求を前記データ記憶部に向けて転送するステップと、
前記転送部により、前記保証対象インターフェースを介して、前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送済みである場合には前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送するステップと、
前記転送部により、前記保証対象インターフェースを介して、前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送していない場合には前記第２のマスタの読み出し要求をバッファに保存するステップと
を有することを特徴とするアクセス要求制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法に関する。
【背景技術】
【０００２】
複数のマスタは、複数のバスにそれぞれ接続され、主記憶ユニットを共有メモリとして使用する。その場合、第１のバスに接続される第１のマスタが共有メモリにデータを書き込み、そのデータを第２のバスに接続される第２のマスタが共有メモリから読み出す。第１のマスタが共有メモリに書き込んだデータを第２のマスタが共有メモリから読み出すためには、第２のマスタが読み出し動作を開始する前に、第１のマスタによる共有メモリへのデータの書き込みが完了していることを保証しなければならない。そのための技術の一例が特許文献１に開示されている。
【０００３】
特許文献１には、第１のバスと第２のバスの間に接続されるバスブリッジ内部のバッファに滞留する転送数のデータ転送が完了することを監視するモニタ回路が開示されている。モニタ回路は、第１マスタからの転送完了を通知するトリガ信号（第１マスタの割込み信号）を入力する。また、モニタ回路は、トリガ信号を入力すると、バスブリッジ内部のバッファに滞留する転送数分のデータ転送完了をカウントし、カウントが完了すると完了信号を第２マスタに通知する。第２マスタは、モニタ回路からの完了信号（遅延した第１マスタの割込み信号）を受けてから共有メモリからのデータの読み出しを行うことで、共有メモリに書き込みが完了したデータを読み出すことが保証される。
【０００４】
また、特許文献２には、第１のマスタと第２のマスタが共有キャッシュメモリに接続され、キャッシュメモリの機構を利用して第１のマスタが処理したデータを第２のマスタに受け渡すための監視対象領域を設定する技術が開示されている。特許文献２では、所定の単位のデータ量毎に監視対象領域の書き込みデータの書き込み完了情報を管理し、監視対象領域のデータ読み出しを行う場合において、対象のデータが書き込み完了していない場合には、リード要求を待機させる。そして、特許文献２では、書き込み完了後にリードデータを返すことで、共有キャッシュメモリに書き込みが完了したデータを読み出すことが保証される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１１３６１５号公報
【特許文献２】特開２０１２−４３０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記の特許文献１では、共有メモリへのデータ転送の際にバスブリッジにポステッド転送を行うマスタが、書き込み完了保証が必要なデータ転送を行う場合、各マスタ及びバスブリッジが書き込み完了を保証する仕組みを設ける必要がある。更には、マスタが共有メモリにデータ転送するために複数のポステッド転送を行うバスブリッジを経由するためのバス構成が複雑になる。また、書き込み完了保証が必要なマスタが増大してくると、このような個々のマスタ及びバスブリッジで共有メモリへの書き込み完了を保証することが困難になる。
【０００７】
また、特許文献２では、データの受け渡しに使用する領域に対して、書き込みを行うプロセッサが領域確保のコマンドを発行してからデータ書き込みを行い、読み出しを行うプロセッサが対象領域のデータ読み出し完了後に領域解放コマンドを発行する必要がある。このため、データ転送にかかる処理が煩雑になり、一般的なＤＭＡコントローラが行う転送には不向きである。また、データ転送を行う所定の単位の領域毎に、アドレス、書き込み完了状況、プロセッサＩＤ情報等の管理情報を持つ必要があり、回路規模が増大する。
【０００８】
本発明の目的は、マスタ及びバスブリッジが個別の対応を行うことなく、書き込み要求及び読み出し要求の順序を保証することができるアクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明のアクセス要求制御装置は、第１のマスタがデータ記憶部にデータを書き込んだ後に、第２のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御装置であって、前記第１のマスタの書き込み要求及び前記第２のマスタの読み出し要求を保証対象インターフェースに出力し、前記第１のマスタの読み出し要求及び前記第２のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送する要求振り分け部と、バッファと、前記保証対象インターフェースに接続され、前記第１のマスタの書き込み要求を入力した場合には、前記入力した前記第１のマスタの書き込み要求を前記データ記憶部に向けて転送する転送部とを有し、前記転送部は、前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送済みである場合には前記第２のマスタの読み出し要求を前記データ記憶部に向けて転送し、前記第２のマスタの読み出し要求を入力した場合に、前記第２のマスタの読み出し要求と同じアドレスに対する前記第１のマスタの書き込み要求を転送していない場合には前記第２のマスタの読み出し要求を前記バッファに保存する。
【発明の効果】
【００１０】
本発明によれば、マスタ及びバスブリッジが個別の対応を行うことなく、書き込み要求及び読み出し要求の順序を保証することができる。
【図面の簡単な説明】
【００１１】
【図１】デーアアクセスシステムの構成例を示す図である。
【図２】書き込み完了保証モジュールの構成例を示す図である。
【図３】アドレスマップを示す図である。
【図４】データアクセスシステムの動作を示すラダーチャートである。
【発明を実施するための形態】
【００１２】
図１は、本発明の実施形態によるデータアクセスシステムの構成例を示すブロック図である。データアクセスシステムは、チップシステム２６とメモリデバイス２７を有する。チップシステム２６は、複数のマスタ２１，２２，２０１と、バスシステム２３と、レジスタアクセスブリッジ２４と、メモリコントローラ２５と、書き込み完了保証モジュール１００とを有する。第１のマスタ２１、第２のマスタ２２及び第３のマスタ２０１は、バスシステム２３に接続される。レジスタアクセスブリッジ２４は、バスシステム２３と書き込み完了保証モジュール１００の間に接続される。書き込み完了保証モジュール１００は、メモリアクセススレーブインターフェース８を介してバスシステム２３に接続され、レジスタ設定インターフェース９を介してレジスタアクセスブリッジ２４に接続される。また、書き込み完了保証モジュール１００は、メモリアクセスマスタインターフェース１０を介してメモリコントローラ２５に接続される。メモリコントローラ２５は、メモリデバイス２７に接続される。メモリデバイス２７は、データ記憶部であり、データを記憶する。メモリコントローラ２５は、データ記憶コントローラであり、メモリデバイス２７を制御する。
【００１３】
マスタ２１には０ｘ０のＩＤが設定され、マスタ２２には０ｘ１のＩＤが設定され、マスタ２０１には０ｘ２のＩＤが設定されている。メモリコントローラ２５は、外部のメモリデバイス２７を制御する。マスタ２１のメモリデバイス２７への書き込みと、マスタ２２のメモリデバイス２７からの読み出しとは、順序保証が必要である。マスタ２１がメモリデバイス２７に書き込みを完了した後に、マスタ２２がメモリデバイス２７から読み出しを行われなければならないものとする。そこで、書き込み完了保証モジュール１００は、マスタ２１がメモリデバイス２７にデータを書き込んだ後に、マスタ２２がメモリデバイス２７からそのデータを読み出す順序を保証する。また、マスタ２１、２２、２０１からメモリコントローラ２５へのアクセスには、各マスタ２１、２２、２０１は、各マスタ２１、２２、２０１を識別するためのＩＤを付加して出力する。
【００１４】
図２は、図１の書き込み完了保証モジュール１００の構成例を示すブロック図である。書き込み完了保証モジュール１００は、アクセス要求制御装置であり、書き込みアドレスチェック部３と、読み出しアドレスチェック部４と、読み出し要求保存バッファ５と、要求調停部６と、設定部７と、要求振り分け部１０１とを有する。さらに、書き込み完了保証モジュール１００は、メモリアクセススレーブインターフェース８と、レジスタ設定インターフェース９と、メモリアクセスマスタインターフェース１０と、インターフェース１０２〜１０４とを有する。インターフェース１０２は、メモリデバイス２７への書き込み完了保証が不要なインターフェースである。インターフェース１０３は、メモリデバイス２７への書き込み完了保証が必要な書き込みインターフェースである。インターフェース１０４は、メモリデバイス２７への書き込み完了保証が必要な読み出しインターフェースである。
【００１５】
図３は、チップシステムのアドレスマップの一例を示す図である。書き込み完了保証モジュール１０１のメモリアクセススレーブインターフェース８は、０ｘ８０００＿００００〜０ｘＦＦＦＦ＿ＦＦＦＦのアドレス領域が割り当てられている。その０ｘ８０００＿００００〜０ｘＦＦＦＦ＿ＦＦＦＦのアドレス領域は、監視対象領域３０１を含む。監視対象領域３０１は、保証対象アドレス領域であり、監視対象の０ｘＡ０００＿００００〜０ｘＢＦＦＦ＿ＦＦＦＦのアドレス領域である。書き込み完了保証モジュール１０１のレジスタ設定インターフェース９は、０ｘ２０００＿００００〜０ｘ２ＦＦＦ＿ＦＦＦＦのレジスタ領域３０２が割り当てられている。
【００１６】
次に、図１〜図３を用いて、データアクセスシステムの動作を説明する。マスタ２１，２２，２０１は、それぞれ、バスシステム２３を介して、各マスタ２１，２２，２０１のＩＤを含むメモリアクセス要求を要求振り分け部１０１に出力可能である。また、マスタ２１，２２，２０１は、それぞれ、バスシステム２３及びレジスタアクセスブリッジ２４を介して、マスタ２１，２２，２０１のＩＤを含むレジスタアクセス要求を設定部７に出力可能である。
【００１７】
要求振り分け部１０１は、各マスタ２１，２２，２０１のＩＤに基づいて、各マスタ２１，２２，２０１からのメモリアクセス要求を、インターフェース１０２〜１０４のうちのいずれかに振り分ける。インターフェース１０２は、書き込み完了保証が不要なインターフェースである。インターフェース１０３は、書き込み完了保証が必要な書き込みインターフェースである。インターフェース１０４は、書き込み完了保証が必要な読み出しインターフェースである。例えば、ＩＤが０ｘ０の書き込み要求はインターフェース１０３に振り分けられ、ＩＤが０ｘ１の読み出し要求はインターフェース１０４に振り分けられる。
【００１８】
要求振り分け部１０１は、マスタ２１（ＩＤが０ｘ０）からの書き込み要求を、書き込み完了保証が必要な書き込みインターフェース１０３を経由して書き込みアドレスチェック部３に出力する。また、要求振り分け部１０１は、マスタ２２（ＩＤが０ｘ１）からの読み出し要求を、書き込み完了保証が必要な読み出しインターフェース１０４を経由して読み出しアドレスチェック部４に出力する。また、要求振り分け部１０１は、マスタ２１からの読み出し要求、マスタ２２からの書き込み要求、及びマスタ２０１からのアクセス要求を、書き込み完了保証が不要なインターフェース１０２を経由して要求調停部６に出力する。
【００１９】
すなわち、要求振り分け部１０１は、マスタ２１の書き込み要求を第１の保証対象インターフェース１０３に出力し、マスタ２２の読み出し要求を第２の保証対象インターフェース１０４に出力する。そして、要求振り分け部１０１は、マスタ２１の読み出し要求、マスタ２２の書き込み要求、並びにマスタ２０１の書き込み要求及び読み出し要求を保証非対象インターフェース１０２を介してメモリデバイス２７に向けて転送する。
【００２０】
書き込みアドレスチェック部３は、入力されたマスタ２１（ＩＤが０ｘ０）からの書き込み要求のアドレスが０ｘＡ０００＿００００〜０ｘＢＦＦＦ＿ＦＦＦＦの監視対象領域３０１のアドレスであるか否かをチェックする。そして、書き込みアドレスチェック部３は、入力されたマスタ２１（ＩＤが０ｘ０）からの書き込み要求を要求調停部６に転送し、チェック結果を読み出しアドレスチェック部４に出力する。
【００２１】
読み出しアドレスチェック部４は、入力されたマスタ２２（ＩＤが０ｘ１）からの読み出し要求のアドレスが０ｘＡ０００＿００００〜０ｘＢＦＦＦ＿ＦＦＦＦの監視対象領域３０１のアドレスであるか否かをチェックする。そして、読み出しアドレスチェック部４は、入力されたマスタ２２からの読み出し要求が発行可能である場合には、その読み出し要求を要求調停部６に転送する。また、読み出しアドレスチェック部４は、入力されたマスタ２２からの読み出し要求が発行可能でない場合には、その読み出し要求を読み出し要求保存バッファ５に一時保存する。具体的には、読み出しアドレスチェック部４は、マスタ２１からの書き込み要求のアドレス及びマスタ２２からの読み出し要求のアドレスの両方が監視対象領域３０１のアドレスである場合には、マスタ２２からの読み出し要求をバッファ５に保存する。これは、マスタ２１からの書き込み要求による書き込みが完了した後に、マスタ２２からの読み出し要求による読み出しを行うためである。また、読み出しアドレスチェック部４は、マスタ２１からの書き込み要求のアドレス及びマスタ２２からの読み出し要求のアドレスの両方が監視対象領域３０１のアドレスでない場合には、マスタ２２からの読み出し要求を要求調停部６に出力する。
【００２２】
書き込みアドレスチェック部３及び読み出しアドレスチェック部４は、転送部であり、マスタ２１の書き込み要求及びマスタ２２の読み出し要求を調停部６に転送する。書き込みアドレスチェック部３は、第１の転送部であり、インターフェース１０３に接続され、マスタ２１の書き込み要求をメモリデバイス２７に向けて転送する。読み出しアドレスチェック部４は、第２の転送部であり、インターフェース１０４に接続され、マスタ２２の読み出し要求をメモリデバイス２７に向けて転送する。
【００２３】
要求調停部６は、インターフェース１０２経由の要求と、書き込みアドレスチェック部３及び読み出しアドレスチェック部４からの要求を調停し、メモリアクセスマスタインターフェース１０を介してメモリコントローラ２５に要求を出力する。すなわち、要求調停部６は、インターフェース１０２を介してマスタ２１の読み出し要求及びマスタ２２の書き込み要求を入力し、チェック部３及び４により転送されたマスタ２１の書き込み要求及びマスタ２２の読み出し要求を入力する。そして、要求調停部６は、入力した要求を調停してメモリデバイス２７に向けて転送する。メモリコントローラ２５は、入力した要求に応じて、メモリデバイス２７に対して書き込み又は読み出しを行う。
【００２４】
例えば、図４のように、マスタ２１は、０ｘＡ０００＿００００から０ｘＡ０００＿０３００まで順次、書き込み要求を発行する。また、マスタ２２は、０ｘＡ０００＿００００から０ｘＡ０００＿０３００まで順次、読み出し要求を発行する。ただし、同一アドレスに対して、マスタ２１の書き込みが完了した後に、マスタ２２の読み出しが可能になる。以上のように、マスタ２１は、アドレス順に、書き込み要求を発行する。
【００２５】
次に、書き込みアドレスチェック部３の処理を説明する。書き込みアドレスチェック部３は、入力された書き込み要求のアドレスが監視対象領域３０１のアドレスであるか否かをチェックする。そして、書き込みアドレスチェック部３は、入力された書き込み要求のアドレスが監視対象領域３０１のアドレスである場合には、入力された書き込み要求のアドレスと保存されている書き込み実行済みアドレスとの大小比較を行う。書き込み実行済みアドレスとは、今回の書き込み要求以前に入力された監視対象領域３０１のアドレスであって、書き込みアドレスチェック部３から要求調停部６に転送済みの書き込み要求のアドレスである。書き込みアドレスチェック部３は、今回入力された書き込み要求のアドレスが保存されている書き込み実行済みアドレスより大きい場合には、今回入力された書き込み要求のアドレスを新たな書き込み実行済みアドレスとして更新保存する。
【００２６】
すなわち、書き込みアドレスチェック部３は、入力したマスタ２１の書き込み要求のアドレスを書き込み実行済みアドレスとして保存する。そして、書き込みアドレスチェック部３は、新たに入力したマスタ２１の書き込み要求のアドレスが上記の書き込み実行済みアドレスより大きい場合には、新たに入力したマスタ２１の書き込み要求のアドレスを書き込み実行済みアドレスとして更新保存する。
【００２７】
また、書き込みアドレスチェック部３は、今回入力された書き込み要求のアドレスが保存されている書き込み実行済みアドレスより小さい場合には、以下の処理を行う。その場合、書き込みアドレスチェック部３は、監視対象領域３０１のアドレスの上限アドレスと保存されている書き込み実行済みアドレスと今回入力された書き込み要求のアドレスとの関係を基に、以下の処理を行う。すなわち、書き込みアドレスチェック部３は、監視対象領域３０１の上限アドレスまで達して監視対象領域３０１の下限アドレスに戻ったか、又は再度書き込みを行ったかを判断する。書き込みアドレスチェック部３は、再度の書き込みが行われた場合には保存されている書き込み実行済みアドレスの更新を行わない。一方、書き込みアドレスチェック部３は、再度の書き込みでないと判断された場合には、今回入力された書き込み要求のアドレスを新たな書き込み実行済みアドレスとして更新する。それと同時に、書き込みアドレスチェック部３は、アドレスが監視対象領域３０１の下限アドレスに戻ったことを示すフラグを設定する。すなわち、書き込みアドレスチェック部３は、マスタ２１の書き込み要求のアドレスが監視対象領域３０１の上限まで達して監視対象領域３０１の下限に戻った場合にはフラグを設定する。このフラグは、監視対象領域３０１の読み出し要求が同様に監視対象領域３０１の下限アドレスに戻った場合にクリアされる。書き込み実行済みアドレスの保存及びにフラグの設定は、書き込み要求が調停部６で受け付けられたタイミングで実行されることが好ましい。書き込みアドレスチェック部３は、書き込み完了保証の判断のために、書き込み実行済みアドレス及びフラグを読み出しアドレスチェック部４に供給する。書き込みアドレスチェック部３は、チェックが実行された書き込み要求を要求調停部６に出力する。アドレス判断は、実際に書き込みが行われたアドレス値について行われることが好ましい。
【００２８】
次に、読み出しアドレスチェック部４の処理を説明する。読み出しアドレスチェック部４は、入力された読み出し要求のアドレスが監視対象領域３０１のアドレス領域であるか否かをチェックする。そして、読み出しアドレスチェック部４は、入力された読み出し要求のアドレスが監視対象領域３０１のアドレス領域である場合には、以下の２つの処理を行う。読み出しアドレスチェック部４は、読み出し要求のアドレスが書き込みアドレスチェック部３から供給される書き込み実行済みアドレスよりも大きいか否かをチェックする。読み出し要求のアドレスが書き込み実行済みアドレスより小さい場合には、読み出し要求の範囲は既に書き込みが行われた領域であるので、読み出しアドレスチェック部４は、書き込み要求と同様に、入力された読み出し要求を要求調停部６に出力する。すなわち、読み出しアドレスチェック部４は、入力したマスタ２２の読み出し要求が書き込み実行済みアドレスより小さい場合には、マスタ２２の読み出し要求をメモリデバイス２７に向けて転送する。読み出し要求のアドレスが書き込み実行済みアドレスより大きい場合には、読み出しアドレスチェック部４は、書き込みアドレスチェック部３から供給されるフラグを確認する。フラグが設定されている場合には、読み出しアドレスチェック部４は、監視対象領域３０１の上限アドレスまで書き込みが行われた状況を加味する。その上で、読み出しアドレスチェック部４は、再度、読み出し要求のアドレスが書き込み実行済みアドレスよりも大きいか否かを判断し、読み出し要求アドレスが書き込み実行済みアドレスより小さいと判断された場合には、読み出し要求を要求調停部６へ出力する。それでも、読み出し要求のアドレスが書き込み実行済みアドレスより大きいと判断された場合には、読み出し要求されたアドレスは書き込みが完了していないアドレス領域である。その場合、読み出しアドレスチェック部４は、読み出し要求を実行するのに必要な情報を読み出し要求保存バッファ５に保存する。すなわち、読み出しアドレスチェック部４は、入力したマスタ２２の読み出し要求が書き込み実行済みアドレスより大きい場合には、フラグに応じて、マスタ２２の読み出し要求をバッファ５に保存する。
【００２９】
加えて、読み出しアドレスチェック部４は、入力された読み出し要求のアドレスと保存されている読み出し実行済みアドレスとの大小比較を行う。読み出し実行済みアドレスとは、今回の読み出し要求以前に入力された監視対象領域３０１のアドレスであって、読み出しアドレスチェック部４から要求調停部６への転送済みの読み出し要求のアドレスである。今回の読み出し要求のアドレスが読み出し実行済みアドレスより大きい場合には、読み出しアドレスチェック部４は、今回の読み出し要求のアドレスを新たな読み出し実行済みアドレスとして更新保存する。また、今回の読み出し要求のアドレスが読み出し実行済みアドレスより小さい場合には、読み出しアドレスチェック部４は、監視対象領域３０１の上限アドレスと読み出し実行済みアドレスと今回の読み出し要求のアドレスとの関係を基に、以下の処理を行う。すなわち、読み出しアドレスチェック部４は、監視対象領域３０１の上限アドレスまで達して監視対象領域３０１の下限アドレスに戻ったか、又は再度読み出しを行ったかを判断する。再度の読み出しが行われた場合には、読み出しアドレスチェック部４は、保存されている読み出し実行済みアドレスの更新を行わない。一方、再度の読み出しでないと判断された場合には、読み出しアドレスチェック部４は、今回入力された読み出し要求のアドレスを新たな読み出し実行済みアドレスとして更新する。それと同時に、読み出しアドレスチェック部４は、アドレスが監視対象領域３０１の下限アドレスに戻ったことを示す信号を書き込みアドレスチェック部３に供給する。書き込みアドレスチェック部３は、この信号を基に、フラグのクリアを行う。すなわち、書き込みアドレスチェック部３は、マスタ２２の読み出し要求のアドレスが監視対象領域３０１の上限まで達して監視対象領域３０１の下限に戻った場合にはフラグをクリアする。
【００３０】
要求アドレスが上限アドレスまで達して下限アドレスに戻ったか否かの判断は、一例として以下の式による判断が可能である。以下の式を満たす場合には、要求アドレスが上限アドレスまで達して下限アドレスに戻ったと判断することができる。
（実行済みアドレス−要求アドレス）＞（監視対象領域３０１の上限アドレス−監視対象領域３０１の下限アドレス）／２
【００３１】
また、再度の書き込み及び読み出しがない条件下においては、単純に以下の式で判断することも可能である。以下の式を満たす場合には、要求アドレスが上限アドレスまで達して下限アドレスに戻ったと判断することができる。
実行済みアドレス＞要求アドレス
【００３２】
読み出し要求保存バッファ５は、読み出しアドレスチェック部４により保存が指示された読み出し要求を保存する。読み出しアドレスチェック部４は、読み出し要求保存バッファ５の読み出し要求のアドレスと、書き込みアドレスチェック部３から供給される実行済みアドレスとの比較を行い、保存条件を満たさなくなった時点で、要求調停部６に読み出し要求を出力する。メモリコントローラ２５は、読み出し要求に応じて、メモリデバイス２７から読み出したデータを読み出し応答として読み出し要求を行ったマスタに、書き込み完了保証モジュール１００を介して返送する。読み出しアドレスチェック部４は、読み出し要求保存バッファ５の読み出し要求が調停部６に受け付けられた時点で、読み出し要求保存バッファ５に保存されていた読み出し要求を破棄する。
【００３３】
調停部６は、以下の経路を経由した要求を調停し、メモリアクセスマスタインターフェース１０へ順に要求を出力する。
・書き込み完了保証が不要なインターフェース１０２を経由した要求
・書き込みアドレスチェック部３を経由した監視対象領域３０１のアドレスの書き込み要求
・読み出しアドレスチェック部４を経由し、読み出し要求保存バッファ５への保存対象外と判断された読み出し要求、及び読み出し要求保存バッファ５で保存され、保存条件が解除された読み出し要求
【００３４】
図４は、図１のデータアクセスシステムの動作例を示すラダーチャートであり、アクセス要求制御方法を示す。図４では、マスタ２１がメモリデバイス２７に書き込んだデータをマスタ２２が読み出して処理をし、さらに、その処理とは非依存で、マスタ２０１がデータを書き込み、マスタ２２が読み出しを行う例を示す。ステップ４０１では、マスタ２１は、処理を開始し、０ｘＡ０００＿００００、０ｘＡ０００＿０１００及び０ｘＡ０００＿０２００のアドレスの書き込み要求を、順に、書き込み完了保証モジュール１００を介してメモリコントローラ２５に出力する。メモリコントローラ２５は、それらの書き込み要求に応じて、メモリデバイス２７に対して、０ｘＡ０００＿００００、０ｘＡ０００＿０１００及び０ｘＡ０００＿０２００のアドレスの書き込みを行う。ここで、書き込み完了保証モジュール１００は、先に説明したように、書き込みが行われたアドレスを書き込み実行済みアドレスとして保存又は更新保存するとともに、書き込み要求をメモリコントローラ２５に出力する。すなわち、書き込みアドレスチェック部３は、マスタ２１の書き込み要求を入力した場合には、その入力したマスタ２１の書き込み要求をメモリデバイス２７に向けて転送する。
【００３５】
ステップ４０２では、マスタ２１は、何らかの事情により書き込み処理が一時的にできない状況が発生している。一方、マスタ２２は、マスタ２１の書き込み処理が開始されたことに連動して、ＣＰＵ等の指示により、書き込まれたデータを読み出すための処理を開始する。具体的には、マスタ２２は、０ｘＡ０００＿００００、０ｘＡ０００＿０１００、０ｘＡ０００＿０２００、及び０ｘＡ０００＿０３００のアドレスの読み出し要求を、順に、書き込み完了保証モジュール１００に出力する。
【００３６】
読み出しアドレスチェック部４は、０ｘＡ０００＿００００、０ｘＡ０００＿０１０００及びｘＡ０００＿０２００のアドレスのデータがマスタ２１により書き込まれていると判断する。したがって、書き込み完了保証モジュール１００は、０ｘＡ０００＿００００、０ｘＡ０００＿０１０００及びｘＡ０００＿０２００のアドレスの読み出し要求をメモリコントローラ２５に出力する。読み出しアドレスチェック部４は、マスタ２２の読み出し要求を入力した場合に、そのマスタ２２の読み出し要求と同じアドレスに対するマスタ２１の書き込み要求を転送済みである場合にはそのマスタ２２の読み出し要求をメモリデバイス２７に向けて転送する。メモリコントローラ２５は、０ｘＡ０００＿００００、０ｘＡ０００＿０１０００及びｘＡ０００＿０２００のアドレスのデータをメモリデバイス２７から読み出し、書き込み完了保証モジュール１００を介してマスタ２２にデータを返送する。
【００３７】
これに対し、読み出しアドレスチェック部４は、０ｘＡ０００＿０３００のアドレスのデータがマスタ２１により書き込まれていないと判断する。したがって、ステップ４０３では、書き込み完了保証モジュール１００は、０ｘＡ０００＿０３００のアドレスの読み出し要求を、メモリコントローラ２５に出力せず、読み出し要求保存バッファ５に保存する。読み出しアドレスチェック部４は、マスタ２２の読み出し要求を入力した場合に、チェック部３がマスタ２２の読み出し要求と同じアドレスに対するマスタ２１の書き込み要求を転送していない場合には、そのマスタ２２の読み出し要求をバッファ５に保存する。ここで、読み出しアドレスチェック部４が入力したマスタ２２の読み出し要求のアドレス０ｘＡ０００＿０３００は、監視対象領域３０１のアドレスである。
【００３８】
なお、読み出しアドレスチェック部４は、入力したマスタ２２の読み出し要求のアドレスが監視対象領域３０１のアドレスでない場合には、以下の処理を行う。その場合、読み出しアドレスチェック部４は、入力したマスタ２２の読み出し要求を、調停部６を介してメモリデバイス２７に向けて転送する。
【００３９】
ステップ４０４及び４０５は、ステップ４０３及び４０６の間のマスタ２１の書き込み処理待ちの期間の処理である。ステップ４０４では、マスタ２０１は、０ｘ９０００＿００００のアドレスの書き込み要求を、書き込み完了保証モジュール１００を介してメモリコントローラ２５に出力する。ステップ４０５では、マスタ２０１は、０ｘＡ０００＿８０００のアドレスの読み出し要求を、書き込み完了保証モジュール１００を介してメモリコントローラ２５に出力する。書き込み完了保証モジュール１００は、マスタ２０１の書き込み要求及び読み出し要求を、書き込み完了保証が不要なインターフェース１０２を介して、書き込み完了保証が必要なマスタ２１及び２２のアクセスに依存せずに、メモリコントローラ２５に出力する。メモリコントローラ２５は、マスタ２０１の書き込み要求及び読み出し要求に応じて、メモリデバイス２７に対して書き込み及び読み出しを行う。そして、メモリコントローラ２５は、読み出したデータを、書き込み完了保証モジュール１００を介してマスタ２０１に返送する。
【００４０】
ステップ４０６では、マスタ２１は、書き込み処理を再開し、０ｘＡ０００＿０３００のアドレスの書き込み要求を、書き込み完了保証モジュール１００を介してメモリコントローラ２５に出力する。ここで、書き込みアドレスチェック部３は、０ｘＡ０００＿０３００のアドレスを書き込み実行済みアドレスとして更新する。メモリコントローラ２５は、メモリデバイス２７に対して、０ｘＡ０００＿０３００のアドレスにデータを書き込む。
【００４１】
ステップ４０７では、読み出しアドレスチェック部４は、０ｘＡ０００＿０３００のアドレスのデータがマスタ２１により書き込まれていると判断し、読み出し要求保存バッファ５の保存条件を満たさないと判断する。したがって、書き込み完了保証モジュール１００は、読み出し要求保存バッファ５に保存されている０ｘＡ０００＿０３００のアドレスの読み出し要求をメモリコントローラ２５に出力し、読み出し要求保存バッファ５の読み出し要求を削除する。メモリコントローラ２５は、０ｘＡ０００＿０３００のアドレスのデータをメモリデバイス２７から読み出し、書き込み完了保証モジュール１００を介してマスタ２２にデータを返送する。
【００４２】
ステップＳ４０６では、読み出しアドレスチェック部４がマスタ２２の読み出し要求をバッファ５に保存した状態で、書き込みアドレスチェック部３は、そのマスタ２２の読み出し要求と同じアドレスに対するマスタ２１の書き込み要求を入力して転送する。その後、ステップ４０７では、読み出しアドレスチェック部４は、バッファ５に保存されているマスタ２２の読み出し要求をメモリデバイス２７に向けて転送する。
【００４３】
なお、ステップ４０６及び４０７の処理は、上記の処理に限定されない。ステップ４０６では、書き込みアドレスチェック部３は、バッファ５に保存されているマスタ２２の読み出し要求と同じアドレスに対するマスタ２１の書き込み要求を入力する。その場合、読み出しアドレスチェック部４は、バッファ５に保存されているマスタ２２の読み出し要求をメモリデバイス２７に向けて転送せず、マスタ２２の読み出し要求の応答として上記のマスタ２１の書き込み要求のデータをマスタ２２に向けて出力してもよい。
【００４４】
また、その場合、読み出しアドレスチェック部４は、バッファ５に保存されているマスタ２２の読み出し要求及び上記のマスタ２１の書き込み要求をメモリデバイス２７に向けて転送しないようにしてもよい。そして、読み出しアドレスチェック部４は、マスタ２２の読み出し要求の応答として上記のマスタ２１の書き込み要求のデータをマスタ２２に向けて出力する。
【００４５】
以上説明したように、共有メモリとなるメモリデバイス２７の前段に書き込み完了保証機能を持つモジュール１００を配置することにより、バスシステム２３の構成、及びマスタ２１，２２，２０１の位置に依存せずに、書き込み完了を保証することができる。
【００４６】
本実施形態によれば、データ転送の書き込み完了を保証すべきマスタが複数存在する場合や、ポステッド転送を行うバスブリッジが複数存在する複雑なバスシステムになった場合でも、データの一貫性を保証することが可能となる。この際、本実施形態では、書き込み完了保証モジュールを設けることにより、書き込み完了保証が必要なマスタ及びバスブリッジが個別の対応を行う必要がない。
【００４７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４８】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４９】
３：書き込みアドレスチェック部、４：読み出しアドレスチェック部、５：読み出し要求保存バッファ、６：要求調停部、１００：書き込み完了保証モジュール、１０１：要求振り分け部
【図１】
2018081418.tif 000003
【図２】
2018081418.tif 000004
【図３】
2018081418.tif 000005
【図４】
2018081418.tif 000006