JP4439455B2 - ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク - Google Patents

ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク Download PDF

Info

Publication number
JP4439455B2
JP4439455B2 JP2005291363A JP2005291363A JP4439455B2 JP 4439455 B2 JP4439455 B2 JP 4439455B2 JP 2005291363 A JP2005291363 A JP 2005291363A JP 2005291363 A JP2005291363 A JP 2005291363A JP 4439455 B2 JP4439455 B2 JP 4439455B2
Authority
JP
Japan
Prior art keywords
bit
string
bit string
bit stream
length
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.)
Active
Application number
JP2005291363A
Other languages
English (en)
Other versions
JP2006107508A (ja
Inventor
英次 岩田
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006107508A publication Critical patent/JP2006107508A/ja
Application granted granted Critical
Publication of JP4439455B2 publication Critical patent/JP4439455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Memory System (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、ビット操作、具体的にはビットストリーム中のデータを操作する技術に関する。
ビット操作はメモリ中のビット列に対して変更または操作をするプロセスであり、通常、ビット列のクリア、ビット列の検査、ビット列の比較、ビット列の反転、ビット列へのビットの挿入およびビット列からのビットの取り出しなどの処理を含む。初期のマイクロプロセッサの時代から、データビットの操作には、主にAND、OR、EOR、NOT、TEST、SHIFTおよびROTATEなどの命令が用いられてきた。
従来のシステムでは、汎用コンピュータは、可能な処理リソースの相当大きな部分を、エンコードおよびデコードアルゴリズムにおける可変長のビットストリームの取り扱いに費やすことがある。コンピュータは可変長のビットストリームをメモリ(このメモリはビットストリームバッファとして機能する)からレジスタへ直接ロードし、その後、データに対して、ビットの削除、ビットの移動(get)、およびビットのコピー(show)等のさまざまな処理を行う。レジスタのサイズによって、レジスタとメモリ間の対話は、多数のオペレーションを必要とする場合がある。ここで、機能を理解しやすいようにするために機能名のみを用いるが、例えば、従来の32ビットレジスタを用いて、対象となるビット列を適切な配置でレジスタに配置する「show_bits」という機能を実行するとき、対象となるデータが32ビット以下、かつメモリ中の32−bit境界を跨らない場合には、多数のオペレーション(例えば8つのオペレーション)が必要である。さらに、対象となるデータが32−bit境界を跨がる場合には、より多くのオペレーション(例えば13つのオペレーション)が必要となる。もちろん、命令の数およびビット境界は、プロセッサの命令セットのアーキテクチャに応じて変わりうる。
図1は、Nビットをコピーする(「Show_Bits(N)」)従来の方法の一例を示す。「Show_Bits(N)」に含まれる整数Nは、レジスタ中のビット数を示す。ビットストリームデータがシステムメモリのようなメモリ中にロードされており、Show_Bits(N)方法によって、ビットストリームの所定の数すなわちN個のビットをレジスタ中に配置またはロードする場合を例にする。各レジスタおよびメモリの位置は、32ビットのアドレスで示される。また、Show_Bitsコマンドでは、リクエストされたNビットがシステムメモリ中の32−bit境界を跨る場合と跨らない場合との2つの状況を考慮しなければならない。実際のメモリ位置のビットサイズは可変であり、バーチャルにアドレス指定もできる。通常、レジスタとシステムメモリとの違いは、レジスタが特定の種類の情報を保持するために使用される特定のアドレスを有するメモリであることにある。ビットストリームポインタは、ビットストリームデータが格納される特定のメモリアドレスを指定する。ビットストリームデータは非同期に到着してもよく、異なる長さを有してもよい。
例えば、95ビット目と63ビット目が32−bit境界にある(開始ビット位置が0ビット目とする)場合において、メモリ中の70ビット目から77ビット目までの位置にある1バイトをコピー(show)したいとする。これはNビットが32−bit境界を跨らない例である。従来のShow_Bits方法では、このNビットが32−bit境界を跨らないと判定されると、ビットストリームポインタによってアドレス指定されたメモリ位置にある、このNビットを含む内容が、32ビットレジスタにロードされる。図中MはNビットの末尾から次のメモリアドレス境界までのビット数を表す。70ビット目から77ビット目までの位置によって表されるメモリのバイトをコピー(show)したい場合には、Nビットの末尾と次の境界との差、すなわちNビットの末尾の77ビット目から95ビット目までのビット数であるMは18となる。次に、32ビットレジスタの内容は、論理的に左にMビット分シフトされる。これにより、レジスタの最上位ビットを含む部分が、コピー(show)したいNビットで占有される。本例において、Nは8である。そして、32ビットレジスタのこの部分の内容を(32−N)ビット分、ここでは24ビット分、論理的に右にシフトする。これによりビットストリームのうち該当するNビット部分のみが右詰めに配置した状態で32ビットレジスタ中に残り、他のすべてのビットストリームデータは32ビットレジスタからシフトアウトされたことになる。このように、この従来のShow_Bits方法では、通常少なくとも8つのオペレーションが必要である。この8つのオペレーションは、3回の算術演算(M+N、ビットストリームの最上位ビットのビット位置と32−bit境界との距離、および(32−N))、1回の比較(32との比較)、2回のシフト、1回のロード、適切なShow_Bits(N)ルーチンへの1回の分岐処理(比較の結果に基づく)である。
図2は、ビットストリームデータのNビットがメモリ中の32−bit境界を跨る、および/または32ビットより大きい場合の、従来のShow_Bits(N)方法の例を示す。127ビット目、95ビット目と63ビット目が32−bit境界にある(開始ビット位置が0ビット目とする)場合において、メモリ中の90ビット目から97ビット目までの位置にある1バイトをコピー(show)したいとする。これはNビットが32−bit境界を跨る例である。この場合において、対象となるNビットは2つのメモリ位置を占有している。従来の方法は、まず、このNビットを、2つの32ビットレジスタにロードする。Nビットのうち、最上位ビットを含む部分が、論理的に左にMビット分シフトされる。Mは、次のメモリ位置の32−bit境界までのビット数である。ここでは、Mは30であり、32−bit境界すなわち127ビット目と、Nビット中の最上位ビット位置97ビット目との差である。Nビットのうち、最下位を含む部分は、論理的に右に(64−M−N)ビット分シフトされる。次に、Nビットの最上位ビットを含む部分が論理的に(32−N)ビット分右にシフトされる。こうして2つのレジスタに対して、例えば論理OR演算等が実行されることによって、論理和が得られる。結果として、2つのレジスタのうちの一方のレジスタに、コピー(show)したいビットが保持される。この処理は、少なくとも13回のオペレーションを必要とする。この13回のオペレーションは、5回の算術演算((M+N)、ビットストリームポインタのビット位置と32−bit境界との差、(32−N)、(64−M)、および((64−M)−N))と、1回の論理OR演算、32より大きい比較対象値との比較、3回のシフト、2回のロード、および比較の結果を得た後に適切なShow_Bits(N)ルーチンへの1回の分岐処理である。
図3は、ビットストリームからN個のデータビットを削除する(「Delete_Bits(N)」ための従来の方法の例を示す。ビットストリームポインタがただ単にNビット分前方へ移動される。ビットストリームポインタにNを加えた値をビットストリームポインタに与えることによって、ビットストリームポインタを進める。これによって、このNビットはアドレス指定されることがもう無い。ビットを削除するには、1回の算術演算、すなわち(ビットストリームポインタ+N)だけが必要である。
図4は、メモリからビット列を移動(get)する(「Get_Bits(N)」)従来の方法の例を示す。これは、従来のDelete_Bits(N)と従来のShow_Bits(N)とを組み合わせた方法である。この方法により、Nビットは32ビットレジスタ中で右詰めに配置され、ビットストリームポインタは次のNアドレスまで進められる。この操作は、Show_Bits(N)が必要とするオペレーション数によって、少なくとも9回または14回のオペレーション演算を必要とする。
図5は、システムメモリのようなメモリの中にNビットを配置またはストアする「Put_Bits(N)」)の従来の方法の例を示す。まず、メモリの中に配置するNビット部分がメモリの32−bit境界を跨るか否かの判断をしなければならない。図5は、Nビットをメモリ中のビットストリームポインタが指す位置に配置したい場合を示す。図示のように、32−bit境界の終わりから、ビットストリームポインタによってアドレス指定された、Nビットをストアしようとするメモリ位置の始めまで、Mビットが存在する。MビットとNビットとの和が32以下である場合には、この32−bit境界を最先頭とするこのMビットの内容は32ビットレジスタにロードされ、そして、32ビットレジスタにおいて、論理的に右に(32−M)ビット分シフトされる。その結果、このMビットは右詰に配置される。次に、このMビットが論理的に(32−M)ビット分左にシフトされ、左詰めに配置される。その後、メモリにストアする対象となるNビットが右詰めに配置された32ビットレジスタから、このNビットが取り出される。その際、Nビットを含むレジスタにおいて、Nビットは論理的に(32−M−N)ビット分左にシフトされる。そして、たとえば論理0R演算などによって2つの32ビットレジスタの論理和が得られる。Nビットを含む演算結果がメモリにストアされる。この方法は少なくとも12のオペレーションを必要とする。この12のオペレーションは、4回の算術演算((M+N)、32−bit境界とビットストリームポインタとのビットの差など)、1回の比較、1回の論理OR演算、3回のシフト、1回のロード、1回のストア、および適切なPut_Bitsルーチンへの1回の分岐処理である。
図6は、Nビット部分がメモリ上の32−bit境界を跨る場合のPut_Bit(N)の従来の方法の例を示す。32−bit境界からビットストリームポインタまでのMビットが、32−bit境界を跨るNビットの内容とともに、32ビットレジスタにロードされる。このMビットを含む32ビットレジスタにおいて、Mビットは論理的に(32−M)ビット分右にシフトされる。次に、Nビットを含むレジスタにおいて、このNビットは論理的に(32−M)ビット分左にシフトされる。これによりMビットは左詰めに配置され、レジスタの他のビット位置には0が配置される。メモリにストアする対象となるNビットを含むレジスタにおいて、このNビットは論理的に(64−M−N)ビット分右にシフトされる。ただし、このシフトは、別のレジスタに、32−bit境界を越えるオーバフローをロードすることを伴う。Nビットを含むレジスタにおいて、このNビットは、再度、論理的に(M+N−32)ビット分右にシフトされる。シフトされたオーバフローを保持するレジスタと、左詰めにMビットを保持するレジスタと、元々Nビットを保持したレジスタとの内容は論理OR演算などが行われ、論理和が得られる。この結果はメモリにストアされる。これにより、Nビットは、メモリの中において、Mビットの次のメモリ位置を示すビットストリームポインタを開始位置にしてストアされる。この方法は、少なくとも17のオペレーションを必要とする。この17のオペレーションは、6回の算術演算(ビットストリームポインタの位置と32−bit境界との差、(32−M)、(64−M)、((64−M)−N)、(M+N)、および((M+N)−32)等)、1回の32より大きい比較対象値との比較、1回の論理OR演算、3回のシフト、3回のロード、2回のストア、適切なPut_Bits(N)ルーチンへの1回の分岐処理である。
このように、従来では、ビット操作は多数のオペレーションを必要とする。
本発明は、上記事情に鑑みてなされ、その目的は、ビット操作において、オペレーションの回数を減らし、効率の良いビット操作技術を提供することにある。
本発明にかかるひとつの態様は、所定のアドレスビット長を有するメモリにストアされたビットストリーム中のデータに対してビット操作を行う方法に関する。この方法は、ビットストリーム中のデータを、メモリから、メモリのアドレスビット長より長いビット長をもつバッファへ転送するステップと、ビットストリームデータがバッファにストアされている間に、ビットストリームデータを操作するステップとを含む。
ビットストリームデータを操作するステップは、レジスタにコピー(show)される対象であるビット列を所定の配置で配置するステップを含むことが好ましい。このステップには、バッファのビット長と、対象であるビット列のビット数との差に等しいビット数の分、バッファにストアされたビットストリームデータを論理的に右にシフトするステップが含まれてもよい。
また、ビットストリームデータを操作するステップには、移動(get)の対象であるビット列を、所定の配置でバッファに配置するステップが含まれてもよい。たとえば、レジスタのビット長と、移動(get)の対象であるビット列のビット数との和よりも、バッファ中の有効ビットの数が多い場合において、バッファにストアされたビットストリームデータを、バッファのビット長から、移動(get)の対象であるビット列のビット数を引いて得たビット長さの分、論理的に右にシフトするとともに、ビットストリームポインタを、移動(get)の対象であるビット列のビット数を含むアドレスを超える新しいアドレスに論理的にシフトする。
また、たとえば、ビットストリーム中の有効ビットの数が、レジスタのアドレスビット長と、移動(get)の対象であるビット列のビット数との和(以下である)場合においては下記のようにしてもよい。すわわち、移動(get)の対象であるビット列を含むメモリの内容を、それぞれのビット長がメモリのアドレスビット長よりも長いバッファおよびレジスタにロードする。そして、バッファにストアされたデータを、バッファの境界と、ビットストリームポインタが示すアドレスの最上位ビットとの間のビット数であるMビット分、論理的に左にシフトするとともに、バッファのビット長とMとの差の分、レジスタにロードされた内容を論理的に右にシフトする。次に、バッファとレジスタの内容に対して論理和演算を行って、論理和演算の結果をバッファにストアする。さらに、バッファのビット容量から、移動(get)の対象であるビット列のビット数を引いた得た分、バッファにストアされた内容を論理的に右にシフトするとともに、ビットストリームポインタを、移動(get)の対象であるビット列のビット数を保持するアドレスを超える新しいアドレスに論理的にシフトする。
また、ビットストリームデータをバッファにストアする前に、このビットストリームデータをレジスタに移動(put)するようにしてもよい。たとえば、バッファ中の無効ビットの数が、バッファに移動(put)しようとするビット列のビット数より多いとき、バッファ中に移動(put)するビット列をまずレジスタにストアする。そして、バッファ中の無効ビットの数から、バッファの中に移動(put)するビット列のビット数を引いて得たビットの長さの分、レジスタにストアされたデータを論理的に左にシフトする。最後にバッファとレジスタとの論理和演算を行って、その結果をバッファにストアする。
一方、バッファ中の無効ビットの数が、バッファに移動(put)しようとするビット列のビット数以下であるときには、バッファに移動(put)しようとするビット列の第1の部分を第1のレジスタにストアするとともに、バッファに移動(put)しようとするビット列のビット数から、バッファ中の無効ビットの数を引いて得たビットの長さの分、第1のレジスタにストアされたデータを論理的に右にシフトする。そして、第1のレジスタとバッファの内容の論理和演算をし、その結果をメモリにストアする。また、バッファに移動(put)しようとするビット列の第2の部分を第2のレジスタにストアするとともに、バッファのビット長と、バッファに移動(put)しようとするビット列のビット数との差に、バッファ中の無効ビットの数を足して得たビット長さの分、第2のレジスタにストアされたデータを論理的に左にシフトする。最後に、第2のレジスタの内容をバッファにストアする。
本発明の他の態様では、ビットストリームデータを操作するステップには、バッファからビットを削除することが含まれてもよい。たとえば、ビットストリーム中の有効ビットの数が、レジスタのアドレスビット長と、削除しようとするビットの数との和より多い場合において、削除しようとするビットの数の分、バッファにストアされたデータを論理的に左にシフトする。また、ビットストリーム中の有効ビットの数が、レジスタアドレスのビット長と、削除しようとするビットの数との和以下である場合においては、メモリ中の、削除しようとするビットを含む内容を、それぞれのビット長がメモリアドレスのビット長より長い第1のレジスタおよび第2のレジスタにロードする。そして、バッファの境界と、ビットストリームポインタが示すアドレスの最上位ビットとの差のビット数であるMビットの分、第1のレジスタにロードされたデータを論理的に左にシフトするとともに、バッファのビット容量とMとの差の分、第2のレジスタにロードされたデータを論理的に右にシフトする。最後に、第1のレジスタと第2のレジスタの内容に対して論理和演算を行って、その結果をバッファにストアする。
本発明の別の態様は、所定のアドレスビット長を有するメモリにストアされたビットストリーム中のデータに対してビット操作を行うプロセッサに関する。このプロセッサは、ビットストリーム中のデータを、メモリから、メモリのアドレスビット長よりも長いビット長を有するバッファへ転送するとともに、ビットストリームデータがバッファにストアされている間にビットストリームデータを操作するようにプログラミングされている。
ビットストリームデータに対する操作は、レジスタにコピー(show)される対象であるビット列を所定の配置で配置することを含むことができる。また、プロセッサは、移動(get)の対象であるビット列を、所定の配置でバッファに配置するようにしてもよい。さらに、プロセッサは、ビットストリームデータをバッファに移動(put)する前に、ビットストリームデータをレジスタにストアするようにしてもよい。プロセッサは、バッファからビット列を削除することもできる。
本発明の別の態様は、所定のアドレスビット長を有するメモリにストアされたビットストリーム中のデータに対するビット操作をプロセッサに実行せしめる命令を格納した記憶媒体に関する。これらの命令は、ビットストリーム中のデータをメモリから、メモリのアドレスビット長よりも長いビット長を有するバッファへ転送するとともに、ビットストリームデータがバッファにストアされている間にビットストリームデータを操作する処理をプロセッサに実行せしめる。
本発明のさらなる別の態様は、ビットストリームデータに対するビット操作を行うシステムに関する。このシステムは、所定のアドレスビット長を有し、データをビットストリーム中ストアするメモリと、メモリのアドレスビット長より長いビット長を有するバッファを含むプロセッサとを備える。プロセッサは、ビットストリーム中のデータを、メモリから、メモリのアドレスビット長より長いビット長を有するバッファへ転送するとともに、ビットストリームデータがバッファにストアされている間にビットストリームデータを操作するようにプログラミングされている。メモリとプロセッサは、単一なチップ上に集積されてもよいし、別個に設けられてもよい。
本発明の別の態様は、ビットストリームデータに対するビット操作を行コンピュータ処理システムを提供する。このコンピュータ処理システムは、ユーザ入力デバイスと、表示装置を接続するためのディスプレイインターフェースと、所定のアドレスビット長を有し、ビットストリームの形でデータをストアするメモリと、1つ以上の処理エレメントを有するプロセッサとを含む。少なくとも1つの処理エレメントは、メモリのアドレスビット長より長いビット長を有するバッファを備え、プロセッサは、ビットストリーム中のデータを、メモリから、メモリのアドレスビット長より長いビット長を有するバッファへ転送するとともに、ビットストリームデータがバッファにストアされている間にビットストリームデータを操作するようにプログラミングされている。
本発明の別の態様は、ビットストリームデータに対するビット操作を行うコンピュータのネットワークに関する。このコンピュータのネットワークは、通信ネットワークを介して互いに接続された複数のコンピュータ処理システムを有する。各コンピュータは、ユーザ入力デバイスと、表示装置を接続するためのディスプレイインターフェースと、所定のアドレスビット長を有し、ビットストリームの形でデータをストアするメモリと、1つ以上の処理エレメントを含むプロセッサとを備える。少なくとも1つの処理エレメントは、メモリのアドレスビット長より長いビット長を有するバッファを備え、プロセッサは、ビットストリーム中のデータをメモリから、メモリのアドレスビット長より長いビット長を有するバッファへ転送するとともに、ビットストリームデータがバッファ中にストアされている間にビットストリームデータを操作するようにプログラミングされている。
上述したビット操作の各ステップを広い範囲の処理システムで実行することができる。たとえば、例えばマルチプロセッサシステムで実行してもよい。
なお、前述した構成要素の任意の組合せ、本発明の表現を装置、方法、システム、コンピュータプログラム、プログラムを記憶した記憶媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明の態様によるビット操作技術は、可変長エンコードおよびデコードのためのビットストリーム処理技術を改善する。この技術は、データ処理中に行われるオペレーションの回数を減少するために開発された高速なビット操作スキームに関する。例えば、本発明の態様によれば、上述したShow_Bits(N)機能は、対象となるデータがメモリ境界を跨るか否かに関わらず、2回のオペレーションで実現することができる。
本発明は、1つの追加のレジスタを、ビットストリーム用のバッファとして実装する。まず、対象となるビットストリームがバッファレジスタにロードされ、ビットストリーム中の有効ビットの数(以下「RestBits」という)が後に使用するために記録される。バッファレジスタの長さはとくに上限が無く、33ビット以上であることが好ましい。ビットストリームの処理は、要求された機能に応じて、バッファのみ、またはバッファと標準レジスタ両方が用いられる。RestBits値は、論理シフト等を実行する際に利用、更新される。本発明のアーキテクチャおよび原理は、上述したDelete_Bits(N)機能、Get_Bits(N)機能、およびPut_Bits(N)機能等の他のビット操作機能にも適用できる。これら機能を本発明のビット操作技術で実行することによって、処理速度において大幅な改善を図ることができる。
もちろん、本明細書で参照する特定の機能名、例えばGet_Bits(N)、Put_Bits(N)、Delete_Bits(N)等は、本発明の理解を容易にするためのものであり、周知の用語または産業用語である必要がない。本明細書においてこれらの用語を例として用いたが、本発明の適用できる機能は、これらの例の機能に限られることがない。
図7は、本発明の実施の形態にかかるShow_Bits(N)の方法を示す。初期化時において、対象となるビットストリームがメモリから、これらのビットストリームを保持するバッファとして機能するレジスタにロードされる。レジスタの再左端のビットが、ビットストリームポインタにより示されるメモリ位置の最左端ビットで占有される。このレジスタは、ビットストリームを反映するデータを保持するので、バッファとして指定することができる。バッファは32ビットより長いデータを保持することが好ましく、図7の例ではこのバッファは64ビットである。図7に示すShow_Bits(N)方法では、64−bitバッファへの64ビットのデータのロードは、1回のレジスタロード動作を必要とする。本明細書で使用するRestBitsは、バッファ中の有効ビットの数を意味する。例えば、64−bitバッファへのロードはRestBitsの値を64にする。その代わりに、33−bitバッファへのロードはRestBitsの値を33にする。
バッファにデータをロードした後、データのNビットをコピー(show)するために、バッファのビット数から、コピーするビット列のビット数すなわちNを引いたビット数の分、ロードしたデータを論理的に右にシフトする。64−bitバッファからNビットをコピー(show)するには、(64−N)ビット分、論理的に右にシフトする必要がある。その結果、図7に示すShow_Bits(N)は、1回の算術演算と1回のシフトの2回のオペレーションのみで実現される。この論理的右シフトの結果は、特にバッファとして指定されていない64−bitレジスタの中に示される。バッファとして指定しないのは、レジスタオペレーション後には技術的にもうビットストリームを反映しないためである。
図8は、ビットストリーム中の有効ビットの数、すなわちRestBitsが、(32+N)ビットより多い場合において、本発明の態様によるGet_Bits(N)方法を示す。図8の例において、例としてバッファは64−bitバッファである。ビットストリーム中の対象となる部分の内容がバッファにロードされた後、このレジスタにおいて、レジスタの長さからNビットを引いたビットの長さの分右にシフトされる。図示のように、64−bitバッファの場合、これによって、バッファの上記内容は(64−N)ビット分、論理的に右にシフトされる。この論理右シフトの結果は、特にバッファとして指定されていない64−bitレジスタの中に示される。64−bitレジスタをバッファとして指定しないのは、レジスタオペレーション後に技術的にはもうビットストリームを反映しないためである。そしてビットストリームポインタは、Nビットを含むアドレスの前のアドレスに論理的にシフトされることによって、Nビットの前に進められる。ビットストリームポインタがNビットの前に進められているので、64−bitレジスタは再びビットストリームを反映するようになるので、図8に示すバッファとして指定される。RestBitsの値は、バッファがもうNビットを示していないことを反映するように更新される。結果として、RestBitsの値は(RestBits−N)に更新される。この方法が必要とするオペレーションの最少回数は7回である。この7回のオペレーションは、3回の算術演算(本例では(32+N)、(64−N)、(RestBits−N))、1回の比較、2回のシフト(バッファのシフトとビットストリームポインタのシフト)、RestBitsが(32+N)より多いと確認された後に適切なGet_Bits(N)ルーチンへの1回の分岐処理である。
図9は、RestBitsが(32+N)以下である場合において、本発明の態様によるGet_Bits(N)方法を示す。メモリの該当する部分の内容は2つのレジスタにロードされる。図9の例では2つの64−bitレジスタを用いる。最上位ビット情報を保持するレジスタの下位半分は、Mビット分論理的に左にシフトされる。ここで、Mは、64−bit境界からのビット数である。もう一方の64−bitレジスタは、レジスタのビット容量からMビットを引いて得たビット数すなわち(64−M)ビット分、論理的に右にシフトされる。そして、2つのレジスタの内容の論理和演算(論理OR等)が行われ、その結果はバッファにストアされる。バッファにストアされた内容は、レジスタのビット容量からNを引いて得たビット数、図9の例では(64−N)ビットの分、論理的に右にシフトされる。その後、ビットストリームポインタは、もうNビットを示すないように、Nビット分論理的に左にシフトされる。RestBitsの値は、レジスタ中のビット数からNを引いて得たビット数(図9の例では(64−N)ビット)を反映するように更新される。
図10は、バッファ中の無効ビット数がNよりも多い場合において、本発明の態様によるPut_Bits(N)方法を示す。ここで、バッファ中の無効ビット数をI−Restbitsという。開始時に空である64−bitiバッファにストアしようとするNビットは、64−bitレジスタにストアされている。レジスタにストアされたこのデータを、I−RestbitsからNを引いて得たビット数の分、論理的に左にシフトする。このシフトの結果とバッファの論理和演算(論理OR等)が行われ、Nビットはバッファにストアされる。I−Restbitsの値は((I−Restbits)−N)となる。このPut_Bits(N)方法は、5回のオペレーションを必要とする。この5回のオペレーションは、1回の算術演算、1回の論理演算、1回の比較、1回のシフト、I−RestbitsがNより大きい判断結果ことに基づく適切なPut_Bits(N)ルーチンへの1回の分岐処理である。
図11は、無効ビット数I−RestbitsがNより小さい場合のPut_Bits(N)方法を示す。初期状態においてバッファは空である。32ビットより大きなサイズを有するレジスタ例えば64−bitレジスタ中のNビットは、(N−(I−Restbits))分、論理的に右にシフトされる。シフトアウトされたデータは別の64ビットレジスタ中に配置されるとともに、(64−N+(I−Restbits))分、論理的に左にシフトされる。右シフトが行われたレジスタとバッファの内容は論理和演算(論理OR等)が行われる。本例では、バッファの有効ビット数は(64−Restbits)である。NがI−RestBitsより大きいので、Nビットは2つの部分に分けられ、以下の処理が行われる。まず、Nビットの左部分を、バッファ中の内容と結合するためにレジスタにストアする。次に、Nビットの右部分を、一時的に第2のレジスタにストアする。先のレジスタの値がバッファに置かれた後、バッファがフルとなるため、バッファの内容はメモリにストアされる。このオペレーションの後、第2のレジスタの内容はバッファにストアされ、RestBitsは再度初期化される。
図12は、RestBitsが(32+N)より大きい場合のDelete_Bits(N)方法を示す。ここではRestBitsが常に32より大きいと仮定する。バッファはNビット分論理的に左にシフトされ、ビットストリームからNビットの削除を反映する。これには5回のオペレーション、すなわち2回の算術演算と、1回のシフトと、1回の条件付けと、適切なビット削除ルーチンへの1回の分岐処理を必要とする。
図13は、RestBitsが(32+N)より小さい場合のバッファレジスタを用いたDelete_Bits(N)方法を示す。図13は、64−bitレジスタを用いたDelete_Bits(N)の例である。ビットストリームポインタは、メモリ中の内容の最後のビットが32−bit境界からMビット離れている位置のメモリのアドレスを示す。バッファから削除すべきNビットを含むメモリの内容は、2つの64−bitレジスタにストアされる。ビットストリームポインタでアドレス指定されたメモリ位置に含まれるビットを含むレジスタは、Mビット分、論理的に左にシフトされる。もうひとつの64−bitレジスタは(64−M)ビット分右にシフトされる。2つの64−bitレジスタの論理和演算(論理OR等)がバッファ中で行われる。ビットストリームポインタは、削除すべきNビットを含まないアドレスまで進められる。このDelete_Bits(N)方法では12回の演算、すなわち4回の算術演算、1回の論理OR演算、1回の比較、3回のシフト、2回のロード、1回の分岐処理を必要とする。
本発明の各種態様によるビット操作手順は、さまざまな処理システム上で実行することができる。例えば、ビット操作はスタンドアロン型の処理システム上で実行できる。またマルチプロセッサシステム上でも実行できる。図14において、本発明のビット操作の実行に使用できるマルチプロセッサシステムの一例を示す。
図14はひとつの処理エレメントを示す。この処理エレメント200は、I/Oインターフェース202と、処理ユニットPU204と、ダイレクトメモリアクセスコントローラDMAC206と、複数のサブ処理ユニットSPU208と、メモリインターフェース210とを含む。処理エレメント200はDRAM214と通信する。処理エレメント200のより詳細な説明は、2001年3月22日に出願された米国特許出願第09/816,004号と米国特許出願第09/816,020号を参照することができ、ここで省略する。
図15は、サブ処理ユニットSPU208の一例を示す。各SPU208は、ローカルメモリ250と、レジスタ252と、浮動小数点ユニット254と、整数ユニット256と、バスインターフェース258とを備える。本発明の各種態様に従うビット操作処理は、図14の処理エレメント200の異なる場所において実行でき、例えば処理ユニットPU204においても実行できる。本発明のビット操作技術は、任意のサブ処理ユニットSPU208において実行できる。さらに、本発明のビット操作技術は複数のプロセッサを備えるシステムにも適用することができ、複数の処理エレメントを有するシステムにおけるひとつまたは複数の選択された処理エレメントにおいて実行できる。
図16は、本発明の態様にしたがって、単独にまたはネットワーク環境中で使用可能な様々なコンピュータデバイスを示すコンピュータのネットワーク300の概略図である。これらのコンピュータデバイスは、一般的なPC(パーソナルコンピュータ)、ラップトップ、サーバ、ゲーム機、PDAなどで使用されるさまざまなユーザ入力デバイス、表示装置、メモリ、プロセッサなどを用いたコンピュータ型装置を含むことができる。例えば、図16に示すコンピュータのネットワーク300は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、インターネット等の通信ネットワーク370を介して、有線、無線、有線と無線の組合わせなどによって接続された複数のコンピュータ処理システム310、320、330、340、350および360を備える。
各コンピュータ処理システムは、例えばキーボード311およびマウス312(並びにペン入力装置、ジョイスティック、ボタン、タッチスクリーン等の他の各種の公知の他のタイプの入力装置)を有する1つ以上のコンピュータデバイスと、CRT、LCD、プラズマスクリーンモニタ、TV、プロジェクタなどの表示装置314へ接続するためのディスプレイインターフェース313(コネクタ、ポート、カード等)とを備えることができる。各コンピュータはまた、望ましくは、このようなデバイスによく用いられ、コンピュータ処理システム中に配置される1つ以上のメモリや、1つ以上のプロセッサなどの通常の処理コンポーネントを含む。このようなコンピュータデバイスの中のメモリおよびプロセッサに対して、上述した本発明の各種態様によるビットストリーム中のデータのビット操作を実行することができる。メモリとしては、ビットストリームデータをストアするメモリ、ビットストリームデータから転送されたデータを受信するバッファメモリ、および本発明の態様の通り、ストア、転送、およびビットストリーム操作をプロセッサに実行させる命令を格納するメモリが含まれる。
このように、本発明によるビット操作技術は、多くの場合において、さまざまなビットストリームを処理する従来の方法よりも大幅な効率向上を図ることができる。レジスタが大サイズであるほど、処理は効率的になる。レジスタおよびビットストリームバッファは64ビット以上であることが好ましく、128ビット以上であることがより好ましい。
以上、特定の実施形態を参照して本発明を説明したが、これら実施形態は本発明の主旨および応用を例示するものに過ぎない。上述した本発明のビット操作技術は、データの高速かつ反復的な操作が要求されるオーディオ/ビデオコーダ−デコーダ(CODEC)およびビデオゲーム等に特に適用することできる。したがって、上記の実施の形態の例に種々の変形を加えることが可能であり、本発明の主旨から逸脱しない限り、さまざまな他の構成を用いてもよい。
従来のビット操作機能の例を示す図である。 ビットストリームデータのNビットがメモリの32−bit境界を跨る場合、および/または32ビットより長いビット長さを有する場合における従来のビット操作機能の例を示す図である。 ビットストリームからN個のデータビットを削除する従来のビット操作機能の例を示す図である。 従来のビット操作機能の例を示す図である。 メモリにNビットをストアする従来のビット操作機能の例を示す図である。 従来のビット操作機能の他の例を示す図である。 本発明の一つの態様によるビット操作機能を示す図である。 ビットストリーム中の有効ビット数が(32+N)より多い場合における、本発明の一つの態様によるビット操作機能を示す図である。 ビットストリーム中の有効ビット数が(32+N)より少ない場合における、本発明の一つの態様によるビット操作機能を示す図である。 バッファ中の無効ビット数がNより多い場合における、本発明の一つの態様によるビット操作機能を示す図である。 バッファ中の無効ビット数がNより少ない場合における、本発明の一つの態様によるビット操作機能を示す図である。 ビットストリーム中の有効ビット数が(32+N)より多い場合における、本発明の一つの態様によるビット操作機能を示す図である。 「RestBits」が(32+N)より少ない場合の、本発明の一つの態様によるビット操作機能を示す図である。 本発明の態様によるビット操作を実行することができる処理システムの例を示すブロック図である。 本発明の態様によるビット操作を実行することができる処理システムの例を示すブロック図である。 本発明の態様によるコンピュータのネットワークを示す概略図である。
符号の説明
100 処理エレメント、 202 I/Oインターフェース、 204 処理ユニットPU、 206 DMAC、208 サブ処理ユニットSPU、 210 メモリインターフェース、 214 DRAM、 250 ローカルメモリ、 252 レジスタ、 254 浮動小数点ユニット、 256 整数ユニット、 258 バスインターフェース、 300 コンピュータのネットワーク、 310 コンピュータ処理システム、 311 キーボード、 312 マウス、 313 ディスプレイインターフェース、 314 表示装置、 320 コンピュータ処理システム、 330 コンピュータ処理システム、 340 コンピュータ処理システム、 350 コンピュータ処理システム、 360 コンピュータ処理システム、 370 通信ネットワーク。

Claims (19)

  1. メモリにストアされたビットストリーム中のデータに対してビット操作を行うビット操作方法であって、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、
    を含み、
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするビット操作方法。
  2. 前記第1操作ステップは、前記第1のビット操作として、前記ビットストリーム中の移動対象のビット列をその移動先となる所定のレジスタに移動すべきとき、前記ビットストリームデータの有効ビット列から前記移動対象のビット列を前記レジスタに転記するとともに、前記有効ビット列から前記移動対象のビット列を除外することを特徴とする請求項1に記載のビット操作方法。
  3. 記ポインタ調整ステップは、前記ビットストリームデータの有効ビット列から前記移動対象のビット列が前記レジスタに転記されたとき、前記ビットストリーム中のデータから前記移動対象のビット列を除外するように、前記ビットストリームポインタが指し示す前記メモリ内の位置をシフトさせることを特徴とする請求項に記載のビット操作方法。
  4. 前記判定ステップは、前記第1のビット操作の実行後、前記第2のビット操作として、前記ビットストリーム中の移動対象のビット列をその移動先となる所定のレジスタに移動すべきとき、前記ビットストリームデータの有効ビット列の長さが前記移動対象のビット列の長さに32ビットを足した長さより大きいか否かを判定し、
    前記第2操作ステップは、前記ビットストリームデータの有効ビット列の長さが前記移動対象のビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームの有効ビット列から前記移動対象のビット列を前記レジスタに転記するとともに、前記有効ビット列から前記移動対象のビット列を除外することを特徴とする請求項1からのいずれかに記載のビット操作方法。
  5. 前記第1操作ステップは、前記第1のビット操作として、前記ビットストリーム中の削除対象のビット列を削除すべきとき、前記ビットストリームデータの有効ビット列から前記削除対象のビット列を除外することを特徴とする請求項1に記載のビット操作方法。
  6. 記ポインタ調整ステップは、前記ビットストリームデータの有効ビット列から前記削除対象のビット列が除外されたとき、前記ビットストリーム中のデータから前記削除対象のビット列を除外するように、前記ビットストリームポインタが指し示す前記メモリ内の位置をシフトさせることを特徴とする請求項に記載のビット操作方法。
  7. 前記判定ステップは、前記第1のビット操作の実行後、前記第2のビット操作として、前記ビットストリーム中の削除対象のビット列を削除すべきとき、前記有効ビット列の長さが前記削除対象のビット列の長さに32ビットを足した長さより大きいか否かを判定し、
    前記第2操作ステップは、前記ビットストリームデータの有効ビット列の長さが前記削除対象のビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームの有効ビット列から前記削除対象のビット列を除外することを特徴とする請求項1、5または6に記載のビット操作方法。
  8. メモリにストアされたビットストリーム中のデータに対してビット操作を行うプロセッサであって、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、
    を実行し、
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするプロセッサ。
  9. 前記第1操作ステップは、前記第1のビット操作として、前記ビットストリーム中の移動対象のビット列をその移動先となる所定のレジスタに移動すべきとき、前記ビットストリームデータの有効ビット列から前記移動対象のビット列を前記レジスタに転記するとともに、前記有効ビット列から前記移動対象のビット列を除外することを特徴とする請求項に記載のプロセッサ。
  10. 前記判定ステップは、前記第1のビット操作の実行後、前記第2のビット操作として、前記ビットストリーム中の移動対象のビット列をその移動先となる所定のレジスタに移動すべきとき、前記ビットストリームデータの有効ビット列の長さが前記移動対象のビット列の長さに32ビットを足した長さより大きいか否かを判定し、
    前記第2操作ステップは、前記ビットストリームデータの有効ビット列の長さが前記移動対象のビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームの有効ビット列から前記移動対象のビット列を前記レジスタに転記するとともに、前記有効ビット列から前記移動対象のビット列を除外することを特徴とする請求項またはに記載のプロセッサ。
  11. 前記第1操作ステップは、前記第1のビット操作として、前記ビットストリーム中の削除対象のビット列を削除すべきとき、前記ビットストリームデータの有効ビット列から前記削除対象のビット列を除外することを特徴とする請求項から10のいずれかに記載のプロセッサ。
  12. 前記判定ステップは、前記第1のビット操作の実行後、前記第2のビット操作として、前記ビットストリーム中の削除対象のビット列を削除すべきとき、前記有効ビット列の長さが前記削除対象のビット列の長さに32ビットを足した長さより大きいか否かを判定し、
    前記第2操作ステップは、前記ビットストリームデータの有効ビット列の長さが前記削除対象のビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームの有効ビット列から前記削除対象のビット列を除外することを特徴とする請求項から11のいずれかに記載のプロセッサ。
  13. メモリにストアされたビットストリーム中のデータに対するビット操作をプロセッサに実行せしめる命令を格納する記憶媒体であって、
    前記命令は、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、
    をプロセッサに実行せしめ
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とする記憶媒体。
  14. ビットストリーム中のデータに対してビット操作を行うシステムであって、
    データをビットストリーム中にストアするメモリと、
    前記ビットストリーム中のビット列を保持すべきレジスタであるバッファを備えたプロセッサと、を有し、
    該プロセッサは、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、を実行し、
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするシステム。
  15. 請求項14に記載のシステムにおいて、
    前記メモリと前記プロセッサは、単一なチップ上に集積されていることを特徴とするシステム。
  16. 請求項14に記載のシステムにおいて、
    前記メモリと前記プロセッサは、互いに独立にして設けられたことを特徴とするシステム。
  17. ビットストリーム中のデータに対してビット操作を行うコンピュータ処理システムであって、
    ユーザ入力デバイスと、
    表示装置を接続するためのディスプレイインターフェースと、
    データをビットストリーム中にストアするメモリと、
    1つ以上の処理エレメントを有するプロセッサとを備え、
    少なくとも1つの前記処理エレメントは、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファを備え、
    前記プロセッサは、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、を実行し、
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするコンピュータ処理システム。
  18. ビットストリーム中のデータに対してビット操作を行うコンピュータのネットワークであって、
    通信ネットワークを介して互いに接続された複数のコンピュータ処理システムを有し、
    各前記コンピュータは、
    ユーザ入力デバイスと、
    表示装置を接続するためのディスプレイインターフェースと、
    データをビットストリーム中にストアするメモリと、
    1つ以上の処理エレメントを有するプロセッサとを備え、
    少なくとも1つの前記処理エレメントは、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファを備え、
    前記プロセッサは、
    ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、を実行し、
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするコンピュータのネットワーク。
  19. メモリにストアされたビットストリーム中のビット列について、ビットストリームポインタが指し示す前記メモリ内の位置に応じて、前記ビットストリーム中のビット列を保持すべきレジスタであるバッファに対してロードすべきビット列を特定し、当該ビット列をビットストリームデータとして前記バッファに対してロードするとともに、ロードしたビットストリームデータをビット操作の対象となりうる有効ビット列として設定する初期化ステップと、
    前記ビットストリーム中のビット列に対して第1のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列に対して前記第1のビット操作を実行する第1操作ステップと、
    前記第1のビット操作が実行されたとき、当該第1のビット操作に応じて、前記ビットストリームポインタが指し示す前記メモリ内の位置を調整するポインタ調整ステップと、
    前記第1のビット操作の実行後、前記ビットストリーム中のビット列に対して第2のビット操作を実行すべきとき、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいか否かを判定する判定ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームポインタが指し示す前記メモリ内の位置に応じて前記バッファにロードすべきビット列を特定し、当該ビット列を前記ビットストリームデータとして前記バッファに対して新たにロードするとともに、新たにロードしたビットストリームデータを有効ビット列として設定する再初期化ステップと、
    前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さより大きいとき、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行し、前記ビットストリームデータの有効ビット列の長さが前記第2のビット操作の対象となるビット列の長さに32ビットを足した長さ以下であるとき、前記ビットストリームデータが新たにロードされた後、前記ビットストリームデータの有効ビット列に対して前記第2のビット操作を実行する第2操作ステップと、
    をプロセッサに実行せしめ
    前記メモリには、一のレジスタに一度の操作でロード可能なひとまとまりのビット列を形成するための所定のメモリ境界が設定されており、
    前記再初期化ステップは、前記メモリ境界より上位のメモリ境界までのビット列である上位ビット列を第1のレジスタにロードし、前記メモリ境界より下位のメモリ境界までのビット列である下位ビット列を第2のレジスタにロードし、前記第1および第2のレジスタにそれぞれストアされたビット列のうち前記バッファにロードすべきビット列を統合して、前記ビットストリームデータとして前記バッファにストアするとともに、ストアしたビットストリームデータを有効ビット列として設定することを特徴とするプログラム。
JP2005291363A 2004-10-06 2005-10-04 ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク Active JP4439455B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/959,613 US7334116B2 (en) 2004-10-06 2004-10-06 Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length

Publications (2)

Publication Number Publication Date
JP2006107508A JP2006107508A (ja) 2006-04-20
JP4439455B2 true JP4439455B2 (ja) 2010-03-24

Family

ID=35447424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005291363A Active JP4439455B2 (ja) 2004-10-06 2005-10-04 ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク

Country Status (5)

Country Link
US (1) US7334116B2 (ja)
EP (1) EP1800211A2 (ja)
JP (1) JP4439455B2 (ja)
TW (1) TWI318372B (ja)
WO (1) WO2006038718A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
KR100902007B1 (ko) * 2007-02-28 2009-06-11 삼성전자주식회사 비디오 스트림 처리 장치
US9378751B2 (en) * 2008-06-19 2016-06-28 Broadcom Corporation Method and system for digital gain processing in a hardware audio CODEC for audio transmission
US8898439B2 (en) * 2009-07-17 2014-11-25 Macronix International Co., Ltd. Serial flash memory and address transmission method thereof
US9135008B2 (en) 2009-09-24 2015-09-15 Freescale Semiconductor, Inc. Device and method for performing conditional bitwise set/clear/toggle manipulations in a general purpose register
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
JP5598337B2 (ja) * 2011-01-12 2014-10-01 ソニー株式会社 メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム
US9639362B2 (en) 2011-03-30 2017-05-02 Nxp Usa, Inc. Integrated circuit device and methods of performing bit manipulation therefor
WO2012137428A1 (ja) * 2011-04-08 2012-10-11 パナソニック株式会社 データ処理装置、及びデータ処理方法
US20130042091A1 (en) * 2011-08-12 2013-02-14 Qualcomm Incorporated BIT Splitting Instruction
US9740484B2 (en) * 2011-12-22 2017-08-22 Intel Corporation Processor-based apparatus and method for processing bit streams using bit-oriented instructions through byte-oriented storage
JP6179149B2 (ja) * 2013-03-19 2017-08-16 富士通株式会社 データ処理装置

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US583793A (en) 1897-06-01 Island
US3793631A (en) 1972-09-22 1974-02-19 Westinghouse Electric Corp Digital computer apparatus operative with jump instructions
US4095265A (en) 1976-06-07 1978-06-13 International Business Machines Corporation Memory control structure for a pipelined mini-processor system
US4363091A (en) 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
JPS6019809B2 (ja) 1979-12-26 1985-05-18 株式会社日立製作所 デ−タ処理装置
US5265204A (en) 1984-10-05 1993-11-23 Hitachi, Ltd. Method and apparatus for bit operational process
US6552730B1 (en) 1984-10-05 2003-04-22 Hitachi, Ltd. Method and apparatus for bit operational process
JPS6473430A (en) 1987-09-14 1989-03-17 Hudson Soft Co Ltd Memory access control device
JP3181307B2 (ja) 1991-04-25 2001-07-03 株式会社東芝 命令処理装置
JP2984463B2 (ja) 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
US5603012A (en) 1992-06-30 1997-02-11 Discovision Associates Start code detector
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
US5550972A (en) 1993-06-30 1996-08-27 Microsoft Corporation Method and apparatus for efficient transfer of data to memory
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5863359A (en) 1995-06-09 1999-01-26 Aluminum Company Of America Aluminum alloy products suited for commercial jet aircraft wing members
US5842004A (en) 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5821886A (en) 1996-10-18 1998-10-13 Samsung Electronics Company, Ltd. Variable length code detection in a signal processing system
US5826074A (en) 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5835793A (en) 1997-05-02 1998-11-10 Texas Instruments Incorporated Device and method for extracting a bit field from a stream of data
JP3235555B2 (ja) 1997-05-14 2001-12-04 日本電気株式会社 信号復号装置及び信号復号方法並びに信号復号処理をコンピュータに行わせるためのプログラムを記録した記録媒体
US6216218B1 (en) 1997-11-03 2001-04-10 Donald L. Sollars Processor having a datapath and control logic constituted with basis execution blocks
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
AU4723699A (en) 1998-06-25 2000-01-10 Equator Technologies, Inc. Processing circuit and method for variable-length coding and decoding
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6332188B1 (en) 1998-11-06 2001-12-18 Analog Devices, Inc. Digital signal processor with bit FIFO
US6247112B1 (en) 1998-12-30 2001-06-12 Sony Corporation Bit manipulation instructions
US6397324B1 (en) 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
US6560694B1 (en) 2000-01-14 2003-05-06 Advanced Micro Devices, Inc. Double prefix overrides to provide 16-bit operand size in a 32/64 operating mode
US6571330B1 (en) 2000-01-14 2003-05-27 Advanced Micro Devices, Inc. Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor
JP2001216194A (ja) 2000-01-28 2001-08-10 Sony Corp 演算処理装置
US6539059B1 (en) 2000-03-02 2003-03-25 Sun Microsystems, Inc. Apparatus and method for efficiently scalable digital video decoding
KR100515413B1 (ko) 2000-08-31 2005-09-15 매그나칩 반도체 유한회사 비트 스트림 처리기
US6671428B1 (en) 2000-12-01 2003-12-30 Bayspec, Inc. Wavelength selective optical cross switch and optical add/drop multiplexer using volume phase grating and array of micro electro mechanical mirrors
US6671791B1 (en) 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6781589B2 (en) 2001-09-06 2004-08-24 Intel Corporation Apparatus and method for extracting and loading data to/from a buffer
US6653955B1 (en) 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder

Also Published As

Publication number Publication date
WO2006038718A3 (en) 2006-07-13
TWI318372B (en) 2009-12-11
US7334116B2 (en) 2008-02-19
EP1800211A2 (en) 2007-06-27
US20060101246A1 (en) 2006-05-11
JP2006107508A (ja) 2006-04-20
WO2006038718A2 (en) 2006-04-13
TW200627265A (en) 2006-08-01

Similar Documents

Publication Publication Date Title
JP4439455B2 (ja) ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク
JP2023106502A (ja) 命令実行のレイテンシの変更による後方互換性
US6145017A (en) Data alignment system for a hardware accelerated command interpreter engine
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
US6061783A (en) Method and apparatus for manipulation of bit fields directly in a memory source
US7844752B2 (en) Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
CN116841920A (zh) 用于执行存储器压缩的系统和方法
JPS61107434A (ja) デ−タ処理装置
US7082499B2 (en) External memory control device regularly reading ahead data from external memory for storage in cache memory, and data driven type information processing apparatus including the same
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
JP2001216194A (ja) 演算処理装置
JP2017502434A (ja) 浮動小数点レジスタエイリアシングのためのプロセッサ及び方法
US6684267B2 (en) Direct memory access controller, and direct memory access control method
TWI670648B (zh) 使用原子序列支援寬操作的方法和裝置
KR20210133257A (ko) 링 버퍼 업데이트들의 핸들링
US20070079109A1 (en) Simulation apparatus and simulation method
US11914972B2 (en) Element ordering handling in a ring buffer
US8645791B2 (en) Data cache controller, devices having the same, and method of operating the same
US6801988B2 (en) Data buffer for block unit data transfer to SDRAM
US10515036B2 (en) Bit manipulation capable direct memory access
JPH02293945A (ja) マイクロプロセツサ
JP3006204B2 (ja) 情報処理装置
JP2004021896A (ja) キャッシュフィル制御方法及びcpu
JPS62285180A (ja) ベクトルプロセツサ
JP2005513633A (ja) テクスチャライジング方法および装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100105

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100105

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4439455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140115

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250