(57)【要約】【課題】メモリコントローラとメモリとの間の通信速度を向上させる。【解決手段】インターフェース制御回路は、誤り検出部、誤り訂正部および調整制御部を具備する。インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤り検出部が、誤りが生じたか否かを検出する。誤りが生じた場合には、誤り訂正部が、誤りを訂正する誤り訂正処理を実行する。誤りが生じた場合には、調整制御部がインターフェースの伝送特性を調整する調整処理を開始させる。【選択図】図２
2014241057.tif 000002
【特許請求の範囲】
【請求項１】
インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するインターフェース制御回路。
【請求項２】
前記調整制御部は、前記調整処理を前記誤り訂正処理が実行されている間に開始させる請求項１記載のインターフェース制御回路。
【請求項３】
前記インターフェースは、
前記誤り訂正符号化されたデータを送信する送信回路と、
前記誤り訂正符号化されたデータを受信する受信回路とを含み、
前記調整制御部は、前記送信回路と前記受信回路とのインピーダンスを整合する処理を前記調整処理として開始させる請求項１記載のインターフェース制御回路。
【請求項４】
前記調整制御部は、前記データの伝送タイミングを調整する処理を前記調整処理として開始させる請求項１記載のインターフェース制御回路。
【請求項５】
前記調整制御部の制御に従って前記調整処理を実行する調整部をさらに具備する請求項４記載のインターフェース制御回路。
【請求項６】
前記調整処理は、リファレンスクロック信号を基準として前記伝送タイミングを調整する処理である請求項４記載のインターフェース制御回路。
【請求項７】
前記調整制御部の制御に従って前記伝送タイミングを遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記伝送タイミングを調整する処理である請求項４記載のインターフェース制御回路。
【請求項８】
前記調整処理は、前記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより前記伝送タイミングを調整する処理である請求項４記載のインターフェース制御回路。
【請求項９】
前記調整制御部の制御に従って前記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記制御信号の位相を調整する処理である請求項４記載のインターフェース制御回路。
【請求項１０】
前記インターフェースは、
前記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、
前記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、
前記調整処理は、前記送信クロック信号および前記受信クロック信号の少なくとも一方の位相を調整することにより前記伝送タイミングを調整する処理である請求項４記載のインターフェース制御回路。
【請求項１１】
前記調整処理は、前記送信クロック信号および前記受信クロック信号の一方を基準として他方の位相を調整することにより前記伝送タイミングを調整する処理である請求項１０記載のインターフェース制御回路。
【請求項１２】
前記データは、メモリセルから読み出されたリードデータを含み、
前記送信クロック信号は、前記リードデータを送信するためのリードデータ送信クロック信号を含み、
前記受信クロック信号は、前記リードデータを受信するためのリードデータ受信クロック信号を含み、
前記調整処理は、前記リードデータ送信クロック信号および前記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む請求項１０記載のインターフェース制御回路。
【請求項１３】
前記データは、メモリセルに書き込まれるライトデータを含み、
前記送信クロック信号は、前記ライトデータを送信するためのライトデータ送信クロック信号を含み、
前記受信クロック信号は、前記ライトデータを受信するためのライトデータ受信クロック信号を含み、
前記調整処理は、前記ライトデータ送信クロック信号および前記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む請求項１０記載のインターフェース制御回路。
【請求項１４】
前記調整処理は、前記誤り訂正符号化されたデータの伝送タイミングを基準として前記位相を調整する処理である請求項１０記載のインターフェース制御回路。
【請求項１５】
前記調整制御部は、
所定のテストデータを生成するテストデータ生成部と、
前記テストデータを前記インターフェースに送信させるとともに帰還させて前記送信させたテストデータと前記帰還したテストデータとが一致するか否かに基づいて前記位相を調整する処理を前記調整処理として開始させる位相制御部を備える請求項１４記載のインターフェース制御回路。
【請求項１６】
前記インターフェースは、前記データを伝送するための複数のデータ線を含む請求項１記載のインターフェース制御回路。
【請求項１７】
前記調整処理は、前記データ線ごとに前記伝送特性を調整する処理である請求項１６記載のインターフェース制御回路。
【請求項１８】
前記データ線の各々は、複数のグループのいずれかに属し、
前記調整処理は、前記グループごとに前記伝送特性を調整する処理である請求項１６記載のインターフェース制御回路。
【請求項１９】
前記調整制御部は、前記データにおいて所定の閾値を超える個数の前記誤りが生じた場合には前記調整処理を開始させる請求項１記載のインターフェース制御回路。
【請求項２０】
前記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行するリフレッシュ処理部をさらに具備する請求項１記載のインターフェース制御回路。
【請求項２１】
前記リフレッシュ処理部は、前記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも前記訂正された誤りの個数が多い場合には前記リフレッシュ処理を実行する請求項２０記載のインターフェース制御回路。
【請求項２２】
前記データにおいて前記誤り検出訂正符号の誤り訂正能力を超える個数の前記誤りが生じた場合には前記伝送特性を調整させた後に前記データおよび前記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備する請求項１記載のインターフェース制御回路。
【請求項２３】
前記リトライ処理部は、所定のコマンドを発行して前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記所定のコマンドをホストコンピュータに通知する請求項２２記載のインターフェース制御回路。
【請求項２４】
前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記データが読み出されたアドレスをホストコンピュータに通知する請求項２２記載のインターフェース制御回路。
【請求項２５】
前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記誤りが生じたことをホストコンピュータに通知する請求項２２記載のインターフェース制御回路。
【請求項２６】
前記調整制御部は、前記インターフェース制御回路に電源が供給された場合または前記誤りが生じた場合には前記調整処理を開始させる請求項１記載のインターフェース制御回路。
【請求項２７】
前記データは、不揮発性のメモリセルから読み出されたデータである請求項１記載のインターフェース制御回路。
【請求項２８】
誤り訂正符号化されたデータを伝送するインターフェースと、
前記データに誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するメモリシステム。
【請求項２９】
誤り検出部が、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出手順と、
誤り訂正部が、前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正手順と、
調整制御部が、前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御手順と
を具備するインターフェース制御回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法に関する。詳しくは、データの誤りの検出および訂正を行うインターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法に関する。
【背景技術】
【０００２】
従来より、情報処理システムにおいては、データを保持するためにメモリが用いられている。メモリは、不揮発性メモリと揮発性メモリとに分類することができ、不揮発性メモリとしては、ＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリが広く使用されている。また、揮発性メモリとしては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などが用いられている。
【０００３】
これらのメモリのうちＮＡＮＤ型フラッシュメモリやＤＲＡＭは、近年、微細化の限界が指摘されており、既存のメモリを代替するための次世代のメモリが積極的に提案および開発されている。次世代のメモリとしてはＲｅＲＡＭ（Resistive RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【０００４】
これらの次世代の不揮発性メモリの一つの特徴として、従来のＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリと比較してアクセス速度が高速であることが挙げられる。この高速性に対応するために、次世代メモリにおいては、ＤＲＡＭ等に用いられているＤＤＲ（Double-Data-Rate）インターフェースなどの高速インターフェースを用いる必要がある。標準化団体であるＪＥＤＥＣ（Joint Electron Device Engineering Council）においても、高速インターフェースを不揮発性メモリに適用するための新規格が提案および議論されている。具体的には、ＬＰＤＤＲ（Low-Power Double DataRate）２−ＮＶＭ（Non-Volatile Memory）やＬＰＤＤＲ４−ＮＶＭなどの新規格が提案等されている。
【０００５】
これらの新規格では、インターフェースにおける転送クロックの位相やインピーダンスの調整を行うことが求められている。これは、製造プロセスのばらつきや使用温度の変動等に起因して位相やインピーダンスが基準値と異なる値になると、インターフェースを介してデータを転送する際に転送エラーが生じる可能性が高くなるためである。例えば、ＤＲＡＭで広く採用されているＤＤＲ３インターフェースの規格では、インターフェースのインピーダンスの調整を行うために、ＺＱＣＡＬコマンドが用意されている（例えば、非特許文献１参照。）。この規格では、メモリ初期化直後において、メモリシステムが、ＺＱＣＡＬロングコマンドにより、インピーダンスの調整を行うことが求められる。また、メモリ初期化後において、ＺＱＣＡＬロングコマンドやＺＱＣＡＬショートコマンドにより、一定間隔で、メモリシステムがインピーダンスの調整を行うことが推奨されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】"JEDEC STANDARD DDR3 SDRAM Specification JESD79-3B"、JEDEC SOLID STTE TECHNOLOGY ASSOCIATION、２００８年４月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の従来技術では、メモリコントローラとメモリとの間の通信速度が低下するおそれがある。位相やインピーダンスの調整には一定の期間を要し、その期間内において、メモリおよびメモリコントローラは、インターフェースを介してデータを送受信することができない。このため、調整を定期的に行う構成では、調整の頻度が高くなるほど、データを送受信することができない期間が長くなって通信速度が低下してしまう。
【０００８】
調整の頻度が高いと、特に、不揮発性メモリにおいて通信速度が低下しやすい。ＤＲＡＭでは、定期的なリフレッシュに同期して調整を行うことにより、ある程度、通信速度の低下を抑制することができるが、不揮発性メモリではリフレッシュを定期的に行う必要がないためである。
【０００９】
本技術はこのような状況に鑑みて生み出されたものであり、メモリコントローラとメモリとの間の通信速度を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、上記誤りが生じた場合には上記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、上記誤りが生じた場合には上記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部とを具備するインターフェース制御回路、および、その制御方法である。これにより、誤りが生じた場合には調整処理が開始するという作用をもたらす。
【００１１】
また、この第１の側面において、上記調整制御部は、上記調整処理を上記誤り訂正処理が実行されている間に開始させてもよい。これにより、誤り訂正処理が実行されている間に調整処理が開始するという作用をもたらす。
【００１２】
また、この第１の側面において、上記インターフェースは、上記誤り訂正符号化されたデータを送信する送信回路と、上記誤り訂正符号化されたデータを受信する受信回路とを含み、上記調整制御部は、上記送信回路と上記受信回路とのインピーダンスを整合する処理を上記調整処理として開始させてもよい。これにより、送信回路と受信回路とのインピーダンスを整合する処理が調整処理として開始するという作用をもたらす。
【００１３】
また、この第１の側面において、上記調整制御部は、上記データの伝送タイミングを調整する処理を上記調整処理として開始させてもよい。これにより、データの伝送タイミングが調整されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記調整制御部の制御に従って上記調整処理を実行する調整部をさらに具備してもよい。これにより、調整制御部の制御に従って調整処理が実行されるという作用をもたらす。
【００１５】
また、この第１の側面において、上記調整処理は、リファレンスクロック信号を基準として上記伝送タイミングを調整する処理であってもよい。これにより、リファレンスクロック信号を基準として上記伝送タイミングが調整されるという作用をもたらす。
【００１６】
また、この第１の側面において、上記調整制御部の制御に従って上記伝送タイミングを遅延させる遅延回路をさらに具備し、上記調整処理は、上記遅延回路を制御することにより上記伝送タイミングを調整する処理であってもよい。これにより、遅延回路を制御することにより上記伝送タイミングが調整されるという作用をもたらす。
【００１７】
また、この第１の側面において、上記調整処理は、上記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、伝送タイミングを制御する制御信号のタイミングがリファレンスクロック信号を基準として調整されるという作用をもたらす。
【００１８】
また、この第１の側面において、上記調整制御部の制御に従って上記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、上記調整処理は、上記遅延回路を制御することにより上記制御信号の位相を調整する処理であってもよい。これにより、遅延回路を制御することにより制御信号の位相が調整されるという作用をもたらす。
【００１９】
また、この第１の側面において、上記インターフェースは、上記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、上記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、上記調整処理は、上記送信クロック信号および上記受信クロック信号の少なくとも一方の位相を調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、送信クロック信号および受信クロック信号の少なくとも一方の位相が調整されるという作用をもたらす。
【００２０】
また、この第１の側面において、上記調整処理は、上記送信クロック信号および上記受信クロック信号の一方を基準として他方の位相を調整することにより上記伝送タイミングを調整する処理であってもよい。これにより、送信クロック信号および受信クロック信号の一方を基準として他方の位相が調整されるという作用をもたらす。
【００２１】
また、この第１の側面において、上記データは、メモリセルから読み出されたリードデータを含み、上記送信クロック信号は、上記リードデータを送信するためのリードデータ送信クロック信号を含み、上記受信クロック信号は、上記リードデータを受信するためのリードデータ受信クロック信号を含み、上記調整処理は、上記リードデータ送信クロック信号および上記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含むものであってもよい。これにより、ライトデータ送信クロック信号およびライトデータ受信クロック信号の少なくとも一方の位相を調整する処理が開始するという作用をもたらす。
【００２２】
また、この第１の側面において、上記データは、メモリセルに書き込まれるライトデータを含み、上記送信クロック信号は、上記ライトデータを送信するためのライトデータ送信クロック信号を含み、上記受信クロック信号は、上記ライトデータを受信するためのライトデータ受信クロック信号を含み、上記調整処理は、上記ライトデータ送信クロック信号および上記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含むものであってもよい。これにより、ライトデータ送信クロック信号およびライトデータ受信クロック信号の少なくとも一方の位相を調整する処理が開始するという作用をもたらす。
【００２３】
また、この第１の側面において、上記調整処理は、上記誤り訂正符号化されたデータの伝送タイミングを基準として上記位相を調整する処理であってもよい。これにより、誤り訂正符号化されたデータの伝送タイミングを基準として位相が調整されるという作用をもたらす。
【００２４】
また、この第１の側面において、上記調整制御部は、所定のテストデータを生成するテストデータ生成部と、上記テストデータを上記インターフェースに送信させるとともに帰還させて上記送信させたテストデータと上記帰還したテストデータとが一致するか否かに基づいて上記位相を調整する処理を上記調整処理として開始させてもよい。これにより、送信させたテストデータと帰還したテストデータとが一致するか否かに基づいて位相が調整されるという作用をもたらす。
【００２５】
また、この第１の側面において、上記インターフェースは、上記データを伝送するための複数のデータ線を含むものであってもよい。これにより、複数のデータ線の伝送特性が調整されるという作用をもたらす。
【００２６】
また、この第１の側面において、上記調整処理は、上記データ線ごとに上記データの伝送タイミングを調整する処理であってもよい。これにより、データ線ごとに伝送特性が調整されるという作用をもたらす。
【００２７】
また、この第１の側面において、上記データ線の各々は、複数のグループのいずれかに属し、上記調整処理は、上記グループごとに上記伝送タイミングを調整する処理であってもよい。これにより、グループごとに伝送特性が調整されるという作用をもたらす。
【００２８】
また、この第１の側面において、上記調整制御部は、上記データにおいて所定の閾値を超える個数の上記誤りが生じた場合には上記調整処理を開始させてもよい。これにより、データにおいて所定の閾値を超える個数の誤りが生じた場合には調整処理が開始するという作用をもたらす。
【００２９】
また、この第１の側面において、上記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行してもよい。これにより、リフレッシュ処理が実行されるという作用をもたらす。
【００３０】
また、この第１の側面において、上記リフレッシュ処理部は、上記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも上記訂正された誤りの個数が多い場合には上記リフレッシュ処理を実行してもよい。これにより、誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも訂正された誤りの個数が多い場合にはリフレッシュ処理が実行されるという作用をもたらす。
また、この第１の側面において、上記データにおいて上記誤り検出訂正符号の誤り訂正能力を超える個数の上記誤りが生じた場合には上記伝送特性を調整させた後に上記データおよび上記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備してもよい。これにより、誤り検出訂正符号の誤り訂正能力を超える個数の誤りが生じた場合にはリトライ処理が実行されるという作用をもたらす。
【００３１】
また、この第１の側面において、上記リトライ処理部は、所定のコマンドを発行して上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記所定のコマンドをホストコンピュータに通知してもよい。これにより、再度発行されたコマンドがホストコンピュータに通知されるという作用をもたらす。
【００３２】
また、この第１の側面において、上記リトライ処理部は、上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記データが読み出されたアドレスをホストコンピュータに通知してもよい。これにより、アドレスがホストコンピュータに通知されるという作用をもたらす。
【００３３】
また、この第１の側面において、上記リトライ処理部は、上記データおよび上記誤り検出訂正符号を再度読み出すとともに上記誤りが生じたことをホストコンピュータに通知してもよい。これにより、誤りが生じたことをホストコンピュータに通知されるという作用をもたらす。
【００３４】
上記調整制御部は、上記インターフェース制御回路に電源が供給された場合または上記誤りが生じた場合には上記調整処理を開始させてもよい。これにより、インターフェース制御回路に電源が供給された場合または誤りが生じた場合に調整処理を開始するという作用をもたらす。
【００３５】
また、この第１の側面において、データは、不揮発性のメモリセルから読み出されたデータであってもよい。これにより、不揮発性のメモリセルから読み出されたデータの誤り訂正処理が実行されている間に調整処理が開始するという作用をもたらす。
【００３６】
また、本技術の第２の側面は、誤り訂正符号化されたデータを伝送するインターフェースと、上記データに誤りが生じたか否かを検出する誤り検出部と、上記誤りが生じた場合には上記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、上記誤りが生じた場合には上記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部とを具備するメモリシステムである。これにより、これにより、誤りが生じた場合には調整処理が開始するという作用をもたらす。
【発明の効果】
【００３７】
本技術によれば、メモリコントローラとメモリとの間の通信速度を向上させるこができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００３８】
【図１】第１の実施の形態におけるメモリシステムの一構成例を示すブロック図である。
【図２】第１の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３】第１の実施の形態における制御インターフェースの一構成例を示すブロック図である。
【図４】第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図５】第１の実施の形態におけるメモリインターフェースの一構成例を示すブロック図である。
【図６】第１の実施の形態におけるオリジナルバッファ回路の一構成例を示すブロック図である。
【図７】第１の実施の形態におけるレプリカバッファ回路の一構成例を示すブロック図である。
【図８】第１の実施の形態におけるインピーダンス調整部の一構成例を示すブロック図である。
【図９】第１の実施の形態における電源投入時のインピーダンスの制御方法の一例を示す図である。
【図１０】第１の実施の形態における誤り検出時のインピーダンスの制御方法の一例を示す図である。
【図１１】第１の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図１２】第１の実施の形態におけるリード処理の一例を示すフローチャートである。
【図１３】第１の実施の形態における調整処理の一例を示すフローチャートである。
【図１４】第１の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図１５】第１の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【図１６】第１の実施の形態の第１の変形例におけるメモリコントローラの動作の一例を示すフローチャートである。
【図１７】第１の実施の形態の第２の変形例における電源投入時のインピーダンスの制御方法の一例を示す図である。
【図１８】第２の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図１９】第２の実施の形態における位相調整部の一構成例を示すブロック図である。
【図２０】第２の実施の形態における制御インターフェースの一構成例を示すブロック図である。
【図２１】第２の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図２２】第２の実施の形態におけるメモリインターフェースの一構成例を示すブロック図である。
【図２３】第２の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図２４】第２の実施の形態における調整処理の一例を示すフローチャートである。
【図２５】第２の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図２６】第２の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【図２７】第２の実施の形態の第１の変形例におけるメモリコントローラの動作の一例を示すフローチャートである。
【図２８】第２の実施の形態の第１の変形例における調整処理の一例を示すフローチャートである。
【図２９】第２の実施の形態の第２の変形例における不揮発性メモリの一構成例を示すブロック図である。
【図３０】第２の実施の形態の第３の変形例における制御インターフェースの一構成例を示すブロック図である。
【図３１】第３の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図３２】第３の実施の形態における調整処理の一例を示すフローチャートである。
【図３３】第３の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図３４】第４の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３５】第４の実施の形態におけるリード処理の一例を示すフローチャートである。
【図３６】第４の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【図３７】第５の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３８】第５の実施の形態におけるリード処理の一例を示すフローチャートである。
【図３９】第５の実施の形態におけるリトライ処理の一例を示すフローチャートである。
【図４０】第５の実施の形態の第１の変形例におけるリトライ処理の一例を示すフローチャートである。
【図４１】第５の実施の形態の第２の変形例におけるリトライ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００３９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（誤り検出時にインピーダンスを調整する例）
２．第２の実施の形態（誤り検出時に位相を調整する例）
３．第３の実施の形態（誤り検出時にインピーダンスおよび位相を調整する例）
４．第４の実施の形態（誤り検出時にインピーダンスを調整してリフレッシュ処理を行う例）
５．第５の実施の形態（誤り検出時にインピーダンスを調整して再リードを行う例）
【００４０】
＜１．第１の実施の形態＞
［メモリシステムの構成例］
図１は、第１の実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ１００、メモリコントローラ２００および不揮発性メモリ３００を備える。
【００４１】
ホストコンピュータ１００は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ１００は、コマンド、論理アドレス、および、ライトデータを生成してメモリコントローラ２００に信号線１０９を介して送信する。また、ホストコンピュータ１００は、リードデータおよびステータスを、信号線１０９を介してメモリコントローラ２００から受信する。ここで、コマンドは、メモリシステムを制御するためのものであり、例えば、データのライト処理を指示するライトコマンドと、データのリード処理を指示するリードコマンドとを含む。論理アドレスは、ホストコンピュータ１００が定義したアドレス空間におけるアドレスである。ステータスは、コマンドの実行結果やメモリシステムの状況を通知する情報である。
【００４２】
メモリコントローラ２００は、不揮発性メモリ３００を制御するものである。このメモリコントローラ２００は、ホストコンピュータ１００から論理アドレスを受信すると、その論理アドレスを、不揮発性メモリ３００においてメモリセルに割り当てられた物理アドレスに変換する。そして、メモリコンローラ２００は、その物理アドレスを不揮発性メモリ３００に信号線２０９を介して送信する。
【００４３】
ここで、信号線２０９は、アドレスおよびコマンドを送信するためのコマンド／アドレス線と、データを送受信するためのデータ線とを含む。また、信号線２０９を介して、リファレンスクロック信号がメモリコントローラ２００から不揮発性メモリ３００へ送信される。クロック信号については後述する。なお、本実施形態では明示的にリファレンスクロックを独立した信号として記述したが、データ線にクロックを重畳した、エンベデット・クロック方式を用いる構成であってもよい。また、コマンド／アドレス線およびデータ線の代わりに、ＮＡＮＤフラッシュメモリなどにおいて使用される、アドレス、コマンドおよびデータなどを多重化（マルチプレックス）して送受信するインターフェースを用いてもよい。
【００４４】
メモリコントローラ２００は、ホストコンピュータ１００からライトコマンドおよびライトデータを受信すると、そのライトデータから誤り訂正符号（ＥＣＣ：Error Check and Correction Code）を生成する。例えば、ＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号や、ＲＳ（Reed-Solomon）符号がＥＣＣとして用いられる。メモリコントローラ２００は、生成したパリティをライトデータに付加し、ライトデータおよびパリティからなるＥＣＣを、データ線を介して不揮発性メモリ３００に送信する。ライトコマンドは、コマンド／アドレス線を介して送信される。
【００４５】
メモリコントローラ２００は、リードコマンド等をホストコンピュータ１００から受信すると、そのコマンドを解釈および翻訳し、翻訳したコマンドを不揮発性メモリ３００にコマンド／アドレス線を介して転送する。例えば、ホストコンピュータ１００からのリードコマンドは、メモリコントローラ２００のアクセス単位に基づいて、複数のコマンドに分割（すなわち、翻訳）される。そして、メモリコントローラ２００は、パリティが付加された（すなわち、誤り訂正符号化された）リードデータを不揮発性メモリ３００からデータ線を介して受信すると、そのパリティを使用してリードデータに誤りが生じたか否かを検出する。誤りが生じた場合には、メモリコントローラ２００は、パリティを使用してリードデータの誤りを訂正する。そして、メモリコントローラ２００は、訂正したリードデータをホストコンピュータ１００へ送信する。
【００４６】
また、誤りが生じた場合には、メモリコントローラ２００は、誤りの訂正処理の実行中において、メモリコントローラ２００と不揮発性メモリ３００との間のインターフェースの伝送特性の調整を行うための調整コマンドを発行する。例えば、インターフェースのインピーダンスを調整するためのインピーダンス調整コマンドが調整コマンドとして発行される。メモリコントローラ２００は、そのインピーダンス調整コマンドを不揮発性メモリ３００へコマンド／アドレス線を介して送信する。ここで、調整の対象となる「インターフェース」は、後述するメモリコントローラ２００側の制御インターフェース（２６０）と、後述する不揮発性メモリ側のメモリインターフェース（４００）と、データ線等の信号線とのうちの少なくとも１つを含む。
【００４７】
また、メモリコントローラ２００は、信号線２０９を介して不揮発性メモリ３００からステータスを受信し、必要に応じてステータスを更新してホストコンピュータ１００に送信する。
【００４８】
なお、メモリコントローラ２００は、特許請求の範囲に記載のインターフェース制御回路の一例である。
【００４９】
また、メモリコントローラ２００は、誤りが検出された場合にインピーダンス調整コマンド以外の調整コマンドを発行してもよい。例えば、メモリコントローラ２００は、インターフェースの転送クロックの位相（タイミング）を調整するための位相調整コマンドを発行してもよいし、位相調整コマンドおよびインピーダンス調整コマンドの両方を発行してもよい。
【００５０】
不揮発性メモリ３００は、メモリコントローラ２００の制御に従って、データを記憶するものである。この不揮発性メモリ３００は、メモリコントローラ２００からコマンド、アドレス、および、データを受信する。不揮発性メモリ３００はコマンドがライトコマンドである場合には、指定されたアドレスにデータを書き込み、リードコマンドである場合には、指定されたアドレスからデータを読み出す。そして、不揮発性メモリ３００は、ステータスを生成してメモリコントローラ２００に送信する。また、不揮発性メモリ３００は、読み出したデータをメモリコントローラ２００に送信する。
【００５１】
また、コマンドがインピーダンス調整コマンドである場合には、不揮発性メモリ３００は、インターフェースのインピーダンスの調整を行う。
【００５２】
なお、メモリシステムにおけるメモリは、不揮発性メモリに限定されず、揮発性メモリであってもよい。
【００５３】
また、メモリシステムにおいて、不揮発性メモリ３００がインピーダンスの調整を行う構成としているが、不揮発性メモリ３００の代わりにメモリコントローラ２００がインピーダンスの調整を行ってもよい。
【００５４】
また、メモリコントローラ２００が誤り検出、誤り訂正および調整コマンドの発行を行う構成としているが、この構成に限定されない。例えば、メモリコントローラ２００の代わりに、ホストコンピュータ１００が、誤り検出、誤り訂正および調整コマンドの発行を行ってもよい。
【００５５】
［メモリコントローラの構成例］
図２は、第１の実施の形態におけるメモリコントローラ２００の一構成例を示すブロック図である。このメモリコントローラ２００は、ホストインターフェース２１０、誤り検出訂正符号生成部２２０、誤り検出部２３０、誤り訂正部２４０、インピーダンス調整コマンド発行部２５０および制御インターフェース２６０を備える。
【００５６】
ホストインターフェース２１０は、ホストコンピュータ１００との間で、コマンド、アドレス、データおよびステータスを送受信するものである。ホストインターフェース２１０により受信されたコマンドは、解釈および翻訳されて制御インターフェース２６０に供給される。また、ホストインターフェース２１０により受信された論理アドレスは、物理アドレスに変換されて制御インターフェース２６０に供給される。なお、コマンドを解釈および翻訳するデコーダと、論理アドレスを物理アドレスに変換するアドレス変換部と、ステータスを生成するステータス生成部とは、図２において省略されている。
【００５７】
ホストインターフェース２１０は、ホストコンピュータ１００から受信したライトデータＷＤを誤り検出訂正符号生成部２２０に供給する。また、ホストインターフェース２１０は、誤り検出部２３０または誤り訂正部２４０からリードデータＲＤを受け取る。誤り検出部２３０において誤りが検出されていなければ、ホストインターフェース２１０は、パリティを除いたリードデータＲＤをホストコンピュータ１００へ送信する。一方、誤り検出部２３０において誤りが検出されていれば、ホストインターフェース２１０は、誤り訂正部２４０により誤りが訂正された後のリードデータＲＤをホストコンピュータ１００へ送信する。
【００５８】
誤り検出訂正符号生成部２２０は、ホストインターフェース２１０からライトデータＷＤを受け取ると、そのライトデータＷＤからパリティを生成する。そして、誤り検出訂正符号生成部２２０は、ライトデータＷＤにパリティを付加し、ライトデータＷＤ'として制御インターフェース２６０に供給する。
【００５９】
誤り検出部２３０は、リードデータにおいて誤りが生じたか否かを検出するものである。この誤り検出部２３０は、制御インターフェース２６０から、パリティが付加されたリードデータＲＤ'を受け取る。誤り検出部２３０は、パリティを使用してリードデータにおいて誤りが生じたか否かを検出し、その検出結果を誤り訂正部２４０、インピーダンス調整コマンド発行部２５０および制御インターフェース２６０に供給する。また、誤り検出部２３０は、誤りが検出されなかった場合には、リードデータＲＤ'からパリティを除いたデータを、リードデータＲＤとしてホストインターフェース２１０に供給する。一方、誤りが検出された場合には、誤り検出部２３０は、パリティの付加されたリードデータＲＤ'を誤り訂正部２４０に供給する。なお、誤りの個数がＥＣＣの誤り訂正能力を超える場合には、後述する第５の実施の形態のように、インピーダンスの調整およびリードリトライを行うこともできる。
【００６０】
誤り訂正部２４０は、誤りが検出されたときにパリティを使用してリードデータＲＤにおける誤りを訂正するものである。誤り訂正部２４０は、訂正したリードデータＲＤをホストインターフェース２１０に供給する。
【００６１】
インピーダンス調整コマンド発行部２５０は、インピーダンス調整コマンドＺＱＣＡＬを発行するものである。インピーダンス調整コマンド発行部２５０は、メモリコントローラ２００に電源が投入されたとき、または、誤りが検出されたときにインピーダンス調整コマンドＺＱＣＡＬを発行する。誤りが検出された場合には、インピーダンス調整コマンド発行部２５０は、例えば、リードコマンドが最後に送信されたときから、ＴＲ−ＴＳ＋ＴＭに相当する期間が少なくとも経過したタイミングにおいて、インピーダンス調整コマンドＺＱＣＡＬを発行する。ここで、ＴＲは、リードコマンドの送信から対応するリードデータの受信完了までのレイテンシであり、ＴＳは、インピーダンス調整コマンドの送信からインピーダンスの調整開始までのレイテンシである。ＴＭは、マージンの期間である。このタイミングでインピーダンス調整コマンドを送信することにより、リードデータの受信が完了した後にインピーダンスの調整が開始される。
【００６２】
ここで、電源投入時に発行されるインピーダンス調整コマンドＺＱＣＡＬとしては、例えば、ＤＤＲ３インターフェースにおけるＺＱＣＡＬロングコマンドが用いられる。また、誤り検出時に発行されるインピーダンス調整コマンドＺＱＣＡＬとしては、例えば、ＤＤＲ３インターフェースにおけるＺＱＣＡＬロングコマンドまたはＺＱＣＡＬショートコマンドが用いられる。
【００６３】
なお、インピーダンス調整コマンド発行部２５０は、特許請求の範囲に記載の調整制御部の一例である。
【００６４】
制御インターフェース２６０は、不揮発性メモリ３００との間で、コマンド、アドレス、データおよびステータスを送受信するものである。この制御インターフェース２６０は、コマンド、アドレス、および、ライトデータＷＤ'を不揮発性メモリ３００に信号線２０９を介して送信する。ただし、誤りが検出された場合には、誤りの訂正処理と、インピーダンスの調整処理との両方が完了するまで、制御インターフェース２６０は、データ転送を伴う新たなコマンドおよびアドレスの送信を中断する。具体的には、制御インターフェース２６０は、誤りが検出されたときから、次の式１に示す期間Ｔｉが経過するまで新たなコマンド等の送信を中断する。
【００６５】
Ｔｉ＝ｍａｘ｛（ＴＲ−ＴＳ＋ＴＭ＋ＴＺ），（ＴＣ＋ＴＭ）｝−ＴＲ        ・・・式１
ここで、ＴＺは、インピーダンスの調整開始から終了までの期間である。Ｔｃは、訂正の開始から終了までの期間である。ｍａｘ（Ａ，Ｂ）は、ＡおよびＢのうち値の大きい方を返す関数である。
【００６６】
また、制御インターフェース２６０は、リードデータＲＤ'およびステータスを受信し、そのリードデータＲＤ'を誤り検出部２３０に供給する。
【００６７】
［制御インターフェースの構成例］
図３は、第１の実施の形態における制御インターフェース２６０の一構成例を示すブロック図である。この制御インターフェース２６０は、シーケンサ２６１と、データバッファ２６２と、パラレル・シリアル変換部２６３乃至２６５と、バッファ回路２６６および２６７とを備える。バッファ回路２６７は、ドライバ２６８およびレシーバ２６９を備える。なお、バッファ回路２６７には終端抵抗が接続されているが、記載の便宜上、省略されている。
【００６８】
シーケンサ２６１は、コマンドの種類に基づいて、バッファ回路２６７の入出力動作を制御するものである。シーケンサ２６１は、ホストインターフェース２１０またはインピーダンス調整コマンド発行部２５０からコマンドおよびアドレスを受け取る。また、シーケンサ２６１は、検出結果を誤り検出部２３０から受け取る。そして、シーケンサ２６１は、そのコマンドがライトコマンドＷＣＭＤ、リードコマンドＲＣＭＤ、インピーダンス調整コマンドＺＱＣＡＬのいずれであるかを判断する。なお、シーケンサ２６１は、ハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。もしくは、シーケンサ２６１をハードウェアおよびソフトウェアの組合せにより実現してもよい。
【００６９】
ライトコマンドＷＣＭＤである場合には、シーケンサ２６１は、コマンドおよびアドレスをパラレル・シリアル変換部２６３に供給し、入出力制御信号ＩＯＣｔｒｌによりバッファ回路２６７を制御して、ドライバ２６８を活性化させる。
【００７０】
リードコマンドＲＣＭＤまたはインピーダンス調整コマンドＺＱＣＡＬである場合には、シーケンサ２６１は、コマンドおよびアドレスをパラレル・シリアル変換部２６３に供給する。ただし、エラーが生じたことを検出結果が示す場合には、誤りの訂正処理と、インピーダンスの調整処理との両方が終了するまでの一定期間の間、データ転送を伴う新たなコマンド（リードコマンドＲＣＭＤなど）の発行を中断する。また、シーケンサ２６１は、入出力制御信号ＩＯＣｔｒｌによりバッファ回路２６７を制御して、レシーバ２６９を活性化させる。
【００７１】
パラレル・シリアル変換部２６３は、パラレルデータであるコマンドおよびアドレスをクロック信号ＣＬＫに同期してシリアルデータに変換するものである。パラレル・シリアル変換部２６３は、シリアルデータの各々を順にバッファ回路２６６に供給する。ここで、クロック信号ＣＬＫは、制御インターフェース２６０において生成されたクロック信号である。また、クロック信号ＣＬＫは、参照すべきリファレンスクロック信号として不揮発性メモリ３００へ送信される。なお、クロック信号ＣＬＫを生成するクロック生成回路は、図３において省略されている。
【００７２】
バッファ回路２６６は、パラレル・シリアル変換部２６３からのシリアルデータをコマンド／アドレス線２０７を介して送信するものである。
【００７３】
データバッファ２６２は、リードデータＲＤ'またはライトデータＷＤ'を保持するものである。保持されたライトデータＷＤ'は、パラレル・シリアル変換部２６４へ供給され、保持されたリードデータＲＤ'は、誤り検出部２３０へ供給される。
【００７４】
パラレル・シリアル変換部２６４は、送信クロック信号ＴｘＣＬＫに同期して、パラレルデータであるライトデータＷＤ'をシリアルデータに変換するものである。パラレル・シリアル変換部２６４は、シリアルデータの各々を順にドライバ２６８に供給する。
【００７５】
パラレル・シリアル変換部２６５は、クロック信号ＣＬＫに同期してレシーバ２６９からのシリアルデータをパラレルデータであるリードデータＲＤ'に変換するものである。パラレル・シリアル変換部２６５は、変換したリードデータＲＤ'をデータバッファ２６２に保持させる。
【００７６】
ドライバ２６８は、パラレル・シリアル変換部２６４からのシリアルデータを、データ線２０８を介して送信するものである。
【００７７】
レシーバ２６９は、データ線２０８を介して受信したシリアルデータをパラレル・シリアル変換部２６５へ供給するものである。なお、データ線２０８は、必要な転送スループットを確保するために複数本で構成されてもよい。この場合、パラレル・シリアル変換部２６４および２６５とバッファ回路２６７とからなる組も、複数組設けられる。
【００７８】
［不揮発性メモリの構成例］
図４は、第１の実施の形態における不揮発性メモリ３００の一構成例を示すブロック図である。この不揮発性メモリ３００は、メモリインターフェース４００、インピーダンス調整部３１０およびアクセス制御部３２０を備える。
【００７９】
メモリインターフェース４００は、メモリコントローラ２００との間でデータを送受信するものである。このメモリインターフェース４００は、信号線２０９を介してコマンドおよびアドレスを受信する。また、メモリインターフェース４００は、受信クロック信号に同期して、信号線２０９を介してライトデータＷＤ'を受信する。メモリインターフェース４００は、それらのコマンド等をアクセス制御部３２０に供給する。さらに、メモリインターフェース４００は、アクセス制御部３２０からリードデータＲＤ'を受け取る。そして、メモリインターフェース４００は、送信クロック信号に同期して、信号線２０９を介してリードデータＲＤ'を送信する。
【００８０】
また、メモリインターフェース４００は、信号線２０９を介してインピーダンス調整コマンドＺＱＣＡＬを受信し、そのコマンドに従って、インピーダンス調整部３１０との間で調整開始信号および調整終了通知などの信号をやりとりする。これらの信号の詳細については後述する。
【００８１】
インピーダンス調整部３１０は、メモリインターフェース４００においてインピーダンスの不整合を調整するものである。
【００８２】
アクセス制御部３２０は、メモリセルアレイ３３０にアクセスしてデータの書込み、または、読出しを行うものである。このアクセス制御部３２０は、ライトコマンドＷＣＭＤ、アドレスおよびライトデータＷＤ'を受け取ると、そのコマンドに従って、メモリセルアレイ３３０内の指定されたアドレスにアクセスし、ライトデータＷＤ'を書き込む。また、アクセス制御部３２０は、リードコマンドＲＣＭＤおよびアドレスを受け取ると、そのコマンドに従って、メモリセルアレイ３３０内の指定されたアドレスにアクセスし、リードデータＲＤ'を読み出す。アクセス制御部３２０は、読み出したリードデータＲＤ'をメモリインターフェース４００に供給する。また、アクセス制御部３２０は、アクセス状況に基づいてステータスを生成し、メモリインターフェース４００に供給する。
【００８３】
メモリセルアレイ３３０は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、例えば、可変抵抗素子を用いるＲｅＲＡＭが用いられる。なお、ＲｅＲＡＭ以外の不揮発性の記憶素子をメモリセルとして用いてもよい。例えば、ＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリを用いてもよいし、ＲｅＲＡＭ、ＰＣＲＡＭ、または、ＭＲＡＭなどを用いてもよい。
【００８４】
［メモリインターフェースの構成例］
図５は、第１の実施の形態におけるメモリインターフェース４００の一構成例を示すブロック図である。このメモリインターフェース４００は、オリジナルバッファ回路４１０と、レプリカバッファ回路４３２と、バッファ回路４５１と、パラレル・シリアル変換部４５２乃至４５４と、シーケンサ４５５と、データバッファ４５６とを備える。
【００８５】
オリジナルバッファ回路４１０は、データ線２０８を介してシリアルデータを送受信するものである。このオリジナルバッファ回路４１０は、受信したシリアルデータをパラレル・シリアル変換部４５３に供給し、送信対象のシリアルデータをパラレル・シリアル変換部４５４から受け取る。また、オリジナルバッファ回路４１０のインピーダンスは、インピーダンス調整部３１０からのインピーダンス制御信号ＺＱＣｔｒｌにより制御される。
【００８６】
レプリカバッファ回路４３２は、オリジナルバッファ回路４１０と類似した回路である。このレプリカバッファ回路４３２のインピーダンスは、インピーダンス制御信号ＺＱＣｔｒｌにより制御される。また、レプリカバッファ回路４３２は、比較結果ＣＯＭＰ１およびＣＯＭＰ２をインピーダンス調整部３１０に供給する。これらの信号の詳細については後述する。
【００８７】
バッファ回路４５１は、コマンド／アドレス線２０７を介してシリアルデータを受信し、パラレル・シリアル変換部４５２へ供給するものである。
【００８８】
パラレル・シリアル変換部４５２は、バッファ回路４５１からのシリアルデータをパラレルデータである、コマンドおよびアドレスに変換するものである。パラレル・シリアル変換部４５２は、それらのコマンドおよびアドレスをシーケンサ４５５に供給する。
【００８９】
シーケンサ４５５は、コマンドの種類に基づいて、オリジナルバッファ回路４１０の入出力動作を制御するものである。シーケンサ４５５は、パラレル・シリアル変換部４５２からコマンドおよびアドレスを受け取り、そのコマンドがライトコマンドＷＣＭＤ、リードコマンドＲＣＭＤ、インピーダンス調整コマンドＺＱＣＡＬのいずれであるかを判断する。
【００９０】
ライトコマンドＷＣＭＤである場合には、シーケンサ４５５は、コマンドおよびアドレスをアクセス制御部３２０に供給し、入出力制御信号ＩＯＣｔｒｌによりオリジナルバッファ回路４１０を制御して、ライトデータを受信させる。
【００９１】
リードコマンドＲＣＭＤである場合には、シーケンサ４５５は、コマンドおよびアドレスをアクセス制御部３２０に供給し、入出力制御信号ＩＯＣｔｒｌによりオリジナルバッファ回路４１０を制御して、リードデータを送信させる。
【００９２】
インピーダンス調整コマンドＺＱＣＡＬである場合には、シーケンサ４５５は、調整開始信号を生成してインピーダンス調整部３１０に供給する。そして、シーケンサ４５５は、インピーダンス調整部３１０からの調整終了通知を受け付ける。シーケンサ４５５は、調整開始信号から、調整終了通知を受け取るまでの間、データ転送を伴う新たなコマンドの発行を中断する。
【００９３】
パラレル・シリアル変換部４５３は、リファレンスクロック信号（ＣＬＫ）に同期して、オリジナルバッファ回路４１０からのシリアルデータをパラレルデータであるライトデータＷＤ'に変換するものである。パラレル・シリアル変換部４５３は、そのライトデータＷＤ'をデータバッファ４５６に保持させる。
【００９４】
パラレル・シリアル変換部４５４は、パラレルデータであるリードデータＲＤ'をデータバッファ４５６から取得し、リファレンスクロック信号（ＣＬＫ）に同期してシリアルデータに変換するものである。パラレル・シリアル変換部４５４は、そのシリアルデータをオリジナルバッファ回路４１０に順に供給する。
【００９５】
データバッファ４５６は、リードデータＲＤ'またはライトデータＷＤ'を保持するものである。保持されたライトデータＷＤ'は、アクセス制御部３２０へ供給され、保持されたリードデータＲＤ'は、パラレル・シリアル変換部４５４へ供給される。
【００９６】
［オリジナルバッファ回路の構成例］
図６は、第１の実施の形態におけるオリジナルバッファ回路４１０の一構成例を示すブロック図である。このオリジナルバッファ回路４１０は、プルアップ回路４１１、プルダウン回路４１６、レシーバ４２１およびドライバ４２４を備える。
【００９７】
プルアップ回路４１１は、電源電圧Ｖｃｃが印加された端子と外部端子４３１との間に挿入される電源側の回路である。このプルアップ回路４１１は、トランジスタ４１２と、抵抗４１３と、一定数のトランジスタ４１３および抵抗４１４とを備える。抵抗４１５の一端は、トランジスタ４１２に接続され、他端は、レシーバ４２１、プルダウン回路４１６および外部端子４３１に接続されている。トランジスタ４１３および抵抗４１４は直列に接続されており、直列に接続されたトランジスタ４１３および抵抗４１４のそれぞれは、抵抗４１５に並列に接続されている。
【００９８】
トランジスタ４１２として、例えば、ｐＭＯＳ（Metal-Oxide-Semiconductor）トランジスタが用いられる。トランジスタ４１２のソース電極には電源電圧Ｖｃｃが印加され、ドレイン電極は抵抗４１３に接続され、ゲート電極には、プルアップ制御信号ＰＵ_Ｏｎが入力される。ここで、プルアップ制御信号ＰＵ_Ｏｎは、プルアップ抵抗を制御するためにハイレベルまたはローレベルが設定される信号であり、インピーダンス制御信号ＺＱＣｔｒｌに含まれる。
【００９９】
この構成により、プルアップ制御信号ＰＵ_Ｏｎがローレベルの場合には、トランジスタ４１２がオン状態に移行し、プルアップ抵抗として、抵抗４１４および４１５の合成抵抗が接続された状態となる。一方、プルアップ制御信号ＰＵ_Ｏｎがハイレベルの場合には、プルアップ抵抗が非接続の状態となる。
【０１００】
トランジスタ４１３として、例えば、ｐＭＯＳトランジスタが用いられる。また、トランジスタ４１３のゲート電極には、プルアップ制御信号ＰＵ［０：３］のいずれかのビットが入力される。プルアップ制御信号ＰＵ［０：３］は４ビットのデータであり、インピーダンス制御信号ＺＱＣｔｒｌに含まれる。プルアップ制御信号ＰＵ［０：３］が４ビットであるため、トランジスタ４１３および抵抗４１４からなる組を最大で４組設けることができる。
【０１０１】
この構成により、プルアップ制御信号ＰＵ［０：３］に従って、プルアップ回路４１１の抵抗値が制御される。具体的には、プルアップ制御信号ＰＵ［０：３］において「１」のビット数が多いほど、オフ状態となるトランジスタ４１３が増加し、並列接続された抵抗４１４および抵抗４１５の合成抵抗（すなわち、プルアップ回路４１１の抵抗）が高くなる。
【０１０２】
プルダウン回路４１６は、基準電圧Ｖｓｓが印加された端子と外部端子４３１との間に挿入される接地側の回路である。このプルダウン回路４１６は、一定数の抵抗４１７およびトランジスタ４１８と、抵抗４１９と、トランジスタ４２０とを備える。抵抗４１９の一端は、レシーバ４２１、プルアップ回路４１１および外部端子４３１に接続され、他端はトランジスタ４２０に接続されている。抵抗４１７およびトランジスタ４１８は直列に接続されており、直列に接続された抵抗４１７およびトランジスタ４１８のそれぞれは、抵抗４１９に並列に接続されている。
【０１０３】
トランジスタ４２０として、例えば、ｎＭＯＳトランジスタが用いられる。トランジスタ４２０のソース電極は抵抗４１９に接続され、ドレイン電極には基準電圧Ｖｓｓが印加され、ゲート電極には、プルダウン制御信号ＰＤ_Ｏｎが入力される。ここで、プルダウン制御信号ＰＤ_Ｏｎは、プルダウン抵抗を制御するためにハイレベルまたはローレベルが設定される信号であり、インピーダンス制御信号ＺＱＣｔｒｌに含まれる。
【０１０４】
この構成により、プルダウン制御信号ＰＤ_Ｏｎがハイレベルの場合には、トランジスタ４２０がオン状態に移行し、プルダウン抵抗として、抵抗４１７および４１９の合成抵抗が接続された状態となる。一方、プルダウン制御信号ＰＤ_Ｏｎがローレベルの場合には、プルダウン抵抗が非接続の状態となる。
【０１０５】
トランジスタ４１８として、例えば、ｎＭＯＳトランジスタが用いられる。また、トランジスタ４１８のゲート電極には、プルダウン制御信号ＰＤ［０：３］のいずれかのビットが入力される。プルダウン制御信号ＰＤ［０：３］は４ビットのデータであり、インピーダンス制御信号ＺＱＣｔｒｌに含まれる。プルダウン制御信号ＰＤ［０：３］が４ビットであるため、抵抗４１７およびトランジスタ４１８からなる組を最大で４組設けることができる。
【０１０６】
この構成により、プルダウン制御信号ＰＤ［０：３］に従って、プルダウン回路４１６の抵抗値が制御される。具体的には、プルダウン制御信号ＰＤ［０：３］において「０」のビット数が多いほど、オフ状態となるトランジスタ４１８が増加し、並列接続された抵抗４１８および抵抗４１９の合成抵抗（すなわち、プルダウン回路４１６の抵抗）が高くなる。
【０１０７】
これらのプルアップ回路４１１およびプルダウン回路４１６の抵抗は、データ線２０８の終端に接続された終端抵抗として用いられる。この終端抵抗は、不揮発性メモリ３００のチップ上に設けられているため、ＯＤＴ（On Die Termination）とも呼ばれる。
【０１０８】
レシーバ４２１は、メモリコントローラ２００からのシリアルデータを受信するものである。このレシーバ４２１は、トランジスタ４２２および４２３を備える。トランジスタ４２２として、例えば、ｐＭＯＳトランジスタが用いられ、トランジスタ４２３として、例えば、ｎＭＯＳトランジスタが用いられる。
【０１０９】
トランジスタ４２２のソース電極には電源電圧Ｖｃｃが印加され、ドレイン電極はトランジスタ４２３のソース電極とパラレル・シリアル変換部４５３とに接続される。また、トランジスタ４２２のゲート電極は、外部端子４３１と接続される。
【０１１０】
トランジスタ４２３のソース電極は、トランジスタ４２２のドレイン電極とパラレル・シリアル変換部４５３とに接続され、ドレイン電極には基準電圧Ｖｓｓが印加される。また、トランジスタ４２３のゲート電極は、外部端子４３１と接続される。
【０１１１】
この構成により、レシーバ４２１は、データ線２０８を介して送信されたシリアルデータを受信し、そのデータをパラレル・シリアル変換部４５３へ供給する。また、レシーバ４２１は、入出力制御信号ＩＯＣｔｒｌに従って、活性化または非活性化する。なお、レシーバ４２１を活性化または非活性化するための素子や配線は、図６において省略されている。
【０１１２】
ドライバ４２４は、プルアップ回路４２５およびプルダウン回路４２６を備える。プルアップ回路４２５の構成は、プルアップ回路４１１と同様である。ただし、プルアップ回路４２５において、トランジスタ４１２に相当するトランジスタのゲート電極は、パラレル・シリアル変換部４５４に接続される。プルダウン回路４２６の構成は、プルダウン回路４１６と同様である。ただし、プルアップ回路４２６において、トランジスタに相当するトランジスタのゲート電極は、パラレル・シリアル変換部４５４に接続される。
【０１１３】
この構成により、ドライバ４２４は、パラレル・シリアル変換部４５４からのシリアルデータをメモリコントローラ２００へ送信する。また、ドライバ４２４は、入出力制御信号ＩＯＣｔｒｌに従って、活性化または非活性化する。なお、ドライバ４２０を活性化または非活性化するための素子や配線は、図６において省略されている。
【０１１４】
［レプリカバッファ回路の構成例］
図７は、第１の実施の形態におけるレプリカバッファ回路４３２の一構成例を示すブロック図である。このレプリカバッファ回路４３２は、外部端子４４０と、プルアップ回路４３３と、抵抗４３４および４３５と、コンパレータ４３６とを備える。また、レプリカバッファ回路４３２は、プルアップ回路４３７、プルダウン回路４３８およびコンパレータ４３９を備える。
【０１１５】
外部端子４４０には、不揮発性メモリ３００の外部に設けられた外部抵抗が接続されている。この外部抵抗の一端には基準電圧Ｖｓｓが印加され、その抵抗値は、メモリコントローラ２００側のプルダウン抵抗と略同一の値に設定される。
【０１１６】
プルアップ回路４３３は、電源電圧Ｖｃｃが印加された端子と、外部端子４４０との間に挿入される。プルアップ回路４３３の構成は、図６におけるプルアップ回路４１１と同様である。このプルアップ回路４３３の一端には電源電圧Ｖｃｃが供給され、他端は、外部端子４４０およびコンパレータ４３６の入力端子に接続される。
【０１１７】
この構成により、プルアップ制御信号ＰＵ_Ｏｎがローレベルの場合には、電源電圧Ｖｃｃと基準電圧Ｖｓｓとの電位差を、プルアップ回路４３３および外部抵抗の抵抗比により分圧した電圧Ｖｑ１がコンパレータ４３６の入力端子に印加される。一方、プルアップ制御信号ＰＵ_Ｏｎがハイレベルの場合には、プルアップ回路４３３が非接続の状態となり、電圧Ｖｑ１の値は、外部抵抗の値に応じた、所定の参照電圧Ｖｒｅｆ_ｅｘｔと同一になる。
【０１１８】
また、電源電圧Ｖｃｃと基準電圧Ｖｓｓとの間には、直列に接続された抵抗４３４および４３５が挿入されている。そして、これらの抵抗の接続点は、コンパレータ４３６および４３９の入力端子に接続されている。この構成により、電源電圧Ｖｃｃと基準電圧Ｖｓｓとの電位差を、抵抗４３４および４３５の抵抗比により分圧した電圧が参照電圧Ｖｒｅｆ_ｉｎｔとしてコンパレータ４３６および４３９の入力端子に印加される。
【０１１９】
この参照電圧Ｖｒｅｆ_ｉｎｔの値は、この電圧に電圧Ｖｑ１を略一致させることで、メモリコントローラ２００および不揮発性メモリ３００の一方の送信回路と、他方の受信回路とのインピーダンスが整合するような値に設定される。送信回路は、ドライバなどであり、受信回路は、レシーバ、終端抵抗、および、信号線などである。
【０１２０】
コンパレータ４３６は、電圧Ｖｑ１と参照電圧Ｖｒｅｆ_ｉｎｔとを比較するものである。コンパレータ４３６は、比較した結果を比較結果ＣＯＭＰ１としてインピーダンス調整部３１０に供給する。比較結果ＣＯＭＰ１は、例えば、電圧Ｖｑ１が参照電圧Ｖｒｅｆ_ｉｎｆに満たない場合にハイレベルとなり、そうでない場合にローレベルとなる信号である。
【０１２１】
プルアップ回路４３７の構成は、図６におけるプルアップ回路４１１と同様である。このプルアップ回路４３７の一端には電源電圧VＶｃｃが供給され、他端は、プルダウン回路４３８とコンパレータ４３９の入力端子とに接続される。
【０１２２】
プルダウン回路４３８の構成は、図６におけるプルダウン回路４１６と同様である。このプルダウン回路４３８の一端は、プルアップ回路４３７とコンパレータ４３９の入力端子とに接続され、他端には基準電圧Ｖｓｓが供給される。
【０１２３】
この構成により、プルアップ制御信号ＰＵ_Ｏｎがローレベルでプルダウン制御信号ＰＤ_Ｏｎがハイレベルの場合に、プルアップ回路４３７およびプルダウン回路４３８の抵抗比に応じた電圧Ｖｑ２がコンパレータ４３９の入力端子に印加される。
【０１２４】
コンパレータ４３９は、電圧Ｖｑ２と参照電圧Ｖｒｅｆ_ｉｎｔとを比較するものである。このコンパレータ４３９は、比較した結果を比較結果ＣＯＭＰ２としてインピーダンス調整部３１０に供給する。比較結果ＣＯＭＰ２は、例えば、参照電圧Ｖｒｅｆ_ｉｎｆが電圧Ｖｑ２に満たない場合にハイレベルとなり、そうでない場合にローレベルとなる信号である。
【０１２５】
［インピーダンス調整部の構成例］
図８は、第１の実施の形態におけるインピーダンス調整部３１０の一例を示すブロック図である。このインピーダンス調整部３１０は、ステートマシン３１１、制御信号保持部３１２および反転回数カウンタ３１３を備える。
【０１２６】
ステートマシン３１１は、メモリインターフェース４００におけるインピーダンスを調整するものである。このステートマシン３１１は、メモリインターフェース４００から調整開始信号を受け取ると、インピーダンスの調整を開始する。
【０１２７】
ステートマシン３１１は、まず、ローレベルのプルアップ制御信号ＰＵ_Ｏｎをメモリインターフェース４００に出力する。これにより、プルアップ抵抗の値の調整が可能となる。
【０１２８】
ステートマシン３１１は、内部クロック信号ＣＬＫに同期して、比較結果ＣＯＭＰ１の値に応じてプルアップ抵抗の値を制御する。抵抗値の制御量は、クロックサイクルごとに一定の値とする。具体的には、比較結果ＣＯＭＰ１がハイレベルである場合には、制御対象の電圧Ｖｑ１が参照電圧Ｖｒｅｆ_ｉｎｔに満たないことを意味する。このため、ステートマシン３１１は、プルアップ制御信号ＰＵ［０：３］によりプルアップ抵抗の値を低くする。これにより、電圧Ｖｑ１が高くなる。一方、比較結果ＣＯＭＰ１がローレベルである場合には、ステートマシン３１１は、プルアップ抵抗の値を高くする。
【０１２９】
また、ステートマシン３１１は、比較結果ＣＯＭＰ１の反転回数を反転回数カウンタに計数させる。そのカウンタ値ＺＣＮＴが一定回数（例えば、「４」）になると、ステートマシン３１１は、プルアップ抵抗の調整が完了したと判断する。
【０１３０】
プルアップ抵抗の調整が完了すると、ステートマシン３１１は、ローレベルのプルアップ制御信号ＰＵ_Ｏｎと、ハイレベルのプルダウン制御信号ＰＤ_Ｏｎとをメモリインターフェース４００に出力する。これにより、プルダウン抵抗の値の調整が可能となる。また、ステートマシン３１１は、カウンタ値ＺＣＮＴを初期値（例えば、「０」）にする。
【０１３１】
ステートマシン３１１は、内部クロック信号ＣＬＫに同期して、比較結果ＣＯＭＰ２の値に応じてプルダウン抵抗の値を制御する。抵抗値の制御量は、クロックサイクルごとに一定の値とする。具体的には、比較結果ＣＯＭＰ２がローレベルである場合には、制御対象の電圧Ｖｑ２が参照電圧Ｖｒｅｆ_ｉｎｔ以下であることを意味する。このため、ステートマシン３１１は、プルダウン制御信号ＰＤ［０：３］によりプルダウン抵抗の値を高くする。これにより、電圧Ｖｑ２が高くなる。一方、比較結果ＣＯＭＰ２がハイレベルである場合には、ステートマシン３１１は、プルダウン抵抗の値を低くする。
【０１３２】
また、ステートマシン３１１は、比較結果ＣＯＭＰ２の反転回数を反転回数カウンタに計数させる。そのカウンタ値ＺＣＮＴが一定回数（例えば、「４」）になると、ステートマシン３１１は、プルダウン抵抗の調整が完了したと判断する。
【０１３３】
ステートマシン３１１は、プルアップ抵抗およびプルダウン抵抗の調整が完了したとき、または、調整期間が経過したときに調整終了通知を生成してメモリインターフェース４００に出力する。ここで、調整期間は、例えば、ＺＱＣＡＬショートコマンドでは、６４クロックに、ＺＱＣＡＬロングコマンドでは、２５６クロックに設定される。また、ステートマシン３１１は、カウンタ値ＺＣＮＴを初期値にする。さらに、ステートマシン３１１は、インピーダンス制御信号ＺＱＣｔｒｌ（ＰＵ_Ｏｎ、ＰＤ_Ｏｎ、ＰＵ［０：３］およびＰＤ［０：３］）を制御信号保持部に保持させる。そして、ステートマシン３１１は、その制御信号をメモリインターフェース４００に継続して供給する。
【０１３４】
なお、ステートマシン３１１は、プルアップ抵抗から先に調整しているが、逆にプルダウン抵抗から先に調整してもよい。また、ステートマシン３１１は、プルアップ抵抗およびプルダウン抵抗の両方を調整しているが、いずれか一方のみを調整してもよい。
【０１３５】
制御信号保持部３１２は、インピーダンス制御信号ＺＱＣｔｒｌを保持するものである。
【０１３６】
反転回数カウンタ３１３は、比較結果ＣＯＭＰ１または比較結果ＣＯＭＰ２の反転回数を計数するものである。
【０１３７】
図９は、第１の実施の形態における電源投入時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Ｖｑ２の電圧であり、横軸は時間である。電源投入時には、不揮発性メモリ３００側のプルダウン抵抗は最小値に設定される。その結果、制御対象の電圧Ｖｑ２は、最小値となる。不揮発性メモリ３００は、内部クロック信号ＣＬＫに同期してプルダウン抵抗を制御して、参照電圧Ｖｒｅｆ_ｉｎｔに電圧Ｖｑ２を略一致させる。具体的には、比較結果ＣＯＭＰ２が一定回数（例えば、４回）反転したときに略一致したと判断される。ここで、クロックサイクルごとのインピーダンスの制御量は、一定の値である。なお、プルダウン抵抗の調整の前に行われたプルアップ抵抗の調整は、図９において省略されている。
【０１３８】
例えば、時刻Ｔ０に電源が投入され、時刻Ｔ１において、電圧Ｖｑ２が参照電圧Ｖｒｅｆ_ｉｎｔを超えると、比較結果ＣＯＭＰ２がローレベルからハイレベルに反転する。そして、時刻Ｔ２において、不揮発性メモリ３００は、電圧Ｖｑ２が低くなるようにインピーダンスを制御し、電圧Ｖｑが参照電圧Ｖｒｅｆ_ｉｎｔ未満となると、比較結果ＣＯＭＰ２がハイレベルからローレベルに反転する。以下、時刻Ｔ３およびＴ４において、電圧Ｖｑを増減することにより、比較結果ＣＯＭＰ２が反転したとする。時刻Ｔ４の時点において、反転回数が４回となったため、不揮発性メモリ３００は、インピーダンスの調整が完了したと判断する。
【０１３９】
参照電圧Ｖｒｅｆ_ｉｎｔは、インターフェースの送信側の回路と受信側の回路とでインピーダンスが整合するような値に設定されている。このため、この参照電圧Ｖｒｅｆ_ｉｎｔに基づいてインピーダンスを制御することにより、送信側と受信側とでインピーダンスが整合した状態となり、インターフェースにおける転送エラーが低減する。
【０１４０】
図１０は、第１の実施の形態における誤り検出時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Ｖｑ２の電圧であり、横軸は時間である。電源投入後、温度変化などにより、インターフェースにおいてインピーダンスの値が変動する。この現象は、温度ドリフトと呼ばれる。この結果、インターフェースの送信側と受信側とでインピーダンスが整合しない状態となる。このインピーダンスの不整合により信号の反射が生じ、時刻Ｔ５において誤りが検出される。メモリコントローラ２００は、インピーダンス調整コマンドＺＱＣＡＬを発行し、不揮発性メモリ３００はインピーダンスの調整を開始する。ここで、クロックサイクルごとのインピーダンスの制御量は、一定の値である。時刻Ｔ６において、比較結果ＣＯＭＰ２の反転回数が一定回数に達すると、不揮発性メモリ３００は、調整が完了したと判断し、インピーダンスの整合状態を維持する。
【０１４１】
［メモリコントローラの動作例］
図１１は、第１の実施の形態におけるメモリコントローラ２００の動作の一例を示すフローチャートである。この動作は、例えば、メモリコントローラ２００に電源が投入されたときに開始する。
【０１４２】
メモリコントローラ２００は、電源投入直後に、インピーダンス調整コマンドを発行して不揮発性メモリ３００に送信する（ステップＳ９０１）。メモリコントローラ２００は、一定サイクルが経過したか否かを判断する（ステップＳ９０２）。この期間は、インピーダンスの調整処理に要する期間である。一定サイクルが経過していなければ（ステップＳ９０２：Ｎｏ）、メモリコントローラ２００は、ステップＳ９０２に戻る。
【０１４３】
一定サイクルが経過したのであれば（ステップＳ９０２：Ｙｅｓ）、メモリコントローラ２００は、ホストコンピュータ１００からコマンドを受信して翻訳および解釈等を行って、各種のコマンドを発行する（ステップＳ９０３）。
【０１４４】
メモリコントローラ２００は、解釈したコマンドの処理（ライト処理やリード処理など）を実行する（ステップＳ９０４）。リード処理において、誤りが検出された場合には、図１３および図１４において後述するように、インピーダンス調整コマンドが発行される。
【０１４５】
メモリコントローラ２００は、コマンドの処理が完了したか否かを判断する（ステップＳ９０５）、処理が完了していなければ（ステップＳ９０５；Ｎｏ）、メモリコントローラ２００は、ステップＳ９０４に戻る。処理が完了したのであれば（ステップＳ９０５：Ｙｅｓ）、メモリコントローラ２００は、ステップＳ９０３に戻る。
【０１４６】
図１２は、第１の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ２００は、リードコマンドおよびアドレスを不揮発性メモリ３００に送信し、リードデータおよびパリティを受信する。そして、メモリコントローラ２００は、パリティを使用してリードデータにおける誤りの有無を検出する（ステップＳ９１１）。
【０１４７】
メモリコントローラ２００は、パリティを使用して、リードデータに誤りが生じたか否かを判断する（ステップＳ９１２）。
【０１４８】
誤りが生じた場合には（ステップＳ９１２：Ｙｅｓ）、メモリコントローラ２００は、調整処理（ステップＳ９２０）と、リードデータの訂正処理（ステップＳ９１７）とを並列に実行する。両方の処理が終了した後、または、誤りがなかった場合（ステップＳ９１２：Ｎｏ）、メモリコントローラ２００は、メモリコントローラ２００は、リードデータをホストコンピュータ１００に送信してリード処理を終了する。
【０１４９】
図１３は、第１の実施の形態における調整処理の一例を示すフローチャートである。メモリコントローラ２００は、インピーダンス調整コマンドを発行可能なタイミングであるか否かを判断する（ステップＳ９２１）。このタイミングは、例えば、リードデータの全ての送信が完了するときにインピーダンスの調整が開始されるようなタイミングである。発行可能なタイミングが経過していなければ（ステップＳ９２１：Ｎｏ）、メモリコントローラ２００はステップＳ９２１に戻る。
【０１５０】
一方、発行可能なタイミングであれば（ステップＳ９２１：Ｙｅｓ）、メモリコントローラ２００は、インピーダンス調整コマンドを発行する（ステップＳ９２２）。そして、メモリコントローラ２００は、一定サイクルが経過したか否かを判断する（ステップＳ９２３）。この一定サイクルは、インピーダンスの調整が完了するまでの期間である。一定サイクルが経過していなければ（ステップＳ９２３：Ｎｏ）、メモリコントローラ２００はステップＳ９２３に戻る。一定サイクルが経過したのであれば（ステップＳ９２３：Ｙｅｓ）、メモリコントローラ２００は調整処理を終了する。
【０１５１】
［不揮発性メモリの動作例］
図１４は、第１の実施の形態における不揮発性メモリ３００の動作の一例を示すフローチャートである。この動作は、例えば、不揮発性メモリ３００に電源が投入されたときに開始する。
【０１５２】
不揮発性メモリ３００は、メモリコントローラ２００から各種のコマンドを受信したか否かを判断する（ステップＳ９５１）。コマンドを受信していなければ（ステップＳ９５１：Ｎｏ）、不揮発性メモリ３００は、ステップＳ９５１に戻る。コマンドを受信したのであれば（ステップＳ９５１：Ｙｅｓ）、不揮発性メモリ３００は、そのコマンドがインピーダンス調整コマンドであるか否かを判断する（ステップＳ９５２）。インピーダンス調整コマンドであれば（ステップＳ９５２：Ｙｅｓ）、不揮発性メモリ３００は、インターフェースのインピーダンスの調整を行う（ステップＳ９５３）。
【０１５３】
インピーダンス調整コマンドでなければ（ステップＳ９５２：Ｎｏ）、不揮発性メモリ３００は、コマンドに従って、各種の処理（リード処理やライト処理）を行う（ステップＳ９５４）。ステップＳ９５３またはＳ９５４の後、不揮発性メモリ３００は、ステップＳ９５１に戻る。
【０１５４】
図１５は、第１の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【０１５５】
メモリコントローラ２００は、４つのリードコマンドおよびアドレスをコマンド／アドレス線２０７を介して、順に不揮発性メモリ３００へ送信したものとする。
【０１５６】
不揮発性メモリ３００は、リードコマンドに従ってリードデータＲＤ'を読み出し、データ線２０８を介してメモリコントローラ２００へ送信する。
【０１５７】
メモリコントローラ２００における誤り検出部２３０は、パリティを使用して、それぞれのリードデータにおける誤りの有無を検出する。ここで、２つ目のリードデータＲＤ'の転送において、転送エラーが生じたものとする。この場合、メモリコントローラ２００における誤り訂正部２４０は、誤りの訂正処理を実行する。
【０１５８】
メモリコントローラ２００は、誤りを検出したときに、データ転送を伴う新たなコマンドの発行を中断する。しかし、この時点において、３つ目のリードコマンドを発行済であった場合、訂正処理の間において３つ目のリードデータＲＤ'の転送が行われる。なお、中断のタイミングは、インピーダンス調整のため、データを中断することができるタイミングであれば、どのようなタイミングであってもよい。
【０１５９】
メモリコントローラ２００におけるインピーダンス調整コマンド発行部２５０は、３つ目のリードデータＲＤ'の転送が完了した後に、インピーダンスの調整が開始されるようなタイミングにおいて、インピーダンス調整開始コマンドを発行する。
【０１６０】
不揮発性メモリ３００におけるインピーダンス調整部３１０は、インピーダンス調整コマンドに従って、インピーダンスの調整処理（ＺＱ調整処理）を開始する。このように、訂正処理と調整処理とが並列に実行されるため、訂正処理の期間に、調整処理の期間の少なくとも一部が隠蔽される。
【０１６１】
メモリコントローラ２００は、両方の処理が終了した後に、次のリードデータＲＤ'の読出しが開始されるようなタイミングでリードコマンドおよびアドレスを不揮発性メモリ３００へ送信する。
【０１６２】
なお、メモリコントローラ２００は、誤りの訂正期間内に、インピーダンスの調整処理を開始させているが、この構成に限定されない。例えば、メモリコントローラ２００は、誤り訂正を開始する前に、インピーダンスの調整処理を開始させてもよい。
【０１６３】
また、メモリコントローラ２００は、データ転送を伴うコマンドの発行の前にインピーダンス調整コマンドを割り込ませているが、この構成に限定されない。例えば、メモリコントローラ２００は、不揮発性メモリ３００がリードデータを出力する前に、インピーダンス調整コマンドを割り込ませてもよい。具体的には、メモリコントローラ２００は、リードコマンドによって読み出されたリードデータに誤りがあった場合には、そのリードコマンドより後のリードコマンドを破棄して、誤り訂正を行う。そして、誤り訂正の完了後に、メモリコントローラ２００は、再度、破棄したリードコマンドを実行し、リードデータが読み出される前に、インピーダンス調整コマンドを発行する。
【０１６４】
また、メモリコントローラ２００は、ライトコマンドを発行してライトデータを出力する前に、インピーダンス調整コマンドを割り込ませてもよい。具体的には、メモリコントローラ２００は、リードコマンドによって読み出されたリードデータに誤りがあった場合には、そのリードコマンドより後のライトコマンドを破棄して、誤り訂正を行う。そして、誤り訂正の完了後に、メモリコントローラ２００は、再度、破棄したライトコマンドを実行し、ライトデータを出力する前に、インピーダンス調整コマンドを発行する。
【０１６５】
また、メモリコントローラ２００は、定期的にインピーダンス調整コマンドを発行する制御と、誤り検出時にインピーダンス調整コマンドを発行する図１２に例示した制御とを切り替えてもよい。例えば、訂正不能な誤りが生じた場合や、誤りの個数が閾値を超えた場合などの所定の条件が満たされたときに、メモリコントローラ２００が図１２に例示した制御に切り替える。
【０１６６】
また、メモリコントローラ２００は、一定回数のライトコマンドの受信のたびに、リードデータを読み出して誤りの有無の検出を行い、調整処理が必要か否かの確認を行ってもよい。
【０１６７】
このように、本技術の第１の実施の形態によれば、メモリコントローラ２００は、誤りが生じると訂正処理を実行し、また、インピーダンスの調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ２００と不揮発性メモリ３００との間の通信速度が向上する。
【０１６８】
［第１の変形例］
第１の実施の形態では、誤りが検出された場合に、必ず、調整処理を実行していたが、誤りが比較的少ない場合には、調整処理を実行する必要性が低い。第１の変形例のメモリコントローラ２００は、誤りの個数が閾値を超える場合に、調整処理を実行する点において第１の実施の形態と異なる。
【０１６９】
第１の変形例の誤り検出訂正符号生成部２２０は、パリティを使用して、リードデータＲＤ'における誤りの個数を求める。
【０１７０】
誤りの個数が、所定の閾値Ｔｈ１を超える場合にインピーダンス調整コマンド発行部は、インピーダンス調整コマンドを発行する。ここで、閾値Ｔｈ１として、パリティにより訂正することが可能な誤りの個数（すなわち、誤り訂正能力）に満たない数が設定される。
【０１７１】
図１６は、第１の実施の形態の第１の変形例におけるメモリコントローラ２００の動作の一例を示すフローチャートである。この動作は、ステップＳ９１４、Ｓ９１５およびＳ９１６をさらに実行する点において第１の実施の形態と異なる。
【０１７２】
エラーが生じた場合には（ステップＳ９１２：Ｙｅｓ）、メモリコントローラ２００は、パリティを使用して、誤りの個数を取得する（ステップＳ９１４）。そして、メモリコントローラ２００は、誤りの個数が閾値Ｔｈ１を超えるか否かを判断する（ステップＳ９１５）。
【０１７３】
誤りの個数が閾値Ｔｈ１を超える場合には（ステップＳ９１５：Ｙｅｓ）、メモリコントローラ２００は、調整処理（ステップＳ９２０）および訂正処理（ステップＳ９１７）を並列に実行する。一方、誤りの個数が閾値Ｔｈ１以下である場合には（ステップＳ９１５：Ｎｏ）、メモリコントローラ２００は、訂正処理のみを実行する（ステップＳ９１６）。ステップＳ９２０およびＳ９１７の両方の処理の完了後、または、ステップＳ９１６の後、メモリコントローラ２００は、リードデータをホストコンピュータ１００へ送信してリード処理を終了する。
【０１７４】
このように、第１の変形例によれば、メモリコントローラ２００は、誤りの個数が閾値を超える場合に調整処理を実行するため、調整処理の実行回数を低減することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ２００と不揮発性メモリ３００との間の通信速度がさらに向上する。
【０１７５】
［第２の変形例］
第１の実施の形態では、クロックサイクルごとのインピーダンスの制御量を一定としていたが、調整中に制御量を変更してもよい。第２の変形例の不揮発性メモリ３００は、インピーダンスの制御量を調整中に変更する点において第１の実施の形態と異なる。具体的には、電源投入後に実行する調整処理において、メモリコントローラ２００は、比較的大きな制御量で調整を開始し、徐々に制御量を小さくしていく。例えば、比較結果ＣＯＭＰ１またはＣＯＭＰ２が反転するたびに、インピーダンスの制御量を小さくする。これにより、調整開始から終了までの時間が短縮される。
【０１７６】
図１７は、第１の実施の形態の第２の変形例における電源投入時のインピーダンスの制御方法の一例を示す図である。同図における縦軸は、電圧Ｖｑ２の電圧であり、横軸は時間である。時刻Ｔ０に電源が投入された後、不揮発性メモリ３００は、クロックサイクルごとのインピーダンスの制御量を最大にして、調整を開始する。そして、時刻Ｔ１１において比較結果ＣＯＭＰ２が反転すると、不揮発性メモリ３００は、制御量を小さくする。その後の時刻Ｔ１２において比較結果ＣＯＭＰ２が再度反転すると、不揮発性メモリ３００は、さらに制御量を小さくする。時刻Ｔ１３において、比較結果ＣＯＭＰ２が再度反転すると、不揮発性メモリ３００は、制御量を小さくし、その結果、制御量は最小となる。そして、時刻Ｔ１４において反転回数が一定回数に達すると、不揮発性メモリ３００は、調整が完了したと判断する。
【０１７７】
なお、誤りが検出されたときにおいては、第１の実施の形態と同様に、クロックサイクルごとに一定の制御量で調整が行われる。
【０１７８】
このように、第２の変形例によれば、不揮発性メモリ３００は、インピーダンスの制御量を最大値から徐々に小さくするため、調整開始から終了までの時間を短縮することができる。
【０１７９】
＜２．第２の実施の形態＞
［メモリコントローラの構成例］
第１の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インターフェースにおいてインピーダンス以外の伝送特性を調整してもよい。インピーダンス以外の伝送特性としては、データの伝送タイミングなどが挙げられる。ここで、データの伝送タイミングは、メモリコントローラ２００および不揮発性メモリ３００の一方が他方へデータを送出するタイミング、または、その送出されたデータを他方が受信するタイミングを示す。第２の変形例のメモリシステムは、誤り検出時にデータの伝送タイミングを調整する点において第１の実施の形態と異なる。メモリシステムは、例えば、受信クロック信号の位相を調整することにより、データの伝送タイミングを調整する。
【０１８０】
図１８は、第２の実施の形態におけるメモリコントローラ２００の一構成例を示すブロック図である。第２の実施の形態のメモリコントローラ２００は、インピーダンス調整コマンド発行部２５０の代わりに、位相調整部２８０を備える点において第１の実施の形態と異なる。
【０１８１】
位相調整部２８０は、制御インターフェース２６０の転送クロック信号の位相を調整するものである。制御インターフェース２６０の転送クロック信号には、ライトデータを送信する際の送信クロック信号と、リードデータを受信する際の受信クロック信号とがある。位相調整部２８０は、例えば、これらのうち受信クロック信号の位相を調整する。
【０１８２】
位相調整部２８０は、誤りの検出結果を誤り検出部２３０から受け取る。誤りが検出された場合に位相調整部２８０は、受信クロック信号の位相の調整を行う。ここで、データ線が複数ある場合には、位相調整部２８０は、データ線ごとに受信クロック信号の位相を調整してもよい。また、データ線のそれぞれが複数のグループに属する場合には、位相調整部２８０は、グループごとに受信クロック信号の位相を調整してもよい。不揮発性メモリ３００から出力される送信クロック信号に同期したリードデータには、メモリコントローラ２００で受信されるまでの伝送遅延が付加される。このため、メモリコントローラ２００の受信クロック信号は、不揮発性メモリ３００の送信クロック信号に対して、その伝送遅延の分、遅らせる必要がある。位相調整部２８０は、この伝送遅延に基づいて、受信クロック信号の位相を調整する。
【０１８３】
なお、転送クロック信号の位相の調整をメモリコントローラ２００が実行する構成としているが、この構成に限定されない。メモリコントローラ２００の代わりに不揮発性メモリ３００が、不揮発性メモリ３００側のインターフェースにおいて転送クロック信号の位相を調整してもよい。
【０１８４】
［位相調整部の構成例］
図１９は、第２の実施の形態における位相調整部２８０の一構成例を示すブロック図である。この位相調整部２８０は、位相調整コマンド発行部２８１、テストデータ生成部２８２、位相制御部２８３および一致判定部２８４を備える。
【０１８５】
位相調整コマンド発行部２８１は、位相調整コマンドＰＨＣＡＬを発行するものである。この位相調整コマンド発行部２８１は、メモリコントローラ２００に電源が投入されたとき、または、誤りが検出されたときに位相調整コマンドＰＨＣＡＬを発行する。誤りが検出された場合の位相調整コマンドの発行タイミングは、例えば、第１の実施の形態のインピーダンス調整コマンドの発行タイミングと同一とする。位相調整コマンド発行部２８１は、発行した位相調整コマンドＰＨＣＡＬをテストデータ生成部２８２、位相制御部２８３および制御インターフェース２６０へ供給する。
【０１８６】
テストデータ生成部２８２は、テストデータを生成するものである。このテストデータは、ループバックテストを行うためのデータであり、例えば、ＰＲＢＳ（Pseudo-random bit sequence）が用いられる。ループバックテストは、インターフェースに、既知のデータを送信させるとともに帰還（すなわち、ループバック）させて、送信したデータと、帰還したデータとを比較することにより、インターフェースが正常に動作しているか否かを確認するものである。
【０１８７】
テストデータ生成部２８２は、位相調整コマンドＰＨＣＡＬを受け取ると、内部クロック信号ＣＬＫに同期してテストデータをＮ回生成する。Ｎは、ループバックテストを行う回数であり、例えば、２以上の整数が設定される。テストデータ生成部２８２は、テストデータを生成するたびに、そのデータを送信テストデータＴｘＤａｔａとして制御インターフェース２６０および一致判定部２８４に供給する。
【０１８８】
一致判定部２８４は、送信されたテストデータと、帰還したテストデータとが一致するか否かを判定するものである。この一致判定部２８４は、送信テストデータＴｘＤａｔａをテストデータ生成部２８２から受け取り、制御インターフェース２６０から受信テストデータＲｘＤａｔａを受け取る。受信テストデータＲｘＤａｔａは、帰還したテストデータである。
【０１８９】
一致判定部２８４は、送信テストデータＴｘＤａｔａと受信テストデータＲｘＤａｔａとをビット単位で比較し、それらが一致するか否かを判定する。一致判定部２８４は、その判定結果を位相制御部２８３に供給する。テストデータがＮ回生成されるため、Ｎ個の判定結果が生成される。
【０１９０】
位相制御部２８３は、判定結果に基づいて受信クロック信号の位相を制御するものである。位相制御部２８３は、位相調整コマンドＰＨＣＡＬを受け取ると、位相の調整を開始する。位相の調整において、位相制御部２８３は、位相を制御するための位相制御信号により、内部クロック信号ＣＬＫに同期して、受信クロック信号の位相を、Ｎ個の異なる位相に順に制御する。そして、位相制御部２８３は、それぞれの位相における判定結果を参照し、送信テストデータＴｘＤａｔａと受信テストデータＲｘＤａｔａとが一致する位相のいずれかを選択する。一致する位相が複数ある場合には、位相制御部２８３は、例えば、それらの位相の中間の位相を選択する。位相制御部２８３は、選択した位相に受信クロック信号の位相を固定し、位相の調整を完了する。
【０１９１】
［制御インターフェースの構成例］
図２０は、第２の実施の形態における制御インターフェース２６０の一構成例を示すブロック図である。第２の実施の形態の制御インターフェース２６０は、多相クロック生成回路２７０をさらに備える点において第１の実施の形態と異なる。
【０１９２】
多相クロック生成回路２７０は、位相の異なる複数のクロック信号を生成するものである。多相クロック生成回路２７０は、例えば、ＰＬＬ（Ｐhase Ｌocked Ｌoop）およびマルチプレクサなどにより、位相の異なるＮ個のクロック信号を生成する。これらのクロック信号は、内部クロック信号ＣＬＫより周波数の大きな信号であり、例えば、内部クロック信号ＣＬＫを逓倍することにより生成される。
【０１９３】
多相クロック生成回路２７０は、位相制御信号に従ってＮ個のクロック信号のいずれかをマルチプレクサなどにより受信クロック信号ＲｘＣＬＫとして選択し、パラレル・シリアル変換部２６５へ送信する。また、多相クロック生成回路２７０は、所定の位相の送信クロック信号ＴｘＣＬＫを生成し、パラレル・シリアル変換部２６４に供給するとともに、参照すべきリファレンスクロック信号として不揮発性メモリ３００へ送信する。このリファレンスクロック信号やライトデータは、不揮発性メモリ３００への送信において、同程度、遅延する。不揮発性メモリ３００は、遅延したリファレンスクロック信号に同期してリードデータを送信するため、リードデータの受信においてリファレンスクロック信号の伝搬遅延に、さらにリードデータの伝搬遅延が加わる。位相制御部２８３は、これらの遅延分を、受信クロック信号ＲｘＣＬＫの位相の制御により、調整する。なお、送信クロック信号をリファレンスクロック信号としているが、送信クロックとリファレンスクロックは別々に多相クロック生成回路２７０から供給されてもよい。また、送信クロック信号とリファレンスクロック信号の位相を別々に調整することができる構成であってもよい。
【０１９４】
なお、ＰＬＬおよびマルチプレクサ以外の構成により、多相クロック生成回路２７０を実現することもできる。例えば、複数の位相の異なる入力クロック信号を混合して、それらと異なる位相の出力クロック信号を生成するフェイズミキサーを用いて多相クロック生成回路２７０を実現してもよい。
【０１９５】
［不揮発性メモリの構成例］
図２１は、第２の実施の形態における不揮発性メモリ３００の一構成例を示すブロック図である。第２の実施の形態の不揮発性メモリ３００の構成は、インピーダンス調整部３１０を備えない点以外は第１の実施の形態と同様である。
【０１９６】
図２２は、第２の実施の形態におけるメモリインターフェース４００の一構成例を示すブロック図である。第２の実施の形態のメモリインターフェース４００は、オリジナルバッファ回路４１０およびレプリカバッファ回路４３２の代わりに、バッファ回路４６０を備える点において第１の実施の形態と異なる。
【０１９７】
バッファ回路４６０は、レシーバ４６１およびドライバ４６２を備える。これらの構成は、第１の実施の形態におけるメモリコントローラ２００側のドライバ２６８およびレシーバ２６９と同様である。
【０１９８】
また、パラレル・シリアル変換部４５３は、リファレンスクロック信号（送信クロック信号ＴｘＣＬＫ）に同期して、シリアルデータをライトデータＷＤ'に変換する。また、パラレル・シリアル変換部４５４は、リファレンスクロック信号（送信クロック信号ＴｘＣＬＫ）に同期して、リードデータＲＤ'から変換したシリアルデータを順に送信する。
【０１９９】
また、シーケンサ４５５は、コマンドが位相調整コマンドＰＨＣＡＬである場合には、入出力制御信号ＩＯＣｔｒｌによりバッファ回路４６０を制御して、送信されたテストデータを書き込ませずに、そのまま帰還させる。
【０２００】
なお、不揮発性メモリ３００は、位相調整コマンドＰＨＣＡＬに従ってループバックを行っているが、この構成に限定されない。例えば、メモリコントローラ２００が位相調整コマンドとともにループバックコマンドを発行し、そのループバックコマンドに従って不揮発性メモリ３００がループバックを行う構成としてもよい。
【０２０１】
［メモリコントローラの動作例］
図２３は、第２の実施の形態におけるメモリコントローラ２００の動作の一例を示すフローチャートである。第２の実施の形態のメモリコントローラ２００の動作は、ステップＳ９０１およびＳ９０２の代わりにステップＳ９０６およびＳ９０８を実行する点において第１の実施の形態と異なる。
【０２０２】
電源が投入されると、メモリコントローラ２００は、位相調整コマンドＰＨＣＡＬを発行する（ステップＳ９０６）。そして、メモリコントローラ２００は、受信クロック信号の位相の調整を行う（ステップＳ９０８）。ステップＳ９０８の後、メモリコントローラ２００は、ステップＳ９０３乃至Ｓ９０５の処理を実行する。
【０２０３】
図２４は、第２の実施の形態における調整処理の一例を示すフローチャートである。メモリコントローラ２００は、位相調整コマンドを発行可能なタイミングであるか否かを判断する（ステップＳ９２１）。このタイミングは、例えば、リードデータの全ての送信が完了するときに位相の調整が開始されるようなタイミングである。発行可能なタイミングが経過していなければ（ステップＳ９２１：Ｎｏ）、メモリコントローラ２００はステップＳ９２１に戻る。
【０２０４】
一方、発行可能なタイミングであれば（ステップＳ９２１：Ｙｅｓ）、メモリコントローラ２００は、位相調整コマンドを発行する（ステップＳ９２４）。そして、メモリコントローラ２００は、受信クロックの位相の調整処理を実行する（ステップＳ９２６）。ステップＳ９２６の後、メモリコントローラ２００は調整処理を終了する。
【０２０５】
［不揮発性メモリの動作例］
図２５は、第２の実施の形態における不揮発性メモリ３００の動作の一例を示すフローチャートである。第２の実施の形態の不揮発性メモリ３００の動作は、ステップＳ９５２およびＳ９５３の代わりにステップＳ９５５およびＳ９５６を実行する点において第１の実施の形態と異なる。
【０２０６】
不揮発性メモリ３００は、コマンドを受信したのであれば（ステップＳ９５１：Ｙｅｓ）、そのコマンドが位相調整コマンドであるか否かを判断する（ステップＳ９５５）。位相調整コマンドであれば（ステップＳ９５５：Ｙｅｓ）、不揮発性メモリ３００は、テストデータのループバックを行う（ステップＳ９５６）。
【０２０７】
位相調整コマンドでなければ（ステップＳ９５５：Ｎｏ）、不揮発性メモリ３００は、ステップＳ９５４を実行する。ステップＳ９５４またはＳ９５６の後、不揮発性メモリ３００は、ステップＳ９５１に戻る。
【０２０８】
図２６は、第２の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【０２０９】
メモリコントローラ２００における位相調整コマンド発行部２８１は、３つ目のリードデータＲＤ'の転送が完了した後に、位相の調整が開始されるようなタイミングにおいて、位相調整開始コマンドを発行する。
【０２１０】
メモリコントローラ２００における位相制御部２８３は、位相調整コマンドに従って、受信クロック信号の位相の調整処理を開始する。
【０２１１】
このように、第２の実施の形態によれば、メモリコントローラ２００は、誤りが生じると訂正処理を実行し、また、位相の調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ２００と不揮発性メモリ３００との間の通信速度が向上する。
【０２１２】
［第１の変形例］
第２の実施の形態では、メモリコントローラ２００は、リードデータの受信クロックの位相のみを調整していたが、ライトデータの送信クロック信号の位相をさらに調整してもよい。第２の実施の形態の第１の変形例のメモリコントローラ２００は、ライトデータの送信クロック信号の位相をさらに調整する点において第２の実施の形態と異なる。
【０２１３】
第１の変形例の位相制御部２８３は、送信クロック信号の位相を位相制御信号により制御し、次に、受信クロック信号の位相を位相制御信号により制御する。なお、位相制御部２８３は、送信クロック信号の位相の次に受信クロック信号の位相を制御しているが、逆に、受信クロック信号の位相の次に送信クロック信号の位相を制御してもよい。さらにデータ線が複数ある場合には、位相制御部２８３は、各データ線の送信クロックを独立に位相制御してもよい。例えば、リファレンスクロックのメモリインターフェースへの到達タイミングに合わせるように複数のデータの送出タイミングを調整する方法でもよい。
【０２１４】
第１の変形例の多相クロック生成回路は、位相制御信号に従って受信クロック信号ＲｘＣＬＫを生成するとともに、位相制御信号に従って送信クロック信号ＴｘＣＬＫをさらに生成する点において、第２の実施の形態と異なる。
【０２１５】
［メモリコントローラの動作例］
図２７は、第２の実施の形態の第１の変形例におけるメモリコントローラ２００の動作の一例を示すフローチャートである。第１の変形例のメモリコントローラ２００の動作は、ステップＳ９０７をさらに実行する点において第１の実施の形態と異なる。
【０２１６】
位相調整コマンドを発行すると（ステップＳ９０６）、メモリコントローラ２００は、送信クロック信号の位相の調整を行う（ステップＳ９０７）。そして、メモリコントローラ２００は、受信クロック信号の位相の調整を行う（ステップＳ９０８）。ステップＳ９０８の後に、メモリコントローラ２００は、ステップＳ９０３乃至Ｓ９０５を実行する。
【０２１７】
図２８は、第２の実施の形態の変形例における調整処理の一例を示すフローチャートである。変形例の調整処理は、ステップＳ９２５をさらに実行する点において第２の実施の形態と異なる。
【０２１８】
位相調整コマンドを発行すると（ステップＳ９２４）、メモリコントローラ２００は、送信クロックの位相の調整処理を実行する（ステップＳ９２５）。そして、メモリコントローラ２００は、受信クロックの位相の調整処理を実行する（ステップＳ９２６）。ステップＳ９２６の後、メモリコントローラ２００は調整処理を終了する。
【０２１９】
このように、第１の変形例によれば、メモリコントローラ２００は、受信クロック信号の位相に加えて送信クロック信号の位相も調整するため、受信クロック信号の位相のみを調整する場合よりも柔軟性のある位相調整を行うことができる。
【０２２０】
［第２の変形例］
第２の実施の形態では、メモリコントローラ２００のみが位相の調整を行っていたが、不揮発性メモリ３００も位相の調整を行ってもよい。第２の変形例のメモリシステムは、メモリコントローラ２００および不揮発性メモリ３００の両方が位相の調整を行う点において第２の実施の形態と異なる。
【０２２１】
［不揮発性メモリの構成例］
図２９は、第２の変形例の不揮発性メモリ３００の一構成例を示すブロック図である。第２の変形例の不揮発性メモリ３００の構成は、インピーダンス調整部３１０の代わりに、位相調整部３１５を備える点において第１の実施の形態と異なる。位相調整部３１５の構成は、メモリコントローラ２００側の位相調整部２８０と同様である。また、第２の変形例のメモリインターフェース４００は、メモリコントローラ２００側の多相クロック生成回路２７０と同様の回路をさらに備える点において第１の実施の形態と異なる。
【０２２２】
ここで、エンベデッドクロック方式では、図示はしないが、不揮発性メモリ３００側において、重畳されたクロックとデータを分離する再生するためのクロック・データ・リカバリ回路がさらに必要になる。不揮発性メモリ３００側におけるタイミング調整は、この再生されたデータまたは再生されたクロックに対して行うことになる。このように本発明の主旨を逸脱しない範囲で変更が可能である。
【０２２３】
このように、第２の変形例によれば、メモリコントローラ２００に加えて、不揮発性メモリ３００も位相の調整を行うため、メモリコントローラ２００のみが調整する場合よりも転送エラーを低減することができる。
【０２２４】
［第３の変形例］
第２の実施の形態では、メモリシステムは、データ線において送受信するデータの転送クロックの位相を調整していたが、他の信号の位相を調整することもできる。例えば、メモリシステムは、ストローブ信号などの制御信号の位相を調整してもよい。ここで、ストローブ信号は、レシーバがデータを受け取るタイミングを制御するための信号である。第３の変形例のメモリシステムは、ストローブ信号の位相を調整する点において第２の実施の形態と異なる。
【０２２５】
図３０は、第３の変形例の制御インターフェース２６０の一構成例を示すブロック図である。第３の変形例の制御インターフェース２６０は、ストローブ信号送受信回路２７１と、パラレル・シリアル変換部２７１および２７２と、バッファ回路２７４とをさらに備える点において第２の実施の形態と異なる。
【０２２６】
ストローブ信号送受信回路２７１は、ストローブ信号を送受信するものである。このストローブ信号送受信回路２７１は、位相制御信号により指示された位相のストローブ信号を生成する。また、ストローブ信号生成回路２７１は、不揮発性メモリ３００へのデータの送信時においてストローブ信号を生成し、パラレル・シリアル変換部２７２およびバッファ回路２７４を介して不揮発性メモリ３００に送信する。一方、不揮発性メモリ３００からのデータの受信時においてストローブ信号生成回路２７１は、パラレル・シリアル変換部２７３およびバッファ回路２７４を介して、不揮発性メモリ３００からのストローブ信号を受信する。不揮発性メモリ３００からのデータ（リードデータなど）の受信のタイミングは、このストローブ信号により制御される。
【０２２７】
パラレル・シリアル変換部２７２は、メモリコントローラから送信されるストローブ信号を、送信クロック信号ＴｘＣＬＫ（リファレンスクロック信号）に同期してシリアル信号に変換し、バッファ回路２７４に供給するものである。パラレル・シリアル変換部２７３は、不揮発性メモリ３００からのシリアル信号を、受信クロック信号ＲｘＣＬＫに同期してストローブ信号に変換し、ストローブ信号送受信回路２７１に供給するものである。バッファ回路２７４は、ドライバ２７５およびレシーバ２７６を備える。これらのドライバ２７５およびレシーバ２７６の構成は、ドライバ２６８およびレシーバ２６９と同様である。
【０２２８】
ストローブ信号送受信回路２７１等を設けることにより、リード時などにおける厳しいタイミング条件が緩和され、メモリシステムにおける基板やＬＳＩ（Large Scale Integration）の設計が容易となる。なお、メモリコントローラ２００に加えて、不揮発性メモリ３００もストローブ信号の位相を調整することもできる。また、ストローブ信号線２０６に、パラレル・シリアル変換部およびバッファ回路をさらに接続してもよい。また、メモリシステムは、ストローブ信号以外の制御信号の位相を調整することもできる。
【０２２９】
また、メモリシステムは、送信クロック信号や受信クロック信号の位相を調整することによりデータの伝送タイミングや制御信号の位相を調整しているが、この構成に限定されない。例えば、メモリシステムは、信号線にバッファ等を挿入することによりデータや制御信号を遅延させる遅延回路を備えてもよい。その場合、メモリコントローラ２００または不揮発性回路３００は、その遅延回路を制御することにより、リファレンスクロック信号に対して、データの伝送タイミングや制御信号の位相を調整する。
【０２３０】
このように、第３の変形例によれば、メモリコントローラ２００は、ストローブ信号の位相を調整するため、ストローブ信号によりデータの送受信を制御するメモリシステムにおいて、転送エラーを低減することができる。
【０２３１】
＜３．第３の実施の形態＞
［メモリコントローラの動作例］
第１の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インピーダンスの調整に加えて、インターフェースの転送クロックの位相の調整をさらに行ってもよい。第３の実施の形態のメモリシステムは、誤り検出時に、インピーダンスと転送クロックの位相との両方を調整する点において第１の実施の形態と異なる。
【０２３２】
第３の実施の形態のメモリコントローラ２００は、第２の実施の形態の位相調整部２８０をさらに備える点において第１の実施の形態と異なる。
【０２３３】
第３の実施の形態の位相調整部２８０は、インピーダンス調整コマンドの発行後、インピーダンスの調整が終了してから、位相の調整が開始されるようなタイミングで、位相調整コマンドを発行する。具体的には、最後のリードコマンドが発行されたときから、ＴＲ−ＴＳ＋ＴＭ＋ＴＺの期間が経過したときに、位相調整コマンドを発行する。
【０２３４】
また、第３の実施の形態の制御インターフェース２６０の構成は、第２の実施の形態の制御インターフェース２６０と同様である。
【０２３５】
［メモリコントローラの動作例］
図３１は、第３の実施の形態におけるメモリコントローラ２００の動作の一例を示すフローチャートである。第３の実施の形態のメモリコントローラ２００の動作は、ステップＳ９０２の後に、第２の実施の形態のステップＳ９０６およびＳ９０８をさらに実行する点以外は、第１の実施の形態と同様である。
【０２３６】
図３２は、第３の実施の形態における調整処理の一例を示すフローチャートである。第３の実施の形態の調整処理は、ステップＳ９２３の後に、第２の実施の形態のステップＳ９２４およびＳ９２６をさらに実行する点以外は、第１の実施の形態と同様である。
【０２３７】
［不揮発性メモリの動作例］
図３３は、第３の実施の形態における不揮発性メモリ３００の動作の一例を示すフローチャートである。第３の実施の形態の不揮発性メモリ３００は、インピーダンス調整コマンドでない場合（ステップＳ９５２：Ｎｏ）またはステップＳ９５３の後に、ステップＳ９５５、Ｓ９５６およびＳ９５４をさらに実行する。
【０２３８】
このように、本技術の第３の実施の形態によれば、メモリコントローラ２００は、誤りが生じると訂正処理を実行し、また、位相およびインピーダンスの調整処理を開始させるため、訂正期間に調整期間の少なくとも一部を隠蔽することができる。これにより、データを送受信することができない調整期間が短くなり、メモリコントローラ２００と不揮発性メモリ３００との間の通信速度が向上する。
【０２３９】
＜４．第４の実施の形態＞
第１の実施の形態では、メモリコントローラ２００は、訂正したリードデータをホストコンピュータ１００へ送信していた。しかし、その訂正したリードデータを、読み出したアドレスに書き戻すリフレッシュ処理を実行することにより、書き戻されたデータの信頼性が向上する。第４の実施の形態のメモリコントローラ２００は、リフレッシュ処理をさらに実行する点において第１の実施の形態と異なる。
【０２４０】
［メモリコントローラの構成例］
図３４は、第４の実施の形態におけるメモリコントローラ２００の一構成例を示すブロック図である。第４の実施の形態のメモリコントローラ２００の構成は、リフレッシュ処理部２９０をさらに備える点において第１の実施の形態と異なる。
【０２４１】
リフレッシュ処理部２９０は、リフレッシュ処理を実行するものである。このリフレッシュ処理部２９０は、発行されたリードコマンドＲＣＭＤの各々を保持しておく。そして、リフレッシュ処理部２９０は、誤り訂正部２４０から、訂正されたリードデータＲＤを受け取る。リフレッシュ処理部２９０は、保持しておいたリードコマンドＲＣＭＤに基づいて、リードデータＲＤが読み出されたアドレスを指定したライトコマンドＷＣＭＤを再発行する。そして、リフレッシュ処理部２９０は、訂正されたリードデータＲＤをライトデータＷＤとしてライトコマンドＷＣＭＤとともに制御インターフェース２６０へ供給する。ライトコマンドＷＣＭＤの再発行のタイミングは、式１などにより求められる。これにより、訂正されたリードデータＲＤが、そのデータが読み出されたアドレスに書き戻される。
【０２４２】
［メモリコントローラの動作例］
図３５は、第４の実施の形態におけるリード処理の一例を示すフローチャートである。第４の実施の形態のリード処理は、ステップＳ９３４をさらに実行する点において第１の実施の形態と異なる。メモリコントローラ２００は、調整処理（ステップＳ９２０）および訂正処理（ステップＳ９１７）の両方が終了すると、訂正したデータの書戻しを行う（ステップＳ９３４）。誤りがなかった場合（ステップＳ９１２：Ｎｏ）、または、ステップＳ９３４の後、メモリコントローラ２００は、リードデータをホストシステムへ送信し、リード処理を終了する。
【０２４３】
図３６は、第４の実施の形態におけるメモリシステムの動作の一例を示すタイミングチャートである。
【０２４４】
メモリコントローラ２００におけるリフレッシュ処理部２９０は、訂正処理および調整処理が完了した後に、リフレッシュ処理が開始されるタイミングでライトコマンドＷＣＭＤを再発行する。訂正されたリードデータＲＤは、ライトデータＷＤとしてデータ線２０８を介して不揮発性メモリ３００へ供給され、読み出されたアドレスに書き戻される。
【０２４５】
このように、第４の実施の形態によれば、メモリコントローラ２００は、訂正したリードデータを、そのデータが読み出されたアドレスに書き戻すため、データの信頼性を向上させることができる。
【０２４６】
＜５．第５の実施の形態＞
第４の実施の形態では、パリティにより訂正不可能な個数の誤りが生じないことを前提としていたが、そのような個数の誤りが生じる場合もある。この場合、訂正不可能なリードデータを再度読み出すリトライ処理を行うことにより、誤りの個数が低減させることができる。第５の実施の形態のメモリコントローラ２００は、リトライ処理をさらに実行する点において第４の実施の形態と異なる。
【０２４７】
［メモリコントローラの構成例］
図３７は、第５の実施の形態におけるメモリコントローラ２００の一構成例を示すブロック図である。第５の実施の形態のメモリコントローラ２００は、リトライ処理部２９１をさらに備える点において第４の実施の形態と異なる。
【０２４８】
リトライ処理部２９１は、リトライ処理を実行するものである。このリトライ処理部２９１は、発行されたリードコマンドＲＣＭＤの各々を保持しておく。リトライ処理部２９１は、誤り検出部２３０から、リードデータにおいて検出されたエラー数を受け取る。リトライ処理部２９１は、エラー数が、ＥＣＣの誤り訂正能力以下であるか否かを判断する。
【０２４９】
ここで、誤り訂正能力は、ＥＣＣからなる符号の最小ハミング距離ｄminにより決定される。符号の最小ハミング距離ｄminは、その符号に属する任意の異なる符号語間のハミング距離の最小値である。２ｔ＋１≦ｄminを満たすｔ（ｔは整数）の最大値をｔmaxとすると、パリティにより、ｔmax個までの符号要素を訂正することができる。この規則は、限界距離復号則と呼ばれる。
【０２５０】
エラー数が誤り訂正能力ｔmaxを超える場合には、リトライ処理部２９１は、保持しておいたリードコマンドＲＣＭＤのうち、誤りが検出されたリードデータＲＤに対応するコマンドを制御インターフェース２６０に供給する。このリトライ処理は、リトライ回数が一定回数に達するまで、訂正不可能な個数の誤りが生じるたびに繰り返し実行される。
【０２５１】
なお、リトライ処理部２９１は、リトライ処理において実行したコマンドをホストコンピュータ１００に通知してもよい。ホストコンピュータ１００は、通知されたコマンドを問題のある可能性のコマンドとして扱い、実行中の処理の中断などの所定の処理を実行する。
【０２５２】
また、第５の実施の形態の誤り訂正部２４０は、エラー数が誤り訂正能力ｔmaxを超える場合には、誤りの訂正処理を実行しない。一方、インピーダンス調整コマンド発行部２５０は、エラー数に関わらず、誤り検出時にインピーダンス調整コマンドを発行する。
【０２５３】
また、第５の実施の形態のリフレッシュ処理部２９０は、訂正された誤りの個数である訂正数を誤り訂正部２４０から、さらに受け取る。リフレッシュ処理部２９０は、訂正数が所定の閾値Ｔｈ２を超える場合に、リフレッシュ処理を実行する。ここで、閾値Ｔｈ２には、ＥＣＣの誤り訂正能力未満の値が設定される。
【０２５４】
［メモリコントローラの動作例］
図３８は、第５の実施の形態におけるリード処理の一例を示すフローチャートである。第５の実施の形態のリード処理は、ステップＳ９１４、Ｓ９３１、Ｓ９３２、Ｓ９３３、Ｓ９３４、Ｓ９３５およびＳ９４０をさらに実行する点において第４の実施の形態と異なる。
【０２５５】
誤りが生じた場合には（ステップＳ９１２：Ｙｅｓ）、メモリコントローラ２００は、誤りの個数を取得し（ステップＳ９１４）、訂正可能であるか否かを判断する（ステップＳ９３１）。
【０２５６】
訂正可能である場合には（ステップＳ９３１：Ｙｅｓ）、メモリコントローラ２００は、調整処理（ステップＳ９２０）および訂正処理（ステップＳ９１７）を並列に実行する。
【０２５７】
一方、訂正不可能である場合には（ステップＳ９３１：Ｎｏ）、メモリコントローラ２００は、リトライ回数が一定回数に満たないか否かを判断する（ステップＳ９３２）。リトライ回数が一定回数に満たない場合には、メモリコントローラ２００は、リトライ処理を実行する（ステップＳ９４０）。リトライ回数が一定回数以上である場合には（ステップＳ９３２：Ｎｏ）、メモリコントローラ２００は、リードエラーを設定したステータスを生成してホストコンピュータ１００へ送信する。このステータスには、リードエラーがＥＣＣ訂正不能によるエラーであること、エラーが発生したコマンドの種類、および、コマンドに係るアドレスなどが含まれる。このアドレスは、論理アドレスと物理アドレスとの変換をメモリコントローラ２００が行う場合には論理アドレスであり、そうでない場合には物理アドレスである。ステップＳ９３５の後、メモリコントローラ２００は、リード処理を終了する。
【０２５８】
また、調整処理（ステップＳ９２０）および訂正処理（ステップＳ９１７）の両方が実行された後、メモリコントローラ２００は、訂正数が閾値Ｔｈ２を超えたか否かを判断する（ステップＳ９３３）。訂正数が閾値Ｔｈ２を超えた場合には（ステップＳ９３３：Ｙｅｓ）、メモリコントローラ２００は、訂正したデータの書戻しを行う（ステップＳ９３４）。
【０２５９】
誤りが生じなかった場合（ステップＳ９１２：Ｎｏ）、訂正数が閾値Ｔｈ２以下である場合（ステップＳ９３３：Ｎｏ）、または、ステップＳ９３４の後、メモリコントローラ２００は、リードデータをホストコンピュータ１００へ送信してリード処理を終了する。
【０２６０】
図３９は、第５の実施の形態におけるリトライ処理の一例を示すフローチャートである。メモリコントローラ２００は、インピーダンス調整コマンドを発行可能なタイミングであるか否かを判断する（ステップＳ９４１）。発行可能なタイミングが経過していなければ（ステップＳ９４１：Ｎｏ）、メモリコントローラ２００はステップＳ９４１に戻る。
【０２６１】
一方、発行可能なタイミングであれば（ステップＳ９４１：Ｙｅｓ）、メモリコントローラ２００は、インピーダンス調整コマンドを発行する（ステップＳ９４２）。そして、メモリコントローラ２００は、一定サイクルが経過したか否かを判断する（ステップＳ９４３）。一定サイクルが経過していなければ（ステップＳ９４３：Ｎｏ）、メモリコントローラ２００はステップＳ９４３に戻る。一定サイクルが経過したのであれば（ステップＳ９４３：Ｙｅｓ）、メモリコントローラ２００はリードコマンドを再発行する（ステップＳ９４６）。ステップＳ９４６の後、メモリコントローラ２００は、リトライ処理を終了する。
【０２６２】
このように、本技術の第５の実施の形態によれば、メモリコントローラ２００は、訂正不可能であれば、インピーダンスを調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を高くすることができる。
【０２６３】
［第１の変形例］
第５の実施の形態では、メモリシステムは、誤り検出時にインピーダンスを調整していたが、インターフェースの転送クロックの位相を調整してもよい。第１の変形例のメモリシステムは、誤り検出時に転送クロックの位相を調整する点において第５の実施の形態と異なる。
【０２６４】
第１の変形例のメモリコントローラ２００の動作は、図３８に例示した第５の実施の形態のメモリコントローラ２００の動作と同様である。また、第１の変形例の調整処理は、第２の実施の形態と同様である。
【０２６５】
［メモリコントローラの動作例］
図４０は、第５の実施の形態の第１の変形例におけるリトライ処理の一例を示すフローチャートである。第１の変形例のリトライ処理は、ステップＳ９４２およびＳ９４３の代わりに、ステップＳ９４４およびＳ９４５を実行する点において第５の実施の形態と異なる。
【０２６６】
発行可能なタイミングであれば（ステップＳ９４１：Ｙｅｓ）、メモリコントローラ２００は、位相調整コマンドを発行する（ステップＳ９４４）。そして、メモリコントローラ２００は、受信クロック信号の位相の調整処理を実行し（ステップＳ９４５）、ステップＳ９４６を実行する。
【０２６７】
このように、第１の変形例によれば、メモリコントローラ２００は、訂正不可能であれば、位相を調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を向上させることができる。
【０２６８】
［第２の変形例］
第５の実施の形態では、メモリシステムは、誤り検出時にインピーダンスのみを調整していたが、インピーダンスおよび位相の両方を調整してもよい。第２の変形例のメモリシステムは、誤り検出時にインピーダンスおよび位相の両方を調整する点において第５の実施の形態と異なる。
【０２６９】
第２の変形例のメモリコントローラ２００の動作は、図３８に例示した第５の実施の形態のメモリコントローラ２００の動作と同様である。また、第２の変形例の調整処理は、第３の実施の形態と同様である。
【０２７０】
［メモリコントローラの動作例］
図４１は、第５の実施の形態の第２の変形例におけるリトライ処理の一例を示すフローチャートである。第２の変形例のリトライ処理は、ステップＳ９４３の後に、第１の変形例のステップＳ９４４およびＳ９４５をさらに実行する点において第５の実施の形態と異なる。
【０２７１】
このように、第２の変形例によれば、メモリコントローラ２００は、訂正不可能であれば、位相およびインピーダンスを調整するとともにリードデータを再度読み出すため、正常なリードデータを読み出す可能性を向上させることができる。
【０２７２】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０２７３】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０２７４】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０２７５】
なお、本技術は以下のような構成もとることができる。
（１）インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するインターフェース制御回路。
（２）前記調整制御部は、前記調整処理を前記誤り訂正処理が実行されている間に開始させる前記（１）記載のインターフェース制御回路。
（３）前記インターフェースは、
前記誤り訂正符号化されたデータを送信する送信回路と、
前記誤り訂正符号化されたデータを受信する受信回路とを含み、
前記調整制御部は、前記送信回路と前記受信回路とのインピーダンスを整合する処理を前記調整処理として開始させる前記（１）または（２）記載のインターフェース制御回路。
（４）前記調整制御部は、前記データの伝送タイミングを調整する処理を前記調整処理として開始させる前記（１）から（３）のいずれかに記載のインターフェース制御回路。
（５）前記調整制御部の制御に従って前記調整処理を実行する調整部をさらに具備する前記（４）記載のインターフェース制御回路。
（６）前記調整処理は、リファレンスクロック信号を基準として前記伝送タイミングを調整する処理である前記（４）または（５）に記載のインターフェース制御回路。
（７）前記調整制御部の制御に従って前記伝送タイミングを遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記伝送タイミングを調整する処理である前記（４）から（６）のいずれかに記載のインターフェース制御回路。
（８）前記調整処理は、前記伝送タイミングを制御する制御信号の位相を、リファレンスクロック信号を基準として調整することにより前記伝送タイミングを調整する処理である前記（４）から（７）のいずれかに記載のインターフェース制御回路。
（９）前記調整制御部の制御に従って前記伝送タイミングを制御する制御信号の位相を遅延させる遅延回路をさらに具備し、
前記調整処理は、前記遅延回路を制御することにより前記制御信号の位相を調整する処理である前記（４）から（８）のいずれかに記載のインターフェース制御回路。
（１０）前記インターフェースは、
前記誤り訂正符号化されたデータを送信クロック信号に同期して送信する送信回路と、
前記誤り訂正符号化されたデータを受信クロック信号に同期して受信する受信回路とを含み、
前記調整処理は、前記送信クロック信号および前記受信クロック信号の少なくとも一方の位相を調整することにより前記伝送タイミングを調整する処理である前記（４）から（９）のいずれかに記載のインターフェース制御回路。
（１１）前記調整処理は、前記送信クロック信号および前記受信クロック信号の一方を基準として他方の位相を調整することにより前記伝送タイミングを調整する処理である前記（１０）記載のインターフェース制御回路。
（１２）前記データは、メモリセルから読み出されたリードデータを含み、
前記送信クロック信号は、前記リードデータを送信するためのリードデータ送信クロック信号を含み、
前記受信クロック信号は、前記リードデータを受信するためのリードデータ受信クロック信号を含み、
前記調整処理は、前記リードデータ送信クロック信号および前記リードデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む前記（９）または（１１）に記載のインターフェース制御回路。
（１３）前記データは、メモリセルに書き込まれるライトデータを含み、
前記送信クロック信号は、前記ライトデータを送信するためのライトデータ送信クロック信号を含み、
前記受信クロック信号は、前記ライトデータを受信するためのライトデータ受信クロック信号を含み、
前記調整処理は、前記ライトデータ送信クロック信号および前記ライトデータ受信クロック信号の少なくとも一方の位相を調整する処理を含む前記（１０）から（１２）のいずれかに記載のインターフェース制御回路。
（１４）前記調整処理は、前記誤り訂正符号化されたデータの伝送タイミングを基準として前記位相を調整する処理である前記（１０）から（１１）のいずれかに記載のインターフェース制御回路。
（１５）前記調整制御部は、
所定のテストデータを生成するテストデータ生成部と、
前記テストデータを前記インターフェースに送信させるとともに帰還させて前記送信させたテストデータと前記帰還したテストデータとが一致するか否かに基づいて前記位相を調整する処理を前記調整処理として開始させる位相制御部を備える前記（１４）に記載のインターフェース制御回路。
（１６）前記インターフェースは、前記データを伝送するための複数のデータ線を含む前記（１）から（１５）のいずれかに記載のインターフェース制御回路。
（１７）前記調整処理は、前記データ線ごとに前記伝送特性を調整する処理である前記（１６）に記載のインターフェース制御回路。
（１８）前記データ線の各々は、複数のグループのいずれかに属し、
前記調整処理は、前記グループごとに前記伝送特性を調整する処理である前記（１６）または（１７）に記載のインターフェース制御回路。
（１９）前記調整制御部は、前記データにおいて所定の閾値を超える個数の前記誤りが生じた場合には前記調整処理を開始させる前記（１）から（１８）のいずれかに記載のインターフェース制御回路。
（２０）前記誤りが訂正されたデータを当該データが読み出されたアドレスに書き戻すリフレッシュ処理を実行するリフレッシュ処理部をさらに具備する前記（１）から（１９）のいずれかに記載のインターフェース制御回路。
（２１）前記リフレッシュ処理部は、前記誤り検出訂正符号の誤り訂正能力未満の所定の許容値よりも前記訂正された誤りの個数が多い場合には前記リフレッシュ処理を実行する前記（２０）記載のインターフェース制御回路。
（２２）前記データにおいて前記誤り検出訂正符号の誤り訂正能力を超える個数の前記誤りが生じた場合には前記伝送特性を調整させた後に前記データおよび前記誤り検出訂正符号を再度読み出すリトライ処理を実行するリトライ処理部をさらに具備する前記（１）から（２１）のいずれかに記載のインターフェース制御回路。
（２３）前記リトライ処理部は、所定のコマンドを発行して前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記所定のコマンドをホストコンピュータに通知する前記（２２）記載のインターフェース制御回路。
（２４）前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記データが読み出されたアドレスをホストコンピュータに通知する前記（２２）または（２３）記載のインターフェース制御回路。
（２５）前記リトライ処理部は、前記データおよび前記誤り検出訂正符号を再度読み出すとともに前記誤りが生じたことをホストコンピュータに通知する前記（２２）から（２４）のいずれかに記載のインターフェース制御回路。
（２６）前記調整制御部は、前記インターフェース制御回路に電源が供給された場合または前記誤りが生じた場合には前記調整処理を開始させる前記（１）から（２５）のいずれかに記載のインターフェース制御回路。
（２７）前記データは、不揮発性のメモリセルから読み出されたデータである前記（１）から（２６）のいずれかに記載のインターフェース制御回路。
（２８）誤り訂正符号化されたデータを伝送するインターフェースと、
前記データに誤りが生じたか否かを検出する誤り検出部と、
前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正部と、
前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御部と
を具備するメモリシステム。
（２９）誤り検出部が、インターフェースにより伝送された、誤り訂正符号化されたデータにおいて誤りが生じたか否かを検出する誤り検出手順と、
誤り訂正部が、前記誤りが生じた場合には前記誤りを訂正する誤り訂正処理を実行する誤り訂正手順と、
調整制御部が、前記誤りが生じた場合には前記インターフェースの伝送特性を調整する調整処理を開始させる調整制御手順と
を具備するインターフェース制御回路の制御方法。
【符号の説明】
【０２７６】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  ホストインターフェース
２２０  誤り検出訂正符号生成部
２３０  誤り検出部
２４０  誤り訂正部
２５０  インピーダンス調整コマンド発行部
２６０  制御インターフェース
２６１、４５５  シーケンサ
２６２、４５６  データバッファ
２６３、２６４、２６５、２７２、２７３、４５２、４５３、４５４  パラレル・シリアル変換部
２６６、２６７、２７４、４５１  バッファ回路
２６８、２７５、４２０、４６２  ドライバ
２６９、２７６、４１７、４６１  レシーバ
２７０  多相クロック生成回路
２７１  ストローブ信号送受信回路
２８０、３１５  位相調整部
２８１  位相調整コマンド発行部
２８２  テストデータ生成部
２８３  位相制御部
２８４  一致判定部
２９０  リフレッシュ処理部
２９１  リトライ処理部
３００  不揮発性メモリ
３１０  インピーダンス調整部
３１１  ステートマシン
３１２  制御信号保持部
３１３  反転回数カウンタ
３２０  アクセス制御部
３３０  メモリセルアレイ
４００  メモリインターフェース
４１０  オリジナルバッファ回路
４１２、４１３、４１８、４２０、４２２、４２３  トランジスタ
４１４、４１５、４１７、４１９  抵抗
４１１、４２５、４３３、４３７  プルアップ回路
４１６、４２６、４３８  プルダウン回路
４３１  外部端子
４３２  レプリカバッファ回路
４３６、４３９  コンパレータ
４４０  外部端子
４６０  バッファ回路
【図１】
2014241057.tif 000003
【図２】
2014241057.tif 000004
【図３】
2014241057.tif 000005
【図４】
2014241057.tif 000006
【図５】
2014241057.tif 000007
【図６】
2014241057.tif 000008
【図７】
2014241057.tif 000009
【図８】
2014241057.tif 000010
【図９】
2014241057.tif 000011
【図１０】
2014241057.tif 000012
【図１１】
2014241057.tif 000013
【図１２】
2014241057.tif 000014
【図１３】
2014241057.tif 000015
【図１４】
2014241057.tif 000016
【図１５】
2014241057.tif 000017
【図１６】
2014241057.tif 000018
【図１７】
2014241057.tif 000019
【図１８】
2014241057.tif 000020
【図１９】
2014241057.tif 000021
【図２０】
2014241057.tif 000022
【図２１】
2014241057.tif 000023
【図２２】
2014241057.tif 000024
【図２３】
2014241057.tif 000025
【図２４】
2014241057.tif 000026
【図２５】
2014241057.tif 000027
【図２６】
2014241057.tif 000028
【図２７】
2014241057.tif 000029
【図２８】
2014241057.tif 000030
【図２９】
2014241057.tif 000031
【図３０】
2014241057.tif 000032
【図３１】
2014241057.tif 000033
【図３２】
2014241057.tif 000034
【図３３】
2014241057.tif 000035
【図３４】
2014241057.tif 000036
【図３５】
2014241057.tif 000037
【図３６】
2014241057.tif 000038
【図３７】
2014241057.tif 000039
【図３８】
2014241057.tif 000040
【図３９】
2014241057.tif 000041
【図４０】
2014241057.tif 000042
【図４１】
2014241057.tif 000043