(57)【要約】【課題】低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いた不揮発性メモリのチャネル制御を行うシステム（コントローラ）を提供する。【解決手段】コントローラ１０１は、制御プロセッサとしてのＣＵ１３０と、不揮発性メモリデバイスインターフェース及びマイクロシーケンサを含むＬＦＩ１３２とを備える。ＣＵ１３０は、コマンドインターフェース（ＢＩＢ１１２等）を介して、コマンドを受け取り、レスポンスを送出してもよい。不揮発性メモリデバイスインターフェースは、当該システムと１以上の不揮発性メモリデバイスとを接続してもよい。マイクロシーケンサは、通常、（ｉ）制御プロセッサと（ｉｉ）不揮発性メモリデバイスインターフェースとに接続される。【選択図】図２
2014157603.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出する制御プロセッサと、
前記システムと１以上の不揮発性メモリデバイスとを接続する不揮発性メモリデバイスインターフェースと、
（ｉ）前記制御プロセッサと（ｉｉ）前記不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有するマイクロシーケンサとを備え、
前記コントロールストアは、前記マイクロシーケンサで読み取り可能、かつ、前記制御プロセッサで書き込み可能であり、
前記コマンドのうち特定コマンドを受け取ると、
前記制御プロセッサは、前記特定コマンドに従い、前記コントロールストア内の位置で前記マイクロシーケンサに実行開始させることができ、
前記マイクロシーケンサは、前記不揮発性メモリデバイスインターフェースに接続された前記１以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行することができる
システム。
【請求項２】
前記不揮発性メモリデバイスインターフェースは、複数のデータ入出力ピンと、複数の制御入出力ピンとを備える
請求項１に記載のシステム。
【請求項３】
前記マイクロシーケンサは、前記制御入出力ピンと前記データ入出力ピンとの状態を変更して、前記プロトコルに従い前記特定コマンドを実行することができる
請求項２に記載のシステム。
【請求項４】
前記コントロールストアは、前記不揮発性メモリデバイスインターフェースに取付けられた前記１以上の不揮発性メモリデバイスに関連付けられている１以上のプロトコルを実行するよう前記制御プロセッサによってプログラミングされる
請求項１に記載のシステム。
【請求項５】
前記制御プロセッサは、さらに、
まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができ、
続いて、前記１以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができる
請求項４に記載のシステム。
【請求項６】
さらに、
前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、出力データバッファを有する出力データインターフェースと、
前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、入力データバッファを有する入力データインターフェースとを備え、
前記出力データバッファは、前記不揮発性メモリデバイスインターフェースに出力されるデータを受け取り可能であり、
前記入力データバッファは、前記不揮発性メモリデバイスインターフェースから入力されたデータを受け取り可能である
請求項１に記載のシステム。
【請求項７】
前記マイクロシーケンサは、さらに、（ｉ）前記入力データバッファの全体状態を検出し、（ｉｉ）前記全体状態の検出結果に応じて、前記コントロールストア内の所定の位置にジャンプすることができる
請求項６に記載のシステム。
【請求項８】
前記システムは、ソリッドステートドライブ（ＳＳＤ）装置の一部である
請求項１に記載のシステム。
【請求項９】
前記システムは、１以上の集積回路として実装される
請求項１に記載のシステム。
【請求項１０】
不揮発性メモリチャネルの制御方法であって、
制御プロセッサに接続されたコマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出するステップと、
前記制御プロセッサに接続されたマイクロシーケンサを用いて、コントロールストア内の位置で命令実行を開始するステップとを含み、
前記位置は、受け取った前記コマンドのうち特定コマンドに従い、前記制御プロセッサにより決定され、
前記マイクロシーケンサは、不揮発性メモリデバイスインターフェースにより前記マイクロシーケンサに接続された１以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行する
制御方法。
【請求項１１】
さらに、
前記制御プロセッサを用いて、前記不揮発性メモリデバイスインターフェースに取付けられた前記１以上の不揮発性メモリデバイスに関連付けられている１以上のプロトコルを実行するよう前記コントロールストアをプログラミングするステップを含む
請求項１０に記載の制御方法。
【請求項１２】
さらに、
まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップと、
続いて、前記１以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップとを含む
請求項１１に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、特に、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いて不揮発性メモリのチャネル制御を実装する方法及び／又は装置に関する。
【背景技術】
【０００２】
従来の不揮発性メモリ制御システムでは、当該システムで利用可能な種類のデバイスにフレキシブルに対応できるよう様々なプロトコルの使用を試みてきた。様々なプロトコルに対応するには、想定されるタイプのインターフェースごと、及び、必要なインターフェースコマンドタイプごとの専用制御回路が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、インターフェースプロトコルごとの専用制御回路に依存することはあまりフレキシブルな手法ではない。この場合、インターフェースプロトコルが新しくなったりわずかに変更したりすると、費用のかかる回路再設計が必要となる。代わりに、中央演算処理装置（ＣＰＵ）を用いて、不揮発性メモリインターフェースの低レベル制御のフレキシブル性を可能にすることができる。しかしながら、これではＣＰＵにかなりの負荷をかけるため、性能が制限されてしまう。
【０００４】
ゆえに、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いた不揮発性メモリのチャネル制御を実装することが望ましい。
【課題を解決するための手段】
【０００５】
本発明は、制御プロセッサと、不揮発性メモリデバイスインターフェースと、マイクロシーケンサとを備えたシステムに関する。制御プロセッサは、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出してもよい。不揮発性メモリデバイスインターフェースは、当該システムと１以上の不揮発性メモリデバイスとを接続してもよい。マイクロシーケンサは、通常、（ｉ）制御プロセッサと（ｉｉ）不揮発性メモリデバイスインターフェースとに接続される。マイクロシーケンサは、マイクロシーケンサで読み取り可能、かつ、制御プロセッサで書き込み可能なコントロールストアを備える。コマンドのうち特定コマンドを受け取ると、制御プロセッサは、特定コマンドに従い、コントロールストア内の位置でマイクロシーケンサに実行開始させることができ、マイクロシーケンサは、不揮発性メモリデバイスインターフェースに接続された１以上の不揮発性メモリデバイスのプロトコルに従い、特定コマンドの少なくとも一部を実行することができる。
【０００６】
より詳しくは、本発明の一形態は、システムであって、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出する制御プロセッサと、前記システムと１以上の不揮発性メモリデバイスとを接続する不揮発性メモリデバイスインターフェースと、（ｉ）前記制御プロセッサと（ｉｉ）前記不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有するマイクロシーケンサとを備え、前記コントロールストアは、前記マイクロシーケンサで読み取り可能、かつ、前記制御プロセッサで書き込み可能であり、前記コマンドのうち特定コマンドを受け取ると、前記制御プロセッサは、前記特定コマンドに従い、前記コントロールストア内の位置で前記マイクロシーケンサに実行開始させることができ、前記マイクロシーケンサは、前記不揮発性メモリデバイスインターフェースに接続された前記１以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行することができる。
【０００７】
ここで、前記不揮発性メモリデバイスインターフェースは、複数のデータ入出力ピンと、複数の制御入出力ピンとを備えてもよい。
【０００８】
また、前記マイクロシーケンサは、前記制御入出力ピンと前記データ入出力ピンとの状態を変更して、前記プロトコルに従い前記特定コマンドを実行することができてもよい。
【０００９】
また、前記コントロールストアは、前記不揮発性メモリデバイスインターフェースに取付けられた前記１以上の不揮発性メモリデバイスに関連付けられている１以上のプロトコルを実行するよう前記制御プロセッサによってプログラミングされてもよい。
【００１０】
また、前記制御プロセッサは、さらに、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができ、続いて、前記１以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができてもよい。
【００１１】
また、さらに、前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、出力データバッファを有する出力データインターフェースと、前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、入力データバッファを有する入力データインターフェースとを備え、前記出力データバッファは、前記不揮発性メモリデバイスインターフェースに出力されるデータを受け取り可能であり、前記入力データバッファは、前記不揮発性メモリデバイスインターフェースから入力されたデータを受け取り可能であってもよい。
【００１２】
また、前記マイクロシーケンサは、さらに、（ｉ）前記入力データバッファの全体状態を検出し、（ｉｉ）前記全体状態の検出結果に応じて、前記コントロールストア内の所定の位置にジャンプすることができてもよい。
【００１３】
また、前記システムは、ソリッドステートドライブ（ＳＳＤ）装置の一部であってもよい。
【００１４】
また、前記システムは、１以上の集積回路として実装されてもよい。
【００１５】
また、本発明の別の形態は、不揮発性メモリチャネルの制御方法であって、制御プロセッサに接続されたコマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出するステップと、前記制御プロセッサに接続されたマイクロシーケンサを用いて、コントロールストア内の位置で命令実行を開始するステップとを含み、前記位置は、受け取った前記コマンドのうち特定コマンドに従い、前記制御プロセッサにより決定され、前記マイクロシーケンサは、不揮発性メモリデバイスインターフェースにより前記マイクロシーケンサに接続された１以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行する。
【００１６】
ここで、さらに、前記制御プロセッサを用いて、前記不揮発性メモリデバイスインターフェースに取付けられた前記１以上の不揮発性メモリデバイスに関連付けられている１以上のプロトコルを実行するよう前記コントロールストアをプログラミングするステップを含んでもよい。
【００１７】
また、さらに、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップと、続いて、前記１以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップとを含んでもよい。
【発明の効果】
【００１８】
本発明により、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いた不揮発性メモリのチャネル制御が実現される。つまり、専用回路で実現した場合の長所と汎用プロセッサで実現した場合の長所の両方を併せ持つ不揮発性メモリのチャネル制御が実現される。
【図面の簡単な説明】
【００１９】
本発明の実施形態は、後述の詳細な説明、並びに、添付された特許請求の範囲及び図面から明らかになる。
【図１】図１は、本発明の実施形態に係る不揮発性メモリ制御システムを示す図である。
【図２】図２は、本発明の実施形態に係るインターフェース管理プロセッサを示す図である。
【図３】図３は、図２の出力データバッファの実装例を示す図である。
【図４】図４は、図２の入力データバッファの実装例を示す図である。
【図５】図５は、図２の制御部の実装例を示す図である。
【図６】図６は、図２の低レベル不揮発性メモリインターフェースの実装例を示す図である。
【図７】図７は、図６の低レベル不揮発性メモリインターフェースシーケンサ部の実装例を示す図である。
【図８】図８は、図６のＤＱ取り込みブロックの実装例を示す図である。
【図９】図９は、図８のＤＱ取り込みニアパッド論理回路（ＮＰＬ）ブロックの実装例を示す図である。
【図１０】図１０は、図８のＤＬＬブロックの実装例を示す図である。
【図１１】図１１は、出力インターフェースニアパッド論理回路ブロックの実装例を示す図である。
【図１２】図１２は、本発明の実施形態に係るマルチチャネル型不揮発性メモリ制御システムを示す図である。
【発明を実施するための形態】
【００２０】
本発明の実施形態は、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いて不揮発性メモリ（例えば、フラッシュなど）のチャネル制御を実装する方法及び／又は装置を含む。本発明の実施形態では、（ｉ）高レベル制御用汎用中央演算処理装置（ＣＰＵ）と、不揮発性メモリインターフェースの低レベル制御用プログラマブルマイクロシーケンサとを組み合わせ、（ｉｉ）マイクロシーケンサを用いて、シーケンスプログラミングで定義されたような不揮発性メモリインターフェースのクロックサイクル制御によりクロックサイクルを供給し、（ｉｉｉ）どのような不揮発性メモリインターフェースも扱えるようにマイクロシーケンサをプログラミングでき、（ｉｖ）まだ想定されていない今後の不揮発性メモリインターフェースのプログラミングを可能にし、（ｖ）マイクロシーケンサを用いて、不揮発性メモリのピン出力を制御、データ出力及びデータ取込を制御、インターフェース動作モードを設定、かつ／又は、（パイプライン遅延を生じることなく）定義されたシーケンスで設定回数ループするよう命令し、（ｖｉ）マイクロシーケンサを用いて、コンフィギュラブルな方法でデータ欠乏状態及びデータバックプレッシャー状態に対処できる性能を与え、（ｖｉｉ）ＣＰＵとマイクロシーケンサとの間で共有メモリを実装することにより、シーケンスパラメータを引き渡し可能、かつ、マイクロシーケンス制御コードを容易に変更可能にし、（ｖｉｉｉ）シーケンスを実行するための要求をマイクロシーケンサに渡し、シーケンスが完了、又は、エラー状態のときにのみマイクロシーケンサからのレスポンスを生成し、かつ／又は、（ｉｘ）より高レベルなスケジューリング、管理、及び、決定を行えるようにＣＰＵの負荷を削減してもよい。
【００２１】
図１は、本発明の実施形態に係る不揮発性メモリ制御システム１００を示す図である。ある実施形態では、不揮発性メモリ制御システム１００は、ブロック１０１とブロック１０３とを備える。ブロック１０１は、インターフェース管理プロセッサ（ＩＭＰ）とも呼ばれるメモリチャネルコントローラを実装してもよい。ブロック１０３は、コントローラホストを実装してもよい。コントローラ１０１は、本発明に係るシステムの一例であり、１以上の個別不揮発性メモリチャネルを制御してもよい。ある実施形態では、複数の不揮発性メモリチャネルを制御するようにコントローラ１０１のマルチインスタンスを実装してもよい。コントローラ１０１は、コマンドを受け取ってホスト１０３にレスポンスを送出するコマンドインターフェースを有する。ホスト１０３は、例えば、バックエンド処理部（ＢＥＰＵ）を備えてもよい。複数の不揮発性メモリチャネルを実装する実施形態では、ホスト１０３は、また、コントローラ１０１のマルチインスタンスとＢＥＰＵとを接続する多重化回路を備えてもよい。ある実施形態では、ホスト１０３は、ソリッドステートディスク（ＳＳＤ）コントローラなどのＩ／Ｏデバイスコントローラであり、ＢＥＰＵは、ＮＡＮＤフラッシュ不揮発性メモリチップなどの複数の不揮発性メモリデバイスをスケジューリング及び／又はデータ管理するコントローラの一部である。別の実施形態では、ＢＥＰＵは、データ又はその他の情報を格納し、かつ、当該データ又はその他の情報をホスト１０３とコントローラ１０１との間で移動させるためのデータバッファリング及びダイレクトメモリアクセス（ＤＭＡ）エンジンを備える。
【００２２】
また、コントローラ１０１は、システム１００と不揮発性記憶媒体１０５とを接続する不揮発性メモリインターフェースを有してもよい。不揮発性記憶媒体１０５は、１以上の不揮発性メモリデバイス１０７を備えてもよい。不揮発性メモリデバイス１０７は、ある実施形態において、１以上の不揮発性メモリダイ１０９を有する。不揮発性メモリデバイス１０７のうち特定タイプのものによれば、この特定の不揮発性メモリデバイス１０７内の複数の不揮発性メモリダイ１０９は、オプション及び／又は選択的に、並列アクセス可能である。不揮発性メモリデバイス１０７は、通常、通信的にコントローラ１０１と接続できるあるタイプのストレージデバイスの代表的なものである。しかしながら、様々な実施形態では、ＳＬＣ（シングルレベルセル）ＮＡＮＤフラッシュメモリ、ＭＬＣ（マルチレベルセル）ＮＡＮＤフラッシュメモリ、ＴＬＣ（トリプルレベルセル）ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、強誘電体メモリ（例えば、ＦｅＲＡＭ、Ｆ−ＲＡＭ、ＦＲＡＭ（登録商標）など）、相変化メモリ（例えば、ＰＲＡＭ、ＰＣＲＡＭなど）、レーストラックメモリ（又は、ドメイン壁メモリ（ＤＷＭ））、抵抗変化型メモリ（ＲＲＡＭ（登録商標）又はＲｅＲＡＭ）、又は、他のタイプのメモリデバイス若しくはストレージメディアなど、どんなタイプのストレージデバイスも利用可能である。
【００２３】
ある実施形態では、コントローラ１０１及び不揮発性記憶媒体１０５は別々の集積回路に実装される。コントローラ１０１と不揮発性記憶媒体１０５とを別々の集積回路（又は装置）として実装した場合、コントローラ１０１の不揮発性メモリインターフェースは、通常、複数のデータ入力／出力（Ｉ／Ｏ）ピンと複数の制御Ｉ／Ｏピンとを管理できる。データＩ／Ｏピン及び制御Ｉ／Ｏピンは、コントローラ１０１を含む装置と不揮発性記憶媒体１０５を形成する外部デバイスとを接続するように構成されてもよい。
【００２４】
図２は、本発明の実施形態に係るコントローラ１０１の実装例を示す図である。ある実施形態では、コントローラ１０１は、インターフェース管理プロセッサ（ＩＭＰ）を実装する。ある実施形態では、コントローラ１０１は、ブロック（又は回路）１１０と、ブロック（又は回路）１１２と、ブロック（又は回路）１１４と、ブロック（又は回路）１１６と、ブロック（又は回路）１１８と、ブロック（又は回路）１２０と、ブロック（又は回路）１２２と、ブロック（又は回路）１２４とを備える。通常、ブロック１１０は、コンフィギュラブルで、フレキシブル、かつ、拡張可能な方法で複数の不揮発性メモリデバイスを制御するシリコン論理回路及びファームウェアを実装する。ブロック１１２は、バスインターフェースブロック（ＢＩＢ）を実装する。ブロック１１４は、コマンドバッファ（ＣＢ）を実装する。ブロック１１６は、マイクロシーケンサを介して不揮発性メモリデバイスインターフェースに接続され、出力データバッファを有する出力データインターフェースの一例であり、出力データバッファ（ＯＤＢ）を実装する。ブロック１１８は、レスポンスバッファ（ＲＢ）を実装する。ブロック１２０は、マイクロシーケンサを介して不揮発性メモリデバイスインターフェースに接続され、入力データバッファを有する入力データインターフェースの一例であり、入力データバッファ（ＩＤＢ）を実装する。ブロック１２２は、設定／ステータスレジスタ（ＣＳＲ）ブロックを実装する。ブロック１２４は、同期ブロックを実装する。
【００２５】
バスインターフェースブロック（ＢＩＢ）１１２は、バックエンド処理部（例えば、ホスト１０３）との情報伝達を処理する。ＢＩＢ１１２は、出力バス（例えば、ＯＢ）を介してＢＥＰＵから受け取った低レベルのデータリンクコマンドを処理し、コマンドバッファ１１４と出力データバッファ１１６とにコマンドとデータとを渡す。また、ＢＩＢ１１２は、入力バス（例えば、ＩＢ）を介して、レスポンスバッファ（ＲＢ）１１８からのコマンドレスポンスと入力データバッファ（ＩＤＢ）１２０からの入力データとをバックエンド処理部に送出する。コマンドバッファ（ＣＢ）１１４は、出力バスワードをハードウェア制御ポート（ＨＣＰ）のダブルワードに蓄積し、このＨＣＰダブルワードをＣＵ（制御部）１３０に出力する。ダブルワードという用語は、１サイクルにおけるデータ転送単位を表す（例えば、８バイト）。レスポンスバッファ（ＲＢ）１１８は、ＣＵ１３０からＨＣＰダブルワードを取得し、このＨＣＰダブルワードを複数の入力バスワードに分解し、そして、この複数の入力バスワードをＢＩＢ１１２に送出する。ある実施形態では、ＨＣＰダブルワードは、ＢＥＰＵとＣＵ１３０との間でやりとりされたメッセージを含む。例えば、ＢＥＰＵは、ＣＵ１３０にメッセージを送って、ＣＵ１３０が管理するワークのキューに不揮発性メモリデバイスへのアクセス動作命令を追加し、ＣＵ１３０は、当該動作命令の完了及び／又はステータスを示すメッセージをＢＥＰＵに送り返す。別の実施形態では、ＢＥＰＵからのメッセージには、動作命令のデータ転送にそれぞれ関連付けられたタグが含まれており、ＣＵ１３０は、これらのタグを用いて、不揮発性メモリデバイスに書き込まれるデータのフェッチを開始すること、又は、不揮発性メモリデバイスから読み込んだデータの動作命令別移動先を示すことができる。このように、ＢＩＢ１１２、ＣＢ１１４及びＲＢ１１８により、コマンドインターフェースが構成される。
【００２６】
ＣＳＲブロック１２２は、システム１００のＣＳＲリング上に位置する。ＣＳＲブロック１２２は、インターフェース管理プロセッサ（ＩＭＰ）情報へのアクセス権を与え、ＣＳＲブロック１２２のレジスタを介してＩＭＰ動作を設定する。例えば、ＣＳＲブロック１２２のレジスタは、ＣＵ１３０の起動を有効にし、ＣＵ１３０動作のステータスを示し、コントローラ１０１のデバッグ及び／又は診断上の機能、並びに、その他の管理アクセス機能を有効にする。ＣＳＲリングは、複数のバス規格（例えば、ＰａｌｍＢｕｓ、ＡＭＢＡ、ＡＨＢなど）のうちいずれの規格を用いて実装してもかまわない。様々な実施形態では、複数（例えば、２つ）の優先割り込み信号と停止信号（例えば、ＨＡＬＴ／ＩＮＴＲ）とをバックエンド処理部に送出してもよい。バックエンド処理部は、コア領域への停止信号と優先割り込み信号とを同期させる。ブロック１２４は、コントローラ１０１のクロック領域へのグローバル停止入力（例えば、ＨＡＬＴ  ＩＮ）を同期させてもよい。その後、同期化されたグローバル停止入力は、ＣＳＲ制御下で、コントローラ１０１を停止することができる。
【００２７】
ブロック１１０は、通常、制御部（ＣＵ）１３０と、低レベル不揮発性メモリインターフェース（ＬＦＩ）１３２とを備える。ＣＵ１３０は、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出する制御プロセッサの一例であり、通常、汎用中央演算処理装置（ＣＰＵ）を備える。ＬＦＩ１３２は、システムと１以上の不揮発性メモリデバイスとを接続する不揮発性メモリデバイスインターフェースと、制御プロセッサ及び不揮発性メモリデバイスインターフェースに接続され、コントロールストアを有するマイクロシーケンサである低レベルプログラマブルマイクロシーケンサとを備える。ＣＵ１３０とＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサとは、共有メモリ（例えば、ブロック１３４）によって密に結合されている。ＣＵ１３０とＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサとは、１以上の不揮発性メモリデバイス（例えば、図１の不揮発性記憶媒体１０５）に接続するシステム出力及び入力（例えば、ＮＶＭ  Ｉ／Ｏ）を制御することができる。ＣＵ１３０は、総合システムコントローラからコマンドを受け取ることができ、（ｉ）ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサにどのコマンドを発行するかの決定、（ｉｉ）中央システムデータレポジトリへ／からのデータフローの制御、（ｉｉｉ）起こり得るエラー状態の処理、及び、（ｉｖ）コマンドの完了を示すための総合システムコントローラへのレスポンス送出を担う。
【００２８】
このように、制御プロセッサは、コマンドのうち特定コマンドを受け取ると、特定コマンドに従い、コントロールストア内の位置でマイクロシーケンサに実行開始させることができる。マイクロシーケンサは、不揮発性メモリデバイスインターフェースに接続された１以上の不揮発性メモリデバイスのプロトコルに従い、特定コマンドの少なくとも一部を実行することができる。そのために、マイクロシーケンサは、入力データバッファの全体状態を検出し、全体状態の検出結果に応じて、コントロールストア内の所定の位置にジャンプすることができる。ここで、制御プロセッサは、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するようコントロールストアを制御プロセッサがプログラミングし、続いて、１以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するようコントロールストアを制御プロセッサがプログラミングすることができる。
【００２９】
ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサは、取付けられた特定タイプの不揮発性メモリデバイスに対応し、かつ、制御するためのプログラムで構成されてもよい。このため、ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサは、特定の不揮発性メモリインターフェースプロトコルに関する内容をＣＵ１３０から抜き出し、より高レベルなシーケンス呼び出しをＣＵ１３０に出力してもよい。ＣＵ１３０、ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサ、及び、それぞれのプログラムによって、通常、総合システムコントローラは、高レベルの不揮発性メモリコントローラ１０１にコマンドを発行できるようになる。ＣＵ１３０のプログラムは、（例えば、１以上の不揮発性メモリデバイス用の）より高レベルなコマンドのスケジューリングを処理し、この高レベルコマンドをより低レベルなコマンドに分解し、この低レベルコマンドをＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサに発行する。コマンドが完了すると、プログラムは、ＢＥＰＵコントローラにレスポンスを発行する。これにより、ＢＥＰＵ及び／又はホスト１０３のその他のプロセッサは、不揮発性メモリインターフェースの内容を処理する必要がない。新たな不揮発性メモリデバイスを導入しても、ＣＵ１３０用とＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサ用の新たなプログラムを単に展開するだけで、上述したフレキシブルな手法により、新たなデバイスを使用することができる。
【００３０】
ＬＦＩ１３２は、不揮発性記憶媒体からデータを受け取る際のバックプレッシャー、又は、不揮発性記憶媒体にデータを送出する際のデータ欠乏などによるデータ障害を検出することができる。また、ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサは、プログラムループから「抜け出し」て、例外状況に入ることができる。例外状況では、ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサは、第１モードとして、データの回復を検出して動作を継続する、又は、第２モードとして、ＣＵ１３０への割り込みによってより高レベルの動作を再開させることができる。第２モードでは、ＣＵ１３０は、ＬＦＩ１３２の低レベルプログラマブルマイクロシーケンサにより転送されたデータにアクセスでき、例えば、アドレス及び／又は長さを整えて、データ転送が中断されたポイントからデータ転送を再開することができる。
【００３１】
ＣＵ１３０は、インターフェース管理プロセッサコマンドに割り込み、レスポンスを出力する。また、ＣＵ１３０は、入力データバッファと出力データバッファとにアクセスでき、ＬＦＩ１３２を制御する。ＬＦＩ１３２は、不揮発性メモリＩ／Ｏにアクセスして制御し、コマンド順序を決定し、データ出力順序を決定し、そして、返信データを取り込む。ＣＵ１３０の機能性のうち大部分をファームウェアに実装することにより、フレキシブル性及びこれからの不揮発性メモリタイプに対するサポートが可能となる。
【００３２】
図３は、図２の出力データバッファ（ＯＤＢ）１１６の実装例を示す図である。ある実施形態では、ＯＤＢ１１６は、ブロック（又は回路）１５０と、ブロック（又は回路）１５２と、ブロック（又は回路）１５４と、ブロック（又は回路）１５６と、ブロック（又は回路）１５８とを備える。ブロック１５０は、通常、制御インターフェースを実装する。ブロック１５２は、通常、ルーティング動作を行うことができる。ブロック１５４は、不揮発性メモリデバイスインターフェースに出力されるデータを受け取り可能な出力データバッファの一例であり、先入れ先出し（ＦＩＦＯ）バッファを実装する。ブロック１５６は、カウンタを実装する。ブロック１５８は、通常、パリティチェックを行うことができる。
【００３３】
動作の第１モード（例えば、通常モード）では、ＬＦＩ１３２に受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。デバッグ又はその他の高度機能のために、ＣＵレジスタインターフェースに受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。ＣＵファームウェアをダウンロードするために、ＣＵ１３０のコマンドインタプリタに受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。例えば、ブロック１５４を、８ビット幅、４エントリー深度のＦＩＦＯバッファとして実装してもよい。ただし、他の深度及び幅を実装して特定の実装の設計基準を満たしてもかまわない。ブロック１５４は、シーケンス制御の一部として用いられる、コンフィギュラブルなＨｉ及びＬｏレベル（例えば、ＦＩＦＯ閾値）を有している。典型的に、４深度のダブルデータレート（ＤＤＲ）システムの場合は、Ｈｉは２に設定され、Ｌｏは１に設定される。４深度のシングルデータレートシステムの場合は、Ｈｉは１に設定され、Ｌｏは０に設定される。ブロック１５６は、ＯＤＢ１１６に入力されたバイト数をカウントする、ＣＵのＣＳＲアクセス可能カウンタとして実装してもよい。また、ブロック１５６は、ＣＵ１３０によって書き込み可能であり、正確なバイト数が書き込みデータパスから入力されたことの確認としてのデバッグの際に有用かもしれない。ブロック１５８は、データインターフェースのパリティチェックを行い、パリティエラーなどの例外時に割り込みをＢＥＰＵへシグナリングできるＣＳＲブロック１２２にパリティエラーを報告することができる。
【００３４】
図４は、図２の入力データバッファ（ＩＤＢ）１２０の実装例を示す図である。ある実施形態では、ＩＤＢ１２０は、ブロック（又は回路）１６０と、ブロック（又は回路）１６１と、ブロック（又は回路）１６３と、ブロック（又は回路）１６５と、ブロック（又は回路）１６７と、ブロック（又は回路）１６９とを備える。ブロック１６０は、通常、制御インターフェースを実装する。ブロック１６１は、通常、ルーティング動作を行うことができる。ブロック１６３は、不揮発性メモリデバイスインターフェースから入力されたデータを受け取り可能な入力データバッファの一例であり、先入れ先出し（ＦＩＦＯ）バッファを実装する。ブロック１６５は、ディスパリティ算出器を実装する。ブロック１６７は、パリティ生成器を実装する。ブロック１６９は、カウントダウンカウンタを実装する。
【００３５】
ＩＤＢ１２０は、通常、ブロック１６３を介して、ＬＦＩから受信データを受け取る。ある実施形態では、ブロック１６３を、８ビット幅、４０エントリーのＦＩＦＯバッファとして実装してもよい。ただし、他の深度及び幅を適宜実装して特定の実装設計基準を満たしてもかまわない。ブロック１６３は、ＬＦＩ１３２でのフロー制御において用いられる、コンフィギュラブルなＨｉ及びＬｏレベル（例えば、ＦＩＦＯ閾値）を有している。ブロック１６３は、早い転送レートで重要になるシステム１００の往復レイテンシ（例えば、３０ｎｓ）を許容し、また、ＦＩＦＯバッファに受信データをバッファリングしている間に、転送開始時の時刻をメッセージのヘッダにＣＵ１３０から挿入することができる。ダブルデータレートシステムに対するＨｉ及びＬｏレベル（例えば、ＦＩＦＯ閾値）の設定例として、Ｈｉレベルは２２、Ｌｏレベルは２１である。
【００３６】
ＬＦＩ１３２からのデータは、通常、ＩＤＢ１２０とＢＩＢ１１２とを接続する送信ＦＩＦＯバッファ（図示せず）に直接入力される。また、ＬＦＩ１３２からのデータは、制御インターフェース１６０のＣＵレジスタインターフェースを用いてＣＵ１３０により読み出すことができる（例えば、この機能は、データがＣＵ１３０で使用される、不揮発性メモリデバイスのレジスタ読み出し、ステータス読み出しなどに用いることができる）。また、ＣＵレジスタインターフェースを用いて、データをＣＵ１３０からＢＩＢ１１２へ送出することもできる（例えば、この機能は、データヘッダ／トレーラに用いることができる）。
【００３７】
ブロック１６５は、通常、ランニングディスパリティ算出器を実装する。ある実施形態では、ランニングディスパリティ算出器は、読み込みデータストリーム内の０のビット数よりも１のビット数が多い分の累積数を示す符号付き２０ビットを保持する。ディスパリティ計算の例は、以下の（式１）で示される。
【００３８】
ディスパリティ＝１に設定されたビット総数−（ビット総数／２）      （式１）
【００３９】
ディスパリティ値が２０ビットの正又は負の最大値に達すれば、ディスパリティ値は飽和して一定値になる。不揮発性メモリデバイスからの読み込みデータが既知の予測ディスパリティを有する場合は、ディスパリティ算出器を用いて、少なくとも部分的に、読み込みデータが有効かどうかを判断する。１つ目の例として、不揮発性メモリデバイスからの読み込みデータが暗号化されていて「０」と「１」の分布が統計的に半々ならば、ディスパリティは０に近いと予測される。２つ目の例として、ＮＡＮＤフラッシュなどの不揮発性メモリデバイスが、全て「１」の消去状態にあるとする。ディスパリティ計算により、読み込んだデータビットの実質全てが１の値であると示されれば、おそらく、消去ページが読み込まれたものと考えられる。
【００４０】
データ読み込みが完了すると、ディスパリティ値はＣＵ１３０によって読み出されて、データトレーラに含められるか、又は、レスポンスとしてＢＥＰＵに返される。ＣＵ１３０は、通例、データ転送開始前にディスパリティ値をクリアするはずである。送信データストリームは、ブロック１６７で保護されたパリティである。
【００４１】
ブロック１６９は、通常、ＣＳＲアクセス可能カウントダウンカウンタを実装する。ブロック１６９は、ＩＤＢ１２０から送出されるバイト数をカウントダウンする。これは転送の長さに設定することができ、転送終了時に０になるようカウントダウンされる。また、ブロック１６９は、ＣＵ１３０のＣＳＲレジスタによりプログラミングされ、転送開始／終了時に第１／最終の表示（例えば、フレーミング情報を与えるサイドバンド信号）を生成することができる。カウンタが０になった後、第２ＣＳＲレジスタを用いてブロック１６９を初期設定する。
【００４２】
ＢＩＢ１１２への送信データがＣＵ１３０によって生成される場合（例えば、データヘッダ及びトレーラ用）、ＢＩＢ１１２への第１出力と最終出力もＣＵ１３０によって制御される。典型的な読み込みでは、ＣＵ１３０は、まず、ＩＤＢ１２０を「ＣＵから」モードにして、ＬＦＩ１３２で読み込みコマンドを開始し、そして、ヘッダをＢＩＢ１１２へ転送する。そして、ＬＦＩ１３２からのデータとブロック１６３内のデータとをＢＥＰＵに転送するよう、ＩＤＢ１２０を「通常」モードにする。最後に、ＣＵ１３０は、必要であればトレーラを生成する。
【００４３】
図５は、図２の制御部（ＣＵ）１３０の実装例を示す図である。ＣＵ１３０は、通常、コントローラ１０１のマイクロプロセッサベース監視制御部を実装する。ＣＵ１３０は、出力バス（ＯＢ）からコマンドを受け取り、コマンドスケジューリングと優先順位付けとを行う。ある実施形態では、ＣＵ１３０は、ブロック（又は回路）１７０と、ブロック（又は回路）１７２と、ブロック（又は回路）１７４と、ブロック（又は回路）１７６と、ブロック（又は回路）１７８と、ブロック（又は回路）１８０と、ブロック（又は回路）１８２と、ブロック（又は回路）１８４とを備える。ブロック１７０は、通常、ＣＰＵ（中央演算処理装置）コアを備える。ブロック１７２は、通常、コマンドインタプリタを実装する。ブロック１７４は、アービタを実装する。ブロック１７６は、データを格納するランダムアクセスメモリ（ＲＡＭ）を実装する。ブロック１７８は、ローカル設定／ステータスレジスタ（ＣＳＲ）ブロックを実装する。ブロック１８０は、ＬＦＩ１３２とのインターフェースを実装する。ブロック１８２は、アービタを実装する。ブロック１８４は、命令を格納するランダムアクセスメモリ（ＲＡＭ）を実装する。
【００４４】
スタートアップ時、ＣＰＵ１７０は、ブロック１７８のＣＳＲレジスタによりリセット状態に保たれる。命令ＲＡＭ１８４とＬＦＩ１３２のシーケンスＲＡＭとデータＲＡＭ１７６との初期状態をプログラミングするよう、ＩＭＰコマンドがＢＥＰＵによって発行される。初期状態は、通常、システムＲＯＭ（図示せず）から入手する。初期プログラミングの後、リセット状態が解除され、ＣＰＵ１７０はその初期ファームウェアを実行開始する。ファームウェアにより、ＣＰＵ１７０は、ＢＥＰＵから発行されたコマンドに応答することができる。初期動作状態の間、ＢＥＰＵは、不揮発性メモリデバイスからバックエンドバッファ（図示せず）に最終動作コードをもってきてもよい。最終動作コードは、ＣＰＵ１７０だけでなくシステム１００上の他のＣＰＵも設定するために用いられる。一例として、この段階で、不揮発性メモリに格納されたファームウェアの性能を最適化したものでＣＵコードをリロードする可能性がある。これは、通常、データ転送として発生し、ＩＭＰコマンドを用いて、命令ＲＡＭ１８４、データＲＡＭ１７６、及び／又は、ＬＦＩ１３２のシーケンスＲＡＭに受信ＩＤＢデータを直接入力する。一般に、ＣＵ１３０は、主な動作コードのロード中はリセット状態である。
【００４５】
データＲＡＭ１７６、命令ＲＡＭ１８４、及び、ＬＦＩ１３２のシーケンスＲＡＭにＩＭＰコマンドがアクセスできるよう、アービタ１８２とアービタ１７４とをＣＰＵ１７０のＲＡＭインターフェース上で用いてもよい。一例として、ＣＰＵ１７０のストールメカニズムを利用してもよい。これにより、ＩＭＰコマンドインタプリタ１７２に優先権が与えられる。ただし、ＣＰＵ１７０によるアクセス以外の、データＲＡＭ１７６、命令ＲＡＭ１８４、及び、ＬＦＩ１３２のシーケンスＲＡＭへのアクセスは、初期設定時にしか発生しないと考えられる。
【００４６】
また、ＣＰＵ１７０は、ＢＥＰＵからのメッセージを渡し、かつ、ＢＥＰＵにレスポンスを返すための入力ＦＩＦＯインターフェース及び出力ＦＩＦＯインターフェースを備えてもよい。また、出力ＦＩＦＯインターフェースは、（例えば、ホスト１０３の）ダイレクトメモリアクセス（ＤＭＡ）エンジンにメッセージを渡してデータ転送動作を開始するためにも用いられる。
【００４７】
ＣＰＵ１７０のインターフェースは、ローカルＣＳＲにアクセスし、ＬＦＩ１３２にコマンドを発行するために用いられる。テンシリカＣＰＵを用いた実施形態では、インターフェースはＴＩＥ（Ｔｅｎｓｉｌｉｃａ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｅｘｔｅｎｓｉｏｎ）検索インターフェースである。グローバル停止信号（例えば、電源障害又はその他の異常事態が生じた場合にホスト１０３から送出される信号）を用いて、ＣＰＵコア１７０のノンマスカブル割り込み（ＮＭＩ）を発生させてもよい。
【００４８】
図６は、図２の低レベル不揮発性メモリインターフェース（ＬＦＩ）１３２の実装例を示す図である。ＬＦＩ１３２は、不揮発性メモリインターフェースを低レベル制御する。ＬＦＩ１３２は、いかなる不揮発性メモリインターフェースプロトコルにもコンフィギュラブルに設計されたプログラマブルシーケンスエンジンを備える。使用されるシーケンスは、ＣＵ１３０によって設定され、ＣＵ１３０により与えられたコマンドで実行される。また、ＣＵ１３０によるプログラミング及びシーケンスによるアクセスが可能なシーケンスデータ領域が存在するため、ジェネリックシーケンスをセットアップでき、シーケンス自体を変更することなくデータをシーケンスに関連付けることができる。
【００４９】
ある実施形態では、１つの物理インターフェースだけではなく２以上の物理インターフェースに対応している。例えば、２つの物理インターフェース（例えば、Ａ及びＢ）と共に、ＬＦＩ１３２は、ブロック（又は回路）１９０と、ブロック（又は回路）１９２ａと、ブロック（又は回路）１９２ｂと、ブロック（又は回路）１９４ａと、ブロック（又は回路）１９４ｂと、ブロック（又は回路）１９６と、ブロック（又は回路）１９８とを備えてもよい。ブロック１９０は、通常、低レベル不揮発性メモリインターフェース（ＬＦＩ）シーケンサ部（ＬＳＵ）を備える。ブロック１９２ａ及び１９２ｂは、通常、ＤＱ取り込みブロックを実装する。ブロック１９４ａ及びブロック１９４ｂは、それぞれ、Ａ不揮発性メモリインターフェース及びＢ不揮発性メモリインターフェースを実装する。ブロック１９６は、チップイネーブル（ＣＥ）インターフェースを実装する。ブロック１９８は、２つのＤＱ取り込みブロック１９２ａ及び１９２ｂから選択する多重化回路を実装する。ブロック１９２ａ及び１９２ｂと、ブロック１９６とは、複数のデータ入出力ピンと複数の制御入出力ピンとを備える不揮発性メモリデバイスインターフェースの一例である。
【００５０】
ＬＦＩシーケンサ部（ＬＳＵ）１９０は、制御プロセッサと不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有するマイクロシーケンサの一例であり、シーケンスを実行して、不揮発性メモリコマンドの出力、つまり、書き込みデータ転送及び読み出しデータ転送を指示する。マイクロシーケンサは、不揮発性メモリデバイスインターフェースの制御入出力ピンとデータ入出力ピンとの状態を変更して、プロトコルに従い特定コマンドを実行することができる。シーケンスＲＡＭインターフェースにより、ＬＳＵ１９０の内部シーケシングメモリをシーケシング開始前にセットアップすることができ、また、ＣＵ１３０により動的にプログラミングされたシーケンスを内部シーケシングメモリで保持することもできる。そして、ＬＳＵ１９０のシーケンスコマンドインターフェース上でシーケンスコマンドを発行することができる。コマンドがどのインターフェース向けなのかでインターフェース選択（例えば、信号Ｉ／Ｆ  Ａ  ＥＮ及び信号Ｉ／Ｆ  Ｂ  ＥＮ）はプログラミングされ、この選択によってコマンドは適切なインターフェースに入力される。ある実施形態及び／又は利用状況では、各コマンドは１つのインターフェースに入力される。別の実施形態及び／又は利用状況では、少なくともいくつかのコマンド（例えば、リセットコマンド）が複数のインターフェースに入力される。チップイネーブル（ＣＥ）インターフェース（例えば、信号ＣＥＮ  ＯＵＴＰＵＴＳ）により、不揮発性メモリインターフェースのうち１つに取付けられたダイを選択するためのＣＥ出力をフル制御することができる。ある実施形態では、最大８ＣＥまでの設定に対応している。ダイは、どの不揮発性メモリインターフェースでも取付けることができる。
【００５１】
ＤＱ取り込みブロック１９２ａ及び１９２ｂは、ＤＱＳを用いた高速データ取り込みを行い、非同期モードに対するシーケンス遅延もとらえる。ＤＱ  Ｍｉｒｒｏｒ信号は、ＤＱ出力と取込データとのミラーリングを制御する。ミラーリングでは、ビット０を７と、１を６と、２を５と、３を４と入れ替える。これは、基板レイアウトの問題を軽減するいくつかの構造で行われるものであり、コントローラによって処理される必要がある。ミラーモードは、コマンドがＬＦＩ１３２に発行される前にＣＵ１３０によって選択される。送信ミラーリングは、送信インターフェースで行われ、受信ミラーリングは、ＤＱ取り込み多重化回路１９８のＤＱ取り込みに続いて行われる。
【００５２】
ＬＦＩ１３２は、通常、プログラマブルシーケンスエンジンと、Ｉ／Ｏピン出力ブロック群と、データ取り込みブロック群とを備える。シーケンスエンジンは、通常、Ｉ／Ｏピンに取付けられた特定の不揮発性メモリデバイスの不揮発性メモリプロトコルを実行可能なシーケンス群でプログラミングされる。シーケンスは、シーケンスメモリ内の複数の位置で開始する命令群から構成されている。例えば、ＬＦＩ１３２をプログラミングして実行する動作ごとにそれぞれの開始位置が存在する。ある実施形態では、シーケンスメモリは、５１２の３２ビット位置として実装される。シーケンスの実行は、コマンドインターフェース上でコマンドを発行することにより開始される。コマンドは、通常、ジャンプするためのシーケンスＲＡＭのアドレスと、シーケンス内の命令のうちいくつかが利用できる１バイトのコマンドデータとを含む。ただし、このコマンドデータは利用されない場合もある。
【００５３】
また、インデックスレジスタを用いて間接アドレス指定されるシーケンスデータＲＡＭも設けられる。インデックスは、ＭＯＤＥ命令を用いて設定され、通常、コマンドデータから得られる値に設定される。このように、コマンドシーケンスに関連付けられたデータはいずれもシーケンスデータＲＡＭに設定できるため、シーケンス自体を変更する必要はない。一例として、５バイトのアドレスを有する読み込みコマンドを挙げる。アドレスのバイトはシーケンスデータＲＡＭの連続した位置に置かれ、シーケンスＲＡＭ内の読み込みコマンドシーケンスのアドレスと、シーケンスデータＲＡＭ内のアドレスの１番目のバイトのアドレスとを含んだコマンドが発行される。シーケンスは、インデックスレジスタを設定してから、必要なシーケンスを実行してアドレスを送出し、このアドレスシーケンスをアドレスのバイトごとに繰り返す。命令により、インデックスレジスタはインクリメントされる（メモリの最後の次は先頭に戻る）。ただし、ＷＩＧ命令（不揮発性メモリデバイスに接続されたＩ／Ｏピンをウイグルするのに用いられる）の場合は、インクリメントはオプションである。
【００５４】
停止を引き起こす命令を受けるまで、シーケンスは実行される。停止命令はシーケンス実行を終了させ、ＬＦＩは、次のコマンドが届くのを待って何もアクションを起こさない状態になる。不揮発性メモリデバイスに対するアクションの実行は、複数のシーケンス呼び出しで構成してもよい。例えば、１シーケンスを呼び出してデバイスを選択し、別のシーケンス呼び出しで読み込みを発行し、最終シーケンスでデバイス選択の解除を行うことができるであろう。
【００５５】
図７は、図６の低レベル不揮発性メモリインターフェース（ＬＦＩ）マイクロシーケンサ部（ＬＳＵ）１９０の実装例を示す図である。ある実施形態では、ＬＳＵ１９０は、ブロック（又は回路）２００と、ブロック（又は回路）２０２と、ブロック（又は回路）２０４と、ブロック（又は回路）２０６と、ブロック（又は回路）２０８と、ブロック（又は回路）２１０と、ブロック（又は回路）２１２と、ブロック（又は回路）２１４と、ブロック（又は回路）２１６と、ブロック（又は回路）２１８とを備える。ブロック２００は、通常、シーケンス実行部（ＳＥＵ）を備える。ブロック２０２は、通常、シーケンスデータを格納するランダムアクセスメモリ（ＲＡＭ）（例えば、シーケンスデータＲＡＭ）を実装する。一例として、シーケンスデータＲＡＭ２０２をデュアルポートメモリとして実装してもよい。ブロック２０４は、インデックスレジスタを実装する。ブロック２０６は、多数の出力レジスタを実装する。ブロック２０８は、ゼロオーバーヘッドループ（ＺＯＬ）レジスタを実装する。ブロック２１０は、通常、次のプログラムカウンタ（ＰＣ）の算出を行う。ブロック２１２は、プログラムカウンタ（ＰＣ）レジスタを実装する。ブロック２１４は、マイクロシーケンサで読み取り可能、かつ、制御プロセッサで書き込み可能なコントロールストアの一例であり、通常、シーケンスを格納するランダムアクセスメモリ（ＲＡＭ）（例えば、シーケンスＲＡＭ）を実装する。一例として、シーケンスＲＡＭ２１４をデュアルポートメモリとして実装してもよい。ブロック２１６は、プリフェッチレジスタを実装する。ブロック２１８は、コマンドレジスタを実装する。
【００５６】
シーケンスＲＡＭ２１４を初期化してから、いずれのコマンドも実行する必要がある。シーケンスＲＡＭ２１４の初期化は、通常、最初の不揮発性メモリ読み込みを行うためにスタートアップ時に一度行われ、二度目は、不揮発性メモリデバイスから主な実行コードをロードしたときに行われる。ある実施形態では、シーケンスＲＡＭ２１４を３２ビット幅（＋ＥＣＣビット）で５１２ワード深度のデュアルポートＲＡＭとして実装して、シーケンスの実行中にＣＵ１３０からアクセスできようにしてもよい。ある実施形態では、シーケンスアドレスは９ビットである。ただし、他のメモリ仕様を適宜実装して特定の実装の設計基準を満たしてもかまわない。このように、コントロールストアは、不揮発性メモリデバイスインターフェースに取付けられた１以上の不揮発性メモリデバイスに関連付けられている１以上のプロトコルを実行するよう制御プロセッサによってプログラミングされる。
【００５７】
シーケンスデータＲＡＭ２０２により、ＣＵ１３０は、インデックスレジスタ２０４を用いたコマンドでアクセスできる様々なコマンド値を設定できる。様々なコマンド値の設定は、コマンド／アドレスシーケンスをセットアップするような動作に用いることができる。ある実施形態では、シーケンスデータＲＡＭ２０２は、ＣＵ１３０から３２ビットワード単位としてではなく、インデックスレジスタ２０４により１バイト単位としてアドレス指定される。ある実施形態では、シーケンスデータＲＡＭ２０２は、６４バイト（１６ワード）として実装される。ただし、他のメモリ仕様を適宜実装して特定の実装の設計基準を満たしてもかまわない。シーケンスデータＲＡＭ２０２からデータはプリフェッチされるので、偽ＥＣＣエラーの可能性をなくすため、シーケンスデータＲＡＭ２０２全体を使用前に初期化すべきである。
【００５８】
ＰＣレジスタ２１２には、カレントシーケンスポインタが保持されている。カレントシーケンスポインタは、通常、次のシーケンス命令をフェッチするためにインクリメント器２１０を通る。ＺＯＬレジスタ２０８は、シングルレベルのゼロオーバーヘッドルーピングに対応している。出力レジスタ２０６は、不揮発性メモリインターフェースに接続し、その動作を制御する。
【００５９】
シーケンスＲＡＭ２１４とシーケンスデータＲＡＭ２０２とは共にＥＣＣ保護されており、ＣＵ１３０のメモリマップ内に存在する。ＥＣＣエラーはＣＵ１３０への割り込みを発生させるため、レジスタを読み取って、エラー訂正が可能かどうか、また、どのＲＡＭがエラー状態だったのかを判断することができる。訂正可能なエラーはいずれも、通例、メモリのリードスクラブとなる。シーケンスＲＡＭの読み込み中に訂正不能なエラーが生じた場合は、シーケンスも直ちに停止される。
【００６０】
外部信号（例えば、ＨＡＬＴ）は、ＣＵ１３０によりアサートされて、シーケンス実行部２００の動作をいつでも停止することができる。通常、シーケンス実行部２００の停止実行により、カレントシーケンスはカレント位置で直ちに終了する。新たなシーケンスを開始するためには、新たなコマンドを発行する必要がある。シーケンス実行部２００の内部ステータスは、ＣＵ１３０で利用できる。
【００６１】
図８は、ＤＱ取り込みブロック２２０の実装例を示す図である。ＤＱ取り込みブロック２２０を用いて、図６のＤＱ取り込みブロック１９２ａと１９２ｂとを実装してもよい。ある実施形態では、ＤＱ取り込みブロック２２０は、クロック転送ブロック２２２と、複数のＤＱニアパッド論理回路ブロック２２４と、ＤＬＬブロック２２６と、複数のマッチセル２２８とを備える。ニアパッド論理回路（ＮＰＬ）は、パッド付近に配置されたシリコンマクロブロックを備える。ＮＰＬブロックは、インターフェース論理回路上でタイミングを厳密に制御することを可能にする。各ＮＰＬブロックは、対応するパッドから一定の距離離して配置される。ＤＱＳ入力は、ＤＬＬブロック２２６のスレーブモジュールを介して入力される。ＤＬＬブロック２２６のスレーブモジュールは、ＤＱＳサイクルの４分の１の遅延をＤＱＳ信号に挿入する。各ＤＱＮＰＬブロック２２４に対するＤＱＳパス遅延は、同じＮＰＬブロックに対するＤＱ遅延と一致するはずである。ＤＱＮＰＬブロック２２４は、後のＤＱＳエッジ上でＤＱ値を４つ取り込む。４つのＤＱ値は、不揮発性メモリインターフェースのクロック領域に値を転送するクロック転送ブロック２２２に出力される。
【００６２】
図９は、図８のＤＱ取り込みニアパッド論理回路（ＤＱ  ＮＰＬ）ブロック２２４の実装例を示す図である。ある実施形態では、ＤＱ  ＮＰＬブロック２２４は、取り込みフェーズフロップと、複数のＤＱ取り込みフロップ（例えば、ＤＱ０Ｐ、ＤＱ０Ｎ、ＤＱ１Ｐ、ＤＱ１Ｎ）とを備えている。読み込み転送の開始前は、信号（例えば、ＤＱＳ  ＥＮ）はＬＯＷである。これにより、いかなるＤＱＳグリッチもゲートオフされ、取り込みフェーズフロップはフェーズ０で保持される。１つ目の立ち上がりＤＱＳエッジはＤＱ０Ｐフロップに取り込まれ、１つ目の立ち下がりエッジはＤＱ０Ｎフロップに取り込まれる。また、１つ目の立ち下がりエッジは取り込みフェーズを切り替え、次の２つのＤＱＳエッジはＤＱ１ＰとＤＱ１Ｎとにそれぞれ取り込まれる。データ転送中、サイクルは４ＤＱＳエッジごとに繰り返される。
【００６３】
図１０は、図８のＤＬＬブロック２２６の実装例を示す図である。ある実施形態では、ＤＬＬブロック２２６は、遅延ロックループ（ＤＬＬ）２３０と、制御ステートマシン（ＦＳＭ）２３２とを備える。ＤＬＬ２３０は、マスター部とスレーブ部とを備える。ＤＬＬ２３０のマスター部は、入力基準クロックにロックする。ＤＬＬ２３０のスレーブ部は、マスター基準クロックのプログラマブル分割により、任意の信号（例えば、ＤＱＳ）を遅延させる。ある実施形態では、エッジアラインされたＤＱデータを取り込むために、受信ＤＱＳ信号をＤＱＳ周期の４分の１遅延させる必要がある。ＤＬＬブロック２２６は、入力基準サイクルにロックする。入力基準サイクルは、コントローラ１０１のクロック（例えば、ＣＬＫ）、又は、コントローラクロックを分周したもの（例えば、基準クロック分周器２３４で生成）でもよい。一般に、基準クロックは、送信ＤＱＳと同じ周波数、又は、２倍の周波数に設定されるものである。挿入される遅延は、一般的に、ＤＱＳ周波数の約４分の１になるようプログラミングされる。ＤＬＬ２３０のスレーブ部の遅延は、以下の（式２）に基づき算出してもよい。
【００６４】
Ｄｅｌａｙ＝Ｔｆ＋Ｔｒｅｆ＊（（ＡＤＪ＋ＡＤＪｏｆｆ）／ＭＡＤＪ）  （式２）
【００６５】
ここで、Ｔｆは固定オフセット遅延、Ｔｒｅｆは基準クロック周期、ＡＤＪはプログラム調整オフセット、ＡＤＪｏｆｆは、固定コードオフセット（例えば３４）、ＭＡＤＪは通常１６０に設定されるマスター調整オフセット（ただし、７６、・・・、２５５の範囲の値に変更可能）である。通常、固定オフセット遅延Ｔｆは、ＤＱライン上で用いられるマッチセル２２８で合わせられるため、無視することができる。したがって、（例えば、マッチセルを用いることにより）Ｔｆを消去し、ＡＤＪについて解を求めると、以下の（式３）が得られる。
【００６６】
ＡＤＪ＝ＭＡＤＪ＊（Ｄｅｌａｙ／Ｔｒｅｆ−ＡＤＪｏｆｆ）          （式３）
【００６７】
例えば４００ＭＴ／ｓの動作条件の場合、ＤＱＳ周波数は２００ＭＨｚ、コントローラクロックは４００ＭＨｚである。ある実施形態では、４００ＭＨｚクロックをＤＬＬに直接入力することができ、信号ＤＱＳを基準クロックの２分の１周期（ＤＱＳ周期の４分の１に相当）遅延させることができる。別の実施形態では、コントローラクロックを２００ＭＨｚに分周することができ、信号ＤＱＳを基準クロック周期の４分の１遅延させる。
【００６８】
また、ソフトウェアにトレーニング方式を実装することも可能である。このようなトレーニング方式を有する実施形態では、既知のパターンを不揮発性メモリデバイスから読み込む間に、ＡＤＪ値はロー設定からハイ設定にスイープされる。最終的にＡＤＪは、読み込み中の正しいデータとなる中央値に設定される。基準クロック分周器若しくはＭＡＤＪの何らかの変更、又は、パワーダウンが、最小１ｕｓ間ＤＬＬをリセットするのに必要となる。制御ＦＳＭ２３２は、プログラミングされた回数のクロックサイクルの間（例えば、４００ＭＨｚの１ｕｓ周期の場合、デフォルトは４００）、ＤＬＬ２３０をリセット状態に保持する。ＤＬＬ２３０が実行可能になった後、ロックステータスは５００基準クロック分にアサートされ、読み込み動作が開始される前に、この状態をファームウェアで確認することができる。
【００６９】
ＤＬＬブロック２２６の制御レジスタは、（例えば、ＢＥＰＵから）ＣＳＲリングを介して、又は、ＣＵ１３０から局所的にアクセス及び設定可能である。ローカルアクセスは、トレーニング型機能（必要であれば）、又は、微粒子パワーダウン制御に用いられる。一般に、ＤＬＬ値は、コンフィグレーションレコードから設定されるので、通常の動作中に調整する必要はない。節電のために、ＤＬＬ制御ＦＳＭ２３２に関連付けられたパワーダウン要求レジスタを設定することができる。ＤＬＬ２３０は、ＤＱＳ入力を使用する不揮発性メモリ読み込みモード（例えば、ＯＮＦＩ２／３のＤＤＲモード及びトグルモード）に対する読み込み動作中にのみ用いられる。パワーダウンから抜けると続いてリセット及びロックシーケンスが起動されるため、動的パワーダウンは読み込み性能に影響を及ぼす可能性がある。チップをリセットするとすぐに、ＤＬＬ２３０は、通常、パワーダウンモードになる。
【００７０】
図１１は、出力インターフェースニアパッド論理回路（ＮＰＬ）ブロック２５０の実装例を示す図である。各送信信号は、出力インターフェースＮＰＬブロック２５０を介して出力される。ＭＰＬブロック２５０は、送信信号をクロック（例えば、ＣＬＫ）にタイミングを合わせさせ、オプションで２分の１サイクルの遅延を送信信号の立ち上がり／立ち下がりエッジに加える。各送信信号に対する遅延は、ＣＳＲで設定可能である。各ＮＰＬブロック２５０は、各コントローラ１０１インスタンスからの全出力にわたりＮＰＬブロック２５０からパッドへの遅延が一致する対応パッド近くに配置されるべきである。ある実施形態では、ＭＰＬ２５０は、フリップフロップ２６０と、フリップフロップ２６２と、組み合わせ論理回路２６４と、マルチプレクサ２６６とを備える。ある実施形態では、フリップフロップ２６０及び２６２はＤ型フロップとして実装される。ある実施形態では、組み合わせ論理回路２６４は、ＡＮＤゲート、ＯＲゲート、及び／又は、ＮＯＴゲートを備えてもよい。ＮＰＬ２５０内において、マルチプレクサ２６６への可能な各パスは、できるだけ厳密に合わせるべきである。
【００７１】
図１２は、本発明の実施形態に係るマルチチャネル型不揮発性メモリ制御システムを示す図である。ある実施形態では、不揮発性メモリシステム３００は、ホスト２０２と、不揮発性メモリコントローラサブシステム３０４と、複数の不揮発性記憶媒体３０６ａ〜３０６ｎとを備えてもよい。ホスト３０２は、コマンドインターフェースを介して不揮発性メモリコントローラサブシステム３０４と情報のやりとりを行う。このコマンドインターフェースは、ホスト３０２と不揮発性メモリコントローラサブシステム３０４との間でコマンドとレスポンスとを転送する。不揮発性記憶媒体３０６ａ〜３０６ｎはそれぞれ、不揮発性メモリコントローラサブシステム３０４のチャネルに接続されてもよい。
【００７２】
ある実施形態では、不揮発性メモリコントローラサブシステム３０４は、ブロック３１０と、ブロック３１２と、ブロック３１４と、複数のブロック３１６ａ〜３１６ｎとを備えてもよい。ブロック３１０は、バックエンド処理部（ＢＥＰＵ）、及び／又は、不揮発性メモリコントローラサブシステム３０４の他のプロセッサとを備えてもよい。ブロック３１２は、ダイレクトメモリアクセス（ＤＭＡ）エンジン、又は、不揮発性メモリコントローラサブシステム３０４のエンジンを備えてもよい。ブロック３１４は、不揮発性メモリコントローラサブシステム３０４の多重化サブシステムを実装してもよい。ブロック３１４は、ブロック３１６ａ〜３１６ｎと、ブロック３１０及びブロック３１２とを接続させてもよい。ブロック３１６ａ〜３１６ｎは、上述のコントローラ１０１と同様に実装されたインターフェース管理プロセッサを備えてもよい。ブロック３１６ａ〜３１６ｎは、ＣＳＲリングとそれぞれのコマンドインターフェースとによってブロック３１４に接続されてもよい。また、ブロック３１６ａ〜３１６ｎは、各ブロック３１６ａ〜３１６ｎをそれぞれの不揮発性記憶媒体３０６ａ〜３０６ｎに接続する不揮発性メモリインターフェースを有する。
【００７３】
動詞と組み合わせてここで用いられる「してもよい」及び「通常」という用語は、説明は例示であり、開示に記載された具体例だけでなくこの開示に基づいて導き出される別の例も包含するよう十分に広義であるという意図を伝えるためのものである。ここで用いられたような「してもよい」及び「通常」という用語は、必ずしも、対応要素の省略の望ましさ又は可能性を暗に意味すると受け取られるべきではない。
【００７４】
図１〜１２に示された機能は、当業者に明らかなように、明細書の教示に従ってプログラミングされた１以上の、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ）プロセッサ、ＣＩＳＣ（ｃｏｍｐｌｅｘ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ）プロセッサ、ＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）プロセッサ、シグナルプロセッサ、中央演算処理装置（ＣＰＵ）、算術論理装置（ＡＬＵ）、ビデオデジタル信号プロセッサ（ＶＤＳＰ）、及び／又は、類似の計算器を用いて実装（例えば、モデル化）されてもよい。また、適切なソフトウェア、ファームウェア、コーディング、ルーチン、命令、オペコード、マイクロコード、及び／又は、プログラムモジュールは、当業者に明らかなように、開示の教示に基づいて当業者であるプログラマにより容易に作成されてもよい。通常、ソフトウェアは、マシン実装の１以上のプロセッサにより、１つ又はいくつかの媒体から実行される。
【００７５】
また、本発明の実施形態は、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、プラットフォームＡＳＩＣ、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、ＣＰＬＤ（ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、ＳＯＧ型（ｓｅａ−ｏｆ−ｇａｔｅ）、ＲＦＩＣ（ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＡＳＳＰ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｓｔａｎｄａｒｄ  ｐｒｏｄｕｃｔ）、１以上のモノリシック集積回路、フリップチップモジュール及び／又はマルチチップモジュールとして構成された１以上のチップ又はダイを準備することによって、又は、ここで記載したように従来の素子回路の適切なネットワークを相互接続することによって実装されてもよい。これらの変形例も、当業者には容易に明らかであろう。
【００７６】
また、本発明の実施形態は、マシンをプログラミングして本発明に係る１以上のプロセス又は方法を実行するために用いられる命令を含む記憶媒体及び／又は伝送媒体でもよいコンピュータ製品を含んでもよい。マシンによりコンピュータ製品に含められた命令を周辺回路の動作とともに実行すると、入力データは、音声及び／又は視覚表現などの代表的な物体又は物質である記録媒体及び／又は１以上の出力信号上の１以上のファイルに変換されてもよい。記憶媒体は、フロッピー（登録商標）ディスク、ハードドライブ、磁気ディスク、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、光磁気ディスクなどのディスク、及び、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＵＶＰＲＯＭ（ｕｌｔｒａ−ｖｉｏｌｅｔ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、磁気カード、光カード、及び／又は、電子命令を格納するのに適した媒体などの回路を備えるが、これらに限定されるものではない。
【００７７】
本発明の構成要素は、１以上の、デバイス、ユニット、コンポーネント、システム、マシン、及び／又は、装置の一部又は全てを形成してもよい。デバイスは、サーバ、ワークステーション、ストレージアレイコントローラ、ストレージシステム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、手のひらサイズコンピュータ、個人用デジタル情報端末、携帯用電子デバイス、バッテリー駆動デバイス、セットトップボックス、エンコーダ、エコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、暗号回路、携帯電話、デジタルカメラ、位置及び／又はナビゲーションシステム、医用機器、ヘッドアップディスプレイ、ワイヤレスデバイス、音声記録、音声記憶及び／又は音声再生装置、映像記録、映像記憶及び／又は映像再生装置、ゲーム機、周辺機器、及び／又は、マルチチップモジュールなどでもよいが、これらに限定されるものではない。本発明の構成要素は、特定の適用基準を満たす別のタイプのデバイスにおいて実装されてもよいと当業者に理解されよう。
【００７８】
本発明の内容は、その実施形態を参照しながら具体的に示して説明してきたが、本発明の範囲から逸脱することなく形態及び詳細の様々な変更を行ってもよいと当業者に理解されよう。
【図１】
2014157603.tif 000003
【図２】
2014157603.tif 000004
【図３】
2014157603.tif 000005
【図４】
2014157603.tif 000006
【図５】
2014157603.tif 000007
【図６】
2014157603.tif 000008
【図７】
2014157603.tif 000009
【図８】
2014157603.tif 000010
【図９】
2014157603.tif 000011
【図１０】
2014157603.tif 000012
【図１１】
2014157603.tif 000013
【図１２】
2014157603.tif 000014