JP3729809B2 - コプロセッサを使用したデータ処理 - Google Patents

コプロセッサを使用したデータ処理 Download PDF

Info

Publication number
JP3729809B2
JP3729809B2 JP2002566774A JP2002566774A JP3729809B2 JP 3729809 B2 JP3729809 B2 JP 3729809B2 JP 2002566774 A JP2002566774 A JP 2002566774A JP 2002566774 A JP2002566774 A JP 2002566774A JP 3729809 B2 JP3729809 B2 JP 3729809B2
Authority
JP
Japan
Prior art keywords
coprocessor
data
loaded
main processor
data processing
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.)
Expired - Lifetime
Application number
JP2002566774A
Other languages
English (en)
Other versions
JP2004519768A (ja
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 JP2004519768A publication Critical patent/JP2004519768A/ja
Application granted granted Critical
Publication of JP3729809B2 publication Critical patent/JP3729809B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Description

【0001】
本発明はデータ処理システムに関する。更に詳細には、本発明はメインプロセッサおよびコプロセッサの両方を採用するデータ処理システムに関する。
【0002】
メインプロセッサおよびコプロセッサの両方を採用したデータ処理システムを提供することについては既知である。例えば、そのようなデータ処理システムには、英国ケンブリッジのARM社のものがあり、それはARM7(R)あるいはARM9(R)のようなメインプロセッサを提供するが、それは特殊なディジタル信号処理演算のような機能を実行するために、Piccolo(R)コプロセッサのようなコプロセッサと組み合わされよう。コプロセッサの別の例として、浮動小数点算術コプロセッサおよび同等品がある。
【0003】
コプロセッサは、しばしば、データ処理システムの基本的なシステムでは必要とされない付加的な機能を提供するために使用されるが、しかし、適当なコプロセッサを備えることによるオーバヘッドが正当化されるような特別な状況においては有用であろう。特にそれを必要とするデータ処理環境は、ビデオ画像操作のようなディジタル信号処理を含む場合である。そのような応用では、処理すべきデータ量が多い。このことは、比較的低コストおよび低消費電力を同時に満たしながら、必要な処理量に対処できるデータ処理システムを開発するという課題を生み出す。
【0004】
そのような計算集約的な応用に対処する1つのやり方は、特定用途向けのディジタル信号処理回路を提供するものである。そのような特定用途向けの回路は、比較的制限された範囲の処理演算を、しかも比較的高速に実行するのに特に適したアーキテクチャを有することができる。例えば、関連する回路部分へ並列的にデータを流し込んだりそこから取り出したりするために、多重データ・チャネルを設けることができる。そのような構成は必要とされる大量のデータを処理することができるものの、一般的に柔軟性に欠けるという欠点を有する。この柔軟性の欠如は、それが実行することが望ましいアルゴリズムの比較的些少な変更が高額なそれに対応するハードウエアの変更を要求するということを意味する。このことは、最初から非常に多くの異なるアルゴリズムを実行するように一般的に設計された汎用のプロセッサとは対照的である。
【0005】
1つの態様から見ると、本発明はデータ処理装置であって:
データ処理演算を実行するためのプログラム命令に応答するメインプロセッサ;および
前記メインプロセッサへ結合され、前記メインプロセッサに対するコプロセッサ・ロード命令に応答するコプロセッサであって、1または複数のロードされたデータ・ワードを前記コプロセッサへロードし、また前記1または複数のロードされたデータ・ワードを用いて前記コプロセッサ・ロード命令によって指定される少なくとも1つのコプロセッサ処理演算を実行して少なくとも1つの結果のデータ・ワードを発生させるためのオペランド・データを提供するコプロセッサ;
を含み、
ここで、前記コプロセッサ・ロード命令に応答して、ロードされたデータ・ワードの可変数個のものが、前記1または複数のロードされたデータ・ワード中の前記オペランド・データの先頭アドレスがワード境界と揃っているかどうかに依存して前記コプロセッサへロードされるようになった;
データ処理装置を提供する。
【0006】
本発明は、汎用のメインプロセッサを含むシステムでは、コプロセッサは非常に特殊な機能を配慮して備えられることを理解している。特に、このコプロセッサ・ロード命令によって、ロードされたデータ・ワード内のオペランドに対して実行して結果のデータ・ワードを発生させるためのデータ処理演算もトリガされるようにすることによって、速度と符号密度の点で非常に優れた特徴が実現される。そのようなコプロセッサはシステムの中で高度に特殊な役目を有しているが、汎用のメインプロセッサと組み合わせることによって、そのような組み合わせたものが、異なるアルゴリズムおよび環境に対処するという汎用プロセッサの能力を保ったままで、処理スループットを増加させるという利点を提供することができることが分かった。
【0007】
メモリシステムおよびバス構造はしばしば便宜的にシステムのアドレス・ベースと特定な整列性を示す場合にのみ動作するように提供されるが、コプロセッサによって使用され、また操作されるべき所望のオペランド値は異なる整列性を有する場合がある。このように、進歩した性能を実現する目的で、コプロセッサにロードされるロード・データ・ワードの個数は整列性に依存する。一例として、ワード整列した32ビットのデータ・ワードを用いて、コプロセッサ・ロード命令に応答して8個の8ビット・オペランドをロードしようとする場合、このことは、もしもオペランドがワード境界に揃っていれば2つのデータ・ワードで以て、あるいはオペランドがワード境界に揃っていなければ3個のデータ・ワードで以て達成されよう。
【0008】
本発明の特に好適な実施の形態では、コプロセッサ・メモリがコプロセッサ内部に設けられて、ロードされたデータ・ワードと組み合わされてオペランドとして使用されるデータ・ワードをローカルに記憶するようになっている。そのような構成は、多くの現実世界での計算状況においては、比較的少数のデータ・ワードのサブセットが頻繁に必要とされ、それをより少ない頻度で必要とされるずっと多数のデータ・ワードのサブセットと組み合わせて使用することが分かっている。この特徴は、頻繁に必要とされるデータ・ワードをローカルに記憶しておき、メインプロセッサとコプロセッサとの間で必要とされるデータ・チャネル容量が有利に削減されるようにすることでこれを活用している。従来のディジタル信号処理システムとは対照的に、メインプロセッサのアーキテクチャはいろいろな要因によって制約を受けているため、必要に応じてメインプロセッサとコプロセッサとの間により多くのデータ・チャネルを単純に追加することは一般により困難である。
【0009】
本システムの動作性能は、メインプロセッサへ結合されたメモリから取り出すべきロードされたデータ・ワードが、メインプロセッサのレジスタに記憶されることなくコプロセッサへ送られるようにすることで改善される。この状況では、明らかなように、メインプロセッサはアドレス発生器と、コプロセッサ用のメモリ・アクセス機構の両方の役目を提供することができる。
【0010】
メインプロセッサが、コプロセッサへロードすべきデータ・ワードを指しているアドレス値を記憶するように動作するレジスタを含むのが特に便利である。これによって、メインプロセッサにはアドレス・ポインタの制御が与えられ、それによって、サポートできるアルゴリズムのタイプに関する柔軟性が増大する。
【0011】
ロードおよび操作すべきデータ・ワードの幅は多様であることは理解されよう。例えば、データ・ワードは32ビットのデータ・ワードでもよく、その場合、各々が8ビットのピクセル値を表す4個の8ビット・オペランドを含む。しかし、データ・ワードおよびオペランドは多様な異なるサイズ、例えば、16ビット、64ビット、128ビット、等々を取ることもできることは理解されよう。
【0012】
多くの実際の状況では、整列性は変動するが、一般に大多数の逐次アクセスに対しては同じである。この状況では、好適な実施の形態はコプロセッサ中のレジスタ値を用いて、データ・オペランドとデータ・ワードとの間の整列性を指定する整列値を記憶し、それにコプロセッサが応答して各々のコプロセッサ・ロード命令に対していくつのデータ・ワードをロードするかを制御する。
【0013】
コプロセッサは、特定のシステムに依存して、ロードされたデータ・ワード内のオペランドに対して多様な処理演算を実行することができるが、本発明は特に、複数のオペランド値間の差分絶対値の和を求めたいシステムにおいて有用である。大量のデータに対して差分絶対値の和を求めることはしばしば、画像処理の間のピクセル・ブロック一致のような演算を実行する場合に汎用プロセッサによって必要とされる処理負荷の大部分を占めることになる。差分絶対値の和という低レベルの計算の大部分をコプロセッサに譲ることによって、大幅な動作性能の向上が得られ、しかも差分絶対値の特別な目的の和計算を多様な異なるアルゴリズムの一部分として残すことによって汎用プロセッサの柔軟性を保持することができる。
【0014】
差分絶対値の和を求めるシステムで、計算した差分絶対値の合計和を累算するための累算レジスタをコプロセッサの内部に設けることが有利である。このコプロセッサ内部の累算レジスタは、必要に応じてメインプロセッサへ値を取り戻してそれ以降の操作を施すこともできるし、あるいはコプロセッサとメインプロセッサとの間のデータ転送の必要性を減らして動作速度を高めるようにコプロセッサ内部にローカルに保持することもできる。
【0015】
コプロセッサ用のアドレス発生器としてのメインプロセッサの役目を強化するために、コプロセッサ・ロード命令は、メインプロセッサ内にポインタとして記憶されるアドレス値に対して供給すべきオフセット値を含むのが有利である。オフセット値は、ポインタ値を利用する前、あるいは後にポインタ値を更新するためにオプションとして使用することができる。
【0016】
本発明はまた、上述のようなコプロセッサ・ロード命令を含むコンピュータ・プログラム製品を提供する。このコンピュータ・プログラム製品はコンパクト・ディスク(R)やフロッピ・ディスク(R)のような配給可能な媒体の形を取ることもできるし、あるいはデバイス中に埋め込まれたファームウエアの一部とすることもできるし、あるいはネットワーク・リンクを介するなどして動的にダウンロードすることもできる。
【0017】
ここで本発明の実施の形態について一例として添付図面を参照しながら説明する。
【0018】
図1はそれに対する最良の一致を基準画像内で求めようとする現在のピクセル・ブロック2を示す。現在のピクセル・ブロックには8ビットのピクセル・バイト値の8*8ブロックが1つ含まれる。現在のピクセル・ブロック2は、現在のピクセル・ブロック2から異なる変位ベクトルvだけ離れて位置する複数のピクセル基準ブロック4と比較される。ベクトル変位ごとに一致を試すことが望ましく、図1に示す差分絶対値の和表現が計算される。この表現は2つのブロックに関するそれぞれ対応するピクセル値間の差分絶対値を決定し、得られた64個の差分絶対値を加算する。良好な画像の一致は一般に差分絶対値の和が小さいことによって示される。MPEGタイプの処理を実行するような画像データ処理システムにおいて、そのような差分絶対値の和の計算がしばしば必要になり、汎用プロセッサにとっては大きな処理オーバヘッドとなって不利である。
【0019】
図2はデータ処理システム6を示しており、それはメインプロセッサ8、コプロセッサ10、キャッシュ・メモリ12、およびメインメモリ14を含む。メインプロセッサ8は、メインプロセッサ8によって利用されるであろう汎用レジスタ値を記憶するレジスタ・バンク16を含む。メインプロセッサ8は、例えば、英国、ケンブリッジのARM社の設計になるメインプロセッサの1つでよい。
【0020】
メインプロセッサ8はキャッシュ・メモリ12へ結合され、後者は最も頻繁に必要とされるデータ値への高速アクセスを提供する。より低速ではあるが大容量のメインメモリ14がキャッシュ12の外部に設けられる。
【0021】
コプロセッサ10はメインプロセッサ8のコプロセッサ・バスへ結合され、またメインプロセッサ8によって受信および実行され、予め定められた演算を実行するためのコプロセッサ命令に応答する。ARMアーキテクチャには、コプロセッサへデータ値をロードするように機能するロード・コプロセッサ命令が備えられる。図2に示すコプロセッサ10は、そのようなコプロセッサ・ロード命令の機能を拡張し、更にそれらを用いてコプロセッサに対して、コプロセッサ10へロードされたデータ・ワード内のオペランド値に対して予め定められた特定の処理演算を実行すべきことを指示する。
【0022】
更に詳細には、コプロセッサ10は、コプロセッサ・メモリ18、整列レジスタ20、累算レジスタ22、および制御および算術関数ユニット24を含む。特殊なコプロセッサ・ロード命令が、コプロセッサ・メモリ18へ16個の32ビットのデータ・ワードをロードするために用いられよう。それら16個のデータ・ワードの各々は4個の8ビットのピクセル値を含み、図1に示した現在のブロック2である8*8のピクセル・ブロック1つに対応する。現在のブロック2中のこれらのピクセル値は、差分絶対値の和を用いて、基準画像中の異なる多様な位置から取られたピクセルの基準ブロック4と1つのブロックとして比較されて、差分絶対値の最も小さい和を与える、すなわち最良の画像一致に対応する基準ブロック4を決定する。現在のブロック2の頻繁に使用されるピクセル値をコプロセッサ・メモリ18中にローカルに記憶することで処理資源を効率的に使用することになる。コプロセッサ・メモリ18に現在のブロック2が一旦ロードされると、特別なコプロセッサ・ロード命令(USALD命令)がメインプロセッサ8によって実行され、それによって2つまたは3つのデータ・ワードをコプロセッサ10へロードし、それらロードされたデータ・ワード内の8個のピクセル・オペランドに対する差分絶対値の和を計算する。メインプロセッサ8の命令の流れの中のUSALD命令はコプロセッサ10へも(直接に、あるいは1または複数の制御信号の形で)送られ、そこで制御および算術関数論理24をトリガし、キャッシュ12あるいはメインメモリ14のいずれかからメインプロセッサ8を通して必要な数のデータ・ワードのローディングを制御し、更に、それらロードされた値とコプロセッサ・メモリ18からの値とを用いて差分絶対値の和の計算を実行する。整列レジスタ20は、メインプロセッサ8によって実行されるコプロセッサ・レジスタ・ロード命令によって予め設定された整列値を保持する。制御および算術関数論理24はこの整列値に応答して、オペランドがワード境界と整列している場合には32ビットのデータ・ワード2個を、あるいはそのような整列性がない場合は、32ビットのデータ・ワード3個をロードする。図2のキャッシュ・メモリ12のそばには、ワード境界と整列せず、またCR_BY0の整列オフセットを有する、キャッシュ・メモリ内に記憶された8個の所望のピクセル・オペランド値が示されている。図示された例では、レジスタ・バンク16のレジスタのうちの1つの中に記憶され、図示のように整列したアドレスのワードを指しているアドレス値[Rn]に応答して、32ビットのデータ・ワード3個がコプロセッサ10へロードされよう。32ビットのデータ・ワード3個が取り出されると、制御および算術関数論理24は多重化演算を実行して、指定された整列値に依存して、ロードされたデータ・ワードのうちから必要なオペランドを選択する。ロードされたデータ・ワードから抽出されたオペランド値は、加算器や減算器のような標準的な算術処理論理を用いて、図1に示す計算の一部を構成する差分絶対値の和計算を施される。理解されるであろうように、図示された例では、8個のピクセル・バイト・オペランドが、図1に示す現在のピクセル・ブロック2と基準ピクセル・ブロック4との間のブロック比較において効果的に1つの行を表す。図1に示された全計算を実行するためには、8個のそのようなコプロセッサ・ロード命令を順番に実行する必要がある。それらのコプロセッサ命令の各々によって計算される差分絶対値の和は累算レジスタ22中に累算される。従って、各々が差分絶対値の1つの行の和を指定する8個のコプロセッサ・ロード命令すべてを実行した後では、差分絶対値の1ブロック分の和が実行されており、その結果が累算レジスタ22内に記憶されている。この記憶された値は次に、コプロセッサ・レジスタ値をレジスタ・バンク16内のレジスタの1つへ戻すメインプロセッサ命令などによって、メインプロセッサ8へ戻される。
【0023】
上で議論した例では、レジスタ・バンク16のレジスタに保持されているアドレス・ポインタは、取り出すべき第1データ・ワードの先頭アドレスを直接指していた。しかし、この記憶されたポインタ値に、例えば10ビットのオフセットのようなオフセットを適用して、それを記憶されたそのポインタ値に加えてアクセスすべき実際のアドレスを示すようにしてもよい。ある状況では、使用ごとにポインタ値を更新するためにそのようなオフセットを付加的に使用することが便利である。これによって、コプロセッサ・ロード命令は効果的に基準画像を指定するデータ中を適当な量ずつ段階的にたどって、ポインタを修正するための付加的なメインプロセッサ命令を必ずしも必要とすることなく、特定の基準ブロック4に対して必要な異なる8ピクセルの行を拾い出すことが可能になる。
【0024】
図3は図2のシステムを用いて実行される処理の例を模式的に示すフロー図である。工程26において、現在のピクセル・ブロック2を表す16個のワードがキャッシュ12、あるいはメインメモリ14からコプロセッサ・メモリ18へロードされる。工程28では、メインプロセッサ8内のレジスタRnに、メモリ中の基準ブロック4の先頭を指すポインタ値がロードされる。工程30では、コプロセッサ10の整列レジスタ20内の整列値がメインプロセッサ8に対するコプロセッサ・レジスタ・ロード命令を用いてロードされる。理解されるであろうように、工程26、28、および30はコプロセッサ・ロードおよび差分絶対値の和命令を実行するためのデータ処理環境をセットアップする。多くの状況において、このセットアップは一度だけ実行すればよく、その後は非常に多数の基準ブロック4を特定の現在ブロック2に対してテストする間も最新のものに留まる。それらの状況において、工程26、28、および30に付随する処理オーバヘッドは比較的小さい。
【0025】
工程32は先に説明した8個のUSALDコプロセッサ・ロード命令の実行を示している。これらの命令の各々は現在のブロック2および基準ブロック4内の1つの行の差分絶対値の和を計算し、累算レジスタ22中の累算値を更新する。
【0026】
工程34では、基準ブロック4全体に対する差分絶対値の計算された和が、コプロセッサ・レジスタからメインプロセッサ・レジスタへの移動命令によって累算レジスタ22からメインプロセッサ8へ取り出される。この累算された値は次に、先に計算されている累算値あるいはその他のパラメータと比較されて、最良の画像一致を特定するか、あるいはその他の目的に使用される。
【0027】
図4はUSALD命令の3種類の変形を示す。第1の変形はオフセットを使用せず、単にレジスタRn中に保持されるポインタ経由のアドレスを指定し、条件コード{cond}に依存する条件付き実行に従う。第2の変形は10ビットのオフセット値に従うアドレス・ポインタを使用するものであり、それはその値が使用される前または後のいずれかの時点で、フラグ{!}に依存して初期値に加えるかあるいは初期値から差し引かれる。第3の変形でもオフセット値が用いられて、それはそれが使用される前にレジスタRn内のポインタ値に適用されるが、ポインタ値は変更されない。
【0028】
本発明の例示実施の形態のこれ以上の説明は以下に見出されよう。
【0029】
(1.1 用語および略語)
この明細書は次のような用語および略語を使用している。
用語 意味
ASIC 特定用途向け集積回路
BIST 組み込み自己テスト
JTAG ジョイント・テスト・アクション・グループ
【0030】
(スコープ)
本明細書はMPEG4エンコード応用の性能を強化するためのARM9X6コプロセッサに関する技術的詳細を所載する。それはハードウエアおよびソフトウエアの両面からの機能的詳細をカバーする。それはハードウエアあるいはソフトウエアを実現することの詳細には触れない。
【0031】
(はじめに)
Urchin CoProcessor(UCP)(R)は差分絶対値の和(SAD)演算の実行を加速するために設計されたARM9X6コプロセッサである。SAD演算は、基準フレームからの8×8ブロックを現在のフレームの8×8ブロックと比較するときに、MPEG4のモーション推定アルゴリズムにおいて使用される。これはMPEG4ビデオ・エンコード応用の一部である。
【0032】
(1.2 UCP構造)
UCPはARM命令セットの一部をなす1組のコプロセッサ命令を理解する。ARMのコプロセッサ命令はARMプロセッサが次のことを行なうのを許容する。
・UCPとメモリとの間のデータ転送(ロード・コプロセッサ,LDC,および記憶コプロセッサ,STC,命令を用いて)
・UCPとARMレジスタとの間のデータ転送(コプロセッサへの移動,MCR,およびARMへの移動,MRC,命令を用いて)
ARMはUCP用のアドレス発生器およびデータ・ポンプとして動作する。
UCPは:レジスタ・バンク、データパス、および制御論理を含む。これは図5のUCPオーバビューに示されている。
【0033】
(1.3 コプロセッサ・インタフェース)
UCPへの唯一の接続はARMからのコプロセッサ・インタフェースである。その他のシステム接続(例えば、AMBAや割り込み)はすべてARMを介して処理される。
【0034】
(1.4 設計上の制約)
UCPの初期のインプリメンテーションは0.18umライブラリをターゲットにするポイント・ソリューションである。これはUCPをARM926と統合しよう。UCPはシステム中の唯一のコプロセッサとなろう。設計に対する主要な制約は厳しい時間軸要求であり、従ってすべての設計上の決定はこのことに基づいて行なわれる。
その他の重要な設計上の制約は:ゲート・カウント、最大動作周波数(最悪の場合)、および電力消費である。
【0035】
(1.4.1 ゲート・カウント)
このセクションは本発明の出願に関連しないため削除された。
【0036】
(1.4.2 動作周波数)
このセクションは本発明の出願に関連しないため削除された。
【0037】
(1.4.3 電力消費)
このセクションは本発明の出願に関連しないため削除された。
【0038】
(プログラマ・モデル)
(1.5 レジスタ)
UCPコプロセッサは2つのタイプのデータ記憶を含む。
・レジスタ:それらはARMレジスタとコプロセッサとの間で直接的にデータ転送を行なうために用いられる。これらはMCRおよびMRC演算によってアクセスできる。
・ブロック・バッファ:これは、メモリ・マッピングされた領域(すなわち、ARMレジスタではない)からのみ直接記憶されるか、ロードできる8バイト(64ビット)で8行の記憶である。ブロック・バッファは1組の特殊なUCP命令によってアクセスされる(ARMはこれらをLDCおよびSTC演算として見る)。
【0039】
次はUCP中のレジスタの要約である。
Figure 0003729809
【0040】
レジスタ読み出し時には、予約された、あるいは未定義のレジスタ・ビットはマスクしなければならず、レジスタ書き込みではゼロにセットしなければならない。これについての例外はCR_ACCおよびCR_BYOである。これらのレジスタは読み出しでは未使用ビットから常にゼロを返し、また書き込みでは未使用のビット位置に任意の値を書き込むことができる(UCPはそれらの値を無視する)。
【0041】
(1.5.1 CR_ACC)
これは14ビットの読み出し/書き込みレジスタである。それはMCRによって直接的に更新することができ、またSAD演算によって間接的に更新できる。
【0042】
(1.5.2 CR_IDX)
これは3ビットの読み出し/書き込みレジスタである。これはMCRによって直接更新でき、行インデックスを増分させるブロック・バッファ・ロード/記憶あるいはSAD演算によって間接的に更新できる。
このレジスタはブロック・バッファの行インデックスを示す。これは、そのブロック・バッファにアクセスする次の演算によってどのラインが参照されるべきかをセットする(これらの演算はブロック・バッファの1本の行のみを使用する)。
このレジスタが値7を超えて増分されると、それはゼロへ戻る。
【0043】
(1.5.3 CR_BYO)
これは2ビットの読み出し/書き込みレジスタである。これはMCRによってのみ更新できる。
UCPはバイト整列したアドレスから基準フレームへのアクセスをサポートする。それらのロードのためのアドレス・バスの下位2ビットがこのレジスタに記憶される。
コプロセッサはメモリ・アクセスのためにARMによって使用されるアドレス値を直接知ることはできないことに注意されたい。それは、ソフトウエアがバイト・オフセットをCR_BYO中へ別々にプログラムするようになっている理由である。更に、ARMはコプロセッサのためのワード不整列なロードを直接的にはサポートせず、従ってUCPは3つのワード・ロードを実行し、次にそれが必要とする8バイトを抽出する必要がある。
【0044】
(1.5.4 CR_CFG)
これは単一ビットの読み出し/書き込みレジスタである。それはMCRによってのみ更新できる。
IDX_INCビットは、ブロック・バッファのロード/記憶あるいはSAD演算の後で、CR_IDXレジスタを増分させるかどうかを制御する。それがクリアのときは、増分しない。セットのときは、CR_IDXはブロック・バッファまたはSAD演算が完了した後で増分される。
【0045】
(1.5.5 CR_ID)
これは14ビットの読み出し専用レジスタであり、UCPアーキテクチャおよびリビジョン・コードを含む。
【0046】
【表1】
Figure 0003729809
【0047】
ビット[3:0] そのインプリメンテーションのリビジョン番号を含む
ビット[7:4] ARM設計によるインプリメンテーションに関する値0×Fにセットされる
ビット[13:8] UCPアーキテクチャ・バージョンを含む 0×00=バージョン1
【0048】
(1.6 命令セット)
UCPコプロセッサのアセンブラ・シンタックスはARMと同じフォーマットを使用する。
{ }はオプション・フィールドを示す。
cond はARM命令状態コードフィールドである。
dest はUCPデスティネーション・レジスタを指定する。
Rn はARMレジスタである。
CRn レジスタである。
! は計算されたアドレスがベース・レジスタへ書き戻されるべきであることを示す。
UCP はUCPコプロセッサ番号である。
10_Bit_Offset は10ビットのワード・オフセットを評価する表現である。このオフセットはベース・レジスタに加算されてロード・アドレスが得られる。このオフセットは4の倍数であることに注意されたい。
6_Bit_Offset は6ビットのワード・オフセットを評価する表現である。このオフセットはベース・レジスタに加算されてロード・アドレスが得られる。このオフセットは4の倍数であることに注意されたい。
【0049】
注意:ライトバック付き、あるいはライトバックなしのポスト・インデックスが許可されている。
以下のページはUCPの命令セットを説明している。
【0050】
(1.6.1 命令セット要約)
Figure 0003729809
【0051】
(1.6.2 命令エンコーディング)
UCPの命令は次のコプロセッサ命令クラスに属する
【0052】
Figure 0003729809
【0053】
コプロセッサ命令は次のようにエンコードされる。
【0054】
【表2】
Figure 0003729809
【0055】
cond: 条件コード
UCP: UCPコプロセッサ番号
Rn: ARMレジスタ・ソース
CRn: UCPレジスタ・ソース
Rd: ARMレジスタ・デスティネーション
CRd: UCPレジスタ・デスティネーション
8_Bit_offset: 8ビット数(0−255);アドレス・オフセットを表示するために使用される。
P: プレ/ポスト・インデックス・ビット 0=ポスト;転送後にオフセットを加算
1=プレ;転送前にオフセットを加算
U: アップ/ダウン・ビット 0=ダウン;ベースから差し引く
1=アップ;ベースに加える
W:ライトバック・ビット 0=ライトバックなし 1=アドレスをベースに書き込む
【0056】
注意:UCPに関しては前記のオペレーション・コードのみが有効であることに注意されたい。これらのオペレーション・コード(UCPをビット11からビット8に保持する)に対する任意の変形は予期せぬ振る舞いの原因となろう。
【0057】
(1.6.3 UMCR)
UMCR命令はUCPレジスタへの書き込みで使用される。UMCRはARMレジスタRnからUCPレジスタCRdへデータを移動させる。
【0058】
【表3】
Figure 0003729809
【0059】
(動作)
1 ARMレジスタRnからUCPレジスタCRdへの移動
(ニーモニック)
UMCR CRd,Rn,{cond}
(例)
UMCR CR_ACC,R0 ;R0の内容をCR_ACCへロード
【0060】
(1.6.4 UMRC)
UMRC命令はUCPレジスタからの読み出しで使用される。UMCRはUCPレジスタCRnからARMレジスタRdへデータを移動させる。
【0061】
【表4】
Figure 0003729809
【0062】
(動作)
1 UCPレジスタCRnからARMレジスタRdへ移動
(ニーモニック)
UMCR Rd,CRn,{cond}
(例)
UMCR R6,CR_ID ;IDレジスタをR6へロードする
【0063】
(1.6.5 UBBLD)
UBBLD命令はデータをブロック・バッファへロードするときに使用される。
【0064】
【表5】
Figure 0003729809
【0065】
(動作)
【表6】
Figure 0003729809
【0066】
(ニーモニック)
【表7】
Figure 0003729809
【0067】
(例)
UBBLD [R0],#320! ;mem(R0)からブロック・バッファへ2ワードをロードし、R0を次のラインへ事後増分する
【0068】
(1.6.6 UBBST)
UBBST命令はブロック・バッファからデータを記憶するときに使用される。この演算は認証のみを目的としており、応用コードでは使用すべきでない。
【0069】
【表8】
Figure 0003729809
【0070】
(動作)
【表9】
Figure 0003729809
【0071】
(ニーモニック)
【表10】
Figure 0003729809
【0072】
(例)
UBBST [R3],#8! ;ブロック・バッファからの2ワードをmem(r3)から始まるメモリに記憶
【0073】
注意:UCPは、IDX_INC==1のとき、バック・ツー・バックUBBSTをサポートしない。各UBBSTは少なくとも1個のNOPによって隔てられるべきである。UBBSTバック・ツー・バックを使用すると、予期しない振る舞いが生ずるであろう。
【0074】
(1.6.7 USALD)
USALD命令は基準ブロックからデータをロードして、SAD累算演算を実行する。
【0075】
【表11】
Figure 0003729809
【0076】
(動作)
【表12】
Figure 0003729809
【0077】
(注意)
算術は符号なしである。CR_ACCのオーバフローを検出/処理する機能は含まれていない。CR_ACCのサイズは8×8のブロック比較でオーバフローが発生しないように選ばれる。
【0078】
(ニーモニック)
【表13】
Figure 0003729809
【0079】
(例)
USALD [R0],#320! ;mem(R0)からの2ワードを処理して、SADを実行し、次の行へR0を事後増分する
【0080】
(1.7 命令のサイクルタイム)
次の表は各命令が完了するまでに取るサイクル数を示している。
【0081】
Figure 0003729809
注意:もしCR_BYOがゼロなら、N=2サイクルであり、そうでなければN=3サイクルである。
【0082】
(1.8 データ・ハザード)
データ・ハザードは命令同士の間のデータ依存性が予期しない振る舞いを引き起こす状況である。
UCPにはデータ・ハザードに対処するためのハードウエア的なインターロックはない。その代わりに、ソフトウエハは必要な場所に、非コプロセッサ命令を、必要であればNOPを含まなければならない。
【0083】
Figure 0003729809
【0084】
(機能の説明)
(1.9 コプロセッサの概観)
コプロセッサはARM9X6と緊密につながっている。UCP向けの各命令は、ARMコアがそれ自身でその命令を実行するように直ちに処理される。UCPはFire−and−Forget(ファイヤ・アンド・フォゲット)式のコプロセッサではなく、UCP命令は直ちに実行され、その結果は後続の命令のために利用可能である(特定の状態に従う、1.8セクションを参照)。これはARMがコプロセッサの状態をポールする必要がなく、またコプロセッサがARMに割り込みを掛ける必要がないことを意味する。
【0085】
(1.10 機能ダイヤグラム)
UCPの接続は図6に示されている。
【0086】
(1.11 ブロックダイヤグラム)
UCPの主要ブロックは図7に示されている。
制御倫理は各命令がメモリから到着次第読み取って、パイプライン・フォロワを含み、それによってUCPとARMが同調するようになっている。コプロセッサのパイプラインは次のようなステージを含む:フェッチ、デコード、実行、メモリ、書き込み、およびSAD累算。
レジスタ・バンクはブロック・バッファおよびMCR/MRCケイパブル・レジスタを保有する。このレジスタはまたRC_IDXを増分させる論理を保有する。
データパスは、バイト操作、SAD、および累算を含むUSALD演算用の論理を含む。データパスはまた、レジスタ読み出し選択を処理し、内部演算、UMRCおよびUBBSTのために結果を順送りする。
【0087】
(システム接続)
UCPはARM9X6へ直接接続されるように設計されている。この構成では、CHSDE_CおよびCHSEX_C出力は未使用である。ARM966(R)およびARM946(R)プロセッサのために、CPABORT入力は低レベルに固定しておくべきである。この構成で、UCPはロード演算中のデータ・アボートから復帰するために特殊なアボート・ハンドラ・コードを必要としよう。
【0088】
(1.12 ARM920T(R)への接続)
ARM920Tコプロセッサのインタフェースは機能的に9X6コプロセッサのインタフェースと同一である。しかし、このインタフェースは信号のタイミングに関しては大いに異なっている。UCPがARM920(R)と一緒に使用できるためには、別になった外部リタイミング・ブロックが必要である。しかし、このリタイミング・ブロックに関する詳細仕様は本発明のスコープから外れるので、この場合のコンフィギュレーションについて次に簡単に触れてみよう。
ARM920によって提供されるクロックはUCP用のCPCLKへ渡される前に反転される。CHSDEおよびCHSEX出力は未使用で、その代わりに、CHSDE_CおよびCHSEX_Cが、920クロックによってイネーブルされるトランスペアレント・ラッチへ渡される。
CPABORT信号はETMインタフェースから取り出される。
【0089】
(1.13 付加的なコプロセッサの接続)
デフォルトで、UCPは多重外部コプロセッサを用いるシステム用として構成されていない。これをサポートするためには、付加的な論理が必要である。
もし多重コプロセッサをインタフェースに追加するのであれば、AND用ビット1、およびOR用ビット0によってハンドシェイキング信号を組み合わせることができる。ハンドシェイキング信号CHSDE1、CHSEX1、およびCHSEX2をそれぞれ有する2コプロセッサの場合には:
【0090】
【表14】
Figure 0003729809
【0091】
(ACタイミング)
このセクションは現時点で完全なものでない。ACタイミングは920Tに関して、Philipsプロセスで利用可能である。
【0092】
(付録)
(1.14 信号の説明)
次の表はUCPがARM9TDMIとインタフェースを取るための信号を説明する。注意すべき点は、これはインプリメンテーションが開始されるに伴い、変更の対象となることである。最終的なバージョンは次のリストとは異なるかもしれない。
【0093】
(1.14.1 UCP命令フェッチ・インタフェース信号)
Figure 0003729809
【0094】
(1.14.2 UCPデータバス)
Figure 0003729809
【0095】
(1.14.3 UCPコプロセッサ・インタフェース信号)
Figure 0003729809
【0096】
(1.14.4 UCPの諸々の信号)
Figure 0003729809

【図面の簡単な説明】
【図1】 差分絶対値の所望の和計算を示す模式図。
【図2】 メインプロセッサとコプロセッサの組み合わせを示す模式図。
【図3】 図2のシステムによって実行される動作タイプの例を示す模式図。
【図4】 コプロセッサ・ロード命令の4つの例を示す図表。
【図5−図7】 実施の形態の一例に従うコプロセッサの詳細を示す図。

Claims (10)

  1. データ処理装置であって
    プログラム命令に応答してデータ処理演算を実行するメインプロセッサおよび
    前記メインプロセッサに結合されたコプロセッサであって、前記メインプロセッサに対するコプロセッサ・ロード命令に応答して1または複数のロードされたデータ・ワードを前記コプロセッサへロードし、前記1または複数のロードされたデータ・ワードを用いて前記コプロセッサ・ロード命令によって指定される少なくとも1つのコプロセッサ処理演算を実行して、少なくとも1つの結果のデータ・ワードを生成するためのオペランド・データを提供するコプロセッ
    を含み、
    前記コプロセッサ・ロード命令に応答して、ロードされたデータ・ワードの可変数個が、前記1または複数のロードされたデータ・ワード中での前記オペランド・データの先頭アドレスがワード境界と整列しているかどうかに依存して前記コプロセッサ中へロードされ
    前記コプロセッサは、前記オペランド・データと前記1または複数のロードされたデータ・ワードとの間の整列性を指定する値を記憶するための整列レジスタを含む
    データ処理装置。
  2. 請求項1に記載のデータ処理装置であって、前記コプロセッサが、前記少なくとも1つのコプロセッサ処理演算において前記1または複数のロードされたデータ・ワードと一緒にオペランドとして使用される1または複数のローカルに記憶されるデータ・ワードを記憶するためのコプロセッサ・メモリを含んでいるデータ処理装置。
  3. 請求項1および請求項2のいずれかに記載のデータ処理装置であって、前記メインプロセッサに結合されたメモリを含み、前記1または複数のロードされたデータ・ワードが、前記メインプロセッサ中のレジスタに記憶されることなしに前記メインプロセッサを経由して前記メモリから前記コプロセッサへ取り出されるようになったデータ処理装置。
  4. 請求項1〜請求項3のいずれかに記載のデータ処理装置であって、前記メインプロセッサが、前記1または複数のデータ・ワードを指すアドレス値を記憶するように動作するレジスタを含んでいるデータ処理装置。
  5. 請求項1〜請求項4のいずれかに記載のデータ処理装置であって、前記少なくとも1つのコプロセッサ処理演算が、複数のバイト値間の差分絶対値の和の計算を含んでいるデータ処理装置。
  6. 請求項2および請求項5のいずれかに記載のデータ処理装置であって、前記差分絶対値の和が、前記1または複数のロードされたデータ・ワード内のバイト値と、前記1または複数のローカルに記憶されたデータ・ワード内の複数のバイト値の対応するものとの間の差分絶対値の和として計算されるデータ処理装置。
  7. 請求項6に記載のデータ処理装置であって、前記差分絶対値の和が前記コプロセッサの累算レジスタ中に累算されるようになったデータ処理装置。
  8. 請求項4に記載のデータ処理装置であって、前記コプロセッサ・ロード命令が、実行時に前記アドレス値に対して加算されるべきオフセット値を含んでいるデータ処理装置。
  9. 請求項1〜請求項のいずれかに記載のデータ処理装置であって、前記少なくとも1つのコプロセッサ処理演算が、ブロックのピクセル値マッチングの一部として差分絶対値の和を計算するデータ処理装置。
  10. データ処理の方法であって
    プログラム命令に応答して、メインプロセッサ中でデータ処理演算を実行する工程および
    前記メインプロセッサに対するコプロセッサ・ロード命令に応答して前記メインプロセッサに結合されたコプロセッサ中へ1または複数のロードされたデータ・ワードをロードし、また前記1または複数のロードされたデータ・ワードを使用して前記コプロセッサ・ロード命令によって指定される少なくとも1つのコプロセッサ処理演算を実行して少なくとも1つの結果のデータ・ワードを生成するためのオペランド・データを供給する工
    を含み、
    前記コプロセッサ・ロード命令に応答して、ロードされたデータ・ワードの可変数個のものが前記コプロセッサ内の整列レジスタに記憶された値に依存して前記コプロセッサ中にロードされ、前記値は前記1または複数のロードされたデータ・ワード中での前記オペランド・データの先頭アドレスがワード境界と整列しているかどうかを示している
    データ処理方法。
JP2002566774A 2001-02-20 2001-12-13 コプロセッサを使用したデータ処理 Expired - Lifetime JP3729809B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0104160A GB2372848B (en) 2001-02-20 2001-02-20 Data processing using a coprocessor
PCT/GB2001/005516 WO2002067113A1 (en) 2001-02-20 2001-12-13 Data processing using a coprocessor

Publications (2)

Publication Number Publication Date
JP2004519768A JP2004519768A (ja) 2004-07-02
JP3729809B2 true JP3729809B2 (ja) 2005-12-21

Family

ID=9909128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002566774A Expired - Lifetime JP3729809B2 (ja) 2001-02-20 2001-12-13 コプロセッサを使用したデータ処理

Country Status (11)

Country Link
US (1) US7089393B2 (ja)
EP (1) EP1362286B1 (ja)
JP (1) JP3729809B2 (ja)
KR (1) KR100777753B1 (ja)
CN (1) CN1254740C (ja)
GB (1) GB2372848B (ja)
IL (2) IL155662A0 (ja)
MY (1) MY124779A (ja)
RU (1) RU2275678C2 (ja)
TW (1) TWI285322B (ja)
WO (1) WO2002067113A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US8290044B2 (en) * 2006-05-10 2012-10-16 Qualcomm Incorporation Instruction for producing two independent sums of absolute differences
KR100868677B1 (ko) * 2007-05-18 2008-11-13 한국과학기술원 데이터 처리 장치, 데이터 처리 시스템, 코프로세서 연결방법, 및 코프로세서 인터페이스 방법
KR101200490B1 (ko) * 2008-12-10 2012-11-12 한국전자통신연구원 영상 정합 장치 및 방법
JP2011138308A (ja) * 2009-12-28 2011-07-14 Sony Corp プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法
US8392689B1 (en) * 2010-05-24 2013-03-05 Western Digital Technologies, Inc. Address optimized buffer transfer requests
CN102486758B (zh) * 2010-12-01 2015-01-28 中兴通讯股份有限公司 一种访问协处理器寄存器的方法及装置
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US20130138921A1 (en) * 2011-11-28 2013-05-30 Andes Technology Corporation De-coupled co-processor interface
US9632781B2 (en) 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
CN104503942B (zh) * 2014-12-30 2017-10-31 合肥金星机电科技发展有限公司 串口指令解码方法
KR102547495B1 (ko) 2022-07-26 2023-06-23 장희석 무편심 서보가압식 마이크로 스폿용접기

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2920477A1 (de) * 1979-05-21 1980-12-04 Kabel Metallwerke Ghh Vorgefertigte dreiphasige wechselstromwicklung fuer einen linearmotor
US4317168A (en) * 1979-11-23 1982-02-23 International Business Machines Corporation Cache organization enabling concurrent line castout and line fetch transfers with main storage
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4961162A (en) * 1989-01-13 1990-10-02 International Business Machines Corporation Multiprocessing system for performing floating point arithmetic operations
US5025407A (en) * 1989-07-28 1991-06-18 Texas Instruments Incorporated Graphics floating point coprocessor having matrix capabilities
US5168561A (en) 1990-02-16 1992-12-01 Ncr Corporation Pipe-line method and apparatus for byte alignment of data words during direct memory access transfers
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5668984A (en) * 1995-02-27 1997-09-16 International Business Machines Corporation Variable stage load path and method of operation
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
WO1999067883A2 (en) * 1998-06-25 1999-12-29 Equator Technologies, Inc. Processing circuit and method for variable-length coding and decoding
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
GB2359967B (en) * 2000-02-29 2004-05-12 Virata Ltd Qamd

Also Published As

Publication number Publication date
IL155662A (en) 2008-08-07
TWI285322B (en) 2007-08-11
EP1362286B1 (en) 2018-01-24
GB0104160D0 (en) 2001-04-11
GB2372848A (en) 2002-09-04
US20020116580A1 (en) 2002-08-22
JP2004519768A (ja) 2004-07-02
IL155662A0 (en) 2003-11-23
WO2002067113A1 (en) 2002-08-29
KR100777753B1 (ko) 2007-11-19
EP1362286A1 (en) 2003-11-19
GB2372848B (en) 2004-10-27
MY124779A (en) 2006-07-31
CN1491383A (zh) 2004-04-21
US7089393B2 (en) 2006-08-08
RU2275678C2 (ru) 2006-04-27
CN1254740C (zh) 2006-05-03
KR20030078063A (ko) 2003-10-04

Similar Documents

Publication Publication Date Title
JP2992223B2 (ja) コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法
EP2241968B1 (en) System with wide operand architecture, and method
JP3547139B2 (ja) プロセッサ
US5892966A (en) Processor complex for executing multimedia functions
US10768930B2 (en) Processor supporting arithmetic instructions with branch on overflow and methods
US6073215A (en) Data processing system having a data prefetch mechanism and method therefor
US6295599B1 (en) System and method for providing a wide operand architecture
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US20050283589A1 (en) Data processor
US20010010072A1 (en) Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them
US20100332803A1 (en) Processor and control method for processor
JP3729809B2 (ja) コプロセッサを使用したデータ処理
GB2522990A (en) Processor with virtualized instruction set architecture and methods
EP2309383A1 (en) System with wide operand architecture and method
US6237083B1 (en) Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
JPH01214932A (ja) データ処理装置
JP2001034471A (ja) Vliw方式プロセッサ
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
US6014736A (en) Apparatus and method for improved floating point exchange
US20040255102A1 (en) Data processing apparatus and method for transferring data values between a register file and a memory
JP2828611B2 (ja) コンピュータシステム及び命令実行方法
JPH0816392A (ja) コンピュータシステム、コンピュータシステム動作方法、及びコンピュータ命令シーケンス実行方法
WO2022153026A1 (en) Memory copy size determining instruction and data transfer instruction
CN116097213A (zh) 一种图指令处理方法及装置
JP2001216154A (ja) むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050824

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: 20050916

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051004

R150 Certificate of patent or registration of utility model

Ref document number: 3729809

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: 20081014

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091014

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20101014

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20111014

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20121014

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20131014

Year of fee payment: 8

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

EXPY Cancellation because of completion of term