JP2014241057A - インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法 - Google Patents

インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法 Download PDF

Info

Publication number
JP2014241057A
JP2014241057A JP2013123321A JP2013123321A JP2014241057A JP 2014241057 A JP2014241057 A JP 2014241057A JP 2013123321 A JP2013123321 A JP 2013123321A JP 2013123321 A JP2013123321 A JP 2013123321A JP 2014241057 A JP2014241057 A JP 2014241057A
Authority
JP
Japan
Prior art keywords
data
adjustment
error
interface
clock signal
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.)
Pending
Application number
JP2013123321A
Other languages
English (en)
Inventor
直大 足立
Naohiro Adachi
直大 足立
禎之 柴原
Yoshiyuki Shibahara
禎之 柴原
藤波 靖
Yasushi Fujinami
靖 藤波
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2013123321A priority Critical patent/JP2014241057A/ja
Priority to US14/271,732 priority patent/US9792173B2/en
Priority to CN201410246991.1A priority patent/CN104239243B/zh
Publication of JP2014241057A publication Critical patent/JP2014241057A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1689Synchronisation and timing concerns
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel

Abstract

【課題】メモリコントローラとメモリとの間の通信速度を向上させる。
【解決手段】インターフェース制御回路は、誤り検出部、誤り訂正部および調整制御部を具備する。インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤り検出部が、誤りが生じたか否かを検出する。誤りが生じた場合には、誤り訂正部が、誤りを訂正する誤り訂正処理を実行する。誤りが生じた場合には、調整制御部がインターフェースの伝送特性を調整する調整処理を開始させる。
【選択図】図2

Description

