JP2007280184A - プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 - Google Patents
プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 Download PDFInfo
- Publication number
- JP2007280184A JP2007280184A JP2006107535A JP2006107535A JP2007280184A JP 2007280184 A JP2007280184 A JP 2007280184A JP 2006107535 A JP2006107535 A JP 2006107535A JP 2006107535 A JP2006107535 A JP 2006107535A JP 2007280184 A JP2007280184 A JP 2007280184A
- Authority
- JP
- Japan
- Prior art keywords
- register
- vector
- signal
- group
- unit
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】並列動作可能な複数の演算ユニットを有するプロセッサにおいて、ベクトル要素毎に書き込み制御可能で自由度の高い書き込みを可能とすること。
【解決手段】本プロセッサはフェッチ部10と、並列動作可能な演算ユニットV_A〜V_Eと、レジスタファイル部100を含む。レジスタファイル部100は、ベクトルレジスタ制御信号を生成するデコード部110と、複数のベクトルレジスタVR0〜VR3と、書き込み制御回路120とを含む。複数のベクトルレジスタVR0〜VR3は、複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みしポートを有する。書き込み制御回路120は、ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタにデータを書き込む。
【選択図】図3
【解決手段】本プロセッサはフェッチ部10と、並列動作可能な演算ユニットV_A〜V_Eと、レジスタファイル部100を含む。レジスタファイル部100は、ベクトルレジスタ制御信号を生成するデコード部110と、複数のベクトルレジスタVR0〜VR3と、書き込み制御回路120とを含む。複数のベクトルレジスタVR0〜VR3は、複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みしポートを有する。書き込み制御回路120は、ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタにデータを書き込む。
【選択図】図3
Description
本発明は、プロセッサ、レジスタファイル回路、マイクロコンピュータ及び電子機器に関する。
従来のベクトルレジスタは先頭要素から順次読み出しまたは書き込みを行うように構成されていた。そのため途中の要素からの書き込みや読み出しが制限されていた。
またデータを受け渡すには外部メモリを経由してデータをやり取りする構成を採用しており、スカラレジスタとベクトルレジスタ間でのデータの受け渡しが困難であった。
比較例のベクトルプロセッサのデータパス部の構成を図34に示す。
複数のベクトルレジスタがベクトルレジスタ毎に読み出しポート、書き込みポートを有し、先頭のレジスタから順次読み出しを行いベクトル演算ユニットにデータを供給する構成となっている。また書き込みも演算ユニットの結果を先頭から順次書き込んでいく構成となっている。
またスカラ演算部1110とベクトル演算部1120が別に設けられ、それぞれにレジスタ(スカラレジスタSR0〜SR3、ベクトルレジスタVR0〜VR3)と演算器(スカラ演算器S_A、S_B、S_C,ベクトル演算器V_A、V_B、V_C、V_D、V_E)を有している。
そのため演算ユニットやレジスタの選択回路が増えてしまい回路規模が大きくなっていた。
特開平10−91442号
特開平10−207720号
特開平8−55107号
従来のようにベクトルレジスタへ途中の要素からの読み出しや書き込みが制限されていると、ベクトルレジスタの制約上ベクトル長より繰り返し数が少ないベクトル命令を発行すると差分の分だけベクトルレジスタが無駄になってしまうという問題点があった。
またスカラ演算部1110とベクトル演算部1120が別に設けられていると
演算ユニットやレジスタの選択回路が増えてしまい回路規模が大きくなってしまうという問題点があった。
演算ユニットやレジスタの選択回路が増えてしまい回路規模が大きくなってしまうという問題点があった。
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、並列動作可能な複数の演算ユニットを有するプロセッサ(ベクトル・プロセッサ)において、ベクトル要素毎に書き込み制御可能でベクトルレジスタの自由度の高い書き込みを可能とすることを目的とする。
(1)本発明は、
命令コードをフェッチするフェッチ部と、並列動作可能な演算ユニットと、レジスタファイル部を含むプロセッサであって、
前記レジスタファイル部は、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とする。
命令コードをフェッチするフェッチ部と、並列動作可能な演算ユニットと、レジスタファイル部を含むプロセッサであって、
前記レジスタファイル部は、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とする。
並列動作可能な演算ユニットは複数含むようにしてもよい。
ベクトルレジスタとは複数の要素レジスタを有し、1つのベクトル演算命令により複数の要素レジスタに対する読み出し、又は書き込みを順次的に行うことが可能に構成されたレジスタであり、サイクル毎に読み出し書き込みが可能になる。
ベクトル演算命令は、ベクトルレジスタを使用してベクトル演算を実行する命令であり、例えば開始要素番号(開始要素を任意に指定できる場合)、ベクトルレジスタの特定情報、対象となる演算ユニットの情報、繰り返し回数の情報等を命令コード(オペコード又はオペランド)等のベクトル演算を行うために必要な情報を含んでいる。
前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号とは例えば開始要素番号、ベクトルレジスタの特定情報、対象となる演算ユニットの情報、繰り返し回数の情報等である。
デコード部はベクトル演算命令をデコードして命令コードから上記情報を判断してベクトルレジスタ制御信号を生成する。
フェッチを一命令に限定すると、パイプライ制御の各サイクルにおいてデコード(こちらのほうが正しいですね。)される命令は1つなので、ライトバックステージで同じ要素グループへの書き込みが競合しないようにすることができる。
要素グループはグループ単位で例えば1つ(グループ単位で複数もっていてもよい)の書き込みポートを有する。
ベクトル演算の繰り返し回数に達するまで要素番号を順次繰り下げてデータが書き込まれ、書き込まれたデータは命令コードで指定されたベクトルレジスタの要素レジスタに書き込まれる。
本発明によれば、並列動作可能な複数の演算器を有するプロセッサ(ベクトル・プロセッサ)において、ベクトル要素毎に書き込みポートを設け、また発行された命令の情報を各ベクトル要素で制御を行うことでベクトルレジスタの自由度の高い書き込みを可能とすることができる。
例えば、要素毎に書き込みポートを有するので、同じサイクル内で同じベクトルレジスタの異なる要素レジスタに対して書き込みを行うことができる。
また開始要素を任意に指定可能な命令にも対応することができる。
なお前記複数のベクトルレジスタは、
各グループ毎の書き込みポートは演算ユニットから出力された演算結果を受けとり、
前記書き込み制御回路は、
選択された要素グループの選択されたベクトルレジスタの要素レジスタに、書き込みポート受け取る演算結果を書き込む制御を行うようにしてもよい。
各グループ毎の書き込みポートは演算ユニットから出力された演算結果を受けとり、
前記書き込み制御回路は、
選択された要素グループの選択されたベクトルレジスタの要素レジスタに、書き込みポート受け取る演算結果を書き込む制御を行うようにしてもよい。
(2)本発明のプロセッサは、
前記ベクトルレジスタ制御信号は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、
前記読み出し制御回路は、
当該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始対象となるグループを判断し、書き込み開始対象であると判断されたグループの要素レジスタに演算結果を書き込む制御を行うことを特徴とする。
前記ベクトルレジスタ制御信号は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、
前記読み出し制御回路は、
当該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始対象となるグループを判断し、書き込み開始対象であると判断されたグループの要素レジスタに演算結果を書き込む制御を行うことを特徴とする。
ここで各読み出しポートに対応した選択回路を有する場合には、
当該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始対象となる要素グループを判断し、書き込み開始対象であると判断された要素グループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
当該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始対象となる要素グループを判断し、書き込み開始対象であると判断された要素グループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
そして、次回以降は前回選択された要素グループの次のインデックスの要素グループが順次選択されるように制御するようにしてもよい。
前記ベクトルレジスタ制御信号は、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、
前記書き込み制御回路は、
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで各サイクル毎に書き込み対象となるグループを順次切り替えて、書き込み対象のグループに演算結果を書き込む制御を行うようにしてもよい。
前記書き込み制御回路は、
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで各サイクル毎に書き込み対象となるグループを順次切り替えて、書き込み対象のグループに演算結果を書き込む制御を行うようにしてもよい。
ここで各読み出しポートに対応した選択回路を有する場合には、
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで、各サイクル毎に書き込み対象となる要素グループを順次切り替えて、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで、各サイクル毎に書き込み対象となる要素グループを順次切り替えて、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
このようにすることで、命令コードで指定されたベクトル長に達するまでベクトルレジスタの各要素に対して巡回アクセスを行うことができる。
例えば命令コードで指定あれたベクトル長に達するまで、順次書き込み対象となる要素レジスタの要素番号をインクリメントさせて書き込みを行うようにしてもよい。
前記ベクトルレジスタ制御信号は、演算結果データの格納先となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、
前記書き込み制御回路は、
当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから書き込み対象となるベクトルレジスタの要素レジスタを選択して書き込む制御を行うようにしてもよい。
前記書き込み制御回路は、
当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから書き込み対象となるベクトルレジスタの要素レジスタを選択して書き込む制御を行うようにしてもよい。
ここで各読み出しポートに対応した選択回路を有する場合には、
当該ベクトルレジスタ特定情報に基づき、演算結果データを命令コードで指定されたベクトルレジスタの要素レジスタに格納するための選択制御信号を生成するようにしてもよい。
当該ベクトルレジスタ特定情報に基づき、演算結果データを命令コードで指定されたベクトルレジスタの要素レジスタに格納するための選択制御信号を生成するようにしてもよい。
前記ベクトルレジスタ制御信号は、格納対象となる演算結果を出力する演算ユニットを特定するための演算ユニット特定情報を含み、
前記書き込み制御回路は、
当該演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択してグループの要素レジスタに書き込むように制御するようにしてもよい。
前記書き込み制御回路は、
当該演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択してグループの要素レジスタに書き込むように制御するようにしてもよい。
ここで前記選択制御信号生成回路は、
当該演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択するための選択制御信号を所定のタイミングで出力するようにしてもよい。
当該演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択するための選択制御信号を所定のタイミングで出力するようにしてもよい。
(3)本発明のプロセッサは、
前記書き込み制御回路は、
同一のサイクルにおいて、所与の要素グループに対して発生した書き込みの競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
前記書き込み制御回路は、
同一のサイクルにおいて、所与の要素グループに対して発生した書き込みの競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
ベクトルレジスタに対して任意の要素を指定して、指定した要素から書き込みができるようにすると同じ要素グループに対して書き込みの競合が発生する場合がある。
本発明によれば、書き込みの競合があった場合にはフェッチ部及びデコード部に競合発生に信号を送り、デコードとプログラムのフェッチを例えば1サイクル遅らせることができる。このようなインターロック機能を入れることで、プログラマは書き込みの競合を意識することなくプログラムをコーディングできるためプログラム設計が容易になり、不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来るという効果がある。
(4)本発明のプロセッサは、
前記書き込み制御回路は、
同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクルを遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
前記書き込み制御回路は、
同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクルを遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
本発明によれば、演算ユニットの競合があった場合にはフェッチ部及びデコード部に競合発生に信号を送り、デコードとプログラムのフェッチを例えば1サイクル遅らせることができる。このようなインターロック機能を入れることで、プログラマは演算ユニットの競合を意識することなくプログラムをコーディングできるためプログラム設計が容易になり、不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来るという効果がある。
(5)本発明のプロセッサは、
前記レジスタファイル部は、
前記ベクトルレジスタと前記書き込みポートを共用するスカラレジスタを含むことを特徴とする。
前記レジスタファイル部は、
前記ベクトルレジスタと前記書き込みポートを共用するスカラレジスタを含むことを特徴とする。
書き込みポートを共用することにより、書き込みポートに設けられた選択回路もベクトルレジスタとスカラレジスタで共用することができる。
したがって通常のベクトルプロセッサのようにベクトルレジスタとスカラレジスタの書き込みポートを別に設ける構成に比べ回路規模削減が可能になる。
前記レジスタファイル部のデコード部は、
フェッチされたスカラレジスタ使用命令をデコードして、前記スカラレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なスカラレジスタ制御情報(スカラレジスタの特定情報、対象となる演算ユニットの情報)を生成し、
前記書き込み制御回路は、
前記スカラレジスタ制御情報に基づき、前記スカラレジスタに演算ユニットの実行結果データを書き込む制御を行う。
フェッチされたスカラレジスタ使用命令をデコードして、前記スカラレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なスカラレジスタ制御情報(スカラレジスタの特定情報、対象となる演算ユニットの情報)を生成し、
前記書き込み制御回路は、
前記スカラレジスタ制御情報に基づき、前記スカラレジスタに演算ユニットの実行結果データを書き込む制御を行う。
(6)本発明のプロセッサは、
前記スカラレジスタは、
前記ベクトルレジスタの先頭要素と前記書き込みポートを共用することを特徴とする。
前記スカラレジスタは、
前記ベクトルレジスタの先頭要素と前記書き込みポートを共用することを特徴とする。
このような構成をとることで通常の先頭要素から書き込みを行うベクトル命令の場合、ベクトル命令の第一要素の実行とスカラ命令の実行は通常のパイプライン処理と同じになり書き込みポートの競合が起こらない。
(7)本発明のプロセッサは、
前記スカラレジスタはベクトルレジスタと書き込みデータが格納される記憶部を共用することを特徴とする。
前記スカラレジスタはベクトルレジスタと書き込みデータが格納される記憶部を共用することを特徴とする。
本発明例えばベクトル命令のベクトル繰り返し数を1としてスカラ命令として機能させ、ベクトルレジスタをスカラレジスタとして機能させることにより実現する構成でもよい。
また演算ユニットはベクトル演算とスカラ演算で共用されるようにしてもよい。
(8)本発明のプロセッサは、
前記書き込み制御回路は、
各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、書き込み対象となるグループ内の要素レジスタを選択する選択回路と、
前記ベクトルレジスタ制御信号に基づき、前記各グループの選択回路が各グループの要素レジスタから書き込み対象となる要素レジスタを選択する際に選択制御を行うための選択制御信号を各グループに対応して生成し、生成した選択制御信号を対応する選択回路に与える選択制御信号生成回路と、を含むことを特徴とする。
前記書き込み制御回路は、
各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、書き込み対象となるグループ内の要素レジスタを選択する選択回路と、
前記ベクトルレジスタ制御信号に基づき、前記各グループの選択回路が各グループの要素レジスタから書き込み対象となる要素レジスタを選択する際に選択制御を行うための選択制御信号を各グループに対応して生成し、生成した選択制御信号を対応する選択回路に与える選択制御信号生成回路と、を含むことを特徴とする。
選択回路は各グループごとに個別に設けるようにしてもよい。また選択制御信号は各グループ毎に生成され、各選択回路には対応する選択制御信号が個別に与えられるようにしてもよい。
選択回路の出力には同一要素グループに属する複数の要素レジスタが接続され、選択制御信号に基づき、所与の要素レジスタが選択され、選択された要素レジスタにデータが書き込まれるように構成することができる。
(9)本発明のプロセッサは、
前記選択回路は、
入力が複数の演算ユニットからの演算結果出力に接続され、
各グループに与えられた選択制御信号に基づき、所与の演算ユニットを選択して選択した演算ユニットから演算結果を受け付けることを特徴とする。
前記選択回路は、
入力が複数の演算ユニットからの演算結果出力に接続され、
各グループに与えられた選択制御信号に基づき、所与の演算ユニットを選択して選択した演算ユニットから演算結果を受け付けることを特徴とする。
選択回路は各要素グループに1つ設けられ、入力は複数の演算ユニットの演算結果データが接続され、出力は対応する要素グループの要素レジスタに接続されるように構成することができる。そして選択制御信号に基づき、所与の演算結果データを選択して受け付け、所与の要素レジスタを選択して出力するように構成することができる。
(10)本発明のプロセッサは、
前記選択制御信号生成回路は、
第1から第Nの各グループに対して各グループが書き込み対象であるかいなか判断し、書き込み対象である場合には対応するグループの選択回路に対し選択制御信号をを動作させるための選択制御信号を所定のタイミングで出力する第1〜第Nのグループ判定回路を含み、
第n(n=1〜N)のグループ判定回路は、
デコード部及び第n−1のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第nのグループが書き込み対象であるか否か判断する書き込み判断部と、
前記ベクトルレジスタ制御信号に基づき要素レジスタへの書き込みがベクトル繰り返し数に達したか否かを判断し、達していない場合にはn+1のグループ判定回路にたいしベクトルレジスタ制御信号を出力する繰り返し終了判断部と、
を含むことを特徴とする。
前記選択制御信号生成回路は、
第1から第Nの各グループに対して各グループが書き込み対象であるかいなか判断し、書き込み対象である場合には対応するグループの選択回路に対し選択制御信号をを動作させるための選択制御信号を所定のタイミングで出力する第1〜第Nのグループ判定回路を含み、
第n(n=1〜N)のグループ判定回路は、
デコード部及び第n−1のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第nのグループが書き込み対象であるか否か判断する書き込み判断部と、
前記ベクトルレジスタ制御信号に基づき要素レジスタへの書き込みがベクトル繰り返し数に達したか否かを判断し、達していない場合にはn+1のグループ判定回路にたいしベクトルレジスタ制御信号を出力する繰り返し終了判断部と、
を含むことを特徴とする。
所定のタイミングとは、例えばパイプラインにおけるライトバックステージでもよい。このようにするとライトバックステージにおいて演算ユニットの出力する演算結果データをベクトルレジスタの要素レジスタに書き込むことができる。
グループ判定回路は各要素グループ(又は各要素グループに設けられた選択回路)に対応して設けるようにしてもよい。
例えば各ベクトルレジスタの要素数がnである場合要素グループの数もnとなり、グループ判定回路もn個設けることができる。
なお例えば各グループ判定回路は、デコード部からベクトルレジスタ制御信号として、書き込み開始要素信号、演算ユニット信号(使用する演算ユニットを特定する信号)、レジスタセレクト信号(使用するベクトルレジスタを特定する信号)、ベクトル繰り返し数(ベクトル長)を受け取る。
各グループ判定回路は、
レジスタセレクト信号(使用するベクトルレジスタを特定する信号)とベクトル繰り返し数(ベクトル長)に基づいて書き込み対象であるか否か判断する判断回路、ベクトル繰り返し数(ベクトル長)信号から1を減算する減算回路、デコード部からのベクトルレジスタ制御信号と前のグループ要素のグループ判定回路からのベクトルレジスタ制御信号を選択する選択回路を含むようにしてもよい。
レジスタセレクト信号(使用するベクトルレジスタを特定する信号)とベクトル繰り返し数(ベクトル長)に基づいて書き込み対象であるか否か判断する判断回路、ベクトル繰り返し数(ベクトル長)信号から1を減算する減算回路、デコード部からのベクトルレジスタ制御信号と前のグループ要素のグループ判定回路からのベクトルレジスタ制御信号を選択する選択回路を含むようにしてもよい。
(11)本発明は、
並列動作可能な複数の演算ユニットを有するプロセッサのレジスタファイル回路であって、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とする。
並列動作可能な複数の演算ユニットを有するプロセッサのレジスタファイル回路であって、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とする。
(12)本発明は、
上記のいずれかに記載のプロセッサまたはレジスタファイル回路を含むことを特徴とする集積回路装置である。
上記のいずれかに記載のプロセッサまたはレジスタファイル回路を含むことを特徴とする集積回路装置である。
(13)本発明は、
上記に記載の集積回路装置を含むことを特徴とするマイクロコンピュータである。
上記に記載の集積回路装置を含むことを特徴とするマイクロコンピュータである。
(14)本発明のプロセッサは、
上記に記載のマイクロコンピュータと、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器である。
上記に記載のマイクロコンピュータと、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器である。
1.プロセッサ、レジスタファイル
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
図1は、本実施の形態のプロセッサの構成について説明するための図である。
本実施の形態のCPUコア(プロセッサの一例)1は、フェッチ部10を含む。フェッチ部10はフェッチレジスタ12に命令コードをフェッチする。
本実施の形態のCPUコア10は、並列動作可能な複数の演算ユニットV_A、V_B、・・・、V_Eを含む。
本実施の形態のCPUコア10は、レジスタファイル部100を含む。
図2はレジスタファイルの構成を示す図である。
前記レジスタファイル部100は、デコード部110を含む。
デコード部110は、フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御及び演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御の少なくとも一方をおこなうために必要なベクトルレジスタ制御信号112−w、112−rを生成する。
前記レジスタファイル部100は、書き込み制御部120(書き込み制御回路の一例)を含む。
書き込み制御部120は、ベクトルレジスタ制御信号112−wに基づき、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御を行うもので、ベクトルレジスタ制御信号に112−w基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれる(演算結果)データを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行う。
前記レジスタファイル部100は、読み出し制御部130(読み出し制御回路の一例)を含む。
読み出し制御部130は、ベクトルレジスタ制御信号112−rに基づき、演算ユニットV_A〜V_Eに出力するデータを前記ベクトルレジスタから読み出す制御を行うもので、ベクトルレジスタ制御信号112−rに基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行う。
前記レジスタファイル部100は、複数のベクトルレジスタ(ここではベクトルレジスタVR0、VR1、VR2、VR3)を含む。
ベクトルレジスタVR0は複数の要素レジスタVR00、VR01、VR02、VR03を含む。ベクトルレジスタVR1は複数の要素レジスタVR10、VR11、VR12、VR13を含む。ベクトルレジスタVR2は、複数の要素レジスタVR20、VR21、VR22、VR23を含む。ベクトルレジスタVR3は、複数の要素レジスタVR30、VR31、VR32、VR33を含む。
前記複数のベクトルレジスタは、複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に演算ユニットから出力された演算結果データを受け付ける書き込みポートや読み出しポートを有する。
なおベクトル命令(ベクトルレジスタを使用する命令)でベクトル繰り返し数を1として、ベクトルレジスタをスカラレジスタとして使用するようにしてもよい。
また例えばSR0、SR1、SR2、SR3のようにベクトルレジスタと書き込みポートを共用するスカラレジスタを含むようにしてもよい。
図3は本実施の形態の書き込み/読み出しデータパスを示す図である。
同図に示すように複数のベクトルレジスタVR0、VR1、VR2、VR3は各要素毎にグループ化され(300は各ベクトルレジスタの要素1のグループであり、310は各ベクトルレジスタの要素2のグループであり、320は各ベクトルレジスタの要素2のグループであり、330は各ベクトルレジスタの要素3のグループである)、各グループ毎に書き込みポート及び読み出しポートを有している。
V_A、V_B、V_C、V_Dは並列動作可能な演算ユニットである。またV_Eはロード・ストアユニットである。
ベクトルレジスタ(VR0〜VR3)は要素毎に書き込みセレクタSELdn(n=0〜3)、読み出しセレクタSELrn(n=0〜3)に接続される。またベクトルレジスタ(VR0〜VR3)の先頭要素のセレクタSELd0、SELr0にはスカラレジスタSR0〜SR3も接続され、レジスタ選択の読み出しポートを共通化している。
書き込みセレクタSELd0〜SELd2は、各要素グループの書き込みポートに設けられ、その出力がグループ内の複数の要素レジスタに接続され、各グループに与えられた選択制御信号に基づき、各グループの書き込みポートが受け取った信号の書き込み先となるグループ内の要素レジスタを選択する選択回路として機能する。図示しない選択制御信号に基づいて、複数の演算ユニットV_A、V_B、V_C、V_Dの演算結果データから所与の演算結果データを選択し、選択した演算結果データを複数の同一要素番号の要素レジスタから所与の要素レジスタを選択して書き込む。
書き込みセレクタSELdn(n=0〜3)の出力は対応する要素グループの各要素レジスタに接続される。
各書き込みセレクタSELd0〜SELd3には、並列動作可能な複数の演算ユニットV_A、V_B、V_C、V_Dからの演算結果が入力され、図示しないベクトルセレクタ制御信号に基づいて出力先となるベクトルレジスタの要素レジスタを選択して書き込む。
読み出しポートには、複数のベクトルレジスタから所定の要素のデータを受け付け所与のベクトルレジスタの値を選択して出力する読み出しセレクタSELrn(n=0〜3)を有している。
読み出しセレクタSELrn(n=0〜3)は、各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、読み出し対象となるグループ内の要素レジスタを選択する選択回路として機能する。図示しないベクトルセレクタ制御信号に基づいて所与のベクトルレジスタの要素レジスタの値を選択して読み出す。すなわち読み出しセレクタSELrn(n=0〜3)によって、同一要素グループ内の読み出し対象の要素レジスタの選択を行うことができる。
また各演算ユニットV_A、V_B、V_C、V_Dそれぞれに対応したソース入力選択回路SEL_A、SEL_B、SEL_C、SEL_Dを含む。
ソース入力選択回路SEL_A、SEL_B、SEL_C、SEL_Dは、読み出しセレクタSELrn(n=0〜3)の出力を受け付け、図示しない選択制御信号に基づきその中から所与セレクタSELrn(n=0〜3)の出力を、それぞれの対応する演算ユニット(SEL_AはV_A、SEL_BはV_B、SEL_CはV_C、SEL_DはV_D)のソース入力として選択する。
すなわちソース入力選択回路SEL_A、SEL_B、SEL_C、SEL_Dによって、読み出しセレクタSELr0〜SELr3で選択された信号から演算ユニットへのソース信号を選択することができる。
2.書き込み制御
2−1.書き込み制御部の構成
図4は本実施の形態の書き込みデータパスについて説明するための図である。
2−1.書き込み制御部の構成
図4は本実施の形態の書き込みデータパスについて説明するための図である。
ベクトルレジスタVR0はベクトル長が4(要素数が4つ(VR0(0)、VR0(1)、VR0(2)、VR0(3))のベクトルレジスタである。同様にベクトルレジスタVR1、ベクトルレジスタVR2、ベクトルレジスタVR3もベクトル長が4(要素数が4つ)のベクトルレジスタである。
G0は各ベクトルレジスタの要素0のグループであり、G1は各ベクトルレジスタの要素1のグループであり、G2は各ベクトルレジスタの要素2のグループであり、G3は各ベクトルレジスタの要素3のグループである。
本実施の形態では、複数のベクトルレジスタVR0、VR1、VR2、VR3は、要素毎にグループ化され、各グループ毎に演算ユニットから出力された演算結果データを受け付ける書き込みポートを有する。
書き込みポートからの演算結果データは書き込み選択回路(SELd0〜SELd3)によって選択され、命令コードで指令されたベクトルレジスタの要素レジスタに書き込まれる。
図34は比較例の書き込みデータパスの構成を示す図である。
比較例ではベクトルレジスタ毎にグループ化を行い、同じベクトルレジスタの要素レジスタの集合として設定されたグループ毎に書き込みポートを設けて、各演算ユニットV_A、V_B、V_C、V_Dからの演算結果データを受け付ける。 書き込みポートにはセレクタ(図35のSELd0〜SELd3)が設けられ、各演算ユニットV_A、V_B、V_C、V_Dの演算結果データから所与の演算結果データを選択肢、ベクトルレジスタの複数の要素レジスタの中から所与の要素レジスタを選択して出力する。
本実施の形態では要素番号を同じくする要素レジスタ毎に書き込みポート(セレクタでもよい)を設けるのに対し、比較例ではベクトルレジスタ毎に書き込みポート(セレクタでもよい)に対応してセレクタを設ける点で相違する。
従って、比較例では同じベクトルレジスタの異なる要素レジスタに対しては同じステージ内で書き込みを行うことができないにたいし、本実施の形態では同じステージ内で同じベクトルレジスタの異なる要素に書き込みを行うことができる。
また比較例ではベクトルレジスタに対して先頭要素レジスタからしか書き込みを行うことしかできないが、本実施の形態では任意の要素レジスタから書き込みを行うことができる。
図5は本実施の形態のパイプライン構成の一例である。
本実施の形態では、4段のパイプライン処理(フェッチステージ210、デコードステージ212、実行ステージ214、ライトバックステージ216)が行われる。フェッチステージ210ではフェッチユニットが外部メモリ(キャッシュ)から命令を読み出しフェッチレジスタに書き込む。デコードステージ212ではフェッチレジスタの内容をデコーダがデコードし、レジスタ制御情報(ここではベクトル要素開始アドレス(ADRS)、演算ユニット信号(UNIT)とレジスタセレクト信号(SEL)、繰り返し数AMOUNT)を出力する。
実行ステージではレジスタから読み出されたデータが演算ユニットに入力され演算が実行される。
ライトバックステージ216では、実行ステージでの演算結果がレジスタにライトバックされる。
図6は書き込み制御部の選択制御信号生成回路の構成を説明するための図である。
選択制御信号生成回路122は、ベクトルレジスタ制御信号112−wに基づき、前記各選択回路(図4の書き込み選択回路(SELd0〜SELd3))に与える選択制御信号を生成する処理を行う。
ベクトルレジスタ制御信号112−wは、演算結果データの格納先となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、選択制御信号生成回路122は、当該ベクトルレジスタ特定情報に基づき、演算結果データを命令コードで指定されたベクトルレジスタに格納するための選択制御信号を生成するようにしてもよい。
図7はレジスタセレクト信号SEL(ベクトルレジスタ特定情報の一例)具体例である。レジスタセレクト信号SELは複数のベクトルレジスタから所与のベクトルレジスタを特定するための信号である。
ベクトルレジスタVR0〜VR3の先頭要素とスカラレジスタSR0〜SR3が読み出しポートを共用している。したがって例えばスカラレジスタSR0を特定するための信号は'000'であり、スカラレジスタSR1を特定するための信号は'001'であり、スカラレジスタSR2を特定するための信号は'010'であり、スカラレジスタSR3を特定するための信号は'011'であり、ベクトルレジスタVR0を特定するための信号は'100'であり、ベクトルレジスタVR1を特定するための信号は'101'であり、ベクトルレジスタVR2を特定するための信号は'110'であり、ベクトルレジスタVR3を特定するための信号は'111'である。また'100'〜'111'はInvalidを示しており、対応する要素グループが選択されていないことを示す。したがってSEL信号がInvalidである選択制御信号を受け取った書き込み選択回路は、書き込みを行わないように制御し、SEL信号がInvalidである選択制御信号を受け取った読み出し選択回路は、読み出しを行わないように制御するようにしてもよい。
またベクトルレジスタ制御信号112−rは、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、選択制御信号生成回路122は、記繰り返し回数特定情報に基づき、各サイクル毎に書き込み対象となる要素グループを順次切り替えて、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
図8はベクトル繰り返し数信号AMOUNT(繰り返し回数特定情報の一例)の具体例である。ベクトル繰り返し数信号AMOUNTはベクトルレジスタへの書き込みの繰り返し回数を特定するための信号であり、例えば繰り返し回数が'4'の場合には'11'であり、繰り返し回数が'3'の場合には'10'であり、繰り返し回数が'2'の場合には'01'であり、繰り返し回数が'1'の場合には'00'である
ベクトルレジスタ制御信号112は、格納対象となる演算結果を出力する演算ユニットを特定するための演算ユニット特定情報を含み、選択制御信号生成回路122は、演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択するための選択制御信号を所定のタイミングで出力するようにしてもよい。
ベクトルレジスタ制御信号112は、格納対象となる演算結果を出力する演算ユニットを特定するための演算ユニット特定情報を含み、選択制御信号生成回路122は、演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択するための選択制御信号を所定のタイミングで出力するようにしてもよい。
図9は演算ユニット信号UNITの具体例である。演算ユニット信号UNITは書き込み対象となる演算結果を出力する演算ユニット(UNIT)を特定するコード220であり、例えば演算ユニットV_Aを特定するためのコードは'000'であり、演算ユニットV_Bを特定するためのコードは'001'であり、演算ユニットV_Cを特定するためのコードは'010'であり、演算ユニットV_Dを特定するためのコードは'011'である。
ベクトルレジスタ制御信号112は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、選択制御信号生成回路122は、該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始時に書き込み対象となる要素グループを判断し、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
図10は、ベクトル要素開始アドレス信号ADRS(開始要素番号特定情報の一例)の具体例である。ベクトル要素開始アドレス信号ADRSは読み出し又は書き込み開始の要素番号を特定する信号である。例えば第1要素からの読み出し/書き込みである場合には'00'、第2要素からの読み出し/書き込みである場合には'01'、第3要素からの読み出し/書き込みである場合には'10'、第4要素からの読み出し/書き込みである場合には'11'である。
デコード部110はベクトルレジスタ制御信号112−rとして書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT等の情報を出力する。
選択制御信号生成回路122は、要素毎のグループに対応した第nのグループ判定回路(n=0〜3)COMP0〜3、第nのデコードステージ制御レジスタ(n=0〜3)0−D〜3−D、第nの実行ステージ制御レジスタ0−E〜3−E、リソースアナライザ70を含む。
選択制御信号生成回路122は、第1から第Nの各グループに対して各グループが書き込み対象であるかいなか判断し、書き込み対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力するグループ判定回路COMP0〜3を含むように構成することができる。
第n(n=0〜3)のグループ判定回路COMP0〜3は、デコード部110及び第n−1のグループ判定回路が出力するベクトルレジスタ制御信号112−w(ベクトル要素開始アドレス信号ADRS)に基づき第nのグループが書き込み対象であるか否か判断する書き込み判断部と、ベクトルレジスタ制御信号112−w(ベクトル繰り返し数信号AMOUNT)に基づき要素レジスタへの書き込みがベクトル繰り返し数に達したか否かを判断し、達していない場合にはn+1のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部として機能する。
第nのグループ判定回路COMP0〜3は読み出し開始要素信号ADRS、ベクトル繰り返し信号AMOUNTを比較する比較回路、ベクトル繰り返し信号AMOUNTから1を減算する減算回路、デコード部112からの信号と第nのデコードステージ用制御レジスタからの信号を選択する選択回路を含むようにしてもよい。
第nのグループ判定回路COMP0〜3は、ベクトル要素開始アドレス(ADRS)が当該第nのグループ判定回路COMP0〜3の出力先となるグループの要素番号と一致する場合には、対応するデコードステージ制御レジスタ0−D〜3−Dに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
ここでデコード部からの信号に含まれたレジスタセレクト信号SELと、第nのデコードステージ用制御レジスタからの信号に含まれたレジスタセレクト信号SELが一致する場合には、同じ要素グループに対する書き込みに競合が発生したことになる。第nのグループ判定回路COMP0〜3は、かかる競合を検出した場合にはリソース信号71−nを出力する。リソース信号71−nはリソースアナライザ70に入力される。
第nのグループ判定回路COMP0〜3の入力は、デコード部112からのレジスタ制御信号32(書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT)に接続され、出力は第nのグループ判定回路COMP0〜3各比較器に対応した第nデコードステージ制御レジスタ0−D〜3−D及びリソースアナイザ70に接続されている。
第nのグループ判定回路COMP0〜3の出力には第nのデコードステージ制御レジスタn−Dが接続される。
第nのデコードステージ制御レジスタn−Dの出力は対応する第nの実行ステージ制御レジスタn−Eと、第n+1のグループ判定回路COMPn+1(なお最後のグループ判定回路に対応した実行ステージ制御レジスタの値は第1のグループ判定回路COM1に接続される)と、リソースアナライザに接続される。
第nの実行ステージ制御レジスタnーEの出力OUTn−wは、それぞれSELrn(図2,3,4参照)の選択制御信号となる。
フェッチステージ(図5210)ではフェッチ部10が図示しない外部メモリ(キャッシュ)から命令を読み出しフェッチレジスタ12に書き込む。
デコードステージではフェッチレジスタ12の内容をデコード部110がデコードし、レジスタ制御信号112−wとして、ベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
第nのグループ判定回路(n=0〜3)COMP0〜3は、ベクトル要素開始アドレス(ADRS)が当該第nのグループ判定回路COMP0〜3の出力先となるグループの要素番号と一致する場合には、対応するデコードステージ制御レジスタ0−D〜3−Dに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
第nのデコードステージ制御レジスタn−Dの出力は、リソースアナライザ70及び対応する第nの実行ステージ制御レジスタn−Eに接続されている。
実行ステージ(図5の212)では第nのデコードステージ制御レジスタ0−D〜3−Dから第nの実行ステージ制御レジスタ0−E〜0−Eに制御信号が保持される。
ライトバックステージ(図5の216)では0−E〜3−Eの値が制御信号OUT0〜OUT3として出力され、選択回路(図2、3、4のSELd0〜SELd2)の選択制御信号となる。OUT0-w〜OUT3-wに含まれるセレクト信号UNITが、図2、34のSELd0からSELd3の選択回路の選択制御信号となる。
そして選択回路(図2、3、4のSELd0〜SELd2)は選択制御信号に含まれたレジスタセレクト信号SELに基づいて書き込み先となるベクトルレジスタを選択して出力する。
なおSEL信号はデコードされライト・イネーブル信号となりレジスタの書き込み制御をおこなう。
リソースアナライザ70及び第nのグループ判定回路(n=0〜3)COMP0〜3は、同一のサイクルにおいて、同一の演算ユニットに対する演算実行の競合を検出して、競合発生信号72を生成する競合発生信号生成部70として機能する。
リソースアナライザ70は、第nのグループ判定回路(n=0〜3)COMP0〜3から出力された要素競合発生信号71−0〜71−3を受け取り、同一要素グループに対する書き込みの競合があった場合には競合発生信号72をフェッチ部10、デコード部110に対して出力する。
フェッチ部10は、競合発生信号72を受けると次の命令コードのフェッチのサイクル遅らせる制御を行うようにしてもよい。
またデコード部110は、競合発生信号72を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うようにしてもよい。
図11は、第nのグループ判定回路における判定のアルゴリズムである。
まず第n−1のデコードステージレジスタ(n-1)-Dから、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTの入力を受け、デコード部からベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを受け付ける(ステップS10)。
第n−1のデコードステージレジスタ(n-1)-Dのベクトル繰り返し数信号AMOUNT=0であるか否か判断する(ステップS20)。
AMOUNT=0である場合には、デコード部から受け取ったベクトル要素開始アドレス信号ADRS=第n要素であるか否か判断する(ステップS30)。
そしてADRS=第n要素である場合には、デコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS40)。
ADRS=第n要素でない場合には、セレクト信号SELをInvalid信号に変更する(ステップS50)。
そしてデコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL(この場合Invalidである)、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS60)。
ステップS20において、第n−1のデコードステージレジスタ(n-1)-Dのベクトル繰り返し数信号AMOUNT=0でない場合には、AMOUNTから1減算する(ステップS70)。
そしてデコード部から受け取ったベクトル要素開始アドレス信号ADRS=第n要素であるか否か判断する(ステップS80)。
ベクトル要素開始アドレス信号ADRS=第n要素である場合には、デコードステージレジスタ(n-1)-Dの値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力1を選択する(ステップS90)。
ベクトル要素開始アドレス信号ADRS=第n要素でない場合には、デコードステージレジスタ(n-1)-Dの値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS100)。
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを第nのデコードステージレジスタに出力するとともに、リソース信号を出力する(ステップS110)。
このようにステップS40では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号は選択条件を満たさないので、デコード部から受け取ったレジスタ制御信号が選択される(したがって当該グループがベクトルレジスタの最初の書き込みグループとして選択される)。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'(リソースの競合なし)となる。
またステップS60では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさず、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たさないので、当該グループは選択されずSEL信号がInvalidになる。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'(リソースの競合なし)となる。
またステップS90では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こるのでリソース信号は'1'(リソースの競合あり)となる。
またステップS100では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさないが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号は選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こらないのでリソース信号は'0'(リソースの競合なし)となる。
2−2.ベクトル命令時の書き込み例
ベクトル命令時の各種レジスタへの書き込みタイミングについて、演算ユニットV_A、デスティネーションがベクトルレジスタVR2の第2要素から始まるベクトル長4の命令を例にとり説明する。
ベクトル命令時の各種レジスタへの書き込みタイミングについて、演算ユニットV_A、デスティネーションがベクトルレジスタVR2の第2要素から始まるベクトル長4の命令を例にとり説明する。
図12は、ベクトル命令時の各レジスタへの書き込みタイミングを説明するための図である。
410はフェッチレジスタの値をデコードしたビット列であり、ADRS_SEL_UNIT_AMOUNTである。
また420はデコードステージ制御レジスタに保持される信号のビット列であり、SEL_UNIT_AMOUNTである。
また430は実行ステージ制御レジスタに保持される信号のビット列であり、SEL_UNITである。
また440は実行ステージ制御レジスタから出力される出力信号のビット列であり、SEL_UNITである。
450は書き込み先となるベクトルレジスタである。
サイクル1においてデコード部のレジスタに'01_110_000_11’格納されている(460参照)。ベクトル要素開始アドレス信号ADRSが'01'(第2要素)、レジスタセレクト信号SELが’110'(VR2)、演算ユニット信号UNITが'000'(V_A)、ベクトル繰り返し数信号AMOUNTが'11'(4)を示しており、演算ユニットV_Aの検算結果をベクトルレジスタVR2の第2要素から開始して4回に達するまで順次インクリメントした要素ベクトルに書き込むというベクトル命令が発行されたことを示している。
ベクトル要素開始アドレス信号ADRSが'01'(第2要素)であるので、サイクル2において第2要素に対応したグループ判定回路COMPで選択され、第2要素に対応したデコードステージ制御レジスタ1-Dに'110_000_11’が格納される(462参照)。そしてデコード制御ステージレジスタの'110_000_11’はサイクル3において対応する実行ステージ制御レジスタに'110_000’が格納され(464参照)、同じサイクル内でOUT1−w信号(466参照)として出力される。
OUT1−w信号は第2要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'010'に対応したベクトルレジスタの第2要素VR21)が選択され、UNITの'000'に対応した演算ユニットV_Aの演算結果が書き込まれる(468参照)。
またサイクル2の第2のデコードステージ制御レジスタ1-Dの値がサイクル3において第3のデコードステージ制御レジスタ2-Dに格納される(470参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'10’(3)になっている。
そしてデコードステージ制御レジスタ2-Dの'110_000_10’は、サイクル4において対応する実行ステージレジスタ2-Eに'110_000’としてが格納され(472参照)、同じサイクル内でOUT2−w信号(474参照)として出力される。
OUT2信号は第3要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'110'に対応したベクトルレジスタの第3要素VR22が選択され、UNITの'00'に対応した演算ユニットV_Aの演算結果が書き込まれる(476参照)
またサイクル3の第3のデコードステージ制御レジスタ2-Dの値がサイクル4において第4のデコードステージ制御レジスタ3-Dに格納される(480参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'01’(2)になっている。
またサイクル3の第3のデコードステージ制御レジスタ2-Dの値がサイクル4において第4のデコードステージ制御レジスタ3-Dに格納される(480参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'01’(2)になっている。
そしてデコードステージ制御レジスタ3-Dの'110_000_01’はサイクル5において対応する実行ステージ制御レジスタ3-Eに'110_000’として格納され(482参照)、同じサイクル内でOUT3−w信号(484参照)として出力される。
OUT3信号は第4要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'010'に対応したベクトルレジスタの第4要素VR23が選択され、UNITの'00'に対応した演算ユニットV_Aの演算結果が書き込まれる(486参照)
またサイクル4の第4のデコードステージ制御レジスタが巡回して、サイクル5において第1のデコードステージ制御レジスタ0-Dに格納される(490参照)(本実施の形態ではベクトルレジスタのベクトル長が4なので第4要素まできたら第1の要素に戻る)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'00’(1)になっている。
またサイクル4の第4のデコードステージ制御レジスタが巡回して、サイクル5において第1のデコードステージ制御レジスタ0-Dに格納される(490参照)(本実施の形態ではベクトルレジスタのベクトル長が4なので第4要素まできたら第1の要素に戻る)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'00’(1)になっている。
そしてデコードステージ制御レジスタ0-Dの'110_000_00’はサイクル6において対応する実行ステージレジスタ0-Eに'110_000’として格納され(492参照)、同じサイクル内でOUT0−w信号(494参照)として出力される。
OUT0−w信号は第1要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'110'に対応したベクトルレジスタの第1要素VR20が選択され、UNITの'00'に対応した演算ユニットV_Aの演算結果が書き込まれる(496参照)
2−3.書き込みポート競合対策
図13は、本実施の形態においてベクトル命令が連続して発行された場合のパイプライン処理の例について説明するための図である。フェッチ(F)、デコード(D)、実行(E)、ライトバック(W)の4段パイプラインの場合を例にとり説明する。
図13は、本実施の形態においてベクトル命令が連続して発行された場合のパイプライン処理の例について説明するための図である。フェッチ(F)、デコード(D)、実行(E)、ライトバック(W)の4段パイプラインの場合を例にとり説明する。
図13では、ベクトル長4のベクトル命令A(1510)の次にベクトル長4のベクトル命令B(1520)が実行されるケースを示している。
この場合サイクル1でフェッチされたベクトル命令A(1510)は、サイクル2でデコードされ、サイクル3で実行され、サイクル4で実行結果がベクトルレジスタの先頭要素にライトバックされる(1512参照)。
次にベクトル命令A(1510)の2番目の要素が、サイクル3でデコードされ、サイクル4で実行され、サイクル5で実行結果がベクトルレジスタの2番目の要素にライトバックされる(1514参照)。
同様にベクトル命令A(1510)の3番目の要素が、サイクル4でデコードされ、サイクル5で実行され、サイクル5で実行結果がベクトルレジスタの3番目の要素にライトバックされる(1516参照)。
同様にベクトル命令A(1510)の4番目の要素が、サイクル5でデコードされ、サイクル6で実行され、サイクル7で実行結果がベクトルレジスタの4番目の要素にライトバックされる(1518参照)。
またサイクル2でフェッチされたベクトル命令B(1520)は、サイクル3でデコードされ、サイクル4で実行され、サイクル5でベクトルレジスタにライトバックされる。
次にベクトル命令B(1520)の2番目の要素が、サイクル4でデコードされ、サイクル5で実行され、サイクル6で実行結果がベクトルレジスタの2番目の要素にライトバックされる(1524参照)。
同様にベクトル命令B(1520)の3番目の要素が、サイクル5でデコードされ、サイクル6で実行され、サイクル7で実行結果がベクトルレジスタの3番目の要素にライトバックされる(1526参照)。
同様にベクトル命令B(1520)の4番目の要素が、サイクル6でデコードされ、サイクル7で実行され、サイクル8で実行結果がベクトルレジスタの4番目の要素にライトバックされる(1528参照)。
ここでベクトル演算時の開始要素が固定されているとすると、図13に示すように各サイクルにおいて、同じ要素番号のグループが選択されることはない。
また例えばベクトル命令Aとベクトル命令Bが同じベクトルレジスタ(例えばVR1)を使用していたとしても、同じサイクル内では異なる要素レジスタが選択され書き込みが行われる。
したがって、ベクトル演算命令の開始要素を固定することにより、同一要素番号でグループ化して書き込みポートをもうけてもベクトル演算同士で書き込みの競合の発生を防ぐことができる。
ところが、本実施の形態ではベクトル演算命令の開始要素を任意に指定することも可能である。この場合書き込みポートの選択回路の使用に競合が発生する場合がある。
図14は、書き込みポートの選択回路の使用に競合が発生する場合のプログラム例である。
最初の命令1010でベクトルレジスタVR1の第一要素から読み出し、第2命令1020でベクトルレジスタVR1の第2要素から読み出している。
すなわち図13におけるサイクル5において、ベクトル命令A(1510)ではベクトルレジスタVR1の第2の要素に書き込み要求が発生し、ベクトル命令B(1520)はベクトルレジスタVR1の第2の要素に書き込み要求が発生する。このようにサイクル5においては、書き込むベクトル要素番号が同一になるため書き込みの競合が起こる。
そのため本実施例ではグループ判定回路(図6のCOMP0〜COMP3)で競合を検出し、リソース信号(図6の71−0〜71−3)をリソースアナライザー(図6の70)に入力している。リソースアナライザーでは各グループ判定信号のORを取り、競合があった場合にはフェッチ部10とデコード部110に競合発生信号72を送る。フェッチ部10とデコード部110では、競合発生信号72を受け取るとそれぞれデコードとプログラムのフェッチを1サイクル遅らせる制御を行う。
このようなインターロック機能を入れることで不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来る効果がある。
2−4.スカラレジスタとベクトルレジスタの書き込みポートの共用
上記実施の形態ではスカラレジスタを持たず、ベクトル命令のベクトル繰り返し数を1としてベクトルレジスタをスカラレジスタとして使用することで、スカラ命令の実行と同機能の処理を実現することができた。
上記実施の形態ではスカラレジスタを持たず、ベクトル命令のベクトル繰り返し数を1としてベクトルレジスタをスカラレジスタとして使用することで、スカラ命令の実行と同機能の処理を実現することができた。
しかしベクトルレジスタとは別にスカラレジスタを有し、ベクトルレジスタと書き込みポートを共有する構成も本発明の範囲内である。
図15は、ベクトルレジスタとスカラレジスタが書き込みポートを共有する構成のデータパス部を示す。
同図に示すようにスカラレジスタSR0、SR1、SR2、SR3をベクトルレジスタの第一要素VR0(0)、VR1(0)、VR2(0)、VR3(0))のグループG1にグループ化し書き込みポートを共通化している。
また例えばベクトルレジスタVR0を特定するための信号は'100'であり、ベクトルレジスタVR1を特定するための信号は'101'であり、ベクトルレジスタVR2を特定するための信号は'110'であり、ベクトルレジスタVR3を特定するための信号は'111'である。
図16は、本実施の形態においてベクトル命令に続いてスカラ命令が発行された場合のパイプライン処理の例について説明するための図である。フェッチ(F)、デコード(D)、実行(E)、ライトバック(W)の4段パイプラインの場合を例にとり説明する。また図14に示すようにスカラレジスタはベクトルレジスタの第1の要素グループにグループ化され、ベクトルレジスタの第1の要素レジスタと書き込みポートを共用しているものとする。
ベクトル長4のベクトル命令A(1510)の次にスカラ命令1〜3(1530〜1550)が実行されるケースを示している。
この場合サイクル1でフェッチされたベクトル命令A(1510)は、サイクル2でデコードされ、サイクル3で実行され、サイクル4で実行結果がベクトルレジスタの先頭要素にライトバックされる(1512参照)。
次にベクトル命令A(1510)の2番目の要素が、サイクル3でデコードされ、サイクル4で実行され、サイクル5で実行結果がベクトルレジスタの2番目の要素にライトバックされる(1514参照)。
同様にベクトル命令A(1510)の3番目の要素が、サイクル4でデコードされ、サイクル5で実行され、サイクル5で実行結果がベクトルレジスタの3番目の要素にライトバックされる(1516参照)。
同様にベクトル命令A(1510)の4番目の要素が、サイクル5でデコードされ、サイクル6で実行され、サイクル7で実行結果がベクトルレジスタの4番目の要素にライトバックされる(1518参照)。
またサイクル2でフェッチされたスカラ命令1(1530)は、サイクル3でデコードされ、サイクル4で実行され、サイクル5でスカラレジスタ(ベクトルレジスタの第1の要素レジスタと書き込みポートを共用するスカラレジスタ)にライトバックされる。
またサイクル3でフェッチされたスカラ命令2(1540)は、サイクル4でデコードされ、サイクル5で実行され、サイクル6でスカラレジスタ(ベクトルレジスタの第1の要素レジスタと書き込みポートを共用するスカラレジスタ)にライトバックされる。
またサイクル4でフェッチされたスカラ命令3(1550)は、サイクル5でデコードされ、サイクル6で実行され、サイクル7でスカラレジスタ(ベクトルレジスタの第1の要素レジスタと書き込みポートを共用するスカラレジスタ)にライトバックされる。
ここでベクトル演算時の開始要素が固定されているとすると、図16に示すように各サイクルにおいて、同じ要素番号のグループが選択されることはない。したがって、ベクトル演算時の開始要素が固定することにより、同一要素番号でグループ化して書き込みポートをもうけてもベクトル演算とスカラ演算で書き込みの競合の発生を防ぐことができる。
2−5.5段パイプライン
上記実施の形態では4段パイプラインを想定してきたが、図17に示すような5段パイプラインでも実現することができる。
上記実施の形態では4段パイプラインを想定してきたが、図17に示すような5段パイプラインでも実現することができる。
図17では図5で説明した4段のパイプラインに加えて実行ステージEX2(215)がさらに追加になっている。
図18は、5段パイプラインの場合の選択制御信号生成部の構成を説明するための図である。
図6と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
追加された実行ステージ用に第2の実行ステージ制御レジスタ0−E2、1−E2、2−E2、3−E2が追加されている。このようにプロセッサのパイプライン構成を変更しても、対応するステージの制御レジスタを追加することで容易に対応することが出来る。
図19はベクトル命令の先頭の書き込み要素が固定されている場合の選択制御信号生成部の構成である。
図6、18と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
図19の構成とことなるのはデコード部から直接レジスタ制御信号を受け取るのが先頭のグループのグループ判定回路(図18ではCOMP0)のみである点である。2番目以降のグループのグループ判定回路(図18ではグループ判定回路ではCOMP1〜COMP3)では前のグループ判定回路のデコードステージ制御レジスタ0−D〜2−Dからレジスタ制御信号を受け取る。
またこのように先頭の書き込み要素が固定されている場合には、図19で説明したように書き込み対象となるグループの競合も起こらない。したがって各グループ判定回路COMP0〜COMP3は選択回路の競合は検出しない。
しかし演算ユニットの競合は起こりえるので、各グループ判定回路COMP0〜COMP3は、受け取ったレジスタ制御信号のUNIT情報をUNIT信号72−0〜72−3としてリソースアナライザにむけ出力する。
3.読み出し制御
3−1.読み出し制御部の構成
図20は本実施の形態の読み出し制御部の選択制御信号生成回路の構成の一例を説明するための図である。
3−1.読み出し制御部の構成
図20は本実施の形態の読み出し制御部の選択制御信号生成回路の構成の一例を説明するための図である。
図20ではベクトルレジスタの先頭要素から読み出しを行うように設定されている構成について説明する。
選択制御信号生成回路132は、ベクトルレジスタ制御信号112−rに基づき、各選択回路の選択制御信号を生成する処理を行う。
ベクトルレジスタ制御信号112−rは、演算結果データの読み出し対象となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、選択制御信号生成回路は、当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから読み出し対象となるベクトルレジスタの要素レジスタを選択するための選択制御信号を生成するようにしてもよい。
本実施の形態のレジスタセレクト信号SEL(ベクトルレジスタ特定情報の一例)具体例は図7と同様であり説明を省略する。
またベクトルレジスタ制御信号112−rは、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、選択制御信号生成回路は、記繰り返し回数特定情報に基づき、各サイクル毎に読み出し対象となる要素グループを順次切り替えて、読み出し対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
本実施の形態のベクトル繰り返し数信号AMOUNT(繰り返し回数特定情報の一例)の具体例は、図8と同様であり説明を省略する。
ベクトルレジスタ制御信号112−rは、読み出したデータをソース信号として演算を行う演算ユニットを特定するための演算ユニット特定情報を含み、選択制御信号生成回路は、当該演算ユニット特定情報に基づき、ソース信号選択回路が、グループの読み出しデータからを対応する演算ユニットのソース信号となる読み出しデータを選択するための選択制御信号を生成して所定のタイミングで出力するようにしてもよい。
本実施の形態の演算ユニット信号UNITの具体例は、図9と同様であり説明を省略する。
フェッチステージではフェッチ部10が外部メモリ(キャッシュ等も含む)から命令をフェッチレジスタ12に書き込む。
デコードステージではデコード部110は、フェッチレジスタ12の内容をデコード部110でデコードし、ベクトルレジスタ制御信号112−rとして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTの情報を出力する。
読み出し制御部は、制御レジスタ1-0〜1-2、グループ判定回路COMP1〜COMP3、リソースアナライザ70を含む。
デコード部110から出力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTは制御レジスタ1-0に保持され、また演算ユニット信号UNIT、レジスタセレクト信号SELはOUT0-r(先頭要素のグループの読み出しポートに設けられた選択回路に与える選択制御信号である)に出力されそれぞれのセレクタSELr0とSELs0の選択信号となる。
次のサイクルでは制御レジスタ1-0の信号をグループ判定回路COMP1-rにおいて比較を行い、比較結果に基づいてOUT1-r(SEL,UNIT)、制御レジスタ1-1にSEL,UNIT,AMOUNT信号を出力する。
また次のサイクルでは制御レジスタ1-1の信号をCOMP2-rで比較を行い比較結果に基づきOUT2-r、制御レジスタ1-2に信号を出力する。
図21は、グループ判定回路COMPnの動作いついて説明するためのフローチャート図である。
グループ判定回路COMPn-rは、制御レジスタ1-nに格納された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTを受け取ると、ベクトル繰り返し数AMOUNT=0か否か判断する(ステップS210、S220)。
ベクトル繰り返し数AMOUNT=0である場合には演算ユニット信号UNITにInvalidを選択する(ステップS230)。
ベクトル繰り返し数AMOUNT=0でない場合にはベクトル繰り返し数AMOUNTから1を減算する(ステップS240)。
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTを出力する(ステップS250)。演算ユニット信号UNIT、レジスタセレクト信号SELはOUTn-rとしてグループn-1の読み出しポートの選択回路及び各演算ユニットのソース入力選択回路の選択制御信号となるとともに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTは次の制御レジスタ1-(n+1)に保持される。
図22は、本実施の形態のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
1210はデコード部のレジスタに保持される信号のビット列であり、SEL_UNIT_AMOUNTである。
また1220は制御レジスタに保持される信号のビット列であり、SEL_UNIT_AMOUNTである。
また1230は選択制御信号のビット列であり、SEL_UNITである。
1240は読み出し対象となるベクトルレジスタである。
サイクル1においてデコード部のレジスタに'110_001_11’格納されている(1250参照)。レジスタセレクト信号SELが’110'(VR2)、演算ユニット信号UNITが'001'(V_B)、ベクトル繰り返し数信号AMOUNTが'11'(4)を示しており、ベクトルレジスタVR2の先頭要素から4回に達するまで順次インクリメントして要素ベクトルから読み出したデータをソースとして演算ユニットV_Bで演算を行うという命令が発行されたことを示している。
サイクル1においてデコード部から受け取ったレジスタ制御信号'110_001_10’は、同じサイクル内でOUT0−r信号'110_001’(1254参照)として出力される
OUT0−r信号は先頭要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの先頭要素VR20が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1254参照)。
OUT0−r信号は先頭要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの先頭要素VR20が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1254参照)。
デコード部から受け取ったレジスタ制御信号'110_001_11’は、サイクル2において制御レジスタ1-0に格納される(1260参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'10’(3)になっている。
そして制御レジスタの'110_000_10’は、同じサイクル2においてOUT1−r信号(1262参照)として出力される。
OUT1−r信号は第2要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第2要素VR21が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1264参照)。
制御レジスタ1-0のレジスタ制御信号'110_001_10’は、サイクル3において制御レジスタ1-1に格納される(1270参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'01’(2)になっている。
そして制御レジスタの'110_000_01’は、同じサイクル3においてOUT2−r信号(1272参照)として出力される。
OUT2−r信号は第3要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第3要素VR22が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1274参照)。
制御レジスタ1-1のレジスタ制御信号'110_001_01’は、サイクル4において制御レジスタ1-2に格納される(1280参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'00’(1)になっている。
そして制御レジスタの'110_000_00’は、同じサイクル4においてOUT3−r信号(1282参照)として出力される。
OUT3−r信号は第4要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第4要素VR23が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1284参照)。
3−2.演算ユニット信号のデコード
本実施の形態では、演算ユニット信号UNIT(演算ユニット特定情報の一例)に基づき、各演算ユニットごとに使用の有無を示す1ビットのマスク信号を生成し、選択回路SELs0からSELs3(ソース入力選択回路の一例)は、対応する演算ユニットのマスク信号に基づき、入力のマスク制御を行うようにしてもよい。
本実施の形態では、演算ユニット信号UNIT(演算ユニット特定情報の一例)に基づき、各演算ユニットごとに使用の有無を示す1ビットのマスク信号を生成し、選択回路SELs0からSELs3(ソース入力選択回路の一例)は、対応する演算ユニットのマスク信号に基づき、入力のマスク制御を行うようにしてもよい。
図23〜図25は、演算ユニット信号をデコードしてマスク信号を生成する構成について説明するための図である。
本実施の形態では、各演算ユニットV_A〜V_Dに対応して設けられたソース選択回路SELs0〜SELs3は、図23に示すように選択制御信号OUT1〜OUT4に含まれる演算ユニット信号UNITをデコードしてそれぞれマスク信号UNIT_CODE1〜UNIT_CODE4を生成する。
図24においてCODEは選択制御信号OUT1〜OUT4に含まれる演算ユニット信号であり、DECODEは、CODEをデコードして生成されたマスク信号UNIT_CODE1〜UNIT_CODE4である。
そしてデコードされた信号は図25に示すように最下位ビットから順に各演算ユニットに対応したマスク信号として接続しなおし、このマスク信号をもとにSELs0からSELs3の選択回路で各ベクトル要素の選択を行う。
ソース選択回路SELs0〜SELs3では、各演算ユニットに対応したマスク信号の束(V_A MASK、V_B MASK、V_C MASK、V_D MASK)に基づき、自己が対応する演算ユニットのマスク信号の値が’0’であるか’1’であるかによって、入力信号のマスクの有無を制御する処理を行う。
3−3.スカラ命令、ベクトル命令が混在する場合
図26にスカラ命令とベクトル命令が連続的に発行される例を示す。
図26にスカラ命令とベクトル命令が連続的に発行される例を示す。
ここでスカラレジスタは図2に示すようにベクトルレジスタの先頭要素(第1の要素)と同じグループにグループ化され、読み出しセレクタ(SELr0)を共用しているとする。
第1命令としては演算ユニットV_Aのベクトル長4のベクトル命令が発行される。第2命令としてユニットV_Bのスカラ命令が発行される。この場合第2命令がデコードステージのとき(1310)、第1命令のベクトル命令は第2のデコードステージ(D2)であり(1320参照)レジスタの読み出しはSELr1(2番目の要素のグループに設けられたセレクタ)で行われる(読み出しの場合にはデコードステージにおいてベクトルレジスタからの読み出しが行われる)。
また第2命令のレジスタ命令の読み出し1310のデコードステージで、SELr0(先頭のグループに設けられたセレクタ)で行われる。
図2に示すようにこのようにベクトルレジスタと読み出しポートを共用するスカラレジスタを含む場合にスカラレジスタとベクトルレジスタの先頭要素(第1の要素)とが読み出しポートを共用するように構成すると、スカラ命令とベクトル命令が連続的に発行されても、レジスタ選択回路の競合が起こらず処理することができる。
また第1命令と第3命令では同じベクトルレジスタVR0,VR1の読み出しを行っているが、図1の従来の構成ではこのような同じベクトルレジスタから複数の読み出しを行うことは出来ない。
また第3命令としては演算ユニットV_Dのベクトル長4のベクトル命令が発行される。ここで第1命令と第3命令では同じベクトルレジスタVR0,VR1を使用して読み出しを行っているが、同じサイクル内で第1命令と第3命令が同じベクトルレジスタの同じ要素レジスタから読み出しを行うことはない。言い換えれば第1命令と第3命令は同じサイクル内では同じベクトルレジスタの異なる要素レジスタからの読み出しを行う。
図34の従来の構成ではこのような同じベクトルレジスタの異なる要素から同時に読み出しを行うことは出来ないが、本実施の形態では要素グループごとに設けられた読み出し選択回路に競合がおこらないので、同一サイクル内において同じベクトルレジスタから複数の異なる要素要素レジスタのよみだしを行うことができる。
3−3.演算ユニット用セレクタ回路(ソース選択回路)の競合
本実施の形態では演算ユニット選択回路SELs0〜SELs3(ソース入力選択回路)の競合が起こる可能性がある。このような問題は演算ユニットの競合がおこらないように十分考慮されたプログラムを作成することや、ユニット競合を回避するようにコンパイルすることで回避することも可能である。
本実施の形態では演算ユニット選択回路SELs0〜SELs3(ソース入力選択回路)の競合が起こる可能性がある。このような問題は演算ユニットの競合がおこらないように十分考慮されたプログラムを作成することや、ユニット競合を回避するようにコンパイルすることで回避することも可能である。
本実施の形態では、読み出し制御回路は、同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、フェッチ部は、前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、デコード部は競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことで演算ユニットの競合を自動的にプログラム時の配慮やコンパイラによらずとも回避することができる。
例えば図20に示すように、本実施の形態の読み出し制御回路では各ベクトル要素でのUNIT情報を保持しているため、ユニットの競合を検出する回路を追加することで容易に回避することが出来る。
具体的には各制御レジスタ(図20の1−0、1−1、1−2)のUNIT信号をデコード部110から出力されるUNIT信号と比較し同一信号があった場合には、デコード部110とフェッチ部10に競合発生信号72を送りデコードとフェッチを無効にしプログラムの進行を1サイクル遅らせユニットの競合を回避するようにしてもよい。
このような機構を取り入れることでユニット競合を回避することが出来、コンパイラーで解決する方法に比べ、NOP命令を挿入する必要が無くなりプログラムサイズを小さくすることが出来る。
3−4.途中アクセス、巡回アクセス
図27は、読み出し開始要素を任意に指定可能な構成の読み出し制御部の選択制御信号生成回路132の構成を説明するための図である。
図27は、読み出し開始要素を任意に指定可能な構成の読み出し制御部の選択制御信号生成回路132の構成を説明するための図である。
図20と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
図20と異なるのは、第1の要素のグループに対応したグループ判定回路COMP0が設けられ、デコード部110でデコードされたベクトルレジスタ制御信号112−rが、各グループのグループ判定回路COMP0からCOMP3に入力される点である。またベクトルレジスタの読み出し開始要素を指定するベクトル要素開始アドレス信号ADRS信号が追加されている。
ベクトルレジスタ制御信号112−rは、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、選択制御信号生成回路は、該開始要素番号特定情報に基づき、ベクトルレジスタからの読み出し開始時に読み出し対象となる要素グループを判断し、読み出し対象であると判断されたグループの読み出しポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
本実施のベクトル要素開始アドレス信号ADRS(開始要素番号特定情報の一例)の具体例は、図10と同様であり説明を省略する。
読み出し制御部の選択制御信号生成回路132は、第1から第Nの各グループに対して各グループが読み出し対象であるかいなか判断し、読み出し対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力する第1〜第Nのグループ判定回路COMP1〜4を含むように構成することができる。
第n(n=0〜N)のグループ判定回路COMP0〜3を含むように構成することができる。
デコード部110及び第n−1のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第nのグループが読み出し対象であるか否か判断する読み出し判断部と、前記ベクトルレジスタ制御信号に基づき要素レジスタからの読み出しがベクトル繰り返し数に達したか否かを判断し、達していない場合にはn+1のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部として機能する。
デコード部110はベクトルレジスタ制御信号112−rとして書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT等の情報を出力する。
選択制御信号生成回路132は、要素毎のグループに対応した第nのグループ判定回路(n=0〜3)COMP0〜3、第nの制御レジスタ1−n(n=0〜3)、リソースアナライザ70を含む。
第nのグループ判定回路COMP0〜3は読み出し開始要素信号ADRS、ベクトル繰り返し信号AMOUNTを比較する比較回路、ベクトル繰り返し信号AMOUNTから1を減算する減算回路、デコード部112からの信号と第nの用制御レジスタ1−(n−1)からの信号を選択する選択回路からなっている。
第nのグループ判定回路COMP0〜3は、ベクトル要素開始アドレス(ADRS)が当該第nのグループ判定回路COMP0〜3の出力先となるグループの要素番号と一致する場合には、選択制御信号OUTnとして演算ユニット信号UNIT、レジスタセレクト信号SELを出力する。
そして次のサイクルで対応する制御レジスタ1−nに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
ここでデコード部からの信号に含まれたレジスタセレクト信号SELと、第nのデコードステージ用制御レジスタからの信号に含まれたレジスタセレクト信号SELが一致する場合には、同じ要素グループに対する書き込みに競合が発生したことになる。第nのグループ判定回路COMP0〜3は、かかる競合を検出した場合にはリソース信号71−nを出力する。リソース信号71−nはリソースアナライザ70に入力される。
第nの制御レジスタ1−nの出力は次のグループ判定回路COMP0〜3の入力となる。なお最後のグループ判定回路COMP3の制御レジスタ1−3の出力は先頭のグループ判定回路COMP0の入力となるようにしてもよい。
グループ判定回路COMP0〜3の力OUT0-r〜3-rは、SELrn(図2,3,4参照)の選択制御信号となる。
フェッチステージではフェッチ部10が図示しない外部メモリ(キャッシュ)から命令を読み出しフェッチレジスタ12に書き込む。
デコードステージではフェッチレジスタ12の内容をデコード部110がデコードし、レジスタ制御信号112として、ベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力し、ベクトル要素開始アドレス信号ADRSに対応したグループ判定回路COMPnが選択制御信号OUTn-rを出力する。
リソースアナライザ70及び第nのグループ判定回路(n=0〜3)COMP0〜3は、同一のサイクルにおいて、同一の演算ユニットに対する演算実行の競合を検出して、競合発生信号72を生成する競合発生信号生成部70として機能する。
リソースアナライザ70は、第nのグループ判定回路(n=0〜3)COMP0〜3から出力された要素競合発生信号71−0〜71−3を受け取り、同一要素グループに対する書き込みの競合があった場合には競合発生信号72をフェッチ部10、デコード部110に対して出力する。
フェッチ部10は、競合発生信号72を受けると次の命令コードのフェッチのサイクル遅らせる制御を行うようにしてもよい。
またデコード部110は、競合発生信号72を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うようにしてもよい。
図28は、読み出し制御部の第nのグループ判定回路における判定のアルゴリズムである。
まず第n−1の制御レジスタ1-(n-1)から、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTの入力を受け、デコード部からベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを受け付ける(ステップS310)。
第n−1の制御レジスタ1-(n-1)のベクトル繰り返し数信号AMOUNT=0であるか否か判断する(ステップS320)。
AMOUNT=0である場合には、デコード部から受け取ったベクトル要素開始アドレス信号ADRS=第n要素であるか否か判断する(ステップS330)。
ADRS=第n要素である場合には、デコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS340)。
ADRS=第n要素でない場合には、セレクト信号SELをInvalid信号に変更する(ステップS350)。
そしてデコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL(この場合Invalidである)、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS360)。
ステップS320において、制御レジスタ1-(n-1)のベクトル繰り返し数信号AMOUNT=0でない場合には、AMOUNTから1減算する(ステップS370)。
そしてデコード部から受け取ったベクトル要素開始アドレス信号ADRS=第n要素であるか否か判断する(ステップS380)。
ベクトル要素開始アドレス信号ADRS=第n要素である場合には、制御レジスタ1-(n-1)の値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力1を選択する(ステップS390)。
ベクトル要素開始アドレス信号ADRS=第n要素でない場合には、制御レジスタ1-(n-1)の値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する(ステップS400)。
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを第nの制御レジスタに出力するとともに、リソース信号を出力する(ステップS410)。
このようにステップS340では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループの制御レジスタから受け取ったレジスタ制御信号は選択条件を満たさないので、デコード部から受け取ったレジスタ制御信号が選択される(したがって当該グループがベクトルレジスタの最初の読み出しグループとして選択される)。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'(リソースの競合なし)となる。
またステップS360では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさず、前のグループの制御レジスタから受け取ったレジスタ制御信号も選択条件を満たさないので、当該グループは選択されずSEL信号がInvalidになる。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'(リソースの競合なし)となる。
またステップS390では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こるのでリソース信号は'1'(リソースの競合あり)となる。
またステップS400では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループの制御レジスタから受け取ったレジスタ制御信号は選択条件を満たすので、前のグループの制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こらないのでリソース信号は'0'(リソースの競合なし)となる。
例えばベクトルレジスタの第三要素から読み出す場合、デコード部はベクトルレジスタ制御信号として、SELが'110'(VR2)、ADRSが'10'(第三要素)でAMOUNTが'11’(ベクトル長4)となる信号を出力する。
そしてこの場合グループ判定回路COPM3がデコード部から出力されるADRSと制御レジスタ1−2から出力されるAMOUNT信号を比較し、デコード部でデコードされたSEL,UNIT信号をOUT3に出力し、同時にSEL,UNIT,AMOUNT信号を制御レジスタ1-3に保持する。
そして次のステージでは制御レジスタ1-3のAMOUNT信号をCOMP4で比較を行い、SEL,UNIT信号をOUT4に出力し、AMOUNTから1減算し、SEL,UNIT,AMOUNTを制御レジスタ1-4に書き出す。
さらに次のサイクルでは制御レジスタ1-4の信号を同様にCOMP1で比較選択を行い、OUT1,制御レジスタ1-1に出力する。以上をAMOUNTが0になるまで行う。
このような制御を行うことでベクトルレジスタの途中からアクセス及び巡回アクセスが可能になる。
図29は、読み出し開始要素を任意に指定可能な構成のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
ベクトル長4でVR2をソースとするV_Bユニットの命令動作時の制御レジスタと出力信号の読み出しレジスタの関係を示す。またベクトルレジスタの読み出しにおいてベクトル長を(AMOUNT)を0にすることでベクトルレジスタをスカラレジスタとして扱うことが出来る。
1410はデコード部のレジスタに保持される信号のビット列であり、ADRS_SEL_UNIT_AMOUNTである。
また1420は制御レジスタに保持される信号のビット列であり、SEL_UNIT_AMOUNTである。
また1430は選択制御信号のビット列であり、SEL_UNITである。
1440は読み出し対象となるベクトルレジスタである。
サイクル1においてデコード部のレジスタに'10_110_001_11’格納されている(1450参照)。ベクトル要素開始アドレス信号ADRSが'10'(第3要素)、レジスタセレクト信号SELが’110'(VR2)、演算ユニット信号UNITが'001'(V_B)、ベクトル繰り返し数信号AMOUNTが'11'(4)を示しており、ベクトルレジスタVR2の第3要素から4回に達するまで順次インクリメントして要素ベクトルから読み出したデータをソースとして演算ユニットV_Bで演算を行うという命令が発行されたことを示している。
サイクル1においてデコード部から受け取ったレジスタ制御信号'10_110_001_10’は、同じサイクル内でOUT2−r信号'110_001’(1454参照)として出力される
OUT2−r信号は第3要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第3要素VR22が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1454参照)。
OUT2−r信号は第3要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第3要素VR22が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1454参照)。
デコード部から受け取ったレジスタ制御信号'10_110_001_11’は、サイクル2において制御レジスタ1-2に格納される(1460参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'10’(3)になっている。
そして制御レジスタ1-2の'110_000_10’は、同じサイクル2においてOUT3−r信号(1462参照)として出力される。
OUT3−r信号は第4要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第4要素VR23が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1464参照)。
制御レジスタ1-2のレジスタ制御信号'110_001_10’は、サイクル3において制御レジスタ1-3に格納される(1470参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'01’(2)になっている。
そして制御レジスタの'110_000_01’は、同じサイクル3においてOUT0−r信号(1472参照)として出力される。
OUT0−r信号は第1要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第1要素VR20が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1474参照)。
制御レジスタ1-3のレジスタ制御信号'110_001_01’は、サイクル4において制御レジスタ1-1に格納される(1480参照)。ただしベクトル繰り返し数信号AMOUNTは1だけデクリメントされた値'00’(1)になっている。
そして制御レジスタの'110_000_00’は、同じサイクル4においてOUT1−r信号(1482参照)として出力される。
OUT1−r信号は第2要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第4要素VR21が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットV_Bのソース信号となる(1484参照)。
3−5.読み出しポートの競合及び回避
図30にレジスタ選択回路が競合する場合のプログラム例を示す。これは第一命令でVR0,VR1を第一要素から順に読み出し、第2命令でVR2,VR3の第2要素から読み出す。この場合第2命令の第一デコードステージで読み出すベクトル要素番号が同一になるためレジスタ選択回路の競合が起こる。
図30にレジスタ選択回路が競合する場合のプログラム例を示す。これは第一命令でVR0,VR1を第一要素から順に読み出し、第2命令でVR2,VR3の第2要素から読み出す。この場合第2命令の第一デコードステージで読み出すベクトル要素番号が同一になるためレジスタ選択回路の競合が起こる。
本実施例ではCOMP0〜COMP3で競合を検出し、リソース信号をリソースアナライザーに入力している。リソースアナライザーでは各信号のオアを取り、競合があった場合にはフェッチ部とデコード部に競合発生信号を送り、デコードとプログラムの信号を1サイクル遅らせる。各グループ判定回路COMPでの読み出し競合の検出は先に発行された命令を優先するようにしてもよい。
以上のようにインターロック機能を入れることで不要なNOP命令をプログラムに入れる必要が無く、プログラムのコードサイズを小さく出来る効果がある。
4.マイクロコンピュータ
図31は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
図31は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
本マイクロコンピュータ700は、CPU510、キャッシュメモリ520、LCDコントローラ530、リセット回路540、プログラマブルタイマ550、リアルタイムクロック(RTC)560、DRAMコントローラ兼バスI/F570、割り込みコントローラ580、シリアルインターフェース590、バスコントローラ600、A/D変換器610、D/A変換器620、入力ポート630、出力ポート640、I/Oポート650、クロック発生装置560、プリスケーラ570及びそれらを接続する汎用バス680、専用バス730等、各種ピン690等を含む。
CPU510は、例えば図1〜図31で説明した構成を有する。
5.電子機器
図32に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器800は、マイクロコンピュータ(またはASIC)810、入力部820、メモリ830、電源生成部840、LCD850、音出力部860を含む。
図32に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器800は、マイクロコンピュータ(またはASIC)810、入力部820、メモリ830、電源生成部840、LCD850、音出力部860を含む。
ここで、入力部820は、種々のデータを入力するためのものである。マイクロコンピュータ810は、この入力部820により入力されたデータに基づいて種々の処理を行うことになる。メモリ830は、マイクロコンピュータ810などの作業領域となるものである。電源生成部840は、電子機器800で使用される各種電源を生成するためのものである。LCD850は、電子機器が表示する各種の画像(文字、アイコン、グラフィック等)を出力するためのものである。 音出力部860は、電子機器800が出力する各種の音(音声、ゲーム音等)を出力するためのものであり、その機能は、スピーカなどのハードウェアにより実現できる。
図33(A)に、電子機器の1つである携帯電話950の外観図の例を示す。この携帯電話950は、入力部として機能するダイヤルボタン952や、電話番号や名前やアイコンなどを表示するLCD954や、音出力部として機能し音声を出力するスピーカ956を備える。
図33(B)に、電子機器の1つである携帯型ゲーム装置960の外観図の例を示す。この携帯型ゲーム装置960は、入力部として機能する操作ボタン962、十字キー964や、ゲーム画像を表示するLCD966や、音出力部として機能しゲーム音を出力するスピーカ968を備える。
図33(C)に、電子機器の1つであるパーソナルコンピュータ970の外観図の例を示す。このパーソナルコンピュータ970は、入力部として機能するキーボード972や、文字、数字、グラフィックなどを表示するLCD974、音出力部976を備える。
本実施の形態のマイクロコンピュータを図33(A)〜図33(C)の電子機器に組みこむことにより、コストパフォーマンスの高い電子機器を提供することができる。
なお、本実施形態を利用できる電子機器としては、図33(A)、(B)、(C)に示すもの以外にも、携帯型プレーヤ、電子カメラ、携帯型情報端末、ページャー、電子卓上計算機、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、ビューファインダ型又はモニタ直視型のビデオテープレコーダ、カーナビゲーション装置等のLCDを使用する種々の電子機器を考えることができる。
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
上記実施の形態ではベクトルレジスタに対して、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポート及び書き込みポートの両方を有する場合を例にとり説明したが、いずれか一方のみを有する構成でもよい。
1 CPUコア(プロセッサ)、10 フェッチ部、12 フェッチレジスタ、70 リソースアナライザ、100 レジスタファイル、110 デコード部、112−w 112−r レジスタ制御信号、122 書き込み制御部、122 選択制御信号生成回路、130 読み出し制御回路、133 選択制御信号生成回路、SELd0〜SELd3 書き込みセレクタ(選択回路)、VR0〜VR3 、VR00〜VR30 第1の要素グループの要素レジスタ、VR01〜VR31 第2の要素グループの要素レジスタ、VR02〜VR32 第3の要素グループの要素レジスタ、VR03〜VR33 第4の要素グループの要素レジスタ、ベクトルレジスタ、SELr0〜SELr3 読み出しセレクタ(選択回路)、SEL_A〜SEL_E ソース入力選択回路、SR0〜SR3 スカラレジスタセンタ、V_A〜V_E 演算ユニット、COMP0〜COMP3 グループ判定回路、0−D〜3−D デコードステージ制御レジスタ、0−E〜3−E 実行ステージ制御レジスタ、OUT0−w〜OUT3−w OUT0−r〜OUT3−r 選択制御信号、1−0〜1−3 制御レジスタ、SEL レジスタセレクト信号、AMOUNT ベクトル繰り返し数信号、
UNIT 演算ユニット信号、ADRS ベクトル要素開始アドレス信号
UNIT 演算ユニット信号、ADRS ベクトル要素開始アドレス信号
Claims (14)
- 命令コードをフェッチするフェッチ部と、並列動作可能な演算ユニットと、レジスタファイル部を含むプロセッサであって、
前記レジスタファイル部は、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とするプロセッサ。 - 請求項1において、
前記ベクトルレジスタ制御信号は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、
前記読み出し制御回路は、
当該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始対象となるグループを判断し、書き込み開始対象であると判断されたグループの要素レジスタに演算結果を書き込む制御を行うことを特徴とするプロセッサ。 - 請求項1乃至2のいずれかにおいて
前記書き込み制御回路は、
同一のサイクルにおいて、所与の要素グループに対して発生した書き込みの競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とするプロセッサ。 - 請求項1乃至3のいずれかにおいて
前記書き込み制御回路は、
同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクルを遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とするプロセッサ。 - 請求項1乃至4のいずれかにおいて、
前記レジスタファイル部は、
前記ベクトルレジスタと前記書き込みポートを共用するスカラレジスタを含むことを特徴とするプロセッサ。 - 請求項5において、
前記スカラレジスタは、
前記ベクトルレジスタの先頭要素と前記書き込みポートを共用することを特徴とするプロセッサ。 - 請求項5乃至6のいずれかにおいて、
前記スカラレジスタはベクトルレジスタと書き込みデータが格納される記憶部を共用することを特徴とするプロセッサ。 - 請求項1乃至7のいずれかにおいて、
前記書き込み制御回路は、
各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、書き込み対象となるグループ内の要素レジスタを選択する選択回路と、
前記ベクトルレジスタ制御信号に基づき、前記各グループの選択回路が各グループの要素レジスタから書き込み対象となる要素レジスタを選択する際に選択制御を行うための選択制御信号を各グループに対応して生成し、生成した選択制御信号を対応する選択回路に与える選択制御信号生成回路と、を含むことを特徴とするプロセッサ。 - 請求項1乃至8のいずれかにおいて、
前記選択回路は、
入力が複数の演算ユニットからの演算結果出力に接続され、
各グループに与えられた選択制御信号に基づき、所与の演算ユニットを選択して選択した演算ユニットから演算結果を受け付けることを特徴とするプロセッサ。 - 請求項1乃至9のいずれかにおいて、
前記選択制御信号生成回路は、
第1から第Nの各グループに対して各グループが書き込み対象であるかいなか判断し、書き込み対象である場合には対応するグループの選択回路に対し選択制御信号をを動作させるための選択制御信号を所定のタイミングで出力する第1〜第Nのグループ判定回路を含み、
第n(n=1〜N)のグループ判定回路は、
デコード部及び第n−1のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第nのグループが書き込み対象であるか否か判断する書き込み判断部と、
前記ベクトルレジスタ制御信号に基づき要素レジスタへの書き込みがベクトル繰り返し数に達したか否かを判断し、達していない場合にはn+1のグループ判定回路にたいしベクトルレジスタ制御信号を出力する繰り返し終了判断部と、
を含むことを特徴とするプロセッサ。 - 並列動作可能な複数の演算ユニットを有するプロセッサのレジスタファイル回路であって、
フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、前記ベクトルレジスタにデータを書き込む制御を行う書き込み制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に書き込みポートを有し、
前記書き込み制御回路は、
ベクトルレジスタ制御信号に基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれるデータを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行うことを特徴とするレジスタファイル回路。 - 請求項1乃至10のいずれかに記載のプロセッサまたは請求項11に記載のレジスタファイル回路を含むことを特徴とする集積回路装置。
- 請求項12に記載の集積回路装置を含むことを特徴とするマイクロコンピュータ。
- 請求項13に記載のマイクロコンピュータと、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006107535A JP2007280184A (ja) | 2006-04-10 | 2006-04-10 | プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006107535A JP2007280184A (ja) | 2006-04-10 | 2006-04-10 | プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007280184A true JP2007280184A (ja) | 2007-10-25 |
Family
ID=38681554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006107535A Withdrawn JP2007280184A (ja) | 2006-04-10 | 2006-04-10 | プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007280184A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011065522A (ja) * | 2009-09-18 | 2011-03-31 | Nec Computertechno Ltd | ベクトル処理装置、ベクトル処理方法、およびプログラム |
-
2006
- 2006-04-10 JP JP2006107535A patent/JP2007280184A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011065522A (ja) * | 2009-09-18 | 2011-03-31 | Nec Computertechno Ltd | ベクトル処理装置、ベクトル処理方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5573134B2 (ja) | ベクトル型計算機及びベクトル型計算機の命令制御方法 | |
TWI525537B (zh) | 具有為向量衝突指令與置換指令所共享的全連接互連的處理器 | |
JP2014505916A (ja) | Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置 | |
US10303630B2 (en) | Configurable hardware accelerators | |
JP3627725B2 (ja) | 情報処理装置及び電子機器 | |
US20060218378A1 (en) | Integrated circuit device | |
KR20010072491A (ko) | 산술 논리 유닛 및 스택을 가지는 데이터 프로세서,멀티미디어 장치 및 컴퓨터 프로그램 제품 | |
JP2007280297A (ja) | プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 | |
US20070143579A1 (en) | Integrated data processor | |
JP2007280184A (ja) | プロセッサ、レジスタファイル回路、集積回路装置、マイクロコンピュータ及び電子機器 | |
US6981130B2 (en) | Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel | |
JP3727395B2 (ja) | マイクロコンピュータ | |
JP3841820B2 (ja) | マイクロコンピュータ | |
US20030009652A1 (en) | Data processing system and control method | |
JP2007193572A (ja) | Cpu、集積回路装置、マイクロコンピュータ及び電子機器 | |
JPH0793152A (ja) | マイクロプロセッサ制御装置 | |
JP4284559B2 (ja) | マイクロプロセッサ、マイクロコンピュータ、電子機器 | |
JP2906792B2 (ja) | ディジタルプロセッサ及びその制御方法 | |
JP3733137B2 (ja) | マイクロコンピュータ | |
JP2002182905A (ja) | ディジタル信号処理プロセッサ | |
JP3760999B2 (ja) | 情報処理装置、マイクロコンピュータ及び電子機器 | |
JP2010204913A (ja) | ベクトル処理装置 | |
JP2005242457A (ja) | プログラマブルコントローラ | |
JP2005322198A (ja) | データ処理装置 | |
Andreas et al. | ENSONIQ SIGNAL PROCESSOR 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080630 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20090707 |