JP4539889B2 - プロセッサ及びデータ収集方法 - Google Patents

プロセッサ及びデータ収集方法 Download PDF

Info

Publication number
JP4539889B2
JP4539889B2 JP2009035542A JP2009035542A JP4539889B2 JP 4539889 B2 JP4539889 B2 JP 4539889B2 JP 2009035542 A JP2009035542 A JP 2009035542A JP 2009035542 A JP2009035542 A JP 2009035542A JP 4539889 B2 JP4539889 B2 JP 4539889B2
Authority
JP
Japan
Prior art keywords
condition flag
unit
data
selection
information collection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009035542A
Other languages
English (en)
Other versions
JP2010191696A (ja
Inventor
祥平 野本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009035542A priority Critical patent/JP4539889B2/ja
Priority to US13/144,831 priority patent/US8688958B2/en
Priority to PCT/JP2010/050310 priority patent/WO2010095476A1/ja
Priority to EP10743605.7A priority patent/EP2400399A4/en
Publication of JP2010191696A publication Critical patent/JP2010191696A/ja
Application granted granted Critical
Publication of JP4539889B2 publication Critical patent/JP4539889B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

本発明は、並列動作を行うプロセッシングエレメントを有するプロセッサ及びデータ収集方法に関する。
近年、安全及び防犯への意識の高まりに伴い、様々な場所に安全・防犯用のカメラが設置されるようになってきている。そして、その安全・防犯用のカメラが撮影した画像に対して画像処理を施すことにより、自動車事故の回避やオフィスの入退場管理等が実現され始めている。このような画像処理では、短時間で多くの計算を行う必要がある。そのため、画像処理を行う装置には多数のデータを高速に処理することが可能な並列処理プロセッサが用いられている。なお、並列処理プロセッサとは、単一の演算命令で複数のデータを扱うことのできるプロセッサのことである。
この並列処理プロセッサの1つとして、単一の演算命令に基づいて多数のプロセッシングエレメントが並列して動作するSIMD(Single Instruction Multiple Data)アレイ型プロセッサが開発されている。以降、プロセッシングエレメントのことをPEと表記する。このSIMDアレイ型プロセッサでは、多数のPEを並列して動作させることにより、高性能かつ低消費電力な処理を実現することができる。
ここで、処理を行った結果、所定の条件を満たしたデータを処理結果として有するPEから、その所定の条件を満たすデータを収集するアルゴリズムが存在する。例えば、パターンマッチング処理等では、異なる画像に対するマッチングをPE毎に並列して行い、マッチしたPEのデータのみを収集する。なお、所定の条件を満たすデータを有するPEかどうかは、PEの条件フラグによって判定される。条件フラグとは例えば、1ビットで表され、PEが有するデータに応じ、そのデータが所定の条件を満たしていれば「1」を示し、所定の条件を満たしていなければ「0」を示すフラグのことである。以降、ビットが「1」であることをアクティブであるといい、ビットが「0」であることを非アクティブであるという。
SIMDアレイ型プロセッサでは,全てのPEからデータ及び条件フラグを収集し、収集した条件フラグを順次判定することにより、収集したデータを収集結果データとして利用するかどうかを決定する。
しかし、このような方法では、所定の条件を満たさないデータを収集する必要があるとともに、条件フラグをPE毎に順次判定する必要がある。そのため、所定の条件を満たすデータを収集するためのクロックサイクル数が膨大な数になる。
そこで、所定の条件を満たすデータだけをPE毎に付与されているPE番号の小さなPEまたは大きなPEから順番に収集するSIMDアレイ型プロセッサが例えば、特許文献1に開示されている。
図15は、所定の条件を満たすデータだけをPE番号の小さなPEまたは大きなPEから順番に収集するSIMDアレイ型プロセッサの構成の一例を示す図である。
図15に示すSIMDアレイ型プロセッサは、PE300−1〜300−nと、セントラルプロセッサ400とを備えている。
PE300−1〜300−nのそれぞれは、セントラルプロセッサ400から供給される命令を処理する汎用レジスタ301と、ALU(Arithmetic and Logic Unit)群302と、条件フラグを記憶するFレジスタ303と、比較器304と、を備えている。なお、ALUとは、四則演算や論理演算等の算術的な処理を行う回路のことである。
比較器304は、セントラルプロセッサ400のレジスタ404から出力されるPE番号と自身のPE番号とを比較する。
セントラルプロセッサ400は、PE300−1〜300−nへの命令の供給と、SIMDアレイ型プロセッサ全体の制御とを行う。セントラルプロセッサ400は、命令を処理する汎用レジスタ401と、ALU群402と、プライオリティエンコーダ403と、レジスタ404,405とを備えている。
プライオリティエンコーダ403は、所定の優先順位に基づいてPE300−1〜300−nの条件フラグを確認し、条件フラグがアクティブであるPEを示すPE番号を1つずつ選択し、レジスタ404に記憶させる。
レジスタ404は、プライオリティエンコーダ403が選択したPE番号を記憶する。そして、記憶したPE番号をPE300−1〜300−nへ出力する。
レジスタ405は、PE300−1〜300−nから出力されたデータを記憶する。
上述した特許文献1に開示されているSIMDアレイ型プロセッサでは、以下の(1)〜(7)に示す手順で所定の条件を満たすデータを収集する。
(1)PE300−1〜300−nのFレジスタ303に格納されている条件フラグがセントラルプロセッサ400のプライオリティエンコーダ403に入力される。
(2)プライオリティエンコーダ403は、所定の優先順位に基づいてPE300−1〜300−nの条件フラグからアクティブである1つの条件フラグを選択する。
(3)選択された条件フラグに対応するPE300−1〜300−nのPE番号をレジスタ404に記憶させる。
(4)PE指定パス350を用い、上記(3)で記憶されたPE番号を全てのPE300−1〜300−nへブロードキャストする。
(5)PE300−1〜300−nのそれぞれにおいて、ブロードキャストされたPE番号と自身のPE番号とを比較する。
(6)ブロードキャストされたPE番号と自身のPE番号とが一致したPEのみが条件フラグを非アクティブに更新する。そして、そのPEは、汎用レジスタ301のデータをデータ収集パス450を介してレジスタ405へ出力する。
(7)データ収集パス450を介してPEから出力されたデータがレジスタ405に記憶される。
特開2008−71037号公報
上述した特許文献1に開示されているSIMDアレイ型プロセッサを用いることにより、所定の条件を満たすデータだけを収集することができる。
特許文献1に開示されている方法では上記(3)で示したように、処理の途中の結果であるPE番号を一旦レジスタ404に格納している。そのため、上記(1)〜(7)の処理を実行するのに少なくとも2クロックサイクルが必要となる。さらに、通常、条件フラグを更新するためには少なくとも1クロックサイクルの遅延が発生する。
これらにより、所定の条件を満たすデータの収集を連続して行うことができないという問題点がある。
また、セントラルプロセッサ400のレジスタ404からPE番号が出力されてから、PE300−1〜300−nにおけるPE番号の比較を経て、セントラルプロセッサ400のレジスタ405にデータが記憶されるまでの経路は非常に長い。そのため、この経路がクリティカルパスとなり、このクリティカルパスによってプロセッサ全体の動作速度が制限されてしまうという問題点がある。なお、クリティカルパスとは、信号の伝送遅延が最も大きな経路のことである。プロセッサの性能は、クリティカルパスに沿った命令を実行する時間によって制限される。
本発明は、クリティカルパスによって動作速度を制限されることなく、所定の条件を満たすデータを効率的に収集することができるプロセッサ及びデータ収集方法を提供することを目的とする。
上記目的を達成するために本発明は、
演算命令に基づいて並列に動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサであって、
前記複数のプロセッシングエレメントのそれぞれは、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力し、その後、前記条件フラグを非アクティブに更新させるための更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新し、
前記情報収集部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付けると、該受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて1つのプロセッシングエレメントを選択し、該選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力する。
また、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、演算命令に基づいて並列して動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサにおけるデータ収集方法であって、
前記複数のプロセッシングエレメントのそれぞれが、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力する処理と、
前記情報収集部が、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付ける処理と、
前記情報収集部が、前記受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて1つのプロセッシングエレメントを選択する選択処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントのデータを収集結果データとして出力する処理と、
前記情報収集部が、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための更新要求を出力する更新要求出力処理と、
前記プロセッシングエレメントのそれぞれが、前記更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新する処理と、を有する。
本発明によれば、複数のプロセッシングエレメントのそれぞれは、データ及び条件フラグを情報収集部へ出力し、その後、条件フラグを非アクティブに更新させるための更新要求を受け付けると、受け付けた更新要求に応じて条件フラグを非アクティブに更新する。情報収集部は、複数のプロセッシングエレメントのそれぞれから出力されたデータ及び条件フラグを受け付けると、受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて1つのプロセッシングエレメントを選択し、選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求を出力する。
そのため、クリティカルパスによって動作速度を制限されることなく、所定の条件を満たすデータを効率的に収集することができる。
本発明のプロセッサを適用したSIMDアレイ型プロセッサの第1の実施形態の構成を示すブロック図である。 図1に示した条件フラグ選択部の動作を説明するための図であり、(a)は条件フラグ選択部の構成の一例を示すブロック図、(b)は条件フラグ選択部が行うビット列の変換を説明するための図である。 図1に示した選択結果保存部の構成の一例を示すブロック図である。 図1〜図3に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。 本発明のプロセッサを適用したSIMDアレイ型プロセッサの第2の実施形態の構成を示すブロック図である。 図5に示した末端情報収集部の構成の一例を示すブロック図である。 図6に示したカウント制御部の構成の一例を示すブロック図である。 図5に示したSIMDアレイ型プロセッサの一構成例を示すブロック図である。 図5〜図8に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。 図5〜図8に示したSIMDアレイ型プロセッサにおいて末端情報収集部からレジスタB及びレジスタCを除き、上位情報収集部からレジスタCを除いた場合の構成の一例を示すブロック図である。 本発明のプロセッサを適用したSIMDアレイ型プロセッサの第3の実施形態の構成を示すブロック図である。 図11に示した末端情報収集部の構成の一例を示すブロック図である。 図11に示したSIMDアレイ型プロセッサの一構成例を示すブロック図である。 図11〜図13に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。 所定の条件を満たすデータだけをPE番号の小さなPEまたは大きなPEから順番に収集するSIMDアレイ型プロセッサの構成の一例を示す図である。
以下に、本発明の実施の形態について図面を参照して説明する。
(第1の実施形態)
図1は、本発明のプロセッサを適用したSIMDアレイ型プロセッサの第1の実施形態の構成を示すブロック図である。
本実施形態のSIMDアレイ型プロセッサは図1に示すように、P個のPEから構成されるPEアレイ10と、PEアレイ10の各PEのうち、所定の条件を満たすデータを有するPEからデータを収集する情報収集部20とを備えている。なお、Pは2以上の自然数である。また、以降、各構成要件のことを情報収集部のように「部」を付けて表記するが、これらの「部」は、回路や複数の回路から成るブロックによって構成される。
PEアレイ10は、各PEの条件フラグ及び各PEのデータを情報収集部20へ出力する。なお、図1においては、PEアレイ10から出力される条件フラグ及びデータをそれぞれ、それぞれfi及びdiと表記している。
情報収集部20は、PEアレイ10から出力された各PEの条件フラグ(fi)及び各PEのデータ(di)を受け付ける。なお、PEアレイ10はP個のPEから構成されているため、受け付けた条件フラグは、Pビットの長さとなる。また、情報収集部20は、各PEの条件フラグを非アクティブに更新させるための更新要求をPEアレイ10の各PEへ出力する。なお、図1においては、情報収集部20から出力される更新要求をfoと表記している。また、情報収集部20は、少なくとも1つのPEの条件フラグがアクティブであることを示す検知結果と、各PEのうち選択されたPEのデータである選択データとを出力する。なお、選択されたPEとは所定の条件を満たすPEのことである。また、図1においては、情報収集部20から出力される検知結果及び選択データをそれぞれ、それぞれdet及びdoと表記している。また、情報収集部20は、第1の条件フラグ修正部である条件フラグ修正部21と、条件フラグ検知部22と、第1の条件フラグ選択部である条件フラグ選択部23と、第1のデータ選択部であるデータ選択部24と、第1の選択結果保存部である選択結果保存部25と、条件フラグ更新部26とを備えている。
条件フラグ検知部22は、条件フラグ修正部21から出力された修正済条件フラグを受け付け、受け付けた修正済条件フラグのうち少なくとも1つのビットがアクティブであることを検知する。そして、その検知した結果に応じた検知結果(det)を出力する。条件フラグ検知部22は、修正済条件フラグのうち少なくとも1つがアクティブであることを検知すればよいため、Pビットの論理和器によって構成される。なお、検知結果は、受け付けた修正済条件フラグのうち少なくとも1つがアクティブであればアクティブとなり、受け付けた修正済条件フラグの全てが非アクティブであれば、非アクティブとなる。また、修正済条件フラグとは、条件フラグ修正部21によって修正された条件フラグのことであり、条件フラグと同様にPビットの長さとなる。修正済条件フラグの詳細については後述する。
条件フラグ選択部23は、条件フラグ修正部21から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグの中から、所定の優先順位に基づいて1つのアクティブであるビットを1つ選択する。そして、選択されたビットを示す選択結果をデータ選択部24、選択結果保存部25及び条件フラグ更新部26へ出力する。なお、所定の優先順位は、図1に示すSIMDアレイ型プロセッサが受け付ける演算命令であって、所定の条件を満たすデータを収集するためのSIMD型データ収集命令によって決定される。
図2は、図1に示した条件フラグ選択部23の動作を説明するための図であり、(a)は条件フラグ選択部23の構成の一例を示すブロック図、(b)は条件フラグ選択部23が行うビット列の変換を説明するための図である。
図1に示した条件フラグ選択部23は図2(a)に示すように、ビット置換器23−1,23−2と、リーディングゼロ23−3とを備えている。なお、リーディングゼロとは、ビット列のMSB(Most Significant Bit)、または、LSB(Least Significant Bit)から、連続して現れる「0」の数を数える回路のことである。なお、MSBとはビット列の最上位のビットのことであり、LSBとはビット列の最下位のビットのことである。
ビット置換器23−1,23−2は、受け付けた修正済条件フラグのMSB側とLSB側とを置換して出力する。具体的には、ビット置換器23−1,23−2は図2(b)に示すように、受け付けたビット列が例えば「abcde」である場合、ビット列「edcba」に置換する。
リーディングゼロ23−3は、ビット置換器23−1から出力されたビット列を受け付け、受け付けたビット列をMSB側またはLSB側から探索して最初に現れる「1」を検出する。そして、受け付けたビット列を、検出された1の位置のビットだけが「1」となるビット列に変換して出力する。
なお、ビット置換器23−1,23−2が入力されたビット列を変換するのは、リーディングゼロ23−3が受け付けたビット列において最初に現れる「1」を探索する方向と、SIMD型データ収集命令によって決定されるデータを収集する方向とが一致しない場合である。
再度、図1を参照すると、データ選択部24は、PEアレイ10から出力された各PEのデータと、条件フラグ選択部23から出力された選択結果とを受け付ける。そして、受け付けた各PEのデータと選択結果との論理積を論理積器(不図示)によって計算する。そして、計算された結果を論理和器(不図示)によって計算することにより、受け付けた各PEのデータのうち、1つのデータを選択する。そして、選択されたデータを選択データ(do)として出力する。この選択データは、SIMD型データ収集命令に対する出力である収集結果データとなる。なお、上述した論理積器及び論理和器の代わりにデータを選択するためのセレクタを備えていてもよい。
条件フラグ更新部26は、条件フラグ選択部23から出力された選択結果及び条件フラグ検知部22から出力された検知結果に基づき、PEアレイ10の各PEの条件フラグを更新させるための更新要求(fo)をPEアレイ10へ出力する。具体的には、条件フラグ検知部22から出力された検知結果がアクティブである場合、条件フラグ選択部23の選択結果を更新要求(fo)としてPEアレイ10へ出力する。なお、更新要求は、PEアレイ10の各PEの数に対応してPビットの長さとなる。条件フラグ更新部26から出力された更新要求(fo)を受け付けたPEアレイ10の各PEは、受け付けた更新要求(fo)の自身に対応するビットがアクティブであれば、自身の条件フラグを非アクティブに更新する。また、受け付けた更新要求(fo)の自身に対応するビットが非アクティブであれば自身の条件フラグを更新しない。一方、条件フラグ検知部22から出力された検知結果が非アクティブである場合には、条件フラグ更新部26は、全てのビットを非アクティブとした更新要求をPEアレイ10へ出力する。
図3は、図1に示した選択結果保存部25の構成の一例を示すブロック図である。
図1に示した選択結果保存部25は図3に示すように、M個のレジスタから構成されるシフトレジスタ25−1と、M個のレジスタの論理和をビット単位に計算する論理和器25−2とを備えている。なお、Mは1以上の整数である。
選択結果保存部25は、条件フラグ選択部23から出力された選択結果を受け付け、受け付けた選択結果を記憶する。また、各PEの条件フラグを更新するために必要なクロックサイクル数である遅延クロックサイクル数がMクロックサイクルである場合、選択結果保存部25は、条件フラグ選択部23の選択結果をM個分シフトレジスタ25−1に記憶する。そして、M個のレジスタの論理和を論理和器25−1によってビット単位に計算し、計算した結果である条件フラグ修正情報を条件フラグ修正部21へ出力する。
再度、図1を参照すると、条件フラグ修正部21は、PEアレイ10から出力された各PEの条件フラグ(fi)と、選択結果保存部25から出力された条件フラグ修正情報との排他的論理和をビット単位に計算する。そして、その計算結果である修正済条件フラグを条件フラグ検知部22及び条件フラグ選択部23へ出力する。なお、条件フラグが修正されるのは、遅延クロックサイクルが発生し、その遅延クロックサイクルにおいてSIMD型データ収集命令が連続して発行される場合である。
以下に、上記のように構成されたSIMDアレイ型プロセッサにおいてデータを収集する動作について説明する。
図4は、図1〜図3に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。ここでは、PEアレイ10が8個のPE(PE7〜PE0)を有しており、この8個のPEのそれぞれの条件フラグは、PE7〜PE0の順番に「11011011」であるものとする。また、PEの条件フラグを更新するまでの遅延クロックサイクル数が2クロックサイクルであるものとする。また、図中左側のPEにより高い優先順位を与えるものとする。
まず、0クロック目は、SIMDアレイ用情報収集命令を実行する最初のサイクルである。そのため、選択結果保存部25には何も記憶されていない。従って、PEアレイ10から出力された各PEの条件フラグ(fi)を受け付けた条件フラグ修正部21は、受け付けた条件フラグ(fi)を修正済条件フラグとして条件フラグ検知部22及び条件フラグ選択部23へ出力する。
条件フラグ修正部21から出力された修正済条件フラグ「11011011」を受け付けた条件フラグ選択部23は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果をデータ選択部24、選択結果保存部25及び条件フラグ更新部26へ出力する。ここでは、図4において0クロック目の行の条件フラグ選択部の列が示すように、「10000000」が選択結果として出力される。
条件フラグ選択部23から出力された選択結果と、PEアレイ10から出力された各PEのデータ(di)とを受け付けたデータ選択部24は、受け付けた選択結果に応じたPEのデータを選択し、選択されたデータを選択データ(do)として出力する。ここでは、図4において0クロック目の行のデータ選択部の列が示すように、「PE7」のデータが選択データ(do)として出力される。
条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部25は、0クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「10000000」をシフトレジスタ25−1に記憶させる。
次に、1クロック目では、選択結果保存部25は、記憶している「1000000」を条件フラグ修正情報として条件フラグ修正部21へ出力する。
選択結果保存部25から出力された条件フラグ修正情報を受け付けた条件フラグ修正部21は、受け付けた条件フラグ修正情報「10000000」と、PEアレイ10から出力された条件フラグ(fi)「11011011」との排他的論理和をとる。つまり、0クロック目の選択結果に対応する条件フラグのビットが0に修正され、修正済条件フラグは「01011011」となる。条件フラグ修正部21は、この修正済条件フラグを条件フラグ検知部22及び条件フラグ選択部23へ出力する。
条件フラグ修正部21から出力された修正済条件フラグ「01011011」を受け付けた条件フラグ選択部23は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果をデータ選択部24、選択結果保存部25及び条件フラグ更新部26へ出力する。ここでは、図4において1クロック目の行の条件フラグ選択部の列が示すように、「01000000」が選択結果として出力される。
条件フラグ選択部23から出力された選択結果と、PEアレイ10から出力された各PEのデータ(di)とを受け付けたデータ選択部24は、受け付けた選択結果に応じたPEのデータを選択し、選択されたデータを選択データ(do)として出力する。ここでは、図4において1クロック目の行のデータ選択部の列が示すように、「PE6」のデータが選択データ(do)として出力される。
条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部25は、1クロック目の終わりのクロックエッジおいて、受け付けた選択結果である「01000000」をシフトレジスタ25−1に記憶させる。
次に、2クロック目では、選択結果保存部25は、0クロック目の選択結果「10000000」と、1クロック目の選択結果「01000000」とを記憶している。そのため、選択結果保存部25は、0クロック目の選択結果と1クロック目の選択結果の論理和を論理和器25−2によって計算する。そして、その計算結果である「1100000」を条件フラグ修正情報として条件フラグ修正部21へ出力する。
選択結果保存部25から出力された条件フラグ修正情報を受け付けた条件フラグ修正部21は、受け付けた条件フラグ修正情報「11000000」と、PEアレイ10から出力された条件フラグ(fi)「11011011」との排他的論理和を計算する。つまり、0クロック目及び1クロック目の選択結果に対応する条件フラグのビットが0に修正され、修正済条件フラグは「00011011」となる。条件フラグ修正部21は、この修正済条件フラグを条件フラグ検知部22及び条件フラグ選択部23へ出力する。
条件フラグ修正部21から出力された修正済条件フラグ「00011011」を受け付けた条件フラグ選択部23は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果をデータ選択部24、選択結果保存部25及び条件フラグ更新部26へ出力する。ここでは、図4において2クロック目の行の条件フラグ選択部23の列が示すように、「0001000」が選択結果として出力される。
条件フラグ選択部23から出力された選択結果と、PEアレイ10から出力された各PEのデータとを受け付けたデータ選択部24は、受け付けた選択結果に応じたPEのデータを選択し、選択されたデータを選択データとして出力する。ここでは、図4において2クロック目の行のデータ選択部の列が示すように、「PE4」のデータが選択データとして出力される。
条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部25は、2クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「00010000」をシフトレジスタ25−1に記憶させる。それとともに、選択結果保存部25は、0クロック目に記憶した選択結果をシフトレジスタ25−2から破棄する。
ここで、0クロック目において、条件フラグ選択部23から出力された選択結果と、条件フラグ検知部22から出力された検知結果とを受け付けた条件フラグ更新部26は、PE7の条件フラグを更新させるための更新要求(fo)をPEアレイ10へ出力する。
条件フラグ更新部26から出力された更新要求(fo)を受け付けたPEアレイ10では、PE7の条件フラグが非アクティブを示す「0」に更新される。この更新された条件フラグを図4において3クロック目の行の条件フラグの列に示す。
次に、3クロック目では,選択結果保存部25は、1クロック目の選択結果「01000000」と、2クロック目の選択結果「00010000」とを記憶している。そのため、選択結果保存部25は、1クロック目の選択結果と2クロック目の選択結果の論理和を論理和器25−2によって計算する。そして、その計算結果である「01010000」を条件フラグ修正情報として条件フラグ修正部21へ出力する。
選択結果保存部25から出力された条件フラグ修正情報を受け付けた条件フラグ修正部21は、受け付けた条件フラグ修正情報「01010000」と、PEアレイ10から出力された条件フラグ(fi)「01011011」との排他的論理和を計算する。つまり、1クロック目及び2クロック目の選択結果に対応する条件フラグのビットが0に修正され、修正済条件フラグは「00001011」となる。条件フラグ修正部21は、この修正済条件フラグを条件フラグ検知部22及び条件フラグ選択部23へ出力する。
条件フラグ修正部21から出力された修正済条件フラグ「00001011」を受け付けた条件フラグ選択部23は、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果をデータ選択部24、選択結果保存部25及び条件フラグ更新部26へ出力する。ここでは、図4において3クロック目の行の条件フラグ選択部23の列が示すように、「00001000」が選択結果として出力される。
条件フラグ選択部23から出力された選択結果と、PEアレイ10から出力された各PEのデータ(di)とを受け付けたデータ選択部24は、受け付けた選択結果に応じたPEのデータを選択し、選択されたデータを選択データ(do)として出力する。ここでは、図4において3クロック目の行のデータ選択部の列が示すように、「PE3」のデータが選択データ(do)として出力される。
条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部25は、3クロック目の終わりのクロックエッジにおいて、受け付けた選択結果「00001000」を選択結果保存部25のシフトレジスタ25−1に記憶させる。それとともに、選択結果保存部25は、1クロック目に記憶した選択結果をシフトレジスタ25−2から破棄する。
4〜8クロック目では、上述した処理と同様の処理が行われる。
このように本実施形態においては、PEアレイ10のPEのそれぞれは、データ(di)及び条件フラグ(fi)を情報収集部20へ出力し、条件フラグを非アクティブに更新するための更新要求(fo)を受け付けると、受け付けた更新要求(fo)に応じて条件フラグを非アクティブに更新する。また、情報収集部20は、PEアレイ10のPEのそれぞれから出力されたデータ(di)及び条件フラグ(fi)を受け付けると、受け付けた条件フラグ(fi)がアクティブであるPEの中から、所定の優先順位に基づいて1つのPEを選択し、選択されたPEから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求(fo)を出力する。
そのため、クリティカルパスによって動作速度を制限されることがない。
また、条件フラグを更新するのにMクロックサイクルの遅延が発生する場合でも、SIMD型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
(第2の実施形態)
図5は、本発明のプロセッサを適用したSIMDアレイ型プロセッサの第2の実施形態の構成を示すブロック図である。
本実施形態のSIMDアレイ型プロセッサは図5に示すように、P個のPEから構成されるPEアレイ110と、PEアレイ110のPEのうち、所定の条件を満たすデータを有するPEからデータを収集する情報収集部120とを備えている。なお、Pは2以上の自然数である。
PEアレイ110は、各PEの条件フラグ(fi)、各PEのデータ(di)及びアクティブ数を情報収集部120へ出力する。なお、アクティブ数は、条件フラグがアクティブであるPEを示す情報である。図5においては、PEアレイ110から出力されるアクティブ数をniと表記している。
情報収集部120は、PEアレイ110から出力された各PEの条件フラグ(fi)、各PEのデータ(di)及びアクティブ数(ni)を受け付ける。また、各PEの条件フラグを非アクティブに更新させるための更新要求(fo)をPEアレイ110の各PEへ出力する。また、情報収集部120は、少なくとも1つのPEの条件フラグがアクティブであることを示す検知結果(det)と、各PEのうち選択されたPEのデータである選択データ(do)と、アクティブ数とを出力する。なお、情報収集部120から出力されるアクティブ数は、受け付けたアクティブ数(ni)の合計値である。また、図5においては、情報収集部120から出力されるアクティブ数をnoと表記している。また、情報収集部120は、階層化されており、末端情報収集部層120−1と、中間情報収集部層120−2と、上位情報収集部120−3とを備えている。なお、本実施形態においては、中間情報収集部層120−2を1階層としているが、中間情報収集部層120−2をさらに複数の階層に分割してもよい。また、逆に中間情報収集部層120−2を設けなくてもよい。
末端情報収集部層120−1は、PEアレイ110と直接接続された階層であり、末端情報収集部120−1−1〜120−1−nを備えている。また、末端情報収集部層120−1は、PEアレイ110から出力された各PEの条件フラグ(fi)、データ(di)及びアクティブ数(ni)を受け付ける。そして、受け付けた条件フラグ(fi)、データ(di)及びアクティブ数(ni)に基づき、検知結果(det)、選択データ(do)及びアクティブ数(no)を中間情報収集部層120−2へ出力する。また、末端情報収集部層220−1は、中間情報収集部層120−2から出力された更新要求(fo)を選択情報として受け付ける。そして、受け付けた選択結果に基づき、更新要求(fo)をPEアレイ110へ出力する。なお、図5においては末端情報収集部層120−1が受け付ける選択情報をselと表記している。この選択情報については後述する。
中間情報収集部層120−2は、末端情報収集部層120−1に接続された階層であり、中間情報収集部120−2−1〜120−2−nを備えている。また、中間情報収集部層120−2は、末端情報収集部層120−1から出力された検知結果(det)、選択データ(do)及びアクティブ数(no)のそれぞれをそれぞれ条件フラグ(fi)、データ(di)及びアクティブ数(ni)として受け付ける。そして、受け付けた条件フラグ(fi)、データ(di)及びアクティブ数(ni)に基づき、検知結果(det)、選択データ(do)及びアクティブ数(no)を上位情報収集部120−3へ出力する。また、中間情報収集部層120−2は、上位情報収集部120−3から出力された更新要求(fo)を選択情報(sel)として受け付ける。そして、受け付けた選択情報(sel)に基づき、更新要求(fo)を末端情報収集部120−1へ出力する。
上位情報収集部120−3は、中間情報収集部層120−2に接続され、中間情報収集部120−2から出力された検知結果(det)、選択データ(do)及びアクティブ数(no)のそれぞれをそれぞれ条件フラグ(fi)、データ(di)及びアクティブ数(ni)として受け付ける。そして、受け付けた条件フラグ(fi)、データ(di)及びアクティブ数(ni)に基づき、検知結果(det)、選択データ(do)及びアクティブ数(no)を出力する。なお、上位情報収集部220−3から出力される選択データ(do)は、SIMD型データ収集命令に対する出力である収集結果データとなる。また、上位情報収集部120−3は、SIMD型データ収集命令の実行要求を選択情報(sel)として受け付け、受け付けた選択情報(sel)に基づき、中間情報収集部層120−2へ更新要求(fo)を出力する。
なお、末端情報収集部120−1−1〜120−1−n、中間情報収集部120−2−1〜120−2−n及び上位情報収集部120−3は、入出力される信号や内部の信号線のビット幅以外は同様の構成である。以降、末端情報収集部120−1−1〜120−1−n、中間情報収集部120−2−1〜120−2−n及び上位情報収集部120−3をまとめていう場合、子情報収集部という。
図6は、図5に示した末端情報収集部120−1−1の構成の一例を示すブロック図であり、PEアレイ110のPEの数がA個である場合を示す。なお、Aは2以上の自然数である。
図5に示した末端情報収集部120−1−1は図6に示すように、条件フラグ検知部122と、第2の条件フラグ選択部である条件フラグ選択部123と、第2のデータ選択部であるデータ選択部124と、カウント制御部127と、レジスタA128と、レジスタB129と、レジスタC130と、レジスタD131と、を備えている。
条件フラグ検知部122、条件フラグ選択部123及びデータ選択部124のそれぞれの構成は、図1に示した条件フラグ検知部22、条件フラグ選択部23及びデータ選択部24のそれぞれの構成と同様であるため、説明を省略する。
カウント制御部127は、PEアレイ110から出力された条件フラグ(fi)をアクティブ数(ni)として受け付け、受け付けたアクティブ数(ni)に基づき、条件フラグがアクティブであるPEの数を管理する。そして、カウント制御部127は、受け付けたアクティブ数の合計値をアクティブ数(no)として中間情報収集部層120−2へ出力する。また、カウント制御部127は、中間情報収集部層120−2から出力された選択情報(sel)を受け付け、受け付けた選択情報(sel)に基づき、PEアレイ110へ更新要求(fo)を出力する。
なお、図6に示すように、カウント制御部127やデータ選択部124からの出力を一度レジスタ(レジスタA128、レジスタB129、レジスタC130及びレジスタD131)に記憶させてから、PEアレイ110や上位または下位の階層の子情報収集部に出力することにより、これらの出力の処理がクリティカルパスとなることを防ぐことができる。
図7は、図6に示したカウント制御部127の構成の一例を示すブロック図である。
図6に示したカウント制御部127は図7に示すように、セレクタ127−1,127−2と、レジスタ127−3と、論理和器127−4と、デクリメンタ127−5と、論理否定器127−6と、論理積器127−7と、加算器127−8とを備えている。
なお、カウント制御部127は、上記の加算器127−8以外についてはA個ずつ備えている。
セレクタ127−1は、PEアレイ110から出力されたアクティブ数(ni)と、デクリメンタ127−5からの出力を受け付ける。そして、受け付けた出力のいずれかを選択し、選択した結果をレジスタ127−3へ出力する。なお、セレクタ127−1がいずれを選択するのかは、当該カウント制御部127がPEアレイ110から数えて何階層目に存在しているかと、SIMD型データ収集命令とによって制御される。例えば、PEアレイ110に直接接続された階層を0階層とし、カウント制御部127がL階層目(0≦L)に存在している場合を考えてみる。この場合、セレクタ127−1は、SIMD型データ収集命令が実行されてからLクロック目に、PEアレイ110から出力されたアクティブ数(ni)を選択し、それ以外の場合にはデクリメンタ127−5からの出力を選択する。
レジスタ127−3は、セレクタ127−1からの出力または自身に既に記憶されている値のいずれかを選択して記憶する。セレクタ127−1からの出力を記憶するのは、以下の(1)、(2)に示す2通りの場合であり、それ以外の場合は、自身に既に記憶されている値をそのまま保持する。
(1)セレクタ127−1と同様に、当該カウント制御部127が存在している階層の順番と一致するクロック目における動作の場合。
(2)論理和器127−4を介して接続されている論理積器127−7からの出力が「1」である場合。
デクリメンタ127−5は、レジスタ127−3から出力された値から1を減算し、減算した値をセレクタ127−1へ出力する。
論理和器127−4は、レジスタ127−3から出力された値の全ビットの論理和を計算し、論理積器127−7へ出力する。
セレクタ127−2は、図中自身の左側にある論理積器127−7と、右側にある論理積器127−7とからの出力を受け付け、受け付けた出力のいずれかを選択する。但し、図中左端のセレクタ127−2の場合、自身の左側に論理積器127−7がないため、その代わりに0が入力される。また、同様に、図中右端のセレクタ127−2の場合には、自身の右側に論理積器127−7がないため、その代わりに0が入力される。このセレクタ127−2による選択は、SIMD型データ収集命令によって制御される。具体的には、SIMD型データ収集命令によって図中左側のPEから右側のPEにかけてデータを収集する場合、つまり、図中左側のPEにより高い優先順位を与える場合、セレクタ127−2は左側の論理積器127−7からの出力を選択する。一方、SIMD型データ収集命令によって図中右側のPEから左側のPEにかけてデータを収集する場合には、セレクタ127−2は右側の論理積器127−7からの出力を選択する。
論理否定器127−6は、セレクタ127−2からの出力を論理反転させて論理積器127−7へ出力する。
論理積器127−7は、論理和器127−4からの出力と、中間情報収集部層120−2から出力された選択情報と、論理否定器127−6からの出力との論理積値を計算する。そして、計算された論理積値をセレクタ127−2へ出力するとともに、更新要求(fo)としてPEアレイ110へ出力する。さらに、計算された論理積値は、レジスタ127−3の更新信号としても利用される。
加算器127−8は、PEアレイ110から出力されたアクティブ数(ni)から、アクティブ数の合計値を計算し、その計算結果をアクティブ数(no)として中間情報収集部層120−2へ出力する。
以下に、上記のように構成されたSIMDアレイ型プロセッサにおいてデータを収集する動作について説明する。ここでは、末端情報収集部層120−1と上位情報収集部120−3との2階層から情報収集部120が構成される場合について説明する。
図8は、図5に示したSIMDアレイ型プロセッサの一構成例を示すブロック図であり、情報収集部120が2階層で構成される場合を示す。
図8に示すSIMDアレイ型プロセッサは、PEアレイ110が8個のPE(PE7〜PE0)を有しており、この8個のPEのそれぞれの条件フラグは、PE7〜PE0の順番に「11011011」である。また、末端情報収集部層120−1は、4つの末端情報収集部120−1−1〜120−1−4を備えており、末端情報収集部120−1−1〜120−1−4のそれぞれは、2つのPEの条件フラグに対応している。例えば、末端情報収集部120−1−1は、PE7及びPE6の条件フラグである「11」を受け付ける。また、図中左側のPEにより高い優先順位を与えるものとする。
図9は、図5〜図8に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。
図9は、各クロックにおける条件フラグの値と、各クロックにおける末端情報収集部120−1−1〜120−1−4及び上位情報収集部120−3の各種レジスタ値とを示している。また、図9において末端情報収集部及び上位情報収集部のカウント制御部の列には、末端情報収集部120−1−1〜120−1−4及び上位情報収集部120−3のカウント制御部127に関わる値が「A/B...(C,DE...)」の形式で表記されている。
例えば、末端情報収集部のカウント制御部の列において、上記のA/Bは、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127のレジスタ127−3に記憶されたアクティブ数を示す。また、上記のCは、それぞれのカウント制御部127の加算器127−8によって計算され、レジスタD131(図6参照)に記憶されたアクティブ数の合計値を示す。また、上記のDEは、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127内の各論理積器127−7の出力であり、レジスタC130(図6参照)に記憶された更新要求を示す。
また、図9において末端情報収集部及び上位情報収集部のデータ選択部の列には、レジスタB129(図6参照)に記憶された選択データを示す。
以下に、図5〜図8に示したSIMDアレイ型プロセッサにおいてデータを収集する動作をクロック毎に説明する。
まず、0クロック目においては、2つのPEの条件フラグ(fi)及びアクティブ数(ni)がPEアレイ110から出力される。PEアレイ110から出力されたアクティブ数(ni)を受け付けた末端情報収集部120−1−1〜120−1−4のそれぞれは、受け付けたアクティブ数(ni)をカウント制御部127のレジスタ127−3に記憶させる。ここでは、末端情報収集部120−1〜120−1−4の順番に「1/1,0/1,1/0,1/1」が記憶される。なお、末端情報収集部120−1−1〜120−1−4においてアクティブ数は、それぞれ1ビットの条件フラグであるため、各レジスタ127−3のビット幅も1ビットである。
また、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127の加算器127−8は、受け付けたアクティブ数(ni)の合計値を計算してレジスタD131に記憶させる。例えば末端情報収集部120−1−1の場合、受け付けたアクティブ数(ni)は「1/1」なので、アクティブ数の合計値は「2」となる。また、末端情報収集部120−1−2の場合、受け付けたアクティブ数(ni)は「0/1」なので、アクティブ数の合計値は「1」となる。このように合計値は、末端情報収集部120−1−1〜120−1−4の順番に「2,1,1,2」となる。なお、この合計値は、1ビットのアクティブ数が2つ加算されたものであるため、レジスタD131のビット幅は2ビットとなる。
また、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127の各論理積器127−7の出力がレジスタC130に記憶される。なお、0クロック目では、上位情報収集部120−3からの選択情報(sel)が0であるため、各論理積器127−7からの出力は、末端情報収集部120−1−1〜120−1−4の全てにおいて0「00,00,00,00」である。
以上の0クロック目の実行結果を図9における0クロック目の行の末端情報収集部のカウント制御部の列に示す。また、0クロック目においては、上位情報収集部120−3への入力には変化がない。そのため、上位情報収集部120−3は動作しておらず、その実行結果は全て0である。これを0クロック目の行の上位情報収集部のカウント制御部の列に示す。
次に、1クロック目においては、末端情報収集部120−1−1〜120−1−4のそれぞれのレジスタD131に記憶されたアクティブ数の合計値が上位情報収集部120−3へ出力される。
末端情報収集部120−1−1〜120−1−4から出力されたアクティブ数の合計値をアクティブ数(ni)として受け付けた上位情報収集部120−3は、受け付けたアクティブ数(ni)をカウント制御部127内の各レジスタ127−3に記憶させる。ここでは、それぞれのレジスタ127−3に「2/1/1/2」が記憶される。なお、上位情報収集部120−3においてアクティブ数は、それぞれ2ビットであるため、レジスタ127−3のビット幅も2ビットである。
また、上位情報収集部120−3のカウント制御部127の加算器127−8は、受け付けたアクティブ数(ni)の合計値を計算し、レジスタD131に記憶させる。ここでは、受け付けたアクティブ数(ni)は、「2/1/1/2」なので、アクティブ数の合計値は「6」となる。なお、この合計値は、2ビットのアクティブ数が4つ加算されたものであるため、レジスタD131のビット幅は4ビットとなる。
また、上位情報収集部120−3のカウント制御部127の各論理積器127−7の出力がレジスタC130に記憶される。なお、1クロック目では、SIMDアレイ用情報収集命令により、選択情報(sel)として「0」が入力されるため、各論理積器127−7の出力は0(「0000」)である。
以上の1クロック目の実行結果を図9において1クロック目の行の上位情報収集部のカウント制御部の列に示す。なお、1クロック目においては末端情報収集部120−1−1〜120−1−4への入力には変化がない。そのため、末端情報収集部120−1−1〜120−1−4は動作しておらず、その実行結果は0クロック目と同様のままである。これを1クロック目の行の末端情報収集部のカウント制御部の列に示す。
次に、2クロック目においては、上位情報収集部120−3のカウント制御部127内の各レジスタ127−3にアクティブ数「2/1/1/2」が記憶されている。また、SIMDアレイ用情報収集命令により、選択情報(sel)として「1」が入力される。これらにより、各論理積器127−7の出力を合わせると「1000」となる。なお、ここでは、図中左側のPEほど高い優先度を与えているため、セレクタ127−2は自身の左側の論理積器127−7からの出力を選択している。
各論理積器127−7の出力は、レジスタC130に記憶される。また、レジスタC130に記憶された各論理積器127−7の出力は、末端情報収集部120−1−1〜120−1−4へ出力される選択情報となる。
また、各デクリメンタ127−5で減算された値で各レジスタ127−3に記憶されている値が更新される。ここでは、更新された結果は「1/1/1/2」となり、左端の値だけが減算されている。これは、論理積器127−7の出力が「1」であるレジスタ127−3に記憶されている値だけが更新されるからである。
以上の2クロック目の実行結果を図9において2クロック目の行の上位情報収集部のカウント制御部の列に示す。また、2クロック目においては末端情報収集部120−1−1〜120−1−4への入力には変化がない。そのため、末端情報収集部120−1−1〜120−1−4は動作しておらず、その実行結果は1クロック目と同様のままである。
次に、3クロック目においては、上位情報収集部120−3は、レジスタC130に記憶された各論理和器127−7の出力「1000」を更新要求(fo)として末端情報収集部120−1−1〜120−4のそれぞれのカウント制御部127へ出力する。
末端情報収集部120−1−1〜120−4のそれぞれのカウント制御部127は、上位情報収集部120−3から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、例えば、末端情報収集部120−1−1の場合、受け付けた選択情報(sel)は「1」である。また、末端情報収集部120−1−2〜120−1−4の場合、受け付けた選択情報(sel)は「0」である。従って、受け付けた選択情報(sel)が「1」である末端情報収集部120−1−1のカウント制御部127のみが動作する。
末端情報収集部120−1−1のカウント制御部127では、受け付けた選択情報(sel)が「1」であり、かつ各レジスタ127−3に「1/1」が記憶されているため、各論理積器127−7の出力を合わせると「10」となる。なお、ここでは、図中左側のPEほど高い優先度を与えているため、セレクタ127−2は左側の論理積器127−1から出力された値を選択している。
各論理積器127−7の出力「10」は、レジスタC130に記憶される。そして、レジスタC130に記憶された各論理積器127−7の出力は、末端情報収集部120−1−1に接続された2つのPE(PE7及びPE6)への更新要求(fo)としてPEアレイ110へ出力される。
また、デクリメンタ127−5で減算された値でレジスタ127−3に記憶された値が更新される。ここでは更新された結果は、「0/1」となり、左側の値だけが減算されている。これは、論理積器127−7の出力が「1」であるレジスタ127−3に記憶されている値だけが更新されるからである。
以上の3クロック目における末端情報収集部120−1−1〜120−1−4の実行結果を図9において3クロック目の行の末端情報収集部のカウント制御部の列に示す。
また、上位情報収集部120−3のカウント制御部127中では、各レジスタ127−3に1/1/1/2が記憶されている。また、SIMDアレイ用情報収集命令によって選択情報が「1」に設定される。これらにより、各論理積器127−7の出力を合わせると「1000」となる。
論理積器127−7の出力は、レジスタC130に記憶される。また、レジスタC130に記憶された値は、末端情報収集部120−1−1〜120−1−4へ出力される選択情報となる。
また、デクリメンタ127−5で減算された値で各レジスタ127−3に記憶されている値が更新される。ここでは、更新された結果は、「0/1/1/2」となる。
以上の3クロック目における上位情報収集部120−3の実行結果を図9において3クロック目の行の上位情報収集部のカウント制御部の列に示す。
次に、4クロック目において、末端情報収集部120−1−1から出力された更新要求(fo)を受け付けたPEアレイ110では、受け付けた更新要求(fo)に応じてPEの条件フラグが更新される。ここでは、受け付けた更新要求(fo)が「10」であるため、「10」のうち「1」に対応するPE7の条件フラグが非アクティブに更新される。この結果を図9において4クロック目の行の条件フラグの列に示す。
また、上位情報収集部120−3は、レジスタC130に記憶された各論理和器127−7の出力「1000」を更新要求(fo)として、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127へ出力する。
末端情報収集部120−1−1〜120−4のそれぞれのカウント制御部127は、上位情報収集部120−3から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、受け付けた選択情報(sel)が「1」である末端情報収集部120−1−1のカウント制御部127のみが動作する。
末端情報収集部120−1−1のカウント制御部127では、受け付けた選択情報(sel)が「1」であり、かつ各レジスタ127−3に「0/1」が記憶されているため、各論理積器127−7の出力を合わせると「01」となる。各論理和器127−7の出力「01」は、レジスタC130に記憶される。そして、レジスタC130に記憶された各論理和器127−7の出力は、末端情報収集部120−1−1に接続された2つのPE(PE7及びPE6)への更新要求(fo)としてPEアレイ110へ出力される。
また、デクリメンタ127−5で減算された値でレジスタ127−3に記憶された値が更新される。ここでは、更新された結果は、「0/0」となる。
以上の4クロック目における末端情報収集部120−1−1〜120−1−4の実行結果を図9において4クロック目の行の末端情報収集部のカウント制御部の列に示す。
また、末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ選択部123は、PEアレイ110から出力された条件フラグ(fi)を受け付ける。ここでは、末端情報収集部120−1〜120−4の順番に、「11,01,10,11」を受け付ける。
末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ選択部123は、受け付けた条件フラグにおいてアクティブであるビットのうち、最も左側にあるビットを選択する。そして、その選択結果をデータ選択部124へ出力する。ここでは、選択結果は、末端情報収集部120−1〜120−4の順番に、「10,01,10,10」となる。
条件フラグ選択部123から出力された選択結果と、PEアレイ110から出力された各PEのデータ(di)とを受け付けたデータ選択部124は、受け付けた選択結果に応じたPEのデータを選択する。ここでは、末端情報収集部120−1〜120−4の順番に、「PE7,PE4,PE3,PE1」のデータが選択される。そして、データ選択部124は、選択されたPEのデータをレジスタB129に記憶させるとともに選択データ(do)として上位情報収集部120−3へ出力する。レジスタB129に記憶された値を、図9における4クロック目の末端情報収集部のデータ選択部の列に示す。
また、末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ検知部122は、受け付けた条件フラグの中に少なくとも1つアクティブであるビットを検知し、検知結果をレジスタA128に記憶させる。レジスタA128に記憶された検知結果は、検知結果(det)として上位情報収集部120−3へ出力される。
また、上位情報収集部120−3のカウント制御部127内の各レジスタ127−3には、アクティブ数「0/1/1/2」が記憶されている。また、SIMDアレイ用情報収集命令により、選択情報が「1」に設定される。これらにより、各論理積器127−7の出力を合わせると「0100」となる。
論理積器127−7の出力は、レジスタC130に記憶される。また、レジスタC130に記憶された値は、末端情報収集部120−1−1〜120−1−4へ出力される選択情報(sel)として利用される。
また、各デクリメンタ127−5で減算された値で各レジスタ127−3に記憶されている値が更新される。ここでは、更新された結果は「0/0/1/2」となる。
以上の4クロック目における上位情報収集部120−3の動作の実行結果を図9において4クロック目の行の上位情報収集部のカウント制御部の列に示す。
次に、5クロック目において、末端情報収集部120−1−1から出力された更新要求(fo)を受け付けたPEアレイ110では、受け付けた更新要求(fo)に基づいてPEの条件フラグを更新する。ここでは、受け付けた更新要求(fo)が「01」であるため、「01」のうち「1」に対応するPE6の条件フラグが非アクティブに更新される。この結果を図9において5クロック目の行の条件フラグの列に示す。
また、上位情報収集部120−3は、レジスタC130に記憶された各論理和器127−7の出力「0100」を更新要求(fo)として、末端情報収集部120−1−1〜120−1−4のそれぞれのカウント制御部127へ出力する。
末端情報収集部120−1−1〜120−4のそれぞれのカウント制御部127は、上位情報収集部120−3から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、受け付けた選択情報(sel)が「1」である末端情報収集部120−1−2のカウント制御部127のみが動作する。
末端情報収集部120−1−2のカウント制御部127では、受け付けた選択情報(sel)が「1」であり、かつ各レジスタ127−3に「0/1」が記憶されているため、各論理積器127−7の出力を合わせると「01」となる。各論理和器127−7の出力「01」は、レジスタC130に記憶される。そして、レジスタC130に記憶された値は、末端情報収集部120−1−1に接続された2つのPE(PE5及びPE4)への更新要求(fo)としてPEアレイ110へ出力される。
また、デクリメンタ127−5で減算された値でレジスタ127−3に記憶された値が更新される。ここでは、更新された結果は、「0/0」となる。
以上の5クロック目における末端情報収集部120−1−1〜120−1−4の実行結果を図9における5クロック目の行の末端情報収集部のカウント制御部の列に示す。
また、末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ選択部123は、PEアレイ110から出力された条件フラグ(fi)を受け付ける。ここでは、末端情報収集部120−1〜120−4の順番に、「01,01,10,11」を受け付ける。
末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ選択部123は、受け付けた条件フラグ(fi)においてアクティブであるビットのうち、最も左側にあるビットを選択する。そして、その選択結果をデータ選択部124へ出力する。ここでは、選択結果は、末端情報収集部120−1〜120−4の順番に、「01,01,10,10」となる。
条件フラグ選択部123から出力された選択結果と、PEアレイ110から出力された各PEのデータ(di)を受け付けたデータ選択部124は、受け付けた選択結果に応じたPEのデータを選択する。ここでは、末端情報収集部120−1〜120−4の順番に、「PE6,PE4,PE3,PE1」のデータが選択される。そして、データ選択部124は、選択されたPEのデータをレジスタB129に記憶させるとともに選択データ(do)として上位情報収集部120−3へ出力する。レジスタB129に記憶された値を、図9における5クロック目の末端情報収集部のデータ選択部の列に示す。
また、末端情報収集部120−1−1〜120−1−4のそれぞれの条件フラグ検知部122は、受け付けた条件フラグの中に少なくとも1つアクティブであるビットを検知し、検知結果をレジスタA128に記憶させる。レジスタA128に記憶された検知結果は、検知結果(det)として上位情報収集部120−3へ出力される。
また、上位情報収集部120−3のカウント制御部127内の各レジスタ127−3には、アクティブ数「0/0/1/2」が記憶されている。また、SIMDアレイ用情報収集命令により、選択情報(sel)が「1」に設定される。これらにより、各論理積器127−7の出力を合わせると「0010」となる。
論理積器127−7の出力は、レジスタC130に記憶される。また、レジスタC130に記憶された論理積器127−7の出力は、末端情報収集部120−1−1〜120−1−4へ出力される選択情報となる。
また、デクリメンタ127−5で減算された値で各レジスタ127−3に記憶されている値が更新される。ここでは、更新された結果は「0/0/0/2」となる。
以上の5クロック目における上位情報収集部120−3の動作の実行結果を図9における5クロック目の行の上位情報収集部のカウント制御部の列に示す。
また、上位情報収集部120−3の条件フラグ選択部123は、末端情報選択部120−1−1〜120−1−4から出力された検知結果(det)を条件フラグ(fi)として受け付ける。ここでは、「1111」を条件フラグ(fi)として受け付ける。そして、受け付けた条件フラグ(fi)においてアクティブでビットのうち、最も左側にあるビットを選択する。ここでは、選択結果は「1000」となる。そして、条件フラグ選択部123は、この選択結果をデータ選択部124へ出力する。
条件フラグ選択部123から出力された選択結果と、末端情報収集部120−1−1〜120−1−4から出力されたデータとを受け付けたデータ選択部124は、受け付けた選択結果に応じたPEのデータを選択する。ここでは、PE7のデータが選択される。そして、データ選択部124は、選択されたPEのデータをレジスタB129に記憶させるとともに、選択データ(do)として出力する。なお、この選択データ(do)は収集結果データとなる。レジスタB129に記憶された値を、図9における5クロック目の上位情報収集部のデータ選択部の列に示す。
また、上位情報収集部120−3の条件フラグ検知部122は、入力となる条件フラグ(fi)の中に少なくとも1つアクティブであるビットを検知し、検知した結果をレジスタA128に記憶させるとともに、検知結果(det)として出力する。
6クロック目〜10クロック目も同様に処理することにより、実行に遅延を要するSIMDアレイ用情報収集命令を連続して発行することができる。
なお、本実施形態においては、PEの数を8個としている。そのため、上位情報収集部120−3が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合が高くなっている。しかし、実際にはPEの数は128個等と多いため、上位情報収集部120−3が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合は限りなく小さくなる。
また、本実施形態では説明を一般化するために、全ての階層の子情報収集部がレジスタB129及びレジスタC130を備える構成としている。しかし、実際には、必ずしも全ての階層の子情報収集部においてレジスタB129及びレジスタC130を備えていなくてもよい。これは、レジスタB129及びレジスタC130は、クリティカルなパスを分割するために設けられているからである。具体的には例えば、上位情報収集部120−3から出力された選択情報(sel)に応じ、末端情報収集部120−1−1〜120−1−nが更新要求を生成するパス等がクリティカルパスになる可能性がある。
このため、各階層の子情報収集部が隣接しており、かつ3つ以上の子情報収集部を跨がないような場合、必ずしもレジスタB129及びレジスタC130を備える必要はない。本実施形態において末端情報収集部120−1−1〜120−1−nは、レジスタC130を備えているが、通常、末端情報収集部120−1−1〜120−1−nとそれらに接続されるPEアレイ110とは隣接して設けられているため、末端情報収集部120−1−1〜120−1−nは、レジスタCを備えていなくてもよい。同様の理由により、末端情報収集部120−1はレジスタBを備えていなくてもよい。
また、上位情報収集部120−3においても、受け付ける選択情報(sel)は、上位の子情報収集部から出力されるのではなく、SIMDアレイ用情報収集命令によって直接出力される。そのため、クリティカルなパスが生成される可能性は少なく、レジスタC130を備えていなくてもよい。本実施形態においては、上位情報収集部120−3がレジスタC130を備えているため、上位情報収集部120−3から収集結果データが得られるまでの遅延は、実際にはより少なく、2クロック目で上位情報収集部120−3は最初の収集結果データを得ることができる。
図10は、図5〜図8に示したSIMDアレイ型プロセッサにおいて末端情報収集部120−1〜120−nからレジスタB129及びレジスタC130を除き、上位情報収集部120−3からレジスタC130を除いた場合の構成の一例を示すブロック図である。
このように本実施形態においては、PEアレイ110のPEのそれぞれは、データ(di)及び条件フラグ(fi)を情報収集部120へ出力し、条件フラグを非アクティブに更新するための更新要求(fo)を受け付けると、受け付けた更新要求(fo)に応じて条件フラグを非アクティブに更新する。また、情報収集部120は、PEアレイ110のPEのそれぞれから出力されたデータ(di)及び条件フラグ(fi)を受け付けると、受け付けた条件フラグ(fi)がアクティブであるPEの中から、所定の優先順位に基づいて1つのPEを選択し、選択されたPEから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求(fo)を出力する。
そのため、クリティカルパスによって動作速度を制限されることがない。
また、条件フラグを更新するのに必要な遅延クロックサイクル数に依らず、SIMD型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
また、多数のPEのデータを収集する場合、階層化された子情報収集部を用いることにより、配線の容易性や処理負荷の分散を図ることができる。
(第3の実施形態)
図11は、本発明のプロセッサを適用したSIMDアレイ型プロセッサの第3の実施形態の構成を示すブロック図である。
本実施形態のSIMDアレイ型プロセッサは図11に示すように、P個のPEから構成されるPEアレイ210と、PEアレイ210のPEのうち、所定の条件を満たすデータを有するPEからデータを収集する情報収集部220とを備えている。なお、Pは2以上の自然数である。
PEアレイ210は、各PEの条件フラグ(fi)及びデータ(di)を情報収集部220へ出力する。
情報収集部220は、PEアレイ210から出力された各PEの条件フラグ(fi)及び各PEのデータ(di)を受け付ける。また、各PEの条件フラグを非アクティブに更新させるための更新要求(fo)をPEアレイ210の各PEへ出力する。また、情報収集部220は、少なくとも1つのPEの条件フラグがアクティブであることを示す検知結果(det)と、各PEのうち選択されたPEのデータである選択データ(do)とを出力する。また、情報収集部220は、階層化されており、末端情報収集部層220−1と、中間情報収集部層220−2と、上位情報収集部220−3とを備えている。なお、本実施形態においては、中間情報収集部層220−2を1階層としているが、中間情報収集部層220−2をさらに複数の階層に分割してもよい。また、逆に中間情報収集部層220−2を設けなくてもよい。
末端情報収集部層220−1は、PEアレイ210と直接接続された階層であり、末端情報収集部220−1−1〜220−1−nを備えている。また、末端情報収集部層220−1は、PEアレイ210から出力された各PEの条件フラグ(fi)及びデータ(di)を受け付ける。そして、受け付けた条件フラグ(fi)及びデータ(di)に基づき、検知結果(det)及び選択データ(do)を中間情報収集部層220−2へ出力する。また、末端情報収集部層220−1は、中間情報収集部層220−2から出力された更新要求(fo)を選択情報(sel)として受け付ける。そして、受け付けた選択情報(sel)に基づき、更新要求(fo)をPEアレイ210へ出力する。
中間情報収集部層220−2は、末端情報収集部220−1に接続された階層であり、中間情報収集部220−2−1〜220−2−nを備えている。また、中間情報収集部層220−2は、末端情報収集部層220−1から出力された検知結果(det)及び選択データ(do)のそれぞれをそれぞれ条件フラグ(fi)及びデータ(di)として受け付ける。そして、受け付けた条件フラグ(fi)及びデータ(di)に基づき、検知結果(det)及び選択データ(do)を上位情報収集部220−3へ出力する。また、中間情報収集部層220−2は、上位情報収集部220−3から出力された更新要求(fo)を選択情報(sel)として受け付ける。そして、受け付けた選択情報(sel)に基づき、更新要求(fo)を末端情報収集部220−1へ出力する。
上位情報収集部220−3は、中間情報収集部層220−2に接続され、中間情報収集部層220−2から出力された検知結果(det)及び選択データ(do)のそれぞれをそれぞれ条件フラグ(fi)及びデータ(di)として受け付ける。そして、受け付けた条件フラグ(fi)及びデータ(di)に基づき、検知結果(det)及び選択データ(do)を出力する。なお、上位情報収集部220−3から出力される選択データ(do)は、SIMD型データ収集命令に対する出力である収集結果データとなる。また、上位情報収集部220−3は、SIMD型データ収集命令の実行要求を選択情報(sel)として受け付け、受け付けた選択情報(sel)に基づき、中間情報収集部層220−2へ更新要求(fo)を出力する。
なお、末端情報収集部220−1−1〜220−1−n、中間情報収集部220−2−1〜220−2−n及び上位情報収集部220−3は、入出力される信号や内部の信号線のビット幅以外は同様の構成である。以降、末端情報収集部220−1−1〜220−1−n、中間情報収集部220−2−1〜220−2−n及び上位情報収集部220−3をまとめていう場合、子情報収集部という。
図12は、図11に示した末端情報収集部220−1−1の構成の一例を示すブロック図であり、PEアレイ210のPEの数がA個である場合を示す。なお、Aは2以上の自然数である。
図11に示した末端情報収集部220−1−1は図12に示すように、第2の条件フラグ修正部である条件フラグ修正部221と、条件フラグ検知部222と、第3の条件フラグ選択部である条件フラグ選択部223と、第3のデータ選択部であるデータ選択部224と、第2の選択結果保存部である選択結果保存部225とを備えている。
条件フラグ修正部221、条件フラグ選択部223及びデータ選択部224のそれぞれの構成は、図1に示した条件フラグ修正部21、条件フラグ選択部23及びデータ選択部24のそれぞれの構成と同様であるため、説明を省略する。
条件フラグ検知部222は、PEアレイ210から出力された各PEの条件フラグ(fi)を受け付ける。そして、受け付けた条件フラグ(fi)のうち少なくとも1つのビットまたは少なくとも2つのビットがアクティブであること検知する。そして、少なくとも1つのビットがアクティブであることを示す第1の検知結果と、少なくとも2つのビットがアクティブであることを示す第2の検知結果とを出力する。なお、図12においては、条件フラグ検知部222から出力される第1の検知結果及び第2の検知結果をdetと表記している。
選択結果保存部225は、1個のレジスタ(不図示)を備えている。選択結果保存部225は、条件フラグ選択部223から出力された選択結果を受け付け、受け付けた選択結果をレジスタに記憶させる。また、選択結果保存部225は、レジスタに記憶された値と、中間情報収集部層220−2から出力された選択情報との論理積を計算するAND回路(不図示)を備えており、その論理積の結果を条件フラグ修正情報として条件フラグ修正部221へ出力する。また、PEアレイ210へ更新要求を出力する。
なお、本実施形態において、子情報収集部の構成は階層毎に若干異なる。例えば、末端情報収集部220−1−1〜220−1−nまたは中間情報収集部220−2−1〜220−2−nの条件フラグ検知部222は、条件フラグ修正部221から出力された修正済条件フラグではなく、PEアレイ210または末端情報収集部層220−1から出力された条件フラグを受け付ける。一方、上位情報収集部220−3の条件フラグ検知部222は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。また、末端情報収集部220−1−1〜220−1−nまたは中間情報収集部220−2−1〜220−2−nにおいて、データ選択部224によるPEのデータの選択は、条件フラグ選択部223からの出力に基づいて行われる。一方、上位情報収集部220−3において、データ選択部224によるPEのデータの選択は、選択結果保存部225からの出力に基づいて行われる。
以下に、上記のように構成されたSIMDアレイ型プロセッサにおいてデータを収集する動作について説明する。なお、ここでは、末端情報収集部層220−1と上位情報収集部220−3との2階層から情報収集部220が構成される場合について説明する。
図13は、図11に示したSIMDアレイ型プロセッサの一構成例を示すブロック図であり、情報収集部220が2階層で構成される場合を示す。
図13に示すSIMDアレイ型プロセッサは、PEアレイ210が8個のPE(PE7〜PE0)を有しており、この8個のPEのそれぞれの条件フラグは、PE7〜PE0の順番に「11011011」である。また、末端情報収集部層220−1は、4つの末端情報収集部220−1−1〜220−1−4を備えており、末端情報収集部220−1−1〜220−1−4のそれぞれは、2つのPEの条件フラグに対応している。例えば、末端情報収集部220−1−1は、PE7及びPE6の条件フラグである「11」を受け付ける。
なお、末端情報収集部層220−1と上位情報収集部層220−3との間に長いパスが生成され、これがクリティカルパスとなることを回避するため、末端情報収集部220−1−1〜220−1−4は、データ選択部224による選択データを記憶するレジスタA228を備えている。
図14は、図11〜図13に示したSIMDアレイ型プロセッサにおいてデータを収集する動作を説明するための図である。ここでは、遅延クロックサイクル数が1クロックサイクルであるものとする。また、図中左側のPEにより高い優先順位を与えるものとする。
図14は、各クロックにおける条件フラグの値と、各クロックにおける末端情報収集部220−1−1〜220−1−4及び上位情報収集部220−3の各種レジスタ値とを示している。
まず、末端情報収集部の列について説明する。条件フラグ(修正済み)の列は、末端情報収集部220−1−1〜220−1−4と接続される各PEの条件フラグと、末端情報収集部220−1−1〜220−1−4の条件フラグ修正部221によって修正された修正済条件フラグとを示す。
条件フラグ選択部(選択結果保存部)の列は、末端情報収集部220−1−1〜220−1−4の条件フラグ選択部223による選択結果と、その選択結果を記憶する選択結果保存部225のレジスタの値とを示す。
データ選択部(レジスタA)の列は、末端情報収集部220−1−1〜220−1−4のデータ選択部224によって選択されたデータを有するPEと、そのPEを記憶するレジスタA228の値を示す。
次に、上位情報収集部の列について説明する。条件フラグ修正部の列は、上位情報収集部220−3の条件フラグ修正部221によって修正された修正済条件フラグを示す。
条件フラグ選択部(選択結果保存部)の列は、上位情報収集部220−3の条件フラグ選択部223の選択結果と、その選択結果を記憶した選択結果保存部225のレジスタの値とを示す。
データ選択部の列は、上位情報収集部220−3のデータ選択部224によって選択されたデータを有するPEを示す。
以下に、図11〜図13に示したSIMDアレイ型プロセッサにおいてデータを収集する動作をクロック毎に説明する。
まず、0クロック目は、SIMDアレイ用情報収集命令を実行する最初のサイクルである。そのため、PEアレイ210から出力された各PEの条件フラグ(fi)を受け付けた末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ修正部221は、受け付けた条件フラグ(fi)を修正済条件フラグとして条件フラグ検知部22及び条件フラグ選択部23へ出力する。具体的には、末端情報収集部220−1−1〜220−1−4の順番に、「11,01,10,11」が出力される。
末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、データ選択部224及び選択結果保存部225へ選択結果を出力する。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた修正済条件フラグが「11」なので、最も左側にある1を選択した選択結果は「10」となる。同様に、末端情報収集部220−1−2の場合、受け付けた修正済条件フラグが「01」なので、最も左側にある1を選択した選択結果は「01」となる。この選択結果を末端情報収集部220−1−1〜220−1−4についてまとめると、図14において0クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「10011010」となる。
条件フラグ選択部223から出力された選択結果と、PEアレイ210から出力された各PEのデータとを受け付けた末端情報収集部220−1−1〜220−1−4のそれぞれのデータ選択部224は、受け付けた選択結果に応じたPEのデータを選択する。そして、選択されたPEのデータを選択データ(do)として上位情報収集部220−3へ出力する。ここでは、例えば、末端情報収集部220−1−1の場合、条件フラグ選択部223の選択結果が「10」なのでPE7のデータが選択データとなる。また、末端情報収集部220−1−2の場合、条件フラグ選択部223の選択結果が「01」なのでPE4のデータが選択データとなる。これを末端情報収集部220−1−1〜220−1−4についてまとめると、図14において0クロック目の行の末端情報収集部のデータ選択部の列が示すように、「PE7,PE4,PE3,PE1」となる。これらのPEのデータは、選択データとして0クロック目の終わりのクロックエッジにおいて、レジスタA228に記憶される。
また、条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部225は、0クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部225内のレジスタに記憶させる。
また、末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ検知部222は、上位情報収集部220−3の条件フラグ修正部221へ第1の検知結果及び第2の検知結果(det)を出力する。ここでは、例えば、末端情報収集部220−1−1の場合、PEアレイ210から受け付ける条件フラグは「11」であり、2つとも「1」である。従って、第1の検知結果及び第2の検知結果はともに「1」となる。また、末端情報収集部220−1−2の場合、PEアレイ210から受け付ける条件フラグは「01」であり、少なくとも1つが「1」である。従って、第1の検知結果は「1」であるが、第2の検知結果は「0」となる。このようにして、末端情報収集部220−1−1〜220−1−4の第1の検知結果及び第2の検知結果をまとめると、第1の検知結果は「1111」となり、第2の検知結果は「1001」となる。
ここで説明しているのはSIMDアレイ用情報収集命令を実行する最初のサイクルである。そのため、上位情報収集部220−3の条件フラグ修正部221は、第1の検知結果である「1111」を修正済条件フラグとして出力する。これを図14において0クロック目の行の上位情報収集部の条件フラグ修正部の列に示す。
上位情報収集部220−3の条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果である「1000」を0クロック目の終わりのクロックエッジにて選択結果保存部225内のレジスタに記憶させる。
次に、1クロック目において上位情報収集部220−3の選択結果保存部225は、選択結果保存部225内のレジスタに記憶された選択結果「1000」を更新要求(fo)として末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225へ出力する。
末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225は、上位情報収集部220−3の選択結果保存部225から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた選択情報(sel)は「1」である。また、末端情報収集部220−1−2〜220−1−4の場合、受け付けた選択情報(sel)は「0」である。
従って、末端情報収集部220−1−1の選択結果保存部225は、受け付けた選択情報(sel)と、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「10」との論理積を計算する。ここでは、計算された論理積は「10」となる。末端情報収集部220−1−1の選択結果保存部225は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部221へ出力する。
選択結果保存部225から出力された条件フラグ修正情報を受け付けた条件フラグ修正部221は、受け付けた条件フラグ修正情報「10」と、PEアレイ210から受け付けたPEの条件フラグ「11」との排他的論理和である「01」を修正済条件フラグとする。一方、他の末端情報収集部220−1−2〜220−1−4の条件フラグ修正部221は、PEアレイ210から受け付けた条件フラグをそのまま出力する。これにより、末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ修正部221が出力する修正済条件フラグをまとめると「01011011」となる。これを図14において1クロック目の行の末端情報収集部の条件フラグ(修正済み)の列に示す。
末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、データ選択部224及び選択結果保存部225へ選択結果を出力する。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた修正済条件フラグが「01」なので、最も左側にある1を選択した選択結果は「01」となる。同様に、末端情報収集部220−1−2の場合、受け付けた修正済条件フラグが「01」なので、最も左側にある1を選択した結果は「01」となる。この選択結果を末端情報収集部220−1−1〜220−1−4についてまとめると、図14において1クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「01011010」となる。
条件フラグ選択部223から出力された選択結果と、PEアレイ210から出力された各PEのデータとを受け付けた末端情報収集部220−1−1〜220−1−4のそれぞれのデータ選択部224は、受け付けた選択結果に応じたPEのデータを選択する。そして、選択されたPEのデータを選択データ(do)として上位情報収集部220−3へ出力する。ここでは、例えば、末端情報収集部220−1−1の場合、条件フラグ選択部223の選択結果が「01」なのでPE6のデータが選択データとなる。また、末端情報収集部220−1−2の場合、条件フラグ選択部223の選択結果が「01」なのでPE4のデータが選択データとなる。これを末端情報収集部220−1−1〜220−1−4についてまとめると、図14において1クロック目の行の末端情報収集部のデータ選択部の列が示すように、「PE6,PE4,PE3,PE1」となる。これらのPEのデータは、選択データとして1クロック目の終わりのクロックエッジにおいて、レジスタA228に記憶される。
また、条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部225は、1クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部225内のレジスタに記憶させる。
また、末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ検知部222は、上位情報収集部220−3の条件フラグ修正部221へ第1の検知結果及び第2の検知結果(det)を出力する。ここでは、例えば、末端情報収集部220−1−1の場合、PEアレイ210から受け付ける条件フラグは「11」であり、2つとも「1」である。従って、第1の検知結果及び第2の検知結果はともに「1」となる。また、末端情報収集部220−1−2の場合、PEアレイ210から受け付ける条件フラグは「01」であり、少なくとも1つが「1」である。従って、第1の検知結果は「1」であるが、第2の検知結果は「0」となる。このようにして、末端情報収集部220−1−1〜220−1−4の第1の検知結果及び第2の検知結果をまとめると、第1の検知結果は「1111」となり、第2の検知結果は「1001」となる。
ここで説明しているのは、SIMDアレイ用情報収集命令を連続して実行するサイクルである。そのため、上位情報収集部220−3の条件フラグ修正部221は、選択結果保存部225に記憶されているレジスタ値「1000」と、受け付けた第2の検知結果「1001」とのビット単位の論理積を計算する。さらに、レジスタ値のビット単位の論理反転結果「0111」と、受け付けた第1の検知結果「1111」とのビット単位の論理積を計算する。そして、計算された2つの論理積のビット単位の論理和を修正済条件フラグとして出力する。ここでは、「1000」と「0111」の論理和が計算され、図14において1クロック目の行の上位情報収集部の条件フラグ修正部の列に示すように「1111」が修正済条件フラグとして出力される。
上位情報収集部220−3の条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果である「1000」を1クロック目の終わりのクロックエッジにおいて選択結果保存部225内のレジスタに記憶させる。なお、ここでは、0クロック目において記憶された選択結果が1クロック目における選択結果に更新される。
また、上位情報収集部220−3のデータ選択部224は、選択結果保存部225のレジスタに記憶された更新前の選択結果を取得する。そして、その取得した選択結果においてアクティブであるビットに対応する末端情報収集部220−1−1〜220−1−4から出力されたデータを選択する。ここでは、更新前に選択結果保存部225のレジスタに記憶されていた選択結果「1000」においてアクティブであるビットに対応するのは末端情報収集部220−1−1である。そのため、末端情報収集部220−1−1から出力されたPE7のデータが選択される。そして、PE7のデータが収集結果データとして出力される。
また、1クロック目の終わりのクロックエッジにおいて、上位情報収集部220−3の選択結果保存部225は、更新前にレジスタに記憶されていた選択結果「1000」を更新要求(fo)として末端情報収集部220−1−1〜220−1−4の選択結果保存部225へ出力する。
末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225は、上位情報収集部220−3の選択結果保存部225から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた選択情報(sel)は「1」である。また、末端情報収集部220−1−2〜120−1−4の場合、受け付けた選択情報(sel)は「0」である。
従って、末端情報収集部220−1−1の選択結果保存部225は、受け付けた選択情報(sel)を、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「10」との論理積を計算する。ここでは、計算された論理積は「10」となる。末端情報収集部220−1−1の選択結果保存部225は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部221へ出力する。また、末端情報収集部220−1−1の選択結果保存部225は、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「10」を更新要求(fo)としてPEアレイ210へ出力する。
末端情報収集部220−1−1から出力された更新要求(fo)を受け付けたPEアレイ210では、受け付けた更新要求(fo)「10」の「1」に対応するPE7の条件フラグが非アクティブに更新される。この結果、条件フラグは、図14において2クロック目の行の条件フラグの列に示すように、「01011011」となる。
次に、2クロック目は、1クロック目と同様にSIMDアレイ用情報収集命令を連続して実行するサイクルである。上位情報収集部220−3の選択結果保存部225は、選択結果保存部225内のレジスタに記憶された選択結果「1000」を更新要求(fo)として末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225へ出力する。
末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225は、上位情報収集部220−3の選択結果保存部225から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた選択情報(sel)は「1」である。また、末端情報収集部220−1−2〜220−1−4の場合、受け付けた選択情報(sel)は「0」である。
従って、末端情報収集部220−1−1の選択結果保存部225は、受け付けた選択情報(sel)と、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「01」との論理積を計算する。ここでは、計算された論理積は「01」となる。末端情報収集部220−1−1の選択結果保存部225は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部221へ出力する。
選択結果保存部225から出力された条件フラグ修正情報を受け付けた条件フラグ修正部221は、受け付けた条件フラグ修正情報「01」と、PEアレイ210から受け付けたPEの条件フラグ「01」との排他的論理和である「00」を修正済条件フラグとする。
一方、他の末端情報収集部220−1−2〜220−1−4の条件フラグ修正部221は、PEアレイ210から受け付けた条件フラグをそのまま出力する。これにより、末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ修正部221が出力する修正済条件フラグをまとめると「00011011」となる。これを図14において2クロック目の行の末端情報収集部の条件フラグ(修正済み)の列に示す。
末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、データ選択部224及び選択結果保存部225へ選択結果を出力する。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた修正済条件フラグが「00」なので、最も左側にある1を選択した選択結果は「00」となる。同様に、末端情報収集部220−1−2の場合、受け付けた修正済条件フラグが「01」なので、最も左側にある1を選択した結果は「01」となる。この選択結果を末端情報収集部220−1−1〜220−1−4についてまとめると、図14において2クロック目の行の末端情報収集部の条件フラグ選択部の列が示すように、「00011010」となる。
条件フラグ選択部223から出力された選択結果と、PEアレイ210から出力された各PEのデータとを受け付けた末端情報収集部220−1−1〜220−1−4のそれぞれのデータ選択部224は、受け付けた選択結果に応じたPEのデータを選択する。そして、選択されたPEのデータを選択データ(do)として上位情報収集部220−3へ出力する。ここでは、例えば、末端情報収集部220−1−2の場合、条件フラグ選択部223の選択結果が「01」なのでPE4のデータが選択データとなる。これを末端情報収集部220−1−1〜220−1−4についてまとめると、図14において2クロック目の行の末端情報収集部のデータ選択部の列が示すように、「PE6,PE4,PE3,PE1」となる。これらのPEのデータは、選択データとして2クロック目の終わりのクロックエッジにおいて、レジスタA228に記憶される。なお、末端情報収集部220−1−1の場合、条件フラグ選択部223による選択結果が「00」となる。従って、データ選択部224は、新たにデータを選択せず、レジスタA228には既に記憶されているPE6のデータがそのまま保持される。
また、条件フラグ選択部23から出力された選択結果を受け付けた選択結果保存部225は、2クロック目の終わりのクロックエッジにおいて、受け付けた選択結果を選択結果保存部225内のレジスタに記憶させる。
また、末端情報収集部220−1−1〜220−1−4のそれぞれの条件フラグ検知部222は、上位情報収集部220−3の条件フラグ修正部221へ第1の検知結果及び第2の検知結果(det)を出力する。ここでは、例えば、末端情報収集部220−1−1,220−1−2の場合、受け付ける条件フラグは「01」であり、少なくとも1つが「1」である。従って、第1の検知結果は「1」であるが、第2の検知結果は「0」となる。このようにして、末端情報収集部220−1−1〜220−1−4の第1の検知結果及び第2の検知結果をまとめると、第1の検知結果は「1111」となり、第2の検知結果は「0001」となる。
ここで説明しているのは、SIMDアレイ用情報収集命令を連続して実行するサイクルである。そのため、上位情報収集部220−3の条件フラグ修正部221は、選択結果保存部225に記憶されているレジスタ値「1000」と、受け付けた第2の検知結果「0001」とのビット単位の論理積を計算する。さらに、レジスタ値のビット単位の論理反転結果「0111」と、受け付けた第1の検知結果「1111」とのビット単位の論理積を計算する。そして、計算された2つの論理積のビット単位の論理和が計算され、図14において2クロック目の行の上位情報収集部の条件フラグ修正部の列に示すように「0111」が修正済条件フラグとして出力される。
上位情報収集部220−3の条件フラグ選択部223は、条件フラグ修正部221から出力された修正済条件フラグを受け付ける。そして、受け付けた修正済条件フラグにおいてアクティブであるビットのうち、最も左側にある「1」を選択する。そして、その選択結果である「0100」を2クロック目の終わりのクロックエッジにおいて選択結果保存部225内のレジスタに記憶させる。なお、ここでは、1クロック目において記憶された選択結果が2クロック目における選択結果に更新される。
また、上位情報収集部220−3のデータ選択部224は、選択結果保存部225のレジスタに記憶された更新前の選択結果を取得する。そして、その取得した選択結果においてアクティブであるビットに対応する末端情報収集部220−1−1〜220−1−4から出力されたデータを選択する。ここでは、更新前に選択結果保存部225のレジスタに記憶されていた選択結果「1000」においてアクティブであるビットに対応するのは末端情報収集部220−1−1である。そのため、末端情報収集部220−1−1から出力されたPE6のデータが選択される。そして、PE6のデータが収集結果データとして出力される。
また、2クロック目の終わりのクロックエッジにおいて、上位情報収集部220−3の選択結果保存部225は、更新前にレジスタに記憶されていた選択結果「1000」を更新要求(fo)として末端情報収集部220−1−1〜220−1−4の選択結果保存部225へ出力する。
末端情報収集部220−1−1〜220−1−4のそれぞれの選択結果保存部225は、上位情報収集部220−3の選択結果保存部225から出力された更新要求(fo)を選択情報(sel)として受け付ける。ここでは、例えば、末端情報収集部220−1−1の場合、受け付けた選択情報(sel)は「1」である。また、末端情報収集部220−1−2〜120−1−4の場合、受け付けた選択情報(sel)は「0」である。
従って、末端情報収集部220−1−1の選択結果保存部225は、受け付けた選択情報(sel)と、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「01」との論理積を計算する。ここでは、計算された論理積は「01」となる。末端情報収集部220−1−1の選択結果保存部225は、この計算された論理積を条件フラグ修正情報として条件フラグ修正部221へ出力する。また、末端情報収集部220−1−1の選択結果保存部225は、選択結果保存部225内のレジスタに記憶された前のサイクルの選択結果「01」を更新要求(fo)としてPEアレイ210へ出力する。
末端情報収集部220−1−1から出力された更新要求(fo)を受け付けたPEアレイ210では、受け付けた更新要求(fo)「01」の「1」に対応するPE6の条件フラグが非アクティブに更新される。この結果、条件フラグは、図14において3クロック目の行の条件フラグの列に示すように、「00011011」となる。
3クロック目〜7クロック目も同様に処理することにより、SIMDアレイ用情報収集命令を連続して発行することができる。
なお、本実施形態においては、PEの数を8個としている。そのため、上位情報収集部220−3が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合が高くなっている。しかし、実際にはPEの数は128個等と多いため、上位情報収集部220−3が収集結果データを出力するまでのクロックサイクル数の全体のクロックサイクル数に占める割合は限りなく小さくなる。
このように本実施形態においては、PEアレイ210のPEのそれぞれは、データ(di)及び条件フラグ(fi)を情報収集部220へ出力し、条件フラグを非アクティブに更新するための更新要求(fo)を受け付けると、受け付けた更新要求(fo)に応じて条件フラグを非アクティブに更新する。また、情報収集部220は、PEアレイ210のPEのそれぞれから出力されたデータ(di)及び条件フラグ(fi)を受け付けると、受け付けた条件フラグ(fi)がアクティブであるPEの中から、所定の優先順位に基づいて1つのPEを選択し、選択されたPEから出力されたデータを収集結果データとして出力するとともに、選択されたプロセッシングエレメントの条件フラグを非アクティブに更新させるための更新要求(fo)を出力する。
そのため、クリティカルパスによって動作速度を制限されることがない。
また、条件フラグを更新するのに1クロックサイクルの遅延が発生する場合でも、SIMD型データ収集命令を連続して発行でき、所定の条件を満たすデータを効率的に収集することができる。
また、多数のPEのデータを収集する場合、階層化された子情報収集部を用いることにより、配線の容易性や処理負荷の分散を図ることができる。
10,110,210 PEアレイ
20,120,220 情報収集部
21,221 条件フラグ修正部
22,122,222 条件フラグ検知部
23,123,223 条件フラグ選択部
23−1,23−2 ビット置換器
23−3 リーディングゼロ
24,124,224 データ選択部
25,225 選択結果保存部
25−1 シフトレジスタ
25−2,127−4 論理和器
26 条件フラグ更新部
120−1,220−1 末端情報収集部層
120−1−1〜120−1−n,220−1−1〜220−1−n 末端情報収集部
120−2,220−2 中間情報収集部層
120−2−1〜120−1−n,220−2−1〜220−2−n 中間情報収集部
120−3,220−3 上位情報収集部
127 カウント制御部
127−1,127−2 セレクタ
127−3 レジスタ
127−5 デクリメンタ
127−6 論理否定器
127−7 論理積器
127−8 加算器
128,228 レジスタA
129 レジスタB
130 レジスタC
131 レジスタD

Claims (12)

  1. 演算命令に基づいて並列に動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサであって、
    前記複数のプロセッシングエレメントのそれぞれは、データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力し、その後、前記条件フラグを非アクティブに更新させるための更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新し、
    前記情報収集部は、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付けると、該受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて1つのプロセッシングエレメントを選択し、該選択されたプロセッシングエレメントのデータを収集結果データとして出力するとともに、該選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力するプロセッサ。
  2. 請求項1に記載のプロセッサにおいて、
    前記情報収集部は、
    前記選択されたプロセッシングエレメントを示す選択結果を記憶し、該記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成して出力する第1の選択結果保存部と、
    前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第1の選択結果保存部から出力された前記条件フラグ修正情報に応じて修正し、該修正された修正済条件フラグを出力する第1の条件フラグ修正部と、
    前記第1の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて1つ選択し、該選択されたプロセッシングエレメント示す前記選択結果を出力する第1の条件フラグ選択部と、
    前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第1の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記データを前記収集結果データとして出力する第1のデータ選択部と、
    前記第1の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力する条件フラグ更新部と、を有し、
    前記第1の選択結果保存部は、前記第1の条件フラグ選択部から出力された前記選択結果を受け付け、該受け付けた前記選択結果を記憶するプロセッサ。
  3. 請求項2に記載のプロセッサにおいて、
    前記第1の選択結果保存部は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶し、前記記憶された選択結果の論理和を前記条件フラグ修正情報とするプロセッサ。
  4. 請求項2または請求項3に記載のプロセッサにおいて、
    前記第1の条件フラグ修正部は、前記受け付けた条件フラグと、前記第1の選択結果保存部から出力された前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとするプロセッサ。
  5. 請求項1に記載のプロセッサにおいて、
    前記情報収集部は、
    前記選択されたプロセッシングエレメントを示す選択結果を記憶する第2の選択結果保存部と、
    前記複数のプロセッシングエレメントのそれぞれから出力された前記条件フラグを受け付け、該受け付けた前記条件フラグを、前記第2の選択結果保存部に記憶された選択結果に応じて修正し、該修正された修正済条件フラグを出力する第2の条件フラグ修正部と、
    前記第2の条件フラグ修正部から出力された前記修正済条件フラグを受け付け、該受け付けた修正済条件フラグに応じ、前記修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて1つ選択し、該選択されたプロセッシングエレメントを示す前記選択結果を出力する第3の条件フラグ選択部と、
    前記複数のプロセッシングエレメントのそれぞれから出力された前記データと、前記第3の条件フラグ選択部から出力された前記選択結果とを受け付け、該受け付けた前記選択結果が示す前記プロセッシングエレメントの前記データを収集結果データとして出力する第3のデータ選択部と、を有し、
    前記第2の選択結果保存部は、前記条件フラグ選択部から出力された前記選択結果を受け付け、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶するプロセッサ。
  6. 請求項に記載のプロセッサにおいて、
    前記情報収集部は、前記複数のプロセッシングエレメントから出力された前記条件フラグを受け付ける条件フラグ検知部を有し、
    前記条件フラグ検知部は、前記条件フラグを更新するために必要な遅延クロックサイクル数が1クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知し、
    前記第2の選択結果保存部は、前記条件フラグ検知部にて検知された結果に応じて前記更新要求を出力するプロセッサ。
  7. データと、前記データに応じてアクティブまたは非アクティブとなる条件フラグとを保持し、演算命令に基づいて並列して動作する複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのそれぞれのデータを収集する情報収集部とを有してなるプロセッサにおけるデータ収集方法であって、
    前記複数のプロセッシングエレメントのそれぞれが、前記演算命令を受け付けると、前記データ及び前記条件フラグを前記情報収集部へ出力する処理と、
    前記情報収集部が、前記複数のプロセッシングエレメントのそれぞれから出力された前記データ及び前記条件フラグを受け付ける処理と、
    前記情報収集部が、前記受け付けた条件フラグがアクティブであるプロセッシングエレメントの中から、所定の優先順位に基づいて1つのプロセッシングエレメントを選択する選択処理と、
    前記情報収集部が、前記選択されたプロセッシングエレメントのデータを収集結果データとして出力する処理と、
    前記情報収集部が、前記選択されたプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための更新要求を出力する更新要求出力処理と、
    前記プロセッシングエレメントのそれぞれが、前記更新要求を受け付けると、該受け付けた更新要求に応じて前記条件フラグを非アクティブに更新する処理と、を有するデータ収集方法。
  8. 請求項に記載のデータ収集方法において、
    前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する記憶処理をさらに有し、
    前記選択処理は、
    前記記憶された選択結果に応じ、前記受け付けた条件フラグを修正するための条件フラグ修正情報を生成する修正情報生成処理と、
    前記受け付けた条件フラグを、前記条件フラグ修正情報に応じて修正した修正済条件フラグを生成する修正済条件フラグ生成処理と、
    前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて1つ選択する処理と、を含むデータ収集方法。
  9. 請求項に記載のデータ収集方法において、
    前記記憶処理は、前記条件フラグを更新するために必要な遅延クロックサイクル数に応じた数だけ前記受け付けた選択結果を受け付けた順番に記憶する処理であり、
    前記修正情報生成処理は、前記記憶された選択結果の論理和を前記条件フラグ修正情報とする処理であるデータ収集方法。
  10. 請求項または請求項に記載のデータ収集方法において、
    前記修正済フラグ生成処理は、前記受け付けた条件フラグと前記条件フラグ修正情報との排他的論理和を前記修正済条件フラグとする処理であるデータ収集方法。
  11. 請求項に記載のデータ収集方法において、
    前記情報収集部が、前記選択されたプロセッシングエレメントを示す選択結果を記憶する処理をさらに有し、
    前記選択処理は、
    前記記憶された選択結果に応じ、前記受け付けた前記条件フラグを修正した修正済条件フラグを生成する処理と、
    前記生成された修正済条件フラグに応じ、該修正済条件フラグがアクティブである前記プロセッシングエレメントを前記所定の優先順位に基づいて1つ選択する処理と、を含み、
    前記更新要求出力処理は、前記記憶された選択結果が示すプロセッシングエレメントの前記条件フラグを非アクティブに更新させるための前記更新要求を出力した後、前記受け付けた前記選択結果を記憶する処理をさらに含むデータ収集方法。
  12. 請求項11に記載のデータ収集方法において、
    前記情報収集部が、前記条件フラグを更新するために必要な遅延クロックサイクル数が1クロックサイクルである場合、前記受け付けた前記条件フラグのうちアクティブである条件フラグの数を検知する処理をさらに有し、
    前記更新要求出力処理は、前記検知された結果に応じて前記更新要求を出力する処理をさらに含むデータ収集方法。
JP2009035542A 2009-02-18 2009-02-18 プロセッサ及びデータ収集方法 Expired - Fee Related JP4539889B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2009035542A JP4539889B2 (ja) 2009-02-18 2009-02-18 プロセッサ及びデータ収集方法
US13/144,831 US8688958B2 (en) 2009-02-18 2010-01-14 System for data collection from processing elements in a SIMD processor
PCT/JP2010/050310 WO2010095476A1 (ja) 2009-02-18 2010-01-14 プロセッサ及びデータ収集方法
EP10743605.7A EP2400399A4 (en) 2009-02-18 2010-01-14 PROCESSOR AND METHOD FOR COLLECTING DATA

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009035542A JP4539889B2 (ja) 2009-02-18 2009-02-18 プロセッサ及びデータ収集方法

Publications (2)

Publication Number Publication Date
JP2010191696A JP2010191696A (ja) 2010-09-02
JP4539889B2 true JP4539889B2 (ja) 2010-09-08

Family

ID=42633763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009035542A Expired - Fee Related JP4539889B2 (ja) 2009-02-18 2009-02-18 プロセッサ及びデータ収集方法

Country Status (4)

Country Link
US (1) US8688958B2 (ja)
EP (1) EP2400399A4 (ja)
JP (1) JP4539889B2 (ja)
WO (1) WO2010095476A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US10521449B1 (en) * 2014-12-17 2019-12-31 Amazon Technologies, Inc. Cross-region replication architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197694A (ja) * 1991-03-15 1993-08-06 Fujitsu Ltd 並列計算機におけるデータ収集処理方式
JP2002175288A (ja) * 2000-09-27 2002-06-21 Sony Computer Entertainment Inc マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
JP2006277635A (ja) * 2005-03-30 2006-10-12 Nec Corp 情報処理システムとjob実行方法
JP2008071037A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5416851A (en) * 1991-07-30 1995-05-16 Xerox Corporation Image analysis based on location sampling
JPH06187312A (ja) 1992-12-18 1994-07-08 Omron Corp マルチcpuシステムにおける処理方法および装置
US5805595A (en) * 1996-10-23 1998-09-08 Cisco Systems, Inc. System and method for communicating packetized data over a channel bank
JP2001160066A (ja) * 1998-12-25 2001-06-12 Matsushita Electric Ind Co Ltd データ処理装置、データ処理方法および記録媒体、並びに該データ処理方法をコンピュータに実行させるためのプログラム
JP2002175238A (ja) 2000-12-07 2002-06-21 Canon Inc 情報処理装置および情報処理方法
JP5128392B2 (ja) 2007-08-03 2013-01-23 ローム アンド ハース カンパニー 油配合物

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197694A (ja) * 1991-03-15 1993-08-06 Fujitsu Ltd 並列計算機におけるデータ収集処理方式
JP2002175288A (ja) * 2000-09-27 2002-06-21 Sony Computer Entertainment Inc マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
JP2006277635A (ja) * 2005-03-30 2006-10-12 Nec Corp 情報処理システムとjob実行方法
JP2008071037A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ

Also Published As

Publication number Publication date
JP2010191696A (ja) 2010-09-02
US20110271077A1 (en) 2011-11-03
EP2400399A4 (en) 2013-05-29
EP2400399A1 (en) 2011-12-28
US8688958B2 (en) 2014-04-01
WO2010095476A1 (ja) 2010-08-26

Similar Documents

Publication Publication Date Title
JP3729881B2 (ja) 並列加算および平均演算を行うための回路およびその方法
US20040264693A1 (en) Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US20200050927A1 (en) Multiplication and addition device for matrices, neural network computing device, and method
WO2017092283A1 (zh) 数据累加装置、方法及数字信号处理装置
CN109313551A (zh) 使用编译器插入的转换代码对冗余线程进行指纹识别
Han et al. Efficient parallel algorithms for computing all pair shortest paths in directed graphs
JP4539889B2 (ja) プロセッサ及びデータ収集方法
JP3736741B2 (ja) データ演算処理装置
US6675286B1 (en) Multimedia instruction set for wide data paths
CN102375721A (zh) 一种矩阵乘法运算方法、图形处理器和电子设备
Yamashita et al. Algorithm 925: Parallel solver for semidefinite programming problem having sparse schur complement matrix
US11755320B2 (en) Compute array of a processor with mixed-precision numerical linear algebra support
US6523054B1 (en) Galois field arithmetic processor
US8984385B1 (en) Systems and methods for cyclic redundancy check implementation
JP6335661B2 (ja) 演算装置およびその制御方法
JP5960639B2 (ja) 情報処理装置および情報処理方法
Zeng et al. A necessary and sufficient condition for throughput scalability of fork and join networks with blocking
JP3736745B2 (ja) データ演算処理装置及びデータ演算処理プログラム
JP3545598B2 (ja) 交通情報予測方法、装置、および交通情報予測プログラムを記録した記録媒体
JP2008204356A (ja) リコンフィギャラブル回路
RU2451988C1 (ru) Быстродействующее устройство для расчета порядковых номеров битов с высоким логическим уровнем в строке данных
Riznyk et al. Synthesis of Recovery Schemes for Distributed Computing Based on Ideal Ring Bundles
CN117743250A (zh) 处理单元数组及其运作方法
US20140328349A1 (en) Distributed sequence number checking for network testing
Anam et al. Failure mitigation in linear, sesquilinear and bijective operations on integer data streams via numerical entanglement

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100615

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees