JP2013186547A - 演算処理装置、携帯端末および演算処理方法 - Google Patents

演算処理装置、携帯端末および演算処理方法 Download PDF

Info

Publication number
JP2013186547A
JP2013186547A JP2012049301A JP2012049301A JP2013186547A JP 2013186547 A JP2013186547 A JP 2013186547A JP 2012049301 A JP2012049301 A JP 2012049301A JP 2012049301 A JP2012049301 A JP 2012049301A JP 2013186547 A JP2013186547 A JP 2013186547A
Authority
JP
Japan
Prior art keywords
mask
data
mode
arithmetic processing
storage 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.)
Pending
Application number
JP2012049301A
Other languages
English (en)
Inventor
Masahiko Toshi
雅彦 都市
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012049301A priority Critical patent/JP2013186547A/ja
Priority to US13/740,266 priority patent/US20130238880A1/en
Publication of JP2013186547A publication Critical patent/JP2013186547A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】ベクトル処理を効率的に行うことができる演算処理装置および携帯端末の提供を図る。
【解決手段】1つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを格納する第1マスク格納部41と、前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを格納する第2マスク格納部42と、を有する。
【選択図】図7

Description

この出願で言及する実施例は、演算処理装置、携帯端末および演算処理方法に関する。
従来、配列データに対する計算(ベクトル演算)を1命令で処理可能な演算処理装置(プロセッサ)として、ベクトルプロセッサが利用されている。このようなベクトルプロセッサは、気象予測や流体解析といった科学技術計算のみならず、携帯端末のソフトウェア無線(SDR:Software Defined Radio)への適用も考えられている。
ベクトルプロセッサは、複数の演算器に対して連続的にデータを投入することで、高い演算スループットを得ることでき、1サイクルで処理可能なデータ数を増やす様々な工夫も行われている。
ところで、従来、ベクトルプロセッサ(演算処理装置)としては、様々なものが提案されている。
特開昭57−027364号公報 特開昭57−027360号公報
ところで、ベクトルプロセッサで処理を効率的に行うには、1つのベクトル命令で演算するデータ数(ベクトル長:VL)を大きくして1命令で多くのデータを扱うようにするのが好ましい。
一方、処理するデータ数が、ベクトルプロセッサで指定できるVLの設定範囲を超える場合、複数回に分けて行わなければならない。ここで、処理するデータ数が2のべき乗で無い場合、端数の設定を行う。端数の設定方法として、以下の3つの方法がある。それぞれの方法の説明において、処理するデータ数は100個であるとする。
第1の方法は、最終回(2サイクル目)でVLを調整するもので、VL=64で処理した後、VLを変更(VL=36)して処理する。この第1の方法には、VLを書き換えるサイクルコストがかかるといった課題がある。なお、VLの書き換える最も簡単な手法は、実行命令が無い時に書き換えることが考えられる。
第2の方法は、均等のVLを選択するもので、VL=50で処理した後、同じVL=50で処理、すなわち、1サイクル目と2サイクル目の両方をVL=50で処理する。この第2の方法には、データ長が動的に変化する場合、最適な繰り返し数(均等のVL)を見つける処理を行うことになるといった課題がある。
第3の方法は、最終回(2サイクル目)でマスクレジスタにより調整するもので、VL=64で処理した後、VL=64で処理し、最終回の処理において、マスクレジスタにより[0..35]を有効(True)とし、[36..63]を無効(False)とする。
第3の方法を実施するには、例えば、マスクレジスタに[0..35]が有効で[36..63]が無効であると指定するマスク命令を新たに準備することになる。
また、第3の方法では、VLに対応する64ビットのビットパターンをメモリ上に格納しておき、それをロードするといった処理を行うことになり、処理を行わない(無効になっている)データ部分もサイクルがかかることになる。
以上の通り、処理するデータ数がベクトルプロセッサで指定できるVLの設定範囲を超え、また、処理するデータ数が様々に変化すると、ベクトルプロセッサの処理を効率的に行うことが難しい。すなわち、処理するデータ数がベクトルプロセッサで指定できるVLの設定範囲を超えた状態で処理するデータ数が変化しても、データを効率的に処理することが難しいといった課題がある。
一実施形態によれば、1つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、第1マスク格納部と、第2マスク格納部と、を有する演算処理装置が提供される。
前記第1マスク格納部は、前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを格納し、前記第2マスク格納部は、前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを格納する。
開示の演算処理装置、携帯端末および演算処理方法は、ベクトル処理を効率的に行うことができるという効果を奏する。
図1は、演算処理装置の一例において複数の命令を実行する様子を説明するためのタイミング図である。 図2は、演算処理装置におけるマスクレジスタを説明するための図である。 図3は、マスクレジスタの機能を説明するための図である。 図4は、本実施例が適用される演算処理装置の一例を示すブロック図である。 図5は、図4の演算処理装置におけるスカラーレジスタを説明するための図である。 図6は、図4の演算処理装置におけるベクトルレジスタを説明するための図である。 図7は、図4の演算処理装置におけるマスクレジスタの一実装例を説明するための図である。 図8は、本実施例の演算処理装置における読み出し動作を説明するための図である。 図9は、本実施例の演算処理装置におけるマスクレジスタの一例を示すブロック図である。 図10は、図9のマスクレジスタにおけるアドレスとデータ配置を説明するための図である。 図11は、図9のマスクレジスタにおける変換器の処理を説明するための図である。 図12は、本実施例の演算処理装置におけるビットパターンマスクモードでの動作の一例を説明するためのタイミング図である。 図13は、本実施例の演算処理装置における整数マスクモードでの動作の一例を説明するためのタイミング図である。 図14は、ビットパターンマスクモードおよび整数マスクモードにおけるデータエントリの例を示す図である。 図15は、本実施例の演算処理装置におけるベクトル命令でのマスクレジスタ書き込みを説明するための図である。 図16は、本実施例の演算処理装置におけるスカラー命令でのマスクレジスタ書き込みを説明するための図である。 図17は、本実施例の演算処理装置における命令発行制御を説明するための図(その1)である。 図18は、本実施例の演算処理装置における命令発行制御を説明するための図(その2)である。 図19は、本実施例の演算処理装置におけるマスクレジスタの他の実装例を説明するための図である。 図20は、本実施例の演算処理装置における整数マスクデータの設定の変形例を説明するための図である。 図21は、本実施例の携帯端末の一例を模式的に示す図である。 図22は、本実施例の携帯端末におけるベースバンド処理部の一例を示すブロック図である。 図23は、本実施例の携帯端末による異なる通信方式を切り替えて通信を行うソフトウェア無線機能の一例を説明するための図である。 図24は、図23のソフトウェア無線機能を実現する処理の一例を示すフローチャートである。
まず、本実施例の演算処理装置、携帯端末および演算処理方法を詳述する前に、演算処理装置の一例における命令の実行、並びに、マスクレジスタに関して、図1〜図3を参照して説明する。図1は、演算処理装置の一例において複数の命令を実行する様子を説明するためのタイミング図である。
図1において、演算処理装置(ベクトルプロセッサ)は、配列データに対するベクトル演算を1命令で処理可能なプロセッサであり、演算器に対して連続的にデータを投入することで高い演算スループットを得るようになっている。
また、ベクトルプロセッサは、並列に動作可能な複数の演算器を有し、連続した配列データに対しては、[スタートアップ(レイテンシ)+データ数/演算器数]サイクルで処理するようになっている。また、同時動作可能な複数のベクトルパイプラインを設け、命令を並列に実行することで、さらなる性能向上を図ることも行われている。
例えば、8個の16ビット演算器を有するベクトルプロセッサは、64要素を持つ配列データに対して演算を行う場合、スタートアップを4サイクルにすると、4+64/8=12サイクルで演算を終えることができる。なお、スタートアップは、全てのパイプラインにデータが流れるまでの時間(サイクル)に対応する。
ここで、各演算器では、例えば、命令のフェッチ(fetch)、デコード(decode)、レジスタからの読み出し(reg. read)、実行(execute)およびライトバック(writeback)の5つの処理が行われる。
なお、図1の各ブロック中の『0..7』,『8..15』,…,『56..63』は、それぞれ64要素の配列データ『0..63』において、各演算器で1サイクルごとに処理される8要素のデータを示している。
図2は、演算処理装置におけるマスクレジスタを説明するための図であり、1つのベクトルパイプラインにおける処理の一例を示すものである。
まず、ベクトル長およびマスクレジスタを説明する。まず、1つのベクトル命令で演算するデータ数を、ベクトル長(Vector Length:VL)と呼ぶ。このVLは、一般に、制御レジスタなどに値が格納され、ベクトル命令は、その制御レジスタを参照して動作を行う。なお、VLは、例えば、演算処理装置(ベクトルプロセッサ)の回路リソースの制限によって、指定できる最大値が決められている。
また、演算の有効(T:true)または無効(F:false)を指定するレジスタをマスクレジスタ(MR)と呼ぶ。ベクトル命令を実行する際、VLと同じだけのMRを読み出し、対応するMRが有効(T)であればその演算を行い、無効(F)であればその演算結果を無効化する。
なお、簡単な実装としては、MR(MRの設定値)をデスティネーション(データの格納先)レジスタへのライトイネーブル(Write Enable:WE)信号として使用することができる。すなわち、MRが有効であれば、演算結果のデータをデスティネーションレジスタに書き込み、MRが無効であれば、演算結果のデータをデスティネーションレジスタに書き込まないように制御する。
ここで、ベクトル命令は、ループを用いた処理に適用することができ、マスクレジスタの機能があると、ループ内に条件分岐がある場合にもベクトル命令の適用が可能になる。
具体的に、a[i]とb[i]の配列を加算してa[i]に格納する場合を考える。なお、負の値の時はa[i]に格納する値を『0』に置き換えるものとする。図2において、ソースとして、a[i](a[0..63])を読み出すベクトルレジスタ(VR)3とマスクレジスタ(MR)4のみが描かれているが、b[i](b[0..63])を読み出すVRは、a[i]を読み出すVRと同様のもので、図2では省略されている。
また、図2の例では、ベクトルパイプライン60が16ビット演算器を8個持ち、毎サイクルで16ビット演算を8並列に処理するようになっている。すなわち、VL=64の時、実際の回路では、16ビット演算器を幅方向に64個だけ並べると実装面積が大きくなることが難しい(面積的に不利なため)。そこで、例えば、8個の16ビット演算器を8サイクルに渡って処理することにより、VL=64の演算命令を実行して実装面積を小さくしている。
元のアルゴリズム
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 をメモリへ書き戻す)
ここで、a[i]とb[i]の配列を加算した結果(演算結果)をデスティネーション(データの格納先)であるa[i]に格納する場合、各要素(データ)に対応する1ビット毎のマスクビットの値により書き込みを制御する。
具体的に、マスクビットが『1』ならば有効として演算結果のデータを書き込むように制御し、マスクビットが『0』ならば無効として演算結果のデータを書き込まないように制御する。なお、マスクビットは、1ビットに限定されるものではなく、他の機能を付加するために2ビット以上にすることもできる。
図3は、マスクレジスタの機能を説明するための図である。図3に示されるように、マスクレジスタは、VLを変えることなく演算データ数を変えるために使用されることもある。すなわち、図3に示されるように、前半の10個がT(有効)で、後半の残り54個がF(無効)のマスクレジスタを用いることで、10個の演算を行うことが可能になる。
そして、予めこのようなマスクレジスタを用意しておくことにより、VLを書き換えるオーバーヘッドを無くしてベクトル命令を実行することができる。ただし、後半のFの部分に対しては、所定のサイクルがかかるため、ベクトル長を書き換えたほうが高速に動作する場合もある。
ここで、データ数がVLの最大値より大きい場合、複数回命令を実行して処理することになるが、この時、適切な回数を選べないと、最終回に端数の処理を行うことになる。
例えば、VL=64でデータ数が250個の場合、250=64+64+64+58となるため、最終回(4サイクル目)は、58個のデータだけを処理することになる。これは、特に、演算処理装置を組み込み用途として使用する分野においては、例えば、スーパーコンピュータと比較してVLが短いため、端数の処理(データ数を変えるオーバーヘッド、VLの変更、マスクの設定)の影響が大きく出てしまう。
ところで、様々なデータ数(データ長)のベクトル演算を行う場合、例えば、VL(ベクトル長)を変更するか、マスクレジスタを指定するかの2通りが考えられる。ここで、マスクレジスタのデータ(ビットパターンマスクデータ)は、VLに対応するビットのT(有効)かF(無効)のデータを持つ。
この設定は、1サイクルで行うのは難しいため、複数サイクルかけて設定されることになる。すなわち、演算の結果としての書き込み、および、メモリからの読み出しデータの書き込みを行うことになる。
まず、VLを変更する場合(前述した第1および第2の方法)、VLを書き換えるサイクルコストがかかり、また、データ長が動的に変化する場合、最適な繰り返し数を見つける処理を行うことになるため、処理効率の低下を招く。
また、マスクレジスタを指定する場合、連続するデータにおいて、必ずしも前半に有効(True)なデータが連続し、後半に無効(False)なデータが連続するとは限らない。そのため、VLを変えずにビットパターンマスクデータにより端数の処理を行うと、無効だけの演算であっても、規定回数の処理を繰り返して行うことになる。すなわち、無効だけの演算を行うことにより、処理効率の低下を招く。
以下、演算処理装置、携帯端末および演算処理方法の実施例を、添付図面を参照して詳述する。図4は、本実施例が適用される演算処理装置の一例を示すブロック図である。図4において、参照符号1は演算処理装置(ベクトルプロセッサ)、2はスカラーレジスタ(SR)、3はベクトルレジスタ(VR)、そして、4はマスクレジスタ(MR)を示す。
さらに、参照符号5は命令デコーダ、51は制御レジスタ、6はパイプライン演算部、7は命令メモリ、そして、8はデータメモリを示す。
図4に示されるように、ベクトルプロセッサ1は、命令デコーダ(デコードロジック)5、パイプライン演算部6、スカラーレジスタ2、ベクトルレジスタ3、および、マスクレジスタ4を有する。ここで、パイプライン演算部6は、1本のスカラーパイプライン61と、4本のベクトルパイプライン62〜65を有する。
なお、制御レジスタ51は、前述したように、ベクトル長(VL)等の値を保持するが、例えば、後に図20を参照して説明するように、有効となる連続したデータ(演算)がVLの先頭からではない場合、その有効となる連続したデータの開始位置を指定するためにも使用される。
ベクトルレジスタ3およびマスクレジスタ4は、ベクトル演算用のレジスタであり、スカラーレジスタ2は、スカラー演算用のレジスタである。各ベクトルパイプライン62〜65では、以下で説明するベクトルレジスタ3に対し、ベクトル長(VL)個のデータ演算を行うことができる。
ここで、ベクトルパイプライン62および63は、ALU,乗算,論理演算などの演算命令のベクトル処理を実行し、また、ベクトルパイプライン64および65は、ロードストア(Load/Store:LD/ST)などの転送命令のベクトル処理を実行する。
なお、図4に示すベクトルプロセッサ1は、さらに、1本のスカラーパイプライン61も有しており、このスカラーパイプライン61により、スカラーレジスタ2のデータを1個計算することができるようになっている。すなわち、スカラーパイプライン61は、ALU,LD,STなどの命令のスカラー処理を実行する。
前述した図2に示されるように、各ベクトルパイプライン62〜65(60)は、例えば、16ビットの演算器を8個ずつ有し、それぞれ毎サイクル、16ビット演算を8並列で演算することができるようになっている。
なお、データメモリ8は、例えば、4つのバンク(メモリブロック)を有し、マルチプレクサ・デマルチプレクサ(図示しない)を介してスカラーパイプライン61およびベクトルパイプライン62〜65に接続されている。
ここで、本明細書では、演算のT/Fを指定するビットパターンマスクデータを格納するレジスタだけでなく、後述するように、整数マスクのデータを格納するレジスタやモードを格納するレジスタも含めてマスクレジスタMR(マスクレジスタ部)と称する。さらに、マスクレジスタ部には、整数マスクデータをビットパターンマスクデータに変換する変換器(コンバータ)や選択器(セレクタ)等も含まれるものとする。
図5は、図4の演算処理装置におけるスカラーレジスタを説明するための図である。図5に示されるように、スカラーレジスタ(SR)2は、例えば、32ビット幅のレジスタであり、アドレス(address)等のデータが格納される。
図6は、図4の演算処理装置におけるベクトルレジスタを説明するための図である。図6に示されるように、ベクトルレジスタ(VR)3は、例えば、128ビット幅のレジスタであり、各エントリに対して16ビットデータを8個ずつ格納する。
図7は、図4の演算処理装置におけるマスクレジスタの一実装例を説明するための図であり、図7(a)はマスクレジスタ(部)4の構成を示し、図7(b)はビットパターンマスクモードと整数マスクモードの例を示す。
ここで、ビットパターンマスクモードは、1つのベクトル命令により配列データに対して複数の演算を実行するベクトル演算処理装置において、その複数の演算に対して、それぞれ有効または無効な演算をビット単位で指定するモードである。
また、整数マスクモードは、複数の演算に対して、連続して有効になる数(例えば、先頭から連続して有効になる数)を整数で指定するモードである。なお、ベクトル演算処理装置(ベクトルプロセッサ)は、例えば、図4を参照して説明したように、スカラーパイプライン(61)とベクトルパイプライン(62〜65)を有する。
また、図15を参照して後に詳述するように、スカラー命令でマスクレジスタMRをデスティネーションとする命令では、MRを整数マスクモードとして書き込みを行ってもよい。
図7(a)に示されるように、マスクレジスタ4は、8ビット幅で512ビット分のビットデータを格納するビットパターンマスク格納部41、5ビット幅の整数マスク格納部42、および、1ビット幅のモード格納部43をデータエントリとして持つ。
ここで、ビットパターンマスク格納部41は、一般的なベクトルプロセッサのマスクレジスタにも設けられているが、整数マスク格納部42およびモード格納部43は、本実装例のマスクレジスタにおいて新たに追加されたものである。
なお、本実施例によれば、ビットパターンマスク格納部41と共に、整数マスク格納部42およびモード格納部43を設けることにより、整数マスクモードを使用して、ベクトル処理を効率的に行うことができる。
すなわち、本実施例は、複数の演算に対して有効または無効な演算をビット単位で指定する機能だけを有するベクトルプロセッサに比して、連続して有効になる数を指定する整数マスクモードの機能を利用することができる。
この整数マスクモード(整数マスク格納部)により、前もって連続して有効になる演算の数が分かるため、それ以降の無効部分については演算を不要とすることができ、それにより不要な演算を低減して、ベクトル処理を効率的に行うことが可能になる。
図7に示す実装例では、オペランドとして指定できるMRレジスタは8個(MR0〜MR7)までであり、ビットパターンマスク格納部41,整数マスク格納部42およびモード格納部43を8個持つことになる。
ここで、後に図19を参照して詳述するが、図7のように、整数マスク格納部42およびモード格納部43を新たなレジスタとして追加せずに、一般的なベクトルプロセッサのレジスタエントリを整数マスク格納部42として使用(共用)することもできる。
図7(b)は、モード格納部43の値(フラグ)が『0』のビットパターンマスクモードと、モード格納部43の値が『1』の整数マスクモードの例を示し、両方とも、先頭から3個のデータが有効(T)で、その後のデータが全て無効(F)の場合を表している。
まず、モード格納部43の値が『0』でビットパターンマスクモードとなるMR0では、ビットパターンマスク格納部41に対して、最初の3ビットが『1,1,1』でその後の全てのビットが『0,0,…,0』となるビットパターンが格納される。
なお、このビットパターンマスクモードにおいて、整数マスク格納部42の値は、任意の値(x)でよい。また、ビットパターンマスクモードでは、全てのデータ(要素)に対して、それぞれ有効/無効を示すビットを割り当てるため、必ずしも有効となるデータが連続しないこともある。
次に、モード格納部43の値が『1』で整数マスクモードとなるMR1では、整数マスク格納部42に対して、整数値『3』が格納される。なお、この整数マスクモードにおいて、ビットパターンマスク格納部41の全てのビットは、任意の値(x)でよい。
整数マスク格納部42に格納される整数値(整数データ)は、先頭から連続して有効(T)となるデータの個数を示しており、いちど無効(F)が出現すると、それ以降は全て無効であることが分かるため、それ以降の演算を実行しなくてもよい。
従って、無効が出現した時点で、それまでの命令を中止し、パイプラインリソースを解放して、後続の命令を実行させることで、処理を高速化する(効率的に行う)ことが可能になる。
このように、本実施例では、マスクレジスタ4に対して、整数マスクモードまたはビットパターンマスクモードを設定するモード格納部43と、先頭から有効となる連続したデータ(演算)の個数を示す整数値を格納する整数マスク格納部42を新たに追加する。
ここで、モード格納部43は、各MRで1ビットでもよく、また、整数マスク格納部42は、ベクトル長(VL)の最大値をVLMとすると、Log2(VLM)ビット分(例えば、VLM=32の場合、5ビット幅)でよいため、レジスタの増加はさほど問題とはならない。
すなわち、VLMがこの程度の大きさであれば(VLM=1024程度でも)、別のレジスタからのムーブ、および、即値からのセットを1サイクルで実行することができる。
なお、モードレジスタ4に対して、整数マスク格納部42に格納された整数値をビットデータに変換してパイプラインに供給する変換器(44)を設けることで、ユーザ(プログラマ)は通常のベクトルプロセッサと同様に使用することができる。すなわち、プログラマからは、整数マスク格納部42やモード格納部43といったレジスタは見えないため、気にすることなく使用することができる。これは、図9を参照して、後に、詳述する。
また、整数マスクモードでは、例えば、先頭から有効となる連続したデータ数(演算結果のデータの数)を整数マスク格納部42に格納するが、後に図20を参照して詳述するように、必ずしも先頭から連続しなくても、有効となるデータが連続していればよい。
図8は、本実施例の演算処理装置における読み出し動作を説明するための図であり、ベクトルレジスタ3およびマスクレジスタ4をソースとし、ベクトルレジスタ3をデスティネーションとするベクトル命令の動作を説明するためのものである。
図8に示されるように、ベクトルパイプライン60(62〜65)は、命令デコード(ID)ステージ、レジスタリード(RR)ステージ、実行(EX)ステージ、メモリ参照(MM)ステージおよびライトバック(WB)ステージの処理を実行する。
なお、図8では、図1を参照して説明した命令フェッチ(IF)ステージを省略してMMステージを示しているが、ベクトルプロセッサのアーキテクチャとしては、様々なものが提案されており、図1および図8に限定されず、様々なものを採用してもよい。
ベクトルパイプライン60は、パイプラインレジスタ601,602,604および605、並びに、並列演算器603を有する。ここで、並列演算器603は、前に、図2を参照して説明したように、例えば、8個の16ビット演算器を並列に動作させて並列演算を実行する。
図8に示されるように、IDステージでは、命令(Instruction)を命令デコーダ5に入力してデコードし、そのデコードされた命令を1サイクルに1命令ずつベクトルパイプライン(パイプラインレジスタ601)に投入する。なお、前述したように、各命令で演算するデータ数は、ベクトル長(VL)により管理される。
RRステージでは、パイプラインレジスタ602でベクトルレジスタ3およびマスクレジスタ4からのデータを受け取って、並列演算器603に出力する。さらに、EXステージでは、並列演算器603により並列演算を実行し、その演算結果をパイプラインレジスタ604に出力する。
また、MMステージでは、メモリを参照してパイプラインレジスタ604のデータをパイプラインレジスタ605に出力する。そして、WBステージでは、パイプラインレジスタ605のデータをベクトルレジスタ3にライトバックして処理を終了する。
図9は、本実施例の演算処理装置におけるマスクレジスタの一例を示すブロック図である。図9に示されるように、マスクレジスタ部(マスクレジスタMR)4は、ビットパターンマスク格納部41,整数マスク格納部42,モード格納部43,整数マスク→ビットパターンマスク変換器(変換器)44,終端判定回路45およびカウンタ46を有する。さらに、マスクレジスタ部4は、バッファ47a,47b、および、選択器48a〜48cを有する。
ここで、ビットパターンマスク格納部41,整数マスク格納部42およびモード格納部43は、図7を参照して説明したものであり、整数マスク格納部42およびモード格納部43が、本実施例のマスクレジスタ部4で新たに追加されるのは前述した通りである。
また、本実施例のマスクレジスタ部4では、新たに、モード格納部43にモードを設定するためのモード信号(mode)、並びに、整数マスクモードにおいて、有効となるデータの終端を示す終端判定信号(end flag)が使用されている。
図9において、参照符号read addressはリードアドレス信号、write addressはライトアドレス信号、dataは処理するデータ、そして、mask patternはマスクするデータを指定するマスクパターン信号である。
なお、例えば、有効なデータを指定する開始判定信号(start flag)は、リードアドレス信号read addressの値をから先頭の要素が格納されていることを判定することができるため省略しているが、例えば、直接外部から与えることもできる。さらに、クロック信号(clock)やリードイネーブル信号(read enable)等は、自明であるため省略している。
本実施例において、モード格納部43は、図7で説明した通り1ビット幅、8エントリのレジスタであり、例えば、リードおよびライトアドレス信号read address,write addressの下位の3ビットを除いたアドレス(8で割ったアドレス値)でアクセスされる。
ここで、前述したように、モード格納部43の設定は、例えば、『0』の時にビットパターンマスクモードとし、『1』の時に整数マスクモードとする。なお、初期値は、例えば、『0』(ビットパターンマスクモード)とする。
整数マスク格納部42は、例えば、5ビット幅で8エントリのレジスタとされ、リードおよびライトアドレス信号read address,write addressの下位3ビットを除いたアドレス(8で割ったアドレス値)でアクセスされる。ビットパターンマスク格納部41は、例えば、8ビット幅で64エントリのレジスタとされている。
図9に示されるように、モード格納部43の出力には、バッファ47aおよび選択器48aが設けられ、また、整数マスク格納部42の出力には、バッファ47bおよび選択器48bが設けられている。
バッファ47aおよび47bは、カウンタ46の出力により制御され、また、選択器48aおよび48bは、それぞれ47aおよび47bの各入力と出力を選択して選択器48cおよび変換器44に出力する。
バッファ47aは、モード格納部43から読み出した値(モード)を一時的に格納し、バッファ47bは、整数マスク格納部42から読み出した値を一時的に格納する。そして、選択器48aおよび48bにより、各命令の先頭のサイクルでは読み出したデータをそのまま出力して、例えば、内部のフリップフロップ(バッファ47a,47b)に保存し、先頭以外のサイクルでは、そのフリップフロップに格納した値を出力する。
なお、選択器48cは、選択器48aの出力に従って、ビットパターンマスク格納部41の出力または変換器44の出力を選択し、マスクパターン信号mask patternとして出力する。
すなわち、マスクレジスタ4から出力されるマスクパターン信号mask patternは、整数マスクモードであっても、ビットパターンマスクモードの時と同様に、ビットパターンマスクデータに変換したものを出力する。これにより、ユーザ(プログラマ)は、整数マスクモードとビットパターンマスクモードを気にすることなく、通常のベクトルプロセッサと同様に使用することができる。
ここで、演算命令の中には、命令を連続させることができるものがあり、そのような命令に対して積極的に整数マスクモードを適用することにより、不要な演算を減らし、プロセッサの演算効率を向上させることが可能になる。
そのため、演算命令の内容に基づいて、整数マスクモードが適用可能か否かを判定し、可能な場合は整数マスクモードでマスクレジスタの情報を生成することにより、ベクトル処理を効率的に行うことが可能になる。
図10は、図9のマスクレジスタにおけるアドレスとデータ配置を説明するための図であり、図11は、図9のマスクレジスタにおける変換器の処理を説明するための図である。
図10に示すマスクレジスタ(MR)4のデータ配置において、参照符号示mr0〜mr7は、命令コードで指定されるオペランドを示し、例えば、VL=64の時、mr0は、アドレス(address)=0〜7までの全てのエントリにデータが格納されている。
また、例えば、VL=32の時、mr0は、address=0〜3までのエントリを使用し、address=4〜7は使用しない。mr0と同様にして、アドレスが8毎に、mr0〜mr7のエントリの割り当てが行われる。
なお、ベクトルプロセッサの仕様によっては、VLが変化すると、先頭の位置が変わる(例えば、データが少なくなった分だけ詰める)ものもあるが、計算が複雑になるだけでアーキテクチャの情報があればアドレスだけで先頭のアクセスを判別することができる。
カウンタ46は、例えば、下記の動作を行うカウンタである。
初期値 = 0
(address%8) == 0 の時:リセット(命令の先頭を示す)
(address%8)! = 0 の時:カウントアップ
終端判定回路45は、整数マスクモードの時、それ以降のサイクルの演算が全て無効となる(マスクされる)ことを判定する回路である。例えば、下記の条件を満たす時、次のサイクル以降の演算が全て無効となる(マスクされる)ため、演算パイプラインの制御回路に対し、それ以降の演算の中止が可能であることを示す信号を出力する。
整数マスクデータが8の倍数の時
(mode == 1) && (((整数マスクデータ/8) - カウンタ値) == 1)
整数マスクデータが8の倍数でない時
(mode == 1) && (((整数マスクデータ/8) - カウンタ値) == 0)
なお、終端判定回路45から上記の信号を受け取ったパイプライン制御回路は、演算スロットを解放し、次の演算投入が可能な状態になる。
変換器(整数マスク→ビットパターンマスク変換器)44は、図11に示す変換テーブルを実現するように変換処理を行う。すなわち、変換器44の入力(すなわち、整数マスクデータ/8−カウンタ値となるカウンタ46の出力)が『0』のときは『0000 0000』を出力し、入力が『1』のときは『1000 0000』を出力し、入力が『2』のときは『1100 0000』を出力する。
また、変換器44の入力が『3』のときは『1110 0000』を出力し、入力が『4』のときは『1111 0000』を出力し、入力が『5』のときは『1111 1000』を出力し、そして、入力が『6』のときは『1111 1100』を出力する。
さらに、変換器44の入力が『7』のときは『1111 1110』を出力し、そして、入力が『8以上』のときは『1111 1111』を出力する。このようにして、整数マスクモードにおける整数マスクパターンデータを、ビットパターンマスクデータに変換して出力することができる。
図12は、本実施例の演算処理装置におけるビットパターンマスクモードでの動作の一例を説明するためのタイミング図であり、図13は、本実施例の演算処理装置における整数マスクモードでの動作の一例を説明するためのタイミング図である。なお、図12および図13は、VL=32の動作を示している。
まず、モード格納部43から読み出した値がビットパターンマスクモード(mode reg:『0』)を示していた場合、マスクレジスタ4には、各データに対応したビットパターンマスクデータ(bit reg)がビットパターンマスク格納部41に格納されている。具体的に、ビットパターンマスクデータbit regは、『0xFF』,『0xFF』,『0xF8』,『0x00』となっている。この場合、ビットパターンマスク格納部41からビットパターンマスクデータを読み出し、それをマスクレジスタ4の値(マスクパターン信号mask pattern)として出力する。
すなわち、図12に示されるように、VL=32で、8並列の演算器があるため、1つのベクトル命令は、4サイクルかかる。すなわち、ビットパターンマスクモードでの動作は、終端判定信号(end flag)は使用されず、マスクパターン信号mask patternは、4サイクル分出力される。
これに対して、モード格納部43から読み出した値が整数マスクモード(mode reg:『1』)を示していた場合、マスクレジスタ4には、先頭からの有効データの個数を示す値が整数マスクデータ(int reg)として整数マスク格納部42に格納されている。この場合、整数マスク格納部42から整数マスクデータ『0x15』を読み出し、それを変換器44によりビットパターンマスクデータに変換してマスクパターン信号mask patternとして出力する。
すなわち、図13に示されるように、VL=32で、8並列の演算器があるため、1つのベクトル命令は、4サイクルかかる。しかしながら、整数マスクモードでは、4サイクル目は、8並列演算の全てが無効(F)なので、3サイクル目で命令が終了する。具体的に、終端判定回路45から終端判定信号end flagが出力され、これを受けて、マスクパターン信号mask patternは、3サイクル分だけ出力され、3サイクル目で命令が終了する。
従って、図12および図13の比較から明らかなように、本実施例の演算処理装置における整数マスクモードを適用することにより、1サイクル分短い時間で処理を行うことができるのが分かる。
図14は、本実施例の演算処理装置におけるベクトル命令でのマスクレジスタ書き込みを説明するための図であり、図15は、本実施例の演算処理装置におけるスカラー命令でのマスクレジスタ書き込みを説明するための図である。
図8を参照して説明したように、図14に示すベクトルパイプライン60(62〜65)は、パイプラインレジスタ601,602,604および605、並びに、並列演算器603を有する。
また、図15に示すスカラーパイプライン61は、パイプラインレジスタ611,612,614および615、並びに、スカラー演算器613を有する。
なお、ベクトルパイプライン60およびスカラーパイプライン61は、図8で説明したように、命令デコード(ID)ステージ、レジスタリード(RR)ステージ、実行(EX)ステージ、メモリ参照(MM)ステージおよびライトバック(WB)ステージの処理を実行する。
ただし、図14に示すベクトル命令でのマスクレジスタ書き込みにおいて、RRステージでは、パイプラインレジスタ602でベクトルレジスタ3からのデータを受け取って、並列演算器603に出力する。
また、図15に示すスカラー命令でのマスクレジスタ書き込みにおいて、RRステージでは、パイプラインレジスタ612でスカラーレジスタ2からのデータを受け取って、スカラー演算器613に出力する。
図14に示されるように、ベクトル命令でマスクレジスタMRをデスティネーションとする命令(VR同士の比較命令やMRへのロード命令)では、MRをビットパターンマスクモードとして書き込みを行う。すなわち、モード格納部43の値を『0』に設定し、ビットパターンマスク格納部41にビットパターンマスクデータを書き込む。
また、図15に示されるように、スカラー命令でマスクレジスタMRをデスティネーションとする命令では、MRを整数マスクモードとして書き込みを行う。すなわち、モード格納部43の値を『1』に設定し、整数マスク格納部42に整数マスクデータを書き込む。
ここで、スカラー命令でマスクレジスタ(MR)4に書き込む命令の例を、以下に示す。
ssetim mr0 #10 (即値10をmr0に整数マスクモードで書き込む命令)
smovrm mr0 sr1 (SR1の内容をmr0に整数マスクモードで書き込む命令)
図16は、ビットパターンマスクモードおよび整数マスクモードにおけるデータエントリの例を示す図である。ここで、図16の例は、VL=32、且つ、先頭から21個のデータ(要素)が有効(T)でその後の11個のデータが全て無効(F)の場合を表している。なお、整数マスク格納部42に設定する整数マスクデータは、16進数で示している。
まず、モード格納部43の値が『0』のビットパターンマスクモードにおいて、ビットパターンマスク格納部41には、最初の21ビットが『1,1,…,1』で、その後の11ビットが『0,0,…,0』となるビットパターンが格納される。なお、整数マスク格納部42の任意の値(x)でよい。
次に、モード格納部43の値が『1』の整数マスクモードにおいて、整数マスク格納部42には、整数値『0x15』が格納される。ここで、整数マスク格納部42に設定された『0x15』は、16進数なので、先頭から21個のデータが有効で、22個目以降のデータが無効であることを示す。
すなわち、モード格納部43の値が『1』で、整数マスク格納部42の値が『0x15』であることにより、先頭から21個のデータが有効で、22個目以降のデータが無効であることが分かる。従って、無効となる22個目以降のデータに対応する演算(命令)を、その時点で終了し、次の命令を投入することにより、効率的に処理を行うことが可能になる。
図17および図18は、本実施例の演算処理装置における命令発行制御を説明するための図である。ここで、命令発行制御部50は、前述した図4における命令デコーダ5に対応し、演算スロット60a〜60dは、図4におけるベクトルパイプライン62〜65に対応する。また、各演算スロット60a〜60dは、それぞれ8個の演算器を有し、その8個の演算器を8サイクルに渡って処理することにより、VL=64の演算命令を実行する。
上述したように、整数マスクモードにおいて、整数マスク格納部42に格納された値によって、先頭から有効となるデータの数(例えば、21個)、並びに、それ以降(22個目以降)のデータ(22〜64番目のデータ)を確認することができる。そして、無効となる22個目以降のデータに対応する命令を打ち切って、次の命令を発行する。
すなわち、図17に示されるように、命令メモリ7から読み出した命令は、命令発行制御部50(命令デコーダ5)を介して各演算スロット60a〜60d(ベクトルパイプライン62〜65)に投入される。ここで、各演算スロット60a〜60dには、ビジーフラグ(busy flag)が設けられている。
命令発行制御部50は、各レジスタの依存関係および演算スロットの使用状況を見て命令を発行する。例えば、各演算スロット60a〜60dが8つの演算器を有している場合、1つの命令が発行されると、VL/8サイクルの間、演算スロットが占有される。
ここで、整数マスクモードでは、整数マスク格納部42に格納された値(MR=20)によって、有効となるデータ数(20個)より後のデータが無効と分かっているので、実行している命令を途中で打ち切って、次の命令を演算スロットに投入することができる。
具体的に、図18に示されるように、整数マスクモードにおいて、MR=20は、20=8+8+4なので、1および2サイクル目では8つの演算器により処理を行うが、3サイクル目では、4つの演算器で処理を行えばよい。
そして、4サイクル目以降では、無効となる演算を行うため、3サイクル目でそれまでの命令(命令1)を打ち切り、すなわち、演算スロットを開放し(busy flagを下げ)、4サイクル目から次の命令(命令2)を投入して実行する。これにより、演算スロットがビジーとなる期間を短縮して、次の命令を早く開始することが可能になる。
さらに、本実施例では、整数マスク格納部42に整数マスクデータを格納するため、たとえVLが長い場合でも、1サイクルで設定することが可能になる。
すなわち、演算命令の中には、命令を連続させることができるものがあり、そのような命令に対して積極的に整数マスクモードを適用することにより、不要な演算を減らし、プロセッサの演算効率を向上させることが可能になる。
そのため、演算命令の内容に基づいて、整数マスクモードが適用可能か否かを判定し、可能な場合は整数マスクモードでマスクレジスタの情報を生成することにより、ベクトル処理を効率的に行うことが可能になる。
図19は、本実施例の演算処理装置におけるマスクレジスタの他の実装例を説明するための図であり、図19(a)はレジスタの構成を示し、図19(b)はビットパターンマスクモードと整数マスクモードの例を示す。
図19(a)と前述した図7(a)との比較から明らかなように、本実装例では、1ビット幅のモード格納部43のみを追加し、一般的なベクトルプロセッサのレジスタエントリを整数マスク格納部42としても使用するようになっている。
すなわち、本実装例では、整数マスク格納部42として使用するためのレジスタを追加することなく、ビットパターンマスク格納部41の一部を共有するようになっている。例えば、整数マスクデータを格納する際、ビットパターンマスク格納部41の各オペランドの先頭アドレスの位置に格納する。
このように、整数マスク格納部42用のレジスタを新たに追加することなく、ベクトルプロセッサのレジスタエントリを共用した場合、レジスタの容量増加を抑えることはできるが、例えば、後続命令とのチェイニングに問題が生じる虞がある。この場合、例えば、後続命令とのチェイニングを行うためにデータを回避しておく、バッファを設けることにより対処することができる。
図19(b)は、前述した図7(b)に対応するものであり、整数マスク格納部42としてベクトルプロセッサのレジスタエントリを共用する点以外は同様である。
すなわち、モード格納部43の値が『0』でビットパターンマスクモードとなるMR0では、ビットパターンマスク格納部41に対して、最初の3ビットが『1,1,1』でその後の全てのビットが『0,0,…,0』となるビットパターンが格納される。なお、このビットパターンマスクモードにおいて、整数マスク格納部42の値は、任意の値(x)でよい。
また、モード格納部43の値が『1』で整数マスクモードとなるMR1では、整数マスク格納部42に対して、整数値『3』が格納される。なお、この整数マスクモードにおいて、ビットパターンマスク格納部41の全てのビットは、任意の値(x)でよい。
ここで、ユーザ(プログラマ)がデバッガを利用する場合、そのデバッガに対して整数マスクモードをビットパターンマスクモードに変換したデータを表示する機能を持たせることで、ユーザにマスクモードを意識させないようにすることができる。すなわち、デバッガ画面では、整数マスクモードの時には、整数マスクデータをビットパターンマスクデータに変換して表示する。
そして、ユーザが、デバッガ画面でMRの値を変更した場合、例えば、先頭に『1』が連続しそれ以外は『0』の値をセットしたときには、自動的に整数マスクモードとして整数マスクデータを演算処理装置(マスクレジスタ部)に書き込むようにすることができる。これにより、ユーザは、整数マスクモードとビットパターンマスクモードを意識することなくデバッグ処理を行うことが可能になる。
さらに、整数マスクモードとビットパターンマスクモードの両方にマスクデータを設定し、モード格納部43に値を設定する新たな命令により、整数マスクモードとビットパターンマスクモードの一方を使用することも可能である。
すなわち、上述した説明では、整数マスク格納部42に対して整数マスクデータを書き込むとき、モード格納部43に対して『1』を格納し、整数マスクモードの場合には、整数マスク格納部42の整数マスクデータを読み出していた。
また、ビットパターンマスク格納部41にビットパターンマスクデータを書き込むとき、モード格納部43に『0』を格納し、ビットパターンマスクの場合には、ビットパターンマスク格納部41のビットパターンマスクデータを読み出していた。
これに対して、全てのデータに対して、ビットパターンマスク格納部41にビットパターンマスクデータを書き込むと共に、整数マスク格納部42に整数マスクデータを書き込むようにする。
そして、モード格納部43の値を『0』または『1』に設定する新たな命令により、ビットパターンマスクデータと整数マスクデータの一方を使用することが可能になる。すなわち、新たな命令によりモード格納部43の値を変更することで、ビットパターンマスク格納部41および整数マスク格納部42の各エントリを有効に活用することが可能になる。
なお、以上において、ビットパターンマスクモードでは、全てのデータに対して、それぞれ有効/無効を示すビットを割り当てるため、必ずしも有効となるデータ(演算)が連続しないこともある。また、整数マスクモードでは、整数マスク格納部42に格納する連続して有効となるデータ(演算)の個数は、次の図20を参照して説明するように、必ずしも先頭から連続して有効となるデータに限定されるものではない。
図20は、本実施例の演算処理装置における整数マスクデータの設定の変形例を説明するための図であり、整数マスクモードにおいて、有効となる連続したデータ数が先頭からではない場合の例を示すものである。
整数マスクモードにおいて、例えば、先頭から無効(F)になるデータ数を制御レジスタ(51)により指定し、整数マスク格納部42に設定した値により、それ以降に有効(T)となる連続したデータ数を指定する。なお、制御レジスタ(51)は、例えば、図4に示されている。
具体的に、図20に示されるように、制御レジスタにより先頭から無効になる4個のデータ数を指定し、その後、整数マスク格納部42により有効となる連続した5個のデータ数を指定する。すなわち、制御レジスタは、有効となる連続したデータの開始位置を指定する。
このとき、整数マスク格納部42により指定された有効となる連続した5個のデータは、1サイクルの5番目のデータからサイクル2の1番目のデータまでの5個のデータになるため、2サイクルまででそれまでの命令を中断(終了)する。そして、3サイクル目から次の命令を実行する。
なお、図20のように、整数マスクモードにおいて、有効となる連続するデータ数が先頭からではない場合、図9および図11を参照して前に説明した終端判定回路45並びに変換器44が変更されることになる。
図21は、本実施例の携帯端末の一例を模式的に示す図であり、ソフトウェア無線に対応した携帯端末の例を示すものである。図21に示されるように、携帯端末100は、ディスプレイ110,スピーカー120,マイク130,操作キー141〜143,ベースバンド処理部150,高周波(Radio Frequency:RF)回路160およびアンテナ170を含む。
ここで、ディスプレイ110は、タッチパネルとなっており、また、回路として、ベースバンド処理部150の他に、様々な処理回路やメモリ等を含むのはいうまでもない。
図22は、本実施例の携帯端末におけるベースバンド処理部の一例を示すブロック図である。図22に示されるように、ベースバンド処理部150は、専用ハードウェア151,バス(接続配線)152および複数のモジュール153a〜153cを含む。
専用ハードウェア151には、例えば、ターボ(turbo),ビタビ(viterbi)およびマルチユーズ(MIMO:Multi Input Multi Output)等に対応した専用のハードウェアが含まれる。
専用ハードウェア151は、重い処理をサポートするパラメータで設定変更がある程度可能になっており、専用ハードウェア151およびモジュール153a〜153cは、バス152を介してRF回路160に接続されている。なお、専用ハードウェア151およびRF回路160等の接続は、アナログインターフェースを介して行われる。
各モジュール153a〜153cは、それぞれプロセッサ(ベクトルプロセッサ:演算処理装置)31a〜31c,プログラムメモリ32a〜32c,周辺回路33a〜33cおよびデータメモリ34a〜34cを含む。
各モジュール153a〜153cにおいて、プロセッサ31a〜31c,プログラムメモリ32a〜32c,周辺回路33a〜33cおよびデータメモリ34a〜34cは、それぞれ内部バス35a〜35cを介して接続されている。
各モジュール153a〜153cは、それぞれプロセッサ31a〜31c,プログラムメモリ32a〜32c,周辺回路33a〜33cおよびデータメモリ34a〜34cにより、それぞれ異なる無線規格(例えば、W−CDMAやLTE)に対応可能になっている。
そして、RF回路160およびアンテナ170を介して、各モジュール153a〜153cにより設定された無線規格に従った無線通信が行われる。
図23は、本実施例の携帯端末による異なる通信方式を切り替えて通信を行うソフトウェア無線機能の一例を説明するための図である。
図23において、参照符号200は、W−CDMA(Wideband Code Division Multiple Access)方式の基地局を示し、200aは、W−CDMA基地局200の電波到達エリアを示す。また、参照符号300は、LTE(Long Term Evolution)方式の基地局を示し、300aは、LTE基地局300の電波到達エリアを示す。
図23に示されるように、例えば、携帯端末100を携帯したユーザがW−CDMA基地局200の電波到達エリア200aを外れて、LTE基地局300の電波到達エリア300aに入る場合、携帯端末100は、基地局を200から300に変更して通信する。
具体的に、図22におけるモジュール153aは、例えば、W−CDMA方式の通信を実現するために使用され、図22におけるモジュール153bは、例えば、LTE方式の通信を実現するために使用される。従って、電波到達エリアが200aから300aに変わると、携帯端末100で通信に使用するモジュールが153aから153bに切り替わる。
ここで、モジュール153aおよび153bは、W−CDMAおよびLTE方式の通信を行うためにベクトル演算を行うことになる。なお、ソフトウェア機能を有する携帯端末100は、W−CDMAおよびLTE方式の通信に限定されず、様々な通信方式であってもよい。
図24は、図23のソフトウェア無線機能を実現する処理の一例を示すフローチャートである。
まず、ソフトウェア無線機能を実現する処理が開始すると、ステップST1において、基地局を検索してステップST2に進む。ステップST2では、最も感度の良い基地局を検索し、さらに、ステップST3に進んで、今と異なる基地局が最良かどうかを判定する。
ステップST3において、今と異なる基地局が最良(最良の感度)であると判定すると、ステップST4に進んで、通信方式が異なるかどうか(伝送レートが上がるかどうか)を判定する。ステップST4において、通信方式が異なると判定すると、ステップST5に進んで、通信方式の変更を行い、ステップST1に戻って同様の処理を繰り返す。
ここで、通信方式の変更は、例えば、W−CDMA方式用のモジュール153aからLTE方式用のモジュール153bに切り替えると共に、専用ハードウェア151のパラメータ等の設定を変更して、W−CDMA方式からLTE方式に切り替える。
一方、ステップST3において、今と異なる基地局が最良ではない、すなわち、今の基地局の方が良いと判定すると、或いは、ステップST4において、通信方式が異ならない、すなわち、それまでと同じ通信方式であると判定すると、ステップST6に進む。ステップST6では、通常の通信動作、すなわち、通信方式の変更を行わずに、ステップST1に戻り、同様の処理を繰り返す。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
1つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを格納する第1マスク格納部と、
前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを格納する第2マスク格納部と、
を有することを特徴とする演算処理装置。
(付記2)
前記第2マスクデータを使用する場合、前記第2マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする付記1に記載の演算処理装置。
(付記3)
前記第2マスクデータを使用する場合、前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする付記2に記載の演算処理装置。
(付記4)
前記第2マスク格納部は、前記ベクトル命令のベクトル長において、先頭から連続して有効になる演算の数を格納する、
ことを特徴とする付記1乃至付記3のいずれか1項に記載の演算処理装置。
(付記5)
前記複数の演算に対して、前記第1マスク格納部に前記第1マスクデータを格納すると共に、前記第2マスク格納部に前記第2マスクデータを格納し、
前記第1マスクデータまたは前記第2マスクデータを選択して使用する、
ことを特徴とする付記1乃至付記4のいずれか1項に記載の演算処理装置。
(付記6)
さらに、
前記第1マスクデータを使用する第1マスクモード、または、前記第2マスクデータを使用する第2マスクモードを格納するモード格納部を含む、
ことを特徴とする付記1乃至付記5のいずれか1項に記載の演算処理装置。
(付記7)
さらに、
前記第2マスクデータを前記第1マスクデータと同じ形式のデータに変換する変換器と、
前記モード格納部に前記第1マスクモードが格納されているときは、前記第1マスク格納部に格納された前記第1マスクデータを選択し、前記モード格納部に前記第2マスクモードが格納されているときは、前記変換器により変換された前記第1マスクデータと同じ形式のデータを選択する選択器と、
を含むことを特徴とする付記6に記載の演算処理装置。
(付記8)
さらに、
前記モード格納部に前記第2マスクモードが格納されているときは、前記第2マスクデータから前記連続して有効になる数の終端を判定する終端判定回路を含む、
ことを特徴とする付記6または付記7に記載の演算処理装置。
(付記9)
前記演算処理装置は、
少なくとも1つのスカラーパイプラインと、
少なくとも1つのベクトルパイプラインと、を含み、
前記ベクトルパイプラインは、並列に動作する複数の演算器を含む、
ことを特徴とする付記1乃至付記8のいずれか1項に記載の演算処理装置。
(付記10)
前記第1マスクデータは、ベクトル命令により前記第1マスク格納部に書き込まれ、
前記第2マスクデータは、スカラー命令により前記第2マスク格納部に書き込まれる、
ことを特徴とする付記9に記載の演算処理装置。
(付記11)
第1および第2の無線通信方式を含む異なる複数の無線通信方式により通信を行うベースバンド処理部を備える携帯端末であって、
前記ベースバンド処理部は、
前記第1無線通信方式による通信を行うための第1モジュールと、
前記第2無線通信方式による通信を行うための第2モジュールと、
パラメータにより設定を変更できる専用ハードウェアと、を含み、
前記第1モジュールおよび前記第2モジュールは、それぞれ付記1乃至付記10のいずれか1項に記載の演算処理装置を含む、
ことを特徴とする携帯端末。
(付記12)
前記第1モジュールおよび前記第2モジュールは、前記第1無線通信方式の第1基地局および前記第2無線通信方式の第2基地局からの感度に従って選択される、
ことを特徴とする付記11に記載の携帯端末。
(付記13)
前記第1モジュールおよび前記第2モジュールは、さらに、それぞれ前記演算処理装置と接続されるプログラムメモリ、データメモリおよび周辺回路を含む、
ことを特徴とする付記10または付記11に記載の携帯端末。
(付記14)
1つのベクトル命令により配列データに対して複数の演算を実行する演算処理方法であって、
前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを設定し、
前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを設定し、
前記第1マスクデータを使用する第1マスクモード、または、前記第2マスクデータを使用する第2マスクモードを設定し、
前記第2マスクモードを設定した場合に、前記第2マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
ことを特徴とする演算処理方法。
(付記15)
さらに、
前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
ことを特徴とする付記14に記載の演算処理方法。
1 演算処理装置(ベクトルプロセッサ)
2 スカラーレジスタ(SR)
3 ベクトルレジスタ(VR)
4 マスクレジスタ(MR:マスクレジスタ部)
5 デコーダ(デコードロジック)
6 パイプライン演算部
7 命令メモリ
8,34a〜34c データメモリ
31a〜31c プロセッサ(ベクトルプロセッサ:演算処理装置)
32a〜32c プログラムメモリ
33a〜33c 周辺回路
35a〜35c 内部バス
50 命令発行制御部
51 制御レジスタ
61 スカラーパイプライン
60,62〜65 ベクトルパイプライン
100 携帯端末
110 ディスプレイ
120 スピーカー
130 マイク
141〜143 操作キー
150 ベースバンド処理部
160 RF回路
170 アンテナ
151 専用ハードウェア
152 バス
153a〜153c モジュール
200 W−CDMA方式の基地局
200a W−CDMA基地局の電波到達エリア
300 LTE方式の基地局
300a LTE基地局の電波到達エリア

Claims (10)

  1. 1つのベクトル命令により配列データに対して複数の演算を実行する演算処理装置であって、
    前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを格納する第1マスク格納部と、
    前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを格納する第2マスク格納部と、
    を有することを特徴とする演算処理装置。
  2. 前記第2マスクデータを使用する場合、前記第2マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
    ことを特徴とする請求項1に記載の演算処理装置。
  3. 前記第2マスクデータを使用する場合、前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
    ことを特徴とする請求項2に記載の演算処理装置。
  4. さらに、
    前記第1マスクデータを使用する第1マスクモード、または、前記第2マスクデータを使用する第2マスクモードを格納するモード格納部を含む、
    ことを特徴とする請求項1乃至請求項3のいずれか1項に記載の演算処理装置。
  5. さらに、
    前記第2マスクデータを前記第1マスクデータと同じ形式のデータに変換する変換器と、
    前記モード格納部に前記第1マスクモードが格納されているときは、前記第1マスク格納部に格納された前記第1マスクデータを選択し、前記モード格納部に前記第2マスクモードが格納されているときは、前記変換器により変換された前記第1マスクデータと同じ形式のデータを選択する選択器と、
    を含むことを特徴とする請求項4に記載の演算処理装置。
  6. さらに、
    前記モード格納部に前記第2マスクモードが格納されているときは、前記第2マスクデータから前記連続して有効になる数の終端を判定する終端判定回路を含む、
    ことを特徴とする請求項4または請求項5に記載の演算処理装置。
  7. 第1および第2の無線通信方式を含む異なる複数の無線通信方式により通信を行うベースバンド処理部を備える携帯端末であって、
    前記ベースバンド処理部は、
    前記第1無線通信方式による通信を行うための第1モジュールと、
    前記第2無線通信方式による通信を行うための第2モジュールと、
    パラメータにより設定を変更できる専用ハードウェアと、を含み、
    前記第1モジュールおよび前記第2モジュールは、それぞれ請求項1乃至請求項6のいずれか1項に記載の演算処理装置を含む、
    ことを特徴とする携帯端末。
  8. 前記第1モジュールおよび前記第2モジュールは、前記第1無線通信方式の第1基地局および前記第2無線通信方式の第2基地局からの感度に従って選択される、
    ことを特徴とする請求項7に記載の携帯端末。
  9. 1つのベクトル命令により配列データに対して複数の演算を実行する演算処理方法であって、
    前記複数の演算に対して、それぞれ有効または無効な演算を指定する第1マスクデータを設定し、
    前記複数の演算に対して、連続して有効になる数を指定する第2マスクデータを設定し、
    前記第1マスクデータを使用する第1マスクモード、または、前記第2マスクデータを使用する第2マスクモードを設定し、
    前記第2マスクモードを設定した場合に、前記第2マスクデータにより指定された連続して有効な数の演算を実行した後、それ以降の無効な演算を行わずに実行中のベクトル命令を中止する、
    ことを特徴とする演算処理方法。
  10. さらに、
    前記無効な演算を行わずに実行中のベクトル命令を中止した後、演算スロットを解放して前記実行中のベクトル命令とは異なる命令を実行する、
    ことを特徴とする請求項9に記載の演算処理方法。
