JP2016524251A - データ書き込み方法及びメモリシステム - Google Patents

データ書き込み方法及びメモリシステム Download PDF

Info

Publication number
JP2016524251A
JP2016524251A JP2016522212A JP2016522212A JP2016524251A JP 2016524251 A JP2016524251 A JP 2016524251A JP 2016522212 A JP2016522212 A JP 2016522212A JP 2016522212 A JP2016522212 A JP 2016522212A JP 2016524251 A JP2016524251 A JP 2016524251A
Authority
JP
Japan
Prior art keywords
data
data block
cache line
changed
column address
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
JP2016522212A
Other languages
English (en)
Other versions
JP6159478B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016524251A publication Critical patent/JP2016524251A/ja
Application granted granted Critical
Publication of JP6159478B2 publication Critical patent/JP6159478B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本発明の実施例は、データ書き込み方法及びメモリシステムを提供する。この方法は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムに適用され、この方法は、メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、少なくとも1つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報であるステップと、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って対応する列アドレス及び対応するデータをメモリデバイスに送信するステップと、データが変更されていないデータブロックについて、メモリコントローラにより、変更情報に従って書き込みを実行するのをスキップするステップとを含む。従って、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現される。

Description

[関連出願への相互参照]
この出願は、2013年6月29日に“DATA WRITING METHOD AND MEMORY SYSTEM”という題で中国特許庁に出願された中国特許出願第201310270239.6号の優先権を主張し、この全内容を参照により援用する。
[技術分野]
本発明の実施例は、コンピュータ技術に関し、特にデータ書き込み方法及びメモリシステムに関する。
既存のメモリシステムは、基本的に、メモリコントローラ(Memory cController、MC)、メモリデバイス等を含む。メモリコントローラ及びメモリデバイスは、ダブルデータレート(dDouble dData rRate、DDR)プロトコルを使用することによりデータを交換する。メモリコントローラは、バースト(burst)書き込み方式でデータをメモリデバイスに書き込み、1つのバースト書き込みが実行されるデータブロックのサイズは、メモリデータバス幅である。キャッシュ(cache)及びメモリシステムは、キャッシュライン(cache line)の単位でデータを交換し、毎回読み取られるデータ又は書き込まれるデータのサイズは、cacheのラストレベルキャッシュ(LLC)の1つのcache lineのサイズである。従って、メモリコントローラは、1つのcache lineのデータをメモリデバイスに書き込むために、複数の連続バースト書き込みを実行する必要がある。連続バースト書き込みの量は、バースト長(BL)と呼ばれる。
DDR3プロトコルでは、BLは一般的に8に等しく、1つのバースト書き込みにおけるデータブロックのサイズは、1つのcache lineを複数のデータブロックに分割するための粒度として使用される。例えば、LLCの1つのcache lineのサイズが64byteであり、メモリデータバス幅が64bitである場合、バースト書き込みデータがデータバス上に現れたときに、メモリコントローラは、LLCの1つのcache lineのデータをメモリデバイスに書き込むために、連続する4つのクロック周期で8個のバースト書き込みを実行する必要がある。しかし、実際には、LLCの1つのcache lineのデータがメモリデバイスに書き込まれるときに、多くのデータブロックは変更されない。書き込み処理の間に、いくつかのバースト書き込みにおいて無効なデータがメモリデバイスに書き込まれることが起こり得る。その結果、有効なデータを書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
DDR3プロトコルによりサポートされるBC4技術では、メモリコントローラがデータをメモリデバイスに書き込むときに、4つのバースト書き込みの全体は、1つのcache lineのデータの前半又は後半をメモリデバイスに書き込むために、2つの連続するクロック周期で生じ、次の2つのクロック周期ではバースト書き込みは存在しない。この処理の間に、最初の2つのクロック周期内において、データブロックのデータが変更されたか否かが考慮されない書き込み方式では、いくつかのバースト書き込みにおいて無効なデータがメモリデバイスに書き込まれることも起こり得る。その結果、有効なデータを書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
本発明の実施例は、cache lineのデータブロックのデータが変更されたか否かが区別され、変更されたデータブロックのみで書き込みが実行され、これにより、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現されるデータ書き込み方法及びメモリシステムを提供する。
第1の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムに適用されるデータ書き込み方法を提供し、メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、各データブロックのデータが変更されたか否かを示すために使用される情報であるステップと、変更情報により示される、データが変更されていない各未変更データブロックについて、メモリコントローラにより、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップし、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップと、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップであり、バースト長は少なくとも1つのデータブロックの量に等しいステップとを含む。
第1の態様の第1の可能な実現方式では、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、メモリコントローラにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップを含み、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップは、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するステップを含む。
第1の態様の第2の可能な実現方式では、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満である場合、第1の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとをメモリデバイスに送信するステップであり、少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下であるステップを含み、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップは、メモリデバイスにより、第1の書き込み対象のcache lineの各列アドレス及び少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロック及び少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するステップであり、第2の書き込み対象のcache lineは、LLCにおいて第1の書き込み対象のcache lineを除く書き込み対象のcache lineであるステップを含む。
第1の態様の第2の可能な実現方式を参照して、第1の態様の第3の可能な実現方式では、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
第1の態様又は第1の態様の第1〜第3の可能な実現方式のいずれか1つを参照して、第1の態様の第4の可能な実現方式では、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップは、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイスに配置される場合、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいてデータ書き込みを実行するステップを含む。
第2の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムを提供し、メモリコントローラは、キャッシュにより送信された変更情報を受信するように構成され、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、各データブロックのデータが変更されたか否かを示すために使用される情報であり、変更情報により示される、データが変更されていない各未変更データブロックについて、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップするように構成され、変更情報により示される、データが変更された各変更データブロックについて、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成され、メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むように構成され、バースト長は少なくとも1つのデータブロックの量に等しい。
第2の態様の第1の可能な実現方式では、メモリコントローラは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成され、メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成される。
第2の態様の第2の可能な実現方式では、メモリコントローラは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満である場合、第1の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとをメモリデバイスに送信するように構成され、少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下であり、メモリデバイスは、第1の書き込み対象のcache lineの各列アドレス及び少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロック及び少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成され、第2の書き込み対象のcache lineは、LLCにおいて第1の書き込み対象のcache lineを除く書き込み対象のcache lineである。
第2の態様の第2の可能な実現方式を参照して、第2の態様の第3の可能な実現方式では、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
第2の態様又は第2の態様の第1、第2若しくは第3の可能な実現方式を参照して、第2の態様の第4の可能な実現方式では、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイスに配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される。
本発明の実施例で提供されるデータ書き込み方法及びメモリシステムでは、メモリコントローラは、キャッシュにより送信された変更情報に従って、データが変更されたデータブロックのみについて列アドレス及びデータをメモリデバイスに送信し、これにより、メモリデバイスは、各変更データブロックにおいてデータ書き込みを実行し、データが変更されていないデータブロックにおいて書き込みを実行しない。従って、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現される。
本発明の実施例又は従来技術の技術的対策を明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面について簡単に紹介する。明らかに、以下の説明において、添付図面は、本発明のいくつかの実施例を示しており、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
本発明によるデータ書き込み方法のフローチャート 本発明によるデータ書き込み方法におけるLLCの動作を示す概略図 本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図 本発明によるデータ書き込み方法におけるメモリデバイスの動作を示す概略図 本発明によるデータ書き込み方法における書き込みコマンドの結合のシーケンス図 本発明によるメモリシステムの概略構成図
本発明の実施例の目的、技術的対策及び利点を明確にするために、以下に、本発明の実施例の添付図面を参照して、本発明の実施例の技術的対策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。創造的取り組みを行うことなく本発明の実施例に基づいて当業者により得られる全ての他の実施例は、本発明の保護範囲内に入るものとする。
図1は、本発明の実施例1によるデータ書き込み方法のフローチャートである。この実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムにデータが書き込まれるシナリオに適用される。具体的に、この実施例は以下のステップを含む。
101.メモリコントローラは、キャッシュにより送信された変更情報を受信する。変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、少なくとも1つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報である。
キャッシュ(cache)は、中央処理装置(central processing unit、CPU)と大容量メモリシステムとの間に存在し、比較的高いアクセスレートを有する。このステップにおいて、キャッシュは、ラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割し、1つのフラグビットを少なくとも1つのデータブロックのそれぞれに追加する。フラグビットは、データブロックのデータが変更されたか否かを示し、1つのcache lineは複数のフラグビットを必要とし、各cache lineの複数のフラグビットは、cache lineの少なくとも1つのデータブロックのそれぞれのデータが変更されたか否かを示す変更情報を構成する。例えば、1つのcache lineは、粒度としてメモリデータバス幅を使用することにより複数のデータブロックに分割され、0又は1により表される1つのフラグビットは、複数のデータブロックのそれぞれに追加される。0は、データブロックのデータが変更されていないこと、すなわち、データブロックの値が変更されていないことを示し、1は、データブロックのデータが変更されたこと、すなわち、データブロックの値が変更されたことを示す。各cache lineのフラグビットは、cache lineの変更ブロックベクトル(changed block vector、CBV)、すなわち、変更情報を構成する。具体的に、1つのcache lineのサイズが64バイトであり、メモリデータバス幅が64ビットであることを仮定すると、1つのcache lineは、8個のデータブロックに分割されてもよい。バースト長(BL)は8に等しく、すなわち、1つのCBVのサイズは8ビットである。
図2は、本発明によるデータ書き込み方法におけるLLCの動作を示す概略図である。図2に示すように、キャッシュの上位レベルcacheがデータをLLCの1つのcache lineに書き込む場合、上位レベルcacheは、まずcache line の古いデータ(old data)を読み取り、古いデータを書き込み対象のデータ(new data)と比較する。1つのデータブロックのデータが変更されていない場合、上位レベルcacheは、このデータブロックのフラグビットを0に設定する。データが変更された場合、上位レベルcacheは、このデータブロックのフラグビットを1に設定する。LLCがcache lineのデータをメモリシステムに書き込む場合、cache lineに対応するCBV情報は、メモリシステムのメモリコントローラに転送され、メモリコントローラは、CBV情報を受信する、すなわち、対応する変更情報を受信する。タグがTag1であるデータブロックを例に挙げると、上位レベルcacheは以下のステップを実行する。(1)データをLLCのcache lineに書き込む場合、データブロックの古いデータD1を読み取り、まず、比較器を使用することによりD1を書き込み対象のデータD2と比較し、比較結果をCBVに記録する。同様に、上位レベルcacheは、このcache lineのCBV情報、すなわち、変更情報を取得するために、cache lineの他のデータブロックのデータを読み取り、データをこれらのデータブロックに書き込まれるべき新たなデータと比較し、他のデータブロックのそれぞれの比較結果をCBVに記録する。LLCが以下のステップを実行する場合、すなわち、(2)データをメモリシステムに書き込み、すなわち、データを書き込むために書き込み要求をメモリシステムに送信する場合、LLCは、同時に以下のステップを実行する、すなわち、(3)書き込み対象のcache lineの変更情報をメモリシステムに送信する。
102.変更情報に従って、変更情報により示される、データが変更されていない各未変更データブロックについて、メモリコントローラは、各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信せず、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信する。
このステップにおいて、メモリシステムのメモリコントローラは、受信した変更情報に従って、第1の書き込み対象のcache lineの各データブロックにおいて書き込みを実行する必要があるか否かを決定する。具体的に、図3を参照する。
図3は、本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図である。図3を参照すると、メモリシステムのメモリコントローラは、要求キュー(tansaction queue)、コマンドキュー(command queue)等を含む。LLCの書き込み要求は、まず要求キューに配置され、メモリコントローラは、書き込み要求を、メモリデバイスを動作させるための具体的なコマンドに変換し、コマンドをコマンドキューに記憶する。メモリコントローラは、第1の書き込み対象のcache lineの変更情報に従って、第1の書き込み対象のcache lineの少なくとも1つのデータブロックのそれぞれにおいて書き込みを実行する必要があるか否かを決定する。具体的に、データが変更されていない未変更データブロックについて、バースト書き込みは実行されない。データが変更された変更データブロックについて、変更データブロックに対応する列アドレス及びデータは、アドレスバス、データバス等を使用することにより、ビート毎にメモリコントローラに送信される。データはDDR技術における1つのクロック周期の立ち上がりと立ち下がりの双方で送信され、データバスのデータ周波数はデータバスのクロック周波数の2倍であるため、各ビートはクロック周期の半分である。
103.メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込む。バースト長は少なくとも1つのデータブロックの量に等しい。
一般的に、第1の書き込み対象のcache lineが分割されるデータブロックの量は、連続バースト書き込みの量である。このステップでは、メモリデバイスは、それぞれの受信した列アドレス及びそれぞれの受信したデータに従って各変更データブロックにおいてバースト長のデータ書き込みを実行する。
任意選択で、従来技術における1つのメモリデバイスが1つの列アドレスバッファ及び1つの列デコーダのみを有することに比べて、この実施例のメモリデバイスは、複数の列アドレスバッファ及び複数の列デコーダを含む。図4は、本発明によるデータ書き込み方法におけるメモリデバイスの動作を示す概略図である。図4を参照すると、この実施例では、メモリデバイスは、行アドレスバッファ(row address buffer)、行アドレスデコーダ(row decoder)、量がバースト長に等しい列アドレスバッファ(column address buffer)、量がバースト長に等しい列アドレスデコーダ(column decoder)、センスアンプアレイ(sense amplifier array、SAA)、メモリアレイ(memory array)、書き込まれたデータを有するバッファ(data in buffer)等を含む。各変更データブロックについて、メモリデバイスは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、データ書き込みを実行する。データが書き込まれる毎に、メモリコントローラにより送信された複数の列アドレスは、異なる列アドレスバッファに記憶され、異なる列デコーダを使用することにより同時にデコードされ、SAAの異なる列が選択され、データがこれらの選択された列に書き込まれ、最後に、SAAのデータがメモリアレイに書き込まれる。
本発明のこの実施例で提供されるデータ書き込み方法では、メモリコントローラは、キャッシュにより送信された変更情報に従って、データが変更されたデータブロックのみについて列アドレス及びデータをメモリデバイスに送信し、これにより、メモリデバイスは、各変更データブロックにおいてデータ書き込みを実行し、データが変更されていないデータブロックにおいて書き込みを実行しない。従って、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現される。
任意選択で、前述の実施例1において、メモリコントローラは、変更情報に従って、少なくとも1つのデータブロックのそれぞれにおいて書き込みを実行する必要があるか否かを決定する。変更情報により示される、データが変更された各変更データブロックについて、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、メモリコントローラは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信する。対応して、メモリデバイスは、各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行する。
具体的に、キャッシュは、LLCの第1の書き込み対象のcache lineを少なくとも1つのデータブロックに分割し、少なくとも1つのデータブロックのそれぞれにおいて1つのバースト書き込みを実行する。分割後に取得されたデータブロックの量は、バースト書き込みの量、すなわち、バースト長である。この実施例では、変更データブロックの量がバースト長に等しい場合、すなわち、分割後に取得された全てのデータブロックのデータが変更された場合、メモリコントローラにより受信される変更情報は、cache lineの全てのデータブロックのデータが変更されたことを示す。この場合、第1の書き込み対象のcache lineの少なくとも1つのデータブロックのそれぞれについて、メモリコントローラは、データブロックに対応する列アドレス及びデータをメモリデバイスに送信する。メモリデバイスは、複数の受信した列アドレスを異なる列アドレスバッファに記憶し、異なる列デコーダを使用することにより同時にデコードを実行し、SAAの異なる列を選択し、データをこれらの選択された列に書き込み、最後に、SAAのデータをメモリアレイに書き込む。このように、書き込みは、第1の書き込み対象のcache lineの少なくとも1つのデータブロックのそれぞれにおいて実行される。例えば、第1の書き込み対象のcache lineは、粒度としてメモリデータバス幅を使用することにより、8個のデータブロックに分割され、全ての8個のデータブロックのデータが変更される。従って、メモリコントローラは、8個の列アドレス及び対応するデータをメモリデバイスに送信する。8個の列アドレスバッファ及び8個の列デコーダがメモリデバイスに配置され、各列アドレスバッファは、1つの列アドレスを記憶し、列アドレスに対応するデコーダは、同時にデコードを実行する。
任意選択で、前述の実施例1において、メモリコントローラは、変更情報に従って、各データブロックにおいて書き込みを実行する必要があるか否かを決定する。変更情報により示される、データが変更された各変更データブロックについて、第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満である場合、メモリコントローラは、第1の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとをメモリデバイスに送信する。少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下である。対応して、メモリデバイスは、第1の書き込み対象のcache lineの各列アドレス及び少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロック及び少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行する。第2の書き込み対象のcache lineは、LLCにおいて第1の書き込み対象のcache lineを除く書き込み対象のcache lineである。
一般的に、キャッシュは、LLCの第1の書き込み対象のcache lineを少なくとも1つのデータブロックに分割し、少なくとも1つのデータブロックのそれぞれにおいて1つのバースト書き込みを実行する。分割後に取得されたデータブロックの量は、バースト書き込みの量、すなわち、バースト長である。この実施例では、変更データブロックの量がバースト長未満である場合、分割後に取得されたデータブロックのいくつかのデータブロックのみのデータが変更される。この場合、コマンドスケジューリングを実行するときに、メモリコントローラは、書き込みコマンドを結合し、書き込みコマンドを結合する方式で1つの固定のバースト長のクロック周期において複数の書き込みを完了し、これにより、クロック周期の浪費を回避し、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する。
具体的に、LLCによりメモリコントローラに送信されてcache lineのサイズのデータが書き込まれることを要求するために使用される書き込み要求は、まず要求キューに記憶され、メモリコントローラは、これらの書き込み要求を、メモリデバイスを動作させるための書き込みコマンドに変換し、書き込みコマンドをコマンドキューに記憶する。メモリデバイスが第1の書き込み対象のcache lineの書き込みコマンドを送信したとき、メモリコントローラが第1の書き込み対象のcache lineの変更情報に従ってcache lineの変更データブロックの量がバースト長未満であることを発見した場合、少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドが、コマンドキューから選択される。少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下である。量がBLに等しいバースト書き込みでは、メモリコントローラは、ビート毎に第1の書き込み対象のcache lineの1つの変更データブロックに対応する列アドレス及びデータをメモリデバイスに送信し、第1の書き込み対象のcache lineの変更データブロックに対応する列アドレス及びデータが送信された後に、メモリコントローラは、続いて、ビート毎に第2の書き込み対象のcache lineの1つの変更データブロックに対応する列アドレス及びデータをメモリデバイスに送信し続け、量がBLに等しいデータブロックにデータが書き込まれるまで、或いは結合され得る書き込みコマンドがコマンドキューに見つからなくなるまで、すなわち、データが書き込まれるデータブロックの量がBL未満になるまで、この処理を繰り返す。
第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満であり、第1の書き込み対象のcache lineに対応する書き込みコマンド及び少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドがデータ書き込み処理の間に結合される必要がある場合、以下が満たされる必要がある点に留意すべきである。すなわち、少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下であり、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、結合され得る書き込みコマンドに対応する。更に、書き込みコマンドは、以下の条件を更に満たす必要がある。すなわち、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。すなわち、第1の書き込み対象のcache lineに対応する書き込みコマンド及び少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドは、同じ記憶グループBankの同じ行における書き込みに使用され、少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドにおいて同じ行の読み取り要求は存在しない。この場合、図4を参照すると、メモリデバイスは、書き込みコマンドが同じ記憶グループBankの同じ行においてデータ書き込みを実行するために使用されるか否かをテストするように構成された1つの行テスト(row test)を更に含む。
具体的に、LLCの1つのcache lineのサイズが64byteであり、メモリデータバス幅が64ビットであり、バースト長BLが8に等しいことを仮定する。表1は、メモリコントローラのコマンドキューにおけるコマンドについての情報を示している。3つの書き込みコマンドが同じBankを動作させるために使用され、書き込みコマンドWrite1及びWrite3は、行Row1における書き込みに使用され、書き込みコマンドWrite2は行Row2における書き込みに使用される。
Figure 2016524251
表1から分かるように、Write1及びWrite3は、同じ行における書き込みに使用される。CBV、すなわち、変更情報は、Write1に対応するcache lineの変更データブロックの量とWrite3に対応するcache lineの変更データブロックの量との和(表1に網掛けで図示する)が8に等しいことを示す。従って、書き込みコマンドの結合は、Write1及びWrite3について実行される。メモリコントローラは、Write1及びWrite3のスケジューリングが完了した後に、Write2をスケジューリングする。具体的に、図5を参照する。
図5は、本発明によるデータ書き込み方法における書き込みコマンドの結合のシーケンス図である。図5に示すように、最初の4つのビート、すなわち、クロック周期T0及びT1の立ち上がり及び立ち下がりにおいて、メモリコントローラは、Write1並びに列アドレスの列col1、col2、col3及びcol4を送信する。次の4つのビート、すなわち、クロック周期T2及びT3の立ち上がり及び立ち下がりにおいて、メモリコントローラは、Write3並びに列アドレスcol3、col4、col5及びcol6を送信する。次に、メモリコントローラは、Write2に対応する列アドレスを送信する。時刻T5において、バースト書き込みデータDnがデータバス上に現れ、8個のバースト書き込みが実行される。これにより、Write1に対応するcache line及びWrite3に対応するcache lineの変更データブロックは、メモリデバイスに書き込まれる。col1は、Write1に対応するcache lineの8個のデータブロックの第1のデータブロックに対応する列アドレスを示し、D1は、第1のデータブロックに対応するデータを示し、残りは類推で推定可能である。
前述の実施例では、2つの書き込みコマンドWrite1及びWrite3が結合され、Write1に対応するcache lineの変更データブロックの量とWrite2に対応するcache lineの変更データブロックの量との和がBLに等しい例を使用することにより、本発明について詳細に説明したことに留意すべきである。しかし、本発明はこれに限定されない。他の可能な実現方式では、複数の書き込みコマンドが結合されてもよい。例えば、Write1に対応するcache lineの変更データブロックの量とWrite3に対応するcache lineの変更データブロックの量との和がBL未満であり、結合され得る他の書き込みコマンドがコマンドキューから選択されてもよい。更に、コマンドキューにおいて結合され得る全ての書き込みコマンドに対応するcache lineの変更データブロックの量の和がBL未満である場合、量がBLに等しいバースト書き込みが実行され、量がBLに等しいバースト書き込みにおけるいくつかのクロック周期又はクロック周期のいくつかのビートがアイドルになる。更に、図5は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)の3つのメモリクロック(internal CK)のみを示している。実際に、全体で8個のメモリクロックが存在する。
図6は、本発明によるメモリシステムの概略構成図であり、図1の本発明の実施例に対応する装置の実施例である。従って、具体的な実現処理について、ここでは再び説明しない。具体的に、この実施例のメモリシステム100は、メモリコントローラ10とメモリデバイス11とを少なくとも含む。
具体的に、メモリコントローラ10は、キャッシュにより送信された変更情報を受信するように構成され、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、少なくとも1つのデータブロックそれぞれのデータが変更されたか否かを示すために使用される情報であり、変更情報により示される、データが変更されていない各未変更データブロックについて、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップするように構成され、変更情報により示される、データが変更された各変更データブロックについて、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成される。メモリデバイス11は、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むように構成され、バースト長は少なくとも1つのデータブロックの量に等しい。
更に、メモリコントローラ10は、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイス10に送信するように構成される。
メモリデバイス11は、各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成される。
更に、メモリコントローラ10は、第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満である場合、第1の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとをメモリデバイス11に送信するように構成され、少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下である。メモリデバイス11は、第1の書き込み対象のcache lineの各列アドレス及び少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロック及び少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成され、第2の書き込み対象のcache lineは、LLCにおいて第1の書き込み対象のcache lineを除く書き込み対象のcache lineである。
更に、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
更に、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダが数がバースト長に等しいメモリデバイス11に配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される。
当業者は、方法の実施例のステップの全部又は一部が、関係するハードウェアに命令するプログラムにより実現されてもよいことを認識し得る。プログラムは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。プログラムが実行する場合、方法の実施例のステップが実行される。前述の記憶媒体は、ROM、RAM、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
最後に、前述の実施例は、単に本発明の技術的対策を説明することを意図するものであり、本発明を限定することを意図するものではない点に留意すべきである。前述の実施例を参照して本発明について詳細に説明したが、当業者は、依然として、本発明の実施例の技術的対策の範囲を逸脱することなく、前述の実施例で説明した技術的対策に変更を行ってもよく、或いは、その一部又は全部の技術的特徴に等価置換を行ってもよいことを認識すべきである。
既存のメモリシステムは、基本的に、メモリコントローラ(Memory Controller、MC)、メモリデバイス等を含む。メモリコントローラ及びメモリデバイスは、ダブルデータレート(Double Data Rate、DDR)プロトコルを使用することによりデータを交換する。メモリコントローラは、バースト(burst)書き込み方式でデータをメモリデバイスに書き込み、1つのバースト書き込みが実行されるデータブロックのサイズは、メモリデータバス幅である。キャッシュ(cache)及びメモリシステムは、キャッシュライン(cache line)の単位でデータを交換し、毎回読み取られるデータ又は書き込まれるデータのサイズは、cacheのラストレベルキャッシュ(Last Level Cache、LLC)の1つのcache lineのサイズである。従って、メモリコントローラは、1つのcache lineのデータをメモリデバイスに書き込むために、複数の連続バースト書き込みを実行する必要がある。連続バースト書き込みの量は、バースト長(Burst Length、BL)と呼ばれる。
DDR3プロトコルでは、BLは一般的に8に等しく、1つのバースト書き込みにおけるデータブロックのサイズは、1つのcache lineを複数のデータブロックに分割するための粒度として使用される。例えば、LLCの1つのcache lineのサイズが64byteであり、メモリデータバス幅が64bitである場合、バースト書き込みデータがデータバス上に現れたときに、メモリコントローラは、LLCの1つのcache lineのデータをメモリデバイスに書き込むために、連続する4つのクロック周期で8個のバースト書き込みを実行する必要がある。しかし、実際には、LLCの1つのcache lineのデータがメモリデバイスに書き込まれるときに、多くのデータブロックは変更されない。書き込み処理の間に、いくつかのバースト書き込みにおいて無効なデータ(未変更データ)がメモリデバイスに書き込まれることが起こり得る。その結果、有効なデータ(変更データ)を書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
DDR3プロトコルによりサポートされるBC4(burst chop 4)技術では、メモリコントローラがデータをメモリデバイスに書き込むときに、4つのバースト書き込みの全体は、1つのcache lineのデータの前半又は後半をメモリデバイスに書き込むために、2つの連続するクロック周期で生じ、次の2つのクロック周期ではバースト書き込みは存在しない。この処理の間に、最初の2つのクロック周期内において、データブロックのデータが変更されたか否かが考慮されない書き込み方式では、いくつかのバースト書き込みにおいて無効なデータがメモリデバイスに書き込まれることも起こり得る。その結果、有効なデータを書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
第1の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムに適用されるデータ書き込み方法を提供し、メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくともつのデータブロックに分割した後に生成された情報であり、少なくとも2つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報であるステップと、変更情報により示される、データが変更されていない各未変更データブロックについて、メモリコントローラにより、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップし、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップと、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップであり、バースト長は少なくともつのデータブロックの量に等しいステップとを含む。
第2の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムを提供し、メモリコントローラは、キャッシュにより送信された変更情報を受信するように構成され、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくともつのデータブロックに分割した後に生成された情報であり、少なくとも2つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報であり、変更情報により示される、データが変更されていない各未変更データブロックについて、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップするように構成され、変更情報により示される、データが変更された各変更データブロックについて、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成され、メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むように構成され、バースト長は少なくともつのデータブロックの量に等しい。
本発明の実施例又は従来技術の技術的対策を明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面について簡単に紹介する
本発明によるデータ書き込み方法のフローチャート 本発明によるデータ書き込み方法におけるLLCの動作を示す概略図 本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図 本発明によるデータ書き込み方法におけるメモリデバイスの動作を示す概略図 本発明によるデータ書き込み方法における書き込みコマンドの結合のシーケンス図 本発明によるメモリシステムの概略構成図
図3は、本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図である。図3を参照すると、メモリシステムのメモリコントローラは、要求キュー(transaction queue)、コマンドキュー(command queue)等を含む。LLCの書き込み要求は、まず要求キューに配置され、メモリコントローラは、書き込み要求を、メモリデバイスを動作させるための具体的なコマンドに変換し、コマンドをコマンドキューに記憶する。メモリコントローラは、第1の書き込み対象のcache lineの変更情報に従って、第1の書き込み対象のcache lineの少なくとも1つのデータブロックのそれぞれにおいて書き込みを実行する必要があるか否かを決定する。具体的に、データが変更されていない未変更データブロックについて、バースト書き込みは実行されない。データが変更された変更データブロックについて、変更データブロックに対応する列アドレス及びデータは、アドレスバス、データバス等を使用することにより、ビート毎にメモリコントローラに送信される。データはDDR技術における1つのクロック周期の立ち上がりと立ち下がりの双方で送信され、データバスのデータ周波数はデータバスのクロック周波数の2倍であるため、各ビートはクロック周期の半分である。
第1の書き込み対象のcache lineの変更データブロックの量がバースト長未満であり、第1の書き込み対象のcache lineに対応する書き込みコマンド及び少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドがデータ書き込み処理の間に結合される必要がある場合、以下が満たされる必要がある点に留意すべきである。すなわち、少なくとも1つの第2の書き込み対象のcache lineの変更データブロックの量と第1の書き込み対象のcache lineの変更データブロックの量との和は、バースト長以下であり、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、結合され得る書き込みコマンドに対応する。更に、書き込みコマンドは、以下の条件を更に満たす必要がある。すなわち、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。すなわち、第1の書き込み対象のcache lineに対応する書き込みコマンド及び少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドは、同じ記憶グループBankの同じ行における書き込みに使用され、少なくとも1つの第2の書き込み対象のcache lineに対応する書き込みコマンドにおいて同じ行の読み取り要求は存在しない。この場合、図4を参照すると、メモリデバイスは、書き込みコマンドが同じ記憶グループBankの同じ行においてデータ書き込みを実行するために使用されるか否かをテストするように構成された行テストモジュール(row test)を更に含む。
図5は、本発明によるデータ書き込み方法における書き込みコマンドの結合のシーケンス図である。図5に示すように、最初の4つのビート、すなわち、クロック周期T0及びT1の立ち上がり及び立ち下がりにおいて、メモリコントローラは、Write1並びに列アドレスcol1、col2、col3及びcol4を送信する。次の4つのビート、すなわち、クロック周期T2及びT3の立ち上がり及び立ち下がりにおいて、メモリコントローラは、Write3並びに列アドレスcol3、col4、col5及びcol6を送信する。次に、メモリコントローラは、Write2に対応する列アドレスを送信する。時刻T5において、バースト書き込みデータDnがデータバス上に現れ、8個のバースト書き込みが実行される。これにより、Write1に対応するcache line及びWrite3に対応するcache lineの変更データブロックは、メモリデバイスに書き込まれる。col1は、Write1に対応するcache lineの8個のデータブロックの第1のデータブロックに対応する列アドレスを示し、D1は、第1のデータブロックに対応するデータを示し、残りは類推で推定可能である。
前述の実施例では、2つの書き込みコマンドWrite1及びWrite3が結合され、Write1に対応するcache lineの変更データブロックの量とWrite3に対応するcache lineの変更データブロックの量との和がBLに等しい例を使用することにより、本発明について詳細に説明したことに留意すべきである。しかし、本発明はこれに限定されない。他の可能な実現方式では、複数の書き込みコマンドが結合されてもよい。例えば、Write1に対応するcache lineの変更データブロックの量とWrite3に対応するcache lineの変更データブロックの量との和がBL未満であり、結合され得る他の書き込みコマンドがコマンドキューから選択されてもよい。更に、コマンドキューにおいて結合され得る全ての書き込みコマンドに対応するcache lineの変更データブロックの量の和がBL未満である場合、量がBLに等しいバースト書き込みが実行され、量がBLに等しいバースト書き込みにおけるいくつかのクロック周期又はクロック周期のいくつかのビートがアイドルになる。更に、図5は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)の3つのメモリクロック(internal CK)のみを示している。実際に、全体で8個のメモリクロックが存在する。
更に、メモリコントローラ10は、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイス11に送信するように構成される。
更に、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイス11に配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される。

Claims (10)

  1. メモリコントローラとメモリデバイスとを少なくとも有するメモリシステムに適用されるデータ書き込み方法であって、
    前記メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、前記変更情報は、前記キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(Cache Line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、各データブロックのデータが変更されたか否かを示すために使用される情報であるステップと、
    前記変更情報により示される、データが変更されていない各未変更データブロックについて、前記メモリコントローラにより、前記変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータを前記メモリデバイスに送信するのをスキップし、前記変更情報により示される、データが変更された各変更データブロックについて、前記メモリコントローラにより、前記変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータを前記メモリデバイスに送信するステップと、
    前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップであり、前記バースト長は前記少なくとも1つのデータブロックのデータブロック量に等しいステップと
    を有する方法。
  2. 前記変更情報により示される、データが変更された各変更データブロックについて、前記メモリコントローラにより、前記変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータを前記メモリデバイスに送信するステップは、
    前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長に等しい場合、前記メモリコントローラにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データを前記メモリデバイスに送信するステップを有し、
    前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップは、
    前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び前記データに従って、前記第1の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長のデータ書き込みを実行するステップを有する、請求項1に記載の方法。
  3. 前記変更情報により示される、データが変更された各変更データブロックについて、前記メモリコントローラにより、前記変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータを前記メモリデバイスに送信するステップは、
    前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長未満である場合、前記第1の書き込み対象のcache lineの各変更データブロックに対応する前記列アドレス及び前記データと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとを前記メモリデバイスに送信するステップであり、前記少なくとも1つの第2の書き込み対象のcache lineの前記変更データブロックの量と前記第1の書き込み対象のcache lineの前記変更データブロックの量との和は、前記バースト長以下であるステップを有し、
    前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップは、
    前記メモリデバイスにより、前記第1の書き込み対象のcache lineの各列アドレス及び前記少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、前記第1の書き込み対象のcache lineの各変更データブロック及び前記少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長のデータ書き込みを実行するステップであり、前記第2の書き込み対象のcache lineは、前記LLCにおいて前記第1の書き込み対象のcache lineを除く書き込み対象のcache lineであるステップを有する、請求項1に記載の方法。
  4. 前記第1の書き込み対象のcache line及び前記少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、前記LLCにおいて前記同じ行の読み取りコマンドは存在しない、請求項3に記載の方法。
  5. 前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップは、
    量が前記バースト長に等しい列アドレスバッファ及び量が前記バースト長に等しい列デコーダが前記メモリデバイスに配置される場合、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいてデータ書き込みを実行するステップを有する、請求項1ないし4のうちいずれか1項に記載の方法。
  6. メモリコントローラとメモリデバイスとを少なくとも有するメモリシステムであって、
    前記メモリコントローラは、キャッシュにより送信された変更情報を受信するように構成され、前記変更情報は、前記キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、各データブロックのデータが変更されたか否かを示すために使用される情報であり、前記変更情報により示される、データが変更されていない各未変更データブロックについて、前記変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータを前記メモリデバイスに送信するのをスキップするように構成され、前記変更情報により示される、データが変更された各変更データブロックについて、前記変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータを前記メモリデバイスに送信するように構成され、
    前記メモリデバイスは、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むように構成され、前記バースト長は前記少なくとも1つのデータブロックの量に等しいメモリシステム。
  7. 前記メモリコントローラは、前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長に等しい場合、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データを前記メモリデバイスに送信するように構成され、
    前記メモリデバイスは、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従って、前記第1の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長のデータ書き込みを実行するように構成される、請求項6に記載のメモリシステム。
  8. 前記メモリコントローラは、前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長未満である場合、前記第1の書き込み対象のcache lineの各変更データブロックに対応する前記列アドレス及び前記データと、少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックに対応する列アドレス及びデータとを前記メモリデバイスに送信するように構成され、前記少なくとも1つの第2の書き込み対象のcache lineの前記変更データブロックの量と前記第1の書き込み対象のcache lineの前記変更データブロックの量との和は、前記バースト長以下であり、
    前記メモリデバイスは、前記第1の書き込み対象のcache lineの各列アドレス及び前記少なくとも1つの第2の書き込み対象のcache lineの各列アドレスに従って、前記第1の書き込み対象のcache lineの各変更データブロック及び前記少なくとも1つの第2の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長のデータ書き込みを実行するように構成され、前記第2の書き込み対象のcache lineは、前記LLCにおいて前記第1の書き込み対象のcache lineを除く書き込み対象のcache lineである、請求項6に記載のメモリシステム。
  9. 前記第1の書き込み対象のcache line及び前記少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、前記LLCにおいて前記同じ行の読み取りコマンドは存在しない、請求項8に記載のメモリシステム。
  10. 量が前記バースト長に等しい列アドレスバッファ及び量が前記バースト長に等しい列デコーダが前記メモリデバイスに配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される、請求項6ないし9のうちいずれか1項に記載のメモリシステム。
JP2016522212A 2013-06-29 2014-06-17 データ書き込み方法及びメモリシステム Active JP6159478B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310270239.6 2013-06-29
CN201310270239.6A CN104252420B (zh) 2013-06-29 2013-06-29 数据写入方法及内存***
PCT/CN2014/080073 WO2014206220A1 (zh) 2013-06-29 2014-06-17 数据写入方法及内存***

Publications (2)

Publication Number Publication Date
JP2016524251A true JP2016524251A (ja) 2016-08-12
JP6159478B2 JP6159478B2 (ja) 2017-07-05

Family

ID=52141031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016522212A Active JP6159478B2 (ja) 2013-06-29 2014-06-17 データ書き込み方法及びメモリシステム

Country Status (9)

Country Link
US (1) US20160110286A1 (ja)
EP (1) EP2998867B1 (ja)
JP (1) JP6159478B2 (ja)
KR (1) KR101785189B1 (ja)
CN (2) CN107577614B (ja)
AU (1) AU2014301874B2 (ja)
BR (1) BR112015031803A2 (ja)
RU (1) RU2621611C1 (ja)
WO (1) WO2014206220A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
CN109324982B (zh) * 2017-07-31 2023-06-27 上海华为技术有限公司 一种数据处理方法以及数据处理装置
US20210200695A1 (en) * 2019-12-27 2021-07-01 Advanced Micro Devices, Inc. Staging memory access requests
CN113918508A (zh) * 2021-12-15 2022-01-11 苏州浪潮智能科技有限公司 一种缓存加速方法、装置、设备及可读存储介质
WO2023115319A1 (zh) * 2021-12-21 2023-06-29 华为技术有限公司 一种数据存储方法、存储装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02113353A (ja) * 1988-10-24 1990-04-25 Hitachi Ltd 半導体メモリ
JPH03164849A (ja) * 1989-11-22 1991-07-16 Matsushita Electric Ind Co Ltd マイクロプロセッサおよびマイクロプロセッサシステム
JPH05282208A (ja) * 1992-04-03 1993-10-29 Hitachi Ltd キャッシュメモリ制御方式
JPH0850570A (ja) * 1994-05-20 1996-02-20 Advanced Micro Devicds Inc コンピュータシステム、インテグレーテッドプロセッサ、キャッシュベースのコンピュータシステムのためのスヌープ制御方法
US20090138663A1 (en) * 2007-11-27 2009-05-28 Samsung Electronics Co., Ltd. Cache memory capable of adjusting burst length of write-back data in write-back operation

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2010318C1 (ru) * 1991-10-28 1994-03-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство управления памятью
US5459842A (en) * 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
JP3204295B2 (ja) * 1997-03-31 2001-09-04 日本電気株式会社 キャッシュメモリシステム
US6658533B1 (en) * 2000-09-21 2003-12-02 Intel Corporation Method and apparatus for write cache flush and fill mechanisms
JP2004246754A (ja) * 2003-02-17 2004-09-02 Renesas Technology Corp 半導体記憶装置およびその制御装置
JP4009306B2 (ja) * 2003-11-18 2007-11-14 松下電器産業株式会社 キャッシュメモリおよびその制御方法
DE602004016972D1 (de) * 2004-06-16 2008-11-20 Freescale Semiconductor Inc Datum-Pufferspeichersystem
KR100575004B1 (ko) * 2005-01-15 2006-04-28 삼성전자주식회사 버스트 동작이 가능한 에스램 메모리 장치
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8464002B2 (en) * 2009-10-14 2013-06-11 Board Of Regents Of The University Of Texas System Burst-based cache dead block prediction
US8924652B2 (en) * 2009-11-23 2014-12-30 Marvell Israel (M.I.S.L.) Ltd. Simultaneous eviction and cleaning operations in a cache
CN102135941B (zh) * 2010-08-26 2013-09-11 华为技术有限公司 从缓存写数据到内存的方法和装置
CN102012850B (zh) * 2010-12-09 2012-09-12 首都师范大学 基于硬件监视和微包协议的关键数据恢复方法
RU2487398C1 (ru) * 2011-12-13 2013-07-10 Общество с ограниченной ответственностью "ЛАН-ПРОЕКТ" Способ формирования виртуальной памяти и устройство для его реализации
WO2013097246A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 高速缓冲存储器控制方法、装置和***
CN102662992B (zh) * 2012-03-14 2014-10-08 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102999441B (zh) * 2012-11-15 2015-06-17 清华大学 一种细粒度内存访问的方法
WO2015127327A1 (en) * 2014-02-23 2015-08-27 Rambus Inc. Distributed procedure execution and file systems on a memory interface

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02113353A (ja) * 1988-10-24 1990-04-25 Hitachi Ltd 半導体メモリ
JPH03164849A (ja) * 1989-11-22 1991-07-16 Matsushita Electric Ind Co Ltd マイクロプロセッサおよびマイクロプロセッサシステム
JPH05282208A (ja) * 1992-04-03 1993-10-29 Hitachi Ltd キャッシュメモリ制御方式
JPH0850570A (ja) * 1994-05-20 1996-02-20 Advanced Micro Devicds Inc コンピュータシステム、インテグレーテッドプロセッサ、キャッシュベースのコンピュータシステムのためのスヌープ制御方法
US20090138663A1 (en) * 2007-11-27 2009-05-28 Samsung Electronics Co., Ltd. Cache memory capable of adjusting burst length of write-back data in write-back operation

Also Published As

Publication number Publication date
EP2998867B1 (en) 2019-09-18
EP2998867A4 (en) 2016-07-06
KR20160014053A (ko) 2016-02-05
AU2014301874A1 (en) 2016-01-21
CN107577614A (zh) 2018-01-12
BR112015031803A2 (pt) 2017-07-25
WO2014206220A1 (zh) 2014-12-31
US20160110286A1 (en) 2016-04-21
JP6159478B2 (ja) 2017-07-05
AU2014301874B2 (en) 2017-05-04
RU2621611C1 (ru) 2017-06-06
CN104252420A (zh) 2014-12-31
CN104252420B (zh) 2017-08-29
CN107577614B (zh) 2020-10-16
EP2998867A1 (en) 2016-03-23
KR101785189B1 (ko) 2017-10-12

Similar Documents

Publication Publication Date Title
US9043541B2 (en) Storage control device, storage device, and control method for controlling storage control device
JP5351145B2 (ja) メモリ制御装置、メモリシステム、半導体集積回路およびメモリ制御方法
JP6159478B2 (ja) データ書き込み方法及びメモリシステム
US8661180B2 (en) Memory controlling device and memory controlling method
US9773531B2 (en) Accessing memory
US20060218315A1 (en) Memory access control circuit
US20120239873A1 (en) Memory access system and method for optimizing SDRAM bandwidth
US9411519B2 (en) Implementing enhanced performance flash memory devices
US20140344512A1 (en) Data Processing Apparatus and Memory Apparatus
US7554874B2 (en) Method and apparatus for mapping memory
WO2021035761A1 (zh) 一种固态硬盘混合读写的实现方法以及装置
US6738840B1 (en) Arrangement with a plurality of processors having an interface for a collective memory
US20120159024A1 (en) Semiconductor apparatus
US20100262763A1 (en) Data access method employed in multi-channel flash memory system and data access apparatus thereof
US8806132B2 (en) Information processing device, memory access control device, and address generation method thereof
US8347026B2 (en) Memory device and memory device control method
CN102073604B (zh) 一种同步动态存储器读写控制方法、装置和***
WO2023189358A1 (ja) メモリ制御装置
US10719440B2 (en) Semiconductor device and memory access method
US9214207B2 (en) Apparatus and method for data decoding
US20130286762A1 (en) Memory control apparatus and method
JP2012137944A (ja) メモリアクセス装置
JP2012022567A (ja) キャッシュメモリ
JP2015014872A (ja) データ処理装置、データ処理方法およびプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170421

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170609

R150 Certificate of patent or registration of utility model

Ref document number: 6159478

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250