(57)【特許請求の範囲】
【請求項１】
中央処理装置とコプロセッサとを備えたデータ処理装置を利用してループ命令を処理する方法であって、前記中央処理装置はプログラムメモリから命令をフェッチして、デコーディングして、前記命令が中央処理装置タイプであるか又はコプロセッサタイプであるかのいずれのタイプの命令であるかを決めて、ループ命令を処理する方法を備えるデータ処理装置において、
前記コプロセッサによって前記コプロセッサタイプの命令をデコーディングし、もしループ動作がデコーディングされれば、前記プログラムメモリから前記ループ内の命令を検索する段階と、
前記検索されたループ内の命令を前記コプロセッサに含まれるループバッファ内に貯蔵する段階と、
前記ループバッファに貯蔵された命令は、前記コプレッサ及び前記中央処理装置タイプの命令を含み、
前記ループ内の命令がループの次の繰返しで実行される間は、前記プログラムメモリから命令をフェッチすることを禁止する段階と、を含むループ命令を処理する方法を備えることを特徴とするデータ処理装置。
【請求項２】
前記ループの次の繰返しにおいては、前記ループバッファから前記ループ内の命令をアクセスする段階をさらに含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記デコーディング段階は、前記中央処理装置によって使用される逆分岐距離を決めて前記ループへの、及び前記ループからの分岐を制御する段階をさらに含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記ループ動作の繰返し回数を前記ループ命令から決める段階と、
前記各ループが終了するごとに、前記コプロセッサによって前記繰返し回数を減少させる段階と、
前記繰返し回数の最後に到達した時に、前記ループ動作の終了を前記中央処理装置に知らせる段階とをさらに含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記貯蔵段階は、前記ループバッファの‘ｍ’個のレジスタ内に‘ｎ’個のループ命令を貯蔵する段階と、前記プログラムメモリを指定するために使用されるプログラムラムカウンタの最下位ビットによって前記‘ｍ’個のレジスタを指定する段階とを含み、前記ｎ又はｍは任意の自然数であり、ｎはｍより小さいか又は同じかであることを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
マルチプレクサを通じて前記ループバッファに貯蔵された命令をアクセスし、プログラムカウンタのｌｏｇ２ｍ個の最下位ビットによってマルチプレクサの出力を制御する段階を含むことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記ループ内の第１命令は、前記プログラムカウンタの最下位のビットによって指定された前記ｍ個のレジスタのうちのいずれかに貯蔵されることを特徴とする請求項５に記載のデータ処理装置。
【請求項８】
前記ループバッファ内の‘ｍ’個のレジスタに各々対応するループバッファフラグを利用してアクティブループ命令のレジスタ内の存在の有無を知らせる段階をさらに含み、アクティブ命令がレジスタ内に存在することはループバッファフラグ内の所定信号によって表示されることを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
前記プログラムメモリを指定するために使用されるプログラムカウンタのｌｏｇ２ｍ個の最下位ビットを利用してループバッファ内の各フラグをアクセスする段階をさらに含むことを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記ループバッファ及び前記プログラムメモリからの命令をマルチプレクシングする段階をさらに含み、前記マルチプレクシングはループバッファフラグからのアクティブ命令信号の存在によって決められることを特徴とする請求項８に記載のデータ処理装置。
【請求項１１】
前記プログラムメモリから命令をフェッチすることを禁止する段階は、前記ループバッファフラグ内の所定信号が読出され、アクティブループ命令の存在を示す時に、前記プログラムメモリに禁止信号を送る段階を含むことを特徴とする請求項８に記載のデータ処理装置。
【請求項１２】
前記ループバッファフラグ内の各々のフラグの設定は、対応するレジスタ内のアクティブ命令の有無に関係なく、前記中央処理装置によって選択的に変えることができることを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記ループ動作が終了する時に、前記ループバッファフラグを初期化する段階をさらに含むことを特徴とする請求項８に記載のデータ処理装置。
【請求項１４】
プログラムメモリから命令をフェッチして、前記命令をデコーディングして、もしコプロセッサタイプ命令がデコーディングされれば、コプロセッサに信号ＣＣＬＫを伝達する中央処理装置と、
前記信号ＣＣＬＫの受信により前記コプロセッサタイプ命令をデコーディングするコプロセッサと、
前記コプロセッサに含まれ、前記プログラムメモリからループ内の命令を受け取り、貯蔵するループバッファとを含み、
前記ループバッファに貯蔵された命令は、前記コプレッサ及び前記中央処理装置タイプの命令を含み、
前記コプロセッサがコプロセッサタイプ命令からループ動作をデコーディングした時に、前記ループ内の命令は、前記ループの次の繰返での実行のために、前記ループバッファから送られることを特徴とするデータ処理装置。
【請求項１５】
前記ループ内の命令が前記ループバッファから送られる間は、前記プログラムメモリのアクセスを禁止するために、前記プログラムメモリにディセーブル信号が送られることを特徴とする請求項１４に記載のデータ処理装置。
【請求項１６】
前記ループバッファは‘ｍ’個のレジスタを含み、前記各レジスタは、命令で満たされているか否かを示す対応するループバッファフラグを有することを特徴とする請求項１４に記載のデータ処理装置。
【請求項１７】
前記ループバッファフラグは、前記プログラムメモリを指定するために使用されるプログラムカウンタのｌｏｇ２ｍ個の最下位ビットによってアクセスされることを特徴とする請求項１６に記載のデータ処理装置。
【請求項１８】
前記ループ内の命令が前記ループバッファから送られる間は、前記プログラムメモリのアクセスを禁止するために、前記プログラムメモリに送られるプログラムメモリ禁止信号は、前記ループバッファフラグから読出された信号に基づいて生成されることを特徴とする請求項１６に記載のデータ処理装置。
【請求項１９】
前記ループバッファは‘ｍ’個のレジスタを含み、前記レジスタは、前記プログラムメモリを指定するために使用されるプログラムカウンタのｌｏｇ２ｍ個の最下位ビットによって指定されることを特徴とする請求項１４に記載のデータ処理装置。
【請求項２０】
前記プログラムメモリからの命令と前記ループバッファからの命令との間でマルチプレクシングするマルチプレクサをさらに含み、前記マルチプレクサは、ループバッファフラグから読出された信号によって制御されることを特徴とする請求項１４に記載のデータ処理装置。
【請求項２１】
コプロセッサに含まれるループバッファに貯蔵された命令は、前記コプレッサ及び中央処理装置タイプの命令を含み、
前記コプロセッサは、ループ命令からループのブロックザイズと繰返し回数とをデコーディングして、前記中央処理装置によって使用される逆分岐距離を計算して、前記ループへの及び前記ループからの分岐を制御するデータ処理装置。
【請求項２２】
前記逆分岐距離は、「ループのブロックサイズ−１」であることを特徴とする請求項２１に記載のデータ処理装置。
【請求項２３】
プログラムメモリから命令をフェッチして、前記命令をデコーディングして、もしコプロセッサタイプ命令がデコーディングされれば、コプロセッサに信号ＣＣＬＫを伝達する中央処理装置と、
前記信号ＣＣＬＫの受信により前記コプロセッサタイプ命令をデコーディングするコプロセッサと、
前記コプロセッサに含まれ、ループ内の命令を前記プログラムメモリから受け取り、貯蔵するループバッファとを含み、
前記ループバッファに貯蔵された命令は、前記コプレッサ及び前記中央処理装置タイプの命令を含み、
前記コプロセッサが前記コプロセッサタイプ命令からループ動作をデコーディングする時に、前記ループ内の命令は、前記ループの次の繰返しでの実行のために、前記ループバッファから送られ、そして、前記ループ内の命令が前記ループバッファから送られる間は、前記プログラムメモリのアクセスを禁止するために、前記プログラムメモリにディセーブル信号が送られるデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理装置でのループ命令の処理に関するものであり、さらに具体的には、中央処理装置（以下ＣＰＵと称する）とコプロセッサとを備えるデータ処理装置でのループバッファを利用したループ命令の処理に関するものである。
【０００２】
【従来の技術】
ＣＰＵとコプロセッサとを備える従来のデータ処理装置において、ＣＰＵは、ＣＰＵ及び／又はコプロセッサの実行のために、メインプログラムメモリに貯蔵された命令をフェッチする。ＣＰＵはコプロセッサ命令をデコーディングし、もし、デコーディング値がコプロセッサ動作を示すと、ＣＰＵは、実行用コプロセッサ命令をデコーディングするようにコプロセッサに信号を送る。コプロセッサは、デジタル信号処理のために種々使用され、算術演算（例えば、掛け算、累算、割り算等）と種々接するようになる。掛け算器、割り算器 又は累算器のような専用回路が算術演算を行うために使用することができるが、ソフトウェア算術ルーチンが、小さい空間の要求及び低いコストの要求などの多様な理由のために、望ましいとされる。ＣＰＵは、ソフトウェア算術ルーチンを処理することができるが、算術ルーチンをより効果的に処理するためにコプロセッサがしばしば使用される。
【０００３】
一般的に、算術ルーチンは、多くの繰り返し的なデータシフト及びループ動作を含む。ＣＰＵは実行のためにプログラムメモリからループルーチンの命令をフェッチし、しかも、同一な命令が、繰り返して、フェッチ及び実行される。例えば、割り算を実行するための命令のブロックが、連続的な割り算動作のために、何度も繰り返される。
【０００４】
【発明が解決しようとする課題】
したがって、ＣＰＵとコプロセッサとを有するデータ処理装置が多くのループ動作を行う時には、データ処理装置の性能は、スピードの観点からみると低下する。これは、分岐、割込み又は例外命令を処理するためにＣＰＵのオーバヘッドが増加するためである。例えば、ＣＰＵ又はコプロセッサは、ルーチンが分岐からリターンして続けて実行できるように、分岐以前の処理ルーチンの情報を保持していなければならない。個別スタックポインタは実行ルーチンを処理するために一般的に使用される。それに加えて、メインプログラムメモリからの頻繁な命令アクセスにより、さらに多くの電力が消耗される。
そこで、本発明は、データ処理装置の電力消耗及びＣＰＵのオーバヘッドを減らすと同時に、ループ動作を効果的に処理できるＣＰＵとコプロセッサとを有するデータ処理装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
前述の諸般の課題を解決するための本発明の特徴によると、中央処理装置とコプロセッサとを備えたデータ処理装置を利用してループ命令を処理する方法であって、前記中央処理装置はプログラムメモリから命令をフェッチして、デコーディングして、前記命令が中央処理装置タイプであるか又はコプロセッサタイプであるかのいずれのタイプの命令であるかを決めて、ループ命令を処理する方法を備えるデータ処理装置において、
前記ループ命令を処理方法は、前記コプロセッサによって前記コプロセッサタイプの命令をデコーディングし、もしループ動作がデコーディングされれば、前記プログラムメモリから前記ループ内の命令を検索する段階と、前記検索されたループ内の命令をループバッファ内に貯蔵する段階と、前記ループ内の命令がループの次の繰り返しで実行する間は、プログラムメモリからの命令をフェッチすることを禁止する段階とを含む。
前記ループ命令を処理する方法は、前記ループの次の繰り返しにおいて、前記ループバッファから前記ループ内の命令をアクセスする段階を含む。
前記コーディング段階は前記中央処理装置によって使用される逆分岐距離を決めて前記ループへの、及び前記ループからの分岐を制御する段階をさらに含む。
【０００６】
この実施例において、前記コプロセッサは、前記ループ命令から前記ループ動作の繰り返し回数を決め、前記各ループが終了するごとに繰り返し回数を減少させ、前記最後の繰り返し回数が終了した時に前記ループ動作の終了を前記中央処理装置に知らせる。
【０００７】
この実施例において、前記貯蔵段階は、前記ループバッファの‘ｍ’個のレジスタ内に‘ｎ’個のループ命令を貯蔵する段階と、前記プログラムメモリを指定するために使用されるプログラムカウンタの最下位ビットで前記‘ｍ’個のレジスタを指定する段階とを含み、前記ｎ又はｍは任意の自然数であり、ｎはｍより小さいか、又は同一かである。
マルチプレクッサを通じて前記ループバッファに貯蔵された命令がアクセスされ、プログラムカウンタのｌｏｇ２ｍ個の最下位ビットによってマルチプレクッサ出力が制御される。
前記ループの第１命令は、前記ループカウンタの最下位ビットによって指定された前記ｍ個のレジスタのうちのいずれかに貯蔵される。
【０００８】
この実施例において、前記方法は、前記ループバッファ内の‘ｍ’個のレジスタの各々に対応するループバッファフラグを利用して、アクティブループ命令のレジスタ内の存在の有無を知らせる段階をさらに含み、レジスタ内にアクティブ命令が存在することはループバッファフラグ内の所定信号によって表示される。
【０００９】
この実施例において、前記禁止段階は、前記ループバッファ内の所定信号が読出され、アクティブループ命令の存在を示す時に、前記プログラムメモリに禁止信号を送る段階を含む。
【００１０】
また、データ処理装置が提供され、
前記データ処理装置は、プログラムメモリから命令をフェッチして、前記命令をデコーディングして、もしコプロセッサタイプ命令がデコーディングされれば、コプロセッサに信号ＣＣＬＫを伝達する中央処理装置と、前記信号ＣＣＬＫの受信により前記コプロセッサタイプ命令をデコーディングするコプロセッサと、ループ内の命令を前記プログラムメモリから受け取り、貯蔵するループバッファとを含み、
前記コプロセッサが前記コプロセッサタイプ命令からループ動作をデコーディングした時に、前記ループ内の命令は、前記ループの次の繰り返しで実行するために、前記ループバッファから送られる。
【００１１】
この実施例において、前記ループバッファは‘ｍ’個のレジスタを含み、前記各レジスタは命令で満たされているか否かを示す対応するループバッファフラグを有する。前記ループバッファフラグは、前記プログラムメモリを指定するために使用されたプログラムカウンタのｌｏｇ２ｍ個の最下位ビットによってアクセスされる。前記ループバッファは‘ｍ’個のレジスタを含み、前記レジスタは、前記プログラムメモリを指定するために使用されたプログラムカウンタのｌｏｇ２ｍ個の最下位ビットによって指定される。
【００１２】
この実施例において、前記コプロセッサは、ループ命令からループのブロックサイズと繰り返し回数とをデコーディングして、前記中央処理装置によって使用される逆分岐距離を計算して、前記ループへの、及び前記ループからの分岐を制御する。前記逆分岐距離は「ループのブロックサイズ−１」である。
【００１３】
【発明の実施の形態】
添付した図面を参照して本発明の望ましい実施例を詳細に説明する。
【００１４】
図１は、本発明の望ましい実施例によるデータ処理装置のブロック図を示す。データ処理装置１００は、メインプログラムメモリ１３０からフェッチされたＣＰＵタイプ及びコプロセッサタイプの命令を実行するために、中央処理装置ＣＰＵ１１０とコプロセッサ１２０とを含む。
ＣＰＵ１１０は、指定領域に貯蔵された命令をメインプログラムメモリ１３０から出力するように、メインプログラムメモリ１３０にプログラムアドレス１４０を提供することによって、命令をフェッチする。フェッチされた命令は、コプロセッサ命令の場合もあるので、プレデコーダ１１２によってプレデコーディングされることが望ましい。
フェッチされた命令は、命令レジスタラッチ１１３内にラッチされ、ＣＰＵ１１０のデコーダ１１５によってデコーディングされる。もしフェッチされた命令がＣＰＵタイプの命令であれば、フェッチされた命令はＣＰＵ１１０内の動作実行ユニット１１７によって実行される。もし、プレデコーダ１１２がコプロセッサタイプの命令としてフェッチされた命令をデコーディングすれば、プレデコーダ１１２はライン１１８にコプロセッサタイプの命令であることを示すアクティブ信号ＣＯＰＩを出力する。
ＣＯＰＩ信号は、ＣＣＬＫクロック信号１７０を出力するＡＮＤゲート１１６によって、システムクロックＳＹＳＣＬＫ１１４と同期される。ＣＣＬＫクロック信号１７０は、コプロセッサ命令レジスタラッチＣＯＰＩＲＬ１２８にフェッチされた命令を記録するために使用される。コプロセッサ１２０のデコーダ１２５は、命令をデコーディングし、コプロセッサタイプ命令は、コプロセッサ１２０の動作実行ユニット１２７によって実行される。
【００１５】
本発明の利点を示すために、データ処理装置１００はハーバードパイプライン構造（Ｈａｒｖａｒｄ  ｐｉｐｅｌｉｎｉｎｇ  ａｒｃｈｉｔｅｃｔｕｒｅ）を利用する。ハーバードパイプライン構造は、フェッチ、第１デコーダ、第２デコーダ及び実行／貯蔵の４段階のパイプライン構造である。パイプライン構造は、システムクロックの一サイクル内の第１及び第２位相に応答するラッチを使用する。第１ラッチはシステムクロックの第１位相に応答して、第２ラッチはシステムクロックの第２位相に応答する。メモリアクセス及びプログラムメモリからフェッチされた命令は、同一なクロックサイクル内で同時に生じる。
【００１６】
本発明の望ましい実施例によると、ループバッファ１２２は、データ処理装置１００の性能を向上させるために使用される。この実施例では、ループバッファ１２２は、メインプログラムメモリからフェッチされた命令を貯蔵するために使用される。前記フェッチされた命令は、ＣＰＵ１１０及び／又はコプロセッサ１２０によるより効率的なアクセス及び処理動作を行うために、ループルーチン内にある命令である。有利なことには、ループバッファの使用は、ループルーチンの実行が連続的に繰返される時に、メインプログラムメモリ１３０をアクセスしなければならないことに対するデータ処理装置１００の負担を軽減させる。ＤＳＰタイプ命令の算術演算及び処理はしばしばループルーチンを必要とするので、メインプログラムメモリ１３０からのアクセスに代えて、ループバッファの使用の頻度が高くなる。メインプログラムメモリからの命令フェッチが電力を消耗する動作なので、本発明による装置及び処理は、データ処理装置１００の全体的な電力消耗を減らせる。ループバッファ１２２の構造及び動作は図３を参照して以下詳細に説明する。
【００１７】
図２は、本発明の望ましい実施例によるループルーチンの例示的なパイプライン動作を示す。例示的なルーチンは、プログラムアドレス１０４、１０５での重畳ループ（ｎｅｓｔｅｄ  ｌｏｏｐ）とプログラムアドレス１０２からプログラムアドレス１０８までのロングループ（ｌｏｎｇ  ｌｏｏｐ）とを含む。コプロセッサ１２０のデコーダ１２５によるループ命令の最初の検出時に、ループ内の命令はループバッファ１２２に貯蔵される。ループのブロックサイズとループの繰り返し回数とはコプロセッサによって検出される。コプロセッサは、ループのブロックサイズと逆方向ブランチ命令を出力するタイミングとを計算して、ループルーチンへ、及びループルーチンから分岐するように、ＣＰＵに知らせる。
本発明の望ましい実施例によると、逆方向ブランチ距離は、「ループのブロックサイズ−１」で、計算される。ループの最終命令が示される前の命令ではブランチ命令がコプロセッサから発生していることが図２で分かる。例えば、ループのブロックサイズが２（ＰＡ＝１０４、ＰＡ＝１０５）であれば、逆方向ブランチは「２−１＝１」即ちループの第１命令で発生する。ＰＡ＝１０２からＰＡ＝１０８までのループの場合には、逆方向ブランチは、ＰＡ＝１０７である時即ちループ内の第８命令「９−１＝８」で発生する。ループが特定回数‘ｎ’だけ繰り返して実行されてしまうと、ブランチ命令は発生せず、ルーチンはループを外れてＰＡ＝１０９に進行する。
【００１８】
図３は、本発明によるデータ処理装置のループバッファの構造を示す。ループバッファ１２２は‘Ｍ’個のバッファ（Ｍは任意の自然数）を含み、各バッファは対応するラッチレジスタ内に貯蔵されたアクティブ命令の存在の有無を示すループバッファフラグを有する。ループバッファ１２２はループルーチン内の一番大きい命令ブロックを受け入れられるように十分に大きい長さを有し、バッファは少なくとも最大幅の命令を受け入れられる程度に、十分に広い幅を有する。本実施例においては、バッファ幅は３２ビットであり、バッファ数Ｍは１２であり、ループバッファフラグＬＢＦは各１ビットであることが望ましい。
データ処理装置のデコーダによってループルーチンを検出すると（本実施例においてはデコーディング動作はコプロセッサ１２０のデコーダ１２５により遂行される）、ループルーチン内の命令はメインプログラムメモリ１３０から読出され、コプロセッサ１２０のループバッファ１２２のラッチ内に順次に貯蔵される。
本発明の望ましい特徴によると、ループバッファフラグを含むループバッファへの、及びループバッファからのアクセスはプログラムアドレス１４０の最下位ビット数（ｌｏｇ２Ｍ）に基づいて制御される。例えば、Ｍが１６であれば、ループバッファ１２２に書込み、ループバッファフラグ１２４から読出すためのプログラムアドレス１４０のうちの４個の最下位ビット（ｌｏｇ２１６は４である）が使用される。
本発明の実施例によると、ループバッファ１２２のＭ（＝１６）個のラッチとＬＢＦ１２４の対応する１６ビットとを指定するために、プログラムアドレス１４０のうちの４個の最下位ビットが使用される。ループルーチンが検出される時には、ループルーチン内の第１命令は、メインプログラムメモリ１３０から、プログラムアドレス１４０の４個の最下位ビットによって指定されたループバッファ１２２のラッチに、ロードされる。プログラムアドレス１４０のうちの４個の最下位ビットによって指定されたラッチ内に命令を貯蔵する時に、対応するＬＢＦには命令の有無を示すために事前に指定された信号が使用される。本実施例では、ロジックハイ（‘１’）へのフラグ設定は、ループバッファ１２２の対応するラッチ内のアクティブ命令に信号を送る。ループ内の連続的な命令がメインプログラムメモリ１３０から読出され、順次にループバッファ１２０のラッチ内にロードされる。なぜなら、ループ内の連続的な命令はプログラムアドレス１４０のうちの４個の最下位ビットによって指定されるメインｌプログラムメモリ１３０から読出されるからである。
【００１９】
コプロセッサ１２０がループルーチンをデコーディングする時に、コプロセッサは、又、ループ動作を処理するのに必要な適切なデータを命令から読出す。それらのデータにはループルーチンのブロックサイズとループの繰り返し回数とを含む。コプロセッサ１２０は特定ループの進行距離をクロックサイクルで計算することによって、遂行されるループルーチン内の命令の数を監視する。この実施例によると、進行距離は「ループのブロックサイズ−１」である。例えば、ループのブロックサイズが９であれば、逆方向ブランチ信号が発生される前までの進行距離「９−１＝８」即ち８個のパイプラインである。又、コプロセッサ１２０はループルーチンの繰り返し回数を監視する。ループルーチンの第１発生時に、メインプログラムメモリ１３０から命令が読出され、ループ内の命令がループバッファ１２２のラッチ内に貯蔵される。その結果、ループルーチンの次の繰り返しでループバッファ１２２から読出され、ループ内の命令が実施されるようになる。これは、結局、メインプログラムメモリ１３０をアクセスしなければならないことに対するデータ処理装置の負担が軽減することになる。コプロセッサ１２０は同一のループの繰り返し総回数から‘１’づつ減少させて、繰り返し回数が‘０’になるまで繰り返される。
本発明の望ましい実施例においては、ブランチ命令はループルーチンの最後（図２でＰＡ＝１０７）より前の命令で生成せず、ルーチンはループルーチン（図２でＰＡ＝１０９）の範囲を外した次の命令まで続く。プログラムアドレス１４０の「ｌｏｇ２Ｍ」ビットがループバッファ１２２の書込み、読出しのために使用されるので、コプロセッサがプログラムアドレスカウンタを別途監視するとか、プログラムアドレスがループプーチン前に存在した場所の情報を保持するためにスタックポインタを使用するとかの必要がない。
【００２０】
図３を参照すると、メインプログラムメモリ１３０からフェッチされたループルーチンの命令を書込みするためのプログラムアドレス１４０の最下位ビットによって指定されるループバッファ１２２のラッチが示されている。
命令がループバッファ１２２から読出される同一なループルーチンである場合の次の繰り返しにおいて、ｍ×１マルチプレクサ１３３を通じてループバッファ１２２のラッチから命令が読出され、マルチプレクサの選択ポートはプログラムアドレス１４０のうちの４個の最下位ビットによって指定される。又、ＬＢＦレジスタはマルチプレクサ１３５を通じて読出され、同一な４個の最下位ビットが選択信号として使用される。
従って、ＬＢＦレジスタ信号がループバッファ１２２から読出されるループ内のアクティブ命令を知らせる信号としてアクティブとして読出される時に、即ち、本発明の望ましい実施例によると、ロジックハイとして読出される時に、アクティブ信号がマルチプレクサ１２６を選択するために使用される。マルチプレクサ１２６は、ループバッファ１２２及びメインプログラムメモリ１３０から読出された命令の間でマルチプレクシングする。アクティブＬＢＦレジスタ信号によって、マルチプレクサ１２６はループバッファ１２２から読出された命令を出力する。命令が読出されている間に、ＬＢＦレジスタのアクティブ信号は、又、マルチプレクサ１３５からアクティブＤＩＳ信号を出力することによって、メインプログラムメモリ１３０のアクセスをディセーブルさせるのに使用される。ＤＩＳ信号は、メインプログラムメモリから命令をフェッチすることを禁止させるのに使用される。例えば、ＤＩＳ信号はメモリ選択信号ＣＡＳに連結され、メインプログラムメモリ１３０のアクセスをディセーブルさせる。有利なことには、図１及び図３に示されたループバッファ、ＬＢＦレジスタ、及びマルチプレクサの構成は、命令がループバッファ１２２から実行される時には、メインプログラムメモリ１３０から検索される命令へのアクセスを減らすことになる。マルチプレクサ１２６を通じてループバッファ１２２から出力されたループ命令は、コプロセッサ１２０による実行用コプロセッサタイプ命令であるか、ＣＰＵ１１０によって実行されるＣＰＵタイプ命令であるかである。もし、マルチプレクサ１２６を通じてループバッファ１２２から出力された命令がＣＰＵタイプ命令であれば、その命令はバス１５５を通じてＣＰＵ１１０に伝達される。もし、ループバッファ１２２から送られた命令がコプロセッサタイプ命令であれば、マルチプレクサ１２６の出力はコプロセッサ命令レジスタラッチ１２８にラッチされ、デコーダ１２５によってデコーダされ、コプロセッサ１２０の動作実行ユニット１２７によって実行される。
【００２１】
本発明の望ましい実施例によると、ループバッファを使用したループルーチンの実行は特定環境でＣＰＵによって無効化される。ＣＰＵ１１０はループバッファフラグを制御することによって、例えば、フラグ内のアクティブ信号を初期化することによって、ループバッファ動作を無効化することができる。
【００２２】
図４は、本発明の望ましい実施例によるループバッファを利用したループ動作を有する例示的なルーチン実行を示すテーブルである。この実施例では、ループルーチンはプログラムアドレス１０２にある。プログラムカウンタの最下位ビットがループポインタとして使用されるので、ループポインタはループバッファラッチ番号２（ループポインタ＝２）を指す。ループルーチンの第１命令サイクルでは、プログラムアドレスＰＡは１０２にあり、ループルーチンはコプロセッサ１２０によって検出されてデコーディングされる。メインプログラムメモリ１３０からフェッチされた命令が実行されると、プログラムデータはループバッファ１２２のアドレス２に貯蔵される。プログラムメモリ１３０からの次の命令アクセスまでの間で、即ちプログラムアドレス１０３とループポインタ３とになるまでの間で、ＬＢＦレジスタビット２は命令がループバッファ１２２のアドレス２にロードされていることを示すように設定される。このようなパイプライン間で、プログラムメモリ１３０から直ぐフェッチされた命令はループバッファ１２２の領域３にロードされる。プログラムアドレス１０４で、コプロセッサ１２０は２のループのブロックサイズを有する重畳ループを検出する。従って、コプロセッサは２−１＝１の逆方向ブランチ距離を計算して、このパイプラインのブランチ命令に知らせる。同時に、プログラムアドレス１０４からフェッチされた命令はループバッファ１２２の第４領域に貯蔵され、以前に指定された領域３のＬＢＦレジスタはアクティブループ命令がループバッファ１２２の領域３に貯蔵されていることを示すように設定される。プログラムアドレス１０５では、命令がプログラムメモリ１３０からフェッチされ、コプロセッサ１２０がブランチ信号でＣＰＵ１１０に警告し、ＣＰＵは重畳ループへの命令分岐を準備する。プログラムアドレス１０５のパイプライン間で、プログラムメモリ１３０からフェッチされた命令はループバッファ１２２の第５領域に貯蔵され、ＬＢＦレジスタ番号４は第４領域が以前のループ命令と共に貯蔵されていることを示すように設定される。
【００２３】
次の命令は１０４で始まる重畳ループの重畳された第１繰り返しで最初に発生し、プログラム命令は実行用ループバッファ１２２の第４及び第５領域から読出される。命令サイクル６で重畳ループの実行終了時に、コプロセッサ１２０はループが終了すること又は分岐がないことを知らせる。ＣＰＵ１１０は分岐を引き起こすことなく、プログラムアドレスは次のアドレス１０６に増加される。この時、ループバッファ１２２はＬＢＦ[８：０]の各ビット領域でアクティブ信号又はロジック‘１’で表示されるような領域２、３、４、５でアクティブループ命令を有する。プログラムアドレス１０６のパイプラインはリターンしてプログラムメモリ１３０の命令がフェッチされ、ループバッファの領域６に命令が満たされる。
本発明の望ましい実施例によると、コプロセッサ１２０はループルーチンの終了の始まりと接近とを監視することにおいて必要な情報をもたらす。例えば、これは逆方向ブランチ距離を計算して、ループの繰り返し回数を監視することによって行われる。従って、プログラムアドレス１０８で、コプロセッサ１２０はプログラムアドレスがプログラムアドレス１０２で始まるループルーチンの終了であることを認識する。
このパイプライン間に、ループバッファラッチ７、８はプログラムメモリ１３０でフェッチされた命令で満たされ、領域２−８はループ（ＰＡ＝１０２からＰＡ＝１０８まで）の命令にロードされる。次の命令はＰＡ＝１０２から分岐してループの次の繰り返しを始める。ループポインタは２にあり、ループ内の全ての命令はループバッファ１２２からフェッチされ、ＰＡ＝１０４／１０５の重畳ループを含めて全ループは繰り返される。このような繰り返しでＰＡ＝１０２からＰＡ＝１０８までのループの実行の間には、メインプログラムメモリ１３０をアクセスする必要がないことが分かる。ループルーチンの最後パイプラインより前に、分岐信号が命令１７でコプロセッサ１２０によって生成される。
ＣＰＵ１１０はループルーチンから分岐を準備し、ループルーチンの範囲を外れたフェッチ命令の始まりとしてプログラムアドレスＰＡを１０８から１０９に送る。ＰＡ＝１０９で、ＬＰＦレジスタは初期化され、プログラムメモリ１３０から命令がフェッチされる。プログラムアドレス１０９、１１０はループ命令としてデコーディングされない命令を有する。
【００２４】
前述したループバッファの特定構造及びその実現並びにプログラムメモリ制御は、本発明の思想を外れずに変化させられることができることはこの分野に熟練した者には容易に理解できる。例えば、ループバッファ１２２はコプロセッサ１２０又は通常の集積回路チップ上に集積されるとか、コプロセッサ１２０又はＣＰＵ１１０の外部に配置されるとかができる。分岐アドレスの生成と繰り返し回数の監視とはコプロセッサ１２０によって本発明の実施により実現される。このような機能はまたメモリ制御器（図示さない）によって遂行されることができる。図１に示された本発明の実施例による構造が、コプロセッサタイプ又はＣＰＵタイプの命令としてループバッファ内に貯蔵されている命令の実行を容易にすることが分かる。従って、本発明はここで説明された実施例に限らず、本発明の要旨、範囲、及び思想は特許請求の範囲によって定義される。
【００２５】
【発明の効果】
本発明の望ましい実施例によると、ループバッファ１２２はデータ処理装置１００の性能を向上させるために使用される。本発明の望ましい実施例によると、ループバッファ１２２はメインプログラムメモリからフェッチされた命令を貯蔵するために使用され、前記命令はＣＰＵ１１０及び／又はコプロセッサ１２０によるより効率的なアクセス及び処理動作のためにループルーチン内にある。ループバッファの使用はループルーチンの実行が連続的に繰返される時に、メインプログラムメモリ１３０をアクセスしなければならないことに対するデータ処理装置１００の負担を軽減させる。ＤＳＰタイプ命令の算術演算及び処理が種々のルーチンを必要とするので、メインプログラムメモリ１３０からのアクセスに代えてループバッファの使用頻度を高くすることができる。メインプログラムメモリからの命令フェッチが電力を消耗する動作なので、本発明による装置及び処理はデータ処理装置１００の全体的な電力消耗を減らす。
【図面の簡単な説明】
【図１】本発明による中央処理装置、コプロセッサ、及びループバッファを有するデータ処理装置のブロック図。
【図２】データプロセッサのパイプライン動作及びループ繰り返し動作を示す図面。
【図３】図１に示されたループバッファのブロック図。
【図４】本発明の望ましい実施例による図１のループバッファのループ命令の代表的なフローを示す図面。
【符号の説明】
１００  データ処理装置
１１０  ＣＰＵ
１２０  コプロセッサ
１３０  メインプログラムメモリ
【図１】
0003811427.tif 000002
【図２】
0003811427.tif 000003
【図３】
0003811427.tif 000004
【図４】
0003811427.tif 000005