(57)【要約】【課題】投機的なアクセスに対するバスマスタによるエラー通知と、非投機的なアクセスに対するバススレーブによるエラー通知を、バスマスタの回路規模を抑制しつつ実現する。【解決手段】バスリクエストは、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有する。バススレーブ２００は、エラーの通知をバススレーブが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラーの通知を実施する。バスマスタ１００は、投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報をバススレーブ２００から受信した場合は、前記エラー情報に基づいてエラーの通知を実施する。【選択図】図８
2019008437.tif 000002
【特許請求の範囲】
【請求項１】
バススレーブと、
前記バススレーブにバスリクエストを通知して、前記バススレーブにアクセスするバスマスタと
を有し、
前記バスリクエストは、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有し、
前記バススレーブは、エラーの通知をバススレーブが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラーの通知を実施し、
前記バススレーブは、エラーの通知をバスマスタが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラー情報を前記バスマスタに送信し、
前記バスマスタは、投機的なロードアクセスを行う場合、エラーの通知をバスマスタが行うことを示す前記モード情報を前記バスリクエストに含め、
前記バスマスタは、前記投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報を前記バススレーブから受信した場合は、エラーの通知を実施する
データアクセス装置。
【請求項２】
前記バスマスタは、アクセス情報を記憶するアクセス情報記憶部を有し、
前記バスマスタは、前記投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報を前記バススレーブから受信した場合は、前記エラー情報及び前記アクセス情報記憶部に記憶された情報を通知する
請求項１に記載のデータアクセス装置。
【請求項３】
前記バスマスタは、
前記バススレーブに対する前記投機的なロードアクセスに対しては、少なくとも、前記バススレーブから該アクセスに対する応答を受信するまでの間、該アクセスについてのアクセス情報を前記アクセス情報記憶部に保持し、
前記バススレーブに対する他のアクセスに対しては、前記バススレーブへの前記バスリクエストの通知が行われると、該アクセスについてのアクセス情報を前記アクセス情報記憶部から削除する
請求項２に記載のデータアクセス装置。
【請求項４】
アクセスのエラーの通知をバスマスタが行うよう固定するか否かを示すモード固定情報を記憶するモード固定情報記憶部をさらに有し、
前記モード固定情報記憶部に、アクセスのエラーの通知をバスマスタが行うよう固定することを示す前記モード固定情報が記憶されている場合、前記バスマスタは、全てのアクセスに対しエラーの通知をバスマスタが行うことを示す前記モード情報を前記バスリクエストに含め、
前記モード固定情報記憶部に、アクセスのエラーの通知をバスマスタが行うよう固定することを示す前記モード固定情報が記憶されていない場合、前記バスマスタは、前記投機的なロードアクセスを行うとき、エラーの通知をバスマスタが行うことを示す前記モード情報を前記バスリクエストに含め、前記投機的なロードアクセス以外のアクセスを行うとき、エラーの通知をバススレーブが行うことを示す前記モード情報を前記バスリクエストに含める
請求項１に記載のデータアクセス装置。
【請求項５】
前記モード固定情報記憶部に記憶される情報は書き換え可能である
請求項４に記載のデータアクセス装置。
【請求項６】
通知された情報に基づいて所定の処理を実行するエラー処理部をさらに有し、
前記バスマスタ及び前記バススレーブは、前記エラー処理部へエラーの通知を行う
請求項１に記載のデータアクセス装置。
【請求項７】
バススレーブと、
前記バススレーブにバスリクエストを通知して、前記バススレーブにアクセスする第１のバスマスタ及び第２のバスマスタと、
前記バススレーブ、前記第１のバスマスタ、及び、前記第２のバスマスタが接続された共通のバスと
を有し、
前記第１のバスマスタは前記バススレーブに対して投機的なアクセスを行うことがあり、
前記第２のバスマスタは前記バススレーブに対して投機的なアクセスを行わず、
前記バスリクエストは、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有し、
前記バススレーブは、エラーの通知をバススレーブが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラーの通知を実施し、
前記バススレーブは、エラーの通知をバスマスタが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラー情報を前記第１のバスマスタ又は前記第２のバスマスタに送信し、
前記第１のバスマスタは、投機的なロードアクセスを行う場合、エラーの通知をバスマスタが行うことを示す前記モード情報を前記バスリクエストに含め、
前記第１のバスマスタは、前記投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報を前記バススレーブから受信した場合は、エラーの通知を実施し、
前記第２のバスマスタは、前記バススレーブに対しアクセスを行う場合、エラーの通知をバススレーブが行うことを示す前記モード情報を前記バスリクエストに含める
データアクセス装置。
【請求項８】
バスマスタが、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有するバスリクエストを通知して、バススレーブにアクセスし、
前記バススレーブは、エラーの通知をバススレーブが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラーに対し所定の処理を実行するエラー処理部にエラーを通知し、
前記バススレーブは、エラーの通知をバスマスタが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラー情報を前記バスマスタに送信し、
前記バスマスタは、投機的なロードアクセスを行う場合、エラーの通知をバスマスタが行うことを示す前記モード情報を前記バスリクエストに含め、
前記バスマスタは、前記投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報を前記バススレーブから受信した場合は、前記エラー処理部にエラーを通知する
アクセスエラーの通知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータアクセス装置及びアクセスエラーの通知方法に関する。
【背景技術】
【０００２】
アクセス性能を向上するために、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のバススレーブに対し投機ロードをするアクセス手法がとられることがある。バススレーブに対するアクセスにおいて、バススレーブで検出されたエラーついては、バススレーブによって直ちにエラー処理部等に通知可能である。しかし、当該アクセスが投機的なアクセスである場合には、エラー処理部等へのエラーの通知を控える必要がある場合がある。これに関し、特許文献１では、投機的な命令に伴う処理で発生したエラーについては、当該命令が実際に必要とされるか判断されるまで、レポートすべきではないと述べている。
【０００３】
例えば、投機ロードについては、予測の失敗による分岐のキャンセルなどにより、取得されたリードデータが無効となることがある。このような場合は、ロードアクセスの際にバススレーブで検知されたエラーの通知を抑止する必要がある。このための構成として、投機ロードによるエラーが発生した場合には、バススレーブが直ちにエラー処理部等へエラーを通知するのではなく、バススレーブからバスマスタへとエラーの発生を通知した上で、投機ロードが必要であったか否かが確定した時点で、バスマスタがエラー通知するという構成が考えられる。
【０００４】
つまり、投機的でないアクセスにおけるエラーについては、バススレーブがエラーの通知を行うことが求められ、投機的なアクセスにおけるエラーについては、バスマスタがエラーの通知を行うことが求められる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第５，８６４，６９２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
バスマスタからのアクセスが投機的なアクセスであるか、非投機的なアクセスであるかをバススレーブは判別できないため、エラーの通知をバススレーブで行うか、バスマスタで行うかを一律に決定する必要がある。したがって、バスマスタによる投機的なアクセスが行われる可能性のあるバススレーブと、バスマスタによる非投機的なアクセスのみが行われるバススレーブとの両方が、バスマスタのアクセス対象である場合、２つの異なるバス構成を設けることが求められる。すなわち、第１のバス構成は、投機的なアクセスがあることが前提となったバス構成であり、投機的なアクセスのアクセス先となるバススレーブが接続されるバスを有する。第２のバス構成は、非投機的なアクセスのみが前提となったバス構成であり、非投機的なアクセスのみを受付けるバススレーブが接続されるバスである。このため、第１のバス構成用のバスマスタ機能を実現する回路と、第２のバス構成用のバスマスタ機能を実現する回路とをバスマスタが備える必要があり、バスマスタの回路規模の増大を招く。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、バスリクエストは、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有する。バススレーブは、エラーの通知をバススレーブが行うことを示す前記モード情報が前記バスリクエストに含まれている場合、該バスリクエストにおけるアクセスのエラーが発生したときは、エラーの通知を実施する。バスマスタは、投機的なロードアクセスの命令の実行が確定し、かつ、該ロードアクセスについての前記エラー情報を前記バススレーブから受信した場合は、前記エラー情報に基づいてエラーの通知を実施する。
【発明の効果】
【０００９】
前記一実施の形態によれば、投機的なアクセスに対するバスマスタによるエラー通知と、非投機的なアクセスに対するバススレーブによるエラー通知を、バスマスタの回路規模を抑制しつつ実現することができる。
【図面の簡単な説明】
【００１０】
【図１】バススレーブによるエラー通知について示す模式図である。
【図２】バスマスタによるエラー通知について示す模式図である。
【図３】関連技術にかかるデータアクセス装置について示すブロック図である。
【図４】実施の形態１にかかるデータアクセス装置の構成の一例を示すブロック図である。
【図５】実施の形態１にかかるデータアクセス装置においてバススレーブによるエラー通知が行われる様子を示す模式図である。
【図６】実施の形態１にかかるデータアクセス装置においてバスマスタによるエラー通知が行われる様子を示す模式図である。
【図７】実施の形態１にかかるデータアクセス装置におけるエラー通知動作の一例を示すフローチャートである。
【図８】実施の形態にかかるデータアクセス装置の構成の一例を示すブロック図である。
【図９】実施の形態３にかかるデータアクセス装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
＜実施の形態に至る検討＞
実施の形態について説明する前に、まず、関連技術について説明する。図１は、バススレーブによるエラー通知について示す模式図である。また、図２は、バスマスタによるエラー通知について示す模式図である。以下、図１及び図２を参照しつつ、エラー通知について説明する。
【００１３】
まず、図１を参照して、バススレーブ９２Ａによるエラー通知について説明する。バスマスタ９１Ａによるアクセスに対し、バススレーブ９２Ａが何らかのエラーを検出した場合、バススレーブ９２Ａは、バスマスタ９１Ａにエラー発生を示すバスレスポンスを送信するとともに、エラー処理部９３へのエラー通知を実施する。なお、エラー通知は、エラーの発生要因などを示すエラー内容と、アクセス先のアドレスと、アクセスタイプとを含む。アクセスタイプとは、アクセスの種別（例えば、ロードアクセス、ストアアクセス、排他制御アクセスなど）を示す情報である。このようなバススレーブによるエラー通知は、バスマスタ９１Ａによるアクセスが、非投機的なアクセス（例えばロードアクセス命令確定後のアクセス又はストアアクセス命令確定後のアクセス）である場合に行われるべきである。
【００１４】
次に、図２を参照して、バスマスタ９１Ｂによるエラー通知について説明する。バスマスタ９１Ｂは、アクセスを行う際、バスマスタ９１Ｂに設けられたアクセス情報記憶部９１０にアクセス先のアドレス及びアクセスタイプを保持する。そして、バスマスタ９１Ｂによるアクセスに対し、バススレーブ９２Ｂが何らかのエラーを検出した場合、バススレーブ９２Ｂは、バスマスタ９１Ｂにエラー発生を示すバスレスポンスを送信する。なお、このバスレスポンスは、エラー内容を含む。このとき、バススレーブ９２Ｂは、エラー処理部９３へのエラー通知を行わない。バススレーブ９２Ｂからエラー発生を示すバスレスポンスを受信したバスマスタ９１Ｂは、バススレーブ９２Ｂへアクセスする命令の実行が確定した時点で、アクセス情報記憶部９１０に記憶された情報を読み出してエラー処理部９３へエラー通知を行う。つまり、バスマスタによるエラー通知では、命令の実行が確定するのを待ってから、バスマスタ９１Ｂによりエラー処理部９３へのエラー通知が行われる。このようなバスマスタによるエラー通知は、バスマスタ９１Ｂによるアクセスが、投機的なロードアクセスである場合に行われるべきである。
【００１５】
図３は、関連技術にかかるデータアクセス装置９について示すブロック図である。図３に示した構成では、ＣＰＵ９４によるバススレーブ９２Ａへのアクセスとバススレーブ９２Ｂへのアクセスを実現するために、データアクセス装置９は、バス９５Ａとバス９５Ｂとを有する。また、データアクセス装置９のＣＰＵ９４は、バス９５Ａを介したアクセスを制御するバスマスタ９１Ａと、バス９５Ｂを介したアクセスを制御するバスマスタ９１Ｂとを有する。また、データアクセス装置９は、バス９５Ａに接続されたバススレーブ９２Ａと、バス９５Ｂに接続されたバススレーブ９２Ｂを有する。すなわち、データアクセス装置９は、バスマスタ９１Ｂとバス９５Ｂとバススレーブ９２Ｂによる第１のバス構成と、バスマスタ９１Ａとバス９５Ａとバススレーブ９２Ａによる第２のバス構成を備える。
【００１６】
ここで、第１のバス構成では、投機的なアクセスであるか非投機的なアクセスであるかにかかわらず、図２を参照して説明したようにエラー処理部９３へのエラー通知は、バスマスタ９１Ｂにより行われる。また、第２のバス構成では、エラー処理部９３へのエラー通知は、図１を参照して説明したようにバススレーブ９２Ａにより行われる。ここで、第２のバス構成では、非投機的なアクセスが行われ、投機的なアクセスは行われない。なお、データアクセス装置９は、図３に示すように、バス９５Ａと接続するＤＭＡＣ（Direct Memory Access controller）９６のような、バスマスタによるエラー通知に非対応なバスマスタを有することもある。つまり、第１のバス構成は、投機的なアクセスがあることが前提となったバス構成であり、第２のバス構成は、非投機的なアクセスのみが前提となったバス構成である。
【００１７】
このように、関連技術にかかるデータアクセス装置９では、第１のバス構成用のバスマスタ９１Ｂと第２のバス構成用のバスマスタ９１ＡをＣＰＵ９４が備える必要がある。このため、バスマスタの回路規模の増大を招く。また、第１のバス構成用のバス９５Ｂと第２のバス構成用のバス９５Ａとを設ける必要がある。このため、データアクセス装置９の回路規模の増大を招く。
【００１８】
＜実施の形態１＞
次に、実施の形態１について説明する。図４は、実施の形態１にかかるデータアクセス装置１の構成の一例を示すブロック図である。また、図５は、実施の形態１にかかるデータアクセス装置１においてバススレーブ２００によるエラー通知が行われる様子を示す模式図である。さらに、図６は、実施の形態１にかかるデータアクセス装置１においてバスマスタ１００によるエラー通知が行われる様子を示す模式図である。
【００１９】
図４に示すように、データアクセス装置１は、バスマスタ１００を備えたＣＰＵ１０と、バススレーブ２００と、ＤＭＡＣ３００と、バス４００と、エラー処理部５００とを有する。以下で説明するこれらの構成要素は、ハードウェア回路により実現されるが、構成の一部又は全てがソフトウェアにより実現されてもよい。
【００２０】
本実施の形態では、１つのバス４００を用いて、ＣＰＵ１０又はＤＭＡＣ３００からバススレーブ２００へのアクセスが行われる。つまり、バス４００は、バススレーブ２００、バスマスタ１００、及びＤＭＡＣ３００が接続された共通のバスである。データアクセス装置１においては、ＣＰＵ１０のバスマスタ１００及びＤＭＡＣ３００が、バススレーブ２００にアクセスする。なお、このように、図４に示した構成では、データアクセス装置１では、バススレーブ２００はバスマスタ１００及びＤＭＡＣ３００によりアクセスされるが、バスマスタ１００のみからアクセスされてもよい。すなわち、データアクセス装置１は、ＤＭＡＣ３００を備えていなくてもよい。なお、図４に示した複数のバススレーブ２００のうち、例えば、一部は、投機アクセスの対象となるバススレーブであり、他は、投機アクセスの対象とならないバススレーブであるが、全てが投機アクセスの対象となるバススレーブであってもよい。
【００２１】
ＣＰＵ１０は、メモリに格納されたプログラムを実行する。ＣＰＵ１０は、プログラムの実行の際、分岐予測に基づき命令を投機的に実行する。すなわち、バスマスタ１００からバススレーブ２００へのアクセスは投機的なアクセスを含む。なお、ＣＰＵ１０は、投機的なアクセスが行われても問題がないバススレーブ２００（すなわち、投機的なアクセスが実施されることにより意図しない動作が発生しないバススレーブ２００）に対して、投機的なアクセスを行う。言い換えると、ＣＰＵ１０は、投機的なアクセスが実施されることにより意図しない動作が発生する可能性があるバススレーブ２００に対しては、非投機的なアクセスのみを行う。つまり、ＣＰＵ１０は、データアクセス装置１が備えるバススレーブ２００のうち、予め定められたバススレーブ２００のみを、投機的なアクセスの対象とする。
【００２２】
バスマスタ１００（第１のバスマスタ）は、バススレーブ２００にバスリクエストを通知して、バススレーブ２００にアクセスする。ここで、バスリクエストは、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有する。したがって、バスリクエストは、アクセス情報（アドレス及びアクセスタイプ）と、モード情報とを含む。また、バスマスタ１００は、バッファメモリであるアクセス情報記憶部１１０を有しており、バススレーブ２００にバスリクエストを通知する際に、アクセス情報記憶部１１０にアクセス情報を格納する。ここで、アクセス情報は、アクセス先のアドレス及びアクセスタイプを含む。
【００２３】
バスマスタ１００は、バススレーブ２００に対し非投機的なアクセスを行う場合、エラーの通知をバススレーブが行うことを示すモード情報をバスリクエストに含めてバスリクエストをバススレーブ２００に通知する。すなわち、この場合、図５に示すようにバスマスタ１００は、モードとして“スレーブ”を指定したバスリクエストを発行する。なお、非投機的なアクセスには、例えば、ロードアクセス（ロード命令によるアクセス）、ストアアクセス（ストア命令によるアクセス）、排他制御アクセス（ＬＤＬ（Ｌｏａｄ−Ｌｉｎｋｅｄ）命令、ＳＴＣ（Ｓｔｏｒｅ−Ｃｏｎｄｉｔｉｏｎａｌ）命令などの排他制御機能用命令によるアクセス）などが含まれる。
【００２４】
上述の通り、ＣＰＵ１０の分岐予測に伴い、バスマスタ１００は、バススレーブ２００に対して投機的なアクセスを行うことがある。バスマスタ１００は、メモリなどのバススレーブ２００に対し投機的なロードアクセスを行う場合、エラーの通知をバスマスタが行うことを示すモード情報をバスリクエストに含めてバスリクエストをバススレーブ２００に通知する。すなわち、この場合、図６に示すようにバスマスタ１００は、モードとして“マスタ”を指定したバスリクエストを発行する。そして、バスマスタ１００は、投機的なロードアクセスの命令の実行が確定し、かつ、このロードアクセスについてのエラー情報をバススレーブ２００から受信した場合は、エラー処理部５００へのエラーの通知を実施する。なお、本実施の形態では、バスマスタ１００は、エラー処理部５００へのエラーの通知の際、バススレーブ２００から受信したエラー情報とアクセス情報記憶部１１０に記憶されたアクセス情報を、エラー処理部５００に通知する。本実施の形態では、具体的には、バスマスタ１００は、エラー処理部５００に設けられたエラー情報保持レジスタ５１０に、エラー内容とアクセス情報を格納する。
【００２５】
ＤＭＡＣ３００（第２のバスマスタ）は、バススレーブ２００に対して非投機的なアクセスのみを行うバスマスタの一例である。ＤＭＡＣ３００は、バススレーブ２００に上述のバスリクエストを通知して、バススレーブ２００にアクセスする。ＤＭＡＣ３００は、投機的なアクセスを行わないため、バススレーブ２００にアクセスする際、エラーの通知をバススレーブが行うことを示すモード情報をバスリクエストに含めてバスリクエストをバススレーブ２００に通知する。すなわち、図５に示した例と同様、ＤＭＡＣ３００は、モードとして“スレーブ”を指定したバスリクエストを発行する。
【００２６】
バススレーブ２００は、バスマスタ１００からのアクセス対象となる任意の装置であり、例えば、メモリであってもよいし、周辺Ｉ／Ｏ（Input/Output）装置であってもよい。バススレーブ２００は、バスマスタ１００又はＤＭＡＣ３００から送信されたバスリクエストで指定されたアクセスを実施する。例えば、バススレーブ２００は、ロードアクセスに対し、指定されたアドレスのデータを読み出し、読み出したデータを要求元にバスレスポンスとして返信する。また、バススレーブ２００は、ストアアクセスに対し、指定されたアドレスにデータを格納する。
【００２７】
バススレーブ２００は、要求されたアクセスが正常に完了できたか否かをバスレスポンスにより要求元に通知する。要求されたアクセスが正常に完了できなかった場合、すなわち、バススレーブ２００が要求されたアクセスについてのエラーを検知した場合、バススレーブ２００は、エラー情報をバスレスポンスとして返信する。
【００２８】
バススレーブ２００は、エラーの通知をバススレーブが行うことを示すモード情報がバスリクエストに含まれている場合、すなわち、モードとして“スレーブ”を指定したバスリクエストを受信した場合、図５に示すように、エラー情報として、エラーの発生を示す情報（スレーブエラー）を要求元に通知する。なお、図５では、バスマスタ１００とバススレーブ２００との間における送受信が示されているが、バススレーブ２００は、ＤＭＡＣ３００からバスリクエストについても、エラーが発生した場合、エラー情報として、エラーの発生を示す情報（スレーブエラー）をＤＭＡＣ３００に通知する。なお、本実施の形態では、バススレーブ２００は、“スレーブ”を指定したバスリクエストを受信した場合、エラーが発生したときは、エラー情報を要求元に送信するが、このときのエラー情報の送信は省略されてもよい。また、エラー内容を含むエラー情報を要求元に送信してもよい。
【００２９】
また、バススレーブ２００は、エラーの通知をバススレーブが行うことを示すモード情報がバスリクエストに含まれている場合、このバスリクエストにおけるアクセスのエラーが発生したときは、エラー処理部５００へのエラーの通知を実施する。本実施の形態では、具体的には、バススレーブ２００は、エラーの通知をバススレーブが行うことを示すモード情報が含まれたバスリクエストに対しては、エラーを検知した時点で、エラー処理部５００に設けられたエラー情報保持レジスタ５１０に、エラー内容とアクセス情報を格納する。
【００３０】
これに対し、バススレーブ２００は、エラーの通知をバスマスタが行うことを示すモード情報がバスリクエストに含まれている場合、すなわち、モードとして“マスタ”を指定したバスリクエストを受信した場合、図６に示すように、エラー情報として、エラーの発生を示す情報（スレーブエラー）及び検知されたエラー内容を要求元に通知する。
【００３１】
言い換えると、バススレーブ２００は、エラーの通知をバスマスタが行うことを示すモード情報がバスリクエストに含まれている場合、このバスリクエストにおけるアクセスのエラーが発生したときは、エラー情報を要求元のバスマスタ１００に送信する。これにより、命令の実行が確定した場合に、バスマスタ１００によるエラー通知が行われる。言い換えると、ロードデータが無効になることが確定した場合（つまり、分岐の予測に失敗したことが判明した場合）には、エラー通知は行われない。
【００３２】
エラー処理部５００は、バスマスタ１００又はバススレーブ２００から通知された情報に基づいて所定の処理を実行するモジュールである。例えば、エラー処理部５００は、所定の処理として、データアクセス装置１のいずれかの構成要素（例えばＣＰＵ１０）のリセット処理を行ってもよいし、エラー内容の表示出力処理を行ってもよい。本実施の形態では、エラー処理部５００は、エラー情報保持レジスタ５１０を有しており、エラー情報保持レジスタ５１０に格納されたエラー内容とアクセス情報に基づいて、所定の処理を実行する。このように、エラー処理部５００への通知が行われるため、エラーに応じた適切な処理の実施が可能となる。
【００３３】
次に、データアクセス装置１におけるエラー通知動作について説明する。図７は、実施の形態１にかかるデータアクセス装置１におけるエラー通知動作の一例を示すフローチャートである。以下、図７のフローチャートに沿って、エラー通知動作の流れを説明する。
【００３４】
ステップ１０１（Ｓ１０１）において、バスマスタ１００又はＤＭＡＣ３００がバスリクエストを発行する。
次に、ステップ１０２（Ｓ１０２）において、ステップ１０１で発行されたバスリクエストのアクセス対象であるバススレーブ２００は、受信したバスリクエストにしたがってアクセスを実施する。また、バススレーブ２００は、当該アクセスに伴いエラーが発生したか否かを監視する。バススレーブ２００がエラーを検知しなかった場合、処理はステップ１０３へ移行する。これに対し、バススレーブ２００がエラーを検知した場合、処理はステップ１０４へ移行する。
【００３５】
ステップ１０３（Ｓ１０３）において、バススレーブ２００は、ステップ１０１でバスリクエストを発行したバスマスタ１００又はＤＭＡＣ３００に対して、要求されたアクセスが正常に実施されたことを示すバスレスポンスを送信する。
【００３６】
これに対し、ステップ１０４（Ｓ１０４）では、バススレーブ２００は、受信したバスリクエストに含まれるモード情報を確認する。モード情報がエラーの通知をバススレーブが行うことを示す場合、処理はステップ１０５へ移行する。これに対し、モード情報がエラーの通知をバスマスタが行うことを示す場合、処理はステップ１０６へ移行する。
【００３７】
ステップ１０５（Ｓ１０５）において、バススレーブ２００は、ステップ１０１でバスリクエストを発行したバスマスタ１００又はＤＭＡＣ３００に対してエラー情報を含むバスレスポンスを送信するとともに、エラー処理部５００へのエラーの通知を実施する。
【００３８】
これに対し、ステップ１０６（Ｓ１０６）では、バススレーブ２００は、ステップ１０１でバスリクエストを発行したバスマスタ１００に対してエラー情報を含むバスレスポンスを送信する。そして、バスリクエストを発行したバスマスタ１００は、これを受信する。
【００３９】
ステップ１０６の後、ステップ１０７（Ｓ１０７）において、バスマスタ１００は、ステップ１０１で発行したバスリクエストに関する命令の実行が確定したか否かを判定する。命令の実行が確定した場合、すなわち、投機に成功した場合、処理はステップ１０８へ移行する。これに対し、命令の実行が確定しなかった場合、すなわち、投機に失敗した場合、エラー処理部５００へのエラー通知は実施されない。
ステップ１０８（Ｓ１０８）において、バスマスタ１００がエラー処理部５００へのエラーの通知を実施する。なお、図７に示した例では、バスレスポンスの受信後に、命令の実行が確定するようなフローチャートが示されているが、バスレスポンスの受信後に、投機の成否が決定することもある。いずれにしろ、バスマスタ１００によるエラーの通知は、バススレーブ２００からのエラー情報を受信し、かつ、命令の実行が確定した時点で実施される。
【００４０】
上述の通り、データアクセス装置１において、バスリクエストは、モード情報を有する。そして、このモード情報に応じて、バスマスタ１００によるエラー通知又はバススレーブ２００によるエラー通知が切り替えられる。したがって、データアクセス装置１によれば、上記した関連技術のように第１のバス構成と第２のバス構成とに分けることなく、適切なエラー通知を実現することができる。すなわち、投機的なアクセスに対するバスマスタによるエラー通知と、非投機的なアクセスに対するバススレーブによるエラー通知を、バスマスタの回路規模を抑制しつつ実現することができる。また、１つのバス４００を共有することができるため、上記関連技術のように第１のバス構成用のバス９５Ｂと第２のバス構成用のバス９５Ａとを設ける必要がない。したがって、この点においても、回路規模を抑制できる。
【００４１】
また、本実施の形態では、上述の通り、バスマスタ１００は、アクセス情報を記憶するアクセス情報記憶部１１０を有しており、エラー通知の際には、アクセス情報記憶部１１０に記憶されたアクセス情報をエラー処理部５００に通知する。したがって、投機アクセスについてのエラー通知においても、アドレスやアクセスタイプといったアクセス情報をエラー処理部５００に通知することができる。
【００４２】
なお、実施の形態にかかるデータアクセス装置は、図８に示すように、少なくともバスマスタ１００とバススレーブ２００を有するように構成されてもよい。図８に示す構成において、バスマスタ１００は、アクセスのエラーの通知をバススレーブが行うか又はバスマスタが行うかを選択するモード情報を有するバスリクエストをバススレーブ２００に通知して、バススレーブ２００にアクセスする。バススレーブ２００は、エラーの通知をバススレーブが行うことを示すモード情報がバスリクエストに含まれている場合、このバスリクエストにおけるアクセスのエラーが発生したときは、任意の所定の通知先にエラーの通知を実施する。また、バススレーブ２００は、エラーの通知をバスマスタが行うことを示すモード情報がバスリクエストに含まれている場合、このバスリクエストにおけるアクセスのエラーが発生したときは、エラー情報をバスマスタ１００に送信する。バスマスタ１００は、投機的なロードアクセスを行う場合、エラーの通知をバスマスタが行うことを示すモード情報をバスリクエストに含める。そして、バスマスタ１００は、投機的なロードアクセスの命令の実行が確定し（すなわち、投機に成功し）、かつ、このロードアクセスについてのエラー情報をバススレーブ２００から受信した場合は、任意の所定の通知先にエラーの通知を実施する。このような構成によれば、モード情報に応じて、バスマスタ１００によるエラー通知又はバススレーブ２００によるエラー通知が切り替えられるため、適切なエラー通知を、回路規模を抑制しつつ実現することができる。
【００４３】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態２は、アクセス情報記憶部１１０におけるアクセス情報の保持期間をより短くしている点で、実施の形態１と異なる。
【００４４】
上述したとおり、投機的なアクセスが行われても問題がないバススレーブ２００（例えば、投機的なアクセスが行われても異常が発生しないことが予め把握されているメモリ）に対するＣＰＵ１０のロードアクセスについては、投機的なアクセスが行われる。また、そのようなバススレーブ２００に対するＣＰＵ１０のストアアクセスは、非投機的なアクセスである。すなわち、ストア命令の実行が確定した後に、ストアアクセスが行われる。これに対し、投機的なアクセスが実施されることにより意図しない動作が発生する可能性があるバススレーブ２００（例えば、周辺Ｉ／Ｏ装置）に対しては、全てのアクセスについて非投機的なアクセスが行われる。
【００４５】
投機的なアクセスが行われる場合、上述の通り、アクセス情報を含むエラー通知をバスマスタ１００により実施するために、バスリクエストの発行後もアクセス情報記憶部１１０にアクセス情報を保持し続ける必要がある。これに対し、非投機的なアクセスが行われる場合には、バスリクエストが発行された後は、アクセス情報をアクセス情報記憶部１１０に保持し続ける必要はない。
【００４６】
したがって、本実施の形態では、バスマスタ１００は、バススレーブ２００に対する投機的なロードアクセスに対しては、少なくとも、バススレーブ２００からこのアクセスに対する応答（バスレスポンス）を受信するまでの間、このアクセスについてのアクセス情報をアクセス情報記憶部１１０に保持する。詳細には、投機が成功する場合には次のような動作となる。バスマスタ１００は、バススレーブ２００に対する投機的なロードアクセスについてのバスレスポンスを受信し、かつ、ロードアクセスの命令実行が確定するまで、このアクセスについてのアクセス情報をアクセス情報記憶部１１０に保持し、その後、削除する。ただし、エラー通知を行う必要があるときには、バスマスタ１００は、エラー通知を実施後に、削除する。また、投機が失敗する場合には次のような動作となる。バスマスタ１００は、バススレーブ２００に対する投機的なロードアクセスについてのバスレスポンスを受信し、かつ、ロードアクセスの命令実行のキャンセルが確定するまで、このアクセスについてのアクセス情報をアクセス情報記憶部１１０に保持し、その後、削除する。
【００４７】
また、バスマスタ１００は、バススレーブ２００に対する他のアクセス（すなわち、非投機的なアクセス）に対しては、バススレーブ２００へのバスリクエストの通知が行われると、このアクセスについてのアクセス情報をアクセス情報記憶部から削除する。
【００４８】
以上、実施の形態２について説明した。本実施の形態によれば、非投機的なアクセスが行われる場合には、早期にアクセス情報記憶部１１０に記憶されたアクセス情報が削除される。すなわち、アクセス情報記憶部１１０の記憶領域を早期に開放することができる。したがって、後続のアクセスの開始を早めることができる。
【００４９】
＜実施の形態３＞
次に、実施の形態３について説明する。本実施の形態は、バスマスタ１００からのアクセスについて、投機的なアクセスだけでなく、非投機的なアクセスについても、エラーの通知をバスマスタ１００によって行う第１の状態と、投機的なアクセスについてだけ、エラーの通知をバスマスタ１００によって行う第２の状態とを切り替えることができる点で、実施の形態１又は２と異なる。以下、上述の実施の形態と異なる点について説明する。
【００５０】
ＣＰＵ１０により実行されるソウトウェアの開発段階では、例えばガード領域へのアクセスなどといった、プログラムミスに起因したアクセスのエラーが発生する。実施の形態１又は２で示されたデータアクセス装置１では、ソフトウェアの実行中、バスマスタ１００からエラーが通知されたり、バススレーブ２００からエラーが通知されたりする。このように、エラー通知が複数個所で発生する場合は、通知の発生タイミングがソフトウェアの命令順と異なる順序となる可能性がある。エラーの通知の順序が、ソフトウェアの命令の順序に沿っていないと、エラーの通知を用いたソフトウェアのデバッグが非常に困難になる恐れがある。そこで、本実施の形態では、エラー通知の発生箇所を１箇所にすることで、デバッグを容易にする。
【００５１】
図９は、実施の形態３にかかるデータアクセス装置２の構成の一例を示すブロック図である。データアクセス装置２は、モード固定情報記憶部１５０を有する点で、データアクセス装置１と構成が異なる。
【００５２】
モード固定情報記憶部１５０は、アクセスのエラーの通知をバスマスタが行うよう固定するか否かを示すモード固定情報を記憶するレジスタである。モード固定情報記憶部１５０には、モード固定情報として、ＣＰＵ１０からのアクセスについてのエラーの通知をバスマスタ１００が行うよう固定することを示す第１の値（例えば、１）、又はＣＰＵ１０からのアクセスについてのエラーの通知をバスマスタ１００が行うよう固定しないことを示す第２の値（例えば、０）が記憶される。なお、モード固定情報記憶部１５０に記憶されるモード固定情報は書き換え可能である。具体的には、例えば、モード固定情報記憶部１５０が記憶する情報を書き換えるためのプログラムをＣＰＵ１０が実行することで、書き換え可能である。
【００５３】
また、本実施の形態では、バスマスタ１００は、次のようにバスリクエストを発行する。バスマスタ１００は、モード固定情報記憶部１５０に上記第１の値が記憶されている場合、全てのアクセスに対し、モードとして“マスタ”を指定したバスリクエストを発行する。すなわち、投機的なアクセスか非投機的なアクセスであるかにかかわらず、バスマスタ１００は、エラーの通知をバスマスタが行うことを示すモード情報をバスリクエストに含める。また、バスマスタ１００は、モード固定情報記憶部１５０に上記第１の値が記憶されていない場合、言い換えると、モード固定情報記憶部１５０に上記第２の値が記憶されている場合、投機的なロードアクセスを行うとき、モードとして“マスタ”を指定したバスリクエストを発行し、非投機的なアクセス（投機的なロードアクセス以外の任意のアクセス）を行うとき、モードとして“スレーブ”を指定したバスリクエストを発行する。すなわち、バスマスタ１００は、投機的なロードアクセスを行うとき、エラーの通知をバスマスタが行うことを示すモード情報をバスリクエストに含め、非投機的なアクセスを行うとき、エラーの通知をバススレーブが行うことを示すモード情報をバスリクエストに含める。
【００５４】
よって、モード固定情報記憶部１５０に第１の値が記憶されている場合、バスマスタ１００のみがエラーの通知を行うこととなり、バススレーブ２００によるエラーの通知は行われなくなる。また、モードに第２の値が記憶されている場合、エラー通知に関し、実施の形態１又は２に示したデータアクセス装置１と同様の動作となる。このように、モード固定情報記憶部１５０の情報を書き換えることにより、エラー通知の実施方法を切り替えることができる。
【００５５】
また、本実施の形態では、ＣＰＵ１０は、モード固定情報記憶部１５０に第１の値が記憶されている場合、バスマスタ１００が出力したエラー通知（具体的には、エラー内容及びアクセス情報）を、アクセスを指示した命令の順に出力する。ＣＰＵ１０から出力された命令順のエラー通知は、エラー処理部５００及びデータアクセス装置２に接続されたソフトウェアデバッグシステム３に出力される。ソフトウェアデバッグシステム３は、プログラマがソフトウェアのデバッグを行うために用いるコンピュータである。なお、データアクセス装置２からソフトウェアデバッグシステム３へのエラー通知の出力は、例えば、専用のインタフェースを介して行われてもよいし、エラー処理部５００を介して出力されてもよい。
【００５６】
例えば、ソフトウェアの開発時には、モード固定情報記憶部１５０に第１の値を記憶させる。これにより、プログラマに命令順にエラーを提示することができ、ソフトウェアのデバッグが容易となる。そして、ソフトウェアの開発が終了してデータアクセス装置２の量産を開始するまでの間に、モード固定情報記憶部１５０に第２の値を記憶させる。これにより、バスマスタ１００又はバススレーブ２００においてエラー通知を行う構成に変更することができる。
【００５７】
以上、実施の形態３について説明した。本実施の形態によれば、モード固定情報記憶部１５０に第１の値が記憶されている場合、バスマスタ１００は、投機的なアクセスか非投機的なアクセスであるかにかかわらず、モードとして“マスタ”を指定したバスリクエストを発行する。このため、エラーの通知方法を一時的に変更することができるため、デバッグを容易にすることができる。
【００５８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００５９】
１、２、９        データアクセス装置
３            ソフトウェアデバッグシステム
１００、９１Ａ、９１Ｂ    バスマスタ
２００、９２Ａ、９２Ｂ    バススレーブ
９３、５００        エラー処理部
９５Ａ、９５Ｂ、４００    バス
１１０、９１０        アクセス情報記憶部
１５０            モード固定情報記憶部
５１０            エラー情報保持レジスタ
【図１】
2019008437.tif 000003
【図２】
2019008437.tif 000004
【図３】
2019008437.tif 000005
【図４】
2019008437.tif 000006
【図５】
2019008437.tif 000007
【図６】
2019008437.tif 000008
【図７】
2019008437.tif 000009
【図８】
2019008437.tif 000010
【図９】
2019008437.tif 000011