JP6464916B2 - メモリ装置及びメモリ装置の制御方法 - Google Patents

メモリ装置及びメモリ装置の制御方法 Download PDF

Info

Publication number
JP6464916B2
JP6464916B2 JP2015097684A JP2015097684A JP6464916B2 JP 6464916 B2 JP6464916 B2 JP 6464916B2 JP 2015097684 A JP2015097684 A JP 2015097684A JP 2015097684 A JP2015097684 A JP 2015097684A JP 6464916 B2 JP6464916 B2 JP 6464916B2
Authority
JP
Japan
Prior art keywords
memory
data
stored
buffer
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015097684A
Other languages
English (en)
Other versions
JP2016212754A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015097684A priority Critical patent/JP6464916B2/ja
Priority to US15/137,031 priority patent/US9921779B2/en
Publication of JP2016212754A publication Critical patent/JP2016212754A/ja
Application granted granted Critical
Publication of JP6464916B2 publication Critical patent/JP6464916B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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/281Single cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Memory System (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリ装置及びメモリ装置の制御方法に関する。
CPU(Central Processing Unit)等のホストに対してDRAM(Dynamic Random Access Memory)素子等を有する複数のメモリデバイスが接続されたシステムにおいて、複数のメモリデバイスの接続形態としては、ホストに対して1対1で接続する並列接続やホストに対して縦続接続するカスケード接続がある。ホストは、内部のキャッシュメモリにデータが存在しない(ミスヒット)場合、接続されたメモリデバイス(メインメモリ)からデータを読み出すとともに、キャッシュメモリへの書き込みを実施することで、メモリアクセスのスループットを改善している。
また、アクセス速度が異なるメモリを有するシステムにおいて、ホスト側で、データの読み出し頻度が高いデータをアクセス速度が速いメモリに割り当てるように物理アドレスと論理アドレスのマッチングを制御する技術が提案されている(例えば、特許文献1参照)。
特開2014−16744号公報
ホストに対して複数のメモリデバイスが接続されたシステムにおいて、高記憶容量でかつ高スループットを実現するためには、以下のような課題がある。例えば、複数のメモリデバイスを1対1で並列に接続すると、メモリアクセスのレイテンシはすべてのメモリデバイスで同じであるが、ホストと接続する信号数(ホストの接続ピン数)がメモリデバイス数に応じて増加するためにホストの面積等が増加しコストが増大する。複数のメモリデバイスをカスケード接続すると、ホストと接続する信号数は少なくホストの面積等の増加を抑えられるが、ホストに対して遠いメモリデバイスに格納されたデータを読み出すには、その間にあるメモリデバイスを経由してアクセスするためにレイテンシが大きくなる。
1つの側面では、本発明の目的は、ホストに対して複数のメモリデバイスがカスケード接続されたシステムにおけるデータの割り当てを最適化し、メモリアクセスのレイテンシを改善することにある。
メモリ装置の一態様は、複数のメモリ領域を有するメモリ部と、メモリ部に格納されているデータのメモリアドレス及び読み出し回数をメモリ領域毎に保持するテーブル部と、カスケード接続された他のメモリ装置から入力されるデータ及びメモリアドレスを格納する第1のバッファと、カスケード接続された他のメモリ装置に出力するデータ及びメモリアドレスを格納する第2のバッファと、制御部とを有する。制御部は、テーブル部に保持されている読み出し回数の最少値がカスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、次のメモリ装置から読み出されたデータ及びメモリアドレスを第1のバッファに格納するとともに読み出し回数が最少のメモリ領域のデータ及びメモリアドレスを第2のバッファを介して次のメモリ装置に出力する。また、制御部は、メモリ部のリフレッシュを実行するタイミングで、読み出し回数が最少のメモリ領域のデータ及びメモリアドレスを第1のバッファに格納されているデータ及びメモリアドレスで書き換える。
発明の一態様においては、読み出し回数の少ないデータを、カスケード接続された次のメモリ装置から読み出された読み出し回数の多いデータで書き換えて、システムにおけるデータの割り当てを読み出し回数に応じた割り当てに最適化でき、メモリアクセスのレイテンシを改善することが可能となる。
本発明の実施形態におけるシステム構成の例を示す図である。 本実施形態におけるメモリデバイスの構成例を示す図である。 本実施形態における管理テーブルを説明するための図である。 本実施形態における書き込み動作の例を示すフローチャートである。 本実施形態における読み出し動作の例を示すフローチャートである。 本実施形態における読み出し動作を説明するための図である。 本実施形態における書き換え動作の例を示すフローチャートである。 本実施形態における書き換え動作を説明するための図である。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態におけるシステム構成の例を示す図である。本実施形態におけるシステムは、CPU(Central Processing Unit)等のホスト101、及びホスト101に対してカスケード接続(縦続接続)された複数のメモリデバイス(メモリ装置)102−A、102−B、102−Cを有する。
メモリデバイス102−A、102−B、102−Cの各々は、例えばDRAM(Dynamic Random Access Memory)素子等の記憶素子を有する。なお、図1においては、3つのメモリデバイス102−A、102−B、102−Cがカスケード接続された例を示しているが、これに限定されるものではなく、カスケード接続されるメモリデバイスの数は任意の複数である。
図1に示したシステムでは、メモリデバイス102−Bに格納されているデータをホスト101が読み出す場合、メモリデバイス102−Aを経由してメモリデバイス102−Bに対するメモリアクセスが行われる。同様に、メモリデバイス102−Cに格納されているデータをホスト101が読み出す場合、メモリデバイス102−A及びメモリデバイス102−Bを経由してメモリデバイス102−Cに対するメモリアクセスが行われる。したがって、ホスト101からのメモリアクセスのレイテンシは、メモリデバイス102−A、メモリデバイス102−B、メモリデバイス102−Cの順に大きくなる。
メモリデバイス102−A、102−B、102−Cの構成について説明する。図2は、本実施形態におけるメモリデバイス(メモリ装置)102の構成例を示す図である。本実施形態におけるメモリデバイス102は、メモリ部201、制御部202、リンク部203、204、及びスイッチ部205を有する。
リンク部203、204は、外部と命令(コマンド)、アドレスadrs及びデータdataをシリアル又はパラレルで送受信する。リンク部203は、前段に接続された1つ前のメモリデバイス(初段のメモリデバイスである場合にはホスト101)と命令、アドレス及びデータを送受信する。リンク部204は、後段に接続された次のメモリデバイスと命令、アドレス及びデータを送受信する。スイッチ部205は、メモリ間の命令、アドレス及びデータの受渡しを制御する。また、スイッチ部205は、例えば、競合したときの順序制御を行ったりする。
メモリ部201は、それぞれデータを格納する複数のメモリセルを有するメモリセル部211及び選択されたメモリセルに対しデータを入出力するためのマルチプレクサ212を有する。また、メモリ部201は、制御部202から供給されるローアドレス及びカラムアドレスに従ってメモリセルを選択するローデコーダ213及びカラムデコーダ214を有する。
制御部202は、メモリ部201を制御する。制御部202は、メモリ制御部221、管理テーブル222、比較回路223、書き込み用バッファ224、及び読み出し用バッファ225を有する。メモリ制御部221は、アクセス制御部226、ライトバッファ227、リードバッファ228、ECC処理部229、及びリフレッシュカウンタ230を有し、メモリ部201に対するアクセスを制御する。
アクセス制御部226は、スイッチ部205を介して入力される命令(コマンド)CMD、比較回路223の出力、及びリフレッシュカウンタ230の出力等に基づいて、メモリ部201に供給するローアドレスやカラムアドレスの生成やタイミング制御を行う。ライトバッファ227は、メモリに書き込むデータWDT(XIDT)をメモリ部201に出力する。リードバッファ228は、メモリ部201から読み出したデータRDT(XODT)を出力する。
ECC処理部229は、メモリ部201から読み出されたデータRDTについて、誤り訂正符号(ECC:Error Correcting Code)に基づいてエラーの有無を判定し、訂正可能なエラー(コレクタブルエラー)である場合には誤り訂正処理を行う。また、ECC処理部229は、必要に応じてアクセス制御部226に対して冗長処理を要求する。リフレッシュカウンタ230は、経過時間(経過サイクル)をカウントしてリフレッシュの実行を要求する。
管理テーブル222は、メモリ部201に格納されるデータのメモリアドレスや読み出し回数を保持し管理するためのテーブルである。管理テーブル222は、メモリ部201のラインサイズ単位のメモリ領域毎にレジスタを有する。各々のレジスタは、図3に示すように3つのフィールド301、302、303を有する。図3は、本実施形態における管理テーブル222を説明するための図である。図3において、図2に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
第1のフィールド301には、対応するメモリ領域に格納されているデータが有効であるか無効であるか等のメモリ領域の状態を示す情報V[1:0]が格納される。第2のフィールド302には、対応するメモリ領域に格納されているデータの読み出し回数を示すカウント値HOT[15:0]が格納される。第3のフィールド303には、対応するメモリ領域に格納されているデータのメモリアドレスが格納される。ここで、第3のフィールド303には、メモリアドレスのうち、ラインサイズ分に相当する下位ビットを除いたタグ部TAG_ADDが格納される。
比較回路223は、ホスト101から出力されたアドレスadrsのタグ部MADTAGと管理テーブル222に格納されているタグ部TAG_ADDとの比較を行う。比較回路223は、アドレスのタグ部の比較結果(一致するか否かを示す信号)を出力する。
書き込み用バッファ224及び読み出し用バッファ225は、それぞれメモリデバイス102間でのデータの入れ換えに用いる情報を保持するバッファである。書き込み用バッファ224は、自らのメモリ部201に書き込む入れ換えデータに係る情報XINを保持するためのバッファであり、書き込みフラグWflg、アドレスWad、データWdt、及びタグWtagを保持する。また、読み出し用バッファ225は、カスケード接続された次のメモリデバイスのメモリ部201に書き込む追い出しデータに係る情報XOUTを保持するためのバッファであり、読み出しフラグRflg、アドレスRad、データRdt、及びタグRtagを保持する。
次に、動作について説明する。以下では、メモリデバイス102−AをメモリAと称し、メモリデバイス102−BをメモリBと称し、メモリデバイス102−CをメモリCと称して説明する。
<ホスト101からの書き込み動作>
まず、ホスト101からの書き込み動作について説明する。図4は、本実施形態におけるホスト101からの書き込み動作の例を示すフローチャートである。メモリAがホスト101からの書き込み命令を受信すると(S101)、メモリAの制御部202は、管理テーブル222において有効(情報V[1:0]=“10”)を示すレジスタに格納されているタグ部TAG_ADDとホスト101からのメモリアドレスのタグ部MADTAGとが一致するか否かを判定する(S102)。
ホスト101からのメモリアドレスのタグ部MADTAGに一致するタグ部TAG_ADDが管理テーブル222に存在しない場合(S102のNO)には、メモリAの制御部202は、メモリ部201にメモリ領域の空きがあるか否かを判定する(S103)。メモリAの制御部202は、管理テーブル222において情報V[1:0]が値“00”のメモリ領域を空き状態と判定し、情報V[1:0]が値“00”のレジスタがあれば、メモリ領域の空きがあると判定する。
管理テーブル222に格納されているタグ部TAG_ADDとホスト101からのメモリアドレスのタグ部MADTAGとが一致する場合(S102のYES)、もしくはメモリ領域の空きがある場合(S103のYES)には、ステップS104に進む。そして、メモリAの制御部202は、そのメモリ領域に対して書き込みを行う(S104)とともに、管理テーブル222を更新する(S105)。ステップS105での管理テーブル222の更新では、書き込みを行ったメモリ領域に対応するレジスタにタグ部TAG_ADDとしてメモリアドレスのタグ部を登録するとともに、情報V[1:0]を値“10”に設定する。その後、メモリAは、書き込みを行ったことをホスト101に対して応答する(S106)。
ステップS103での判定の結果、メモリ領域の空きがない場合(S103のNO)には、メモリAは、書き込み命令を次のメモリBに転送する(S107)。書き込み命令を受けたメモリBの制御部202は、管理テーブル222において有効なレジスタに格納されているタグ部TAG_ADDとメモリアドレスのタグ部MADTAGとが一致するか否かを判定する(S108)。メモリアドレスのタグ部MADTAGに一致するタグ部TAG_ADDが管理テーブル222に存在しない場合(S108のNO)には、メモリBの制御部202は、メモリ部201にメモリ領域の空きがあるか否かを判定する(S109)。
管理テーブル222に格納されているタグ部TAG_ADDとメモリアドレスのタグ部MADTAGとが一致する場合(S108のYES)、もしくはメモリ領域の空きがある場合(S109のYES)には、ステップS110に進む。そして、メモリBの制御部202は、そのメモリ領域に対して書き込みを行う(S110)とともに、管理テーブル222を更新する(S111)。ステップS111での管理テーブル222の更新では、書き込みを行ったメモリ領域に対応するレジスタにタグ部TAG_ADDとしてメモリアドレスのタグ部を登録するとともに、情報V[1:0]を値“10”に設定する。また、メモリBは、書き込みを行ったことをメモリAに対して応答し(S112)、それを受けたメモリAはホスト101に対して応答する(S106)。
なお、ステップS109での判定の結果、メモリ領域の空きがない場合(S109のNO)には、メモリBは、書き込み命令を次のメモリCに転送する(S113)。書き込み命令を受けたメモリCでは、メモリBと同様の処理を行う。
<ホスト101からの読み出し動作>
次に、ホスト101からの読み出し動作について説明する。図5は、本実施形態におけるホスト101からの読み出し動作の例を示すフローチャートである。メモリAがホスト101からの読み出し命令を受信すると(S201)、メモリAの制御部202は、管理テーブル222において有効なレジスタに格納されているタグ部TAG_ADDとホスト101からのメモリアドレスのタグ部MADTAGとが一致するか否かを判定する(S202)。
管理テーブル222に格納されているタグ部TAG_ADDとホスト101からのメモリアドレスのタグ部MADTAGとが一致する場合(S202のYES)、メモリAの制御部202は、そのメモリ領域からデータを読み出す(S203)。そして、メモリAの制御部202は、読み出したデータについて誤り訂正符号に基づいてエラーの有無を判定し(S204)、データエラーがあり訂正可能であれば(ステップS205のYES)、エラーを訂正するとともに情報V[1:0]を不良を示す値“11”に設定する(S206)。
続いて、メモリAの制御部202は、データを読み出したメモリ領域に対応するレジスタに格納されている読み出し回数のカウント値HOT[15:0]を1増加させ、管理テーブル222を更新する(S207)。その後、メモリAは、ホスト101に読み出し命令に対する応答を行う(S208)。
ステップS202での判定の結果、ホスト101からのメモリアドレスのタグ部MADTAGに一致するタグ部TAG_ADDが管理テーブル222に存在しない場合(S202のNO)には、メモリAは、読み出し命令を次のメモリBに転送する(S209)。また、メモリAの制御部202は、読み出し用バッファ225のアドレスRad_A(“_A”はメモリAに係るものであることを示す。以下についても同様。)にメモリアドレスを格納する(S210)。続いて、メモリAの制御部202は、管理テーブル222において有効かつカウント値HOT[15:0]の値が最少であるタグ部TAG_ADDを読み出すとともに、対応するメモリ領域からデータを読み出す(S212)。
メモリAの制御部202は、入れ換え元の情報をバッファ224、225に格納する(S212)。ステップS212での入れ換え元の情報の格納では、ステップS211において読み出したデータ及びタグ部TAG_ADDを読み出し用バッファ225のデータRdt_A及びタグRtag_Aに格納するとともに、対応するメモリ領域を示すアドレス値を書き込み用バッファ224のアドレスWad_Aに格納する。そして、メモリAの制御部202は、読み出し用バッファ225の読み出しフラグRflg_Aを“1”に設定する(S213)。
読み出し命令を受けたメモリBの制御部202は、管理テーブル222において有効なレジスタに格納されているタグ部TAG_ADDとメモリアドレスのタグ部MADTAGとが一致するか否かを判定する(S214)。管理テーブル222に格納されているタグ部TAG_ADDとメモリアドレスのタグ部MADTAGとが一致する場合(S214のYES)、メモリBの制御部202は、そのメモリ領域からデータを読み出す(S215)。そして、メモリBの制御部202は、読み出したデータについて誤り訂正符号に基づいてエラーの有無を判定し(S216)、データエラーがあり訂正可能であれば(ステップS217のYES)、エラーを訂正するとともに情報V[1:0]を値“11”に設定する(S218)。
続いて、メモリBの制御部202は、データを読み出したメモリ領域に対応するレジスタに格納されている読み出し回数のカウント値HOT[15:0]を1増加させ、管理テーブル222を更新する(S219)。そして、メモリBは、読み出しデータ、管理テーブル222のカウント値HOT_B(“_B”はメモリBに係るものであることを示す。以下についても同様。)及びタグ部TAG_ADD_Bを1つ前に接続されたメモリデバイスであるメモリAへ応答し、対応するメモリ領域を示すアドレス値を書き込み用バッファ224のアドレスWad_Bに格納する(S220)。なお、ステップS214での判定の結果、メモリアドレスのタグ部MADTAGに一致するタグ部TAG_ADDが管理テーブル222に存在しない場合(S214のNO)には、メモリBは、読み出し命令を次のメモリCに転送する(S226)。読み出し命令を受けたメモリCでは、メモリBと同様の処理を行う。
メモリBからの応答を受けたメモリAは、ホスト101に読み出し命令に対する応答を行う(S208)。また、メモリAの制御部202は、書き込み用バッファ224のアドレスWad_Aのアドレス値が示すメモリ領域に対応するカウント値HOT_Aと、メモリBから受けたカウント値HOT_Bとを比較する(S221)。すなわち、メモリAの制御部202は、メモリAの管理テーブル222において最少のカウント値HOT_AとメモリBから受けたカウント値HOT_Bとを比較する。
カウント値HOT_Aがカウント値HOT_Bより少ない場合(S222のYES)には、メモリAの制御部202は、書き込み用バッファ224の書き込みフラグWflg_Aを“1”に設定する(S223)とともに、入れ換え先の情報を書き込み用バッファ224に格納する(S224)。ステップS224での入れ換え先の情報の格納では、メモリBからの読み出しデータ及びタグ部TAG_ADD_Bを書き込み用バッファ224のデータWdt_A及びタグWtag_Aに格納する。そして、書き換え動作に移行する。なお、メモリBからの読み出しデータは、訂正可能なエラーがあった場合に誤り訂正が施されたデータであるので、後述する書き換え動作では、誤り訂正済みのデータで書き換えが行われることとなる。
ステップS221での比較の結果、カウント値HOT_Aがカウント値HOT_B以上である場合(S222のNO)には、メモリAの制御部202は、書き込み用バッファ224の書き込みフラグWflg_Aを“0”に設定する(S225)。
例えば、図6に示すように、ホスト101からメモリアドレス0x02CA_xxxxに対する読み出し命令(リード命令)601が発行されたとする。このとき、メモリAの管理テーブル222にはメモリアドレスのタグ部0x02CAに一致するものが存在しないので、読み出し用バッファ225のアドレスRad_Aにメモリアドレスを格納するとともに、読み出し命令をメモリBに転送する。また、メモリAでは、管理テーブル222においてカウント値HOTが最少であるタグ部及び対応するメモリ領域のデータが読み出し用バッファ225のタグRtag_A及びデータRdt_Aに格納されるとともに、対応するメモリ領域を示すアドレス値が書き込み用バッファ224のアドレスWad_Aに格納される。そして、読み出し用バッファ225の読み出しフラグRflg_Aが“1”に設定される。
メモリアドレス0x02CA_xxxxに対する読み出し命令を受けたメモリBの管理テーブル222にはメモリアドレスのタグ部0x02CAに一致するものが存在するので、メモリBでは、対応するメモリ領域からデータが読み出される。また、データが読み出されたメモリ領域に対応するカウント値HOTがメモリAにおけるカウント値HOTの最少よりも大きいので、メモリAの書き込み用バッファ224の書き込みフラグWflg_Aが“1”に設定される。そして、メモリBでの読み出しデータ及びデータが読み出されたメモリ領域に対応するタグ部がメモリAの書き込み用バッファ224のデータWdt_A及びタグWtag_Aに格納される。また、データが読み出されたメモリ領域を示すアドレス値がメモリBの書き込み用バッファ224のアドレスWad_Bに格納される。
<メモリデバイス102間での書き換え動作>
次に、メモリデバイス102間での書き換え動作について説明する。図7は、本実施形態におけるメモリデバイス102間での書き換え動作の例を示すフローチャートである。以下では、メモリAとメモリBとの間でデータの書き換え(入れ換え)を行う場合について説明するが、他の隣接するメモリデバイス間でのデータの書き換え(入れ換え)も同様である。このメモリデバイス102間での書き換え動作は、ホスト101が処理に介在することなく、メモリデバイス102間の処理のみで行われる。
メモリAの制御部202は、書き込み用バッファ224の書き込みフラグWflg_A及び読み出し用バッファ225の読み出しフラグRflg_Aがともに“1”であるか否かを確認する(S301)。書き込みフラグWflg_A及び読み出しフラグRflg_Aの少なくとも一方が“0”である場合(S301のNO)には、書き換え動作を終了する。言い換えれば、メモリAの制御部202は、書き込みフラグWflg_A及び読み出しフラグRflg_Aがともに“1”になった場合(S301のYES)に書き換え処理を開始してステップS302に進む。
書き換え処理を開始すると、メモリAの制御部202は、読み出し用バッファ225のアドレスRad_A、データRdt_A、及びタグRtag_Aに格納されている値をメモリBに転送する(S302)とともに、対応するメモリ領域のデータをメモリBからの読み出しデータに書き換える。この書き換えタイミングは、DRAMにおけるリフレッシュサイクルを利用する。リフレッシュの実行タイミング(リフレッシュビジィ)でなければ(S303のNO)、メモリAの制御部202は、リフレッシュカウンタ230のカウント値を1増加させる(S304)。リフレッシュカウンタ230のカウント値が所定の値に到達しリフレッシュの実行タイミングになる(S303のYES)と、メモリAの制御部202は、書き込み用バッファ224の書き込みフラグWflg_Aの状態を確認する。
メモリAの制御部202は、書き込みフラグWflg_Aが“1”であれば、書き込み用バッファ224のアドレスWad_Aに格納されたアドレス値が示すメモリ領域にデータWdt_Aに格納されたデータを書き込む(S305)。なお、書き込みフラグWflg_Aが“0”であれば、メモリAの制御部202は、通常のリフレッシュ動作を行う。
書き換えデータをメモリ領域に書き込んだ後、メモリAの制御部202は、書き込みを行ったメモリ領域に対応するレジスタのタグ部に書き込み用バッファ224のタグWtag_Aに格納された値を登録するとともにカウント値HOT[15:0]を1増加させ、管理テーブル222を更新する(S306)。以上の動作が終了した後、メモリAの制御部202は、書き込み用バッファ224の書き込みフラグWflg_A及び読み出し用バッファ225の読み出しフラグRflg_Aをともに“0”にリセットして書き換え動作を終了する。
また、メモリAからアドレスRad_A、データRdt_A、及びタグRtag_Aを受けたメモリBの制御部202は、管理テーブル222において有効なレジスタに格納されているタグ部TAG_ADDとアドレスRad_Aのタグ部とが一致するか否かを判定する(S308)。管理テーブル222に格納されているタグ部TAG_ADDとアドレスRad_Aとが一致する場合(S308のYES)には、さらに情報V[1:0]が“10”であるか、言い換えれば書き込む領域が不良となった領域でないかを確認する(S309)。これは、書き込む領域が不良とされた領域である場合に、書き込むデータを空き状態の異なるメモリ領域に割り当てるためである。
アドレスRad_Aのタグ部に一致するタグ部TAG_ADDが管理テーブル222に存在しない場合(S308のNO)、もしくは一致するものが存在するが情報V[1:0]が“10”でない場合(S309のNO)には、メモリBの制御部202は、メモリ部201にメモリ領域の空きがあるか否かを判定する(S310)。判定の結果、メモリ領域の空きがある場合(S310のYES)には、メモリBの制御部202は、そのメモリ領域を示すアドレス値を書き込み用バッファ224のアドレスWad_Bに格納する(S311)。
続いて、メモリBの制御部202は、メモリAからのデータRdt_A及びタグRtag_Aの値を書き込み用バッファ224のデータWdt_B及びタグWtag_Bに格納するとともに、書き込みフラグWflg_Bを“1”に設定する(S312)。メモリBにおけるデータ書き換えのタイミングも、DRAMにおけるリフレッシュサイクルを利用する。リフレッシュの実行タイミング(リフレッシュビジィ)でなければ(S313のNO)、メモリBの制御部202は、リフレッシュカウンタ230のカウント値を1増加させる(S404)。リフレッシュカウンタ230のカウント値が所定の値に到達しリフレッシュの実行タイミングになる(S313のYES)と、メモリBの制御部202は、書き込み用バッファ224の書き込みフラグWflg_Bの状態を確認する。
メモリBの制御部202は、書き込みフラグWflg_Bが“1”であれば、書き込み用バッファ224のアドレスWad_Bに格納されたアドレス値が示すメモリ領域にデータWdt_Bに格納されたデータを書き込む(S315)。なお、書き込みフラグWflg_Bが“0”であれば、メモリBの制御部202は、通常のリフレッシュ動作を行う。
書き換えデータをメモリ領域に書き込んだ後、メモリBの制御部202は、書き込みを行ったメモリ領域に対応するレジスタのタグ部に書き込み用バッファ224のタグWtag_Bに格納された値を登録し、管理テーブル222を更新する(S316)。なお、ステップS316での管理テーブル222の更新では、カウント値HOT[15:0]を変化させずに保持するようにしているが、カウント値HOT[15:0]を1減少させるように制御しても良い。以上の動作が終了した後、メモリBの制御部202は、書き込み用バッファ224の書き込みフラグWflg_B及び読み出し用バッファ225の読み出しフラグRflg_Bをともに“0”にリセットして書き換え動作を終了する。
例えば、図8に示すように、メモリAにおいて書き込み用バッファ224の書き込みフラグWflg_A及び読み出し用バッファ225の読み出しフラグRflg_Aがともに“1”になると、読み出し用バッファ225のアドレスRad_A、データRdt_A、及びタグRtag_Aに格納されている値がメモリBに転送される。メモリBの管理テーブル222にメモリAから転送されたタグRtag_Aと一致するタグ部があり、かつその情報V[1:0]が“10”であるので、メモリAから転送されたデータRdt_A及びタグRtag_Aの値は、メモリBの書き込み用バッファ224のデータWdt_B及びタグWtag_Bに格納される。
そして、メモリAでは、リフレッシュを実行するタイミングにおいて書き込み用バッファ224の書き込みフラグWflg_Aが“1”であると、書き込み用バッファ224のアドレスWad_Aが示すメモリ領域にデータWdt_Aのデータが書き込まれるとともに、管理テーブル222の対応するレジスタにタグWtag_Aのタグが書き込まれる。同様に、メモリBでは、リフレッシュを実行するタイミングにおいて書き込み用バッファ224の書き込みフラグWflg_Bが“1”であると、書き込み用バッファ224のアドレスWad_Bが示すメモリ領域にデータWdt_Bのデータが書き込まれるとともに、管理テーブル222の対応するレジスタにタグWtag_Bのタグが書き込まれる。
本実施形態によれば、複数のメモリデバイスがカスケード接続されたシステムにおいて、あるメモリデバイス(例えば、メモリA)にある読み出し回数の少ないデータと次のメモリデバイス(例えば、メモリB)にある読み出し回数の多いデータとをメモリデバイス間の制御により入れ換える。これにより、システムにおいて読み出し回数の多いデータをホスト101に近い(メモリアクセスレイテンシの小さい)メモリデバイスに割り当てることができ、データの割り当てを読み出し回数(データの使用頻度)に応じた割り当てに最適化しメモリアクセスのレイテンシを改善することができる。また、割り当てを最適化するためのメモリデバイスでのデータの書き換えは、リフレッシュを実行するタイミングで行うので、通常のアクセスに影響を与えることなく、システム性能を損なわずに実現することができる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 ホスト
102 メモリデバイス(メモリ装置)
201 メモリ部
202 制御部
203、204 リンク部
205 スイッチ部
221 メモリ制御部
222 管理テーブル
223 比較回路
224 書き込み用バッファ
225 読み出し用バッファ
226 アクセス制御部
227 ライトバッファ
228 リードバッファ
229 ECC処理部
230 リフレッシュカウンタ

Claims (8)

  1. データを格納する複数のメモリ領域を有するメモリ部と、
    前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、
    カスケード接続された他のメモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第1のバッファと、
    前記カスケード接続された他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第2のバッファと、
    (1)前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第1のバッファに格納するとともに前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第2のバッファを介して前記次のメモリ装置に出力し、(2)前記メモリ部のリフレッシュを実行するタイミングで、前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第1のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換える制御部と、を有することを特徴とするメモリ装置。
  2. 前記制御部は、(1)前記メモリ部からデータを読み出したことによって前記カスケード接続された1つ前の前記メモリ装置からデータ及び該メモリ装置からのデータのメモリアドレスが入力された場合に、前記1つ前のメモリ装置から入力されたデータ及び該入力されたデータのメモリアドレスを前記第1のバッファに格納し、(2)前記メモリ部のリフレッシュを実行するタイミングで、読み出しが行われたメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第1のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換えることを特徴とする請求項1記載のメモリ装置。
  3. 前記制御部は、前記メモリ部からデータを読み出した場合に読み出したデータと該読み出したデータのメモリアドレス及び読み出し回数を前記カスケード接続された1つ前のメモリ装置に出力することを特徴とする請求項1又は2記載のメモリ装置。
  4. 前記テーブル部は、前記メモリ領域の状態を示す情報を前記メモリ領域毎に保持し、
    前記制御部は、前記メモリ領域にデータを書き込むとき、前記テーブル部を参照し該書き込むデータのメモリアドレスが一致する前記メモリ領域がない場合には、前記メモリ領域の状態を示す情報を基に空き状態の前記メモリ領域を判定し該書き込むデータの書き込みを行うメモリ領域を決定することを特徴とする請求項1〜3の何れか1項に記載のメモリ装置。
  5. 前記制御部は、前記メモリ部から読み出したデータのエラーの有無を判定し、訂正可能なエラーである場合には訂正したデータで書き換えを行うことを特徴とする請求項1〜4の何れか1項に記載のメモリ装置。
  6. 前記制御部は、前記エラーを有すると判定されたデータが格納されている前記メモリ領域に対する書き換えを行うときには、書き換えるデータを空き状態の前記メモリ領域に割り当てることを特徴とする請求項5記載のメモリ装置。
  7. カスケード接続された複数のメモリ装置と、
    前記複数のメモリ装置の1つと接続され、前記複数のメモリ装置に対するメモリアクセスを行うホストとを有し、
    前記メモリ装置は、
    データを格納する複数のメモリ領域を有するメモリ部と、
    前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、
    他の前記メモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第1のバッファと、
    他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第2のバッファと、
    (1)前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第1のバッファに格納するとともに前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第2のバッファを介して前記次のメモリ装置に出力し、(2)前記メモリ部のリフレッシュを実行するタイミングで、前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第1のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換える制御部と、を有することを特徴とする情報処理装置。
  8. データを格納する複数のメモリ領域を有するメモリ部と、前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、カスケード接続された他のメモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第1のバッファと、前記カスケード接続された他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第2のバッファと、前記メモリ部を制御する制御部と、を有するメモリ装置の制御方法であって、
    前記メモリ部に要求されたデータがない場合に、前記テーブル部に保持されている読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第2のバッファに格納し、
    前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第1のバッファに格納するとともに前記第2のバッファに格納されているデータ及び該格納されているデータのメモリアドレスを前記次のメモリ装置に出力し、
    前記メモリ部のリフレッシュを実行するタイミングで、前記制御部が前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第1のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換えることを特徴とするメモリ装置の制御方法。
JP2015097684A 2015-05-12 2015-05-12 メモリ装置及びメモリ装置の制御方法 Expired - Fee Related JP6464916B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015097684A JP6464916B2 (ja) 2015-05-12 2015-05-12 メモリ装置及びメモリ装置の制御方法
US15/137,031 US9921779B2 (en) 2015-05-12 2016-04-25 Memory apparatus, memory system and memory controlling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015097684A JP6464916B2 (ja) 2015-05-12 2015-05-12 メモリ装置及びメモリ装置の制御方法

Publications (2)

Publication Number Publication Date
JP2016212754A JP2016212754A (ja) 2016-12-15
JP6464916B2 true JP6464916B2 (ja) 2019-02-06

Family

ID=57277239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015097684A Expired - Fee Related JP6464916B2 (ja) 2015-05-12 2015-05-12 メモリ装置及びメモリ装置の制御方法

Country Status (2)

Country Link
US (1) US9921779B2 (ja)
JP (1) JP6464916B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932175B (zh) * 2017-05-24 2022-01-11 建兴储存科技(广州)有限公司 固态储存装置的控制方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3093493B2 (ja) * 1992-11-16 2000-10-03 キヤノン株式会社 画像記憶検索装置
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
US7966446B2 (en) * 2005-09-12 2011-06-21 Samsung Electronics Co., Ltd. Memory system and method having point-to-point link
US7496711B2 (en) * 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
JP2008090876A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 不揮発性半導体記憶装置
US8166316B2 (en) * 2008-06-27 2012-04-24 Oracle America, Inc. Single interface access to multiple bandwidth and power memory zones
JP2013061847A (ja) * 2011-09-14 2013-04-04 Sony Corp 情報処理装置および情報処理方法
JP2014016744A (ja) 2012-07-06 2014-01-30 Fujitsu Semiconductor Ltd 制御装置、および制御方法
US9032137B2 (en) * 2012-11-21 2015-05-12 Intel Corporation Flexible wear management for non-volatile memory

Also Published As

Publication number Publication date
JP2016212754A (ja) 2016-12-15
US20160335029A1 (en) 2016-11-17
US9921779B2 (en) 2018-03-20

Similar Documents

Publication Publication Date Title
TWI762479B (zh) Ddr相容非同步記憶體模組、系統與操作記憶體模組的方法
CN109983536B (zh) 响应标签匹配命令的存储电路
US8046527B2 (en) Apparatus and method for using a page buffer of a memory device as a temporary cache
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US9122498B2 (en) Firmware code loading method, memory controller and memory storage apparatus
WO2017210144A1 (en) Method and apparatus for remote prefetches of variable size
US20110022783A1 (en) Flash storage with increased throughput
JP2002373115A (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
CN101836194B (zh) 控制数据信道的优化解决方案
US9734921B2 (en) Memory repair using external tags
WO2018090255A1 (zh) 内存访问技术
JP2006134324A (ja) ロッキング・キャッシュを用いる直接的保存
US20150058531A1 (en) Data writing method, memory control circuit unit and memory storage apparatus
US10423548B2 (en) Memory controller, control method for the memory controller, and control method for memory
JP4569182B2 (ja) 半導体装置
US11119924B2 (en) Interface device including ports and a cache memory, and control method thereof
JP6464916B2 (ja) メモリ装置及びメモリ装置の制御方法
WO2016043158A1 (ja) メモリ制御回路および記憶装置
JP3204295B2 (ja) キャッシュメモリシステム
JPH06348593A (ja) データ転送制御装置
US20110022782A1 (en) Flash storage with array of attached devices
US20220308766A1 (en) Memory controller and memory system
JP4327238B2 (ja) システムコントローラおよびキャッシュ制御方法
US20160328328A1 (en) Semiconductor apparatus and operating method thereof
US6996675B2 (en) Retrieval of all tag entries of cache locations for memory address and determining ECC based on same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181224

R150 Certificate of patent or registration of utility model

Ref document number: 6464916

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees