JP2016181112A - メモリデバイス、半導体装置および情報処理装置 - Google Patents

メモリデバイス、半導体装置および情報処理装置 Download PDF

Info

Publication number
JP2016181112A
JP2016181112A JP2015060811A JP2015060811A JP2016181112A JP 2016181112 A JP2016181112 A JP 2016181112A JP 2015060811 A JP2015060811 A JP 2015060811A JP 2015060811 A JP2015060811 A JP 2015060811A JP 2016181112 A JP2016181112 A JP 2016181112A
Authority
JP
Japan
Prior art keywords
memory device
memory
write request
power
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015060811A
Other languages
English (en)
Other versions
JP6541998B2 (ja
Inventor
金井 達徳
Tatsunori Kanai
達徳 金井
哲郎 木村
Tetsuo Kimura
哲郎 木村
昌也 樽家
Masaya Taruie
昌也 樽家
祐介 城田
Yusuke Shirota
祐介 城田
礎 吉村
Shiyo Yoshimura
礎 吉村
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Corp filed Critical Toshiba Corp
Priority to JP2015060811A priority Critical patent/JP6541998B2/ja
Priority to US15/005,409 priority patent/US9984746B2/en
Publication of JP2016181112A publication Critical patent/JP2016181112A/ja
Application granted granted Critical
Publication of JP6541998B2 publication Critical patent/JP6541998B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0038Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1697Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites

Abstract


【課題】アトミシティを保証可能なメモリデバイス、半導体装置および情報処理装置を提供する。
【解決手段】実施形態のメモリデバイスは、不揮発メモリと、不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、電源から供給される電力を保持する電力保持部と、を備える。コントローラは、電源からメモリデバイスに供給される電力の異常を検出すると、電力保持部から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。
【選択図】図1

Description

本発明の実施形態は、メモリデバイス、半導体装置および情報処理装置に関する。
MRAMやPCMやMemristorのような、プロセッサのメモリバスに直結できるバイトアドレッサブルな不揮発メモリを、メインメモリとして使用するコンピュータシステムにおいて、障害が発生してもその直前の一貫性のある状態から処理を継続できるようにするためには、プロセッサ上で実行するプログラムによる不揮発メモリへの書き込みのオーダリング(順序性)やアトミシティ(書き込み途中の状態で終わらない性質)を保証する必要がある。
例えばアトミシティを保証する技術として、電源が喪失しても、CPUに接続されたメモリコントローラ(見方を変えれば、ホスト装置のメモリコントローラ)が不揮発メモリへのデータの書き込みを完了することを保証するためにキャパシタを設ける技術が知られている。
また、近年では、メモリの動作速度の高速化とともに、メモリデバイス側に、メモリに対するデータの書き込みを制御するコントローラが搭載されたメモリデバイスが開発されている(例えば、HMC(Hybrid Memory Cube)、QPI(QuickPath Interconnect)接続メモリデバイス等)。このようなメモリデバイスに接続されたプロセッサのメモリコントローラ(ホスト装置のメモリコントローラ)は、メモリデバイスに対するデータの送信(書き込み対象のデータの送信)が完了すれば、データの書き込みが完了したものと認識する。
米国特許第8533404号明細書
しかしながら、メモリデバイスに送信された書き込み対象のデータは、さらにメモリデバイス側のコントローラを経由してメモリに書き込まれるため、プロセッサのメモリコントローラがデータの書き込みが完了したと認識した時点では、書き込み対象のデータがメモリ内のメモリセルまで到達している保証は無い。このタイミングで電源異常が発生(電源から供給される電力の異常が発生)すると、書き込み途中のデータを失ってしまうという問題や、不完全なデータが書き込まれてしまうといった問題が起こり、アトミシティを保証することができない。
実施形態のメモリデバイスは、不揮発メモリと、不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、電源から供給される電力を保持する電力保持部と、を備える。コントローラは、電源からメモリデバイスに供給される電力の異常を検出すると、電力保持部から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。
第1の実施形態の情報処理装置の構成の一例を示す図。 第1の不揮発メモリの構成の一例を示す図。 第1の実施形態のメモリデバイスの詳細な構成の一例を示す図。 第1の実施形態のコントローラの動作例を示す図。 第1の実施形態のコントローラの動作例を示す図。 第1の実施形態のコントローラの動作例を示す図。 変形例のメモリデバイスとプロセッサとの接続例を示す図。 変形例のメモリデバイスとプロセッサとの接続例を示す図。 変形例のメモリデバイスとプロセッサとの接続例を示す図。 変形例のメモリデバイスとプロセッサとの接続例を示す図。 変形例のメモリデバイスの詳細な構成の一例を示す図。 変形例のコントローラの動作例を示す図。 変形例のメモリデバイスとプロセッサとの接続例を示す図。 変形例のメモリデバイスの構成の一例を示す図。 変形例のメモリデバイスの詳細な構成の一例を示す図。 変形例のメモリデバイスの実装方式の一例を示す模式図。 変形例のメモリデバイスの実装方式の一例を示す模式図。 変形例のメモリデバイスの実装方式の一例を示す模式図。 変形例のメモリデバイスの実装方式の一例を示す模式図。 第2の実施形態のメモリデバイスの詳細な構成の一例を示す図。 変形例のメモリデバイスの構成の一例を示す図。 変形例のメモリデバイスの構成の一例を示す図。 変形例のメモリデバイスの構成の一例を示す図。 第3の実施形態のメモリデバイスの詳細な構成の一例を示す図。 第3の実施形態のリクエストの構成の一例を示す図。 第3の実施形態のレスポンスの構成の一例を示す図。 第3の実施形態の書き込み要求のリクエストの例を示す図。 第3の実施形態の読み出し要求のリクエストの例を示す図。 第3の実施形態のレスポンスの例を示す図。 第3の実施形態の解析部の詳細な動作の一例を示す図。 第3の実施形態の読み出し部の詳細な動作の一例を示す図。 第3の実施形態の書き込み部の詳細な動作の一例を示す図。 変形例のメモリデバイスの詳細な構成の一例を示す図。 第4の実施形態のメモリデバイスの詳細な構成の一例を示す図。 第4の実施形態のリクエストの構成の一例を示す図。 第4の実施形態のレスポンスの構成の一例を示す図。 第4の実施形態の書き込み要求のリクエストの例を示す図。 第4の実施形態の読み出し要求のリクエストの例を示す図。 第4の実施形態のレスポンスの例を示す図。 第4の実施形態の解析部の詳細な動作の一例を示す図。 第4の実施形態の読み出し部の詳細な動作の一例を示す図。 第4の実施形態の書き込み部の詳細な動作の一例を示す図。
以下、添付図面を参照しながら、本発明に係るメモリデバイス、半導体装置および情報処理装置の実施形態を詳細に説明する。
(第1の実施形態)
具体的な内容を説明する前に、本実施形態の概要を説明する。上述したように、コントローラが搭載されたメモリデバイスに接続されたプロセッサのメモリコントローラ(ホスト装置のメモリコントローラ)は、メモリデバイスに対するデータの送信(書き込み対象のデータの送信)が完了すれば、データの書き込みが完了したものと認識する。しかしながら、メモリデバイスに送信された書き込み対象のデータは、さらにメモリデバイス側のコントローラを経由してメモリに書き込まれるため、プロセッサのメモリコントローラがデータの書き込みが完了したと認識した時点では、書き込み対象のデータがメモリ内のメモリセルまで到達している保証は無い。このタイミングで電源異常が発生すると、書き込み途中のデータを失ってしまうという問題や、不完全なデータが書き込まれてしまうといった問題が起こる。
さらに、例えばHMC(Hybrid Memory Cube)などの、最近のメモリデバイスをプロセッサ(ここでは、プロセッサコア(CPU)とメモリコントローラとを含む)と接続するインタフェースは、例えば4バイト、8バイト、16バイト、32バイト、64バイトなどの複数の異なるデータサイズの書き込み要求を用意しており、プロセッサの命令に応じて使い分けられる。これらの書き込み要求は、書き込みたいデータのサイズによって書き込み要求全体の長さが異なり、プロセッサからメモリデバイスに対して、複数のクロックサイクルにわたって書き込み要求を転送する。プロセッサによる1回の書き込み要求は、通常はキャッシュラインと同じサイズ(たとえば64バイト)に設定される場合が多い。このように複数のクロックサイクルで書き込み要求(ライトリクエスト)を転送する場合、書き込み要求の転送途中で電源異常が発生すると、該書き込み要求の転送が途中で止まってしまう可能性や、送られる情報が正しい値ではなくなってしまう可能性がある。そのような場合は、コントローラ(メモリデバイスのコントローラ)は途中まで受け取った書き込み要求に基づくデータの書き込みを行うべきではない。さらに、例えば1クロックサイクルで、プロセッサからメモリデバイスに対して、書き込み要求を構成する情報をパラレルに転送する場合でも、電源異常が発生すれば情報が正しく伝わらない可能性がある。
本実施形態では、メモリデバイスのコントローラは、ホスト装置であるプロセッサのメモリコントローラからの書き込み要求を受信すると、その受信した書き込み要求を、一旦、揮発性のバッファメモリに記憶し、書き込み要求全体を正しく受信できたら、その後に不揮発メモリに書き込む。書き込み要求全体を正しく受信できたかどうかは、その書き込み要求に相当するサイズの情報を受け取ったかどうかで判断する。書き込み要求の先頭部分(ヘッダー)を見れば、その書き込み要求のデータのサイズが分かり、そのサイズに基づいて書き込み要求全体の長さは分かるので、その長さの書き込み要求が来ているかどうかで、正しく受信できたかどうかが分かる。さらに、例えば書き込み要求にCRCなどの検査コードが含まれる場合には、その検査コードを使って、情報の誤り(エラー)が無いかどうかを確認してもよい。他にも様々なチェックの仕組みを組み合わせて、書き込み要求を正しく受信できたかどうかを判断してよい。
そして、本実施形態では、メモリデバイスのコントローラは、電源からメモリデバイスに供給される電力の異常を検出すると、プロセッサから受け取っている途中の書き込み要求に含まれるデータは不揮発メモリに書き込まず、既に受け取った書き込み要求(既に受け取りが完了した書き込み要求)がある場合は、電源から供給される電力を保持する電力保持部から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。これにより、アトミシティを保証することが可能になる。
以下、添付図面を参照しながら、本実施形態の具体的な内容を詳細に説明する。
図1は、本実施形態の情報処理装置1のハードウェア構成の一例を示す図である。例えば情報処理装置1は、サーバ、PC(Personal Computer)、携帯型情報端末(可搬型のタブレットも含む)、携帯電話端末などで構成され得る。図1に示すように、本実施形態の情報処理装置1は、プロセッサ10と、メモリデバイス20と、電源30とを備える。図1の例では、メモリデバイス20は、アクセス用のポートを1つ持ち、そこにプロセッサ10を接続しているが、これに限られるものではない。電源30は、情報処理装置1に対して電力を供給する装置であり、プロセッサ10およびメモリデバイス20の各々に対して電力を供給する。
ホスト装置の一例であるプロセッサ10は、プロセッサコア(CPU(Central Processing Unit)とも称する)11と、キャッシュメモリ12と、メモリコントローラ13とを備える。
プロセッサコア11が実行するプログラムによるメモリデバイス20へのデータ書き込みの手順としては、まず、書き込み対象のデータがキャッシュメモリ12に書き込まれる。メモリコントローラ13は、キャッシュメモリ12に書き込まれたデータをメモリデバイス20に書き込むために、メモリデバイス20に対して、適切なタイミングで書き込み要求を発行する。本実施形態における書き込み要求は、書き込み対象のデータと、メモリデバイス20の不揮発メモリ21のうち該書き込み対象のデータが書き込まれる位置を示すアドレス情報とを少なくとも含む。また、メモリデバイス20からデータを読み出す場合は、メモリコントローラ13は、プロセッサコア11からの指示に従って、読み出し要求(リードリクエスト)を発行する。本実施形態における読み出し要求は、メモリデバイス20の不揮発メモリ21のうち読み出し対象のデータが格納されている位置を示すアドレス情報を少なくとも含む。以下の説明では、書き込み要求および読み出し要求を区別しない場合は、単に「リクエスト」と称する場合がある。
次に、メモリデバイス20の構成を説明する。図1に示すように、メモリデバイス20は、不揮発メモリ21と、コントローラ22と、電力保持部23と、整流素子(この例ではダイオード)31とを備える。メモリデバイス20は、半導体装置の一例であると考えることができる。
本実施形態では、不揮発メモリ21は、MRAM(Magnetoresistive Random Access Memory)で構成されるが、これに限られるものではない。例えば不揮発メモリ21は、PCM(Phase Change Memory)、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、Memristorでもよいし、DRAM(Dynamic Random Access Memory)とNAND Flashを組み合わせたNVDIMMであっても構わない。また、不揮発メモリ21は、バッテリバックアップしたDRAMやSRAMでも構わない。
図2は、本実施形態における不揮発メモリ21の概略構成の一例を示す図である。図2に示すように、不揮発メモリ21は、不揮発メモリセルアレイ201と、揮発性のメモリであるロウバッファ(ページバッファ)202とを有する。
詳細な図示は省略するが、不揮発メモリセルアレイ201には、行方向(図2の左右方向)に延在する複数のワード線、および、列方向(図2の上下方向)に延在する複数のビット線が配置され、不揮発メモリセルアレイ201は、複数のワード線と複数のビット線との各交差に対応してマトリクス状に配置される複数のメモリセルを有する。また、詳細な図示は省略するが、不揮発メモリセルアレイ201は、コントローラ22の制御の下、各ワード線の電圧を制御する回路や各ビット線の電圧を制御する回路などを備えている。以上の構成は、公知の様々な構成を利用することができる。なお、この例では1本のワード線に接続される複数のメモリセル分のデータサイズを「ページ」と称し、ロウバッファ202は、データの書き込み時またはデータの読み出し時において選択されたワード線に対応する1ページ分のデータを一時的に格納する。本実施形態では、不揮発メモリ21へのデータの書き込みや不揮発メモリ21からのデータの読み出しは、このロウバッファ202を経由して行われるが、これは、公知の方法と同様である。
図1に戻って説明を続ける。コントローラ22は、不揮発メモリ21に対するデータの書き込みを要求する書き込み要求を、プロセッサ10のメモリコントローラ13から受け取った後に、該書き込み要求に基づくデータの書き込みを行う。また、コントローラ22は、不揮発メモリ21に対するデータの読み出しを要求する読み出し要求を、プロセッサ10のメモリコントローラ13から受け取った後に、該読み出し要求に基づくデータの読み出しを行う。
本実施形態のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。見方を変えれば、コントローラ22は、電源30から「半導体装置」に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行うと考えることもできる。また、コントローラ22は、電源30から「情報処理装置1」に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行うと考えることもできる。
また、本実施形態のコントローラ22は、電源30からメモリデバイス20に供給される電力の電圧を監視し、電圧が閾値以下になると異常が発生したと判断(認識)する。つまり、コントローラ22は、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。見方を変えれば、コントローラ22は、電源30から「半導体装置」に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行うと考えることもできる。また、コントローラ22は、電源30から「情報処理装置1」に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行うと考えることもできる。
また、本実施形態のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、書き込み要求の受け取りを停止する。さらに、コントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求に基づくデータの書き込みを行わない。本実施形態のコントローラ22の詳細な内容については後述する。
電力保持部23は、電源30から供給される電力を保持する。電力保持部23が保持する電力量は、少なくとも、電源30からの電力の供給が停止した場合でも、メモリデバイス20がホスト装置であるプロセッサ10のメモリコントローラ13から受け取った書き込み要求に基づく不揮発メモリ21への書き込みをすべて完了させるのに必要な電力量である。本実施形態では、電力保持部23はキャパシタで構成されるが、これに限られるものではない。例えば電力保持部23は、蓄電池などで構成されてもよい。要するに、電源30からの電力を保持可能なデバイスであればよい。図1の例では、電源30からメモリデバイス20に供給される電力は、整流素子31を介して、不揮発メモリ21、コントローラ22および電力保持部23の各々に供給される。整流素子31の作用により、電圧降下時に、電力保持部23に保持された電力がメモリデバイス20の外に漏れることを防止できる。また、本実施形態では、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になると、電力保持部23の出力電圧が、電源30から供給される電力の電圧を上回り、電力保持部23に保持された電力が、不揮発メモリ21およびコントローラ22の各々に供給される。電力保持部23から不揮発メモリ21およびコントローラ22への電力の供給は、図1の例のように電源30から供給される電力の電圧が下がれば電力保持部23から電力を供給するように切り替えても良いし、電源30からの電力の供給量が不足してくれば電力保持部23から供給する電力を電源30からの電力と合わせて不揮発メモリ21およびコントローラ22に供給するようにしても良い。
図3は、メモリデバイス20の詳細なハードウェア構成の一例を示す図である。図3に示すように、コントローラ22は、検出部210と、受信部211と、第1の判断部212と、第2の判断部213と、第1の書き込み部214と、バッファメモリ215と、書き込み指示部216と、第2の書き込み部217と、第3の判断部218と、読み出し部219とを備える。これらの各要素は、半導体回路で構成され、それぞれ独立して設けられてもよいし、任意の2以上の要素が集積されて設けられてもよい。
検出部210は、電源30からメモリデバイス20に供給される電力の異常を検出する。より具体的には、検出部210は、電源30からメモリデバイス20に供給される電力を監視し、電源30から供給される電力の電圧が閾値以下になると、異常が発生したと判断する。検出部210は、電源30からメモリデバイス20に供給される電力の異常を検出すると、受信部211および第2の判断部213の各々に対して、異常が発生したことを通知する。なお、電源30からメモリデバイス20に供給される電力の異常を検出する方法は、検出部210が、電源30からメモリデバイス20に供給される電力の電圧を測定する方式に限られるものではなく、例えば検出部210が、電源30やプロセッサ10等の外部装置から、電力の異常を知らせる信号を受け取る方式でもよい。
受信部211は、プロセッサ10のメモリコントローラ13からリクエスト(書き込み要求または読み出し要求)を受け取る。本実施形態のコントローラ22は、複数のクロックサイクルでリクエスト(書き込み要求または読み出し要求)を受け取るので、受信部211は、メモリコントローラ13から、リクエストを構成する複数の情報(以下の説明では「リクエスト情報」と称する場合がある)を順次に受け取ると考えることができる。また、本実施形態では、受信部211は、検出部210から異常発生の通知を受けると、それ以降のリクエスト(リクエスト情報)の受け取りを停止する。
第1の判断部212は、受信部211が受け取ったリクエスト情報が、書き込み要求に対応するのか読み出し要求に対応するのかを判断する。この判断方法としては様々な方法が考えられるが、例えばリクエストのヘッダー部に対応するリクエスト情報は、命令の種類を識別する(書き込み要求か読み出し要求かを識別する)コマンド情報を含む形態の場合、第1の判断部212は、受信部211が受信したリクエストのヘッダー部に対応するリクエスト情報に含まれるコマンド情報を参照することで、該リクエスト情報、および、該リクエスト情報に続く所定数のリクエスト情報が、書き込み要求に対応するのか読み出し要求に対応するのかを判断することができる。
第2の判断部213は、書き込み要求全体を正しく受け取ったか否かを判断する。本実施形態では、書き込み要求全体を正しく受け取ったかどうかは、書き込み要求全体のデータサイズ(予め定められたデータサイズ)分のリクエスト情報群(書き込み要求を構成するリクエスト情報群)を受け取ったかどうかで判断することができる。すなわち、第2の判断部213は、受信部211が複数のクロックサイクルにわたって受け取った、書き込み要求に対応するリクエスト情報群のトータルのサイズが、予め定められたデータサイズに到達した場合は、書き込み要求全体を正しく受け取ったと判断することができる。さらに、例えば書き込み要求にCRCなどの検査コードが含まれる場合には、その検査コードを使って、情報の誤り(エラー)が無いかどうかを確認してもよい。他にも様々なチェックの仕組みを組み合わせて、書き込み要求を正しく受け取ったかどうかを判断してよい。
第2の判断部213は、書き込み要求を受け取ったと判断すると(書き込み要求全体を正しく受け取ったと判断すると)、第1の書き込み部214に対して、その受け取った書き込み要求(言い換えれば、受け取りが完了した書き込み要求)に対応する書き込み情報をバッファメモリ215に書き込むことを指示する。
また、本実施形態では、第2の判断部213は、検出部210から異常発生の通知を受けると、プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求を廃棄する。つまり、第2の判断部213は、検出部210から異常発生の通知を受けとったときに、既に受け取り済みの、書き込み要求に対応するリクエスト情報群のトータルのサイズが予め定められたデータサイズに到達していない場合は、その既に受け取り済みのリクエスト情報群を廃棄する。これにより、書き込み対象のデータの一部だけが書き込まれてしまうような一貫性の無い状態(処理の途中で終わってしまう状態)に陥ることを防止する。
第2の判断部213からの指示を受けた第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報をバッファメモリ215に書き込む。書き込み情報は、書き込み対象のデータと、不揮発メモリ21のうち書き込み対象のデータが書き込まれる位置を示すアドレス情報とを少なくとも含む。この例では、第1の書き込み部214は、書き込み情報として書き込み要求そのものをバッファメモリ215に書き込むが、これに限られるものではない。
第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報(この例では書き込み要求そのもの)をバッファメモリ215に書き込んだ後、書き込み指示部216に対して、バッファメモリ215に書き込み情報を書き込んだことを、バッファメモリ215のうち書き込み情報を書き込んだ位置を示す情報(以下、「バッファ位置情報」と称する場合がある)と併せて通知する。この通知を受けた書き込み指示部216は、第2の書き込み部217に対して、バッファメモリ215のうち、第1の書き込み部214から通知されたバッファ位置情報が示す位置に書き込まれた書き込み情報に基づくデータの書き込みを指示する。
書き込み指示部216からの書き込み指示を受けた第2の書き込み部217は、バッファメモリ215のうち、書き込み指示部216から受け取ったバッファ位置情報(この例では書き込み指示に含まれている)が示す位置に書き込まれた書き込み情報を読み出し、読み出した書き込み情報に基づくデータの書き込みを行う。上述したように、書き込み情報には、不揮発メモリ21のうち書き込み対象データを書き込む位置を示すアドレス情報が含まれている。この例では、アドレス情報の上位部分は、複数のワード線のうちの何れかを示すロウアドレスとして機能し、アドレス情報の下位部分は、複数のビット線のうちの何れかを示すカラムアドレスとして機能する。第2の書き込み部217は、バッファメモリ215から読み出した書き込み情報に含まれるアドレス情報の上位部分のロウアドレスが示すワード線に対応する1ページ分のデータ(ページデータ)をページバッファ202に読み出す制御を行った後、アドレス情報の下位部分のカラムアドレスが示すビット線に供給する電圧を制御することで、ページバッファ202内のページデータに対してデータ(書き込み要求に含まれる書き込み対象データに相当するデータ)を書き込む。そして、データを書き込んだページデータを、ロウアドレスが示すワード線に接続された複数のメモリセルに書き戻すことにより、不揮発メモリ21への書き込みを完了する。
要するに、本実施形態のコントローラ22は、情報を一時的に記憶するバッファメモリ215をさらに備え、コントローラ22は、プロセッサ10のメモリコントローラ13から受け取った書き込み要求に含まれる書き込み対象のデータをバッファメモリ215に記憶した後、バッファメモリ215に記憶した書き込み対象のデータに基づいてデータの書き込みを行う。
図3の説明を続ける。第3の判断部218は、読み出し要求全体を正しく受け取ったか否かを判断する。この判断方法は、基本的には書き込み要求全体を正しく受け取ったか否かを判断する方法と同様である。第3の判断部218は、読み出し要求を受け取ったと判断すると、読み出し部219に対して、その受け取った読み出し要求(受け取りが完了した読み出し要求)に対応するデータの読み出しを指示する。
第3の判断部218からの読み出し指示を受けた読み出し部219は、不揮発メモリ21のうち、第3の判断部218から受け取った読み出し要求(この例では読み出し指示に含まれている)に含まれるアドレス情報が示す位置に格納されたデータを読み出し、その読み出したデータを、プロセッサ10のメモリコントローラ13へ返信(リプライ)する。
図4は、プロセッサ10のメモリコントローラ13からリクエスト情報を受け取った場合のコントローラ22の動作例を示すフローチャートである。まず、受信部211はリクエスト情報を受け取る(ステップS1)。次に、第1の判断部212は、ステップS1で受け取ったリクエスト情報が、書き込み要求に対応しているかどうかを判断する(ステップS2)。
上述のステップS1で受け取ったリクエスト情報が書き込み要求に対応している場合(ステップS2:Yes)、第2の判断部213は、書き込み要求全体を正しく受け取ったかどうかを判断する(ステップS3)。書き込み要求全体を正しく受け取った場合(ステップS3:Yes)、第2の判断部213は、第1の書き込み部214に対して、その受け取った書き込み要求に対応する書き込み情報をバッファメモリ215に書き込むことを指示する。第2の判断部213からの指示を受けた第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報をバッファメモリ215に書き込む(ステップS4)。第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報をバッファメモリ215に書き込んだ後、書き込み指示部216に対して、バッファメモリ215に書き込み情報を書き込んだことをバッファ位置情報と併せて通知する。この通知を受けた書き込み指示部216は、第2の書き込み部217に対して、バッファメモリ215のうち、第1の書き込み部214から通知されたバッファ位置情報が示す位置に書き込まれた書き込み情報に基づくデータの書き込みを指示する(ステップS5)。書き込み指示部216からの書き込み指示を受けた第2の書き込み部217は、不揮発メモリ21へのデータの書き込みを行う(ステップS6)。
図5は、ステップS6の詳細な処理の一例を示すフローチャートである。図5に示すように、まず第2の書き込み部217は、書き込み指示部216からの書き込み指示を受信する(ステップS11)。次に、第2の書き込み部217は、バッファメモリ215のうち、書き込み指示部216から受け取ったバッファ位置情報(この例では書き込み指示に含まれている)が示す位置に書き込まれた書き込み情報を読み出す(ステップS12)。次に、第2の書き込み部217は、ステップS12で読み出した書き込み情報に基づいてデータの書き込みを行う(ステップS13)。
図4に戻って説明を続ける。上述のステップS2において、上述のステップS1で受け取ったリクエスト情報が書き込み要求に対応していない場合(ステップS2:No)、つまり、上述のステップS1で受け取ったリクエスト情報が読み出し要求に対応している場合、第3の判断部218は、読み出し要求全体を正しく受け取ったかどうかを判断する(ステップS7)。読み出し要求全体を正しく受け取った場合(ステップS7:Yes)、第3の判断部218は、読み出し部219に対して、その受け取った読み出し要求に対応するデータの読み出しを指示する(ステップS8)。第3の判断部218からの読み出し指示を受けた読み出し部219は、不揮発メモリ21からのデータの読み出しを行う(ステップS9)。より具体的には、読み出し部219は、不揮発メモリ21のうち、第3の判断部218から受け取った読み出し要求(この例では読み出し指示に含まれている)に含まれるアドレス情報が示す位置に格納されたデータを読み出し、その読み出したデータを、プロセッサ10のメモリコントローラ13へ返信(リプライ)する。
次に、図6を用いて、コントローラ22(検出部210)が、電源30からメモリデバイス20へ供給される電力の異常を検出した場合のコントローラ22の動作例を説明する。図6のフローチャートは、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になったために、検出部210が、電力の異常が発生したことを検出し、受信部211および第2の判断部213の各々に対して、異常が発生したことを通知していることを前提とする。なお、電源30からメモリデバイス20に供給される電力の電圧は閾値以下に低下しているので、メモリデバイス20の電力状態は、電力保持部23に保持された電力が、不揮発メモリ21およびコントローラ22の各々に供給される状態に切り替わっている。
検出部210から異常発生の通知を受けた受信部211は、それ以降のリクエスト(リクエスト情報)の受け取りを停止する(ステップS21)。また、検出部210から異常発生の通知を受けた第2の判断部213は、プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求があるかどうかを判断する(ステップS22)。プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求がある場合(ステップS22:Yes)、第2の判断部213は、その受け取り途中の書き込み要求を廃棄する(ステップS23)。
一方、検出部210が異常を検出した際に、既に受け取りが完了している書き込み要求については、電力保持部23から供給される電力を用いて、その既に受け取りが完了している書き込み要求に基づくデータの書き込みが行われる。なお、本実施形態のように電力保持部23がキャパシタで構成される場合、キャパシタの容量は、少なくとも、電源30からメモリデバイス20に供給される電力に異常が発生した際に、既に受け取った書き込み要求に基づくデータの書き込みを行うのに必要な電力量を蓄えることができる値に設定される。例えばキャパシタの容量は、バッファメモリ215が保持可能な数の書き込み要求を処理可能な電力量を蓄えることができる値に設定されてもよい。
以上に説明したように、メモリデバイス20のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。すなわち、電源30からメモリデバイス20に供給される電力の異常が発生しても、既に受け取りが完了している書き込み要求については、電力保持部23から供給される電力を用いて書き込みを完了させることができる。したがって、本実施形態によれば、メモリデバイス20にコントローラ22が搭載される構成においてもアトミシティを保証することができる。
(第1の実施形態の変形例1)
例えばメモリデバイス20は、複数のアクセスポートを有する形態であってもよい。
例えばメモリデバイス20とプロセッサ10とを、複数のアクセスポートで接続することで、データ転送能力を向上させることができる。例えば図7に示すように、メモリデバイス20が、アクセスポートを2つ有してもよい。このように2つのアクセスポートを使ってメモリデバイス20とプロセッサ10とを接続することで、データ転送のバンド幅を2倍にすることができる。
また、例えばメモリデバイス20を複数のプロセッサ10と接続することもできる。例えば図8に示すように、アクセスポートを2つ有するメモリデバイス20に対して、2つのプロセッサ10aおよび10bを接続することもできる。この例では、プロセッサ10aとプロセッサ10bがデータを共有することができる。
また、例えばメモリデバイス20に対して、プロセッサ10と、別のメモリデバイス(以下、「第2のメモリデバイス200」と称する)とを接続し、プロセッサ10からの書き込み要求を、必要に応じて第2のメモリデバイス200に転送する構成であってもよい。図9に示すように、メモリデバイス20は第2のメモリデバイス200と接続され、メモリデバイス20のコントローラ22は、プロセッサ10のメモリコントローラ13から、第2のメモリデバイス200に対するデータの書き込みを要求する第2の書き込み要求を受け取ると、該第2の書き込み要求を第2のメモリデバイス200に転送する構成でもよい。
図9のようにカスケード接続した場合、プロセッサ10は直接接続されているメモリデバイス20に対する書き込み要求の送信が完了すると、書き込みが完了したと認識するので、第2のメモリデバイス200に転送すべき第2の書き込み要求を受け取ったメモリデバイス20は、電源30からメモリデバイス20に供給される電力の異常が発生しても、電力保持部23からの電力を用いて、第2のメモリデバイス200に対して第2の書き込み要求を転送する。
すなわち、図9の例では、メモリデバイス20のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った第2の書き込み要求を第2のメモリデバイス200に転送する。
また、例えば図10に示すように、第2のメモリデバイス200が、プロセッサ10とは別の第2のプロセッサ100(第2のホスト装置の一例)と接続される構成とすることもできる。第2のプロセッサ100の基本的な構成はプロセッサ10の構成と同様であるとする。この例では、メモリデバイス20のコントローラ22は、第2のメモリデバイス200から、第2のプロセッサ100が不揮発メモリ21に対してデータの書き込みを要求する第3の書き込み要求を受け取った後に、該第3の書き込み要求に基づくデータの書き込みを行う。また、コントローラ22は、第2のメモリデバイス200から、第2のプロセッサ100が不揮発メモリ21からのデータの読み出しを要求する第2の読み出し要求を受け取った後に、該第2の読み出し要求に対応するデータの読み出しを行う。この例では、図11に示すように、メモリデバイス20は、アクセスポートを2つ(プロセッサ10用のアクセスポートと第2のメモリデバイス200用のアクセスポート)有している。図11の例では、メモリデバイス20は、プロセッサ10と第2のメモリデバイス200の両方からリクエストを受け付けることができる。
図10および図11の構成では、電源30からメモリデバイス20に供給される電力の異常を検出した際のメモリデバイス20の動作が複雑になる。つまり、メモリデバイス20は、電力の異常を検出した時点以降は、プロセッサ10からの書き込み要求の受け取りを停止して、その時点で既に受け取っていたリクエストが、メモリデバイス20に対するデータの書き込みを要求する書き込み要求であれば、該書き込み要求に基づくデータの書き込みを行うのに加えて、該リクエストが、他のメモリデバイス(第2のメモリデバイス200)に対するデータの書き込みを要求する書き込み要求(第2の書き込み要求)であれば、確実に他のメモリデバイスへの転送を完了させる必要がある。また、メモリデバイス20が電力の異常を検出すると、メモリデバイス20に直結されているプロセッサ10からのリクエストの受け取りは停止する必要があるが、その時点で他のメモリデバイス(この例では第2のメモリデバイス200)が他のプロセッサ(この例では第2のプロセッサ100)から既に受け取っていた、メモリデバイス20に対するリクエスト(この例では第3の書き込み要求または第2の読み出し要求)が転送されてきた場合は、確実に受け取らなければならない。
したがって、この例では、メモリデバイス20のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、第2のメモリデバイス200から受け取っている途中の第3の書き込み要求があれば、電力保持部23から供給される電力を用いて、第2のメモリデバイス200からの第3の書き込み要求の受け取りを継続する。そして、コントローラ22は、電力保持部23から供給される電力を用いて、受け取りが完了した第3の書き込み要求に基づくデータの書き込みを行う。
図12は、図10および図11の構成におけるコントローラ22(検出部210)が、電源30からメモリデバイス20へ供給される電力の異常を検出した場合のコントローラ22の動作例を示すフローチャートである。図12のフローチャートは、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になったために、検出部210が、電力の異常が発生したことを検出していることを前提とする。なお、電源30からメモリデバイス20に供給される電力の電圧は閾値以下に低下しているので、メモリデバイス20の電力状態は、電力保持部23に保持された電力が、不揮発メモリ21およびコントローラ22の各々に供給される状態に切り替わっている。
まず、検出部210は、受信部211に対してプロセッサ10からのリクエストの受け取りを停止することを指示する。この指示を受けた受信部211は、それ以降のプロセッサ10からのリクエストの受け取りを停止する(ステップS31)。次に、検出部210は、第2の判断部213に対して問い合わせを行い、第2のメモリデバイス200から受け取っている途中のリクエストがあるかどうかを判断する(ステップS32)。なお、受信部211で受け取ったリクエストが、プロセッサ10から送られてきたリクエストなのか、第2のメモリデバイス200から転送されてきたリクエストなのかを判断する方法としては、様々な方法が考えらえるが、例えばメモリデバイス20の初期化時に各アクセスポートがプロセッサ10に接続されているか第2のメモリデバイス200に接続されているのかを設定しておき、リクエストを受信したアクセスポートに応じて、プロセッサ10からのリクエストなのか第2のメモリデバイス200からのリクエストなのかを判断することもできる。また、例えばリクエストの中に、プロセッサ10が送ったリクエストなのか第2のメモリデバイス200が転送したリクエストなのかを示すフラグ情報が含まれる形態であってもよい。
第2のメモリデバイス200から受け取っている途中のリクエストがない場合(ステップS32:No)、検出部210は、受信部211に対して第2のメモリデバイス200からのリクエストの受け取りを停止することを指示する。この指示を受けた受信部211は、それ以降のプロセッサ10からのリクエストの受け取りを停止する(ステップS33)。
一方、第2のメモリデバイス200から受け取っている途中のリクエストがある場合(ステップS32:Yes)、検出部210は、受信部211に対して第2のメモリデバイス200からのリクエストの受け取りを継続することを指示する。この指示を受けた受信部211は、第2のメモリデバイス200からのリクエストの受け取りを継続する(ステップS34)。そして、受信部211が第2のメモリデバイス200からのリクエスト情報(リクエストを構成する情報)を受け取ると(ステップS35)、第1の判断部212は、ステップS1で受け取ったリクエスト情報が、第3の書き込み要求に対応しているかどうかを判断する(ステップS36)。この判断方法は、上述の第1の実施形態で説明した方法と同様である。以降のステップS37〜ステップS43の処理内容は、図4のステップS3〜ステップS9の処理内容と同様であるので、詳細な説明は省略する。なお、図12のステップS37において、第3の書き込み要求全体を正しく受け取ったと判断した場合(ステップS37:Yes)、または、図12のステップS41において、第2の読み出し要求全体を正しく受け取ったと判断した場合(ステップS41:Yes)、以降の第2のメモリデバイス200からのリクエスト(リクエスト情報)の受け取りは停止してもよい。
また、例えば図13に示すように、メモリデバイス20がプロセッサ10とは直結されず、第2のメモリデバイス200を介してプロセッサ10からのリクエスト(書き込み要求または読み出し要求)を受け取る構成においても、上記と同様の問題が存在する。すなわち、メモリデバイス20は、電力の異常を検出した際に、第2のメモリデバイス200がプロセッサ10から既に受け取っていた、メモリデバイス20に対するリクエスト(書き込み要求または読み出し要求)が転送されてきた場合は、確実に受け取らなければならない。
図13の構成では、メモリデバイス20のコントローラ22は、メモリデバイス20と接続された第2のメモリデバイス200から、プロセッサ10(ホスト装置の一例)が不揮発メモリ21に対するデータの書き込みを要求する書き込み要求を受け取った後に、該書き込み要求に基づくデータの書き込みを行う。そして、コントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行い、第2のメモリデバイス200から受け取っている途中の書き込み要求があれば、電力保持部23から供給される電力を用いて、第2のメモリデバイスからの書き込み要求の受け取りを継続する。
以上のようにして、複数のメモリデバイスを組み合わせて用いる場合でも、何れかのメモリデバイスに接続される1または複数のプロセッサが、電力の異常が発生する前に何れかのメモリデバイスに対して送った書き込み要求(上述の第2の書き込み要求、第3の書き込み要求を含む)は、必ずターゲットのメモリデバイスに転送されて当該書き込み要求に基づくデータの書き込みが行われることを保証できる。
(第1の実施形態の変形例2)
例えば図14に示すように、電力保持部23および整流素子31が、メモリデバイス20の外部に設けられる構成であってもよい。要するに、メモリデバイス20は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、上述のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であってもよい。見方を変えれば、半導体装置は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から半導体装置に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であってもよい。また、情報処理装置1は、上述のプロセッサ10と、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から情報処理装置1に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であってもよい。
また、図14の例では、メモリデバイス20は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、上述のコントローラ22は、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であると考えることもできる。見方を変えれば、半導体装置は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から半導体装置に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であると考えることもできる。また、情報処理装置1は、上述のプロセッサ10と、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から情報処理措置1に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う形態であると考えることもできる。
(第1の実施形態の変形例3)
例えばHMCのように、メモリデバイス20内に複数の不揮発メモリ21のダイまたはチップを持たせる場合も考えられるので、図15に示すように、メモリデバイス20は、複数の不揮発メモリ21を備える形態であってもよい。図15の例では、レイアウトの便宜上、第3の判断部218および読み出し部219の記載を省略しているが、複数の不揮発メモリ21が設けられる点、および、複数の不揮発メモリ21と1対1に対応する複数の第2の書き込み部217が設けられる点以外の構成は、上述の第1の実施形態と同様である。
例えば第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報(この例では書き込み要求そのもの)をバッファメモリ215に書き込んだ後、バッファメモリ215のうち該書き込み情報を書き込んだ位置を示すバッファ位置情報、および、該書き込み要求に対応する不揮発メモリ21(該書き込み要求に含まれるアドレス情報により特定される不揮発メモリ21)を示す不揮発メモリ情報と併せて、バッファメモリ215に書き込み情報を書き込んだことを、書き込み指示部216に通知することができる。この通知を受けた書き込み指示部216は、第1の書き込み部214から通知された不揮発メモリ情報が示す不揮発メモリ21に対応する第2の書き込み部217に対して、バッファメモリ215のうち、第1の書き込み部214から通知されたバッファ位置情報が示す位置に書き込まれた書き込み情報に基づくデータの書き込みを指示することができる。
また、共通のバッファメモリ215を設ける代わりに、複数の不揮発メモリ21と1対1に対応(見方を変えれば複数の第2の書き込み部217と1対1に対応)する複数のバッファメモリ215を設けてもよい。この構成では、第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報(この例では書き込み要求そのもの)を、該書き込み要求に含まれるアドレス情報により特定される不揮発メモリ21に対応するバッファメモリ215に書き込んだ後、該バッファメモリ215のうち書き込み情報を書き込んだ位置を示すバッファ位置情報と併せて、バッファメモリ215に書き込み情報を書き込んだことを、対応する書き込み指示部216に通知してもよい。
なお、図15に示すメモリデバイス20が有するアクセスポートの数は、1つでもよいし、2つ以上でもよいし、任意の本数に設定可能である。
図16は、本変形例のメモリデバイス20の実装方式の一例を示す模式図である。この実装方式は、HMCのように複数の不揮発メモリ21のシリコンダイと、コントローラ22のシリコンダイを、TSV等の技術を用いて接続してパッケージに封印する方式である。また、この実装方式の変形例としては、不揮発メモリ21のシリコンダイとコントローラ22のシリコンダイをシリコンインタポーザ上で接続して2.5D実装のメモリデバイス20として構成しても構わない。図16の例は、メモリデバイス20が電力保持部23を内蔵している構成を示しているが、図17のように電力保持部23がメモリデバイス20に外付けされる構成であっても構わない。
図18は、メモリデバイス20の別の実装方式の一例を示す模式図である。この実装方式は、ひとつのシリコンダイにコントローラ22と不揮発メモリ21(不揮発メモリ21の数は、本変形例のように複数であってもよいし、上述の第1の実施形態のように1つであっても構わない)を集積し、それをパッケージに封印する方式である。図18のシリコンダイは単体でパッケージに入れてメモリデバイス20として実施することもできるし、図19に示すように、シリコンダイと電力保持部23をパッケージに入れてメモリデバイス20として実施することもできる。
以上に限らず、メモリデバイス20の実装方式としては様々な実装方式を用いることができる。たとえば、メモリデバイス20の実装方式として、1つまたは複数の不揮発メモリ21のチップと、コントローラ22のチップを、プリント基板上に搭載する方式を用いることもできる。
(第2の実施形態)
次に、第2の実施形態について説明する。上述の第1の実施形態と共通する部分については適宜に説明を省略する。図20は、本実施形態のメモリデバイス20の詳細なハードウェア構成の一例を示す図である。図20に示すように、コントローラ22は、不揮発キャッシュメモリ222をさらに備え、上述の第2の書き込み部217の代わりに、第3の書き込み部221および第4の書き込み部223を備える点で上述の第1の実施形態と相違する。
コントローラ22が受け取った書き込み要求は、不揮発メモリ21ではなく、より高速の不揮発キャッシュメモリ222に書き込んだ時点で永続的になる。本実施形態では、第2の判断部213は、書き込み要求全体を正しく受信したと判断すると、第1の書き込み部214に対して、その受信した書き込み要求に対応する書き込み情報(この例では書き込み要求そのものであるが、これに限られるものではない)をバッファメモリ215に書き込むことを指示する。
第2の判断部213からの指示を受けた第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報をバッファメモリ215に書き込む。第1の書き込み部214は、受け取りが完了した書き込み要求に対応する書き込み情報をバッファメモリ215に書き込んだ後、バッファメモリ215のうち該書き込み情報を書き込んだ位置を示すバッファ位置情報と併せて、バッファメモリ215に書き込み情報を書き込んだことを、書き込み指示部216に通知する。
第1の書き込み部214からの通知を受けた書き込み指示部216は、バッファメモリ215のうち、第1の書き込み部214から通知されたバッファ位置情報が示す位置に書き込まれた書き込み情報を、不揮発キャッシュメモリ222へ書き込むことを、第3の書き込み部221に対して指示する。
書き込み指示部216からの書き込み指示を受けた第3の書き込み部221は、バッファメモリ215のうち、書き込み指示部216から受け取ったバッファ位置情報(この例では書き込み指示に含まれている)が示す位置に書き込まれた書き込み情報を読み出す。そして、第3の書き込み部221は、その読み出した書き込み情報(この例では書き込み要求そのもの)を不揮発キャッシュメモリ222へ書き込む。
第4の書き込み部223は、適切なタイミングで、不揮発キャッシュメモリ222に書き込まれた書き込み情報に基づくデータの書き込み(不揮発メモリ21への書き込み)を行う。
上述の第1の実施形態と同様に、検出部210から異常発生の通知を受けた受信部211は、それ以降のリクエストの受信を停止する。また、検出部210から異常発生の通知を受けた第2の判断部213は、プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求があるかどうかを判断し、プロセッサ10のメモリコントローラ13から受け取っている途中の書き込み要求がある場合は、その受け取り途中の書き込み要求を廃棄する。一方、検出部210が異常を検出した際に、既に受け取りが完了している書き込み要求については、電力保持部23から供給される電力を用いて、その既に受け取りが完了している書き込み要求に対応する書き込み情報の不揮発キャッシュメモリ222への書き込みが行われる。
要するに、本実施形態のメモリデバイス20は、上述の不揮発キャッシュメモリ222と、不揮発メモリ21に対するデータの書き込みを要求する書き込み要求を、プロセッサ10のメモリコントローラ13から受け取った後に、該書き込み要求に対応する書き込み情報を不揮発キャッシュメモリに書き込むコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む。見方を変えれば、半導体装置は、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30から「半導体装置」に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることができる。また、情報処理装置1は、上述のプロセッサ10と、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30から「情報処理装置1」に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることができる。
また、本実施形態のメモリデバイス20は、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることができる。見方を変えれば、半導体装置は、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30から「半導体装置」に供給される電力の電圧が閾値以下になると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることができる。また、情報処理装置1は、上述のプロセッサ10と、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、電源30から供給される電力を保持する電力保持部23と、を備え、コントローラ22は、電源30から「情報処理装置1」に供給される電力の電圧が閾値以下になると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることができる。
本実施形態においても、メモリデバイス20のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222へ書き込む。すなわち、電源30からメモリデバイス20に供給される電力の異常が発生しても、既に受け取りが完了している書き込み要求については、電力保持部23から供給される電力を用いて、該書き込み要求に対応する書き込み情報の不揮発キャッシュメモリ222への書き込みを完了させることができるので、アトミシティを保証することができる。
(第2の実施形態の変形例)
例えば図21に示すように、電力保持部23および整流素子31が、メモリデバイス20の外部に設けられる構成であってもよい。要するに、メモリデバイス20は、上述の不揮発キャッシュメモリ222と、上述のコントローラ22と、を備え、コントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であってもよい。見方を変えれば、半導体装置は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から「半導体装置」に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であってもよい。また、情報処理装置1は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から「情報処理装置1」に供給される電力の異常を検出すると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であってもよい。
また、図21の例では、メモリデバイス20は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、上述のコントローラ22は、電源30からメモリデバイス20に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることもできる。見方を変えれば、半導体装置は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から「半導体装置」に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることもできる。また、情報処理装置1は、上述の不揮発メモリ21と、上述のコントローラ22と、を備え、コントローラ22は、電源30から「情報処理装置1」に供給される電力の電圧が閾値以下になると、電源30から供給される電力を保持する電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に対応する書き込み情報を不揮発キャッシュメモリ222に書き込む形態であると考えることもできる。
また、例えば図22に示すように、不揮発キャッシュメモリ222がコントローラ22に外付けされる構成であってもよいし、図23に示すようにコントローラ22、電力保持部23および整流素子31の集積体が、不揮発メモリ21とは別に独立して設けられる形態であってもよい。
(第3の実施形態)
次に、第3の実施形態を説明する。上述の各実施形態と共通する部分については適宜に説明を省略する。
図24は、本実施形態のメモリデバイス20の詳細なハードウェア構成の一例を示す図である。図24に示すように、コントローラ22は、検出部210と、受信部211と、解析部231と、送信部232と、バッファメモリ215と、書き込み部233と、読み出し部219とを備える。これらの各要素は、半導体回路で構成され、それぞれ独立して設けられてもよいし、任意の2以上の要素が集積されて設けられてもよい。本実施形態のメモリデバイス30は、図1のメモリデバイス20のようにホスト装置としてプロセッサ10に接続される場合もあるし、図9の第2のメモリデバイス200のようにホスト装置として他のメモリデバイス(図9のメモリデバイス20)に接続される場合もある。以下の本実施形態の説明では、ホスト装置としてプロセッサ10に接続される場合の動作を説明するが、ホスト装置として他のメモリデバイスに接続される場合の動作も同じである。
検出部210は、電源30からメモリデバイス20に供給される電力の異常を検出する。より具体的には、検出部210は、電源30からメモリデバイス20に供給される電力を監視し、電源30から供給される電力の電圧が閾値以下になると、異常が発生したと判断する。検出部210は、電源30からメモリデバイス20に供給される電力の異常を検出すると、異常を検出したことを知らせる信号線によって、異常が発生したことを解析部231に通知する。なお、電源30からメモリデバイス20に供給される電力の異常を検出する方法は、検出部210が、電源30からメモリデバイス20に供給される電力の電圧を測定する方式に限られるものではなく、例えば検出部210が、電源30やプロセッサ10等の外部装置から、電力の異常を知らせる信号を受け取る方式でもよい。検出部210が検出するのは、メモリデバイス20が正常に動作を継続できない状況が発生したことであり、検出部210から解析部231への異常発生の通知は、メモリデバイス20がプロセッサ10からの新たな書き込み要求の受け取りを停止する指示であるとともに、既に受け取った書き込み要求に基づく不揮発メモリへのデータの書き込みを、電源30から供給される電力だけでは行えない場合は電力保持部23に保持した電力も使って行うことの指示である。
受信部211は、プロセッサ10のメモリコントローラ13からリクエスト(書き込み要求または読み出し要求)を受け取る。本実施形態のコントローラ22は、複数のクロックサイクルでリクエスト(書き込み要求または読み出し要求)を受け取るので、受信部211は、メモリコントローラ13から、リクエスト全体を1クロックで送信できる単位に分割した各々の断片情報(リクエスト情報)を順次受け取ると考えることができる。受信部211が受け取ったリクエスト(あるいはリクエストを構成する断片情報)は、解析部231が受け取り、解析部231が、リクエストの解析および必要な処理を行う。受信部211と解析部231の動作タイミングの違いを吸収するために、受信部211が受け取ったリクエスト(あるいはリクエストを構成する断片情報)を受け取った順に入れるFIFO(First In First Out)キューを設け、解析部231はFIFOキューからリクエスト(あるいはリクエストを構成する断片情報)を受け取るように実装することが望ましい。
送信部232は、読み出し要求に基づいて不揮発メモリ21から読み出したデータを読み出し結果として、プロセッサ10のメモリコントローラ13に送り返す。読み出し要求にも4バイト、8バイト、16バイト、32バイト、64バイトなどの複数種類のデータサイズの異なる読み出し要求があるので、それぞれに対応した長さのデータを読み出し結果としてホスト装置であるプロセッサ10に送り返す。読み出し要求に対応する読み出し結果など、一般に、受け取ったリクエストを処理した結果の送り返しはレスポンスと呼ぶ。
本実施形態のリクエストとレスポンスの一般的な形式は、たとえば、図25と図26に示すような構成をしている。図25はリクエストの構成の一例を示す図であり、図25の例では、リクエストは、コマンドとタグとアドレスとデータとCRCの各フィールドを持つ。コマンドは、このリクエストが書き込み要求なのか読み出し要求なのか、データ長は何バイトなのかを示す情報である。タグは、リクエストとレスポンスの対応をとるための番号で、ある番号のタグを持つ読み出し要求に対応する読み出し結果は、読み出し要求と同じ番号のタグを持つ。アドレスは、データを読み書きしたい不揮発メモリ21内のデータの位置を示す情報である。データフィールドは、書き込み要求で書き込みたいデータを保持するフィールドである。データフィールドの長さは、コマンドに指定される書き込み要求のデータサイズによって決まる。読み出し要求のリクエストにはデータフィールドは存在しない。CRC(Cyclic Redundancy Code)は、リクエスト全体が正しく送られたかどうか検査するための情報である。
図26はレスポンスの構成の一例を示す図であり、図26の例では、レスポンスは、コマンドとタグとデータとCRCの各フィールドを持つ。コマンドは、このレスポンスが何バイトの読み出し要求に対応する読み出し結果であるかを示す情報である。タグは、このレスポンスがどのリクエストに対応するものかを示す情報である。データは読み出したデータを保持するフィールドである。CRCはレスポンス全体が正しく送られたかどうかを検査するための情報である。
図27は、64バイトの書き込み要求のリクエストの例である。コマンドフィールドに、64バイトの書き込み要求であることを示す情報を持ち、この書き込み要求はレスポンスを返す必要が無いのでタグフィールドは無指定(この例では「−」と表記)で、データを書き込みたいアドレスは「108A0」、書き込みたいデータは「8F 42 … 0B 9D」である。
図28は、64バイトの読み出し要求のリクエストの例である。コマンドフィールドに、64バイトの読み出し要求であることを示す情報を持ち、タグフィールドは「7」で、データを読み出したいアドレスは「21B498」である。この読み出し要求に対応する読み出し結果のレスポンスの例が図29である。コマンドフィールドは、64バイトの書き込み要求に対応する読み出し結果であることを示す情報を持ち、タグフィールドは対応する読み出し要求と同じ「7」で、データフィールドには読み出したデータである「48 BD … 53 A4」を持つ。
なお、ここに示した例では、書き込み要求は対応する書き込み結果のレスポンスを持たない場合を示したが、読み出し要求と同様に、書き込み要求に対しても書き込みが終わったこと(あるいは書き込み要求を受け取ったこと)を知らせる書き込み結果のレスポンスを返すようにすることは容易である。
図24の解析部231は、受信部211がプロセッサ10から受け取ったリクエストを解析して、それが読み出し要求なのか書き込み要求なのか判断し、読み出し要求なら読み出し部219に読み出し処理を行うように指示し、書き込み要求なら書き込み要求に含まれるデータ(書き込み対象のデータ)をバッファメモリ215に保管した後に、書き込み部233に対して該データの書き込みを指示する。
図30は、解析部231の詳細な動作の一例を示すフローチャートである。以下、図30に基づいて解析部231の動作を説明する。まず、解析部231は、受信部211がプロセッサ10から受信したリクエストのコマンドフィールドを受け取る(ステップS50)。このとき、受信部211が既に1以上のリクエストを受信していれば(そしてFIFOに入れていれば)、最初のリクエストのコマンドフィールドを取り出す。受信部211が、まだプロセッサ10からリクエストを受け取っていない場合(FIFOが空の場合)は、受信部211が新しいリクエストの受け取りを開始するのを待つ。受信部211がリクエストの受け取りを開始すれば、リクエスト全体を受け取り終わる前でも、少なくともコマンドフィールドさえ受け取っていれば、解析部231はそのコマンドフィールドを受け取って処理を進める。なお、解析部231は、コマンドフィールド単独でなく、他のフィールド(たとえばタグフィールドなど)も一緒に受信部211から受け取るようにしても構わない。
次に、解析部231は、検出部210から異常信号が送られて来ているかどうか調べる(ステップS51)。検出部210から異常信号が送られて来ている場合(ステップS51:YES)、これ以降は新しいリクエストの処理は行わないので、受信部211からリクエスト全体を受け取って、何もせず読み飛ばして(ステップS52)、ステップS50に戻る。検出部210から異常信号が送られて来ていない場合(ステップS51:No)は、解析部231は、受信部211からリクエストのタグフィールドとアドレスフィールドを受け取る(ステップS53)。このときも、受信部211がこのリクエスト全体の受け取りを完了している必要は無く、少なくともタグフィールドおよびアドレスフィールドの各々に対応する断片情報を受け取っていれば良い。次に、先に受け取ったコマンドフィールドのコマンドが書き込み要求なのか読み出し要求なのかを判定する(ステップS54)。読み出し要求である場合(ステップS54:NO)は、CRCチェックが成功したかどうかを判定し(ステップS55)、リクエストが正しく受信できていない場合(ステップS55:No)は、このリクエストを無視してステップS50に戻る。CRCチェックでリクエストが正しく受信できていることが分かれば(ステップS55:YES)、読み出し部219に対してリクエストのコマンドフィールドとタグフィールドとアドレスフィールドの各フィールドの情報を渡して読み出し処理を指示する(ステップS56)。なお、CRCチェックの実施方法は、解析部231が受信部211からCRCフィールドを受け取って、解析部231内でリクエストの他のフィールドの情報に基づいて計算してチェックを行うように実施できる。また、望ましくは、受信部211内で受信しながらCRCの計算を行っておき、最後のCRCフィールドと比べてチェックし、その結果を解析部231に知らせるように実施すると良い。
上述のステップS54において、コマンドは書き込み要求であった場合(ステップS54:Yes)は、まずバッファメモリ215内にデータ保管領域を確保する(ステップS57)。データ保管領域は、書き込み要求のデータフィールドのデータをバッファメモリ215内に一時的に記憶しておくための領域である。コマンドをみれば何バイトのデータが送られてくるか分かるので、その大きさのデータを記憶できる領域を確保する。次に受信部211からリクエストのデータフィールドを受け取る(ステップS58)。そして、そのデータフィールドに保持されているデータを、ステップS57で確保したバッファメモリ215内のデータ保管領域に書き込む(ステップS59)。このとき、受信部211が、プロセッサ10から、リクエストのデータフィールド全体の受け取りを完了していれば、解析部231は一度にデータフィールド全体を受け取ることができるが、受信部211がリクエストの受け取りを進行中であれば、その時点で受け取っているデータフィールドの一部分だけを解析部231は受け取ることになる。そのため、リクエストのデータフィールド全体を受信部211から受け取ったかどうかを判断して(ステップS60)、まだ全体を受け取っていない場合(ステップS60:No)は、ステップS58に戻って、データフィールドの残りの部分の受け取りとデータ保管領域への書き込みを続ける。データフィールド全体の受け取りを完了すれば(ステップS60:YES)、次にCRCチェックを行ってCRCチェックが成功したかどうかを判定し(ステップS61)、リクエスト全体を正しく受け取ったことを確認できれば(ステップS61:YES)、書き込み部233に対して、リクエストのコマンドフィールドとアドレスフィールドの各フィールドの情報およびデータ保管領域の情報(バッファメモリ215内に確保したデータ保管領域のアドレス)を渡して、書き込み処理を指示する(ステップS62)。CRCチェックの結果、リクエスト全体を正しく受信できていない場合(ステップS61:NO)は、このリクエストを無視してステップS50に戻る。
なお、電源異常などの障害が発生すると、受信部211がリクエストを途中までしか受け取っていない状態で、リクエストの残りの部分が送られて来ない状態になる可能性がある。そのため、図30に示した解析部231のフローチャートに基づいて動作している途中で電源異常が発生すると、解析部231が受信部211からリクエストのいずれかのフィールドを受け取ろうとして停止することになる。これにより、電源等の異常が発生すれば、それ以降の新しいリクエストを受け取って処理することを抑えることができる。
図24に戻って説明を続ける。図24の読み出し部219は、解析部231からの指示に基づき、不揮発メモリ21からデータを読み出してプロセッサ10に送り返す。読み出し部219の詳細な動作の一例を図31のフローチャートに示す。以下、図31に基づいて、読み出し部219の動作を説明する。図31に示すように、まず、読み出し部219は、解析部231から、読み出し要求のリクエストに含まれているコマンドフィールとタグフィールドとアドレスフィールドの各フィールドの情報を受け取る(ステップS70)。次に、コマンドに指定されている長さ(サイズ)のデータを、アドレスに指定されている不揮発メモリ21中の位置から読み出す(ステップS71)。そして、読み出したデータを読み出し結果のレスポンスとして送り返すことを、送信部232に指示する(ステップS72)。このとき、解析部231から受け取ったコマンドフィールドの情報に基づいて、送り返すレスポンスのコマンドを選択し、そのレスポンスのコマンドと、解析部231から受け取ったタグフィールドの情報と、不揮発メモリ21から読み出したデータを、レスポンスを構成する情報として送信部232に渡す。読み出し結果のレスポンスを返した後は、ステップS70に戻る。
再び図24に戻って説明を続ける。図24の書き込み部233は、解析部231からの指示に基づき、不揮発メモリ21にデータを書き込む。書き込み部233の詳細な動作の一例を図32のフローチャートに示す。以下、図32に基づいて、書き込み部233の動作を説明する。図32に示すように、まず、書き込み部233は、解析部231から、書き込み要求のリクエストに含まれているコマンドフィールドとアドレスフィールドの各フィールドの情報およびデータ保管領域の情報(バッファメモリ215中のデータ保管領域のアドレス)を受け取る(ステップS80)。次に、コマンドに指定されている書き込みデータ長(サイズ)のデータを、バッファメモリ215中のデータ保管領域から読み出し、アドレスで指定されている不揮発メモリ21中の位置に書き込む(ステップS81)。その後、ステップS80に戻る。
図24において、受信部211がプロセッサ10からリクエストを受信する信号線と、送信部232がレスポンスをプロセッサ10へ送信する信号線は、それぞれ別の信号線を使う場合を示している。高速にデータを送受信するためには、このように送信用と受信用の信号線を独立に設けることが多い。別の実施法としては、送信用と受信用の信号線を共用し、送信時と受信時で信号の流れる方向を切り替えるようにしても良い。
以上に説明したように、本実施形態においても、メモリデバイス20のコントローラ22は、電源30からメモリデバイス20に供給される電力の異常を検出すると、電力保持部23から供給される電力を用いて、既に受け取った書き込み要求に基づくデータの書き込みを行う。すなわち、電源30からメモリデバイス20に供給される電力の異常が発生しても、既に受け取りが完了している書き込み要求については、電力保持部23から供給される電力を用いて書き込みを完了させることができる。また、受け取りが完了していない書き込み要求に基づく不完全なデータの書き込みを防止できる。したがって、本実施形態によれば、メモリデバイス20にコントローラ22が搭載される構成においてもアトミシティを保証することができる。
(第3の実施形態の変形例)
例えばバッファメモリ215として、不揮発性のメモリを用いても良い。上述の第3の実施形態の構成では、バッファメモリ215に揮発性のメモリを用いていたが、例えば図33に示すように、不揮発性のメモリ(この例では「不揮発バッファメモリ234」と称する)を用いるように実施しても良い。このように不揮発バッファメモリ234を使うことで、一旦不揮発バッファメモリ234に記録された書き込みデータは、電源障害が発生しても失われないようにできる。その結果、メモリデバイス20が受け取った書き込み要求に対応する不揮発メモリ21への書き込みが完了する前に電源障害が発生しても、書き込むべきデータは不揮発バッファメモリ234中のデータ保管領域に記録されているので、失われない。次に電源が入った時に、不揮発バッファメモリ234中のデータ保管領域に記録されているデータを不揮発メモリ21に書き込めばよい。なお、この例のデータ保管領域には、書き込み要求のリクエストのデータフィールドの情報だけでなく、少なくともアドレスフィールドの情報を合わせて記録しておく必要がある。これは、障害からのリカバリ時に、データ保管領域のデータを不揮発メモリ21のどの位置(アドレス)に書き込めばよいか分かる必要があるためである。書き込むデータの長さ(サイズ)は、データ保管領域の管理データを見れば分かるようになっていれば、さらにデータ保管領域に記録する必要はないが、そうでない場合には、データ長あるいはそれが分かる情報(例えばコマンドフィールドの情報)をデータ保管領域に合わせて記録しておく。
(第4の実施形態)
次に、第4の実施形態を説明する。上述の各実施形態と共通する部分については適宜に説明を省略する。
図34は、本実施形態のメモリデバイス20の詳細なハードウェア構成の一例を示す図である。基本的な構成は上述の第3の実施形態と同じであるが、2つの送信部232と2つの受信部211を持つ2ポートの構成になっている。それに合わせて、2つの解析部231と2つの読み出し部219を持つ。本実施形態のメモリデバイス20は、図7のように複数のチャネルでホスト装置であるプロセッサ10と接続してもよいし、図8のようにホスト装置である複数のプロセッサ(図8のプロセッサ10aとプロセッサ10b)と接続して用いてもよい。また、図9のメモリデバイス20のように、一方のポートをホスト装置であるプロセッサ10と接続し、もう一方のポートには自分がホスト装置となって他のメモリデバイス(図9の第2のメモリデバイス200)と接続することもできる。さらに、図10のメモリデバイス20ように、一方のポートをホスト装置であるプロセッサ10と接続し、もう一方のポートには他のメモリデバイス(図9の第2のメモリデバイス200)と接続し、接続した他のメモリデバイスと互いにホスト装置として動作するようにもできる。
図34に示す本実施形態のメモリデバイス20のハードウェア構成において、検出部210、バッファメモリ215、書き込み部233の動作は、図24に示す第3の実施形態と同様である。第3の実施形態と異なるところは、送信部232と受信部211と解析部231と読み出し部219が2つあることで、それぞれ第1送信部232aと第2送信部232b、第1受信部211aと第2受信部211b、第1解析部231aと第2解析部231b、第1読み出し部219aと第2読み出し部219bである。また、それに関連して、解析部231の動作が一部異なる。なお、これらの各要素は、半導体回路で構成され、それぞれ独立して設けられてもよいし、任意の2以上の要素が集積されて設けられてもよい。
本実施形態のリクエストとレスポンスの一般的な形式は、たとえば、図35と図36に示すような構成をしている。図25と図26に示した第3の実施形態のリクエストとレスポンスの構成との違いは、ルーティング情報のフィールドを持つことである。ルーティング情報は、このリクエストあるいはレスポンスが、どのメモリデバイス20あるいはホスト装置(プロセッサ10)に対して送られたのかを判断するための情報である。例えば、接続されているホスト装置やメモリデバイス20に対して一意の番号を付け、その番号をルーティング情報として使うことができる。たとえばHMCではリクエストの持つキューブIDやレスポンスの持つソースリンクIDが、本実施形態のルーティング情報に相当する。
図37は、64バイトの書き込み要求のリクエストの例である。図27の例に加えて、ルーティング情報として「1」を持っている。図38は、64バイトの読み出し要求のリクエストの例である。図28の例に加えて、ルーティング情報として「1」を持っている。ルーティング情報「1」は、たとえばあるメモリデバイスを示す。この読み出し要求に対応する読み出し結果のレスポンスの例が図39である。図29の例に加えて、ルーティング情報として「0」を持っている。ルーティング情報「0」は、例えば、あるメモリデバイス20に接続されているホスト装置を示す。
なお、ここに示した例では、書き込み要求は対応する書き込み結果のレスポンスを持たない場合を示したが、読み出し要求と同様に、書き込み要求に対しても書き込みが終わったこと(あるいは書き込み要求を受け取ったこと)を知らせる書き込み結果のレスポンスを返すようにすることは容易である。
図34の解析部231は、受信部211がホスト装置から受け取ったリクエストを解析して、それが読み出し要求なのか書き込み要求なのか判断し、読み出し要求なら読み出し部に読み出し処理を行うように指示し、書き込み要求なら書き込み要求に含まれるデータをバッファメモリ215に保管した後に書き込み部233にデータの書き込みを指示する。
図40は、第1解析部231aおよび第2解析部231bの詳細な動作の一例を示すフローチャートである。以下、図40に基づいて第1解析部231a(第2解析部231b)の動作を説明する。まず、第1解析部231a(第2解析部231b)は、第1受信部211a(第2受信部211b)がホスト装置であるプロセッサ10あるいは他のメモリデバイス20から受信したリクエストまたはレスポンスのルーティング情報フィールドを受け取る(ステップS90)。このとき、第1受信部211a(第2受信部211b)が既に1以上のリクエストまたはレスポンスを受信していれば(そしてFIFOに入れていれば)、最初のリクエストまたはレスポンスのルーティング情報フィールドを取り出す。第1受信部211a(第2受信部211b)がまだホスト装置あるいは他のメモリデバイス20からリクエストまたはレスポンスを受け取っていない場合(FIFOが空の場合)は、第1受信部211a(第2受信部211b)が新しいリクエストまたはレスポンスの受け取りを開始するのを待つ。第1受信部211a(第2受信部211b)がリクエストまたはレスポンスの受け取りを開始すれば、リクエストまたはレスポンス全体を受け取り終わる前でも、少なくともルーティング情報フィールドさえ受け取っていれば、第1解析部231a(第2解析部231b)はそのルーティング情報フィールドを受け取って処理を進める。なお、第1解析部(第2解析部)は、ルーティング情報フィールド単独でなく、他のフィールド(たとえばコマンドフィールドなど)も一緒に第1受信部211a(第2受信部211b)から受け取るようにしても構わない。
次に、第1解析部231a(第2解析部231b)は、ステップS90で受け取ったルーティング情報フィールドのルーティング情報で指定されている送信先が自メモリデバイス20であるかどうかを調べる(ステップS91)。自メモリデバイス20を指定するルーティング情報は、予め固定の値を決めておくこともできるし、制御用のレジスタに値を設定できるようにしておくこともできる。その値とルーティング情報フィールドを比べることで、自メモリデバイス20宛かどうかを判断できる。ルーティング情報に他のメモリデバイス20が指定されていた場合(ステップS91:No)は、第1解析部231a(第2解析部231b)からリクエストまたはレスポンスの全体を受け取り、その転送を第2送信部232b(第1送信部232a)に指示する(ステップS92)。そしてステップS90に戻る。
ルーティング情報に指定されている送信先が自メモリデバイスであれば(ステップS91でYES)、第1解析部231a(第2解析部231b)は第1受信部211a(第2受信部211b)からコマンドフィールドを受け取る(ステップS93)。このときも、第1受信部211a(第2受信部211b)がこのリクエスト全体を受け取り完了している必要は無く、少なくともコマンドフィールドに対応する断片情報を受け取っていれば良い。まだ第1受信部211a(第2受信部211b)がコマンドフィールドに対応する断片情報を受け取っていなければ、第1受信部211a(第2受信部211b)がコマンドフィールドに対応する断片情報を受け取るまで待つ。
次に、第1解析部231a(第2解析部231b)は、検出部210から異常信号が送られてきているかどうか調べる(ステップS94)。検出部から異常信号が送られて来ている場合(ステップS94:YES)、これ以降は新しいリクエストの処理は行わないので、第1受信部211a(第2受信部211b)からリクエスト全体を受け取って、何もせず読み飛ばして、ステップS90に戻る。検出部210から異常信号が送られて来ていない場合(ステップS94:NO)は、第1解析部231a(第2解析部231b)は第1受信部211a(第2受信部211b)からリクエストのタグフィールドとアドレスフィールドを受け取る(ステップS96)。このときも、第1受信部211a(第2受信部211b)がこのリクエスト全体を受け取り完了している必要は無く、少なくともタグフィールドとアドレスフィールドに対応する断片情報を受け取っていれば良い。まだ第1受信部211a(第2受信部211b)がタグフィールドとアドレスフィールドに対応する断片情報を受け取っていなければ、第1受信部211a(第2受信部211b)がタグフィールドとアドレスフィールドに対応する断片情報を受け取るまで待つ。次に、先に受け取ったコマンドフィールドのコマンドが書き込み要求なのか読み出し要求なのかを判定する(ステップ97)。読み出し要求である場合(ステップS97:No)は、CRCチェックが成功したかどうかを判定し(ステップS98)、リクエストが正しく受信できていない場合(ステップS98:No)は、このリクエストを無視してステップS90に戻る。CRCチェックでリクエストが正しく受信できていることが分かれば(ステップS98:Yes)、第1読み出し部219a(第2読み出し部219b)に対してリクエストのコマンドフィールドとタグフィールドとアドレスフィールドの各フィールドの情報を渡して読み出し処理を指示する(ステップS99)。なお、CRCチェックの実施方法は、第1解析部231a(第2解析部231b)が第1受信部(第2受信部)からCRCフィールドを受け取って、第1解析部231a(第2解析部232b)内でリクエストの他のフィールドの情報に基づいて計算してチェックを行うように実施できる。また、望ましくは、第1受信部211a(第2受信部211b)内で受信しながらCRCの計算を行っておき、最後のCRCフィールドと比べてチェックし、その結果を第1解析部231a(第2解析部231b)に知らせるように実施すると良い。
上述のステップS97において、コマンドは書き込み要求であった場合(ステップS97:Yes)は、まずバッファメモリ215内にデータ保管領域を確保する(ステップS100)。データ保管領域は、書き込み要求のデータフィールドのデータをバッファメモリ215内に一時的に記憶しておくための領域である。コマンドをみれば何バイトのデータが送られてくるか分かるので、その大きさのデータを記憶できる領域を確保する。次に第1受信部211a(第2受信部211b)からリクエストのデータフィールドを受け取る(ステップS101)。そして、そのデータフィールドに保持されているデータを、ステップS100で確保したバッファメモリ215内のデータ保管領域に書き込む(ステップS102)。このとき、第1受信部211a(第2受信部211b)が、ホスト装置または他のメモリデバイス20から、リクエストのデータフィールド全体の受け取りを完了していれば、第1解析部231a(第2解析部231b)は一度にデータフィールド全体を受け取ることができるが、第1受信部211a(第2受信部211b)がリクエストの受け取りを進行中であれば、その時点で受け取っているデータフィールドの一部分だけを第1解析部231a(第2解析部231b)は受け取ることになる。そのため、リクエストのデータフィールド全体を第1受信部211a(第2受信部211b)から受け取ったかどうかを判断して(ステップS103)、まだ全体を受け取っていない場合(ステップS103:No)は、ステップS101に戻って、データフィールドの残りの部分の受け取りとデータ保管領域への書き込みを続ける。データフィールド全体を受け取り完了すれば(ステップS103:Yes)、次にCRCチェックを行ってCRCチェックが成功したかどうかを判定し(ステップS104)、リクエスト全体を正しく受け取ったことを確認できれば(ステップS104:Yes)、書き込み部233に対して、リクエストのコマンドフィールドとアドレスフィールドの各フィールドの情報およびデータ保管領域の情報(バッファメモリ内に確保したデータ保管領域のアドレス)を渡して、書き込み処理を指示する(ステップS105)。CRCチェックの結果、リクエスト全体を正しく受信できていない場合(ステップS104:No)は、このリクエストを無視してステップS90に戻る。
なお、電源異常などの障害が発生すると、第1受信部211a(第2受信部211b)がリクエストやレスポンスを途中までしか受け取っていない状態で、リクエストの残りの部分が送られてこない状態になる可能性がある。そのため、図40に示した第1解析部231a(第2解析部231b)のフローチャートに基づいて動作している途中で電源異常が発生すると、第1解析部231a(第2解析部231b)が第1受信部211a(第2受信部211b)からリクエストのいずれかのフィールドを受け取ろうとして停止することになる。これにより、電源等の異常が発生すれば、それ以降のホスト装置からの新しいリクエストを受け取って処理することを抑えることができる。
図34の第1読み出し部219aと第2読み出し部219bは、それぞれ第1解析部231aと第2解析部231bからの指示に基づき、不揮発メモリ21からデータを読み出してホスト装置あるいは他のメモリデバイス20に送り返す。第1読み出し部219a(第2読み出し部219b)の詳細な動作の一例を図41のフローチャートに示す。以下、図41に基づいて、第1読み出し部219a(第2読み出し部219b)の動作を説明する。まず、第1読み出し部219a(第2読み出し部219b)は、第1解析部231a(第2解析部231b)から、読み出し要求のリクエストに含まれているコマンドフィールドとタグフィールドとアドレスフィールドの各フィールドの情報を受け取る(ステップS110)。次に、コマンドに指定されている長さ(サイズ)のデータを、アドレスに指定されている不揮発メモリ21中の位置から読み出す(ステップS111)。そして、読み出したデータを読み出し結果のレスポンスとして送り返すことを、第1送信部232a(第2送信部232b)に指示する(ステップS112)。このとき、第1解析部231a(第2解析部231b)から受け取ったコマンドフィールドの情報に基づいて、送り返すレスポンスのコマンドを選択し、そのレスポンスのコマンドと、第1解析部231a(第2解析部231b)から受け取ったタグフィールドの情報と、不揮発メモリ21から読み出したデータを、レスポンスを構成する情報として第1送信部233a(第2送信部233b)に渡す。読み出し結果のレスポンスを返した後は、ステップS110に戻る。
図34の書き込み部233は、解析部231からの指示に基づき、不揮発メモリ21にデータを書き込む。書き込み部233の詳細な動作の一例を図42のフローチャートに示す。図42に基づいて、書き込み部233の動作を説明する。書き込み部233は、まず、第1解析部231a(第2解析部231b)から、書き込み要求のリクエストに含まれているコマンドフィールドとアドレスフィールドの各フィールドの情報およびデータ保管領域の情報(バッファメモリ中のデータ保管領域のアドレス)を受け取る(ステップS120)。次に、コマンドに指定されている書き込みデータ長(サイズ)のデータを、バッファメモリ中のデータ保管領域から読み出し、アドレスで指定されている不揮発メモリ中の位置に書き込む(ステップS121)。その後、ステップS120に戻る。
図34において、第1受信部211a(第2受信部211b)がホスト装置または他のメモリデバイス20からリクエストを受信する信号線と、第1送信部232a(第2送信部232b)がレスポンスをホスト装置または他のメモリデバイス20へ送信する信号線は、それぞれ別の信号線を使う場合を示している。高速にデータを送受信するためには、このように送信用と受信用の信号線を独立に設けることが多い。別の実施法としては、送信用と受信用の信号線を共用し、送信時と受信時で信号の流れる方向を切り替えるようにしても良い。
なお、図34に示した構成は2つのポート(送信および受信を行う信号線)を持つが、ポートの数を3つ以上に拡張するのは容易である。その場合、いずれかの受信部211が受け取ったリクエストあるいはレスポンスのルーティング情報の番号を見て、それが自メモリデバイス20宛ではない場合に、どの送信部232から送信すれば良いかが分かる情報を、コントローラ22内に管理しておく。それぞれの解析部231は、その情報を参照して、適切な送信部232からリクエストあるいはレスポンスを転送する。
以上のようにして、複数のメモリデバイス20やプロセッサ10を組み合わせて用いる場合でも、何れかのメモリデバイス20に接続される1または複数のプロセッサ10(ホスト装置)が、電力の異常が発生する前に何れかのメモリデバイス20に対して送った書き込み要求は、必ずターゲットのメモリデバイス20に転送されて当該書き込み要求に基づくデータの書き込みが行われることを保証できる。また、受け取りが完了していない書き込み要求に基づく不完全なデータの書き込みを防止でき、他のメモリデバイスへのリクエストの転送や他のメモリデバイスからのレスポンスの転送を継続できる。
(第4の実施形態の変形例)
図34に示した第4の実施形態では、第1読み出し部219aと第2読み出し部219bを別に設けているが、読み出し部219を一つにして、第1解析部231aと第2解析部231bの両方からの読み出し処理の指示を受けるように構成することもできる。この場合、読み出し部219は第1送信部232aと第2送信部232bの両方に接続し、読み出し結果のレスポンスを第1送信部232aと第2送信部232bのどちらから送り返せば良いか判断するための情報を、第1解析部231aと第2解析部231bからの読み出しの指示の際に渡すようにする。
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
なお、上述した各実施形態および各変形例は任意に組み合わせることができる。
1 情報処理装置
10 プロセッサ
11 プロセッサコア
12 キャッシュメモリ
13 メモリコントローラ
20 メモリデバイス
21 不揮発メモリ
22 コントローラ
23 電力保持部
30 電源
31 整流素子
210 検出部
211 受信部
212 第1の判断部
213 第2の判断部
214 第1の書き込み部
215 バッファメモリ
216 書き込み指示部
217 第2の書き込み部
218 第3の判断部
219 読み出し部
221 第3の書き込み部
222 不揮発キャッシュメモリ
223 第4の書き込み部
231 解析部
232 送信部
233 書き込み部
234 不揮発バッファメモリ

Claims (21)

  1. メモリデバイスであって、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    メモリデバイス。
  2. 前記コントローラは、前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記書き込み要求の受け取りを停止する、
    請求項1のメモリデバイス。
  3. 前記コントローラは、前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記メモリコントローラから受け取っている途中の前記書き込み要求に基づくデータの書き込みを行わない、
    請求項1または2のメモリデバイス。
  4. 前記コントローラは、複数のクロックサイクルで前記書き込み要求を受け取る、
    請求項1のメモリデバイス。
  5. 情報を一時的に記憶するバッファメモリをさらに備え、
    前記コントローラは、
    前記メモリコントローラから受け取った前記書き込み要求に含まれる書き込み対象のデータを前記バッファメモリに記憶した後、前記バッファメモリに記憶した前記書き込み対象のデータに基づいてデータの書き込みを行う、
    請求項1のメモリデバイス。
  6. 前記電力保持部はキャパシタであり、
    前記キャパシタの容量は、少なくとも、前記電源から前記メモリデバイスに供給される電力に異常が発生した際に、既に受け取った前記書き込み要求に基づくデータの書き込みを行うのに必要な電力量を蓄えることができる値に設定される、
    請求項1のメモリデバイス。
  7. 前記メモリデバイスは第2のメモリデバイスと接続され、
    前記コントローラは、前記メモリコントローラから、前記第2のメモリデバイスに対するデータの書き込みを要求する第2の書き込み要求を受け取ると、該第2の書き込み要求を前記第2のメモリデバイスに転送する、
    請求項1のメモリデバイス。
  8. 前記コントローラは、前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記第2の書き込み要求を前記第2のメモリデバイスに転送する、
    請求項7のメモリデバイス。
  9. 前記メモリデバイスは第2のメモリデバイスと接続され、
    前記コントローラは、
    前記第2のメモリデバイスから、前記ホスト装置とは異なる第2のホスト装置が前記不揮発メモリに対するデータの書き込みを要求する第3の書き込み要求を受け取った後に、該第3の書き込み要求に基づくデータの書き込みを行い、
    前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記第2のメモリデバイスから受け取っている途中の前記第3の書き込み要求があれば、前記電力保持部から供給される電力を用いて、前記第2のメモリデバイスからの前記第3の書き込み要求の受け取りを継続する、
    請求項1のメモリデバイス。
  10. 前記コントローラは、前記電力保持部から供給される電力を用いて、受け取りが完了した前記第3の書き込み要求に基づくデータの書き込みを行う、
    請求項9のメモリデバイス。
  11. 前記コントローラは、前記電源から前記メモリデバイスに供給される電力の電圧が閾値以下になると、前記電源から前記メモリデバイスに供給される電力に異常が発生したと判断する、
    請求項1のメモリデバイス。
  12. メモリデバイスであって、
    不揮発メモリと、
    前記メモリデバイスと接続された第2のメモリデバイスから、ホスト装置が前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行い、前記第2のメモリデバイスから受け取っている途中の前記書き込み要求があれば、前記電力保持部から供給される電力を用いて、前記第2のメモリデバイスからの前記書き込み要求の受け取りを継続する、
    メモリデバイス。
  13. メモリデバイスであって、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、を備え、
    前記コントローラは、
    電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電源から供給される電力を保持する電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    メモリデバイス。
  14. メモリデバイスであって、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記メモリデバイスに供給される電力の電圧が閾値以下になると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    メモリデバイス。
  15. メモリデバイスであって、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、を備え、
    前記コントローラは、
    電源から前記メモリデバイスに供給される電力の電圧が閾値以下になると、前記電源から供給される電力を保持する電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    メモリデバイス。
  16. メモリデバイスであって、
    不揮発キャッシュメモリと、
    不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込むコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込む、
    メモリデバイス。
  17. メモリデバイスであって、
    不揮発キャッシュメモリと、
    不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込むコントローラと、を備え、
    前記コントローラは、
    電源から前記メモリデバイスに供給される電力の異常を検出すると、前記電源から供給される電力を保持する電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込む、
    メモリデバイス。
  18. メモリデバイスであって、
    不揮発キャッシュメモリと、
    不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込むコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記メモリデバイスに供給される電力の電圧が閾値以下になると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込む、
    メモリデバイス。
  19. メモリデバイスであって、
    不揮発キャッシュメモリと、
    不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込むコントローラと、を備え、
    前記コントローラは、
    電源から前記メモリデバイスに供給される電力の電圧が閾値以下になると、前記電源から供給される電力を保持する電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に対応する書き込み情報を前記不揮発キャッシュメモリに書き込む、
    メモリデバイス。
  20. 半導体装置であって、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、ホスト装置から受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記半導体装置に供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    半導体装置。
  21. 情報処理装置であって、
    プロセッサと、
    不揮発メモリと、
    前記不揮発メモリに対するデータの書き込みを要求する書き込み要求を、前記プロセッサから受け取った後に、該書き込み要求に基づくデータの書き込みを行うコントローラと、
    電源から供給される電力を保持する電力保持部と、を備え、
    前記コントローラは、
    前記電源から前記情報処理装置に供給される電力の異常を検出すると、前記電力保持部から供給される電力を用いて、既に受け取った前記書き込み要求に基づくデータの書き込みを行う、
    情報処理装置。
JP2015060811A 2015-03-24 2015-03-24 メモリデバイス、半導体装置および情報処理装置 Active JP6541998B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015060811A JP6541998B2 (ja) 2015-03-24 2015-03-24 メモリデバイス、半導体装置および情報処理装置
US15/005,409 US9984746B2 (en) 2015-03-24 2016-01-25 Nonvolatile memory device that stores data from completed write requests on a power abnormality

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015060811A JP6541998B2 (ja) 2015-03-24 2015-03-24 メモリデバイス、半導体装置および情報処理装置

Publications (2)

Publication Number Publication Date
JP2016181112A true JP2016181112A (ja) 2016-10-13
JP6541998B2 JP6541998B2 (ja) 2019-07-10

Family

ID=56975616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015060811A Active JP6541998B2 (ja) 2015-03-24 2015-03-24 メモリデバイス、半導体装置および情報処理装置

Country Status (2)

Country Link
US (1) US9984746B2 (ja)
JP (1) JP6541998B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077168A (ko) * 2018-12-20 2020-06-30 삼성전자주식회사 스토리지 장치 및 스토리지 시스템
JP2021152933A (ja) * 2017-06-23 2021-09-30 華為技術有限公司Huawei Technologies Co., Ltd. メモリアクセス技術およびコンピュータシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091776A (ja) * 2018-12-07 2020-06-11 富士ゼロックス株式会社 情報処理装置
US11289166B2 (en) * 2020-08-04 2022-03-29 Micron Technology, Inc. Acceleration of data queries in memory
US11640397B2 (en) * 2020-09-25 2023-05-02 Micron Technology, Inc. Acceleration of data queries in memory
US11310732B1 (en) * 2020-11-23 2022-04-19 At&T Intellectual Property I, L.P. Facilitation of fast aiding radio access network intelligent controllers for 5G or other next generation network

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268026A1 (en) * 2003-06-27 2004-12-30 Intel Corporation Cache integrity apparatus, systems, and methods
JP2010501915A (ja) * 2006-08-22 2010-01-21 モサイド・テクノロジーズ・インコーポレーテッド メモリ用モジュールコマンド構造およびメモリシステム
JP2010536098A (ja) * 2007-08-06 2010-11-25 サンディスク コーポレイション 不揮発性メモリのための改良された書き込み中断機構
JP2011258229A (ja) * 2011-08-22 2011-12-22 Toshiba Corp メモリシステム
US20120166715A1 (en) * 2009-08-11 2012-06-28 Texas Memory Systems, Inc. Secure Flash-based Memory System with Fast Wipe Feature
JP2013196494A (ja) * 2012-03-21 2013-09-30 Toshiba Corp メモリシステム
US20140075122A1 (en) * 2012-09-13 2014-03-13 International Business Machines Corporation Durable transactions with storage-class memory
WO2014077962A1 (en) * 2012-11-13 2014-05-22 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
JP2015060412A (ja) * 2013-09-19 2015-03-30 日本電気株式会社 データ保護装置、データ保護方法及びデータ保護プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904639B2 (en) * 2006-08-22 2011-03-08 Mosaid Technologies Incorporated Modular command structure for memory and memory system
US8266391B2 (en) * 2007-06-19 2012-09-11 SanDisk Technologies, Inc. Method for writing data of an atomic transaction to a memory device
US8219741B2 (en) 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US9836245B2 (en) * 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268026A1 (en) * 2003-06-27 2004-12-30 Intel Corporation Cache integrity apparatus, systems, and methods
JP2010501915A (ja) * 2006-08-22 2010-01-21 モサイド・テクノロジーズ・インコーポレーテッド メモリ用モジュールコマンド構造およびメモリシステム
JP2010536098A (ja) * 2007-08-06 2010-11-25 サンディスク コーポレイション 不揮発性メモリのための改良された書き込み中断機構
US20120166715A1 (en) * 2009-08-11 2012-06-28 Texas Memory Systems, Inc. Secure Flash-based Memory System with Fast Wipe Feature
JP2011258229A (ja) * 2011-08-22 2011-12-22 Toshiba Corp メモリシステム
JP2013196494A (ja) * 2012-03-21 2013-09-30 Toshiba Corp メモリシステム
US20140075122A1 (en) * 2012-09-13 2014-03-13 International Business Machines Corporation Durable transactions with storage-class memory
WO2014077962A1 (en) * 2012-11-13 2014-05-22 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
JP2015060412A (ja) * 2013-09-19 2015-03-30 日本電気株式会社 データ保護装置、データ保護方法及びデータ保護プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021152933A (ja) * 2017-06-23 2021-09-30 華為技術有限公司Huawei Technologies Co., Ltd. メモリアクセス技術およびコンピュータシステム
JP7162102B2 (ja) 2017-06-23 2022-10-27 華為技術有限公司 メモリアクセス技術およびコンピュータシステム
US11681452B2 (en) 2017-06-23 2023-06-20 Huawei Technologies Co., Ltd. Memory access technology and computer system
KR20200077168A (ko) * 2018-12-20 2020-06-30 삼성전자주식회사 스토리지 장치 및 스토리지 시스템
KR102211122B1 (ko) * 2018-12-20 2021-02-02 삼성전자주식회사 스토리지 장치 및 스토리지 시스템
US11080186B2 (en) 2018-12-20 2021-08-03 Samsung Electronics Co., Ltd. Storage device and storage system
US11586538B2 (en) 2018-12-20 2023-02-21 Samsung Electronics Co., Ltd. Storage device and storage system

Also Published As

Publication number Publication date
US9984746B2 (en) 2018-05-29
US20160284402A1 (en) 2016-09-29
JP6541998B2 (ja) 2019-07-10

Similar Documents

Publication Publication Date Title
JP6541998B2 (ja) メモリデバイス、半導体装置および情報処理装置
KR102175032B1 (ko) 제어기 메모리 버퍼를 사용한 적응적 조기 완료 포스팅을 위한 시스템 및 방법
USRE49151E1 (en) Memory system and electronic device
KR102025341B1 (ko) 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
TWI529523B (zh) A memory device control method, and a memory device
US10102062B2 (en) Semiconductor storage device
US20180052732A1 (en) Semiconductor device and semiconductor system
US20190108156A1 (en) Interface circuit and packet transmission method thereof
JP2009510562A5 (ja)
US9483193B1 (en) Data storage device
KR20160143744A (ko) 로컬 메모리를 갖는 제어기를 가진 메모리 디바이스
US10289333B2 (en) Data storage device configured to perform operations using a wireless interface
JP2018160166A (ja) メモリシステム及び抵抗変化型メモリ
US10754552B2 (en) Data storage device and operating method thereof
US11556440B2 (en) Memory module, memory system including the same and operation method thereof
US20170060452A1 (en) Memory controller and memory system having the same
US10838766B2 (en) Memory system and operating method thereof
US10302701B2 (en) Memory apparatus relating to determination of a failed region and test method thereof, memory module and system using the same
JP2017027439A (ja) メモリコントローラ、メモリシステムおよび情報処理システム
KR102516584B1 (ko) 메모리 시스템
US10140025B2 (en) Memory system including memory controller and operation method thereof
US10628322B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180727

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190612

R150 Certificate of patent or registration of utility model

Ref document number: 6541998

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350