(57)【要約】【課題】数値演算処理を周期的に行うシステムにおいて演算結果データのコピー処理を削減できるデータ記憶処理装置およびこれを備えたデータ記憶装置を提供する。【解決手段】演算周期フラグ信号Ｓ２を生成する回路３と、演算周期フラグ信号を反転した信号を生成するＮｏｔ回路８と、これらの両信号Ｓ２とＳ１２を切り替えて演算周期フラグ出力信号Ｓ１３を出力する回路７と、アドレス最下位ビットと前記演算周期フラグ出力信号Ｓ１３を切り替えてアドレス出力信号Ｓ４を出力する回路４と、アドレス最上位ビットＡｄｄｒ［ｎ＋１］Ｓ２５を利用して前記切り替え回路４を切り替える信号を生成するデコード回路５と、を備え、アドレスバス信号Ａｄｄｒ［ｎ：１］Ｓ６に前記アドレス出力信号Ｓ４をアドレス最下位ビットとして組み合わせた信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリ２へ出力するようにした。【選択図】    図１
2004246678.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと該マイクロプロセッサにて処理された演算結果データを格納するメモリとの間に接続されて数値演算処理を周期的に行うデータ記憶処理装置であって、
演算周期毎にトグルする演算周期フラグ信号Ｆｌａｇ（Ｓ２）を生成する演算周期フラグ生成回路（３）と、
前記演算周期フラグ信号Ｆｌａｇ（Ｓ２）を反転した、演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を生成するＮｏｔ回路（８）と、
前記演算周期フラグ信号Ｆｌａｇ（Ｓ２）と演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を、読み出し信号Ｒｄ＊（Ｓ１０）にて切り替え、演算周期フラグ出力信号（Ｓ１３）を出力するマルチプレクサＭＵＸ２（７）と、
マイクロプロセッサからのアドレス最下位ビットと前記演算周期フラグ出力信号（Ｓ１３）を、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）にて切り替え、アドレス出力信号（Ｓ４）を出力するマルチプレクサＭＵＸ１（４）と、
マイクロプロセッサからのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）を利用して前記マルチプレクサＭＵＸ１（４）を切り替えるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を生成するデコード回路（５）と、を備え、
マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｎ：１］（Ｓ６）に前記アドレス出力信号（Ｓ４）をアドレス最下位ビットとして組み合わせたアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリ（２）へ出力することを特徴とするデータ記憶処理装置。
【請求項２】
前記デコード回路（５）は、メモリへのチップ選択信号Ｃｓ＊（Ｓ１１）がアクティブとなり前記アドレス最上位ビットＡｄｄｒが１の時、前記アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となるように動作する回路であり、該アドレス切り替え有効信号Ｅｎｂ（Ｓ３）の１によって、マイクロプロセッサからは通常のメモリアクセスを不可能とし、メモリ内部をダブルバッファ構成としたメモリアクセスを可能とすることを特徴とする請求項１記載のデータ記憶処理装置。
【請求項３】
マイクロプロセッサと該マイクロプロセッサにて処理された演算結果データを格納するメモリとの間に接続されて数値演算処理を周期的に行うデータ記憶処理装置であって、
カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を生成するｍ＋１ビットの演算周期カウンタ回路（１０）と、
前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を減算したカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を生成する減算回路（９）と、
前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）とカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を、読み出し信号Ｒｄ＊（Ｓ１０）にて切り替え、カウントデータ出力信号（Ｓ２３）を出力する多ビットマルチプレクサＭＵＸ２（１７）と、
マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｍ：０］と前記カウントデータ出力信号（Ｓ２３）を、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）にて切り替え、アドレス出力信号（Ｓ２４）を出力する多ビットマルチプレクサＭＵＸ１（１６）と、
マイクロプロセッサからのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）を利用して前記多ビットマルチプレクサＭＵＸ１（１６）を切り替えるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を生成するデコード回路（５）と、を備え、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｎ：ｍ＋１］（Ｓ２２）に前記アドレス出力信号（Ｓ２４）を下位ビットとして組み合わせたアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリへ出力することを特徴とするデータ記憶処理装置。
【請求項４】
前記デコード回路（５）は、メモリへのチップ選択信号Ｃｓ＊（Ｓ１１）がアクティブとなり前記アドレス最上位ビットＡｄｄｒが１の時、前記アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となるように動作する回路であり、該アドレス切り替え有効信号Ｅｎｂ（Ｓ３）の１によって、メモリ内部を２ｍ＋１の深さをもつリングバッファ構成とし前回周期より以前の演算結果データを利用することを可能とすることを特徴とする請求項３記載のデータ記憶処理装置。
【請求項５】
請求項１又は２記載のデータ記憶処理装置とメモリとを備え、前記データ記憶処理装置からのアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）を前記メモリへ出力したことを特徴とするデータ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、数値演算処理を周期的に行うデータ記憶処理装置およびこれを備えたデータ記憶装置に関するものである。
【０００２】
【従来の技術】
従来の技術としてデータ記憶処理に関するものとしては、種々のものが知られている（例えば、特許文献１および２参照）。
【０００３】
【特許文献１】
特開平１１−１６７５４７号公報（図１）
【特許文献２】
特開２０００−１１５５２５号公報（図２０）
【０００４】
特許文献１記載の発明は、処理速度を向上させるディジタル信号処理を行うもので、複数チャンネルシリアルポート、ＤＭＡインタフェースおよびタイマをオンチップ周辺装置として、ＣＰＵと外部装置との間のデータ転送を行うＤＭＡ転送速度を読み取りおよび書き込みで独立して制御し、転送に際して要求する初期化および監視の量を削減するようにしたものである。
また、特許文献２記載の発明は、画像処理回路内のメモリ容量を効果的に削減できるようにするもので、そのために原画像データを受信し、原画像データに外部から供給される制御信号に応じた処理を施して出力するデータ処理部と、このデータ処理部が出力する画像データを記憶する記憶手段を有する画像処理装置であって、データ処理部が、画像データの空間解像度及び／又は階調度を削減して出力するとともに、記憶手段が所定の記憶容量を有する複数の記憶素子手段を有し、データ処理部の処理に応じて複数の記憶素子手段に対するデータの書き込み及び読み出し方法を変えるようにしたものである。
しかしながら、上記公知の発明は、いずれも数値演算処理を周期的に行う機器を対象にしたものではない。したがって周期毎の演算結果データを次周期にて使用する処理を行なうといった特殊性については何も記載されていない。
【０００５】
一方、数値演算処理を周期的に行う従来システムのソフトウェアによるデータ記憶処理としては、図６〜図９に示したものがある。
図６は従来システムのソフトウェアによるデータ記憶処理フローを、図７はその処理フローのプログラム例を、図８は従来のデータ記憶装置の第１実施例を、図９は従来のデータ記憶装置の第２実施例をそれぞれ示すものである。
数値演算処理を周期的に行うシステムでは、周期毎の演算結果データを次周期にて使用する処理が行われる。図６の処理フローに従い説明すると、まず、システムの初期化（１１）を行い、リアルタイムクロック回路（１８）を動作させるためリアルタイムクロック有効処理（２０）を行った後、マイクロプロセッサは割込み待ち状態（１９）となる。
その後、リアルタイムクロック信号ＲＴＣ（Ｓ１）が割込み信号ＩＮＴ（Ｓ２７）としてマイクロプロセッサに入力され、前回演算結果データ読み出し処理（１２）を行い、前回演算結果データを使用する数値演算処理（１３）が行われ、今回演算結果データ書き込み処理（１４）が実行される。
最後に、次周期にて今回周期の演算結果データを利用するために今回演算結果データコピー処理（１５）が行われている。
図７に示すように、プログラム処理の最後では３つの変数について、  ＸをＸ＿ｏｌｄ、ＹをＹ＿ｏｌｄ、ＺをＺ＿ｏｌｄにコピー処理していることが分かる。
【０００６】
従来システムのハードウェア構成は、図８に示すような一般的な構成となっている。
図８において、１は数値演算処理を周期的に行うマイクロプロセッサ、２はマイクロプロセッサの変数データを格納するメモリ、１８はリアルタイムクロック回路である。
マイクロプロセッサ（１）とメモリ（２）は、数値データを送るためのデータバス（Ｓ８）、メモリアドレスを決定する情報を送るアドレスバス（Ｓ１４）、およびメモリ制御信号として、チップ選択信号Ｃｓ＊（Ｓ１１）、書き込み信号Ｗｒ＊（Ｓ９）、読み出し信号Ｒｄ＊（Ｓ１０）にて接続されている。
マイクロプロセッサ（１）からメモリ（２）へデータを書き込む場合は、メモリアドレスをアドレスバス（Ｓ１４）に、データをデータバス（Ｓ８）にセットすると同時に、チップ選択信号Ｃｓ＊（Ｓ１１）をアクティブにして、書き込み信号Ｗｒ＊（Ｓ９）のエッジにて書き込みを完了する。
また、メモリ（２）からの読み出しの場合は、メモリアドレスをアドレスバス（Ｓ１４）にセットし、チップ選択信号Ｃｓ＊（Ｓ１１）と読み出し信号Ｒｄ＊（Ｓ１０）をアクティブにすることで、メモリからデータを読み出すことができる。
さらに、マイクロプロセッサ（１）とリアルタイムクロック回路（１８）は、リアルタイムクロック有効信号ｒｔｃ＿ｅｎ（Ｓ２６）と、リアルタイムクロック信号ＲＴＣ（Ｓ１）にて接続されている。システムの初期化が完了した際には、マイクロプロセッサはリアルタイムクロック有効信号ｒｔｃ＿ｅｎ（Ｓ２６）を有効とし、リアルタイムクロック回路（１８）を動作させる。リアルタイムクロック回路（１８）から出力されるリアルタイムクロック信号ＲＴＣ（Ｓ１）により、マイクロプロセッサは数値演算処理を周期的に行うことになる。
演算結果データのコピー処理を行う場合は、Ｘのデータが格納されているメモリアドレスからデータを読み出し、Ｘ＿ｏｌｄとして別のメモリアドレスへ書き込み処理を行う。これら処理をＹ＿ｏｌｄやＺ＿ｏｌｄについても行うものである。
【０００７】
また、図９に示すように、メモリを２ブロック設置して、今回周期の演算結果データと前回周期の演算結果データを格納する構成もある。この際は、各メモリへのチップ選択信号Ｃｓ０＊（Ｓ１５）およびチップ選択信号Ｃｓ１＊（Ｓ１６）が必要となる。
【０００８】
【発明が解決しようとする課題】
ところが、従来技術のように周期毎の数値演算処理完了時に演算結果データのコピー処理を行う場合、このコピー処理が必要な変数が多くなるとシステム性能の低下につながる。特にマイクロプロセッサの外部にメモリを設置したシステムでは、使われるメモリのアクセス時間により性能が左右される。このため、システム性能の向上を考えると、マイクロプロセッサの外部メモリへのアクセスを高速にする必要がある。
しかし、高速マイクロプロセッサや高速メモリの利用は、システムが高価となることや、高速に動作するデバイスからの発熱などの問題を引き起こしてしまう。
したがって、本発明の目的は、数値演算処理を周期的に行うシステムにおいて、システム性能を向上させるため、演算結果データのコピー処理を削減するハードウェア構成を有するデータ記憶処理装置およびそのデータ記憶装置を提供することである。
【０００９】
【課題を解決するための手段】
上記問題を解決するため、請求項１記載のデータ記憶処理装置の本発明は、マイクロプロセッサと該マイクロプロセッサにて処理された演算結果データを格納するメモリとの間に接続されて数値演算処理を周期的に行うデータ記憶処理装置であって、演算周期毎にトグルする演算周期フラグ信号Ｆｌａｇ（Ｓ２）を生成する演算周期フラグ生成回路（３）と、前記演算周期フラグ信号Ｆｌａｇ（Ｓ２）を反転した、演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を生成するＮｏｔ回路（８）と、前記演算周期フラグ信号Ｆｌａｇ（Ｓ２）と演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を、読み出し信号Ｒｄ＊（Ｓ１０）にて切り替え、演算周期フラグ出力信号（Ｓ１３）を出力するマルチプレクサＭＵＸ２（７）と、マイクロプロセッサからのアドレス最下位ビットと前記演算周期フラグ出力信号（Ｓ１３）を、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）にて切り替え、アドレス出力信号（Ｓ４）を出力するマルチプレクサＭＵＸ１（４）と、マイクロプロセッサからのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）を利用して前記マルチプレクサＭＵＸ１（４）を切り替えるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を生成するデコード回路（５）と、を備え、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｎ：１］（Ｓ６）に前記アドレス出力信号（Ｓ４）をアドレス最下位ビットとして組み合わせたアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリ（２）へ出力することを特徴とする。
請求項２記載の発明は、請求項１記載のデータ記憶処理装置において、前記デコード回路（５）が、メモリへのチップ選択信号Ｃｓ＊（Ｓ１１）がアクティブとなり前記アドレス最上位ビットＡｄｄｒが１の時、前記アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となるように動作する回路であり、該アドレス切り替え有効信号Ｅｎｂ（Ｓ３）の１によって、マイクロプロセッサからは通常のメモリアクセスを不可能とし、メモリ内部をダブルバッファ構成としたメモリアクセスを可能とすることを特徴とする。
【００１０】
上記の構成によれば、マイクロプロセッサ（１）がアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）が１である同一のメモリアドレスへ演算結果データを書き込みしようとしても、そのアドレスの最下位ビットを、演算周期フラグ生成回路（３）から出力される演算周期フラグ信号Ｆｌａｇ（Ｓ２）と置きかえることで、周期毎に異なるメモリアドレスへ演算結果データを書き込むことが可能となる。これは読み出しの場合においても演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を利用して同様に行われ、周期毎に異なるメモリアドレスから演算結果データを読み出すことになる。また、アドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）が０であれば、利用するメモリは通常のメモリアドレスへアクセス可能である。
すなわち、マイクロプロセッサ（１）からのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）が１の場合、メモリ内部の変数領域をダブルバッファの構成とすることができ、今回周期の演算結果データが書き込まれるアドレスと、前回周期の演算結果データが読み出されるアドレスは、周期毎に交換されてメモリアドレスの指定を行える。これにより、従来行っていた演算結果データのコピー処理を削除することができる。
これは、高速マイクロプロセッサや高速メモリの使用を避けることができ、コストや発熱の低減につながるものである。
また、本発明によれば、メモリ全体をダブルバッファの構成にすることができると同時に、システムにて使用する変数の個数分だけをダブルバッファ構成のメモリとして、残りはアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）を０として通常のメモリとして使用することも可能である。つまり、メモリ内部を使う用途によって柔軟に容量設定できるため、メモリの効率的な利用が可能となる。
【００１１】
請求項３記載のデータ記憶処理装置の発明は、マイクロプロセッサと該マイクロプロセッサにて処理された演算結果データを格納するメモリとの間に接続されて数値演算処理を周期的に行うデータ記憶処理装置であって、カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を生成するｍ＋１ビットの演算周期カウンタ回路（１０）と、前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を減算したカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を生成する減算回路（９）と、前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）とカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を、読み出し信号Ｒｄ＊（Ｓ１０）にて切り替え、カウントデータ出力信号（Ｓ２３）を出力する多ビットマルチプレクサＭＵＸ２（１７）と、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｍ：０］と前記カウントデータ出力信号（Ｓ２３）を、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）にて切り替え、アドレス出力信号（Ｓ２４）を出力する多ビットマルチプレクサＭＵＸ１（１６）と、マイクロプロセッサからのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）を利用して前記多ビットマルチプレクサＭＵＸ１（１６）を切り替えるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を生成するデコード回路（５）と、を備え、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｎ：ｍ＋１］（Ｓ２２）に前記アドレス出力信号（Ｓ２４）を下位ビットとして組み合わせたアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリへ出力することを特徴とする。
請求項４記載の発明は、請求項３記載のデータ記憶処理装置において、前記デコード回路（５）が、メモリへのチップ選択信号Ｃｓ＊（Ｓ１１）がアクティブとなり前記アドレス最上位ビットＡｄｄｒが１の時、前記アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となるように動作する回路であり、該アドレス切り替え有効信号Ｅｎｂ（Ｓ３）の１によって、メモリ内部を２ｍ＋１の深さをもつリングバッファ構成とし前回周期より以前の演算結果データを利用することを可能とすることを特徴とする。
【００１２】
上記構成によれば、マイクロプロセッサ（１）が同一のメモリアドレスへ演算結果データを書き込みしようとしても、そのアドレスの下位からｍ＋１ビットまでを演算周期カウンタ回路（１０）から出力されるカウントデータＣｎｔ［ｍ：０］（Ｓ２０）と置きかえることで、周期毎に異なるメモリアドレスへ演算結果データを書き込むことが可能となる。
これは読み出しの場合においても同様であり、周期毎に異なるメモリアドレスから演算結果データを読み出すことになる。すなわち、マイクロプロセッサ（１）からのアドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）が１の場合、メモリ内部の変数領域を２ｍ＋１の深さをもつリングバッファの構成とし、変数データの書き込みと読み出しを行うことができる。これにより、演算結果データのコピー処理を削除することと同時に、前回周期より以前の演算結果データを利用することが可能となる。尚、アドレス最上位ビットＡｄｄｒ［ｎ＋１］（Ｓ２５）が０の場合は、通常のメモリアクセスを行うことになる。
【００１３】
請求項５記載のデータ記憶装置の発明は、請求項１又は２記載のデータ記憶処理装置とメモリとを備え、前記データ記憶処理装置からのアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）を前記メモリへ出力したことを特徴とする。
本発明によれば、メモリ全体をダブルバッファの構成にすることができると同時に、システムにて使用する変数の個数分だけをダブルバッファ構成のメモリとして、残りは通常のメモリとして使用することも可能であるので、メモリ内部を使う用途によって柔軟に容量設定でき、メモリの効率的な利用が可能となる。
あるいはメモリ内部の変数領域を２ｍ＋１の深さをもつリングバッファの構成にすることで、演算結果データのコピー処理を削除することと同時に、前回周期より以前の演算結果データを利用することが可能となるので、マイクロプロセッサのメモリへのアクセス回数を削減でき、システム性能の向上となり、高速マイクロプロセッサや高速メモリの使用を避けることができ、コストや発熱の低減に寄与する。
【００１４】
【発明の実施の形態】
以下、本発明について図に基づいて詳細に説明する。
［第１の実施の形態］
図１は本発明の第１の実施形態となるデータ記憶装置の構成図、図２はタイミングチャートを示す図である。
ここの説明では、マイクロプロセッサからメモリへバイトアクセスする場合についてのみ説明する。１６ｂｉｔワードアクセスや３２ｂｉｔロングワードアクセスする場合については、マイクロプロセッサからメモリへ接続する最下位アドレスビットＡｄｄｒ［０］がそれぞれＡｄｄｒ［１］、Ａｄｄｒ［２］に変更される以外は同様の回路である。
また、図１におけるマイクロプロセッサから出力されるアドレスＡｄｄｒ［ｎ＋１：０］はｎ＝７とし、Ａｄｄｒ［８：０］にて説明を行う。さらに、図２のタイミングチャートは、Ｘ［０］，Ｘ［１］のメモリアクセスについて示したものである。
【００１５】
図１と図２に基づいて本発明の構成について説明する。
図１において、１はマイクロプロセッサ、２はマイクロプロセッサ１にて処理された演算結果データを格納するメモリ、６はデータ記憶装置である。データ記憶装置（６）はメモリ（２）とこのメモリ（２）のデータ記憶処理をする第１の実施の形態に係るデータ記憶処理装置（６’）とから構成され、データ記憶処理装置（６’）はマルチプレクサＭＵＸ（４）、デコード回路（５）、データ記憶装置（６）、マルチプレクサＭＵＸ（７）、Ｎｏｔ回路（８）で構成されている。
また、各信号については、Ｓ１はリアルタイムクロック信号ＲＴＣ、Ｓ２は演算周期フラグ信号Ｆｌａｇ、Ｓ３はアドレス切り替え有効信号Ｅｎｂ、Ｓ４はアドレス出力信号、Ｓ５はアドレスバス信号Ａｄｄｒ［ｎ＋１：０］、Ｓ６は  アドレスバス信号Ａｄｄｒ［ｎ：１］、Ｓ７はアドレスバス信号Ａｄｄｒ［ｎ：０］、Ｓ８はデータバスＤａｔａ、Ｓ９は書き込み信号Ｗｒ＊  、Ｓ１０は読み出し信号Ｒｄ＊  、Ｓ１１はチップ選択信号Ｃｓ＊  、Ｓ１２は演算周期フラグ反転信号！Ｆｌａｇ、Ｓ１３は演算周期フラグ出力信号、Ｓ２５はアドレス最上位ビットＡｄｄｒ［ｎ＋１］、Ｓ２６はリアルタイムクロック有効信号ｒｔｃ＿ｅｎである。
次に、図１と図２に基づいて動作について説明する。
まず、システムに電源が投入された際、マイクロプロセッサ（１）は、メモリ（２）内部の全データについて初期化（数値０の書き込み）を行う。この初期化の際には、アドレス最上位ビットＡｄｄｒ［８］を０とし、デコード回路（５）からのアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を０とすることにより、マルチプレクサ（４）ではＡｄｄｒ［０］をメモリの最下位アドレスとして通常のメモリアクセスを行う。
ここで、デコード回路（５）は、メモリへのチップ選択信号Ｃｓ＊（Ｓ１１）がアクティブとなりアドレス最上位ビットＡｄｄｒ［８］が１の時、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となるように動作する回路である。
仮にアドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１となると、マイクロプロセッサからは通常のメモリアクセスができなくなり、本発明の特徴であるメモリ内部をダブルバッファ構成としたメモリアクセスが可能となる。この動作の詳細は、周期的な数値演算処理の説明にて述べる。
【００１６】
図２に示すように初期化時には、マイクロプロセッサから出力するアドレスＡｄｄｒを「０ｘ０００」、「０ｘ００１」と指定することでアドレス最上位ビットＡｄｄｒ［８］を０とし、アドレス切り替え有効信号Ｅｎｂ（Ｓ３）を０の状態にして、マルチプレクサ（４）ではＡｄｄｒ［０］をメモリの最下位アドレスとすることで通常のメモリアクセスを行い、Ｘ［０］，Ｘ［１］のデータ初期化を実行していることがわかる。
メモリの初期化が完了後、周期的に数値演算処理を開始するために、リアルタイムクロック回路（１８）を動作させるリアルタイムクロック有効信号ｒｔｃ＿ｅｎ（Ｓ２６）をマイクロプロセッサから出力する。これにより、リアルタイムクロック回路（１８）は動作を開始し、リアルタイムクロック信号（Ｓ１）が出力される。マイクロプロセッサは、リアルタイムクロック信号（Ｓ１）を割込み信号ＩＮＴ（Ｓ２７）として、周期的な数値演算処理を開始することになる。
【００１７】
この数値演算処理において、演算結果データを取り扱うメモリアクセスが発生した場合、本発明の特徴であるメモリ内部をダブルバッファ構成としたメモリアクセスを行う。このメモリアクセスの際、マイクロプロセッサはアドレス最上位ビットＡｄｄｒ［８］が１となるようにアドレスを出力する。これにより、デコード回路（５）から出力されるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）は１となり、マルチプレクサ（４）の切り替え制御信号として入力される。一方、リアルタイムクロック信号ＲＴＣ（Ｓ１）にて動作する演算周期フラグ生成回路（３）から出力される演算周期フラグ信号Ｆｌａｇ（Ｓ２）は、Ｎｏｔ回路（８）を通過後、演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を生成してマルチプレクサ（７）へ入力され、また演算周期フラグ信号Ｆｌａｇ（Ｓ２）自身も同様にマルチプレクサ（７）へ入力される。
このマルチプレクサ（７）では、読み出し信号Ｒｄ＊（Ｓ１０）の状態により、０であれば演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を、１であれば演算周期フラグ信号Ｆｌａｇ（Ｓ２）を演算周期フラグ出力信号（Ｓ１３）として出力する。この出力された演算周期フラグ出力信号（Ｓ１３）はマルチプレクサ（４）に入力される。
前記アドレス切り替え有効信号Ｅｎｂ（Ｓ３）が１の状態であるため、演算周期フラグ出力信号（Ｓ１３）がメモリへのアドレス最下位ビットとしてマルチプレクサ（４）から出力されることになる。尚、ここでは演算周期フラグ信号Ｆｌａｇ（Ｓ２）の初期値を０としている。
つまり、図１に示すＸデータ領域に演算結果データを書き込む場合（読み出し信号Ｒｄ＊＝１の時）、演算周期フラグ信号Ｆｌａｇ（Ｓ２）が０の時はＸ［０］に書き込み、演算周期フラグ信号Ｆｌａｇ（Ｓ２）が１の時はＸ［１］に書き込むことにより、演算結果データを周期毎に異なるアドレスへ格納している。逆にＸデータ領域から演算結果データを読み出す場合（読み出し信号Ｒｄ＊＝０の時）、演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）が０の時はＸ［０］から読み出し、演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）が１の時はＸ［１］から読み出すことにより、前回周期の演算結果データを周期毎に異なるアドレスから読み出している。
【００１８】
図２は本発明の第１の実施形態におけるタイミングチャートを示す図で、初期化ステップと上記で説明した数値演算処理ステップとが示されている。
図において、上から、ＲＴＣはリアルタイムクロック（図１の１８）の信号、Ｆｌａｇは演算周期フラグ信号（Ｓ２）、！Ｆｌａｇは演算周期フラグ反転信号（Ｓ１２）、Ｗｒ＊は書き込み信号（Ｓ９）、Ｃｓ＊はチップ選択信号（Ｓ１１）、
Ｄａｔａ  Ａｒｅａはメモリ２内のデータ領域、Ａｄｄｒはマイクロプロセッサ１からメモリ２へ出力するメモリ２内の物理アドレス、Ｅｎｂはアドレス切り替え有効信号（Ｓ３）である。
マイクロプロセッサ１からメモリ２へ出力するアドレスＡｄｄｒは、「０ｘ１００」を出力し続けているが、演算周期毎に演算周期フラグ信号Ｆｌａｇ（Ｓ２）がトグルするため、読み出しまたは書き込みのメモリ指定がＸ［０］とＸ［１］に変化していることがわかる。
Ｘ［０］のメモリにおける物理アドレスは「０ｘ０００」、Ｘ［１］のメモリにおける物理アドレスは「０ｘ００１」であるが、マイクロプロセッサ１からアドレスＡｄｄｒを「０ｘ１００」と出力し、アドレス最上位ビットＡｄｄｒ［８］を１とすることで、Ｘ［０］とＸ［１］の指定を演算周期フラグ出力信号（Ｓ１３）により行うことでダブルバッファの構成を実現している。
これは、Ｙデータ領域やＺデータ領域においても同様である。
【００１９】
図３は本発明の第１の実施形態となるデータ記憶装置を利用したソフトウェアのデータ記憶処理方法を示す処理フローである。
まず、システムの初期化（１１）を行い、リアルタイムクロック回路（１８）を動作させるためリアルタイムクロック有効処理（２０）を行った後、マイクロプロセッサは割込み待ち状態（１９）となる。その後、リアルタイムクロック信号ＲＴＣ（Ｓ１）が割込み信号ＩＮＴ（Ｓ２７）としてマイクロプロセッサに入力され、前回演算結果データ読み出し処理（１２）を行い、数値演算処理（１３）を実行し、今回演算結果データ書き込み処理（１４）を行うことで今回周期の数値演算処理を完了することになる。
【００２０】
図４は本発明の第１の実施形態となるデータ記憶装置を利用したソフトウェアのデータ記憶処理方法を示すプログラム例である。
このプログラムでは、ＳＸ，ＳＹ，ＳＺという３つの演算結果データを取り扱うメモリアドレスを指定する際、本発明のデコード回路（５）から出力されるアドレス切り替え有効信号Ｅｎｂ（Ｓ３）を有効とするために、Ｓ＿ＥＮ（０ｘ１００）とメモリアドレスのＯＲをとって指定している。もし、Ｓ＿ＥＮとＯＲせずにメモリアドレスを指定すると、直接その指定するメモリアドレスへ通常どおりアクセスすることになる。
図４のプログラムでは、今回周期の演算結果データの書き込みと、前回周期の演算結果データの読み出しを、ＳＸ，ＳＹ，ＳＺが示すアドレス０ｘ１００，  ０ｘ１０２、０ｘ１０４にて処理している。このプログラムより、図７に示す従来例のようにＸ＿ｏｌｄ，Ｙ＿ｏｌｄ，Ｚ＿ｏｌｄへの演算結果データのコピー処理が不要となっていることがわかる。尚、ＳＸのアドレス０ｘ１００は、マイクロプロセッサが出力アドレスであり、実際のメモリにおける物理アドレスとしては、Ｘ［０］とＸ［１］が配置された「０ｘ０００」と「０ｘ００１」に相当する。これと同様に、ＳＹのアドレス０ｘ１０２はＹ［０］とＹ［１］が配置された「０ｘ００２」と「０ｘ００３」、ＳＺのアドレス「０ｘ１０４」はＺ［０］とＺ［１］が配置された「０ｘ００４」と「０ｘ００５」に相当する。
ここで、本プログラムでは演算結果データを書き込むメモリアドレスと、読み出すメモリアドレスが同一であるため、プログラムのコンパイル時に最適化を実行した場合、演算結果データの読み出しを行わない実行コードを生成する可能性がある。このため、本プログラムのコンパイル時には、最適化を行わないように注意する必要がある。
【００２１】
［第２の実施の形態］
図５は、本発明の第２の実施形態となるデータ記憶装置の構成図である。
図５において、１はマイクロプロセッサ、２はマイクロプロセッサ１にて処理された演算結果データを格納するメモリ、６はデータ記憶装置である。データ記憶装置（６）はメモリ（２）とこのメモリ（２）のデータ記憶処理をする第２の実施の形態に係るデータ記憶処理装置（６”）とから構成され、データ記憶処理装置（６”）はデコード回路（５）、減算回路（９）、演算周期カウンタ回路（１０）、第１多ビットマルチプレクサＭＵＸ（１６）、第２多ビットマルチプレクサＭＵＸ（１７）で構成されている。
また、各信号については、Ｓ１はリアルタイムクロック信号ＲＴＣ、Ｓ３はアドレス切り替え有効信号Ｅｎｂ、Ｓ５はアドレスバス信号Ａｄｄｒ［ｎ＋１：０］、Ｓ７はアドレスバス信号Ａｄｄｒ［ｎ：０］、Ｓ８はデータバスＤａｔａ、Ｓ９は書き込み信号Ｗｒ＊  、Ｓ１０は読み出し信号Ｒｄ＊  、Ｓ１１はチップ選択信号Ｃｓ＊  、Ｓ２０はカウントデータＣｎｔ［ｍ：０］、Ｓ２１はカウント減算後データｐＣｎｔ［ｍ：０］、Ｓ２２はアドレスバス信号Ａｄｄｒ［ｎ：ｍ＋１］、Ｓ２３はカウントデータ出力信号、Ｓ２４はアドレス出力信号、Ｓ２５はアドレス最上位ビットＡｄｄｒ［ｎ＋１］、Ｓ２６はリアルタイムクロック有効信号ｒｔｃ＿ｅｎである。
【００２２】
第２の実施形態は、第１の実施形態となるデータ記憶装置のようにメモリ内部の変数領域をダブルバッファとするのではなく、２ｍ＋１の深さをもつリングバッファの構成としたもので、前回周期より以前の演算結果データを利用することを可能としたものである。
したがって、第１の実施形態となるデータ記憶装置とは以下の点が異なる。
演算周期フラグ生成回路（３）の代わりにｍ＋１ビットの演算周期カウンタ回路（１０）を設置することで、カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を生成し、Ｎｏｔ回路（８）の代わりに減算回路（９）を設置することで、前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）を減算したカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を生成し、マルチプレクサＭＵＸ２（７）の代わりに多ビットマルチプレクサＭＵＸ２（１７）を設置することで、前記カウントデータＣｎｔ［ｍ：０］（Ｓ２０）とカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）を読み出し信号Ｒｄ＊（Ｓ１０）にて切り替え、カウントデータ出力信号（Ｓ２３）を出力し、マルチプレクサＭＵＸ１（４）の代わりに多ビットマルチプレクサＭＵＸ１（１６）を設置することで、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｍ：０］と前記カウントデータ出力信号（Ｓ２３）をアドレス切り替え有効信号Ｅｎｂ（Ｓ３）にて切り替えアドレス出力信号（Ｓ２４）を出力し、マイクロプロセッサからのアドレスバス信号Ａｄｄｒ［ｎ：ｍ＋１］（Ｓ２２）に前記アドレス出力信号（Ｓ２４）を下位ビットとして組み合わせたアドレスバス信号Ａｄｄｒ［ｎ：０］（Ｓ７）をメモリへ接続している。
ｍ＋１ビットの演算周期カウンタ回路（１０）を設置することにより、図５のＸ，Ｙ，Ｚデータ領域に示すように、２ｍ＋１個の配列を確保することになる。
このため、各配列への書き込みアドレス指定は、演算周期カウンタ回路（１０）から出力されるカウントデータＣｎｔ［ｍ：０］（Ｓ２０）にて行われ、各配列からの読み出しアドレス指定は、減算回路（９）から出力されるカウント減算後データｐＣｎｔ［ｍ：０］（Ｓ２１）にて行われることになる。
すなわち、演算周期毎に行われる演算結果データの書き込みと読み出しにおいて、メモリ内部の変数領域をリングバッファの構成とすることができる。このため、前回周期の演算結果データのみならず、前回周期より以前の演算結果データも格納できることになる。
【００２３】
【発明の効果】
請求項１および２記載のデータ記憶装置によれば、マイクロプロセッサ（１）が同一のメモリアドレスへ演算結果データを書き込みしようとしても、そのアドレスの最下位ビットを、演算周期フラグ生成回路（３）から出力される演算周期フラグ信号Ｆｌａｇ（Ｓ２）と置きかえることで、周期毎に異なるメモリアドレスへ演算結果データを書き込むことが可能となる。これは読み出しの場合においても演算周期フラグ反転信号！Ｆｌａｇ（Ｓ１２）を利用して同様に行われ、周期毎に異なるメモリアドレスから演算結果データを読み出すことになる。
すなわち、メモリ内部の変数領域をダブルバッファの構成とすることができ、今回周期の演算結果データが書き込まれるアドレスと、前回周期の演算結果データが読み出されるアドレスは、周期毎に交換されてメモリアドレスの指定を行うことになる。これにより、従来行っていた演算結果データのコピー処理を削除することができる。
これは、マイクロプロセッサのメモリへのアクセス回数を削減できることにより、システム性能の向上につなげることができる。つまり、高速マイクロプロセッサや高速メモリの使用を避けることができ、コストや発熱の低減につながるものである。
また、本発明によれば、メモリ全体をダブルバッファの構成にすることができると同時に、システムにて使用する変数の個数分だけをダブルバッファ構成のメモリとして、残りは通常のメモリとして使用することも可能である。つまり、メモリ内部を使う用途によって柔軟に容量設定できるため、メモリの効率的な利用が可能となる。
【００２４】
請求項３および４記載のデータ記憶装置によれば、マイクロプロセッサ（１）が同一のメモリアドレスへ演算結果データを書き込みしようとしても、そのアドレスの下位からｍ＋１ビットまでを演算周期カウンタ回路（１０）から出力されるカウントデータＣｎｔ［ｍ：０］（Ｓ２０）と置きかえることで、周期毎に異なるメモリアドレスへ演算結果データを書き込むことが可能となる。これは読み出しの場合においても同様であり、周期毎に異なるメモリアドレスから演算結果データを読み出すことになる。
すなわち、メモリ内部の変数領域を２ｍ＋１の深さをもつリングバッファの構成とし、変数データの書き込みと読み出しを行うことができる。これにより、演算結果データのコピー処理を削除することと同時に、前回周期より以前の演算結果データを利用することが可能となる。これは、マイクロプロセッサのメモリへのアクセス回数を削減できることにより、システム性能の向上につなげることができる。つまり、高速マイクロプロセッサや高速メモリの使用を避けることができ、コストや発熱の低減につながるものである。
【図面の簡単な説明】
【図１】本発明の第１の実施形態となるデータ記憶装置構成図である。
【図２】本発明の第１の実施形態におけるタイミングチャートを示す図である。
【図３】本発明の第１の実施形態となるデータ記憶装置を利用したソフトウエアのデータ記憶処理方法を示す処理フローである。
【図４】本発明の第１の実施形態となるデータ記憶装置を利用したソフトウエアのデータ記憶処理方法を示すプログラム例である。
【図５】本発明の第２の実施形態となるデータ記憶装置の構成図である。
【図６】従来のデータ記憶処理方法を示す処理フローである。
【図７】従来のデータ記憶処理方法を示すプログラム例である。
【図８】従来のデータ記憶装置の第１実施例を示す図である。
【図９】従来のデータ記憶装置の第２実施例を示す図である。
【符号の説明】
１：  マイクロプロセッサ
２：  メモリ
３：  演算周期フラグ生成回路
４：  マルチプレクサＭＵＸ１
５：  デコード回路
６：  データ記憶装置
６’：第１のデータ記憶処理装置
６”：第２のデータ記憶処理装置
７：  マルチプレクサＭＵＸ２
８：  Ｎｏｔ回路
９：  減算回路
１０：  演算周期カウンタ回路
１１：  初期化
１２：  前回演算結果データ読み出し処理
１３：  数値演算処理
１４：    今回演算結果データ書き込み処理
１５：  今回演算結果データコピー処理
１６：  多ビットマルチプレクサＭＵＸ１
１７：    多ビットマルチプレクサＭＵＸ２
１８：    リアルタイムクロック回路
１９：    割込み待ち状態
２０：    リアルタイムクロック有効処理
Ｓ１：    リアルタイムクロック信号ＲＴＣ
Ｓ２：  演算周期フラグ信号Ｆｌａｇ
Ｓ３：  アドレス切り替え有効信号Ｅｎｂ
Ｓ４：  アドレス出力信号
Ｓ５：    アドレスバス信号Ａｄｄｒ［ｎ＋１：０］
Ｓ６：  アドレスバス信号Ａｄｄｒ［ｎ：１］
Ｓ７：  アドレスバス信号Ａｄｄｒ［ｎ：０］
Ｓ８：  データバスＤａｔａ
Ｓ９：    書き込み信号Ｗｒ＊
Ｓ１０：読み出し信号Ｒｄ＊
Ｓ１１：チップ選択信号Ｃｓ＊
Ｓ１２：演算周期フラグ反転信号！Ｆｌａｇ
Ｓ１３：演算周期フラグ出力信号
Ｓ１４：アドレスバスＡｄｄｒ
Ｓ１５：チップ選択信号Ｃｓ０＊
Ｓ１６：チップ選択信号Ｃｓ１＊
Ｓ２０：カウントデータＣｎｔ［ｍ：０］
Ｓ２１：カウント減算後データｐＣｎｔ［ｍ：０］
Ｓ２２：アドレスバス信号Ａｄｄｒ［ｎ：ｍ＋１］
Ｓ２３：カウントデータ出力信号
Ｓ２４：アドレス出力信号
Ｓ２５：アドレス最上位ビットＡｄｄｒ［ｎ＋１］
Ｓ２６：リアルタイムクロック有効信号ｒｔｃ＿ｅｎ
Ｓ２７：割込み信号ＩＮＴ
【図１】
2004246678.tif 000003
【図２】
2004246678.tif 000004
【図３】
2004246678.tif 000005
【図４】
2004246678.tif 000006
【図５】
2004246678.tif 000007
【図６】
2004246678.tif 000008
【図７】
2004246678.tif 000009
【図８】
2004246678.tif 000010
【図９】
2004246678.tif 000011