(57)【要約】【課題】一定ビット長のデータ内の無効データを削除して有効データのストリームを生成することができるデータ処理装置を提供することを課題とする。【解決手段】データ処理装置は、サイクル毎に一定ビット長のデータを入力し、前記データ内の先頭の無効データを削除するように前記データをシフトするシフト回路（７０５）と、前記シフトされたサイクル毎のデータを結合したデータが前記一定ビット長以上になると、先頭の前記一定ビット長のデータを切り出して外部に出力するゲート回路（７０７）とを有する。【選択図】図７
2014182584.tif 000002
【特許請求の範囲】
【請求項１】
サイクル毎に一定ビット長のデータを入力し、前記データ内の先頭の無効データを削除するように前記データをシフトするシフト回路と、
前記シフトされたサイクル毎のデータを結合したデータが前記一定ビット長以上になると、先頭の前記一定ビット長のデータを切り出して外部に出力するゲート回路と
を有することを特徴とするデータ処理装置。
【請求項２】
さらに、前記ゲート回路により出力されたデータを用いて演算を行う演算部を有することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
さらに、前記シフトされた連続する複数サイクルのデータを結合したデータが前記一定ビット長未満である場合には、先頭の前記一定ビット長のデータをバッファリングし、前記シフトされた連続する複数サイクルのデータを結合したデータが前記一定ビット長以上である場合には、先頭の前記一定ビット長のデータを除いた残りのデータをバッファリングするバッファを有することを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
さらに、前記バッファのデータ内の有効データを選択するセレクタを有し、
前記ゲート回路は、前記セレクタにより選択された前回のサイクルの有効データと前記シフト回路によりシフトされた現在のサイクルの有効データとを結合したデータが前記一定ビット長以上になると、先頭の前記一定ビット長のデータを切り出して外部に出力することを特徴とする請求項３記載のデータ処理装置。
【請求項５】
さらに、サイクル毎に前記一定ビット長のデータを読み出して前記シフト回路に出力するメモリを有することを特徴とする請求項１〜４のいずれか１項に記載のデータ処理装置。
【請求項６】
さらに、前記ゲート回路及び前記演算部間に設けられるファーストインファーストアウト回路を有することを特徴とする請求項２記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
第１バスと第２バスを含むコンピュータ・システム用のブリッジであって、第１バスと第２バスの間に配置されるブリッジが知られている（例えば、特許文献１参照）。シフタは、第１バスおよび第２バスのうちの一方からバイトを受け取るために接続された入力と、シフトされたバイトに受け取ったバイトに関して選択可能なシフトを行う出力とを有する。アキュムレータは、シフタの出力を受け取るために接続された入力を有し、シフトされたバイトの選択的な累積を行う。アキュムレータが第１バスおよび第２バスのうちの他方に渡される再アラインメントされたバイトを供給する出力を有する。
【０００３】
プロセッサ中で未アライメントデータを読み取る方法が知られている（例えば、特許文献２参照）。未アライメントデータは一つの記憶装置に保存され、記憶装置はワード境界により複数のｍビットのワードに分割される。未アライメントデータはワード境界により、第１部分、第２部分及び第３部分に分割される。この方法は、開始キャプチャステップ、中継キャプチャステップ、第１移動ステップ、終了キャプチャステップ、第２移動ステップを具える。開始キャプチャステップでは第１命令を実行し、第１部分を具えた記憶装置の部分より、第１ワードをキャプチャする。中継キャプチャステップでは、第２命令を実行し、第２部分を具えた記憶装置の部分より、第２ワードをキャプチャする。第１移動ステップでは、第１ワードと第２ワードを直列に接続し、並びに第１位置に移動させる。終了キャプチャステップでは、第３命令を実行し、第３部分を具えた該記憶装置の部分より、第３ワードをキャプチャする。第２移動ステップでは、第２ワードと第３ワードを直列に接続し、並びに第１位置に移動させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２６７９８９号公報
【特許文献２】特開２００５−２６７２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
メモリには、サイクル毎に一定ビット長のデータを読み出して出力するメモリがある。そのようなメモリは、有効データのみを切り出して出力することができず、有効データ及び／又は無効データを含む一定ビット長のデータを出力する。そのようなメモリの場合、演算部は、メモリから出力されたデータのうちの無効データを無視して有効データのみを用いて演算をする必要がある。無効データがある場合、演算部の演算に待ちが発生する課題が存在する。
【０００６】
本発明の目的は、一定ビット長のデータ内の無効データを削除して有効データのストリームを生成することができるデータ処理装置を提供することである。
【課題を解決するための手段】
【０００７】
データ処理装置は、サイクル毎に一定ビット長のデータを入力し、前記データ内の先頭の無効データを削除するように前記データをシフトするシフト回路と、前記シフトされたサイクル毎のデータを結合したデータが前記一定ビット長以上になると、先頭の前記一定ビット長のデータを切り出して外部に出力するゲート回路とを有する。
【発明の効果】
【０００８】
一定ビット長のデータ内の無効データを削除して有効データのストリームを生成することができる。これにより、データを用いた演算の待ち時間によるロスを解消することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施形態によるデータ処理装置の構成例を示す図である。
【図２】図２は、図１の演算部の演算例を示す図である。
【図３】図３は、図１のメモリの構成例を示す図である。
【図４】図４は、図１のデータ処理回路が入力するデータの例を示す図である。
【図５】図５は、図１のデータ処理回路の他の処理例を示す図である。
【図６】図６は、無効データを削除した有効データのデータストリームを示す図である。
【図７】図７は、図１のデータ処理回路の構成例を示す図である。
【図８】図８は、図７のシフト選択回路の構成例を示す図である。
【図９】図９（Ａ）及び（Ｂ）は、データの例を示す図である。
【図１０】図１０は、１サイクル目の図７のデータ処理回路の処理例を示す図である。
【図１１】図１１は、１サイクル目の図８のシフト選択回路の処理例を示す図である。
【図１２】図１２は、２サイクル目の図７のデータ処理回路の処理例を示す図である。
【図１３】図１３は、２サイクル目の図８のシフト選択回路の処理例を示す図である。
【図１４】図１４は、３サイクル目の図７のデータ処理回路の処理例を示す図である。
【図１５】図１５は、３サイクル目の図８のシフト選択回路の処理例を示す図である。
【図１６】図１６は、４サイクル目の図７のデータ処理回路の処理例を示す図である。
【図１７】図１７は、４サイクル目の図８のシフト選択回路の処理例を示す図である。
【図１８】図１８は、５サイクル目の図７のデータ処理回路の処理例を示す図である。
【図１９】図１９は、６サイクル目の図７のデータ処理回路の処理例を示す図である。
【発明を実施するための形態】
【００１０】
図１は、本実施形態によるデータ処理装置の構成例を示す図である。データ処理装置は、プロセッサ１０１、メモリ１０２、データ処理回路１０４、ファーストインファーストアウト（ＦＩＦＯ）回路１０５Ａ〜１０５Ｆ及び演算部１０６を有する。メモリ１０２は、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１０３Ａ〜１０３Ｆを有する。プロセッサ１０１は、メモリ１０２、データ処理回路１０４及び演算部１０６を制御する。
【００１１】
ダイレクトメモリアクセスコントローラ１０３Ａ〜１０３Ｄは、それぞれ、読み出し開始アドレス及び読み出しデータ長を含む読み出し命令をプロセッサ１０１から入力すると、その読み出し命令に対応するデータをメモリ１０２から読み出して、データＤＡ１〜ＤＤ１をデータ処理回路１０４に出力する。データ処理回路１０４は、データＤＡ１〜ＤＤ１を入力し、データＤＡ１〜ＤＤ１内の無効データを削除し、有効データＤＡ２〜ＤＤ２を出力する。ファーストインファーストアウト回路１０５Ａ〜１０５Ｄは、それぞれ、有効データＤＡ２〜ＤＤ２を先入れ先出しによりバッファリングし、データＤＡ３〜ＤＤ３を出力する。演算部１０６は、データＤＡ３〜ＤＤ３のすべて又は一部を用いて演算を行い、データＤＥ１及び／又はＤＦ１を出力する。ファーストインファーストアウト回路１０５Ｅ及び１０５Ｆは、それぞれ、データＤＥ１及びＥＦ１を先入れ先出しによりバッファリングし、データＤＥ２及びＥＦ２を出力する。ダイレクトメモリアクセスコントローラ１０３Ｅ及び１０３Ｆは、それぞれ、書き込み開始アドレス及び書き込みデータ長を含む書き込み命令をプロセッサ１０１から入力すると、その書き込み命令に対応するメモリ１０２のアドレスにデータＤＥ２及びＤＦ２を書き込む。
【００１２】
図２は、図１の演算部１０６の演算例を示す図である。演算部１０６は、データＤＡ３及びＤＢ３を入力し、例えば次式の演算を行い、データＤＦ１を出力する。
Ａ０×Ｂ０＝Ｆ０
Ａ１×Ｂ１＝Ｆ１
Ａ２×Ｂ２＝Ｆ２
Ａ３×Ｂ０＝Ｆ３
Ａ４×Ｂ１＝Ｆ４
Ａ５×Ｂ２＝Ｆ５
Ａ６×Ｂ０＝Ｆ６
Ａ７×Ｂ１＝Ｆ７
Ａ８×Ｂ２＝Ｆ８
Ａ９×Ｂ０＝Ｆ９
Ａ１０×Ｂ１＝Ｆ１０
Ａ１１×Ｂ２＝Ｆ１１
【００１３】
データＤＡ３は、データＡ０〜Ａ１１を有する。データＤＢ３は、４組のデータＢ０〜Ｂ２を有する。データＤＦ１は、データＦ０〜Ｆ１１を有する。この場合、ダイレクトメモリアクセスコントローラ１０３Ａは、データＤＡ１として、１２個のデータＡ０〜Ａ１１を１回読み出す。これに対し、ダイレクトメモリアクセスコントローラ１０３Ｂは、データＤＢ１として、３個のデータＢ０〜Ｂ２を４回繰り返して読み出す。
【００１４】
図３は、図１のメモリ１０２の構成例を示す図である。メモリ１０２は、サイクル毎に一定ビット長（例えば５１２ビット）のメモリライン３０１単位でデータの読み出し及び書き込みを行う。メモリ１０２は、例えば、各アドレスに１６ビットデータを記憶する。
【００１５】
データストリーム３０２Ａは、例えば４本のメモリライン上に記憶されており、その先頭アドレス及び末尾アドレスはメモリラインの境界ではないアドレスに位置する。ダイレクトメモリアクセスコントローラ１０３Ａは、読み出し開始アドレス及び読み出しデータ長を含む読み出し命令をプロセッサ１０１から入力すると、その読み出し命令に対応するデータストリーム３０２Ａを含む４本のメモリライン（４×５１２ビット）のデータをメモリ１０２から読み出して、データＤＡ１をデータ処理回路１０４に出力する。
【００１６】
データストリーム３０２Ｂは、例えば２本のメモリライン上に記憶されており、その先頭アドレス及び末尾アドレスはメモリラインの境界ではないアドレスに位置する。ダイレクトメモリアクセスコントローラ１０３Ｂは、読み出し開始アドレス及び読み出しデータ長を含む読み出し命令をプロセッサ１０１から入力すると、その読み出し命令に対応するデータストリーム３０２Ｂを含む２本のメモリライン（２×５１２ビット）のデータをメモリ１０２から読み出して、データＤＢ１をデータ処理回路１０４に出力する。
【００１７】
図４は、図１のデータ処理回路１０４が入力するデータＤＡ１及びＤＢ１の例を示す図である。データＤＡ１は、図３に示したようにデータストリーム３０２Ａを含む４本のメモリラインのデータで構成され、データストリーム３０２Ａは、図２に示したように１２個のデータＡ０〜Ａ１１を有する。データＤＡ１は、有効データであるデータストリーム３０２Ａ及び無効データ４０１を有する。データ処理回路１０４は、無効データ４０１を削除して、有効データのデータストリーム３０２Ａをファーストインファーストアウト回路１０５Ａに出力する。
【００１８】
データＤＢ１は、図２及び図３に示すように、データストリーム３０２Ｂを含む２本のメモリラインのデータが４回繰り返してメモリ１０２から読み出される。なお、図４では、４回目のデータストリーム３０２Ｂを省略している。各データストリーム３０２Ｂは、３個のデータＢ０〜Ｂ２で構成される。データＤＢ１は、有効データであるデータストリーム３０２Ｂ及び無効データ４０１を有する。データ処理回路１０４は、無効データ４０１を削除して、有効データの３個のデータストリーム３０２Ｂを結合してファーストインファーストアウト回路１０５Ｂに出力する。
【００１９】
これにより、演算部１０６は、１２個のデータＡ０〜Ａ１１と、１２個のデータＢ０〜Ｂ２，Ｂ０〜Ｂ２，Ｂ０〜Ｂ２，Ｂ０〜Ｂ２とをそれぞれ対応付けて、図２に示した演算を行うことができる。
【００２０】
以上のように、メモリ１０２は、サイクル毎に一定ビット長のメモリライン３０１単位でデータを読み出して出力する。メモリ１０２は、有効データのみを切り出して出力することができず、有効データ及び無効データ４０１を含む一定ビット長のデータを出力する。無効データ４０１が存在すると、演算部１０６は、メモリ１０２から出力されたデータのうちの無効データ４０１を無視して有効データのみを用いて演算をする必要があり、演算部１０６の演算に待ちが発生する課題が存在する。
【００２１】
本実施形態では、データ処理回路１０４は、一定ビット長のデータ内の無効データ４０１を削除して、有効データのストリームを生成することができる。これにより、データを用いた演算の待ち時間によるロスを解消することができる。
【００２２】
図５は、図１のデータ処理回路１０４の他の処理例を示す図である。データＤＡ１及びＤＢ１の処理は、図４の処理と同じである。
【００２３】
データ処理回路１０４は、データＤＡ１を入力し、無効データ４０１を削除して、図６に示すように、有効データのデータストリーム３０２Ａで構成されるデータＤＡ２をファーストインファーストアウト回路１０５Ａに出力する。
【００２４】
また、データ処理回路１０４は、データＤＢ１を入力し、無効データ４０１を削除して、図６に示すように、有効データの４個のデータストリーム３０２Ｂを結合したデータＤＢ２をファーストインファーストアウト回路１０５Ｂに出力する。
【００２５】
データＤＣ１は、データストリーム３０２Ｃを含む３本のメモリラインのデータが２回繰り返してメモリ１０２から読み出される。各データストリーム３０２Ｃは、６個のデータＣ０〜Ｃ５で構成される。データＤＣ１は、有効データであるデータストリーム３０２Ｃ及び無効データ４０１を有する。データ処理回路１０４は、データＤＣ１を入力し、無効データ４０１を削除して、図６に示すように、有効データの２個のデータストリーム３０２Ｃを結合したデータＤＣ２をファーストインファーストアウト回路１０５Ｃに出力する。
【００２６】
データＤＤ１は、データストリーム３０２Ｄを含む４本のメモリラインのデータが読み出される。データストリーム３０２Ｄは、１２個のデータＤ０〜Ｄ１１で構成される。データＤＤ１は、有効データであるデータストリーム３０２Ｄ及び無効データ４０１を有する。データ処理回路１０４は、データＤＤ１を入力し、無効データ４０１を削除して、図６に示すように、有効データのデータストリーム３０２Ｄで構成されるデータＤＤ２をファーストインファーストアウト回路１０５Ｄに出力する。
【００２７】
この場合、図１の演算部１０６は、データＤＡ３〜ＤＤ３を入力し、例えば次式の演算を行い、データＤＦ１を出力する。
Ａ０×Ｂ０＋Ｃ０＋Ｄ０＝Ｆ０
Ａ１×Ｂ１＋Ｃ１＋Ｄ１＝Ｆ１
Ａ２×Ｂ２＋Ｃ２＋Ｄ２＝Ｆ２
Ａ３×Ｂ０＋Ｃ３＋Ｄ３＝Ｆ３
Ａ４×Ｂ１＋Ｃ４＋Ｄ４＝Ｆ４
Ａ５×Ｂ２＋Ｃ５＋Ｄ５＝Ｆ５
Ａ６×Ｂ０＋Ｃ０＋Ｄ６＝Ｆ６
Ａ７×Ｂ１＋Ｃ１＋Ｄ７＝Ｆ７
Ａ８×Ｂ２＋Ｃ２＋Ｄ８＝Ｆ８
Ａ９×Ｂ０＋Ｃ３＋Ｄ９＝Ｆ９
Ａ１０×Ｂ１＋Ｃ４＋Ｄ１０＝Ｆ１０
Ａ１１×Ｂ２＋Ｃ５＋Ｄ１１＝Ｆ１１
【００２８】
図７は、図１のデータ処理回路１０４の構成例を示す図である。データ処理回路１０４は、演算部７０１、セレクタ７０３、バッファ７０４、シフト選択回路７０５及びゲート回路７０７を有する。図７の回路は、４個のデータＤＡ１〜ＤＤ１に対応して、４個の回路が設けられる。データ７０２は、例えばデータＤＡ１であり、５１２ビットの一定ビット長のデータである。５１２ビットのデータ７０２は、サイクル毎にメモリ１０２から入力される。セレクタ７０３は、制御信号ＭＦが「０」の場合には５１２ビットのデータ７０６Ｌを選択し、制御信号ＭＦが「１」の場合には５１２ビットのデータ７０６Ｒを選択する。バッファ７０４は、セレクタ７０３が選択した５１２ビットのデータをバッファリングし、５１２ビットのデータ７０８を出力する。シフト選択回路７０５は、５１２ビットデータ７０２及び７０８を入力し、シフト及び選択処理した２×５１２ビットデータ７０６を出力する。データ７０６は、前半の５１２ビットデータ７０６Ｌ及び後半の５１２ビットデータ７０６Ｒを有する。ゲート回路７０７は、制御信号ＭＦが「１」になると、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを、それに対応するファーストインファーストアウト回路１０５Ａ〜１０５Ｄに出力する。すると、それに対応するファーストインファーストアウト回路１０５Ａ〜１０５Ｄには、５１２ビットデータ７０６Ｌが書き込まれる。
【００２９】
図８は、図７のシフト選択回路７０５の構成例を示す図である。シフト選択回路７０５は、シフト回路８０１及び３２個のセレクタＳＥＬ１〜ＳＥＬ３２を有する。シフト回路８０１は、サイクル毎に一定ビット長のデータ７０２を入力し、データ７０２内の先頭の無効データ４０１を削除するようにデータ７０２を左シフトし、２×５１２ビットデータ８０２を出力する。３２個のセレクタＳＥＬ１〜ＳＥＬ３２は、データ８０２内の前半の５１２ビットデータ又は５１２ビットデータ７０８を、１６ビット単位で選択し、５１２ビットデータ７０６Ｌを出力する。メモリ１０２の各アドレスは、１６ビットデータを記憶するので、各セレクタＳＥＬ１〜ＳＥＬ３２は、１６ビットデータを選択して出力する。具体的には、セレクタＳＥＬ１〜ＳＥＬ３２は、データ７０８内の有効データの領域のビットについてはデータ７０８を選択し、データ７０８内の無効データの領域のビットについてはデータ８０２を選択する。データ８０２内の後半の５１２ビットのデータは、５１２ビットデータ７０６Ｒとして出力される。
【００３０】
図９（Ａ）は、図７の５１２ビットデータ７０２の例を示す図である。５１２ビットデータ７０２は、最下位ビットＬＳＢ及び最上位ビットＭＳＢ、並びに有効データ９０１及び無効データ４０１を有する。有効データ長ＳＺは、有効データ９０１のビット長である。有効データオフセットＦＳは、最下位ビットＬＳＢから有効データ９０１の先頭アドレスまでのビット長である。
【００３１】
図９（Ｂ）は、データＤＡ１の例を示す図である。データＤＡ１は、有効データストリーム３０２Ａ及び無効データ４０１を含む３本のメモリラインのデータである。有効データストリーム３０２Ａは、４８ビット有効データｄ１、５１２ビット有効データｄ２及び１１２ビット有効データｄ３を有する。１本目のメモリラインは、無効データ４０１及び４８ビット有効データｄ１を記憶している。２本目のメモリラインは、５１２ビット有効データｄ２を記憶している。３本目のメモリラインは、１１２ビット有効データｄ３及び無効データ４０１を記憶している。以下、図９（Ｂ）のデータＤＡ１がメモリ１０２から連続して２回読み出される場合の処理例を説明する。
【００３２】
図１０は、１サイクル目の図７のデータ処理回路１０４の処理例を示す図である。１〜３サイクル目では、１回目の図９（Ｂ）のデータＤＡ１を処理する。１サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の１本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ１を有し、有効データオフセットＦＳが４６４（＝５１２−４８）ビットであり、有効データ長ＳＺが４８ビットである。演算部７０１は、図１のプロセッサ１０１又はダイレクトアクセスコントローラ１０３Ａ〜１０３Ｄからの情報を基に、有効データオフセットＦＳ及び有効データ長ＳＺを演算する。
【００３３】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。ここで、初期時、次サイクルのバッファ７０４の有効データ長ＢＳは０ビットである。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝４６４−０＋５１２
＝９７６ビット
【００３４】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝４８＋０
＝４８ビット
【００３５】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳ（図１２）を設定する。
ＢＳ＝ＢＳｔ
＝４８ビット
【００３６】
また、演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、制御信号ＭＦを「０」にする。
【００３７】
次に、シフト選択回路７０５の動作を、図１１を参照しながら、説明する。図１１は、１サイクル目の図８のシフト選択回路７０５の処理例を示す図である。１サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝９７６ビット）左シフトし、２×５１２ビットデータ８０２を出力する。データ８０２の先頭には、４８ビット有効データｄ１が位置する。
【００３８】
図８において、ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１０の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは０ビットである。
ｎ＞ＢＳ／１６
ｎ＞０／１６
ｎ＞０
【００３９】
図１１では、すべてのセレクタＳＥＬ１〜ＳＥＬ３２がデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、２×５１２ビットデータ８０２の前半の５１２ビットデータと同じになる。後半５１２ビットデータ７０６Ｒは、２×５１２ビットデータ８０２の後半の５１２ビットデータと同じになる。すなわち、２×５１２ビットデータ７０６は、２×５１２ビットデータ８０２と同じになる。
【００４０】
次に、図１０において、ゲート回路７０７は、制御信号ＭＦが「０」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを出力しない。また、セレクタ７０３は、制御信号ＭＦが「０」であるので、データ７０６Ｌを選択し、図１２に示すように、バッファ７０４には図１０の５１２ビットデータ７０６Ｌが書き込まれる。
【００４１】
図１２は、２サイクル目の図７のデータ処理回路１０４の処理例を示す図である。２サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の２本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ２を有し、有効データオフセットＦＳが０ビットであり、有効データ長ＳＺが５１２ビットである。
【００４２】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝０−４８＋５１２
＝４６４ビット
【００４３】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝５１２＋４８
＝５６０ビット
【００４４】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット以上であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳ（図１４）を設定する。
ＢＳ＝ＢＳｔ−５１２
＝５６０−５１２
＝４８ビット
【００４５】
また、演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット以上であるので、制御信号ＭＦを「１」にする。
【００４６】
次に、シフト選択回路７０５の動作を、図１３を参照しながら、説明する。図１３は、２サイクル目の図８のシフト選択回路７０５の処理例を示す図である。２サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝４６４ビット）左シフトし、２×５１２ビットデータ８０２を出力する。
【００４７】
図８において、ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１２の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは４８ビットである。
ｎ＞ＢＳ／１６
ｎ＞４８／１６
ｎ＞３
【００４８】
図１３では、セレクタＳＥＬ１〜ＳＥＬ３がデータ７０８を選択し、セレクタＳＥＬ４〜ＳＥＬ３２がデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、４８ビット有効データｄ１及び先頭の５１２−４８ビットの有効データｄ２を有する。また、後半５１２ビットデータ７０６Ｒは、２×５１２ビットデータ８０２の後半５１２ビットデータと同じになり、最終部の４８ビットの有効データｄ２を有する。
【００４９】
次に、図１２において、ゲート回路７０７は、制御信号ＭＦが「１」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを、それに対応する図１のファーストインファーストアウト回路１０５Ａ〜１０５Ｄに出力する。また、セレクタ７０３は、制御信号ＭＦが「１」であるので、データ７０６Ｒを選択し、図１４に示すように、バッファ７０４には図１２の５１２ビットデータ７０６Ｒが書き込まれる。
【００５０】
図１４は、３サイクル目の図７のデータ処理回路１０４の処理例を示す図である。３サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の３本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ３を有し、有効データオフセットＦＳが０ビットであり、有効データ長ＳＺが１１２ビットである。
【００５１】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝０−４８＋５１２
＝４６４ビット
【００５２】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝１１２＋４８
＝１６０ビット
【００５３】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳ（図１６）を設定する。
ＢＳ＝ＢＳｔ
＝１６０ビット
【００５４】
また、演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、制御信号ＭＦを「０」にする。
【００５５】
次に、シフト選択回路７０５の動作を、図１５を参照しながら、説明する。図１５は、３サイクル目の図８のシフト選択回路７０５の処理例を示す図である。３サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝４６４ビット）左シフトし、２×５１２ビットデータ８０２を出力する。
【００５６】
図８において、ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１４の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは４８ビットである。
ｎ＞ＢＳ／１６
ｎ＞４８／１６
ｎ＞３
【００５７】
図１５では、セレクタＳＥＬ１〜ＳＥＬ３がデータ７０８を選択し、セレクタＳＥＬ４〜ＳＥＬ３２がデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、４８ビット有効データｄ２及び１１２ビット有効データｄ３を有する。また、後半５１２ビットデータ７０６Ｒは、２×５１２ビットデータ８０２の後半５１２ビットデータと同じである。
【００５８】
次に、図１４において、ゲート回路７０７は、制御信号ＭＦが「０」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを出力しない。また、セレクタ７０３は、制御信号ＭＦが「０」であるので、データ７０６Ｌを選択し、図１６に示すように、バッファ７０４には図１４の５１２ビットデータ７０６Ｌが書き込まれる。
【００５９】
図１６は、４サイクル目の図７のデータ処理回路１０４の処理例を示す図である。４〜６サイクル目では、２回目の図９（Ｂ）のデータＤＡ１を処理する。４サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の１本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ４を有し、有効データオフセットＦＳが４６４ビットであり、有効データ長ＳＺが４８ビットである。４８ビット有効データｄ４は、図９（Ｂ）の４８ビット有効データｄ１に対応する。
【００６０】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝４６４−１６０＋５１２
＝８１６ビット
【００６１】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝４８＋１６０
＝２０８ビット
【００６２】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳ（図１８）を設定する。
ＢＳ＝ＢＳｔ
＝２０８ビット
【００６３】
また、演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、制御信号ＭＦを「０」にする。
【００６４】
次に、シフト選択回路７０５の動作を、図１７を参照しながら、説明する。図１７は、４サイクル目の図８のシフト選択回路７０５の処理例を示す図である。４サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝８１６ビット）左シフトし、２×５１２ビットデータ８０２を出力する。
【００６５】
図８において、ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１６の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは１６０ビットである。
ｎ＞ＢＳ／１６
ｎ＞１６０／１６
ｎ＞１０
【００６６】
図１７では、セレクタＳＥＬ１〜ＳＥＬ１０がデータ７０８を選択し、セレクタＳＥＬ１１〜ＳＥＬ３２がデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、４８ビット有効データｄ２、１１２ビット有効データｄ３及び４８ビット有効データｄ４を有する。また、後半５１２ビットデータ７０６Ｒは、２×５１２ビットデータ８０２の後半５１２ビットデータと同じである。
【００６７】
次に、図１６において、ゲート回路７０７は、制御信号ＭＦが「０」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを出力しない。また、セレクタ７０３は、制御信号ＭＦが「０」であるので、データ７０６Ｌを選択し、図１８に示すように、バッファ７０４には図１６の５１２ビットデータ７０６Ｌが書き込まれる。
【００６８】
図１８は、５サイクル目の図７のデータ処理回路１０４の処理例を示す図である。５サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の２本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ５を有し、有効データオフセットＦＳが０ビットであり、有効データ長ＳＺが５１２ビットである。５１２ビット有効データｄ５は、図９（Ｂ）の５１２ビット有効データｄ２に対応する。
【００６９】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝０−２０８＋５１２
＝３０４ビット
【００７０】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝５１２＋２０８
＝７２０ビット
【００７１】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット以上であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳ（図１９）を設定する。
ＢＳ＝ＢＳｔ−５１２
＝７２０−５１２
＝２０８ビット
【００７２】
また、演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット以上であるので、制御信号ＭＦを「１」にする。
【００７３】
次に、５サイクル目の図８のシフト選択回路７０５の処理例を説明する。５サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝３０４ビット）左シフトし、２×５１２ビットデータ８０２を出力する。
【００７４】
ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１８の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは２０８ビットである。
ｎ＞ＢＳ／１６
ｎ＞２０８／１６
ｎ＞１３
【００７５】
セレクタＳＥＬ１〜ＳＥＬ１３はデータ７０８を選択し、セレクタＳＥＬ１４〜ＳＥＬ３２はデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、４８ビット有効データｄ２、１１２ビット有効データｄ３、４８ビット有効データｄ４及び３０４ビット有効データｄ５を有する。また、後半５１２ビットデータ７０６Ｒは、最終部の２０８ビット有効データｄ５を有する。
【００７６】
次に、ゲート回路７０７は、制御信号ＭＦが「１」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを、それに対応する図１のファーストインファーストアウト回路１０５Ａ〜１０５Ｄに出力する。また、セレクタ７０３は、制御信号ＭＦが「１」であるので、データ７０６Ｒを選択し、図１９に示すように、バッファ７０４には図１８の５１２ビットデータ７０６Ｒが書き込まれる。
【００７７】
図１９は、６サイクル目の図７のデータ処理回路１０４の処理例を示す図である。６サイクル目では、５１２ビットデータ７０２として、図９（Ｂ）の３本目のメモリラインのデータを入力する。５１２ビットデータ７０２は、有効データｄ６を有し、有効データオフセットＦＳが０ビットであり、有効データ長ＳＺが１１２ビットである。１１２ビット有効データｄ６は、図９（Ｂ）の１１２ビット有効データｄ３に対応する。
【００７８】
また、演算部７０１は、次式により、シフト量ＳＨを演算する。
ＳＨ＝ＦＳ−ＢＳ＋５１２
＝０−２０８＋５１２
＝３０４ビット
【００７９】
また、演算部７０１は、次式により、次サイクルの有効データ長ＢＳｔを演算する。
ＢＳｔ＝ＳＺ＋ＢＳ
＝１１２＋２０８
＝３２０ビット
【００８０】
演算部７０１は、次サイクルの有効データ長ＢＳｔが５１２ビット未満であるので、次式により、次サイクルのバッファ７０４の有効データ長ＢＳを設定する。
ＢＳ＝ＢＳｔ
＝３２０ビット
【００８１】
また、最終サイクル時、演算部７０１は、制御信号ＭＦを「１」にする。
【００８２】
次に、６サイクル目の図８のシフト選択回路７０５の処理例を説明する。６サイクル目では、シフト回路８０１は、５１２ビットデータ７０２をシフト量ＳＨ（＝３０４ビット）左シフトし、２×５１２ビットデータ８０２を出力する。
【００８３】
ｎ番目のセレクタＳＥＬｎは、次式を満たす場合にはデータ８０２を選択し、次式を満たさない場合にはデータ７０８を選択し、出力する。ここで、ＢＳは、図１９の現在のバッファ７０４の有効データ長であり、有効データ長ＢＳは２０８ビットである。
ｎ＞ＢＳ／１６
ｎ＞２０８／１６
ｎ＞１３
【００８４】
セレクタＳＥＬ１〜ＳＥＬ１３はデータ７０８を選択し、セレクタＳＥＬ１４〜ＳＥＬ３２はデータ８０２を選択し、５１２ビットデータ７０６Ｌを出力する。その結果、前半５１２ビットデータ７０６Ｌは、２０８ビット有効データｄ５及び１１２ビット有効データｄ６を有する。また、後半５１２ビットデータ７０６Ｒは、２×５１２ビットデータ８０２の後半５１２ビットデータと同じである。
【００８５】
次に、ゲート回路７０７は、制御信号ＭＦが「１」であるので、５１２ビットデータ７０６Ｌ及び書き込み要求信号ＰＤを、それに対応する図１のファーストインファーストアウト回路１０５Ａ〜１０５Ｄに出力する。
【００８６】
以上のように、図９（Ｂ）のデータＤＡ１がメモリ１０２から連続して２回読み出される場合、データ処理回路１０４は、無効データ４０１を削除し、有効データｄ１〜ｄ６を結合したデータを出力することができる。
【００８７】
具体的には、シフト回路８０１は、サイクル毎に一定ビット長のデータ７０２を入力し、データ７０２内の先頭の無効データ４０１を削除するようにデータ７０２をシフトし、データ８０２を出力する。ゲート回路７０７は、シフトされたサイクル毎のデータを結合したデータ７０６が一定ビット長以上になると、先頭の一定ビット長のデータ７０６Ｌを切り出して外部に出力する。演算部１０６は、ゲート回路７０７により出力されたデータ７０６Ｌを用いて演算を行う。
【００８８】
バッファ７０４は、シフト回路８０１によりシフトされた連続する複数サイクルのデータを結合したデータ７０６が一定ビット長未満である場合には、先頭の一定ビット長のデータ７０６Ｌをバッファリングする。また、バッファ７０４は、シフト回路８０１によりシフトされた連続する複数サイクルのデータを結合したデータ７０６が一定ビット長以上である場合には、先頭の一定ビット長のデータ７０６Ｌを除いた残りのデータ７０６Ｒをバッファリングする。
【００８９】
セレクタＳＥＬ１〜ＳＥＬ３２は、バッファ７０４のデータ７０８内の有効データを選択する。ゲート回路７０７は、セレクタＳＥＬ１〜ＳＥＬ３２により選択された前回のサイクルの有効データとシフト回路８０１によりシフトされた現在のサイクルの有効データとを結合したデータ７０６が一定ビット長以上になると、先頭の一定ビット長のデータ７０６Ｌを切り出して外部に出力する。
【００９０】
メモリ１０２は、サイクル毎に一定ビット長のデータ７０２を読み出してシフト回路８０１に出力する。ファーストインファーストアウト回路１０５Ａ〜１０５Ｄは、ゲート回路７０７及び演算部１０６間に設けられる。
【００９１】
上記のように、データ処理装置は、一定ビット長のデータ７０２内の無効データを削除して有効データのストリームを生成することができる。これにより、データを用いた演算の待ち時間によるロスを解消することができる。また、シフト回路８０１及びバッファ７０４を用いることにより、回路規模を小さくすることができる。
【００９２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９３】
１０１  プロセッサ
１０２  メモリ
１０３Ａ〜１０３Ｆ  ダイレクトメモリアクセスコントローラ
１０４  データ処理回路
１０５Ａ〜１０５Ｆ  ファーストインファーストアウト回路
１０６  演算部
７０１  演算部
７０３  セレクタ
７０４  バッファ
７０５  シフト選択回路
７０７  ゲート回路
８０１  シフト回路
【図１】
2014182584.tif 000003
【図２】
2014182584.tif 000004
【図３】
2014182584.tif 000005
【図４】
2014182584.tif 000006
【図５】
2014182584.tif 000007
【図６】
2014182584.tif 000008
【図７】
2014182584.tif 000009
【図８】
2014182584.tif 000010
【図９】
2014182584.tif 000011
【図１０】
2014182584.tif 000012
【図１１】
2014182584.tif 000013
【図１２】
2014182584.tif 000014
【図１３】
2014182584.tif 000015
【図１４】
2014182584.tif 000016
【図１５】
2014182584.tif 000017
【図１６】
2014182584.tif 000018
【図１７】
2014182584.tif 000019
【図１８】
2014182584.tif 000020
【図１９】
2014182584.tif 000021