JP2004171530A - 並列実行プロセッサ、命令割当方法 - Google Patents

並列実行プロセッサ、命令割当方法 Download PDF

Info

Publication number
JP2004171530A
JP2004171530A JP2003354369A JP2003354369A JP2004171530A JP 2004171530 A JP2004171530 A JP 2004171530A JP 2003354369 A JP2003354369 A JP 2003354369A JP 2003354369 A JP2003354369 A JP 2003354369A JP 2004171530 A JP2004171530 A JP 2004171530A
Authority
JP
Japan
Prior art keywords
instruction
data
group
register file
parallel execution
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.)
Granted
Application number
JP2003354369A
Other languages
English (en)
Other versions
JP4184224B2 (ja
Inventor
Takeshi Tanaka
健 田中
Hideshi Nishida
英志 西田
Kozo Kimura
浩三 木村
Tokuzo Kiyohara
督三 清原
Satoshi Takashima
敏 高島
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003354369A priority Critical patent/JP4184224B2/ja
Publication of JP2004171530A publication Critical patent/JP2004171530A/ja
Application granted granted Critical
Publication of JP4184224B2 publication Critical patent/JP4184224B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

【課題】 単一命令だけでなく、異なる命令を並列に実行可能とすることにより、並列実行プロセッサの利用効率の向上を図る。
【解決手段】 並列実行プロセッサ100は、命令データをフェッチする。ここで、命令データに1つの命令が含まれていれば、命令デコード部120は、制御信号出力部121a、121bから単一命令を出力する。また、命令データに2つの命令が含まれていれば、命令デコード部120は、制御信号出力部121aから一方の命令を出力すると共に121bから他方の命令を出力する。
【選択図】 図1

Description

本発明は、並列実行プロセッサに関し、特に、並列実行プロセッサの利用効率の向上を図る技術に関する。
画像や音声を扱うマルチメディアデータ処理では、例えば、画像全体にフィルタをかけて色調や画質を変化させるような、膨大な数のデータに単一の演算を施す作業が必要になる。このような作業の時間短縮を図るプロセッサとして、従来からSIMD(Single Instruction Multiple Data)型プロセッサが利用されている(例えば、特許文献1参照。)。
SIMD型プロセッサとは、内部に複数の要素プロセッサを備え、各要素プロセッサに単一の命令を並列に実行させるプロセッサである。通常、SIMD型プロセッサは、CPU(Central Processing Unit)のコプロセッサとしてコンピュータに搭載されている。そして、CPUからの動作指示があれば、1つの演算命令と複数のデータとをメモリからフェッチし、各要素プロセッサに単一の演算命令を並列に実行させる。例えば、SIMD型プロセッサが128個の要素プロセッサを備えていれば、単一の演算命令が128並列に実行される。これにより、マルチメディアデータ処理の時間短縮を図ることができる。
特開2000−231552号公報
しかしながら、SIMD型プロセッサは、膨大な数のデータに単一の演算を施す作業には効力を発揮するが、それ以外の作業には不向きである。そのため、CPUは、マルチメディアデータ処理にのみSIMD型プロセッサを利用し、それ以外の処理はSIMD型プロセッサの動作を停止させる。これでは、コンピュータ全体としてのハードウェア資源の利用効率が悪い。
また、SIMD型プロセッサは、メモリから複数のデータをいっせいにフェッチする。したがって、たとえマルチメディアデータ処理であっても、メモリ内に異なる演算の対象となるデータが混在している場合には、CPUは、その並び替えを行った後に、SIMD型プロセッサを動作させなければならない。このデータの並び替えは、データの数が膨大であるほど時間がかかり、マルチメディアデータ処理の時間短縮の妨げとなる。
そこで、本発明は、コンピュータ全体としてのハードウェア資源の利用効率を向上する技術を提供することを第1の目的とする。
さらに、本発明は、メモリ内に異なる演算の対象となるデータが混在している場合であっても、マルチメディアデータ処理の時間短縮を図る技術を提供することを第2の目的とする。
上記目的を達成するために、本発明に係る並列実行プロセッサは、複数の要素プロセッサと、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得手段と、前記取得手段により取得された命令列を解読する解読手段と、前記複数の要素プロセッサから、前記取得手段により取得されたグループ情報により特定される数のグループを構成するグループ構成手段と、前記解読手段により解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てて、全ての要素プロセッサに、各要素プロセッサが属するグループに割り当てられた命令を、並列に実行させる実行制御手段とを備えることを特徴とする。
上記構成によれば、並列実行プロセッサは、複数の要素プロセッサから1又は複数のグループを構成し、1命令1グループ対応で命令をグループに割り当てて並列に実行させることができる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成し、グループ毎に異なる命令を並列に実行させることができる。
このように、単一命令だけでなく複数の異なる命令を並列に実行可能とすることにより、並列実行プロセッサの適用範囲が広がり、利用効率の向上を図ることができる。
また、前記命令列には、前記グループ情報が特定するグループの数と同数の命令が含まれていることとしてもよい。
上記構成によれば、並列実行プロセッサは、解読した命令を余りなく1命令1グループ対応でグループに割り当てることができる。
また、前記グループ情報は、1グループか2グループかのいずれかを特定し、前記グループ構成手段は、1グループが特定される場合に、前記複数の要素プロセッサの全体から1つのグループを構成し、2グループが特定される場合に、前記複数の要素プロセッサを半分ずつ分けて2つのグループを構成することとしてもよい。
上記構成によれば、並列実行プロセッサは、全ての要素プロセッサを1つのグループとするか、半数ずつの2つのグループとするかを選択することができる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから2つのグループを構成し、グループ毎に異なる命令を並列に実行させることができる。例えば、要素プロセッサの数が128であれば、並列実行プロセッサは、単一命令を128並列に実行するか、2つの命令をそれぞれ64並列に実行するかを選択することができる。このように、2つのグループを構成する場合でも、各グループは、まだ64個という多数の要素プロセッサを抱えている。したがって、各グループはSIMD型プロセッサの特徴を損なわずに、それぞれがデータ処理の時間短縮を図ることができる。
また、前記並列実行プロセッサは、さらに、前記複数の要素プロセッサのそれぞれに1つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に交互に格納されているレジスタを備え、前記グループ構成手段は、2グループが特定される場合に、第1の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第2の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとを異なる2つのグループとし、前記複数の要素プロセッサは、各要素プロセッサに対応付けられたレジスタファイルから対象データを入手することとしてもよい。
上記構成によれば、並列実行プロセッサは、要素プロセッサから2つのグループを構成する場合に、レジスタファイルに格納されたデータの配列順に従ってグループを構成する。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にレジスタにロードして、各データに対応する命令を並列に実行することができる。
また、前記レジスタは、前記レジスタファイルの配列順に2個ずつを1組とするレジスタファイル組を形成しており、前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データを入手するべきかを示す選択情報を含み、前記複数の要素プロセッサは、前記選択情報により示されるレジスタファイルから対象データを入手することとしてもよい。
上記構成によれば、並列実行プロセッサは、各要素プロセッサの対象データの入手先を、レジスタファイル組の中から選択させることができる。
これにより、並列実行プロセッサは、1命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
また、前記実行制御手段は、複数の配属方法により前記複数の要素プロセッサのそれぞれを2つのグループに配属し、配属方法ごとに、各グループに配属される要素プロセッサの組み合わせを保持する保持手段と、前記保持手段に保持されている配属方法のうち、いずれの配属方法を使用するかを示す配属情報を取得する配属情報入手手段と、前記配属情報入手手段により入手された配属情報に従って、前記保持手段に保持されている組み合わせを選択する選択手段とを備えることとしてもよい。
上記構成によれば、並列実行プロセッサは、要素プロセッサから2つのグループを構成する場合に、要素プロセッサを各グループに配属する配属方法を動的に変更することができる。なお、この配属方法は、並列実行プロセッサが予め複数保持しており、その中から1つが選択される。
このように、配属方法が固定的ではなく動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
また、前記実行制御手段は、前記複数の要素プロセッサのそれぞれが2つのグループのうちのいずれに配属されるかを示す配属情報を入手する配属情報入手手段と、前記配属情報入手手段により入手された配属情報に従って、前記複数の要素プロセッサのそれぞれを2つのグループのいずれかに配属させる配属手段とを備えることとしてもよい。
上記構成によれば、並列実行プロセッサは、要素プロセッサから2つのグループを構成する場合に、要素プロセッサ毎に配属先となるグループを動的に変更することができる。
このように、各要素プロセッサの配属先となるグループを動的に変更可能とすることにより、並列実行プロセッサの適用範囲が広がり、さらなる利用効率の向上を図ることができる。
また、前記命令は、1つのオペコードと1つのオペランドとからなり、前記並列実行プロセッサは、さらに、フォーマットフィールドとデータフィールドとを有し、前記フォーマットフィールドには、前記データフィールドに配置される1以上のオペコード及び1以上のオペランドの配置形式が記述され、前記データフィールドには、前記1以上のオペコード及び1以上のオペランドが前記配置形式により規定される配置順で配置されている、所定長のデータをフェッチするフェッチ手段を備え、前記取得手段は、前記配置形式により特定される命令数を前記グループ情報として取得し、前記解読手段は、前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、前記実行制御手段は、前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てることとしてもよい。
上記構成によれば、所定長のデータは、1又は複数の命令を含むと共に、複数の要素プロセッサからグループを構成する数、及び、各グループへの命令の割り当て方法を規定している。並列実行プロセッサは、所定長のデータに従って、各命令を各グループの要素プロセッサに並列に実行させることができる。
このように、並列実行プロセッサは、グループ情報と命令列とを同時に取得するので、グループ構成の変更が頻繁に行われる場合であっても、データ処理が遅れることがない。
また、前記命令は、1つのオペコードと1つのオペランドとからなり、前記並列実行プロセッサは、さらに、1以上のオペコード及び1以上のオペランドが所定の配置形式により規定される配置順で配置されている所定長のデータをフェッチするフェッチ手段と、所定の配置形式を保持している保持手段とを備え、前記取得手段は、前記保持手段により保持されている配置形式により特定される命令数を前記グループ情報として取得し、前記解読手段は、前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、前記実行制御手段は、前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てることとしてもよい。
上記構成によれば、所定長のデータは、1又は複数の命令を含むと共に、各グループへの命令の割り当て方法を規定している。なお、所定長のデータの解読に必要な配置形式は、保持手段に保持されている。並列実行プロセッサは、配置形式により所定長のデータを解読することにより、各命令を各グループの要素プロセッサに並列に実行させることができる。
このように、並列実行プロセッサは、配置形式を保持しているので、所定長のデータに、配置形式を記述するためのフィールドが不要であり、その分のビット数をオペコードやオペランドに割り当てることができる。
また、前記取得手段は、前記グループ情報が、前記複数の要素プロセッサを2つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、前記実行制御手段は、前記特定のグループに配属されている要素プロセッサに動作停止を指示することとしてもよい。
上記構成によれば、並列実行プロセッサは、一部の要素プロセッサの動作を停止させることができる。
これにより、並列実行プロセッサは、動作の不要な要素プロセッサを停止させ、消費電力の削減を図ることができる。
上記目的を達成するために、本発明に係る並列実行プロセッサは、複数の要素プロセッサと、前記複数の要素プロセッサのそれぞれに1つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に一定の規則に従って格納されてなるレジスタと、第1の命令と第2の命令とを含む命令列を取得する取得手段と、前記取得手段により取得された命令列から第1の命令と第2の命令を解読する解読手段と、第1の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第2の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとに、前記解読手段により解読された第1の命令と第2の命令とを、それぞれ割り当てて、各要素プロセッサに並列に実行させる実行制御手段とを備える。
上記構成によれば、並列実行プロセッサは、レジスタファイルに格納された第1及び第2の命令の対象データの配列順に従って、各要素プロセッサに第1の命令と第2の命令とを並列に実行させる。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
また、前記レジスタは、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に交互に格納されていることとしてもよい。
上記構成によれば、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが交互に混在している場合でも、その並び替えをせずに一斉にロードして、各データに対応する命令を並列に実行することができる。
また、前記レジスタは、前記配列順に2個ずつを1組とするレジスタファイル組を形成しており、前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データにアクセスするべきかを示す選択情報を含み、前記複数の要素プロセッサは、前記選択情報により示されるレジスタファイルから対象データを入手することとしてもよい。
上記構成によれば、並列実行プロセッサは、各要素プロセッサの対象データの入手先を、レジスタファイル組の中から選択させることができる。
これにより、並列実行プロセッサは、1命令が指定できるレジスタファイルの種類を増加させることができ、ひいては、並列に実行可能な命令の種類を増加させることができる。
本発明に係る命令割当方法は、複数の要素プロセッサに対して命令を割り当てる命令割当方法であって、前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得ステップと、前記取得ステップにより取得された命令列を解読する解読ステップと、前記複数の要素プロセッサから、前記取得ステップにより取得されたグループ情報により特定される数のグループを構成するグループ構成ステップと、前記解読ステップにより解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てる実行制御ステップとを含む。
上記構成によれば、命令割当方法は、複数の要素プロセッサからグループを構成し、各命令を各グループに割り当てる。
これにより、並列実行プロセッサは、全ての要素プロセッサに単一命令を実行させるだけでなく、要素プロセッサから複数のグループを構成して、グループ毎に異なる複数の命令を並列に実行させることができる。
このように、単一命令だけでなく複数の異なる命令を並列に実行可能とすることにより、並列実行プロセッサの適用範囲が広がり、利用効率の向上を図ることができる。
本発明に係る命令割当方法は、複数の要素プロセッサに、第1の命令と第2の命令とを割り当てる命令割当方法であって、第1の命令の対象データと第2の命令の対象データとが所定の規則で配列され格納されているメモリから、前記複数の要素プロセッサと同数の対象データを読み込み、前記複数の要素プロセッサのそれぞれに対応付けられたレジスタファイルに、その配列を並び替えずに1つずつ格納する格納ステップと、第1の命令と第2の命令とを含む命令列を取得する取得ステップと、前記取得ステップにより取得された命令列から第1の命令と第2の命令を抽出して解読する解読ステップと、前記格納ステップにより第1の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサと、前記第2の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサとに、前記解読ステップにより解読された第1の命令と第2の命令とを、それぞれ割り当てる割当ステップとを含む。
上記構成によれば、命令割当方法は、一定の規則により配列された第1及び第2の命令の対象データを、並び替えずにメモリからレジスタファイルに格納し、その規則に従って、各要素プロセッサに第1の命令と第2の命令とを割り当てる。
これにより、並列実行プロセッサは、メモリ内に第1の命令の対象となるデータと第2の命令の対象となるデータとが一定の規則により混在している場合でも、その並び替えをせずに一斉にデータをロードし、各データに対応する命令を並列に実行することができる。
(実施の形態1)
<概要>
本発明の実施の形態1に係る並列実行プロセッサは、まず、命令データをフェッチする。ここで、命令データに1つの命令のみが含まれている場合には、並列実行プロセッサは、単一命令を全ての要素プロセッサに割り当てる。また、命令データに2つの命令が含まれている場合には、並列実行プロセッサは、要素プロセッサから2つのグループを構成し、各グループに命令を1つずつ割り当てる。
このように、単一命令だけでなく2つの異なる命令を並列に実行可能とすることにより、並列実行プロセッサの利用効率の向上を図ることができる。
以下に、実施の形態1に係る並列実行プロセッサについて詳細に説明する。
<構成>
図1は、本発明の実施の形態1に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図1に示すコンピュータは、CPU1、メモリ2及び並列実行プロセッサ100から構成される。
CPU1は、メモリ2、並列実行プロセッサ100の動作を制御する。
メモリ2は、演算対象となるデータと命令データとを格納している。
並列実行プロセッサ100は、CPU1からの動作指示を受けて動作するコプロセッサであり、命令フェッチ部110、命令デコード部120、PE130a、130b、130c、130d、レジスタファイル140a、140b、140c、140dを備える。一般的にPEは、64、128などと2のべき乗の個数だけ備えられる。本明細書では、簡単のためPEが4個の場合で説明する。
命令フェッチ部110は、CPU1からの動作指示を受けて、メモリ2から32ビットの命令データをフェッチする。
図2は、命令フェッチ部110がフェッチする命令データのデータ構造を示す図である。
命令データは、機械語で記述された32ビット長のデータであり、先頭2ビットのフォーマットフィールドと、それに続く30ビットのデータフィールドとを持つ。
フォーマットフィールドには、データフィールドに配置される1又は2の命令の配置形式が記述されている。また、データフィールドには、1又は2の命令に対応する1以上のオペコード及び1以上のオペランドが配置されている。このオペコード及びオペランドの配置順や、これらへのビット数の配分は、フォーマットフィールドの配置形式により規定されている。
以下に、配置形式別の命令データのデータ構造を示す。
図2(a)は、配置形式が「0b00」の場合の命令データのデータ構造を示す図である。
ここで、「0bxx」との表記は、「xx」の値が2進数であることを示す。
当該命令データのフォーマットフィールドには、「0b00」がセットされ、データフィールドには、12ビットの1つのオペコードと、18ビットの1つのオペランドがセットされる。これは、オペコードa1とオペランドa2とからなる1つの命令が命令データに含まれていることを示す。
図2(b)は、配置形式が「0b01」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「0b01」がセットされ、データフィールドには、6ビットの2つのオペコードと9ビットの2つのオペランドがセットされる。これは、オペコードb1とオペランドb2とからなる命令と、オペコードb3とオペランドb4とからなる命令との2つの命令が命令データに含まれていることを示す。
図2(c)は、配置形式が「0b10」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「0b10」がセットされ、データフィールドには、6ビットの2つのオペコードと18ビットの1つのオペランドがセットされる。これは、オペコードc1とオペランドc3とからなる命令と、オペコードc2とオペランドc3とからなる命令との2つの命令が命令データに含まれていることを示す。
図2(d)は、配置形式が「0b11」の場合の命令データのデータ構造を示す図である。
当該命令データのフォーマットフィールドには、「0b11」がセットされ、データフィールドには、12ビットの1つのオペコードと9ビットの2つのオペランドがセットされる。これは、オペコードd1とオペランドd2とからなる命令と、オペコードd1と オペランドd3とからなる命令との2つの命令が命令データに含まれていることを示す。
上記のデータ構造によれば、並列実行プロセッサ100に1つの命令を並列に実行させる場合には、命令データは図2(a)のデータ構造となる。また、2種類の命令を並列に実行させる場合には、命令データは図2(b)、図2(c)、図2(d)のうちのいずれかのデータ構造となる。
なお、上記の命令データは、オペコード及びオペランドに配分されるビット数によって、指定できる命令の数とレジスタの数とが異なる。レジスタr0とレジスタr1の加算結果をレジスタr2に格納する加算命令「ADD r2,r0,r1」を例として以下に示す。
加算命令では、オペランドは1つのディスティネーションレジスタと2つのソースレジスタとを指定しなければならない。このとき、図2(a)に示されるデータ構造では、オペランド部が18ビットなので、各レジスタにはそれぞれ6ビットが配分される。即ち、オペランドは、ディスティネーションレジスタ又はソースレジスタのそれぞれに0〜63番の合計64本のレジスタを指定することができる。一方、図2(d)に示されるデータ構造では、オペランド部が9ビットなので、各レジスタにはそれぞれ3ビットが配分される。即ち、オペランドは、ディスティネーションレジスタ又はソースレジスタのそれぞれに0〜7番の合計8本のレジスタを指定することができる。
命令デコード部120は、命令フェッチ部110がフェッチした命令データから制御信号を生成して、各PEに制御信号を出力する。ここで、制御信号とは、PEに動作を指示する信号であり、具体的には、PE内部の演算器、データパスを制御する信号である。
また、命令デコード部120は、内部に2つの制御信号出力部121a、121bを備えている。命令データが、図2(a)に示されるデータ構造であれば、制御信号出力部121a、121bは、同一の制御信号を出力する。一方、命令データが、図2(b)、図2(c)、図2(d)に示されるデータ構造であれば、制御信号出力部121a、121bは、互いに異なる制御信号を出力する。以下に、命令デコード部の内部構造を説明する。
図3は、命令デコード部120の内部構造を示す図である。
命令デコード部120は、解読部122a、122b、122c、122dと、制御信号出力部121a、121bとを備える。
命令デコード部120は、命令フェッチ部110がフェッチした命令データのうち、フォーマットフィールドの2ビットを制御信号出力部121a、121bに与え、データフィールドの30ビットを解読部122a〜122dの全てに与える。
解読部122aは、図2(a)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に12ビットをオペコード、18ビットをオペランドとして解読し、1つの制御信号を生成する。
生成された制御信号は、制御信号出力部121a、121bに送られる。
解読部122bは、図2(b)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に6ビットをオペコード、9ビットをオペランド、6ビットをオペコード、9ビットをオペランドとして解読し、2つの制御信号を生成する。
オペコードb1とオペランドb2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードb3とオペランドb4とから生成された制御信号は、制御信号出力部121bに送られる。
解読部122cは、図2(c)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に6ビットをオペコード、6ビットをオペコード、18ビットをオペランドとして解読し、2つの制御信号を生成する。
オペコードc1とオペランドc3とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードc2とオペランドc3とから生成された制御信号は、制御信号出力部121bに送られる。
解読部122dは、図2(d)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に12ビットをオペコード、9ビットをオペランド、9ビットをオペランドとして解読し、2つの制御信号を生成する。
オペコードd1とオペランドd2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードd1とオペランドd3とから生成された制御信号は、制御信号出力部121bに送られる。
制御信号出力部121a、121bは、入力端子a、b、c、dに入力された制御信号のいずれかを、フォーマットフィールドの2ビットに基づいて選択的に出力する。
例えば、フォーマットフィールドが「0b00」の場合、入力端子aに入力された制御信号が出力され、フォーマットフィールドが「0b01」の場合、入力端子bに入力された制御信号が出力される。
これにより、命令デコード部120は、命令データに1つの命令が含まれている場合、制御信号出力部121a、121bから同一の制御信号を出力し、命令データに2つの命令が含まれている場合、制御信号出力部121a、121bから異なる2つの制御信号を出力することができる。
PE130a、130b、130c、130dは、要素プロセッサであり、命令デコード部120からの制御信号に従って並列に命令を実行する。なお、図1に示すように、PE130a、130cは、制御信号出力部121aから制御信号を受ける。また、PE130b、130dは、制御信号出力部121bから制御信号を受ける。したがって、制御信号出力部121a、121bから同一の制御信号が出力される場合、PE130a〜130dは同一の命令を実行する。また、制御信号出力部121a、121bから異なる2つの制御信号が出力される場合、PE130a、130cの第1グループと、PE130b、130dの第2グループとが異なる命令を実行する。
命令実行の対象となるデータは、各PEに対応付けられているレジスタファイル140a〜140dから得られる。
レジスタファイル140a〜140dは、ロード命令によりメモリ2から読み込まれたデータを格納している。
メモリ2には、同一演算の対象となるデータがまとまって格納されている場合と、異なる2つの演算の対象となるデータが交互に格納されている場合とがある。上記のロード命令は、そのどちらの場合であっても、データの配列を並び替えずにレジスタファイル140a〜140dに格納する。並列実行プロセッサ100は、データがまとまって格納されている場合には、全てのPE130a〜130dに同一の演算命令を実行させることができる。また、データが交互に格納されている場合には、PE130a、130cの第1グループと、PE130b、130dの第2グループとに異なる演算命令を実行させることができる。
また、制御信号出力部121a及び121bから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Idle」指示であれば、「Idle」指示が割り当てられる2個のPEは動作を停止する。
<動作>
次に、上述のように構成された並列実行プロセッサ100の動作について説明する。
図4は、実施の形態1に係る並列実行プロセッサ100の動作の流れを示す図である。
ステップS101:命令フェッチ部110が命令データをフェッチする。
ステップS102:命令デコード部120は、命令フェッチ部110がフェッチした命令データから制御信号を生成する。この際に、命令デコード部120は、解読部122a〜122dにより並列に制御信号を生成する。解読部122aは、命令データを「0b00」の配置形式に基づいて解読し、制御信号を生成する。また、解読部122bは、命令データを「0b01」の配置形式に基づいて解読し、制御信号を生成する。解読部122cは、命令データを「0b10」の配置形式に基づいて解読し、制御信号を生成する。解読部122dは、命令データを「0b11」の配置形式に基づいて解読し、制御信号を生成する。
ステップS103:命令デコード部120は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部122a〜122dのうちの1つを選択する。
ステップS104:ステップS103において配置形式が「0b00」の場合、命令デコード部120は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS105:ステップS103において配置形式が「0b01」、「0b10」、又は「0b11」の場合、命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS106:ステップS105において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S105:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS107:ステップS105において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S105:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ100は、命令データをフェッチし、全てのPE130a〜PE130dに並列に命令を実行させる。ここで、命令データに1つの命令のみが含まれている場合には、並列実行プロセッサ100は、単一命令を全てのPEに割り当てる。また、命令データに2つの命令が含まれている場合には、並列実行プロセッサ100は、全てのPE130a〜PE130dから2つのグループを構成して、各グループに命令を1つずつ割り当てる。
このように、単一命令だけでなく2つの異なる命令を並列に実行可能とすることにより、並列実行プロセッサ100の利用効率の向上を図ることができる。
また、並列実行プロセッサ100は、2つの異なる命令を並列に実行する場合には、一方の命令をPE130a、130cが実行し、他方の命令をPE130b、130dが実行する仕様となっている。これにより、メモリ2内に、一方の命令の対象となるデータと、他方の命令の対象となるデータとが交互に配列されて格納されていたとしても、並列実行プロセッサ100は、その配列を並び替えずに一斉にメモリ2からレジスタファイル140a〜140dにロードして各データに適する命令を並列に実行することができる。メモリ2内に異なる命令の対象となるデータが交互に配列されている例としては、複素数データ(実数データと虚数データとが交互に配列される)や、オーディオデータ(ステレオ信号の左データと右データとが交互に配列される)などがある。
なお、本実施の形態で説明した命令データは、単なる一例であり、他のデータ構造としてもよい。例えば、命令データに2つのオペコードと1つのオペランドとが含まれる場合、図2(c)ではなく図2(e)のようにしてもよい。図2(e)は、オペランドに分配されるビット数を削減し、オペコードに分配されるビット数を増加させたものである。このようにすると、図2(c)に比べて、オペランドにより指定できるレジスタの本数が削減されるが、その代わり、オペコードにより指定できる命令の種類が増加する。
また、制御信号出力部121aから出力された制御信号はPE130aとPE130cへ、制御信号出力部121bから出力された制御信号はPE130bとPE130dへ入力されるが、演算対象となるデータの配列にあわせて他の構成としてもよい。例えば、制御信号出力部121aから出力された制御信号はPE130aとPE130bへ、制御信号出力部121bから出力された制御信号はPE130cとPE130dへ入力される構成としてもよい。
(実施の形態2)
<概要>
実施の形態1に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、各グループの構成方法が固定的である。本発明の実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、各グループの構成方法を予め定められた中から動的に選択することができる。
このように、グループの構成方法を動的に選択可能とすることにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
以下に、実施の形態2に係る並列実行プロセッサについて詳細に説明する。
<構成>
図5は、実施の形態2に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図5に示す並列実行プロセッサ200の構成は実施の形態1で説明した並列実行プロセッサ100に配属部250を加えたものである。並列実行プロセッサ100と同様の構成要素には同一の符号を付し、それらの説明を省略する。
配属部250は、予め定められた複数の配属方法のうち、CPU1により指定された配属方法により、PE130a〜PE130dを第1グループと第2グループとに配属させる。制御信号出力部121a、121bからの各制御信号は、それぞれ第1グループのPEと第2グループのPEとに送られる。
図6は、配属部250の内部構成を示す図である。
配属部250は、制御信号入力部251a、251b、組み合わせ保持部252、配属情報入手部253、配属制御部254を備える。また、配属制御部254は、制御信号出力部255a〜255dを備える。
制御信号入力部251aは、制御信号出力部121aと接続されている。また、制御信号入力部251bは、制御信号出力部121bと接続されている。
配属制御部254内部の制御信号出力部255a〜255dは、PE130a〜PE130dとそれぞれ接続されている。
組み合わせ保持部252は、ROMであり、制御信号入力部251a、251bと制御信号出力部255a〜255dとの接続の組み合わせを2組保持している。
図7は、組み合わせ保持部252が保持する2組の組み合わせを示す図である。
2組の組み合わせには、配属情報が「0b00」の組み合わせAと、配属情報が「0b01」の組み合わせBとがある。
組み合わせAは、制御信号入力部251aを制御信号出力部255a、255cに接続し、また、制御信号入力部251bを制御信号出力部255b、255dに接続する組み合わせである。
組み合わせBは、制御信号入力部251aを制御信号出力部255a、255bに接続し、また、制御信号入力部251bを制御信号出力部255c、255dに接続する組み合わせである。
配属情報入手部253は、組み合わせAと組み合わせBとのいずれを選択するかを示す配属情報「0b00」又は「0b01」をCPU1から入手する。
配属制御部254は、配属情報入手部253により入手された配属情報を受け取り、組み合わせを選択する。
上記構成により、配属情報が「0b00」の場合、配属部250は、制御信号入力部251aに入力された制御信号を制御信号出力部255a、255cから出力し、制御信号入力部251bに入力された制御信号を制御信号出力部255b、255dから出力することができる。
また、配属情報が「0b01」の場合、配属部250は、制御信号入力部251aに入力された制御信号を制御信号出力部255a、255bから出力し、制御信号入力部251bに入力された制御信号を制御信号出力部255c、255dから出力することができる。
これにより、並列実行プロセッサ200は、2つの異なる命令をPE130a〜PE130dに実行させる場合に、PE130a〜130dの配列順に交互に異なる命令を実行させるか、PE130a〜130dの配列順の前半と後半とで異なる命令を実行させるかを選択することができる。
また、制御信号出力部121a及び121bから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Idle」指示であれば、「Idle」指示が割り当てられる2個のPEは動作を停止する。
この際に、配属情報が「0b00」であれば、PE130a〜PE130dの配列順に交互にPEが動作を停止し、配属情報が「0b01」であれば、PE130a〜130dの配列の前半と後半とのいずれか一方のPEが動作を停止する。
<動作>
次に、上述のように構成された並列実行プロセッサ200の動作について説明する。
図8は、実施の形態2に係る並列実行プロセッサ200の動作の流れを示す図である。
ステップS201:命令フェッチ部110が命令データをフェッチする。
ステップS202:命令デコード部120は、命令フェッチ部110がフェッチした命令データから各配置形式「0b00」、「0b01」、「0b10」、「0b11」に基づいて制御信号を生成する。
ステップS203:命令デコード部120は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部122a〜122dのうちの1つを選択する。
ステップS204:ステップS203において配置形式が「0b00」の場合、命令デコード部120は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS205:ステップS203において配置形式が「0b01」、「0b10」、又は「0b11」の場合、配属部250は、CPU1から配属情報を入手する。
ステップS206:ステップS205において配属情報が「0b00」であれば、配属部250は、組み合わせAを選択する。
命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS207:組み合わせAによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS208:ステップS207において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S207:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS209:ステップS207において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S207:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
ステップS210:ステップS205において配属情報が「0b01」であれば、配属部250は、組み合わせBを選択する。
命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS211:組み合わせBによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS212:ステップS211において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S211:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS213:ステップS211において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S211:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ200は、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。
これにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
また、組み合わせ保持部252に保持されている配属先の組み合わせは、プログラマブルに書き換え可能としてもよい。
(実施の形態3)
<概要>
実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。これに対し、本発明の実施の形態3に係る並列実行プロセッサは、グループの構成方法を予め定められた中から選択するのではなく、PE毎にどちらのグループに配属させるかを自由に決定することができる。
このように、PE毎に配属先を決定することにより、きめ細かいグループ構成が可能となり、並列実行プロセッサの利用効率の向上をさらに図ることができる。
以下に、実施の形態3に係る並列実行プロセッサについて詳細に説明する。
<構成>
図9は、実施の形態3に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図9に示す並列実行プロセッサ300の構成は実施の形態2で説明した配属部250に代えて配属部350を設けたものである。並列実行プロセッサ200と同様の構成要素には同一の符号を付し、それらの説明を省略する。
配属部350は、PE130a〜PE130dのPE毎にいずれのグループに配属されるべきかを示す配属情報をCPU1から入手して、それに応じてPE130a〜PE130dを第1グループと第2グループとに配属させる。制御信号出力部121a、121bからの各制御信号は、それぞれ第1グループのPEと第2グループのPEとに送られる。
図10は、配属部350の内部構成を示す図である。
配属部350は、制御信号入力部351a、351b、配属情報入手部353、配属制御部354を備える。また、配属制御部354は、制御信号出力部355a〜355dを備える。
制御信号入力部351aは、制御信号出力部121aと接続されている。また、制御信号入力部351bは、制御信号出力部121bと接続されている。
配属制御部354内部の制御信号出力部355a〜355dは、PE130a〜PE130dとそれぞれ接続されている。
配属情報入手部353は、PE130a〜PE130dのPE毎にいずれのグループに配属されるべきかを示す配属情報をCPU1から入手する。
図11は、配属情報入手部353が入手する配属情報の例を示す図である。
配属情報は、4ビットの情報であり、第1ビットとPE130a、第2ビットとPE130b、第3ビットとPE130c、第4ビットとPE130dがそれぞれ対応している。また、ビット値「0b0」は、第1グループに配属されることを意味し、ビット値「0b1」は、第2グループに配属されることを意味する。
図11(a)は、PE130a、130cが第1グループに、PE130b、130dが第2グループに配属される場合の配属情報を示している。
図11(b)は、PE130a、130bが第1グループに、PE130c、130dが第2グループに配属される場合の配属情報を示している。
配属制御部354は、配属情報入手部353により入手された配属情報を受け取り、各PEのグループの配属先を決定する。
これにより、並列実行プロセッサ300は、2つの異なる命令をPE130a〜PE130dに実行させる場合に、配属情報に応じてPE130a〜PE130dからグループを構成してそれぞれのグループで異なる命令を実行させることができる。
また、制御信号出力部121a及び121bから出力される制御信号が異なる場合に、どちらかの制御信号が動作停止を示す「Idle」指示であれば、「Idle」指示が割り当てられる2個のPEは動作を停止する。
この際に、配属情報が「0b0101」であれば、動作を停止したPEが交互に配列されることになる。
<動作>
次に、上述のように構成された並列実行プロセッサ300の動作について説明する。
図12は、実施の形態3に係る並列実行プロセッサ300の動作の流れを示す図である。
ステップS301:命令フェッチ部110が命令データをフェッチする。
ステップS302:命令デコード部120は、命令フェッチ部110がフェッチした命令データから各配置形式「0b00」、「0b01」、「0b10」、「0b11」に基づいて制御信号を生成する。
ステップS303:命令デコード部120は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部122a〜122dのうちの1つを選択する。
ステップS304:ステップS303において配置形式が「0b00」の場合、命令デコード部120は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS305:ステップS303において配置形式が「0b01」、「0b10」、又は「0b11」の場合、配属部350は、CPU1から配属情報を入手し、配属情報に基づいてPE130a〜130dを第1グループと第2グループとに配属する。
命令デコード部120は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS306:第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS307:ステップS306において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S306:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS308:ステップS306において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S306:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ300は、グループの構成方法を予め定められた中から選択するのではなく、PE毎にどちらのグループに配属させるかを決定する。
このように、PE毎に配属先を決定することにより、きめ細かいグループ構成が可能となり、並列実行プロセッサの利用効率の向上をさらに図ることができる。
なお、実施の形態3では、配属情報を1つの制御信号出力部に対して1ビットを割り当てているが、これ以外の割り当て方でも構わない。
(実施の形態4)
<概要>
実施の形態2に係る並列実行プロセッサは、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を示す配属情報を、CPU1から入手している。本発明の実施の形態4に係る並列実行プロセッサは、配属情報を命令データ中から入手する。
以下に、実施の形態3に係る並列実行プロセッサについて詳細に説明する。
<構成>
図13は、実施の形態4に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図13に示す並列実行プロセッサ400の構成は実施の形態2の並列実行プロセッサ200の命令デコード部120に代えて命令デコード部420を設けたものである。並列実行プロセッサ200と同様の構成要素には同一の符号を付し、それらの説明を省略する。
命令デコード部420は、実施の形態2における命令デコード部120の機能に加えて、配属部250に配属情報を与える機能を有する。この配属情報は、命令フェッチ部110がフェッチする命令データに含まれている。以下に実施の形態4に係る命令データについて説明する。
図14は、実施の形態4に係る命令データのデータ構造を示す図である。
図14(a)は、配置形式が「0b00」の場合の命令データのデータ構造を示す図である。
当該命令データは、図2(a)の命令データとデータ構造が同一であり、配属情報を含まない。これは、全てのPEに単一の命令を実行させる場合には、PEの配属について考慮する必要がないからである。
図14(b)は、配置形式が「0b01」の場合の命令データのデータ構造を示す図である。
当該命令データは、2ビットの配属情報b5を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報b5に2ビットが割り当てられるので、オペランドb2、b4は、図2(b)に比べてそれぞれ1ビットずつ短い。
図14(c)は、配置形式が「0b10」の場合の命令データのデータ構造を示す図である。
当該命令データは、2ビットの配属情報c4を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報c4に2ビットが割り当てられるので、オペランドc3は、図2(c)に比べて2ビットだけ短い。
図14(d)は、配置形式が「0b11」の場合の命令データのデータ構造を示す図である。
当該命令データは、2ビットの配属情報d4を含む。配属情報としては、図7に示す「0b00」又は「0b01」のいずれかがセットされる。なお、配属情報d4に2ビットが割り当てられるので、オペランドd2、d3は、図2(d)に比べて1ビットずつ短い。
図15は、命令デコード部420の内部構造を示す図である。
命令デコード部420は、解読部422a、422b、422c、422d、制御信号出力部121a、121b、及び、配属情報出力部423を備える。
命令デコード部420が制御信号を出力する機能については、実施の形態2における命令デコード部120と同様なので、ここでは、配属部250に配属情報を与える機能のみを説明する。
解読部422b、422c、422dは、それぞれ図14(b)、図14(c)、図14(d)に示されるデータ構造に専用の解読部であり、データフィールドから配属情報を抽出して配属情報出力部423に送る。
配属情報出力部423は、入力端子a、b、cに入力された配属情報のいずれかを、フォーマットフィールドの2ビットに基づいて選択的に出力する。出力された配属情報は、配属部250に送られる。
これにより、命令デコード部420は、命令データに含まれる配属情報を抽出して配属部250に出力することができる。
<動作>
次に、上述のように構成された並列実行プロセッサ400の動作について説明する。
図16、及び図17は、実施の形態4に係る並列実行プロセッサ400の動作の流れを示す図である。
ステップS401:命令フェッチ部110が命令データをフェッチする。
ステップS402:命令デコード部420は、命令フェッチ部110がフェッチした命令データから各配置形式「0b00」、「0b01」、「0b10」、「0b11」に基づいて制御信号を生成する。
ステップS403:命令デコード部420は、命令データのフォーマットフィールドから配置形式を抽出し、その配置形式に従って、解読部422a〜422dのうちの1つを選択する。
ステップS404:ステップS403において配置形式が「0b00」の場合、命令デコード部420は、命令データから単一の命令を抽出し、解読して、1つの制御信号を生成する。生成された制御信号は、制御信号出力部121a、121bから並列に出力される。PE130a〜130dは、出力された制御信号に従って同一の演算を並列に実行する。
ステップS405:ステップS403において配置形式が「0b01」、「0b10」、又は「0b11」の場合、命令デコード部420は、命令データから配属情報を抽出する。
ステップS406:命令デコード部420は、配属情報が「0b00」であれば、配属部250に配属情報「0b00」を出力する。
ステップS407:命令デコード部420は、配属情報が「0b01」であれば、配属部250に配属情報「0b01」を出力する。
ステップS408:配属部250は、命令デコード部420から配属情報を入手する。
ステップS409:配属部250は、入手した配属情報が「0b00」であれば、組み合わせAを選択する。
命令デコード部420は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS410:組み合わせAによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS411:ステップS410において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S410:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS412:ステップS410において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S410:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
ステップS413:配属部250は、入手した配属情報が「0b01」であれば、組み合わせBを選択する。
命令デコード部420は、命令データから2つの命令を抽出し、解読して、2つの制御信号を生成する。生成された2つの制御信号は、それぞれ制御信号出力部121a、121bから別々に出力される。
ステップS414:組み合わせBによる第1グループのPEと、第2グループのPEとは、それぞれ制御信号を受けて、「Idle」指示であるか否か判定する。
ステップS415:ステップS414において第1グループのPEと、第2グループのPEとのいずれかが「Idle」指示を受けた場合(S414:Yes)、「Idle」指示を受けたグループのPEは、動作を停止し、「Idle」指示を受けていないグループのPEのみが1つの演算を並列に実行する。
ステップS416:ステップS414において第1グループのPEと、第2グループのPEとのいずれも「Idle」指示を受けていない場合、(S414:No)、第1グループのPEと第2グループのPEとは、それぞれ異なる演算を並列に実行する。
以上のように、並列実行プロセッサ400は、PE130a〜PE130dから2つのグループを構成する場合に、そのグループの構成方法を予め定められた中から動的に選択することができる。
このように、グループの構成方法を動的に選択可能とすることにより、並列実行プロセッサの利用効率の向上をさらに図ることができる。
なお、本実施の形態で説明した命令データは、単なる一例であり、他のデータ構造としてもよい。例えば、命令データに2つのオペコードと1つのオペランドとが含まれる場合、図14(c)ではなく図14(e)のようにしてもよい。図14(e)は、オペランドに分配されるビット数を削減し、オペコードに分配されるビット数を増加させたものである。このようにすると、図14(c)に比べて、オペランドにより指定できるレジスタの本数が削減されるが、その代わり、オペコードできる指定される命令の種類が増加する。
(実施の形態5)
<概要>
実施の形態1に係る並列実行プロセッサは、各PEがそれぞれに対応するレジスタファイルにアクセスする。本発明の実施の形態5に係る並列実行プロセッサは、レジスタファイルが2つで1つの組を形成しており、各PEは、各組内のどちらのレジスタファイルにもアクセス可能としている。
これにより、並列実行プロセッサ500は、複素数データの乗算を、その実数データと虚数データとを並び替えずに実行することができる。
以下に、実施の形態5に係る並列実行プロセッサについて詳細に説明する。
<構成>
図18は、実施の形態5に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。
図18に示す並列実行プロセッサ500の構成は実施の形態1で説明した並列実行プロセッサ100に切替部560a、560bを加えたものである。並列実行プロセッサ100と同様の構成要素には同一の符号を付し、それらの説明を省略する。
切替部560a、560bは、各PEのアクセス先となるレジスタファイルを切り替える。これにより、例えば、PE130aは、レジスタファイル140aだけでなく、レジスタファイル140bにもアクセスすることができる。また、PE130bは、レジスタファイル140bだけでなく、レジスタファイル140aにもアクセスすることができる。
図19は、PE130a、130b、切替部560aの内部構造を示す図である。なお、レジスタファイル140a、140bは、r0〜r3の4本のレジスタからなるものとしている。
PE130a、130bは、それぞれ制御信号出力部121a、121bからの制御信号に従って動作する。制御信号は、PE内部の演算器、データパスを制御する信号である。図19に示すPEには、演算器として、乗算器(MUL131a、131b)、算術論理演算器(ALU132a、132b)が含まれる。また、データパスの制御とは、アクセスするべきレジスタ番号の指定、アクセスするべきレジスタファイルの指定、データを入力するべき演算器の指定が含まれる。ここで、レジスタ番号の指定は、レジスタ指定信号S11によりなされる。また、レジスタファイルの指定は、切替信号S12a、S12bによりなされる。
切替部560aは、内部にセレクタ561a、561bを備える。
セレクタ561aは、切替信号S12aによりPE130aのアクセス先としてレジスタファイル140aとレジスタファイル140bとを切り替える。具体的には、切替信号S12aが「0b0」であれば、レジスタファイル140aが選択される。また、切替信号S12aが「0b1」であれば、レジスタファイル140bが選択される。セレクタ561bについても同様なので説明を省略する。
上記構成により、PE130a、130bは、レジスタファイル140a、140bのいずれにもアクセスすることができる。例えば、PE130aがレジスタファイル140bのレジスタr1に格納されているデータ(s0)を入手する場合、レジスタ指定信号S11によりレジスタr1を指定し、切替信号S12aには「0b1」を与える。これにより、PE130aはデータ(s0)を入手することができる。
マルチメディアデータ処理では、複素数データの乗算を頻繁に行う場合がある。並列実行プロセッサ500は、複素数データの乗算を並列に実行するプロセッサとして最適な仕様である。以下に詳細に説明する。
図20は、メモリ2及びレジスタファイル140a〜140d内に複素数データが格納されている様子を示す図である。
演算対象となる複素数データは、
k=xk+iyk
k=ck+isk
であるとする。並列実行プロセッサ500は、複素数データの乗算zk×wkを2並列に実行することができる。ここで、「i」は虚数単位であり、「k」は0以上の整数である。また、xkとckとが実数データ、ykとskとが虚数データである。
図20(a)は、メモリ2の内容を示す。
一般的にメモリ2には、実数データと虚数データとが交互に配列されて格納されている。例えば、アドレス「0x0100」には、{x0、y0、x1、y1}、また、アドレス「0x0200」には、{c0、s0、c1、s1}が格納されている。
図20(b)は、ロード命令後のレジスタファイル140a〜140dの内容を示す。
並列実行プロセッサ500は、命令をフェッチして、その命令がロード命令であれば、メモリ2から複素数データをレジスタファイル140a〜140dにロードする。ロード命令には、複素数データの入手先となるメモリ2のアドレスが指定されている。ここでは、入手先として、アドレス「0x0100」と「0x0200」とが指定されている。なお、並列実行プロセッサ500は、ロードの際に、複素数データの配列を並び替えずにそのまま読み込む。
複素数データの乗算は、
k×wk=(xk×ck−yk×sk)+i(xk×sk+yk×ck
=Xk+iYk
となる。ここで、Xkは、乗算結果の実数データ、Ykは、乗算結果の虚数データを示す。並列実行プロセッサ500は、上記のXkをPE130a、130cにより算出し、YkをPE130b、130dにより算出する。以下にその手順を示す。
並列実行プロセッサ500は、Xk、Ykを以下の2つのステップにより得る。
ステップ1:PE130a、130cが乗算xk×ckを行う。これと平行して、PE130b、130dが乗算xk×skを行う。
ステップ2:PE130a、130cが積差演算(乗算yk×skを行い、その結果をステップ1の結果から引く)を行う。これと平行してPE130b、130dが積和演算(乗算yk×ckを行い、その結果をステップ1の結果に足す)を行う。
これにより、PE130a、130cは、Xkを算出することができる。また、PE130b、130dは、Ykを算出することができる。
図20(c)は、ステップ1の乗算命令後のレジスタファイル140a〜140dの内容を示す。
乗算命令の命令データは、図2(d)のデータ構造を有し、オペコードd1として「MUL」、オペランドd2として「r2(0),r0(0),r1(0)」、オペランドd3として「r2(0),r0(1),r1(0)」がセットされる。
オペコード「MUL」は、乗算を示す。また、オペランド「r2(0),r0(0),r1(0)」は、レジスタr0とレジスタr1とがソースレジスタであり、レジスタr2がディスティネーションレジスタであることを示す。また、レジスタ番号に付加されているカッコ内の数値は、切替信号S12a、S12bの値を示す。
PE130a、130cは、それぞれ、オペコードd1とオペランドd2とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12aを出力する。
PE130b、130dは、それぞれ、オペコードd1とオペランドd3とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12bを出力する。
これにより、レジスタファイル140a、140cのレジスタr2には、xk×ckの結果が格納され、レジスタファイル140b、140dのレジスタr2には、xk×skの結果が格納される。
図20(d)は、ステップ2の積差・積和命令後のレジスタファイル140a〜140dの内容を示す。
積差・積和命令の命令データは、図2(b)のデータ構造を有し、オペコードb1として「MSU」、オペランドb2として「r2(0),r0(1),r1(1)」がセットされる。また、オペコードb3として「MAC」、オペランドb4として「r2(0),r0(0),r1(1)」がセットされる。
オペコード「MSU」は、積差演算を示す。また、オペコード「MAC」は、積和演算を示す。
PE130a、130cは、それぞれ、オペコードb1とオペランドb2とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12aを出力する。
PE130b、130dは、それぞれ、オペコードb3とオペランドb4とから生成された制御信号を受けて、当該制御信号に従って動作する。この際に、各PEは、レジスタ番号に従ってレジスタ指定信号S11を出力し、レジスタ番号に付加されているカッコ内の数値に従って切替信号S12bを出力する。
これにより、レジスタファイル140a、140cのレジスタr2には、(xk×ck−yk×sk)の結果であるXkが格納され、レジスタファイル140b、140dのレジスタr2には、(xk×sk+yk×ck)の結果であるYkが格納される。
図21は、乗算命令、及び、積差・積和命令の命令データのデータ構造を示す図である。
図21(a)は、乗算命令の命令データである。
上述のとおり、乗算命令の命令データは、図2(d)のデータ構造を有し、オペコードd1として「MUL」、オペランドd2として「r2(0),r0(0),r1(0)」、オペランドd3として「r2(0),r0(1),r1(0)」がセットされる。
図21(b)は、積差・積和命令の命令データである。
上述のとおり、積差・積和命令の命令データは、図2(b)のデータ構造を有し、オペコードb1として「MSU」、オペランドb2として「r2(0),r0(1),r1(1)」がセットされる。また、オペコードb3として「MAC」、オペランドb4として「r2(0),r0(0),r1(1)」がセットされる。
以上のように、並列実行プロセッサ500は、各レジスタファイルが2つで1つの組を形成しており、各PEは各組内のどちらのレジスタファイルにもアクセス可能としている。
これにより、並列実行プロセッサ500は、複素数データの乗算を、その実数データと虚数データとを並び替えずに実行することができる。
なお、上述の複素数データを扱う具体例は、並列実行プロセッサ500が2つの異なる命令を並列に実行する場合の一例である。したがって、並列実行プロセッサ500は、単一の命令をフェッチした場合には、全てのPEを用いて単一の命令を並列に実行する。例えば、複素数データの加算命令であれば、並列実行プロセッサ500は、全てのPEに加算命令を実行させる。
なお、並列実行プロセッサ500は、常にPE130a、130cが実数データを扱い、常にPE130b、130dが虚数データを扱う仕様としてもよい。これにより、PE130a、130cは、実数データを扱うための回路しか必要とせず、また、PE130b、130dは、虚数データを扱うための回路しか必要としない。従って、各PEの回路規模を削減することができる。
なお、実施の形態5では、各PEは、切替部560a、560bにより2個のレジスタファイルにアクセス可能としているが、これに限らない。例えば、各PEが全てのレジスタファイルにアクセス可能としてもよい。また、実施の形態2、実施の形態3と同様に配属部を設けて、各PEのグループへの配属先を変更してもよい。
なお、切替部560a、560bは、各PEにより制御されているが、これに限らない。例えば、以下のような例が考えられる。
各PEがレジスタr0、r2を指定する場合は、必ず自己のレジスタファイルにアクセスする。各PEがレジスタr1、r3を指定する場合は、必ず他のレジスタファイルにアクセスする。このように、レジスタ番号によりアクセス先が切り替わるようにしてもよい。
なお、全ての実施の形態において、並列実行プロセッサは、PE130a〜PE130dの4個のPEを備えているが、これ以外の数のPEを備えてもよい。
また、並列実行プロセッサは、PE130a〜130dから2つのグループを構成しているが、それ以外の数のグループを構成してもよい。例えば、全てのPEが別々のグループとする構成でもよい。
また、各グループのPEの数を同数とする必要はない。例えば、第1グループに1個の要素プロセッサ、第2グループに3個の要素プロセッサが配属されてもよい。
なお、全ての実施の形態では、並列実行プロセッサは、単一の命令の場合と2つの命令の場合とで、グループ構成を切り替える仕様であるが、これに限らない。例えば、本発明の第2の目的、「データの並び替えが不要」のみに着目すれば、並列実行プロセッサは、常にPE130a〜PE130dから一定のグループを構成しており、常に一定数の命令をフェッチする仕様であってもよい。これは、特に、異なる命令の対象となるデータが一定の規則性をもってメモリ2に配列されている場合に有用である。例えば、複素数データであれば、並列実行プロセッサは、常にPE130a〜PE130dから2つのグループを構成しており、常に実数データに対する命令と虚数データに対する命令とをフェッチすることになる。これにより、並列実行プロセッサは、データの並び替えをせずに並列に異なる命令を実行することができる。
なお、全ての実施の形態では、命令データのフォーマットフィールドに配置形式を記述しているが、これに限らない。例えば、以下のようにしてもよい。
図22は、命令データのデータ構造を示す図である。
図22に示す命令データは、フォーマットフィールドがなく、その分のビット数をオペコードやオペランドに分配している。
図23は、命令デコード部の内部構造を示す図である。
命令デコード部は、解読部622a、622b、622c、622dと、制御信号出力部121a、121bと制御レジスタ623を備える。
解読部622aは、図22(a)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に14ビットをオペコード、18ビットをオペランドとして解読し、1つの制御信号を生成する。
生成された制御信号は、制御信号出力部121a、121bに送られる。
解読部622bは、図22(b)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に7ビットをオペコード、9ビットをオペランド、7ビットをオペコード、9ビットをオペランドとして解読し、2つの制御信号を生成する。
ここで、オペコードb1とオペランドb2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードb3とオペランドb4とから生成された制御信号は、制御信号出力部121bに送られる。
解読部622cは、図22(c)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に7ビットをオペコード、7ビットをオペコード、18ビットをオペランドとして解読し、2つの制御信号を生成する。
ここで、オペコードc1とオペランドc3とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードc2とオペランドc3とから生成された制御信号は、制御信号出力部121bに送られる。
解読部622dは、図22(d)に示されるデータ構造に専用の解読部であり、データフィールドの先頭から順に14ビットをオペコード、9ビットをオペランド、9ビットをオペランドとして解読し、2つの制御信号を生成する。
ここで、オペコードd1とオペランドd2とから生成された制御信号は、制御信号出力部121aに送られる。また、オペコードd1とオペランドd3とから生成された制御信号は、制御信号出力部121bに送られる。
制御レジスタ623は、図2に示されるフォーマットフィールドに記述されている配置形式と同様の配置形式を保持している。この配置形式は、制御レジスタ設定命令により設定される。制御レジスタ設定命令は、図22(a)のデータ構造を有し、解読部622aにより解読され、設定される。
制御信号出力部121a、121bは、入力端子a、b、c、dに入力された制御信号のいずれかを、制御レジスタ623の配置形式の2ビットに基づいて選択的に出力する。
以上のように、命令データがフォーマットフィールドを含まなければ、その分のビット数がオペコードやオペランドに分配される。これにより、制御レジスタ型は、フォーマットフィールド型に比べて、命令データが指定できる命令の種類や、レジスタの本数を増加させることができる。
ただし、制御レジスタ型は、制御レジスタ623の内容を変更する際に、制御レジスタ設定命令を要する。したがって、グループ構成のパターンを変更する頻度によりフォーマットフィールド型と制御レジスタ型とを選択するのが望ましい。
また、フォーマットフィールド型と制御レジスタ型とを併用してもよい。
本発明に係る並列実行プロセッサは、マルチメディアデータ処理を施すコンピュータに適用することができる。
本発明の実施の形態1に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。 命令フェッチ部110がフェッチする命令データのデータ構造を示す図である。 命令デコード部120の内部構造を示す図である。 実施の形態1に係る並列実行プロセッサ100の動作の流れを示す図である。 実施の形態2に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。 配属部250の内部構成を示す図である。 組み合わせ保持部252が保持する2組の組み合わせを示す図である。 実施の形態2に係る並列実行プロセッサ200の動作の流れを示す図である。 実施の形態3に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。 配属部350の内部構成を示す図である。 配属情報入手部353が入手する配属情報の例を示す図である。 実施の形態3に係る並列実行プロセッサ300の動作の流れを示す図である。 実施の形態4に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。 実施の形態4に係る命令データのデータ構造を示す図である。 命令デコード部420の内部構造を示す図である。 実施の形態4に係る並列実行プロセッサ400の動作の流れを示す図である。 実施の形態4に係る並列実行プロセッサ400の動作の流れを示す図である。 実施の形態5に係る並列実行プロセッサを備えるコンピュータの構成を示す図である。 PE130a、130b、切替部560aの内部構造を示す図である。 メモリ2及びレジスタファイル140a〜140d内に複素数データが格納されている状態を示す図である。 複素数乗算命令、及び、積差・積和命令の命令データのデータ構造を示す図である。 命令データのデータ構造を示す図である。 命令デコード部の内部構造を示す図である。
符号の説明
1 CPU
2 メモリ
100 並列実行プロセッサ
110 命令フェッチ部
120 命令デコード部
121a、121b 制御信号出力部
122a、122b、122c、122d 解読部
130a、130b、130c、130d PE
140a、140b、140c、140d レジスタファイル
250、350 配属部
560a、560b 切替部

Claims (15)

  1. 並列実行プロセッサであって、
    複数の要素プロセッサと、
    前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得手段と、
    前記取得手段により取得された命令列を解読する解読手段と、
    前記複数の要素プロセッサから、前記取得手段により取得されたグループ情報により特定される数のグループを構成するグループ構成手段と、
    前記解読手段により解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てて、全ての要素プロセッサに、各要素プロセッサが属するグループに割り当てられた命令を、並列に実行させる実行制御手段と
    を備えることを特徴とする並列実行プロセッサ。
  2. 前記命令列には、前記グループ情報が特定するグループの数と同数の命令が含まれていること
    を特徴とする請求項1に記載の並列実行プロセッサ。
  3. 前記グループ情報は、1グループか2グループかのいずれかを特定し、
    前記グループ構成手段は、
    1グループが特定される場合に、前記複数の要素プロセッサの全体から1つのグループを構成し、2グループが特定される場合に、前記複数の要素プロセッサを半分ずつ分けて2つのグループを構成すること
    を特徴とする請求項2に記載の並列実行プロセッサ。
  4. 前記並列実行プロセッサは、さらに、
    前記複数の要素プロセッサのそれぞれに1つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に交互に格納されているレジスタを備え、
    前記グループ構成手段は、
    2グループが特定される場合に、第1の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第2の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとを異なる2つのグループとし、
    前記複数の要素プロセッサは、
    各要素プロセッサに対応付けられたレジスタファイルから対象データを入手すること
    を特徴とする請求項3に記載の並列実行プロセッサ。
  5. 前記レジスタは、前記レジスタファイルの配列順に2個ずつを1組とするレジスタファイル組を形成しており、
    前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データを入手するべきかを示す選択情報を含み、
    前記複数の要素プロセッサは、
    前記選択情報により示されるレジスタファイルから対象データを入手すること
    を特徴とする請求項4に記載の並列実行プロセッサ。
  6. 前記実行制御手段は、
    複数の配属方法により前記複数の要素プロセッサのそれぞれを2つのグループに配属し、配属方法ごとに、各グループに配属される要素プロセッサの組み合わせを保持する保持手段と、
    前記保持手段に保持されている配属方法のうち、いずれの配属方法を使用するかを示す配属情報を取得する配属情報入手手段と、
    前記配属情報入手手段により入手された配属情報に従って、前記保持手段に保持されている組み合わせを選択する選択手段と
    を備えること特徴とする請求項3に記載の並列実行プロセッサ。
  7. 前記実行制御手段は、
    前記複数の要素プロセッサのそれぞれが2つのグループのうちのいずれに配属されるかを示す配属情報を入手する配属情報入手手段と、
    前記配属情報入手手段により入手された配属情報に従って、前記複数の要素プロセッサのそれぞれを2つのグループのいずれかに配属させる配属手段と
    を備えることを特徴とする請求項3に記載の並列実行プロセッサ。
  8. 前記命令は、1つのオペコードと1つのオペランドとからなり、
    前記並列実行プロセッサは、さらに、
    フォーマットフィールドとデータフィールドとを有し、前記フォーマットフィールドには、前記データフィールドに配置される1以上のオペコード及び1以上のオペランドの配置形式が記述され、前記データフィールドには、前記1以上のオペコード及び1以上のオペランドが前記配置形式により規定される配置順で配置されている、所定長のデータをフェッチするフェッチ手段を備え、
    前記取得手段は、
    前記配置形式により特定される命令数を前記グループ情報として取得し、
    前記解読手段は、
    前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、
    前記実行制御手段は、
    前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
    を特徴とする請求項1に記載の並列実行プロセッサ。
  9. 前記命令は、1つのオペコードと1つのオペランドとからなり、
    前記並列実行プロセッサは、さらに、
    1以上のオペコード及び1以上のオペランドが所定の配置形式により規定される配置順で配置されている所定長のデータをフェッチするフェッチ手段と、
    所定の配置形式を保持している保持手段とを備え、
    前記取得手段は、
    前記保持手段により保持されている配置形式により特定される命令数を前記グループ情報として取得し、
    前記解読手段は、
    前記1以上のオペコード及び1以上のオペランドを、前記配置形式に基づいて抽出して解読し、
    前記実行制御手段は、
    前記解読手段により解読された命令を、前記配置順に従ってグループに割り当てること
    を特徴とする請求項1に記載の並列実行プロセッサ。
  10. 前記取得手段は、
    前記グループ情報が、前記複数の要素プロセッサを2つ以上のグループとすることを特定する場合に、特定のグループに配属されている要素プロセッサの動作停止を指示する命令を取得し、
    前記実行制御手段は、
    前記特定のグループに配属されている要素プロセッサに動作停止を指示すること
    を特徴とする請求項1に記載の並列実行プロセッサ。
  11. 並列実行プロセッサであって、
    複数の要素プロセッサと、
    前記複数の要素プロセッサのそれぞれに1つずつ対応付けられたレジスタファイルからなり、各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に一定の規則に従って格納されてなるレジスタと、
    第1の命令と第2の命令とを含む命令列を取得する取得手段と、
    前記取得手段により取得された命令列から第1の命令と第2の命令を解読する解読手段と、
    第1の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサと、第2の命令の対象データが格納されたレジスタファイルに対応付けられた要素プロセッサとに、前記解読手段により解読された第1の命令と第2の命令とを、それぞれ割り当てて、各要素プロセッサに並列に実行させる実行制御手段と
    を備えることを特徴とする並列実行プロセッサ。
  12. 前記レジスタは、
    各レジスタファイルには、第1の命令の対象データと第2の命令の対象データとが当該レジスタファイルの配列順に交互に格納されていること
    を特徴とする請求項11に記載の並列実行プロセッサ。
  13. 前記レジスタは、前記配列順に2個ずつを1組とするレジスタファイル組を形成しており、
    前記命令は、各要素プロセッサが、自己に対応するレジスタファイルと、そのレジスタファイルと同じレジスタファイル組に属する他のレジスタファイルとのどちらの対象データにアクセスするべきかを示す選択情報を含み、
    前記複数の要素プロセッサは、
    前記選択情報により示されるレジスタファイルから対象データを入手すること
    を特徴とする請求項12に記載の並列実行プロセッサ。
  14. 複数の要素プロセッサに対して命令を割り当てる命令割当方法であって、
    前記複数の要素プロセッサから構成すべきグループの数を特定するグループ情報と、命令列とを取得する取得ステップと、
    前記取得ステップにより取得された命令列を解読する解読ステップと、
    前記複数の要素プロセッサから、前記取得ステップにより取得されたグループ情報により特定される数のグループを構成するグループ構成ステップと、
    前記解読ステップにより解読された命令列に含まれる命令を、1命令1グループ対応でグループに割り当てる実行制御ステップと
    を含むことを特徴とする命令割当方法。
  15. 複数の要素プロセッサに、第1の命令と第2の命令とを割り当てる命令割当方法であって、
    第1の命令の対象データと第2の命令の対象データとが所定の規則で配列され格納されているメモリから、前記複数の要素プロセッサと同数の対象データを読み込み、前記複数の要素プロセッサのそれぞれに対応付けられたレジスタファイルに、その配列を並び替えずに1つずつ格納する格納ステップと、
    第1の命令と第2の命令とを含む命令列を取得する取得ステップと、
    前記取得ステップにより取得された命令列から第1の命令と第2の命令を抽出して解読する解読ステップと、
    前記格納ステップにより第1の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサと、前記第2の命令の対象データが格納されたレジスタファイルに対応する要素プロセッサとに、前記解読ステップにより解読された第1の命令と第2の命令とを、それぞれ割り当てる割当ステップと
    を含むことを特徴とする命令割当方法。
JP2003354369A 2002-10-16 2003-10-14 並列実行プロセッサ、命令割当方法 Expired - Lifetime JP4184224B2 (ja)

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 true JP2004171530A (ja) 2004-06-17
JP4184224B2 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)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte
JP2008532131A (ja) * 2005-02-25 2008-08-14 クリアスピード・テクノロジー・ピーエルシー マイクロプロセッサアーキテクチャ
WO2010067522A1 (ja) * 2008-12-11 2010-06-17 日本電気株式会社 演算ユニット、プロセッサ及び並列演算方法
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
JP2011086158A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置
JP2011086061A (ja) * 2009-10-14 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008532131A (ja) * 2005-02-25 2008-08-14 クリアスピード・テクノロジー・ピーエルシー マイクロプロセッサアーキテクチャ
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte
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
US8051273B2 (en) 2006-08-23 2011-11-01 Nec Corporation Supplying instruction stored in local memory configured as cache to peer processing elements in MIMD processing units
US8112613B2 (en) 2006-08-23 2012-02-07 Nec Corporation Selecting broadcast SIMD instruction or cached MIMD instruction stored in local memory of one of plurality of processing elements for all elements in each unit
WO2010067522A1 (ja) * 2008-12-11 2010-06-17 日本電気株式会社 演算ユニット、プロセッサ及び並列演算方法
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
JP5379223B2 (ja) * 2009-04-22 2013-12-25 パナソニック株式会社 情報処理装置
US8719551B2 (en) 2009-04-22 2014-05-06 Panasonic Corporation Processor with arbiter sending simultaneously requested instructions from processing elements in SIMD / MIMD modes
JP2011086061A (ja) * 2009-10-14 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置
JP2011086158A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置

Also Published As

Publication number Publication date
JP4184224B2 (ja) 2008-11-19

Similar Documents

Publication Publication Date Title
JP2835103B2 (ja) 命令指定方法及び命令実行方式
US11669330B2 (en) Method for performing random read access to a block of data using parallel LUT read instruction in vector processors
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
JP3559046B2 (ja) データ処理マネージメントシステム
US8069337B2 (en) Methods and apparatus for dynamic instruction controlled reconfigurable register file
KR100705507B1 (ko) 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
EP1267257A2 (en) Conditional execution per data path slice
EP1267256A2 (en) Conditional execution of instructions with multiple destinations
JP2005227942A (ja) プロセッサ及びコンパイラ
JP2010067278A (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
US20210157592A1 (en) Register-provided-opcode instruction
JPWO2006129722A1 (ja) 再構成可能な装置
JP4349265B2 (ja) プロセッサ
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
US20170031682A1 (en) Element size increasing instruction
KR20140126189A (ko) 프로세서의 멀티 실행 모드 지원 장치 및 방법
US7395408B2 (en) Parallel execution processor and instruction assigning making use of group number in processing elements
Miyazaki et al. RVCoreP: An optimized RISC-V soft processor of five-stage pipelining
JP4184224B2 (ja) 並列実行プロセッサ、命令割当方法
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
KR20050071614A (ko) 단일-명령 다중-데이터 마이크로프로세서들에서의 벡터순열을 위한 장치, 시스템 및 그 방법
US8601236B2 (en) Configurable vector length computer processor
JPH0648461B2 (ja) マイクロプログラムの転送レジスタ指定方式
JP2013246816A (ja) ミニコア基盤の再構成可能プロセッサ及びその再構成可能プロセッサを利用した柔軟な多重データ処理方法
WO2019046716A1 (en) CONTROLLED INSTRUMENT PROCESSING BY POINTER SIZE

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