JP4575925B2 - マルチスレッドアーキテクチャを用いた視覚および図形データの処理 - Google Patents

マルチスレッドアーキテクチャを用いた視覚および図形データの処理 Download PDF

Info

Publication number
JP4575925B2
JP4575925B2 JP2006547368A JP2006547368A JP4575925B2 JP 4575925 B2 JP4575925 B2 JP 4575925B2 JP 2006547368 A JP2006547368 A JP 2006547368A JP 2006547368 A JP2006547368 A JP 2006547368A JP 4575925 B2 JP4575925 B2 JP 4575925B2
Authority
JP
Japan
Prior art keywords
semaphore
instruction thread
thread
instruction
execution
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 - Fee Related
Application number
JP2006547368A
Other languages
English (en)
Other versions
JP2007517326A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2007517326A publication Critical patent/JP2007517326A/ja
Application granted granted Critical
Publication of JP4575925B2 publication Critical patent/JP4575925B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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
    • 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/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Image Generation (AREA)
  • Executing Machine-Instructions (AREA)
  • Digital Computer Display Output (AREA)

Description

本発明は視覚および図形データの処理に関する。本発明は特に、視覚および図形データの処理の実行における、アクティブセマフォ機構の利用に関する。
セマフォ(クリティカルセクションまたはミューテックとも呼ばれる)は、複数のプロセスが共有リソース(例:メモリ、ファイル)の使用で競合する際に、プロセス間の処理の調整と同期を可能にするハードウェアおよびソフトウェアの機構である。一般的に、セマフォは、オペレーティングシステムメモリ内の指定された場所に保存された値であり、プロセスはその値を確認および変更できる。セマフォの値に基づいて、プロセスは、共有リソースにアクセス、または、一定時間待機した後にセマフォを再度確認することができる。
従来のコンピュータシステムにおけるセマフォは、概して、ハードウェアによるアトミックな「テスト・アンド・セット」またはこれに類似する命令(例:ロック、ビットテスト、ビットテスト・アンド・セット、ビットテスト・アンド・リセット)を使用したソフトウェアルーチンとして実装される。このセマフォの実装を使用することにより、共有(例:グローバル)データと1つ以上のセマフォの間において、生産者−消費者の通信関係を確立できる。セマフォは、共有データの修正を試みる複数のプロセスの中から選択された1つのプロセスのみによって共有データが変更されることを可能にし、それによってデータの整合性を提供する。
このセマフォの機構は、セマフォを獲得するためにスレッドがポーリング処理を行う必要があるため、「パッシブ」である。この必要とされるポーリング処理は、本来ならば他の目的にも使用できるプロセッサおよびシステムリソースを消費してしまう。このように、従来のセマフォは非効率な処理となりうる。
大規模なマルチスレッドプロセッサアーキテクチャの一実施形態を示す。
セマフォを使用することによってスレッドの実行を同期化できる依存関係の概念を示す第1の図である。
セマフォを使用することによってスレッドの実行を同期化できる依存関係の概念を示す第2の図である。
セマフォを使用することによってスレッドの実行を同期化できる依存関係の概念を示す第3の図である。
セマフォを使用することによってスレッドの実行を同期化できる依存関係の概念を示す第4の図である。
光線が光源から視点までトレースされたシーンの簡単な例を示す。
アクティブセマフォを使用したレイトレーシングの一実施形態を示す。
プロアクティブオーダードセマフォを使用したZバッファベースの3次元グラフィックスレンダリングの一実施形態を示す。
アクティブおよび/またはプロアクティブセマフォを使用したビデオデコーディングの一実施形態を示す。
本発明は添付図面に示す実施例を用いて説明されるが、実施例は本発明を一切制限しない。添付図面内の数字は類似の要素を参照する。
アクティブセマフォを使用した視覚および/または図形データの処理方法と装置について、以下に説明する。以下の説明において、本発明について説明することを目的として、本発明に関する完全な理解を提供するために多くの詳細を提供する。しかし、当業者はこれらの詳細を用いることなく、本発明を実施することができることは明白である。また、本発明が曖昧になることを回避するために、構造およびデバイスはブロック図の形で示す。
アクティブセマフォの使用例
「アクティブ」セマフォを使用して、複数の並列なパッシブ命令スレッド(以下スレッドと呼ぶ)による共有リソースへのアクセスを調整するアーキテクチャおよび関連する方法について、以下に説明する。このセマフォは、セマフォ・エンティティが実行回路構成および/または制御回路構成に対してメッセージを送信してスレッドの状態を変更するため、アクティブと表現される。例えば、セマフォによって示されうる未解決の依存関係に応じて、スレッドスケジューラがスレッドをスリープ(または非活動)モードにすることができる。スレッドがスリープモードであること示すために、依存関係に相当するスレッド状態変数が使用される。
依存関係が解決されたとき、制御回路構成(例:スレッドスケジューラ)にメッセージが送信され、依存関係変数がクリアされる。依存関係変数がクリアされると、スレッドは活動(またはウェイク)状態となる。そして活動状態となったスレッドにおいて、命令の実行を継続できる。
上記の例に引き続いて、スレッドがセマフォを獲得しようとして獲得できなかったとき、スレッドは非活動状態とされる。スレッドが非活動状態であるため、スレッドは、従来技術では必要とされた、セマフォによって示される依存関係が解決されたかどうかを判定するためのポーリング処理をセマフォに対して行うことができない。依存関係が解決されたことを示すメッセージを受信(例:セマフォ・エンティティから)するまで、このスレッドは非活動状態にとどまる。依存関係が解決されたことを示すメッセージの受信に応じて、スレッドは活動状態となり命令実行の継続が可能となる。
図1は大規模なマルチスレッドプロセッサアーキテクチャの一実施例を示す。ここで使用される用語「大規模なマルチスレッド」アーキテクチャは、複数のスレッドの実行をサポートできる複数のプロセッサを有するアーキテクチャを指す。一実施例では、各プロセッサは1つまたは複数のスレッドをサポートしてもよい。シングルプロセッサにおけるマルチスレッディングは、アクティブスレッドの実行を許可してそれ以外のスレッドを非活動状態にすることによって、高い命令実行効率を実現する。セマフォの獲得を待つ非活動状態のスレッドは、プロセッサのリソースを消費/浪費しない。大規模なマルチスレッドアーキテクチャという表現に妨げられることなく、このセマフォ機構およびそれに関連する方法は、サポートされるスレッドの数に関わらず、いかなるマルチスレッドアーキテクチャに対しても適用可能である。
大規模なマルチスレッドシステム100は1つまたは複数のプロセッシングコアによる命令の実行中に使用されるデータと命令とを保存するメモリ階層110を有する。メモリ階層110はダイナミックランダムアクセスメモリ(DRAM)、1階層以上の命令キャッシュ、1階層以上のデータキャッシュ、および/または1階層以上のいかなる従来技術の共有命令およびデータキャッシュを含んでもよい。メモリ階層110に接続されたスレッドディスパッチャ120は、命令ポインタ、および、新しいスレッドに関連するデータおよび/またはデータポインタなどの情報を受信する。スレッドディスパッチャ120はまた、メッセージバス125を介してプロセッシングコアに接続される。本発明の一実施例では、スレッドディスパッチャ120はプロセッシングコアのスレッドリソースの管理を行う。新規のペンディングスレッドを受信すると、スレッドディスパッチャ120はペンディングスレッドを実行するためのリソースを有するプロセッシングコアを1つ選択し、そのスレッドを選択したプロセッシングコアにディスパッチする。プロセッシングコア上のスレッドの実行が完了すると、スレッドディスパッチャ120はその報告を受け、プロセッシングコア上のスレッドリソースを次のペンディングスレッドに対して利用可能にする。
システム100は、それぞれ実行構成回路および関連する制御構成回路を有する複数のプロセッサコア(130、131、139、150、151、および159)と共に図示される。これらのプロセッサコアは、同一またはそれぞれ機能が異なるプロセッサでもよい。システム100に含まれるプロセッサコアの数に制限は無い。本発明の一実施例では、複数のプロセッサコアは行を成すように構成され、各行はそれぞれ行制御部を有する。例えば、行制御部140は行制御バス145を介してプロセッサコア130、131、および139に接続してもよい。同様に、行制御部160は行制御バス165を介してプロセッサコア150、151、および159に接続してもよい。
プロセッサコアはまた、メッセージバス125を介してセマフォ・エンティティ170に接続される。セマフォ・エンティティ170は、以下に説明するセマフォ機能を提供するためにメモリおよび制御ロジックを有する。本発明の一実施例では、セマフォ・エンティティ170は、下記に詳細に示すように、メッセージを送受信することによってプロセッサコアと相互に作用する。
スレッドディスパッチャ120もまた、メッセージバス125を介してセマフォ・エンティティ170に接続される。本発明の一実施例では、下記に詳細に示すように、スレッドに代わってスレッドディスパッチャがメッセージを送受信することによってセマフォ・エンティティ170と相互に作用する。
各プロセッシングコアの制御回路構成は、同一プロセッシングコア上で実行する複数のスレッドの状態を管理するスレッドスケジューリング回路構成、および、アクティブな命令スレッドを実行する命令実行スケジューリング回路構成を有してもよい。命令の実行中に、1つ以上のプロセッシングコアが共有システムリソースへのアクセスを試みる。共有システムリソースの制御を得るために、スレッドは対応する実行コアを介してアクセスする必要がある共有システムリソースに対応するセマフォの制御を獲得する必要がある。
本発明の一実施例では、セマフォの制御を獲得するために、要求側のプロセッシングコアがメッセージバス125を介してセマフォ・エンティティ170にセマフォ要求メッセージを送信する。セマフォ要求メッセージを送信したあと、要求側のスレッドは非活動状態となり、その命令の実行と関連する処理(例:セマフォへのポーリング)は停止する。
セマフォ要求メッセージの受信に応じて、セマフォ・エンティティ170は要求側のスレッドにセマフォの制御の許可を与えるかどうかを決定する。セマフォの制御が許可されると、セマフォ・エンティティ170はセマフォ承認メッセージを要求側のスレッドに送信する。セマフォ承認メッセージの受信に応じて、要求側のスレッドは活動状態となり要求したリソースを使用する命令の実行を継続する。スレッドが共有リソースの使用を完了すると、スレッドはセマフォ解放メッセージをセマフォ・エンティティ170に送信する。セマフォ解放メッセージの受信に応じて、セマフォ・エンティティ170はセマフォを解放し、他のスレッドがそのシステムリソースへのアクセスを獲得できるようにする。
本発明の一実施例では、セマフォはプロセッシングコアにより実行される命令群(セマフォ命令群)と、プロセッシングコアとセマフォ・エンティティとの間で送受信されるメッセージ群(セマフォメッセージ群)とによってサポートされる。セマフォメッセージ群は、例えば、メッセージバス125を介して送受信される。本発明の他の実施例では、異なるおよび/または追加のメッセージ、または、命令をサポートしてもよい。
リンクドリストベースのセマフォ・エンティティ
本発明の一実施形態では、従来の各セマフォに対するキューは、各セマフォに対するリンクドリストを形成する要素を有するバッファプールに置き換えられる。このため、各セマフォはバッファプール内の要素から成るリンクドリストの先頭要素へのポインタでもよい。リンクドリストは双方向リンクドリストと単方向リンクドリストのどちらでもよい。
本発明の一実施例では、セマフォテーブルはサポートする各セマフォへのポインタを保持する。本発明の一実施例では、セマフォテーブルが保持するポインタは、対応するセマフォによって使用されるリンクドリストの先頭要素を示す先頭ポインタである。フリープールポインタは、バッファプールの先頭およびNULLポインタを含む未使用のセマフォ要素を示す。
本発明の一実施例では、各セマフォ要素は解放状態フィールドと、確認抑制フィールドと、スレッド識別子フィールドと、前要素へのポインタと、次要素へのポインタとを有する。本発明のもう1つの実施例では、他のおよび/もしくは異なるフィールドを使用してもよい。例えば、前要素へのポインタは省略可能である。本発明の一実施例では、各セマフォが、対応するリンクドリストが空であるかどうかを示す1ビット(またはその他のインジケータ)を有してもよい。
セマフォメッセージ群
セマフォ獲得メッセージ(ACQ_MSG)は、セマフォの所有権をセマフォ・エンティティに要求するために、スレッドまたはスレッドに代わってスレッドディスパッチャによって使用される。本発明の一実施例では、ACQ_MSGはセマフォ識別子フィールドと、スレッド識別子フィールドと、「自動リリース」フィールドと、「確認抑制」(ack-suppression)フィールドとを有する。自動解放フィールドは、先頭依存関係のみを有するスレッドに対して使用される。先頭依存関係のみを有するスレッドとは、自身は以前のスレッドに依存するが、自身に依存するスレッドが後続に存在しないスレッドである。確認抑制フィールドは、末尾依存関係のみを有するスレッドに対して使用される。末尾依存関係のみを有するスレッドとは、自身は以前のスレッドに依存しないが、自身に依存するスレッドが後続に存在するスレッドである。ACQ_MSGは、スレッドディスパッチャまたはスレッドに関連する他の制御回路構成によって発行されてもよい。
本発明の一実施例では、ACQ_MSGを受信すると、セマフォ・エンティティはフリープールリストから先頭の要素を削除し、その要素を選択したセマフォの末尾に追加することによって、要求側のスレッドのセマフォ要素を対象のセマフォのリンクドリストにエンキューする。セマフォ要素のフィールドの値は、ACQ_MSGから得た情報に基づいて更新される。セマフォ要素のスレッド識別子フィールド、解放状態フィールド、および確認抑制フィールドの値は、要求側のスレッドのスレッド識別子、ACQ_MSGの自動解放フィールドおよびACQ_MSGの確認抑止フィールドの値に置き換えられる。ACQ_MSGを受信する前にセマフォリンクドリストが空でないとき、セマフォ・エンティティからメッセージは送信されない。しかし、ACQ_MSGを受信する前にセマフォリンクドリストが空であるとき、下記動作のうちの1つが実行される。
確認抑制フィールドがセットされていないとき、メッセージバス125を介して、セマフォ・エンティティから要求側のスレッドに対してACK_MSGがスレッド識別子と共に送信される。確認抑制フィールドがセットされているとき、セマフォ・エンティティからACK_MSGは送信されない。自動解放フィールドがセットされていないとき、エンキューされた直後のセマフォ要素はセマフォリンクドリストにとどまる。自動解放フィールドがセットされているとき、エンキューされた直後のセマフォ要素はセマフォリンクドリストから削除される。
セマフォ解放メッセージ(REL_MSG)はセマフォ・エンティティに対してセマフォの所有権の解放を要求するためにスレッドによって使用される。本発明の一実施例では、REL_MSGはセマフォ識別子フィールドとスレッド識別子フィールドとを有する。本発明の一実施例では、REL_MSGはセマフォの所有権を有するスレッドに関連する制御回路構成によってのみ発行されうる。すなわち、そのスレッドの識別子はセマフォリンクドリストの先頭要素に存在する。REL_MSGを受信すると、セマフォ・エンティティはその要素をセマフォリンクドリストの先頭から削除する。
本発明のもう1つの実施例では、REL_MSGはセマフォを共有する全てのスレッドに関連する制御回路構成によって発行されうる。REL_MSGを受信すると、セマフォ・エンティティはセマフォ要素のリンクドリストにおける位置に関係無く、セマフォリンクドリスト内にある対応する要素の解放状態フィールドをアンセットする。セマフォ要素がリンクドリストの先頭にある場合は、セマフォリンクドリストの先頭から要素が削除される。そして、削除されたセマフォ要素の次のセマフォ要素がそのリンクドリストの先頭要素となる。削除されたセマフォ要素の次のセマフォ要素がNULLでないとき、そのセマフォ要素の値が調査される。リンクドリストの新しい先頭要素の解放状態フィールドがセットされているとき、セマフォリンクドリストの先頭から再びセマフォ要素が削除される。
本発明の一実施例では、リンクドリストの先頭がNULL(セマフォのキューが空の状態)になるまで、または、リンクドリストの先頭要素の解放状態フィールドがアンセット(先頭要素に対応するスレッドからのセマフォの解放を待つ状態)になるまで、この再帰処理が続く。リンクドリストの先頭要素がNULLではないかつ先頭要素の確認抑制フィールドがセットされていないとき、セマフォ・エンティティは先頭要素のスレッド識別子フィールドによって識別されるスレッドに対してACK_MSGを送信する。リンクドリストの先頭要素がNULLではないかつ先頭要素の確認抑制フィールドがセットされているとき、ACK_MSGは送信されない。
セマフォ承認メッセージ(ACK_MSG)は、要求したセマフォが獲得されたことをスレッドに通知するために、セマフォ・エンティティによって生成される。本発明の一実施例では、ACK_MSGはセマフォ識別子フィールドとスレッド識別子フィールドとを有する。ACK_MSGはセマフォ・エンティティによってのみ発行され、スレッド識別子フィールドの値によって識別されるスレッドを実行するプロセッシングコアによって受信される。
ACK_MSGを受信すると、受信したプロセッシングコアはACK_MSGのスレッド識別子フィールドの値によって識別されるスレッドのセマフォ待機状態変数をアンセットする。そして、そのスレッドが非活動状態であるとき、スレッド状態は活動状態に変更される。
セマフォ命令群
セマフォ獲得(ACS)命令が実行されると、要求されたセマフォのセマフォ識別子および要求側のスレッドのスレッド識別子と共に、自動解放フィールドがアンセットされたACQ_MSGメッセージがセマフォ・エンティティに送信される。そして、スレッドのセマフォ待機状態フィールドがセットされ、スレッドは非活動状態となる。ACS命令はセマフォ解放(RLS)命令(下記に説明する)とのペアで(が後に続いて使用される形で)使用される。ACS−RLS命令のペアは、クリティカルセクションのアプリケーションソフトウェアによって使用されうる。
自動解放付セマフォ獲得(ASR)命令が実行されると、要求されたセマフォのセマフォ識別子および要求側のスレッドのスレッド識別子と共に、自動解放フィールドがセットされたACQ_MSGがセマフォ・エンティティに送信される。そして、スレッドのセマフォ待機状態フィールドがセットされ、スレッドは非活動状態となる。本発明の一実施例では、ASR命令はRLS命令とペアで実行することはできない。本発明の一実施例では、ASR命令は先頭依存関係のみを有するスレッドによって使用される。
セマフォ待機(WTS)命令が実行されると、スレッドのセマフォ待機状態の値が確認される。スレッドのセマフォ待機状態がセットされていると、スレッドは非活動状態となる。スレッドのセマフォ待機状態がセットされていないと、スレッドは活動状態にとどまる。WTS命令の受信に応じて、セマフォ・エンティティにメッセージは送信されない。WTS命令の使用は、そのセマフォが以前、スレッドのディスパッチ時にスレッドに代わってスレッドディスパッチャがACQ_MSGを使用したことによって獲得されたことを示す。スレッドディスパッチャによって以前発行されたACQ_MSGの確認抑制フィールドがセットされているときは、WTS命令は使用されない。
セマフォ解放(RLS)命令が実行されると、REL_MSGが解放されるセマフォのセマフォ識別子および解放するスレッドのスレッド識別子と共にセマフォ・エンティティに対して送信される。解放するスレッドは活動状態にとどまる。ACS命令が解放するスレッドによって以前実行されたときは、RLS命令が1回だけ実行される。ASR命令が解放するスレッドによって以前実行されたときは、RLS命令は実行されない。WTS命令が解放するスレッドによって実行されたときは、スレッドディスパッチャによって送信されたACQ_MSGの自動解放フィールドの値によって、WTS命令の後にRLS命令が実行されるケースとされないケースがありうる。ACQ_MSGの自動解放フィールドがアンセットであるとき、RLS命令は発行されない。ACQ_MSGの自動解放フィールドがセットされていれば、WTS命令に続いてRLS命令が発行される。
アクティブセマフォの獲得
命令スレッドがプロセッサによって実行されているとき、命令はリソースが使用可能のときに実行される。例えば、共有メモリロケーションなどセマフォを持つリソースを使用する必要があるときは、そのリソースにアクセスするためにセマフォの所有権が必要となる場合がある。このように、セマフォが必要とされるまでは、命令スレッドの実行は従来技術によって達成される。
本発明の一実施例では、セマフォが必要なとき、セマフォ獲得(ACS)命令が実行される。ACS命令はセマフォを要求する命令スレッドを実行するプロセッサによって実行されうる。ACS命令の実行の一部またはそれへの応答として、メッセージバスを介して、スレッドを実行するプロセッシングコアがセマフォ・エンティティに対してセマフォ獲得メッセージ(ACQ_MSG)を送信する。ACQ_MSGのフォーマットの一例は上述の通りである。他のACQ_MSGのフォーマットも使用可能である。
ACS命令の実行の一部またはそれへの応答として、セマフォを要求するスレッドはセマフォ待機状態フィールドがセットされ、非活動状態とされる。スレッドを非活動状態とすることによって、要求するセマフォに対するポーリング処理を含むスレッドの命令は実行されない。そして、セマフォに対する最初の要求は拒否される。スレッドを非活動状態にすることによって、プロセッサリソースとシステム帯域はスレッドによるセマフォへのポーリング処理によって消費されない。マルチスレッディングをサポートするプロセッシングコアにおいては、プロセッサリソースおよびシステム帯域は他の活動状態のスレッドによって使用されうる。
セマフォ・エンティティはACQ_MSGを受信し、要求者情報の要素を対象のセマフォのリンクドリストに保存する。セマフォが他のスレッドによって所有または制御されていないとき、セマフォリンクドリストに他の要素が存在しないため、そのセマフォ要素はセマフォリンクドリストの先頭に保存される。セマフォが他のスレッドによって所有または制御されているとき、そのセマフォ要素はリンクドリストの末尾に保存される。本発明の一実施例では、リンクドリストの末尾は、バッファプール内のリンクドリストの要素を先頭要素から末尾要素までトラバースすることによって識別される。そして、新しい要素は新しい末尾要素となる。本発明のもう1つの実施例では、セマフォテーブルに保存されたリンクドリストの末尾ポインタによって、リンクドリストの末尾要素が直接識別される。
スレッドがセマフォに対応するリソースの使用を完了すると、以下に詳細に説明するように、セマフォを保持するスレッドはセマフォの制御を解放する。セマフォが解放されると、リンクドリストの先頭にある対応するセマフォ要素が削除され、その次のセマフォ要素がリンクドリストの先頭要素になる。
セマフォ要素がセマフォリンクドリストの先頭になると、その要素の状態フィールドの値がセマフォ・エンティティによって調査される。先頭要素の確認抑制フィールドがセットされていないとき、セマフォ承認メッセージ(ACK_MSG)がセマフォ・エンティティからセマフォ要素に関連付けられたスレッドに対して送信される。ACK_MSGのフォーマットの一例は上記説明の通りである。他のACK_MSGフォーマットを使用してもよい。ACK_MSGは、受信側のエンティティに対して対応するセマフォの制御が許可されたことを示す。
ACK_MSGの受信に応じて、対応するスレッドが活動状態になる。スレッドが活動状態になると、スレッドの命令処理は再開され、セマフォに対応する共有リソースがアクセス可能となる。スレッドが共有リソースへのアクセスを完了すると、以下に詳細に説明するように、セマフォが解放される。
アクティブセマフォの解放
本発明の一実施例では、セマフォ解放(RLS)命令が実行されると、セマフォが解放される。RLS命令は、セマフォを要求する命令スレッドを実行するプロセッサによって実行されうる。RLS命令の実行の一部またはそれに対する応答として、セマフォ解放メッセージ(REL_MSG)がセマフォ・エンティティに対して送信される。REL_MSGのフォーマットの一例は上述の通りである。他のREL_MSGフォーマットを使用してもよい。
REL_MSGの受信に応じて、セマフォ・エンティティはREL_MSGのスレッド識別子フィールドの値とセマフォリンクドリストとを比較する。対応するセマフォ要素がそのリンクドリストの先頭にあるとき、セマフォ・エンティティはリンクドリストの先頭からそのスレッド要素を削除する。そして、そのリンクドリスト内の次の要素が先頭要素となる。そして、その新しい先頭要素に対応するスレッドに対して、セマフォの制御を許可することができる。対応するセマフォ要素がそのリンクドリストの先頭にないとき、セマフォ・エンティティはそのセマフォ要素の解放状態フィールドをセットする。
動作モデル
使用されるリンクドリストの形式によって、セマフォはアソシエイティブセマフォとオーダードセマフォとに分類される。セマフォ・エンティティからのACK_MSGの送信の有無によって、セマフォはアクティブセマフォとプロアクティブセマフォとに分類される。このように、4種類のセマフォがサポートされうる。
アソシエイティブセマフォの一実施例の概要
アソシエイティブセマフォはコンカレントスレッドによるセマフォへの順序不同のアクセスを可能にする。本発明の一実施形態では、セマフォはセッションの開始時にNULLリンクドリスト(または空のリンクドリストであることを示す1ビット)の形でスレッドディスパッチャによって初期化される。スレッドディスパッチャからセマフォ・エンティティには、これ以外のメッセージは送信されない。セマフォリンクドリストは、複数の命令スレッドを実行する実行回路構成によって動的に構築される。
本発明の一実施形態では、スレッドはACSまたはASR命令を実行してアソシエイティブセマフォを要求する。スレッドは、RLS命令を実行することによってアソシエイティブセマフォを解放する。本発明の一実施例では、新規ACQ_MSGを受信すると、要求側のスレッドに対応する要素がそのセマフォリンクドリストの末尾に保存される。これにより、First-come, First-served(FCFS)のセマフォモデルが提供される。
オーダードセマフォの一実施例の概要
オーダードセマフォはコンカレントスレッドによる予め定められた順番でのセマフォへのアクセスを可能にする。この順序は、スレッドのディスパッチ時にスレッドディスパッチャによって予め定められる。この順序はアプリケーションに依存してもよい。スレッドのディスパッチはその性質から順次的であり、スレッドがディスパッチされた順番のセマフォリンクドリストを構築するため、スレッドディスパッチャはディスパッチされる各スレッドに代わってACQ_MSGをセマフォ・エンティティに送信してもよい。
クリティカルセクションにアクセスするスレッドは、セマフォの所有権を待つためにWTS命令を使用してもよい。ACSおよびASR命令は、スレッドがすでにセマフォリンクドリストに保存されていると考えられるため、使用されない。本発明の一実施例では、セマフォ・エンティティはリンクドリストの順番に従ったセマフォの制御のみを提供できる。セマフォを待つスレッドはリンクドリストの順番でACQ_MSGを受信する。
アクティブセマフォの一実施例の概要
上述したとおり、アクティブセマフォ使用時は、スレッドを非活動状態から活動状態にするためにACQ_MSGが使用される。セマフォ・エンティティはスレッドを実行する実行回路構成から1つ以上のACQ_MSGを受信する。セマフォ・エンティティはセマフォリンクドリストの先頭にあるスレッドに対応する実行回路構成に対してACK_MSGを1回だけ送信する。セマフォリンクドリストの先頭要素を削除すると、セマフォ・エンティティはリンクドリストの新しい先頭要素の状態を調査し、その新しい先頭要素のスレッドに対応する実行回路構成に対して次のACK_MSGを送信してもよい。アクティブセマフォはアソシエイティブセマフォともなりうる。
プロアクティブセマフォの一実施例の概要
プロアクティブセマフォはスレッドが非活動状態であるかどうかに関らず、セマフォリンクドリストの先頭要素のスレッドに対して、ACK_MSGを1回だけ送信する。この方式はスレッドディスパッチャによって以前ACQ_MSGが送信されたオーダードセマフォを使用するスレッドに適用するため、スレッドにはACK_MSGが1回だけ送信される。オーダードセマフォを使用するスレッドは、WTSおよび/またはRLS命令を含んでもよい。
プロアクティブセマフォ使用時は、セマフォリンクドリストの先頭要素のスレッドに対して、ACK_MSGがセマフォ・エンティティによって自動的に送信される。本発明の一実施例では、スレッドが実行回路構成によって認識されたときに、スレッドディスパッチャによってスレッドの要素がセマフォリンクドリストにエンキューされたとき、「リスク条件」が存在する可能性がある。両方の動作がスレッドディスパッチャによって開始され、異なるデータパスを介して実行されるため、これらのイベントのタイミングは考慮される必要がある。
セマフォを構成する前にスレッドの実行が始まり、かつ、スレッド内にWTS命令があるとき、リスク状態は存在しない。スレッドのセマフォ待機スレッド状態変数はスレッドディスパッチャによって設定されるため、スレッドがセマフォリンクドリストにエンキューされる前にスレッド内のWTS命令が実行されても、リスク状態は発生しない。WTS命令はセマフォ・エンティティにメッセージを送信することなく、スレッドを非活動状態にする。セマフォ・エンティティがスレッドにACK_MSGを送信すると、実行回路構成がスレッドを活動状態にする。
スレッドディスパッチャによって確認抑制フィールドがセットされたセマフォが構成されると、リスク状態になりうる。この場合、スレッドは非活動状態にならない。そのかわりに、スレッドに対してセマフォが設定される前にスレッドがRLS命令を実行してREL_MSGをセマフォ・エンティティに対して送信すると、セマフォ・エンティティはREL_MSGを処理する状態にない可能性がある。このリスク状態を回避するために、スレッドの実行およびセマフォ・エンティティは、スレッドディスパッチャによってACQ_MSGが発行される前にREL_MSGが発行されないことを保証することができる。
このように本発明の一実施例では、リスク状態を回避するために、確認抑制フィールドがセットされていないときは、セマフォの設定が完了する前にスレッドディスパッチャがスレッドの設定を完了する。確認抑制フィールドがセットされているときは、スレッドの設定が完了する前にスレッドディスパッチャがセマフォの設定を完了する。スレッドディスパッチャは準備ができたスレッドを順次的にディスパッチするため、順次処理によって必要な順序を保証することができる。
セマフォの設定前にスレッドの設定が完了したら、スレッドディスパッチャはスレッドをディスパッチして、セマフォの設定を行うメッセージを送信する前に、スレッドの設定が完了したことを示す信号を待つ。スレッドの設定前にセマフォの設定が完了したら、スレッドディスパッチャはセマフォの設定を開始するメッセージを送信して、スレッドをディスパッチする前に、セマフォの設定が完了したことを示す信号を待つ。順次的な設定はディスパッチャからのスループットを不必要に制限するため、この設定処理はパイプライン処理にしてもよい。
スレッドの同期
図2aから図2dは、セマフォを使用してスレッド実行を同期化できる依存関係の概念を示す。図2aは1:1:1(1対1)の依存関係を示す。図2aの依存関係は強いシーケンシャルオーダー依存関係またはアソシエイティブ依存関係でもよい。強いシーケンシャルオーダー依存関係においては、1つのプロアクティブオーダードセマフォが使用できる。本発明の一実施例では、セマフォを要求するためにスレッドディスパッチャからセマフォ・エンティティに送信されるACQ_MSGの確認抑制フィールドおよび自動解放フィールドは共にアンセットである。命令スレッドはセマフォを獲得および解放するためにWTS−RLS命令ペアを有する。
アソシエイティブ依存関係に対しては、1つのアクティブアソシエイティブセマフォを使用できる。本発明の一実施例では、セマフォを要求するためにスレッドを実行する実行回路構成からセマフォ・エンティティに送信されるACQ_MSGの確認抑制フィールドと自動解放フィールドは共にアンセットである。命令スレッドはセマフォを獲得および解放するためにACS−RLS命令ペアを有する。
図2bは、1個のスレッドがN個の他のスレッドに対して先頭依存関係を有し、N個の他のスレッドは互いに依存しない、1:N(1対多)の依存関係を示す。ここでのNは1以上の正の整数である。1:Nの依存関係では、1つのプロアクティブオーダードセマフォが使用できる。本発明の一実施例では、N個の独立したスレッドに対して、N個のスレッドに代わってスレッドディスパッチャがACQ_MSGを送信する。セマフォを要求するためにスレッドディスパッチャからセマフォ・エンティティに送信されたACQ_MSGの確認抑制フィールドはセットされ、自動解放フィールドはアンセットされる。他のN個のスレッドに対して先頭依存関係を有する1つのスレッドに対しても、スレッドディスパッチャによってACQ_MSGが送信される。セマフォを要求するACQ_MSGの確認抑制フィールドはアンセットされ、自動解放フィールドはセットされる。N個の命令スレッドは、セマフォを解放するためにRLS命令のみを有する。1つの命令スレッドは、セマフォを獲得および解放するためにWTS−RLS命令ペアを有する。
図2cは、N個のスレッドが1個のスレッドに対して先頭依存関係を有するが、N個のスレッドは互いに依存していない、N:1(多対1)の依存関係を示す。N対1の依存関係に対しては、1つのプロアクティブオーダードセマフォを使用できる。本発明の一実施例では、N個の依存するスレッドおよび1つの依存されるスレッドの両方の代わりに、スレッドディスパッチャがACQ_MSGを送信する。本発明の一実施例では、1つの依存されるスレッドに対してセマフォを要求するためのACQ_MSGの確認抑制フィールドはセットされ、自動解放フィールドはアンセットされる。N個の依存するスレッドに対してセマフォを要求するためのACQ_MSGの確認抑制フィールドはアンセットされ、自動解放フィールドはセットされる。1つの依存される命令スレッドは、セマフォを解放するためにRLS命令のみを有する。N個の依存する命令スレッドは、セマフォを獲得および解放するためにWTS−RLS命令ペアを有する。
図2dは、N個の依存するスレッドがM個の依存されるスレッドに対して先頭依存関係を有する、N:M(多対多)の依存関係を示す。この場合、N個の依存するスレッドは互いに依存しておらず、M個の依存されるスレッドも互いに依存しない。N:M依存関係の場合は、上述の1:1:1、1:N、およびN:1の場合と比べるとより一般的なケースである。N:M依存関係に対しては、1つのプロアクティブオーダードセマフォが使用できる。本発明の一実施例では、N個の依存するスレッドとM個の依存されるスレッドの両方に代わって、スレッドディスパッチャがACQ_MSGを送信する。本発明の一実施例では、M個の依存されるスレッドに対してセマフォを要求するACQ_MSGの確認抑制フィールドがセットされ、自動解放フィールドがアンセットされる。N個の依存するスレッドに対してセマフォを要求するACQ_MSGの確認抑制フィールドはアンセットされ、自動解放フィールドはセットされる。M個の依存される命令スレッドは、セマフォを解放するためにRLS命令のみを有する。N個の依存する命令スレッドは、セマフォを獲得および解放するためにWTS−RLS命令ペアを有する。
図2aから図2dが示す依存関係は、より複雑な依存関係をサポートするためにも使用できる。例えば、N:1:N依存関係に対しては、2つのプロアクティブオーダードセマフォが使用できる。N:1の依存関係は図2cと上記説明にあるように処理され、1:Nの依存関係は図2bと上記説明にあるように処理される。
下記に詳細に説明するように、上記のセマフォ機構およびスレッドの同期化技術はコンピュータまたは類似の電子システムにおける多くの処理に対して適用できる。下記の例にあるように、多様な図形データの処理技術がここで説明されるセマフォ機構を使用して実行されうる。アクティブおよびプロアクティブセマフォの有用な使用例として図形データの処理技術を説明するが、これらのセマフォ機構の使用は、図形データの処理のみに制限されない。
セマフォとレイトレーシング
レイトレーシングは3次元グラフィックスをレンダリングするための技術で、鏡面、透明表面、影などの、複雑な光の相互作用をサポートできる。一般的に、レイトレーシングは、シーン内のレイバウンスにおいて光線がたどるパスを再帰的にトレースすることにより反射と屈折をモデル化することを基としている。2つのバウンス間(スクリーンポジションから第1のバウンス間、スクリーンポジション間、または光源へのバウンス)の光線のトレースは、レイセグメントと呼ばれる。光線がビューイングパースペクティブ(例:カメラ)から光源までトレースされることによって、各ピクセルのカラーが決定される。多様なレイトレーシングの技法が従来技術として知られている。レイトレーシングの従来技術については、例えばCook, R.L. and Torrance, K.E., "A Reflectance Model for Computer Graphics," ACM Trans. on Graphics 1, 1 (Jan.1982) および Glassner, A.(ed), "An Introduction to Ray Tracing," Academic Press, New York, 1989を参照のこと。
レイトレーシング技術を使用してイメージをレンダリングするときは、各スクリーン位置に対する視線からレンダリングを開始することによってスクリーンイメージを得ることができる。スクリーン位置は対象ピクセルとも呼ばれる。各視線は3次元のシーン空間をトラバースし、シーン内のオブジェクトとの反射および屈折相互作用によって1つ以上のレイセグメントを形成する。異なる対象ピクセルに関連するレイセグメントは、互いに独立している。異なる対象ピクセルに関連するレイセグメントの処理は、共有リソースを変更することなく並列で計算されうるため、セマフォ機構を使用する必要もない。
イメージスクリーン上には多くの対象ピクセルが存在するため、レイトレーシングの処理は大規模なマルチスレッドコンピューティングアーキテクチャに適している。1つの対象ピクセルに対して、複数のレイセグメントが存在してもよい。1つのピクセルに対する複数のレイセグメントの影響が集約されて、そのピクセルに関連する各レイセグメントの加重和としてそのピクセルの最終カラーが決定される。例えば、1つのピクセルに対するレイセグメントが、大規模なマルチスレッドコンピューティングアーキテクチャ上の異なるスレッドによって実行されたとき、このピクセルに関連するスレッドが共有するリソースであるピクセルの最終カラーの更新には、セマフォ機構の使用を必要とする。例えば、上述のN:1の依存関係の処理をレイトレーシングに使用することができる。
アクティブおよび/またはプロアクティブセマフォを使用することによって、レイセグメントのトレーシング処理(共通のピクセルに関連するレイセグメントを含む)は並列で実行できる。本発明の一実施例では、対象ピクセルのアドレスをハッシュすることによって、セマフォ識別子を決定できる。独立するピクセルの数より少ない数のセマフォしか利用できないときは、いくつかのピクセルがセマフォを共有してもよい。これは性能の問題であり、機能の問題ではない。本実施例では、グローバルな同期を行うことなく、セマフォを動的に使用することができる。セマフォを使用しなければ、1つのピクセルに関連するレイセグメントのトレーシング処理は順次的に実行される。このように、セマフォをレイトレーシング技術と共に使用するによって、より並列な処理が可能となる。
図3は光線が光源から視点までトレースされたシーンの単純な例を示す。光源300と視点330の間には多数の光線が存在するが、説明を単純にするために、図3には少数の光線のみが図示されている。
光線340は光源300から視点330へ直接進む。光線340は反射または屈折されていないため、光線340に対応するピクセルは光源300によって提供される光のカラーによって表現される。レイセグメント350および355に対応する光のレイトレーシング計算は、光がオブジェクト310によって反射されているため、より複雑である。
上述の通り、セグメント350および355のレイトレーシング処理は、並列で実行されうる。このように、セグメント350および355に対するレイトレーシング処理は2つのスレッドによって実行でき、その結果は複数のレイトレーシング処理から得たピクセルカラーを集約した値となる。2つのスレッド間の調整は、上述のアクティブセマフォを使用することによって可能である。
図4はアクティブセマフォを使用したレイトレーシングの一実施例を示すフロー図である。410において、光線のパスが決定される。光線のパスの決定は、従来技術によって実現される。420において、レイトレーシング処理に使用される部品(例:ハードウェア部品、ソフトウェア部品など)が、1つのピクセルに対して複数のレイセグメントが影響しているかどうかを決定する。
420において1つのレイセグメントが1つのピクセルに影響していると判定されたとき、425においてその光線のパスがトレースされる。この1つのレイセグメントに対しては、従来技術のレイトレーシング技法を使用できる。475において、レイトレーシング処理の結果に基づいてピクセルのカラーが決定される。そしてこのピクセルは表示、印刷、またはレンダリングされうる。
420において、1つのピクセルに対して複数のレイセグメントが影響していると判定されたとき、1つ以上のレイセグメントが並列でトレースされうる。複数のレイセグメントに対する並列レイトレーシング処理は、ピクセルの処理結果がN個のレイセグメントに対するレイトレーシング処理の結果に対して依存する、N:1の依存関係を作り出す。このN:1の依存関係は、上述の通り処理される。
440においてこの依存関係が解決されると、450において複数のレイトレーシング処理の結果が集約される。475において、複数のレイトレーシング処理を集約した結果に基づいて、ピクセルカラーが決定される。そしてこのピクセルは表示、印刷、またはレンダリングされうる。
アクティブセマフォを使用したZバッファベースの3次元レンダリング
Zバッファベースの3次元グラフィックスレンダリングでは、レンダリングされたオブジェクトは点、線、三角形、三角形ストリップなどのような、レンダリングプリミティブに分割される。レンダリングプリミティブはスクリーン上に投影される。異なるスクリーンピクセルに投影されるレンダリングプリミティブは、独立してレンダリングされうる。複数の不透明なプリミティブが同一のスクリーンピクセル上に投影されているとき、他のプリミティブより前にあるプリミティブ(Z値と呼ばれる対象ピクセルからの距離が、小さいプリミティブ)だけがスクリーンピクセルのカラーを更新する。
Zバッファは、スクリーンサイズのバッファであり、各スクリーンピクセルに対する最新の更新におけるZ値を保持する。見えない部分はZテストによって解決される。スクリーンピクセルに投影されるあらゆるプリミティブに対して、そのプリミティブのZ値とZバッファに保存されているそのスクリーンピクセルのZ値とを比較する。プリミティブのZ値がZバッファの値より小さいと、対象ピクセルのカラーがプリミティブからレンダリングされたカラーに更新され、Zバッファ値も更新される。プリミティブのZ値がZバッファの値と同じまたはそれより大きいとき、対象ピクセルカラーと対応するZバッファの値は更新されない。
安定したスクリーンピクチャを生成するために同一のスクリーンピクセルに投影されるプリミティブは厳格な順番に従ってレンダリングされる必要がある。Zバッファベースの3次元レンダリングは大規模なスレッドアーキテクチャ上でマルチスレッド処理を行うことによって実現できる。例えば、独立したプリミティブは独立したスレッドによってレンダリングされうる。例えばZバッファテストや複数のプリミティブによる共通のピクセルの更新のような、プリミティブ間の依存関係は、上述のセマフォ機構を使用することによって解消できる。
図5は、プロアクティブオーダードセマフォを使用したZバッファベースの3次元グラフィックスレンダリングの一実施例を示すフロー図である。510において、レンダリングされるオブジェクトは、スクリーンへの投影に基づいて、プリミティブまたはプリミティブの一部にセグメント化される。520において、投影されるスクリーンピクセルの位置に基づいて、プリミティブまたはプリミティブの一部に対してセマフォが設定される。
530において、プリミティブまたはプリミティブの一部分に対するレンダリング処理が、複数の命令スレッドによって実行される。これらのスレッドは1つ以上のプロセッサによって実行でき、1つ以上の上述のセマフォ機構を使用して依存関係を解消できる。例えば、異なるスレッドによる同じスクリーンピクセル上に投影された複数のプリミティブに対する3次元レンダリングの実行は、各スレッドのZテストと対象カラーの更新が同一スクリーンのピクセルを更新する1つ以上の以前のスレッドの結果に依存する、1:1:1の依存関係を作り出す。1:1:1依存関係は上記のように処理できる。
540において依存関係が解決されると、550において、プリミティブまたはプリミティブセグメント用のスレッドはZテストを実行し、Zテストが成功するとZ値および投影されたピクセルのカラー値が更新される。560において、プリミティブがレンダリングされた後、最終のレンダリングされたピクチャが生成される。そして、この最終のレンダリングされたピクチャは、表示、印刷、または投影されうる。
アクティブセマフォを使用したビデオデコーディング
いくつかのビデオ符号化の標準規格、例えばMPEG−2、では、1つのピクチャ(Visual object planeまたはVOP)内の1つ以上のセグメント(例:マクロブロック)のグループは、独立した命令スレッドによってデコードされうる。いくつかのビデオ符号化の標準規格、例えばMPEG−4、では、マクロブロックのようなピクチャセグメントのデコード処理は、他のピクチャセグメントのデコード処理に対して依存関係を有する。このように、マルチスレッドアーキテクチャ上で実行される複数の命令スレッドによって、ピクチャがデコードされうる。スレッド間の依存関係は上述のセマフォ機構を使用することによって解決できる。
MPEG−2は、例えば、2000年10月に発行されたISO/IEC13818「Generic coding of moving pictures and associated audio information」および関連する標準規格によって説明されている。MPEG−4は、例えば、2002年3月に発行されたISO/IEC14496「"Coding of audio-visual objects」および関連する標準規格によって説明されている。
図6は、アクティブおよび/またはプロアクティブセマフォを使用したビデオデコーディングの一実施形態を示すフロー図である。このフロー図は、ビデオシーケンスの1つのピクチャをデコードする処理を示す。ビデオシーケンスの複数のピクチャをデコードするために、これと同様のプロセスを繰り返すことができる。610において、デコードされるピクチャのセグメントが決定される。セグメントは、例えば、ブロック、ブロックのグループ、マクロブロック、マクロブロックのグループ、またはその他のデコードするフレームのいかなるセグメンテーションでもよい。
本発明の一実施例では、それぞれ異なる命令スレッドによってセグメントに対するデコード処理を実行する前に、640において、セグメント間の依存関係を決定する。620において、セグメントが先頭依存関係を有するとき(そのセグメントのデコーディングが他のセグメントのデコーディング結果に依存するとき)、そのセグメントを処理する命令スレッドに対して先頭依存関係のセマフォが1つ以上設定される。630において、セグメントが末尾依存関係を有するとき(後続のデコーディング処理がこのセグメントのデコーディング結果に依存している)、そのセグメントを処理する命令スレッドに対して末尾依存関係のセマフォが1つ以上設定される。
640において、複数の命令スレッドによって、セグメントに対するデコード処理が実行される。スレッドは1つ以上のプロセッサによって実行され、依存関係は1つ以上の上述のセマフォ機構を使用することによって解決できる。例えば、N個のセグメントに対して先頭依存関係を有する1つのセグメントに対しては、N:1の依存関係モードに設定されたセマフォを使用することによって、これらのセグメントの依存関係を解決できる。N個の依存されるセグメントのスレッドは末尾依存関係のセマフォと共に設定される。1つの依存するセグメントは先頭依存関係のセマフォと共に設定される。このN:1の依存関係は上述の通り処理される。
630においてセグメントの依存関係が解決されると、650においてデコードされたセグメントの結果が生成される。660において、セグメントの結果が集約されて最終のピクチャが生成される。そして最終のデコードされたピクチャが表示、印刷、または投影されうる。
結論
本明細書において「第1の実施形態」、「実施形態」が実施例とともに意味する、特定の特徴、構造、または性質は、少なくとも本発明の一実施例には含まれる。本明細書内に見られる「一実施例」は、必ずしも本発明の同一実施例を参照していない。
上記明細書においては、本発明を特定の実施例を用いて説明している。しかし、本発明の広範な本質および範囲から逸れることなく、種々の修正や変更をすることが可能であることは明白である。本明細書と図面は、それぞれ、本発明を限定するのではなく、本発明を説明するためのものであると見なされるべきである。

Claims (36)

  1. メモリが、第1の命令スレッドの命令スレッドの状態表示を維持するステップと、
    実行回路構成が、表示するイメージの第1の図形要素を処理する前記第1の命令スレッドを実行するステップと、
    前記実行回路構成が、表示するイメージの第2の図形要素を処理する第2の命令スレッドを実行するステップと、
    前記第1の図形要素と前記第2の図形要素の間における関係に関連する予め定められた条件セットのうち少なくとも1つが検知されたことに応じて、前記第1の命令スレッドの前記状態表示がセットされている場合、実行回路構成が、前記第1の命令スレッドを非活動状態にするステップと、
    前記実行回路構成が、セマフォ・エンティティからメッセージを受信するまで前記第1の命令スレッドを前記非活動状態に維持するステップと、
    前記セマフォ・エンティティが、前記第1の命令スレッドの実行を再開するメッセージを、前記実行回路構成に送信するステップと、
    前記実行回路構成が、前記セマフォ・エンティティから前記メッセージを受信したことに応じて、前記第1の命令スレッドの前記状態表示をアンセットし、前記第1の命令スレッドの実行を再開するステップと
    を備え
    前記状態表示は、前記第1の命令スレッドのディスパッチ時にセットされる方法。
  2. 前記予め定められた条件セットが未解決の依存関係を備える請求項1に記載の方法。
  3. 前記予め定められた条件セットがセマフォに対応するリソースが利用できないこと
    を示す前記セマフォからの無反応を備える請求項1に記載の方法。
  4. メモリが、前記第2の命令スレッドの状態表示を維持するステップを更に備える請求項1に記載の方法。
  5. 各命令スレッドの前記状態表示が、その命令スレッドに関連する命令スレッドの依存関係が存在する場合において、当該依存関係に相当する状態変数を備える請求項4に記載の方法。
  6. 前記第1の命令スレッドが第1のセットのレイトレーシング命令と、第1のレイセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのレイトレーシング命令と、第2のレイセグメントを備える前記第2の図形要素とを備える請求項1に記載の方法。
  7. 前記第1の命令スレッドが第1のセットのビデオデコーディング命令と、第1のピクチャセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのビデオデコーディング命令と、第2のピクチャセグメントを備える前記第2の図形要素とを備える請求項1に記載の方法。
  8. 前記第1のピクチャセグメントが第1のマクロブロックを備え、前記第2のピクチャセグメントが第2のマクロブロックを備える請求項7に記載の方法。
  9. 前記第1の命令スレッドが第1のセットの3次元レンダリング命令と、第1のレンダリングプリミティブを備える前記第1の図形要素とを備え、更に前記第2の命令スレッドが第2のセットの3次元レンダリング命令と、第2のレンダリングプリミティブを備える前記第2の図形要素とを備える請求項1に記載の方法。
  10. 前記第1のレンダリングプリミティブが第1の点、第1の線、第1の三角形、および第1の三角形ストリップのうちの1つを備え、更に、前記第2のレンダリングプリミティブが第2の点、第2の線、第2の三角形、および第2の三角形ストリップのうちの1つを備える請求項9に記載の方法。
  11. 実行回路構成が、前記第1のレンダリングプリミティブのZ値を判定する命令スレッドを実行するステップと、
    前記実行回路構成が、前記第2のレンダリングプリミティブのZ値を判定する命令スレッドを実行するステップと、
    前記実行回路構成が、前記第1のレンダリングプリミティブと前記第2のレンダリングプリミティブとの関係を判定するために、前記第1のレンダリングプリミティブおよび前記第2のレンダリングプリミティブのZ値を比較する命令スレッドを実行するステップと、
    前記実行回路構成が、前記第1のレンダリングプリミティブと前記第2のレンダリングプリミティブとの間の関係を元に選択された、前記第1のレンダリングプリミティブと前記第2のレンダリングプリミティブのうちの1つを表示する命令スレッドを実行するステップと
    を更に備える請求項9に記載の方法。
  12. 第1の命令スレッドを保存する、実行回路構成に接続されたメモリと、
    イメージの第1の図形要素についての前記第1の命令スレッドと、イメージの第2の図形要素についての第2の命令スレッドとを受信して実行し、前記第1の命令スレッドが関連するセマフォを有するリソースを必要とすることに応じて、前記第1の命令スレッドの状態表示がセットされている場合、セマフォ要求メッセージを送信し前記第1の命令スレッドを非活動状態にする実行回路構成と、
    前記実行回路構成から前記セマフォ要求メッセージを受信して、前記実行回路構成に対してセマフォ承認メッセージを送信することにより、前記セマフォ要求メッセージの受信に応じて第1の命令スレッドについて選択的にセマフォの制御を許可する、前記実行回路構成に接続されたセマフォ・エンティティと
    を備え、
    前記メモリは、前記第1の命令スレッドの命令スレッドの前記状態表示を維持し、
    前記実行回路構成は、前記セマフォ承認メッセージの受信に応じて、前記第1の命令スレッドの前記状態表示をアンセットし、前記第1の命令スレッドを前記非活動状態から除き、
    前記状態表示は、前記第1の命令スレッドのディスパッチ時にセットされる装置。
  13. 前記実行回路構成が
    前記第1の命令スレッドを実行する第1の実行回路と、
    前記第2の命令スレッドを実行する第2の実行回路と
    を備える請求項12に記載の装置。
  14. 前記第1の命令スレッドが第1のセットのレイトレーシング命令と、第1のレイセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのレイトレーシング命令と、第2のレイセグメントを備える前記第2の図形要素とを備える請求項12に記載の装置。
  15. 前記第1の命令スレッドが第1のセットのビデオデコーディング命令と、第1のピクチャセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのビデオデコーディング命令と、第2のピクチャセグメントを備える前記第2の図形要素とを備える請求項12に記載の装置。
  16. 前記第1のピクチャセグメントが第1のマクロブロックを備え、前記第2のピクチャセグメントが第2のマクロブロックを備える請求項15に記載の装置。
  17. 前記第1の命令スレッドが第1のセットの3次元レンダリング命令と第1のレンダリングプリミティブを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットの3次元レンダリング命令と第2のレンダリングプリミティブを備える前記第2の図形要素とを備える請求項12に記載の装置。
  18. 前記第1のレンダリングプリミティブが第1の点、第1の線、第1の三角形、および第1の三角形ストリップのうちの1つを備え、更に、前記第2のレンダリングプリミティブが第2の点、第2の線、第2の三角形、および第2の三角形ストリップのうちの1つを備える、請求項17に記載の装置。
  19. 前記メモリは、更に前記第2の命令スレッドを保存する、請求項12に記載の装置。
  20. 命令スレッドを実行する少なくとも1つの追加実行回路と、
    前記実行回路構成および少なくとも1つの追加実行構成回路に接続された、命令スレッドを実行するために命令スレッドをディスパッチするスレッドディスパッチャと
    を更に備える請求項12に記載の装置。
  21. 前記第1の命令スレッドが非活動状態のとき、命令の実行が停止し、前記実行回路構成がセマフォ要求メッセージの状態を判定するために前記セマフォ・エンティティにポーリング処理を行わない請求項12に記載の装置。
  22. 第1の命令スレッドの命令スレッドの状態表示を維持する手段と、
    表示するイメージの第1の図形要素を処理する前記第1の命令スレッドを実行する手段と、
    表示するイメージの第2の図形要素を処理する第2の命令スレッドを実行する手段と、
    前記第1の図形要素と前記第2の図形要素の間の関係に関連する予め定められた条件セットのうち少なくとも1つが検知されたことに応じて、前記第1の命令スレッドの前記状態表示がセットされている場合、前記第1の命令スレッドを非活動状態にする手段と、
    セマフォ・エンティティからメッセージを受信するまで前記第1の命令スレッドを非活動状態に維持する手段と、
    前記セマフォ・エンティティによって、前記第1の命令スレッドの実行を再開するメッセージを送信する手段と、
    前記セマフォ・エンティティからメッセージを受信したことに応じて前記第1の命令スレッドの前記状態表示をアンセットし、前記第1の命令スレッドの実行を再開する手段と
    を備え
    前記状態表示は、前記第1の命令スレッドのディスパッチ時にセットされる装置。
  23. 前記第1の命令スレッドが第1のセットのレイトレーシング命令と、第1のレイセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのレイトレーシング命令と、第2のレイセグメントを備える前記第2の図形要素とを備える請求項22に記載の装置。
  24. 前記第1の命令スレッドが第1のセットのビデオデコーディング命令と、第1のマクロブロックを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのビデオデコーディング命令と、第2のマクロブロックを備える前記第2の図形要素とを備える請求項22に記載の装置。
  25. 前記第1の命令スレッドが第1のセットの3次元レンダリング命令と第1のレンダリングプリミティブを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットの3次元レンダリング命令と第2のレンダリングプリミティブを備える前記第2の図形要素とを備える請求項22に記載の装置。
  26. メモリコントローラと、
    イメージの第1の図形要素についての第1の命令スレッドと、イメージの第2の図形要素についての第2の命令スレッドとを受信して実行し、前記第1の命令スレッドが関連するセマフォを有するリソースを必要とすることに応じて、前記第1の命令スレッドの状態表示がセットされている場合、セマフォ要求メッセージを送信し前記第1の命令スレッドを非活動状態にする、前記メモリコントローラに接続された実行回路構成と、
    前記実行回路構成から前記セマフォ要求メッセージを受信して、前記実行回路構成に対してセマフォ承認メッセージを送信することにより、前記セマフォ要求メッセージの受信に応じて第1の命令スレッドについて選択的にセマフォの制御を許可する、前記実行回路構成に接続されたセマフォ・エンティティと
    前記第1の命令スレッドを保存する、前記メモリコントローラに接続されたメモリと、
    を備え、
    前記メモリは、前記第1の命令スレッドの命令スレッドの前記状態表示を維持し、
    前記実行回路構成は、前記セマフォ承認メッセージの受信に応じて、前記第1の命令スレッドの前記状態表示をアンセットし、前記第1の命令スレッドを前記非活動状態から除き、
    前記状態表示は、前記第1の命令スレッドのディスパッチ時にセットされるシステム。
  27. 前記実行回路構成が
    前記第1の命令スレッドを実行する第1の実行回路と、
    前記第2の命令スレッドを実行する第2の実行回路と
    を備える請求項26に記載のシステム。
  28. 前記第1の命令スレッドが第1のセットのレイトレーシング命令と、第1のレイセグメントを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのレイトレーシング命令と、第2のレイセグメントを備える前記第2の図形要素とを備える請求項26に記載のシステム。
  29. 前記第1の命令スレッドが第1のセットのビデオデコーディング命令と、第1のマクロブロックを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットのビデオデコーディング命令と、第2のマクロブロックを備える前記第2の図形要素とを備える請求項26に記載のシステム。
  30. 第1のピクチャセグメントが第1のマクロブロックを備え、第2のピクチャセグメントが第2のマクロブロックを備える、請求項29に記載のシステム。
  31. 前記第1の命令スレッドが第1のセットの3次元レンダリング命令と第1のレンダリングプリミティブを備える前記第1の図形要素とを備え、更に、前記第2の命令スレッドが第2のセットの3次元レンダリング命令と第2のレンダリングプリミティブを備える前記第2の図形要素とを備える請求項26に記載のシステム。
  32. 前記第1のレンダリングプリミティブが第1の点、第1の線、第1の三角形、および第1の三角形ストリップのうちの1つを備え、更に、前記第2のレンダリングプリミティブが第2の点、第2の線、第2の三角形、および第2の三角形ストリップのうちの1つを備える請求項31に記載のシステム。
  33. 前記第1の命令スレッドおよび前記第2の命令スレッドを保存する、前記メモリコントローラに接続されたメモリを更に有する請求項26に記載のシステム。
  34. 前記第1の命令スレッドが非活動状態のとき、命令の実行が停止し、前期実行回路構成が前記セマフォ要求メッセージの状態を判断するために前記セマフォ・エンティティにポーリング処理を行わない請求項26に記載のシステム。
  35. 前記少なくとも1つのレイセグメントが同一の対象ピクセルに関連付けられるように、前記対象ピクセルにセマフォが関連付けられ、複数の命令スレッドのうち、前記少なくとも1つのレイセグメントに関連付けられた命令スレッドにそれぞれ関連付けられるセマフォ要素を有するリンクドリストである前記セマフォをメモリが保持するステップと、
    前記実行回路構成が、前記複数の命令スレッドを実行して、前記少なくとも1つのレイセグメントを並列に計算するステップと、
    前記実行回路構成が、前記命令スレッドに対応する前記セマフォ要素を前記リンクドリストの先頭から削除することを前記セマフォ・エンティティに指示する命令を実行するステップと、
    前記セマフォ・エンティティが、前記指示に応じて、前記セマフォ要素を前記リンクドリストの先頭から削除するステップと、
    をさらに備え、
    前記少なくとも1つのレイセグメントに関連付けられた命令スレッドにそれぞれ関連付けられる前記セマフォ要素が削除された後に、前記命令スレッドの結果が集約される請求項1に記載の方法。
  36. 少なくとも1つのセグメントに同一のピクチャが関連付けられるように、前記ピクチャにセマフォが関連付けられ、複数の命令スレッドのうち、前記少なくとも1つのセグメントに関連付けられた命令スレッドにそれぞれ関連付けられるセマフォ要素を有するリンクドリストである前記セマフォをメモリが保持するステップと、
    前記実行回路構成が、前記複数の命令スレッドを実行して、前記少なくとも1つのセグメントを並列に計算するステップと、
    前記実行回路構成が、前記命令スレッドに対応する前記セマフォ要素を前記リンクドリストの先頭から削除することを前記セマフォ・エンティティに指示する命令を実行するステップと、
    前記セマフォ・エンティティが、前記指示に応じて、前記セマフォ要素を前記リンクドリストの先頭から削除するステップと、
    をさらに備え、
    前記少なくとも1つのレイセグメントに関連付けられた命令スレッドにそれぞれ関連付けられる前記セマフォ要素が削除された後に、前記命令スレッドの結果が集約される請求項1に記載の方法。
JP2006547368A 2003-12-31 2004-12-22 マルチスレッドアーキテクチャを用いた視覚および図形データの処理 Expired - Fee Related JP4575925B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,589 US8271986B2 (en) 2003-12-31 2003-12-31 Visual and graphical data processing using a multi-threaded architecture
PCT/US2004/043320 WO2005066778A2 (en) 2003-12-31 2004-12-22 Visual and graphical data processing using a multi-threaded architecture

Publications (2)

Publication Number Publication Date
JP2007517326A JP2007517326A (ja) 2007-06-28
JP4575925B2 true JP4575925B2 (ja) 2010-11-04

Family

ID=34749337

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547368A Expired - Fee Related JP4575925B2 (ja) 2003-12-31 2004-12-22 マルチスレッドアーキテクチャを用いた視覚および図形データの処理

Country Status (7)

Country Link
US (1) US8271986B2 (ja)
EP (1) EP1700212A2 (ja)
JP (1) JP4575925B2 (ja)
KR (1) KR20060108741A (ja)
CN (2) CN101147126B (ja)
TW (1) TWI285851B (ja)
WO (1) WO2005066778A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163547A (ja) * 2004-12-03 2006-06-22 Canon Inc 立体画像生成プログラム、立体画像生成システム及び立体画像生成装置。
US7439973B2 (en) * 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7965898B2 (en) * 2005-10-28 2011-06-21 Nvidia Corporation Accelerating video decoding using multiple processors
US8018457B2 (en) * 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8121196B2 (en) * 2006-11-02 2012-02-21 Corel Corporation Method and apparatus for multi-threaded video decoding
US8072454B1 (en) * 2007-12-13 2011-12-06 Nvidia Corporation Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
KR101155689B1 (ko) * 2011-04-12 2012-06-12 고려대학교 산학협력단 프리미티브 트리에 기반한 거리장 계산장치 및 방법
CN103366386A (zh) * 2013-07-14 2013-10-23 西安电子科技大学 基于多进程和多线程的并行图像解压缩系统
CN103455356B (zh) * 2013-09-05 2017-02-08 中国计量学院 多核移动设备上3d模型的并发加载及渲染方法
US10977092B2 (en) * 2015-10-16 2021-04-13 Qualcomm Incorporated Method for efficient task scheduling in the presence of conflicts
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
GB2554392B (en) 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10255717B2 (en) * 2016-11-01 2019-04-09 Nvidia Corporation Geometry shadow maps with per-fragment atomics
US10614613B2 (en) 2017-07-28 2020-04-07 Nvidia Corporation Reducing noise during rendering by performing parallel path space filtering utilizing hashing
US10871991B2 (en) * 2019-01-18 2020-12-22 EMC IP Holding Company LLC Multi-core processor in storage system executing dedicated polling thread for increased core availability
CN114816803B (zh) * 2022-06-28 2022-09-23 航天宏图信息技术股份有限公司 一种分布式仿真通信消息处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03164964A (ja) * 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御処理装置
US6018785A (en) * 1993-12-30 2000-01-25 Cypress Semiconductor Corp. Interrupt-generating hardware semaphore
US5715459A (en) * 1994-12-15 1998-02-03 International Business Machines Corporation Advanced graphics driver architecture
US5951672A (en) * 1997-07-02 1999-09-14 International Business Machines Corporation Synchronization method for work distribution in a multiprocessor system
JP3900621B2 (ja) * 1997-10-16 2007-04-04 ソニー株式会社 情報処理方法及び記録媒体
US6088044A (en) * 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6502097B1 (en) * 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
CA2373707A1 (en) * 2001-02-28 2002-08-28 Paul Besl Method and system for processing, compressing, streaming and interactive rendering of 3d color image data
JP3798726B2 (ja) * 2002-04-26 2006-07-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体
CN1212569C (zh) * 2002-11-01 2005-07-27 英业达股份有限公司 多线程自动测试方法

Also Published As

Publication number Publication date
CN101147126B (zh) 2011-06-08
WO2005066778A2 (en) 2005-07-21
US8271986B2 (en) 2012-09-18
TW200527325A (en) 2005-08-16
KR20060108741A (ko) 2006-10-18
CN102200927B (zh) 2013-11-20
JP2007517326A (ja) 2007-06-28
EP1700212A2 (en) 2006-09-13
WO2005066778A3 (en) 2006-09-28
CN101147126A (zh) 2008-03-19
CN102200927A (zh) 2011-09-28
TWI285851B (en) 2007-08-21
US20050198644A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
JP4575925B2 (ja) マルチスレッドアーキテクチャを用いた視覚および図形データの処理
US10741143B2 (en) Dynamic jitter and latency-tolerant rendering
CN110796588B (zh) 同时计算和图形调度
US9286119B2 (en) System, method, and computer program product for management of dependency between tasks
US8368701B2 (en) Metaprocessor for GPU control and synchronization in a multiprocessor environment
CN109643461B (zh) 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
US20090303245A1 (en) Technique for performing load balancing for parallel rendering
US20160019066A1 (en) Execution of divergent threads using a convergence barrier
US11470394B2 (en) Scalable light-weight protocols for wire-speed packet ordering
CN109213607B (zh) 一种多线程渲染的方法和装置
CN110807827B (zh) 系统生成稳定的重心坐标和直接平面方程访问
JP4584935B2 (ja) 動作モデルベースマルチスレッドアーキテクチャ
US11908064B2 (en) Accelerated processing via a physically based rendering engine
US20230205608A1 (en) Hardware supported split barrier
US11770215B2 (en) Transceiver system with end-to-end reliability and ordering protocols
US11875444B2 (en) Accelerated processing via a physically based rendering engine
US11853764B2 (en) Accelerated processing via a physically based rendering engine
US11830123B2 (en) Accelerated processing via a physically based rendering engine
US11704860B2 (en) Accelerated processing via a physically based rendering engine
CN115205091A (zh) 动态场景中改进的时间降噪器质量

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090602

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091102

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100712

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees