JP2013501298A - 異種のリソース上へのコンピュータスレッドのマッピング - Google Patents

異種のリソース上へのコンピュータスレッドのマッピング Download PDF

Info

Publication number
JP2013501298A
JP2013501298A JP2012523620A JP2012523620A JP2013501298A JP 2013501298 A JP2013501298 A JP 2013501298A JP 2012523620 A JP2012523620 A JP 2012523620A JP 2012523620 A JP2012523620 A JP 2012523620A JP 2013501298 A JP2013501298 A JP 2013501298A
Authority
JP
Japan
Prior art keywords
thread
core
processor cores
assigning
software application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012523620A
Other languages
English (en)
Other versions
JP2013501298A5 (ja
JP5487307B2 (ja
Inventor
ウルフ,アンドリュー
コンテ,トーマス,エム.
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2013501298A publication Critical patent/JP2013501298A/ja
Publication of JP2013501298A5 publication Critical patent/JP2013501298A5/ja
Application granted granted Critical
Publication of JP5487307B2 publication Critical patent/JP5487307B2/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/5044Allocation 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 hardware capabilities
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

スレッドを異種のプロセッサコア上にマッピングするための技法が一般に説明される。例示的な技法は、スレッドを1つもしくは複数の(1つもしくは複数の)事前に定義された実行特性と関連付けること、1つもしくは複数の(1つもしくは複数の)事前に定義された実行特性に基づいて、そのスレッドを1つもしくは複数の(1つもしくは複数の)異種のプロセッサコアに割り当てること、および/または(1つもしくは複数の)それぞれの割り当てられた異種のプロセッサコアによってそのスレッドを実行することを含むことが可能である。

Description

関連出願の相互参照
本出願は、参照によりその開示の全体がこれにより組み込まれている、2009年9月11日に出願された、「MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES」という表題の米国特許出願第12/557,985号の優先権を主張する。
本出願は、その開示全体が参照により本明細書に組み込まれている、Wolfe他による、2009年4月21日出願された「THREAD MAPPING IN MULTI−CORE PROCESSORS」という名称の同時係属米国特許出願第12/427,602号、Wolfe他による、2009年9月11日に出願された、「THREAD SHIFT:ALLOCATING THREADS TO CORES」という名称の米国特許出願第12/557,971号、および/またはWolfe他による、2009年9月11日に出願された、「CACHE PREFILL ON THREAD MIGRATION」という名称の同時係属米国特許出願第12/557,864号に関連し得る。
本開示は、一般に、異種のハードウェアを有するマルチコアコンピュータシステムに関し、より詳細には、マルチコアコンピュータシステム上で実行されるソフトウェアアプリケーションの実行特性(execution characteristics)に少なくとも一部基づく、異種のハードウェア上へのスレッドの効率的なマッピングに関する。
本開示は、一般に、マルチコアコンピュータ処理に関する。
詳細には、本開示は、マルチコアコンピュータシステムの異種のハードウェア上へのスレッドのマッピングに関する。
本開示の第1の態様では、一般に、異種のプロセッサコア上にスレッドをマッピングする方法を説明する。かかる方法は、スレッドを(1つまたは複数の)事前に定義された実行特性と関連付けることと、事前に定義された実行特性に少なくとも一部基づいて、そのスレッドを(1つまたは複数の)異種のプロセッサコアのうちの1つまたは複数に割り当てることとを含むことが可能である。
第1の態様のいくつかの例では、この方法は、それぞれの割り当てられた異種のプロセッサコアによってスレッドを実行することを含むことも可能である。いくつかの例では、この方法は、メタデータをスレッドと関連付けることを含むことも可能であり、この場合、このメタデータは、そのスレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成されるかを識別する。いくつかの例は、メタデータがスレッド内に埋め込み可能であること、および/またはスレッドから分離可能であることを実現し得る。いくつかの例では、メタデータをスレッド内に含むことが可能である。
第1の態様のいくつかの例では、この方法は、スレッドを所定の異種のプロセッサコアに割り当てるように構成されたスレッドマッピングソフトウェアツールにメタデータを送信することをさらに含むことが可能である。いくつかの例では、メタデータは、スレッドを実行できる(1つまたは複数の)異種のプロセッサコアを識別することが可能である。いくつかの例は、メタデータに少なくとも一部基づいて、スレッドを(1つまたは複数の)異種のプロセッサコアに割り当てることを可能にすることを実現する。
第1の態様のいくつかの例では、ソフトウェアアプリケーションは、異なる段階で動作することが可能であり、この場合、それぞれの段階は、その段階に関する特定のタスクの動作要件と関連付けられる。スレッドは、(1つまたは複数の)段階を少なくとも一部識別する、事前に定義された実行特性を含むことが可能である。
第1の態様のいくつかの例では、この方法は、スレッドを(1つまたは複数の)異種のプロセッサコアに動的に割り当てることを含むことが可能である。スレッドを割り当てることは、メタデータの知識なしに実行可能である。いくつかの例では、スレッドは、プロセスおよび/またはタスクを含むことが可能である。
第1の態様のいくつかの例では、この方法は、パフォーマンスカウントを生成するパフォーマンスカウンタを使用して、スレッドに関連する情報を収集することを含むことが可能である。かかる例において、スレッドを割り当てることは、パフォーマンスカウント、および(1つまたは複数の)異種のプロセッサコアに関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、(1つまたは複数の)異種のプロセッサコアを識別することを含むことが可能である。
第1の態様のいくつかの例では、この方法は、パフォーマンスカウンタからのパフォーマンスカウントをスレッドに関連付けることを含むことも可能である。かかる例において、スレッドを割り当てることは、パフォーマンスカウント、および(1つまたは複数の)異種のプロセッサコアに関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、(1つまたは複数の)異種のプロセッサコアを識別することを含むことが可能である。
第1の態様のいくつかの例は、当該スレッドと、複数のスレッドのそれぞれを関連付けることをさらに含むことが可能である。これらの複数のスレッドは、(1つまたは複数の)事前に定義された実行特性と関連付けられることが可能である。
本開示の第2の態様では、一般に、ソフトウェアアプリケーションに関連するプロセスを1つまたは複数の異種のプロセッサコア上にマッピングする方法を説明する。かかる方法は、プロセスを(1つまたは複数の)事前に定義された実行特性と関連付けることを含むことが可能であり、この場合、それぞれの事前に定義された実行特性は、ソフトウェアアプリケーションの段階に対応する。この方法は、ソフトウェアアプリケーションの現在の段階を識別することを含むことも可能である。この現在の段階は、その段階に関する特定のタスクの動作要件と関連付けられることが可能である。この方法は、ソフトウェアアプリケーションの現在の段階に少なくとも一部基づいて、プロセスを(1つまたは複数の)異種のプロセッサコアに割り当てることを含むことも可能である。
第2の態様のいくつかの例では、この方法は、それぞれの割り当てられた異種のプロセッサコアによってプロセスを実行することを含むことも可能である。いくつかの例では、(1つまたは複数の)事前に定義された実行特性は、ソフトウェアアプリケーションの現在の段階に少なくとも一部基づいて変化し得る。いくつかの例では、ソフトウェアアプリケーションのそれぞれの段階は、ソフトウェアアプリケーション内の所定のブレークポイントおよび/またはソフトウェアアプリケーションが第1のタスクから第2のタスクに切り替わる所定のポイントによって識別され得る。
第2の態様のいくつかの例では、この方法は、その段階に関する特定のタスクの動作要件に少なくとも一部基づいて、(ソフトウェアアプリケーションのそれぞれの段階の間に)プロセスを(1つまたは複数の)異種のプロセッサコアに割り当てることを含むことも可能である。かかる例は、それぞれの割り当てられた異種のプロセッサコアによってプロセスを実行することを含むことも可能である。
第2の態様のいくつかの例は、パフォーマンスカウンタからのパフォーマンスカウントをプロセスと関連付けることを含むことも可能である。かかる例は、(1つまたは複数の)事前に定義された実行特性、(1つまたは複数の)異種のプロセッサコアに関連するパフォーマンスカウンタからのパフォーマンスカウント、およびパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、プロセスを(1つまたは複数の)異種のプロセッサコアに割り当てることを含むことが可能である。
第2の態様のいくつかの例では、この方法は、(1つまたは複数の)異種のプロセッサコアによるソフトウェアアプリケーションの過去の実行に関する履歴メタデータに関連する実行ベースの最適化プロファイルを利用して、ソフトウェアアプリケーションを管理することを含むことも可能である。
本開示の第3の態様では、一般に、機械可読命令を格納した記憶媒体などの物品を説明する。(1つまたは複数の)処理ユニットによって実行されたとき、かかる機械可読命令は、コンピューティングプラットフォームが、(1つまたは複数の)事前に定義された実行特性に少なくとも一部基づいて、(1つまたは複数の)事前に定義された実行特性を有するスレッドを(1つまたは複数の)異種のプロセッサコアに割り当て、そのスレッドを、実行のためにそのスレッドに割り当てられたそれぞれの異種のプロセッサコアに送信することを可能にし得る。
いくつかの例では、スレッドは、そのスレッドに関連するパフォーマンスカウントを含むことが可能である。いくつかの例は、(1つまたは複数の)事前に定義された実行特性、パフォーマンスカウント、および/または(1つまたは複数の)異種のプロセッサコアに関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、スレッドを(1つまたは複数の)異種のプロセッサコアに割り当てることを含むことも可能である。
本開示の第4の態様では、一般に、マルチコアプロセッサを説明する。かかるマルチコアプロセッサは、第1のプロセッサコアと第2のプロセッサコアとを含むことが可能である。このマルチコアプロセッサは、(1つまたは複数の)事前に定義された実行特性に少なくとも一部基づいて、(1つまたは複数の)事前に定義された実行特性を有するスレッドを第1のプロセッサコアまたは第2のプロセッサコアに割り当て、そのスレッドを、実行のためにそのスレッドに割り当てられたプロセッサコアに送信するように構成可能である。
いくつかの例では、マルチコアプロセッサが異種のハードウェアを含むように、第1のプロセッサコアは、第1の機能を有することが可能であり、第2のプロセッサコアは、第1の機能とは異なる第2の機能を有することが可能である。いくつかの例では、第1の機能および第2の機能はそれぞれ、グラフィックスリソース、数学的計算リソース(mathematical computational resource)、命令セット、アクセラレータ、SSE、キャッシュサイズ、および/または分岐予測装置(branch predictor)に対応する。
前述の要約は、単なる例示であり、限定することが決して意図されない。上で説明された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面、および以下の詳細な説明を参照することによって明らかになるであろう。
本開示の前述の特徴およびその他の特徴は、添付の図面と共に、以下の説明および添付の特許請求の範囲からより十分明らかになるであろう。これらの図面は、本開示によるいくつかの実施形態だけを示し、したがって、その範囲を限定すると見なされるべきでない点を理解して、本開示は、添付の図面の使用を介して、追加の特異性および詳細を用いて説明される。
すべて本開示の少なくともいくつかの実施形態に従って構成された、複数の異種のコアを有する1つの例示的なマルチコアシステムを示すブロック図である。 すべて本開示の少なくともいくつかの実施形態に従って構成された、スレッドを複数の異種のプロセッサコアのうちの少なくとも1つの上にマッピングする1つの例示的な方法を示す流れ図である。 すべて本開示の少なくともいくつかの実施形態に従って構成された、ソフトウェアアプリケーションに関連するプロセスを複数の異種のプロセッサコアのうちの少なくとも1つの上にマッピングする1つの例示的な方法を示す流れ図である。 すべて本開示の少なくともいくつかの実施形態に従って構成された、機械可読命令を含む記憶媒体を含む1つの例示的な物品を示す概略図である。 すべて本開示の少なくともいくつかの実施形態に従って構成された、スレッドマッピング実装形態に関して構成され得る1つの例示的なコンピューティングデバイスを示すブロック図である。
以下の詳細な説明では、その一部を形成する添付の図面が参照される。図面において、類似の記号は、通常、文脈上その他の規定がない限り、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的であることが意味されない。その他の実施形態を利用することが可能であり、ここで提示される主題の趣旨または範囲から逸脱せずに、その他の変更を行うことが可能である。本明細書で一般的に説明され、図面で示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部を形成する幅広い異なる構成の形で構成され、置換され、組み合わされ、設計されることが可能である点を容易に理解されよう。
本開示は、とりわけ、異種のハードウェアを有するマルチコアコンピュータシステムに関し、より詳細には、マルチコアコンピュータシステム上で実行されるソフトウェアアプリケーションの実行特性に少なくとも一部基づいて、スレッドを異種のハードウェア上に効率的にマッピングすることに関する方法、システム、デバイス、および/または装置に対して描かれる。
本開示は、いくつかのコンピュータシステムが複数のプロセッサコアを含み得ることを企図する。異種のハードウェアを有するマルチコアシステムにおいて、いくつかのコアは、その他のコアに利用可能でないある種のハードウェア機能を有することが可能である。いくつかの例示的なコンピュータシステムでは、(命令のシーケンスであってよく、かつ他のスレッドを並行して実行できる)少なくとも1つのスレッドを適切なコアに割り当てることが可能である。スレッドマッピング/コアマッピングは、スレッドを適切なコアと関連付けるために利用可能である。いくつかの例示的なコンピュータシステムでは、スレッドの実行が完了する前に、そのスレッドをあるコアから別のコアに再度割り当てることが可能である。本開示は、一般に、スレッドを参照するが、プロセス、タスクなどのマッピングを含めることは本開示の範囲内である。
図1は、本開示の少なくともいくつかの実施形態に従って構成された複数の異種のコアを有する1つの例示的なマルチコアシステムを示すブロック図である。例示的なマルチコアシステム100は、複数のプロセッサコア102、104、および/または106を含むことが可能である。1つの例示的な実施形態では、マルチコアシステム100は、それぞれが異なる機能を有する、1つもしくは複数のコア102、104、および/または106を含むことが可能である。すなわち、マルチコアシステム100は、異種のハードウェアを含むことが可能である。例えば、1つのコア102は、拡張グラフィックスリソースを含むことが可能であり、もう1つのコア104は、拡張数学的計算リソースを含むことが可能であり、もう1つのコア106は、大容量キャッシュを含むことが可能である。
図1に示されるように、ソフトウェアアプリケーション108は、いくつかのスレッド(または、プロセスおよび/もしくはタスク)を含むことが可能である。スレッドを適切なコアに効率的にマップするために、本明細書で説明されるスレッドマッピング方法は、ソフトウェアアプリケーション108に動作可能に接続されたスレッドマッピングシステム112によって実装可能である。いくつかの実施形態では、パフォーマンスカウンタ110は、スレッド114、116、および/もしくは118を1つまたは複数のコア102、104、および/もしくは106に効率的にマッピングするのを支援するために、スレッドマッピングシステム112に動作可能に結合されることも可能であり、これは下でより詳細に説明される。
図1の例示的な実施形態では、スレッドマッピングシステム112は、スレッドを適切なコアにマッピングすることが可能である。詳細には、スレッドマッピングシステム112は、第1のスレッド(スレッド#1)114をコア102にマッピングすることが可能であり、第2のスレッド(スレッド#2)116をコア102にマッピングすることが可能であり、第3のスレッド(スレッド#3)118をコア106にマッピングすることが可能である。
いくかの例示的な実施形態では、拡張グラフィックス機能から最初に利益を得ることができるスレッドは、拡張グラフィックスリソースを有するコア上で最初に実行できる。スレッドが拡張数学的計算機能から後に利益を得ることができるという期待に少なくとも一部基づいて、その実行を完了するために、そのスレッドに関するデータを、拡張数学的計算を有するコアに送信することが可能である。
いくつかの例示的な実施形態では、コアは、異なる命令セット、異なるアクセラレータ(例えば、DSP(デジタル信号プロセッサ)および/または異なるSSE(ストリーミングSIMD(単一命令、複数データ)拡張))、(L1キャッシュおよびL2キャッシュなど)より大きなキャッシュならびに/またはより小さなキャッシュ、異なる分岐予測装置(プログラムの命令フロー内の条件付き分岐が利用される可能性が高いか否かを決定するプロセッサの一部)などを含むことが可能である。コア同士の間のこれらの差異および/またはその他の差異に少なくとも一部基づいて、異なるコアは、ある種のタスクに異なる機能を提供することが可能である。
いくつかの例示的な実施形態では、いくつかのスレッドを、例えば、1つもしくは複数のパフォーマンスカウンタによって収集された情報によって表現されてよく、かつ/または当該情報に基づいてよい、1つもしくは複数の実行特性と関連付けることが可能である。いくつかの例示的な実施形態では、スレッドマッピングは、1つまたは複数の実行特性に少なくとも一部基づいてよい。
いくつかの例示的な実施形態では、コアのハードウェア機能に少なくとも一部基づいて、(例えば、スレッドマッピングシステム112を利用して)スレッドを個々のコアにマッピングすることが可能である。例えば、大きなL1(メモリ)需要に関連するスレッドは、大きなL1ハードウェアを含むコアにマッピング可能である。同様に、大きなSSE(命令セット)需要に関連するスレッドは、固有のSSEハードウェア実装形態を含むコアにマッピング可能である。これらの例は、非限定的であり、コアおよび/もしくはスレッドの任意のハードウェア特性、命令セット、ならびに/またはその他の特性に少なくとも一部基づいて、スレッドをマッピングすることが可能である点を理解されよう。さらに、本開示は、スレッドがハードウェア機能に基づいてコアにマッピングされない場合、代わりに、ソフトウェアエミュレーションを使用してそのスレッドを処理できることが企図され、これは、そのスレッドに関する処理時間を増大し得る。
いくつかの例示的な実施形態では、スレッド実行特性は、スレッド内で実行しているプログラムの段階に基づいて経時的に変化し得る。例えば、スレッドは、最初、大きなL1需要を有する場合があるが、後の時点で最少L1需要を有する可能性がある。スレッドは、パフォーマンスを改善するために、その実行の間の異なる時点で異なるコアにマッピング可能である。例えば、スレッドは、L1需要が高いとき、比較的大きなL1キャッシュを含むコアにマッピング可能であり、かつ/またはスレッドは、L1需要がより低いとき、より小さなL1キャッシュを有するコアにマッピング可能である。
いくつかの例示的な実施形態では、スレッドを異なるコアにマッピングするかどうかを決定すること、および/またはかかるマッピングをいつ実行するかを決定することは、そのスレッドの先の実行に関するデータを含み得る実行プロファイルの少なくとも一部を評価することを含むことが可能である。いくつかの例示的な実施形態では、参照により組み込まれている米国特許出願公開第2007/0050605号で開示されるようなフリーズドライゴーストページ実行プロファイル生成方法(freeze−dried ghost page execution profile generation method)を使用して、この実行プロファイルを生成することが可能である。この方法は、スレッドの少なくとも一部の実行を前もってシミュレートして、この実行に関するパフォーマンス統計と測定値とを生成するために、シャドープロセッサ(shadow processor)を使用することが可能であり、またはいくつかの実施形態では、シャドーコアを使用することが可能である。
いくつかの例示的な実施形態では、プロセッサおよび/またはキャッシュは、プログラムが実行するにつれて情報を収集するように構成可能である。例えば、かかる情報は、プログラムがどのキャッシュラインを参照するかを含むことが可能である。いくつかの例示的な実施形態では、(例えば、残っているスレッドプロセスのラインの数を計数することによって)どのスレッドを置換すべきかを決定するために、キャッシュ使用に関するデータを評価することが可能である。1つの例示的な実施形態では、パフォーマンスカウンタは、実行しているスレッドのライン排除(line evictions)を追跡するように構成可能であり、かつ/またはより優先順位の高いタスクを開始するために、どのタスクをフラッシュアウトできるかを決定するためにその情報を使用することが可能である。パフォーマンスカウンタは、タスクが開始してからのライン排除を追跡するように構成することも可能である。
1つの例示的なマルチコアシステムは、本開示に従って使用するように適合されたパフォーマンスカウンタを含むことが可能である。様々なコアをパフォーマンスカウンタに動作自在に結合することが可能である。パフォーマンスカウンタは、例えばコンピュータシステム内のハードウェア関連動作の数を表示するカウント数(または、パフォーマンスカウント)を格納するように構成可能である。(例えば、あるコアから別のコアへの)スレッドマッピングは、パフォーマンスカウンタによって収集されたデータを使用して、少なくとも一部決定され得る。
いくつかの例示的な実施形態は、特定のタスクに関するキャッシュフットプリントのサイズを考慮できる。いくつかの例示的な実施形態では、スレッドに関するキャッシュフットプリントがどれだけ大きいかを特徴付けるために、ブルームフィルタ(Bloom filters)を使用することが可能である。1つの例示的なブルームフィルタは、要素が集合のメンバであるかどうかをテストするために使用できる空間効率の良い確率的データ構造であってよい。いくつかの例示的なブルームフィルタを使用するとき、偽陽性は考えられるが、偽陰性は考えられない。いくつかの例示的なブルームフィルタでは、要素を集合に追加することは可能であるが、除去することはできない(しかし、これはカウンティングフィルタ(counting filter)を用いて対処可能である)。いくつかの例示的なブルームフィルタでは、集合に追加される要素が多ければ多いほど、偽陽性の確率はより大きくなる。空のブルームフィルタは、すべて0に設定されたm個のビットのビット配列であってよい。加えて、そのそれぞれが、均一のランダム分布を用いて、何らかの集合要素をm個の配列位置のうちの1つにマッピングできるかまたはハッシュできる、k個の異なるハッシュ関数を画定することが可能である。要素を追加する目的で、k個の配列位置を得るために、k個のハッシュ関数のそれぞれにこの要素を供給することが可能である。これらの位置におけるビットは1に設定できる。要素に関して問い合わせる目的で(例えば、それが集合内に存在するかどうかをテストする目的で)、k個の配列位置を得るために、k個のハッシュ関数のそれぞれにこの要素を供給することが可能である。いくつかの例示的なブルームフィルタでは、これらの位置のうちのいずれかにおけるビットが0である場合、要素は集合内に存在せず、要素が設定内に存在した場合、k個の配列位置におけるビットのすべては、それが挿入されたとき、1に設定されていることになる。いくつかの例示的なブルームフィルタでは、k個の配列位置におけるビットのすべてが1である場合、その要素は集合内に存在するか、または、その他の要素の挿入の間、それらのビットは1に設定されたかのいずれかである。
いくつかの例示的な実施形態では、キャッシュのどの部分が現在のスレッドによって使用されているかを追跡するために、ブルームフィルタを使用できる。例えば、スレッドがまずコア上にスケジュールされているとき、フィルタを空にすることが可能である。スレッドによってキャッシュラインが使用されるたびに、それをフィルタ集合に追加することが可能である。キャッシュデータ移動のコストを評価する目的で、スレッドフットプリントを推定するために、クエリのシーケンスを使用することが可能である。いくつかの例示的な実施形態では、スレッドのキャッシュフットプリントを推定するために、フィルタ内の「1」ビットの数の単純なポピュレーションカウント(population count)を使用することが可能である。いくつかの例示的な実施形態では、カウンティングブルームフィルタを使用することが可能である。カウンティングブルームフィルタでは、それぞれのフィルタ要素は、スレッドによってキャッシュラインが使用されるとき、増分可能であり、キャッシュラインが無効にされたとき、減少可能なカウンタであってよい。
いくつかの例示的な実施形態では、いつスレッドを別のコアに移動すべきか、および/またはどのコアにスレッドを移動すべきかを決定するために、マルチコアシステムによって、スレッドに関連するデータを評価することができる。例えば、システムは、スレッドが目標とする締め切りに遅れているかどうかを決定するために、そのスレッドに関するリアルタイムコンピューティング(RTC)データを使用することが可能である。スレッドが目標とする締め切りに遅れている場合、スレッドは、例えば、より速いコアに移動できる。
いくつかの例示的な実施形態では、スレッド移動に関するキャッシュデータをプリフェッチすることが可能である。このプリフェッチすることは、当技術分野で知られているようなハードウェアプリフェッチャ(prefetcher)によって実行可能である。1つのかかるプリフェッチャは、参照によって組み込まれている米国特許第7,318,125号で開示されている。すなわち、システムがスレッドを新しいコアに送信する準備を整えているとき、移動の準備を整えるために、現在のコアからの参照を新しいコアに送ることができる。これにより、新しいコアは、移動の準備を整える際に「ウォームアップ」することが可能である。いくつかの実施形態では、移動されることになるスレッドに関するデータは実質的にすべて新しいコアによってプリフェッチされ得る。いくつかの他の例示的な実施形態では、移動されることになるスレッドに関するデータの一部は、新しいコアによってプリフェッチされ得る。例えば、キャッシュミス、キャッシュヒット、および/またはキャッシュライン排除をプリフェチすることが可能である。いくつかの例示的な実施形態では、新しいコア内のデータをキャッシュする(したがって、最終的に必要とされない可能性がある新しいコアをデータで充填する)のではなく、データは、例えば、サイドバッファ/ストリームバッファに対してプリフェッチされ得る。
本明細書で使用される場合、「キャッシュヒット」は、キャッシュされている参照データへの試みの成功、ならびに対応するデータを指すことができる。本明細書で使用される場合、「キャッシュミス」は、キャッシュ内に見つからなかった参照データへの試み、ならびに対応するデータを指すことができる。本明細書で使用される場合、「ライン排除」は、キャッシュ内の異なるデータに関してスペースを作るためになど、キャッシュされたラインをキャッシュから除去することを指す場合がある。ライン排除は、それによって、キャッシュから除去される前に、そのキャッシュ内の修正されたデータがメインメモリまたはより高いキャッシュレベルに書き込まれるライトバック動作を含むことも可能である。
図2は、本開示の少なくともいくつかの実施形態に従って構成された、スレッドを複数の異種のプロセッサコアのうちの少なくとも1つの上にマッピングする例示的な方法200を示す流れ図である。例示的な方法200は、処理動作202および/または204のうちの1つもしくは複数を含むことが可能である。
処理は、スレッドを1つまたは複数の(1つまたは複数の)事前に定義された実行特性と関連付けることを含み得る動作202から始めることができる。処理は、動作202から動作204に流れることができる。動作204は、1つまたは複数の(1つまたは複数の)事前に定義された実行特性に少なくとも一部基づいて、スレッドを異種のプロセッサコアのうちの少なくとも1つに割り当てることを含むことが可能である。
いくつかの実施形態では、それぞれのスレッドは、そのスレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成可能であるかを識別するメタデータを含むことが可能である。いくつかの例では、この方法は、メタデータをスレッドと関連付けることをさらに含むことが可能である。メタデータは、スレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成可能であるかを識別することが可能である。一例では、メタデータは、スレッド内に埋め込み可能であるか、またはスレッドから分離可能である。もう1つの実施形態では、この方法は、(例えば、スレッドマッピングシステム112によって実施されるように)スレッドマッピングソフトウェアツールにメタデータを送信することを含むことが可能である。スレッドマッピングソフトウェアツールは、スレッドを評価して、そのスレッドを所定の異種のプロセッサコアに割り当てるように構成可能である。さらに、メタデータは、スレッドを実行するための適切な機能および/または可用性を有する異種のプロセッサコアを識別することが可能である。もう1つの実施形態では、この割り当てる動作は、メタデータに少なくとも一部基づいて、スレッドを1つまたは複数の異種のプロセッサコアに割り当てることを含むことが可能である。
1つの例示的な実施形態では、ソフトウェアアプリケーションは、異なる段階において動作することが可能であり、この場合、それぞれの段階は、その段階に関する特定のタスクの動作要件と関連付けられることが可能である。このようにして、この方法は、特定の段階の間に何のタイプの処理が必要され得るかに基づいて、スレッドを処理するための適切なコアを決定するように構成可能であり得る。一例では、ソフトウェアアプリケーションは、ソフトウェアアプリケーションの開始の間の第1の段階と、インターフェース表示期間中の第2の段階と、テキスト入力の期間中の第3の段階と、スペルチェックタスクおよび/またはその他の類似の段階の間の第4の段階とを含むいくつかの段階を含むことが可能である。
もう1つの実施形態では、この割り当てる動作は、スレッドを異種のプロセッサコアに動的に割り当てることを含むことが可能である。このようにして、この割り当てる動作は、メタデータおよび/またはそのメタデータの内容の知識なしに実行可能である。
さらにもう1つの実施形態では、スレッドは、パフォーマンスカウントを含むことが可能である。この実施形態では、この割り当てる動作は、パフォーマンスカウントおよび/または異種のプロセッサコアのうちの1つもしくは複数に関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、(1つまたは複数の)異種のプロセッサコアを識別することを含むことが可能である。もう1つの実施形態では、この割り当てる動作は、事前に定義された実行特性、パフォーマンスカウンタからのパフォーマンスカウント、および/または異種のプロセッサコアのうちの1つもしくは複数に関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、スレッドを割り当てることが可能である。
図3は、本開示の少なくともいくつかの実施形態に従って、ソフトウェアアプリケーションに関連するプロセスを複数の異種のプロセッサコアのうちの少なくとも1つの上にマッピングする例示的な方法300を示す流れ図である。例示的な方法300は、処理動作302、304、および/または306のうちの1つもしくは複数を含むことが可能である。
方法300に関する処理は、プロセスを1つまたは複数の(1つまたは複数の)事前に定義された実行特性と関連付けることを含み得る動作302で始めることができ、この場合、それぞれの事前に定義された実行特性は、ソフトウェアアプリケーションの段階に対応し得る。処理は、動作302から、ソフトウェアアプリケーションの現在の段階を識別することを含み得る動作304に続くことができる。現在の段階は、その段階に関する特定のタスクの動作要件と関連付けられることが可能である。処理は、次いで、動作304から、ソフトウェアアプリケーションの現在の段階に少なくとも一部基づいて、プロセスを異種のプロセッサコアのうちの少なくとも1つに割り当てることを含み得る動作306に続くことができる。
1つの例示的な実施形態では、それぞれの段階は、ソフトウェアアプリケーション内の所定のブレークポイントおよび/またはソフトウェアアプリケーションが第1のタスクから第2のタスクに切り替わることが可能な所定のポイントによって識別され得る。もう1つの実施形態では、この方法は、パフォーマンスカウンタからのパフォーマンスカウントをプロセスと関連付けることをさらに含み得る。かかる実施形態では、プロセスを割り当てることは、事前に定義された実行特性、異種のプロセッサコアに関連するパフォーマンスカウンタからのパフォーマンスカウント、および/またはパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、プロセスを(1つまたは複数の)異種のプロセッサコアに割り当てることを含むことが可能である。
さらにもう1つの実施形態では、ソフトウェアアプリケーションは、異種のプロセッサコアによるソフトウェアアプリケーションの過去の実行に関する履歴メタデータに関連する実行ベースの最適化プロファイル120(例えば、フリーズドライゴーストページなど)によって管理可能である。
図4は、本開示の少なくともいくつかの実施形態に従って構成された、機械可読命令を含む記憶媒体400を含む1つの例示的な物品の概略図である。1つまたは複数の処理ユニットによって実行されたとき、機械可読命令は、コンピューティングプラットフォームが、1つまたは複数の(1つまたは複数の)事前に定義された実行特性に少なくとも一部基づいて、1つまたは複数の(1つまたは複数の)事前に定義された実行特性を有するスレッドを複数の異種のプロセッサコアのうちの少なくとも1つに割り当てて(動作402)、実行のために、そのスレッドをそれぞれの割り当てられた異種のプロセッサコアに送信すること(動作404)を動作自在に可能にし得る。
図5は、本開示の少なくともいくつかの実施形態による、スレッドマッピングに関して構成された例示的なコンピューティングデバイス900を示すブロック図である。非常に基本的な構成901では、コンピューティングデバイス900は、通常、1つまたは複数のプロセッサ910とシステムメモリ920とを含むことが可能である。プロセッサ910とシステムメモリ920との間の通信のためにメモリバス930を使用できる。
もう1つの例示的な実施形態では、マルチコアプロセッサは、第1のプロセッサコアと第2のプロセッサコアとを含むことが可能である。この実施形態では、マルチコアプロセッサは、事前に定義された実行特性に少なくとも一部基づいて、事前に定義された実行特性を有するスレッドを第1のプロセッサコアまたは第2のプロセッサコアに割り当てるように構成可能である。マルチコアプロセッサは、そのスレッドを、実行のためにそのスレッドに割り当てられた第1のプロセッサコアまたは第2のプロセッサコアに送信するように構成することも可能である。一例では、第1のコアプロセッサはコア102であってよく、第2のプロセッサコアはコア106であってよい。
所望される構成に応じて、プロセッサ910は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそれらの任意の組合せを含むが、これらに限定されない任意のタイプのものであってよい。プロセッサ910は、レベル1キャッシュ911およびレベル2キャッシュ912、プロセッサコア913、ならびにレジスタ914など、もう1つのキャッシングレベルを含むことが可能である。プロセッサコア913は、算術論理ユニット(ALU)、浮動小数点ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはそれらの任意の組合せを含むことが可能である。メモリコントローラ915は、プロセッサ910と共に使用することも可能であり、またはいくつかの実装形態では、メモリコントローラ915は、プロセッサ910の内部部品であってもよい。
所望される構成に応じて、システムメモリ920は、(RAMなどの)揮発性メモリ、(ROM、フラッシュメモリなどの)不揮発性メモリ、またはそれらの任意の組合せを含むが、それらに限定されない任意のタイプのものであってよい。システムメモリ920は、通常、オペレーティングシステム921と、1つまたは複数のアプリケーション922と、プログラムデータ924とを含む。アプリケーション922は、スレッドを1つまたは複数の実行特性と関連付けて、そのスレッドを少なくとも1つの異種のハードウェア構成要素に割り当てるように構成され得るスレッドマッピングアルゴリズム923を含むことが可能である。プログラムデータ924は、スレッドを適切な異種のハードウェア構成要素にマッピングするために有用であり得るスレッドマッピングデータ925を含むことが可能である。いくつかの実施形態では、アプリケーション922は、スレッドが、本明細書で説明される様々な方法に従って、適切なプロセッサコアに効率的にマッピングされ得るように、オペレーティングシステム921上でプログラムデータ924を用いて動作させるように構成可能である。この説明される基本構造は、図5において、破線901内の構成要素によって例示される。
コンピューティングデバイス900は、追加の特徴または機能性と、基本構成901と任意の必要とされるデバイスおよびインターフェースとの間の通信を円滑にするための追加のインターフェースとを有することが可能である。例えば、ストレージインターフェースバス941を経由して、基本構成901と1つまたは複数のデータ記憶デバイス950との間の通信を円滑にするために、バス/インターフェースコントローラ940を使用することが可能である。データ記憶デバイス950は、取外し可能記憶デバイス951、取外し不可能記憶デバイス952、またはそれらの組合せであってよい。取外し可能記憶デバイスおよび取外し不可能記憶デバイスの例は、いくつかの例を挙げれば、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイスと、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブと、固体ドライブ(SSD)と、テープドライブとを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなど、情報の記憶装置に関する任意の方法または技術の形で実装される揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不可能媒体を含むことが可能である。
システムメモリ920、取外し可能記憶装置951、および取外し不可能記憶装置952はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、所望される情報を格納するために使用可能であり、かつコンピューティングデバイス900によってアクセス可能なRAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶デバイス、または任意のその他の媒体を含むが、これらに限定されない。任意のかかるコンピュータ記憶媒体は、デバイス900の一部であり得る。
コンピューティングデバイス900は、バス/インターフェースコントローラ940を経由した、様々なインターフェースデバイス(例えば、出力インターフェース、周辺インターフェース、および通信インターフェース)から基本構成901への通信を円滑にするためのインターフェースバス942を含むことも可能である。例示的な出力デバイス960は、1つまたは複数のA/Vポート963を経由して、ディスプレイまたはスピーカなどの様々な外部デバイスに通信するように構成され得るグラフィックス処理ユニット961と音声処理ユニット962とを含む。例示的な周辺インターフェース970は、1つもしくは複数のI/Oポート973を経由して、入力デバイス(例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)またはその他の周辺デバイス(例えば、プリンタ、スキャナなど)などの外部デバイスと通信するように構成され得るシリアルインターフェースコントローラ971あるいはパラレルインターフェースコントローラ972を含む。例示的な通信デバイス980は、1つまたは複数の通信ポート982を経由して、ネットワーク通信上で1つまたは複数のその他のコンピューティングデバイス990との通信を円滑にするように構成され得るネットワークコントローラ981を含む。通信接続は、通信媒体の一例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくはその他のトランスポート機構など変調データ信号の形のその他のデータによって実施可能であり、任意の情報配信媒体を含む。「変調データ信号」は、その特性セットの1つもしくは複数を有する信号であってよく、または信号内の情報を符号化するように変更され得る。限定例としてではなく、例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響媒体、無線周波数(RF)媒体、赤外線(IR)媒体、およびその他の無線媒体とを含むことが可能である。本明細書で使用される場合、コンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含み得る。
コンピューティングデバイス900は、セル電話、携帯情報端末(PDA)、パーソナルメディアプレイヤデバイス、無線ウェブウォッチ(web−watch)デバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記の機能のうちのいずれかを含むハイブリッドデバイスなど、スモールフォームファクタポータブル(small−form factor portable)(すなわち、移動体)電子デバイスの一部として実装可能である。コンピューティングデバイス900は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装されることも可能である。
本明細書で説明された主題は、時として、異なる他の構成要素内に含まれた、または異なる他の構成要素と接続された異なる構成要素を例示する。かかる示されたアーキテクチャは単なる例であり、実際に、同じ機能性を達成する多くのその他のアーキテクチャが実装可能であることを理解されたい。概念的な意味で、同じ機能性を達成するための構成要素の任意の構成は、所望される機能性が達成されるように、効果的に「関連付けられる(associated)」。したがって、特定の機能性を達成するために組み合わされる、本明細書の任意の2つの構成要素は、アーキテクチャであるかまたは中間構成要素であるかにかかわらず、所望される機能性が達成されるように、互いに「関連付けられる(associated with)と見なされてよい。同様に、そのように関連付けられる任意の2つの構成要素は、所望される機能性を達成するために、互いに「動作可能に接続されている」か、または「動作可能に結合されている」として理解することもでき、そのように関連付けられることが可能な任意の2つの構成要素は、所望される機能性を達成するために、互いに「動作可能に結合可能」であるとして理解することもできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な構成要素および/もしく物理的に相互作用する構成要素、ならびに/または無線で相互作用可能な構成要素および/もしくは無線で相互作用する構成要素、ならびに/または論理的に相互作用する構成要素および/もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
本明細書において実質的に任意の複数形の用語および/または単数形の用語の使用に関して、当業者は、状況および/もしくは応用例に適するように、複数形から単数形に、ならびに/または単数形から複数形に変換することが可能である。様々な単数形/複数形の置換は、説明を明瞭にするために、本明細書において明示的に記載される場合がある。
当業者は、一般に、本明細書、および特に、添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般に、「開かれた」用語として意図される点(例えば、「含んでいる(including)」という用語は、「含んでいるが、これに限定されない」として解釈されるべきであり、「有する(having)」という用語は、「少なくとも有する」として解釈されるべきであり、「含む(includes)」という用語は「含むが、それに限定されない」と解釈されるべきである、など)を理解されよう。特定の数の紹介された請求項の列挙が意図される場合、かかる意図は、特許請求の範囲において明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しないことを当業者はさらに理解されよう。例えば、理解するための助けとして、以下の添付の特許請求の範囲は、請求項の列挙を紹介するために、「少なくとも1つの」および「1つまたは複数の」という導入句の使用を含む場合がある。しかし、同じ請求項が「1つもしくは複数の」または「少なくとも1つの」という導入句、および「a」または「an」などの不定冠詞を含む(例えば、「a」および/または「an」は、通常、「少なくとも1つの」または「1つもしくは複数の」を意味するように解釈されるべきである)ときですら、かかる句の使用は、不定冠詞「a」または「an」によって請求項の列挙を紹介することが、そのように紹介された請求項の列挙を含む任意の特定の請求項を1つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく、同じことは、請求項の列挙を紹介するために使用される定冠詞の使用に関しても当てはまる。加えて、特定数の紹介された請求項の列挙が明示的に列挙されている場合ですら、当業者は、かかる列挙は少なくとも列挙された数を意味すると解釈されるべきである点を理解されよう(例えば、他の修飾語句を伴わない、「2つの列挙」を単に列挙することは、通常、少なくとも2つの列挙、または2つ以上の列挙を意味する)。さらに、「A、B、およびCのうちの少なくとも1つ、など」に類似する表現が使用される場合、一般に、かかる構文は、当業者がその表現を理解することになる意味が意図される(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AおよびBを共に有するシステム、AおよびCを共に有するシステム、BおよびCを共に有するシステム、ならびに/またはA、B、およびCを共に有するシステムを含むが、これらに限定されないことになる、など)。「A、B、またはCのうちの少なくとも1つ、など」に類似する表現が使用される場合、一般に、かかる構文は、当業者がその表現を理解することになる意味が意図される(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AおよびBを共に有するシステム、AおよびCを共に有するシステム、BおよびCを共に有するシステム、ならびに/またはA、B、およびCを共に有するシステムを含むが、これらに限定されないことになる、など)。明細書においてであれ、特許請求の範囲においてであれ、または図面においてであれ、実質的に、2つ以上の代替用語を示す任意の離接語および/または離接句は、それらの用語のうちの1つ、それらの用語のうちのいずれか、または両方の用語を含む可能性を企図すると理解されるべきである点を当業者はさらに理解されよう。例えば、「AまたはB」という句は、「A」、もしくは「B」、または「AおよびB」の可能性を含むと理解されることになる。
様々な態様および実施形態が本明細書において開示されているが、その他の態様および実施形態は当業者に明らかであろう。本明細書で開示された様々な態様および実施形態は、例示のためであり、限定することが意図されず、真の範囲および趣旨は以下の特許請求の範囲によって示される。

Claims (27)

  1. スレッドを複数の異種のプロセッサコアのうちの少なくとも1つの上にマッピングする方法であって、
    前記スレッドを1つまたは複数の事前に定義された実行特性と関連付けることと、
    前記1つまたは複数の事前に定義された実行特性に少なくとも一部基づいて、前記スレッドを前記複数の異種のプロセッサコアのうちの1つまたは複数に割り当てることとを含む方法。
  2. 前記それぞれの割り当てられた異種のプロセッサコアによって前記スレッドを実行することをさらに含む、請求項1に記載の方法。
  3. メタデータを前記スレッドと関連付けることをさらに含み、前記メタデータが、前記スレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成されるかを識別する、請求項1に記載の方法。
  4. 前記スレッドに関連する前記メタデータが、前記スレッド内に埋め込まれているか、または前記スレッドから分離されている、請求項3に記載の方法。
  5. 前記スレッドが、前記スレッドに関連するソフトウェアアプリケーションが動作に関してどのように構成されるかを識別するメタデータを含む、請求項1に記載の方法。
  6. スレッドマッピングソフトウェアツールに前記メタデータを送信することをさらに含み、前記スレッドマッピングソフトウェアツールが、前記スレッドを前記異種のプロセッサコアのうちの所定の1つに割り当てるように構成されている
    請求項3に記載の方法。
  7. 前記メタデータが、前記スレッドを実行できる前記異種のプロセッサコアのうちの1つまたは複数を識別する、請求項3に記載の方法。
  8. 前記スレッドを割り当てることが、前記メタデータに少なくとも一部基づいて、前記スレッドを前記異種のプロセッサコアのうちの1つまたは複数に割り当てることを含む、請求項3に記載の方法。
  9. 前記ソフトウェアアプリケーションが異なる段階において動作し、それぞれの段階が前記段階に関する特定のタスクの動作要件と関連付けられており、
    前記スレッドが、前記異なる段階のうちの1つまたは複数を少なくとも一部識別する、事前に定義された実行特性を含む
    請求項3に記載の方法。
  10. 前記スレッドを割り当てることが、前記スレッドを前記異種のプロセッサコアのうちの1つまたは複数に動的に割り当てることを含む、請求項1に記載の方法。
  11. 前記スレッドを割り当てることが、前記メタデータの知識なしに実行される、請求項10に記載の方法。
  12. 前記スレッドがプロセスまたはタスクを含む、請求項1に記載の方法。
  13. パフォーマンスカウントを生成するパフォーマンスカウンタを使用して、前記スレッドに関連する情報を収集することをさらに含み、
    前記スレッドを割り当てることが、前記パフォーマンスカウント、および前記異種のプロセッサコアのうちの1つまたは複数に関連する前記パフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、前記異種のプロセッサコアのうちの1つまたは複数を識別することを含む、
    請求項1に記載の方法。
  14. パフォーマンスカウンタからのパフォーマンスカウントを前記スレッドと関連付けることをさらに含み、
    前記スレッドを割り当てることが、前記事前に定義された実行特性、前記パフォーマンスカウンタからの前記パフォーマンスカウント、および前記異種のプロセッサコアのうちの1つまたは複数に関連する前記パフォーマンスカウンタを使用して収集された情報のうちの1つまたは複数に少なくとも一部基づいて、前記異種のプロセッサコアのうちの1つまたは複数を識別することを含む、
    請求項1に記載の方法。
  15. 前記スレッドと、複数のスレッドのそれぞれを関連付けることをさらに含み、前記複数のスレッドのそれぞれが、前記事前に定義された実行特性のうちの1つまたは複数と関連付けられ、
    前記複数のスレッドのそれぞれを前記異種のプロセッサコアのうちの1つまたは複数と関連付けることを含む
    請求項1に記載の方法。
  16. ソフトウェアアプリケーションに関連するプロセスを1つまたは複数の異種のプロセッサコアの上にマッピングする方法であって、
    前記プロセスを1つまたは複数の事前に定義された実行特性と関連付けることであって、それぞれの事前に定義された実行特性が、前記ソフトウェアアプリケーションの段階に対応する、関連付けることと、
    前記ソフトウェアアプリケーションの現在の段階を識別することであって、前記現在の段階が、前記段階に関する特定のタスクの動作要件に関連している、識別することと、
    前記ソフトウェアアプリケーションの前記現在の段階に少なくとも一部基づいて、前記プロセスを前記異種のプロセッサコアのうちの1つまたは複数に割り当てることとを含む方法。
  17. 前記それぞれの割り当てられた異種のプロセッサコアによって前記プロセスを実行することをさらに含む、請求項16に記載の方法。
  18. 前記1つまたは複数の事前に定義された実行特性が、前記ソフトウェアアプリケーションの前記現在の段階に少なくとも一部基づいて変化する、請求項16に記載の方法。
  19. 前記ソフトウェアアプリケーションのそれぞれの段階が、前記ソフトウェアアプリケーション内の所定のブレークポイント、または前記ソフトウェアアプリケーションが第1のタスクから第2のタスクに切り替わる所定のポイントのうちの1つもしくは複数によって識別される、請求項16に記載の方法。
  20. 前記ソフトウェアアプリケーションのそれぞれの段階の間に、前記段階に関する特定のタスクの前記動作要件に少なくとも一部基づいて、前記プロセスを前記異種のプロセッサコアのうちの1つまたは複数に割り当てることと、
    前記それぞれの割り当てられた異種のプロセッサコアによって前記プロセスを実行することと
    をさらに含む、請求項16に記載の方法。
  21. パフォーマンスカウンタからのパフォーマンスカウントを前記プロセスと関連付けることをさらに含み、
    前記プロセスを割り当てることが、前記事前に定義された実行特性、前記異種のプロセッサコアのうちの1つまたは複数に関連するパフォーマンスカウンタからの前記パフォーマンスカウント、および前記パフォーマンスカウンタを使用して収集された情報のうちの1つまたは複数に少なくとも一部基づいて、前記プロセスを前記異種のプロセッサコアのうちの1つまたは複数に割り当てることを含む、
    請求項16に記載の方法。
  22. 前記異種のプロセッサコアのうちの1つまたは複数による前記ソフトウェアアプリケーションの過去の実行に関する履歴メタデータに関連する実行ベースの最適化プロファイルを利用して、前記ソフトウェアアプリケーションを管理すること
    をさらに含む、請求項16に記載の方法。
  23. 1つまたは複数の処理ユニットによって実行されたとき、コンピューティングプラットフォームが、
    1つまたは複数の事前に定義された実行特性を有するスレッドを、前記1つまたは複数の事前に定義された実行特性に少なくとも一部基づいて、1つまたは複数の異種のプロセッサコアに割り当て、
    前記スレッドを、実行のために前記スレッド割り当てられたそれぞれの異種のプロセッサコアに送信することを動作可能にする機械可読命令を格納した記憶媒体
    を含む物品。
  24. 前記スレッドが、前記スレッドに関連するパフォーマンスカウントを含み、
    前記スレッドを割り当てることが、1つまたは複数の事前に定義された実行特性、前記パフォーマンスカウント、および前記異種のプロセッサコアのうちの少なくとも1つに関連するパフォーマンスカウンタを使用して収集された情報に少なくとも一部基づいて、前記スレッドを前記異種のプロセッサコアのうちの1つまたは複数に割り当てることを含む、請求項23に記載の物品。
  25. 第1のプロセッサコアと、
    第2のプロセッサコアと
    を含むマルチコアプロセッサであって、
    1つまたは複数の事前に定義された実行特性を有するスレッドを、前記1つまたは複数の事前に定義された実行特性に少なくとも一部基づいて、前記第1のプロセッサコアまたは前記第2のプロセッサコアに割り当て、前記スレッドを、実行のために前記スレッドに割り当てられた前記第1のプロセッサコアまたは前記第2のプロセッサコアに送信するように構成されたマルチコアプロセッサ。
  26. 前記マルチコアプロセッサが異種のハードウェアを含むように、前記第1のプロセッサコアが第1の機能を有し、前記第2のプロセッサコアが、前記第1の機能とは異なる第2の機能を有する、請求項25に記載のマルチコアプロセッサ。
  27. 前記第1の機能および前記第2の機能のそれぞれが、グラフィックスリソース、数学的計算リソース、命令セット、アクセラレータ、SSE、キャッシュサイズ、および/または分岐予測装置のうちの少なくとも1つに対応する、請求項26に記載のマルチコアプロセッサ。
JP2012523620A 2009-09-11 2010-06-04 異種のリソース上へのコンピュータスレッドのマッピング Active JP5487307B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/557,985 2009-09-11
US12/557,985 US9569270B2 (en) 2009-04-21 2009-09-11 Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
PCT/US2010/037498 WO2011031357A1 (en) 2009-09-11 2010-06-04 Mapping of computer threads onto heterogeneous resources

Publications (3)

Publication Number Publication Date
JP2013501298A true JP2013501298A (ja) 2013-01-10
JP2013501298A5 JP2013501298A5 (ja) 2013-05-02
JP5487307B2 JP5487307B2 (ja) 2014-05-07

Family

ID=43731608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012523620A Active JP5487307B2 (ja) 2009-09-11 2010-06-04 異種のリソース上へのコンピュータスレッドのマッピング

Country Status (6)

Country Link
US (1) US9569270B2 (ja)
JP (1) JP5487307B2 (ja)
KR (1) KR101361945B1 (ja)
CN (1) CN102483703B (ja)
GB (1) GB2485682B (ja)
WO (1) WO2011031357A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2021518955A (ja) * 2018-04-20 2021-08-05 オッポ広東移動通信有限公司Guangdong Oppo Mobile Telecommunications Corp., Ltd. プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores
US8788871B2 (en) * 2011-06-28 2014-07-22 International Business Machines Corporation Unified, workload-optimized, adaptive RAS for hybrid systems
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
EP2856315A4 (en) 2012-05-30 2016-02-17 Intel Corp TERMINATION REQUEST BETWEEN A HETEROGEN GROUP OF PROCESSORS
US20130339978A1 (en) * 2012-06-13 2013-12-19 Advanced Micro Devices, Inc. Load balancing for heterogeneous systems
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
EP2885708A4 (en) * 2012-08-20 2016-11-09 D Kevin Cameron ASSIGNMENT OF TREATMENT RESOURCE
CN103729248B (zh) * 2012-10-16 2017-12-15 华为技术有限公司 一种基于缓存感知的确定待迁移任务的方法和装置
GB2514956B (en) * 2013-01-21 2015-04-01 Imagination Tech Ltd Allocating resources to threads based on speculation metric
US9619298B2 (en) 2013-04-17 2017-04-11 Empire Technology Development Llc Scheduling computing tasks for multi-processor systems based on resource requirements
US9235395B2 (en) * 2013-05-30 2016-01-12 National Instruments Corporation Graphical development and deployment of parallel floating-point math functionality on a system with heterogeneous hardware components
US9842040B2 (en) * 2013-06-18 2017-12-12 Empire Technology Development Llc Tracking core-level instruction set capabilities in a chip multiprocessor
US9600346B2 (en) 2013-07-10 2017-03-21 International Business Machines Corporation Thread scheduling across heterogeneous processing elements with resource mapping
US9274967B2 (en) * 2013-08-07 2016-03-01 Nimble Storage, Inc. FIFO cache simulation using a bloom filter ring
US9442696B1 (en) * 2014-01-16 2016-09-13 The Math Works, Inc. Interactive partitioning and mapping of an application across multiple heterogeneous computational devices from a co-simulation design environment
US9910683B2 (en) * 2014-03-28 2018-03-06 Lenovo (Singapore) Pte. Ltd. Dynamic application optimization
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US9424092B2 (en) * 2014-09-26 2016-08-23 Microsoft Technology Licensing, Llc Heterogeneous thread scheduling
US9898348B2 (en) 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
JP2016091137A (ja) * 2014-10-31 2016-05-23 コニカミノルタ株式会社 画像形成装置、特定処理実行方法、およびコンピュータプログラム
CN105849670A (zh) * 2014-11-17 2016-08-10 联发科技股份有限公司 能源效率的多重群集系统及其操作
US10509677B2 (en) * 2015-09-30 2019-12-17 Lenova (Singapore) Pte. Ltd. Granular quality of service for computing resources
US10521271B2 (en) * 2017-04-01 2019-12-31 Intel Corporation Hybrid low power homogenous grapics processing units
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
CN109918084B (zh) * 2019-03-12 2022-03-15 浪潮通用软件有限公司 一种业务管理系统的数据映射方法
US20230024130A1 (en) * 2021-07-23 2023-01-26 Advanced Micro Devices, Inc. Workload aware virtual processing units

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1131134A (ja) * 1997-07-14 1999-02-02 Toshiba Corp コンピュータシステム及び同システムに適用するスケジューリング方法
JP2003006175A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
JP2007328415A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
EP0594871A1 (en) * 1992-10-09 1994-05-04 Fujitsu Limited Multi-media scheduling system
JPH0721045A (ja) 1993-06-15 1995-01-24 Sony Corp 情報処理システム
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
JP3266029B2 (ja) 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
US5968115A (en) * 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
US6243788B1 (en) 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6434594B1 (en) 1999-03-09 2002-08-13 Talk2 Technology, Inc. Virtual processing network enabler
GB0015276D0 (en) * 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7222343B2 (en) 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
JP3964821B2 (ja) 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
JP2005031771A (ja) 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7353516B2 (en) * 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7614056B1 (en) * 2003-09-12 2009-11-03 Sun Microsystems, Inc. Processor specific dispatching in a heterogeneous configuration
US7360218B2 (en) * 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7461376B2 (en) * 2003-11-18 2008-12-02 Unisys Corporation Dynamic resource management system and method for multiprocessor systems
US7360102B2 (en) * 2004-03-29 2008-04-15 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processor manipulation
GB2415060B (en) 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7318125B2 (en) * 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7526661B2 (en) * 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
JP4445410B2 (ja) 2005-02-24 2010-04-07 株式会社ルネサステクノロジ 情報処理装置
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
JP2007108944A (ja) 2005-10-12 2007-04-26 Renesas Technology Corp 半導体集積回路装置
JP4523921B2 (ja) 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US8468532B2 (en) 2006-06-21 2013-06-18 International Business Machines Corporation Adjusting CPU time allocated to next thread based on gathered data in heterogeneous processor system having plurality of different instruction set architectures
JP2008090546A (ja) 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
JP4308241B2 (ja) 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system
US8561073B2 (en) * 2008-09-19 2013-10-15 Microsoft Corporation Managing thread affinity on multi-core processors
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1131134A (ja) * 1997-07-14 1999-02-02 Toshiba Corp コンピュータシステム及び同システムに適用するスケジューリング方法
JP2003006175A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
JP2007328415A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2021518955A (ja) * 2018-04-20 2021-08-05 オッポ広東移動通信有限公司Guangdong Oppo Mobile Telecommunications Corp., Ltd. プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
JP7100154B2 (ja) 2018-04-20 2022-07-12 オッポ広東移動通信有限公司 プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
JP7100154B6 (ja) 2018-04-20 2022-09-30 オッポ広東移動通信有限公司 プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
US11782756B2 (en) 2018-04-20 2023-10-10 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for scheduling processor core, and storage medium

Also Published As

Publication number Publication date
GB201121568D0 (en) 2012-01-25
US20110066828A1 (en) 2011-03-17
GB2485682A (en) 2012-05-23
GB2485682B (en) 2016-09-28
KR20120025612A (ko) 2012-03-15
WO2011031357A1 (en) 2011-03-17
KR101361945B1 (ko) 2014-02-12
CN102483703A (zh) 2012-05-30
US9569270B2 (en) 2017-02-14
CN102483703B (zh) 2015-10-14
WO2011031357A8 (en) 2012-03-22
JP5487307B2 (ja) 2014-05-07

Similar Documents

Publication Publication Date Title
JP5487307B2 (ja) 異種のリソース上へのコンピュータスレッドのマッピング
JP5615361B2 (ja) スレッドシフト:コアへのスレッド割振り
JP5487306B2 (ja) スレッド移送におけるキャッシュのプレフィル
US10268600B2 (en) System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor
US10776270B2 (en) Memory-efficient last level cache architecture
WO2017027111A1 (en) Loading data using sub-thread information in a processor
US10108548B2 (en) Processors and methods for cache sparing stores
US10705962B2 (en) Supporting adaptive shared cache management
CN108694136B (zh) 用于超越基于非局部性的指令处理的系统、设备和方法
US20150160945A1 (en) Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
TWI469044B (zh) 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術
US8838915B2 (en) Cache collaboration in tiled processor systems
US20190286567A1 (en) System, Apparatus And Method For Adaptively Buffering Write Data In A Cache Memory
US11093401B2 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
WO2018001528A1 (en) Apparatus and methods to manage memory side cache eviction
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags
CN116821008A (zh) 具有提高的高速缓存命中率的处理装置及其高速缓存设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140224

R150 Certificate of patent or registration of utility model

Ref document number: 5487307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250