(57)【特許請求の範囲】
【請求項１】
読み出された命令をパイプライン処理するプロセッサであって、
読み出された命令をデコードし、デコード結果を基に処理データが格納されているレジスタを指定する第１の指定信号を出力するデコード部と、
前記デコード部での前記デコード結果を基に発行された命令に従って、処理データを用いて当該命令に基づく処理を実行する処理部と、
前記デコード部より出力された前記第１の指定信号に応じて、第２の指定信号を制御し出力する指定信号制御部と、
処理データを保持する複数のレジスタを有するとともに、前記指定信号制御部より出力された前記第２の指定信号を受けて、当該第２の指定信号で指定されたレジスタに格納されている処理データを出力するレジスタファイルとを備え、
前記指定信号制御部は、前記レジスタファイルから前記処理部への処理データの供給が不要なサイクルでは、出力する前記第２の指定信号を維持し、
前記プロセッサは、命令デコードステージにて前記レジスタファイルからの処理データの読み出し動作を行うプロセッサであり、複数のサイクルに渡って命令に係る処理が実行されるマルチサイクル命令を実行するとき、前記処理部に供給する処理データがフォワーディングにより供給される場合に、前記指定信号制御部は、１サイクル目では入力される前記第１の指定信号に合わせて出力する前記第２の指定信号を変化させ、２サイクル目以降では出力する前記第２の指定信号を維持することを特徴とするプロセッサ。
【請求項２】
前記指定信号制御部は、出力した前記第２の指定信号を保持する保持部と、
前記保持部に保持した前記第２の指定信号及び前記デコード部より出力された前記第１の指定信号が入力され、当該第２の指定信号又は当該第１の指定信号を選択し前記レジスタファイルに前記第２の指定信号として出力する信号選択部とを有することを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記処理部での処理結果をフォワーディングするフォワーディング部を備え、
前記フォワーディング部によるフォワーディングで前記処理部へ処理データが供給される場合には、前記指定信号制御部は、出力する前記第２の指定信号を維持することを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記指定信号制御部は、前記処理部に対して命令が発行されないサイクルでは、出力する前記第２の指定信号を維持することを特徴とする請求項１〜３の何れか１項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関する。
【背景技術】
【０００２】
プロセッサでは、命令に応じた処理の実行に伴って、レジスタファイルに対するデータの読み出し動作（レジスタファイルからのオペランドの読み出し）や書き込み動作（レジスタファイルへの演算結果の書き込み）が行われる。これらレジスタファイルに係る動作での消費電力は大きい。
【０００３】
レジスタファイルへの演算結果の書き込み動作を抑止することにより、レジスタファイルの電力消費を抑制して、プロセッサにおける消費電力を低減する技術が提案されている（例えば、特許文献１、２参照。）。例えば、連続する命令において、先行する命令と後続の命令とでそれぞれの演算結果のレジスタファイルにおける書き込み先が同じである場合に、レジスタファイルへの先行命令の演算結果の書き込みを抑止して電力消費を抑制する。すなわち、連続する命令間に出力依存関係（ＷＡＷ＜write after write＞ハザード）がある場合に、先行する命令でのレジスタファイルへの演算結果の書き込み動作を抑止することで、プロセッサにおける消費電力の低減を図っている。
【０００４】
また、フォワーディングと呼ばれる処理を実行可能なプロセッサがある。フォワーディングは、レジスタファイルへまだ書き込まれていないが、すでに生成されている演算結果（先行する命令の演算結果）を、後続の命令のソースデータ（ソースオペランド）として使用するように制御する方法である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−３０５７７７号公報
【特許文献２】特開２００６−１３９６４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記特許文献１、２に提案されている技術では、レジスタファイルへのデータの書き込み動作を抑止することで消費電力の低減を図っているが、レジスタファイルからのデータの読み出し動作の点では消費電力を低減していなかった。例えば、プロセッサでの命令の実行において、命令のソースデータがフォワーディングにより供給される場合には、レジスタファイルから読み出されたデータを使用しないので、その命令のソースデータに係るレジスタファイルからの読み出しは無駄である。本発明は、レジスタファイルからの読み出し動作に係る電力消費を抑制してプロセッサにおける消費電力を低減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、読み出された命令をデコードし、デコード結果を基に処理データが格納されているレジスタを指定する第１の指定信号を出力するデコード部と、デコード結果を基に発行された命令に従って処理データを用いて処理を実行する処理部と、デコード部からの第１の指定信号に応じて、第２の指定信号を制御し出力する指定信号制御部と、複数のレジスタを有し、指定信号制御部からの第２の指定信号を受けて、第２の指定信号で指定されたレジスタに格納されている処理データを出力するレジスタファイルとを備えるプロセッサが提供される。指定信号制御部は、レジスタファイルから処理部への処理データの供給が不要なサイクルでは、出力する第２の指定信号を維持する。プロセッサは、命令デコードステージにてレジスタファイルからの処理データの読み出し動作を行うプロセッサであり、複数のサイクルに渡って命令に係る処理が実行されるマルチサイクル命令を実行するとき、処理データがフォワーディングにより供給される場合に、指定信号制御部は、１サイクル目では第１の指定信号に合わせて出力する第２の指定信号を変化させ、２サイクル目以降では出力する第２の指定信号を維持する。
【発明の効果】
【０００８】
開示のプロセッサは、レジスタファイルからのデータ供給が不要なサイクルにおいて、レジスタファイルからのデータ読み出しに係る信号が変化することを抑止する。したがって、レジスタファイルからの不要な読み出し動作によるレジスタファイルの無駄な電力消費を抑制し、プロセッサにおける消費電力を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態によるプロセッサの構成例を示す図である。
【図２】ベクトルプロセッサについて説明するための図である。
【図３】第２の実施形態によるプロセッサの構成例を示す図である。
【図４】第３の実施形態によるプロセッサの構成例を示す図である。
【図５】第３の実施形態における読み出し制御の一例を示すフローチャートである。
【図６】各実施形態における読み出し動作を説明するための図である。
【発明を実施するための形態】
【００１０】
本発明の実施形態を図面に基づいて説明する。
以下に説明する各実施形態によるプロセッサは、レジスタファイルからのデータ（オペランド）の供給が不要なサイクルでは、レジスタファイルからのデータ読み出しに係る信号の変化を抑止することにより、レジスタファイルの無駄な電力消費を抑制する。
【００１１】
プロセッサにおいてレジスタファイルからのデータの供給が不要なサイクルの一例としては、例えば命令のソースデータ（ソースオペランド）がフォワーディングにより供給される場合がある。先行する命令の演算結果がフォワーディングにより後続の命令のソースデータとして供給されるときには、レジスタファイルから読み出されるデータ（オペランド）は後続の命令のソースデータとして使用されない。つまり、後続の命令のソースデータがフォワーディングにより供給される場合には、そのソースデータを供給するためにレジスタファイルからのデータ読み出しを行うことは無駄であり、レジスタファイルからの読み出し動作を行う必要がない。したがって、命令のソースデータがフォワーディングにより供給される場合に、レジスタファイルからのデータ読み出しに係る信号変化を抑止することで消費電力の低減が図れる。
【００１２】
また、プロセッサにおいてレジスタファイルからのデータの供給が不要なサイクルの他の例としては、例えば命令が発行されないサイクルがある。命令が発行されなければ有意な演算処理等そのものが実行されることがないので、レジスタファイルからのデータの読み出し動作を行う必要がないとともに、そのときレジスタファイルからのデータ読み出しに係る信号が変化すると無駄な電力消費が生じることになる。命令が発行されないサイクルにおいては、レジスタファイルからのデータ読み出しに係る信号変化を抑止することで消費電力が増加することが防げる。
【００１３】
プロセッサにおいてレジスタファイルからのデータの供給が不要なサイクルとして、命令のソースデータがフォワーディングにより供給される場合や命令が発行されないサイクルを例示したが、これらは一例であって、これに限定されるものではない。なお、以下では、先行する命令と後続の命令との間に真の依存関係（ＲＡＷ＜read after write＞ハザード）があり、かつ先行する命令の演算結果がフォワーディングにより後続の命令のソースデータ（ソースオペランド）として供給されるときにレジスタファイルからのデータ読み出しに係る信号変化を抑止する場合を例に各実施形態によるプロセッサについて説明する。
【００１４】
（第１の実施形態）
本発明の第１の実施形態について説明する。
【００１５】
図１は、第１の実施形態によるプロセッサの構成例を示す図である。図１において、ＩＦは命令フェッチステージ、ＩＤは命令デコードステージ、ＲＲはレジスタ読み出しステージ、ＥＸは演算実行ステージ、ＭＡはメモリアクセスステージ、ＷＢはライトバックステージである。図１に示すプロセッサは、命令デコードステージＩＤとレジスタ読み出しステージＲＲとが分離した６ステージのパイプライン構成のスカラプロセッサである。
【００１６】
命令フェッチステージＩＦでは、アドレス指定によって命令バッファ１１から命令が読み出される。命令バッファ１１には、プロセッサにてプログラムに応じた処理を実行するための命令列が格納されている。
【００１７】
命令デコードステージＩＤでは、命令フェッチステージＩＦにおいて読み出された（フェッチされた）命令がデコードされる。命令デコードステージＩＤにおいて、デコード回路２１は、命令フェッチステージＩＦにおいて読み出された命令からオペランドのフィールド等を分離する。また、命令デコードステージＩＤにおいて、発行制御回路２２は、当該命令が発行可能であるか否か、先行する命令との依存関係を判定する処理や、フォワーディングを行うか否かを判定する処理等を行う。命令デコードステージＩＤにおけるデコード回路２１や発行制御回路２２によるデコード結果等に基づいて制御情報２３が生成される。
【００１８】
レジスタ読み出しステージＲＲでは、命令デコードステージＩＤにおいて生成された制御情報２３に応じてレジスタファイル３３に対する読み出し動作が行われる。レジスタ読み出しステージＲＲにおいて、指定信号制御回路３１、３２は、制御情報２３を基に発行される読み出しオペランド指定信号ＲＯＰＲＡ及びオペランド制御信号ＯＰＲＣが入力される。指定信号制御回路３１、３２は、オペランド制御信号ＯＰＲＣに応じて、入力された読み出しオペランド指定信号ＲＯＰＲＡ、又は前のサイクルで（もしくは先行する命令でのレジスタ読み出しステージＲＲにおいて）レジスタファイル３３に出力した読み出しオペランド指定信号ＲＯＰＲＢを、現命令における読み出しオペランド指定信号ＲＯＰＲＢとして出力する。
【００１９】
指定信号制御回路３１は、例えばマルチプレクサ回路４１及びレジスタ４２を有する。指定信号制御回路３１において、マルチプレクサ回路４１は、読み出しオペランド指定信号ＲＯＰＲＡ及びレジスタ４２の出力が入力されるとともに、制御信号としてオペランド制御信号ＯＰＲＣが入力される。マルチプレクサ回路４１は、読み出しオペランド指定信号ＲＯＰＲＡ又はレジスタ４２の出力の一方をオペランド制御信号ＯＰＲＣに応じて出力し、その出力が読み出しオペランド指定信号ＲＯＰＲＢとして指定信号制御回路３１より出力される。また、マルチプレクサ回路４１の出力は、先行する命令において出力した読み出しオペランド指定信号ＲＯＰＲＢとしてレジスタ４２によって保持され、マルチプレクサ回路４１に供給される。
【００２０】
同様に、指定信号制御回路３２は、例えばマルチプレクサ回路４３及びレジスタ４４を有する。指定信号制御回路３２におけるマルチプレクサ回路４３及びレジスタ４４は、指定信号制御回路３１におけるマルチプレクサ回路４１及びレジスタ４２にそれぞれ対応する。また、指定信号制御回路３２における動作と指定信号制御回路３１における動作とは同様であるので、指定信号制御回路３２に係る説明は省略する。なお、指定信号制御回路３１、３２は、オペランド制御信号ＯＰＲＣに応じて、読み出しオペランド指定信号ＲＯＰＲＡ又は前のサイクル（先行する命令）で出力した読み出しオペランド指定信号ＲＯＰＲＢを、現命令における読み出しオペランド指定信号ＲＯＰＲＢとして選択的に出力できれば良く、図１に示した構成に限定されるものではない。
【００２１】
指定信号制御回路３１、３２から出力された読み出しオペランド指定信号ＲＯＰＲＢは、レジスタファイル３３に入力される。そして、レジスタファイル３３から読み出しオペランド指定信号ＲＯＰＲＢで指定されたレジスタに格納されているデータが読み出され出力される。ここで、レジスタファイル３３は、複数のレジスタを有し、命令に応じた処理の実行に際して供給されるソースデータや処理結果である演算結果等を保持している。
【００２２】
レジスタファイル３３から出力されたデータは、マルチプレクサ回路３４に入力される。また、マルチプレクサ回路３４には、フォワーディング回路４０より出力されたデータが入力されるとともに、オペランド制御信号ＯＰＲＣが入力されている。マルチプレクサ回路３４に入力されたレジスタファイル３３からのデータやフォワーディング回路４０からのデータは、オペランド制御信号ＯＰＲＣに応じて選択されソースデータ（ソースオペランド）３５として演算器３６等に入力される。
【００２３】
ここで、フォワーディング回路４０は、フォワーディングによるデータ供給を行うための回路である。フォワーディング回路４０は、１又は複数の先行する命令（１又は複数サイクル前に実行された命令）での演算実行ステージＥＸ、メモリアクセスステージＭＡ、及びライトバックステージＷＢに係る処理結果（演算結果３７、３９等）が入力される。フォワーディング回路４０は、入力された各ステージに係る処理結果をマルチプレクサ回路３４にフォワーディングデータとして出力する。
【００２４】
演算実行ステージＥＸでは、命令によって指定された演算処理が演算器３６により実行される。演算器３６は、制御情報２４を基に発行される演算器制御信号ＡＬＵＣが入力され、ソースデータ３５を用いて演算器制御信号ＡＬＵＣに応じた演算処理を実行する。また、メモリアクセスステージＭＡでは、メモリアクセス回路３８により図示しないデータメモリに対するアクセス（データのロード／ストア）が行われる。さらに、ライトバックステージＷＢでは、演算実行ステージＥＸやメモリアクセスステージＭＡでの演算結果３７、３９（演算器の演算結果やメモリから読み出したデータ）がレジスタファイル３３の書き込みオペランドとして指定されたレジスタに書き込まれる。なお、制御情報２４は、制御情報２３と同様のものであり、図示していないがメモリアクセスステージＭＡ及びライトバックステージＷＢにおいても同様の制御情報に基づいて各ステージでの処理が実行される。
【００２５】
以下に、前述したレジスタ読み出しステージＲＲにおける動作を、命令のソースデータ（ソースオペランド）をレジスタファイル３３から読み出して供給する場合、及びフォワーディングにより供給する場合のそれぞれについて説明する。ここで、命令のソースデータとして、レジスタファイル３３から読み出したデータを供給するか、フォワーディングにより供給するかは、オペランド制御信号ＯＰＲＣによって制御される。
【００２６】
＜レジスタファイル３３から読み出したデータを命令のソースデータとする場合＞
オペランド制御信号ＯＰＲＣにより、レジスタファイル３３からのデータを命令のソースデータとして供給することが示される。このとき、指定信号制御回路３１、３２は、オペランド制御信号ＯＰＲＣに従って、入力された読み出しオペランド指定信号ＲＯＰＲＡを現命令における読み出しオペランド指定信号ＲＯＰＲＢとして出力する。すなわち、図１に例示した指定信号制御回路３１、３２において、マルチプレクサ回路４１、４３は、オペランド制御信号ＯＰＲＣに従い、読み出しオペランド指定信号ＲＯＰＲＡを選択して出力する。
【００２７】
これにより、レジスタファイル３３に入力される読み出しオペランド指定信号ＲＯＰＲＢが読み出しオペランド指定信号ＲＯＰＲＡに応じて変化し、読み出しオペランド指定信号ＲＯＰＲＡが指定するレジスタのデータが読み出されレジスタファイル３３より出力される。そして、マルチプレクサ回路３４は、オペランド制御信号ＯＰＲＣに従って、レジスタファイル３３から出力されたデータを選択し、ソースデータ３５として出力する。
【００２８】
＜フォワーディングにより命令のソースデータを供給する場合＞
オペランド制御信号ＯＰＲＣにより、フォワーディングによって命令のソースデータを供給することが示される。このとき、指定信号制御回路３１、３２は、オペランド制御信号ＯＰＲＣに従って、前のサイクルでレジスタファイル３３に出力した読み出しオペランド指定信号ＲＯＰＲＢを、現命令における読み出しオペランド指定信号ＲＯＰＲＢとして出力する。すなわち、図１に例示した指定信号制御回路３１、３２において、マルチプレクサ回路４１、４３は、オペランド制御信号ＯＰＲＣに従い、レジスタ４２、４４の出力を選択して出力する。また、マルチプレクサ回路３４は、オペランド制御信号ＯＰＲＣに従って、フォワーディング回路４０から出力されたデータを選択し、ソースデータ３５として出力する。
【００２９】
このように、レジスタファイル３３に入力される読み出しオペランド指定信号ＲＯＰＲＢは、変化することなく、前のサイクルにおいてレジスタファイル３３に入力された状態を維持する。そのため、レジスタファイル３３からマルチプレクサ回路３４に入力されるデータも変化することなく、先行する命令のときと同じデータである。つまり、レジスタファイル３３に入力される読み出しオペランド指定信号ＲＯＰＲＢ及びレジスタファイル３３から出力されるデータにおいて、信号の変化は発生しない。したがって、レジスタファイル３３からのデータ読み出しに係る信号（データを含む）が不要に変化することを抑止し、レジスタファイル３３の無駄な電力消費を抑制することができ、プロセッサにおける消費電力を低減することができる。
【００３０】
前述した説明では、命令デコードステージＩＤとレジスタ読み出しステージＲＲが分離したスカラプロセッサを一例として説明したが、命令デコードステージＩＤとレジスタ読み出しステージＲＲが分離していないスカラプロセッサにも適用することが可能である。例えば、命令デコードステージＩＤにおいてレジスタファイルからのデータ読み出しを行う５ステージのパイプライン構成のスカラプロセッサに適用可能である。このような命令デコードステージＩＤとレジスタ読み出しステージＲＲが分離していないスカラプロセッサでは、通常は遅延時間の短縮の観点から命令のデコード処理とレジスタファイルからの読み出し処理とを並行して行う。しかし、読み出しオペランドに係る情報はデコード回路２１の出力から得られるが、フォワーディングを行うか否かの判定結果は発行制御回路２２の出力から得られる。したがって、フォワーディングを行うか否かの判定結果が得られてからレジスタファイルに対する読み出し動作を行うようにすると処理が直列となって遅延時間が増大してしまうことが考えられる。つまり、命令デコードステージＩＤとレジスタ読み出しステージＲＲが分離していないスカラプロセッサについて前述した本実施形態に係る技術を適用した場合には、遅延時間が増大するおそれはあるが、プロセッサにおける消費電力は低減される。
【００３１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
以下に、ベクトルデータを複数サイクルに渡って処理するベクトルプロセッサに適用した場合について説明する。ベクトルプロセッサは、配列型のレジスタファイルを有し、配列データに対して演算処理やロード／ストア処理等を行う。ベクトルプロセッサについて、図２を参照し説明する。
【００３２】
図２（Ａ）は、ベクトルレジスタファイルの例を示す図であり、図示のように物理番号は論理番号とベクトル長ＶＬとにより決まる。図２（Ａ）には、ベクトルレジスタが１−ｈａｌｆｗｏｒｄ×５１２エントリであって、ベクトル長ＶＬが３２の場合における物理番号と論理番号との対応を示している。例えば、物理番号０から３１が論理番号０に対応し、物理番号３２から６３が論理番号１に対応する。
【００３３】
図２（Ｂ）は、ベクトルプロセッサにおける動作を説明するための図である。図２（Ｂ）には、演算器が１サイクルで４データ（１−ｈａｌｆｗｏｒｄ×４）について演算を行うＳＩＭＤ（Single Instruction Multiple Data）構成で、ベクトル実行パイプラインを２つ有するベクトルプロセッサの動作例を示している。また、図２（Ｂ）に動作例を示したベクトルプロセッサは、１サイクルに発行可能な命令数が１であり、ベクトル長が３２であるとする。したがって、各実行パイプラインは１つのベクトル命令をＶＬ／４＝８サイクルで実行する。
【００３４】
図２（Ｂ）に示す例では、第１サイクル〜第８サイクルにおいて、命令１：（ｖａｄｄ  ｒ１，ｒ２，ｒ３）に係る処理がベクトル実行パイプラインｐ０で実行される。命令１：（ｖａｄｄ  ｒ１，ｒ２，ｒ３）は、レジスタｒ２の内容とレジスタｒ３の内容とを加算して、加算結果をレジスタｒ１に格納する演算処理を実行させる命令である。すなわち、第１サイクル〜第８サイクルにおいて、物理番号６４〜９５に対応する領域のデータと物理番号９６〜１２７に対応する領域のデータとが加算され、加算結果が物理番号３２〜６３に対応する領域に書き込まれる。
【００３５】
命令１に続いて、命令２：（ｖａｄｄ  ｒ５，ｒ１，ｒ４）が発行される。命令２：（ｖａｄｄ  ｒ５，ｒ１，ｒ４）は、レジスタｒ１の内容とレジスタｒ４の内容とを加算して、加算結果をレジスタｒ５に格納する演算処理を実行させる命令である。すなわち、命令２に係る演算処理では、物理番号３２〜６３に対応する領域のデータと物理番号１２８〜１５９に対応する領域のデータとを加算し、加算結果を物理番号１６０〜１９１に対応する領域に書き込む。ここで、ペナルティが０であるとすると、第２サイクル〜第９サイクルにおいて物理番号３２〜６３に対応する領域が順次参照されてもストールすることがないので命令１に続けて命令２を発行することができる。したがって、命令１に続いて命令２が発行され、第２サイクル〜第９サイクルにおいて命令２に係る処理がベクトル実行パイプラインｐ１で実行される。
【００３６】
そして、第８サイクルにおいてベクトル実行パイプラインｐ０での命令１に係る処理が完了した後、命令３が発行され、第９サイクル〜第１６サイクルにおいて命令３に係る処理がベクトル実行パイプラインｐ０で実行される。
【００３７】
図３は、第２の実施形態によるプロセッサの構成例を示す図である。図３において、ＩＦは命令フェッチステージ、ＩＤは命令デコードステージ、ＲＲはレジスタ読み出しステージ、ＥＸは演算実行ステージ、ＭＡはメモリアクセスステージ、ＷＢはライトバックステージである。図３に示すプロセッサは、命令デコードステージＩＤとレジスタ読み出しステージＲＲとが分離した６ステージのパイプライン構成のベクトルプロセッサであり、２つのベクトル実行パイプラインｐ０、ｐ１を有している。
【００３８】
命令フェッチステージＩＦでは、アドレス指定によって命令バッファ５１から命令が読み出される。命令バッファ５１には、プロセッサにてプログラムに応じた処理を実行するための命令列が格納されている。
【００３９】
命令デコードステージＩＤでは、命令フェッチステージＩＦにおいて読み出された命令がデコードされる。デコード回路６１は、命令フェッチステージＩＦにおいて読み出された命令からオペランドのフィールド等を分離する。また、発行制御回路６２は、当該命令が発行可能であるか否か、先行する命令との依存関係を判定する処理や、フォワーディングを行うか否かを判定する処理等を行う。そして、命令が発行可能なベクトル実行パイプラインｐ０、ｐ１に対して、デコード回路６１や発行制御回路６２によるデコード結果等に基づいて生成された制御情報６４Ａ、６４Ｂが出力される。
【００４０】
本実施形態における制御情報は、デコード回路６１や発行制御回路６２によるデコード結果に係る情報に加え、パイプラインの状態に係る情報を含む。また、制御情報は、命令の実行に伴って命令更新回路６６Ａ、６６Ｂにより更新され、例えば命令の実行に伴ってパイプラインの状態に係る情報（読み出し対象のレジスタ番号等）が更新される。
【００４１】
なお、２つのベクトル実行パイプラインｐ０、ｐ１の各々の構成や動作は同様であるので、以下ではベクトル実行パイプラインｐ０を例に説明し、適宜ベクトル実行パイプラインｐ１の対応する構成要素の符号を括弧書きにより付加する（第３の実施形態についても同様）。
【００４２】
レジスタ読み出しステージＲＲでは、制御情報６４Ａ（６４Ｂ）に応じてベクトルレジスタファイル７２に対する読み出し動作が行われる。指定信号制御回路７１Ａ（７１Ｂ）は、制御情報６４Ａ（６４Ｂ）を基に発行される読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）及びオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）が入力される。指定信号制御回路７１Ａ（７１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に応じて、レジスタファイル７２に出力する読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）を制御する。指定信号制御回路７１Ａ（７１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に応じて、入力された読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）を読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）として出力するか、あるいは信号を変化させずに読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）を維持する。
【００４３】
指定信号制御回路７１Ａ（７１Ｂ）から出力された読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）は、ベクトルレジスタファイル７２に入力される。そして、ベクトルレジスタファイル７２から読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）で指定されたレジスタに格納されているデータが読み出されて、マルチプレクサ回路７３Ａ（７３Ｂ）に入力される。また、マルチプレクサ回路７３Ａ（７３Ｂ）には、フォワーディング回路７９より出力されたデータが入力されている。マルチプレクサ回路７３Ａ（７３Ｂ）に入力されたベクトルレジスタファイル７２からのデータやフォワーディング回路７９からのデータは、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に応じて選択されソースデータ７４Ａ（７４Ｂ）として演算器７５Ａ（７５Ｂ）等に入力される。
【００４４】
フォワーディング回路７９は、フォワーディングによるデータ供給を行うための回路である。フォワーディング回路７９は、１又は複数サイクル前の演算実行ステージＥＸ、メモリアクセスステージＭＡ、及びライトバックステージＷＢに係る処理結果が入力され、入力された各ステージに係る処理結果をマルチプレクサ回路７３Ａ（７３Ｂ）に出力する。
【００４５】
また、レジスタ読み出しステージＲＲにおいて、命令更新回路６６Ａ（６６Ｂ）は、制御情報６４Ａ（６４Ｂ）を命令実行に伴って適宜更新する。更新された制御情報は、マルチプレクサ回路６３Ａ（６３Ｂ）を介して次の制御情報６４Ａ（６４Ｂ）として出力される。
【００４６】
演算実行ステージＥＸでは、命令によって指定された演算処理が演算器７５Ａ（７５Ｂ）により実行される。演算器７５Ａ（７５Ｂ）は、ソースデータ７４Ａ（７４Ｂ）を用い、制御情報６５Ａ（６５Ｂ）を基に発行された演算器制御信号ＡＬＵＣ０（ＡＬＵＣ１）に応じた演算処理を実行する。また、メモリアクセスステージＭＡでは、メモリアクセス回路７７Ａ（７７Ｂ）により図示しないデータメモリに対するアクセス（データのロード／ストア）が行われる。さらに、ライトバックステージＷＢでは、演算実行ステージＥＸやメモリアクセスステージＭＡでの演算結果７６Ａ、７８Ａ（７６Ｂ、７８Ｂ）がベクトルレジスタファイル７２の書き込みオペランドとして指定されたレジスタに書き込まれる。なお、制御情報６５Ａ（６５Ｂ）は、制御情報６４Ａ（６４Ｂ）と同様のものであり、図示していないがメモリアクセスステージＭＡ及びライトバックステージＷＢにおいても同様の制御情報に基づいて各ステージでの処理が実行される。
【００４７】
ここで、レジスタ読み出しステージＲＲにおける動作について詳しく説明する。
第２の実施形態において、ベクトルレジスタファイル７２からのデータを命令のソースデータとする場合には、ベクトルレジスタファイル７２からのデータを命令のソースデータとして供給することがオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）によって示される。このとき、指定信号制御回路７１Ａ（７１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、入力された読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）を読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）として出力する。これにより、ベクトルレジスタファイル７２から読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）によって指定されるレジスタのデータが読み出されて出力される。そして、マルチプレクサ回路７３Ａ（７３Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、ベクトルレジスタファイル７２からのデータを選択し、ソースデータ７４Ａ（７４Ｂ）として出力する。
【００４８】
一方、フォワーディングにより命令のソースデータを供給する場合には、フォワーディングにより命令のソースデータを供給することがオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）によって示される。このとき、指定信号制御回路７１Ａ（７１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、前のサイクルで出力した読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）を維持する。また、マルチプレクサ回路７３Ａ（７３Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、フォワーディング回路７９からのデータを選択し、ソースデータ７４Ａ（７４Ｂ）として出力する。
【００４９】
このように、フォワーディングにより命令のソースデータを供給する場合には、ベクトルレジスタファイル７２に入力される読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）は、変化することなく、前のサイクルの状態を維持する。そのため、ベクトルレジスタファイル７２からの出力データも変化することなく、前のサイクルと同じ状態で維持される。つまり、ベクトルレジスタファイル７２に入力される読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）及びベクトルレジスタファイル７２からの出力データにおいて、信号の変化は発生しない。したがって、ベクトルレジスタファイル７２からのデータ読み出しに係る信号（データを含む）が不要に変化することを抑止して無駄な電力消費を抑制することができ、プロセッサにおける消費電力を低減することができる。
【００５０】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
図４は、第３の実施形態によるプロセッサの構成例を示す図である。図４において、ＩＦは命令フェッチステージ、ＩＤは命令デコードステージ、ＥＸは演算実行ステージ、ＭＡはメモリアクセスステージ、ＷＢはライトバックステージである。図４に示すプロセッサは、命令デコードステージＩＤにおいてレジスタファイルからのデータ読み出し動作を行う５ステージのパイプライン構成のベクトルプロセッサであり、２つのベクトル実行パイプラインｐ０、ｐ１を有している。
【００５１】
命令フェッチステージＩＦでは、アドレス指定によって、プロセッサにてプログラムに応じた処理を実行するための命令列が格納された命令バッファ８１から命令が読み出される。命令デコードステージＩＤでは、命令フェッチステージＩＦにおいて読み出された命令がデコードされるとともに、ベクトルレジスタファイル９３に対する読み出し動作が行われる。
【００５２】
命令デコードステージＩＤにおいて、デコード回路８２は、命令バッファ８１から読み出された命令からオペランドのフィールド等を分離し、得られるオペランド指定情報に応じた読み出しオペランド指定信号ＲＯＰＲＡＡを出力する。また、発行制御回路８３は、当該命令が発行可能であるか否か、先行する命令との依存関係を判定する処理や、フォワーディングを行うか否かを判定する処理等を行う。そして、命令が発行可能なベクトル実行パイプラインｐ０、ｐ１に対して、デコード回路８２や発行制御回路８３によるデコード結果等に基づいて生成した制御情報８５Ａ（８５Ｂ）が出力される。
【００５３】
制御情報８５Ａ（８５Ｂ）は、デコード結果等に係る情報及びパイプラインの状態に係る情報を含み、命令の実行に伴って命令更新回路８６Ａ（８６Ｂ）により適宜更新される。例えば、命令更新回路８６Ａ（８６Ｂ）は、命令の実行に伴って制御情報８５Ａ（８５Ｂ）におけるパイプラインの状態に係る情報（読み出し対象のレジスタ番号等）を更新する。命令更新回路８６Ａ（８６Ｂ）により更新された制御情報は、マルチプレクサ回路８４Ａ（８４Ｂ）を介して次の制御情報８５Ａ（８５Ｂ）として出力される。
【００５４】
また、命令デコードステージＩＤにおいて、指定信号制御回路９１Ａ（９１Ｂ）は、命令更新回路８６Ａ（８６Ｂ）により更新された制御情報を基に発行される読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）及びオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）が入力される。指定信号制御回路９１Ａ（９１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に応じて、読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）を読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）として出力するか、あるいは信号を変化させずに読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を維持する。
【００５５】
デコード回路８２より出力される読み出しオペランド指定信号ＲＯＰＲＡＡ及び指定信号制御回路９１Ａ（９１Ｂ）から出力される読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）が、マルチプレクサ回路９２Ａ（９２Ｂ）に入力される。マルチプレクサ回路９２Ａ（９２Ｂ）は、制御情報８５Ａ（８５Ｂ）を基に発行される演算器制御信号ＡＬＵＣ０（ＡＬＵＣ１）に応じて、読み出しオペランド指定信号ＲＯＰＲＡＡ又は読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）として出力する。
【００５６】
マルチプレクサ回路９２Ａ（９２Ｂ）から出力された読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）は、ベクトルレジスタファイル９３に入力される。そして、ベクトルレジスタファイル９３から読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）で指定されたレジスタに格納されているデータが読み出されて、マルチプレクサ回路９４Ａ（９４Ｂ）に入力される。また、マルチプレクサ回路９４Ａ（９４Ｂ）には、フォワーディング回路１００より出力されたデータが入力されている。マルチプレクサ回路９４Ａ（９４Ｂ）に入力されたベクトルレジスタファイル９３からのデータやフォワーディング回路１００からのデータは、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に応じて選択されソースデータ９５Ａ（９５Ｂ）として出力される。
【００５７】
なお、演算実行ステージＥＸ、メモリアクセスステージＭＡ、及びライトバックステージＷＢの各々は、第２の実施形態における演算実行ステージＥＸ、メモリアクセスステージＭＡ、及びライトバックステージＷＢと同様であるので説明は省略する。ここで、演算器９６Ａ、９６Ｂ、メモリアクセス回路９８Ａ、９８Ｂ、及び演算結果９７Ａ、９７Ｂ、９９Ａ、９９Ｂが、図３に示した演算器７５Ａ、７５Ｂ、メモリアクセス回路７７Ａ、７７Ｂ、及び演算結果７６Ａ、７６Ｂ、７８Ａ、７８Ｂにそれぞれ対応する。
【００５８】
第３の実施形態でのベクトルレジスタファイルに係る読み出し動作について詳しく説明する。
第３の実施形態によるプロセッサのように命令デコードステージＩＤにてレジスタファイルからのデータ読み出しを行うプロセッサでは、通常は遅延時間が増大するのを抑制するために命令のデコード処理とレジスタファイルからの読み出し処理とを並行して行う。したがって、発行制御回路８３によるフォワーディングを行うか否かの判定結果が得られてから、レジスタファイルに対する読み出し動作を行うようにすると処理が並列ではなくなり遅延時間が増大してしまう。
【００５９】
そこで、本実施形態におけるプロセッサでは、図５に示すように制御を行い、命令実行の１サイクル目ではフォワーディングを行うか否かにかかわらずベクトルレジスタファイル９３からのデータ読み出しを行う。そして、命令実行の２サイクル目以降では、フォワーディングを行うか否かの判定結果を基にフォワーディングを行う場合には、ベクトルレジスタファイル９３からのデータ読み出しに係る信号の変化を抑止するように制御する。
【００６０】
図５は、本実施形態における読み出し制御の一例を示すフローチャートである。図５に示す制御は、制御パスが制御情報を基に各制御信号を発行することにより実現される。
まず、制御が開始されると（Ｓ１）、デコーダ回路８２から出力される読み出しオペランド指定信号ＲＯＰＲＡＡを選択して出力するよう、マルチプレクサ回路９２Ａ（９２Ｂ）が制御される（Ｓ２）。そして、命令実行の１サイクル目であれば（Ｓ３のＹｅｓ）、通常通り読み出しオペランド指定信号ＲＯＰＲＡＡで指定されたレジスタのデータをベクトルレジスタファイル９３から読み出す（Ｓ６）。
【００６１】
続いて、命令に応じた所定のサイクル数だけ処理を実行したか否かが判定され、所定サイクル数の処理が終了していなければ（Ｓ８のＮｏ）、ステップＳ３に戻る。そして、命令実行の２サイクル目以降であれば（Ｓ３のＮｏ）、指定信号制御回路９１Ａ（９１Ｂ）から出力される読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を選択して出力するよう、マルチプレクサ回路９２Ａ（９２Ｂ）が制御される（Ｓ４）。次に、フォワーディングにより命令のソースデータが供給される、すなわちフォワーディングを行うと判定されていれば（Ｓ５のＹｅｓ）、指定信号制御回路９１Ａ（９１Ｂ）から出力される読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を変化させないように制御する（Ｓ７）。一方、ベクトルレジスタファイル９３からのデータを命令のソースデータとして供給する、すなわちフォワーディングを行わないと判定されていれば（Ｓ５のＮｏ）、通常通り読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）で指定されたレジスタのデータをベクトルレジスタファイル９３から読み出す（Ｓ６）。
【００６２】
ステップＳ６又はＳ７の処理を実行した後、命令に応じた所定のサイクル数だけ処理を実行したか否かが再び判定され、所定サイクル数の処理が終了していなければ（Ｓ８のＮｏ）ステップＳ３に戻り、所定サイクル数の処理が終了すると制御を終了する（Ｓ９）。
【００６３】
以下、命令のソースデータをベクトルレジスタファイル９３から読み出して供給する場合、及びフォワーディングにより供給する場合に分けて命令のソースデータ供給に係る一連の動作を説明する。
まず、ベクトルレジスタファイル９３からのデータを命令のソースデータとする場合には、ベクトルレジスタファイル９３からのデータを命令のソースデータとして供給することがオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）によって示される。このとき、指定信号制御回路９１Ａ（９１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、入力された読み出しオペランド指定信号ＲＯＰＲＡ０（ＲＯＰＲＡ１）を読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）として出力する。また、マルチプレクサ回路９２Ａ（９２Ｂ）は、演算器制御信号ＡＬＵＣ０（ＡＬＵＣ１）に基づき、命令実行の１サイクル目では読み出しオペランド指定信号ＲＯＰＲＡＡを、２サイクル目以降では読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を、読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）として出力する。これにより、読み出した命令を基に得られた読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）によって指定されるレジスタのデータがベクトルレジスタファイル９３から読み出されて出力される。そして、マルチプレクサ回路９４Ａ（９４Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、ベクトルレジスタファイル９３からのデータを選択し、ソースデータ９５Ａ（９５Ｂ）として出力する。
【００６４】
次に、フォワーディングにより命令のソースデータを供給する場合には、フォワーディングにより命令のソースデータを供給することがオペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）によって示される。このとき、指定信号制御回路９１Ａ（９１Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、前のサイクルで出力した読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を維持する。また、マルチプレクサ回路９２Ａ（９２Ｂ）は、演算器制御信号ＡＬＵＣ０（ＡＬＵＣ１）に基づき、命令実行の１サイクル目では読み出しオペランド指定信号ＲＯＰＲＡＡを、２サイクル目以降では読み出しオペランド指定信号ＲＯＰＲＡ０Ｂ（ＲＯＰＲＡ１Ｂ）を、読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）として出力する。マルチプレクサ回路９４Ａ（９４Ｂ）は、オペランド制御信号ＯＰＲＣ０（ＯＰＲＣ１）に従って、フォワーディング回路１００からのデータを選択し、ソースデータ９５Ａ（９５Ｂ）として出力する。
【００６５】
このように、フォワーディングにより命令のソースデータを供給する場合には、命令実行の１サイクル目において、ベクトルレジスタファイル９３からデータの読み出しを行うが、ソースデータ９５Ａ（９５Ｂ）としてはフォワーディング回路１００からのデータを選択して出力する。これにより、フォワーディングを行うか否かの判定結果を待つことなく、レジスタファイルからのデータ読み出しを行って処理が実行されるので、遅延時間が増大することを防止することができる。また、命令実行の２サイクル目以降では、第２の実施形態と同様に、ベクトルレジスタファイル９３に入力される読み出しオペランド指定信号ＲＯＰＲＢ０（ＲＯＰＲＢ１）及びベクトルレジスタファイル９３からの出力データにおいて、信号の変化は発生しない。したがって、ベクトルレジスタファイル９３からのデータ読み出しに係る信号（データを含む）が不要に変化することを抑止して無駄な電力消費を抑制することができ、プロセッサにおける消費電力を低減することができる。
【００６６】
前述した各実施形態における読み出し動作について、図６に示す。なお、図６においては、各実行パイプラインにおいてレジスタ読み出しが行われるステージ（命令デコードステージＩＤ又はレジスタ読み出しステージＲＲ）を示している。また、図６（Ａ）、（Ｂ）にはスカラプロセッサの場合を示しており、図６（Ｃ）、（Ｄ）にはベクトル実行パイプラインを２つ有するベクトルプロセッサの場合を示している。
【００６７】
なお、命令１：（ａｄｄ  ｒ１，ｒ２，ｒ３）及び命令２：（ａｄｄ  ｒ５，ｒ１，ｒ４）はスカラ演算を実行させる命令である。命令１：（ａｄｄ  ｒ１，ｒ２，ｒ３）は、レジスタｒ２の内容とレジスタｒ３の内容とを加算して、加算結果をレジスタｒ１に格納する演算処理を実行させる。同様に、命令２：（ａｄｄ  ｒ５，ｒ１，ｒ４）は、レジスタｒ１の内容とレジスタｒ４の内容とを加算して、加算結果をレジスタｒ５に格納する演算処理を実行させる。したがって、命令１→命令２の順に連続して命令が発行される場合には、命令１の演算結果を用いて命令２を実行する。
【００６８】
また、命令１：（ｖａｄｄ  ｒ１，ｒ２，ｒ３）及び命令２：（ｖａｄｄ  ｒ５，ｒ１，ｒ４）はベクトルデータを複数サイクルに渡って処理させる命令である。命令１：（ｖａｄｄ  ｒ１，ｒ２，ｒ３）は、レジスタｒ２の内容とレジスタｒ３の内容とを加算して、加算結果をレジスタｒ１に格納する演算処理を実行させる。同様に、命令２：（ｖａｄｄ  ｒ５，ｒ１，ｒ４）は、レジスタｒ１の内容とレジスタｒ４の内容とを加算して、加算結果をレジスタｒ５に格納する演算処理を実行させる。なお、命令１：（ｖａｄｄ  ｒ１，ｒ２，ｒ３）及び命令２：（ｖａｄｄ  ｒ５，ｒ１，ｒ４）はそれぞれ８サイクルで実行完了するものとする。したがって、命令１→命令２の順に連続して命令が発行される場合には、命令１の演算結果を用いて命令２を実行する。
【００６９】
図６（Ａ）に示す６ステージ構成のスカラプロセッサは、命令デコードステージＩＤとレジスタ読み出しステージＲＲとが分離しているので、命令２におけるレジスタ読み出しステージＲＲの前にフォワーディングを行うか否かの判定結果が得られている。したがって、第１サイクルでは命令１の処理を実行し、第２サイクルではレジスタからのデータ読み出しを行うことなく、フォワーディングにより供給される命令１の演算結果を用いて命令２の処理を実行する。そのため、命令１の処理を実行する第１サイクルでは通常の読み出しを行うためにレジスタファイルからのデータ読み出しに係る信号は変化する。しかし、命令２の処理を実行する第２サイクルではフォワーディングによりソースデータが供給されるので、レジスタファイルからのデータ読み出しに係る信号が変化することを抑止することができ、消費電力を低減することができる。
【００７０】
図６（Ｂ）に示す５ステージ構成のスカラプロセッサは、命令デコードステージＩＤにてレジスタからのデータ読み出しを実行するため、フォワーディングを行うか否かの判定結果に応じてレジスタからのデータ読み出しを行うように制御すると遅延時間が増大してしまう。したがって、第１サイクルで命令１の処理を実行し、フォワーディングにより供給された命令１の演算結果を用いて第２サイクルで命令２の処理を実行するとしても、遅延時間の観点からは命令２の処理の実行に際してレジスタファイルからのデータ読み出しを行うことが好ましい。すなわち、遅延時間を増大させることなく、命令１及び命令２の処理を実行するには、命令１の処理を実行する第１サイクル及び命令２の処理を実行する第２サイクルともに通常の読み出しを行うことが好ましく、レジスタファイルからのデータ読み出しに係る信号は各サイクルで変化することになる。なお、遅延時間が増大しても不都合がない場合には、フォワーディングを行うか否かの判定結果に応じてレジスタからのデータ読み出しを行うように制御し、命令２の処理を実行する第２サイクルでは、レジスタファイルからのデータ読み出しに係る信号が変化することを抑止するようにしても良い。
【００７１】
図６（Ｃ）に示す６ステージ構成のベクトルプロセッサは、第１〜第８サイクルにおいてベクトル実行パイプラインｐ０で命令１の処理を実行し、第２〜第９サイクルにおいてベクトル実行パイプラインｐ１で命令２の処理を実行する。６ステージ構成のベクトルプロセッサにおいては、命令デコードステージＩＤとレジスタ読み出しステージＲＲとが分離しているので、命令２におけるレジスタ読み出しステージＲＲの前にフォワーディングを行うか否かの判定結果が得られている。すなわち、命令１の処理はレジスタファイルからのデータを用いて実行し、命令２の処理はレジスタファイルからのデータ読み出しを行うことなく、フォワーディングにより供給される命令１の演算結果を用いて実行する。つまり、命令２の処理の実行においては、レジスタファイルからのデータ読み出しを行う必要が一切ない。したがって、第２〜第９サイクルにおける命令２の処理の実行では、レジスタファイルからのデータ読み出しに係る信号が変化することを抑止することができ、消費電力を低減することができる。
【００７２】
図６（Ｄ）に示す５ステージ構成のベクトルプロセッサは、第１〜第８サイクルにおいてベクトル実行パイプラインｐ０で命令１の処理を実行し、第２〜第９サイクルにおいてベクトル実行パイプラインｐ１で命令２の処理を実行する。このとき、命令１の処理はレジスタファイルからのデータを用いて実行し、命令２の処理はフォワーディングにより供給される命令１の演算結果を用いて実行する。このプロセッサは、命令デコードステージＩＤにてレジスタからのデータ読み出しを実行するため、フォワーディングを行うか否かの判定結果に応じてレジスタからのデータ読み出しを行うように制御すると遅延時間が増大してしまう。したがって、フォワーディングにより供給される命令１の演算結果を用いて命令２の処理を実行するとしても、命令２の１サイクル目（第２サイクル）においてはレジスタファイルからのデータ読み出しを行うことが遅延時間の観点からは好ましい。つまり、遅延時間を増大させることなく命令１及び命令２の処理を実行するには、命令２の実行に際して１サイクル目だけレジスタファイルからのデータ読み出しを行う。しかし、命令２の２サイクル目以降では、フォワーディングを行うとの判定結果が得られているので、レジスタファイルからのデータ読み出しを行う必要がない。したがって、第３〜第９サイクルにおける命令２の処理の実行では、レジスタファイルからのデータ読み出しに係る信号が変化することを抑止することができ、消費電力を低減することができる。
【００７３】
なお、各実施形態では、レジスタファイルからのデータ供給が不要なサイクルとして、先行する命令と後続の命令との間に真の依存関係があり、かつ先行する命令の演算結果がフォワーディングにより後続の命令のソースデータとして供給されるときを例に説明した。しかし、この例に限定されず、命令が発行されないサイクル等を含めてレジスタファイルからのデータの供給が不要なサイクルにおいて、レジスタファイルに入力される読み出しオペランド指定信号を前のサイクルと同じ状態に維持することで、無駄な電力消費を抑制しプロセッサにおける消費電力を低減することができる。
【００７４】
また、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００７５】
（付記１）
読み出された命令をデコードし、デコード結果を基に処理データが格納されているレジスタを指定する第１の指定信号を出力するデコード部と、
前記デコード部での前記デコード結果を基に発行された命令に従って、処理データを用いて当該命令に基づく処理を実行する処理部と、
前記デコード部より出力された前記第１の指定信号に応じて、第２の指定信号を制御し出力する指定信号制御部と、
処理データを保持する複数のレジスタを有するとともに、前記指定信号制御部より出力された前記第２の指定信号を受けて、当該第２の指定信号で指定されたレジスタに格納されている処理データを出力するレジスタファイルとを備え、
前記指定信号制御部は、前記レジスタファイルから前記処理部への処理データの供給が不要なサイクルでは、出力する前記第２の指定信号を維持することを特徴とするプロセッサ。
（付記２）
前記指定信号制御部は、出力した前記第２の指定信号を保持する保持部と、
前記保持部に保持した前記第２の指定信号及び前記デコード部より出力された前記第１の指定信号が入力され、当該前記第２の指定信号又は当該第１の指定信号を選択し前記レジスタファイルに前記第２の指定信号として出力する信号選択部とを有することを特徴とする付記１記載のプロセッサ。
（付記３）
前記処理部での処理結果をフォワーディングするフォワーディング部を備え、
前記フォワーディング部によるフォワーディングで前記処理部へ処理データが供給される場合には、前記指定信号制御部は、出力する前記第２の指定信号を維持することを特徴とする付記１又は２記載のプロセッサ。
（付記４）
前記レジスタファイルから出力された処理データを前記処理部に供給するか、又は前記フォワーディング部によるフォワーディングで前記処理部に処理データを供給するかを制御する制御信号に基づいて、前記指定信号制御部は、出力する前記第２の指定信号を制御することを特徴とする付記３記載のプロセッサ。
（付記５）
前記指定信号制御部は、前記処理部に対して命令が発行されないサイクルでは、出力する前記第２の指定信号を維持することを特徴とする付記１〜４の何れか１項に記載のプロセッサ。
（付記６）
前記プロセッサは、読み出された命令をパイプライン処理するとともに、命令デコードステージにて前記レジスタファイルからの処理データの読み出し動作を行うプロセッサであり、
複数のサイクルに渡って命令に係る処理が実行されるマルチサイクル命令を実行するとき、前記処理部に供給する処理データがフォワーディングにより供給される場合に、前記指定信号制御部は、１サイクル目では入力される前記第１の指定信号に合わせて出力する前記第２の指定信号を変化させ、２サイクル目以降では出力する前記第２の指定信号を維持することを特徴とする付記１〜５の何れか１項に記載のプロセッサ。
（付記７）
読み出された命令をデコードし、デコード結果を基に処理データが格納されているレジスタを指定する第１の指定信号を出力するデコード部と、
前記デコード部での前記デコード結果を基に発行された命令に従って、処理データを用いて当該命令に基づく処理を実行する処理部と、
前記デコード部より出力された前記第１の指定信号を第２の指定信号として出力する指定信号制御部と、
処理データを保持する複数のレジスタを有するとともに、前記指定信号制御部より出力された前記第２の指定信号を受けて、当該第２の指定信号で指定されたレジスタに格納されている処理データを出力するレジスタファイルとを備え、
前記指定信号制御部は、前記レジスタファイルから前記処理部への処理データの供給が不要なサイクルでは、前記第１の指定信号にかかわらず、前記第２の指定信号が変化することを抑止することを特徴とするプロセッサ。
【符号の説明】
【００７６】
１１  命令バッファ
２１  デコード回路
２２  発行制御回路
２３、２４  制御情報
３１、３２  指定信号制御回路
３３  レジスタファイル
３４  マルチプレクサ回路
３６  演算器
３８  メモリアクセス回路
４０  フォワーディング回路
【図１】
0005644571.tif 000002
【図２】
0005644571.tif 000003
【図３】
0005644571.tif 000004
【図４】
0005644571.tif 000005
【図５】
0005644571.tif 000006
【図６】
0005644571.tif 000007