JP6237241B2 - 処理装置 - Google Patents

処理装置 Download PDF

Info

Publication number
JP6237241B2
JP6237241B2 JP2014001102A JP2014001102A JP6237241B2 JP 6237241 B2 JP6237241 B2 JP 6237241B2 JP 2014001102 A JP2014001102 A JP 2014001102A JP 2014001102 A JP2014001102 A JP 2014001102A JP 6237241 B2 JP6237241 B2 JP 6237241B2
Authority
JP
Japan
Prior art keywords
slot
instruction
processing unit
input
data
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
JP2014001102A
Other languages
English (en)
Other versions
JP2015130057A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014001102A priority Critical patent/JP6237241B2/ja
Publication of JP2015130057A publication Critical patent/JP2015130057A/ja
Application granted granted Critical
Publication of JP6237241B2 publication Critical patent/JP6237241B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、処理装置に関する。
VLIW(超長命令語:Very Long Instruction Word)プロセッサでは、複数の命令を1つの超長命令語に含めることで、それらの命令を並列に実行する。このスケジューリングをソースコードのコンパイル時に行うことで、複雑な機構を用いることなく、性能を向上させることが可能である。
また、並列処理装置におけるレジスタ読み出し方法が知られている(例えば、特許文献1参照)。まず、レジスタファイルに入力された読み出しレジスタ番号に従って、そのレジスタ番号で指定された格納領域の内容を読み出す。次に、その読み出した内容とフィードバックされた演算結果とのいずれかをオペランドセレクタによって選択してオペランドレジスタに保持させる。次に、その保持内容を演算装置が読み出して演算するとともに、その演算結果をレジスタファイル及びオペランドセレクタにフィードバックする。使用頻度の高いレジスタの内容をあらかじめ指定されたコピーレジスタへコピー入力し、使用頻度の高いレジスタのレジスタ番号が指定された場合には、コピーレジスタから読み出して、レジスタファイルからの読み出しをしないようにする。
また、命令が発行されたサイクルから、命令の結果がターゲットレジスタに書き込まれるまでの間に、ターゲットレジスタへの定義及び参照が可能なプロセッサが知られている(例えば、特許文献2参照)。変数の定義・参照で構成されるライブレンジに対してレジスタを割り付けるレジスタ割り付け処理が行われる。命令が発行されたサイクルから命令の結果がターゲットレジスタに書き込まれるまでの間に、ターゲットレジスタをターゲットを定義する命令以外の命令で使用するようにレジスタを割り付ける。
特開平5−165639号公報 特開2001−290659号公報
VLIWプロセッサが複数の命令を並列に実行するには、レジスタファイルへアクセスする必要があり、複数の命令に対応するレジスタファイルの出力ポート数が増え、その結果として面積が増加するという課題がある。
本発明の目的は、レジスタファイルの出力ポート数を減らし、面積を削減することができる処理装置を提供することである。
処理装置は、1つの超長命令語に含まれる複数の命令であって、命令のそれぞれが互いに異なるスロットに対応付けられる、前記複数の命令をデコードする命令デコーダと、複数のスロット処理ユニットであって、スロット毎に対応するスロット処理ユニットが少なくとも1つ備えられているものであり、前記命令デコーダのデコードに応じて、1つの超長命令語に含まれる前記複数の命令のそれぞれ毎に、命令に対応するスロットのためのスロット処理ユニットのいずれかにより当該命令の処理を実行することにより、1つの超長命令語に含まれる前記複数の命令を並列に実行する、前記複数のスロット処理ユニットと、前記命令デコーダのデコードに応じて、1つの超長命令語に含まれる複数の命令のそれぞれにおいて、命令のオペランドによりレジスタが指定されている場合に、指定されたレジスタに記憶されている値を、当該命令に対応付けられるスロットのための前記スロット処理ユニットのいずれかに出力するレジスタファイルを有し、前記複数のスロット処理ユニットのうち、互いに異なるスロットのための少なくとも2個のスロット処理ユニットは、前記レジスタファイルの同じ出力ポートの同じ値を入力する。
レジスタファイルの同じ出力ポートの値を入力することにより、レジスタファイルの出力ポート数を減らし、面積を削減することができる。
図1は、第1の実施形態による処理装置の構成例を示す図である。 図2は、複数のスロットの命令を含む超長命令語を示す図である。 図3は、図1の処理装置の一部の構成例を示す図である。 図4は、図1の処理装置の処理方法を示すフローチャートである。 図5は、第2の実施形態による処理装置の構成例を示す図である。 図6は、第3の実施形態による処理装置の構成例を示す図である。
(第1の実施形態)
図1は、第1の実施形態による処理装置の構成例を示す図である。処理装置は、命令メモリ101、命令フェッチユニット102、命令デコーダ103、パイプラインコントローラ104、スカラレジスタファイル105、ベクトルレジスタファイル106、セレクタ107,108、第1のスロット処理ユニットSL1a、第3のスロット処理ユニットSL3a、第1のスロット処理ユニットSL1b、第3のスロット処理ユニットSL3b、第2のスロット処理ユニットSL2、第4のスロット処理ユニットSL4、セレクタ109〜112、及びデータメモリ113を有する。
演算装置は、VLIWプロセッサ又はデジタルシグナルプロセッサ(DSP)である。命令メモリ101は、図2に示すように、複数のスロットの命令を含む超長命令語を記憶する。以下、4ウェイVLIWプロセッサの例を説明するが、スロット数は4個に限定されない。超長命令語は、4個のスロットの命令を有し、演算装置は、4個のスロットの命令を並列処理することができる。第1のスロットは、ロード(LD)命令、ストア(ST)命令、又はロード命令及びストア命令以外の処理(ALU)命令を割り当てることができる。第2のスロットは、ロード命令及びストア命令以外の処理(ALU)命令を割り当てることができる。第3のスロットは、ロード(LD)命令、ストア(ST)命令、又はロード命令及びストア命令以外の処理(ALU)命令を割り当てることができる。第4のスロットは、ロード命令及びストア命令以外の処理(ALU)命令を割り当てることができる。なお、各スロットには、何もしないNOP命令を割り当てることも可能である。
第1のスロット処理ユニットSL1aは、超長命令語の第1のスロットのロード(LD)命令及びストア(ST)命令の処理を実行するロードストアユニットである。第1のスロット処理ユニットSL1bは、超長命令語の第1のスロットのロード命令及びストア命令以外の処理(ALU)命令を実行する実行ユニットであり、例えば算術論理演算ユニット(ALU)の処理を行う。第2のスロット処理ユニットSL2は、超長命令語の第2のスロットのロード命令及びストア命令以外の処理(ALU)命令を実行する実行ユニットである。第3のスロット処理ユニットSL3aは、超長命令語の第3のスロットのロード(LD)命令及びストア(ST)命令の処理を実行するロードストアユニットである。第3のスロット処理ユニットSL3bは、超長命令語の第3のスロットのロード命令及びストア命令以外の処理(ALU)命令を実行する実行ユニットである。第4のスロット処理ユニットSL4は、超長命令語の第4のスロットのロード命令及びストア命令以外の処理(ALU)命令を実行する実行ユニットである。
命令フェッチユニット102は、パイプラインコントローラ104の制御により、命令メモリ101に記憶されている超長命令語を読み出してフェッチする。次に、命令デコーダ103は、パイプラインコントローラ104の制御により、命令フェッチユニット102にフェッチされている超長命令語を入力してデコードする。
スカラレジスタファイル105及びベクトルレジスタファイル106は、パイプラインコントローラ104の制御により、命令デコーダ103のデコードに応じて、超長命令語内の4個のスロットの命令のオペランドにより指定されたレジスタに記憶されている値を6個のスロット処理ユニットSL1a〜SL4にそれぞれ出力する。
第1のスロット処理ユニットSL1a及びSL1bは、超長命令語内の第1のスロットの命令のオペランドにより指定されたレジスタに記憶されている値をレジスタファイル105及び/又は106から入力する。第2のスロット処理ユニットSL2は、超長命令語内の第2のスロットの命令のオペランドにより指定されたレジスタに記憶されている値をレジスタファイル105及び/又は106から入力する。第3のスロット処理ユニットSL3a及びSL3bは、超長命令語内の第3のスロットの命令のオペランドにより指定されたレジスタに記憶されている値をレジスタファイル105及び/又は106から入力する。第4のスロット処理ユニットSL4は、超長命令語内の第4のスロットの命令のオペランドにより指定されたレジスタに記憶されている値をレジスタファイル105及び/又は106から入力する。
スカラレジスタファイル105は、16個の32ビットレジスタ、8個の出力ポート及び4個の入力ポートを有し、各出力ポートから32ビット値を出力することができる。データメモリ113は、32ビットアドレスを有するので、スカラレジスタファイル105の各レジスタは、データメモリ113のアドレスを記憶することができる。スカラレジスタファイル105は、第1のスロットの2個の出力ポートが第1のスロット処理ユニットSL1a及びSL1bに接続され、第2のスロットの2個の出力ポートが第2のスロット処理ユニットSL2に接続され、第3のスロットの2個の出力ポートが第3のスロット処理ユニットSL3a及びSL3bに接続され、第4のスロットの2個の出力ポートが第4のスロット処理ユニットSL4に接続される。
ベクトルレジスタファイル106は、16個の128ビットレジスタ、6個の出力ポート及び4個の入力ポートを有し、各出力ポートから128ビット値を出力することができる。データメモリ113は、各アドレスに128ビットデータを記憶するので、ベクトルレジスタファイル106の各レジスタは、データメモリ113のデータを記憶することができる。ベクトルレジスタファイル106は、第1のスロットの1個の出力ポートが第1のスロット処理ユニットSL1a及びSL1bに接続され、第2のスロットの2個の出力ポートが第2のスロット処理ユニットSL2に接続され、第3のスロットの1個の出力ポートが第3のスロット処理ユニットSL3a及びSL3bに接続され、第4のスロットの2個の出力ポートが第4のスロット処理ユニットSL4に接続される。
セレクタ107は、命令デコーダ103のデコードに応じて、ベクトルレジスタファイル106の第2のスロットの2個の出力ポートの値のいずれかを選択し、第1のスロット処理ユニットSL1bに出力する。すなわち、第1のスロット処理ユニットSL1bの2入力値のうちの一方の入力値は、第2のスロット処理ユニットSL2の2入力値のうちのいずれかの1入力値と同じである。第1のスロット処理ユニットSL1b及び第2のスロット処理ユニットSL2は、ベクトルレジスタファイル106の同じ1個の出力ポートの値を入力する。
セレクタ108は、命令デコーダ103のデコードに応じて、ベクトルレジスタファイル106の第4のスロットの2個の出力ポートの値のいずれかを選択し、第3のスロット処理ユニットSL3bに出力する。すなわち、第3のスロット処理ユニットSL3bの2入力値のうちの一方の入力値は、第4のスロット処理ユニットSL4の2入力値のうちのいずれかの1入力値と同じである。第3のスロット処理ユニットSL3b及び第4のスロット処理ユニットSL4は、ベクトルレジスタファイル106の同じ1個の出力ポートの値を入力する。
スカラレジスタファイル105の出力ポート数は8であり、ベクトルレジスタファイル106の出力ポート数は6であり、ベクトルレジスタファイル106の出力ポート数の方が少ない。セレクタ107及び108を設けることにより、ベクトルレジスタファイル106の出力ポート数を減らし、ベクトルレジスタファイル106の面積を削減することができる。セレクタ107及び108を用いて、入力データを共有する例を、後に、図3を参照しながら説明する。
6個のスロット処理ユニットSL1a〜SL4は、命令デコーダ103のデコードに応じて、超長命令語内の4個のスロットの命令の処理をそれぞれ並列に実行する。第1のスロット処理ユニットSL1a及びSL1bは、命令デコーダ103のデコードに応じて、超長命令語内の第1のスロットの命令の処理を実行する。第2のスロット処理ユニットSL2は、命令デコーダ103のデコードに応じて、超長命令語内の第2のスロットの命令の処理を実行する。第3のスロット処理ユニットSL3a及びSL3bは、命令デコーダ103のデコードに応じて、超長命令語内の第3のスロットの命令の処理を実行する。第4のスロット処理ユニットSL4は、命令デコーダ103のデコードに応じて、超長命令語内の第4のスロットの命令の処理を実行する。
スロット処理ユニット(ロードストアユニット)SL1a,SL3aは、データメモリ113に対して、32ビットアドレス及び128ビットデータを出力し、データをストアすることができる。また、ロードストアユニットSL1a,SL3aは、データメモリ113に対して、32ビットアドレスを出力し、128ビットデータをロードすることができる。ロードストアユニットSL1aは、データメモリ113からロードした128ビットデータをセレクタ109に出力する。ロードストアユニットSL3aは、データメモリ113からロードした128ビットデータをセレクタ110に出力する。スロット処理ユニット(実行ユニット)SL1bは、128ビットデータをセレクタ109に出力する。スロット処理ユニット(実行ユニット)SL3bは、128ビットデータをセレクタ110に出力する。
セレクタ109は、命令デコーダ103のデコードに応じて、第1のスロット処理ユニットSL1aの出力データ又は第1のスロット処理ユニットSL1bの出力データを選択し、ベクトルレジスタファイル106の第1のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、命令デコーダ103の第1のスロットの命令のデコードに応じたレジスタに、第1のスロットの入力ポートに入力されたデータを書き込む。
スロット処理ユニット(実行ユニット)SL2は、128ビットデータをベクトルレジスタファイル106の第2のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、命令デコーダ103の第2のスロットの命令のデコードに応じたレジスタに、第2のスロットの入力ポートに入力されたデータを書き込む。
セレクタ110は、命令デコーダ103のデコードに応じて、第3のスロット処理ユニットSL3aの出力データ又は第3のスロット処理ユニットSL3bの出力データを選択し、ベクトルレジスタファイル106の第3のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、命令デコーダ103の第3のスロットの命令のデコードに応じたレジスタに、第3のスロットの入力ポートに入力されたデータを書き込む。
スロット処理ユニット(実行ユニット)SL4は、128ビットデータをベクトルレジスタファイル106の第4のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、命令デコーダ103の第4のスロットの命令のデコードに応じたレジスタに、第4のスロットの入力ポートに入力されたデータを書き込む。
例えば、第1のスロットの命令が下記のストア命令である場合を説明する。
v.store vx,sx,「即値」
ここで、v.storeは、オペコードである。オペランドvxは、ベクトルレジスタファイル106内のストアデータを記憶するレジスタ番号を示す。オペランドsxは、スカラレジスタファイル105内のベースアドレスを記憶するレジスタ番号を示す。オペランド「即値」は、オフセットアドレスを示す。
第1のスロット処理ユニットSL1aは、ベクトルレジスタファイル106内のレジスタvxのストアデータを入力し、スカラレジスタファイル105内のレジスタsxのベースアドレスを入力する。次に、第1のスロット処理ユニットSL1aは、レジスタsxのベースアドレスと「即値」のオフセットアドレスとを加算したアドレスと、レジスタvxのストアデータとをデータメモリ113に出力し、データメモリ113の指定アドレスにストアデータをストアする。
次に、第1のスロットの命令が下記のロード命令である場合を説明する。
v.load vx,sx,「即値」
ここで、v.loadは、オペコードである。オペランドvxは、ベクトルレジスタファイル106内のロードデータを書き込むレジスタ番号を示す。オペランドsxは、スカラレジスタファイル105内のベースアドレスを記憶するレジスタ番号を示す。オペランド「即値」は、オフセットアドレスを示す。
第1のスロット処理ユニットSL1aは、スカラレジスタファイル105内のレジスタsxのベースアドレスを入力する。次に、第1のスロット処理ユニットSL1aは、レジスタsxのベースアドレスと「即値」のオフセットアドレスとを加算したアドレスをデータメモリ113に出力し、データメモリ113の指定アドレスからデータをロードする。次に、第1のスロット処理ユニットSL1aは、ロードしたデータをセレクタ109に出力する。セレクタ109は、第1のスロット処理ユニットSL1aが出力するデータを選択してベクトルレジスタファイル106の第1のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、第1のスロットの入力ポートに入力したデータをレジスタvxに書き込む。
次に、第2のスロットの命令が下記の加算命令である場合を説明する。
v.add v10,v14,v15
ここで、v.addは、オペコードである。オペランドv10は、ベクトルレジスタファイル106内の加算結果を書き込むレジスタ番号を示す。オペランドv14及びv15は、ベクトルレジスタファイル106内の加算対象の値を記憶するレジスタ番号を示す。
第2のスロット処理ユニットSL2は、ベクトルレジスタファイル106内のレジスタv14及びv15の値を入力し、レジスタv14及びv15の値を加算し、その加算結果をベクトルレジスタファイル106の第2のスロットの入力ポートに出力する。ベクトルレジスタファイル106は、第2のスロットの入力ポートに入力したデータをレジスタv10に書き込む。
図3は、図1の処理装置の一部の構成例を示す図である。処理装置は、例えば、無線通信の信号処理などのため、ベクトルレジスタファイル106に記憶されているデータを入れ換える処理を行う。第1のスロット処理ユニットSL1bは、入力データを保持する入力レジスタ301,302と、データを入れ換えるためのセレクタ303と、出力データを保持する出力レジスタ304とを有する。第2のスロット処理ユニットSL2は、入力データを保持する入力レジスタ311,312と、データを入れ換えるためのセレクタ313と、出力データを保持する出力レジスタ314とを有する。
例えば、ベクトルレジスタファイル106内の各レジスタは、16ビット×8個=128ビットのデータを記憶する。例えば、命令メモリ101は、次式(1)の第2のスロットの入換命令と次式(2)の第1のスロットの入換命令とを含む超長命令語を記憶する。
v.select.i v0,v1,v2,「即値」 ・・・(1)
v.select_share.i v3,v4,SELx,「即値」 ・・・(2)
ここで、v.select.iは、第2のスロットの入換命令のオペコードである。オペランドv0は、ベクトルレジスタファイル106内の入れ換え後のデータD6を記憶するレジスタ番号を示す。オペランドv1及びv2は、ベクトルレジスタファイル106内の入れ換え前のデータD3及びD4を記憶するレジスタ番号を示す。オペランド「即値」は、データ入れ換えのパターンを示す。
また、v.select_share.iは、第1のスロットの入換命令のオペコードである。オペランドv3は、ベクトルレジスタファイル106内の入れ換え後のデータD5を記憶するレジスタ番号を示す。オペランドv4は、ベクトルレジスタファイル106内の入れ換え前のデータD1を記憶するレジスタ番号を示す。オペランドSELxは、セレクタ107が第2のスロット処理ユニットSL2の2入力データD3及びD4のうちのいずれを選択するかを示す識別子である。オペランド「即値」は、データ入れ換えのパターンを示す。
命令フェッチユニット102は、命令メモリ101内から上記の超長命令語をフェッチする。命令デコーダ103は、命令フェッチユニット102によりフェッチされた超長命令語をデコードする。ベクトルレジスタファイル106は、第2のスロットの上式(1)の入換命令で指定されたレジスタv1のデータD3及びレジスタv2のデータD4を第2のスロット処理ユニットSL2に出力する。また、ベクトルレジスタファイル106は、第1のスロットの上式(2)の入換命令で指定されたレジスタv4のデータD1を第1のスロット処理ユニットSL1bに出力する。セレクタ107は、第1のスロットの上式(2)の入換命令で指定された識別子SELxに応じて、レジスタv1のデータD3又はレジスタv2のデータD4を選択し、データD2を第1のスロット処理ユニットSL1bに出力する。例えば、セレクタ107は、識別子SELxが「0」の場合にはレジスタv1のデータD3を選択し、識別子SELxが「1」の場合にはレジスタv2のデータD4を選択する。図3の場合、セレクタ107は、レジスタv1のデータD3を選択し、データD2として出力する。
入力レジスタ311は、「0」〜「7」で示すレジスタv1の16ビット×8個=128ビットのベクトルデータD3を記憶する。入力レジスタ312は、「8」〜「15」で示すレジスタv2の16ビット×8個=128ビットのベクトルデータD4を記憶する。
入力レジスタ301は、「16」〜「23」で示すレジスタv4の16ビット×8個=128ビットのベクトルデータD1を記憶する。入力レジスタ302は、「0」〜「7」で示すレジスタv2の16ビット×8個=128ビットのデータD2を記憶する。入力レジスタ302及び311の記憶データは、相互に同じになる。
セレクタ303は、第1のスロットの上式(2)の入換命令で指定された「即値」に応じたパターンで、入力レジスタ301のデータD1及び入力レジスタ302のデータD2の入れ換えを行い、入れ換え後のデータD5を出力レジスタ304に書き込む。例えば、セレクタ303は、「0」〜「7」で示される16×8ビットのデータD2のうちの上位半分の「0」〜「3」で示される16×4ビットのデータを選択し、「16」〜「23」で示される16×8ビットのデータD1のうちの上位半分の「16」〜「19」で示される16×4ビットのデータを選択し、それらを結合した16×8ビットのデータD5を出力する。
セレクタ313は、第2のスロットの上式(1)の入換命令で指定された「即値」に応じたパターンで、入力レジスタ311のデータD3及び入力レジスタ312のデータD4の入れ換えを行い、入れ換え後のデータD6を出力レジスタ314に書き込む。例えば、セレクタ313は、「0」〜「7」で示される16×8ビットのデータD3のうちの上位半分の「0」〜「3」で示される16×4ビットのデータを選択し、「8」〜「15」で示される16×8ビットのデータD4のうちの上位半分の「8」〜「11」で示される16×4ビットのデータを選択し、それらを結合した16×8ビットのデータD6を出力する。
図1のセレクタ109は、第1のスロットの命令が上式(2)の入換命令であるので、第1のスロット処理ユニットSL1bの出力データD5を選択し、ベクトルレジスタファイル106に出力する。ベクトルレジスタファイル106は、第1のスロットの上式(2)の入換命令で指定されたレジスタv3にデータD5を書き込み、第2のスロットの上式(1)の入換命令で指定されたレジスタv0にデータD6を書き込む。
なお、セレクタ303及び313は、上位半分のデータを選択する例を示したが、下位半分のデータを選択したり、奇数番目のデータを選択したり、偶数番目のデータを選択するなど様々な選択が可能である。これらの選択は、上式(1)及び(2)の入換命令の「即値」により指定可能である。
また、上式(1)及び(2)は、「即値」により、データ入れ換えパターンを指定する例を示したが、次式(3)及び(4)のように、スカラレジスタファイル105内のレジスタs0及びs1により、データ入れ換えパターンを指定するようにしてもよい。
v.select v0,v1,v2,s0 ・・・(3)
v.select_share v3,v4,SELx,s1 ・・・(4)
上記では、第1のスロット処理ユニットSL1b及び第2のスロット処理ユニットSL2の場合を例に説明したが、第3のスロット処理ユニットSL3b及び第4のスロット処理ユニットSL4の場合も同様である。
上記のように、無線通信の信号処理などでは、第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の入力データD3と同じデータD2を入力する場合がある。本実施形態では、第1のスロット処理ユニットSL1b及び第2のスロット処理ユニットSL2は、ベクトルレジスタファイル106の同じ出力ポートのデータを入力し、第3のスロット処理ユニットSL3b及び第4のスロット処理ユニットSL4は、ベクトルレジスタファイル106の同じ出力ポートのデータを入力する。これにより、ベクトルレジスタファイル106の出力ポート数を減らし、面積を削減することができる。
図4は、図1の処理装置の処理方法を示すフローチャートである。ステップS401では、処理装置は、命令デコーダ103のデコード結果に応じて、第1のスロット及び第3のスロットの命令が2リードタイプか否かをチェックする。2リードタイプの命令は、例えば、実行ユニットSL1b,SL2,SL3b,SL4が行う加算命令及び入れ換え命令等であり、ベクトルレジスタファイル106に対して、2入力の命令である。1リードタイプの命令は、例えば、ロードストアユニットSL1a,SL3aが行うロード命令及びストア命令であり、ベクトルレジスタファイル106に対して、1入力の命令である。第1のスロット及び第3のスロットの命令の両方が2リードタイプである場合には、ステップS402に進み、それ以外の場合には、ステップS404に進む。
ステップS402では、処理装置は、命令デコーダ103のデコード結果に応じて、第1のスロットの命令の識別子SELxが0であり、かつ、第3のスロットの命令の識別子SELxが0であるという条件を満たすか否かをチェックする。上記の条件を満たす場合には、ステップS403に進み、上記の条件を満たさない場合には、ステップS413に進む。
ステップS403では、セレクタ107は、第2のスロット処理ユニットSL2の第1の入力データD3を選択し、第1のスロット処理ユニットSL1bに出力する。セレクタ108は、第4のスロット処理ユニットSL4の第1の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第1の入力データD3と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第1の入力データと同じデータを入力し、第3のスロットの命令を実行する。
ステップS413では、処理装置は、命令デコーダ103のデコード結果に応じて、第1のスロットの命令の識別子SELxが1であり、かつ、第3のスロットの命令の識別子SELxが0であるという条件を満たすか否かをチェックする。上記の条件を満たす場合には、ステップS414に進み、上記の条件を満たさない場合には、ステップS415に進む。
ステップS414では、セレクタ107は、第2のスロット処理ユニットSL2の第2の入力データD4を選択し、第1のスロット処理ユニットSL1bに出力する。セレクタ108は、第4のスロット処理ユニットSL4の第1の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第2の入力データD4と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第1の入力データと同じデータを入力し、第3のスロットの命令を実行する。
ステップS415では、処理装置は、命令デコーダ103のデコード結果に応じて、第1のスロットの命令の識別子SELxが0であり、かつ、第3のスロットの命令の識別子SELxが1であるという条件を満たすか否かをチェックする。上記の条件を満たす場合には、ステップS416に進み、上記の条件を満たさない場合には、ステップS417に進む。
ステップS416では、セレクタ107は、第2のスロット処理ユニットSL2の第1の入力データD3を選択し、第1のスロット処理ユニットSL1bに出力する。セレクタ108は、第4のスロット処理ユニットSL4の第2の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第1の入力データD3と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第2の入力データと同じデータを入力し、第3のスロットの命令を実行する。
ステップS417では、セレクタ107は、第2のスロット処理ユニットSL2の第2の入力データD4を選択し、第1のスロット処理ユニットSL1bに出力する。セレクタ108は、第4のスロット処理ユニットSL4の第2の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第2の入力データD4と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第2の入力データと同じデータを入力し、第3のスロットの命令を実行する。
ステップS404では、処理装置は、命令デコーダ103のデコード結果に応じて、第1及び第3のスロットのうちの第1のスロットの命令のみが2リードタイプか否かをチェックする。第1のスロットの命令のみが2リードタイプである場合には、ステップS405に進み、それ以外の場合には、ステップS408に進む。
ステップS405では、処理装置は、命令デコーダ103のデコード結果に応じて、第1のスロットの命令の識別子SELxが0であるか否かをチェックする。識別子SELxが0である場合には、ステップS407に進み、それ以外の場合には、ステップS406に進む。
ステップS407では、セレクタ107は、第2のスロット処理ユニットSL2の第1の入力データD3を選択し、第1のスロット処理ユニットSL1bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第1の入力データD3と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3aは、ベクトルレジスタファイル106から1個のデータを入力し、第3のスロットの命令を実行する。
ステップS406では、セレクタ107は、第2のスロット処理ユニットSL2の第2の入力データD4を選択し、第1のスロット処理ユニットSL1bに出力する。第1のスロット処理ユニットSL1bは、第2のスロット処理ユニットSL2の第2の入力データD4と同じデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3aは、ベクトルレジスタファイル106から1個のデータを入力し、第3のスロットの命令を実行する。
ステップS408では、処理装置は、命令デコーダ103のデコード結果に応じて、第1及び第3のスロットのうちの第3のスロットの命令のみが2リードタイプか否かをチェックする。第3のスロットの命令のみが2リードタイプである場合には、ステップS410に進み、それ以外の場合には、ステップS409に進む。
ステップS409では、第1のスロット処理ユニットSL1aは、ベクトルレジスタファイル106から1個のデータを入力し、第1のスロットの命令を実行する。第3のスロット処理ユニットSL3aは、ベクトルレジスタファイル106から1個のデータを入力し、第3のスロットの命令を実行する。
ステップS410では、処理装置は、命令デコーダ103のデコード結果に応じて、第3のスロットの命令の識別子SELxが0であるか否かをチェックする。識別子SELxが0である場合には、ステップS412に進み、それ以外の場合には、ステップS411に進む。
ステップS412では、セレクタ108は、第4のスロット処理ユニットSL4の第1の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第1の入力データと同じデータを入力し、第3のスロットの命令を実行する。第1のスロット処理ユニットSL1aは、ベクトルレジスタファイル106から1個のデータを入力し、第1のスロットの命令を実行する。
ステップS411では、セレクタ108は、第4のスロット処理ユニットSL4の第2の入力データを選択し、第3のスロット処理ユニットSL3bに出力する。第3のスロット処理ユニットSL3bは、第4のスロット処理ユニットSL4の第2の入力データと同じデータを入力し、第3のスロットの命令を実行する。第1のスロット処理ユニットSL1aは、ベクトルレジスタファイル106から1個のデータを入力し、第1のスロットの命令を実行する。
以上のように、セレクタ107は、一のスロット処理ユニットSL2の複数の入力値のうちの1個の入力値を、他のスロット処理ユニットSL1bの入力値として選択する。セレクタ108は、一のスロット処理ユニットSL4の複数の入力値のうちの1個の入力値を、他のスロット処理ユニットSL3bの入力値として選択する。セレクタ107及び108は、命令デコーダ103がデコードする命令の識別子SELxに応じて選択する。
2個のスロット処理ユニットSL1b及びSL2は、それぞれ、一の入力値がベクトルレジスタファイル106の同じ出力ポートから入力され、他の入力値がベクトルレジスタファイル106の異なる出力ポートから入力される。同様に、2個のスロット処理ユニットSL3b及びSL4は、それぞれ、一の入力値がベクトルレジスタファイル106の同じ出力ポートから入力され、他の入力値がベクトルレジスタファイル106の異なる出力ポートから入力される。
本実施形態によれば、ベクトルレジスタファイル106の同じ出力ポートの値を入力することにより、ベクトルレジスタファイル106の出力ポート数を減らし、面積を削減することができる。無線通信などの信号処理では、複数のスロット処理ユニットが入力を共有する場合が少なくないので、本実施形態の効果は大きい。
(第2の実施形態)
図5は、第2の実施形態による処理装置の構成例を示す図である。本実施形態(図5)は、第1の実施形態(図1)に対して、セレクタ107及び108を削除したものである。以下、本実施形態が第1の実施形態と異なる点を説明する。
第1のスロット処理ユニットSL1bは、2個の入力ポートのうちの一方の入力ポートがベクトルレジスタファイル106の第1のスロットの出力ポートに接続され、2個の入力ポートのうちの他方の入力ポートがベクトルレジスタファイル106の第2のスロットの2個の出力ポートのうちのいずれか1個の出力ポートに接続される。第1のスロット処理ユニットSL1b及び第2のスロット処理ユニットSL2の一方の入力ポートは、ベクトルレジスタファイル106の同じ出力ポートに直接接続されている。
また、第3のスロット処理ユニットSL3bは、2個の入力ポートのうちの一方の入力ポートがベクトルレジスタファイル106の第3のスロットの出力ポートに接続され、2個の入力ポートのうちの他方の入力ポートがベクトルレジスタファイル106の第4のスロットの2個の出力ポートのうちのいずれか1個の出力ポートに接続される。第3のスロット処理ユニットSL3b及び第4のスロット処理ユニットSL4の一方の入力ポートは、ベクトルレジスタファイル106の同じ出力ポートに直接接続されている。
第1のスロット処理ユニットSL1b及び第3のスロット処理ユニットSL3bの入力を固定できる場合には、本実施形態のように、セレクタ107及び108を削除することができる。これにより、処理装置の面積をさらに削減することができる。
(第3の実施形態)
図6は、第3の実施形態による処理装置の構成例を示す図である。本実施形態(図6)は、第1の実施形態(図1)に対して、セレクタ107及び108の入力が異なる。以下、本実施形態が第1の実施形態と異なる点を説明する。
ベクトルレジスタファイル106は、第1のスロットの1個の出力ポートと、第3のスロットの1個の出力ポートと、第2のスロットの2個の出力ポート(第1及び第2の出力ポート)と、第4のスロットの2個の出力ポート(第1及び第2の出力ポート)とを有する。また、ベクトルレジスタファイル106は、第2のスロットの第1の出力ポートが第2のスロット処理ユニットSL2の第1の入力ポートに接続され、第2のスロットの第2の出力ポートが第2のスロット処理ユニットSL2の第2の入力ポートに接続される。また、ベクトルレジスタファイル106は、第4のスロットの第1の出力ポートが第4のスロット処理ユニットSL4の第1の入力ポートに接続され、第4のスロットの第2の出力ポートが第4のスロット処理ユニットSL4の第2の入力ポートに接続される。
セレクタ107は、ベクトルレジスタファイル106の第2のスロットの第1の出力ポートのデータと、ベクトルレジスタファイル106の第2のスロットの第2の出力ポートのデータと、ベクトルレジスタファイル106の第4のスロットの第1の出力ポートのデータと、ベクトルレジスタファイル106の第4のスロットの第2の出力ポートのデータとを入力し、その4入力データのうちのいずれか1個のデータを選択して第1のスロット処理ユニットSL1bに出力する。第1のスロットの上式(2)の命令の識別子SELxは、「0」から「3」のうちのいずれかの値をとる。セレクタ107は、第1の実施形態と同様に、第1のスロットの命令の識別子SELxの値に応じて選択する。
同様に、セレクタ108は、ベクトルレジスタファイル106の第2のスロットの第1の出力ポートのデータと、ベクトルレジスタファイル106の第2のスロットの第2の出力ポートのデータと、ベクトルレジスタファイル106の第4のスロットの第1の出力ポートのデータと、ベクトルレジスタファイル106の第4のスロットの第2の出力ポートのデータとを入力し、その4入力データのうちのいずれか1個のデータを選択して第3のスロット処理ユニットSL3bに出力する。第3のスロットの上式(2)の命令の識別子SELxは、「0」から「3」のうちのいずれかの値をとる。セレクタ108は、第1の実施形態と同様に、第3のスロットの命令の識別子SELxの値に応じて選択する。
以上のように、セレクタ107は、複数のスロット処理ユニットSL2及びSL4の入力値のうちの1個の入力値を、第1のスロット処理ユニットSL1bの入力値として選択する。セレクタ108は、複数のスロット処理ユニットSL2及びSL4の入力値のうちの1個の入力値を、第3のスロット処理ユニットSL3bの入力値として選択する。セレクタ107及び108は、命令デコーダ103がデコードする命令の識別子SELxに応じて選択する。
第1〜第3の実施形態では、2個のスロット処理ユニットがベクトルレジスタファイル106の同じ出力ポートの値を入力する場合を例に説明したが、3個以上のスロット処理ユニットがベクトルレジスタファイル106の同じ出力ポートの値を入力するようにしてもよい。少なくとも2個のスロット処理ユニットがベクトルレジスタファイル106の同じ出力ポートの値を入力すればよい。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 命令メモリ
102 命令フェッチユニット
103 命令デコーダ
104 パイプラインコントローラ
105 スカラレジスタファイル
106 ベクトルレジスタファイル
107〜112 セレクタ
113 データメモリ

