(57)【要約】【課題】ベクトル処理を効率的に行うことができる演算処理装置および携帯端末の提供を図る。【解決手段】１つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを格納する第１マスク格納部４１と、前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを格納する第２マスク格納部４２と、を有する。【選択図】図７
2013186547.tif 000002
【特許請求の範囲】
【請求項１】
１つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを格納する第１マスク格納部と、
前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを格納する第２マスク格納部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記第２マスクデータを使用する場合、前記第２マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第２マスクデータを使用する場合、前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする請求項２に記載の演算処理装置。
【請求項４】
さらに、
前記第１マスクデータを使用する第１マスクモード、または、前記第２マスクデータを使用する第２マスクモードを格納するモード格納部を含む、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の演算処理装置。
【請求項５】
さらに、
前記第２マスクデータを前記第１マスクデータと同じ形式のデータに変換する変換器と、
前記モード格納部に前記第１マスクモードが格納されているときは、前記第１マスク格納部に格納された前記第１マスクデータを選択し、前記モード格納部に前記第２マスクモードが格納されているときは、前記変換器により変換された前記第１マスクデータと同じ形式のデータを選択する選択器と、
を含むことを特徴とする請求項４に記載の演算処理装置。
【請求項６】
さらに、
前記モード格納部に前記第２マスクモードが格納されているときは、前記第２マスクデータから前記連続して有効になる数の終端を判定する終端判定回路を含む、
ことを特徴とする請求項４または請求項５に記載の演算処理装置。
【請求項７】
第１および第２の無線通信方式を含む異なる複数の無線通信方式により通信を行うベースバンド処理部を備える携帯端末であって、
前記ベースバンド処理部は、
前記第１無線通信方式による通信を行うための第１モジュールと、
前記第２無線通信方式による通信を行うための第２モジュールと、
パラメータにより設定を変更できる専用ハードウェアと、を含み、
前記第１モジュールおよび前記第２モジュールは、それぞれ請求項１乃至請求項６のいずれか１項に記載の演算処理装置を含む、
ことを特徴とする携帯端末。
【請求項８】
前記第１モジュールおよび前記第２モジュールは、前記第１無線通信方式の第１基地局および前記第２無線通信方式の第２基地局からの感度に従って選択される、
ことを特徴とする請求項７に記載の携帯端末。
【請求項９】
１つのベクトル命令により配列データに対して複数の演算を実行する演算処理方法であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを設定し、
前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを設定し、
前記第１マスクデータを使用する第１マスクモード、または、前記第２マスクデータを使用する第２マスクモードを設定し、
前記第２マスクモードを設定した場合に、前記第２マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする演算処理方法。
【請求項１０】
さらに、
前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする請求項９に記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願で言及する実施例は、演算処理装置、携帯端末および演算処理方法に関する。
【背景技術】
【０００２】
従来、配列データに対する計算(ベクトル演算)を１命令で処理可能な演算処理装置(プロセッサ)として、ベクトルプロセッサが利用されている。このようなベクトルプロセッサは、気象予測や流体解析といった科学技術計算のみならず、携帯端末のソフトウェア無線(ＳＤＲ：Software Defined Radio)への適用も考えられている。
【０００３】
ベクトルプロセッサは、複数の演算器に対して連続的にデータを投入することで、高い演算スループットを得ることでき、１サイクルで処理可能なデータ数を増やす様々な工夫も行われている。
【０００４】
ところで、従来、ベクトルプロセッサ(演算処理装置)としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭５７−０２７３６４号公報
【特許文献２】特開昭５７−０２７３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ベクトルプロセッサで処理を効率的に行うには、１つのベクトル命令で演算するデータ数(ベクトル長：ＶＬ)を大きくして１命令で多くのデータを扱うようにするのが好ましい。
【０００７】
一方、処理するデータ数が、ベクトルプロセッサで指定できるＶＬの設定範囲を超える場合、複数回に分けて行わなければならない。ここで、処理するデータ数が２のべき乗で無い場合、端数の設定を行う。端数の設定方法として、以下の３つの方法がある。それぞれの方法の説明において、処理するデータ数は１００個であるとする。
【０００８】
第１の方法は、最終回(２サイクル目)でＶＬを調整するもので、ＶＬ＝６４で処理した後、ＶＬを変更(ＶＬ＝３６)して処理する。この第１の方法には、ＶＬを書き換えるサイクルコストがかかるといった課題がある。なお、ＶＬの書き換える最も簡単な手法は、実行命令が無い時に書き換えることが考えられる。
【０００９】
第２の方法は、均等のＶＬを選択するもので、ＶＬ＝５０で処理した後、同じＶＬ＝５０で処理、すなわち、１サイクル目と２サイクル目の両方をＶＬ＝５０で処理する。この第２の方法には、データ長が動的に変化する場合、最適な繰り返し数(均等のＶＬ)を見つける処理を行うことになるといった課題がある。
【００１０】
第３の方法は、最終回(２サイクル目)でマスクレジスタにより調整するもので、ＶＬ＝６４で処理した後、ＶＬ＝６４で処理し、最終回の処理において、マスクレジスタにより[0..35]を有効(True)とし、[36..63]を無効(False)とする。
【００１１】
第３の方法を実施するには、例えば、マスクレジスタに[0..35]が有効で[36..63]が無効であると指定するマスク命令を新たに準備することになる。
【００１２】
また、第３の方法では、ＶＬに対応する６４ビットのビットパターンをメモリ上に格納しておき、それをロードするといった処理を行うことになり、処理を行わない(無効になっている)データ部分もサイクルがかかることになる。
【００１３】
以上の通り、処理するデータ数がベクトルプロセッサで指定できるＶＬの設定範囲を超え、また、処理するデータ数が様々に変化すると、ベクトルプロセッサの処理を効率的に行うことが難しい。すなわち、処理するデータ数がベクトルプロセッサで指定できるＶＬの設定範囲を超えた状態で処理するデータ数が変化しても、データを効率的に処理することが難しいといった課題がある。
【課題を解決するための手段】
【００１４】
一実施形態によれば、１つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、第１マスク格納部と、第２マスク格納部と、を有する演算処理装置が提供される。
【００１５】
前記第１マスク格納部は、前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを格納し、前記第２マスク格納部は、前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを格納する。
【発明の効果】
【００１６】
開示の演算処理装置、携帯端末および演算処理方法は、ベクトル処理を効率的に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、演算処理装置の一例において複数の命令を実行する様子を説明するためのタイミング図である。
【図２】図２は、演算処理装置におけるマスクレジスタを説明するための図である。
【図３】図３は、マスクレジスタの機能を説明するための図である。
【図４】図４は、本実施例が適用される演算処理装置の一例を示すブロック図である。
【図５】図５は、図４の演算処理装置におけるスカラーレジスタを説明するための図である。
【図６】図６は、図４の演算処理装置におけるベクトルレジスタを説明するための図である。
【図７】図７は、図４の演算処理装置におけるマスクレジスタの一実装例を説明するための図である。
【図８】図８は、本実施例の演算処理装置における読み出し動作を説明するための図である。
【図９】図９は、本実施例の演算処理装置におけるマスクレジスタの一例を示すブロック図である。
【図１０】図１０は、図９のマスクレジスタにおけるアドレスとデータ配置を説明するための図である。
【図１１】図１１は、図９のマスクレジスタにおける変換器の処理を説明するための図である。
【図１２】図１２は、本実施例の演算処理装置におけるビットパターンマスクモードでの動作の一例を説明するためのタイミング図である。
【図１３】図１３は、本実施例の演算処理装置における整数マスクモードでの動作の一例を説明するためのタイミング図である。
【図１４】図１４は、ビットパターンマスクモードおよび整数マスクモードにおけるデータエントリの例を示す図である。
【図１５】図１５は、本実施例の演算処理装置におけるベクトル命令でのマスクレジスタ書き込みを説明するための図である。
【図１６】図１６は、本実施例の演算処理装置におけるスカラー命令でのマスクレジスタ書き込みを説明するための図である。
【図１７】図１７は、本実施例の演算処理装置における命令発行制御を説明するための図(その１)である。
【図１８】図１８は、本実施例の演算処理装置における命令発行制御を説明するための図(その２)である。
【図１９】図１９は、本実施例の演算処理装置におけるマスクレジスタの他の実装例を説明するための図である。
【図２０】図２０は、本実施例の演算処理装置における整数マスクデータの設定の変形例を説明するための図である。
【図２１】図２１は、本実施例の携帯端末の一例を模式的に示す図である。
【図２２】図２２は、本実施例の携帯端末におけるベースバンド処理部の一例を示すブロック図である。
【図２３】図２３は、本実施例の携帯端末による異なる通信方式を切り替えて通信を行うソフトウェア無線機能の一例を説明するための図である。
【図２４】図２４は、図２３のソフトウェア無線機能を実現する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
まず、本実施例の演算処理装置、携帯端末および演算処理方法を詳述する前に、演算処理装置の一例における命令の実行、並びに、マスクレジスタに関して、図１〜図３を参照して説明する。図１は、演算処理装置の一例において複数の命令を実行する様子を説明するためのタイミング図である。
【００１９】
図１において、演算処理装置(ベクトルプロセッサ)は、配列データに対するベクトル演算を１命令で処理可能なプロセッサであり、演算器に対して連続的にデータを投入することで高い演算スループットを得るようになっている。
【００２０】
また、ベクトルプロセッサは、並列に動作可能な複数の演算器を有し、連続した配列データに対しては、［スタートアップ(レイテンシ)＋データ数／演算器数］サイクルで処理するようになっている。また、同時動作可能な複数のベクトルパイプラインを設け、命令を並列に実行することで、さらなる性能向上を図ることも行われている。
【００２１】
例えば、８個の１６ビット演算器を有するベクトルプロセッサは、６４要素を持つ配列データに対して演算を行う場合、スタートアップを４サイクルにすると、４＋６４／８＝１２サイクルで演算を終えることができる。なお、スタートアップは、全てのパイプラインにデータが流れるまでの時間(サイクル)に対応する。
【００２２】
ここで、各演算器では、例えば、命令のフェッチ(fetch)、デコード(decode)、レジスタからの読み出し(reg. read)、実行(execute)およびライトバック(writeback)の５つの処理が行われる。
【００２３】
なお、図１の各ブロック中の『０..７』，『８..１５』，…，『５６..６３』は、それぞれ６４要素の配列データ『０..６３』において、各演算器で１サイクルごとに処理される８要素のデータを示している。
【００２４】
図２は、演算処理装置におけるマスクレジスタを説明するための図であり、１つのベクトルパイプラインにおける処理の一例を示すものである。
【００２５】
まず、ベクトル長およびマスクレジスタを説明する。まず、１つのベクトル命令で演算するデータ数を、ベクトル長(Vector Length：ＶＬ)と呼ぶ。このＶＬは、一般に、制御レジスタなどに値が格納され、ベクトル命令は、その制御レジスタを参照して動作を行う。なお、ＶＬは、例えば、演算処理装置(ベクトルプロセッサ)の回路リソースの制限によって、指定できる最大値が決められている。
【００２６】
また、演算の有効(Ｔ：true)または無効(Ｆ：false)を指定するレジスタをマスクレジスタ(ＭＲ)と呼ぶ。ベクトル命令を実行する際、ＶＬと同じだけのＭＲを読み出し、対応するＭＲが有効(Ｔ)であればその演算を行い、無効(Ｆ)であればその演算結果を無効化する。
【００２７】
なお、簡単な実装としては、ＭＲ(ＭＲの設定値)をデスティネーション(データの格納先)レジスタへのライトイネーブル(Write Enable：ＷＥ)信号として使用することができる。すなわち、ＭＲが有効であれば、演算結果のデータをデスティネーションレジスタに書き込み、ＭＲが無効であれば、演算結果のデータをデスティネーションレジスタに書き込まないように制御する。
【００２８】
ここで、ベクトル命令は、ループを用いた処理に適用することができ、マスクレジスタの機能があると、ループ内に条件分岐がある場合にもベクトル命令の適用が可能になる。
【００２９】
具体的に、ａ［ｉ］とｂ［ｉ］の配列を加算してａ［ｉ］に格納する場合を考える。なお、負の値の時はａ［ｉ］に格納する値を『０』に置き換えるものとする。図２において、ソースとして、ａ［ｉ］(a[0..63])を読み出すベクトルレジスタ(ＶＲ)３とマスクレジスタ(ＭＲ)４のみが描かれているが、ｂ［ｉ］(b[0..63])を読み出すＶＲは、ａ［ｉ］を読み出すＶＲと同様のもので、図２では省略されている。
【００３０】
また、図２の例では、ベクトルパイプライン６０が１６ビット演算器を８個持ち、毎サイクルで１６ビット演算を８並列に処理するようになっている。すなわち、ＶＬ＝６４の時、実際の回路では、１６ビット演算器を幅方向に６４個だけ並べると実装面積が大きくなることが難しい(面積的に不利なため)。そこで、例えば、８個の１６ビット演算器を８サイクルに渡って処理することにより、ＶＬ＝６４の演算命令を実行して実装面積を小さくしている。
【００３１】
元のアルゴリズム
for(i=0; i<64; i++)｛
a[i] = a[i] + b[i];
if(a[i] < 0) a[i] = 0;
｝
【００３２】
ベクトル命令で置き換えた例(その命令の動作の概要)
vload sr1 vr1    (配列データをvr1へ読み出す)
vload sr2 vr2    (配列データをvr2へ読み出す)
vadd vr1 vr1 vr2    (vr1 + vr2 -> vr1)
vcmp mr3 vr1 #0    (if(vr1[i] < 0 ) mr3[i] = true ; else mr3[i] = false)
vset  vr1 #0 mr3    (if(mr3[i] = true) vr1[i] = 0; else vr1[i] = vr1[i])
vstore sr1 vr1    (vr1 をメモリへ書き戻す)
【００３３】
ここで、ａ［ｉ］とｂ［ｉ］の配列を加算した結果(演算結果)をデスティネーション(データの格納先)であるａ［ｉ］に格納する場合、各要素(データ)に対応する１ビット毎のマスクビットの値により書き込みを制御する。
【００３４】
具体的に、マスクビットが『１』ならば有効として演算結果のデータを書き込むように制御し、マスクビットが『０』ならば無効として演算結果のデータを書き込まないように制御する。なお、マスクビットは、１ビットに限定されるものではなく、他の機能を付加するために２ビット以上にすることもできる。
【００３５】
図３は、マスクレジスタの機能を説明するための図である。図３に示されるように、マスクレジスタは、ＶＬを変えることなく演算データ数を変えるために使用されることもある。すなわち、図３に示されるように、前半の１０個がＴ(有効)で、後半の残り５４個がＦ(無効)のマスクレジスタを用いることで、１０個の演算を行うことが可能になる。
【００３６】
そして、予めこのようなマスクレジスタを用意しておくことにより、ＶＬを書き換えるオーバーヘッドを無くしてベクトル命令を実行することができる。ただし、後半のＦの部分に対しては、所定のサイクルがかかるため、ベクトル長を書き換えたほうが高速に動作する場合もある。
【００３７】
ここで、データ数がＶＬの最大値より大きい場合、複数回命令を実行して処理することになるが、この時、適切な回数を選べないと、最終回に端数の処理を行うことになる。
【００３８】
例えば、ＶＬ＝６４でデータ数が２５０個の場合、２５０＝６４＋６４＋６４＋５８となるため、最終回(４サイクル目)は、５８個のデータだけを処理することになる。これは、特に、演算処理装置を組み込み用途として使用する分野においては、例えば、スーパーコンピュータと比較してＶＬが短いため、端数の処理(データ数を変えるオーバーヘッド、ＶＬの変更、マスクの設定)の影響が大きく出てしまう。
【００３９】
ところで、様々なデータ数(データ長)のベクトル演算を行う場合、例えば、ＶＬ(ベクトル長)を変更するか、マスクレジスタを指定するかの２通りが考えられる。ここで、マスクレジスタのデータ(ビットパターンマスクデータ)は、ＶＬに対応するビットのＴ(有効)かＦ(無効)のデータを持つ。
【００４０】
この設定は、１サイクルで行うのは難しいため、複数サイクルかけて設定されることになる。すなわち、演算の結果としての書き込み、および、メモリからの読み出しデータの書き込みを行うことになる。
【００４１】
まず、ＶＬを変更する場合(前述した第１および第２の方法)、ＶＬを書き換えるサイクルコストがかかり、また、データ長が動的に変化する場合、最適な繰り返し数を見つける処理を行うことになるため、処理効率の低下を招く。
【００４２】
また、マスクレジスタを指定する場合、連続するデータにおいて、必ずしも前半に有効(True)なデータが連続し、後半に無効(False)なデータが連続するとは限らない。そのため、ＶＬを変えずにビットパターンマスクデータにより端数の処理を行うと、無効だけの演算であっても、規定回数の処理を繰り返して行うことになる。すなわち、無効だけの演算を行うことにより、処理効率の低下を招く。
【００４３】
以下、演算処理装置、携帯端末および演算処理方法の実施例を、添付図面を参照して詳述する。図４は、本実施例が適用される演算処理装置の一例を示すブロック図である。図４において、参照符号１は演算処理装置(ベクトルプロセッサ)、２はスカラーレジスタ(ＳＲ)、３はベクトルレジスタ(ＶＲ)、そして、４はマスクレジスタ(ＭＲ)を示す。
【００４４】
さらに、参照符号５は命令デコーダ、５１は制御レジスタ、６はパイプライン演算部、７は命令メモリ、そして、８はデータメモリを示す。
【００４５】
図４に示されるように、ベクトルプロセッサ１は、命令デコーダ(デコードロジック)５、パイプライン演算部６、スカラーレジスタ２、ベクトルレジスタ３、および、マスクレジスタ４を有する。ここで、パイプライン演算部６は、１本のスカラーパイプライン６１と、４本のベクトルパイプライン６２〜６５を有する。
【００４６】
なお、制御レジスタ５１は、前述したように、ベクトル長(ＶＬ)等の値を保持するが、例えば、後に図２０を参照して説明するように、有効となる連続したデータ(演算)がＶＬの先頭からではない場合、その有効となる連続したデータの開始位置を指定するためにも使用される。
【００４７】
ベクトルレジスタ３およびマスクレジスタ４は、ベクトル演算用のレジスタであり、スカラーレジスタ２は、スカラー演算用のレジスタである。各ベクトルパイプライン６２〜６５では、以下で説明するベクトルレジスタ３に対し、ベクトル長(ＶＬ)個のデータ演算を行うことができる。
【００４８】
ここで、ベクトルパイプライン６２および６３は、ＡＬＵ，乗算，論理演算などの演算命令のベクトル処理を実行し、また、ベクトルパイプライン６４および６５は、ロードストア(Load/Store：ＬＤ／ＳＴ)などの転送命令のベクトル処理を実行する。
【００４９】
なお、図４に示すベクトルプロセッサ１は、さらに、１本のスカラーパイプライン６１も有しており、このスカラーパイプライン６１により、スカラーレジスタ２のデータを１個計算することができるようになっている。すなわち、スカラーパイプライン６１は、ＡＬＵ，ＬＤ，ＳＴなどの命令のスカラー処理を実行する。
【００５０】
前述した図２に示されるように、各ベクトルパイプライン６２〜６５(６０)は、例えば、１６ビットの演算器を８個ずつ有し、それぞれ毎サイクル、１６ビット演算を８並列で演算することができるようになっている。
【００５１】
なお、データメモリ８は、例えば、４つのバンク(メモリブロック)を有し、マルチプレクサ・デマルチプレクサ(図示しない)を介してスカラーパイプライン６１およびベクトルパイプライン６２〜６５に接続されている。
【００５２】
ここで、本明細書では、演算のＴ／Ｆを指定するビットパターンマスクデータを格納するレジスタだけでなく、後述するように、整数マスクのデータを格納するレジスタやモードを格納するレジスタも含めてマスクレジスタＭＲ(マスクレジスタ部)と称する。さらに、マスクレジスタ部には、整数マスクデータをビットパターンマスクデータに変換する変換器(コンバータ)や選択器(セレクタ)等も含まれるものとする。
【００５３】
図５は、図４の演算処理装置におけるスカラーレジスタを説明するための図である。図５に示されるように、スカラーレジスタ(ＳＲ)２は、例えば、３２ビット幅のレジスタであり、アドレス(address)等のデータが格納される。
【００５４】
図６は、図４の演算処理装置におけるベクトルレジスタを説明するための図である。図６に示されるように、ベクトルレジスタ(ＶＲ)３は、例えば、１２８ビット幅のレジスタであり、各エントリに対して１６ビットデータを８個ずつ格納する。
【００５５】
図７は、図４の演算処理装置におけるマスクレジスタの一実装例を説明するための図であり、図７(ａ)はマスクレジスタ(部)４の構成を示し、図７(ｂ)はビットパターンマスクモードと整数マスクモードの例を示す。
【００５６】
ここで、ビットパターンマスクモードは、１つのベクトル命令により配列データに対して複数の演算を実行するベクトル演算処理装置において、その複数の演算に対して、それぞれ有効または無効な演算をビット単位で指定するモードである。
【００５７】
また、整数マスクモードは、複数の演算に対して、連続して有効になる数(例えば、先頭から連続して有効になる数)を整数で指定するモードである。なお、ベクトル演算処理装置(ベクトルプロセッサ)は、例えば、図４を参照して説明したように、スカラーパイプライン(６１)とベクトルパイプライン(６２〜６５)を有する。
【００５８】
また、図１５を参照して後に詳述するように、スカラー命令でマスクレジスタＭＲをデスティネーションとする命令では、ＭＲを整数マスクモードとして書き込みを行ってもよい。
【００５９】
図７(ａ)に示されるように、マスクレジスタ４は、８ビット幅で５１２ビット分のビットデータを格納するビットパターンマスク格納部４１、５ビット幅の整数マスク格納部４２、および、１ビット幅のモード格納部４３をデータエントリとして持つ。
【００６０】
ここで、ビットパターンマスク格納部４１は、一般的なベクトルプロセッサのマスクレジスタにも設けられているが、整数マスク格納部４２およびモード格納部４３は、本実装例のマスクレジスタにおいて新たに追加されたものである。
【００６１】
なお、本実施例によれば、ビットパターンマスク格納部４１と共に、整数マスク格納部４２およびモード格納部４３を設けることにより、整数マスクモードを使用して、ベクトル処理を効率的に行うことができる。
【００６２】
すなわち、本実施例は、複数の演算に対して有効または無効な演算をビット単位で指定する機能だけを有するベクトルプロセッサに比して、連続して有効になる数を指定する整数マスクモードの機能を利用することができる。
【００６３】
この整数マスクモード(整数マスク格納部)により、前もって連続して有効になる演算の数が分かるため、それ以降の無効部分については演算を不要とすることができ、それにより不要な演算を低減して、ベクトル処理を効率的に行うことが可能になる。
【００６４】
図７に示す実装例では、オペランドとして指定できるＭＲレジスタは８個(ＭＲ０〜ＭＲ７)までであり、ビットパターンマスク格納部４１，整数マスク格納部４２およびモード格納部４３を８個持つことになる。
【００６５】
ここで、後に図１９を参照して詳述するが、図７のように、整数マスク格納部４２およびモード格納部４３を新たなレジスタとして追加せずに、一般的なベクトルプロセッサのレジスタエントリを整数マスク格納部４２として使用(共用)することもできる。
【００６６】
図７(ｂ)は、モード格納部４３の値(フラグ)が『０』のビットパターンマスクモードと、モード格納部４３の値が『１』の整数マスクモードの例を示し、両方とも、先頭から３個のデータが有効(Ｔ)で、その後のデータが全て無効(Ｆ)の場合を表している。
【００６７】
まず、モード格納部４３の値が『０』でビットパターンマスクモードとなるＭＲ０では、ビットパターンマスク格納部４１に対して、最初の３ビットが『１，１，１』でその後の全てのビットが『０，０，…，０』となるビットパターンが格納される。
【００６８】
なお、このビットパターンマスクモードにおいて、整数マスク格納部４２の値は、任意の値(ｘ)でよい。また、ビットパターンマスクモードでは、全てのデータ(要素)に対して、それぞれ有効／無効を示すビットを割り当てるため、必ずしも有効となるデータが連続しないこともある。
【００６９】
次に、モード格納部４３の値が『１』で整数マスクモードとなるＭＲ１では、整数マスク格納部４２に対して、整数値『３』が格納される。なお、この整数マスクモードにおいて、ビットパターンマスク格納部４１の全てのビットは、任意の値(ｘ)でよい。
【００７０】
整数マスク格納部４２に格納される整数値(整数データ)は、先頭から連続して有効(Ｔ)となるデータの個数を示しており、いちど無効(Ｆ)が出現すると、それ以降は全て無効であることが分かるため、それ以降の演算を実行しなくてもよい。
【００７１】
従って、無効が出現した時点で、それまでの命令を中止し、パイプラインリソースを解放して、後続の命令を実行させることで、処理を高速化する(効率的に行う)ことが可能になる。
【００７２】
このように、本実施例では、マスクレジスタ４に対して、整数マスクモードまたはビットパターンマスクモードを設定するモード格納部４３と、先頭から有効となる連続したデータ(演算)の個数を示す整数値を格納する整数マスク格納部４２を新たに追加する。
【００７３】
ここで、モード格納部４３は、各ＭＲで１ビットでもよく、また、整数マスク格納部４２は、ベクトル長(ＶＬ)の最大値をVLMとすると、Log2(VLM)ビット分(例えば、VLM＝３２の場合、５ビット幅)でよいため、レジスタの増加はさほど問題とはならない。
【００７４】
すなわち、VLMがこの程度の大きさであれば(VLM＝１０２４程度でも)、別のレジスタからのムーブ、および、即値からのセットを１サイクルで実行することができる。
【００７５】
なお、モードレジスタ４に対して、整数マスク格納部４２に格納された整数値をビットデータに変換してパイプラインに供給する変換器(４４)を設けることで、ユーザ(プログラマ)は通常のベクトルプロセッサと同様に使用することができる。すなわち、プログラマからは、整数マスク格納部４２やモード格納部４３といったレジスタは見えないため、気にすることなく使用することができる。これは、図９を参照して、後に、詳述する。
【００７６】
また、整数マスクモードでは、例えば、先頭から有効となる連続したデータ数(演算結果のデータの数)を整数マスク格納部４２に格納するが、後に図２０を参照して詳述するように、必ずしも先頭から連続しなくても、有効となるデータが連続していればよい。
【００７７】
図８は、本実施例の演算処理装置における読み出し動作を説明するための図であり、ベクトルレジスタ３およびマスクレジスタ４をソースとし、ベクトルレジスタ３をデスティネーションとするベクトル命令の動作を説明するためのものである。
【００７８】
図８に示されるように、ベクトルパイプライン６０(６２〜６５)は、命令デコード(ＩＤ)ステージ、レジスタリード(ＲＲ)ステージ、実行(ＥＸ)ステージ、メモリ参照(ＭＭ)ステージおよびライトバック(ＷＢ)ステージの処理を実行する。
【００７９】
なお、図８では、図１を参照して説明した命令フェッチ(ＩＦ)ステージを省略してＭＭステージを示しているが、ベクトルプロセッサのアーキテクチャとしては、様々なものが提案されており、図１および図８に限定されず、様々なものを採用してもよい。
【００８０】
ベクトルパイプライン６０は、パイプラインレジスタ６０１，６０２，６０４および６０５、並びに、並列演算器６０３を有する。ここで、並列演算器６０３は、前に、図２を参照して説明したように、例えば、８個の１６ビット演算器を並列に動作させて並列演算を実行する。
【００８１】
図８に示されるように、ＩＤステージでは、命令(Instruction)を命令デコーダ５に入力してデコードし、そのデコードされた命令を１サイクルに１命令ずつベクトルパイプライン(パイプラインレジスタ６０１)に投入する。なお、前述したように、各命令で演算するデータ数は、ベクトル長(ＶＬ)により管理される。
【００８２】
ＲＲステージでは、パイプラインレジスタ６０２でベクトルレジスタ３およびマスクレジスタ４からのデータを受け取って、並列演算器６０３に出力する。さらに、ＥＸステージでは、並列演算器６０３により並列演算を実行し、その演算結果をパイプラインレジスタ６０４に出力する。
【００８３】
また、ＭＭステージでは、メモリを参照してパイプラインレジスタ６０４のデータをパイプラインレジスタ６０５に出力する。そして、ＷＢステージでは、パイプラインレジスタ６０５のデータをベクトルレジスタ３にライトバックして処理を終了する。
【００８４】
図９は、本実施例の演算処理装置におけるマスクレジスタの一例を示すブロック図である。図９に示されるように、マスクレジスタ部(マスクレジスタＭＲ)４は、ビットパターンマスク格納部４１，整数マスク格納部４２，モード格納部４３，整数マスク→ビットパターンマスク変換器(変換器)４４，終端判定回路４５およびカウンタ４６を有する。さらに、マスクレジスタ部４は、バッファ４７ａ，４７ｂ、および、選択器４８ａ〜４８ｃを有する。
【００８５】
ここで、ビットパターンマスク格納部４１，整数マスク格納部４２およびモード格納部４３は、図７を参照して説明したものであり、整数マスク格納部４２およびモード格納部４３が、本実施例のマスクレジスタ部４で新たに追加されるのは前述した通りである。
【００８６】
また、本実施例のマスクレジスタ部４では、新たに、モード格納部４３にモードを設定するためのモード信号(mode)、並びに、整数マスクモードにおいて、有効となるデータの終端を示す終端判定信号(end flag)が使用されている。
【００８７】
図９において、参照符号read addressはリードアドレス信号、write addressはライトアドレス信号、dataは処理するデータ、そして、mask patternはマスクするデータを指定するマスクパターン信号である。
【００８８】
なお、例えば、有効なデータを指定する開始判定信号(start flag)は、リードアドレス信号read addressの値をから先頭の要素が格納されていることを判定することができるため省略しているが、例えば、直接外部から与えることもできる。さらに、クロック信号(clock)やリードイネーブル信号(read enable)等は、自明であるため省略している。
【００８９】
本実施例において、モード格納部４３は、図７で説明した通り１ビット幅、８エントリのレジスタであり、例えば、リードおよびライトアドレス信号read address，write addressの下位の３ビットを除いたアドレス(８で割ったアドレス値)でアクセスされる。
【００９０】
ここで、前述したように、モード格納部４３の設定は、例えば、『０』の時にビットパターンマスクモードとし、『１』の時に整数マスクモードとする。なお、初期値は、例えば、『０』(ビットパターンマスクモード)とする。
【００９１】
整数マスク格納部４２は、例えば、５ビット幅で８エントリのレジスタとされ、リードおよびライトアドレス信号read address，write addressの下位３ビットを除いたアドレス(８で割ったアドレス値)でアクセスされる。ビットパターンマスク格納部４１は、例えば、８ビット幅で６４エントリのレジスタとされている。
【００９２】
図９に示されるように、モード格納部４３の出力には、バッファ４７ａおよび選択器４８ａが設けられ、また、整数マスク格納部４２の出力には、バッファ４７ｂおよび選択器４８ｂが設けられている。
【００９３】
バッファ４７ａおよび４７ｂは、カウンタ４６の出力により制御され、また、選択器４８ａおよび４８ｂは、それぞれ４７ａおよび４７ｂの各入力と出力を選択して選択器４８ｃおよび変換器４４に出力する。
【００９４】
バッファ４７ａは、モード格納部４３から読み出した値(モード)を一時的に格納し、バッファ４７ｂは、整数マスク格納部４２から読み出した値を一時的に格納する。そして、選択器４８ａおよび４８ｂにより、各命令の先頭のサイクルでは読み出したデータをそのまま出力して、例えば、内部のフリップフロップ(バッファ４７ａ，４７ｂ)に保存し、先頭以外のサイクルでは、そのフリップフロップに格納した値を出力する。
【００９５】
なお、選択器４８ｃは、選択器４８ａの出力に従って、ビットパターンマスク格納部４１の出力または変換器４４の出力を選択し、マスクパターン信号mask patternとして出力する。
【００９６】
すなわち、マスクレジスタ４から出力されるマスクパターン信号mask patternは、整数マスクモードであっても、ビットパターンマスクモードの時と同様に、ビットパターンマスクデータに変換したものを出力する。これにより、ユーザ(プログラマ)は、整数マスクモードとビットパターンマスクモードを気にすることなく、通常のベクトルプロセッサと同様に使用することができる。
【００９７】
ここで、演算命令の中には、命令を連続させることができるものがあり、そのような命令に対して積極的に整数マスクモードを適用することにより、不要な演算を減らし、プロセッサの演算効率を向上させることが可能になる。
【００９８】
そのため、演算命令の内容に基づいて、整数マスクモードが適用可能か否かを判定し、可能な場合は整数マスクモードでマスクレジスタの情報を生成することにより、ベクトル処理を効率的に行うことが可能になる。
【００９９】
図１０は、図９のマスクレジスタにおけるアドレスとデータ配置を説明するための図であり、図１１は、図９のマスクレジスタにおける変換器の処理を説明するための図である。
【０１００】
図１０に示すマスクレジスタ(ＭＲ)４のデータ配置において、参照符号示ｍｒ０〜ｍｒ７は、命令コードで指定されるオペランドを示し、例えば、ＶＬ＝６４の時、ｍｒ０は、アドレス(address)＝０〜７までの全てのエントリにデータが格納されている。
【０１０１】
また、例えば、ＶＬ＝３２の時、ｍｒ０は、address＝０〜３までのエントリを使用し、address＝４〜７は使用しない。ｍｒ０と同様にして、アドレスが８毎に、ｍｒ０〜ｍｒ７のエントリの割り当てが行われる。
【０１０２】
なお、ベクトルプロセッサの仕様によっては、ＶＬが変化すると、先頭の位置が変わる(例えば、データが少なくなった分だけ詰める)ものもあるが、計算が複雑になるだけでアーキテクチャの情報があればアドレスだけで先頭のアクセスを判別することができる。
【０１０３】
カウンタ４６は、例えば、下記の動作を行うカウンタである。
初期値 = 0
(address%8) == 0 の時：リセット(命令の先頭を示す)
(address%8)! = 0 の時：カウントアップ
【０１０４】
終端判定回路４５は、整数マスクモードの時、それ以降のサイクルの演算が全て無効となる(マスクされる)ことを判定する回路である。例えば、下記の条件を満たす時、次のサイクル以降の演算が全て無効となる(マスクされる)ため、演算パイプラインの制御回路に対し、それ以降の演算の中止が可能であることを示す信号を出力する。
【０１０５】
整数マスクデータが８の倍数の時
(mode == 1) && (((整数マスクデータ/8) - カウンタ値) == 1)
整数マスクデータが8の倍数でない時
(mode == 1) && (((整数マスクデータ/8) - カウンタ値) == 0)
【０１０６】
なお、終端判定回路４５から上記の信号を受け取ったパイプライン制御回路は、演算スロットを解放し、次の演算投入が可能な状態になる。
【０１０７】
変換器(整数マスク→ビットパターンマスク変換器)４４は、図１１に示す変換テーブルを実現するように変換処理を行う。すなわち、変換器４４の入力(すなわち、整数マスクデータ／８−カウンタ値となるカウンタ４６の出力)が『０』のときは『0000 0000』を出力し、入力が『１』のときは『1000 0000』を出力し、入力が『２』のときは『1100 0000』を出力する。
【０１０８】
また、変換器４４の入力が『３』のときは『1110 0000』を出力し、入力が『４』のときは『1111 0000』を出力し、入力が『５』のときは『1111 1000』を出力し、そして、入力が『６』のときは『1111 1100』を出力する。
【０１０９】
さらに、変換器４４の入力が『７』のときは『1111 1110』を出力し、そして、入力が『８以上』のときは『1111 1111』を出力する。このようにして、整数マスクモードにおける整数マスクパターンデータを、ビットパターンマスクデータに変換して出力することができる。
【０１１０】
図１２は、本実施例の演算処理装置におけるビットパターンマスクモードでの動作の一例を説明するためのタイミング図であり、図１３は、本実施例の演算処理装置における整数マスクモードでの動作の一例を説明するためのタイミング図である。なお、図１２および図１３は、ＶＬ＝３２の動作を示している。
【０１１１】
まず、モード格納部４３から読み出した値がビットパターンマスクモード(mode reg：『０』)を示していた場合、マスクレジスタ４には、各データに対応したビットパターンマスクデータ(bit reg)がビットパターンマスク格納部４１に格納されている。具体的に、ビットパターンマスクデータbit regは、『0xFF』，『0xFF』，『0xF8』，『0x00』となっている。この場合、ビットパターンマスク格納部４１からビットパターンマスクデータを読み出し、それをマスクレジスタ４の値(マスクパターン信号mask pattern)として出力する。
【０１１２】
すなわち、図１２に示されるように、ＶＬ＝３２で、８並列の演算器があるため、１つのベクトル命令は、４サイクルかかる。すなわち、ビットパターンマスクモードでの動作は、終端判定信号(end flag)は使用されず、マスクパターン信号mask patternは、４サイクル分出力される。
【０１１３】
これに対して、モード格納部４３から読み出した値が整数マスクモード(mode reg：『１』)を示していた場合、マスクレジスタ４には、先頭からの有効データの個数を示す値が整数マスクデータ(int reg)として整数マスク格納部４２に格納されている。この場合、整数マスク格納部４２から整数マスクデータ『0x15』を読み出し、それを変換器４４によりビットパターンマスクデータに変換してマスクパターン信号mask patternとして出力する。
【０１１４】
すなわち、図１３に示されるように、ＶＬ＝３２で、８並列の演算器があるため、１つのベクトル命令は、４サイクルかかる。しかしながら、整数マスクモードでは、４サイクル目は、８並列演算の全てが無効(Ｆ)なので、３サイクル目で命令が終了する。具体的に、終端判定回路４５から終端判定信号end flagが出力され、これを受けて、マスクパターン信号mask patternは、３サイクル分だけ出力され、３サイクル目で命令が終了する。
【０１１５】
従って、図１２および図１３の比較から明らかなように、本実施例の演算処理装置における整数マスクモードを適用することにより、１サイクル分短い時間で処理を行うことができるのが分かる。
【０１１６】
図１４は、本実施例の演算処理装置におけるベクトル命令でのマスクレジスタ書き込みを説明するための図であり、図１５は、本実施例の演算処理装置におけるスカラー命令でのマスクレジスタ書き込みを説明するための図である。
【０１１７】
図８を参照して説明したように、図１４に示すベクトルパイプライン６０(６２〜６５)は、パイプラインレジスタ６０１，６０２，６０４および６０５、並びに、並列演算器６０３を有する。
【０１１８】
また、図１５に示すスカラーパイプライン６１は、パイプラインレジスタ６１１，６１２，６１４および６１５、並びに、スカラー演算器６１３を有する。
【０１１９】
なお、ベクトルパイプライン６０およびスカラーパイプライン６１は、図８で説明したように、命令デコード(ＩＤ)ステージ、レジスタリード(ＲＲ)ステージ、実行(ＥＸ)ステージ、メモリ参照(ＭＭ)ステージおよびライトバック(ＷＢ)ステージの処理を実行する。
【０１２０】
ただし、図１４に示すベクトル命令でのマスクレジスタ書き込みにおいて、ＲＲステージでは、パイプラインレジスタ６０２でベクトルレジスタ３からのデータを受け取って、並列演算器６０３に出力する。
【０１２１】
また、図１５に示すスカラー命令でのマスクレジスタ書き込みにおいて、ＲＲステージでは、パイプラインレジスタ６１２でスカラーレジスタ２からのデータを受け取って、スカラー演算器６１３に出力する。
【０１２２】
図１４に示されるように、ベクトル命令でマスクレジスタＭＲをデスティネーションとする命令(ＶＲ同士の比較命令やＭＲへのロード命令)では、ＭＲをビットパターンマスクモードとして書き込みを行う。すなわち、モード格納部４３の値を『０』に設定し、ビットパターンマスク格納部４１にビットパターンマスクデータを書き込む。
【０１２３】
また、図１５に示されるように、スカラー命令でマスクレジスタＭＲをデスティネーションとする命令では、ＭＲを整数マスクモードとして書き込みを行う。すなわち、モード格納部４３の値を『１』に設定し、整数マスク格納部４２に整数マスクデータを書き込む。
【０１２４】
ここで、スカラー命令でマスクレジスタ(ＭＲ)４に書き込む命令の例を、以下に示す。
ssetim mr0   #10    (即値１０をｍｒ０に整数マスクモードで書き込む命令)
smovrm mr0   sr1    (ＳＲ１の内容をｍｒ０に整数マスクモードで書き込む命令)
【０１２５】
図１６は、ビットパターンマスクモードおよび整数マスクモードにおけるデータエントリの例を示す図である。ここで、図１６の例は、ＶＬ＝３２、且つ、先頭から２１個のデータ(要素)が有効(Ｔ)でその後の１１個のデータが全て無効(Ｆ)の場合を表している。なお、整数マスク格納部４２に設定する整数マスクデータは、１６進数で示している。
【０１２６】
まず、モード格納部４３の値が『０』のビットパターンマスクモードにおいて、ビットパターンマスク格納部４１には、最初の２１ビットが『１，１，…，１』で、その後の１１ビットが『０，０，…，０』となるビットパターンが格納される。なお、整数マスク格納部４２の任意の値(ｘ)でよい。
【０１２７】
次に、モード格納部４３の値が『１』の整数マスクモードにおいて、整数マスク格納部４２には、整数値『０ｘ１５』が格納される。ここで、整数マスク格納部４２に設定された『０ｘ１５』は、１６進数なので、先頭から２１個のデータが有効で、２２個目以降のデータが無効であることを示す。
【０１２８】
すなわち、モード格納部４３の値が『１』で、整数マスク格納部４２の値が『０ｘ１５』であることにより、先頭から２１個のデータが有効で、２２個目以降のデータが無効であることが分かる。従って、無効となる２２個目以降のデータに対応する演算(命令)を、その時点で終了し、次の命令を投入することにより、効率的に処理を行うことが可能になる。
【０１２９】
図１７および図１８は、本実施例の演算処理装置における命令発行制御を説明するための図である。ここで、命令発行制御部５０は、前述した図４における命令デコーダ５に対応し、演算スロット６０ａ〜６０ｄは、図４におけるベクトルパイプライン６２〜６５に対応する。また、各演算スロット６０ａ〜６０ｄは、それぞれ８個の演算器を有し、その８個の演算器を８サイクルに渡って処理することにより、ＶＬ＝６４の演算命令を実行する。
【０１３０】
上述したように、整数マスクモードにおいて、整数マスク格納部４２に格納された値によって、先頭から有効となるデータの数(例えば、２１個)、並びに、それ以降(２２個目以降)のデータ(２２〜６４番目のデータ)を確認することができる。そして、無効となる２２個目以降のデータに対応する命令を打ち切って、次の命令を発行する。
【０１３１】
すなわち、図１７に示されるように、命令メモリ７から読み出した命令は、命令発行制御部５０(命令デコーダ５)を介して各演算スロット６０ａ〜６０ｄ(ベクトルパイプライン６２〜６５)に投入される。ここで、各演算スロット６０ａ〜６０ｄには、ビジーフラグ(busy flag)が設けられている。
【０１３２】
命令発行制御部５０は、各レジスタの依存関係および演算スロットの使用状況を見て命令を発行する。例えば、各演算スロット６０ａ〜６０ｄが８つの演算器を有している場合、１つの命令が発行されると、ＶＬ／８サイクルの間、演算スロットが占有される。
【０１３３】
ここで、整数マスクモードでは、整数マスク格納部４２に格納された値(ＭＲ＝２０)によって、有効となるデータ数(２０個)より後のデータが無効と分かっているので、実行している命令を途中で打ち切って、次の命令を演算スロットに投入することができる。
【０１３４】
具体的に、図１８に示されるように、整数マスクモードにおいて、ＭＲ＝２０は、２０＝８＋８＋４なので、１および２サイクル目では８つの演算器により処理を行うが、３サイクル目では、４つの演算器で処理を行えばよい。
【０１３５】
そして、４サイクル目以降では、無効となる演算を行うため、３サイクル目でそれまでの命令(命令１)を打ち切り、すなわち、演算スロットを開放し(busy flagを下げ)、４サイクル目から次の命令(命令２)を投入して実行する。これにより、演算スロットがビジーとなる期間を短縮して、次の命令を早く開始することが可能になる。
【０１３６】
さらに、本実施例では、整数マスク格納部４２に整数マスクデータを格納するため、たとえＶＬが長い場合でも、１サイクルで設定することが可能になる。
【０１３７】
すなわち、演算命令の中には、命令を連続させることができるものがあり、そのような命令に対して積極的に整数マスクモードを適用することにより、不要な演算を減らし、プロセッサの演算効率を向上させることが可能になる。
【０１３８】
そのため、演算命令の内容に基づいて、整数マスクモードが適用可能か否かを判定し、可能な場合は整数マスクモードでマスクレジスタの情報を生成することにより、ベクトル処理を効率的に行うことが可能になる。
【０１３９】
図１９は、本実施例の演算処理装置におけるマスクレジスタの他の実装例を説明するための図であり、図１９(ａ)はレジスタの構成を示し、図１９(ｂ)はビットパターンマスクモードと整数マスクモードの例を示す。
【０１４０】
図１９(ａ)と前述した図７(ａ)との比較から明らかなように、本実装例では、１ビット幅のモード格納部４３のみを追加し、一般的なベクトルプロセッサのレジスタエントリを整数マスク格納部４２としても使用するようになっている。
【０１４１】
すなわち、本実装例では、整数マスク格納部４２として使用するためのレジスタを追加することなく、ビットパターンマスク格納部４１の一部を共有するようになっている。例えば、整数マスクデータを格納する際、ビットパターンマスク格納部４１の各オペランドの先頭アドレスの位置に格納する。
【０１４２】
このように、整数マスク格納部４２用のレジスタを新たに追加することなく、ベクトルプロセッサのレジスタエントリを共用した場合、レジスタの容量増加を抑えることはできるが、例えば、後続命令とのチェイニングに問題が生じる虞がある。この場合、例えば、後続命令とのチェイニングを行うためにデータを回避しておく、バッファを設けることにより対処することができる。
【０１４３】
図１９(ｂ)は、前述した図７(ｂ)に対応するものであり、整数マスク格納部４２としてベクトルプロセッサのレジスタエントリを共用する点以外は同様である。
【０１４４】
すなわち、モード格納部４３の値が『０』でビットパターンマスクモードとなるＭＲ０では、ビットパターンマスク格納部４１に対して、最初の３ビットが『１，１，１』でその後の全てのビットが『０，０，…，０』となるビットパターンが格納される。なお、このビットパターンマスクモードにおいて、整数マスク格納部４２の値は、任意の値(ｘ)でよい。
【０１４５】
また、モード格納部４３の値が『１』で整数マスクモードとなるＭＲ１では、整数マスク格納部４２に対して、整数値『３』が格納される。なお、この整数マスクモードにおいて、ビットパターンマスク格納部４１の全てのビットは、任意の値(ｘ)でよい。
【０１４６】
ここで、ユーザ(プログラマ)がデバッガを利用する場合、そのデバッガに対して整数マスクモードをビットパターンマスクモードに変換したデータを表示する機能を持たせることで、ユーザにマスクモードを意識させないようにすることができる。すなわち、デバッガ画面では、整数マスクモードの時には、整数マスクデータをビットパターンマスクデータに変換して表示する。
【０１４７】
そして、ユーザが、デバッガ画面でＭＲの値を変更した場合、例えば、先頭に『１』が連続しそれ以外は『０』の値をセットしたときには、自動的に整数マスクモードとして整数マスクデータを演算処理装置(マスクレジスタ部)に書き込むようにすることができる。これにより、ユーザは、整数マスクモードとビットパターンマスクモードを意識することなくデバッグ処理を行うことが可能になる。
【０１４８】
さらに、整数マスクモードとビットパターンマスクモードの両方にマスクデータを設定し、モード格納部４３に値を設定する新たな命令により、整数マスクモードとビットパターンマスクモードの一方を使用することも可能である。
【０１４９】
すなわち、上述した説明では、整数マスク格納部４２に対して整数マスクデータを書き込むとき、モード格納部４３に対して『１』を格納し、整数マスクモードの場合には、整数マスク格納部４２の整数マスクデータを読み出していた。
【０１５０】
また、ビットパターンマスク格納部４１にビットパターンマスクデータを書き込むとき、モード格納部４３に『０』を格納し、ビットパターンマスクの場合には、ビットパターンマスク格納部４１のビットパターンマスクデータを読み出していた。
【０１５１】
これに対して、全てのデータに対して、ビットパターンマスク格納部４１にビットパターンマスクデータを書き込むと共に、整数マスク格納部４２に整数マスクデータを書き込むようにする。
【０１５２】
そして、モード格納部４３の値を『０』または『１』に設定する新たな命令により、ビットパターンマスクデータと整数マスクデータの一方を使用することが可能になる。すなわち、新たな命令によりモード格納部４３の値を変更することで、ビットパターンマスク格納部４１および整数マスク格納部４２の各エントリを有効に活用することが可能になる。
【０１５３】
なお、以上において、ビットパターンマスクモードでは、全てのデータに対して、それぞれ有効／無効を示すビットを割り当てるため、必ずしも有効となるデータ(演算)が連続しないこともある。また、整数マスクモードでは、整数マスク格納部４２に格納する連続して有効となるデータ(演算)の個数は、次の図２０を参照して説明するように、必ずしも先頭から連続して有効となるデータに限定されるものではない。
【０１５４】
図２０は、本実施例の演算処理装置における整数マスクデータの設定の変形例を説明するための図であり、整数マスクモードにおいて、有効となる連続したデータ数が先頭からではない場合の例を示すものである。
【０１５５】
整数マスクモードにおいて、例えば、先頭から無効(Ｆ)になるデータ数を制御レジスタ(５１)により指定し、整数マスク格納部４２に設定した値により、それ以降に有効(Ｔ)となる連続したデータ数を指定する。なお、制御レジスタ(５１)は、例えば、図４に示されている。
【０１５６】
具体的に、図２０に示されるように、制御レジスタにより先頭から無効になる４個のデータ数を指定し、その後、整数マスク格納部４２により有効となる連続した５個のデータ数を指定する。すなわち、制御レジスタは、有効となる連続したデータの開始位置を指定する。
【０１５７】
このとき、整数マスク格納部４２により指定された有効となる連続した５個のデータは、１サイクルの５番目のデータからサイクル２の１番目のデータまでの５個のデータになるため、２サイクルまででそれまでの命令を中断(終了)する。そして、３サイクル目から次の命令を実行する。
【０１５８】
なお、図２０のように、整数マスクモードにおいて、有効となる連続するデータ数が先頭からではない場合、図９および図１１を参照して前に説明した終端判定回路４５並びに変換器４４が変更されることになる。
【０１５９】
図２１は、本実施例の携帯端末の一例を模式的に示す図であり、ソフトウェア無線に対応した携帯端末の例を示すものである。図２１に示されるように、携帯端末１００は、ディスプレイ１１０，スピーカー１２０，マイク１３０，操作キー１４１〜１４３，ベースバンド処理部１５０，高周波(Radio Frequency：ＲＦ)回路１６０およびアンテナ１７０を含む。
【０１６０】
ここで、ディスプレイ１１０は、タッチパネルとなっており、また、回路として、ベースバンド処理部１５０の他に、様々な処理回路やメモリ等を含むのはいうまでもない。
【０１６１】
図２２は、本実施例の携帯端末におけるベースバンド処理部の一例を示すブロック図である。図２２に示されるように、ベースバンド処理部１５０は、専用ハードウェア１５１，バス(接続配線)１５２および複数のモジュール１５３ａ〜１５３ｃを含む。
【０１６２】
専用ハードウェア１５１には、例えば、ターボ(turbo)，ビタビ(viterbi)およびマルチユーズ(ＭＩＭＯ：Multi Input Multi Output)等に対応した専用のハードウェアが含まれる。
【０１６３】
専用ハードウェア１５１は、重い処理をサポートするパラメータで設定変更がある程度可能になっており、専用ハードウェア１５１およびモジュール１５３ａ〜１５３ｃは、バス１５２を介してＲＦ回路１６０に接続されている。なお、専用ハードウェア１５１およびＲＦ回路１６０等の接続は、アナログインターフェースを介して行われる。
【０１６４】
各モジュール１５３ａ〜１５３ｃは、それぞれプロセッサ(ベクトルプロセッサ：演算処理装置)３１ａ〜３１ｃ，プログラムメモリ３２ａ〜３２ｃ，周辺回路３３ａ〜３３ｃおよびデータメモリ３４ａ〜３４ｃを含む。
【０１６５】
各モジュール１５３ａ〜１５３ｃにおいて、プロセッサ３１ａ〜３１ｃ，プログラムメモリ３２ａ〜３２ｃ，周辺回路３３ａ〜３３ｃおよびデータメモリ３４ａ〜３４ｃは、それぞれ内部バス３５ａ〜３５ｃを介して接続されている。
【０１６６】
各モジュール１５３ａ〜１５３ｃは、それぞれプロセッサ３１ａ〜３１ｃ，プログラムメモリ３２ａ〜３２ｃ，周辺回路３３ａ〜３３ｃおよびデータメモリ３４ａ〜３４ｃにより、それぞれ異なる無線規格(例えば、Ｗ−ＣＤＭＡやＬＴＥ)に対応可能になっている。
【０１６７】
そして、ＲＦ回路１６０およびアンテナ１７０を介して、各モジュール１５３ａ〜１５３ｃにより設定された無線規格に従った無線通信が行われる。
【０１６８】
図２３は、本実施例の携帯端末による異なる通信方式を切り替えて通信を行うソフトウェア無線機能の一例を説明するための図である。
【０１６９】
図２３において、参照符号２００は、Ｗ−ＣＤＭＡ(Wideband Code Division Multiple Access)方式の基地局を示し、２００ａは、Ｗ−ＣＤＭＡ基地局２００の電波到達エリアを示す。また、参照符号３００は、ＬＴＥ(Long Term Evolution)方式の基地局を示し、３００ａは、ＬＴＥ基地局３００の電波到達エリアを示す。
【０１７０】
図２３に示されるように、例えば、携帯端末１００を携帯したユーザがＷ−ＣＤＭＡ基地局２００の電波到達エリア２００ａを外れて、ＬＴＥ基地局３００の電波到達エリア３００ａに入る場合、携帯端末１００は、基地局を２００から３００に変更して通信する。
【０１７１】
具体的に、図２２におけるモジュール１５３ａは、例えば、Ｗ−ＣＤＭＡ方式の通信を実現するために使用され、図２２におけるモジュール１５３ｂは、例えば、ＬＴＥ方式の通信を実現するために使用される。従って、電波到達エリアが２００ａから３００ａに変わると、携帯端末１００で通信に使用するモジュールが１５３ａから１５３ｂに切り替わる。
【０１７２】
ここで、モジュール１５３ａおよび１５３ｂは、Ｗ−ＣＤＭＡおよびＬＴＥ方式の通信を行うためにベクトル演算を行うことになる。なお、ソフトウェア機能を有する携帯端末１００は、Ｗ−ＣＤＭＡおよびＬＴＥ方式の通信に限定されず、様々な通信方式であってもよい。
【０１７３】
図２４は、図２３のソフトウェア無線機能を実現する処理の一例を示すフローチャートである。
【０１７４】
まず、ソフトウェア無線機能を実現する処理が開始すると、ステップＳＴ１において、基地局を検索してステップＳＴ２に進む。ステップＳＴ２では、最も感度の良い基地局を検索し、さらに、ステップＳＴ３に進んで、今と異なる基地局が最良かどうかを判定する。
【０１７５】
ステップＳＴ３において、今と異なる基地局が最良(最良の感度)であると判定すると、ステップＳＴ４に進んで、通信方式が異なるかどうか(伝送レートが上がるかどうか)を判定する。ステップＳＴ４において、通信方式が異なると判定すると、ステップＳＴ５に進んで、通信方式の変更を行い、ステップＳＴ１に戻って同様の処理を繰り返す。
【０１７６】
ここで、通信方式の変更は、例えば、Ｗ−ＣＤＭＡ方式用のモジュール１５３ａからＬＴＥ方式用のモジュール１５３ｂに切り替えると共に、専用ハードウェア１５１のパラメータ等の設定を変更して、Ｗ−ＣＤＭＡ方式からＬＴＥ方式に切り替える。
【０１７７】
一方、ステップＳＴ３において、今と異なる基地局が最良ではない、すなわち、今の基地局の方が良いと判定すると、或いは、ステップＳＴ４において、通信方式が異ならない、すなわち、それまでと同じ通信方式であると判定すると、ステップＳＴ６に進む。ステップＳＴ６では、通常の通信動作、すなわち、通信方式の変更を行わずに、ステップＳＴ１に戻り、同様の処理を繰り返す。
【０１７８】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１７９】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
１つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを格納する第１マスク格納部と、
前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを格納する第２マスク格納部と、
を有することを特徴とする演算処理装置。
【０１８０】
（付記２）
前記第２マスクデータを使用する場合、前記第２マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする付記１に記載の演算処理装置。
【０１８１】
（付記３）
前記第２マスクデータを使用する場合、前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする付記２に記載の演算処理装置。
【０１８２】
（付記４）
前記第２マスク格納部は、前記ベクトル命令のベクトル長において、先頭から連続して有効になる演算の数を格納する、
ことを特徴とする付記１乃至付記３のいずれか１項に記載の演算処理装置。
【０１８３】
（付記５）
前記複数の演算に対して、前記第１マスク格納部に前記第１マスクデータを格納すると共に、前記第２マスク格納部に前記第２マスクデータを格納し、
前記第１マスクデータまたは前記第２マスクデータを選択して使用する、
ことを特徴とする付記１乃至付記４のいずれか１項に記載の演算処理装置。
【０１８４】
（付記６）
さらに、
前記第１マスクデータを使用する第１マスクモード、または、前記第２マスクデータを使用する第２マスクモードを格納するモード格納部を含む、
ことを特徴とする付記１乃至付記５のいずれか１項に記載の演算処理装置。
【０１８５】
（付記７）
さらに、
前記第２マスクデータを前記第１マスクデータと同じ形式のデータに変換する変換器と、
前記モード格納部に前記第１マスクモードが格納されているときは、前記第１マスク格納部に格納された前記第１マスクデータを選択し、前記モード格納部に前記第２マスクモードが格納されているときは、前記変換器により変換された前記第１マスクデータと同じ形式のデータを選択する選択器と、
を含むことを特徴とする付記６に記載の演算処理装置。
【０１８６】
（付記８）
さらに、
前記モード格納部に前記第２マスクモードが格納されているときは、前記第２マスクデータから前記連続して有効になる数の終端を判定する終端判定回路を含む、
ことを特徴とする付記６または付記７に記載の演算処理装置。
【０１８７】
（付記９）
前記演算処理装置は、
少なくとも１つのスカラーパイプラインと、
少なくとも１つのベクトルパイプラインと、を含み、
前記ベクトルパイプラインは、並列に動作する複数の演算器を含む、
ことを特徴とする付記１乃至付記８のいずれか１項に記載の演算処理装置。
【０１８８】
（付記１０）
前記第１マスクデータは、ベクトル命令により前記第１マスク格納部に書き込まれ、
前記第２マスクデータは、スカラー命令により前記第２マスク格納部に書き込まれる、
ことを特徴とする付記９に記載の演算処理装置。
【０１８９】
（付記１１）
第１および第２の無線通信方式を含む異なる複数の無線通信方式により通信を行うベースバンド処理部を備える携帯端末であって、
前記ベースバンド処理部は、
前記第１無線通信方式による通信を行うための第１モジュールと、
前記第２無線通信方式による通信を行うための第２モジュールと、
パラメータにより設定を変更できる専用ハードウェアと、を含み、
前記第１モジュールおよび前記第２モジュールは、それぞれ付記１乃至付記１０のいずれか１項に記載の演算処理装置を含む、
ことを特徴とする携帯端末。
【０１９０】
（付記１２）
前記第１モジュールおよび前記第２モジュールは、前記第１無線通信方式の第１基地局および前記第２無線通信方式の第２基地局からの感度に従って選択される、
ことを特徴とする付記１１に記載の携帯端末。
【０１９１】
（付記１３）
前記第１モジュールおよび前記第２モジュールは、さらに、それぞれ前記演算処理装置と接続されるプログラムメモリ、データメモリおよび周辺回路を含む、
ことを特徴とする付記１０または付記１１に記載の携帯端末。
【０１９２】
（付記１４）
１つのベクトル命令により配列データに対して複数の演算を実行する演算処理方法であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第１マスクデータを設定し、
前記複数の演算に対して、連続して有効になる数を指定する第２マスクデータを設定し、
前記第１マスクデータを使用する第１マスクモード、または、前記第２マスクデータを使用する第２マスクモードを設定し、
前記第２マスクモードを設定した場合に、前記第２マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする演算処理方法。
【０１９３】
（付記１５）
さらに、
前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする付記１４に記載の演算処理方法。
【符号の説明】
【０１９４】
１    演算処理装置(ベクトルプロセッサ)
２    スカラーレジスタ(ＳＲ)
３    ベクトルレジスタ(ＶＲ)
４    マスクレジスタ(ＭＲ：マスクレジスタ部)
５    デコーダ(デコードロジック)
６    パイプライン演算部
７    命令メモリ
８，３４ａ〜３４ｃ    データメモリ
３１ａ〜３１ｃ    プロセッサ(ベクトルプロセッサ：演算処理装置)
３２ａ〜３２ｃ    プログラムメモリ
３３ａ〜３３ｃ    周辺回路
３５ａ〜３５ｃ    内部バス
５０    命令発行制御部
５１    制御レジスタ
６１    スカラーパイプライン
６０，６２〜６５    ベクトルパイプライン
１００    携帯端末
１１０    ディスプレイ
１２０    スピーカー
１３０    マイク
１４１〜１４３    操作キー
１５０    ベースバンド処理部
１６０    ＲＦ回路
１７０    アンテナ
１５１    専用ハードウェア
１５２    バス
１５３ａ〜１５３ｃ    モジュール
２００    Ｗ−ＣＤＭＡ方式の基地局
２００ａ    Ｗ−ＣＤＭＡ基地局の電波到達エリア
３００    ＬＴＥ方式の基地局
３００ａ    ＬＴＥ基地局の電波到達エリア
【図１】
2013186547.tif 000003
【図２】
2013186547.tif 000004
【図３】
2013186547.tif 000005
【図４】
2013186547.tif 000006
【図５】
2013186547.tif 000007
【図６】
2013186547.tif 000008
【図７】
2013186547.tif 000009
【図８】
2013186547.tif 000010
【図９】
2013186547.tif 000011
【図１０】
2013186547.tif 000012
【図１１】
2013186547.tif 000013
【図１２】
2013186547.tif 000014
【図１３】
2013186547.tif 000015
【図１４】
2013186547.tif 000016
【図１５】
2013186547.tif 000017
【図１６】
2013186547.tif 000018
【図１７】
2013186547.tif 000019
【図１８】
2013186547.tif 000020
【図１９】
2013186547.tif 000021
【図２０】
2013186547.tif 000022
【図２１】
2013186547.tif 000023
【図２２】
2013186547.tif 000024
【図２３】
2013186547.tif 000025
【図２４】
2013186547.tif 000026