JP2022510715A - データ領域を記憶するためのキャッシュ - Google Patents

データ領域を記憶するためのキャッシュ Download PDF

Info

Publication number
JP2022510715A
JP2022510715A JP2021532404A JP2021532404A JP2022510715A JP 2022510715 A JP2022510715 A JP 2022510715A JP 2021532404 A JP2021532404 A JP 2021532404A JP 2021532404 A JP2021532404 A JP 2021532404A JP 2022510715 A JP2022510715 A JP 2022510715A
Authority
JP
Japan
Prior art keywords
address
memory
area
cache
data
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
JP2021532404A
Other languages
English (en)
Other versions
JP7108141B2 (ja
Inventor
エイチ. ロー ガブリエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022510715A publication Critical patent/JP2022510715A/ja
Application granted granted Critical
Publication of JP7108141B2 publication Critical patent/JP7108141B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0877Cache access modes
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

コンピューティングシステムで効率的にメモリアクセスを行うためのシステム、装置及び方法を開示する。コンピューティングシステムは、1つ以上のクライアントと、通信ファブリックと、低レイテンシ、高帯域幅メモリが実装された最終レベルキャッシュと、を含む。最終レベルキャッシュのキャッシュコントローラは、最終レベルキャッシュの第2の領域に記憶されたデータのコピーを有するシステムメモリの第1の領域に対応するアドレスの範囲を決定する。キャッシュコントローラは、メモリアクセス要求の要求アドレスがアドレスの範囲内にないことを決定した場合に、選択されたメモリアクセス要求をシステムメモリに送信する。キャッシュコントローラは、要求アドレスがアドレスの範囲内にあることを決定した場合に、最終レベルキャッシュのデータにアクセスすることによって、選択されたメモリ要求を処理する。【選択図】図2

Description

半導体製造プロセスが進歩し、ダイ上の幾何学的寸法が減少するにつれて、半導体チップは、より多くの機能及び性能を提供する。しかしながら、処理及び集積回路の設計の最新の技術では、潜在的利益を制限する設計上の問題が依然として生じている。1つの問題として、二次元平面レイアウトチップの連続した世代において、単位長さ当たりの相互接続遅延が増加し続けていることが挙げられる。また、個々のチップ間の電気インピーダンスが高いため、レイテンシが長くなる。さらに、オフチップから別のダイにトラバースする信号は、これらの長い信号経路上で寄生容量が増加するため、これらの信号の消費電力を増加させる。
別の設計上の問題は、多くのデータにアクセスする殆どのソフトウェアアプリケーションが、通常、メモリにバインドされているため、計算時間が一般にメモリ帯域幅によって決定されることである。オフチップダイナミックランダムアクセスメモリ(DRAM)のメモリアクセスレイテンシは、数百から数千を超えるクロックサイクルになり、プロセッサ設計のコア数の増加により、メモリ帯域幅の問題が顕著になっている。近年、オフパッケージのDRAM及びメインメモリにアクセスする前に、大容量、低レイテンシ、高帯域幅のメモリへのアクセスを提供するインパッケージメモリを実装するためのメモリ技術が進歩している。
メモリ技術の一例は、垂直方向及び水平方向の両方で単一回路に集積化されたアクティブな電子部品の2つ以上の層を含むために使用される三次元集積回路(3DIC)である。システムインパッケージ(SiP)又はチップスタックマルチチップモジュール(MCM)として知られる3Dパッケージは、単一パッケージに別々のチップを積み重ねることによって、スペースを節約する。これらの層内のコンポーネントは、垂直方向又は水平方向に関わらず、オンチップシグナリングを使用して通信する。このシグナリングにより、既知の二次元平面レイアウト回路上の相互接続信号の遅延を低減する。
上記の説明の製造トレンドは、単一パッケージ内にギガバイトの集積メモリをもたらす。場合によっては、コンピューティングシステムは、オフチップメモリにアクセスする前に、追加のオンチップストレージを最終レベルキャッシュとして使用する。追加メモリによって達成されるミス率の低下は、プロセッサとそのオフチップメモリとの間のレイテンシギャップを隠すのに役立つ。しかしながら、ロウベース(row-based)のメモリのキャッシュアクセスメカニズムは、この追加の集積メモリには非効率的である。マルチギガバイトキャッシュのための数百メガバイト等の大規模なタグデータアレイは、マイクロプロセッサダイ上に配置するのに費用がかかり、大規模なタグアレイのルックアップに長いレイテンシをもたらす。タグ及びデータが順次読み出されるため、ルックアップ及びデータ検索に時間がかかり過ぎる。
例えば、64バイトラインから4キロバイト(KB)ラインに増大する等のように、追加の集積メモリのデータキャッシュラインのサイズが増加すると、集積メモリのキャッシュラインの数及び対応するタグのサイズの両方が減少する。しかしながら、ダーティビット及びコヒーレンシ情報は、元のキャッシュラインサイズ(64バイトライン)の粒度で維持される。したがって、オンパッケージDRAMは、多くの追加データストレージを提供するが、キャッシュ及びDRAMアクセスメカニズムが非効率的である。
上記に鑑み、コンピューティングシステムで効率的にメモリアクセスを行うための効率的な方法及びシステムが望まれている。
添付の図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点を良好に理解することができる。
データストレージの一実施形態のブロック図である。 コンピューティングシステムで効率的なメモリアクセスを行う方法の一実施形態のフロー図である。 コンピューティングシステムの一実施形態のブロック図である。 システムインパッケージ(SiP)の一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 コンピューティングシステムで効率的なメモリアクセスを行う方法の一実施形態のフロー図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 データストレージの一実施形態のブロック図である。 コンピューティングシステムで効率的なメモリアクセスを行う方法の一実施形態のフロー図である。
本発明は、様々な変形及び代替形態を受け入れるが、特定の実施形態を図面に例として示し、本明細書で詳細に説明する。しかしながら、図面及びその詳細な説明は、本発明を、開示された特定の形態に限定することを意図するものではなく、むしろ、本発明は、添付の特許請求の範囲によって定義される本発明の範囲に収まる全ての変形、均等物及び代替物を含むことを理解されたい。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者は、様々な実施形態が、これらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの場合、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張され得る。
コンピューティングシステムで効率的にメモリアクセスを行うための様々なシステム、装置、方法及びコンピュータ可読記憶媒体が開示される。コンピューティングシステム内の1つ以上のクライアントがアプリケーションを処理する。このようなクライアントの例は、汎用中央処理装置(CPU)、グラフィックス処理装置(GPU)、高速処理装置(APU)、入出力(I/O)デバイス等を含む。また、コンピューティングシステムは、クライアント間でデータを転送するための複数のリンクインタフェースを含む。さらに、1つ以上のクライアントの各々は、通信ファブリックを介して最終レベルキャッシュのデータにアクセスする。
様々な実施形態では、キャッシュは、システムメモリから分離した低レイテンシ、高帯域幅メモリで実現される。いくつかの実施形態では、キャッシュは、キャッシュメモリサブシステムにおける最終レベルキャッシュとして使用される。他の実施形態では、キャッシュは、キャッシュメモリサブシステム内の別のレベルである。システムメモリは、様々なオフパッケージダイナミックランダムアクセスメモリ(DRAM)のうち何れかと、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)等のメインメモリと、を含む。いくつかの実施形態では、コンピューティングシステムは、何れかのクライアントの処理装置を有するシステムインパッケージ(SiP)に含まれる三次元(3D)DRAM等の統合DRAMを備えたキャッシュを実装する。他の実施形態では、コンピューティングシステムは、同期RAM(SRAM)、組み込みDRAM(eDRAM)、ソリッドステートディスク等のフラッシュメモリ、及び、様々な不揮発性メモリの何れか等のキャッシュを実現するための他のメモリ技術のうち何れかを含む。不揮発性メモリの例として、相変化メモリ、メモリスタ、及び、スピン転送トルク(STT)磁気抵抗ランダムアクセスメモリ(MRAM)が挙げられる。
キャッシュのキャッシュコントローラは、1つ以上のキューを含む。各キューは、各々のタイプのメモリアクセス要求を記憶する。例えば、いくつかの設計では、第1のキューは、メモリ読み出し要求を記憶し、第2のキューは、メモリ書き込み要求を記憶する。キャッシュコントローラ内のロジックは、1つ以上のキューのうち何れかのキューを選択し、選択されたキューからメモリアクセス要求を選択する。ロジックは、キャッシュの第2の領域に記憶された連続データのコピーを有する、システムメモリに記憶された連続データの第1の領域に対応するアドレスの範囲を決定する。本明細書で使用される場合、「連続データ」という用語は、データストレージで互いに隣接して位置する1ビット以上のデータを指す。いくつかの実施形態では、連続データのサイズは、実行中のソフトウェアアプリケーションの予測される次のデータアクセスの領域に対応するサイズの粒度を提供するために、キャッシュラインのサイズ(例えば、64バイト)とページのサイズ(例えば、4キロバイト)との間の範囲になる。他の実施形態では、別のサイズの連続データを使用する。
以前の時点において、ロジックが、予測される次のデータアクセスの領域が定義されていると決定した場合、ロジックは、システムメモリのこの領域(この例では、第1の領域)の連続データのコピーを、キャッシュの第2の領域に記憶する。第1の領域の連続データは、予測される次のデータアクセスに対応するデータを含む。また、ロジックは、領域を特徴付けるために使用される複数のパラメータを初期化する。例えば、ロジックは、システムメモリの先頭にデータを記憶するメモリ位置を指す第1の開始アドレスを維持する。さらに、ロジックは、キャッシュの第2の領域の先頭にデータを記憶するメモリ位置を指す第2の開始アドレスを維持する。さらに、ロジックは第2の領域のサイズを維持する。
一実施形態では、ロジックは、受信したメモリアクセス要求を監視し、パターンを識別することによって、次のメモリアクセスでアクセスされるシステムメモリの領域を予測する。ロジックは、この領域を識別する。これに応じて、ロジックは、この領域の連続データのコピーを記憶することと、対応するパラメータを更新することと、等の上記のステップを行う。別の実施形態では、ロジックは、予測される次のデータアクセスの領域を識別するソフトウェア、又は、識別するために使用されるソフトウェアから1つ以上のヒントを受信する。
ロジックは、第2の領域のサイズの変更を検出すると、第1の開始アドレスにおいて始まり、第1の開始アドレスと第2の領域の新しいサイズとの合計であるアドレスで終わるアドレスの範囲を決定する。いくつかの実施形態では、第1の開始アドレス及び第2の領域のサイズのうち1つ以上に対する更新は、データが第2の領域で更新されると発生する。第2の領域に対する更新は、第2の領域におけるデータの追加、データの除去、及び、既存データの上書きのうち1つ以上を含む。ロジックがメモリアクセス要求を複数のキューのうち何れかのキューから選択すると、キャッシュコントローラのロジックは、選択されたメモリアクセス要求の要求アドレスを、アドレスの範囲と比較する。ロジックは、要求アドレスがこの範囲内にあるかどうかを決定する。したがって、最終レベルキャッシュ内にキャッシュヒット又はキャッシュミスがあるかどうかを決定するために、ロジックは、キャッシュ内のタグアレイのセットアソシアティブルックアップ又はフルアソシアティブルックアップを行うのではなく、要求アドレスを、この維持されたアドレスの範囲と比較する。比較は、キャッシュのインデックス及びタグのルックアップ動作よりも高速な動作である。
ロジックは、選択されたメモリアクセス要求の要求アドレスがアドレスの範囲内にないことを決定した場合に、選択されたメモリアクセス要求を、処理のためにシステムメモリに送信する。しかしながら、ロジックは、要求アドレスがアドレスの範囲内にあると決定した場合に、キャッシュのデータにアクセスすることによってメモリアクセス要求を処理する。そのために、ロジックは、要求アドレスと第1の開始アドレスとの差に基づいてオフセットを決定する。その後、ロジックは、オフセット及び第2の開始アドレスに基づいて変換アドレスを決定する。次に、ロジックは、変換アドレスから始まるキャッシュのデータにアクセスすることによって、メモリアクセス要求を処理する。
図1を参照すると、データストレージ100の一実施形態の一般化されたブロック図が示されている。図示するように、システムメモリ110及び最終レベルキャッシュ130の各々は、データを記憶する。この説明では、キャッシュ130を最終レベルキャッシュとして説明しているが、他の実施形態では、キャッシュ130は、キャッシュメモリサブシステム内の別のレベルである。説明を容易にするために、処理装置、通信インターフェース等を示していない。データ126は、システムメモリ110の領域120に記憶された連続データである。最終レベルキャッシュ130は、領域120の連続データ126のコピーを領域140に記憶する。領域パラメータ150は、領域120,140を特徴付ける。
様々な設計では、システムメモリ110は、オフパッケージDRAM、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)のうち1つ以上を含む。いくつかの設計では、最終レベルキャッシュ130は、システムメモリ110から分離された、オンパッケージの低レイテンシ、高帯域幅のメモリを含む。いくつかの設計では、最終レベルキャッシュ130は、3DDRAMを含む。他の実施形態では、最終レベルキャッシュ130は、同期RAM(SRAM)、組み込みDRAM(eDRAM)、ソリッドステートディスク等のフラッシュメモリ、及び、様々な不揮発性メモリのうち何れかを含む。不揮発性メモリの例として、相変化メモリ、メモリスタ、スピン転送トルク(STT)磁気抵抗ランダムアクセスメモリ(MRAM)が挙げられる。
図示した実施形態では、アドレス122(「x」ともよばれる)は、領域120の先頭にデータを記憶するメモリ位置を指す。ここで、総称値「x」は、整数、16進数等の任意の方式で表される任意の値である。領域120は、サイズ124(「Sバイト」とも呼ばれる)を有する。同様に、アドレス142(「a」とも呼ばれる)は、領域140の先頭にデータを記憶するメモリ位置を指す。領域140は、サイズ144(「Sバイト」とも呼ばれる)を有し、領域120のサイズ124と等しい。値「x」、「S」及び「a」は、正の整数である。
いくつかの実施形態では、最終レベルキャッシュ130のキャッシュコントローラの順序要素は、領域パラメータ150を記憶する。順序要素の例として、レジスタ、フリップフロップ回路、ラッチが挙げられる。一実施形態では、領域パラメータ150は、有効ビット及びメタデータ等のステータス情報152を含む。メタデータの例として、データ126の作成者の識別子、データ126の利用者の識別子、データ126のキャッシュコヒーレンシ情報、データ126のクリーン/ダーティ情報等が挙げられる。作成者及び利用者の識別子は、処理装置識別子、プロセス識別子、スレッド識別子のうち1つ以上を含む。他の実施形態では、領域パラメータ150は、ステータス情報152を含まないが、これは、この情報が、キャッシュコントローラの他のキュー及び順序要素に記憶されるためである。
一実施形態では、領域パラメータ150は、2つのアドレスを含む。第1のアドレス154は、領域120の先頭にデータを記憶するメモリ位置を指すアドレス122のコピーである。第2のアドレス156は、領域140の先頭にデータを記憶するメモリ位置を指すアドレス142のコピーである。したがって、領域パラメータ150は、領域120の先頭と領域140の先頭との間のメモリマッピングを含む。例えば、領域パラメータ150は、現在、アドレス122(x)とアドレス142(a)との間のメモリマッピングを記憶する。いくつかの実施形態では、領域パラメータ150は、領域140のサイズ158も含む。一実施形態では、キャッシュコントローラのロジックは、ステータスフィールド152の有効ビットではなく、サイズフィールド158の0バイトのサイズ値を使用して、有効領域が最終レベルキャッシュに記憶されていないことを示す。
キャッシュコントローラのロジックは、領域パラメータ150を使用して、大きなタグアレイ内のルックアップ動作よりも高速な比較動作によって、最終レベルキャッシュ130のキャッシュヒット又はキャッシュミスを決定する。一例では、ロジックは、有効領域が最終レベルキャッシュ130に記憶されているかどうかを決定する。ステータスフィールド152が使用され、有効ビットが否定される場合、最終レベルキャッシュ130に記憶された有効領域がない。ステータスフィールド152が使用されず、サイズフィールド158が0バイトの値を記憶する場合、最終レベルキャッシュ130に記憶された有効領域がない。このような場合、キャッシュコントローラのロジックは、キャッシュミスがあると決定し、要求アドレスを有するメモリアクセス要求を、処理のためにシステムメモリ110に送信する。したがって、ロジックは、要求アドレスのインデックスによって選択された大きなタグアレイのセットへのセットアソシアティブルックアップ動作を行うことをスキップし、これにより、メモリアクセス要求を処理するためのレイテンシが短縮される。
ステータスフィールド152が使用され、有効ビットがアサートされる場合、又は、ステータスフィールド152が使用されず、サイズフィールド158が0以外の正の整数を記憶する場合、キャッシュコントローラのロジックは、最終レベルキャッシュ130に記憶された有効領域があると決定する。このような場合、キャッシュコントローラのロジックは、アドレス122(x)及び領域140のサイズ158(S)のうち1つ以上の変化を決定した場合に、アドレスの範囲を決定する。ロジックは、アドレス122(x)において始まり、アドレス122と領域140のサイズ158(S)との合計であるアドレスで終わるようなアドレスの範囲を決定する。図示した実施形態の表記を使用すると、アドレスの範囲は「x+S」である。ロジックは、要求アドレスがこの範囲内にあるかどうかを決定する。例えば、要求アドレスが「y」として示される場合、ロジックは、式x<y<(x+S)が真であるかどうかを決定する。したがって、最終レベルキャッシュ130内にキャッシュヒット又はキャッシュミスがあるかどうかを決定するために、ロジックは、要求アドレスを、このアドレスの範囲と比較する。比較動作は、最終レベルキャッシュ130のインデックス及びタグのルックアップ動作よりも高速な動作である。
ロジックが、最終レベルキャッシュ130のアクセスがキャッシュミスであると決定した場合、キャッシュコントローラは、要求アドレスを有するメモリアクセス要求を、処理のためにシステムメモリ110に送信する。しかしながら、ロジックが、最終レベルキャッシュ130のアクセスがキャッシュヒットであると決定した場合、ロジックは、最終レベルキャッシュ130からデータを取得することによって、メモリアクセス要求を処理する。これを行うために、ロジックは、要求アドレス(y)とアドレス122(x)との差((y-x)として表される)に基づいて、オフセットを決定する。ロジックは、オフセット(y-x)及びアドレス142(a)(2つの値の合計であり、(a+(y-x)))に基づいて、変換アドレスを決定する。ロジックは、変換アドレス又は(a+(y-x))によって表されるアドレスにおいて始まる最終レベルキャッシュ130のデータにアクセスすることによって、メモリアクセス要求を処理する。ロジックは、要求アドレスのインデックスによって選択された大きなタグアレイのセットへのセットアソシアティブルックアップ動作を行うことをスキップする。むしろ、キャッシュヒットを決定するために使用される比較動作の後、単純な算術演算を使用して、要求データを最終レベルキャッシュ130に記憶する位置を識別する。
図2を参照すると、コンピューティングシステムでメモリアクセスを効率的に行う方法200の一実施形態が示されている。説明のために、本実施形態(並びに、図10及び図14)のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する1つ以上の要素が同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、全体的に省略されてもよいことに留意されたい。また、他の追加の要素も必要に応じて実行される。本明細書で説明する様々なシステム又は装置の何れも、方法200,1000,1400を実施するように構成されている。
1つ以上の処理装置は、1つ以上のコンピュータプログラム又はソフトウェアアプリケーションを実行する。処理装置の例として、汎用中央処理装置(CPU)、グラフィックス処理装置(GPU)等の内部のプロセッサコアが挙げられる。いくつかの実施形態では、システムインパッケージ(SiP)は、処理装置と、オンパッケージの低レイテンシ、高帯域幅メモリと、を含む。このようなメモリの一例は、3DDRAM等の3D集積メモリである。一実施形態では、処理装置は、3DDRAMの少なくとも一部をキャッシュとして利用する。一実施形態では、キャッシュは、最終レベルキャッシュである。以下の説明では、低レイテンシ、高帯域幅メモリを最終レベルキャッシュとして使用する場合について説明するが、他の実施形態では、高帯域幅メモリを、第1レベル(L1)、第2レベル(L2)又は最終レベル以外のキャッシュメモリ階層の他のレベルとして使用する。処理装置は、最終レベルキャッシュよりも低いレベルのキャッシュメモリサブシステム内のメモリ要求ミスを決定する(ブロック202)。
処理装置は、メモリ要求に対応する要求アドレスを最終レベルキャッシュに送信する(ブロック204)。一実施形態では、最終レベルキャッシュのキャッシュコントローラ内のロジックは、最終レベルキャッシュの第2の領域に記憶された連続データのコピーを有するシステムメモリ内の連続データの第1の領域の識別情報(identification)を維持する。いくつかの実施形態では、識別情報は、第1の領域の先頭を識別する第1の開始アドレスを含む。さらに、識別情報は、第2の領域のサイズを含む。最終レベルキャッシュのキャッシュコントローラ内のロジックは、この第1の領域のアドレスの範囲、すなわち、システムメモリに記憶された連続データを記憶するメモリ位置を指すシステムメモリアドレス空間内のアドレスの範囲を決定する(ブロック206)。この連続データは、最終レベルキャッシュに記憶されたコピーを有する。いくつかの設計では、ロジックは、(図1の)データストレージ100の説明で上述した式を使用する。
要求アドレスが範囲内にない場合(条件付きブロック208:「いいえ」)、ロジックは、要求アドレスを含むメモリ要求をシステムメモリに送信する(ブロック210)。メモリ要求に対する最終レベルキャッシュのアクセスがキャッシュミスと見なされるため、メモリ要求は、システムメモリ等のメモリサブシステムの下位レベルに送信される。要求アドレスが選択された範囲内にある場合(条件付きブロック208:「はい」)、ロジックは、要求アドレスと、システムメモリの範囲の開始アドレスと、の差に基づいて、オフセットを決定する(ブロック212)。ロジックは、オフセット及び最終レベルキャッシュの範囲の開始アドレスに基づいて、変換アドレスを決定する(ブロック214)。例えば、変換アドレスは、オフセット及び最終レベルキャッシュの範囲の開始アドレスの合計である。ロジックは、変換アドレスにおいて始まる最終レベルキャッシュのデータにアクセスすることによって、メモリ要求を処理する(ブロック216)。
図3を参照すると、低レイテンシ、高帯域幅のキャッシュを利用するコンピューティングシステム300の一実施形態の一般化されたブロック図が示されている。様々な実施形態では、コンピューティングシステム300は、システムインパッケージ(SiP)310等の三次元(3D)パッケージングを利用する。SiP310は、メモリバス350を介してメモリ362及びオフパッケージDRAM370に接続されている。一実施形態では、コンピューティングシステム300は、モバイルコンピュータ、スマートフォン又はタブレット内のスタンドアロンシステム、デスクトップ、サーバ等である。SiP310は、処理装置320と、低レイテンシ、高帯域幅のキャッシュ330と、を使用する。処理装置310及びキャッシュ330は、低レイテンシ相互接続348を介して通信する。インパッケージの低レイテンシ相互接続348は、SiPを使用しない場合、長いオフチップ相互接続よりも短い長さを有する1つ以上の水平ルート及び/又は垂直ルートを使用する。
いくつかの実施形態では、SiP310は、3DDRAM等のDRAMメモリ技術を利用するが、1つ以上のロウバッファ(row buffers)又は他の同等の構造を含む低レイテンシ、高帯域幅及びロウベースのアクセススキームを使用する他のメモリ技術が可能であり、考えられる。他のメモリ技術の例として、相変化メモリ、スピントルク転送抵抗メモリ、メモリスタ、組み込みDRAM(eDRAM)等が挙げられる。いくつかの設計では、処理装置320は、汎用マイクロプロセッサであり、他の設計では、処理装置320は、別のタイプの処理装置である。他のタイプの処理装置は、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、追加の処理機能を含むチップである高速処理装置(APU)を含む。この追加の処理機能により、汎用CPUの外側で1つ以上のタイプの計算が高速化される。一実施形態では、APUは、GPU、FPGA又は他の処理装置と同じダイに統合された汎用CPUを含み、消費電力を減らしながら、これらの装置間のデータ転送速度を向上させる。他の実施形態では、APUは、ビデオ処理アクセラレータ及び他のアプリケーション固有のアクセラレータを含む。
実行エンジン322は、処理装置320のタイプに基づいて、1つ以上のプロセッサコアを使用する。さらに、いくつかの設計では、実行エンジン322は、通信メッセージを転送するために通信ファブリック(又は、「ファブリック」)を使用する。通信メッセージの例として、コヒーレンシプローブ、割り込み、読み出しアクセスコマンド及び書き込みアクセスコマンド、対応するデータが挙げられる。ファブリックにおける相互接続の例として、バスアーキテクチャ、クロスバーベースアーキテクチャ、ネットワークオンチップ(NoC)通信サブシステム、ダイ間の通信チャネル、シリコンインターポーザー、及び、貫通シリコンビア(TSV)が挙げられる。多くの設計では、処理装置320は、システムバスコントローラをインターフェースロジック326に組み込み、インターフェースロジック326は、様々なプロトコルの1つを利用して、実行エンジン322のプロセッサコアを、メモリ362、DRAM370、周辺入出力(I/O)デバイス及び他の処理装置に接続する。
コンピューティングシステム300は、オフパッケージメモリ362をメインメモリ又はシステムメモリとして使用する。メモリ362は、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)の何れかである。オフパッケージDRAM370は、様々なタイプのDRAMの何れかである。コンピューティングシステム300は、オフチップメモリ362のデータを、I/Oコントローラとバス360及びメモリバス350とを介して、オフチップDRAM370に充填する。インターフェースロジック360は、オフパッケージメモリ362及びオフパッケージDRAM370の各々について、通信プロトコル、アドレスフォーマット及びパケットフォーマットをサポートする。
実行エンジン322内の各プロセッサコアは、プロセッサコアのメモリレイテンシを短縮するために、1つ以上のレベルのキャッシュメモリサブシステムを使用する。いくつかの設計では、プロセッサコアは、実行エンジン322内の共有キャッシュにさらにアクセスする。実行エンジン322内のキャッシュメモリサブシステムがプロセッサコアによって要求されたデータを含まない場合、実行エンジン322は、メモリアクセス要求をインパッケージキャッシュ330に送信する。インターフェースロジック340は、インパッケージキャッシュ330と処理装置320との間で情報を転送するための通信プロトコル、アドレスフォーマット及びパケットフォーマットをサポートする。
他のDRAMトポロジと同様に、いくつかの設計では、インパッケージキャッシュ330は、複数のバンクにセグメント化された複数のメモリアレイ332を使用する。このような場合、各バンクは、各々のロウバッファを含む。ロウバッファの各々は、対応するメモリアレイバンク内の複数のロウのうちアクセスされたロウにデータを記憶する。いくつかの実施形態では、キュー342、領域パラメータ344、及び、領域パラメータ344を使用するロジック346の一部の機能は、ロジック336に配置される。例えば、この機能は、インパッケージキャッシュ330のキャッシュコントローラに含まれる。他の実施形態では、この機能は、図示するように、インターフェースロジック340に配置される。ロジック336及びロジック346の各々は、ソフトウェア、組み合わせロジック及び順序要素に使用される回路等のハードウェア、又は、ソフトウェア及びハードウェアの組み合わせによって実装される。
インターフェースロジック340がメモリアクセス要求を実行エンジン322から受信すると、ロジック346は、アクセスタイプに基づいて、受信したメモリアクセス要求を複数のキュー342のうち何れかに記憶する。例えば、キュー342の第1のキューは、メモリ読み出し要求を記憶し、キュー342の第2のキューは、メモリ書き込み要求を記憶する。ロジック346内のアービトレーションロジックは、複数のキュー342のうち何れかのキューを選択し、選択されたキューからメモリアクセス要求を選択する。選択されたメモリアクセス要求について、ロジック346は、領域338等のインパッケージキャッシュ330の第2の領域に記憶されたデータのコピーを有する、領域372等のシステムメモリの第1の領域に対応するアドレスの範囲を決定する。システムメモリは、オフパッケージメモリ362及びオフパッケージDRAM370の組み合わせによって実装される。
ロジック346は、メモリアクセス要求の要求アドレスが領域372のアドレスの範囲内にないことを決定すると、選択されたメモリアクセス要求をシステムメモリに送信する。ロジック346が、要求アドレスが領域372のアドレスの範囲内にあると決定した場合、キャッシュコントローラは、インパッケージキャッシュ330内のメモリアレイ332のデータにアクセスすることによって、選択されたメモリ要求を処理する。ロジック346は、上記の決定のために領域パラメータ344を使用する。様々な実施形態では、領域パラメータ344は、(図1の)領域パラメータ150と同等である。
ロジック346は、領域372のコピーをインパッケージキャッシュ330の領域338としてオフパッケージシステムメモリに記憶するタイミングを決定するための様々な技術の1つを使用する。いくつかの実施形態では、ロジック346は、実行エンジン322からのメモリアクセスを監視して、ストリーミングパターン又はシーケンシャルメモリアクセスパターンを検出する。ロジック346は、様々な技術のうち何れかを使用して、少なくともハードウェアプリフェッチャによって使用される技術等のストリーミングアクセスパターンを検出する。ロジック346がストリーミングパターンを検出すると、ロジック346は、新しい領域を定義する。いくつかの実施形態では、メモリ要求が領域338の終わりからLバイト以内にあるアドレスにアクセスすると、ロジック336及びロジック346の何れかは、領域338のサイズをPバイトだけ拡張させる。ここで、L及びPは、0以外の正の整数である。一実施形態では、L及びPの値は、制御レジスタ及びステータスレジスタ(CSR)347内のプログラム可能レジスタに記憶される。いくつかの実施形態では、初期領域サイズも、CSR347のプログラム可能レジスタに記憶される。
他の実施形態では、ロジック346は、インパッケージキャッシュ330の領域338を定義及び生成するタイミングを決定するためのソフトウェアヒントを使用する。ソフトウェアは、特定の命令を使用して、アプリケーション又はオペレーティングシステムによってアクセスされる特定のレジスタを更新する。さらに、ソフトウェアは、インターフェースロジック340の1つ以上の制御レジスタ及びステータスレジスタ(CSR)347を更新することが可能である。ディープニューラルネットワークを処理する場合、ソフトウェアアプリケーションは、多層ニューラルネットワークの1つの層の処理が終了したタイミングと、多層ネットワークの次の層に移動したタイミングと、を認識する。多層ネットワークの各層が(順方向又は逆方向であるかどうかに関係なく)トラバースされると、ソフトウェアアプリケーションは、ソフトウェアヒントを利用して、処理中のシステムメモリの現在の領域をロジック346及びCSR347のうち1つ以上に通知する。いくつかの実施形態では、ソフトウェアアプリケーションは、領域372,338のサイズを増減するタイミングを示すヒントを提供する。このヒントは、領域372及び領域338の左方向又は右方向からサイズを変更することも示す。
さらに、ソフトウェアヒントは、システムメモリの別の領域に移動することによって、領域372及び領域338のコンテンツ全体を変更するタイミングを示す。CSR347に記憶された制限は、領域338がインパッケージキャッシュ330のサイズを超えることを抑制する。いくつかの実施形態では、ロジック346が既に領域を定義している場合、ロジック346は、基準に基づいて、既存領域をサポートするか、新しい領域をサポートするかを選択する。基準の例として、領域のサイズ、領域のデータにアクセスするアプリケーションの優先度、既存の領域のエイジ(age)等が挙げられる。
1つ以上のソフトウェアアプリケーションの実行中に、アプリケーションは、領域338のコンテンツを変更する。ロジック346が、領域338の変更部分が有効でなくなるように領域338のサイズ又は一部を調整する場合、ロジック336及びロジック346の何れかは、変更データをオフパッケージDRAM370に送信する。いくつかの設計では、ロジック336及びロジック346の何れかは、ライトスルーキャッシュポリシー又はライトバックキャッシュポリシーを用いてインパッケージキャッシュ330を制御する。ライトスルーキャッシュポリシーは、時間の経過とともに、書き込み動作をオフパッケージDRAM370に分散させる。対照的に、ライトバックキャッシュポリシーは、領域338のサイズが減るまで書き込み動作を遅らせる。このようなとき、ロジック336又はロジック346は、変更データの書き込み動作を、書き込みトラフィックのバーストでオフパッケージDRAM370に送信する。他の設計では、ロジック336及びロジック346の何れかは、ライトスルーキャッシュポリシー及びライトバックキャッシュポリシーの組み合わせを用いてインパッケージキャッシュ330を制御し、2つのポリシーの利点及びコストをトレードオフする。
上述したように、いくつかの設計では、インパッケージキャッシュ330は、例えば、SRAM、相変化メモリ、スピントルク転送抵抗メモリ、メモリスタ、組み込みDRAM(eDRAM)等の低レイテンシ、高帯域幅のメモリ技術を使用する。他の設計では、インパッケージキャッシュ330は、低レイテンシ、高帯域幅の3DDRAMを使用する。ここで、図4を参照すると、システムインパッケージ(SiP)400,440の実施形態の一般化されたブロック図が示されている。図示したSiPは、1つ以上の三次元集積回路(3DIC)を含む。3DICは、垂直方向及び/又は水平方向の両方で単一回路に統合されたアクティブな電子部品の2つ以上の層を含む。いくつかの設計では、製造技術が、インターポーザベースの統合を使用することによって、製造技術は、3DICを処理装置420の隣に配置する。或いは、製造技術は、3DICを別のICの上に直接積層する。
ダイスタッキング技術は、高帯域幅及び低遅延の相互接続を含む同じパッケージ内で、複数の別々のシリコン部分(集積チップ)を物理的に積層することを可能にする製造プロセスである。ダイは、シリコンインターポーザー上に並んで積層されるか、互いに上方に垂直に直接積層される。SiPの1つの構成は、1つ以上のDRAMチップを処理装置の隣に及び/又はその上に積層することである。積層されたDRAMチップは、処理装置に非常に大きなキャッシュを提供する。いくつかの設計では、この大きなキャッシュは、数百MB程度のサイズ(又は、数百MBよりも大きいサイズ)を有する。
図示するように、一実施形態では、SiP400は、処理装置420と、水平低レイテンシ相互接続410を介して処理装置420と通信する1つ以上の三次元(3D)DRAM430,432と、を含む。ここでも、処理装置420は、汎用CPU、グラフィックス処理装置(GPU)、加速処理装置(APU)、フィールドプログラマブルゲートアレイ(FPGA)、又は、キャッシュ等のロウベースメモリを利用する他のデータ処理デバイスのうち何れかである。
インパッケージの水平低レイテンシ相互接続410は、SiPを使用しない場合、長いオフチップ相互接続と比較して、相互接続信号の長さを短縮する。インパッケージの水平低レイテンシ相互接続410は、チップ(処理装置420及び3DDRAM430及び432等のチップ)が回路基板の別々のパッケージに搭載されているかのように、特定の信号及びプロトコルを使用する。SiP400は、パッケージ外部接続414に達するバックサイドビア又はスルーバルクシリコンビア412をさらに含む。パッケージ外部接続414は、入力/出力(I/O)信号及び電力信号に使用される。
別の実施形態では、SiP440は、処理装置420の上に積層された3DDRAM450を含む。図示されていないが、SiP400及びSiP440の各々について、複数のチップ又はデバイス層が互いに上方に積層され、直接垂直相互接続416がこれらを介してトンネリングしている。異なるデバイス層間をトンネリングすることができる垂直相互接続416のサイズ及び密度は、3DICを製造するために使用される基盤技術に基づいて変化する。
図5を参照すると、データストレージ500の一実施形態の一般化されたブロック図が示されている。上述した回路及びロジックには、同じ符号が付されている。図示するように、システムメモリ110及び最終レベルキャッシュ130の各々は、データを記憶する。ここでも、キャッシュ330を最終レベルキャッシュとして説明するが、他の実施形態では、キャッシュ330は、キャッシュメモリサブシステム内の別のレベルである。データ126は、システムメモリ110に記憶された連続データである。データ526は、領域520を生成するためにシステムメモリ110の領域に追加された連続データである。システムメモリ110の連続データのサイズは、サイズ124からサイズ524に増大した領域としてコピーされる。
最終レベルキャッシュ130は、領域540に、領域520の連続データ126及びデータ526のコピーを記憶する。したがって、最終レベルキャッシュ130の連続データのサイズは、サイズ144からサイズ544に増大した領域として維持される。領域パラメータ150は、領域520及び領域540を特徴付ける。開始アドレス122及び開始アドレス142は、同じままである。したがって、フィールド154及びフィールド156は、領域パラメータ150において変化しないままである。しかしながら、ロジックは、サイズフィールド158を増加量に更新する。この例では、ロジックは、サイズフィールド158をSバイトからS+Tバイトに更新する。ここで、S及びTは、0以外の正の整数である。
図6を参照すると、データストレージ600の一実施形態の一般化されたブロック図が示されている。上述した回路及びロジックには、同じ符号が付されている。データ126は、システムメモリ110に記憶された連続データである。データ626は、領域620を生成するためにシステムメモリ110の領域に追加された連続データである。システムメモリ110の連続データのサイズは、サイズ124からサイズ624に増大した領域としてコピーされる。
最終レベルキャッシュ130は、領域640に、領域620の連続データ126及びデータ626のコピーを記憶する。したがって、最終レベルキャッシュ130の連続データのサイズは、サイズ144からサイズ644及びサイズ646の合計のサイズに増大した領域として維持される。連続データは、最終レベルキャッシュ130にラップアラウンドされる。領域パラメータ150は、領域620及び領域640を特徴付ける。開始アドレス122及び開始アドレス142は、同じままである。したがって、フィールド154及びフィールド156は、領域パラメータ150において変化しないままである。しかしながら、ロジックは、サイズフィールド158を増加量に更新する。この例では、ロジックは、サイズフィールド158をSバイトからS+T+Uバイトに更新する。ここで、S、T、Uは、0以外の正の整数である。
ラップアラウンド領域のアクセスにより、最終レベルキャッシュ130の変換アドレスの計算が変わる。一例では、領域620は、アドレスが数字で表されるアドレス空間2000~2700を使用する。最終レベルキャッシュ130全体は、アドレス空間5000~6000を使用する。ここで、アドレスも数字として表される。領域640は、5500にラップアラウンドされたアドレス空間5800を使用する。受信したメモリ要求が要求アドレス2400を使用する場合、ロジックは、オフセットが(2400-2000)、すなわち400であると決定する。ロジックは、オフセットを領域開始アドレス5800に追加して(5800+400)、すなわち6200を取得する。この値は、領域640の制限を超えている。これに応じて、ロジックは、差(6200-6000)、すなわち200を決定する。ロジックは、差を開始アドレスに追加して(5000+200)、すなわち5200を取得する。変換アドレスは5200であり、ロジックは、変換アドレス5200を使用して、メモリ要求を処理するために最終レベルキャッシュ130からデータにアクセスする。
図7を参照すると、データストレージ700の一実施形態の一般化されたブロック図が示されている。データストレージ500,600及び次のデータストレージ800~900,1300と同様に、上述した回路及びロジックには同じ番号が付されている。図示するように、システムメモリ110及び最終レベルキャッシュ130の各々は、データを記憶する。この説明では、キャッシュ330を最終レベルキャッシュとして説明しているが、他の実施形態では、キャッシュ330は、キャッシュメモリサブシステム内の別のレベルである。データ126は、システムメモリ110に記憶された連続データである。データ726は、領域720を生成するためにシステムメモリ110の領域に追加された連続データである。システムメモリ110の連続データのサイズは、サイズ124からサイズ724に増大した領域としてコピーされる。この増大は、右方向ではなく、左方向である。したがって、領域720の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス122(x1)ではなく、アドレス722(x2)である。
最終レベルキャッシュ130は、領域740に、領域720の連続データ126及びデータ726のコピーを記憶する。したがって、最終レベルキャッシュ130の連続データのサイズは、サイズ144からサイズ744に増大した領域として維持される。この増大は、右方向ではなく、左方向である。したがって、領域740の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス142(a1)ではなく、アドレス742(a2)である。領域パラメータ170は、領域720及び領域740を特徴付ける。開始アドレス122,142が変化し、フィールド154,156は領域パラメータ150の変化を示す。また、ロジックは、サイズフィールド158を増加量に更新する。この例では、ロジックは、サイズフィールド158をSバイトからS+Vバイトに更新する。ここで、S及びVは、0以外の正の整数である。
図8を参照すると、データストレージ800の一実施形態の一般化されたブロック図が示されている。データ126は、システムメモリ110に記憶された連続データである。データ826は、領域820を生成するためにシステムメモリ110の領域に追加された連続データである。システムメモリ110の連続データのサイズは、サイズ124からサイズ824に増大した領域としてコピーされる。この増大は、右方向ではなく、左方向である。したがって、領域820の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス122(x1)ではなく、アドレス822(x2)である。
最終レベルキャッシュ130は、領域840に、領域820の連続データ126及びデータ826のコピーを記憶する。したがって、最終レベルキャッシュ130の連続データのサイズは、サイズ144からサイズ844及びサイズ846の合計のサイズに増大した領域として維持される。連続データは、最終レベルキャッシュ130にラップアラウンドされる。この増大は、右方向ではなく、左方向である。したがって、領域840の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス142(a1)ではなく、アドレス842(a2)である。領域パラメータ150は、領域820及び領域840を特徴付ける。開始アドレス122,142が変化し、フィールド154,156は領域パラメータ150の変化を示す。また、ロジックは、サイズフィールド158を増加量に更新する。この例では、ロジックは、サイズフィールド158をSバイトからS+V+Wバイトに更新する。ここで、S、V、Wは、0以外の正の整数である。ラップアラウンド領域のアクセスにより、最終レベルキャッシュ130の変換アドレスの計算が変わる。ロジックは、データストレージ600に対して上述した計算を使用する。
図9を参照すると、データストレージ900の一実施形態の一般化されたブロック図が示されている。データ126は、システムメモリ110に記憶された連続データである。データ926は、領域920を生成するためにシステムメモリ110の領域から除去された連続データである。システムメモリ110の連続データのサイズは、サイズ124からサイズ924に減少した領域としてコピーされる。この減少は、左方向ではなく、右方向である。したがって、領域920の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス122(x1)ではなく、アドレス922(x2)である。
最終レベルキャッシュ130は、領域940に、領域920の連続データ126のコピーを記憶する。したがって、最終レベルキャッシュ130の連続データのサイズは、サイズ144からサイズ944に減少した領域として維持される。この減少は、左方向ではなく、右方向である。したがって、領域940の先頭にデータを記憶するメモリ位置を指すアドレスは、アドレス142(a1)ではなく、アドレス942(a2)である。領域パラメータ150は、領域920及び領域940を特徴付ける。開始アドレス122,142が変化し、フィールド154,156は領域パラメータ150の変化を示す。また、ロジックは、サイズフィールド158を減少量に更新する。この例では、ロジックは、サイズフィールド158をSバイトからS-Uバイトに更新する。ここで、S及びUは、0以外の正の整数である。領域のサイズの減少が、領域の終わりにおいて、右方向ではなく左方向に発生した場合、アドレス122,142は、サイズフィールド158が依然として更新されている間、同じままであることに留意されたい。
図10を参照すると、コンピューティングシステムでメモリアクセスを行う方法1000の一実施形態が示されている。ロジックは、メモリアクセスパターンを監視し、及び/又は、データアクセスのソフトウェアヒントを受信する(ブロック1002)。上述したように、特定の命令をヒントとして使用するソフトウェア技術、ハードウェアプリフェッチャによって使用される技術等のハードウェア技術、又は、これらの組み合わせを使用して、メモリ領域の定義を開始するタイミングを決定する。
ロジックが次のデータアクセスの領域を予測しない場合(条件付きブロック1004:「いいえ」)、方法1000の制御フローはブロック1002に戻り、ロジックは、メモリアクセスパターンを監視し、及び/又は、ソフトウェアヒントを受信する。ロジックが次のデータアクセスの領域を予測する場合(条件付きブロック1004:「はい」)、ロジックは、予測される次のデータアクセスの領域を特徴付けるパラメータを初期化する(ブロック1006)。例えば、ロジックは、次のデータアクセスの領域の開始アドレスをシステムメモリに記憶し、この領域の開始アドレスを最終レベルキャッシュに記憶する。さらに、ロジックは、この領域の領域サイズを記憶する。いくつかの実施形態では、初期領域サイズは、複数の制御レジスタ及びステータスレジスタのプログラム可能レジスタに提供される。いくつかの設計では、初期サイズは、キャッシュラインサイズ(例えば、64バイト)とページサイズ(例えば、4キロバイト以上)との細かい粒度の間のサイズである。
ロジックは、システムメモリ内の次のデータアクセスの領域の連続データのコピーを最終レベルキャッシュに記憶する。例えば、ロジックは、システムメモリの第1の領域のデータのコピーを、最終レベルキャッシュの第2の領域に記憶し(ブロック1008)、第1の領域及び第2の領域の各々は、システムメモリ内の予測される次のデータアクセスの領域に対応する。ロジックは、第2の領域のデータにアクセスすることによって、第1の領域をターゲットとするメモリ要求を処理する(ブロック1010)。ロジックが第2の領域のサイズが変化したことを決定する場合(条件付きブロック1012:「はい」)、ロジックは、領域を特徴付けるパラメータを更新して、サイズ変化を示す(ブロック1014)。
ロジックが、第2の領域のサイズが変化しないことを決定し(条件付きブロック1012:「いいえ」)、第2の領域のアクセスが完了していない場合(条件付きブロック1016:「いいえ」)、方法1000の制御フローはブロック1010に戻る。ブロック1010では、ロジックは、第2の領域のデータにアクセスすることによって、第1の領域をターゲットとするメモリ要求を処理する。第2の領域のアクセスが完了している場合(条件付きブロック1016:「はい」)、ロジックは、領域を特徴付けるパラメータを更新して、領域がないことを示す(ブロック1018)。その後、方法1000の制御フローはブロック1002に戻り、ロジックは、メモリアクセスパターンを監視し、及び/又は、ソフトウェアヒントを受信する。
図11を参照すると、データストレージ1100の一実施形態の一般化されたブロック図が示されている。システムメモリ1110及び最終レベルキャッシュ1130の各々は、データを記憶する。ここでは、説明を容易にするために、処理装置、通信インターフェース等が示されていない。この説明では、キャッシュ1130を最終レベルキャッシュとして説明しているが、他の実施形態では、キャッシュ1130は、キャッシュメモリサブシステム内の別のレベルである。データ1120~1128は、システムメモリ1110に記憶された連続データである。最終レベルキャッシュ1130は、異なる時点における連続データ1120~1128の一部のコピーを記憶する。
ある設計例では、大きい(深い)ニューラルネットワークの重みは、システムメモリ1110(オフパッケージDRAM等)に記憶される。データ1120~1128等の重みは、最終レベルキャッシュ1130(インパッケージの3DDRAM等)に適合するには大きすぎる。ニューラルネットワークのトレーニング中に、ソフトウェアアプリケーションを実行する処理装置によって重みが評価される。時間t1~11t7(又は、時間t1~t7)において、最終レベルキャッシュ1130に記憶された領域のサイズ及びコンテンツが変化する。データ1120は、多層ニューラルネットワークの重みの第1の層に対応する。データ1122は、多層ニューラルネットワークの重みの第2の層に対応し、以下同様である。
最初に、データ1120は、時間t0(図示省略)で最終レベルキャッシュ1130にコピーされる。後の時間t1において、データ1122は、最終レベルキャッシュ1130に記憶された領域に追加される。同様に、時間t2及びt3において、データ1124及びデータ1126は、最終レベルキャッシュ1130に記憶された領域に追加される。ニューラルネットワークの評価が推論又は順方向伝播(forward propagation)によって進行するにつれて、重みを記憶するために、最終レベルキャッシュ1130の領域が拡張する。ニューラルネットワークの重みのアクセスは、定期的に予測可能な方法で行われる。したがって、最終レベルキャッシュ1130の領域は、重みの評価に十分先立って増加する。上述したように、(図3の)CSR347のプログラム可能レジスタは、パラメータL,Pを記憶して、最終レベルキャッシュに記憶された領域のサイズを変更するタイミング及び変更量を示す。したがって、処理装置は、オフパッケージDRAM内ではなく、インパッケージの最終レベルキャッシュ内の重みにアクセスする。
時間t3において、最終レベルキャッシュ1130全体が満たされる。このとき、キャッシュコントローラ又は処理装置のロジックは、左からサイズを減少することによって領域のサイズを調整する。時間t4において、ロジックは、データ1120を最終レベルキャッシュ1130の領域から除去する。ロジックは、適宜、領域パラメータを更新する。重みのトレーニングを行うソフトウェアアプリケーションの性質により、処理装置が所定の層を一旦評価すると、対応する重みは、現在の推論又は順方向伝播に再度必要とされない。したがって、いくつかの設計では、重みの所定の層は、最終レベルキャッシュ1130の領域から除去される。時間t5において、データ1126は、最終レベルキャッシュ1130の領域に追加される。領域は、最終レベルキャッシュ1130をラップアラウンドする。ラップアラウンド領域のアクセスにより、最終レベルキャッシュ130の変換アドレスの計算が変わる。ロジックは、データストレージ600に対して上述した計算を使用する。
時間t6において、ロジックは、データ1122を最終レベルキャッシュ1130の領域から除去する。ロジックは、適宜、領域パラメータを更新する。時間t7において、ロジックは、データ1128を最終レベルキャッシュ1130の領域に追加する。処理装置がニューラルネットワークの最終層を処理した後に、処理装置は最終出力を生成する。処理装置は、通常、この最終出力を期待値と比較して、エラー又は損失を計算する。その後、ニューラルネットワークのトレーニングは、逆方向伝播(backward propagation)フェーズで継続する。逆方向伝搬の間、処理装置は、多層ニューラルネットワークの層を逆の順序で処理する。ロジックは、逆の順序をサポートする方法で、最終レベルキャッシュ1130の領域を割り当て及び割り当て解除する。
図12を参照すると、データストレージ1200の一実施形態の一般化されたブロック図が示されている。システムメモリ1210は、データを記憶する。ここでは、説明を容易にするために、処理装置、通信インターフェース等が示されていない。システムメモリ1210は、複数の領域のデータを記憶する。例えば、領域は、アドレス1212(w0)が指す第1の領域1220と、アドレス1214(x0)が指す第2の領域1222のデータと、アドレス1216(y0)が指す第3の領域1224のデータと、アドレス1218(z0)が指す第4の領域1226のデータと、を含む。
この例では、ソフトウェアアプリケーションは、アドレス1218(z0)が指す領域に記憶された出力ベクトルの各要素が、アドレス1212~1216(w0~y0)が指す他のベクトルの要素の合計であるステンシル状(stencil-like)の計算を行う。例えば、出力ベクトルがベクトル「d」として表され、他の領域のベクトルの各々が「a」~「c」として表される場合、ベクトルdの要素d[i]の値は、a[i-1]+a[i]+a[i+1]+b[i-1]+b[i]+b[i+1]+c[i-1]+c[i]+c[i+1]になる。加算器1230は、入力ベクトルの要素の値を合計して、出力ベクトルの要素を生成する。多くの場合、何れの入力ベクトルもインパッケージのキャッシュに収まらない。しかしながら、インパッケージキャッシュ内の各領域は、各々のベクトルのアクティブ部を記憶することが可能である。計算が進むにつれて、各領域が更新され、各ベクトルのアクティブな部分が維持される。このようなスキームの例を以下の説明に示す。
図13を参照すると、データストレージ1300の一実施形態の一般化されたブロック図が示されている。上述した回路及びロジックには、同じ番号が付されている。最終レベルキャッシュ(LLC)1330は、システムメモリ1210に記憶されたデータのコピーを記憶する。この説明では、キャッシュ1330を最終レベルキャッシュとして説明しているが、他の実施形態では、キャッシュ1330は、キャッシュメモリサブシステム内の別のレベルである。ここでは、説明を容易にするために、処理装置、通信インターフェース等が示されていない。最終レベルキャッシュ1330は、複数の領域のデータを記憶する。領域の例は、アドレス1332(a0)が指す第1の領域(サイズ1334(Sバイト)を有する)と、アドレス1336(b0)が指す第2の領域(サイズ1338(Tバイト)を有する)と、アドレス1340(c0)が指す第3の領域1224(サイズ1342(Uバイト)を有する)と、アドレス1344(d0)が指す第4の領域(サイズ1346(Vバイト)を有する)と、を含む。
テーブル1350は、最終レベルキャッシュ1330に記憶された領域の領域パラメータを記憶する。多くの設計では、フィールド1352~1358は、(図1の)領域パラメータ150のフィールド152~158と同等である。ここでは、テーブル1350は、単一領域ではなく、複数の別々の領域をサポートする。図示した実施形態では、テーブル1350は、最終レベルキャッシュ1330の4つの領域をサポートするための4つの有効な行(エントリ)を含む。4つの領域及びエントリが示されているが、他の例では、任意の数のエントリ及び領域を使用する。複数の領域をサポートするために、ロジックは、テーブル1350の情報を維持し、複数の領域が、別の領域をオーバーランすることなく、最終レベルキャッシュ1330を増大、縮小、ラップアラウンドすることを確実にする。最終レベルキャッシュ1330のメモリアクセス毎に、ロジックは、要求アドレスを、最終レベルキャッシュ1330内の有効なサポート領域の各々と比較する。様々な設計では、テーブル1350は、フルアソシアティブ方式で情報を記憶する。ここで、要求アドレスは、(フルアソシアティブキャッシュ構造に類似する)領域定義レジスタのN個のセットの全てに対してチェックする。
図14を参照すると、コンピューティングシステムでメモリアクセスを行う方法1400の一実施形態が示されている。1つ以上の処理装置は、1つ以上のコンピュータプログラム又はソフトウェアアプリケーションを実行する。処理装置の例として、CPU、GPU、又は、その他の内部のプロセッサコアが挙げられる。いくつかの実施形態では、システムインパッケージ(SiP)は、処理装置及び高帯域幅メモリを含む。高帯域幅メモリの一例は、3DDRAM等の3D集積メモリである。ある実施形態では、処理装置は、3DDRAMの少なくとも一部をキャッシュとして利用する。処理装置は、最終レベルキャッシュよりも低いレベルのキャッシュメモリサブシステム内のメモリ要求ミスを決定する(ブロック1402)。様々な実施形態では、処理装置は、高帯域幅メモリの少なくとも一部を最終レベルキャッシュとして利用する。処理装置は、メモリ要求に対応するアドレスを最終レベルキャッシュに送信する(ブロック1404)。
ロジックは、最終レベルキャッシュに記憶されたデータを有する、システムメモリアドレス空間内の1つ以上のアドレス範囲の範囲を選択する(ブロック1406)。ロジックが、要求アドレスが選択された範囲内にないことを決定する場合(条件付きブロック1408:「いいえ」)であって、最終範囲に到達しない場合(条件付きブロック1410:「いいえ」)、方法1400の制御フローはブロック1406に戻る。ブロック1406において、ロジックは、1つ以上のアドレス範囲の別の範囲を選択する。ロジックが、要求アドレスが選択された範囲内にないことを決定する場合(条件付きブロック1408:「いいえ」)であって、最終範囲に到達する場合(条件付きブロック1410:「はい」)、ロジックは、要求アドレスを含むメモリ要求をシステムメモリに送信する(ブロック1412)。
ロジックが、要求アドレスが選択された範囲内にあると決定した場合(条件付きブロック1408:「はい」)、ロジックは、アドレスとシステムメモリの範囲の開始アドレスとの差に基づいて、オフセットを決定する(ブロック1414)。ロジックは、オフセット及び最終レベルキャッシュの範囲の開始アドレスに基づいて、変換アドレスを決定する(ブロック1416)。ロジックは、変換アドレスで始まる最終レベルキャッシュのデータにアクセスすることによって、メモリ要求を処理する(ブロック1418)。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C言語等の高水準のプログラミング言語でハードウェアの動作を記述している。或いは、Verilog等のハードウェア設計言語(HDL)を使用することができる。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随データをプログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行する1つ以上のプロセッサと、を含む。
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に認識されると、当業者には多数の変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。

