(57)【特許請求の範囲】
【請求項１】
メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数のストローブ信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、
前記送信された単位データを前記ストローブ信号に同期して複数段の保持部に順に保持し、所定のクロック信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路と
を具備するインターフェース回路。
【請求項２】
前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記ストローブ信号と前記単位データとを同期させて順に送信し、
前記コントローラ側インターフェース回路は、前記リードコマンドの送信後に前記ストローブ信号の送信を指示する周期信号送信コマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記周期信号送信コマンドに従って所定のサイクル数の前記ストローブ信号を送信する
請求項１記載のインターフェース回路。
【請求項３】
前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記ストローブ信号と前記単位データとを同期させて順に送信し、さらに所定のサイクル数の前記ストローブ信号を送信する
請求項１記載のインターフェース回路。
【請求項４】
前記メモリ側インターフェース回路は、前記リードデータが送信されない未送信期間において当該未送信期間内に送信したサイクル数が前記所定のサイクル数に達するまで前記ストローブ信号を繰り返し送信する
請求項３記載のインターフェース回路。
【請求項５】
前記コントローラ側インターフェース回路は、所定のサイクル数を設定する設定コマンドを前記メモリ側インターフェース回路へ送信する
請求項３記載のインターフェース回路。
【請求項６】
前記コントローラ側インターフェース回路は、所定数のパターンデータの送信を指示する開始コマンドを前記メモリ側インターフェース回路に送信し、
前記メモリ側インターフェース回路は、前記開始コマンドに従って前記所定数と同じサイクル数の前記ストローブ信号と前記パターンデータとを同期させて前記コントローラ側インターフェース回路に送信し、
前記コントローラ側インターフェース回路は、前記送信されたパターンデータを前記ストローブ信号に同期して前記複数段の保持部に順に保持し、前記クロック信号に同期して前記保持したパターンデータを順に読み出して当該読み出したパターンデータの個数と前記所定数との差を設定する前記設定コマンドを前記メモリ側インターフェース回路へ送信する
請求項５記載のインターフェース回路。
【請求項７】
前記単位データは、第１および第２のデータを含み、
前記メモリ側インターフェース回路は、前記ストローブ信号の立上りに同期して前記第１のデータを送信し、前記ストローブ信号の立下りに同期して前記第２のデータを送信する
請求項１記載のインターフェース回路。
【請求項８】
メモリセルと、
前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数のストローブ信号と前記単位データとを同期させて順に送信するインターフェース回路と
を具備する記憶装置。
【請求項９】
メモリセルと、
前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数のストローブ信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、
前記送信された単位データを前記ストローブ信号に同期して複数段の保持部に順に保持し、所定のクロック信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路と
を具備する情報処理システム。
【請求項１０】
メモリ側インターフェース回路が、メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数のストローブ信号と前記単位データとを同期させて順に送信する送信手順と、
コントローラ側インターフェース回路が、前記送信された単位データを前記ストローブ信号に同期して複数段の保持部に順に保持し、所定のクロック信号に同期して前記保持した単位データを順に読み出して出力する受信手順と
を具備するインターフェース回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、インターフェース回路、記憶装置、情報処理装システム、および、インターフェース回路の制御方法に関する。詳しくは、ストローブ信号に同期してデータを送受信するインターフェース回路、記憶装置、情報処理システム、および、インターフェース回路の制御方法に関する。
【背景技術】
【０００２】
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ（ＮＶＭ：Non-Volatile memory）が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。【０００３】
これらの不揮発性メモリは、一般にストローブ信号に同期してデータをメモリコントローラに転送する。そして、メモリコントローラは、不揮発性メモリからのデータを、ストローブ信号に同期してフリップフロップなどに保持し、保持したデータを内部クロック信号に同期して取り込んで処理する。【０００４】
ここで、メモリコントローラの内部クロック信号に同期して信号を取り込む場合には、例えば、ストローブ信号に同期して複数段のフリップフロップにデータを保持してから取り込む方法が用いられる。このように複数段のフリップフロップにデータを保持する構成では、ストローブ信号のサイクル数がデータ数と同じであると、フリップフロップの最終段から、全てのデータが出力されなくなるおそれがある。この場合、メモリコントローラは、一部のデータを取り込むことができなくなってしまう。そこで、データを全て取り込むことができるように、ストローブ信号の遅延時間を調整する遅延制御回路を設けたメモリコントローラが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１２３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の従来技術では、メモリコントローラとメモリとの間のデータの転送速度が速くなるほど、遅延時間の制御に要求される精度が高くなる。制御の精度を高くする方法としては、例えば、転送周波数より高い周波数のクロック信号を生成する発振回路を設け、そのクロック信号を用いてデータをオーバーサンプリングする方法や、遅延素子の遅延時間を小さくする方法が知られている。オーバーサンプリングを行う場合は、オーバーサンプリングを行う回路や発振回路などをさらに設ける必要があり、回路が複雑になって部品コストや設計コストが高くなってしまう。また、遅延時間の小さい遅延素子を設ける場合には、単位時間遅延させるのに必要な遅延素子の個数が多くなり、同様に部品コストや設計コストが高くなってしまう。特に、ＦＰＧＡ（Field-Programmable Gate Array）により回路を実装する場合には、ＦＰＧＡベンダーの提供する基本セルを用いる必要があるが、その基本セルの性能は固定である。このため、基本セルの性能に対応する速度よりも転送速度を速くする場合などにおいて、設計が困難となる。したがって、データの転送速度が速くなるほど、遅延時間の制御が困難になり、データを正確に転送することができなくなるおそれがある。【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、メモリとメモリコントローラとの間でデータを正確に転送することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の第１の周期信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、前記送信された単位データを前記第１の周期信号に同期して複数段の保持部に順に保持し、第２の周期信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路とを具備するインターフェース回路、および、その制御方法である。これにより、単位データの個数より多いサイクル数の周期信号と上記単位データとが同期して順に送信されるという作用をもたらす。【０００９】
また、この第１の側面において、前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記第１の周期信号と前記単位データとを同期させて順に送信し、前記コントローラ側インターフェース回路は、前記リードコマンドの送信後に前記第１の周期信号の送信を指示する周期信号送信コマンドを前記メモリ側インターフェース回路へ送信し、前記メモリ側インターフェース回路は、前記周期信号送信コマンドに従って所定のサイクル数の前記第１の周期信号を送信してもよい。これにより、周期信号送信コマンドに従って所定のサイクル数の周期信号が送信されるという作用をもたらす。【００１０】
また、この第１の側面において、前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記第１の周期信号と前記単位データとを同期させて順に送信し、さらに所定のサイクル数の前記第１の周期信号を送信してもよい。これにより、単位データの個数と同一のサイクル数の周期信号と単位データとが同期して順に送信され、さらに所定のサイクル数の周期信号が送信されるという作用をもたらす。【００１１】
また、この第１の側面において、前記メモリ側インターフェース回路は、前記リードデータが送信されない未送信期間において当該未送信期間内に送信したサイクル数が前記所定のサイクル数に達するまで前記第１の周期信号を繰り返し送信してもよい。これにより、未送信期間内に送信したサイクル数が所定のサイクル数に達するまで周期信号が繰り返し送信されるという作用をもたらす。【００１２】
また、この第１の側面において、上記コントローラ側インターフェース回路は、上記所定のサイクル数を設定する設定コマンドを上記メモリ側インターフェース回路へ送信してもよい。これにより、所定のサイクル数を設定する設定コマンドが送信されるという作用をもたらす。【００１３】
また、この第１の側面において、前記コントローラ側インターフェース回路は、所定数のパターンデータの送信を指示する開始コマンドを前記メモリ側インターフェース回路に送信し、前記メモリ側インターフェース回路は、前記開始コマンドに従って前記所定数と同じサイクル数の前記第１の周期信号と前記パターンデータとを同期させて前記コントローラ側インターフェース回路に送信し、前記コントローラ側インターフェース回路は、前記送信されたパターンデータを前記第１の周期信号に同期して前記複数段の保持部に順に保持し、前記第２の周期信号に同期して前記保持したパターンデータを順に読み出して当該読み出したパターンデータの個数と前記所定数との差を設定する前記設定コマンドを前記メモリ側インターフェース回路へ送信してもよい。これにより、読み出されたパターンデータの個数と所定数との差がサイクル数に設定されるという作用をもたらす。【００１４】
また、この第１の側面において、前記単位データは、第１および第２のデータを含み、前記メモリ側インターフェース回路は、前記第１の周期信号の立上りに同期して前記第１のデータを送信し、前記第１の周期信号の立下りに同期して前記第２のデータを送信してもよい。これにより、上記周期信号の立上りに同期して第１のデータが送信され、上記周期信号の立下りに同期して上記第２のデータが送信されるという作用をもたらす。【００１５】
また、本技術の第２の側面は、メモリセルと、前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の周期信号と前記単位データとを同期させて順に送信するインターフェース回路とを具備する記憶装置である。これにより、単位データの個数より多いサイクル数の周期信号と単位データとが同期して順に送信されるという作用をもたらす。【００１６】
また、本技術の第３の側面は、メモリセルと、前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の第１の周期信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、前記送信された単位データを前記第１の周期信号に同期して複数段の保持部に順に保持し、第２の周期信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路とを具備する情報処理システムである。これにより、単位データの個数より多いサイクル数の周期信号と単位データとが同期して順に送信されるという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、メモリとメモリコントローラとの間でデータを正確に転送することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態における情報処理システムの一構成例を示すブロック図である。
【図２】第１の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３】第１の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図４】第１の実施の形態におけるコントローラ側インターフェース回路の一構成例を示す図である。
【図５】第１の実施の形態におけるクロックイネーブル送信部およびクロック送信部の一構成例を示す回路図である。
【図６】第１の実施の形態におけるデータ受信部の一構成例を示すブロック図である。
【図７】第１の実施の形態におけるシリアルパラレル変換部およびクロック乗せ換え部の一構成例を示す回路図である。
【図８】第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図９】第１の実施の形態におけるメモリ側インターフェース回路の一構成例を示すブロック図である。
【図１０】第１の実施の形態におけるクロックイネーブル受信部およびストローブ送信部の一構成例を示す回路図である。
【図１１】第１の実施の形態におけるデータ受信部の一構成例を示す回路図である。
【図１２】第１の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図１３】第１の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図１４】第１の実施の形態におけるリード処理の一例を示すフローチャートである。
【図１５】第１の実施の形態におけるメモリコントローラおよび不揮発性メモリが信号を送受信するタイミングの一例を示すタイミングチャートである。
【図１６】第１の実施の形態におけるメモリコントローラがデータを保持するタイミングの一例を示すタイミングチャートである。
【図１７】第１の実施の形態の比較例におけるメモリコントローラがデータを保持するタイミングの一例を示すタイミングチャートである。
【図１８】第１の実施の形態の変形例におけるデータ受信部の一構成例を示す回路図である。
【図１９】第２の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図２０】第２の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図２１】第２の実施の形態におけるリード処理の一例を示すフローチャートである。
【図２２】第２の実施の形態におけるメモリコントローラおよび不揮発性メモリが信号を送受信するタイミングの一例を示すタイミングチャートである。
【図２３】第２の実施の形態の変形例におけるリード処理の一例を示すフローチャートである。
【図２４】第２の実施の形態の変形例におけるメモリコントローラおよび不揮発性メモリが信号を送受信するタイミングの一例を示すタイミングチャートである。
【図２５】第３の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図２６】第３の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図２７】第３の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図２８】第４の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図２９】第４の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図３０】第４の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図３１】第４の実施の形態におけるストローブ発行数設定処理の一例を示すフローチャートである。
【図３２】第２の実施の形態におけるメモリコントローラおよび不揮発性メモリが信号を送受信するタイミングの一例を示すタイミングチャートである。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（データ数より多いストローブ信号を送信する例）
２．第２の実施の形態（ストローブ発行コマンドを受信せずにデータ数より多いストローブ信号を送信する例）
３．第３の実施の形態（データ数に対して設定されたサイクル数多いストローブ信号を送信する例）
４．第４の実施の形態（データ数に対して算出されたサイクル数多いストローブ信号を送信する例）
【００２０】
＜１．第１の実施の形態＞
［情報処理システムの構成例］
図１は、実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、ホストコンピュータ１００およびストレージ２００を備える。
【００２１】
ホストコンピュータ１００は、情報処理システム全体を制御するものである。このホストコンピュータ１００は、アクセス要求やライトデータを生成してストレージ２００に信号線１０９を介して供給する。このアクセス要求は、ライトデータの書込みを要求するライト要求や、リードデータの読出しを指示するリード要求を含む。また、ホストコンピュータ１００は、ストレージ２００からリードデータを受け取る。
【００２２】
ストレージ２００は、メモリコントローラ３００および不揮発性メモリ４００を備える。このメモリコントローラ３００は、不揮発性メモリ４００を制御するものである。メモリコントローラ３００は、ライト要求に応じて、ライトデータを、誤り検出訂正符号（ＥＣＣ：Error detection and Correction Code）における符号語に変換（すなわち、符号化）する。メモリコントローラ３００は、アクセスコマンドとしてライトコマンドを発行し、不揮発性メモリ４００に信号線３０９を介してアクセスして符号化したライトデータを書き込む。
【００２３】
また、ホストコンピュータ１００からリード要求を受け取った場合、メモリコントローラ３００は、アクセスコマンドとしてリードコマンドを発行する。メモリコントローラ３００は、リードコマンドにより不揮発性メモリ４００にアクセスして符号化されたリードデータを読み出す。そして、メモリコントローラ３００は、符号化されたリードデータを、符号化前の元のデータに変換（すなわち、復号）する。また、メモリコントローラ３００は、ＥＣＣに基づいてリードデータにおける誤りの検出および訂正を行う。メモリコントローラ３００は、訂正したリードデータをホストコンピュータ１００に供給する。
【００２４】
不揮発性メモリ４００は、メモリコントローラ３００の制御に従って、データを記憶するものである。例えば、ＲｅＲＡＭが不揮発性メモリ４００として用いられる。この不揮発性メモリ４００は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ４００のアクセス単位であり、セクタとも呼ばれる。ブロックのそれぞれには物理アドレスが割り当てられている。なお、ＲｅＲＡＭの代わりに、フラッシュメモリ、ＰＣＲＡＭ、および、ＭＲＡＭなどを不揮発性メモリ４００として用いてもよい。なお、不揮発性メモリ４００は、特許請求の範囲に記載の記憶装置の一例である。
【００２５】
［メモリコントローラの構成例］
図２は、第１の実施の形態におけるメモリコントローラ３００の一構成例を示すブロック図である。このメモリコントローラ３００は、ＲＡＭ（Random Access Memory）３０２、ＣＰＵ（Central Processing Unit）３０３、ＥＣＣ処理部３０４およびＲＯＭ（Read Only Memory）３０５を備える。また、メモリコントローラ３００は、ホストインターフェース回路３０１、バス３０６およびコントローラ側インターフェース回路３２０を備える。
【００２６】
ＲＡＭ３０２は、ＣＰＵ３０３が実行する処理において必要となるデータを一時的に保持するものである。ＣＰＵ３０３は、メモリコントローラ３００全体を制御するものである。ＲＯＭ３０５は、ＣＰＵ３０３が実行するプログラム等を記憶するものである。ホストインターフェース回路３０１は、ホストコンピュータ１００との間でデータやアクセス要求を相互に交換するものである。バス３０６は、ＲＡＭ３０２、ＣＰＵ３０３、ＥＣＣ処理部３０４、ＲＯＭ３０５、ホストインターフェース回路３０１およびコントローラ側インターフェース回路３２０が相互にデータを交換するための共通の経路である。コントローラ側インターフェース回路３２０は、不揮発性メモリ４００との間でデータやコマンドを送受信するものである。
【００２７】
ＥＣＣ処理部３０４は、ライトデータを符号化し、また、符号化されたリードデータを復号するものである。
【００２８】
［メモリコントローラの構成例］
図３は、第１の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。このメモリコントローラ３００は、ＥＣＣ処理部３０４、アクセスコマンド発行部３１１、ストローブ発行指示部３１２およびコントローラ側インターフェース回路３２０を備える。
【００２９】
図３におけるアクセスコマンド発行部３１１は、図２におけるＲＡＭ３０２、ＣＰＵ３０３、ＥＣＣ処理部３０４、ＲＯＭ３０５、ホストインターフェース回路３０１、バス３０６およびコントローラ側インターフェース回路３２０などにより実現される。ストローブ発行指示部３１２についても同様である。
【００３０】
アクセスコマンド発行部３１１は、アクセス要求に応じてアクセスコマンドを発行するものである。例えば、アクセスコマンド発行部３１１は、アクセス要求の指定する論理アドレスを物理アドレスに変換する。ここで、論理アドレスは、ホストコンピュータ１００やメモリコントローラ３００により定義されたアドレス空間において、ホストコンピュータ１００がストレージ２００にアクセスする際のアクセス単位ごとに割り振られたアドレスである。また、物理アドレスは、メモリコントローラ３００が不揮発性メモリ４００にアクセスする際のアクセス単位ごとに不揮発性メモリ４００において割り振られたアドレスである。
【００３１】
そして、アクセスコマンド発行部３１１は、変換した物理アドレスを指定するアクセスコマンドを発行する。ホストコンピュータ１００のアクセス単位と不揮発性メモリ４００のアクセス単位とが異なる場合には、必要に応じて１つのアクセス要求から、複数のアクセスコマンドが発行される。アクセスコマンド発行部３１１は、発行したアクセスコマンドをコントローラ側インターフェース回路３２０に供給する。
【００３２】
ストローブ発行指示部３１２は、ストローブ発行コマンドをリードコマンドの送信後に発行するものである。このストローブ発行コマンドは、有効なデータを伴わずに、所定のサイクル数Ｅの周期信号をストローブ信号として発行することを指示するものである。ここで、Ｅは整数であり、例えば、「２」が設定される。また、有効なデータは、リードデータを送信単位で分割した個々のデータを意味し、リードデータ内のデータに該当しないデータは無効なデータとして扱われる。不揮発性メモリ４００は、リードコマンドを受信した場合に、有効なデータおよびストローブ信号を同期してメモリコントローラ３００に順に送信する。一方、ストローブ発行コマンドを受信した場合に不揮発性メモリ４００は、無効なデータおよびストローブ信号をメモリコントローラ３００に順に送信する。なお、ストローブ信号は、特許請求の範囲に記載の第１の周期信号の一例である。また、ストローブ発行コマンドは、特許請求の範囲に記載の周期信号送信コマンドの一例である。
【００３３】
［コントローラ側インターフェース回路の構成例］
図４は、コントローラ側インターフェース回路３２０の一構成例を示すブロック図である。このコントローラ側インターフェース回路３２０は、クロックイネーブル送信部３２５、チップセレクト送信部３３０、コマンドアドレス送信部３３１、クロック送信部３３５、ストローブ送信部３４０を備える。また、コントローラ側インターフェース回路３２０は、データ送信部３４１、データ受信部３５０と、クロック生成部３７０と、データ送信部３７１と、データ受信部３７２と、端子３８１乃至３８７とを備える。
【００３４】
クロックイネーブル送信部３２５は、クロック信号ＣＬＫ_ｃｔｒｌに同期してクロックイネーブル信号ＥＮを、端子３８１に接続されたイネーブル線を介して不揮発性メモリ４００に送信するものである。このクロックイネーブル信号ＥＮは、メモリコントローラ３００から不揮発性メモリ４００に送信されるベースクロック信号を不揮発性メモリ４００において有効にするか否かを指示する信号である。
【００３５】
チップセレクト送信部３３０は、クロック信号ＣＬＫ_ｃｔｒｌに同期してチップセレクト信号ＣＳを、端子３８２に接続された信号線を介して不揮発性メモリ４００に送信するものである。このチップセレクト信号ＣＳは、不揮発性メモリ４００のアクセスコマンドを有効にするか否かを指示する信号である。
【００３６】
コマンドアドレス送信部３３１は、クロック信号ＣＬＫ_ｃｔｒｌに同期してコマンドおよびアドレスＣＡを、端子３８３に接続されたコマンドアドレス線を介して不揮発性メモリ４００に送信するものである。
【００３７】
クロック送信部３３５は、クロック信号ＣＬＫ_ｉｆに同期して、ベースクロック信号ＣＫを、端子３８４に接続された信号線を介して不揮発性メモリ４００に供給するものである。このベースクロック信号ＣＫは、不揮発性メモリ４００において基準として用いられるクロック信号である。また、クロック信号ＣＬＫ_ｉｆの周波数は、前述のクロック信号ＣＬＫ_ｃｒｔｌのｋ（ｋは整数）倍に設定される。
【００３８】
ストローブ送信部３４０は、クロック信号ＣＬＫ_ｉｆに同期してストローブ信号ＤＱＳを、端子３８５に接続されたストローブ線を介して不揮発性メモリ４００に送信するものである。データ送信部３４１は、クロック信号ＣＬＫ_ｉｆに同期して、ライトデータを送信単位ごとにデータＤＱとして、端子３８６に接続されたデータ線を介して不揮発性メモリ４００に送信するものである。これらのストローブ送信部３４０およびデータ送信部３４１により、ライトデータ内のデータＤＱとストローブ信号とが同期して順に転送される。
【００３９】
データ受信部３５０は、不揮発性メモリ４００からのデータＤＱを端子３８６のデータ線を介して受信するものである。このデータ受信部３５０は、端子３８５に接続されたストローブ線を介して不揮発性メモリ４００からストローブ信号を受け取り、そのストローブ信号に同期してデータＤＱを順に保持する。そして、データ受信部３５０は、保持したデータＤＱを、クロック信号ＣＬＫ_ｃｔｒｌに同期して順に取り込んでバス３０６を介してＥＣＣ処理部３０４に供給する。
【００４０】
ここで、クロック信号ＣＬＫ_ｃｔｒｌの周波数は、ストローブ信号ＤＱＳと同じものとする。なお、これらの信号の周波数が異なる構成であってもよい。また、クロック信号ＣＬＫ_ｃｔｒｌは、特許請求の範囲に記載の第２の周期信号の一例である。
【００４１】
クロック生成部３７０は、クロック信号ＣＬＫ_ｃｔｒｌおよびＣＬＫ_ｉｆを生成するものである。このクロック生成部３７０は、生成したクロック信号ＣＬＫ_ｃｔｒｌをクロックイネーブル送信部３２５、チップセレクト送信部３３０、コマンドアドレス送信部３３１、データ受信部３５０およびデータ受信部３７２に供給する。また、クロック生成部３７０は、生成したクロック信号ＣＬＫ_ｉｆをクロック送信部３３５、ストローブ送信部３４０、データ送信部３４１およびデータ送信部３７１に供給する。
【００４２】
データ送信部３７１は、端子３８７に接続されたデータ線を介してデータを送信する点以外は、データ送信部３４１と同様の構成である。データ受信部３７２は、端子３８７に接続されたデータ線を介してデータを受信する点以外は、データ受信部３５０と同様の構成である。
【００４３】
なお、コントローラ側インターフェース回路３２０には、データ送信部３４１およびデータ受信部３５０からなる送受信回路と、データ送信部３７１およびデータ受信部３７２からなる送受信回路との他、同じ構成の複数の送受信回路が設けられている。例えば、全部で８個の送受信回路が設けられ、８本のデータ線を介してデータが送受信される。しかし、図４では、記載の便宜上、８個のうち２個のみが記載され、残りの６個の送受信回路は省略されている。データ線についても同様に、８本のうち２本のみが記載され、残りの６本は省略されている。
【００４４】
図５は、第１の実施の形態におけるクロックイネーブル送信部３２５およびクロック送信部３３５の一構成例を示す回路図である。同図におけるａは、クロックイネーブル送信部３２５の一構成例を示す回路図であり、同図におけるｂは、クロック送信部３３５の一構成例を示す回路図である。
【００４５】
クロックイネーブル送信部３２５は、インバータ３２６、フリップフロップ３２７およびドライバ３２８を備える。インバータ３２６は、クロック信号ＣＬＫ_ｃｔｒｌを反転してフリップフロップ３２７に供給するものである。フリップフロップ３２７は、反転されたクロック信号ＣＬＫ_ｃｔｒｌに同期してクロックイネーブル信号ＥＮを保持し、ドライバ３２８へ出力するものである。ドライバ３２８は、クロックイネーブル信号ＥＮを端子３８１を介して不揮発性メモリ４００に送信するものである。
【００４６】
なお、チップセレクト送信部３３０、コマンドアドレス送信部３３１、データ送信部３４１およびデータ送信部３７１のそれぞれの構成は、クロックイネーブル送信部３２５と同様である。
【００４７】
クロック送信部３３５は、バッファ３３６、フリップフロップ３３７およびドライバ３３８を備える。バッファ３３６は、クロック信号ＣＬＫ_ｉｆをフリップフロップ３３７に供給するものである。フリップフロップ３３７は、クロック信号ＣＬＫ_ｃｔｒｌに同期してベースクロック信号ＣＫを保持し、ドライバ３３８へ出力するものである。ドライバ３３８は、ベースクロック信号ＣＫを端子３８４を介して不揮発性メモリ４００に送信するものである。なお、ストローブ送信部３４０の構成は、クロック送信部３３５と同様である。
【００４８】
［データ受信部の構成例］
図６は、第１の実施の形態のデータ受信部３５０の一構成例を示すブロック図である。このデータ受信部３５０は、レシーバ３５１および３５２と、遅延同期回路３５３と、シリアルパラレル変換部３５４と、クロック乗せ換え部３５８とを備える。
【００４９】
レシーバ３５１は、端子３８５を介してストローブ信号ＤＱＳ、プリアンブル信号およびポストアンブル信号を受信するものである。ここで、プリアンブル信号は、データの出力に先立って出力される信号であり、例えば、クロック信号ＣＬＫ_ｃｔｒｌの１クロック期間に亘ってローレベルの信号がプリアンブル信号として出力される。また、ポストアンブル信号は、データの出力後に出力される信号であり、例えば、クロック信号ＣＬＫ_ｃｔｒｌの１．５クロック期間に亘ってローレベルの信号が出力される。レシーバ３５１は、プリアンブル信号を検出してからポストアンブル信号を検出するまでの間においてストローブ信号ＤＱＳを受信し、遅延同期回路３５３に供給する。
【００５０】
遅延同期回路３５３は、ストローブ信号ＤＱＳの位相を９０度ずらすものである。この遅延同期回路３５３は、位相をずらしたストローブ信号ＤＱＳｄをシリアルパラレル変換部３５４およびクロック乗せ換え部３５８に供給する。
【００５１】
レシーバ３５２は、有効なデータＤＱを受信するものである。レシーバ３５２は、受信したデータＤＱをシリアルパラレル変換部３５４に供給する。ここで、データＤＱは、ＤＤＲ（Double-Data-Rate）方式により転送されるデータであり、ストローブ信号の立上りに同期して転送されるデータと、その信号の立下りに同期して転送されるデータとを含む。
【００５２】
シリアルパラレル変換部３５４は、ストローブ信号ＤＱＳｄに同期して、データＤＱを、その信号の立上りに同期して転送されたデータと、立下りに同期して転送されたデータとに分割するものである。このシリアルパラレル変換部３５４は、分割したデータのそれぞれをクロック乗せ換え部３５８に供給する。
【００５３】
クロック乗せ換え部３５８は、シリアルパラレル変換部３５４により分割されたデータのそれぞれをストローブ信号ＤＱＳｄに同期して、フリップフロップなどの保持部に保持し、クロック信号ＣＬＫ_ｃｔｒｌに同期して読み出すものである。このクロック乗せ換え部３５８は、読み出したデータをバス３０６を介してＥＣＣ処理部３０４に供給する。
【００５４】
図７は、第１の実施の形態におけるシリアルパラレル変換部３５４およびクロック乗せ換え部３５８の一構成例を示す回路図である。
【００５５】
シリアルパラレル変換部３５４は、フリップフロップ３５５、３５６および３５７を備える。また、クロック乗せ換え部３５８は、スイッチ３５９および３６４と、フリップフロップ３６０、３６１、３６３、３６５、３６６、３６８および３６９と、インバータ３６９−１と、セレクタ３６２および３６７とを備える。なお、フリップフロップ３５５、３５６および３５７と、フリップフロップ３６０、３６１、３６３、３６５、３６６および３６８とは、特許請求の範囲に記載の保持部の一例である。
【００５６】
フリップフロップ３５５は、データＤＱをストローブ信号ＤＱＳｄに同期してデータＤＡとして保持し、フリップフロップ３５６に出力するものである。フリップフロップ３５６は、反転したストローブ信号ＤＱＳｄに同期してデータＤＡをデータＤＢ０として保持し、スイッチ３５９に出力するものである。このデータＤＢ０は、ストローブ信号の立上りに同期して転送されたデータである。フリップフロップ３５７は、ストローブ信号ＤＱＳｄを反転した信号に同期してデータＤＡをデータＤＢ１として保持し、スイッチ３６４に出力するものである。このデータＤＢ１は、ストローブ信号の立下りに同期して転送されたデータである。
【００５７】
スイッチ３５９は、ストローブ信号ＤＱＳｄに同期して、データＤＢ０の出力先をフリップフロップ３６０および３６１の間で切り替えるものである。例えば、ストローブ信号ＤＱＳｄの１サイクルが経過するたびに、データＤＢ０の出力先が切り替えられる。
【００５８】
フリップフロップ３６０は、ストローブ信号ＤＱＳｄに同期してスイッチ３５９からのデータＤＢ０をデータＤＣ００として保持し、セレクタ３６２に供給するものである。フリップフロップ３６１は、反転したストローブ信号ＤＱＳｄに同期してスイッチ３５９からのデータＤＢ０をデータＤＣ０１として保持し、セレクタ３６２に供給するものである。
【００５９】
フリップフロップ３６９は、クロック信号ＣＬＫ_ｃｔｒｌの立上りに同期して、セレクタ制御信号ＳＥＬ_ｃｔｒｌを保持するものである。フリップフロップ３６９−１は、そのセレクタ制御信号ＳＥＬ_ｃｔｒｌをセレクタ３６２および３６７とインバータ３６９−１とに供給する。インバータ３６９−１は、フリップフロップ３６９の出力端子からのセレクタ制御信号ＳＥＬ_ｃｔｒｌを反転してフリップフロップ３６９の入力端子に供給するものである。セレクタ３６２は、セレクタ制御信号ＳＥＬ_ｃｔｒｌに従って、データＤＣ００およびＤＣ０１のいずれかを選択し、フリップフロップ３６３に出力するものである。このセレクタ制御信号ＳＥＬ_ｃｔｒｌにより、セレクタ３６２は、例えば、クロック信号ＣＬＫ_ｃｔｒｌのクロック周期が経過するたびに、選択するデータを切り替える。
【００６０】
フリップフロップ３６３は、セレクタ３６２からのデータをクロック信号ＣＬＫ_ｃｔｒｌに同期してデータＤＤ０として保持し、バス３０６に出力するものである。
【００６１】
スイッチ３６４は、１サイクルのストローブ信号ＤＱＳｄに同期して、データＤＢ１の出力先をフリップフロップ３６５および３６６の間で切り替えるものである。例えば、ストローブ信号ＤＱＳｄの１サイクルが経過するたびに、データＤＢ１の出力先が切り替えられる。
【００６２】
フリップフロップ３６５は、ストローブ信号ＤＱＳｄに同期してスイッチ３６４からのデータＤＢ１をデータＤＣ１０として保持し、セレクタ３６７に供給するものである。フリップフロップ３６６は、反転したストローブ信号ＤＱＳｄに同期してスイッチ３６４からのデータＤＢ１をデータＤＣ１１として保持し、セレクタ３６７に供給するものである。
【００６３】
セレクタ３６７は、セレクタ制御信号ＳＥＬ_ｃｔｒｌに従って、データＤＣ１０およびＤＣ１１のいずれかを選択し、フリップフロップ３６８に出力するものである。このセレクタ制御信号ＳＥＬ_ｃｔｒｌにより、セレクタ３６７は、例えば、クロック信号ＣＬＫ_ｃｔｒｌのクロック周期が経過するたびに、選択するデータを切り替える。
【００６４】
フリップフロップ３６８は、セレクタ３６７からのデータをクロック信号ＣＬＫ_ｃｔｒｌに同期してデータＤＤ１として保持し、バス３０６に出力するものである。
【００６５】
このように、データ受信部３５０には、複数段のフリップフロップ（３５５、３５６および３６０など）が設けられる。これらのフリップフロップは、ストローブ信号ＤＱＳｄに同期して順にデータを保持する。このため、データＤＱの個数と同じサイクル数のストローブ信号ＤＱＳｄが供給された時点では、最後に送信されたデータＤＱが最終段のフリップフロップ（３６０など）に保持されず、その前段のフリップフロップに溜まったままになってしまう。しかし、ストローブ発行コマンドにより、サイクル数Ｅのストローブ信号がさらに送信される。このため、これらの余分に発行されたストローブ信号により、前段に溜まったデータが最終段のフリップフロップに押し出され、データ受信部３５０は、全てのデータを取り込むことができる。このサイクル数Ｅには、ストローブ信号に同期して動作するフリップフロップの段数が多いほど大きな一定の値が予め設定される。
【００６６】
［不揮発性メモリの構成例］
図８は、第１の実施の形態における不揮発性メモリ４００の一構成例を示すブロック図である。この不揮発性メモリ４００は、データバッファ４０１、メモリセルアレイ４０２、ドライバ４０３、アドレスデコーダ４０４、バス４０５、メモリ側インターフェース回路４１０、および、メモリ制御部４８０を備える。
【００６７】
データバッファ４０１は、メモリ制御部４８０の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ４０２は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、不揮発性の記憶素子が用いられる。具体的には、ＮＡＮＤ型やＮＯＲ型のフラッシュメモリ、ＲｅＲＡＭ、ＰＣＲＡＭ、または、ＭＲＡＭなどが記憶素子として用いられる。
【００６８】
ドライバ４０３は、アドレスデコーダ４０４により選択されたメモリセルに対してデータの書込み、または、データの読出しを行うものである。アドレスデコーダ４０４は、コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス４０５は、データバッファ４０１、メモリセルアレイ４０２、アドレスデコーダ４０４、メモリ制御部４８０およびメモリ側インターフェース回路４１０が相互にデータを交換するための共通の経路である。メモリ側インターフェース回路４１０は、メモリコントローラ３００と不揮発性メモリ４００とがデータやコマンドを送受信するためのインターフェースである。このメモリ側インターフェース回路４１０は、データＤＱからなるリードデータをメモリコントローラ３００に送信する際に、データＤＱの個数より多いサイクル数のストローブ信号とデータＤＱとを同期させて送信する。
【００６９】
メモリ制御部４８０は、ドライバ４０３およびアドレスデコーダ４０４を制御して、データの書込み、または、読出しを行わせるものである。また、メモリ制御部４８０は、ストローブ信号を発行してメモリ側インターフェース回路４１０に供給する。
【００７０】
［メモリ側インターフェース回路の構成例］
図９は、第１の実施の形態におけるメモリ側インターフェース回路４１０の一構成例を示すブロック図である。このメモリ側インターフェース回路４１０は、クロックイネーブル受信部４１５、チップセレクト受信部４２０、コマンドアドレス受信部４２５およびレシーバ４３０を備える。また、メモリ側インターフェース回路４１０は、ストローブ送信部４３５と、データ送信部４４０と、データ受信部４５０と、データ送信部４６０と、データ受信部４６１と、端子４７１乃至４７７とを備える。
【００７１】
クロックイネーブル受信部４１５は、ベースクロック信号ＣＫに同期してクロックイネーブル信号ＥＮを、端子４７１に接続された信号線を介して受信するものである。チップセレクト受信部４２０は、ベースクロック信号ＣＫに同期してチップセレクト信号ＣＳを、端子４７２に接続された信号線を介して受信するものである。コマンドアドレス受信部４２５は、ベースクロック信号ＣＫに同期してコマンドおよびアドレスＣＡを、端子４７３に接続されたコマンドアドレス線を介して受信するものである。
【００７２】
レシーバ４３０は、ベースクロック信号ＣＫを、端子４７４に接続された信号線を介して受信するものである。このベースクロック信号ＣＫは、クロックイネーブル信号ＥＮに従って有効または無効に設定され、メモリ側インターフェース回路４１０内の各回路に供給される。
【００７３】
ストローブ送信部４３５は、ベースクロック信号ＣＫに同期してストローブ信号ＤＱＳを、端子４７５に接続されたストローブ線を介してメモリコントローラ３００に送信するものである。データ送信部４４０は、リードデータを送信単位ごとに分割したデータＤＱを、ベースクロック信号ＣＫに同期して、端子４７６に接続されたデータ線を介してメモリコントローラ３００に送信するものである。これらのストローブ送信部４３５およびデータ送信部４４０により、データＤＱおよびストローブ信号ＤＱＳが同期して送信される。なお、データＤＱは、特許請求の範囲に記載の単位データの一例である。
【００７４】
データ受信部４５０は、ベースクロック信号ＣＫに同期してデータＤＱを、端子４７６に接続されたデータ線を介して受信するものである。
【００７５】
データ送信部４６０は、端子４７７に接続されたデータ線を介してデータを送信する点以外は、データ送信部４４０と同様の構成である。データ受信部４６１は、端子４７７に接続されたデータ線を介してデータを受信する点以外は、データ受信部４５０と同様の構成である。
【００７６】
図１０は、第１の実施の形態におけるクロックイネーブル受信部４１５およびストローブ送信部４３５の一構成例を示す回路図である。同図におけるａは、クロックイネーブル受信部４１５の一構成例を示す回路図である。同図におけるｂは、ストローブ送信部４３５の一構成例を示す回路図である。
【００７７】
クロックイネーブル受信部４１５は、レシーバ４１６およびフリップフロップ４１７を備える。レシーバ４１６は、クロックイネーブル信号ＥＮを受信してフリップフロップ４１７に供給するものである。フリップフロップ４１７は、ベースクロック信号ＣＫに同期してクロックイネーブル信号を保持し、バス４０５へ出力するものである。
【００７８】
なお、チップセレクト受信部４２０およびコマンドアドレス受信部４２５の構成は、クロックイネーブル受信部４１５と同様である。
【００７９】
ストローブ送信部４３５は、ドライバ４３６、セレクタ４３７およびフリップフロップ４３８を備える。ドライバ４３６は、ストローブ信号ＤＱＳの先頭および末尾に、プリアンブル信号およびポストアンブル信号を付加して、それらを順にメモリコントローラ３００へ送信するものである。セレクタ４３７は、フリップフロップ４３７からの信号と「０」とをベースクロック信号ＣＫに従って切り替えて、ドライバ４３６へ送信するものである。フリップフロップ４３７は、メモリ制御部４８０により発行されたストローブ信号ＤＱＳをベースクロック信号ＣＫに同期して保持し、セレクタ４３６に出力するものである。
【００８０】
なお、データ送信部４４０および４６０の構成は、ストローブ送信部４３５と同様である。
【００８１】
［データ受信部の構成例］
図１１は、第１の実施の形態におけるデータ受信部４５０の一構成例を示す回路図である。このデータ受信部４５０は、レシーバ４５１および４５４と、フリップフロップ４５２、４５３、４５５および４５６とを備える。
【００８２】
レシーバ４５１は、ストローブ線を介してストローブ信号ＤＱＳを受信するものである。レシーバ４５４は、データＤＱを受信してフリップフロップ４５２および４５５に供給するものである。
【００８３】
フリップフロップ４５２は、ストローブ信号ＤＱＳに同期して、メモリコントローラ３００からのデータＤＱを保持し、フリップフロップ４５３に供給するものである。フリップフロップ４５３は、ベースクロック信号ＣＫに同期してデータＤＱを保持し、バス４０５へ出力するものである。これらのフリップフロップ４５２および４５３には、ストローブ信号の立上りに同期して転送されたデータが保持される。
【００８４】
フリップフロップ４５５は、反転したストローブ信号ＤＱＳに同期して、メモリコントローラ３００からのデータＤＱを保持し、フリップフロップ４５６に供給するものである。フリップフロップ４５６は、反転したベースクロック信号ＣＫに同期してデータＤＱを保持し、バス４０５へ出力するものである。これらのフリップフロップ４５５および４５６には、ストローブ信号の立下がりに同期して転送されたデータが保持される。
【００８５】
［メモリ制御部の構成例］
図１２は、第１の実施の形態におけるメモリ制御部４８０の一構成例を示すブロック図である。このメモリ制御部４８０は、コマンドバッファ４８１、コマンドデコーダ４８２、アクセス制御部４８３およびストローブ信号発行部４８４を備える。
【００８６】
コマンドバッファ４８１は、コマンドを、受信した順に保持するものである。コマンドデコーダ４８２は、コマンドをデコードするものである。このコマンドデコーダ４８２は、コマンドバッファ４８１から未処理のコマンドを読み出してデコードし、デコードの完了したコマンドをコマンドバッファ４８１から削除する。また、コマンドデコーダ４８２は、アクセスコマンドのデコード結果をアクセス制御部４８３に供給し、ストローブ発行コマンドのデコード結果をストローブ信号発行部４８４に供給する。
【００８７】
アクセス制御部４８３は、アクセスコマンドのデコード結果に基づいてドライバ４０３およびアドレスデコーダ４０４を制御し、データの書込み、または、読出しを行わせるものである。また、アクセス制御部４８３は、ストローブ信号の発行数の取得に必要な情報（リードデータのデータサイズなど）をストローブ信号発行部４８４に供給する。
【００８８】
ストローブ信号発行部４８４は、ストローブ信号を発行するものである。このストローブ信号発行部４８４は、アクセス制御部からの情報に基づいて、リードデータを送信単位で分割したデータＤＱの個数を取得し、その個数と同じサイクル数のストローブ信号を発行する。また、ストローブ信号発行部４８４は、ストローブ発行コマンドのデコード結果に従って、サイクル数Ｅのストローブ信号を発行する。発行されたストローブ信号は、バス４０５を介してメモリ側インターフェース回路４１０に供給される。
【００８９】
［ストレージの動作例］
図１３は、第１の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。この動作は、例えば、ストレージ２００に電源が投入されたときに開始する。
【００９０】
メモリコントローラ３００は、不揮発性メモリ４００の初期化を行い（ステップＳ９０１）、ライト要求によりデータの書込みが要求されたか否かを判断する（ステップＳ９０３）。データの書込みが要求された場合（ステップＳ９０３：Ｙｅｓ）、メモリコントローラ３００は、ライトコマンドを発行し（ステップＳ９０４）、不揮発性メモリ４００は、ライトコマンドに従ってデータの書込みを行う（ステップＳ９０５）。
【００９１】
一方、リード要求によりデータの読出しが要求された場合には（ステップＳ９０３：Ｎｏ）、ストレージ２００は、リード処理を行う（ステップＳ９１０）。ステップＳ９０５またはＳ９１０の後、ストレージ２００は、ステップＳ９０３に戻る。
【００９２】
図１４は、第１の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ３００は、リード要求に応じてリードコマンドを発行する（ステップＳ９１１）。不揮発性メモリ４００は、リードコマンドに従ってデータを読み出し、プリアンブル信号を送信する（ステップＳ９１２）。そして、不揮発性メモリ４００は、データおよびストローブ信号を同期させて送信する（ステップＳ９１３）。
【００９３】
不揮発性メモリ４００は、次に送信するデータがあるか否かを判断する（ステップＳ９１４）。次に送信するデータがあれば（ステップＳ９１４：Ｙｅｓ）、不揮発性メモリ４００はステップＳ９１３に戻る。一方、次に送信するデータがなければ（ステップＳ９１４：Ｎｏ）、不揮発性メモリ４００は、ポストアンブル信号を送信する（ステップＳ９１５）。
【００９４】
ポストアンブル信号を受信したメモリコントローラ３００は、ストローブ発行コマンドを発行する（ステップＳ９１６）。不揮発性メモリ４００は、プリアンブル信号を送信し（ステップＳ９１７）、有効なデータを伴わずに、サイクル数Ｅのストローブ信号を送信し（ステップＳ９１８）、ポストアンブル信号を送信する（ステップＳ９１９）。ステップＳ９１９の後、ストレージ２００は、リード処理を終了する。
【００９５】
図１５は、第１の実施の形態におけるメモリコントローラ３００が信号を送受信するタイミングの一例を示すタイミングチャートである。同図におけるａは、タイミングＴ０乃至Ｔ１０におけるタイミングチャートであり、同図におけるｂはタイミングＴ１０以降におけるタイミングチャートである。まず、タイミングＴ０においてメモリコントローラ３００は、チップセレクト信号をローレベル（有効）にし、リード要求に応じてリードコマンドを発行する。リードコマンドの発行後は、チップセレクト信号はハイレベル（無効）に設定される。
【００９６】
不揮発性メモリ４００は、リードコマンドに従ってリードデータを読み出し、タイミングＴ４においてストローブ線を介してプリアンブル信号を送信する。そして、タイミングＴ５乃至Ｔ９において、不揮発性メモリ４００は、４つの有効なデータと、４サイクルのストローブ信号とを同期させて送信し、タイミングＴ１０においてポストアンブル信号を送信する。これらのデータのそれぞれは、ストローブ信号の立上りで転送されるデータと、立下りで転送されるデータとを含む。例えば、４つのデータは、ｄｔ０乃至ｄｔ７の８個のデータを含む。例えば、８本のデータ線によりデータを並列に転送する場合には、ｄｔ０乃至ｄｔ７のそれぞれのデータサイズは、８ビットである。また、ｄｔ０、ｄｔ２、ｄｔ６およびｄｔ８は、ストローブ信号の立上りに同期して転送され、残りのデータは立下りに同期して転送される。このため、ストローブ信号に同期して、１６ビットの単位で、データが転送される。
【００９７】
ポストアンブル信号を受信したメモリコントローラ３００は、タイミングＴ１１においてチップセレクト信号をローレベルにしてストローブ発行コマンドを発行する。不揮発性メモリ４００は、タイミングＴ１４において、ストローブ発行コマンドに応じてプリアンブル信号を送信し、タイミングＴ１５およびＴ１６において２サイクルのストローブ信号を送信する。そして、不揮発性メモリ４００は、タイミングＴ１７においてポストアンブル信号を送信する。なお、図１５において、斜線の部分は、無効なデータを示す。また、「ＨｉＺ」は、ハイインピーダンス状態を示す。
【００９８】
このように、不揮発性メモリ４００は、有効なデータの個数より多いサイクル数のストローブ信号をメモリコントローラ３００に送信する。
【００９９】
図１６は、第１の実施の形態におけるメモリコントローラ３００および不揮発性メモリ４００が信号を送受信するタイミングの一例を示すタイミングチャートである。例えば、ｄｔ０乃至ｄｔ７の８つのデータがストローブ信号ＤＱＳに同期して順に送信されるものとする。
【０１００】
フリップフロップ３５５は、タイミングｔ２、ｔ６、ｔ１０およびｔ１４において、データｄｔ０、ｄｔ２、ｄｔ４およびｄｔ６を順に保持する。そして、その後段のフリップフロップ３５６は、タイミングｔ４、ｔ８、ｔ１２およびｔ１６において、フリップフロップ３５６からのデータｄｔ０、ｄｔ２、ｄｔ４およびｄｔ６を順に保持する。一方、フリップフロップ３５７は、タイミングｔ４、ｔ８、ｔ１２およびｔ１６において、データｄｔ１、ｄｔ３、ｄｔ５およびｄｔ７を順に保持する。
【０１０１】
フリップフロップ３５６の後段のフリップフロップ３６０は、タイミングｔ６およびｔ１４において、データｄｔ０およびｄｔ４を順に保持する。一方、フリップフロップ３６１は、タイミングｔ１２においてデータｄｔ２を保持する。
【０１０２】
タイミングＴ１６において、４サイクルのストローブ信号の送信が完了する。この時点では、データｄｔ０、ｄｔ２、ｄｔ４およびｄｔ６のうち、最後のｄｔ６が、最終段のフリップフロップ３６１に保持されていない。しかし、不揮発性メモリ４００は、タイミングｔ１６およびｔ２０において、余分にストローブ信号を送信する。これらのストローブ信号により、タイミングｔ２０において、最後のデータｄｔ６が押し出されて、最終段のフリップフロップ３６１に保持される。したがって、データｄｔ０、ｄｔ２、ｄｔ４およびｄｔ６の全てが、後段のフリップフロップ３６３に順に出力される。
【０１０３】
また、フリップフロップ３５７の後段のフリップフロップ３６５は、タイミングｔ６およびｔ１４において、データｄｔ１およびｄｔ５を順に保持する。一方、フリップフロップ３６６は、タイミングｔ１２においてデータｄｔ３を保持する。４サイクルのストローブ信号の送信が完了するタイミングＴ１６において、データｄｔ１、ｄｔ３、ｄｔ５およびｄｔ７のうち、最後のｄｔ７が最終段のフリップフロップ３６６に保持されていない。しかし、不揮発性メモリ４００は、タイミングｔ１６およびｔ２０において、余分にストローブ信号を送信するため、タイミングｔ２０において、最後のデータｄｔ７が押し出されて最終段のフリップフロップ３６１に保持される。したがって、データｄｔ１、ｄｔ３、ｄｔ５およびｄｔ７の全てが、後段のフリップフロップ３６８に順に出力される。
【０１０４】
図１７は、第１の実施の形態の比較例におけるメモリコントローラがデータを保持するタイミングの一例を示すタイミングチャートである。この比較例では、有効なデータのデータ数と同じサイクル数のストローブ信号が不揮発性メモリ４００により送信されるものとする。この場合、４サイクルのストローブ信号の送信が完了するタイミングＴ１６において、最後のデータｄｔ６が、フリップフロップ３６１に保持されておらず、その前段のフリップフロップ３５６に溜まったままの状態となっている。また、最後のデータｄｔ７も、フリップフロップ３６５に保持されず、その前段のフリップフロップ３５７に溜まったままの状態となっている。このため、後段のフリップフロップ３６３および３６８に、最後のデータｄｔ６およびｄｔ７が出力されず、メモリコントローラ３００は、全てのデータをクロック信号に同期して取り込むことができなくなってしまう。
【０１０５】
これに対して、不揮発性メモリ４００がデータ数より多いサイクル数のストローブ信号を発行する構成では、図１６に例示したように、全てのデータが最終段のフリップフロップから出力される。このため、メモリコントローラ３００は、全てのデータをクロック信号に同期して取り込むことができる。この構成によれば、特許文献１のように位相調整回路を設けなくてよいため、その分、部品コストや設計コストなどを低減することができる。
【０１０６】
このように、本技術の第１の実施の形態によれば、不揮発性メモリ４００がデータ数より多いサイクル数のストローブ信号とデータとを同期させて送信するため、メモリコントローラ３００は、複数段の保持部にデータの全てを保持させて取り込むことができる。
【０１０７】
［変形例］
第１の実施の形態では、メモリコントローラ３００および不揮発性メモリ４００は、ＤＤＲ方式でデータを転送していたが、ＳＤＲ（Single-Data-Rate）方式でデータを転送してもよい。第１の実施の形態の変形例のメモリコントローラ３００および不揮発性メモリ４００は、ＳＤＲ方式でデータを転送する点において第１の実施の形態と異なる。
【０１０８】
図１８は、第１の実施の形態の変形例におけるデータ受信部３５０の一構成例を示すブロック図である。変形例におけるデータ受信部３５０は、シリアルパラレル変換部３５４の代わりにフリップフロップ３５５および３５６を備える点において第１の実施の形態と異なる。また、変形例のクロック乗せ換え部３５８は、フリップフロップ３６０および３６３のみが設けられる点において第１の実施の形態と異なる。
【０１０９】
フリップフロップ３６０は、フリップフロップ３５６の後段に設けられ、フリップフロップ３６３は、フリップフロップ３６０の後段に設けられる。これらのフリップフロップには、ストローブ信号の立上りに同期して、データが保持される。
【０１１０】
このように、変形例によれば、不揮発性メモリ４００が、データ数より多いサイクル数のストローブ信号の立上りに同期してデータを送信するため、立上りおよび立下りに同期して送信する場合より簡易な構成の回路によりデータを送受信することができる。
【０１１１】
＜２．第２の実施の形態＞
第１の実施の形態では、不揮発性メモリ４００は、ストローブ発行コマンドに従って余分のストローブ信号を発行していたが、ストローブ発行コマンドを受信せずに、余分のストローブ信号を発行してもよい。第２の実施の形態の不揮発性メモリ４００は、ストローブ発行コマンドを受信しない点において第１の実施の形態と異なる。
【０１１２】
図１９は、第２の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。第２の実施の形態のメモリコントローラ３００は、ストローブ発行指示部３１２を備えない点において第１の実施の形態と異なる。
【０１１３】
図２０は、第２の実施の形態におけるメモリ制御部４８０の一構成例を示すブロック図である。第２の実施の形態のメモリ制御部４８０は、ストローブ信号発行部４８４の代わりにストローブ信号発行部４８５を備える点において、第１の実施の形態と異なる。
【０１１４】
ストローブ信号発行部４８５は、アクセス制御部４８３からの情報に基づいて、データ数より多いサイクル数のストローブ信号を生成する。例えば、余分に発行するストローブ信号のサイクル数が「２」に設定されており、データ数が「４」である場合、６サイクルのストローブ信号が発行される。
【０１１５】
図２１は、第２の実施の形態におけるリード処理の一例を示すフローチャートである。第２の実施の形態のリード処理は、ステップＳ９１５乃至Ｓ９１７が実行されない点において第１の実施の形態と異なる。
【０１１６】
図２２は、第２の実施の形態におけるメモリコントローラ３００および不揮発性メモリ４００が、信号を送受信するタイミングの一例を示すタイミングチャートである。同図におけるａは、タイミングＴ０乃至Ｔ９におけるタイミングチャートであり、同図におけるｂはタイミングＴ９以降におけるタイミングチャートである。まず、タイミングＴ０においてメモリコントローラ３００は、リード要求に応じてリードコマンドを発行する。
【０１１７】
不揮発性メモリ４００は、リードコマンドに従ってリードデータを読み出し、タイミングＴ４においてプリアンブル信号を送信する。そして、タイミングＴ５乃至Ｔ８において、不揮発性メモリ４００は、４つの有効なデータと、４サイクルのストローブ信号とを同期させて送信する。
【０１１８】
そして、タイミングＴ９およびＴ１０において、不揮発性メモリ４００は、無効なデータと、２サイクルのストローブ信号とを送信し、タイミングＴ１１において、ポストアンブル信号を送信する。
【０１１９】
このように、第２の実施の形態によれば、不揮発性メモリ４００が、データ数と同じサイクル数のストローブ信号およびデータを送信した後に、サイクル数Ｅのストローブ信号を送信するため、ストローブ発行コマンドを発行する必要がなくなる。
【０１２０】
［変形例］
第２の実施の形態では、不揮発性メモリ４００は、全てのデータの送信後にサイクル数Ｅのストローブ信号を送信していたが、リードデータの送信が中断する未送信期間内に余分のストローブ信号を送信してもよい。第２の実施の形態の変形例の不揮発性メモリ４００は、未送信期間内に余分のストローブ信号を送信する点において、第２の実施の形態と異なる。
【０１２１】
図２３は、第２の実施の形態の変形例におけるリード処理の一例を示すフローチャートである。変形例のリード処理は、ステップＳ９２１およびＳ９２２をさらに実行する点において第２の実施の形態と異なる。
【０１２２】
次にデータを送信するデータが無い場合（ステップＳ９１４：Ｎｏ）、不揮発性メモリ４００は、サイクル数が所定数Ｅ（例えば、「２」）に達するまで、ストローブ信号を繰り返し送信する（ステップＳ９２１）。そして、不揮発性メモリ４００は、コマンドバッファ４８１内に未処理のリードコマンドがあるか否かを判断する（ステップＳ９２２）。未処理のリードコマンドがある場合（ステップＳ９２２：Ｙｅｓ）、不揮発性メモリ４００はステップＳ９１４に戻る。
【０１２３】
一方、未処理のリードコマンドが無い場合（ステップＳ９２２：Ｎｏ）、不揮発性メモリ４００は、全データの転送が完了したと判断してポストアンブル信号を送信する（ステップＳ９１９）。
【０１２４】
図２４は、第２の実施の形態の変形例におけるメモリコントローラ３００および不揮発性メモリ４００が信号を送受信するタイミングの一例を示すタイミングチャートである。同図におけるａは、タイミングＴ２１乃至Ｔ３２におけるタイミングチャートであり、同図におけるｂはタイミングＴ３２以降におけるタイミングチャートである。タイミングＴ２１においてメモリコントローラ３００は、リード要求に応じてリードコマンドＣＭＤ１を発行する。
【０１２５】
不揮発性メモリ４００は、リードコマンドＣＭＤ１に従って、リードデータＲＤ１を読み出し、タイミングＴ２４においてプリアンブル信号を送信する。そして、タイミングＴ２５乃至Ｔ２７において、不揮発性メモリ４００は、リードデータＲＤ１とストローブ信号とを同期させて送信する。
【０１２６】
一方、メモリコントローラ３００はタイミングＴ２６においてリードコマンドＣＭＤ２を発行する。不揮発性メモリ４００は、リードコマンドＣＭＤ２に従ってリードデータＲＤ２を読み出し、タイミングＴ２８乃至Ｔ３０において、リードデータＲＤ２とストローブ信号とを同期させて送信する。
【０１２７】
また、メモリコントローラ３００は、タイミングＴ３１においてリードコマンドＣＭＤ３を発行する。タイミングＴ３１では、このリードコマンドＣＭＤ３のデコードが完了していないため、データの送信が途切れる。このデータの未送信期間において不揮発性メモリ４００は、無効なデータおよびストローブ信号を送信する。そして、不揮発性メモリ４００は、リードコマンドＣＭＤ３に従ってリードデータＲＤ３を読み出し、タイミングＴ３２乃至Ｔ３５において、リードデータＲＤ３とストローブ信号とを同期させて送信する。
【０１２８】
そして、メモリコントローラ３００は、タイミングＴ３６においてリードコマンドＣＭＤ４を発行する。タイミングＴ３６乃至Ｔ３９の期間は、このリードコマンドＣＭＤ４に対応するデータは読み出されておらず、データが途切れる。このデータの未送信期間において不揮発性メモリ４００は、２サイクルに達するまで、ストローブ信号を繰り返し送信する。そして、不揮発性メモリ４００は、リードコマンドＣＭＤ４に従ってリードデータＲＤ４を読み出し、タイミングＴ３９乃至Ｔ４１において、そのリードデータＲＤ４とストローブ信号とを同期させて送信する。
【０１２９】
このように、変形例によれば、不揮発性メモリ４００は、データの未送信期間においてストローブ信号を送信するため、データの転送速度の低下を抑制することができる。
【０１３０】
＜３．第３の実施の形態＞
第１の実施の形態では、不揮発性メモリ４００は、余分に発行するストローブ信号のサイクル数Ｅを一定の値としていたが、メモリコントローラ３００の制御により、そのサイクル数を変更してもよい。余分に必要なサイクル数Ｅは、メモリコントローラ３００実装時に、フリップフロップの段数から得ることができるが、例えば、一部の回路の提供を他社から受けた場合や設計変更が行われた場合には、サイクル数Ｅの値を変更する必要が生じる。第３の実施の形態の不揮発性メモリ４００は、メモリコントローラの制御に従って、サイクル数Ｅの値を変更する点において第１の実施の形態と異なる。
【０１３１】
図２５は、第３の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。第３の実施の形態のメモリコントローラ３００は、キャリブレーション処理部３１３をさらに備える点において第１の実施の形態と異なる。
【０１３２】
キャリブレーション処理部３１３は、ホストコンピュータ１００からのキャリブレーション要求に応じて、データ線のインピーダンスやタイミングなどを調整するキャリブレーション処理を行うものである。キャリブレーション処理において、キャリブレーション処理部３１３は、キャリブレーションを行うための特定のパターンデータの出力を要求するキャリブレーションコマンドを発行する。例えば、ＬＰＤＤＲ（Low Power Double Data Rate）２規格におけるＭＲＲ（Mode Register Read）コマンドがキャリブレーションコマンドとして発行される。また、このキャリブレーションコマンドには、余分に発行するストローブ信号のサイクル数が記載される。このため、メモリコントローラ３００は、キャリブレーションコマンドにより、余分に発行するサイクル数Ｅを設定することができる。Ｅに設定可能な最小値は「０」である。なお、キャリブレーションコマンドは、特許請求の範囲に記載の設定コマンドの一例である。
【０１３３】
図２６は、第３の実施の形態におけるメモリ制御部４８０の一構成例を示すブロック図である。第３の実施の形態のメモリ制御部４８０は、ストローブ発行数レジスタ４８６および調整パターン生成部４８７をさらに備える点において第１の実施の形態と異なる。
【０１３４】
ストローブ発行数レジスタ４８６は、設定されたサイクル数Ｅを保持するものである。このストローブ発行数レジスタ４８６には、キャリブレーションコマンドのデコードにより取り出されたサイクル数Ｅが保持される。保持された値は、不揮発性メモリ４００が再起動し、初期化されるまで有効である。第３の実施の形態のストローブ信号発行部４８４は、ストローブ発行数レジスタ４８６に保持されたサイクル数Ｅを読み出し、そのサイクル数のストローブ信号を余分に発行する。
【０１３５】
特許文献１のように、メモリコントローラ３００に位相調整回路を実装する場合は、データ数と同じサイクル数のストローブ信号を発行すればよいため、ストローブ発行数レジスタ４８６には「０」が設定される。一方、メモリコントローラ３００に位相調整回路を実装しない場合には、ストローブ発行数レジスタ４８６には「０」より大きい一定値が設定される。このように、ストローブ発行数レジスタ４８６に保持させるサイクル数Ｅを変更可能な構成とすることにより、メモリコントローラ３００の設計の選択肢を増加することができる。
【０１３６】
また、キャリブレーションのときにサイクル数Ｅを設定することにより、ストレージ２００は、従来と同じ手順で起動処理を行うことができる。
【０１３７】
なお、キャリブレーションコマンドによりストローブ発行数レジスタ４８６の値を変更しているが、キャリブレーションコマンド以外のコマンドにより、このレジスタを更新する構成とすることもできる。
【０１３８】
調整パターン生成部４８７は、キャリブレーションコマンドに従って、キャリブレーションのためのパターンデータを調整パターンとして生成するものである。
【０１３９】
図２７は、第３の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。第３の実施の形態のストレージ２００の動作は、ステップＳ９０２をさらに実行する点において第１の実施の形態と異なる。
【０１４０】
メモリコントローラ３００は、不揮発性メモリ４００の初期化（ステップＳ９０１）の後、キャリブレーションとともに、余分に発行するストローブ信号のサイクル数の設定を行う（ステップＳ９０２）。そして、ストレージ２００は、ステップＳ９０３以降の処理を行う。
【０１４１】
このように、第３の実施の形態によれば、メモリコントローラ３００は、余分に発行するストローブ信号のサイクル数をキャリブレーションコマンドにより設定するため、余分のストローブ信号のサイクル数を任意の値に変更することができる。
【０１４２】
＜４．第４の実施の形態＞
第１の実施の形態では、余分に発行するストローブ信号のサイクル数Ｅを一定の値としていたが、既知のパターンデータの送受信により、サイクル数Ｅを求めてもよい。余分に必要なサイクル数は、メモリコントローラ３００実装時に、フリップフロップの段数から得ることができるが、例えば、一部の回路の提供を他社から受けた場合や設計変更が行われた場合には、必要なサイクル数を確認する必要がある。第４の実施の形態の不揮発性メモリ４００は、パターンデータの送受信により、余分に発行するサイクル数Ｅを求める点において第１の実施の形態と異なる。
【０１４３】
図２８は、第４の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。第４の実施の形態のメモリコントローラ３００は、ストローブ発行数設定部３１４をさらに備える点において第１の実施の形態と異なる。
【０１４４】
ストローブ発行数設定部３１４は、余分に必要なストローブ信号のサイクル数を算出して設定するものである。このストローブ発行数設定部３１４は、ホストコンピュータ１００からのストローブ発行数設定要求に応じて、測定開始コマンドを発行する。この測定開始コマンドは、既知のパターンデータを測定パターンとして送信することを不揮発性メモリ４００に指示するコマンドである。
【０１４５】
不揮発性メモリ４００は、測定開始コマンドに従って、測定パターンを送信単位で分割したｓ個のデータＤＱを、ストローブ信号に同期して送信する。コントローラ側インターフェース回路３２０は、測定パターンを分割したデータＤＱをストローブ信号に同期して受信する。ストローブ発行数設定部３１４は、受信されたデータＤＱの個数ｒと、ｓとの差を必要なサイクル数として算出する。例えば、送信されたデータＤＱの個数ｓが「１０」で、受信された個数ｒが「８」である場合、必要なサイクル数Ｅとして「２」が算出される。そして、ストローブ発行数設定部３１４は、算出したサイクル数Ｅを設定する発行数設定コマンドを発行して送信する。
【０１４６】
図２９は、第４の実施の形態におけるメモリ制御部４８０の一構成例を示すブロック図である。第４の実施の形態のメモリ制御部４８０は、ストローブ発行数レジスタ４８６および測定パターン生成部４８８をさらに備える点において第１の実施の形態と異なる。また、ストローブ発行数レジスタ４８６には、発行数設定コマンドのデコードにより得られたサイクル数が保持される。
【０１４７】
測定パターン生成部４８８は、測定開始コマンドのデコード結果に基づいて測定パターンを生成し、バス４０５を介してメモリ側インターフェース回路４１０に供給するものである。
【０１４８】
図３０は、第４の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。第４の実施の形態のストレージ２００の動作は、不揮発性メモリ４００の初期化（ステップＳ９０１）の後、ストローブ発行数設定処理（ステップＳ９３０）を実行する点において第１の実施の形態と異なる。
【０１４９】
図３１は、第４の実施の形態におけるストローブ発行数設定処理の一例を示すフローチャートである。メモリコントローラ３００は、ストローブ発行数設定要求に応じて測定開始コマンドを発行して送信する（ステップＳ９３１）。不揮発性メモリ４００は、その測定開始コマンドに従って、測定パターンを生成し、送信単位で分割して送信する（ステップＳ９３２）。メモリコントローラ３００は、不揮発性メモリ４００からのデータを受信し、不揮発性メモリ４００が送信した個数ｓとメモリコントローラ３００が受信した個数ｒとから、必要なストローブ信号の発行数Ｅを算出する（ステップＳ９３３）。
【０１５０】
メモリコントローラ３００は、算出した個数を設定する発行数設定コマンドを発行して送信し（ステップＳ９３４）、不揮発性メモリ４００は、その発行数設定コマンドに従って、余分に発行するサイクル数Ｅを設定する（ステップＳ９３５）。
【０１５１】
図３２は、第４の実施の形態におけるメモリコントローラ３００および不揮発性メモリ４００が信号を送受信するタイミングの一例を示すタイミングチャートである。タイミングＴ５０において、メモリコントローラ３００が測定開始コマンドを送信すると、不揮発性メモリ４００は、その測定開始コマンドに従って測定パターンを生成する。不揮発性メモリ４００は、タイミングＴ５３においてプリアンブル信号を送信し、タイミングＴ５４乃至Ｔ５６において、測定パターンを分割したデータＰＴ０乃至ＰＴ９をストローブ信号に同期して送信する。そして、タイミングＴ５７において、不揮発性メモリ４００は、ポストアンブル信号を送信する。メモリコントローラ３００は、ＰＴ０乃至ＰＴ９のうち受信した個数ｒと、送信された個数ｓとの差を必要なサイクル数Ｅとして設定する。
【０１５２】
このように、第４の実施の形態によれば、メモリコントローラ３００は、測定パターンを分割したデータの送信数と受信数との差を、ストローブ信号のサイクル数として設定するため、必要なストローブ信号のサイクル数を正確に求めて設定することができる。
【０１５３】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１５４】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１５５】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【０１５６】
なお、本技術は以下のような構成もとることができる。
（１）メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の第１の周期信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、
前記送信された単位データを前記第１の周期信号に同期して複数段の保持部に順に保持し、第２の周期信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路と
を具備するインターフェース回路。
（２）前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記第１の周期信号と前記単位データとを同期させて順に送信し、
前記コントローラ側インターフェース回路は、前記リードコマンドの送信後に前記第１の周期信号の送信を指示する周期信号送信コマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記周期信号送信コマンドに従って所定のサイクル数の前記第１の周期信号を送信する
前記（１）記載のインターフェース回路。
（３）前記コントローラ側インターフェース回路は、前記リードデータの読出しを指示するリードコマンドを前記メモリ側インターフェース回路へ送信し、
前記メモリ側インターフェース回路は、前記リードコマンドに従って前記リードデータを読み出して前記単位データの個数と同一のサイクル数の前記第１の周期信号と前記単位データとを同期させて順に送信し、さらに所定のサイクル数の前記第１の周期信号を送信する
前記（１）記載のインターフェース回路。
（４）前記メモリ側インターフェース回路は、前記リードデータが送信されない未送信期間において当該未送信期間内に送信したサイクル数が前記所定のサイクル数に達するまで前記第１の周期信号を繰り返し送信する
前記（３）記載のインターフェース回路。
（５）前記コントローラ側インターフェース回路は、前記所定のサイクル数を設定する設定コマンドを前記メモリ側インターフェース回路へ送信する
前記（３）または（４）に記載のインターフェース回路。
（６）前記コントローラ側インターフェース回路は、所定数のパターンデータの送信を指示する開始コマンドを前記メモリ側インターフェース回路に送信し、
前記メモリ側インターフェース回路は、前記開始コマンドに従って前記所定数と同じサイクル数の前記第１の周期信号と前記パターンデータとを同期させて前記コントローラ側インターフェース回路に送信し、
前記コントローラ側インターフェース回路は、前記送信されたパターンデータを前記第１の周期信号に同期して前記複数段の保持部に順に保持し、前記第２の周期信号に同期して前記保持したパターンデータを順に読み出して当該読み出したパターンデータの個数と前記所定数との差を設定する前記設定コマンドを前記メモリ側インターフェース回路へ送信する
前記（５）記載のインターフェース回路。
（７）前記単位データは、第１および第２のデータを含み、
前記メモリ側インターフェース回路は、前記第１の周期信号の立上りに同期して前記第１のデータを送信し、前記第１の周期信号の立下りに同期して前記第２のデータを送信する
前記（１）から（６）のいずれかに記載のインターフェース回路。
（８）メモリセルと、
前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の周期信号と前記単位データとを同期させて順に送信するインターフェース回路と
を具備する記憶装置。
（９）メモリセルと、
前記メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の第１の周期信号と前記単位データとを同期させて順に送信するメモリ側インターフェース回路と、
前記送信された単位データを前記第１の周期信号に同期して複数段の保持部に順に保持し、第２の周期信号に同期して前記保持した単位データを順に読み出して出力するコントローラ側インターフェース回路と
を具備する情報処理システム。
（１０）メモリ側インターフェース回路が、メモリセルから読み出されたリードデータを所定単位ごとに分割した単位データの個数より多いサイクル数の第１の周期信号と前記単位データとを同期させて順に送信する送信手順と、
コントローラ側インターフェース回路が、前記送信された単位データを前記第１の周期信号に同期して複数段の保持部に順に保持し、第２の周期信号に同期して前記保持した単位データを順に読み出して出力する受信手順と
を具備するインターフェース回路の制御方法。
【符号の説明】
【０１５７】
１００  ホストコンピュータ
２００  ストレージ
３００  メモリコントローラ
３０１  ホストインターフェース回路
３０２  ＲＡＭ
３０３  ＣＰＵ
３０４  ＥＣＣ処理部
３０５  ＲＯＭ
３０６、４０５  バス
３１１  アクセスコマンド発行部
３１２  ストローブ発行指示部
３１３  キャリブレーション処理部
３１４  ストローブ発行数設定部
３２０  コントローラ側インターフェース回路
３２５  クロックイネーブル送信部
３２６、３６９−１  インバータ
３２７、３３７、３５５、３５６、３５７、３６０、３６１、３６３、３６５、３６６、３６８、３６９、４１７、４３８、４５２、４５３、４５５、４５６  フリップフロップ
３２８、３３８、４０３、４３６  ドライバ
３３０  チップセレクト送信部
３３１  コマンドアドレス送信部
３３５  クロック送信部
３３６  バッファ
３４０  ストローブ送信部
３４１、３７１、４４０、４６０  データ送信部
３５０、３７２、４５０、４６１  データ受信部
３５１、３５２、４１６、４３０、４５１、４５４  レシーバ
３５３  遅延同期回路
３５４  シリアルパラレル変換部
３５８  クロック乗せ換え部
３５９、３６４  スイッチ
３６２、３６７、４３７  セレクタ
３７０  クロック生成部
３８１、３８２、３８３、３８４、３８５，３８６、３８７、４７１、４７２．４７３、４７４、４７５、４７６、４７７  端子
４００  不揮発性メモリ
４０１  データバッファ
４０２  メモリセルアレイ
４０４  アドレスデコーダ
４１０  メモリ側インターフェース回路
４１５  クロックイネーブル受信部
４２０  チップセレクト受信部
４２５  コマンドアドレス受信部
４３５  ストローブ送信部
４８０  メモリ制御部
４８１  コマンドバッファ
４８２  コマンドデコーダ
４８３  アクセス制御部
４８４、４８５  ストローブ信号発行部
４８６  ストローブ発行数レジスタ
４８７  調整パターン生成部
４８８  測定パターン生成部
【図１】
0006500910.tif 000002
【図２】
0006500910.tif 000003
【図３】
0006500910.tif 000004
【図４】
0006500910.tif 000005
【図５】
0006500910.tif 000006
【図６】
0006500910.tif 000007
【図７】
0006500910.tif 000008
【図８】
0006500910.tif 000009
【図９】
0006500910.tif 000010
【図１０】
0006500910.tif 000011
【図１１】
0006500910.tif 000012
【図１２】
0006500910.tif 000013
【図１３】
0006500910.tif 000014
【図１４】
0006500910.tif 000015
【図１５】
0006500910.tif 000016
【図１６】
0006500910.tif 000017
【図１７】
0006500910.tif 000018
【図１８】
0006500910.tif 000019
【図１９】
0006500910.tif 000020
【図２０】
0006500910.tif 000021
【図２１】
0006500910.tif 000022
【図２２】
0006500910.tif 000023
【図２３】
0006500910.tif 000024
【図２４】
0006500910.tif 000025
【図２５】
0006500910.tif 000026
【図２６】
0006500910.tif 000027
【図２７】
0006500910.tif 000028
【図２８】
0006500910.tif 000029
【図２９】
0006500910.tif 000030
【図３０】
0006500910.tif 000031
【図３１】
0006500910.tif 000032
【図３２】
0006500910.tif 000033