JP2020507848A - メモリシステムへの加速されたアクセスを提供するための方法及び機器 - Google Patents

メモリシステムへの加速されたアクセスを提供するための方法及び機器 Download PDF

Info

Publication number
JP2020507848A
JP2020507848A JP2019540633A JP2019540633A JP2020507848A JP 2020507848 A JP2020507848 A JP 2020507848A JP 2019540633 A JP2019540633 A JP 2019540633A JP 2019540633 A JP2019540633 A JP 2019540633A JP 2020507848 A JP2020507848 A JP 2020507848A
Authority
JP
Japan
Prior art keywords
instruction
computer processor
data
memory access
exception
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
JP2019540633A
Other languages
English (en)
Other versions
JP7097371B2 (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 JP2020507848A publication Critical patent/JP2020507848A/ja
Application granted granted Critical
Publication of JP7097371B2 publication Critical patent/JP7097371B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Landscapes

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

Abstract

コンピュータシステムが提示される。コンピュータシステムは、データを格納するメモリシステムと、コンピュータプロセッサと、メモリアクセスエンジンと、を含む。メモリアクセスエンジンは、コンピュータプロセッサから計算プロセスの第1の命令を受信することであって、第1の命令が、メモリシステムからのデータにアクセスするためのものであることと、第1の命令に基づいて、メモリシステムからのデータの少なくとも部分を取得することと、データの少なくとも第1の部分の取得後に、コンピュータプロセッサが、計算プロセスの第2の命令を実行できるようにする指示をコンピュータプロセッサに送信することと、を行うように構成される。

Description

技術分野
[001] 本開示は、一般にコンピュータアーキテクチャの分野に関し、特にメモリシステムへの加速されたアクセスを提供するための方法及び機器に関する。
背景
[002] メモリシステムは、ランダムアクセスメモリ(DRAM)及びキャッシュメモリ装置を含んでもよいが、コンピュータプロセッサによって、又は他の装置(例えば入力/出力(I/O)装置)によってアクセスできる一時記憶空間を提供する。メモリシステムは、データを格納するために用いることができ、次にデータは、コンピュータプロセッサ及び/又はI/O装置にフェッチすることができる。コンピュータプロセッサはまた、コンピュータプロセッサによって、又はI/O装置によって、処理の結果を後続の処理用にメモリシステムに格納することができる。DRAMは、適度なアクセス速度を提供するが、メモリアクセス待ち時間は、特に、コンピュータプロセッサが、メモリアクセスタスクを実行するために、自らの計算資源を用いる場合に、コンピュータプロセッサにとってボトルネックのままである。メモリアクセス待ち時間は、例えば、メモリアクセスタスクが完了するまで他の命令の処理が遅延される場合に、コンピュータプロセッサの性能をひどく低下させる可能性がある。
概要
[003] 本開示の実施形態は、コンピュータシステムを提供する。コンピュータシステムは、データを格納するメモリシステムと、コンピュータプロセッサと、メモリアクセスエンジンと、を含む。メモリアクセスエンジンは、コンピュータプロセッサから計算プロセスの第1の命令を受信することであって、第1の命令が、メモリシステムからのデータにアクセスするためのものであることと、第1の命令に基づいて、メモリシステムからのデータの少なくとも部分を取得することと、データの少なくとも第1の部分の取得後に、コンピュータプロセッサが、計算プロセスの第2の命令を実行できるようにする指示をコンピュータプロセッサに送信することと、を行うように構成される。
[004] 本開示の実施形態はまた、別のコンピュータシステムを提供する。コンピュータシステムは、第1のデータ及び第2のデータを格納するメモリシステムと、第1のコア識別子に関連する第1のコンピュータプロセッサコア及び第2のコア識別子に関連する第2のコンピュータプロセッサコアを含むコンピュータプロセッサと、メモリアクセスエンジンと、を含む。メモリアクセスエンジンは、第1のコンピュータプロセッサコアから計算プロセスの第1の命令を受信することであって、第1の命令が、メモリシステムからの第1のデータにアクセスするためのものであることと、第1の命令を第1のコア識別子と関連付けることと、第1の命令に基づいて、メモリシステムからのデータの少なくとも部分を取得することと、データの少なくとも第1の部分の取得後に、第1のコンピュータプロセッサコアが、計算プロセスの第2の命令を実行できるようにするために、第1のコア識別子を含む命令をコンピュータプロセッサに送信することと、を行うように構成される。
[005] 本開示の実施形態はまた、メモリアクセス方法を提供する。方法は、コンピュータプロセッサとメモリシステムとに結合されたメモリアクセスエンジンによって実行することができる。方法は、コンピュータプロセッサから計算プロセスの第1の命令を受信することであって、第1の命令が、メモリシステムからのデータにアクセスするためのものであることと、第1の命令に基づいて、メモリシステムからのデータの少なくとも部分を取得することと、データの少なくとも第1の部分の取得後に、コンピュータプロセッサが、計算プロセスの第2の命令を実行できるようにするために、コンピュータプロセッサに指示を送信することと、を含む。
[006] 本開示の実施形態はまた、別のメモリアクセス方法を提供する。方法は、第1のデータ及び第2のデータを格納するメモリシステムと結合され、第1のコア識別子に関連する第1のコンピュータプロセッサコア及び第2のコア識別子に関連する第2のコンピュータプロセッサコアを含むコンピュータプロセッサと結合されたメモリアクセスエンジンによって実行することができる。方法は、第1のコンピュータプロセッサコアから計算プロセスの第1の命令を受信することであって、第1の命令が、メモリシステムからの第1のデータにアクセスするためのものであることと、第1の命令を第1のコア識別子と関連付けることと、第1の命令に基づいて、メモリシステムからの第1のデータの少なくとも一部を取得することと、第1のデータの少なくとも一部を取得した後で、第1のコンピュータプロセッサコアが、計算プロセスの第2の命令を実行できるようにするために、第1のコア識別子と第1の命令の実行ステータスとを含む指示をコンピュータプロセッサに送信することと、を含む。
[007] 開示される実施形態の追加の目的及び利点は、以下の説明において部分的に述べられ、且つ説明から部分的に明らになるか、又は実施形態の実施によって学習され得る。開示される実施形態の目的及び利点は、特許請求の範囲で述べられる要素及び組み合わせによって実現され達成され得る。
[008] 前述の概説及び以下の詳細な説明の両方が、例示的で単に説明であり、請求されるものとして、開示される実施形態を制限するものでないことを理解されたい。
図面の簡単な説明
[009]本開示の実施形態が使用され得る例示的なコンピュータシステムを示す概略図である。 [010]図1Aのコンピュータシステムの例示的な動作を示すタイミング図である。 [011]本開示の実施形態に従って、例示的なコンピュータシステムを示す概略図である。 [012]図2Aのコンピュータシステムの例示的なコンポーネントを示す図である。 [012]図2Aのコンピュータシステムの例示的なコンポーネントを示す図である。 [013]本開示の実施形態に従って、別の例示的なコンピュータシステムを示す概略図である。 [014]図2Aのコンピュータシステムの例示的な動作を示すタイミング図である。 [015]本開示の実施形態に従って、メモリアクセスを実行する例示的な方法を示す流れ図である。
実施形態の説明
[016] ここで、例示的な実施形態に対して詳細な参照が行われるが、それらの実施形態の例は、添付の図面に示されている。以下の説明は、添付の図面を参照し、そこでは、相異なる図面における同じ番号は、別段の表現がない限り、同じ又は同様の要素を表す。例示的な実施形態の以下の説明で明らかにされる実装形態は、本発明と一致する全ての実装形態を表すわけではない。代わりに、それらは、添付の特許請求の範囲において挙げられるような本発明に関係する態様と一致する機器及び方法の単なる例である。
[017] 本開示の実施形態は、メモリシステムへの加速されたアクセスを提供するための方法及びメモリアクセスエンジンを提供する。本開示の実施形態を用いれば、コンピュータプロセッサが計算プロセスのメモリアクセス命令を受信した後で、コンピュータプロセッサは、メモリアクセスエンジンに命令を送信することができ、メモリアクセスエンジンは、コンピュータプロセッサに代わって、メモリアクセス命令を実行することができる。結果として、コンピュータプロセッサの計算資源は、コンピュータプロセッサの性能をひどく低下させる可能性がある高い待ち時間のメモリアクセス命令の実行から解放され得る。更に、メモリアクセス命令の実行中に、メモリアクセスエンジンは、コンピュータプロセッサにステータス情報(status indication)を送信することができる。ステータス情報は、計算プロセスの後続の命令がメモリアクセス命令に対するデータ依存性を有するかどうかをコンピュータプロセッサが判定できるようにし、且つデータ依存性が除去されるか又は存在しないと分かるとすぐに、コンピュータプロセッサが後続の命令を実行できるようにする。結果として、メモリアクセスタスクの遂行は、計算プロセスの命令の実行に対して最小の割り込みしかもたらさない。これらのステップは、コンピュータプロセッサの性能を著しく改善することができる。
[018] ここで図1Aを参照すると、図1Aは、本開示の実施形態が利用され得るコンピュータシステム100を示す。図1Aに示されているように、コンピュータシステム100は、コンピュータプロセッサ101及びメモリシステム102を含む。メモリシステム102は、DRAM装置103及びキャッシュ装置104を含んでもよく、且つデータ及び命令を格納することができる。命令は、コンピュータプログラム105の一部とすることができ、コンピュータプログラム105は、処理パイプライン106によって実行された場合に、処理パイプライン106に、メモリシステム102に格納されたデータにアクセスさせる。コンピュータプログラムは、コンパイラ(図1Aには図示せず)によって、処理パイプライン106による実行用の命令セットへと生成することができる。図1Aに示されている実例として、コンピュータプログラム105は、命令105a、105b、及び105cを含む。命令105aは、「src」と名付けられたメモリ位置から「dst」と名付けられたメモリ位置に、1000バイトのデータをコピーするための「memcpy」(メモリコピー)命令とすることができる。コンパイラは、(メモリからデータを読み出すための)「ロード」命令及び(データをメモリに書き込むための)「格納」命令のセットへとmemcpy命令を復号してもよい。各ロード及び格納命令は、メモリにおける8バイトのデータにアクセスすることができる。例えば、1000バイトのデータをコピーするために、コンパイラは、125ペアの「ロード」及び「格納」命令を生成してもよく、ペアのそれぞれは、メモリ内の位置から1バイトのデータをロードし、且つそのバイトのデータを逆にメモリ内の別の位置に格納するためのものである。命令105b及び105cは、算術命令(例えば加算)とすることができる。
[019] コンピュータプロセッサ101はまた、処理パイプライン106、命令バッファ108、実行管理ユニット110、及びメモリ管理ユニット(MMU)112を含む。ユニット及びバッファのそれぞれは、例えば金属酸化物半導体電界効果トランジスタ(MOSFET)に基づいて構成された組み合わせ及び順序論理回路セットを含んでもよい。実行管理ユニット110は、処理パイプライン106による命令の実行を制御及び管理することができる。例えば、実行管理ユニット110が、コンピュータプログラム105を実行する指示を(例えば図1Aには示されていないオペレーティングシステムから)受信した後で、実行管理ユニット110は、計算プロセスを生成することができ、計算プロセスは、処理パイプライン106によるコンピュータプログラム105の実行のステータス情報を提供することができる。計算プロセスを生成した後で、実行管理ユニット110は、二次記憶装置(例えばハードディスクドライブ)からメモリシステム102にコンピュータプログラム105をロードし、且つメモリシステム102からコンピュータプログラム105の命令セットを取得するために、命令バッファ108を制御することができる。
[020] 命令セットは、コンピュータプログラムにおいて反映されたシーケンシャル順序に従って、格納され実行され得る。例えば、図1Aに示されているように、命令バッファ108は、バッファヘッドポインタ及びバッファテールポインタを含む。実行管理ユニット110の管理下で、命令バッファ108は、バッファヘッドポインタに関連するバッファ位置に格納された命令を実行用に処理パイプライン106にフェッチしてもよい。処理パイプライン106は、命令を実行する場合に、命令に従ってデータ114を送信又は受信するために、メモリシステム102にアクセスすることができる。命令をフェッチした後で、命令バッファ108は、バッファから命令を除去し、且つ実行用に次の命令をフェッチするために、次のバッファ位置にバッファヘッドポインタを移動させることができる。
[021] 実行管理ユニット110はまた、様々な基準に基づいて、命令バッファ108による命令のフェッチングを制御することができる。例えば、実行管理ユニット110は、命令が、例外を引き起こすかどうかを判定してもよい。命令の実行が、コンピュータプロセッサ用の異常な又は例外的な動作条件につながる可能性がある場合に、例外が発生し得る。実例として、図1Aのコンピュータプログラム105のmemcpy命令は、メモリシステム102内の存在しないメモリ位置、又はコンピュータプロセッサ101がアクセス許可を有しないメモリ位置へと、コンピュータプロセッサ101にアクセスさせる可能性がある。
[022] MMU112は、相異なる計算プロセス用にメモリ空間を割り当てて管理する。実行管理ユニット110が、コンピュータプログラム105の実行用に計算プロセスを生成した後で、MMU112は、メモリシステム102における物理メモリ位置セットを割り当てることができ、各メモリ位置は、物理アドレスと関連付けられる。MMU112はまた、仮想メモリ空間を生成し、且つ物理メモリ位置セットへのエイリアスとして、仮想メモリ空間を計算プロセスに提供することができる。仮想メモリ空間は、ページセットを含むことができ、ページのそれぞれは、コンテイジャスメモリ空間を形成するために、連続仮想メモリ位置セットを含むことができる。各仮想メモリ位置は、仮想メモリアドレスと関連付けることができ、且つMMU112によって割り当てられた物理メモリ位置にマッピングすることができる。ページは、典型的には、4096バイトのメモリ空間を含み、memcpy命令105aによってアクセスされる1000バイトのデータは、仮想メモリ空間の1ページ内に格納することができる。
[023] 仮想メモリアドレスと物理メモリアドレスとの間のマッピングは、MMU112によって維持されるページテーブルに格納することができる。ページテーブルはまた、例外を検出するために実行管理ユニット110によってアクセス可能である。例えば、memcpy命令に関連する仮想メモリアドレスに基づいて、実行管理ユニット110は、対応する物理アドレスセットを取得するために、ページテーブルを参照することができる。実行管理ユニット110が、コンピュータプログラム105によって参照される仮想アドレス用の物理アドレスをページテーブルから見つけることができない場合に、又は物理アドレスが、コンピュータプログラム105(若しくは処理パイプライン106)にとってアクセス可能でない場合に、実行管理ユニット110は、memcpy命令が、例外を引き起こすと判定してもよい。かかる場合に、特殊処理(例えばコンピュータプログラムの実行の通常フローの変更、実行の終了等)が、例外を扱うために必要とされ得る。例えば、実行管理ユニット110は、コンピュータプログラム105の実行のフローを変更すること(例えばmemcpy命令の省略、コンピュータプログラム等105の実行の終了等)を決定してもよい。
[024] 例外の取り扱いは、割り込みが、コンピュータプロセッサ201に、計算プロセス(例えばコンピュータプログラム205用の計算プロセス)の実行を中断させ、且つ第2の計算プロセス(例えば割り込みの承認)を開始させることができる点で、割り込みの取り扱いとは異なる。第2の計算プロセスが完了した後で、コンピュータプロセッサ201は、コンピュータプログラム205用の計算プロセスに逆に切り替わり、且つコンピュータプログラム205の命令の残りを実行してもよい。他方で、例外の取り扱い中に、コンピュータプロセッサ201は、例外を引き起こすコンピュータプロセスの実行を維持する。
[025] 更に、実行管理ユニット110はまた、後続の命令が、先行する命令に対するデータ依存性を有する場合に、後続の命令の実行を保留することができる。実行はまた、計算資源が利用可能になるまで、保留することができる。例えば、図1Aに示されているように、コンピュータプログラム105の命令105b、即ち「$R3=dst[5]+1」は、「dst」と名付けられたメモリ位置に格納されたデータを要求し、データはまた、前のmemcpy命令(命令105a)によって修正される。かかるデータ依存性の判定に基づいて、実行管理ユニット110は、命令105bが、最新のメモリデータで動作することを保証するために、命令105aの実行が完了するまで、命令105bの実行を保留することができる。更に、命令105c($R2=$R1+1)と命令105a及び105bとの間にデータ依存性がなくても、命令105cの実行はまた、限られた計算資源ゆえに遅延されてもよい。例えば、命令バッファ108は、限られたエントリ数を有し、命令105cは、memcpy命令用の命令の少なくとも幾つかが、処理パイプライン106にフェッチされ、且つ命令バッファ108から除去されるまで、命令バッファ108に格納する(且つフェッチング用に利用可能になる)ことができない。
[026] ここで図1Bを参照すると、図1Bは、図1Aのコンピュータプログラム105の実行用のタイミング図を示す。図1Bに示されているように、命令バッファ108から処理パイプライン106に各命令をフェッチする(メモリから1バイトのデータを読み出すこと及びメモリに1バイトのデータを格納することを含む)前に、実行管理ユニット110は、例えば、命令によって参照される仮想メモリアドレスに対応する物理メモリアドレスを取得するために、ページテーブルを参照することによって、例外確認を実行する。命令が例外確認に通ると判定した後で、実行管理ユニット110は、処理用に処理パイプライン106に命令をフェッチすることができる。次に、memcpy命令105aの実行が完了した後で、命令105b及び105cは、実行用に処理パイプライン106にフェッチされる。
[027] 図1Bに示されているように、memcpy命令105aの実行は、コンピュータプログラム105の他の命令の実行に対して極めて大きい遅延を引き起こす可能性がある。例えば、例外確認は、1000の1バイトメモリアクセス命令のそれぞれのために実行され、それは、memcpy命令105aの実行に遅延を加える。更に、メモリアクセス命令が、命令バッファ108をいっぱいに満たすので、memcpy命令105aの実行結果に依存しない命令105cを含む他の命令の実行もまた、メモリアクセス命令の少なくとも幾つかが、フェッチされて命令バッファ108から除去されるのを待たなければならない。
[028] 高い待ち時間のメモリアクセス動作によってもたらされる負担を軽減するために、メモリアクセスエンジンが、メモリアクセス動作を実行するために提供され得、メモリアクセスエンジンは、コンピュータプロセッサ101の計算資源を他の動作用に使用できるようにする。ここで図2Aを参照すると、図2Aは、本開示の実施形態に基づくコンピュータシステム200を示す。図2Aに示されているように、コンピュータシステム200は、コンピュータプロセッサ201を含み、コンピュータプロセッサ201は、図1Aの処理パイプライン106及び命令バッファ108、実行管理ユニット210、並びにMMU212を含む。コンピュータシステム200はまた、メモリアクセスエンジン220、及び図1Aのメモリシステム102を含む。メモリアクセスエンジン220は、MOSFETに基づいて構成された組み合わせ及び順序論理回路セットを含んでもよい。
[029] 実行管理ユニット210は、処理パイプライン106によって、且つメモリアクセスエンジン220によって、コンピュータプログラム205の命令の実行を制御及び管理することができる。実行管理ユニット210が、コンピュータプログラム205を実行するために、(例えば図2Aに示されていないオペレーティングシステムから)指示を受信した後で、実行管理ユニット210は、コンピュータプログラム205用の計算プロセスを生成し、且つ二次記憶装置(例えばハードディスクドライブ)からメモリシステム102に、コンピュータプログラム205のコンパイルされた命令をロードすることができる。実行管理ユニット210は、メモリシステム102から命令を取得し、且つバッファに命令を格納するために、命令バッファ108を制御することができる。
[030] バッファに命令を格納した後で、実行管理ユニット210はまた、命令の幾つかにおける実行をメモリアクセスエンジン200に委託することを決定することができる。決定は、様々な基準に基づくことができる。例として、実行管理ユニット210は、限定するわけではないが、memcpy及び「strcpy」(ストリングコピー)命令を含む、メモリ内のデータのコピー又は移動を伴う任意の命令の実行をメモリアクセスエンジン200に委託することを決定してもよい。別の例として、実行管理ユニット210はまた、メモリシステム102への所定数の書き込み及び読み出し動作を要求するメモリデータコピー/移動命令をメモリアクセスエンジン220に委託することを決定してもよい。実例として、実行管理ユニット210は、復号命令205aの結果に基づいて、命令が、「src」と名付けられたメモリ位置から「dst」と名付けられたメモリ位置に、12000バイトのデータをコピーするためのmemcpy命令を含むと判定してもよい。実行管理ユニット210は、命令205aが、多数(例えば12000)の読み出し動作(例えばロード命令)及び書き込み動作(例えば格納命令)をメモリシステム102に要求し、且つメモリアクセス待ち時間ゆえに処理パイプライン106に非常に大きな遅延をもたらし得ると判定してもよい。これらの判定に基づいて、実行管理ユニット210は、命令205aの実行をメモリアクセスエンジン220に委託してもよい。別の例として、実行管理ユニット210はまた、キャッシュミスの場合に、メモリデータコピー/移動命令の実行をメモリアクセスエンジン220に委託することを決定してもよく、キャッシュミスは、例えばキャッシュ装置104に対する読み出し及び書き込み動作よりはるかに大きなアクセス待ち時間で、DRAM103への読み出し及び書き込み動作を要求し得る。これらの例において、実行管理ユニット210は、命令205aを表すロード及び格納命令セットを実行用にメモリアクセスエンジン220に送信してもよい。次に、メモリアクセスエンジン220は、メモリシステム102においてデータ222を取得及び/又は格納することができる。
[031] 実行用にメモリアクセスエンジン220に命令205aを送信した後で、実行管理ユニット210は、処理パイプライン106が残りの命令を実行できるようにするために、(例えばバッファヘッドポインタの位置を変更することによって)対応するロード及び格納命令を命令バッファ108から除去してもよい。バッファヘッドポインタに関連する命令が、メモリアクセスエンジン220によって実行されている命令のどれにもデータ依存性を有しないと実行管理ユニット210が判定した場合に、実行管理ユニット210は、メモリアクセスエンジン220が命令の実行を完了したかどうかにかかわらず、バッファヘッドポインタに関連する命令を実行用に処理パイプライン106にフェッチするために、命令バッファ108を制御することができる。実例として、図2Aに示されているように、実行用にメモリアクセスエンジン220に命令205aを送信した後で、実行管理ユニット210は、命令205bが命令205aに対してデータ依存性を有しないという判定に基づいて、処理パイプライン106に命令205bをフェッチするために命令バッファ108を制御してもよい。これによって、命令205bの実行は、後ではなく、メモリアクセス命令205aの実行と並行して行うことができ、且つメモリシステム102のメモリアクセス待ち時間(特にDRAM部にアクセスするための)によってそれほど影響されないようにすることができる。結果として、コンピュータプロセッサ202の性能は、改善することができる。
[032] 他方で、バッファヘッドポインタに関連する命令が、メモリアクセスエンジン220によって実行されているメモリアクセス命令に対するデータ依存性を有すると実行管理ユニット210が判定した場合に、実行管理ユニット210は、メモリアクセス命令の少なくとも幾つかにおける実行が完了されたという指示224を実行管理ユニット210がメモリアクセスエンジン220から受信するまで、処理パイプライン106への命令のフェッチングを保留してもよい。実行管理ユニット210はまた、指示224を待つ間に、データ依存性を有しない他の命令をフェッチしてもよい。実例として、図2Aに示されているように、実行管理ユニット210は、命令205cが、メモリ位置「dst[099]」に格納された値に加算動作を実行することを決定してもよい。更に、実行管理ユニット210はまた、メモリ位置「dst[099]」が、「dst」メモリ位置と関連付けられ、「dst」メモリ位置が、memcpy命令205aの実行中に更新されることを決定してもよい。従って、実行管理ユニット210は、命令205cが、命令205aに対するデータ依存性を有すると判定してもよい。この判定に基づいて、実行管理ユニット210は、メモリ位置dst[099]が、memcpy命令の実行によって更新されたという指示224を実行管理ユニット210がメモリアクセスエンジン220から受信するまで、処理パイプライン106への命令205cのフェッチングを遅延させてもよい。幾つかの実施形態において、実行管理ユニット210はまた、memcpy命令205aの実行が完了したという指示224を実行管理ユニット210が受信するまで、処理パイプライン106への命令205cのフェッチングを遅延させてもよい。
[033] 指示224は、メモリアクセスエンジン220による命令の実行ステータスを実行管理ユニット210に提供するように構成された、メモリアクセスエンジン220から実行管理ユニット210への(又はコンピュータプロセッサ202の他のコンポーネントへの)通信の一部とすることができる。ここで図2Bを参照すると、図2Bは、図2Aの指示224の例として指示224aを示す。図2Bに示されているように、指示224aは、1つ又は複数のメモリアクセス命令識別子225と1つ又は複数のステータスインジケータ226との間のマッピングを含むことができる。命令識別子225は、実行管理ユニット210が、メモリアクセスエンジン220に送信された複数の命令の実行ステータスを追跡できるようにする。ステータスインジケータ226は、命令に特有のステータスデータを含むことができる。例えば、命令が、メモリデータコピー又は移動動作を含む場合に、ステータスインジケータ226は、例えば、コピー又は移動されたメモリデータの量を示す数値を含むことができる。
[034] 幾つかの実施形態において、指示224aはまた、コア識別子228を含むことができ、コア識別子228は、命令を送信するプロセッサコアを識別することができる。コンピュータシステム200が、マルチコアプロセッサを含む場合に、各コアは、処理パイプライン及び実行管理ユニットを含むことができ、且つ実行用にメモリアクセスエンジン220に命令を送信することができる。かかる場合に、メモリアクセスエンジン220は、各コアから受信する各命令とステータス情報を関連付ける指示224を生成し、且つ指示224を各コアにブロードキャストすることができる。コアが指示224を受信すると、次にコアは、メモリアクセスエンジン220に送信した命令用のステータス情報を識別するために、コア識別子228を参照することができる。メモリアクセスエンジン220は、例えば実行管理ユニット210からコア識別子228を受信してもよい。
[035] 図2Cは、指示224bを示し、指示224bは、指示224の別の例とすることができる。指示224bは、memcpy命令の実行ステータスを提供するために用いることができる。図2Cに示されているように、指示224bは、コア識別子228と、ソース仮想アドレス230、宛先仮想アドレス232、ソース物理アドレス234、及び宛先物理アドレス236用のアドレスフィールドセットと、を含む。これらのアドレスは、特定のmemcpy命令のパラメータから導き出すことができ、且つMMU212によって提供することができる。
[036] 実例として、命令205a用に、「memcpy(dst,src,12000)」、「dst」、及び「src」は、仮想アドレス空間におけるメモリ位置のラベルとすることができる。仮想アドレス空間は、コンピュータプログラム205の実行に関連する計算プロセスへとMMU212によって割り当てることができる。例えば、「src」は、コピーされるデータ用のメモリ位置とすることができ、且つMMU212によって割り当てられたソース仮想アドレス230と関連付けることができ、一方で「dst」は、データで更新されるメモリ位置とすることができ、且つMMU212によって割り当てられた宛先仮想アドレス232と関連付けることができる。更に、ソース仮想アドレス230及び宛先仮想アドレス232は、それぞれ、MMU212によって提供されるページテーブルに従って、メモリシステム102のソース物理アドレス234及び宛先物理アドレス236へマッピングすることができる。
[037] 実行管理ユニット210からmemcpy命令205a(コンパイルされたロード及び格納命令セットを含む)を受信した後で、メモリアクセスエンジン220は、命令に関連する仮想及び物理アドレスを取得するために、1つ又は複数の要求をMMU212に送信し、且つMMU212によって提供された仮想及び物理アドレスを、ソース仮想アドレス230、宛先仮想アドレス232、ソース物理アドレス234、及び宛先物理アドレス236のフィールドに格納することができる。メモリアクセスエンジン220はまた、memcpy命令205aのパラメータに基づいて、コピーされるべき仮想メモリ空間のページ数を決定することができる。例えば、「memcpy(dst,src,12000)」は、12000バイトのデータが、コピーされるべきであることを示す。4096バイトのページサイズを仮定すると、メモリアクセスエンジン220は、合計3ページ分のデータがコピーされるべきことを決定し、残りページ238のフィールドの数を「3」で初期化することができる。残りページオフセット240は、まだコピーされていない特定のページにおけるデータの開始位置を示すことができ、且つ4096において初期化することができる。
[038] メモリアクセスエンジン220がメモリシステムにおける「src」メモリ位置から「dst」メモリ位置までデータをコピーし始めるときに、メモリアクセスエンジン220は、ソース仮想アドレス230、宛先仮想アドレス232、ソース物理アドレス234、宛先物理アドレス236、残りページ238の数、及び残りページオフセット240に関連する値を更新し、更新された指示224bを実行管理ユニット210に送信することができる。幾つかの実施形態において、メモリアクセスエンジン220は、データコピーを実行するために、キャッシュ装置104から一キャッシュラインのデータ(例えば64バイト)(又はキャッシュミスがある場合に、DRAM装置103から同じサイズのデータ)用の読み出し及び書き込み動作を一度に実行してもよく、且つ各読み出し及び書き込み動作後に、これらの値を更新することができる。
[039] 実例として、メモリアクセスエンジン220が、仮想メモリ空間のページ内の位置からデータをコピーするために、1つの読み出し及び1つの書き込み動作を実行した後で、メモリアクセスエンジン220は、残りページオフセット240に関連する値を64バイトだけ減少させることができる。メモリアクセスエンジン220はまた、ページコピーが完了されたことを残りオフセット240における値が示すまで、例えばソース物理アドレス234及び宛先物理アドレス236の値を同様に64バイトだけ増加させることによって、ソース物理アドレス234及び宛先物理アドレス236を更新してもよい。次に、メモリアクセスエンジン220は、次のページ用の更新されたソース及び宛先物理アドレス用の要求をMMU212に送信することができる。幾つかの実施形態において、メモリアクセスエンジン220はまた、ページの処理の初めに要求を送信し、ページの各仮想ソース及び宛先アドレスにマッピングされたソース及び宛先物理アドレスを受信し、且つそれを変換索引バッファ(TLB)に格納することができる。TLBは、仮想アドレスセットと物理アドレスセットとの間の、MMU212から最近受信されたマッピングを格納するためのキャッシュとして動作することができる。次に、メモリアクセスエンジン220は、ページ用の読み出し/書き込み動作用の更新されたソース物理アドレス234及び宛先物理アドレス236のためにTLBを参照することができる。幾つかの実施形態において、コンピュータプロセッサ201はまた、TLBを含んでもよい。コンピュータプロセッサ201は、例えば、処理パイプライン106で発生するTLB無効化要求及びグローバルTLBシュートダウンイベントをアクセスエンジン220に送信することによって、コンピュータプロセッサ201のTLBに格納された内容と、メモリアクセスエンジン220のTLBに格納された内容との間の一致を維持することができる。
[040] メモリアクセスエンジン220が、1ページ用のデータの全てをコピーし終えた後で(それは、残りページオフセット240の値がゼロになることによって反映され得る)、メモリアクセスエンジン220は、次のページに進むことができる。メモリアクセスエンジン220は、残りページ238の数に関連する値を1だけ減少させ、且つソース仮想アドレス230及び宛先仮想アドレス232の値を4096(ページのサイズ)だけ増加させることができる。memcpy命令の実行は、残りページ238の値がゼロになるときに完了する。
[041] 実行管理ユニット210はまた、指示224bからのデータ依存性の判定に基づいて、処理パイプライン106への後続の命令(例えば命令205c)のフェッチングを遅延させてもよい。例えば、後続の命令が、memcpy命令205a用のソースメモリ位置を更新するための格納動作を含む場合に、実行管理ユニット210は、リードアフターライト依存性が存在すると判定してもよい。実行管理ユニット210は、ソースが後続の命令によって更新される前に、memcpy命令がソースを読み出すことを保証するために、memcpy命令が、ソースアドレス位置からデータをコピーしてしまうまで、後続の命令のフェッチングを遅延させてもよい。ライトアフターリード依存性の存在(又は除去)を判定するために、実行管理ユニット210は、指示224bに基づいて、現在の読み出し仮想アドレスが、次の例示的な式によって更新されることを決定してもよい。
現在の読み出しアドレス=仮想アドレス+残りページの数×4096+残りページオフセット (式1)
[043] ここで、仮想アドレスは、ソース仮想アドレス230又は宛先仮想アドレス232に関連する値とすることができ、残りページの数は、残りページ238の数に関連する値とすることができ、残りページオフセットは、残りページオフセット240に関連する値とすることができる。後続の命令の格納動作によって更新される仮想書き込みアドレスが、式1に基づいて決定される現在の読み出しアドレスを超過する場合に、実行管理ユニット210は、後続の命令が、memcpy命令205aによってまだ読み出されていないアドレス位置を更新することを試み、且つライトアフターリード依存性が存在すると判定してもよい。実行管理ユニット210は、指示224aに基づいて、現在の読み出しアドレスが後続の命令の仮想の書き込みアドレスを超過すること、及びライトアフターリード依存が除去されたことを実行管理ユニット210が判定するまで、処理パイプライン106への後続の命令のフェッチングを遅延させてもよい。
[044] 更に、後続の命令が、memcpy命令205a(例えば命令205c)によって更新されたアドレス位置からのロード動作を含む場合に、実行管理ユニット210は、リードアフターライト依存性が存在すると判定し、且つ後続の命令が最新のデータを読み出すことを保証するために、アドレス位置が更新されてしまうまで、後続の命令のフェッチングを遅延させてもよい。リードアフターライト依存性の存在(又は除去)を判定するために、実行管理ユニット210は、指示224bに基づいて、次の例示的な式に従って、現在の書き込み仮想アドレスが更新されることを決定してもよい。
現在の書き込みアドレス=仮想アドレス+残りページの数×4096+残りページオフセット (式2)
[046] ここで、仮想アドレスは、ソース仮想アドレス230又は宛先仮想アドレス232に関連する値とすることができ、残りページの数は、残りページ238の数に関連する値とすることができ、残りページオフセットは、残りページオフセット240に関連する値とすることができる。後続の命令のロード動作の仮想読み出しアドレスが、式2に基づいて決定された現在の書き込みアドレスを超過する場合に、実行管理ユニット210は、後続の命令が、memcpy命令205aによってまだ更新されていないメモリ位置を読み出すように試み、且つリードアフターライト依存性が存在すると判定してもよい。実行管理ユニット210はまた、指示224aに基づいて、現在の書き込みアドレスが後続の命令の仮想読み出しアドレスを超過すること、及びリードアフターライト依存性が除去され得ることを実行管理ユニット210が判定するまで、処理パイプライン106への後続の命令のフェッチングを遅延させてもよい。
[047] 幾つかの実施形態において、memcpy命令205aの読み出し/書き込み動作を実行する前に、メモリアクセスエンジン220(又は実行管理ユニット210)は、読み出し/書き込み動作が例外を引き起こし得るかどうかを判定してもよい。上記のように、例外は、例えば、memcpy命令が、存在しないメモリシステム102内のメモリ位置又はコンピュータプロセッサがアクセス許可を有しないメモリ位置へコンピュータプロセッサにアクセスさせる場合に、発生し得る。例外の判定は、例えば、メモリアクセスエンジン220が、ページのための、又は特定のmemcpy命令によって更新されているページの全てのための物理ソース及び宛先アドレス用の要求を送信する場合に行われ得る。MMU212が、要求された物理アドレスの少なくとも1つを提供できない場合に、メモリアクセスエンジン220は、memcpy命令が例外を引き起こすと判定してもよい。幾つかの実施形態において、メモリアクセスエンジン220は、受信された物理アドレスがキャッシュ装置104のキャッシュラインの境界と整列するかどうかを判定してもよく、且つmemcpy命令が、不整列のアドレス空間で動作し、不整列のアドレス空間が、1つのキャッシュラインに対する読み出し/書き込み動作をメモリアクセスエンジン220が一度に実行するのを妨げ得ると判定してもよい。これは、例えば、コンピュータプログラム205が、memcpy動作用のキャッシュライン整列バッファを提供するために、ヒープ管理ライブラリにおけるmallocなどのバッファ割り当てルートを組み込まない場合に発生する可能性がある。
[048] これらの全ての例において、メモリアクセスエンジン220は、例外であることを示す指示情報をコンピュータプロセッサ201に送信してもよく、コンピュータプロセッサ201は、例外を扱うために、例外ハンドラ(図2Aには示されていない)を含んでもよい。例外情報は、命令バッファ108の一部として格納することができる。例えば、命令バッファ108の各エントリは、例外ビット(図2Aには示されていない)と関連付けることができる。memcpy命令205aが、(例えば物理アドレスの取得の失敗ゆえに)例外を引き起こし得るという指示をメモリアクセスエンジン220から受信した後で、実行管理ユニット210は、memcpy命令と関連付けられる、バッファに格納された格納及びロード命令の全てのための例外ビットをアサートしてもよい。コンピュータプロセッサ201は、例えば、コンピュータプログラム205の実行の通常のフローを変更すること、コンピュータプログラム205の実行を終了すること等によって例外を扱うために、例外ハンドラ(図2Aには示されていない)を含んでもよい。
[049] 上記のように、本開示の実施形態はまた、多数のプロセッサコアを備えたコンピュータシステムにおいて用いることができる。ここで図2Dを参照すると、図2Dは、本開示の実施形態に基づくコンピュータシステム250を示す。図2Dに示されているように、コンピュータシステム250は、コンピュータプロセッサコアセット251−258を含み、これらのそれぞれは、レベル1(L1)データ及び命令キャッシュ、レベル−2(L2)キャッシュ、並びにレベル−3(L3)キャッシュを有する。これらのキャッシュの間で、L1キャッシュは、最小のサイズを有するが、最速のアクセス速度を提供し、一方でL3キャッシュは、最大のサイズを有するが、最低のアクセス速度を提供する。各コンピュータプロセッサコアは、コア識別子と関連付けられる。各コンピュータプロセッサコアはまた、図2Aの処理パイプライン106、実行管理ユニット210、及びメモリ管理ユニット212を含む(それらは、図2Dには示されていない)。コンピュータプロセッサコアのそれぞれは、計算プロセスを実行してもよい。複数のコンピュータプロセッサコアはまた、計算プロセスの完了を速めるために、同じ計算プロセスに関連する相異なる命令を同時に実行してもよい。
[050] コンピュータシステム250は、図2Aのメモリアクセスエンジン220を更に含み、メモリアクセスエンジン220は、コンピュータプロセッサコアに代わってメモリアクセス動作(L3キャッシュへのアクセスを含む)を実行することができる。メモリアクセスエンジン220は、コンピュータシステム250のコンピュータプロセッサコアから分離されたホップとして存在してもよい。メモリアクセスエンジン220は、例えばチャネル260を介してコンピュータプロセッサコア251〜258のそれぞれと通信してもよく、チャネル260を用いてメモリアクセスエンジン220は、図2Cの指示224bをブロードキャストすることができる。上記のように、指示224bは、メモリアクセス命令の実行ステータス情報をコア識別子228と関連付ける。コンピュータプロセッサコア251−258のそれぞれは、チャネル260から指示を拾い上げ、且つ適合するコア識別子に関連するステータス情報に基づいて、命令のフェッチングを決定することができる。
[051] 更に、メモリアクセスエンジン220はまた、仮想アドレスと物理アドレスとの間の最近受信されたマッピングを格納するために用いることができる装置側TLB270を格納する。装置側TLB270はまた、MMUシステム全体と一致するように維持されるために更新することができる。例えば、コンピュータプロセッサコア251〜258のそれぞれにおけるMMUは、仮想アドレスと物理アドレスとの間のマッピングを格納する1つ又は複数のページテーブルを維持してもよい。それらのページテーブルは、(例えばオペレーティングシステムによって、又は他のエージェントによって)更新されてもよい。その場合に、MMUは、チャネル260を通じて更新を循環させてもよい。装置側TLB270はまた、チャネル260を通じて更新を拾い上げ、且つそれに応じて、格納されたマッピングを更新することができる。
[052] ここで図2Eを参照すると、図2Eは、図2Aのコンピュータシステム200によるコンピュータプログラムの実行用のタイミング図を示す。図2Eに示されているように、命令バッファ108は、命令280a(memcpy命令)、命令280b及び280c(命令280aに対するデータ依存性を有しない算術命令)、並びに命令280d(命令280aに対するデータ依存性を有する)を格納する。実行管理ユニット210が、命令280aを受信した後で、それは、memcpy命令によってアクセスされた仮想メモリ空間の全てのページの例外確認を実行する。同時に、実行管理ユニット210はまた、後続の命令280b、280c及び280dが、命令280aに対するデータ依存性を有するかどうかを判定する。命令280b及び280cが、データ依存性を有しないと判定した後で、実行管理ユニット210は、時間t0において実行用に処理パイプライン106に命令280bをフェッチし、時間t1において命令280cが後に続く。これらの命令がフェッチされた後で、それらの命令は、命令バッファ108から除去される。他方で、実行管理ユニット210はまた、命令280dが、memcpy命令に対するデータ依存性を有すると判定し、且つ処理パイプライン106への命令のフェッチングを保留する。
[053] memcpy用の例外確認が完了した後で、メモリアクセスエンジン220は、読み出し及び書き込み動作を実行し、且つmemcpy命令の実行ステータスを提供するために、実行管理ユニット210に指示224を送信し始める。時間t2に、指示224に基づいて、実行管理ユニット210は、命令280dによってアクセスされるメモリ位置が、memcpy命令によって更新されおり、且つデータ依存性が除去されたと判定する。従って、実行管理ユニット210は、実行用に処理パイプライン106に命令280dをフェッチし、且つバッファから命令280dを除去する。これは、他の後続の命令が、命令バッファ108に格納され、且つフェッチされるのを待つことができるようにする。
[054] ここで図3を参照すると、図3は、メモリシステムにアクセスする例示的な方法300を示す。方法は、コンピュータプロセッサ201及びメモリアクセスエンジン220を含むコンピュータシステム(例えばコンピュータシステム200)によって実行することができる。幾つかの実施形態において、方法はまた、例えばそれがメモリアクセスエンジン220を含む場合に、コンピュータプロセッサ201だけによって実行することができる。
[055] 最初の開始後に、方法300は、ステップS301に進み、そこでコンピュータプロセッサ201は、実行用にメモリアクセスエンジン220にメモリアクセス命令(例えばmemcpy命令)を送信する。メモリアクセス命令は、計算プロセスの一部として実行されてもよく、且つ仮想アドレスセットに関連するロード及び格納命令セットを含んでもよい。送信は、例えば、メモリアクセス命令がメモリ102への多数のロード及び格納動作を含むという判定に基づくことができる。コンピュータプロセッサ201からメモリアクセス命令を受信した後で、メモリアクセスエンジン220は、ステップS302において、メモリアクセス命令の仮想アドレスにマッピングされた物理アドレス用の要求を送信することができる。コンピュータプロセッサ201のメモリ管理ユニット212は、ステップS303において、要求された物理アドレスの少なくとも幾つかをメモリアクセスエンジン220に送信してもよい。
[056] メモリアクセスエンジン220は、ステップS304において、例外が検出されるかどうかを判定してもよい。例えば、コンピュータプロセッサ201が物理アドレスを提供できない場合に、例外が検出され得る。ステップS304において例外が検出される場合に、メモリアクセスエンジン220は、ステップS305において、メモリアクセス命令が例外を引き起こし得ることをコンピュータプロセッサ201の実行管理ユニット210に伝えてもよく、それは、コンピュータプロセッサ201が、ステップS306において例外を扱うことができるようにする。
[057] 他方で、ステップS304において例外が検出されない場合に、メモリアクセスエンジン220は、ステップS307において、メモリアクセス命令用のメモリアクセスタスクを実行することができる。上記のように、メモリアクセスエンジン220は、メモリシステム102において、一キャッシュラインのデータを一度にロード又は格納してもよい。1つ又は複数のメモリアクセスタスクを実行した後で、メモリアクセスエンジン220は、ステップS308において、メモリアクセス命令の実行ステータスに関する指示を実行管理ユニット210に送信してもよい。指示は、例えば、メモリアクセスエンジン220によってアクセスされている物理的及び仮想アドレスセットや、どれくらい多くのデータがまだ修正されていない等を含んでもよい。幾つかの実施形態において、指示は、図2Cの残りページ238の数を含む、指示224bに含まれる情報を含んでもよい。メモリアクセスエンジン220はまた、ステップS309において、メモリアクセスタスクの全てが完了されたかどうかを判定してもよい。判定は、例えば、残りページの数がゼロであるかどうかに基づくことができる。メモリアクセスエンジン220が、ステップS309において、残りのタスクがあると判定した場合に、メモリアクセスエンジン220は、(ステップS307において)実行を継続してもよい。
[058] 更に、実行管理ユニット210が、メモリアクセスエンジン220からステータス情報を受信した後で、実行管理ユニット210は、メモリアクセス命令の実行が例外を引き起こさないと判定してもよい。次に、ステップS310において、同じ計算プロセスの後続の命令を処理するために、命令バッファ108からメモリアクセス命令を除去してもよい。実行用に命令バッファ108から処理パイプライン106に後続の命令をフェッチする前に、実行管理ユニット210は、ステップS311において、後続の命令が、メモリアクセス命令に対するデータ依存性(例えばリードアフターライト、ライトアフターリード等)を有するかどうかを判定してもよい。判定は、例えば、後続の命令に関連するソース又は宛先仮想アドレスと、ステップS308において受信されたステータス情報に基づいて決定された現在のソース/宛先仮想アドレスと、上記の式1及び2と、に基づくことができる。ステップS311においてデータ依存性が検出されない場合に、コンピュータプロセッサ201の命令バッファ108は、ステップS312において、後続の命令を処理パイプライン206にフェッチしてもよい。データ依存性が検出される場合に、命令バッファ108は、ステップS308において受信された、更新されたステータス情報に基づいて、データ依存性が除去されたと命令バッファ108が判定するまで、フェッチングを遅延させてもよい。
[059] 本発明が、上記で説明され、且つ添付の図面に示された構成に正確に限定されるわけではなく、様々な修正及び変更が、本発明の範囲から逸脱せずに行われ得ることが認識されよう。本発明の範囲が、添付の特許請求の範囲によってのみ限定されるべきことが意図されている。

Claims (20)

  1. コンピュータシステムであって、
    データを格納するメモリシステムと、
    コンピュータプロセッサと、
    メモリアクセスエンジンであって、
    前記コンピュータプロセッサから計算プロセスの第1の命令を受信することであって、前記第1の命令が、前記メモリシステムからの前記データにアクセスするためのものであることと、
    前記第1の命令に基づいて、前記メモリシステムからの前記データの少なくとも部分を取得することと、
    前記データの前記少なくとも第1の部分の前記取得後に、前記コンピュータプロセッサが、前記計算プロセスの第2の命令を実行できるようにする指示を前記コンピュータプロセッサに送信することと、
    を行うように構成されるメモリアクセスエンジンと、
    を含むコンピュータシステム。
  2. 前記メモリアクセスエンジンが、
    前記第1の命令に関連する仮想アドレスを取得し、
    前記仮想アドレスに基づいて、前記第1の命令に関連する物理アドレスを取得し、
    前記物理アドレスの取得の結果に基づいて、前記第1の命令が、例外を引き起こすかどうかを判定し、
    前記第1の命令が例外を引き起こすという判定に応じて、前記コンピュータプロセッサに前記例外を扱わせる指示を前記コンピュータプロセッサに送信するように更に構成される、請求項1に記載のコンピュータシステム。
  3. 前記第1の命令が例外を引き起こすかどうかの前記判定が、
    前記物理アドレスに関連するページが存在するかどうかを判定し、
    前記物理ページが存在しないという判定に応じて、前記第1の命令が例外を引き起こすと判定するように、前記メモリアクセスエンジンが更に構成されることを含む、請求項2に記載のコンピュータシステム。
  4. 前記第1の命令が例外を発生させるかどうかの前記判定が、
    前記物理アドレス及び前記仮想アドレスの少なくとも1つに関連するページが、アクセス可能かどうかを判定し、
    前記ページがアクセス可能ではないという判定に応じて、前記第1の命令が例外を引き起こすと判定するように、前記メモリアクセスエンジンが更に構成されることを含む、請求項2に記載のコンピュータシステム。
  5. 前記メモリシステムが、複数のキャッシュラインを備えたキャッシュを含み、前記第1の命令が例外を引き起こすかどうかの前記判定が、
    前記第1の命令に関連するアドレスが、前記複数のキャッシュラインの1つと整列するかどうかを判定し、
    前記アドレスが前記複数のキャッシュラインのどれとも整列しないという判定に応じて、前記第1の命令が例外を引き起こすと判定するように、前記メモリアクセスエンジンが更に構成されることを含む、請求項2に記載のコンピュータシステム。
  6. 前記メモリアクセスエンジンが、1つのキャッシュラインにおけるデータの前記少なくとも第1の部分を一度に取得するように更に構成される、請求項5に記載のコンピュータシステム。
  7. 前記指示が、まだアクセスされていない前記データの第2の部分のサイズ及び位置を示す情報を含む、請求項1に記載のコンピュータシステム。
  8. 前記第2の命令が、前記メモリアクセス命令に対するデータ依存性を有する、請求項1に記載のコンピュータシステム。
  9. コンピュータシステムであって、
    第1のデータ及び第2のデータを格納するメモリシステムと、
    第1のコア識別子に関連する第1のコンピュータプロセッサコア及び第2のコア識別子に関連する第2のコンピュータプロセッサコアを含むコンピュータプロセッサと、
    メモリアクセスエンジンであって、
    前記第1のコンピュータプロセッサコアから計算プロセスの第1の命令を受信することであって、前記第1の命令が、前記メモリシステムからの前記第1のデータにアクセスするためのものであることと、
    前記第1の命令を前記第1のコア識別子と関連付けることと、
    前記第1の命令に基づいて、前記メモリシステムからの前記データの少なくとも部分を取得することと、
    前記データの前記少なくとも第1の部分の前記取得後に、前記第1のコンピュータプロセッサコアが、前記計算プロセスの第2の命令を実行できるようにするために、前記第1のコア識別子を含む指示を前記コンピュータプロセッサに送信することと、
    を行うように構成されるメモリアクセスエンジンと、
    を含むコンピュータシステム。
  10. 前記メモリアクセスエンジンが、
    前記第1の命令に関連する仮想アドレスを取得し、
    前記仮想アドレスに基づいて、前記第1の命令に関連する物理アドレスを取得し、
    前記物理アドレスの取得の結果に基づいて、前記第1の命令が、例外を引き起こすかどうかを判定し、
    前記第1の命令が例外を引き起こすという判定に応じて、前記第1のコンピュータプロセッサコアに前記例外を扱わせる指示を前記第1のコンピュータプロセッサコアに送信するように更に構成される、請求項9に記載のコンピュータシステム。
  11. 前記指示が、まだアクセスされていない前記データの第2の部分のサイズ及び位置を示す情報を含む、請求項9に記載のコンピュータシステム。
  12. 前記メモリアクセスエンジンがまた、
    前記メモリシステムからの前記第2のデータにアクセスするために、前記第2のコンピュータプロセッサコアから前記計算プロセスの第3の命令を受信し、
    前記第3の命令を前記第2のコア識別子と関連付けるように構成され、
    前記指示が、前記第2のコア識別子と前記第3の命令の実行ステータスとを含み、且つ
    前記指示に含まれる前記第2のコア識別子が、前記第3の命令の前記実行ステータスを前記第1のコンピュータプロセッサコアが無視できるようにする、請求項9に記載のコンピュータシステム。
  13. メモリアクセス方法であって、前記方法が、コンピュータプロセッサと、データを格納するメモリシステムと結合されたメモリアクセスエンジンによって実行され、前記方法が、
    前記コンピュータプロセッサから計算プロセスの第1の命令を受信することであって、前記第1の命令が、前記メモリシステムからの前記データにアクセスするためのものであることと、
    前記第1の命令に基づいて、前記メモリシステムからの前記データの少なくとも部分を取得することと、
    前記データの前記少なくとも第1の部分の取得後に、前記コンピュータプロセッサが、前記計算プロセスの第2の命令を実行できるようにするために、前記コンピュータプロセッサに指示を送信することと、
    を含むメモリアクセス方法。
  14. 前記第1の命令に関連する仮想アドレスを取得することと、
    前記仮想アドレスに基づいて、前記第1の命令に関連する物理アドレスを取得することと、
    前記物理アドレスの取得の結果に基づいて、前記第1の命令が、例外を引き起こすかどうかを判定することと、
    前記第1の命令が例外を引き起こすという判定に応じて、前記コンピュータプロセッサに前記例外を扱わせる指示を前記コンピュータプロセッサに送信することと、
    を更に含む、請求項13に記載の方法。
  15. 前記第1の命令が例外を引き起こすかどうかの前記判定が、
    前記物理アドレスに関連するページが存在するかどうかを判定することと、
    前記物理ページが存在しないという判定に応じて、前記第1の命令が、例外を引き起こすと判定することと、
    を含む、請求項14に記載の方法。
  16. 前記第1の命令が例外を発生させるかどうかの判定が、
    前記物理アドレス及び前記仮想アドレスの少なくとも1つに関連するページが、アクセス可能かどうかを判定することと、
    前記ページがアクセス可能ではないという判定に応じて、前記第1の命令が例外を引き起こすと判定することと、
    を含む、請求項14に記載の方法。
  17. 前記メモリシステムが、複数のキャッシュラインを備えたキャッシュを含み、前記第1の命令が、例外を引き起こすかどうかの判定が、
    前記第1の命令に関連するアドレスが、前記複数のキャッシュラインの1つと整列するかどうかを判定することと、
    前記アドレスが、前記複数のキャッシュラインのどれとも整列しないという判定に応じて、前記第1の命令が、例外を引き起こすと判定することと、
    を含む、請求項14に記載の方法。
  18. 前記指示が、まだアクセスされていない前記データの第2の部分のサイズ及び位置を示す情報を含む、請求項13に記載の方法。
  19. メモリアクセス方法であって、前記方法が、第1のデータ及び第2のデータを格納するメモリシステムと結合され、且つ第1のコア識別子に関連する第1のコンピュータプロセッサコア及び第2のコア識別子に関連する第2のコンピュータプロセッサコアを含むコンピュータプロセッサと結合されたメモリアクセスエンジンによって実行され、前記方法が、
    前記第1のコンピュータプロセッサコアから計算プロセスの第1の命令を受信することであって、前記第1の命令が、前記メモリシステムからの前記第1のデータにアクセスするためのものであることと、
    前記第1の命令を前記第1のコア識別子と関連付けることと、
    前記第1の命令に基づいて、前記メモリシステムからの前記第1のデータの少なくとも一部を取得することと、
    前記第1のデータの前記少なくとも一部を取得した後で、前記第1のコンピュータプロセッサコアが、前記計算プロセスの第2の命令を実行できるようにするために、前記第1のコア識別子と前記第1の命令の実行ステータスとを含む指示を前記コンピュータプロセッサに送信することと、
    を含むメモリアクセス方法。
  20. 前記第2のコンピュータプロセッサコアから前記計算プロセスの第3の命令を受信することであって、前記第3の命令が、前記メモリシステムからの前記第2のデータにアクセスするためのものであることと、
    前記第3の命令を前記第2のコア識別子と関連付けることと、
    を更に含み、
    前記指示が、前記第2のコア識別子と前記第3の命令の実行ステータスとを含み、且つ
    前記指示に含まれる前記第2のコア識別子が、前記第3の命令の前記実行ステータスを前記第1のコンピュータプロセッサコアが無視できるようにする、請求項19に記載の方法。
JP2019540633A 2017-02-10 2018-02-09 メモリシステムへの加速されたアクセスを提供するための方法及び機器 Active JP7097371B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/430,331 2017-02-10
US15/430,331 US11086632B2 (en) 2017-02-10 2017-02-10 Method and apparatus for providing accelerated access to a memory system
PCT/US2018/017673 WO2018148579A1 (en) 2017-02-10 2018-02-09 Method and apparatus for providing accelerated access to a memory system

Publications (2)

Publication Number Publication Date
JP2020507848A true JP2020507848A (ja) 2020-03-12
JP7097371B2 JP7097371B2 (ja) 2022-07-07

Family

ID=63104606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019540633A Active JP7097371B2 (ja) 2017-02-10 2018-02-09 メモリシステムへの加速されたアクセスを提供するための方法及び機器

Country Status (5)

Country Link
US (1) US11086632B2 (ja)
EP (1) EP3580659A4 (ja)
JP (1) JP7097371B2 (ja)
CN (1) CN110291507B (ja)
WO (1) WO2018148579A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020140268A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for providing secure communications between a host system and a data processing accelerator
GB2593513B (en) 2020-03-25 2022-09-21 Nordic Semiconductor Asa Method and system for optimizing data transfer from one memory to another memory
GB2593514B (en) * 2020-03-25 2022-04-27 Nordic Semiconductor Asa Method and system for optimizing data transfer from one memory to another memory
US11868238B2 (en) 2020-06-18 2024-01-09 Samsung Electronics Co., Ltd. Method and apparatus for fuzz testing based on resource access feedback

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011048615A (ja) * 2009-08-27 2011-03-10 Renesas Electronics Corp データプロセッサ
US20120066474A1 (en) * 2010-09-13 2012-03-15 International Business Machines Corporation Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process
US20140173203A1 (en) * 2012-12-18 2014-06-19 Andrew T. Forsyth Block Memory Engine
US9043559B2 (en) * 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US20160357564A1 (en) * 2015-06-03 2016-12-08 Renesas Electronics America Inc. Microcontroller simple memory relocation function

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US9654505B2 (en) * 2009-06-22 2017-05-16 Citrix Systems, Inc. Systems and methods for encoding the core identifier in the session identifier
US8954697B2 (en) * 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
US9009445B2 (en) 2011-10-20 2015-04-14 Apple Inc. Memory management unit speculative hardware table walk scheme
US9965279B2 (en) * 2013-11-29 2018-05-08 The Regents Of The University Of Michigan Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
US20150277925A1 (en) * 2014-04-01 2015-10-01 The Regents Of The University Of Michigan Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
US10452561B2 (en) * 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011048615A (ja) * 2009-08-27 2011-03-10 Renesas Electronics Corp データプロセッサ
US20120066474A1 (en) * 2010-09-13 2012-03-15 International Business Machines Corporation Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process
US9043559B2 (en) * 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US20140173203A1 (en) * 2012-12-18 2014-06-19 Andrew T. Forsyth Block Memory Engine
US20160357564A1 (en) * 2015-06-03 2016-12-08 Renesas Electronics America Inc. Microcontroller simple memory relocation function

Also Published As

Publication number Publication date
US11086632B2 (en) 2021-08-10
EP3580659A4 (en) 2020-02-19
US20180232238A1 (en) 2018-08-16
CN110291507B (zh) 2023-10-24
JP7097371B2 (ja) 2022-07-07
CN110291507A (zh) 2019-09-27
WO2018148579A1 (en) 2018-08-16
EP3580659A1 (en) 2019-12-18

Similar Documents

Publication Publication Date Title
EP0097790B1 (en) Apparatus for controlling storage access in a multilevel storage system
US8205067B2 (en) Context switching and synchronization
JP7097371B2 (ja) メモリシステムへの加速されたアクセスを提供するための方法及び機器
US5490261A (en) Interlock for controlling processor ownership of pipelined data for a store in cache
US7047320B2 (en) Data processing system providing hardware acceleration of input/output (I/O) communication
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
US20040139304A1 (en) High speed virtual instruction execution mechanism
WO1987005417A1 (en) Instruction prefetch control apparatus
US6976148B2 (en) Acceleration of input/output (I/O) communication through improved address translation
US20100131720A1 (en) Management of ownership control and data movement in shared-memory systems
US8806135B1 (en) Load store unit with load miss result buffer
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US20070174505A1 (en) DMA access systems and methods
CN113900968B (zh) 多副本非原子写的存储序同步操作实现方法与实现装置
US20140281238A1 (en) Systems and methods for accessing cache memory
US4991083A (en) Method and system for extending address space for vector processing
JP4335300B2 (ja) マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
JP4965638B2 (ja) タスクの切り換えを制御するシステムおよび方法
US20080301324A1 (en) Processor device and instruction processing method
US7783842B2 (en) Cache coherent I/O communication
GB2502858A (en) A method of copying data from a first memory location and storing it in a cache line associated with a different memory location
US11550589B2 (en) Inhibiting load instruction execution based on reserving a resource of a load and store queue but failing to reserve a resource of a store data queue
JP2815850B2 (ja) データ処理ユニット
JPH02259945A (ja) ストア処理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220511

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220627

R150 Certificate of patent or registration of utility model

Ref document number: 7097371

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150