(57)【要約】【課題】ＡＬＵモジュールを用いてアプリケーションに柔軟に対応した、リソース効率の高いプロセッサを提供する。【解決手段】複数のＡＬＵを有する複数のＡＬＵモジュール１０３間の接続構成を切り替えながら所定の演算処理を実行するプロセッサにおいて、複数の前記ＡＬＵモジュール１０３は、各種の演算処理を実行する複数のＡＬＵを備えた第１のＡＬＵモジュールと、第１のＡＬＵモジュールに比して実行可能な演算処理が限られた複数のＡＬＵを備えた第２のＡＬＵモジュールとを備える。【選択図】        図１
2006018411.tif 000002
【特許請求の範囲】
【請求項１】
複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成を切り替えながら所定の演算処理を実行するプロセッサにおいて、
複数の前記ＡＬＵモジュールは、各種の演算処理を実行する複数のＡＬＵを備えた第１のＡＬＵモジュールと、
前記第１のＡＬＵモジュールに比して実行可能な演算処理が限られた複数のＡＬＵを備えた第２のＡＬＵモジュールと、
を備えたことを特徴とするプロセッサ。
【請求項２】
入力された信号を比較し、比較の判定結果を出力するコンパレータからなる第３のＡＬＵモジュールを備えたことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
複数の前記ＡＬＵモジュール間の接続構成を切り替えて、前記複数のＡＬＵモジュールの新たな接続構成を設定するシーケンサを備え、
前記シーケンサは、前記コンパレータによる判定結果の出力を契機として、前記複数のＡＬＵモジュールの新たな接続構成を設定することを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記ＡＬＵは、入力される複数の信号と、当該複数の信号に対する演算処理結果の有効の有無を示すトークンビットの入力に基づいて、演算処理後の信号とともに演算処理結果の有効の有無を示す新たなトークンビットを生成することを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記シーケンサは、前記ＡＬＵに対して、演算処理の内容を設定するコンフィギュレーション情報を出力することを特徴とする請求項３に記載のプロセッサ。
【請求項６】
複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成をシーケンサの制御によって切り替えながら所定の演算処理を実行するプロセッサにおいて、
前記シーケンサは、前記ＡＬＵモジュールに設けられたメモリに対する書き込みの時期を契機として、複数の前記ＡＬＵモジュールの接続構成を再構成することを特徴とするプロセッサ。
【請求項７】
複数の前記ＡＬＵモジュールのうち一つは、入力された信号を比較し、比較の判定結果を出力するコンパレータであり、
前記シーケンサは、前記コンパレータの出力を契機として、当該コンパレータの判定結果に対応して複数の前記ＡＬＵモジュールの接続構成を再構成することを特徴とする請求項６に記載のプロセッサ。
【請求項８】
前記シーケンサは、複数の前記ＡＬＵモジュールの接続構成を予め設定した複数のコンフィギュレーション情報を格納するコンフィギュレーション情報格納手段と、
前記コンフィギュレーション情報格納手段に格納された複数の前記コンフィギュレーション情報のうち一つの前記コンフィギュレーション情報を読み出して、当該コンフィギュレーション情報に設定された複数の前記ＡＬＵモジュールの接続構成に基づき、前記複数のＡＬＵモジュールの接続構成を接続制御するコンフィギュレーション制御手段と、を備え、
複数の前記コンフィギュレーション情報には、それぞれ前記メモリに対する書き込みの時期、あるいは前記コンパレータが出力する判定結果に基づいて次回の再構成時に読み出す前記コンフィギュレーション情報を指定する指定情報が含まれていることを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記コンフィギュレーション情報に含まれている前記指定情報は、前記コンフィギュレーション情報格納手段に格納されている複数の前記コンフィギュレーション情報のうち一つを指定するためのアドレスであり、
前記コンフィギュレーション情報格納手段は、前記コンフィギュレーション情報をアドレスを付与して格納することを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記コンフィギュレーション制御手段は、前記指定情報および前記メモリに対する書き込みの契機に基づいて、次に読み出す前記コンフィギュレーション情報のアドレスをインクリメントする加算手段と、
前記コンパレータが出力する判定結果に基づいて、前記コンフィギュレーション制御手段が次に読み出す前記コンフィギュレーション情報のアドレスを判定するための判定手段と、
前記指定情報の指定により、前記加算手段により加算されたアドレス、あるいは前記判定手段により判定されたアドレスのいずれかを選択する選択手段と、
を備えたことを特徴とする請求項８に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサにかかり、特に、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）モジュールの再構成制御を行う再構成型のプロセッサに関する。
【背景技術】
【０００２】
従来、コンピュータの高効率化、高速化を行うためにハードウェアに着目したものとして、リコンフィギュアブル技術がある。リコンフィギュアブル技術は、アプリケーション（ソフトウェア・プログラム）に柔軟に対応するために、ハードウェアの一部を再構成可能としたものである。
【０００３】
このようなハードウェアの再構成技術としては、ＦＰＧＡ（Ｆｉｌｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いたものが開示されている（例えば、下記特許文献１参照。）。また、アプリケーションのパフォーマンスを測定し、測定結果に応じてモジュールを動的に再構成する技術が開示されている（例えば、下記特許文献２参照。）。
【０００４】
また、予め再構成可能部分の配置情報（コンフィギュレーション（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）情報）を作成し、コンフィギュレーション情報を格納したＲＯＭを複数用意し、実行する処理に合わせてコンフィギュレーション情報を読み出し、モジュールを再構成する方法が開示されている（例えば、下記特許文献３参照。）。
【０００５】
このようなリコンフィギュアブル技術を、コンフィギュレーション情報を含んだクラスタ構成によるハードウェア・アーキテクチャーに適用する場合は、クラスタの内部には再構成可変型のＡＬＵ（四則演算や論理演算等の演算処理を行う回路）モジュールを装備する必要がある。その場合、コンフィギュレーション情報も同じクラスタ内に配置され、ＡＬＵの処理結果に連動してシーケンシャルに読み出される。クラスタは、再構成可能なＡＬＵモジュールと、ネットワークと、メモリと、カウンタなどから構成されているＡＬＵブロックと、これらＡＬＵモジュールと、ネットワークと、メモリと、カウンタの構成定義を制御するシーケンサ（ＳＱＥ）から構成される。
【０００６】
【特許文献１】特表平７−５０３８０４号公報
【特許文献２】特開２００２−１６３１５０号公報
【特許文献３】特開平５−１０８３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、多様なアプリケーションを実行するためには、柔軟性の高い再構成可変型のＡＬＵモジュールを搭載しておく必要がある。回路的に柔軟性の高いＡＬＵモジュールを搭載すると、回路規模が大きくなるとともに、リソース効率が悪くなる。このＡＬＵモジュールとは、搭載機能が多い多機能ＡＬＵを指し、例えば、論理積、論理和、加減算、絶対値演算、ノーマライズ処理、乗算、ゼロ判定等の演算ゲートと、これらの演算ゲートの結果の累積和を行う累積和の演算回路等により構成されたものを指している。
【０００８】
また、クラスタ全体としての処理能力向上のためには、このＡＬＵブロックの再構成を簡便にかつ高速に行うことが可能なシーケンサの内部構成が求められている。すなわち、再構成に必要なコンフィギュレーション情報の制御を司るシーケンサの処理の効率化がクラスタの処理性能に影響を与える。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、ＡＬＵモジュールを用いてアプリケーションに柔軟に対応した、リソース効率の高いプロセッサを提供することを目的とする。また、シーケンサが行う再構成の契機の判定についても、次のコンフィギュレーション情報を容易に得ることができるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この発明にかかるプロセッサは、複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成を切り替えながら所定の演算処理を実行するプロセッサにおいて、複数の前記ＡＬＵモジュールは、各種の演算処理を実行する複数のＡＬＵを備えた第１のＡＬＵモジュールと、前記第１のＡＬＵモジュールに比して実行可能な演算処理が限られた複数のＡＬＵを備えた第２のＡＬＵモジュールと、を備えることを特徴とする。
【００１１】
この発明によれば、アプリケーションは、第１のＡＬＵモジュールだけではなく、実行可能な演算処理が限られた第２のＡＬＵモジュールを用いて実行することができる。第２のＡＬＵモジュールは、第１のＡＬＵモジュールに比して省面積化、省電力化、低コスト化でき、プロセッサ全体のリソース効率の向上を図ることができる。
【００１２】
また、この発明にかかるプロセッサは、複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成をシーケンサの制御によって切り替えながら所定の演算処理を実行するプロセッサにおいて、前記シーケンサは、前記ＡＬＵモジュールに設けられたメモリに対する書き込みの時期を契機として、複数の前記ＡＬＵモジュールの接続構成を再構成することを特徴とする。
【００１３】
この発明によれば、シーケンサは、メモリ書き込みの時期によって、ＡＬＵモジュールを再構成するのに最適な契機を得ることができる。
【発明の効果】
【００１４】
本発明にかかるプロセッサによれば、各種アプリケーションに柔軟に対応した、リソース効率を向上できるクラスタ構成を有することができる。これにより面積効率、省電力、コスト、動作速度の面で優れたハードウェアを提供できるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明にかかるプロセッサの好適な実施の形態を詳細に説明する。クラスタは、ＡＬＵブロックと、シーケンサ部の２つによって構成される。
【００１６】
（実施の形態１）
この発明の実施の形態１は、プロセッサを構成するＡＬＵブロックに関する。図１は、本発明にかかるプロセッサのクラスタの構成を示すブロック図である。クラスタ１００は、実際の処理を行うＡＬＵブロック１０１と、再構成のためのコンフィギュレーション情報を供給するシーケンサ部１０２とによって構成されている。図１には、一つのクラスタ１００だけを図示したが、実際にはＣＰＵバス１２０を介して複数のクラスタ１００が接続され、分散処理（同時並行処理）等が行われるようになっている。
【００１７】
ＡＬＵブロック１０１は、各種の演算素子によって構成された複数のＡＬＵモジュール１０３と、処理対象のデータの読み出しおよび処理結果のデータの格納を行う複数のメモリ１０４と、複数の各メモリ１０４に対するアドレスの生成を行う複数のカウンタ１０５と、入力された２つの信号の比較（条件判定）を行う一つのコンパレータ１０６と、ＲＩＳＣバス１２１に接続されるバスブリッジ１０７と、ネットワーク１０８と、によって構成されている。カウンタ１０５は、ＡＬＵモジュール１０３の演算結果に応じてメモリ１０４に対するアドレスを生成する場合もある。コンパレータ１０６は、シーケンサ部１０２に判定結果（Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ）を出力する。各メモリ１０４は、シーケンサ部１０２にＷｒｉｔｅ  Ａｃｋを出力する。
【００１８】
ネットワーク１０８には、複数の信号（Ｉｎｐｕｔ  Ａ〜ｎ）が入力され、ＡＬＵモジュール１０３等による演算結果が複数の信号（Ｏｕｔｐｕｔ  Ａ〜ｎ）として出力される。このネットワーク１０８は、各ＡＬＵモジュール１０３と、コンパレータ１０６と、メモリ１０４に対する信号の入力部にそれぞれ設けられたレジスタ１０９と、セレクタ１１０と、により構成されている。
【００１９】
そして、演算内容等に応じてシーケンサ部１０２が出力するコンフィギュレーション情報に基づいて、各ＡＬＵモジュール１０３の組み合わせ（選択）と、メモリ１０４と、コンパレータ１０６との間の接続形態が再構成可能である。この接続形態の変更は、ネットワーク１０８に設けられたセレクタ１１０によって切り替えられる。
【００２０】
ＡＬＵブロック１０１内に設けられる各ＡＬＵモジュール１０３は、高性能型ＡＬＵモジュールと、簡易型ＡＬＵモジュールからなる。例えば、ＡＬＵモジュール１０３に対して、入力データとして用いる１７ビットのバスのうち、１６ビットがデータビットであり、残りの１ビットが、その有効無効を示すビット（以下、「トークン・ビット（Ｔｏｋｅｎ・ｂｉｔ）」と称す）である。なお、ネットワーク１０８は、この１７ビットのバスを有してＡＬＵモジュール１０３，コンパレータ１０６，メモリ１０４の接続を切り替える。
【００２１】
（高性能型ＡＬＵモジュールについて）
まず、高性能型ＡＬＵモジュールの内部構成について説明する。図２は、高性能型ＡＬＵモジュールの内部構成を表す回路図である。高性能型ＡＬＵモジュール２００は、内部にＡＬＵ＿Ａ２０１と、ＡＬＵ＿Ｃ２０２と、ＡＬＵ＿Ｄ２０３の３種類のＡＬＵと、セレクタ２０４と、演算結果の累積を行うＡＣＣレジスタ（ＡＣＣ＿ｒｅｇ）２０５とを搭載している。ＡＬＵ＿Ａ２０１は、搭載機能が多い多機能ＡＬＵである。図示のように、高性能型ＡＬＵモジュール２００では、入力段に設けられた２つのＡＬＵ＿Ａ２０１，２０１に４系統（Ｉｎｐｕｔ＿００，＿０１，＿１０，＿１１）のデータが入力され、出力段に設けられたセレクタ２０６により２系統（Ｏｕｔｐｕｔ＿０，＿１）が出力される。
【００２２】
ＡＬＵ＿Ｃ２０２およびＡＬＵ＿Ｄ２０３を含む積和演算回路２１０は、ＡＬＵ＿Ａ２０１等での演算結果に対して、累積和をとるための回路であり、フーリエ変換等のメディア系処理に多様される積和演算などに適用できる。
【００２３】
次に、高性能型ＡＬＵモジュール内の各ＡＬＵの構成と処理について述べる。図３は、ＡＬＵ＿Ａの内部構成を表すブロック図である。ＡＬＵ＿Ａ２０１は、以下に記す演算ゲート３０１〜３０７と、入力されるコンフィギュレーション情報（Ｃｏｎｆｉｇ＿ｄａｔａ）に基づいて演算ゲートに対して演算内容の設定を行うコンフィグ・デコーダ（Ｃｏｎｆｉｇ  Ｄｅｃｏｄｅ）３０８と、により構成されている。
【００２４】
各演算ゲートは、入力される２つのデータ（Ｉｎｐｕｔ＿Ａ，＿Ｂ）に対する論理積演算を行うＡＮＤゲート３０１と、論理和演算を行うＯＲゲート３０２と、コンフィグ・デコーダ３０８の制御によって加算あるいは減算を行うＡＤＤ／ＳＵＢゲート３０３と、絶対値演算を行うＡＢＳゲート３０４と、ノーマライズ処理を行うプライマリ・エンコーダ（Ｐｒｉ＿Ｅｎｃｏｄｅｒ）３０５と、乗算を行うＭＵＬゲート３０６と、ゼロ判定を行うＺｅｒｏゲート３０７と、からなる。セレクタ（ＳＥＬ）３０９は、コンフィグ・デコーダ３０８の制御によってこれら各演算ゲート３０１〜３０６のうちいずれか一つの出力を選択する。このＡＬＵ＿Ａ２０１は、ＡＬＵ＿Ａ２０１に対して入力される２つのデータ（Ｉｎｐｕｔ＿Ａ，＿Ｂ）のうちいずれか一方のデータのみを入力したときには、このデータを入力透過させることができる。
【００２５】
図２に示したＡＬＵ＿Ｃ２０２は、入力される２つのデータを加算する加算用ＡＬＵである。ＡＬＵ＿Ｄ２０３は、入力される２つのデータに対して丸め処理、もしくは、入力透過処理を行うものである。丸め処理、もしくは、入力透過処理のうち、どちらの処理を行うかはコンフィギュレーション設定によって定めることができる。
【００２６】
なお、これらのＡＬＵ＿Ａ２０１と、ＡＬＵ＿Ｃ２０２とＡＬＵ＿Ｄ２０３は、それぞれ、入力データに対して行う演算を符号付で行うか否かを、コンフィギュレーション情報に基づいて設定することができる。この他、コンフィギュレーション情報により、飽和演算の適用を設定することも可能である。
【００２７】
（簡易型ＡＬＵモジュールについて）
次に、簡易型ＡＬＵモジュールについて説明する。簡易型ＡＬＵモジュールは、上記の高性能型ＡＬＵモジュール２００が有する多機能な機能を簡易化し、回路規模を縮小させたものである。図４は、簡易型ＡＬＵモジュールの内部構成を表す回路図である。
【００２８】
簡易型ＡＬＵモジュール４００は、高性能型ＡＬＵモジュール２００（図２参照）が備えた積和演算回路２１０を設けず、累積和の機能を有していない。この簡易型ＡＬＵモジュール４００は、ＡＬＵ＿Ａ２０１（図３参照）のうち、ＭＵＬゲート３０６の乗算機能をもたないＡＬＵ＿Ｂ４０１と、セレクタ４０２とによって構成されている。ＡＬＵ＿Ｂ４０１についても、符号付演算並びに飽和演算の指定をコンフィギュレーション情報に基づいて設定できる。図示のように、簡易型ＡＬＵモジュール４００では、入力段に設けられた２つのＡＬＵ＿Ｂ４０１，４０１に４系統（Ｉｎｐｕｔ＿００，＿０１，＿１０，＿１１）のデータが入力され、出力段に設けられたセレクタ４０２により２系統（Ｏｕｔｐｕｔ＿０，＿１）が出力される。
【００２９】
（コンパレータについて）
次に、図１に示したＡＬＵブロック１０１に設けられるコンパレータ１０６について説明する。図５は、コンパレータの内部構成を表す回路図である。コンパレータ１０６は、減算器（ＣＯＭＰ）５０１によって構成される。コンパレータ１０６は、条件判断のために専用に用意され、２つの入力（Ｉｎｐｕｔ＿Ａ，＿Ｂ）間の大小および等価を比較するものである。判定結果をシーケンサ部１０２（図１参照）に通知し、コンフィギュレーションを切り替える契機とすることができる。
【００３０】
コンパレータ１０６内の減算器５０１は、Ｕｎｄｅｒ−Ｆｌｏｗを示すＣａｒｒｙと、減算結果がゼロであること示すＺｅｒｏ＿ｆｌａｇを出力する。コンパレータ１０６が出力するＣａｒｒｙと、Ｚｅｒｏ＿ｆｌａｇは、シーケンサ部１０２に対する判定結果（Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ、図１参照）に相当する。減算器５０１における減算内容を入力（Ｉｎｐｕｔ＿Ａ，＿Ｂ）におけるＡ−Ｂとするか、あるいはＢ−Ａとするかをコンフィギュレーション情報に基づいて設定可能である。また、符号付演算指定も設定可能である。ＡＬＵブロック１０１内部に、１個のコンパレータ１０６を設けることにより、演算処理の実行により生じる判定結果の出力元が１個のコンパレータ１０６となる。そして判定結果の出力先であるシーケンサ部１０２では、一つのコンパレータ１０６の判定結果の入力だけに基づいて、簡単にＡＬＵブロック１０１の再構成を実行できるようになる。
【００３１】
（トークン・ビットについて）
ここで、トークン・ビット（Ｔｏｋｅｎ  ｂｉｔ）の生成について説明する。ＡＬＵモジュール２００，４００内部に設けられるＡＬＵ（２０１，２０２，２０３，４０１）とコンパレータ１０６は、それぞれに対する入力について有効無効を表示するトークン・ビットが付与されている。ＡＬＵは、入力されるデータに対して演算を行い、その演算結果を出力するが、演算結果についても有効無効を表示する必要がある。このため、ＡＬＵは、トークン・ビットを生成付与する。トークン・ビットの生成論理としては、以下１．〜３．のいずれかの方法をとる。
【００３２】
１．２つの入力の双方が有効トークンをもつ場合には、その演算結果に対して有効トークンを付与して出力する。
２．２つの入力のいずれかに有効トークンが付与されている場合には、その演算結果に対して有効トークンを付与して出力する。
３．上記１．または２．において監視する入力を２つの入力のいずれか一方に固定する。固定は、設計時に行い以後固定状態のままとするか、あるいは、コンフィギュレーション設定によって変更可能なように構成することもできる。このようにしてトークン・ビットが付与されたデータに基づいてメモリ１０４に対するデータの書き込みが制御される。
【００３３】
ところで、このトークン・ビットは、処理すべきデータがメモリ１０４に格納されている場合には、メモリ１０４に対してリード・アドレスを生成するカウンタ１０５がアドレス情報にトークン・ビットを付与する。メモリ１０４では、トークン・ビットが有効なアドレスのみを読み出しの対象とし、その読み出したデータに有効トークン・ビットを付与する。また、処理すべきデータが複数のクラスタ１００同士の間で渡す構成のときには、ある一つのクラスタ１００の外部の他のクラスタ１００から入力される場合に、他のクラスタ１００からトークン・ビットが付与されて入力される。
【００３４】
上記の各ＡＬＵモジュール（ＡＬＵ＿Ａ２０１，ＡＬＵ＿Ｂ４０１，ＡＬＵ＿Ｃ２０２，ＡＬＵ＿Ｄ２０３、減算器５０１）は、シーケンサ部１０２からのコンフィギュレーション情報に基づいて、その内部構造、機能の変更が可能である。このコンフィギュレーション情報として、各モジュールには符号付演算の指定、飽和演算の指定（データ飽和時のける演算停止の指定）、ＡＬＵ＿Ａ２０１，ＡＬＵ＿Ｂ４０１，ＡＬＵ＿Ｃ２０２，ＡＬＵ＿Ｄ２０３における演算処理の指定と、減算器５０１の場合は減算方向（Ａ−Ｂ、あるいはＢ−Ａ）の指定と、各セレクタ２０６，３０９，４０２における出力選択の指定が行える。
【００３５】
図１を用いて説明した実施の形態１にかかるＡＬＵブロック１０１内における構成は、例えば、ＡＬＵモジュール１０３が１０個、メモリ１０４が１０個、コンパレータ１０６が１個という割合で配置される。そして、合計１０個のＡＬＵモジュール１０３のうち、高性能型ＡＬＵモジュール２００が２個、簡易型ＡＬＵモジュール４００が８個という割合で配置される。コンパレータ１０６を最小の１個配置することにより、高性能型ＡＬＵモジュール２００の個数を削減して効率的な演算を行うことができるようになる。
【００３６】
特に、１個のコンパレータ１０６を設けることにより、コンパレータ１０６における判定結果をシーケンサ部１０２に通知してコンフィギュレーションを切り替える契機とすることができるようになる。シーケンサ部１０２は、各種アプリケーション（コンピュータ・プログラム）で多用されるループ処理（例えば、Ｃ言語におけるＩＦ文）のとき、コンパレータ１０６を用いた判定結果に応じて、ＡＬＵブロック１０１内部におけるＡＬＵモジュール１０３と、メモリ１０４と、コンパレータ１０６の接続構成を再構成（リコンフィグレーション）する。この際、ＡＬＵモジュール１０３は、例として挙げた１０個すべてが累積和の機能を有する高性能型ＡＬＵモジュール２００を用いずとも、大部分が簡易型ＡＬＵモジュール４００を用いて演算を実行することができる。これにより、高性能型ＡＬＵモジュール２００を用いずともアプリケーションに必要な演算に適応してＡＬＵ接続構成を変更させて効率的な演算処理を実行できるようになる。
【００３７】
以上説明した実施の形態１によれば、ＡＬＵブロック内部に高性能型ＡＬＵモジュールと簡易型ＡＬＵモジュールと、コンパレータを配置し、これらを組み合わせて再構成可能とした。これにより、各種アプリケーションに柔軟に対応でき、リソース効率を向上できるクラスタ構成を得ることができる。また、ＡＬＵモジュールの個数を高性能型ＡＬＵモジュールだけで構成したのではなく、一部の個数を簡易型ＡＬＵモジュールを用いて構成したことにより、演算処理の効率化を図りつつ、ＡＬＵブロックが占有する面積効率の向上、省電力化、低コスト化を図ることができる。また、演算処理速度自体を向上することができる。
【００３８】
（実施の形態２）
この発明の実施の形態２は、プロセッサを構成するシーケンサに関する。実施の形態１（図１参照）において説明したシーケンサ部１０２が実行するプロセッサの再構成を行うタイミング（契機）について説明する。図６−１は、シーケンサ部の構成を示すブロック図である。
【００３９】
シーケンサ部１０２は、コンフィギュレーション（ＡＬＵブロック１０１の構成）情報（Ｃｏｎｆｉｇｕｒａｔｉｏｎ＃０〜ｎ）を複数格納するコンフィギュレーション・メモリ６０１と、外部のＣＰＵ（不図示）からの起動制御を行うラウンチ（Ｌａｕｎｃｈ）レジスタ６０２と、クラスタとしての最初のコンフィギュレーション情報（Ｃｏｎｆｉｇｕｒａｔｉｏｎ＃０〜ｎのうちいずれか一つ）を指定するスタートアドレス生成器６０３と、次のコンフィギュレーション情報を状態によって決定し、コンフィギュレーション・メモリ６０１に格納されている該当するコンフィギュレーション情報の次のアドレス（Ｎｅｘｔ  Ａｄｄｒｅｓｓ）を指定するコンフィギュレーション・コントローラ６０４と、ＣＰＵとの間に設けられるバスブリッジ６０５により構成される。
【００４０】
コンフィギュレーション・メモリ６０１は、バスブリッジ６０５との間のＡポートと、スタートアドレス生成器６０３、およびコンフィギュレーション・コントローラ６０４との間のＢポートを備えている。スタートアドレス生成器６０３は、Ｂポートを介して読み込むスタートアドレスを指定する。Ｂポートからは、ＡＬＵブロック１０１、およびコンフィギュレーション・コントローラ６０４に対してハードウェア・コンフィギュレーションのためのコンフィギュレーション情報（後述するＡＬＵブロック・ハードウェア・コンフィギュレーション６１０）が出力される。コンフィギュレーション・コントローラ６０４は、コンフィギュレーション・メモリ６０１から読み出したアドレスを管理し、再構成時には、コンフィギュレーション・メモリ６０１のＢポートを介してコンフィギュレーション情報の次のアドレスを指定する。
【００４１】
スタートアドレス生成器６０３には、スタートアドレスと、ラウンチトリガが入力される。コンフィギュレーション・コントローラ６０４には、メモリ１０４からＷｒｉｔｅ  Ａｃｋが入力され、コンパレータ１０６からは判定結果（Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ(ＣａｒｒｙおよびＺｅｒｏ＿ｆｌａｇ））が入力される。コンフィギュレーション・コントローラ６０４は、ＣＰＵに対してインタラプト（Ｉｎｔｅｒｒｕｐｔ）を出力する。
【００４２】
ＡＬＵブロック１０１の機能を再構成する契機は２つある。１．一つの逐次処理が完了し、次の処理に移行する場合と、２．条件判定の判定結果に従い次の処理が変わる場合がある。この場合、条件判定の判定結果（真または偽）に応じた再構成を行う。
【００４３】
１．「一つの逐次処理が完了し、次の処理に移行する」時期を契機とする場合について説明する。ＡＬＵブロック１０１における処理は、処理対象データをメモリ１０４から読み出し、ＡＬＵブロック１０１における処理結果をメモリ１０４に格納するようになっている。この点を前提にすると、メモリ１０４に書き込んだ時点で一つの処理が完了することになり、この契機によってプロセッサの構成を変化させることになる。
【００４４】
２．「条件判定の判定結果に従い次の処理を変える」場合について説明する。この場合には、条件判定の判定結果に対応することになる。この判定は、上述したコンパレータ１０６によって行われる。コンパレータ１０６は、入力される２つの信号Ａ，Ｂを減算（Ａ−Ｂ、あるいはＢ−Ａ）する減算器５０１によって構成されている（図５参照）。このコンパレータ１０６による減算の結果（判定結果：Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ、図１参照）であるＣａｒｒｙと、Ｚｅｒｏ＿ｆｌａｇの２種の信号を用いてシーケンサ部１０２に通知する。
【００４５】
従って、シーケンサ部１０２が任意の構成定義を行った後、次の再構成を行う契機としては、次の２つのイベントを制御する。一つは、１．ＡＬＵブロック１０１のある構成時における最終処理データをメモリ１０４に書き込んだとき。また、２．コンパレータ１０６における条件判定の判定結果（Ｃａｒｒｙ、Ｚｅｒｏ＿ｆｌａｇ）に対応させる。
【００４６】
クラスタ１００の処理起動は、ラウンチレジスタ６０２によって行われる。外部のＣＰＵによって、ラウンチレジスタ６０２に最初のコンフィギュレーション情報（例えば、Ｃｏｎｆｉｇｕｒａｔｉｏｎ＃０）のスタートアドレス６０２ｂが指定される。ラウンチレジスタ６０２は、ラウンチビット６０２ａを設定する。これを契機として、コンフィギュレーション・メモリ６０１に格納されている最初のコンフィギュレーション情報がメモリ１０４に読み出される。この最初のコンフィギュレーション情報は、ＡＬＵブロック１０１に設定される。さらに、以下に説明するコンフィギュレーション情報内のオペレーションコードに従って、次のコンフィギュレーション（プロセッサの再構成）への移行条件が定義される。
【００４７】
なお、クラスタ１００の起動については、上記以外の他の方法もある。例えば、クラスタ１００の外部からスタートアドレスと開始イベント契機を受信する構成としても良い。この開始イベント契機を、ラウンチレジスタ６０２のラウンチビット６０２ａの設定と同様として用いることができる。
【００４８】
図６−２は、コンフィギュレーション情報の内容を示す図表である。コンフィギュレーション・メモリ６０１に格納されるコンフィギュレーション情報は、図６−２に記載したデータ列６０１ａ〜６０１ｈの各項目を有している。データ列６０１ａ〜６０１ｈの各項目について説明する。
【００４９】
オペレーションコード（Ｏｐｅｒａｔｉｏｎ）６０１ａの項目は、２ビットからなり、現在のコンフィギュレーションから次のコンフィギュレーションへの移行の状態を規定する。
【００５０】
ジャンプ・アドレス（ＪｕｍｐＡＤＲＳ＃０，１）６０１ｂ，６０１ｃの項目は、それぞれコンパレータ１０６による条件判定の判定結果に対応したジャンプ・アドレスである。現在のコンフィギュレーションの次にコンフィギュレーション・メモリ６０１から読み出すアドレスを指定するものであり、判定結果に基づく再構成時に使用される。ジャンプ・アドレス６０１ｂ，６０１ｃは、例えば一方のジャンプ・アドレス６０１ｂがコンパレータ１０６の真の結果に対応したアドレスを指定し、他方のジャンプ・アドレス６０１ｃは、コンパレータ１０６の偽に対応したアドレスを指定する。
【００５１】
ライトアドレス・マスク（ＷＡＭ：Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ  Ｍａｓｋ）６０１ｄの項目は、ＡＬＵブロック１０１からのメモリ書き込み（Ｗｒｔｉｅ）イベントに基づいて再構成を実行する場合に、ＡＬＵブロック１０１内部のどのメモリ１０４からのメモリ書き込みイベントを監視するかを指定するために用いる。
【００５２】
再構成用条件判定情報（Ｎｅｘｔ  Ｉｎｆｏ）６０１ｅの項目は、ＡＬＵブロック１０１に設けたコンパレータ１０６による条件判定の判定結果に基づいて再構成を実行する場合に、その判定結果に応じた動作を指定するために用いる。
【００５３】
ＡＬＵブロック・ハードウェア・コンフィギュレーション６１０の項目は、ＡＬＵモジュール１０３の構成を定義するＡＬＵモジュール６０１ｆの項目と、セレクタ１１０の接続構成を定義するセレクタ６０１ｇの項目と、カウンタ１０５の構成を定義カウンタ６０１ｈの項目によって構成されている。
【００５４】
以上説明したコンフィギュレーション情報のうち、ＡＬＵブロック・ハードウェア・コンフィギュレーション６１０以外の各項目（６０１ａ〜６０１ｅ）は、シーケンサ部１０２内のコンフィギュレーション・コントローラ６０４に送出され、次のコンフィギュレーション番地を決定するための情報として用いられる。
【００５５】
現在のコンフィギュレーションから次のコンフィギュレーションに移行する条件は、コンフィギュレーション情報の中のオペレーションコード６０１ａによって指定される。オペレーションコード６０１ａの設定による動作は、例えば下記１．〜４．のように定義される。
【００５６】
１．オペレーションコード＝００の場合
Ｎｏ  Ｏｐｅｒａｔｉｏｎ（ＮＯＰ）処理を行う。この場合、ＡＬＵブロック１０１側の状態変更などを行わず、また、イベント契機を待つことなく、次のクロックサイクルでコンフィギュレーション・メモリ６０１の次のコンフィギュレーション情報（Ｃｏｎｆｉｇｕｒａｔｉｏｎ＃０〜ｎ）の番地に移行し、読み出した新たなオペレーションコード６０１ａの設定内容に従う。
【００５７】
２．オペレーションコード＝０１の場合
この場合、逐次実行処理を行う。現在のコンフィギュレーション情報をＡＬＵブロック１０１側に転送した後、ＡＬＵブロック１０１に設けられたメモリ１０４への書き込み処理実施を契機として次のクロックサイクルで、次のコンフィギュレーション・メモリ６０１の番地に移行する。複数のメモリ１０４のＷｒｉｔｅ  Ａｃｋを契機とするかは、コンフィギュレーション情報として指定される。
【００５８】
３．オペレーションコード＝１０の場合
この場合、完了命令処理を行う。現在のコンフィギュレーション情報をＡＬＵブロック１０１側に転送し、その後、ＡＬＵブロック１０１のメモリ１０４への書き込み処理の実施を契機として、処理終了の割り込みをＣＰＵに報知する。これにより、クラスタ１００側での処理は一旦終了することになる。いずれのメモリ１０４のＷｒｉｔｅ  Ａｃｋを契機とするかは、コンフィギュレーション情報として指定される。アプリケーションの実行に必要な全体処理の一部をクラスタ１００を用いて行ったときに用いられる。
【００５９】
４．オペレーションコード＝１１の場合
この場合、条件分岐命令処理を行う。現在のコンフィギュレーション情報をＡＬＵブロック１０１側に転送し、その後ＡＬＵブロック１０１のコンパレータ１０６による条件判定の判定結果（Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ）の入力を待ち、この判定結果の入力を契機として判定結果毎の異なる分岐先に対応したコンフィギュレーション情報を選択し、再構成を実施する。
【００６０】
（コンフィギュレーション・コントローラの構成）
コンフィギュレーション・コントローラ６０４は、ＡＬＵブロック１０１におけるコンフィギュレーションの再構成処理を統括処理する。
【００６１】
図７は、コンフィギュレーション・コントローラの内部構成を表すブロック図である。コンフィギュレーション・コントローラ６０４は、オペレーションコード（図６−２参照）に従い、現在のコンフィギュレーション・メモリ６０１から読み出したアドレスの次に読み出すアドレスを選択する。このコンフィギュレーション・コントローラ６０４は、マスク部（Ｍａｓｋ）７０１と、加算部（Ａｄｄ）７０２と、セレクタ（ＳＥＬ）７０３と、判定レジスタ７０４により構成される。
【００６２】
マスク部７０１は、コンフィギュレーション情報の項目として含まれているライトアドレス・マスク（ＷＡＭ）の項目６０１ｄが示すマスク値が設定される。そして、ＡＬＵブロック１０１に設けられた複数のメモリ（メモリ＃０〜＃ｎとした）１０４から入力されるＷｒｉｔｅ  Ａｃｋのうち、ＷＡＭの項目６０１ｄに一致するメモリ１０４のＷｒｉｔｅ  Ａｃｋを受け入れて加算部（Ａｄｄ）７０２に出力する。
【００６３】
コンフィギュレーション情報に含まれるオペレーションコード（Ｏｐｅｒａｔｉｏｎ）６０１ａの項目の値は、加算部（Ａｄｄ）７０２とセレクタ７０３に出力される。加算部７０２は、オペレーションコード６０１ａの内容を参照し、加算可能な値「００，０１，１０」のときに、クロックサイクル毎に現在のアドレスをインクリメント（１を加算）し、セレクタ７０３に出力する。この加算部７０２は、スタートアドレス生成器６０３からスタートアドレスが入力されたときには、このスタートアドレスからの加算を開始する。また、オペレーションコード６０１ａが「１０」のときには、外部のＣＰＵに対してインタラプト（Ｉｎｔｅｒｒｕｐｔ）を出力する。
【００６４】
セレクタ７０３は、入力されたオペレーションコード６０１ａの値が「００，０１，１０」のときに、加算部７０２との間を接続するよう図示しないスイッチを切り替える。これにより、加算部７０２とセレクタ７０３との間をループする経路が設定され、加算部７０２によりインクリメントされたアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとして、コンフィギュレーション・メモリ６０１に対する読み出しアドレスを指示する。このセレクタ７０３は、入力されたオペレーションコード６０１ａの値が「１１」のときには、図示しないスイッチが判定レジスタ７０４側に切り替えられる。これにより、判定レジスタ７０４の判定結果が示すアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとして、コンフィギュレーション・メモリ６０１に対する読み出しアドレスを指示する。
【００６５】
判定レジスタ７０４には、コンフィギュレーション情報に含まれるＮｅｘｔ  Ｉｎｆｏ６０１ｅが示す複数のエントリー（Ｅｎｔｒｙ０〜３）が設定される。エントリー０〜３は、それぞれ２ビットの対比用ビットを有する。そして、コンパレータ１０６が出力する条件判定の判定結果（Ｃｏｍｐａｒｅ  Ｒｅｓｕｌｔ（１ビットのＣａｒｒｙと、１ビットのＺｅｒｏ＿ｆｌａｇ））が入力されると、判定レジスタ７０４に設定された対比用のエントリーの設定を２ビットの組み合わせでテーブル検索し、エントリー毎に設定されている次のアドレスのジャンプ先にジャンプする。次のアドレスのジャンプ先は、コンフィギュレーション情報に含まれるジャンプ・アドレス（ＪｕｍｐＡＤＲＳ＃０、またはＪｕｍｐＡＤＲＳ＃１、図６−２参照）である。判定レジスタ７０４の出力は、セレクタ７０３に入力されている。セレクタ７０３は、判定レジスタ７０４による判定結果をＮｅｘｔ  Ａｄｄｒｅｓｓとして出力する。
【００６６】
コンフィギュレーション・コントローラ６０４が実行する次のアドレス（Ｎｅｘｔ  Ａｄｄｒｅｓｓ）の指定は、オペレーションコードの値に従い下記の１．〜４．の４通りとなる。
【００６７】
１．オペレーションコード＝００の場合
オペレーションコード＝００が続く期間中は、現在のアドレス（あるいはスタートアドレス）に１を加算した値をＮｅｘｔ  Ａｄｄｒｅｓｓとする処理を継続する。
２．オペレーションコード＝０１の場合
この場合は、逐次実行であるため、ＷＡＭ６０１ｄによって指定されているメモリ１０４からＷｒｉｔｅ  Ａｃｋの返送が確認されたときを契機として、現状のアドレス（あるいはスタートアドレス）に１を加算した値をＮｅｘｔ  Ａｄｄｒｅｓｓとする。
３．オペレーションコード＝１０の場合
この場合には、ＷＡＭ６０１ｄによって指定されたメモリ１０４からＷｒｉｔｅ  Ａｃｋの返送が確認されたときを契機として、ＣＰＵに正常完了割り込み（Ｉｎｔｅｒｒｕｐｔ）を通知する。
４．オペレーションコード＝１１の場合
この場合には、コンパレータ１０６からの条件判定の判定結果を元に、判定レジスタ７０４を参照する。そして、判定レジスタ７０４の参照結果に従ってコンフィギュレーション情報として定義されたジャンプ・アドレス（ＪｕｍｐＡＤＲＳ＃０、またはＪｕｍｐＡＤＲＳ＃１のいずれか、図６−２参照）を、Ｎｅｘｔ  Ａｄｄｒｅｓｓとする。
【００６８】
次に判定レジスタ７０４を用いた判定内容の具体例について説明する。図８は、判定レジスタに設定される判定内容を示す図表である。コンパレータ１０６による減算がＡ，Ｂ２つの入力を用いてＡ−Ｂの減算を行うとする。このとき、コンパレータ１０６が出力するＣｏｍｐａｒｅ  Ｒｅｓｕｌｔ（Ｃａｒｒｙの値，およびＺｅｒｏ＿ｆｌａｇの値）は、Ａ＞Ｂのときには０，０となり、Ａ＝Ｂのときには０，１となり、Ａ＜Ｂのときには１，０となる。それ以外（異常出力）として１，１がある。
【００６９】
また、Ｎｅｘｔ  Ｉｎｆｏ６０１ｅが示す合計複数のエントリー（Ｅｎｔｒｙ０〜３）については、例えばある一つのエントリー８０１は、Ａ＞Ｂが真であり、それ以外を偽であると設定したとする。この場合、コンパレータ１０６が出力するＣｏｍｐａｒｅ  Ｒｅｓｕｌｔ（Ｃａｒｒｙの値，およびＺｅｒｏ＿ｆｌａｇの値）は、Ａ＞Ｂのときには０，０となり、真（Ｅｎｔｒｙ＝００、図７参照）であるとして、ＪｕｍｐＡＤＲＳ＃０（６０１ｂ）に設定されたアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとする。また、Ａ＝Ｂ（０，１）のとき、および、Ａ＜Ｂ（１，０）のときには、偽（Ｅｎｔｒｙ＝０１）であるとしてＪｕｍｐＡＤＲＳ＃１（６０１ｃ）に設定されたアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとする。なお、それ以外、すなわち、コンパレータ１０６の判定結果として論理的にあり得ない出力や異常を示す状態として、Ｅｎｔｒｙ＝１，ｘ（１，０および１，１）がある。Ｃａｒｒｙの値，およびＺｅｒｏ＿ｆｌａｇの値がいずれも１，１のときには、Ｅｎｔｒｙ＝１，０となり、Ｉｎｔｅｒｒｕｐｔを出力することができる。
【００７０】
同様に、他のエントリー８０２は、Ａ＝Ｂのみが真であり、それ以外を偽であると設定したとする。この場合、コンパレータ１０６が出力するＣｏｍｐａｒｅ  Ｒｅｓｕｌｔ（Ｃａｒｒｙの値，およびＺｅｒｏ＿ｆｌａｇの値）は、Ａ＝Ｂのときのみ０，０となり、真（Ｅｎｔｒｙ＝００、図７参照）であるとして、ＪｕｍｐＡＤＲＳ＃０（６０１ｂ）に設定されたアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとする。また、Ａ＞Ｂ（０，１）のときには、偽（Ｅｎｔｒｙ＝０１）であるとしてＪｕｍｐＡＤＲＳ＃１（６０１ｃ）に設定されたアドレスをＮｅｘｔ  Ａｄｄｒｅｓｓとする。なお、Ａ＜Ｂ（１，１）や、論理的にあり得ないコンパレータ１０６の出力時（Ｅｎｔｒｙ＝１，０）であっても、Ｉｎｔｅｒｒｕｐｔを出力し、外部に報知することができる。
【００７１】
このように、判定レジスタ７０４は、ルックアップテーブル（ＬＵＴ）の機能を有しており、オペレーションコードが１１の場合には、判定レジスタ７０４を参照し、コンパレータ１０６の判定結果に対応した次のアドレス（Ｎｅｘｔ  Ａｄｄｒｅｓｓ）を簡単に得ることができるようになる。
【００７２】
以上説明した実施の形態２によれば、現在のコンフィギュレーションの状態から次のコンフィギュレーションへの移行を適切に実行できるようになる。特に、再構成するＡＬＵブロックのハードウェアの切り替え契機を高速、かつ簡易に検出できるため、処理性能の向上を図ることができるようになる。また、コンパレータを用いた条件判断の判断結果に従ってハードウェア構造を切り替えることが可能となるため、複数のＡＬＵモジュールがそれぞれ条件判断を実行する必要がなく、ハードウェアの面積効率を向上でき、省スペース、省電力化を図ることができるようになる。
【００７３】
（付記１）複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成を切り替えながら所定の演算処理を実行するプロセッサにおいて、
複数の前記ＡＬＵモジュールは、各種の演算処理を実行する複数のＡＬＵを備えた第１のＡＬＵモジュールと、
前記第１のＡＬＵモジュールに比して実行可能な演算処理が限られた複数のＡＬＵを備えた第２のＡＬＵモジュールと、
を備えたことを特徴とするプロセッサ。
【００７４】
（付記２）入力された信号を比較し、比較の判定結果を出力するコンパレータからなる第３のＡＬＵモジュールを備えたことを特徴とする付記１に記載のプロセッサ。
【００７５】
（付記３）複数の前記ＡＬＵモジュール間の接続構成を切り替えて、前記複数のＡＬＵモジュールの新たな接続構成を設定するシーケンサを備え、
前記シーケンサは、前記コンパレータによる判定結果の出力を契機として、前記複数のＡＬＵモジュールの新たな接続構成を設定することを特徴とする付記２に記載のプロセッサ。
【００７６】
（付記４）前記ＡＬＵは、入力される複数の信号と、当該複数の信号に対する演算処理結果の有効の有無を示すトークンビットの入力に基づいて、演算処理後の信号とともに演算処理結果の有効の有無を示す新たなトークンビットを生成することを特徴とする付記１に記載のプロセッサ。
【００７７】
（付記５）前記シーケンサは、前記ＡＬＵに対して、演算処理の内容を設定するコンフィギュレーション情報を出力することを特徴とする付記３に記載のプロセッサ。
【００７８】
（付記６）前記第１のＡＬＵモジュールは、前記ＡＬＵのうち少なくとも累積和の演算処理を実行する複数のＡＬＵを備えたことを特徴とする付記１に記載のプロセッサ。
【００７９】
（付記７）前記ＡＬＵは、論理積と、論理和と、加算と、減算と、絶対値演算と、ノーマライズ処理と、乗算と、ゼロ判定と、を行う各演算ゲート回路と、
前記各演算ゲート回路のうちいずれか一つの出力を選択するセレクタ回路と、
を備えたことを特徴とする付記６に記載のプロセッサ。
【００８０】
（付記８）前記第２のＡＬＵモジュールの演算ゲート回路は、累積和の演算処理および乗算の機能を備えていないことを特徴とする付記１に記載のプロセッサ。
【００８１】
（付記９）複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）を有する複数のＡＬＵモジュール間の接続構成をシーケンサの制御によって切り替えながら所定の演算処理を実行するプロセッサにおいて、
前記シーケンサは、前記ＡＬＵモジュールに設けられたメモリに対する書き込みの時期を契機として、複数の前記ＡＬＵモジュールの接続構成を再構成することを特徴とするプロセッサ。
【００８２】
（付記１０）複数の前記ＡＬＵモジュールのうち一つは、入力された信号を比較し、比較の判定結果を出力するコンパレータであり、
前記シーケンサは、前記コンパレータの出力を契機として、当該コンパレータの判定結果に対応して複数の前記ＡＬＵモジュールの接続構成を再構成することを特徴とする付記９に記載のプロセッサ。
【００８３】
（付記１１）前記シーケンサは、複数の前記ＡＬＵモジュールの接続構成を予め設定した複数のコンフィギュレーション情報を格納するコンフィギュレーション情報格納手段と、
前記コンフィギュレーション情報格納手段に格納された複数の前記コンフィギュレーション情報のうち一つの前記コンフィギュレーション情報を読み出して、当該コンフィギュレーション情報に設定された複数の前記ＡＬＵモジュールの接続構成に基づき、前記複数のＡＬＵモジュールの接続構成を接続制御するコンフィギュレーション制御手段と、を備え、
複数の前記コンフィギュレーション情報には、それぞれ前記メモリに対する書き込みの時期、あるいは前記コンパレータが出力する判定結果に基づいて次回の再構成時に読み出す前記コンフィギュレーション情報を指定する指定情報が含まれていることを特徴とする付記１０に記載のプロセッサ。
【００８４】
（付記１２）前記コンフィギュレーション情報に含まれている前記指定情報は、前記コンフィギュレーション情報格納手段に格納されている複数の前記コンフィギュレーション情報のうち一つを指定するためのアドレスであり、
前記コンフィギュレーション情報格納手段は、前記コンフィギュレーション情報にアドレスを付与して格納することを特徴とする付記１１に記載のプロセッサ。
【００８５】
（付記１３）前記コンフィギュレーション制御手段は、前記指定情報および前記メモリに対する書き込みの契機に基づいて、次に読み出す前記コンフィギュレーション情報のアドレスをインクリメントする加算手段と、
前記コンパレータが出力する判定結果に基づいて、前記コンフィギュレーション制御手段が次に読み出す前記コンフィギュレーション情報のアドレスを判定するための判定手段と、
前記指定情報の指定により、前記加算手段により加算されたアドレス、あるいは前記判定手段により判定されたアドレスのいずれかを選択する選択手段と、
を備えたことを特徴とする付記１１に記載のプロセッサ。
【００８６】
（付記１４）前記ＡＬＵモジュールは、前記メモリを複数備え、
前記コンフィギュレーション制御手段は、前記指定情報の指定により新たに読み出した前記コンフィギュレーション情報に基づいて複数備えられたうちの一つのメモリを選択し、当該一つのメモリへの書き込みの契機を判断し、前記加算手段でのアドレスのインクリメントを実行させるメモリマスク手段を備えたことを特徴とする付記１３に記載のプロセッサ。
【００８７】
（付記１５）前記コンフィギュレーション情報は、複数備えられたうち一つのメモリを選択するためのメモリ選択情報を含み、
前記メモリマスク手段は、前記コンフィギュレーション情報に含まれる前記メモリ選択情報に基づいて、当該選択されたメモリに対する書き込みを新たな再構成の契機と判断することを特徴とする付記１４に記載のプロセッサ。
【００８８】
（付記１６）前記判定手段は、前記コンパレータが出力する複数の判定結果にそれぞれ対応して、前記コンフィギュレーション制御手段が次に読み出す前記コンフィギュレーション情報を示す判定情報を有することを特徴とする付記１３に記載のプロセッサ。
【００８９】
（付記１７）前記判定手段は、前記コンフィギュレーション情報に含まれる条件判定用情報を読み出し、前記判定情報としてテーブル形式で設定することを特徴とする付記１６に記載のプロセッサ。
【産業上の利用可能性】
【００９０】
以上のように、本発明にかかるプロセッサは、ハードウェアの構成を切り替える再構成型のプロセッサに有用であり、特に、コンピュータの高効率化、高速化を行うためにＡＬＵブロックの組み合わせを切り替えて用いるクラスタの再構成に適している。
【図面の簡単な説明】
【００９１】
【図１】本発明にかかるプロセッサのクラスタの構成を示すブロック図である。
【図２】高性能型ＡＬＵモジュールの内部構成を表す回路図である。
【図３】ＡＬＵ＿Ａの内部構成を表すブロック図である。
【図４】簡易型ＡＬＵモジュールの内部構成を表す回路図である。
【図５】コンパレータの内部構成を表す回路図である。
【図６−１】シーケンサ部の構成を示すブロック図である。
【図６−２】コンフィギュレーション情報の内容を示す図表である。
【図７】コンフィギュレーション・コントローラの内部構成を表すブロック図である。
【図８】判定レジスタに設定される判定内容を示す図表である。
【符号の説明】
【００９２】
１００  クラスタ
１０１  ＡＬＵブロック
１０２  シーケンサ部
１０３  ＡＬＵモジュール
１０４  メモリ
１０５  カウンタ
１０６  コンパレータ
１０８  ネットワーク
２００  高性能型ＡＬＵモジュール
２０１  ＡＬＵ＿Ａ
２０２  ＡＬＵ＿Ｃ
２０３  ＡＬＵ＿Ｄ
４００  簡易型ＡＬＵモジュール
４０１  ＡＬＵ＿Ｂ
６０１  コンフィギュレーション・メモリ
６０２  ラウンチレジスタ
６０３  スタートアドレス生成器
６０４  コンフィギュレーション・コントローラ
６０５  バスブリッジ
【図１】
2006018411.tif 000003
【図２】
2006018411.tif 000004
【図３】
2006018411.tif 000005
【図４】
2006018411.tif 000006
【図５】
2006018411.tif 000007
【図６−１】
2006018411.tif 000008
【図６−２】
2006018411.tif 000009
【図７】
2006018411.tif 000010
【図８】
2006018411.tif 000011