(57)【要約】【課題】バス・システムに不具合が発生した場合に、対応すべき箇所を特定し、システム全体が正常に動作しなくなる危険性を低減する。【解決手段】メモリ４０と、メモリ４０に対してデータの読み書きを行う複数のＤＭＡマスタ１０と、複数の命令およびデータをバッファし、調停しながら伝送するバス２０と、バス２０においてバッファが溢れたことを検知する監視装置５０と、バッファの溢れの影響を受けるバス２０の部分および複数のＤＭＡマスタ１０のうちバッファの溢れの影響を受けるＤＭＡマスタ１０に対するリセット制御を行うバス制御部６０と、を備える。【選択図】図１
2019020766.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリに対してデータの読み書きを行う複数のマスタ回路と、
複数の命令およびデータをバッファし、調停しながら伝送する伝送路と、
前記伝送路において前記バッファが溢れたことを検知する検知手段と、
前記バッファの溢れの影響を受ける前記伝送路の部分および複数の前記マスタ回路のうち当該バッファの溢れの影響を受けるマスタ回路に対するリセット制御を行うリセット制御手段と、
を備えることを特徴とする、電子装置。
【請求項２】
前記検知手段は、前記伝送路における特定箇所において、マスタ回路側からメモリ側へ向かうデータの数とメモリ側からマスタ回路側へ向かうデータの数とが整合しない場合に、バッファの溢れが発生したと判断することを特徴とする、請求項１に記載の電子装置。
【請求項３】
前記検知手段は、少なくとも前記伝送路上に設けられるバス・ブリッジにおいて、バスごとに、マスタ回路側からメモリ側へ向かうデータの数およびメモリ側からマスタ回路側へ向かうデータの数を数え、整合性を判断することを特徴とする、請求項２に記載の電子装置。
【請求項４】
前記リセット制御手段は、前記検知手段によりバッファの溢れが検知された箇所からマスタ回路側に位置する伝送路部分およびマスタ回路をリセットし、他の伝送路部分および他のマスタ回路をリセットしないことを特徴とする、請求項１に記載の電子装置。
【請求項５】
前記リセット制御手段は、リセットしない前記他の伝送路部分および前記他のマスタ回路の動作を停止させた後、リセット対象の前記伝送路部分およびマスタ回路をリセットすることを特徴とする、請求項４に記載の電子装置。
【請求項６】
メモリと、
命令およびデータを伝送するバスと、
複数の前記バスを接続するバス・ブリッジと、
前記バスおよび前記バス・ブリッジを介して前記メモリに接続されるマスタ回路と、
前記バスおよび前記バス・ブリッジのいずれかにおいて命令が消失した場合に、当該命令が消失した場所よりもマスタ回路側に位置するバス、バス・ブリッジおよびマスタ回路に対するリセット制御を行うリセット制御回路と、
を備えることを特徴とする、電子装置。
【請求項７】
前記バスおよび前記バス・ブリッジを含む伝送路は、複数の命令およびデータをバッファし、調停しながら伝送するバスを含むことを特徴とする、請求項６に記載の電子装置。
【請求項８】
前記バスおよび前記バス・ブリッジを含む伝送路は、複数の前記マスタ回路側のバスを統合して、前記メモリ側の単一のバスと接続するバス・ブリッジを含むことを特徴とする、請求項７に記載の電子装置。
【請求項９】
前記リセット制御回路は、リセット対象外のバス、バス・ブリッジおよびマスタ回路の動作を停止させた後、リセット対象のバス、バス・ブリッジおよびマスタ回路をリセットすることを特徴とする、請求項６に記載の電子装置。
【請求項１０】
前記マスタ回路の設定を行う設定手段をさらに備え、
前記リセット制御回路は、リセット対象のバス、バス・ブリッジおよびマスタ回路に対してリセット制御を行った後、動作を停止させたリセット対象外のマスタ回路およびリセット制御を行ったマスタ回路を前記設定手段に再設定させて動作を再開させることを特徴とする、請求項９に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置に関する。
【背景技術】
【０００２】
電子装置では、演算手段であるプロセッサやメモリ等の種々の電子部品がバスを介して接続されている。バス・システムにおいて、負荷の増大や障害の発生等に起因して転送中のデータを消失する場合がある。この場合、バス・システムをリセットして復旧させることが行われる。
【０００３】
ところで、バスの使用効率の向上を図る手段として、スプリット・トランザクション（Split Transaction）がある。これは、あるデバイスのデータ転送処理を開始した際に、その応答待ちの時間、処理を保留にして、他のデバイスのデータ転送処理を行うことを許容する方式である。一つのデバイスがバスを長時間占有しないようにすることで、バスの使用効率を向上させ得る。
【０００４】
特許文献１に記載された従来技術は、スプリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、ＤＭＡＣ（Direct Memory Access Controller）の設定情報から先行してメモリアクセス要求を発行し、対象ＤＭＡＣの正常及び異常終了により先行リードアクセスしていたデータを無効化することにより、転送レートにおける高い保証値を達成するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−５３８９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
バス・システムにおいて、転送中のデータを消失した場合、データ消失の影響を受けるのがバス・システムの一部である場合にも、バス・システム全体をリセットして復旧させるとすると、システム全体でストールが発生してしまうため、動作効率の低下を招く。
【０００７】
特に、スプリット・トランザクションに対応したバス（以下、スプリット・バスと呼ぶ）では、一つのデータ転送処理の完了を待たずに他のデータ転送処理を実行するため、データの転送順を保障しない複雑な制御が行われる。このため、バス・システムに不具合が発生した場合に、対応すべき箇所を特定して部分的なリセット制御を行うことが困難であった。
【０００８】
本発明は、バス・システムに不具合が発生した場合に、対応すべき箇所を特定し、システム全体が正常に動作しなくなる危険性を低減することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１に係る発明は、
メモリと、
前記メモリに対してデータの読み書きを行う複数のマスタ回路と、
複数の命令およびデータをバッファし、調停しながら伝送する伝送路と、
前記伝送路において前記バッファが溢れたことを検知する検知手段と、
前記バッファの溢れの影響を受ける前記伝送路の部分および複数の前記マスタ回路のうち当該バッファの溢れの影響を受けるマスタ回路に対するリセット制御を行うリセット制御手段と、
を備えることを特徴とする、電子装置である。
請求項２に係る発明は、請求項１に記載の電子装置において、
前記検知手段は、前記伝送路における特定箇所において、マスタ回路側からメモリ側へ向かうデータの数とメモリ側からマスタ回路側へ向かうデータの数とが整合しない場合に、バッファの溢れが発生したと判断することを特徴とする。
請求項３に係る発明は、請求項２に記載の電子装置において、
前記検知手段は、少なくとも前記伝送路上に設けられるバス・ブリッジにおいて、バスごとに、マスタ回路側からメモリ側へ向かうデータの数およびメモリ側からマスタ回路側へ向かうデータの数を数え、整合性を判断することを特徴とする。
請求項４に係る発明は、請求項１に記載の電子装置において、
前記リセット制御手段は、前記検知手段によりバッファの溢れが検知された箇所からマスタ回路側に位置する伝送路部分およびマスタ回路をリセットし、他の伝送路部分および他のマスタ回路をリセットしないことを特徴とする。
請求項５に係る発明は、請求項４に記載の電子装置において、
前記リセット制御手段は、リセットしない前記他の伝送路部分および前記他のマスタ回路の動作を停止させた後、リセット対象の前記伝送路部分およびマスタ回路をリセットすることを特徴とする。
請求項６に係る発明は、
メモリと、
命令およびデータを伝送するバスと、
複数の前記バスを接続するバス・ブリッジと、
前記バスおよび前記バス・ブリッジを介して前記メモリに接続されるマスタ回路と、
前記バスおよび前記バス・ブリッジのいずれかにおいて命令が消失した場合に、当該命令が消失した場所よりもマスタ回路側に位置するバス、バス・ブリッジおよびマスタ回路に対するリセット制御を行うリセット制御回路と、
を備えることを特徴とする、電子装置である。
請求項７に係る発明は、請求項６に記載の電子装置において、
前記バスおよび前記バス・ブリッジを含む伝送路は、複数の命令およびデータをバッファし、調停しながら伝送するバスを含むことを特徴とする。
請求項８に係る発明は、請求項７に記載の電子装置において、
前記バスおよび前記バス・ブリッジを含む伝送路は、複数の前記マスタ回路側からのバスを統合して、前記メモリ側の単一のバスと接続するバス・ブリッジを含むことを特徴とする。
請求項９に係る発明は、請求項６に記載の電子装置において、
前記リセット制御回路は、リセット対象外のバス、バス・ブリッジおよびマスタ回路の動作を停止させた後、リセット対象のバス、バス・ブリッジおよびマスタ回路をリセットすることを特徴とする。
請求項１０に係る発明は、請求項９に記載の電子装置において、
前記マスタ回路の設定を行う設定手段をさらに備え、
前記リセット制御回路は、リセット対象のバス、バス・ブリッジおよびマスタ回路に対してリセット制御を行った後、動作を停止させたリセット対象外のマスタ回路およびリセット制御を行ったマスタ回路を前記設定手段に再設定させて動作を再開させることを特徴とする。
【発明の効果】
【００１０】
請求項１の発明によれば、バス・システム全体に対してリセット制御を行う構成と比較して、リセット制御に伴うバス・システム全体の動作効率の低下を低減させることができる。
請求項２の発明によれば、転送されるデータを監視して消失したか否かを調べる構成と比較して、簡単な構成で容易に実装することができる。
請求項３の発明によれば、複数のバスがバス・ブリッジで統合される複雑な構成のバス・システムであっても、バッファ溢れが発生した個所を具体的に特定することができる。
請求項４の発明によれば、バッファ溢れの影響を受ける部分を具体的に特定しない構成と比較して、バス・システム全体の動作効率の低下を低減することができる。
請求項５の発明によれば、リセットしない伝送路部分およびマスタ回路の動作を停止させない構成と比較して、リセット制御中に新たなデータ転送を行って不測の影響が生じてしまうことを回避することができる。
請求項６の発明によれば、バス・システム全体に対してリセット制御を行う構成と比較して、リセット制御に伴うバス・システム全体の動作効率の低下を低減させることができる。
請求項７の発明によれば、命令およびデータをバッファし、調停しながら伝送する複雑な制御が行われるバスに対しても、命令の消失による影響を受ける部分を特定してリセット制御を行うことができるため、バス・システム全体の動作効率の低下を低減することができる。
請求項８の発明によれば、マスタ回路側からメモリ側へ向けてバスが集約されることにより命令の消失が発生しやすいバス・システムにおいても、命令の消失による影響を受ける部分を特定してリセット制御を行うことができるため、バス・システム全体の動作効率の低下を低減することができる。
請求項９の発明によれば、リセット対象外のバス、バス・ブリッジおよびマスタ回路の動作を停止させない構成と比較して、リセット制御中に新たなデータ転送を行って不測の影響が生じてしまうことを回避することができる。
請求項１０の発明によれば、マスタ回路を再設定せずに動作を再開させる構成と比較して、複数のマスタ回路を正常に調停し、データ転送を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態が適用されるバス・システムの構成例を示す図である。
【図２】バス・システムにおけるバッファ・オーバーフローの検知方法を説明する図である。
【図３】図２に示すバス・システムにおいて、要求（ＲＥＱ）および応答（ＡＣＫ）の伝達の様子を示す図表であり、図３（Ａ）は、ＤＭＡＣからバス・ブリッジを介してメモリへ要求（ＲＥＣ）を伝送する際の通常の動作例を示す図であり、図３（Ｂ）は、異常発生時の動作例を示す図である。
【図４】バス制御部によるリセット制御の動作におけるリセット実行の事前動作を示すシーケンス図である。
【図５】バス制御部によるリセット制御の動作におけるリセット実行以降の動作を示すシーケンス図である。
【図６】他の実施形態によるバス・システムの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
＜本実施形態による電子装置の構成例＞
ＳｏＣ（System on a Chip）等のチップ上に構成される集積回路で用いられるオンチップ・バス（On-chip Bus）におけるスプリット・バスとしては、ＡＸＩ（Advanced eXtensible Interface）バスやＯＣＰ（Open Core Protocol）バス等がある。本実施形態では、ＡＸＩバスを用いた例について説明するが、本発明は他のスプリット・バスに対しても適用可能である。
【００１３】
図１は、本実施形態が適用されるバス・システムの構成例を示す図である。図１に示す本実施形態のバス・システム１００は、複数のＤＭＡ（Direct Memory Access）マスタ１０から複数段のバス２０およびバス・ブリッジ３０を経てメモリ４０にアクセスする構成となっている。メモリ４０としては、ＲＡＭ（例えば、ＤＤＲ−ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）等）およびＲＡＭコントローラ（例えば、ＤＤＲ−ＳＤＲＡＭ  ＭＥＭＯＲＹ  ＣＯＮＴＲＯＬＬＥＲ＋ＰＨＹ）等）が用いられる。また、図１において、バス２０には、ＢＶＣＩ（Basic Virtual Component Interface）バス２１と、ＡＸＩバス２２とが含まれている。そして、バス・ブリッジ３０には、ＢＶＣＩバス２１とＡＸＩバス２２とを中継するバス・ブリッジ３１と、ＡＸＩバス２２どうしを中継するバス・ブリッジ３２とが含まれる。また、各ＤＭＡマスタ１０およびバス・ブリッジ３０には、データ転送の状態を監視する監視装置５０が設けられている。各監視装置５０は、バス・システム１００の動作を制御するバス制御部６０に接続されている。なお、図１において、ＤＭＡマスタ１０およびバス・ブリッジ３１、３２には、添え字（ａ、ｂ等）が記されているが、個々の構成要素を区別しない場合は、上記のように添え字を付さずに記載する。なお、特に図示していないが、図１に示すバス・システム１００におけるＤＭＡマスタ１０の設定（ＤＭＡの停止や再開）を行うＣＰＵ（Central Processing Unit）が存在する。
【００１４】
ＤＭＡマスタ１０は、メモリ４０に対してＤＭＡによるデータの読み書きを行うマスタ回路である。図１に示す例では、ＤＭＡマスタ１０は、各種の動作（データ処理や制御）を行うモジュール１１と、ＤＭＡによるメモリ４０へのアクセスを行うためのＤＭＡＣ１２と、監視装置５０とを備える。ＤＭＡマスタ１０に設けられた監視装置５０は、ＤＭＡマスタ１０におけるデータ転送（ＤＭＡ転送）を監視し、ＤＭＡマスタ１０が発行（送信）した要求（ＲＥＱ）および受信した応答（ＡＣＫ）を数える。なお、図１では、一部のＤＭＡマスタ１０が省略されており、２つのＤＭＡマスタ１０ａおよびＤＭＡマスタ１０ｂが記載されている。
【００１５】
バス２０は、ＤＭＡマスタ１０とメモリ４０との間におけるデータ（命令および読み書き対象のデータ）の伝送に用いられる。バス・ブリッジ３０は、バス２０どうしを接続する。上述したように図１に示す例では、バス２０として、ＢＶＣＩバス２１とＡＸＩバス２２とが用いられている。そして、例えばＤＭＡマスタ１０ａは、ＢＶＣＩバス２１、バス・ブリッジ３１ａ、ＡＸＩバス２２、バス・ブリッジ３２ａ、ＡＸＩバス２２、バス・ブリッジ３２ｃおよびＡＸＩバス２２を介してメモリ４０に接続されている。
【００１６】
バス・ブリッジ３０は、異なるバスどうしを接続したり、接続したバスにおけるデータ転送の調停を行ったりする。図１に示す例では、ＢＶＣＩバス２１とＡＸＩバス２２とを接続するバス・ブリッジ３１と、ＡＸＩバス２２どうしを接続するバス・ブリッジ３２とを含む。各バス・ブリッジ３１、３２は、監視装置５０を備える。バス・ブリッジ３１、３２に設けられた監視装置５０は、バス・ブリッジ３１、３２におけるデータ転送を監視し、送受信された要求（ＲＥＱ）および応答（ＡＣＫ）を数える。なお、図１では、バス・ブリッジ３２ｂに対するＤＭＡマスタ１０側の構成の記載を省略している。
【００１７】
ここで、本実施形態のバス・システム１００におけるバス２０およびバス・ブリッジ３０の接続構成は、図１に示す例に限定されない。例えば、図１に示す例において、ＤＭＡマスタ１０ａ、１０ｂからメモリ４０に至る伝送路は、いずれも４本のバス２０と３つのバス・ブリッジ３０とで構成されるが、これとは異なる数のバス２０およびバス・ブリッジ３０を介在させた構成としても良い。また、ＤＭＡマスタ１０に接続されているバス２０は、ＢＶＣＩバス２１となっているが、このバス２０がＡＸＩバス２２である構成としても良い。一般に、複数のＤＭＡマスタ１０によるＤＭＡのバス・システム１００では、アクセス先のメモリ４０に近いほど伝送路が統合されて集約されるため、伝送効率の良いバス２０が用いられる。反対に、ＤＭＡマスタ１０に近い位置では、メモリ４０に近い位置ほど伝送効率の良いバス２０を用いなくても良い。図１に示す例では、そのような場合の一例として、ＤＭＡマスタ１０に接続されたバス２０のみが、ＡＸＩバス２２よりも伝送効率の悪いＢＶＣＩバス２１が用いられた構成となっている。
【００１８】
監視装置５０は、上述したように、ＤＭＡマスタ１０およびバス・ブリッジ３０に設けられ、バス・システム１００におけるデータ転送を監視する。図１において、各バス・ブリッジ３０に１つずつの監視装置５０が示されているが、監視装置５０によるデータ転送の監視は、バス２０ごとに行われる。例えば、図１に示すバス・ブリッジ３２ａの監視装置５０は、ＤＭＡマスタ１０側のバス・ブリッジ３１ａ、３１ｂおよびメモリ４０側のバス・ブリッジ３２ｃと接続するための３本のＡＸＩバス２２の各々について、データ転送を監視する。また、特に図示しないが、多くの場合、バス・システム１００には、バス・システム１００の全体におけるデータ転送を調停するバス・アービタが設けられる。この場合、バス・アービタに対しても監視装置５０が設けられ、バス・アービタにおいて調停されるデータ転送が監視装置５０により監視される。
【００１９】
バス制御部６０は、監視装置５０からデータ転送の監視情報（転送されたデータ（要求および応答）の計数値）を取得し、取得した計数値に基づいて、バス・システム１００のいずれかの場所で要求や応答に係るデータが消失したか否かを判断する。また、バス制御部６０は、データの消失を検知した場合に、この事象に関わるＤＭＡマスタ１０やバス・ブリッジ３０のリセット制御を行うリセット制御手段（回路）の一例である。
【００２０】
バス・システム１００では、複数のＤＭＡマスタ１０から発行される要求等のデータを調停しながらメモリ４０へ伝送するため、バッファを設けてバス・システム１００内で一時的にデータを保持することが行われる。しかし、用意されたバッファの容量を超えるデータが伝送されると、バッファ・オーバーフロー（データ溢れ）を起こし、データを消失することが起こり得る。ＡＸＩバス２２のようなスプリット・バスでは、ある要求に対する応答を待たずに次の要求を伝送したり、読み出し要求と書き込み要求とを同時に伝送したりするために複雑な調停を行っている。そのため、スプリット・トランザクションでないバスよりもバッファ・オーバーフローが発生する危険度が高い。そこで、本実施形態では、監視装置５０により取得した監視情報に基づき、バス制御部６０が、バッファ・オーバーフローの発生を検知すると共に、バッファ・オーバーフローが発生した場所を特定して、バス・システム１００を復旧させるためのリセット制御を行う。したがって、監視装置５０およびバス制御部６０は、伝送路であるバス・システム１００においてバッファが溢れたことを検知する検知手段として機能する。
【００２１】
＜バッファ・オーバーフローの検知＞
バス制御部６０によるバッファ・オーバーフローの検知は、次のようにして行われる。バス制御部６０は、各ＤＭＡマスタ１０および各バス・ブリッジ３０の監視装置５０の監視情報に基づき、バス２０ごとに、そのバス２０を介して伝送された要求と応答の数を比較する。また、バス制御部６０は、そのバス２０を介して伝送されたデータの送信側および受信側のデータ数を比較する。また、バス制御部６０は、各バス・ブリッジ３０において受信データと送信データの数を比較する。そして、バス制御部６０は、これらの比較結果に基づき、バス・システム１００におけるバッファ・オーバーフローが発生した場所を特定する。すなわち、バス制御部６０は、ＤＭＡマスタ１０側からメモリ４０側へ向かうデータの数と、メモリ４０側からＤＭＡマスタ１０側へ向かうデータの数が整合しない場合に、バッファ・オーバーフローが発生したと判断する。
【００２２】
具体例を挙げてさらに説明する。一例として、バス・ブリッジ３１ａとバス・ブリッジ３２ａとの間のＡＸＩバス２２に着目する。このＡＸＩバス２２は、ＤＭＡマスタ１０ａから発行された命令をメモリ４０へ伝送する伝送路の一部である。この例において、バス制御部６０は、バス・ブリッジ３１ａが送信した要求の数と受信した応答の数との差分を求める。そして、要求の数よりも応答の数の方が少なければ、バス制御部６０は、バス・ブリッジ３１ａよりもメモリ４０側でバッファ・オーバーフローが発生し、要求または応答が消失したと判断する。
【００２３】
また、バス制御部６０は、バス・ブリッジ３２ａが受信した要求の数と送信した応答の数との差分を求める。そして、要求の数よりも応答の数の方が少なければ、バス制御部６０は、バス・ブリッジ３２ａよりもメモリ４０側でバッファ・オーバーフローが発生し、要求または応答が消失したと判断する。
【００２４】
また、バス制御部６０は、バス・ブリッジ３１ａが送信した要求の数とバス・ブリッジ３２ａが受信した要求の数との差分、および、バス・ブリッジ３２ａが送信した応答の数とバス・ブリッジ３１ａが受信した応答の数との差分を求める。そして、バス・ブリッジ３１ａが送信した要求の数よりもバス・ブリッジ３２ａが受信した要求の数の方が少なければ、バス制御部６０は、バス・ブリッジ３１ａとバス・ブリッジ３２ａとの間のＡＸＩバス２２を伝送中に要求が消失したと判断する。同様に、バス・ブリッジ３２ａが送信した応答の数よりもバス・ブリッジ３１ａが受信した応答の数の方が少なければ、バス制御部６０は、バス・ブリッジ３１ａとバス・ブリッジ３２ａとの間のＡＸＩバス２２を伝送中に応答が消失したと判断する。
【００２５】
また、バス制御部６０は、各バス・ブリッジ３０においてＤＭＡマスタ１０側から受信した要求の数とメモリ４０側へ送信した要求の数との差分を求める。同様に、メモリ４０側から受信した応答の数とＤＭＡマスタ１０側へ送信した応答の数との差分を求める。そして、受信した要求の数よりも送信した要求の数の方が少なければ、バス制御部６０は、そのバス・ブリッジ３０内でバッファ・オーバーフローが発生し、要求が消失したと判断する。また、受信した応答の数よりも送信した応答の数の方が少なければ、バス制御部６０は、そのバス・ブリッジ３０内でバッファ・オーバーフローが発生し、応答が消失したと判断する。
【００２６】
簡単なモデルを用いて、バッファ・オーバーフローの検知について、さらに説明する。図２は、バス・システム１００におけるバッファ・オーバーフローの検知方法を説明する図である。図２に示す例では、バス・システム１００を、ＤＭＡＣ１２（ＤＭＡマスタ１０）、バス・ブリッジ３０ａ、バス・ブリッジ３０ｂ、メモリ４０およびバス２０で構成された簡単なモデルとしている。
【００２７】
図３は、図２に示すバス・システム１００において、要求（ＲＥＱ）および応答（ＡＣＫ）の伝達の様子を示す図表である。図３（Ａ）は、ＤＭＡＣ１２からバス・ブリッジ３０ａおよび３０ｂを介してメモリ４０へ要求（ＲＥＣ）を伝送する際の通常の動作例を示す図であり、図３（Ｂ）は、異常発生時の動作例を示す図である。図３において、ＤＭＡＣ１２から数えて１段目のバス・ブリッジ３０ａをＢＢ−ａと、２段目のバス・ブリッジ３０ｂをＢＢ−ｂと、適宜略記している。図３に示す例では、ＤＭＡＣ１２、バス・ブリッジ３０ａおよびバス・ブリッジ３０ｂの各構成要素において監視装置５０により監視される、要求（ＲＥＱ）および応答（ＡＣＫ）の信号状態の変化が示されている。図３において、各信号状態は、初期状態を値「０」とし、信号に関する動作（信号の発生または受け取り（図では「受取」と記載））が起こった時点（太枠の位置）から値「１」に変化する。
【００２８】
図３（Ａ）を参照して通常の動作例について説明する。まず、ＤＭＡＣ１２が、要求（ＲＥＱ）を発行し、バス２０を介してバス・ブリッジ３０ａへ送られる。図３（Ａ）では、ＤＭＡＣ１２の信号「ＲＥＱ」において、項目「ＤＭＡＣ  ＲＥＱ発生」から値「１」となっている。発生した要求（ＲＥＱ）は、バス２０を伝送してバス・ブリッジ３０ａのマスタ側端子（ＤＭＡマスタ１０側の端子）に受信される。図３（Ａ）では、バス・ブリッジ３０ａ（ＢＢ−ａ）のマスタ側の信号「ＲＥＱ」において、項目「ＢＢ−ａマスタ側  ＲＥＱ受取」から値「１」となっている。バス・ブリッジ３０ａは、信号を受け取ると、信号の送信元であるＤＭＡＣ１２に応答（ＡＣＫ）を返送する。図３（Ａ）では、バス・ブリッジ３０ａのマスタ側の信号「ＡＣＫ」において、項目「ＢＢ−ａマスタ側  ＡＣＫ発生」から値「１」となっている。また、ＤＭＡＣ１２の信号「ＡＣＫ」において、項目「ＤＭＡＣ  ＡＣＫ受取」から値「１」となっている。
【００２９】
次に、バス・ブリッジ３０ａは、受信した要求（ＲＥＱ）を、メモリ４０側の端子からバス２０を介してバス・ブリッジ３０ｂへ送る。図３（Ａ）では、バス・ブリッジ３０ａ（ＢＢ−ａ）のメモリ側の信号「ＲＥＱ」において、項目「ＢＢ−ａメモリ側  ＲＥＱ発生」から値「１」となっている。バス・ブリッジ３０ａから送られた要求（ＲＥＱ）は、バス２０を伝送してバス・ブリッジ３０ｂのマスタ側端子に受信される。図３（Ａ）では、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のマスタ側の信号「ＲＥＱ」において、項目「ＢＢ−ｂマスタ側  ＲＥＱ受取」から値「１」となっている。バス・ブリッジ３０ｂは、信号を受け取ると、信号の送信元であるバス・ブリッジ３０ａに応答（ＡＣＫ）を返送する。図３（Ａ）では、バス・ブリッジ３０ｂのマスタ側の信号「ＡＣＫ」において、項目「ＢＢ−ｂマスタ側  ＡＣＫ発生」から値「１」となっている。また、バス・ブリッジ３０ａのメモリ側の信号「ＡＣＫ」において、項目「ＢＢ−ａメモリ側  ＡＣＫ受取」から値「１」となっている。
【００３０】
次に、バス・ブリッジ３０ｂは、受信した要求（ＲＥＱ）を、メモリ４０側の端子からバス２０を介してメモリ４０へ送る。図３（Ａ）では、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のメモリ側の信号「ＲＥＱ」において、項目「ＢＢ−ｂメモリ側  ＲＥＱ発生」から値「１」となっている。要求（ＲＥＱ）がメモリ４０に到達すると、メモリ４０からバス・ブリッジ３０ｂへ応答（ＡＣＫ）が返送される。図３（Ａ）では、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のメモリ側の信号「ＡＣＫ」において、項目「ＢＢ−ｂメモリ側  ＡＣＫ受取」で値「１」となっている。以上によって、ＤＭＡＣ１２から発行された要求（ＲＥＱ）がメモリ４０に到達したことがわかる。
【００３１】
次に、図３（Ｂ）を参照して異常発生時の動作例について説明する。図３（Ｂ）に示す動作では、図３（Ａ）に示した動作例と同様にＤＭＡＣ１２から要求（ＲＥＱ）が発行されてメモリ４０へ向けて伝送されるが、バス・ブリッジ３０ｂにおいてバッファ・オーバーフローが発生した場合について説明する。ＤＭＡＣ１２で発行された要求（ＲＥＱ）がバス・ブリッジ３０ｂに到達するまでの動作は図３（Ａ）を参照して上述した動作と同様であるので、説明を省略する。
【００３２】
図３（Ｂ）において、バス・ブリッジ３０ｂは、要求（ＲＥＱ）を受け取ると、信号の送信元であるバス・ブリッジ３０ａに応答（ＡＣＫ）を返送する。図３（Ｂ）では、バス・ブリッジ３０ｂのマスタ側の信号「ＡＣＫ」において、項目「ＢＢ−ｂマスタ側  ＡＣＫ発生」から値「１」となっている。また、バス・ブリッジ３０ａのメモリ側の信号「ＡＣＫ」において、項目「ＢＢ−ａメモリ側  ＡＣＫ受取」から値「１」となっている。ここで、バス・ブリッジ３０ｂにおいてバッファ・オーバーフローが発生したものとする。そのため、バス・ブリッジ３０ｂからメモリ４０への要求（ＲＥＱ）の送信は行われない。図３（Ｂ）では、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のメモリ側の信号「ＲＥＱ」が、項目「ＢＢ−ｂメモリ側  ＲＥＱ発生」（図中破線の太枠）においても値「０」のままとなっている。要求（ＲＥＱ）がメモリ４０へ送信されないため、メモリ４０からバス・ブリッジ３０ｂへの応答（ＡＣＫ）も返送されない。したがって、図３（Ｂ）では、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のメモリ側の信号「ＡＣＫ」が、項目「ＢＢ−ｂメモリ側  ＡＣＫ受取」においても値「０」のままとなっている。
【００３３】
以上のようにして、バス・ブリッジ３０ｂ（ＢＢ−ｂ）のメモリ側の端子以降の伝送路で信号状態が変化しないことから、信号「ＲＥＱ」は、バス・ブリッジ３０ｂの内部バッファで発生したバッファ・オーバーフローにより消失したことがわかる。なお、バス・システム１００においては、各信号を調停しながら伝送するため、信号が伝送路における前段の監視位置で検知されてから後段の監視位置で検知されるまでに若干の時間差がある。そこで、例えば、信号状態の変化が検知された監視位置の後段の監視位置に関して、調停に要する時間を経過した後に信号状態が変化していない場合に、バッファ・オーバーフローが発生したと判断する。
【００３４】
ＡＸＩバス２２では、上述したように、要求（ＲＥＱ）および応答（ＡＣＫ）が別個の伝送路（チャネル）を介して転送される。また、ＡＸＩバス２２では、読み出し要求および書き込み要求に対して、読み出し命令（アドレス）と読み出しデータ、書き込み命令（アドレス）と書き込みデータが、各々、別個の伝送路（チャネル）を介して転送される。そのため、これら各々の転送において、バッファ・オーバーフローが発生する可能性がある。図１に示すように、バス・システム１００全体では、ＤＭＡマスタ１０側からメモリ４０へ向かうに伴って伝送路が集約されていく。そのため、ＤＭＡマスタ１０側からメモリ４０へ向かう転送の流れにおいてバッファ・オーバーフローが発生しやすい。具体的には、読み出し命令、書き込み命令、書き込みデータ等である。特に、データの読み出しにおいては、ＤＭＡマスタ１０から連続的に大量の要求が発行される場合があるため、他の転送と比較して、バッファ・オーバーフローが発生しやすい。データの書き込みにおいては、書き込み対象のデータの準備が全て整わないと書き込み要求を発行できないため、連続的に要求が発行されることは少ない（一つの要求が発行されてから、次の要求が発行されるまでに間隔が空くことが多い）。したがって、データの読み出しよりもバッファ・オーバーフローは発生しにくい。しかしながら、本実施形態の監視装置５０およびバス制御部６０によれば、これらの転送の種類に関わらず、バッファ・オーバーフローの発生を検知し、発生場所を特定することができる。
【００３５】
＜リセット制御＞
次に、バス制御部６０によるリセット制御について説明する。バス制御部６０は、上記のようにして特定したバッファ・オーバーフローの発生個所に基づいて、バス・システム１００を構成する伝送路のうち、このバッファ・オーバーフローの影響を受ける部分を特定する。そして、バス制御部６０は、特定した伝送路部分に対して、動作を復旧させるためのリセット制御を行う。
【００３６】
再び図１を参照する。図１に示す構成例において、バス・ブリッジ３２ａでバッファ・オーバーフローが発生したものとする。この場合、バッファ・オーバーフローによる影響を受ける可能性があるのは、バッファ・オーバーフローが発生したバス・ブリッジ３２ａからＤＭＡマスタ１０側にある伝送路部分である。すなわち、この伝送路部分を用いるＤＭＡマスタ１０（図１に示す例ではＤＭＡマスタ１０ａおよび１０ｂ）は、発行した要求または受け取るべき応答を喪失する可能性がある。したがって、図１に示す構成でバス・ブリッジ３２ａにバッファ・オーバーフローが発生した場合、その影響を受ける伝送路部分は、図１において破線で示した領域Ａの部分となる。そして、この領域Ａに含まれるＤＭＡＣ１２（ＤＭＡマスタ１０）およびバス・ブリッジ３０に対してリセット制御が行われる。
【００３７】
図４および図５は、バス制御部６０によるリセット制御の動作を示すシーケンス図である。図４は、リセット実行の事前動作を示す図であり、図５は、リセット実行以降の動作を示す図である。図４および図５において、ＣＰＵ７０は、各種のデータ処理や制御を行うと共に、バス・システム１００におけるＤＭＡマスタ１０に対する設定（ＤＭＡ転送の停止や再開）を行う設定手段として機能する。非対象ＤＭＡＣ１２は、リセット制御の対象外の（図１に示す例では領域Ａの外に位置する）ＤＭＡＣ１２である。対象ＤＭＡＣ１２は、リセット制御の対象の（図１に示す例では領域Ａ内に位置する）ＤＭＡＣ１２である。対象バス・ブリッジ３０は、リセット制御の対象の（図１に示す例では領域Ａ内に位置する）バス・ブリッジ３０である。
【００３８】
図４に示すように、バス制御部６０は、監視装置５０から取得した監視情報に基づき、バッファ・オーバーフローが発生したことを検知すると（Ｓ１０１）、リセット制御を行う範囲を特定する（Ｓ１０２）。そして、バス制御部６０は、ＣＰＵ７０に対して割り込み処理を行って、バッファ・オーバーフローが発生したことを通知する（Ｓ１０３）。上述したように、リセット制御を行う範囲は、発生したバッファ・オーバーフローの影響を受ける範囲であり、そのバッファ・オーバーフローが発生した場所からＤＭＡＣ１２（ＤＭＡマスタ１０）側の伝送路部分である。バッファ・オーバーフローの発生をＣＰＵ７０に通知するのは、後の動作で、リセット制御後のＤＭＡＣ１２やリセット制御の対象外のＤＭＡＣ１２の動作制御を行うためである。
【００３９】
次に、バス制御部６０は、非対象ＤＭＡＣ１２に対してＤＭＡ転送の停止を指示する（Ｓ１０４）。これは、リセット制御中に、リセット制御の対象外のＤＭＡＣ１２からＤＭＡによるデータ転送が行われてしまうことを回避するためである。バス制御部６０からの指示を受け付けた非対象ＤＭＡＣ１２においてＤＭＡ転送が停止されると、各非対象ＤＭＡＣ１２からバス制御部６０へ、ＤＭＡ転送を停止したことを通知する。
【００４０】
また、バス制御部６０は、対象バス・ブリッジ３０に対し、新規要求の発行および受信をマスクするように指示する（Ｓ１０５）。ここで、発行をマスクするとは、新規の要求を後段のバス・ブリッジ３０に送信しないこと、受信をマスクするとは、新規の要求を受信しても応答を返送しないことである。バス制御部６０からの指示を受け付けた対象バス・ブリッジ３０において新規要求の発行および受信のマスクが完了すると、各対象バス・ブリッジ３０からバス制御部６０へ、マスクが完了したことを通知する。
【００４１】
バス制御部６０は、非対象ＤＭＡＣ１２および対象バス・ブリッジ３０から通知を受け取ると、次に、対象ＤＭＡＣ１２および対象バス・ブリッジ３０をリセットさせ、続いてリセットを解除させる（図５、Ｓ１０６）。そして、バス制御部６０は、対象バス・ブリッジ３０に対し、動作再開を指示し（Ｓ１０７）、さらに、新規要求の発行および受信のマスクを解除するように指示する（Ｓ１０８）。バス制御部６０からの指示を受け付けた対象バス・ブリッジ３０において新規要求の発行および受信のマスクが解除されると、各対象バス・ブリッジ３０からバス制御部６０へ、マスクを解除したことを通知する。
【００４２】
また、バス制御部６０は、ＣＰＵ７０に対して割り込み処理を行って、リセット制御が終了したことを通知すると共に、ＤＭＡＣ１２（対象ＤＭＡＣ１２および非対象ＤＭＡＣ１２）によるＤＭＡ転送の再開を依頼する（Ｓ１０９）。そして、バス制御部６０は、再開されるＤＭＡ転送に備えてバッファ・オーバーフローの検知のための操作（監視装置５０から取得する監視情報の解析）を再開する（Ｓ１１０）。ＣＰＵ７０は、バス制御部６０からの依頼を受け付けて各ＤＭＡＣ１２によるＤＭＡ転送を再開させる。
【００４３】
＜他の実施形態＞
図１に示した構成例では、各ＤＭＡマスタ１０および各バス・ブリッジ３０に設けた監視装置５０がデータ転送の状態を示す監視情報を取得し、バス制御部６０が監視情報を解析してバッファ・オーバーフローの発生を検知し、発生個所を特定した。これに対し、各ＤＭＡマスタ１０および各バス・ブリッジ３０に、バッファ・オーバーフローの発生を検知する検知装置を設ける構成としても良い。
【００４４】
図６は、上記のような他の実施形態によるバス・システムの構成例を示す図である。図６に示す構成例において、ＤＭＡマスタ１０、バス２０、バス・ブリッジ３０およびメモリ４０およびその接続関係は、図１に示した構成例と同様とする。図６に示す実施形態では、各バス・ブリッジ３０に検知装置８０が設けられている。検知装置８０は、自身が設けられたバス・ブリッジ３０のバッファの状態またはデータ転送の状態を監視し、バッファ・オーバーフローが発生した場合にこれを検知する。
【００４５】
また、図６に示す構成例において、各検知装置８０は、リセット制御部９０に接続されている。検知装置８０は、バッファ・オーバーフローの発生を検知すると、リセット制御部９０に通知する。リセット制御部９０は、検知装置８０からの通知を受け取ると、発生したバッファ・オーバーフローの影響を受ける範囲を特定し、特定した範囲内のＤＭＡマスタ１０およびバス・ブリッジ３０に対するリセット制御を行う。具体的には、バッファ・オーバーフローの検知の通知を送信した検知装置８０が設けられたバス・ブリッジ３０からＤＭＡＣ１２（ＤＭＡマスタ１０）側の伝送路部分のＤＭＡマスタ１０およびバス・ブリッジ３０が、リセット制御の対象となる。
【００４６】
以上、本発明の実施形態について説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の技術思想の範囲から逸脱しない様々な変更や構成の代替は、本発明に含まれる。
【符号の説明】
【００４７】
１０…ＤＭＡマスタ、１１…モジュール、１２…ＤＭＡＣ（Direct Memory Access Controller）、２０…バス、２１…ＢＶＣＩ（Basic Virtual Component Interface）バス、２２…ＡＸＩ（Advanced eXtensible Interface）バス、３０、３１、３２…バス・ブリッジ、４０…メモリ、５０…監視装置、６０…バス制御部、７０…ＣＰＵ（Central Processing Unit）、８０…検知装置、９０…リセット制御部、１００…バス・システム
【図１】
2019020766.tif 000003
【図２】
2019020766.tif 000004
【図３】
2019020766.tif 000005
【図４】
2019020766.tif 000006
【図５】
2019020766.tif 000007
【図６】
2019020766.tif 000008