JP2012533826A - 分離によるバッチスケジューリング - Google Patents

分離によるバッチスケジューリング Download PDF

Info

Publication number
JP2012533826A
JP2012533826A JP2012521651A JP2012521651A JP2012533826A JP 2012533826 A JP2012533826 A JP 2012533826A JP 2012521651 A JP2012521651 A JP 2012521651A JP 2012521651 A JP2012521651 A JP 2012521651A JP 2012533826 A JP2012533826 A JP 2012533826A
Authority
JP
Japan
Prior art keywords
thread
request
batch
type
memory
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.)
Granted
Application number
JP2012521651A
Other languages
English (en)
Other versions
JP5560331B2 (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 JP2012533826A publication Critical patent/JP2012533826A/ja
Application granted granted Critical
Publication of JP5560331B2 publication Critical patent/JP5560331B2/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

開示される主題によれば、コンピュータシステム内で実行しているスレッドによって発行された要求を分離するための技法が説明される。

Description

関連出願の参照
本出願は、以下の同時継続出願、すなわち、2009年7月23日に出願された「Scheduling Of Batch Scheduling」という表題の出願第12/508,457号(整理番号第ZAV01−013−US)、および2009年7月22日に出願された「Application Seletion of Memory Request Scheduling」という表題の出願第12/507,671号(整理番号第BBV01−014−US)に関する。
チップマルチプロセッサ(CMP)システムでは、DRAMシステムはコア間で共有される。共有されたDRAMシステムでは、スレッドからの要求は、バンク衝突、バス衝突、または低バッファ衝突を引き起こすことによって、他のスレッドからの要求を遅らせる可能性があるだけでなく、他のスレッドのDRAMバンクレベルの並列処理を破壊する可能性がある。普通なら並行化されているはずのレイテンシを伴う要求は、事実上シリアル化される可能性がある。結果として、公平性とシステムスループットの両方が劣化する可能性があり、一部のスレッドは長期間にわたって処理されない(starve)可能性がある。
公平で高性能のメモリスケジューリングを実行するための一手法は、本出願に一致しない場合を除いて、そのすべてが参照により本明細書に組み込まれている、Onur MutluおよびThomas Moscibrodaの「Parallelism−Aware Batch Scheduling:Enhancing both Performance and Fairness of Shared DRAM Systems」/SCA、63〜74ページ、2008(2008 International Symposium on Computer Architecture)に示されるような並列処理認識バッチスケジューリング(parallelism−aware batch scheduling)(PAR−BS)と呼ばれるスケジューリングアルゴリズムを使用している。PAR−BS設計は、2つの構想に基づく。すなわち、(1)要求バッチ処理、および(2)並列処理認識メモリスケジューリングである。第1に、PAR−BSは、公平性を提供して、要求の未処理(starvation)を回避するために、DRAM要求をバッチの形で処理する。第2に、システムスループットを最適化するために、PAR−BSは、DRAMバンク内でスレッドからの要求を並列処理し、それによって、スレッドが経験するメモリ関連の失速時間を削減する目的で、並列処理認識DRAMスケジューリングポリシーを用いる。PAR−BSは、システムレベルのスレッド優先順位に関するサポートを組み込み、異なる優先順位を有するスレッドに対して、純粋に便宜主義的なサービスを含めて、異なるサービスレベルを提供することが可能である。
第1の態様では、本開示は、一般に、スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、第1のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第1のスレッド要求タイプを発行し、第2のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、それぞれの第1のバッチの要求を実行することを含む、メモリにデータを求める要求を実行する方法を説明する。
第2の態様では、本開示は、一般に、メモリにデータを求める要求を実行するために、コンピュータ可読媒体内で符号化されたソフトウェアを有するコンピュータプログラム製品を説明する。このソフトウェアは、実行されたとき、スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、第1のスレッドタイプのそれぞれのスレッドがメモリにデータを求める少なくとも1つの第1のスレッド要求タイプを発行し、第2のスレッドタイプのそれぞれのスレッドがメモリにデータを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、それぞれの第1のバッチの要求を実行することを行うように動作可能な命令を含む。
第3の態様では、本開示は、一般に、複数のコアと、それらの複数のコアに動作可能に結合された、データを含むメモリと、それらの複数のコアに動作可能に結合されたコンピュータ可読媒体とを有するコンピュータシステムを説明する。このコンピュータ可読媒体は、コンピュータシステムによって実行されたとき、スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、第1のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第1のスレッド要求タイプを発行し、第2のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、それぞれの第1のバッチの要求を実行することを行うようにコンピュータシステムを構成するコンピュータ実行可能命令を含む。
前述の要約は、単に例示的であり、決して限定的であることが意図されない。上で説明された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および以下の発明を実施するための形態を参照することによって明らかになるであろう。
主題は、本明細書の結末部分で詳細に指摘され、明確に特許請求される。本開示の前述の特徴およびその他の特徴は、添付の図面と共に、以下の説明および添付の特許請求の範囲から十分明らかになるであろう。これらの図面は本開示によるいくつかの実施形態だけを示し、したがって、その範囲を限定すると見なされないことを理解し、本開示は、添付の図面の使用により、追加の特異性および詳細を用いて説明される。
コンピュータシステムを例示する図である。 オペレーティングシステムによって実行されているアプリケーションプログラムを例示する図である。 図3Aのメモリコントローラのスケジューラの詳細図を含む、メモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図である。 方法、装置(システム)、およびコンピュータプログラム製品を例示する流れ図である。 すべて本開示の少なくともいくつかの実施形態に従って構成された、バッチの形で構成されているスレッドからの要求の概略図である。
以下の説明は、特許請求される主題の十分な理解をもたらすために、特定の詳細と共に様々な例を記載する。しかし、特許請求される主題は、本明細書で開示される特定の詳細のうちのいくつかまたはより多くの当該詳細なしに実行可能である点を当業者は理解されよう。さらに、状況によっては、よく知られている方法、手順、システム、構成要素、および/または回路は、特許請求される主題を不必要にあいまいにすることを回避するために、詳しく説明されていない。以下の詳細な説明では、その説明の一部を形成する添付の図面が参照される。図面では、別段文脈によって示されない限り、類似の符号は、通常、類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的なものとしない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、その他の実施形態を利用することが可能であり、ここに提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことも可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部である幅広い異なる構成で構成、置換、組合せ、および設計され得る点を容易に理解されよう。
以下の説明では、コンピュータ内および/もしくはコンピューティングシステムメモリ内など、コンピューティングシステム内に格納されたデータビットおよび/もしくは2値デジタル信号に関するアルゴリズムならびに/または動作の記号表現が提示される場合がある。アルゴリズムは、一般に、所望される結果をもたらす動作および/または類似処理の自己無撞着シーケンスと見なすことが可能で、この場合、これらの動作は、格納されること、転送されること、組み合わされること、比較されること、および/もしくは、他の方法で操作されることが可能な電気信号、磁気信号ならびに/または電磁信号の形をとり得る物理量の物理処理を必要とする場合がある。様々な状況において、かかる信号は、ビット、データ、値、要素、記号、文字、用語、番号、数字などと呼ばれる場合がある。しかし、当業者は、かかる用語は物理量を意味するために使用され得る点を認識されよう。したがって、本明細書において「格納する」、「処理する」、「取り出す」、「計算する」、「決定する」などの用語が使用されるとき、これらは、コンピューティングプラットフォームのプロセッサ内、メモリ内、レジスタ内などの電子量および/もしくは磁気量を含む物理量として表されるデータを操作ならびに/または変換する、コンピュータ、あるいはセルラ電話などの類似の電子コンピューティングデバイスなど、コンピューティングプラットフォームの動作を指す場合がある。
本開示は、とりわけ、分離によるバッチスケジューリングに関する方法、装置、システム、およびコンピュータプログラム製品に関して描写される。本開示は、一定の基準に基づいて、スレッドからのメモリ内のデータに関する要求のバッチへのグループ化の発見を使用する。(1)それらのスレッドが、並列メモリと共に使用するために、どのくらい良好に設計されているかに基づいて、良好な設計スレッドおよび不良な設計スレッド、(2)それらのスレッドがその他のスレッドとどのくらい効果的に共働するかに基づいて、協調スレッドおよび非協調スレッド、(3)そのスレッドが発生したアプリケーションプログラムに基づいて、第1のアプリケーションスレッド、第2のアプリケーションスレッド、および第3のアプリケーションスレッド、(4)それらのスレッドが行う要求の相対数に基づいて、大規模要求スレッド、任意選択で、中規模要求スレッドおよび小規模要求スレッド、例えば、大規模要求スレッドは、平均数以上の要求を行うことが可能であり、小規模要求スレッドは、平均数未満のいくつかの要求を行うことが可能であるなど、様々な様式でこれらの要求をバッチにグループ化することが可能である。多くの他の改変形態が可能である。
図1は、本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する。図1は、プロセッサ110と、メモリ120と、1つまたは複数のドライブ130とを含むコンピュータ100を例示する。ドライブ130およびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶装置をコンピュータ100に提供することが可能である。ドライブ130は、オペレーティングシステム140と、アプリケーションプログラム150と、プログラムモジュール160と、データベース180とを含むことが可能である。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に図4に指定される機能および/または動作、例えば、バッチスケジューリングアプリケーション155を実行させるためのプログラム命令を含むことが可能である。コンピュータ100は、それを介してユーザがコマンドおよびデータを入力できるユーザ入力デバイス190を含むことが可能である。入力デバイスは、電子デジタイザと、マイクロフォンと、キーボードと、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスとを含むことが可能である。その他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことが可能である。
これらの入力デバイスおよびその他の入力デバイスは、システムバスに結合可能なユーザ入力インターフェースを介してプロセッサ110に結合可能であるか、あるいは当該入力デバイスは、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバス(USB)など、その他のインターフェースまたはバス構造によって接続可能である。コンピュータ100は、出力周辺インターフェース194などを介して接続可能なスピーカ、プリンタ、またはディスプレイ202など、周辺出力デバイスを含むことが可能である。
コンピュータ100は、ネットワークインターフェース196に接続された遠隔コンピュータなど、1つまたは複数のコンピュータに対する論理接続を使用して、ネットワーキング環境で動作するように構成され得る。この遠隔コンピュータは、パーソナルコンピュータ(PC)、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードであってよく、コンピュータ100に関連して上で説明された要素の多くまたはすべてを含むことが可能である。
ネットワーキング環境は、事務所、企業広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イントラネット、およびインターネットを含むことが可能である。一例では、コンピュータ100は、そこからデータが移動されている送信元機械であってよく、遠隔コンピュータは、宛先機械を備えてよく、またはその逆であってもよい。送信元ソース機械および宛先機械は、ネットワーク108または任意の他の手段によって接続できず、代わりに、データは、送信元プラットフォームによって書き込まれて、1つまたは複数の宛先プラットフォームによって読み取られることが可能な任意の媒体を経由して移動可能である。LANまたはWLANのネットワーキング環境では、コンピュータ100は、ネットワークインターフェース196もしくはアダプタを介して、LANまたはWANに接続可能である。WANネットワーキング環境では、コンピュータ100は、モデム、またはインターネットもしくはネットワーク108など、WAN上で通信を確立するためのその他の手段を含むことが可能である。コンピュータ同士の間で通信リンクを確立するその他の手段を使用することも可能である。
コンピュータ周辺装置は、システムバスを介してコンピュータ100のプロセッサ110およびメモリ120に結合された任意のデバイスを含むことが可能である。コンピュータ周辺装置は、ディスプレイ202、プリンタ、またはスピーカを含む出力周辺インターフェースと、ドライブ130と、キーボード、マウス、およびマイクロフォンなどのユーザ入力デバイス190と、ネットワークインターフェース196とに接続された任意のデバイスを含むことが可能である。コンピュータ周辺装置の構成要素は、電力を使用することが可能であり、スピーカ、発光ダイオードなどの照明要素、またはディスプレイに照明を提供するために使用されるバックライト、LCD、LED、OLEO、CRT、もしくはプラズマディスプレイなどのディスプレイ要素、または中央処理装置(CPU)、グラフィック処理ユニット(GPU)、メモリなどの半導体チップなど、任意のデバイスであってよい、コンピュータ周辺装置内の任意のデバイスを含むことが可能である。
図2は、本開示の少なくともいくつかの実施形態に従ってオペレーティングシステムによって実行されているアプリケーションプログラムを例示する。図2に示されるように、オペレーティングシステム140は、ドライブ130からアプリケーションプログラム150を実行することができる。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に図4に指定された機能および/または動作を実行させるためのプログラム命令を含むことが可能である。アプリケーションプログラム150は、マイクロプロセッサ111内のオペレーティングシステム140によって実行可能な任意のアプリケーション、プログラム、プログラムの部分、またはスレッドであってよい。アプリケーションプログラム150は、メモリコントローラ210を使用して、データ230をメモリ120内にロードすることが可能であり、メモリ120からデータ230にアクセスする。アプリケーションプログラム150は、1つまたは複数の要求226を使用して、メモリ120のメモリバンク122内にデータ230をロードし、メモリ120のメモリバンク122からデータ230にアクセスするなどのタスクを達成するために、スレッド220と呼ばれる複数のサブアプリケーションを実行することが可能である。スレッド220は、アプリケーションプログラム150によって実行可能である。アプリケーションプログラム150は、タスクの実行を、アプリケーションプログラムがそのタスクを達成するために必要と見なすだけの数のスレッド220に分割することが可能である。例えば、アプリケーションプログラム150が複数のページを有する文書を用いたワード処理プログラムであり、アプリケーションプログラム150がその文書のそれぞれのページのスペルチェックのタスクを達成するように構成され得る場合、アプリケーションプログラム150は、それぞれのスレッド220がその文書の一部をスペルチェックできるように、文書のスペルチェックのタスクを複数のスレッド220に分割することが可能である。それぞれのスレッド220は、実行のためにマルチプロセッサ111に送信可能である。マルチプロセッサ111内で実行されたとき、それぞれのスレッド220は、メモリ120内でデータ230に関する要求226を作成することが可能である。要求226は、マルチプロセッサ111が効率的に動作することができるように要求226を組織するように構成可能なメモリコントローラ210に送信可能である。
いくつかの実施形態では、図2に示されるように、マルチプロセッサ111は、2つ以上のスレッド220を同時に実行できるプロセッサを含むことが可能である。マルチプロセッサ111は、コア412および512として知られる複数のプロセッサを含むことが可能であり、またはマルチスレッドプロセッサとしても知られている、複数のスレッド220を同時に実行できる単一のプロセッサ(412もしくは512のうちの1つだけ)を含むことも可能である。図2は、2つのコア412および512を含む例示的なマルチプロセッサ111を示すが、任意の特定数のコアに限定されない。「コア」という用語は、本明細書において、単一のスレッドを処理することが可能であり、単一のスレッドを処理できるプロセッサまたはプロセッサ内の部分を指す場合がある任意のデバイスを指すために使用される場合がある。マルチスレッドプロセッサは、複数のコアを有するプロセッサと呼ばれる場合がある。複数のプロセッサを有するコンピュータ100は、本明細書において、複数のコアを有するコンピュータ100と呼ばれる場合がある。
図3は、本開示のいくつかの実施形態に従って、メモリコントローラに送信される要求を発行できるスレッドに分割されているアプリケーションプログラムの概略図を示す。図3に示されるように、アプリケーション150は、複数のスレッド220〜220に分割可能であり、この場合、nはスレッド220の数を表すことが可能であり、それぞれのスレッドは、アプリケーション150に関するタスクを実行することが可能であり、例えば、図2のマルチプロセッサ111上で実行可能である。このマルチプロセッサは、アプリケーションプログラム150から複数のスレッド220〜220を個々にまたは同時に受信および実行するように構成され得る。マルチプロセッサ上で実行されるそれぞれのスレッド220は、それぞれの他のスレッド220から独立して実行可能であり、メモリ120内に格納されたデータ230に関して複数の要求226a1〜226no
を発行することが可能であり、この場合、第1の指数(a...n)は、要求226に関連するスレッド220を表し、第2の指数(1...o)は、特定のスレッド220に関連する要求226の数を表す。
それぞれのスレッド220は、メモリ120内に格納されたデータ230に関する要求226を発行することが可能であり、一例では、メモリ120内のメモリバンク122〜122内に格納されたデータ230に関する要求226を発行することが可能であり、この場合、指数(a、b...m)は、メモリバンク122の数を表すことが可能である。メモリ120は、異なるメモリバンクからデータ230を追求する場合、複数の未解決のメモリ要求226が並列して処理されることを可能にし得る複数のメモリバンク122から122を含むことが可能である。結果として、第1のメモリバンク122および第2のメモリバンク122は、データ230に関する要求226の受信時に、メモリコントローラ210によって同時にアクセスされ得る。
それぞれのメモリバンク122は、指数(1...i)が列の数を表す列CからCと、指数(1...j)が行の数を表す行RからRとを含む二次元アレイであってよい。行は、連続的なメモリ位置内にデータを格納することが可能であり、例えば、1〜2キロバイト(KB)のサイズであってよい。メモリバンク122内のデータ230は、最大で1行を含み得る行バッファRからアクセス可能である。一例では、それぞれのメモリバンク122は、1つの行バッファRを含むことが可能である。メモリバンク122がデータ230に関するそれぞれの要求226にサービス提供するためにかかる時間は、それぞれの行バッファRの状態に依存する可能性があり、3つの範疇のうちの1つに該当し得る。第1の範疇は、行ヒット(row−hit)であってよく、この場合、要求226は、それぞれの行バッファR内で現在開放され、メモリコントローラ210がそれぞれのメモリバンク122に対する読取りコマンドまたは書込みコマンドだけを発行することを可能にし、結果として、tCLのバンクアクセスレイテンシをもたらし得る行に対する可能性がある。
第2の範疇は、行閉鎖(row closed)であってよく、この場合、行バッファR内には開放された行が存在しない可能性があり、その結果、メモリコントローラ210は、まず要求される行を開放するための起動コマンドを発行し、次いで、読取り/書込みコマンドを発行し、結果として、tRCD+tCLの総レイテンシをもたらす必要があり、式中、tRCDは起動コマンドに関するレイテンシであり、tCLは読取り/書込みコマンドに関するレイテンシである。第3の範疇は、行衝突(row conflict)であってよく、この場合、要求226は、それぞれの行バッファR内の現在の行とは異なる行に対する可能性があり、その結果、メモリコントローラ210は、まずプリチャージ(precharge)コマンドを発行して、(必要とされる行をアクティブ化することによって)必要とされる行を開放し、必要とされる行内のデータに関して読取り/書込みコマンドを発行する必要がある。これらのアクセスは、tRP+tRCD+tCLの最高総レイテンシを負う可能性があり、式中、tRPは(行を閉鎖するための)行プリチャージに関するレイテンシであり、tRCDは起動コマンドに関するレイテンシであり、tCLは読取り/書込みコマンドに関するレイテンシである。
メモリコントローラ210は、メモリ120およびマルチプロセッサと通信している形で構成可能であり、マルチプロセッサ内を含めて、システムに沿ってどこに配置されてもよい。メモリコントローラ210は、要求226がサービス提供されるのを待っている可能性がある間、要求226およびデータ230にバッファリングするように構成可能なメモリ要求バッファ211を含むことが可能である。メモリコントローラ210は、サービス提供されることになる次の要求226を選択するように構成可能なスケジューラ212を含むことが可能である。いくつかの実施形態では、スケジューラ212は2つのレベルを有し得る。サービス提供されることになる次の要求226を選択するとき、スケジューラ212は、メモリバンク122〜122の状態と、メモリコントローラ210をそれぞれのメモリバンク122に接続しているメモリバス214〜214の状態と、要求226の状態とを考慮するように構成可能である。要求226に関するメモリコマンドは、そのスケジューリングが、メモリバンク122〜122、およびアドレス/データ/システムバスなど、いかなるリソース衝突も引き起こさず、いかなるメモリタイミング制約にも違反しない場合、スケジューラ212によってスケジュールされ得る。いかなる衝突も引き起こさないメモリコマンドは、準備ができていると見なすことができる。
図3Aは、バッチアルゴリズム302およびバッチ内スケジューリングアルゴリズムまたはバッチ内並列処理認識スケジューリングアルゴリズム350を含むスケジューリングアルゴリズム300の一部を示すスケジューラ212の詳細図を含む。あるいは、バッチ内スケジューリングアルゴリズムおよびバッチ内並列処理認識スケジューリングアルゴリズムの両方がスケジューリングアルゴリズムによって用いられることも可能である。
いくつかの例では、コンピュータシステム内で実行しているスレッドによって発行された要求を分離するための方法が説明される。このコンピュータシステムは、メモリバンクと通信して構成されたメモリコントローラを含むことが可能である。この方法は、その効率性に基づいて、スレッドを良好なスレッド(第1のスレッド)および不良なスレッド(第2のスレッド)に分離することを含むことが可能である。メモリバンクからデータを並列で抽出できるスレッドは、良好なスレッドであり、メモリバンクからデータを並列で抽出できないスレッドは、不良なスレッドである。この方法は、良好なスレッドによって主に発行された要求を含む要求の第1のバッチを形成すること、および不良なスレッドによって主に発行された要求を含む要求の第2のバッチとを形成することを含むことも可能である。
その他の例では、コンピュータシステム内で実行しているスレッドによって発行された要求を分離するための方法が説明される場合がある。このコンピュータシステムは、メモリバンクと通信して構成されたメモリコントローラを含むことが可能である。この方法は、どのスレッドが互いに効率的に動作し、どのスレッドが互いに効率的に動作しないかを決定することを含むことが可能である。互いに効率的に動作するスレッドは、異なるメモリバンクからデータを抽出することができる。互いに効率的に動作しないスレッドは、同じメモリバンクからデータを抽出することができる。この方法は、互いに効率的に動作することができるスレッドによって主に発行された要求を含む要求の第1のバッチを形成すること、および互いに効率的に動作することができないスレッドによって主に発行された要求を含む要求の第2のバッチを形成することを含むことも可能である。
さらにその他の例では、コンピュータシステム内で実行しているスレッドによって発行された要求を分離するための方法が説明される場合がある。このコンピュータシステムは、メモリバンクと通信して構成されたメモリコントローラを含むことが可能である。この方法は、スレッドによって行われた要求の数に基づいて、それらのスレッドを分離することを含むことが可能である。メモリバンクに対して多数の要求を発行することができるスレッドは、大きなスレッドと見なすことができ、メモリバンクに対して少数の要求を発行することができるスレッドは、小さなスレッドと見なすことができる。この方法は、大きなスレッドによって主に発行された要求を含む要求の第1のバッチを形成すること、および小さなスレッドによって主に発行された要求を含む要求の第2のバッチを形成することを含むことも可能である。
図3および図3Aを再び参照すると、スレッド220〜220から要求226a1〜226noをスケジューリングする効率性を改善するために、メモリコントローラ210、および特にスケジューラ212は、スレッド内バンク並列処理を考慮に入れることが可能なスケジューリングアルゴリズム300を使用することが可能であり、それぞれのスレッド220〜220にサービスの質(QoS)を提供することが可能である。サービスの質は、異なるスレッド220〜220に異なる優先順位を提供するための能力、および/またはスレッド220〜220を実行するときに基礎パフォーマンスレベルを提供するための能力と見なすことができる。スケジューリングアルゴリズム300は、公平性、およびQoS、ならびに高いCMPシステムスループットに関して構成可能な基板を提供するように設計可能である。バッチ処理アルゴリズム302は、いくつかの未解決のメモリ要求226a1〜226noをバッチにグループ化するように構成可能である。スケジューリングアルゴリズム300は、次のバッチが形成される前に、現在のバッチに属するすべての要求226a1〜226noがサービス提供されることを確実にするように構成されることも可能である。バッチ処理アルゴリズム302は、複数のバッチを同時に形成することが可能であり、この場合、それぞれのバッチは、本明細書で説明される一定の基準を使用して形成され得る。バッチ処理は、公平性を確実にするだけでなく、場合によってはスレッド不公平であるが、高いパフォーマンスのメモリコマンドスケジューリング最適化が実行され得る好都合な粒度(すなわち、バッチ)を提供することも可能である。
バッチ処理アルゴリズムは、メモリ要求バッファ内の未解決の要求をバッチと呼ばれる要求のセットにグループ化するように構成可能である。メモリスケジューラは、現在のバッチに属している要求をその他の要求に勝って優先順位付けすることによって、バッチの全域で要求を再順序付けすることを回避するように構成可能である。バッチの要求がサービス提供されると、例えば、そのバッチが仕上がったとき、最後のバッチ内に含まれていなかった、メモリ要求バッファ内の未解決の要求を含み得る次のバッチが次いでサービス提供され得る。複数のバッチを同時に形成することは、バッチ内の要求を再順序付けすることを可能にできる。
バッチ処理アルゴリズムは、以下のように作用するように構成可能である。メモリ要求バッファ内のそれぞれの要求は、その要求が現在のバッチ内のどのバッチに属すかを表示する関連するビットを有し得る。要求が第1のバッチに属する場合、例えば、関連するビットは、その要求が第1のバッチに属すことを表示するように設定可能であり、その要求はマーキングされたと見なすことができる。複数のバッチを形成することが可能であり、その場合、それらの要求のそれぞれは、本明細書で説明される一定の基準に基づいて、それらの要求がそれらの複数のバッチのうちのどの中に配置されることになるか、またはそれらの要求がそれらの複数のバッチのうちのどの一部であるかを表示するためにマーキングされる。メモリ要求バッファ内にマーキングされた要求が残されていないとき、例えば、これまでのバッチからの要求が完全にサービス提供されているとき、新しいバッチを形成することが可能である。
いくつかの実施形態では、バッチを形成するとき、バッチ処理アルゴリズムは、それぞれのスレッドに関するメモリバンクごとに未解決の要求のセット番号、すなわち、マーキングキャップ(marking−cap)をマークアップするように構成可能であり、これらの要求はバッチを形成することができる。このマーキングキャップは、あるバンクに関してスレッドによって発行されたいくつの要求がバッチの一部であってよいかを制限できるシステムパラメータとすることができる。例えば、このマーキングキャップが5であり、スレッドがメモリバンクに関して7個の未解決の要求を有する場合、バッチ処理アルゴリズムは、5個の最も古い要求だけをマーキングすることが可能である。例は、2、3、5、7、10、20、50、またはより大きなマーキングキャップすら含む。さらに、本明細書で説明されるように、これらのマーキングキャップは、異なるタイプのバッチによって異なってよい。マーキングキャップが設定されていない場合、1つまたは複数のバッチが形成されるとき、すべての未解決の要求をマーキングすることが可能である。
バッチ処理アルゴリズムは、マーキングされた要求(バッチの形の要求)を所与のメモリバンク内のマーキングされていない要求に勝って優先順位付けするように構成可能である。所与のバンクに対してマーキングされた要求が存在しない場合、未解決のマーキングされていない要求をそのバンクに対してスケジューリングすることができる。2つのマーキングされた要求または2つのマーキングされていない要求の間で選択するために、FR−FCFSなど、任意の既存のメモリスケジューリングアルゴリズムまたは新しいメモリスケジューリングアルゴリズムを用いることが可能である。
図4は、本開示の少なくともいくつかの実施形態に従って構成された方法、装置(システム)、およびコンピュータプログラム製品の流れ図である。図4の流れ図のそれぞれのブロック、および図4の流れ図のブロックの組合せは、コンピュータプログラム命令によって実装可能である点を理解されよう。これらのコンピュータプログラム命令は、コンピュータ上、もしくはプロセッサ上、または他のプログラマブルデータ処理装置上で実行する命令が流れ図の1つまたは複数のブロック内で指定される機能を実装するための手段を作成するように、コンピュータ上、もしくはプロセッサ上、または他のプログラマブルデータ処理装置上にロード可能である。これらのコンピュータプログラム命令は、記憶デバイス内に格納された命令が、流れ図の1つもしくは複数のブロック内で指定された機能および/または動作を実装できる命令手段を含む製品を作成するように、コンピュータ、もしくはプロセッサ、または他のプログラマブルデータ処理装置が特定の様式で機能あるいは動作するように指令できる記憶デバイス内に格納されることも可能である。これらのコンピュータプログラム命令は、コンピュータ上で、もしくはプロセッサ上で、または他のプログラマブル装置上で実行する命令が流れ図の1つもしくは複数のブロック内で指定された機能を実装するためのステップを提供するようにコンピュータ実装プロセスを作成するように、コンピュータ上で、または他のプログラマブルデータ処理装置上で一連の動作ステップを実行させるために、コンピュータ上、もしくはプロセッサ上、または他のプログラマブルデータ処理装置上にロードされることも可能である。
したがって、図4の流れ図のブロックは、指定された機能を実行するための手段の組合せ、指定された機能を実行するためのステップの組合せ、ならびに指定された機能および/または動作を実行するためのプログラム命令手段をサポートする。図4の流れ図のそれぞれのブロック、および図4の流れ図内のブロックの組合せは、指定された機能/動作/活動もしくはステップ、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのコンピュータシステムによって実装可能である点も理解されよう。
かかるコンピュータ命令は、コンピュータ可読媒体(例えば、ディスケット、CD−ROM、ROM、もしくは固定ディスク)などの有形媒体上に固定されてよく、またはモデム、もしくは媒体上でネットワークに接続された通信アダプタなど、その他のインターフェースデバイスを経由して、コンピュータシステムに転送可能であってもよい。この媒体は、有形媒体(例えば、光通信線もしくはアナログ通信線)または無線技術(例えば、マイクロ波、赤外線伝送技術もしくはその他の伝送技術)を用いて実装された媒体であってよい。一連のコンピュータ命令は、このシステムに関して本明細書でこれまで説明された機能性のすべてまたは一部を実施する。
当業者は、かかるコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するために、いくつかのプログラミング言語で書込み可能である点を理解されたい。さらに、かかる命令は、半導体、磁気メモリデバイス、光メモリデバイス、またはその他のメモリデバイスなど、任意のメモリデバイス内に格納可能であり、光伝送技術、赤外線伝送技術、マイクロ波伝送技術、またはその他の伝送技術など、任意の通信技術を使用して送信可能である。かかるコンピュータプログラム製品は、コンピュータシステムを用いて(例えば、システムROM上もしくは固定ディスク上に)事前にロードされた、印刷文書もしくは電子文書を伴う取出し可能媒体(例えば、シュリンクラップソフトウェア)として供給可能であるか、あるいはネットワーク上でサーバまたは電子掲示板(例えば、インターネットもしくはワールドワイドウェブ)から供給可能であることが予想される。
図4に示されるように、それぞれのバッチが1つまたは複数の要求を含む、スレッドの要求の1つまたは複数のバッチを形成するための方法500を、ブロック501で開始することが可能である。方法500を開始した後で、次いで、ブロック502において、スレッドを、スレッドタイプ、例えば、第1のスレッドタイプおよび第2のスレッドタイプ、または第1のスレッドタイプ、第2のスレッドタイプ、および第3のスレッドタイプに分離(それらのスレッドタイプとして識別)することが可能である。ブロック504において、それぞれのバッチは、類似または同じ1つもしくは複数のタイプの1つまたは複数のスレッドから発行された要求を含み得る、1つまたは複数のバッチを形成することが可能である。それぞれのバッチが1つまたは複数の要求を含む状態で、1つまたは複数のバッチを形成した後で、次いで、ブロック506において、1つまたは複数のバッチをメモリコントローラによって実行することが可能である。1つもしくは複数のバッチは一度に1回実行可能であり、またはコンピュータシステムに能力がある場合、その1つもしくは複数の要求バッチは一度に2回以上実行可能である。
スレッドの分離(識別)、および、したがって、異なるスレッドタイプからの要求のバッチ処理は、いくつかの異なる基準のうちのいずれかに基づいてよい。例えば、スレッドは、以下に分離可能である。(1)それらのスレッドが、並列メモリと共に使用するために、どのくらい良好に設計されているかに基づいて、良好な設計スレッドおよび不良な設計スレッド、(2)それらのスレッドがその他のスレッドとどのくらい効果的に共働するかに基づいて、協調スレッドおよび非協調スレッド、(3)そのスレッドが発生したアプリケーションプログラムに基づいて、第1のアプリケーションスレッド、第2のアプリケーションスレッド、および第3のアプリケーションスレッド、(4)それらのスレッドが行う要求の相対数に基づいて、大規模要求スレッド、任意選択で、中規模要求スレッドおよび小規模要求スレッド、例えば、大規模要求スレッドは、平均数以上の要求を行うことが可能であり、小規模要求スレッドは、平均数未満のいくつかの要求を行うことが可能であること、である。多くの他の改変形態が可能である。したがって、選択される基準に応じて、第1のスレッドタイプ、第2のスレッドタイプ、任意選択の第3のスレッドタイプ、任意選択の第4のスレッドタイプなどが存在し得る。
図5は、2つのスレッドタイプをもたらし得る基準を使用した一例であり、上述のように、選択される基準に応じて、3つ以上のスレッドタイプも可能であり得る。スレッド220〜220は、第1のスレッドタイプ250および第2のスレッドタイプ251に分離可能である。それぞれのスレッドタイプによって発行された要求、例えば、第1のスレッドタイプ250によって発行された第1の要求260、および第2のスレッドタイプ251によって発行された第2の要求261は、次いで、スレッド要求の1つまたは複数のバッチ232〜232に形成され得る。それぞれのバッチは、1つのスレッドタイプの要求を含むことが可能であり、例えば、例示されるように、第1のバッチ232は、第1の要求260だけを含むことが可能であり、最後のバッチ232は、第2の要求261だけを含むことが可能である。もう1つの例では、それぞれのバッチ232〜232は、第1のスレッドタイプ250からの第1の要求260を主に含むことが可能であるか、または第2のスレッドタイプ251からの第2の要求261を主に含むことが可能である。このように、形成されたバッチ232〜232は、それぞれのスレッドタイプからの要求に関して均一であってよく、または主に均一であってもよい。この1つもしくは複数の要求バッチは一度に1回実行可能であり、またはコンピュータシステムに能力がある場合、その1つもしくは複数の要求バッチは一度に2回以上実行可能である。本明細書で使用される場合、主にという用語は、約50%超、および約80%超、約95%超であってよく、または約99%超であってもよい。
1つまたは複数のバッチが形成されると、スケジューリングアルゴリズムは、バッチ内の要求のサービスをスケジューリングするために、バッチ内スケジューリングアルゴリズムまたはバッチ内並列認識スケジューリングアルゴリズムを用いることが可能である。FR−FCFSなど、任意のバッチ内スケジューリングアルゴリズムを使用することが可能である。
バッチ内で、バッチ内並列処理認識スケジューリングアルゴリズムは、第1に行ヒット要求を優先順位付けすることが可能である。第2に、本明細書に詳しく説明されるように、バンクレベルの並列処理を高めるために、より高いランクを有するスレッドからの要求をより低いランクを有するスレッドからの要求に勝って優先順位付けすることが可能である。最終的に、他に特別な条件がない限り、より古い要求をより新しい要求に勝って優先順位付けすることが可能である。
バッチ内並列処理認識スケジューリングアルゴリズムは、バッチ内のランクベースのスレッド優先順位付け方式を使用することが可能である。新しいバッチが形成されるとき、メモリスケジューラは、新しいバッチ内に要求を有するすべてのスレッド間のランキングを計算することが可能である。新しいバッチが処理される間、計算されたランキングは同じ状態にとどまり、より高くランク付けされたスレッドからの要求をより低くランク付けされたスレッドからの要求に勝って優先順位付けする。ランキングベースのスケジューリングの効果は、すべてのメモリバンクの全域で異なるスレッドを同じ順序で優先順位付けし、したがって、それぞれのスレッドの要求がすべてのバンクによって並列してサービス提供される可能性がより高いことである。
任意のランキングベースの方式が使用可能であるが、特定のランキング手順は、CMPスループットおよび公平性に対してかなりの影響を有する場合がある。良好なランキング方式は、メモリ集約型スレッドとメモリ非集約型スレッド(および、高いバンク並列処理を伴うスレッド)とを効果的に区別することが可能である。いくつかの実装形態では、最短ジョブ優先原理に適合するランキング方式を用いることが可能であり、この方式は、非集約型スレッドを集約型スレッドより高くランキングできる。
特許請求される主題は、範囲の点で、本明細書で説明される特定の実装形態に限定されない。例えば、いくつかの実装形態は、あるデバイス上またはデバイスの組合せ上で動作するために用いられるようなハードウェアの形であってよく、例えば、一方、その他の実装形態は、ソフトウェアおよび/またはファームウェアの形であってよい。同様に、特許請求される主題は、この点において範囲の点で限定されないが、いくつかの実装形態は、1つまたは複数の記憶媒体など、1つまたは複数の物品を含むことが可能である。CD−ROM、コンピュータディスク、フラッシュメモリなど、この記憶媒体は、例えば、コンピュータシステム、コンピューティングプラットフォーム、またはその他のシステムなど、システムによって実行されるとき、結果として、例えば、これまで説明された実装形態のうちの1つなど、特許請求される主題に従ってプロセッサの実行をもたらし得る命令を格納していることが可能である。1つの可能性として、コンピューティングプラットフォームは、1つもしくは複数の処理ユニットまたはプロセッサと、ディスプレイ、キーボードおよび/またはマウスなど、1つもしくは複数の入出力デバイスと、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、フラッシュメモリ、および/またはハードドライブなど、1つもしくは複数のメモリとを含むことが可能である。
明細書における「ある実装形態」、「一実装形態」、「いくつかの実装形態」、または「その他の実装形態」の参照は、1つもしくは複数の実装形態に関して説明される特定の特徴、構造、または特性は少なくともいくつかの実装形態内に含まれ得るが、すべての実装形態内に含まれるとは限らないことを意味する場合がある。先の説明における「ある実装形態」、「一実装形態」、「いくつかの実装形態」の様々な出現は、すべて同じ実装形態を参照するとは限らない。さらに、「結合された」または「反応する」もしくは「に反応して」、あるいは「と通信している」などの用語または句が、本明細書または続く特許請求の範囲において使用される場合、これらの用語は広く解釈されるべきである。例えば、「に結合された」という句は、その句が使用される文脈に応じて適切に、通信可能に、電気的に、および/または動作可能に結合されていることを指す場合がある。
先の説明において、特許請求される主題の様々な態様が説明されている。説明のために、特定の番号、システム、および/または構成は、特許請求される主題の十分な理解をもたらすために記載された。しかし、当業者および本開示の利益を有する者は、特許請求される主題は、それらの特定の詳細なしに実行可能である点を理解されたい。その他の事例では、特許請求される主題をあいまいにしないように、よく知られている特徴は省略および/または簡素化された。本明細書において、いくつかの特徴が例示および/または説明されているが、当業者は、ここでまたは今後、多くの修正形態、代替形態、変更形態、および/または均等物を思いつくであろう。したがって、添付の特許請求の範囲は、特許請求される主題の真の趣旨に該当するすべてのかかる修正形態および/または変更形態をカバーすることが意図されることを理解されたい。
システムの態様のハードウェア実装形態とソフトウェア実装形態の間に差異はほとんどなく、ハードウェアの使用またはソフトウェアの使用は、一般に、費用対効果の兼ね合いを表す設計の選択である(しかし、ハードウェアとソフトウェアとの間の選択が重要になる可能性がある一定の状況では、常にそうであるとは限らない)。それによって本明細書で説明されるプロセス、および/もしくはシステム、ならびに/またはその他の技術が実現可能な様々な手段(例えば、ハードウェア、ソフトウェア、および/またはファームウェア)が存在し、好ましい手段は、それらのプロセス、および/もしくはシステム、ならびに/またはその他の技術が展開される状況によって異なることになる。例えば、実装者が、速度および精度が最重要であると決定した場合、その実装者は、ハードウェア手段および/またはファームウェア手段を主に選択することができ、柔軟性が最重要である場合、その実装者は、ソフトウェア実装形態を主に選択することができ、またはさらにこの場合も代替として、その実装者は、ハードウェア、ソフトウェア、および/またはファームウェアのいくつかの組合せを選択することができる。
前述の詳細な説明は、ブロック図、流れ図、および/もしくは例の使用を介したデバイスならびに/またはプロセスの様々な実施形態を記載している。かかるブロック図、流れ図、ならびに/あるいは例が1つもしくは複数の機能および/または動作を含む限り、かかるブロック図、流れ図、もしくは例の中のそれぞれの機能および/または動作は、幅広い範囲のハードウェア、ソフトウェア、ファームウェア、または実質的にそれらの任意の組合せによって、個々におよび/もしくは集合的に実装可能である点を当業者は理解されよう。一実装形態では、本明細書で説明された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、またはその他の統合形式を介して実装可能である。しかし、当業者は、本明細書で開示された実施形態のうちのいくつかの態様は、全体としてまたは一部において、1つもしくは複数のコンピュータ上で実行している1つもしくは複数のコンピュータプログラム(例えば、1つもしくは複数のコンピュータシステム上で実行している1つもしくは複数プログラム)として、1つもしくは複数のプロセッサ上で実行している1つもしくは複数のプログラム(例えば、1つもしくは複数のマイクロプロセッサ上で実行している1つもしくは複数のプログラム)として、ファームウェアとして、または実質的にそれらの任意の組合せとして、集積回路内で等しく実行可能であり、回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアに関するコードの書込みは、本開示に照らして、十分当業者の能力範囲内にあることになる点を理解されよう。加えて、当業者は、本明細書で説明された主題の機構は、様々な形態のプログラム製品として供給されることが可能であり、本明細書で説明された主題の例示的な実施形態は、その供給を実際に実行するために使用される信号担持媒体の特定のタイプにかかわらず適用される点を理解されよう。信号担持媒体の例は、以下を含むが、これらに限定されない。すなわち、フロッピー(登録商標)ディスク、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、コンピュータメモリなど、記録可能なタイプの媒体、ならびにデジタル通信媒体および/またはアナログ通信媒体(例えば、光ファイバーケーブル、導波管、有線通信リンク、無線通信リンクなど)など、伝送タイプの媒体である。
当業者は、本明細書に記載された形でデバイスおよび/またはプロセスを説明し、その後、かかる説明されたデバイスおよび/またはプロセスをデータ処理システムに統合するために技術的な手法を使用することは当技術分野において一般的である点を理解されよう。すなわち、十分な量の実験を介して、本明細書で説明されたデバイスおよび/またはプロセスの少なくとも一部をデータ処理システムに統合することが可能である。当業者は、典型的なデータ処理システムは、一般に、システムユニット筐体、ビデオディスプレイデバイス、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステム、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムなどの計算エンティティ、タッチパッドまたはスクリーンなどの1つもしくは複数の対話デバイス、ならびに/あるいはフィードバックループおよび制御モーター(例えば、位置および/または速度を感知するためのフィードバック、構成要素および/もしくは数量を移動ならびに/または調整するための制御モーター)を含む制御システムのうちの1つまたは複数を含む点を理解されよう。典型的なデータ処理システムは、一般に、データコンピューティングシステム/データ通信システムおよび/またはネットワークコンピューティングシステム/ネットワーク通信システムの内に見出される構成要素など、任意の適切な市販の構成要素を利用して実装可能である。
本明細書で説明される主題は、時には、異なる他の構成要素内に含まれた異なる構成要素、または異なる他の構成要素に接続された異なる構成要素を例示する。そのような示されたアーキテクチャは単なる例示であり、実際には、同じ機能性を達成する、多くのその他のアーキテクチャが実装可能である点を理解されよう。概念的な意味で、同じ機能性を達成するための構成要素のいずれの構成も、所望される機能性が達成されるように、有効に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる、本明細書のいずれの2つの構成要素も、アーキテクチャまたは中間構成要素にかかわらず、所望される機能性が達成されるように互いに「関連付けられる」と見なすことができる。同様に、そのように関連付けられたいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に接続されている」または「動作可能に結合されている」と見なすこともでき、そのように関連付けられているいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に結合続可能である」と見なすこともできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な(mateable)構成要素および/もしくは物理的に相互作用する構成要素、ならびに/または無線で相互作用可能な構成要素および/もしくは無線で相互作用する構成要素、ならびに/または論理的に相互作用する構成要素および/もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
本明細書における実質的に任意の複数用語および/または単数用語の使用に関して、当業者は、文脈および/もしくは応用例に応じて、複数から単数にかつ/または単数から複数に変換することが可能である。分かりやすくするために、本明細書において、様々な単数/複数の置換が明示的に記載される場合がある。
概して、本明細書、および、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般に、「開放的な」用語として意図される(例えば、「含んでいる」という用語は、「含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも含む」と解釈されるべきであり、「含む」という用語は、「含むが、それに限定されない」と解釈されるべきである、など)ことを理解されよう。当業者は、特定の数の導入される請求項の列挙が意図される場合、かかる意図は、特許請求の範囲内で明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しない点をさらに理解されよう。例えば、理解の支援として、以下の特許請求の範囲は、請求項の列挙を導入するために、「少なくとも1つの」および「1つまたは複数の」という導入句の使用を含む場合がある。しかし、かかる句の使用は、同じ請求項が、導入句「1つもしくは複数の」または「少なくとも1つの」、ならびに「a」または「an」などの不定冠詞を含むときですら、不定冠詞「a」または「an」による請求項の列挙の導入が、そのように導入された請求項の列挙を含む任意の特定の請求項を1つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく(例えば、「a」および/または「an」は、典型的には、「少なくとも1つの」または「1つもしくは複数の」を意味すると解釈されるべきである)、同じことは、請求項の列挙を導入するために使用される定冠詞の使用に関しても当てはまる。加えて、特定の数の導入された請求項の列挙が明示的に列挙されているときですら、当業者は、かかる列挙は、一般に、少なくとも列挙された数を意味する(例えば、修飾語句を伴わない「2つの列挙」の単なる列挙は、一般に、少なくとも2つの列挙、または2つ以上の列挙を意味する)と解釈されるべきである点を理解されよう。さらに、「A、B、およびCのうちの少なくとも1つの、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AとBとを共に有するシステム、AとCとを共に有するシステム、BとCとを共に有するシステム、および/またはAと、Bと、Cとを共に有するシステムなどを含むことになるが、これらに限定されない)。「A、B、またはCのうちの少なくとも1つ、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AとBとを共に有するシステム、AとCとを共に有するシステム、BとCとを共に有するシステム、および/またはAと、BとCとを共に有するシステムなどを含むことになるが、これらに限定されない)。当業者は、明細書内であれ、特許請求の範囲内であれ、または図面内であれ、2つ以上の代替用語を提示する実質的にいかなる離接語および/または離接句も、それらの用語のうちの1つ、それらの用語のどちらか、またはそれらの用語の両方を含む可能性を企図すると理解されるべきである点をさらに理解されよう。例えば、「AまたはB」という成句は、「A」、もしくは「B」、または「AおよびB」の可能性を含むと理解されることになる。

Claims (20)

  1. メモリにデータを求める要求を実行するための方法であって、
    スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、前記第1のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第1のスレッド要求タイプを発行し、前記第2のスレッドタイプのそれぞれのスレッドが、前記メモリにデータを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、
    それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、
    それぞれの第1のバッチの前記要求を実行することを含む方法。
  2. それぞれが単一のスレッド要求タイプの要求を主に含む第2のバッチを形成すること、
    それぞれの第2のバッチの前記要求を実行することをさらに含み、
    それぞれの第1のバッチの前記要求を前記実行することが、それぞれの第2のバッチの前記要求を前記実行することの前に発生する
    請求項1に記載の方法。
  3. それぞれの第1のバッチの前記要求を前記実行することが、前記第2のバッチを形成することの前に発生する、前記請求項のいずれかに記載の方法。
  4. それぞれの第1のバッチの前記要求を前記実行することが、別のバッチの任意の要求を実行する前にバッチのすべての要求を実行することを含む、前記請求項のいずれかに記載の方法。
  5. それぞれの第1のバッチが、単一のスレッド要求タイプの要求を含む、前記請求項のいずれかに記載の方法。
  6. 前記分離することが、前記スレッドを前記第1のスレッドタイプ、前記第2のスレッドタイプ、および第3のスレッドタイプに分離することを含み、前記第3のスレッドタイプのそれぞれのスレッドが、前記メモリにデータを求める少なくとも1つの第3のスレッド要求タイプを発行する、前記請求項のいずれかに記載の方法。
  7. 前記分離することが、前記スレッドを前記第1のスレッドタイプおよび前記第2のスレッドタイプだけに分離することを含む、前記請求項のいずれかに記載の方法。
  8. 前記分離することが、前記スレッドが、並列メモリと共に使用するために、どのくらい良好に設計されているかに基づいて分離することを含む、前記請求項のいずれかに記載の方法。
  9. 前記分離することが、前記スレッドがその他のスレッドとどのくらい効果的に共働するかに基づいて分離することを含む、前記請求項のいずれかに記載の方法。
  10. 前記分離することが、前記スレッドが発生したアプリケーションプログラムに基づいて分離することを含む、前記請求項のいずれかに記載の方法。
  11. 前記分離することが、それぞれのスレッドが行う要求の相対数に基づいて分離することを含む、前記請求項のいずれかに記載の方法。
  12. メモリにデータを求める要求を実行するために、コンピュータ可読媒体内に符号化されたソフトウェアを有するコンピュータプログラムであって、前記ソフトウェアが、実行されたとき、
    スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、前記第1のスレッドタイプのそれぞれのスレッドが、メモリにデータを求める少なくとも1つの第1のスレッド要求タイプを発行し、前記第2のスレッドタイプのそれぞれのスレッドが、前記メモリにデータを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、
    それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、
    それぞれの第1のバッチの前記要求を実行することを行うように動作可能な命令を含むコンピュータプログラム。
  13. 実行されたとき、
    それぞれが単一のスレッドの要求タイプの要求を主に含む第2のバッチを形成し、
    それぞれの第2のバッチの前記要求を実行するように動作可能な命令をさらに含み、
    前記命令が、それぞれの第1のバッチの前記要求を実行し、次いで、それぞれの第2のバッチの前記要求を実行する、請求項12に記載のコンピュータプログラム。
  14. 前記命令が、それぞれの第1のバッチの前記要求を実行し、次いで、前記第2のバッチを形成する、請求項12又は13に記載のコンピュータプログラム。
  15. それぞれの第1のバッチの前記要求を実行するための前記命令が、バッチのすべての要求を実行し、次いで、別のバッチの要求を実行するための命令を含む、請求項12乃至14のいずれかに記載のコンピュータプログラム。
  16. それぞれの第1のバッチが、単一のスレッド要求タイプの要求を含む、請求項12乃至15のいずれかに記載のコンピュータプログラム。
  17. 分離するための前記命令が、前記スレッドを前記第1のスレッドタイプ、前記第2のスレッドタイプ、および第3のスレッドタイプに分離するための命令を含み、前記第3のスレッドタイプのそれぞれのスレッドが、前記メモリにデータを求める少なくとも1つの第3のスレッド要求タイプを発行する、請求項12乃至16のいずれかに記載のコンピュータプログラム。
  18. 分離するための前記命令が、前記スレッドを前記第1のスレッドタイプ、および前記第2のスレッドタイプに分離する命令を含む、請求項12乃至17のいずれかに記載のコンピュータプログラム。
  19. 複数のコアと、
    前記複数のコアに動作可能に結合された、データを含むメモリと、
    前記複数のコアに動作可能に結合されたコンピュータ可読媒体とを備えるコンピュータシステムであって、
    前記コンピュータ可読媒体が、コンピュータシステムによって実行されたとき、
    スレッドを第1のスレッドタイプおよび第2のスレッドタイプに分離することであって、前記第1のスレッドタイプのそれぞれのスレッドが、前記メモリに前記データを求める少なくとも1つの第1のスレッド要求タイプを発行し、前記第2のスレッドタイプのそれぞれのスレッドが、前記メモリに前記データを求める少なくとも1つの第2のスレッド要求タイプを発行する、分離すること、
    それぞれが単一のスレッド要求タイプの要求を主に含む第1のバッチを形成すること、
    それぞれの第1のバッチの前記要求を実行することを行うようにコンピュータシステムを構成するコンピュータ実行可能命令を含む、コンピュータシステム。
  20. 前記コンピュータ可読媒体が、前記コンピュータシステムによって実行されたとき、バッチのすべての要求を実行し、次いで、別のバッチの任意の要求を実行するように前記コンピュータシステムをさらに構成するコンピュータ実行可能な命令をさらに含む、請求項19に記載のコンピュータシステム。
JP2012521651A 2009-07-22 2010-06-25 分離によるバッチスケジューリング Expired - Fee Related JP5560331B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/507,696 US8607234B2 (en) 2009-07-22 2009-07-22 Batch scheduling with thread segregation and per thread type marking caps
US12/507,696 2009-07-22
PCT/US2010/039912 WO2011011154A2 (en) 2009-07-22 2010-06-25 Batch scheduling with segregation

Publications (2)

Publication Number Publication Date
JP2012533826A true JP2012533826A (ja) 2012-12-27
JP5560331B2 JP5560331B2 (ja) 2014-07-23

Family

ID=43498400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012521651A Expired - Fee Related JP5560331B2 (ja) 2009-07-22 2010-06-25 分離によるバッチスケジューリング

Country Status (5)

Country Link
US (1) US8607234B2 (ja)
JP (1) JP5560331B2 (ja)
KR (1) KR101377850B1 (ja)
CN (1) CN102725734B (ja)
WO (1) WO2011011154A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019525324A (ja) * 2016-07-13 2019-09-05 クゥアルコム・インコーポレイテッドQualcomm Incorporated メモリ要求仲裁

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
CN105723339B (zh) * 2013-12-17 2020-03-06 英特尔公司 用于便携式计算设备虚拟化的技术
US9626218B1 (en) * 2014-03-10 2017-04-18 Altera Corporation Repartitioning and reordering of multiple threads into subsets based on possible access conflict, for sequential access to groups of memory banks in a shared memory
US9378044B1 (en) * 2015-03-28 2016-06-28 Vmware, Inc. Method and system that anticipates deleterious virtual-machine state changes within a virtualization layer
CN106161393B (zh) 2015-04-17 2020-04-24 伊姆西Ip控股有限责任公司 实现多个内容管理服务操作的方法和装置
US10250715B2 (en) 2016-06-30 2019-04-02 Salesforce.Com, Inc. Dynamic adjustment of boxcarring of action requests from component-driven cloud applications
US10250716B2 (en) * 2016-06-30 2019-04-02 Salesforce.Com, Inc. Priority-driven boxcarring of action requests from component-driven cloud applications
CN107103234B (zh) * 2017-03-01 2020-06-26 北京龙鼎源科技股份有限公司 多任务隔离方法和装置
US11568236B2 (en) 2018-01-25 2023-01-31 The Research Foundation For The State University Of New York Framework and methods of diverse exploration for fast and safe policy improvement
US11422857B2 (en) 2019-06-01 2022-08-23 Apple Inc. Multi-level scheduling

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100264A (ja) * 2003-09-26 2005-04-14 Toshiba Corp スケジューリング方法および情報処理システム
JP2007034414A (ja) * 2005-07-22 2007-02-08 Masaru Kiregawa データベース管理システム及び方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6286083B1 (en) * 1998-07-08 2001-09-04 Compaq Computer Corporation Computer system with adaptive memory arbitration scheme
US7065762B1 (en) * 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
US6633298B2 (en) * 1999-07-31 2003-10-14 Hewlett-Packard Development Company, L.P. Creating column coherency for burst building in a memory access command stream
US6817011B1 (en) * 1999-12-14 2004-11-09 International Business Machines Corporation Memory allocation profiling to discover high frequency allocators
US6711644B1 (en) * 2000-07-27 2004-03-23 International Business Machines Corporation Apparatus and method for communicating the completion of asynchronous input/output
US6578117B2 (en) * 2001-10-12 2003-06-10 Sonics, Inc. Method and apparatus for scheduling requests using ordered stages of scheduling criteria
US6961834B2 (en) 2001-10-12 2005-11-01 Sonics, Inc. Method and apparatus for scheduling of requests to dynamic random access memory device
US7194561B2 (en) * 2001-10-12 2007-03-20 Sonics, Inc. Method and apparatus for scheduling requests to a resource using a configurable threshold
US7222343B2 (en) * 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US7356631B2 (en) * 2005-01-21 2008-04-08 Himax Technologies, Inc. Apparatus and method for scheduling requests to source device in a memory access system
US20080244135A1 (en) 2005-05-04 2008-10-02 Nxp B.V. Memory Controller and Method For Controlling Access to a Memory, as Well as System Comprising a Memory Controller
US20070061805A1 (en) * 2005-09-15 2007-03-15 Brenner Larry B Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system
CN100373362C (zh) * 2005-12-22 2008-03-05 北京中星微电子有限公司 直接存储访问控制器
US7533236B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip out of order memory allocation for a unified shader
US8019002B2 (en) * 2006-06-08 2011-09-13 Qualcomm Incorporated Parallel batch decoding of video blocks
US20090031314A1 (en) * 2007-07-25 2009-01-29 Microsoft Corporation Fairness in memory systems
US9588810B2 (en) * 2007-08-08 2017-03-07 Microsoft Technology Licensing, Llc Parallelism-aware memory request scheduling in shared memory controllers
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US20090165007A1 (en) * 2007-12-19 2009-06-25 Microsoft Corporation Task-level thread scheduling and resource allocation
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
US8296773B2 (en) * 2008-06-30 2012-10-23 International Business Machines Corporation Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
US8332854B2 (en) * 2009-05-19 2012-12-11 Microsoft Corporation Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100264A (ja) * 2003-09-26 2005-04-14 Toshiba Corp スケジューリング方法および情報処理システム
JP2007034414A (ja) * 2005-07-22 2007-02-08 Masaru Kiregawa データベース管理システム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019525324A (ja) * 2016-07-13 2019-09-05 クゥアルコム・インコーポレイテッドQualcomm Incorporated メモリ要求仲裁

Also Published As

Publication number Publication date
WO2011011154A2 (en) 2011-01-27
US20110023038A1 (en) 2011-01-27
CN102725734A (zh) 2012-10-10
KR101377850B1 (ko) 2014-03-25
JP5560331B2 (ja) 2014-07-23
CN102725734B (zh) 2015-08-26
KR20120017456A (ko) 2012-02-28
US8607234B2 (en) 2013-12-10
WO2011011154A3 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
JP5560331B2 (ja) 分離によるバッチスケジューリング
JP5444467B2 (ja) バッチスケジューリングによるスレッドのスケジューリング
JP5553392B2 (ja) スレッドスロットリング
JP5744866B2 (ja) メモリ要求スケジューリングのアプリケーション選択
JP5752242B2 (ja) マルチコアプロセッサに関するマルチスレッドアプリケーション・アウェア・メモリスケジューリングスキーム
JP5526420B2 (ja) コア特性およびアプリケーション特性に基づく、マルチプロセッサシステム上で実行しているアプリケーションに関するコア選択
US9372526B2 (en) Managing a power state of a processor
US8775762B2 (en) Method and apparatus for batching memory requests
US7962771B2 (en) Method, system, and apparatus for rerouting interrupts in a multi-core processor
US20070156955A1 (en) Method and apparatus for queuing disk drive access requests
CN113316767A (zh) 处理器处的松弛度感知、动态优先级变化
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
EP2663926B1 (en) Computer system interrupt handling
JP2016085515A (ja) 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム
JP2013114538A (ja) 情報処理装置、情報処理方法及び制御プログラム
JP5932261B2 (ja) メモリ制御装置、メモリ制御方法
JP2010044703A (ja) マルチタスクosにおけるタスク切り替え方法及びプログラム
CN105378640B (zh) 一种处理访问请求的方法及装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140609

R150 Certificate of patent or registration of utility model

Ref document number: 5560331

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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