Claims (9)

  1. 1つの超長命令語に含まれる複数の命令であって、命令のそれぞれが互いに異なるスロットに対応付けられる、前記複数の命令をデコードする命令デコーダと、
    複数のスロット処理ユニットであって、スロット毎に対応するスロット処理ユニットが少なくとも1つ備えられているものであり、前記命令デコーダのデコードに応じて、1つの超長命令語に含まれる前記複数の命令のそれぞれ毎に、命令に対応するスロットのためのスロット処理ユニットのいずれかにより当該命令の処理を実行することにより、1つの超長命令語に含まれる前記複数の命令を並列に実行する、前記複数のスロット処理ユニットと、
    前記命令デコーダのデコードに応じて、1つの超長命令語に含まれる複数の命令のそれぞれにおいて、命令のオペランドによりレジスタが指定されている場合に、指定されたレジスタに記憶されている値を、当該命令に対応付けられるスロットのための前記スロット処理ユニットのいずれかに出力するレジスタファイルを有し、
    前記複数のスロット処理ユニットのうち、互いに異なるスロットのための少なくとも2個のスロット処理ユニットは、前記レジスタファイルの同じ出力ポートの同じ値を入力することを特徴とする処理装置。
  2. 前記複数のスロット処理ユニットは、前記複数スロットのうちの少なくとも1個のスロットに対して、ロード命令及びストア命令を実行するためのロードストアユニットと、前記ロード命令及び前記ストア命令以外の処理を行う実行ユニットとを有することを特徴とする請求項1記載の処理装置。
  3. 前記少なくとも2個のスロット処理ユニットは、ロード命令及びストア命令以外の処理を行う実行ユニットであることを特徴とする請求項1又は2記載の処理装置。
  4. 前記少なくとも2個のスロット処理ユニットは、それぞれ、一の入力値が前記レジスタファイルの同じ出力ポートから入力され、他の入力値が前記レジスタファイルの異なる出力ポートから入力されることを特徴とする請求項1〜3のいずれか1項に記載の処理装置。
  5. さらに、前記少なくとも2個のスロット処理ユニットのうちの一のスロット処理ユニットの複数の入力値のうちの1個の入力値を、前記少なくとも2個のスロット処理ユニットのうちの他のスロット処理ユニットの入力値として選択するセレクタを有することを特徴とする請求項1〜4のいずれか1項に記載の処理装置。
  6. 前記セレクタは、前記命令デコーダがデコードする命令に応じて選択することを特徴とする請求項5記載の処理装置。
  7. さらに、前記少なくとも2個のスロット処理ユニットのうちの一のスロット処理ユニットを含む複数のスロット処理ユニットの入力値のうちの1個の入力値を、前記少なくとも2個のスロット処理ユニットのうちの他のスロット処理ユニットの入力値として選択するセレクタを有することを特徴とする請求項1〜4のいずれか1項に記載の処理装置。
  8. 前記セレクタは、前記命令デコーダがデコードする命令に応じて選択することを特徴とする請求項7記載の処理装置。
  9. 前記少なくとも2個のスロット処理ユニットの入力ポートは、前記レジスタファイルの同じ出力ポートに直接接続されていることを特徴とする請求項1〜4のいずれか1項に記載の処理装置。
JP2014001102A 2014-01-07 2014-01-07 処理装置 Expired - Fee Related JP6237241B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014001102A JP6237241B2 (ja) 2014-01-07 2014-01-07 処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014001102A JP6237241B2 (ja) 2014-01-07 2014-01-07 処理装置

Publications (2)

Publication Number Publication Date
JP2015130057A JP2015130057A (ja) 2015-07-16
JP6237241B2 true JP6237241B2 (ja) 2017-11-29

Family

ID=53760737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014001102A Expired - Fee Related JP6237241B2 (ja) 2014-01-07 2014-01-07 処理装置

Country Status (1)

Country Link
JP (1) JP6237241B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6705473B2 (ja) * 2018-06-22 2020-06-03 日本電気株式会社 演算装置及び演算システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69325785T2 (de) * 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
US5931939A (en) * 1996-09-25 1999-08-03 Philips Electronics North America Corporation Read crossbar elimination in a VLIW processor
EP1044407B1 (en) * 1998-10-09 2014-02-26 Koninklijke Philips N.V. Vector data processor with conditional instructions
AU2001247324A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Vliw computer processing architecture with on-chip dynamic ram
CN101097513A (zh) * 2002-11-20 2008-01-02 皇家飞利浦电子股份有限公司 带有复制寄存器文件的vliw处理器
US7315935B1 (en) * 2003-10-06 2008-01-01 Advanced Micro Devices, Inc. Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
DE602005019180D1 (de) * 2004-09-22 2010-03-18 Koninkl Philips Electronics Nv Datenverarbeitungsschaltung mit funktionseinheiten mit gemeinsamen leseports
KR101445794B1 (ko) * 2007-06-18 2014-11-03 삼성전자주식회사 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치

