(57)【要約】【課題】メモリに格納されたリングバッファのデータ構造を持つ系列データであるリングバッファ系列データの転送を高速化することができるデータ処理装置を提供する。【解決手段】リングバッファ系列データを格納するメモリ２と、１または複数のデータを対象として演算を行う演算器５と、前記演算器５の演算対象データまたは前記演算器５の演算結果データを格納するレジスタ８と、前記メモリ２と前記レジスタ８との間のデータ転送を制御するデータ転送制御部１とを有するデータ処理装置１００であって、前記リングバッファ系列データのデータ転送に関する制御情報を格納するリングバッファ転送制御レジスタ３を有し、前記データ転送制御部１は、前記リングバッファ転送制御レジスタ３の内容に従い前記リングバッファ系列データのデータ転送を行う。【選択図】図１
2008217382.tif 000002
【特許請求の範囲】
【請求項１】
リングバッファのデータ構造を有する系列データであるリングバッファ系列データを格納するメモリと、１または複数のデータを対象として演算を行う演算器と、前記演算器の演算対象データまたは前記演算器の演算結果データを格納するレジスタと、前記メモリと前記レジスタとの間のデータ転送を制御するデータ転送制御部とを有するデータ処理装置であって、
前記リングバッファ系列データについての前記メモリと前記レジスタとの間のデータ転送に関する制御情報を格納するリングバッファ転送制御レジスタを有し、前記データ転送制御部は、前記リングバッファ転送制御レジスタの内容に従い、前記リングバッファ系列データについての前記メモリと前記レジスタとの間のデータ転送を行うことを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、
前記リングバッファ転送制御レジスタは、前記メモリ上における前記リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰと、前記リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥと、前記記憶素子ＳＰに格納されたアドレスと前記リングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦと、前記リングバッファ系列データ内の最新データのアドレスと前記リングバッファ系列データ内の読み出し対象となるデータのアドレスとの差分を格納する記憶素子ＲＯＦＦと、前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際の、前記レジスタ内での転送位置情報を格納する記憶素子ＤＯＦＦとを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際に、前記記憶素子ＳＰと前記記憶素子ＳＩＺＥの値から前記リングバッファ系列データのアドレスを特定し、前記記憶素子ＳＰ、前記記憶素子ＣＯＦＦおよび前記記憶素子ＲＯＦＦの値から算出した物理アドレスに対してアドレス変換を行って前記リングバッファ系列データの範囲内にある実効アドレスを算出し、前記実効アドレスに基づいて読み出し対象となるデータを特定して前記メモリから読み出し、前記記憶素子ＤＯＦＦの値から前記レジスタ内における転送位置を特定して、前記転送位置に前記メモリから読み出したデータを転送することを特徴とするデータ処理装置。
【請求項３】
請求項２記載のデータ処理装置において、
前記リングバッファ転送制御レジスタは、前記記憶素子ＲＯＦＦと前記記憶素子ＤＯＦＦとを一組としたデータ転送パターンを複数組有し、さらに前記データ転送パターンのうちの一組を指定する識別情報を格納する記憶素子ＳＥＬを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際に、前記記憶素子ＳＥＬの値により指定される前記データ転送パターンに属する前記記憶素子ＲＯＦＦおよび前記記憶素子ＤＯＦＦの値を使用してデータ転送を行うことを特徴とするデータ処理装置。
【請求項４】
請求項３記載のデータ処理装置において、
前記データ転送パターンはそれぞれ、該データ転送パターンに属する前記記憶素子ＲＯＦＦおよび前記記憶素子ＤＯＦＦの値が有効かどうかを示す情報を格納する記憶素子Ｖを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送を行った後、該データ転送の際に使用した前記記憶素子ＲＯＦＦおよび前記記憶素子ＤＯＦＦが属する前記データ転送パターンとは別の前記データ転送パターンであり、かつ該データ転送パターンに属する前記記憶素子Ｖの値が有効を示す値であるものを指定するよう、前記記憶素子ＳＥＬの値を更新することを特徴とするデータ処理装置。
【請求項５】
請求項１記載のデータ処理装置において、
前記リングバッファ転送制御レジスタは、前記メモリ上における前記リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰと、前記リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥと、前記記憶素子ＳＰに格納されたアドレスと前記リングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦと、前記リングバッファ系列データ内の最新データのアドレスと前記リングバッファ系列データ内の読み出し対象となるデータ範囲の先頭アドレスとの差分を格納する記憶素子ＲＯＦＦと、前記リングバッファ系列データ内の読み出し対象となるデータ範囲のうち、データ転送の対象となるデータを選択する情報を格納する記憶素子ＳＳと、前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際の、前記レジスタ内での転送位置情報を格納する記憶素子ＤＯＦＦとを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際に、前記記憶素子ＳＰと前記記憶素子ＳＩＺＥの値から前記リングバッファ系列データのアドレスを特定し、前記記憶素子ＳＰ、前記記憶素子ＣＯＦＦおよび前記記憶素子ＲＯＦＦの値から算出した物理ウインドウに対してアドレス変換を行って前記リングバッファ系列データの範囲内にある実効ウインドウを算出し、前記実効ウインドウにより特定される読み出し対象となるデータ範囲のうち、データ転送の対象となるデータを前記記憶素子ＳＳの値に基づいて選択して前記メモリから読み出し、前記記憶素子ＤＯＦＦの値から前記レジスタ内における転送位置を特定して、前記転送位置に前記メモリから読み出したデータを転送することを特徴とするデータ処理装置。
【請求項６】
請求項５記載のデータ処理装置において、
前記リングバッファ転送制御レジスタは、前記記憶素子ＲＯＦＦと前記記憶素子ＳＳと前記記憶素子ＤＯＦＦとを一組としたデータ転送パターンを複数組有し、さらに前記データ転送パターンのうちの一組を指定する識別情報を格納する記憶素子ＳＥＬを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送の際に、前記記憶素子ＳＥＬの値により指定される前記データ転送パターンに属する前記記憶素子ＲＯＦＦ、前記記憶素子ＳＳ、および前記記憶素子ＤＯＦＦの値を使用してデータ転送を行うことを特徴とするデータ処理装置。
【請求項７】
請求項６記載のデータ処理装置において、
前記データ転送パターンはそれぞれ、該データ転送パターンに属する前記記憶素子ＲＯＦＦ、前記記憶素子ＳＳ、および前記記憶素子ＤＯＦＦの値が有効かどうかを示す情報を格納する記憶素子Ｖを有し、
前記リングバッファ系列データについての前記メモリから前記レジスタへのデータ転送を行った後、該データ転送の際に使用した前記記憶素子ＲＯＦＦ、前記記憶素子ＳＳ、および前記記憶素子ＤＯＦＦが属する前記データ転送パターンとは別の前記データ転送パターンであり、かつ該データ転送パターンに属する前記記憶素子Ｖの値が有効を示す値であるものを指定するよう、前記記憶素子ＳＥＬの値を更新することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、特に制御系組み込み機器に搭載されるデータ処理装置に適用して有効な技術に関するものである。
【背景技術】
【０００２】
近年、制御系組み込み機器の高精度化、複雑化が進み、制御系組み込み機器に搭載されるデータ処理装置も更なる高性能が求められている。
【０００３】
データ処理装置の高速化手法として、主に動作周波数の向上と、演算の並列化の二つがある。制御系組み込み機器では、発熱の制約のため動作周波数向上による高速化には限界があり、演算の並列化が有効な高速化手法である。演算の並列化では、並列演算器に効率良く演算対象となるデータを供給することが実効的な性能を向上させる上で重要である。
【０００４】
データ転送に関する従来技術として、特開平９−２５９１１３号公報（特許文献１）には、データ転送開始アドレス、要素間距離、および要素数が格納されたレジスタを指定して、メモリに格納されたベクトルデータをベクトルレジスタに転送するベクトルデータ転送方式が提案されている。
【特許文献１】特開平９−２５９１１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されている技術は、定数の行列データ転送には効果が大きい。一方、制御系アプリケーションの演算では、周期的に内容が更新される有限個の系列データ
｛Ｘ（ｎ），Ｘ（ｎ−１），Ｘ（ｎ−２），・・
，Ｘ（１），Ｘ（０）｝（ｎは正の整数）
を対象とした演算が多く、特許文献１に開示されているベクトルデータ転送方式をこのような系列データの転送に適用する場合、系列データ内の各要素の要素番号ｎと、その要素のアドレスとの対応を固定する必要がある。この場合、系列データを更新する時、
Ｘ（０）＝Ｘ（１），Ｘ（１）＝Ｘ（２），・・
，Ｘ（ｎ−１）＝Ｘ（ｎ），Ｘ（ｎ）＝最新の系列データ
というように系列データの要素数分のデータ更新を行う必要があり、性能低下の要因となる。
【０００６】
系列データ更新を高速化するために、系列データをリングバッファのデータ構造で保持する方法がある。以降リングバッファのデータ構造を持つ系列データをリングバッファ系列データと記載する。この場合、リングバッファ系列データの更新は、最新データに隣接した最古データを上書きし、最新データのアドレスを示すカレントポインタ（一般的にはメモリに配置）を、上書きしたデータのアドレスに書き換えるだけで済む。
【０００７】
しかしながら、このようなリングバッファ系列データ内の特定の要素データを転送するには、リングバッファ系列データの先頭・終了アドレス、最新データのポインタ(カレントポインタ)、転送したい要素データが格納されているアドレスのカレントポインタからのオフセット等のリングバッファ系列データの転送に必要な情報をメモリ等に配置し、転送時にこれらの情報をメモリから読み出して転送対象の要素データのアドレスを演算する必要があり、データ転送の性能が低下する。
【０００８】
そこで、本発明の目的は、メモリに格納されたリングバッファのデータ構造を持つ系列データの転送を高速化することができるデータ処理装置を提供することにある。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１１】
本発明によるデータ処理装置は、リングバッファのデータ構造を有する系列データであるリングバッファ系列データを格納するメモリと、１または複数のデータを対象として演算を行う演算器と、前記演算器の演算対象データまたは前記演算器の演算結果データを格納するレジスタと、前記メモリと前記レジスタとの間のデータ転送を制御するデータ転送制御部とを有するデータ処理装置であって、前記リングバッファ系列データについての前記メモリと前記レジスタとの間のデータ転送に関する制御情報を格納するリングバッファ転送制御レジスタを有し、前記データ転送制御部は、前記リングバッファ転送制御レジスタの内容に従い、前記リングバッファ系列データについての前記メモリと前記レジスタとの間のデータ転送を行うことを特徴とするものである。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
本発明によれば、メモリに格納されたリングバッファのデータ構造を持つ系列データであるリングバッファ系列データ内の特定の要素データの転送を１つのデータ転送命令で実行し、データ転送を高速化するデータ処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
＜実施の形態１＞
本発明の実施の形態１によるデータ処理装置について図１〜図５を用いて説明する。
【００１６】
図１は本発明の実施の形態１によるデータ処理装置の構成を表したブロック図である。データ処理装置１００は、データ転送制御部１、メモリ２、リングバッファ転送制御レジスタ３、アライナ４、演算器５、レジスタバス６，７、レジスタ８から構成される。
【００１７】
データ転送制御部１は、リングバッファ転送制御レジスタ３の内容をリングバッファ転送制御信号１５より入力し、その指定内容に従い、アドレス１０、ＲＷ信号１１、アライナ制御信号１３、レジスタ制御信号１４の各信号を適宜出力して、メモリ２とレジスタ８との間のデータ転送を行う。
【００１８】
メモリ２は、演算の対象となるデータを格納する。メモリ２内のデータ転送の対象となるデータのアドレスを示すアドレス１０と、メモリ２に対する読み出し／書き込み要求を示すＲＷ信号１１とをデータ転送制御部１から入力し、読み出し要求の場合はメモリ２内の対象データを読み出してデータ１２に出力し、書き込み要求の場合はデータ１２に出力されている対象データをメモリ２へ書き込む。なお、本実施の形態によるデータ処理装置１００では、メモリ２は単純なデータ保持回路であるが、キャッシュメモリやバッファのような、データとそれに伴うタグ情報も格納するデータ保持回路であっても良い。
【００１９】
リングバッファ転送制御レジスタ３は、リングバッファ系列データ内の転送対象となる要素データ、およびデータ転送先のレジスタ８内での転送位置を指定する情報等を格納するレジスタである。リングバッファ転送制御レジスタ３の内容は、リングバッファ転送制御信号１５を通してデータ転送制御部１に入力され、前記リングバッファ系列データ内の特定の要素データの転送に使用される。なお、本実施の形態によるデータ処理装置１００では、リングバッファ転送制御レジスタ３を１つ実装しているが、複数実装しても良い。
【００２０】
アライナ４は、メモリ２に入出力するデータのアライメント指定を行うアライナ制御信号１３をデータ転送制御部１から入力し、アライナ制御信号１３に従い、メモリ２からデータ１２を通して出力されたデータをアライメントしてレジスタバス６に出力、またはレジスタバス６に出力されたデータをアライメントしてデータ１２を通してメモリ２に出力する。
【００２１】
演算器５は、レジスタバス７に出力されたレジスタ８の値のうち２つを入力とし、その値を対象に演算を行い、結果をレジスタバス７に出力する。なお、本実施の形態によるデータ処理装置１００では、１つの演算器５を実装しているが、異なる演算を行う演算器を複数実装しても良い。
【００２２】
レジスタ８は、演算器５の演算対象のデータ、または演算器５の演算結果を保持する。レジスタ制御信号１４をデータ転送制御部１から入力し、レジスタ制御信号１４の指定内容に従い、レジスタバス６またはレジスタバス７に出力されたデータを用いて、レジスタ８に格納された値を更新、またはレジスタ８のうちの１つのレジスタを選択し、その値をレジスタバス６に出力、またはレジスタ８のうちの２つのレジスタを選択してレジスタバス７に出力する。
【００２３】
レジスタ制御信号１４では、更新対象レジスタ指定、更新対象レジスタ内の更新対象バイト指定、更新データが出力されているバス指定、レジスタバス６に値を出力するレジスタ指定、およびレジスタバス７に値を出力するレジスタ指定等を行う。なお、本実施の形態によるデータ処理装置１００では、レジスタ８は“Ｒ０”〜“Ｒ１５”の１６個のレジスタを実装しているが、実装個数はこれに限られない。
【００２４】
以下に、リングバッファ転送制御レジスタ３の内容と、それに伴うデータ転送の詳細を図２〜図５を用いて説明する。
【００２５】
図２は、リングバッファ転送制御レジスタ３の構成図である。リングバッファ転送制御レジスタ３は、リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰ２０１、リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥ２０２、ＳＰ２０１に格納されたアドレスとリングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦ２０３、リングバッファ系列データ内の最新データのアドレスとリングバッファ系列データ内の読み出し対象となるデータのアドレスとの差分を格納する記憶素子ＲＯＦＦ２０４、データ転送先のレジスタ８内でのデータを転送するバイト位置を指定する情報を格納する記憶素子ＤＯＦＦ２０５から構成される。
【００２６】
図３は、リングバッファ転送制御レジスタ３においてＤＯＦＦ２０５＝“４”の場合に、データ転送先のレジスタ８に転送されるデータの例を示した図である。データ転送先のレジスタ８をバイト毎に分割し、レジスタの上位ビット側から“０”、“１”、“２”、・・と、ビッグエンディアン方式でバイト番号を付ける。ＤＯＦＦ２０５はこのように番号付けられたバイトのうちでデータを転送する位置の先頭バイト番号を指定する。図３の例では、“ｄ０”〜“ｄ３”の４バイトのデータをデータ転送先のレジスタ８に転送するにあたり、ＤＯＦＦ２０５＝“４”であるので、バイト番号“４”〜“７”のバイトに転送されることになる。
【００２７】
なお、本実施の形態によるデータ処理装置１００では、図３の例のように、ＤＯＦＦ２０５によって指定された先頭アドレスによってデータ転送先のレジスタ８内の更新するバイトを指定しているが、この方法に限らず、例えば、データ転送先レジスタ８のバイト毎に１ビットのデータを対応させた情報を使用し、当該ビットが“１”のときに対応するバイトを更新する、といった指定方法でも良い。
【００２８】
図４は、リングバッファ転送制御レジスタ３のＳＰ２０１＝“１００”、ＳＩＺＥ２０２＝“３２”、ＣＯＦＦ２０３＝“２８”、ＲＯＦＦ２０４＝“８”、ＤＯＦＦ２０５＝“４”の場合における、リングバッファ系列データの転送例を示した図である。図４において、メモリ２内での転送対象のリングバッファ系列データは、ＳＰ２０１＝“１００”、ＳＩＺＥ２０２＝“３２”であることから、先頭アドレス“１００”、終了アドレス“１３１”の範囲に配置された合計３２バイトのデータ（“ｄ１００”〜“ｄ１３１”）である。
【００２９】
転送対象となる要素データのアドレス計算方法を以下に説明する。最初に、ＳＰ２０１に格納されているアドレスに、ＣＯＦＦ２０３に格納されているアドレスの差分と、ＲＯＦＦ２０４に格納されているアドレスの差分をそれぞれ足し合わせて物理アドレスを算出する。次に、物理アドレスにアドレス変換４０００を行い、実効アドレスを算出する。図４の例では、物理アドレス＝“１３６”、実効アドレス＝“１０４”となる。アドレス変換４０００のアルゴリズムは図５を用いて後述する。
【００３０】
次に、実効アドレスによって特定される、データ転送命令で指定された転送長分のデータをメモリ２から読み出す。図４の例は、単位サイズが４バイトの要素データを転送する例であり、“ｄ１０４”〜“ｄ１０７”のデータが対象となる。最後に、読み出されたデータ“ｄ１０４”〜“ｄ１０７”を、ＤＯＦＦ２０５に格納された転送位置情報に従い、データ転送先のレジスタ８のバイト番号“４”〜“７”の位置に転送する。
【００３１】
図５は、アドレス変換４０００のアルゴリズムをＣ言語の関数表記で示したものである。アドレス変換４０００のアルゴリズムを実装した関数“add_trans”は、物理アドレス“p_adr”、ＳＰ２０１の値である“SP”、ＳＩＺＥ２０２の値である“SIZE”を入力し、実効アドレス“e_adr”を演算して出力する。実効アドレス“e_adr”の値は、物理アドレス“p_adr”がリングバッファ系列データの終了アドレス“SP+SIZE-1”以下の場合は、
e_adr = p_adr
とし、物理アドレス“p_adr”がリングバッファ系列データの終了アドレス“SP+SIZE-1”より大きい場合は、
e_adr = p_adr - SIZE
とすることで、物理アドレスがリングバッファ系列データの範囲を超える場合には、リングバッファ系列データの範囲でラップさせて実効アドレスがリングバッファ系列データの範囲内のアドレスを指すようにする。なお、一般的にプロセッサ等のデータ処理装置では、例えば、図４の例のような４バイトの要素データはメモリ上の４バイトの境界アドレスに配置されるため、リングバッファ系列データのサイズを４バイトの倍数とすることで、前記実効アドレスによって特定される要素データの一部がリングバッファ系列データの終了アドレスを超えるというような場合はない。
【００３２】
以上、図１〜図５を用いて説明した本実施の形態により、リングバッファ系列データ内の特定の要素データのアドレスを、リングバッファ転送制御レジスタ３に基づいてハードウエアで演算することで、１つのデータ転送命令で前記要素データを転送することが可能となる。
【００３３】
また、リングバッファ系列データ内の特定の要素データを指定するための情報を、ＳＰ２０１に格納されたアドレスとリングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦ２０３と、リングバッファ系列データ内の最新データのアドレスとリングバッファ系列データ内の読み出し対象となるデータのアドレスとの差分を格納する記憶素子ＲＯＦＦ２０４とに分けて、リングバッファ転送制御レジスタ３に保持している。これにより、リングバッファ系列データ内の最新データを更新する際に、更新対象データのアドレスをＣＯＦＦ２０３のみをインクリメントした値としてハードウエアで演算し、ＲＯＦＦ２０４の値はそのまま保持できることから、１つのデータ転送命令で最新データを更新することが可能となる。以上により、リングバッファ系列データの転送および更新を高速化することができる。
【００３４】
さらに、ＤＯＦＦ２０５によりデータ転送先のレジスタ８でのデータを転送するバイト位置を指定するため、リングバッファ転送制御レジスタ３を使用した複数のデータ転送命令を組み合わせることで、リングバッファ系列データ内の不連続な要素データを、データ転送先のレジスタ８で連続した状態にパッキングして格納することができる。これにより、リングバッファ系列データ内の不連続な要素データに対する演算も、これらのデータをパッキングして格納したレジスタ８を用いた１つの演算命令で処理することが可能となり、演算を高速化することができる。
【００３５】
＜実施の形態２＞
本発明の実施の形態２によるデータ処理装置について図１および図６を用いて説明する。
【００３６】
本実施の形態によるデータ処理装置の構成は図１のブロック図と同一である。図１の内容については前述の通りであるため、ここでの説明は省略する。
【００３７】
図６はリングバッファ転送制御レジスタ３の構成図である。リングバッファ転送制御レジスタ３は、リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰ２０１、リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥ２０２、ＳＰ２０１に格納されたアドレスとリングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦ２０３を有する。さらに、リングバッファ転送制御レジスタ３は、２組の転送パターンとして転送パターン０（６０５）、転送パターン１（６１５）を有する。
【００３８】
ここで、転送パターンの定義は、リングバッファ系列データ内の最新データのアドレスとリングバッファ系列データ内の読み出し対象となるデータのアドレスとの差分を格納する記憶素子ＲＯＦＦ、データ転送先のレジスタ８内でのデータを転送するバイト位置を指定する情報を格納する記憶素子ＤＯＦＦ、および前記ＲＯＦＦとＤＯＦＦとに格納された値が有効であるかを示すビットを格納する記憶素子Ｖの組と定義する。従って、転送パターン０（６０５）は、ＲＯＦＦ０（６０２）、ＤＯＦＦ０（６０３）、Ｖ０（６０４）の組であり、転送パターン１（６１５）は、ＲＯＦＦ１（６１２）、ＤＯＦＦ１（６１３）、Ｖ１（６１４）の組である。
【００３９】
さらに、リングバッファ転送制御レジスタ３は、リングバッファ系列データの転送のために使用する前記転送パターンを指定する識別番号を格納する記憶素子ＳＥＬ６０１を有する。ここで、ＳＥＬ６０１＝“０”の時は転送パターン０（６０５）、ＳＥＬ６０１＝“１”の時は転送パターン１（６１５）に属するＲＯＦＦおよびＤＯＦＦを使用してデータ転送を行うものとする。なお、本実施の形態によるデータ処理装置１００は転送パターン０（６０５）と転送パターン１（６１５）の２つの転送パターンを有するが、さらに多くの転送パターンを有しても良い。
【００４０】
リングバッファ転送制御レジスタ３の、ＳＰ２０１、ＳＩＺＥ２０２、およびＣＯＦＦ２０３の値、およびＳＥＬ６０１により指定された転送パターンに属するＲＯＦＦおよびＤＯＦＦの値に従い、メモリ２に格納されたリングバッファ系列データ内の特定の要素データを転送する方法については、前述の実施の形態１と同様であるため、ここでは説明を省略する。
【００４１】
ＳＥＬ６０１に格納された識別番号により指定された転送パターンに属するＲＯＦＦおよびＤＯＦＦの値を参照して、リングバッファ系列データの転送を行った後は、現在指定されている転送パターンとは別の転送パターンであり、かつ当該転送パターンに属するＶの値が“有効”を示す転送パターンの識別番号によってＳＥＬ６０１を更新する。本実施の形態によるデータ処理装置１００においては、例えばＶ０（６０４）とＶ１（６１４）が共に有効を示す場合は、データ転送の度に転送パターン０（６０５）と転送パターン１（６１５）を交互に指定することになる。
【００４２】
以上、図１および図６を用いて説明した本実施の形態により、データ転送に先立ち、初期化ルーチン等で予め転送パターン０（６０５）、転送パターン１（６１５）にそれぞれ属するＲＯＦＦ０（６０２）、ＤＯＦＦ０（６０３）およびＲＯＦＦ１（６１２）、ＤＯＦＦ１（６１３）に値を設定しておくことにより、リングバッファ系列データ内の二つの特定の要素データを交互に転送する場合においては、ＲＯＦＦおよびＤＯＦＦの値をデータ転送毎に更新する必要がなくなるため、データ転送を高速化することが可能となる。また、保持する転送パターンの数をさらに増やすことにより、ＲＯＦＦおよびＤＯＦＦの値を更新することなく順に転送できるリングバッファ系列データ内の特定の要素データをさらに増やすことができ、データ転送をさらに高速化することが可能となる。
【００４３】
＜実施の形態３＞
本発明の実施の形態３によるデータ処理装置について図１および図７〜図９を用いて説明する。
【００４４】
本実施の形態によるデータ処理装置の構成は図１のブロック図と同一である。図１の内容については前述の通りであるため、ここでの説明は省略する。
【００４５】
図７はリングバッファ転送制御レジスタ３の構成図である。リングバッファ転送制御レジスタ３は、リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰ２０１、リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥ２０２、ＳＰ２０１に格納されたアドレスとリングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦ２０３、リングバッファ系列データ内の最新データのアドレスとリングバッファ系列データ内の読み出し対象となるデータ範囲の先頭アドレスとの差分を格納する記憶素子ＲＯＦＦ２０４、データ転送先のレジスタ８内でのデータを転送するバイト位置を指定する情報を格納する記憶素子ＤＯＦＦ２０５、リングバッファ系列データ内の読み出し対象となるデータ範囲のうち、転送するデータを選択する情報を格納する記憶素子ＳＳ７００から構成される。
【００４６】
図８は、リングバッファ転送制御レジスタ３の値が、ＳＰ２０１＝“１００”、ＳＩＺＥ２０２=“３２”、ＣＯＦＦ２０３＝“４”、ＲＯＦＦ２０４=“４”、ＤＯＦＦ２０５＝“４”、ＳＳ７００＝“‘ｂ１１００００１１”の場合における、リングバッファ系列データの転送例を示した図である。図８において、メモリ２内での転送対象となるリングバッファ系列データは、ＳＰ２０１＝“１００”、ＳＩＺＥ２０２＝“３２”であることから、先頭アドレス“１００”、終了アドレス“１３１”の範囲に配置された合計３２バイトのデータ（“ｄ１００”〜“ｄ１３１”）である。
【００４７】
転送対象となる要素データのアドレス計算方法を以下に説明する。最初に、ＳＰ２０１に格納されているアドレスに、ＣＯＦＦ２０３に格納されているアドレスの差分と、ＲＯＦＦ２０４に格納されているアドレスの差分をそれぞれ足し合わせたアドレスを先頭とし、そこからウインドウサイズ分のアドレス範囲を物理ウインドウとして算出する。ウインドウサイズについては後述するが、図８の例では８バイトである。
【００４８】
次に、物理ウインドウにウインドウ変換８０００を行い、実効ウインドウを算出する。図８の例では、物理ウインドウと実効ウインドウは一致し、実効ウインドウはアドレス“１０８”〜“１１５”の８バイトの範囲となる。ウインドウ変換８０００のアルゴリズムは図９を用いて後述する。
【００４９】
次に、実効ウインドウ内のデータ（“ｄ１０８”〜“ｄ１１５”）の中から、ＳＳ７００の値に従いデータを選択してメモリ２から読み出す。本実施の形態によるデータ処理装置１００では、ＳＳ７００の上位ビットから下位ビットへと順番に、実効ウインドウ内のデータの中でアドレスの小さいデータから大きいデータへと、ＳＳ７００の各ビットと実効ウインドウ内の各データを１バイト単位で対応付ける。ＳＳ７００のビットの値が“１”である場合、当該ビットの位置に対応する実行ウインドウ内のデータを読み出す対象として選択する。
【００５０】
図８の例では、ＳＳ７００＝“‘ｂ１１００００１１”であり、上位ビットから１番目、２番目、７番目、８番目のビットの値が“１”であることから、実効ウインドウ内のデータ（“ｄ１０８”〜“ｄ１１５”）から、１番目、２番目、７番目、８番目にある“ｄ１０８”、“ｄ１０９”、“ｄ１１４”、“ｄ１１５”のデータを選択して読み出す。
【００５１】
最後に、読み出されたデータ（“ｄ１０８”、“ｄ１０９”、“ｄ１１４”、“ｄ１１５”）を、ＤＯＦＦ２０５に格納された転送位置情報に従い、データ転送先のレジスタ８のバイト番号“４”〜“７”の位置に転送する。ＤＯＦＦ２０５に格納された値によってデータ転送先のレジスタ８にデータ転送する処理の詳細は、実施の形態１において説明した内容と同様であるため、ここでは説明を省略する。
【００５２】
前述のウインドウサイズについては、ＳＳ７００のビット数と、各ビットに対応する実効ウインドウ内の要素データの単位サイズとを掛けたものとなる。図８の例では、ＳＳ７００の各ビットに対応する実効ウインドウ内の要素データの単位サイズを１バイトとしており、ＳＳ７００のビット数が８であることから、ウインドウサイズは８バイトとなる。前記単位サイズは、データ転送命令での指定によって２バイト、４バイト、８バイト等のサイズとすることも可能である。この場合、ウインドウサイズはそれぞれ１６バイト、３２バイト、６４バイトとなり、ＳＳ７００において値が“１”のビットの位置に対応する実効ウインドウ内の要素データがデータ転送の対象となる。
【００５３】
図９は、ウインドウ変換８０００のアルゴリズムをＣ言語の関数表記で示したものである。ウインドウ変換８０００のアルゴリズムを実装した関数“window_trans”は、物理ウインドウ内の各要素データのアドレスを格納した配列“pw_adr”、ＳＰ２０１の値である“SP”、ＳＩＺＥ２０２の値である“SIZE”、データ転送命令によって指定される転送サイズ“acc_size”を入力し、実効ウインドウ内の各要素データのアドレスを格納した配列“ew_adr”を演算して出力する。“ew_adr”の各要素“ew_adr[i]”の演算は、“pw_adr”の各要素“pw_adr［i]”の値がリングバッファ系列データの終了アドレス“SP+SIZE-1”以下の場合は、
ew_adr[i] = pw_adr[i]
とし、“pw_adr[i]”がリングバッファ系列データの終了アドレス“SP+SIZE-1”より大きい場合は、
ew_adr[i] = p_adr[i] - SIZE
とすることで、物理ウインドウ内の要素データのアドレスがリングバッファ系列データの範囲を超える場合には、リングバッファ系列データの範囲でラップさせて実効ウインドウ内の要素データのアドレスがリングバッファ系列データの範囲内のアドレスを指すようにする。以上の演算を“ew_adr”の各要素に対して行う。
【００５４】
以上、図１および図７〜図９を用いて説明した本実施の形態により、リングバッファ系列データ内の不連続な特定の要素データについての転送を１つのデータ転送命令で実行し、データ転送を高速化することができる。
【００５５】
＜実施の形態４＞
本発明の実施の形態４によるデータ処理装置について図１および図１０を用いて説明する。
【００５６】
本実施の形態によるデータ処理装置の構成は図１のブロック図と同様である。図１の内容については前述の通りであるため、ここでの説明は省略する。
【００５７】
図１０はリングバッファ転送制御レジスタ３の構成図である。リングバッファ転送制御レジスタ３は、リングバッファ系列データの先頭アドレスを格納する記憶素子ＳＰ２０１、リングバッファ系列データに含まれる、アドレスによって識別される不可分データの個数を格納する記憶素子ＳＩＺＥ２０２、ＳＰ２０１に格納されたアドレスとリングバッファ系列データ内の最新データのアドレスとの差分を格納する記憶素子ＣＯＦＦ２０３を有する。さらに、リングバッファ転送制御レジスタ３は、２組の転送パターンとして転送パターン０（１００１）、転送パターン１（１０１１）を有する。
【００５８】
ここで、転送パターンの定義は、リングバッファ系列データ内の最新データのアドレスとリングバッファ系列データ内の読み出し対象となるデータ範囲の先頭アドレスとの差分を格納する記憶素子ＲＯＦＦ、データ転送先のレジスタ８内でのデータを転送するバイト位置を指定する情報を格納する記憶素子ＤＯＦＦ、リングバッファ系列データ内の読み出し対象となるデータ範囲のうち、転送するデータを選択する情報を格納する記憶素子ＳＳ、および前記ＲＯＦＦとＤＯＦＦとに格納された値が有効であるかを示すビットを格納する記憶素子Ｖの組と定義する。従って、転送パターン０（１００１）は、ＲＯＦＦ０（６０２）、ＤＯＦＦ０（６０３）、ＳＳ０（１０００）、Ｖ０（６０４）の組であり、転送パターン１（１０１１）は、ＲＯＦＦ１（６１２）、ＤＯＦＦ１（６１３）、ＳＳ１（１０１０）、Ｖ１（６１４）の組である。
【００５９】
さらに、リングバッファ転送制御レジスタ３は、リングバッファ系列データの転送のために使用する前記転送パターンを指定する識別番号を格納する記憶素子ＳＥＬ６０１を有する。ここで、ＳＥＬ６０１＝“０”の時は転送パターン０（１００１）、ＳＥＬ６０１＝“１”の時は転送パターン１（１０１１）に属するＲＯＦＦ、ＤＯＦＦおよびＳＳを使用してデータ転送を行うものとする。なお、本実施の形態によるデータ処理装置１００は転送パターン０（１００１）と転送パターン１（１０１１）の２組の転送パターンを有するが、さらに多くの転送パターンを有しても良い。
【００６０】
リングバッファ転送制御レジスタ３の、ＳＰ２０１、ＳＩＺＥ２０２、およびＣＯＦＦ２０３の値、およびＳＥＬ６０１により指定された転送パターンに属するＲＯＦＦ、ＤＯＦＦおよびＳＳの値に従い、メモリ２に格納されたリングバッファ系列データ内の特定の要素データを転送する方法については、前述の実施の形態３と同様であるため、ここでは説明を省略する。
【００６１】
ＳＥＬ６０１に格納された識別番号により指定された転送パターンに属するＲＯＦＦ、ＤＯＦＦおよびＳＳの値を参照して、リングバッファ系列データの転送を行った後に、別の転送パターンを指定する方法については、前述の実施の形態２と同様であるため、ここでは説明を省略する。
【００６２】
以上、図１および図１０を用いて説明した本実施の形態により、データ転送に先立ち、初期化ルーチン等で予め転送パターン０（１００１）、転送パターン１（１０１１）にそれぞれ属するＲＯＦＦ０（６０２）、ＤＯＦＦ０（６０３）、ＳＳ０（１０００）およびＲＯＦＦ１（６１２）、ＤＯＦＦ１（６１３）、ＳＳ１（１０１０）に値を設定しておくことにより、リングバッファ系列データ内の二つの不連続な特定の要素データを交互に転送する場合においては、ＲＯＦＦ、ＤＯＦＦおよびＳＳの値をデータ転送毎に更新する必要がなくなるため、データ転送を高速化することが可能となる。また、保持する転送パターンの数をさらに増やすことにより、ＲＯＦＦ、ＤＯＦＦおよびＳＳの値を更新することなく順に転送できるリングバッファ系列データ内の不連続な特定の要素データをさらに増やすことができ、データ転送をさらに高速化することが可能となる。
【００６３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００６４】
本発明は、データ処理装置、特に制御系組み込み機器に搭載されるデータ処理装置に利用可能である。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態１によるデータ処理装置の構成を表したブロック図である。
【図２】本発明の実施の形態１における、リングバッファ転送制御レジスタの構成図である。
【図３】本発明の実施の形態１における、データ転送先のレジスタに転送されるデータの例を示した図である。
【図４】本発明の実施の形態１における、リングバッファ系列データの転送例を示した図である。
【図５】本発明の実施の形態１における、アドレス変換のアルゴリズムをＣ言語の関数表記で示したものである。
【図６】本発明の実施の形態２における、リングバッファ転送制御レジスタの構成図である。
【図７】本発明の実施の形態３における、リングバッファ転送制御レジスタの構成図である。
【図８】本発明の実施の形態３における、リングバッファ系列データの転送例を示した図である。
【図９】本発明の実施の形態３における、ウインドウ変換のアルゴリズムをＣ言語の関数表記で示したものである。
【図１０】本発明の実施の形態４における、リングバッファ転送制御レジスタの構成図である。
【符号の説明】
【００６６】
１…データ転送制御部、２…メモリ、３…リングバッファ転送制御レジスタ、４…アライナ、５…演算器、６…レジスタバス、７…レジスタバス、８…レジスタ、１０…アドレス、１１…ＲＷ信号、１２…データ、１３…アライナ制御信号、１４…レジスタ制御信号、１５…リングバッファ転送制御信号、１００…データ処理装置、
２０１…記憶素子ＳＰ、２０２…記憶素子ＳＩＺＥ、２０３…記憶素子ＣＯＦＦ、２０４…記憶素子ＲＯＦＦ、２０５…記憶素子ＤＯＦＦ、
６０１…記憶素子ＳＥＬ、６０２…記憶素子ＲＯＦＦ０、６０３…記憶素子ＤＯＦＦ０、６０４…記憶素子Ｖ０、６０５…転送パターン０、６１２…記憶素子ＲＯＦＦ１、６１３…記憶素子ＤＯＦＦ１、６１４…記憶素子Ｖ１、６１５…転送パターン１
７００…記憶素子ＳＳ、
１０００…記憶素子ＳＳ０、１００１…転送パターン０、１０１０…記憶素子ＳＳ１、１０１１…転送パターン１。
【図１】
2008217382.tif 000003
【図２】
2008217382.tif 000004
【図３】
2008217382.tif 000005
【図４】
2008217382.tif 000006
【図５】
2008217382.tif 000007
【図６】
2008217382.tif 000008
【図７】
2008217382.tif 000009
【図８】
2008217382.tif 000010
【図９】
2008217382.tif 000011
【図１０】
2008217382.tif 000012