(57)【要約】【課題】  複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置において、共有メモリへのデータ書込完了を保証する。【解決手段】  監視部25aは、IOバス16に接続するIOコントローラ11によるバスブリッジ13を介した共有メモリ14aへのデータ書込の発生に応じた、システムバス17に接続するCPU12によるバスブリッジ18を介したIOコントローラ11のデータ書込の発生を示すステータス情報のリードアクセスを監視する。監視部25aがステータス情報のリードアクセスを検知すると、マスク部25cは、IOコントローラ11のデータ書込によりバスブリッジ13に滞留するデータの状態に基づき、リードアクセスによって取得されたステータス情報のバスブリッジ18からCPU12への供給を制御する。【選択図】  図2
2017107441.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスそれぞれに接続する複数のマスタデバイス、および、前記複数のマスタデバイスが使用する共有メモリを有する情報処理装置における制御装置であって、
第一のバスに接続する第一のマスタデバイスによる第一のバスブリッジを介した前記共有メモリへのデータ書込の発生に応じた、第二のバスに接続する第二のマスタデバイスによる第二のバスブリッジを介した前記第一のマスタデバイスのデータ書込の発生を示すステータス情報のリードアクセスを監視する監視手段と、
前記監視手段により前記ステータス情報のリードアクセスが検知されると、前記第一のマスタデバイスのデータ書込により前記第一のバスブリッジに滞留するデータの状態に基づき、前記リードアクセスによって取得された前記ステータス情報の前記第二のバスブリッジから前記第二のマスタデバイスへの供給を制御する制御手段とを有する制御装置。
【請求項２】
前記第一のマスタデバイスは、前記第二のバスに接続された前記共有メモリへの複数チャネルのデータ書込を並列に行うことができる請求項1に記載された制御装置。
【請求項３】
前記第二のマスタデバイスは、前記ステータス情報に従い、前記データ書込により前記第二のバスに接続された前記共有メモリに書き込まれたデータの読み出しを行う請求項1または請求項2に記載された制御装置。
【請求項４】
前記制御手段は、前記ステータス情報のリードアクセスの検知に応じて、前記第二のマスタデバイスと前記第二のバスブリッジの間の制御信号をマスクするマスク手段を有する請求項1から請求項3の何れか一項に記載された制御装置。
【請求項５】
前記マスク手段は、前記制御信号として、前記第二のバスから前記第二のバスブリッジに接続されるリードデータ受信可能通知信号、および、前記第二のバスブリッジから前記第二のバスに接続されるリードデータ有効通知信号をマスクする請求項4に記載された制御装置。
【請求項６】
前記リードデータ受信可能通知信号は前記第二のマスタデバイスが前記第二のバスブリッジに対してデータ受信準備が整ったことを通知する信号であり、前記リードデータ有効通知信号は前記第二のバスブリッジが前記第二のマスタデバイスに対して送信データが有効であることを示す信号である請求項5に記載された制御装置。
【請求項７】
前記制御手段は、前記ステータス情報のリードアクセスの検知に応じて前記滞留するデータの数をカウント値としてカウンタに設定して、前記滞留するデータが転送される度に前記カウント値をデクリメントし、
前記カウント値がゼロになると前記カウンタはマスク解除信号を出力し、前記マスク解除信号の出力により前記マスク手段は前記マスクを解除する請求項4から請求項6の何れか一項に記載された制御装置。
【請求項８】
前記第一のマスタデバイスは前記データ書込の終了を示す割込信号を前記第二のマスタデバイスに出力し、前記割込信号により前記第二のマスタデバイスは前記ステータス情報のリードアクセスを実行する請求項1から請求項7の何れか一項に記載された制御装置。
【請求項９】
前記制御装置は、前記割込信号の出力によって起動する請求項8に記載された制御装置。
【請求項１０】
前記割込信号が出力されていない場合、前記制御装置は非起動状態に移行する請求項8または請求項9に記載された制御装置。
【請求項１１】
複数のバスそれぞれに接続する複数のマスタデバイスと、
前記複数のマスタデバイスが使用する共有メモリと、
請求項1から請求項10の何れか一項に記載された制御装置とを有する情報処理装置。
【請求項１２】
複数のバスそれぞれに接続する複数のマスタデバイス、および、前記複数のマスタデバイスが使用する共有メモリを有する情報処理装置における制御方法であって、
第一のバスに接続する第一のマスタデバイスによる第一のバスブリッジを介した前記共有メモリへのデータ書込の発生に応じた、第二のバスに接続する第二のマスタデバイスによる第二のバスブリッジを介した前記第一のマスタデバイスのデータ書込の発生を示すステータス情報のリードアクセスを監視し、
前記ステータス情報のリードアクセスが検知されると、前記第一のマスタデバイスのデータ書込により前記第一のバスブリッジに滞留するデータの状態に基づき、前記リードアクセスによって取得された前記ステータス情報の前記第二のバスブリッジから前記第二のマスタデバイスへの供給を制御する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置に関する。
【背景技術】
【０００２】
複数のバスそれぞれに接続する複数のマスタデバイス（以下、マスタ）が主記憶ユニットを共有メモリとして使用する場合がある。この場合、第一のバスに接続する第一のマスタがデータを共有メモリに書き込み、第二のバスに接続する第二のマスタが当該データを共有メモリから読み出すことが頻繁に行われる。第一のマスタが共有メモリに書き込んだデータを第二のマスタが共有メモリから読み出す場合、第二のマスタの読出動作が開始される前に、第一のマスタによる共有メモリへのデータ書込完了が保証される必要がある。そのための技術の一例が特許文献1に提案されている。
【０００３】
特許文献1によれば、第一のバスと第二のバスの間に接続されるバスブリッジ内部のデータバッファに滞留する転送数分のデータ転送の完了を監視するモニタ回路を配置する。そして、第一のマスタからモニタ回路に、転送終了を通知する割込信号（第一のマスタの割込信号）が入力される。割込信号を入力したモニタ回路は、バスブリッジ内部のデータバッファに滞留する転送数分のデータ転送の完了をカウントし、カウントがゼロになると割込信号を第二のマスタに出力する。第二のマスタは、モニタ回路からの割込信号（言い替えれば、遅延された第一のマスタの割込信号）を受信した後、共有メモリからのデータの読出処理を行うことで、共有メモリへのデータ書込完了が保証されたデータの読み出しが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2012-113615号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献1の技術は、第一のマスタが複数チャネルのテータ転送を行い、転送終了を通知する第一のマスタの割込信号が複数の要因をまとめた単一の割込信号である場合に問題が発生する可能性ある。例えば、モニタ回路から割込信号が入力された第二のマスタは、第一のマスタの転送状態を示すステータスレジスタの値を取得して、共有メモリへのデータ書込が完了したチャネルを判別する。チャネルch1のデータ転送の完了後、ステータスレジスタの値が取得される直前にチャネルch2のデータ転送が発生した場合、第二のマスタが取得するステータスレジスタの値としてはチャネルch1とch2の両方のデータ転送完了を示すことになる。
【０００６】
バスブリッジは、システムバスの混雑状況に応じて内部のデータバッファのデータを出力する/出力しないを判断する。システムバスが混雑している場合、バスブリッジ内のデータバッファにデータが一時的に保持される。従って、ステータスレジスタの値がチャネルch1とch2の両方のデータ転送完了を示していたとしても、例えばチャネルch2のデータがバスブリッジのデータバッファに滞留している可能性がある（言い替えれば、データ転送未了）。チャネルch2のデータ転送が未了の場合、マスタ12は、共有メモリへのデータ書込完了が保証されないデータを読み出すことになる。
【０００７】
本発明は、複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置において、共有メモリへのデータ書込完了を保証することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００９】
本発明にかかる制御装置は、複数のバスそれぞれに接続する複数のマスタデバイス、および、前記複数のマスタデバイスが使用する共有メモリを有する情報処理装置における制御装置であって、第一のバスに接続する第一のマスタデバイスによる第一のバスブリッジを介した前記共有メモリへのデータ書込の発生に応じた、第二のバスに接続する第二のマスタデバイスによる第二のバスブリッジを介した前記第一のマスタデバイスのデータ書込の発生を示すステータス情報のリードアクセスを監視する監視手段と、前記監視手段により前記ステータス情報のリードアクセスが検知されると、前記第一のマスタデバイスのデータ書込により前記第一のバスブリッジに滞留するデータの状態に基づき、前記リードアクセスによって取得された前記ステータス情報の前記第二のバスブリッジから前記第二のマスタデバイスへの供給を制御する制御手段とを有する。
【発明の効果】
【００１０】
本発明によれば、複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置において、共有メモリへのデータ書込完了を保証することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の構成例、および、IOコントローラのステータスレジスタの状態を示す。
【図２】実施例1の情報処理装置の構成例を示すブロック図。
【図３】制御回路の処理を説明するフローチャート。
【図４】実施例2の情報処理装置の構成例を示すブロック図。
【図５】制御回路の処理を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明にかかる実施例の情報処理装置、並びに、その制御装置および制御方法を図面を参照して詳細に説明する。なお、実施例は特許請求の範囲にかかる本発明を限定するものではなく、また、実施例において説明する構成の組み合わせのすべてが本発明の解決手段に必須とは限らない。
【００１３】
以下ではマスタデバイスとして、周辺デバイス用のIOバスに接続するIOコントローラおよびシステムバスに接続するCPUを例に説明を行う。つまり、IOコントローラが、システムバスに接続するメモリコントローラが管理する共有メモリにデータ書込処理を行い、CPUが共有メモリから当該データの読出処理を行う例を説明する。ただし、実施例はマスタデバイスの種類を限定するものではなく、様々な種類のマスタデバイスが本発明の対象になる。また、実施例においては、例えばオンチップバスアーキテクチャにおけるAHBバスをIOバスとして、AXIバスをシステムバスとして想定する。しかし、本発明は、バスの種類に限定されず、バスブリッジを介して接続される様々なバスを用いる情報処理装置に適用可能である。
【００１４】
●装置の構成
図1(a)のブロック図により情報処理装置の構成例を示す。IOコントローラ11は、IOバス16、バスブリッジ13およびシステムバス17を介して、メモリコントローラ14が管理する（共有）メモリ14aにデータを書き込むDMA (direct memory acess)書込処理を行う。IOコントローラ11は、メモリ14aへの複数チャネルのDMA書込処理を並列に行うことができる。以下では、IOコントローラ11が2チャネルのDMA書込処理を行う例を説明するが、チャネル数は「2」以上であればよい。IOコントローラ11は、DMA書込処理が終了すると単一の割込信号22をモニタ回路15に出力する。図1(b)はIOコントローラ11によるチャネルch1のDMA書込処理が終了した後の、IOコントローラ11のステータスレジスタ11aの状態を示す。
【００１５】
割込信号22が入力されたモニタ回路15は、バスブリッジ13内のデータバッファ13aに滞留しているデータの数をカウント値としてカウンタ15bに設定する。カウンタ値は、データバッファ13aに滞留した各データの転送が完了する度にデクリメントされ、カウント値がゼロになるとカウンタ15bがデータ転送の完了を示す転送完了信号を割込遅延回路15aに出力する。転送完了信号が入力された割込遅延回路15aは、割込信号24をCPU12に出力する。
【００１６】
割込信号24が入力されたCPU12は、バスブリッジ18およびIOバス16を介して、IOコントローラ11のDMA書込処理の状態（データ書込状態）を示すステータスレジスタ11aの値（以下、ステータス情報）を取得する。ステータスレジスタ11aは、IOコントローラ11のメモリマップ上のアドレス（以下、SRアドレス）に予めマッピングされている。CPU12は、SRアドレスにアクセスすることでステータス情報を取得する。
【００１７】
CPU12は、ステータス情報によりデータ転送が完了したチャネルを判別する。図1(b)の例では、チャネルch1のデータ転送が完了したと判別される。CPU12は、システムバス17およびメモリコントローラ14を介して、ステータス情報に基づき、メモリ14aへの書込完了が保証されたデータをメモリ14aから読み出す読出処理を行う。
【００１８】
このようにして、複数のバスそれぞれに接続する複数のマスタデバイス、および、複数のマスタデバイスが使用する共有メモリを有する情報処理装置におけるIOコントローラ11からCPU12へのデータ転送処理が実現される。しかし、チャネルch1のDMA書込処理が終了後、CPU12によるステータス情報の取得前にチャネルch2のDMA書込処理が発生する可能性がある。この場合、チャネルch1、ch2の両方のDMA書込処理の完了を示すステータス情報が取得されていまう。
【００１９】
図1(c)はチャネルch1とch2の両方のDMA書込処理の完了を示すステータスレジスタ11aの状態を表す。割込信号24が入力されたCPU12が、図1(c)に示すステータス情報を取得したとしても、実際はメモリ14aへの書き込みまでは完了しておらず、チャネルch2のデータはデータバッファ13aに滞留している可能性がある。その場合、CPU12は、メモリ14aへの書込完了が保証されていないチャネルch2のデータを読み出す読出処理を行うことになる。
【実施例１】
【００２０】
●装置の構成
図2のブロック図により実施例1の情報処理装置の構成例を示す。図1(a)と同様の構成には同一符号を付して、その詳細説明を省略する。図2に示す構成において、割込信号22はCPU12に直接入力され、割込信号22が入力されたCPU12はステータスレジスタ11aのリードアクセス（以下、ステータス情報アクセス）を行う。また、図2に示す構成は、図1(a)のモニタ回路15に代わる制御回路25を有する。
【００２１】
制御回路25において、モニタ25aは、CPU12によるステータス情報アクセスを監視し、ステータス情報アクセスの発生を検知する。ステータス情報アクセスの検知方法としては、SRアドレスをモニタ25aに格納し、IOバス16のアドレス信号とコマンドを監視して、SRアドレスに対するリードコマンドの発行（リードアクセスの発生）を検知すればよい。
【００２２】
マスク部25cは、二つの制御信号のマスク機能を有する。第一の制御信号は、システムバス17からバスブリッジ18に接続されるリードデータ受信可能通知信号（以下、RREADY信号）31であり、RREADY信号31をマスク処理したM_RREADY信号32をバスブリッジ18に接続する。第二の制御信号は、バスブリッジ18からシステムバス17に接続されるリードデータ有効通知信号（以下、RVALID信号）33であり、RVALID信号33をマスク処理したM_RVALID信号34をシステムバス17に接続する。
【００２３】
RREADY信号31は、CPU12がバスブリッジ18に対してデータ受信準備が整ったことを通知する信号である。また、RVALID信号33は、バスブリッジ18がCPU12に対して送信データが有効であることを示す信号である。この二つの制御信号のやり取りにより、バスブリッジ18からCPU12へのデータの送受信が成り立つ。また、図示しないが、マスク部25cは、例えば、二入力一出力の単純な論理積回路の一方の入力に制御信号を接続し、他方の入力にマスク解除の条件が整うとHレベルになる信号（後述するマスク解除信号）を入力することで実現可能である。ここではマスク部25cの構成については限定しない。
【００２４】
モニタ25aがステータス情報アクセスを検知すると、制御回路25は、マスク部25cによりRREADY信号31とRVALID信号33をディセーブル状態にマスクする。制御回路25は、さらに、バスブリッジ13内のデータバッファ13aに滞留しているデータ（以下「滞留データ」と呼ぶ場合がある）の数をカウント値としてカウンタ25bに設定する。カウント値は、データバッファ13aに滞留した各データの転送が完了する度にデクリメントされ、カウント値がゼロになるとカウンタ25bからマスク解除信号が出力される。マスク解除信号が入力されたマスク部25cは、RREADY信号31とRVALID信号33のマスクを解除する。
【００２５】
バスブリッジ18は、ステータス情報アクセスによって読み出されたステータス情報を一時的に保持する。そして、RREADY信号31とRVALID信号33のマスクが解除されるとバスブリッジ18からCPU12へのデータ送受信が成立し、CPU12は、バスブリッジ18に保持されていたステータス情報を取得する。
【００２６】
割込信号22の入力に応じたステータス情報アクセスによって取得されるステータス情報と滞留データの関係として次の状況が想定される。
状況A：ステータス情報‘10’、チャネルch1のDMA書込処理が完了、共有メモリへの書き込みが完了（滞留データなし）、
状況B：ステータス情報‘10’、チャネルch1のDMA書込処理が完了、共有メモリへの書き込みは未了（滞留データありなし）、
状況C：ステータス情報‘11’、チャネルch1とch2のDMA書込処理が完了、チャネルch1、ch2ともに共有メモリへの書き込みが完了（滞留データなし、
状況D：ステータス情報‘11’、チャネルch1とch2のDMA書込処理が完了、チャネルch1の共有メモリへの書き込みは完了だが、チャネルch2の共有メモリへの書き込みが未了（滞留データあり）。
【００２７】
状況A、Cは、滞留データがなく、データ書込完了が保証される。また、状況Bは、滞留データがあるが、割込信号22を遅延する図1(a)に示す構成でもデータ書込完了を保証することができる。しかし、状況Dは、図1(a)に示す構成ではデータ書込完了を保証することができない。
【００２８】
状況Bまたは状況Dが発生した場合、RREADY信号31とRVALID信号33がマスクされ、滞留データがなくなると当該マスクが解除される。マスク解除により、CPU12がステータス情報を受け取り、メモリ14aへのデータ書込完了が保証されたデータにアクセスすることができる。
【００２９】
図1(a)に示す構成のように、滞留データの転送が完了するまで割込信号22を遅延したとしても、スタータス情報によってDMA書込処理の完了が示されるチャネルのデータの書込完了が保証されない場合がある（状況D）。一方、図2に示す構成によれば、滞留データの転送が完了後、READY信号31とRVALID信号33のマスクが解除され、CPU12がステータス情報を受け取ることになる。言い替えれば、図1(a)に示す構成は割込信号22の遅延を行うのに対して、図2に示す構成は、CPU12のステータス情報アクセスによって取得されるステータス情報のバスバッファ18からCPU12への供給を滞留データの状態に基づき制御する。その結果、図2に示す構成によれば、CPU12は、状況Dにおいても、ステータス情報の受信をトリガとして、メモリ14aへのデータ書込完了が保証されたデータにアクセスすることができる。
【００３０】
●制御回路の処理
図3のフローチャートにより制御回路25の処理を説明する。モニタ25aは、CPU12によるステータス情報アクセスの検知を行い(S11)、ステータス情報アクセスを検知しない場合はステップS11を繰り返す。また、ステータス情報アクセスが検知された場合、処理はステップS12に進む。
【００３１】
モニタ25aがステータス情報アクセスを検知すると、制御回路25は、マスク部25cによりRREADY信号31とRVALID信号33をディセーブル状態にマスクする(S12)。これにより、ステータスレジスタ11aから読み出され、CPU12へ供給されるステータス情報がバスブリッジ18に保持される。続いて、制御回路25は、バスブリッジ13のデータバッファ13aに滞留しているデータの数をカウント値としてカウンタ25bに設定し(S13)、バスブリッジ13を監視して、各データの転送が完了する度にカウント値をデクリメントする(S14)。
【００３２】
次に、カウント値がゼロになったか否かが判定され(S15)、カウント値がゼロではない場合、処理はステップS14に戻る。また、カウント値がゼロになると処理はステップS16に進む。つまり、カウント値がゼロになりカウンタ25bからマスク解除信号が出力されると、マスク部25cによるRREADY信号31とRVALID信号33のマスクが解除される(S16)。これにより、バスブリッジ18に保持されていたステータス情報がCPU12へ供給される。そして、制御回路25は、処理をステップS11に戻して、ステータス情報アクセスの検知を繰り返す。
【００３３】
このように、バスブリッジ13のデータバッファ13aに滞留するデータの転送が完了するまで、RREADY信号31とRVALID信号33が一時的にディセーブル状態にマスクされる。これにより、IOコントローラ11のステータスレジスタ11aから読み出され、CPU12へ供給されるステータス情報の供給を遅延させて、CPU12がステータス情報を受信した時点における、共有メモリへのデータ書込完了を保証する。つまり、IOコントローラ11のデータ転送完了を示す割込信号22が複数の要因をまとめた単一の割込信号でも、CPU12によるステータスレジスタ11aのリードタイミングに依らず、すべての状況において供給メモリへのデータ書込完了が保証される。なお、上述したステータス情報の供給の遅延方法は一例であり、別な手法でステータス情報の供給を遅延してもよい。
【実施例２】
【００３４】
以下、本発明にかかる実施例2の情報処理装置およびその制御方法を説明する。なお、実施例2において、実施例1と略同様の構成については、同一の符号を付して、その詳細な説明を省略する場合がある。
【００３５】
●装置の構成
図4のブロック図により実施例2の情報処理装置の構成例を示す。実施例2において、DMA書込処理の完了を示す割込信号22は、CPU12だけでなく、制御回路25に供給される。制御回路25は、割込信号22をトリガとして起動する。制御回路25の起動は、制御回路25内のモニタ25a、カウンタ25b、マスク部25c等の機能ブロックの活性化を意味する。起動方法として、例えば、割込信号22の入力によって、制御回路25の機能ブロックにクロックが供給される、または、制御回路25の機能ブロックのリセットが解除されるなどが考えられるが、ここでは限定しない。
【００３６】
起動後、制御回路25は、一連の処理の実行が終わった時点で割込信号22が入力されている場合は起動状態を維持して、当該割込信号22をトリガとする一連の処理を実行する。また、一連の処理の実行が終わった時点で割込信号22が入力されていない場合は非起動状態に移行し、割込信号22の入力の待機状態になる。割込信号22をトリガとする制御回路25の起動を除けば、他の構成やそれらの動作は実施例1と共通するため、それらの詳細説明を省略する。
【００３７】
●制御回路の処理
図5のフローチャートにより実施例2の制御回路25の処理を説明する。制御回路25は、割込信号22の入力を待機する非起動状態にある(S21)。割込信号22が入力されると、制御回路25は起動状態に移行し(S22)、図3に示したステップS11からS16の処理を実行する。そして、RREADY信号31とRVALID信号33のマスク解除(S16)の後、制御回路25は、割込信号22が入力されているか否かを判定し(S23)、割込信号22が入力されている場合は処理をステップS11に戻す。また、割込信号22が入力されていない場合、制御回路25は非起動状態に移行し(S24)、処理はステップS21に戻る。
【００３８】
［その他の実施例］
本発明は、上述の実施形態の一以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける一以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、一以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
【符号の説明】
【００３９】
11 … IOコントローラ、12 … CPU、13、18 … バスブリッジ、14a … 共有メモリ、16 … IOバス、17 … システムバス、25a … 監視部、25c … マスク部
【図１】
2017107441.tif 000003
【図２】
2017107441.tif 000004
【図３】
2017107441.tif 000005
【図４】
2017107441.tif 000006
【図５】
2017107441.tif 000007