本技術は、インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法に関する。詳しくは、データの誤りの検出および訂正を行うインターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法に関する。
従来より、情報処理システムにおいては、データを保持するためにメモリが用いられている。メモリは、不揮発性メモリと揮発性メモリとに分類することができ、不揮発性メモリとしては、NAND型フラッシュメモリやNOR型フラッシュメモリが広く使用されている。また、揮発性メモリとしては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などが用いられている。
これらのメモリのうちNAND型フラッシュメモリやDRAMは、近年、微細化の限界が指摘されており、既存のメモリを代替するための次世代のメモリが積極的に提案および開発されている。次世代のメモリとしてはReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
これらの次世代の不揮発性メモリの一つの特徴として、従来のNAND型フラッシュメモリやNOR型フラッシュメモリと比較してアクセス速度が高速であることが挙げられる。この高速性に対応するために、次世代メモリにおいては、DRAM等に用いられているDDR(Double-Data-Rate)インターフェースなどの高速インターフェースを用いる必要がある。標準化団体であるJEDEC(Joint Electron Device Engineering Council)においても、高速インターフェースを不揮発性メモリに適用するための新規格が提案および議論されている。具体的には、LPDDR(Low-Power Double DataRate)2−NVM(Non-Volatile Memory)やLPDDR4−NVMなどの新規格が提案等されている。
これらの新規格では、インターフェースにおける転送クロックの位相やインピーダンスの調整を行うことが求められている。これは、製造プロセスのばらつきや使用温度の変動等に起因して位相やインピーダンスが基準値と異なる値になると、インターフェースを介してデータを転送する際に転送エラーが生じる可能性が高くなるためである。例えば、DRAMで広く採用されているDDR3インターフェースの規格では、インターフェースのインピーダンスの調整を行うために、ZQCALコマンドが用意されている(例えば、非特許文献1参照。)。この規格では、メモリ初期化直後において、メモリシステムが、ZQCALロングコマンドにより、インピーダンスの調整を行うことが求められる。また、メモリ初期化後において、ZQCALロングコマンドやZQCALショートコマンドにより、一定間隔で、メモリシステムがインピーダンスの調整を行うことが推奨されている。
"JEDEC STANDARD DDR3 SDRAM Specification JESD79-3B"、JEDEC SOLID STTE TECHNOLOGY ASSOCIATION、2008年4月
しかしながら、上述の従来技術では、メモリコントローラとメモリとの間の通信速度が低下するおそれがある。位相やインピーダンスの調整には一定の期間を要し、その期間内において、メモリおよびメモリコントローラは、インターフェースを介してデータを送受信することができない。このため、調整を定期的に行う構成では、調整の頻度が高くなるほど、データを送受信することができない期間が長くなって通信速度が低下してしまう。
調整の頻度が高いと、特に、不揮発性メモリにおいて通信速度が低下しやすい。DRAMでは、定期的なリフレッシュに同期して調整を行うことにより、ある程度、通信速度の低下を抑制することができるが、不揮発性メモリではリフレッシュを定期的に行う必要がないためである。
本技術はこのような状況に鑑みて生み出されたものであり、メモリコントローラとメモリとの間の通信速度を向上させることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、上記誤りが生じた場合には上記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、上記誤りが生じた場合には上記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部とを具備するインターフェース制御回路、および、その制御方法である。これにより、誤りが生じた場合には調整処理が開始するという作用をもたらす。
また、この第1の側面において、上記調整制御部は、上記調整処理を上記誤り訂正処理が実行されている間に開始させてもよい。これにより、誤り訂正処理が実行されている間に調整処理が開始するという作用をもたらす。
また、この第1の側面において、上記インターフェースは、上記誤り訂正符号化されたデータを送信する送信回路と、上記誤り訂正符号化されたデータを受信する受信回路とを含み、上記調整制御部は、上記送信回路と上記受信回路とのインピーダンスを整合する処理を上記調整処理として開始させてもよい。これにより、送信回路と受信回路とのインピーダンスを整合する処理が調整処理として開始するという作用をもたらす。
また、この第1の側面において、上記調整制御部は、上記データの伝送タイミングを調整する処理を上記調整処理として開始させてもよい。これにより、データの伝送タイミングが調整されるという作用をもたらす。
また、この第1の側面において、上記調整制御部の制御に従って上記調整処理を実行する調整部をさらに具備してもよい。これにより、調整制御部の制御に従って調整処理が実行されるという作用をもたらす。
また、この第1の側面において、上記調整処理は、リファレンスクロック信号を基準として上記伝送タイミングを調整する処理であってもよい。これにより、リファレンスクロック信号を基準として上記伝送タイミングが調整されるという作用をもたらす。
また、この第1の側面において、上記調整制御部の制御に従って上記伝送タイミングを遅延させる遅延回路をさらに具備し、上記調整処理は、上記遅延回路を制御することにより上記伝送タイミングを調整する処理であってもよい。これにより、遅延回路を制御することにより上記伝送タイミングが調整されるという作用をもたらす。
また、この第1の側面において、上記調整処理は、上記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、伝送タイミングを制御する制御信号のタイミングがリファレンスクロック信号を基準として調整されるという作用をもたらす。
また、この第1の側面において、上記調整制御部の制御に従って上記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、上記調整処理は、上記遅延回路を制御することにより上記制御信号の位相を調整する処理であってもよい。これにより、遅延回路を制御することにより制御信号の位相が調整されるという作用をもたらす。
また、この第1の側面において、上記インターフェースは、上記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、上記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、上記調整処理は、上記送信クロック信号および上記受信クロック信号の少なくとも一方の位相を調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、送信クロック信号および受信クロック信号の少なくとも一方の位相が調整されるという作用をもたらす。
また、この第1の側面において、上記調整処理は、上記送信クロック信号および上記受信クロック信号の一方を基準として他方の位相を調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、送信クロック信号および受信クロック信号の一方を基準として他方の位相が調整されるという作用をもたらす。
また、この第1の側面において、上記データは、メモリセルから読み出されたリードデータを含み、上記送信クロック信号は、上記リードデータを送信するためのリードデータ送信クロック信号を含み、上記受信クロック信号は、上記リードデータを受信するためのリードデータ受信クロック信号を含み、上記調整処理は、上記リードデータ送信クロック信号および上記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含むものであってもよい。これにより、ライトデータ送信クロック信号およびライトデータ受信クロック信号の少なくとも一方の位相を調整する処理が開始するという作用をもたらす。
また、この第1の側面において、上記データは、メモリセルに書き込まれるライトデータを含み、上記送信クロック信号は、上記ライトデータを送信するためのライトデータ送信クロック信号を含み、上記受信クロック信号は、上記ライトデータを受信するためのライトデータ受信クロック信号を含み、上記調整処理は、上記ライトデータ送信クロック信号および上記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含むものであってもよい。これにより、ライトデータ送信クロック信号およびライトデータ受信クロック信号の少なくとも一方の位相を調整する処理が開始するという作用をもたらす。
また、この第1の側面において、上記調整処理は、上記誤り訂正符号化されたデータの伝送タイミングを基準として上記位相を調整する処理であってもよい。これにより、誤り訂正符号化されたデータの伝送タイミングを基準として位相が調整されるという作用をもたらす。
また、この第1の側面において、上記調整制御部は、所定のテストデータを生成するテストデータ生成部と、上記テストデータを上記インターフェースに送信させるとともに帰還させて上記送信させたテストデータと上記帰還したテストデータとが一致するか否かに基づいて上記位相を調整する処理を上記調整処理として開始させてもよい。これにより、送信させたテストデータと帰還したテストデータとが一致するか否かに基づいて位相が調整されるという作用をもたらす。
また、この第1の側面において、上記インターフェースは、上記データを伝送するための複数のデータ線を含むものであってもよい。これにより、複数のデータ線の伝送特性が調整されるという作用をもたらす。
また、この第1の側面において、上記調整処理は、上記データ線ごとに上記データの伝送タイミングを調整する処理であってもよい。これにより、データ線ごとに伝送特性が調整されるという作用をもたらす。
また、この第1の側面において、上記データ線の各々は、複数のグループのいずれかに属し、上記調整処理は、上記グループごとに上記伝送タイミングを調整する処理であってもよい。これにより、グループごとに伝送特性が調整されるという作用をもたらす。
また、この第1の側面において、上記調整制御部は、上記データにおいて所定の閾値を超える個数の上記誤りが生じた場合には上記調整処理を開始させてもよい。これにより、データにおいて所定の閾値を超える個数の誤りが生じた場合には調整処理が開始するという作用をもたらす。
また、この第1の側面において、上記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行してもよい。これにより、リフレッシュ処理が実行されるという作用をもたらす。
また、この第1の側面において、上記リフレッシュ処理部は、上記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも上記訂正された誤りの個数が多い場合には上記リフレッシュ処理を実行してもよい。これにより、誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも訂正された誤りの個数が多い場合にはリフレッシュ処理が実行されるという作用をもたらす。
また、この第1の側面において、上記データにおいて上記誤り検出訂正符号の誤り訂正能力を超える個数の上記誤りが生じた場合には上記伝送特性を調整させた後に上記データおよび上記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備してもよい。これにより、誤り検出訂正符号の誤り訂正能力を超える個数の誤りが生じた場合にはリトライ処理が実行されるという作用をもたらす。
また、この第1の側面において、上記リトライ処理部は、所定のコマンドを発行して上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記所定のコマンドをホストコンピュータに通知してもよい。これにより、再度発行されたコマンドがホストコンピュータに通知されるという作用をもたらす。
また、この第1の側面において、上記リトライ処理部は、上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記データが読み出されたアドレスをホストコンピュータに通知してもよい。これにより、アドレスがホストコンピュータに通知されるという作用をもたらす。
また、この第1の側面において、上記リトライ処理部は、上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記誤りが生じたことをホストコンピュータに通知してもよい。これにより、誤りが生じたことをホストコンピュータに通知されるという作用をもたらす。
上記調整制御部は、上記インターフェース制御回路に電源が供給された場合または上記誤りが生じた場合には上記調整処理を開始させてもよい。これにより、インターフェース制御回路に電源が供給された場合または誤りが生じた場合に調整処理を開始するという作用をもたらす。
また、この第1の側面において、データは、不揮発性のメモリセルから読み出されたデータであってもよい。これにより、不揮発性のメモリセルから読み出されたデータの誤り訂正処理が実行されている間に調整処理が開始するという作用をもたらす。
また、本技術の第2の側面は、誤り訂正符号化されたデータを伝送するインターフェースと、上記データに誤りが生じたか否かを検出する誤り検出部と、上記誤りが生じた場合には上記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、上記誤りが生じた場合には上記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部とを具備するメモリシステムである。これにより、これにより、誤りが生じた場合には調整処理が開始するという作用をもたらす。
本技術によれば、メモリコントローラとメモリとの間の通信速度を向上させるこができるという優れた効果を奏し得る。
第1の実施の形態におけるメモリシステムの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第1の実施の形態における制御インターフェースの一構成例を示すブロック図である。 第1の実施の形態における不揮発性メモリの一構成例を示すブロック図である。 第1の実施の形態におけるメモリインターフェースの一構成例を示すブロック図である。 第1の実施の形態におけるオリジナルバッファ回路の一構成例を示すブロック図である。 第1の実施の形態におけるレプリカバッファ回路の一構成例を示すブロック図である。 第1の実施の形態におけるインピーダンス調整部の一構成例を示すブロック図である。 第1の実施の形態における電源投入時のインピーダンスの制御方法の一例を示す図である。 第1の実施の形態における誤り検出時のインピーダンスの制御方法の一例を示す図である。 第1の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第1の実施の形態におけるリード処理の一例を示すフローチャートである。 第1の実施の形態における調整処理の一例を示すフローチャートである。 第1の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。 第1の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。 第1の実施の形態の第1の変形例におけるメモリコントローラの動作の一例を示すフローチャートである。 第1の実施の形態の第2の変形例における電源投入時のインピーダンスの制御方法の一例を示す図である。 第2の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第2の実施の形態における位相調整部の一構成例を示すブロック図である。 第2の実施の形態における制御インターフェースの一構成例を示すブロック図である。 第2の実施の形態における不揮発性メモリの一構成例を示すブロック図である。 第2の実施の形態におけるメモリインターフェースの一構成例を示すブロック図である。 第2の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第2の実施の形態における調整処理の一例を示すフローチャートである。 第2の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。 第2の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。 第2の実施の形態の第1の変形例におけるメモリコントローラの動作の一例を示すフローチャートである。 第2の実施の形態の第1の変形例における調整処理の一例を示すフローチャートである。 第2の実施の形態の第2の変形例における不揮発性メモリの一構成例を示すブロック図である。 第2の実施の形態の第3の変形例における制御インターフェースの一構成例を示すブロック図である。 第3の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第3の実施の形態における調整処理の一例を示すフローチャートである。 第3の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。 第4の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第4の実施の形態におけるリード処理の一例を示すフローチャートである。 第4の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。 第5の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第5の実施の形態におけるリード処理の一例を示すフローチャートである。 第5の実施の形態におけるリトライ処理の一例を示すフローチャートである。 第5の実施の形態の第1の変形例におけるリトライ処理の一例を示すフローチャートである。 第5の実施の形態の第2の変形例におけるリトライ処理の一例を示すフローチャートである。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(誤り検出時にインピーダンスを調整する例)
2.第2の実施の形態(誤り検出時に位相を調整する例)
3.第3の実施の形態(誤り検出時にインピーダンスおよび位相を調整する例)
4.第4の実施の形態(誤り検出時にインピーダンスを調整してリフレッシュ処理を行う例)
5.第5の実施の形態(誤り検出時にインピーダンスを調整して再リードを行う例)
<1.第1の実施の形態>
[メモリシステムの構成例]
図1は、第1の実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ100、メモリコントローラ200および不揮発性メモリ300を備える。
ホストコンピュータ100は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ100は、コマンド、論理アドレス、および、ライトデータを生成してメモリコントローラ200に信号線109を介して送信する。また、ホストコンピュータ100は、リードデータおよびステータスを、信号線109を介してメモリコントローラ200から受信する。ここで、コマンドは、メモリシステムを制御するためのものであり、例えば、データのライト処理を指示するライトコマンドと、データのリード処理を指示するリードコマンドとを含む。論理アドレスは、ホストコンピュータ100が定義したアドレス空間におけるアドレスである。ステータスは、コマンドの実行結果やメモリシステムの状況を通知する情報である。
メモリコントローラ200は、不揮発性メモリ300を制御するものである。このメモリコントローラ200は、ホストコンピュータ100から論理アドレスを受信すると、その論理アドレスを、不揮発性メモリ300においてメモリセルに割り当てられた物理アドレスに変換する。そして、メモリコンローラ200は、その物理アドレスを不揮発性メモリ300に信号線209を介して送信する。
ここで、信号線209は、アドレスおよびコマンドを送信するためのコマンド/アドレス線と、データを送受信するためのデータ線とを含む。また、信号線209を介して、リファレンスクロック信号がメモリコントローラ200から不揮発性メモリ300へ送信される。クロック信号については後述する。なお、本実施形態では明示的にリファレンスクロックを独立した信号として記述したが、データ線にクロックを重畳した、エンベデット・クロック方式を用いる構成であってもよい。また、コマンド/アドレス線およびデータ線の代わりに、NANDフラッシュメモリなどにおいて使用される、アドレス、コマンドおよびデータなどを多重化(マルチプレックス)して送受信するインターフェースを用いてもよい。
メモリコントローラ200は、ホストコンピュータ100からライトコマンドおよびライトデータを受信すると、そのライトデータから誤り訂正符号(ECC:Error Check and Correction Code)を生成する。例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号や、RS(Reed-Solomon)符号がECCとして用いられる。メモリコントローラ200は、生成したパリティをライトデータに付加し、ライトデータおよびパリティからなるECCを、データ線を介して不揮発性メモリ300に送信する。ライトコマンドは、コマンド/アドレス線を介して送信される。
メモリコントローラ200は、リードコマンド等をホストコンピュータ100から受信すると、そのコマンドを解釈および翻訳し、翻訳したコマンドを不揮発性メモリ300にコマンド/アドレス線を介して転送する。例えば、ホストコンピュータ100からのリードコマンドは、メモリコントローラ200のアクセス単位に基づいて、複数のコマンドに分割(すなわち、翻訳)される。そして、メモリコントローラ200は、パリティが付加された(すなわち、誤り訂正符号化された)リードデータを不揮発性メモリ300からデータ線を介して受信すると、そのパリティを使用してリードデータに誤りが生じたか否かを検出する。誤りが生じた場合には、メモリコントローラ200は、パリティを使用してリードデータの誤りを訂正する。そして、メモリコントローラ200は、訂正したリードデータをホストコンピュータ100へ送信する。
また、誤りが生じた場合には、メモリコントローラ200は、誤りの訂正処理の実行中において、メモリコントローラ200と不揮発性メモリ300との間のインターフェースの伝送特性の調整を行うための調整コマンドを発行する。例えば、インターフェースのインピーダンスを調整するためのインピーダンス調整コマンドが調整コマンドとして発行される。メモリコントローラ200は、そのインピーダンス調整コマンドを不揮発性メモリ300へコマンド/アドレス線を介して送信する。ここで、調整の対象となる「インターフェース」は、後述するメモリコントローラ200側の制御インターフェース(260)と、後述する不揮発性メモリ側のメモリインターフェース(400)と、データ線等の信号線とのうちの少なくとも1つを含む。
また、メモリコントローラ200は、信号線209を介して不揮発性メモリ300からステータスを受信し、必要に応じてステータスを更新してホストコンピュータ100に送信する。
なお、メモリコントローラ200は、特許請求の範囲に記載のインターフェース制御回路の一例である。
また、メモリコントローラ200は、誤りが検出された場合にインピーダンス調整コマンド以外の調整コマンドを発行してもよい。例えば、メモリコントローラ200は、インターフェースの転送クロックの位相(タイミング)を調整するための位相調整コマンドを発行してもよいし、位相調整コマンドおよびインピーダンス調整コマンドの両方を発行してもよい。
不揮発性メモリ300は、メモリコントローラ200の制御に従って、データを記憶するものである。この不揮発性メモリ300は、メモリコントローラ200からコマンド、アドレス、および、データを受信する。不揮発性メモリ300はコマンドがライトコマンドである場合には、指定されたアドレスにデータを書き込み、リードコマンドである場合には、指定されたアドレスからデータを読み出す。そして、不揮発性メモリ300は、ステータスを生成してメモリコントローラ200に送信する。また、不揮発性メモリ300は、読み出したデータをメモリコントローラ200に送信する。
また、コマンドがインピーダンス調整コマンドである場合には、不揮発性メモリ300は、インターフェースのインピーダンスの調整を行う。
なお、メモリシステムにおけるメモリは、不揮発性メモリに限定されず、揮発性メモリであってもよい。
また、メモリシステムにおいて、不揮発性メモリ300がインピーダンスの調整を行う構成としているが、不揮発性メモリ300の代わりにメモリコントローラ200がインピーダンスの調整を行ってもよい。
また、メモリコントローラ200が誤り検出、誤り訂正および調整コマンドの発行を行う構成としているが、この構成に限定されない。例えば、メモリコントローラ200の代わりに、ホストコンピュータ100が、誤り検出、誤り訂正および調整コマンドの発行を行ってもよい。
[メモリコントローラの構成例]
図2は、第1の実施の形態におけるメモリコントローラ200の一構成例を示すブロック図である。このメモリコントローラ200は、ホストインターフェース210、誤り検出訂正符号生成部220、誤り検出部230、誤り訂正部240、インピーダンス調整コマンド発行部250および制御インターフェース260を備える。
ホストインターフェース210は、ホストコンピュータ100との間で、コマンド、アドレス、データおよびステータスを送受信するものである。ホストインターフェース210により受信されたコマンドは、解釈および翻訳されて制御インターフェース260に供給される。また、ホストインターフェース210により受信された論理アドレスは、物理アドレスに変換されて制御インターフェース260に供給される。なお、コマンドを解釈および翻訳するデコーダと、論理アドレスを物理アドレスに変換するアドレス変換部と、ステータスを生成するステータス生成部とは、図2において省略されている。
ホストインターフェース210は、ホストコンピュータ100から受信したライトデータWDを誤り検出訂正符号生成部220に供給する。また、ホストインターフェース210は、誤り検出部230または誤り訂正部240からリードデータRDを受け取る。誤り検出部230において誤りが検出されていなければ、ホストインターフェース210は、パリティを除いたリードデータRDをホストコンピュータ100へ送信する。一方、誤り検出部230において誤りが検出されていれば、ホストインターフェース210は、誤り訂正部240により誤りが訂正された後のリードデータRDをホストコンピュータ100へ送信する。
誤り検出訂正符号生成部220は、ホストインターフェース210からライトデータWDを受け取ると、そのライトデータWDからパリティを生成する。そして、誤り検出訂正符号生成部220は、ライトデータWDにパリティを付加し、ライトデータWD'として制御インターフェース260に供給する。
誤り検出部230は、リードデータにおいて誤りが生じたか否かを検出するものである。この誤り検出部230は、制御インターフェース260から、パリティが付加されたリードデータRD'を受け取る。誤り検出部230は、パリティを使用してリードデータにおいて誤りが生じたか否かを検出し、その検出結果を誤り訂正部240、インピーダンス調整コマンド発行部250および制御インターフェース260に供給する。また、誤り検出部230は、誤りが検出されなかった場合には、リードデータRD'からパリティを除いたデータを、リードデータRDとしてホストインターフェース210に供給する。一方、誤りが検出された場合には、誤り検出部230は、パリティの付加されたリードデータRD'を誤り訂正部240に供給する。なお、誤りの個数がECCの誤り訂正能力を超える場合には、後述する第5の実施の形態のように、インピーダンスの調整およびリードリトライを行うこともできる。
誤り訂正部240は、誤りが検出されたときにパリティを使用してリードデータRDにおける誤りを訂正するものである。誤り訂正部240は、訂正したリードデータRDをホストインターフェース210に供給する。
インピーダンス調整コマンド発行部250は、インピーダンス調整コマンドZQCALを発行するものである。インピーダンス調整コマンド発行部250は、メモリコントローラ200に電源が投入されたとき、または、誤りが検出されたときにインピーダンス調整コマンドZQCALを発行する。誤りが検出された場合には、インピーダンス調整コマンド発行部250は、例えば、リードコマンドが最後に送信されたときから、T−T+Tに相当する期間が少なくとも経過したタイミングにおいて、インピーダンス調整コマンドZQCALを発行する。ここで、Tは、リードコマンドの送信から対応するリードデータの受信完了までのレイテンシであり、Tは、インピーダンス調整コマンドの送信からインピーダンスの調整開始までのレイテンシである。Tは、マージンの期間である。このタイミングでインピーダンス調整コマンドを送信することにより、リードデータの受信が完了した後にインピーダンスの調整が開始される。
ここで、電源投入時に発行されるインピーダンス調整コマンドZQCALとしては、例えば、DDR3インターフェースにおけるZQCALロングコマンドが用いられる。また、誤り検出時に発行されるインピーダンス調整コマンドZQCALとしては、例えば、DDR3インターフェースにおけるZQCALロングコマンドまたはZQCALショートコマンドが用いられる。
なお、インピーダンス調整コマンド発行部250は、特許請求の範囲に記載の調整制御部の一例である。
制御インターフェース260は、不揮発性メモリ300との間で、コマンド、アドレス、データおよびステータスを送受信するものである。この制御インターフェース260は、コマンド、アドレス、および、ライトデータWD'を不揮発性メモリ300に信号線209を介して送信する。ただし、誤りが検出された場合には、誤りの訂正処理と、インピーダンスの調整処理との両方が完了するまで、制御インターフェース260は、データ転送を伴う新たなコマンドおよびアドレスの送信を中断する。具体的には、制御インターフェース260は、誤りが検出されたときから、次の式1に示す期間Tiが経過するまで新たなコマンド等の送信を中断する。
Ti=max{(T−T+T+T),(T+T)}−T ・・・式1
ここで、Tは、インピーダンスの調整開始から終了までの期間である。Tcは、訂正の開始から終了までの期間である。max(A,B)は、AおよびBのうち値の大きい方を返す関数である。
また、制御インターフェース260は、リードデータRD'およびステータスを受信し、そのリードデータRD'を誤り検出部230に供給する。
[制御インターフェースの構成例]
図3は、第1の実施の形態における制御インターフェース260の一構成例を示すブロック図である。この制御インターフェース260は、シーケンサ261と、データバッファ262と、パラレル・シリアル変換部263乃至265と、バッファ回路266および267とを備える。バッファ回路267は、ドライバ268およびレシーバ269を備える。なお、バッファ回路267には終端抵抗が接続されているが、記載の便宜上、省略されている。
シーケンサ261は、コマンドの種類に基づいて、バッファ回路267の入出力動作を制御するものである。シーケンサ261は、ホストインターフェース210またはインピーダンス調整コマンド発行部250からコマンドおよびアドレスを受け取る。また、シーケンサ261は、検出結果を誤り検出部230から受け取る。そして、シーケンサ261は、そのコマンドがライトコマンドWCMD、リードコマンドRCMD、インピーダンス調整コマンドZQCALのいずれであるかを判断する。なお、シーケンサ261は、ハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。もしくは、シーケンサ261をハードウェアおよびソフトウェアの組合せにより実現してもよい。
ライトコマンドWCMDである場合には、シーケンサ261は、コマンドおよびアドレスをパラレル・シリアル変換部263に供給し、入出力制御信号IOCtrlによりバッファ回路267を制御して、ドライバ268を活性化させる。
リードコマンドRCMDまたはインピーダンス調整コマンドZQCALである場合には、シーケンサ261は、コマンドおよびアドレスをパラレル・シリアル変換部263に供給する。ただし、エラーが生じたことを検出結果が示す場合には、誤りの訂正処理と、インピーダンスの調整処理との両方が終了するまでの一定期間の間、データ転送を伴う新たなコマンド(リードコマンドRCMDなど)の発行を中断する。また、シーケンサ261は、入出力制御信号IOCtrlによりバッファ回路267を制御して、レシーバ269を活性化させる。
パラレル・シリアル変換部263は、パラレルデータであるコマンドおよびアドレスをクロック信号CLKに同期してシリアルデータに変換するものである。パラレル・シリアル変換部263は、シリアルデータの各々を順にバッファ回路266に供給する。ここで、クロック信号CLKは、制御インターフェース260において生成されたクロック信号である。また、クロック信号CLKは、参照すべきリファレンスクロック信号として不揮発性メモリ300へ送信される。なお、クロック信号CLKを生成するクロック生成回路は、図3において省略されている。
バッファ回路266は、パラレル・シリアル変換部263からのシリアルデータをコマンド/アドレス線207を介して送信するものである。
データバッファ262は、リードデータRD'またはライトデータWD'を保持するものである。保持されたライトデータWD'は、パラレル・シリアル変換部264へ供給され、保持されたリードデータRD'は、誤り検出部230へ供給される。
パラレル・シリアル変換部264は、送信クロック信号TxCLKに同期して、パラレルデータであるライトデータWD'をシリアルデータに変換するものである。パラレル・シリアル変換部264は、シリアルデータの各々を順にドライバ268に供給する。
パラレル・シリアル変換部265は、クロック信号CLKに同期してレシーバ269からのシリアルデータをパラレルデータであるリードデータRD'に変換するものである。パラレル・シリアル変換部265は、変換したリードデータRD'をデータバッファ262に保持させる。
ドライバ268は、パラレル・シリアル変換部264からのシリアルデータを、データ線208を介して送信するものである。
レシーバ269は、データ線208を介して受信したシリアルデータをパラレル・シリアル変換部265へ供給するものである。なお、データ線208は、必要な転送スループットを確保するために複数本で構成されてもよい。この場合、パラレル・シリアル変換部264および265とバッファ回路267とからなる組も、複数組設けられる。
[不揮発性メモリの構成例]
図4は、第1の実施の形態における不揮発性メモリ300の一構成例を示すブロック図である。この不揮発性メモリ300は、メモリインターフェース400、インピーダンス調整部310およびアクセス制御部320を備える。
メモリインターフェース400は、メモリコントローラ200との間でデータを送受信するものである。このメモリインターフェース400は、信号線209を介してコマンドおよびアドレスを受信する。また、メモリインターフェース400は、受信クロック信号に同期して、信号線209を介してライトデータWD'を受信する。メモリインターフェース400は、それらのコマンド等をアクセス制御部320に供給する。さらに、メモリインターフェース400は、アクセス制御部320からリードデータRD'を受け取る。そして、メモリインターフェース400は、送信クロック信号に同期して、信号線209を介してリードデータRD'を送信する。
また、メモリインターフェース400は、信号線209を介してインピーダンス調整コマンドZQCALを受信し、そのコマンドに従って、インピーダンス調整部310との間で調整開始信号および調整終了通知などの信号をやりとりする。これらの信号の詳細については後述する。
インピーダンス調整部310は、メモリインターフェース400においてインピーダンスの不整合を調整するものである。
アクセス制御部320は、メモリセルアレイ330にアクセスしてデータの書込み、または、読出しを行うものである。このアクセス制御部320は、ライトコマンドWCMD、アドレスおよびライトデータWD'を受け取ると、そのコマンドに従って、メモリセルアレイ330内の指定されたアドレスにアクセスし、ライトデータWD'を書き込む。また、アクセス制御部320は、リードコマンドRCMDおよびアドレスを受け取ると、そのコマンドに従って、メモリセルアレイ330内の指定されたアドレスにアクセスし、リードデータRD'を読み出す。アクセス制御部320は、読み出したリードデータRD'をメモリインターフェース400に供給する。また、アクセス制御部320は、アクセス状況に基づいてステータスを生成し、メモリインターフェース400に供給する。
メモリセルアレイ330は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、例えば、可変抵抗素子を用いるReRAMが用いられる。なお、ReRAM以外の不揮発性の記憶素子をメモリセルとして用いてもよい。例えば、NAND型フラッシュメモリやNOR型フラッシュメモリを用いてもよいし、ReRAM、PCRAM、または、MRAMなどを用いてもよい。
[メモリインターフェースの構成例]
図5は、第1の実施の形態におけるメモリインターフェース400の一構成例を示すブロック図である。このメモリインターフェース400は、オリジナルバッファ回路410と、レプリカバッファ回路432と、バッファ回路451と、パラレル・シリアル変換部452乃至454と、シーケンサ455と、データバッファ456とを備える。
オリジナルバッファ回路410は、データ線208を介してシリアルデータを送受信するものである。このオリジナルバッファ回路410は、受信したシリアルデータをパラレル・シリアル変換部453に供給し、送信対象のシリアルデータをパラレル・シリアル変換部454から受け取る。また、オリジナルバッファ回路410のインピーダンスは、インピーダンス調整部310からのインピーダンス制御信号ZQCtrlにより制御される。
レプリカバッファ回路432は、オリジナルバッファ回路410と類似した回路である。このレプリカバッファ回路432のインピーダンスは、インピーダンス制御信号ZQCtrlにより制御される。また、レプリカバッファ回路432は、比較結果COMP1およびCOMP2をインピーダンス調整部310に供給する。これらの信号の詳細については後述する。
バッファ回路451は、コマンド/アドレス線207を介してシリアルデータを受信し、パラレル・シリアル変換部452へ供給するものである。
パラレル・シリアル変換部452は、バッファ回路451からのシリアルデータをパラレルデータである、コマンドおよびアドレスに変換するものである。パラレル・シリアル変換部452は、それらのコマンドおよびアドレスをシーケンサ455に供給する。
シーケンサ455は、コマンドの種類に基づいて、オリジナルバッファ回路410の入出力動作を制御するものである。シーケンサ455は、パラレル・シリアル変換部452からコマンドおよびアドレスを受け取り、そのコマンドがライトコマンドWCMD、リードコマンドRCMD、インピーダンス調整コマンドZQCALのいずれであるかを判断する。
ライトコマンドWCMDである場合には、シーケンサ455は、コマンドおよびアドレスをアクセス制御部320に供給し、入出力制御信号IOCtrlによりオリジナルバッファ回路410を制御して、ライトデータを受信させる。
リードコマンドRCMDである場合には、シーケンサ455は、コマンドおよびアドレスをアクセス制御部320に供給し、入出力制御信号IOCtrlによりオリジナルバッファ回路410を制御して、リードデータを送信させる。
インピーダンス調整コマンドZQCALである場合には、シーケンサ455は、調整開始信号を生成してインピーダンス調整部310に供給する。そして、シーケンサ455は、インピーダンス調整部310からの調整終了通知を受け付ける。シーケンサ455は、調整開始信号から、調整終了通知を受け取るまでの間、データ転送を伴う新たなコマンドの発行を中断する。
パラレル・シリアル変換部453は、リファレンスクロック信号(CLK)に同期して、オリジナルバッファ回路410からのシリアルデータをパラレルデータであるライトデータWD'に変換するものである。パラレル・シリアル変換部453は、そのライトデータWD'をデータバッファ456に保持させる。
パラレル・シリアル変換部454は、パラレルデータであるリードデータRD'をデータバッファ456から取得し、リファレンスクロック信号(CLK)に同期してシリアルデータに変換するものである。パラレル・シリアル変換部454は、そのシリアルデータをオリジナルバッファ回路410に順に供給する。
データバッファ456は、リードデータRD'またはライトデータWD'を保持するものである。保持されたライトデータWD'は、アクセス制御部320へ供給され、保持されたリードデータRD'は、パラレル・シリアル変換部454へ供給される。
[オリジナルバッファ回路の構成例]
図6は、第1の実施の形態におけるオリジナルバッファ回路410の一構成例を示すブロック図である。このオリジナルバッファ回路410は、プルアップ回路411、プルダウン回路416、レシーバ421およびドライバ424を備える。
プルアップ回路411は、電源電圧Vccが印加された端子と外部端子431との間に挿入される電源側の回路である。このプルアップ回路411は、トランジスタ412と、抵抗413と、一定数のトランジスタ413および抵抗414とを備える。抵抗415の一端は、トランジスタ412に接続され、他端は、レシーバ421、プルダウン回路416および外部端子431に接続されている。トランジスタ413および抵抗414は直列に接続されており、直列に接続されたトランジスタ413および抵抗414のそれぞれは、抵抗415に並列に接続されている。
トランジスタ412として、例えば、pMOS(Metal-Oxide-Semiconductor)トランジスタが用いられる。トランジスタ412のソース電極には電源電圧Vccが印加され、ドレイン電極は抵抗413に接続され、ゲート電極には、プルアップ制御信号PU_Onが入力される。ここで、プルアップ制御信号PU_Onは、プルアップ抵抗を制御するためにハイレベルまたはローレベルが設定される信号であり、インピーダンス制御信号ZQCtrlに含まれる。
この構成により、プルアップ制御信号PU_Onがローレベルの場合には、トランジスタ412がオン状態に移行し、プルアップ抵抗として、抵抗414および415の合成抵抗が接続された状態となる。一方、プルアップ制御信号PU_Onがハイレベルの場合には、プルアップ抵抗が非接続の状態となる。
トランジスタ413として、例えば、pMOSトランジスタが用いられる。また、トランジスタ413のゲート電極には、プルアップ制御信号PU[0:3]のいずれかのビットが入力される。プルアップ制御信号PU[0:3]は4ビットのデータであり、インピーダンス制御信号ZQCtrlに含まれる。プルアップ制御信号PU[0:3]が4ビットであるため、トランジスタ413および抵抗414からなる組を最大で4組設けることができる。
この構成により、プルアップ制御信号PU[0:3]に従って、プルアップ回路411の抵抗値が制御される。具体的には、プルアップ制御信号PU[0:3]において「1」のビット数が多いほど、オフ状態となるトランジスタ413が増加し、並列接続された抵抗414および抵抗415の合成抵抗(すなわち、プルアップ回路411の抵抗)が高くなる。
プルダウン回路416は、基準電圧Vssが印加された端子と外部端子431との間に挿入される接地側の回路である。このプルダウン回路416は、一定数の抵抗417およびトランジスタ418と、抵抗419と、トランジスタ420とを備える。抵抗419の一端は、レシーバ421、プルアップ回路411および外部端子431に接続され、他端はトランジスタ420に接続されている。抵抗417およびトランジスタ418は直列に接続されており、直列に接続された抵抗417およびトランジスタ418のそれぞれは、抵抗419に並列に接続されている。
トランジスタ420として、例えば、nMOSトランジスタが用いられる。トランジスタ420のソース電極は抵抗419に接続され、ドレイン電極には基準電圧Vssが印加され、ゲート電極には、プルダウン制御信号PD_Onが入力される。ここで、プルダウン制御信号PD_Onは、プルダウン抵抗を制御するためにハイレベルまたはローレベルが設定される信号であり、インピーダンス制御信号ZQCtrlに含まれる。
この構成により、プルダウン制御信号PD_Onがハイレベルの場合には、トランジスタ420がオン状態に移行し、プルダウン抵抗として、抵抗417および419の合成抵抗が接続された状態となる。一方、プルダウン制御信号PD_Onがローレベルの場合には、プルダウン抵抗が非接続の状態となる。
トランジスタ418として、例えば、nMOSトランジスタが用いられる。また、トランジスタ418のゲート電極には、プルダウン制御信号PD[0:3]のいずれかのビットが入力される。プルダウン制御信号PD[0:3]は4ビットのデータであり、インピーダンス制御信号ZQCtrlに含まれる。プルダウン制御信号PD[0:3]が4ビットであるため、抵抗417およびトランジスタ418からなる組を最大で4組設けることができる。
この構成により、プルダウン制御信号PD[0:3]に従って、プルダウン回路416の抵抗値が制御される。具体的には、プルダウン制御信号PD[0:3]において「0」のビット数が多いほど、オフ状態となるトランジスタ418が増加し、並列接続された抵抗418および抵抗419の合成抵抗(すなわち、プルダウン回路416の抵抗)が高くなる。
これらのプルアップ回路411およびプルダウン回路416の抵抗は、データ線208の終端に接続された終端抵抗として用いられる。この終端抵抗は、不揮発性メモリ300のチップ上に設けられているため、ODT(On Die Termination)とも呼ばれる。
レシーバ421は、メモリコントローラ200からのシリアルデータを受信するものである。このレシーバ421は、トランジスタ422および423を備える。トランジスタ422として、例えば、pMOSトランジスタが用いられ、トランジスタ423として、例えば、nMOSトランジスタが用いられる。
トランジスタ422のソース電極には電源電圧Vccが印加され、ドレイン電極はトランジスタ423のソース電極とパラレル・シリアル変換部453とに接続される。また、トランジスタ422のゲート電極は、外部端子431と接続される。
トランジスタ423のソース電極は、トランジスタ422のドレイン電極とパラレル・シリアル変換部453とに接続され、ドレイン電極には基準電圧Vssが印加される。また、トランジスタ423のゲート電極は、外部端子431と接続される。
この構成により、レシーバ421は、データ線208を介して送信されたシリアルデータを受信し、そのデータをパラレル・シリアル変換部453へ供給する。また、レシーバ421は、入出力制御信号IOCtrlに従って、活性化または非活性化する。なお、レシーバ421を活性化または非活性化するための素子や配線は、図6において省略されている。
ドライバ424は、プルアップ回路425およびプルダウン回路426を備える。プルアップ回路425の構成は、プルアップ回路411と同様である。ただし、プルアップ回路425において、トランジスタ412に相当するトランジスタのゲート電極は、パラレル・シリアル変換部454に接続される。プルダウン回路426の構成は、プルダウン回路416と同様である。ただし、プルアップ回路426において、トランジスタに相当するトランジスタのゲート電極は、パラレル・シリアル変換部454に接続される。
この構成により、ドライバ424は、パラレル・シリアル変換部454からのシリアルデータをメモリコントローラ200へ送信する。また、ドライバ424は、入出力制御信号IOCtrlに従って、活性化または非活性化する。なお、ドライバ420を活性化または非活性化するための素子や配線は、図6において省略されている。
[レプリカバッファ回路の構成例]
図7は、第1の実施の形態におけるレプリカバッファ回路432の一構成例を示すブロック図である。このレプリカバッファ回路432は、外部端子440と、プルアップ回路433と、抵抗434および435と、コンパレータ436とを備える。また、レプリカバッファ回路432は、プルアップ回路437、プルダウン回路438およびコンパレータ439を備える。
外部端子440には、不揮発性メモリ300の外部に設けられた外部抵抗が接続されている。この外部抵抗の一端には基準電圧Vssが印加され、その抵抗値は、メモリコントローラ200側のプルダウン抵抗と略同一の値に設定される。
プルアップ回路433は、電源電圧Vccが印加された端子と、外部端子440との間に挿入される。プルアップ回路433の構成は、図6におけるプルアップ回路411と同様である。このプルアップ回路433の一端には電源電圧Vccが供給され、他端は、外部端子440およびコンパレータ436の入力端子に接続される。
この構成により、プルアップ制御信号PU_Onがローレベルの場合には、電源電圧Vccと基準電圧Vssとの電位差を、プルアップ回路433および外部抵抗の抵抗比により分圧した電圧Vq1がコンパレータ436の入力端子に印加される。一方、プルアップ制御信号PU_Onがハイレベルの場合には、プルアップ回路433が非接続の状態となり、電圧Vq1の値は、外部抵抗の値に応じた、所定の参照電圧Vref_extと同一になる。
また、電源電圧Vccと基準電圧Vssとの間には、直列に接続された抵抗434および435が挿入されている。そして、これらの抵抗の接続点は、コンパレータ436および439の入力端子に接続されている。この構成により、電源電圧Vccと基準電圧Vssとの電位差を、抵抗434および435の抵抗比により分圧した電圧が参照電圧Vref_intとしてコンパレータ436および439の入力端子に印加される。
この参照電圧Vref_intの値は、この電圧に電圧Vq1を略一致させることで、メモリコントローラ200および不揮発性メモリ300の一方の送信回路と、他方の受信回路とのインピーダンスが整合するような値に設定される。送信回路は、ドライバなどであり、受信回路は、レシーバ、終端抵抗、および、信号線などである。
コンパレータ436は、電圧Vq1と参照電圧Vref_intとを比較するものである。コンパレータ436は、比較した結果を比較結果COMP1としてインピーダンス調整部310に供給する。比較結果COMP1は、例えば、電圧Vq1が参照電圧Vref_infに満たない場合にハイレベルとなり、そうでない場合にローレベルとなる信号である。
プルアップ回路437の構成は、図6におけるプルアップ回路411と同様である。このプルアップ回路437の一端には電源電圧VVccが供給され、他端は、プルダウン回路438とコンパレータ439の入力端子とに接続される。
プルダウン回路438の構成は、図6におけるプルダウン回路416と同様である。このプルダウン回路438の一端は、プルアップ回路437とコンパレータ439の入力端子とに接続され、他端には基準電圧Vssが供給される。
この構成により、プルアップ制御信号PU_Onがローレベルでプルダウン制御信号PD_Onがハイレベルの場合に、プルアップ回路437およびプルダウン回路438の抵抗比に応じた電圧Vq2がコンパレータ439の入力端子に印加される。
コンパレータ439は、電圧Vq2と参照電圧Vref_intとを比較するものである。このコンパレータ439は、比較した結果を比較結果COMP2としてインピーダンス調整部310に供給する。比較結果COMP2は、例えば、参照電圧Vref_infが電圧Vq2に満たない場合にハイレベルとなり、そうでない場合にローレベルとなる信号である。
[インピーダンス調整部の構成例]
図8は、第1の実施の形態におけるインピーダンス調整部310の一例を示すブロック図である。このインピーダンス調整部310は、ステートマシン311、制御信号保持部312および反転回数カウンタ313を備える。
ステートマシン311は、メモリインターフェース400におけるインピーダンスを調整するものである。このステートマシン311は、メモリインターフェース400から調整開始信号を受け取ると、インピーダンスの調整を開始する。
ステートマシン311は、まず、ローレベルのプルアップ制御信号PU_Onをメモリインターフェース400に出力する。これにより、プルアップ抵抗の値の調整が可能となる。
ステートマシン311は、内部クロック信号CLKに同期して、比較結果COMP1の値に応じてプルアップ抵抗の値を制御する。抵抗値の制御量は、クロックサイクルごとに一定の値とする。具体的には、比較結果COMP1がハイレベルである場合には、制御対象の電圧Vq1が参照電圧Vref_intに満たないことを意味する。このため、ステートマシン311は、プルアップ制御信号PU[0:3]によりプルアップ抵抗の値を低くする。これにより、電圧Vq1が高くなる。一方、比較結果COMP1がローレベルである場合には、ステートマシン311は、プルアップ抵抗の値を高くする。
また、ステートマシン311は、比較結果COMP1の反転回数を反転回数カウンタに計数させる。そのカウンタ値ZCNTが一定回数(例えば、「4」)になると、ステートマシン311は、プルアップ抵抗の調整が完了したと判断する。
プルアップ抵抗の調整が完了すると、ステートマシン311は、ローレベルのプルアップ制御信号PU_Onと、ハイレベルのプルダウン制御信号PD_Onとをメモリインターフェース400に出力する。これにより、プルダウン抵抗の値の調整が可能となる。また、ステートマシン311は、カウンタ値ZCNTを初期値(例えば、「0」)にする。
ステートマシン311は、内部クロック信号CLKに同期して、比較結果COMP2の値に応じてプルダウン抵抗の値を制御する。抵抗値の制御量は、クロックサイクルごとに一定の値とする。具体的には、比較結果COMP2がローレベルである場合には、制御対象の電圧Vq2が参照電圧Vref_int以下であることを意味する。このため、ステートマシン311は、プルダウン制御信号PD[0:3]によりプルダウン抵抗の値を高くする。これにより、電圧Vq2が高くなる。一方、比較結果COMP2がハイレベルである場合には、ステートマシン311は、プルダウン抵抗の値を低くする。
また、ステートマシン311は、比較結果COMP2の反転回数を反転回数カウンタに計数させる。そのカウンタ値ZCNTが一定回数(例えば、「4」)になると、ステートマシン311は、プルダウン抵抗の調整が完了したと判断する。
ステートマシン311は、プルアップ抵抗およびプルダウン抵抗の調整が完了したとき、または、調整期間が経過したときに調整終了通知を生成してメモリインターフェース400に出力する。ここで、調整期間は、例えば、ZQCALショートコマンドでは、64クロックに、ZQCALロングコマンドでは、256クロックに設定される。また、ステートマシン311は、カウンタ値ZCNTを初期値にする。さらに、ステートマシン311は、インピーダンス制御信号ZQCtrl(PU_On、PD_On、PU[0:3]およびPD[0:3])を制御信号保持部に保持させる。そして、ステートマシン311は、その制御信号をメモリインターフェース400に継続して供給する。
なお、ステートマシン311は、プルアップ抵抗から先に調整しているが、逆にプルダウン抵抗から先に調整してもよい。また、ステートマシン311は、プルアップ抵抗およびプルダウン抵抗の両方を調整しているが、いずれか一方のみを調整してもよい。
制御信号保持部312は、インピーダンス制御信号ZQCtrlを保持するものである。
反転回数カウンタ313は、比較結果COMP1または比較結果COMP2の反転回数を計数するものである。
図9は、第1の実施の形態における電源投入時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Vq2の電圧であり、横軸は時間である。電源投入時には、不揮発性メモリ300側のプルダウン抵抗は最小値に設定される。その結果、制御対象の電圧Vq2は、最小値となる。不揮発性メモリ300は、内部クロック信号CLKに同期してプルダウン抵抗を制御して、参照電圧Vref_intに電圧Vq2を略一致させる。具体的には、比較結果COMP2が一定回数(例えば、4回)反転したときに略一致したと判断される。ここで、クロックサイクルごとのインピーダンスの制御量は、一定の値である。なお、プルダウン抵抗の調整の前に行われたプルアップ抵抗の調整は、図9において省略されている。
例えば、時刻T0に電源が投入され、時刻T1において、電圧Vq2が参照電圧Vref_intを超えると、比較結果COMP2がローレベルからハイレベルに反転する。そして、時刻T2において、不揮発性メモリ300は、電圧Vq2が低くなるようにインピーダンスを制御し、電圧Vqが参照電圧Vref_int未満となると、比較結果COMP2がハイレベルからローレベルに反転する。以下、時刻T3およびT4において、電圧Vqを増減することにより、比較結果COMP2が反転したとする。時刻T4の時点において、反転回数が4回となったため、不揮発性メモリ300は、インピーダンスの調整が完了したと判断する。
参照電圧Vref_intは、インターフェースの送信側の回路と受信側の回路とでインピーダンスが整合するような値に設定されている。このため、この参照電圧Vref_intに基づいてインピーダンスを制御することにより、送信側と受信側とでインピーダンスが整合した状態となり、インターフェースにおける転送エラーが低減する。
図10は、第1の実施の形態における誤り検出時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Vq2の電圧であり、横軸は時間である。電源投入後、温度変化などにより、インターフェースにおいてインピーダンスの値が変動する。この現象は、温度ドリフトと呼ばれる。この結果、インターフェースの送信側と受信側とでインピーダンスが整合しない状態となる。このインピーダンスの不整合により信号の反射が生じ、時刻T5において誤りが検出される。メモリコントローラ200は、インピーダンス調整コマンドZQCALを発行し、不揮発性メモリ300はインピーダンスの調整を開始する。ここで、クロックサイクルごとのインピーダンスの制御量は、一定の値である。時刻T6において、比較結果COMP2の反転回数が一定回数に達すると、不揮発性メモリ300は、調整が完了したと判断し、インピーダンスの整合状態を維持する。
[メモリコントローラの動作例]
図11は、第1の実施の形態におけるメモリコントローラ200の動作の一例を示すフローチャートである。この動作は、例えば、メモリコントローラ200に電源が投入されたときに開始する。
メモリコントローラ200は、電源投入直後に、インピーダンス調整コマンドを発行して不揮発性メモリ300に送信する(ステップS901)。メモリコントローラ200は、一定サイクルが経過したか否かを判断する(ステップS902)。この期間は、インピーダンスの調整処理に要する期間である。一定サイクルが経過していなければ(ステップS902:No)、メモリコントローラ200は、ステップS902に戻る。
一定サイクルが経過したのであれば(ステップS902:Yes)、メモリコントローラ200は、ホストコンピュータ100からコマンドを受信して翻訳および解釈等を行って、各種のコマンドを発行する(ステップS903)。
メモリコントローラ200は、解釈したコマンドの処理(ライト処理やリード処理など)を実行する(ステップS904)。リード処理において、誤りが検出された場合には、図13および図14において後述するように、インピーダンス調整コマンドが発行される。
メモリコントローラ200は、コマンドの処理が完了したか否かを判断する(ステップS905)、処理が完了していなければ(ステップS905;No)、メモリコントローラ200は、ステップS904に戻る。処理が完了したのであれば(ステップS905:Yes)、メモリコントローラ200は、ステップS903に戻る。
図12は、第1の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ200は、リードコマンドおよびアドレスを不揮発性メモリ300に送信し、リードデータおよびパリティを受信する。そして、メモリコントローラ200は、パリティを使用してリードデータにおける誤りの有無を検出する(ステップS911)。
メモリコントローラ200は、パリティを使用して、リードデータに誤りが生じたか否かを判断する(ステップS912)。
誤りが生じた場合には(ステップS912:Yes)、メモリコントローラ200は、調整処理(ステップS920)と、リードデータの訂正処理(ステップS917)とを並列に実行する。両方の処理が終了した後、または、誤りがなかった場合(ステップS912:No)、メモリコントローラ200は、メモリコントローラ200は、リードデータをホストコンピュータ100に送信してリード処理を終了する。
図13は、第1の実施の形態における調整処理の一例を示すフローチャートである。メモリコントローラ200は、インピーダンス調整コマンドを発行可能なタイミングであるか否かを判断する(ステップS921)。このタイミングは、例えば、リードデータの全ての送信が完了するときにインピーダンスの調整が開始されるようなタイミングである。発行可能なタイミングが経過していなければ(ステップS921:No)、メモリコントローラ200はステップS921に戻る。
一方、発行可能なタイミングであれば(ステップS921:Yes)、メモリコントローラ200は、インピーダンス調整コマンドを発行する(ステップS922)。そして、メモリコントローラ200は、一定サイクルが経過したか否かを判断する(ステップS923)。この一定サイクルは、インピーダンスの調整が完了するまでの期間である。一定サイクルが経過していなければ(ステップS923:No)、メモリコントローラ200はステップS923に戻る。一定サイクルが経過したのであれば(ステップS923:Yes)、メモリコントローラ200は調整処理を終了する。
[不揮発性メモリの動作例]
図14は、第1の実施の形態における不揮発性メモリ300の動作の一例を示すフローチャートである。この動作は、例えば、不揮発性メモリ300に電源が投入されたときに開始する。
不揮発性メモリ300は、メモリコントローラ200から各種のコマンドを受信したか否かを判断する(ステップS951)。コマンドを受信していなければ(ステップS951:No)、不揮発性メモリ300は、ステップS951に戻る。コマンドを受信したのであれば(ステップS951:Yes)、不揮発性メモリ300は、そのコマンドがインピーダンス調整コマンドであるか否かを判断する(ステップS952)。インピーダンス調整コマンドであれば(ステップS952:Yes)、不揮発性メモリ300は、インターフェースのインピーダンスの調整を行う(ステップS953)。
インピーダンス調整コマンドでなければ(ステップS952:No)、不揮発性メモリ300は、コマンドに従って、各種の処理(リード処理やライト処理)を行う(ステップS954)。ステップS953またはS954の後、不揮発性メモリ300は、ステップS951に戻る。
図15は、第1の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
メモリコントローラ200は、4つのリードコマンドおよびアドレスをコマンド/アドレス線207を介して、順に不揮発性メモリ300へ送信したものとする。
不揮発性メモリ300は、リードコマンドに従ってリードデータRD'を読み出し、データ線208を介してメモリコントローラ200へ送信する。
メモリコントローラ200における誤り検出部230は、パリティを使用して、それぞれのリードデータにおける誤りの有無を検出する。ここで、2つ目のリードデータRD'の転送において、転送エラーが生じたものとする。この場合、メモリコントローラ200における誤り訂正部240は、誤りの訂正処理を実行する。
メモリコントローラ200は、誤りを検出したときに、データ転送を伴う新たなコマンドの発行を中断する。しかし、この時点において、3つ目のリードコマンドを発行済であった場合、訂正処理の間において3つ目のリードデータRD'の転送が行われる。なお、中断のタイミングは、インピーダンス調整のため、データを中断することができるタイミングであれば、どのようなタイミングであってもよい。
メモリコントローラ200におけるインピーダンス調整コマンド発行部250は、3つ目のリードデータRD'の転送が完了した後に、インピーダンスの調整が開始されるようなタイミングにおいて、インピーダンス調整開始コマンドを発行する。
不揮発性メモリ300におけるインピーダンス調整部310は、インピーダンス調整コマンドに従って、インピーダンスの調整処理(ZQ調整処理)を開始する。このように、訂正処理と調整処理とが並列に実行されるため、訂正処理の期間に、調整処理の期間の少なくとも一部が隠蔽される。
メモリコントローラ200は、両方の処理が終了した後に、次のリードデータRD'の読出しが開始されるようなタイミングでリードコマンドおよびアドレスを不揮発性メモリ300へ送信する。
なお、メモリコントローラ200は、誤りの訂正期間内に、インピーダンスの調整処理を開始させているが、この構成に限定されない。例えば、メモリコントローラ200は、誤り訂正を開始する前に、インピーダンスの調整処理を開始させてもよい。
また、メモリコントローラ200は、データ転送を伴うコマンドの発行の前にインピーダンス調整コマンドを割り込ませているが、この構成に限定されない。例えば、メモリコントローラ200は、不揮発性メモリ300がリードデータを出力する前に、インピーダンス調整コマンドを割り込ませてもよい。具体的には、メモリコントローラ200は、リードコマンドによって読み出されたリードデータに誤りがあった場合には、そのリードコマンドより後のリードコマンドを破棄して、誤り訂正を行う。そして、誤り訂正の完了後に、メモリコントローラ200は、再度、破棄したリードコマンドを実行し、リードデータが読み出される前に、インピーダンス調整コマンドを発行する。
また、メモリコントローラ200は、ライトコマンドを発行してライトデータを出力する前に、インピーダンス調整コマンドを割り込ませてもよい。具体的には、メモリコントローラ200は、リードコマンドによって読み出されたリードデータに誤りがあった場合には、そのリードコマンドより後のライトコマンドを破棄して、誤り訂正を行う。そして、誤り訂正の完了後に、メモリコントローラ200は、再度、破棄したライトコマンドを実行し、ライトデータを出力する前に、インピーダンス調整コマンドを発行する。
また、メモリコントローラ200は、定期的にインピーダンス調整コマンドを発行する制御と、誤り検出時にインピーダンス調整コマンドを発行する図12に例示した制御とを切り替えてもよい。例えば、訂正不能な誤りが生じた場合や、誤りの個数が閾値を超えた場合などの所定の条件が満たされたときに、メモリコントローラ200が図12に例示した制御に切り替える。
また、メモリコントローラ200は、一定回数のライトコマンドの受信のたびに、リードデータを読み出して誤りの有無の検出を行い、調整処理が必要か否かの確認を行ってもよい。
このように、本技術の第1の実施の形態によれば、メモリコントローラ200は、誤りが生じると訂正処理を実行し、また、インピーダンスの調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ200と不揮発性メモリ300との間の通信速度が向上する。
[第1の変形例]
第1の実施の形態では、誤りが検出された場合に、必ず、調整処理を実行していたが、誤りが比較的少ない場合には、調整処理を実行する必要性が低い。第1の変形例のメモリコントローラ200は、誤りの個数が閾値を超える場合に、調整処理を実行する点において第1の実施の形態と異なる。
第1の変形例の誤り検出訂正符号生成部220は、パリティを使用して、リードデータRD'における誤りの個数を求める。
誤りの個数が、所定の閾値Th1を超える場合にインピーダンス調整コマンド発行部は、インピーダンス調整コマンドを発行する。ここで、閾値Th1として、パリティにより訂正することが可能な誤りの個数(すなわち、誤り訂正能力)に満たない数が設定される。
図16は、第1の実施の形態の第1の変形例におけるメモリコントローラ200の動作の一例を示すフローチャートである。この動作は、ステップS914、S915およびS916をさらに実行する点において第1の実施の形態と異なる。
エラーが生じた場合には(ステップS912:Yes)、メモリコントローラ200は、パリティを使用して、誤りの個数を取得する(ステップS914)。そして、メモリコントローラ200は、誤りの個数が閾値Th1を超えるか否かを判断する(ステップS915)。
誤りの個数が閾値Th1を超える場合には(ステップS915:Yes)、メモリコントローラ200は、調整処理(ステップS920)および訂正処理(ステップS917)を並列に実行する。一方、誤りの個数が閾値Th1以下である場合には(ステップS915:No)、メモリコントローラ200は、訂正処理のみを実行する(ステップS916)。ステップS920およびS917の両方の処理の完了後、または、ステップS916の後、メモリコントローラ200は、リードデータをホストコンピュータ100へ送信してリード処理を終了する。
このように、第1の変形例によれば、メモリコントローラ200は、誤りの個数が閾値を超える場合に調整処理を実行するため、調整処理の実行回数を低減することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ200と不揮発性メモリ300との間の通信速度がさらに向上する。
[第2の変形例]
第1の実施の形態では、クロックサイクルごとのインピーダンスの制御量を一定としていたが、調整中に制御量を変更してもよい。第2の変形例の不揮発性メモリ300は、インピーダンスの制御量を調整中に変更する点において第1の実施の形態と異なる。具体的には、電源投入後に実行する調整処理において、メモリコントローラ200は、比較的大きな制御量で調整を開始し、徐々に制御量を小さくしていく。例えば、比較結果COMP1またはCOMP2が反転するたびに、インピーダンスの制御量を小さくする。これにより、調整開始から終了までの時間が短縮される。
図17は、第1の実施の形態の第2の変形例における電源投入時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Vq2の電圧であり、横軸は時間である。時刻T0に電源が投入された後、不揮発性メモリ300は、クロックサイクルごとのインピーダンスの制御量を最大にして、調整を開始する。そして、時刻T11において比較結果COMP2が反転すると、不揮発性メモリ300は、制御量を小さくする。その後の時刻T12において比較結果COMP2が再度反転すると、不揮発性メモリ300は、さらに制御量を小さくする。時刻T13において、比較結果COMP2が再度反転すると、不揮発性メモリ300は、制御量を小さくし、その結果、制御量は最小となる。そして、時刻T14において反転回数が一定回数に達すると、不揮発性メモリ300は、調整が完了したと判断する。
なお、誤りが検出されたときにおいては、第1の実施の形態と同様に、クロックサイクルごとに一定の制御量で調整が行われる。
このように、第2の変形例によれば、不揮発性メモリ300は、インピーダンスの制御量を最大値から徐々に小さくするため、調整開始から終了までの時間を短縮することができる。
<2.第2の実施の形態>
[メモリコントローラの構成例]
第1の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インターフェースにおいてインピーダンス以外の伝送特性を調整してもよい。インピーダンス以外の伝送特性としては、データの伝送タイミングなどが挙げられる。ここで、データの伝送タイミングは、メモリコントローラ200および不揮発性メモリ300の一方が他方へデータを送出するタイミング、または、その送出されたデータを他方が受信するタイミングを示す。第2の変形例のメモリシステムは、誤り検出時にデータの伝送タイミングを調整する点において第1の実施の形態と異なる。メモリシステムは、例えば、受信クロック信号の位相を調整することにより、データの伝送タイミングを調整する。
図18は、第2の実施の形態におけるメモリコントローラ200の一構成例を示すブロック図である。第2の実施の形態のメモリコントローラ200は、インピーダンス調整コマンド発行部250の代わりに、位相調整部280を備える点において第1の実施の形態と異なる。
位相調整部280は、制御インターフェース260の転送クロック信号の位相を調整するものである。制御インターフェース260の転送クロック信号には、ライトデータを送信する際の送信クロック信号と、リードデータを受信する際の受信クロック信号とがある。位相調整部280は、例えば、これらのうち受信クロック信号の位相を調整する。
位相調整部280は、誤りの検出結果を誤り検出部230から受け取る。誤りが検出された場合に位相調整部280は、受信クロック信号の位相の調整を行う。ここで、データ線が複数ある場合には、位相調整部280は、データ線ごとに受信クロック信号の位相を調整してもよい。また、データ線のそれぞれが複数のグループに属する場合には、位相調整部280は、グループごとに受信クロック信号の位相を調整してもよい。不揮発性メモリ300から出力される送信クロック信号に同期したリードデータには、メモリコントローラ200で受信されるまでの伝送遅延が付加される。このため、メモリコントローラ200の受信クロック信号は、不揮発性メモリ300の送信クロック信号に対して、その伝送遅延の分、遅らせる必要がある。位相調整部280は、この伝送遅延に基づいて、受信クロック信号の位相を調整する。
なお、転送クロック信号の位相の調整をメモリコントローラ200が実行する構成としているが、この構成に限定されない。メモリコントローラ200の代わりに不揮発性メモリ300が、不揮発性メモリ300側のインターフェースにおいて転送クロック信号の位相を調整してもよい。
[位相調整部の構成例]
図19は、第2の実施の形態における位相調整部280の一構成例を示すブロック図である。この位相調整部280は、位相調整コマンド発行部281、テストデータ生成部282、位相制御部283および一致判定部284を備える。
位相調整コマンド発行部281は、位相調整コマンドPHCALを発行するものである。この位相調整コマンド発行部281は、メモリコントローラ200に電源が投入されたとき、または、誤りが検出されたときに位相調整コマンドPHCALを発行する。誤りが検出された場合の位相調整コマンドの発行タイミングは、例えば、第1の実施の形態のインピーダンス調整コマンドの発行タイミングと同一とする。位相調整コマンド発行部281は、発行した位相調整コマンドPHCALをテストデータ生成部282、位相制御部283および制御インターフェース260へ供給する。
テストデータ生成部282は、テストデータを生成するものである。このテストデータは、ループバックテストを行うためのデータであり、例えば、PRBS(Pseudo-random bit sequence)が用いられる。ループバックテストは、インターフェースに、既知のデータを送信させるとともに帰還(すなわち、ループバック)させて、送信したデータと、帰還したデータとを比較することにより、インターフェースが正常に動作しているか否かを確認するものである。
テストデータ生成部282は、位相調整コマンドPHCALを受け取ると、内部クロック信号CLKに同期してテストデータをN回生成する。Nは、ループバックテストを行う回数であり、例えば、2以上の整数が設定される。テストデータ生成部282は、テストデータを生成するたびに、そのデータを送信テストデータTxDataとして制御インターフェース260および一致判定部284に供給する。
一致判定部284は、送信されたテストデータと、帰還したテストデータとが一致するか否かを判定するものである。この一致判定部284は、送信テストデータTxDataをテストデータ生成部282から受け取り、制御インターフェース260から受信テストデータRxDataを受け取る。受信テストデータRxDataは、帰還したテストデータである。
一致判定部284は、送信テストデータTxDataと受信テストデータRxDataとをビット単位で比較し、それらが一致するか否かを判定する。一致判定部284は、その判定結果を位相制御部283に供給する。テストデータがN回生成されるため、N個の判定結果が生成される。
位相制御部283は、判定結果に基づいて受信クロック信号の位相を制御するものである。位相制御部283は、位相調整コマンドPHCALを受け取ると、位相の調整を開始する。位相の調整において、位相制御部283は、位相を制御するための位相制御信号により、内部クロック信号CLKに同期して、受信クロック信号の位相を、N個の異なる位相に順に制御する。そして、位相制御部283は、それぞれの位相における判定結果を参照し、送信テストデータTxDataと受信テストデータRxDataとが一致する位相のいずれかを選択する。一致する位相が複数ある場合には、位相制御部283は、例えば、それらの位相の中間の位相を選択する。位相制御部283は、選択した位相に受信クロック信号の位相を固定し、位相の調整を完了する。
[制御インターフェースの構成例]
図20は、第2の実施の形態における制御インターフェース260の一構成例を示すブロック図である。第2の実施の形態の制御インターフェース260は、多相クロック生成回路270をさらに備える点において第1の実施の形態と異なる。
多相クロック生成回路270は、位相の異なる複数のクロック信号を生成するものである。多相クロック生成回路270は、例えば、PLL(Phase Locked Loop)およびマルチプレクサなどにより、位相の異なるN個のクロック信号を生成する。これらのクロック信号は、内部クロック信号CLKより周波数の大きな信号であり、例えば、内部クロック信号CLKを逓倍することにより生成される。
多相クロック生成回路270は、位相制御信号に従ってN個のクロック信号のいずれかをマルチプレクサなどにより受信クロック信号RxCLKとして選択し、パラレル・シリアル変換部265へ送信する。また、多相クロック生成回路270は、所定の位相の送信クロック信号TxCLKを生成し、パラレル・シリアル変換部264に供給するとともに、参照すべきリファレンスクロック信号として不揮発性メモリ300へ送信する。このリファレンスクロック信号やライトデータは、不揮発性メモリ300への送信において、同程度、遅延する。不揮発性メモリ300は、遅延したリファレンスクロック信号に同期してリードデータを送信するため、リードデータの受信においてリファレンスクロック信号の伝搬遅延に、さらにリードデータの伝搬遅延が加わる。位相制御部283は、これらの遅延分を、受信クロック信号RxCLKの位相の制御により、調整する。なお、送信クロック信号をリファレンスクロック信号としているが、送信クロックとリファレンスクロックは別々に多相クロック生成回路270から供給されてもよい。また、送信クロック信号とリファレンスクロック信号の位相を別々に調整することができる構成であってもよい。
なお、PLLおよびマルチプレクサ以外の構成により、多相クロック生成回路270を実現することもできる。例えば、複数の位相の異なる入力クロック信号を混合して、それらと異なる位相の出力クロック信号を生成するフェイズミキサーを用いて多相クロック生成回路270を実現してもよい。
[不揮発性メモリの構成例]
図21は、第2の実施の形態における不揮発性メモリ300の一構成例を示すブロック図である。第2の実施の形態の不揮発性メモリ300の構成は、インピーダンス調整部310を備えない点以外は第1の実施の形態と同様である。
図22は、第2の実施の形態におけるメモリインターフェース400の一構成例を示すブロック図である。第2の実施の形態のメモリインターフェース400は、オリジナルバッファ回路410およびレプリカバッファ回路432の代わりに、バッファ回路460を備える点において第1の実施の形態と異なる。
バッファ回路460は、レシーバ461およびドライバ462を備える。これらの構成は、第1の実施の形態におけるメモリコントローラ200側のドライバ268およびレシーバ269と同様である。
また、パラレル・シリアル変換部453は、リファレンスクロック信号(送信クロック信号TxCLK)に同期して、シリアルデータをライトデータWD'に変換する。また、パラレル・シリアル変換部454は、リファレンスクロック信号(送信クロック信号TxCLK)に同期して、リードデータRD'から変換したシリアルデータを順に送信する。
また、シーケンサ455は、コマンドが位相調整コマンドPHCALである場合には、入出力制御信号IOCtrlによりバッファ回路460を制御して、送信されたテストデータを書き込ませずに、そのまま帰還させる。
なお、不揮発性メモリ300は、位相調整コマンドPHCALに従ってループバックを行っているが、この構成に限定されない。例えば、メモリコントローラ200が位相調整コマンドとともにループバックコマンドを発行し、そのループバックコマンドに従って不揮発性メモリ300がループバックを行う構成としてもよい。
[メモリコントローラの動作例]
図23は、第2の実施の形態におけるメモリコントローラ200の動作の一例を示すフローチャートである。第2の実施の形態のメモリコントローラ200の動作は、ステップS901およびS902の代わりにステップS906およびS908を実行する点において第1の実施の形態と異なる。
電源が投入されると、メモリコントローラ200は、位相調整コマンドPHCALを発行する(ステップS906)。そして、メモリコントローラ200は、受信クロック信号の位相の調整を行う(ステップS908)。ステップS908の後、メモリコントローラ200は、ステップS903乃至S905の処理を実行する。
図24は、第2の実施の形態における調整処理の一例を示すフローチャートである。メモリコントローラ200は、位相調整コマンドを発行可能なタイミングであるか否かを判断する(ステップS921)。このタイミングは、例えば、リードデータの全ての送信が完了するときに位相の調整が開始されるようなタイミングである。発行可能なタイミングが経過していなければ(ステップS921:No)、メモリコントローラ200はステップS921に戻る。
一方、発行可能なタイミングであれば(ステップS921:Yes)、メモリコントローラ200は、位相調整コマンドを発行する(ステップS924)。そして、メモリコントローラ200は、受信クロックの位相の調整処理を実行する(ステップS926)。ステップS926の後、メモリコントローラ200は調整処理を終了する。
[不揮発性メモリの動作例]
図25は、第2の実施の形態における不揮発性メモリ300の動作の一例を示すフローチャートである。第2の実施の形態の不揮発性メモリ300の動作は、ステップS952およびS953の代わりにステップS955およびS956を実行する点において第1の実施の形態と異なる。
不揮発性メモリ300は、コマンドを受信したのであれば(ステップS951:Yes)、そのコマンドが位相調整コマンドであるか否かを判断する(ステップS955)。位相調整コマンドであれば(ステップS955:Yes)、不揮発性メモリ300は、テストデータのループバックを行う(ステップS956)。
位相調整コマンドでなければ(ステップS955:No)、不揮発性メモリ300は、ステップS954を実行する。ステップS954またはS956の後、不揮発性メモリ300は、ステップS951に戻る。
図26は、第2の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
メモリコントローラ200における位相調整コマンド発行部281は、3つ目のリードデータRD'の転送が完了した後に、位相の調整が開始されるようなタイミングにおいて、位相調整開始コマンドを発行する。
メモリコントローラ200における位相制御部283は、位相調整コマンドに従って、受信クロック信号の位相の調整処理を開始する。
このように、第2の実施の形態によれば、メモリコントローラ200は、誤りが生じると訂正処理を実行し、また、位相の調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ200と不揮発性メモリ300との間の通信速度が向上する。
[第1の変形例]
第2の実施の形態では、メモリコントローラ200は、リードデータの受信クロックの位相のみを調整していたが、ライトデータの送信クロック信号の位相をさらに調整してもよい。第2の実施の形態の第1の変形例のメモリコントローラ200は、ライトデータの送信クロック信号の位相をさらに調整する点において第2の実施の形態と異なる。
第1の変形例の位相制御部283は、送信クロック信号の位相を位相制御信号により制御し、次に、受信クロック信号の位相を位相制御信号により制御する。なお、位相制御部283は、送信クロック信号の位相の次に受信クロック信号の位相を制御しているが、逆に、受信クロック信号の位相の次に送信クロック信号の位相を制御してもよい。さらにデータ線が複数ある場合には、位相制御部283は、各データ線の送信クロックを独立に位相制御してもよい。例えば、リファレンスクロックのメモリインターフェースへの到達タイミングに合わせるように複数のデータの送出タイミングを調整する方法でもよい。
第1の変形例の多相クロック生成回路は、位相制御信号に従って受信クロック信号RxCLKを生成するとともに、位相制御信号に従って送信クロック信号TxCLKをさらに生成する点において、第2の実施の形態と異なる。
[メモリコントローラの動作例]
図27は、第2の実施の形態の第1の変形例におけるメモリコントローラ200の動作の一例を示すフローチャートである。第1の変形例のメモリコントローラ200の動作は、ステップS907をさらに実行する点において第1の実施の形態と異なる。
位相調整コマンドを発行すると(ステップS906)、メモリコントローラ200は、送信クロック信号の位相の調整を行う(ステップS907)。そして、メモリコントローラ200は、受信クロック信号の位相の調整を行う(ステップS908)。ステップS908の後に、メモリコントローラ200は、ステップS903乃至S905を実行する。
図28は、第2の実施の形態の変形例における調整処理の一例を示すフローチャートである。変形例の調整処理は、ステップS925をさらに実行する点において第2の実施の形態と異なる。
位相調整コマンドを発行すると(ステップS924)、メモリコントローラ200は、送信クロックの位相の調整処理を実行する(ステップS925)。そして、メモリコントローラ200は、受信クロックの位相の調整処理を実行する(ステップS926)。ステップS926の後、メモリコントローラ200は調整処理を終了する。
このように、第1の変形例によれば、メモリコントローラ200は、受信クロック信号の位相に加えて送信クロック信号の位相も調整するため、受信クロック信号の位相のみを調整する場合よりも柔軟性のある位相調整を行うことができる。
[第2の変形例]
第2の実施の形態では、メモリコントローラ200のみが位相の調整を行っていたが、不揮発性メモリ300も位相の調整を行ってもよい。第2の変形例のメモリシステムは、メモリコントローラ200および不揮発性メモリ300の両方が位相の調整を行う点において第2の実施の形態と異なる。
[不揮発性メモリの構成例]
図29は、第2の変形例の不揮発性メモリ300の一構成例を示すブロック図である。第2の変形例の不揮発性メモリ300の構成は、インピーダンス調整部310の代わりに、位相調整部315を備える点において第1の実施の形態と異なる。位相調整部315の構成は、メモリコントローラ200側の位相調整部280と同様である。また、第2の変形例のメモリインターフェース400は、メモリコントローラ200側の多相クロック生成回路270と同様の回路をさらに備える点において第1の実施の形態と異なる。
ここで、エンベデッドクロック方式では、図示はしないが、不揮発性メモリ300側において、重畳されたクロックとデータを分離する再生するためのクロック・データ・リカバリ回路がさらに必要になる。不揮発性メモリ300側におけるタイミング調整は、この再生されたデータまたは再生されたクロックに対して行うことになる。このように本発明の主旨を逸脱しない範囲で変更が可能である。
このように、第2の変形例によれば、メモリコントローラ200に加えて、不揮発性メモリ300も位相の調整を行うため、メモリコントローラ200のみが調整する場合よりも転送エラーを低減することができる。
[第3の変形例]
第2の実施の形態では、メモリシステムは、データ線において送受信するデータの転送クロックの位相を調整していたが、他の信号の位相を調整することもできる。例えば、メモリシステムは、ストローブ信号などの制御信号の位相を調整してもよい。ここで、ストローブ信号は、レシーバがデータを受け取るタイミングを制御するための信号である。第3の変形例のメモリシステムは、ストローブ信号の位相を調整する点において第2の実施の形態と異なる。
図30は、第3の変形例の制御インターフェース260の一構成例を示すブロック図である。第3の変形例の制御インターフェース260は、ストローブ信号送受信回路271と、パラレル・シリアル変換部271および272と、バッファ回路274とをさらに備える点において第2の実施の形態と異なる。
ストローブ信号送受信回路271は、ストローブ信号を送受信するものである。このストローブ信号送受信回路271は、位相制御信号により指示された位相のストローブ信号を生成する。また、ストローブ信号生成回路271は、不揮発性メモリ300へのデータの送信時においてストローブ信号を生成し、パラレル・シリアル変換部272およびバッファ回路274を介して不揮発性メモリ300に送信する。一方、不揮発性メモリ300からのデータの受信時においてストローブ信号生成回路271は、パラレル・シリアル変換部273およびバッファ回路274を介して、不揮発性メモリ300からのストローブ信号を受信する。不揮発性メモリ300からのデータ(リードデータなど)の受信のタイミングは、このストローブ信号により制御される。
パラレル・シリアル変換部272は、メモリコントローラから送信されるストローブ信号を、送信クロック信号TxCLK(リファレンスクロック信号)に同期してシリアル信号に変換し、バッファ回路274に供給するものである。パラレル・シリアル変換部273は、不揮発性メモリ300からのシリアル信号を、受信クロック信号RxCLKに同期してストローブ信号に変換し、ストローブ信号送受信回路271に供給するものである。バッファ回路274は、ドライバ275およびレシーバ276を備える。これらのドライバ275およびレシーバ276の構成は、ドライバ268およびレシーバ269と同様である。
ストローブ信号送受信回路271等を設けることにより、リード時などにおける厳しいタイミング条件が緩和され、メモリシステムにおける基板やLSI(Large Scale Integration)の設計が容易となる。なお、メモリコントローラ200に加えて、不揮発性メモリ300もストローブ信号の位相を調整することもできる。また、ストローブ信号線206に、パラレル・シリアル変換部およびバッファ回路をさらに接続してもよい。また、メモリシステムは、ストローブ信号以外の制御信号の位相を調整することもできる。
また、メモリシステムは、送信クロック信号や受信クロック信号の位相を調整することによりデータの伝送タイミングや制御信号の位相を調整しているが、この構成に限定されない。例えば、メモリシステムは、信号線にバッファ等を挿入することによりデータや制御信号を遅延させる遅延回路を備えてもよい。その場合、メモリコントローラ200または不揮発性回路300は、その遅延回路を制御することにより、リファレンスクロック信号に対して、データの伝送タイミングや制御信号の位相を調整する。
このように、第3の変形例によれば、メモリコントローラ200は、ストローブ信号の位相を調整するため、ストローブ信号によりデータの送受信を制御するメモリシステムにおいて、転送エラーを低減することができる。
<3.第3の実施の形態>
[メモリコントローラの動作例]
第1の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インピーダンスの調整に加えて、インターフェースの転送クロックの位相の調整をさらに行ってもよい。第3の実施の形態のメモリシステムは、誤り検出時に、インピーダンスと転送クロックの位相との両方を調整する点において第1の実施の形態と異なる。
第3の実施の形態のメモリコントローラ200は、第2の実施の形態の位相調整部280をさらに備える点において第1の実施の形態と異なる。
第3の実施の形態の位相調整部280は、インピーダンス調整コマンドの発行後、インピーダンスの調整が終了してから、位相の調整が開始されるようなタイミングで、位相調整コマンドを発行する。具体的には、最後のリードコマンドが発行されたときから、T−T+T+Tの期間が経過したときに、位相調整コマンドを発行する。
また、第3の実施の形態の制御インターフェース260の構成は、第2の実施の形態の制御インターフェース260と同様である。
[メモリコントローラの動作例]
図31は、第3の実施の形態におけるメモリコントローラ200の動作の一例を示すフローチャートである。第3の実施の形態のメモリコントローラ200の動作は、ステップS902の後に、第2の実施の形態のステップS906およびS908をさらに実行する点以外は、第1の実施の形態と同様である。
図32は、第3の実施の形態における調整処理の一例を示すフローチャートである。第3の実施の形態の調整処理は、ステップS923の後に、第2の実施の形態のステップS924およびS926をさらに実行する点以外は、第1の実施の形態と同様である。
[不揮発性メモリの動作例]
図33は、第3の実施の形態における不揮発性メモリ300の動作の一例を示すフローチャートである。第3の実施の形態の不揮発性メモリ300は、インピーダンス調整コマンドでない場合(ステップS952:No)またはステップS953の後に、ステップS955、S956およびS954をさらに実行する。
このように、本技術の第3の実施の形態によれば、メモリコントローラ200は、誤りが生じると訂正処理を実行し、また、位相およびインピーダンスの調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ200と不揮発性メモリ300との間の通信速度が向上する。
<4.第4の実施の形態>
第1の実施の形態では、メモリコントローラ200は、訂正したリードデータをホストコンピュータ100へ送信していた。しかし、その訂正したリードデータを、読み出したアドレスに書き戻すリフレッシュ処理を実行することにより、書き戻されたデータの信頼性が向上する。第4の実施の形態のメモリコントローラ200は、リフレッシュ処理をさらに実行する点において第1の実施の形態と異なる。
[メモリコントローラの構成例]
図34は、第4の実施の形態におけるメモリコントローラ200の一構成例を示すブロック図である。第4の実施の形態のメモリコントローラ200の構成は、リフレッシュ処理部290をさらに備える点において第1の実施の形態と異なる。
リフレッシュ処理部290は、リフレッシュ処理を実行するものである。このリフレッシュ処理部290は、発行されたリードコマンドRCMDの各々を保持しておく。そして、リフレッシュ処理部290は、誤り訂正部240から、訂正されたリードデータRDを受け取る。リフレッシュ処理部290は、保持しておいたリードコマンドRCMDに基づいて、リードデータRDが読み出されたアドレスを指定したライトコマンドWCMDを再発行する。そして、リフレッシュ処理部290は、訂正されたリードデータRDをライトデータWDとしてライトコマンドWCMDとともに制御インターフェース260へ供給する。ライトコマンドWCMDの再発行のタイミングは、式1などにより求められる。これにより、訂正されたリードデータRDが、そのデータが読み出されたアドレスに書き戻される。
[メモリコントローラの動作例]
図35は、第4の実施の形態におけるリード処理の一例を示すフローチャートである。第4の実施の形態のリード処理は、ステップS934をさらに実行する点において第1の実施の形態と異なる。メモリコントローラ200は、調整処理(ステップS920)および訂正処理(ステップS917)の両方が終了すると、訂正したデータの書戻しを行う(ステップS934)。誤りがなかった場合(ステップS912:No)、または、ステップS934の後、メモリコントローラ200は、リードデータをホストシステムへ送信し、リード処理を終了する。
図36は、第4の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
メモリコントローラ200におけるリフレッシュ処理部290は、訂正処理および調整処理が完了した後に、リフレッシュ処理が開始されるタイミングでライトコマンドWCMDを再発行する。訂正されたリードデータRDは、ライトデータWDとしてデータ線208を介して不揮発性メモリ300へ供給され、読み出されたアドレスに書き戻される。
このように、第4の実施の形態によれば、メモリコントローラ200は、訂正したリードデータを、そのデータが読み出されたアドレスに書き戻すため、データの信頼性を向上させることができる。
<5.第5の実施の形態>
第4の実施の形態では、パリティにより訂正不可能な個数の誤りが生じないことを前提としていたが、そのような個数の誤りが生じる場合もある。この場合、訂正不可能なリードデータを再度読み出すリトライ処理を行うことにより、誤りの個数が低減させることができる。第5の実施の形態のメモリコントローラ200は、リトライ処理をさらに実行する点において第4の実施の形態と異なる。
[メモリコントローラの構成例]
図37は、第5の実施の形態におけるメモリコントローラ200の一構成例を示すブロック図である。第5の実施の形態のメモリコントローラ200は、リトライ処理部291をさらに備える点において第4の実施の形態と異なる。
リトライ処理部291は、リトライ処理を実行するものである。このリトライ処理部291は、発行されたリードコマンドRCMDの各々を保持しておく。リトライ処理部291は、誤り検出部230から、リードデータにおいて検出されたエラー数を受け取る。リトライ処理部291は、エラー数が、ECCの誤り訂正能力以下であるか否かを判断する。
ここで、誤り訂正能力は、ECCからなる符号の最小ハミング距離dminにより決定される。符号の最小ハミング距離dminは、その符号に属する任意の異なる符号語間のハミング距離の最小値である。2t+1≦dminを満たすt(tは整数)の最大値をtmaxとすると、パリティにより、tmax個までの符号要素を訂正することができる。この規則は、限界距離復号則と呼ばれる。
エラー数が誤り訂正能力tmaxを超える場合には、リトライ処理部291は、保持しておいたリードコマンドRCMDのうち、誤りが検出されたリードデータRDに対応するコマンドを制御インターフェース260に供給する。このリトライ処理は、リトライ回数が一定回数に達するまで、訂正不可能な個数の誤りが生じるたびに繰り返し実行される。
なお、リトライ処理部291は、リトライ処理において実行したコマンドをホストコンピュータ100に通知してもよい。ホストコンピュータ100は、通知されたコマンドを問題のある可能性のコマンドとして扱い、実行中の処理の中断などの所定の処理を実行する。
また、第5の実施の形態の誤り訂正部240は、エラー数が誤り訂正能力tmaxを超える場合には、誤りの訂正処理を実行しない。一方、インピーダンス調整コマンド発行部250は、エラー数に関わらず、誤り検出時にインピーダンス調整コマンドを発行する。
また、第5の実施の形態のリフレッシュ処理部290は、訂正された誤りの個数である訂正数を誤り訂正部240から、さらに受け取る。リフレッシュ処理部290は、訂正数が所定の閾値Th2を超える場合に、リフレッシュ処理を実行する。ここで、閾値Th2には、ECCの誤り訂正能力未満の値が設定される。
[メモリコントローラの動作例]
図38は、第5の実施の形態におけるリード処理の一例を示すフローチャートである。第5の実施の形態のリード処理は、ステップS914、S931、S932、S933、S934、S935およびS940をさらに実行する点において第4の実施の形態と異なる。
誤りが生じた場合には(ステップS912:Yes)、メモリコントローラ200は、誤りの個数を取得し(ステップS914)、訂正可能であるか否かを判断する(ステップS931)。
訂正可能である場合には(ステップS931:Yes)、メモリコントローラ200は、調整処理(ステップS920)および訂正処理(ステップS917)を並列に実行する。
一方、訂正不可能である場合には(ステップS931:No)、メモリコントローラ200は、リトライ回数が一定回数に満たないか否かを判断する(ステップS932)。リトライ回数が一定回数に満たない場合には、メモリコントローラ200は、リトライ処理を実行する(ステップS940)。リトライ回数が一定回数以上である場合には(ステップS932:No)、メモリコントローラ200は、リードエラーを設定したステータスを生成してホストコンピュータ100へ送信する。このステータスには、リードエラーがECC訂正不能によるエラーであること、エラーが発生したコマンドの種類、および、コマンドに係るアドレスなどが含まれる。このアドレスは、論理アドレスと物理アドレスとの変換をメモリコントローラ200が行う場合には論理アドレスであり、そうでない場合には物理アドレスである。ステップS935の後、メモリコントローラ200は、リード処理を終了する。
また、調整処理(ステップS920)および訂正処理(ステップS917)の両方が実行された後、メモリコントローラ200は、訂正数が閾値Th2を超えたか否かを判断する(ステップS933)。訂正数が閾値Th2を超えた場合には(ステップS933:Yes)、メモリコントローラ200は、訂正したデータの書戻しを行う(ステップS934)。
誤りが生じなかった場合(ステップS912:No)、訂正数が閾値Th2以下である場合(ステップS933:No)、または、ステップS934の後、メモリコントローラ200は、リードデータをホストコンピュータ100へ送信してリード処理を終了する。
図39は、第5の実施の形態におけるリトライ処理の一例を示すフローチャートである。メモリコントローラ200は、インピーダンス調整コマンドを発行可能なタイミングであるか否かを判断する(ステップS941)。発行可能なタイミングが経過していなければ(ステップS941:No)、メモリコントローラ200はステップS941に戻る。
一方、発行可能なタイミングであれば(ステップS941:Yes)、メモリコントローラ200は、インピーダンス調整コマンドを発行する(ステップS942)。そして、メモリコントローラ200は、一定サイクルが経過したか否かを判断する(ステップS943)。一定サイクルが経過していなければ(ステップS943:No)、メモリコントローラ200はステップS943に戻る。一定サイクルが経過したのであれば(ステップS943:Yes)、メモリコントローラ200はリードコマンドを再発行する(ステップS946)。ステップS946の後、メモリコントローラ200は、リトライ処理を終了する。
このように、本技術の第5の実施の形態によれば、メモリコントローラ200は、訂正不可能であれば、インピーダンスを調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を高くすることができる。
[第1の変形例]
第5の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インターフェースの転送クロックの位相を調整してもよい。第1の変形例のメモリシステムは、誤り検出時に転送クロックの位相を調整する点において第5の実施の形態と異なる。
第1の変形例のメモリコントローラ200の動作は、図38に例示した第5の実施の形態のメモリコントローラ200の動作と同様である。また、第1の変形例の調整処理は、第2の実施の形態と同様である。
[メモリコントローラの動作例]
図40は、第5の実施の形態の第1の変形例におけるリトライ処理の一例を示すフローチャートである。第1の変形例のリトライ処理は、ステップS942およびS943の代わりに、ステップS944およびS945を実行する点において第5の実施の形態と異なる。
発行可能なタイミングであれば(ステップS941:Yes)、メモリコントローラ200は、位相調整コマンドを発行する(ステップS944)。そして、メモリコントローラ200は、受信クロック信号の位相の調整処理を実行し(ステップS945)、ステップS946を実行する。
このように、第1の変形例によれば、メモリコントローラ200は、訂正不可能であれば、位相を調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を向上させることができる。
[第2の変形例]
第5の実施の形態では、メモリシステムは、誤り検出時にインピーダンスのみを調整していたが、インピーダンスおよび位相の両方を調整してもよい。第2の変形例のメモリシステムは、誤り検出時にインピーダンスおよび位相の両方を調整する点において第5の実施の形態と異なる。
第2の変形例のメモリコントローラ200の動作は、図38に例示した第5の実施の形態のメモリコントローラ200の動作と同様である。また、第2の変形例の調整処理は、第3の実施の形態と同様である。
[メモリコントローラの動作例]
図41は、第5の実施の形態の第2の変形例におけるリトライ処理の一例を示すフローチャートである。第2の変形例のリトライ処理は、ステップS943の後に、第1の変形例のステップS944およびS945をさらに実行する点において第5の実施の形態と異なる。
このように、第2の変形例によれば、メモリコントローラ200は、訂正不可能であれば、位相およびインピーダンスを調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を向上させることができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するインターフェース制御回路。
(2)前記調整制御部は、前記調整処理を前記誤り訂正処理が実行されている間に開始させる前記(1)記載のインターフェース制御回路。
(3)前記インターフェースは、
前記誤り訂正符号化されたデータを送信する送信回路と、
前記誤り訂正符号化されたデータを受信する受信回路とを含み、
前記調整制御部は、前記送信回路と前記受信回路とのインピーダンスを整合する処理を前記調整処理として開始させる前記(1)または(2)記載のインターフェース制御回路。
(4)前記調整制御部は、前記データの伝送タイミングを調整する処理を前記調整処理として開始させる前記(1)から(3)のいずれかに記載のインターフェース制御回路。
(5)前記調整制御部の制御に従って前記調整処理を実行する調整部をさらに具備する前記(4)記載のインターフェース制御回路。
(6)前記調整処理は、リファレンスクロック信号を基準として前記伝送タイミングを調整する処理である前記(4)または(5)に記載のインターフェース制御回路。
(7)前記調整制御部の制御に従って前記伝送タイミングを遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記伝送タイミングを調整する処理である前記(4)から(6)のいずれかに記載のインターフェース制御回路。
(8)前記調整処理は、前記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより前記伝送タイミングを調整する処理である前記(4)から(7)のいずれかに記載のインターフェース制御回路。
(9)前記調整制御部の制御に従って前記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記制御信号の位相を調整する処理である前記(4)から(8)のいずれかに記載のインターフェース制御回路。
(10)前記インターフェースは、
前記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、
前記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、
前記調整処理は、前記送信クロック信号および前記受信クロック信号の少なくとも一方の位相を調整することにより前記伝送タイミングを調整する処理である前記(4)から(9)のいずれかに記載のインターフェース制御回路。
(11)前記調整処理は、前記送信クロック信号および前記受信クロック信号の一方を基準として他方の位相を調整することにより前記伝送タイミングを調整する処理である前記(10)記載のインターフェース制御回路。
(12)前記データは、メモリセルから読み出されたリードデータを含み、
前記送信クロック信号は、前記リードデータを送信するためのリードデータ送信クロック信号を含み、
前記受信クロック信号は、前記リードデータを受信するためのリードデータ受信クロック信号を含み、
前記調整処理は、前記リードデータ送信クロック信号および前記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む前記(9)または(11)に記載のインターフェース制御回路。
(13)前記データは、メモリセルに書き込まれるライトデータを含み、
前記送信クロック信号は、前記ライトデータを送信するためのライトデータ送信クロック信号を含み、
前記受信クロック信号は、前記ライトデータを受信するためのライトデータ受信クロック信号を含み、
前記調整処理は、前記ライトデータ送信クロック信号および前記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む前記(10)から(12)のいずれかに記載のインターフェース制御回路。
(14)前記調整処理は、前記誤り訂正符号化されたデータの伝送タイミングを基準として前記位相を調整する処理である前記(10)から(11)のいずれかに記載のインターフェース制御回路。
(15)前記調整制御部は、
所定のテストデータを生成するテストデータ生成部と、
前記テストデータを前記インターフェースに送信させるとともに帰還させて前記送信させたテストデータと前記帰還したテストデータとが一致するか否かに基づいて前記位相を調整する処理を前記調整処理として開始させる位相制御部を備える前記(14)に記載のインターフェース制御回路。
(16)前記インターフェースは、前記データを伝送するための複数のデータ線を含む前記(1)から(15)のいずれかに記載のインターフェース制御回路。
(17)前記調整処理は、前記データ線ごとに前記伝送特性を調整する処理である前記(16)に記載のインターフェース制御回路。
(18)前記データ線の各々は、複数のグループのいずれかに属し、
前記調整処理は、前記グループごとに前記伝送特性を調整する処理である前記(16)または(17)に記載のインターフェース制御回路。
(19)前記調整制御部は、前記データにおいて所定の閾値を超える個数の前記誤りが生じた場合には前記調整処理を開始させる前記(1)から(18)のいずれかに記載のインターフェース制御回路。
(20)前記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行するリフレッシュ処理部をさらに具備する前記(1)から(19)のいずれかに記載のインターフェース制御回路。
(21)前記リフレッシュ処理部は、前記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも前記訂正された誤りの個数が多い場合には前記リフレッシュ処理を実行する前記(20)記載のインターフェース制御回路。
(22)前記データにおいて前記誤り検出訂正符号の誤り訂正能力を超える個数の前記誤りが生じた場合には前記伝送特性を調整させた後に前記データおよび前記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備する前記(1)から(21)のいずれかに記載のインターフェース制御回路。
(23)前記リトライ処理部は、所定のコマンドを発行して前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記所定のコマンドをホストコンピュータに通知する前記(22)記載のインターフェース制御回路。
(24)前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記データが読み出されたアドレスをホストコンピュータに通知する前記(22)または(23)記載のインターフェース制御回路。
(25)前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記誤りが生じたことをホストコンピュータに通知する前記(22)から(24)のいずれかに記載のインターフェース制御回路。
(26)前記調整制御部は、前記インターフェース制御回路に電源が供給された場合または前記誤りが生じた場合には前記調整処理を開始させる前記(1)から(25)のいずれかに記載のインターフェース制御回路。
(27)前記データは、不揮発性のメモリセルから読み出されたデータである前記(1)から(26)のいずれかに記載のインターフェース制御回路。
(28)誤り訂正符号化されたデータを伝送するインターフェースと、
前記データに誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するメモリシステム。
(29)誤り検出部が、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出手順と、
誤り訂正部が、前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正手順と、
調整制御部が、前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御手順と
を具備するインターフェース制御回路の制御方法。
100 ホストコンピュータ
200 メモリコントローラ
210 ホストインターフェース
220 誤り検出訂正符号生成部
230 誤り検出部
240 誤り訂正部
250 インピーダンス調整コマンド発行部
260 制御インターフェース
261、455 シーケンサ
262、456 データバッファ
263、264、265、272、273、452、453、454 パラレル・シリアル変換部
266、267、274、451 バッファ回路
268、275、420、462 ドライバ
269、276、417、461 レシーバ
270 多相クロック生成回路
271 ストローブ信号送受信回路
280、315 位相調整部
281 位相調整コマンド発行部
282 テストデータ生成部
283 位相制御部
284 一致判定部
290 リフレッシュ処理部
291 リトライ処理部
300 不揮発性メモリ
310 インピーダンス調整部
311 ステートマシン
312 制御信号保持部
313 反転回数カウンタ
320 アクセス制御部
330 メモリセルアレイ
400 メモリインターフェース
410 オリジナルバッファ回路
412、413、418、420、422、423 トランジスタ
414、415、417、419 抵抗
411、425、433、437 プルアップ回路
416、426、438 プルダウン回路
431 外部端子
432 レプリカバッファ回路
436、439 コンパレータ
440 外部端子
460 バッファ回路

