JP5462915B2 - アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用 - Google Patents

アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用 Download PDF

Info

Publication number
JP5462915B2
JP5462915B2 JP2012181172A JP2012181172A JP5462915B2 JP 5462915 B2 JP5462915 B2 JP 5462915B2 JP 2012181172 A JP2012181172 A JP 2012181172A JP 2012181172 A JP2012181172 A JP 2012181172A JP 5462915 B2 JP5462915 B2 JP 5462915B2
Authority
JP
Japan
Prior art keywords
instruction
data
cache
predetermined
thread
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.)
Active
Application number
JP2012181172A
Other languages
English (en)
Other versions
JP2013047950A (ja
Inventor
ステファノフ エカテリーナ
ロバート ジェームス モナハン ディビッド
ウィリアム モリスン ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of JP2013047950A publication Critical patent/JP2013047950A/ja
Application granted granted Critical
Publication of JP5462915B2 publication Critical patent/JP5462915B2/ja
Active 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/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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、コンピュータベースのシステムに関し、特にアプリケーションプログラム内の処理スケジューリングによりキャッシュヒット率の向上に関するものである。
コンピュータシステムにおけるキャッシュメモリは、中央処理装置(CPU)が容易に且つ高速にアクセスするために、主記憶場所からの命令又はオペランドであるデータ項目のコピーを格納するために使用される。キャッシュの再利用は、メモリアクセス時間を短縮することにより殆どのソフトウェアアプリケーションにとって大幅な実行時間の短縮につながるため、非常に望ましい。処理(又はマルチスレッドアプリケーションにおけるスレッド)内の効率的なキャッシュの再利用は、アプリケーションプログラムコードの品質に依存し、処理間及びスレッド間の効率的なキャッシュの再利用は、キャッシュに既にロードされているものを追跡すること、並びにキャッシュ内容の再利用を考慮して次に実行するための後続の処理/スレッドを選択することを含む。
キャッシュ内容を追跡することは、一般に、ハードウェア手段又はソフトウェア技術を採用することで当技術分野において実現される。多くの場合、収集されたキャッシュ内容情報の正確度とその処理専用の時間及びリソースの量との間にはトレードオフの関係がある。キャッシュの再利用方法は、一般化されることによりあらゆるプログラム又は処理に対して適用可能なものもあるが、より特化されるものもある。
また、データキャッシュ内容の再利用を目標とする方法もあるが、命令キャッシュ内容の再利用を目標とする方法もある。場合によっては、方法は、特にどちらかを目標とすることなく、データ及び命令の双方に対して適用可能である。
従来技術において既知であるデータキャッシュの再利用に対する1つの手法は以下の通りである。データを全く共有しない処理は、マルチプロセッサシステムにおいて可能であれば種々のプロセッサ上でスケジュールされる。また、依存関係のために同時に実行されないが、互いに共通データを共有する処理は、それらがキャッシュ内容を共有できるような方法でCPU上でスケジュールされる。方法は、特定のアプリケーションにおいて動作可能なアルゴリズムの詳細な知識を必要とし、データの再利用のみを考慮する。
他の従来技術は、同一のプロセッサ上で同一の処理をスケジュールすることで命令データの局所性を向上することを目的とする。命令の再利用のみを考慮する。
いくつかの従来技術の方法の主な欠点は、それらがデータの再利用又は命令の再利用を簡略化するように設計されるが、双方を考慮しないことである。
他には、より一般的な従来技術の手法は、所定の処理に対してキャッシュ内容の「キャッシュウォーム(cache warmth)」を測定することにより、ハードウェア手段又はソフトウェア技術を用いて命令の再利用及びデータの再利用の双方を簡略化することである。キャッシュウォームは、キャッシュにおいて見つけられた特定の処理のデータの古さを示すために使用される場合がある用語であり、処理毎に各プロセッサの要求の数をカウントする方法又はキャッシュのサブセクションに対するキャッシュミスを追跡する方法、あるいはライン毎のキャッシュの利用を追跡する方法等を含む従来技術における種々の方法で測定される。CPUがキャッシュにおいてデータ項目を見つけられない場合にキャッシュミスが発生する。これにより、関連付けられた性能ペナルティでより低いレベルのキャッシュ又は主記憶からデータ項目を取り出すことが必要になる。
キャッシュ内容の再利用に対するこれらのより一般的な従来技術の手法の主な欠点は、それらの複雑性及びその複雑性がプログラム実行に対して課すオーバヘッドにある。それらは、実現するために専用ハードウェアを更に必要とすることが多い。
本発明の目的は、従来技術の構成の1つ以上の欠点を実質的に克服するかあるいは少なくとも改善することである。
本発明によれば、アプリケーションの内部知識を有するスケジューラは、重い処理オーバヘッドを課さずにコンピュータシステムにおいてコンテキストを切り替える結果発生するキャッシュミスを減少することでキャッシュミス率を最小限にするように配置される。
多くのグループ内のスレッドの総合的な実行又は処理の履歴及び実行されるタスクの特徴の双方に基づいて、タスクを実行するスレッドのこれらのグループのうちの1つにプリファレンスが与えられる構成が開示される。
本発明の一態様によれば、命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを複数有する情報処理システムであって、前記情報処理システムにおいて動作するスレッドは、命令キャッシュおよびデータキャッシュをキャッシュメモリから取得して当該取得された命令を実行し、前記情報処理システムは、スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を、当該スレッドによって命令キャッシュおよびデータキャッシュが取得されるキャッシュメモリごとに記憶する履歴記憶手段と、所定のデータを処理するために所定の命令が実行される場合に、前記所定の命令の種類と、前記重要度記憶手段によって記憶されている情報とを用いて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定し、前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定する決定手段と、を有する。
本発明の他の態様によれば、命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを有する情報処理システムであって、命令キャッシュおよびデータキャッシュを前記キャッシュメモリから取得して、当該取得された命令を実行するスレッドが、前記情報処理システムにおいて動作し、前記情報処理システムは、前記スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、前記スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を記憶する履歴記憶手段と、所定のデータを処理するために所定の命令が実行される場合に、前記所定の命令の種類と、前記重要度記憶手段で記憶されている情報とに基づいて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、前記履歴記憶手段で記憶されている命令の履歴およびデータの履歴の少なくとも1つが、前記特定された2つの重要度によって定まる条件を満たすかを判定し、前記判定の結果を用いて、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させるか否かを決定する決定手段と、を有する。
次に、以下の図面を参照して本発明の少なくとも1つの実施形態を説明する。
説明される構成が実現される例示的なコンピュータシステムの一部を示す概略ブロック図である。 図1のコンピュータシステムの処理装置及びメモリ装置の一例を示す概略ブロック図である。 図1の制御プログラム130に対する例示的なアーキテクチャを示す概略ブロック図である。 図3のEXECUTION−REGISTER380格納構成要素のメモリレイアウトを示す図である。 受信したMATCH_THREADメッセージ及びMATCH_TASKメッセージに応答してタスクをスレッドに一致させる処理を示すデータフローチャートである。 所定のスレッド上で実行するためにREADY_TASK_QUEUEからタスクを選択する処理を示すデータフローチャートである。 所定のタスクを実行するためにAVAILABLE_THREADS_LISTからスレッドを選択する処理を示すデータフローチャートである。 データの再利用が重要である場合に所定のタスクを実行するためにAVAILABLE_THREADS_LISTからスレッドを選択する処理を示すデータフローチャートである。 命令の再利用が重要である場合に所定のタスクを実行するためにAVAILABLE_THREADS_LISTからスレッドを選択する処理を示すデータフローチャートである。 マルチスレッドソフトウェアプログラムの実行の所定の時点におけるEXECUTION_REGISTER380データ構造(図4のメモリレイアウトに従う)のメモリ内容を示す図である。 所定のスレッド上で実行するためにタスクを選択する図6に示されたデータフローチャートに対する別の手法を示すデータフローチャートである。 L2及びL3のキャッシュ最適化に対する例示的な構成を示す図である。 L2及びL3のキャッシュ最適化に対する例示的な構成を示す図である。 印刷処理の一部であるフィルマップ表現の形成を示す図である。 印刷処理の一部であるフィルマップ表現の形成を示す図である。 印刷処理の一部であるフィルマップ表現の形成を示す図である。 印刷処理の一部であるフィルマップ表現の形成を示す図である。
コンピュータシステムにおいてマルチプロセッサアーキテクチャを使用することで性能速度の高速化を実現する傾向は、近年広範に使用されるようになってきている。マルチプロセッサアーキテクチャにより、1つ以上の処理に属する多くのスレッドが多くの中央処理装置(CPU)を介して並列に実行できるため、実行時間全体が短縮される。
CPUの数及び速度と共に、コンピュータシステムのメモリ構成は、処理速度に大きく影響する。階層的記憶構造は、キャッシュと呼ばれるより小型で高速なメモリをCPUにより近接させた近年のメモリシステムに対して一般に受け入れられたアーキテクチャである。記憶階層において同一の深度に配置されたキャッシュは、同一のキャッシュレベルであると言われる。キャッシュメモリは、容易でより高速なアクセスのためにCPUにより近接する主記憶内容のサブセットを格納するために使用される。
レベル1(L1)キャッシュは、CPUに最近接し、同一のハードウェアチップ上に配置又は構成される。L1キャッシュは小型で非常に高速である。レベル2(L2)キャッシュはL1キャッシュより大きい。L2は、一般にCPUチップ上の最後のキャッシュである。レベル3(L3)キャッシュは、存在する場合により大きいために上位レベルのキャッシュより低速であるが、依然として主記憶よりはるかに高速である。一般にCPUのすぐ隣のコンピュータマザーボード上に配置されたL3キャッシュは、CPUと直接専用に相互接続していることが多い。一般にL3キャッシュは、単にサイズがより大きいためにL1キャッシュ及びL2キャッシュよりキャッシュミスの発生が少ない。
各レベルにおいて、キャッシュは、物理的に独立したデータキャッシュ及び命令キャッシュ又はデータ及び命令の双方に対するユニファイドキャッシュから形成される。双方の場合において、データ及び命令は個別に考えられる。本発明において開示される構成は、双方の場合に対して使用される。
項目(命令又はオペランド(データ))が初めてCPUにより要求されると、項目が属する主記憶ブロックの内容は、キャッシュラインにおいてキャッシュにロードされる。同一の項目又は同一のブロックからの項目に対する後続の要求は、そのキャッシュラインにアクセスすることで満たされる。要求された項目がキャッシュにおいて見つけられる場合、当技術分野においてキャッシュヒットとして既知であるイベント、すなわち要求された項目へのアクセスは、キャッシュミス上で発生する要求された項目が主記憶から取り出されなければならない時よりはるかに高速である。キャッシュにロードされるものは全てあらゆる種類のデータであるが、プログラムコードが動作するプログラムコード(命令)とオペランド(データ)との間で区別されることが多い。この説明において、前者を「命令」と呼び、後者を単に「データ」と呼ぶ。アプリケーションを実行するために使用されているプロセッサは、キャッシュが命令又はデータを含むかを決定し、且つ万が一キャッシュミスの場合にキャッシュラインをロードする処理を実行する。本発明において開示される構成は、命令及びデータのキャッシュを管理する全ての一般的な方法に対して適用可能である。
マルチプロセッサシステムにおいて並列性を利用するために、一般に処理は、タスクとして既知である本明細書の目的で、並列に実行される動作の独立単位に大きく細分される。プログラムの実行には1つ以上のタスクを完了する必要がある。各タスクは、並列に実行される場合にスレッド上で実行される。
本発明において開示される構成の好適な実現例において、タスクとスレッドとの間で一対一対応が維持される。すなわち、タスクは一度に1つのスレッドのみにおいて実行される。タスクの例には、グラフィックイメージ作成プログラムにおけるレンダリング処理及びスプレッドシートアプリケーションにおいて数値データの列に帰された数学演算子が含まれる。従って、タスクのサイズ及び複雑性が変動し、これは、アプリケーションプログラムが符号化されるかあるいは実行されることが望まれる方法に従う。
スケジューリングの観点から、タスクは、動作の最小のスケジュール可能な単位であり、常に完了する。タスクは、その型(TASK_ID)及びタスクが処理するデータ(DATASET_ID)により規定される。TASK_IDは、関連付けられたタスクが実行される場合に実行されると予想される命令の集合を識別する。DATASET_IDは、タスクの実行中に読み出されるか又は書き込まれると予想されるか、あるいはそれら双方を予想される記憶場所の集合を識別する。タスク型は命令の集合により規定される。
種々のタスク型は種々の特徴を有する。その特徴のうちの1つは、命令及びデータの使用パターンである。従って、データ及び命令の再利用の相対的な重要度は種々のタスク毎に異なる。本発明において開示される構成において、2つの重み値は、各タスク型、すなわちwi及びwdと関連付けられる。重みwiはそのタスクに対する命令の再利用の重要度を反映し、重みwdはそのタスクに対するデータの再利用の重要度を反映する。wdより高いwiを含むタスクは命令を再利用することからより多くの利益を得、wdより低いwiを含むタスクはデータを再利用することからより多くの利益を得る。重みを比較することにより、考えられる最適なキャッシュの再利用のために、スレッドをタスクに一致させる方法又はタスクをスレッドに一致させる方法を決定することが可能である。例えば、タスクTに対してwi=10及びwd=5である場合、そのタスクTに対して命令の再利用はデータの再利用より重要である。
これらの重み値は、静的又は動的に設定される。重み値の静的決定は演繹的に行われ、プログラムにおけるタスク型に対する重みの動的決定は、実行時に行われ、コンピューティングシステムの現在の状態を反映するように変化する。例えばより大きなデータセットは、命令の再利用が一般により重要なものとして考えられるタスクに対してデータの再利用の重み値wdの増加を保証する。
そのようなスレッド−タスクのペアリングがキャッシュの再利用につながる可能性が高い場合、スレッドは所定のタスクを実行するのに適していると仮定され、タスクは所定のスレッド上で実行されるのに適していると仮定される。
2つ以上のCPUが同一のキャッシュユニットを共有する場合、これらのCPU上で実行されたスレッドを本明細書において計算グループ(CG)と呼ぶ。CGにおける全てのスレッドは、対応するCPUにより物理的に共有されたキャッシュへの同等のアクセスを有する。例示的な一実現例は、特に図10Aに示されるようにL2キャッシュに適用されるものとして説明される。しかし、本明細書において開示された手法は、図10BのL3最適化等のあらゆるキャッシュレベルに適用されてよい。
一般に、1つ以上のスレッドがCPUに割り当てられるが、好適な一実現例において、1つのスレッドだけがCPUに割り当てられる。所定のスレッドが常に同一のCPU上で動作するため、このような割り当てにより、実行中にスレッドの親和性として当技術分野において既知である概念を変更しない。
本発明において開示される構成は、タスクレベルでタスクをスレッドにスケジュールすることで従来技術の主な欠点に対処する。タスクがスレッドに割り当てられる結果、その特定のタスクに対して最も重要な種類のキャッシュされた内容(命令又はデータ)を再利用する。このため、命令及びデータのタスクの潜在的な再利用を示すタスク型が重要である。逆に、従来技術は、多くの場合キャッシュラインの使用を厳密に監視することにより、機械語レベルでキャッシュされた内容を再利用する。従って、従来技術は、本明細書において開示される構成より多くのオーバヘッドをプログラム実行に対して課し、多くの場合専用のハードウェアを更に必要とする。
図1は、本発明において開示される構成が実現されるメモリの少なくとも1つのレベルを含むマルチプロセッサコンピュータシステム100を示す概略ブロック図である。コンピュータシステム100は、スタンドアロンコンピュータ、例えばIBM−PC及びその互換のコンピュータシステム、Sun社のSPARC(商標)コンピュータシステム又はApple社のMac(商標)コンピュータシステム等に類似する近年のデスクトップコンピュータである。あるいはコンピュータシステム100は、例えばプリンタ、撮像システム又は制御システム等の特殊機能装置を部分的に又は完全に実現する。各処理デバイス又は各チップ上のCPUの数、キャッシュ及びそれらの階層的組織の数、並びに他のコンピュータシステムの構成要素は、広範に変動する。コンピュータシステム100は、多くの処理装置150、メモリ120、周辺装置インタフェース190、ハードディスクドライブシステム(HDD)192及び読み出し専用メモリ(ROM)194を有する。示されるように、それらは全てバス140、並びに関連付けられたそれぞれの接続141、142、143、144及び145を介して相互接続される。周辺装置インタフェース190により、コンピュータシステム100は、オプションの接続195を介して通信ネットワークを含む他のシステム、他のコンピュータ、プリンタ及び表示装置等のデバイス、並びにキーボード及びマウスポインティングデバイス(不図示)等の制御デバイスと相互接続できる。処理装置150及びメモリ120は、バス140とは別の専用の接続145を有する。図1に示されたようなメモリ120は、一般的なコンピュータシステムにおいて使用された種々のメモリの構成要素と種類との混合物を示す。従って、メモリ120は、マイクロプロセッサデバイス/マイクロコントローラデバイスに組み込まれたL1キャッシュ及びL2キャッシュ、そのようなデバイスに直接結合されたL3キャッシュ、並びにいわゆる「主」記憶を含む。それらは全て、一般に、専用のランダムアクセスメモリ(RAM)デバイスとして処理装置150と一体化されない半導体ベースのRAMを使用して実現される。コンピュータシステム100は、HDDシステム192、ROMメモリ120、並びに光ディスクドライブ、PCMCIAドライブ及びUSBドライブ等の他のデバイスにより示されている他のメモリを含む。それらは、明確にするために示されず、従来独占的にバス140に結合し、処理装置150に直接結合しない。
一般的なコンピュータシステムにおいて、ROM194は、一般に処理装置150により実行されるためにHDD192の永久記憶装置からのオペレーティングシステム122をメモリ120にコピーすることにより、コンピュータ100のオペレーティングシステム122をブートすることを含む基本動作処理をコンピュータ100が開始及び実行できるようにする基本処理を格納する。オペレーティングシステム122は、キャッシュメモリ管理がその一部を形成するメモリ管理等の低レベルの動作機能を含むコンピュータの機能の基本制御を提供する。従って、コンピュータシステム上で実行する(高次レベルの)アプリケーションは、オペレーティングシステムにより与えられたデフォルトメモリ管理機能を利用する。しかし、一般に特定のアプリケーションに最適化された性能又は適した性能を実現するために、低レベルの動作よりも自身の制御の影響を行使することを好む(高次レベルの)アプリケーションもある。そのようなアプリケーションは、高次レベルのアプリケーションにより所望されるようにコンピュータシステム100の低レベルの動作を変形するように構成された特定のソフトウェアアプリケーションをそのように提供するか、あるいはそれを伴う。
通常、図1に示されるように、一般に制御プログラム130は、HDD192に格納されてHDD192からコピーされ、メモリ120に常住する。その結果、制御プログラム130は、処理装置150のCPU171、172、181及び182と関連付けられたスレッドのうちの1つ以上において実行可能である。本発明において、一般に制御プログラム130は、特定の目的のためにコンピュータシステム100上で実行可能なアプリケーションプログラムであり、キャッシュミス率を低下させるためにコンピュータシステム100のキャッシュメモリを管理し且つキャッシュの再利用を最適化するように別の手法を実現するために本発明に従って構成されたソフトウェアコンポーネントを含む。そのような実現例において、本発明において説明するキャッシュ管理処理は、オペレーティングシステム122内のデフォルト処理として組み込まれる。制御プログラム130の特定の目的は、広範に変動するが、レンダリング、ラスタリング及び合成等の画像処理アプリケーション、並びに印刷アプリケーションにより生成された印刷タスクを含む。他のアプリケーションは、特に、ワードプロセシングアプリケーション及びデスクトップパブリッシングアプリケーション、金融アプリケーション、ゲーム、通信、データ処理、モニタリング、制御システムを含む。
図1の例に示されるように、処理装置150のCPU171、172、181及び182は、2つの計算グループ(CG)、すなわちCG160及びCG165に分けられる。
図2は、図1の処理装置150及びメモリ120の階層的構成の例示的な構成200を示す。この特定の構成200において、CGは、同一のL2キャッシュを使用するCPUと関連付けられたスレッドから構成され、L1キャッシュが一般に同一の半導体デバイス上の対応するCPUで構成される図10Aの構成によりミラーリングされる。従って、図2は、2つのCG、すなわち、L2キャッシュ210を共有するCPU171及びCPU181のスレッドに対するCG160、並びにL2キャッシュ220を共有するCPU172及びCPU182のスレッドに対するCG165を示す。この構成において、説明される構成の実現例は、L2キャッシュの最適化を提供する。
図1に示された各CPUは、ユニファイドキャッシュであるか、あるいは専用のデータキャッシュ及び命令キャッシュの2つの独立した物理ユニットから構成される対応する専用L1キャッシュを有する。図2は、L1キャッシュ231を有するCPU171、L1キャッシュ232を有するCPU181、L1キャッシュ233を有するCPU172及びL1キャッシュ234を有するCPU182を示す。
同様に、L2キャッシュ210及びL2キャッシュ220は、統合されるか、あるいは専用のデータキャッシュ及び命令キャッシュの物理的に独立したハードウェアユニットを有する。本発明において説明する種々の実現例において、L2キャッシュ210及び220は、物理的配列に拘らず、各々が1つの論理キャッシュユニットとして見なされる。低位メモリレベル230構成要素は、この例示的なハードウェア構成においてL3キャッシュ及び主メモリである残りの記憶階層を示す。図2の構成の一般的な実現例において、各L1キャッシュは、対応するCPUと同一の集積回路チップ上に物理的に配置され、各L2は、対応するCPUデバイスに直接物理的に接続された専用のキャッシュメモリ素子であり、L3キャッシュは、コンピュータシステム100の主半導体ランダムアクセスメモリ(RAM)内で物理的に区分された仮想場所のグループである。
図3は、エグゼクティブスレッド305構成要素及びワーカースレッド310構成要素を含む制御プログラム130の一実現例を示す。エグゼクティブスレッド305構成要素は、制御プログラム130の実行を開始及び監督する。ワーカースレッド310構成要素は、複数のスレッド(スレッド0、スレッド1、スレッド2...)を含み、エグゼクティブスレッド305構成要素により指示されたようにこれらのスレッド上でタスクを実行する。例えば、制御プログラム130がレンダリング及び合成等の関連付けられた印刷タスクを有するプリンタドライバである場合、エグゼクティブスレッド305は、レンダリング等の特定のタスク、並びに/あるいは縁端の追跡及び合成等のそれらの重要な構成要素を実現するワーカースレッド310により実行される実際の印刷処理を実施するキャッシュ管理を含むプリンタドライバの管理動作を示す。
本発明において説明する構成は、全てが特定の計算グループ(CG)内で実行するように制限される特定のスレッドに特定のタスクを一致させることに基づく。これは、スレッドとタスクとの組合せが各通話に対して同一のキャッシュメモリと実質的に関連付けられることにより、キャッシュミス率を潜在的に減少させることを提供する。
エグゼクティブスレッド305は、処理を実行するためにタスクを作成すること及び実行するためにこれらのタスクをワーカースレッド310にディスパッチすることを担うタスク生成器及びディスパッチャ335を備える。作成の際、タスクは、他の属性のうち、実行される命令の集合を識別する型(TASK_ID)、タスクが処理しているデータを識別するDATASET_ID及びタスクスケジューリング優先順位を割り当てられる。
処理メッセージ330構成要素は、制御プログラム130内で渡された全てのメッセージを処理することを担い、スケジューラ345は、実行するためにタスクをスケジュールすることを担う。スケジューラ345は、詳細に後述される機能であるタスクをスレッドに一致させることを担うタスク−スレッド選択器340を有する。
エグゼクティブスレッド305は、以下の格納構成要素、すなわちREADY_TASK_QUEUE355、AVAILABLE_THREADS_LIST360、MESSAGES315及びEXECUTION_REGISTER380を更に有する。次に、それらの各々の機能及び内容を順番に説明する。
READY_TASK_QUEUE355は、実行するためにディスパッチ可能な状態にある制御プログラム130において全てのタスクを含むキューデータ構造である。
AVAILABLE_THREADS_LIST360は、制御プログラム130に割り当てられたスレッドのアイデンティティ(ID)のリストを格納する。リスト360におけるスレッドは、現在アイドル状態である制御プログラム130と関連付けられた全てのワーカースレッド310のサブセットを示すため、タスクの実行に割り当てられない。このリスト360は、実行中のあらゆる所定の時間において制御プログラム130に対して使用可能な計算リソースを追跡するために保持される。
MESSAGES315記憶装置は、制御プログラム130の構成要素間で渡されたメッセージを格納する。各メッセージは、その目的を示すMATCH_THREAD、MATCH_TASK、START_TASK及びTASK_FINISHED等のタイプを有する。MESSAGE記憶装置315は、MATCH_THREAD又はMATCH_TASKのメッセージタイプである処理メッセージ330構成要素からタスク−スレッド選択器340に渡されるメッセージを提供する。
EXECUTION_REGISTER380は、CGにおいてスレッドの総合的な実行履歴を追跡する。図4に示されるように、記憶装置380は3つの構造を有することが好ましい。構造CG_TO_THREAD_LOOKUP_TABLE410は、多くのレコード425においてCG ID及び各CGにおけるスレッドのIDを含む。従って、テーブル410は、対応するCG、すなわち対応するキャッシュメモリと関連付けられたスレッドのサブセットを示す。レコード425は、CG IDを格納するフィールド412、そのCGにおけるスレッドの数を格納するフィールド414を有し、レコード416、418及び420における残りのフィールドは、スレッドをそのCGに格納することを示す。
EXECUTION_REGISTER380における第2の構造は、CG毎に個々のレコード445に記録されるCG毎の実行履歴を格納するEXECUTION_HISTORY440構造である。
各レコード445は、対応するCGにおいてスレッド上で最後に実行されたタスクのタスクIDを含むキューデータ構造であるTASK_HISTORY_QUEUE490を有するため、CGのタスク履歴を示す。各レコード445は、CGにおいてスレッド上で最後に実行されたタスクのデータセットIDを含むキューデータ構造であり、CGのデータ履歴を示すDATA_HISTORY_QUEUE495を更に有する。要約すれば、EXECUTION_HISTORY440構造は、最後に使用された主記憶領域を識別する情報を格納する。
レコード445のフィールド442はCG IDを格納する。フィールド446、448及び450は、TASK_HISTORY_QUEUE490の符号化を示す。フィールド454、456及び458は、DATA_HISTORY_QUEUE495の符号化を示す。フィールド444及び452は、それぞれ、TASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495におけるエントリの数を格納する。総合的にスレッドの実行履歴を示すこれらのキューの深度は、最適化されるために使用されるキャッシュのサイズ及び制御プログラム130におけるタスクの特徴の双方に依存する。制御プログラム130におけるタスクの特徴の例は、タスクの平均コードサイズ及びタスクのコードにおいて最も頻繁に実行された命令の平均サイズである。制御プログラム130におけるタスクの特徴、例えばタスクのコードサイズは、キューの深度を事前に決定するため又は制御プログラム130の実行中にキュー深度を変更するために使用される。従って、一実現例において、実行履歴は、スレッドにより実行されたタスクと関連付けられた最も一般的に実行された命令のコードサイズに依存するサイズを有する。別の実現例において、実行履歴は、スレッドにより実行されたタスクにより使用されたデータのサイズに依存するサイズを有する。そのキュー深度値は、キュー及び/又はCG毎に異なり、制御プログラム130を開始する前に設定されるかあるいは制御プログラム130の実行中に動的に変動される。CG_TO_THREAD_LOOKUP_TABLE410構造及びEXECUTION_HISTORY440構造の双方は、CG毎に1つのレコードを含む。
EXECUTION_REGISTER380における第3の構造は、スレッドに対応するレコード485において、フィールド482におけるスレッドIDからフィールド484においてスレッドが属するCGにルックアップテーブルを格納するTHREAD_TO_CG_LOOKUP_TABLE480構造である。構造480は、制御プログラム130のワーカースレッド310構成要素におけるスレッドの数であるN個のレコードを含む。構造480は、上述のテーブル410の基本的な態様を補完する。
スケジューラ345構成要素は、実行するためにタスクをスレッド上でスケジュールすることを担い、メッセージチャネル390を介してタスク生成器及びディスパッチャ335から生成されたタスクの規格を受信する。スケジューラ345は、採用されたスケジューリングアルゴリズムにより決定された順番でREADY_TASK_QUEUE355を保持する。当技術分野において既知であるあらゆる適切なスケジューリングアルゴリズムは、スケジューラ345により採用される。好適な実現例によれば、READY_TASK_QUEUE355におけるタスクは、降順のタスク優先順位で保持される。すなわち、高優先度タスクはキューの前方にあり、低優先度タスクはキューの後方にある。タスク優先順位は、タスク作成の際に割り当てられ、実行中に後で前後する。タスク−スレッド選択器340構成要素は、実行可能な状態にあるタスクをAVAILABLE_THREADS_LIST360からのスレッドと一致させる。次に、図5を参照してタスク−スレッド選択器340の機能性を詳細に説明する。
図5は、それぞれ、所定のタスクが使用可能なスレッドと一致されるか又は所定のスレッドがタスクを実行可能な状態にあるかを決定するスケジューラ345により実行された処理500を示す。最初に、MESSAGE315は、ディスパッチャ335からスケジューラ345に渡される。MATCH_THREADタイプ又はMATCH_TASKタイプのみがディスパッチャ335の処理メッセージ330構成要素からスケジューラ345のタスク−スレッド選択器340構成要素に渡されるため、MESSAGE315はこれらの2つのメッセージタイプのいずれかである。MESSAGE315は、メッセージタイプ及び一致されなければならないスレッド又はタスクを含む。例えば、(MATCH_THREAD、「0」)は、ID「0」を含むスレッドを実行可能な状態にある適切なタスクと一致させるメッセージ要求である。例えば、メッセージ要求(MATCH_TASK、[DL、7])は、要求により示された型「DL」により規定されたタスク及びスレッドにより処理されるデータセット「7」を実行するのに適したスレッドを見つける要求である。
スケジューラ345は、判断ステップ505において、MESSAGE315がMATCH_THREADタイプであるかを決定する。MESSAGE315がMATCH_THREADタイプである場合、処理500はステップ510を介して進み、MESSAGE315において渡されたスレッド上で実行するのに適したタスクを決定する。MESSAGE315がMATCH_THREADタイプではない場合、すなわちMATCH_TASKタイプである場合、処理は、MESSAGE315において渡されたタスクを実行するのに適したスレッドを選択することにより、ステップ520を介して継続する。次に、これらの2つの例を順番に説明する。
スケジューラ345は、判断ステップ505においてMESSAGE315がMATCH_THREADタイプであると決定する場合、判断ステップ510に進む。ステップ510において、スケジューラ345は、READY_TASK_QUEUE355が空であるかをチェックする。READY_TASK_QUEUE355が空である場合、スケジューラ345は、処理ステップ515に進み、ブールパラメータMATCHEDを「偽」に設定する。次にスケジューラ345は、ステップ555において、図3に示されるようにタスク又はスレッドの選択を要求したMESSAGE315への応答としてエグゼクティブスレッド305の処理メッセージ330構成要素に送出されるメッセージMATCHED_MESSAGE325を作成する。
MATCHED_MESSAGE325は、MESSAGEの値及び対(THREAD、TASK)を含む。ステップ515が生じる場合、一致が不可能であるため、所定のTHREADに対するTASKの値は、MATCHED_MESSAGE325においてヌルに設定される。処理500はステップ555で終了する。
ステップ510においてテストされるようなREADY_TASK_QUEUE355において少なくとも1つのタスクがある場合、THREADは、ステップ525においてMESSAGE315から取り出される。次に、THREAD上で実行するためのタスクは、図6を参照して詳細に後述される処理535において選択される。処理はステップ545に進む。
ステップ505においてMESSAGE315がMATCH_THREADタイプではないと処理装置150におけるスレッド305のスケジューラ345が決定する場合、処理500は、AVAILABLE_THREADS_LIST360が空であるかをスケジューラ345がチェックする判断ステップ520に継続する。AVAILABLE_THREADS_LIST360が空である場合、ブールパラメータMATCHEDは、ステップ515において「偽」に設定される。次にスケジューラ345は、ステップ555においてメッセージMATCHED_MESSAGE325を作成する。MATCHED_MESSAGE325は、タスク又はスレッドの選択を要求したMESSAGE315への応答として処理メッセージ330構成要素に送出される。この場合、再度、一致が不可能であるため、所定のTASKに対するTHREADの値はMATCHED_MESSAGE325においてヌルに設定され、処理500はステップ555で終了する。
ステップ520に戻り、少なくとも1つの使用可能なスレッドがある場合、処理は、ステップ530においてMESSAGE315からTASKを取り出すことを継続する。次にスケジューラ345は、図7A〜図7Cを参照して詳細に後述されるように、TASKを実行するためのスレッドを選択する処理540を実行する。
それぞれメッセージタイプMATCH_THREAD及びMATCH_TASKに対して実行された処理535及び540の双方は、常に結果として対(THREAD、TASK)を取得する。従って、後続のステップ545において、ブールパラメータMATCHEDは「真」に設定され、次にステップ550において、EXECUTION_REGISTER380は、EXECUTION_HISTORY440構造においてTHREADのCGに対するTASKのTASK_ID及びDATASET_IDを実行履歴キュー490及び495に追加することで更新される。TASKのTASK_ID及びDATASET_IDは、それぞれキュー490及び495の前方に追加され、他の全てのエントリは、各キューの最後のエントリ(最も古い)が削除された状態でキューの末尾へ移行される。
処理500は、MATCHED_MESSAGEがブールパラメータMATCHEDの値(ステップ545から後続する場合に値「真」を有する)及び対(THREAD、TASK)で作成されるステップ555で終了する。
図6は、所定のスレッド、すなわちTHREAD605上で実行するためにREADY_TASK_QUEUE355からタスクを選択する処理535を示す。処理535は、スケジューラ345がTHREAD605のCGの履歴を取得するステップ610から開始する。これは、THREAD_TO_CG_LOOKUP_TABLE480からTHREAD605に対するレコードにアクセスし、THREAD605が属するCGIDを特定するフィールド484を取得することで実現される。次に、EXECUTION_HISTORY440構造から、そのCGに対するTASK_HISTORY_QUEUE490から読み出されたタスク履歴及びDATA_HISTORY_QUEUE495から読み出されたデータ履歴を含む実行履歴は、ステップ610でアクセスされる。取得ステップ615において、スケジューラ345は、THREAD605上で実行するのに適したタスクが見つけられるまでREADY_TASK_QUEUE355においてエントリを繰り返す処理を開始する。ステップ615において、READY_TASK_QUEUE355の先頭から開始し、タスクTは、タスク生成器及びディスパッチャ335により取得される。ステップ617において、タスクTに対して命令の集合の重み付けwi及びデータの集合の重み付けwdを決定する。重み付けは、タスクに対する命令の再利用又はデータの再利用の重要度を決定する。この重みは種々の方法で決定される。種々の方法のうちの1つは、メモリ120に格納された制御プログラム130において全てのタスク型に対するwi及びwdの所定の値のルックアップテーブルを使用することであるが、それに限定されない。次にスケジューラ345は、判断ステップ620においてwiがwdより大きいかをチェックする。wiがwdより大きい場合、タスクTに対して命令の再利用はデータの再利用より重要であり、処理535は、TASKのTASK_IDがTHREAD605のCGのTASK_HISTORY_QUEUE490にあるかをチェックする判断ステップ625に継続する。TASKのTASK_IDがTHREAD605のCGのTASK_HISTORY_QUEUE490にある場合、タスクTは適している。ステップ645において、スケジューラ345はTASKをTに設定し、処理535が終了する。
ステップ620においてwiがwdより大きくないと決定する場合、タスクTに対して命令の再利用はデータの再利用と同様に重要ではなく、タスクTと関連付けられたDATASET_IDがTHREAD605のCGに対するDATA_HISTORY_QUEUE495にあるかをチェックするステップ630に後続する。タスクTと関連付けられたDATASET_IDがTHREAD605のCGのDATA_HISTORY_QUEUE495において見つけられる場合、タスクTは適切なタスクであり、スケジューラ345がTASKをTに設定するステップ645に後続し、処理535が終了する。
図6においてREADY_TASK_QUEUE355からタスクTを取得し、且つタスクTのTASK_ID又はDATASET_IDがTHREAD605のCGに対する実行履歴にあるかをチェックする処理は、ステップ635においてテストされたように、TASK_ID(ステップ625)又はDATASET_ID(ステップ630)を一致させるタスクが見つけられるまで、あるいはキューの後方に到達するまでREADY_TASK_QUEUE355においてタスク毎に繰り返される。
READY_TASK_QUEUE355においてこれ以上タスクがない場合、ステップ615及び635により形成された処理ループは、TASKをREADY_TASK_QUEUE355における最初のタスクに設定するステップ640に進む。キューの先頭のタスクは最も優先度の高いタスクであり、キャッシュ内容の再利用を実現できない場合、キューの先頭のタスクは実行するためにディスパッチされる。ステップ640の後、処理535は終了する。
図7Aは、所定のタスク、すなわちTASK715を実行するためにスレッドを選択する処理540を示す。処理540は、CG IDのリスト(CG_ID)が実行履歴440から作成されることでCGを形成するスレッドのサブセットの実行履歴を示すステップ705から開始する。CG_LISTにおける各エントリは、少なくとも1つの使用可能なスレッドを有する。CG_LISTを繰り返す繰返し子は、ステップ705において更に設定される。ステップ710において、スケジューラ345は、TASK715に対して命令の集合の重み付けwi及びデータの集合の重み付けwdを決定する。これは種々の方法で決定される。種々の方法のうちの1つは、制御プログラム130において全てのタスク型に対するwi及びwdの所定の値のルックアップテーブルを使用することであるが、それに限定されない。判断ステップ720は、wiがwdより大きいかをチェックする。wiがwdより大きい場合、図7Cを参照して詳細に後述するように、TASK715に対して命令の再利用はデータの再利用より重要であり、処理は処理730に継続する。
次に図7Bを参照して詳細に説明されるように、スケジューラ345がステップ720においてwiがwdより大きくないと決定する場合、TASK715に対して命令の再利用はデータの再利用と同様に重要でないため、処理は処理725に継続する。
図7B及び図7Cに示されたステップ725及び730の処理は、スレッドの実行履歴、並びにタスクと関連付けられた命令及びデータに対して決定された重み付け(wi、wd)に基づいてTASK715を実行するのに適した全てのアイドル(使用可能な)スレッドのサブセットから特定のスレッドを選択する。
図7Bは、TASK715に対してデータの再利用が命令の再利用より重要である場合にTASK715を実行するのに適したスレッドを選択する処理725を示す。従って、処理725は、TASK715と関連付けられたデータ履歴に依存し、双方がステップ705において前に作成された繰返し子を使用してスケジューラ345がCG_LISTからCG IDを取得するステップ750から開始する。次にスケジューラ345は、ステップ752においてそのCGに対するデータ履歴を取得する。これは、そのCGに対するDATA_HISTORY_QUEUE495にアクセスするためにCG IDを使用することで実現される。
処理725は、TASK715と関連付けられたDATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられるかをスケジューラ345が決定する判断ステップ754に継続する。TASK715と関連付けられたDATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられる場合、次にステップ766において、TASK715を実行するために使用されるCGから使用可能なスレッドを選択する。現在アイドル状態であるあらゆるスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。
TASK715に割り当てられたDATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられなかったことがステップ754において決定された場合、処理は判断ステップ756に進む。ステップ756において、データ履歴がまだチェックされていないCG_LISTにより多くのCGがあるかを決定する。CG_LISTにより多くのCGがある場合、TASK715のDATASET_IDがCG_LISTのCGに対するDATA_HISTORY_QUEUE495において見つけられるまで又はCG_LISTにおいてチェックすべきエントリがなくなるまでステップ750、752及び754は繰り返される。
ステップ756において決定されたようにチェックすべきエントリがこれ以上CG_LISTに残っていない場合、処理725は、現在使用可能なあらゆるスレッド上でTASK715に対してデータの再利用を実現できないため、CG_LIST繰返し子を再設定することでCG_LISTの繰り返しが最初から開始されるステップ758に進む。CG_LISTのCG IDのTASK_HISTORY_QUEUE490におけるエントリは、命令の再利用を実現することを考慮してTASK715のTASK_IDに対してチェックされる。
ステップ760において、スケジューラ345はCG_LISTからCG IDを取得する。ステップ761において、スケジューラ345は、そのグループのスレッドが実行した命令の集合に関するそのCGのタスク履歴を取得する。これは、そのCGに対するEXECUTION_HISTORY440構造においてTASK_HISTORY_QUEUE490にアクセスすることで実現される。
判断ステップ762において、スケジューラ345は、TASK715のTASK_IDがそのCGに対するTASK_HISTORY_QUEUE490において見つけられるかをチェックする。TASK715のTASK_IDがそのCGに対するTASK_HISTORY_QUEUE490において見つけられる場合を条件として、スケジューラ345は、ステップ766においてTASK715を実行するために使用されるCGに割り当てられたワーカースレッド310から使用可能なワーカースレッドを選択する。現在アイドル状態であるあらゆるスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。
ステップ762においてTASK_IDがそのCGに対するTASK_HISTORY_QUEUE490において見つけられない場合、TASK_IDがCG_LISTのCGに対するTASK_HISTORY_QUEUE490において見つけられるまで又は判断ステップ764において決定されたようにCG_LISTにおいてチェックすべきエントリがなくなるまでステップ764、760、761及び762は繰り返される。チェックすべきエントリがこれ以上残っていない場合、THREADは、ステップ768においてAVAILABLE_THREADS_LIST360で示されたサブセットにより識別されたワーカースレッド310からのあらゆるアイドルワーカースレッドに設定される。アイドルスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。処理725は、ステップ768で終了し、TASK715に対してデータの再利用が命令の再利用より重要である場合にTASK715を処理するのに適したスレッドをリスト360のサブセットから選択することを実証する。上述したように、スレッドのサブセットの選択は、スレッドの実行履歴及びタスクと関連付けられた命令の再利用又はデータの再利用に対して決定された重み付けに基づく。
図7Cは、TASK715に対して命令の再利用が重要である場合に図7Aにおいて示されたようにTASK715を実行するのに適したスレッドを選択する処理730を示す。従って、処理730は、TASK715と関連付けられた命令履歴に依存し、ステップ705において作成されたCG_LISTからCG IDを取得するステップ770から開始する。ステップ772において、そのグループのスレッドが最近実行した命令に関するそのCGに対する履歴を取得する。これは、そのCGに対するTASK_HISTORY_QUEUE490にアクセスするためにCG IDを使用することにより実現される。
処理730は、TASK715のTASK_IDがそのCGに対するTASK_HISTORY_QUEUEにおいて見つけられるかをスケジューラ345が決定する判断ステップ774に継続する。TASK715のTASK_IDがそのCGに対するTASK_HISTORY_QUEUEにおいて見つけられる場合、スケジューラ345は、ステップ786においてTASK715を実行するために使用されるCGに割り当てられたワーカースレッド310から使用可能なワーカースレッドを選択する。現在アイドル状態であるあらゆるスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。
TASK715のTASK_IDがそのCGのTASK_HISTORY_QUEUE490において見つけられない場合、処理は、命令履歴がまだチェックされていないCG_LISTにより多くのCGがあるかをスケジューラ345が決定する判断ステップ776に到達する。CG_LISTにより多くのCGがある場合、TASK715のTASK_IDがCG_LISTのCGに対するTASK_HISTORY_QUEUE490において見つけられるまで又はCG_LISTにおいてチェックすべきエントリがなくなるまでステップ770、772及び774は繰り返される。
チェックすべきエントリがこれ以上CG_LISTにない場合(判断ステップ776)、処理は、現在使用可能なあらゆるスレッド上でTASK715に対して命令の再利用を実現できないため、データを再利用しようとすることでCG_LISTの繰り返しが最初から開始されるステップ778に進む。再利用を実現するために、CG_LISTにおけるCGのDATA_HISTORY_QUEUE495は、TASK715のDATASET_IDに対してチェックされる。ステップ780において、CG_LISTからCG IDを取得する。
ステップ781において、スケジューラ345はそのCGに対するデータ履歴を取得する。これは、データ実行履歴が格納されるEXECUTION_HISTORY440構造、DATA_HISTORY_QUEUE495にアクセスするためにCG IDを使用することで実現される。
判断ステップ782において、スケジューラ345は、TASK715のDATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられるかをチェックする。TASK715のDATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられる場合、スケジューラ345は、ステップ786においてTASK715を実行するために使用される計算グループCGから使用可能なワーカースレッドを選択する。現在アイドル状態であるあらゆるスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。処理730はステップ786で終了する。
DATASET_IDがそのCGに対するDATA_HISTORY_QUEUE495において見つけられない場合、DATASET_IDがCG_LISTのCGに対するDATA_HISTORY_QUEUE495において見つけられるまで又は判断ステップ784により決定されたようにCG_LISTにおいてチェックすべきエントリがなくなるまでステップ784、780、781及び782は繰り返される。チェックすべきエントリがこれ以上残っていない場合、THREADは、ステップ788においてAVAILABLE_THREADS_LIST360からのあらゆるスレッドに設定され、処理730は終了する。AVAILABLE_THREADS_LIST360からのアイドルスレッドは、当技術分野において既知であるあらゆる負荷分散アルゴリズムを適用することを含むがそれに限定されない手段により選択される。処理730は、TASK715に対して命令の再利用が重要である場合にTASK715を処理するのに適したスレッドをAVAILABLE_THREADS_LIST360から選択することを更に実証する。同様に、AVAILABLE_THREADS_LIST360におけるスレッドのサブセットの選択は、スレッドの実行履歴及びタスクと関連付けられた命令の再利用又はデータの再利用に対して決定された重み付けに基づく。
本発明において説明する処理構成は、同一の計算グループのCPU上で実行されたタスク間でキャッシュ内容を最大限再利用するためにスレッドをタスクに適切に一致させるようにメモリ120に格納された制御プログラム130により作成及び実行されたタスクの特徴の知識を使用する。行われなければならない判断の簡潔性及び保持された限られた実行履歴により、タスク−スレッド選択器340が招くオーバヘッドを最小限にできる。
次に、図4の構造に類似する構造を示す図8を参照して3つの例を説明する。印刷システムにおいて使用されたラスタイメージプロセッサ(RIP)アプリケーションプログラムは、以下の例を説明するために使用される。RIPアプリケーションプログラムは、制御プログラム130の一部を形成する。一般にRIPは、ページの高レベルな記述を印刷記述言語(PDL)からラスタ表現に変換する必要がある。ページの高レベルPDL記述は、テキスト、ライン、フィル領域及び画像データ等のグラフィックオブジェクト、並びにこれらのグラフィックオブジェクトがラスタ表現にレンダリングされる順番を含む。この順番は、一般にzオーダーとして当技術分野において既知である。ページのラスタ表現は色画素データから構成される。次にプリンタエンジンは、一般に、ページのラスタ表現を用紙等の印刷媒体上に印刷する。ラスタ表現を生成する前、RIPは、ページの中間ページ表現を生成する。ページの中間ページ表現は、一般にラスタ表現より小型であるが、迅速かつ容易にラスタ表現に変換される。
次に、図11A〜図11Dを参照して、「フィルマップ」として既知である中間ページ表現の一例を説明する。図11Aはページ表現1100を示す。ページ1100は、白色の背景を有し、2つのグラフィックオブジェクト1101及び1102を含む。第1のグラフィックオブジェクト1101は、灰色の平坦なフィルを含む不透明な「T」形のオブジェクトである。第2のグラフィックオブジェクト1102は、陰影をつけられたフィルを含む透明な正方形である。他のフィルの例は、直線的に変動する色を表す混合、ビットマップ画像又はタイル型の(すなわち、繰り返された)画像である。第2のグラフィックオブジェクト1102は、部分的に第1のグラフィックオブジェクト1101に重複する。
図11Bは、画素格子1120に従ってページ1100のグラフィックオブジェクト1101及び1102を画素整列ラフィックオブジェクトの縁端、レベル、並びにフィルに分解することを示す。グラフィックオブジェクトは、2つ以上の画素整列オブジェクトの縁端、単一のレベル及び1つ以上のフィルに分解される。画素整列グラフィックオブジェクトの縁端は、ラスタ化中のレベルの起動又は停止を規定する。従って、画素整列グラフィックオブジェクトの縁端は、それらが導出されるオブジェクトのレベルを示す。第1のグラフィックオブジェクト1101は、2つの画素整列グラフィックオブジェクトの縁端1121及び1122、並びに灰色の平坦なフィルから構成されるレベル1132に分解される。画素整列グラフィックオブジェクトの縁端1121及び1122は、第1のグラフィックオブジェクト1101のレベル1132を示す。第2のグラフィックオブジェクト1102は、2つの画素整列グラフィックオブジェクトの縁端1123及び1124、並びに透明な陰影をつけられたフィルから構成されるレベル1133に分解される。画素整列グラフィックオブジェクトの縁端1123及び1124は、第2のグラフィックオブジェクト1102のレベル1133を示す。背景1125は、白色のフィルから構成されるレベル1131を有する。
図11Cは、図11Aに示されたページ1100のフィルマップ表現1140を示す。フィルマップ表現1140は、5つの画素整列フィルマップの縁端から構成される。画素整列フィルマップの縁端の各々は、その画素整列フィルマップの縁端により起動された各画素の色を決定するために使用されるフィルシーケンスを示す。画素整列フィルマップの縁端がアクティブである所定のあらゆる走査線上において、画素整列フィルマップの縁端は、次の画素整列フィルマップの縁端又はページ境界に遭遇するまで画素整列フィルマップの縁端のすぐ右にある画素を起動する。第1の画素整列フィルマップの縁端1141は、ページの左手の境界を追跡し、背景フィルを使用して充填される単一の不透明なレベルを含むフィルシーケンス1151を示す。第2の画素整列フィルマップの縁端1142は、第1のグラフィックオブジェクト1101の左手の境界を追跡し、不透明であり且つ灰色の平坦なフィルを使用して充填される単一のレベルを含むフィルシーケンス1152を示す。第3の画素整列フィルマップの縁端1143は、第1の画素整列フィルマップの縁端1141と同一のフィルシーケンス1151を示す。第4の画素整列フィルマップの縁端1144は、第2のオブジェクト1102が白色の背景に重複する領域の左手の境界を追跡する。第4の画素整列フィルマップの縁端1144は、2つのレベルを含むフィルシーケンス1154を示す。一番上のレベルは、透明であり、陰影をつけられたフィルを使用して充填される。一番下のレベルは、不透明であり、背景フィルを使用して充填される。第5の画素整列フィルマップの縁端145は、第2のグラフィックオブジェクト1102が第1のグラフィックオブジェクト1101に重複する領域の左手の境界を追跡する。第5の画素整列フィルマップの縁端1145は、2つのレベルを含むフィルシーケンス1153を示す。一番上のレベルは、透明であり、陰影をつけられたフィルを使用して充填される。一番下のレベルは、不透明であり、灰色の平坦なフィルを使用して充填される。
ページのフィルマップ表現1140に含まれた画素整列フィルマップの縁端により示されたフィルシーケンス1151、1152、1153及び1154を含むフィルシーケンスのテーブルは、ページのフィルマップ表現1140を伴う。
図11Dは、図11Aに示されたページのタイル型のフィルマップ表現1160を示す。タイル型のフィルマップは、4つのタイル1165、1170、1175及び1180を含む。各タイルは、8個の画素の高さ及び幅を有する。ページのタイル型のフィルマップ表現1160を生成するために、元のフィルマップ表現1140の画素整列フィルマップの縁端は、フィルマップタイル境界にわたり分裂されている。例えば、図11Cに示された非タイル型のフィルマップ表現1140においてページの左手の境界を追跡する画素整列フィルマップの縁端1141は、2つの画素整列フィルマップの縁端1166及び1176に分割されている。第1の画素整列フィルマップの縁端1166は、左上のタイル1165の画素を起動し、第2の画素整列フィルマップの縁端1176は、左下のタイル1175の画素を起動する。また、新しい画素整列フィルマップの縁端は、画素が常駐するタイルの左に対してタイルにおいて画素整列フィルマップの縁端により前に起動された各タイルの最も左の画素を起動するようにタイル境界上に挿入されている。例えば、右上のタイル1170において、新しい画素整列フィルマップの縁端1171は、図11Cに示された元のフィルマップ表現1140において第1のグラフィックオブジェクト1101の左手の境界を追跡する画素整列フィルマップの縁端1142により起動された画素を起動するように挿入されている。
以下の例を説明するために使用されたRIPアプリケーションは、4つの型のタスク、すなわち表示リスト生成(DL)、フィルマップ生成(FG)、フィルマップマージング(FM)及びフィルマップレンダリング(FR)から構成される。DLタスクは、PDL文書からzオーダーのグラフィックオブジェクトのシーケンスを読み出し、表示リストを作成する。一般に表示リストは、グラフィックオブジェクトのyソートリストから構成され、一般に当技術分野において既知である。印刷される所定のページに対して、いくつかのDLタスクは、zオーダーのグラフィックオブジェクトの種々のシーケンスを処理する必要がある。各シーケンスはz帯として既知であり、そのようなシーケンスに対してDLタスクにより生成された表示リストは、z帯表示リストとして既知である。z帯表示リスト毎に、FGタスクは、z帯フィルマップとして既知であるフィルマップ表現を生成する。図11A〜図11Dを参照してフィルマップ表現を上述した。FMタスクは、2つ以上のz帯フィルマップを受信し、それらを単一のフィルマップにマージする。より多くのz帯フィルマップがページに対して残っている場合、更なるFMタスクは、z帯フィルマップをマージする必要がある。マージすべきz帯フィルマップがこれ以上残っていない場合、FMタスクにより生成されたフィルマップは、ページ上に全てのグラフィックオブジェクトを示す。次にFRタスクは、フィルマップを印刷可能な状態にあるラスタ表現に変換するために使用される。
図8は、制御プログラム130の実行中の所定の時間におけるEXECUTION_REGISTER380の状態800を示す。図8に示された例において、第1の構造820に示されたようにEXECUTION_REGISTER380のCG_TO_THREAD_LOOKUP_TABLEの例を示す2つのCG、すなわちCG0(821)及びCG1(822)がある。CG0821は2つのスレッド(フィールド823に示されたような)を含み、CG1は2つのスレッド(フィールド824に示されたような)を更に含む。フィールド825及び826にそれぞれ示されるように、CG0は、スレッド「0」及びスレッド「1」を含む。フィールド827及び828にそれぞれ示されるように、CG1は、スレッド「2」及びスレッド「3」を含む。
EXECUTION_REGISTER380の第2の構造840は、CG0及びCG1のEXECUTION_HISTORYテーブルの例を含む。CG0(821)に対するTASK_HISTORY_QUEUE860は、フィールド842〜844に示された3つのエントリ(フィールド841において特定されたような)を有する。CG0(821)のDATA_HISTORY_QUEUE861は、フィールド846〜848に示された3つのエントリ(フィールド845において特定されたような)を有する。CG1(822)に対するTASK_HISTORY_QUEUE862は、フィールド852〜854に示された3つのエントリ(フィールド851において特定されたような)を有する。CG1(822)に対するDATA_HISTORY_QUEUE863は、フィールド856〜858に示された3つのエントリ(フィールド855において特定されたような)を有する。
図4を参照して上述したように、TASK_HISTORY_QUEUEは、各計算グループ上で実行されたタスク型の履歴を含む。従って、TASK_HISTORY_QUEUE860及び862は、RIPアプリケーションの例において4つのタスク型に対応するDL、FG、FM又はFR(FRはこの例において示されない)である値を含む。これらの値は、潜在的に将来のタスクにより再利用されるキャッシュされた命令を示す。同様に、DATA_HISTORY_QUEUEは、各計算グループ上で実行されたタスクにより使用されたデータの履歴を含む。RIPアプリケーションの例において、所定のタスクに対して処理されているページの数は、処理されているデータを示す。従って、DATA_HISTORY_QUEUE861及び863はページ数を含む。ページの数は、潜在的に将来のタスクにより再利用されるキャッシュされたデータを示す。
後続の例において、EXECUTION_REGISTER380の一部を形成する重み行列890は、所定のタスクを処理する場合に命令及びデータの相対的な重要度を決定するために使用される。命令及びデータの相対的な重要度は、所定のタスクを実行するのに適したスレッド又は所定のスレッド上で実行されるのに適したタスクを選択するために使用される。以下の例において使用された重みを図8の重み行列890において示す。実行される4つの型のタスク、すなわちDL(891)、FG(892)、FM(893)及びFR(894)があり、wi及びwdの値は、重み行列890においてタスク型毎に与えられたタスクに依存することが好ましい。重み行列890における重みは、制御プログラム130の前の実行において取得された履歴データを解析すること及びプログラムコードの複雑性の解析等の種々の方法で決定される。換言すると、重み付けは、スレッドのサブセットの実行履歴に基づいて決定される。別の実現例において、重み付けは、タスクの知識に基づいて事前に決定され、メモリ120のルックアップテーブルに格納される。
RIPアプリケーションの例において、DL(表示リスト生成)タスクは、命令の適切に規定されたシーケンスを実行し、各DLタスクは、グラフィックオブジェクトの別個のシーケンスを処理する。従って、DLタスクの場合、wiはwdより高い値を与えられる。データの別個のz帯を更に処理するFG(フィルマップ生成)タスクに対して、同一の推論が適用可能である。また、RIPアプリケーションの例において、FGタスクは、通常DLタスクに対して別個のスレッド上で実行されるため、DLタスクにより生成された表示リストデータを利用できないことが多い。従って、FGタスクの場合、wiはwdより高い値を更に与えられる。FM(フィルマップマージング)タスクは、多数のFGタスクにより生成されたフィルマップデータを受信する。このフィルマップデータが大量のメモリを消費するため、可能な場合は常にキャッシュに格納されたフィルマップデータを再利用することが有益である。従って、FMタスクの場合、wdはwiより高い値を与えられる。各FR(フィルマップレンダリング)タスクは、印刷されている別個のページからのフィルマップを処理する。従って、FRタスク間でのデータの再利用の機会は殆どない。従って、FRタスクの場合、wiはwdより高い値を与えられる。命令の再利用及びデータの再利用に対してタスク及びそれらの挙動のこのような知識を有することは、重み付けがタスク型に基づくことを意味する。
例1
次に、所定のスレッドに対してタスクを選択する一例を説明する。タスク[DL、6]を処理した後にスレッド「0」が使用可能になったと仮定する。タスク[FM、2]は、降順の優先順位で配置されて実行可能な状態にある他のタスクが後続したREADY_TASK_QUEUE355の先頭にある。READY_TASK_QUEUE355の状態は以下の通りである。
[FM、2][DL、7][DL、8][FG、3][FG、4][FG、5]
図3を参照して上述したように、MESSAGE315はタスク−スレッド選択器340に送出される。例1において、MESSAGE315は、MATCH_THREADタイプであり、スレッドID「0」(825)を含む。従って、図6を参照して上述した処理535が実行されることにより、スレッド「0」上で実行するのに適したタスクをREADY_TASK_QUEUE355から選択する。スレッド「0」のCGがCG0(821)であるため、CG0の実行履歴は、スレッド「0」上で実行すべきタスクを決定するために使用される。
スケジューラ345は、処理535において、READY_TASK_QUEUE355からこの例においてはタスク[FM、2]である第1のタスクを選択する。タスクのFM型であるため、重み行列890に従って、タスク[FM、2]は、wi=5及びwd=10を有する。これは、タスク[FM、2]に対してデータの再利用が命令の再利用より重要であることを意味する。
従って、処理535は、DATASET_ID=2がステップ630においてDATA_HISTORY_QUEUE861にあるかを決定する。DATA_HISTORY_QUEUE861は、DATASET_ID=2を含まない。従って、処理535は、例1においてはタスク[DL、7]であるREADY_TASK_QUEUE355において次のタスクに進む。
タスク[DL、7]は、DL型であり、重み行列890に従ってwi=10及びwd=5を有する。これは、DLタスク型に対して命令の再利用より重要であることを意味する。従って、処理535は、ステップ625においてTASK_ID=DLがスレッド「0」のCG0のTASK_HISTORY_QUEUE860にあるかを決定する。スレッド「0」CG0のTASK_HISTORY_QUEUE860は、TASK_ID=DLを含む。従って、処理535は、タスク[DL、7]がスレッド「0」により実行されるのに適していると決定する。処理535は終了し、ブールパラメータMATCHEDが「真」に設定されるステップ545、EXECUTION_REGISTER380におけるCG0の実行履歴が更新されるステップ550、並びにMATCHEDの値及びスレッド−タスク対(「0」、[DL、7])を含むMATCHED_MESSAGEが作成されるステップ555が実行される。
例2
次に、所定のタスクに対するスレッドを選択する一例を説明する。実行されるタスク[FM、2]に対して要求されると仮定する。AVAILABLE_THREADS_LIST360の状態は以下の通りである。
{「0」、「3」}
図3を参照して上述したように、MESSAGE315はタスク−スレッド選択器340に送出される。例2において、MESSAGE315は、タスク[FM、2]に対するMATCH_TASKタイプである。従って、図7Aを参照して上述した処理540が実行されることにより、タスク[FM、2]を実行するのに適したスレッドをAVAILABLE_THREADS_LIST360から選択する。双方のCGが少なくとも1つのアイドルスレッドを有するため、ステップ705において作成されたCG_LISTは、{CG0、CG1}である。
タスク[FM、2]はFM型であり、重み行列890に従って、wi=5及びwd=10を有する。これは、タスク[FM、2]に対してデータの再利用がより重要であることを意味する。従って、処理540はデータの再利用に対するスレッドを選択する。従って、図7Bを参照して上述した処理725が実行される。
処理725は、使用可能なスレッドを含むCGのリスト、すなわちCG_LISTからこの例においてはCG0である第1のCGを選択する。データの再利用が処理725の目的であるため、処理725は、タスク[FM、2]と関連付けられたDATASET_ID=2がCG0のDATA_HISTORY_QUEUE861にあるかを決定する。TASK_HISTORY_QUEUE860は「FM」を含むが、DATA_HISTORY_QUEUE861はDATASET_ID=2を含まない。従って、処理725は、CG_LISTにおいて使用可能なスレッドを含む例2においてはCG1である次のCGに進む。
DATA_HISTORY_QUEUE863は、DATASET_ID=2を含む。従って、スケジューラ345は、処理725においてCG1から使用可能なスレッドがタスク[FM、2]を実行するのに適しているかを決定する。処理725は、CG1から使用可能なスレッド「3」を選択する。次に、ブールパラメータMATCHEDが「真」に設定されるステップ545、EXECUTION_REGISTER380におけるCG1の実行履歴が更新されるステップ550、並びにMATCHEDの値及びスレッド−タスク対(「3」、[FM、2])を含むMATCHED_MESSAGEが作成されるステップ555が実行される。
例3
次に、所定のスレッドを選択する別の例を説明する。例3は、所定のタスクに対して命令の再利用が重要である場合の例を示すが、いずれの使用可能なスレッドによっても満たされない。タスク[FR、1]が実行されるのを待っていると仮定する。AVAILABLE_THREADS_LIST360の状態は以下の通りである。
{「0」、「3」}
図3を参照して上述したように、MESSAGE315はタスク−スレッド選択器340に送出される。この例において、MESSAGE315は、タスク[FR、1]に対するMATCH_TASKタイプである。従って、図7Aを参照して上述した処理540が実行されることにより、タスク[FR、1]を実行するのに適したスレッドをAVAILABLE_THREADS_LIST360から選択する。双方のCGが少なくとも1つのアイドルスレッド、すなわち使用可能なスレッドを有するため、ステップ705において作成されたCG_LISTは{CG0、CG1}である。
タスク[FM、1]はFM型であり、重み行列890に従って、wi=10及びwd=5を有する。これは、[FR、1]に対して命令の再利用がより重要であることを意味する。従って、処理540は、命令の再利用に対するスレッドを選択することを判断する。従って、図7Cを参照して上述した処理730が実行される。
スケジューラ345は、処理730において使用可能なスレッドを含むCGのリスト、すなわちCG_LISTからこの例においてはCG0である第1のCGを選択する。命令の再利用が処理730の目的であるため、処理730は、タスク[FR、1]と関連付けられたTASK_ID=FRがCG0のTASK_HISTORY_QUEUE860において見つけられるかを決定する。TASK_HISTORY_QUEUE860はTASK_ID=FRを含まない。従って、処理730は、CG_LISTにおいて使用可能なスレッドを含む本発明の例においてはCG1である次のCGに進む。処理730は、CG1と関連付けられたTASK_HISTORY_QUEUE860がTASK_ID=FRを含まないことを更に決定する。従って、処理730は、データの再利用に対して適切なスレッドを見つけることに進む。
処理730は、タスク[FR、1]と関連付けられたDATASET_ID=1がCG0のDATA_HISTORY_QUEUE861にあるかを決定する。DATA_HISTORY_QUEUE861は、DATASET_ID=1を含む。従って、処理730は、CG0からの使用可能なスレッドがタスク[FR、1]を実行するのに適していると決定する。処理730は、CG0からスレッド「0」を選択する。その後、スレッド「0」はタスク[FR、1]の実行に進む。
次に、ブールパラメータMATCHEDが「真」に設定されるステップ545、EXECUTION_REGISTER380におけるCG0の実行履歴が更新されるステップ550、並びにMATCHEDの値及びスレッド−タスク対(「0」、[FR、1])を含むMATCHED_MESSAGEが作成されるステップ555が実行される。
次に、図9に示されるように所定のTHREAD上で実行するのに適したタスクを選択する処理900を参照して、別の実現例を説明する。処理900は、図6に示されたような処理535の代わりに使用されてもよい。この実現例において、EXECUTION_HISTORY440構造に保持された命令及びデータの履歴は、TASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495の2つのキューにおけるより最近のものでない項目の前にチェックされたTHREAD905のCGに対するこれらの双方のキューにおけるより最近の項目と組み合わされる。
処理900は、THREAD905のCGに対するTASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495から作成されたリスト構造COMBINED_HISTORYを使用する。リスト構造は、一般にシーケンスのタプルをタプルのシーケンスにマッピングするコンボリューション(又はジップ)として当技術分野において既知である処理において形成される。この場合、TASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495のそれぞれの項目Hi及びHdは、COMBINED_HISTORYリストに保持された対のシーケンスを形成する。履歴キューが他のキューより短い場合、他のキューからの相対物を有さないエントリは、値ヌルと対にされる。例えば、そのCGに対してTASK_HISTORY_QUEUE490が3つのエントリを有し、DATA_HISTORY_QUEUE495が5つのエントリを有する場合、所定のCGに対するCOMBINED_HISTORYリストは以下のように見える。
{(DL、6)、(DL、5)、(DL、4)、(Null、3)、(Null、2)}
次に、処理900を説明する。処理900は、スケジューラ345がTHREAD905のCGの履歴を取得し、そのCGに対するCOMBINED_HISTORYリストを作成したステップ910から開始する。これは、THREAD_TO_CG_LOOKUP_TABLE480からTHREAD905に対するレコードにアクセスし、THREAD905が属し、その後格納されるCG IDフィールド484を取得することで実現される。次に、EXECUTION_HISTORY440構造において、そのCGに対するTASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495を含む実行履歴がアクセスされ、対のCOMBINED_HISTORYリストが上述したように作成される。ステップ912において、履歴エントリの第1の対(Hi、Hd)を取得することでCOMBINED_HISTORYリストのエントリを繰り返す処理が開始する。
ステップ915において、スケジューラ345は、THREAD605上で実行するのに適したタスクが見つけられるまでREADY_TASK_QUEUE355においてエントリを繰り返す処理を開始する。ステップ915において、READY_TASK_QUEUE355の先頭から開始し、タスクTを取得する。ステップ917において、スケジューラ345は、タスクTに対して重みwi及びwdを決定する。この重みは種々の方法で決定される。種々の方法のうちの1つは、制御プログラム130において全てのタスク型に対するwi及びwdの所定の値のルックアップテーブルを使用することであるが、それに限定されない。判断ステップ920において、スケジューラ345はwiがwdより大きいかをチェックする。wiがwdより大きい場合、タスクTに対して命令の再利用はデータの再利用より重要であり、処理は、TASKのTASK_IDがステップ912において取得した履歴エントリの対(Hi、Hd)からのタスク型Hiと同一であるかをチェックする判断ステップ925に継続する。TASKのTASK_IDがステップ912において取得された履歴エントリの対(Hi、Hd)からのタスク型Hiと同一である場合、タスクTは適切であるため、ステップ945においてTASKをTに設定し、処理900が終了する。
ステップ920において、wiがwdより大きくないとスケジューラ345が決定する場合、タスクTに対して命令の再利用はデータの再利用と同様に重要ではなく、ステップ930において、タスクTと関連付けられたDATASET_IDがステップ912において取得された履歴エントリの対(Hi、Hd)からのDATASET_ID=Hdと同一であるかをチェックする。タスクTと関連付けられたDATASET_IDがステップ912において取得された履歴エントリの対(Hi、Hd)からのDATASET_ID=Hdと同一である場合、タスクTは適切なタスクであるため、ステップ945においてTASKをTに設定し、処理900が終了する。
READY_TASK_QUEUE355からタスクTを取得し、且つTASK_ID又はDATASET_IDがCOMBINED_HISTORYリストにあるかをチェックする処理は、ステップ935においてテストされたように、Hi又はHdを一致させるタスクが見つけられるまで、あるいはキューの後方に到達するまでREADY_TASK_QUEUE355においてタスク毎に繰り返される。
チェック、判断ステップ935において決定すべきタスクがこれ以上READY_TASK_QUEUE355にない場合、スケジューラ345がまだチェックされていないより多くのエントリがCOMBINED_HISTORYリストにあるかをチェックするステップ937に進む。まだチェックされていないより多くのエントリがCOMBINED_HISTORYリストにある場合、ステップ936において、COMBINED_HISTORYリストにおける次のエントリに対する適合性に対して最初からREAD_TASK_QUEUE355におけるタスクをチェックし始めるためにREADY_TASK_QUEUE355繰返し子を再設定する。その後処理は、履歴エントリの次の対がCOMBINED_HISTORYリストから取得されるステップ912に戻る。
判断ステップ937において、チェックすべきエントリがこれ以上COMBINED_HISTORYリストにないとスケジューラ345が決定する場合、処理900は、TASKをREADY_TASK_QUEUE355における第1のタスクに設定するステップ940に進む。キューの先頭のタスクは最も優先度の高いタスクであり、キャッシュ内容の再利用を実現できない場合、READY_TASK_QUEUE355における第1のタスクは、実行するためにディスパッチされたタスクである。処理900はステップ940で終了する。
実行履歴キューTASK_HISTORY_QUEUE490及びDATA_HISTORY_QUEUE495、並びにREADY_TASK_QUEUE355において双方のエントリを繰り返す複雑性が増加したことによる何らかの余分なオーバヘッドを含むキャッシュ内容の再利用の機会を改善するために、処理900は、図5の処理535の代わりに使用されてもよい。
説明した構成は、コンピュータ産業及びデータ処理産業、並びに特にキャッシュの再利用を増進するキャッシュメモリに対して適用可能である。
上記の記述は本発明のいくつかの実施形態のみを説明し、本発明の範囲及び趣旨から逸脱せずに、変形及び/又は変更がいくつかの実施形態に対して行なわれてもよい。実施形態は、限定するものではなく例示するものである。例えば、説明した好適な構成は、各計算グループを対応するL2キャッシュと関連付けることでL2キャッシュを最適化する計算グループの動的構成に注目したが、同一の原理は、図10Bに示されたようなL3キャッシュ等の他のキャッシュレベルを最適化するために適用されてもよい。図10Bにおいて、L3最適化のためのL3キャッシュに対応する計算グループCGが形成される。

Claims (28)

  1. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを複数有する情報処理システムであって、
    前記情報処理システムにおいて動作するスレッドは、命令キャッシュおよびデータキャッシュをキャッシュメモリから取得して当該取得された命令を実行し、
    前記情報処理システムは、
    スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、
    スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を、当該スレッドによって命令キャッシュおよびデータキャッシュが取得されるキャッシュメモリごとに記憶する履歴記憶手段と、
    所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶手段によって記憶されている情報とを用いて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定し、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定する決定手段と、
    を有することを特徴とする情報処理システム。
  2. 前記決定手段は、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかの判定の結果を、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかの判定の結果に優先させて用いて、スレッドを決定し、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかの判定の結果を、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかの判定の結果に優先させて用いて、スレッドを決定する
    ことを特徴とする請求項1に記載の情報処理システム。
  3. 前記決定手段は、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかを判定し、
    当該判定によって前記所定の命令が含まれると判定された場合、前記所定の命令が含まれる履歴に対応するキャッシュメモリを利用するスレッドを、前記所定のデータを処理するための前記所定の命令を実行させるスレッドに決定し、
    当該判定によって前記所定の命令が含まれないと判定された場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかをさらに判定し、当該更なる判定の結果を用いて、スレッドを決定する
    ことを特徴とする請求項2に記載の情報処理システム。
  4. 前記決定手段は、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかを判定し、
    当該判定によって前記所定のデータが含まれると判定された場合、前記所定のデータが含まれる履歴に対応するキャッシュメモリを利用するスレッドを、前記所定のデータを処理するための前記所定の命令を実行させるスレッドに決定し、
    当該判定によって前記所定のデータが含まれないと判定された場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかをさらに判定し、当該更なる判定の結果を用いて、スレッドを決定する
    ことを特徴とする請求項2又は3に記載の情報処理システム。
  5. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを有する情報処理システムであって、
    命令キャッシュおよびデータキャッシュを前記キャッシュメモリから取得して、当該取得された命令を実行するスレッドが、前記情報処理システムにおいて動作し、
    前記情報処理システムは、
    前記スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、
    前記スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を記憶する履歴記憶手段と、
    所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶手段で記憶されている情報とに基づいて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記履歴記憶手段で記憶されている命令の履歴およびデータの履歴の少なくとも1つが、前記特定された2つの重要度によって定まる条件を満たすかを判定し、
    前記判定の結果を用いて、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させるか否かを決定する決定手段と、
    を有することを特徴とする情報処理システム。
  6. 前記決定手段は、前記判定によって前記条件が満たされると判定された場合に、前記スレッドに、前記所定のデータを処理するための前記所定の命令を、前記命令キャッシュあるいは前記データキャッシュの少なくとも1つを再利用して実行させると決定する
    ことを特徴とする請求項5に記載の情報処理システム。
  7. 前記決定手段は、前記判定によって前記条件が満たされないと判定された場合に、前記スレッドとは別のスレッドに、前記所定のデータを処理するための前記所定の命令を実行させると決定する
    ことを特徴とする請求項5又は6に記載の情報処理システム。
  8. 前記決定手段は、前記スレッドとは別のスレッドが、前記所定のデータを処理するための前記所定の命令を実行できる状態にない場合、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させると決定する
    ことを特徴とする請求項5乃至7の何れか一項に記載の情報処理システム。
  9. 命令および当該命令の処理対象のデータを記憶する、前記キャッシュメモリとは別のキャッシュメモリを有し、
    前記別のスレッドは、前記情報処理システムにおいて動作し、
    前記別のスレッドは、前記別のキャッシュメモリに記憶された命令およびデータを前記別のキャッシュメモリから取得して、当該取得された命令を実行する
    ことを特徴とする請求項7又は8に記載の情報処理システム。
  10. 前記決定手段は、
    前記特定された2つの重要度のうち命令キャッシュを再利用する重要度の方が高い場合において、前記履歴記憶手段で記憶されている命令の履歴に、前記所定の命令が含まれているか否かを判定し、含まれていると当該判定によって判定した場合に、前記条件が満たされると判定し、
    前記特定された2つの重要度のうちデータキャッシュを再利用する重要度の方が高い場合において、前記履歴記憶手段で記憶されているデータの履歴に、前記所定のデータが含まれているか否かを判定し、含まれていると当該判定によって判定した場合に、前記条件が満たされると判定する
    ことを特徴とする請求項5乃至9の何れか一項に記載の情報処理システム。
  11. 前記命令は、表示リスト生成、フィルマップ生成、フィルマップマージング、フィルマップレンダリングを含む
    ことを特徴とする請求項1乃至10の何れか一項に記載の情報処理システム。
  12. 前記重要度記憶手段によって記憶される重要度において、
    表示リスト生成の命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高く、
    フィルマップ生成の命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高く、
    フィルマップマージングの命令については、データキャッシュを再利用する重要度は、命令キャッシュを再利用する重要度よりも高く、
    フィルマップレンダリングの命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高い
    ことを特徴とする請求項11に記載の情報処理システム。
  13. 前記キャッシュメモリは、L2キャッシュメモリである
    ことを特徴とする請求項1乃至12の何れか一項に記載の情報処理システム。
  14. 前記情報処理システムは、複数のCPUを有し、
    前記情報処理システムにおいて動作するスレッドは、前記複数のCPUのうちの何れか1つのCPU上で動作し、
    各スレッドが動作するCPUは、それぞれ予め決められている
    ことを特徴とする請求項1乃至13の何れか一項に記載の情報処理システム。
  15. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを複数有する情報処理装置であって、
    前記情報処理装置において動作するスレッドは、命令キャッシュおよびデータキャッシュをキャッシュメモリから取得して当該取得された命令を実行し、
    前記情報処理装置は、
    スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、
    スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を、当該スレッドによって命令キャッシュおよびデータキャッシュが取得されるキャッシュメモリごとに記憶する履歴記憶手段と、
    所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶手段によって記憶されている情報とを用いて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定し、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定する決定手段と、
    を有することを特徴とする情報処理装置。
  16. 前記決定手段は、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかの判定の結果を、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかの判定の結果に優先させて用いて、スレッドを決定し、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかの判定の結果を、前記履歴記憶手段によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかの判定の結果に優先させて用いて、スレッドを決定する
    ことを特徴とする請求項15に記載の情報処理装置。
  17. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを有する情報処理装置であって、
    命令キャッシュおよびデータキャッシュを前記キャッシュメモリから取得して、当該取得された命令を実行するスレッドが、前記情報処理装置において動作し、
    前記情報処理装置は、
    前記スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶手段と、
    前記スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を記憶する履歴記憶手段と、
    所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶手段で記憶されている情報とに基づいて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記履歴記憶手段で記憶されている命令の履歴およびデータの履歴の少なくとも1つが、前記特定された2つの重要度によって定まる条件を満たすかを判定し、
    前記判定の結果を用いて、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させるか否かを決定する決定手段と、
    を有することを特徴とする情報処理装置。
  18. 前記決定手段は、前記判定によって前記条件が満たされると判定された場合に、前記スレッドに、前記所定のデータを処理するための前記所定の命令を、前記キャッシュメモリに既に記憶されている命令あるいはデータの少なくとも1つを再利用して実行させると決定する
    ことを特徴とする請求項17に記載の情報処理装置。
  19. 前記決定手段は、前記判定によって前記条件が満たされないと判定された場合に、前記スレッドとは別のスレッドに、前記所定のデータを処理するための前記所定の命令を実行させると決定する
    ことを特徴とする請求項17又は18に記載の情報処理装置。
  20. 前記決定手段は、前記スレッドとは別のスレッドが、前記所定のデータを処理するための前記所定の命令を実行できる状態にない場合、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させると決定する
    ことを特徴とする請求項17乃至19の何れか一項に記載の情報処理装置。
  21. 命令および当該命令の処理対象のデータを記憶する、前記キャッシュメモリとは別のキャッシュメモリを有し、
    前記別のスレッドは、前記情報処理装置において動作し、
    前記別のスレッドは、前記別のキャッシュメモリに記憶された命令およびデータを前記別のキャッシュメモリから取得して、当該取得された命令を実行する
    ことを特徴とする請求項19又は20に記載の情報処理装置。
  22. 前記命令は、表示リスト生成、フィルマップ生成、フィルマップマージング、フィルマップレンダリングを含む
    ことを特徴とする請求項15乃至21の何れか一項に記載の情報処理装置。
  23. 前記重要度記憶手段によって記憶される重要度において、
    表示リスト生成の命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高く、
    フィルマップ生成の命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高く、
    フィルマップマージングの命令については、データキャッシュを再利用する重要度は、命令キャッシュを再利用する重要度よりも高く、
    フィルマップレンダリングの命令については、命令キャッシュを再利用する重要度は、データキャッシュを再利用する重要度よりも高い
    ことを特徴とする請求項22に記載の情報処理装置。
  24. 前記キャッシュメモリは、L2キャッシュメモリである
    ことを特徴とする請求項15乃至23の何れか一項に記載の情報処理装置。
  25. 前記情報処理装置は、複数のCPUを有し、
    前記情報処理装置において動作するスレッドは、前記複数のCPUのうちの何れか1つのCPU上で動作し、
    各スレッドが動作するCPUは、それぞれ予め決められている
    ことを特徴とする請求項15乃至24の何れか一項に記載の情報処理装置。
  26. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを複数用いた情報処理方法であって、
    スレッドが、命令キャッシュおよびデータキャッシュをキャッシュメモリから取得して当該取得された命令を実行し、
    重要度記憶手段が、スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶工程と、
    履歴記憶手段が、スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を、当該スレッドによって命令キャッシュおよびデータキャッシュが取得されるキャッシュメモリごとに記憶する履歴記憶工程と、
    決定手段が、所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶工程によって記憶されている情報とを用いて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記特定された2つの重要度のうち、前記所定の命令の命令キャッシュを再利用する重要度のほうが高い場合、前記履歴記憶工程によってキャッシュメモリごとに記憶されている前記命令の履歴に前記所定の命令が含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定し、
    前記特定された2つの重要度のうち、前記所定のデータのデータキャッシュを再利用する重要度のほうが高い場合、前記履歴記憶工程によってキャッシュメモリごとに記憶されている前記データの履歴に前記所定のデータが含まれるかどうかを判定し、当該判定の結果を用いて、前記所定のデータを処理するための前記所定の命令を実行させるスレッドを決定する決定工程と、
    を有することを特徴とする情報処理方法。
  27. 命令および当該命令の処理対象のデータのそれぞれを命令キャッシュおよびデータキャッシュとして記憶するキャッシュメモリを用いる情報処理方法であって、
    スレッドが、命令キャッシュおよびデータキャッシュを前記キャッシュメモリから取得して、当該取得された命令を実行し、
    重要度記憶手段が、前記スレッドによって実行されうる命令の種類ごとに、命令キャッシュおよびデータキャッシュを命令の実行において再利用するそれぞれの重要度に関する情報を記憶する重要度記憶工程と、
    履歴記憶手段が、前記スレッドが実行した命令の履歴および当該命令の処理対象となったデータの履歴を記憶する履歴記憶工程と、
    決定手段が、所定のデータを処理するために所定の命令が実行される場合に、
    前記所定の命令の種類と、前記重要度記憶工程で記憶されている情報とに基づいて、前記所定の命令の命令キャッシュを再利用する重要度と、前記所定のデータのデータキャッシュを再利用する重要度とを特定し、
    前記履歴記憶工程で記憶されている命令の履歴およびデータの履歴の少なくとも1つが、前記特定された2つの重要度によって定まる条件を満たすかを判定し、
    前記判定の結果を用いて、前記スレッドに前記所定のデータを処理するための前記所定の命令を実行させるか否かを決定する決定工程と、
    を有することを特徴とする情報処理方法。
  28. コンピュータを、請求項1乃至14の何れか一項に記載の各手段として機能させるためのプログラム。
JP2012181172A 2011-08-19 2012-08-17 アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用 Active JP5462915B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2011213795 2011-08-19
AU2011213795A AU2011213795A1 (en) 2011-08-19 2011-08-19 Efficient cache reuse through application determined scheduling

Publications (2)

Publication Number Publication Date
JP2013047950A JP2013047950A (ja) 2013-03-07
JP5462915B2 true JP5462915B2 (ja) 2014-04-02

Family

ID=47713607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012181172A Active JP5462915B2 (ja) 2011-08-19 2012-08-17 アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用

Country Status (3)

Country Link
US (1) US9015722B2 (ja)
JP (1) JP5462915B2 (ja)
AU (1) AU2011213795A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI497419B (zh) * 2011-10-20 2015-08-21 Via Tech Inc 電腦裝置及其中斷任務分配方法
US9158591B2 (en) 2012-10-24 2015-10-13 Metric Holdings, Llc System and method for controlled sharing of consumable resources in a computer cluster
US9491114B2 (en) * 2012-10-24 2016-11-08 Messageone, Inc. System and method for optimizing resource utilization in a clustered or cloud environment
GB2507758A (en) * 2012-11-08 2014-05-14 Ibm Cache hierarchy with first and second level instruction and data caches and a third level unified cache
GB2507759A (en) 2012-11-08 2014-05-14 Ibm Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
AU2012258437A1 (en) * 2012-11-30 2014-06-19 Canon Kabushiki Kaisha Method, apparatus and system for determining a merged intermediate representation of a page
CN104995603A (zh) * 2013-11-14 2015-10-21 联发科技股份有限公司 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质
AU2013273660A1 (en) * 2013-12-18 2015-07-02 Canon Kabushiki Kaisha Method, apparatus and system for generating an intermediate region-based representation of a document
US10241654B2 (en) * 2013-12-20 2019-03-26 Dassault Systemes Americas Corp. Computer method and apparatus for automated scheduling
CN107615247A (zh) * 2015-06-24 2018-01-19 株式会社日立制作所 分布式系统
JP2017162342A (ja) * 2016-03-11 2017-09-14 富士通株式会社 データ蓄積判定プログラム、データ蓄積判定方法、及びデータ蓄積判定装置
CN107680028B (zh) * 2016-08-01 2020-04-21 北京百度网讯科技有限公司 用于缩放图像的处理器和方法
US10204060B2 (en) 2016-09-13 2019-02-12 International Business Machines Corporation Determining memory access categories to use to assign tasks to processor cores to execute
US10169248B2 (en) 2016-09-13 2019-01-01 International Business Machines Corporation Determining cores to assign to cache hostile tasks
US10152349B1 (en) * 2016-09-27 2018-12-11 Juniper Networks, Inc. Kernel scheduling based on precedence constraints and/or artificial intelligence techniques
JP6834402B2 (ja) * 2016-11-24 2021-02-24 株式会社リコー 情報処理装置、情報処理システム、情報処理方法、及びプログラム
CN109725995B (zh) * 2018-06-15 2024-04-12 中国平安人寿保险股份有限公司 数据抽取任务执行方法、装置、设备及可读存储介质
US20190253357A1 (en) * 2018-10-15 2019-08-15 Intel Corporation Load balancing based on packet processing loads
JP2021043654A (ja) 2019-09-10 2021-03-18 富士通株式会社 情報処理装置及びプロセス配置決定プログラム
US11079984B2 (en) * 2019-09-30 2021-08-03 Ricoh Company, Ltd. Image processing mechanism
CN111736998A (zh) * 2020-06-18 2020-10-02 上海商汤智能科技有限公司 内存管理方法和相关产品
US11847074B2 (en) * 2020-11-02 2023-12-19 Honeywell International Inc. Input/output device operational modes for a system with memory pools
CN114579269A (zh) * 2022-02-08 2022-06-03 阿里巴巴(中国)有限公司 任务调度方法及装置
CN116627865B (zh) * 2023-04-26 2024-02-06 安庆师范大学 具有多个存储装置的计算机的访问方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0484243A (ja) * 1990-07-26 1992-03-17 Nec Corp キャッシュメモリのデータ配置制御方式
US5317738A (en) 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
US5287508A (en) 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
JP2004086921A (ja) * 1995-02-24 2004-03-18 Matsushita Electric Ind Co Ltd マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
US6069705A (en) 1996-10-07 2000-05-30 Texas Instruments Incorporated Managing interpreter cofunctions on multiprocessor-based printer
US6269390B1 (en) 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
JPH11259318A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式
JPWO2002069150A1 (ja) * 2001-02-27 2004-07-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation マイクロプロセッサ及び命令実行順序スケジューリング方法

Also Published As

Publication number Publication date
AU2011213795A1 (en) 2013-03-07
US9015722B2 (en) 2015-04-21
US20130047162A1 (en) 2013-02-21
JP2013047950A (ja) 2013-03-07

Similar Documents

Publication Publication Date Title
JP5462915B2 (ja) アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用
US10761957B2 (en) Optimization of operating system and virtual machine monitor memory management
US9946641B2 (en) Memory management model and interface for new applications
JP4896376B2 (ja) コプロセッサの性能を強化するシステムおよび方法
US9558040B2 (en) Memory manager with enhanced application metadata
JP5335743B2 (ja) タスクのスケジューリングを支援する装置
US7093258B1 (en) Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system
CN102365625B (zh) 用于虚拟机的虚拟非一致存储器体系结构
US20070124568A1 (en) Digital data processing apparatus having asymmetric hardware multithreading support for different threads
KR101976221B1 (ko) 수정되지 않은 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
US9250848B2 (en) Dynamically adjusting the complexity of worker tasks in a multi-threaded application
CN102985910A (zh) 对无用存储单元收集的gpu支持
CN109478136A (zh) 使用虚拟向量寄存器文件的系统和方法
US11755370B2 (en) System and method of scheduling and computing resource allocation optimization of machine learning flows
US7761873B2 (en) User-space resource management
CN116762068A (zh) 地址映射感知任务分配机制
US20230024130A1 (en) Workload aware virtual processing units
CN115934590A (zh) 电路和方法
US11226819B2 (en) Selective prefetching in multithreaded processing units
US20240202862A1 (en) Graphics and compute api extension for cache auto tiling
KR20040074628A (ko) 코프로세서의 성능을 개선하기 위한 시스템 및 방법
CN114119337A (zh) 处理图形处理器中的工作负荷的方法和图形处理设备
Lüdtke et al. Cache-Related Performance Analysis Using Rogue Wave Software’s ThreadSpotter
Choffnes et al. Operating Systems
Pellizzoni et al. Predictable and Parallel Execution of Real-Time Applications on Cache-Coherent Multicores

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140117

R151 Written notification of patent or utility model registration

Ref document number: 5462915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151