JP2018081418A - アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 - Google Patents
アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 Download PDFInfo
- Publication number
- JP2018081418A JP2018081418A JP2016222278A JP2016222278A JP2018081418A JP 2018081418 A JP2018081418 A JP 2018081418A JP 2016222278 A JP2016222278 A JP 2016222278A JP 2016222278 A JP2016222278 A JP 2016222278A JP 2018081418 A JP2018081418 A JP 2018081418A
- Authority
- JP
- Japan
- Prior art keywords
- master
- request
- address
- write
- read request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
- Memory System (AREA)
Abstract
【課題】書き込み要求及び読み出し要求の順序を保証することができるアクセス要求制御装置を提供する。【解決手段】アクセス要求制御装置100は、第1のマスタがデータ記憶部にデータを書き込んだ後に、第2のマスタがデータ記憶部からデータを読み出す順序を保証するアクセス要求制御装置であって、第1のマスタの書き込み要求及び第2のマスタの読み出し要求を保証対象インターフェースに出力し、第1のマスタの読み出し要求及び第2のマスタの書き込み要求を保証非対象インターフェースを介してデータ記憶部に向けて転送する要求振り分け部101を有する。書き込みアドレスチェック部3と読み出しアドレスチェック部4は、第2のマスタの読み出し要求を入力した場合に、第2のマスタの読み出し要求と同じアドレスに対する第1のマスタの書き込み要求を転送していない場合には第2のマスタの読み出し要求をバッファ5に保存する。【選択図】図2
Description
本発明は、アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法に関する。
複数のマスタは、複数のバスにそれぞれ接続され、主記憶ユニットを共有メモリとして使用する。その場合、第1のバスに接続される第1のマスタが共有メモリにデータを書き込み、そのデータを第2のバスに接続される第2のマスタが共有メモリから読み出す。第1のマスタが共有メモリに書き込んだデータを第2のマスタが共有メモリから読み出すためには、第2のマスタが読み出し動作を開始する前に、第1のマスタによる共有メモリへのデータの書き込みが完了していることを保証しなければならない。そのための技術の一例が特許文献1に開示されている。
特許文献1には、第1のバスと第2のバスの間に接続されるバスブリッジ内部のバッファに滞留する転送数のデータ転送が完了することを監視するモニタ回路が開示されている。モニタ回路は、第1マスタからの転送完了を通知するトリガ信号(第1マスタの割込み信号)を入力する。また、モニタ回路は、トリガ信号を入力すると、バスブリッジ内部のバッファに滞留する転送数分のデータ転送完了をカウントし、カウントが完了すると完了信号を第2マスタに通知する。第2マスタは、モニタ回路からの完了信号(遅延した第1マスタの割込み信号)を受けてから共有メモリからのデータの読み出しを行うことで、共有メモリに書き込みが完了したデータを読み出すことが保証される。
また、特許文献2には、第1のマスタと第2のマスタが共有キャッシュメモリに接続され、キャッシュメモリの機構を利用して第1のマスタが処理したデータを第2のマスタに受け渡すための監視対象領域を設定する技術が開示されている。特許文献2では、所定の単位のデータ量毎に監視対象領域の書き込みデータの書き込み完了情報を管理し、監視対象領域のデータ読み出しを行う場合において、対象のデータが書き込み完了していない場合には、リード要求を待機させる。そして、特許文献2では、書き込み完了後にリードデータを返すことで、共有キャッシュメモリに書き込みが完了したデータを読み出すことが保証される。
しかし、上記の特許文献1では、共有メモリへのデータ転送の際にバスブリッジにポステッド転送を行うマスタが、書き込み完了保証が必要なデータ転送を行う場合、各マスタ及びバスブリッジが書き込み完了を保証する仕組みを設ける必要がある。更には、マスタが共有メモリにデータ転送するために複数のポステッド転送を行うバスブリッジを経由するためのバス構成が複雑になる。また、書き込み完了保証が必要なマスタが増大してくると、このような個々のマスタ及びバスブリッジで共有メモリへの書き込み完了を保証することが困難になる。
また、特許文献2では、データの受け渡しに使用する領域に対して、書き込みを行うプロセッサが領域確保のコマンドを発行してからデータ書き込みを行い、読み出しを行うプロセッサが対象領域のデータ読み出し完了後に領域解放コマンドを発行する必要がある。このため、データ転送にかかる処理が煩雑になり、一般的なDMAコントローラが行う転送には不向きである。また、データ転送を行う所定の単位の領域毎に、アドレス、書き込み完了状況、プロセッサID情報等の管理情報を持つ必要があり、回路規模が増大する。
本発明の目的は、マスタ及びバスブリッジが個別の対応を行うことなく、書き込み要求及び読み出し要求の順序を保証することができるアクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法を提供することである。
本発明のアクセス要求制御装置は、第1のマスタがデータ記憶部にデータを書き込んだ後に、第2のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御装置であって、前記第1のマスタの書き込み要求及び前記第2のマスタの読み出し要求を保証対象インターフェースに出力し、前記第1のマスタの読み出し要求及び前記第2のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送する要求振り分け部と、バッファと、前記保証対象インターフェースに接続され、前記第1のマスタの書き込み要求を入力した場合には、前記入力した前記第1のマスタの書き込み要求を前記データ記憶部に向けて転送する転送部とを有し、前記転送部は、前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送済みである場合には前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送し、前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送していない場合には前記第2のマスタの読み出し要求を前記バッファに保存する。
本発明によれば、マスタ及びバスブリッジが個別の対応を行うことなく、書き込み要求及び読み出し要求の順序を保証することができる。
図1は、本発明の実施形態によるデータアクセスシステムの構成例を示すブロック図である。データアクセスシステムは、チップシステム26とメモリデバイス27を有する。チップシステム26は、複数のマスタ21,22,201と、バスシステム23と、レジスタアクセスブリッジ24と、メモリコントローラ25と、書き込み完了保証モジュール100とを有する。第1のマスタ21、第2のマスタ22及び第3のマスタ201は、バスシステム23に接続される。レジスタアクセスブリッジ24は、バスシステム23と書き込み完了保証モジュール100の間に接続される。書き込み完了保証モジュール100は、メモリアクセススレーブインターフェース8を介してバスシステム23に接続され、レジスタ設定インターフェース9を介してレジスタアクセスブリッジ24に接続される。また、書き込み完了保証モジュール100は、メモリアクセスマスタインターフェース10を介してメモリコントローラ25に接続される。メモリコントローラ25は、メモリデバイス27に接続される。メモリデバイス27は、データ記憶部であり、データを記憶する。メモリコントローラ25は、データ記憶コントローラであり、メモリデバイス27を制御する。
マスタ21には0x0のIDが設定され、マスタ22には0x1のIDが設定され、マスタ201には0x2のIDが設定されている。メモリコントローラ25は、外部のメモリデバイス27を制御する。マスタ21のメモリデバイス27への書き込みと、マスタ22のメモリデバイス27からの読み出しとは、順序保証が必要である。マスタ21がメモリデバイス27に書き込みを完了した後に、マスタ22がメモリデバイス27から読み出しを行われなければならないものとする。そこで、書き込み完了保証モジュール100は、マスタ21がメモリデバイス27にデータを書き込んだ後に、マスタ22がメモリデバイス27からそのデータを読み出す順序を保証する。また、マスタ21、22、201からメモリコントローラ25へのアクセスには、各マスタ21、22、201は、各マスタ21、22、201を識別するためのIDを付加して出力する。
図2は、図1の書き込み完了保証モジュール100の構成例を示すブロック図である。書き込み完了保証モジュール100は、アクセス要求制御装置であり、書き込みアドレスチェック部3と、読み出しアドレスチェック部4と、読み出し要求保存バッファ5と、要求調停部6と、設定部7と、要求振り分け部101とを有する。さらに、書き込み完了保証モジュール100は、メモリアクセススレーブインターフェース8と、レジスタ設定インターフェース9と、メモリアクセスマスタインターフェース10と、インターフェース102〜104とを有する。インターフェース102は、メモリデバイス27への書き込み完了保証が不要なインターフェースである。インターフェース103は、メモリデバイス27への書き込み完了保証が必要な書き込みインターフェースである。インターフェース104は、メモリデバイス27への書き込み完了保証が必要な読み出しインターフェースである。
図3は、チップシステムのアドレスマップの一例を示す図である。書き込み完了保証モジュール101のメモリアクセススレーブインターフェース8は、0x8000_0000〜0xFFFF_FFFFのアドレス領域が割り当てられている。その0x8000_0000〜0xFFFF_FFFFのアドレス領域は、監視対象領域301を含む。監視対象領域301は、保証対象アドレス領域であり、監視対象の0xA000_0000〜0xBFFF_FFFFのアドレス領域である。書き込み完了保証モジュール101のレジスタ設定インターフェース9は、0x2000_0000〜0x2FFF_FFFFのレジスタ領域302が割り当てられている。
次に、図1〜図3を用いて、データアクセスシステムの動作を説明する。マスタ21,22,201は、それぞれ、バスシステム23を介して、各マスタ21,22,201のIDを含むメモリアクセス要求を要求振り分け部101に出力可能である。また、マスタ21,22,201は、それぞれ、バスシステム23及びレジスタアクセスブリッジ24を介して、マスタ21,22,201のIDを含むレジスタアクセス要求を設定部7に出力可能である。
要求振り分け部101は、各マスタ21,22,201のIDに基づいて、各マスタ21,22,201からのメモリアクセス要求を、インターフェース102〜104のうちのいずれかに振り分ける。インターフェース102は、書き込み完了保証が不要なインターフェースである。インターフェース103は、書き込み完了保証が必要な書き込みインターフェースである。インターフェース104は、書き込み完了保証が必要な読み出しインターフェースである。例えば、IDが0x0の書き込み要求はインターフェース103に振り分けられ、IDが0x1の読み出し要求はインターフェース104に振り分けられる。
要求振り分け部101は、マスタ21(IDが0x0)からの書き込み要求を、書き込み完了保証が必要な書き込みインターフェース103を経由して書き込みアドレスチェック部3に出力する。また、要求振り分け部101は、マスタ22(IDが0x1)からの読み出し要求を、書き込み完了保証が必要な読み出しインターフェース104を経由して読み出しアドレスチェック部4に出力する。また、要求振り分け部101は、マスタ21からの読み出し要求、マスタ22からの書き込み要求、及びマスタ201からのアクセス要求を、書き込み完了保証が不要なインターフェース102を経由して要求調停部6に出力する。
すなわち、要求振り分け部101は、マスタ21の書き込み要求を第1の保証対象インターフェース103に出力し、マスタ22の読み出し要求を第2の保証対象インターフェース104に出力する。そして、要求振り分け部101は、マスタ21の読み出し要求、マスタ22の書き込み要求、並びにマスタ201の書き込み要求及び読み出し要求を保証非対象インターフェース102を介してメモリデバイス27に向けて転送する。
書き込みアドレスチェック部3は、入力されたマスタ21(IDが0x0)からの書き込み要求のアドレスが0xA000_0000〜0xBFFF_FFFFの監視対象領域301のアドレスであるか否かをチェックする。そして、書き込みアドレスチェック部3は、入力されたマスタ21(IDが0x0)からの書き込み要求を要求調停部6に転送し、チェック結果を読み出しアドレスチェック部4に出力する。
読み出しアドレスチェック部4は、入力されたマスタ22(IDが0x1)からの読み出し要求のアドレスが0xA000_0000〜0xBFFF_FFFFの監視対象領域301のアドレスであるか否かをチェックする。そして、読み出しアドレスチェック部4は、入力されたマスタ22からの読み出し要求が発行可能である場合には、その読み出し要求を要求調停部6に転送する。また、読み出しアドレスチェック部4は、入力されたマスタ22からの読み出し要求が発行可能でない場合には、その読み出し要求を読み出し要求保存バッファ5に一時保存する。具体的には、読み出しアドレスチェック部4は、マスタ21からの書き込み要求のアドレス及びマスタ22からの読み出し要求のアドレスの両方が監視対象領域301のアドレスである場合には、マスタ22からの読み出し要求をバッファ5に保存する。これは、マスタ21からの書き込み要求による書き込みが完了した後に、マスタ22からの読み出し要求による読み出しを行うためである。また、読み出しアドレスチェック部4は、マスタ21からの書き込み要求のアドレス及びマスタ22からの読み出し要求のアドレスの両方が監視対象領域301のアドレスでない場合には、マスタ22からの読み出し要求を要求調停部6に出力する。
書き込みアドレスチェック部3及び読み出しアドレスチェック部4は、転送部であり、マスタ21の書き込み要求及びマスタ22の読み出し要求を調停部6に転送する。書き込みアドレスチェック部3は、第1の転送部であり、インターフェース103に接続され、マスタ21の書き込み要求をメモリデバイス27に向けて転送する。読み出しアドレスチェック部4は、第2の転送部であり、インターフェース104に接続され、マスタ22の読み出し要求をメモリデバイス27に向けて転送する。
要求調停部6は、インターフェース102経由の要求と、書き込みアドレスチェック部3及び読み出しアドレスチェック部4からの要求を調停し、メモリアクセスマスタインターフェース10を介してメモリコントローラ25に要求を出力する。すなわち、要求調停部6は、インターフェース102を介してマスタ21の読み出し要求及びマスタ22の書き込み要求を入力し、チェック部3及び4により転送されたマスタ21の書き込み要求及びマスタ22の読み出し要求を入力する。そして、要求調停部6は、入力した要求を調停してメモリデバイス27に向けて転送する。メモリコントローラ25は、入力した要求に応じて、メモリデバイス27に対して書き込み又は読み出しを行う。
例えば、図4のように、マスタ21は、0xA000_0000から0xA000_0300まで順次、書き込み要求を発行する。また、マスタ22は、0xA000_0000から0xA000_0300まで順次、読み出し要求を発行する。ただし、同一アドレスに対して、マスタ21の書き込みが完了した後に、マスタ22の読み出しが可能になる。以上のように、マスタ21は、アドレス順に、書き込み要求を発行する。
次に、書き込みアドレスチェック部3の処理を説明する。書き込みアドレスチェック部3は、入力された書き込み要求のアドレスが監視対象領域301のアドレスであるか否かをチェックする。そして、書き込みアドレスチェック部3は、入力された書き込み要求のアドレスが監視対象領域301のアドレスである場合には、入力された書き込み要求のアドレスと保存されている書き込み実行済みアドレスとの大小比較を行う。書き込み実行済みアドレスとは、今回の書き込み要求以前に入力された監視対象領域301のアドレスであって、書き込みアドレスチェック部3から要求調停部6に転送済みの書き込み要求のアドレスである。書き込みアドレスチェック部3は、今回入力された書き込み要求のアドレスが保存されている書き込み実行済みアドレスより大きい場合には、今回入力された書き込み要求のアドレスを新たな書き込み実行済みアドレスとして更新保存する。
すなわち、書き込みアドレスチェック部3は、入力したマスタ21の書き込み要求のアドレスを書き込み実行済みアドレスとして保存する。そして、書き込みアドレスチェック部3は、新たに入力したマスタ21の書き込み要求のアドレスが上記の書き込み実行済みアドレスより大きい場合には、新たに入力したマスタ21の書き込み要求のアドレスを書き込み実行済みアドレスとして更新保存する。
また、書き込みアドレスチェック部3は、今回入力された書き込み要求のアドレスが保存されている書き込み実行済みアドレスより小さい場合には、以下の処理を行う。その場合、書き込みアドレスチェック部3は、監視対象領域301のアドレスの上限アドレスと保存されている書き込み実行済みアドレスと今回入力された書き込み要求のアドレスとの関係を基に、以下の処理を行う。すなわち、書き込みアドレスチェック部3は、監視対象領域301の上限アドレスまで達して監視対象領域301の下限アドレスに戻ったか、又は再度書き込みを行ったかを判断する。書き込みアドレスチェック部3は、再度の書き込みが行われた場合には保存されている書き込み実行済みアドレスの更新を行わない。一方、書き込みアドレスチェック部3は、再度の書き込みでないと判断された場合には、今回入力された書き込み要求のアドレスを新たな書き込み実行済みアドレスとして更新する。それと同時に、書き込みアドレスチェック部3は、アドレスが監視対象領域301の下限アドレスに戻ったことを示すフラグを設定する。すなわち、書き込みアドレスチェック部3は、マスタ21の書き込み要求のアドレスが監視対象領域301の上限まで達して監視対象領域301の下限に戻った場合にはフラグを設定する。このフラグは、監視対象領域301の読み出し要求が同様に監視対象領域301の下限アドレスに戻った場合にクリアされる。書き込み実行済みアドレスの保存及びにフラグの設定は、書き込み要求が調停部6で受け付けられたタイミングで実行されることが好ましい。書き込みアドレスチェック部3は、書き込み完了保証の判断のために、書き込み実行済みアドレス及びフラグを読み出しアドレスチェック部4に供給する。書き込みアドレスチェック部3は、チェックが実行された書き込み要求を要求調停部6に出力する。アドレス判断は、実際に書き込みが行われたアドレス値について行われることが好ましい。
次に、読み出しアドレスチェック部4の処理を説明する。読み出しアドレスチェック部4は、入力された読み出し要求のアドレスが監視対象領域301のアドレス領域であるか否かをチェックする。そして、読み出しアドレスチェック部4は、入力された読み出し要求のアドレスが監視対象領域301のアドレス領域である場合には、以下の2つの処理を行う。読み出しアドレスチェック部4は、読み出し要求のアドレスが書き込みアドレスチェック部3から供給される書き込み実行済みアドレスよりも大きいか否かをチェックする。読み出し要求のアドレスが書き込み実行済みアドレスより小さい場合には、読み出し要求の範囲は既に書き込みが行われた領域であるので、読み出しアドレスチェック部4は、書き込み要求と同様に、入力された読み出し要求を要求調停部6に出力する。すなわち、読み出しアドレスチェック部4は、入力したマスタ22の読み出し要求が書き込み実行済みアドレスより小さい場合には、マスタ22の読み出し要求をメモリデバイス27に向けて転送する。読み出し要求のアドレスが書き込み実行済みアドレスより大きい場合には、読み出しアドレスチェック部4は、書き込みアドレスチェック部3から供給されるフラグを確認する。フラグが設定されている場合には、読み出しアドレスチェック部4は、監視対象領域301の上限アドレスまで書き込みが行われた状況を加味する。その上で、読み出しアドレスチェック部4は、再度、読み出し要求のアドレスが書き込み実行済みアドレスよりも大きいか否かを判断し、読み出し要求アドレスが書き込み実行済みアドレスより小さいと判断された場合には、読み出し要求を要求調停部6へ出力する。それでも、読み出し要求のアドレスが書き込み実行済みアドレスより大きいと判断された場合には、読み出し要求されたアドレスは書き込みが完了していないアドレス領域である。その場合、読み出しアドレスチェック部4は、読み出し要求を実行するのに必要な情報を読み出し要求保存バッファ5に保存する。すなわち、読み出しアドレスチェック部4は、入力したマスタ22の読み出し要求が書き込み実行済みアドレスより大きい場合には、フラグに応じて、マスタ22の読み出し要求をバッファ5に保存する。
加えて、読み出しアドレスチェック部4は、入力された読み出し要求のアドレスと保存されている読み出し実行済みアドレスとの大小比較を行う。読み出し実行済みアドレスとは、今回の読み出し要求以前に入力された監視対象領域301のアドレスであって、読み出しアドレスチェック部4から要求調停部6への転送済みの読み出し要求のアドレスである。今回の読み出し要求のアドレスが読み出し実行済みアドレスより大きい場合には、読み出しアドレスチェック部4は、今回の読み出し要求のアドレスを新たな読み出し実行済みアドレスとして更新保存する。また、今回の読み出し要求のアドレスが読み出し実行済みアドレスより小さい場合には、読み出しアドレスチェック部4は、監視対象領域301の上限アドレスと読み出し実行済みアドレスと今回の読み出し要求のアドレスとの関係を基に、以下の処理を行う。すなわち、読み出しアドレスチェック部4は、監視対象領域301の上限アドレスまで達して監視対象領域301の下限アドレスに戻ったか、又は再度読み出しを行ったかを判断する。再度の読み出しが行われた場合には、読み出しアドレスチェック部4は、保存されている読み出し実行済みアドレスの更新を行わない。一方、再度の読み出しでないと判断された場合には、読み出しアドレスチェック部4は、今回入力された読み出し要求のアドレスを新たな読み出し実行済みアドレスとして更新する。それと同時に、読み出しアドレスチェック部4は、アドレスが監視対象領域301の下限アドレスに戻ったことを示す信号を書き込みアドレスチェック部3に供給する。書き込みアドレスチェック部3は、この信号を基に、フラグのクリアを行う。すなわち、書き込みアドレスチェック部3は、マスタ22の読み出し要求のアドレスが監視対象領域301の上限まで達して監視対象領域301の下限に戻った場合にはフラグをクリアする。
要求アドレスが上限アドレスまで達して下限アドレスに戻ったか否かの判断は、一例として以下の式による判断が可能である。以下の式を満たす場合には、要求アドレスが上限アドレスまで達して下限アドレスに戻ったと判断することができる。
(実行済みアドレス−要求アドレス)>(監視対象領域301の上限アドレス−監視対象領域301の下限アドレス)/2
(実行済みアドレス−要求アドレス)>(監視対象領域301の上限アドレス−監視対象領域301の下限アドレス)/2
また、再度の書き込み及び読み出しがない条件下においては、単純に以下の式で判断することも可能である。以下の式を満たす場合には、要求アドレスが上限アドレスまで達して下限アドレスに戻ったと判断することができる。
実行済みアドレス>要求アドレス
実行済みアドレス>要求アドレス
読み出し要求保存バッファ5は、読み出しアドレスチェック部4により保存が指示された読み出し要求を保存する。読み出しアドレスチェック部4は、読み出し要求保存バッファ5の読み出し要求のアドレスと、書き込みアドレスチェック部3から供給される実行済みアドレスとの比較を行い、保存条件を満たさなくなった時点で、要求調停部6に読み出し要求を出力する。メモリコントローラ25は、読み出し要求に応じて、メモリデバイス27から読み出したデータを読み出し応答として読み出し要求を行ったマスタに、書き込み完了保証モジュール100を介して返送する。読み出しアドレスチェック部4は、読み出し要求保存バッファ5の読み出し要求が調停部6に受け付けられた時点で、読み出し要求保存バッファ5に保存されていた読み出し要求を破棄する。
調停部6は、以下の経路を経由した要求を調停し、メモリアクセスマスタインターフェース10へ順に要求を出力する。
・書き込み完了保証が不要なインターフェース102を経由した要求
・書き込みアドレスチェック部3を経由した監視対象領域301のアドレスの書き込み要求
・読み出しアドレスチェック部4を経由し、読み出し要求保存バッファ5への保存対象外と判断された読み出し要求、及び読み出し要求保存バッファ5で保存され、保存条件が解除された読み出し要求
・書き込み完了保証が不要なインターフェース102を経由した要求
・書き込みアドレスチェック部3を経由した監視対象領域301のアドレスの書き込み要求
・読み出しアドレスチェック部4を経由し、読み出し要求保存バッファ5への保存対象外と判断された読み出し要求、及び読み出し要求保存バッファ5で保存され、保存条件が解除された読み出し要求
図4は、図1のデータアクセスシステムの動作例を示すラダーチャートであり、アクセス要求制御方法を示す。図4では、マスタ21がメモリデバイス27に書き込んだデータをマスタ22が読み出して処理をし、さらに、その処理とは非依存で、マスタ201がデータを書き込み、マスタ22が読み出しを行う例を示す。ステップ401では、マスタ21は、処理を開始し、0xA000_0000、0xA000_0100及び0xA000_0200のアドレスの書き込み要求を、順に、書き込み完了保証モジュール100を介してメモリコントローラ25に出力する。メモリコントローラ25は、それらの書き込み要求に応じて、メモリデバイス27に対して、0xA000_0000、0xA000_0100及び0xA000_0200のアドレスの書き込みを行う。ここで、書き込み完了保証モジュール100は、先に説明したように、書き込みが行われたアドレスを書き込み実行済みアドレスとして保存又は更新保存するとともに、書き込み要求をメモリコントローラ25に出力する。すなわち、書き込みアドレスチェック部3は、マスタ21の書き込み要求を入力した場合には、その入力したマスタ21の書き込み要求をメモリデバイス27に向けて転送する。
ステップ402では、マスタ21は、何らかの事情により書き込み処理が一時的にできない状況が発生している。一方、マスタ22は、マスタ21の書き込み処理が開始されたことに連動して、CPU等の指示により、書き込まれたデータを読み出すための処理を開始する。具体的には、マスタ22は、0xA000_0000、0xA000_0100、0xA000_0200、及び0xA000_0300のアドレスの読み出し要求を、順に、書き込み完了保証モジュール100に出力する。
読み出しアドレスチェック部4は、0xA000_0000、0xA000_01000及びxA000_0200のアドレスのデータがマスタ21により書き込まれていると判断する。したがって、書き込み完了保証モジュール100は、0xA000_0000、0xA000_01000及びxA000_0200のアドレスの読み出し要求をメモリコントローラ25に出力する。読み出しアドレスチェック部4は、マスタ22の読み出し要求を入力した場合に、そのマスタ22の読み出し要求と同じアドレスに対するマスタ21の書き込み要求を転送済みである場合にはそのマスタ22の読み出し要求をメモリデバイス27に向けて転送する。メモリコントローラ25は、0xA000_0000、0xA000_01000及びxA000_0200のアドレスのデータをメモリデバイス27から読み出し、書き込み完了保証モジュール100を介してマスタ22にデータを返送する。
これに対し、読み出しアドレスチェック部4は、0xA000_0300のアドレスのデータがマスタ21により書き込まれていないと判断する。したがって、ステップ403では、書き込み完了保証モジュール100は、0xA000_0300のアドレスの読み出し要求を、メモリコントローラ25に出力せず、読み出し要求保存バッファ5に保存する。読み出しアドレスチェック部4は、マスタ22の読み出し要求を入力した場合に、チェック部3がマスタ22の読み出し要求と同じアドレスに対するマスタ21の書き込み要求を転送していない場合には、そのマスタ22の読み出し要求をバッファ5に保存する。ここで、読み出しアドレスチェック部4が入力したマスタ22の読み出し要求のアドレス0xA000_0300は、監視対象領域301のアドレスである。
なお、読み出しアドレスチェック部4は、入力したマスタ22の読み出し要求のアドレスが監視対象領域301のアドレスでない場合には、以下の処理を行う。その場合、読み出しアドレスチェック部4は、入力したマスタ22の読み出し要求を、調停部6を介してメモリデバイス27に向けて転送する。
ステップ404及び405は、ステップ403及び406の間のマスタ21の書き込み処理待ちの期間の処理である。ステップ404では、マスタ201は、0x9000_0000のアドレスの書き込み要求を、書き込み完了保証モジュール100を介してメモリコントローラ25に出力する。ステップ405では、マスタ201は、0xA000_8000のアドレスの読み出し要求を、書き込み完了保証モジュール100を介してメモリコントローラ25に出力する。書き込み完了保証モジュール100は、マスタ201の書き込み要求及び読み出し要求を、書き込み完了保証が不要なインターフェース102を介して、書き込み完了保証が必要なマスタ21及び22のアクセスに依存せずに、メモリコントローラ25に出力する。メモリコントローラ25は、マスタ201の書き込み要求及び読み出し要求に応じて、メモリデバイス27に対して書き込み及び読み出しを行う。そして、メモリコントローラ25は、読み出したデータを、書き込み完了保証モジュール100を介してマスタ201に返送する。
ステップ406では、マスタ21は、書き込み処理を再開し、0xA000_0300のアドレスの書き込み要求を、書き込み完了保証モジュール100を介してメモリコントローラ25に出力する。ここで、書き込みアドレスチェック部3は、0xA000_0300のアドレスを書き込み実行済みアドレスとして更新する。メモリコントローラ25は、メモリデバイス27に対して、0xA000_0300のアドレスにデータを書き込む。
ステップ407では、読み出しアドレスチェック部4は、0xA000_0300のアドレスのデータがマスタ21により書き込まれていると判断し、読み出し要求保存バッファ5の保存条件を満たさないと判断する。したがって、書き込み完了保証モジュール100は、読み出し要求保存バッファ5に保存されている0xA000_0300のアドレスの読み出し要求をメモリコントローラ25に出力し、読み出し要求保存バッファ5の読み出し要求を削除する。メモリコントローラ25は、0xA000_0300のアドレスのデータをメモリデバイス27から読み出し、書き込み完了保証モジュール100を介してマスタ22にデータを返送する。
ステップS406では、読み出しアドレスチェック部4がマスタ22の読み出し要求をバッファ5に保存した状態で、書き込みアドレスチェック部3は、そのマスタ22の読み出し要求と同じアドレスに対するマスタ21の書き込み要求を入力して転送する。その後、ステップ407では、読み出しアドレスチェック部4は、バッファ5に保存されているマスタ22の読み出し要求をメモリデバイス27に向けて転送する。
なお、ステップ406及び407の処理は、上記の処理に限定されない。ステップ406では、書き込みアドレスチェック部3は、バッファ5に保存されているマスタ22の読み出し要求と同じアドレスに対するマスタ21の書き込み要求を入力する。その場合、読み出しアドレスチェック部4は、バッファ5に保存されているマスタ22の読み出し要求をメモリデバイス27に向けて転送せず、マスタ22の読み出し要求の応答として上記のマスタ21の書き込み要求のデータをマスタ22に向けて出力してもよい。
また、その場合、読み出しアドレスチェック部4は、バッファ5に保存されているマスタ22の読み出し要求及び上記のマスタ21の書き込み要求をメモリデバイス27に向けて転送しないようにしてもよい。そして、読み出しアドレスチェック部4は、マスタ22の読み出し要求の応答として上記のマスタ21の書き込み要求のデータをマスタ22に向けて出力する。
以上説明したように、共有メモリとなるメモリデバイス27の前段に書き込み完了保証機能を持つモジュール100を配置することにより、バスシステム23の構成、及びマスタ21,22,201の位置に依存せずに、書き込み完了を保証することができる。
本実施形態によれば、データ転送の書き込み完了を保証すべきマスタが複数存在する場合や、ポステッド転送を行うバスブリッジが複数存在する複雑なバスシステムになった場合でも、データの一貫性を保証することが可能となる。この際、本実施形態では、書き込み完了保証モジュールを設けることにより、書き込み完了保証が必要なマスタ及びバスブリッジが個別の対応を行う必要がない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
3:書き込みアドレスチェック部、4:読み出しアドレスチェック部、5:読み出し要求保存バッファ、6:要求調停部、100:書き込み完了保証モジュール、101:要求振り分け部
Claims (13)
- 第1のマスタがデータ記憶部にデータを書き込んだ後に、第2のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御装置であって、
前記第1のマスタの書き込み要求及び前記第2のマスタの読み出し要求を保証対象インターフェースに出力し、前記第1のマスタの読み出し要求及び前記第2のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送する要求振り分け部と、
バッファと、
前記保証対象インターフェースに接続され、前記第1のマスタの書き込み要求を入力した場合には、前記入力した前記第1のマスタの書き込み要求を前記データ記憶部に向けて転送する転送部とを有し、
前記転送部は、
前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送済みである場合には前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送し、
前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送していない場合には前記第2のマスタの読み出し要求を前記バッファに保存することを特徴とするアクセス要求制御装置。 - 前記転送部は、前記第2のマスタの読み出し要求を前記バッファに保存した場合、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を入力して転送した後に、前記バッファに保存されている前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送することを特徴とする請求項1に記載のアクセス要求制御装置。
- 前記転送部は、前記バッファに保存されている前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を入力した場合、前記バッファに保存されている前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送せず、前記第2のマスタの読み出し要求の応答として前記第1のマスタの書き込み要求のデータを前記第2のマスタに向けて出力することを特徴とする請求項1に記載のアクセス要求制御装置。
- 前記転送部は、前記バッファに保存されている前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を入力した場合、前記バッファに保存されている前記第2のマスタの読み出し要求及び前記第1のマスタの書き込み要求を前記データ記憶部に向けて転送せず、前記第2のマスタの読み出し要求の応答として前記第1のマスタの書き込み要求のデータを前記第2のマスタに向けて出力することを特徴とする請求項1又は3に記載のアクセス要求制御装置。
- 前記要求振り分け部は、前記第1のマスタの書き込み要求を第1の保証対象インターフェースに出力し、前記第2のマスタの読み出し要求を第2の保証対象インターフェースに出力し、
前記転送部は、
前記第1の保証対象インターフェースに接続され、前記第1のマスタの書き込み要求を前記データ記憶部に向けて転送する第1の転送部と、
前記第2の保証対象インターフェースに接続され、前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送する第2の転送部とを有することを特徴とする請求項2に記載のアクセス要求制御装置。 - 前記第2の転送部は、
前記第2のマスタの読み出し要求を入力し、前記第2のマスタの読み出し要求のアドレスが保証対象アドレス領域のアドレスである場合、前記第1の転送部が前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送していない場合には前記第2のマスタの読み出し要求を前記バッファに保存し、
前記第2のマスタの読み出し要求を入力し、前記第2のマスタの読み出し要求のアドレスが前記保証対象アドレス領域のアドレスでない場合には、前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送することを特徴とする請求項5に記載のアクセス要求制御装置。 - 前記第1のマスタの書き込み要求は、アドレス順に発行され、
前記第1の転送部は、入力した前記第1のマスタの書き込み要求のアドレスを書き込み実行済みアドレスとして保存し、新たに入力した前記第1のマスタの書き込み要求のアドレスが前記書き込み実行済みアドレスより大きい場合には、前記新たに入力した前記第1のマスタの書き込み要求のアドレスを前記書き込み実行済みアドレスとして更新保存し、
前記第2の転送部は、入力した前記第2のマスタの読み出し要求が前記書き込み実行済みアドレスより小さい場合には、前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送し、入力した前記第2のマスタの読み出し要求が前記書き込み実行済みアドレスより大きい場合には、前記第2のマスタの読み出し要求を前記バッファに保存することを特徴とする請求項6に記載のアクセス要求制御装置。 - 前記第1の転送部は、前記第1のマスタの書き込み要求のアドレスが前記保証対象アドレス領域の上限まで達して前記保証対象アドレス領域の下限に戻った場合にはフラグを設定し、
前記第2の転送部は、入力した前記第2のマスタの読み出し要求が前記書き込み実行済みアドレスより大きい場合には、前記フラグに応じて、前記第2のマスタの読み出し要求を前記バッファに保存することを特徴とする請求項7に記載のアクセス要求制御装置。 - 前記第1の転送部は、前記第2のマスタの読み出し要求のアドレスが前記保証対象アドレス領域の上限まで達して前記保証対象アドレス領域の下限に戻った場合には前記フラグをクリアすることを特徴とする請求項8に記載のアクセス要求制御装置。
- さらに、前記保証非対象インターフェースを介して前記第1のマスタの読み出し要求及び前記第2のマスタの書き込み要求を入力し、前記転送部により転送された前記第1のマスタの書き込み要求及び前記第2のマスタの読み出し要求を入力し、前記入力した要求を調停して前記データ記憶部に向けて転送する調停部を有することを特徴とする請求項1乃至9のいずれか1項に記載のアクセス要求制御装置。
- 前記要求振り分け部は、第3のマスタの書き込み要求及び読み出し要求を前記保証非対象インターフェースを介して前記データ記憶部に向けて転送することを特徴とする請求項1乃至10のいずれか1項に記載のアクセス要求制御装置。
- 請求項1乃至11のいずれか1項に記載のアクセス要求制御装置と、
前記第1のマスタと、
前記第2のマスタと、
前記第1のマスタと前記第2のマスタと前記アクセス要求制御装置に接続されるバスシステムと、
前記アクセス要求制御装置により転送された要求を入力し、前記データ記憶部を制御するデータ記憶コントローラと
を有することを特徴とするデータアクセスシステム。 - 第1のマスタがデータ記憶部にデータを書き込んだ後に、第2のマスタが前記データ記憶部から前記データを読み出す順序を保証するアクセス要求制御方法であって、
要求振り分け部により、前記第1のマスタの書き込み要求及び前記第2のマスタの読み出し要求を保証対象インターフェースに出力し、前記第1のマスタの読み出し要求及び前記第2のマスタの書き込み要求を保証非対象インターフェースを介して前記データ記憶部に向けて転送するステップと、
転送部により、前記保証対象インターフェースを介して、前記第1のマスタの書き込み要求を入力した場合には、前記入力した前記第1のマスタの書き込み要求を前記データ記憶部に向けて転送するステップと、
前記転送部により、前記保証対象インターフェースを介して、前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送済みである場合には前記第2のマスタの読み出し要求を前記データ記憶部に向けて転送するステップと、
前記転送部により、前記保証対象インターフェースを介して、前記第2のマスタの読み出し要求を入力した場合に、前記第2のマスタの読み出し要求と同じアドレスに対する前記第1のマスタの書き込み要求を転送していない場合には前記第2のマスタの読み出し要求をバッファに保存するステップと
を有することを特徴とするアクセス要求制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016222278A JP2018081418A (ja) | 2016-11-15 | 2016-11-15 | アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016222278A JP2018081418A (ja) | 2016-11-15 | 2016-11-15 | アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018081418A true JP2018081418A (ja) | 2018-05-24 |
Family
ID=62197707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016222278A Pending JP2018081418A (ja) | 2016-11-15 | 2016-11-15 | アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018081418A (ja) |
-
2016
- 2016-11-15 JP JP2016222278A patent/JP2018081418A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103597457B (zh) | 避免设备中的非公布请求死锁 | |
CN114443529B (zh) | 内存直接访问架构、系统、方法、电子设备和介质 | |
US7581054B2 (en) | Data processing system | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
CN107636630B (zh) | 中断控制器 | |
US9043806B2 (en) | Information processing device and task switching method | |
JP5578713B2 (ja) | 情報処理装置 | |
JP5360061B2 (ja) | マルチプロセッサシステム及びその制御方法 | |
JP5499987B2 (ja) | 共有キャッシュメモリ装置 | |
US20100058001A1 (en) | Distributed shared memory multiprocessor and data processing method | |
US20150268985A1 (en) | Low Latency Data Delivery | |
JP5981004B2 (ja) | 半導体装置 | |
JPH08161254A (ja) | 情報処理システムおよびそのバス調停方式 | |
JP2018081418A (ja) | アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法 | |
JP4170330B2 (ja) | 情報処理装置 | |
WO2007039933A1 (ja) | 演算処理装置 | |
JP2013041361A (ja) | リソース調停システム及び調停方法 | |
JP5805546B2 (ja) | 半導体装置 | |
JPH11232213A (ja) | 入出力装置におけるデータ転送方式 | |
US20100153610A1 (en) | Bus arbiter and bus system | |
US8239652B2 (en) | Data processing system | |
JP6416488B2 (ja) | 半導体装置 | |
JP6929074B2 (ja) | 情報処理装置とその制御方法 | |
JP6430710B2 (ja) | データ転送制御装置及びデータ転送の制御方法 | |
JP2017107441A (ja) | 情報処理装置、並びに、その制御装置および制御方法 |