(57)【特許請求の範囲】
【請求項１】
複数のデータのうちの最大値または最小値であるピーク値を取得するピーク値取得処理を実行するマイクロプロセッサにおいて、
読出アドレスを順次生成して出力するアドレス生成器と、
該アドレス生成器が出力した前記読出アドレスを起点とするｎビットのデータを出力するデータ記憶部と、
１データ構成単位であるｍビット（ｍ：アドレス付与単位の整数倍）のデータを１エレメントとして、前記データ記憶部が出力した前記ｎビットのデータを構成する複数個のエレメントのうちのピーク値を有するエレメントをピーク値候補として選択し、該ピーク値候補が前記複数個のエレメントをそれらのアドレス順に配列してなるエレメント列における位置を示す位置情報と共に出力するピーク値候補選択部と、
ピーク値と、該ピーク値を有するエレメントのアドレスとを保持するピーク値保持部と、
前記ピーク値候補選択部が出力した前記ピーク値候補と前記ピーク値保持部に保持された前記ピーク値が、前記ピーク値取得処理が最大値を取得するか最小値を取得するかに応じた大小関係を満たすことを条件に、前記ピーク値候補の前記位置情報と前記読出アドレスとを用いて該ピーク値候補のエレメントのアドレスを算出すると共に、算出した前記アドレスと前記ピーク値候補を前記ピーク値保持部に出力して該ピーク値保持部の保持内容を更新するピーク値演算部とを備えることを特徴とするマイクロプロセッサ。
【請求項２】
前記読出アドレスがオフセットとベースアドレスとからなり、
前記アドレス生成器は、オフセットのみを前記ピーク値演算部に出力するものであり、
前記ピーク値演算部は、前記ピーク値候補のオフセットを求めるものであることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記ピーク値保持部は、レジスタであることを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記ピーク値保持部として機能するレジスタと、
前記データ記憶部からの前記ｎビットのデータを前記ピーク値候補選択部に出力する前に一時的に格納するレジスタとを含むレジスタファイルをさらに備えることを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項５】
前記ピーク値候補選択部と前記ピーク値演算部の処理結果を選択して出力するセレクタと、
前記ピーク値保持部として機能するレジスタであって、前記セレクタが出力した前記ピーク値演算部の処理結果を格納する第１のレジスタと、前記セレクタが出力した前記ピーク値候補選択部の処理結果を格納する第２のレジスタとを有するレジスタファイルとをさらに備え、
前記ピーク値演算部は、前記第１のレジスタと前記第２のレジスタの格納内容を読み出して処理することを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項６】
前記レジスタファイルは、前記データ記憶部からの前記ｎビットのデータを前記ピーク値候補選択部に出力する前に一時的に格納するレジスタをさらに含むことを特徴とする請求項５に記載のマイクロプロセッサ。
【請求項７】
前記アドレス生成器から前記ピーク値演算部への出力を一時的に格納するバッファをさらに備えることを特徴とする請求項１から６のいずれか１項に記載のマイクロプロセッサ。
【請求項８】
マイクロプロセッサにおいて、複数のデータのうちの最大値または最小値であるピーク値を取得するピーク値取得処理を実行する際に、
読出アドレスを順次生成し、
前記読出アドレスを起点とするｎビットのデータを記憶部から読み出し、
１データ構成単位であるｍビット（ｍ：アドレス付与単位の整数倍）のデータを１エレメントとして、前記ｎビットのデータを構成する複数個のエレメントのうちのピーク値を有するエレメントをピーク値候補として選択して、該ピーク値候補が前記複数個のエレメントをそれらのアドレス順に配列してなるエレメント列における位置を示す位置情報と共に出力し、
ピーク値と、該ピーク値を有するエレメントのアドレスを保持し、
前記ピーク値候補と前記ピーク値が、前記ピーク値取得処理が最大値を取得するか最小値を取得するかに応じた大小関係を満たすことを条件に、前記ピーク値候補の前記位置情報と前記読出アドレスとを用いて該ピーク値候補のエレメントのアドレスを算出すると共に、算出した前記アドレスと前記ピーク値候補で保持中のアドレスとピーク値を更新することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ、具体的にはマイクロプロセッサにおいて、複数のデータのうちの最大値または最小値並びにそのアドレスを求める技術に関する。
【背景技術】
【０００２】
マイクロプロセッサが行う種々の処理のうち、メモリなどの記憶手段に格納された複数のデータから最大値または最小値並びにそのアドレスを求める処理があり、この処理を高速に行う手法が研究されている
【０００３】
図１９は、特許文献１の図１であり、該特許文献１に開示された手法で上記処理を実行するマイクロプロセッサを示している。ここで最小値を求める処理を例にして図１９のマイクロプロセッサを説明する。
【０００４】
このマイクロプロセッサは、データを記憶した記憶装置２と、アドレス発生回路４と、アドレスポインタ６と、テーブル検索回路１０と、入力ポート４３と、入力ポート４４と、演算器３と、アキュムレータ５を備える。アドレス発生回路４は、読出アドレスを順次生成し、アドレスポインタ６は、読出アドレスを順次記憶装置２に出力する。記憶装置２は、アドレスポイント６からの読出アドレスに格納されたデータを出力する。テーブル検索回路１０は、記憶装置２からのデータと共に、アクセスポインタ６から読出アドレスを取り込み、演算器３の片方の入力ポート４３の上位ビット格納部４３Ａにデータを、下位ビット格納部４３Ｂに読出アドレスを入力する。アキュムレータ５は、演算器３の前回の演算結果を格納しており、演算器３の他方の入力ポート４４にこの演算結果を入力する。演算器３は、入力ボード４３に格納された合成データ（データ＋アドレス）と、入力ポート４４に格納された前回の演算結果となる合成データとを比較し、小さい方の値を新たな演算結果としてアキュムレータ５に出力する。
【０００５】
特許文献１に開示された手法は、データとそのアドレスをそれぞれ上位ビットと下位ビットにして合成データを得、合成データを用いて最小値を求めることによって、最小値とそのアドレスを同時に得ることができ、高速な処理を実現する。
【特許文献１】特開平０７−０５６７３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
マイクロプロセッサの処理量が増加する一途をたどる背景において、処理の高速化に対する要求が高まる一方であり、最大値または最小値を求める処理も例外ではない。特許文献１に開示された手法は、合成データを作成して比較を行うことによって、最大値または最小値およびそれのアドレスを同時に取得できるが、データを１つずつ処理することと、合成データの作成に実行サイクルが必要であることから、高速化の効果が限られている。
【課題を解決するための手段】
【０００７】
本発明の１つの態様は、複数のデータのうちの最大値または最小値であるピーク値を取得するピーク値取得処理を実行するマイクロプロセッサである。このマイクロプロセッサは、アドレス生成器と、データ記憶部と、ピーク値候補選択部と、ピーク値保持部と、ピーク値演算部とを備える。
【０００８】
アドレス生成器は、読出アドレスを順次生成して出力する。
【０００９】
データ記憶部は、アドレス生成器が出力した読出アドレスを起点とするｎビットのデータを出力する。
【００１０】
ピーク値候補選択部は、１データ構成単位であるｍビット（ｍ：アドレス付与単位の整数倍）のデータを１エレメントとして、データ記憶部が出力したｎビットのデータを構成する複数個のエレメントのうちのピーク値を有するエレメントをピーク値候補として選択し、該ピーク値候補が上記複数個のエレメントをそれらのアドレス順に配列してなるエレメント列における位置を示す位置情報と共に出力する。
【００１１】
ピーク値保持部は、ピーク値演算部の出力を保持するものであり、この出力は、ピーク値と、該ピーク値を有するエレメントのアドレスを含む。
【００１２】
ピーク値演算部は、ピーク値候補選択部が出力したピーク値候補とピーク値保持部に保持されたピーク値が、ピーク値取得処理が最大値を取得するか最小値を取得するかに応じた大小関係を満たすことを条件に、ピーク値候補の位置情報と読出アドレスとを用いて該ピーク値候補のエレメントのアドレスを算出すると共に、算出した前記アドレスと前記ピーク値候補を前記ピーク値保持部に出力して該ピーク値保持部の保持内容を更新する。
【００１３】
ここで、「ピーク値処理が最大値を取得するか最小値を取得するかに応じた大小関係」とは、最大値を取得する処理の場合には、「ピーク値候補＞保持中のピーク値」を意味し、最小値を取得する処理の場合には、「ピーク値候補＜保持中のピーク値」を意味する。
【００１４】
なお、上記マイクロプロセッサを装置や方法、システム、プログラムに置き換えて表現したものも、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明にかかる技術によれば、マイクロプロセッサにおいて、最大値または最小値並びにそのアドレスを求める処理をより高速化できる。
【発明を実施するための最良の形態】
【００１６】
本発明の具体的な実施の形態を説明する前に、まず、本発明の原理について説明する。図１は、本発明の原理を説明するためのマイクロプロセッサ１００の模式図を示す。なお、本発明の主旨が分かりやすいように、マイクロプロセッサ１００について、本発明と関連する部分についてのみ説明および図示し、マイクロプロセッサの通常知られている他の構成要素について省略する。
【００１７】
図１に示すように、マイクロプロセッサ１００は、アドレス生成器１１０、データ記憶部１２０、ピーク値候補選択部１３０、ピーク値演算部１４０、ピーク値保持部１５０を有する。マイクロプロセッサ１００は、データ記憶部１２０に記憶されたデータのうちの最大値または最小値を求めるものであり、以下、説明上の便宜のため、マイクロプロセッサ１００が最大値を求める場合を例にする。また、１データ構成単位をｍビット（ｍ：アドレス付与単位の整数倍）とすると、マイクロプロセッサ１００において、ピーク値候補選択部１３０は、複数のデータ構成単位のｎビットデータを一度に処理する。ここで、例として、アドレス付与単位が８ビットであり、１データ構成単位がアドレス付与単位の２倍の１６ビット（ｍ＝１６）であり、ピーク値候補選択部１３０は、４つのデータ構成単位の６４ビットを一度に処理する。
【００１８】
データ記憶部１２０は、たとえばメモリである。
【００１９】
アドレス生成器１１０は、読出アドレスを順次生成してデータ記憶部１２０とピーク値演算部１４０に出力する。アドレス生成器１１０がデータ記憶部１２０に出力する読出アドレスＡ１と、ピーク値演算部１４０に出力する読出アドレスＡ２とは必ずしも同じものではない。ここで図２と図３に示すアドレス生成器１１０がとり得る２つの構成例を用いて説明する。
【００２０】
図２に示す例のアドレス生成器１１０は、連続する複数のデータの先頭アドレスを読出アドレスとして生成するアドレス生成回路１１２である。この場合、アドレス生成器１１０がデータ記憶部１２０に出力する読出アドレスＡ１と、ピーク値演算部１４０に出力する読出アドレスＡ２は、同じである。
【００２１】
図３に示す例のアドレス生成器１１０は、オフセット生成回路１１４と、ベースアドレス出力回路１１６と、加算器１１８を備える。この場合、データ記憶部１２０に出力される読出アドレスＡ１は、加算器１１８が、オフセット生成回路１１４から出力されたオフセットと、ベースアドレス出力回路１１６から出力されたベースアドレスとを加算して得たアドレスである。それに対して、ピーク値演算部１４０に出力されるＡ２は、オフセット生成回路１１４から出力されたオフセットのみとすることができる。
【００２２】
以下の説明において、特別な説明が無い限り、アドレス生成器がピーク値演算部に出力するアドレスはアドレスそのものとオフセットのいずれでもいいことを意味する。
【００２３】
データ記憶部１２０は、アドレス生成器１１０が出力する読出アドレスＡ１を起点とする６４ビットのデータＤをピーク値候補選択部１３０に出力する。
【００２４】
ピーク値候補選択部１３０は、図４に示すように、この６４ビットのデータをそれらのアドレス順にデータ構成単位の１６ビット毎に分け、１データ構成単位の１６ビットを１エレメントとして、データＤを４つのエレメントＤ０〜Ｄ３として扱う。
【００２５】
ピーク値候補選択部１３０は、２つの処理を行う。１つは、４つのエレメントＤ０〜Ｄ３のうちの最大値をピーク値候補として求める処理であり、もう１つは、ピーク値候補のエレメントが、４つのエレメントをそれらのアドレス順に配列してなるエレメント列における位置を示す情報を求める処理である。以下、この位置をエレメント位置といい、エレメント位置を示す情報を位置情報という。
【００２６】
エレメントＤ０〜Ｄ３のアドレス順が、「Ｄ０、Ｄ１、Ｄ２、Ｄ３」の順であるため、エレメントの配列順も「Ｄ０、Ｄ１、Ｄ２、Ｄ３」となる。エレメント位置は、当該エレメントが「Ｄ０、Ｄ１、Ｄ２、Ｄ３」のエレメント列における相対的な位置を意味する。たとえば、Ｄ０を起点とする場合は、エレメントＤ０〜Ｄ３のそれぞれの位置情報を「０」、「１」、「２」、「３」とすることができ、Ｄ３を起点とする場合は、エレメントＤ０〜Ｄ３のそれぞれの位置情報を「３」、「２」、「１」、「０」とすることができる。ここでＤ０が起点である場合を例にする。
【００２７】
ピーク値候補選択部１３０は、ピーク値候補となるエレメントＤＢ、および該エレメントＤＢの位置情報ＰＢをピーク値演算部１４０に出力する。
【００２８】
ピーク値演算部１４０は、ピーク値候補選択部１３０から出力されたピーク値候補ＤＢと、ピーク値保持部１５０に保持されたピーク値のエレメントＤＡ０とを比較する。なお、ピーク値保持部１５０は、ピーク値演算部１４０の演算結果を保持するものであり、ピーク値ＤＡ０と、該ピーク値ＤＡ０のエレメントのアドレスＰＡ０とを格納している。
【００２９】
ピーク値演算部１４０は、ピーク値候補選択部１３０が出力したピーク値候補ＤＢが、ピーク値保持部１５０に格納されたピーク値ＤＡ０以下である場合には、ピーク値保持部１５０から読み出した内容（ピーク値ＤＡ０とそのアドレスＰＡ０）をそのまま新たなピーク値およびそのアドレス（ＤＡ１、ＰＡ１）としてピーク値保持部１５０に出力する。一方、ピーク値候補選択部１３０が出力したピーク値候補ＤＢが、ピーク値保持部１５０に保持されたピーク値ＤＡ０より大きい場合には、ピーク値演算部１４０は、ピーク値候補ＤＢを新たなピーク値ＤＡ１としてピーク値保持部１５０に出力すると共に、アドレス生成器１１０が出力した、今回の４つのエレメントを読み出すための読出アドレスＡ２と、ピーク値候補ＤＢの位置情報ＰＢとを用いて、下記の式（１）に従って新たなピーク値ＤＡ１（ＤＢ）のアドレスＰＡ１を求めてピーク値保持部１５０に出力する。これにより、ピーク値保持部１５０の保持内容が更新される。
【００３０】
ＰＡ１＝Ａ２＋ＰＢ×（データ構成単位／アドレス付与単位）    （１）
但し，ＰＡ１：新たなピーク値のアドレス
Ａ２：読出アドレス
ＰＢ：新たなピーク値の位置情報
【００３１】
ここの例では、データ構成単位が１６ビットであり、アドレス付与単位が８ビットであるため、例えば、図４に示すエレメントＤ２がピーク値ＤＡ０として選択された場合には、そのアドレスＰＡ１が「読出アドレスＡ２＋２×２」となる。
【００３２】
なお、上記式（１）における「位置情報ＰＢ×（データ構成単位／アドレス付与単位）」の演算は、ピーク値候補選択部１３０がピーク値候補ＤＢを選択して、該ピーク値候補ＤＢの位置情報ＰＢを出力する際に行ってもよいが、ピーク値演算部１４０がピーク値候補ＤＢを新たなピーク値として決定した際に行うことが好ましい。こうすることによって、ピーク値候補ＤＢではなく、ピーク値保持部１５０に格納されたピーク値ＤＡ０が新たなピーク値として決定された場合にこの演算をしなくてよいので、効率が良い。
【００３３】
上述した処理が繰り返され、データ記憶部１２０に記憶された、最大値を求める範囲内のデータの処理が完了したときに、ピーク値保持部１５０には、最大値およびそのアドレスが格納される。なお、このアドレスも、アドレスそのものであってもよいし、オフセットであってもよい。
【００３４】
以上、最大値を求める処理を例にして説明したが、勿論、最小値を求める処理を実行するマイクロプロセッサ、最大値と最小値の両方を求める処理を実行するマイクロプロセッサにも本発明の原理を適用できる。
【００３５】
ここで、特許文献１の手法で一度に複数のデータすなわち複数のデータ構成単位のデータを処理する場合について考える。この場合、複数個のデータとそのアドレスで複数個の合成データを作成し、複数個の合成データからピーク値を求めて順次更新する方法が考えられる。この方法では、各データの合成データを作成する必要があるため、一度に処理するデータの数が多いほど、合成データを作成するために必要な実行サイクル数も多くなる。たとえば、４つのデータを一度に処理する場合、先頭のデータのアドレスがアドレスポインタから得られるとして、後続の３つのデータに対して加算処理などによってアドレスを求める処理が必要である。そのため、一度に複数のデータを並列に処理することにより得られるメリットを弱めてしまい、確実に処理を高速化できるとは限らないという問題がある。
【００３６】
さらに、各合成データがデータとそのアドレスから構成されるため、複数の合成データを一時的に格納する記憶手段の容量も大きくなるという問題がある。
【００３７】
本発明に基づく技術によれば、複数のデータ構成単位の分のデータを一度に読み出し、これらのデータを構成する各エレメントのうちの最大値をピーク値候補として求めると共に、ピーク値候補が新たな最大値として決定された際に、ピーク値候補の位置情報と読出アドレスからそのアドレスを求める。こうすることによって、一度に複数のデータ構成単位分のデータを処理することができると共に、求められた最大値のアドレスも簡単に取得でき、また、アドレスの算出は、ピーク値として決定されたピーク値候補に対してのみ行われるので、特許文献１の手法より、少ない実行サイクル数で最大値を求める処理ができる。
【００３８】
さらに、各エレメントは、データそのものであり、アドレスが含まれていないため、ピーク値候補選択部１３０の必要な記憶容量も少なくても済む。
【００３９】
以上の説明を踏まえて、本発明の原理を具現化した実施の形態を説明する。なお、以下の説明において、読出アドレス、エレメント、エレメント位置、位置情報、読出アドレスと位置情報からアドレスを求める方法などについて、上述したのと同じであるため、それらについて詳細な説明を省略する。また、アドレス付与単位、データ構成単位、一度に処理するデータのビット数を上記と同じように、それぞれ「８ビット」、「１６ビット」、「６４ビット」を例にする。
＜第１の実施の形態＞
【００４０】
図５は、本発明の第１の実施形態にかかるマイクロプロセッサ２００を示す。マイクロプロセッサ２００は、最大値と最小値のいずれか一方または両方を求めるものであってもよいが、分かりやすいように、最大値を求めるものを例にして説明する。図示のように、マイクロプロセッサ２００は、アドレス生成器２１０と、メモリ２２０と、ピーク値候補選択部２３０と、ピーク値演算部２８０と、ピーク値保持部２９０を備える。
【００４１】
アドレス生成器２１０は、オフセット生成回路２１４と、ベースアドレス出力回路２１６と、加算器２１８を有する。オフセット生成回路２１４は、オフセットを順次生成して加算器２１８と、ピーク値演算部２８０に出力する。
【００４２】
加算器２１８は、オフセット生成回路２１４からのオフセットと、ベースアドレス出力回路２１６からのベースアドレスとを加算して読出アドレスを得、該読出アドレスをメモリ２２０に出力する。
【００４３】
メモリ２２０は、複数のデータＸ［０］、Ｘ［１］、・・・を格納している。１つのデータはアドレス付与単位の８ビットの２倍の１６ビットである。メモリ２２０は、アドレス生成器２１０からの読出アドレスを起点とする６４ビットすなわち４つのデータを出力する。
【００４４】
ピーク値候補選択部２３０は、メモリ２２０からの４つのデータを入力Ｉｎとして取り込み、それらのうちの最大値を求めてＯｕｔ２として出力する。また、ピーク値候補選択部２３０は、Ｉｎの４つのデータをそれぞれエレメントとして、最大値として求められたＯｕｔ２のエレメント位置を示す情報すなわち位置情報をＯｕｔ１として出力する。
【００４５】
ピーク値保持部２９０は、第１の記憶部２９２と、第２の記憶部２９４を備え、ピーク値演算部２８０が求めた最大値とそのオフセットをそれぞれ保持している。
【００４６】
ピーク値演算部２８０は、アドレス生成器２１０からのオフセットと、ピーク値候補選択部２３０からの最大値候補Ｏｕｔ２および最大値候補Ｏｕｔ２の位置情報Ｏｕｔ１、第１の記憶部２９２に保持された最大値と、第２の記憶部２９４に保持された最大値のエレメントのオフセットをそれぞれ入力Ｉｎ５、Ｉｎ４、Ｉｎ３、Ｉｎ２、Ｉｎ１として、Ｉｎ４（最大値候補）とＩｎ２（第１の記憶部２９２に保持されている最大値）のうちの大きいほうを新たな最大値Ｏｕｔ２として第１の記憶部２９２に出力する。また、ピーク値演算部２８０は、新たな最大値Ｏｕｔ２がＩｎ２である場合には、Ｉｎ１をＯｕｔ１として第２の記憶部２９４に出力する一方、新たな最大値Ｏｕｔ２がＩｎ４である場合には、アドレス生成器２１０からのオフセット（Ｉｎ５）と、Ｉｎ３（最大値候補の位置情報）とを用いて最大値候補のオフセットを求めてＯｕｔ１として第２の記憶部２９４に出力する。
【００４７】
ピーク値候補選択部２３０とピーク値演算部２８０の詳細構成を説明する。
図６は、ピーク値候補選択部２３０を示す。ピーク値候補選択部２３０は、第１の演算回路２４０と、第２の演算回路２５０と、第３の演算回路２６０と、乗算器２７０を有する。
【００４８】
第１の演算回路２４０は、入力Ｉｎを構成する４つのエレメントＩｎ［０］〜Ｉｎ［３］のうちのＩｎ［３］とＩｎ［２］を入力Ｉｎ２とＩｎ１とし、２つの入力のうちの大きいエレメントとその位置情報をそれぞれ出力Ｏｕｔ２とＯｕｔ１として出力する。
【００４９】
第２の演算回路２５０は、入力Ｉｎを構成する４つのエレメントＩｎ［０］〜Ｉｎ［３］のうちのＩｎ［１］とＩｎ［０］を入力Ｉｎ２とＩｎ１とし、２つの入力のうちの大きいエレメントとその位置情報をそれぞれ出力Ｏｕｔ２とＯｕｔ１として出力する。
【００５０】
第３の演算回路２６０は、第１の演算回路２４０の２つの出力Ｏｕｔ２とＯｕｔ１、および第２の演算回路２５０の２つの出力Ｏｕｔ２とＯｕｔ１を入力Ｉｎ４、Ｉｎ３、Ｉｎ２、Ｉｎ１とし、Ｉｎ４とＩｎ２のうちの大きい方を最大値候補として選択して、ピーク値候補選択部２３０の出力Ｏｕｔ２として出力する。また、ピーク値候補選択部２３０は、Ｉｎ４が最大値候補として選択されたときには、その位置情報Ｉｎ３を出力Ｏｕｔ１として乗算器２７０に出力する一方、Ｉｎ２が最大値候補として選択されたときには、その位置情報Ｉｎ１を出力Ｏｕｔ１として乗算器２７０に出力する。
【００５１】
乗算器２７０は、第３の演算回路２６０から出力したＯｕｔ１（位置情報）と「データ構成単位（エレメントのビット数）／アドレス付与単位」とを乗算する。本実施の形態の例では、データ構成単位が１６ビットであり、アドレス付与単位が８ビットであるため、乗算器２７０は、第３の演算回路２６０から出力したＯｕｔ１に「２」を乗算する。
乗算器２７０は、乗算結果をピーク値候補選択部２３０の出力Ｏｕｔ１として出力する。なお、乗算器２７０は、第３の演算回路２６０の出力Ｏｕｔ１に「２」を乗算することができる従来の回路で構成することができ、乗算器そのものであってもよいし、左シフト器、演算器などであってもよい。
【００５２】
図７は、第１の演算回路２４０を示す。第１の演算回路２４０は、４つのエレメントＩｎ［０］〜Ｉｎ［３］のうちの先頭の２つのエレメント（Ｉｎ［０］とＩｎ［１］）をそれぞれ入力Ｉｎ１とＩｎ２とし、比較回路２４２と、セレクタ２４６と、セレクタ２４８を備える。比較回路２４２は、入力Ｉｎ１とＩｎ２を比較し、比較の結果を示す信号を２つのセレクタに出力する。具体的には、たとえばＩｎ２＞Ｉｎ１の場合には「ハイ」を出力し、Ｉｎ２≦Ｉｎ１の場合には「ロウ」を出力する。セレクタ２４６は、比較回路２４２からＩｎ２＞Ｉｎ１を示す「ハイ」を受信するとＩｎ２を選択してＯｕｔ２として出力する一方、「ロウ」を受信するとＩｎ１をＯｕｔ２として出力する。また、セレクタ２４８は、比較回路２４２からＩｎ２＞Ｉｎ１を示す「ハイ」を受信するとＩｎ２の位置情報「１」をＯｕｔ１として出力する一方、「ロウ」を受信するとＩｎ１の位置情報「０」をＯｕｔ１として出力する。
【００５３】
図８は、第２の演算回路２５０を示す。第２の演算回路２５０は、４つのエレメントＩｎ［０］〜Ｉｎ［３］のうちの後部の２つのエレメント（Ｉｎ［２］とＩｎ［３］）を入力Ｉｎ１とＩｎ２とし、比較回路２５２と、セレクタ２５６と、セレクタ２５８を備える。比較回路２５２は、入力Ｉｎ１とＩｎ２を比較し、比較の結果を示す信号を２つのセレクタに出力する。具体的には、たとえばＩｎ２＞Ｉｎ１の場合には「ハイ」を出力し、Ｉｎ２≦Ｉｎ１の場合には「ロウ」を出力する。セレクタ２５６は、比較回路２５２からＩｎ２＞Ｉｎ１を示す「ハイ」を受信するとＩｎ２を選択してＯｕｔ２として出力する一方、「ロウ」を受信するとＩｎ１をＯｕｔ２として出力する。また、セレクタ２５８は、比較回路２５２からＩｎ２＞Ｉｎ１を示す「ハイ」を受信すると「１」をＯｕｔ１として出力する一方、「ロウ」を受信すると「０」をＯｕｔ１として出力する。
【００５４】
図９は、第３の演算回路２６０を示す。第２の演算回路２５０の出力Ｏｕｔ２とＯｕｔ１、第１の演算回路２４０の出力Ｏｕｔ２とＯｕｔ１を入力Ｉｎ４、Ｉｎ３、Ｉｎ２、Ｉｎ１とし、比較回路２６２と、加算器２６４と、セレクタ２６６と、セレクタ２６８を備える。比較回路２６２は、エレメントであるＩｎ４とＩｎ２を比較し、比較の結果を示す信号を２つのセレクタに出力する。具体的には、たとえばＩｎ４＞Ｉｎ２の場合には「ハイ」を出力し、Ｉｎ４≦Ｉｎ２の場合には「ロウ」を出力する。セレクタ２６６は、比較回路２６２からＩｎ４＞Ｉｎ２を示す「ハイ」を受信するとＩｎ４を選択してＯｕｔ２として出力する一方、「ロウ」を受信するとＩｎ２をＯｕｔ２として出力する。また、セレクタ２６８は、比較回路２６２からＩｎ４＞Ｉｎ２を示す「ハイ」を受信すると、加算器２６４によるＩｎ３と「２」の加算結果をＩｎ４の位置情報（「２」または「３」）としてＯｕｔ１に出力一方、「ロウ」を受信するとＩｎ２の位置情報Ｉｎ１（「０」または「１」）をＯｕｔ１に出力する。
【００５５】
図１０は、ピーク値演算部２８０を示す。ピーク値演算部２８０は、アドレス生成器２１０からのオフセット、ピーク値候補選択部２３０からの最大値候補およびその位置情報、第１の記憶部２９２からの最大値、および第２の記憶部２９４からのオフセットを入力Ｉｎ５、Ｉｎ４、Ｉｎ３、Ｉｎ２、Ｉｎ１とする。ピーク値演算部２８０は、比較回路２８２と、加算器２８４と、セレクタ２８６と、セレクタ２８６を備える。
【００５６】
比較回路２８２は、入力Ｉｎ４（最大値候補）とＩｎ２（保持中の最大値）を比較し、比較の結果を示す信号を２つのセレクタに出力する。具体的には、たとえばＩｎ４＞Ｉｎ２の場合には「ハイ」を出力し、Ｉｎ４≦Ｉｎ２の場合には「ロウ」を出力する。セレクタ２８６は、比較回路２８２からＩｎ４＞Ｉｎ２を示す「ハイ」を受信するとＩｎ４を選択してＯｕｔ２として出力する一方、「ロウ」を受信するとＩｎ２をＯｕｔ２として出力する。また、セレクタ２８８は、比較回路２８２からＩｎ４＞Ｉｎ２を示す「ハイ」を受信すると、加算器２８４によるＩｎ３（最大値候補の位置情報）とＩｎ５（アドレス生成器２１０からのオフセット）の加算結果をＯｕｔ１に出力し、「ロウ」を受信するとＩｎ１の値をＯｕｔ１に出力する。
【００５７】
なお、上記の各構成要素における比較回路は、比較器、演算器、加算器、加減算器などの組合せで構成される。
【００５８】
ここで図１１に示す８つのデータから最大値を求める具体例を用いて、マイクロプロセッサ２００の処理を詳細に説明する。これらの８つのデータは、それぞれ１６ビットであり、先頭のアドレスがＦＦＦ０１００である。また、最大値の「０１００ｈ」がアドレス「ＦＦＦ０１０Ａｈ」に格納されており、マイクロプロセッサ２００は、最大値の「０１００ｈ」とそのオフセットを求める。ここで、ベースアドレスをＦＦＦＦ０１００ｈとすると、マイクロプロセッサ２００の処理結果は、最大値の「０１００ｈ」とそのオフセットの「０００Ａｈ」となるはずである。
【００５９】
図１２と図１３は、処理の進行に伴い、マイクロプロセッサ２００における各構成要素の出力内容や、格納内容の変化を示す。まず、図１２から説明する。
【００６０】
図１２に示すように、メモリ２２０は、図１１に示す８つのデータを格納している。また、第１の記憶部２９２は、１６ビットの符号付きの数の最小値となる「８０００ｈ」を最大値として格納しており、第２の記憶部２９４は、「００００ｈ」をそのオフセットの初期値として格納している。アドレス生成器２１０のベースアドレス出力回路２１６は、ベースアドレス「ＦＦＦＦ０１００ｈ」を格納している。
【００６１】
処理の開始にあたり、アドレス生成器２１０におけるオフセット生成回路は、オフセット「００００ｈ」を生成してピーク値演算部２８０と加算器２１８に出力する。
【００６２】
加算器２１８がメモリ２２０に出力する読出アドレスがＦＦＦＦ０１００ｈとなり、これは、メモリ２２０に格納された８つのデータの先頭アドレスである。
【００６３】
従って、メモリ２２０に格納された８つのデータのうちの先頭の４つ（図中太枠で囲まれた部分）がピーク値候補選択部２３０に読み出される。
【００６４】
ピーク値候補選択部２３０は、この４つのデータのうちの最大値を求めて、その位置情報と共に出力する。この４つのデータのうちの最大値が「００８０ｈ」であり、位置情報が「２」であるため、ピーク値候補選択部２３０は、Ｏｕｔ２に「００８０ｈ」、Ｏｕｔ１に「０００４ｈ」を出力する。
【００６５】
ピーク値演算部２８０は、Ｉｎ４とＩｎ２を比較した結果、Ｉｎ４の「００８０ｈ」をＯｕｔ２として第１の記憶部２９２に出力する。また、ピーク値演算部２８０は、Ｉｎ５のオフセットと、Ｉｎ４の位置情報（Ｉｎ３）とを加算して「００８０ｈ」のオフセットを得、このオフセットをＯｕｔ１として第２の記憶部２９４に出力する。ここで、Ｉｎ５のオフセットが「０００ｈ」であるため、ピーク値演算部２８０が出力したオフセットＯｕｔ１はＩｎ３の「０００４ｈ」となる。
このようにして、第１の記憶部２９２と第２の記憶部２９４の保持内容が更新される。
【００６６】
図１３に移って続きを説明する。図１３に示すように、１回目の処理によって、第１の記憶部２９２には最大値「００８０ｈ」が格納され、第２の記憶部２９４には、該最大値のオフセット「０００４ｈ」が格納される。そこで、アドレス生成器２１０は、次の４つのデータを処理するために次のオフセット「０００８ｈ」を生成してピーク値演算部２８０と加算器２１８に出力する。
【００６７】
加算器２１８がメモリ２２０に出力する読出アドレスがＦＦＦＦ０１０８ｈとなり、これは、メモリ２２０に格納された８つのデータの後部の４つのデータの先頭アドレスである。
【００６８】
従って、メモリ２２０に格納されたこれらの４つのデータ（図中太枠で囲まれた部分）がピーク値候補選択部２３０に読み出される。
【００６９】
この４つのデータのうちの最大値が「０１００ｈ」であり、位置情報が「１」であるため、ピーク値候補選択部２３０は、Ｏｕｔ２に「０１００ｈ」、Ｏｕｔ１に「０００２ｈ」を出力する。
【００７０】
ピーク値演算部２８０は、Ｉｎ４（「０１００ｎ」）とＩｎ２（「００８０ｈ」）を比較した結果、Ｉｎ４の「０１００ｈ」をＯｕｔ２として第１の記憶部２９２に出力する。また、ピーク値演算部２８０は、Ｉｎ５のオフセットと、Ｉｎ４の位置情報（Ｉｎ３）とを加算して「０１００ｈ」のオフセットを得、このオフセットをＯｕｔ１として第２の記憶部２９４に出力する。ここで、Ｉｎ５のオフセットが「０００８ｈ」であるので、ピーク値演算部２８０が出力したオフセットＯｕｔ１は「０００Ａｈ」となる。
【００７１】
これにより、目標となる最大値「０１００ｈ」が第１の記憶部２９２に格納され、そのオフセット「０００Ａｈ」が第２の記憶部２９４に格納される。
【００７２】
本実施の形態のマイクロプロセッサ２００は、本発明の原理を具現化したものであるため、原理の説明時に述べた効果を得ることができる。
＜第２の実施の形態＞
【００７３】
図１４は、本発明の第２の実施の形態にかかるマイクロプロセッサ３００を示す。マイクロプロセッサ３００は、制御回路３０２と、アドレス生成器３１０と、メモリ３２０と、バッファ（以下ＢＵＦという）３２４と、ピーク値候補選択部３３０と、ピーク値演算部３８０と、レジスタファイル３９０を備える。
【００７４】
アドレス生成器３１０とメモリ３２０は、第１の実施の形態のマイクロプロセッサのアドレス生成器２１０とメモリ２２０と同じ構成であるので、ここで説明を省略する。
【００７５】
制御回路３０２は、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からの命令（最大値を求める命令または最小値を求める命令）を解読し、命令に応じた処理をピーク値候補選択部３３０とピーク値演算部３８０に行わせると共に、レジスタファイル３９０に対して読み出すレジスタを指定する。
【００７６】
ＢＵＦ３２４は、オフセット生成回路３１４とピーク値演算部３８０との間に設けられ、オフセット生成回路３１４からピーク値演算部３８０に出力するオフセットを一時的に格納する。また、ＢＵＦ３２４は、レジスタにより構成することができ、単一のレジスタであってもよいし、レジスタファイルのように複数のレジスタで構成されたものであってもよい。なお、ＢＵＦ３２４が複数のレジスタで構成された場合には、命令のオペランドでアドレス生成器３１０から出力されたオフセットの格納先のレジスタを指定するようにすればよい。
【００７７】
レジスタファイル３９０は、最大値または最小値を求めるためのレジスタファイルであり、複数の６４ビット幅のレジスタから構成される。レジスタファイル３９０は、ピーク値演算部３８０の演算結果を一時的に格納するピーク値保持部として機能するレジスタ以外に、メモリ３２０から読み出したデータをピーク値候補選択部３３０に渡す前に一旦格納するレジスタを備える。
【００７８】
ピーク値候補選択部３３０は、レジスタファイル３９０から読み出した４つのデータのピーク値（最大値を求める場合には４つのデータのうちの最大値、最小値を求める場合には４つのデータのうちの最小値）を選択してピーク値候補としてＯｕｔ２に出力すると共に、「ピーク値候補の位置情報×２」をＯｕｔ１に出力する。
【００７９】
ピーク値演算部３８０は、ＢＵＦ３２４を介してアドレス生成器３１０が出力したオフセット、ピーク値候補選択部３３０の出力Ｏｕｔ２とＯｕｔ１、レジスタファイル３９０に記憶されたピーク値およびそのオフセットをそれぞれ入力Ｉｎ５、Ｉｎ４、Ｉｎ３、Ｉｎ２、Ｉｎ１として、まず、Ｉｎ４とＩｎ２を比較する。
【００８０】
比較の結果、Ｉｎ４とＩｎ２が、最大値を求めるか最小値を求めるかに応じた大小関係を満たすときに、ピーク値演算部３８０は、Ｉｎ４（ピーク値候補）を新たなピーク値として決定する。この場合、ピーク値演算部３８０は、さらに、Ｉｎ３とオフセットＩｎ５とを用いてＩｎ４のオフセットを求める。
【００８１】
一方、Ｉｎ４とＩｎ２が、上記大小関係を満たさないときには、ピーク値演算部３８０は、Ｉｎ２とＩｎ１をそれぞれ新たなピーク値と、新たなピーク値のオフセットに決定する。
【００８２】
なお、Ｉｎ４とＩｎ２の「最大値を求めるか最小値を求めるかに応じた大小関係」とは、最大値を求める場合には「Ｉｎ４＞Ｉｎ２」を意味し、最小値を求める場合には「Ｉｎ４＜Ｉｎ２」を意味する。
【００８３】
ピーク値候補選択部３３０とピーク値演算部３８０の具体的の構成について、第１の実施の形態のマイクロプロセッサ２００の相対応するものと同じとすることができ、ここで詳細な説明を省略する。
【００８４】
ここで、ＣＰＵからの命令が「最大値を求める」ものである場合を例として、図１４に示すマイクロプロセッサ３００における処理を具体的に説明する。
【００８５】
ここも、図１１に示す８つのデータを例にし、１回目の処理すなわち先頭の４つのデータ「０００１ｈ」、「０００２ｈ」、「００８０ｈ」、「０００４」に対する処理が終わった段階から説明する。
【００８６】
次に処理する４つのデータを取得するために、例えばロード命令を実行してメモリ３２０に格納された次の４つのデータをメモリ３２０からレジスタファイル３９０に格納する。図１５を参照してこのロード命令での動作を説明する。アドレス生成器３１０におけるオフセット生成回路３１４は、オフセット「０００８ｈ」を生成して、ＢＵＦ３２４に格納する。加算器３１８は、オフセット生成回路３１４が生成したオフセット「０００８ｈ」と、ベースアドレス出力回路３１６が出力したベースアドレス「ＦＦＦＦ０１００ｈ」とを加算して読出アドレス「ＦＦＦＦ０１００８ｈ」を得、この読出アドレスをメモリ３２０に出力する。これにより、メモリ３２０に格納された次の４つのデータ（図中太線枠で囲まれた部分）は、メモリ３２０からレジスタファイル３９０におけるレジスタＲ１に格納される。
【００８７】
図１５に示すように、最大値を求める場合にＣＰＵからの命令は（ＭＡＸ  Ｒ１，Ｒ０）であり、「ＭＡＸ」は、「最大値を求める」ことを指示し、「Ｒ１」と「Ｒ０」は、メモリ３２０から読み出す４つのデータを格納するレジスタと、ピーク値演算部３８０の演算結果を格納するレジスタとをそれぞれ指定する。
【００８８】
なお、前回の４つのデータに対する処理の結果、最大値の「００８０ｈ」とそのオフセット「０００４ｈ」も、レジスタファイル３９０における、ＣＰＵからの命令により指定されたレジスタＲ０に格納されている。
【００８９】
なお、最大値およびそのオフセットとも１６ビットですが、それぞれ３２ビットまで符号拡張またはゼロ拡張がなされてレジスタＲ０の上位３２ビットと下位３２ビットにそれぞれ格納されている。
【００９０】
ピーク値候補選択部３３０は、レジスタＲ１に格納された４つのデータを読み出して最も大きいデータを最大値候補として選択してＯｕｔ２に出力すると共に、「最大値候補の位置情報×２」をＯｕｔ１に出力する。図示のように、レジスタＲ１に格納された４つのデータが「０００９ｈ」、「０００８ｈ」、「「０１００ｈ」、「０００５ｈ」であり、それぞれの位置情報が「３」、「２」、「１」、「０」であるため、ピーク値候補選択部３３０から、最大値候補「０１００ｈ」と、その位置情報「１」の２倍である「０００２ｈ」は出力される。
【００９１】
なお、ピーク値候補選択部３３０も、Ｏｕｔ２とＯｕｔ１をそれぞれ３２ビットにゼロ拡張または符号拡張して６４ビットのデータを出力する。図示のように、ピーク値候補選択部３３０は、「００００ｈ、０１００ｈ、００００ｈ、０００２ｈ」の６４ビットを出力する。
【００９２】
ピーク値演算部３８０は、ピーク値候補選択部３３０の出力における上位３２ビットであるＩｎ４（最大値候補）と、レジスタＲ０から読み出した６４ビットの上位３２ビットＩｎ２（保持中の最大値）とを比較し、Ｉｎ４＞Ｉｎ２の場合には、Ｉｎ４を新たな最大値として、Ｉｎ３（「０００２ｈ」）とＢＵＦ３２４に格納されたオフセットＩｎ５（「０００８ｈ」）とを用いてオフセットを求めて、Ｉｎ４と共に新たな値としてレジスタＲ０に書き込む。また、Ｉｎ４≦Ｉｎ２の場合には、ピーク値演算部３８０は、Ｉｎ２とそのオフセットＩｎ１をレジスタＲ０に書き込む。
【００９３】
ここの例では、Ｉｎ４が「０１００ｈ」であり、Ｉｎ２が「００８０ｈ」であるため、Ｉｎ４の「０１００ｈ」は最大値として決定され、そのオフセットとして「０００Ａｈ」が算出される。
【００９４】
ピーク値演算部３８０も、最大値とそのオフセットをそれぞれ３２ビットにゼロ拡張または符号拡張して、上位３２ビットが最大値であり、下位３２ビットがオフセットとなる「００００ｈ、０１００ｈ、００００ｈ、０００Ａｈ」の６４ビットのデータをレジスタＲ０に書込む。
【００９５】
これにより、目標となる最大値「０１００ｈ」とそのオフセットがレジスタＲ０の上位３２ビットと下位３２ビットにそれぞれ格納される。
【００９６】
本実施の形態のマイクロプロセッサ３００も、第１の実施の形態のマイクロプロセッサ２００と同じ効果を得ることができる。
【００９７】
また、アドレス生成器３１０とピーク値演算部３８０の間にＢＵＦ３２４を設けてオフセット生成回路３１４が出力したオフセットを一時的に格納し、メモリ３２０とピーク値候補選択部３３０の間にレジスタファイル３９０を設けてメモリ３２０から読み出されたデータを一時的に格納することによって、パイプライン処理を実行するマイクロプロセッサなど、待ち時間が生じることがある場合でも破綻せずに処理できる。
【００９８】
また、ピーク値演算部３８０の演算結果を記憶するピーク値保持部と、メモリ３２０から読み出したデータを格納する記憶部とが１つのレジスタファイル３９０を共有するように構成しているので、簡単な制御が可能である。
＜第３の実施の形態＞
【００９９】
図１６は、本発明の第３の実施の形態にかかるマイクロプロセッサ４００を示す。マイクロプロセッサ４００は、制御回路４０２と、アドレス生成器４１０と、メモリ４２０と、ＢＵＦ４２４と、ピーク値候補選択部４３０と、ピーク値演算部４８０と、レジスタファイル４９０を備える。
【０１００】
アドレス生成器４１０、メモリ４２０、ＢＵＦ４２４は、第２の実施の形態のマイクロプロセッサ３００における相対応する機能要素と同一であるので、ここで説明を省略する。
【０１０１】
制御回路４０２は、第２の実施の形態のマイクロプロセッサ２００における制御回路３０２が行う処理以外に、セレクタ４９８の制御も行う。
【０１０２】
レジスタファイル４９０は、第２の実施の形態のマイクロプロセッサ２００におけるレジスタファイル３９０と同じように、メモリ４２０から読み出したデータをピーク値候補選択部４３０に出力する前に一時的に格納するレジスタと、ピーク値演算部４８０の演算結果を格納するレジスタを備える。さらに、レジスタファイル４９０は、ピーク値候補選択部４３０の出力を一時的に格納するレジスタを備える。
【０１０３】
ピーク値候補選択部４３０は、マイクロプロセッサ２００におけるピーク値候補選択部３３０と同じ処理を行うが、出力Ｏｕｔ２（ピーク値候補）とＯｕｔ１（ピーク値候補の位置情報×２）をピーク値演算部４８０に出力せず、セレクタ４９８に出力する。
【０１０４】
ピーク値演算部４８０は、マイクロプロセッサ２００におけるピーク値演算部３８０と同じ処理を行うが、出力Ｏｕｔ２（新たなピーク値）と出力Ｏｕｔ１（新たなピーク値のオフセット）を直接レジスタファイル４９０内の当該レジスタに直接出力せず、セレクタ４９８に出力する。
【０１０５】
セレクタ４９８は、制御回路４０２の制御に従って、ピーク値候補選択部４３０の出力とピーク値演算部４８０の出力を選択してレジスタファイル４９０に出力する。具体的には、ピーク値候補選択部４３０による処理がなされ、出力Ｏｕｔ２（ピーク値候補）とＯｕｔ１（ピーク値候補の位置情報×２）が得られたときにピーク値候補選択部４３０の出力をレジスタファイル４９０に出力する。その後、ピーク値演算部４８０による処理がなされ、出力Ｏｕｔ２（新たなピーク値）と出力Ｏｕｔ１（新たなピーク値のオフセット）が得られたときにピーク値演算部４８０の出力をレジスタファイル４９０に出力する。
【０１０６】
ここで、ＣＰＵからの命令が「最大値を求める」ものである場合を例として、図１６に示すマイクロプロセッサ４００における処理を具体的に説明する。
【０１０７】
ここも、図１１に示す８つのデータを例にし、１回目の処理すなわち先頭の４つのデータ「０００１ｈ」、「０００２ｈ」、「００８０ｈ」、「０００４」に対する処理が終わった段階から説明する。
【０１０８】
次に処理する４つのデータを取得するために、例えばロード命令を実行してメモリ４２０に格納された次の４つのデータをメモリ４２０からレジスタファイル４９０に格納する。図１７を参照してこのロード命令での動作を説明する。アドレス生成器４１０におけるオフセット生成回路４１４は、オフセット「０００８ｈ」を生成して、ＢＵＦ４２４に格納する。加算器４１８は、オフセット生成回路４１４が生成したオフセット「０００８ｈ」と、ベースアドレス出力回路４１６が出力したベースアドレス「ＦＦＦＦ０１００ｈ」とを加算して読出アドレス「ＦＦＦＦ０１００８ｈ」を得、この読出アドレスをメモリ４２０に出力する。これにより、メモリ４２０に格納された次の４つのデータ（図中太線枠で囲まれた部分）は、メモリ４２０からレジスタファイル４９０におけるレジスタＲ１に格納される。
【０１０９】
図１７に示すように、次に処理する４つのデータを用いて最大値候補を選択するための、ＣＰＵからの命令は（ＭＡＸＡ  Ｒ１，Ｒ２）であり、「ＭＡＸＡ」は、「最大値候補を求める」ことを指示し、「Ｒ１」と「Ｒ２」は、メモリ４２０から読み出す４つのデータを格納するレジスタと、ピーク値候補選択部４３０の出力を格納するレジスタとをそれぞれ指定する。
【０１１０】
なお、前回の４つのデータに対する処理の結果、最大値の「００８０ｈ」とそのオフセット「０００３ｈ」は、それぞれ３２ビットにゼロ拡張または符号拡張されて、レジスタファイル４９０における、ＣＰＵからの命令により指定されたレジスタＲ０の上位３２ビットと下位３２ビットに格納されている。
【０１１１】
ピーク値候補選択部４３０は、「ＭＡＸＡ」命令のときに動作する。具体的には、レジスタＲ１に格納された４つのデータを読み出して最大値を選択し、選択した最大値を最大値候補としてＯｕｔ２に出力すると共に、「最大値候補の位置情報×２」をＯｕｔ１に出力する。図示のように、レジスタＲ１に格納された４つのデータが「０００９ｈ」、「０００８ｈ」、「「０１００ｈ」、「０００５ｈ」であり、それぞれの位置情報が「３」、「２」、「１」、「０」であるため、ピーク値候補選択部４３０から、最大値候補「０１００ｈ」と、その位置情報「１」の２倍である「０００２ｈ」が出力される。
【０１１２】
セレクタ４９８は、「ＭＡＸＡ」命令であるときにピーク値候補選択部４３０の出力を選択するため、ピーク値候補選択部４３０の出力Ｏｕｔ２とＯｕｔ１は、セレクタ４９８からレジスタファイル４９０に出力される。ピーク値候補選択部４３０の出力Ｏｕｔ２とＯｕｔ１もそれぞれ３２ビットにゼロ拡張または符号拡張されているため、セレクタ４９８から「００００ｈ、０１００ｈ、００００ｈ、０００２ｈ」の６４ビットが出力される。
【０１１３】
図１８に移って続きの処理を説明する。
【０１１４】
図１８に示すように、このとき、レジスタＲ２に、ピーク値候補選択部４３０の処理結果「００００ｈ、０１００ｈ、００００ｈ、０００２ｈ」の６４ビットが格納されている。
【０１１５】
次に最大値を求めるために、ＣＰＵから命令（ＭＡＸＢ  Ｒ２，Ｒ０）がなされる。「ＭＡＸＢ」は、「最大値を求める」ことを指示し、「Ｒ２」と「Ｒ０」は、ピーク値候補選択部４３０が選択した最大値候補と「最大値候補の位置情報×２」を格納するレジスタと、ピーク値演算部４８０の出力を格納するレジスタとをそれぞれ指定する。
【０１１６】
ピーク値演算部４８０は、「ＭＡＸＢ」命令のときに動作する。具体的には、ピーク値演算部４８０は、レジスタＲ２から読み出した６４ビットのデータの上位３２ビットＩｎ４（最大値候補）と、レジスタＲ０から読み出した６４ビットの上位３２ビットＩｎ２（保持中の最大値）とを比較し、Ｉｎ４＞Ｉｎ２の場合には、Ｉｎ４を新たな最大値として、レジスタＲ２から読み出した６４ビットの下位３２ビットＩｎ３（「０００２ｈ」）とＢＵＦ４２４に格納されたオフセットＩｎ５（「０００８ｈ」）とを用いてオフセットを求めて、Ｉｎ４と共に新たな値としてレジスタＲ０に書き込む。また、Ｉｎ４≦Ｉｎ２の場合には、ピーク値演算部４８０は、Ｉｎ２とそのオフセットＩｎ１をレジスタＲ０に書き込む。
【０１１７】
これにより、目標となる最大値「０１００ｈ」とそのオフセットがレジスタＲ０の上位３２ビットと下位３２ビットにそれぞれ格納される。
【０１１８】
本実施の形態のマイクロプロセッサ４００も、第１の実施の形態のマイクロプロセッサ２００と第２の実施の形態のマイクロプロセッサ３００と同じ効果を得ることができる。
【０１１９】
さらに、マイクロプロセッサ４００において、レジスタファイル４９０はピーク値候補選択部４３０の処理結果を一時的に格納するレジスタを備え、セレクタ４９８は、ピーク値候補選択部４３０とピーク値演算部４８０の出力を交互に選択してレジスタファイル４９０に出力する。このような構成において、ピーク値候補選択部４３０とピーク値演算部４８０は同時に動作しないので、比較回路などの内部リソースを共有することができ、回路面積を削減することができる。
【０１２０】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した実施の形態を組み合せたり、さまざまな変更、増減を加えたりしてもよい。これらの組合せ、変更、増減により得られた変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【０１２１】
【図１】本発明の原理を説明するためのマイクロプロセッサの模式図である。
【図２】図１に示すマイクロプロセッサにおけるアドレス生成器のとりうる構成を示す図である（その１）。
【図３】図１に示すマイクロプロセッサにおけるアドレス生成器のとりうる構成を示す図である（その２）。
【図４】図１に示すマイクロプロセッサにおけるピーク値候補選択部がデータを取り扱う態様を説明するための図である。
【図５】本発明の第１の実施の形態にかかるマイクロプロセッサを示す図である。
【図６】図５に示すマイクロプロセッサにおけるピーク値候補選択部を示す図である。
【図７】図６に示すピーク値候補選択部における第１の演算回路を示す図である。
【図８】図６に示すピーク値候補選択部における第２の演算回路を示す図である。
【図９】図６に示すピーク値候補選択部における第３の演算回路を示す図である。
【図１０】図５に示すマイクロプロセッサにおけるピーク値演算部を示す図である。
【図１１】図５に示すマイクロプロセッサが処理するデータの例を示す図である。
【図１２】図１１に示すデータ例に対する処理の進行態様を説明するための図である（その１）。
【図１３】図５に示すマイクロプロセッサによる図１１に示すデータ例に対する処理の進行態様を説明するための図である（その２）。
【図１４】本発明の第２の実施の形態にかかるマイクロプロセッサを示す図である。
【図１５】図１４に示すマイクロプロセッサによる図１１に示すデータ例に対する処理の進行態様を説明するための図である。
【図１６】本発明の第３の実施の形態にかかるマイクロプロセッサを示す図である。
【図１７】図１６に示すマイクロプロセッサによる図１１に示すデータ例に対する処理の進行態様を説明するための図である（その１）。
【図１８】図１６に示すマイクロプロセッサによる図１１に示すデータ例に対する処理の進行態様を説明するための図である（その２）。
【図１９】従来の手法を説明するための図である。
【符号の説明】
【０１２２】
１００  マイクロプロセッサ  １１０  アドレス生成器
１１２  アドレス生成回路  １１４  オフセット生成回路
１１６  ベースアドレス出力回路  １１８  加算器
１２０  データ記憶部  １３０  ピーク値候補選択部
１４０  ピーク値演算部  １５０  ピーク値保持部
２００  マイクロプロセッサ  ２１０  アドレス生成器
２１４  オフセット生成回路  ２１６  ベースアドレス出力回路
２１８  加算器  ２２０  メモリ
２３０  ピーク値候補選択部  ２４０  第１の演算回路
２４２  比較回路  ２４６  セレクタ
２４８  セレクタ  ２５０  第２の演算回路
２５２  比較回路  ２５６  セレクタ
２５８  セレクタ  ２６０  第３の演算回路
２６２  比較回路  ２６４  加算器
２６６  セレクタ  ２６８  セレクタ
２７０  乗算器  ２８０  ピーク値演算部
２８２  比較回路  ２８４  加算器
２８６  セレクタ  ２８８  セレクタ
２９０  ビーク値保持部    ２９２  第１の記憶部
２９４  第２の記憶部    ３００  マイクロプロセッサ
３０２  制御回路    ３１０  アドレス生成器
３１４  オフセット生成回路  ３１６  ベースアドレス出力回路
３１８  加算器  ３２０  メモリ
３２４  バッファ  ３３０  ピーク値候補選択部
３９０  レジスタファイル  ４００  マイクロプロセッサ
４０２  制御回路  ４１０  アドレス生成器
４１４  オフセット生成回路  ４１６  ベースアドレス出力回路
４１８  加算器  ４２０  メモリ
４２４  バッファ  ４３０  ピーク値候補選択部
４８０  ピーク値演算部  ４９０  レジスタファイル
４９８  セレクタ
【図１】
0004896839.tif 000002
【図２】
0004896839.tif 000003
【図３】
0004896839.tif 000004
【図４】
0004896839.tif 000005
【図５】
0004896839.tif 000006
【図６】
0004896839.tif 000007
【図７】
0004896839.tif 000008
【図８】
0004896839.tif 000009
【図９】
0004896839.tif 000010
【図１０】
0004896839.tif 000011
【図１１】
0004896839.tif 000012
【図１２】
0004896839.tif 000013
【図１３】
0004896839.tif 000014
【図１４】
0004896839.tif 000015
【図１５】
0004896839.tif 000016
【図１６】
0004896839.tif 000017
【図１７】
0004896839.tif 000018
【図１８】
0004896839.tif 000019
【図１９】
0004896839.tif 000020