(57)【要約】【課題】クリティカルパスによって動作速度を制限されることなく、所定の条件を満たすデータを効率的に収集することができる。【解決手段】演算命令に基づいて並列に動作する複数のＰＥ（プロセッシングエレメント）と、複数のＰＥのデータを収集する情報収集部とを有するプロセッサであって、複数のＰＥのそれぞれは、データと条件フラグとを保持し、演算命令を受け付けると、データ及び条件フラグを情報収集部へ出力し、条件フラグを更新させるための更新要求を受け付けると、受け付けた更新要求に応じて条件フラグを更新し、情報収集部は、データ及び条件フラグを受け付けると、受け付けた条件フラグがアクティブであるＰＥの中から、所定の優先順位に基づいて１つのＰＥを選択し、選択されたＰＥのデータを収集結果データとして出力するとともに、選択されたＰＥの条件フラグを更新させるための更新要求を出力する。【選択図】図１
2010191696.tif 000002
【特許請求の範囲】
【請求項１】
演算命令に基づいて並列に動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサであって、
前記複数のプロセッシングエレメントのそれぞれは、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力し、その後、前記条件フラグを非アクティブに更新させるための更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新し、
前記情報収集部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付けると、該受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択し、該選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力するプロセッサ。
【請求項２】
請求項１に記載のプロセッサにおいて、
前記情報収集部は、
前記選択されたプロセッシングエレメントを示す選択結果を記憶し、該記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成して出力する第１の選択結果保存部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第１の選択結果保存部から出力された前記条件フラグ修正情報に応じて修正し、該修正された修正済条件フラグを出力する第１の条件フラグ修正部と、
前記第１の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメント示す前記選択結果を出力する第１の条件フラグ選択部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第１の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記データを前記収集結果データとして出力する第１のデータ選択部と、
前記第１の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力する条件フラグ更新部と、を有し、
前記第１の選択結果保存部は、前記第１の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果を記憶するプロセッサ。
【請求項３】
請求項２に記載のプロセッサにおいて、
前記第１の選択結果保存部は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶し、前記記憶された選択結果の論理和を前記条件フラグ修正情報とするプロセッサ。
【請求項４】
請求項２または請求項３に記載のプロセッサにおいて、
前記第１の条件フラグ修正部は、前記受け付けた条件フラグと、前記第１の選択結果保存部から出力された前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとするプロセッサ。
【請求項５】
請求項１に記載のプロセッサにおいて、
前記情報収集部は、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグに応じ、前記複数のプロセッシングエレメントのうちアクティブである条件フラグを有するプロセッシングエレメントの合計値を算出し、該算出された合計値を記憶するカウント制御部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた条件フラグに応じ、前記条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメントを示す選択結果を出力する第２の条件フラグ選択部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第２の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記データを前記収集結果データとして出力する第２のデータ選択部と、を有し、
前記カウント制御部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付けると、前記合計値に応じ、前記条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力するとともに、前記選択されたプロセッシングエレメントに相当する前記合計値を１つ減算するプロセッサ。
【請求項６】
請求項１に記載のプロセッサにおいて、
前記情報収集部は、
前記選択されたプロセッシングエレメントを示す選択結果を記憶する第２の選択結果保存部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第２の選択結果保存部に記憶された選択結果に応じて修正し、該修正された修正済条件フラグを出力する第２の条件フラグ修正部と、
前記第２の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメントを示す前記選択結果を出力する第３の条件フラグ選択部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第３の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示す前記プロセッシングエレメントの前記データを収集結果データとして出力する第３のデータ選択部と、を有し、
前記第２の選択結果保存部は、前記条件フラグ選択部から出力された前記選択結果を受け付け、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶するプロセッサ。
【請求項７】
請求項６に記載のプロセッサにおいて、
前記情報収集部は、前記複数のプロセッシングエレメントから出力された前記条件フラグを受け付ける条件フラグ検知部を有し、
前記条件フラグ検知部は、前記条件フラグを更新するために必要な遅延クロックサイクル数が１クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知し、
前記第２の選択結果保存部は、前記条件フラグ検知部にて検知された結果に応じて前記更新要求を出力するプロセッサ。
【請求項８】
データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、演算命令に基づいて並列して動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサにおけるデータ収集方法であって、
前記複数のプロセッシングエレメントのそれぞれが、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力する処理と、
前記情報収集部が、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付ける処理と、
前記情報収集部が、前記受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択する選択処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントのデータを収集結果データとして出力する処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための更新要求を出力する更新要求出力処理と、
前記プロセッシングエレメントのそれぞれが、前記更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新する処理と、を有するデータ収集方法。
【請求項９】
請求項８に記載のデータ収集方法において、
前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する記憶処理をさらに有し、
前記選択処理は、
前記記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成する修正情報生成処理と、
前記受け付けた条件フラグを、前記条件フラグ修正情報に応じて修正した修正済条件フラグを生成する修正済条件フラグ生成処理と、
前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択する処理と、を含むデータ収集方法。
【請求項１０】
請求項９に記載のデータ収集方法において、
前記記憶処理は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶する処理であり、
前記修正情報生成処理は、前記記憶された選択結果の論理和を前記条件フラグ修正情報とする処理であるデータ収集方法。
【請求項１１】
請求項９または請求項１０に記載のデータ収集方法において、
前記修正済フラグ生成処理は、前記受け付けた条件フラグと前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとする処理であるデータ収集方法。
【請求項１２】
請求項８に記載のデータ収集方法において、
前記情報収集部が、前記受け付けた条件フラグに応じ、前記複数のプロセッシングエレメントのうちアクティブである条件フラグを有するプロセッシングエレメントの合計値を算出し、該算出された合計値を記憶する処理をさらに有し、
前記更新要求出力処理は、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力すると、前記選択されたプロセッシングエレメントに相当する前記合計値を１つ減算する処理をさらに含むデータ収集方法。
【請求項１３】
請求項８に記載のデータ収集方法において、
前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する処理をさらに有し、
前記選択処理は、
前記記憶された選択結果に応じ、前記受け付けた前記条件フラグを修正した修正済条件フラグを生成する処理と、
前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択する処理と、を含み、
前記更新要求出力処理は、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶する処理をさらに含むデータ収集方法。
【請求項１４】
請求項１３に記載のデータ収集方法において、
前記情報収集部が、前記条件フラグを更新するために必要な遅延クロックサイクル数が１クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知する処理をさらに有し、
前記更新要求出力処理は、前記検知された結果に応じて前記更新要求を出力する処理をさらに含むデータ収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列動作を行うプロセッシングエレメントを有するプロセッサ及びデータ収集方法に関する。
【背景技術】
【０００２】
近年、安全及び防犯への意識の高まりに伴い、様々な場所に安全・防犯用のカメラが設置されるようになってきている。そして、その安全・防犯用のカメラが撮影した画像に対して画像処理を施すことにより、自動車事故の回避やオフィスの入退場管理等が実現され始めている。このような画像処理では、短時間で多くの計算を行う必要がある。そのため、画像処理を行う装置には多数のデータを高速に処理することが可能な並列処理プロセッサが用いられている。なお、並列処理プロセッサとは、単一の演算命令で複数のデータを扱うことのできるプロセッサのことである。
【０００３】
この並列処理プロセッサの１つとして、単一の演算命令に基づいて多数のプロセッシングエレメントが並列して動作するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）アレイ型プロセッサが開発されている。以降、プロセッシングエレメントのことをＰＥと表記する。このＳＩＭＤアレイ型プロセッサでは、多数のＰＥを並列して動作させることにより、高性能かつ低消費電力な処理を実現することができる。
【０００４】
ここで、処理を行った結果、所定の条件を満たしたデータを処理結果として有するＰＥから、その所定の条件を満たすデータを収集するアルゴリズムが存在する。例えば、パターンマッチング処理等では、異なる画像に対するマッチングをＰＥ毎に並列して行い、マッチしたＰＥのデータのみを収集する。なお、所定の条件を満たすデータを有するＰＥかどうかは、ＰＥの条件フラグによって判定される。条件フラグとは例えば、１ビットで表され、ＰＥが有するデータに応じ、そのデータが所定の条件を満たしていれば「１」を示し、所定の条件を満たしていなければ「０」を示すフラグのことである。以降、ビットが「１」であることをアクティブであるといい、ビットが「０」であることを非アクティブであるという。
【０００５】
ＳＩＭＤアレイ型プロセッサでは，全てのＰＥからデータ及び条件フラグを収集し、収集した条件フラグを順次判定することにより、収集したデータを収集結果データとして利用するかどうかを決定する。
【０００６】
しかし、このような方法では、所定の条件を満たさないデータを収集する必要があるとともに、条件フラグをＰＥ毎に順次判定する必要がある。そのため、所定の条件を満たすデータを収集するためのクロックサイクル数が膨大な数になる。
【０００７】
そこで、所定の条件を満たすデータだけをＰＥ毎に付与されているＰＥ番号の小さなＰＥまたは大きなＰＥから順番に収集するＳＩＭＤアレイ型プロセッサが例えば、特許文献１に開示されている。
【０００８】
図１５は、所定の条件を満たすデータだけをＰＥ番号の小さなＰＥまたは大きなＰＥから順番に収集するＳＩＭＤアレイ型プロセッサの構成の一例を示す図である。
【０００９】
図１５に示すＳＩＭＤアレイ型プロセッサは、ＰＥ３００−１〜３００−ｎと、セントラルプロセッサ４００とを備えている。
【００１０】
ＰＥ３００−１〜３００−ｎのそれぞれは、セントラルプロセッサ４００から供給される命令を処理する汎用レジスタ３０１と、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）群３０２と、条件フラグを記憶するＦレジスタ３０３と、比較器３０４と、を備えている。なお、ＡＬＵとは、四則演算や論理演算等の算術的な処理を行う回路のことである。
【００１１】
比較器３０４は、セントラルプロセッサ４００のレジスタ４０４から出力されるＰＥ番号と自身のＰＥ番号とを比較する。
【００１２】
セントラルプロセッサ４００は、ＰＥ３００−１〜３００−ｎへの命令の供給と、ＳＩＭＤアレイ型プロセッサ全体の制御とを行う。セントラルプロセッサ４００は、命令を処理する汎用レジスタ４０１と、ＡＬＵ群４０２と、プライオリティエンコーダ４０３と、レジスタ４０４，４０５とを備えている。
【００１３】
プライオリティエンコーダ４０３は、所定の優先順位に基づいてＰＥ３００−１〜３００−ｎの条件フラグを確認し、条件フラグがアクティブであるＰＥを示すＰＥ番号を１つずつ選択し、レジスタ４０４に記憶させる。
【００１４】
レジスタ４０４は、プライオリティエンコーダ４０３が選択したＰＥ番号を記憶する。そして、記憶したＰＥ番号をＰＥ３００−１〜３００−ｎへ出力する。
【００１５】
レジスタ４０５は、ＰＥ３００−１〜３００−ｎから出力されたデータを記憶する。
【００１６】
上述した特許文献１に開示されているＳＩＭＤアレイ型プロセッサでは、以下の（１）〜（７）に示す手順で所定の条件を満たすデータを収集する。
【００１７】
（１）ＰＥ３００−１〜３００−ｎのＦレジスタ３０３に格納されている条件フラグがセントラルプロセッサ４００のプライオリティエンコーダ４０３に入力される。
【００１８】
（２）プライオリティエンコーダ４０３は、所定の優先順位に基づいてＰＥ３００−１〜３００−ｎの条件フラグからアクティブである１つの条件フラグを選択する。
【００１９】
（３）選択された条件フラグに対応するＰＥ３００−１〜３００−ｎのＰＥ番号をレジスタ４０４に記憶させる。
【００２０】
（４）ＰＥ指定パス３５０を用い、上記（３）で記憶されたＰＥ番号を全てのＰＥ３００−１〜３００−ｎへブロードキャストする。
【００２１】
（５）ＰＥ３００−１〜３００−ｎのそれぞれにおいて、ブロードキャストされたＰＥ番号と自身のＰＥ番号とを比較する。
【００２２】
（６）ブロードキャストされたＰＥ番号と自身のＰＥ番号とが一致したＰＥのみが条件フラグを非アクティブに更新する。そして、そのＰＥは、汎用レジスタ３０１のデータをデータ収集パス４５０を介してレジスタ４０５へ出力する。
【００２３】
（７）データ収集パス４５０を介してＰＥから出力されたデータがレジスタ４０５に記憶される。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２００８−７１０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【００２５】
上述した特許文献１に開示されているＳＩＭＤアレイ型プロセッサを用いることにより、所定の条件を満たすデータだけを収集することができる。
【００２６】
特許文献１に開示されている方法では上記（３）で示したように、処理の途中の結果であるＰＥ番号を一旦レジスタ４０４に格納している。そのため、上記（１）〜（７）の処理を実行するのに少なくとも２クロックサイクルが必要となる。さらに、通常、条件フラグを更新するためには少なくとも１クロックサイクルの遅延が発生する。
【００２７】
これらにより、所定の条件を満たすデータの収集を連続して行うことができないという問題点がある。
【００２８】
また、セントラルプロセッサ４００のレジスタ４０４からＰＥ番号が出力されてから、ＰＥ３００−１〜３００−ｎにおけるＰＥ番号の比較を経て、セントラルプロセッサ４００のレジスタ４０５にデータが記憶されるまでの経路は非常に長い。そのため、この経路がクリティカルパスとなり、このクリティカルパスによってプロセッサ全体の動作速度が制限されてしまうという問題点がある。なお、クリティカルパスとは、信号の伝送遅延が最も大きな経路のことである。プロセッサの性能は、クリティカルパスに沿った命令を実行する時間によって制限される。
【００２９】
本発明は、クリティカルパスによって動作速度を制限されることなく、所定の条件を満たすデータを効率的に収集することができるプロセッサ及びデータ収集方法を提供することを目的とする。
【課題を解決するための手段】
【００３０】
上記目的を達成するために本発明は、
演算命令に基づいて並列に動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサであって、
前記複数のプロセッシングエレメントのそれぞれは、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力し、その後、前記条件フラグを非アクティブに更新させるための更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新し、
前記情報収集部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付けると、該受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択し、該選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力する。
【００３１】
また、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、演算命令に基づいて並列して動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサにおけるデータ収集方法であって、
前記複数のプロセッシングエレメントのそれぞれが、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力する処理と、
前記情報収集部が、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付ける処理と、
前記情報収集部が、前記受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択する選択処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントのデータを収集結果データとして出力する処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための更新要求を出力する更新要求出力処理と、
前記プロセッシングエレメントのそれぞれが、前記更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新する処理と、を有する。
【発明の効果】
【００３２】
本発明によれば、複数のプロセッシングエレメントのそれぞれは、データ及び条件フラグを情報収集部へ出力し、その後、条件フラグを非アクティブに更新させるための更新要求を受け付けると、受け付けた更新要求に応じて条件フラグを非アクティブに更新する。情報収集部は、複数のプロセッシングエレメントのそれぞれから出力されたデータ及び条件フラグを受け付けると、受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択し、選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求を出力する。
【００３３】
そのため、クリティカルパスによって動作速度を制限されることなく、所定の条件を満たすデータを効率的に収集することができる。
【図面の簡単な説明】
【００３４】
【図１】本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第１の実施形態の構成を示すブロック図である。
【図２】図１に示した条件フラグ選択部の動作を説明するための図であり、（ａ）は条件フラグ選択部の構成の一例を示すブロック図、（ｂ）は条件フラグ選択部が行うビット列の変換を説明するための図である。
【図３】図１に示した選択結果保存部の構成の一例を示すブロック図である。
【図４】図１〜図３に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。
【図５】本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第２の実施形態の構成を示すブロック図である。
【図６】図５に示した末端情報収集部の構成の一例を示すブロック図である。
【図７】図６に示したカウント制御部の構成の一例を示すブロック図である。
【図８】図５に示したＳＩＭＤアレイ型プロセッサの一構成例を示すブロック図である。
【図９】図５〜図８に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。
【図１０】図５〜図８に示したＳＩＭＤアレイ型プロセッサにおいて末端情報収集部からレジスタＢ及びレジスタＣを除き、上位情報収集部からレジスタＣを除いた場合の構成の一例を示すブロック図である。
【図１１】本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第３の実施形態の構成を示すブロック図である。
【図１２】図１１に示した末端情報収集部の構成の一例を示すブロック図である。
【図１３】図１１に示したＳＩＭＤアレイ型プロセッサの一構成例を示すブロック図である。
【図１４】図１１〜図１３に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。
【図１５】所定の条件を満たすデータだけをＰＥ番号の小さなＰＥまたは大きなＰＥから順番に収集するＳＩＭＤアレイ型プロセッサの構成の一例を示す図である。
【発明を実施するための形態】
【００３５】
以下に、本発明の実施の形態について図面を参照して説明する。
【００３６】
（第１の実施形態）
図１は、本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第１の実施形態の構成を示すブロック図である。
【００３７】
本実施形態のＳＩＭＤアレイ型プロセッサは図１に示すように、Ｐ個のＰＥから構成されるＰＥアレイ１０と、ＰＥアレイ１０の各ＰＥのうち、所定の条件を満たすデータを有するＰＥからデータを収集する情報収集部２０とを備えている。なお、Ｐは２以上の自然数である。また、以降、各構成要件のことを情報収集部のように「部」を付けて表記するが、これらの「部」は、回路や複数の回路から成るブロックによって構成される。
【００３８】
ＰＥアレイ１０は、各ＰＥの条件フラグ及び各ＰＥのデータを情報収集部２０へ出力する。なお、図１においては、ＰＥアレイ１０から出力される条件フラグ及びデータをそれぞれ、それぞれｆｉ及びｄｉと表記している。
【００３９】
情報収集部２０は、ＰＥアレイ１０から出力された各ＰＥの条件フラグ（ｆｉ）及び各ＰＥのデータ（ｄｉ）を受け付ける。なお、ＰＥアレイ１０はＰ個のＰＥから構成されているため、受け付けた条件フラグは、Ｐビットの長さとなる。また、情報収集部２０は、各ＰＥの条件フラグを非アクティブに更新させるための更新要求をＰＥアレイ１０の各ＰＥへ出力する。なお、図１においては、情報収集部２０から出力される更新要求をｆｏと表記している。また、情報収集部２０は、少なくとも１つのＰＥの条件フラグがアクティブであることを示す検知結果と、各ＰＥのうち選択されたＰＥのデータである選択データとを出力する。なお、選択されたＰＥとは所定の条件を満たすＰＥのことである。また、図１においては、情報収集部２０から出力される検知結果及び選択データをそれぞれ、それぞれｄｅｔ及びｄｏと表記している。また、情報収集部２０は、第１の条件フラグ修正部である条件フラグ修正部２１と、条件フラグ検知部２２と、第１の条件フラグ選択部である条件フラグ選択部２３と、第１のデータ選択部であるデータ選択部２４と、第１の選択結果保存部である選択結果保存部２５と、条件フラグ更新部２６とを備えている。
【００４０】
条件フラグ検知部２２は、条件フラグ修正部２１から出力された修正済条件フラグを受け付け、受け付けた修正済条件フラグのうち少なくとも１つのビットがアクティブであることを検知する。そして、その検知した結果に応じた検知結果（ｄｅｔ）を出力する。条件フラグ検知部２２は、修正済条件フラグのうち少なくとも１つがアクティブであることを検知すればよいため、Ｐビットの論理和器によって構成される。なお、検知結果は、受け付けた修正済条件フラグのうち少なくとも１つがアクティブであればアクティブとなり、受け付けた修正済条件フラグの全てが非アクティブであれば、非アクティブとなる。また、修正済条件フラグとは、条件フラグ修正部２１によって修正された条件フラグのことであり、条件フラグと同様にＰビットの長さとなる。修正済条件フラグの詳細については後述する。
【００４１】
条件フラグ選択部２３は、条件フラグ修正部２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグの中から、所定の優先順位に基づいて１つのアクティブであるビットを１つ選択する。そして、選択されたビットを示す選択結果をデータ選択部２４、選択結果保存部２５及び条件フラグ更新部２６へ出力する。なお、所定の優先順位は、図１に示すＳＩＭＤアレイ型プロセッサが受け付ける演算命令であって、所定の条件を満たすデータを収集するためのＳＩＭＤ型データ収集命令によって決定される。
【００４２】
図２は、図１に示した条件フラグ選択部２３の動作を説明するための図であり、（ａ）は条件フラグ選択部２３の構成の一例を示すブロック図、（ｂ）は条件フラグ選択部２３が行うビット列の変換を説明するための図である。
【００４３】
図１に示した条件フラグ選択部２３は図２（ａ）に示すように、ビット置換器２３−１，２３−２と、リーディングゼロ２３−３とを備えている。なお、リーディングゼロとは、ビット列のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）、または、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）から、連続して現れる「０」の数を数える回路のことである。なお、ＭＳＢとはビット列の最上位のビットのことであり、ＬＳＢとはビット列の最下位のビットのことである。
【００４４】
ビット置換器２３−１，２３−２は、受け付けた修正済条件フラグのＭＳＢ側とＬＳＢ側とを置換して出力する。具体的には、ビット置換器２３−１，２３−２は図２（ｂ）に示すように、受け付けたビット列が例えば「ａｂｃｄｅ」である場合、ビット列「ｅｄｃｂａ」に置換する。
【００４５】
リーディングゼロ２３−３は、ビット置換器２３−１から出力されたビット列を受け付け、受け付けたビット列をＭＳＢ側またはＬＳＢ側から探索して最初に現れる「１」を検出する。そして、受け付けたビット列を、検出された１の位置のビットだけが「１」となるビット列に変換して出力する。
【００４６】
なお、ビット置換器２３−１，２３−２が入力されたビット列を変換するのは、リーディングゼロ２３−３が受け付けたビット列において最初に現れる「１」を探索する方向と、ＳＩＭＤ型データ収集命令によって決定されるデータを収集する方向とが一致しない場合である。
【００４７】
再度、図１を参照すると、データ選択部２４は、ＰＥアレイ１０から出力された各ＰＥのデータと、条件フラグ選択部２３から出力された選択結果とを受け付ける。そして、受け付けた各ＰＥのデータと選択結果との論理積を論理積器（不図示）によって計算する。そして、計算された結果を論理和器（不図示）によって計算することにより、受け付けた各ＰＥのデータのうち、１つのデータを選択する。そして、選択されたデータを選択データ（ｄｏ）として出力する。この選択データは、ＳＩＭＤ型データ収集命令に対する出力である収集結果データとなる。なお、上述した論理積器及び論理和器の代わりにデータを選択するためのセレクタを備えていてもよい。
【００４８】
条件フラグ更新部２６は、条件フラグ選択部２３から出力された選択結果及び条件フラグ検知部２２から出力された検知結果に基づき、ＰＥアレイ１０の各ＰＥの条件フラグを更新させるための更新要求（ｆｏ）をＰＥアレイ１０へ出力する。具体的には、条件フラグ検知部２２から出力された検知結果がアクティブである場合、条件フラグ選択部２３の選択結果を更新要求（ｆｏ）としてＰＥアレイ１０へ出力する。なお、更新要求は、ＰＥアレイ１０の各ＰＥの数に対応してＰビットの長さとなる。条件フラグ更新部２６から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ１０の各ＰＥは、受け付けた更新要求（ｆｏ）の自身に対応するビットがアクティブであれば、自身の条件フラグを非アクティブに更新する。また、受け付けた更新要求（ｆｏ）の自身に対応するビットが非アクティブであれば自身の条件フラグを更新しない。一方、条件フラグ検知部２２から出力された検知結果が非アクティブである場合には、条件フラグ更新部２６は、全てのビットを非アクティブとした更新要求をＰＥアレイ１０へ出力する。
【００４９】
図３は、図１に示した選択結果保存部２５の構成の一例を示すブロック図である。
【００５０】
図１に示した選択結果保存部２５は図３に示すように、Ｍ個のレジスタから構成されるシフトレジスタ２５−１と、Ｍ個のレジスタの論理和をビット単位に計算する論理和器２５−２とを備えている。なお、Ｍは1以上の整数である。
【００５１】
選択結果保存部２５は、条件フラグ選択部２３から出力された選択結果を受け付け、受け付けた選択結果を記憶する。また、各ＰＥの条件フラグを更新するために必要なクロックサイクル数である遅延クロックサイクル数がＭクロックサイクルである場合、選択結果保存部２５は、条件フラグ選択部２３の選択結果をＭ個分シフトレジスタ２５−１に記憶する。そして、Ｍ個のレジスタの論理和を論理和器２５−１によってビット単位に計算し、計算した結果である条件フラグ修正情報を条件フラグ修正部２１へ出力する。
【００５２】
再度、図１を参照すると、条件フラグ修正部２１は、ＰＥアレイ１０から出力された各ＰＥの条件フラグ（ｆｉ）と、選択結果保存部２５から出力された条件フラグ修正情報との排他的論理和をビット単位に計算する。そして、その計算結果である修正済条件フラグを条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。なお、条件フラグが修正されるのは、遅延クロックサイクルが発生し、その遅延クロックサイクルにおいてＳＩＭＤ型データ収集命令が連続して発行される場合である。
【００５３】
以下に、上記のように構成されたＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作について説明する。
【００５４】
図４は、図１〜図３に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。ここでは、ＰＥアレイ１０が８個のＰＥ（ＰＥ７〜ＰＥ０）を有しており、この８個のＰＥのそれぞれの条件フラグは、ＰＥ７〜ＰＥ０の順番に「１１０１１０１１」であるものとする。また、ＰＥの条件フラグを更新するまでの遅延クロックサイクル数が２クロックサイクルであるものとする。また、図中左側のＰＥにより高い優先順位を与えるものとする。
【００５５】
まず、０クロック目は、ＳＩＭＤアレイ用情報収集命令を実行する最初のサイクルである。そのため、選択結果保存部２５には何も記憶されていない。従って、ＰＥアレイ１０から出力された各ＰＥの条件フラグ（ｆｉ）を受け付けた条件フラグ修正部２１は、受け付けた条件フラグ（ｆｉ）を修正済条件フラグとして条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。
【００５６】
条件フラグ修正部２１から出力された修正済条件フラグ「１１０１１０１１」を受け付けた条件フラグ選択部２３は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果をデータ選択部２４、選択結果保存部２５及び条件フラグ更新部２６へ出力する。ここでは、図４において０クロック目の行の条件フラグ選択部の列が示すように、「１０００００００」が選択結果として出力される。
【００５７】
条件フラグ選択部２３から出力された選択結果と、ＰＥアレイ１０から出力された各ＰＥのデータ（ｄｉ）とを受け付けたデータ選択部２４は、受け付けた選択結果に応じたＰＥのデータを選択し、選択されたデータを選択データ（ｄｏ）として出力する。ここでは、図４において０クロック目の行のデータ選択部の列が示すように、「ＰＥ７」のデータが選択データ（ｄｏ）として出力される。
【００５８】
条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２５は、０クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「１０００００００」をシフトレジスタ２５−１に記憶させる。
【００５９】
次に、１クロック目では、選択結果保存部２５は、記憶している「１００００００」を条件フラグ修正情報として条件フラグ修正部２１へ出力する。
【００６０】
選択結果保存部２５から出力された条件フラグ修正情報を受け付けた条件フラグ修正部２１は、受け付けた条件フラグ修正情報「１０００００００」と、ＰＥアレイ１０から出力された条件フラグ（ｆｉ）「１１０１１０１１」との排他的論理和をとる。つまり、０クロック目の選択結果に対応する条件フラグのビットが０に修正され、修正済条件フラグは「０１０１１０１１」となる。条件フラグ修正部２１は、この修正済条件フラグを条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。
【００６１】
条件フラグ修正部２１から出力された修正済条件フラグ「０１０１１０１１」を受け付けた条件フラグ選択部２３は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果をデータ選択部２４、選択結果保存部２５及び条件フラグ更新部２６へ出力する。ここでは、図４において１クロック目の行の条件フラグ選択部の列が示すように、「０１００００００」が選択結果として出力される。
【００６２】
条件フラグ選択部２３から出力された選択結果と、ＰＥアレイ１０から出力された各ＰＥのデータ（ｄｉ）とを受け付けたデータ選択部２４は、受け付けた選択結果に応じたＰＥのデータを選択し、選択されたデータを選択データ（ｄｏ）として出力する。ここでは、図４において１クロック目の行のデータ選択部の列が示すように、「ＰＥ６」のデータが選択データ（ｄｏ）として出力される。
【００６３】
条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２５は、１クロック目の終わりのクロックエッジおいて、受け付けた選択結果である「０１００００００」をシフトレジスタ２５−１に記憶させる。
【００６４】
次に、２クロック目では、選択結果保存部２５は、０クロック目の選択結果「１０００００００」と、１クロック目の選択結果「０１００００００」とを記憶している。そのため、選択結果保存部２５は、０クロック目の選択結果と１クロック目の選択結果の論理和を論理和器２５−２によって計算する。そして、その計算結果である「１１０００００」を条件フラグ修正情報として条件フラグ修正部２１へ出力する。
【００６５】
選択結果保存部２５から出力された条件フラグ修正情報を受け付けた条件フラグ修正部２１は、受け付けた条件フラグ修正情報「１１００００００」と、ＰＥアレイ１０から出力された条件フラグ（ｆｉ）「１１０１１０１１」との排他的論理和を計算する。つまり、０クロック目及び１クロック目の選択結果に対応する条件フラグのビットが０に修正され、修正済条件フラグは「０００１１０１１」となる。条件フラグ修正部２１は、この修正済条件フラグを条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。
【００６６】
条件フラグ修正部２１から出力された修正済条件フラグ「０００１１０１１」を受け付けた条件フラグ選択部２３は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果をデータ選択部２４、選択結果保存部２５及び条件フラグ更新部２６へ出力する。ここでは、図４において２クロック目の行の条件フラグ選択部２３の列が示すように、「０００１０００」が選択結果として出力される。
【００６７】
条件フラグ選択部２３から出力された選択結果と、ＰＥアレイ１０から出力された各ＰＥのデータとを受け付けたデータ選択部２４は、受け付けた選択結果に応じたＰＥのデータを選択し、選択されたデータを選択データとして出力する。ここでは、図４において２クロック目の行のデータ選択部の列が示すように、「ＰＥ４」のデータが選択データとして出力される。
【００６８】
条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２５は、２クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「０００１００００」をシフトレジスタ２５−１に記憶させる。それとともに、選択結果保存部２５は、０クロック目に記憶した選択結果をシフトレジスタ２５−２から破棄する。
【００６９】
ここで、０クロック目において、条件フラグ選択部２３から出力された選択結果と、条件フラグ検知部２２から出力された検知結果とを受け付けた条件フラグ更新部２６は、ＰＥ７の条件フラグを更新させるための更新要求（ｆｏ）をＰＥアレイ１０へ出力する。
【００７０】
条件フラグ更新部２６から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ１０では、ＰＥ７の条件フラグが非アクティブを示す「０」に更新される。この更新された条件フラグを図４において３クロック目の行の条件フラグの列に示す。
【００７１】
次に、３クロック目では，選択結果保存部２５は、１クロック目の選択結果「０１００００００」と、２クロック目の選択結果「０００１００００」とを記憶している。そのため、選択結果保存部２５は、１クロック目の選択結果と２クロック目の選択結果の論理和を論理和器２５−２によって計算する。そして、その計算結果である「０１０１００００」を条件フラグ修正情報として条件フラグ修正部２１へ出力する。
【００７２】
選択結果保存部２５から出力された条件フラグ修正情報を受け付けた条件フラグ修正部２１は、受け付けた条件フラグ修正情報「０１０１００００」と、ＰＥアレイ１０から出力された条件フラグ（ｆｉ）「０１０１１０１１」との排他的論理和を計算する。つまり、１クロック目及び２クロック目の選択結果に対応する条件フラグのビットが０に修正され、修正済条件フラグは「００００１０１１」となる。条件フラグ修正部２１は、この修正済条件フラグを条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。
【００７３】
条件フラグ修正部２１から出力された修正済条件フラグ「００００１０１１」を受け付けた条件フラグ選択部２３は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果をデータ選択部２４、選択結果保存部２５及び条件フラグ更新部２６へ出力する。ここでは、図４において３クロック目の行の条件フラグ選択部２３の列が示すように、「００００１０００」が選択結果として出力される。
【００７４】
条件フラグ選択部２３から出力された選択結果と、ＰＥアレイ１０から出力された各ＰＥのデータ（ｄｉ）とを受け付けたデータ選択部２４は、受け付けた選択結果に応じたＰＥのデータを選択し、選択されたデータを選択データ（ｄｏ）として出力する。ここでは、図４において３クロック目の行のデータ選択部の列が示すように、「ＰＥ３」のデータが選択データ（ｄｏ）として出力される。
【００７５】
条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２５は、３クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「００００１０００」を選択結果保存部２５のシフトレジスタ２５−１に記憶させる。それとともに、選択結果保存部２５は、１クロック目に記憶した選択結果をシフトレジスタ２５−２から破棄する。
【００７６】
４〜８クロック目では、上述した処理と同様の処理が行われる。
【００７７】
このように本実施形態においては、ＰＥアレイ１０のＰＥのそれぞれは、データ（ｄｉ）及び条件フラグ（ｆｉ）を情報収集部２０へ出力し、条件フラグを非アクティブに更新するための更新要求（ｆｏ）を受け付けると、受け付けた更新要求（ｆｏ）に応じて条件フラグを非アクティブに更新する。また、情報収集部２０は、ＰＥアレイ１０のＰＥのそれぞれから出力されたデータ（ｄｉ）及び条件フラグ（ｆｉ）を受け付けると、受け付けた条件フラグ（ｆｉ）がアクティブであるＰＥの中から、所定の優先順位に基づいて１つのＰＥを選択し、選択されたＰＥから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求（ｆｏ）を出力する。
【００７８】
そのため、クリティカルパスによって動作速度を制限されることがない。
【００７９】
また、条件フラグを更新するのにＭクロックサイクルの遅延が発生する場合でも、ＳＩＭＤ型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
【００８０】
（第２の実施形態）
図５は、本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第２の実施形態の構成を示すブロック図である。
【００８１】
本実施形態のＳＩＭＤアレイ型プロセッサは図５に示すように、Ｐ個のＰＥから構成されるＰＥアレイ１１０と、ＰＥアレイ１１０のＰＥのうち、所定の条件を満たすデータを有するＰＥからデータを収集する情報収集部１２０とを備えている。なお、Ｐは２以上の自然数である。
【００８２】
ＰＥアレイ１１０は、各ＰＥの条件フラグ（ｆｉ）、各ＰＥのデータ（ｄｉ）及びアクティブ数を情報収集部１２０へ出力する。なお、アクティブ数は、条件フラグがアクティブであるＰＥを示す情報である。図５においては、ＰＥアレイ１１０から出力されるアクティブ数をｎｉと表記している。
【００８３】
情報収集部１２０は、ＰＥアレイ１１０から出力された各ＰＥの条件フラグ（ｆｉ）、各ＰＥのデータ（ｄｉ）及びアクティブ数（ｎｉ）を受け付ける。また、各ＰＥの条件フラグを非アクティブに更新させるための更新要求（ｆｏ）をＰＥアレイ１１０の各ＰＥへ出力する。また、情報収集部１２０は、少なくとも１つのＰＥの条件フラグがアクティブであることを示す検知結果（ｄｅｔ）と、各ＰＥのうち選択されたＰＥのデータである選択データ（ｄｏ）と、アクティブ数とを出力する。なお、情報収集部１２０から出力されるアクティブ数は、受け付けたアクティブ数（ｎｉ）の合計値である。また、図５においては、情報収集部１２０から出力されるアクティブ数をｎｏと表記している。また、情報収集部１２０は、階層化されており、末端情報収集部層１２０−１と、中間情報収集部層１２０−２と、上位情報収集部１２０−３とを備えている。なお、本実施形態においては、中間情報収集部層１２０−２を１階層としているが、中間情報収集部層１２０−２をさらに複数の階層に分割してもよい。また、逆に中間情報収集部層１２０−２を設けなくてもよい。
【００８４】
末端情報収集部層１２０−１は、ＰＥアレイ１１０と直接接続された階層であり、末端情報収集部１２０−１−１〜１２０−１−ｎを備えている。また、末端情報収集部層１２０−１は、ＰＥアレイ１１０から出力された各ＰＥの条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）を受け付ける。そして、受け付けた条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）に基づき、検知結果（ｄｅｔ）、選択データ（ｄｏ）及びアクティブ数（ｎｏ）を中間情報収集部層１２０−２へ出力する。また、末端情報収集部層２２０−１は、中間情報収集部層１２０−２から出力された更新要求（ｆｏ）を選択情報として受け付ける。そして、受け付けた選択結果に基づき、更新要求（ｆｏ）をＰＥアレイ１１０へ出力する。なお、図５においては末端情報収集部層１２０−１が受け付ける選択情報をｓｅｌと表記している。この選択情報については後述する。
【００８５】
中間情報収集部層１２０−２は、末端情報収集部層１２０−１に接続された階層であり、中間情報収集部１２０−２−１〜１２０−２−ｎを備えている。また、中間情報収集部層１２０−２は、末端情報収集部層１２０−１から出力された検知結果（ｄｅｔ）、選択データ（ｄｏ）及びアクティブ数（ｎｏ）のそれぞれをそれぞれ条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）として受け付ける。そして、受け付けた条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）に基づき、検知結果（ｄｅｔ）、選択データ（ｄｏ）及びアクティブ数（ｎｏ）を上位情報収集部１２０−３へ出力する。また、中間情報収集部層１２０−２は、上位情報収集部１２０−３から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。そして、受け付けた選択情報（ｓｅｌ）に基づき、更新要求（ｆｏ）を末端情報収集部１２０−１へ出力する。
【００８６】
上位情報収集部１２０−３は、中間情報収集部層１２０−２に接続され、中間情報収集部１２０−２から出力された検知結果（ｄｅｔ）、選択データ（ｄｏ）及びアクティブ数（ｎｏ）のそれぞれをそれぞれ条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）として受け付ける。そして、受け付けた条件フラグ（ｆｉ）、データ（ｄｉ）及びアクティブ数（ｎｉ）に基づき、検知結果（ｄｅｔ）、選択データ（ｄｏ）及びアクティブ数（ｎｏ）を出力する。なお、上位情報収集部２２０−３から出力される選択データ（ｄｏ）は、ＳＩＭＤ型データ収集命令に対する出力である収集結果データとなる。また、上位情報収集部１２０−３は、ＳＩＭＤ型データ収集命令の実行要求を選択情報（ｓｅｌ）として受け付け、受け付けた選択情報（ｓｅｌ）に基づき、中間情報収集部層１２０−２へ更新要求（ｆｏ）を出力する。
【００８７】
なお、末端情報収集部１２０−１−１〜１２０−１−ｎ、中間情報収集部１２０−２−１〜１２０−２−ｎ及び上位情報収集部１２０−３は、入出力される信号や内部の信号線のビット幅以外は同様の構成である。以降、末端情報収集部１２０−１−１〜１２０−１−ｎ、中間情報収集部１２０−２−１〜１２０−２−ｎ及び上位情報収集部１２０−３をまとめていう場合、子情報収集部という。
【００８８】
図６は、図５に示した末端情報収集部１２０−１−１の構成の一例を示すブロック図であり、ＰＥアレイ１１０のＰＥの数がＡ個である場合を示す。なお、Ａは２以上の自然数である。
【００８９】
図５に示した末端情報収集部１２０−１−１は図６に示すように、条件フラグ検知部１２２と、第２の条件フラグ選択部である条件フラグ選択部１２３と、第２のデータ選択部であるデータ選択部１２４と、カウント制御部１２７と、レジスタＡ１２８と、レジスタＢ１２９と、レジスタＣ１３０と、レジスタＤ１３１と、を備えている。
【００９０】
条件フラグ検知部１２２、条件フラグ選択部１２３及びデータ選択部１２４のそれぞれの構成は、図１に示した条件フラグ検知部２２、条件フラグ選択部２３及びデータ選択部２４のそれぞれの構成と同様であるため、説明を省略する。
【００９１】
カウント制御部１２７は、ＰＥアレイ１１０から出力された条件フラグ（ｆｉ）をアクティブ数（ｎｉ）として受け付け、受け付けたアクティブ数（ｎｉ）に基づき、条件フラグがアクティブであるＰＥの数を管理する。そして、カウント制御部１２７は、受け付けたアクティブ数の合計値をアクティブ数（ｎｏ）として中間情報収集部層１２０−２へ出力する。また、カウント制御部１２７は、中間情報収集部層１２０−２から出力された選択情報（ｓｅｌ）を受け付け、受け付けた選択情報（ｓｅｌ）に基づき、ＰＥアレイ１１０へ更新要求（ｆｏ）を出力する。
【００９２】
なお、図６に示すように、カウント制御部１２７やデータ選択部１２４からの出力を一度レジスタ（レジスタＡ１２８、レジスタＢ１２９、レジスタＣ１３０及びレジスタＤ１３１）に記憶させてから、ＰＥアレイ１１０や上位または下位の階層の子情報収集部に出力することにより、これらの出力の処理がクリティカルパスとなることを防ぐことができる。
【００９３】
図７は、図６に示したカウント制御部１２７の構成の一例を示すブロック図である。
【００９４】
図６に示したカウント制御部１２７は図７に示すように、セレクタ１２７−１，１２７−２と、レジスタ１２７−３と、論理和器１２７−４と、デクリメンタ１２７−５と、論理否定器１２７−６と、論理積器１２７−７と、加算器１２７−８とを備えている。
【００９５】
なお、カウント制御部１２７は、上記の加算器１２７−８以外についてはＡ個ずつ備えている。
【００９６】
セレクタ１２７−１は、ＰＥアレイ１１０から出力されたアクティブ数（ｎｉ）と、デクリメンタ１２７−５からの出力を受け付ける。そして、受け付けた出力のいずれかを選択し、選択した結果をレジスタ１２７−３へ出力する。なお、セレクタ１２７−１がいずれを選択するのかは、当該カウント制御部１２７がＰＥアレイ１１０から数えて何階層目に存在しているかと、ＳＩＭＤ型データ収集命令とによって制御される。例えば、ＰＥアレイ１１０に直接接続された階層を０階層とし、カウント制御部１２７がＬ階層目（０≦Ｌ）に存在している場合を考えてみる。この場合、セレクタ１２７−１は、ＳＩＭＤ型データ収集命令が実行されてからＬクロック目に、ＰＥアレイ１１０から出力されたアクティブ数（ｎｉ）を選択し、それ以外の場合にはデクリメンタ１２７−５からの出力を選択する。
【００９７】
レジスタ１２７−３は、セレクタ１２７−１からの出力または自身に既に記憶されている値のいずれかを選択して記憶する。セレクタ１２７−１からの出力を記憶するのは、以下の（１）、（２）に示す２通りの場合であり、それ以外の場合は、自身に既に記憶されている値をそのまま保持する。
【００９８】
（１）セレクタ１２７−１と同様に、当該カウント制御部１２７が存在している階層の順番と一致するクロック目における動作の場合。
【００９９】
（２）論理和器１２７−４を介して接続されている論理積器１２７−７からの出力が「１」である場合。
【０１００】
デクリメンタ１２７−５は、レジスタ１２７−３から出力された値から１を減算し、減算した値をセレクタ１２７−１へ出力する。
【０１０１】
論理和器１２７−４は、レジスタ１２７−３から出力された値の全ビットの論理和を計算し、論理積器１２７−７へ出力する。
【０１０２】
セレクタ１２７−２は、図中自身の左側にある論理積器１２７−７と、右側にある論理積器１２７−７とからの出力を受け付け、受け付けた出力のいずれかを選択する。但し、図中左端のセレクタ１２７−２の場合、自身の左側に論理積器１２７−７がないため、その代わりに０が入力される。また、同様に、図中右端のセレクタ１２７−２の場合には、自身の右側に論理積器１２７−７がないため、その代わりに０が入力される。このセレクタ１２７−２による選択は、ＳＩＭＤ型データ収集命令によって制御される。具体的には、ＳＩＭＤ型データ収集命令によって図中左側のＰＥから右側のＰＥにかけてデータを収集する場合、つまり、図中左側のＰＥにより高い優先順位を与える場合、セレクタ１２７−２は左側の論理積器１２７−７からの出力を選択する。一方、ＳＩＭＤ型データ収集命令によって図中右側のＰＥから左側のＰＥにかけてデータを収集する場合には、セレクタ１２７−２は右側の論理積器１２７−７からの出力を選択する。
【０１０３】
論理否定器１２７−６は、セレクタ１２７−２からの出力を論理反転させて論理積器１２７−７へ出力する。
【０１０４】
論理積器１２７−７は、論理和器１２７−４からの出力と、中間情報収集部層１２０−２から出力された選択情報と、論理否定器１２７−６からの出力との論理積値を計算する。そして、計算された論理積値をセレクタ１２７−２へ出力するとともに、更新要求（ｆｏ）としてＰＥアレイ１１０へ出力する。さらに、計算された論理積値は、レジスタ１２７−３の更新信号としても利用される。
【０１０５】
加算器１２７−８は、ＰＥアレイ１１０から出力されたアクティブ数（ｎｉ）から、アクティブ数の合計値を計算し、その計算結果をアクティブ数（ｎｏ）として中間情報収集部層１２０−２へ出力する。
【０１０６】
以下に、上記のように構成されたＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作について説明する。ここでは、末端情報収集部層１２０−１と上位情報収集部１２０−３との２階層から情報収集部１２０が構成される場合について説明する。
【０１０７】
図８は、図５に示したＳＩＭＤアレイ型プロセッサの一構成例を示すブロック図であり、情報収集部１２０が２階層で構成される場合を示す。
【０１０８】
図８に示すＳＩＭＤアレイ型プロセッサは、ＰＥアレイ１１０が８個のＰＥ（ＰＥ７〜ＰＥ０）を有しており、この８個のＰＥのそれぞれの条件フラグは、ＰＥ７〜ＰＥ０の順番に「１１０１１０１１」である。また、末端情報収集部層１２０−１は、４つの末端情報収集部１２０−１−１〜１２０−１−４を備えており、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれは、２つのＰＥの条件フラグに対応している。例えば、末端情報収集部１２０−１−１は、ＰＥ７及びＰＥ６の条件フラグである「１１」を受け付ける。また、図中左側のＰＥにより高い優先順位を与えるものとする。
【０１０９】
図９は、図５〜図８に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。
【０１１０】
図９は、各クロックにおける条件フラグの値と、各クロックにおける末端情報収集部１２０−１−１〜１２０−１−４及び上位情報収集部１２０−３の各種レジスタ値とを示している。また、図９において末端情報収集部及び上位情報収集部のカウント制御部の列には、末端情報収集部１２０−１−１〜１２０−１−４及び上位情報収集部１２０−３のカウント制御部１２７に関わる値が「Ａ/Ｂ．．．（Ｃ，ＤＥ．．．）」の形式で表記されている。
【０１１１】
例えば、末端情報収集部のカウント制御部の列において、上記のＡ/Ｂは、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７のレジスタ１２７−３に記憶されたアクティブ数を示す。また、上記のＣは、それぞれのカウント制御部１２７の加算器１２７−８によって計算され、レジスタＤ１３１（図６参照）に記憶されたアクティブ数の合計値を示す。また、上記のＤＥは、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７内の各論理積器１２７−７の出力であり、レジスタＣ１３０（図６参照）に記憶された更新要求を示す。
【０１１２】
また、図９において末端情報収集部及び上位情報収集部のデータ選択部の列には、レジスタＢ１２９（図６参照）に記憶された選択データを示す。
【０１１３】
以下に、図５〜図８に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作をクロック毎に説明する。
【０１１４】
まず、０クロック目においては、２つのＰＥの条件フラグ（ｆｉ）及びアクティブ数（ｎｉ）がＰＥアレイ１１０から出力される。ＰＥアレイ１１０から出力されたアクティブ数（ｎｉ）を受け付けた末端情報収集部１２０−１−１〜１２０−１−４のそれぞれは、受け付けたアクティブ数（ｎｉ）をカウント制御部１２７のレジスタ１２７−３に記憶させる。ここでは、末端情報収集部１２０−１〜１２０−１−４の順番に「１/１，０/１，１/０，１/１」が記憶される。なお、末端情報収集部１２０−１−１〜１２０−１−４においてアクティブ数は、それぞれ１ビットの条件フラグであるため、各レジスタ１２７−３のビット幅も１ビットである。
【０１１５】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７の加算器１２７−８は、受け付けたアクティブ数（ｎｉ）の合計値を計算してレジスタＤ１３１に記憶させる。例えば末端情報収集部１２０−１−１の場合、受け付けたアクティブ数（ｎｉ）は「１/１」なので、アクティブ数の合計値は「２」となる。また、末端情報収集部１２０−１−２の場合、受け付けたアクティブ数（ｎｉ）は「０/１」なので、アクティブ数の合計値は「１」となる。このように合計値は、末端情報収集部１２０−１−１〜１２０−１−４の順番に「２，１，１，２」となる。なお、この合計値は、１ビットのアクティブ数が２つ加算されたものであるため、レジスタＤ１３１のビット幅は２ビットとなる。
【０１１６】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７の各論理積器１２７−７の出力がレジスタＣ１３０に記憶される。なお、０クロック目では、上位情報収集部１２０−３からの選択情報（ｓｅｌ）が０であるため、各論理積器１２７−７からの出力は、末端情報収集部１２０−１−１〜１２０−１−４の全てにおいて０「００，００，００，００」である。
【０１１７】
以上の０クロック目の実行結果を図９における０クロック目の行の末端情報収集部のカウント制御部の列に示す。また、０クロック目においては、上位情報収集部１２０−３への入力には変化がない。そのため、上位情報収集部１２０−３は動作しておらず、その実行結果は全て０である。これを０クロック目の行の上位情報収集部のカウント制御部の列に示す。
【０１１８】
次に、１クロック目においては、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのレジスタＤ１３１に記憶されたアクティブ数の合計値が上位情報収集部１２０−３へ出力される。
【０１１９】
末端情報収集部１２０−１−１〜１２０−１−４から出力されたアクティブ数の合計値をアクティブ数（ｎｉ）として受け付けた上位情報収集部１２０−３は、受け付けたアクティブ数（ｎｉ）をカウント制御部１２７内の各レジスタ１２７−３に記憶させる。ここでは、それぞれのレジスタ１２７−３に「２/１/１/２」が記憶される。なお、上位情報収集部１２０−３においてアクティブ数は、それぞれ２ビットであるため、レジスタ１２７−３のビット幅も２ビットである。
【０１２０】
また、上位情報収集部１２０−３のカウント制御部１２７の加算器１２７−８は、受け付けたアクティブ数（ｎｉ）の合計値を計算し、レジスタＤ１３１に記憶させる。ここでは、受け付けたアクティブ数（ｎｉ）は、「２/１/１/２」なので、アクティブ数の合計値は「６」となる。なお、この合計値は、２ビットのアクティブ数が４つ加算されたものであるため、レジスタＤ１３１のビット幅は４ビットとなる。
【０１２１】
また、上位情報収集部１２０−３のカウント制御部１２７の各論理積器１２７−７の出力がレジスタＣ１３０に記憶される。なお、１クロック目では、ＳＩＭＤアレイ用情報収集命令により、選択情報（ｓｅｌ）として「０」が入力されるため、各論理積器１２７−７の出力は０（「００００」）である。
【０１２２】
以上の１クロック目の実行結果を図９において１クロック目の行の上位情報収集部のカウント制御部の列に示す。なお、１クロック目においては末端情報収集部１２０−１−１〜１２０−１−４への入力には変化がない。そのため、末端情報収集部１２０−１−１〜１２０−１−４は動作しておらず、その実行結果は０クロック目と同様のままである。これを１クロック目の行の末端情報収集部のカウント制御部の列に示す。
【０１２３】
次に、２クロック目においては、上位情報収集部１２０−３のカウント制御部１２７内の各レジスタ１２７−３にアクティブ数「２/１/１/２」が記憶されている。また、ＳＩＭＤアレイ用情報収集命令により、選択情報（ｓｅｌ）として「１」が入力される。これらにより、各論理積器１２７−７の出力を合わせると「１０００」となる。なお、ここでは、図中左側のＰＥほど高い優先度を与えているため、セレクタ１２７−２は自身の左側の論理積器１２７−７からの出力を選択している。
【０１２４】
各論理積器１２７−７の出力は、レジスタＣ１３０に記憶される。また、レジスタＣ１３０に記憶された各論理積器１２７−７の出力は、末端情報収集部１２０−１−１〜１２０−１−４へ出力される選択情報となる。
【０１２５】
また、各デクリメンタ１２７−５で減算された値で各レジスタ１２７−３に記憶されている値が更新される。ここでは、更新された結果は「１/１/１/２」となり、左端の値だけが減算されている。これは、論理積器１２７−７の出力が「１」であるレジスタ１２７−３に記憶されている値だけが更新されるからである。
【０１２６】
以上の２クロック目の実行結果を図９において２クロック目の行の上位情報収集部のカウント制御部の列に示す。また、２クロック目においては末端情報収集部１２０−１−１〜１２０−１−４への入力には変化がない。そのため、末端情報収集部１２０−１−１〜１２０−１−４は動作しておらず、その実行結果は１クロック目と同様のままである。
【０１２７】
次に、３クロック目においては、上位情報収集部１２０−３は、レジスタＣ１３０に記憶された各論理和器１２７−７の出力「１０００」を更新要求（ｆｏ）として末端情報収集部１２０−１−１〜１２０−４のそれぞれのカウント制御部１２７へ出力する。
【０１２８】
末端情報収集部１２０−１−１〜１２０−４のそれぞれのカウント制御部１２７は、上位情報収集部１２０−３から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、例えば、末端情報収集部１２０−１−１の場合、受け付けた選択情報（ｓｅｌ）は「１」である。また、末端情報収集部１２０−１−２〜１２０−１−４の場合、受け付けた選択情報（ｓｅｌ）は「０」である。従って、受け付けた選択情報（ｓｅｌ）が「１」である末端情報収集部１２０−１−１のカウント制御部１２７のみが動作する。
【０１２９】
末端情報収集部１２０−１−１のカウント制御部１２７では、受け付けた選択情報（ｓｅｌ）が「１」であり、かつ各レジスタ１２７−３に「１/１」が記憶されているため、各論理積器１２７−７の出力を合わせると「１０」となる。なお、ここでは、図中左側のＰＥほど高い優先度を与えているため、セレクタ１２７−２は左側の論理積器１２７−１から出力された値を選択している。
【０１３０】
各論理積器１２７−７の出力「１０」は、レジスタＣ１３０に記憶される。そして、レジスタＣ１３０に記憶された各論理積器１２７−７の出力は、末端情報収集部１２０−１−１に接続された２つのＰＥ（ＰＥ７及びＰＥ６）への更新要求（ｆｏ）としてＰＥアレイ１１０へ出力される。
【０１３１】
また、デクリメンタ１２７−５で減算された値でレジスタ１２７−３に記憶された値が更新される。ここでは更新された結果は、「０/１」となり、左側の値だけが減算されている。これは、論理積器１２７−７の出力が「１」であるレジスタ１２７−３に記憶されている値だけが更新されるからである。
【０１３２】
以上の３クロック目における末端情報収集部１２０−１−１〜１２０−１−４の実行結果を図９において３クロック目の行の末端情報収集部のカウント制御部の列に示す。
【０１３３】
また、上位情報収集部１２０−３のカウント制御部１２７中では、各レジスタ１２７−３に１/１/１/２が記憶されている。また、ＳＩＭＤアレイ用情報収集命令によって選択情報が「１」に設定される。これらにより、各論理積器１２７−７の出力を合わせると「１０００」となる。
【０１３４】
論理積器１２７−７の出力は、レジスタＣ１３０に記憶される。また、レジスタＣ１３０に記憶された値は、末端情報収集部１２０−１−１〜１２０−１−４へ出力される選択情報となる。
【０１３５】
また、デクリメンタ１２７−５で減算された値で各レジスタ１２７−３に記憶されている値が更新される。ここでは、更新された結果は、「０/１/１/２」となる。
【０１３６】
以上の３クロック目における上位情報収集部１２０−３の実行結果を図９において３クロック目の行の上位情報収集部のカウント制御部の列に示す。
【０１３７】
次に、４クロック目において、末端情報収集部１２０−１−１から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ１１０では、受け付けた更新要求（ｆｏ）に応じてＰＥの条件フラグが更新される。ここでは、受け付けた更新要求（ｆｏ）が「１０」であるため、「１０」のうち「１」に対応するＰＥ７の条件フラグが非アクティブに更新される。この結果を図９において４クロック目の行の条件フラグの列に示す。
【０１３８】
また、上位情報収集部１２０−３は、レジスタＣ１３０に記憶された各論理和器１２７−７の出力「１０００」を更新要求（ｆｏ）として、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７へ出力する。
【０１３９】
末端情報収集部１２０−１−１〜１２０−４のそれぞれのカウント制御部１２７は、上位情報収集部１２０−３から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、受け付けた選択情報（ｓｅｌ）が「１」である末端情報収集部１２０−１−１のカウント制御部１２７のみが動作する。
【０１４０】
末端情報収集部１２０−１−１のカウント制御部１２７では、受け付けた選択情報（ｓｅｌ）が「１」であり、かつ各レジスタ１２７−３に「０/１」が記憶されているため、各論理積器１２７−７の出力を合わせると「０１」となる。各論理和器１２７−７の出力「０１」は、レジスタＣ１３０に記憶される。そして、レジスタＣ１３０に記憶された各論理和器１２７−７の出力は、末端情報収集部１２０−１−１に接続された２つのＰＥ（ＰＥ７及びＰＥ６）への更新要求（ｆｏ）としてＰＥアレイ１１０へ出力される。
【０１４１】
また、デクリメンタ１２７−５で減算された値でレジスタ１２７−３に記憶された値が更新される。ここでは、更新された結果は、「０/０」となる。
【０１４２】
以上の４クロック目における末端情報収集部１２０−１−１〜１２０−１−４の実行結果を図９において４クロック目の行の末端情報収集部のカウント制御部の列に示す。
【０１４３】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ選択部１２３は、ＰＥアレイ１１０から出力された条件フラグ（ｆｉ）を受け付ける。ここでは、末端情報収集部１２０−１〜１２０−４の順番に、「１１，０１，１０，１１」を受け付ける。
【０１４４】
末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ選択部１２３は、受け付けた条件フラグにおいてアクティブであるビットのうち、最も左側にあるビットを選択する。そして、その選択結果をデータ選択部１２４へ出力する。ここでは、選択結果は、末端情報収集部１２０−１〜１２０−４の順番に、「１０，０１，１０，１０」となる。
【０１４５】
条件フラグ選択部１２３から出力された選択結果と、ＰＥアレイ１１０から出力された各ＰＥのデータ（ｄｉ）とを受け付けたデータ選択部１２４は、受け付けた選択結果に応じたＰＥのデータを選択する。ここでは、末端情報収集部１２０−１〜１２０−４の順番に、「ＰＥ７，ＰＥ４，ＰＥ３，ＰＥ１」のデータが選択される。そして、データ選択部１２４は、選択されたＰＥのデータをレジスタＢ１２９に記憶させるとともに選択データ（ｄｏ）として上位情報収集部１２０−３へ出力する。レジスタＢ１２９に記憶された値を、図９における４クロック目の末端情報収集部のデータ選択部の列に示す。
【０１４６】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ検知部１２２は、受け付けた条件フラグの中に少なくとも１つアクティブであるビットを検知し、検知結果をレジスタＡ１２８に記憶させる。レジスタＡ１２８に記憶された検知結果は、検知結果（ｄｅｔ）として上位情報収集部１２０−３へ出力される。
【０１４７】
また、上位情報収集部１２０−３のカウント制御部１２７内の各レジスタ１２７−３には、アクティブ数「０/１/１/２」が記憶されている。また、ＳＩＭＤアレイ用情報収集命令により、選択情報が「１」に設定される。これらにより、各論理積器１２７−７の出力を合わせると「０１００」となる。
【０１４８】
論理積器１２７−７の出力は、レジスタＣ１３０に記憶される。また、レジスタＣ１３０に記憶された値は、末端情報収集部１２０−１−１〜１２０−１−４へ出力される選択情報（ｓｅｌ）として利用される。
【０１４９】
また、各デクリメンタ１２７−５で減算された値で各レジスタ１２７−３に記憶されている値が更新される。ここでは、更新された結果は「０/０/１/２」となる。
【０１５０】
以上の４クロック目における上位情報収集部１２０−３の動作の実行結果を図９において４クロック目の行の上位情報収集部のカウント制御部の列に示す。
【０１５１】
次に、５クロック目において、末端情報収集部１２０−１−１から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ１１０では、受け付けた更新要求（ｆｏ）に基づいてＰＥの条件フラグを更新する。ここでは、受け付けた更新要求（ｆｏ）が「０１」であるため、「０１」のうち「１」に対応するＰＥ６の条件フラグが非アクティブに更新される。この結果を図９において５クロック目の行の条件フラグの列に示す。
【０１５２】
また、上位情報収集部１２０−３は、レジスタＣ１３０に記憶された各論理和器１２７−７の出力「０１００」を更新要求（ｆｏ）として、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれのカウント制御部１２７へ出力する。
【０１５３】
末端情報収集部１２０−１−１〜１２０−４のそれぞれのカウント制御部１２７は、上位情報収集部１２０−３から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、受け付けた選択情報（ｓｅｌ）が「１」である末端情報収集部１２０−１−２のカウント制御部１２７のみが動作する。
【０１５４】
末端情報収集部１２０−１−２のカウント制御部１２７では、受け付けた選択情報（ｓｅｌ）が「１」であり、かつ各レジスタ１２７−３に「０/１」が記憶されているため、各論理積器１２７−７の出力を合わせると「０１」となる。各論理和器１２７−７の出力「０１」は、レジスタＣ１３０に記憶される。そして、レジスタＣ１３０に記憶された値は、末端情報収集部１２０−１−１に接続された２つのＰＥ（ＰＥ５及びＰＥ４）への更新要求（ｆｏ）としてＰＥアレイ１１０へ出力される。
【０１５５】
また、デクリメンタ１２７−５で減算された値でレジスタ１２７−３に記憶された値が更新される。ここでは、更新された結果は、「０/０」となる。
【０１５６】
以上の５クロック目における末端情報収集部１２０−１−１〜１２０−１−４の実行結果を図９における５クロック目の行の末端情報収集部のカウント制御部の列に示す。
【０１５７】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ選択部１２３は、ＰＥアレイ１１０から出力された条件フラグ（ｆｉ）を受け付ける。ここでは、末端情報収集部１２０−１〜１２０−４の順番に、「０１，０１，１０，１１」を受け付ける。
【０１５８】
末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ選択部１２３は、受け付けた条件フラグ（ｆｉ）においてアクティブであるビットのうち、最も左側にあるビットを選択する。そして、その選択結果をデータ選択部１２４へ出力する。ここでは、選択結果は、末端情報収集部１２０−１〜１２０−４の順番に、「０１，０１，１０，１０」となる。
【０１５９】
条件フラグ選択部１２３から出力された選択結果と、ＰＥアレイ１１０から出力された各ＰＥのデータ（ｄｉ）を受け付けたデータ選択部１２４は、受け付けた選択結果に応じたＰＥのデータを選択する。ここでは、末端情報収集部１２０−１〜１２０−４の順番に、「ＰＥ６，ＰＥ４，ＰＥ３，ＰＥ１」のデータが選択される。そして、データ選択部１２４は、選択されたＰＥのデータをレジスタＢ１２９に記憶させるとともに選択データ（ｄｏ）として上位情報収集部１２０−３へ出力する。レジスタＢ１２９に記憶された値を、図９における５クロック目の末端情報収集部のデータ選択部の列に示す。
【０１６０】
また、末端情報収集部１２０−１−１〜１２０−１−４のそれぞれの条件フラグ検知部１２２は、受け付けた条件フラグの中に少なくとも１つアクティブであるビットを検知し、検知結果をレジスタＡ１２８に記憶させる。レジスタＡ１２８に記憶された検知結果は、検知結果（ｄｅｔ）として上位情報収集部１２０−３へ出力される。
【０１６１】
また、上位情報収集部１２０−３のカウント制御部１２７内の各レジスタ１２７−３には、アクティブ数「０/０/１/２」が記憶されている。また、ＳＩＭＤアレイ用情報収集命令により、選択情報（ｓｅｌ）が「１」に設定される。これらにより、各論理積器１２７−７の出力を合わせると「００１０」となる。
【０１６２】
論理積器１２７−７の出力は、レジスタＣ１３０に記憶される。また、レジスタＣ１３０に記憶された論理積器１２７−７の出力は、末端情報収集部１２０−１−１〜１２０−１−４へ出力される選択情報となる。
【０１６３】
また、デクリメンタ１２７−５で減算された値で各レジスタ１２７−３に記憶されている値が更新される。ここでは、更新された結果は「０/０/０/２」となる。
【０１６４】
以上の５クロック目における上位情報収集部１２０−３の動作の実行結果を図９における５クロック目の行の上位情報収集部のカウント制御部の列に示す。
【０１６５】
また、上位情報収集部１２０−３の条件フラグ選択部１２３は、末端情報選択部１２０−１−１〜１２０−１−４から出力された検知結果（ｄｅｔ）を条件フラグ（ｆｉ）として受け付ける。ここでは、「１１１１」を条件フラグ（ｆｉ）として受け付ける。そして、受け付けた条件フラグ（ｆｉ）においてアクティブでビットのうち、最も左側にあるビットを選択する。ここでは、選択結果は「１０００」となる。そして、条件フラグ選択部１２３は、この選択結果をデータ選択部１２４へ出力する。
【０１６６】
条件フラグ選択部１２３から出力された選択結果と、末端情報収集部１２０−１−１〜１２０−１−４から出力されたデータとを受け付けたデータ選択部１２４は、受け付けた選択結果に応じたＰＥのデータを選択する。ここでは、ＰＥ７のデータが選択される。そして、データ選択部１２４は、選択されたＰＥのデータをレジスタＢ１２９に記憶させるとともに、選択データ（ｄｏ）として出力する。なお、この選択データ（ｄｏ）は収集結果データとなる。レジスタＢ１２９に記憶された値を、図９における５クロック目の上位情報収集部のデータ選択部の列に示す。
【０１６７】
また、上位情報収集部１２０−３の条件フラグ検知部１２２は、入力となる条件フラグ（ｆｉ）の中に少なくとも１つアクティブであるビットを検知し、検知した結果をレジスタＡ１２８に記憶させるとともに、検知結果（ｄｅｔ）として出力する。
【０１６８】
６クロック目〜１０クロック目も同様に処理することにより、実行に遅延を要するＳＩＭＤアレイ用情報収集命令を連続して発行することができる。
【０１６９】
なお、本実施形態においては、ＰＥの数を８個としている。そのため、上位情報収集部１２０−３が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合が高くなっている。しかし、実際にはＰＥの数は１２８個等と多いため、上位情報収集部１２０−３が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合は限りなく小さくなる。
【０１７０】
また、本実施形態では説明を一般化するために、全ての階層の子情報収集部がレジスタＢ１２９及びレジスタＣ１３０を備える構成としている。しかし、実際には、必ずしも全ての階層の子情報収集部においてレジスタＢ１２９及びレジスタＣ１３０を備えていなくてもよい。これは、レジスタＢ１２９及びレジスタＣ１３０は、クリティカルなパスを分割するために設けられているからである。具体的には例えば、上位情報収集部１２０−３から出力された選択情報（ｓｅｌ）に応じ、末端情報収集部１２０−１−１〜１２０−１−ｎが更新要求を生成するパス等がクリティカルパスになる可能性がある。
【０１７１】
このため、各階層の子情報収集部が隣接しており、かつ３つ以上の子情報収集部を跨がないような場合、必ずしもレジスタＢ１２９及びレジスタＣ１３０を備える必要はない。本実施形態において末端情報収集部１２０−１−１〜１２０−１−ｎは、レジスタＣ１３０を備えているが、通常、末端情報収集部１２０−１−１〜１２０−１−ｎとそれらに接続されるＰＥアレイ１１０とは隣接して設けられているため、末端情報収集部１２０−１−１〜１２０−１−ｎは、レジスタＣを備えていなくてもよい。同様の理由により、末端情報収集部１２０−１はレジスタＢを備えていなくてもよい。
【０１７２】
また、上位情報収集部１２０−３においても、受け付ける選択情報（ｓｅｌ）は、上位の子情報収集部から出力されるのではなく、ＳＩＭＤアレイ用情報収集命令によって直接出力される。そのため、クリティカルなパスが生成される可能性は少なく、レジスタＣ１３０を備えていなくてもよい。本実施形態においては、上位情報収集部１２０−３がレジスタＣ１３０を備えているため、上位情報収集部１２０−３から収集結果データが得られるまでの遅延は、実際にはより少なく、２クロック目で上位情報収集部１２０−３は最初の収集結果データを得ることができる。
【０１７３】
図１０は、図５〜図８に示したＳＩＭＤアレイ型プロセッサにおいて末端情報収集部１２０−１〜１２０−ｎからレジスタＢ１２９及びレジスタＣ１３０を除き、上位情報収集部１２０−３からレジスタＣ１３０を除いた場合の構成の一例を示すブロック図である。
【０１７４】
このように本実施形態においては、ＰＥアレイ１１０のＰＥのそれぞれは、データ（ｄｉ）及び条件フラグ（ｆｉ）を情報収集部１２０へ出力し、条件フラグを非アクティブに更新するための更新要求（ｆｏ）を受け付けると、受け付けた更新要求（ｆｏ）に応じて条件フラグを非アクティブに更新する。また、情報収集部１２０は、ＰＥアレイ１１０のＰＥのそれぞれから出力されたデータ（ｄｉ）及び条件フラグ（ｆｉ）を受け付けると、受け付けた条件フラグ（ｆｉ）がアクティブであるＰＥの中から、所定の優先順位に基づいて１つのＰＥを選択し、選択されたＰＥから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求（ｆｏ）を出力する。
【０１７５】
そのため、クリティカルパスによって動作速度を制限されることがない。
【０１７６】
また、条件フラグを更新するのに必要な遅延クロックサイクル数に依らず、ＳＩＭＤ型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
【０１７７】
また、多数のＰＥのデータを収集する場合、階層化された子情報収集部を用いることにより、配線の容易性や処理負荷の分散を図ることができる。
【０１７８】
（第３の実施形態）
図１１は、本発明のプロセッサを適用したＳＩＭＤアレイ型プロセッサの第３の実施形態の構成を示すブロック図である。
【０１７９】
本実施形態のＳＩＭＤアレイ型プロセッサは図１１に示すように、Ｐ個のＰＥから構成されるＰＥアレイ２１０と、ＰＥアレイ２１０のＰＥのうち、所定の条件を満たすデータを有するＰＥからデータを収集する情報収集部２２０とを備えている。なお、Ｐは２以上の自然数である。
【０１８０】
ＰＥアレイ２１０は、各ＰＥの条件フラグ（ｆｉ）及びデータ（ｄｉ）を情報収集部２２０へ出力する。
【０１８１】
情報収集部２２０は、ＰＥアレイ２１０から出力された各ＰＥの条件フラグ（ｆｉ）及び各ＰＥのデータ（ｄｉ）を受け付ける。また、各ＰＥの条件フラグを非アクティブに更新させるための更新要求（ｆｏ）をＰＥアレイ２１０の各ＰＥへ出力する。また、情報収集部２２０は、少なくとも１つのＰＥの条件フラグがアクティブであることを示す検知結果（ｄｅｔ）と、各ＰＥのうち選択されたＰＥのデータである選択データ（ｄｏ）とを出力する。また、情報収集部２２０は、階層化されており、末端情報収集部層２２０−１と、中間情報収集部層２２０−２と、上位情報収集部２２０−３とを備えている。なお、本実施形態においては、中間情報収集部層２２０−２を１階層としているが、中間情報収集部層２２０−２をさらに複数の階層に分割してもよい。また、逆に中間情報収集部層２２０−２を設けなくてもよい。
【０１８２】
末端情報収集部層２２０−１は、ＰＥアレイ２１０と直接接続された階層であり、末端情報収集部２２０−１−１〜２２０−１−ｎを備えている。また、末端情報収集部層２２０−１は、ＰＥアレイ２１０から出力された各ＰＥの条件フラグ（ｆｉ）及びデータ（ｄｉ）を受け付ける。そして、受け付けた条件フラグ（ｆｉ）及びデータ（ｄｉ）に基づき、検知結果（ｄｅｔ）及び選択データ（ｄｏ）を中間情報収集部層２２０−２へ出力する。また、末端情報収集部層２２０−１は、中間情報収集部層２２０−２から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。そして、受け付けた選択情報（ｓｅｌ）に基づき、更新要求（ｆｏ）をＰＥアレイ２１０へ出力する。
【０１８３】
中間情報収集部層２２０−２は、末端情報収集部２２０−１に接続された階層であり、中間情報収集部２２０−２−１〜２２０−２−ｎを備えている。また、中間情報収集部層２２０−２は、末端情報収集部層２２０−１から出力された検知結果（ｄｅｔ）及び選択データ（ｄｏ）のそれぞれをそれぞれ条件フラグ（ｆｉ）及びデータ（ｄｉ）として受け付ける。そして、受け付けた条件フラグ（ｆｉ）及びデータ（ｄｉ）に基づき、検知結果（ｄｅｔ）及び選択データ（ｄｏ）を上位情報収集部２２０−３へ出力する。また、中間情報収集部層２２０−２は、上位情報収集部２２０−３から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。そして、受け付けた選択情報（ｓｅｌ）に基づき、更新要求（ｆｏ）を末端情報収集部２２０−１へ出力する。
【０１８４】
上位情報収集部２２０−３は、中間情報収集部層２２０−２に接続され、中間情報収集部層２２０−２から出力された検知結果（ｄｅｔ）及び選択データ（ｄｏ）のそれぞれをそれぞれ条件フラグ（ｆｉ）及びデータ（ｄｉ）として受け付ける。そして、受け付けた条件フラグ（ｆｉ）及びデータ（ｄｉ）に基づき、検知結果（ｄｅｔ）及び選択データ（ｄｏ）を出力する。なお、上位情報収集部２２０−３から出力される選択データ（ｄｏ）は、ＳＩＭＤ型データ収集命令に対する出力である収集結果データとなる。また、上位情報収集部２２０−３は、ＳＩＭＤ型データ収集命令の実行要求を選択情報（ｓｅｌ）として受け付け、受け付けた選択情報（ｓｅｌ）に基づき、中間情報収集部層２２０−２へ更新要求（ｆｏ）を出力する。
【０１８５】
なお、末端情報収集部２２０−１−１〜２２０−１−ｎ、中間情報収集部２２０−２−１〜２２０−２−ｎ及び上位情報収集部２２０−３は、入出力される信号や内部の信号線のビット幅以外は同様の構成である。以降、末端情報収集部２２０−１−１〜２２０−１−ｎ、中間情報収集部２２０−２−１〜２２０−２−ｎ及び上位情報収集部２２０−３をまとめていう場合、子情報収集部という。
【０１８６】
図１２は、図１１に示した末端情報収集部２２０−１−１の構成の一例を示すブロック図であり、ＰＥアレイ２１０のＰＥの数がＡ個である場合を示す。なお、Ａは２以上の自然数である。
【０１８７】
図１１に示した末端情報収集部２２０−１−１は図１２に示すように、第２の条件フラグ修正部である条件フラグ修正部２２１と、条件フラグ検知部２２２と、第３の条件フラグ選択部である条件フラグ選択部２２３と、第３のデータ選択部であるデータ選択部２２４と、第２の選択結果保存部である選択結果保存部２２５とを備えている。
【０１８８】
条件フラグ修正部２２１、条件フラグ選択部２２３及びデータ選択部２２４のそれぞれの構成は、図１に示した条件フラグ修正部２１、条件フラグ選択部２３及びデータ選択部２４のそれぞれの構成と同様であるため、説明を省略する。
【０１８９】
条件フラグ検知部２２２は、ＰＥアレイ２１０から出力された各ＰＥの条件フラグ（ｆｉ）を受け付ける。そして、受け付けた条件フラグ（ｆｉ）のうち少なくとも１つのビットまたは少なくとも２つのビットがアクティブであること検知する。そして、少なくとも１つのビットがアクティブであることを示す第１の検知結果と、少なくとも２つのビットがアクティブであることを示す第２の検知結果とを出力する。なお、図１２においては、条件フラグ検知部２２２から出力される第１の検知結果及び第２の検知結果をｄｅｔと表記している。
【０１９０】
選択結果保存部２２５は、１個のレジスタ（不図示）を備えている。選択結果保存部２２５は、条件フラグ選択部２２３から出力された選択結果を受け付け、受け付けた選択結果をレジスタに記憶させる。また、選択結果保存部２２５は、レジスタに記憶された値と、中間情報収集部層２２０−２から出力された選択情報との論理積を計算するＡＮＤ回路（不図示）を備えており、その論理積の結果を条件フラグ修正情報として条件フラグ修正部２２１へ出力する。また、ＰＥアレイ２１０へ更新要求を出力する。
【０１９１】
なお、本実施形態において、子情報収集部の構成は階層毎に若干異なる。例えば、末端情報収集部２２０−１−１〜２２０−１−ｎまたは中間情報収集部２２０−２−１〜２２０−２−ｎの条件フラグ検知部２２２は、条件フラグ修正部２２１から出力された修正済条件フラグではなく、ＰＥアレイ２１０または末端情報収集部層２２０−１から出力された条件フラグを受け付ける。一方、上位情報収集部２２０−３の条件フラグ検知部２２２は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。また、末端情報収集部２２０−１−１〜２２０−１−ｎまたは中間情報収集部２２０−２−１〜２２０−２−ｎにおいて、データ選択部２２４によるＰＥのデータの選択は、条件フラグ選択部２２３からの出力に基づいて行われる。一方、上位情報収集部２２０−３において、データ選択部２２４によるＰＥのデータの選択は、選択結果保存部２２５からの出力に基づいて行われる。
【０１９２】
以下に、上記のように構成されたＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作について説明する。なお、ここでは、末端情報収集部層２２０−１と上位情報収集部２２０−３との２階層から情報収集部２２０が構成される場合について説明する。
【０１９３】
図１３は、図１１に示したＳＩＭＤアレイ型プロセッサの一構成例を示すブロック図であり、情報収集部２２０が２階層で構成される場合を示す。
【０１９４】
図１３に示すＳＩＭＤアレイ型プロセッサは、ＰＥアレイ２１０が８個のＰＥ（ＰＥ７〜ＰＥ０）を有しており、この８個のＰＥのそれぞれの条件フラグは、ＰＥ７〜ＰＥ０の順番に「１１０１１０１１」である。また、末端情報収集部層２２０−１は、４つの末端情報収集部２２０−１−１〜２２０−１−４を備えており、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれは、２つのＰＥの条件フラグに対応している。例えば、末端情報収集部２２０−１−１は、ＰＥ７及びＰＥ６の条件フラグである「１１」を受け付ける。
【０１９５】
なお、末端情報収集部層２２０−１と上位情報収集部層２２０−３との間に長いパスが生成され、これがクリティカルパスとなることを回避するため、末端情報収集部２２０−１−１〜２２０−１−４は、データ選択部２２４による選択データを記憶するレジスタＡ２２８を備えている。
【０１９６】
図１４は、図１１〜図１３に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。ここでは、遅延クロックサイクル数が１クロックサイクルであるものとする。また、図中左側のＰＥにより高い優先順位を与えるものとする。
【０１９７】
図１４は、各クロックにおける条件フラグの値と、各クロックにおける末端情報収集部２２０−１−１〜２２０−１−４及び上位情報収集部２２０−３の各種レジスタ値とを示している。
【０１９８】
まず、末端情報収集部の列について説明する。条件フラグ（修正済み）の列は、末端情報収集部２２０−１−１〜２２０−１−４と接続される各ＰＥの条件フラグと、末端情報収集部２２０−１−１〜２２０−１−４の条件フラグ修正部２２１によって修正された修正済条件フラグとを示す。
【０１９９】
条件フラグ選択部（選択結果保存部）の列は、末端情報収集部２２０−１−１〜２２０−１−４の条件フラグ選択部２２３による選択結果と、その選択結果を記憶する選択結果保存部２２５のレジスタの値とを示す。
【０２００】
データ選択部（レジスタＡ）の列は、末端情報収集部２２０−１−１〜２２０−１−４のデータ選択部２２４によって選択されたデータを有するＰＥと、そのＰＥを記憶するレジスタＡ２２８の値を示す。
【０２０１】
次に、上位情報収集部の列について説明する。条件フラグ修正部の列は、上位情報収集部２２０−３の条件フラグ修正部２２１によって修正された修正済条件フラグを示す。
【０２０２】
条件フラグ選択部（選択結果保存部）の列は、上位情報収集部２２０−３の条件フラグ選択部２２３の選択結果と、その選択結果を記憶した選択結果保存部２２５のレジスタの値とを示す。
【０２０３】
データ選択部の列は、上位情報収集部２２０−３のデータ選択部２２４によって選択されたデータを有するＰＥを示す。
【０２０４】
以下に、図１１〜図１３に示したＳＩＭＤアレイ型プロセッサにおいてデータを収集する動作をクロック毎に説明する。
【０２０５】
まず、０クロック目は、ＳＩＭＤアレイ用情報収集命令を実行する最初のサイクルである。そのため、ＰＥアレイ２１０から出力された各ＰＥの条件フラグ（ｆｉ）を受け付けた末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ修正部２２１は、受け付けた条件フラグ（ｆｉ）を修正済条件フラグとして条件フラグ検知部２２及び条件フラグ選択部２３へ出力する。具体的には、末端情報収集部２２０−１−１〜２２０−１−４の順番に、「１１，０１，１０，１１」が出力される。
【０２０６】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、データ選択部２２４及び選択結果保存部２２５へ選択結果を出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた修正済条件フラグが「１１」なので、最も左側にある１を選択した選択結果は「１０」となる。同様に、末端情報収集部２２０−１−２の場合、受け付けた修正済条件フラグが「０１」なので、最も左側にある１を選択した選択結果は「０１」となる。この選択結果を末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において０クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「１００１１０１０」となる。
【０２０７】
条件フラグ選択部２２３から出力された選択結果と、ＰＥアレイ２１０から出力された各ＰＥのデータとを受け付けた末端情報収集部２２０−１−１〜２２０−１−４のそれぞれのデータ選択部２２４は、受け付けた選択結果に応じたＰＥのデータを選択する。そして、選択されたＰＥのデータを選択データ（ｄｏ）として上位情報収集部２２０−３へ出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、条件フラグ選択部２２３の選択結果が「１０」なのでＰＥ７のデータが選択データとなる。また、末端情報収集部２２０−１−２の場合、条件フラグ選択部２２３の選択結果が「０１」なのでＰＥ４のデータが選択データとなる。これを末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において０クロック目の行の末端情報収集部のデータ選択部の列が示すように、「ＰＥ７，ＰＥ４，ＰＥ３，ＰＥ１」となる。これらのＰＥのデータは、選択データとして０クロック目の終わりのクロックエッジにおいて、レジスタＡ２２８に記憶される。
【０２０８】
また、条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２２５は、０クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部２２５内のレジスタに記憶させる。
【０２０９】
また、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ検知部２２２は、上位情報収集部２２０−３の条件フラグ修正部２２１へ第１の検知結果及び第２の検知結果（ｄｅｔ）を出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、ＰＥアレイ２１０から受け付ける条件フラグは「１１」であり、２つとも「１」である。従って、第１の検知結果及び第２の検知結果はともに「１」となる。また、末端情報収集部２２０−１−２の場合、ＰＥアレイ２１０から受け付ける条件フラグは「０１」であり、少なくとも１つが「１」である。従って、第１の検知結果は「１」であるが、第２の検知結果は「０」となる。このようにして、末端情報収集部２２０−１−１〜２２０−１−４の第１の検知結果及び第２の検知結果をまとめると、第１の検知結果は「１１１１」となり、第２の検知結果は「１００１」となる。
【０２１０】
ここで説明しているのはＳＩＭＤアレイ用情報収集命令を実行する最初のサイクルである。そのため、上位情報収集部２２０−３の条件フラグ修正部２２１は、第１の検知結果である「１１１１」を修正済条件フラグとして出力する。これを図１４において０クロック目の行の上位情報収集部の条件フラグ修正部の列に示す。
【０２１１】
上位情報収集部２２０−３の条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果である「１０００」を０クロック目の終わりのクロックエッジにて選択結果保存部２２５内のレジスタに記憶させる。
【０２１２】
次に、１クロック目において上位情報収集部２２０−３の選択結果保存部２２５は、選択結果保存部２２５内のレジスタに記憶された選択結果「１０００」を更新要求（ｆｏ）として末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５へ出力する。
【０２１３】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５は、上位情報収集部２２０−３の選択結果保存部２２５から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた選択情報（ｓｅｌ）は「１」である。また、末端情報収集部２２０−１−２〜２２０−１−４の場合、受け付けた選択情報（ｓｅｌ）は「０」である。
【０２１４】
従って、末端情報収集部２２０−１−１の選択結果保存部２２５は、受け付けた選択情報（ｓｅｌ）と、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「１０」との論理積を計算する。ここでは、計算された論理積は「１０」となる。末端情報収集部２２０−１−１の選択結果保存部２２５は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部２２１へ出力する。
【０２１５】
選択結果保存部２２５から出力された条件フラグ修正情報を受け付けた条件フラグ修正部２２１は、受け付けた条件フラグ修正情報「１０」と、ＰＥアレイ２１０から受け付けたＰＥの条件フラグ「１１」との排他的論理和である「０１」を修正済条件フラグとする。一方、他の末端情報収集部２２０−１−２〜２２０−１−４の条件フラグ修正部２２１は、ＰＥアレイ２１０から受け付けた条件フラグをそのまま出力する。これにより、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ修正部２２１が出力する修正済条件フラグをまとめると「０１０１１０１１」となる。これを図１４において１クロック目の行の末端情報収集部の条件フラグ（修正済み）の列に示す。
【０２１６】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、データ選択部２２４及び選択結果保存部２２５へ選択結果を出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた修正済条件フラグが「０１」なので、最も左側にある１を選択した選択結果は「０１」となる。同様に、末端情報収集部２２０−１−２の場合、受け付けた修正済条件フラグが「０１」なので、最も左側にある１を選択した結果は「０１」となる。この選択結果を末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において１クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「０１０１１０１０」となる。
【０２１７】
条件フラグ選択部２２３から出力された選択結果と、ＰＥアレイ２１０から出力された各ＰＥのデータとを受け付けた末端情報収集部２２０−１−１〜２２０−１−４のそれぞれのデータ選択部２２４は、受け付けた選択結果に応じたＰＥのデータを選択する。そして、選択されたＰＥのデータを選択データ（ｄｏ）として上位情報収集部２２０−３へ出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、条件フラグ選択部２２３の選択結果が「０１」なのでＰＥ６のデータが選択データとなる。また、末端情報収集部２２０−１−２の場合、条件フラグ選択部２２３の選択結果が「０１」なのでＰＥ４のデータが選択データとなる。これを末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において１クロック目の行の末端情報収集部のデータ選択部の列が示すように、「ＰＥ６，ＰＥ４，ＰＥ３，ＰＥ１」となる。これらのＰＥのデータは、選択データとして１クロック目の終わりのクロックエッジにおいて、レジスタＡ２２８に記憶される。
【０２１８】
また、条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２２５は、１クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部２２５内のレジスタに記憶させる。
【０２１９】
また、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ検知部２２２は、上位情報収集部２２０−３の条件フラグ修正部２２１へ第１の検知結果及び第２の検知結果（ｄｅｔ）を出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、ＰＥアレイ２１０から受け付ける条件フラグは「１１」であり、２つとも「１」である。従って、第１の検知結果及び第２の検知結果はともに「１」となる。また、末端情報収集部２２０−１−２の場合、ＰＥアレイ２１０から受け付ける条件フラグは「０１」であり、少なくとも１つが「１」である。従って、第１の検知結果は「１」であるが、第２の検知結果は「０」となる。このようにして、末端情報収集部２２０−１−１〜２２０−１−４の第１の検知結果及び第２の検知結果をまとめると、第１の検知結果は「１１１１」となり、第２の検知結果は「１００１」となる。
【０２２０】
ここで説明しているのは、ＳＩＭＤアレイ用情報収集命令を連続して実行するサイクルである。そのため、上位情報収集部２２０−３の条件フラグ修正部２２１は、選択結果保存部２２５に記憶されているレジスタ値「１０００」と、受け付けた第２の検知結果「１００１」とのビット単位の論理積を計算する。さらに、レジスタ値のビット単位の論理反転結果「０１１１」と、受け付けた第１の検知結果「１１１１」とのビット単位の論理積を計算する。そして、計算された２つの論理積のビット単位の論理和を修正済条件フラグとして出力する。ここでは、「１０００」と「０１１１」の論理和が計算され、図１４において１クロック目の行の上位情報収集部の条件フラグ修正部の列に示すように「１１１１」が修正済条件フラグとして出力される。
【０２２１】
上位情報収集部２２０−３の条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果である「１０００」を１クロック目の終わりのクロックエッジにおいて選択結果保存部２２５内のレジスタに記憶させる。なお、ここでは、０クロック目において記憶された選択結果が１クロック目における選択結果に更新される。
【０２２２】
また、上位情報収集部２２０−３のデータ選択部２２４は、選択結果保存部２２５のレジスタに記憶された更新前の選択結果を取得する。そして、その取得した選択結果においてアクティブであるビットに対応する末端情報収集部２２０−１−１〜２２０−１−４から出力されたデータを選択する。ここでは、更新前に選択結果保存部２２５のレジスタに記憶されていた選択結果「１０００」においてアクティブであるビットに対応するのは末端情報収集部２２０−１−１である。そのため、末端情報収集部２２０−１−１から出力されたＰＥ７のデータが選択される。そして、ＰＥ７のデータが収集結果データとして出力される。
【０２２３】
また、１クロック目の終わりのクロックエッジにおいて、上位情報収集部２２０−３の選択結果保存部２２５は、更新前にレジスタに記憶されていた選択結果「１０００」を更新要求（ｆｏ）として末端情報収集部２２０−１−１〜２２０−１−４の選択結果保存部２２５へ出力する。
【０２２４】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５は、上位情報収集部２２０−３の選択結果保存部２２５から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた選択情報（ｓｅｌ）は「１」である。また、末端情報収集部２２０−１−２〜１２０−１−４の場合、受け付けた選択情報（ｓｅｌ）は「０」である。
【０２２５】
従って、末端情報収集部２２０−１−１の選択結果保存部２２５は、受け付けた選択情報（ｓｅｌ）を、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「１０」との論理積を計算する。ここでは、計算された論理積は「１０」となる。末端情報収集部２２０−１−１の選択結果保存部２２５は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部２２１へ出力する。また、末端情報収集部２２０−１−１の選択結果保存部２２５は、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「１０」を更新要求（ｆｏ）としてＰＥアレイ２１０へ出力する。
【０２２６】
末端情報収集部２２０−１−１から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ２１０では、受け付けた更新要求（ｆｏ）「１０」の「１」に対応するＰＥ７の条件フラグが非アクティブに更新される。この結果、条件フラグは、図１４において２クロック目の行の条件フラグの列に示すように、「０１０１１０１１」となる。
【０２２７】
次に、２クロック目は、１クロック目と同様にＳＩＭＤアレイ用情報収集命令を連続して実行するサイクルである。上位情報収集部２２０−３の選択結果保存部２２５は、選択結果保存部２２５内のレジスタに記憶された選択結果「１０００」を更新要求（ｆｏ）として末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５へ出力する。
【０２２８】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５は、上位情報収集部２２０−３の選択結果保存部２２５から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた選択情報（ｓｅｌ）は「１」である。また、末端情報収集部２２０−１−２〜２２０−１−４の場合、受け付けた選択情報（ｓｅｌ）は「０」である。
【０２２９】
従って、末端情報収集部２２０−１−１の選択結果保存部２２５は、受け付けた選択情報（ｓｅｌ）と、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「０１」との論理積を計算する。ここでは、計算された論理積は「０１」となる。末端情報収集部２２０−１−１の選択結果保存部２２５は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部２２１へ出力する。
【０２３０】
選択結果保存部２２５から出力された条件フラグ修正情報を受け付けた条件フラグ修正部２２１は、受け付けた条件フラグ修正情報「０１」と、ＰＥアレイ２１０から受け付けたＰＥの条件フラグ「０１」との排他的論理和である「００」を修正済条件フラグとする。
一方、他の末端情報収集部２２０−１−２〜２２０−１−４の条件フラグ修正部２２１は、ＰＥアレイ２１０から受け付けた条件フラグをそのまま出力する。これにより、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ修正部２２１が出力する修正済条件フラグをまとめると「０００１１０１１」となる。これを図１４において２クロック目の行の末端情報収集部の条件フラグ（修正済み）の列に示す。
【０２３１】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、データ選択部２２４及び選択結果保存部２２５へ選択結果を出力する。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた修正済条件フラグが「００」なので、最も左側にある１を選択した選択結果は「００」となる。同様に、末端情報収集部２２０−１−２の場合、受け付けた修正済条件フラグが「０１」なので、最も左側にある１を選択した結果は「０１」となる。この選択結果を末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において２クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「０００１１０１０」となる。
【０２３２】
条件フラグ選択部２２３から出力された選択結果と、ＰＥアレイ２１０から出力された各ＰＥのデータとを受け付けた末端情報収集部２２０−１−１〜２２０−１−４のそれぞれのデータ選択部２２４は、受け付けた選択結果に応じたＰＥのデータを選択する。そして、選択されたＰＥのデータを選択データ（ｄｏ）として上位情報収集部２２０−３へ出力する。ここでは、例えば、末端情報収集部２２０−１−２の場合、条件フラグ選択部２２３の選択結果が「０１」なのでＰＥ４のデータが選択データとなる。これを末端情報収集部２２０−１−１〜２２０−１−４についてまとめると、図１４において２クロック目の行の末端情報収集部のデータ選択部の列が示すように、「ＰＥ６，ＰＥ４，ＰＥ３，ＰＥ１」となる。これらのＰＥのデータは、選択データとして２クロック目の終わりのクロックエッジにおいて、レジスタＡ２２８に記憶される。なお、末端情報収集部２２０−１−１の場合、条件フラグ選択部２２３による選択結果が「００」となる。従って、データ選択部２２４は、新たにデータを選択せず、レジスタＡ２２８には既に記憶されているＰＥ６のデータがそのまま保持される。
【０２３３】
また、条件フラグ選択部２３から出力された選択結果を受け付けた選択結果保存部２２５は、２クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部２２５内のレジスタに記憶させる。
【０２３４】
また、末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの条件フラグ検知部２２２は、上位情報収集部２２０−３の条件フラグ修正部２２１へ第１の検知結果及び第２の検知結果（ｄｅｔ）を出力する。ここでは、例えば、末端情報収集部２２０−１−１，２２０−１−２の場合、受け付ける条件フラグは「０１」であり、少なくとも１つが「１」である。従って、第１の検知結果は「１」であるが、第２の検知結果は「０」となる。このようにして、末端情報収集部２２０−１−１〜２２０−１−４の第１の検知結果及び第２の検知結果をまとめると、第１の検知結果は「１１１１」となり、第２の検知結果は「０００１」となる。
【０２３５】
ここで説明しているのは、ＳＩＭＤアレイ用情報収集命令を連続して実行するサイクルである。そのため、上位情報収集部２２０−３の条件フラグ修正部２２１は、選択結果保存部２２５に記憶されているレジスタ値「１０００」と、受け付けた第２の検知結果「０００１」とのビット単位の論理積を計算する。さらに、レジスタ値のビット単位の論理反転結果「０１１１」と、受け付けた第１の検知結果「１１１１」とのビット単位の論理積を計算する。そして、計算された２つの論理積のビット単位の論理和が計算され、図１４において２クロック目の行の上位情報収集部の条件フラグ修正部の列に示すように「０１１１」が修正済条件フラグとして出力される。
【０２３６】
上位情報収集部２２０−３の条件フラグ選択部２２３は、条件フラグ修正部２２１から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「１」を選択する。そして、その選択結果である「０１００」を２クロック目の終わりのクロックエッジにおいて選択結果保存部２２５内のレジスタに記憶させる。なお、ここでは、１クロック目において記憶された選択結果が２クロック目における選択結果に更新される。
【０２３７】
また、上位情報収集部２２０−３のデータ選択部２２４は、選択結果保存部２２５のレジスタに記憶された更新前の選択結果を取得する。そして、その取得した選択結果においてアクティブであるビットに対応する末端情報収集部２２０−１−１〜２２０−１−４から出力されたデータを選択する。ここでは、更新前に選択結果保存部２２５のレジスタに記憶されていた選択結果「１０００」においてアクティブであるビットに対応するのは末端情報収集部２２０−１−１である。そのため、末端情報収集部２２０−１−１から出力されたＰＥ６のデータが選択される。そして、ＰＥ６のデータが収集結果データとして出力される。
【０２３８】
また、２クロック目の終わりのクロックエッジにおいて、上位情報収集部２２０−３の選択結果保存部２２５は、更新前にレジスタに記憶されていた選択結果「１０００」を更新要求（ｆｏ）として末端情報収集部２２０−１−１〜２２０−１−４の選択結果保存部２２５へ出力する。
【０２３９】
末端情報収集部２２０−１−１〜２２０−１−４のそれぞれの選択結果保存部２２５は、上位情報収集部２２０−３の選択結果保存部２２５から出力された更新要求（ｆｏ）を選択情報（ｓｅｌ）として受け付ける。ここでは、例えば、末端情報収集部２２０−１−１の場合、受け付けた選択情報（ｓｅｌ）は「１」である。また、末端情報収集部２２０−１−２〜１２０−１−４の場合、受け付けた選択情報（ｓｅｌ）は「０」である。
【０２４０】
従って、末端情報収集部２２０−１−１の選択結果保存部２２５は、受け付けた選択情報（ｓｅｌ）と、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「０１」との論理積を計算する。ここでは、計算された論理積は「０１」となる。末端情報収集部２２０−１−１の選択結果保存部２２５は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部２２１へ出力する。また、末端情報収集部２２０−１−１の選択結果保存部２２５は、選択結果保存部２２５内のレジスタに記憶された前のサイクルの選択結果「０１」を更新要求（ｆｏ）としてＰＥアレイ２１０へ出力する。
【０２４１】
末端情報収集部２２０−１−１から出力された更新要求（ｆｏ）を受け付けたＰＥアレイ２１０では、受け付けた更新要求（ｆｏ）「０１」の「１」に対応するＰＥ６の条件フラグが非アクティブに更新される。この結果、条件フラグは、図１４において３クロック目の行の条件フラグの列に示すように、「０００１１０１１」となる。
【０２４２】
３クロック目〜７クロック目も同様に処理することにより、ＳＩＭＤアレイ用情報収集命令を連続して発行することができる。
【０２４３】
なお、本実施形態においては、ＰＥの数を８個としている。そのため、上位情報収集部２２０−３が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合が高くなっている。しかし、実際にはＰＥの数は１２８個等と多いため、上位情報収集部２２０−３が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合は限りなく小さくなる。
【０２４４】
このように本実施形態においては、ＰＥアレイ２１０のＰＥのそれぞれは、データ（ｄｉ）及び条件フラグ（ｆｉ）を情報収集部２２０へ出力し、条件フラグを非アクティブに更新するための更新要求（ｆｏ）を受け付けると、受け付けた更新要求（ｆｏ）に応じて条件フラグを非アクティブに更新する。また、情報収集部２２０は、ＰＥアレイ２１０のＰＥのそれぞれから出力されたデータ（ｄｉ）及び条件フラグ（ｆｉ）を受け付けると、受け付けた条件フラグ（ｆｉ）がアクティブであるＰＥの中から、所定の優先順位に基づいて１つのＰＥを選択し、選択されたＰＥから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求（ｆｏ）を出力する。
【０２４５】
そのため、クリティカルパスによって動作速度を制限されることがない。
【０２４６】
また、条件フラグを更新するのに１クロックサイクルの遅延が発生する場合でも、ＳＩＭＤ型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
【０２４７】
また、多数のＰＥのデータを収集する場合、階層化された子情報収集部を用いることにより、配線の容易性や処理負荷の分散を図ることができる。
【符号の説明】
【０２４８】
１０，１１０，２１０    ＰＥアレイ
２０，１２０，２２０    情報収集部
２１，２２１    条件フラグ修正部
２２，１２２，２２２    条件フラグ検知部
２３，１２３，２２３    条件フラグ選択部
２３−１，２３−２    ビット置換器
２３−３    リーディングゼロ
２４，１２４，２２４    データ選択部
２５，２２５    選択結果保存部
２５−１    シフトレジスタ
２５−２，１２７−４    論理和器
２６    条件フラグ更新部
１２０−１，２２０−１    末端情報収集部層
１２０−１−１〜１２０−１−ｎ，２２０−１−１〜２２０−１−ｎ    末端情報収集部
１２０−２，２２０−２    中間情報収集部層
１２０−２−１〜１２０−１−ｎ，２２０−２−１〜２２０−２−ｎ    中間情報収集部
１２０−３，２２０−３    上位情報収集部
１２７    カウント制御部
１２７−１，１２７−２    セレクタ
１２７−３    レジスタ
１２７−５    デクリメンタ
１２７−６    論理否定器
１２７−７    論理積器
１２７−８    加算器
１２８，２２８    レジスタＡ
１２９    レジスタＢ
１３０    レジスタＣ
１３１    レジスタＤ
【図１】
2010191696.tif 000003
【図２】
2010191696.tif 000004
【図３】
2010191696.tif 000005
【図４】
2010191696.tif 000006
【図５】
2010191696.tif 000007
【図６】
2010191696.tif 000008
【図７】
2010191696.tif 000009
【図８】
2010191696.tif 000010
【図９】
2010191696.tif 000011
【図１０】
2010191696.tif 000012
【図１１】
2010191696.tif 000013
【図１２】
2010191696.tif 000014
【図１３】
2010191696.tif 000015
【図１４】
2010191696.tif 000016
【図１５】
2010191696.tif 000017
【手続補正書】
【提出日】平成22年3月29日(2010.3.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算命令に基づいて並列に動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサであって、
前記複数のプロセッシングエレメントのそれぞれは、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力し、その後、前記条件フラグを非アクティブに更新させるための更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新し、
前記情報収集部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付けると、該受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択し、該選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力するプロセッサ。
【請求項２】
請求項１に記載のプロセッサにおいて、
前記情報収集部は、
前記選択されたプロセッシングエレメントを示す選択結果を記憶し、該記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成して出力する第１の選択結果保存部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第１の選択結果保存部から出力された前記条件フラグ修正情報に応じて修正し、該修正された修正済条件フラグを出力する第１の条件フラグ修正部と、
前記第１の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメント示す前記選択結果を出力する第１の条件フラグ選択部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第１の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記データを前記収集結果データとして出力する第１のデータ選択部と、
前記第１の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力する条件フラグ更新部と、を有し、
前記第１の選択結果保存部は、前記第１の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果を記憶するプロセッサ。
【請求項３】
請求項２に記載のプロセッサにおいて、
前記第１の選択結果保存部は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶し、前記記憶された選択結果の論理和を前記条件フラグ修正情報とするプロセッサ。
【請求項４】
請求項２または請求項３に記載のプロセッサにおいて、
前記第１の条件フラグ修正部は、前記受け付けた条件フラグと、前記第１の選択結果保存部から出力された前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとするプロセッサ。
【請求項５】
請求項１に記載のプロセッサにおいて、
前記情報収集部は、
前記選択されたプロセッシングエレメントを示す選択結果を記憶する第２の選択結果保存部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第２の選択結果保存部に記憶された選択結果に応じて修正し、該修正された修正済条件フラグを出力する第２の条件フラグ修正部と、
前記第２の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択し、該選択されたプロセッシングエレメントを示す前記選択結果を出力する第３の条件フラグ選択部と、
前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第３の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示す前記プロセッシングエレメントの前記データを収集結果データとして出力する第３のデータ選択部と、を有し、
前記第２の選択結果保存部は、前記条件フラグ選択部から出力された前記選択結果を受け付け、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶するプロセッサ。
【請求項６】
請求項５に記載のプロセッサにおいて、
前記情報収集部は、前記複数のプロセッシングエレメントから出力された前記条件フラグを受け付ける条件フラグ検知部を有し、
前記条件フラグ検知部は、前記条件フラグを更新するために必要な遅延クロックサイクル数が１クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知し、
前記第２の選択結果保存部は、前記条件フラグ検知部にて検知された結果に応じて前記更新要求を出力するプロセッサ。
【請求項７】
データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、演算命令に基づいて並列して動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサにおけるデータ収集方法であって、
前記複数のプロセッシングエレメントのそれぞれが、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力する処理と、
前記情報収集部が、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付ける処理と、
前記情報収集部が、前記受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて１つのプロセッシングエレメントを選択する選択処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントのデータを収集結果データとして出力する処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための更新要求を出力する更新要求出力処理と、
前記プロセッシングエレメントのそれぞれが、前記更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新する処理と、を有するデータ収集方法。
【請求項８】
請求項７に記載のデータ収集方法において、
前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する記憶処理をさらに有し、
前記選択処理は、
前記記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成する修正情報生成処理と、
前記受け付けた条件フラグを、前記条件フラグ修正情報に応じて修正した修正済条件フラグを生成する修正済条件フラグ生成処理と、
前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択する処理と、を含むデータ収集方法。
【請求項９】
請求項８に記載のデータ収集方法において、
前記記憶処理は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶する処理であり、
前記修正情報生成処理は、前記記憶された選択結果の論理和を前記条件フラグ修正情報とする処理であるデータ収集方法。
【請求項１０】
請求項８または請求項９に記載のデータ収集方法において、
前記修正済フラグ生成処理は、前記受け付けた条件フラグと前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとする処理であるデータ収集方法。
【請求項１１】
請求項７に記載のデータ収集方法において、
前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する処理をさらに有し、
前記選択処理は、
前記記憶された選択結果に応じ、前記受け付けた前記条件フラグを修正した修正済条件フラグを生成する処理と、
前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて１つ選択する処理と、を含み、
前記更新要求出力処理は、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶する処理をさらに含むデータ収集方法。
【請求項１２】
請求項１１に記載のデータ収集方法において、
前記情報収集部が、前記条件フラグを更新するために必要な遅延クロックサイクル数が１クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知する処理をさらに有し、
前記更新要求出力処理は、前記検知された結果に応じて前記更新要求を出力する処理をさらに含むデータ収集方法。