JP2000305780A - マイクロプロセッサ及びプログラム記録媒体 - Google Patents

マイクロプロセッサ及びプログラム記録媒体

Info

Publication number
JP2000305780A
JP2000305780A JP11113062A JP11306299A JP2000305780A JP 2000305780 A JP2000305780 A JP 2000305780A JP 11113062 A JP11113062 A JP 11113062A JP 11306299 A JP11306299 A JP 11306299A JP 2000305780 A JP2000305780 A JP 2000305780A
Authority
JP
Japan
Prior art keywords
data
storage area
storage
unit
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP11113062A
Other languages
English (en)
Inventor
Yuki Inoue
由紀 井上
Atsushi Kiuchi
淳 木内
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11113062A priority Critical patent/JP2000305780A/ja
Publication of JP2000305780A publication Critical patent/JP2000305780A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 データの集合から所定のデータと当該データ
の番号情報とを取得する処理の処理量削減と高速化を実
現するイクロプロセッサを提供する。 【解決手段】 マイクロプロセッサに、夫々演算手段と
記憶手段を備えて並列動作可能な第1及び第2の演算部
(141,142)を採用し、データの集合から最大値
のデータとそのデータのオフセットを取得する処理に特
化した複合命令(com/max R1,R2)を命令
セットに有し、最大値であるか否かを暫定的に判定する
ための減算と、処理の信号に応ずるオフセットの更新演
算とを第1及び第2の演算部で並列処理させる。これによ
って、データの集合から所定のデータとそのオフセット
を取得する処理の処理量を削減でき、処理を高速化する
ことが可能になる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サ、さらに、コンピュータによって読み取り可能なプロ
グラムを格納したプログラム記録媒体に関し、例えば、
データの集合(データの配列)から最大値或いは最小値
のようなデータを検出するディジタル信号処理などに適
用して有効な技術に関するものである。
【0002】
【従来の技術】音声符号化処理等のデジタル信号処理に
おいて、データの集合から最大値や最小値を求め、その
結果よりデータの選択を行う処理が頻繁に用いられてい
る。このようなデータ選択処理の具体的な例として、音
声符号化処理方式の一つであるPSI−CELP(Pitc
h Synchronous Innovation-Code Excited Linear Predi
ction:ピッチ同期雑音励振源−コード励振線形予測符
号化)方式で行われるラグデータ予備選択処理がある。
このラグデータ予備選択処理では、16個のラグと呼ば
れるデータの集合から大きい順に6つのデータを選択し
てするという処理が行われる。この処理によって音声符
号化のためのデータ圧縮が行なわれる。
【0003】ここで、データの集合(データブロック)
から最大値データを選択する処理について本発明者が検
討した具体的例を挙げて説明する。
【0004】例えばn個のデータの集合から最大値デー
タを検出する場合、先ず、当該集合の先頭アドレスがア
ドレスレジスタ(R5)に初期設定され、集合のデータ
数レジスタ(R6)に値“n”、最大値レジスタ(R
2)には前記アドレスレジスタの値によって得られる集
合先頭データが内部転送によって設定され、さらに、集
合の先頭から現在処理中のデータまでのオフセット(デ
ータ番号)が設定されるオフセットレジスタ(R3)、
及び、最大値のデータに対応するオフセットが設定され
る最大値オフセットレジスタ(R4)に、初期値が設定
される。上記初期化処理に次いで、前記アドレスレジス
タ(R5)の値が指す配列先頭データをデータレジスタ
(R1)にロードし、この値と、前記最大値レジスタ
(R2)の値とを演算器で比較し、最大値レジスタ(R
2)の値がデータレジスタ(R1)の値よりも小さい場
合には、データレジスタ(R1)の値で最大値レジスタ
(R2)の内容を書き換え、そうでない場合には前記書
換えは行わない。これによって、最大値レジスタ(R
2)には集合の最大値データが格納されることになる。
さらに、前記演算器を用いて、オフセットレジスタ(R
3)をインクリメントし、前記データレジスタ(R1)
の値と最大値レジスタ(R2)の値との比較結果によ
り、最大値レジスタ(R2)の値がデータレジスタ(R
1)の値よりも小さい場合には、オフセットレジスタ
(R3)の値で最大値オフセットレジスタ(R4)の値
を書き換え、そうでない場合には前記書換えは行わな
い。これにより、最大値オフセットレジスタ(R4)に
は最大値レジスタのデータの番号であるオフセットが得
られることになる。そしてデータ数レジスタ(R6)を
−1デクリメントし、アドレスレジスタ(R5)の値を
インクリメントする。上記処理を、前記データ数レジス
タ(R6)が値“0”になるまで繰り返すことによっ
て、データの集合の中の最大値データとそのデータ番号
を最大値レジスタ(R2)と最大値オフセットレジスタ
(R4)に取得することができる。
【0005】
【発明が解決しようとする課題】前記データブロックか
ら最大値を選択する処理では、最大値とその最大値に対
応するデータ番号が必要となる。最大値とその最大値に
対応するデータ番号を得るための上記処理は、通常のマ
イクロプロセッサが備えている比較演算命令等を直列的
に実行することによって実現できる。信号処理を高速に
実行するプロセッサであるデジタルシグナルプロセッサ
(DSP)では2つのデータの大小を比較して大きい方
を選択する比較選択命令をサポートするものがある。そ
の比較選命令は最大値データの取得に利用することが可
能であるが、データ番号の最大値を検出するためには、
やはりそれとは別の減算命令や条件付きデータ転送命令
を用いなければならない。
【0006】データブロックから最大値データを選択す
る処理では、最大値とその最大値に対応するデータ番号
が必要になり、マイクロプロセッサの比較演算命令を用
いようと、DSPの比較選択命令を用いようと、何れの
場合にも、それらを直列的に行う命令を時系列に実行す
ることに変わりない。
【0007】データブロックのデータ数をn個とし、1
入力データ当たりの選択処理にかかる処理量をpサイク
ルとすると、最大値選択処理の処理量K(1)は、 K(1)=p・n となる。今、nは定数であるから、最大値選択処理の処
理量を削減するためには、1入力データ当たりの選択処
理にかかる処理量pを最小にする必要がある。
【0008】ここで、上記の最大値選択処理を見直す
と、最大値データとデータ番号の更新は同じ条件を基準
に更新される。上記検討技術では、最大値データの検出
に用いられる比較選択命令と、データ番号の検出に使用
される演算命令とは、前記データレジスタ(R1)の値
と最大値レジスタ(R2)の値とを比較するための減算
処理が重複する場合がある。これを重複させない考慮を
払ったときは、さらに、前記減算とデータ番号のインク
リメント演算とに要する処理サイクル数を少なくするこ
との重要性が本発明者によって明らかにされた。
【0009】本発明の目的は、データの集合から所定の
データと当該データの番号情報とを取得する処理の処理
量を削減でき、その処理を高速化することができるマイ
クロプロセッサを提供することにある。
【0010】本発明の別の目的は、データの集合から所
定のデータと当該データの番号情報とを取得する処理を
コンピュータに高速にしかも処理負担を軽減して実行さ
せることができるプログラムを記録したプログラム記録
媒体を提供することにある。
【0011】本発明の前記並びにその他の目的と新規な
特徴は本明細書の記述及び添付図面から明らかになるで
あろう。
【0012】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0013】すなわち、マイクロプロセッサ(100)
に、夫々演算手段と記憶手段を備えて並列動作可能な第
1及び第2の演算部(141,142)を採用し、データ
の集合から最大値又は最小値のような所定のデータとそ
のデータのオフセットを取得する処理に特化した複合命
令を命令セットに有し、最大値であるか否かを暫定的に
判定するための減算と、データのオフセットの更新演算
とを第1及び第2の演算部で並列処理させる。これによっ
て、データの集合から所定のデータとそのオフセットを
取得する処理の処理量を削減でき、処理を高速化するこ
とが可能になる。
【0014】さらに詳しく説明する。マイクロプロセッ
サ(100)は、命令アドレスを生成して命令をフェッ
チし、フェッチした命令を解読する命令制御部(14
0)と、前記命令制御部から出力される制御信号に基づ
いて演算を行う演算部とを含む。前記演算部は、第1記
憶手段(R1、R2、R5、R6、L1)及び第1演算
手段(108)を有する第1演算部(141)と、第2
記憶手段(R3、R4)及び第2演算手段(120)を
有する第2演算部(142)とを有する。前記命令制御
部は、所定の複合命令(cmp/max R1,R2)
に対して、前記第1演算部を用いた比較動作、第2演算
部を用い前記比較動作に並行するインクリメント動作、
前記比較動作結果に応じた前記第1及び第2記憶手段に
対する内部データ転送動作を制御する。前記比較動作
は、第1記憶手段が保持する第1記憶領域(R1)のデ
ータを第2記憶領域(L1)にラッチすると共に、第1
演算手段(108)を用いて、第1記憶領域(R1)の
データを前記第1記憶手段が保持する第3記憶領域(R
2)のデータと比較し、比較結果を前記命令制御部に与
える処理である。前記インクリメント動作は、前記第2
記憶手段が保持する第4記憶領域(R3)のデータを第
2演算手段(120)を用いてインクリメントする処理
である。前記内部転送動作は、前記比較結果が第1状態
であるとき、前記第2記憶領域(L1)が保持するデー
タを前記第3記憶領域(R2)に内部転送すると共に、
前記第4記憶領域(R3)が保持するデータを前記第2
記憶手段の第5記憶領域(R4)に内部転送し、前記比
較結果が第2状態のときは前記第3記憶領域及び第5記
憶領域への内部転送を省略する処理である。
【0015】前記複合命令は、前記比較動作に先立っ
て、前記命令制御部に、前記第1記憶手段の第6記憶領
域(R5)が保持する値をアドレスとして取得すること
ができるデータを、前記第1記憶領域(R1)に転送
し、転送後に、前記第6記憶領域の値を次の値に更新す
るデータセット動作を、さらに含むことができる。
【0016】前記複合命令がデータの集合から最大値の
データを検出する処理を指定するものであるとき、前記
第1状態は前記第1記憶領域(R1)のデータが前記第
3記憶領域(R2)のデータよりも大きい状態であり、
前記第3記憶領域(R2)には最大値が格納され、前記
第5記憶領域(R4)にはその最大値データのオフセッ
ト値が格納される。一方、前記複合命令がデータの集合
から最小値のデータを検出する処理を指定するものであ
るとき、前記第1状態は前記第1記憶領域(R1)のデ
ータが前記第3記憶領域(R2)のデータよりも小さい
状態であり、前記第3記憶領域(R2)に最小値が格納
され、前記第5記憶領域(R4)にはその最小値データ
のオフセット値が格納される。
【0017】前記マイクロプロセッサを用いたコンピュ
ータ(150)が実行するプログラムは、コンピュータ
によって読み取り可能なコンピュータ言語によって記述
されている。そのプログラムは、磁気ディスク、MO
(マグネトー・オプチカル・ディスク)、CD−ROM
(コンパクト・ディスク−ROM)、フロッピーディス
ク、不揮発性半導体メモリ等の記録媒体(151)に記
録されて提供される。前記プログラムは、前述の通り、
第1演算部(141)を用いた比較動作と第2演算部
(142)を用いたインクリメント動作を並行に行い、
前記比較動作結果に応じて前記第1及び第2記憶手段に
対する内部データ転送動作を制御するところの複合命令
の記述を有する。
【0018】このプログラムにより、データの集合から
所定のデータと当該データの番号情報とを取得する処理
をコンピュータに高速にしかも処理負担を軽減して実行
させることができる。
【0019】前記プログラムには、前記比較動作に先立
って、前記第1記憶手段の第6記憶領域(R5)が保持
する値をアドレスとして取得することができるデータ
を、前記第1記憶領域(R1)に転送し、転送後に、前
記第6記憶領域の値を次の値に更新するデータセット動
作を、更に実行させる記述を含むことができる。
【0020】前記プログラムには、前記内部転送動作の
後に前記データセット動作に帰還する処理を所定回数だ
け繰返し実行させる記述を更に含むことができる。
【0021】また、前記プログラムには、前記データセ
ット動作の前に、前記第6記憶領域(R5)に対する初
期設定する処理と、前記第6記憶領域(R5)に初期設
定された値をアドレスとして取得することができるデー
タを前記第3記憶領域(R2)に初期設定する処理と、
前記第4及び第5記憶領域(R3、R4)を初期設定す
る処理とを更に実行させる記述を含むことができる。
【0022】
【発明の実施の形態】図1には本発明の一例に係るマイ
クロプロセッサ100が示される。このマイクロプロセ
ッサは、特に制限されないが、公知の半導体集積回路製
造技術によって単結晶シリコンのような1個の半導体基
板に形成されている。
【0023】マイクロプロセッサ100は、命令制御部
140と、第1演算部141及び第2演算部142から
成るCPU(中央処理装置)を有する。CPUはアドレ
スバス104及びデータバス103に接続され、データ
メモリ102、プログラムメモリ101、及びその他の
周辺デバイス130をアクセスし、また、外部バスイン
タフェース回路131を介してマイクロプロセッサ10
0の外部に設けられた図示を省略する外部周辺デバイス
をアクセス可能にされる。
【0024】前記命令制御部140は、命令フェッチデ
コード回路107で演算した命令アドレスをプログラム
カウンタ105に与え、プログラムカウンタ105の命
令アドレスによってプログラムメモリ101から読み出
された命令を、前記命令フェッチデコード回路107で
デコードし、そのデコード結果に従って制御回路106
が前記第1及び第2演算部141,142に対する制御
信号を発生する。
【0025】前記第1演算部141は、記憶手段とし
て、ワークエリアとして利用される汎用レジスタ109
及びデータラッチ(L1)123を有し、演算手段とし
て算術論理演算器108を有する。汎用レジスタ109
はデータレジスタ及びアドレスレジスタとして用いら
れ、代表的にレジスタR1,R2,R5,R6が図示さ
れている。オペランドフェッチでは、例えば汎用レジス
タ109の一つに割当てられたアドレスレジスタの値に
よってデータメモリ102がアクセスされ、データメモ
リ102から読み出されたオペランドがデータバス10
3を介して汎用レジスタ109中の所定のレジスタにロ
ードされてる。汎用レジスタ109中でデータレジスタ
に割当てられるレジスタは、オペランドソース又はオペ
ランドディスティネーションのレジスタとして用いられ
る。
【0026】114はデータバス103又はセレクタ1
22の出力を選択して汎用レジスタ109中のレジスタ
に接続する入力セレクタである。115は汎用レジスタ
109中のレジスタの出力をアドレスバス104、算術
論理演算器108の入力、又はデータラッチ(L1)1
23の入力に選択的に接続する出力セレクタである。セ
レクタ122はデータラッチ123の出力又は算術論理
演算器108の出力を選択して出力する。
【0027】110はCPUの内部状態が設定されるス
テータスレジスタである。ステータスレジスタ110
は、セレクタ116を介してデータバス103から又は
算術論理演算108から所定のステータス情報がロード
される。特に、ステータスレジスタ110の所定ビット
STiは算術論理演算器108による減算結果の符号デ
ータφiがセットされる。この符号データφiは制御回
路106に与えられる。
【0028】制御信号φb、φg、φh、φfはセレク
タ115,114,122,116の選択制御信号であ
る。φcは算術論理演算器108の演算制御信号であ
る。
【0029】前記第2演算部142は記憶手段としてレ
ジスタ(R3)118,レジスタ(R4)142を有
し、演算手段として加算器120を有する。セレクタ1
24はデータバス103又は加算器120の出力を選択
してレジスタ118に与える。加算器120はレジスタ
118の出力に“1”を加算する+1インクリメンタと
して機能され、入力ゲート121を介してその計数値を
選択的に前記レジスタ142にロードすることができ
る。レジスタ142,118の出力は共にデータバス1
03に出力可能にされる。
【0030】制御信号φjはセレクタ124の選択信
号、φdは加算器120の演算制御信号、φeは入力ゲ
ート121の制御信号である。
【0031】前記マイクロプロセッサ100を用いて前
記PSI−CELP方式で行われるラグデータ予備選択
処理のような、データの集合から最大値を選択する処理
を行う場合について説明する。
【0032】先ず、最大値選択処理の概要を説明する。
図2の301、302,303は夫々最大値を選択すべ
きデータの集合(データブロック)である。ここでは、
データブロックのデータは全て正数であり、また、個々
のデータブロックに含まれるデータの数を例えば“5”
とする。個々のデータブロックから最大値のデータを選
択するには、まず、0番目と1番目のデータblock_data
[0]とblock_data[1]とを比較し、大きい方のデータを暫
定の最大値として選択し保存する。この場合、0番目の
データである“10”が暫定最大値として保存される。
次に、この暫定最大値と2番目のデータblock_data[2]
とを比較し、また、大きい方のデータが暫定最大値とし
て保存される。同様の処理を全てのデータブロックのデ
ータに対して実行した結果、暫定最大値として保存され
たデータが最終的にデータブロックの最大値となる。デ
ータブロック301では4番目のデータ“15”が最大
値となる。
【0033】次に、一つのデータブロックから上位n個
(ただし、nは2以上の整数)の最大値を選択する処理
を説明する。その処理手順の一例が図3に示されてい
る。先ず、データブロック301に対して最大値選択処
理を行う(304)。そして、データブロックに対して
前記最大値選択処理(304)で選択された最大値のデ
ータblock_data[4]を“0”と置いて、データブロック
302を得る。このデータブロック302に対して同様
に最大値選択処理行う(306)。同様に、そのデータ
ブロック302に対して前記最大値選択処理(306)
で選択された最大値のデータblock_data[3]を“0”と
置いて、データブロック303を得る。最後に、このデ
ータブロック303に対して同様に最大値選択処理行い
(308)、結果として、データブロック301におい
て上位3個の最大値データblock_data[4]、block_data
[3]、block_data[0]を選択することができる。
【0034】図4には前記最大値選択処理を汎用のプロ
グラム言語であるC言語で記述したプログラムの例が示
される。この最大値選択処理プログラムの入力は、図2
のデータブロック301のデータであり、出力は、最大
値のデータと、その最大値のデータがデータブロック中
の何番目のデータであるかを表すデータ番号と、の2つ
である。データブロックから上位n個の最大値データを
選択する処理では、図4の選択処理をサブルーチンとし
て使用すればよい。まず、図4の最大値選択処理を説明
する。
【0035】図4のプログラムでは、上記の2つの出力
を得るために、記述1101では6つの変数が用いられ
る。具体的には、メモリからロードしたデータブロック
のデータを格納する変数dataと、データ番号を示す
変数numと、暫定最大値を格納する変数maxdat
aと、暫定最大値のデータ番号を格納する変数maxn
um、処理回数を示すcounter、データブロック
の先頭メモリアドレスdata_prtである。記述1
103〜1106では変数の初期化処理が行なわれる。
ここでは、maxnumとnumは“0”で初期化し、
maxdataはデータ番号0のデータblock_data[0]
で初期化し、data_prtをblock_data[0]のアド
レスで初期化する。
【0036】記述1107ではカウンタcounter
を“0”で初期化し、以下の選択処理のループ毎にカウ
ンタcounterを+1インクリメントし、coun
ter<5の間、選択処理を繰り返す。
【0037】記述1108〜1112で示される選択処
理において、記述1108では、変数dataにデータ
ブロックをロードする。次に、記述1109において、
暫定最大値を格納しているmaxdataと入力データ
であるdataとで値の大小を比較する。記述1109
において、入力データが暫定最大値よりも大きい場合
は、記述1110と1111の処理が実行される。記述
1110の処理は、暫定最大値をdataの値に更新す
る処理である。また、記述1111は暫定最大値のデー
タ番号をデータ番号numに更新する処理である。つま
り、maxnumとmaxdataの更新は同じタイミ
ングで実行される。そして、記述1112において、デ
ータ番号numを、毎回インクリメントする。つまり、
選択処理をデータブロックの数に等しい回数だけ繰り返
して実行した後に、maxdataとmaxnumに選
られる最終的な値が、最大値とその最大値に対応したデ
ータ番号になる。
【0038】図5は図4のC言語記述をアセンブラ言語
で示したものである。図5に示されるレジスタ名R1〜
R5は図1に示されるレジスタ名R1〜R5に一致され
ている。また、1個のデータブロックのデータ数を例え
ば“5”と仮定している。レジスタR1はデータブロッ
クのデータを格納し、R2はそのデータの最大値を暫定
的にそして最終的に格納し、R3はデータ番号(データ
ブロックの先頭からのオフセット)を格納し、R4は最
大値のデータ番号を格納し、R5はデータブロックのデ
ータアクセスのためのアドレスレジスタ、R6は最大値
選択の処理回数を管理するカウンタレジスタである。
【0039】初期化処理では、処理対象とされるデータ
ブロックの先頭アドレスを示すイミディエイトデータ#
_block_dataがレジスタR5にロードされる
(L1)。ロードされたレジスタR5の値をアドレスと
するデータがデータメモリからレジスタR2にロードさ
れる(L2)。そして、レジスタR3,R4が“0”
に、レジスタR6が“5”に初期化される(L3〜L
5)。
【0040】選択処理の先頭では、レジスタR5の値を
アドレスとするデータがデータメモリからレジスタR2
にロードされる(L7)。そして、レジスタR1の値か
らR2の値を減算する。減算結果が正ならば“1(tr
ue)”、負ならば“0(fault)”を得る(L
8)。その結果が“1”ならばR1>R2であるから、
レジスタR1のデータでR2の暫定最大値を更新し(L
10)、レジスタR3のレジスタ番号でR4の暫定最大
値レジスタ番号w更新する(L11)。減算の結果が
“0”であるなら、ラベルJUNP(L12)に分岐し
て、L10,L11の処理をスキップする。その後、レ
ジスタR3のレジスタ番号を+1インクリメントし(L
13)、カウンタレジスタR6の値を−1デクリメント
し、その結果が“0”ならば“1(true)”、
“0”以外ならば“0(fault)”を得る(L
8)。その結果が“0(fault)”であれば、ラベ
ルLOOP_START(L6)に帰還し(L15)、
“1(true)”になるまで選択処理を繰り返す。
【0041】図1のマイクロプロセッサ100は、図5
の選択処理におけるL7からL13までの処理を指定す
る複合命令“com/max R1,R2”を命令セッ
トに含んでいる。したがって、マイクロプロセッサ10
は、前記複合命令“com/max R1,R2”をフ
ェッチしてデコードすると、図5のL7〜L13に示さ
れるデータ転送インクリメント命令(mov.w)、比
較命令(cm/GT)、条件付きジャンプ命令(b
f)、データ転送命令(mov)の各処理を、第1及び
第2演算部141,142等を用いて実行する。特にマ
イクロプロセッサ100は2個の演算部141,142
を有しているから、図5の比較処理(L8)を算術論理
演算器fで行っているとき、これに並行して加算器で図
5のインクリメント動作(L13)を行う。並列動作可
能な演算器を複数持たない場合には、前記比較動作とイ
ンクリメント動作を直列的に行わなければならず、演算
処理時間が増大してしまう。
【0042】図6には複合命令“com/max R
1,R2”をマイクロプロセッサ100で実行する時の
データ処理フローが示される。
【0043】複合命令“com/max R1,R2”
を実行するとき、前記レジスタR1,R2は汎用レジス
タファイル109で指定されたソースオペランドレジス
タとして利用され、レジスタR2は算術論理演算器10
8の出力を格納するデスティネーションオペランドレジ
スタとしても利用される。先ず、命令フェッチデコード
回路107は、cmp/max命令をデコードし(S
1)、デコード結果を受けた制御回路106は、制御信
号φbでセレクタ115を制御してレジスタR1,R2
のデータを算術論理演算器108に供給する(S2
A)。算術論理演算器108はレジスタR1の値からレ
ジスタR2の値を減算し、その演算結果の符号データφ
iをセレクタ116、ステータスレジスタ110を介し
て制御回路106に供給する。このとき、レジスタR1
のデータはデータラッチL1にもラッチされる(S3
A)。
【0044】一方、これに並行して第2演算部142で
は、制御回路106がレジスタR3の値を加算器120
に供給する(S2B)。加算器120は、レジスタR3
の値に“1”を加算する。加算結果はセレクタ124を
介してレジスタR3に戻される(S3B)。
【0045】制御回路106は、記符号データφiが
“0”のとき(減算結果が正)、すなわち、レジスタR
1のデータ(今回のデータ)がレジスタR2のデータ
(暫定最大値データ)よりも大きいとき、制御信号φh
でセレクタ122にデータラッチL1の出力を選択さ
せ、制御信号φgでセレクタ114にレジスタR2を選
択させて当該データラッチL1のデータ(R1のデー
タ)をレジスタR2にロードさせる。(S4A)。一
方、これに並行して制御部106は、制御信号φeで入
力ゲート121をオン動作させ、前記ステップS3Bに
おける加算器120の出力をレジスタR4に内部転送す
る。これによって、レジスタR4の今までの暫定最大値
データのデータ番号は、レジスタR2のデータのデータ
番号に更新される(S4B)。
【0046】前記符号データφiが“1”のとき(減算
結果が負)は、レジスタR1のデータがレジスタR2の
データよりも小さい状態を意味する。このときは、セレ
クタ122は何れの入力も選択せず(S4A)、レジス
タR2の暫定最大値データををそのまま維持する。ま
た、第2演算部142では入力ゲート121をオフ状態
に維持し、レジスタR4の値を更新しない(S4B)。
【0047】図7には図1のマイクロプロセッサ100
を用いて図2のデータブロック301に対して上位から
3個の最大値データを検索する処理の過程が示される。
その処理を実現するプログラムはマイクロプロセッサ1
00のプログラムメモリ101に格納されている。この
プログラムは、図5において複合命令“com/max
R1,R2”を用いた記述とされている。
【0048】図7の“初期化”のタイミングでは、レジ
スタR2、R3,R4のデータが初期化される。ここ
で、初期化は、0番目のデータが暫定最大値となるよう
される。具体的には、レジスタR2にはデータブロック
の0番目のデータを設定し、最大値のデータ番号を格納
する専用レジスタR3には“0”が設定される。cmp
/ max命令は、専用レジスタR3のデータを毎回イ
ンクリメントするため、専用レジスタR3には「−1」
を設定する。
【0049】次に、“T1”のタイミングでは、データ
メモリ102から0番目のデータである「10」が汎用
レジスタR1に転送され、その後に、複合命令“cmp
/max R1,R2”が実行される。算術論理演算器
108は汎用レジスタR1のデータ“10”から汎用レ
ジスタR2のデータ“10”を減算する。減算結果は正
であるので、符号データφiとして“0”を出力する。
この減算命令に並行して、加算器120は、レジスタR
3のデータ“-1”に1を加算し、演算結果として
“0”を出力する。この演算結果は、再び専用レジスタ
R3に格納される。次に、符号データφiが“0”であ
るため、算術論理演算器108は演算結果として、汎用
レジスタR1のデータである“10”を出力する。出力
された演算結果は、汎用レジスタR2に格納される。ま
た、加算器120の出力結果である“0”もR4に格納
され、最初の入力データに対する選択処理が終了され
る。
【0050】“T2”のタイミングでは、1番目の入力
データである“2”をデータメモリ102から汎用レジ
スタR1に転送し、複合命令cmp/max R1,R
2を実行する。算術論理演算器108は汎用レジスタR
1のデータ“2”から汎用レジスタR2のデータ“1
0”を減算し、減算結果の符号データφiである“1”
(減算結果が負)を出力する。この減算命令に並行し
て、加算器120は、レジスタR3のデータ“0”に1
を加算し、演算結果として“1”を出力する。この演算
結果は、再び専用レジスタR3に格納される。次に、符
号データφiが“1”であるため、汎用レジスタR2の
データはそのまま“10”を維持する。また、符号デー
タφiが“1”であるため、レジスタR4のデータは更
新されず、第2番目の入力データに対する選択処理が終
了する。
【0051】以下、同様の動作を全ての入力データに対
して実行した結果が、図4の“T5”のタイミングで示
される状態である。したがって、汎用レジスタR2に格
納されているデータである“15”が最大値となり、専
用レジスタR4に格納されているデータである“4”が
最大値に対応するデータ番号となる。このデータ番号は
最大値がデータメモリ102上に格納されているアドレ
スのインデックス値を表すことになる。
【0052】以上により、マイクロプロセッサ100が
第1演算部141と共に第2演算部142を有すること
により、最大値の選択と、データ番号の更新を並行に行
うことができ、PSI−CELP方式で行なわれるラグ
データ予備選択処理のような処理を高速化することがで
きる。特に、図5に例示される内容の複合命令“cmp
・max R1,R2”を用いることにより、選択処理
の実行ステップ数を極力少なくできる。そのためのハー
ドウェアである第2演算部142はレジスタと加算器を
含めばよいので、第2の演算部を新たに付加する場合に
も回路規模の増大は最小限で済む。
【0053】上記プログラムは、例えば、図1に例示さ
れているように、マイクロプロセッサ100のプログラ
ムメモリ101に格納されている。このプログラムは、
コンピュータによって読み取り可能なコンピュータ言語
によって記述され、磁気ディスク、MO(マグネトー・
オプチカル・ディスク)、CD−ROM(コンパクト・
ディスク−ROM)、フロッピーディスク、不揮発性半
導体メモリ等の記録媒体に記録されて提供される。例え
ば、プログラムメモリ101が電気的に書き換え可能な
不揮発性半導体メモリによって構成されている場合、マ
イクロコンピュータ100はEPROMライタの様な書
き込み装置としてのコンピュータに接続され、前記記録
媒体から書き込み装置にロードされたプログラムがプロ
グラムメモリ101に書き込まれる。上記プログラムが
格納されたプログラムメモリそれ自体を記録媒体として
把握してもよい。
【0054】また、図8に例示されるように、パーソナ
ルコンピュータやワークステーションなどのコンピュー
タ150を想定すると、そのコンピュータ150は、例
えば、マイクロプロセッサやRAM等を実装したプロセ
ッサボードと、プロセッサボードに接続される周辺イン
タフェースボードなどを有する。周辺インタフェースボ
ードは、フロッピーディスクドライブインタフェース回
路やIDEインタフェース回路などを有する。前記プロ
グラムは、フロッピーディスクのような記録媒体151
からインタフェースボードを介して、コンピュータ15
0に内蔵されているRAMにロードされ、当該RAMに
ロードされたプログラムをマイクロプロセッサ100が
実行して処理を行う。この場合、マイクロプロセッサ1
00がプログラムメモリを内蔵する場合、例えばそのプ
ログラムメモリにはマイクロプロセッサ100のオペレ
ーティングシステムが格納され、前記記録媒体151を
介して提供されるプログラムはアプリケーションプログ
ラムとされる。
【0055】以上本発明者によってなされた発明を実施
形態に基づいて具体的に説明したが、本発明はそれに限
定されるものではなく、その要旨を逸脱しない範囲にお
いて種々変更可能であることは言うまでもない。
【0056】例えば、検出すべきデータは最小値、或い
はその他の特定値であってもよい。また、マイクロプロ
セッサは汎用マイクロプロセッサに限定されず、機器組
み込み用途のデータプロセッサのようなマイクロプロセ
ッサであってもよい。また、前記第1及び第2演算部1
41,142はCPUの演算部に限定されず、DSPの
演算部であっても、或いはDSP及びCUPの双方の機
能を有するマイクロプロセッサの演算部であってもよ
い。また、演算部の回路構成は図1に限定されない。第
1及び第2演算部の演算器は算術論理演算器及び加算器
に限定されない。双方共に算術論理演算器や、算術論理
演算器であってもよい。また、第2演算部はデータ集合
から所定データを検出する処理に専用の回路であって
も、また、汎用の回路であっても、何れでもよい。ま
た、図4のcounterに対する処理はインクリメン
トであってもディクリメントであっても何れでもよい。
【0057】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0058】すなわち、マイクロプロセッサに、夫々演
算手段と記憶手段を備えて並列動作可能な第1及び第2の
演算部を採用し、データの集合から最大値又は最小値の
ような所定のデータとそのデータのオフセットを取得す
る処理に特化した複合命令を命令セットに有し、最大値
であるか否かを暫定的に判定するための減算と、処理の
信号に応ずるオフセットの更新演算とを第1及び第2の演
算部で並列処理させるから、データの集合から所定のデ
ータとそのオフセットを取得する処理の処理量を削減で
き、処理を高速化することが可能になる。
【0059】第1演算部を用いた比較動作と第2演算部
を用いたインクリメント動作を並行に行い、前記比較動
作結果に応じて前記第1及び第2記憶手段に対する内部
データ転送動作を制御するところの複合命令の記述を有
するプログラムによれば、データの集合から所定のデー
タと当該データの番号情報とを取得する処理をコンピュ
ータに高速にしかも処理負担を軽減して実行させること
ができる。
【図面の簡単な説明】
【図1】本発明の一例に係るマイクロプロセッサのブロ
ック図である。
【図2】データブロックの一例を示す説明図である。
【図3】データの集合から上位n個の最大値を選択する
最大値選択処理の一例を示すフローチャートである。
【図4】最大値選択処理を汎用のプログラム言語である
C言語で記述したプログラム記述の例を示す説明図であ
る。
【図5】図4のC言語記述をアセンブラ言語を用いて記
述した一例説明図である。
【図6】複合命令com/max R1,R2をマイク
ロプロセッサで実行する時のデータ処理フローの一例を
示す説明図である。
【図7】図1のマイクロプロセッサを用いて図2のデー
タブロックに対して上位から3個の最大値データを検索
する処理の処理過程をレジスタ値などに着目して示した
説明図である。
【図8】記録媒体からアプリケーションプログラムを得
るコンピュータの一例を示す説明図である。
【符号の説明】 100 マイクロプロセッサ 101 プログラムメモリ 102 データメモリ 140 命令制御部 141 第1演算部 109 汎用レジスタ(R1、R2,R5,R6) 123 データラッチ(L1) 108 算術論理演算器 142 第2演算部 118 レジスタ(R3) 119 レジスタ(R4) 120 加算器 φi 符号データ 150 コンピュータ 151 記録媒体 301,302,303 データブロック

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 命令アドレスを生成して命令をフェッチ
    し、フェッチした命令を解読する命令制御部と、前記命
    令制御部から出力される制御信号に基づいて演算を行う
    演算部とを含み、 前記演算部は、第1記憶手段及び第1演算手段を有する
    第1演算部と、第2記憶手段及び第2演算手段を有する
    第2演算部とを有し、 前記命令制御部は、所定の複合命令に対して、前記第1
    演算部を用いた比較動作、第2演算部を用い前記比較動
    作に並行するインクリメント動作、前記比較動作結果に
    応じた前記第1及び第2記憶手段に対する内部データ転
    送動作を制御し、 前記比較動作は、第1記憶手段が保持する第1記憶領域
    のデータを第2記憶領域にラッチすると共に、前記第1
    演算手段を用いて、第1記憶領域のデータを前記第1記
    憶手段が保持する第3記憶領域のデータと比較し、比較
    結果を前記命令制御部に与える処理であり、 前記インクリメント動作は、前記第2記憶手段が保持す
    る第4記憶領域のデータを第2演算手段を用いてインク
    リメントする処理であり、 前記内部転送動作は、前記比較結果が第1状態であると
    き、前記第2記憶領域が保持するデータを前記第3記憶
    領域に内部転送すると共に、前記第4記憶領域が保持す
    るデータを前記第2記憶手段の第5記憶領域に内部転送
    し、前記比較結果が第2状態のときは前記第3記憶領域
    及び第5記憶領域への内部転送を省略する処理である、
    ことを特徴とするマイクロプロセッサ。
  2. 【請求項2】 前記複合命令は、前記比較動作に先立っ
    て、前記命令制御部に、前記第1記憶手段の第6記憶領
    域が保持する値をアドレスとして取得することができる
    データを、前記第1記憶領域に転送し、転送後に、前記
    第6記憶領域の値を次の値に更新するデータセット動作
    を、さらに実行させるものであることを特徴とする請求
    項1記載のマイクロプロセッサ。
  3. 【請求項3】 前記第1状態は前記第1記憶領域のデー
    タが前記第3記憶領域のデータよりも大きい状態であ
    り、前記複合命令はデータの集合から最大値のデータを
    検出する処理を指定するものであって、前記第3記憶領
    域に最大値を格納させ、前記第5記憶領域には前記デー
    タ集合の先頭から最大値データまでのオフセット値を格
    納させることを特徴とする請求項1又は2記載のマイク
    ロプロセッサ。
  4. 【請求項4】 前記第1状態は前記第1記憶領域のデー
    タが前記第3記憶領域のデータよりも小さい状態であ
    り、前記複合命令はデータの集合から最小値のデータを
    検出する処理を指定するものであって、前記第3記憶領
    域に最小値を格納させ、前記第5記憶領域には前記デー
    タ集合の先頭から最小値データまでのオフセット値を格
    納させることを特徴とする請求項1又は2記載のマイク
    ロプロセッサ。
  5. 【請求項5】 データの集合に含まれる所定のデータと
    前記データ集合の先頭から前記所定データまでのオフセ
    ット値とを取得する処理をコンピュータに実行させるた
    めのプログラムを格納したプログラム記録媒体であっ
    て、 前記コンピュータは、第1記憶手段及び第1演算手段を
    有する第1演算部と、第2記憶手段及び第2演算手段を
    有する第2演算部とを有し、 前記プログラムは、第1演算部を用いた比較動作と第2
    演算部を用いたインクリメント動作を並行に行い、前記
    比較動作結果に応じて前記第1及び第2記憶手段に対す
    る内部データ転送動作を制御する、複合命令の記述を有
    し、 前記比較動作は、第1記憶手段が保持する第1記憶領域
    のデータを第2記憶領域にラッチすると共に、前記第1
    演算手段を用いて、第1記憶領域のデータを前記第1記
    憶手段が保持する第3記憶領域のデータと比較する処理
    であり、 前記インクリメント動作は、前記第2記憶手段が保持す
    る第4記憶領域のデータを第2演算手段を用いてインク
    リメントする処理であり、 前記内部転送動作は、前記比較処理による比較結果が第
    1状態であるとき、前記第2記憶領域が保持するデータ
    を前記第3記憶領域に内部転送すると共に、前記第4記
    憶領域が保持するデータを前記第2記憶手段の第5記憶
    領域に内部転送し、前記比較処理による比較結果が第2
    状態のときは、前記第3記憶領域及び第5記憶領域への
    内部転送を省略する処理である、ことを特徴とするプロ
    グラム記録媒体。
  6. 【請求項6】 前記プログラムは、前記比較動作に先立
    って、前記第1記憶手段の第6記憶領域が保持する値を
    アドレスとして取得することができるデータを、前記第
    1記憶領域に転送し、転送後に、前記第6記憶領域の値
    を次の値に更新するデータセット動作を、さらに実行さ
    せるものであることを特徴とする請求項5記載のプログ
    ラム記録媒体。
  7. 【請求項7】 前記プログラムは、前記内部転送動作の
    後に前記データセット動作に帰還する処理を所定回数だ
    け繰返し実行させるものであることを特徴とする請求項
    5又は6記載のプログラム記録媒体。
  8. 【請求項8】 前記プログラムは、前記データセット動
    作の前に、前記第6記憶領域に対する初期設定する処理
    と、前記第6記憶領域に初期設定された値をアドレスと
    して取得することができるデータを前記第3記憶領域に
    初期設定する処理と、前記第4及び第5記憶領域を初期
    設定する処理とを、さらに実行させるものであることを
    特徴とする請求項7記載のプログラム記録媒体。
JP11113062A 1999-04-21 1999-04-21 マイクロプロセッサ及びプログラム記録媒体 Withdrawn JP2000305780A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11113062A JP2000305780A (ja) 1999-04-21 1999-04-21 マイクロプロセッサ及びプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11113062A JP2000305780A (ja) 1999-04-21 1999-04-21 マイクロプロセッサ及びプログラム記録媒体

Publications (1)

Publication Number Publication Date
JP2000305780A true JP2000305780A (ja) 2000-11-02

Family

ID=14602544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11113062A Withdrawn JP2000305780A (ja) 1999-04-21 1999-04-21 マイクロプロセッサ及びプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP2000305780A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059187A (ja) * 2007-08-31 2009-03-19 Nec Electronics Corp マイクロプロセッサおよびデータ処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059187A (ja) * 2007-08-31 2009-03-19 Nec Electronics Corp マイクロプロセッサおよびデータ処理方法

Similar Documents

Publication Publication Date Title
JP2846406B2 (ja) 分岐処理方法及び分岐処理装置
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
JP2810211B2 (ja) データプロセッサの命令処理システム
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
JPS635777B2 (ja)
US4562538A (en) Microprocessor having decision pointer to process restore position
TW201020795A (en) Data processing apparatus and semiconductor integrated circuit device
US4484274A (en) Computer system with improved process switch routine
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
JP2006517322A (ja) パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置
JPH03233630A (ja) 情報処理装置
US20040255102A1 (en) Data processing apparatus and method for transferring data values between a register file and a memory
US7020769B2 (en) Method and system for processing a loop of instructions
US6044460A (en) System and method for PC-relative address generation in a microprocessor with a pipeline architecture
JP2000305780A (ja) マイクロプロセッサ及びプログラム記録媒体
US6425047B1 (en) Process containing address decoders suited to improvements in clock speed
JPH03204030A (ja) コンピュータ用プロセツサ
JPH10124312A (ja) 中央処理装置
JP3164915B2 (ja) データ処理装置及びそのデータ処理方法
US6360310B1 (en) Apparatus and method for instruction cache access
US20050071830A1 (en) Method and system for processing a sequence of instructions
JPH0520066A (ja) 並列計算機
US20040249878A1 (en) High frequency compound instruction mechanism and method
JP4151497B2 (ja) パイプライン処理装置
JPS5995646A (ja) 演算制御装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060704