(57)【要約】【課題】  複数のデータ転送完了を保証すべきデータ転送が並列に行われるマスタの場合でも、共有メモリへのデータ書き込み完了を保証することが可能な情報処理装置を提供する。【解決手段】  第１のバスに接続される第１のマスタと、第２のバスに接続される第２のマスタと、第１のバスと第２のバスとの間に接続されるバスブリッジと、第２のバスに接続され、マスタの各々よりアクセスされる共有メモリと、第１のマスタからの割り込み信号を受信し、第２のマスタのマスタに割り込み信号を通知する割り込み遅延回路を有し、割り込み遅延回路は、第１のマスタからの割り込み通知を受信すると、予め設定された第１のマスタの割り込み要因を示すレジスタのアドレス情報に基づき、第１のマスタの割り込み要因の情報を読み出し保存した後に、バスブリッジに滞留するデータ転送の完了をモニタし、モニタ処理が完了すると第２のマスタに割り込み通知を行う。【選択図】  図１
2017211728.tif 000002
【特許請求の範囲】
【請求項１】
第１のバスに接続される第１のマスタと、
第２のバスに接続される第２のマスタと、
前記第１のバスと前記第２のバスとの間に接続されるバスブリッジと、
前記第２のバスに接続され、前記マスタの各々よりアクセスされる共有メモリと、
前記第１のマスタからの割り込み信号を受信し、第２のマスタに割り込み信号を通知する割り込み遅延回路と、を備え、
前記割り込み遅延回路は、前記第１のマスタからの前記割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記割り込み信号を通知し、
前記第２のマスタは、前記割り込み信号を通知された後、前記第１のマスタの割り込み要因の情報のうち前記保持手段に保持された割り込み要因の情報と対応する割り込み要因の情報をクリアし、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がある場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを待機し、前記割り込み遅延回路は、再度、前記第１のマスタから新たな割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を前記保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記新たな割り込み信号を通知し、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がない場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを特徴とする情報処理装置。
【請求項２】
前記割り込み遅延回路は、前記第１のマスタからの割り込み信号を受信すると、予め設定された前記第１のマスタの割り込み要因を示すレジスタのアドレス情報に基づき、前記第１のマスタの割り込み要因の情報を読み出し、前記保持手段に保持することを特徴とする情報処理装置。
【請求項３】
第１のバスに接続される第１のマスタと、
第２のバスに接続される第２のマスタと、
前記第１のバスと前記第２のバスとの間に接続されるバスブリッジと、
前記第２のバスに接続され、前記マスタの各々よりアクセスされる共有メモリと、
前記第１のマスタからの割り込み信号を受信し、第２のマスタに割り込み信号を通知する割り込み遅延回路と、を備える情報処理装置を制御する情報処理方法であって、
前記割り込み遅延回路は、前記第１のマスタからの前記割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記割り込み信号を通知し、
前記第２のマスタは、前記割り込み信号を通知された後、前記第１のマスタの割り込み要因の情報のうち前記保持手段に保持された割り込み要因の情報と対応する割り込み要因の情報をクリアし、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がある場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを待機し、前記割り込み遅延回路は、再度、前記第１のマスタから新たな割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を前記保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記新たな割り込み信号を通知し、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がない場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置に関する。
【背景技術】
【０００２】
従来、複数のバスにそれぞれ接続する複数のマスタデバイス（以下、「マスタ」とも記載する。）が、主記憶ユニットを共有メモリとして使用するような場合がある。この場合、第１のバスに接続する第１のマスタが共有メモリにデータを書き込み、そのデータを第２のバスに接続する第２のマスタが共有メモリから読み出すといったことが頻繁に行われている。第１のマスタが共有メモリに書き込んだデータを第２のマスタが共有メモリから読み出すためには、第２のマスタが読み出し動作を開始する前に、第１のマスタによる共有メモリへのデータの書き込み完了が保証される必要がある。そのための技術の一例が特許文献１に提案されている。
【０００３】
特許文献１によれば、第１のバスと第２のバスの間に接続されるバスブリッジ内部のデータバッファに滞留する転送数分のデータ転送の完了を監視するモニタ回路を配置する。そして、第１のマスタからモニタ回路に、転送完了を通知するトリガ信号（第１マスタの割り込み信号）が入力される。モニタ回路は、トリガ信号が入力されると、バスブリッジ内部のバッファに滞留する転送数分のデータ転送の完了をカウントし、カウントがゼロになると完了信号を第２のマスタに通知する。第２のマスタは、モニタ回路からの完了信号（遅延した第１マスタの割り込み信号）を受けてから共有メモリからのデータの読み出しを行うことで、共有メモリへのデータ書き込み完了が保証されたデータの読み出しが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１１３６１５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術は、第１のマスタが複数チャネルのデータ転送を行い、転送終了を通知する第１のマスタの割り込み信号が複数の要因をまとめた単一の割り込み信号である場合に問題が発生する可能性がある。例えば、モニタ回路から割り込み信号が入力された第２のマスタは、第１のマスタの転送状態を示すステータスレジスタの値を取得して、共有メモリへのデータ書き込みが完了したチャネルを判別する。第１のマスタのチャネルｃｈ１のデータ転送完了でモニタ回路が起動されてから、第２のマスタが第１のマスタのステータスレジスタにアクセスするまでの間にチャネルｃｈ２の転送が完了してしまう。すると、ステータスレジスタは２つのチャネルｃｈ両方の転送完了状態を示すことになる。
【０００６】
バスブリッジは、システムバスの混雑状況に応じて内部のデータバッファのデータを出力する／出力しないを判断する。システムバスが混雑している場合、バスブリッジ内のデータバッファにデータが一時的に保持される。従って、ステータスレジスタの値がチャネルｃｈ１とｃｈ２の両方のデータ転送完了を示していたとしても、例えばチャネルｃｈ２のデータがバスブリッジのデータバッファに滞留している可能性がある（言い換えれば、データ転送未了）。チャネルｃｈ２のデータ転送が未了の場合、第２のマスタは、共有メモリへのデータ書き込み完了が保証されないデータを読み出すことになる。
【０００７】
本発明は上記課題に鑑みてなされたものであり、複数のデータ転送完了を保証すべきデータ転送が並列に行われるマスタの場合でも、共有メモリへのデータ書き込み完了を保証することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置は、以下の構成を備える。
【０００９】
第１のバスに接続される第１のマスタと、
第２のバスに接続される第２のマスタと、
前記第１のバスと前記第２のバスとの間に接続されるバスブリッジと、
前記第２のバスに接続され、前記マスタの各々よりアクセスされる共有メモリと、
前記第１のマスタからの割り込み信号を受信し、第２のマスタに割り込み信号を通知する割り込み遅延回路と、を備え、
前記割り込み遅延回路は、前記第１のマスタからの前記割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記割り込み信号を通知し、
前記第２のマスタは、前記割り込み信号を通知された後、前記第１のマスタの割り込み要因の情報のうち前記保持手段に保持された割り込み要因の情報と対応する割り込み要因の情報をクリアし、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がある場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを待機し、前記割り込み遅延回路は、再度、前記第１のマスタから新たな割り込み信号を受信したときの前記第１のマスタの割り込み要因の情報を前記保持手段に保持し、前記バスブリッジに滞留するデータ転送が完了すると前記第２のマスタに前記新たな割り込み信号を通知し、
前記第１のマスタの割り込み要因の情報に前記保持手段に保持された割り込み要因の情報と対応しない新たな割り込み要因の情報がない場合、前記第２のマスタは、前記共有メモリからデータを読み出すことを特徴とする情報処理装置。
【発明の効果】
【００１０】
本発明によれば、複数のデータ転送完了を保証すべきデータ転送が並列に行われるマスタの場合でも、共有メモリへのデータ書き込み完了を保証することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の構成例を示すブロック図
【図２】割り込みステータスレジスタ１０１０の例
【図３】割り込み遅延回路１０６の内部ブロック例
【図４】各部の処理手順を説明するフローチャート
【図５】マスタ１（単一ｃｈ）からのデータ転送の動作状況例を示す図
【図６】マスタ１（複数ｃｈ）からのデータ転送の動作状況例を示す図
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態を説明する。
【実施例１】
【００１３】
図１は情報処理装置の構成例を示す。図１にてＩＯコントローラ１０１は第１のマスタである。ＣＰＵ１０２は第２のマスタである。ＩＯバス１０７は第１のマスタであるＩＯコントローラが接続される第１のバスである。ＣＰＵバス１０８は第２のマスタであるＣＰＵが接続される第２のバスである。バスブリッジ１０３は第１のバスと第２のバスを接続する。データバッファ１０３０はバスブリッジ内にあり、第１のバスと第２のバス間のデータ転送時に一時的に転送データを保存する。メモリ制御回路１０４は第２のバスに接続される。共有メモリ１０５はメモリ制御回路１０４により制御され、様々なチップ内のマスタで使用されるデータが置かれる。割り込み遅延回路１０６は第１マスタ１０１から共有メモリ１０５へのデータ転送完了や、異常状態を通知する割り込み信号１０９を遅延させ、第２のマスタに割り込み信号１１０を通知する。モニタ信号１１１により、データバッファ１０３０に滞留するデータの監視結果を示す。ステータスレジスタ１０１０は第１のマスタ１０１内の割り込みステータスを保持するレジスタである。
【００１４】
ここで、第１のマスタ１０１から共有メモリ１０５へのデータ転送については、第１バス１０７の転送効率を高くするためにポステッド転送が行われるものとする。ポステッド転送とは、第１マスタ１０１はバスブリッジ１０３にデータを転送して第１バスの転送を完了し、バスブリッジが第２バスでの転送を行うことである。
【００１５】
第１のマスタ１０１は、図２に割り込み要因レジスタの一例を示すように、２つ以上の割り込み要因を持ち、その複数割り込み要因の論理和を出力する（図２では８個の割り込み要因があるとして示してある）。図２における各ビットはそれぞれ異なる割り込み要因を示すものあり、一例として複数のチャネルのエンドポイント構成をもつＵＳＢデバイスだとすると、各エンドポイントのデータ転送状況、あるいはエラーの状況を示している。また、割り込み要因のクリア方法は該当する割り込み要因ビットに‘１’を書くことで行われる。
【００１６】
図３に割り込み遅延回路１０６の内部回路ブロックの例を図示する。図１で示されるブロックには同じ番号を付してある。割り込み遅延制御部１０６０はマスタ１からの割り込み通知を受信して、バスブリッジ１０３内のデータバッファ１０３０に滞留する転送数を監視し、第２マスタへの割り込み通知を行う。割り込みステータスアドレス情報保持部１０６１は、第１マスタ１０１の割り込みステータスレジスタ１０１０のアドレス情報を予め設定しておく。割り込みステータス情報保持部１０６２は、第１マスタ１０１の割り込みステータスレジスタ１０１０の内容を保持する。マスタインターフェース１０８１は割り込み遅延回路１０６から第１バス１０７へアクセスする。スレーブインターフェース１０８２は第１バス１０７から割り込み遅延回路１０６にアクセスする。信号１１１０、１１１１は、データバッファ１０３０の中に滞留するデータ転送を監視するモニタ信号１１１の詳細を示すものである。１１１０は、データバッファ１０３０内の滞留転送数、１１１１は、バスブリッジからメモリ回路１０４へのデータ転送が完了するたびに通知を行うデータ転送完了を通知する信号である。
【００１７】
次に、割り込み遅延制御部１０６０の処理フローを説明する。図４は、割り込み遅延制御部に第１のマスタ、第２のマスタを含めた全体の処理フローを示すものである。第１のマスタ（単一ｃｈ［ｃｈ０］のデータ転送完了の割り込み要因の場合）からのデータ転送の動作状況を図５に示す。図５にて縦方向は時間の経緯を示している。また、図５に記載した動作が、図４でのどの処理によるものかわかるように、図４の処理の番号を記載している。
【００１８】
図４、図５にて第１のマスタ１０１が図１にて図示されていない外部からのデータ転送を受け取り、バスブリッジ１０３およびメモリ制御回路１０４を経由して共有メモリ１０５へのデータ転送を行うためにデータ転送を開始する。図５では、第１のマスタ１０１の単一のｃｈ［ｃｈ０］によるデータ転送が行われる例を示す。バスブリッジ１０３では第１のバスおよび第２のバスの転送効率を高めるためデータバッファ１０３０を有し、転送されるデータは一時的にこのデータバッファに蓄積される。そのため、第１のバス上の転送（図５の第１のマスタからバスブリッジ１０３）と第２のバス上の転送（バスブリッジ１０３からメモリ制御回路１０４）は独立している（ポステッド転送）。そのため、第１のマスタからの全ての転送データがバスブリッジ１０３に転送された時点（Ｓ４０１）で、メモリ制御回路１０４に到達する前に第１のマスタはデータ転送が完了したと判断する。そして、第１のマスタ１０１から割り込み遅延制御部１０６０へ割り込み信号１０９により転送完了を通知する（Ｓ４０２）。
【００１９】
割り込み通知を受けた割り込み遅延制御部１０６０は、予め割り込みステータスアドレス情報保持部１０６１に設定されたアドレス情報から第１マスタ１０１の割り込みステータスレジスタ１０１０にアクセス（Ｓ４１０）する。読み出した割り込みステータス情報を割り込みステータス情報保持部１０６２に保存する（Ｓ４１１）。次にバスブリッジ１０３のデータバッファ１０３０に滞留する転送を監視するために、バスブリッジ１０３から、データバッファ１０３０内に滞留する転送数の情報１１１０（図５では、転送数２）を取得する（Ｓ４１２）。引き続き、バスブリッジ１０３からメモリ制御回路１０４への各データ転送の完了を通知する転送完了情報（１１１１）をカウントする（Ｓ４１３）。Ｓ４１２で取得した転送数分（図５では２回）の転送が完了すると、この時点で、割り込み信号１０９で通知される前の第１のマスタ１０１からバスブリッジに転送されたデータは、全て共有メモリ１０５に転送されたことになる。この後、第２のマスタ１０２に対して割り込み信号１１０を発行する（Ｓ４１５）。
【００２０】
割り込み通知を受信した第２のマスタ１０２は、割り込み遅延回路１０６の割り込みステータス保持部１０６２から、割り込みステータス情報（第１のマスタが割り込み信号１０９を発行した時の、割り込みステータス１０１０の値）を読み出す。そして、対応する第１のマスタ１０１の割り込み要因を判別する（Ｓ４２０）。ここでは、第１マスタ１０１のｃｈ０の転送完了を示す。次に第１のマスタ１０１の割り込みステータス１０１０のレジスタにアクセスし、Ｓ４２０で判別した割り込み要因（図２のｃｈ０＿ｉｎｔ）をクリアする（Ｓ４２１）。これにより、割り込みステータス１０１０において他の割り込み要因が有効でない場合、第１のマスタ１０１が発行した割り込み信号１０９はディアサートされる（Ｓ４０３）。次に割り込み遅延回路１０６の割り込みステータス情報保持部１０６２の情報をクリアする（Ｓ４２２）。これにより、割り込み遅延回路１０６が発行した割り込み信号１１０がディアサートされる（Ｓ４１６）。割り込み遅延回路１０６は、ここで、第１のマスタ１０１からの割り込み信号１０９がアサートされていなければ処理を終了する。第２のマスタ１０２は、これ以降、第１マスタ１０１が転送したデータを共有メモリ１０５から読み出す（Ｓ４２３）。以上の処理フローにより、第２のマスタ１０２が転送されたデータを読みに行く際には、確実に第１マスタ１０１からの共有メモリ１０５への書き込みが完了していることが保証される。
【００２１】
図６は、図４の制御フローで第１のマスタ１０１（複数ｃｈ［ｃｈ０／ｃｈ１］のデータ転送完了の割り込み要因の場合）からのデータ転送の動作状態を示す。図５と同様に、図６に記載した動作が、図４でのどの処理によるものかわかるように、図４の処理の番号を記載している。特にｃｈ１の処理で追加される動作を“Ｓｘｘｘ−２”と明示している。ここでは、第１マスタ１０１のｃｈ０のデータ転送完了の割り込み通知の後、割り込み遅延回路１０６が、バスブリッジ１０３内の滞留するデータ転送の完了を監視している間に、ｃｈ１のデータ転送が完了するケースを説明する。
【００２２】
第１のマスタのｃｈ０のデータ転送が完了（Ｓ４０１）してから、第２のマスタが、割り込み遅延回路１０６の割り込みステータス保持部１０６のクリア処理（Ｓ４２２）を行う。共有メモリ１０５からｃｈ０が転送したデータを読み出す処理（Ｓ４２３）までは、図５と同様の処理が行われる。図６に示すように、この時点で既に第１マスタ１０１のｃｈ１のデータ転送が完了している（Ｓ４０１−２）。従って、Ｓ４２１で第２のマスタ１０２が第１のマスタ１０１の割り込みステータス１０１０をクリアする際、Ｓ４２０で判別したｃｈ０の割り込み要因（図２のｃｈ０＿ｉｎｔ）だけでなく、ｃｈ１の割り込み要因（図２のｃｈ１＿ｉｎｔ）も有効になっている。ここでは、Ｓ４２０で判別したｃｈ０の割り込み要因のみクリアする。この場合、Ｓ４２１で第１マスタの割り込みステータス１０１０の割り込み要因（ｃｈ０＿ｉｎｔ）をクリアしても、第１のマスタ１０１からの割り込み信号１０９はアサートされた状態が続く（Ｓ４０３）。従って、割り込み遅延回路１０６は、Ｓ４１６で第２マスタに対する割り込み信号１１０をディアサートした後、第１のマスタ１０１からの割り込み信号１０９がアサートされ続けていることを認識し共有メモリの読み出しを待機する（Ｓ４１７）。そして、再度、第１のマスタ１０１の割り込みステータスレジスタにアクセスする（Ｓ４１０−２）。以降、図５で説明したフローと同様に割り込み要因（図２のｃｈ１＿ｉｎｔ）に対する処理を行い、Ｓ４２３−２で共有メモリ１０５からデータを読み出す。確実に第１のマスタ１０１（ｃｈ１）からの共有メモリへの書き込みが完了したデータを第２のマスタ１０２が読み出せることが保証される。
【００２３】
上記の処理フローにでは、複数のデータ転送の完了通知の割り込み要因の論理和を単一の割り込み信号で通知するマスタ（ＩＯコントローラ）の場合を示した。この場合でも、マスタ（ＣＰＵ）は、共有メモリへのデータ転送の完了が保証された割り込み要因を判別できるようになる。データの一貫性を保証することが可能となる。
【００２４】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００２５】
１０１  第１のマスタ（ＩＯコントローラ）
１０２  第２のマスタ（ＣＰＵ）
１０３  バスブリッジ
１０４  メモリ制御回路
１０５  共有メモリ
１０６  割り込み遅延回路
１０７  第１のバス（ＩＯバス）
１０８  第２のバス（ＣＰＵバス）
１０９  割り込み信号（第１マスタから割り込み遅延回路）
１１０  割り込み信号（割り込み遅延回路から第２マスタ）
１０１０  割り込みステータスレジスタ
１０３０  データバッファ
１０６０  割り込み遅延制御部
１０６１  割り込みステータスアドレス情報保持部
１０６２  割り込みステータ情報保持部
１０８１  第１バスのマスタインターフェース
１０８２  第２バスのマスタインターフェース
１１１０  滞留データ転送数通知信号
１１１１  転送完了通知信号
【図１】
2017211728.tif 000003
【図２】
2017211728.tif 000004
【図３】
2017211728.tif 000005
【図４】
2017211728.tif 000006
【図５】
2017211728.tif 000007
【図６】
2017211728.tif 000008