(57)【要約】【課題】  単一命令だけでなく、異なる命令を並列に実行可能とすることにより、並列実行プロセッサの利用効率の向上を図る。【解決手段】  並列実行プロセッサ１００は、命令データをフェッチする。ここで、命令データに１つの命令が含まれていれば、命令デコード部１２０は、制御信号出力部１２１ａ、１２１ｂから単一命令を出力する。また、命令データに２つの命令が含まれていれば、命令デコード部１２０は、制御信号出力部１２１ａから一方の命令を出力すると共に１２１ｂから他方の命令を出力する。【選択図】  図１
2004171530.tif 000002
【特許請求の範囲】
【請求項１】
並列実行プロセッサであって、
複数の要素プロセッサと、
前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得手段と、
前記取得手段により取得された命令列を解読する解読手段と、
前記複数の要素プロセッサから、前記取得手段により取得されたグループ情報により特定される数のグループを構成するグループ構成手段と、
前記解読手段により解読された命令列に含まれる命令を、１命令１グループ対応でグループに割り当てて、全ての要素プロセッサに、各要素プロセッサが属するグループに割り当てられた命令を、並列に実行させる実行制御手段と
を備えることを特徴とする並列実行プロセッサ。
【請求項２】
前記命令列には、前記グループ情報が特定するグループの数と同数の命令が含まれていること
を特徴とする請求項１に記載の並列実行プロセッサ。
【請求項３】
前記グループ情報は、１グループか２グループかのいずれかを特定し、
前記グループ構成手段は、
１グループが特定される場合に、前記複数の要素プロセッサの全体から１つのグループを構成し、２グループが特定される場合に、前記複数の要素プロセッサを半分ずつ分けて２つのグループを構成すること
を特徴とする請求項２に記載の並列実行プロセッサ。
【請求項４】
前記並列実行プロセッサは、さらに、
前記複数の要素プロセッサのそれぞれに１つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に交互に格納されているレジスタを備え、
前記グループ構成手段は、
２グループが特定される場合に、第１の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第２の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとを異なる２つのグループとし、
前記複数の要素プロセッサは、
各要素プロセッサに対応付けられたレジスタファイルから対象データを入手すること
を特徴とする請求項３に記載の並列実行プロセッサ。
【請求項５】
前記レジスタは、前記レジスタファイルの配列順に２個ずつを１組とするレジスタファイル組を形成しており、
前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データを入手するべきかを示す選択情報を含み、
前記複数の要素プロセッサは、
前記選択情報により示されるレジスタファイルから対象データを入手すること
を特徴とする請求項４に記載の並列実行プロセッサ。
【請求項６】
前記実行制御手段は、
複数の配属方法により前記複数の要素プロセッサのそれぞれを２つのグループに配属し、配属方法ごとに、各グループに配属される要素プロセッサの組み合わせを保持する保持手段と、
前記保持手段に保持されている配属方法のうち、いずれの配属方法を使用するかを示す配属情報を取得する配属情報入手手段と、
前記配属情報入手手段により入手された配属情報に従って、前記保持手段に保持されている組み合わせを選択する選択手段と
を備えること特徴とする請求項３に記載の並列実行プロセッサ。
【請求項７】
前記実行制御手段は、
前記複数の要素プロセッサのそれぞれが２つのグループのうちのいずれに配属されるかを示す配属情報を入手する配属情報入手手段と、
前記配属情報入手手段により入手された配属情報に従って、前記複数の要素プロセッサのそれぞれを２つのグループのいずれかに配属させる配属手段と
を備えることを特徴とする請求項３に記載の並列実行プロセッサ。
【請求項８】
前記命令は、１つのオペコードと１つのオペランドとからなり、
前記並列実行プロセッサは、さらに、
フォーマットフィールドとデータフィールドとを有し、前記フォーマットフィールドには、前記データフィールドに配置される１以上のオペコード及び１以上のオペランドの配置形式が記述され、前記データフィールドには、前記１以上のオペコード及び１以上のオペランドが前記配置形式により規定される配置順で配置されている、所定長のデータをフェッチするフェッチ手段を備え、
前記取得手段は、
前記配置形式により特定される命令数を前記グループ情報として取得し、
前記解読手段は、
前記１以上のオペコード及び１以上のオペランドを、前記配置形式に基づいて抽出して解読し、
前記実行制御手段は、
前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
を特徴とする請求項１に記載の並列実行プロセッサ。
【請求項９】
前記命令は、１つのオペコードと１つのオペランドとからなり、
前記並列実行プロセッサは、さらに、
１以上のオペコード及び１以上のオペランドが所定の配置形式により規定される配置順で配置されている所定長のデータをフェッチするフェッチ手段と、
所定の配置形式を保持している保持手段とを備え、
前記取得手段は、
前記保持手段により保持されている配置形式により特定される命令数を前記グループ情報として取得し、
前記解読手段は、
前記１以上のオペコード及び１以上のオペランドを、前記配置形式に基づいて抽出して解読し、
前記実行制御手段は、
前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
を特徴とする請求項１に記載の並列実行プロセッサ。
【請求項１０】
前記取得手段は、
前記グループ情報が、前記複数の要素プロセッサを２つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、
前記実行制御手段は、
前記特定のグループに配属されている要素プロセッサに動作停止を指示すること
を特徴とする請求項１に記載の並列実行プロセッサ。
【請求項１１】
並列実行プロセッサであって、
複数の要素プロセッサと、
前記複数の要素プロセッサのそれぞれに１つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に一定の規則に従って格納されてなるレジスタと、
第１の命令と第２の命令とを含む命令列を取得する取得手段と、
前記取得手段により取得された命令列から第１の命令と第２の命令を解読する解読手段と、
第１の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第２の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとに、前記解読手段により解読された第１の命令と第２の命令とを、それぞれ割り当てて、各要素プロセッサに並列に実行させる実行制御手段と
を備えることを特徴とする並列実行プロセッサ。
【請求項１２】
前記レジスタは、
各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に交互に格納されていること
を特徴とする請求項１１に記載の並列実行プロセッサ。
【請求項１３】
前記レジスタは、前記配列順に２個ずつを１組とするレジスタファイル組を形成しており、
前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データにアクセスするべきかを示す選択情報を含み、
前記複数の要素プロセッサは、
前記選択情報により示されるレジスタファイルから対象データを入手すること
を特徴とする請求項１２に記載の並列実行プロセッサ。
【請求項１４】
複数の要素プロセッサに対して命令を割り当てる命令割当方法であって、
前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得ステップと、
前記取得ステップにより取得された命令列を解読する解読ステップと、
前記複数の要素プロセッサから、前記取得ステップにより取得されたグループ情報により特定される数のグループを構成するグループ構成ステップと、
前記解読ステップにより解読された命令列に含まれる命令を、１命令１グループ対応でグループに割り当てる実行制御ステップと
を含むことを特徴とする命令割当方法。
【請求項１５】
複数の要素プロセッサに、第１の命令と第２の命令とを割り当てる命令割当方法であって、
第１の命令の対象データと第２の命令の対象データとが所定の規則で配列され格納されているメモリから、前記複数の要素プロセッサと同数の対象データを読み込み、前記複数の要素プロセッサのそれぞれに対応付けられたレジスタファイルに、その配列を並び替えずに１つずつ格納する格納ステップと、
第１の命令と第２の命令とを含む命令列を取得する取得ステップと、
前記取得ステップにより取得された命令列から第１の命令と第２の命令を抽出して解読する解読ステップと、
前記格納ステップにより第１の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサと、前記第２の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサとに、前記解読ステップにより解読された第１の命令と第２の命令とを、それぞれ割り当てる割当ステップと
を含むことを特徴とする命令割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列実行プロセッサに関し、特に、並列実行プロセッサの利用効率の向上を図る技術に関する。
【背景技術】
【０００２】
画像や音声を扱うマルチメディアデータ処理では、例えば、画像全体にフィルタをかけて色調や画質を変化させるような、膨大な数のデータに単一の演算を施す作業が必要になる。このような作業の時間短縮を図るプロセッサとして、従来からＳＩＭＤ（Single Instruction Multiple Data）型プロセッサが利用されている（例えば、特許文献１参照。）。
ＳＩＭＤ型プロセッサとは、内部に複数の要素プロセッサを備え、各要素プロセッサに単一の命令を並列に実行させるプロセッサである。通常、ＳＩＭＤ型プロセッサは、ＣＰＵ（Central Processing Unit）のコプロセッサとしてコンピュータに搭載されている。そして、ＣＰＵからの動作指示があれば、１つの演算命令と複数のデータとをメモリからフェッチし、各要素プロセッサに単一の演算命令を並列に実行させる。例えば、ＳＩＭＤ型プロセッサが１２８個の要素プロセッサを備えていれば、単一の演算命令が１２８並列に実行される。これにより、マルチメディアデータ処理の時間短縮を図ることができる。
【特許文献１】特開２０００−２３１５５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ＳＩＭＤ型プロセッサは、膨大な数のデータに単一の演算を施す作業には効力を発揮するが、それ以外の作業には不向きである。そのため、ＣＰＵは、マルチメディアデータ処理にのみＳＩＭＤ型プロセッサを利用し、それ以外の処理はＳＩＭＤ型プロセッサの動作を停止させる。これでは、コンピュータ全体としてのハードウェア資源の利用効率が悪い。
【０００４】
また、ＳＩＭＤ型プロセッサは、メモリから複数のデータをいっせいにフェッチする。したがって、たとえマルチメディアデータ処理であっても、メモリ内に異なる演算の対象となるデータが混在している場合には、ＣＰＵは、その並び替えを行った後に、ＳＩＭＤ型プロセッサを動作させなければならない。このデータの並び替えは、データの数が膨大であるほど時間がかかり、マルチメディアデータ処理の時間短縮の妨げとなる。
【０００５】
そこで、本発明は、コンピュータ全体としてのハードウェア資源の利用効率を向上する技術を提供することを第１の目的とする。
さらに、本発明は、メモリ内に異なる演算の対象となるデータが混在している場合であっても、マルチメディアデータ処理の時間短縮を図る技術を提供することを第２の目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係る並列実行プロセッサは、複数の要素プロセッサと、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得手段と、前記取得手段により取得された命令列を解読する解読手段と、前記複数の要素プロセッサから、前記取得手段により取得されたグループ情報により特定される数のグループを構成するグループ構成手段と、前記解読手段により解読された命令列に含まれる命令を、１命令１グループ対応でグループに割り当てて、全ての要素プロセッサに、各要素プロセッサが属するグループに割り当てられた命令を、並列に実行させる実行制御手段とを備えることを特徴とする。
【発明の効果】
【０００７】
上記構成によれば、並列実行プロセッサは、複数の要素プロセッサから１又は複数のグループを構成し、１命令１グループ対応で命令をグループに割り当てて並列に実行させることができる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成し、グループ毎に異なる命令を並列に実行させることができる。
【０００８】
このように、単一命令だけでなく複数の異なる命令を並列に実行可能とすることにより、並列実行プロセッサの適用範囲が広がり、利用効率の向上を図ることができる。
また、前記命令列には、前記グループ情報が特定するグループの数と同数の命令が含まれていることとしてもよい。
上記構成によれば、並列実行プロセッサは、解読した命令を余りなく１命令１グループ対応でグループに割り当てることができる。
【０００９】
また、前記グループ情報は、１グループか２グループかのいずれかを特定し、前記グループ構成手段は、１グループが特定される場合に、前記複数の要素プロセッサの全体から１つのグループを構成し、２グループが特定される場合に、前記複数の要素プロセッサを半分ずつ分けて２つのグループを構成することとしてもよい。
上記構成によれば、並列実行プロセッサは、全ての要素プロセッサを１つのグループとするか、半数ずつの２つのグループとするかを選択することができる。
【００１０】
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから２つのグループを構成し、グループ毎に異なる命令を並列に実行させることができる。例えば、要素プロセッサの数が１２８であれば、並列実行プロセッサは、単一命令を１２８並列に実行するか、２つの命令をそれぞれ６４並列に実行するかを選択することができる。このように、２つのグループを構成する場合でも、各グループは、まだ６４個という多数の要素プロセッサを抱えている。したがって、各グループはＳＩＭＤ型プロセッサの特徴を損なわずに、それぞれがデータ処理の時間短縮を図ることができる。
【００１１】
また、前記並列実行プロセッサは、さらに、前記複数の要素プロセッサのそれぞれに１つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に交互に格納されているレジスタを備え、前記グループ構成手段は、２グループが特定される場合に、第１の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第２の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとを異なる２つのグループとし、前記複数の要素プロセッサは、各要素プロセッサに対応付けられたレジスタファイルから対象データを入手することとしてもよい。
【００１２】
上記構成によれば、並列実行プロセッサは、要素プロセッサから２つのグループを構成する場合に、レジスタファイルに格納されたデータの配列順に従ってグループを構成する。
これにより、並列実行プロセッサは、メモリ内に第１の命令の対象となるデータと第２の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にレジスタにロードして、各データに対応する命令を並列に実行することができる。
【００１３】
また、前記レジスタは、前記レジスタファイルの配列順に２個ずつを１組とするレジスタファイル組を形成しており、前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データを入手するべきかを示す選択情報を含み、前記複数の要素プロセッサは、前記選択情報により示されるレジスタファイルから対象データを入手することとしてもよい。
【００１４】
上記構成によれば、並列実行プロセッサは、各要素プロセッサの対象データの入手先を、レジスタファイル組の中から選択させることができる。
これにより、並列実行プロセッサは、１命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
【００１５】
また、前記実行制御手段は、複数の配属方法により前記複数の要素プロセッサのそれぞれを２つのグループに配属し、配属方法ごとに、各グループに配属される要素プロセッサの組み合わせを保持する保持手段と、前記保持手段に保持されている配属方法のうち、いずれの配属方法を使用するかを示す配属情報を取得する配属情報入手手段と、前記配属情報入手手段により入手された配属情報に従って、前記保持手段に保持されている組み合わせを選択する選択手段とを備えることとしてもよい。
【００１６】
上記構成によれば、並列実行プロセッサは、要素プロセッサから２つのグループを構成する場合に、要素プロセッサを各グループに配属する配属方法を動的に変更することができる。なお、この配属方法は、並列実行プロセッサが予め複数保持しており、その中から１つが選択される。
このように、配属方法が固定的ではなく動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
【００１７】
また、前記実行制御手段は、前記複数の要素プロセッサのそれぞれが２つのグループのうちのいずれに配属されるかを示す配属情報を入手する配属情報入手手段と、前記配属情報入手手段により入手された配属情報に従って、前記複数の要素プロセッサのそれぞれを２つのグループのいずれかに配属させる配属手段とを備えることとしてもよい。
上記構成によれば、並列実行プロセッサは、要素プロセッサから２つのグループを構成する場合に、要素プロセッサ毎に配属先となるグループを動的に変更することができる。
このように、各要素プロセッサの配属先となるグループを動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
【００１８】
また、前記命令は、１つのオペコードと１つのオペランドとからなり、前記並列実行プロセッサは、さらに、フォーマットフィールドとデータフィールドとを有し、前記フォーマットフィールドには、前記データフィールドに配置される１以上のオペコード及び１以上のオペランドの配置形式が記述され、前記データフィールドには、前記１以上のオペコード及び１以上のオペランドが前記配置形式により規定される配置順で配置されている、所定長のデータをフェッチするフェッチ手段を備え、前記取得手段は、前記配置形式により特定される命令数を前記グループ情報として取得し、前記解読手段は、前記１以上のオペコード及び１以上のオペランドを、前記配置形式に基づいて抽出して解読し、前記実行制御手段は、前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てることとしてもよい。
【００１９】
上記構成によれば、所定長のデータは、１又は複数の命令を含むと共に、複数の要素プロセッサからグループを構成する数、及び、各グループへの命令の割り当て方法を規定している。並列実行プロセッサは、所定長のデータに従って、各命令を各グループの要素プロセッサに並列に実行させることができる。
このように、並列実行プロセッサは、グループ情報と命令列とを同時に取得するので、グループ構成の変更が頻繁に行われる場合であっても、データ処理が遅れることがない。
【００２０】
また、前記命令は、１つのオペコードと１つのオペランドとからなり、前記並列実行プロセッサは、さらに、１以上のオペコード及び１以上のオペランドが所定の配置形式により規定される配置順で配置されている所定長のデータをフェッチするフェッチ手段と、所定の配置形式を保持している保持手段とを備え、前記取得手段は、前記保持手段により保持されている配置形式により特定される命令数を前記グループ情報として取得し、前記解読手段は、前記１以上のオペコード及び１以上のオペランドを、前記配置形式に基づいて抽出して解読し、前記実行制御手段は、前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てることとしてもよい。
【００２１】
上記構成によれば、所定長のデータは、１又は複数の命令を含むと共に、各グループへの命令の割り当て方法を規定している。なお、所定長のデータの解読に必要な配置形式は、保持手段に保持されている。並列実行プロセッサは、配置形式により所定長のデータを解読することにより、各命令を各グループの要素プロセッサに並列に実行させることができる。
【００２２】
このように、並列実行プロセッサは、配置形式を保持しているので、所定長のデータに、配置形式を記述するためのフィールドが不要であり、その分のビット数をオペコードやオペランドに割り当てることができる。
また、前記取得手段は、前記グループ情報が、前記複数の要素プロセッサを２つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、前記実行制御手段は、前記特定のグループに配属されている要素プロセッサに動作停止を指示することとしてもよい。
【００２３】
上記構成によれば、並列実行プロセッサは、一部の要素プロセッサの動作を停止させることができる。
これにより、並列実行プロセッサは、動作の不要な要素プロセッサを停止させ、消費電力の削減を図ることができる。
上記目的を達成するために、本発明に係る並列実行プロセッサは、複数の要素プロセッサと、前記複数の要素プロセッサのそれぞれに１つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に一定の規則に従って格納されてなるレジスタと、第１の命令と第２の命令とを含む命令列を取得する取得手段と、前記取得手段により取得された命令列から第１の命令と第２の命令を解読する解読手段と、第１の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第２の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとに、前記解読手段により解読された第１の命令と第２の命令とを、それぞれ割り当てて、各要素プロセッサに並列に実行させる実行制御手段とを備える。
【００２４】
上記構成によれば、並列実行プロセッサは、レジスタファイルに格納された第１及び第２の命令の対象データの配列順に従って、各要素プロセッサに第１の命令と第２の命令とを並列に実行させる。
これにより、並列実行プロセッサは、メモリ内に第１の命令の対象となるデータと第２の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
【００２５】
また、前記レジスタは、各レジスタファイルには、第１の命令の対象データと第２の命令の対象データとが当該レジスタファイルの配列順に交互に格納されていることとしてもよい。
上記構成によれば、並列実行プロセッサは、メモリ内に第１の命令の対象となるデータと第２の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
【００２６】
また、前記レジスタは、前記配列順に２個ずつを１組とするレジスタファイル組を形成しており、前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データにアクセスするべきかを示す選択情報を含み、前記複数の要素プロセッサは、前記選択情報により示されるレジスタファイルから対象データを入手することとしてもよい。
【００２７】
上記構成によれば、並列実行プロセッサは、各要素プロセッサの対象データの入手先を、レジスタファイル組の中から選択させることができる。
これにより、並列実行プロセッサは、１命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
【００２８】
本発明に係る命令割当方法は、複数の要素プロセッサに対して命令を割り当てる命令割当方法であって、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得ステップと、前記取得ステップにより取得された命令列を解読する解読ステップと、前記複数の要素プロセッサから、前記取得ステップにより取得されたグループ情報により特定される数のグループを構成するグループ構成ステップと、前記解読ステップにより解読された命令列に含まれる命令を、１命令１グループ対応でグループに割り当てる実行制御ステップとを含む。
【００２９】
上記構成によれば、命令割当方法は、複数の要素プロセッサからグループを構成し、各命令を各グループに割り当てる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成して、グループ毎に異なる複数の命令を並列に実行させることができる。
【００３０】
このように、単一命令だけでなく複数の異なる命令を並列に実行可能とすることにより、並列実行プロセッサの適用範囲が広がり、利用効率の向上を図ることができる。
本発明に係る命令割当方法は、複数の要素プロセッサに、第１の命令と第２の命令とを割り当てる命令割当方法であって、第１の命令の対象データと第２の命令の対象データとが所定の規則で配列され格納されているメモリから、前記複数の要素プロセッサと同数の対象データを読み込み、前記複数の要素プロセッサのそれぞれに対応付けられたレジスタファイルに、その配列を並び替えずに１つずつ格納する格納ステップと、第１の命令と第２の命令とを含む命令列を取得する取得ステップと、前記取得ステップにより取得された命令列から第１の命令と第２の命令を抽出して解読する解読ステップと、前記格納ステップにより第１の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサと、前記第２の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサとに、前記解読ステップにより解読された第１の命令と第２の命令とを、それぞれ割り当てる割当ステップとを含む。
【００３１】
上記構成によれば、命令割当方法は、一定の規則により配列された第１及び第２の命令の対象データを、並び替えずにメモリからレジスタファイルに格納し、その規則に従って、各要素プロセッサに第１の命令と第２の命令とを割り当てる。
これにより、並列実行プロセッサは、メモリ内に第１の命令の対象となるデータと第２の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にデータをロードし、各データに対応する命令を並列に実行することができる。
【発明を実施するための最良の形態】
【００３２】
（実施の形態１）
＜概要＞
本発明の実施の形態１に係る並列実行プロセッサは、まず、命令データをフェッチする。ここで、命令データに１つの命令のみが含まれている場合には、並列実行プロセッサは、単一命令を全ての要素プロセッサに割り当てる。また、命令データに２つの命令が含まれている場合には、並列実行プロセッサは、要素プロセッサから２つのグループを構成し、各グループに命令を１つずつ割り当てる。
【００３３】
このように、単一命令だけでなく２つの異なる命令を並列に実行可能とすることにより、並列実行プロセッサの利用効率の向上を図ることができる。
以下に、実施の形態１に係る並列実行プロセッサについて詳細に説明する。
＜構成＞
図１は、本発明の実施の形態１に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【００３４】
図１に示すコンピュータは、ＣＰＵ１、メモリ２及び並列実行プロセッサ１００から構成される。
ＣＰＵ１は、メモリ２、並列実行プロセッサ１００の動作を制御する。
メモリ２は、演算対象となるデータと命令データとを格納している。
並列実行プロセッサ１００は、ＣＰＵ１からの動作指示を受けて動作するコプロセッサであり、命令フェッチ部１１０、命令デコード部１２０、ＰＥ１３０ａ、１３０ｂ、１３０ｃ、１３０ｄ、レジスタファイル１４０ａ、１４０ｂ、１４０ｃ、１４０ｄを備える。一般的にＰＥは、６４、１２８などと２のべき乗の個数だけ備えられる。本明細書では、簡単のためＰＥが４個の場合で説明する。
【００３５】
命令フェッチ部１１０は、ＣＰＵ１からの動作指示を受けて、メモリ２から３２ビットの命令データをフェッチする。
図２は、命令フェッチ部１１０がフェッチする命令データのデータ構造を示す図である。
命令データは、機械語で記述された３２ビット長のデータであり、先頭２ビットのフォーマットフィールドと、それに続く３０ビットのデータフィールドとを持つ。
【００３６】
フォーマットフィールドには、データフィールドに配置される１又は２の命令の配置形式が記述されている。また、データフィールドには、１又は２の命令に対応する１以上のオペコード及び１以上のオペランドが配置されている。このオペコード及びオペランドの配置順や、これらへのビット数の配分は、フォーマットフィールドの配置形式により規定されている。
【００３７】
以下に、配置形式別の命令データのデータ構造を示す。
図２（ａ）は、配置形式が「０ｂ００」の場合の命令データのデータ構造を示す図である。
ここで、「０ｂｘｘ」との表記は、「ｘｘ」の値が２進数であることを示す。
当該命令データのフォーマットフィールドには、「０ｂ００」がセットされ、データフィールドには、１２ビットの１つのオペコードと、１８ビットの１つのオペランドがセットされる。これは、オペコードａ１とオペランドａ２とからなる１つの命令が命令データに含まれていることを示す。
【００３８】
図２（ｂ）は、配置形式が「０ｂ０１」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「０ｂ０１」がセットされ、データフィールドには、６ビットの２つのオペコードと９ビットの２つのオペランドがセットされる。これは、オペコードｂ１とオペランドｂ２とからなる命令と、オペコードｂ３とオペランドｂ４とからなる命令との２つの命令が命令データに含まれていることを示す。
【００３９】
図２（ｃ）は、配置形式が「０ｂ１０」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「０ｂ１０」がセットされ、データフィールドには、６ビットの２つのオペコードと１８ビットの１つのオペランドがセットされる。これは、オペコードｃ１とオペランドｃ３とからなる命令と、オペコードｃ２とオペランドｃ３とからなる命令との２つの命令が命令データに含まれていることを示す。
【００４０】
図２（ｄ）は、配置形式が「０ｂ１１」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「０ｂ１１」がセットされ、データフィールドには、１２ビットの１つのオペコードと９ビットの２つのオペランドがセットされる。これは、オペコードｄ１とオペランドｄ２とからなる命令と、オペコードｄ１と  オペランドｄ３とからなる命令との２つの命令が命令データに含まれていることを示す。
【００４１】
上記のデータ構造によれば、並列実行プロセッサ１００に１つの命令を並列に実行させる場合には、命令データは図２（ａ）のデータ構造となる。また、２種類の命令を並列に実行させる場合には、命令データは図２（ｂ）、図２（ｃ）、図２（ｄ）のうちのいずれかのデータ構造となる。
なお、上記の命令データは、オペコード及びオペランドに配分されるビット数によって、指定できる命令の数とレジスタの数とが異なる。レジスタｒ０とレジスタｒ１の加算結果をレジスタｒ２に格納する加算命令「ＡＤＤ  ｒ２，ｒ０，ｒ１」を例として以下に示す。
【００４２】
加算命令では、オペランドは１つのディスティネーションレジスタと２つのソースレジスタとを指定しなければならない。このとき、図２（ａ）に示されるデータ構造では、オペランド部が１８ビットなので、各レジスタにはそれぞれ６ビットが配分される。即ち、オペランドは、ディスティネーションレジスタ又はソースレジスタのそれぞれに０〜６３番の合計６４本のレジスタを指定することができる。一方、図２（ｄ）に示されるデータ構造では、オペランド部が９ビットなので、各レジスタにはそれぞれ３ビットが配分される。即ち、オペランドは、ディスティネーションレジスタ又はソースレジスタのそれぞれに０〜７番の合計８本のレジスタを指定することができる。
【００４３】
命令デコード部１２０は、命令フェッチ部１１０がフェッチした命令データから制御信号を生成して、各ＰＥに制御信号を出力する。ここで、制御信号とは、ＰＥに動作を指示する信号であり、具体的には、ＰＥ内部の演算器、データパスを制御する信号である。
また、命令デコード部１２０は、内部に２つの制御信号出力部１２１ａ、１２１ｂを備えている。命令データが、図２（ａ）に示されるデータ構造であれば、制御信号出力部１２１ａ、１２１ｂは、同一の制御信号を出力する。一方、命令データが、図２（ｂ）、図２（ｃ）、図２（ｄ）に示されるデータ構造であれば、制御信号出力部１２１ａ、１２１ｂは、互いに異なる制御信号を出力する。以下に、命令デコード部の内部構造を説明する。
【００４４】
図３は、命令デコード部１２０の内部構造を示す図である。
命令デコード部１２０は、解読部１２２ａ、１２２ｂ、１２２ｃ、１２２ｄと、制御信号出力部１２１ａ、１２１ｂとを備える。
命令デコード部１２０は、命令フェッチ部１１０がフェッチした命令データのうち、フォーマットフィールドの２ビットを制御信号出力部１２１ａ、１２１ｂに与え、データフィールドの３０ビットを解読部１２２ａ〜１２２ｄの全てに与える。
【００４５】
解読部１２２ａは、図２（ａ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に１２ビットをオペコード、１８ビットをオペランドとして解読し、１つの制御信号を生成する。
生成された制御信号は、制御信号出力部１２１ａ、１２１ｂに送られる。
解読部１２２ｂは、図２（ｂ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に６ビットをオペコード、９ビットをオペランド、６ビットをオペコード、９ビットをオペランドとして解読し、２つの制御信号を生成する。
【００４６】
オペコードｂ１とオペランドｂ２とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｂ３とオペランドｂ４とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
解読部１２２ｃは、図２（ｃ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に６ビットをオペコード、６ビットをオペコード、１８ビットをオペランドとして解読し、２つの制御信号を生成する。
【００４７】
オペコードｃ１とオペランドｃ３とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｃ２とオペランドｃ３とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
解読部１２２ｄは、図２（ｄ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に１２ビットをオペコード、９ビットをオペランド、９ビットをオペランドとして解読し、２つの制御信号を生成する。
【００４８】
オペコードｄ１とオペランドｄ２とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｄ１とオペランドｄ３とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
制御信号出力部１２１ａ、１２１ｂは、入力端子ａ、ｂ、ｃ、ｄに入力された制御信号のいずれかを、フォーマットフィールドの２ビットに基づいて選択的に出力する。
【００４９】
例えば、フォーマットフィールドが「０ｂ００」の場合、入力端子ａに入力された制御信号が出力され、フォーマットフィールドが「０ｂ０１」の場合、入力端子ｂに入力された制御信号が出力される。
これにより、命令デコード部１２０は、命令データに１つの命令が含まれている場合、制御信号出力部１２１ａ、１２１ｂから同一の制御信号を出力し、命令データに２つの命令が含まれている場合、制御信号出力部１２１ａ、１２１ｂから異なる２つの制御信号を出力することができる。
【００５０】
ＰＥ１３０ａ、１３０ｂ、１３０ｃ、１３０ｄは、要素プロセッサであり、命令デコード部１２０からの制御信号に従って並列に命令を実行する。なお、図１に示すように、ＰＥ１３０ａ、１３０ｃは、制御信号出力部１２１ａから制御信号を受ける。また、ＰＥ１３０ｂ、１３０ｄは、制御信号出力部１２１ｂから制御信号を受ける。したがって、制御信号出力部１２１ａ、１２１ｂから同一の制御信号が出力される場合、ＰＥ１３０ａ〜１３０ｄは同一の命令を実行する。また、制御信号出力部１２１ａ、１２１ｂから異なる２つの制御信号が出力される場合、ＰＥ１３０ａ、１３０ｃの第１グループと、ＰＥ１３０ｂ、１３０ｄの第２グループとが異なる命令を実行する。
【００５１】
命令実行の対象となるデータは、各ＰＥに対応付けられているレジスタファイル１４０ａ〜１４０ｄから得られる。
レジスタファイル１４０ａ〜１４０ｄは、ロード命令によりメモリ２から読み込まれたデータを格納している。
メモリ２には、同一演算の対象となるデータがまとまって格納されている場合と、異なる２つの演算の対象となるデータが交互に格納されている場合とがある。上記のロード命令は、そのどちらの場合であっても、データの配列を並び替えずにレジスタファイル１４０ａ〜１４０ｄに格納する。並列実行プロセッサ１００は、データがまとまって格納されている場合には、全てのＰＥ１３０ａ〜１３０ｄに同一の演算命令を実行させることができる。また、データが交互に格納されている場合には、ＰＥ１３０ａ、１３０ｃの第１グループと、ＰＥ１３０ｂ、１３０ｄの第２グループとに異なる演算命令を実行させることができる。
【００５２】
また、制御信号出力部１２１ａ及び１２１ｂから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Ｉｄｌｅ」指示であれば、「Ｉｄｌｅ」指示が割り当てられる２個のＰＥは動作を停止する。
＜動作＞
次に、上述のように構成された並列実行プロセッサ１００の動作について説明する。
【００５３】
図４は、実施の形態１に係る並列実行プロセッサ１００の動作の流れを示す図である。
ステップＳ１０１：命令フェッチ部１１０が命令データをフェッチする。
ステップＳ１０２：命令デコード部１２０は、命令フェッチ部１１０がフェッチした命令データから制御信号を生成する。この際に、命令デコード部１２０は、解読部１２２ａ〜１２２ｄにより並列に制御信号を生成する。解読部１２２ａは、命令データを「０ｂ００」の配置形式に基づいて解読し、制御信号を生成する。また、解読部１２２ｂは、命令データを「０ｂ０１」の配置形式に基づいて解読し、制御信号を生成する。解読部１２２ｃは、命令データを「０ｂ１０」の配置形式に基づいて解読し、制御信号を生成する。解読部１２２ｄは、命令データを「０ｂ１１」の配置形式に基づいて解読し、制御信号を生成する。
【００５４】
ステップＳ１０３：命令デコード部１２０は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部１２２ａ〜１２２ｄのうちの１つを選択する。
ステップＳ１０４：ステップＳ１０３において配置形式が「０ｂ００」の場合、命令デコード部１２０は、命令データから単一の命令を抽出し、解読して、１つの制御信号を生成する。生成された制御信号は、制御信号出力部１２１ａ、１２１ｂから並列に出力される。ＰＥ１３０ａ〜１３０ｄは、出力された制御信号に従って同一の演算を並列に実行する。
【００５５】
ステップＳ１０５：ステップＳ１０３において配置形式が「０ｂ０１」、「０ｂ１０」、又は「０ｂ１１」の場合、命令デコード部１２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
【００５６】
ステップＳ１０６：ステップＳ１０５において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ１０５：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
ステップＳ１０７：ステップＳ１０５において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ１０５：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
【００５７】
以上のように、並列実行プロセッサ１００は、命令データをフェッチし、全てのＰＥ１３０ａ〜ＰＥ１３０ｄに並列に命令を実行させる。ここで、命令データに１つの命令のみが含まれている場合には、並列実行プロセッサ１００は、単一命令を全てのＰＥに割り当てる。また、命令データに２つの命令が含まれている場合には、並列実行プロセッサ１００は、全てのＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成して、各グループに命令を１つずつ割り当てる。
【００５８】
このように、単一命令だけでなく２つの異なる命令を並列に実行可能とすることにより、並列実行プロセッサ１００の利用効率の向上を図ることができる。
また、並列実行プロセッサ１００は、２つの異なる命令を並列に実行する場合には、一方の命令をＰＥ１３０ａ、１３０ｃが実行し、他方の命令をＰＥ１３０ｂ、１３０ｄが実行する仕様となっている。これにより、メモリ２内に、一方の命令の対象となるデータと、他方の命令の対象となるデータとが交互に配列されて格納されていたとしても、並列実行プロセッサ１００は、その配列を並び替えずに一斉にメモリ２からレジスタファイル１４０ａ〜１４０ｄにロードして各データに適する命令を並列に実行することができる。メモリ２内に異なる命令の対象となるデータが交互に配列されている例としては、複素数データ（実数データと虚数データとが交互に配列される）や、オーディオデータ（ステレオ信号の左データと右データとが交互に配列される）などがある。
【００５９】
なお、本実施の形態で説明した命令データは、単なる一例であり、他のデータ構造としてもよい。例えば、命令データに２つのオペコードと１つのオペランドとが含まれる場合、図２（ｃ）ではなく図２（ｅ）のようにしてもよい。図２（ｅ）は、オペランドに分配されるビット数を削減し、オペコードに分配されるビット数を増加させたものである。このようにすると、図２（ｃ）に比べて、オペランドにより指定できるレジスタの本数が削減されるが、その代わり、オペコードにより指定できる命令の種類が増加する。
【００６０】
また、制御信号出力部１２１ａから出力された制御信号はＰＥ１３０ａとＰＥ１３０ｃへ、制御信号出力部１２１ｂから出力された制御信号はＰＥ１３０ｂとＰＥ１３０ｄへ入力されるが、演算対象となるデータの配列にあわせて他の構成としてもよい。例えば、制御信号出力部１２１ａから出力された制御信号はＰＥ１３０ａとＰＥ１３０ｂへ、制御信号出力部１２１ｂから出力された制御信号はＰＥ１３０ｃとＰＥ１３０ｄへ入力される構成としてもよい。
【００６１】
（実施の形態２）
＜概要＞
実施の形態１に係る並列実行プロセッサは、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、各グループの構成方法が固定的である。本発明の実施の形態２に係る並列実行プロセッサは、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、各グループの構成方法を予め定められた中から動的に選択することができる。
【００６２】
このように、グループの構成方法を動的に選択可能とすることにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
以下に、実施の形態２に係る並列実行プロセッサについて詳細に説明する。
＜構成＞
図５は、実施の形態２に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【００６３】
図５に示す並列実行プロセッサ２００の構成は実施の形態１で説明した並列実行プロセッサ１００に配属部２５０を加えたものである。並列実行プロセッサ１００と同様の構成要素には同一の符号を付し、それらの説明を省略する。
配属部２５０は、予め定められた複数の配属方法のうち、ＣＰＵ１により指定された配属方法により、ＰＥ１３０ａ〜ＰＥ１３０ｄを第１グループと第２グループとに配属させる。制御信号出力部１２１ａ、１２１ｂからの各制御信号は、それぞれ第１グループのＰＥと第２グループのＰＥとに送られる。
【００６４】
図６は、配属部２５０の内部構成を示す図である。
配属部２５０は、制御信号入力部２５１ａ、２５１ｂ、組み合わせ保持部２５２、配属情報入手部２５３、配属制御部２５４を備える。また、配属制御部２５４は、制御信号出力部２５５ａ〜２５５ｄを備える。
制御信号入力部２５１ａは、制御信号出力部１２１ａと接続されている。また、制御信号入力部２５１ｂは、制御信号出力部１２１ｂと接続されている。
【００６５】
配属制御部２５４内部の制御信号出力部２５５ａ〜２５５ｄは、ＰＥ１３０ａ〜ＰＥ１３０ｄとそれぞれ接続されている。
組み合わせ保持部２５２は、ＲＯＭであり、制御信号入力部２５１ａ、２５１ｂと制御信号出力部２５５ａ〜２５５ｄとの接続の組み合わせを２組保持している。
図７は、組み合わせ保持部２５２が保持する２組の組み合わせを示す図である。
【００６６】
２組の組み合わせには、配属情報が「０ｂ００」の組み合わせＡと、配属情報が「０ｂ０１」の組み合わせＢとがある。
組み合わせＡは、制御信号入力部２５１ａを制御信号出力部２５５ａ、２５５ｃに接続し、また、制御信号入力部２５１ｂを制御信号出力部２５５ｂ、２５５ｄに接続する組み合わせである。
【００６７】
組み合わせＢは、制御信号入力部２５１ａを制御信号出力部２５５ａ、２５５ｂに接続し、また、制御信号入力部２５１ｂを制御信号出力部２５５ｃ、２５５ｄに接続する組み合わせである。
配属情報入手部２５３は、組み合わせＡと組み合わせＢとのいずれを選択するかを示す配属情報「０ｂ００」又は「０ｂ０１」をＣＰＵ１から入手する。
【００６８】
配属制御部２５４は、配属情報入手部２５３により入手された配属情報を受け取り、組み合わせを選択する。
上記構成により、配属情報が「０ｂ００」の場合、配属部２５０は、制御信号入力部２５１ａに入力された制御信号を制御信号出力部２５５ａ、２５５ｃから出力し、制御信号入力部２５１ｂに入力された制御信号を制御信号出力部２５５ｂ、２５５ｄから出力することができる。
【００６９】
また、配属情報が「０ｂ０１」の場合、配属部２５０は、制御信号入力部２５１ａに入力された制御信号を制御信号出力部２５５ａ、２５５ｂから出力し、制御信号入力部２５１ｂに入力された制御信号を制御信号出力部２５５ｃ、２５５ｄから出力することができる。
これにより、並列実行プロセッサ２００は、２つの異なる命令をＰＥ１３０ａ〜ＰＥ１３０ｄに実行させる場合に、ＰＥ１３０ａ〜１３０ｄの配列順に交互に異なる命令を実行させるか、ＰＥ１３０ａ〜１３０ｄの配列順の前半と後半とで異なる命令を実行させるかを選択することができる。
【００７０】
また、制御信号出力部１２１ａ及び１２１ｂから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Ｉｄｌｅ」指示であれば、「Ｉｄｌｅ」指示が割り当てられる２個のＰＥは動作を停止する。
この際に、配属情報が「０ｂ００」であれば、ＰＥ１３０ａ〜ＰＥ１３０ｄの配列順に交互にＰＥが動作を停止し、配属情報が「０ｂ０１」であれば、ＰＥ１３０ａ〜１３０ｄの配列の前半と後半とのいずれか一方のＰＥが動作を停止する。
【００７１】
＜動作＞
次に、上述のように構成された並列実行プロセッサ２００の動作について説明する。
図８は、実施の形態２に係る並列実行プロセッサ２００の動作の流れを示す図である。
ステップＳ２０１：命令フェッチ部１１０が命令データをフェッチする。
ステップＳ２０２：命令デコード部１２０は、命令フェッチ部１１０がフェッチした命令データから各配置形式「０ｂ００」、「０ｂ０１」、「０ｂ１０」、「０ｂ１１」に基づいて制御信号を生成する。
【００７２】
ステップＳ２０３：命令デコード部１２０は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部１２２ａ〜１２２ｄのうちの１つを選択する。
ステップＳ２０４：ステップＳ２０３において配置形式が「０ｂ００」の場合、命令デコード部１２０は、命令データから単一の命令を抽出し、解読して、１つの制御信号を生成する。生成された制御信号は、制御信号出力部１２１ａ、１２１ｂから並列に出力される。ＰＥ１３０ａ〜１３０ｄは、出力された制御信号に従って同一の演算を並列に実行する。
【００７３】
ステップＳ２０５：ステップＳ２０３において配置形式が「０ｂ０１」、「０ｂ１０」、又は「０ｂ１１」の場合、配属部２５０は、ＣＰＵ１から配属情報を入手する。
ステップＳ２０６：ステップＳ２０５において配属情報が「０ｂ００」であれば、配属部２５０は、組み合わせＡを選択する。
命令デコード部１２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。
【００７４】
ステップＳ２０７：組み合わせＡによる第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
ステップＳ２０８：ステップＳ２０７において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ２０７：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
【００７５】
ステップＳ２０９：ステップＳ２０７において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ２０７：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
ステップＳ２１０：ステップＳ２０５において配属情報が「０ｂ０１」であれば、配属部２５０は、組み合わせＢを選択する。
【００７６】
命令デコード部１２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。
ステップＳ２１１：組み合わせＢによる第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
【００７７】
ステップＳ２１２：ステップＳ２１１において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ２１１：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
ステップＳ２１３：ステップＳ２１１において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ２１１：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
【００７８】
以上のように、並列実行プロセッサ２００は、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。
これにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
また、組み合わせ保持部２５２に保持されている配属先の組み合わせは、プログラマブルに書き換え可能としてもよい。
【００７９】
（実施の形態３）
＜概要＞
実施の形態２に係る並列実行プロセッサは、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。これに対し、本発明の実施の形態３に係る並列実行プロセッサは、グループの構成方法を予め定められた中から選択するのではなく、ＰＥ毎にどちらのグループに配属させるかを自由に決定することができる。
【００８０】
このように、ＰＥ毎に配属先を決定することにより、きめ細かいグループ構成が可能となり、並列実行プロセッサの利用効率の向上をさらに図ることができる。
以下に、実施の形態３に係る並列実行プロセッサについて詳細に説明する。
＜構成＞
図９は、実施の形態３に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【００８１】
図９に示す並列実行プロセッサ３００の構成は実施の形態２で説明した配属部２５０に代えて配属部３５０を設けたものである。並列実行プロセッサ２００と同様の構成要素には同一の符号を付し、それらの説明を省略する。
配属部３５０は、ＰＥ１３０ａ〜ＰＥ１３０ｄのＰＥ毎にいずれのグループに配属されるべきかを示す配属情報をＣＰＵ１から入手して、それに応じてＰＥ１３０ａ〜ＰＥ１３０ｄを第１グループと第２グループとに配属させる。制御信号出力部１２１ａ、１２１ｂからの各制御信号は、それぞれ第１グループのＰＥと第２グループのＰＥとに送られる。
【００８２】
図１０は、配属部３５０の内部構成を示す図である。
配属部３５０は、制御信号入力部３５１ａ、３５１ｂ、配属情報入手部３５３、配属制御部３５４を備える。また、配属制御部３５４は、制御信号出力部３５５ａ〜３５５ｄを備える。
制御信号入力部３５１ａは、制御信号出力部１２１ａと接続されている。また、制御信号入力部３５１ｂは、制御信号出力部１２１ｂと接続されている。
【００８３】
配属制御部３５４内部の制御信号出力部３５５ａ〜３５５ｄは、ＰＥ１３０ａ〜ＰＥ１３０ｄとそれぞれ接続されている。
配属情報入手部３５３は、ＰＥ１３０ａ〜ＰＥ１３０ｄのＰＥ毎にいずれのグループに配属されるべきかを示す配属情報をＣＰＵ１から入手する。
図１１は、配属情報入手部３５３が入手する配属情報の例を示す図である。
【００８４】
配属情報は、４ビットの情報であり、第１ビットとＰＥ１３０ａ、第２ビットとＰＥ１３０ｂ、第３ビットとＰＥ１３０ｃ、第４ビットとＰＥ１３０ｄがそれぞれ対応している。また、ビット値「０ｂ０」は、第１グループに配属されることを意味し、ビット値「０ｂ１」は、第２グループに配属されることを意味する。
図１１（ａ）は、ＰＥ１３０ａ、１３０ｃが第１グループに、ＰＥ１３０ｂ、１３０ｄが第２グループに配属される場合の配属情報を示している。
【００８５】
図１１（ｂ）は、ＰＥ１３０ａ、１３０ｂが第１グループに、ＰＥ１３０ｃ、１３０ｄが第２グループに配属される場合の配属情報を示している。
配属制御部３５４は、配属情報入手部３５３により入手された配属情報を受け取り、各ＰＥのグループの配属先を決定する。
これにより、並列実行プロセッサ３００は、２つの異なる命令をＰＥ１３０ａ〜ＰＥ１３０ｄに実行させる場合に、配属情報に応じてＰＥ１３０ａ〜ＰＥ１３０ｄからグループを構成してそれぞれのグループで異なる命令を実行させることができる。
【００８６】
また、制御信号出力部１２１ａ及び１２１ｂから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Ｉｄｌｅ」指示であれば、「Ｉｄｌｅ」指示が割り当てられる２個のＰＥは動作を停止する。
この際に、配属情報が「０ｂ０１０１」であれば、動作を停止したＰＥが交互に配列されることになる。
【００８７】
＜動作＞
次に、上述のように構成された並列実行プロセッサ３００の動作について説明する。
図１２は、実施の形態３に係る並列実行プロセッサ３００の動作の流れを示す図である。
ステップＳ３０１：命令フェッチ部１１０が命令データをフェッチする。
【００８８】
ステップＳ３０２：命令デコード部１２０は、命令フェッチ部１１０がフェッチした命令データから各配置形式「０ｂ００」、「０ｂ０１」、「０ｂ１０」、「０ｂ１１」に基づいて制御信号を生成する。
ステップＳ３０３：命令デコード部１２０は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部１２２ａ〜１２２ｄのうちの１つを選択する。
【００８９】
ステップＳ３０４：ステップＳ３０３において配置形式が「０ｂ００」の場合、命令デコード部１２０は、命令データから単一の命令を抽出し、解読して、１つの制御信号を生成する。生成された制御信号は、制御信号出力部１２１ａ、１２１ｂから並列に出力される。ＰＥ１３０ａ〜１３０ｄは、出力された制御信号に従って同一の演算を並列に実行する。
【００９０】
ステップＳ３０５：ステップＳ３０３において配置形式が「０ｂ０１」、「０ｂ１０」、又は「０ｂ１１」の場合、配属部３５０は、ＣＰＵ１から配属情報を入手し、配属情報に基づいてＰＥ１３０ａ〜１３０ｄを第１グループと第２グループとに配属する。
命令デコード部１２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。
【００９１】
ステップＳ３０６：第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
ステップＳ３０７：ステップＳ３０６において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ３０６：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
【００９２】
ステップＳ３０８：ステップＳ３０６において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ３０６：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ３００は、グループの構成方法を予め定められた中から選択するのではなく、ＰＥ毎にどちらのグループに配属させるかを決定する。
【００９３】
このように、ＰＥ毎に配属先を決定することにより、きめ細かいグループ構成が可能となり、並列実行プロセッサの利用効率の向上をさらに図ることができる。
なお、実施の形態３では、配属情報を１つの制御信号出力部に対して１ビットを割り当てているが、これ以外の割り当て方でも構わない。
（実施の形態４）
＜概要＞
実施の形態２に係る並列実行プロセッサは、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、そのグループの構成方法を示す配属情報を、ＣＰＵ１から入手している。本発明の実施の形態４に係る並列実行プロセッサは、配属情報を命令データ中から入手する。
【００９４】
以下に、実施の形態３に係る並列実行プロセッサについて詳細に説明する。
＜構成＞
図１３は、実施の形態４に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図１３に示す並列実行プロセッサ４００の構成は実施の形態２の並列実行プロセッサ２００の命令デコード部１２０に代えて命令デコード部４２０を設けたものである。並列実行プロセッサ２００と同様の構成要素には同一の符号を付し、それらの説明を省略する。
【００９５】
命令デコード部４２０は、実施の形態２における命令デコード部１２０の機能に加えて、配属部２５０に配属情報を与える機能を有する。この配属情報は、命令フェッチ部１１０がフェッチする命令データに含まれている。以下に実施の形態４に係る命令データについて説明する。
図１４は、実施の形態４に係る命令データのデータ構造を示す図である。
【００９６】
図１４（ａ）は、配置形式が「０ｂ００」の場合の命令データのデータ構造を示す図である。
当該命令データは、図２（ａ）の命令データとデータ構造が同一であり、配属情報を含まない。これは、全てのＰＥに単一の命令を実行させる場合には、ＰＥの配属について考慮する必要がないからである。
【００９７】
図１４（ｂ）は、配置形式が「０ｂ０１」の場合の命令データのデータ構造を示す図である。
当該命令データは、２ビットの配属情報ｂ５を含む。配属情報としては、図７に示す「０ｂ００」又は「０ｂ０１」のいずれかがセットされる。なお、配属情報ｂ５に２ビットが割り当てられるので、オペランドｂ２、ｂ４は、図２（ｂ）に比べてそれぞれ１ビットずつ短い。
【００９８】
図１４（ｃ）は、配置形式が「０ｂ１０」の場合の命令データのデータ構造を示す図である。
当該命令データは、２ビットの配属情報ｃ４を含む。配属情報としては、図７に示す「０ｂ００」又は「０ｂ０１」のいずれかがセットされる。なお、配属情報ｃ４に２ビットが割り当てられるので、オペランドｃ３は、図２（ｃ）に比べて２ビットだけ短い。
【００９９】
図１４（ｄ）は、配置形式が「０ｂ１１」の場合の命令データのデータ構造を示す図である。
当該命令データは、２ビットの配属情報ｄ４を含む。配属情報としては、図７に示す「０ｂ００」又は「０ｂ０１」のいずれかがセットされる。なお、配属情報ｄ４に２ビットが割り当てられるので、オペランドｄ２、ｄ３は、図２（ｄ）に比べて１ビットずつ短い。
【０１００】
図１５は、命令デコード部４２０の内部構造を示す図である。
命令デコード部４２０は、解読部４２２ａ、４２２ｂ、４２２ｃ、４２２ｄ、制御信号出力部１２１ａ、１２１ｂ、及び、配属情報出力部４２３を備える。
命令デコード部４２０が制御信号を出力する機能については、実施の形態２における命令デコード部１２０と同様なので、ここでは、配属部２５０に配属情報を与える機能のみを説明する。
【０１０１】
解読部４２２ｂ、４２２ｃ、４２２ｄは、それぞれ図１４（ｂ）、図１４（ｃ）、図１４（ｄ）に示されるデータ構造に専用の解読部であり、データフィールドから配属情報を抽出して配属情報出力部４２３に送る。
配属情報出力部４２３は、入力端子ａ、ｂ、ｃに入力された配属情報のいずれかを、フォーマットフィールドの２ビットに基づいて選択的に出力する。出力された配属情報は、配属部２５０に送られる。
【０１０２】
これにより、命令デコード部４２０は、命令データに含まれる配属情報を抽出して配属部２５０に出力することができる。
＜動作＞
次に、上述のように構成された並列実行プロセッサ４００の動作について説明する。
図１６、及び図１７は、実施の形態４に係る並列実行プロセッサ４００の動作の流れを示す図である。
【０１０３】
ステップＳ４０１：命令フェッチ部１１０が命令データをフェッチする。
ステップＳ４０２：命令デコード部４２０は、命令フェッチ部１１０がフェッチした命令データから各配置形式「０ｂ００」、「０ｂ０１」、「０ｂ１０」、「０ｂ１１」に基づいて制御信号を生成する。
ステップＳ４０３：命令デコード部４２０は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部４２２ａ〜４２２ｄのうちの１つを選択する。
【０１０４】
ステップＳ４０４：ステップＳ４０３において配置形式が「０ｂ００」の場合、命令デコード部４２０は、命令データから単一の命令を抽出し、解読して、１つの制御信号を生成する。生成された制御信号は、制御信号出力部１２１ａ、１２１ｂから並列に出力される。ＰＥ１３０ａ〜１３０ｄは、出力された制御信号に従って同一の演算を並列に実行する。
【０１０５】
ステップＳ４０５：ステップＳ４０３において配置形式が「０ｂ０１」、「０ｂ１０」、又は「０ｂ１１」の場合、命令デコード部４２０は、命令データから配属情報を抽出する。
ステップＳ４０６：命令デコード部４２０は、配属情報が「０ｂ００」であれば、配属部２５０に配属情報「０ｂ００」を出力する。
【０１０６】
ステップＳ４０７：命令デコード部４２０は、配属情報が「０ｂ０１」であれば、配属部２５０に配属情報「０ｂ０１」を出力する。
ステップＳ４０８：配属部２５０は、命令デコード部４２０から配属情報を入手する。
ステップＳ４０９：配属部２５０は、入手した配属情報が「０ｂ００」であれば、組み合わせＡを選択する。
【０１０７】
命令デコード部４２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。
ステップＳ４１０：組み合わせＡによる第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
【０１０８】
ステップＳ４１１：ステップＳ４１０において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ４１０：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
ステップＳ４１２：ステップＳ４１０において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ４１０：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
【０１０９】
ステップＳ４１３：配属部２５０は、入手した配属情報が「０ｂ０１」であれば、組み合わせＢを選択する。
命令デコード部４２０は、命令データから２つの命令を抽出し、解読して、２つの制御信号を生成する。生成された２つの制御信号は、それぞれ制御信号出力部１２１ａ、１２１ｂから別々に出力される。
【０１１０】
ステップＳ４１４：組み合わせＢによる第１グループのＰＥと、第２グループのＰＥとは、それぞれ制御信号を受けて、「Ｉｄｌｅ」指示であるか否か判定する。
ステップＳ４１５：ステップＳ４１４において第１グループのＰＥと、第２グループのＰＥとのいずれかが「Ｉｄｌｅ」指示を受けた場合（Ｓ４１４：Ｙｅｓ）、「Ｉｄｌｅ」指示を受けたグループのＰＥは、動作を停止し、「Ｉｄｌｅ」指示を受けていないグループのＰＥのみが１つの演算を並列に実行する。
【０１１１】
ステップＳ４１６：ステップＳ４１４において第１グループのＰＥと、第２グループのＰＥとのいずれも「Ｉｄｌｅ」指示を受けていない場合、（Ｓ４１４：Ｎｏ）、第１グループのＰＥと第２グループのＰＥとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ４００は、ＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。
【０１１２】
このように、グループの構成方法を動的に選択可能とすることにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
なお、本実施の形態で説明した命令データは、単なる一例であり、他のデータ構造としてもよい。例えば、命令データに２つのオペコードと１つのオペランドとが含まれる場合、図１４（ｃ）ではなく図１４（ｅ）のようにしてもよい。図１４（ｅ）は、オペランドに分配されるビット数を削減し、オペコードに分配されるビット数を増加させたものである。このようにすると、図１４（ｃ）に比べて、オペランドにより指定できるレジスタの本数が削減されるが、その代わり、オペコードできる指定される命令の種類が増加する。
【０１１３】
（実施の形態５）
＜概要＞
実施の形態１に係る並列実行プロセッサは、各ＰＥがそれぞれに対応するレジスタファイルにアクセスする。本発明の実施の形態５に係る並列実行プロセッサは、レジスタファイルが２つで１つの組を形成しており、各ＰＥは、各組内のどちらのレジスタファイルにもアクセス可能としている。
【０１１４】
これにより、並列実行プロセッサ５００は、複素数データの乗算を、その実数データと虚数データとを並び替えずに実行することができる。
以下に、実施の形態５に係る並列実行プロセッサについて詳細に説明する。
＜構成＞
図１８は、実施の形態５に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【０１１５】
図１８に示す並列実行プロセッサ５００の構成は実施の形態１で説明した並列実行プロセッサ１００に切替部５６０ａ、５６０ｂを加えたものである。並列実行プロセッサ１００と同様の構成要素には同一の符号を付し、それらの説明を省略する。
切替部５６０ａ、５６０ｂは、各ＰＥのアクセス先となるレジスタファイルを切り替える。これにより、例えば、ＰＥ１３０ａは、レジスタファイル１４０ａだけでなく、レジスタファイル１４０ｂにもアクセスすることができる。また、ＰＥ１３０ｂは、レジスタファイル１４０ｂだけでなく、レジスタファイル１４０ａにもアクセスすることができる。
【０１１６】
図１９は、ＰＥ１３０ａ、１３０ｂ、切替部５６０ａの内部構造を示す図である。なお、レジスタファイル１４０ａ、１４０ｂは、ｒ０〜ｒ３の４本のレジスタからなるものとしている。
ＰＥ１３０ａ、１３０ｂは、それぞれ制御信号出力部１２１ａ、１２１ｂからの制御信号に従って動作する。制御信号は、ＰＥ内部の演算器、データパスを制御する信号である。図１９に示すＰＥには、演算器として、乗算器（ＭＵＬ１３１ａ、１３１ｂ）、算術論理演算器（ＡＬＵ１３２ａ、１３２ｂ）が含まれる。また、データパスの制御とは、アクセスするべきレジスタ番号の指定、アクセスするべきレジスタファイルの指定、データを入力するべき演算器の指定が含まれる。ここで、レジスタ番号の指定は、レジスタ指定信号Ｓ１１によりなされる。また、レジスタファイルの指定は、切替信号Ｓ１２ａ、Ｓ１２ｂによりなされる。
【０１１７】
切替部５６０ａは、内部にセレクタ５６１ａ、５６１ｂを備える。
セレクタ５６１ａは、切替信号Ｓ１２ａによりＰＥ１３０ａのアクセス先としてレジスタファイル１４０ａとレジスタファイル１４０ｂとを切り替える。具体的には、切替信号Ｓ１２ａが「０ｂ０」であれば、レジスタファイル１４０ａが選択される。また、切替信号Ｓ１２ａが「０ｂ１」であれば、レジスタファイル１４０ｂが選択される。セレクタ５６１ｂについても同様なので説明を省略する。
【０１１８】
上記構成により、ＰＥ１３０ａ、１３０ｂは、レジスタファイル１４０ａ、１４０ｂのいずれにもアクセスすることができる。例えば、ＰＥ１３０ａがレジスタファイル１４０ｂのレジスタｒ１に格納されているデータ（ｓ0）を入手する場合、レジスタ指定信号Ｓ１１によりレジスタｒ１を指定し、切替信号Ｓ１２ａには「０ｂ１」を与える。これにより、ＰＥ１３０ａはデータ（ｓ0）を入手することができる。
【０１１９】
マルチメディアデータ処理では、複素数データの乗算を頻繁に行う場合がある。並列実行プロセッサ５００は、複素数データの乗算を並列に実行するプロセッサとして最適な仕様である。以下に詳細に説明する。
図２０は、メモリ２及びレジスタファイル１４０ａ〜１４０ｄ内に複素数データが格納されている様子を示す図である。
【０１２０】
演算対象となる複素数データは、
ｚk＝ｘk＋ｉｙk
ｗk＝ｃk＋ｉｓk
であるとする。並列実行プロセッサ５００は、複素数データの乗算ｚk×ｗkを２並列に実行することができる。ここで、「ｉ」は虚数単位であり、「ｋ」は０以上の整数である。また、ｘkとｃkとが実数データ、ｙkとｓkとが虚数データである。
【０１２１】
図２０（ａ）は、メモリ２の内容を示す。
一般的にメモリ２には、実数データと虚数データとが交互に配列されて格納されている。例えば、アドレス「０ｘ０１００」には、｛ｘ0、ｙ0、ｘ1、ｙ1｝、また、アドレス「０ｘ０２００」には、｛ｃ0、ｓ0、ｃ1、ｓ1｝が格納されている。
図２０（ｂ）は、ロード命令後のレジスタファイル１４０ａ〜１４０ｄの内容を示す。
【０１２２】
並列実行プロセッサ５００は、命令をフェッチして、その命令がロード命令であれば、メモリ２から複素数データをレジスタファイル１４０ａ〜１４０ｄにロードする。ロード命令には、複素数データの入手先となるメモリ２のアドレスが指定されている。ここでは、入手先として、アドレス「０ｘ０１００」と「０ｘ０２００」とが指定されている。なお、並列実行プロセッサ５００は、ロードの際に、複素数データの配列を並び替えずにそのまま読み込む。
【０１２３】
複素数データの乗算は、
ｚk×ｗk＝（ｘk×ｃk−ｙk×ｓk）＋ｉ（ｘk×ｓk＋ｙk×ｃk）
＝Ｘk＋ｉＹk
となる。ここで、Ｘkは、乗算結果の実数データ、Ｙkは、乗算結果の虚数データを示す。並列実行プロセッサ５００は、上記のＸkをＰＥ１３０ａ、１３０ｃにより算出し、ＹkをＰＥ１３０ｂ、１３０ｄにより算出する。以下にその手順を示す。
【０１２４】
並列実行プロセッサ５００は、Ｘk、Ｙkを以下の２つのステップにより得る。
ステップ１：ＰＥ１３０ａ、１３０ｃが乗算ｘk×ｃkを行う。これと平行して、ＰＥ１３０ｂ、１３０ｄが乗算ｘk×ｓkを行う。
ステップ２：ＰＥ１３０ａ、１３０ｃが積差演算（乗算ｙk×ｓkを行い、その結果をステップ１の結果から引く）を行う。これと平行してＰＥ１３０ｂ、１３０ｄが積和演算（乗算ｙk×ｃkを行い、その結果をステップ１の結果に足す）を行う。
【０１２５】
これにより、ＰＥ１３０ａ、１３０ｃは、Ｘkを算出することができる。また、ＰＥ１３０ｂ、１３０ｄは、Ｙkを算出することができる。
図２０（ｃ）は、ステップ１の乗算命令後のレジスタファイル１４０ａ〜１４０ｄの内容を示す。
乗算命令の命令データは、図２（ｄ）のデータ構造を有し、オペコードｄ１として「ＭＵＬ」、オペランドｄ２として「ｒ２（０），ｒ０（０），ｒ１（０）」、オペランドｄ３として「ｒ２（０），ｒ０（１），ｒ１（０）」がセットされる。
【０１２６】
オペコード「ＭＵＬ」は、乗算を示す。また、オペランド「ｒ２（０），ｒ０（０），ｒ１（０）」は、レジスタｒ０とレジスタｒ１とがソースレジスタであり、レジスタｒ２がディスティネーションレジスタであることを示す。また、レジスタ番号に付加されているカッコ内の数値は、切替信号Ｓ１２ａ、Ｓ１２ｂの値を示す。
ＰＥ１３０ａ、１３０ｃは、それぞれ、オペコードｄ１とオペランドｄ２とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各ＰＥは、レジスタ番号に従ってレジスタ指定信号Ｓ１１を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号Ｓ１２ａを出力する。
【０１２７】
ＰＥ１３０ｂ、１３０ｄは、それぞれ、オペコードｄ１とオペランドｄ３とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各ＰＥは、レジスタ番号に従ってレジスタ指定信号Ｓ１１を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号Ｓ１２ｂを出力する。
これにより、レジスタファイル１４０ａ、１４０ｃのレジスタｒ２には、ｘk×ｃkの結果が格納され、レジスタファイル１４０ｂ、１４０ｄのレジスタｒ２には、ｘk×ｓkの結果が格納される。
【０１２８】
図２０（ｄ）は、ステップ２の積差・積和命令後のレジスタファイル１４０ａ〜１４０ｄの内容を示す。
積差・積和命令の命令データは、図２（ｂ）のデータ構造を有し、オペコードｂ１として「ＭＳＵ」、オペランドｂ２として「ｒ２（０），ｒ０（１），ｒ１（１）」がセットされる。また、オペコードｂ３として「ＭＡＣ」、オペランドｂ４として「ｒ２（０），ｒ０（０），ｒ１（１）」がセットされる。
【０１２９】
オペコード「ＭＳＵ」は、積差演算を示す。また、オペコード「ＭＡＣ」は、積和演算を示す。
ＰＥ１３０ａ、１３０ｃは、それぞれ、オペコードｂ１とオペランドｂ２とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各ＰＥは、レジスタ番号に従ってレジスタ指定信号Ｓ１１を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号Ｓ１２ａを出力する。
【０１３０】
ＰＥ１３０ｂ、１３０ｄは、それぞれ、オペコードｂ３とオペランドｂ４とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各ＰＥは、レジスタ番号に従ってレジスタ指定信号Ｓ１１を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号Ｓ１２ｂを出力する。
これにより、レジスタファイル１４０ａ、１４０ｃのレジスタｒ２には、（ｘk×ｃk−ｙk×ｓk）の結果であるＸkが格納され、レジスタファイル１４０ｂ、１４０ｄのレジスタｒ２には、（ｘk×ｓk＋ｙk×ｃk）の結果であるＹkが格納される。
【０１３１】
図２１は、乗算命令、及び、積差・積和命令の命令データのデータ構造を示す図である。
図２１（ａ）は、乗算命令の命令データである。
上述のとおり、乗算命令の命令データは、図２（ｄ）のデータ構造を有し、オペコードｄ１として「ＭＵＬ」、オペランドｄ２として「ｒ２（０），ｒ０（０），ｒ１（０）」、オペランドｄ３として「ｒ２（０），ｒ０（１），ｒ１（０）」がセットされる。
【０１３２】
図２１（ｂ）は、積差・積和命令の命令データである。
上述のとおり、積差・積和命令の命令データは、図２（ｂ）のデータ構造を有し、オペコードｂ１として「ＭＳＵ」、オペランドｂ２として「ｒ２（０），ｒ０（１），ｒ１（１）」がセットされる。また、オペコードｂ３として「ＭＡＣ」、オペランドｂ４として「ｒ２（０），ｒ０（０），ｒ１（１）」がセットされる。
【０１３３】
以上のように、並列実行プロセッサ５００は、各レジスタファイルが２つで１つの組を形成しており、各ＰＥは各組内のどちらのレジスタファイルにもアクセス可能としている。
これにより、並列実行プロセッサ５００は、複素数データの乗算を、その実数データと虚数データとを並び替えずに実行することができる。
【０１３４】
なお、上述の複素数データを扱う具体例は、並列実行プロセッサ５００が２つの異なる命令を並列に実行する場合の一例である。したがって、並列実行プロセッサ５００は、単一の命令をフェッチした場合には、全てのＰＥを用いて単一の命令を並列に実行する。例えば、複素数データの加算命令であれば、並列実行プロセッサ５００は、全てのＰＥに加算命令を実行させる。
【０１３５】
なお、並列実行プロセッサ５００は、常にＰＥ１３０ａ、１３０ｃが実数データを扱い、常にＰＥ１３０ｂ、１３０ｄが虚数データを扱う仕様としてもよい。これにより、ＰＥ１３０ａ、１３０ｃは、実数データを扱うための回路しか必要とせず、また、ＰＥ１３０ｂ、１３０ｄは、虚数データを扱うための回路しか必要としない。従って、各ＰＥの回路規模を削減することができる。
【０１３６】
なお、実施の形態５では、各ＰＥは、切替部５６０ａ、５６０ｂにより２個のレジスタファイルにアクセス可能としているが、これに限らない。例えば、各ＰＥが全てのレジスタファイルにアクセス可能としてもよい。また、実施の形態２、実施の形態３と同様に配属部を設けて、各ＰＥのグループへの配属先を変更してもよい。
なお、切替部５６０ａ、５６０ｂは、各ＰＥにより制御されているが、これに限らない。例えば、以下のような例が考えられる。
【０１３７】
各ＰＥがレジスタｒ０、ｒ２を指定する場合は、必ず自己のレジスタファイルにアクセスする。各ＰＥがレジスタｒ１、ｒ３を指定する場合は、必ず他のレジスタファイルにアクセスする。このように、レジスタ番号によりアクセス先が切り替わるようにしてもよい。
なお、全ての実施の形態において、並列実行プロセッサは、ＰＥ１３０ａ〜ＰＥ１３０ｄの４個のＰＥを備えているが、これ以外の数のＰＥを備えてもよい。
【０１３８】
また、並列実行プロセッサは、ＰＥ１３０ａ〜１３０ｄから２つのグループを構成しているが、それ以外の数のグループを構成してもよい。例えば、全てのＰＥが別々のグループとする構成でもよい。
また、各グループのＰＥの数を同数とする必要はない。例えば、第１グループに１個の要素プロセッサ、第２グループに３個の要素プロセッサが配属されてもよい。
【０１３９】
なお、全ての実施の形態では、並列実行プロセッサは、単一の命令の場合と２つの命令の場合とで、グループ構成を切り替える仕様であるが、これに限らない。例えば、本発明の第２の目的、「データの並び替えが不要」のみに着目すれば、並列実行プロセッサは、常にＰＥ１３０ａ〜ＰＥ１３０ｄから一定のグループを構成しており、常に一定数の命令をフェッチする仕様であってもよい。これは、特に、異なる命令の対象となるデータが一定の規則性をもってメモリ２に配列されている場合に有用である。例えば、複素数データであれば、並列実行プロセッサは、常にＰＥ１３０ａ〜ＰＥ１３０ｄから２つのグループを構成しており、常に実数データに対する命令と虚数データに対する命令とをフェッチすることになる。これにより、並列実行プロセッサは、データの並び替えをせずに並列に異なる命令を実行することができる。
【０１４０】
なお、全ての実施の形態では、命令データのフォーマットフィールドに配置形式を記述しているが、これに限らない。例えば、以下のようにしてもよい。
図２２は、命令データのデータ構造を示す図である。
図２２に示す命令データは、フォーマットフィールドがなく、その分のビット数をオペコードやオペランドに分配している。
【０１４１】
図２３は、命令デコード部の内部構造を示す図である。
命令デコード部は、解読部６２２ａ、６２２ｂ、６２２ｃ、６２２ｄと、制御信号出力部１２１ａ、１２１ｂと制御レジスタ６２３を備える。
解読部６２２ａは、図２２（ａ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に１４ビットをオペコード、１８ビットをオペランドとして解読し、１つの制御信号を生成する。
【０１４２】
生成された制御信号は、制御信号出力部１２１ａ、１２１ｂに送られる。
解読部６２２ｂは、図２２（ｂ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に７ビットをオペコード、９ビットをオペランド、７ビットをオペコード、９ビットをオペランドとして解読し、２つの制御信号を生成する。
ここで、オペコードｂ１とオペランドｂ２とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｂ３とオペランドｂ４とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
【０１４３】
解読部６２２ｃは、図２２（ｃ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に７ビットをオペコード、７ビットをオペコード、１８ビットをオペランドとして解読し、２つの制御信号を生成する。
ここで、オペコードｃ１とオペランドｃ３とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｃ２とオペランドｃ３とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
【０１４４】
解読部６２２ｄは、図２２（ｄ）に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に１４ビットをオペコード、９ビットをオペランド、９ビットをオペランドとして解読し、２つの制御信号を生成する。
ここで、オペコードｄ１とオペランドｄ２とから生成された制御信号は、制御信号出力部１２１ａに送られる。また、オペコードｄ１とオペランドｄ３とから生成された制御信号は、制御信号出力部１２１ｂに送られる。
【０１４５】
制御レジスタ６２３は、図２に示されるフォーマットフィールドに記述されている配置形式と同様の配置形式を保持している。この配置形式は、制御レジスタ設定命令により設定される。制御レジスタ設定命令は、図２２（ａ）のデータ構造を有し、解読部６２２ａにより解読され、設定される。
制御信号出力部１２１ａ、１２１ｂは、入力端子ａ、ｂ、ｃ、ｄに入力された制御信号のいずれかを、制御レジスタ６２３の配置形式の２ビットに基づいて選択的に出力する。
以上のように、命令データがフォーマットフィールドを含まなければ、その分のビット数がオペコードやオペランドに分配される。これにより、制御レジスタ型は、フォーマットフィールド型に比べて、命令データが指定できる命令の種類や、レジスタの本数を増加させることができる。
【０１４６】
ただし、制御レジスタ型は、制御レジスタ６２３の内容を変更する際に、制御レジスタ設定命令を要する。したがって、グループ構成のパターンを変更する頻度によりフォーマットフィールド型と制御レジスタ型とを選択するのが望ましい。
また、フォーマットフィールド型と制御レジスタ型とを併用してもよい。
【産業上の利用可能性】
【０１４７】
本発明に係る並列実行プロセッサは、マルチメディアデータ処理を施すコンピュータに適用することができる。
【図面の簡単な説明】
【０１４８】
【図１】本発明の実施の形態１に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【図２】命令フェッチ部１１０がフェッチする命令データのデータ構造を示す図である。
【図３】命令デコード部１２０の内部構造を示す図である。
【図４】実施の形態１に係る並列実行プロセッサ１００の動作の流れを示す図である。
【図５】実施の形態２に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【図６】配属部２５０の内部構成を示す図である。
【図７】組み合わせ保持部２５２が保持する２組の組み合わせを示す図である。
【図８】実施の形態２に係る並列実行プロセッサ２００の動作の流れを示す図である。
【図９】実施の形態３に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【図１０】配属部３５０の内部構成を示す図である。
【図１１】配属情報入手部３５３が入手する配属情報の例を示す図である。
【図１２】実施の形態３に係る並列実行プロセッサ３００の動作の流れを示す図である。
【図１３】実施の形態４に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【図１４】実施の形態４に係る命令データのデータ構造を示す図である。
【図１５】命令デコード部４２０の内部構造を示す図である。
【図１６】実施の形態４に係る並列実行プロセッサ４００の動作の流れを示す図である。
【図１７】実施の形態４に係る並列実行プロセッサ４００の動作の流れを示す図である。
【図１８】実施の形態５に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
【図１９】ＰＥ１３０ａ、１３０ｂ、切替部５６０ａの内部構造を示す図である。
【図２０】メモリ２及びレジスタファイル１４０ａ〜１４０ｄ内に複素数データが格納されている状態を示す図である。
【図２１】複素数乗算命令、及び、積差・積和命令の命令データのデータ構造を示す図である。
【図２２】命令データのデータ構造を示す図である。
【図２３】命令デコード部の内部構造を示す図である。
【符号の説明】
【０１４９】
１    ＣＰＵ
２    メモリ
１００    並列実行プロセッサ
１１０    命令フェッチ部
１２０    命令デコード部
１２１ａ、１２１ｂ  制御信号出力部
１２２ａ、１２２ｂ、１２２ｃ、１２２ｄ  解読部
１３０ａ、１３０ｂ、１３０ｃ、１３０ｄ  ＰＥ
１４０ａ、１４０ｂ、１４０ｃ、１４０ｄ  レジスタファイル
２５０、３５０    配属部
５６０ａ、５６０ｂ  切替部
【図１】
2004171530.tif 000003
【図２】
2004171530.tif 000004
【図３】
2004171530.tif 000005
【図４】
2004171530.tif 000006
【図５】
2004171530.tif 000007
【図６】
2004171530.tif 000008
【図７】
2004171530.tif 000009
【図８】
2004171530.tif 000010
【図９】
2004171530.tif 000011
【図１０】
2004171530.tif 000012
【図１１】
2004171530.tif 000013
【図１２】
2004171530.tif 000014
【図１３】
2004171530.tif 000015
【図１４】
2004171530.tif 000016
【図１５】
2004171530.tif 000017
【図１６】
2004171530.tif 000018
【図１７】
2004171530.tif 000019
【図１８】
2004171530.tif 000020
【図１９】
2004171530.tif 000021
【図２０】
2004171530.tif 000022
【図２１】
2004171530.tif 000023
【図２２】
2004171530.tif 000024
【図２３】
2004171530.tif 000025