| 【発明の名称】 |
単一命令多重データ処理 |
| 【発明者】 |
【氏名】ドミニク ヒューゴ サイムズ
|
| 【要約】 |
【課題】単一命令多重データ処理命令において、処理機能を追加しても処理オーバーヘッドは余り増えない方法を提供する。
【解決手段】入力オペランド・データ語(Rn,Rm)の各部分のパッキング操作を結合して出力データ語(Rd)にする命令(PKH)と、結合する部分の一方をその各入力オペランド・データ語内の可変位置(k)から選択する機能とを持ち、パッキング操作と共に追加の処理を実行するようにする、データ処理装置を提供する。命令は、入力オペランド・データ語の上半分と下半分の一方と、他方の入力オペランド・データ語内の可変部分から選択した半データ語部分とを結合する。 |
【特許請求の範囲】
【請求項1】 データを処理する装置であって、(1) シフト回路と、(2) ビット部分選択および結合回路と、(3) 前記シフト回路と前記ビット部分選択および結合回路とを制御する命令に応じてデータ語Rnとデータ語Rmに操作を行う命令復号器と、を備え、前記操作は、(4) 前記データ語Rnの一端から伸びる前記データ語Rnのビット長Aの第1の部分を選択し、(5) 前記命令内のシフト・オペランドとして指定された算術右シフトに従って前記データ語Rmのビット長Bの第2の部分を選択し、(6) 前記第1の部分と前記第2の部分を結合して出力データ語Rdのそれぞれ異なるビット位置部分を形成する、ことにより与えられる値を生成する、データを処理する装置。 【請求項2】 前記第1の部分は前記データ語Rnの最上位ビット端から伸びる、請求項1記載のデータを処理する装置。 【請求項3】 前記第1の部分は前記データ語Rnの最下位ビット端から伸びる、請求項1記載のデータを処理する装置。 【請求項4】 前記シフト・オペランドは前記データ語Rmに対して行う算術右シフトの任意の量を指定することができる、請求項1記載のデータを処理する装置。 【請求項5】 前記第1の部分と前記第2の部分は前記出力データ語Rd内で隣接する、請求項1記載のデータを処理する装置。 【請求項6】 前記出力データ語はビット長Cを有し、C=A+Bである、請求項5記載のデータを処理する装置。 【請求項7】 A=Bである、請求項6記載のデータを処理する装置。 【請求項8】 A=16である、請求項1記載のデータを処理する装置。 【請求項9】 B=16である、請求項1記載のデータを処理する装置。 【請求項10】 前記命令は単一命令多重データ命令である、請求項1記載のデータを処理する装置。 【請求項11】 前記命令はデータ値・パック操作とシフト操作を結合する、請求項1記載のデータを処理する装置。 【請求項12】 前記シフト回路は前記装置のデータ・パス内の前記選択および結合回路の上流にある、請求項1記載のデータを処理する装置。 【請求項13】 前記選択および結合回路は前記データ・パス内の算術回路に並列に配置する、請求項12記載のデータを処理する装置。 【請求項14】 データを処理する方法であって、前記方法は、(1) 前記データ語Rnの一端から伸びる前記データ語Rnのビット長Aの第1の部分を選択し、(2) 前記命令内のシフト・オペランドとして指定された算術右シフトに従って前記データ語Rmのビット長Bの第2の部分を選択し、(3) 前記第1の部分と前記第2の部分を結合して出力データ語Rdのそれぞれ異なるビット位置部分を形成する、ことにより与えられる値を生成する命令を復号し実行するステップを含む、データを処理する方法。 【請求項15】 コンピュータを制御して請求項14記載の方法を実行するためのコンピュータ・プログラムを含むコンピュータ・プログラム製品。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明はデータ処理装置の分野に関する。より特定すると、本発明は単一命令多重データ型演算を行うのが望ましいデータ処理装置に関する。 【0002】 【従来の技術】単一命令多重データ演算は既知の技術であって、単一命令が処理するデータ語は実際はデータ語内の多数のデータ値を表し、所定の処理は各データ値に独立に行う。この型の命令は処理するデータ処理装置の効率を高め、コード・サイズの減少と処理操作の高速化に特に有用である。この技術は一般にディジタル信号処理アプリケーションなどにおける物理的信号を表すデータ値を処理する分野に適用されるが、これに限られるわけではない。 【0003】データ処理装置のデータ処理機能を拡張するとき、考慮すべき重要なことは処理機能を追加するときに加わるサイズ、複雑さ、コスト、電力消費のオーバーヘッドの範囲である。処理機能を追加してもオーバーヘッドは余り増えない方法が強く望まれる。 【0004】 【課題を解決するための手段】本発明の一形態のデータ処理装置は、シフト回路と、ビット部分選択および結合回路と、前記シフト回路と前記ビット部分選択および結合回路を制御する命令に応じてデータ語Rnとデータ語Rmに操作を行う命令復号器とを備え、前記操作は、前記データ語Rnの一端から伸びる前記データ語Rnのビット長Aの第1の部分を選択し、前記命令内のシフト・オペランドとして指定された算術右シフトに従って前記データ語Rmのビット長Bの第2の部分を選択し、前記第1の部分と前記第2の部分を結合して出力データ語Rdのそれぞれ異なるビット位置部分を形成する、ことにより与えられる値を生成する。 【0005】本発明は、単一命令を用いて2個の入力オペランド・データ語の異なる部分を、パックされた出力データ語内で結合する効率的なパッキング命令を与える。更に本発明は、パックするデータ語の1つをその入力オペランド・データ語内の可変位置から選択するシフト・オペランドを与えて、追加のデータ操作とパッキング操作を結合する機能を与える。例えば、結合してパックされた出力データ語にする部分の1つを、他のデータ語部分と共にパックすると同時に2の累乗で乗算または除算する。これは、入力オペランド・データ語内の固定部分からのデータ語を単にパックするだけの装置とは対照的である。本発明の考え方では、パッキング操作はデータ処理装置のデータ・パスが行う操作としては比較的簡単なものなので、データ・パス内に既に存在する回路要素を用いて、処理のサイクル・タイムに制約を加えずに、追加の機能性をパッキング操作に加えることが可能である。 【0006】理解されるように、入力オペランド・データ語の一端から取る固定位置の多重ビット部分はその入力オペランド・データ語の最上位ビット端または最下位ビット端から取ってよい。かかる可能性は、一般の用語では語の上半分または語の下半分のパッキングに対応する。本発明の特に好ましい実施の形態は、第1の部分と第2の部分が出力データ語内で隣接し、第1の部分と第2の部分の長さが等しく、両者で出力データ語を満たすものである。多くの実際のDSPでは、データ語の半分が16ビット長を有するものが便利である。 【0007】本発明の命令の追加の機能性を与えるのに特によいのは、データ・パス内でシフト回路が選択および結合回路の上流にある装置である。選択および結合回路はデータ・パス内の算術回路に並列に設けるのがよい。なぜなら、パッキング操作と算術回路が与える機能とを結合するのは望ましくないからである。 【0008】本発明の別の態様はデータ処理の方法を提供する。前記方法は、前記データ語Rnの一端から伸びる前記データ語Rnのビット長Aの第1の部分を選択し、前記命令内のシフト・オペランドとして指定された算術右シフトに従って前記データ語Rmのビット長Bの第2の部分を選択し、前記第1および第2の部分を結合して出力データ語Rdのそれぞれ異なるビット位置の部分を形成することにより与えられる値を生成する命令を復号して実行するステップを含む。 【0009】また本発明は、汎用コンピュータを制御して上の技術に従って動作するためのコンピュータ・プログラムを記憶する、コンピュータ・プログラム製品を与える。特に、本発明はコンピュータを制御して上に述べた操作を行うための命令を含む、コンピュータ・プログラムを与える。本発明のかかる目的や機能や利点は、添付の図面を参照して以下の例示の実施の形態の詳細な説明を読めば明らかになる。 【0010】 【発明の実施の形態】図1は、ADD8TO16と呼ぶ第1のSIMD型データ処理命令の機能を示す。この命令は、実行する処理の一部として各入力オペランド・データ語の長さを拡張した選択された部分の前部に加えられる拡張の性質に対応する、符号付きまたは符号なしの可変部を形成する。第1の入力オペランド・データ語はデータ処理装置のレジスタRm内に記憶する。データ語は4個の8ビット部分p0、p1、p2、p3で形成する。命令内で8ビット部分の右回転操作を指定しているかどうかに従って、レジスタRm内の入力データ語から多重ビット部分p0とp2かまたは多重ビット部分p1とp3を選択する。オプションの右回転操作は、必要に応じて16または24でもよい。これにより、高次部分と低次部分を効率的にスワップすることができる。図1に示す例は、非隣接部分p0とp2を回転しない(シフトする)可変部に選択することを示し、他の可変部は点線で示す。 【0011】多重ビット部分を選択すると、ゼロまたは符号拡張を用いてそれぞれを8ビット長から16ビット長に拡張する。図に示す拡張したデータ語Pの斜線部分はこれらの拡張部分を示す。第2の入力データ語はレジスタRn内に記憶し、2つの16ビットのデータ値を含む。図に示す例は単一命令多重データ加算演算を行う。すなわち、拡張されたp0をRnの下位16ビット値a0に加算し、拡張されたp2をRnの上位16ビット部分a2に加算する。この種の加算は全幅加算と考えてよく、キャリー・チェーン(carry chain)は結果の第15ビットと第16ビットの間で分かれる。理解されるように、他のSIMD型の算術演算(例えばSIMD引き算)を行うこともできる。 【0012】図1の命令が生成する出力結果データ語は下位16ビットにp0とa0の和を生成し、上位16ビットはp2とa2の和を含む。この命令は各データ値の絶対差の和を決定する演算に特に有用である。ここで、a0とa2は累積値を表し、p0とp2は信号の差値(例えば画素の差値)の個別の絶対値を表す。この種の演算は一般にMPEGの動き推定処理に必要であり、この演算を高速で行う機能は非常に有用である。 【0013】図2は図1の命令を実現するのに用いられるデータ処理装置の例示のデータ・パス2を示す。レジスタ・バンク4は処理する32ビットのデータ語を保持する。RmとRn内に記憶する入力オペランド・データ語はこのレジスタ・バンクから読み出し、結果データ語はレジスタ・バンク4内のレジスタRdに再び書き込む。データ・パス2はシフト回路6と加算回路8を含む。この装置が提供する多くの他のデータ処理命令はこのシフト回路6と加算回路8を種々の方法で用いる。かかるデータ・パス2は、シフト回路6と加算回路8を通って伝播するデータ値の所要時間がデータ処理のサイクル・タイムとよく適合するように注意して設計されている。データ・パス2のハードウエア資源は装置内で効率的に使用され、これらの資源はデータ・パス2内を伝播する各データ語の大部分で活動状態にある。符号/ゼロ拡張およびマスキング回路10をシフト回路6の下位部分に並列に設ける。マルチプレクサ12は、全シフト回路6の出力かまたは符号/ゼロ拡張およびマスキング回路10の出力を加算回路8の一方の入力として選択してよい。加算回路8の他方の入力はRnの入力オペランド・データ語である。 【0014】図1の命令を実行するときRmの入力オペランド・データ語をシフト回路6に与えるが、シフト回路6は、命令内でそのパラメータが指定されているかどうかに従ってオプションの8ビット位置の右シフトをデータ語に対して行う。オプションの16および24ビット位置の右回転を行ってもよい。多レベルのマルチプレクサを用いたシフタ内では、かかる制限された可能性シフトはシフト回路6の第1の部分から比較的簡単に行うことができる(例えば32ビット装置の場合、マルチプレクサの第1のレベルは16ビットのシフトを与え、マルチプレクサの第2のレベルは8ビットのシフトを与える)。したがって、オプションで所定の量だけシフトした値を部分的にシフト回路6から取り出して、符号/ゼロ拡張およびマスキング回路10に与えることができる。この回路10はRmの恐らくシフトされた入力オペランド・データ語の選択されない多ビット部分をマスクし、これらのマスクされた部分をゼロかまたは各選択された多ビット部分の符号拡張で置換する。符号/ゼロ拡張およびマスキング回路10の出力はマルチプレクサ12を介して加算回路8の第1の入力に入る。加算回路8の第2の入力はRnの入力オペランド・データ語である。加算回路8はその入力にSIMD加算を行う(すなわち、2つの並列16ビット加算を行い、そのキャリー・チェーンは実質的にビット位置15と16の間で分かれる)。加算回路8の出力はレジスタ・バンク4のレジスタRdに再び書き込む。 【0015】または、符号/ゼロ拡張およびマスキング回路10はRm(回転しない)を入力として取り、次に4つの可能な符号ビットに0、8、16、24の回転を行った後でマスクする。シフト回路6は並列に動作してRmの全32ビットをシフトする。 【0016】図3と図4は半語パッキングSIMD型命令の2つの変形を示す。図3のPKHTB命令はレジスタRn内に記憶する一方の入力オペランド・データ語の固定の上半分と、レジスタRm内に記憶する第2の入力オペランド・データ語の可変位置半語部分を取り、これらを結合してレジスタRd内に記憶する出力データ語のそれぞれ上半分と下半分にする。命令PKHBTはRnの入力オペランド・データ語の下半分とRmの第2の入力オペランド・データ語の可変位置半語長部分を取り、これらを結合してRdの出力データ語のそれぞれ下半分と上半分にする。図から分かるように、どちらの場合もRnの入力オペランド・データ語の選択された部分は出力データ語Rd内の位置をシフトしない。これによりこの部分は簡単なマスクおよび選択回路で与えられ、追加のハードウエア・オーバーヘッドはほとんどない。図3の命令の可変位置半語部分は、その語をkビット位置だけ右にシフトした後でRmの語のビット位置15から0までを選択する。同様に、図4の命令に従って選択されるRmの半語長可変位置部分は、その語をkビット位置だけ左にシフトした後でRmの語のビット位置31から16までを選択する。 【0017】図3と図4の命令の可変シフトとパッキング機能の結合は、これらの値の処理中に起こる可能性のある固定点算術値の「Q」値内の変化を調整するのに特に有用である。図5は、図3と図4の命令を行うのに特に適したデータ・パス14を示す。この場合もレジスタ・バンク16は入力オペランド・データ語(この例では32ビットのデータ語)を与え、出力データ語を記憶する。データ・パスはシフト回路18と加算回路20と選択および結合回路22を含む。 【0018】動作を説明すると、Rnのシフトされない入力オペランド・データ語をレジスタ・バンク16からシフトおよび結合論理22に直接送る。図3の命令の場合は、Rnの値の最上位16ビットを選択して、出力データ語Rd内に対応するビットを形成する。図4の命令の場合はRnの入力オペランド・データ語の最下位16ビットを選択して送り、出力データ語Rdの最下位ビットを形成する。Rmの入力オペランド・データ語は全シフト回路18を通る。図3の命令の場合は、kビット位置の算術右シフトを行い、次に選択および結合回路22はシフト回路18の出力から最下位16ビットを選択してRdの出力データ語の最下位16ビットを形成する。図4の命令の場合は、シフト回路18はkビット位置の左論理シフトを行い、その結果を選択および結合回路22に供給する。選択および結合回路22はシフト回路18の出力の最上位16ビットを選択し、これを用いてRdの出力データ語の最上位16ビットを形成する。 【0019】図から分かるように、選択および結合回路22は加算回路20に並列の位置に設ける。したがって、全シフトおよび加算演算を1処理サイクル内に行うことができるようにデータ・パス14を注意して設計すれば、処理サイクルに制限を与えずに、加算回路20の演算に通常与えられる時間内に選択および結合演算を比較的簡単に行うことができる。 【0020】理解されるように、上に説明しまた特許請求の範囲に規定したデータ処理命令は、得られる結果値に関して定義した。同じ結果値は多くの異なる処理ステップとステップの順序で得ることができる。本発明は、単一命令を用いて同じ最終結果値を生成する全てのかかる変形を含む。本発明の例示の実施の形態について添付の図面を参照して詳細に説明したが、理解されるように、本発明はかかる実施の形態に限定されるものではなく、特許請求の範囲に規定されている本発明の範囲と精神から逸れることなく、当業者は種々の変化や変更を行うことができるものである。
|
| 【出願人】 |
【識別番号】594154428 【氏名又は名称】エイアールエム リミテッド
|
| 【出願日】 |
平成13年10月4日(2001.10.4) |
| 【代理人】 |
【識別番号】100066692 【弁理士】 【氏名又は名称】浅村 皓 (外3名)
|
| 【公開番号】 |
特開2002−132497(P2002−132497A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2001−308507(P2001−308507) |
|