Claims (20)

  1. 要求アドレスを含むメモリアクセス要求を受信するように構成されたインターフェースと、
    ロジックと、を備え、
    前記ロジックは、
    キャッシュの第2の領域に記憶された連続データのコピーを有するシステムメモリの連続データの第1の領域の識別情報を維持することであって、前記第1の領域はアドレスの範囲を表し、前記識別情報は、前記第1の領域の先頭を識別する第1の開始アドレスと、前記第2の領域のサイズと、を含む、ことと、
    メモリアクセス要求を受信したことに応じて、
    前記要求アドレスが前記アドレスの範囲内にないと決定したことに応じて、前記メモリアクセス要求を前記システムメモリに送信することと、
    前記要求アドレスが前記アドレスの範囲内にあると決定したことに応じて、前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を行うように構成されている、
    装置。
  2. 前記ロジックは、前記キャッシュのデータにアクセスすることによって、選択されたメモリ要求を処理するために、
    前記要求アドレスと前記第1の開始アドレスとの差に基づいて、オフセットを決定することと、
    前記オフセットと、前記キャッシュの前記第2の領域の先頭を指す第2の開始アドレスと、に基づいて変換アドレスを決定することと、
    前記変換アドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を行うように構成されている、
    請求項1の装置。
  3. 前記ロジックは、前記変換アドレスが前記キャッシュの前記第2の領域の外側のメモリ位置を指すと決定したことに応じて、
    前記第2の領域の最大アドレスを前記変換アドレスから減算することによって、ラップアラウンドアドレスを決定することと、
    前記ラップアラウンドアドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を行うように構成されている、
    請求項2の装置。
  4. 前記ロジックは、
    前記第2の開始アドレスを維持することと、
    前記変換アドレスを、前記オフセット及び前記第2の開始アドレスの合計として決定することと、
    を行うように構成されている、
    請求項2の装置。
  5. 前記ロジックは、前記第1の領域のサイズが変化していると決定したことに応じて、
    前記第1の開始アドレス、前記第2の開始アドレス及び前記第2の領域のサイズのうち1つ以上を更新することと、
    前記第2の領域の更新されたサイズに少なくとも部分的に基づいて、前記アドレスの範囲を更新することと、
    を行うように構成されている、
    請求項4の装置。
  6. 前記ロジックは、次のデータアクセスの領域を予測したことに応じて、
    前記第1の開始アドレス、前記第2の開始アドレス及び前記第2の領域のサイズのうち1つ以上を初期化することと、
    前記システムメモリ内の前記次のデータアクセスの領域の連続データのコピーを前記キャッシュに記憶することと、
    を行うように構成されている、
    請求項4の装置。
  7. 前記データアクセスの領域が定義されたと決定することは、
    前記ロジックが、受信したメモリアクセス要求を監視し、前記領域を識別するために使用されるパターンを識別することと、
    前記ロジックが、前記領域を識別するヒントをソフトウェアから受信することと、
    のうち1つ以上を含む、
    請求項6の装置。
  8. 前記ロジックは、前記領域に対する次のデータアクセスがないと決定したことに応じて、
    前記第2の領域のサイズを0バイトの値に更新することによって、前記キャッシュに領域が記憶されていないことを特定する指標を記憶するように構成されている、
    請求項6の装置。
  9. 前記ロジックは、前記システムメモリの連続データの複数の領域の識別情報を維持するように構成されており、各領域は、前記キャッシュに記憶された各連続データのコピーを有し、
    前記ロジックは、
    前記複数の領域毎に複数のアドレス範囲を決定することと、
    前記選択されたメモリ要求の要求アドレスが前記複数のアドレス範囲の何れにも含まれていないと決定したことに応じて、前記選択されたメモリ要求をシステムメモリに送信することと、
    前記選択されたメモリアクセス要求の要求アドレスが前記複数のアドレス範囲のうち何れかの範囲内にあると決定したことに応じて、前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を行うように構成されている、
    請求項1の装置。
  10. 要求アドレスを含むメモリアクセス要求を受信することと、
    キャッシュの第2の領域に記憶された連続データのコピーを有するシステムメモリの連続データの第1の領域の識別情報を維持することであって、前記第1の領域はアドレスの範囲を表し、前記識別情報は、前記第1の領域の先頭にデータを記憶するメモリ位置を指す第1の開始アドレスと、前記第2の領域のサイズと、を含む、ことと、
    メモリアクセス要求を受信したことに応じて、
    前記要求アドレスが前記アドレスの範囲内にないと決定したことに応じて、前記メモリアクセス要求を前記システムメモリに送信することと、
    前記要求アドレスが前記アドレスの範囲内にあると決定したことに応じて、前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、を含む、
    方法。
  11. 前記方法は、前記キャッシュのデータにアクセスすることによって、選択されたメモリ要求を処理するために、
    前記要求アドレスと前記第1の開始アドレスとの差に基づいて、オフセットを決定することと、
    前記オフセットと、前記キャッシュの前記第2の領域の先頭を指す第2の開始アドレスと、に基づいて変換アドレスを決定することと、
    前記変換アドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、を含む、
    請求項10の方法。
  12. 前記方法は、前記変換アドレスが前記キャッシュの前記第2の領域の外側のメモリ位置を指すと決定したことに応じて、
    前記第2の領域の最大アドレスを前記変換アドレスから減算することによって、ラップアラウンドアドレスを決定することと、
    前記ラップアラウンドアドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、を含む、
    請求項11の方法。
  13. 前記第2の開始アドレスを維持することと、
    前記変換アドレスを、前記オフセット及び前記第2の開始アドレスの合計として決定することと、を含む、
    請求項11の方法。
  14. 前記方法は、前記第1の領域のサイズが変化していると決定したことに応じて、
    前記第1の開始アドレス、前記第2の開始アドレス及び前記第2の領域のサイズのうち1つ以上を更新することと、
    前記第2の領域の更新されたサイズに少なくとも部分的に基づいて、前記アドレスの範囲を更新することと、を含む、
    請求項13の方法。
  15. 前記方法は、次のデータアクセスの領域を予測したことに応じて、
    前記第1の開始アドレス、前記第2の開始アドレス及び前記第2の領域のサイズのうち1つ以上を初期化することと、
    前記システムメモリ内の前記次のデータアクセスの領域の連続データのコピーを前記キャッシュに記憶することと、を含む、
    請求項13の方法。
  16. プログラム命令を記憶するコンピュータ可読記憶媒体であって、
    前記プログラム命令は、プロセッサによって実行されると、
    要求アドレスを含むメモリアクセス要求を受信することと、
    キャッシュの第2の領域に記憶された連続データのコピーを有するシステムメモリの連続データの第1の領域の識別情報を維持することであって、前記第1の領域はアドレスの範囲を表し、前記識別情報は、前記第1の領域の先頭にデータを記憶するメモリ位置を指す第1の開始アドレスと、前記第2の領域のサイズと、を含む、ことと、
    前記メモリアクセス要求を受信したことに応じて、
    前記要求アドレスが前記アドレスの範囲内にないと決定したことに応じて、前記メモリアクセス要求を前記システムメモリに送信することと、
    前記要求アドレスが前記アドレスの範囲内にあると決定したことに応じて、前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を前記プロセッサに行わせる、
    コンピュータ可読記憶媒体。
  17. 前記プログラム命令は、前記キャッシュのデータにアクセスすることによって、選択されたメモリ要求を処理するために、
    前記要求アドレスと前記第1の開始アドレスとの差に基づいて、オフセットを決定することと、
    前記オフセットと、前記キャッシュの前記第2の領域の先頭を指す第2の開始アドレスと、に基づいて変換アドレスを決定することと、
    前記変換アドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を前記プロセッサに行わせる、
    請求項16のコンピュータ可読記憶媒体。
  18. 前記プログラム命令は、前記変換アドレスが前記キャッシュの前記第2の領域の外側のメモリ位置を指すと決定したことに応じて、
    前記第2の領域の最大アドレスを前記変換アドレスから減算することによって、ラップアラウンドアドレスを決定することと、
    前記ラップアラウンドアドレスにおいて始まる前記キャッシュのデータにアクセスすることによって、前記メモリ要求を処理することと、
    を前記プロセッサに行わせる、
    請求項17のコンピュータ可読記憶媒体。
  19. 前記プログラム命令は、
    前記第2の開始アドレスを維持することと、
    前記変換アドレスを、前記オフセット及び前記第2の開始アドレスの合計として決定することと、
    を前記プロセッサに行わせる、
    請求項17のコンピュータ可読記憶媒体。
  20. 前記プログラム命令は、前記第1の領域のサイズが変化していると決定したことに応じて、
    前記第1の開始アドレス、前記第2の開始アドレス及び前記第2の領域のサイズのうち1つ以上を更新することと、
    前記第2の領域の前記更新されたサイズに少なくとも部分的に基づいて、前記アドレスの範囲を更新することと、
    を前記プロセッサに行わせる、
    請求項19のコンピュータ可読記憶媒体。
JP2021532404A 2018-12-10 2019-12-09 データ領域を記憶するためのキャッシュ Active JP7108141B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/214,363 2018-12-10
US16/214,363 US11232039B2 (en) 2018-12-10 2018-12-10 Cache for storing regions of data
PCT/US2019/065155 WO2020123343A1 (en) 2018-12-10 2019-12-09 Cache for storing regions of data

Publications (2)

Publication Number Publication Date
JP2022510715A true JP2022510715A (ja) 2022-01-27
JP7108141B2 JP7108141B2 (ja) 2022-07-27

Family

ID=69137998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021532404A Active JP7108141B2 (ja) 2018-12-10 2019-12-09 データ領域を記憶するためのキャッシュ

Country Status (6)

Country Link
US (2) US11232039B2 (ja)
EP (1) EP3895025A1 (ja)
JP (1) JP7108141B2 (ja)
KR (1) KR20210088683A (ja)
CN (1) CN113168378A (ja)
WO (1) WO2020123343A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210103820A1 (en) * 2019-10-03 2021-04-08 Vathys, Inc. Pipelined backpropagation with minibatch emulation
KR20210088304A (ko) * 2020-01-06 2021-07-14 삼성전자주식회사 이미지 프로세서의 동작 방법, 이미지 처리 장치 및 이미지 처리 장치의 동작 방법
KR20210106221A (ko) * 2020-02-20 2021-08-30 삼성전자주식회사 시스템 온 칩, 그것의 데이터 처리 방법 및 뉴럴 네트워크 장치
US11507517B2 (en) * 2020-09-25 2022-11-22 Advanced Micro Devices, Inc. Scalable region-based directory
KR20230154691A (ko) * 2022-05-02 2023-11-09 이화여자대학교 산학협력단 컴파일러 데이터 의존성 정보를 이용한 프로세서의 명령어 연산 수행 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146819A (ja) * 1993-11-22 1995-06-06 Nec Corp キャッシュ方式
US7334108B1 (en) * 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US20160117254A1 (en) * 2014-10-22 2016-04-28 Netapp, Inc. Cache optimization technique for large working data sets
US20170212845A1 (en) * 2016-01-25 2017-07-27 Advanced Micro Devices, Inc. Region migration cache

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537574A (en) * 1990-12-14 1996-07-16 International Business Machines Corporation Sysplex shared data coherency method
US5845308A (en) * 1995-12-27 1998-12-01 Vlsi Technology, Inc. Wrapped-line cache for microprocessor system
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
US6658532B1 (en) * 1999-12-15 2003-12-02 Intel Corporation Cache flushing
US7594073B2 (en) * 2006-09-29 2009-09-22 Intel Corporation Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state
US8719501B2 (en) * 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8244981B2 (en) * 2009-07-10 2012-08-14 Apple Inc. Combined transparent/non-transparent cache
GB2473850A (en) * 2009-09-25 2011-03-30 St Microelectronics Cache configured to operate in cache or trace modes
US9063663B2 (en) * 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8949544B2 (en) 2012-11-19 2015-02-03 Advanced Micro Devices, Inc. Bypassing a cache when handling memory requests
US9792049B2 (en) * 2014-02-24 2017-10-17 Cypress Semiconductor Corporation Memory subsystem with wrapped-to-continuous read
US9459998B2 (en) * 2015-02-04 2016-10-04 International Business Machines Corporation Operations interlock under dynamic relocation of storage
US9817760B2 (en) * 2016-03-07 2017-11-14 Qualcomm Incorporated Self-healing coarse-grained snoop filter
US10725918B2 (en) * 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146819A (ja) * 1993-11-22 1995-06-06 Nec Corp キャッシュ方式
US7334108B1 (en) * 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US20160117254A1 (en) * 2014-10-22 2016-04-28 Netapp, Inc. Cache optimization technique for large working data sets
US20170212845A1 (en) * 2016-01-25 2017-07-27 Advanced Micro Devices, Inc. Region migration cache

Also Published As

Publication number Publication date
CN113168378A (zh) 2021-07-23
WO2020123343A1 (en) 2020-06-18
KR20210088683A (ko) 2021-07-14
US11232039B2 (en) 2022-01-25
US20220138107A1 (en) 2022-05-05
JP7108141B2 (ja) 2022-07-27
US20200183848A1 (en) 2020-06-11
EP3895025A1 (en) 2021-10-20

Similar Documents

Publication Publication Date Title
JP7108141B2 (ja) データ領域を記憶するためのキャッシュ
EP2786255B1 (en) A dram cache with tags and data jointly stored in physical rows
JP4658112B2 (ja) ダイナミック・ランダムアクセスメモリからスタティック・ランダムアクセスメモリへのプリフェッチ
US8868843B2 (en) Hardware filter for tracking block presence in large caches
Loh 3D-stacked memory architectures for multi-core processors
US10310976B2 (en) System and method for concurrently checking availability of data in extending memories
KR102402630B1 (ko) 캐시 제어 인지 메모리 컨트롤러
US20070220207A1 (en) Transferring data from stacked memory
US20130031313A1 (en) Cache arrangement
TW202125773A (zh) 具有增進記憶體側快取實施之多層記憶體
CN115132238A (zh) 集成三维(3d)dram缓存
US11775431B2 (en) Cache memory with randomized eviction
US20220374348A1 (en) Hardware Acceleration
US20220276969A1 (en) Sedram-based stacked cache system and device and controlling method therefor
US20230195623A1 (en) Cache Memory with Randomized Eviction
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220531

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220714

R150 Certificate of patent or registration of utility model

Ref document number: 7108141

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150