JP2012049301A 2012-03-06 2012-03-06 演算処理装置、携帯端末および演算処理方法 Pending JP2013186547A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012049301A JP2013186547A (ja) 2012-03-06 2012-03-06 演算処理装置、携帯端末および演算処理方法
US13/740,266 US20130238880A1 (en) 2012-03-06 2013-01-14 Operation processing device, mobile terminal and operation processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012049301A JP2013186547A (ja) 2012-03-06 2012-03-06 演算処理装置、携帯端末および演算処理方法

Publications (1)

Publication Number Publication Date
JP2013186547A true JP2013186547A (ja) 2013-09-19

Family

ID=49115140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012049301A Pending JP2013186547A (ja) 2012-03-06 2012-03-06 演算処理装置、携帯端末および演算処理方法

Country Status (2)

Country Link
US (1) US20130238880A1 (ja)
JP (1) JP2013186547A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10444578B2 (en) * 2017-08-29 2019-10-15 Novatek Microelectronics Corp. Mask storing method for driving module and related image displaying method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151822A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Efficient Enqueuing of Values in SIMD Engines with Permute Unit

Also Published As

Publication number Publication date
US20130238880A1 (en) 2013-09-12

Similar Documents

Publication Publication Date Title
US10241791B2 (en) Low energy accelerator processor architecture
EP2062134B1 (en) Device, method and machine readable medium for processing data using scalar/vector instructions
US6539467B1 (en) Microprocessor with non-aligned memory access
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
US11341085B2 (en) Low energy accelerator processor architecture with short parallel instruction word
EP1102163A2 (en) Microprocessor with improved instruction set architecture
US20080184007A1 (en) Method and system to combine multiple register units within a microprocessor
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
WO2012061416A1 (en) Methods and apparatus for a read, merge, and write register file
JP2013186547A (ja) 演算処理装置、携帯端末および演算処理方法
WO2014202825A1 (en) Microprocessor apparatus
JP5862397B2 (ja) 演算処理装置
CN111814093A (zh) 一种乘累加指令的处理方法和处理装置
CN111813447B (zh) 一种数据拼接指令的处理方法和处理装置
CN111984314A (zh) 使用位反转顺序的矢量存储
US11029953B2 (en) Branch prediction unit in service of short microcode flows
JP2012128559A (ja) 演算処理装置
CN118057308A (zh) 指令处理优化方法及相关装置
JP2012226486A (ja) ベクトル処理装置、システムおよびベクトル処理装置の動作方法
JP2002182905A (ja) ディジタル信号処理プロセッサ