JP2015530683A - 異種計算システムにおけるコールド変換索引バッファミスを低減させること - Google Patents
異種計算システムにおけるコールド変換索引バッファミスを低減させること Download PDFInfo
- Publication number
- JP2015530683A JP2015530683A JP2015535683A JP2015535683A JP2015530683A JP 2015530683 A JP2015530683 A JP 2015530683A JP 2015535683 A JP2015535683 A JP 2015535683A JP 2015535683 A JP2015535683 A JP 2015535683A JP 2015530683 A JP2015530683 A JP 2015530683A
- Authority
- JP
- Japan
- Prior art keywords
- processor type
- task
- tlb
- address
- processor
- 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.)
- Pending
Links
- 238000013519 translation Methods 0.000 title claims abstract description 86
- 239000000872 buffer Substances 0.000 title claims abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 34
- 238000006243 chemical reaction Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000013507 mapping Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
コンピュータシステムにおけるコールド変換索引バッファ(TLB)ミスを回避するための方法および装置が提供される。典型的なシステムは、共通メモリアドレス空間を共有する少なくとも1つの中央処理装置(CPU)および1つ以上のグラフィックス処理装置(GPU)を有する異種計算システムとして構成されている。各処理装置(CPUおよびGPU)は、独立したTLBを有している。タスクを特定のCPUから特定のGPUへオフロードする場合には、変換情報が、タスク割り当てとともに送信される。変換情報は、GPUが、タスクを実行する前にアドレス変換データを1つ以上のGPUに関連付けられたTLBへロードすることができるようにする。GPUのTLBをプレロードすることは、そうでなければ本開示によってもたらされる利益なしに発生するであろうコールドTLBを、低減または回避する。【選択図】図4
Description
本開示の実施形態は、共通メモリアドレス空間(物理的および仮想的の両方を含む)を有する異なるタイプの処理装置(例えば、中央処理装置、グラフィックス処理装置、ディジタル信号プロセッサまたは様々なタイプのアクセラレータ)を採用する異種計算システムの分野に関する。さらに詳しくは、本開示の実施形態は、タスクが一方のプロセッサタイプから他方のプロセッサタイプへオフロードされたときに、かかる計算システムにおけるコールド変換索引バッファ(TLB)ミスを低減または回避する分野に関する。
異種計算システムは、典型的には、異なるタイプの処理装置を採用している。例えば、異種計算システムは、共通メモリアドレス空間(物理アドレス空間および仮想アドレス空間の両方)を共有する中央処理装置(CPU)およびグラフィックス処理装置(GPU)を使用し得る。GPUを使用する汎用計算(GPGPU計算)において、GPUは、従来CPUによって実行されていたいくつかの作業あるいはタスクを実行するのに用いられている。CPUは、タスクをGPUへハンドオフまたはオフロードし、次に、GPUは、当該タスクを実行して、結果、データまたは他の情報を、直接的にCPUに提供し、または、情報を記憶することによってCPUに提供するであろう。ここで、CPUは、必要とされる場合には、その情報を検索することができる。
CPUおよびGPUが、多くの場合、共通メモリアドレス空間を共有する一方で、これらの色々なタイプの処理装置にとっては、特定のタイプの処理装置に最適化され得る独立したアドレス変換機構または階層を有することが一般的なことである。言い換えれば、現代の処理装置は、典型的には、メモリ空間をアドレス指定するために仮想アドレススキームを利用する。したがって、処理装置が、実行すべき命令および/または処理すべきデータを見つけることができるように、変換索引バッファ(TLB)が、仮想アドレスを物理アドレスに変換するために用いられ得る。タスクハンドオフの場合には、オフロード済タスクを完了するのに必要とされる変換情報が他のプロセッサタイプのTLBから失われており、結果として、コールド(初期の)TLBミスとなる。TLBミスから回復するためには、タスクを受信するプロセッサは、タスク処理が開始される前に変換情報を取得するために、メモリのページを探索(一般的に「ページウォーク」と称される)しなければならない。多くの場合、処理遅延またはTLBミスからの待ち時間は、クロックサイクルの10倍から100倍となる。
少なくとも1つの中央処理装置(CPU)と、1つ以上のグラフィックス処理装置(GPU)と、を有する異種計算システムにおけるコールドTLBミスを回避するための方法が提供される。少なくとも1つのCPUと、1つ以上のGPUとは、共通メモリアドレス空間を共有するとともに、独立した変換索引バッファ(TLB)を有している。特定のCPUから特定のGPUへタスクをオフロードするための方法は、タスクおよび変換情報を特定のGPUへ送信することを含む。GPUは、タスクを受信し、当該タスクを実行する前に、1つ以上のGPUに関連するTLBへアドレス変換情報をロードするために前記変換情報を処理する。
異種コンピュータシステムは、タスクを実行し、または、少なくとも1つの中央処理装置(CPU)に接続された第1の変換索引バッファ(TLB)に前記タスクをオフロードするための前記少なくとも1つのCPUを含む。異種コンピュータシステムは、前記タスクを実行することの可能な1つ以上のグラフィックス処理装置(GPU)と、前記1つ以上のGPUに接続された第2のTLBと、をさらに含む。共通メモリアドレス空間は、第1および第2のTLBに接続されており、前記少なくとも1つのCPUおよび前記1つ以上のGPUによって共有されている。タスクが特定のCPUから特定のGPUへオフロードされる場合に、前記タスクの実行前に、変換情報が、特定のGPUがアドレス変換データを第2のTLBへロードするタスクハンドオフに含まれる。
実施形態は、下記の図面に関連して以下に説明される。図面において、類似の符号は類似の要素を示す。
以下の詳細な説明は、単に例示的なものであり、本開示または本願、および、本開示の利用を制限することを意図するものではない。ここで用いられるように、「例示的な」という用語は、「実例、具体例または例示として機能する」ことを意味している。このため、本明細書にて「例示的な」と記載された任意の実施形態は、他の実施形態よりも好ましいまたは有利である、と解釈すべきではない。本明細書に記載された全ての実施形態は、開示された実施形態を当業者が実施または利用することができる場合、または、特許請求の範囲に定義された開示の範囲を制限しない場合には、例示的な実施形態である。また、前述した技術分野、背景、概要、以下の詳細な説明によって示され、または、特定のコンピュータシステムについて示された明示的もしくは暗示的な如何なる理論においても、制約される意図は全く存在しない。
本明細書において、第1の、第2の、などの関係語は、1つのエンティティまたははアクションを、かかるエンティティまたはアクション同士間で実際にかかる関係または順序を要求または暗示することなく、別のエンティティまたはアクションから区別するために専ら使用され得る。「第1の」、「第2の」、「第3の」などの番号は、複数のもののうち何れか1つのものを単に示しており、クレームの言語によって特別に定義されない限り、如何なる順序性または連続性を暗示するものではない。
また、以下の説明では、ともに「接続され(connected)」または「連結され(coupled)」ている要素または構成を言及する。本明細書で用いられるように、「接続された」とは、1つの要素/構成が、別の要素/構成へ直接的もしくは間接的に結合(もしくは直接通信)され、または、必ずしも機械的にではなく結合(もしくは直接通信)していることを言及し得る。同様に、「連結された」とは、1つの要素/構成が、別の要素/構成へ直接または間接的に結合され、または、必ずしも機械的にではなく結合(もしくは直接あるいは間接的に通信)していることを言及し得る。しかしながら、2つの要素が「接続され」ていると以下に記載されたとしても、類似の要素が「連結され」ていてもよく、この逆も同様である、と理解すべきである。このため、本明細書に示されたブロック図は、要素の例示の配置を記載しているものの、実際の実施形態には、付加的に介在する要素、装置、構成または構成要素が存在していてもよい。
最後に、簡潔に表現するために、コンピュータシステムおよびコンピュータシステムの他の態様(および同システムの個々の動作要素)に関連した従来の技術および構成要素は、本明細書にて詳細に説明しないことがある。また、本願の図面に示された接続線は、様々な要素間の例示的な機能的関係および/または物理的連結を表現することを意図している。実施形態には、多くの代案または付加的な機能的関係もしくは物理的接続が存在していてもよい、ことに留意すべきである。
図1を参照すると、共通メモリ(アドレス空間)110を共有する中央処理装置(CPU)1020−102N(全体として102)およびグラフィックス処理装置(GPU)1040−104M(全体として104)を採用する異種コンピュータシステム100を示す簡略化された例示的なブロック図が示されている。メモリ110は、SDRAMなどのダイナミックランダムアクセスメモリ(DRAM)、様々な型の静的RAM(SRAM)、および、様々なタイプの不揮発性メモリ(例えば、PROM、EPROM、フラッシュ、PCMまたはSTT−MRAM)を含む任意のタイプの適切なメモリであってよい。
CPU102およびGPU104は、同一の共通メモリ(アドレス空間)110を利用するものであるが、これらの異なるタイプの処理装置の各々は、いくつかの実施形態において特定のタイプの処理装置(すなわち、CPUまたはGPU)へ最適化することの可能な独立したアドレス変換機構を有している。言い換えれば、基本的な実施形態において、CPU102およびGPU104は、仮想アドレススキームを利用して共通メモリ110をアドレス指定する。したがって、仮想アドレスを物理アドレスに変換するために変換索引バッファ(TLB)が使用されるので、上記の処理装置は、実行する命令かつ/または処理するためのデータを見つけることができる。図1に示されたように、CPU102は、TLBcpu106を利用し、GPU104は、独立したTLBgpu108を利用する。本明細書で用いられるように、TLBは、共通メモリ110のページテーブル112から間もなく使用される変換マッピングとして、最近使用されまたは予測されているキャッシュであり、仮想メモリアドレス変換速度を改善するために使用される。ページテーブル112は、仮想メモリアドレスと物理メモリアドレスとの間のマッピングを記憶するために使用されるデータを備えている。仮想メモリアドレスは、アクセス処理ごとに固有のものであり、物理メモリアドレスは、CPU102およびGPU104ごとに固有のものである。ページテーブル112は、命令を処理し、および/または、データをロード/記憶するために、実行処理で見られた仮想メモリアドレスを、CPU102およびGPU104によって使用される物理メモリアドレスに変換するのに用いられる。
したがって、CPU102またはGPU104が共通メモリ110へアクセスしようと試みる(例えば、特定の仮想メモリアドレスに配置されたデータもしくは命令を取り出すように、または、データを特定の仮想メモリアドレスへ記憶するように試みる)場合に、当該仮想メモリアドレスは、対応する物理メモリアドレスへ変換されなければならない。このため、TLBは、高速変換を提供する試みにおいて、仮想メモリアドレスを物理メモリアドレスへ変換するときに、最初に探索される。典型的には、TLBは、仮想メモリアドレスを物理メモリアドレスへマップするアドレス変換データ(エントリ)を含む固定数のスロットを有している。TLBは、通常、探索キーが仮想メモリアドレスであり、探索結果が物理メモリアドレスである、内容参照メモリ(content−addressable memory)である。いくつかの実施形態において、TLBは、単一のメモリキャッシュである。いくつかの実施形態において、TLBは、当該技術分野において知られているように、ある階層でネットワーク化または編成されている。しかしながら、TLBは、要求されたアドレスが当該TLB内に存在すると(すなわち、「TLBヒット」)、探索がマッチを速くもたらし、かつ、物理メモリアドレスが戻されることによって、実現される。要求されたアドレスがTLB内に存在しない(すなわち、「TLBミス」)場合には、変換は、「ページウォーク」と一般に称される処理において、ページテーブル112を調べることによって進行する。物理メモリアドレスが決定された後に、物理メモリアドレスへの仮想メモリアドレスのマッピングが、(何れのタイプのプロセッサ(CPUまたはGPU)にアドレスマッピングが要求されているかに依存して)TLB106またはTLB108にロードされる。
GPUを使用する汎用計算(GPGPU計算)において、GPUは、典型的に、従来CPUによって実行された何らかの作業またはタスクを実行するために用いられる(逆も同様である)。このようにするために、CPUは、タスクをGPUへハンドオフまたはオフロードし、次いで、GPUは、当該タスクを実行し、結果、データもしくは他の情報を、直接的にCPUに提供し、または、情報を共通メモリ110に記憶することによってCPUに提供するであろう。ここで、CPUは、必要とされる場合に、記憶された情報を検索することができる。タスクのハンドオフの場合には、オフロード済タスクを実行するために必要とされる変換情報が、他のプロセッサタイプのTLBから失われており、結果として、コールド(初期の)TLBミスになるであろう。上述したように、TLBミスから回復するためには、タスクを受信するプロセッサは、メモリ110のページテーブル112を探索して(一般的に「ページウォーク」と称される)、タスク処理が開始される前に変換情報を取得することが要求される。
図2を参照すると、図1の計算システム100は、いくつかの実施形態による例示的なタスクオフロード(またはハンドオフ)を実行することが示されている。簡潔さと便宜のために、タスクオフロードは、CPUx102xからGPUy104yまでのものとして検討されているが、GPUy104yからCPUx102xまでのタスクオフロードも本開示の範囲内にある、ということが理解できるであろう。いくつかの実施形態において、CPUx102xは、オフロードされるタスクをGPUy104yへバンドルまたはアセンブルするとともに、当該タスクの記述(またはポインタ)をキュー200に配置する。いくつかの実施形態において、当該タスクの記述(または当該タスクのポインタ)は、GPUy104yへ直接送信され、または、共通メモリ110内の記憶位置を介して送信される。後の時点で、GPUy104yは、関連するTLBgpu108から第1の仮想アドレス変換を呼び出すことで、当該タスクを実行し始めるであろう。しかしながら、タスクがオフロードされており、TLBcpu106において先取りまたはロードされた如何なる変換情報もGPU104にとって使用可能なものではないことから、変換情報がTLBgpu108内に存在しない場合がある。このことは、オフロードされたタスクが実行され始める前にページウォークを必要とする第1の命令(または、当該第1の命令についてのアドレス変換の呼び出し)からのコールド(初期の)TLBミスという結果になるであろう。かかる処理に含まれる付加的な待ち時間は、タスクハンドオフを最初から行うことによって、要求された増大効率を損なう。
したがって、いくつかの実施形態では、タスクの開始前または当該タスクの実行中に、GPUy104yのディスパッチャまたはスケジューラ202がアドレス変換データをTLBgpu108にロード(プレロード)することの可能な変換情報を用いて、タスクハンドオフ記述(ポインタ)を向上または補足することを予期する。いくつかの実施形態において、変換情報は、確定的であり、または、TLBgpu108へロードされたアドレス変換データに直接関連する。確定的な変換情報の非限定的な例は、TLBgpu108へ直接ロードすることの可能なTLBcpu106からのアドレス変換データ(TLBエントリ)であろう。これに代えて、TLBgpu108は、必要とされるアドレス変換データを配置するために、TLBcpu106の何処を探査すべきか助言され得る。いくつかの実施形態において、変換情報は、TLBgpu108のためのアドレス変換データを予測または導出するために使用される。予測した変換情報の非限定的な例は、特定の任意のインプリメンテーションに採用され得る、コンパイラ分析、動的ランタイム分析またはハードウェア追跡を含んでいる。いくつかの実施形態において、変換情報は、GPUy104yがアドレス変換データを得ることの可能なタスクハンドオフに含まれる。この種の変換情報の非限定的実例は、アドレス変換データを得るするために構文解析されるであろう将来のアドレスアクセスのためのパターンまたはコード化を含んでいる。一般に、コールドTLBミス(および、その後のページウォーク)の発生を低減または回避するために、GPUy104yがTLBgpu108にアドレス変換データを直接または間接的にロードすることのできる任意の変換情報は、本開示によって予期されている。
図3〜図4は、コールドTLBミスを回避するための本開示の方法を理解するのに有用なフロー図である。上述したように、簡潔さおよび便宜のために、タスクオフロードおよび実行の方法は、CPUx102xからGPUy104yまでのものとして検討されているが、GPUy104yからCPUx102xまでのタスクオフロードも本開示の範囲内にある、ということが理解できるであろう。図3〜図4の方法に関連して実行される様々なタスクは、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせによって実行することができる。例示的な目的のために、図3〜図4の方法についての以下の説明は、図1〜図2に関連して上述した要素に言及することができる。実際に、図3〜図4の方法の一部は、説明されたシステムの異なる要素で実行することができる。図3〜図4の方法が、任意数の付加的または代替のタスクを含んでもよいことと、図3〜図4の方法が本明細書で詳しく説明されていない付加的機能を有するより包括的な任意の数の手順または処理に組み込まれてもよいということと、が理解できるであろう。さらに、図3〜図4に示された1つ以上のタスクは、意図された全体の機能が失われることなく残る限り、図3〜図4の方法についての実施形態から省略することができる。
図3を参照すると、いくつかの実施形態によるタスクをオフロードするための方法300を示すフロー図が表されている。この方法300は、ステップ302において開始される。ここでは、変換情報が、オフロードされるタスクに含まれるように蓄積または収集される。前述したように、この変換情報は、確定的であってもよいし、TLBgpu108へロードされるアドレス変換データ(例えば、TLBcpu106からのアドレス変換データ)に直接関連があってもよい。また、変換情報は、TLBgpu108のためのアドレス変換データを予測または導出するために使用されてもよい。ステップ304において、タスクおよび関連する変換情報は、一方のプロセッサタイプから他方のプロセッサタイプへ(例えば、CPUからGPUへ、または逆も同様である)送信される。判断306において、タスクをハンドオフしたプロセッサ(本例ではCPU102)は、ハンドオフを受信するプロセッサがタスクを完了したかどうかを判定する。いくつかの実施形態において、オフロードするプロセッサは、他のプロセッサがタスクを完了したことを確かめるために、周期的にチェックを行う。いくつかの実施形態において、ハンドオフを受信するプロセッサは、割り込み信号または他の信号を、判断306の肯定的判定を引き起こすであろう、オフロードするプロセッサへ送信する。肯定的判定が達成されるまで、ルーチンが判断306の周りでループする。このオフロード済タスクが完了すると、必要であれば(例えば、このオフロード済タスクがより大きいタスクのサブステップまたは副処理であった場合など)、ステップ308において、さらに別の処理を実行することができる。また、オフロードするプロセッサは、いくつかのサブタスクを他のプロセッサへオフロードしてもよく、全てのプロセスまたはタスクを完了するために、サブタスクの結果をコンパイルまたは組み合わせる必要がある。この後に、ルーチンが終了する(ステップ310)。
図4を参照すると、いくつかの実施形態によるオフロード済タスクを実行するための方法400を示すフロー図が表されている。この方法400は、ステップ402において開始される。ここでは、タスクハンドオフを伴う変換情報が抽出または調査される。次に、判断404は、変換情報が、ハンドオフを受け取るプロセッサのTLB(例えば、CPUからGPUへのハンドオフのためのTLBgpu108)へ直接ロードすることの可能なアドレス変換データから構成されているか否かを判定する。ここでの肯定的判定は、オフロードするTLB(例えば、TLBcpu106)からTLBエントリが提供されたこと、または、変換情報が、アドレス変換データを配置するために他のプロセッサのTLBを何処で探査するかを、タスクを受信するプロセッサタイプに助言すること、を意味している。このデータは、ステップ406において、TLB(本例ではTLBgpu108)へロードされる。
判断404の否定的判定は、変換情報がアドレス変換データに直接関連付けられていない、ということを意味している。したがって、判断408は、オフロードするプロセッサが、変換情報からアドレス変換を取得(ステップ410)しなければならないかどうかを判定する。このような事例は、オフロードするプロセッサが、変換情報に基づいて(あるいは変換情報から)、アドレス変換データを予測または導出することを必要とする事例であろう。上述したように、アドレス変換データは、特定の任意のインプリメンテーションに採用することのできるコンパイラ分析、動的ランタイム分析またはハードウェア追跡から予測されるであろう。また、アドレス変換データは、ステップ410において、アドレス変換データを導出するために将来のアドレスアクセスのためのパターンまたはコード化を構文解析することによって、取得されるであろう。採用されたアドレス変換データを取得する方法にかかわらず、アドレス変換データを表現するTLBエントリは、ステップ406においてロードされる。しかしながら、判断408は、アドレス変換データを取得する(あるいは、取得することを試みる)ことがない(あるいは、すべきではない)と判断するであろう。このような事例は、変換情報が無効であることがわかったかどうか、または、要求された変換がもはや物理メモリ空間にない(例えば、第2の記憶媒体へ移動した)かどうかという事例であろう。この事例において、判断408は、変換情報を基本的に無視し、ルーチンは、タスクを開始する(ステップ412)ように進行する。
オフロード済タスクの処理を開始するために第1の変換が要求され、判断414は、TLBミスがあったかどうかを判定する。ステップ406を介してステップ412に移行した場合、TLBミスは回避されるべきであり、TLBヒットが戻される。しかしながら、判断408の否定的判定を介してステップ412へ移行した場合には、TLBミスが発生した可能性があり、かかる場合には、ステップ418において従来のページウォークが実行される。ルーチンは、タスクを実行する(ステップ416)ことを継続し、各々のステップ後、タスクが完了したかどうかを判断420において判定する。タスクがまだ完了していない場合には、ルーチンは、別のアドレス変換を含み得る次のステップ(ステップ422)を実行するために、ループバックする。言い換えれば、オフロード済タスクの実行中に、いくつかのアドレス変換が必要とされてもよく、いくつかの場合には、TLBミスが発生して、ページウォーク(ステップ418)が必要とされるであろう。しかしながら、ステップ406を介してタスクの実行に移行した場合には、ページウォーク(およびそれに関連した待ち時間)は、いくつかのハンドオフについて実質的に低減または排除されるべきである。増大した効率および減少した電力消費量は、本開示のハンドオフシステムおよび処理によってもたらされた直接的な利益である。
タスクが完了したことを判断420が判定すると、タスク結果が、ステップ424においてオフロードプロセッサへ送信される。このことは、1つの実施形態において、タスクが完了しているかどうかを判定するために、オフロードプロセッサからの問い合わせに応答することによって、実現することができる。別の実施形態では、タスクハンドオフを受け取るプロセッサは、割り込みを誘発するか、または、タスクが完了していることを表示するオフロードプロセッサへ別の信号を送信することがある。そのタスク結果が戻されると、ルーチンは、ステップ426で終了する。
コンピュータシステム100の例示的なデータ構造および/またはコンピュータ可読記憶媒体に含まれるデータ構造の一部は、あるプログラムによって読み取ることができ、かつ、コンピュータシステム100を備えるハードウェアを組み立てるために直接または間接的に使用することができるデータベースまたは他のデータ構造であってよい。例えば、このデータ構造は、VerilogまたはVHDLなどの高水準設計用言語(HDL)におけるハードウェア機能の動作レベル記述またはレジスタトランスファレベル(RTL)記述であってよい。これらの記述は、合成ライブラリからのゲートのリストを備えるネットリストを生成するために、これらの記述を合成することのできる合成ツールによって読み取ることができる。このネットリストは、コンピュータシステム100を備えるハードウェアの機能を表現する一組のゲートを備えている。このネットリストは、その後、マスクへ適用される幾何学的形状を記述するデータの組を生成するために配置されるとともに経路指定され得る。マスクは、その後、コンピュータシステム100に対応する半導体回路を製造するために、様々な半導体組立ステップにおいて使用されることがある。これに代えて、コンピュータ可読記憶媒体におけるデータベースは、要望どおり、ネットリスト(合成ライブラリが備わっているか、または、備わっていない)またはデータ組であってもよい。また、グラフィックスデータシステム(GDS)IIデータであってもよい。
図3〜図4に示された方法は、コンピュータ可読記憶媒体の内に記憶されており、かつ、コンピュータシステム100の少なくとも1つのプロセッサによって実行される命令によって管理することができる。図3〜図4に示された各々の動作は、非一時的なコンピュータメモリまたはコンピュータ可読記憶媒体に記憶された命令に対応することができる。様々な実施形態において、非一時的なコンピュータ可読記憶媒体は、磁気的もしくは光学的なディスク記憶装置、フラッシュメモリなどのソリッドステート記憶装置、または、他の不揮発性メモリ装置を含んでいる。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、1つ以上のプロセッサによって解釈され、かつ/または、実行可能であるソースコード、アセンブリ言語コード、オブジェクトコードもしくは他の命令フォーマットであってよい。
例示的な実施形態が上記の詳細な説明において提示されてきたが、膨大な数の変形例が存在するということはわかるであろう。例示的な実施形態は、単なる実例であり、範囲、適用性または形態をどのような方法においても制限することを意図していない、ということがわかるであろう。どちらかと言えば、上記の詳細な説明は、例示的な実施形態を実施するための便利な指針を当業者に提供するが、例示的な実施形態に記載された要素の機能および配置には、添付の特許請求の範囲に説明された範囲およびそれらの法律的な均等物から逸脱することなく、様々な変更を行うことができるということが理解されよう。
Claims (20)
- 第1のプロセッサタイプから第2のプロセッサタイプへ、前記第2のプロセッサタイプによって実行されるタスクをオフロードするための方法であって、
前記第1のプロセッサから前記タスクを受信することであって、前記第1のプロセッサおよび前記第2のプロセッサが共通メモリアドレス空間を利用することと、
前記タスクのための変換情報を前記第1のプロセッサタイプから受信することと、
前記タスクを実行する前にアドレス変換データを前記第2のプロセッサタイプの変換索引バッファ(TLB)へロードするために、前記変換情報を使用することと、を含む、方法。 - 前記第1のプロセッサタイプは中央処理装置(CPU)であり、前記第2のプロセッサタイプはグラフィックス処理装置(GPU)である、請求項1に記載の方法。
- 前記第1のプロセッサタイプはGPUであり、前記第2のプロセッサタイプはCPUである、請求項1に記載の方法。
- 前記変換情報はページテーブルエントリを含み、
前記タスクを実行する前に、前記ページテーブルエントリを前記第2のプロセッサタイプのTLBへロードすることをさらに含む、請求項1に記載の方法。 - 前記変換情報に基づいて前記アドレス変換データを取得することと、
前記タスクを実行する前に、前記アドレス変換データを前記第2のプロセッサタイプの前記TLBへロードすることと、をさらに含む、請求項1に記載の方法。 - 前記アドレス変換データを取得することは、前記第1のプロセッサタイプに関連付けられたTLBを探ることを含む、請求項5に記載の方法。
- 前記アドレス変換データを取得することは、今後のアドレスアクセスのパターンを構文解析することを含む、請求項5に記載の方法。
- 前記アドレス変換データを取得することは、今後のアドレスアクセスを予測することを含む、請求項5に記載の方法。
- 前記今後のアドレスアクセスを予測することは、今後のアドレスアクセスを、変換情報源のグループを構成する、コンパイラ分析、動的ランタイム分析およびハードウェア追跡のうち1つ以上から予測することを含む、請求項8に記載の方法。
- 前記アドレス変換データを取得することは、前記変換情報を無視することと、ページウォークを実行することと、を含む、請求項5に記載の方法。
- 第1のプロセッサタイプから第2のプロセッサタイプへ、前記第2のプロセッサタイプによって実行されるタスクをオフロードするための方法であって、
前記タスクを前記第2のプロセッサタイプへ送信することと、
変換情報を前記第2のプロセッサタイプへ送信することと、を含み、
前記変換情報は、前記第2のプロセッサタイプが前記タスクを実行する前にアドレス変換データを前記第2のプロセッサタイプの変換索引バッファ(TLB)へロードするために、前記第2のプロセッサタイプによって使用し得る、方法。 - 前記変換情報は、ページテーブルエントリである、請求項11に記載の方法。
- 前記アドレス変換データは、前記変換情報を使用して前記第2のプロセッサタイプによって取得され、前記アドレス変換データは、前記タスクを実行する前に、前記第2のプロセッサタイプに関連付けられたTLBへロードされる、請求項11に記載の方法。
- 前記第2のプロセッサタイプは、今後のアドレスアクセスのパターンを構文解析することによって、前記アドレス変換データを取得する、請求項13に記載の方法。
- 前記第2のプロセッサタイプは、今後のアドレスアクセスを予測することによって、前記アドレス変換データを取得する、請求項13に記載の方法。
- 前記第2のプロセッサタイプは、前記変換情報を無視することと、ページウォークを実行することとによって、前記アドレス変換データを取得する、請求項13に記載の方法。
- 第1の変換索引バッファ(TLB)を含む第1のプロセッサタイプであって、タスクと、前記タスクのための変換情報とを第2のプロセッサタイプへ送信するように構成された第1のプロセッサタイプと、
第2のTLBを含む第2のプロセッサタイプであって、前記タスクおよび前記変換情報を前記第1のプロセッサから受信し、前記タスクを実行する前にアドレス変換データを前記第2のTLBへロードするために、前記変換情報を使用するように構成された第2のプロセッサタイプと、
前記第1のプロセッサタイプおよび前記第2のプロセッサタイプに接続されたメモリであって、前記第1のプロセッサタイプおよび前記第2のプロセッサタイプは、前記メモリの共通メモリアドレス空間を利用する、メモリと、を備える、異種計算システム。 - 前記変換情報は、ページテーブルエントリである、請求項17に記載の異種計算システム。
- 前記第1のプロセッサタイプは中央処理装置(CPU)であり、前記第2のプロセッサタイプはグラフィックス処理装置(GPU)である、請求項17に記載の異種計算システム。
- 前記第1のプロセッサタイプはグラフィックス処理装置(GPU)であり、前記第2のプロセッサタイプは中央処理装置(CPU)である、請求項17に記載の異種計算システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/645,685 US20140101405A1 (en) | 2012-10-05 | 2012-10-05 | Reducing cold tlb misses in a heterogeneous computing system |
US13/645,685 | 2012-10-05 | ||
PCT/US2013/060826 WO2014055264A1 (en) | 2012-10-05 | 2013-09-20 | Reducing cold tlb misses in a heterogeneous computing system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015530683A true JP2015530683A (ja) | 2015-10-15 |
Family
ID=49305166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015535683A Pending JP2015530683A (ja) | 2012-10-05 | 2013-09-20 | 異種計算システムにおけるコールド変換索引バッファミスを低減させること |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140101405A1 (ja) |
EP (1) | EP2904498A1 (ja) |
JP (1) | JP2015530683A (ja) |
KR (1) | KR20150066526A (ja) |
CN (1) | CN104704476A (ja) |
IN (1) | IN2015DN02742A (ja) |
WO (1) | WO2014055264A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021034008A (ja) * | 2019-08-13 | 2021-03-01 | 三星電子株式会社Samsung Electronics Co.,Ltd. | プロセッサチップ及びその制御方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140208758A1 (en) | 2011-12-30 | 2014-07-31 | Clearsign Combustion Corporation | Gas turbine with extended turbine blade stream adhesion |
US9170954B2 (en) * | 2012-12-10 | 2015-10-27 | International Business Machines Corporation | Translation management instructions for updating address translation data structures in remote processing nodes |
US9235512B2 (en) * | 2013-01-18 | 2016-01-12 | Nvidia Corporation | System, method, and computer program product for graphics processing unit (GPU) demand paging |
US10437591B2 (en) * | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9396089B2 (en) | 2014-05-30 | 2016-07-19 | Apple Inc. | Activity tracing diagnostic systems and methods |
US9348645B2 (en) * | 2014-05-30 | 2016-05-24 | Apple Inc. | Method and apparatus for inter process priority donation |
CN104035819B (zh) * | 2014-06-27 | 2017-02-15 | 清华大学深圳研究生院 | 科学工作流调度处理方法及装置 |
GB2546343A (en) | 2016-01-15 | 2017-07-19 | Stmicroelectronics (Grenoble2) Sas | Apparatus and methods implementing dispatch mechanisms for offloading executable functions |
CN105786717B (zh) * | 2016-03-22 | 2018-11-16 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
DE102016219202A1 (de) * | 2016-10-04 | 2018-04-05 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Schützen eines Arbeitsspeichers |
CN109213698B (zh) * | 2018-08-23 | 2020-10-27 | 贵州华芯通半导体技术有限公司 | Vivt缓存访问方法、仲裁单元及处理器 |
CN111274166B (zh) * | 2018-12-04 | 2022-09-20 | 展讯通信(上海)有限公司 | Tlb的预填及锁定方法和装置 |
US11816037B2 (en) * | 2019-12-12 | 2023-11-14 | Advanced Micro Devices, Inc. | Enhanced page information co-processor |
CN111338988B (zh) * | 2020-02-20 | 2022-06-14 | 西安芯瞳半导体技术有限公司 | 内存访问方法、装置、计算机设备和存储介质 |
US11861403B2 (en) * | 2020-10-15 | 2024-01-02 | Nxp Usa, Inc. | Method and system for accelerator thread management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033431A1 (en) * | 2001-08-07 | 2003-02-13 | Nec Corporation | Data transfer between virtual addresses |
US20030210248A1 (en) * | 2002-05-08 | 2003-11-13 | Wyatt David A. | Method and system for optimally sharing memory between a host processor and graphics processor |
JP2008033928A (ja) * | 2006-07-31 | 2008-02-14 | Nvidia Corp | Gpuにおけるページマッピングのための専用機構 |
US20110231612A1 (en) * | 2010-03-16 | 2011-09-22 | Oracle International Corporation | Pre-fetching for a sibling cache |
US20120210071A1 (en) * | 2011-02-11 | 2012-08-16 | Microsoft Corporation | Remote Core Operations In A Multi-Core Computer |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4481573A (en) * | 1980-11-17 | 1984-11-06 | Hitachi, Ltd. | Shared virtual address translation unit for a multiprocessor system |
US5893144A (en) * | 1995-12-22 | 1999-04-06 | Sun Microsystems, Inc. | Hybrid NUMA COMA caching system and methods for selecting between the caching modes |
US6208543B1 (en) * | 1999-05-18 | 2001-03-27 | Advanced Micro Devices, Inc. | Translation lookaside buffer (TLB) including fast hit signal generation circuitry |
US6851038B1 (en) * | 2000-05-26 | 2005-02-01 | Koninklijke Philips Electronics N.V. | Background fetching of translation lookaside buffer (TLB) entries |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
EP1391820A3 (en) * | 2002-07-31 | 2007-12-19 | Texas Instruments Incorporated | Concurrent task execution in a multi-processor, single operating system environment |
US7321958B2 (en) * | 2003-10-30 | 2008-01-22 | International Business Machines Corporation | System and method for sharing memory by heterogeneous processors |
US7386669B2 (en) * | 2005-03-31 | 2008-06-10 | International Business Machines Corporation | System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer |
US20070083870A1 (en) * | 2005-07-29 | 2007-04-12 | Tomochika Kanakogi | Methods and apparatus for task sharing among a plurality of processors |
US7917723B2 (en) * | 2005-12-01 | 2011-03-29 | Microsoft Corporation | Address translation table synchronization |
US8140822B2 (en) * | 2007-04-16 | 2012-03-20 | International Business Machines Corporation | System and method for maintaining page tables used during a logical partition migration |
US7941631B2 (en) * | 2007-12-28 | 2011-05-10 | Intel Corporation | Providing metadata in a translation lookaside buffer (TLB) |
US8451281B2 (en) * | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US8397049B2 (en) * | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US8285969B2 (en) * | 2009-09-02 | 2012-10-09 | International Business Machines Corporation | Reducing broadcasts in multiprocessors |
US8615637B2 (en) * | 2009-09-10 | 2013-12-24 | Advanced Micro Devices, Inc. | Systems and methods for processing memory requests in a multi-processor system using a probe engine |
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US9128849B2 (en) * | 2010-04-13 | 2015-09-08 | Apple Inc. | Coherent memory scheme for heterogeneous processors |
KR20120129695A (ko) * | 2011-05-20 | 2012-11-28 | 삼성전자주식회사 | 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법 |
US10185566B2 (en) * | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US9235529B2 (en) * | 2012-08-02 | 2016-01-12 | Oracle International Corporation | Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with optical interconnect |
-
2012
- 2012-10-05 US US13/645,685 patent/US20140101405A1/en not_active Abandoned
-
2013
- 2013-09-20 CN CN201380051163.6A patent/CN104704476A/zh active Pending
- 2013-09-20 JP JP2015535683A patent/JP2015530683A/ja active Pending
- 2013-09-20 WO PCT/US2013/060826 patent/WO2014055264A1/en active Application Filing
- 2013-09-20 EP EP13773985.0A patent/EP2904498A1/en not_active Withdrawn
- 2013-09-20 IN IN2742DEN2015 patent/IN2015DN02742A/en unknown
- 2013-09-20 KR KR1020157008389A patent/KR20150066526A/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033431A1 (en) * | 2001-08-07 | 2003-02-13 | Nec Corporation | Data transfer between virtual addresses |
JP2003050743A (ja) * | 2001-08-07 | 2003-02-21 | Nec Corp | 仮想アドレス間データ転送方式 |
US20030210248A1 (en) * | 2002-05-08 | 2003-11-13 | Wyatt David A. | Method and system for optimally sharing memory between a host processor and graphics processor |
JP2005524907A (ja) * | 2002-05-08 | 2005-08-18 | インテル コーポレイション | ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム |
JP2008033928A (ja) * | 2006-07-31 | 2008-02-14 | Nvidia Corp | Gpuにおけるページマッピングのための専用機構 |
US20110231612A1 (en) * | 2010-03-16 | 2011-09-22 | Oracle International Corporation | Pre-fetching for a sibling cache |
US20120210071A1 (en) * | 2011-02-11 | 2012-08-16 | Microsoft Corporation | Remote Core Operations In A Multi-Core Computer |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021034008A (ja) * | 2019-08-13 | 2021-03-01 | 三星電子株式会社Samsung Electronics Co.,Ltd. | プロセッサチップ及びその制御方法 |
JP7164561B2 (ja) | 2019-08-13 | 2022-11-01 | 三星電子株式会社 | プロセッサチップ及びその制御方法 |
US11681904B2 (en) | 2019-08-13 | 2023-06-20 | Samsung Electronics Co., Ltd. | Processor chip and control methods thereof |
US11842265B2 (en) | 2019-08-13 | 2023-12-12 | Samsung Electronics Co., Ltd. | Processor chip and control methods thereof |
Also Published As
Publication number | Publication date |
---|---|
CN104704476A (zh) | 2015-06-10 |
KR20150066526A (ko) | 2015-06-16 |
EP2904498A1 (en) | 2015-08-12 |
WO2014055264A1 (en) | 2014-04-10 |
IN2015DN02742A (ja) | 2015-09-04 |
US20140101405A1 (en) | 2014-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015530683A (ja) | 異種計算システムにおけるコールド変換索引バッファミスを低減させること | |
US11500778B2 (en) | Prefetch kernels on data-parallel processors | |
US8341357B2 (en) | Pre-fetching for a sibling cache | |
JP4520790B2 (ja) | 情報処理装置およびソフトウェアプリフェッチ制御方法 | |
US9081706B2 (en) | Using a shared last-level TLB to reduce address-translation latency | |
US20200285580A1 (en) | Speculative memory activation | |
US20060179236A1 (en) | System and method to improve hardware pre-fetching using translation hints | |
US20100250853A1 (en) | Prefetch engine based translation prefetching | |
TW201312461A (zh) | 微處理器及縮短尋訪時間之方法 | |
US8397219B2 (en) | Method and apparatus for tracking enregistered memory locations | |
US20180189180A1 (en) | Optimized caching agent with integrated directory cache | |
US20120290780A1 (en) | Multithreaded Operation of A Microprocessor Cache | |
CN110959154A (zh) | 用于线程本地存储数据访问的私有高速缓存 | |
US10552334B2 (en) | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early | |
CN114238167A (zh) | 信息预取方法、处理器、电子设备 | |
US9405545B2 (en) | Method and apparatus for cutting senior store latency using store prefetching | |
US9229874B2 (en) | Apparatus and method for compressing a memory address | |
US10754791B2 (en) | Software translation prefetch instructions | |
CN114238176B (zh) | 处理器、用于处理器的地址翻译方法、电子设备 | |
Xue et al. | PreTrans: reducing TLB CAM-search via page number prediction and speculative pre-translation | |
CN115080464B (zh) | 数据处理方法和数据处理装置 | |
CN114218132B (zh) | 信息预取方法、处理器、电子设备 | |
US20050044326A1 (en) | Processor and processor method of operation | |
Derebasoglu et al. | Coherency traffic reduction in manycore systems | |
US20240338321A1 (en) | Store-to-load forwarding for processor pipelines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160823 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170627 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180206 |