特許第6159478号(P6159478)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

<>
  • 特許6159478-データ書き込み方法及びメモリシステム 図000003
  • 特許6159478-データ書き込み方法及びメモリシステム 図000004
  • 特許6159478-データ書き込み方法及びメモリシステム 図000005
  • 特許6159478-データ書き込み方法及びメモリシステム 図000006
  • 特許6159478-データ書き込み方法及びメモリシステム 図000007
  • 特許6159478-データ書き込み方法及びメモリシステム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6159478
(24)【登録日】2017年6月16日
(45)【発行日】2017年7月5日
(54)【発明の名称】データ書き込み方法及びメモリシステム
(51)【国際特許分類】
   G06F 12/0804 20160101AFI20170626BHJP
   G06F 12/08 20160101ALI20170626BHJP
【FI】
   G06F12/08 501C
   G06F12/08 507H
【請求項の数】10
【全頁数】16
(21)【出願番号】特願2016-522212(P2016-522212)
(86)(22)【出願日】2014年6月17日
(65)【公表番号】特表2016-524251(P2016-524251A)
(43)【公表日】2016年8月12日
(86)【国際出願番号】CN2014080073
(87)【国際公開番号】WO2014206220
(87)【国際公開日】20141231
【審査請求日】2016年2月23日
(31)【優先権主張番号】201310270239.6
(32)【優先日】2013年6月29日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】夏 ▲飛▼
(72)【発明者】
【氏名】▲ジアン▼ ▲徳▼▲ジュン▼
(72)【発明者】
【氏名】熊 ▲勁▼
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開平05−282208(JP,A)
【文献】 特開平03−164849(JP,A)
【文献】 特開平08−050570(JP,A)
【文献】 特開平02−113353(JP,A)
【文献】 米国特許出願公開第2009/0138663(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
G06F 12/0804
(57)【特許請求の範囲】
【請求項1】
メモリコントローラとメモリデバイスとを有するメモリシステムに適用されるデータ書き込み方法であって、
前記メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、前記変更情報は、前記キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のcache lineを少なくとも2つのデータブロックに分割した後に生成された情報であり、前記少なくとも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】
前記第1の書き込み対象のcache line及び前記少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、前記LLCにおいて前記同じ行の読み取りコマンドは存在しない、請求項に記載の方法。
【請求項3】
前記変更情報により示される、データが変更された各変更データブロックについて、前記メモリコントローラにより、前記変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータを前記メモリデバイスに送信するステップは、
前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長に等しい場合、前記メモリコントローラにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データを前記メモリデバイスに送信するステップを有し、
前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップは、
前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従って、前記第1の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長の前記データ書き込みを実行するステップを有する、請求項1に記載の方法。
【請求項4】
前記メモリデバイスにより、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従ってバースト長のデータを各変更データブロックに書き込むステップは、
量が前記バースト長に等しい列アドレスバッファ及び量が前記バースト長に等しい列デコーダが前記メモリデバイスに配置される場合、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて前記データ書き込みを実行するステップを有する、請求項1ないしのうちいずれか1項に記載の方法。
【請求項5】
メモリコントローラとメモリデバイスとを有するメモリシステムであって、
前記メモリコントローラは、キャッシュにより送信された変更情報を受信するように構成され、前記変更情報は、前記キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも2つのデータブロックに分割した後に生成された情報であり、前記少なくとも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であるメモリシステム。
【請求項6】
前記第1の書き込み対象のcache line及び前記少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、前記LLCにおいて前記同じ行の読み取りコマンドは存在しない、請求項に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、前記第1の書き込み対象のcache lineの前記変更データブロックの量が前記バースト長に等しい場合、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データを前記メモリデバイスに送信するように構成され、
前記メモリデバイスは、各変更データブロックに対応する前記列アドレス及び各変更データブロックに対応する前記データに従って、前記第1の書き込み対象のcache lineの各変更データブロックにおいて前記バースト長の前記データ書き込みを実行するように構成される、請求項に記載のメモリシステム。
【請求項8】
量が前記バースト長に等しい列アドレスバッファ及び量が前記バースト長に等しい列デコーダが前記メモリデバイスに配置される場合、前記データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される、請求項ないしのうちいずれか1項に記載のメモリシステム。
【請求項9】
コンピュータに対して、請求項1ないし4のうちいずれか1項に記載の方法を実行させるプログラム。
【請求項10】
コンピュータに対して、請求項1ないし4のうちいずれか1項に記載の方法を実行させるプログラムを記録したコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この出願は、2013年6月29日に“DATA WRITING METHOD AND MEMORY SYSTEM”という題で中国特許庁に出願された中国特許出願第201310270239.6号の優先権を主張し、この全内容を参照により援用する。
【0002】
[技術分野]
本発明の実施例は、コンピュータ技術に関し、特にデータ書き込み方法及びメモリシステムに関する。
【背景技術】
【0003】
既存のメモリシステムは、基本的に、メモリコントローラ(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)と呼ばれる。
【0004】
DDR3プロトコルでは、BLは一般的に8に等しく、1つのバースト書き込みにおけるデータブロックのサイズは、1つのcache lineを複数のデータブロックに分割するための粒度として使用される。例えば、LLCの1つのcache lineのサイズが64byteであり、メモリデータバス幅が64bitである場合、バースト書き込みデータがデータバス上に現れたときに、メモリコントローラは、LLCの1つのcache lineのデータをメモリデバイスに書き込むために、連続する4つのクロック周期で8個のバースト書き込みを実行する必要がある。しかし、実際には、LLCの1つのcache lineのデータがメモリデバイスに書き込まれるときに、多くのデータブロックは変更されない。書き込み処理の間に、いくつかのバースト書き込みにおいて無効なデータ(未変更データ)がメモリデバイスに書き込まれることが起こり得る。その結果、有効なデータ(変更データ)を書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
【0005】
DDR3プロトコルによりサポートされるBC4(burst chop 4)技術では、メモリコントローラがデータをメモリデバイスに書き込むときに、4つのバースト書き込みの全体は、1つのcache lineのデータの前半又は後半をメモリデバイスに書き込むために、2つの連続するクロック周期で生じ、次の2つのクロック周期ではバースト書き込みは存在しない。この処理の間に、最初の2つのクロック周期内において、データブロックのデータが変更されたか否かが考慮されない書き込み方式では、いくつかのバースト書き込みにおいて無効なデータがメモリデバイスに書き込まれることも起こり得る。その結果、有効なデータを書き込む速度が低くなり、大量の無効なデータの書き込みは、メモリシステムの電力消費の増加をもたらし、これにより、メモリシステムの性能を低減する。
【発明の概要】
【0006】
本発明の実施例は、cache lineのデータブロックのデータが変更されたか否かが区別され、変更されたデータブロックのみで書き込みが実行され、これにより、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現されるデータ書き込み方法及びメモリシステムを提供する。
【0007】
第1の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムに適用されるデータ書き込み方法を提供し、メモリコントローラにより、キャッシュにより送信された変更情報を受信するステップであり、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくともつのデータブロックに分割した後に生成された情報であり、少なくとも2つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報であるステップと、変更情報により示される、データが変更されていない各未変更データブロックについて、メモリコントローラにより、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップし、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップと、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップであり、バースト長は少なくともつのデータブロックの量に等しいステップとを含む。
【0008】
第1の態様の第1の可能な実現方式では、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラにより、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、メモリコントローラにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するステップを含み、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップは、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するステップを含む。
【0009】
第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であるステップを含む。
【0010】
第1の態様の第2の可能な実現方式を参照して、第1の態様の第3の可能な実現方式では、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
【0011】
第1の態様又は第1の態様の第1〜第3の可能な実現方式のいずれか1つを参照して、第1の態様の第4の可能な実現方式では、メモリデバイスにより、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むステップは、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイスに配置される場合、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいてデータ書き込みを実行するステップを含む。
【0012】
第2の態様によれば、本発明の実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムを提供し、メモリコントローラは、キャッシュにより送信された変更情報を受信するように構成され、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくともつのデータブロックに分割した後に生成された情報であり、少なくとも2つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報であり、変更情報により示される、データが変更されていない各未変更データブロックについて、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップするように構成され、変更情報により示される、データが変更された各変更データブロックについて、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成され、メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むように構成され、バースト長は少なくともつのデータブロックの量に等しい。
【0013】
第2の態様の第1の可能な実現方式では、メモリコントローラは、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成され、メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成される。
【0014】
第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である。
【0015】
第2の態様の第2の可能な実現方式を参照して、第2の態様の第3の可能な実現方式では、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
【0016】
第2の態様又は第2の態様の第1、第2若しくは第3の可能な実現方式を参照して、第2の態様の第4の可能な実現方式では、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイスに配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される。
【0017】
本発明の実施例で提供されるデータ書き込み方法及びメモリシステムでは、メモリコントローラは、キャッシュにより送信された変更情報に従って、データが変更されたデータブロックのみについて列アドレス及びデータをメモリデバイスに送信し、これにより、メモリデバイスは、各変更データブロックにおいてデータ書き込みを実行し、データが変更されていないデータブロックにおいて書き込みを実行しない。従って、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現される。
【図面の簡単な説明】
【0018】
本発明の実施例又は従来技術の技術的対策を明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面について簡単に紹介する
図1】本発明によるデータ書き込み方法のフローチャート
図2】本発明によるデータ書き込み方法におけるLLCの動作を示す概略図
図3】本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図
図4】本発明によるデータ書き込み方法におけるメモリデバイスの動作を示す概略図
図5】本発明によるデータ書き込み方法における書き込みコマンドの結合のシーケンス図
図6】本発明によるメモリシステムの概略構成図
【発明を実施するための形態】
【0019】
本発明の実施例の目的、技術的対策及び利点を明確にするために、以下に、本発明の実施例の添付図面を参照して、本発明の実施例の技術的対策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。創造的取り組みを行うことなく本発明の実施例に基づいて当業者により得られる全ての他の実施例は、本発明の保護範囲内に入るものとする。
【0020】
図1は、本発明の実施例1によるデータ書き込み方法のフローチャートである。この実施例は、メモリコントローラとメモリデバイスとを少なくとも含むメモリシステムにデータが書き込まれるシナリオに適用される。具体的に、この実施例は以下のステップを含む。
【0021】
101.メモリコントローラは、キャッシュにより送信された変更情報を受信する。変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、少なくとも1つのデータブロックのそれぞれのデータが変更されたか否かを示すために使用される情報である。
【0022】
キャッシュ(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ビットである。
【0023】
図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の変更情報をメモリシステムに送信する。
【0024】
102.変更情報に従って、変更情報により示される、データが変更されていない各未変更データブロックについて、メモリコントローラは、各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信せず、変更情報により示される、データが変更された各変更データブロックについて、メモリコントローラは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信する。
【0025】
このステップにおいて、メモリシステムのメモリコントローラは、受信した変更情報に従って、第1の書き込み対象のcache lineの各データブロックにおいて書き込みを実行する必要があるか否かを決定する。具体的に、図3を参照する。
【0026】
図3は、本発明によるデータ書き込み方法におけるメモリコントローラの動作を示す概略図である。図3を参照すると、メモリシステムのメモリコントローラは、要求キュー(transaction queue)、コマンドキュー(command queue)等を含む。LLCの書き込み要求は、まず要求キューに配置され、メモリコントローラは、書き込み要求を、メモリデバイスを動作させるための具体的なコマンドに変換し、コマンドをコマンドキューに記憶する。メモリコントローラは、第1の書き込み対象のcache lineの変更情報に従って、第1の書き込み対象のcache lineの少なくとも1つのデータブロックのそれぞれにおいて書き込みを実行する必要があるか否かを決定する。具体的に、データが変更されていない未変更データブロックについて、バースト書き込みは実行されない。データが変更された変更データブロックについて、変更データブロックに対応する列アドレス及びデータは、アドレスバス、データバス等を使用することにより、ビート毎にメモリコントローラに送信される。データはDDR技術における1つのクロック周期の立ち上がりと立ち下がりの双方で送信され、データバスのデータ周波数はデータバスのクロック周波数の2倍であるため、各ビートはクロック周期の半分である。
【0027】
103.メモリデバイスは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込む。バースト長は少なくとも1つのデータブロックの量に等しい。
【0028】
一般的に、第1の書き込み対象のcache lineが分割されるデータブロックの量は、連続バースト書き込みの量である。このステップでは、メモリデバイスは、それぞれの受信した列アドレス及びそれぞれの受信したデータに従って各変更データブロックにおいてバースト長のデータ書き込みを実行する。
【0029】
任意選択で、従来技術における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のデータがメモリアレイに書き込まれる。
【0030】
本発明のこの実施例で提供されるデータ書き込み方法では、メモリコントローラは、キャッシュにより送信された変更情報に従って、データが変更されたデータブロックのみについて列アドレス及びデータをメモリデバイスに送信し、これにより、メモリデバイスは、各変更データブロックにおいてデータ書き込みを実行し、データが変更されていないデータブロックにおいて書き込みを実行しない。従って、有効なデータを迅速に書き込み、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する目的が実現される。
【0031】
任意選択で、前述の実施例1において、メモリコントローラは、変更情報に従って、少なくとも1つのデータブロックのそれぞれにおいて書き込みを実行する必要があるか否かを決定する。変更情報により示される、データが変更された各変更データブロックについて、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、メモリコントローラは、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信する。対応して、メモリデバイスは、各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行する。
【0032】
具体的に、キャッシュは、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つの列アドレスを記憶し、列アドレスに対応するデコーダは、同時にデコードを実行する。
【0033】
任意選択で、前述の実施例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である。
【0034】
一般的に、キャッシュは、LLCの第1の書き込み対象のcache lineを少なくとも1つのデータブロックに分割し、少なくとも1つのデータブロックのそれぞれにおいて1つのバースト書き込みを実行する。分割後に取得されたデータブロックの量は、バースト書き込みの量、すなわち、バースト長である。この実施例では、変更データブロックの量がバースト長未満である場合、分割後に取得されたデータブロックのいくつかのデータブロックのみのデータが変更される。この場合、コマンドスケジューリングを実行するときに、メモリコントローラは、書き込みコマンドを結合し、書き込みコマンドを結合する方式で1つの固定のバースト長のクロック周期において複数の書き込みを完了し、これにより、クロック周期の浪費を回避し、メモリシステムの電力消費を低減し、メモリシステムの性能を改善する。
【0035】
具体的に、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未満になるまで、この処理を繰り返す。
【0036】
第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)を更に含む。
【0037】
具体的に、LLCの1つのcache lineのサイズが64byteであり、メモリデータバス幅が64ビットであり、バースト長BLが8に等しいことを仮定する。表1は、メモリコントローラのコマンドキューにおけるコマンドについての情報を示している。3つの書き込みコマンドが同じBankを動作させるために使用され、書き込みコマンドWrite1及びWrite3は、行Row1における書き込みに使用され、書き込みコマンドWrite2は行Row2における書き込みに使用される。
【0038】
【表1】
表1から分かるように、Write1及びWrite3は、同じ行における書き込みに使用される。CBV、すなわち、変更情報は、Write1に対応するcache lineの変更データブロックの量とWrite3に対応するcache lineの変更データブロックの量との和(表1に網掛けで図示する)が8に等しいことを示す。従って、書き込みコマンドの結合は、Write1及びWrite3について実行される。メモリコントローラは、Write1及びWrite3のスケジューリングが完了した後に、Write2をスケジューリングする。具体的に、図5を参照する。
【0039】
図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のデータブロックに対応するデータを示し、残りは類推で推定可能である。
【0040】
前述の実施例では、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個のメモリクロックが存在する。
【0041】
図6は、本発明によるメモリシステムの概略構成図であり、図1の本発明の実施例に対応する装置の実施例である。従って、具体的な実現処理について、ここでは再び説明しない。具体的に、この実施例のメモリシステム100は、メモリコントローラ10とメモリデバイス11とを少なくとも含む。
【0042】
具体的に、メモリコントローラ10は、キャッシュにより送信された変更情報を受信するように構成され、変更情報は、キャッシュがラストレベルキャッシュ(LLC)の第1の書き込み対象のキャッシュライン(cache line)を少なくとも1つのデータブロックに分割した後に生成された情報であり、少なくとも1つのデータブロックそれぞれのデータが変更されたか否かを示すために使用される情報であり、変更情報により示される、データが変更されていない各未変更データブロックについて、変更情報に従って各未変更データブロックに対応する列アドレス及び各未変更データブロックに対応するデータをメモリデバイスに送信するのをスキップするように構成され、変更情報により示される、データが変更された各変更データブロックについて、変更情報に従って各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイスに送信するように構成される。メモリデバイス11は、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータに従ってバースト長のデータを各変更データブロックに書き込むように構成され、バースト長は少なくとも1つのデータブロックの量に等しい。
【0043】
更に、メモリコントローラ10は、第1の書き込み対象のcache lineの変更データブロックの量がバースト長に等しい場合、各変更データブロックに対応する列アドレス及び各変更データブロックに対応するデータをメモリデバイス11に送信するように構成される。
【0044】
メモリデバイス11は、各列アドレスに従って、第1の書き込み対象のcache lineの各変更データブロックにおいてバースト長のデータ書き込みを実行するように構成される。
【0045】
更に、メモリコントローラ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である。
【0046】
更に、第1の書き込み対象のcache line及び少なくとも1つの第2の書き込み対象のcache lineは、同じ記憶グループBankの同じ行にあり、LLCにおいて同じ行の読み取りコマンドは存在しない。
【0047】
更に、量がバースト長に等しい列アドレスバッファ及び量がバースト長に等しい列デコーダがメモリデバイス11に配置される場合、データ書き込みは、独立した列アドレスバッファ及び独立した列デコーダを使用することにより、各変更データブロックにおいて実行される。
【0048】
当業者は、方法の実施例のステップの全部又は一部が、関係するハードウェアに命令するプログラムにより実現されてもよいことを認識し得る。プログラムは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。プログラムが実行する場合、方法の実施例のステップが実行される。前述の記憶媒体は、ROM、RAM、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
【0049】
最後に、前述の実施例は、単に本発明の技術的対策を説明することを意図するものであり、本発明を限定することを意図するものではない点に留意すべきである。前述の実施例を参照して本発明について詳細に説明したが、当業者は、依然として、本発明の実施例の技術的対策の範囲を逸脱することなく、前述の実施例で説明した技術的対策に変更を行ってもよく、或いは、その一部又は全部の技術的特徴に等価置換を行ってもよいことを認識すべきである。
図1
図2
図3
図4
図5
図6