Also Published As

Publication number Publication date
JP2015130057A (ja) 2015-07-16

Similar Documents

Publication Publication Date Title
US9383999B2 (en) Conditional compare instruction
KR101722346B1 (ko) 적분 이미지 계산 명령어를 위한 방법 및 장치
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
CN103562854A (zh) 用于对齐寄存器的系统、装置和方法
JPWO2010087144A1 (ja) 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法
JP2013543175A5 (ja)
TW201333687A (zh) 用於以推測支援來執行向量化的裝置及方法
KR101787615B1 (ko) 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
KR20090009959A (ko) 마이크로프로세서 내에서 다수의 레지스터 유니트들로부터의 대응하는 하프워드 유니트들을 결합하기 위한 방법 및 시스템
CN107851016B (zh) 向量算术指令
JP6773378B2 (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
JP6237241B2 (ja) 処理装置
JP2008108220A (ja) 演算装置
KR102591988B1 (ko) 데이터 처리장치에서의 벡터 인터리빙
KR102458467B1 (ko) 벡터 생성 명령
JP5862397B2 (ja) 演算処理装置
IL274178B2 (en) Add-with-carry vector instruction
JP4444305B2 (ja) 半導体装置
JP5659772B2 (ja) 演算処理装置
KR101635856B1 (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법
JP2013182420A (ja) ベクトル処理装置およびベクトル処理方法
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP2015141677A (ja) 処理装置
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170801

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170913

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171016

R150 Certificate of patent or registration of utility model

Ref document number: 6237241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees