"コンピュータ装置により、マルチスレッドアプリケーションを識別することと、前記マルチスレッドアプリケーションの識別に基づいて、前記コンピュータ装置により、前記マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整することと、を備えるコンピュータ装置により実行される方法。前記マルチスレッドアプリケーションは、第1のグループに関連し、前記マルチスレッドアプリケーションを識別することには、前記第1のグループに関連する、前記マルチスレッドアプリケーションのスレッドを受け取ることが含まれ、第2のグループに関連する、シングルスレッドアプリケーションのスレッドを受け取ることをさらに備える請求項1に記載のコンピュータ装置により実行される方法。前記メモリスケジューリングスキームを調整することは、前記第1のグループ内及び前記第2のグループ内のアイドルスレッドの数を判定することと、前記第1のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記第1のグループの順位付けをすることと、前記第2のグループ内の判定された数のアイドルスレッドに基づいて、前記第2のグループの順位付けをすることと、前記第1のグループ又は前記第2のグループのうちの、より高く順位付けされた一方に関連するメモリ使用要求を、前記第1のグループ又は前記第2のグループのうちのより低く順位付けされた一方に関連するメモリ使用要求よりも優先することと、を備える、請求項2に記載のコンピュータ装置により実行される方法。前記アイドルスレッドの数を判定することは、ビットベクトル内の第1のビットを、前記第1のグループ内の第1のスレッドに関連付けることと、前記ビットベクトル内の第2のビットを、前記第1のグループ内の第2のスレッドに関連付けることと、前記ビットベクトル内の第3のビットを、前記第2のグループ内の前記スレッドに関連付けることと、期間の始まりに、前記ビットベクトル内の前記第1のビット、前記第2のビット、及び前記第3のビットを設定することと、前記第1のビット、前記第2のビット、又は前記第3のビットのうちのリセットされる1つ以上のビットに関連する1つ以上のスレッドに関して、1つ以上のメモリ使用要求が受け取られたとき、前記ビットベクトル内の前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上のビットをリセットすることと、前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットに基づいて、前記第1のグループ内及び前記第2のグループ内のアイドルスレッドの数を判定することと、を備える、請求項3に記載のコンピュータ装置により実行される方法。前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットに基づいて、前記第1のグループ及び前記第2のグループの順位付けをすることをさらに備える請求項4に記載のコンピュータ装置により実行される方法。前記メモリ使用要求を優先することは、前記メモリ使用要求に関連する、グループの順位に基づいて、前記メモリ使用要求の第1の優先権を判定することと、準備完了順規則に基づいて、前記メモリ使用要求の第2の優先権を判定することと、先着順規則に基づいて、前記メモリ使用要求の第3の優先権を判定することと、を備える、請求項3に記載のコンピュータ装置により実行される方法。装置のメモリ制御装置であって、処理論理回路を備え、前記処理論理回路が、グループに関連する、マルチスレッドアプリケーションのスレッドを受け取り、別のグループに関連する、シングルスレッドアプリケーションのスレッドを受け取り、前記グループ内及び前記別のグループ内のアイドルスレッドの数を判定し、前記グループ内の前記判定されたアイドルスレッドの数に基づいて、前記グループを順位付けし、前記別のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記別のグループを順位付けし、前記グループ又は前記別のグループのうちのより高く順位付けされた一方に関連するメモリ使用要求を、前記グループ又は前記別のグループのうちのより低く順位付けされた一方に関連するメモリ使用要求より優先させる、メモリ制御装置。前記アイドルスレッドの数を判定するとき、前記処理論理回路がさらに、ビットベクトル内の第1のビットを、前記グループ内の第1のスレッドに関連付け、前記ビットベクトル内の第2のビットを、前記グループ内の第2のスレッドに関連付け、前記ビットベクトル内の第3のビットを、前記別のグループ内の前記スレッドに関連付け、期間の始まりに、前記ビットベクトル内の前記第1のビット、前記第2のビット、及び前記第3のビットを、0より大きい値に設定し、前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上の前記リセットされるビットに関連する1つ以上のスレッドに関して、1つ以上のメモリ使用要求が受け取られるとき、前記ビットベクトル内の前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上のビットを、0の値にリセットし、前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットの値に基づいて、前記グループ内及び前記別のグループ内の前記アイドルスレッドの数を判定する、請求項7に記載のメモリ制御装置。前記処理論理回路がさらに、前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットの値に基づいて、前記グループ及び前記別のグループの順位付けをする、請求項8に記載のメモリ制御装置。前記メモリ使用要求を優先するとき、前記処理論理回路がさらに、前記メモリ使用要求に関連する、グループの順位に基づいて、前記メモリ使用要求の第1の優先権を判定し、準備完了順規則に基づいて、前記メモリ使用要求の第2の優先権を判定し、先着順規則に基づいて、前記メモリ使用要求の第3の優先権を判定する、請求項7に記載のメモリ制御装置。マルチスレッドアプリケーションを識別し、前記マルチスレッドアプリケーションの識別に基づいて、前記マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整するメモリ制御装置を備える装置。前記メモリ制御装置が、コア毎のグループ識別レジスタを含み、前記コア毎のグループ識別レジスタが、第1のグループに関連する、前記マルチスレッドアプリケーションのスレッドを受け取り、第2のグループに関連する、シングルスレッドアプリケーションのスレッドを受け取る、請求項11に記載の装置。前記メモリ制御装置が、前記第1のグループ内及び前記第2のグループ内のアイドルスレッドの数を判定するアイドルスレッド検知器をさらに含む、請求項12に記載の装置。前記アイドルスレッド検知器がさらに、ビットベクトル内の第1のビットを、前記第1のグループ内の第1のスレッドに関連付け、前記ビットベクトル内の第2のビットを、前記第1のグループ内の第2のスレッドに関連付け、前記ビットベクトル内の第3のビットを、前記第2のグループ内の前記スレッドに関連付け、期間の始まりに、前記ビットベクトル内の前記第1のビット、前記第2のビット、及び前記第3のビットを、0より大きい値に設定し、前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上の前記リセットされるビットに関連する1つ以上のスレッドに関して、1つ以上のメモリ使用要求が受け取られたとき、前記ビットベクトル内の前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上のビットを、0の値にリセットし、前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットの値に基づいて、前記第1のグループ内及び前記第2のグループ内の前記アイドルスレッドの数を判定する、請求項13に記載の装置。前記メモリ制御装置が、に従ってグループgを順位付けるグループランカをさらに含み、Rankgは、前記グループgの順位に対応し、Mは、前記グループgに属するスレッドの総数に対応し、mは、前記グループgに用いられるコアプロセッサに対応し、ICは、前記グループgに占有されるアイドルコアプロセッサの数に対応し、CoreIDmは、前記グループgに使用されるm番目のコアプロセッサの識別に対応する、請求項13に記載の装置。前記メモリ制御装置が、グループランカをさらに含み、前記グループランカが、前記第1のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記第1のグループを順位付けし、前記第2のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記第2のグループを順位付けする、請求項13に記載の装置。前記メモリ制御装置が、前記第1のグループ又は前記第2のグループのうちのより高く順位付けされた一方に関連するメモリ使用要求を、前記第1のグループ又は前記第2のグループのうちのより低く順位付けされた一方に関連するメモリ使用要求よりも優先させるメモリスケジューラをさらに含む、請求項16に記載の装置。前記メモリスケジューラがさらに、前記メモリ使用要求に関連する、グループの順位に基づいて、前記メモリ使用要求の第1の優先権を判定し、準備完了順規則に基づいて、前記メモリ使用要求の第2の優先権を判定し、先着順規則に基づいて、前記メモリ使用要求の第3の優先権を判定する、請求項17に記載の装置。マルチコアプロセッサ及びマルチスレッドアプリケーションを使用するコンピュータ装置又は通信装置を含む、請求項11に記載の装置。1つ以上のコンピュータにより実行可能な命令を格納するコンピュータ可読メモリ装置であって、複数の別のアプリケーションから、マルチスレッドアプリケーションを識別するための1つ以上の命令と、前記マルチスレッドアプリケーションの識別に基づいて、前記マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整するための1つ以上の命令と、を備えるコンピュータ可読メモリ装置。プロセッシングユニットのメモリ制御装置内に設けられる請求項20に記載のコンピュータ可読メモリ装置。前記マルチスレッドアプリケーションを識別するための1つ以上の命令が、前記マルチスレッドアプリケーションのスレッドを受け取るための1つ以上の命令を含み、前記マルチスレッドアプリケーションは、第1のグループに関連し、前記コンピュータ可読メモリ装置が、第2のグループに関連する、シングルスレッドアプリケーションのスレッドを受け取るための1つ以上の命令をさらに備える、請求項20に記載のコンピュータ可読メモリ装置。前記メモリスケジューリングスキームを調整するための1つ以上の命令が、前記第1のグループ内及び前記第2のグループ内のアイドルスレッドの数を判定するための1つ以上の命令と、前記第1のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記第1のグループを順位付けするための1つ以上の命令と、前記第2のグループ内の前記判定されたアイドルスレッドの数に基づいて、前記第2のグループを順位付けするための1つ以上の命令と、前記第1のグループ又は前記第2のグループのうちの、より高く順位付けされた一方に関連するメモリ使用要求を、前記第1のグループ又は前記第2のグループのうちのより低く順位付けされた一方に関連するメモリ使用要求よりも優先させるための1つ以上の命令と、を含む、請求項22に記載のコンピュータ可読メモリ装置。前記アイドルスレッドの数を判定するための1つ以上の命令が、ビットベクトル内の第1のビットを、前記第1のグループ内の第1のスレッドに関連付けるための1つ以上の命令と、前記ビットベクトル内の第2のビットを、前記第1のグループ内の第2のスレッドに関連付けるための1つ以上の命令と、前記ビットベクトル内の第3のビットを、前記第2のグループ内の前記スレッドに関連付けるための1つ以上の命令と、期間の始まりに、前記ビットベクトル内の前記第1のビット、前記第2のビット、及び前記第3のビットを、0より大きい値に設定するための1つ以上の命令と、前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上の、前記リセットされるビットに関連する、1つ以上のスレッドに関して、1つ以上のメモリ使用要求が受け取られたとき、前記ビットベクトル内の前記第1のビット、前記第2のビット、又は前記第3のビットのうちの1つ以上のビットを、0の値にリセットするための1つ以上の命令と、前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットに基づいて、前記第1のグループ内及び前記第2のグループ内の前記アイドルスレッドの数を判定するための1つ以上の命令と、を含む、請求項23に記載のコンピュータ可読メモリ装置。前記期間は、約1,000クロックサイクルとほぼ同じである、請求項24に記載のコンピュータ可読メモリ装置。前記期間の終わりに、前記ビットベクトル内に残る、前記設定されたビットに基づいて、前記第1のグループ及び前記第2のグループを順位付けするための1つ以上の命令をさらに備える、請求項24に記載のコンピュータ可読メモリ装置。前記メモリ使用要求を優先させるための1つ以上の命令が、前記メモリ使用要求に関連する、グループの順位に基づいて、第1のメモリ使用要求の優先権を判定するための1つ以上の命令と、前記第1の優先権を判定した後、準備完了順規則に基づいて、第2のメモリ使用要求の優先権を判定するための1つ以上の命令と、前記第2の優先権を判定した後、先着順規則に基づいて、第3のメモリ使用要求の優先権を判定するための1つ以上の命令と、を含む、請求項23に記載のコンピュータ可読メモリ装置。ある実施形態による、コンピュータ装置により実行される方法は、コンピュータ装置により、マルチスレッドアプリケーションを識別することと、コンピュータ装置により、マルチスレッドアプリケーションの識別に基づいて、マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整することと、を含み得る。ある様態によると、マルチスレッドアプリケーションは、第1のグループに関連し得、マルチスレッドアプリケーションを識別することは、第1のグループに関連するマルチスレッドアプリケーションのスレッドを受け取ることを含み、この方法は、第2のグループに関連するシングルスレッドアプリケーションのスレッドを受け取ることをさらに含み得る。別の様態によると、メモリスケジューリングスキームを調整することには、第1のグループ内及び第2のグループ内のアイドルスレッドの数を判定することと、第1のグループ内の判定されたアイドルスレッドの数に基づいて、第1のグループを順位付けすることと、第2のグループ内の判定された数のアイドルスレッドに基づいて、第2のグループを順位付けすることと、第1のグループ又は第2のグループのうちのより高く順位付けされた一方に関連するメモリ使用要求を、第1のグループ又は第2のグループのうちのより低く順位付けされた一方に関連するメモリ使用要求より優先させることと、が含まれ得る。別の実施形態によると、装置のメモリ制御装置は、グループに関連するマルチスレッドアプリケーションのスレッド、及び別のグループに関連するシングルスレッドアプリケーションのスレッドを受け取るための処理論理回路を含み得る。この処理論理回路は、グループ内及び別のグループ内のアイドルスレッドの数を判定し、グループ内の判定されたアイドルスレッドの数に基づいて、グループを順位付けし、別のグループ内の判定されたアイドルスレッドの数に基づいて、別のグループを順位付けすることが出来る。処理論理回路は、さらにグループ又は別のグループのうちのより高く順位付けされた一方のグループに関連するメモリ使用要求をグループ又は別のグループのうちのより低く順位付けされた一方のグループに関連するメモリ使用要求より優先させることが出来る。さらに別の実施形態によると、装置は、マルチスレッドアプリケーションを識別し、このマルチスレッドアプリケーションの識別に基づいて、マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整するためのメモリ制御装置を含み得る。追加的な実施形態によると、コンピュータ可読メモリ装置は、1つ以上のコンピュータにより実行可能な命令を格納することが出来、マルチスレッドアプリケーションを別のアプリケーションのグループから識別するための1つ以上の命令と、このマルチスレッドアプリケーションの識別に基づいて、マルチスレッドアプリケーションに関するメモリスケジューリングスキームを調整するための1つ以上の命令と、を含み得る。本明細書に組み込まれ、その一部を構成する添付図面は、本明細書に記載の1つ以上の実施形態を示し、本明細書と共に、これらの実施形態を説明するものである。以下に図面を説明する。以下に添付図面を参照して詳細に説明する。異なる図面内の同一の参照符号は、同一の要素又は類似の要素を識別し得る。また、以下の詳細な説明が本発明を制限することはない。概要本明細書に記載するシステム及び/又は方法により、装置例えば、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ装置、手持ち装置又は携帯装置、及び/又はその他の種類のコンピュータ装置又は通信装置等のマルチコアプロセッサを有する装置のメモリ制御装置は、1つ以上のマルチスレッドアプリケーションを識別し、マルチスレッドアプリケーション複数可の識別に基づいて、マルチスレッドアプリケーション複数可に関するメモリスケジューリングスキームを調整する、又は最適化することが出来る。このようなシステム及び/又は方法により、非効率的なメモリスケジューリングによるパフォーマンス低下例えば、装置内のを防ぐことが出来る。ある実施形態では、メモリ制御装置は、第1のグループに関連するマルチスレッドアプリケーションのスレッド、及び第2のグループに関連するシングルスレッドアプリケーションのスレッドを受け取ることが出来る。メモリ制御装置は、第1のグループ内及び第2のグループ内のアイドルスレッドの数を判定し、アイドルスレッドの数に基づいて第1のグループ及び第2のグループを順位付けし、高い順位のグループからのメモリ使用要求を、低い順位のグループからのメモリ使用要求よりも優先させることが出来る。本明細書で使用される用語スレッドとは、アプリケーションが一連の動作又は多数の動作を一度に実行出来るようにする、コンピュータプログラム又は、アプリケーションの部分例えば、タスクを含むと、広く解釈されることを意図される。アプリケーションにより命令を受けたとき、各アプリケーション内のスレッドは、その命令を実行する処理を識別することが出来る。本明細で使用される用語構成要素及び装置とは、ハードウェア例えば、プロセッサ、マイクロプロセッサ、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、チップ、メモリ装置例えば、リードオンリーメモリROM、ランダムアクセスメモリRAM、等等又はハードウェア及びソフトウェアの組合せ例えば、メモリ装置内に含まれるソフトウェアを実行するプロセッサ、マイクロプロセッサ、ASIC等を含むと、広く解釈されることを意図される。メモリスケジューリング機構の例図1は、パフォーマンス低下を招いているメモリスケジューリング機構100の例を示す説明図である。図示する通り、シングルスレッドアプリケーション例えば、APP_Aは、マルチコアプロセッサの第1のメモリバンク例えば、BANK1及び第1のコア例えば、CORE_lに関連する、2つのメモリ使用要求を含み得る。マルチスレッドアプリケーション例えば、APP_Bは、2つのスレッド例えば、スレッドAPP_B1及びスレッドAPP_B2と、同期のためのバリアと、を含み得る。ある例では、同期のためのバリアは、マルチコアプロセッサに命令して、バリアの前後に供給されるメモリ使用要求に対する順位制限を実行することが出来る。スレッドAPP_B1は、マルチコアプロセッサの第2のコア例えば、CORE_2に関連することが出来、バリアの後に供給される2つのメモリ使用要求と、バリアの前に供給され、第1のメモリバンクBANK1に関連する3つのメモリ使用要求と、を含み得る。スレッドAPP_B2は、マルチコアプロセッサの第3のコア例えば、CORE_3に関連することが出来、バリアの後に供給される2つのメモリ使用要求を含み得る。マルチスレッドアプリケーションAPP_Bは、スレッドAPP_B1を、第1のメモリバンクBANK1にアクセスさせ、スレッドAPP_B2を、第2のメモリバンクBANK2にアクセスすることにより、バンクレベルの並列処理を利用するよう設計され得る。バリアの周りに想定される例えば、実行時間中に完全な負荷均衡を保つことが困難であり得るために起こり得る負荷の不均衡により、スレッドAPP_B2は、スレッドAPP_B1より先にバリアに到達することが出来る。この負荷の不均衡により、スレッドAPP_B2に関連するメモリ使用要求の第2のメモリバンクBANK2へのアクセスを妨げ得、これにより、第3のコアCORE_3がアイドル状態になり得る。スレッドAPP_B1に関連する3つのメモリ使用要求例えば、バリアの下に供給されるが処理されるまで、第3のコアCORE_3は、アイドル状態を維持し得る。従って、例えば、第3のコアCORE_3は、3周期の間アイドル状態を維持するように、スレッドAPP_B1に関連する例えば、バリアの下に供給される3つのメモリ使用要求は、シングルスレッドアプリケーションAPP_Aに関連するメモリ使用要求に対して優先権を与えられるべきある。しかし、現状のメモリスケジューリングスキームは、マルチスレッドアプリケーションを意識しないで、メモリ使用要求をスケジューリングして、マルチスレッドアプリケーションのスレッドを加速しようと試み、これにより、ある意味では同じマルチスレッドアプリケーションの別のスレッドの進行を妨げてしまう。例えば、スレッドAPP_B1は、バリアにより、スレッドAPP_B2の進行を防ぐ。FRFCFSのメモリスケジューリングスキームを機構100内で用いた場合、シングルスレッドアプリケーションAPP_Aが、スレッドAPP_B1より高い行バッファのヒット率を有するため、FRFCFSスキームは、パフォーマンス低下を起こしてしま恐れがある。FRFCFSスキームでは、行バッファにヒットするメモリ使用要求を優先させることが出来る。その結果、シングルスレッドアプリケーションAPP_Aのメモリ使用要求は、第1のメモリバンクBANK1と同じ行例えば、ROW1に関連し、スレッドAPP_B1のメモリ使用要求は、第1のメモリバンクBANK1と異なる行例えば、ROW2~4と関連するため、シングルスレッドアプリケーションAPP_Aのメモリ使用要求をスレッドAPP_B1のメモリ使用要求よりも優先させることが出来る。これにより、第3のコアCORE_3のアイドル時間が3周期から5周期まで延び、バリアの内側での第3のコアCORE_3によるマルチスレッドアプリケーションAPP_Bの実行が妨げられてしまう可能性がある。PAR-BSメモリスケジューリングスキームを機構100内で用いた場合、PAR-BSスキームは、最短ジョブ優先SJFポリシーにより、メモリ使用要求の待ち行列の中のもっとも少ない数のメモリ使用要求を有するスレッドのメモリ使用要求を優先させることが出来る。その結果、シングルスレッドアプリケーションAPP_Aのメモリ使用要求の数は2で、スレッドAPP_Blのメモリ使用要求の数は3のため、シングルスレッドアプリケーションAPP_Aのメモリ使用要求が、スレッドAPP_B1のメモリ使用要求より優先され得る。これにより、第3のコアCORE_3のアイドル時間を、3周期から5周期まで延ばし、バリアの内側での第3のコアCORE_3によるマルチスレッドアプリケーションAPP_Bの実行が妨げられる可能性がある。FRFCFS及びPAR-BSのメモリスケジューリングスキーム、並びにその他のメモリスケジューリングスキームは、マルチスレッドアプリケーションを意識することなく、パフォーマンス低下を引き起こし、調整されたスレッドスケジューリングに対するオペレーティングシステムの努力を無駄にしてしまう。これとは対照的に、本明細書に記載するシステム及び/又は方法により、装置のメモリ制御装置は、1つ以上のマルチスレッドアプリケーションを識別し、マルチスレッドアプリケーション複数可の識別に基づいて、マルチスレッドアプリケーション複数可に関するメモリスケジューリングスキームを最適化することが出来る。例えば、本明細書に記載するシステム及び/又は方法は、単に単一のスレッドに利益をもたらすメモリ使用要求よりむしろ、スレッドのグループに利益をもたらすメモリ使用要求を優先させることが出来る例えば、スレッドAPP_B1の要求を実行することにより、スレッドAPP_B1及びスレッドAPP_B2の両方の利益になる。装置の構成例図2は、本明細書に記載の実施形態による、マルチスレッドアプリケーションアウェアメモリスケジューリングスキームを実行可能な装置200の構成要素の例を示す説明図である。装置200は、マルチコアプロセッサ及び/又はマルチスレッドアプリケーションを用いるあらゆるコンピュータ又は通信装置を含み得る。例えば、装置200は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ装置、無線電話、パーソナル通信システムPCS端末、パーソナルデジタルアシスタントPDA、携帯電話、スマートフォン、及び/又は、その他の種類のコンピュータ又は通信装置を含み得る。図2に示す通り、装置200は、バス210、プロセッシングユニット220、メインメモリ230、ROM240、記憶装置250、入力装置260、出力装置270、及び/又は通信インターフェース280を含み得る。バス210は、装置200の構成要素間の通信を可能にする経路を含み得る。プロセッシングユニット220は、1つ以上のプロセッサ例えば、マルチコアプロセッサ、マイクロプロセッサ、又は命令を理解し実行可能なその他の種類のプロセッシングユニットを含み得る。ある実施形態では、プロセッシングユニット220は、マルチプルコアを含む単一のプロセッサを含み得る。メインメモリ230は、プロセッシングユニット220により実行される情報及び命令を格納可能な、RAM、ダイナミックRAMDRAM、及び/又は別の種類の動的記憶装置を含み得る。ROM240は、プロセッシングユニット220により使用される静的情報及び/又は命令を格納可能なROM装置又は別の種類の静的記憶装置を含み得る。記憶装置250は、磁気記録媒体及び/又は光記録媒体及びそれらに対応するドライブを含み得る。入力装置260には、キーボード、マウス、ペン、マイクロフォン、音声認識機構及び/又は生体測定機構、タッチスクリーン等の、操作者が情報を装置200に入力することが出来る機構が含まれ得る。出力装置270には、ディスプレイ、プリンタ、スピーカ等を含む、情報を操作者に出力する機構が含まれ得る。通信インターフェース280には、装置200と、他の装置及び/又はシステムとの間の通信を可能にするあらゆる送受信機型機構が含まれ得る。例えば、通信インターフェース280には、別の装置又はシステムとネットワークを介して通信するための機構が含まれ得る。本明細書に記載される装置200は、プロセッシングユニット220が、メインメモリ230等のコンピュータ可読媒体内に含まれるソフトウェア命令を実行するのに応じて、いくらかの動作を実行可能である。コンピュータ可読媒体は、物理メモリ装置、又は論理メモリ装置として定義され得る。論理メモリ装置は、単一の物理メモリ装置内に又は複数の物理メモリ装置に渡って分散してメモリ空間を含み得る。記憶装置250等の別のコンピュータ可読媒体、又は別の装置から通信インターフェース280を介して、ソフトウェア命令をメインメモリ230に読み込むことが出来る。メインメモリ230内に含まれるソフトウェア命令により、プロセッシングユニット220は、本明細書に記載する処理を行う。あるいは、ソフトウェア命令の代わりに、又はソフトウェア命令と組合せて、配線回路を使用して、本明細書に記載する処理を実行することも可能である。従って、本明細書に記載の実施形態は、あらゆる特別な組合せハードウェア回路及びソフトウェアには限定されない。図2には装置200の構成要素の例が示されているが、他の実施形態では、装置200は、より少ない構成要素、異なる構成要素、異なって配列される構成要素、又は図2に示される以外の付加的な構成要素を含み得る。あるいは、又はそれに加えて、1つ以上の装置200の構成要素は、別の装置200の1つ以上の構成要素により実行可能とされる、1つ以上の他のタスクを実行することが出来る。図3は、装置200のプロセッシングユニット220及びメインメモリ230の構成要素の例を示す説明図である。ある実施形態では、図3に示される構成要素は、メモリスケジューリング機構300を形成し得る。図示する通り、プロセッシングユニット220は、マルチプルコア310-1、310-2、310-3等集合的に本明細書ではコア310と呼ぶ、及びメモリ制御装置320を含み得る。メインメモリ230は、マルチプルメモリバンク330-1、330-2等集合的に本明細書ではメモリバンク330と呼ぶを含み得る。コア310は単一の集積回路ダイ例えば、チップマルチプロセッサCMP上に組み込まれ得る又は単一のチップパッケージ内のマルチプルダイ上に組み込まれ得る。各コア310は、プロセッサ、マイクロプロセッサ、又は命令を理解し実行可能なその他の種類のプロセッシングユニットを含み得る。本明細書に記載する動作を実行するために、メモリ制御装置320は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、命令を理解し実行可能なその他の種類の処理論理回路例えば、メモリ制御装置320のコンピュータ可読媒体に含まれるを含み得る。ある実施形態では、メモリ制御装置320は、メインメモリ230に行き来するデータの流れを管理するデジタル回路を含み得る。メモリ制御装置320は、独立したチップでよい、又は、プロセッシングユニット220のダイ等の別のチップに組み込むことも可能である。メモリ制御装置320は、メインメモリ230を通して電流を送ることで、メインメモリ230からの読出し、及びメインメモリ230への書込みを行うための、及びメインメモリ230の再書込みを行うための、論理回路を含み得る。メインメモリ230からの読出し、メインメモリ230への書込みは、マルチプレクサ及びデマルチプレクサを用いることにより、容易になり得る。メモリ制御装置320は、メインメモリ230の正確な行と列のアドレスを、マルチプレクサへの入力として選択することが出来る。デマルチプレクサは、メインメモリ230の正確な記憶場所を選択することが出来、その記憶場所に関連するデータを戻すことが出来る。別の実施形態では、メモリ制御装置320は、プロセッシングユニット220の機能要素でよい。各メモリバンク330は、メインメモリ230内に格納されるデータの個々のセクションを含み得る。ある例では、各メモリバンク330は、一時的に格納され、メモリキャッシュとして使用されるデータを含み得る。メモリバンク330は、連続して命令を受けることが出来、これにより、メインメモリ230内に格納された個々の項目への簡単なアクセスを提供することが出来る。各メモリバンク330は、別々に移動する情報を処理出来るよう設計され得るメインメモリ230の物理セクションを含み得る。さらに図3に示す通り、メモリ制御装置320は、シングルスレッドアプリケーションAPP_A340と、2つのスレッド例えば、スレッドAPP_B1350-1及びスレッドAPP_B2350-2を含むマルチスレッドアプリケーションAPP_B350、に関するメモリスケジューリングスキームを設けることが出来る。シングルスレッドアプリケーション340は、コア310-1により実行され得、メモリバンク330-1に関連し得る。スレッド350-1は、コア310-2により実行され得、メモリバンク330-1に関連し得る。スレッド350-2は、コア310-3により実行され得、メモリバンク330-2に関連し得る。従って、図3に示されるメモリスケジューリング機構300は、図1に示したメモリスケジューリング機構100と類似し得る。しかし、従来のメモリスケジューリングスキーム例えば上記に、図1に関連して記載とは異なり、マルチスレッドアプリケーションがアイドルスレッドを含む場合、メモリ制御装置320は、マルチスレッドアプリケーション例えば、マルチスレッドアプリケーション350のスレッド例えば、スレッド350-1及びスレッド350-2を優先させる、費用効率の良いメモリスケジューリングスキームを設け得る。説明のため、マルチスレッドアプリケーション350が、アイドルスレッド例えば、スレッド350-2はアイドルでよいを含むと仮定する。スレッドは、いくつかの理由でアイドルになり得る。例えば、上記に図1に関連して記載する通り、バリアでの負荷の不均衡により、それ以前にバリアに到達したスレッドがアイドルになる。別の例では、ロックにより保護される重要セクションに、マルチスレッドアプリケーションのスレッドのうちの1つだけが入ることが出来、その他のマルチスレッドアプリケーション等のスレッドはその重要なセクションに入るために待機しアイドルとなる。さらに別の例では、マルチスレッドアプリケーションの単一のスレッドにより、マルチスレッドアプリケーションのアルゴリズムにより並べられる領域を実行することが出来き、これにより、マルチスレッドアプリケーションの、その他のスレッドがアイドルとなる。アイドルスレッドを有するマルチスレッドアプリケーションのスレッドを優先することで、メモリ制御装置320は、アイドルスレッドが非効率的な実行段階を速やかに終了するのを助け、マルチスレッドアプリケーションを、全てのスレッドが完全に並列で実行される、実行段階に戻すことが出来る。ある実施形態では、メモリ制御装置320は、例えば、オペレーティングシステムにより第1のグループに関連するマルチスレッドアプリケーション350のスレッド350-1及び350-2と、例えば、オペレーティングシステムにより第2のグループに関連するシングルスレッドアプリケーション340のスレッドと、を受け取り得る。メモリ制御装置320は、第1のグループ内及び第2のグループ内のアイドルスレッド例えば、スレッド350-2の数を判定し、アイドルスレッドの数に基づいて、第1のグループ及び第2のグループを順位付けすることが出来る。例えば、第1のグループは、アイドルスレッド例えば、スレッド350-2を含み得、第2のグループは、アイドルスレッドを含み得ないため、メモリ制御装置320は、第1のグループを、第2のグループより高く順位付けることが出来る。メモリ制御装置320は、高い順位のグループからのメモリ使用要求を、低い順位のグループからのメモリ使用要求よりも優先させることが出来る。例えば、メモリ制御装置320は、第1のグループからの例えば、スレッド350-2からのメモリ使用要求を、第2のグループからの例えば、シングルスレッドアプリケーション340からのメモリ使用要求よりも優先させることが出来る。図3には、プロセッシングユニット220及びメインメモリ230の構成要素の例が示されているが、他の実施形態では、プロセッシングユニット220及び/又はメインメモリ230がより少ない構成要素、異なる構成要素、異なって配列される構成要素、又は図3に示される以外の付加的な構成要素を含み得る。あるいは、又はそれに加えて、1つ以上のプロセッシングユニット220及び/又はメインメモリ230の構成要素は、別のプロセッシングユニット220及び/又はメインメモリ230の1つ以上の構成要素により実行可能とされる、1つ以上の他のタスクを実行することが出来る。メモリ制御装置の構成例図4は、メモリ制御装置320の機能要素の例を示す説明図である。ある実施形態では、図4に関連して記載された機能要素は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、又はメモリ制御装置320内に含まれる、その他の種類の処理論理回路により実行され得る。図4に示す通り、メモリ制御装置320は、スレッドグループ受取器400、アイドルスレッド検知器410、グループランカ420、メモリスケジューラ430を含み得る。スレッドグループ受取器400は、1つ以上のアプリケーションに関連する1つ以上のスレッド440を受け取り、例えば、装置200のオペレーティングシステムにより規定される第1のスレッドグループに関するスレッドグループ情報450-1及び例えば、装置200のオペレーティングシステムにより規定される第2のスレッドグループに関するスレッドグループ情報450-2を、スレッド440に関して生成し得る、ハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。例えば、スレッドグループ受取器400は、シングルスレッドアプリケーションのスレッドに関するスレッドグループ情報450-1、及びマルチスレッドアプリケーションのスレッドに関するスレッドグループ情報450-2を生成し得る。図4に示す通り、スレッドグループ受取器400は、例えば、第1の規定されたスレッドグループに関するスレッドグループ情報450-1と、例えば、第2の規定されたスレッドグループに関するスレッドグループ情報450-2と、をアイドルスレッド検知器410及びグループランカ420に供給し得る。スレッドグループ受取器400を、例えば、図5に関連して、以下にさらに詳細に説明する。アイドルスレッド検知器410は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2と、スレッド440に関連する1つ以上のメモリ使用要求460と、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。スレッドグループ情報450-1/450-2及びメモリ使用要求460に基づいて、アイドルスレッド検知器410は、スレッド440のうちのどれがアイドルなのか判定し、参照符号470で示す通り、判定されたアイドルスレッドをグループランカ420に供給することが出来る。アイドルスレッド検知器410を、例えば、図6に関連して、以下にさらに詳細に説明する。グループランカ420は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2と、アイドルスレッド検知器410からのアイドルスレッド470と、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。各スレッドグループ内のアイドルスレッド470の数に基づいて、グループランカ420は、例えば、スレッドグループ情報450-1及び450-2により規定されたスレッドグループ内のスレッドを順位付けすることが出来る。参照符号480で示す通り、グループランカ420は、スレッドグループの順位をメモリスケジューラ430に供給することが出来る。グループランカ420を、例えば、図7に関連して、以下にさらに詳細に説明する。メモリスケジューラ430は、グループランカ420からのスレッドグループの順位480と、スレッド440に関連する1つ以上のメモリ使用要求460と、を受け取ることが出来る、ハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。参照符号490で示す通り、スレッドグループの順位480に基づいて、メモリスケジューラ430は、メモリ使用要求460を優先させ、この優先されたメモリ使用要求490を、装置200内で実行することが出来る。メモリスケジューラ430を、例えば、図8に関連して、以下にさらに詳細に説明する。図4にはメモリ制御装置320の機能要素の例が示されているが、他の実施形態では、メモリ制御装置320は、より少ない機能要素、異なる機能要素、異なって配列される機能要素、又は図4に示される以外の付加的な機能要素を含み得る。あるいは、又はそれに加えて、1つ以上のメモリ制御装置320の機能要素は、メモリ制御装置320の1つ以上の別の機能要素により実行可能とされる、1つ以上の他のタスクを実行することが出来る。図5は、メモリ制御装置320のスレッドグループ受取器400の機能要素の例を示す説明図である。ある実施形態では、図5に関連して記載された機能要素は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、又はメモリ制御装置320内に含まれるその他の種類の処理論理回路により、実行され得る。図5に示す通り、スレッドグループ受取器400は、コア毎のグループ識別IDレジスタ500を含み得る。コア毎のグループIDレジスタ500は、例えば、装置200のオペレーティングシステムからのスレッド情報510及びグループID情報520を受け取ることが出来る、ハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。ある例では、同じアプリケーションのスレッドを同時に実行するとき、オペレーティングシステムが、例えば、調整されたスレッドスケジューリングに関してスレッド情報510を生成することが出来る。グループID情報520は、各コア上例えば、各コア310で実行されるスレッドのグループIDを含み得る。オペレーティングシステムが、特定のスレッドをコア上例えば、コア310のうちの1つでスケジューリングするとき、オペレーティングシステムは、特定のスレッドのグループID例えば、グループID情報520を有するコア毎のグループIDレジスタ500更新することが出来る。ある例示的な実施形態では、メインスレッドがシングルスレッドアプリケーションであるかのように、オペレーティングシステムにより、マルチスレッドアプリケーションのメインスレッドを実行可能である。オペレーティングシステムは、グループ識別IDをメインスレッドに割り当てることが出来る。メインスレッドがより多くのスレッドを生成するとき、オペレーティングシステムは、このグループID例えば、グループID情報520を、生成されたスレッドに割り当てることが出来る。マルチスレッドアプリケーションのスレッドのうちの1つをスケジューリングして、特定のコア例えば、コア310のうちの1つ上で実行するとき、コア毎のグループIDレジスタ500は、そのスレッドを設定して、グループIDに対して実行可能である。さらに図5に示す通り、スレッド情報510及びグループID情報520に基づいて、コア毎のグループIDレジスタ500は、スレッドグループ情報450-1及びスレッドグループ情報450-2を生成することが出来る。図5にはスレッドグループ受取器400の機能要素の例が示されているが、他の実施形態では、スレッドグループ受取器400は、より少ない機能要素、異なる機能要素、異なって配列される機能要素、又は図5に示される以外の付加的な機能要素を含み得る。あるいは、又はそれに加えて、スレッドグループ受取器400の1つ以上の機能要素は、スレッドグループ受取器400の1つ以上の別の機能要素により実行可能とされる、1つ以上の他のタスクを実行することが出来る。図6は、メモリ制御装置320のアイドルスレッド検知器410の機能要素の例を示す説明図である。ある実施形態では、図6に関連して記載された機能要素は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、又はメモリ制御装置320内に含まれるその他の種類の処理論理回路により実行することが出来る。図6に示す通り、アイドルスレッド検知器410は、1つ以上のビット610-1、610-4集合的に本明細書ではビット610と呼ぶを含み得る休止コアinactivecoreのビットベクトル600を含み得る。休止コアのビットベクトル600は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2と、メモリ使用要求460と、期間620と、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。スレッドグループ情報450-1及び450-2に基づいて、休止コアのビットベクトル600は各ビット610を、スレッド440のうちの1つ、及びその対応するコア例えば、コア310のうちの1つに関連付けることが出来る。例えば、休止コアのビットのベクトル600は、ビット610-1をシングルスレッドアプリケーションのスレッドに関連付けることが出来、ビット610-2をマルチスレッドアプリケーションの第1のスレッドに関連付けることが出来、ビット610-3をマルチスレッドアプリケーションの第2のスレッドに関連付けることが出来る。休止コアのビットベクトル600は、期間620の始まりに周期的に各ビット610を例えば、特定の値に設定することが出来る。期間620は可変のパラメータでよく、メモリ制御装置320を使用する装置200の種類及び/又は装置200により実行されるアプリケーションの種類に基づいて、設定され得る。ある例では、期間620はアプリケーションの状態の変化に素早く適用するのに十分な程短くてよいが、しかしコア例えば、コア310のうちの1つがアイドルでないときに、アイドルであると誤って判断することを防止するのに十分な程長くてよい。ある実施形態では、期間620は約1,000のクロックサイクルの値に設定され得る。対応するコア上で実行中の例えば、スレッドグループ情報450-1及び450-2により規定されたスレッドからメモリ使用要求例えば、メモリ使用要求460があるとき、休止コアのビットベクトル600は、ビット610のうちの1つをリセットすることが出来る。例えば、図6に示す通り、ビット610-1、610-2、及び610-4は、対応するコア上で実行中のスレッドからのメモリ使用要求460に関連し得る。従って、休止コアのビットベクトル600は、ビット610-1、610-2、及び610-4をリセットすることが出来る。ビット610-3は、メモリ使用要求に関連しないため、休止コアのビットベクトル600は、ビット610-3をリセットすることが出来ない。参照符号470で示す通り、ビット例えば、ビット610-3が、その設定を期間620の終わりに維持している場合、休止コアのビットベクトル600は、ビット610-3に対応するコア上で実行中のスレッドは、期間620の間、アイドルであると判定することが出来る。休止のビットコアベクトル600は、アイドルスレッドの印470を出力し得る。図6には、アイドルスレッド検知器410の機能要素の例が示されているが、他の実施形態では、アイドルスレッド検知器410は、異なる機能要素、異なって配列される機能要素、又は図6に示される以外の付加的な機能要素を含み得る。図7は、メモリ制御装置320のグループランカ420の機能要素の例を示す説明図である。ある実施形態では、図7に関連して記載された機能要素は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、又はメモリ制御装置320内に含まれるその他の種類の処理論理回路により実行され得る。図7に示す通り、グループランカ420は、順位機構700を含み得る。順位機構700は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2図示せずと、アイドルスレッド検知器410からのアイドルスレッドの印470図示せずと、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。順位機構700は、例えば、スレッドグループ情報450-1及び450-2により規定された1つ以上のスレッドグループ内のビット610と、1つ以上のスレッドグループに関連する例えば、スレッドグループ情報450-1及び450-2により規定されたスレッドと、を受け取ることが出来る。例えば、図7に示す通り、順位機構700は、スレッドグループg720内のビット610-2及び610-3と、スレッドグループg720に関連するスレッド730と、を例えば、期間620の終わりに受け取ることが出来る。スレッドグループg720内のビット610-2及び610-3に基づいて、順位機構700は、スレッドグループg720の順位740-1を判定することが出来る。ある実施形態では、順位機構700は、例えば、スレッドグループg720により占有されたアイドルコアに対応するビット610-2及び610-3の値を加えることにより、スレッドグループg720の順位740-1を判定することが出来る。ある実施形態では、順位機構700は、スレッドグループg720の順位740-1を以下の等式に従って判定することが出来る。:但し、Rankgはスレッドグループgの順位に対応し得、Mはスレッドグループgに属するスレッドの総数に対応し得、mはスレッドグループgに用いられるコアに対応し得、ICはスレッドグループgに占有されるアイドルコアの数に対応し得、CoreIDmはスレッドグループgに使用されるm番目のコアのIDに対応し得る。従って、スレッドグループgの順位は、スレッドグループにより占有されるアイドルコアの数と等しくてよい。スレッドグループの全てのスレッドが動作中の場合例えば、コア310のうちの1つにより実行される、スレッドグループの全ての対応するビット610はリセットされ得、スレッドグループの順位は0と判定され得る。1つ以上のスレッドグループのスレッド例えば、コア310のうちの1つにより実行されていない、アイドルスレッド470等のがアイドルの場合、スレッドグループの1つ以上のビット610が設定され得例えば、リセットされず、スレッドグループの順位は、0より大きいと判定され得る。例えば、図7に示す通り、ビット610-3が設定されているため例えば、スレッドグループgが、アイドルスレッド470を含むことを示す、順位機構700はスレッドグループgの順位740-1が0より大きな値と判定することが出来る。順位機構700は、その他のスレッドグループの順位740-2及び740-3を判定し、例えば、スレッドグループの順位480に対応出来る順位740-1、740-2、及び740-3を出力することが出来る。さらに図6に示す通り、順位740-2は0であり得、対応するスレッドグループの全てのスレッドが動作中であることを示す例えば、コア310のうちの1つにより実行される。図7にはグループランカ420の機能要素の例が示されているが、他の実施形態では、グループランカ420は、異なる機能要素、異なって配列される機能要素、又は図7に示される以外の付加的な機能要素を含み得る。図8は、メモリ制御装置320のメモリスケジューラ430の機能要素の例を示す説明図である。ある実施形態では、図8に関連して記載された機能要素は、1つ以上のプロセッサ、マイクロプロセッサ、ASIC、FPGA、又はメモリ制御装置320内に含まれるその他の種類の処理論理回路により実行され得る。図8に示す通り、メモリスケジューラ430は、グループ順位規則要素800、準備完了順規則要素810、及び先着順規則要素820含み得る。参照符号830で示す通り、グループ順位規則要素800は、メモリ使用要求460及びスレッドグループの順位480を例えば、グループランカ420から受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得、スレッドグループの順位480に基づいて、メモリ使用要求460を優先させることが出来る。例えば、グループ順位規則要素800は、より高いスレッドグループ順位を有するスレッドグループからのメモリ使用要求をより低いスレッドグループ順位を有するスレッドグループからのメモリ使用要求よりも優先させることが出来る。グループ順位規則要素800は、例えば、アイドルスレッドグループ及びコアに関連するメモリ使用要求が優先されていることを保証することが出来る。アイドルスレッドグループ及びコアは、メモリ制御装置320に自己のアイドル状態例えば、スレッドグループ順位480を知らせることが出来、これにより、メモリ帯域幅を周辺のコアと共有しようとするアイドルコア例えば、同じスレッドグループに占有された別のコアをメモリ制御装置320に表示する。次に、メモリ制御装置320は、周辺のコアを優先させようと試みる。これにより、コアのアイドル時間を少なくすることで、全システムに渡って処理量を増加させる。これにより、アイドルコアにより消費され得る静的電力及び/又は漏れ電力を少なくすることで、システムの電力消費を抑えることも出来る。準備完了順規則要素810は、メモリ使用要求460と、メモリ使用要求460に関連する行バッファ情報840と、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。行バッファ情報840は、メモリ使用要求460のうちのどれが、行バッファ例えば、メインメモリ230をヒットしているか、又は行バッファをヒットしていないかを表示することが出来る。参照符号850で示す通り、行バッファ情報840に基づいて、準備完了順規則要素810は、メモリ使用要求460を優先させることが出来る。例えば、準備完了順規則要素810は、行バッファをヒットしているメモリ使用要求を、行バッファをヒットしていないメモリ使用要求よりも優先させることが出来る。先着順規則要素820は、メモリ使用要求460と、メモリ使用要求460に関連する時間情報860と、を受け取ることが出来るハードウェア、又はハードウェア及びソフトウェアの組合せを含み得る。時間情報860は、メモリ使用要求460が例えば、メインメモリ230に到着した時間を表示することが出来る。参照符号870で示す通り、時間情報860に基づいて、先着順規則要素820は、メモリ使用要求460を優先させることが出来る。例えば、先着順要素820は、例えば、メインメモリ230に早い時間に到着したメモリ使用要求を、例えば、メインメモリ230に遅い時間に到着したメモリ使用要求よりも優先させることが出来る。さらに図8に示す通り、グループ優先メモリ使用要求830、行バッファ優先メモリ使用要求850、及び/又は時間優先メモリ使用要求870により、優先メモリ使用要求490を形成することが出来る。ある実施形態では、1番目にグループ順位規則要素800を、2番目に準備完了順規則要素810を、3番目に先着順規則要素820を用いることにより、メモリスケジューラ430は、例えば、優先させるメモリ使用要求460をスケジューリングすることが出来る。図8にはメモリスケジューラ430の機能要素の例が示されているが、他の実施形態では、メモリスケジューラ430は、より少ない機能要素、異なる機能要素、異なって配列される機能要素、又は図8に示される以外の付加的な機能要素を含み得る。あるいは、又はそれに加えて、メモリスケジューラ430の1つ以上の機能要素は、メモリスケジューラ430の1つ以上の別の機能要素により実行可能とされる、1つ以上の他のタスクを実行することが出来る。メモリ制御装置の動作例図9A及び図9Bは、スレッドグループ受取器400図4により実行され得る例示の動作900の説明図である。図9Aに示す通り、シングルスレッドアプリケーション910例えば、APP_Aは、マルチコアプロセッサのコア310-1例えば、プロセッシングユニット220及びメモリバンク330-1図示せずに関連する2つのメモリ使用要求920-1及び920-2を含み得る。マルチスレッドアプリケーション例えば、APP_Bは、2つのスレッド例えば、APP_B1スレッド930及びAPP_B2スレッド950と、同期のためのバリアと、を含み得る。スレッド930は、プロセッシングユニット220及びメモリバンク330-1図示せずのコア310-2に関連し得、バリアの後に供給される2つのメモリ使用要求940-6及び940-7と、バリアの前に供給される3つのメモリ使用要求940-3、940-4、及び940-5と、を含み得る。スレッド950は、プロセッシングユニット220及びメモリバンク330-2図示せずのコア310-3に関連し得、バリアの後に供給される2つのメモリ使用要求940-1及び940-2を含み得る。マルチスレッドのアプリケーションAPP_Bは、スレッド930をメモリバンク330-1にアクセスさせ、スレッド950をメモリバンク330-2にアクセスさせることにより、バンクレベルの並列処理を利用するよう設計され得る。説明のため、バリアの周りに想定される負荷の不均衡例えば、実行時間に完全な負荷均衡を保つことが困難であり得るために起こり得るにより、スレッド950がスレッド930より先にバリアに到達すると仮定する。負荷の不均衡により、スレッド950に関連するメモリ使用要求940-1及び940-2が、メモリバンク330-2へのアクセスを妨げ、これにより、コア310-3はアイドル状態となる。コア310-3は、スレッド930に関連するメモリ使用要求940-3、940-4、及び940-5が処理されるまで、アイドル状態を保つことが出来る。従って、例えば、コア310-3は5周期とは対照的にたった3周期の間だけアイドルでいるように、スレッド930に関連するメモリ使用要求940-3、940-4、及び940-5は、シングルスレッドアプリケーション910に関連するメモリ使用要求920-1及び920-2よりも優先権を与えられるべきである。図9Bに示す通り、例えば、メモリ制御装置320のスレッドグループ受取器400は、例えば、スレッド440に対応し得るスレッド910、930、及び950と、スレッド情報510と、グループID情報520と、を受け取ることが出来る。例えば、スレッドグループ受取器400は、シングルスレッドアプリケーションAPP_Aのスレッド910に関するグループIDと、マルチスレッドアプリケーションAPP_Bのスレッド930及び950に関する別のグループIDと、を受け取ることが出来る。スレッド情報510及びグループID情報520に基づいて、スレッドグループ受取器400は、スレッド910、930、及び950に関するスレッドグループ情報450-1及び450-2を生成することが出来る。例えば、スレッドグループ受取器400は、例えば、シングルスレッドアプリケーションAPP_Aのスレッド910に関するスレッドグループ情報450-1及び例えば、マルチスレッドアプリケーションAPP_Bのスレッド930及び950に関するスレッドグループ情報450-2を生成することが出来る。図9A及び図9Bには、スレッドグループ受取器400により実行可能な動作の例が示されているが、他の実施形態では、スレッドグループ受取器400は、より少ない動作、異なる動作、又は図9A及び図9Bに示される以外の付加的な動作を行うことが出来る。図10A及び図10Bは、アイドルスレッド検知器410図6により実行可能な例示の動作1000の説明図である。図10Aに示す通り、バリアの周りに想定される負荷の不均衡により、スレッド950はスレッド930より先にバリアに到達し得る。参照符号1010で示す通り、この負荷の不均衡が、スレッド950に関連するメモリ使用要求940-1及び940-2の、メモリバンク330-2図示せずへのアクセスを妨げ得、これによりコア310-3はアイドル状態となり得、スレッド950がアイドルとなり得る。図10Bに示す通り、アイドルスレッド検知器410の休止コアのビットベクトル600は、例えば、コア310-1に関するビット610-1、例えば、コア310-2に関するビット610-2、及び例えば、コア310-3に関するビット610-3を含み得る。ビット610-1は、対応するコア例えば、コア310-1上で実行中のスレッド例えば、スレッド910からのメモリ使用要求920-1及び920-1に関連し得るため、このビット610-1は、休止コアのビットベクトル600により、例えば、0の値にリセットされ得る。ビット610-2は、対応するコア例えば、コア310-2上で実行中のスレッド例えば、スレッド930からのメモリ使用要求940-3、940-4、及び940-5に関連し得るため、ビット610-2は、休止コアのビットベクトル600により、例えば、0の値にリセットされ得る。ビット610-3は、対応するコア例えば、コア310-3上で実行中のスレッドからのメモリ使用要求に関連しえないため、このビット610-3は、例えば、0より大きい値に設定され得る。参照符号1020で示す通り、ビット610-3が期間620の終わりに設定を維持している場合、休止コアのビットベクトル600は、ビット610-3に対応するコア例えば、コア310-3上で実行中のスレッド例えば、スレッド950が、期間620の間、アイドル状態であることを判定し得る。休止ビットコアベクトル600は、アイドルスレッドの印1020を出力することが出来る。図10A及び図10Bには、アイドルスレッド検知器410により実行可能な動作の例が示されているが、他の実施形態では、アイドルスレッド検知器410は、より少ない動作、異なる動作、又は図10A及び図10Bに示される以外の付加的な動作を行うことが出来る。図11は、グループランカ420図7により実行可能な例示の動作1100の説明図である。図示する通り、グループランカ420の順位機構700は、シングルスレッドアプリケーションAPP_Aに関するビット1110及びマルチスレッドアプリケーションAPP_Bに関するビット1120を受け取ることが出来る。上記に図10Bに関連して記載する通り、ビット1110は、例えば、0の値にリセットされ得るビット610-1を含み得る。上記に図10Bに関連して記載する通り、ビット1120は、例えば、0の値にリセットされ得るビット610-2と、例えば、0より大きい値に設定され得るビット610-3と、を含み得る。順位機構700は、ビット1110に関連する値に基づいて、シングルスレッドアプリケーションAPP_Aの順位1130を判定することが出来る。図11に示す通り、ビット610-1は0の値に設定されるため、シングルスレッドアプリケーションAPP_Aの順位1130は0と判定される。順位機構700は、ビット1120に基づいて、マルチスレッドアプリケーションAPP_Bの順位1140を判定することが出来る。ある実施形態では、順位機構700は、ビット610-2及び610-3の値を加えることにより、マルチスレッドアプリケーションAPP_Bの順位1140を判定することが出来る。図11に示す通り、ビット610-2は、0の値に設定され、且つビット610-3は0より大きい値に設定されるため、マルチスレッドアプリケーションAPP_Bの順位1140は、0より大きい値と判定することが出来る。図11には、グループランカ420により実行可能な動作の例が示されているが、他の実施形態では、グループランカ420は、より少ない動作、異なる動作、又は図11に示される以外の付加的な動作を行うことが出来る。図12A及び図12Bは、メモリスケジューラ430図8により実行可能な例示の動作1200の説明図である。図12Aに示す通り、例えば、シングルスレッドアプリケーションAPP_Aのスレッド910は、メモリバンク330-1からメモリに要求されるメモリ使用要求920-1及び920-2を含み得る。例えば、マルチスレッドアプリケーションAPP_Bのスレッド930は、メモリバンク330-1からメモリに要求されるメモリ使用要求940-3、940-4、及び940-5を含み得る。図12Bを参照すると、メモリスケジューラ430のグループ順位規則要素800は、スレッド930に関連するメモリ使用要求940-3、940-4、及び940-5を、スレッド910に関連するメモリ使用要求920-1及び920-2よりも優先させ、これにより、コア310-3は、5周期とは対照的にたった3周期の間だけアイドルを維持する。図12Bに示す通り、グループ順位規則要素800は、シングルスレッドアプリケーションAPP_Aの順位1130と、マルチスレッドアプリケーションAPP_Bの順位1140と、を受け取ることが出来、参照符号1210で示す通り、順位1130及び1140に基づいて、マルチスレッドアプリケーションAPP_BをシングルスレッドアプリケーションAPP_Aよりも優先させることが出来る。例えば、図12Aを参照すると、例えば、スレッド930のメモリ使用要求940-3、940-4、及び940-5は、メモリバンク330-1のそれぞれ指定された行1、行2、及び行3でよく、メモリ使用要求920-1及び920-2例えば、スレッド910のは、メモリバンク330-1の指定された行4でよい。メモリバンク330-1の行1~行3は、メモリバンク330-1の行4よりも早く到着したため、メモリ使用要求940-3、940-4、及び940-5は、メモリ使用要求920-1及び920-2の前に処理される。マルチスレッドアプリケーションAPP_BをシングルスレッドアプリケーションAPP_Aよりも優先することにより、メモリ制御装置320は、マルチスレッドアプリケーションAPP_Bのアイドリング時間を5周期例えば、FRFCFS及びPAR-BS機構の場合ではから3周期に短縮することが出来る。コア310-3が先に有用な作業を実行し始めることが出来るため、これによりシステム全般に渡って処理量を改善することが出来る。またこれにより、アイドルコア310-3により消費され得る静的電力及び/又は漏れ電力を減らすことで、システムの電力消費も抑えることが出来る。図12A及び図12Bには、メモリスケジューラ430により実行可能な動作の例が示されているが、他の実施形態では、メモリスケジューラ430は、より少ない動作、異なる動作、又は図12A及び図12Bに示される以外の付加的な動作を行うことが出来る。図13~図15は、本明細書に記載の実施形態による、マルチスレッドアプリケーションアウェアメモリスケジューリングに関する例示のプロセス1300を示すフローチャートである。ある実施形態では、プロセス1300は、装置200図2により実行可能である。別の実施形態では、プロセス1300のいくつか又は全ては装置200の1つ以上の構成要素により、例えばメモリ制御装置320により実行可能である。図13に示す通り、プロセス1300は、第1のグループに関連するマルチスレッドアプリケーションのスレッドを受け取ることブロック1310と、第2のグループに関連するシングルスレッドアプリケーションのスレッドを受け取ることブロック1320と、を含み得る。例えば、上記に図4に関連して記載された実施形態では、メモリ制御装置320のスレッドグループ受取器400は、1つ以上のアプリケーションに関連する1つ以上のスレッド440を受け取ることが出来、例えば、装置200のオペレーティングシステムにより規定される第1のスレッドグループに関するスレッド440に関するスレッドグループ情報450-1、及び例えば、装置200のオペレーティングシステムにより規定される第2のスレッドグループに関するスレッドグループ情報450-2を生成することが出来る。ある例では、スレッドグループ受取器400は、シングルスレッドアプリケーションのスレッドに関する、例えば、オペレーティングシステムにより規定されたスレッドグループ情報450-1と、マルチスレッドアプリケーションのスレッドに関する、例えば、オペレーティングシステムにより規定されたスレッドグループ情報450-2と、を生成することが出来る。さらに図13に示す通り、プロセス1300は、第1のグループ内及び第2のグループ内のアイドルスレッドの数を判定することブロック1330を含み得る。例えば、上記に図4に関連して記載された実施形態では、メモリ制御装置320のアイドルスレッド検知器410は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2と、スレッド440に関連する1つ以上のメモリ使用要求460と、を受け取ることが出来る。参照符号470で示す通り、アイドルスレッド検知器410は、スレッドグループ情報450-1/450-2及びメモリ使用要求460に基づいて、スレッド440のうちのどれがアイドルなのかを判定し、判定されたアイドルスレッドをグループランカ420に供給することが出来る。図13に戻ると、プロセス1300は、判定されたアイドルスレッドの数に基づいて、第1のグループ及び第2のグループの順位付けを行うことブロック1340を含み得る。例えば、上記に図4に関連して記載された実施形態では、メモリ制御装置320のグループランカ420は、スレッドグループ受取器400からのスレッドグループ情報450-1及び450-2と、アイドルスレッド検知器410からのアイドルスレッド470と、を受け取ることが出来る。グループランカ420は、各スレッドグループ内のアイドルスレッド470の数に基づいて、例えば、スレッドグループ情報450-1及び450-2により規定されたスレッドグループ内のスレッドを順位付けることが出来る。参照符号480で示す通り、グループランカ420は、スレッドグループの順位をメモリスケジューラ430に供給することが出来る。さらに図13に示す通り、プロセス1300は、高い順位のグループからのメモリ使用要求を、低い順位のグループからのメモリ使用要求よりも優先することブロック1350を含み得る。例えば、上記に図4に関連して記載された実施形態では、メモリ制御装置320のメモリスケジューラ430は、グループランカ420からのスレッドグループの順位480と、スレッド440に関連する1つ以上のメモリ使用要求460と、を受け取ることが出来る。参照符号490で示す通り、メモリスケジューラ430は、スレッドグループの順位480に基づいて、メモリ使用要求460を優先させ、装置200内で優先させたメモリ使用要求490を実行することが出来る。プロセスブロック1330及びプロセスブロック1340は、図14に示されるプロセスブロックを含み得る。図14に示す通り、プロセスブロック1330及びプロセスブロック1340は、ビットベクトル内の第1のビットを第1のグループ内のスレッドの部分に関連付けることブロック1400と、ビットベクトル内の第2のビットを第1のグループ内のスレッドの残りの部分に関連付けることブロック1410と、ビットベクトル内の第3のビットを第2のグループ内のスレッドに関連付けることブロック1420と、含み得る。例えば、上記に図6に関連して記載された実施形態では、メモリ制御装置320の休止コアのビットベクトル600は、スレッドグループ情報450-1及び450-2に基づいて、各ビット610をスレッド440のうちの1つ及びその対応するコア例えば、コア310のうちの1つに関連付けることが出来る。ある例では、休止コアのビットベクトル600は、ビット610-1をシングルスレッドアプリケーションのスレッドに関連付け、ビット610-2をマルチスレッドアプリケーションの第1のスレッドに関連付け、ビット610-3をマルチスレッドアプリケーションの第2のスレッドに関連付けることが出来る。さらに図14に示す通り、プロセスブロック1330及びプロセスブロック1340は、期間の始まりに、ビットベクトル内のビットを設定することブロック1430と、リセットされるビット複数可に関連するスレッド複数可に関して、1つ以上のメモリ使用要求が受け取られたとき、ビットベクトル内の1つ以上のビットをリセットすることブロック1440と、を含み得る。例えば、上記に図6に関連して記載された実施形態では、休止コアのビットベクトル600は、期間620の始まりに、各ビット610を例えば、特定の値に周期的に設定することが出来る。休止コアのビットベクトル600は、対応するコア上で実行中の例えば、スレッドグループ情報450-1及び450-2により規定されたスレッドからのメモリ使用要求例えば、メモリ使用要求460があるとき、ビット610のうちの1つをリセットすることが出来る。ある例では、ビット610-1、610-2、及び610-4は、対応するコア上で実行中のスレッドからのメモリ使用要求460に関連し得る。従って、休止コアのビットベクトル600は、ビット610-1、610-2、及び610-4をリセットすることが出来る。ビット610-3は、メモリ使用要求に関連しないため、休止コアのビットベクトル600は、ビット610-3をリセットすることが出来ない。図14に戻ると、プロセスブロック1330及びプロセスブロック1330は、期間の終わりに、ビットベクトル内に残る、設定されたビット複数可に基づいて、アイドルスレッドの数複数可を判定することブロック1450と、期間の終わりに残る、設定されたビット複数可の値複数可に基づいて、第1のグループ及び第2のグループの順位付けをすることブロック1460と、含み得る。例えば、上記に図6及び図7に関連して記載された実施形態では、参照符号470で示す通り、ビット例えば、ビット610-3が、期間620の終わりに残る場合、休止コアのビットベクトル600は、ビット610-3に対応するコア上で実行中のスレッドが、期間620の間、アイドルであると判定することが出来る。休止ビットコアベクトル600は、アイドルスレッドの印470を出力することが出来る。参照符号830で示す通り、メモリ制御装置320のグループ順位規則要素800は、メモリ使用要求460及びスレッドグループの順位480を例えば、グループランカ420から受け取ることが出来、スレッドグループの順位480に基づいて、メモリ使用要求460を優先させることが出来る。ある例では、グループ順位規則要素800は、より高いスレッドグループ順位のスレッドグループからのメモリ使用要求を、より低いスレッドグループ順位のスレッドグループからのメモリ使用要求よりも優先させることが出来る。プロセスブロック1350は、図15に示されるプロセスブロックを含み得る。図15に示す通り、プロセスブロック1350は、メモリ使用要求に関連するグループ順位に基づいて、メモリ使用要求の第1の優先権を判定することブロック1500と、準備完了順規則に基づいて、メモリ使用要求の第2の優先権を判定することブロック1510と、先着順規則に基づいて、メモリ使用要求の第3の優先権を判定することブロック1520とを含み得る。例えば、上記に図8に関連して記載された実施形態では、メモリ制御装置320のメモリスケジューラ430は、1番目にグループ順位規則要素800を用いて、2番目に準備完了順規則要素810を用いて、3番目に先着順規則要素820を用いて、メモリ使用要求460をスケジューリングする例えば、優先させることが出来る。本明細書に記載するシステム及び/又は方法により、装置のメモリ制御装置例えば、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ装置、及び/又はその他の種類のコンピュータ又は通信装置等のマルチコアプロセッサを用いる装置は、1つ以上のマルチスレッドアプリケーションを識別し、マルチスレッドアプリケーション複数可の識別に基づいてマルチスレッドアプリケーション複数可に関するメモリスケジューリングスキームを調整又は最適化することが出来る。このようなシステム及び/又は方法により、非能率的なメモリスケジューリングによる、例えば、装置内のパフォーマンス低下を防ぐことが出来る。上述の実施形態の記述により、説明及び記載がなされたが、本明細書が包括的なものでないこと、又は開示した厳密な形態に本発明を制限することを、意図するものではない。上記の事項を踏まえると、修正及び変更は可能である、即ち本発明の実行から得ることが出来る。例えば、図13~図15に関連して、一連のブロックを説明してきたが、他の実施形態では、ブロックの順番を変更することが可能である。さらに、非従属ブロックは、並列して実行することが出来る。別の例では、本明細書に記載する、異なるアプリケーション及びスレッドの数は説明のためだけに設けられた。図面に示される実施形態では、上記に記載した様態はソフトウェア、ファームウェア、及びハードウェアの様々な形で実行することが出来ることは言うまでもない。これらの様態を実行するために用いられる実際のソフトウェアコード、又は特殊制御ハードウェアは、制限と解釈されるべきではない。従って、様態の動作及び挙動の説明では、ソフトウェアコードを参照しなかったが、そのソフトウェア及び制御ハードウェアを設計して、本明細書に基づいた様態を実行出来ることは言うまでもない。このソフトウェアには、ハードウェア記述言語HDL、ヴェリログ、レジスタ転送レベルRTL、グラフィックデータベースシステムGDSIIのデータ又はそれらの回路及び機構に書き込むために使用される、その他のソフトウェアも含まれ得る。このようなソフトウェアは、コンピュータ可読媒体に格納することが出来、製造プロセスを設定して、本発明の様態を具体化する方法で、動作可能な実回線を作るために用いることが出来る。さらに、本明細書に記載のいくらかの実施形態を、1つ以上の機能を実行する論理回路として実行することが出来る。この論理回路には、プロセッサ、ASIC、又はFPGA、あるいはハードウェア及びソフトウェアの組合せ等の、ハードウェアが含まれ得る。特徴の特定の組合せが請求項に記載され及び/又は明細書に開示されてはいるが、これらの組合せは、本発明を制限することを意図するものではない。実際、請求項に明確には記載されていない、且つ/又は明細書に開示されていない方法で、多くのこれらの特徴を組み合わせることが出来る。本出願に使用される、いかなる要素、ブロック、又は命令も、そのような明確な定めがない限り、本発明に関して重要又は必須と解釈されるべきではない。また、本明細で使用される冠詞aは1つ以上の項目を含むことを意図する。たった1つの項目を意図する場合、用語one又は類似の言葉が使用される。さらに、フレーズに基づいてとは、明確な定めがない限り、少なくとも部分的に基づいてを意味することを意図する。"