JP2019525354A - アドレスを圧縮するための方法及び装置 - Google Patents

アドレスを圧縮するための方法及び装置 Download PDF

Info

Publication number
JP2019525354A
JP2019525354A JP2019508974A JP2019508974A JP2019525354A JP 2019525354 A JP2019525354 A JP 2019525354A JP 2019508974 A JP2019508974 A JP 2019508974A JP 2019508974 A JP2019508974 A JP 2019508974A JP 2019525354 A JP2019525354 A JP 2019525354A
Authority
JP
Japan
Prior art keywords
memory address
cache
stored
tag
way
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
JP2019508974A
Other languages
English (en)
Other versions
JP6768928B2 (ja
JP2019525354A5 (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 JP2019525354A publication Critical patent/JP2019525354A/ja
Publication of JP2019525354A5 publication Critical patent/JP2019525354A5/ja
Application granted granted Critical
Publication of JP6768928B2 publication Critical patent/JP6768928B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

送信のためにアドレスを圧縮する方法及び装置は、第1デバイスにおいて、第2デバイス上のメモリ位置に対するメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第1部分が、第1デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第1部分がキャッシュに記憶されていない場合に、メモリアドレスの第1部分がキャッシュに記憶され、メモリアドレスの全体と、第1部分の記憶に関する情報と、が第2デバイスに送信される。メモリアドレスの第1部分がキャッシュに記憶されている場合に、メモリアドレスの第2部分のみと、アドレスの第1部分が記憶されているキャッシュのウェイを示す識別子と、が第2デバイスに送信される。【選択図】図2

Description

(関連出願の相互参照)
本願は、2016年8月17日に出願された米国仮特許出願第62/376,096号及び2016年11月8日に出願された米国特許出願第15/345,639号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
チップ(例えば、プロセッサ)間のリンクは、制御情報及びデータを同じワイヤのセットを介して送信する。例えば、グローバルメモリインターコネクト(GMI)リンクでは、送信される各リンクパケットは128B幅である。リンクを介した典型的な要求送信は、トランザクションを完了するために、「要求」コマンドと、「応答」コマンドと、「確認」(ACK)コマンドと、を含む。これら3つのコマンドは制御パケットであり、オーバーヘッドとみなされる。システム内の一般的なキャッシュラインは64Bである。したがって、リンクを介して64Bのデータを送信するためには、4つのリンクパケットと、コマンドパケットを送信するための他の3つのリンクパケットとを要する。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
1つ以上の開示された例を実施することができる例示的なデバイスのブロック図である。 例示的な複数ダイシステムのブロック図である。 アドレスを圧縮するための例示的な方法のフロー図である。 インデックス及びウェイの例示的なテーブルである。
プロセッサダイ間のリンク帯域幅は、利用可能な帯域幅が狭く、且つ、制御情報及びデータを同じワイヤのセットを介して送信するオーバーヘッドのために、貴重なリソースである。リンク(例えば、GMI/GOP/HT/PCIe)帯域幅を節約するために、高度の局所性を示すアドレスストリームを圧縮することができる。本方法は、本明細書でより詳細に説明されるが、送信側リンクコントローラ(例えば、リンクインタフェースモジュール)は、要求ストリーム(本明細書の文脈では、特定のプロセッサ(例えば、中央処理装置(CPU))、スレッド又は入出力(I/O)ストリームを指す)毎に送信された直近の最大アドレスビットを保持する。後続の要求アドレスの上位ビットが同じストリームからの保存された直近の要求の上位ビットと一致すると、要求パケットが、アドレス圧縮されているものとしてマークされ、上位ビットは、パックされたGMIパケットに含まれない。受信側リンクコントローラは、アドレス圧縮要求の受信に応じて、同じストリームの直近の要求について上位アドレスビットのローカルに保持されたコピーを取り出すことによって、完全な要求アドレスを再生成する。
例えば、アドレスを圧縮する方法が本明細書に開示されている。この方法は、第1デバイスにおいて、第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第1部分が、第1デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第1部分が、第1デバイスに配置されたキャッシュに記憶されていない場合に、メモリアドレスの第1部分が第1デバイスのキャッシュに記憶され、非圧縮メモリアドレス全体と、第1部分の記憶に関する情報と、が第2デバイスに送信される。メモリアドレスの第1部分が第1デバイスに配置されたキャッシュに記憶されている場合に、メモリアドレスの第2部分のみを含む圧縮メモリアドレスと、アドレスの第1部分が記憶されている第1デバイスのキャッシュのウェイを示す識別子と、が第2デバイスに送信される。
図1は、1つ以上の開示された実施形態を実施することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含むことができ、各プロセッサコアはCPU又はGPUとすることができる。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)若しくはキャッシュ等の揮発性又は不揮発性メモリを含むことができる。
ストレージ106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含むことができる。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含むことができる。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含むことができる。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合であっても同様に動作することに留意されたい。
図2は、マルチダイ装置200の一例を示すブロック図である。ダイ装置200は、1つ以上のダイ210(例えば、ダイ1 210、ダイ2 210及びダイ3 210で示されている)を含む。各ダイ210は、リンクコントローラ211と、リンクアドレスキャッシュ212と、I/Oデバイス213と、プロセッサ214と、を含む。キャッシュ212は、図1で上述したメモリ104と実質的に同様のものとすることができる。I/Oデバイスは、図1の上記の要素108,110,112,114を含むことができ、プロセッサ214は、図1の上記のプロセッサ102と実質的に同様のものとすることができる。リンクコントローラ211は、ダイ210間の通信を制御する。例えば、図2に示すように、ダイ2 210は、ダイ1 210及びダイ3 210と通信する。したがって、各ダイ210のペアに対するリンクコントローラ211は、これら2つのダイ間の通信リンクを制御する。各ダイ210内のリンクコントローラ211は、同じダイ210内のキャッシュ212、I/Oデバイス213及びプロセッサ214と通信して、アドレスを圧縮するための以下に説明する方法の実行をサポートする。
図3は、アドレスを圧縮するための方法の一例300を示すフロー図である。ステップ310において、トランザクションがソースによって生成され、トランザクションは、トランザクションを生成したソースとは異なるダイ210に記憶されているメモリアドレス位置を含む。例えば、図2に戻って参照すると、ダイ1 210のプロセッサ214上で実行されているスレッドは、ダイ2 210上のメモリに配置されているメモリアドレスを含むトランザクションを生成する。すなわち、ダイ1 210のプロセッサ214上で実行されているスレッドは、ダイ2 210上に位置するDRAMへの読み出し又は書き込みを生成するか、実行中にダイ2 210上に位置するアドレスへのコードフェッチを必要とする。或いは、ダイ1 210のI/Oデバイス213は、ダイ2 210上に位置する入出力トランザクション(例えば、読み出し又は書き込み)に関するアドレスを生成する。アドレスが、ダイ3 210又は存在する他のダイに配置されている場合もある。
トランザクションが(例えば、ダイ1 210上のソースによって)生成されると、ダイ1 210のリンクコントローラ211は、インデックスを形成し、ローカルキャッシュ212内の一致についてタグ部分を比較する(ステップ320)。タグ部分は、生成されたトランザクション内のメモリアドレスの上位ビットを指し、圧縮されていない128ビット幅のメモリアドレスでは、例えば28ビット幅である。
インデックスは、例えば、各ストリームを一意に識別する情報に基づいて形成される。これには、何れのCPU、コア、スレッド又はI/Oデバイスがアドレスを生成したかを識別する情報が含まれる。また、アドレスビット、仮想チャネルインジケータ、読み出し/書き込みインジケータ、又は、他の何らかの情報の組み合せを使用して、特定のソース(例えば、スレッド又はI/Oストリーム)からのトランザクションを、キャッシュ内の特定のインデックスにマッピングすることができる。したがって、各ストリームは、無関係のストリームがキャッシュ内のアドレスを絶えず置き換えて効率を低下させないように、特定のインデックスにマッピングされる。
場合によっては、CPU等の同じデバイス、又は、スレッドを生成するデバイス等が、複数のアドレスストリームを生成することがある。生成されたトランザクションは、1つ以上のアドレスストリームを介してメモリを読み出し、異なるアドレスストリームを介して1つ以上の異なるメモリ領域に書き込み、別のアドレスストリームを使用してコードをフェッチする、インターリーブトランザクションを含むことができる。ストリームを生成するプロセスによって利用されるストリームの数に厳しい制限はない。
したがって、各キャッシュインデックスは、キャッシュが直近の4つの異なるアドレスストリーム(すなわち、上位ビット)を含むのを可能にする複数(例えば、この場合には4つ)の結合方法を含むことができる。I/Oデバイスは、さらに多くのアドレスストリームをインターリーブすることができる。したがって、有用なアドレスが時期尚早に上書きされるのを避けるようにより多くのインデックスに亘ってアドレスストリームを分配するために、I/Oソース毎に複数のインデックスが割り当てられる。この場合、関連するアドレスを異なるエントリにマッピングするために、いくつかのアドレスビットが使用される。また、読み出しと書き込みとは独立したアドレスストリームであるため、読み出し及び書き込みは、異なるエントリにマッピングされる。なお、受信側リンクコントローラは、新たなアドレスを記憶するためのエントリ、又は、パケットを圧縮解除する場合にアドレスが読み出されるためのエントリを見つけることができるように、同じ情報を使用可能にし、同じアルゴリズムを使用して特定のトランザクションに対するキャッシュインデックスを生成する必要がある。ステップ330において、タグがローカルキャッシュに記憶されているタグと一致するかどうかが判別される。例えば、ダイ1 210のリンクコントローラ211は、タグが、ダイ1 210のキャッシュメモリ212に記憶されているタグと一致するかどうかをチェックする。ステップ330において一致しない場合、タグは、ローカルキャッシュメモリの特定のウェイに記憶され、アドレス全体と、使用されるウェイに関する情報と、を含む非圧縮パケットが受信側リンクコントローラに送信される(ステップ340)。
したがって、アドレス情報は、送信側によって示されるキャッシュの特定のウェイに記憶される。例えば、アドレスを含まない(例えば、有効とマークされていない)任意のウェイが選択される。全てのウェイが有効である場合、1つのウェイが(例えば、ランダムに)選択される。別の例では、最長未使用時間(used least recently)のエントリ(割り当てられたか、パケット圧縮に使用されたか)が追跡され、置き換えられる。例えば、ダイ1 210のリンクコントローラ211が、アドレスのタグが、ダイ1 210のキャッシュメモリ212(すなわち、ダイ1 210のローカルキャッシュメモリ)に記憶されているタグと一致しないアドレスを含むトランザクションを受信した場合、ダイ1 210のリンクコントローラ211は、タグと、当該タグがダイ1 210のキャッシュメモリ212内のテーブルに記憶されるウェイと、を示すインデックスを記憶する。ウェイは、タグが記憶される方法(way)を示し、アドレスを生成したソースからのトランザクションのタイプ(例えば、プロセッサからの命令フェッチ、読み出し要求又は書き込み要求)を示すことができる。
図4は、キャッシュメモリに記憶することができるインデックス及びウェイの例示的なテーブル400を示す図である。テーブル400は、行0〜40に対応する複数のインデックス410(410,410,410,…,41039,41040と示されている)を含む。40のインデックスが示されているが、テーブルは、必要に応じてより多くの又はより少ないインデックスを含むことができる。また、テーブル400には、4つのウェイ420(420,…,420と示されている)が存在する。必要に応じてより多くの又はより少ないウェイを記憶することができることに留意されたい。また、テーブル400は、トランザクションのソースに応じてさらに分離することができる。例えば、図4に示すように、行0〜31は、CPU上で実行されているスレッドによって生成されたCPUトランザクションに対応している。行32〜35は、I/O読み出しトランザクションに対応しており、行36〜40は、I/O書き込みトランザクションに対応している。タグは、インデックス行(すなわち、410)及びウェイ列(すなわち、420)に対応するセルに記憶される。
したがって、ステップ340に戻って参照すると、ステップ330において、ダイ1 2101のリンクコントローラ211は、一致するタグをローカルメモリ内で見つけられない場合に、インデックスを形成し、タグをテーブル400のウェイに記憶する。例えば、トランザクションがプロセッサ214上で実行されているスレッドから受信された場合、タグを、インデックス0、ウェイ0(すなわち、行410、列420)に記憶することができる。キャッシュメモリが一杯になると、新たなインデックスを保存する前に先ずインデックスを削除する必要があることに留意されたい。したがって、テーブル400が一杯であるというケースが存在する場合、ダイ1 210のリンクコントローラ211は、削除するインデックスを選択し、新たに生成されたアドレスタグ及びウェイを、そのインデックス行に記憶する。例えば、置き換えられるインデックス内の任意のウェイが選択されるが、各インデックスは、インデックス生成アルゴリズムを介して特定のソースに関連付けられており、これにより、特定のトランザクションが1つのインデックスにマッピングされ、当該インデックスのみが、これにマッピングされた任意のトランザクションからアクセスされ得る。
或いは、送信側リンクコントローラは、トランザクションの特定のソースに関連するインデックスを追跡し、そのソースに対して記憶されているインデックスを削除する。例えば、トランザクションがプロセッサスレッド「5」から受信された場合、ダイ1 210上のリンクコントローラは、何れのインデックスがスレッド5に関連付けられているかを調べ、これらのインデックスのうち1つのインデックスを削除し、新たなトランザクションに対して形成された新たなインデックスを記憶する。他の選択肢として、最長未使用時間のアドレスが識別され、そのインデックスが削除される。
タグが記憶されると、ダイ1 210のリンクコントローラ211は、アドレス全体と、記憶されたウェイに関する情報と、を含む非圧縮パケットをダイ2 210のリンクコントローラに送信する。記憶されたタグ及びウェイに関する情報は、パケットのヘッダに追加される2ビットの形式であって、例えばウェイを識別する2ビットの形式である。つまり、アドレスキャッシュが現在のアドレスを割り当てる必要があることを示すために1ビットが送信され、現在のトランザクションがマッピングされている単一のインデックスに関連する4つのウェイのうち何れのウェイに書き込むかを示す2ビットが送信される。インデックスは、圧縮されていないトランザクションの内容から派生する。衝突を回避するために、ダイ1 210上の送信側リンクコントローラは、現在のトランザクションアドレスをダイ2 210上のリンクコントローラに送信する前にそのキャッシュ上で更新/照合されるのと同じ順序で、同じインデックスにアクセスする全てのトランザクションを送信する。そうでない場合、そのインデックスに関連する第1トランザクションが処理される前に同じインデックスが後続のトランザクションによって変更されると、受信側リンクコントローラは、送信された第1トランザクションに関連するタグ及びウェイの正しい場所を記憶しないか、調べない。
ステップ350において、受信側リンクコントローラ(すなわち、ダイ2 210上のリンクコントローラ)は、処理のためのアドレス全体と、記憶されたウェイに関する情報と、を受信し、タグを、ダイ2 210上に配置されたキャッシュメモリ内の対応するテーブル400に記憶する。
ここで、タグが、ローカルキャッシュメモリ内のタグ及びウェイと一致するか判別するステップ330を再度参照すると、ダイ1 210のリンクコントローラは、圧縮パケットと、タグが記憶されているウェイを識別するポインタビットとを、ダイ2 210上の受信側リンクコントローラに送信する(ステップ360)。例えば、ダイ1 210のリンクコントローラ211は、ダイ1 210のキャッシュメモリ212のテーブル400に記憶されているタグと一致するタグを有するアドレスを含むトランザクションを受信する。
この例の場合、ダイ1 210のリンクコントローラ211は、アドレスから上位ビット(すなわち、タグ)を除去し、アドレスの下位ビット部分のみと、タグが記憶されるテーブル400内のウェイを示す2ビットポインタと、をダイ2 210上の受信側リンクコントローラに送信する。受信側リンクコントローラ(すなわち、この例ではダイ2 210のリンクコントローラ)は、ウェイ情報を読み出し、ダイ2 210のキャッシュメモリ内のテーブル400からタグビットにアクセスして、処理のために非圧縮パケット全体を再生成する(ステップ370)。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、グラフィックスプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。
また、上述した方法又はフロー図は、2つのダイ(例えばダイ1 210及びダイ2 210)間の通信に関して説明されているが、通信は任意のダイ間でも起こり得る。
装置が本明細書に開示される。装置は、第1リンクコントローラと、第1リンクコントローラに動作可能に接続された第1キャッシュと、を含む。第1リンクコントローラは、第2装置上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信する。第1リンクコントローラは、メモリアドレスの第1部分が第1キャッシュに記憶されているかどうかを判別する。メモリアドレスの第1部分が第1キャッシュに記憶されていない場合に、第1リンクコントローラは、メモリアドレスの第1部分を第1キャッシュに記憶し、非圧縮メモリアドレス全体と、第1部分の記憶に関する情報と、を第2装置に送信する。メモリアドレスの第1部分が第1キャッシュに記憶されている場合に、第1リンクコントローラは、メモリアドレスの第2部分のみを含む圧縮メモリアドレスと、メモリアドレスの第1部分が記憶されている第1キャッシュのウェイを示す識別子と、を第2装置に送信する。
コンピューティングデバイスによって実行されると、コンピューティングデバイスに動作を実行させる命令を記憶する非一時的なコンピュータ可読記憶媒体が本明細書に開示される。動作は、第1デバイスにおいて、第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第1部分が、第1デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第1部分が、第1デバイスに配置されたキャッシュに記憶されていない場合に、メモリアドレスの第1部分が第1デバイスのキャッシュに記憶され、非圧縮メモリアドレス全体と、第1部分の記憶に関する情報と、が第2デバイスに送信される。メモリアドレスの第1部分が第1デバイスに配置されたキャッシュに記憶されている場合に、メモリアドレスの第2部分のみを含む圧縮メモリアドレスと、メモリアドレスの第1部分が記憶されている第1デバイスのキャッシュのウェイを示す識別子と、が第2デバイスに送信される。
システムが本明細書に開示される。システムは、第1リンクコントローラと、第1キャッシュと、第1プロセッサと、第1入出力(I/O)デバイスと、を含む第1デバイスと、第2リンクコントローラと、第2キャッシュと、第2プロセッサと、第2I/Oデバイスと、を含む第2デバイスと、を備える。第1リンクコントローラは、第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションを、第1プロセッサ又は第1I/Oデバイスから受信する。第1リンクコントローラは、メモリアドレスの第1部分が第1キャッシュに記憶されているかどうかを判別する。メモリアドレスの第1部分が第1キャッシュに記憶されていない場合に、第1リンクコントローラは、メモリアドレスの第1部分を第1キャッシュに記憶し、非圧縮メモリアドレス全体と、第1部分の記憶に関する情報と、を第2デバイスに送信する。メモリアドレスの第1部分が第1キャッシュに記憶されている場合に、第1リンクコントローラは、メモリアドレスの第2部分のみを含む圧縮メモリアドレスと、メモリアドレスの第1部分が記憶されている第1キャッシュのウェイを示す識別子と、を第2デバイスに送信する。第2リンクコントローラは、第1部分の記憶に関する情報を受信すると、第1部分の記憶に関する情報を第2キャッシュに記憶する。第2リンクコントローラは、圧縮メモリアドレスと、メモリアドレスの第1部分が記憶されている第1キャッシュのウェイを示す識別子と、を受信すると、第2デバイスに配置された第2キャッシュからメモリアドレスの第1部分を識別子に基づいて取り出し、非圧縮メモリアドレスの全体を再構成(reassemble)する。
いくつかの例では、第2デバイスは、第1部分の記憶に関する情報を受信すると、第1部分の記憶に関する情報を、第2デバイスに配置されたキャッシュに記憶する。いくつかの例では、第2デバイスは、圧縮メモリアドレスと、アドレスの第1部分が記憶されている第1デバイスのキャッシュのウェイを示す識別子と、を受信すると、第2デバイスに配置されたキャッシュからメモリアドレスの第1部分を識別子に基づいて取り出し、非圧縮メモリアドレスの全体を再構成する。いくつかの例では、再構成することは、第1部分と第2部分とを連結(attach)することを含む。
いくつかの例では、第1部分は、非圧縮メモリアドレスの上位ビットを含むタグである。いくつかの例では、タグは、第1デバイスに配置されたキャッシュのテーブル内の場所であって、トランザクションを生成したソースに関連付けられた場所に記憶される。いくつかの例では、タグは、タグが記憶されているウェイに関連するテーブルに記憶されている。いくつかの例では、タグは、タグが記憶されているテーブルインデックスで識別されるテーブル内の行に記憶されており、タグが記憶されているウェイに関連する、当該行に対応する列にも記憶されている。いくつかの例では、1つ以上のインデックス行が特定のソースに関連付けられている。
いくつかの例では、ソースは、第1デバイスのプロセッサ又は入出力(I/O)デバイスを含む。いくつかの例では、インデックス行は、複数のウェイ列に関連付けられている。いくつかの例では、トランザクションタイプは、プログラム実行スレッド、読み出し要求、書き込み要求のうち1つ以上を含む。いくつかの例では、I/Oデバイスに関連する特定の行インデックスは、読み出し要求又は書き込み要求に関連付けられている。
装置が本明細書に開示される。装置は、第1リンクコントローラと、第1リンクコントローラに動作可能に接続された第1キャッシュと、を含む。第1リンクコントローラは、第2装置上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信する。第1リンクコントローラは、メモリアドレスの第1部分が第1キャッシュに記憶されているかどうかを判別する。メモリアドレスの第1部分が第1キャッシュに記憶されていない場合に、第1リンクコントローラは、メモリアドレスの第1部分を第1キャッシュに記憶し、非圧縮メモリアドレス全体と、第1部分の記憶に関する情報と、を第2装置に送信する。メモリアドレスの第1部分が第1キャッシュに記憶されている場合に、第1リンクコントローラは、メモリアドレスの第2部分のみを含む圧縮メモリアドレスと、メモリアドレスの第1部分が記憶されている第1キャッシュのウェイを示す識別子と、を第2装置に送信する。

Claims (44)

  1. 第1デバイスから第2デバイスへリンクを介して送信するためにアドレスを圧縮する方法であって、
    前記第1デバイスにおいて、前記第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することと、
    前記メモリアドレスの第1部分が前記第1デバイスに配置されたキャッシュに記憶されているかどうかを判別することと、
    前記メモリアドレスの第1部分が前記第1デバイスに配置されたキャッシュに記憶されていない場合に、前記メモリアドレスの第1部分を前記第1デバイスの前記キャッシュに記憶し、前記メモリアドレス全体と、前記第1部分の記憶に関する情報と、を前記第2デバイスに送信することと、
    前記メモリアドレスの第1部分が前記第1デバイスに配置されたキャッシュに記憶されている場合に、前記メモリアドレスの第2部分のみと、前記メモリアドレスの第1部分が記憶されている前記第1デバイスの前記キャッシュのウェイを示す識別子と、を前記第2デバイスに送信することと、を含む、
    方法。
  2. 前記第2デバイスが、前記第1部分の記憶に関する情報を受信すると、前記第1部分の記憶に関する情報を、前記第2デバイスに配置されたキャッシュに記憶することをさらに含む、
    請求項1の方法。
  3. 前記第2デバイスが、前記メモリアドレスの第2部分と、前記メモリアドレスの第1部分が記憶されている前記第1デバイスの前記キャッシュのウェイを示す識別子と、を受信すると、
    前記識別子に基づいて、前記第2デバイスに配置されたキャッシュから前記メモリアドレスの第1部分を読み出すことと、
    前記メモリアドレス全体を再構成することと、をさらに含む、
    請求項2の方法。
  4. 前記再構成することは、前記第1部分と前記第2部分とを連結することを含む、
    請求項3の方法。
  5. 前記第1部分は、前記メモリアドレス全体の上位ビットを含むタグである、
    請求項1の方法。
  6. 前記タグを、前記第1デバイスに配置された前記キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
    請求項5の方法。
  7. 前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
    請求項6の方法。
  8. 前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
    請求項7の方法。
  9. 1つ以上のインデックス行が、特定のソースに関連付けられている、
    請求項8の方法。
  10. 前記ソースは、プロセッサ、又は、前記第1デバイスの入出力(I/O)デバイスのうち何れかを含む、
    請求項9の方法。
  11. インデックス行が、複数のウェイ列に関連付けられている、
    請求項10の方法。
  12. トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち1つ以上を含む、
    請求項11の方法。
  13. 前記I/Oデバイスに関連する特定の行インデックスが、読み出し要求又は書き込み要求のうち1つ以上のトランザクションに関連付けられている、
    請求項10の方法。
  14. 第1リンクコントローラと、
    前記第1リンクコントローラに動作可能に接続された第1キャッシュと、を備える装置であって、
    前記第1リンクコントローラは、
    第2装置上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されているかどうかを判別し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されていない場合に、前記メモリアドレスの第1部分を前記第1キャッシュに記憶し、前記メモリアドレス全体と、前記第1部分の記憶に関する情報と、を前記第2装置に送信し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されている場合に、前記メモリアドレスの第2部分のみと、前記メモリアドレスの第1部分が記憶されている前記第1キャッシュのウェイを示す識別子と、を前記第2装置に送信する、
    装置。
  15. 前記第1部分は、前記メモリアドレス全体の上位ビットを含むタグである、
    請求項14の装置。
  16. 前記タグを、前記第1キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
    請求項15の装置。
  17. 前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
    請求項16の装置。
  18. 前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
    請求項17の装置。
  19. 1つ以上のインデックス行が、特定のソースに関連付けられている、
    請求項18の装置。
  20. インデックス行が、複数のウェイ列に関連付けられている、
    請求項19の装置。
  21. プロセッサをさらに備える、
    請求項14の装置。
  22. 前記プロセッサは、前記トランザクションを生成した前記ソースである、
    請求項21の装置。
  23. トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち1つ以上を含む、
    請求項22の装置。
  24. 入出力(I/O)デバイスをさらに備える、
    請求項14の装置。
  25. 前記I/Oデバイスは、前記トランザクションを生成した前記ソースである、
    請求項24の装置。
  26. 前記I/Oデバイスに関連する特定の行インデックスが、読み出し要求又は書き込み要求のうち1つ以上のトランザクションに関連付けられている、
    請求項25の装置。
  27. 前記第1リンクコントローラは、メモリアドレスの第1部分の記憶に関する情報を前記第2装置から受信すると、前記第1部分の記憶に関する情報を前記第1キャッシュに記憶する、
    請求項14の装置。
  28. 前記第1リンクコントローラは、前記メモリアドレスの第2部分と、前記メモリアドレスの第1部分が記憶されている前記第2装置のキャッシュのウェイを示す識別子と、を受信すると、
    前記識別子に基づいて、前記第1キャッシュから前記メモリアドレスの第1部分を取り出し、
    前記メモリアドレス全体を再構成する、
    請求項27の装置。
  29. 前記再構成することは、前記第1部分と前記第2部分とを連結することを含む、
    請求項28の装置。
  30. コンピューティングデバイスによって実行されると、コンピューティングデバイスに動作を実行させる命令を記憶するコンピュータ可読記憶媒体であって、
    前記動作は、
    前記コンピューティングデバイスにおいて、第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することと、
    前記メモリアドレスの第1部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されているかどうかを判別することと、
    前記メモリアドレスの第1部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されていない場合に、前記メモリアドレスの第1部分を前記コンピューティングデバイスの前記キャッシュに記憶し、前記メモリアドレス全体と、前記第1部分の記憶に関する情報と、を前記第2デバイスに送信することと、
    前記メモリアドレスの第1部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されている場合に、前記メモリアドレスの第2部分のみと、前記メモリアドレスの第1部分が記憶されている前記コンピューティングデバイスの前記キャッシュのウェイを示す識別子と、を前記第2デバイスに送信することと、を含む、
    コンピュータ可読記憶媒体。
  31. 前記第2デバイスが、前記第1部分の記憶に関する情報を受信すると、前記第1部分の記憶に関する情報を、前記第2デバイスに配置されたキャッシュに記憶することをさらに含む、
    請求項30のコンピュータ可読記憶媒体。
  32. 前記第2のデバイスが、前記メモリアドレスの第2部分と、前記メモリアドレスの第1部分が記憶されている前記コンピューティングデバイスの前記キャッシュのウェイを示す識別子と、を受信すると、
    前記識別子に基づいて、前記第2デバイスに配置されたキャッシュから前記メモリアドレスの第1部分を読み出すことと、
    前記メモリアドレス全体を再構成することと、をさらに含む、
    請求項31のコンピュータ可読記憶媒体。
  33. 前記再構成することは、前記第1部分と前記第2部分とを連結することを含む、
    請求項32のコンピュータ可読記憶媒体。
  34. 前記第1部分は、前記メモリアドレス全体の上位ビットを含むタグである、
    請求項30のコンピュータ可読記憶媒体。
  35. 前記タグを、前記コンピューティングデバイスに配置された前記キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
    請求項34のコンピュータ可読記憶媒体。
  36. 前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
    請求項35のコンピュータ可読記憶媒体。
  37. 前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
    請求項36のコンピュータ可読記憶媒体。
  38. 1つ以上のインデックス行が、特定のソースに関連付けられている、
    請求項37のコンピュータ可読記憶媒体。
  39. 前記ソースは、プロセッサ、又は、前記第1デバイスの入出力(I/O)デバイスのうち何れかを含む、
    請求項38のコンピュータ可読記憶媒体。
  40. インデックス行が、複数のウェイ列に関連付けられている、
    請求項39のコンピュータ可読記憶媒体。
  41. トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち1つ以上を含む、
    請求項40のコンピュータ可読記憶媒体。
  42. 前記I/Oデバイスに関連付する特定の行インデックスが、読み出し要求又は書き込み要求のうち1つ以上のトランザクションに関連付けられている、
    請求項39のコンピュータ可読記憶媒体。
  43. 第1リンクコントローラと、第1キャッシュと、第1プロセッサと、第1入出力(I/O)デバイスと、を含む第1デバイスと、
    第2リンクコントローラと、第2キャッシュと、第2プロセッサと、第2入出力(I/O)デバイスと、を含む第2デバイスと、を備えるシステムであって、
    前記第1リンクコントローラは、
    前記第2デバイス上のメモリ位置に対するメモリアドレスの要求であって、第1部分と第2部分とを含むメモリアドレスの要求を含むトランザクションを、前記第1プロセッサ又は前記第1I/Oデバイスから受信し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されているかどうかを判別し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されていない場合に、前記メモリアドレスの第1部分を前記第1キャッシュに記憶し、前記メモリアドレス全体と、前記第1部分の記憶に関する情報と、を前記第2デバイスに送信し、
    前記メモリアドレスの第1部分が前記第1キャッシュに記憶されている場合に、前記メモリアドレスの第2部分のみと、前記メモリアドレスの第1部分が記憶されている前記第1キャッシュのウェイを示す識別子と、を前記第2デバイスに送信し、
    前記第2リンクコントローラは、
    前記第1部分の記憶に関する情報を受信すると、前記第1部分の記憶に関する情報を前記第2キャッシュに記憶し、又は、
    前記メモリアドレスの第2部分と、前記アドレスの第1部分が記憶されている前記第1キャッシュのウェイを示す識別子と、を受信すると、
    前記第2デバイスに配置された前記第2キャッシュから前記メモリアドレスの第1部分を前記識別子に基づいて取り出し、
    前記メモリアドレス全体を再構成する、
    システム。
  44. 前記再構成することは、前記第1部分と前記第2部分とを連結することを含む、
    請求項43のシステム。
JP2019508974A 2016-08-17 2017-08-04 アドレスを圧縮するための方法及び装置 Active JP6768928B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662376096P 2016-08-17 2016-08-17
US62/376,096 2016-08-17
US15/345,639 US10042576B2 (en) 2016-08-17 2016-11-08 Method and apparatus for compressing addresses
US15/345,639 2016-11-08
PCT/US2017/045639 WO2018034875A1 (en) 2016-08-17 2017-08-04 Method and apparatus for compressing addresses

Publications (3)

Publication Number Publication Date
JP2019525354A true JP2019525354A (ja) 2019-09-05
JP2019525354A5 JP2019525354A5 (ja) 2020-09-10
JP6768928B2 JP6768928B2 (ja) 2020-10-14

Family

ID=61191652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019508974A Active JP6768928B2 (ja) 2016-08-17 2017-08-04 アドレスを圧縮するための方法及び装置

Country Status (6)

Country Link
US (1) US10042576B2 (ja)
EP (2) EP4220415A3 (ja)
JP (1) JP6768928B2 (ja)
KR (1) KR102219845B1 (ja)
CN (1) CN109564545B (ja)
WO (1) WO2018034875A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022511377A (ja) * 2018-10-03 2022-01-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 並び替えの間のキャッシュ一貫性を維持する方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10540250B2 (en) * 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
CN109240944B (zh) * 2018-08-16 2021-02-19 上海天数智芯半导体有限公司 一种基于可变长缓存行的数据读写方法
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
KR102494444B1 (ko) * 2020-11-17 2023-02-06 성균관대학교산학협력단 어드레스 압축 방법 및 장치
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0735487B1 (en) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6477613B1 (en) 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
US6449689B1 (en) 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
US7512750B2 (en) 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US20080229026A1 (en) 2007-03-15 2008-09-18 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for concurrently checking availability of data in extending memories
US20090006757A1 (en) 2007-06-29 2009-01-01 Abhishek Singhal Hierarchical cache tag architecture
US9026568B2 (en) 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9558120B2 (en) * 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022511377A (ja) * 2018-10-03 2022-01-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 並び替えの間のキャッシュ一貫性を維持する方法
JP7108135B2 (ja) 2018-10-03 2022-07-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 並び替えの間のキャッシュ一貫性を維持する方法

Also Published As

Publication number Publication date
CN109564545A (zh) 2019-04-02
EP4220415A3 (en) 2023-09-06
JP6768928B2 (ja) 2020-10-14
CN109564545B (zh) 2021-02-02
EP3500935A1 (en) 2019-06-26
US10042576B2 (en) 2018-08-07
KR20190032527A (ko) 2019-03-27
WO2018034875A1 (en) 2018-02-22
EP4220415A2 (en) 2023-08-02
US20180052631A1 (en) 2018-02-22
KR102219845B1 (ko) 2021-02-24
EP3500935A4 (en) 2020-04-08

Similar Documents

Publication Publication Date Title
JP6768928B2 (ja) アドレスを圧縮するための方法及び装置
US9996466B2 (en) Apparatus, system and method for caching compressed data
US9734085B2 (en) DMA transmission method and system thereof
US20170177497A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
US10339079B2 (en) System and method of interleaving data retrieved from first and second buffers
EP2732374B1 (en) Mobile memory cache read optimization
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
KR102147356B1 (ko) 캐시 메모리 시스템 및 그 동작방법
JP6945544B2 (ja) プロセッサベースシステムにおけるメモリ内の圧縮メモリラインの優先度ベースのアクセス
WO2017041570A1 (zh) 向缓存写入数据的方法及装置
KR20190033284A (ko) PCIe P2P 접속된 스토리지 장치들 사이의 데이터 전송 방법 및 시스템
KR20170075359A (ko) 메모리 시스템 및 메모리 콘트롤러의 동작 방법
JP2017527877A (ja) フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器
KR102617360B1 (ko) 바이트 어드레스 지정 가능한 메모리로서 비-휘발성 메모리에 액세스하는 방법 및 장치
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
WO2018052718A1 (en) Method and apparatus for masking and transmitting data
US10922239B2 (en) Device for performing iterator operation in database
US20230409332A1 (en) Devices transferring cache lines, including metadata on external links
CN113821162A (zh) 存储对象操作方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200731

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200731

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200731

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200807

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200923

R150 Certificate of patent or registration of utility model

Ref document number: 6768928

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250