(57)【特許請求の範囲】
【請求項１】
シフト回路；
演算回路；及び
前記シフト回路と、第１入力データワードＲｍと前記第１入力とは異なる第２入力データワードＲｎとの演算を実行する前記演算回路と、を制御する命令に応答する命令デコーダ；
を含むデータ処理装置にして、前記演算が、
前記第１入力データワードＲｍの複数の非隣接多数ビット部分を選択して、それぞれビット長Ａの複数の多数ビット部分を形成すること；
前記選択した複数の非隣接多数ビット部分を全てシフトビット位置まで共通シフト量だけシフトするか、またはシフトしないかを選択すること；
前記複数の非隣接多数ビット部分の各々を、ゼロ拡張あるいは符号拡張を使用して前記ビット長Ａからビット長Ｂまで長さを拡張して、複数の拡張された多数ビット部分を形成し、該拡張された多数ビット部分が互いに接合されて拡張されたデータワードＰを形成するようにすること；及び
前記拡張されたデータワードＰと前記第２入力データワードＲｎとからそれぞれビット長さＢのビット位置部分を入力オペランドとして用いて複数の独立した演算操作を実行して、その結果によるデータワードＲｄを形成すること；
の工程によって１つの値を生成するようにした、前記データ処理装置。
【請求項２】
前記ビット長ＢがＢ＝２＊Ａである、請求項１に記載のデータ処理装置。
【請求項３】
多数ビット部分の最低位ビット位置がゼロ次のビット位置に一致するように、前記複数の多数ビット部分がシフトされる、請求項１及び２のいずれかに記載のデータ処理装置。
【請求項４】
前記多数ビット部分をビット長Ａからビット長Ｂに長さを拡張する工程が、
前記多数ビット部分をビット長Ｂまで符号拡張すること；及び
前記多数ビット部分をビット長Ｂまでゼロ拡張すること；
の１方を含む、請求項１、２、３のいずれかに記載のデータ処理装置。
【請求項５】
前記複数の独立の演算操作が独立の加算操作である、請求項１〜４のいずれかに記載のデータ処理装置。
【請求項６】
前記第１入力データワードと前記第２入力データワードがそれぞれＣのビット長をもち、Ｃ＝Ｎ＊Ｂであり、Ｎが１より大きい整数である、請求項１〜５のいずれかに記載のデータ処理装置。
【請求項７】
Ｃ＝Ｂ＊２である、請求項６に記載のデータ処理装置。
【請求項８】
Ｂ＝１６，Ａ＝８である、請求項１〜７のいずれかに記載のデータ処理装置。
【請求項９】
前記共通シフト量がＢ−Ａである、請求項１〜８のいずれかに記載のデータ処理装置。
【請求項１０】
前記命令が単一命令・多数データ命令である、請求項１〜９のいずれかに記載のデータ処理装置。
【請求項１１】
前記命令がデータ値アンパック操作を演算操作と組合すものである、請求項１〜１０のいずれかに記載のデータ処理装置。
【請求項１２】
前記シフト回路が前記データ処理装置のデータ通路の前記演算回路の上流にある、請求項１〜１１のいずれかに記載のデータ処理装置。
【請求項１３】
前記多数ビット部分をビット長Ａからビット長Ｂまで長さを拡張するように作動する拡張回路が前記シフト回路の１部分に並列に配置され、前記シフト回路が、前記命令を実行するとき前記シフト回路を通るデータ値に、他の命令を実行するとき前記シフト回路により与えられる共通シフト量の範囲に比較して制限された範囲の共通シフト量を与えるように作動する、請求項１〜１２のいずれかに記載のデータ処理装置。
【請求項１４】
第１入力データワードＲｍと前記第１入力データワードとは異なる第２入力データワードＲｎから１つの値を発生する命令をデコードし、実行する工程を含むデータ処理の方法において、前記１つの値が、
前記第１入力データワードＲｍの複数の非隣接の多数ビット部分を選択して複数のビット長Ａの多数ビット部分を形成すること；
前記選択した複数の非隣接多数ビット部分を全てシフトビット位置まで共通シフト量だけシフトするか、またはシフトしないかを選択すること；
前記複数の多数ビット部分の各々を前記ビット長Ａからビット長Ｂまで長さを拡張して複数の拡張された多数ビット部分を形成し、前記拡張された多数ビット部分が互いに接合して拡張されたデータワードＰを形成するようにすること；及び
前記拡張されたデータワードＰと前記第２入力データワードＲｎとからの、それぞれビット長Ｂのビット位置部分を入力オペランドとして使用して複数の独立の演算操作を実行し、その結果としてデータワードＲｄを形成すること；
の工程によって得られる、前記データ処理の方法。
【請求項１５】
請求項１４に記載の方法を実行するようにコンピュータを制御するコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
本発明はデータ処理システムの分野に関する。更に詳細には、本発明は単一命令多数データ型式の処理を与えることを目的とするデータ処理システムに関する。
【０００２】
単一命令多数データ演算は単一の命令に従って操作されるデータワードが実際は、それぞれのデータ値に独立に実行される特定の操作による、それらデータワード内の多数のデータ値を表すという公知の技術である。この型式の命令はデータ処理システムの操作効率を向上することが可能で、特にコードの大きさを減少し処理速度を速くするのに有用である。この技術は、デジタル信号処理応用におけるように、物理的信号を表すデータ値を操作する分野に、それに限定されることはないが広く利用されている。
【０００３】
データ処理システムのデータ処理能力を延ばすとき、重要な考慮事項は追加の処理能力を支持するために導入される大きさ、複雑性、費用、及び動力消費のオーバヘッドの大きさである。処理能力を増加しながら、一方追加のオーバヘッドを減少できる方策が極めて有用である。
【０００４】
１つの態様において、本発明はシフト回路、演算回路、及び前記シフト回路と第１入力データワードＲｍと前記第１入力とは異なる第２入力データワードＲｎとの演算を実行する前記演算回路とを制御する命令に応答する命令デコーダを含み、前記演算は、前記データワードＲｍの非隣接の複数の多数ビット部分を選択して、各々ビット長Ａをもった複数の多数ビット部分を形成し、前記選択した複数の多数ビット部分を全てシフトビット位置まで共通のシフト量だけシフトするかまたはシフトしないか選択し、前記複数の多数ビット部分の各々を前記ビット長Ａからビット長Ｂに増進（ｐｒｏｍｏｔｅ）して複数の増進された多数ビット部分を形成し、該増進された多数ビット部分が互いに接合して増進されたデータワードＰを形成するようにし、さらに前記増進されたデータワードＰとデータワードＲｎとからのビット長Ｂのそれぞれのビット位置部分を入力オペランドとして用いて複数の独立の演算操作を実行して、結果としてデータワードＲｄを形成する、ことにより与えられた値を発生する。
【０００５】
本発明はデータ処理システムに新しいデータ処理命令を与え、それはデータワード内に保持されるデータ値をアンパックするのに役立ち、またアンパックされたデータ値に単一命令・多数データ型式の演算処理を実行するのに役立つ。本発明はデータワード内の非隣接データ値をアンパックすることにより、隣接するデータ値をアンパックする従来のアンパック命令よりも相当に少ない追加のオーバヘッドが実現される。特に、始めに隣接していたデータ値のビット位置を拡散することの出来る追加のデータ通路の必要性が消滅される。実際に例えば、既存のマスク回路やワードシフト回路が既に使用されている。更に、アンパック機能の簡易化は、単一命令による処理サイクル強制の問題を導入することなく、オペランドに演算処理を実行するのに単一命令を用いることを可能にしている。
【０００６】
本発明はその一般的形において、その増進された長さに比較して任意の長さの非隣接多数ビット部分の選択に適用されるが、特に効率的であり都合の良い実施は選択された多数ビット部分が増進された多数ビット部分の長さの半分であり、その増進された多数ビット部分が増進されたデータワード内で互いに接合されて、その演算の入力データワードの長さに等しい長さをもつようにされた場合である。
【０００７】
選択された多数ビット部分の長さの増進が各種の方法で行われることは理解されるであろう。それを実行する２つの特に有用な方法は、符号延長（ｓｉｇｎ  ｅｘｔｅｎｓｉｏｎ）または先行ゼロ延長（ｌｅａｄｉｎｇ  ｚｅｒｏ  ｅｘｔｅｎｓｉｏｎ）である。
【０００８】
アンパックと組合される演算操作は各種の形を取りうることは理解されるであろう。しかしながら特に好ましい実施例は、演算操作がそれぞれの増進された部分に独立に適用される加算操作である場合である。この命令は、ＭＰＥＧ運動補正計算の一部のような絶対差（ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅｓ）の合計の計算のときのような、多くの実データ処理（ｒｅａｌ  ｌｉｆｅ  ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ）条件において特に有用である。
【０００９】
前述のように、本発明はデータ処理システム内に存在する処理資源をより有効な方法で使用することができる。これは特に、シフト回路がデータ通路内で演算回路の上流に設けられているシステムの場合に当てはまる。そのような構成は、任意の選択的シフトをもったアンパックを演算操作の前に実行することを可能にする。
【００１０】
好ましい実施例において、追加の処理サイクル時間制限を課すことなしに好ましい機能性（ｆｕｎｃｔｉｏｎａｌｉｔｙ）を与えるため、選択された多数ビット部分の長さを（例えば、符号延長または先行ゼロ延長により）増進する増進回路はシフト回路の一部と並列に設けられる。そして特定される共通シフト量の範囲は、シフト回路の第１の部分が増進回路と組み合わせて使用されて、伝達に取られる時間データ値を他の操作において全シフト回路を通して伝達するために既に許容された値を越えて延長すること無しに要求された処理を実行できるように限定される。
【００１１】
他の観点から見ると、本発明はデータ処理の１つの方法を提供し、その方法は、前記データワードＲｍの複数の非隣接多数ビット部分を選択し、前記選択した複数の多数ビット部分を全てシフトビット位置まで共通のシフト量だけシフトするかまたはシフトしないか選択し複数のビット長Ａの多数ビット部分を形成すること；前記複数の多数ビット部分の各々を前記Ａのビット長からＢのビット長まで増進して、前記多数ビット部分が互いに接合して増進されたデータワードＰを形成するようにすること；及び前記増進されたデータワードＰとデータワードＲｎとからのビット長Ｂのそれぞれのビット位置部分（ｂｉｔ  ｐｏｓｉｔｉｏｎ  ｐｏｒｔｉｏｎｓ）を入力オペランドとして使用して複数の独立の演算操作を行ってその結果としてデータワードＲｄを形成すること；により所与の結果を生成する命令をデコードし、実行する工程を含む。
【００１２】
本発明はまた、上述の操作型式をもったデータ処理命令を含む、汎用コンピュータを上記技術に従って制御するコンピュータ・プログラムを格納する、コンピュータ・プログタム製品を提供する。
【００１３】
本発明の実施例を、例示の目的で、添付の図面を参照して説明する。
【００１４】
図１はＡＤＤ８Ｔ０１６と呼ばれる第１のＳＩＭＤ型データ処理命令の動作を説明する。この命令は、実行される処理の１部として長さの延長された入力オペランド・データワードの各々の選択された部分の前部に付加された延長の性質に対応する符号のある変数（ｖａｒｉａｎｔ）及び符号の無い変数の両者に用いられる（ｃｏｍｅｓ  ｉｎ）。第１の入力オペランドデータワードはデータ処理装置のレジスタＲｍに格納される。データワードは４つの８−ビット部分ｐ０，ｐ１，ｐ２，ｐ３から形成される。命令に８−ビット部分の右回り操作（ｒｏｔａｔｅ  ｒｉｇｈｔ  ｏｐｅｒａｔｉｏｎ）が特定されているか否かにより、多数ビット部分ｐ０とｐ２、または多数ビット部分ｐ１とｐ３がレジスタＲｍ内の入力データワードから選択される。任意の右回り操作は望むなら１６及び２４の量でも良い。これは結果として、高次及び低次の部分が取り換えられる。図１に示される例では非隣接部分ｐ０，ｐ２が回転しない（シフトされた）変数に選択され、他の変数は破線で示される。
【００１５】
多数ビット部分が選択されたとき、各々はゼロ延長、または符号延長を用いて８ビットから１６ビットに増進される。図に示される増進されたデータワードＰの陰影の部分はこれらの延長された部分を示す。
【００１６】
第２の入力データワードはレジスタＲｎに格納され、２つの１６−ビットデータ値を含む。図示される例は単一命令多数データ付加操作を実行して、延長されたｐ０値がＲｎの低位１６ビット値ａ０に加算される。一方延長されたｐ２値がＲｎ値の高位１６ビット部分ａ２に加算される。この型式の加算は、その結果の第１５番と１６番とのビットの間で分割されるキャリーチェーン（ｃａｒｒｙ  ｃｈａｉｎ）をもった全幅加算（ｆｕｌｌ  ｗｉｄｔｈ  ａｄｄｉｔｉｏｎ）と考えられる。他のＳＩＭＤ型演算操作、例えばＳＩＭＤ減算を実行しても良いことは理解されるであろう。
【００１７】
図１の命令によって発生する出力データワードは低位の１６ビットにｐ０とａ０の和を発生し、一方上位１６ビットはｐ２とａ２の和を含む。この命令は特にそれぞれのデータ値の間の絶対差（ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅｓ）の合計を決定する操作に有利であり、それによりａ０とａ２は、値ｐ０〜ｐ３とがピクセル差の値のような信号差の値の個々の絶対値を表す累計を表す。この型式の操作は一般にＭＰＥＧ運動推定処理に必要であり、この操作を高速度で実行する能力は非常に有用である。
【００１８】
図２は図１の命令を実行するのに使用されるデータ処理システムのデータ通路２の例を示す。レジスタバンク４は処理される３２−ビットのデータワードを保持する。ＲｍとＲｎとに格納される両入力オペランド・データワードはこのデータバンクから読出され、出力データワードはレジスタバンク４のレジスタＲｄに書き戻される。データ通路２はシフト回路６、加算回路８を含む。このシステムにより与えられる多くの他のデータ処理命令はこのシフト回路６と加算回路８とを各種の異なる方法で利用する。このようなデータ通路２はデータ値をシフト回路６及び加算回路８を通過して伝達するのに必要な時間がデータ処理サイクル時間に良く調和するように設計される。データ通路２のハードウエア資源の効率的利用がシステムでなされ、そこで資源がデータ通路２を伝達する各データワードの大部分について活性であるようにされる。符号／ゼロ延長及びマスク回路１０がシフト回路６の低位部分と並列に設けられる。多重化装置１２は全シフト回路６の出力または符号／ゼロ延長及びマスク回路１０の出力を加算回路８の入力の１つとして選択することができる。加算回路８の他の入力は、Ｒｎの入力オペランド・データワードである。
【００１９】
図１の命令を実行するとき、Ｒｍの入力オペランドデータワードがシフト回路６に与えられ、そこで選択的８−ビット桁の右シフトがそのパラメータが該命令内に特定されていたか否かに従って前記データワードに適用される。１６及び２４ビット桁の選択的右回転が適用されても良い。多数レベルの多重化装置に基づくシフト装置内で、そのように制限された可能的シフト（ｒｅｓｔｒｉｃｔｅｄ  ｐｏｓｓｉｂｉｌｉｔｙ  ｓｈｉｆｔ）が比較的簡単にシフト回路６の第１の部分から与えられる（例えば、３２−ビットのシステムの場合には、多重化装置の第１のレベルが１６ビットのシフトを与え、多重化装置の第２のレベルが８ビットのシフトを与える）。従って、選択的に特定量シフトされた値がシフト回路６を介して分岐路から取り出されて、符号／ゼロ延長及びマスク回路１０に与えられる。この回路１０はＲｍのシフトされるかもしれない入力オペランド・データワードの選択されなかった多数レベル部分をマスクして、これらマスクされた部分をそれぞれの選択された多数ビット部分のゼロまたは符号の延長と置き換えるように作動する。符号／ゼロ延長及びマスク回路１０の出力は多重化装置１２を通って加算回路８の第１の入力に送られる。加算回路８の第２の入力はＲｎの入力オペランド・データワードである。加算回路８はその入力にＳＩＭＤ加算（すなわち、２つの並列の１６−ビットがビット位置１５と１６との間で効率的に区切られたキャリーチェインをもって加算される）を実行する。加算回路８の出力はレジスタバンク４のレジスタＲｄに書き戻される。
【００２０】
別の実施例として、符号／ゼロ延長及びマスク回路１０はその入力としてＲｍ（回転しない）を取り込むようにしても良い。そのときは、それ自身で４つの可能性のある符号ビット（ｐｏｓｓｉｂｌｅ  ｓｉｇｎ  ｂｉｔｓ）に０、８、１６または２４の回転を実行し、マスクを作っても良い。シフト回路６は並列にＲｍの全３２ビットをシフトするように作動する。
【００２１】
図３、図４は半ワードパッキングＳＩＭＤ型式命令の２つの変数を示す。図３のＰＫＨＴＢ命令はレジスタＲｎに格納されている１つの入力オペランド・データワードの固定された上半分と、レジスタＲｍに格納されている第２の入力オペランド・データワードの可変位置半ビット部分を取り込み、これらを出力データワードの上半分と底半分とに結合して、レジスタＲｄに格納する。命令ＰＫＨＢＴはＲｎの入力オペランド・データワードの底半分とＲｍの第２の入力オペランド・データワードの可変位置半ワード長さ部分とを取り込みこれらをそれぞれＲｄの出力データワードの底半分と上半分とに結合する。何れの場合も、Ｒｎの入力オペランド・データワードの選択された部分は出力データワードＲｄのその位置においてシフトされないことが分かるであろう。これは、この部分が、非常に僅かな追加のハードウエアオーバヘッドをもって簡単なマスク回路または選択回路により得ることを可能にする。図３の命令の可変位置半ワード部分は、そのワードがｋビット位置だけ右にシフトされた後にＲｍのワードビット位置１５乃至０から選択される。同様に、図４の命令に従って選択されたＲｍの半ワード長可変位置部分は、Ｒｍのワードがｋビット位置だけ左にシフトされた後、前記ワードのビット位置３１乃至１６から選択される。
【００２２】
図３、図４の命令のパッキング機能と組み合わせて設けられた可変シフトは固定点計算値の処理の間に発生するそれらの値のＱ値の変化を調整するのに特に有用である。
【００２３】
図５は図３、図４の命令を実行するのに特に適したデータ通路１４を図示する。レジスタバンク１６は前述のように入力オペランド・データワード、この例においては３２−ビットのデータワードを与え、出力データワードを格納する。データ通路はシフト回路１８、加算回路２０、並びに選択及び結合回路２２を含む。
【００２４】
作動の場合、Ｒｎのシフトされない入力オペランド・データワードはレジスタバンク１６から選択及び結合論理２２に直接送られる。図３の命令の場合、Ｒｎの最上位１６ビットが選択されて出力データワードＲｄ内の対応ビットを形成する。図４の命令の場合、出力データワードＲｄの最下位ビットを形成するため選択され送られるのはＲｎの入力オペランド・データワードの最下位１６ビットである。Ｒｍの入力オペランド・データワードは全シフト回路１８を通過する。図３の命令の場合、ｋビット桁の算術的右シフトが適用されシフト回路１８の出力から最下位１６ビットが選択及び結合回路２２により選択されＲｄの出力データワードの最下位１６ビットを形成する。図４の命令の場合、シフト回路１８はｋビット桁の左論理シフトを与え、その結果を選択及び結合回路２２に与える。選択及び結合回路２２はシフト回路１８の出力の最上位１６ビットを選択して、それを用いて出力データワードＲｄの最上位１６ビットを形成する。
【００２５】
選択及び結合回路２２が加算回路２０と並列の位置に設けられることが分かるであろう。従って、データ通路１４は全シフト及び加算操作が１処理サイクルの間に実行できるように注意深く設計されて、選択及び結合の比較的素直で直線的（ｓｔｒａｉｇｈｔ  ｆｏｒｗａｒｄ）な操作は、処理サイクルの制限を課することなく加算回路２０の作動に通常許される期間内に処理される。
【００２６】
上記に説明し、請求項に限定されるデータ処理命令は、達成した結果値によって限定されていることは理解されるであろう。同じ結果値は異なる処理工程及び工程の順序により達成できることが理解されるであろう。本発明は単一の命令を用いて同じ最終結果を発生するこれら変形の全てを含むものである。
【図面の簡単な説明】
【図１】  第１のＳＩＭＤ型式のデータ処理命令の動作を図式に説明する図面。
【図２】  図１のデータ処理命令を実行するのに適した型式の処理装置内のデータ通路を図式に説明する図面。
【図３】  更に別のＳＩＭＤ型式の第１の変形を図式に説明する図面。
【図４】  更に別のＳＩＭＤ型式の第２の変形を図式に説明する図面。
【図５】  図３、図４のデータ処理命令を実行するのに適したデータ処理システムのデータ通路を図式に説明する図面。
【図１】
0005133491.tif 000002
【図２】
0005133491.tif 000003
【図３】
0005133491.tif 000004
【図４】
0005133491.tif 000005
【図５】
0005133491.tif 000006