JP2023508460A - メモリアクセス要求のステージング - Google Patents
メモリアクセス要求のステージング Download PDFInfo
- Publication number
- JP2023508460A JP2023508460A JP2022539322A JP2022539322A JP2023508460A JP 2023508460 A JP2023508460 A JP 2023508460A JP 2022539322 A JP2022539322 A JP 2022539322A JP 2022539322 A JP2022539322 A JP 2022539322A JP 2023508460 A JP2023508460 A JP 2023508460A
- Authority
- JP
- Japan
- Prior art keywords
- memory access
- access request
- memory
- staging buffer
- management unit
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 134
- 238000000034 method Methods 0.000 claims description 63
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008685 targeting Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
Abstract
メモリアクセス要求をステージングすることは、ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、メモリアクセス要求をステージングバッファに格納することと、メモリアクセス要求をステージングバッファからコマンドキューに移動することと、を含む。【選択図】図1
Description
コマンドキューは、メモリアクセス要求を実行前に格納する。コマンドキューに対する調停及び格納の負荷が高まると、パフォーマンスの低下につながる。
いくつかの実施形態では、メモリアクセス要求をステージングする方法(method of staging memory access requests)は、ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、メモリアクセス要求をステージングバッファに格納することと、メモリアクセス要求をステージングバッファからコマンドキューに移動させることと、を含む。
いくつかの実施形態では、方法は、コマンドキューからメモリアクセス要求を選択することと、メモリアクセス要求を実行することと、を含む。いくつかの実施形態では、方法は、別のメモリアクセス要求を受信することと、ステージングバッファが満杯(full)であることを特定することと、他のメモリアクセス要求をステージングバッファに格納することなく、他のメモリアクセス要求をコマンドキューに格納することと、を含む。いくつかの実施形態では、方法は、1つ以上の調停ルールに基づいて、ステージングバッファ内の複数のメモリアクセス要求から、コマンドキューに移動させるメモリアクセス要求を選択することを含む。いくつかの実施形態では、1つ以上の調停ルールに基づいてメモリアクセス要求を選択することは、ダイナミックランダムアクセスメモリのオープン状態のページ、バンクグループローテーション、メモリアクセス要求の要求タイプ、又はサブチャネルバランシングのうちの1つ以上に基づいて、メモリアクセス要求を選択することを含む。
いくつかの実施形態では、メモリアクセス要求をステージングするためのメモリ管理ユニットは、ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、メモリアクセス要求をステージングバッファに格納することと、メモリアクセス要求をステージングバッファからコマンドキューに移動させることと、を含むステップを実行する。
いくつかの実施形態では、ステップは、コマンドキューからメモリアクセス要求を選択することと、メモリアクセス要求を実行することと、を含む。いくつかの実施形態では、ステップは、別のメモリアクセス要求を受信することと、ステージングバッファが満杯であることを特定することと、他のメモリアクセス要求をステージングバッファに格納することなく、他のメモリアクセス要求をコマンドキューに格納することと、を含む。いくつかの実施形態では、ステップは、1つ以上の調停ルールに基づいて、ステージングバッファ内の複数のメモリアクセス要求から、コマンドキューに移動させるメモリアクセス要求を選択することを含む。いくつかの実施形態では、1つ以上の調停ルールに基づいてメモリアクセス要求を選択することは、ダイナミックランダムアクセスメモリのオープン状態のページ、バンクグループローテーション、メモリアクセス要求の要求タイプ、又は、サブチャネルバランシングのうち1つ以上に基づいて、メモリアクセス要求を選択することを含む。
いくつかの実施形態では、メモリアクセス要求をステージングするためのプロセッサは、メモリ管理ユニットを含み、メモリ管理ユニットは、ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、メモリアクセス要求をステージングバッファに格納することと、メモリアクセス要求をステージングバッファからコマンドキューに移動させることと、を含むステップを実行する。
いくつかの実施形態では、ステップは、コマンドキューからメモリアクセス要求を選択することと、メモリアクセス要求を実行することと、を含む。いくつかの実施形態では、ステップは、別のメモリアクセス要求を受信することと、ステージングバッファが満杯であることを特定することと、他のメモリアクセス要求をステージングバッファに格納することなく、他のメモリアクセス要求をコマンドキューに格納することと、を含む。いくつかの実施形態では、ステップは、1つ以上の調停ルールに基づいて、ステージングバッファ内の複数のメモリアクセス要求から、コマンドキューに移動させるメモリアクセス要求を選択することを含む。いくつかの実施形態では、1つ以上の調停ルールに基づいてメモリアクセス要求を選択することは、ダイナミックランダムアクセスメモリのオープン状態のページ、バンクグループローテーション、メモリアクセス要求の要求タイプ、又は、サブチャネルバランシングのうち1つ以上に基づいて、メモリアクセス要求を選択することを含む。
いくつかの実施形態では、メモリアクセス要求をステージングするためのシステムは、プロセッサを含む装置を備え、プロセッサは、メモリ管理ユニットを含み、メモリ管理ユニットは、ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、メモリアクセス要求をステージングバッファに格納することと、メモリアクセス要求をステージングバッファからコマンドキューに移動させることと、を含むステップを実行する。
いくつかの実施形態では、ステップは、コマンドキューからメモリアクセス要求を選択することと、メモリアクセス要求を実行することと、を含む。いくつかの実施形態では、ステップは、別のメモリアクセス要求を受信することと、ステージングバッファが満杯であることを特定することと、他のメモリアクセス要求をステージングバッファに格納することなく、他のメモリアクセス要求をコマンドキューに格納することと、を含む。いくつかの実施形態では、ステップは、1つ以上の調停ルールに基づいて、ステージングバッファ内の複数のメモリアクセス要求から、コマンドキューに移動させるメモリアクセス要求を選択することを含む。いくつかの実施形態では、1つ以上の調停ルールに基づいてメモリアクセス要求を選択することは、ダイナミックランダムアクセスメモリのオープン状態のページ、バンクグループローテーション、メモリアクセス要求の要求タイプ、又は、サブチャネルバランシングのうち1つ以上に基づいて、メモリアクセス要求を選択することを含む。
図1は、いくつかの実施形態による、非限定の例示的なプロセッサ100のブロック図である。例示的なプロセッサ100は、モバイルデバイス、パーソナルコンピュータ、周辺ハードウェア構成要素、ゲーミングデバイス及びセットトップボックス等を含む様々なコンピューティングデバイスに実装され得る。プロセッサ100は、メモリ管理ユニット102を含む。メモリ管理ユニット102は、メモリアクセス要求(例えばメモリの特定領域に対するデータ読み出し要求及び/又はデータ書き込み要求)を受信する。また、メモリ管理ユニット102は、メモリアクセス要求を実行するために、メモリアクセス要求内の仮想メモリアドレスを物理メモリアドレスに変換する。
メモリ管理ユニット102は、コマンドキュー104を含む。メモリアクセス要求が受信されると(例えば中央処理装置又はプロセッサ100の他の構成要素から)、ダイナミックランダムアクセスメモリ106にアクセスするためにメモリアクセス要求が実行される前に、コマンドキュー104がメモリアクセス要求を格納する。ダイナミックランダムアクセスメモリ106がプロセッサ100とは別に示されているが、ダイナミックランダムアクセスメモリ106には、オンチップダイナミックランダムアクセスメモリ106(例えばプロセッサ100の構成要素としての)が含まれ得ることを理解されたい。ダイナミックランダムアクセスメモリ106が複数のバンクを含む場合、メモリ管理ユニット102は、各バンクにそれぞれ対応する複数のコマンドキュー104を含み得る。
メモリ管理ユニット102は、先着順(FCFS)、準備完了先着順(FR-FCFS)、先入れ先出し法(FIFO)等の1つ以上のスキームを使用して、コマンドキュー104から実行するメモリアクセス要求を選択する。メモリ管理ユニット102は、1つ以上のルールを使用してコマンドキュー104から実行するメモリアクセス要求を選択するコマンドキューアービタ108を含む。例えば、1つ以上のルールは、タイミング又はクロック情報(例えばメモリアクセス要求の経過時間)に基づく。別の例として、1つ以上のルールは、ページテーブル110に基づく。例えば、ページテーブル110のヒットを生じるメモリアクセス要求は、実行のために、コマンドキュー104から優先的に選択される。
既存の手法では、メモリ管理ユニット102により受信されたメモリアクセス要求は、コマンドキュー104に直接配置され、その後実行される。パフォーマンスを向上させ、コマンドキュー104に対する負荷を軽減するために、メモリ管理ユニット102は、ステージングバッファ112を含む。メモリ管理ユニット102により受信されたメモリアクセス要求は、ステージングバッファ112に配置される。次に、ステージングバッファアービタ114は、1つ以上の調停ルールに基づいて、ステージングバッファ112から、コマンドキュー104に移動させるメモリアクセス要求を選択する。
いくつかの実施形態では、調停ルールは、メモリアクセス要求が対象とするダイナミックランダムアクセスメモリ106のページに基づく。例えば、ダイナミックランダムアクセスメモリ106のオープン状態のページを対象とするメモリアクセス要求は、ページをクローズ状態及びオープン状態にするのに要するオーバーヘッドが削減されるため、コマンドキュー104への移動に優先的に選択される。別の例として、メモリアクセス要求がダイナミックランダムアクセスメモリ106のページを対象とし、コマンドキュー104内の別のメモリアクセス要求もこのページを対象とし、よって、選択されたメモリアクセス要求が実行されるとこのページがオープン状態になる場合、このメモリアクセス要求が優先的に選択される。
いくつかの実施形態では、調停ルールは、バンクグループローテーション又はランクローテーションに基づく。例えば、ダイナミックランダムアクセスメモリ106が複数のバンクを含む場合、連続して追加された要求が同じバンクを対象としないように、ステージングバッファ112から、コマンドキュー104に追加するメモリアクセス要求が選択される。例として、第1のバンクを対象とするメモリアクセス要求がコマンドキュー104に移動され、次に、第2のバンクを対象とするメモリアクセス要求がコマンドキュー104に移動される。次に、第1のバンクを対象とする別のメモリアクセス要求がコマンドキュー104に追加される等する。いくつかの実施形態では、同じ又は異なるバンク内の異なるランクを対象とするメモリアクセス要求が選択される、又は、ダイナミックランダムアクセスメモリ106の異なるサブチャネルを代替で対象とする(例えばサブチャネルバランシングの)メモリアクセス要求が選択される。
いくつかの実施形態では、調停ルールは、メモリアクセス要求の要求タイプ(例えば読み出し又は書き込み)に基づく。ダイナミックランダムアクセスメモリ106の読み出しと書き込みとの切り替えには動作オーバーヘッドが生じるため、読み出し要求及び/又は書き込み要求は、コマンドキュー104に移動させる要求の「バースト」の一部として、一緒にグループ化される。従って、読み出し要求のグループ及び/又は書き込み要求のグループが連続して実行され得る。
いくつかの実施形態では、メモリ管理ユニット102は、ステージングバッファ112が満杯であることを特定する。従って、メモリ管理ユニット102は、受信したメモリアクセス要求をステージングバッファ112に格納することなく、受信したメモリアクセス要求をコマンドキュー104に直接格納する。
さらなる説明のために、図2は、本開示の実施形態による、メモリアクセス要求をステージングするための例示的な方法を示すフローチャートを明示し、方法は、ダイナミックランダムアクセスメモリ106に対するメモリアクセス要求204を受信すること202(例えばプロセッサ100のメモリ管理ユニット102による)を含む。メモリアクセス要求204には、ダイナミックランダムアクセスメモリ106のデータ読み出し又はデータ書き込みの要求が含まれる。メモリアクセス要求204は、メモリ管理ユニット102を中央処理装置又は他の構成要素に接続するデータファブリック又は他の相互接続を介して受信される。
また、図2の方法は、メモリアクセス要求204をステージングバッファ112に格納すること206を含む(例えばメモリ管理ユニット102により)。また、図2の方法は、メモリアクセス要求204をステージングバッファ112からコマンドキュー104に移動させること208を含む。メモリアクセス要求204を移動させること208は、メモリアクセス要求204をステージングバッファ112から取り除き、メモリアクセス要求204をコマンドキュー104に格納することを含む。いくつかの実施形態では、メモリアクセス要求204は、ステージングバッファ112内のいくつかのメモリアクセス要求204が閾値を満たすことに応じて移動される。いくつかの実施形態では、メモリアクセス要求204は、コマンドキュー104内のいくつかのメモリアクセス要求204が閾値を下回ることに応じて移動される。いくつかの実施形態では、メモリアクセス要求204は、メモリアクセス要求204の経過時間(例えばメモリアクセス要求204が受信された時刻)が閾値を満たすことに応じて移動される。いくつかの実施形態では、メモリアクセス要求204は、1つ以上の調停ルールが満たされることに応じて移動される。
さらなる説明のために、図3は、本開示の実施形態による、メモリアクセス要求をステージングするための例示的な方法を示すフローチャートを示し、方法は、ダイナミックランダムアクセスメモリ106に対するメモリアクセス要求204を受信すること202(例えばプロセッサ100のメモリ管理ユニット102による)と、メモリアクセス要求204をステージングバッファ112に格納すること206と、メモリアクセス要求204をステージングバッファ112からコマンドキュー104に移動させること208と、を含む。
図3の方法は、コマンドキュー104からメモリアクセス要求204を選択すること302(例えばプロセッサ100のメモリ管理ユニット102による)も含むという点で、図2と異なる。メモリアクセス要求204は、先着順(FCFS)、準備完了先着順(FR-FCFS)、先入れ先出し法(FIFO)等の1つ以上のスキームを使用して、コマンドキュー104から選択される。いくつかの実施形態では、メモリ管理ユニット102は、1つ以上のルールを使用して、コマンドキュー104から、実行するメモリアクセス要求を選択するコマンドキューアービタ108を含む。例えば、1つ以上のルールは、タイミング又はクロック情報(例えばメモリアクセス要求の経過時間)に基づく。別の例として、1つ以上のルールは、ページテーブル110に基づく。例えば、ページテーブル110のヒットを生じるメモリアクセス要求は、実行のために、コマンドキュー104から優先的に選択される。
図3の方法は、メモリアクセス要求204を実行すること304(例えばメモリ管理ユニット102による)も含むという点で、図2と異なる。メモリアクセス要求204を実行すること304には、メモリアクセス要求204で指定されたダイナミックランダムアクセスメモリ106のアドレスからデータを読み出すこと、及び/又は、メモリアクセス要求204で指定されたダイナミックランダムアクセスメモリ106のアドレスにデータを書き込むことが含まれる。
さらなる説明のために、図4は、本開示の実施形態による、メモリアクセス要求をステージングするための例示的な方法を示すフローチャートを示し、方法は、ダイナミックランダムアクセスメモリ106に対するメモリアクセス要求204を受信すること202(例えばプロセッサ100のメモリ管理ユニット102による)と、メモリアクセス要求204をステージングバッファ112に格納すること206と、メモリアクセス要求204をステージングバッファ112からコマンドキュー104に移動させること208と、を含む。
図4の方法は、別のメモリアクセス要求404を受信すること402も含むという点で、図2と異なる。図4の方法は、ステージングバッファ112が満杯であることを特定すること406も含むという点で、さらに図2と異なる。ステージングバッファ112は、所定の最大数のメモリアクセス要求を格納する所定量のメモリを含む。従って、ステージングバッファ112が満杯であることを特定すること406は、ステージングバッファ112が所定の最大数のメモリアクセス要求を格納していることを特定することを含む。
図4の方法は、他のメモリアクセス要求404をステージングバッファ112に格納することなく、他のメモリアクセス要求404をコマンドキュー104に格納すること(408)も含むという点で、さらに図2と異なる。従って、ステージングバッファ112は、満杯になるとバイパスされる。
さらなる説明のために、図5は、本開示の実施形態による、メモリアクセス要求をステージングするための例示的な方法を示すフローチャートを示し、方法は、ダイナミックランダムアクセスメモリ106に対するメモリアクセス要求204を受信すること202(例えばプロセッサ100のメモリ管理ユニット102による)と、メモリアクセス要求204をステージングバッファ112に格納すること206と、メモリアクセス要求204をステージングバッファ112からコマンドキュー104に移動させること208と、を含む。
図5の方法は、1つ以上の調停ルールに基づいて、ステージングバッファ112内の複数のメモリアクセス要求から、コマンドキュー104に移動させるメモリアクセス要求204を選択すること502(例えばメモリ管理ユニット102による、メモリ管理ユニット102のステージングバッファアービタ114による)も含むという点で、図2と異なる。
いくつかの実施形態では、調停ルールは、メモリアクセス要求が対象とするダイナミックランダムアクセスメモリ106のページに基づく。例えば、ダイナミックランダムアクセスメモリ106のオープン状態のページを対象とするメモリアクセス要求は、ページをクローズ状態及びオープン状態にするのに要するオーバーヘッドが削減されるため、コマンドキュー104への移動に優先的に選択される。別の例として、メモリアクセス要求がダイナミックランダムアクセスメモリ106のページを対象とし、コマンドキュー104内の別のメモリアクセス要求もこのページを対象とし、よって、選択されたメモリアクセス要求が実行されるとこのページがオープン状態になる場合、このメモリアクセス要求が優先的に選択される。
いくつかの実施形態では、調停ルールは、バンクグループローテーション又はランクローテーションに基づく。例えば、ダイナミックランダムアクセスメモリ106が複数のバンクを含む場合、連続して追加された要求が同じバンクを対象としないように、ステージングバッファ112から、コマンドキュー104に追加するメモリアクセス要求が選択される。例として、第1のバンクを対象とするメモリアクセス要求がコマンドキュー104に移動され、次に、第2のバンクを対象とするメモリアクセス要求がコマンドキュー104に移動される。次に、第1のバンクを対象とする別のメモリアクセス要求がコマンドキュー104に追加される等する。いくつかの実施形態では、同じ又は異なるバンク内の異なるランクを対象とするメモリアクセス要求が選択される。また、ダイナミックランダムアクセスメモリ106の異なるサブチャネルを代替で対象とする(例えばサブチャネルバランシングの)メモリアクセス要求が選択される。
いくつかの実施形態では、調停ルールは、メモリアクセス要求の要求タイプ(例えば読み出し又は書き込み)に基づく。ダイナミックランダムアクセスメモリ106の読み出しと書き込みとの切り替えには動作オーバーヘッドが生じるため、読み出し要求及び/又は書き込み要求は、コマンドキュー104に移動させる要求の「バースト」の一部として、一緒にグループ化される。従って、読み出し要求のグループ及び/又は書き込み要求のグループは、連続して実行される。
さらなる説明のために、図6は、本開示の実施形態による、ステージングバッファを調停するめの例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)を含む。メモリアクセス要求には、ダイナミックランダムアクセスメモリ106のデータ読み出し又はデータ書き込みの要求が含まれる。メモリアクセス要求は、メモリ管理ユニット102を中央処理装置又は他の構成要素に接続するデータファブリック又は他の相互接続を介する。
また、図6の方法は、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606を含む。例えば、ステージングバッファアービタ114は、1つ以上の調停ルールに基づいて、メモリアクセス要求608を選択する。調停ルールは、ステージングバッファ112に格納されたメモリアクセス要求、コマンドキュー104に格納されたメモリアクセス要求、ページテーブル110、及び/又は、他の属性の様々な属性に適用される。例えば、調停ルールは、ステージングバッファ112及び/若しくはコマンドキュー104内のメモリアクセス要求の要求タイプ、ダイナミックランダムアクセスメモリ106の現在オープン状態のページ、ステージングバッファ112及び/若しくはコマンドキュー104内のメモリアクセス要求が対象とするバンクグループ、ステージングバッファ112及び/若しくはコマンドキュー104内のメモリアクセス要求が対象とするバンク又はページのリフレッシュ状態、並びに/又は、ステージングバッファ112及び/若しくはコマンドキュー104内のメモリアクセス要求が対象とするサブチャネルに基づく。
図6の方法は、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610も含む。メモリアクセス要求608を移動させること610は、ステージングバッファ112からメモリアクセス要求608を削除すること、及び/又は、メモリアクセス要求608を格納するステージングバッファ112の部分を、後続の上書きのために解放することを含む。メモリアクセス要求608を移動させること610は、メモリアクセス要求608をコマンドキュー104に追加することも含む。従って、メモリアクセス要求608は、メモリ管理ユニット102により、コマンドキュー104から後で実行される。
さらなる説明のために、図7は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、メモリアクセス要求608を含む同じ要求タイプのメモリアクセス要求バーストを選択すること702を含むという点で、図6と異なる。メモリアクセス要求バーストは、同じタイプ(例えば読み出し又は書き込み)の複数のメモリアクセス要求を含む。連続的及び/又は少なくとも部分的に同時にコマンドキュー104に移動させるメモリアクセス要求バーストのメモリアクセス要求が選択され、これにより、メモリアクセス要求バーストのメモリアクセス要求は、後で連続的に及び/又は少なくとも部分的に同時に実行される。例えば、読み出し要求のバーストの実行は、介在する書き込み要求を実行することなく行われる。別の例として、書き込み要求のバーストの実行は、介在する読み出し要求を実行することなく行われる。ダイナミックランダムアクセスメモリ106に対する読み出し要求の実行と書き込み要求の実行とを切り替えることは動作オーバーヘッドを生じるため、同じ要求タイプの複数のメモリアクセス要求を実行することにより、この動作オーバーヘッドが回避される。従って、メモリアクセス要求608は、コマンドキュー104に追加された同じ要求タイプの他のメモリアクセス要求に基づいて、及び/又は、ステージングバッファ112に格納されており、後でメモリアクセス要求バーストの一部としてコマンドキュー104に追加される同じ要求タイプの他のメモリアクセス要求に基づいて、選択される。
さらなる説明のために、図8は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、別のメモリアクセス要求が対象とするバンク、別のメモリアクセス要求が対象とするランク、又は、別のメモリアクセス要求が対象とするメモリサブチャネルのうち1つ以上に基づいて、メモリアクセス要求608を選択すること802を含むという点で、図6と異なる。例えば、いくつかの実施形態では、実行されるメモリアクセス要求が、ダイナミックランダムアクセスメモリ106の異なるランク又はバンクを交替で対象とするように(例えばランクバランシング、バンクバランシング)、メモリアクセスはコマンドキュー104に追加される。別の実施形態では、実行されるメモリアクセス要求がバランスの取れた手法でダイナミックランダムアクセスメモリ106のサブチャネルを対象とするように、メモリアクセス要求がコマンドキュー104に追加される。従って、コマンドキュー104に既に追加されたメモリアクセス要求が対象とするランク、バンク又はサブチャネルに基づいて、メモリアクセス要求608が選択される(例えばキューされたメモリアクセスコマンドは別のランク、バンク、又はサブチャネルを対象とする)。また、ステージングバッファ112内に存在し、後でコマンドキュー104に追加されるメモリアクセス要求が対象とするランク、バンク又はサブチャネルに基づいて、メモリアクセス要求608が選択される(例えばステージングされるメモリアクセスコマンドは別のランク、バンク又はサブチャネルを対象とする)。
さらなる説明のために、図9は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、別のメモリアクセス要求が対象とするダイナミックランダムアクセスメモリ106のページに基づいて、メモリアクセス要求608を選択すること902を含むという点で、図6と異なる。実行されるメモリアクセス要求が現在オープン状態ではないページを対象とする場合、現在オープン状態のページをクローズ状態にして、対象ページをオープン状態にするために、オーバーヘッドが生じる。同じ(例えばオープン状態の)ページを対象とするメモリアクセス要求を実行することにより、このオーバーヘッドが削減される。従って、いくつかの実施形態では、既に実行されたメモリアクセス要求が対象としたページ(例えば既にオープン状態のページ)に基づいて、メモリアクセス要求608が選択される。いくつかの実施形態では、選択されるメモリアクセス要求608より前に実行される、コマンドキュー104に格納されたメモリアクセス要求が対象とするページに基づいて、メモリアクセス要求608が選択され、これにより、選択されるメモリアクセス要求608が実行される場合には、対象ページはオープン状態である。いくつかの実施形態では、コマンドキュー104への移動に後続で選択される、ステージングバッファ112に格納された別のメモリアクセス要求が対象とするページに基づいて、メモリアクセス要求608が選択され、これにより、他のメモリアクセス要求が実行される場合には、対象ページはオープン状態である。
さらなる説明のために、図10は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、優先度値に基づいて、メモリアクセス要求608を選択すること1002を含むという点で、図6と異なる。いくつかの実施形態では、優先度値は、メモリアクセス要求608に割り当てられた明示的な優先度値(例えば優先度層)である。別の実施形態では、優先度値は、メモリアクセス要求の経過時間(例えばメモリ管理ユニット102により所定のメモリアクセス要求が生成又は受信された時刻)等のメモリアクセス要求の属性に基づいて計算される。
さらなる説明のために、図11は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、ステージングバッファ112内で、第1のページミスを伴う別のメモリアクセス要求を特定すること1102を含むという点で、図6と異なる。言い換えると、他のメモリアクセス要求を実行すると、ページミス及び対応する動作オーバーヘッドが生じる。例えば、他のメモリアクセス要求の実行によりページミスが生じることは、ページテーブル110にアクセスして特定される。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、コマンドキュー104内で、第1のページミスとは異なる第2のページミスを伴うキューイングされた(キューされた)メモリアクセス要求を特定すること1104も含むという点で、さらに図6と異なる。例えば、キューイングされたメモリアクセス要求は、ステージングバッファ内の他のメモリアクセス要求と同じ要求タイプを有し、同じダイナミックランダムアクセスメモリバンクを対象とするが、異なる行のページミスを生じることが特定される。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、他のメモリアクセス要求及びキューイングされたメモリアクセス要求を特定したことに応じて、メモリアクセス要求608を選択すること1106も含むという点で、さらに図6と異なる。言い換えると、メモリアクセス要求608は、ステージングバッファ112内の、第1のページミスを伴う他のメモリアクセス要求よりも、優先的に選択される。
さらなる説明のために、図12は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、ステージングバッファ112内で、第1のページ競合を伴う別のメモリアクセス要求を特定すること1202を含むという点で、図6と異なる。言い換えると、他のメモリアクセス要求を実行すると、ページ競合及び対応する動作オーバーヘッドが生じる。例えば、他のメモリアクセス要求の実行によりページ競合が生じることは、ページテーブル110にアクセスして特定される。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、コマンドキュー104内で、第1のページ競合とは異なる第2のページ競合を伴うキューイングされたメモリアクセス要求を特定すること1204も含むという点で、さらに図6と異なる。例えば、キューイングされたメモリアクセス要求は、ステージングバッファ112内の他のメモリアクセス要求と同じ要求タイプを有し、同じダイナミックランダムアクセスメモリバンクを対象とするが、異なる行のページ競合を生じることが特定される。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、他のメモリアクセス要求及びキューイングされたメモリアクセス要求を特定したことに応じて、メモリアクセス要求608を選択すること1206も含むという点で、さらに図6と異なる。言い換えると、メモリアクセス要求608は、ステージングバッファ112内の、第1のページ競合を伴う他のメモリアクセス要求よりも、優先的に選択される。
さらなる説明のために、図13は、本開示の実施形態による、ステージングバッファを調停するための例示的な方法を示すフローチャートを示し、方法は、複数のメモリアクセス要求をステージングバッファ112に格納すること602(例えばプロセッサ100のメモリ管理ユニット102による)と、1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606と、メモリアクセス要求608をステージングバッファ112からコマンドキュー104に移動させること610と、を含む。
1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、コマンドキュー104内で、ページヒット要求を特定すること1302を含むという点で、図6と異なる。ページヒット要求には、ダイナミックランダムアクセスメモリ106の現在オープン状態のページを対象とするメモリアクセス要求が含まれる。1つ以上の調停ルールに基づいて、ステージングバッファ112から、複数のメモリアクセス要求のうち何れかのメモリアクセス要求608を選択すること606は、メモリアクセス要求608が別のページヒット要求であることに基づいて、メモリアクセス要求608を選択すること1304を含むという点で、さらに図6と異なる。言い換えると、メモリアクセス要求608は、ページミスを生じ得る他のメモリアクセス要求よりも優先的に、コマンドキュー104への移動に選択される。従って、ステージングバッファ112は、ページ競合要求を保持する。いくつかの実施態様では、メモリアクセス要求608は、コマンドキュー104への移動のために選択され、コマンドキュー104が、各バンクに対する1つ以下のメモリアクセス要求を優先的に保持するようになっている。
上記の説明を考慮すると、本開示の実施形態によるメモリアクセス要求のステージングの利点として、以下が挙げられることを読者は認識するであろう。
・追加のステージングバッファを使用してコマンドキューの負荷を軽減することにより、コンピューティングシステムのパフォーマンスが向上する。
・演算オーバーヘッドを削減するように、コマンドキューに追加するメモリアクセス要求を最適に選択することにより、コンピューティングシステムのパフォーマンスが向上する。
・追加のステージングバッファを使用してコマンドキューの負荷を軽減することにより、コンピューティングシステムのパフォーマンスが向上する。
・演算オーバーヘッドを削減するように、コマンドキューに追加するメモリアクセス要求を最適に選択することにより、コンピューティングシステムのパフォーマンスが向上する。
本開示の例示的な実施形態は、主に、メモリアクセス要求をステージングするように十分機能するコンピュータシステムに関して説明される。しかしながら、本開示は、任意の適切なデータ処理システムと共に使用されるコンピュータ可読記憶媒体上に配置されるコンピュータプログラム製品でも具現化できることを、当業者である読者は認識するであろう。このようなコンピュータ可読記憶媒体は、磁気媒体、光学媒体又は他の適切な媒体を含む、機械可読情報の任意の記憶媒体であり得る。このような媒体の例としては、ハードドライブ又はディスケット内の磁気ディスク、光学ドライブ用のコンパクトディスク、磁気テープ、及び、当業者が思いつく他のものが挙げられる。適切なプログラミング手段を有する任意のコンピュータシステムは、コンピュータプログラム製品で具現化された本開示の方法のステップを実行することができることを、当業者は直ちに認識するであろう。本明細書で説明する例示的な実施形態のうちいくつかは、コンピュータハードウェアにインストールされ実行されるソフトウェア指向であるが、しかしながら、ファームウェア又はハードウェアとして実装される代替的な実施形態も本開示の範囲内に十分含まれることも、当業者は認識するであろう。
本開示は、システム、方法及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品には、本開示の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(複数可)が含まれ得る。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持及び記憶することができる有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、又は、これらの任意の適切な組み合わせとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的な一覧には、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、命令が記録されたパンチカード又は溝内の隆起構造等の機械的符号化デバイス、及び、上記の任意の適切な組み合わせが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波若しくは他の自由に伝播する電磁波、導波管若しくは他の伝送媒体を介して伝播する電磁波(例えば光ファイバケーブルを通過する光パルス)、又は、電線を介して伝送される電気信号等のように、それ自体が一時的な信号であると解釈されるべきではない。
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティングデバイス/処理デバイスに、又は、ネットワーク(例えばインターネット、ローカルエリアネットワーク、広域ネットワーク及び/又は無線ネットワーク)を介して外部コンピュータ若しくは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含み得る。各コンピューティングデバイス/処理デバイスのネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各コンピューティングデバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために、コンピュータ可読プログラム命令を転送する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk若しくはC++等のオブジェクト指向プログラミング言語、或いは、「C」プログラミング言語若しくは類似のプログラミング言語等の従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードの何れかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上且つ部分的にリモートコンピュータ上で、又は、完全にリモートコンピュータ若しくはサーバ上で実行され得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得る、又は、外部コンピュータに(例えばインターネットサービスプロバイダを使用したインターネット経由で)接続され得る。いくつかの実施形態では、例えばプログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることにより、コンピュータ可読プログラム命令を実行することができる。
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して本明細書で説明される。フローチャート図及び/又はブロック図の各ブロックと、フローチャート図及び/又はブロック図のブロックの組み合わせとは、コンピュータ可読プログラム命令により実施できることが理解されよう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能データ処理装置のプロセッサに提供することで、機械が生成され、これにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行された命令は、フローチャート及び/又はブロック図の1つ以上のブロックで特定される機能/行為を実施する手段を生成する。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に格納することもでき、コンピュータ可読記憶媒体は、コンピュータ、プログラム可能データ処理装置及び/又は他のデバイスに特定の方法で機能するように指示することができ、よって、命令を格納したコンピュータ可読記憶媒体には、フローチャート及び/又はブロック図の1つ以上のブロックで特定される機能/行為の態様を実施する命令を含む製品が含まれる。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にもロードされ、コンピュータ、他のプログラム可能装置又は他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1つ以上のブロックで特定される機能/行為を実施する。
図中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法及びコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、特定された論理機能(複数可)を実施するための1つ以上の実行可能命令を含むモジュール、セグメント又は命令部分を表し得る。いくつかの代替的な実施態様では、ブロックに記載された機能は、図面に示す順番以外でも起こり得る。例えば、連続して示される2つのブロックは、実際には、ほぼ同時に実行されてもよく、又は、関連する機能に応じて、ブロックが逆の順序で実行されることがあってもよい。ブロック図及び/又はフローチャート図の各ブロックと、ブロック図及び/又はフローチャート図のブロックの組み合わせとは、特定された機能若しくは行為を実行する、又は、専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースシステムにより実施することができることにも留意されたい。
上記の説明から、本開示の様々な実施形態において、修正及び変更を行えることが理解されよう。本明細書の説明は、例示のみを目的としており、限定的な意味で解釈されるべきものではない。本開示の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
Claims (21)
- メモリアクセス要求をステージングする方法であって、
ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、
前記メモリアクセス要求をステージングバッファに格納することと、
前記メモリアクセス要求を前記ステージングバッファからコマンドキューに移動することと、を含む、
方法。 - 前記コマンドキューから前記メモリアクセス要求を選択することと、
前記メモリアクセス要求を実行することと、をさらに含む、
請求項1の方法。 - 別のメモリアクセス要求を受信することと、
前記ステージングバッファが満杯であることを特定することと、
前記別のメモリアクセス要求を前記ステージングバッファに格納することなく、前記別のメモリアクセス要求を前記コマンドキューに格納することと、をさらに含む、
請求項1の方法。 - 1つ以上の調停ルールに基づいて、前記ステージングバッファ内の複数のメモリアクセス要求から、前記コマンドキューに移動するメモリアクセス要求を選択することをさらに含む、
請求項1の方法。 - 1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択することは、ダイナミックランダムアクセスメモリのオープン状態のページに基づいて、前記メモリアクセス要求を選択することを含む、
請求項5の方法。 - 1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択することは、バンクグループローテーションに基づいて、前記メモリアクセス要求を選択することを含む、
請求項5の方法。 - 1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択することは、サブチャネルバランシングに基づいて、前記メモリアクセス要求を選択することを含む、
請求項5の方法。 - 1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択することは、前記メモリアクセス要求の要求タイプに基づいて、前記メモリアクセス要求を選択することを含む、
請求項5の方法。 - メモリ管理ユニットであって、
ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、
前記メモリアクセス要求をステージングバッファに格納することと、
前記メモリアクセス要求を前記ステージングバッファからコマンドキューに移動することと、
を含むステップを実行するように構成されている、
メモリ管理ユニット。 - 前記ステップは、
前記コマンドキューから前記メモリアクセス要求を選択することと、
前記メモリアクセス要求を実行することと、を含む、
請求項9のメモリ管理ユニット。 - 前記メモリ管理ユニットは、
別のメモリアクセス要求を受信することと、
前記ステージングバッファが満杯であることを特定することと、
前記別のメモリアクセス要求を前記ステージングバッファに格納することなく、前記別のメモリアクセス要求を前記コマンドキューに格納することと、
を含むステップをさらに実行するように構成されている、
請求項9のメモリ管理ユニット。 - 前記メモリ管理ユニットは、1つ以上の調停ルールに基づいて、前記ステージングバッファ内の複数のメモリアクセス要求から、前記コマンドキューに移動する前記メモリアクセス要求を選択することを含むステップをさらに実行するように構成されている、
請求項9のメモリ管理ユニット。 - 前記メモリ管理ユニットは、ダイナミックランダムアクセスメモリのオープン状態のページに基づいて、前記メモリアクセス要求を選択することによって、前記1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択するように構成されている、
請求項12のメモリ管理ユニット。 - 前記メモリ管理ユニットは、バンクグループローテーションに基づいて、前記メモリアクセス要求を選択することによって、前記1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択するように構成されている、
請求項12のメモリ管理ユニット。 - 前記メモリ管理ユニットは、前記メモリアクセス要求の要求タイプに基づいて、前記メモリアクセス要求を選択することによって、前記1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択するように構成されている、
請求項12のメモリ管理ユニット。 - 前記メモリ管理ユニットは、サブチャネルバランシングに基づいて、前記メモリアクセス要求を選択することによって、前記1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択するように構成されている、
請求項12のメモリ管理ユニット。 - プロセッサと、ダイナミックランダムアクセスメモリと、を備えるシステムであって、
前記プロセッサは、メモリ管理ユニットを介して前記ダイナミックランダムアクセスメモリに接続されており、
前記メモリ管理ユニットは、
前記ダイナミックランダムアクセスメモリに対するメモリアクセス要求を受信することと、
前記メモリアクセス要求をステージングバッファに格納することと、
前記メモリアクセス要求を前記ステージングバッファからコマンドキューに移動することと、
を実行するように構成されている、
システム。 - 前記メモリ管理ユニットは、
前記コマンドキューから前記メモリアクセス要求を選択することと、
前記メモリアクセス要求を実行することと、
を実行するように構成されている、
請求項17のシステム。 - 前記メモリ管理ユニットは、
別のメモリアクセス要求を受信することと、
前記ステージングバッファが満杯であることを特定することと、
前記別のメモリアクセス要求を前記ステージングバッファに格納することなく、前記別のメモリアクセス要求を前記コマンドキューに格納することと、
を実行するように構成されている、
請求項17のシステム。 - 前記メモリ管理ユニットは、1つ以上の調停ルールに基づいて、前記ステージングバッファ内の複数のメモリアクセス要求から、前記コマンドキューに移動する前記メモリアクセス要求を選択するように構成されている、
請求項17のシステム。 - 前記メモリ管理ユニットは、ダイナミックランダムアクセスメモリのオープン状態のページ、バンクグループローテーション、前記メモリアクセス要求の要求タイプ、又は、サブチャネルバランシングのうち1つ以上に基づいて、前記メモリアクセス要求を選択することによって、前記1つ以上の調停ルールに基づいて、前記メモリアクセス要求を選択するように構成されている、
請求項20のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/728,114 US20210200695A1 (en) | 2019-12-27 | 2019-12-27 | Staging memory access requests |
US16/728,114 | 2019-12-27 | ||
PCT/US2020/066618 WO2021133806A1 (en) | 2019-12-27 | 2020-12-22 | Staging memory access requests |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023508460A true JP2023508460A (ja) | 2023-03-02 |
JPWO2021133806A5 JPWO2021133806A5 (ja) | 2023-12-22 |
Family
ID=74181383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022539322A Pending JP2023508460A (ja) | 2019-12-27 | 2020-12-22 | メモリアクセス要求のステージング |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210200695A1 (ja) |
EP (1) | EP4081905A1 (ja) |
JP (1) | JP2023508460A (ja) |
KR (1) | KR20220113736A (ja) |
CN (1) | CN114846454A (ja) |
WO (1) | WO2021133806A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11237968B2 (en) * | 2018-10-15 | 2022-02-01 | Texas Instruments Incorporated | Multicore shared cache operation engine |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269709B2 (en) * | 2002-05-15 | 2007-09-11 | Broadcom Corporation | Memory controller configurable to allow bandwidth/latency tradeoff |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
JP4843216B2 (ja) * | 2004-12-10 | 2011-12-21 | 株式会社リコー | メモリ制御装置 |
WO2014094247A1 (en) * | 2012-12-19 | 2014-06-26 | Intel Corporation | Processing video content |
KR102034626B1 (ko) * | 2013-06-26 | 2019-10-21 | 삼성전자 주식회사 | 메모리 동작을 제어하는 방법 및 장치 |
CN104252420B (zh) * | 2013-06-29 | 2017-08-29 | 华为技术有限公司 | 数据写入方法及内存系统 |
US9575890B2 (en) * | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US10318420B2 (en) * | 2014-10-31 | 2019-06-11 | Hewlett Packard Enterprise Development Lp | Draining a write queue based on information from a read queue |
US10318210B2 (en) * | 2015-01-22 | 2019-06-11 | Sony Corporation | Memory controller, storage device, information processing system, and method of controlling memory |
US9639280B2 (en) * | 2015-06-18 | 2017-05-02 | Advanced Micro Devices, Inc. | Ordering memory commands in a computer system |
US10642500B2 (en) * | 2015-09-28 | 2020-05-05 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
KR101888405B1 (ko) * | 2016-06-01 | 2018-08-14 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
US10402120B2 (en) * | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
EP3270294B1 (en) * | 2016-07-15 | 2018-09-26 | Advanced Micro Devices, Inc. | Command arbitration for high-speed memory interfaces |
US10732895B2 (en) * | 2017-03-22 | 2020-08-04 | Burlywood, Inc. | Drive-level internal quality of service |
US10310996B2 (en) * | 2017-05-31 | 2019-06-04 | International Business Machines Corporation | Hardware queue manager with water marking |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
US10901887B2 (en) * | 2018-05-17 | 2021-01-26 | International Business Machines Corporation | Buffered freepointer management memory system |
US10990321B2 (en) * | 2019-02-20 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system for supporting deterministic and non-deterministic commands based on command expiration and the state of the intermediate command queue |
-
2019
- 2019-12-27 US US16/728,114 patent/US20210200695A1/en active Pending
-
2020
- 2020-12-22 KR KR1020227022687A patent/KR20220113736A/ko unknown
- 2020-12-22 JP JP2022539322A patent/JP2023508460A/ja active Pending
- 2020-12-22 CN CN202080090528.6A patent/CN114846454A/zh active Pending
- 2020-12-22 EP EP20839527.7A patent/EP4081905A1/en active Pending
- 2020-12-22 WO PCT/US2020/066618 patent/WO2021133806A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021133806A1 (en) | 2021-07-01 |
CN114846454A (zh) | 2022-08-02 |
KR20220113736A (ko) | 2022-08-16 |
US20210200695A1 (en) | 2021-07-01 |
EP4081905A1 (en) | 2022-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6072783B2 (ja) | メモリコントローラおよびかかるメモリコントローラの動作方法 | |
US10203878B2 (en) | Near memory accelerator | |
US10157082B2 (en) | Preferential CPU utilization for tasks | |
US20190056870A1 (en) | Reducing solid state Storage device read tail latency | |
KR20150017526A (ko) | 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법 | |
US10241926B2 (en) | Migrating buffer for direct memory access in a computer system | |
US9569364B1 (en) | Multiple history based micro partition prefetch optimization | |
US10936369B2 (en) | Maintenance of local and global lists of task control blocks in a processor-specific manner for allocation to tasks | |
JP2023508460A (ja) | メモリアクセス要求のステージング | |
US10169260B2 (en) | Multiprocessor cache buffer management | |
JP2023508458A (ja) | ステージングバッファのアービトレーション | |
US20150278114A1 (en) | Control apparatus and control method | |
JP2022551776A (ja) | ページレベル追跡ロードオーダキューを用いた投機的実行 | |
CN116107635A (zh) | 命令分发器、命令分发方法、调度器、芯片、板卡、设备 | |
JP2017097466A (ja) | ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム | |
US11216212B2 (en) | Minimizing conflicts in multiport banked memory arrays | |
US11669271B2 (en) | Memory operations using compound memory commands | |
US11055218B2 (en) | Apparatus and methods for accelerating tasks during storage caching/tiering in a computing environment | |
US10380040B2 (en) | Memory request scheduling to improve bank group utilization | |
KR101523469B1 (ko) | 식별 번호를 기록하여 블록 간의 시간적 선후 관계를 추출하는 캐시 방법 및 시스템 | |
US20190163646A1 (en) | Cyclic preloading mechanism to define swap-out ordering for round robin cache memory | |
TW201610827A (zh) | 資料存取裝置以及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220830 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231214 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231214 |