Claims (29)

  1. インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、
    前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
    前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
    を具備するインターフェース制御回路。
  2. 前記調整制御部は、前記調整処理を前記誤り訂正処理が実行されている間に開始させる請求項1記載のインターフェース制御回路。
  3. 前記インターフェースは、
    前記誤り訂正符号化されたデータを送信する送信回路と、
    前記誤り訂正符号化されたデータを受信する受信回路とを含み、
    前記調整制御部は、前記送信回路と前記受信回路とのインピーダンスを整合する処理を前記調整処理として開始させる請求項1記載のインターフェース制御回路。
  4. 前記調整制御部は、前記データの伝送タイミングを調整する処理を前記調整処理として開始させる請求項1記載のインターフェース制御回路。
  5. 前記調整制御部の制御に従って前記調整処理を実行する調整部をさらに具備する請求項4記載のインターフェース制御回路。
  6. 前記調整処理は、リファレンスクロック信号を基準として前記伝送タイミングを調整する処理である請求項4記載のインターフェース制御回路。
  7. 前記調整制御部の制御に従って前記伝送タイミングを遅延させる遅延回路をさらに具備し、
    前記調整処理は、前記遅延回路を制御することにより前記伝送タイミングを調整する処理である請求項4記載のインターフェース制御回路。
  8. 前記調整処理は、前記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより前記伝送タイミングを調整する処理である請求項4記載のインターフェース制御回路。
  9. 前記調整制御部の制御に従って前記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、
    前記調整処理は、前記遅延回路を制御することにより前記制御信号の位相を調整する処理である請求項4記載のインターフェース制御回路。
  10. 前記インターフェースは、
    前記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、
    前記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、
    前記調整処理は、前記送信クロック信号および前記受信クロック信号の少なくとも一方の位相を調整することにより前記伝送タイミングを調整する処理である請求項4記載のインターフェース制御回路。
  11. 前記調整処理は、前記送信クロック信号および前記受信クロック信号の一方を基準として他方の位相を調整することにより前記伝送タイミングを調整する処理である請求項10記載のインターフェース制御回路。
  12. 前記データは、メモリセルから読み出されたリードデータを含み、
    前記送信クロック信号は、前記リードデータを送信するためのリードデータ送信クロック信号を含み、
    前記受信クロック信号は、前記リードデータを受信するためのリードデータ受信クロック信号を含み、
    前記調整処理は、前記リードデータ送信クロック信号および前記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む請求項10記載のインターフェース制御回路。
  13. 前記データは、メモリセルに書き込まれるライトデータを含み、
    前記送信クロック信号は、前記ライトデータを送信するためのライトデータ送信クロック信号を含み、
    前記受信クロック信号は、前記ライトデータを受信するためのライトデータ受信クロック信号を含み、
    前記調整処理は、前記ライトデータ送信クロック信号および前記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む請求項10記載のインターフェース制御回路。
  14. 前記調整処理は、前記誤り訂正符号化されたデータの伝送タイミングを基準として前記位相を調整する処理である請求項10記載のインターフェース制御回路。
  15. 前記調整制御部は、
    所定のテストデータを生成するテストデータ生成部と、
    前記テストデータを前記インターフェースに送信させるとともに帰還させて前記送信させたテストデータと前記帰還したテストデータとが一致するか否かに基づいて前記位相を調整する処理を前記調整処理として開始させる位相制御部を備える請求項14記載のインターフェース制御回路。
  16. 前記インターフェースは、前記データを伝送するための複数のデータ線を含む請求項1記載のインターフェース制御回路。
  17. 前記調整処理は、前記データ線ごとに前記伝送特性を調整する処理である請求項16記載のインターフェース制御回路。
  18. 前記データ線の各々は、複数のグループのいずれかに属し、
    前記調整処理は、前記グループごとに前記伝送特性を調整する処理である請求項16記載のインターフェース制御回路。
  19. 前記調整制御部は、前記データにおいて所定の閾値を超える個数の前記誤りが生じた場合には前記調整処理を開始させる請求項1記載のインターフェース制御回路。
  20. 前記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行するリフレッシュ処理部をさらに具備する請求項1記載のインターフェース制御回路。
  21. 前記リフレッシュ処理部は、前記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも前記訂正された誤りの個数が多い場合には前記リフレッシュ処理を実行する請求項20記載のインターフェース制御回路。
  22. 前記データにおいて前記誤り検出訂正符号の誤り訂正能力を超える個数の前記誤りが生じた場合には前記伝送特性を調整させた後に前記データおよび前記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備する請求項1記載のインターフェース制御回路。
  23. 前記リトライ処理部は、所定のコマンドを発行して前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記所定のコマンドをホストコンピュータに通知する請求項22記載のインターフェース制御回路。
  24. 前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記データが読み出されたアドレスをホストコンピュータに通知する請求項22記載のインターフェース制御回路。
  25. 前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記誤りが生じたことをホストコンピュータに通知する請求項22記載のインターフェース制御回路。
  26. 前記調整制御部は、前記インターフェース制御回路に電源が供給された場合または前記誤りが生じた場合には前記調整処理を開始させる請求項1記載のインターフェース制御回路。
  27. 前記データは、不揮発性のメモリセルから読み出されたデータである請求項1記載のインターフェース制御回路。
  28. 誤り訂正符号化されたデータを伝送するインターフェースと、
    前記データに誤りが生じたか否かを検出する誤り検出部と、
    前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
    前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
    を具備するメモリシステム。
  29. 誤り検出部が、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出手順と、
    誤り訂正部が、前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正手順と、
    調整制御部が、前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御手順と
    を具備するインターフェース制御回路の制御方法。
JP2013123321A 2013-06-12 2013-06-12 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法 Pending JP2014241057A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013123321A JP2014241057A (ja) 2013-06-12 2013-06-12 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法
US14/271,732 US9792173B2 (en) 2013-06-12 2014-05-07 Interface control circuit, memory system, and method of controlling an interface control circuit
CN201410246991.1A CN104239243B (zh) 2013-06-12 2014-06-05 接口控制电路、存储系统和控制接口控制电路的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013123321A JP2014241057A (ja) 2013-06-12 2013-06-12 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法

Publications (1)

Publication Number Publication Date
JP2014241057A true JP2014241057A (ja) 2014-12-25

Family

ID=52020329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013123321A Pending JP2014241057A (ja) 2013-06-12 2013-06-12 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法

Country Status (3)

Country Link
US (1) US9792173B2 (ja)
JP (1) JP2014241057A (ja)
CN (1) CN104239243B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101872997B1 (ko) 2015-09-24 2018-07-02 퀄컴 인코포레이티드 조정 가능한 전압 및 종단을 갖는 메모리 인터페이스 및 사용 방법들
KR102317788B1 (ko) * 2021-05-14 2021-10-26 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US11482271B2 (en) * 2019-07-03 2022-10-25 Micron Technology, Inc. Memory with programmable die refresh stagger

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146601B2 (en) * 2013-06-12 2018-12-04 Everspin Technologies, Inc. Methods and devices for healing reset errors in a magnetic memory
US20150067444A1 (en) * 2013-09-04 2015-03-05 Kabushiki Kaisha Toshiba Semiconductor storage device and memory system
US10317436B2 (en) * 2015-06-06 2019-06-11 Apple Inc. Interface circuitry for bidirectional power connector
TWI590247B (zh) * 2015-08-27 2017-07-01 新唐科技股份有限公司 驅動電路
KR20170082066A (ko) * 2016-01-05 2017-07-13 에스케이하이닉스 주식회사 반도체시스템
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
JP6542148B2 (ja) * 2016-03-18 2019-07-10 株式会社東芝 情報処理装置、情報処理方法およびプログラム
KR20180023079A (ko) * 2016-08-23 2018-03-07 에스케이하이닉스 주식회사 반도체시스템
JP6784626B2 (ja) * 2017-03-24 2020-11-11 キヤノン株式会社 記録装置、制御方法、及びプログラム
JP7069936B2 (ja) * 2018-03-27 2022-05-18 富士通株式会社 送受信システム、データ受信装置、およびデータ受信方法
US11281603B2 (en) * 2018-08-03 2022-03-22 Kioxia Corporation Serial interface for semiconductor package
US11502813B2 (en) * 2020-04-09 2022-11-15 SK Hynix Inc. Clock generator circuit and integrated circuit including the same
US11675731B2 (en) * 2020-08-20 2023-06-13 Global Unichip Corporation Data protection system and method thereof for 3D semiconductor device
CN112835736B (zh) * 2021-01-22 2023-08-22 张立旭 一种通用型数据纠错方法及系统
CN113223434A (zh) * 2021-05-28 2021-08-06 上海天马微电子有限公司 发送模块、接收模块、接口调整方法、系统及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512201B2 (en) * 2005-06-14 2009-03-31 International Business Machines Corporation Multi-channel synchronization architecture
EP2153525B1 (en) * 2007-05-29 2017-04-05 Rambus Inc. Adjusting clock error across a circuit interface
JP2009100369A (ja) * 2007-10-18 2009-05-07 Toshiba Corp 誤り検出訂正回路、半導体メモリコントローラ、および誤り検出訂正方法
US8154901B1 (en) * 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
US8756486B2 (en) * 2008-07-02 2014-06-17 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
JP2010092306A (ja) * 2008-10-08 2010-04-22 Nec Electronics Corp データ処理装置
JP2011090361A (ja) * 2009-10-20 2011-05-06 Renesas Electronics Corp 位相キャリブレーション回路、メモリカード制御装置、及び位相キャリブレーション方法
US9069688B2 (en) * 2011-04-15 2015-06-30 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
KR101694804B1 (ko) * 2010-08-16 2017-01-11 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US8713404B2 (en) * 2011-07-01 2014-04-29 Apple Inc. Controller interface providing improved data reliability
US9176800B2 (en) * 2011-08-31 2015-11-03 Micron Technology, Inc. Memory refresh methods and apparatuses
US20130185612A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd. Flash memory system and read method of flash memory system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101872997B1 (ko) 2015-09-24 2018-07-02 퀄컴 인코포레이티드 조정 가능한 전압 및 종단을 갖는 메모리 인터페이스 및 사용 방법들
US10613613B2 (en) 2015-09-24 2020-04-07 Qualcomm Incorporated Memory interface with adjustable voltage and termination and methods of use
US11482271B2 (en) * 2019-07-03 2022-10-25 Micron Technology, Inc. Memory with programmable die refresh stagger
KR102317788B1 (ko) * 2021-05-14 2021-10-26 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US11899531B2 (en) 2021-05-14 2024-02-13 Samsung Electronics Co., Ltd. Storage device and operating method of storage controller

Also Published As

Publication number Publication date
CN104239243B (zh) 2018-08-07
US20140372791A1 (en) 2014-12-18
US9792173B2 (en) 2017-10-17
CN104239243A (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
JP2014241057A (ja) インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法
CN111406284B (zh) 用于存储器装置的写入操作的决策反馈均衡器调节
KR102393427B1 (ko) 반도체장치 및 반도체시스템
EP3249542B1 (en) Memory module, memory controller and associated control method for read training technique
US10388401B2 (en) Semiconductor device, semiconductor system, and method thereof
TWI729239B (zh) 半導體裝置
US10622036B2 (en) Semiconductor system
KR20180106494A (ko) 반도체장치
KR20180119072A (ko) 반도체장치
US10319462B2 (en) Semiconductor device and semiconductor system
KR102394727B1 (ko) 반도체시스템
CN114840137A (zh) 用于在动态随机存取存储器上执行写入训练的技术
US10319455B2 (en) Semiconductor device
US11031064B1 (en) Semiconductor devices
KR20190072144A (ko) 에러정정방법 및 이를 이용한 반도체장치
US10256795B1 (en) Pipelined latches to prevent metastability
KR20170130684A (ko) 반도체장치
US10290333B2 (en) Semiconductor device
US11599413B2 (en) Electronic system including error calculation circuit for performing error correction operation
US11705170B2 (en) Memory device related to performing a column operation
US11048602B2 (en) Electronic devices
US20230195564A1 (en) Circuit and Method for Reading ECC from Memory
KR102504176B1 (ko) 반도체장치
KR20170140931A (ko) 반도체장치 및 반도체시스템