JP6577166B2 - 不揮発性メモリのチャネル制御用システム及びその制御方法 - Google Patents

不揮発性メモリのチャネル制御用システム及びその制御方法 Download PDF

Info

Publication number
JP6577166B2
JP6577166B2 JP2014023971A JP2014023971A JP6577166B2 JP 6577166 B2 JP6577166 B2 JP 6577166B2 JP 2014023971 A JP2014023971 A JP 2014023971A JP 2014023971 A JP2014023971 A JP 2014023971A JP 6577166 B2 JP6577166 B2 JP 6577166B2
Authority
JP
Japan
Prior art keywords
volatile memory
block
level
interface
memory device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014023971A
Other languages
English (en)
Other versions
JP2014157603A (ja
JP2014157603A5 (ja
Inventor
クリストファー・ブルーアー
アール・ティ・コーエン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Logic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Logic Corp filed Critical LSI Logic Corp
Publication of JP2014157603A publication Critical patent/JP2014157603A/ja
Publication of JP2014157603A5 publication Critical patent/JP2014157603A5/ja
Application granted granted Critical
Publication of JP6577166B2 publication Critical patent/JP6577166B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microcomputers (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Description

本発明は、メモリシステムに関し、特に、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いて不揮発性メモリのチャネル制御を実装する方法及び/又は装置に関する。
従来の不揮発性メモリ制御システムでは、当該システムで利用可能な種類のデバイスにフレキシブルに対応できるよう様々なプロトコルの使用を試みてきた。様々なプロトコルに対応するには、想定されるタイプのインターフェースごと、及び、必要なインターフェースコマンドタイプごとの専用制御回路が必要である。
しかしながら、インターフェースプロトコルごとの専用制御回路に依存することはあまりフレキシブルな手法ではない。この場合、インターフェースプロトコルが新しくなったりわずかに変更したりすると、費用のかかる回路再設計が必要となる。代わりに、中央演算処理装置(CPU)を用いて、不揮発性メモリインターフェースの低レベル制御のフレキシブル性を可能にすることができる。しかしながら、これではCPUにかなりの負荷をかけるため、性能が制限されてしまう。
ゆえに、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いた不揮発性メモリのチャネル制御を実装することが望ましい。
本発明は、制御プロセッサと、不揮発性メモリデバイスインターフェースと、マイクロシーケンサとを備えたシステムに関する。制御プロセッサは、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出してもよい。不揮発性メモリデバイスインターフェースは、当該システムと1以上の不揮発性メモリデバイスとを接続してもよい。マイクロシーケンサは、通常、(i)制御プロセッサと(ii)不揮発性メモリデバイスインターフェースとに接続される。マイクロシーケンサは、マイクロシーケンサで読み取り可能、かつ、制御プロセッサで書き込み可能なコントロールストアを備える。コマンドのうち特定コマンドを受け取ると、制御プロセッサは、特定コマンドに従い、コントロールストア内の位置でマイクロシーケンサに実行開始させることができ、マイクロシーケンサは、不揮発性メモリデバイスインターフェースに接続された1以上の不揮発性メモリデバイスのプロトコルに従い、特定コマンドの少なくとも一部を実行することができる。
より詳しくは、本発明の一形態は、システムであって、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出する制御プロセッサと、前記システムと1以上の不揮発性メモリデバイスとを接続する不揮発性メモリデバイスインターフェースと、(i)前記制御プロセッサと(ii)前記不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有するマイクロシーケンサとを備え、前記コントロールストアは、前記マイクロシーケンサで読み取り可能、かつ、前記制御プロセッサで書き込み可能であり、前記コマンドのうち特定コマンドを受け取ると、前記制御プロセッサは、前記特定コマンドに従い、前記コントロールストア内の位置で前記マイクロシーケンサに実行開始させることができ、前記マイクロシーケンサは、前記不揮発性メモリデバイスインターフェースに接続された前記1以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行することができる。
ここで、前記不揮発性メモリデバイスインターフェースは、複数のデータ入出力ピンと、複数の制御入出力ピンとを備えてもよい。
また、前記マイクロシーケンサは、前記制御入出力ピンと前記データ入出力ピンとの状態を変更して、前記プロトコルに従い前記特定コマンドを実行することができてもよい。
また、前記コントロールストアは、前記不揮発性メモリデバイスインターフェースに取付けられた前記1以上の不揮発性メモリデバイスに関連付けられている1以上のプロトコルを実行するよう前記制御プロセッサによってプログラミングされてもよい。
また、前記制御プロセッサは、さらに、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができ、続いて、前記1以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサがプログラミングすることができてもよい。
また、さらに、前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、出力データバッファを有する出力データインターフェースと、前記マイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続され、入力データバッファを有する入力データインターフェースとを備え、前記出力データバッファは、前記不揮発性メモリデバイスインターフェースに出力されるデータを受け取り可能であり、前記入力データバッファは、前記不揮発性メモリデバイスインターフェースから入力されたデータを受け取り可能であってもよい。
また、前記マイクロシーケンサは、さらに、(i)前記入力データバッファの全体状態を検出し、(ii)前記全体状態の検出結果に応じて、前記コントロールストア内の所定の位置にジャンプすることができてもよい。
また、前記システムは、ソリッドステートドライブ(SSD)装置の一部であってもよい。
また、前記システムは、1以上の集積回路として実装されてもよい。
また、本発明の別の形態は、不揮発性メモリチャネルの制御方法であって、制御プロセッサに接続されたコマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出するステップと、前記制御プロセッサに接続されたマイクロシーケンサを用いて、コントロールストア内の位置で命令実行を開始するステップとを含み、前記位置は、受け取った前記コマンドのうち特定コマンドに従い、前記制御プロセッサにより決定され、前記マイクロシーケンサは、不揮発性メモリデバイスインターフェースにより前記マイクロシーケンサに接続された1以上の不揮発性メモリデバイスのプロトコルに従い、前記特定コマンドの少なくとも一部を実行する。
ここで、さらに、前記制御プロセッサを用いて、前記不揮発性メモリデバイスインターフェースに取付けられた前記1以上の不揮発性メモリデバイスに関連付けられている1以上のプロトコルを実行するよう前記コントロールストアをプログラミングするステップを含んでもよい。
また、さらに、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップと、続いて、前記1以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するよう前記コントロールストアを前記制御プロセッサにプログラミングさせるステップとを含んでもよい。
本発明により、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いた不揮発性メモリのチャネル制御が実現される。つまり、専用回路で実現した場合の長所と汎用プロセッサで実現した場合の長所の両方を併せ持つ不揮発性メモリのチャネル制御が実現される。
本発明の実施形態は、後述の詳細な説明、並びに、添付された特許請求の範囲及び図面から明らかになる。
図1は、本発明の実施形態に係る不揮発性メモリ制御システムを示す図である。 図2は、本発明の実施形態に係るインターフェース管理プロセッサを示す図である。 図3は、図2の出力データバッファの実装例を示す図である。 図4は、図2の入力データバッファの実装例を示す図である。 図5は、図2の制御部の実装例を示す図である。 図6は、図2の低レベル不揮発性メモリインターフェースの実装例を示す図である。 図7は、図6の低レベル不揮発性メモリインターフェースシーケンサ部の実装例を示す図である。 図8は、図6のDQ取り込みブロックの実装例を示す図である。 図9は、図8のDQ取り込みニアパッド論理回路(NPL)ブロックの実装例を示す図である。 図10は、図8のDLLブロックの実装例を示す図である。 図11は、出力インターフェースニアパッド論理回路ブロックの実装例を示す図である。 図12は、本発明の実施形態に係るマルチチャネル型不揮発性メモリ制御システムを示す図である。
本発明の実施形態は、低レベルプログラマブルシーケンサと共に汎用プログラマブルプロセッサを用いて不揮発性メモリ(例えば、フラッシュなど)のチャネル制御を実装する方法及び/又は装置を含む。本発明の実施形態では、(i)高レベル制御用汎用中央演算処理装置(CPU)と、不揮発性メモリインターフェースの低レベル制御用プログラマブルマイクロシーケンサとを組み合わせ、(ii)マイクロシーケンサを用いて、シーケンスプログラミングで定義されたような不揮発性メモリインターフェースのクロックサイクル制御によりクロックサイクルを供給し、(iii)どのような不揮発性メモリインターフェースも扱えるようにマイクロシーケンサをプログラミングでき、(iv)まだ想定されていない今後の不揮発性メモリインターフェースのプログラミングを可能にし、(v)マイクロシーケンサを用いて、不揮発性メモリのピン出力を制御、データ出力及びデータ取込を制御、インターフェース動作モードを設定、かつ/又は、(パイプライン遅延を生じることなく)定義されたシーケンスで設定回数ループするよう命令し、(vi)マイクロシーケンサを用いて、コンフィギュラブルな方法でデータ欠乏状態及びデータバックプレッシャー状態に対処できる性能を与え、(vii)CPUとマイクロシーケンサとの間で共有メモリを実装することにより、シーケンスパラメータを引き渡し可能、かつ、マイクロシーケンス制御コードを容易に変更可能にし、(viii)シーケンスを実行するための要求をマイクロシーケンサに渡し、シーケンスが完了、又は、エラー状態のときにのみマイクロシーケンサからのレスポンスを生成し、かつ/又は、(ix)より高レベルなスケジューリング、管理、及び、決定を行えるようにCPUの負荷を削減してもよい。
図1は、本発明の実施形態に係る不揮発性メモリ制御システム100を示す図である。ある実施形態では、不揮発性メモリ制御システム100は、ブロック101とブロック103とを備える。ブロック101は、インターフェース管理プロセッサ(IMP)とも呼ばれるメモリチャネルコントローラを実装してもよい。ブロック103は、コントローラホストを実装してもよい。コントローラ101は、本発明に係るシステムの一例であり、1以上の個別不揮発性メモリチャネルを制御してもよい。ある実施形態では、複数の不揮発性メモリチャネルを制御するようにコントローラ101のマルチインスタンスを実装してもよい。コントローラ101は、コマンドを受け取ってホスト103にレスポンスを送出するコマンドインターフェースを有する。ホスト103は、例えば、バックエンド処理部(BEPU)を備えてもよい。複数の不揮発性メモリチャネルを実装する実施形態では、ホスト103は、また、コントローラ101のマルチインスタンスとBEPUとを接続する多重化回路を備えてもよい。ある実施形態では、ホスト103は、ソリッドステートディスク(SSD)コントローラなどのI/Oデバイスコントローラであり、BEPUは、NANDフラッシュ不揮発性メモリチップなどの複数の不揮発性メモリデバイスをスケジューリング及び/又はデータ管理するコントローラの一部である。別の実施形態では、BEPUは、データ又はその他の情報を格納し、かつ、当該データ又はその他の情報をホスト103とコントローラ101との間で移動させるためのデータバッファリング及びダイレクトメモリアクセス(DMA)エンジンを備える。
また、コントローラ101は、システム100と不揮発性記憶媒体105とを接続する不揮発性メモリインターフェースを有してもよい。不揮発性記憶媒体105は、1以上の不揮発性メモリデバイス107を備えてもよい。不揮発性メモリデバイス107は、ある実施形態において、1以上の不揮発性メモリダイ109を有する。不揮発性メモリデバイス107のうち特定タイプのものによれば、この特定の不揮発性メモリデバイス107内の複数の不揮発性メモリダイ109は、オプション及び/又は選択的に、並列アクセス可能である。不揮発性メモリデバイス107は、通常、通信的にコントローラ101と接続できるあるタイプのストレージデバイスの代表的なものである。しかしながら、様々な実施形態では、SLC(シングルレベルセル)NANDフラッシュメモリ、MLC(マルチレベルセル)NANDフラッシュメモリ、TLC(トリプルレベルセル)NANDフラッシュメモリ、NORフラッシュメモリ、読み取り専用メモリ(ROM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、強誘電体メモリ(例えば、FeRAM、F−RAM、FRAM(登録商標)など)、相変化メモリ(例えば、PRAM、PCRAMなど)、レーストラックメモリ(又は、ドメイン壁メモリ(DWM))、抵抗変化型メモリ(RRAM(登録商標)又はReRAM)、又は、他のタイプのメモリデバイス若しくはストレージメディアなど、どんなタイプのストレージデバイスも利用可能である。
ある実施形態では、コントローラ101及び不揮発性記憶媒体105は別々の集積回路に実装される。コントローラ101と不揮発性記憶媒体105とを別々の集積回路(又は装置)として実装した場合、コントローラ101の不揮発性メモリインターフェースは、通常、複数のデータ入力/出力(I/O)ピンと複数の制御I/Oピンとを管理できる。データI/Oピン及び制御I/Oピンは、コントローラ101を含む装置と不揮発性記憶媒体105を形成する外部デバイスとを接続するように構成されてもよい。
図2は、本発明の実施形態に係るコントローラ101の実装例を示す図である。ある実施形態では、コントローラ101は、インターフェース管理プロセッサ(IMP)を実装する。ある実施形態では、コントローラ101は、ブロック(又は回路)110と、ブロック(又は回路)112と、ブロック(又は回路)114と、ブロック(又は回路)116と、ブロック(又は回路)118と、ブロック(又は回路)120と、ブロック(又は回路)122と、ブロック(又は回路)124とを備える。通常、ブロック110は、コンフィギュラブルで、フレキシブル、かつ、拡張可能な方法で複数の不揮発性メモリデバイスを制御するシリコン論理回路及びファームウェアを実装する。ブロック112は、バスインターフェースブロック(BIB)を実装する。ブロック114は、コマンドバッファ(CB)を実装する。ブロック116は、マイクロシーケンサを介して不揮発性メモリデバイスインターフェースに接続され、出力データバッファを有する出力データインターフェースの一例であり、出力データバッファ(ODB)を実装する。ブロック118は、レスポンスバッファ(RB)を実装する。ブロック120は、マイクロシーケンサを介して不揮発性メモリデバイスインターフェースに接続され、入力データバッファを有する入力データインターフェースの一例であり、入力データバッファ(IDB)を実装する。ブロック122は、設定/ステータスレジスタ(CSR)ブロックを実装する。ブロック124は、同期ブロックを実装する。
バスインターフェースブロック(BIB)112は、バックエンド処理部(例えば、ホスト103)との情報伝達を処理する。BIB112は、出力バス(例えば、OB)を介してBEPUから受け取った低レベルのデータリンクコマンドを処理し、コマンドバッファ114と出力データバッファ116とにコマンドとデータとを渡す。また、BIB112は、入力バス(例えば、IB)を介して、レスポンスバッファ(RB)118からのコマンドレスポンスと入力データバッファ(IDB)120からの入力データとをバックエンド処理部に送出する。コマンドバッファ(CB)114は、出力バスワードをハードウェア制御ポート(HCP)のダブルワードに蓄積し、このHCPダブルワードをCU(制御部)130に出力する。ダブルワードという用語は、1サイクルにおけるデータ転送単位を表す(例えば、8バイト)。レスポンスバッファ(RB)118は、CU130からHCPダブルワードを取得し、このHCPダブルワードを複数の入力バスワードに分解し、そして、この複数の入力バスワードをBIB112に送出する。ある実施形態では、HCPダブルワードは、BEPUとCU130との間でやりとりされたメッセージを含む。例えば、BEPUは、CU130にメッセージを送って、CU130が管理するワークのキューに不揮発性メモリデバイスへのアクセス動作命令を追加し、CU130は、当該動作命令の完了及び/又はステータスを示すメッセージをBEPUに送り返す。別の実施形態では、BEPUからのメッセージには、動作命令のデータ転送にそれぞれ関連付けられたタグが含まれており、CU130は、これらのタグを用いて、不揮発性メモリデバイスに書き込まれるデータのフェッチを開始すること、又は、不揮発性メモリデバイスから読み込んだデータの動作命令別移動先を示すことができる。このように、BIB112、CB114及びRB118により、コマンドインターフェースが構成される。
CSRブロック122は、システム100のCSRリング上に位置する。CSRブロック122は、インターフェース管理プロセッサ(IMP)情報へのアクセス権を与え、CSRブロック122のレジスタを介してIMP動作を設定する。例えば、CSRブロック122のレジスタは、CU130の起動を有効にし、CU130動作のステータスを示し、コントローラ101のデバッグ及び/又は診断上の機能、並びに、その他の管理アクセス機能を有効にする。CSRリングは、複数のバス規格(例えば、PalmBus、AMBA、AHBなど)のうちいずれの規格を用いて実装してもかまわない。様々な実施形態では、複数(例えば、2つ)の優先割り込み信号と停止信号(例えば、HALT/INTR)とをバックエンド処理部に送出してもよい。バックエンド処理部は、コア領域への停止信号と優先割り込み信号とを同期させる。ブロック124は、コントローラ101のクロック領域へのグローバル停止入力(例えば、HALT IN)を同期させてもよい。その後、同期化されたグローバル停止入力は、CSR制御下で、コントローラ101を停止することができる。
ブロック110は、通常、制御部(CU)130と、低レベル不揮発性メモリインターフェース(LFI)132とを備える。CU130は、コマンドインターフェースを介して、コマンドを受け取り、レスポンスを送出する制御プロセッサの一例であり、通常、汎用中央演算処理装置(CPU)を備える。LFI132は、システムと1以上の不揮発性メモリデバイスとを接続する不揮発性メモリデバイスインターフェースと、制御プロセッサ及び不揮発性メモリデバイスインターフェースに接続され、コントロールストアを有するマイクロシーケンサである低レベルプログラマブルマイクロシーケンサとを備える。CU130とLFI132の低レベルプログラマブルマイクロシーケンサとは、共有メモリ(例えば、ブロック134)によって密に結合されている。CU130とLFI132の低レベルプログラマブルマイクロシーケンサとは、1以上の不揮発性メモリデバイス(例えば、図1の不揮発性記憶媒体105)に接続するシステム出力及び入力(例えば、NVM I/O)を制御することができる。CU130は、総合システムコントローラからコマンドを受け取ることができ、(i)LFI132の低レベルプログラマブルマイクロシーケンサにどのコマンドを発行するかの決定、(ii)中央システムデータレポジトリへ/からのデータフローの制御、(iii)起こり得るエラー状態の処理、及び、(iv)コマンドの完了を示すための総合システムコントローラへのレスポンス送出を担う。
このように、制御プロセッサは、コマンドのうち特定コマンドを受け取ると、特定コマンドに従い、コントロールストア内の位置でマイクロシーケンサに実行開始させることができる。マイクロシーケンサは、不揮発性メモリデバイスインターフェースに接続された1以上の不揮発性メモリデバイスのプロトコルに従い、特定コマンドの少なくとも一部を実行することができる。そのために、マイクロシーケンサは、入力データバッファの全体状態を検出し、全体状態の検出結果に応じて、コントロールストア内の所定の位置にジャンプすることができる。ここで、制御プロセッサは、まず、複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するようコントロールストアを制御プロセッサがプログラミングし、続いて、1以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するようコントロールストアを制御プロセッサがプログラミングすることができる。
LFI132の低レベルプログラマブルマイクロシーケンサは、取付けられた特定タイプの不揮発性メモリデバイスに対応し、かつ、制御するためのプログラムで構成されてもよい。このため、LFI132の低レベルプログラマブルマイクロシーケンサは、特定の不揮発性メモリインターフェースプロトコルに関する内容をCU130から抜き出し、より高レベルなシーケンス呼び出しをCU130に出力してもよい。CU130、LFI132の低レベルプログラマブルマイクロシーケンサ、及び、それぞれのプログラムによって、通常、総合システムコントローラは、高レベルの不揮発性メモリコントローラ101にコマンドを発行できるようになる。CU130のプログラムは、(例えば、1以上の不揮発性メモリデバイス用の)より高レベルなコマンドのスケジューリングを処理し、この高レベルコマンドをより低レベルなコマンドに分解し、この低レベルコマンドをLFI132の低レベルプログラマブルマイクロシーケンサに発行する。コマンドが完了すると、プログラムは、BEPUコントローラにレスポンスを発行する。これにより、BEPU及び/又はホスト103のその他のプロセッサは、不揮発性メモリインターフェースの内容を処理する必要がない。新たな不揮発性メモリデバイスを導入しても、CU130用とLFI132の低レベルプログラマブルマイクロシーケンサ用の新たなプログラムを単に展開するだけで、上述したフレキシブルな手法により、新たなデバイスを使用することができる。
LFI132は、不揮発性記憶媒体からデータを受け取る際のバックプレッシャー、又は、不揮発性記憶媒体にデータを送出する際のデータ欠乏などによるデータ障害を検出することができる。また、LFI132の低レベルプログラマブルマイクロシーケンサは、プログラムループから「抜け出し」て、例外状況に入ることができる。例外状況では、LFI132の低レベルプログラマブルマイクロシーケンサは、第1モードとして、データの回復を検出して動作を継続する、又は、第2モードとして、CU130への割り込みによってより高レベルの動作を再開させることができる。第2モードでは、CU130は、LFI132の低レベルプログラマブルマイクロシーケンサにより転送されたデータにアクセスでき、例えば、アドレス及び/又は長さを整えて、データ転送が中断されたポイントからデータ転送を再開することができる。
CU130は、インターフェース管理プロセッサコマンドに割り込み、レスポンスを出力する。また、CU130は、入力データバッファと出力データバッファとにアクセスでき、LFI132を制御する。LFI132は、不揮発性メモリI/Oにアクセスして制御し、コマンド順序を決定し、データ出力順序を決定し、そして、返信データを取り込む。CU130の機能性のうち大部分をファームウェアに実装することにより、フレキシブル性及びこれからの不揮発性メモリタイプに対するサポートが可能となる。
図3は、図2の出力データバッファ(ODB)116の実装例を示す図である。ある実施形態では、ODB116は、ブロック(又は回路)150と、ブロック(又は回路)152と、ブロック(又は回路)154と、ブロック(又は回路)156と、ブロック(又は回路)158とを備える。ブロック150は、通常、制御インターフェースを実装する。ブロック152は、通常、ルーティング動作を行うことができる。ブロック154は、不揮発性メモリデバイスインターフェースに出力されるデータを受け取り可能な出力データバッファの一例であり、先入れ先出し(FIFO)バッファを実装する。ブロック156は、カウンタを実装する。ブロック158は、通常、パリティチェックを行うことができる。
動作の第1モード(例えば、通常モード)では、LFI132に受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。デバッグ又はその他の高度機能のために、CUレジスタインターフェースに受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。CUファームウェアをダウンロードするために、CU130のコマンドインタプリタに受信データを直接入力するよう、制御及びルーティングをセットアップすることができる。例えば、ブロック154を、8ビット幅、4エントリー深度のFIFOバッファとして実装してもよい。ただし、他の深度及び幅を実装して特定の実装の設計基準を満たしてもかまわない。ブロック154は、シーケンス制御の一部として用いられる、コンフィギュラブルなHi及びLoレベル(例えば、FIFO閾値)を有している。典型的に、4深度のダブルデータレート(DDR)システムの場合は、Hiは2に設定され、Loは1に設定される。4深度のシングルデータレートシステムの場合は、Hiは1に設定され、Loは0に設定される。ブロック156は、ODB116に入力されたバイト数をカウントする、CUのCSRアクセス可能カウンタとして実装してもよい。また、ブロック156は、CU130によって書き込み可能であり、正確なバイト数が書き込みデータパスから入力されたことの確認としてのデバッグの際に有用かもしれない。ブロック158は、データインターフェースのパリティチェックを行い、パリティエラーなどの例外時に割り込みをBEPUへシグナリングできるCSRブロック122にパリティエラーを報告することができる。
図4は、図2の入力データバッファ(IDB)120の実装例を示す図である。ある実施形態では、IDB120は、ブロック(又は回路)160と、ブロック(又は回路)161と、ブロック(又は回路)163と、ブロック(又は回路)165と、ブロック(又は回路)167と、ブロック(又は回路)169とを備える。ブロック160は、通常、制御インターフェースを実装する。ブロック161は、通常、ルーティング動作を行うことができる。ブロック163は、不揮発性メモリデバイスインターフェースから入力されたデータを受け取り可能な入力データバッファの一例であり、先入れ先出し(FIFO)バッファを実装する。ブロック165は、ディスパリティ算出器を実装する。ブロック167は、パリティ生成器を実装する。ブロック169は、カウントダウンカウンタを実装する。
IDB120は、通常、ブロック163を介して、LFIから受信データを受け取る。ある実施形態では、ブロック163を、8ビット幅、40エントリーのFIFOバッファとして実装してもよい。ただし、他の深度及び幅を適宜実装して特定の実装設計基準を満たしてもかまわない。ブロック163は、LFI132でのフロー制御において用いられる、コンフィギュラブルなHi及びLoレベル(例えば、FIFO閾値)を有している。ブロック163は、早い転送レートで重要になるシステム100の往復レイテンシ(例えば、30ns)を許容し、また、FIFOバッファに受信データをバッファリングしている間に、転送開始時の時刻をメッセージのヘッダにCU130から挿入することができる。ダブルデータレートシステムに対するHi及びLoレベル(例えば、FIFO閾値)の設定例として、Hiレベルは22、Loレベルは21である。
LFI132からのデータは、通常、IDB120とBIB112とを接続する送信FIFOバッファ(図示せず)に直接入力される。また、LFI132からのデータは、制御インターフェース160のCUレジスタインターフェースを用いてCU130により読み出すことができる(例えば、この機能は、データがCU130で使用される、不揮発性メモリデバイスのレジスタ読み出し、ステータス読み出しなどに用いることができる)。また、CUレジスタインターフェースを用いて、データをCU130からBIB112へ送出することもできる(例えば、この機能は、データヘッダ/トレーラに用いることができる)。
ブロック165は、通常、ランニングディスパリティ算出器を実装する。ある実施形態では、ランニングディスパリティ算出器は、読み込みデータストリーム内の0のビット数よりも1のビット数が多い分の累積数を示す符号付き20ビットを保持する。ディスパリティ計算の例は、以下の(式1)で示される。
ディスパリティ=1に設定されたビット総数−(ビット総数/2) (式1)
ディスパリティ値が20ビットの正又は負の最大値に達すれば、ディスパリティ値は飽和して一定値になる。不揮発性メモリデバイスからの読み込みデータが既知の予測ディスパリティを有する場合は、ディスパリティ算出器を用いて、少なくとも部分的に、読み込みデータが有効かどうかを判断する。1つ目の例として、不揮発性メモリデバイスからの読み込みデータが暗号化されていて「0」と「1」の分布が統計的に半々ならば、ディスパリティは0に近いと予測される。2つ目の例として、NANDフラッシュなどの不揮発性メモリデバイスが、全て「1」の消去状態にあるとする。ディスパリティ計算により、読み込んだデータビットの実質全てが1の値であると示されれば、おそらく、消去ページが読み込まれたものと考えられる。
データ読み込みが完了すると、ディスパリティ値はCU130によって読み出されて、データトレーラに含められるか、又は、レスポンスとしてBEPUに返される。CU130は、通例、データ転送開始前にディスパリティ値をクリアするはずである。送信データストリームは、ブロック167で保護されたパリティである。
ブロック169は、通常、CSRアクセス可能カウントダウンカウンタを実装する。ブロック169は、IDB120から送出されるバイト数をカウントダウンする。これは転送の長さに設定することができ、転送終了時に0になるようカウントダウンされる。また、ブロック169は、CU130のCSRレジスタによりプログラミングされ、転送開始/終了時に第1/最終の表示(例えば、フレーミング情報を与えるサイドバンド信号)を生成することができる。カウンタが0になった後、第2CSRレジスタを用いてブロック169を初期設定する。
BIB112への送信データがCU130によって生成される場合(例えば、データヘッダ及びトレーラ用)、BIB112への第1出力と最終出力もCU130によって制御される。典型的な読み込みでは、CU130は、まず、IDB120を「CUから」モードにして、LFI132で読み込みコマンドを開始し、そして、ヘッダをBIB112へ転送する。そして、LFI132からのデータとブロック163内のデータとをBEPUに転送するよう、IDB120を「通常」モードにする。最後に、CU130は、必要であればトレーラを生成する。
図5は、図2の制御部(CU)130の実装例を示す図である。CU130は、通常、コントローラ101のマイクロプロセッサベース監視制御部を実装する。CU130は、出力バス(OB)からコマンドを受け取り、コマンドスケジューリングと優先順位付けとを行う。ある実施形態では、CU130は、ブロック(又は回路)170と、ブロック(又は回路)172と、ブロック(又は回路)174と、ブロック(又は回路)176と、ブロック(又は回路)178と、ブロック(又は回路)180と、ブロック(又は回路)182と、ブロック(又は回路)184とを備える。ブロック170は、通常、CPU(中央演算処理装置)コアを備える。ブロック172は、通常、コマンドインタプリタを実装する。ブロック174は、アービタを実装する。ブロック176は、データを格納するランダムアクセスメモリ(RAM)を実装する。ブロック178は、ローカル設定/ステータスレジスタ(CSR)ブロックを実装する。ブロック180は、LFI132とのインターフェースを実装する。ブロック182は、アービタを実装する。ブロック184は、命令を格納するランダムアクセスメモリ(RAM)を実装する。
スタートアップ時、CPU170は、ブロック178のCSRレジスタによりリセット状態に保たれる。命令RAM184とLFI132のシーケンスRAMとデータRAM176との初期状態をプログラミングするよう、IMPコマンドがBEPUによって発行される。初期状態は、通常、システムROM(図示せず)から入手する。初期プログラミングの後、リセット状態が解除され、CPU170はその初期ファームウェアを実行開始する。ファームウェアにより、CPU170は、BEPUから発行されたコマンドに応答することができる。初期動作状態の間、BEPUは、不揮発性メモリデバイスからバックエンドバッファ(図示せず)に最終動作コードをもってきてもよい。最終動作コードは、CPU170だけでなくシステム100上の他のCPUも設定するために用いられる。一例として、この段階で、不揮発性メモリに格納されたファームウェアの性能を最適化したものでCUコードをリロードする可能性がある。これは、通常、データ転送として発生し、IMPコマンドを用いて、命令RAM184、データRAM176、及び/又は、LFI132のシーケンスRAMに受信IDBデータを直接入力する。一般に、CU130は、主な動作コードのロード中はリセット状態である。
データRAM176、命令RAM184、及び、LFI132のシーケンスRAMにIMPコマンドがアクセスできるよう、アービタ182とアービタ174とをCPU170のRAMインターフェース上で用いてもよい。一例として、CPU170のストールメカニズムを利用してもよい。これにより、IMPコマンドインタプリタ172に優先権が与えられる。ただし、CPU170によるアクセス以外の、データRAM176、命令RAM184、及び、LFI132のシーケンスRAMへのアクセスは、初期設定時にしか発生しないと考えられる。
また、CPU170は、BEPUからのメッセージを渡し、かつ、BEPUにレスポンスを返すための入力FIFOインターフェース及び出力FIFOインターフェースを備えてもよい。また、出力FIFOインターフェースは、(例えば、ホスト103の)ダイレクトメモリアクセス(DMA)エンジンにメッセージを渡してデータ転送動作を開始するためにも用いられる。
CPU170のインターフェースは、ローカルCSRにアクセスし、LFI132にコマンドを発行するために用いられる。テンシリカCPUを用いた実施形態では、インターフェースはTIE(Tensilica Instruction Extension)検索インターフェースである。グローバル停止信号(例えば、電源障害又はその他の異常事態が生じた場合にホスト103から送出される信号)を用いて、CPUコア170のノンマスカブル割り込み(NMI)を発生させてもよい。
図6は、図2の低レベル不揮発性メモリインターフェース(LFI)132の実装例を示す図である。LFI132は、不揮発性メモリインターフェースを低レベル制御する。LFI132は、いかなる不揮発性メモリインターフェースプロトコルにもコンフィギュラブルに設計されたプログラマブルシーケンスエンジンを備える。使用されるシーケンスは、CU130によって設定され、CU130により与えられたコマンドで実行される。また、CU130によるプログラミング及びシーケンスによるアクセスが可能なシーケンスデータ領域が存在するため、ジェネリックシーケンスをセットアップでき、シーケンス自体を変更することなくデータをシーケンスに関連付けることができる。
ある実施形態では、1つの物理インターフェースだけではなく2以上の物理インターフェースに対応している。例えば、2つの物理インターフェース(例えば、A及びB)と共に、LFI132は、ブロック(又は回路)190と、ブロック(又は回路)192aと、ブロック(又は回路)192bと、ブロック(又は回路)194aと、ブロック(又は回路)194bと、ブロック(又は回路)196と、ブロック(又は回路)198とを備えてもよい。ブロック190は、通常、低レベル不揮発性メモリインターフェース(LFI)シーケンサ部(LSU)を備える。ブロック192a及び192bは、通常、DQ取り込みブロックを実装する。ブロック194a及びブロック194bは、それぞれ、A不揮発性メモリインターフェース及びB不揮発性メモリインターフェースを実装する。ブロック196は、チップイネーブル(CE)インターフェースを実装する。ブロック198は、2つのDQ取り込みブロック192a及び192bから選択する多重化回路を実装する。ブロック192a及び192bと、ブロック196とは、複数のデータ入出力ピンと複数の制御入出力ピンとを備える不揮発性メモリデバイスインターフェースの一例である。
LFIシーケンサ部(LSU)190は、制御プロセッサと不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有するマイクロシーケンサの一例であり、シーケンスを実行して、不揮発性メモリコマンドの出力、つまり、書き込みデータ転送及び読み出しデータ転送を指示する。マイクロシーケンサは、不揮発性メモリデバイスインターフェースの制御入出力ピンとデータ入出力ピンとの状態を変更して、プロトコルに従い特定コマンドを実行することができる。シーケンスRAMインターフェースにより、LSU190の内部シーケシングメモリをシーケシング開始前にセットアップすることができ、また、CU130により動的にプログラミングされたシーケンスを内部シーケシングメモリで保持することもできる。そして、LSU190のシーケンスコマンドインターフェース上でシーケンスコマンドを発行することができる。コマンドがどのインターフェース向けなのかでインターフェース選択(例えば、信号I/F A EN及び信号I/F B EN)はプログラミングされ、この選択によってコマンドは適切なインターフェースに入力される。ある実施形態及び/又は利用状況では、各コマンドは1つのインターフェースに入力される。別の実施形態及び/又は利用状況では、少なくともいくつかのコマンド(例えば、リセットコマンド)が複数のインターフェースに入力される。チップイネーブル(CE)インターフェース(例えば、信号CEN OUTPUTS)により、不揮発性メモリインターフェースのうち1つに取付けられたダイを選択するためのCE出力をフル制御することができる。ある実施形態では、最大8CEまでの設定に対応している。ダイは、どの不揮発性メモリインターフェースでも取付けることができる。
DQ取り込みブロック192a及び192bは、DQSを用いた高速データ取り込みを行い、非同期モードに対するシーケンス遅延もとらえる。DQ Mirror信号は、DQ出力と取込データとのミラーリングを制御する。ミラーリングでは、ビット0を7と、1を6と、2を5と、3を4と入れ替える。これは、基板レイアウトの問題を軽減するいくつかの構造で行われるものであり、コントローラによって処理される必要がある。ミラーモードは、コマンドがLFI132に発行される前にCU130によって選択される。送信ミラーリングは、送信インターフェースで行われ、受信ミラーリングは、DQ取り込み多重化回路198のDQ取り込みに続いて行われる。
LFI132は、通常、プログラマブルシーケンスエンジンと、I/Oピン出力ブロック群と、データ取り込みブロック群とを備える。シーケンスエンジンは、通常、I/Oピンに取付けられた特定の不揮発性メモリデバイスの不揮発性メモリプロトコルを実行可能なシーケンス群でプログラミングされる。シーケンスは、シーケンスメモリ内の複数の位置で開始する命令群から構成されている。例えば、LFI132をプログラミングして実行する動作ごとにそれぞれの開始位置が存在する。ある実施形態では、シーケンスメモリは、512の32ビット位置として実装される。シーケンスの実行は、コマンドインターフェース上でコマンドを発行することにより開始される。コマンドは、通常、ジャンプするためのシーケンスRAMのアドレスと、シーケンス内の命令のうちいくつかが利用できる1バイトのコマンドデータとを含む。ただし、このコマンドデータは利用されない場合もある。
また、インデックスレジスタを用いて間接アドレス指定されるシーケンスデータRAMも設けられる。インデックスは、MODE命令を用いて設定され、通常、コマンドデータから得られる値に設定される。このように、コマンドシーケンスに関連付けられたデータはいずれもシーケンスデータRAMに設定できるため、シーケンス自体を変更する必要はない。一例として、5バイトのアドレスを有する読み込みコマンドを挙げる。アドレスのバイトはシーケンスデータRAMの連続した位置に置かれ、シーケンスRAM内の読み込みコマンドシーケンスのアドレスと、シーケンスデータRAM内のアドレスの1番目のバイトのアドレスとを含んだコマンドが発行される。シーケンスは、インデックスレジスタを設定してから、必要なシーケンスを実行してアドレスを送出し、このアドレスシーケンスをアドレスのバイトごとに繰り返す。命令により、インデックスレジスタはインクリメントされる(メモリの最後の次は先頭に戻る)。ただし、WIG命令(不揮発性メモリデバイスに接続されたI/Oピンをウイグルするのに用いられる)の場合は、インクリメントはオプションである。
停止を引き起こす命令を受けるまで、シーケンスは実行される。停止命令はシーケンス実行を終了させ、LFIは、次のコマンドが届くのを待って何もアクションを起こさない状態になる。不揮発性メモリデバイスに対するアクションの実行は、複数のシーケンス呼び出しで構成してもよい。例えば、1シーケンスを呼び出してデバイスを選択し、別のシーケンス呼び出しで読み込みを発行し、最終シーケンスでデバイス選択の解除を行うことができるであろう。
図7は、図6の低レベル不揮発性メモリインターフェース(LFI)マイクロシーケンサ部(LSU)190の実装例を示す図である。ある実施形態では、LSU190は、ブロック(又は回路)200と、ブロック(又は回路)202と、ブロック(又は回路)204と、ブロック(又は回路)206と、ブロック(又は回路)208と、ブロック(又は回路)210と、ブロック(又は回路)212と、ブロック(又は回路)214と、ブロック(又は回路)216と、ブロック(又は回路)218とを備える。ブロック200は、通常、シーケンス実行部(SEU)を備える。ブロック202は、通常、シーケンスデータを格納するランダムアクセスメモリ(RAM)(例えば、シーケンスデータRAM)を実装する。一例として、シーケンスデータRAM202をデュアルポートメモリとして実装してもよい。ブロック204は、インデックスレジスタを実装する。ブロック206は、多数の出力レジスタを実装する。ブロック208は、ゼロオーバーヘッドループ(ZOL)レジスタを実装する。ブロック210は、通常、次のプログラムカウンタ(PC)の算出を行う。ブロック212は、プログラムカウンタ(PC)レジスタを実装する。ブロック214は、マイクロシーケンサで読み取り可能、かつ、制御プロセッサで書き込み可能なコントロールストアの一例であり、通常、シーケンスを格納するランダムアクセスメモリ(RAM)(例えば、シーケンスRAM)を実装する。一例として、シーケンスRAM214をデュアルポートメモリとして実装してもよい。ブロック216は、プリフェッチレジスタを実装する。ブロック218は、コマンドレジスタを実装する。
シーケンスRAM214を初期化してから、いずれのコマンドも実行する必要がある。シーケンスRAM214の初期化は、通常、最初の不揮発性メモリ読み込みを行うためにスタートアップ時に一度行われ、二度目は、不揮発性メモリデバイスから主な実行コードをロードしたときに行われる。ある実施形態では、シーケンスRAM214を32ビット幅(+ECCビット)で512ワード深度のデュアルポートRAMとして実装して、シーケンスの実行中にCU130からアクセスできようにしてもよい。ある実施形態では、シーケンスアドレスは9ビットである。ただし、他のメモリ仕様を適宜実装して特定の実装の設計基準を満たしてもかまわない。このように、コントロールストアは、不揮発性メモリデバイスインターフェースに取付けられた1以上の不揮発性メモリデバイスに関連付けられている1以上のプロトコルを実行するよう制御プロセッサによってプログラミングされる。
シーケンスデータRAM202により、CU130は、インデックスレジスタ204を用いたコマンドでアクセスできる様々なコマンド値を設定できる。様々なコマンド値の設定は、コマンド/アドレスシーケンスをセットアップするような動作に用いることができる。ある実施形態では、シーケンスデータRAM202は、CU130から32ビットワード単位としてではなく、インデックスレジスタ204により1バイト単位としてアドレス指定される。ある実施形態では、シーケンスデータRAM202は、64バイト(16ワード)として実装される。ただし、他のメモリ仕様を適宜実装して特定の実装の設計基準を満たしてもかまわない。シーケンスデータRAM202からデータはプリフェッチされるので、偽ECCエラーの可能性をなくすため、シーケンスデータRAM202全体を使用前に初期化すべきである。
PCレジスタ212には、カレントシーケンスポインタが保持されている。カレントシーケンスポインタは、通常、次のシーケンス命令をフェッチするためにインクリメント器210を通る。ZOLレジスタ208は、シングルレベルのゼロオーバーヘッドルーピングに対応している。出力レジスタ206は、不揮発性メモリインターフェースに接続し、その動作を制御する。
シーケンスRAM214とシーケンスデータRAM202とは共にECC保護されており、CU130のメモリマップ内に存在する。ECCエラーはCU130への割り込みを発生させるため、レジスタを読み取って、エラー訂正が可能かどうか、また、どのRAMがエラー状態だったのかを判断することができる。訂正可能なエラーはいずれも、通例、メモリのリードスクラブとなる。シーケンスRAMの読み込み中に訂正不能なエラーが生じた場合は、シーケンスも直ちに停止される。
外部信号(例えば、HALT)は、CU130によりアサートされて、シーケンス実行部200の動作をいつでも停止することができる。通常、シーケンス実行部200の停止実行により、カレントシーケンスはカレント位置で直ちに終了する。新たなシーケンスを開始するためには、新たなコマンドを発行する必要がある。シーケンス実行部200の内部ステータスは、CU130で利用できる。
図8は、DQ取り込みブロック220の実装例を示す図である。DQ取り込みブロック220を用いて、図6のDQ取り込みブロック192aと192bとを実装してもよい。ある実施形態では、DQ取り込みブロック220は、クロック転送ブロック222と、複数のDQニアパッド論理回路ブロック224と、DLLブロック226と、複数のマッチセル228とを備える。ニアパッド論理回路(NPL)は、パッド付近に配置されたシリコンマクロブロックを備える。NPLブロックは、インターフェース論理回路上でタイミングを厳密に制御することを可能にする。各NPLブロックは、対応するパッドから一定の距離離して配置される。DQS入力は、DLLブロック226のスレーブモジュールを介して入力される。DLLブロック226のスレーブモジュールは、DQSサイクルの4分の1の遅延をDQS信号に挿入する。各DQNPLブロック224に対するDQSパス遅延は、同じNPLブロックに対するDQ遅延と一致するはずである。DQNPLブロック224は、後のDQSエッジ上でDQ値を4つ取り込む。4つのDQ値は、不揮発性メモリインターフェースのクロック領域に値を転送するクロック転送ブロック222に出力される。
図9は、図8のDQ取り込みニアパッド論理回路(DQ NPL)ブロック224の実装例を示す図である。ある実施形態では、DQ NPLブロック224は、取り込みフェーズフロップと、複数のDQ取り込みフロップ(例えば、DQ0P、DQ0N、DQ1P、DQ1N)とを備えている。読み込み転送の開始前は、信号(例えば、DQS EN)はLOWである。これにより、いかなるDQSグリッチもゲートオフされ、取り込みフェーズフロップはフェーズ0で保持される。1つ目の立ち上がりDQSエッジはDQ0Pフロップに取り込まれ、1つ目の立ち下がりエッジはDQ0Nフロップに取り込まれる。また、1つ目の立ち下がりエッジは取り込みフェーズを切り替え、次の2つのDQSエッジはDQ1PとDQ1Nとにそれぞれ取り込まれる。データ転送中、サイクルは4DQSエッジごとに繰り返される。
図10は、図8のDLLブロック226の実装例を示す図である。ある実施形態では、DLLブロック226は、遅延ロックループ(DLL)230と、制御ステートマシン(FSM)232とを備える。DLL230は、マスター部とスレーブ部とを備える。DLL230のマスター部は、入力基準クロックにロックする。DLL230のスレーブ部は、マスター基準クロックのプログラマブル分割により、任意の信号(例えば、DQS)を遅延させる。ある実施形態では、エッジアラインされたDQデータを取り込むために、受信DQS信号をDQS周期の4分の1遅延させる必要がある。DLLブロック226は、入力基準サイクルにロックする。入力基準サイクルは、コントローラ101のクロック(例えば、CLK)、又は、コントローラクロックを分周したもの(例えば、基準クロック分周器234で生成)でもよい。一般に、基準クロックは、送信DQSと同じ周波数、又は、2倍の周波数に設定されるものである。挿入される遅延は、一般的に、DQS周波数の約4分の1になるようプログラミングされる。DLL230のスレーブ部の遅延は、以下の(式2)に基づき算出してもよい。
Delay=Tf+Tref*((ADJ+ADJoff)/MADJ) (式2)
ここで、Tfは固定オフセット遅延、Trefは基準クロック周期、ADJはプログラム調整オフセット、ADJoffは、固定コードオフセット(例えば34)、MADJは通常160に設定されるマスター調整オフセット(ただし、76、・・・、255の範囲の値に変更可能)である。通常、固定オフセット遅延Tfは、DQライン上で用いられるマッチセル228で合わせられるため、無視することができる。したがって、(例えば、マッチセルを用いることにより)Tfを消去し、ADJについて解を求めると、以下の(式3)が得られる。
ADJ=MADJ*(Delay/Tref−ADJoff) (式3)
例えば400MT/sの動作条件の場合、DQS周波数は200MHz、コントローラクロックは400MHzである。ある実施形態では、400MHzクロックをDLLに直接入力することができ、信号DQSを基準クロックの2分の1周期(DQS周期の4分の1に相当)遅延させることができる。別の実施形態では、コントローラクロックを200MHzに分周することができ、信号DQSを基準クロック周期の4分の1遅延させる。
また、ソフトウェアにトレーニング方式を実装することも可能である。このようなトレーニング方式を有する実施形態では、既知のパターンを不揮発性メモリデバイスから読み込む間に、ADJ値はロー設定からハイ設定にスイープされる。最終的にADJは、読み込み中の正しいデータとなる中央値に設定される。基準クロック分周器若しくはMADJの何らかの変更、又は、パワーダウンが、最小1us間DLLをリセットするのに必要となる。制御FSM232は、プログラミングされた回数のクロックサイクルの間(例えば、400MHzの1us周期の場合、デフォルトは400)、DLL230をリセット状態に保持する。DLL230が実行可能になった後、ロックステータスは500基準クロック分にアサートされ、読み込み動作が開始される前に、この状態をファームウェアで確認することができる。
DLLブロック226の制御レジスタは、(例えば、BEPUから)CSRリングを介して、又は、CU130から局所的にアクセス及び設定可能である。ローカルアクセスは、トレーニング型機能(必要であれば)、又は、微粒子パワーダウン制御に用いられる。一般に、DLL値は、コンフィグレーションレコードから設定されるので、通常の動作中に調整する必要はない。節電のために、DLL制御FSM232に関連付けられたパワーダウン要求レジスタを設定することができる。DLL230は、DQS入力を使用する不揮発性メモリ読み込みモード(例えば、ONFI2/3のDDRモード及びトグルモード)に対する読み込み動作中にのみ用いられる。パワーダウンから抜けると続いてリセット及びロックシーケンスが起動されるため、動的パワーダウンは読み込み性能に影響を及ぼす可能性がある。チップをリセットするとすぐに、DLL230は、通常、パワーダウンモードになる。
図11は、出力インターフェースニアパッド論理回路(NPL)ブロック250の実装例を示す図である。各送信信号は、出力インターフェースNPLブロック250を介して出力される。MPLブロック250は、送信信号をクロック(例えば、CLK)にタイミングを合わせさせ、オプションで2分の1サイクルの遅延を送信信号の立ち上がり/立ち下がりエッジに加える。各送信信号に対する遅延は、CSRで設定可能である。各NPLブロック250は、各コントローラ101インスタンスからの全出力にわたりNPLブロック250からパッドへの遅延が一致する対応パッド近くに配置されるべきである。ある実施形態では、MPL250は、フリップフロップ260と、フリップフロップ262と、組み合わせ論理回路264と、マルチプレクサ266とを備える。ある実施形態では、フリップフロップ260及び262はD型フロップとして実装される。ある実施形態では、組み合わせ論理回路264は、ANDゲート、ORゲート、及び/又は、NOTゲートを備えてもよい。NPL250内において、マルチプレクサ266への可能な各パスは、できるだけ厳密に合わせるべきである。
図12は、本発明の実施形態に係るマルチチャネル型不揮発性メモリ制御システムを示す図である。ある実施形態では、不揮発性メモリシステム300は、ホスト202と、不揮発性メモリコントローラサブシステム304と、複数の不揮発性記憶媒体306a〜306nとを備えてもよい。ホスト302は、コマンドインターフェースを介して不揮発性メモリコントローラサブシステム304と情報のやりとりを行う。このコマンドインターフェースは、ホスト302と不揮発性メモリコントローラサブシステム304との間でコマンドとレスポンスとを転送する。不揮発性記憶媒体306a〜306nはそれぞれ、不揮発性メモリコントローラサブシステム304のチャネルに接続されてもよい。
ある実施形態では、不揮発性メモリコントローラサブシステム304は、ブロック310と、ブロック312と、ブロック314と、複数のブロック316a〜316nとを備えてもよい。ブロック310は、バックエンド処理部(BEPU)、及び/又は、不揮発性メモリコントローラサブシステム304の他のプロセッサとを備えてもよい。ブロック312は、ダイレクトメモリアクセス(DMA)エンジン、又は、不揮発性メモリコントローラサブシステム304のエンジンを備えてもよい。ブロック314は、不揮発性メモリコントローラサブシステム304の多重化サブシステムを実装してもよい。ブロック314は、ブロック316a〜316nと、ブロック310及びブロック312とを接続させてもよい。ブロック316a〜316nは、上述のコントローラ101と同様に実装されたインターフェース管理プロセッサを備えてもよい。ブロック316a〜316nは、CSRリングとそれぞれのコマンドインターフェースとによってブロック314に接続されてもよい。また、ブロック316a〜316nは、各ブロック316a〜316nをそれぞれの不揮発性記憶媒体306a〜306nに接続する不揮発性メモリインターフェースを有する。
動詞と組み合わせてここで用いられる「してもよい」及び「通常」という用語は、説明は例示であり、開示に記載された具体例だけでなくこの開示に基づいて導き出される別の例も包含するよう十分に広義であるという意図を伝えるためのものである。ここで用いられたような「してもよい」及び「通常」という用語は、必ずしも、対応要素の省略の望ましさ又は可能性を暗に意味すると受け取られるべきではない。
図1〜12に示された機能は、当業者に明らかなように、明細書の教示に従ってプログラミングされた1以上の、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、RISC(reduced instruction set computer)プロセッサ、CISC(complex instruction set computer)プロセッサ、SIMD(single instruction multiple data)プロセッサ、シグナルプロセッサ、中央演算処理装置(CPU)、算術論理装置(ALU)、ビデオデジタル信号プロセッサ(VDSP)、及び/又は、類似の計算器を用いて実装(例えば、モデル化)されてもよい。また、適切なソフトウェア、ファームウェア、コーディング、ルーチン、命令、オペコード、マイクロコード、及び/又は、プログラムモジュールは、当業者に明らかなように、開示の教示に基づいて当業者であるプログラマにより容易に作成されてもよい。通常、ソフトウェアは、マシン実装の1以上のプロセッサにより、1つ又はいくつかの媒体から実行される。
また、本発明の実施形態は、ASIC(application specific integrated circuit)、プラットフォームASIC、FPGA(field programmable gate array)、PLD(programmable logic device)、CPLD(complex programmable logic device)、SOG型(sea−of−gate)、RFIC(radio frequency integrated circuit)、ASSP(application specific standard product)、1以上のモノリシック集積回路、フリップチップモジュール及び/又はマルチチップモジュールとして構成された1以上のチップ又はダイを準備することによって、又は、ここで記載したように従来の素子回路の適切なネットワークを相互接続することによって実装されてもよい。これらの変形例も、当業者には容易に明らかであろう。
また、本発明の実施形態は、マシンをプログラミングして本発明に係る1以上のプロセス又は方法を実行するために用いられる命令を含む記憶媒体及び/又は伝送媒体でもよいコンピュータ製品を含んでもよい。マシンによりコンピュータ製品に含められた命令を周辺回路の動作とともに実行すると、入力データは、音声及び/又は視覚表現などの代表的な物体又は物質である記録媒体及び/又は1以上の出力信号上の1以上のファイルに変換されてもよい。記憶媒体は、フロッピー(登録商標)ディスク、ハードドライブ、磁気ディスク、光ディスク、CD−ROM、DVD、光磁気ディスクなどのディスク、及び、ROM(read−only memory)、RAM(random access memory)、EPROM(erasable programmable ROM)、EEPROM(electrically erasable programmable ROM)、UVPROM(ultra−violet erasable programmable ROM)、フラッシュメモリ、磁気カード、光カード、及び/又は、電子命令を格納するのに適した媒体などの回路を備えるが、これらに限定されるものではない。
本発明の構成要素は、1以上の、デバイス、ユニット、コンポーネント、システム、マシン、及び/又は、装置の一部又は全てを形成してもよい。デバイスは、サーバ、ワークステーション、ストレージアレイコントローラ、ストレージシステム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、手のひらサイズコンピュータ、個人用デジタル情報端末、携帯用電子デバイス、バッテリー駆動デバイス、セットトップボックス、エンコーダ、エコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、暗号回路、携帯電話、デジタルカメラ、位置及び/又はナビゲーションシステム、医用機器、ヘッドアップディスプレイ、ワイヤレスデバイス、音声記録、音声記憶及び/又は音声再生装置、映像記録、映像記憶及び/又は映像再生装置、ゲーム機、周辺機器、及び/又は、マルチチップモジュールなどでもよいが、これらに限定されるものではない。本発明の構成要素は、特定の適用基準を満たす別のタイプのデバイスにおいて実装されてもよいと当業者に理解されよう。
本発明の内容は、その実施形態を参照しながら具体的に示して説明してきたが、本発明の範囲から逸脱することなく形態及び詳細の様々な変更を行ってもよいと当業者に理解されよう。

Claims (6)

  1. システムであって、
    コマンドインターフェースを介して、コマンドを受け取り、及びレスポンスを送出するように構成された高レベル制御プロセッサと、
    前記システムと1以上の不揮発性メモリデバイスとを接続するように構成された不揮発性メモリデバイスインターフェースと、
    (i)前記高レベル制御プロセッサと(ii)前記不揮発性メモリデバイスインターフェースとに接続され、コントロールストアを有する低レベルマイクロシーケンサ
    を備え、
    前記不揮発性メモリデバイスインターフェースは、複数のデータ入出力ピンと複数の制御入出力ピンとを備え、
    前記コントロールストアは、前記低レベルマイクロシーケンサによって読み取り可能であり、及び、前記高レベル制御プロセッサによって書き込み可能であり、
    前記コマンドのうちの特定のコマンドを受け取ると、
    前記高レベル制御プロセッサは、前記特定のコマンドに従って、前記コントロールストア内の位置で前記低レベルマイクロシーケンサに実行を開始させることができ、
    前記低レベルマイクロシーケンサは、前記制御入出力ピン及び前記データ入出力ピンの状態を変更して、前記不揮発性メモリデバイスインターフェースに接続された前記1以上の不揮発性メモリデバイスのプロトコルに従って、前記特定のコマンドを実行することができ、
    前記コントロールストアは、前記1以上の不揮発性メモリデバイスに関連付けられている1以上のプロトコルを実行するように前記高レベル制御プロセッサによってプログラムされることからなり、
    前記高レベル制御プロセッサは、さらに、
    まず、前記コントロールストアが複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するように、前記高レベル制御プロセッサが前記コントロールストアをプログラムすることができるように構成され、及び、
    その後、前記コントロールストアが前記1以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するように、前記高レベル制御プロセッサが前記コントロールストアをプログラムすることができるように構成されることからなる、システム。
  2. 前記低レベルマイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続された出力データインターフェースであって、出力データバッファを有する出力データインターフェースと、
    前記低レベルマイクロシーケンサを介して前記不揮発性メモリデバイスインターフェースに接続された入力データインターフェースであって、入力データバッファを有する入力データインターフェース
    をさらに備え、
    前記出力データバッファは、前記不揮発性メモリデバイスインターフェースに送られるデータを受け取ることができ、
    前記入力データバッファは、前記不揮発性メモリデバイスインターフェースから受け取ったデータを受け取ることができることからなる、請求項1に記載のシステム。
  3. 前記低レベルマイクロシーケンサは、さらに、(i)前記入力データバッファの全体状態を検出し、及び、(ii)前記全体状態の検出に応じて、前記コントロールストア内の所定の位置にジャンプすることができる、請求項に記載のシステム。
  4. 前記システムは、ソリッドステートドライブ(SSD)装置の一部である、請求項1〜のいずれかに記載のシステム。
  5. 前記システムは、1以上の集積回路として実施される、請求項1〜のいずれかに記載のシステム。
  6. 不揮発性メモリチャネルを制御する方法であって、
    高レベル制御プロセッサに接続されたコマンドインターフェースを介して、コマンドを受け取り、及びレスポンスを送出するステップと、
    前記高レベル制御プロセッサに接続された低レベルマイクロシーケンサを用いて、コントロールストア内の位置で命令の実行を開始するステップ
    を含み、
    前記位置は、受け取った前記コマンドのうちの特定のコマンドにしたがって、前記高レベル制御プロセッサにより決定され、
    前記低レベルマイクロシーケンサは、不揮発性メモリデバイスインターフェースの制御入出力ピン及びデータ入出力ピンの状態を変更して、前記不揮発性メモリデバイスインターフェースによって前記低レベルマイクロシーケンサに接続された1以上の不揮発性メモリデバイスのプロトコルに従って、前記特定のコマンドを実行し、
    前記方法はさらに、前記高レベル制御プロセッサを用いて、前記不揮発性メモリデバイスインターフェースに取付けられた前記1以上の不揮発性メモリデバイスに関連付けられている1以上のプロトコルを実行するように前記コントロールストアをプログラムするステップを含むことからなり、
    まず、前記コントロールストアが複数のタイプの不揮発性メモリデバイスと互換性のある低速プロトコルを実行するように、前記高レベル制御プロセッサが前記コントロールストアをプログラムできるようにするステップと、
    その後、前記コントロールストアが前記1以上の不揮発性メモリデバイスと互換性のあるより高速なプロトコルを実行するように、前記高レベル制御プロセッサが前記コントロールストアをプログラムできるようにするステップ
    をさらに含む、方法。
JP2014023971A 2013-02-15 2014-02-12 不揮発性メモリのチャネル制御用システム及びその制御方法 Expired - Fee Related JP6577166B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/768,215 US9081666B2 (en) 2013-02-15 2013-02-15 Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer
US13/768,215 2013-02-15

Publications (3)

Publication Number Publication Date
JP2014157603A JP2014157603A (ja) 2014-08-28
JP2014157603A5 JP2014157603A5 (ja) 2017-03-16
JP6577166B2 true JP6577166B2 (ja) 2019-09-18

Family

ID=50097556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014023971A Expired - Fee Related JP6577166B2 (ja) 2013-02-15 2014-02-12 不揮発性メモリのチャネル制御用システム及びその制御方法

Country Status (6)

Country Link
US (2) US9081666B2 (ja)
EP (1) EP2767899A3 (ja)
JP (1) JP6577166B2 (ja)
KR (1) KR102170644B1 (ja)
CN (2) CN103995686B (ja)
TW (1) TWI633433B (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102081588B1 (ko) * 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
CN106796544A (zh) * 2014-10-03 2017-05-31 新加坡科技研究局 主动存储单元和阵列
US20160179388A1 (en) * 2014-12-18 2016-06-23 CNEXLABS, Inc. Method and apparatus for providing programmable nvm interface using sequencers
US20170046102A1 (en) * 2015-08-14 2017-02-16 Marvell World Trade Ltd. Flexible interface for nand flash memory
US10175902B2 (en) * 2016-06-27 2019-01-08 Micron Technology, Inc.. Managing host communication with a regulator in a low power mode
US10929314B2 (en) * 2016-07-29 2021-02-23 Razer (Asia-Pacific) Pte. Ltd. Interface devices, methods for controlling an interface device, and computer-readable media
CN108139993B (zh) * 2016-08-29 2020-06-16 华为技术有限公司 内存装置、内存控制器、数据缓存装置及计算机***
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10628049B2 (en) 2017-07-12 2020-04-21 Sandisk Technologies Llc Systems and methods for on-die control of memory command, timing, and/or control signals
JP2020046918A (ja) 2018-09-19 2020-03-26 キオクシア株式会社 記憶装置及び制御方法
WO2020223849A1 (en) 2019-05-05 2020-11-12 Yangtze Memory Technologies Co., Ltd. Memory control system with a sequence processing unit
EP3751572B1 (en) * 2019-06-13 2021-12-01 Melexis Technologies NV Memory device
KR102678472B1 (ko) 2019-07-17 2024-06-27 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
US11249674B2 (en) * 2020-06-03 2022-02-15 Innogrit Technologies Co., Ltd. Electrical mirroring by NAND flash controller
DE102020207616A1 (de) * 2020-06-19 2021-12-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Betreiben einer Recheneinheit
US11893244B2 (en) * 2021-10-12 2024-02-06 Western Digital Technologies, Inc. Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks
US11755208B2 (en) 2021-10-12 2023-09-12 Western Digital Technologies, Inc. Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks
CN118284883A (zh) * 2021-11-22 2024-07-02 拉姆伯斯公司 使用缓冲器结构和信令记录动态随机存取存储器(dram)的突发错误信息

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994009436A1 (en) 1992-10-13 1994-04-28 Compaq Computer Corporation Disk array controller having advanced internal bus protocol
US5448709A (en) 1992-10-13 1995-09-05 Compaq Computer Corporation Disk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
US5918242A (en) * 1994-03-14 1999-06-29 International Business Machines Corporation General-purpose customizable memory controller
US5721860A (en) * 1994-05-24 1998-02-24 Intel Corporation Memory controller for independently supporting synchronous and asynchronous DRAM memories
US6505282B1 (en) * 1994-11-30 2003-01-07 Intel Corporation Method and apparatus for determining memory types of a multi-type memory subsystem where memory of the different types are accessed using column control signals with different timing characteristics
US5719880A (en) * 1996-09-20 1998-02-17 Texas Instruments Incorporated, A Delaware Corporation On-chip operation for memories
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
JP2002007200A (ja) * 2000-06-16 2002-01-11 Nec Corp メモリ制御装置及び動作切替方法並びにインターフェース装置、半導体集積チップ、記録媒体
DE10031223A1 (de) * 2000-06-27 2002-01-10 Philips Corp Intellectual Pty Mikrocontroller
JP4722305B2 (ja) * 2001-02-27 2011-07-13 富士通セミコンダクター株式会社 メモリシステム
JP2003131940A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd メモリコントローラ装置
JP3756818B2 (ja) * 2002-01-09 2006-03-15 株式会社メガチップス メモリ制御回路および制御システム
US20040054864A1 (en) * 2002-09-13 2004-03-18 Jameson Neil Andrew Memory controller
US7277995B2 (en) * 2003-10-29 2007-10-02 Dot Hill Systems Corporation Storage controller and method for performing host access control in the host interface adapter
JP4357331B2 (ja) * 2004-03-24 2009-11-04 東芝メモリシステムズ株式会社 マイクロプロセッサブートアップ制御装置、及び情報処理システム
US7308526B2 (en) * 2004-06-02 2007-12-11 Intel Corporation Memory controller module having independent memory controllers for different memory types
GB2421092B (en) * 2004-12-07 2008-12-03 Hewlett Packard Development Co Bufferless writing of data to memory
US7680967B2 (en) 2005-01-27 2010-03-16 Innovasic, Inc. Configurable application specific standard product with configurable I/O
US7406550B2 (en) * 2005-01-27 2008-07-29 Innovasic, Inc Deterministic microcontroller with configurable input/output interface
US7526579B2 (en) 2005-01-27 2009-04-28 Innovasic, Inc. Configurable input/output interface for an application specific product
US7673190B1 (en) * 2005-09-14 2010-03-02 Unisys Corporation System and method for detecting and recovering from errors in an instruction stream of an electronic data processing system
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7574611B2 (en) * 2005-11-28 2009-08-11 Atmel Corporation Command decoder for microcontroller based flash memory digital controller system
TW200743957A (en) * 2006-05-16 2007-12-01 Ite Tech Inc Control device and control method for memory
US8751755B2 (en) 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
US7808807B2 (en) 2008-02-26 2010-10-05 Ovonyx, Inc. Method and apparatus for accessing a multi-mode programmable resistance memory
CN102047229A (zh) * 2008-05-29 2011-05-04 先进微装置公司 用于存储装置训练的嵌入式可编程元件
US8321647B2 (en) * 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8266369B2 (en) * 2009-12-18 2012-09-11 Nxp B.V. Flash memory interface
EP2539823B1 (en) * 2010-02-23 2016-04-13 Rambus Inc. Time multiplexing at different rates to access different memory types
US9529712B2 (en) * 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9348774B2 (en) * 2013-01-25 2016-05-24 Seagate Technology Llc Controller-opaque communication with non-volatile memory devices

Also Published As

Publication number Publication date
TW201502775A (zh) 2015-01-16
JP2014157603A (ja) 2014-08-28
CN103995686B (zh) 2019-06-28
KR102170644B1 (ko) 2020-10-27
US20140237162A1 (en) 2014-08-21
EP2767899A2 (en) 2014-08-20
TWI633433B (zh) 2018-08-21
US20150268870A1 (en) 2015-09-24
US9081666B2 (en) 2015-07-14
CN110134442A (zh) 2019-08-16
EP2767899A3 (en) 2016-08-17
KR20140103048A (ko) 2014-08-25
CN103995686A (zh) 2014-08-20
US9262084B2 (en) 2016-02-16

Similar Documents

Publication Publication Date Title
JP6577166B2 (ja) 不揮発性メモリのチャネル制御用システム及びその制御方法
CN108351813B (zh) 用于在非易失性存储器快速(NVMe)控制器的不同网络地址上使能个别的NVMe输入/输出(IO)队列的方法和装置
US8935574B2 (en) Correlating traces in a computing system
US8825922B2 (en) Arrangement for processing trace data information, integrated circuits and a method for processing trace data information
US8607202B2 (en) Real-time profiling in a multi-core architecture
TW201303594A (zh) 快閃記憶體介質控制器及裝置
WO2007062259A2 (en) Command decoder for microcontroller based flash memory digital controller system
US11704023B2 (en) Extensible storage system and method
KR102395541B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US10049073B2 (en) Interface emulator using FIFOs
US20130111102A1 (en) Semiconductor memory devices
US8918680B2 (en) Trace queue for peripheral component
WO2021113778A1 (en) Data transfers between a memory and a distributed compute array
EP1396786A1 (en) Bridge circuit for use in retiming in a semiconductor integrated circuit
JP2014174849A (ja) 半導体記憶装置
US20190095316A1 (en) Techniques to provide debug trace information to a management host
US10180847B2 (en) Circuitry for configuring entities

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180419

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190201

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20190527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190822

R150 Certificate of patent or registration of utility model

Ref document number: 6577166

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees