JP6599898B2 - 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供 - Google Patents

中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供 Download PDF

Info

Publication number
JP6599898B2
JP6599898B2 JP2016568010A JP2016568010A JP6599898B2 JP 6599898 B2 JP6599898 B2 JP 6599898B2 JP 2016568010 A JP2016568010 A JP 2016568010A JP 2016568010 A JP2016568010 A JP 2016568010A JP 6599898 B2 JP6599898 B2 JP 6599898B2
Authority
JP
Japan
Prior art keywords
memory
cache
physical address
cmc
read
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.)
Expired - Fee Related
Application number
JP2016568010A
Other languages
English (en)
Other versions
JP2017519286A (ja
JP2017519286A5 (ja
Inventor
マティウス・コーネリス・アントニウス・アドリアヌス・ヘディーズ
ナタラジャン・ヴァイディアナサン
コリン・ビートン・ヴェリリ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/716,001 external-priority patent/US10838862B2/en
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2017519286A publication Critical patent/JP2017519286A/ja
Publication of JP2017519286A5 publication Critical patent/JP2017519286A5/ja
Application granted granted Critical
Publication of JP6599898B2 publication Critical patent/JP6599898B2/ja
Expired - Fee Related 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/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • 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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1004Defragmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • 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/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

優先権出願
本出願は、その全体が参照により本明細書に組み込まれている、2014年5月21日に出願した、「MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION, AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する、米国仮特許出願第62/001,545号の優先権を主張するものである。
本出願はまた、その全体が参照により本明細書に組み込まれている、2014年12月16日に出願した、「MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION, AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する、米国仮特許出願第62/092,326号の優先権を主張するものである。
本出願はまた、その全体が参照により本明細書に組み込まれている、2014年12月16日に出願した、「MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION WITH NEXT READ ADDRESS PREFETCHING, AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する、米国仮特許出願第62/092,409号の優先権を主張するものである。
本出願はまた、その全体が参照により本明細書に組み込まれている、2015年5月19日に出願した、「MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY COMPRESSION, AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する、米国特許出願第14/716,001号の優先権を主張するものである。
本出願はまた、その全体が参照により本明細書に組み込まれている、2015年5月20日に出願した、「PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM」と題する、米国特許出願第14/717,552号の優先権を主張するものである。
本開示の技術は、一般には、コンピュータメモリシステムに関し、詳細には、中央処理装置(CPU)にメモリへのメモリアクセスインターフェースを提供するためのコンピュータメモリシステム内のメモリコントローラに関する。
マイクロプロセッサは、多種多様な用途において計算タスクを実行する。典型的なマイクロプロセッサの用途は、ソフトウェア命令を実行する1つまたは複数の中央処理装置(CPU)を含む。ソフトウェア命令は、メモリ内の位置からデータをフェッチするようにCPUに命令し、フェッチしたデータを使用して1つまたは複数のCPU動作を実行し、結果を生成し得る。結果は、次いで、メモリ内に記憶され得る。非限定的な例として、このメモリは、CPUローカルなキャッシュ、CPUブロック内のCPU間で共有されるローカルキャッシュ、複数のCPUブロック間で共有されるキャッシュ、またはマイクロプロセッサのメインメモリであり得る。
この点について、図1は、CPU搭載システム12を含む例示的なシステムオンチップ(SoC)10の概略図である。CPU搭載システム12は、この例では複数のCPUブロック14(1)〜14(N)を含み、ここで「N」は、所望のCPUブロック14(1)〜14(N)の任意の数に等しい。図1の例では、CPUブロック14(1)〜14(N)の各々は、2つのCPU16(1)、CPU16(2)を含む。CPUブロック14(1)〜14(N)は、さらに、それぞれ、共有レベル2(L2)キャッシュ18(1)〜18(N)を含む。共有レベル3(L3)キャッシュ20はまた、CPUブロック14(1)〜14(N)の各々のいずれかによって使用される、またはCPUブロック14(1)〜14(N)の各々の間で共有されるキャッシュされたデータを記憶するために設けられる。内部システムバス22は、CPUブロック14(1)〜14(N)の各々が共有L3キャッシュ20ならびに他の共有リソースにアクセスすることを可能にするために設けられる。内部システムバス22を介してCPUブロック14(1)〜14(N)によってアクセスされる他の共有リソースは、メイン外部メモリ(たとえば、非限定的な例として、二重レートダイナミックランダムアクセスメモリ(DRAM)(DDR))にアクセスするためのメモリコントローラ24、周辺機器26、他のストレージ28、エクスプレス周辺機器構成要素相互接続(PCI)(PCI-e)インターフェース30、ダイレクトメモリアクセス(DMA)コントローラ32、および/または統合メモリコントローラ(IMC)34を含み得る。
図1中のCPU搭載システム12において実行されるCPUベースのアプリケーションは、複雑さおよび性能が増加するにつれて、共有L2キャッシュ18(1)〜18(N)および共有L3キャッシュ20、ならびにメモリコントローラ24を介してアクセス可能な外部メモリのメモリ容量要件も、増加し得る。データ圧縮は、物理メモリ容量を増加させることなく、CPU搭載システム12の有効メモリ容量を増加させるために用いられ得る。しかしながら、データ圧縮の使用は、データが圧縮されているかまたは圧縮されてないかに応じて、データを検索するとき複数のメモリアクセス要件が必要とされ得るとき、メモリアクセスレイテンシを増加させ得、付加的なメモリ帯域幅を消費し得る。したがって、メモリアクセスレイテンシおよびメモリ帯域幅への影響を軽減しながら、データ圧縮を使用するCPU搭載システム12のメモリ容量を増加させることが望ましい。
本明細書で開示された態様は、中央処理装置(CPU)搭載システム内の圧縮メモリコントローラ(CMC)を使用してメモリ帯域幅の圧縮を提供することを含む。この点について、いくつかの態様では、CMCは、メモリ読出し要求および/またはメモリ書込み要求のためのメモリ帯域幅の圧縮を提供するように構成される。いくつかの態様によれば、システムメモリ内の物理アドレスへのメモリ読出し要求を受信すると、CMCは、マスタディレクトリからおよび/またはシステムメモリ内の物理アドレスに関連付けられた誤り訂正コード(ECC)ビットから、物理アドレスのための圧縮インジケータ(CI)を読み出し得る。いくつかの態様では、CIは、CMCに(たとえば、データが圧縮されているかまたは圧縮されていないかを示す、および/または、圧縮されたデータが物理アドレスにおいて記憶されたメモリブロックの数を示す)圧縮パターンを提供し得る。CIに基づいて、CMCは、メモリ読出し要求のために読み出されるべきメモリブロックの数を決定し、物理アドレスにおいて開始する決定された数のメモリブロックを読み出す。いくつかの態様では、システムメモリ内の物理アドレスへのメモリ書込み要求を受信すると、CMCは、書き込むべき書込みデータのための圧縮パターンを決定し得、圧縮パターンに基づいて書込みデータのためのCIを生成し得る。CMCは、次いで、マスタディレクトリ、および/または物理アドレスに関連付けられたECCビットを更新し得、生成されたCIに基づいてシステムメモリに書込みデータを書き込み得る。CMCのいくつかの態様は、さらに、以前の読出しCIをキャッシュするためのCIキャッシュを提供し得る。このようにして、CMCは、圧縮されたおよび圧縮されていないデータをより効率的に読み書きすることができ、減少したメモリアクセスレイテンシおよび改善されたシステム性能をもたらす。
別の態様では、CMCが提供される。CMCは、システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える。CMCは、システムメモリ内のメモリライン内でアクセスされるべきメモリブロックの物理アドレスを備えるメモリ読出し要求を受信するように構成される。CMCは、さらに、システムメモリ内のマスタディレクトリから物理アドレスに対応するCIを含むマスタディレクトリメモリブロックを読み出すように構成される。CMCはまた、CIに基づいて、メモリ読出し要求のために読み出すシステムメモリ内のメモリライン内のメモリブロックの数を決定するように構成される。CMCは、加えて、物理アドレスにおいて開始するシステムメモリ内のメモリライン内の決定された数のメモリブロクを読み出すように構成される。
別の態様では、CMCが提供される。CMCは、システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースを備える。CMCは、書込みデータと、システムメモリ内のメモリライン内の書き込まれるべきメモリブロックの物理アドレスとを備えるメモリ書込み要求を受信するように構成される。CMCは、さらに、書込みデータのための圧縮パターンを決定するように構成される。CMCはまた、圧縮パターンに基づいて書込みデータのためのCIを生成するように構成される。CMCは、加えて、マスタディレクトリ内の物理アドレスに対応する記憶されたCIを、生成されたCIで更新するように構成される。CMCは、さらに、生成されたCIに基づいて、システムメモリ内のメモリライン内の1つまたは複数のメモリブロックに書込みデータを書き込むように構成される。CMCはまた、システムメモリのメモリライン内の1つまたは複数のメモリブロックの各々の1つまたは複数のECCビット内に、生成されたCIを書き込むように構成される。
別の態様では、メモリ読出し要求のためのメモリ帯域幅の圧縮を提供するための方法が提供される。方法は、システムバスを介してCMCによって、システムメモリ内のメモリライン内のアクセスされるべきメモリブロックの物理アドレスを備えるメモリ読出し要求を受信するステップを備える。方法は、さらに、システムメモリ内のマスタディレクトリから、物理アドレスに対応するCIを含むマスタディレクトリメモリブロックを読み出すステップを備える。方法はまた、CIに基づいて、メモリ読出し要求のために読み出すシステムメモリ内のメモリライン内のメモリブロックの数を決定するステップを備える。方法は、加えて、物理アドレスにおいて開始するシステムメモリ内のメモリライン内の決定された数のメモリブロックを読み出すステップを備える。
別の態様では、メモリ書込み要求のためのメモリ帯域幅の圧縮を提供するための方法が提供される。方法は、システムバスを介してCMCによって、書込みデータと、システムメモリ内のメモリライン内に書き込まれるべきメモリブロックの物理アドレスとを備えるメモリ書込み要求を受信するステップを備える。方法は、さらに、書込みデータのための圧縮パターンを決定するステップを備える。方法はまた、圧縮パターンに基づいて書込みデータのためのCIを生成するステップを備える。方法は、加えて、マスタディレクトリ内の物理アドレスに対応する記憶されたCIを、生成されたCIで更新するステップを備える。方法は、さらに、生成されたCIに基づいて、システムメモリ内のメモリライン内の1つまたは複数のメモリブロックに書込みデータを書き込むステップを備える。方法はまた、システムメモリのメモリライン内の1つまたは複数のメモリブロックの各々の1つまたは複数のECCビット内に、生成されたCIを書き込むステップを備える。
他の態様では、小さいデータブロックの圧縮に適し得る圧縮方法およびフォーマットが開示される。これらの圧縮方法およびフォーマットは、本明細書で開示されたメモリ帯域幅圧縮態様に用いられ得る。
これらCMCおよび圧縮機構のいくつかのまたはすべての態様では、物理メモリサイズの増加を軽減し、システム性能への影響を最小限に抑えながら、メモリアクセスレイテンシを減少させ、CPU搭載システムのメモリ帯域幅を効果的に増加させることが可能であり得る。
中央処理装置(CPU)搭載システムを含む例示的なシステムオンチップ(SoC)の概略図である。 複数のCPUと、メモリ帯域幅の圧縮を提供するように構成された圧縮メモリコントローラ(CMC)とを有する例示的なCPU搭載システムを含むSoCの概略図である。 CMCが、さらに、メモリ帯域幅の圧縮を提供するために用いられ得るオプションの内部メモリに通信可能に結合された、図2のCMCのより詳細な概略図である。 図3のCMCによって実装され得る例示的なメモリ帯域幅圧縮機構の概略図である。 CMCにおけるアドレス変換による性能損失を補償するためにオプションのレベル4(L4)キャッシュを含む図1のSoCの一例を示す図である。 メモリ読出し動作およびメモリ書込み動作の間の例示的な通信フローと、メモリ帯域幅の圧縮を提供するための図3のCMCによってアクセスされ得る図4のシステムメモリおよびマスタディレクトリの例示的な要素とを示す図である。 メモリ読出し動作およびメモリ書込み動作の間の例示的な通信フローと、メモリ帯域幅の圧縮を提供するための図3のCMCによってアクセスされ得る図4のシステムメモリおよびマスタディレクトリの例示的な要素とを示す図である。 メモリ帯域幅の圧縮を使用して図6AのCMCによってメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。 メモリ帯域幅の圧縮を使用して図6BのCMCによるメモリ書込み動作を実行するための例示的な動作を示すフローチャートである。 メモリ読出し動作およびメモリ書込み動作の間の例示的な通信フローと、メモリ帯域幅の圧縮を提供するための図3中のCMCのいくつかの態様によって提供される圧縮インジケータ(CI)のキャッシュの例示的な要素とを示す図である。 メモリ読出し動作およびメモリ書込み動作の間の例示的な通信フローと、メモリ帯域幅の圧縮を提供するための図3中のCMCのいくつかの態様によって提供される圧縮インジケータ(CI)キャッシュの例示的な要素とを示す図である。 CIキャッシュを使用して図9AのCMCによるメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。 CIキャッシュを使用して図9AのCMCによるメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。 CIキャッシュを使用して図9AのCMCによるメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。 CIキャッシュを使用して図9BのCMCによるメモリ書込み動作を実行するための例示的な動作を示すフローチャートである。 CIキャッシュを使用して図9BのCMCによるメモリ書込み動作を実行するための例示的な動作を示すフローチャートである。 CIキャッシュを使用して図9BのCMCによるメモリ書込み動作を実行するための例示的な動作を示すフローチャートである。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 そのいずれかがメモリデータブロックを圧縮および伸長するために図3のCMCによって使用され得る、例示的なデータブロック圧縮フォーマットおよび機構を示す図である。 図2のCMCを用いる図1のSoCを含み得る例示的なコンピューティングデバイスのブロック図である。
ここで図面を参照すると、本開示のいくつかの例示的な態様が記載されている。「例示的」という語は、本明細書では「一例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
本明細書で開示された態様は、中央処理装置(CPU)搭載システム内の圧縮メモリコントローラ(CMC)を使用してメモリ帯域幅の圧縮を提供することを含む。この点について、いくつかの態様では、CMCは、メモリ読出し要求および/またはメモリ書込み要求のためのメモリ帯域幅の圧縮を提供するように構成される。いくつかの態様によれば、システムメモリ内の物理アドレスへのメモリ読出し要求を受信すると、CMCは、マスタディレクトリからおよび/またはシステムメモリ内の物理アドレスに関連付けられた誤り訂正コード(ECC)ビットから、物理アドレスのための圧縮インジケータ(CI)を読み出し得る。いくつかの態様では、CIは、CMCに(たとえば、データが圧縮されているかまたは圧縮されていないかを示す、および/または、圧縮されたデータが物理アドレスにおいて記憶されたメモリブロックの数を示す)圧縮パターンを提供し得る。CIに基づいて、CMCは、メモリ読出し要求のために読み出されるべきメモリブロックの数を決定し、物理アドレスにおいて開始する決定された数のメモリブロックを読み出す。いくつかの態様では、システムメモリ内の物理アドレスへのメモリ書込み要求を受信すると、CMCは、書き込むべき書込みデータのための圧縮パターンを決定し得、圧縮パターンに基づいて書込みデータのためのCIを生成し得る。CMCは、次いで、マスタディレクトリ、および/または物理アドレスに関連付けられたECCビットを更新し得、生成されたCIに基づいてシステムメモリに書込みデータを書き込み得る。CMCのいくつかの態様は、さらに、以前の読出しCIをキャッシュするためのCIキャッシュを提供し得る。このようにして、CMCは、圧縮されたおよび圧縮されていないデータをより効率的に読み書きすることができ、減少したメモリアクセスレイテンシおよび改善されたシステム性能をもたらす。
この点について、図2は、図1中のCPU搭載システム12と同様の複数のCPUブロック14(1)〜14(N)を有する例示的なCPU搭載システム12'を含むSoC10'の概略図である。図12中のCPU搭載システム12'は、図1中のCPU搭載システム12といくつかの共通の構成要素を含み、それらは、図1と図2との間で共通の要素番号によって示される。簡潔にするために、これらの構成要素を再び説明しない。しかしながら、図2中のCPU搭載システム12'では、CMC36が設けられる。CMC36は、システムメモリ38へのアクセスを制御する。システムメモリ38は、非限定的な例として、1つまたは複数の二重データレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)40(1)〜40(R)(以下、「DRAM40(1)〜40(R)」と呼ぶ)を備え得る。この例におけるCMC36は、本明細書および以下で開示された態様によるメモリ帯域幅の圧縮を用いる。図1のCPU搭載システム12のメモリコントローラ24と同様に、図2中のCPU搭載システム12'内のCMC36は、内部システムバス22を介してCPUブロック14(1)〜14(N)によって共有される。
図2中のCMC36の例示的な内部構成要素のより詳細な概略図を示すために、図3が提供される。この例では、CMC36は、図2中のCPUブロック14(1)〜14(N)を含む半導体ダイ46(1)、46(2)とは別個の半導体ダイ44上に設けられる。代替的には、いくつかの態様では、CMC36は、CPUブロック14(1)〜14(N)と共通の半導体ダイ(図示せず)内に含まれ得る。ダイ構成に関係なく、CMC36は、CPUブロック14(1)〜14(N)が内部システムバス22を介してCMC36へメモリアクセス要求を行い得、CMC36を介してメモリからデータを受信し得るように設けられる。
図3への参照を継続すると、CMC36は、DRAM40(1)〜40(R)を備えるものとして図2および図3に示されたシステムメモリ38へのメモリアクセスのための動作を制御する。CMC36は、メモリアクセス要求(図示せず)に対処するために使用される複数のメモリインターフェース(MEM I/F)48(1)〜48(P)(たとえば、DDR DRAMインターフェース)を含む。この点について、この例におけるCMC36は、圧縮コントローラ50を含む。圧縮コントローラ50は、図2中のCPUブロック14(1)〜14(N)からのメモリアクセス要求に応答して、システムメモリ38に記憶されたデータを圧縮することと、システムメモリ38から取得したデータを伸長することとを制御する。このようにして、CPUブロック14(1)〜14(N)は、CMC36によってアクセスされるメモリの実際の容量よりも大きい仮想メモリアドレス空間が提供され得る。圧縮コントローラ50はまた、内部システムバス22を介してCPUブロック14(1)〜14(N)に提供される情報の帯域幅圧縮を実行するように構成され得る。
以下でより詳細に論じるように、圧縮コントローラ50は、メモリ帯域幅圧縮を提供するために、任意の数の圧縮技術およびアルゴリズムを実行し得る。ローカルメモリ52は、そのような圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50によって必要とされるデータ構造および他の情報のために設けられる。この点について、ローカルメモリ52は、スタティックランダムアクセスメモリ(SRAM)54の形態で設けられる。ローカルメモリ52は、圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50のために必要とされ得るデータ構造および他のデータ記憶のために使用されるのに十分なサイズである。ローカルメモリ52はまた、CMC36内の内部使用のための追加のキャッシュメモリを提供するために、レベル4(L4)キャッシュなどのキャッシュを含むように分割され得る。したがって、L4コントローラ55はまた、L4キャッシュへのアクセスを提供するために、CMC36内に設けられ得る。拡張圧縮技術およびアルゴリズムは、以下でより詳細に論じるように、より大きい内部メモリを必要とし得る。たとえば、ローカルメモリ52は、128キロバイト(kB)のメモリを提供し得る。
さらに、図3に示し、以下でより詳細に説明するように、オプションの追加の内部メモリ56はまた、CMC36のために設けられ得る。追加の内部メモリ56は、例として、DRAMとして設けられ得る。以下でより詳細に論じるように、追加の内部メモリ56は、CPU搭載システム12'のメモリ帯域幅の圧縮を増加させるために、追加の、またはメモリ圧縮および伸長機構を提供するCMC36のためのローカルメモリ52内よりも大量のデータ構造および他のデータの記憶を容易にし得る。内部メモリコントローラ58は、圧縮で使用するための追加の内部メモリ56へのメモリアクセスを制御するために、CMC36内に設けられる。内部メモリコントローラ58は、CPUブロック14(1)〜14(N)に対してアクセス可能または可視ではない。
上述したように、図3中のCMC36は、いくつかの態様では、ゼロライン圧縮を含む、メモリ帯域幅の圧縮を実行し得る。ローカルメモリ52は、そのような圧縮のために使用される、より大きいデータ構造を記憶するために使用され得る。以下でより詳細に論じるように、メモリ帯域幅の圧縮は、メモリアクセスレイテンシを減少させ得、メモリアクセスレイテンシへの影響を最小限に抑えながら、より多くのCPU16(1)、16(2)またはそれらのそれぞれのスレッドが同じ数のメモリチャネルにアクセスすることを可能にし得る。いくつかの態様では、メモリチャネルの数は、そのような圧縮がCMC36によって実行されなかった場合のより多くのメモリチャネルと比較して、同様のレイテンシ結果を達成しながら、減少され得、それは、低減したシステムレベルの電力消費をもたらし得る。
ローカルメモリ52および追加の内部メモリ56を含む、図3中のCMC36内のメモリ帯域幅の圧縮のために提供されるリソースの各々は、リソースおよび領域間の所望のバランス、電力消費、メモリ容量の圧縮により増加したメモリ容量。ならびにメモリ帯域幅の圧縮により増加した性能を達成するために、互いに独立して、または互いに組み合わせて使用され得る。メモリ帯域幅の圧縮は、所望のように有効化または無効化され得る。さらに、CMC36による使用のための上記で説明したリソースは、メモリ容量および/または帯域幅の圧縮効率と、消費電力と、性能との間の所望のトレードオフを達成するために有効化または無効化され得る。CMC36に利用可能なこれらのリソースを使用する例示的なメモリ帯域幅の圧縮技法を、ここで論じる。
この点について、図4は、メモリ帯域幅の圧縮を提供するために図3のCMC36によって実装され得る例示的なメモリ帯域幅圧縮機構60の概略図である。メモリ帯域幅圧縮機構60では、システムメモリ38は、複数のメモリライン62を備え、メモリライン62の各々は、物理アドレスに関連付けられる。複数のメモリライン62の各々は、メモリ読出しまたは書込み要求(図示せず)の物理アドレスを使用してCMC36によってアクセスされ得る。データ(図示せず)は、圧縮された形態または圧縮されていない形態のいずれかにおいて、システムメモリ38内のメモリライン62の各々内に記憶され得る。いくつかの態様では、CI64を備える1つまたは複数のECCビットは、メモリライン62が圧縮された形態で記憶されているかどうかを示すために、各メモリライン62に関連付けて記憶され得る。このようにして、システムメモリ38へのメモリアクセス要求を実行するとき、CMC36は、メモリライン62がメモリアクセス要求の処理の一部として圧縮されているかどうかを決定するために、アドレスされるべき物理アドレスに対応するメモリライン62に関連付けられたCI64をチェックし得る。
マスタディレクトリ66はまた、システムメモリ38内に設けられる。マスタディレクトリ66は、物理アドレスに対応するシステムメモリ38内のメモリライン62ごとに1つのエントリ68を含む。マスタディレクトリ66はまた、メモリライン62がメモリライン62内に圧縮されて記憶されているかどうかと、そうである場合、複数の圧縮長さがサポートされる態様では、データの圧縮長さを示す圧縮パターンとを示すために、エントリ68あたり1つのCI64を含む。たとえば、メモリライン62が128バイトの長さであり、そこに記憶されたデータが64バイト以下に圧縮され得る場合、システムメモリ38内に記憶されたデータに対応するマスタディレクトリ66内のCI64は、データが128バイトメモリライン62の最初の64バイト内に記憶されることを示すように設定され得る。
図4を参照し続けると、書込み動作中、CMC36は、システムメモリ38内に書き込まれるべきメモリブロックを圧縮し得る。たとえば、データ(たとえば、128バイトまたは256バイト)が圧縮される。圧縮されたデータブロックがシステムメモリ38のメモリブロックサイズ(たとえば、64バイト)以下である場合、64バイトが書き込まれ得、そうでなければ、128バイトが書き込まれる。256バイトは、圧縮されたデータサイズに応じて、64、128、192、または256バイトとして書き込まれ得る。システムメモリ38内のメモリライン62に関連付けられた1つまたは複数のECCビット内に記憶されたCI64はまた、メモリライン62内のデータが圧縮されているかどうかを示すように設定され得る。
読出し動作例の間、CMC36は、読み出されるべきデータがシステムメモリ38内で圧縮されているかどうかを決定するために、マスタディレクトリ66からCI64を読み出し得る。CI64に基づいて、CMC36は、システムメモリ38からアクセスされるべきデータを読み出し得る。読み出されるべきデータがCI64によって示されるようにシステムメモリ38内で圧縮されていた場合、CMC36は、1つのメモリ読出し動作で圧縮されたデータブロック全体を読み出すことができる。読み出されるデータの一部がシステムメモリ38内で圧縮されていなかった場合、読み出されるべきメモリライン62の追加の部分もシステムメモリ38から読み出されなければならないので、メモリアクセスレイテンシは、悪影響を受け得る。いくつかの態様では、いくつかのアドレス範囲について、訓練機構が用いられ得、訓練機構では、CMC36は、状況の所与のセット内でシステムメモリ38から2つのアクセスにおいてデータを読み出すことがよいかどうか、または、レイテンシの影響を回避するためにシステムメモリ38から全量のデータを読み出すことがよいかどうかを「学習」するように構成され得る。
図4の例では、CIキャッシュ70はまた、システムメモリ38の外部の別個のキャッシュ内に設けられ得る。CIキャッシュ70は、システムメモリ38内のメモリライン62が圧縮された形態で記憶されているかどうかを示すために、システムメモリ38内のメモリライン62あたり1つのキャッシュエントリ72を提供する。このようにして、システムメモリ38へのメモリアクセス要求を実行するときCMC36は、メモリライン62を読み出さなければならないことなく、システムメモリ38内の物理アドレスにおけるメモリライン62がメモリアクセス要求の処理の一部として圧縮されているかどうかを決定するために、アドレスされるべき物理アドレスに対応するCIキャッシュ70内のキャッシュエントリ72を最初にチェックし得る。したがって、CIキャッシュ70が、メモリライン62が圧縮されて記憶されていることを示す場合、CMC36は、メモリライン62全体を読み出す必要はなく、したがって、レイテンシを低減する。CIキャッシュ70が、メモリライン62が圧縮されずに記憶されていることを示す場合、CMC36は、メモリライン62全対応読み出すことができる。ミスがCIキャッシュ70において発生した場合、マスタディレクトリ66内に記憶された対応するCI64は、同じ物理アドレスへの後続のメモリアクセス要求のために参照され得、CIキャッシュ70内にロードされ得る。
いくつかの態様では、CIキャッシュ70は、従来のキャッシュとして編成され得る。CIキャッシュ70は、非限定的な例として、タグアレイを含み得、nウェイの連想キャッシュとして編成され得る。CMC36は、CIキャッシュ70に関する追い出しポリシーを実装し得る。図4中に示すCIキャッシュ70では、各キャッシュライン74は、複数のキャッシュエントリ72を記憶し得る。各キャッシュエントリ72は、キャッシュエントリ72に関連付けられたシステムメモリ38内のメモリライン62が圧縮されているかどうかを示すため、および/または、キャッシュエントリ72に対応するデータの圧縮サイズを示す圧縮パターンを表すために、CI76を含み得る。たとえば、CI76は、4つの可能性のある圧縮サイズ(たとえば、32、64、96、または128バイト)を表す2ビットを備え得る。この例では、この情報は、キャッシュエントリ72内のCI76内にも記憶されるので、CI64は、冗長であることに留意されたい。たとえば、メモリライン62が128バイトの長さであり、そこに記憶されたデータが64バイト以下に圧縮され得る場合、システムメモリ38内のメモリライン62に対応するCIキャッシュ70内のキャッシュエントリ72内のCI76は、128バイトのメモリライン62の最初の64バイト内に記憶されたデータを示すように設定され得る。
メモリ帯域幅圧縮機構のための追加のキャッシュを設けることも望ましい可能性がある。この点について、図5は、図2中のSoC10'のような代替SoC10"の例を示すが、図5中のSoC10"は、加えて、この例ではL4キャッシュであるオプションのキャッシュ78を含む。CMC36は、レイテンシを最小化するために、L4キャッシュ78とCIキャッシュ70の両方における物理アドレスを同時に検索することができる。L4キャッシュ78内のアドレスは、圧縮されていない物理アドレスである。L4キャッシュ78における物理アドレスのヒットに際し、CIキャッシュ70における物理アドレスの検索は、冗長である。L4キャッシュ78における物理アドレスのミスに際し、CIキャッシュ70における物理アドレスの検索は、システムメモリ38からデータを得るために必要とされる。また、L4キャッシュ78とCIキャッシュ70の両方にアクセスするCPU16の付加的なレイテンシを回避するために、L4キャッシュ78およびCIキャッシュ70は、プライミングされ得る。
図6Aおよび図6Bは、メモリ帯域幅の圧縮を提供するための図3のCMC36によってアクセスされ得る図4のシステムメモリ38およびマスタディレクトリ66の例示的な通信フローおよび例示的な要素を示すために提供される。具体期には、図6Aは、メモリ読出し動作の間の例示的な通信フローを示し、図6Bは、メモリ書込み動作の間の例示的な通信フローを示す。図6Aおよび図6Bを説明する際に、図3および図4の要素は、明確化のために参照される。
図6Aおよび図6Bでは、システムメモリ38は、圧縮されたデータと圧縮されていないデータとを記憶するための複数のメモリライン80(0)〜80(X)を含む。メモリライン80(0)〜80(X)は、各々、システムメモリ38の基礎となるメモリアーキテクチャによって決定されるように、それぞれのメモリブロック82(0)〜82(Z)および84(0)〜84(Z)に細分される。いくつかの態様では、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)の各々のサイズは、メモリ読出し動作においてシステムメモリ38から読み出され得るデータの最小量を表す。たとえば、いくつかの例示的なメモリアーキテクチャでは、メモリライン80(0)〜80(X)の各々は、2つの64バイトメモリブロック82(0)〜82(Z)、84(0)〜84(Z)に細分された128バイトのデータを備え得る。いくつかの態様は、メモリライン80(0)〜80(X)の各々がより多いまたはより少ないバイトのデータ(非限定的な例として、たとえば、256バイトまたは64バイト)を備え得る。同様に、いくつかの態様によれば、メモリライン80(0)〜80(X)内のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)は、より大きくてもよく、またはより小さくてもよい(非限定的な例として、たとえば、128バイトまたは32バイト)。いくつかの態様では、メモリ読出し動作は、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)の各々のサイズよりも少ないバイトを読み出し得るが、依然としてメモリブロック82(0)〜82(Z)、84(0)〜84(Z)の1つと同じ量のメモリ帯域幅を消費し得る。
メモリブロック82(0)〜82(Z)、84(0)〜84(Z)の各々は、1つまたは複数の対応するECCビット86(0)〜86(Z)、88(0)〜88(Z)に関連付けられる。ECCビット86(0)〜86(Z)、88(0)〜88(Z)などのECCビットは、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)内の一般的に遭遇するタイプの内部データ破壊を検出し、修正するために従来から使用されている。図6Aおよび図6Bの例では、ECCビット86(0)〜86(Z)、88(0)〜88(Z)のうちの1つまたは複数は、それぞれのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)のためのCI90(0)〜90(Z)、92(0)〜92(Z)を記憶するために再利用される。図6Aおよび図6B中のECCビット86(0)〜86(Z)、88(0)〜88(Z)は、それらのそれぞれのメモリブロック82(0)〜82(Z)、84(0)〜84(Z)に隣接するものとして示されているが、ECCビット86(0)〜86(Z)、88(0)〜88(Z)は、システムメモリ38内の他の場所に配置され得ることが理解されるべきである。
図6Aおよび図6Bの例では、システムメモリ38はまた、複数のマスタディレクトリメモリブロック94(0)〜94(Y)を含むマスタディレクトリ66を含む。マスタディレクトリメモリブロック94(0)〜94(Y)の各々は、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)と同じサイズである。マスタディレクトリメモリブロック94(0)〜94(Y)は、CI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)を記憶し、CIの各々は、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの1つの物理アドレスに対応する。以下でより詳細に論じるように、いくつかの態様では、ECCビット86(0)〜86(Z)、88(0)〜88(Z)内に記憶されたCI90(0)〜90(Z)、92(0)〜92(Z)およびマスタディレクトリメモリブロック94(0)〜94(Y)内に記憶されたCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)は、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの所与の1つのための同じ値を常に記憶するように維持され得る。いくつかの態様は、ECCビット86(0)〜86(Z)、88(0)〜88(Z)内に記憶されたCI90(0)〜90(Z)、92(0)〜92(Z)は、マスタディレクトリメモリブロック94(0)〜94(Y)内に記憶されたCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)よりも頻繁に更新され得る。
CI90(0)〜90(Z)、92(0)〜92(Z)およびCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)は、各々、システムメモリ38の対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)において記憶されたデータの圧縮状態を示す1つまたは複数のビットを備え得る。いくつかの態様では、CI90(0)〜90(Z)、92(0)〜92(Z)およびCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)の各々は、対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)内のデータが圧縮されているかまたは圧縮されていないかを示す単一のビットを備え得る。いくつかの態様によれば、CI90(0)〜90(Z)、92(0)〜92(Z)およびCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)の各々は、対応するメモリブロック82(0)〜82(Z)、84(0)〜84(Z)の各々のための圧縮パターン(非限定的な例として、たとえば、圧縮されたデータによって占有されるメモリブロック82(0)〜82(Z)、84(0)〜84(Z)の数)を示すために使用され得る複数のビットを備え得る。
図6Aの例では、物理アドレス104を指定するメモリ読出し要求102は、矢印106によって示されるように、CMC36によって受信される。例示の目的のため、この例では、物理アドレス104が128バイトのメモリライン80(0)の64バイトの細分であるメモリブロック82(0)に対応すると仮定する。メモリ読出し要求102が受信されたとき、CMC36は、メモリブロック82(0)において記憶されたデータが圧縮されているかどうかを知らない。CMC36は、メモリライン80(0)全体を読み出すことを続けることができるが、要求されたデータがメモリブロック82(0)のみの中に圧縮された形態で記憶されている場合、メモリブロック82(Z)の読出しは、不要になり、増加したメモリアクセスレイテンシをもたらすことになる。代替的には、CMC36は、メモリブロック82(0)のみを読み出すことができ、その内容に基づいて、そこに記憶されたデータが圧縮されているかどうかを決定することができ、次いで、データが圧縮されていない場合、メモリブロック82(Z)を読み出すことができる。しかしながら、この手法はまた、2つの別個のメモリ読出し動作を発行することに起因する増加したメモリアクセスレイテンシをもたらし得る。したがって、メモリブロック82(0)の圧縮状態を知ることなく、CMC36は、メモリアクセスレイテンシに悪影響を及ぼし得る不要なメモリ読出し動作を実行する危険を冒す。
CI90(0)〜90(Z)、92(0)〜92(Z)および/またはCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)を使用することによって、CMC36は、所与のメモリ読出し要求102のための(圧縮されたまたは圧縮されていない)すべてのデータがシステムメモリ38から効率的に読み出されることを保証するためにどれくらい多くのメモリブロック82(0)〜82(Z)が読み出されるべきかを決定し得る。したがって、メモリ読出し要求102を受信した後、CMC36は、矢印108によって示されるように、メモリブロック82(0)の物理アドレス104に対応するCI96(0)にアクセスするために、マスタディレクトリ66のマスタディレクトリメモリブロック94(0)を読み出し得る。CI96(0)は、次いで、メモリ読出し要求102によって要求されたデータが効率的に取得されることを保証するために、メモリライン80(0)内のどれくらい多くのメモリブロック82(0)〜82(Z)が読み出すのかを決定するために、CMC36によって使用され得る。
いくつかの態様では、CMC36は、CI96(0)によって示される圧縮パターン(図示せず)を決定することによって、どれくらい多くのメモリブロック82(0)〜82(X)が読み出すのかを決定し得る。上記の例では、CI96(0)は、データが圧縮されている(すなわち、メモリブロック82(0)のみが読み出されるべき)または圧縮されていない(すなわち、メモリブロック82(0)と82(Z)の両方が読み出されるべき)ことを示す単一のビットであり得る。システムメモリ38のメモリライン80(0)〜80(X)が各々2つ以上のメモリブロック82(0)〜82(Z)、84(0)〜84(Z)を含む態様によれば、CI96(0)は、どれくらい多くのメモリブロック82(0)〜82(Z)が圧縮されたデータを含んでいるのかを示す複数のビットを備え得る。たとえば、メモリライン80(0)〜80(X)が4つの64バイトメモリブロック82(0)〜82(Z)に細分された256バイトメモリラインであった場合、CI96(0)は、圧縮されたデータが64バイト、128バイト、または192バイト(それぞれ、メモリブロック82(0)、メモリブロック82(0)〜82(1)、メモリブロック82(0)〜82(2)に対応する)内に記憶されることを示し得る。CI96(0)に基づいて、CMC36は、次いで、矢印110によって示されるように、メモリライン80(0)内の所定の数のメモリブロック82(0)〜82(Z)を読み出すために、適切な数のメモリ読出し動作を発行し得る。いくつかの態様は、CI96(0)によって示される圧縮パターンがゼロラインインジケータを備えることをCMC36が決定し得ることを提供し得、ゼロラインインジケータは、物理アドレス104において記憶されたデータが完全にゼロ値から構成されることをCMC36に示す。そのような場合には、CMC36は、ゼロのメモリブロック82(0)〜82(Z)を読み出し得る。いくつかの態様によれば、CMC36は、CI96(0)によって示される圧縮パターンが、物理アドレス104において記憶された(非限定的な例として、すべて1などの)他の固定されたデータパターンのインジケータを備えることを決定し得る。
いくつかの態様では、CMC36によって受信された特定の割合のメモリ読出し要求102のみについて、マスタディレクトリ66からCI96(0)〜96(W)、98(0)〜98(W)、100(0)〜100(W)を読み出すことが望ましい可能性がある。たとえば、いくつかの態様では、マスタディレクトリ66は、CMC36によって受信されたメモリ読出し要求102の10パーセント(%)についてのみアクセスされ得る。そのような態様では、メモリ読出し要求102を受信すると、CMC36は、マスタディレクトリ66からメモリブロック82(0)のためのCI96(0)を読み出すかどうか、または代替的に、ECCビット86(0)からメモリブロック82(0)のためのCI90(0)を読み出すかどうかを、(たとえば、乱数発生器(図示せず)に基づいて)確率的に決定し得る。後者の場合には、CMC36は、破線の矢印112によって示されるように、CI90(0)を読み出し得、メモリライン80(0)からどれくらい多くのメモリブロック82(0)〜82(Z)を読み出すのかを決定する際に、CI90(0)を使用し得る。
ここで図6Bを参照すると、CMC36は、矢印116によって示されるように、メモリ書込み要求114を受信する。メモリ書込み要求114は、システムメモリ38に書き込まれるべき書込みデータ118、ならびに、書込みデータ118が書き込まれるべきシステムメモリ38の物理アドレス104の両方を含む。例示の目的のために、物理アドレス104がメモリブロック82(0)に対応することを再び仮定する。メモリ書込み要求114を受信すると、CMC36は、書込みデータ118を圧縮する動作を実行し得、書込みデータ118を圧縮した結果に基づいて、書込みデータ118のための圧縮パターンを決定し得る。圧縮パターンは、非限定的な例として、書込みデータ118が正常に圧縮されたかどうか、および/または、圧縮された書込みデータ118によって占有されるメモリブロック82(0)〜82(Z)の数を示し得る。圧縮パターンに基づいて、CMC36は、書込みデータ118のためのCI120を生成する。
CMC36は、次いで、矢印122によって示されるように、メモリブロック82(0)の物理アドレス104のためのマスタディレクトリ66内に記憶されたCI96(0)を、生成されたCI120で更新し得る。いくつかの態様によれば、マスタディレクトリ66は、CMC36によって受信されたメモリ書込み要求114の特定の割合のみについて更新され得る。たとえば、いくつかの態様では、マスタディレクトリ66は、CMC36によって受信されたメモリ書込み要求114の10パーセント(10%)についてのみ更新され得る。したがって、そのような態様では、CMC36は、マスタディレクトリ66内のメモリブロック82(0)のための記憶されたCI96(0)を更新するかどうかを、(たとえば、乱数発生器(図示せず)に基づいて)確率的に決定し得る。そうでない場合、このオプションは、省略され得る。CMC36は、次いで、矢印124によって示されるように、メモリブロック82(0)〜82(Z)のうちの1つまたは複数に書込みデータ118を書き込む。CMC36はまた、矢印126によって示されるように、書込みデータ118が書き込まれた1つまたは複数のメモリブロック82(0)〜82(Z)のECCビット86(0)〜86(Z)内に記憶されたCI90(0)〜90(Z)に、生成されたCI120を書き込む。
図7は、図6Aを参照して論じたようにメモリ帯域幅の圧縮を使用して図3のCMC36によるメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。明確化のために、図2、図3、および図6Aの要素は、図7を説明する際に参照される。図7では、CMC36が内部システムバス22を介して、システムメモリ38内のメモリライン80(0)内のアクセスされるべきメモリブロック82(0)の物理アドレス104を備えるメモリ読出し要求102を受信して、動作が開始する(ブロック128)。いくつかの態様では、CMC36は、オプションで、CI96(0)がマスタディレクトリ66から読み出されるべきかどうかを確率的に決定し得る(ブロック130)。CMC36が、CI96(0)がマスタディレクトリ66から読み出されるべきではないことを決定した場合、CMC36は、メモリブロック82(0)を読み出すとともに、1つまたは複数のECCビット86(0)からCI90(0)を読み出し、CI96(0)としてCI90(0)を使用する(ブロック132)。しかしながら、CMC36が確率的決定を使用していない場合、または、CMC36が決定ブロック130においてCI96(0)がマスタディレクトリ66から読み出されるべきであることを確率的に決定した場合、CMC36は、システムメモリ38内のマスタディレクトリ66から物理アドレス104に対応するCI96(0)を含むマスタディレクトリメモリブロック94(0)を読み出す(ブロック134)。
CMC36は次いで、CI96(0)に基づいて、メモリ読出し要求102のために読み出すシステムメモリ38内のメモリライン80(0)内のメモリブロック82(0)〜82(Z)の数を決定する(ブロック136)。いくつかの態様では、読み出すメモリブロック82(0)〜82(Z)の数を決定するためのブロック136の動作は、CI96(0)によって示された圧縮パターンを決定することを備え得る(ブロック138)。たとえば、CMC36は、CI96(0)がゼロのメモリブロック82(0)〜82(Z)が読み出されるべきであることを示すゼロラインインジケータを備えることを決定し得る(ブロック140)。CMC36は次いで、物理アドレス104において開始するシステムメモリ38内のメモリライン80(0)内の決定された数のメモリブロック82(0)〜82(Z)を読み出す(ブロック142)。
メモリ帯域幅の圧縮を使用して図3のCMC36によるメモリ書込み動作を実行するための例示的な動作を例示するために、図6Bに関連して上述したように、図8が提供される。この点について、図2、図3、および図6Bの要素は、明確化のために、図8を説明する際に参照される。図8における動作は、CMC36が内部システムバス22を介して、書込みデータ118と、システムメモリ38内のメモリライン80(0)内の書き込まれるべきメモリブロック82(0)の物理アドレス104とを備えるメモリ書込み要求114を受信して開始する(ブロック144)。書込みデータ118を圧縮しようとした後、CMC36は、書込みデータ118のための(たとえば、書込みデータ118が圧縮されているかどうか、および/または、書込みデータ118を記憶するためにどれくらい多くのメモリブロック82(0)〜82(Z)が必要とされるか)圧縮パターンを決定する(ブロック146)。圧縮パターンに基づいて、CMC36は、圧縮パターンに基づいて書込みデータ118のためのCI120を生成する(ブロック148)。
いくつかの態様によれば、CMC36は、オプションで、マスタディレクトリ66に記憶されたCI96(0)が更新されるべきであるかどうかを確率的に決定し得る(ブロック150)。CMC36が、マスタディレクトリ66内の記憶されたCI96(0)が更新されるべきではないことを決定した場合、処理は、図8のブロック152において再開する。しかしながら、CMC36が、マスタディレクトリ66内の記憶されたCI96(0)が更新されるべきであることを決定ブロック150で決定した場合、または、CMC36が確率的決定を用いていない場合、CMC36は、マスタディレクトリ66内の物理アドレス104に対応する記憶されたCI96(0)を、生成されたCI120で更新する(ブロック154)。
CMC36は、次に、生成されたCI120に基づいて、システムメモリ38内のメモリライン80(0)内のメモリブロック82(0)〜82(Z)のうちの1つまたは複数に書込みデータ118を書き込む(ブロック152)。CMC36はまた、システムメモリ38のメモリライン80(0)内のメモリブロック82(0)〜82(Z)の各々の1つまたは複数のECCビット86(0)〜86(Z)内に生成されたCI120を書き込む(ブロック156)。いくつかの態様では、生成されたCI120は、第1のメモリブロック82(0)に書込みデータ118を書き込む同じメモリ書込み動作の一部としてECCビット86(0)内に書き込まれる。
図4に関連して上述したように、CMC36によって提供されるメモリ帯域幅の圧縮は、さらに、いくつかの態様では、図4のCIキャッシュ70の使用により強化され得る。この点について、図9Aおよび図9Bは、例示的な通信フローと、メモリ帯域幅の圧縮を提供するための図3のCMC36によってアクセスされ得るCIキャッシュ70の例示的な要素とを示すために提供される。具体的には、図9Aおよび図9Bは、各々、CIキャッシュ70を使用するメモリ読出し動作およびメモリ書込み動作の間の例示的な通信フローを示す。図9Aおよび図9Bを説明する際、図3、図4、図6A、および図6Bの要素は、明確化のために参照される。
図9Aに見られるように、CMC36のCIキャッシュ70は、キャッシュされたCI160(0)〜160(W)、162(0)〜162(W)、および164(0)〜164(W)を記憶する複数のCIキャッシュエントリ158(0)〜158(T)を含む。キャッシュエントリ158(0)〜158(T)の各々は、マスタディレクトリメモリブロック94(0)〜94(Y)と同じサイズであり、いくつかの態様では、CMC36によるメモリ読出し動作またはメモリ書込み動作の過程で読み出されるマスタディレクトリメモリブロック94(0)〜94(Y)のうちの1つを記憶するように構成される。このようにして、CMC36は、CI90(0)〜90(Z)、92(0)〜92(Z)、および/またはCI96(0)〜CI96(W)、98(0)〜98(W)、100(0)〜100(W)を読み出すために、システムメモリ38にアクセスするのではなく、後続のメモリ読出し動作およびメモリ書込み動作においてキャッシュされたCI160(0)〜160(W)、162(0)〜162(W)、および164(0)〜164(W)にアクセスし得る。CMC36は、システムメモリ38から読み出すまたはシステムメモリ38に書き込むよりもはるかに高速にCIキャッシュ70から読み出すまたはCIキャッシュ70に書き込み得るので、CIキャッシュ70の使用は、CMC36がメモリアクセスレイテンシをさらに減少させることを可能にし得る。
図9Aの例では、CIキャッシュ70を提供するCMC36は、矢印166によって示すように、物理アドレス104を備えるメモリ読出し要求102を受信する。物理アドレス104は、システムメモリ38のメモリライン80(0)のメモリブロック82(0)に対応すると仮定する。CMC36は、次いで、物理アドレス104がCIキャッシュエントリ158(0)〜158(T)のうちの1つに対応するかどうかを決定し得る。CIキャッシュエントリ158(0)などのCIキャッシュエントリ158(0)〜158(T)のうちの1つがメモリブロック82(0)の物理アドレス104に対応する(すなわち、キャッシュ「ヒット」)場合、CMC36は、メモリブロック82(0)のためのCI160(0)などのCIインジケータを含むCIキャッシュエントリ158(0)を識別している。CMC36は、次いで、CIキャッシュ70のCIキャッシュエントリ158(0)からCI160(0)を読出し、図6Aに関連して上記で論じたように、CI160(0)に基づいて、読み出すメモリブロック82(0)〜82(Z)の数を決定する。
しかしながら、CMC36が、物理アドレス104がCIキャッシュエントリ158(0)〜158(T)のいずれにも対応していないことを決定した場合、CMC36は、矢印168によって示されるように、メモリブロック82(0)の物理アドレス104に対応するCI96(0)にアクセスするために、マスタディレクトリ66のマスタディレクトリメモリブロック94(0)を読み出し得る。上述したように、いくつかの態様では、CMC36が、CMC36によって受信されたメモリ読出し要求102の特定の割合のみについてマスタディレクトリ66を読み出すことが望ましい可能性がある。したがって、そのような態様では、CMC36は、マスタディレクトリ66からマスタディレクトリメモリブロック94(0)を読み出すかどうか、または代替的には、ECCビット86(0)からメモリブロック82(0)ためのCI90(0)を読み出すかどうかを、(たとえば、乱数発生器(図示せず)に基づいて)確率的に決定し得る。後者の場合には、CMC36は、破線の矢印170によって示されるように、CI90(0)を読み出し得る。CMC36は、次いで、CIキャッシュ70をさらに更新することなく、CI90(0)を使用し得る。
CMC36は次いで、新しいCIキャッシュエントリ158(0)としてCIキャッシュ70内にマスタディレクトリメモリブロック94(0)を書き込み得る。いくつかの態様では、新しいCIキャッシュエントリ158(0)としてマスタディレクトリメモリブロック94(0)を書き込む前に、CIキャッシュ70は、最初に、現在のCIキャッシュエントリ158(0)が追い出されなければならないかどうかを決定し得る。そうである場合、CIキャッシュ70は、さらに、(たとえば、少なくとも1つのキャッシュされたCI160(0)〜160(W)がマスタディレクトリ66から読み出されてから変更されているかどうかを決定することによって)現在のCIキャッシュエントリ158(0)がCIキャッシュ70内に書き込まれてから変更されているかどうかを決定し得る。いくつかの態様では、CIキャッシュ70は、現在のCIキャッシュエントリ158(0)に関連付けられたダーティビット(図示せず)が設定されているかどうかをチェックすることによって、現在のCIキャッシュエントリ158(0)が変更されているかどうかを決定し得る。現在のCIキャッシュエントリ158(0)が変更されている場合、CMC36は、マスタディレクトリメモリブロック94(0)〜94(Y)のうちの対応する1つに現在のCIキャッシュエントリ158(0)を書き込む。CMC36は、次いで、CIキャッシュ70のCIキャッシュエントリ158(0)からCI160(0)を読出し、上記で論じたように、CI160(0)に基づいて、読み出すメモリブロック82(0)〜82(Z)の数を決定する。決定された数のメモリブロック82(0)〜82(Z)は、次いで、矢印172によって示されるように、CMC36によって読み出される。
いくつかの態様では、CMC36は、物理アドレス104がCIキャッシュエントリ158(0)〜158(T)のうちの1つに対応するかどうかを決定すると同時に、メモリ読出し要求102に基づいて、システムメモリ38に早期メモリ読出し要求174を発行し得る。早期メモリ読出し要求174は、CI160(0)に基づいて読み出すメモリブロック82(0)〜82(Z)の数を決定するCMC36と並行して処理され得る。読み出すメモリブロック82(0)〜82(Z)の数を決定すると、早期メモリ読出し要求174は、CI160(0)に基づいて修正され得る。非限定的な例として、早期メモリ読出し要求174は、決定された数のメモリブロック82(0)〜82(Z)を読み出すように修正され得る。このようにして、追加のメモリ帯域幅の圧縮および減少したメモリアクセスレイテンシが、早期メモリ読出し要求174ならびにCIキャッシュ70の読出しおよび/または書込みの並列処理によって提供され得る。
さらに、図5に関連して上記で論じたいくつかの態様によれば、CMC36はまた、物理アドレス104がCIキャッシュ70内のCIキャッシュエントリ158(0)〜158(T)のうちの1つに対応するかどうかを決定すると同時に、L4キャッシュ78内の物理アドレス104を検索するためにキャッシュ読出し動作(図示せず)を実行し得る。そうすることによって、CMC36は、さらに、メモリアクセスレイテンシを最小化し得る。
ここで図9Bを参照すると、CMC36は、矢印176によって示されるように、メモリ書込み要求114を受信する。メモリ書込み要求114は、システムメモリ38に書き込まれるべき書込みデータ118、ならびに、書込みデータ118が書き込まれるべきシステムメモリ38の物理アドレス104の両方を含む。例示の目的のために、物理アドレス104がメモリブロック82(0)に対応すると再び仮定する。メモリ書込み要求114を受信すると、CMC36は、書込みデータ118を圧縮する動作を実行し得、書込みデータ118を圧縮した結果に基づいて、書込みデータ118のための圧縮パターンを決定し得る。圧縮パターンは、非限定的な例として、書込みデータ118が正常に圧縮されたかどうか、および/または、圧縮された書込みデータ118によって占有されるメモリブロック82(0)〜82(Z)の数を示し得る。圧縮パターンに基づいて、CMC36は、書込みデータ118のためのCI120を生成する。
CMC36は次いで、物理アドレス104がCIキャッシュエントリ158(0)〜158(T)のうちの1つに対応するかどうかを決定し得る。CIキャッシュエントリ158(0)などのCIキャッシュエントリ158(0)〜158(T)のうちの1つがメモリブロック82(0)の物理アドレス104に対応する(すなわち、キャッシュ「ヒット」)場合、CMC36は、メモリブロック82(0)のためのCI160(0)などのCIインジケータを含むCIキャッシュエントリ158(0)を識別している。したがって、CMC36は、矢印178によって示されるように、CIキャッシュエントリ158(0)のCI160(0)を生成されたCI120で更新する。CMC36は、次に、矢印180によって示されるように、メモリライン80(0)内のメモリブロック82(0)〜82(Z)のうちの1つまたは複数に書込みデータ118を書き込む。CMC36はまた、矢印182によって示されるように、書込みデータ118が書き込まれたメモリブロック82(0)〜82(Z)のうちの1つまたは複数のECCビット86(0)〜86(Z)のうちの1つまたは複数内に生成されたCI120を書き込む。いくつかの態様によれば、生成されたCI120は、第1のメモリブロック82(0)に書込みデータ118を書き込むのと同じメモリ書込み動作の一部としてECCビット86(0)内に書き込まれる。
しかしながら、CMC36が、物理アドレス104がCIキャッシュエントリ158(0)〜158(T)のいずれにも対応しないこと(すなわち、キャッシュミス)を決定した場合、CMC36は、矢印184によって示されるように、マスタディレクトリ66内の物理アドレス104に対応する記憶されたCI96(0)を生成されたCI120で更新し得る。CMC36は、次いで、矢印186によって示されるように、新しいCIキャッシュエントリ158(0)としてCIキャッシュ70内にマスタディレクトリメモリブロック94(0)を書き込み得る。いくつかの態様では、新しいCIキャッシュエントリ158(0)としてマスタディレクトリメモリブロック94(0)を書き込む前に、CIキャッシュ70は、最初に、現在のCIキャッシュエントリ158(0)が追い出されなければならないかどうかを決定し得る。そうである場合、CIキャッシュ70は、さらに、現在のCIキャッシュエントリ158(0)がCIキャッシュ70内に書き込まれてから変更されているかどうかを決定し得る。いくつかの態様では、CIキャッシュ70は、現在のCIキャッシュエントリ158(0)に関連付けられたダーティビット(図示せず)が設定されているかどうかをチェックすることによって、CIキャッシュエントリ158(0)が変更されているかどうかを決定し得る。現在のCIキャッシュエントリ158(0)が変更されている場合、CMC36は、新しいCIキャッシュエントリ158(0)としてCIキャッシュ70内にマスタディレクトリメモリブロック94(0)を書き込む前に、矢印188によって示されるように、マスタディレクトリメモリブロック94(0)〜94(Y)のうちの対応する1つに現在のCIキャッシュエントリ158(0)を書き込む。
いくつかの態様では、マスタディレクトリ66は、CMC36によって受信されたメモリ書込み要求114の特定の割合に関するCIキャッシュ70におけるキャッシュミスに応答して更新され得る。したがって、そのような態様では、CMC36は、マスタディレクトリ66内のメモリブロック82(0)のための記憶されたCI96(0)を更新するかどうかを(たとえば、乱数発生器(図示せず)に基づいて)確率的に決定し得る。そうでない場合、キャッシュミスに関して上記で説明した動作は、省略される(すなわち、マスタディレクトリ66もCIキャッシュ70のいずれも更新されず、生成されたCI120は、メモリブロック82(0)〜82(Z)のうちの1つまたは複数のECCビット86(0)〜86(Z)内に記憶される)。
図10A〜図10Cは、図9Aおよび図9BのCIキャッシュ70を使用して図3のCMC36によってメモリ読出し動作を実行するための例示的な動作を示すフローチャートである。具体的には、図10Aは、メモリ読出し要求102を受信し、メモリ読出し要求102の物理アドレス104に対応するCI160(0)のためのCIキャッシュ70の検索がヒットまたはミスのいずれをもたらすのかを決定する動作を示す。図10Bは、CIキャッシュ70上でキャッシュミスの結果として実行される動作を示し、図10Cは、CIキャッシュ70上でキャッシュヒットの結果として実行される動作を示す。図2、図3、および図9Aの要素は、明確化のために、図10A〜図10Cを説明する際に参照される。
図10Aにおける動作は、CMC36が、内部システムバス22を介して、システムメモリ38内のメモリライン80(0)内のアクセスされるべきメモリブロック82(0)の物理アドレス104を備えるメモリ読出し要求102を受信することで開始する(ブロック190)。いくつかの態様では、CMC36は、後続の動作と同時に、システムメモリ38に早期メモリ読出し要求174を送信し得る(ブロック192)。CMC36は、いくつかの態様によれば、後続の動作と同時に、図5のL4キャッシュ78などのL4キャッシュ上のキャッシュ読出し動作を実行し得る(ブロック194).決定は、次いで、L4キャッシュ78上のキャッシュ読出し動作がキャッシュヒットをもたらしたかどうかに関してなされる(ブロック195)。そうである場合、キャッシュ読出し動作の結果は、返され、システムメモリ38への読出しは意味がなくなる(be rendered moot)(ブロック196)。
CMC36は、次に、物理アドレス104がCIキャッシュ70の複数のCIキャッシュエントリ158(0)〜158(T)のCIキャッシュエントリ158(0)に対応するかどうかを決定する(ブロック197)。CMC36が、決定ブロック196において、物理アドレス104が複数のCIキャッシュエントリ158(0)〜158(T)のCIキャッシュエントリ158(0)に対応しないこと(すなわち、キャッシュミス)を決定した場合、処理は、図10Bのブロック198において再開する。物理アドレス104が、CIキャッシュエントリ158(0)に対応する(すなわち、キャッシュヒット)と決定された場合、処理は、図10Cのブロック200において再開する。
ここで図10Bを参照すると、いくつかの態様におけるCMC36は、キャッシュミスに応答して、CI96(0)がマスタディレクトリ66から読み出されるべきかどうかを確率的に決定し得る(ブロック198)。そのような態様では、メモリブロック82(0)〜82(Z)、84(0)〜84(Z)のうちの1つまたは複数のECCビット86(0)〜86(Z)、88(0)〜88(Z)は、CI90(0)〜90(Z)、92(0)〜92(Z)を記憶することになることに留意されたい。確率的決定は、非限定的な例として、乱数発生器を使用してなされ得る。決定ブロック198において、CI96(0)がマスタディレクトリ66から読み出されるべきであると決定された場合、CMC36は、システムメモリ38内のマスタディレクトリ66から物理アドレス104に対応するCI96(0)を含むマスタディレクトリメモリブロック94(0)を読み出す(ブロック202)。CMC36が、決定ブロック198において、CI96(0)がマスタディレクトリ66から読み出されるべきではないと決定した場合、CMC36は、メモリブロック82(0)を読み出すとともに、1つまたは複数のECCビット86(0)からCI90(0)を読み出す(ブロック204)。処理は、次いで、図10Cのブロック214において再開する。
図10Bを続けて参照すると、いくつかの態様によるCMC36は、次に、CIキャッシュ70の現在のCIキャッシュエントリ158(0)が追い出されるべきであるかどうかを決定し得る(ブロック206)。そうでない場合、処理は、図10Bのブロック208において再開する。CMC36が、決定ブロック206において、現在のCIキャッシュエントリ158(0)が追い出されるべきであると決定した場合、CMC36は、次に、現在のCIキャッシュエントリ158(0)が修正されているかどうかを決定する(ブロック210)。この決定は、非限定的な例として、CIキャッシュエントリ158(0)のためのダーティビットが設定されているかどうかを決定することに基づき得る。現在のCIキャッシュエントリ158(0)が決定ブロック210において変更されていないと決定された場合、処理は、図10Bのブロック208において再開する。そうでない場合、CMC36は、マスタディレクトリ66に現在のCIキャッシュエントリ158(0)を書き込む(ブロック212)。マスタディレクトリメモリブロック94(0)は、次いで、CIキャッシュ70のCIキャッシュエントリ158(0)に書き込まれる(ブロック208)。処理は、次いで、図10Cのブロック200において再開する。
ここで図10Cを見ると、CMC36は、CIキャッシュ70のCIキャッシュエントリ158(0)からCI160(0)を読み出す(ブロック200)。CMC36は、次に、CI160(0)に基づいて、メモリ読出し要求102のために読み出すシステムメモリ38内のメモリライン80(0)内のメモリブロック82(0)〜82(Z)の数を決定する(ブロック214)。CMC36は、次いで、物理アドレス104において開始するシステムメモリ38内のメモリライン80(0)内の決定された数のメモリブロック82(0)〜82(Z)を読み出す(ブロック216)。早期メモリ読出し要求174が発行された態様では、決定された数のメモリブロック82(0)〜82(Z)を読み出すためのブロック216の動作は、CI160(0)に基づいて早期メモリ読出し要求174を修正することを含み得る(ブロック218)。
図8のCIキャッシュ70を使用して図3のCMC36によるメモリ書込み動作を実行するための例示的な動作を説明するために、図11A〜図11Cが提供される。図11Aは、メモリ書込み要求114を受信するための動作と、メモリ書込み要求114の物理アドレス104に対応するCIキャッシュエントリ158(0)〜158(T)のためのCIキャッシュ70の検索がヒットまたはミスのいずれをもたらすのかを決定する動作とを示す。図11Bは、CIキャッシュ70におけるキャッシュミスの結果として行われる動作を示し、図11Cは、CIキャッシュ70におけるキャッシュヒットの結果として行われる動作を示す。図2、図3、および図9Bの要素は、明確化のために、図11A〜図11Cを説明する際に参照される。
図11Aでは、動作は、CMC36が、内部システムバス22を介して、書込みデータ118と、システムメモリ38内のメモリライン80(0)内に書き込まれるべきメモリブロック82(0)の物理アドレス104とを備えるメモリ書込み要求114を受信することで開始する(ブロック220)。CMC36は、書込みデータ118のための圧縮パターンを決定する(ブロック222)。いくつかの態様では、圧縮パターンは、書込みデータ118が圧縮されているかもしくは圧縮されていないか、および/または、書込みデータ118によって占有されるメモリブロック82(0)〜82(Z)の数を示し得る。圧縮パターンに基づいて、CMC36は、圧縮パターンに基づいて書込みデータ118のためのCI120を生成する(ブロック224)。
CMC36は、次に、物理アドレス104がCIキャッシュ70の複数のCIキャッシュエントリ158(0)〜158(T)のCIキャッシュエントリ158(0)に対応するかどうかを決定する(ブロック226)。物理アドレス104が決定ブロック226において複数のCIキャッシュエントリ158(0)〜158(T)のCIキャッシュエントリ158(0)に対応しない(すなわち、キャッシュミス)と決定された場合、処理は、図11Bのブロック228において再開する。しかしながら、CMC36が、決定ブロック226において、物理アドレス104がCIキャッシュエントリ158(0)に対応する(すなわち、キャッシュヒット)と決定した場合、処理は、図11Cのブロック230において再開する。
ここで図11Bを参照すると、CMC36のいくつかの態様は、CI96(0)がマスタディレクトリ66内で更新されるべきであるかどうかを確率的に決定し得る(ブロック228)。決定ブロック228において、CI96(0)が更新されるべきではないと決定された場合、処理は、図11Cのブロック242において再開する。しかしながら、CMC36が決定ブロック228においてCI96(0)を更新することを決定した場合、または、CMC36が確率的決定を使用するように構成されていない場合、CMC36は、マスタディレクトリ66内の物理アドレス104に対応する記憶されたCI96(0)を生成されたCI120で更新する(ブロック232)。
いくつかの態様では、CMC36は、次に、CIキャッシュ70の現在のCIキャッシュエントリ158(0)が排除されるべきであるかどうかを決定し得る(ブロック234)。そうでない場合、処理は、図11Bのブロック236において再開する。CMC36が、決定ブロック234において、現在のCIキャッシュエントリ158(0)が排除されるべきであると決定した場合、CMC36は、現在のCIキャッシュエントリ158(0)が修正されているかどうかを決定する(ブロック238)。CIキャッシュエントリ158(0)が修正されているかどうかを決定することは、非限定的な例として、CIキャッシュエントリ158(0)のダーティビットが設定されているかどうかを決定することを備え得る。現在のCIキャッシュエントリ158(0)が決定ブロック238において変更されていないと決定された場合、処理は、図11Bのブロック236において再開する。しかしながら、CMC36が決定ブロック238において現在のCIキャッシュエントリ158(0)が修正されていると決定した場合、CMC36は、マスタディレクトリ66に現在のCIキャッシュエントリ158(0)を書き込む(ブロック240)。CMC36は、次いで、CIキャッシュ70のCIキャッシュエントリ158(0)に、記憶されたCI96(0)を書き込む(ブロック236)。処理は、図11Cのブロック242において再開する。
図11Cにおいて、CMC36は、CIキャッシュ70のCIキャッシュエントリ158(0)を、生成されたCI120で更新する(ブロック230)。CMC36は、次いで、生成されたCI120に基づいて、システムメモリ38内のメモリライン80(0)内の1つまたは複数のメモリブロック82(0)〜82(Z)に書込みデータ118を書き込む(ブロック242)。生成されたCI120は、システムメモリ38のメモリライン80(0)内の1つまたは複数のメモリブロック82(0)〜82(Z)の各々の1つまたは複数のECCビット86(0)〜86(Z)内に書き込まれる(ブロック244)。いくつかの態様では、生成されたCI120は、第1のメモリブロック82(0)に書込みデータ118を書き込むのと同じメモリ書込み動作の一部としてECCビット86(0)内に書き込まれる。
上述したように、圧縮化を最適化する特別な場合として、構成可能な固定データパターンを有するメモリデータブロック82(0)〜82(Z)の圧縮を提供することが望ましい場合がある。たとえば、メモリデータブロック82(0)〜82(Z)(たとえば、128バイト)がすべて0である場合、データは、読み出されない、または書き込まれないが、すべて0として別個のデータ構造において示される。0ビットは、メモリライン80(0)〜80(X)が圧縮されているかどうかを示すために、システムメモリ38内に設けられ得、したがって、メモリデータブロック82(0)〜82(Z)ごとに1ビット追加する。CMC36は、たとえば、いくつかの128バイトメモリブロック82(0)〜82(Z)のために、ブロックがすべて0であるかどうかを記憶しているキャッシュを維持し得る。書込み動作について、メモリデータブロック82(0)〜82(Z)がすべて0である場合、CMC36は、システムメモリ38にラインを書き込まないが、CIキャッシュ70は、更新される。読出し動作について、CIキャッシュ70内のゼロビットは、ラインに関してチェックされる。ラインがCIキャッシュ70内にある場合、ゼロビットに応じて、ラインがシステムメモリ38から読み出されるか、またはすべて0が返される。ラインがCIキャッシュ70内にない場合、それは、システムメモリ38から読み出される。ラインがゼロである場合、CIキャッシュ70は、更新され得る。
CIキャッシュ70は、公知の技術(LRU、疑似LRUなど)に従って、キャッシュライン74を追い出すために更新され得る。ラインが追い出された場合、それらのゼロビットが設定されているすべてのラインは、メインメモリに書き込まれる必要がある。これは、ライトオールゼロキュー(write-all-zeros queue)として編成され得る。可能な最適化は、2ビットを使用することであり、1つのビットは、ラインがすべてゼロであるかどうかを示し、別のビットは、ラインがダーティである(すなわち、まだメインメモリに書き込まれていない)かどうかを示す。CMC36のバックグラウンドタスクは、CIキャッシュ70を検査し得、「ライトオールゼロ」キュー内のダーティビットでラインを待ち行列に入れ得る。上記で説明したメモリ帯域幅圧縮機構とともに、異なるメモリ圧縮機構が、所望のようにCMC36によって用いられ得る。たとえば、上記の例において説明したキャッシュライン74は、例としてそれらのサイズを含むので、64、128、および256バイトなどの小さいデータブロックに対して最適化されたメモリ圧縮機構を用いることが望ましい可能性がある。
いくつかの態様では、複数のビットを備えるCIの値は、メモリブロック82(0)〜82(Z)のうちの1つなどのメモリブロック内に記憶された圧縮状態および/または固定データパターンを示し得る。非限定的な例として、2ビットのCIについて、「00」の値は、対応するメモリブロックが圧縮されていないことを示し得、「01」の値は、対応するメモリブロックが圧縮されていることを示し得る。「11」の値は、固定パターン(たとえば、すべて0またはすべて1)が対応するメモリブロック内に記憶されていることを示し得る。そのような態様では、マスタディレクトリ66は、確率的決定に対する更新された対象ではなく、常に更新されることになる。
この点について、図12は、頻出パターン圧縮データ圧縮機構246を示す。この点について、圧縮されるべきソースデータフォーマット248内のソースデータは、128バイトとして例によって示される。圧縮データフォーマット250を以下に示す。圧縮データフォーマット250は、プリフィックスコードPx、およびDataxとしてプリフィックスの後ろにあるデータのフォーマットにおいて提供される。プリフィックスは、3ビットである。プリフィックスコードは、頻出パターン符号化テーブル254内のプリフィックスコード列252において示されており、頻出パターン符号化テーブル254は、プリフィックスコード列252内の所与のプリフィックスコードのためのパターン符号化列256において符号化されたパターンを示す。符号化されたパターンに関するデータサイズは、頻出パターン符号化テーブル254のデータサイズ列258において提供される。
図13は、32ビット頻出パターン圧縮データ圧縮機構260を示す。この点について、圧縮されるべきソースデータフォーマット262内のソースデータは、128バイトとして例によって示されている。圧縮データフォーマット264を以下に示す。圧縮データフォーマット264は、プリフィックスPx、およびDataxとしてプリフィックスの直後にあるデータのフォーマットにおいて提供される。新しい圧縮データフォーマット266は、効率の目的のために一緒にグループ化されるように編成される、プリフィックスコードPx、データDatax、フラグ、およびパターンの異なるフォーマットにおいて提供される。プリフィックスコードは、3ビットである。プリフィックスコードは、頻出パターン符号化テーブル270内のプリフィックスコード列268において示されており、頻出パターン符号化テーブル270は、プリフィックスコード列268内の所与のプリフィックスコードのためのパターン符号化列272において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル270のデータサイズ列274において提供される。プリフィックスコード000は、新しい圧縮データフォーマット266内の32ビットのフルサイズのデータとなる非圧縮パターンを意味する。プリフィックスコード001は、すべてゼロのデータブロックを意味し、それは、新しい圧縮データフォーマット266のデータ内の0ビットとして提供され得る。3ビットプリフィックスでは、プリフィックスコード010〜111は、この例では、それぞれ、0、4、8、12、16、および24ビットのパターンである、ソースデータ内で認識される他の特定のパターンを符号化するために使用され得る。
図14は、32ビット頻出パターン圧縮データ圧縮機構276の一例を示す。この点について、圧縮されるべきソースデータフォーマット278内のソースデータは、128バイトとして例によって示されている。圧縮データフォーマット280を以下に示す。圧縮データフォーマット280は、プリフィックスPx、およびDataxとしてプリフィックスの後ろにあるデータのフォーマットにおいて提供される。新しい圧縮データフォーマット282は、効率の目的のために一緒にグループ化されるように編成される、プリフィックスコードPx、データDatax、フラグ、およびパターンの異なるフォーマットにおいて提供される。プリフィックスコードは、3ビットである。プリフィックスコードは、頻出パターン符号化テーブル286内のプリフィックスコード列284において示されており、頻出パターン符号化テーブル286は、プリフィックスコード列284内の所与のプリフィックスコードのためのパターン符号化列288において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル286のデータサイズ列290において提供される。プリフィックスコード000は、新しい圧縮データフォーマット282内の32ビットのフルサイズのデータとなる非圧縮パターンを意味する。プリフィックスコード001は、すべてゼロのデータブロックを意味し、それは、新しい圧縮データフォーマット282のデータ内の0ビットとして提供され得る。プリフィックスコード010は、特定のパターンであり、したがって、新しい圧縮データフォーマット282による圧縮データにおいて0ビットのデータサイズを必要とするパターン0xFFFFFFFFを意味する。他のパターンは、プリフィックスコード011〜111のための頻出パターン符号化テーブル286内に示されている。新しい圧縮データフォーマット282内のフラグフィールドは、プリフィックスコード001〜111のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するのかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために考慮に入れられ得る新しい圧縮データフォーマット282内に記憶される。データフィールドは、新しい圧縮データフォーマット282内のデータフィールドに関連付けられたプリフィックスコードに従って圧縮データを含む。
図15は、64ビット頻出パターン圧縮データ圧縮機構292の別の例を示す。この点について、圧縮されるべきソースデータフォーマット294内のソースデータは、128バイトとして例によって示されている。新しい圧縮データフォーマット296は、効率の目的のために一緒にグループ化されるように編成される、プリフィックスコードPx、データDatax、フラグ、およびパターンの異なるフォーマットにおいて提供される。プリフィックスコードは、4ビットである。プリフィックスコードは、頻出パターン符号化テーブル302内のプリフィックスコード列298、300において示されており、頻出パターン符号化テーブル302は、プリフィックスコード列298、300内の所与のプリフィックスコードのためのパターン符号化列304、306において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル302のデータサイズ列308、310において提供される。プリフィックスコード0000は、すべてゼロのデータブロックを意味し、それは、新しい圧縮データフォーマット296のデータ内の0ビットとして提供され得る。他のパターンは、ASCIIパターンを頻繁に生じるためのASCIIパターンを含むプリフィックスコード0001〜1111のための頻出パターン符号化テーブル302内に示されている。新しい圧縮データフォーマット296内のフラグフィールドは、プリフィックスコード0001〜1111のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するのかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために考慮に入れられ得る新しい圧縮データフォーマット296内に記憶される。データフィールドは、新しい圧縮データフォーマット296内のデータフィールドに関連付けられたプリフィックスコードに従って圧縮データを含む。
図16は、64ビット頻出パターン圧縮データ圧縮機構312の別の例を示す。この点について、圧縮されるべきソースデータフォーマット314内のソースデータは、128バイトとして例によって示されている。新しい圧縮データフォーマット316は、効率の目的のために一緒にグループ化されるように編成される、プリフィックスコードPx、データDatax、フラグ、およびパターンの異なるフォーマットにおいて提供される。プリフィックスコードは、4ビットである。プリフィックスコードは、頻出パターン符号化テーブル322内のプリフィックスコード列318、320において示されており、頻出パターン符号化テーブル322は、プリフィックスコード列318、320内の所与のプリフィックスコードのためのパターン符号化列324、326において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル322のデータサイズ列328、330において提供される。プリフィックスコード0000は、すべてゼロのデータブロックを意味し、それは、新しい圧縮データフォーマット316のデータ内の0ビットとして提供され得る。他のパターンは、固定パターンの組合せを含み得るプリフィックスコード0001〜1111のための頻出パターン符号化テーブル322内に示されている。新しい圧縮データフォーマット316内のフラグフィールドは、プリフィックスコード0001〜1111のためのどのパターンが圧縮データ内のデータ部分(すなわち、Datax)内に存在するのかを示す。パターンが圧縮データ内に存在する場合、パターンは、新しい圧縮データフォーマット316内に記憶され、それは次いで、非圧縮データを再作成するためにデータ圧縮中に考慮に入れられ得る。プリフィックスコードP0〜P31は、非圧縮フォーマットにおいて完全な長さのデータを再作成するために対応するデータ(Datax)と一緒に使用されるパターンにリンクし得る。データフィールドは、新しい圧縮データフォーマット316内のデータフィールドに関連付けられたプリフィックスコードに従って圧縮データを含む。
図16内の頻出パターン圧縮データ圧縮機構312で使用され得る固定パターンの例は、図17内のテーブル332に示されており、そこで、固定パターンは、パターン列334内に与えられ、その長さは、長さ列336内に与えられ、パターンの定義は、パターン定義列338内に与えられている。フラグの定義は、CMC36がプリフィックスコードにリンクされた所与のパターンを、非圧縮データを作成するために使用される定義に相関させることを可能にするために、フラグ定義テーブル340内に示されている。フラグ定義テーブル340は、フラグ列342内の所与のフラグのためのビットと、フラグ値列344内の所与のフラグのためのビットの値と、フラグ定義列346内の所与のフラグのためのフラグの定義とを含む。
図18は、64ビット頻出パターン圧縮データ圧縮機構348の別の例を示す。この点について、圧縮されるべきソースデータフォーマット350内のソースデータは、128バイトとして例によって示されている。新しい圧縮データフォーマット352は、効率の目的のために一緒にグループ化されるように編成される、プリフィックスコードPx、データDatax、フラグ、およびパターンの異なるフォーマットにおいて提供される。プリフィックスコードは、4ビットである。プリフィックスコードは、頻出パターン符号化テーブル358内のプリフィックスコード列354、356において示されており、頻出パターン符号化テーブル358は、プリフィックスコード列354、356内の所与のプリフィックスコードのためのパターン符号化列360、362において符号化されたパターンを示す。符号化されたパターンのためのデータサイズは、頻出パターン符号化テーブル358のデータサイズ列364、366において提供される。プリフィックスコード0000は、すべてゼロのデータブロックを意味し、それは、新しい圧縮データフォーマット352のデータ内の0ビットとして提供され得る。プリフィックスコード1111は、新しい圧縮データフォーマット352において圧縮されていないデータブロックを意味する。他のパターンは、そこに示されているように定義されたパターンの組合せを含み得るプリフィックスコード0001〜1110のための頻出パターン符号化テーブル358内に示されている。新しい圧縮データフォーマット352内のフラグフィールドは、プリフィックスコード0000〜1110のためのどのパターンが圧縮データのデータ部分(すなわち、Datax)内に存在するのかを示す。パターンが圧縮データ内に存在する場合、パターンは、次いで非圧縮データを再作成するために考慮され得る新しい圧縮データフォーマット352内に記憶される。この例では、ソースデータ内に存在するプリフィックスコード0000〜1110内で説明されるパターンのみが存在したので、新しい圧縮データフォーマット352は、パターン0〜5のみを含むものとして示されている。データフィールドは、新しい圧縮データフォーマット352内のデータフィールドに関連付けられたプリフィックスコードに従って圧縮データを含む。
本明細書で開示した態様によるCPU搭載システム内のCMCを使用してメモリ帯域幅の圧縮を提供することは、任意のプロセッサ搭載デバイス内で提供され得る、または任意のプロセッサ搭載デバイス内に統合され得る。例は、限定はしないが、セットトップボックス、娯楽ユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤを含む。
この点について、図19は、図2のCMC36で図2のSoC10'を用いることができるプロセッサ搭載システム368の一例を示す。この例では、プロセッサ搭載システム368は、1つまたは複数のプロセッサ372を各々が含む1つまたは複数のCPU370を含む。CPU370は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ372に結合されたキャッシュメモリ374を有し得る。CPU370は、システムバス376に結合され、プロセッサ搭載システム368内に含まれるデバイスを相互に結合することができる。周知のように、CPU370は、システムバス376を介して、アドレス、制御、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU370は、スレーブデバイスの一例としてメモリコントローラ378にバストランザクション要求を通信することができる。図19に示されていないが、複数のシステムバス376を設けることができる。
他のデバイスは、システムバス376に接続され得る。図19に示されるように、これらのデバイスは、例として、メモリシステム380、1つまたは複数の入力デバイス382、1つまたは複数の出力デバイス384、1つまたは複数のネットワークインターフェースデバイス386、および1つまたは複数のディスプレイコントローラ388を含むことができる。入力デバイス382は、限定はしないが、入力キー、スイッチ、音声プロセッサ等を含む、任意のタイプの入力デバイスを含むことができる。出力デバイス384は、限定はしないが、音声、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス386は、ネットワーク390との間でデータを交換することを可能にするように構成された任意のデバイスであり得る。ネットワーク390は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたはパブリックネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク、ワイヤレスローカルエリアネットワーク、BLUETOOTH(登録商標)(BT)、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス386は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム380は、1つまたは複数のメモリユニット392(0)〜392(N)を含むことができる。
CPU370はまた、1つまたは複数のディスプレイ394に送られる情報を制御するために、システムバス376を介してディスプレイコントローラ388にアクセスするように構成され得る。ディスプレイコントローラ388は、1つまたは複数のビデオプロセッサ396を介して表示されるように情報をディスプレイ394に送り、1つまたは複数のビデオプロセッサ396は、表示されるべき情報をディスプレイ394に適したフォーマットに処理する。ディスプレイ394は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
当業者は、さらに、本明細書で開示した態様に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェアとして、メモリもしくは別のコンピュータ可読媒体内に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、または両方の組合せとして実装され得ることを理解するであろう。本明細書に記載のデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内で用いられ得る。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリとすることができ、所望の任意のタイプの情報を記憶するように構成することができる。この互換性を明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、それらの機能の観点から一般的に上記で説明されている。そのような機能がどのように実現されるかは、特定の用途、設計上の選択、および/または、システム全体に課された設計上の制約によって決まる。当業者は、説明した機能を各特定の用途のための様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書で開示した態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または、本明細書に記載の機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
本明細書で開示した態様は、ハードウェアおよびハードウェア内に記憶された命令において具体化され得、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読出し専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当該技術分野で公知の任意の他の形態のコンピュータ可読媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替では、記憶媒体は、プロセッサと一体であり得る。プロセッサおよび記憶媒体は、ASIC内に存在し得る。ASICは、遠隔局内に存在し得る。代替では、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ内に個別構成要素として存在し得る。
また、本明細書で例示的な態様のいずれかにおいて説明した動作ステップは、例および説明を提供するために説明されていることに留意されたい。説明した動作は、図示した順序以外の多数の異なる順序で実行され得る。さらに、単一の動作ステップで説明した動作は、実際にはいくつかの異なるステップで実行され得る。加えて、例示的な態様において論じた1つまたは複数の動作ステップは、組み合わされ得る。当業者には容易に明らかになるように、フローチャート図に示す動作ステップは、多数の異なる修正を受ける場合があることを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表され得ることを理解するであろう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場または光学粒子、またはそれらの任意の組合せによって表され得る。
本開示の上記の説明は、当業者が本開示を製作または使用することを可能にするために提供される。本開示に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義された一般的な原理は、本開示の要旨または範囲から逸脱することなく、他の変形例に適用され得る。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
10' SoC
10" SoC
12' CPU搭載システム
14(1)〜14(N) CPUブロック
16(1)、16(2) CPU
18(1)〜18(N) 共有L2キャッシュ
20 共有L3キャッシュ
22 内部システムバス
24 メモリコントローラ
26 周辺機器
28 ストレージ
30 エクスプレス周辺機器構成要素相互接続(PCI)(PCI-e)インターフェース
32 ダイレクトメモリアクセス(DMA)コントローラ
34 統合メモリコントローラ(IMC)
36 CMC
38 システムメモリ
40(1)〜40(R) 二重データレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)
44 半導体ダイ
46(1)、46(2) 半導体ダイ
48(1)〜48(P) メモリインターフェース(MEM I/F)
50 圧縮コントローラ
52 ローカルメモリ
54 スタティックランダムアクセスメモリ(SRAM)
55 L4コントローラ
56 内部メモリ
58 内部メモリコントローラ
60 メモリ帯域幅圧縮機構
62 メモリライン
64 CI
66 マスタディレクトリ
68 エントリ
70 CIキャッシュ
72 キャッシュエントリ
74 キャッシュライン
76 CI
78 L4キャッシュ
80(0)〜80(X) メモリライン
82(0)〜82(Z) メモリブロック
84(0)〜84(Z) メモリブロック
86(0)〜86(Z) ECCビット
88(0)〜88(Z) ECCビット
90(0)〜90(Z) CI
92(0)〜92(Z) CI
94(0)〜94(Y) マスタディレクトリメモリブロック
96(0)〜96(W) CI
98(0)〜98(W) CI
100(0)〜100(W) CI
102 メモリ読出し要求
104 物理アドレス
106 矢印
108 矢印
110 矢印
112 破線の矢印
114 メモリ書込み要求
116 矢印
118 書込みデータ
120 CI
122 矢印
124 矢印
126 矢印
158(0)〜158(T) CIキャッシュエントリ
160(0)〜160(W) キャッシュされたCI
162(0)〜162(W) キャッシュされたCI
164(0)〜164(W) キャッシュされたCI
166 矢印
168 矢印
170 破線の矢印
172 矢印
174 早期メモリ読出し要求
176 矢印
178 矢印
180 矢印
182 矢印
184 矢印
186 矢印
246 頻出パターン圧縮データ圧縮機構
248 ソースデータフォーマット
250 圧縮データフォーマット
252 プリフィックスコード列
254 頻出パターン符号化テーブル
256 パターン符号化列
258 データサイズ列
260 32ビット頻出パターン圧縮データ圧縮機構
262 ソースデータフォーマット
264 圧縮データフォーマット
266 新しい圧縮データフォーマット
268 プリフィックスコード列
270 頻出パターン符号化テーブル
272 パターン符号化列
274 データサイズ列
276 32ビット頻出パターン圧縮データ圧縮機構
278 ソースデータフォーマット
280 圧縮データフォーマット
282 新しい圧縮データフォーマット
284 プリフィックスコード列
286 頻出パターン符号化テーブル
288 パターン符号化列
290 データサイズ列
292 64ビット頻出パターン圧縮データ圧縮機構
294 ソースデータフォーマット
296 新しい圧縮データフォーマット
298 プリフィックスコード列
300 プリフィックスコード列
302 頻出パターン符号化テーブル
304 パターン符号化列
306 パターン符号化列
308 データサイズ列
310 データサイズ列
312 64ビット頻出パターン圧縮データ圧縮機構
314 ソースデータフォーマット
316 新しい圧縮データフォーマット
318 プリフィックスコード列
320 プリフィックスコード列
322 頻出パターン符号化テーブル
324 パターン符号化列
326 パターン符号化列
328 データサイズ列
330 データサイズ列
332 テーブル
334 パターン列
336 長さ列
338 パターン定義列
340 フラグ定義テーブル
342 フラグ列
344 フラグ値列
346 フラグ定義列
348 64ビット頻出パターン圧縮データ圧縮機構
350 ソースデータフォーマット
352 新しい圧縮データフォーマット
354 プリフィックスコード列
356 プリフィックスコード列
358 頻出パターン符号化テーブル
360 パターン符号化列
362 パターン符号化列
364 データサイズ列
366 データサイズ列
368 プロセッサ搭載システム
370 CPU
372 プロセッサ
374 キャッシュメモリ
376 システムバス
378 メモリコントローラ
380 メモリシステム
382 入力デバイス
384 出力デバイス
386 ネットワークインターフェースデバイス
388 ディスプレイコントローラ
390 ネットワーク
392(0)〜392(N) メモリユニット
394 ディスプレイ
396 ビデオプロセッサ

Claims (12)

  1. システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースと、
    前記システムメモリ内のマスタディレクトリの以前に読み出されたマスタディレクトリメモリブロックを記憶するように各々が構成された複数のCIキャッシュエントリを備える圧縮インジケータ(CI)キャッシュと
    を備える圧縮メモリコントローラであって、
    前記システムメモリ内のメモリライン内のアクセスされるべきメモリブロックの物理アドレスを備えるメモリ読出し要求を受信し、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応するかどうかを決定し、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応しないことを決定することに応答して、
    前記マスタディレクトリから前記物理アドレスに対応するCIを含むマスタディレクトリメモリブロックを読み出し、
    前記CIキャッシュのCIキャッシュエントリに前記マスタディレクトリメモリブロックを書き込み、
    前記CIキャッシュの前記CIキャッシュエントリから前記CIを読出し、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応することを決定することに応答して、前記CIキャッシュの前記CIキャッシュエントリから前記CIを読み出し、
    前記CIに基づいて、前記メモリ読出し要求のために読み出す前記システムメモリ内の前記メモリライン内のメモリブロックの数を決定し、
    前記CIが前記マスタディレクトリから読み出されるべきであることを確率的に決定することに応答して、前記物理アドレスにおいて開始する前記システムメモリ内の前記メモリライン内の前記決定された数のメモリブロックを読み出すように構成され
    前記CIが前記マスタディレクトリから読み出されるべきではないことを確率的に決定することに応答して、前記メモリブロックに関連付けられた1つまたは複数の誤り訂正コード(ECC)ビットから前記CIを読み出すようさらに構成された、圧縮メモリコントローラ。
  2. 前記CIキャッシュの前記CIキャッシュエントリに前記マスタディレクトリメモリブロックを書き込む前に、
    前記CIキャッシュの現在のCIキャッシュエントリが追い出されるべきであるかどうかを決定し、
    現在のCIキャッシュエントリが追い出されるべきであることを決定することに応答して、
    前記現在のCIキャッシュエントリが修正されているかどうかを決定し、
    前記現在のCIキャッシュエントリが修正されていることを決定することに応答して、前記マスタディレクトリに前記現在のCIキャッシュエントリを書き込むようにさらに構成された、請求項1に記載の圧縮メモリコントローラ。
  3. 前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちの前記CIキャッシュエントリに対応するかどうかを決定することに並行して、前記システムメモリに早期メモリ読出し要求を送信するようにさらに構成され、
    前記圧縮メモリコントローラが、前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちの前記CIキャッシュエントリに対応することを決定することに応答して、前記CIに基づいて前記早期メモリ読出し要求を修正するように構成されていることによって、前記決定された数のメモリブロックを読み出すように構成された、請求項1に記載の圧縮メモリコントローラ。
  4. 前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちの前記CIキャッシュエントリに対応するかどうかを決定することに並行して、レベル4(L4)キャッシュ上のキャッシュ読出し動作を実行するようにさらに構成された、請求項1に記載の圧縮メモリコントローラ。
  5. 前記CIによって示された圧縮パターンを決定するように構成されていることによって、前記CIに基づいて、前記メモリ読出し要求のために読み出す前記システムメモリ内の前記メモリライン内のメモリブロックの前記数を決定するように構成された、請求項1に記載の圧縮メモリコントローラ。
  6. 前記CIが、ゼロのメモリブロックが読み出されるべきであることを示すゼロラインインジケータを備えることを決定するように構成されていることによって、前記CIによって示される前記圧縮パターンを決定するように構成された、請求項5に記載の圧縮メモリコントローラ。
  7. システムバスを介してシステムメモリにアクセスするように構成されたメモリインターフェースと、
    前記システムメモリ内のマスタディレクトリの以前に読み出されたマスタディレクトリメモリブロックを記憶するように各々が構成された複数のCIキャッシュエントリを備える圧縮インジケータ(CI)キャッシュと
    を備える圧縮メモリコントローラであって、
    書込みデータと、前記システムメモリ内のメモリライン内の書き込まれるべきメモリブロックの物理アドレスとを備えるメモリ書込み要求を受信し、
    前記書込みデータのための圧縮パターンを決定し、
    前記圧縮パターンに基づいて前記書込みデータのためのCIを生成し、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応するかどうかを決定し、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応しないことを決定することに応答して、
    前記マスタディレクトリ内の前記物理アドレスに対応する記憶されたCIを、前記生成されたCIで更新し、
    前記CIキャッシュのCIキャッシュエントリに前記記憶されたCIを書き込み、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応することを決定することに応答して、
    前記CIキャッシュの前記CIキャッシュエントリを前記生成されたCIで更新し、
    前記生成されたCIに基づいて、前記システムメモリ内の前記メモリライン内の1つまたは複数のメモリブロックに前記書込みデータを書き込み、
    前記システムメモリ内の前記メモリライン内の前記1つまたは複数のメモリブロックの各々の1つまたは複数の誤り訂正コード(ECC)ビット内に前記生成されたCIを書き込むように構成された、圧縮メモリコントローラ。
  8. 前記CIが前記マスタディレクトリ内で更新されるべきであることを確率的に決定することに応答して、前記記憶されたCIを更新するように構成された、請求項7に記載の圧縮メモリコントローラ。
  9. 前記マスタディレクトリが更新されるべきであることを確率的に決定することにさらに応答して、前記記憶されたCIを更新し、前記CIキャッシュの前記CIキャッシュエントリに前記記憶されたCIを書き込むように構成された、請求項7に記載の圧縮メモリコントローラ。
  10. 前記CIキャッシュの前記CIキャッシュエントリに前記記憶されたCIを書き込む前に、
    前記CIキャッシュの現在のCIキャッシュエントリが追い出されるべきかどうかを決定し、
    現在のCIキャッシュエントリが追い出されるべきであると決定することに応答して、
    前記現在のCIキャッシュエントリが修正されているかどうかを決定し、
    前記現在のCIキャッシュエントリが修正されていることを決定することに応答して、前記マスタディレクトリに前記CIキャッシュエントリを書き込むようにさらに構成された、請求項7に記載の圧縮メモリコントローラ。
  11. メモリ読出し要求のためのメモリ帯域幅の圧縮を提供するための方法であって、
    圧縮メモリコントローラによって、システムバスを介して、システムメモリ内のメモリライン内のアクセスされるべきメモリブロックの物理アドレスを備えるメモリ読出し要求を受信するステップと、
    前記物理アドレスが圧縮インジケータ(CI)キャッシュの複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応するかどうかを決定するステップと、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応しないことを決定することに応答して、
    前記システムメモリ内のマスタディレクトリから前記物理アドレスに対応する圧縮インジケータ(CI)を含むマスタディレクトリメモリブロックを読み出すステップと、
    前記CIキャッシュのCIキャッシュエントリに前記マスタディレクトリメモリブロックを書き込むステップと、
    前記CIキャッシュの前記CIキャッシュエントリから前記CIを読み出すステップと、
    前記物理アドレスが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリに対応することを決定することに応答して、
    前記CIキャッシュの前記CIキャッシュエントリから前記CIを読み出すステップと、
    前記CIに基づいて、前記メモリ読出し要求のために読み出す前記システムメモリ内の前記メモリライン内のメモリブロックの数を決定するステップと、
    前記CIが前記マスタディレクトリから読み出されるべきであることを確率的に決定することに応答して、前記物理アドレスにおいて開始する前記システムメモリ内の前記メモリライン内の前記決定された数のメモリブロックを読み出すステップと
    前記CIが前記マスタディレクトリから読み出されるべきではないことを確率的に決定することに応答して、前記メモリブロックに関連付けられた1つまたは複数の誤り訂正コード(ECC)ビットから前記CIを読み出すステップと、
    を備える方法。
  12. メモリ書込み要求のためのメモリ帯域幅の圧縮を提供するための方法であって、
    圧縮メモリコントローラによって、システムバスを介して、書込みデータと、システムメモリ内のメモリライン内の書き込まれるべきメモリブロックの物理アドレスとを備えるメモリ書込み要求を受信するステップと、
    前記書込みデータのための圧縮パターンを決定するステップと、
    前記圧縮パターンに基づいて前記書込みデータのための圧縮インジケータ(CI)を生成するステップと、
    前記物理アドレスに対応するCIがCIキャッシュの複数のCIキャッシュエントリのうちのCIキャッシュエントリ内に存在するかどうかを決定するステップと、
    前記物理アドレスに対応するCIが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリ内に存在しないことを決定することに応答して、
    マスタディレクトリ内の前記物理アドレスに対応する記憶されたCIを前記生成されたCIで更新するステップと、
    前記CIキャッシュのCIキャッシュエントリに前記記憶されたCIを書き込むステップと、
    前記物理アドレスに対応するCIが前記CIキャッシュの前記複数のCIキャッシュエントリのうちのCIキャッシュエントリ内に存在することを決定することに応答して、
    前記CIキャッシュの前記CIキャッシュエントリを前記生成されたCIで更新するステップと、
    前記生成されたCIに基づいて、前記システムメモリ内の前記メモリライン内の1つまたは複数のメモリブロックに前記書込みデータを書き込むステップと、
    前記システムメモリ内の前記メモリライン内の前記1つまたは複数のメモリブロックの各々の1つまたは複数の誤り訂正コード(ECC)ビット内に前記生成されたCIを書き込むステップと
    を備える方法。
JP2016568010A 2014-05-21 2015-05-21 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供 Expired - Fee Related JP6599898B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201462001545P 2014-05-21 2014-05-21
US62/001,545 2014-05-21
US201462092326P 2014-12-16 2014-12-16
US201462092409P 2014-12-16 2014-12-16
US62/092,326 2014-12-16
US62/092,409 2014-12-16
US14/716,001 2015-05-19
US14/716,001 US10838862B2 (en) 2014-05-21 2015-05-19 Memory controllers employing memory capacity compression, and related processor-based systems and methods
US14/717,552 US10503661B2 (en) 2014-05-21 2015-05-20 Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US14/717,552 2015-05-20
PCT/US2015/031913 WO2015179606A1 (en) 2014-05-21 2015-05-21 PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM

Publications (3)

Publication Number Publication Date
JP2017519286A JP2017519286A (ja) 2017-07-13
JP2017519286A5 JP2017519286A5 (ja) 2018-06-14
JP6599898B2 true JP6599898B2 (ja) 2019-10-30

Family

ID=53277113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016568010A Expired - Fee Related JP6599898B2 (ja) 2014-05-21 2015-05-21 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供

Country Status (6)

Country Link
US (1) US10503661B2 (ja)
EP (1) EP3146434B1 (ja)
JP (1) JP6599898B2 (ja)
KR (1) KR20170012233A (ja)
CN (1) CN106462496B (ja)
WO (1) WO2015179606A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740621B2 (en) 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US20160179387A1 (en) * 2014-12-19 2016-06-23 Jayesh Gaur Instruction and Logic for Managing Cumulative System Bandwidth through Dynamic Request Partitioning
US10033411B2 (en) * 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10067706B2 (en) * 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
US10191850B2 (en) * 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10515006B2 (en) * 2016-07-29 2019-12-24 Samsung Electronics Co., Ltd. Pseudo main memory system
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems
US10191682B2 (en) 2016-09-08 2019-01-29 Qualcomm Incorporated Providing efficient lossless compression for small data blocks in processor-based systems
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10061698B2 (en) * 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US11086526B2 (en) * 2018-06-07 2021-08-10 Micron Technology, Inc. Adaptive line width cache systems and methods
SE544272C2 (en) * 2018-11-14 2022-03-22 Zeropoint Tech Ab Accessing compressed computer memory
US11487616B2 (en) * 2019-05-24 2022-11-01 Texas Instruments Incorporated Write control for read-modify-write operations in cache memory
US11023172B2 (en) * 2019-07-26 2021-06-01 Micron Technology, Inc. Selecting read voltage using write transaction data

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2831602B2 (ja) 1995-01-13 1998-12-02 富士通株式会社 圧縮データ管理装置及び圧縮データ管理方法
US5696927A (en) 1995-12-21 1997-12-09 Advanced Micro Devices, Inc. Memory paging system and method including compressed page mapping hierarchy
JPH09259040A (ja) 1996-03-25 1997-10-03 Sharp Corp キャッシュメモリ装置
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6341325B2 (en) 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6353871B1 (en) 1999-02-22 2002-03-05 International Business Machines Corporation Directory cache for indirectly addressed main memory
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
US6735673B2 (en) 2002-01-10 2004-05-11 Hewlett-Packard Development Company, L.P. Apparatus and methods for cache line compression
US6640283B2 (en) 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US6944740B2 (en) 2002-03-27 2005-09-13 International Business Machines Corporation Method for performing compressed I/O with memory expansion technology
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US6981119B1 (en) 2002-08-29 2005-12-27 Advanced Micro Devices, Inc. System and method for storing performance-enhancing data in memory space freed by data compression
JP3808058B2 (ja) 2003-05-27 2006-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置
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
US7702964B2 (en) * 2004-05-11 2010-04-20 Qualcomm Incorporated Compression of data traces for an integrated circuit with multiple memories
US7225297B2 (en) 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7636813B2 (en) 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
US8122216B2 (en) 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8554880B2 (en) * 2008-03-07 2013-10-08 JVC Kenwood Corporation System for classification, location and transmission of music playlists
US8595437B1 (en) 2008-11-21 2013-11-26 Nvidia Corporation Compression status bit cache with deterministic isochronous latency
US8700862B2 (en) 2008-12-03 2014-04-15 Nvidia Corporation Compression status bit cache and backing store
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
TWI435215B (zh) 2009-08-26 2014-04-21 Phison Electronics Corp 下達讀取指令與資料讀取方法、控制器與儲存系統
US8341380B2 (en) 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
US8627041B2 (en) 2009-10-09 2014-01-07 Nvidia Corporation Efficient line and page organization for compression status bit caching
JP2013530448A (ja) * 2010-05-05 2013-07-25 マーベル ワールド トレード リミテッド キャッシュストレージアダプタアーキテクチャ
US8880847B2 (en) * 2010-09-28 2014-11-04 Texas Instruments Incorporated Multistream prefetch buffer
US8683135B2 (en) * 2010-10-31 2014-03-25 Apple Inc. Prefetch instruction that ignores a cache hit
US8539163B1 (en) 2010-12-17 2013-09-17 Amazon Technologies, Inc. Speculative reads
WO2012168960A1 (en) 2011-06-07 2012-12-13 Hitachi, Ltd. Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US10031850B2 (en) 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US9164676B2 (en) * 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
KR101888074B1 (ko) 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US9148172B2 (en) 2012-06-22 2015-09-29 Micron Technology, Inc. Data compression and management
US9003123B2 (en) * 2012-06-26 2015-04-07 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data
US8830716B2 (en) * 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
WO2014142337A1 (ja) * 2013-03-15 2014-09-18 日本電気株式会社 ストレージ装置と方法及びプログラム
CN104133780B (zh) 2013-05-02 2017-04-05 华为技术有限公司 一种跨页预取方法、装置及系统
CN104424117B (zh) 2013-08-20 2017-09-05 华为技术有限公司 内存物理地址查询方法和装置
US10817178B2 (en) 2013-10-31 2020-10-27 Hewlett Packard Enterprise Development Lp Compressing and compacting memory on a memory device wherein compressed memory pages are organized by size
CN104866497B (zh) * 2014-02-24 2018-06-15 华为技术有限公司 分布式文件系统列式存储的元数据更新方法、装置、主机
US9740621B2 (en) 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9639472B2 (en) * 2014-07-15 2017-05-02 International Business Machines Corporation Prefetch list management in a computer system
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US9569357B1 (en) * 2015-01-08 2017-02-14 Pure Storage, Inc. Managing compressed data in a storage system
KR20160104387A (ko) 2015-02-26 2016-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10303622B2 (en) * 2015-03-06 2019-05-28 Hewlett Packard Enterprise Development Lp Data write to subset of memory devices
JP2017072981A (ja) 2015-10-07 2017-04-13 富士通株式会社 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US10282808B2 (en) * 2016-05-27 2019-05-07 Intel Corporation Hierarchical lossless compression and null data support

Also Published As

Publication number Publication date
CN106462496B (zh) 2019-05-03
KR20170012233A (ko) 2017-02-02
JP2017519286A (ja) 2017-07-13
US10503661B2 (en) 2019-12-10
WO2015179606A1 (en) 2015-11-26
US20150339239A1 (en) 2015-11-26
EP3146434B1 (en) 2018-06-20
CN106462496A (zh) 2017-02-22
EP3146434A1 (en) 2017-03-29

Similar Documents

Publication Publication Date Title
JP6599898B2 (ja) 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
US9740621B2 (en) Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
US10176090B2 (en) Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US20160224241A1 (en) PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM
US20180173623A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations
US10152261B2 (en) Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180501

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190716

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191003

R150 Certificate of patent or registration of utility model

Ref document number: 6599898

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees