JP4184224B2 - 並列実行プロセッサ、命令割当方法 - Google Patents
並列実行プロセッサ、命令割当方法 Download PDFInfo
- Publication number
- JP4184224B2 JP4184224B2 JP2003354369A JP2003354369A JP4184224B2 JP 4184224 B2 JP4184224 B2 JP 4184224B2 JP 2003354369 A JP2003354369 A JP 2003354369A JP 2003354369 A JP2003354369 A JP 2003354369A JP 4184224 B2 JP4184224 B2 JP 4184224B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- group
- data
- parallel execution
- execution processor
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 35
- 238000010586 diagram Methods 0.000 description 33
- 239000000284 extract Substances 0.000 description 17
- 230000008859 change Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000000470 constituent Substances 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Landscapes
- Advance Control (AREA)
Description
SIMD型プロセッサとは、内部に複数の要素プロセッサを備え、各要素プロセッサに単一の命令を並列に実行させるプロセッサである。通常、SIMD型プロセッサは、CPU(Central Processing Unit)のコプロセッサとしてコンピュータに搭載されている。そして、CPUからの動作指示があれば、1つの演算命令と複数のデータとをメモリからフェッチし、各要素プロセッサに単一の演算命令を並列に実行させる。例えば、SIMD型プロセッサが128個の要素プロセッサを備えていれば、単一の演算命令が128並列に実行される。これにより、マルチメディアデータ処理の時間短縮を図ることができる。
さらに、本発明は、メモリ内に異なる演算の対象となるデータが混在している場合であっても、マルチメディアデータ処理の時間短縮を図る技術を提供することを第2の目的とする。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成し、グループ毎に異なる命令を並列に実行させることができる。
また、前記命令列には、前記グループ情報が特定するグループの数と同数の命令が含まれていることとしてもよい。
上記構成によれば、並列実行プロセッサは、解読した命令を余りなく1命令1グループ対応でグループに割り当てることができる。
上記構成によれば、並列実行プロセッサは、全ての要素プロセッサを1つのグループとするか、半数ずつの2つのグループとするかを選択することができる。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にレジスタにロードして、各データに対応する命令を並列に実行することができる。
これにより、並列実行プロセッサは、1命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
このように、配属方法が固定的ではなく動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
上記構成によれば、並列実行プロセッサは、要素プロセッサから2つのグループを構成する場合に、要素プロセッサ毎に配属先となるグループを動的に変更することができる。
このように、各要素プロセッサの配属先となるグループを動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
このように、並列実行プロセッサは、グループ情報と命令列とを同時に取得するので、グループ構成の変更が頻繁に行われる場合であっても、データ処理が遅れることがない。
また、前記取得手段は、前記グループ情報が、前記複数の要素プロセッサを2つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、前記実行制御手段は、前記特定のグループに配属されている要素プロセッサに動作停止を指示することとしてもよい。
これにより、並列実行プロセッサは、動作の不要な要素プロセッサを停止させ、消費電力の削減を図ることができる。
上記目的を達成するために、本発明に係る並列実行プロセッサは、複数の要素プロセッサと、前記複数の要素プロセッサのそれぞれに1つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に一定の規則に従って格納されてなるレジスタと、第1の命令と第2の命令とを含む命令列を取得する取得手段と、前記取得手段により取得された命令列から第1の命令と第2の命令を解読する解読手段と、第1の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第2の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとに、前記解読手段により解読された第1の命令と第2の命令とを、それぞれ割り当てて、各要素プロセッサに並列に実行させる実行制御手段とを備える。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
上記構成によれば、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
これにより、並列実行プロセッサは、1命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成して、グループ毎に異なる複数の命令を並列に実行させることができる。
本発明に係る命令割当方法は、複数の要素プロセッサに、第1の命令と第2の命令とを割り当てる命令割当方法であって、第1の命令の対象データと第2の命令の対象データとが所定の規則で配列され格納されているメモリから、前記複数の要素プロセッサと同数の対象データを読み込み、前記複数の要素プロセッサのそれぞれに対応付けられたレジスタファイルに、その配列を並び替えずに1つずつ格納する格納ステップと、第1の命令と第2の命令とを含む命令列を取得する取得ステップと、前記取得ステップにより取得された命令列から第1の命令と第2の命令を抽出して解読する解読ステップと、前記格納ステップにより第1の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサと、前記第2の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサとに、前記解読ステップにより解読された第1の命令と第2の命令とを、それぞれ割り当てる割当ステップとを含む。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にデータをロードし、各データに対応する命令を並列に実行することができる。
<概要>
本発明の実施の形態1に係る並列実行プロセッサは、まず、命令データをフェッチする。ここで、命令データに1つの命令のみが含まれている場合には、並列実行プロセッサは、単一命令を全ての要素プロセッサに割り当てる。また、命令データに2つの命令が含まれている場合には、並列実行プロセッサは、要素プロセッサから2つのグループを構成し、各グループに命令を1つずつ割り当てる。
以下に、実施の形態1に係る並列実行プロセッサについて詳細に説明する。
<構成>
図1は、本発明の実施の形態1に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
CPU1は、メモリ2、並列実行プロセッサ100の動作を制御する。
メモリ2は、演算対象となるデータと命令データとを格納している。
並列実行プロセッサ100は、CPU1からの動作指示を受けて動作するコプロセッサであり、命令フェッチ部110、命令デコード部120、PE130a、130b、130c、130d、レジスタファイル140a、140b、140c、140dを備える。一般的にPEは、64、128などと2のべき乗の個数だけ備えられる。本明細書では、簡単のためPEが4個の場合で説明する。
図2は、命令フェッチ部110がフェッチする命令データのデータ構造を示す図である。
命令データは、機械語で記述された32ビット長のデータであり、先頭2ビットのフォーマットフィールドと、それに続く30ビットのデータフィールドとを持つ。
図2(a)は、配置形式が「0b00」の場合の命令データのデータ構造を示す図である。
ここで、「0bxx」との表記は、「xx」の値が2進数であることを示す。
当該命令データのフォーマットフィールドには、「0b00」がセットされ、データフィールドには、12ビットの1つのオペコードと、18ビットの1つのオペランドがセットされる。これは、オペコードa1とオペランドa2とからなる1つの命令が命令データに含まれていることを示す。
当該命令データのフォーマットフィールドには、「0b01」がセットされ、データフィールドには、6ビットの2つのオペコードと9ビットの2つのオペランドがセットされる。これは、オペコードb1とオペランドb2とからなる命令と、オペコードb3とオペランドb4とからなる命令との2つの命令が命令データに含まれていることを示す。
当該命令データのフォーマットフィールドには、「0b10」がセットされ、データフィールドには、6ビットの2つのオペコードと18ビットの1つのオペランドがセットされる。これは、オペコードc1とオペランドc3とからなる命令と、オペコードc2とオペランドc3とからなる命令との2つの命令が命令データに含まれていることを示す。
当該命令データのフォーマットフィールドには、「0b11」がセットされ、データフィールドには、12ビットの1つのオペコードと9ビットの2つのオペランドがセットされる。これは、オペコードd1とオペランドd2とからなる命令と、オペコードd1と オペランドd3とからなる命令との2つの命令が命令データに含まれていることを示す。
なお、上記の命令データは、オペコード及びオペランドに配分されるビット数によって、指定できる命令の数とレジスタの数とが異なる。レジスタr0とレジスタr1の加算結果をレジスタr2に格納する加算命令「ADD r2,r0,r1」を例として以下に示す。
また、命令デコード部120は、内部に2つの制御信号出力部121a、121bを備えている。命令データが、図2(a)に示されるデータ構造であれば、制御信号出力部121a、121bは、同一の制御信号を出力する。一方、命令データが、図2(b)、図2(c)、図2(d)に示されるデータ構造であれば、制御信号出力部121a、121bは、互いに異なる制御信号を出力する。以下に、命令デコード部の内部構造を説明する。
命令デコード部120は、解読部122a、122b、122c、122dと、制御信号出力部121a、121bとを備える。
命令デコード部120は、命令フェッチ部110がフェッチした命令データのうち、フォーマットフィールドの2ビットを制御信号出力部121a、121bに与え、データフィールドの30ビットを解読部122a〜122dの全てに与える。
生成された制御信号は、制御信号出力部121a、121bに送られる。
解読部122bは、図2(b)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に6ビットをオペコード、9ビットをオペランド、6ビットをオペコード、9ビットをオペランドとして解読し、2つの制御信号を生成する。
解読部122cは、図2(c)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に6ビットをオペコード、6ビットをオペコード、18ビットをオペランドとして解読し、2つの制御信号を生成する。
解読部122dは、図2(d)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に12ビットをオペコード、9ビットをオペランド、9ビットをオペランドとして解読し、2つの制御信号を生成する。
制御信号出力部121a、121bは、入力端子a、b、c、dに入力された制御信号のいずれかを、フォーマットフィールドの2ビットに基づいて選択的に出力する。
これにより、命令デコード部120は、命令データに1つの命令が含まれている場合、制御信号出力部121a、121bから同一の制御信号を出力し、命令データに2つの命令が含まれている場合、制御信号出力部121a、121bから異なる2つの制御信号を出力することができる。
レジスタファイル140a〜140dは、ロード命令によりメモリ2から読み込まれたデータを格納している。
メモリ2には、同一演算の対象となるデータがまとまって格納されている場合と、異なる2つの演算の対象となるデータが交互に格納されている場合とがある。上記のロード命令は、そのどちらの場合であっても、データの配列を並び替えずにレジスタファイル140a〜140dに格納する。並列実行プロセッサ100は、データがまとまって格納されている場合には、全てのPE130a〜130dに同一の演算命令を実行させることができる。また、データが交互に格納されている場合には、PE130a、130cの第1グループと、PE130b、130dの第2グループとに異なる演算命令を実行させることができる。
<動作>
次に、上述のように構成された並列実行プロセッサ100の動作について説明する。
ステップS101:命令フェッチ部110が命令データをフェッチする。
ステップS102:命令デコード部120は、命令フェッチ部110がフェッチした命令データから制御信号を生成する。この際に、命令デコード部120は、解読部122a〜122dにより並列に制御信号を生成する。解読部122aは、命令データを「0b00」の配置形式に基づいて解読し、制御信号を生成する。また、解読部122bは、命令データを「0b01」の配置形式に基づいて解読し、制御信号を生成する。解読部122cは、命令データを「0b10」の配置形式に基づいて解読し、制御信号を生成する。解読部122dは、命令データを「0b11」の配置形式に基づいて解読し、制御信号を生成する。
ステップS104:ステップS103において配置形式が「0b00」の場合、命令デコード部120は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS107:ステップS105において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S105:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
また、並列実行プロセッサ100は、2つの異なる命令を並列に実行する場合には、一方の命令をPE130a、130cが実行し、他方の命令をPE130b、130dが実行する仕様となっている。これにより、メモリ2内に、一方の命令の対象となるデータと、他方の命令の対象となるデータとが交互に配列されて格納されていたとしても、並列実行プロセッサ100は、その配列を並び替えずに一斉にメモリ2からレジスタファイル140a〜140dにロードして各データに適する命令を並列に実行することができる。メモリ2内に異なる命令の対象となるデータが交互に配列されている例としては、複素数データ(実数データと虚数データとが交互に配列される)や、オーディオデータ(ステレオ信号の左データと右データとが交互に配列される)などがある。
<概要>
実施の形態1に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、各グループの構成方法が固定的である。本発明の実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、各グループの構成方法を予め定められた中から動的に選択することができる。
以下に、実施の形態2に係る並列実行プロセッサについて詳細に説明する。
<構成>
図5は、実施の形態2に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
配属部250は、予め定められた複数の配属方法のうち、CPU1により指定された配属方法により、PE130a〜PE130dを第1グループと第2グループとに配属させる。制御信号出力部121a、121bからの各制御信号は、それぞれ第1グループのPEと第2グループのPEとに送られる。
配属部250は、制御信号入力部251a、251b、組み合わせ保持部252、配属情報入手部253、配属制御部254を備える。また、配属制御部254は、制御信号出力部255a〜255dを備える。
制御信号入力部251aは、制御信号出力部121aと接続されている。また、制御信号入力部251bは、制御信号出力部121bと接続されている。
組み合わせ保持部252は、ROMであり、制御信号入力部251a、251bと制御信号出力部255a〜255dとの接続の組み合わせを2組保持している。
図7は、組み合わせ保持部252が保持する2組の組み合わせを示す図である。
組み合わせAは、制御信号入力部251aを制御信号出力部255a、255cに接続し、また、制御信号入力部251bを制御信号出力部255b、255dに接続する組み合わせである。
配属情報入手部253は、組み合わせAと組み合わせBとのいずれを選択するかを示す配属情報「0b00」又は「0b01」をCPU1から入手する。
上記構成により、配属情報が「0b00」の場合、配属部250は、制御信号入力部251aに入力された制御信号を制御信号出力部255a、255cから出力し、制御信号入力部251bに入力された制御信号を制御信号出力部255b、255dから出力することができる。
これにより、並列実行プロセッサ200は、2つの異なる命令をPE130a〜PE130dに実行させる場合に、PE130a〜130dの配列順に交互に異なる命令を実行させるか、PE130a〜130dの配列順の前半と後半とで異なる命令を実行させるかを選択することができる。
この際に、配属情報が「0b00」であれば、PE130a〜PE130dの配列順に交互にPEが動作を停止し、配属情報が「0b01」であれば、PE130a〜130dの配列の前半と後半とのいずれか一方のPEが動作を停止する。
次に、上述のように構成された並列実行プロセッサ200の動作について説明する。
図8は、実施の形態2に係る並列実行プロセッサ200の動作の流れを示す図である。
ステップS201:命令フェッチ部110が命令データをフェッチする。
ステップS202:命令デコード部120は、命令フェッチ部110がフェッチした命令データから各配置形式「0b00」、「0b01」、「0b10」、「0b11」に基づいて制御信号を生成する。
ステップS204:ステップS203において配置形式が「0b00」の場合、命令デコード部120は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS206:ステップS205において配属情報が「0b00」であれば、配属部250は、組み合わせAを選択する。
命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS208:ステップS207において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S207:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS210:ステップS205において配属情報が「0b01」であれば、配属部250は、組み合わせBを選択する。
ステップS211:組み合わせBによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS213:ステップS211において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S211:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
これにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
また、組み合わせ保持部252に保持されている配属先の組み合わせは、プログラマブルに書き換え可能としてもよい。
<概要>
実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。これに対し、本発明の実施の形態3に係る並列実行プロセッサは、グループの構成方法を予め定められた中から選択するのではなく、PE毎にどちらのグループに配属させるかを自由に決定することができる。
以下に、実施の形態3に係る並列実行プロセッサについて詳細に説明する。
<構成>
図9は、実施の形態3に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
配属部350は、PE130a〜PE130dのPE毎にいずれのグループに配属されるべきかを示す配属情報をCPU1から入手して、それに応じてPE130a〜PE130dを第1グループと第2グループとに配属させる。制御信号出力部121a、121bからの各制御信号は、それぞれ第1グループのPEと第2グループのPEとに送られる。
配属部350は、制御信号入力部351a、351b、配属情報入手部353、配属制御部354を備える。また、配属制御部354は、制御信号出力部355a〜355dを備える。
制御信号入力部351aは、制御信号出力部121aと接続されている。また、制御信号入力部351bは、制御信号出力部121bと接続されている。
配属情報入手部353は、PE130a〜PE130dのPE毎にいずれのグループに配属されるべきかを示す配属情報をCPU1から入手する。
図11は、配属情報入手部353が入手する配属情報の例を示す図である。
図11(a)は、PE130a、130cが第1グループに、PE130b、130dが第2グループに配属される場合の配属情報を示している。
配属制御部354は、配属情報入手部353により入手された配属情報を受け取り、各PEのグループの配属先を決定する。
これにより、並列実行プロセッサ300は、2つの異なる命令をPE130a〜PE130dに実行させる場合に、配属情報に応じてPE130a〜PE130dからグループを構成してそれぞれのグループで異なる命令を実行させることができる。
この際に、配属情報が「0b0101」であれば、動作を停止したPEが交互に配列されることになる。
次に、上述のように構成された並列実行プロセッサ300の動作について説明する。
図12は、実施の形態3に係る並列実行プロセッサ300の動作の流れを示す図である。
ステップS301:命令フェッチ部110が命令データをフェッチする。
ステップS303:命令デコード部120は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部122a〜122dのうちの1つを選択する。
命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS307:ステップS306において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S306:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
以上のように、並列実行プロセッサ300は、グループの構成方法を予め定められた中から選択するのではなく、PE毎にどちらのグループに配属させるかを決定する。
なお、実施の形態3では、配属情報を1つの制御信号出力部に対して1ビットを割り当てているが、これ以外の割り当て方でも構わない。
(実施の形態4)
<概要>
実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を示す配属情報を、CPU1から入手している。本発明の実施の形態4に係る並列実行プロセッサは、配属情報を命令データ中から入手する。
<構成>
図13は、実施の形態4に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図13に示す並列実行プロセッサ400の構成は実施の形態2の並列実行プロセッサ200の命令デコード部120に代えて命令デコード部420を設けたものである。並列実行プロセッサ200と同様の構成要素には同一の符号を付し、それらの説明を省略する。
図14は、実施の形態4に係る命令データのデータ構造を示す図である。
当該命令データは、図2(a)の命令データとデータ構造が同一であり、配属情報を含まない。これは、全てのPEに単一の命令を実行させる場合には、PEの配属について考慮する必要がないからである。
当該命令データは、2ビットの配属情報b5を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報b5に2ビットが割り当てられるので、オペランドb2、b4は、図2(b)に比べてそれぞれ1ビットずつ短い。
当該命令データは、2ビットの配属情報c4を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報c4に2ビットが割り当てられるので、オペランドc3は、図2(c)に比べて2ビットだけ短い。
当該命令データは、2ビットの配属情報d4を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報d4に2ビットが割り当てられるので、オペランドd2、d3は、図2(d)に比べて1ビットずつ短い。
命令デコード部420は、解読部422a、422b、422c、422d、制御信号出力部121a、121b、及び、配属情報出力部423を備える。
命令デコード部420が制御信号を出力する機能については、実施の形態2における命令デコード部120と同様なので、ここでは、配属部250に配属情報を与える機能のみを説明する。
配属情報出力部423は、入力端子a、b、cに入力された配属情報のいずれかを、フォーマットフィールドの2ビットに基づいて選択的に出力する。出力された配属情報は、配属部250に送られる。
<動作>
次に、上述のように構成された並列実行プロセッサ400の動作について説明する。
図16、及び図17は、実施の形態4に係る並列実行プロセッサ400の動作の流れを示す図である。
ステップS402:命令デコード部420は、命令フェッチ部110がフェッチした命令データから各配置形式「0b00」、「0b01」、「0b10」、「0b11」に基づいて制御信号を生成する。
ステップS403:命令デコード部420は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部422a〜422dのうちの1つを選択する。
ステップS406:命令デコード部420は、配属情報が「0b00」であれば、配属部250に配属情報「0b00」を出力する。
ステップS408:配属部250は、命令デコード部420から配属情報を入手する。
ステップS409:配属部250は、入手した配属情報が「0b00」であれば、組み合わせAを選択する。
ステップS410:組み合わせAによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS412:ステップS410において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S410:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
命令デコード部420は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS415:ステップS414において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S414:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
以上のように、並列実行プロセッサ400は、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。
なお、本実施の形態で説明した命令データは、単なる一例であり、他のデータ構造としてもよい。例えば、命令データに2つのオペコードと1つのオペランドとが含まれる場合、図14(c)ではなく図14(e)のようにしてもよい。図14(e)は、オペランドに分配されるビット数を削減し、オペコードに分配されるビット数を増加させたものである。このようにすると、図14(c)に比べて、オペランドにより指定できるレジスタの本数が削減されるが、その代わり、オペコードできる指定される命令の種類が増加する。
<概要>
実施の形態1に係る並列実行プロセッサは、各PEがそれぞれに対応するレジスタファイルにアクセスする。本発明の実施の形態5に係る並列実行プロセッサは、レジスタファイルが2つで1つの組を形成しており、各PEは、各組内のどちらのレジスタファイルにもアクセス可能としている。
以下に、実施の形態5に係る並列実行プロセッサについて詳細に説明する。
<構成>
図18は、実施の形態5に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
切替部560a、560bは、各PEのアクセス先となるレジスタファイルを切り替える。これにより、例えば、PE130aは、レジスタファイル140aだけでなく、レジスタファイル140bにもアクセスすることができる。また、PE130bは、レジスタファイル140bだけでなく、レジスタファイル140aにもアクセスすることができる。
PE130a、130bは、それぞれ制御信号出力部121a、121bからの制御信号に従って動作する。制御信号は、PE内部の演算器、データパスを制御する信号である。図19に示すPEには、演算器として、乗算器(MUL131a、131b)、算術論理演算器(ALU132a、132b)が含まれる。また、データパスの制御とは、アクセスするべきレジスタ番号の指定、アクセスするべきレジスタファイルの指定、データを入力するべき演算器の指定が含まれる。ここで、レジスタ番号の指定は、レジスタ指定信号S11によりなされる。また、レジスタファイルの指定は、切替信号S12a、S12bによりなされる。
セレクタ561aは、切替信号S12aによりPE130aのアクセス先としてレジスタファイル140aとレジスタファイル140bとを切り替える。具体的には、切替信号S12aが「0b0」であれば、レジスタファイル140aが選択される。また、切替信号S12aが「0b1」であれば、レジスタファイル140bが選択される。セレクタ561bについても同様なので説明を省略する。
図20は、メモリ2及びレジスタファイル140a〜140d内に複素数データが格納されている様子を示す図である。
zk=xk+iyk
wk=ck+isk
であるとする。並列実行プロセッサ500は、複素数データの乗算zk×wkを2並列に実行することができる。ここで、「i」は虚数単位であり、「k」は0以上の整数である。また、xkとckとが実数データ、ykとskとが虚数データである。
一般的にメモリ2には、実数データと虚数データとが交互に配列されて格納されている。例えば、アドレス「0x0100」には、{x0、y0、x1、y1}、また、アドレス「0x0200」には、{c0、s0、c1、s1}が格納されている。
図20(b)は、ロード命令後のレジスタファイル140a〜140dの内容を示す。
zk×wk=(xk×ck−yk×sk)+i(xk×sk+yk×ck)
=Xk+iYk
となる。ここで、Xkは、乗算結果の実数データ、Ykは、乗算結果の虚数データを示す。並列実行プロセッサ500は、上記のXkをPE130a、130cにより算出し、YkをPE130b、130dにより算出する。以下にその手順を示す。
ステップ1:PE130a、130cが乗算xk×ckを行う。これと平行して、PE130b、130dが乗算xk×skを行う。
ステップ2:PE130a、130cが積差演算(乗算yk×skを行い、その結果をステップ1の結果から引く)を行う。これと平行してPE130b、130dが積和演算(乗算yk×ckを行い、その結果をステップ1の結果に足す)を行う。
図20(c)は、ステップ1の乗算命令後のレジスタファイル140a〜140dの内容を示す。
乗算命令の命令データは、図2(d)のデータ構造を有し、オペコードd1として「MUL」、オペランドd2として「r2(0),r0(0),r1(0)」、オペランドd3として「r2(0),r0(1),r1(0)」がセットされる。
PE130a、130cは、それぞれ、オペコードd1とオペランドd2とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12aを出力する。
これにより、レジスタファイル140a、140cのレジスタr2には、xk×ckの結果が格納され、レジスタファイル140b、140dのレジスタr2には、xk×skの結果が格納される。
積差・積和命令の命令データは、図2(b)のデータ構造を有し、オペコードb1として「MSU」、オペランドb2として「r2(0),r0(1),r1(1)」がセットされる。また、オペコードb3として「MAC」、オペランドb4として「r2(0),r0(0),r1(1)」がセットされる。
PE130a、130cは、それぞれ、オペコードb1とオペランドb2とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12aを出力する。
これにより、レジスタファイル140a、140cのレジスタr2には、(xk×ck−yk×sk)の結果であるXkが格納され、レジスタファイル140b、140dのレジスタr2には、(xk×sk+yk×ck)の結果であるYkが格納される。
図21(a)は、乗算命令の命令データである。
上述のとおり、乗算命令の命令データは、図2(d)のデータ構造を有し、オペコードd1として「MUL」、オペランドd2として「r2(0),r0(0),r1(0)」、オペランドd3として「r2(0),r0(1),r1(0)」がセットされる。
上述のとおり、積差・積和命令の命令データは、図2(b)のデータ構造を有し、オペコードb1として「MSU」、オペランドb2として「r2(0),r0(1),r1(1)」がセットされる。また、オペコードb3として「MAC」、オペランドb4として「r2(0),r0(0),r1(1)」がセットされる。
これにより、並列実行プロセッサ500は、複素数データの乗算を、その実数データと虚数データとを並び替えずに実行することができる。
なお、切替部560a、560bは、各PEにより制御されているが、これに限らない。例えば、以下のような例が考えられる。
なお、全ての実施の形態において、並列実行プロセッサは、PE130a〜PE130dの4個のPEを備えているが、これ以外の数のPEを備えてもよい。
また、各グループのPEの数を同数とする必要はない。例えば、第1グループに1個の要素プロセッサ、第2グループに3個の要素プロセッサが配属されてもよい。
図22は、命令データのデータ構造を示す図である。
図22に示す命令データは、フォーマットフィールドがなく、その分のビット数をオペコードやオペランドに分配している。
命令デコード部は、解読部622a、622b、622c、622dと、制御信号出力部121a、121bと制御レジスタ623を備える。
解読部622aは、図22(a)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に14ビットをオペコード、18ビットをオペランドとして解読し、1つの制御信号を生成する。
解読部622bは、図22(b)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に7ビットをオペコード、9ビットをオペランド、7ビットをオペコード、9ビットをオペランドとして解読し、2つの制御信号を生成する。
ここで、オペコードb1とオペランドb2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードb3とオペランドb4とから生成された制御信号は、制御信号出力部121bに送られる。
ここで、オペコードc1とオペランドc3とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードc2とオペランドc3とから生成された制御信号は、制御信号出力部121bに送られる。
ここで、オペコードd1とオペランドd2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードd1とオペランドd3とから生成された制御信号は、制御信号出力部121bに送られる。
制御信号出力部121a、121bは、入力端子a、b、c、dに入力された制御信号のいずれかを、制御レジスタ623の配置形式の2ビットに基づいて選択的に出力する。
以上のように、命令データがフォーマットフィールドを含まなければ、その分のビット数がオペコードやオペランドに分配される。これにより、制御レジスタ型は、フォーマットフィールド型に比べて、命令データが指定できる命令の種類や、レジスタの本数を増加させることができる。
また、フォーマットフィールド型と制御レジスタ型とを併用してもよい。
2 メモリ
100 並列実行プロセッサ
110 命令フェッチ部
120 命令デコード部
121a、121b 制御信号出力部
122a、122b、122c、122d 解読部
130a、130b、130c、130d PE
140a、140b、140c、140d レジスタファイル
250、350 配属部
560a、560b 切替部
Claims (8)
- 並列実行プロセッサであって、
複数の要素プロセッサと、
1以上の命令を含む所定長の命令列を取得するとともに、前記命令列に含まれる命令数を、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報として取得する取得手段と、
前記取得手段により取得された命令列を解読する解読手段と、
前記複数の要素プロセッサから、前記取得手段により取得されたグループ情報により特定される数のグループを構成するグループ構成手段と、
前記解読手段により解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てて、全ての要素プロセッサに、各要素プロセッサが属するグループに割り当てられた命令を、並列に実行させる実行制御手段と
を備えることを特徴とする並列実行プロセッサ。 - 前記グループ情報は、1グループか2グループかのいずれかを特定し、
前記グループ構成手段は、
1グループが特定される場合に、前記複数の要素プロセッサの全体から1つのグループを構成し、2グループが特定される場合に、前記複数の要素プロセッサを半分ずつ分けて2つのグループを構成すること
を特徴とする請求項1に記載の並列実行プロセッサ。 - 前記命令は、1つのオペコードと1つのオペランドとからなり、
前記並列実行プロセッサは、さらに、
フォーマットフィールドとデータフィールドとを有し、前記フォーマットフィールドには、前記データフィールドに配置される1以上のオペコード及び1以上のオペランドの配置形式が記述され、前記データフィールドには、前記1以上のオペコード及び1以上のオペランドが前記配置形式により規定される配置順で配置されている、所定長の命令列をフェッチするフェッチ手段を備え、
前記取得手段は、
前記配置形式により特定される命令数を前記グループ情報として取得し、
前記解読手段は、
前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、
前記実行制御手段は、
前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
を特徴とする請求項1に記載の並列実行プロセッサ。 - 前記命令列は、
第1のオペコードと、第2のオペコードと、第1のオペランドとを含み、
前記第1のオペコードと前記第1のオペランドの組み合わせで第1の命令を構成し、
前記第2のオペコードと前記第1のオペランドの組合せで第2の命令を構成すること
を特徴とする請求項3に記載の並列実行プロセッサ。 - 前記命令列は、
第1のオペコードと、第1のオペランドと、第2のオペランドとを含み、
前記第1のオペコードと前記第1のオペランドの組み合わせで第1の命令を構成し、
前記第1のオペコードと前記第2のオペランドの組合せで第2の命令を構成すること
を特徴とする請求項3に記載の並列実行プロセッサ。 - 前記命令は、1つのオペコードと1つのオペランドとからなり、
前記並列実行プロセッサは、さらに、
1以上のオペコード及び1以上のオペランドが所定の配置形式により規定される配置順で配置されている所定長の命令列をフェッチするフェッチ手段と、
所定の配置形式を保持している保持手段とを備え、
前記取得手段は、
前記保持手段により保持されている配置形式により特定される命令数を前記グループ情報として取得し、
前記解読手段は、
前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、
前記実行制御手段は、
前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
を特徴とする請求項1に記載の並列実行プロセッサ。 - 前記取得手段は、
前記グループ情報が、前記複数の要素プロセッサを2つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、
前記実行制御手段は、
前記特定のグループに配属されている要素プロセッサに動作停止を指示すること を特徴とする請求項1に記載の並列実行プロセッサ。 - 複数の要素プロセッサに対して命令を割り当てる命令割当方法であって、
1以上の命令を含む所定長の命令列を取得するとともに、前記命令列に含まれる命令数を、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報として取得する取得ステップと、
前記取得ステップにより取得された命令列を解読する解読ステップと、
前記複数の要素プロセッサから、前記取得ステップにより取得されたグループ情報により特定される数のグループを構成するグループ構成ステップと、
前記解読ステップにより解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てる実行制御ステップと
を含むことを特徴とする命令割当方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003354369A JP4184224B2 (ja) | 2002-10-16 | 2003-10-14 | 並列実行プロセッサ、命令割当方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002302281 | 2002-10-16 | ||
JP2002323938 | 2002-11-07 | ||
JP2003354369A JP4184224B2 (ja) | 2002-10-16 | 2003-10-14 | 並列実行プロセッサ、命令割当方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004171530A JP2004171530A (ja) | 2004-06-17 |
JP4184224B2 true JP4184224B2 (ja) | 2008-11-19 |
Family
ID=32718736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003354369A Expired - Lifetime JP4184224B2 (ja) | 2002-10-16 | 2003-10-14 | 並列実行プロセッサ、命令割当方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4184224B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2437836B (en) * | 2005-02-25 | 2009-01-14 | Clearspeed Technology Plc | Microprocessor architectures |
US7853775B2 (en) | 2006-08-23 | 2010-12-14 | Nec Corporation | Processing elements grouped in MIMD sets each operating in SIMD mode by controlling memory portion as instruction cache and GPR portion as tag |
JPWO2010067522A1 (ja) * | 2008-12-11 | 2012-05-17 | 日本電気株式会社 | 演算ユニット、プロセッサ及び並列演算方法 |
WO2010122746A1 (ja) * | 2009-04-22 | 2010-10-28 | パナソニック株式会社 | 情報処理装置 |
JP2011086061A (ja) * | 2009-10-14 | 2011-04-28 | Mitsubishi Electric Corp | 並列信号処理装置 |
JP5495707B2 (ja) * | 2009-10-16 | 2014-05-21 | 三菱電機株式会社 | 並列信号処理装置 |
-
2003
- 2003-10-14 JP JP2003354369A patent/JP4184224B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2004171530A (ja) | 2004-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2835103B2 (ja) | 命令指定方法及び命令実行方式 | |
US20210255869A1 (en) | Method for performing random read access to a block of data using parallel lut read instruction in vector processors | |
JP3559046B2 (ja) | データ処理マネージメントシステム | |
US6986025B2 (en) | Conditional execution per lane | |
US7313645B2 (en) | Processor to reduce data rearrangement instructions for matrices in multiple memory banks | |
JP2005227942A (ja) | プロセッサ及びコンパイラ | |
US7017032B2 (en) | Setting execution conditions | |
GB2474901A (en) | Multiply-accumulate instruction which adds or subtracts based on a predicate value | |
KR20050027923A (ko) | 메모리 인터리브 시스템 | |
KR20060060689A (ko) | 병렬 처리 어레이 및 데이터 처리 방법 | |
US7395408B2 (en) | Parallel execution processor and instruction assigning making use of group number in processing elements | |
JP4184224B2 (ja) | 並列実行プロセッサ、命令割当方法 | |
EP0035334B1 (en) | Data processing system with two level microprogramming | |
EP1267255A2 (en) | Conditional branch execution in a processor with multiple data paths | |
JP3659252B2 (ja) | ベクトルデータのアドレス参照方法およびベクトルプロセッサ | |
KR20070114690A (ko) | 프로세서 | |
JP2004062821A (ja) | 情報処理装置 | |
JP2006302132A (ja) | 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路 | |
JPH0648461B2 (ja) | マイクロプログラムの転送レジスタ指定方式 | |
JP5327432B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP6259361B2 (ja) | プログラマブルデバイスおよびその制御方法 | |
JP2006134347A (ja) | マイクロコンピュータ | |
US11726789B1 (en) | Selectable register file blocks for hardware threads of a multithreaded processor | |
JP5673322B2 (ja) | ベクトル処理装置、システムおよびベクトル処理装置の動作方法 | |
JP2012093893A (ja) | リコンフィグ可能なlsi |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060620 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070817 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071017 |
|
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: 20080812 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080903 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110912 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4184224 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120912 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130912 Year of fee payment: 5 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S131 | Request for trust registration of transfer of right |
Free format text: JAPANESE INTERMEDIATE CODE: R313135 |
|
SZ02 | Written request for trust registration |
Free format text: JAPANESE INTERMEDIATE CODE: R313Z02 |
|
S131 | Request for trust registration of transfer of right |
Free format text: JAPANESE INTERMEDIATE CODE: R313135 |
|
SZ02 | Written request for trust registration |
Free format text: JAPANESE INTERMEDIATE CODE: R313Z02 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S131 | Request for trust registration of transfer of right |
Free format text: JAPANESE INTERMEDIATE CODE: R313135 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |