JP2002522821A - データプロセッサとデータ処理方法 - Google Patents

データプロセッサとデータ処理方法

Info

Publication number
JP2002522821A
JP2002522821A JP2000564120A JP2000564120A JP2002522821A JP 2002522821 A JP2002522821 A JP 2002522821A JP 2000564120 A JP2000564120 A JP 2000564120A JP 2000564120 A JP2000564120 A JP 2000564120A JP 2002522821 A JP2002522821 A JP 2002522821A
Authority
JP
Japan
Prior art keywords
fields
storage unit
field
unit
data processor
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
JP2000564120A
Other languages
English (en)
Inventor
フランシスカス ダブリュ スィエスターマンズ
Original Assignee
トライメディア テクノロジーズ インク
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 トライメディア テクノロジーズ インク filed Critical トライメディア テクノロジーズ インク
Publication of JP2002522821A publication Critical patent/JP2002522821A/ja
Pending legal-status Critical Current

Links

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/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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 より少ない命令によりパックデータに圧縮および/または解凍を行うことができるデータプロセッサを提供すること。 【解決手段】 データプロセッサにフィールドの各々からの数を別々に扱わせる命令を実行するために、データプロセッサは、所定のフィールドに細分割可能である記憶ユニットを使用する。このプロセッサは、記憶ユニットの第一および第二ユニットのアドレス指定を行う命令を有する。データプロセッサが、記憶ユニットの第一ユニットのフィールドの第一および第二フィールドから、逐次ビットの第一および第二グループをとると、結果記憶ユニット内の同じフィールドの各シフトされた位置の両方に逐次ビットの第一および第二グループを配置する。これらのシフトされた位置間のビット位置距離は、記憶ユニットの第二ユニットの内容によって制御される。

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】
本発明は、データプロセッサと、データ処理方法と、データプロセッサに対す
るプログラムのコンパイル方法とに関する。
【0002】
【従来の技術】
種々の信号処理の応用において、異なった信号値がビットの異なった数により
表される圧縮データが使用される。例えば、ハフマン(Huffman)コーディングの
使用が、これに当たる。
【0003】 ビットの異なった数が使用される場合、圧縮は、各信号値からビットの必要数
を選択し、それらの選択されたビットを圧縮語に配置する。解凍は、圧縮語をと
り、その圧縮語からのビットの選択されたグループから解凍された信号値を得る
。数に対するグループの選択は、その圧縮語において先行する数に対して使用さ
れていたビットの長さと、その数自身に対して使用されるビットの長さとに依存
する。
【0004】 圧縮と解凍は、データプロセッサにより実行されるプログラムによって、行う
ことができる。これには、例えば、レジスタ内容をシフトさせ、レジスタ内容を
組み合わせ、不必要なレジスタ内容をマスクすると言うようないくつかの命令を
実行することが含まれるであろう。
【0005】 PCT特許出願WO 96/17289は、パックデータからなる記憶ユニットを保持するレ
ジスタに作動するシフト命令を実行することができるデータプロセッサを記述し
ている。パックデータを含むレジスタは、多くの等しい長さのフィールド(例え
ば、16ビットの4つのフィールド)に組織化されている。データプロセッサは、
複数の数を指定された量分シフトさせるパックされたシフト命令を含む命令セッ
トを有する。このシフト命令は、2つのオペランドを有する。第一オペランドは
、第二オペランド内の各数に対して、各々、必要なシフト量を特定するいくつか
の量コードを含む。量コードは、第一レジスタ内にパックデータとして格納され
、数は第二レジスタにパックデータとして格納される。プロセッサは、各々が、
第一オペランドにおいて特定されるそれ自身の量分シフトされている、第二オペ
ランドからの種々の数を含む、パックされた結果を生成する。したがって、単一
命令を用いて、プロセッサに、複数のシフト演算を異なった数に実行させること
が可能である。
【0006】 パックされたシフト命令を、可変長圧縮または解凍に対する命令の数を減らす
ために使用することができるが、信号値を圧縮または解凍するためには、依然と
して複数の命令を使用しななければならない。
【0007】
【課題を解決するための手段】
本発明の目的は、とりわけ、より少ない命令によりパックデータに圧縮および
/または解凍を行うことができるデータプロセッサを提供することである。
【0008】 本発明の一態様によると、データプロセッサは、請求項1に規定されるように
構成されている。このように、このプロセッサは、2つのオペランドレジスタの
ような2つの記憶ユニットに関する圧縮命令を有し、第一レジスタは、第二オペ
ランドレジスタの各数に与えられなければならないシフトの相対量を特定する一
つまたは複数のコードを含んでいる。この相対量は、例えば、第二オペランドレ
ジスタの各数が圧縮されなければならないビットの長さに対応する。これらの数
は、第二オペランドの異なったフィールドから得られ、そしてその結果は、これ
らのフィールドの一つ、または結果オペランドの他のフィールドに置くことがで
きる。データを圧縮するプログラム内のこの命令を使用することによって、圧縮
に必要な命令の数を、減小させることができる。これは、実行時間を節約し、プ
ログラムを格納するために必要なメモリー空間を減小させる。
【0009】 本発明の別の態様によると、データプロセッサは、請求項2に規定されるよう
に構成される。このように、このプロセッサは、2つのオペランドレジスタのよ
うな、2つの記憶ユニットに関する解凍命令を有し、第一レジスタは、第二オペ
ランドレジスタの各数が解凍されなければならないビットの長さを特定する一つ
または複数の長さコードを含む。データを解凍するプログラム内のこの命令を使
用することによって、圧縮に必要な命令の数を、減少させることができる。これ
は、実行時間を節約し、そしてプログラムを格納するために必要なメモリー空間
を減らす。
【0010】 いくつかのプロセッサは、VLIW(Very Long Instruction Word)プロセッサの
ような、命令セットの異なったサブセットからの命令を実行する異なった機能ユ
ニットを使用する。これらの機能ユニットは、例えば、算術/論理命令を実行す
る一つ以上の機能ユニット、シフト命令を実行する一つ以上の機能ユニットを含
む。これらの機能ユニットには、各々、レジスタの内容を異なったフィールドに
細分割する機能、またはいくつかの異なったフィールドへの細分割を取り扱うこ
とを可能とする多目的機能を持たせることが出来る。VLIWプロセッサの場合、こ
れらの異なった機能ユニットは、異なった命令の実行を、各々、並列にそれ自身
のサブセットから始めることができる。
【0011】 本発明の別の態様では、ビットの第一および第二グループを配置する命令は、
シフト命令を実行する機能ユニットを使用して実行される。フィールドの内容を
個々にシフトさせるために使用されるシフト回路は、ビットのグループを同じフ
ィールド内にまたはそれからシフトさせるために使用される。
【0012】
【発明を実施するための形態】
本発明のデータプロセッサと方法のこれらのそしてまた他の有利な観点は、以
下の図面を使用して非制限的に後述される。
【0013】 図1は、データプロセッサのアーキテクチャを示す。本発明は、VLIWプロセッ
サには制限されないが、一例として、VLIWプロセッサが示されている。このプロ
セッサは、レジスタファイル10と、多くの機能ユニット12a-fと、命令発行ユニ
ット14とを含む。命令発行ユニット14は、機能ユニット12a-fへの命令発行接続
を有する。機能ユニット12a-fは、読み書きポートを介してレジスタファイル10
に接続されている。
【0014】 動作中、命令発行ユニット14は、命令メモリ(明示せず)から連続した命令語
をフェッチする。各命令語は、機能ユニット12a-fに対するいくつかの命令を含
むことができる。
【0015】 図2は、命令の具体例を示す。この命令は、多くのフィールド、すなわち、オ
ペコードに対するフィールドOPC、第一ソース・レジスタアドレスに対するフィ
ールドR1、第二ソース・レジスタアドレスに対するフィールドR2、結果レジスタ
・アドレスに対するフィールドRdestとオプションとしてガード・レジスタアド
レスに対するフィールドRgを含む。
【0016】 命令発行ユニット14は、機能ユニット12a-fの各ユニットに対し、並列に、命
令語から個々の命令を発行する。命令に応じて、ソース・レジスタアドレスに対
するフィールドR1, R2のソースレジスタ・アドレスの内容が、レジスタファイル
10からフェッチされる。機能ユニット12a-fは、オペコードに対するフィールド
からのオペコードに従って命令を処理し、そして処理の結果は、結果レジスタ・
アドレスRdestに対するフィールドのアドレスによって、レジスタアドレスのレ
ジスタファイル12に書き戻される。オプションとして、書き戻しを、ガードレジ
スタアドレスに対するフィールドRgによってアドレス指定が行われるレジスタの
内容に依存させても良い。
【0017】 通常の命令は、ソースレジスタの各々の内容と、単一番号としての宛先レジス
タとを使用する。例えば、レジスタが64ビット長である場合、通常の"ADD"命令
により、機能ユニット12a-fは、レジスタファイル10のソースレジスタからロー
ドされた2つの64ビット数を加え、そして64ビットの結果をレジスタファイル10
の宛先レジスタ内に配置させる。同様に、通常のシフト命令により、機能ユニッ
ト12a-fは、64ビットレジスタ内でビットをシフトさせる。このような通常の命
令の実行は、レジスタファイル10からデータをロードするステップと、関連する
演算を実行するステップと、結果を書き込むステップとを必要とする。
【0018】 加えて、一つまたは複数の機能ユニット12a-fは、レジスタの内容をパックデ
ータとして使用する命令を実行することができる。
【0019】 図3は、パックデータフォーマットを示す。データフォーマットは、可能なレ
ジスタ内容を示す。レジスタ内容30は、ビットの4つの等しい長さのフィールド3
2a-dに細分割されている。その一例では、レジスタ内容が64ビットにより構成さ
れ、各フィールドが16ビットから構成されている。
【0020】 機能ユニット12a-fが、ある命令を実行する場合、それは、それらの命令のソ
ースおよび/または宛て先レジスタ内のデータをパックデータとみなす。例えば
、加算命令の場合には、各対が、第一ソースレジスタからの一つのフィールドと
第二ソースレジスタからの一つのフィールドからなる、対応するフィールド32a-
dの対を加えることができる。この例では、各対の加算の結果は、宛先レジスタ
のフィールド32a-dの各々に書き込まれる。異なった対の加算は独立しているの
で、一つのフィールドから他方への桁上げインタラクションはない。
【0021】 レジスタの内容をパックデータとして扱う命令を実行するために必要なステッ
プ数は、通常の命令を実行するために必要なものと、通常、同じであるので、同
じ時間内に複数の演算を行うことができる。一般的に言って、一つのステップが
、ソースレジスタの内容をロードするために使用される。すなわち、パックデー
タの全ては、単一番号として扱われるレジスタの内容をロードするために使用さ
れる時間間隔と同じ間隔内に一つのステップでロードされる。一般的に言って、
関連する演算を実行するためには、一つのステップが使用される。すなわち、一
つのレジスタからパックされた異なった数への演算が、並列に実行される。一般
的に言って、宛先レジスタへの書込みには、一つのステップが使用される。すな
わち、パックデータの全ては、単一番号として扱われるレジスタの内容を書き込
むために使用される時間間隔と同じ間隔内に一つのステップで書き込まれる。
【0022】 本発明によると、データプロセッサは、パックデータの圧縮と解凍の速度を向
上させるように設計されている命令を有する少なくとも一つの機能ユニット12a-
fを有する。
【0023】 図4は、非圧縮データフォーマット40と圧縮データフォーマット42を示す。フ
ォーマットは、両方ともビット位置を空間的に示す。非圧縮データフォーマット
40は、等しい長さのフィールド44a-dと、別に示されたフィールド44a-dの部分46
a-dとを有するパック形式に対応する。圧縮データフォーマット42の場合、同じ
フィールド48a-dが、シフトされた部分47a-dと共に、示されている。シフトされ
た部分47a-d内の逐次ビットは、対応する部分46a-dの逐次ビットから導出される
【0024】 逐次シフトされた部分47a-dからのビットが、連結されたので、非圧縮データ
フォーマット40の複数のフィールドからのビットは、圧縮データフォーマット42
の同一フィールド内に発生する。2つのシフトされた部分47a-dの"concatenation
"(連結)の意味する所は、一つのシフトされた部分47a-dのビットが、所定のビ
ット数離れたところ(好ましくは、ゼロビットの距離で直接)で、シフトされる
たびにそのシフトされた他の部分47a-dのビットに続くと言うことである。従っ
て、レジスタ内のシフトされた部分47a-dの位置は、それに先行するフィールド
の可変長さの合計に依存する。
【0025】 図4は、非圧縮データフォーマット40のフィールド44a-dの部分46a-dと圧縮デ
ータフォーマットの可変長フィールド48a-dの間の対応も示す。原理的には、部
分46a-dの内容のみが、圧縮データ42に現れ、非圧縮データフォーマット40のフ
ィールド44a-dの残りは、圧縮データフォーマット42に現れない。
【0026】 図5は、非圧縮データフォーマット400と圧縮データフォーマット402の同様な
組合せを示す。非圧縮データフォーマット400は、部分406a,bを有する等しい長
さのフィールド404a,bを有する。圧縮データフォーマット402は、シフトされた
部分407a,bを有するフィールド408a,bと同じ細分を有する。
【0027】 図6は、非圧縮データフォーマット410と圧縮データフォーマット412の別の同
様な組合せを示す。非圧縮データフォーマット410は、部分416a-dを有する等し
い長さのフィールド414a-dを有する。圧縮データフォーマットは、同じフィール
ド418a-dに細分割され、そしてシフトされた部分417a-dを含む。非圧縮データフ
ォーマット410のフィールド414a-dは、対414a,b 414c,dとして扱われる。各対は
、図5の完全なデータフォーマットと同様に扱われる。
【0028】 図7,8は、非圧縮データフォーマットと圧縮データフォーマットの別の可能な
組合せを示すが、これは、それらの部分が異なったシーケンスにおいて連結され
ている点と、これらの部分が、異なったフィールド境界で位置合わせされている
点で、図4-6とは異なる。
【0029】 非圧縮データフォーマット40、400、410から圧縮データフォーマット42、402
、412への変換とその逆は、例えば、可変長圧縮と解凍において使用される。こ
の場合、例えば、他のビットがゼロであるという理由、または他のビットが、(
例えば、算術符号化の場合のように)異なった信号値を識別しないと言う理由で
、フィールド44a-dの限られた数のビットしか必要でないことは既知である。
【0030】 本発明によると、プロセッサには、圧縮(非圧縮パック形式40または400から
圧縮フォーマット42または402への変換)および/または解凍に使用される、一
つまたは複数の命令 Bitconcat R1,R2,R3 Bitsplit R1,R2,R3 を実行することができる演算処理要素が、設けられている。
【0031】 圧縮命令"Bitconcat"は、2つのソースレジスタR1, R2を使用する。第一ソース
レジスタR1は、パック形式である。第一レジスタR1のフィールドは、一つまたは
複数の長さコード(例えば、フィールド境界から始まる、フィールド44a-d, 404
a,b 414a-dの部分46a-d, 406a,b 416a-dのビットの数を表す数)を含む。第二ソ
ースレジスタR2は、パックされた、非圧縮フォーマット40、400、410内のデータ
を含む。圧縮命令に応答して、機能ユニットは、圧縮フォーマット42、402内の
データを宛先レジスタR3に書き込む。すなわち、例えば、64ビットレジスタを有
する図5の場合、機能ユニットは: - R3 bits 0 to R1[0]-1 equal to bits 0 to R1[0] of R2 - R3 bits R1[0] to R1[0]+R1[1]-1 equal to bits 32 to 32+R1[1] of R2 と設定する。本明細書では、R1[0]、R1[1]等は、レジスタR1の異なったフィール
ドの内容(例えば、2つのフィールドを有する64ビットレジスタの場合のR1[0]ビ
ット0-31、R1[1]ビット32-63)を示す。もちろん、本願明細書において記述され
る特定のビット位置は、規定の事柄である。数が、(例えば、最下位から最上位
への異なったシーケンスを有するまたは異なったフィールドサイズを有する)異
なった方法で表される場合、ビット位置も、対応して異なるであろう。また、R1
の値は、直接長さに等しい数である必要はないが、それらを、例えば、フィール
ドの長さまたは長さを導出することができる長さコードに等しくすることはでき
る。
【0032】 図4の場合、機能ユニットはR3を次のように設定する: − R3 bits 0 to R1[0]-1 equal to bits 0 to R1[0] of R2) − R3 bits R1[0] to R1[0]+R1[1]-1 equal to bits 16 to 16+R1[1] of R2
− R3 bits R1[0]+R1[1] to R1[0]+R1[1]+R1[2]-1 equal to bits 32 to − 32+R1[2] of R2 − R3 bits R1[0]+R1[1]+R1[2] to R1[0]+R1[1]+R1[2]+R1[3]-1 equal to bits 48 to R1[3] of R2 R1[0]、R1[1]等は、R1の異なったフィールドの内容(例えば、4つのフィールド
を有する64ビットレジスタの場合の、R1[0]ビット0-15、R1[1]ビット16-31、R1[
2]ビット32-47等)を示す。
【0033】 これらの演算は、第二ソースレジスタR2の多くのシフトされたバージョンをOR
処理することによって実現させることができる。例えば、図5の場合、Bitconcat
は R3= mask(0,R1 [0]1,R2) OR mask(32,32+R1[1],R2)<<(32-R1[0]) を生成する。ここで、mask(x,y,R)は、位置xからy-1までのビットを除いて、レ
ジスタRのビットをマスクすること(ゼロによる置換)を示す。"A<<B"は、Aのビ
ットをB位置分シフトすることを示し;OR A Bは、ビットごとのORを示し;C = O
R A Bの場合、位置0でのCからのビットは、位置0でのAとBからのビットと他の位
置に対するビットの論理ORである。
【0034】 図4の場合には、ORは次のように使用することができる: R3= mask(0,R1[0],R2) OR mask(16,16+R1[1],R2)<<(16-R1[0]) OR mask(32,32+R1[2],R2)<<(16-R1[0]-R1[1]) OR mask(48,48+R1[3],R2)<<(16-R1[0]-R1[1]-R1[2]) 図6に対しては: A= mask(0,R1[0],R2) OR mask(16,16+R1[1],R2)<<(16-R1[0]) B= mask(32,R1[2],R2) OR mask(48,48+R1[3],R2)<<(16-R1[2])) R3=mask(0,32,A) OR mask(32,64,B) マスクされているフィールドからのこれらのビットが、ソースレジスタR2におい
てすでにゼロであることは、既知であるので、マスク演算は、ビットを特定フィ
ールドから選択する選択演算によって置換させることができる。例えば、図5の
場合には R3= select0(R2) OR mask(select1(R2)<<(32-R1[0]) ここで、選択オペレータselect0とselect1は、2つの32ビットフィールドを有す
る64ビットレジスタの場合に、ビット0-31とビット32-64を選択する。これらの
選択演算は、R1[0]のような可変長パラメータを必要としないので、実施するの
がより容易である。
【0035】 Bitconcat命令がこのような方法で実施される場合、少なくとも一つの機能ユ
ニット12a-fの命令セットに"MASK_OP"命令を含ませる必要があるかもしれない。 MASK_OP R1,R2,R3 この命令を実行する機能ユニット12a-fは、ソースレジスタR1、R2と宛先レジス
タR3の内容を等しい長さフィールドのパックデータとして扱う。第一ソースレジ
スタR1のフィールドは、マスクされなければならないビットの数を符号化してい
る長さコードを含む。第二ソースレジスタR2のフィールドは、マスクされるデー
タを含む。機能ユニット12a-fは、パックされかつマスクされたデータを宛先レ
ジスタに書き込む: R3[0]=mask(0,R1[0],R2[0]) R3[1]=mask(0,R1[1],R2[1]) etc. マスクされるソースレジスタR2のビットが、ゼロになることが保証されていない
場合、圧縮のプログラムは、この場合 MASK_OP R1,R0,R2 Bitconcat R1,R2,R3 を読む。もちろん、マスクされるビットが常にゼロであることは判っている場合
には、MASK_OPは省略することが出来る。多くの圧縮プログラムが、このケース
に当たる。したがって、マスクを含むBitconcat演算は、圧縮に必要な命令の数
がより小さいという点で、有利である。実施するのがより簡単でかつより速いと
いう点で、マスクのないBitconcat演算は有利である;しかしながら、付加MASK_
OP命令が必要であるかもしれないが、これが常に当てはまる訳ではない。
【0036】 解凍命令は、本質的に圧縮命令の逆を行う。したがって、図4-6は、解凍命令
の演算も示す。ここで、非圧縮データフォーマット40、400、410の残りは、ゼロ
で満たされていることが好ましい。
【0037】 本発明によれば、プロセッサの少なくとも一つの機能ユニット12a-fは、解凍
に対する命令を含む命令セットを有する。この命令は、圧縮命令のように、パッ
クデータと共に機能する。圧縮に対する場合と同様に、一つのステップが、関連
する演算を実行する実行に使用される、すなわち、一つのレジスタからの異なっ
たパックされた数への演算が、並列に実行される。一般的に言って、宛先レジス
タへの書込みには、一つのステップが使用される。すなわち、パックデータの全
ては、単一番号として扱われるレジスタの内容の書き込みに使用される時間間隔
と同じ間隔中に一つのステップで書き込まれる。
【0038】 解凍命令が Bitsplit R1,R2,R3 により示されるプログラムの場合、この命令は、第一および第二ソースレジスタ
R1、R2と宛先レジスタR3を有する。第一ソースレジスタR1と結果レジスタR3の内
容は、パックデータR1[0], R1[1]等とR3[0], R3[1]等のフィールドとして扱われ
る。
【0039】 Bitsplit命令の種々のバージョンの効果は、"expand"機能を使用して後述され
る。Expand(a,b,R)は、ビット位置"a"から始まるレジスタRから"b"ビットを取り
、そして埋め込まれたゼロが続くこれらのbビットから始まる結果を発生させる
。例えば、(2つのフィールドを有するパックデータを使用する)図5に示される
解凍演算は、 R3[0]=expand(0,R1[0],R2) R3[1]=expand(R1[0],R1[1],R2) の効果を有する。オペランドから導出されないビット位置で、その結果をゼロで
埋め込むことは、必ずしも常に必要ではない。その例は、それらのビットが、プ
ログラム内の他の場所でいかなる重大な効果も生じさせない場合である。ゼロに
よる埋め込みが必要でない場合、Bitsplit命令は、 R3[0]=R2[0] R3[1]=R2[0]<<R1[0] により実現することができる。機能ユニットが、埋込み操作無しにBitsplit命令
のこのインプリメンテーションのみを提供し、かつ埋込み操作が必要な状況が発
生した時、プログラムはMASK_OPを含めて加算を提供することができる: Bitsplit R1,R2,R3 MASK_OP R1,R3,R4 図4の具体例の場合、4つのフィールドを有するパックデータを使用する解凍は、 R3[0]=expand(0,R1[0],R2) R3[1]=expand(R1[0],R1[1],R2) R3[2]=expand(R1[0]+R1[1],R1[2],R2) R3[3]=expand(R1[0]+R1[1]+R1[2],R1[3],R2) と言う効果を有する。これに代えて、図6の場合、4つのフィールドを、図5に対
して記述される型の2つの対として扱うことができる: R3[0]=expand(0,R1[0],R2) R3[1]=expand(R1[0],R1[1],R2) R3[2]=expand(32,32+R1[0],R2) R3[3]=expand(32+R1[0],32+R1[1],R2) (この例では、レジスタは、64ビット用に設計されている)。これらのどのケー
スの場合でも、ゼロによる埋込み操作が必要でない場合には、"expand"を、同じ
ソースフィールドに演算する異なったシフト演算によって置換させることができ
る。
【0040】 図9は、圧縮および/または解凍命令を実行する機能ユニットの一具体例を示
す。この機能ユニットは、第一中間レジスタ50と第二中間レジスタ51を含む。こ
の機能ユニットは、第二中間レジスタ51の出力に結合されている4つの並列カス
ケードを含む。各カスケードは、逐次、選択ユニット51a-d、シフトユニット52a
-d、マスクユニット53a-dを含む。マスクユニット53a-dの出力は、ORユニット54
に結合されている。さらに、機能ユニットは命令デコーダ58を含む。命令デコー
ダ58は、命令入力端と第一中間レジスタ50の出力端とに結合されている入力端を
有する。命令デコーダ58の出力端は、選択ユニット51a-dの制御入力端と、シフ
トユニット52a-dと、マスクユニット53a-dとに結合されている。
【0041】 図5に示される機能ユニットは、種々のシフト命令と、本発明に従って符号化
される可変長データを圧縮/解凍する命令とを実行することができる。
【0042】 動作中、プロセッサが命令を実行すると、オペコードが命令デコーダ58に供給
される。オペランドアドレスがレジスタファイルに供給され、これらのアドレス
によってアドレス指定が行われるオペランドが、それぞれ、第一および第二中間
レジスタ50、51にロードされる。
【0043】 命令デコーダ58は、オペコードを使用して、第二中間レジスタ51の第二オペラ
ンドを、単一番号として扱うべきかパックされたオペランドとして扱うべきかを
決定し、そして、後者の場合、第二オペランドは、フィールドに分割されなけれ
ばならない。
【0044】 選択ユニット52a-dは、各々、第二オペランドからビットのフィールドを選択
し、選択されたフィールドのビットをシフトユニット54a-dにパスし;他のビッ
トを、ゼロにする。フィールドの所望の数に基づいて、デコーダ58は、フィール
ドと、各選択ユニット53a-dが選択するフィールドのサイズとを制御する選択ユ
ニット53a-dに選択シグナルを供給する。例えば、第一および第二選択ユニット5
3a,bが、それぞれ第二オペランドのビットの第一および第二の半分を選択し、ま
たは第一〜四選択ユニット53a-dが、第二オペランドの四半分を逐次選択するこ
とができる。
【0045】 シフトユニット54a-dは、それらが選択ユニット53a-dから受信するビットをシ
フトさせる。原理的には、各シフトユニット53a-dは、中間レジスタ51と同じビ
ットを供給する。各シフトユニット53a-dによって遂行されるシフトの量は、第
一中間レジスタ50に格納されている第一オペランドと、オペコードとによって決
定される。各シフトユニット54a-dは、そのビットを異なった量シフトさせるこ
とが出来る。
【0046】 マスクユニット54a-dは、特定フィールドのビットのみをシフトユニット53a-d
からORユニットにパスさせ;他のビットをゼロにする。特定のフィールドga 、命令デコーダ58から供給されるオペコードが要求する信号によって選択される
【0047】 ORユニット55は、シフトユニット54a-dの出力にビットごとのOR処理を行う。
すなわち、シフトユニット54a-bによる語出力の各ビットは、他のシフトユニッ
ト54a-dによる語出力内の対応する位置からのビットにより論理的にOR処理が行
われている。ORユニット55の出力は、機能ユニットによる処理の結果を形成し、
命令によってアドレス指定が行われる結果レジスタに結果を書き込む、レジスタ
ファイルの書込みポートに結合されている。
【0048】 機能ユニットは、オペコードに応じて、種々のシフト命令を実行することがで
きる。例えば、全体として第二オペランドの内容に通常のシフトを必要とするオ
ペコードに応答して、命令デコーダは、次の制御を行う; − 第一選択ユニット52aが、第二中間レジスタ51からビットの全てを選択し
、他のシフトユニットは、全くビットを選択しないように制御し、 − シフト量を、第一中間レジスタ50から、第一シフトユニット53aの制御入
力端にパスさせることを可能にし、 − 第一マスクユニット54aが、第一シフトユニット53aからの全てのビットを
ORユニット55にパスさせる制御信号を受信し;他のマスクユニット54b-cは如何
なるビットもパスさせない。 同様に、第二オペランドの異なったフィールドからの個々の数に別個のシフトを
要求するオペコードに応答して: − 各選択ユニット52a-dを、第二中間レジスタ51の各フィールドからビット
を選択するように制御することを可能にし(例えば、第二オペランドの第一およ
び第二の半分、または第一、第二、第三および第四四半分); − シフト量を、第一中間レジスタ50の各フィールドから、各シフトユニット
53a-dの制御入力端にパスさせることを可能にし; − マスクユニット54a,bが、第一および第二シフトユニット53a,bからビット
の各フィールドをORユニット55にパスする制御信号を受信する。 より詳しくは、図4に示される圧縮に対する"bitconcat"命令の受信に応じて、命
令デコーダは、 − 第一および第二選択ユニット53a,bに、第二オペランドから第一および第
二フィールドを選択させ、 − 第一オペランドの長さコードから決定される、第一フィールドのビットの
所望の長さ分第一フィールドの長さを減らすことによってシフト量を決定し、 − 0シフト量を第一シフトユニット54aに、かつシフト制御信号としてのシフ
ト量を第二シフトユニット54bに供給し、 − 第一および第二マスクユニット54a,bに、第一および第二シフトユニット5
3a,bの両方から第一フィールドのビットのみをパスさせる。
【0049】 したがって、第二フィールドからのビットは、第一フィールドからのビットよ
り可変距離後の位置で連結される。例えば、第二オペランドの4つのフィールド
からフィールドの対を連結するために、または例えば、異なったサイズのフィー
ルドを連結するために、異なったbitconcat命令を実行する他のオペコードを、
適切な制御信号により実現することができる。同様に、3つ以上のフィールドか
らのビットの変数を、連結させることができる。後者の場合、第一オペランドは
、第二オペランドの各フィールドのビットのグループの長さ11、12、13の逐次合
計0、11、11+12、11+12+13を含むことができる。この場合、これらの合計を、シ
フトユニット53a-dによってシフト量を制御するために使用することができる。
これに代えて、長さ11、12、13そのものを第一オペランドに存在させても良い。
この場合、命令デコーダ58がそれ自身で合計を決定することができる。
【0050】 図4に示される解凍に対し、bitsplit命令に対する符号化を行うオペコードの
受信に応じて、命令デコーダ58は、 − 第一および第二選択ユニット53a,bに、第二オペランドから第一フィール
ドを選択させ、 − 第一オペランドの長さコードから決定されるビットの所望の長さ分第一フ
ィールドの長さを減らすことによってシフト量を決定し、 − シフト制御信号としてのシフト量を第二シフトユニット54bに、かつ0シフ
ト量を第一シフトユニット54aに供給し、 − 第一および第二マスクユニット54a,bに、それぞれ、第一および第二シフ
トユニット53a,bから第一および第二フィールドのビットのみをパスさせる。 分割命令によって生成される結果の第一フィールドから不必要なビットを抑制す
るために、この分割命令は、MASK_OP命令に先行することが好ましい。同様に、b
itconcat命令の第二オペランドの第一フィールドからの不必要なビットによる干
渉を抑制するために、このbitconcat命令を、MASK_OP命令の後に置いてもよい。
【0051】 これに代えて、フィールドの最初から開始するフィールド内のビットの調整可
能な数が選択されまたはパスされるように、選択ユニット52a-dおよび/または
マスクユニット54a-dを設けても良い。この場合、命令デコーダ58は、第一中間
レジスタの第一オペランドのフィールドから長さコードを、不必要なビットを抑
制するために必要なビットの数を制御するために、選択ユニット52a-dおよび/
またはマスクユニットに53a-dに供給することができる。このようなインプリメ
ンテーションにより、付加マスク命令をさらに必要とすることはない。
【0052】 これに代えて、MASK_OPの機能を、機能ユニットに含ませるることもできる。
この場合、何の付加MASK_OP命令も必要とされない。
【0053】 例えば、マスクユニット54a-dとORユニット55間のビットごとのAND回路(図示
せず)と共に、4つのマスク生成ユニット(図示せず)を機能ユニットに加える
ことができる。この場合、各マスクユニット54a-dごとにマスク生成ユニットが
存在する。各マスク生成ユニットは、その対応するマスクユニット54a-dによっ
て選択されるフィールドの各ビットに対して各ビットマスクを有する。マスク生
成ユニットは、第一オペランドから長さコードについての情報を受信し、受信さ
れた長さコードによって決定されるビット位置で多くの逐次ビットに対して論理
的に"1"であるマスクビットを生成する(ここで、MASK_OPは、上述したようにビ
ットをパスさせ、残りのマスクビットは論理的に"0"である)。これらのマスク
ビットは、マスクユニット54a-dの出力によりビットごとにAND処理され、その結
果はOR-ユニット54に供給される。
【0054】 このようにして、結果に貢献してはならないビットを、マスクさせることがで
きる。マスクビットの生成は、シフトユニット53a-dのそれと同様でかつそれら
のシフトユニットと並列に作動することができる複雑さを有する回路を必要とす
るので、命令の実行は、ビットごとのANDユニットによってわずかしか遅延しな
い。
【0055】 本発明から逸脱することなく、より大きいまたはより小さいレジスタにより、
より大きいまたはより小さい数のフィールドを用い、マスクユニットの有無にか
かわらず、種々の機能ユニットの実施を、実現することができることは、明らか
であろう。
【0056】 例えば、各マルチプレクサが、第二オペランドのビットのN個のビットに結合
されている入力(さらにオプションとしてロジック1とロジック0の入力)を有し
ている、命令デコーダと、結果のN出力ビットの各々に対する各N入力マルチプレ
クサとを含む機能ユニットが、使用されるかもしれない。命令デコーダは、第一
オペランドのフィールドのオペコードと長さコードに応じて、個々に各々のマル
チプレクサを制御するので、bitconcatまたはbitsplit命令の場合、適切な入力
端からのビットは、出力端のビットに供給される。命令デコーダは、各マルチプ
レクサを制御するNlogN-bitデータ語により、オペコードと長さコードの最下位
ビットによってアドレス指定が行われるROMとして実施されるかもしれない。ROM
の代わりに、等価論理回路を、使用することもできる。原理的には、このような
機能ユニットは、ビットの如何なるリシャッフリングも実現させることが出来る
が、もちろん、Nが大きい場合(例えば、64ビット)、bitconcatおよび/または
bitsplitに対応するリシャッフリングが実現されたリシャッフリングの中にある
、少数のリシャッフリングのみを実現することができる。
【0057】 このような機能ユニットにより、異なったフィールドからのビットを同じフィ
ールド内に共に配置することによってデータを圧縮するプログラムを実行するこ
とは、可能である。同じフィールドを、データが導出される複数のフィールドの
代りにそのフィールドのみを使用し、例えば、データを転送するまたは格納する
ために、続いて使用することができる。続いて、このデータを、データを複数の
フィールドに分割することによって解凍させることができる。この種のプログラ
ムが、bitconcatおよびbitsplitを有する命令および圧縮を実行するとき、圧縮
や解凍に必要な命令の数は減少するので、プログラムはより速くかつより小さく
なる。
【図面の簡単な説明】
【図1】データプロセッサを示す。
【図2】命令のフォーマットを示す。
【図3】パックデータフォーマットを示す。
【図4】圧縮データと解凍データを示す。
【図5】圧縮データと解凍データを示す。
【図6】圧縮データと解凍データを示す。
【図7】圧縮データと解凍データを示す。
【図8】圧縮データと解凍データを示す。
【図9】データを圧縮し解凍する命令を含む命令を実行する機能ユニットを示
す。
【符号の説明】 10 レジスタファイル 12a-f 機能ユニット 14 命令発行ユニット 30 レジスタ内容 40 解凍データフォーマット 42 圧縮データフォーマット 50 第一中間レジスタ 51 第二中間レジスタ 52a-d 選択ユニット 53a-d シフトユニット 54a-d マスクユニット 55 ORユニット
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 データプロセッサが、フィールドの各々からの数を別々に扱うよ
    うにさせる命令を実行するために、所定の同一フィールドに細分割することが可
    能な記憶ユニットを使用するデータプロセッサであって、 前記プロセッサの命令セットが、前記記憶ユニットの第一および第二ユニット
    のアドレス指定を行う位置を備えた命令を有し、 − それぞれ前記記憶ユニットの第一ユニットの前記フィールドの第一および第
    二フィールドから逐次ビットの第一および第二グループを取得することと、 − 前記シフトされた位置間のビット位置距離が、前記記憶ユニットの前記第二
    ユニットの内容によって制御されていて、結果記憶ユニット内の各シフトされた
    位置に逐次ビットの前記第一および第二グループを配置すること、 とにより前記命令に応答するように構成されているデータプロセッサにおいて、 前記第一および第二グループが、両者とも、結果記憶ユニットの前記フィール
    ドの第三フィールドに配置されていることを特徴とするデータプロセッサ。
  2. 【請求項2】 前記第一および第二グループが、それぞれ、前記フィールドの第
    一および第二フィールドの境界から始まり、前記第一グループが、前記第三フィ
    ールドの対応する境界から始まる位置に配置され、前記対応する境界に対する前
    記第二グループの位置が、前記記憶ユニットの第二ユニットの当該内容によって
    制御される、請求項1に記載のデータプロセッサ。
  3. 【請求項3】 各々が前記命令セットのそれ自身のサブセットを実行する、複数
    の機能ユニットを有し、シフト命令を含むサブセットを実行する前記機能ユニッ
    トの第一ユニットが、当該命令を実行するように構成されている、請求項1に記
    載のデータプロセッサ。
  4. 【請求項4】 前記機能ユニットの前記第一ユニットが、各々が、前記フィール
    ドを個別にシフトさせるシフト命令内の前記フィールドの各々の内容をシフトさ
    せる、各シフト回路を有し、前記命令が、当該第一グループをシフトさせる当該
    シフト回路の少なくとも一つを使用して実施される、請求項3に記載のデータプ
    ロセッサ。
  5. 【請求項5】 前記フィールドの第一および第二フィールドとは異なる、前記記
    憶ユニットの第一ユニットの前記フィールドの第四および第五フィールドから、
    逐次ビットの第三と第四グループを取得することによって、前記データプロセッ
    サが、当該命令に応答するように構成されていて、かつ 前記結果記憶ユニット内の前記フィールドの第四フィールド内の各シフトされ
    た位置の両者に逐次ビットの第三および第四グループを配置し、 前記シフトされた位置間のビット位置距離が、前記記憶ユニットの第二ユニッ
    トの内容によって制御されている、請求項1に記載のデータプロセッサ。
  6. 【請求項6】 データプロセッサが、フィールドの各々からの数を別々に扱う命
    令を実行させるために、所定の同一フィールドに細分割することが出来る記憶ユ
    ニットを使用するデータプロセッサであって、 前記プロセッサの命令セットが、前記記憶ユニットの第一および第二ユニット
    のアドレス指定を行う、位置を備えた命令を有し、 − 前記フィールドの第一フィールドから第一および第二グループが取得されて
    いる位置の間のビット位置距離が、前記記憶ユニットの第二ユニットの内容によ
    って制御されていて、前記記憶ユニットの第一ユニットから、逐次ビットの第一
    および第二グループを取得し、 − 逐次ビットの前記第一および第二グループを、結果記憶ユニット内の異なっ
    たフィールドの所定の位置に配置する ことにより、前記命令に対応するように構成されているデータプロセッサにおい
    て、 前記第一および第二グループが、両者とも、前記記憶ユニットの前記第一ユニ
    ットの前記フィールドの第一フィールドから取得されていることを特徴とするデ
    ータプロセッサ。
  7. 【請求項7】 前記第一グループが、前記第一フィールドの境界で始まる位置か
    ら取得されていて、前記第二グループが、前記記憶ユニットの前記第二ユニット
    の当該内容によって決定される前記境界に対する位置から取得されていて、前記
    第一および第二グループが、前記フィールドの第一および第二フィールドの対応
    する境界に各々配置されている、請求項6に記載のデータプロセッサ。
  8. 【請求項8】 各々が前記命令セットのそれ自身のサブセットを実行する、複数
    の機能ユニットを有し、シフト命令を含むサブセットを実行する前記機能ユニッ
    トの第一ユニットが、当該命令を実行するように構成されている、請求項6に記
    載のデータプロセッサ。
  9. 【請求項9】 前記機能ユニットの前記第一ユニットが、各々が、前記フィール
    ドを個別にシフトさせるシフト命令内の前記フィールドの各フィールドの内容を
    シフトさせる、各シフト回路を有し、前記命令が、シフト個々に前記フィールド
    当該第一グループをシフトする当該シフト回路の少なくとも一つを使用して実施
    される、請求項8に記載のデータプロセッサ。
  10. 【請求項10】 前記記憶ユニットの前記第一ユニットの前記フィールドの第二

    ィールドから、逐次ビットの第三および第四グループを両者とも取得することに
    よって、前記データプロセッサが、当該命令に応答するように構成されていて、 前記第三および第四および第二グループが、前記フィールドの前記第二フィー
    ルドから取得されている位置間の別のビット位置距離が、前記記憶ユニットの前
    記第二ユニットの内容によって制御されていて、 前記結果記憶ユニットの別の異なったフィールドの所定の位置に逐次ビットの
    前記第三と第四グループを配置する、請求項6のデータプロセッサ。
  11. 【請求項11】 データプロセッサが、フィールドの各々からの数を別々に扱う

    うにさせる命令を実行するために、所定の同一フィールドに細分割することが出
    来る記憶ユニットを使用するデータプロセッサによるデータ処理方法であって、
    − 前記記憶ユニットの第一および第二ユニットのアドレス指定を行う命令をロ
    ードすることと、 − 前記第一および第二記憶ユニットの前記フィールドをロードすることと、 − 前記記憶ユニットの前記第一ユニットからロードされた前記フィールドの第
    一および第二フィールドから、各々、逐次ビットの第一および第二グループを取
    得することと、 − 前記シフトされた位置間のビット位置距離が、前記記憶ユニットの前記第二
    一方の内容によって制御されていて、結果記憶ユニット内の各シフトされた位置
    に逐次ビットの前記第一および第二グループを配置することとを 有するデータの処理方法において、 前記第一および第二グループが、両者とも、結果記憶ユニットの前記フィール
    ドの第三フィールドに配置されていることを特徴とする方法。
  12. 【請求項12】 前記記憶ユニットの前記第二ユニットの当該内容の制御の下で

    変である、可変数のビットを使用して、前記結果記憶ユニットが、圧縮フォーム
    の前記フィールドの前記第一および第二フィールドからの情報を格納および/ま
    たは転送するために使用される、請求項11の方法。
  13. 【請求項13】 データプロセッサが、フィールドの各々からの数を別々に扱う

    うにさせる命令を実行するために、所定の同一フィールドに細分割することが出
    来る記憶ユニットを使用するデータプロセッサによるデータ処理方法であって、
    − 前記記憶ユニットの第一および第二ユニットのアドレス指定を行う命令をロ
    ードすることと、 − 前記第一および第二記憶ユニットの前記フィールドをロードすることと、 − 前記記憶ユニットの前記第一ユニットの前記フィールドから逐次ビットの第
    一および第二グループを取得することと、 前記第一および第二グループが、前記フィールドの前記第一フィールドから取
    得される位置間のビット位置距離が、前記記憶ユニットの前記第二ユニットの内
    容によって制御されていて、 − 結果記憶ユニットの異なったフィールドの所定の位置に逐次ビットの前記第
    一および第二グループを配置することとを、 有するデータの処理方法において、 前記第一および第二グループが、両者とも、結果記憶ユニットの前記フィール
    ドの第三フィールドに置かれていることを特徴とする方法。
  14. 【請求項14】 前記結果記憶ユニットが、前記フィールドの一つ内の圧縮情報

    読み込みおよび/または受信するために使用され、前記圧縮情報が、ビットの変
    数を使用するコーディングであり、かつ当該圧縮情報を前記異なったフィールド
    に広げる、請求項13に記載の方法。
  15. 【請求項15】 前記コンピュータプログラムが、ビットの変数によるコーディ

    グデータ語を含み、 前記方法が、記憶ユニットの前記第一および第二フィールドに、第一および第
    二のデータ語を配置する別の命令の生成と、前記データ語をビットの変数と組み
    合わせる当該命令の生成とを含む、請求項1に記載のデータプロセッサに対する
    コンピュータプログラムのコンパイル方法。
  16. 【請求項16】 前記コンピュータプログラムが、コード語のビットの可変の数

    よりコード化されたデータ語の復号化を含む、請求項6に記載のデータプロセッ
    サに対するコンピュータプログラムのコンパイル方法。
JP2000564120A 1998-08-06 1999-07-29 データプロセッサとデータ処理方法 Pending JP2002522821A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP98202647 1998-08-06
EP98202647.8 1998-08-06
EP98203382.1 1998-10-07
EP98203382 1998-10-07
PCT/EP1999/005519 WO2000008552A1 (en) 1998-08-06 1999-07-29 Data processor and method of processing data

Publications (1)

Publication Number Publication Date
JP2002522821A true JP2002522821A (ja) 2002-07-23

Family

ID=26150604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000564120A Pending JP2002522821A (ja) 1998-08-06 1999-07-29 データプロセッサとデータ処理方法

Country Status (4)

Country Link
US (1) US6438676B1 (ja)
EP (1) EP1046100A1 (ja)
JP (1) JP2002522821A (ja)
WO (1) WO2000008552A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012137428A1 (ja) * 2011-04-08 2012-10-11 パナソニック株式会社 データ処理装置、及びデータ処理方法
JP5168143B2 (ja) * 2006-06-15 2013-03-21 日本電気株式会社 プロセッサ、および、命令制御方法
KR20210095599A (ko) * 2020-07-15 2021-08-02 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 명령 수행 결과를 라이트백하기 위한 장치 및 방법, 프로세싱 장치
JP2022546615A (ja) * 2019-09-10 2022-11-04 アップル インコーポレイテッド 圧縮支援命令

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633969B1 (en) * 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7202872B2 (en) * 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US7457940B2 (en) * 2004-11-16 2008-11-25 International Business Machines Corporation System and method for managing data
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US8392174B2 (en) 2006-08-07 2013-03-05 International Characters, Inc. Method and apparatus for lexical analysis using parallel bit streams
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
CN107545066B (zh) 2011-12-08 2021-01-15 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
EP2972788B1 (en) * 2013-03-15 2019-08-21 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
EP3376371A1 (en) * 2017-03-16 2018-09-19 Nxp B.V. Microprocessor system and method for load and unpack and store and pack instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161148A (ja) * 1994-12-02 1996-06-21 Hitachi Ltd データ切り出し装置
WO1997032278A1 (en) * 1996-02-15 1997-09-04 Intel Corporation Computer implemented method for compressing 48-bit pixels to 16-bit pixels

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5423010A (en) * 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
ZA9510127B (en) 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
GB9509983D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5621674A (en) * 1996-02-15 1997-04-15 Intel Corporation Computer implemented method for compressing 24 bit pixels to 16 bit pixels
US6052769A (en) * 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6098087A (en) * 1998-04-23 2000-08-01 Infineon Technologies North America Corp. Method and apparatus for performing shift operations on packed data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161148A (ja) * 1994-12-02 1996-06-21 Hitachi Ltd データ切り出し装置
WO1997032278A1 (en) * 1996-02-15 1997-09-04 Intel Corporation Computer implemented method for compressing 48-bit pixels to 16-bit pixels

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5168143B2 (ja) * 2006-06-15 2013-03-21 日本電気株式会社 プロセッサ、および、命令制御方法
WO2012137428A1 (ja) * 2011-04-08 2012-10-11 パナソニック株式会社 データ処理装置、及びデータ処理方法
CN102884505A (zh) * 2011-04-08 2013-01-16 松下电器产业株式会社 数据处理装置、和数据处理方法
US8604946B2 (en) 2011-04-08 2013-12-10 Panasonic Corporation Data processing device and data processing method
CN102884505B (zh) * 2011-04-08 2016-01-20 松下电器产业株式会社 数据处理装置和数据处理方法
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法
JP2022546615A (ja) * 2019-09-10 2022-11-04 アップル インコーポレイテッド 圧縮支援命令
JP7385009B2 (ja) 2019-09-10 2023-11-21 アップル インコーポレイテッド 圧縮支援命令
US11822921B2 (en) 2019-09-10 2023-11-21 Apple Inc. Compression assist instructions
KR20210095599A (ko) * 2020-07-15 2021-08-02 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 명령 수행 결과를 라이트백하기 위한 장치 및 방법, 프로세싱 장치
KR102579097B1 (ko) 2020-07-15 2023-09-15 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 명령 수행 결과를 라이트백하기 위한 장치 및 방법, 프로세싱 장치

Also Published As

Publication number Publication date
US6438676B1 (en) 2002-08-20
EP1046100A1 (en) 2000-10-25
WO2000008552A1 (en) 2000-02-17

Similar Documents

Publication Publication Date Title
JP2002522821A (ja) データプロセッサとデータ処理方法
US11669330B2 (en) Method for performing random read access to a block of data using parallel LUT read instruction in vector processors
US7159100B2 (en) Method for providing extended precision in SIMD vector arithmetic operations
US7069423B2 (en) Microcomputer
EP0780760B1 (en) Data processing device with instruction set extension
JP3790619B2 (ja) 正値化処理及び飽和演算処理からなる丸め処理を好適に行うことができるプロセッサ
EP1267256A2 (en) Conditional execution of instructions with multiple destinations
US20050198471A1 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
EP1267257A2 (en) Conditional execution per data path slice
JP2009026106A (ja) 命令コード圧縮方法と命令フェッチ回路
EP0297897A2 (en) A microinstruction sequencer capable of instructing arithmetic, logical and data move operations in a conditional manner
JPH04172533A (ja) 電子計算機
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
US4347566A (en) Data processor with register file and arithmetic logic circuit on one chip and register means directly connected to the chip
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
EP1680735A2 (en) Apparatus and method that accomodate multiple instruction sets and multiple decode modes
JPH1165839A (ja) プロセッサの命令制御機構
JPH05150979A (ja) 即値オペランド拡張方式
JP2000322235A (ja) 情報処理装置
JP3727395B2 (ja) マイクロコンピュータ
JP3841820B2 (ja) マイクロコンピュータ
JP2006344238A (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP3765782B2 (ja) マイクロコンピュータ
JP4294190B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JPS60238932A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20060728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080825

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090225

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090225

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20100216

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20100217

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20100309

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20100330

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100414