(57)【要約】【課題】応答時間など時間制約の厳しい環境下であっても適切にデータの退避処理を実現する。【解決手段】データ退避装置３は、ＣＰＵ２から第１のメモリ領域４に送られるデータの読み出し要求及び書き込み要求を処理するデジタル回路であり、ＣＰＵ２からデータの読み出し要求があると、データ退避装置３は、当該データ退避装置３内部の記憶装置又は第１のメモリ領域４から該当するデータの読み出しを行い、そのデータをＣＰＵ２に送る。また、ＣＰＵ２からデータの書き込み要求があると、内部の記憶装置に書き込み先アドレス及び書き込みデータを１組のエントリとしていったん格納し、ＣＰＵ２によるデータの読み出し及び書き込み要求のいずれも行われていない状態の間に、そのエントリを１組ずつ読み出して、第１のメモリ領域４から第２のメモリ領域５へデータを退避させた後、第１のメモリ領域４に新たなデータの書き込みを行う。【選択図】図１
2009181422.tif 000002
【特許請求の範囲】
【請求項１】
アクセス対象となるメモリに対してＣＰＵが各種信号を送信するためのアドレスバス、データバス及び制御バスに接続され、前記メモリのデータを退避用メモリに退避させるデータ退避装置であって、
前記ＣＰＵから前記制御バスを介して送信される前記メモリに対する書き込み信号を検出するメモリ書き込み検出手段と、
前記メモリ書き込み検出手段により前記書き込み信号が検出されると、前記ＣＰＵから前記アドレスバス及び前記データバスを介して各々送信される書き込み先アドレス及び書き込みデータを１組のエントリとして待ち行列に格納する待ち行列格納手段と、
前記ＣＰＵが前記アクセス対象となるメモリに対してデータの読み出し及び書き込みのいずれも行わない状態を検出するＣＰＵアクセス検出手段と、
前記ＣＰＵアクセス検出手段により、前記ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態が検出されている間に、前記待ち行列から前記エントリを取り出し、前記エントリの書き込み先アドレスに格納されていたデータを前記メモリから前記退避用メモリに退避させる退避処理を行うとともに、前記書き込み先アドレスに前記エントリの書き込みデータを格納する書き込み処理を行う待ち行列処理手段と
を備えることを特徴とするデータ退避装置。
【請求項２】
前記ＣＰＵアクセス検出手段は、前記制御バスを介して送信される読み出し信号及び書き込み信号の有無をそれぞれ監視し、前記読み出し信号及び前記書き込み信号のいずれも送信されていない場合に前記ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態として検出すること
を特徴とする請求項１に記載のデータ退避装置。
【請求項３】
前記ＣＰＵアクセス検出手段は、前記ＣＰＵに対する命令信号が送信される命令バスに接続され、前記命令バスを監視して前記ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態を検出すること
を特徴とする請求項１に記載のデータ退避装置。
【請求項４】
前記ＣＰＵアクセス検出手段は、さらに、前記ＣＰＵが前記アクセス対象となるメモリに対してデータの読み出しを行うことを検出し、
前記待ち行列処理手段は、
前記ＣＰＵアクセス検出手段によりデータの読み出しを行うことが検出されると、その読み出しに対応する読み出し先アドレスを前記アドレスバスから取り出し、その読み出し先アドレスと前記待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する同一読み出しアドレス判定手段と、
前記同一読み出しアドレス判定手段により同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータを前記待ち行列から取り出し、その書き込みデータを読み出しデータとして前記ＣＰＵに送信し、前記同一読み出しアドレス判定手段により同一アドレスが存在しないと判定された場合は前記読み出し先アドレスに格納されたデータを前記メモリから取り出し、そのデータを読み出しデータとして前記ＣＰＵに送信する読み出しデータ送信手段と
を備えることを特徴とする請求項１乃至３のいずれかに記載のデータ退避装置。
【請求項５】
前記待ち行列処理手段は、さらに、
前記同一読み出しアドレス判定手段により同一のアドレスが複数存在すると判定された場合はそれら同一のアドレスの内で前記待ち行列に最も新しく格納されたアドレスと組になっている書き込みデータを前記ＣＰＵに送信する読み出しデータとして選択する同一アドレス選択手段を備えること
を特徴とする請求項４に記載のデータ退避装置。
【請求項６】
前記ＣＰＵアクセス検出手段は、さらに、前記ＣＰＵが前記アクセス対象となるメモリに対してデータの書き込みを行うことを検出し、
前記待ち行列処理手段は、
前記ＣＰＵアクセス検出手段によりデータの書き込みを行うことが検出されると、その書き込みに対応する書き込み先アドレス及び書き込みデータを前記アドレスバス及び前記データバスから各々取り出し、前記書き込み先アドレスと前記待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する同一書き込みアドレス判定手段と、
前記同一書き込みアドレス判定手段により同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータを前記データバスから取り出した書き込みデータに書き換えるデータ書き換え手段と
を備えることを特徴とする請求項１乃至４のいずれかに記載のデータ退避装置。
【請求項７】
前記待ち行列格納手段は、各エントリに含まれる情報として、さらに、エントリの有効又は無効を示すエントリ有効タグを格納し、
前記データ書き換え手段は、前記同一書き込みアドレス判定手段により同一のアドレスが存在すると判定された場合は、書き込みデータを書き換える代わりに、前記待ち行列に格納された同一のアドレスと組になっているエントリ有効タグを無効とするとともに、前記アドレスバス及び前記データバスから各々取り出した前記書き込み先アドレス及び前記書き込みデータを新たなエントリとして待ち行列に格納すること
を特徴とする請求項６に記載のデータ退避装置。
【請求項８】
前記データ退避装置は、前記アクセス対象となるメモリの一部のメモリ領域について前記退避処理及び前記書き込み処理を行うものであり、
前記ＣＰＵアクセス検出手段は、前記ＣＰＵが前記一部のメモリ領域に対してデータの読み出し及び書き込みのいずれも行わない状態を検出すること
を特徴とする請求項１乃至７のいずれかに記載のデータ退避装置。
【請求項９】
前記退避用メモリに退避されたデータの書き込み先アドレスを退避済みアドレスリストとして格納する退避済みアドレスリスト格納手段と、
新たに退避処理がされるデータの書き込み先アドレスと前記退避済みアドレスリストとを比較して同一のアドレスが存在するか否かを判定する同一退避アドレス判定手段とを備え、
前記待ち行列処理手段は、前記同一退避アドレス判定手段により同一のアドレスが存在すると判定されると前記退避処理を行なわないこと
を特徴とする請求項１乃至８のいずれかに記載のデータ退避装置。
【請求項１０】
アクセス対象となるメモリに対してＣＰＵが送信する各種信号を、アドレスバス、データバス及び制御バスを介して取り出し、前記メモリのデータを退避用メモリに退避させるデータ退避方法であって、
前記ＣＰＵから前記制御バスを介して送信される前記メモリに対する書き込み信号を検出するメモリ書き込み検出ステップと、
前記メモリ書き込み検出ステップで前記書き込み信号が検出されると、前記ＣＰＵから前記アドレスバス及び前記データバスを介して各々送信される書き込み先アドレス及び書き込みデータを１組のエントリとして待ち行列に格納する待ち行列格納ステップと、
前記ＣＰＵが前記アクセス対象となるメモリに対してデータの読み出し及び書き込みのいずれも行わない状態を検出するＣＰＵアクセス検出ステップと、
前記ＣＰＵアクセス検出ステップで、前記ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態が検出されている間に、前記待ち行列から前記エントリを取り出し、前記エントリの書き込み先アドレスに格納されていたデータを前記メモリから前記退避用メモリに退避させる退避処理を行うとともに、前記書き込み先アドレスに前記エントリの書き込みデータを格納する書き込み処理を行う待ち行列処理ステップと
を備えることを特徴とするデータ退避方法。
【請求項１１】
前記ＣＰＵアクセス検出ステップでは、さらに、前記ＣＰＵが前記アクセス対象となるメモリに対してデータの読み出しを行うことを検出し、
前記待ち行列処理ステップは、
前記ＣＰＵアクセス検出ステップでデータの読み出しを行うことが検出されると、その読み出しに対応する読み出し先アドレスを前記アドレスバスから取り出し、その読み出し先アドレスと前記待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する同一読み出しアドレス判定ステップと、
前記同一読み出しアドレス判定ステップで同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータを前記待ち行列から取り出し、その書き込みデータを読み出しデータとして前記ＣＰＵに送信し、前記同一読み出しアドレス判定ステップで同一アドレスが存在しないと判定された場合は前記読み出し先アドレスに格納されたデータを前記メモリから取り出し、そのデータを読み出しデータとして前記ＣＰＵに送信する読み出しデータ送信ステップと
を備えることを特徴とする請求項１０に記載のデータ退避方法。
【請求項１２】
前記読み出しデータ送信ステップでは、前記ＣＰＵアクセス検出ステップでデータの読み出しを行うことが検出されると、同一読み出しアドレス判定ステップの判定にかかわらず、予め前記読み出し先アドレスに格納されたデータを前記メモリから取り出しておくこと
を特徴とする請求項１１に記載のデータ退避方法。
【請求項１３】
前記待ち行列処理ステップは、さらに、
前記同一読み出しアドレス判定ステップで同一のアドレスが複数存在すると判定された場合はそれら同一のアドレスの内で前記待ち行列に最も新しく格納されたアドレスと組になっている書き込みデータを前記ＣＰＵに送信する読み出しデータとして選択する同一アドレス選択ステップを備えること
を特徴とする請求項１１又は１２に記載のデータ退避方法。
【請求項１４】
前記ＣＰＵアクセス検出ステップでは、さらに、前記ＣＰＵが前記アクセス対象となるメモリに対してデータの書き込みを行うことを検出し、
前記待ち行列処理ステップは、
前記ＣＰＵアクセス検出ステップでデータの書き込みを行うことが検出されると、その書き込みに対応する書き込み先アドレス及び書き込みデータを前記アドレスバス及び前記データバスから各々取り出し、前記書き込み先アドレスと前記待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する同一書き込みアドレス判定ステップと、
前記同一書き込みアドレス判定ステップで同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータを前記データバスから取り出した書き込みデータに書き換えるデータ書き換えステップと
を備えることを特徴とする請求項１０乃至１２のいずれかに記載のデータ退避方法。
【請求項１５】
前記待ち行列格納ステップでは、各エントリに含まれる情報として、さらに、エントリの有効又は無効を示すエントリ有効タグを格納し、
前記データ書き換えステップでは、前記同一書き込みアドレス判定ステップで同一のアドレスが存在すると判定された場合は、書き込みデータを書き換える代わりに、前記待ち行列に格納された同一のアドレスと組になっているエントリ有効タグを無効とするとともに、前記アドレスバス及び前記データバスから各々取り出した前記書き込み先アドレス及び前記書き込みデータを新たなエントリとして待ち行列に格納すること
を特徴とする請求項１４に記載のデータ退避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータやビジネス用途のコンピュータシステム等におけるデータの読み出し及び書き出し制御に関するものであり、コンピュータに障害が起きた場合に備えてデータを退避用メモリに退避させておくデータ退避装置及びデータ退避方法に関する。
【背景技術】
【０００２】
宇宙線や電磁ノイズによりコンピュータで扱われるデータの一部が反転する、ソフトエラーという現象が知られている。このソフトエラーによる障害を防止するため、航空及び宇宙分野やビジネス用途のコンピュータでは、謝り訂正符号の利用やマイクロコンピュータの多重化など、さまざまなシステム回復の技術が利用されている。自動車制御の分野でも、ブレーキやステアリング、シフトなどの安全性に関わる制御装置の電子化が進んでおり、ソフトエラー対策も課題の一つと言われている。
【０００３】
従来のソフトエラー対策の方法は、大きく、空間冗長に基づく方法と、時間冗長に基づく方法に分類できる。
空間冗長に基づく方法としては、ＥＣＣなど誤り訂正符号によりデータ化けを修正する方法や、パリティ符号などの誤り検出符号によりデータ化けを検出して訂正する方法、あるいは、システムの構成を多重化し、出力の多数決をとる方法などが知られている。
【０００４】
しかしながら、誤り訂正符号や誤り検出符号を使った方法は、データの一部が反転した場合にしか対応できないという問題がある。また、システムの構成を多重化した場合、消費電力や製造コストが増加するという問題がある。
【０００５】
一方、時間冗長に基づく方法としては、ソフトエラーが一時的に発生する事象であることに着目し、処理を複数回行って比較し、正しい処理結果を得る方法も考案されている。この方式では、システムの構成を多重化した場合と比べ、低コストで実現可能というメリットがある。
【０００６】
しかしながら、この方法は、全ての処理を複数回実行するために処理の実行時間が長くなり、リアルタイム性が必要とされる制御には適さないという問題がある。
この問題に対しては、エラーが発生したときのみ、チェックポイントに戻って、エラーが発生した部分の処理をリトライする装置が考案されている。
【０００７】
例えば、特許文献１に記載された装置では、チェックポイントでＣＰＵの汎用レジスタ、プログラムカウンタ、スタックポインタの値をメモリの特定の領域に格納するとともに、チェックポイント以降はＣＰＵがメモリに書込みを行う前に、書込みを行うアドレスからデータの読出しを行い、退避用メモリ（トレースメモリ）に読出したデータを格納する。
【０００８】
エラー発生時には、退避用メモリに格納されたデータ、およびチェックポイント時点でメモリに格納した、汎用レジスタ、プログラムカウンタ、スタックポインタの値をメモリおよびＣＰＵに書き戻す。
【０００９】
ソフトエラーは一時的な現象であり、連続して発生する確率は非常に低い。そのため、書き戻した時点から処理を再開することにより、システムを回復することができる。
また、リトライを開始するポイント（チェックポイント）をあらかじめ決めている場合、チェックポイント時点のデータを回復できればよいので、あるアドレスのデータを一旦退避した後は、そのアドレスに対して書き込まれたデータを退避する必要はなくなる。
【特許文献１】特開平９−８１４０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１の方法によりデータの退避を行う場合、ＣＰＵがメモリにデータの書き込みを行う前に、書き込み先のデータの読み出しを行うため、データの読み出しのためにバスサイクルが延長されてしまい、プログラム処理時間が増加してしまうという問題があった。
【００１１】
このときのプログラム処理時間の増加量は、ＣＰＵがメモリにデータを書き込む回数に比例するため、実行するプログラムによっては処理時間の増加量を見積もるのが困難となる場合もある。
【００１２】
これらの問題があるため、特許文献１に記載の方法は、応答時間など時間制約の厳しい組み込み系の制御に適用するのは難しい。
本発明はこれらの課題を解決するためになされたものであり、応答時間など時間制約の厳しい環境下であっても適切にデータの退避処理を実現することを目的とする。
【課題を解決するための手段】
【００１３】
前記課題を解決するためになされた請求項１記載の発明は、アクセス対象となるメモリに対してＣＰＵが各種信号を送信するためのアドレスバス、データバス及び制御バスに接続されたデータ退避装置であり、メモリのデータを退避用メモリに退避させるというものである。このデータ退避装置は、メモリ書き込み検出手段、待ち行列格納手段、ＣＰＵアクセス検出手段及び待ち行列処理手段を備えている。
【００１４】
そして、このデータ退避装置では、メモリ書き込み検出手段が、ＣＰＵから制御バスを介して送信されるメモリに対する書き込み信号を検出し、待ち行列格納手段は、メモリ書き込み検出手段により書き込み信号が検出されると、ＣＰＵからアドレスバス及びデータバスを介して各々送信される書き込み先アドレス及び書き込みデータを１組のエントリとして待ち行列に格納する。
【００１５】
一方、ＣＰＵアクセス検出手段は、アクセス対象となるメモリに対してＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態を検出し、待ち行列処理手段が、ＣＰＵアクセス検出手段によりＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態が検出されている間に、待ち行列からエントリを取り出し、そのエントリの書き込み先アドレスに格納されていたデータをメモリから退避用メモリに退避させる退避処理を行うとともに、その書き込み先アドレスにエントリの書き込みデータを格納する書き込み処理を行う。
【００１６】
このような請求項１記載の発明によれば、ＣＰＵがデータの書き込み信号を送信するタイミングでデータの退避処理が行われるのではなく、書き込み先アドレス及び書き込みデータは、いったん待ち行列のエントリとして格納される。そのため、データの書き込みに伴って退避処理を行うためにＣＰＵがストールすることがなくなり、データの書き込み処理に伴う処理速度の低下を防止することができる。
【００１７】
また、一般的な制御プログラムでは、全処理に占めるアクセスの比率が数％から３０％程度となっており、少なくとも１０サイクルのうち７サイクル程度はアクセスがなされていないことになる。そのため、その分のサイクルを待ち行列に格納されたエントリの退避処理及び書き込み処理にあてれば、ＣＰＵの空きサイクルを利用して退避処理及び書き込み処理が行われることになり、待ち行列の処理待ちによる処理時間の増加もほとんど生じないことになる。
【００１８】
したがって、本発明によれば、応答時間など時間制約の厳しい環境下であっても適切にデータの退避処理を実現することが可能になるという効果が得られる。
次に、請求項２記載の発明は、請求項１記載のデータ退避装置において、ＣＰＵアクセス検出手段が、制御バスを介して送信される読み出し信号及び書き込み信号の有無をそれぞれ監視し、それらの信号がいずれも送信されていない場合に、ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態として検出するというものである。
【００１９】
このような請求項２記載の発明によれば、制御バスを介して送信される読み出し信号及び書き込み信号を監視することで、データの読み出し及び書き込みのいずれも行わない状態を容易に検出できるという効果が得られる。これを実現する構成としては、例えば、両信号を入力とするＮＯＲ回路を用いることができる。
【００２０】
一方、請求項３記載の発明は、請求項１記載のデータ退避装置において、ＣＰＵに対する命令信号が送信される命令バスにＣＰＵアクセス検出手段が接続されており、命令バスを監視してＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態を検出する。
【００２１】
このような請求項３記載の発明によれば、ＣＰＵがメモリに対してアクセスをする前に、ＣＰＵがメモリへアクセスするかどうかを判定するため、メモリへのアクセスの開始直後から退避処理を実行することが可能となる。このことによりＣＰＵがメモリへの読み出し及び書き出し信号を送信した後にＣＰＵのアクセスを判定する場合と比べて、クロックの周波数を高くすることが可能となり、処理の高速動作を実現できるという効果を得ることができる。
【００２２】
また、請求項４記載の発明は、請求項１乃至３のいずれかに記載のデータ退避装置において、ＣＰＵアクセス検出手段が、さらに、アクセス対象となるメモリに対してＣＰＵがデータの読み出しを行うことを検出する。そして、待ち行列処理手段は、同一読み出しアドレス判定手段及び読み出しデータ送信手段を備えており、同一読み出しアドレス判定手段は、ＣＰＵアクセス検出手段によりデータの読み出しを行うことが検出されると、その読み出しに対応する読み出し先アドレスをアドレスバスから取り出し、その読み出し先アドレスと待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する。そして、読み出しデータ送信手段は、同一のアドレスが存在すると判定された場合にそのアドレスと組になっている書き込みデータを待ち行列から取り出し、その書き込みデータを読み出しデータとしてＣＰＵに送信し、同一アドレスが存在しないと判定された場合は読み出し先アドレスに格納されたデータをメモリから取り出し、そのデータを読み出しデータとしてＣＰＵに送信する。
【００２３】
このような請求項４記載の発明によれば、データの読み出しについて、待ち行列に格納されたデータをチェックするため、退避処理がなされていないデータが待ち行列に残っていたとしても、データの読み出し処理が適切に実行されるという効果が得られる。
【００２４】
特に、請求項５記載の発明は、請求項４に記載の発明において、待ち行列処理手段が、さらに同一アドレス選択手段を備えており、同一アドレス選択手段が、同一のアドレスが複数存在すると判定された場合はそれら同一のアドレスの内で待ち行列に最も新しく格納されたアドレスと組になっている書き込みデータをＣＰＵに送信する読み出しデータとして選択する。
【００２５】
このような請求項５記載の発明によれば、待ち行列に同一のアドレスで複数の書き込みデータが格納されていた場合でも最も新しいデータを読み出すことができるので、データの読み出しが適切にできるという効果が得られる。
【００２６】
一方、請求項６記載の発明は、請求項１乃至４のいずれかに記載のデータ退避装置において、ＣＰＵアクセス検出手段が、さらに、ＣＰＵがアクセス対象となるメモリに対してデータの書き込みを行うことを検出する。そして、待ち行列処理手段は、同一書き込みアドレス判定手段及びデータ書き換え手段を備えており、同一書き込みアドレス判定手段は、ＣＰＵアクセス検出手段によりデータの書き込みを行うことが検出されると、その書き込みに対応する書き込み先アドレス及び書き込みデータをアドレスバス及びデータバスから各々取り出し、書き込み先アドレスと待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する。さらに、データ書き換え手段は、同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータをデータバスから取り出した書き込みデータに書き換える。
【００２７】
このような請求項６記載の発明によれば、データの書き込みについて、待ち行列に格納されたデータをチェックして、同一のアドレスがあれば組となっているデータを書き換えるので、待ち行列には１つのアドレスに対して１個の書き込み要求しかない状態を実現できる。そのため、同一のアドレスに対する複数の書き込みの中から、最新の書き込みデータを選択する機能（請求項５記載の同一アドレス選択手段）が不要となり、小型の回路を構成できるという効果が得られる。
【００２８】
特に、請求項７記載の発明は、請求項６に記載の発明において、待ち行列格納手段が、各エントリに含まれる情報として、さらに、エントリの有効又は無効を示すエントリ有効タグを格納する。そして、データ書き換え手段が、同一書き込みアドレス判定手段により同一のアドレスが存在すると判定された場合は、書き込みデータを書き換える代わりに、待ち行列に格納された同一のアドレスと組になっているエントリ有効タグを無効とするとともに、アドレスバス及びデータバスから各々取り出した書き込み先アドレス及び書き込みデータを新たなエントリとして待ち行列に格納する。
【００２９】
このような請求項７記載の発明によれば、エントリ有効タグの操作でエントリを無効とすることができるので、待ち行列中のデータを書き換えるための機能を設ける必要がなくなり、高速動作する小型の回路を構成できるという効果が得られる。
【００３０】
次に、請求項８記載の発明は、請求項１乃至７のいずれかに記載のデータ退避装置において、アクセス対象となるメモリの一部のメモリ領域について退避処理及び書き込み処理を行うものであることを前提に、ＣＰＵアクセス検出手段が、退避処理及び書き込み処理が行われる一部のメモリ領域に対してＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態を検出する。
【００３１】
このような請求項８記載の発明によれば、ＣＰＵがアクセスする先をチェックすることにより、実際にはＣＰＵがデータ退避装置で管理されたメモリにアクセスしないのに、アクセスがあると誤って検出されるのを防止できる。その結果、データ退避装置が退避処理を実行できる機会が増えるので、待ち行列がいっぱいになり退避処理が間に合わなくなる状況を起こりにくくすることができるという効果が得られる。
【００３２】
また、請求項９記載の発明は、請求項１乃至８のいずれかに記載のデータ退避装置において、退避済みアドレスリスト格納手段及び同一退避アドレス判定手段を備える。そして、退避済みアドレスリスト格納手段は、退避用メモリに退避されたデータの書き込み先アドレスを退避済みアドレスリストとして格納し、同一退避アドレス判定手段は、新たに退避処理がされるデータの書き込み先アドレスと退避済みアドレスリストとを比較して同一のアドレスが存在するか否かを判定する。この場合、待ち行列処理手段は、同一退避アドレス判定手段により同一のアドレスが存在すると判定されると退避処理を行なわない。
【００３３】
つまり、請求項９記載の発明は、退避済みのデータが多い場合にデータの探索に時間がかかるのを防止するものである。すなわち、データの探索について、例えば、一般的な探索手法である線形探索を用いた場合、退避済みデータの数をＮとすると、平均でＮ／２回の比較処理が必要となる。
【００３４】
しかしながら、本件のデータ退避装置では一定のチェックポイントにおける退避データを再現できれば十分であり、あるチェックポイントの後にいったんデータが退避されれば、そのデータが格納されているアドレスについて、次のチェックポイントの前にさらにデータを退避する必要はないものである。
【００３５】
このような請求項９記載の発明によれば、既に退避されているデータを改めて退避する処理を省くことができるので、その分、待ち行列の処理を進めることができるという効果がある。
【００３６】
次に、請求項１０記載の発明は、アクセス対象となるメモリに対してＣＰＵが送信する各種信号を、アドレスバス、データバス及び制御バスを介して取り出し、メモリのデータを退避用メモリに退避させるデータ退避方法である。このデータ退避方法は、メモリ書き込み検出ステップ、待ち行列格納ステップ、ＣＰＵアクセス検出ステップ及び待ち行列処理ステップを備え、メモリ書き込み検出ステップでＣＰＵから制御バスを介して送信されるメモリに対する書き込み信号を検出すると、待ち行列格納ステップで、ＣＰＵからアドレスバス及びデータバスを介して各々送信される書き込み先アドレス及び書き込みデータを１組のエントリとして待ち行列に格納する。そして、ＣＰＵアクセス検出ステップでＣＰＵがアクセス対象となるメモリに対してデータの読み出し及び書き込みのいずれも行わない状態を検出し、待ち行列処理ステップでは、ＣＰＵがデータの読み出し及び書き込みのいずれも行わない状態が検出されている間に、待ち行列からエントリを取り出し、エントリの書き込み先アドレスに格納されていたデータをメモリから退避用メモリに退避させる退避処理を行うとともに、その書き込み先アドレスにエントリの書き込みデータを格納する書き込み処理を行う。
【００３７】
このような請求項１０記載のデータ退避方法によれば、請求項１に記載の発明と同様の効果を得ることができる。
請求項１１記載の発明は、請求項１０に記載のデータ退避方法において、ＣＰＵアクセス検出ステップでは、さらに、アクセス対象となるメモリに対してＣＰＵがデータの読み出しを行うことを検出する。そして、待ち行列処理ステップは、同一読み出しアドレス判定ステップ及び読み出しデータ送信ステップを備えている。ここで、同一読み出しアドレス判定ステップでは、ＣＰＵアクセス検出ステップでデータの読み出しを行うことが検出されると、その読み出しに対応する読み出し先アドレスをアドレスバスから取り出し、その読み出し先アドレスと待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定し、読み出しデータ送信ステップでは、同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータを待ち行列から取り出し、その書き込みデータを読み出しデータとしてＣＰＵに送信し、同一読み出しアドレス判定ステップで同一アドレスが存在しないと判定された場合は読み出し先アドレスに格納されたデータをメモリから取り出し、そのデータを読み出しデータとしてＣＰＵに送信する。
【００３８】
このような請求項１１記載の発明によれば、請求項４に記載の発明と同様の効果を得ることができる。
また、請求項１２記載の発明は、請求項１１に記載のデータ退避方法において、読み出しデータ送信ステップでは、ＣＰＵアクセス検出ステップでデータの読み出しを行うことが検出されると、同一読み出しアドレス判定ステップの判定にかかわらず、予め読み出し先アドレスに格納されたデータをメモリから取り出しておく。
【００３９】
このような請求項１２記載の発明によれば、ＣＰＵアクセス検出ステップでデータの読み出しを行うことを検出すると、待ち行列に同一のアドレスがあるか否かにかかわらず、予め読み出しデータをメモリから取り出して準備しておくため、待ち行列に同一のアドレスがなかった場合でも迅速に読み出しデータをＣＰＵに送信することが可能となり、読み出し処理の高速化が実現できるという効果がある。
【００４０】
また、請求項１３記載の発明は、請求項１１又は１２に記載のデータ退避方法において、待ち行列処理ステップが、さらに、同一アドレス選択ステップを備え、同一アドレス選択ステップでは、同一読み出しアドレス判定ステップで同一のアドレスが複数存在すると判定された場合はそれら同一のアドレスの内で待ち行列に最も新しく格納されたアドレスと組になっている書き込みデータをＣＰＵに送信する読み出しデータとして選択する。
【００４１】
このような請求項１３記載の発明によれば、請求項５に記載の発明と同様の効果が得られる。
一方、請求項１４記載の発明は、請求項１０乃至１２のいずれかに記載のデータ退避方法において、ＣＰＵアクセス検出ステップで、さらに、アクセス対象となるメモリに対してＣＰＵがデータの書き込みを行うことを検出する。そして、待ち行列処理ステップは、同一書き込みアドレス判定ステップ及びデータ書き換えステップを備える。同一書き込みアドレス判定ステップでは、ＣＰＵアクセス検出ステップでデータの書き込みを行うことが検出されると、その書き込みに対応する書き込み先アドレス及び書き込みデータをアドレスバス及びデータバスから各々取り出し、書き込み先アドレスと待ち行列に格納された書き込み先アドレスとを比較して同一のアドレスが存在するか否かを判定する。そして、データ書き換えステップでは、同一のアドレスが存在すると判定された場合はそのアドレスと組になっている書き込みデータをデータバスから取り出した書き込みデータに書き換える。
【００４２】
このような請求項１４記載の発明によれば、請求項６に記載の発明と同様の効果を得ることができる。
また、請求項１５記載の発明は、請求項１４に記載のデータ退避方法において、待ち行列格納ステップで、各エントリに含まれる情報として、さらに、エントリの有効又は無効を示すエントリ有効タグを格納する。そして、データ書き換えステップでは、同一書き込みアドレス判定ステップで同一のアドレスが存在すると判定された場合は、書き込みデータを書き換える代わりに、待ち行列に格納された同一のアドレスと組になっているエントリ有効タグを無効とするとともに、アドレスバス及びデータバスから各々取り出した書き込み先アドレス及び書き込みデータを新たなエントリとして待ち行列に格納する。
【００４３】
このような請求項１５記載の発明によれば、請求項７に記載の発明と同一の効果を得ることができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明が適用された実施形態について、図面を用いて説明する。
［１  第１実施形態］
まず、第１実施形態のマイクロコンピュータ（以下、「マイコン」という。）について説明する。
［１−１  全体構成］
図１は、第１実施形態としてのマイコンの構成を示すブロック図である。図１に示すように、このマイコンは、ＲＯＭ１、ＣＰＵ２、データ退避装置３、第１のメモリ領域（ＭＥＭ１）４及び第２のメモリ領域（ＭＥＭ２）５を備える。
【００４５】
このマイコンにおいて、ＣＰＵ２は、命令側アドレスバス６、命令側制御バス７及び命令側データバス８を介してＲＯＭ１に接続されている。また、データ退避装置３は、データ側アドレスバス９、データ側制御バス１０及びデータ側データバス１１を介してＣＰＵ２に接続され、第１メモリ側アドレスバス１２、第１メモリ側制御バス１３及び第１メモリ側データバス１４を介して第１のメモリ領域４に接続されている。さらに、このデータ退避装置３は、第２メモリ側アドレスバス１５、第２メモリ側制御バス１６及び第２メモリ側データバス１７を介して第２のメモリ領域５に接続されている。
【００４６】
そして、このマイコンでは、ＣＰＵ２からデータ側制御バス１０を介してデータの読み出し要求及び書き込み要求等の制御信号が送られ、それら読み出し要求又は書き込み要求に対応するアドレス信号がデータ側アドレスバス９を介して送られる。また、読み出したデータ及び書き込むデータ等のデータ信号はデータ側データバス１１を介して送られる。
【００４７】
また、データ退避装置３と第１のメモリ領域４及び第２のメモリ領域５と間のデータの送受信についても同様であり、それぞれ第１メモリ側制御バス１３及び第２メモリ側制御バス１６を介して、データの読み出し要求及び書き込み要求等の制御信号が送られ、第１メモリ側アドレスバス１２及び第２メモリ側アドレスバス１５を介してそれらの要求に対応するアドレス信号が送られる。そして、第１メモリ側データバス１４及び第２メモリ側データバス１７を介して読み出したデータ又は書き込むデータが送られる。
【００４８】
ここで、データ退避装置３は、ＣＰＵ２から第１のメモリ領域４に送られるデータの読み出し要求及び書き込み要求を処理するデジタル回路である。具体的には、ＣＰＵ２からデータの読み出し要求があると、データ退避装置３は、当該データ退避装置３内部の記憶装置（後述する待ち行列格納回路１９）又は第１のメモリ領域４から該当するデータの読み出しを行い、そのデータをＣＰＵ２に送る。また、ＣＰＵ２からデータの書き込み要求があると、データ退避装置３は、内部の記憶装置（後述する待ち行列格納回路１９）に書き込み先アドレス及び書き込みデータを１組のエントリとしていったん格納し、ＣＰＵ２によるデータの読み出し及び書き込み要求のいずれも行われていない状態の間に、そのエントリを１組ずつ読み出して、第１のメモリ領域４から第２のメモリ領域５へデータを退避させた後、第１のメモリ領域４に新たなデータの書き込みを行う。
［１−２  内部構成］
図２は、データ退避装置３の内部構成を示すブロック図である。データ退避装置３は、メモリ書き込み要求検出回路１８、待ち行列格納回路１９、ＣＰＵアクセス検出回路２０及び待ち行列処理回路２１を備える。
【００４９】
メモリ書き込み要求検出回路１８は、ＣＰＵ２からデータ側制御バス１０を介して送られるデータの書き込み要求の信号を検出し、待ち行列格納回路１９に対して検出結果を出力するデジタル回路である。
【００５０】
待ち行列格納回路１９は、メモリ書き込み要求検出回路１８からの出力を入力として、データ側アドレスバス９を介してＣＰＵ２から送られる書き込み先アドレス、及びデータ側データバス１１を介してＣＰＵ２から送られる書き込み先データを１つの組（エントリ）として内部の記憶回路に待ち行列として格納し、待ち行列処理回路２１の要求に応じて、待ち行列の内容を待ち行列処理回路２１に出力するデジタル回路である。この待ち行列格納回路１９は、待ち行列につき書き込みアドレス及び書き込みデータを１組のエントリとして、ＦＩＦＯ（First-In First-Out）形式で格納する。待ち行列格納回路１９に格納される待ち行列のデータ構造は、図３に示すとおりであり、エントリ１から順にアドレスＡ及びデータＤが１組ずつ格納される。
【００５１】
ＣＰＵアクセス検出回路２０は、データ側制御バス１０を介してＣＰＵ２によりデータの読み出し要求又は書き込み要求が行われているか否かの状態を検出し、待ち行列処理回路２１にその結果を出力するデジタル回路である。
【００５２】
図４は、ＣＰＵアクセス検出回路２０の入力に近い前半部分を示したデジタル回路図である。この回路は１個のＮＯＲ素子２２を備え、データ側制御バス１０の中からデータ読み出し信号及びデータ書き込み信号を入力とし、その演算結果が出力線２３に出力される。このＣＰＵアクセス検出回路２０によれば、データの読み出し信号及び書き込み信号がいずれも送られていないサイクルにのみ真の値が出力されることになる。出力線２３からの信号は、後述する図５に示す回路を通った後、待ち行列処理回路２１に送られる。
【００５３】
図５は、ＣＰＵアクセス検出回路２０の出力に近い後半部分を示したデジタル回路図である。この回路は、アドレスデコード回路２４及びＡＮＤ素子２５を備える。
アドレスデコード回路２４は、データ側アドレスバス９を入力として、ＣＰＵ２から送られるアドレスがデータ退避装置３と接続された第１のメモリ領域４の範囲内にあるときにだけ、真の値をＡＮＤ素子２５に出力するように設計されたデジタル回路である。また、ＡＮＤ素子２５は、図４で示した回路の出力線２３及びアドレスデコード回路２４からの出力を入力として、論理積をとり、その演算結果を待ち行列処理回路２１に出力する。
【００５４】
この図５に示した回路によれば、データ退避装置３による退避処理が行われる第１のメモリ領域４以外のアドレスに対してデータの読み出し及び書き込みがあったとしても、ＣＰＵアクセス検出回路２０の出力結果としては、データの読み出し及び書き込みのいずれも行われていない状態が出力されることになる。
【００５５】
次に、待ち行列処理回路２１は、ＣＰＵアクセス検出回路２０からＣＰＵ２がアクセスを行っていない状態の信号を入力し、待ち行列格納回路１９からエントリを１組ずつ取り出し、データの退避処理及び書き込み処理を行なう。またＣＰＵ２からの読み出し要求及び書き込み要求に応じてエントリのアドレスと比較し、待ち行列のデータの授受も行なう。ＣＰＵ２からの要求に応じてデータを読み出した場合はデータ側データバス１１を介して結果をＣＰＵ２に送る。またこの待ち行列処理回路２１は、第１メモリ側アドレスバス１２、第１メモリ側制御バス１３及び第１メモリ側データバス１４を介して第１のメモリ領域４に接続され、第２メモリ側アドレスバス１５、第２メモリ側制御バス１６及び第２メモリ側データバス１７を介して第２のメモリ領域５に接続されている。
【００５６】
図６は、待ち行列処理回路２１の内部構成の一部を示すブロック図であり、ＣＰＵ２からの読み出し要求に対する処理を実現するものである。この回路は、同一読み出しアドレス判定回路２６、Ｎto１セレクタ２７及び２to１セレクタ２８から構成され、待ち行列格納回路１９に接続されている。
【００５７】
同一読み出しアドレス判定回路２６は、データ側アドレスバス９を介してＣＰＵ２から送られるアドレスと、待ち行列格納回路１９に格納されている待ち行列のエントリのアドレスとを入力して比較し、その結果をＮto１セレクタ２７及び２to１セレクタ２８に出力する。すなわち、この同一読み出しアドレス判定回路２６は、ＣＰＵ２から読み出し要求があったときに動作を開始し、ＣＰＵ２からのアドレスと待ち行列のアドレスとを比較し、同一のアドレスがある場合は、Ｎto１セレクタ２７にエントリ値を送り、２to１セレクタ２８に待ち行列のデータをＣＰＵ２に対して送るように指示する選択信号を送る。また、同一のアドレスがない場合は、第１のメモリ領域４に格納されていたデータをＣＰＵ２に対して送るように指示する選択信号を送る。
【００５８】
Ｎto１セレクタ２７は、同一読み出しアドレス判定回路２６から送られたエントリ値を入力し、そのエントリ値に対応するデータを待ち行列格納回路１９に格納されている待ち行列から読み出し、その読み出したデータを２to１セレクタ２８に出力する。
【００５９】
２to１セレクタ２８は、同一読み出しアドレス判定回路２６から送られる選択信号を入力して、その選択信号に従い、第１のメモリ領域４から第１メモリ側データバス１４を介して読み出したデータか、Ｎto１セレクタ２７から送られたデータかのいずれかを選択して、ＣＰＵ２に対して読み出しデータとしてデータ側データバス１１を介して送る。
【００６０】
図７は、同一読み出しアドレス判定回路２６の内部構成を示すブロック図である。同一読み出しアドレス判定回路２６は、Ｎ個のコンパレータ２９及び１個の選択信号生成回路３０を備え、Ｎ個のコンパレータ２９は、データ側アドレスバス９及び待ち行列格納回路１９に格納されている待ち行列のＮ個分のアドレスを入力とし、比較の結果を選択信号生成回路３０に出力する比較回路である。
【００６１】
選択信号生成回路３０は、コンパレータ２９からの出力を入力して、Ｎto１セレクタ２７及び２to１セレクタ２８に演算結果を出力するデジタル回路である。選択信号生成回路３０により実現される真理値表は図８に示すとおりである。図８に示すとおり、選択信号生成回路３０はプライオリティエンコーダとなっており、コンパレータ２９の各出力は重み付きで扱われ、この例ではCt0-NのＮの番号が小さいエントリを選択する信号を優先してＮto１セレクタ２７に出力する。また、２to１セレクタ２８にＥＸＩＳＴ信号として真の値を送る。
【００６２】
２to１セレクタ２８は、ＥＸＩＳＴ信号として真の値を受けた場合に、Ｎto１セレクタの出力値をＣＰＵに出力し、真でない場合は第１メモリ側データバス１４の値を出力する。なお、図８の真理値表はＮが８の場合について図示したものである。
【００６３】
図９は、待ち行列処理回路２１の内部構成の一部を示すブロック図であり、ＣＰＵ２から書き込み要求があった場合に待ち行列格納回路１９に格納されている待ち行列のデータの書き換え処理を実現するデジタル回路である。
【００６４】
ＣＰＵ２から書き込み要求があった場合の処理を実現するデジタル回路については全体を示さないが、読み込み要求があった場合と同様、図６及び図７で示した比較回路を共通で用いることにより、書き込み先のアドレスと待ち行列のアドレスとが比較され、同一のアドレスが存在した場合は、該当するエントリに対して書き換えを要求するエントリ要求信号が送られる。
【００６５】
図９に示すとおり、書き換え処理を実現する回路は、Ｎ個のデータ書き換え回路３１及びＮ個のＯＲ素子３２を備える。データ書き換え回路３１は、図２には示さないデータ側データバス１１を介してＣＰＵ２から書き込みデータを入力し、ＷＥ（Write Enable）端子に真の値が入力されたときに、待ち行列のデータを書き込みデータで書き換える信号を待ち行列格納回路１９に出力するデジタル回路である。ＷＥ端子には、ＯＲ素子３２から当該エントリの書き換えをすべき旨の信号が送られる。
【００６６】
ＯＲ素子３２は、ＣＰＵアクセス検出回路２０から送られるデータ書き込み信号及び当該エントリを書き換える際に真の値となるエントリ書き換え信号を入力として論理和をとる。このエントリ書き換え信号は、ＣＰＵ２からデータの書き込み要求について待ち行列格納回路１９に格納されている待ち行列のエントリに同一のアドレスがあった場合に、該当するエントリに対応するＯＲ素子３２に対して送られる。またデータ書き込み信号は、待ち行列のエントリに同一のアドレスがなかった場合に待ち行列格納回路１９に格納されている待ち行列の新たなエントリに対応するＯＲ素子３２に対して送られる。
［１−３  処理フロー］
次に第１実施形態の処理フローを説明する。
【００６７】
図１０は、第１実施形態のデータ退避装置３により実行されるＣＰＵ２から読み出し要求があった場合の処理フローを示すフローチャートであり、これまでに説明してきた構成により実現される。ＣＰＵ２から読み出し要求があった場合、次のステップで処理される。
【００６８】
まずＳ１０１で、ＣＰＵ２から送られる読み出しアドレスと待ち行列格納回路１９に格納されている待ち行列のエントリのアドレスとが同一読み出しアドレス判定回路２６により比較される。Ｓ１０２で一致するエントリの有無により分岐の処理がされる。
【００６９】
Ｓ１０２で一致するエントリがあった場合（ＹＥＳ）、次のＳ１０３で、Ｎto１セレクタ２７により送られるそのエントリのデータが２to１セレクタ２８により選択される。また、Ｓ１０２で一致するエントリがなかった場合（ＮＯ）、次のＳ１０４で第１のメモリ領域４からＣＰＵ２からの読み出しアドレスに該当するデータが２to１セレクタ２８により選択される。
【００７０】
最後のＳ１０５では、Ｓ１０３又はＳ１０４で選択したデータを読み出しデータとしてデータ側データバス１１を介してＣＰＵ２に出力する。
図１１は、第１実施形態のデータ退避装置３においてＣＰＵ２から書き込み要求があった場合の処理フローを示すフローチャートである。ＣＰＵ２から書き込み要求があった場合、次のステップで処理される。
【００７１】
まずＳ２０１で、ＣＰＵ２からの書き込みアドレスと待ち行列格納回路１９に格納されている待ち行列のエントリのアドレスとが比較される。Ｓ２０２で一致するエントリの有無により分岐の処理がされる。なお、この比較回路の構成については説明を省略したが、図６及び図７に示した同一読み出しアドレス判定回路２６と同一回路を共用して実現する。
【００７２】
Ｓ２０２で一致するエントリがあった場合（ＹＥＳ）、次のＳ２０３で、そのエントリのデータをＣＰＵ２からの書き込みデータに書き換える。この場合、新たにエントリを追加する処理はしない。
【００７３】
これに対して、Ｓ２０２で一致するエントリがなかった場合（ＮＯ）、次のＳ２０４で、ＣＰＵ２からの書き込み要求に応じた書き込み先アドレス及び書き込みデータを１組のエントリとして待ち行列に追加する。
【００７４】
図１２は、待ち行列格納回路１９の待ち行列にデータが書き込まれる動作のタイミングを示すタイミングチャートである。メモリ書き込み要求検出回路１８により書き込み要求の信号が検出されると、クロック信号に従って順次、データ側アドレスバス９からアドレスＡ１、Ａ２、Ａ３、Ａ４を、データ側データバス１１から書き込みデータＤ１、Ｄ２、Ｄ３、Ｄ４を取り出し、アドレス及びデータを１組のエントリとして待ち行列に格納していく。ここで、図１２に示すＰｔｒＲ及びＰｔｒＷは、それぞれ書き込み及び読み出しデータが格納される場所をポインタで示している。また、ＥＭＰＴＹは待ち行列が空か否かを検出する。
【００７５】
このタイミングチャートで、ＣＰＵ２から書き込み要求があった場合、待ち行列がフルの状態でなければ、すなわち空きがあれば、ＣＰＵ２はストールすることなく、書き込み処理を終了する。仮に、待ち行列がフルの状態であったとすれば、図示しないウエイト信号をＣＰＵ２に送ることにより、待ち行列に空きができるまでＣＰＵ２をストールさせる。
【００７６】
図１３は、データ退避装置３が退避動作を行うタイミングを示すタイミングチャートである。ＣＰＵアクセス検出回路２０が、ＣＰＵ２から読み出し要求及び書き込み要求のいずれもなされていない状態であることを検出し、ＣＰＵアクセス信号を待ち行列処理回路２１に送る。ＣＰＵアクセス検出回路２０からのＣＰＵアクセス信号によりＣＰＵ２からのアクセスがない状態が検出されると、待ち行列処理回路２１は、クロック信号に従って、まず、待ち行列からアドレスＡ１に格納されている読み出しデータＤ１’を読み出し、次のタイミングで、その読み出しデータＤ１’を退避用の第２のメモリ領域５に書き込むとともに、ＣＰＵ２から送られる書き込みデータＤ１を第１のメモリ領域４のアドレスＡ１に書き込む。
［１−４  本実施形態の効果］
以上説明したとおり、第１実施形態のデータ退避装置３によれば、ＣＰＵ２がデータの書き込み信号を送信するタイミングでデータの退避処理及び書き込み処理が行われるのではなく、書き込み先アドレス及び書き込みデータは、いったん待ち行列格納回路１９の待ち行列のエントリとして格納される。そのため、データの書き込みに伴って退避処理を行うためにＣＰＵ２がストールすることがなくなり、データの書き込み処理に伴う処理速度の低下を防止することができる。
【００７７】
また、ＣＰＵアクセス検出回路２０によりＣＰＵ２がアクセスを行なわない空きサイクルが検出され、そのサイクルを利用して退避処理及び書き込み処理が行われることになり（図１３）、待ち行列の処理待ちによる処理時間の増加もほとんど生じない。
【００７８】
したがって、データ退避装置３によれば、応答時間など時間制約の厳しい環境下であっても適切にデータの退避処理を実現することが可能になるという効果が得られる。
また、図４に示したようにＣＰＵアクセス検出回路２０は、データ側制御バス１０を介して送信される読み出し信号及び書き込み信号を監視することで、データの読み出し及び書き込みのいずれも行わない状態を容易に検出できる。この検出回路は１個のＮＯＲ素子２２により構成され、簡素かつ低コストで実現されている。
【００７９】
また本実施形態のデータ退避装置３は、データの読み出しについて、同一読み出しアドレス判定回路２６により待ち行列に格納されたデータをチェックする（Ｓ１０１、Ｓ１０２）。そのため、退避処理がなされていないデータが待ち行列に残っていたとしても、データの読み出し処理が適切に実行されるという効果が得られる。
【００８０】
また本実施形態のデータ退避装置３は、データの書き込みについて、待ち行列に格納されたデータをチェックして（Ｓ２０１、Ｓ２０２）、同一のアドレスがあれば組となっているデータを書き換える（Ｓ２０３、図９に示した回路）。これにより、待ち行列には１つのアドレスに対して１個の書き込み要求しかない状態を実現できる。そのため、同一のアドレスに対する複数の書き込みの中から、最新の書き込みデータを選択する機能が不要となり、小型の回路で構成できるという効果が得られる。
【００８１】
また本実施形態のＣＰＵアクセス検出回路２０内部の図５に示した回路によれば、ＣＰＵ２がアクセスする先をチェックすることにより、実際にはＣＰＵ２が第１のメモリ領域４にアクセスしないのに、アクセスがあると誤って検出されるのを防止できる。その結果、データ退避装置３が退避処理を実行できる機会が増えるので、待ち行列がいっぱいになり退避処理が間に合わなくなる状況を起こりにくくすることができる。
［１−５  特許請求の範囲との関係］
なお、第１実施形態のデータ退避装置３では、メモリ書き込み要求検出回路１８がメモリ書き込み検出手段、待ち行列格納回路１９が待ち行列格納手段、ＣＰＵアクセス検出回路２０がＣＰＵアクセス検出手段、待ち行列処理回路２１が待ち行列処理手段に相当する。
【００８２】
また、同一読み出しアドレス判定回路２６が同一読み出しアドレス判定手段、Ｎto１セレクタ２７及び２to１セレクタ２８が読み出しデータ送信手段に相当し、Ｓ２０１及びＳ２０２を実行する図示しない比較回路が同一書き込みアドレス判定手段、図９に示したデジタル回路を含むデータ退避装置３がデータ書き換え手段に相当する。
［２  第２実施形態］
次に、第２実施形態のマイコンについて説明する。
［２−１  第１実施形態との相違点］
図１４は、第２実施形態としてのマイコンが備えるデータ退避装置３を示すブロック図である。第２実施形態としてのデータ退避装置３は、第１実施形態のデータ退避装置３に退避済みデータ判定回路３３及び退避済みアドレスリスト３４を付け加えたものであり、その他の構成は第１実施形態と同様である。
【００８３】
退避済みデータ判定回路３３は、待ち行列処理回路２１及び退避済みアドレスリスト３４に接続され、各種データのやりとりを行う。退避済みアドレスリスト３４には、データ退避装置３がデータの退避を行なった際に、図示しないバスを介して、そのデータが格納されていた第１のメモリ領域４内のアドレスが、退避済みとなったアドレスとして格納されている。
【００８４】
そして、退避済みデータ判定回路３３は、待ち行列格納回路１９に格納されたエントリを処理する際に、書き込み先のアドレスが退避済みアドレスリスト３４に格納されているか否かをチェックする。
［２−２  処理フロー］
次に、第２実施形態の処理フローを説明する。第２実施形態では、待ち行列処理回路２１は、各エントリの処理を行う際、処理すべきエントリのアドレスを退避済みデータ判定回路３３に送り、退避済みデータ判定回路３３による判定が終わるまで待機する。判定結果（未退避/退避済み）によって退避動作を行うか否かが判定される。
【００８５】
図１５は、退避済みデータ判定回路３３により行われる判定処理を示すタイミングチャートである。
退避済みデータ判定回路３３により待ち行列処理回路２１から送られるアドレスと退避済みアドレスリスト３４に格納されたアドレスとを比較して一致するアドレスがあるか否かが判定される。退避済みアドレスリスト３４に格納されたアドレスに一致するアドレスがなく、判定結果が未退避と判定される場合(a)、第２のメモリ領域５に対する退避動作が行われる。退避済みと判定される場合(b)、判定の結果、退避済みを示す信号がオンになり新たな退避動作は行わない。
［２−３  効果］
第２実施形態のデータ退避装置３は、退避済みのデータが多い場合にデータの探索に時間がかかるのを防止するものである。すなわちデータ退避装置３は一定のチェックポイントにおける退避データを再現できれば十分であり、あるチェックポイントの後にいったんデータが退避されれば、そのデータが格納されているアドレスについて、次のチェックポイントの前にさらにデータを退避する必要はない。
【００８６】
第２実施形態のデータ退避装置３によれば、既に退避されているデータを改めて退避する処理を省くことができるので、その分、待ち行列の処理を進めることができるという効果が得られる。
［２−４  特許請求の範囲との関係］
なお第２実施形態のデータ退避装置３では、退避済みアドレスリスト３４がアドレスリスト格納手段、退避済みデータ判定回路３３が同一退避アドレス判定手段に相当する。
［３  第３実施形態］
次に、第３実施形態のマイコンについて説明する。
［３−１  第１実施形態との相違点］
第３実施形態のマイコンは、データ退避装置３の待ち行列格納回路１９に格納される待ち行列のデータ構造が第１実施形態と異なる。具体的には、図１６に示すように、待ち行列の各エントリには、データ値、アドレス値に加えて、エントリが有効か無効かを示すタグが設けられている。なお、図１６の例では、各エントリのタグとして、エントリの有効を示すデータ（Ｖａｌｉｄ）が記憶されている。
【００８７】
図１７は、第３実施形態のデータ退避装置３においてＣＰＵ２から書き込み要求があった場合の処理フロー示すフローチャートである。Ｓ３０２でエントリの有無が判定されるまでは、図１１の処理フローと同様である。
【００８８】
Ｓ３０２で一致するエントリがあった場合、Ｓ３０３では、データを書き換えるのではなく、一致するエントリのタグにエントリの無効を示すデータを格納する。Ｓ３０３の処理の後、及びＳ３０２で一致するエントリがなかった場合、Ｓ３０４でＣＰＵ２からの書き込み要求に対応するアドレス及びデータを１組のエントリとして、待ち行列格納回路１９の待ち行列に追加する。このときのエントリのタグは有効とされる。
【００８９】
なお、第３実施形態の待ち行列処理回路２１は、エントリのタグに無効を示すデータが書き込まれているときは、そのエントリに対して何の処理も行わず、次のエントリを待ち行列から取り出して処理を行う。
［３−２  効果］
第３実施形態の待ち行列処理回路２１によれば、エントリの有効タグの操作でエントリを無効とすることができるので、待ち行列中のデータを書き換えるための機能を設ける必要がなくなり、高速動作する小型の回路を構成できるという効果が得られる。
［４  第４実施形態］
次に、第４実施形態のマイコンについて説明する。
［４−１  第１実施形態との相違点］
第４実施形態のマイコンは、データ退避装置３におけるＣＰＵアクセス検出回路２０の内部構成が第１実施形態と異なる。図１８は、第４実施形態のＣＰＵアクセス検出回路２０の内部構成を説明するデジタル回路図である。このＣＰＵアクセス検出回路２０は、並列のフリップフロップ３５、メモリアクセス命令判別回路３６、２段の直列のフリップフロップ３７から構成される。並列のフリップフロップ３５は命令側制御バス７を入力としてメモリアクセス命令判別回路３６に結果を出力する。メモリアクセス命令判別回路３６は並列のフリップフロップ３５からの出力を入力として直列のフリップフロップ３７にデータを送る。直列のフリップフロップ３７はメモリアクセス命令判別回路３６からのデータを入力して、後述する回路（図２０）を通じて待ち行列処理回路２１にデータを送る。
【００９０】
第１実施形態ではＣＰＵアクセス検出回路２０は、データ側制御バス１０を介してＣＰＵ２から送られる信号を検出していたが、この第４実施形態では、ＲＯＭ１とＣＰＵ２とを接続する命令側バスの信号を検出する。すなわちこの第４実施形態では、命令側制御バス７からＣＰＵ２に対する制御信号が並列のフリップフロップ３５に送信される。そして、メモリアクセス命令判別回路３６は、並列のフリップフロップ３５から送られる信号からデータの読み出し又は書き込みの要求が行われるか否かを判別し、その結果を直列のフリップフロップ３７に出力する。
【００９１】
図１９は、第４実施形態で用いるＣＰＵ２のパイプライン処理を示す説明図である。
このパイプライン処理では、ＩＦ(Instruction Fetch)で、命令信号を命令キャッシュから読み出し、ＤＥＣ(Instruction Decode/register read)で、ＣＰＵ２から送られる制御信号を生成し、図示しないレジスタ・ファイルをレジスタ指定子で参照する。そして、ＥＸＥ(EXecution/address calculation)で、数値の計算、データやアドレス・分岐先の計算を行い、ＭＡ(Memory Access)で、データの読み出し又はデータの書き込みを実行する。ＷＢ(Write Back)では、図示しないレジスタにデータを書き込む。
【００９２】
そして、ＣＰＵアクセス検出回路２０は、ＩＦで制御信号がＣＰＵ２に送信され、並列のフリップフロップ３５に制御信号が取り込まれてから、３サイクル後、すなわちＭＡステージに相当するサイクルで、メモリアクセス命令判別回路３６の検出信号が出力されるように設計されている。具体的には、並列のフリップフロップ３５で制御信号が取り込まれて、次のサイクルで、メモリアクセス命令判別回路３６により、データの読み出し又は書き出し信号が送られるのか否かが判別される。そして、２段の直列のフリップフロップ３７により、さらに２サイクル後に検出信号が出力される。
【００９３】
なお、ここでは、ＩＦから３サイクル後にＭＡが来るパイプライン処理について、デジタル回路を実現したが、サイクル数に応じて、直列のフリップフロップの数を変更すれば、いかなるパイプライン処理にも対応することができる。
【００９４】
図２０は、第４実施形態のＣＰＵアクセス検出回路２０の一部を示したデジタル回路図である。この回路は、アドレスデコード回路２４、ＡＮＤ素子２５及び２段の直列のフリップフロップ３７から構成される。この回路は、図１８に示したメモリアクセス命令判別回路３６からの入力となっており、２段の直列のフリップフロップ３７に出力されている点を除けば、図５に示したデジタル回路と同様の構成である。
［４−２  効果］
第４実施形態のデータ退避装置３によれば、ＣＰＵ２がメモリにアクセスする前に命令側制御バス７を監視して、ＣＰＵ２がメモリへアクセスするかどうかを判定するため、メモリへのアクセスの開始直後から退避処理を実行することが可能となる。このことによりＣＰＵ２がメモリへの読み出し及び書き出し信号を送信した後にＣＰＵのアクセスを判定する第１実施形態のデータ退避装置３に比べて、クロックの周波数を高くすることが可能となり、処理の高速動作を実現できるという効果を得ることができる。
［５  第５実施形態］
次に、第５実施形態のマイコンについて説明する。
［５−１  第１実施形態との相違点］
第５実施形態のマイコンは、ＣＰＵ２から読み出し要求があった場合にデータ退避装置３が実行する処理フローの内容が第１実施形態と異なる。図２１は、第５実施形態において、ＣＰＵ２から読み出し要求があった場合の処理フローを示すフローチャートである。
【００９５】
ＣＰＵ２からの読み出し要求があった場合、Ｓ４０１で、ＣＰＵ２からの読み出しアドレスと待ち行列格納回路１９に格納されている待ち行列のアドレスとが比較されるのは、図１０で示した処理フローと同様であるが、この処理では同時にＳ４０２の処理も行う。すなわち、Ｓ４０２では、一致するエントリがあるか否かに関わらず、第１のメモリ領域４から予めデータを読み出しておく。その他の処理フローは図１０の処理フローと同様である。
［５−２  効果］
第５実施例では、ＣＰＵアクセス検出回路２０がデータの読み出しを行うことを検出すると、待ち行列に同一のアドレスがあるか否かにかかわらず、予め読み出しデータを第１のメモリ領域４から取り出して準備しておくため、待ち行列に同一のアドレスがなかった場合でも迅速に読み出しデータをＣＰＵ２に送信することが可能となり、読み出し処理の高速化が実現できるという効果がある。
［６  第６実施形態］
次に、第６実施形態のマイコンについて説明する。
［６−１  第１実施形態との相違点］
第６実施形態のマイコンは、ＣＰＵ２から読み出し要求があった場合にデータ退避装置３が実行する処理フローの内容が第１実施形態と異なる。図２２は、第６実施形態において、ＣＰＵ２から読み出し要求があった場合の処理フローを示すフローチャートである。
【００９６】
この処理フローでは、第５実施形態の処理フロー（図２１）にＳ５０５の処理が加えられている。すなわち、Ｓ５０３で一致するエントリがあるとされた場合、Ｓ５０４で一致するエントリのデータを選択するところまでは、図２１の処理フローと同様であるが、さらにＳ５０５で、一致するエントリのうちで最新のエントリが選択される。他の処理フローは図２１に示したものと同様である。
【００９７】
なおこの点、第１実施形態のように、データの書き込み処理の段階で待ち行列に格納されたデータをチェックし、同一のアドレスがあれば組となっているデータを書き換えておけば、待ち行列には１つのアドレスに対して１個の書き込み要求しかない状態となっており、あえて読み出し処理としてＳ５０５を設ける必要はない。したがって、この第６実施形態は、書き込み処理の段階で、待ち行列内のアドレスをチェックする等の処理を行なっておらず、待ち行列内に同一アドレスに対して複数のエントリが存在していることを前提としている。
［６−２  効果］
第６実施形態のデータ退避装置３によれば、待ち行列に同一のアドレスで複数の書き込みデータが格納されていた場合でも最も新しいデータを読み出すことができるので、適切なデータの読み出しができるという効果が得られる。
［６−３  特許請求の範囲との関係］
第６実施形態のＳ４０５を実現する待ち行列処理回路２１が同一アドレス選択手段に相当する。
［７  他の形態］
以上、本発明の実施形態について説明したが、本発明は、記載した実施形態に限られるものではなく種々の形態を採り得る。
【００９８】
例えば、本実施形態ではマイコンの構成を前提としたが、何らかのメモリ領域とデータの読み出し及び書き込みを実行するシステムであれば、どのようなものであっても応用できる。すなわち、コンピュータに内蔵又は外付けされたハードディスクとデータのやりとりをする場合、ローカルエリア又は広域エリアのネットワークを通じてサーバとなっている記憶領域にアクセスするような場合などである。
【００９９】
また、本実施形態では主にデジタル回路による実現を前提としたが、同様の処理をソフトウエアにより実現することも可能である。
【図面の簡単な説明】
【０１００】
【図１】第１実施形態としてのマイコンの構成を示すブロック図である。
【図２】データ退避装置の内部構成を示すブロック図である。
【図３】待ち行列格納回路に格納されるデータ構造を示す説明図である。
【図４】ＣＰＵアクセス検出回路の入力に近い前半部分を示したデジタル回路図である。
【図５】ＣＰＵアクセス検出回路の出力に近い後半部分を示したデジタル回路図である。
【図６】待ち行列処理回路の内部構成の一部を示すブロック図である。
【図７】同一読み出しアドレス判定回路の内部構成を示すブロック図である。
【図８】選択信号生成回路が実現する真理値表を示した説明図である。
【図９】待ち行列処理回路の内部構成の一部を示すブロック図である。
【図１０】データ退避装置においてＣＰＵから読み出し要求があった場合の処理フローを示すフローチャートである。
【図１１】データ退避装置においてＣＰＵから書き込み要求があった場合の処理フローを示すフローチャートである。
【図１２】待ち行列格納回路の待ち行列にデータが書き込まれる動作のタイミングを示すタイミングチャートである。
【図１３】データ退避装置が退避動作を行うタイミングを示すタイミングチャートである。
【図１４】第２実施形態としてのデータ退避装置を示すブロック図である。
【図１５】退避済みデータ判定回路により行われる判定処理を示すタイミングチャートである。
【図１６】第３実施形態として、待ち行列格納回路に格納される待ち行列のデータ構造を示す説明図である。
【図１７】第３実施形態のデータ退避装置においてＣＰＵから書き込み要求があった場合の処理フローを示すフローチャートである。
【図１８】第４実施形態としてのＣＰＵアクセス検出回路の内部構成を説明するデジタル回路図である。
【図１９】第４実施形態で用いるＣＰＵのパイプライン処理を示す説明図である。
【図２０】第４実施形態のＣＰＵアクセス検出回路の一部を示したデジタル回路図である。
【図２１】第５実施形態において、ＣＰＵから読み出し要求があった場合の処理フローを示すフローチャートである。
【図２２】第６実施形態において、ＣＰＵから読み出し要求があった場合の処理フローを示すフローチャートである。
【符号の説明】
【０１０１】
１…ＲＯＭ、２…ＣＰＵ、３…データ退避装置、４…第１のメモリ領域、５…第２のメモリ領域、６…命令側アドレスバス、７…命令側制御バス、８…命令側データバス、９…データ側アドレスバス、１０…データ側制御バス、１１…データ側データバス、１２…第１メモリ側アドレスバス、１３…第１メモリ側制御バス、１４…第１メモリ側データバス、１５…第２メモリ側アドレスバス、１６…第２メモリ側制御バス、１７…第２メモリ側データバス、１８…メモリ書き込み要求検出回路、１９…待ち行列格納回路、２０…ＣＰＵアクセス検出回路、２１…待ち行列処理回路、２２…ＮＯＲ素子、２３…出力線、２４…アドレスデコード回路、２５…ＡＮＤ素子、２６…同一読み出しアドレス判定回路、２７…Ｎto１セレクタ、２８…２to１セレクタ、２９…コンパレータ、３０…選択信号生成回路、３１…データ書き換え回路、３２…ＯＲ素子、３３…退避済みデータ判定回路、３４…退避済みアドレスリスト、３５…並列のフリップフロップ、３６…メモリアクセス命令判別回路、３７…直列のフリップフロップ
【図１】
2009181422.tif 000003
【図２】
2009181422.tif 000004
【図３】
2009181422.tif 000005
【図４】
2009181422.tif 000006
【図５】
2009181422.tif 000007
【図６】
2009181422.tif 000008
【図７】
2009181422.tif 000009
【図８】
2009181422.tif 000010
【図９】
2009181422.tif 000011
【図１０】
2009181422.tif 000012
【図１１】
2009181422.tif 000013
【図１２】
2009181422.tif 000014
【図１３】
2009181422.tif 000015
【図１４】
2009181422.tif 000016
【図１５】
2009181422.tif 000017
【図１６】
2009181422.tif 000018
【図１７】
2009181422.tif 000019
【図１８】
2009181422.tif 000020
【図１９】
2009181422.tif 000021
【図２０】
2009181422.tif 000022
【図２１】
2009181422.tif 000023
【図２２】
2009181422.tif 000024