(57)【要約】【課題】各プロセッサにおけるプログラムの保持に要するメモリ容量の増加を抑制しながらも、１つのチップ内に設けた複数のプロセッサにより多様かつ異なる処理を並列して実行できるようにする。【解決手段】１つのチップ内に設けた複数のプロセッサのそれぞれにて、入力される命令コードにより実行する命令を、割り当てられている複数の命令の中から、命令コードの入力履歴に基づいてデコード回路により一意に決定するようにして、１つの命令コードを複数の命令に対応させ短い命令コード長ですべての命令を表現することができるようにするとともに、同じ命令コードであっても、命令コードの入力履歴に応じて異なる命令を実行することができるようにする。【選択図】  図２
2004252556.tif 000002
【特許請求の範囲】
【請求項１】
１つのチップに複数のプロセッサを有する情報処理装置であって、
上記複数のプロセッサは、それぞれが独立して命令実行可能であり、
上記プロセッサは、命令コードの入力履歴に基づいて、命令コードに割り当てられている複数の命令の中から、入力される命令コードにより実行する命令を一意に決定するデコーダ回路をそれぞれ有することを特徴とする情報処理装置。
【請求項２】
上記デコーダ回路は、上記命令コードの入力履歴に応じた所定の情報を保持し、当該情報及び入力される命令コードに基づいて、上記実行する命令を一意に決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
任意の上記命令コードを割り当て可能な命令を有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
上記命令コードの入力履歴にかかわらず、入力される命令コードにより決定される命令を有することを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
１つのチップにそれぞれが独立して命令実行可能な複数のプロセッサを有する情報処理装置であって、
上記プロセッサにて実行可能な命令は、複数の命令群に分類されるとともに、同一の命令群内では互いに異なるように命令コードが各命令に付与され、
上記プロセッサは、命令コードの入力履歴に基づいて入力される命令コードに対する命令群を選択して、入力される命令コードにより実行する命令を一意にそれぞれ決定することを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に関し、特に、１つのチップに並列動作可能な複数のプロセッサを有する情報処理装置に用いて好適なものである。
【０００２】
【従来の技術】
並列計算機の１つとして、単一命令多重データ（ＳＩＭＤ：Ｓｉｍｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列プロセッサがある。ＳＩＭＤ型並列プロセッサは、１つのチップ内に複数のプロセッサを有し、供給される命令に応じた１つの処理を当該複数のプロセッサにより同時に並列実行する。
【０００３】
【発明が解決しようとする課題】
ＳＩＭＤ型並列プロセッサを構成する各プロセッサは、演算器とメモリとで構成される。ＳＩＭＤ型プロセッサは、供給される命令に応じた１つの処理をすべてのプロセッサにより並列実行させることから、各プロセッサのメモリにはデータのみが保持されている。
【０００４】
したがって、ＳＩＭＤ型プロセッサは、複数のプロセッサを有していながらも、各プロセッサにて異なる処理を並列して実行することができなかった。例えば、データのマッチング等を行う際に、一部のプロセッサに検索処理を行わせ、それに並行して他のプロセッサに詳細な比較処理を行わせることはできなかった。
【０００５】
ここで、複数のプロセッサにより異なる処理を並列して実行させるには、各プロセッサのメモリにプログラム（命令）をそれぞれ保持させておく必要がある。しかしながら、近年の汎用プロセッサに用いられる命令セットは、１命令が３２ビット或いは６４ビットで構成されており、汎用プロセッサと同様の処理を実行可能なプログラムを各プロセッサのメモリに保持させるには大きな記憶容量を要する。一方、１つのチップ内に多くのプロセッサを設けるためには、各プロセッサのメモリの容量は小さい方が望ましい。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、各プロセッサにおけるプログラムの保持に要するメモリ容量の増加を抑制しながらも、１つのチップ内に設けた複数のプロセッサにより多様かつ異なる処理を並列して実行できるようにすることを目的とする。
【０００７】
【課題を解決するための手段】
本発明の情報処理装置は、１つのチップに複数のプロセッサを有する情報処理装置であって、上記複数のプロセッサは、それぞれが独立して命令実行可能であり、上記プロセッサは、命令コードの入力履歴に基づいて、命令コードに割り当てられている複数の命令の中から、入力される命令コードにより実行する命令を一意に決定するデコーダ回路をそれぞれ有することを特徴とする。
【０００８】
本発明によれば、１つの命令コードが複数の命令に対応しているので、複数の命令に互いに異なる命令コードを対応させるよりも命令コード長を短くすることができ、同じ命令コードであっても異なる処理を行うことができるようになる。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、本発明の実施形態による情報処理装置を適用した並列プロセッサ１０の構成を示すブロック図である。
【００１０】
並列プロセッサ１０は、１つのチップ内にプロセッサ１１を複数接続して構成される。各プロセッサ１１は、メモリ１２、命令デコーダ部１３及び複数の演算器（プロセッサエレメント：ＰＥ）１４を有しており、プロセッサ毎に独立して命令を実行することができる。
メモリ１２は、プログラム（命令）を記憶するためのプログラムメモリ（命令記憶領域）と、データを記憶するためのデータメモリ（データ記憶領域）とを含み構成される。
【００１１】
命令デコーダ部１３は、メモリ１２のプログラムメモリから命令を読み出してデコードする。また、命令デコーダ部１３は、デコード結果に基づいて、後述する内部レジスタや演算器１４の制御を行う。なお、命令デコーダ部１３の詳細については後述する。
演算器１４は、従来公知のＳＩＭＤ型演算器であり、命令デコーダ部１３から供給される制御信号に応じた演算を実行する。
【００１２】
なお、図１においては、８個の演算器１４をそれぞれ有するプロセッサ１１を一例として示しているが、各プロセッサ１１が有する演算器１４の数は任意であり、例えば１つであっても良い。
【００１３】
図２は、図１に示した各プロセッサ１１での処理動作の概念を説明するための図である。以下の説明では、１つの命令コードは８ビットで構成され、後述するグループコードは３ビットで構成されているものとする。
【００１４】
図２において、２１は命令キューであり、命令コードを複数保持可能なように複数の命令メモリで構成される。命令メモリは、８ビットの記憶領域をそれぞれ有する。
【００１５】
命令デコーダ部１３は、グループレジスタ２２と命令デコーダ回路２３とを有する。グループレジスタ２２は、グループコードを記憶するレジスタであり、３ビットの記憶領域を有する。命令デコーダ回路２３は、グループコードを参照して命令コードをデコードし、デコード結果に応じた制御処理を行う。２４−ｉ（ｉは添え字であり、ｉ＝１〜ｎ（ｎは任意の自然数））は、図１に示した演算器１４に相当する演算器である。
【００１６】
ここで、グループコードは、プロセッサ１１にて実行可能な処理に係る入力命令を所定の規則に従って分類したグループを指定するものである。グループコードは、グループ毎に互いに異なる値である。
【００１７】
入力命令は、例えばシフト演算、ビット演算を含む加減乗除等の四則演算命令、データマッチング等に用いられるＷＴＡ演算命令、バースト演算命令、レジスタ操作命令、メモリ制御命令、フロー制御命令、スカラー命令等に分類してグループ化される。各入力命令の命令コードは、グループ内にて互いに異なっていれば良く、グループが異なる場合には同一の命令コードが存在しても良い。つまり、１つの命令コードによりグループが互いに異なる複数の命令を表現することができる。
【００１８】
また、入力命令には、何れのグループにも属しない（グループに依存しない）グローバル命令がある。グローバル命令は、例えば、グループコードを変更するためのグループ変更命令、直後の１命令だけグループコードを変更するためのグループ一時変更命令、予め割り当てた任意の命令を実行するためのエイリアス実行命令等がある。
【００１９】
次に、動作について説明する。
命令デコーダ回路２３は、命令キュー２１の命令メモリから１バイト（８ビット）ずつ命令コードＩＣＤを読み出す。命令デコーダ回路２３は、読み出した命令コードＩＣＤにグループレジスタ２２より供給されるグループコードＧＲを付加してデコードする。つまり、命令デコード回路２３は、３ビットのグループコードＧＲ及び８ビットの命令コードからなる１１ビットのコード（以下、「内部命令コード」とも称す。）をデコードする。
【００２０】
デコードの結果、通常の命令、例えば四則演算命令等である場合には、命令デコーダ回路２３は、当該命令に応じて制御信号ＩＮＳを各演算器２４−ｉに供給する。また、デコードの結果、グループコードの変更に係る命令、例えばグループ（一時）変更命令等である場合には、命令デコーダ回路２３は、当該命令により指定される変更後のグループコードＧＲＳをグループレジスタ２２に書き込む。
【００２１】
図３は、命令デコーダ部１３の構成例を示すブロック図である。
図３において、３１は命令コードを保持する命令メモリ、３２は命令デコーダ部１３による制御に応じて各種演算処理を行う演算器である。
命令デコーダ部１３は、命令ビット連結部３３、エイリアス命令デコーダ３４、エイリアス命令レジスタ３５−ｊ（ｊは添え字であり、ｊは任意の自然数）、第１のセレクタ３６、グループ変更命令デコーダ３７、通常命令デコーダ３８、エイリアス変更命令デコーダ３９、複数サイクル命令ステートレジスタ４０、グループレジスタ４１、第２のセレクタ４２、グループ一時記憶レジスタ４３を含み構成される。
【００２２】
命令ビット連結部３３は、命令メモリ３１から命令コードを１バイトずつ読み出す。また、命令ビット連結部３３は、過去に入力された命令コードに基づいて設定され、グループ一時記憶レジスタ４３に保持されているグループコードを、命令メモリ３１から読み出した命令コードに連結し（付加し）内部命令コードとして出力する。
【００２３】
エイリアス命令デコーダ３４は、命令ビット連結部３３より供給される内部命令コードが、当該内部命令コードをエイリアス命令のコードに置き換えるエイリアス実行命令であるか否かを判断する。判断の結果、エイリアス実行命令である場合には、エイリアス命令デコーダ３４は、内部命令コードのグループコードに対応するエイリアス命令レジスタ３５−ｊからエイリアス命令（置き換える内部命令コード）を読み出して出力する。
【００２４】
エイリアス命令レジスタ３５−ｊは、グループ毎に設けられており、エイリアス命令として割り当てた他グループの命令の内部命令コードがそれぞれ記憶されている。なお、エイリアス命令レジスタ３５−ｊについては、図３に示した例に限らず、例えばすべてのグループでエイリアス命令を共通にするように構成しても良いし、各グループに複数個のエイリアス命令を有するように構成しても良い。
【００２５】
第１のセレクタ３６は、命令ビット連結部３３より供給される内部命令コード、又はエイリアス命令デコーダ３４より供給される内部命令コードを選択的に出力する。
【００２６】
グループ変更命令デコーダ３７は、第１のセレクタ３６より供給される内部命令コードがグループ変更命令又はグループ一時変更命令のものであるときには、グループコードを新たなグループコードに変更する。なお、グループ変更命令デコーダ３７は、グループ（一時）変更命令に加え、第１のセレクタ３６より供給される内部命令コードが予め設定されたグループコードの変更ルールを満足するときには、グループコードを新たなグループコードに変更するようにしても良い。グループコードの変更ルールは、グループ変更命令デコーダ３７内に内部命令コードと変更するグループコードとを関連付けるルックアップテーブル（ＬＵＴ）４４等を設け、設定すれば良い。
【００２７】
グループ変更命令デコーダ３７は、グループ変更命令又は変更ルールに基づいてグループコードを変更する場合には、新たなグループコードの値をグループレジスタ４１に書き込む。これにより、グループレジスタ４１にて保持している値が新たなグループコードの値に置き換えられる。さらに、グループレジスタ４１が保持している値は、グループ一時記憶レジスタ４３に第２のセレクタ４２を介して供給され、グループ一時記憶レジスタ４３にて保持される。
【００２８】
一方、グループ一時変更命令に基づいて、直後の命令のみグループコードを変更する場合には、グループ変更命令デコーダ３７は、変更するグループコードの値を第２のセレクタ４２を介してグループ一時記憶レジスタ４３に供給する。これにより、グループ一時記憶レジスタ４３にて保持している値が新たなグループコードの値に置き換えられる。この場合には、グループ変更命令デコーダ３７は、グループレジスタ４１への書き込みは行わない。
【００２９】
通常命令デコーダ３８は、第１のセレクタ３６より供給される内部命令コードが通常命令（四則演算命令等）のものである場合には、通常のプロセッサと同様にして内部命令コードをデコードし、デコード結果に応じた制御信号を演算器３２に出力する。
【００３０】
エイリアス変更命令デコーダ３９は、第１のセレクタ３６より供給される内部命令コードがエイリアス変更命令のものであるときに、エイリアス命令レジスタ３５−ｊの値を書き換える。具体的には、エイリアス変更命令デコーダ３９は、内部命令コードに示される変更先のグループコードに対応するエイリアス命令レジスタ３５−ｊの値を、内部命令コードに従い置き換える命令の内部命令コード（グループコード及び命令コード）に書き換える。
【００３１】
複数サイクル命令ステートレジスタ４０は、エイリアス実行命令により置き換えられたエイリアス命令等が２バイト長以上の命令であるときに、最初の１バイトのみエイリアス命令に置き換え、２バイト目以降はエイリアス命令を無視するように第１のセレクタ３６を制御する。
【００３２】
すなわち、複数サイクル命令ステートレジスタ４０は、最初の１バイトのみエイリアス命令デコーダ３４からの内部命令コードを選択し、２バイト目以降は命令ビット連結部３３からの内部命令コードを選択するように第１のセレクタ３６を制御する。これは、エイリアス命令等が２バイト長以上の命令であるときに、最初の１バイトが命令そのものを示し、２バイト目以降はデータ等であるからである。ここで、グループ変更命令デコーダ３７、通常命令デコーダ３８、エイリアス変更命令デコーダ３９及び複数サイクル命令ステートレジスタ４０は、互いに通信を行って動作している。
【００３３】
第２のセレクタ４２は、クループ変更命令デコーダ３７からの制御に応じて、グループレジスタ４１が保持しているグループコードの値、又はクループ変更命令デコーダ３７より供給されるグループコードの値を選択的にグループ一時記憶レジスタ４３に供給する。具体的には、第２のセレクタ４２は、グループ一時変更命令に従いグループコードを変更する場合のみ、クループ変更命令デコーダ３７からの値を選択して出力し、そうでない場合には、グループレジスタ４１からの値を選択して出力する。
なお、図３に示した命令デコーダ部１３は、プログラムカウンタ、レジスタ、条件分岐等のフロー制御回路等を含んでいないが、これらを適宜備えるようにしても良い。
【００３４】
図４は、グループコードの変更ルールを設定するＬＵＴ４４の一例を示す図である。
図４に示すようにグループコードの変更ルールは、命令マスクＩＭｋ（ｋは添え字であり、任意の自然数、以下についても同様。）と命令コードＩＣｋと変更後のグループコードＧＣｋとを１組として設定する。なお、命令マスクＩＭｋ及び命令コードＩＣｋは、グループコード（３ビット）と命令コード（８ビット）とに対応する１１ビットで設定し、グループコードＧＣｋは、グループコード（３ビット）のみを設定する。
【００３５】
命令マスクＩＭｋは、入力される入力命令（内部命令コード）にてマスクするビットを設定する。命令マスクＩＭｋは、マスクするビットには“０”を設定し、そうでないビットには“１”を設定する。
【００３６】
命令コードＩＣｋは、入力命令と比較する内部命令コードを設定する。命令コードＩＣｋは、命令マスクＩＭｋによりマスクされるビットには“０”を設定し、そうでないビットには所望の値を設定する。グループコードＧＣｋは、命令マスクＩＭｋと命令コードＩＣｋとで設定される条件に一致した場合に、新たに設定する変更後のグループコードを設定する。
【００３７】
例えば、図４に示したように命令マスクＩＭ１、命令コードＩＣ１、グループコードＧＣ１に、値“１１１１０００００００”、“１０１１０００００００”、“１０１”がそれぞれ設定されているとき、命令マスクＩＭ１の上位側４ビットが“１”である。したがって、入力命令の上位側４ビットの値と命令コードＩＣ１の上位側４ビットの値とを比較し、一致した場合にはグループコードを“１０１”に変更する。つまり、入力命令の上位側４ビットの値が“１０１１”の場合には、グループコードを“１０１”に変更する。
【００３８】
同様に、例えば命令マスクＩＭ２、命令コードＩＣ２、グループコードＧＣ２に、値“１１１１１００００００”、“１１０１１００００００”、“１１０”がそれぞれ設定されている場合には、入力命令の上位側５ビットの値が“１１０１１”のときグループコードを“１１０”に変更する。
【００３９】
なお、図４に示したＬＵＴ４４は一例であり、これに限定されるものではない。例えば、命令マスクと命令コードとの複数の組と１つの変更後のグループコードとを１組として設定し、以前の入力命令を含む複数の入力命令に基づいて、グループコードを変更するようなＬＵＴであっても良い。
【００４０】
図５は、入力命令（内部命令コード）が図４に示したグループコードの変更ルールを満足するか否かを判定するためのグループ変更判定回路の一例を示す図であり、当該判定回路は例えばグループ変更命令デコーダ３７に設けられる。
【００４１】
図５に示すように、判定回路では、入力命令における１つのビットＩＮｍ（ｍは添え字であり、ｍは０〜１０の整数、以下についても同様。）と命令マスクＭＳＫにおける１つのビットＭＢｍとの論理積演算が、対応するビット毎に論理積演算（ＡＮＤ）回路５１にて行われる。さらに、ＡＮＤ回路５１の演算結果と命令コードＣＯＤＥにおける１つのビットＩＢｍとの排他的否定論理和演算が、対応するビット毎に排他的否定論理和演算（ＥＸ−ＮＯＲ）回路５２にて行われる。従属接続されたＡＮＤ回路５３によりすべてのＥＸ−ＮＯＲ回路５２の演算結果が論理積演算され、その演算結果が選択信号ＳＥＬとして出力される。
【００４２】
このように判定回路を構成することで、命令マスクＭＳＫと命令コードＣＯＤＥとで設定される変更ルールの条件に一致した場合にのみ、選択信号がハイレベルとなり、当該変更ルールで設定されている変更後のグループコードが選択される。
【００４３】
以上、詳しく説明したように本実施形態によれば、複数のプロセッサ１１を有する並列プロセッサ１０にて、各プロセッサ１１の命令デコーダ部１３は、命令メモリから読み出した命令コードに、過去の命令コードにより定まるグループコードを付加して内部命令コードを生成する。さらに、命令デコーダ部１３は、当該内部命令コードに基づいて、読み出した命令コードに割り当てられている複数の命令の中から実行する命令を一意に決定して各種制御を行う。
【００４４】
これにより、１つの命令コードに複数の命令を対応させ、短い命令コード長ですべての命令を表現することができ、当該命令コードを保持するプログラムメモリに要する容量の増加を抑制することができる。さらに、同じ命令コードであっても、過去の命令コードにより定まるグループコードに応じて異なる処理を行うことができ、従来に比べて多様かつ高度な処理を実行することが可能になる。
また、任意の命令を割り当てられるエイリアス命令を設けたことにより、１つの命令コードで他のグループの命令を直ちに実行させることができる。
【００４５】
なお、上記実施形態では、命令コードは８ビット、グループコードは３ビットとしたが、これは一例であり、本発明はこれに限定されるものではない。
また、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００４６】
【発明の効果】
以上説明したように、本発明によれば、プロセッサにて実行可能なすべての命令に互いに異なる命令コードを対応させずに、１つの命令コードを複数の命令に対応させ、各プロセッサは、命令コードの入力履歴に基づいて、入力される命令コードにより実行する命令を複数の命令の中から一意に決定する。これにより、短い命令コード長ですべての命令を表現することができ、各プロセッサにて命令コードの保持に要するメモリ容量の増加を抑制することができる。また、命令コードが同じであっても、命令コードの入力履歴に応じて異なる命令を実行することができ、多様かつ異なる処理を複数のプロセッサにより並列して実行することができる。
【図面の簡単な説明】
【図１】本発明の実施形態による情報処理装置を適用した並列プロセッサの構成を示すブロック図である。
【図２】本実施形態における各プロセッサでの処理動作の概念を説明するための図である。
【図３】命令デコーダ部の構成例を示すブロック図である。
【図４】グループコードの変更ルールを設定するルックアップテーブルの一例を示す図である。
【図５】グループ変更判定回路の一例を示す図である。
【符号の説明】
１０  並列プロセッサ
１１  プロセッサ
１２  メモリ
１３  命令デコーダ部
１４  演算器
２１  命令キュー
２２  グループレジスタ
２３  命令デコーダ回路
２４  演算器
【図１】
2004252556.tif 000003
【図２】
2004252556.tif 000004
【図３】
2004252556.tif 000005
【図４】
2004252556.tif 000006
【図５】
2004252556.tif 000007