(57)【要約】【課題】並列動作可能な複数の演算ユニットを有するプロセッサにおいて、ベクトル要素毎に読み出し制御可能で自由度の高い読み出しを可能とすること。【解決手段】本プロセッサはフェッチ部１０と、並列動作可能な演算ユニットＶ＿Ａ〜Ｖ＿Ｅと、レジスタファイル部１００を含む。レジスタファイル部１００は、ベクトルレジスタ制御信号を生成するデコード部１１０と、複数のベクトルレジスタＶＲ０〜ＶＲ３と、読み出し制御回路１３０とを含む。複数のベクトルレジスタＶＲ０〜ＶＲ３は、複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポートを有する。読み出し制御回路１３０は、ベクトルレジスタ制御信号に基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出す。【選択図】図３
2007280297.tif 000002
【特許請求の範囲】
【請求項１】
命令コードをフェッチするフェッチ部と、並列動作可能な演算ユニットと、レジスタファイル部を含むプロセッサであって、
前記レジスタファイル部は、
フェッチされたベクトル演算命令をデコードして、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御を行う読み出し制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポートを有し、
前記読み出し制御回路は、
ベクトルレジスタ制御信号に基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行うことを特徴とするプロセッサ。
【請求項２】
請求項１において
前記ベクトルレジスタ制御信号は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、
前記読み出し制御回路は、
当該開始要素番号特定情報に基づき、ベクトルレジスタからの読み出し開始対象となるグループを判断し、読み出し開始対象であると判断されたグループの要素レジスタの値を読み出す制御を行うことを特徴とするプロセッサ。
【請求項３】
請求項１乃至２のいずれかにおいて
前記読み出し制御回路は、
同一のサイクルにおいて、所与の要素グループに対して発生した読み出しの競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とするプロセッサ。
【請求項４】
請求項１乃至３のいずれかにおいて
前記読み出し制御回路は、
同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とするプロセッサ。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記レジスタファイル部は、
前記ベクトルレジスタと前記読み出しポートを共用するスカラレジスタを含むことを特徴とするプロセッサ。
【請求項６】
請求項５において、
前記スカラレジスタは、
前記ベクトルレジスタの先頭要素と前記読み出しポートを共用することを特徴とするプロセッサ。
【請求項７】
請求項５乃至６のいずれかにおいて、
前記スカラレジスタはベクトルレジスタと読み出しデータが格納される記憶部を共用することを特徴とするプロセッサ。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記読み出し制御回路は、
各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、読み出し対象となるグループ内の要素レジスタを選択する選択回路と、
前記ベクトルレジスタ制御信号に基づき、前記各グループの選択回路が各グループの要素レジスタから読み出し対象となる要素レジスタを選択する際に選択制御を行うための選択制御信号を各グループに対応して生成し、生成した選択制御信号を対応する選択回路に与える選択制御信号生成回路と、を含むことを特徴とするプロセッサ。
【請求項９】
請求項８において、
前記読み出し制御回路は、
各演算ユニットに対応して設けられ、各グループから出力された読み出しデータを受け取り、前記選択制御信に基づき対応する演算ユニットのソース入力を選択するソース入力選択回路を含み、
前記選択制御信号生成回路は、
ベクトルレジスタ制御信号に基づき、各演算ユニットに対応して設けられたソース入力選択回路が、各グループから出力された読み出しデータから各演算ユニットのソース入力を選択する際に選択制御を行うため選択制御信号を生成することを特徴とするプロセッサ。
【請求項１０】
請求項９において、
前記ベクトルレジスタ制御信号は、演算ユニット特定情報を含み、
前記選択制御信号生成回路は、
前記演算ユニット特定情報に基づき、各演算ユニットごとに使用の有無を示す１ビットのマスク信号を生成し、
前記ソース入力選択回路は、
対応する演算ユニットのマスク信号に基づき、入力のマスク制御を行うことを特徴とするプロセッサ。
【請求項１１】
請求項８乃至１０のいずれかにおいて、
前記選択制御信号生成回路は、
第１から第Ｎの各グループに対して各グループが読み出し対象であるかいなか判断し、読み出し対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力する第１〜第Ｎのグループ判定回路を含み、
第ｎ（ｎ＝１〜Ｎ）のグループ判定回路は、
デコード部及び第ｎ−１のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第ｎのグループが読み出し対象であるか否か判断する読み出し判断部と、
前記ベクトルレジスタ制御信号に基づき要素レジスタからの読み出しがベクトル繰り返し数に達したか否かを判断し、達していない場合にはｎ＋１のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部と、
を含むことを特徴とするプロセッサ。
【請求項１２】
並列動作可能な複数の演算ユニットを有するプロセッサのレジスタファイル回路であって、
フェッチされたベクトル演算命令をデコードして、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御を行う読み出し制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポートを有し、
前記読み出し制御回路は、
ベクトルレジスタ制御信号に基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行うことを特徴とするレジスタファイル回路。
【請求項１３】
請求項１乃至１１のいずれかに記載のプロセッサまたは請求項１２に記載のレジスタファイル回路を含むことを特徴とする集積回路装置。
【請求項１４】
請求項１３に記載の集積回路装置を含むことを特徴とするマイクロコンピュータ。
【請求項１５】
請求項１４に記載のマイクロコンピュータと、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、レジスタファイル回路、マイクロコンピュータ
電子機器に関する。
【背景技術】
【０００２】
従来のベクトルレジスタは先頭要素から順次読み出しまたは書き込みを行うように構成されていた。そのため途中の要素からの書き込みや読み出しが制限されていた。
【０００３】
またデータを受け渡すには外部メモリを経由してデータをやり取りする構成を採用しており、スカラレジスタとベクトルレジスタ間でのデータの受け渡しが困難であった。
【０００４】
比較例のベクトルプロセッサのデータパス部の構成を図３４に示す。
【０００５】
複数のベクトルレジスタがベクトルレジスタ毎に読み出しポート、書き込みポートを有し、先頭のレジスタから順次読み出しを行いベクトル演算ユニットにデータを供給する構成となっている。また書き込みも演算ユニットの結果を先頭から順次書き込んでいく構成となっている。
【０００６】
またスカラ演算部１１１０とベクトル演算部１１２０が別に設けられ、それぞれにレジスタ（スカラレジスタＳＲ０〜ＳＲ３、ベクトルレジスタＶＲ０〜ＶＲ３）と演算器（スカラ演算器Ｓ＿Ａ、Ｓ＿Ｂ、Ｓ＿Ｃ,ベクトル演算器Ｖ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄ、Ｖ＿Ｅ）を有している。
【０００７】
そのため演算ユニットやレジスタの選択回路が増えてしまい回路規模が大きくなっていた。
【特許文献１】特開平５−８１３１１号
【特許文献２】特開平１０−２０７７２０号
【特許文献３】特開平６−１６２０６８号
【特許文献４】特開平８−５５１０７号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のようにベクトルレジスタへ途中の要素からの読み出しや書き込みが制限されていると、ベクトルレジスタの制約上ベクトル長より繰り返し数が少ないベクトル命令を発行すると差分の分だけベクトルレジスタが無駄になってしまうという問題点があった。
【０００９】
またスカラ演算部１１１０とベクトル演算部１１２０が別に設けられていると
演算ユニットやレジスタの選択回路が増えてしまい回路規模が大きくなってしまうという問題点があった。
【００１０】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、並列動作可能な複数の演算ユニットを有するプロセッサ（ベクトル・プロセッサ）において、ベクトル要素毎に読み出し制御可能でベクトルレジスタの自由度の高い読み出しを可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
（１）本発明は、
命令コードをフェッチするフェッチ部と、並列動作可能な演算ユニットと、レジスタファイル部を含むプロセッサであって、
前記レジスタファイル部は、
フェッチされたベクトル演算命令をデコードして、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御を行う読み出し制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポートを有し、
前記読み出し制御回路は、
ベクトルレジスタ制御信号に基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行うことを特徴とする。
【００１２】
並列動作可能な演算ユニットを複数含むようにしてもよい。
【００１３】
ベクトルレジスタとは複数の要素レジスタを有し、１つのベクトル演算命令により複数の要素レジスタに対する読み出し、又は書き込みを順次的に行うことが可能に構成されたレジスタであり、サイクル毎に読み出し書き込みが可能になる。
【００１４】
ベクトル演算命令は、ベクトルレジスタを使用してベクトル演算を実行する命令であり、例えば開始要素番号（開始要素を任意に指定できる場合）、ベクトルレジスタの特定情報、対象となる演算ユニットの情報、繰り返し回数の情報等を命令コード（オペコード又はオペランド）等のベクトル演算を行うために必要な情報を含んでいる。
【００１５】
前記演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御をおこなうために必要なベクトルレジスタ制御信号とは例えば開始要素番号、ベクトルレジスタの特定情報、対象となる演算ユニットの情報、繰り返し回数の情報等を含む信号である。
【００１６】
デコード部はベクトル演算命令をデコードして命令コードから上記情報を判断してベクトルレジスタ制御信号を生成する。
【００１７】
フェッチを一命令に限定すると、パイプライ制御の各サイクルにおいてデコードされる命令は１つなので、デコードステージで同じ要素グループからの読み出しが競合しないようにすることができる。
【００１８】
要素グループはグループ単位で例えば１つ（グループ単位で複数もっていてもよい）の読み出しポートを有する。
【００１９】
ベクトル演算の繰り返し回数に達するまで要素番号を順次繰り下げてまたは巡回させてデータがよみだされて演算ユニットの入力として出力される。
【００２０】
本発明によれば、並列動作可能な複数の演算器を有するプロセッサ（ベクトル・プロセッサ）において、ベクトル要素毎に読み出しポートを設け、また発行された命令の情報を各ベクトル要素で制御を行うことでベクトルレジスタの自由度の高い書き込みを可能とすることができる。
【００２１】
例えば、要素毎に読み出しポートを有するので、同じサイクル内で同じベクトルレジスタの異なる要素レジスタに対して読み出しを行うことができる。
【００２２】
また開始要素を任意に指定可能な命令にも対応することができる。
【００２３】
（２）本発明のプロセッサは、
前記ベクトルレジスタ制御信号は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、
前記読み出し制御回路は、
当該開始要素番号特定情報に基づき、ベクトルレジスタからの読み出し開始対象となるグループを判断し、読み出し開始対象であると判断されたグループの要素レジスタの値を読み出す制御を行うことを特徴とする。
【００２４】
ここで各読み出しポートに対応した選択回路を有する場合には、
当該開始要素番号特定情報に基づき、ベクトルレジスタからの読み出し開始対象となるグループを判断し、読み出し開始対象であると判断されたグループの読み出しポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【００２５】
そして、次回以降は前回選択された要素グループの次のインデックスの要素グループが順次選択されるように制御するようにしてもよい。
【００２６】
本発明によれば、ベクトルレジスタの途中からのアクセスも可能となり、ベクトルレジスタを効率よく使用することができる。
【００２７】
また前記ベクトルレジスタ制御信号は、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、
前記読み出し制御回路は、
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで各サイクル毎に読み出し対象となるグループを順次切り替えて、読み出し対象のグループからデータを読み出す制御を行うようにしてもよい。
【００２８】
ここで各読み出しポートに対応した選択回路を有する場合には、
前記繰り返し回数特定情報に基づき、繰り返し回数に達するまで各サイクル毎に読み出し対象となる要素グループを順次切り替えて、読み出し対象であると判断されたグループの読み出しポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【００２９】
このようにすることで、命令コードで指定されたベクトル長に達するまでベクトルレジスタの各要素に対して巡回アクセスを行うことができる。
【００３０】
例えば命令コードで指定あれたベクトル長に達するまで、順次読み出し対象となる要素レジスタの要素番号をインクリメントさせて読み出しを行うようにしてもよい。
【００３１】
また前記ベクトルレジスタ制御信号は、演算結果データの読み出し対象となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、
前記読み出し制御回路は、
当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから読み出し対象となるベクトルレジスタの要素レジスタを選択して読み出す制御を行うようにしてもよい。
【００３２】
ここで各読み出しポートに対応した選択回路を有する場合には、
当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから読み出し対象となるベクトルレジスタの要素レジスタを選択するための選択制御信号を生成するようにしてもよい。
【００３３】
また前記ベクトルレジスタ制御信号は、読み出したデータをソース信号として演算を行う演算ユニットを特定するための演算ユニット特定情報を含み、
前記読み出し制御回路は、
当該演算ユニット特定情報に基づき、グループの要素レジスタから読み出された値が対応する演算ユニットのソース信号となるように制御するようにしてもよい。
【００３４】
ここで各演算ユニットに対応した選択回路を有する場合には、
当該演算ユニット特定情報に基づき、ソース信号選択回路が、グループの読み出しデータからを対応する演算ユニットのソース信号となる読み出しデータを選択するための選択制御信号を生成して所定のタイミングで出力するようにしてもよい。
【００３５】
（３）本発明のプロセッサは、
前記読み出し制御回路は、
同一のサイクルにおいて、所与の要素グループに対して発生した読み出しの競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
【００３６】
ベクトルレジスタに対して任意の要素を指定して、指定した要素から読み出しができるようにすると同じ要素グループに対して読み出しの競合が発生する場合がある。
【００３７】
本発明によれば、グループの読み出しポートの競合があった場合にはフェッチ部及びデコード部に競合発生に信号を送り、デコードとプログラムのフェッチを例えば１サイクル遅らせることができる。このようなインターロック機能を入れることで、プログラマは読み出しポートの競合を意識することなくプログラムをコーディングできるためプログラム設計が容易になり、不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来るという効果がある。
【００３８】
（４）本発明のプロセッサは、
前記読み出し制御回路は、
同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、
前記フェッチ部は、
前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、
前記デコード部は
前記競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことを特徴とする。
【００３９】
本発明によれば、演算ユニットの競合があった場合にはフェッチ部及びデコード部に競合発生に信号を送り、デコードとプログラムのフェッチを例えば１サイクル遅らせることができる。このようなインターロック機能を入れることで、プログラマは演算ユニットの競合を意識することなくプログラムをコーディングできるためプログラム設計が容易になり、不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来るという効果がある。
【００４０】
（５）本発明のプロセッサは、
前記レジスタファイル部は、
前記ベクトルレジスタと前記読み出しポートを共用するスカラレジスタを含むことを特徴とする。
【００４１】
ベクトルレジスタとスカラレジスタが読み出しポートを共用することにより、読み出しポートに設けられた選択回路も共用することができる。
【００４２】
したがって通常のベクトルプロセッサのようにベクトルレジスタとスカラレジスタの読み出しポートを別に設ける構成に比べ回路規模削減が可能になる。
【００４３】
前記レジスタファイル部のデコード部は、
フェッチされたスカラレジスタ使用命令をデコードして、前記スカラレジスタから演算ユニットのソースとなるデータを読み出す制御をおこなうために必要なスカラレジスタ制御情報（スカラレジスタの特定情報、対象となる演算ユニットの情報）を生成し、
前記読み出し制御回路は、
前記スカラレジスタ制御情報に基づき、前記スカラレジスタから演算ユニットのソースとなるデータを読み出す制御を行うようにしてもよい。
【００４４】
本発明によれば通常のベクトルプロセッサのようにスカラレジスタの読み出しポートを別に設ける構成に比べ回路規模削減が可能になる。
【００４５】
（６）本発明のプロセッサは、
前記スカラレジスタは、
前記ベクトルレジスタの先頭要素と前記読み出しポートを共用することを特徴とする。
【００４６】
このような構成をとることで通常の先頭要素から読み出しを行うベクトル命令の場合、ベクトル命令の第一要素の実行とスカラ命令の実行は通常のパイプライン処理と同じになり読み出しポートの競合が起こらない。
【００４７】
（７）本発明のプロセッサは、
前記スカラレジスタはベクトルレジスタと読み出しデータが格納される記憶部を共用することを特徴とする。
【００４８】
本発明例えばベクトル命令のベクトル繰り返し数を１としてスカラ命令として機能させ、ベクトルレジスタをスカラレジスタとして機能させることにより実現する構成でもよい。
【００４９】
なお演算ユニットもベクトル演算とスカラ演算で共用されるようにしてもよい
（８）本発明のプロセッサは、
前記読み出し制御回路は、
各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、読み出し対象となるグループ内の要素レジスタを選択する選択回路と、
前記ベクトルレジスタ制御信号に基づき、前記各グループの選択回路が各グループの要素レジスタから読み出し対象となる要素レジスタを選択する際に選択制御を行うための選択制御信号を各グループに対応して生成し、生成した選択制御信号を対応する選択回路に与える選択制御信号生成回路と、を含むことを特徴とする。
【００５０】
選択回路は各グループごとに個別に設けるようにしてもよい。また選択制御信号は各グループ毎に生成され、各選択回路には対応する選択制御信号が個別に与えられるようにしてもよい。
【００５１】
選択回路の入力には同一要素グループに属する複数の要素レジスタが接続され、選択制御信号に基づき、所与の要素レジスタが選択され、選択された要素レジスタからデータが読み出されるように構成することができる。
【００５２】
（９）本発明のプロセッサは、
前記読み出し制御回路は、
各演算ユニットに対応して設けられ、各グループから出力された読み出しデータを受け取り、前記選択制御信に基づき対応する演算ユニットのソース入力を選択するソース入力選択回路を含み、
前記選択制御信号生成回路は、
ベクトルレジスタ制御信号に基づき、各演算ユニットに対応して設けられたソース入力選択回路が、各グループから出力された読み出しデータから各演算ユニットのソース入力を選択する際に選択制御を行うため選択制御信号を生成することを特徴とする。
【００５３】
ソース入力選択回路は各演算ユニット毎に個別に設けるようにしてもよい。
ソース入力選択回路の出力は対応する演算ユニットのソース入力に接続され、ソース入力選択回路の入力は全要素グループの選択回路の出力である読み出しデータに接続されるように構成することができる。
【００５４】
（１０）本発明のプロセッサは、
前記ベクトルレジスタ制御信号は、演算ユニット特定情報を含み、
前記選択制御信号生成回路は、
前記演算ユニット特定情報に基づき、各演算ユニットごとに使用の有無を示す１ビットのマスク信号を生成し、
前記ソース入力選択回路は、
対応する演算ユニットのマスク信号に基づき、入力のマスク制御を行うことを特徴とする。
【００５５】
前記ソース入力選択回路は、
例えば各ソース入力選択回路は、全演算ユニットのマスク信号の束を選択制御信号として受け取り、自己に対応する演算ユニットのマスク信号を使用しての入力のマスク制御を行うようにしてもよい。
【００５６】
（１１）本発明のプロセッサは、
前記選択制御信号生成回路は、
第１から第Ｎの各グループに対して各グループが読み出し対象であるかいなか判断し、読み出し対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力する第１〜第Ｎのグループ判定回路を含み、
第ｎ（ｎ＝１〜Ｎ）のグループ判定回路は、
デコード部及び第ｎ−１のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第ｎのグループが読み出し対象であるか否か判断する読み出し判断部と、
前記ベクトルレジスタ制御信号に基づき要素レジスタからの読み出しがベクトル繰り返し数に達したか否かを判断し、達していない場合にはｎ＋１のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部と、
を含むことを特徴とする。
【００５７】
所定のタイミングとは、例えばパイプラインにおけるデコードステージでもよい。このようにするとデコードステージにおいて演算ユニットのソースとなる」信号をベクトルレジスタの要素レジスタから読み出すことができる。
【００５８】
グループ判定回路は各要素グループ（又は各要素グループに設けられた選択回路）に対応して設けるようにしてもよい。
【００５９】
例えば各ベクトルレジスタの要素数がｎである場合要素グループの数もｎとなり、グループ判定回路もｎ個設けることができる。
【００６０】
なお例えば各グループ判定回路は、デコード部からベクトルレジスタ制御信号として、書き込み開始要素信号、演算ユニット信号（使用する演算ユニットを特定する信号）、レジスタセレクト信号（使用するベクトルレジスタを特定する信号）、ベクトル繰り返し数（ベクトル長）を受け取る。
【００６１】
各グループ判定回路は、レジスタセレクト信号（使用するベクトルレジスタを特定する信号）とベクトル繰り返し数（ベクトル長）に基づいて書き込み対象であるか否か判断する判断回路、ベクトル繰り返し数（ベクトル長）信号から1を減算する減算回路、デコード部からのベクトルレジスタ制御信号と前のグループ要素のグループ判定回路からベクトルレジスタ制御信号を選択する選択回路を含むようにしてもよい。
【００６２】
（１２）本発明は、
並列動作可能な複数の演算ユニットを有するプロセッサのレジスタファイル回路であって、
フェッチされたベクトル演算命令をデコードして、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御をおこなうために必要なベクトルレジスタ制御信号を生成するデコード部と、
複数のベクトルレジスタと、
前記ベクトルレジスタ制御信号に基づき、演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御を行う読み出し制御回路と、を含み、
前記複数のベクトルレジスタは、
複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポートを有し、
前記読み出し制御回路は、
ベクトルレジスタ制御信号に基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行うことを特徴とする。
【００６３】
（１３）本発明は、
上記のいずれかに記載のプロセッサまたは請求項１２に記載のレジスタファイル回路を含むことを特徴とする集積回路装置である。
【００６４】
（１４）本発明は、
上記に記載の集積回路装置を含むことを特徴とするマイクロコンピュータである。
【００６５】
（１５）本発明のプロセッサは、
上記に記載のマイクロコンピュータと、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器である。
【発明を実施するための最良の形態】
【００６６】
１．プロセッサ、レジスタファイル
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００６７】
図１は、本実施の形態のプロセッサの構成について説明するための図である。
【００６８】
本実施の形態のＣＰＵコア（プロセッサの一例）１は、フェッチ部１０を含む。フェッチ部１０はフェッチレジスタ１２に命令コードをフェッチする。
【００６９】
本実施の形態のＣＰＵコア１０は、並列動作可能な複数の演算ユニットＶ＿Ａ、Ｖ＿Ｂ、・・・、Ｖ＿Ｅを含む。
【００７０】
本実施の形態のＣＰＵコア１０は、レジスタファイル部１００を含む。
【００７１】
図２はレジスタファイルの構成を示す図である。
【００７２】
前記レジスタファイル部１００は、デコード部１１０を含む。
【００７３】
デコード部１１０は、フェッチされたベクトル演算命令をデコードして、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御及び演算ユニットに出力するデータを前記ベクトルレジスタから読み出す制御の少なくとも一方をおこなうために必要なベクトルレジスタ制御信号１１２−ｗ、１１２−ｒを生成する。
【００７４】
前記レジスタファイル部１００は、書き込み制御部１２０（書き込み制御回路の一例）を含む。
【００７５】
書き込み制御部１２０は、ベクトルレジスタ制御信号１１２−ｗに基づき、前記ベクトルレジスタに演算ユニットの実行結果データを書き込む制御を行うもので、ベクトルレジスタ制御信号に１１２−ｗ基づき、書き込み対象となる要素グループ及びベクトルレジスタを選択して、書き込みポートに書き込まれる（演算結果）データを、選択された要素グループの選択されたベクトルレジスタの要素レジスタに書き込む制御を行う。
【００７６】
前記レジスタファイル部１００は、読み出し制御部１３０（読み出し制御回路の一例）を含む。
【００７７】
読み出し制御部１３０は、ベクトルレジスタ制御信号１１２−ｒに基づき、演算ユニットＶ＿Ａ〜Ｖ＿Ｅに出力するデータを前記ベクトルレジスタから読み出す制御を行うもので、ベクトルレジスタ制御信号１１２−ｒに基づき、読み出し対象となる要素グループ及びベクトルレジスタを選択して、選択された要素グループの選択されたベクトルレジスタの要素レジスタからデータを読み出して、読み出しポートに出力する制御を行う。
【００７８】
前記レジスタファイル部１００は、複数のベクトルレジスタ（ここではベクトルレジスタＶＲ０、ＶＲ１、ＶＲ２、ＶＲ３）を含む。
【００７９】
ベクトルレジスタＶＲ０は複数の要素レジスタＶＲ００、ＶＲ０１、ＶＲ０２、ＶＲ０３を含む。ベクトルレジスタＶＲ１は複数の要素レジスタＶＲ１０、ＶＲ１１、ＶＲ１２、ＶＲ１３を含む。ベクトルレジスタＶＲ２は、複数の要素レジスタＶＲ２０、ＶＲ２１、ＶＲ２２、ＶＲ２３を含む。ベクトルレジスタＶＲ３は、複数の要素レジスタＶＲ３０、ＶＲ３１、ＶＲ３２、ＶＲ３３を含む。
【００８０】
前記複数のベクトルレジスタは、複数の要素レジスタからなり、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に演算ユニットから出力された演算結果データを受け付ける書き込みポートや読み出しポートを有する。
【００８１】
なおベクトル命令（ベクトルレジスタを使用する命令）でベクトル繰り返し数を１として、ベクトルレジスタをスカラレジスタとして使用するようにしてもよい。
【００８２】
また例えばＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３のようにベクトルレジスタと書き込みポートを共用するスカラレジスタを含むようにしてもよい。
【００８３】
図３は本実施の形態の書き込み／読み出しデータパスを示す図である。
【００８４】
同図に示すように複数のベクトルレジスタＶＲ０、ＶＲ１、ＶＲ２、ＶＲ３は各要素毎にグループ化され（３００は各ベクトルレジスタの要素１のグループであり、３１０は各ベクトルレジスタの要素２のグループであり、３２０は各ベクトルレジスタの要素２のグループであり、３３０は各ベクトルレジスタの要素３のグループである）、各グループ毎に書き込みポート及び読み出しポートを有している。
【００８５】
Ｖ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄは並列動作可能な演算ユニットである。またV＿Eはロード・ストアユニットである。
【００８６】
ベクトルレジスタ（ＶＲ０〜ＶＲ３）は要素毎に書き込みセレクタSELdｎ（ｎ＝0〜3）、読み出しセレクタSELｒｎ（ｎ＝0〜3）に接続される。またベクトルレジスタ（ＶＲ０〜ＶＲ３）の先頭要素のセレクタSELｄ０、SELｒ０にはスカラレジスタＳＲ０〜ＳＲ３も接続され、レジスタ選択の読み出しポートを共通化している。
【００８７】
書き込みセレクタSELd0〜SELd2は、各要素グループの書き込みポートに設けられ、その出力がグループ内の複数の要素レジスタに接続され、各グループに与えられた選択制御信号に基づき、各グループの書き込みポートが受け取った信号の書き込み先となるグループ内の要素レジスタを選択する選択回路として機能する。図示しない選択制御信号に基づいて、複数の演算ユニットＶ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄの演算結果データから所与の演算結果データを選択し、選択した演算結果データを複数の同一要素番号の要素レジスタから所与の要素レジスタを選択して書き込む。
【００８８】
書き込みセレクタSELdｎ（ｎ＝0〜3）の出力は対応する要素グループの各要素レジスタに接続される。
【００８９】
各書き込みセレクタSELd0〜SELd3には、並列動作可能な複数の演算ユニットＶ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄからの演算結果が入力され、図示しないベクトルセレクタ制御信号に基づいて出力先となるベクトルレジスタの要素レジスタを選択して書き込む。
【００９０】
読み出しポートには、複数のベクトルレジスタから所定の要素のデータを受け付け所与のベクトルレジスタの値を選択して出力する読み出しセレクタSELrｎ（ｎ＝0〜3）を有している。
【００９１】
読み出しセレクタSELrｎ（ｎ＝0〜3）は、各グループに対応して設けられ、各グループに対応して与えられた選択制御信号に基づき、読み出し対象となるグループ内の要素レジスタを選択する選択回路として機能する。図示しないベクトルセレクタ制御信号に基づいて所与のベクトルレジスタの要素レジスタの値を選択して読み出す。すなわち読み出しセレクタSELrｎ（ｎ＝0〜3）によって、同一要素グループ内の読み出し対象の要素レジスタの選択を行うことができる。
【００９２】
また各演算ユニットＶ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄそれぞれに対応したソース入力選択回路SEL＿Ａ、SEL＿Ｂ、SEL＿Ｃ、SEL＿Ｄを含む。
【００９３】
ソース入力選択回路SEL＿Ａ、SEL＿Ｂ、SEL＿Ｃ、SEL＿Ｄは、読み出しセレクタSELrｎ（ｎ＝0〜3）の出力を受け付け、図示しない選択制御信号に基づきその中から所与セレクタSELrｎ（ｎ＝0〜3）の出力を、それぞれの対応する演算ユニット（SEL＿ＡはＶ＿Ａ、SEL＿ＢはＶ＿Ｂ、SEL＿ＣはＶ＿Ｃ、SEL＿ＤはＶ＿Ｄ）のソース入力として選択する。
【００９４】
すなわちソース入力選択回路SEL＿Ａ、SEL＿Ｂ、SEL＿Ｃ、SEL＿Ｄによって、読み出しセレクタSELr0〜SELr3で選択された信号から演算ユニットへのソース信号を選択することができる。
【００９５】
２．書き込み制御
２−１．書き込み制御部の構成
図４は本実施の形態の書き込みデータパスについて説明するための図である。
【００９６】
ベクトルレジスタＶＲ０はベクトル長が４（要素数が４つ（ＶＲ０（０）、ＶＲ０（１）、ＶＲ０（２）、ＶＲ０（３））のベクトルレジスタである。同様にベクトルレジスタＶＲ１、ベクトルレジスタＶＲ２、ベクトルレジスタＶＲ３もベクトル長が４（要素数が４つ）のベクトルレジスタである。
【００９７】
Ｇ０は各ベクトルレジスタの要素０のグループであり、Ｇ１は各ベクトルレジスタの要素１のグループであり、Ｇ２は各ベクトルレジスタの要素２のグループであり、Ｇ３は各ベクトルレジスタの要素３のグループである。
【００９８】
本実施の形態では、複数のベクトルレジスタＶＲ０、ＶＲ１、ＶＲ２、ＶＲ３は、要素毎にグループ化され、各グループ毎に演算ユニットから出力された演算結果データを受け付ける書き込みポートを有する。
【００９９】
書き込みポートからの演算結果データは書き込み選択回路（SELd0〜SELd3）によって選択され、命令コードで指令されたベクトルレジスタの要素レジスタに書き込まれる。
【０１００】
図３４は比較例の書き込みデータパスの構成を示す図である。
【０１０１】
比較例ではベクトルレジスタ毎にグループ化を行い、同じベクトルレジスタの要素レジスタの集合として設定されたグループ毎に書き込みポートを設けて、各演算ユニットＶ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄからの演算結果データを受け付ける。  書き込みポートにはセレクタ（図３５のSELd0〜SELd3）が設けられ、各演算ユニットＶ＿Ａ、Ｖ＿Ｂ、Ｖ＿Ｃ、Ｖ＿Ｄの演算結果データから所与の演算結果データを選択肢、ベクトルレジスタの複数の要素レジスタの中から所与の要素レジスタを選択して出力する。
【０１０２】
本実施の形態では要素番号を同じくする要素レジスタ毎に書き込みポート（セレクタでもよい）を設けるのに対し、比較例ではベクトルレジスタ毎に書き込みポート（セレクタでもよい）に対応してセレクタを設ける点で相違する。
【０１０３】
従って、比較例では同じベクトルレジスタの異なる要素レジスタに対しては同じステージ内で書き込みを行うことができないにたいし、本実施の形態では同じステージ内で同じベクトルレジスタの異なる要素に書き込みを行うことができる。
【０１０４】
また比較例ではベクトルレジスタに対して先頭要素レジスタからしか書き込みを行うことしかできないが、本実施の形態では任意の要素レジスタから書き込みを行うことができる。
【０１０５】
図５は本実施の形態のパイプライン構成の一例である。
【０１０６】
本実施の形態では、４段のパイプライン処理（フェッチステージ２１０、デコードステージ２１２、実行ステージ２１４、ライトバックステージ２１６）が行われる。フェッチステージ２１０ではフェッチユニットが外部メモリ（キャッシュ）から命令を読み出しフェッチレジスタに書き込む。デコードステージ２１２ではフェッチレジスタの内容をデコーダがデコードし、レジスタ制御情報（ここではベクトル要素開始アドレス（ADRS）、演算ユニット信号(UNIT)とレジスタセレクト信号(SEL)、繰り返し数AMOUNT）を出力する。
【０１０７】
実行ステージではレジスタから読み出されたデータが演算ユニットに入力され演算が実行される。
【０１０８】
ライトバックステージ２１６では、実行ステージでの演算結果がレジスタにライトバックされる。
【０１０９】
図６は書き込み制御部の選択制御信号生成回路の構成を説明するための図である。
【０１１０】
選択制御信号生成回路１２２は、ベクトルレジスタ制御信号１１２−ｗに基づき、前記各選択回路（図４の書き込み選択回路（SELd0〜SELd3））に与える選択制御信号を生成する処理を行う。
【０１１１】
ベクトルレジスタ制御信号１１２−ｗは、演算結果データの格納先となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、選択制御信号生成回路１２２は、当該ベクトルレジスタ特定情報に基づき、演算結果データを命令コードで指定されたベクトルレジスタに格納するための選択制御信号を生成するようにしてもよい。
【０１１２】
図７はレジスタセレクト信号SEL（ベクトルレジスタ特定情報の一例）具体例である。レジスタセレクト信号SELは複数のベクトルレジスタから所与のベクトルレジスタを特定するための信号である。
【０１１３】
ベクトルレジスタＶＲ０〜ＶＲ３の先頭要素とスカラレジスタＳＲ０〜ＳＲ３が読み出しポートを共用している。したがって例えばスカラレジスタＳＲ０を特定するための信号は'000'であり、スカラレジスタＳＲ１を特定するための信号は'001'であり、スカラレジスタＳＲ２を特定するための信号は'010'であり、スカラレジスタＳＲ３を特定するための信号は'011'であり、ベクトルレジスタＶＲ０を特定するための信号は'100'であり、ベクトルレジスタＶＲ１を特定するための信号は'101'であり、ベクトルレジスタＶＲ２を特定するための信号は'110'であり、ベクトルレジスタＶＲ３を特定するための信号は'111'である。また'100'〜'111'はInvalidを示しており、対応する要素グループが選択されていないことを示す。したがってSEL信号がInvalidである選択制御信号を受け取った書き込み選択回路は、書き込みを行わないように制御し、SEL信号がInvalidである選択制御信号を受け取った読み出し選択回路は、読み出しを行わないように制御するようにしてもよい。
【０１１４】
またベクトルレジスタ制御信号１１２−ｒは、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、選択制御信号生成回路１２２は、記繰り返し回数特定情報に基づき、各サイクル毎に書き込み対象となる要素グループを順次切り替えて、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【０１１５】
図８はベクトル繰り返し数信号AMOUNT（繰り返し回数特定情報の一例）の具体例である。ベクトル繰り返し数信号AMOUNTはベクトルレジスタへの書き込みの繰り返し回数を特定するための信号であり、例えば繰り返し回数が'4'の場合には'11'であり、繰り返し回数が'3'の場合には'10'であり、繰り返し回数が'2'の場合には'01'であり、繰り返し回数が'1'の場合には'00'である
ベクトルレジスタ制御信号１１２は、格納対象となる演算結果を出力する演算ユニットを特定するための演算ユニット特定情報を含み、選択制御信号生成回路１２２は、演算ユニット特定情報に基づき、書き込み対象となる演算ユニットの演算結果を選択するための選択制御信号を所定のタイミングで出力するようにしてもよい。
【０１１６】
図９は演算ユニット信号UNITの具体例である。演算ユニット信号UNITは書き込み対象となる演算結果を出力する演算ユニット（UNIT）を特定するコード２２０であり、例えば演算ユニットＶ＿Ａを特定するためのコードは'000'であり、演算ユニットＶ＿Ｂを特定するためのコードは'001'であり、演算ユニットＶ＿Ｃを特定するためのコードは'010'であり、演算ユニットＶ＿Ｄを特定するためのコードは'011'である。
【０１１７】
ベクトルレジスタ制御信号１１２は、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、選択制御信号生成回路１２２は、該開始要素番号特定情報に基づき、ベクトルレジスタへの書き込み開始時に書き込み対象となる要素グループを判断し、書き込み対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【０１１８】
図１０は、ベクトル要素開始アドレス信号ADRS（開始要素番号特定情報の一例）の具体例である。ベクトル要素開始アドレス信号ADRSは読み出し又は書き込み開始の要素番号を特定する信号である。例えば第１要素からの読み出し／書き込みである場合には'00'、第２要素からの読み出し／書き込みである場合には'01'、第３要素からの読み出し／書き込みである場合には'10'、第４要素からの読み出し／書き込みである場合には'11'である。
【０１１９】
デコード部１１０はベクトルレジスタ制御信号１１２−ｒとして書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT等の情報を出力する。
【０１２０】
選択制御信号生成回路１２２は、要素毎のグループに対応した第ｎのグループ判定回路（ｎ＝０〜３）COMP0〜3、第ｎのデコードステージ制御レジスタ（ｎ＝０〜３）０−Ｄ〜３−Ｄ、第ｎの実行ステージ制御レジスタ０−Ｅ〜３−Ｅ、リソースアナライザ７０を含む。
【０１２１】
選択制御信号生成回路１２２は、第１から第Ｎの各グループに対して各グループが書き込み対象であるかいなか判断し、書き込み対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力するグループ判定回路COMP0〜3を含むように構成することができる。
【０１２２】
第ｎ（ｎ＝０〜３）のグループ判定回路COMP0〜3は、デコード部１１０及び第ｎ−１のグループ判定回路が出力するベクトルレジスタ制御信号１１２−ｗ（ベクトル要素開始アドレス信号ADRS）に基づき第ｎのグループが書き込み対象であるか否か判断する書き込み判断部と、ベクトルレジスタ制御信号１１２−ｗ（ベクトル繰り返し数信号AMOUNT）に基づき要素レジスタへの書き込みがベクトル繰り返し数に達したか否かを判断し、達していない場合にはｎ＋１のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部として機能する。
【０１２３】
第ｎのグループ判定回路COMP0〜3は読み出し開始要素信号ADRS、ベクトル繰り返し信号AMOUNTを比較する比較回路、ベクトル繰り返し信号AMOUNTから1を減算する減算回路、デコード部１１２からの信号と第ｎのデコードステージ用制御レジスタからの信号を選択する選択回路を含むようにしてもよい。
【０１２４】
第ｎのグループ判定回路COMP0〜3は、ベクトル要素開始アドレス（ADRS）が当該第ｎのグループ判定回路COMP0〜3の出力先となるグループの要素番号と一致する場合には、対応するデコードステージ制御レジスタ０−Ｄ〜３−Ｄに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
【０１２５】
ここでデコード部からの信号に含まれたレジスタセレクト信号SELと、第ｎのデコードステージ用制御レジスタからの信号に含まれたレジスタセレクト信号SELが一致する場合には、同じ要素グループに対する書き込みに競合が発生したことになる。第ｎのグループ判定回路COMP0〜3は、かかる競合を検出した場合にはリソース信号７１−ｎを出力する。リソース信号７１−ｎはリソースアナライザ７０に入力される。
【０１２６】
第ｎのグループ判定回路COMP0〜3の入力は、デコード部１１２からのレジスタ制御信号３２（書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT）に接続され、出力は第ｎのグループ判定回路COMP0〜3各比較器に対応した第ｎデコードステージ制御レジスタ０−Ｄ〜３−Ｄ及びリソースアナイザ７０に接続されている。
【０１２７】
第ｎのグループ判定回路COMP0〜3の出力には第ｎのデコードステージ制御レジスタｎ−Ｄが接続される。
【０１２８】
第ｎのデコードステージ制御レジスタｎ−Ｄの出力は対応する第ｎの実行ステージ制御レジスタｎ−Ｅと、第ｎ＋１のグループ判定回路COMPｎ+１（なお最後のグループ判定回路に対応した実行ステージ制御レジスタの値は第１のグループ判定回路COM１に接続される）と、リソースアナライザに接続される。
【０１２９】
第ｎの実行ステージ制御レジスタｎーＥの出力OUTｎ−ｗは、それぞれSELrｎ（図２，３，４参照）の選択制御信号となる。
【０１３０】
フェッチステージ（図５２１０）ではフェッチ部１０が図示しない外部メモリ（キャッシュ）から命令を読み出しフェッチレジスタ１２に書き込む。
【０１３１】
デコードステージではフェッチレジスタ１２の内容をデコード部１１０がデコードし、レジスタ制御信号１１２−ｗとして、ベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
【０１３２】
第ｎのグループ判定回路（ｎ＝０〜３）COMP０〜３は、ベクトル要素開始アドレス（ADRS）が当該第ｎのグループ判定回路COMP０〜３の出力先となるグループの要素番号と一致する場合には、対応するデコードステージ制御レジスタ０−Ｄ〜３−Ｄに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
【０１３３】
第ｎのデコードステージ制御レジスタｎ−Ｄの出力は、リソースアナライザ７０及び対応する第ｎの実行ステージ制御レジスタｎ−Ｅに接続されている。
【０１３４】
実行ステージ（図５の２１２）では第ｎのデコードステージ制御レジスタ０−Ｄ〜３−Ｄから第ｎの実行ステージ制御レジスタ０−Ｅ〜０−Ｅに制御信号が保持される。
【０１３５】
ライトバックステージ（図５の２１６）では０−Ｅ〜３−Ｅの値が制御信号ＯＵＴ０〜ＯＵＴ３として出力され、選択回路（図２、３、４のSELd0〜SELｄ２）の選択制御信号となる。OUT0-w〜OUT3-wに含まれるセレクト信号UNITが、図２、３４のSELd0からSELd3の選択回路の選択制御信号となる。
【０１３６】
そして選択回路（図２、３、４のSELd0〜SELｄ２）は選択制御信号に含まれたレジスタセレクト信号SELに基づいて書き込み先となるベクトルレジスタを選択して出力する。
【０１３７】
なおSEL信号はデコードされライト・イネーブル信号となりレジスタの書き込み制御をおこなう。
【０１３８】
リソースアナライザ７０及び第ｎのグループ判定回路（ｎ＝０〜３）COMP０〜３は、同一のサイクルにおいて、同一の演算ユニットに対する演算実行の競合を検出して、競合発生信号７２を生成する競合発生信号生成部７０として機能する。
【０１３９】
リソースアナライザ７０は、第ｎのグループ判定回路（ｎ＝０〜３）COMP0〜3から出力された要素競合発生信号７１−０〜７１−３を受け取り、同一要素グループに対する書き込みの競合があった場合には競合発生信号７２をフェッチ部１０、デコード部１１０に対して出力する。
【０１４０】
フェッチ部１０は、競合発生信号７２を受けると次の命令コードのフェッチのサイクル遅らせる制御を行うようにしてもよい。
【０１４１】
またデコード部１１０は、競合発生信号７２を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うようにしてもよい。
【０１４２】
図１１は、第ｎのグループ判定回路における判定のアルゴリズムである。
【０１４３】
まず第ｎ−１のデコードステージレジスタ(n-1)-Dから、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTの入力を受け、デコード部からベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを受け付ける（ステップＳ１０）。
【０１４４】
第ｎ−１のデコードステージレジスタ(n-1)-Dのベクトル繰り返し数信号AMOUNT=0であるか否か判断する（ステップＳ２０）。
【０１４５】
AMOUNT=0である場合には、デコード部から受け取ったベクトル要素開始アドレス信号ADRS=第ｎ要素であるか否か判断する（ステップＳ３０）。
【０１４６】
そしてADRS=第ｎ要素である場合には、デコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ４０）。
【０１４７】
ADRS=第ｎ要素でない場合には、セレクト信号SELをInvalid信号に変更する（ステップＳ５０）。
【０１４８】
そしてデコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL（この場合Invalidである）、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ６０）。
【０１４９】
ステップＳ２０において、第ｎ−１のデコードステージレジスタ(n-1)-Dのベクトル繰り返し数信号AMOUNT=0でない場合には、AMOUNTから1減算する（ステップＳ７０）。
【０１５０】
そしてデコード部から受け取ったベクトル要素開始アドレス信号ADRS=第ｎ要素であるか否か判断する（ステップＳ８０）。
【０１５１】
ベクトル要素開始アドレス信号ADRS=第ｎ要素である場合には、デコードステージレジスタ(n-1)-Dの値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力１を選択する（ステップＳ９０）。
【０１５２】
ベクトル要素開始アドレス信号ADRS=第ｎ要素でない場合には、デコードステージレジスタ(n-1)-Dの値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ１００）。
【０１５３】
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを第ｎのデコードステージレジスタに出力するとともに、リソース信号を出力する（ステップＳ１１０）。
【０１５４】
このようにステップＳ４０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号は選択条件を満たさないので、デコード部から受け取ったレジスタ制御信号が選択される（したがって当該グループがベクトルレジスタの最初の書き込みグループとして選択される）。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０１５５】
またステップＳ６０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさず、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たさないので、当該グループは選択されずSEL信号がInvalidになる。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０１５６】
またステップＳ９０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こるのでリソース信号は'1'（リソースの競合あり）となる。
【０１５７】
またステップＳ１００では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさないが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号は選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０１５８】
２−２．ベクトル命令時の書き込み例
ベクトル命令時の各種レジスタへの書き込みタイミングについて、演算ユニットV＿A、デスティネーションがベクトルレジスタVR2の第2要素から始まるベクトル長4の命令を例にとり説明する。
【０１５９】
図１２は、ベクトル命令時の各レジスタへの書き込みタイミングを説明するための図である。
【０１６０】
４１０はフェッチレジスタの値をデコードしたビット列であり、ADRS＿SEL＿UNIT＿AMOUNTである。
【０１６１】
また４２０はデコードステージ制御レジスタに保持される信号のビット列であり、SEL＿UNIT＿AMOUNTである。
【０１６２】
また４３０は実行ステージ制御レジスタに保持される信号のビット列であり、SEL＿UNITである。
【０１６３】
また４４０は実行ステージ制御レジスタから出力される出力信号のビット列であり、SEL＿UNITである。
【０１６４】
４５０は書き込み先となるベクトルレジスタである。
【０１６５】
サイクル１においてデコード部のレジスタに'01＿110＿000＿11’格納されている（４６０参照）。ベクトル要素開始アドレス信号ADRSが'01'（第２要素）、レジスタセレクト信号SELが’110'（ＶＲ２）、演算ユニット信号UNITが'000'（Ｖ＿Ａ）、ベクトル繰り返し数信号AMOUNTが'11'（４）を示しており、演算ユニットＶ＿Ａの検算結果をベクトルレジスタＶＲ２の第２要素から開始して４回に達するまで順次インクリメントした要素ベクトルに書き込むというベクトル命令が発行されたことを示している。
【０１６６】
ベクトル要素開始アドレス信号ADRSが'01'（第２要素）であるので、サイクル２において第２要素に対応したグループ判定回路COMPで選択され、第２要素に対応したデコードステージ制御レジスタ1-Dに'110＿000＿11’が格納される（４６２参照）。そしてデコード制御ステージレジスタの'110＿000＿11’はサイクル３において対応する実行ステージ制御レジスタに'110＿000’が格納され（４６４参照）、同じサイクル内でＯＵＴ１−ｗ信号（４６６参照）として出力される。
【０１６７】
ＯＵＴ１−ｗ信号は第２要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'010'に対応したベクトルレジスタの第２要素ＶＲ２１）が選択され、UNITの'000'に対応した演算ユニットＶ＿Ａの演算結果が書き込まれる（４６８参照）。
【０１６８】
またサイクル２の第２のデコードステージ制御レジスタ1-Dの値がサイクル３において第３のデコードステージ制御レジスタ2-Dに格納される（４７０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'10’（３）になっている。
【０１６９】
そしてデコードステージ制御レジスタ2-Dの'110＿000＿10’は、サイクル４において対応する実行ステージレジスタ2-Eに'110＿000’としてが格納され（４７２参照）、同じサイクル内でＯＵＴ２−ｗ信号（４７４参照）として出力される。
【０１７０】
ＯＵＴ２信号は第３要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'110'に対応したベクトルレジスタの第３要素ＶＲ２２が選択され、UNITの'00'に対応した演算ユニットＶ＿Ａの演算結果が書き込まれる（４７６参照）
またサイクル３の第３のデコードステージ制御レジスタ2-Dの値がサイクル４において第４のデコードステージ制御レジスタ3-Dに格納される（４８０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'01’（２）になっている。
【０１７１】
そしてデコードステージ制御レジスタ3-Dの'110＿000＿01’はサイクル５において対応する実行ステージ制御レジスタ3-Eに'110＿000’として格納され（４８２参照）、同じサイクル内でＯＵＴ３−ｗ信号（４８４参照）として出力される。
【０１７２】
ＯＵＴ３信号は第４要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'010'に対応したベクトルレジスタの第４要素ＶＲ２３が選択され、UNITの'00'に対応した演算ユニットＶ＿Ａの演算結果が書き込まれる（４８６参照）
またサイクル４の第４のデコードステージ制御レジスタが巡回して、サイクル５において第１のデコードステージ制御レジスタ0-Dに格納される（４９０参照）（本実施の形態ではベクトルレジスタのベクトル長が４なので第４要素まできたら第１の要素に戻る）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'00’（１）になっている。
【０１７３】
そしてデコードステージ制御レジスタ0-Dの'110＿000＿00’はサイクル６において対応する実行ステージレジスタ0-Eに'110＿000’として格納され（４９２参照）、同じサイクル内でＯＵＴ０−ｗ信号（４９４参照）として出力される。
【０１７４】
ＯＵＴ０−ｗ信号は第１要素のグループのセレクタの選択制御信号となり、ステージセレクタによってSELの'110'に対応したベクトルレジスタの第１要素ＶＲ２０が選択され、UNITの'00'に対応した演算ユニットＶ＿Ａの演算結果が書き込まれる（４９６参照）
２−３．書き込みポート競合対策
図１３は、本実施の形態においてベクトル命令が連続して発行された場合のパイプライン処理の例について説明するための図である。フェッチ（Ｆ）、デコード（Ｄ）、実行（Ｅ）、ライトバック（Ｗ）の４段パイプラインの場合を例にとり説明する。
【０１７５】
図１３では、ベクトル長４のベクトル命令Ａ（１５１０）の次にベクトル長４のベクトル命令Ｂ（１５２０）が実行されるケースを示している。
【０１７６】
この場合サイクル１でフェッチされたベクトル命令Ａ（１５１０）は、サイクル２でデコードされ、サイクル３で実行され、サイクル４で実行結果がベクトルレジスタの先頭要素にライトバックされる（１５１２参照）。
【０１７７】
次にベクトル命令Ａ（１５１０）の２番目の要素が、サイクル３でデコードされ、サイクル４で実行され、サイクル５で実行結果がベクトルレジスタの２番目の要素にライトバックされる（１５１４参照）。
【０１７８】
同様にベクトル命令Ａ（１５１０）の３番目の要素が、サイクル４でデコードされ、サイクル５で実行され、サイクル５で実行結果がベクトルレジスタの３番目の要素にライトバックされる（１５１６参照）。
【０１７９】
同様にベクトル命令Ａ（１５１０）の４番目の要素が、サイクル５でデコードされ、サイクル６で実行され、サイクル７で実行結果がベクトルレジスタの４番目の要素にライトバックされる（１５１８参照）。
【０１８０】
またサイクル２でフェッチされたベクトル命令Ｂ（１５２０）は、サイクル３でデコードされ、サイクル４で実行され、サイクル５でベクトルレジスタにライトバックされる。
【０１８１】
次にベクトル命令Ｂ（１５２０）の２番目の要素が、サイクル４でデコードされ、サイクル５で実行され、サイクル６で実行結果がベクトルレジスタの２番目の要素にライトバックされる（１５２４参照）。
【０１８２】
同様にベクトル命令Ｂ（１５２０）の３番目の要素が、サイクル５でデコードされ、サイクル６で実行され、サイクル７で実行結果がベクトルレジスタの３番目の要素にライトバックされる（１５２６参照）。
【０１８３】
同様にベクトル命令Ｂ（１５２０）の４番目の要素が、サイクル６でデコードされ、サイクル７で実行され、サイクル８で実行結果がベクトルレジスタの４番目の要素にライトバックされる（１５２８参照）。
【０１８４】
ここでベクトル演算時の開始要素が固定されているとすると、図１３に示すように各サイクルにおいて、同じ要素番号のグループが選択されることはない。
【０１８５】
また例えばベクトル命令Ａとベクトル命令Ｂが同じベクトルレジスタ（例えばＶＲ１）を使用していたとしても、同じサイクル内では異なる要素レジスタが選択され書き込みが行われる。
【０１８６】
したがって、ベクトル演算命令の開始要素を固定することにより、同一要素番号でグループ化して書き込みポートをもうけてもベクトル演算同士で書き込みの競合の発生を防ぐことができる。
【０１８７】
ところが、本実施の形態ではベクトル演算命令の開始要素を任意に指定することも可能である。この場合書き込みポートの選択回路の使用に競合が発生する場合がある。
【０１８８】
図１４は、書き込みポートの選択回路の使用に競合が発生する場合のプログラム例である。
【０１８９】
最初の命令１０１０でベクトルレジスタVR1の第一要素から読み出し、第２命令１０２０でベクトルレジスタVR1の第２要素から読み出している。
【０１９０】
すなわち図１３におけるサイクル５において、ベクトル命令Ａ（１５１０）ではベクトルレジスタＶＲ１の第２の要素に書き込み要求が発生し、ベクトル命令Ｂ（１５２０）はベクトルレジスタＶＲ１の第２の要素に書き込み要求が発生する。このようにサイクル５においては、書き込むベクトル要素番号が同一になるため書き込みの競合が起こる。
【０１９１】
そのため本実施例ではグループ判定回路（図６のCOMP0〜COMP3）で競合を検出し、リソース信号（図６の７１−０〜７１−３）をリソースアナライザー（図６の７０）に入力している。リソースアナライザーでは各グループ判定信号のORを取り、競合があった場合にはフェッチ部１０とデコード部１１０に競合発生信号７２を送る。フェッチ部１０とデコード部１１０では、競合発生信号７２を受け取るとそれぞれデコードとプログラムのフェッチを１サイクル遅らせる制御を行う。
【０１９２】
このようなインターロック機能を入れることで不要なNOP命令をプログラムに入れる必要が無くプログラムのコードサイズを小さく出来る効果がある。
【０１９３】
２−４．スカラレジスタとベクトルレジスタの書き込みポートの共用
上記実施の形態ではスカラレジスタを持たず、ベクトル命令のベクトル繰り返し数を１としてベクトルレジスタをスカラレジスタとして使用することで、スカラ命令の実行と同機能の処理を実現することができた。
【０１９４】
しかしベクトルレジスタとは別にスカラレジスタを有し、ベクトルレジスタと書き込みポートを共有する構成も本発明の範囲内である。
【０１９５】
図１５は、ベクトルレジスタとスカラレジスタが書き込みポートを共有する構成のデータパス部を示す。
【０１９６】
同図に示すようにスカラレジスタＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３をベクトルレジスタの第一要素ＶＲ０（０）、ＶＲ１（０）、ＶＲ２（０）、ＶＲ３（０））のグループＧ１にグループ化し書き込みポートを共通化している。
【０１９７】
また例えばベクトルレジスタＶＲ０を特定するための信号は'100'であり、ベクトルレジスタＶＲ１を特定するための信号は'101'であり、ベクトルレジスタＶＲ２を特定するための信号は'110'であり、ベクトルレジスタＶＲ３を特定するための信号は'111'である。
【０１９８】
図１６は、本実施の形態においてベクトル命令に続いてスカラ命令が発行された場合のパイプライン処理の例について説明するための図である。フェッチ（Ｆ）、デコード（Ｄ）、実行（Ｅ）、ライトバック（Ｗ）の４段パイプラインの場合を例にとり説明する。また図１４に示すようにスカラレジスタはベクトルレジスタの第１の要素グループにグループ化され、ベクトルレジスタの第１の要素レジスタと書き込みポートを共用しているものとする。
【０１９９】
ベクトル長４のベクトル命令Ａ（１５１０）の次にスカラ命令１〜３（１５３０〜１５５０）が実行されるケースを示している。
【０２００】
この場合サイクル１でフェッチされたベクトル命令Ａ（１５１０）は、サイクル２でデコードされ、サイクル３で実行され、サイクル４で実行結果がベクトルレジスタの先頭要素にライトバックされる（１５１２参照）。
【０２０１】
次にベクトル命令Ａ（１５１０）の２番目の要素が、サイクル３でデコードされ、サイクル４で実行され、サイクル５で実行結果がベクトルレジスタの２番目の要素にライトバックされる（１５１４参照）。
【０２０２】
同様にベクトル命令Ａ（１５１０）の３番目の要素が、サイクル４でデコードされ、サイクル５で実行され、サイクル５で実行結果がベクトルレジスタの３番目の要素にライトバックされる（１５１６参照）。
【０２０３】
同様にベクトル命令Ａ（１５１０）の４番目の要素が、サイクル５でデコードされ、サイクル６で実行され、サイクル７で実行結果がベクトルレジスタの４番目の要素にライトバックされる（１５１８参照）。
【０２０４】
またサイクル２でフェッチされたスカラ命令１（１５３０）は、サイクル３でデコードされ、サイクル４で実行され、サイクル５でスカラレジスタ（ベクトルレジスタの第１の要素レジスタと書き込みポートを共用するスカラレジスタ）にライトバックされる。
【０２０５】
またサイクル３でフェッチされたスカラ命令２（１５４０）は、サイクル４でデコードされ、サイクル５で実行され、サイクル６でスカラレジスタ（ベクトルレジスタの第１の要素レジスタと書き込みポートを共用するスカラレジスタ）にライトバックされる。
【０２０６】
またサイクル４でフェッチされたスカラ命令３（１５５０）は、サイクル５でデコードされ、サイクル６で実行され、サイクル７でスカラレジスタ（ベクトルレジスタの第１の要素レジスタと書き込みポートを共用するスカラレジスタ）にライトバックされる。
【０２０７】
ここでベクトル演算時の開始要素が固定されているとすると、図１６に示すように各サイクルにおいて、同じ要素番号のグループが選択されることはない。したがって、ベクトル演算時の開始要素が固定することにより、同一要素番号でグループ化して書き込みポートをもうけてもベクトル演算とスカラ演算で書き込みの競合の発生を防ぐことができる。
【０２０８】
２−５．５段パイプライン
上記実施の形態では４段パイプラインを想定してきたが、図１７に示すような５段パイプラインでも実現することができる。
【０２０９】
図１７では図５で説明した４段のパイプラインに加えて実行ステージＥＸ２（２１５）がさらに追加になっている。
【０２１０】
図１８は、５段パイプラインの場合の選択制御信号生成部の構成を説明するための図である。
【０２１１】
図６と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
【０２１２】
追加された実行ステージ用に第２の実行ステージ制御レジスタ０−Ｅ２、１−Ｅ２、２−Ｅ２、３−Ｅ２が追加されている。このようにプロセッサのパイプライン構成を変更しても、対応するステージの制御レジスタを追加することで容易に対応することが出来る。
【０２１３】
図１９はベクトル命令の先頭の書き込み要素が固定されている場合の選択制御信号生成部の構成である。
【０２１４】
図６、１８と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
【０２１５】
図１９の構成とことなるのはデコード部から直接レジスタ制御信号を受け取るのが先頭のグループのグループ判定回路（図１８ではCOMP０）のみである点である。２番目以降のグループのグループ判定回路（図１８ではグループ判定回路ではCOMP１〜COMP３）では前のグループ判定回路のデコードステージ制御レジスタ０−Ｄ〜２−Ｄからレジスタ制御信号を受け取る。
【０２１６】
またこのように先頭の書き込み要素が固定されている場合には、図１９で説明したように書き込み対象となるグループの競合も起こらない。したがって各グループ判定回路COMP0〜COMP3は選択回路の競合は検出しない。
【０２１７】
しかし演算ユニットの競合は起こりえるので、各グループ判定回路COMP0〜COMP3は、受け取ったレジスタ制御信号のUNIT情報をUNIT信号７２−０〜７２−３としてリソースアナライザにむけ出力する。
【０２１８】
３．読み出し制御
３−１．読み出し制御部の構成
図２０は本実施の形態の読み出し制御部の選択制御信号生成回路の構成の一例を説明するための図である。
【０２１９】
図２０ではベクトルレジスタの先頭要素から読み出しを行うように設定されている構成について説明する。
【０２２０】
選択制御信号生成回路１３２は、ベクトルレジスタ制御信号１１２−ｒに基づき、各選択回路の選択制御信号を生成する処理を行う。
【０２２１】
ベクトルレジスタ制御信号１１２−ｒは、演算結果データの読み出し対象となるベクトルレジスタを特定するためのベクトルレジスタ特定情報を含み、選択制御信号生成回路は、当該ベクトルレジスタ特定情報に基づき、グループ内の要素レジスタから読み出し対象となるベクトルレジスタの要素レジスタを選択するための選択制御信号を生成するようにしてもよい。
【０２２２】
本実施の形態のレジスタセレクト信号SEL（ベクトルレジスタ特定情報の一例）具体例は図７と同様であり説明を省略する。
【０２２３】
またベクトルレジスタ制御信号１１２−ｒは、ベクトル演算の繰り返し回数を特定するための繰り返し回数特定情報を含み、選択制御信号生成回路は、記繰り返し回数特定情報に基づき、各サイクル毎に読み出し対象となる要素グループを順次切り替えて、読み出し対象であると判断されたグループの書き込みポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【０２２４】
本実施の形態のベクトル繰り返し数信号AMOUNT（繰り返し回数特定情報の一例）の具体例は、図８と同様であり説明を省略する。
【０２２５】
ベクトルレジスタ制御信号１１２−ｒは、読み出したデータをソース信号として演算を行う演算ユニットを特定するための演算ユニット特定情報を含み、選択制御信号生成回路は、当該演算ユニット特定情報に基づき、ソース信号選択回路が、グループの読み出しデータからを対応する演算ユニットのソース信号となる読み出しデータを選択するための選択制御信号を生成して所定のタイミングで出力するようにしてもよい。
【０２２６】
本実施の形態の演算ユニット信号UNITの具体例は、図９と同様であり説明を省略する。
【０２２７】
フェッチステージではフェッチ部１０が外部メモリ（キャッシュ等も含む）から命令をフェッチレジスタ１２に書き込む。
【０２２８】
デコードステージではデコード部１１０は、フェッチレジスタ１２の内容をデコード部１１０でデコードし、ベクトルレジスタ制御信号１１２−ｒとして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTの情報を出力する。
【０２２９】
読み出し制御部は、制御レジスタ1-0〜1-2、グループ判定回路COMP1〜COMP3、リソースアナライザ７０を含む。
【０２３０】
デコード部１１０から出力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTは制御レジスタ1-0に保持され、また演算ユニット信号UNIT、レジスタセレクト信号SELはOUT0-r（先頭要素のグループの読み出しポートに設けられた選択回路に与える選択制御信号である）に出力されそれぞれのセレクタSELr0とSELs0の選択信号となる。
【０２３１】
次のサイクルでは制御レジスタ1-0の信号をグループ判定回路COMP1において比較を行い、比較結果に基づいてOUT１-r（SEL,UNIT）、制御レジスタ1-1にSEL,UNIT,AMOUNT信号を出力する。
【０２３２】
また次のサイクルでは制御レジスタ1-1の信号をCOMP2で比較を行い比較結果に基づきOUT2-r、制御レジスタ1-2に信号を出力する。
【０２３３】
図２１は、グループ判定回路COMPnの動作いついて説明するためのフローチャート図である。
【０２３４】
グループ判定回路COMPnは、制御レジスタ1-nに格納された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTを受け取ると、ベクトル繰り返し数AMOUNT＝０か否か判断する（ステップＳ２１０、Ｓ２２０）。
【０２３５】
ベクトル繰り返し数AMOUNT＝０である場合には演算ユニット信号UNITにInvalidを選択する（ステップＳ２３０）。
【０２３６】
ベクトル繰り返し数AMOUNT＝０でない場合にはベクトル繰り返し数AMOUNTから１を減算する（ステップＳ２４０）。
【０２３７】
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTを出力する（ステップＳ２５０）。演算ユニット信号UNIT、レジスタセレクト信号SELはOUTn-rとしてグループn-1の読み出しポートの選択回路及び各演算ユニットのソース入力選択回路の選択制御信号となるとともに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNTは次の制御レジスタ1-(n+1)に保持される。
【０２３８】
図２２は、本実施の形態のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
【０２３９】
１２１０はデコード部のレジスタに保持される信号のビット列であり、SEL＿UNIT＿AMOUNTである。
【０２４０】
また１２２０は制御レジスタに保持される信号のビット列であり、SEL＿UNIT＿AMOUNTである。
【０２４１】
また１２３０は選択制御信号のビット列であり、SEL＿UNITである。
【０２４２】
１２４０は読み出し対象となるベクトルレジスタである。
【０２４３】
サイクル１においてデコード部のレジスタに'110＿001＿11’格納されている（１２５０参照）。レジスタセレクト信号SELが’110'（ＶＲ２）、演算ユニット信号UNITが'001'（Ｖ＿Ｂ）、ベクトル繰り返し数信号AMOUNTが'11'（４）を示しており、ベクトルレジスタＶＲ２の先頭要素から４回に達するまで順次インクリメントして要素ベクトルから読み出したデータをソースとして演算ユニットＶ＿Ｂで演算を行うという命令が発行されたことを示している。
【０２４４】
サイクル１においてデコード部から受け取ったレジスタ制御信号'110＿001＿10’は、同じサイクル内でＯＵＴ０−ｒ信号'110＿001’（１２５４参照）として出力される
ＯＵＴ０−ｒ信号は先頭要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの先頭要素ＶＲ２０が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１２５４参照）。
【０２４５】
デコード部から受け取ったレジスタ制御信号'110＿001＿11’は、サイクル２において制御レジスタ1-0に格納される（１２６０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'10’（３）になっている。
【０２４６】
そして制御レジスタの'110＿000＿10’は、同じサイクル２においてＯＵＴ１−ｒ信号（１２６２参照）として出力される。
【０２４７】
ＯＵＴ１−ｒ信号は第２要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第２要素ＶＲ２１が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１２６４参照）。
【０２４８】
制御レジスタ1-0のレジスタ制御信号'110＿001＿10’は、サイクル３において制御レジスタ1-1に格納される（１２７０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'01’（２）になっている。
【０２４９】
そして制御レジスタの'110＿000＿01’は、同じサイクル３においてＯＵＴ２−ｒ信号（１２７２参照）として出力される。
【０２５０】
ＯＵＴ２−ｒ信号は第３要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第３要素ＶＲ２２が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１２７４参照）。
【０２５１】
制御レジスタ1-1のレジスタ制御信号'110＿001＿01’は、サイクル４において制御レジスタ1-2に格納される（１２８０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'00’（１）になっている。
【０２５２】
そして制御レジスタの'110＿000＿00’は、同じサイクル４においてＯＵＴ３−ｒ信号（１２８２参照）として出力される。
【０２５３】
ＯＵＴ３−ｒ信号は第４要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第４要素ＶＲ２３が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１２８４参照）。
【０２５４】
３−２．演算ユニット信号のデコード
本実施の形態では、演算ユニット信号UNIT（演算ユニット特定情報の一例）に基づき、各演算ユニットごとに使用の有無を示す１ビットのマスク信号を生成し、選択回路SELs0からSELs3（ソース入力選択回路の一例）は、対応する演算ユニットのマスク信号に基づき、入力のマスク制御を行うようにしてもよい。
【０２５５】
図２３〜図２５は、演算ユニット信号をデコードしてマスク信号を生成する構成について説明するための図である。
【０２５６】
本実施の形態では、各演算ユニットＶ＿Ａ〜Ｖ＿Ｄに対応して設けられたソース選択回路SELs0〜SELs3は、図２３に示すように選択制御信号OUT1〜OUT4に含まれる演算ユニット信号UNITをデコードしてそれぞれマスク信号UNIT＿CODE1〜UNIT＿CODE4を生成する。
【０２５７】
図２４においてＣＯＤＥは選択制御信号OUT1〜OUT4に含まれる演算ユニット信号であり、ＤＥＣＯＤＥは、ＣＯＤＥをデコードして生成されたマスク信号UNIT＿CODE1〜UNIT＿CODE4である。
【０２５８】
そしてデコードされた信号は図２５に示すように最下位ビットから順に各演算ユニットに対応したマスク信号として接続しなおし、このマスク信号をもとにSELs0からSELs3の選択回路で各ベクトル要素の選択を行う。
【０２５９】
ソース選択回路SELs0〜SELs3では、各演算ユニットに対応したマスク信号の束（V＿A MASK、V＿B MASK、V＿C MASK、V＿D MASK）に基づき、自己が対応する演算ユニットのマスク信号の値が’０’であるか’１’であるかによって、入力信号のマスクの有無を制御する処理を行う。
【０２６０】
３−３．スカラ命令、ベクトル命令が混在する場合
図２６にスカラ命令とベクトル命令が連続的に発行される例を示す。
【０２６１】
ここでスカラレジスタは図２に示すようにベクトルレジスタの先頭要素（第１の要素）と同じグループにグループ化され、読み出しセレクタ（SELr0）を共用しているとする。
【０２６２】
第１命令としては演算ユニットV＿Aのベクトル長4のベクトル命令が発行される。第２命令としてユニットV＿Bのスカラ命令が発行される。この場合第２命令がデコードステージのとき（１３１０）、第１命令のベクトル命令は第２のデコードステージ（Ｄ２）であり（１３２０参照）レジスタの読み出しはSELr１（２番目の要素のグループに設けられたセレクタ）で行われる（読み出しの場合にはデコードステージにおいてベクトルレジスタからの読み出しが行われる）。
【０２６３】
また第２命令のレジスタ命令の読み出し１３１０のデコードステージで、SELr0（先頭のグループに設けられたセレクタ）で行われる。
【０２６４】
図２に示すようにこのようにベクトルレジスタと読み出しポートを共用するスカラレジスタを含む場合にスカラレジスタとベクトルレジスタの先頭要素（第１の要素）とが読み出しポートを共用するように構成すると、スカラ命令とベクトル命令が連続的に発行されても、レジスタ選択回路の競合が起こらず処理することができる。
【０２６５】
また第1命令と第3命令では同じベクトルレジスタVR0,VR1の読み出しを行っているが、図1の従来の構成ではこのような同じベクトルレジスタから複数の読み出しを行うことは出来ない。
【０２６６】
また第３命令としては演算ユニットV＿Dのベクトル長4のベクトル命令が発行される。ここで第１命令と第３命令では同じベクトルレジスタVR0,VR1を使用して読み出しを行っているが、同じサイクル内で第１命令と第３命令が同じベクトルレジスタの同じ要素レジスタから読み出しを行うことはない。言い換えれば第１命令と第３命令は同じサイクル内では同じベクトルレジスタの異なる要素レジスタからの読み出しを行う。
【０２６７】
図３４の従来の構成ではこのような同じベクトルレジスタの異なる要素から同時に読み出しを行うことは出来ないが、本実施の形態では要素グループごとに設けられた読み出し選択回路に競合がおこらないので、同一サイクル内において同じベクトルレジスタから複数の異なる要素要素レジスタのよみだしを行うことができる。
【０２６８】
３−３．演算ユニット用セレクタ回路（ソース選択回路）の競合
本実施の形態では演算ユニット選択回路SELs0〜SELs3（ソース入力選択回路）の競合が起こる可能性がある。このような問題は演算ユニットの競合がおこらないように十分考慮されたプログラムを作成することや、ユニット競合を回避するようにコンパイルすることで回避することも可能である。
【０２６９】
本実施の形態では、読み出し制御回路は、同一のサイクルにおける同一の演算ユニットに対する演算要求の競合を検出して、競合発生信号を生成する競合発生信号生成部を含み、フェッチ部は、前記競合発生信号を受けると次の命令コードのフェッチのサイクル遅らせる制御を行い、デコード部は競合発生信号を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うことで演算ユニットの競合を自動的にプログラム時の配慮やコンパイラによらずとも回避することができる。
【０２７０】
例えば図２０に示すように、本実施の形態の読み出し制御回路では各ベクトル要素でのUNIT情報を保持しているため、ユニットの競合を検出する回路を追加することで容易に回避することが出来る。
【０２７１】
具体的には各制御レジスタ（図２０の１−０、１−１、１−２）のUNIT信号をデコード部１１０から出力されるUNIT信号と比較し同一信号があった場合には、デコード部１１０とフェッチ部１０に競合発生信号７２を送りデコードとフェッチを無効にしプログラムの進行を１サイクル遅らせユニットの競合を回避するようにしてもよい。
【０２７２】
このような機構を取り入れることでユニット競合を回避することが出来、コンパイラーで解決する方法に比べ、NOP命令を挿入する必要が無くなりプログラムサイズを小さくすることが出来る。
【０２７３】
３−４．途中アクセス,巡回アクセス
図２７は、読み出し開始要素を任意に指定可能な構成の読み出し制御部の選択制御信号生成回路１３２の構成を説明するための図である。
【０２７４】
図２０と同じ構成要素については同じ番号や記号を付してあり、説明を省略する。
【０２７５】
図２０と異なるのは、第１の要素のグループに対応したグループ判定回路COMP0が設けられ、デコード部１１０でデコードされたベクトルレジスタ制御信号１１２−ｒが、各グループのグループ判定回路COMP0からCOMP3に入力される点である。またベクトルレジスタの読み出し開始要素を指定するベクトル要素開始アドレス信号ADRS信号が追加されている。
【０２７６】
ベクトルレジスタ制御信号１１２−ｒは、ベクトルレジスタの格納開始位置の要素番号を特定するための開始要素番号特定情報を含み、選択制御信号生成回路は、該開始要素番号特定情報に基づき、ベクトルレジスタからの読み出し開始時に読み出し対象となる要素グループを判断し、読み出し対象であると判断されたグループの読み出しポートの選択回路を動作させるための選択制御信号を所定のタイミングで出力するようにしてもよい。
【０２７７】
本実施のベクトル要素開始アドレス信号ADRS（開始要素番号特定情報の一例）の具体例は、図１０と同様であり説明を省略する。
【０２７８】
読み出し制御部の選択制御信号生成回路１３２は、第１から第Ｎの各グループに対して各グループが読み出し対象であるかいなか判断し、読み出し対象である場合には対応するグループの選択回路に対し選択制御信号を動作させるための選択制御信号を所定のタイミングで出力する第１〜第Ｎのグループ判定回路COMP1〜４を含むように構成することができる。
【０２７９】
第ｎ（ｎ＝０〜Ｎ）のグループ判定回路COMP0〜3を含むように構成することができる。
【０２８０】
デコード部１１０及び第ｎ−１のグループ判定回路が出力するベクトルレジスタ制御信号に基づき第ｎのグループが読み出し対象であるか否か判断する読み出し判断部と、前記ベクトルレジスタ制御信号に基づき要素レジスタからの読み出しがベクトル繰り返し数に達したか否かを判断し、達していない場合にはｎ＋１のグループ判定回路に対しベクトルレジスタ制御信号を出力する繰り返し終了判断部として機能する。
【０２８１】
デコード部１１０はベクトルレジスタ制御信号１１２−ｒとして書き込み開始要素信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数AMOUNT等の情報を出力する。
【０２８２】
選択制御信号生成回路１３２は、要素毎のグループに対応した第ｎのグループ判定回路（ｎ＝０〜３）COMP0〜3、第ｎの制御レジスタ１−ｎ（ｎ＝０〜３）、リソースアナライザ７０を含む。
【０２８３】
第ｎのグループ判定回路COMP0〜3は読み出し開始要素信号ADRS、ベクトル繰り返し信号AMOUNTを比較する比較回路、ベクトル繰り返し信号AMOUNTから1を減算する減算回路、デコード部１１２からの信号と第ｎの用制御レジスタ１−（ｎ−１）からの信号を選択する選択回路からなっている。
【０２８４】
第ｎのグループ判定回路COMP0〜3は、ベクトル要素開始アドレス（ADRS）が当該第ｎのグループ判定回路COMP0〜3の出力先となるグループの要素番号と一致する場合には、選択制御信号OUTnとして演算ユニット信号UNIT、レジスタセレクト信号SELを出力する。
【０２８５】
そして次のサイクルで対応する制御レジスタ１−ｎに、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力する。
【０２８６】
ここでデコード部からの信号に含まれたレジスタセレクト信号SELと、第ｎのデコードステージ用制御レジスタからの信号に含まれたレジスタセレクト信号SELが一致する場合には、同じ要素グループに対する書き込みに競合が発生したことになる。第ｎのグループ判定回路COMP0〜3は、かかる競合を検出した場合にはリソース信号７１−ｎを出力する。リソース信号７１−ｎはリソースアナライザ７０に入力される。
【０２８７】
第ｎの制御レジスタ１−ｎの出力は次のグループ判定回路COMP0〜３の入力となる。なお最後のグループ判定回路COMP３の制御レジスタ１−３の出力は先頭のグループ判定回路COMP０の入力となるようにしてもよい。
【０２８８】
グループ判定回路COMP0〜3の力OUT0-r〜3-rは、SELrn（図２，３，４参照）の選択制御信号となる。
【０２８９】
フェッチステージではフェッチ部１０が図示しない外部メモリ（キャッシュ）から命令を読み出しフェッチレジスタ１２に書き込む。
【０２９０】
デコードステージではフェッチレジスタ１２の内容をデコード部１１０がデコードし、レジスタ制御信号１１２として、ベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを出力し、ベクトル要素開始アドレス信号ADRSに対応したグループ判定回路COMPnが選択制御信号OUTn-rを出力する。
【０２９１】
リソースアナライザ７０及び第ｎのグループ判定回路（ｎ＝０〜３）COMP0〜3は、同一のサイクルにおいて、同一の演算ユニットに対する演算実行の競合を検出して、競合発生信号７２を生成する競合発生信号生成部７０として機能する。
【０２９２】
リソースアナライザ７０は、第ｎのグループ判定回路（ｎ＝０〜３）COMP0〜3から出力された要素競合発生信号７１−０〜７１−３を受け取り、同一要素グループに対する書き込みの競合があった場合には競合発生信号７２をフェッチ部１０、デコード部１１０に対して出力する。
【０２９３】
フェッチ部１０は、競合発生信号７２を受けると次の命令コードのフェッチのサイクル遅らせる制御を行うようにしてもよい。
【０２９４】
またデコード部１１０は、競合発生信号７２を受けると次の命令コードのデコードのサイクルを遅らせる制御を行うようにしてもよい。
【０２９５】
図２８は、読み出し制御部の第ｎのグループ判定回路における判定のアルゴリズムである。
【０２９６】
まず第ｎ−１の制御レジスタ1-(n-1)から、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTの入力を受け、デコード部からベクトル要素開始アドレス信号ADRS、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを受け付ける（ステップＳ３１０）。
【０２９７】
第ｎ−１の制御レジスタ1-(n-1)のベクトル繰り返し数信号AMOUNT=0であるか否か判断する（ステップＳ３２０）。
【０２９８】
AMOUNT=0である場合には、デコード部から受け取ったベクトル要素開始アドレス信号ADRS=第ｎ要素であるか否か判断する（ステップＳ３３０）。
【０２９９】
ADRS=第ｎ要素である場合には、デコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ３４０）。
【０３００】
ADRS=第ｎ要素でない場合には、セレクト信号SELをInvalid信号に変更する（ステップＳ３５０）。
【０３０１】
そしてデコード部から入力された演算ユニット信号UNIT、レジスタセレクト信号SEL（この場合Invalidである）、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ３６０）。
【０３０２】
ステップＳ３２０において、制御レジスタ1-(n-1)のベクトル繰り返し数信号AMOUNT=0でない場合には、AMOUNTから1減算する（ステップＳ３７０）。
【０３０３】
そしてデコード部から受け取ったベクトル要素開始アドレス信号ADRS=第ｎ要素であるか否か判断する（ステップＳ３８０）。
【０３０４】
ベクトル要素開始アドレス信号ADRS=第ｎ要素である場合には、制御レジスタ1-(n-1)の値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力１を選択する（ステップＳ３９０）。
【０３０５】
ベクトル要素開始アドレス信号ADRS=第ｎ要素でない場合には、制御レジスタ1-(n-1)の値を受け取り、演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを選択する。またリソース出力0を選択する（ステップＳ４００）。
【０３０６】
そして演算ユニット信号UNIT、レジスタセレクト信号SEL、ベクトル繰り返し数信号AMOUNTを第ｎの制御レジスタに出力するとともに、リソース信号を出力する（ステップＳ４１０）。
【０３０７】
このようにステップＳ３４０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループの制御レジスタから受け取ったレジスタ制御信号は選択条件を満たさないので、デコード部から受け取ったレジスタ制御信号が選択される（したがって当該グループがベクトルレジスタの最初の読み出しグループとして選択される）。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０３０８】
またステップＳ３６０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たさず、前のグループの制御レジスタから受け取ったレジスタ制御信号も選択条件を満たさないので、当該グループは選択されずSEL信号がInvalidになる。そしてこのときは、選択回路の競合は起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０３０９】
またステップＳ３９０では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号も選択条件を満たすので、前のグループのデコードステージ制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こるのでリソース信号は'1'（リソースの競合あり）となる。
【０３１０】
またステップＳ４００では、デコード部から受け取ったレジスタ制御信号は選択条件を満たすが、前のグループの制御レジスタから受け取ったレジスタ制御信号は選択条件を満たすので、前のグループの制御レジスタから受け取ったレジスタ制御信号が選択される。そしてこのときは、選択回路の競合が起こらないのでリソース信号は'0'（リソースの競合なし）となる。
【０３１１】
例えばベクトルレジスタの第三要素から読み出す場合、デコード部はベクトルレジスタ制御信号として、SELが'110'（VR2）、ADRSが'10'（第三要素）でAMOUNTが'11’(ベクトル長4)となる信号を出力する。
【０３１２】
そしてこの場合グループ判定回路COPM3がデコード部から出力されるADRSと制御レジスタ１−２から出力される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になるまで行う。
【０３１５】
このような制御を行うことでベクトルレジスタの途中からアクセス及び巡回アクセスが可能になる。
【０３１６】
図２９は、読み出し開始要素を任意に指定可能な構成のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
【０３１７】
ベクトル長4でVR2をソースとするV＿Bユニットの命令動作時の制御レジスタと出力信号の読み出しレジスタの関係を示す。またベクトルレジスタの読み出しにおいてベクトル長を（AMOUNT）を0にすることでベクトルレジスタをスカラレジスタとして扱うことが出来る。
【０３１８】
１４１０はデコード部のレジスタに保持される信号のビット列であり、ADRS＿SEL＿UNIT＿AMOUNTである。
【０３１９】
また１４２０は制御レジスタに保持される信号のビット列であり、SEL＿UNIT＿AMOUNTである。
【０３２０】
また１４３０は選択制御信号のビット列であり、SEL＿UNITである。
【０３２１】
１４４０は読み出し対象となるベクトルレジスタである。
【０３２２】
サイクル１においてデコード部のレジスタに'10＿110＿001＿11’格納されている（１４５０参照）。ベクトル要素開始アドレス信号ADRSが'10'（第３要素）、レジスタセレクト信号SELが’110'（ＶＲ２）、演算ユニット信号UNITが'001'（Ｖ＿Ｂ）、ベクトル繰り返し数信号AMOUNTが'11'（４）を示しており、ベクトルレジスタＶＲ２の第３要素から４回に達するまで順次インクリメントして要素ベクトルから読み出したデータをソースとして演算ユニットＶ＿Ｂで演算を行うという命令が発行されたことを示している。
【０３２３】
サイクル１においてデコード部から受け取ったレジスタ制御信号'10＿110＿001＿10’は、同じサイクル内でＯＵＴ２−ｒ信号'110＿001’（１４５４参照）として出力される
ＯＵＴ２−ｒ信号は第３要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第３要素ＶＲ２２が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１４５４参照）。
【０３２４】
デコード部から受け取ったレジスタ制御信号'10＿110＿001＿11’は、サイクル２において制御レジスタ1-2に格納される（１４６０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'10’（３）になっている。
【０３２５】
そして制御レジスタ1-2の'110＿000＿10’は、同じサイクル２においてＯＵＴ３−ｒ信号（１４６２参照）として出力される。
【０３２６】
ＯＵＴ３−ｒ信号は第４要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第４要素ＶＲ２３が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１４６４参照）。
【０３２７】
制御レジスタ1-2のレジスタ制御信号'110＿001＿10’は、サイクル３において制御レジスタ1-3に格納される（１４７０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'01’（２）になっている。
【０３２８】
そして制御レジスタの'110＿000＿01’は、同じサイクル３においてＯＵＴ０−ｒ信号（１４７２参照）として出力される。
【０３２９】
ＯＵＴ０−ｒ信号は第１要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第１要素ＶＲ２０が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１４７４参照）。
【０３３０】
制御レジスタ1-3のレジスタ制御信号'110＿001＿01’は、サイクル４において制御レジスタ1-1に格納される（１４８０参照）。ただしベクトル繰り返し数信号AMOUNTは１だけデクリメントされた値'00’（１）になっている。
【０３３１】
そして制御レジスタの'110＿000＿00’は、同じサイクル４においてＯＵＴ１−ｒ信号（１４８２参照）として出力される。
【０３３２】
ＯＵＴ１−ｒ信号は第２要素のグループのセレクタの選択制御信号となり、SELの'110'に対応したベクトルレジスタの第４要素ＶＲ２１が選択され、当該要素レジスタから読み出された値がUNITの'001'に対応した演算ユニットＶ＿Ｂのソース信号となる（１４８４参照）。
【０３３３】
３−５．読み出しポートの競合及び回避
図３０にレジスタ選択回路が競合する場合のプログラム例を示す。これは第一命令でVR0,VR1を第一要素から順に読み出し、第2命令でVR2,VR3の第2要素から読み出す。この場合第2命令の第一デコードステージで読み出すベクトル要素番号が同一になるためレジスタ選択回路の競合が起こる。
【０３３４】
本実施例ではCOMP0〜COMP3で競合を検出し、リソース信号をリソースアナライザーに入力している。リソースアナライザーでは各信号のオアを取り、競合があった場合にはフェッチ部とデコード部に競合発生信号を送り、デコードとプログラムの信号を1サイクル遅らせる。各グループ判定回路COMPでの読み出し競合の検出は先に発行された命令を優先するようにしてもよい。
【０３３５】
以上のようにインターロック機能を入れることで不要なNOP命令をプログラムに入れる必要が無く、プログラムのコードサイズを小さく出来る効果がある。
【０３３６】
４．マイクロコンピュータ
図３１は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
【０３３７】
本マイクロコンピュータ７００は、ＣＰＵ５１０、キャッシュメモリ５２０、ＬＣＤコントローラ５３０、リセット回路５４０、プログラマブルタイマ５５０、リアルタイムクロック（ＲＴＣ）５６０、ＤＲＡＭコントローラ兼バスＩ／Ｆ５７０、割り込みコントローラ５８０、シリアルインターフェース５９０、バスコントローラ６００、Ａ／Ｄ変換器６１０、Ｄ／Ａ変換器６２０、入力ポート６３０、出力ポート６４０、Ｉ／Ｏポート６５０、クロック発生装置５６０、プリスケーラ５７０及びそれらを接続する汎用バス６８０、専用バス７３０等、各種ピン６９０等を含む。
【０３３８】
ＣＰＵ５１０は、例えば図１〜図３１で説明した構成を有する。
【０３３９】
５．電子機器
図３２に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器８００は、マイクロコンピュータ（またはＡＳＩＣ）８１０、入力部８２０、メモリ８３０、電源生成部８４０、ＬＣＤ８５０、音出力部８６０を含む。
【０３４０】
ここで、入力部８２０は、種々のデータを入力するためのものである。マイクロコンピュータ８１０は、この入力部８２０により入力されたデータに基づいて種々の処理を行うことになる。メモリ８３０は、マイクロコンピュータ８１０などの作業領域となるものである。電源生成部８４０は、電子機器８００で使用される各種電源を生成するためのものである。ＬＣＤ８５０は、電子機器が表示する各種の画像（文字、アイコン、グラフィック等）を出力するためのものである。  音出力部８６０は、電子機器８００が出力する各種の音（音声、ゲーム音等）を出力するためのものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【０３４１】
図３３（Ａ）に、電子機器の１つである携帯電話９５０の外観図の例を示す。この携帯電話９５０は、入力部として機能するダイヤルボタン９５２や、電話番号や名前やアイコンなどを表示するＬＣＤ９５４や、音出力部として機能し音声を出力するスピーカ９５６を備える。
【０３４２】
図３３（Ｂ）に、電子機器の１つである携帯型ゲーム装置９６０の外観図の例を示す。この携帯型ゲーム装置９６０は、入力部として機能する操作ボタン９６２、十字キー９６４や、ゲーム画像を表示するＬＣＤ９６６や、音出力部として機能しゲーム音を出力するスピーカ９６８を備える。
【０３４３】
図３３（Ｃ）に、電子機器の１つであるパーソナルコンピュータ９７０の外観図の例を示す。このパーソナルコンピュータ９７０は、入力部として機能するキーボード９７２や、文字、数字、グラフィックなどを表示するＬＣＤ９７４、音出力部９７６を備える。
【０３４４】
本実施の形態のマイクロコンピュータを図３３（Ａ）〜図３３（Ｃ）の電子機器に組みこむことにより、コストパフォーマンスの高い電子機器を提供することができる。
【０３４５】
なお、本実施形態を利用できる電子機器としては、図３３（Ａ）、（Ｂ）、（Ｃ）に示すもの以外にも、携帯型プレーヤ、電子カメラ、携帯型情報端末、ページャー、電子卓上計算機、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、ビューファインダ型又はモニタ直視型のビデオテープレコーダ、カーナビゲーション装置等のＬＣＤを使用する種々の電子機器を考えることができる。
【０３４６】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０３４７】
上記実施の形態ではベクトルレジスタに対して、同一の要素番号を有する要素レジスタがグループ化され、各グループ毎に読み出しポート及び書き込みポートの両方を有する場合を例にとり説明したが、いずれか一方のみを有する構成でもよい。
【図面の簡単な説明】
【０３４８】
【図１】本実施の形態のプロセッサの構成について説明するための図である。
【図２】レジスタファイルの構成を示す図である。
【図３】本実施の形態の書き込み／読み出しデータパスを示す図である。
【図４】本実施の形態の書き込みデータパスについて説明するための図である。
【図５】本実施の形態のパイプライン構成の一例である。
【図６】書き込み制御部の選択制御信号生成回路の構成を説明するための図である。
【図７】レジスタセレクト信号SEL具体例である。
【図８】ベクトル繰り返し数信号AMOUNTの具体例である。
【図９】演算ユニット信号UNITの具体例である。
【図１０】ベクトル要素開始アドレス信号ADRSの具体例である。
【図１１】第ｎのグループ判定回路における判定のアルゴリズムである。
【図１２】ベクトル命令時の各レジスタへの書き込みタイミングを説明するための図である。
【図１３】本実施の形態においてベクトル命令が連続して発行された場合のパイプライン処理の例について説明するための図である。
【図１４】書き込みポートの選択回路の使用に競合が発生する場合のプログラム例である。
【図１５】ベクトルレジスタとスカラレジスタが書き込みポートを共有する構成のデータパス部を示す。
【図１６】本実施の形態においてベクトル命令に続いてスカラ命令が発行された場合のパイプライン処理の例について説明するための図である。
【図１７】５段パイプラインについて説明するための図である
【図１８】５段パイプラインの場合の選択制御信号生成部の構成を説明するための図である。
【図１９】ベクトル命令の先頭の書き込み要素が固定されている場合の選択制御信号生成部の構成である。
【図２０】本実施の形態の読み出し制御部の選択制御信号生成回路の構成の一例を説明するための図である。
【図２１】グループ判定回路COMPnの動作いついて説明するためのフローチャート図である。
【図２２】本実施の形態のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
【図２３】演算ユニット信号をデコードしてマスク信号を生成する構成について説明するための図である。
【図２４】演算ユニット信号をデコードしてマスク信号を生成する構成について説明するための図である。
【図２５】演算ユニット信号をデコードしてマスク信号を生成する構成について説明するための図である。
【図２６】スカラ命令とベクトル命令が連続的に発行される例を示す。
【図２７】読み出し開始要素を任意に指定可能な構成の読み出し制御部の選択制御信号生成回路の構成を説明するための図である。
【図２８】読み出し制御部の第ｎのグループ判定回路における判定のアルゴリズムである。
【図２９】読み出し開始要素を任意に指定可能な構成のベクトル命令実行時の制御レジスタと出力信号及び読み出しレジスタの関係について説明するための図である。
【図３０】レジスタ選択回路が競合する場合のプログラム例を示す。
【図３１】本実施の形態のマイクロコンピュータのハードウエアブロック図。
【図３２】マイクロコンピュータを含む電子機器のブロック図の一例を示す。
【図３３】図３３（Ａ）（Ｂ）（Ｃ）は、種々の電子機器の外観図の例である。
【図３４】比較例の書き込みデータパスの構成を示す図である。
【符号の説明】
【０３４９】
１  ＣＰＵコア（プロセッサ）、１０  フェッチ部、１２  フェッチレジスタ、７０  リソースアナライザ、１００  レジスタファイル、１１０  デコード部、１１２−ｗ  １１２−ｒ  レジスタ制御信号、１２２  書き込み制御部、１２２  選択制御信号生成回路、１３０  読み出し制御回路、１３３  選択制御信号生成回路、SELd0〜SELd3  書き込みセレクタ（選択回路）、ＶＲ０〜ＶＲ３  、ＶＲ００〜ＶＲ３０  第１の要素グループの要素レジスタ、ＶＲ０１〜ＶＲ３１  第２の要素グループの要素レジスタ、ＶＲ０２〜ＶＲ３２  第３の要素グループの要素レジスタ、ＶＲ０３〜ＶＲ３３  第４の要素グループの要素レジスタ、ベクトルレジスタ、SELr0〜SELr3  読み出しセレクタ（選択回路）、SEL＿A〜SEL＿E  ソース入力選択回路、SR0〜SR3  スカラレジスタセンタ、Ｖ＿Ａ〜Ｖ＿Ｅ  演算ユニット、COMP0〜COMP3  グループ判定回路、０−Ｄ〜３−Ｄ  デコードステージ制御レジスタ、０−Ｅ〜３−Ｅ  実行ステージ制御レジスタ、ＯＵＴ０−ｗ〜ＯＵＴ３−ｗ  ＯＵＴ０−ｒ〜ＯＵＴ３−ｒ  選択制御信号、１−０〜１−３  制御レジスタ、SEL  レジスタセレクト信号、AMOUNT  ベクトル繰り返し数信号、UNIT  演算ユニット信号、ADRS  ベクトル要素開始アドレス信号
【図１】
2007280297.tif 000003
【図２】
2007280297.tif 000004
【図３】
2007280297.tif 000005
【図４】
2007280297.tif 000006
【図５】
2007280297.tif 000007
【図６】
2007280297.tif 000008
【図７】
2007280297.tif 000009
【図８】
2007280297.tif 000010
【図９】
2007280297.tif 000011
【図１０】
2007280297.tif 000012
【図１１】
2007280297.tif 000013
【図１２】
2007280297.tif 000014
【図１３】
2007280297.tif 000015
【図１４】
2007280297.tif 000016
【図１５】
2007280297.tif 000017
【図１６】
2007280297.tif 000018
【図１７】
2007280297.tif 000019
【図１８】
2007280297.tif 000020
【図１９】
2007280297.tif 000021
【図２０】
2007280297.tif 000022
【図２１】
2007280297.tif 000023
【図２２】
2007280297.tif 000024
【図２３】
2007280297.tif 000025
【図２４】
2007280297.tif 000026
【図２５】
2007280297.tif 000027
【図２６】
2007280297.tif 000028
【図２７】
2007280297.tif 000029
【図２８】
2007280297.tif 000030
【図２９】
2007280297.tif 000031
【図３０】
2007280297.tif 000032
【図３１】
2007280297.tif 000033
【図３２】
2007280297.tif 000034
【図３３】
2007280297.tif 000035
【図３４】
2007280297.tif 000036