JP6228523B2 - メモリ制御回路および半導体記憶装置 - Google Patents

メモリ制御回路および半導体記憶装置 Download PDF

Info

Publication number
JP6228523B2
JP6228523B2 JP2014191882A JP2014191882A JP6228523B2 JP 6228523 B2 JP6228523 B2 JP 6228523B2 JP 2014191882 A JP2014191882 A JP 2014191882A JP 2014191882 A JP2014191882 A JP 2014191882A JP 6228523 B2 JP6228523 B2 JP 6228523B2
Authority
JP
Japan
Prior art keywords
memory
data
controller
read
control circuit
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.)
Active
Application number
JP2014191882A
Other languages
English (en)
Other versions
JP2016062505A (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.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2014191882A priority Critical patent/JP6228523B2/ja
Priority to PCT/JP2015/076009 priority patent/WO2016043158A1/ja
Publication of JP2016062505A publication Critical patent/JP2016062505A/ja
Priority to US15/266,495 priority patent/US20170004095A1/en
Application granted granted Critical
Publication of JP6228523B2 publication Critical patent/JP6228523B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • 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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/1052Security improvement

Description

本発明の実施形態は、メモリ制御回路および半導体記憶装置に関する。
メモリウォール問題と称されるメインメモリとプロセッサの速度差は依然として大きな問題である。メインメモリとして一般的に用いられるDRAM(Dynamic RAM)より高速アクセスが可能な他のメモリ(例えば、MRAM(Magnetoresistive RAM)を利用することでメインメモリの高速化が期待されている。
MRAMはアクセス速度の側面からはDRAMより優位であるものの、集積度の面で劣る傾向にある。したがって、近年のメインメモリの大容量化を考慮すると、メインメモリ全てをMRAMで構成することは困難である。
特開平7−319767号公報
本発明が解決しようとする課題は、容量を維持しつつ、アクセス速度を向上可能なメモリ制御回路および半導体記憶装置を提供することである。
本実施形態によれば、第1データ量を単位としてアクセスされる第1メモリに対するアクセス制御と、前記第1メモリと同一メモリ階層に属し前記第1データ量よりも多い第2データ量を単位として前記第1メモリよりも遅い読出し速度で第2メモリに対するアクセス制御と、を行うメモリコントローラを備えるメモリ制御回路が提供される。
本発明の一実施形態によるメモリ制御回路1のブロック図。 メモリコントローラ6の内部構成を具体化した一例を示すブロック図。 アクセス制御のデータ量の単位を説明する図。 図2のメモリコントローラ6の構成に誤り検出部14を追加したブロック図。 調停部11の内部構成を具体化した一例を示すブロック図。 読出し要求があった場合の調停部11の動作を示す図。 書込み要求があった場合の調停部11の動作を示す図。 CSアドレス、RASアドレスおよびRASアドレスによりアクセスされる場所を模式的に示す図。 (a)は階層化タグ構造、(b)は統合タグ構造を示す図。 第2メモリ3の内部構成の一例を示すブロック図。 プロセッサシステムの内部構成の一例を示すブロック図。
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、メモリ制御回路内の特徴的な構成および動作を中心に説明するが、メモリ制御回路には以下の説明で省略した構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれるものである。
図1は本発明の一実施形態によるメモリ制御回路1のブロック図である。図1のメモリ制御回路1は、第1メモリ2と第2メモリ3に対するアクセスを制御するものである。第1メモリ2と第2メモリ3は、同一階層のメモリである。同一階層とは、メモリが1階層以上の階層構造になっている場合の特定の階層を指す。より具体的な例としては、第1メモリ2と第2メモリ3はメインメモリの少なくとも一部を構成している。ここで、メインメモリとは、一般的にOS等の基本ソフトウェアにより管理されるメモリである。一般的な計算機システムでは、プロセッサと同一ダイ上には実装されず、DDR(Double-Data-Rate SDRAM)等のインタフェースを利用してプロセッサと接続される。なお、第1メモリ2と第2メモリ3は、必ずしもプロセッサにより管理されるメインメモリでなくてもよい。例えば、種々のメモリコントローラの制御の下でアクセスされる同一階層のメモリであればよい。
第1メモリ2は、第2メモリ3よりも読出し速度が速いメモリであり、例えばMRAMによるメモリセルアレイを含んでいる。第2メモリ3は、第1メモリ2よりも読出し速度が遅いメモリであり、例えばDRAMによるメモリセルアレイを含んでいる。DRAMは、MRAMよりも集積化が容易なため、第2メモリ3のメモリ容量は、第1メモリ2のメモリ容量よりも大きくすることができる。ただし、第1メモリ2と第2メモリ3のメモリ容量の大小は、逆でもよいし、両メモリのメモリ容量を等しくしてもよい。
第1メモリ2としてMRAMを用い、第2メモリ3としてDRAMを用いることは必ずしも必須ではないが、以下では第1メモリ2としてMRAMを用い、第2メモリ3としてDRAMを用い、第2メモリ3が第1メモリ2よりもメモリ容量が多い例を説明する。
図1のメモリ制御回路1は、コントローラ4と、I/O部5と、メモリコントローラ6とを備えている。
コントローラ4は、第1メモリ2と第2メモリ3に対するアクセス要求を発行する。アクセス要求には、読出し要求と書込み要求とがある。本実施形態では、例えばDDRにおける1つのコマンドによるバーストアクセスも、1つのアクセスと見なすものとする。なお、DDRのバーストアクセス形態には例えば、インタリーブ方式とシーケンシャル方式があるが、以下ではシーケンシャル方式をベースとして記載する。しかしながら、本実施形態はシーケンシャル方式に限定されるものではない。コントローラ4は、図1では不図示のプロセッサと同じダイに実装されてもよいし、プロセッサとは別個のチップセット内に配置されてもよい。なお、コントローラ4は、例えばDMA(Direct Memory Access)コントローラのように、プロセッサとは無関係に第1メモリ2と第2メモリ3に対するアクセス要求を発行してもよい。
I/O部5は、コントローラ4で発行されたアクセス要求や、第1メモリ2および第2メモリ3に格納すべきデータを受け取り、メモリコントローラ6へとそれらを送付する。また、第1メモリ2および第2メモリ3から読み出されたデータをコントローラ4に送る。I/O部5は、一般には、SRAM等の高速なバッファを保持し、コントローラ4から発行されたアクセス要求や、第1メモリ2および第2メモリ3から読み出されたデータをバッファに一時的に保持する。なお、本実施形態において、I/O部5は必須の構成要件ではない。コントローラ4およびメモリコントローラ6がI/O部5を介さずに情報の受け渡しを行う実施形態であってもよい。
メモリコントローラ6は、コントローラ4からのアクセス要求に従って、第1メモリ2と第2メモリ3に対するアクセス制御を行う。アクセス制御とは、第1メモリ2と第2メモリ3に格納されたデータの読出し制御と、第1メモリ2と第2メモリ3へのデータの書き込み制御とを含む概念である。
より具体的には、メモリコントローラ6は、コントローラ4からの読出し要求があると、第1メモリ2と第2メモリ3に対する読み出し制御を行う。メモリコントローラ6は、読出し要求のあったデータのうち、第1メモリ2に格納されているデータを特定し、特定されたデータに対する読出し要求を第1メモリ2に送る。また、必要に応じて並行して、第2メモリ3に対しても、読出し要求を送る。
MRAMはDRAMよりも高速であるため、第1メモリ2から読み出されたデータが第2メモリ3から読み出されたデータよりも先にメモリコントローラ6に到達する。このためメモリコントローラ6は、第1メモリ2から読み出されたデータを優先してI/O部5に送り、読出し要求のあったデータのうち、第1メモリ2に格納されていない残りのデータを、第2メモリ3から読み出してI/O部5に送る。I/O部5は、メモリコントローラ6から送られて来たデータをバッファリングする。I/O部5は、予め規定された順番に従い、バッファリングしたデータをコントローラ4に転送する。これにより、予め規定された順番において、最初にコントローラ4に転送するデータを第1メモリ2から読み出せた場合、第1メモリ2から読み出されたデータは、第2メモリ3から読み出されたデータよりも高速にコントローラ4に送られる。
一方、メモリコントローラ6は、コントローラ4からの書込み要求があると、書込み要求のあったデータの一部を第1メモリ2に格納する。また、メモリコントローラ6は、第1メモリ2への書込みが終了した後、または書込みを行っている最中に、書込み要求のあったデータのすべてを第2メモリ3に格納する。
図2はメモリコントローラ6の内部構成を具体化した一例を示すブロック図である。図2のメモリコントローラ6は、調停部11と、第1メモリコントローラ12と、第2メモリコントローラ13とを有する。
調停部11は、コントローラ4から発行されたアクセス要求をI/O部5から受け取り、第1メモリコントローラ12および第2メモリコントローラ13のいずれにアクセスするかを制御する。すなわち、調停部11は、コントローラ4から書込み要求のあったデータの一部を第1メモリ2に格納する制御と、このデータのすべてを第2メモリ3に格納する制御とを行う。より具体的には、調停部11は、読み出し要求のあったデータが第1メモリ2に格納されているか否かを判断し、第1メモリ2に対する読出し制御を行う。また、読み出し時には、調停部11は、第1メモリ2と第2メモリ3から読み出されたデータの調停を行い、読み出したデータをI/O部5に転送する。さらに、書き込み時には、調停部11は、第1メモリコントローラ12と第2メモリコントローラ13に対してデータの書き込みを指示する。
第1メモリコントローラ12は、第1データ量を単位として第1メモリ2に対するアクセス制御を行う。第2メモリコントローラ13は、第1データ量よりも多い第2データ量を単位として第2メモリ3に対するアクセス制御を行う。
第1データ量とは、例えばワード単位である。第2データ量とは、例えばライン単位である。図3はアクセス制御のデータ量の単位を説明する図である。一般的にメインメモリにはDRAMメモリアレイが用いられ、DRAMメモリアレイに対するアクセスは1kバイト程度のページ単位で行われる。メインメモリはDDR等のインタフェースでコントローラ4と接続され、メインメモリから読み出したデータや、コントローラ4からの書き込みデータは、64ビット程度のデータ入出力幅で転送される。1回の転送で受け渡される64ビット程度のデータをワードと呼ぶ。一方、メインメモリに格納されているデータまたはメインメモリに格納されるべきデータの一部が格納されるキャッシュメモリに対するアクセスは、64バイト程度のライン単位で行われる。また、プロセッサは、32ビット(4バイト)や64ビット(8バイト)等のデータアクセス要求を発行する。本実施形態では64ビットであるものとする。
プロセッサは主にキャッシュミスが発生した際に、キャッシュメモリへとデータをフィルするため、コントローラ4を介してメインメモリへと64バイト程度のデータ読み出しを行う。このとき、一般的なプロセッサでは、直近の演算で利用するデータを最初に転送するように、コントローラ4を介してメインメモリにアクセス要求を送る。これにより、プロセッサはメインメモリアクセスによる64バイトのデータ転送がすべて終わるのを待たずに演算を行うことが可能となる。メインメモリから最初に転送されるワードをクリティカルワードと呼ぶ。本実施形態では、第1データ量を1ワードとし、第2データ量を1ラインとして、第1メモリ2に対しては迅速に小容量データのアクセス制御を行い、第2メモリ3に対しては一度に大容量データのアクセス制御を行うようにしている。
より具体的には、DRAMを用いて構成される第2メモリ3には、書込み要求のあったデータのすべてを格納し、そのうちの一部のデータを、MRAMを用いて構成される第1メモリ2に格納(コピー)する。
このように、第1メモリ2に格納されるデータを、第2メモリ3にも重複して格納するのは、MRAMはDRAMよりもビットエラーの発生頻度が高いことが主な理由である。DRAMにすべてのデータを格納しておけば、MRAM内のデータにビットエラーが発生しても、DRAMから読み出したデータを読み出し要求先に返せるため、動作上の支障は起きない。
そこで、図4に示すように、図2のメモリコントローラ6の構成に誤り検出部14を追加するのが望ましい。図4の誤り検出部14は、MRAMを用いて構成される第1メモリ2から読み出したデータにビットエラーがあるか否かを検出する。誤り検出部14によるビットエラーの検出結果は調停部11に送られる。調停部11は、ビットエラーがなければ、第1メモリ2から読み出したデータと第2メモリ3から読み出した残りのデータとをコントローラ4に返し、ビットエラーがあれば、第1メモリ2から読み出したデータは無視して、第2メモリ3から読み出したすべてのデータをコントローラ4に返す。
このように、誤り検出部14でビットエラーが検出されると、第1メモリ2内のデータは使用しないため、誤り訂正部を設ける必要はない。誤り訂正処理は、誤り検出処理よりも、多くの処理時間を必要とし、第1メモリ2からの読出し速度を低下させる要因になる。本実施形態では、単に誤り検出を行うだけなので、第1メモリ2からの読出し速度を高速化できる。
なお、図4では、誤り検出部14を調停部11や第1メモリコントローラ12とは別個に設けているが、調停部11や第1メモリコントローラ12の内部に誤り検出部14を設けてもよい。
第1メモリ2は、レイテンシが重要なデータを絞り込んで格納することを意図しており、第1メモリ2は第2メモリ3よりもメモリ容量が小さくても、多くのデータ数を格納することが可能であり、第1メモリ2の利用効率を高めることができる。例えば、クリティカルワードを第1メモリ2に格納すれば、プロセッサからのアクセス要求に迅速に応えることができる。
図5は調停部11の内部構成を具体化した一例を示すブロック図である。図5の調停部11は、タグ部15と、クリティカルデータ決定部16と、データ抽出部17とを有する。
タグ部15は、第1メモリ2に格納されているデータに対応するアドレス情報を格納する。また、タグ部15は、読み出し時にI/O部5から入力されたアドレス情報がタグ部15に格納されているアドレス情報と一致するか否かのヒットミス判定を行う。このように、タグ部15は、入力されたアドレス情報に基づいて、第1メモリ2に格納されているデータを特定する。
クリティカルデータ決定部16は、アクセス要求のあったデータの一部を第1メモリ2に格納すべきか否かを決定する。クリティカルデータ決定部16は、所定のポリシに従って、第1メモリ2に格納すべきデータを決定する。このポリシの具体例については後述する。
データ抽出部17は、クリティカルデータ決定部16による決定にしたがって、書込み要求のあったデータの中から、第1メモリ2に格納すべきデータを抽出して第1メモリコントローラ12に転送し、書き込み要求のあったデータ全てを第2メモリコントローラ13に転送する。
図6は読出し要求があった場合の調停部11の動作を示す図である。図6では、読出しに関係のある信号の流れを実線で示し、それ以外は破線で示している。読み出し時には、読み出すべきデータのアドレス情報がI/O部5からタグ部15に入力される。タグ部15は、読出し要求のあったアドレス情報がタグ部15に格納されているアドレス情報と一致した場合には、第1メモリコントローラ12に対してデータの読出しを指示する。この指示に従って、第1メモリコントローラ12は、第1メモリ2から対応するワードデータを読み出す。
図7は書込み要求があった場合の調停部11の動作を示す図である。図7では、書込みに関係のある信号の流れを実線で示し、それ以外は破線で示している。書き込み時には、I/O部5から書き込むべきアドレス情報と書込みデータが入力される。アドレス情報はクリティカルデータ決定部16に入力される。クリティカルワード決定部16は、予め定めたポリシに従って、第1メモリ2に格納すべきクリティカルデータを特定する。なお、クリティカルデータとは、例えば、そのアクセスレイテンシが大きくプロセッサの性能に影響を与えるデータである。例えば、上述したクリティカルワードはクリティカルデータである。
クリティカルデータ決定部16におけるポリシには、種々のものが考えられる。例えば、クリティカルワードとなる可能性が高いデータを選択することが考えられる。クリティカルワードとなる可能性が高いデータとは、例えば、クリティカルワードになる頻度が高いデータである。
例えば、ページ内の先頭側のアドレスほどクリティカルワードとなりやすい性質を生かして、先頭から数ワードをクリティカルデータとして決定して第1メモリ2に格納することが考えられる。この場合、ページの先頭アドレスはメインメモリ設計時に一意に決まるため、第1メモリ2に格納されているデータを容易に特定できる。例えば、DRAMに格納される全てのページの、各ページの先頭から予め規定されたワード数を格納可能な容量の第1メモリ2を備える場合、タグ部に格納する情報を設計時に設定し、その後書き換える必要は無い。つまり、タグ部の設計コストを低減できる。一方で、DRAMに格納される全てのページの、各ページの先頭から予め規定されたワード数やライン数を格納可能な容量の第1メモリ2を備えない場合、メインメモリ動作時に動的に書き換え可能なタグ部を設けることが望ましい。
特定されたクリティカルデータのアドレス情報は、タグ部15とデータ抽出部17に送られる。タグ部15は、クリティカルデータ決定部16から送られて来たアドレス情報を、第1メモリ2に格納されているデータに対応するアドレス情報として管理する。データ抽出部17は、クリティカルデータのアドレス情報に基づいて、書き込むべきデータの中から、アドレス情報に対応するクリティカルデータを抽出する。そして、データ抽出部17は、第1メモリコントローラ12に対して、クリティカルデータの格納を指示する。
なお、動的に書き換え可能なタグ部を必要とする(全ページのクリティカルデータ全てを格納する容量の第1メモリ2を備えない場合の)クリティカルデータ決定のポリシでは、第2メモリ3に格納すべきデータには変更が無く、第1メモリ2に格納すべきデータに変更があるケースが考えられる。この場合、第2メモリ3のデータには書き込みを行わずに、第1メモリ2にのみ書き込みを行ってもよい。例えば、読み出しアクセスの際に、ページの先頭のワードを読み出し、そのデータが第1メモリ2に格納されていなかった場合に、当該データのアドレス情報をタグ部に記録し、当該データを第1メモリ2に書き込んでもよい。
上述した第1メモリ2と第2メモリ3をメインメモリとして用いる場合、既存のメインメモリとの互換性を維持することが重要である。既存のメインメモリは、一般にDDR(Double-Data-Rate SDRAM)の規格に準拠して設計されている。DDRでは、CS(Chip Select)アドレス、RAS(Row Address Select)アドレスおよびCAS(Column Address Select)アドレスを用いて、アクセスすべきメモリ位置を一意に特定する。CSアドレスはアクセスするべきメモリセルアレイを特定するアドレス情報である。RASアドレスはアクセスするべきロウを特定するアドレス情報である。CASアドレスはアクセスするべきカラムを特定するアドレス情報である。
図8は、CSアドレス、RASアドレスおよびRASアドレスによりアクセスされる場所を模式的に示す図である。図8は複数のDRAMチップ20でメインメモリを構成する例を示している。CSアドレスは、いずれか一つのDRAMチップ20を選択する。なお、CSアドレスにて、一つのメモリバンクを選択してもよい。この場合、図8に示された4つのブロックのそれぞれは、メモリバンクを表すことになる。RASアドレスは、CSアドレスで選択した一つのDRAMチップ(あるいはメモリバンク)20内の一つのロウを選択する。CASアドレスは、RASアドレスが選択したロウの中の一つのカラムを選択する。以下では、一例として、これらのアドレス情報を利用する実施形態を示す。
上述した第1メモリ2と第2メモリ3がメインメモリ内に設けられ、かつDDRの規格に準拠している場合、第1メモリ2に格納されるデータのアドレス情報は、CSアドレス、RASアドレス、CASアドレスの情報から一意に第1メモリ2へのデータの有無を特定可能な情報がタグ部15に格納される。タグ部15の実装形態としては、例えば、メインメモリ設計時から書き換えを行わないものとして永続的タグがあり、動的に書き換えを行うものとして図9(a)に示す分散タグ構造と、図9(b)に示す統合タグ構造とが考えられる。
永続的タグの実装形態として、例えば、CASアドレスから、ページの先頭アドレスか否かを判定する方法がある。例えば、ページに属するバイトデータが先頭から順に0、1、2、・・というようにアドレスが割り当てられている場合に、クリティカルワードのCASアドレスが0であれば、ページの先頭アドレスであることを特定できる。
分散タグ構造は、例えば、CSで選択されるチップ毎のタグメモリを保持する。例えば、図9(a)のように、RASアドレスでタグ引きを行い、読み出されるCASアドレスとの比較を行うことで第1メモリ2へのデータ保持/非保持を判定する。または、例えば、CASアドレスでタグ引きを行い、読み出されたRASアドレスとの比較を行うことで第1メモリ2へのデータ保持/非保持を判定する。
一方、図9(b)の統合タグ構造の場合、例えば、CSアドレスおよびRASアドレスを統合したアドレスによりタグ引きを行い、読み出されるCASアドレスとの比較を行うことで第1メモリ2へのデータ保持/非保持を判定する。例えば、CSアドレスおよびCASアドレスを統合したアドレスによりタグ引きを行い、読み出されるRASアドレスとの比較を行うことで第1メモリ2へのデータ保持/非保持を判定する。
分散タグは、統合タグと比較し、一度にアクセスするタグのサイズを小さくすることが可能であるため、タグアクセスが高速に行える傾向にある。一方で、統合タグは、チップ毎に異なるデータ数を第1メモリ2に保持する実施形態が比較的容易に実装可能である。統合タグは、チップ間でクリティカルデータの数に差がある場合、クリティカルデータを効率的に格納することが可能となる。
これらタグ部は、キャッシュメモリやTLB等で一般的に用いられる技術と組み合わせることが可能である。例えば、セットアソシアティブ方式と組み合わせることが可能である。例えば、TLBのように、タグメモリ自体を階層化してもよい。
DRAMを用いて構成される第2メモリ3は、汎用的なDRAMモジュールと同様の構造にすることが可能である。図10は第2メモリ3を含むメモリモジュールの内部構成の一例を示すブロック図である。図10の第2メモリ3は、DRAMアレイ21と、ロウデコーダ22と、ロウバッファ23とを有する。DRAMアレイ21は、例えばページデータである1kバイト分のロウを含んでいる。ロウデコーダ22は、RASアドレスをデコードして、特定のロウを選択する。ロウバッファ23は、SRAM等の高速メモリであり、ロウデコーダ22で選択した特定のロウのデータを格納する。
特定のロウをロウバッファ23に格納する処理は、アクティブ化と呼ばれる。以下では、アクティブ化が行われたDRAMチップ(あるいはメモリバンク)をアクティブ状態のバンク(アクティブバンク)と呼ぶ。アクティブバンクに対しては、読出しや書込みが可能である。異なるロウにアクセスするには、ロウバッファ23のデータをDRAMチップ(あるいはメモリバンク)に書き戻し、ロウバッファ23に格納されているデータを無効化する必要がある。この処理はプリチャージと呼ばれる。プリチャージが行われたDRAMチップ(あるいはメモリバンク)をアイドル状態のバンク(アイドルバンク)と呼ぶ。一般には、アイドルバンクに対してのみアクティブ化を行うことができる。また、アクティブバンクは、一定時間の経過後、あるいはプリチャージを行った後にアイドルバンクに遷移する。言い換えると、ロウバッファに書き込まれたデータは、一定時間の経過後、あるいはプリチャージを行った場合に、第2データ量であるページ単位で第2メモリ3へと書き込まれる。
一般的なDDRの規格では、DRAMモジュールに対してコマンドを発行してアクセスを行う。一般に、アクティブ化、読出し、書込み、およびプリチャージを指示するコマンドが設けられている。
(アイドル状態でのアクセス手順)
以下では、第2メモリ3がアイドル状態のときに、アクティブ化コマンドと8ワード(64バイト)のバースト読出しコマンドとがコントローラ4にて発行された場合における読出し時の処理手順の一例を示す。なお、1ワードは8バイトとし、1ページは1kバイトとする。また、クリティカルデータは、ページの先頭1ワードとする。また、DRAMからなる第2メモリ3に格納されているデータ全てのクリティカルデータを格納可能な容量のMRAMからなる第1メモリ2を備えるものとする。この場合、読出し要求のあったアドレス情報により第1メモリ2に格納されているか否かを特定できるため、メモリコントローラ6内のタグ部15には動的に書き換え可能なタグメモリを設ける必要はない。また、MRAMを用いて構成される第1メモリ2内のデータは、一定確率でビットエラーが発生するものとし、メモリコントローラ6が誤り検出部14を備えているものとする。
調停部11は、I/O部5からアクティブ化コマンドとバースト読出しコマンドを受け取り、これらコマンドを第2メモリコントローラ13に転送する。第2メモリコントローラ13は、一般的なのDDRの動作と同様に、アクティブ化を行った後、アクセスされたデータをロウバッファ23から読み出す。これに並行して、タグ部15は、バースト読出しコマンドで指定されているバーストデータのクリティカルワードが第1メモリ2に格納されているか否かをチェックする。ここでは、永続的タグを利用してこれをチェックする。
このように、ページ内の先頭アドレスのみを第1メモリ2に格納する場合には、タグメモリを用いたアドレス情報の比較を行うことなく、単に読出し要求のあったデータにページ内の先頭アドレスが含まれるか否かをチェックするだけで、第1メモリ2に該当データが格納されているか否かを判断できる。このようなタグ部15の構成の場合、データ保持/非保持を高速に判定することが出来る。
読出し要求のあったクリティカルワードがページ内の先頭でなければ、調停部11は、第2メモリ3から読み出されたデータをI/O部5に転送する。
読出し要求のあったクリティカルワードがページ内の先頭であれば、調停部11は、第1メモリコントローラ12に第1メモリ2内の該当データの読出しを指示する。MRAMは、DRAMよりも読み出し速度が高速であるため、第1メモリ2からのデータ読出しが、第2メモリ3からのデータ読出しよりも先に完了する。
誤り検出部14は、第1メモリ2から読み出されたデータにビットエラーがあるか否かを検出する。調停部11は、誤り検出部14の検出結果に基づいて、ビットエラーがなければ、第1メモリ2から読み出されたデータをI/O部5に転送する。その後、第2メモリコントローラ13は、アクティブ化および読出しコマンドに基づいて、64バイト分のバーストデータを第2メモリ3から読み出して調停部11に転送する。調停部11は、第2メモリ3から送られて来た64バイト分のデータのうち、先にI/O部5に転送した8バイト分のデータを除いた56バイト分のデータをI/O部5に転送する。
一方、誤り検出部14でビットエラーが検出された場合、調停部11は、第1メモリ2から読み出されたデータをI/O部5に転送する処理は行わず、第2メモリ3から読み出された64バイト分のデータをI/O部5に転送する。
また、ビットエラーが検出された場合、調停部11は、第2メモリ3から読み出された64バイト分のデータの先頭アドレスに対応するデータを第1メモリ2に上書きするよう、第1メモリコントローラ12に指示してもよい。
次に、第2メモリ3がアイドル状態のときに、アクティブ化と4ワード(64バイト)のバースト書き込みコマンドとがコントローラ4にて発行された場合における書き込み時の処理手順の一例を示す。メインメモリに書込みを行う場合、調停部11は、書込みデータにページの先頭アドレスのデータが含まれるか否かをチェックし、含まれる場合は、先頭アドレスのデータを第1メモリ2に書き込むよう第1メモリコントローラ12に指示する。また、調停部11は、I/O部5からアクティブ化コマンドとバースト書き込みコマンドを受け取り、一般的なDDRの動作と同様に、アクティブ化を行った後、64バイトのデータをロウバッファに書き込む。このような書き込みののち、プリチャージコマンドの実行か、一定時間経過後に、書き込みを行ったロウバッファ上のページデータを、DRAMアレイへと書き込む。
(アクティブ状態でのアクセス手順)
上述したアイドル状態でのアクセス手順では、第2メモリ3がアイドル状態のときに、有効化コマンドに引き続き、読出しコマンドまたは書込みコマンドが発行される例を示した。一方、第2メモリ3のアクティブバンクに対してアクセス要求が発行されることもありうる。この場合、アクセス要求のあったデータがアクティブ状態のロウに含まれている否かで処理手順が異なる。
アクティブ状態のロウにアクセス要求のあったデータが含まれていない場合、コントローラ4は、アクセス要求コマンドを発行する前に、プリチャージコマンドを発行する。調停部11は、プリチャージコマンドを第2メモリコントローラ13に転送し、第2メモリ3をアイドル状態に遷移させた後に、アイドル状態でのアクセス手順と同様にして、第1メモリ2および第2メモリ3に対する読出し制御または書込み制御を行えばよい。
アクティブ状態のロウにアクセス要求のあったデータが含まれている場合、アクティブ状態のロウは、DRAMよりも高速のSRAM等で構成されたロウバッファ23に格納されているため、MRAMを用いて構成された第1メモリ2よりも高速に読み出せる可能性が高い。よって、読み出しアクセスの場合、第1メモリ2へのアクセスは行わずに、第2メモリ3を含むメモリモジュールに対してのみアクセスを行ってもよい。あるいは、アクセス手順の共通化のために、アイドル状態でのアクセス手順と同様の手順で第1メモリ2と第2メモリ3の双方にアクセスしてもよい。
一般的に、メインメモリへのアクセスコマンドは一時的にバッファに格納される。調停部11は、例えば、I/O部に設けられているメインメモリへのアクセスコマンドを格納するバッファを参照し、アクセス要求コマンドがアクティブ化コマンドと対になっているか否かにより、アイドルバンクに対するアクセス手順か、アクティブバンクに対するアクセス手順かを識別できる。調停部は、この識別情報に基づき、第1メモリ2へのアクセスが必要か否かを判断することが出来る。
ここまでの実施形態では、クリティカルデータの選択ポリシとして、ページの先頭ワードをクリティカルデータとする形態を示した。しかしながら、本実施形態はこのような形態に限定されるものではない。クリティカルデータの選択ポリシには、このような実施形態の他にも、種々のものが考えられる。
例えば、毎回のアクセスデータのクリティカルワードをクリティカルデータとしてもよいし、複数回のアクセスの履歴から、クリティカルワードとなる頻度の高いデータをクリティカルデータとしてもよい。また、ロウバッファミス(アイドル状態への読み出し)を引き起こしたアクセスのクリティカルワードをクリティカルデータとしてもよい。この場合、クリティカルデータは様々なデータとなるため、動的に書き換え可能なタグ部を設けることが望ましい。
上述した第1メモリ2と第2メモリ3をメインメモリとして用いる場合のプロセッサシステムは、例えば図11のようなブロック図で表される。図11のプロセッサシステム31は、キャッシュシステムを備えるプロセッサ32と、メインメモリ34と、コントローラ4と、I/O部5と、メモリコントローラ6とを備えている。
キャッシュシステムは、階層構造になっていてもよいし、一階層でもよい。プロセッサ32は、コントローラ4に対してアクセス要求を発行する。コントローラ4は、上述したように、I/O部5を介してメモリコントローラ6にアクセス要求を送る。メモリコントローラ6は、上述した図1等で説明したように、メインメモリ34内の第1メモリ2と第2メモリ3に対するアクセスを行う。
このように、本実施形態では、コントローラ4から書込み要求があったデータのすべてを第2メモリ3に書込み、そのうちの一部のデータを、第2メモリ3よりも読出し速度が速い第1メモリ2に書き込む。その後、コントローラ4から読出し要求があると、読出し要求のあったデータの一部は第1メモリ2から高速に読み出すことができる。よって、クリティカルデータを第1メモリ2に書き込んでおけば、クリティカルデータの読出し速度を向上できる。
また、第1メモリ2と第2メモリ3をメインメモリ34内に設ければ、クリティカルデータを第1メモリ2に格納することで、プロセッサ32によるメインメモリ34のアクセス速度を向上できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリ制御回路、2 第1メモリ、3 第2メモリ、4 コントローラ、5 I/O部、6 メモリコントローラ、11 調停部、12 第1メモリコントローラ、13 第2メモリコントローラ、14 誤り検出部、15 タグ部、16 クリティカルデータ決定部、17 データ抽出部、21 DRAMアレイ、22 ロウデコーダ、23 ロウバッファ、31 プロセッサシステム、32 プロセッサ、33 キャッシュメモリ、34 メインメモリ

Claims (15)

  1. 第1データ量を単位としてアクセスされる第1メモリに対するアクセス制御と、前記第1メモリと同一メモリ階層に属し前記第1データ量よりも多い第2データ量を単位として前記第1メモリよりも遅い読出し速度で第2メモリに対するアクセス制御と、を行うメモリコントローラを備え
    前記メモリコントローラは、前記第2メモリに格納されているデータまたは格納されるべきデータを保持するバッファに、アクセスされたデータが保持されているかどうかを判定し、前記バッファに保持されていると判定した場合には、前記第1メモリにアクセスを行わず、前記バッファにアクセスを行うメモリ制御回路。
  2. 前記メモリコントローラは、アクセス要求のあったデータの一部を前記第1メモリに格納する制御を行い、アクセス要求のあったデータのすべてを前記第2メモリに格納する制御を行う請求項1に記載のメモリ制御回路。
  3. 前記第1データ量は、複数ビットからなる1ワードであり、
    前記第2データ量は、前記ワードのn倍(nは2以上の整数)である請求項1または2に記載のメモリ制御回路。
  4. 前記メモリコントローラは、
    第1データ量を単位として前記第1メモリに対するアクセス制御を行う第1メモリコントローラと、前記第2データ量を単位として前記第2メモリに対するアクセス制御を行う第2メモリコントローラと、
    前記第1メモリコントローラおよび前記第2メモリコントローラのいずれにアクセスするかを制御する調停部と、を備える請求項1乃至3のいずれかに記載のメモリ制御回路。
  5. 前記調停部は、前記第1メモリに格納すべきデータを決定するクリティカルデータ決定部を有する請求項4に記載のメモリ制御回路。
  6. 前記メモリコントローラは、前記クリティカルデータ決定部での決定に基づき、書き込み要求のあったデータの一部を前記第1メモリに格納した後、または当該データを前記第1メモリに格納している最中に、当該データのすべてを前記第2メモリに格納する制御を行う請求項5に記載のメモリ制御回路。
  7. 前記メモリコントローラは、読出し要求のあったデータの一部が前記第1メモリに格納されている場合には、前記一部を前記第1メモリから読み出す制御を行うとともに、読み出し要求のあったデータを前記第2メモリから読み出す制御を行う請求項1乃至4のいずれかに記載のメモリ制御回路。
  8. 前記メモリコントローラは、読出し要求のあったデータの一部が前記第1メモリに格納されていない場合には、当該データのすべてを前記第2メモリから読み出す制御を行う請求項7に記載のメモリ制御回路。
  9. 前記第1メモリに格納されるワードは、クリティカルワードとなる可能性が高いワードである請求項1乃至のいずれかに記載のメモリ制御回路。
  10. 前記第1メモリに格納されるワードは、ページの先頭ワードである請求項1乃至のいずれかに記載のメモリ制御回路。
  11. 前記第1メモリに格納されるワードは、過去にアクセスされたデータの先頭ワードである請求項1乃至のいずれかに記載のメモリ制御回路。
  12. 前記第1メモリへのアクセス時に、前記第1メモリから読み出されたデータの誤り検出を行う誤り検出部を備え、
    前記メモリコントローラは、前記誤り検出部で誤りが検出されなければ、前記第1メモリからデータを読み出し、前記誤り検出部で誤りが検出されると、読出し要求のあったデータすべてを前記第2メモリから読み出請求項1乃至1のいずれかに記載のメモリ制御回路。
  13. 前記第2メモリは、前記第1メモリよりも格納可能なデータ容量が多い請求項1乃至1のいずれかに記載のメモリ制御回路。
  14. 前記第1メモリは、MRAM(Magnetoresistive RAM)を含み、
    前記第2メモリは、DRAM(Dynamic RAM)を含む請求項1乃至1のいずれかに記載のメモリ制御回路。
  15. 第1データ量を単位としてアクセスされる第1メモリと、
    前記第1メモリと同一メモリ階層に属し前記第1データ量よりも多い第2データ量を単位として前記第1メモリよりも遅い読出し速度でアクセスされる第2メモリと、
    前記第2メモリに格納されているデータまたは格納されるべきデータを保持するバッファと、
    アクセスされたデータが前記バッファに保持されているかどうかを判定し、アクセスされたデータが前記バッファに保持されている場合には、前記第1メモリにアクセスを行わず、前記バッファにアクセスを行うメモリコントローラと、を備える半導体記憶装置。
JP2014191882A 2014-09-19 2014-09-19 メモリ制御回路および半導体記憶装置 Active JP6228523B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014191882A JP6228523B2 (ja) 2014-09-19 2014-09-19 メモリ制御回路および半導体記憶装置
PCT/JP2015/076009 WO2016043158A1 (ja) 2014-09-19 2015-09-14 メモリ制御回路および記憶装置
US15/266,495 US20170004095A1 (en) 2014-09-19 2016-09-15 Memory Control Circuit and Storage Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014191882A JP6228523B2 (ja) 2014-09-19 2014-09-19 メモリ制御回路および半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2016062505A JP2016062505A (ja) 2016-04-25
JP6228523B2 true JP6228523B2 (ja) 2017-11-08

Family

ID=55533195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014191882A Active JP6228523B2 (ja) 2014-09-19 2014-09-19 メモリ制御回路および半導体記憶装置

Country Status (3)

Country Link
US (1) US20170004095A1 (ja)
JP (1) JP6228523B2 (ja)
WO (1) WO2016043158A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016177689A (ja) 2015-03-20 2016-10-06 株式会社東芝 メモリシステム
JP2019121195A (ja) 2018-01-05 2019-07-22 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR102456176B1 (ko) * 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61136147A (ja) * 1984-12-07 1986-06-24 Nec Corp キヤツシユメモリ制御装置
JPH08328949A (ja) * 1995-06-06 1996-12-13 Mitsubishi Electric Corp 記憶装置
JP2000105726A (ja) * 1998-09-29 2000-04-11 Sharp Corp 記憶再生装置および記憶再生方法
US6578110B1 (en) * 1999-01-21 2003-06-10 Sony Computer Entertainment, Inc. High-speed processor system and cache memories with processing capabilities
US6892279B2 (en) * 2000-11-30 2005-05-10 Mosaid Technologies Incorporated Method and apparatus for accelerating retrieval of data from a memory system with cache by reducing latency
JP2002351741A (ja) * 2001-05-30 2002-12-06 Matsushita Electric Ind Co Ltd 半導体集積回路装置
US20030131277A1 (en) * 2002-01-09 2003-07-10 Taylor Richard D. Soft error recovery in microprocessor cache memories
US20100153633A1 (en) * 2008-12-11 2010-06-17 Magic Technologies, Inc. PC architecture using fast NV RAM in main memory
US20140146589A1 (en) * 2012-11-29 2014-05-29 Samsung Electronics Co., Ltd. Semiconductor memory device with cache function in dram
JP6088951B2 (ja) * 2013-09-20 2017-03-01 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム

Also Published As

Publication number Publication date
US20170004095A1 (en) 2017-01-05
JP2016062505A (ja) 2016-04-25
WO2016043158A1 (ja) 2016-03-24

Similar Documents

Publication Publication Date Title
CN109416666B (zh) 用于存储和读取多个缓存行的装置和方法
US11614866B2 (en) Nonvolatile memory device and operation method thereof
CN109582214B (zh) 数据访问方法以及计算机系统
US20180275921A1 (en) Storage device
US20160019161A1 (en) Programmable address mapping and memory access operations
CN109952565B (zh) 内存访问技术
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US8850115B2 (en) Memory package utilizing at least two types of memories
US20170235524A1 (en) Nonvolatile Memory Modules Comprising Volatile Memory Devices and Nonvolatile Memory Devices
JP2008305350A (ja) メモリシステム、メモリ装置、およびメモリ装置の制御方法
JP6228523B2 (ja) メモリ制御回路および半導体記憶装置
CN113243007A (zh) 存储级存储器访问
US8924652B2 (en) Simultaneous eviction and cleaning operations in a cache
US7328311B2 (en) Memory controller controlling cashed DRAM
US10496546B2 (en) Cache memory and processor system
US20190310905A1 (en) Memory systems and operating methods of memory systems
JP2002007373A (ja) 半導体装置
US11474717B2 (en) Memory systems having semiconductor memory modules therein that support page fault processing
US5604883A (en) Computer memory open page bias method and system
JPH04250542A (ja) コンピューターメモリシステム
US20140281157A1 (en) Memory system, memory controller and method
KR20160144574A (ko) 불휘발성 메모리 모듈 및 그것의 데이터 쓰기 방법
US20240012755A1 (en) Memory system and operating method thereof
US20240061786A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
WO2009092037A1 (en) Content addressable memory augmented memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170602

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170726

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171013

R150 Certificate of patent or registration of utility model

Ref document number: 6228523

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350