(57)【要約】【課題】データを読み出す直前に書込処理が割り込んだ場合において、読み出そうとしたデータが書き換えられることを防止することを目的とする。【解決手段】データ処理装置２０は、環状バッファ５における最初のデータ読出位置のアドレスを決定する際に、次回書込位置レジスタ４に格納されている環状バッファ５上の次回書込位置の値に対し、余剰エリア５１のメモリ数を加算した値を最初の演算データ読出位置とし、この最初の演算データ読出位置から演算データを順次読み出すことを特徴とする。【選択図】図１
2009301405.tif 000002
【特許請求の範囲】
【請求項１】
環状バッファからデータを読み出すデータ処理装置におけるデータ処理方法であって、
前記データ処理装置は、
前記環状バッファにおけるデータ読出位置のアドレスを決定する際に、記憶部に記憶されている最後にデータが書き込まれた前記環状バッファ上のアドレス値に関する情報に対し、所定の数を加算したアドレス値からデータを読み出すことを特徴とするデータ処理方法。
【請求項２】
前記加算は、最初に読み出すデータのアドレスを算出する際に行われることを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
環状バッファからデータを読み出すデータ処理装置におけるデータ処理方法であって、
前記データ処理装置は、
前記環状バッファからのデータの読み出しが発生すると、
前記環状バッファに対するデータの書き込みを待機させ、
前記環状バッファからのデータの読み出しが終了すると、
前記環状バッファに対するデータの書き込みを許可することを特徴とするデータ処理方法。
【請求項４】
請求項１から請求項３のいずれか一項に記載のデータ処理方法をコンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項５】
環状バッファからデータを読み出すデータ処理装置であって、
前記環状バッファにおけるデータ読出位置のアドレスを決定する際に、記憶部に記憶されている最後にデータが書き込まれた前記環状バッファ上のアドレス値に関する情報に対し、所定の数を加算したアドレス値からデータを読み出すデータ読出処理制御部を有することを特徴とするデータ処理装置。
【請求項６】
環状バッファからデータを読み出すデータ処理装置であって、
前記環状バッファからのデータの読み出しが発生すると、前記環状バッファに対するデータの書き込みを待機させ、前記環状バッファからのデータの読み出しが終了すると、
前記環状バッファに対するデータの書き込みを許可するデータ読出処理制御部を有することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理方法、データ処理プログラムおよびデータ処理装置の技術に関する。
【背景技術】
【０００２】
フィルタ処理などの演算処理を高速に行う方法の１つとして、メモリの最終位置までデータの読み出しまたは書き込みが行われると、先頭位置まで戻り、そこからデータの読み出しまたは書き込みが行われる環状バッファを用いた演算手段が提案されている。このような環状バッファを用いて演算処理を行うことは、演算処理の高速化とメモリ領域の節約に貢献する。
【０００３】
また、データの上書きが行われないよう、データの書き込みの際に書き込まれたデータ数をカウントするカウンタを設けることにより、次に入力されるデータによって上書きされる事態を回避したり、未使用領域が０近傍になった際に注意信号を生成する警告手段を設けたりしているメモリ管理システムが開示されている（例えば、特許文献１参照）。
【特許文献１】特開平４−２６１２６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
環状バッファへのデータの読み出しおよび書き込みが非同期で行われている場合、つまりデータ処理装置が、環状バッファへデータを非同期で書き込みつつデータを読み出し、演算処理を行うような場合、データを読み出そうとしたときに、書込処理が割り込み、読み出そうとしたデータを書き換えてしまうことがある。すなわち、データ処理装置が、環状バッファからデータを読み出そうとして環状バッファにおける読出位置を決定した直後に、書込処理が生じて、読み出そうとしていたデータを書き換えてしまうことがあるという問題がある。
【０００５】
また、特許文献１に記載の技術では、環状バッファを対象としておらず、またカウンタや、警告手段を別途設ける必要があるという問題がある。
【０００６】
このような背景に鑑みて本発明がなされたのであり、本発明は、データを読み出す直前に書込処理が割り込んだ場合において、読み出そうとしたデータが書き換えられることを防止することを目的とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するため、本発明は、環状バッファにおいて、最後にデータが書き込まれた前記環状バッファ上のアドレス値に対し、所定の数を加算したアドレス値からデータを読み出し始めることを特徴とする。あるいは、読出処理が行われている間、書込処理による割り込みを禁止することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、データを読み出す直前に書込処理が割り込んだ場合において、読み出そうとしたデータが書き換えられることを防止することができる。
【発明を実施するための最良の形態】
【０００９】
次に、本発明を実施するための最良の形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１０】
《第１実施形態：構成》
図１は、第１実施形態に係るデータ処理装置の構成例を示す図である。
データ処理装置２０は、命令実行制御部１と、データ書込処理制御部２と、データ読出処理制御部３と、次回書込位置レジスタ４（記憶部）と、環状バッファ５と、演算部７と、最新データレジスタ８とを有している。
命令実行制御部１は、データ書込処理制御部２およびデータ読出処理制御部３の制御を行う機能を有する。
データ書込処理制御部２は、次回書込位置レジスタ４に格納されている次回書込位置を基に、加算部９ａで環状バッファ５上における最新データの書込位置を決定・設定し、設定した環状バッファの書込位置に最新データレジスタに格納されている最新データを書き込む機能を有する。ここで、次回書込位置とは、次に最新データを環状バッファ５に書き込む際の環状バッファ５の位置（アドレス）である。
【００１１】
データ読出処理制御部３は、次回書込位置レジスタ４に格納されている次回書込位置を基に、加算部９ｂ，９ｃで環状バッファ５上におけるデータの読出位置を決定・設定し、設定した環状バッファ５の読出位置からデータを読み出す機能を有する。なお、データ読出処理制御部３が読み出すデータを、以降演算データと適宜記載することとする。また、データ読出処理制御部３の加算部９ｂは、最初の演算データの読み出しの際に、次回書込位置の値に所定数（余剰エリア５１分の数）を加算した位置を読出位置とする機能を有する。
環状バッファ５は、メモリの最終位置までデータの読み出しまたは書き込みが行われると、先頭位置まで戻り、そこからデータの読み出しまたは書き込みが行われるよう制御されることにより実現されるメモリである。環状バッファ５については、図２を参照して後記する。なお、「最新データ」、「最初の演算データ」および「次の演算データ」については、後記して説明する。
演算部７は、データ読出処理制御部３が読み出した演算データを使用して演算処理を行う機能を有する。
なお、加算部９ａ，９ｃは、取得した値に１加算する機能を有し、加算部９ｂは、取得した値に予め設定してある環状バッファ５における余剰エリア５１のメモリ数を加算する機能を有する。なお、余剰エリア５１のメモリ数は、データ書込処理制御部２や、データ読出処理制御部３の処理速度などを基に予め設定されている。
【００１２】
なお、図１におけるデータ書込処理制御部２、データ読出処理制御部３、命令実行制御部１、演算部７、および加算部９ａ〜９ｃは、図示しないＲＯＭ（Read Only Memory）や、図示しないＨＤ（Hard Disk）に格納されたデータ処理プログラムが、図示しないＲＡＭ（Random Access Memory）に展開され、図示しないＣＰＵ（Central Processing Unit）によって実行されることにより具現化する。
【００１３】
（環状バッファ）
次に、図１を参照しつつ、図２および図３を参照して環状バッファ５の説明を行う。
図２は、環状バッファを示す図であり、（ａ）は環状バッファを模式的に示した図であり、（ｂ）は、環状バッファを一次元的に表現した図である。
図２（ａ）に示すように環状バッファ５は、モジュロ機能により環状バッファ５におけるデータの書き込みや、読み出しにおける最終データ位置に到達すると、次のデータは、先頭データ位置に対して書き込みや、読み出しが行われるよう制御されるメモリであり、ループ状にデータを格納することができる。例えば、データ書込処理制御部２（図１）が、全部で３０の位置（アドレス）を有する環状バッファ５において３５の位置にデータを書き込もうとした場合、データ書込処理制御部２は、モジュロ機能により５の位置にデータを書き込むこととなる。
つまり、図２（ｂ）に示すように、環状バッファ５では、データの読み出しや、書き込みがバッファ先頭位置から順に行われ、バッファ最終位置に到達すると、再びバッファ先頭位置からデータの読み出しや、書き込みが順に行われていくよう制御されている。
【００１４】
図３は、環状バッファの読出・書込順を示す図である。
図３において、環状バッファ５に保持できるデータ数である演算要素数をＮとすると、データ読出処理の開始時には、領域１０１に最新データが格納されているとする。このとき、最初に読み出されるデータ（最初の演算データ１１２）は、最新データのＮ−１の数だけ前の位置の領域１０２に格納されているデータとなる。一般的に、環状バッファ５からデータ（演算データ）を読み出す際には、データ読出処理制御部３が、最初の演算データ読出位置として領域１０２を設定し、当該位置のデータをデータ読出処理制御部３が読み出すと共に、次の演算データ読出位置を領域１０３に更新し、領域１０３に格納されているデータ（次の演算データ１１３）を読み出す。このようにして順にデータが読み出されることにより、最後の演算データ１１１は、領域１０１に格納されている最新データとなる。本実施形態では、データ読出処理において、データ読出処理制御部３は、最新データが格納されている領域１０１の次の領域１０２から順にデータ（演算データ）を読み出していき、環状バッファ５に格納されているデータ（すなわち、Ｎ個の演算データ）を読み出し終えたら処理を終了することとする。
【００１５】
（処理の流れ）
次に、図１を参照しつつ図４および図５に沿って本実施形態に係るデータ書込処理およびデータ読出処理を説明する。
図４は、本実施形態に係るデータ書込処理の流れを示す図である。
まず、データ書込処理制御部２が、データ書込処理を行おうとするとき、命令実行制御部１へ割込信号を送信する（Ｓ１０１）。これにより、命令実行制御部１は、割り込みが発生したとみなし、データ読出処理制御部３に対してデータ読出処理を中断するよう制御信号を送る。
そして、データ書込処理制御部２は、次回書込位置レジスタ４から次回書込位置の値を読み出し、この次回書込位置の値を最新データ書込位置として設定する（Ｓ１０２）。最新データ書込位置の詳細な設定手順は、図９を参照して後記する。
次に、データ書込処理制御部２は、ステップＳ１０２で設定した環状バッファ５の最新データ書込位置に最新データを書き込む（Ｓ１０３）。
そして、データ書込処理制御部２は、次回書込位置レジスタ４における次回書込位置の値を、最新の書き込みをした位置の次の位置に更新する（Ｓ１０４）。つまり、データ書込制御部２は、次回書込位置の値を１加算した値を次回書込位置として更新する。
【００１６】
図５は、第１実施形態に係るデータ読出処理の流れを示す図である。
データ読出処理が開始すると、データ読出処理制御部３は、次回書込位置レジスタ４から次回書込位置の値を読み出し、この次回書込位置の値を基に最初の演算データ読出位置を設定する（Ｓ２０１）。演算データ読出位置の詳細な設定手順は、図８および図９を参照して後記するが、データ読出処理制御部３が、次回書込位置の値に、予め設定してある環状バッファ５上の余剰エリア５１のメモリ数を加算することによって、最初の演算データ読出位置を算出する。
【００１７】
そして、データ読出処理制御部３は、ステップＳ２０１で設定した環状バッファ５における最初の演算データ読出位置から演算データを読み出し、演算部７へ読み出した演算データをわたし、演算部７は、わたされたデータを使用して演算処理を行う（Ｓ２０２）。
次に、データ読出処理制御部３は、前回の演算データ読出位置の値に１加算することによって、演算データ読出位置の更新を行う（Ｓ２０３）。
そして、データ読出処理制御部３は、ステップＳ２０３で更新した演算データ読出位置から演算データを読み出し、演算部７へ読み出したデータをわたし、演算部７は、わたされたデータを使用して演算処理を行う（Ｓ２０４）。
データ読出処理制御部３は、ステップＳ２０３およびステップＳ２０４の処理を、環状バッファ５に格納されている演算データの数だけ繰り返す（Ｓ２０５）。
【００１８】
ここで、データ読出処理における各段階において、図４に示すデータ書込処理の割り込みが生じる可能性がある。このような割り込みが生じると、データ読出処理制御部３は、割り込みが生じたところで処理を中断し、データ書込処理が終了すると、処理を再開することとなる。
【００１９】
図６は、データ書込処理とデータ読出処理とのタイミングチャートを示す図である。
図６において、ステップＳ１、Ｓ３，Ｓ４，Ｓ６，Ｓ７，Ｓ９はデータ書込処理を示し、ステップＳ２、Ｓ５，Ｓ８はデータ読出・演算処理を示す。図６に示すように、本実施形態においてデータ書込処理と、データ読出・演算処理とは非同期に行われる処理である。
図６の下図には、詳細に記載したステップＳ５の処理が記載されている。図６の下図では、ステップＳ５１〜Ｓ６０の各処理がステップＳ５に相当する処理である。ステップＳ５１〜Ｓ６０の処理は、図５で説明した各処理と同様であるため、詳細な説明を省略する。そして、ステップＳ５７とステップＳ５８との間に、データ書込処理Ｓ６が割り込んでいる。このように、データ書込処理が生じると、データ読出処理はその時点で中断され、データ書込処理が終了すると、中断した時点からデータ読出処理が再開される。
【００２０】
図７は、第１実施形態に係る割り込みが生じたときの処理の流れを示す図である。
なお、図７において図４および図５と同様の処理については、同一の符号を付して説明を省略する。
図７の例では、図５のステップＳ２０１と、ステップＳ２０２との間に、図４に示すデータ書込処理（Ｓ１０１〜Ｓ１０４）が割り込んでいる。なお、データ書込処理が行われている間、データ読出処理制御部３は、データ読出処理を中断している。
【００２１】
（処理の詳細）
次に、図８および図９を参照して図７に示す処理の詳細を説明する。なお、図８および図９において、図１と同様の要素に関しては同一の符号を付して説明を省略する。
図８は、第１実施形態に係る割込発生前の処理を示す図である。
まず、命令実行制御部１から、データ読出処理開始の制御信号がデータ読出処理制御部３に送られる（Ｓ３０１）。
そして、制御信号を受けたデータ読出処理制御部３は、次回書込位置レジスタ４から次回書込位置を読み出す（Ｓ３０２）。そして、加算部９ｂが、読み出した次回書込位置に予め設定してある余剰エリア５１のメモリ数を加算して、演算データ読出位置を決定する（Ｓ３０３）。
【００２２】
そして、データ読出処理制御部３は、決定した演算データ読出位置を設定すると（Ｓ３０４）、演算データ読出位置に格納されている演算データ（最初の演算データ）を読み出そうとするが、このとき、データ書込処理の割り込みが発生したものとする。
【００２３】
図９は、第１実施形態に係る割込発生後の処理を示す図である。
まず、データ書込処理制御部２が、割込信号を命令実行制御部１へ送る（Ｓ４０１）と、命令実行制御部１は、割り込みが発生したため、データ読出処理制御部３の処理を中断させる制御信号をデータ読出処理制御部３へ送る（Ｓ４０２）。制御信号を受けたデータ読出処理制御部３は、図８のステップＳ３０４の後の処理（つまり、最初の演算データの読み出し）を中断する。
【００２４】
ステップＳ４０２で制御信号を送った命令実行制御部１は、データ書込処理を許可する制御信号をデータ書込処理制御部２に送る（Ｓ４０３）。
制御信号を受けたデータ書込処理制御部２は、次回書込位置レジスタ４から次回書込位置を読み出すと（Ｓ４０４）、読み込んだ次回書込位置を最新データ書込位置として設定する（Ｓ４０５）。そして、データ書込処理制御部２は、環状バッファ５における最新データ書込位置に最新データ位置レジスタ８の最新データを書き込む（Ｓ４０６）。次に、加算部９ａが、読み出した次回書込位置の値に１加算する（Ｓ４０７）と、データ書込処理制御部２は、加算された次回書込位置の値を次回書込位置レジスタ４における新たな次回書込位置の値として更新し（Ｓ４０８）、書込処理終了通知を命令実行制御部１へ送る（図示せず）。
【００２５】
書込処理終了通知を受けた命令実行制御部１は、中断していた処理を再開するよう制御信号をデータ読出処理制御部３に送る（Ｓ４０９）。
データ読出処理制御部３は、中断していた処理（つまり、最初の演算データ読み出し）を行う（Ｓ４１０）。そして、演算部７が、読み出した演算データを使用して演算処理を行う（Ｓ４１１）。
以降、加算部９ｃが、演算データ読出位置の値を１加算し、次の演算データ読出位置を決定し（Ｓ４１２）、データ読出処理制御部３が、決定した演算データ読出位置を設定する（Ｓ４１３）。そして、データ読出処理制御部３は、設定した演算データ読出位置から次の演算データを読み出し（Ｓ４１４）、演算部７が読み出した演算データを使用して演算処理を行う（Ｓ４１５）。データ読出処理制御部３は、すべての演算データについて同様の処理を行う（Ｓ４１６〜Ｓ４１９）。
【００２６】
（第１実施形態の効果）
第１実施形態によれば、最初の演算データ読出位置を次回書込位置から余剰エリア５１のメモリ数分加算した位置とすることにより、データ読出処理制御部３が演算データの読出位置を決定した直後に、その読出位置のデータが書き換わることを防止することができる。
【００２７】
《第２実施形態：処理》
次に、本発明の第２実施形態について説明する。
第２実施形態は、第１実施形態と異なり、データ読出処理制御部３ａがデータ読出処理を行う際にデータ書込処理制御部２に対し１つの演算データの読み出しが終了するまで割り込み処理を行わせないようにすることで、最初の演算データ読出位置を決定する際に余剰エリア５１（図１）のメモリ数を加算しなくても、読み出そうとしている演算データが書き換わることを防止する構成としたものである。
【００２８】
図１０は、第２実施形態に係るデータ処理装置の構成例を示す図である。
図１０において、図１と同様の要素については、同一の符号を付して説明を省略する。
データ処理装置２０ａが、図１のデータ処理装置２０と異なる点は、データ読出処理制御部３ａにおいて、加算部９ｂがないことと、割込処理の待機や、解除を管理する待機処理部が加わったことである。また、環状バッファ５ａにおいて、余剰エリア５１が設定されていない点も、図１のデータ処理装置２０と異なる点である。
【００２９】
なお、図１０におけるデータ書込処理制御部２、データ読出処理制御部３ａ、命令実行制御部１、演算部７、待機処理部１０、および加算部９ａ，９ｃは、図示しないＲＯＭや、図示しないＨＤに格納されたデータ処理プログラムが、図示しないＲＡＭに展開され、図示しないＣＰＵによって実行されることによって具現化する。
【００３０】
（処理の流れ）
次に、図１０を参照しつつ、図１１に沿って第２実施形態に係る処理を説明する。
図１１は、第２実施形態に係る割り込みが生じたときの処理の流れを示す図である。
図１１は、第１実施形態の図７と同様のタイミングでデータ書込処理の割り込みが生じた例であり、図７と同様の処理については同一のステップ番号を付して説明を省略する。
【００３１】
図１１の処理が図７と異なる点は、割込待機に関する処理（Ｓ５０１〜Ｓ５０５）の部分である。
データ読出処理制御部３ａが、データ読出処理を開始する際、データ読出処理制御部３ａの待機処理部１０は、命令実行制御部１へ割込待機信号を送信する（Ｓ５０１）。割込待機信号を受けた命令実行制御部１は、データ書込処理制御部２に対しデータ書込処理の割り込みを待機させるよう制御する。これにより、データ書込処理制御部２は、１つの演算データの読み出しが終了するまで環状バッファ５ａへのデータ書込処理を割り込ませることができなくなる。
次に、データ読出処理制御部３ａは、次回書込位置レジスタ４から次回書込位置を取得すると、この次回書込位置を最初の演算データ読出位置として設定する（Ｓ５０２）。ここで、次回書込位置をそのまま最初の演算データ読出位置としているのは、データ書込処理において、データ書込処理制御部２が最新データを書き込んだ後、データ書込処理制御部２は最新データ書込位置の次の位置を次回書込位置として更新しているので、最初の演算データ読み出し位置は、次回書込位置とすれば、最新データが格納されている領域の次の領域から演算データを読み出すことができるためである。
【００３２】
そして、データ読出処理制御部３ａは、環状バッファ５ａにおける設定した演算データ読出位置から最初の演算データを読み出すと、この演算データを演算部７にわたし、演算部７は受けた演算データを使用して演算処理を行う（Ｓ５０３）。
最初の演算データの読み出しが終了すると、データ読出処理制御部３ａの待機処理部１０は、割込待機解除信号を命令実行制御部１へ送信し（Ｓ５０４）、割込処理の受付許可状態となる（Ｓ５０５）。
【００３３】
割込待機解除信号を受けた命令実行制御部１は、割込処理の許可をデータ書込処理制御部２に通知する。そして、データ書込処理制御部２は、データ書込処理の割込処理を行うことができるようになり、例えば、ステップＳ５０５の直後にデータ書込処理が行われれば、図１１のステップＳ１０１〜Ｓ１０４およびステップＳ２０３〜Ｓ２０４の処理が繰り返し行われる（Ｓ２０５）。データ書込処理の割込処理が、図１１に示したタイミング以外にもデータ読出処理の各段階で行われてもよいことは当然であるが、データ読出処理制御部３ａが、演算データを読み出そうとしたときは、１つの演算データの読み出しが終了するまで、データ書込処理を行うことができない。
【００３４】
（処理の詳細）
次に、図１２および図１３を参照して図１１に示す処理の詳細な説明を行う。
図１２および図１３において、図１０と同様の要素については、同一の符号を付して説明を省略する。
図１２は、第２実施形態に係る割込発生前の処理を示す図である。
データ読出処理制御部３ａの待機処理部１０は、データ読出処理を行うとき、まず割込待機信号を命令実行制御部１へ送信する（Ｓ６０１）。割込待機信号を受けた命令実行制御部１は、割込待機する旨の通知を含む制御信号をデータ書込処理制御部２（図１２に図示せず）に送信する。これにより、データ書込処理制御部２は、データ読出処理制御部３ａから割込待機解除信号が命令実行制御部１に送られるまで、最新データの書き込みを割り込ますことができない状態となる。
そして、データ読出処理制御部３ａは、次回書込位置レジスタ４から次回書込位置を読み出すと、取得した次回書込位置を最初の演算データ読出位置として、決定・設定する（Ｓ６０２）。
そして、データ読出処理制御部３ａは、環状バッファ５ａにおける設定した最初の演算データ読出位置から最初の演算データを読み出すと（Ｓ６０３）、読み出した演算データを演算部７へわたし、演算部７は取得した演算データを使用して演算処理を行う（Ｓ６０４）。
【００３５】
図１３は、第２実施形態に係る割込発生後の処理を示す図である。
最初の演算データの読み出しが終了すると、データ読出処理制御部３ａの待機処理部１０は、割込待機解除信号を命令実行制御部１へ送信する（Ｓ７０１）。割込待機解除信号を受けた命令実行制御部１は、割込待機解除の通知を含み、データ書込処理の割込を許可する制御信号をデータ書込処理制御部２へ送る（Ｓ７０２）。これにより、データ書込処理制御部２は、データ書込処理の割り込みを行うことが可能となる。
【００３６】
データ書込処理の割込処理は、データ書込処理のどの段階で行われてもよいが、ここではデータ読出処理制御部３ａによる最初の演算データ読出後に行われたものとする。
データ書込処理制御部２は、データ書込処理の割り込みを行うために、まず命令実行制御部１に対して割込信号を送信する（Ｓ７０３）。
以降のデータ書込処理は、図９におけるステップＳ４０４〜Ｓ４０８およびステップＳ４１２〜Ｓ４１９の処理と同様であるため、図９と同一の符号を付して説明を省略する。
【００３７】
（第２実施形態の効果）
第２実施形態によれば、環状バッファ５ａから１つの演算データが読み出されるまで、データ書込処理を禁止するため、データ読出処理制御部３ａが演算データ読出位置を決定した直後に当該位置のデータが書き換えられることを防止することができる。
【００３８】
《比較例：構成》
次に、図１４〜１８を参照して、第１および第２実施形態に対する比較例として一般的に行われている環状バッファ５ａを用いたデータ処理を説明する。
図１４は、比較例に係るデータ処理装置の構成例を示す図である。
図１４において、前記した実施形態と同様の要素については同一の符号を付して説明を省略する。図１４に示すデータ処理装置２０ｂが、図１および図１０に係るデータ処理装置２０，２０ａと異なる点は、以下の通りである。
環状バッファ５ａは、図１０に示す環状バッファ５ａと同様に余剰エリア５１（図１）を設定されていない。そして、データ読出処理制御部３ｂは、図１０と同様、図１の加算部９ｂが設けられておらず、さらに、図１０における待機処理部１０を備えていない。
【００３９】
（処理の流れ）
次に、図１４を参照しつつ、図１５に沿って比較例におけるデータ読出処理を説明する。なお、比較例におけるデータ書込処理は、図４に示す処理と同様であるため、説明を省略する。さらに、図１５において、図５と同様の処理には、同一のステップ番号を付して説明を省略する。
図１５は、比較例に係るデータ読出処理の流れを示す図である。
図１５において、図５と異なる処理は、データ読出処理制御部３ｂが、次回書込位置の値から最初の演算データ読出位置を決定する際、第２実施形態と同様に次回書込位置をそのまま最初の演算データ読出位置とする点である（Ｓ８０１）。
図１５においても、前記した実施形態と同様、データ読出処理の各段階においてデータ書込処理制御部２によるデータ書込処理の割り込みが発生し得る。
【００４０】
図１６は、図１５におけるステップＳ８０１の後に、データ書込処理の割り込みが発生した場合の処理の流れを示す図である。図１６において、図１５と同様の処理については、同一のステップ番号を付して説明を省略する。
図１６では、図１５のステップＳ８０１と、ステップＳ２０２との間に、図３に示すデータ書込処理（Ｓ１０１〜Ｓ１０４）が割り込んでいる。なお、データ書込処理が行われている間、データ読出処理制御部３ｂは、データ読出処理を中断している。
【００４１】
（処理の詳細）
次に、図１７および図１８を参照して図１６に示す処理の詳細を説明する。なお、図１７および図１８において、図１４と同様の要素に関しては同一の符号を付して説明を省略する。
図１７は、比較例に係る最初の演算データの読出処理を示す図である。
命令実行制御部１からデータ読出処理を開始する旨の制御信号が送信される（Ｓ９０１）と、データ読出処理制御部３ｂが次回書込位置レジスタ４から次回書込位置を読み出し、読み出した次回書込位置を最初の演算データ読出位置として決定・設定する（Ｓ９０２）。そして、データ読出処理制御部３ｂは、環状バッファ５ａにおける設定した最初の演算データ読出位置から演算データを読み出そうとするが、このタイミングで割込処理が発生したとする。
【００４２】
図１８は、比較例に係る割込処理発生後における処理を示す図である。
図１８は、図１７を前提として説明する。
すなわち、データ書込処理制御部２から割込信号が命令実行制御部１に送信され（Ｓ１００１）、命令実行制御部１は、割り込みが発生したことによる処理の中断を指示する制御信号をデータ読出処理制御部３ｂへ送信する（Ｓ１００２）。これにより、データ読出処理制御部３ｂは、最初の演算データ読出位置を設定したが、未だ最初の演算データを読み出していない状態で処理を中断することとなる。
【００４３】
データ読出処理制御部３ｂへ制御信号を送信した命令実行制御部１は、データ書込処理制御部２へデータ書込処理を開始する指示を含む制御信号を送信する（Ｓ１００３）。
制御信号を受信したデータ書込処理制御部２は、次回書込位置レジスタ４から次回書込位置を読み出す（Ｓ１００４）。そして、データ書込処理制御部２は、読み込んだ次回書込位置を最新データ書込位置として設定し（Ｓ１００５）、最新データレジスタ８の最新データを最新データ書込位置に書き込む（Ｓ１００６）。この結果、処理を中断しているデータ読出処理制御部３ｂが、読み出そうとしている最初の演算データが、最新データに置き換わってしまう。
次に、加算部９ａが、ステップＳ１００４で読み出した次回書込位置の値に１加算し（Ｓ１００７）、データ書込処理制御部２は、この値を次回書込位置レジスタ４における新たな次回書込位置として更新する（１００８）。次に、データ書込処理制御部２は、書込処理終了通知を命令実行制御部１へ送る（図示せず）。
【００４４】
書込処理終了通知を受けた命令実行制御部１は、中断していた処理を再開するよう制御信号をデータ読出処理制御部３ｂに送る（Ｓ１００９）。
データ読出処理制御部３ｂは、中断していた処理（つまり、最初の演算データ読み出し）を行う（Ｓ１０１０）。しかしながら、この演算データは、図１７において読み出そうとした最初の演算データではなく、ステップＳ１００６で書き込まれた最新データに置き換わってしまっている。
そして、演算部７が、読み出した演算データを使用して演算処理を行い（Ｓ１０１１）、その後データ読出処理制御部３ｂが、環状バッファ５ａの演算データを順次読み出し、演算部７が演算する（Ｓ１０１１〜Ｓ１０１９）が、ステップＳ１０１０で読み込んだ演算データが本来読み出そうとした演算データとは異なってしまっているため、演算結果に誤差が生じてしまう。
【００４５】
第１実施形態および第２実施形態によれば、特許文献１のようなカウンタや、警告手段を設けなくてもデータを読み出す直前に書込処理が割り込んだ場合において、読み出そうとしたデータが書き換えられることを防止することができる。
【図面の簡単な説明】
【００４６】
【図１】第１実施形態に係るデータ処理装置の構成例を示す図である。
【図２】環状バッファを示す図であり、（ａ）は環状バッファを模式的に示した図であり、（ｂ）は、環状バッファを一次元的に表現した図である。
【図３】環状バッファの読出・書込順を示す図である。
【図４】本実施形態に係るデータ書込処理の流れを示す図である。
【図５】第１実施形態に係るデータ読出処理の流れを示す図である。
【図６】データ書込処理とデータ読出処理とのタイミングチャートを示す図である。
【図７】第１実施形態に係る割り込みが生じたときの処理の流れを示す図である。
【図８】第１実施形態に係る割込発生前の処理を示す図である。
【図９】第１実施形態に係る割込発生後の処理を示す図である。
【図１０】第２実施形態に係るデータ処理装置の構成例を示す図である。
【図１１】第２実施形態に係る割り込みが生じたときの処理の流れを示す図である。
【図１２】第２実施形態に係る割込発生前の処理を示す図である。
【図１３】第２実施形態に係る割込発生後の処理を示す図である。
【図１４】比較例に係るデータ処理装置の構成例を示す図である。
【図１５】比較例に係るデータ読出処理の流れを示す図である。
【図１６】図１５におけるステップＳ８０１の後に、データ書込処理の割り込みが発生した場合の処理の流れを示す図である。
【図１７】比較例に係る最初の演算データの読出処理を示す図である。
【図１８】比較例に係る割込処理発生後における処理を示す図である。
【符号の説明】
【００４７】
１      命令実行制御部
２      データ書込処理制御部
３，３ａ，３ｂ  データ読出処理制御部
４      次回書込位置レジスタ（記憶部）
５，５ａ  環状バッファ
７      演算部
８      最新データレジスタ
９ａ〜９ｃ  加算部
１０    待機処理部
２０，２０ａ，２０ｂ  データ処理装置
【図１】
2009301405.tif 000003
【図２】
2009301405.tif 000004
【図３】
2009301405.tif 000005
【図４】
2009301405.tif 000006
【図５】
2009301405.tif 000007
【図６】
2009301405.tif 000008
【図７】
2009301405.tif 000009
【図８】
2009301405.tif 000010
【図９】
2009301405.tif 000011
【図１０】
2009301405.tif 000012
【図１１】
2009301405.tif 000013
【図１２】
2009301405.tif 000014
【図１３】
2009301405.tif 000015
【図１４】
2009301405.tif 000016
【図１５】
2009301405.tif 000017
【図１６】
2009301405.tif 000018
【図１７】
2009301405.tif 000019
【図１８】
2009301405.tif 000020