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