(58)【調査した分野】(Int.Cl.,DB名)
前記第1のバッチを形成したことに応答して、前記メモリコントローラによって、前記第1のバッチのそれぞれの前記第1の要求を実行することをさらに含む、請求項4に記載の方法。
前記複数のスケジューリングアルゴリズムが、バッチ内並列処理認識スケジューリング、バッチ内全最大スケジューリング、バッチ内ランダムスケジューリング、バッチ内ラウンドロビンスケジューリング、およびバッチ内FR−FCFSスケジューリングのうちの2つ以上を含む、請求項1に記載の方法。
前記複数のスケジューリングアルゴリズムが、バッチ内並列処理認識スケジューリング、バッチ内全最大スケジューリング、バッチ内ランダムスケジューリング、バッチ内ラウンドロビンスケジューリング、およびバッチ内FR−FCFSスケジューリングのうちの2つ以上を含む、請求項9に記載のコンピュータプログラム。
【発明を実施するための形態】
【0010】
以下の説明は、特許請求される主題の十分な理解をもたらすために、特定の詳細と共に様々な例を記載する。しかし、特許請求される主題は、本明細書で開示される特定の詳細のうちのいくつかまたはより多くの当該詳細なしに実行可能である点を当業者は理解されよう。さらに、状況によっては、よく知られている方法、手順、システム、構成要素、および/または回路は、特許請求される主題を不必要にあいまいにすることを回避するために、詳しく説明されていない。以下の詳細な説明では、その説明の一部を形成する添付の図面が参照される。図面では、別段文脈によって示されない限り、類似の符号は、通常、類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的なものとしない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、その他の実施形態を利用することが可能であり、ここに提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことも可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部である幅広い異なる構成で構成、置換、組合せ、および設計され得る点を容易に理解されよう。
【0011】
以下の説明では、コンピュータ内および/もしくはコンピューティングシステムメモリ内など、コンピューティングシステム内に格納されたデータビットおよび/もしくは2値デジタル信号に関するアルゴリズムならびに/または動作の記号表現が提示される場合がある。アルゴリズムは、一般に、所望される結果をもたらす動作および/または類似処理の自己無撞着シーケンスと見なされ、この場合、これらの動作は、格納されること、転送されること、組み合わされること、比較されること、および/もしくは、他の方法で操作されることが可能な電気信号、磁気信号ならびに/または電磁信号の形をとり得る物理量の物理処理を必要とする場合がある。様々な状況において、かかる信号は、ビット、データ、値、要素、記号、文字、用語、番号、数字などと呼ばれる場合がある。しかし、当業者は、かかる用語は物理量を意味するために使用され得る点を認識されよう。したがって、本明細書において「格納する」、「処理する」、「取り出す」、「計算する」、「決定する」などの用語が使用されるとき、これらは、コンピューティングプラットフォームのプロセッサ内、メモリ内、レジスタ内などの電子量および/もしくは磁気量を含む物理量として表されるデータを操作ならびに/または変換する、コンピュータ、あるいはセルラ電話などの類似の電子コンピューティングデバイスなど、コンピューティングプラットフォームの動作を指す場合がある。
【0012】
本開示は、とりわけ、メモリ要求スケジューリングのアプリケーション選択に関する方法、装置、システム、およびコンピュータプログラム製品に関して描写される。本開示は、一般に、複数のスケジューリングアルゴリズムから、要求をスケジューリングするためのスケジューリングアルゴリズムを選択するためにアプリケーションプログラムを使用すること、およびその選択されたスケジューリングアルゴリズムを使用するようにメモリコントローラに命令することの発見も使用する。
【0013】
図1は、本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する。
図1は、プロセッサ110と、メモリ120と、1つまたは複数のドライブ130とを含むコンピュータ100を例示する。ドライブ130およびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶装置をコンピュータ100に提供することが可能である。ドライブ130は、オペレーティングシステム140と、アプリケーションプログラム150と、プログラムモジュール160と、データベース180とを含むことが可能である。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に
図6に指定される機能および/または動作、例えば、アプリケーションの一部であるスケジューリングアルゴリズム153を実行させるためのプログラム命令を含むことが可能である。コンピュータ100は、それを介してユーザがコマンドおよびデータを入力できるユーザ入力デバイス190を含むことが可能である。入力デバイスは、電子デジタイザと、マイクロフォンと、キーボードと、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスとを含むことが可能である。その他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことが可能である。
【0014】
これらの入力デバイスおよびその他の入力デバイスは、システムバスに結合可能なユーザ入力インターフェースを介してプロセッサ110に結合可能であるか、あるいは当該入力デバイスは、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバス(USB)など、その他のインターフェースまたはバス構造によって接続可能である。コンピュータ100は、出力周辺インターフェース194などを介して接続可能なスピーカ、プリンタ、またはディスプレイ202など、周辺出力デバイスを含むことが可能である。
【0015】
コンピュータ100は、ネットワークインターフェース196に接続された遠隔コンピュータなど、1つまたは複数のコンピュータに対する論理接続を使用して、ネットワーキング環境で動作するように構成され得る。この遠隔コンピュータは、パーソナルコンピュータ(PC)、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードであってよく、コンピュータ100に関連して上で説明された要素の多くまたはすべてを含むことが可能である。
【0016】
ネットワーキング環境は、事務所、企業広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イントラネット、およびインターネットを含むことが可能である。一例では、コンピュータ100は、そこからデータが移動されている送信元機械であってよく、遠隔コンピュータは、宛先機械を備えてよく、またはその逆であってもよい。送信元ソース機械および宛先機械は、ネットワーク108または任意の他の手段によって接続できず、代わりに、データは、送信元プラットフォームによって書き込まれて、1つまたは複数の宛先プラットフォームによって読み取られることが可能な任意の媒体を経由して移動可能である。LANまたはWLANのネットワーキング環境では、コンピュータ100は、ネットワークインターフェース196もしくはアダプタを介して、LANまたはWANに接続可能である。WANネットワーキング環境では、コンピュータ100は、モデム、またはインターネットもしくはネットワーク108など、WAN上で通信を確立するためのその他の手段を含むことが可能である。コンピュータ同士の間で通信リンクを確立するその他の手段を使用することも可能である。
【0017】
コンピュータ周辺装置は、システムバスを介してコンピュータ100のプロセッサ110およびメモリ120に結合された任意のデバイスを含むことが可能である。コンピュータ周辺装置は、ディスプレイ202、プリンタ、またはスピーカを含む出力周辺インターフェースと、ドライブ130と、キーボード、マウス、およびマイクロフォンなどのユーザ入力デバイス190と、ネットワークインターフェース196とに接続された任意のデバイスを含むことが可能である。コンピュータ周辺装置の構成要素は、電力を使用することが可能であり、スピーカ、発光ダイオードなどの照明要素、またはディスプレイに照明を提供するために使用されるバックライト、LCD、LED、OLEO、CRT、もしくはプラズマディスプレイなどのディスプレイ要素、または中央処理装置(CPU)、グラフィック処理ユニット(GPU)、メモリなどの半導体チップなど、任意のデバイスであってよい、コンピュータ周辺装置内の任意のデバイスを含むことが可能である。
【0018】
図2は、本開示の少なくともいくつかの実施形態に従って構成された、オペレーティングシステムによって実行されているアプリケーションプログラムを例示する。
図2に示されるように、オペレーティングシステム140は、ドライブ130からアプリケーションプログラム150を実行することができる。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に
図6に指定された機能および/または動作を実行させるためのプログラム命令を含むことが可能である。アプリケーションプログラム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に送信可能である。
【0019】
いくつかの実施形態では、
図2に示されるように、マルチプロセッサ111は、2つ以上のスレッド220を同時に実行できるプロセッサを含むことが可能である。マルチプロセッサ111は、コア412および512として知られる複数のプロセッサを含むことが可能であり、またはマルチスレッドプロセッサとしても知られている、複数のスレッド220を同時に実行できる単一のプロセッサ(412もしくは512のうちの1つだけ)を含むことも可能である。
図2は、2つのコア412および512を含む例示的なマルチプロセッサ111を示すが、任意の特定数のコアに限定されない。「コア」という用語は、本明細書において、単一のスレッドを処理することが可能であり、単一のスレッドを処理できるプロセッサまたはプロセッサ内の部分を指す場合がある任意のデバイスを指すために使用される場合がある。マルチスレッドプロセッサは、複数のコアを有するプロセッサと呼ばれる場合がある。複数のプロセッサを有するコンピュータ100は、本明細書において、複数のコアを有するコンピュータ100と呼ばれる場合がある。
【0020】
図3は、本開示の少なくともいくつかの実施形態に従って、メモリコントローラに送信される要求を発行できるスレッドに分割されているアプリケーションプログラムの概略図を示す。
図3に示されるように、アプリケーション150は、複数のスレッド220
a〜220
nに分割可能であり、この場合、nはスレッド220の数を表すことが可能であり、それぞれのスレッドは、アプリケーション150に関するタスクを実行することが可能であり、例えば、
図2のマルチプロセッサ111上で実行可能である。このマルチプロセッサは、アプリケーションプログラム150から複数のスレッド220
a〜220
nを個々にまたは同時に受信および実行するように構成され得る。マルチプロセッサ上で実行されるそれぞれのスレッド220は、それぞれの他のスレッド220から独立して実行可能であり、メモリ120内に格納されたデータ230に関して複数の要求226
a1〜226
no
を発行することが可能であり、この場合、第1の指数(a...n)は、要求226に関連するスレッド220を表し、第2の指数(1...o)は、特定のスレッド220に関連する要求226の数を表す。
【0021】
それぞれのスレッド220は、メモリ120内に格納されたデータ230に関する要求226を発行することが可能であり、一例では、メモリ120内のメモリバンク122
a〜122
m内に格納されたデータ230に関する要求226を発行することが可能であり、この場合、指数(a、b...m)は、メモリバンク122の数を表すことが可能である。メモリ120は、異なるメモリバンクからデータ230を追求する場合、複数の未解決のメモリ要求226が並列して処理されることを可能にするように構成可能な複数のメモリバンク122
aから122
mを含むことが可能である。結果として、第1のメモリバンク122
aおよび第2のメモリバンク122
bは、データ230に関する要求226の受信時に、メモリコントローラ210によって同時にアクセスされ得る。
【0022】
それぞれのメモリバンク122は、指数(1...i)が列の数を表すことが可能な列C
1からC
iと、指数(1...j)が行の数を表すことが可能な行R
1からR
iとを含む二次元アレイであってよい。行は、連続的なメモリ位置内にデータを格納することが可能であり、例えば、およそ1〜2キロバイト(KB)のサイズであってよい。メモリバンク122内のデータ230は、最大で1行を含み得る行バッファR
Bからアクセス可能である。一例では、それぞれのメモリバンク122は、1つの行バッファR
Bを含むことが可能である。メモリバンク122がデータ230に関するそれぞれの要求226にサービス提供するためにかかる時間は、それぞれの行バッファR
Bの状態に依存する可能性があり、3つの範疇のうちの1つに該当し得る。第1の範疇は、行ヒット(row−hit)であってよく、この場合、要求226は、それぞれの行バッファR
B内で現在開放され、メモリコントローラ210がそれぞれのメモリバンク122に対する読取りコマンドまたは書込みコマンドだけを発行することを可能にし、結果として、t
CLのバンクアクセスレイテンシをもたらし得る行に対する可能性がある。
【0023】
第2の範疇は、行閉鎖(row closed)であってよく、この場合、行バッファR
B内には開放された行が存在しない可能性があり、その結果、メモリコントローラ210は、まず要求される行を開放するための起動コマンドを発行し、次いで、読取り/書込みコマンドを発行し、結果として、t
RCD+t
CLの総レイテンシをもたらす必要があり、式中、t
RCDは起動コマンドに関するレイテンシであり、t
CLは読取り/書込みコマンドに関するレイテンシである。第3の範疇は、行衝突(row conflict)であってよく、この場合、要求226は、それぞれの行バッファR
B内の現在の行とは異なる行に対する可能性があり、その結果、メモリコントローラ210は、まずプリチャージ(precharge)コマンドを発行して、(必要とされる行をアクティブ化することによって)必要とされる行を開放し、必要とされる行内のデータに関して読取り/書込みコマンドを発行する必要がある。これらのアクセスは、t
RP+t
RCD+t
CLの最高総レイテンシを負う可能性があり、式中、t
RPは(行を閉鎖するための)行プリチャージに関するレイテンシであり、t
RCDは起動コマンドに関するレイテンシであり、t
CLは読取り/書込みコマンドに関するレイテンシである。
【0024】
メモリコントローラ210は、メモリ120およびマルチプロセッサと通信している形で構成可能であり、マルチプロセッサ内を含めて、システムに沿ってどこに配置されてもよい。メモリコントローラ210は、要求226がサービス提供されるのを待っている可能性がある間、要求226およびデータ230にバッファリングするように構成可能なメモリ要求バッファ211を含むことが可能である。メモリコントローラ210は、サービス提供されることになる次の要求226を選択するように構成可能なスケジューラ212を含むことが可能である。いくつかの実施形態では、スケジューラ212は2つのレベルを有し得る。サービス提供されることになる次の要求226を選択するとき、スケジューラ212は、メモリバンク122
a〜122
mの状態と、メモリコントローラ210をそれぞれのメモリバンク122に接続しているメモリバス214
a〜214
mの状態と、要求226の状態とを考慮するように構成可能である。要求226に関するメモリコマンドは、そのスケジューリングが、メモリバンク122
a〜122
m、およびアドレス/データ/システムバスなど、いかなるリソース衝突も引き起こさず、いかなるメモリタイミング制約にも違反しない場合、スケジューラ212によってスケジュールされ得る。いかなる衝突も引き起こさないメモリコマンドは、準備ができていると見なすことができる。
【0025】
様々なメモリ要求スケジューリングアルゴリズムが存在する。例は、(A)FR−FCFS(first−ready first−come−first serve)、(B)ネットワークフェアキューイング(Network Fair Queuing)、およびその変形、開始時間フェアキューイング(Start−time Fair Queuing)、(C)失速時間フェアメモリスケジューラ(Stall−time Fair Memory Scheduler)、ならびに(D)バッチアルゴリズムおよびバッチ内スケジューリングアルゴリズムの両方を使用して、(時間ベースの静的バッチ処理および空きスロットバッチ処理など)異なるバッチアルゴリズムならびに/または(バッチ内並列処理認識スケジューリング、バッチ内全最大スケジューリング(Total−max Within Bach Scheduling)、バッチ内ランダムスケジューリング、バッチ内ラウンドロビンスケジューリング、およびバッチ内FR−FCFSスケジューリングなど)異なるバッチ内スケジューリングアルゴリズムを使用することによって生み出される変形を可能にする並列処理認識バッチスケジューリング(Parallelism−aware Batch Scheduling)を含むことが可能である。
【0026】
加えて、下(
図4および5)でより詳細に説明されるのは、別のメモリ要求スケジューリングアルゴリズム、すなわち、(E)バッチアルゴリズムおよびバッチ内スケジューリングアルゴリズムの両方を使用することも可能な、分離によるバッチスケジューリングである。このアルゴリズムでは、バッチアルゴリズムは、例えば、(1)それらのスレッドが、並列メモリと共に使用するために、どのくらい良好に設計されているかに基づいて、良好な設計スレッドおよび不良な設計スレッド、(2)それらのスレッドがその他のスレッドとどのくらい効果的に共働するかに基づいて、協調スレッドおよび非協調スレッド、(3)そのスレッドが発生したアプリケーションプログラムに基づいて、第1のアプリケーションスレッド、第2のアプリケーションスレッド、および第3のアプリケーションスレッド、(4)それらのスレッドが行う要求の相対数に基づいて、大規模要求スレッド、オプションで、中規模要求スレッドおよび小規模要求スレッド、例えば、大規模要求スレッドは、平均数以上の要求を行うことが可能であり、小規模要求スレッドは、平均数未満のいくつかの要求を行うことが可能であるなど、要求を発行したスレッドの特性に基づいて、要求をグループ化するように適合可能である。並列処理認識バッチスケジューリングと同様に、(バッチ内並列処理認識スケジューリング、バッチ内全最大スケジューリング、バッチ内ランダムスケジューリング、バッチ内ラウンドロビンスケジューリング、およびバッチ内FR−FCFSスケジューリングなど)いくつかの変形を生み出すために、異なるバッチ内スケジューリングアルゴリズムを使用することが可能である。
【0027】
図3Aは、バッチアルゴリズム302およびバッチ内スケジューリングアルゴリズムまたはバッチ内並列処理認識スケジューリングアルゴリズム350を含むスケジューリングアルゴリズム300の一部を示す、分離によるバッチスケジューリングと共に使用可能なスケジューラ212の詳細図を含む。あるいは、バッチ内スケジューリングアルゴリズムおよびバッチ内並列処理認識スケジューリングアルゴリズムの両方がスケジューリングアルゴリズムによって用いられることも可能である。
【0028】
図3および
図3Aを再び参照すると、スレッド220
a〜220
nから要求226
a1〜226
noをスケジューリングする効率性を改善するために、メモリコントローラ210、および特にスケジューラ212は、スレッド内バンク並列処理を考慮に入れることが可能なスケジューリングアルゴリズム300として分離によるバッチスケジューリングを使用するように適合可能であり、それぞれのスレッド220
a〜220
nにサービスの質(QoS)を提供することが可能である。サービスの質は、異なるスレッド220
a〜220
nに異なる優先順位を提供するための能力、および/またはスレッド220
a〜220
nを実行するときに基礎パフォーマンスレベルを提供するための能力と見なすことができる。スケジューリングアルゴリズム300は、公平性、およびQoS、ならびに高いCMPシステムスループットに関して構成可能な基板を提供するように設計可能である。バッチ処理アルゴリズム302は、いくつかの未解決のメモリ要求226
a1〜226
noをバッチにグループ化するように適合可能である。スケジューリングアルゴリズム300は、次のバッチが形成される前に、現在のバッチに属するすべての要求226
a1〜226
noがサービス提供されることを確実にするように適合されることも可能である。バッチ処理アルゴリズム302は、複数のバッチを同時に形成するように構成可能であり、この場合、それぞれのバッチは、本明細書で説明される一定の基準を使用して形成され得る。
【0029】
バッチ処理アルゴリズムは、メモリ要求バッファ内の未解決の要求をバッチと呼ばれる要求のセットにグループ化するように構成可能である。メモリスケジューラは、現在のバッチに属している要求をその他の要求に勝って優先順位付けすることによって、
複数のバッチ
にまたがって要求を再順序付けすることを回避できる。
或る1つのバッチのすべての要求がサービス提供されると、例えば、そのバッチが
完了されたとき、最後のバッチ内に含まれていなかった、メモリ要求バッファ内の未解決の要求を含み得る次のバッチが次いでサービス提供され得る。複数のバッチを同時に形成することは、
或る1つのバッチ内の要求を再順序付けすることを可能に
し得る。
【0030】
バッチ処理アルゴリズムは、以下のように作用することが可能である。メモリ要求バッファ内のそれぞれの要求は、その要求が現在のバッチ内のどのバッチに属すかを表示する関連するビットを有し得る。要求が第1のバッチに属する場合、例えば、関連するビットは、その要求が第1のバッチに属すことを表示するように設定可能であり、その要求はマーキングされたと見なすことができる。複数のバッチを形成することが可能であり、その場合、それらの要求のそれぞれは、本明細書で説明される一定の基準に基づいて、それらの要求がそれらの複数のバッチのうちのどの中に配置されることになるか、またはそれらの要求がそれらの複数のバッチのうちのどの一部であるかを表示するためにマーキングされる。メモリ要求バッファ内にマーキングされた要求が残されていないとき、例えば、これまでのバッチからのすべての要求が完全にサービス提供されているとき、新しいバッチを形成することが可能である。
【0031】
いくつかの実施形態では、バッチを形成するとき、バッチ処理アルゴリズムは、それぞれのスレッドに関
し、メモリバンクごとに
最大で或る設定数(マーキングキャップ)までの未解決の要
求をマーキングすることが可能であり、これらの要求
がバッチを形成することができる。このマーキングキャップは、あるバンクに関して
或る1つのスレッドによって発行されたいくつの要求がバッチの一部であってよいかを制限できるシステムパラメータとして利用可能である。例えば、このマーキングキャップが5であり、
或るスレッドがメモリバンクに関して7個の未解決の要求を有する場合、バッチ処理アルゴリズムは、5個の(または、5個に満たない要求が存在する場合、より少ない)最も古い要求をマーキングすることが可能である。例は、2、3、5、7、10、20、50、またはより大きなマーキングキャップすら含む。さらに、本明細書で説明されるように、これらのマーキングキャップは、異なるタイプのバッチによって異なってよい。いくつかの例では、マーキングキャップが設定されていない場合、1つまたは複数のバッチが形成されるとき、すべての未解決の要求をマーキングすることが可能である。
【0032】
バッチ処理アルゴリズムは、マーキングされた要求(バッチの形の要求)を所与のメモリバンク内のマーキングされていない要求に勝って優先順位付けするように構成可能である。所与のバンクに対してマーキングされた要求が存在しない場合、未解決のマーキングされていない要求をそのバンクに対してスケジューリングすることができる。2つのマーキングされた要求または2つのマーキングされていない要求の間で選択するために、FR−FCFSなど、任意の既存のメモリスケジューリングアルゴリズムまたは新しいメモリスケジューリングアルゴリズムを用いることが可能である。
【0033】
図4および6は、本開示の少なくともいくつかの実施形態に従って構成された方法、装置(システム)、およびコンピュータプログラム製品の流れ図である。
図4および6の流れ図のそれぞれのブロック、および
図4および6の流れ図のブロックの組合せは、コンピュータプログラム命令によって実装可能である点を理解されよう。これらのコンピュータプログラム命令は、コンピュータ上、または他のプログラマブルデータ処理装置上で実行する命令が流れ図の1つまたは複数のブロック内で指定される機能を実装するための手段を作成するように、コンピュータ上、プロセッサ上、または他のプログラマブルデータ処理装置上にロード可能である。これらのコンピュータプログラム命令は、記憶デバイス内に格納された命令が、流れ図の1つもしくは複数のブロック内で指定された機能を実装する命令手段を含む製品を作成するように、コンピュータ、プロセッサ、または他のプログラマブルデータ処理装置が特定の様式で機能するように指令できる記憶デバイス内に格納されることも可能である。これらのコンピュータプログラム命令は、コンピュータ上で、プロセッサ上で、または他のプログラマブル装置上で実行する命令が流れ図の1つもしくは複数のブロック内で指定された機能を実装するためのステップを提供するようにコンピュータ実装プロセスを作成するように、コンピュータ上で、プロセッサ上で、または他のプログラマブルデータ処理装置上で一連の動作ステップを実行させるために、コンピュータ上、プロセッサ上、または他のプログラマブルデータ処理装置上にロードされることも可能である。
【0034】
したがって、
図4および6の流れ図のブロックは、指定された機能/動作/活動を実行するための手段の組合せ、もしくは指定された機能または動作を実行するためのステップの組合せ、ならびに指定された機能または動作を実行するためのプログラム命令手段をサポートする。
図4および6の流れ図のそれぞれのブロック、ならびに
図4および6の流れ図内のブロックの組合せは、指定された機能/動作/活動もしくはステップ、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのコンピュータシステムによって実装可能である点も理解されよう。
【0035】
かかるコンピュータ命令は、コンピュータ可読媒体(例えば、ディスケット、CD−ROM、ROM、もしくは固定ディスク)などの有形媒体上に固定されてよく、またはモデム、もしくは媒体上でネットワークに接続された通信アダプタなど、その他のインターフェースデバイスを経由して、コンピュータシステムに転送可能であってもよい。この媒体は、有形媒体(例えば、光通信線もしくはアナログ通信線)または無線技術(例えば、マイクロ波、赤外線伝送技術もしくはその他の伝送技術)を用いて実装された媒体であってよい。一連のコンピュータ命令は、このシステムに関して本明細書でこれまで説明された機能性のすべてまたは一部を実施する。
【0036】
当業者は、かかるコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するために、いくつかのプログラミング言語で書込み可能である点を理解されたい。さらに、かかる命令は、半導体、磁気メモリデバイス、光メモリデバイス、またはその他のメモリデバイスなど、任意のメモリデバイス内に格納可能であり、光伝送技術、赤外線伝送技術、マイクロ波伝送技術、またはその他の伝送技術など、任意の通信技術を使用して送信可能である。かかるコンピュータプログラム製品は、コンピュータシステムを用いて(例えば、システムROM上もしくは固定ディスク上に)事前にロードされた、印刷文書もしくは電子文書を伴う取出し可能媒体(例えば、シュリンクラップソフトウェア)として供給可能であるか、あるいはネットワーク上でサーバまたは電子掲示板(例えば、インターネットもしくはワールドワイドウェブ)から供給可能であることが予想される。
【0037】
図4は、分離によるバッチスケジューリングの一例を示す。例示されるように、それぞれが1つまたは複数の要求を含むことが可能な、スレッド要求の1つまたは複数のバッチを形成するための方法500を、ブロック501で開始することが可能である。方法500を開始した後で、次いで、ブロック502において、スレッドを、スレッドタイプ、例えば、第1のスレッドタイプおよび第2のスレッドタイプ、または第1のスレッドタイプ、第2のスレッドタイプ、および第3のスレッドタイプに分離(それらのスレッドタイプとして識別)することが可能である。ブロック504において、それぞれが、類似のまたは同じ1つもしくは複数のスレッドタイプの1つまたは複数のスレッドから発行された要求を含み得る、1つまたは複数のバッチを形成することが可能である。それぞれのバッチが1つまたは複数の要求を含むことができる状態で、1つまたは複数のバッチを形成した後で、次いで、ブロック506において、1つまたは複数のバッチをメモリコントローラによって実行することが可能である。1つもしくは複数のバッチは一度に1
つ実行可能であり、またはコンピュータシステムに能力がある場合、その1つもしくは複数のバッチは一度に2
つ以上実行可能である。
【0038】
スレッドの分離(識別)、したがって、異なるスレッドタイプからの要求のバッチ処理は、いくつかの異なる基準のうちのいずれかに基づいてよい。例えば、スレッドは以下に分離可能である。すなわち、(1)それらのスレッドが、並列メモリと共に使用するために、どのくらい良好に設計されているかに基づいて、良好な設計スレッドおよび不良な設計スレッド、(2)それらのスレッドがそれらのスレッドがその他のスレッドとどのくらい効果的に共働するかに基づいて、協調スレッドおよび非協調スレッド、(3)そのスレッドが発生したアプリケーションプログラムに基づいて、第1のアプリケーションスレッド、第2のアプリケーションスレッド、および第3のアプリケーションスレッド、(4)それらのスレッドが行う要求の相対数に基づいて、大規模要求スレッド、任意選択で、中規模要求スレッドおよび小規模要求スレッド、例えば、大規模要求スレッドは、平均数以上の要求を行うことが可能であり、小規模要求スレッドは、平均数未満のいくつかの要求を行うことが可能であること、である。多くのその他の改変形態が可能である。したがって、選択される基準に応じて、第1のスレッドタイプ、第2のスレッドタイプ、任意選択の第3のスレッドタイプ、任意選択の第4のスレッドタイプなどが存在し得る。
【0039】
図5は、結果として、2つのスレッドタイプをもたらし得る基準を使用した、分離によるバッチスケジューリングの一例であり、上述のように、選択される基準に応じて、3つ以上のスレッドタイプも可能であり得る。スレッド220
a〜220
nは、第1のスレッドタイプ250および第2のスレッドタイプ251に分離可能である。それぞれのスレッドタイプによって発行された要求、例えば、第1のスレッドタイプ250から発行された第1の要求260、および第2のスレッドタイプ251から発行された第2の要求261を、次いで、スレッド要求の1つまたは複数のバッチ232
a〜232
xに形成することが可能である。それぞれのバッチは、1つだけのスレッドタイプの要求を含むことが可能であり、例えば、例示されるように、第1のバッチ232
aは、第1の要求260を含むことが可能であり、最後のバッチ232
xは、第2の要求261を含むことが可能である。もう1つの例では、それぞれのバッチ232
a〜232
xは、第1のスレッドタイプ250からの第1の要求260を主に含むことが可能であるか、または第2のスレッドタイプ261からの第2の要求261を主に含むことが可能である。このように、形成されたバッチ232
a〜232
xは、それぞれのスレッドタイプからの要求に関して、均一であってよく、または主に均一であってもよい。1つもしくは複数のバッチは一度に1
つ実行可能であり、またはコンピュータシステムに能力がある場合、その1つもしくは複数のバッチは一度に2
つ以上実行可能である。本明細書で使用される場合、主にという用語は、約50%超、約80%超、約95%超であってよく、または約99%超であってもよい。
【0040】
1つまたは複数のバッチが形成されると、スケジューリングアルゴリズムは、
或る1つのバッチ内の要求のサービスをスケジューリングするために、バッチ内スケジューリングアルゴリズムまたはバッチ内並列処理認識スケジューリングアルゴリズムを用いるように構成可能である。FR−FCFSなど、任意のバッチ内スケジューリングアルゴリズムを使用することが可能である。
【0041】
バッチ内で、バッチ内並列処理認識スケジューリングアルゴリズムは、第1に行ヒット要求を優先順位付けするように構成可能である。第2に、より高いランクを有するスレッドからの要求をより低いランクを有するスレッドからの要求に勝って優先順位付けすることが可能である。最終的に、他に特別な条件がない限り、より古い要求をより新しい要求に勝って優先順位付けすることが可能である。
【0042】
バッチ内並列処理認識スケジューリングアルゴリズムは、バッチ内のランクベースのスレッド優先順位付け方式を使用するように構成可能である。新しいバッチが形成されるとき、メモリスケジューラは、新しいバッチ内に要求を有するすべてのスレッド間のランキングを計算するように構成可能である。新しいバッチが処理される間、計算されたランキングは同じ状態にとどまることが可能であり、より高くランク付けされたスレッドからの要求をより低くランク付けされたスレッドからの要求に勝って優先順位付けすることが可能である。
【0043】
任意のランキングベースの方式が使用可能であるが、特定のランキング手順は、CMPスループットおよび公平性に対してかなりの影響を有する場合がある。良好なランキング方式は、メモリ集約型スレッドとメモリ非集約型スレッド(および、高いバンク並列処理を伴うスレッド)とを効果的に区別することが可能である。いくつかの実装形態では、最短ジョブ優先原理に適合するランキング方式を用いることが可能であり、この方式は、非集約型スレッドを集約型スレッドより高くランキングできる。
【0044】
図6は、本開示の少なくともいくつかの実施形態に従って構成された方法、装置(システム)、およびコンピュータプログラム製品の流れ図を示す。
図6に例示されるように、メモリ要求スケジューリングに関する方法600を、ブロック601で開始することが可能である。方法600を開始した後で、ブロック602において、アプリケーションプログラムを使用して、スケジューリングアルゴリズムを選択することが可能である。例えば、それらの要求を発行した1つまたは複数のスレッドを発行したアプリケーションプログラムを使用して、スケジューリングアルゴリズムを選択することが可能である。選択されたスケジューリングアルゴリズムは、これまでに説明されたスケジューリングアルゴリズムなど、任意のスケジューリングアルゴリズムであってよい。このアプリケーションは、そのアプリケーションプログラムの作成の間に選択された基準に基づいて、同じスケジューリングアルゴリズムを選択することが可能であり、または異なるスケジューリングアルゴリズムを選択することも可能である。選択されたスケジューリングアルゴリズムは、コンピュータ可読媒体内で符号化されたスケジューリングアルゴリズムであってよく、オペレーティングシステムの一部、アプリケーションプログラムであってよく、または別個に提供されてもよい。例えば、スレッドを発行したアプリケーションプログラムは、そのアプリケーションプログラムを使用して選択可能な1つまたは複数のスケジューリングアルゴリズムを含むことが可能である。選択されると、次いで、ブロック604において、要求をスケジューリングするために選択されたスケジューリングアルゴリズムを使用するようにメモリコントローラに命令することが可能である。次いで、ブロック606において、その選択されたスケジューリングアルゴリズムに従って、メモリコントローラによって、それらの要求をサービスのためにスケジューリングすることが可能である。
【0045】
特許請求される主題は、範囲の点で、本明細書で説明される特定の実装形態に限定されない。例えば、いくつかの実装形態は、あるデバイス上またはデバイスの組合せ上で動作するために用いられるようなハードウェアの形であってよく、例えば、一方、その他の実装形態は、ソフトウェアおよび/またはファームウェアの形であってよい。同様に、特許請求される主題は、この点において範囲の点で限定されないが、いくつかの実装形態は、1つまたは複数の記憶媒体など、1つまたは複数の物品を含むことが可能である。CD−ROM、コンピュータディスク、フラッシュメモリなど、この記憶媒体は、例えば、コンピュータシステム、コンピューティングプラットフォーム、またはその他のシステムなど、システムによって実行されるとき、結果として、例えば、これまで説明された実装形態のうちの1つなど、特許請求される主題に従ってプロセッサの実行をもたらし得る命令を格納していることが可能である。1つの可能性として、コンピューティングプラットフォームは、1つもしくは複数の処理ユニットまたはプロセッサと、ディスプレイ、キーボードおよび/またはマウスなど、1つもしくは複数の入出力デバイスと、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、フラッシュメモリ、および/またはハードドライブなど、1つもしくは複数のメモリとを含むことが可能である。
【0046】
明細書における「ある実装形態」、「一実装形態」、「いくつかの実装形態」、または「その他の実装形態」の参照は、1つもしくは複数の実装形態に関して説明される特定の特徴、構造、または特性は少なくともいくつかの実装形態内に含まれ得るが、すべての実装形態内に含まれるとは限らないことを意味する場合がある。先の説明における「ある実装形態」、「一実装形態」、「いくつかの実装形態」の様々な出現は、すべて同じ実装形態を参照するとは限らない。さらに、「結合された」または「反応する」もしくは「に反応して」、あるいは「と通信している」などの用語または句が、本明細書または続く特許請求の範囲において使用される場合、これらの用語は広く解釈されるべきである。例えば、「に結合された」という句は、その句が使用される文脈に応じて適切に、通信可能に、電気的に、および/または動作可能に結合されていることを指す場合がある。
【0047】
先の説明において、特許請求される主題の様々な態様が説明されている。説明のために、特定の番号、システム、および/または構成は、特許請求される主題の十分な理解をもたらすために記載された。しかし、当業者および本開示の利益を有する者は、特許請求される主題は、それらの特定の詳細なしに実行可能である点を理解されたい。その他の事例では、特許請求される主題をあいまいにしないように、よく知られている特徴は省略および/または簡素化された。本明細書において、いくつかの特徴が例示および/または説明されているが、当業者は、ここでまたは今後、多くの修正形態、代替形態、変更形態、および/または均等物を思いつくであろう。したがって、添付の特許請求の範囲は、特許請求される主題の真の趣旨に該当するすべてのかかる修正形態および/または変更形態をカバーすることが意図されることを理解されたい。
【0048】
システムの態様のハードウェア実装形態とソフトウェア実装形態の間に差異はほとんどなく、ハードウェアの使用またはソフトウェアの使用は、一般に、費用対効果の兼ね合いを表す設計の選択である(しかし、ハードウェアとソフトウェアとの間の選択が重要になる可能性がある一定の状況では、常にそうであるとは限らない)。それによって本明細書で説明されるプロセス、および/もしくはシステム、ならびに/またはその他の技術が実現可能な様々な手段(例えば、ハードウェア、ソフトウェア、および/またはファームウェア)が存在し、好ましい手段は、それらのプロセス、および/もしくはシステム、ならびに/またはその他の技術が展開される状況によって異なることになる。例えば、実装者が、速度および精度が最重要であると決定した場合、その実装者は、ハードウェア手段および/またはファームウェア手段を主に選択することができ、柔軟性が最重要である場合、その実装者は、ソフトウェア実装形態を主に選択することができ、またはさらにこの場合も代替として、その実装者は、ハードウェア、ソフトウェア、および/またはファームウェアのいくつかの組合せを選択することができる。
【0049】
前述の詳細な説明は、ブロック図、流れ図、および/もしくは例の使用を介したデバイスならびに/またはプロセスの様々な実施形態を記載している。かかるブロック図、流れ図、ならびに/あるいは例が1つもしくは複数の機能および/または動作を含む限り、かかるブロック図、流れ図、もしくは例の中のそれぞれの機能および/または動作は、幅広い範囲のハードウェア、ソフトウェア、ファームウェア、または実質的にそれらの任意の組合せによって、個々におよび/もしくは集合的に実装可能である点を当業者は理解されよう。一実装形態では、本明細書で説明された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、またはその他の統合形式を介して実装可能である。しかし、当業者は、本明細書で開示された実施形態のうちのいくつかの態様は、全体としてまたは一部において、1つもしくは複数のコンピュータ上で実行している1つもしくは複数のコンピュータプログラム(例えば、1つもしくは複数のコンピュータシステム上で実行している1つもしくは複数プログラム)として、1つもしくは複数のプロセッサ上で実行している1つもしくは複数のプログラム(例えば、1つもしくは複数のマイクロプロセッサ上で実行している1つもしくは複数のプログラム)として、ファームウェアとして、または実質的にそれらの任意の組合せとして、集積回路内で等しく実行可能であり、回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアに関するコードの書込みは、本開示に照らして、十分当業者の能力範囲内にあることになる点を理解されよう。加えて、当業者は、本明細書で説明された主題の機構は、様々な形態のプログラム製品として供給されることが可能であり、本明細書で説明された主題の例示的な実施形態は、その供給を実際に実行するために使用される信号担持媒体の特定のタイプにかかわらず適用される点を理解されよう。信号担持媒体の例は、以下を含むが、これらに限定されない。すなわち、フロッピー(登録商標)ディスク、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、コンピュータメモリなど、記録可能なタイプの媒体、ならびにデジタル通信媒体および/またはアナログ通信媒体(例えば、光ファイバーケーブル、導波管、有線通信リンク、無線通信リンクなど)など、伝送タイプの媒体である。
【0050】
当業者は、本明細書に記載された形でデバイスおよび/またはプロセスを説明し、その後、かかる説明されたデバイスおよび/またはプロセスをデータ処理システムに統合するために技術的な手法を使用することは当技術分野において一般的である点を理解されよう。すなわち、十分な量の実験を介して、本明細書で説明されたデバイスおよび/またはプロセスの少なくとも一部をデータ処理システムに統合することが可能である。当業者は、典型的なデータ処理システムは、一般に、システムユニット筐体、ビデオディスプレイデバイス、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステム、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムなどの計算エンティティ、タッチパッドまたはスクリーンなどの1つもしくは複数の対話デバイス、ならびに/あるいはフィードバックループおよび制御モーター(例えば、位置および/または速度を感知するためのフィードバック、構成要素および/もしくは数量を移動ならびに/または調整するための制御モーター)を含む制御システムのうちの1つまたは複数を含む点を理解されよう。典型的なデータ処理システムは、一般に、データコンピューティングシステム/データ通信システムおよび/またはネットワークコンピューティングシステム/ネットワーク通信システムの内に見出される構成要素など、任意の適切な市販の構成要素を利用して実装可能である。
【0051】
本明細書で説明される主題は、時には、異なる他の構成要素内に含まれた異なる構成要素、または異なる他の構成要素に接続された異なる構成要素を例示する。そのような示されたアーキテクチャは単なる例示であり、実際には、同じ機能性を達成する、多くのその他のアーキテクチャが実装可能である点を理解されよう。概念的な意味で、同じ機能性を達成するための構成要素のいずれの構成も、所望される機能性が達成されるように、有効に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる、本明細書のいずれの2つの構成要素も、アーキテクチャまたは中間構成要素にかかわらず、所望される機能性が達成されるように互いに「関連付けられる」と見なすことができる。同様に、そのように関連付けられたいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に接続されている」または「動作可能に結合されている」と見なすこともでき、そのように関連付けられているいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に結合続可能である」と見なすこともできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な(mateable)構成要素および/もしくは物理的に相互作用する構成要素、ならびに/または無線で相互作用可能な構成要素および/もしくは無線で相互作用する構成要素、ならびに/または論理的に相互作用する構成要素および/もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
【0052】
本明細書における実質的に任意の複数用語および/または単数用語の使用に関して、当業者は、文脈および/もしくは応用例に応じて、複数から単数にかつ/または単数から複数に変換することが可能である。分かりやすくするために、本明細書において、様々な単数/複数の置換が明示的に記載される場合がある。
【0053】
概して、本明細書、および、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般に、「開放的な」用語として意図される(例えば、「含んでいる」という用語は、「含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも含む」と解釈されるべきであり、「含む」という用語は、「含むが、それに限定されない」と解釈されるべきである、など)ことを理解されよう。当業者は、特定の数の導入される請求項の列挙が意図される場合、かかる意図は、特許請求の範囲内で明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しない点をさらに理解されよう。例えば、理解の支援として、以下の特許請求の範囲は、請求項の列挙を導入するために、「少なくとも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」の可能性を含むと理解されることになる。