JP6163532B2 - メモリシステムコントローラを含む装置 - Google Patents

メモリシステムコントローラを含む装置 Download PDF

Info

Publication number
JP6163532B2
JP6163532B2 JP2015231866A JP2015231866A JP6163532B2 JP 6163532 B2 JP6163532 B2 JP 6163532B2 JP 2015231866 A JP2015231866 A JP 2015231866A JP 2015231866 A JP2015231866 A JP 2015231866A JP 6163532 B2 JP6163532 B2 JP 6163532B2
Authority
JP
Japan
Prior art keywords
memory
logical unit
host
command
logical
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.)
Active
Application number
JP2015231866A
Other languages
English (en)
Other versions
JP2016053983A (ja
Inventor
エー. ラーソン,ダグラス
エー. ラーソン,ダグラス
アール. ブラウン,ジェフリー
アール. ブラウン,ジェフリー
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
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 マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2016053983A publication Critical patent/JP2016053983A/ja
Application granted granted Critical
Publication of JP6163532B2 publication Critical patent/JP6163532B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

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

Description

本開示は、一般的に、半導体メモリデバイス、システム、およびコントローラ等の装置に関し、より具体的には、例えば、メモリシステムコントローラに関する。
メモリデバイスは、典型的に、コンピュータまたは他の電子デバイスの中に、内部半導体集積回路として提供される。揮発性および不揮発性メモリを含む、多くの異なる種類のメモリがある。揮発性メモリは、その情報、例えばデータを維持するために電力を必要とする可能性があり、数ある中でも、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、およびスタティックランダムアクセスメモリ(SRAM)が挙げられる。不揮発性メモリは、給電されていないときに、記憶された情報を保持することによって持続的な情報を提供することができ、数ある中でも、NAND型フラッシュメモリ、NOR型フラッシュメモリ、リードオンリーメモリ(ROM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、相変化ランダムアクセスメモリ(PCRAM)が挙げられる。
メモリデバイスは、互いに組み合わせて、ソリッドステートドライブ(SSD)を形成することができる。ソリッドステートドライブとしては、数ある他の種類の不揮発性および揮発性メモリの中でも、不揮発性メモリ、例えばNAND型フラッシュメモリおよびNOR型フラッシュメモリが挙げられ、および/または揮発性メモリ、例えばDRAMおよびSRAMが挙げられる。窒化物層の電荷トラップに情報を記憶する、半導体−酸化物−窒化物−酸化物−半導体および金属−酸化物−窒化物−酸化物−半導体コンデンサ構造を使用した、フローティングゲートフラッシュデバイスおよび電荷トラップフラッシュ(CTF)デバイスを含む、フラッシュメモリデバイスは、広範囲にわたる電子的用途のための不揮発性メモリとして利用され得る。フラッシュメモリデバイスは、典型的に、高メモリ密度、高信頼性、および低消費電力を可能にする、1トランジスタメモリセルを使用する。
ソリッドステートドライブは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費に関してハードドライブに勝る利点を有することができるので、SSDは、コンピュータシステムの主記憶デバイスとして、ハードディスクドライブと置き換えるために使用することができる。例えば、SSDは、可動部品がないため、磁気ディスクドライブと比較して、優れた性能を有することができ、磁気ディスクドライブと関連するシーク時間、待ち時間、および他の電気機械的な遅延を回避し得る。SSDの製造業者は、内部バッテリ供給を使用しなくてもよく、したがって、ドライブをより多用途かつコンパクトにすることが可能である、フラッシュSSDを作成するために、不揮発性フラッシュメモリを使用することができる。
SSDは、1以上のメモリデバイス、例えば、1以上のメモリチップを含むことができる(本明細書で使用される「1以上の」ものとは、そのようなものの1つ以上を指すことができ、例えば、1以上のメモリデバイスは、1つ以上のメモリデバイスを指すことができる)。当業者が認識するように、メモリチップは、1以上のダイおよび/または論理ユニット(LUN)を含むことができ、例えば、LUNは、1以上のダイとすることができる。各ダイは、その上に1以上のメモリアレイおよび周辺回路を含むことができる。メモリアレイは、1以上の物理ページに組織される1以上のメモリセルを含むことができ、物理ページは、1以上のブロックに組織することができる。フラッシュメモリセルのアレイは、1度に1ページをプログラムすること、および1度に1ブロックを消去することができる。SSDコントローラは、メモリの管理および割り当てを行うために、組み込みプロセッサを使用し得る。
なお、従来のメモリコントローラの一例が、特許文献1及び2に記載されている。
国際公開第2009/064793号 米国特許出願公開第2011/0082963号明細書
本発明の装置は、複数の第1の論理ユニットと、前記複数の第1の論理ユニットにそれぞれ対応して設けられた複数の第1の論理ユニットコマンドキューと、前記複数の第1の論理ユニットに対する複数のコマンドを第1の順序で受け、前記複数のコマンドのそれぞれを前記第1の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第1の順序とは異なる第2の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第1の論理ユニット要求キューと、を備えることを特徴とする。
本開示の1以上の実施形態に従う、少なくとも1つのメモリシステムを含むコンピュータシステムの機能ブロック図である。 本開示の1以上の実施形態に従う、メモリシステムの機能ブロック図である。 本開示の1以上の実施形態に従う、ホストバスアダプタ(HBA)とシリアルアタッチメント(SA)プログラミング準拠デバイスとの間のトランスポート層インターフェースの機能ブロック図である。 本開示の1以上の実施形態に従う、HBAおよびSAプログラミング準拠デバイスの機能ブロック図である。 本開示の1以上の実施形態に従う、ブロック管理デバイスの機能ブロック図である。
本開示は、メモリシステムコントローラを含む。メモリシステムコントローラは、スイッチと、スイッチに連結される不揮発性メモリ制御回路とを含むことができる。不揮発性メモリ制御回路は、論理ユニットに連結されるチャネル制御回路を含むことができる。チャネル制御回路は、消去コマンドを複数の論理ユニットのうちの第1の論理ユニットに中継し、消去コマンドが複数の論理ユニットのうちの第1の論理ユニットで実行されている間に、特定のコマンドをスイッチから複数の論理ユニットのうちの第2の論理ユニットに中継するように構成される。
本開示の以下の発明を実施するための形態では、本明細書の一部を形成し、本開示の1以上の実施形態がどのように実践される場合があるかをその中で例として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用されてもよいこと、および本開示の範囲を逸脱することなく、プロセス、電気的、および/または構造的変更が行われてもよいことが理解される。本明細書に使用される場合、指示子「N」は、特に図面の参照番号に関して、そのように指定されるいくつかの特定の特徴を、本開示の1以上の実施形態とともに含むことができることを示す。
本明細書中の図面は、上位の桁は、図面の図番号に対応し、残りの桁は、図面の中の要素または構成要素を識別するという、番号規則に従う。異なる図面間の同様な要素または構成要素は、同様な数字の使用によって識別される場合がある。例えば、108は、図1の要素「08」を参照し得、同様な要素は、図2の208のように参照され得る。理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、および/または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対尺度は、本発明の実施形態を図示することを意図しており、限定の意味で解釈されてはならない。
図1は、本開示の1以上の実施形態に従う、少なくとも1つのメモリシステム104を含む、コンピュータシステム100の機能ブロック図である。図1で示される実施形態において、メモリシステム104、例えばソリッドステートドライブ(SSD)は、物理ホストインターフェース106と、メモリシステムコントローラ108、例えばSSDコントローラと、1以上のソリッドステートメモリデバイス110−1、・・・、110−Nとを含むことができる。ソリッドステートメモリデバイス110−1、・・・、110−Nは、メモリシステムのための記憶ボリュームを提供することができる。1以上の実施形態において、ソリッドステートメモリシステムコントローラ108は、特定用途向け集積回路(ASIC)とすることができ、ここで、コントローラ108は、例えばASICの形態で、物理インターフェース106およびソリッドステートメモリデバイス110−1、・・・、110−Nを含むプリント回路基板に連結される。
図1で図示されるように、メモリシステムコントローラ108、例えばソリッドステートメモリシステムコントローラは、物理ホストインターフェース106およびソリッドステートメモリデバイス110−1、・・・、110−Nに連結することができる。物理ホストインターフェース106は、メモリシステム104とホスト102等の別のデバイスとの間で情報を通信するために使用することができる。ホスト102は、メモリアクセスデバイス、例えばプロセッサを含むことができる。当業者は、「プロセッサ」が、並列処理システム、1以上のコプロセッサ等の1以上のプロセッサを意図し得ることを理解するであろう。ホストの例としては、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル録音および再生デバイス、携帯電話、PDA、メモリカードリーダ、インターフェースハブ等が挙げられる。1以上の実施形態について、物理ホストインターフェース106は、標準物理インターフェースの形態とすることができる。例えば、メモリシステム104がコンピュータシステム100の中で情報記憶に使用されるときに、物理ホストインターフェース106は、数あるインターフェースの中でも、シリアルアドバンストテクノロジーアタッチメント(SATA)物理インターフェース、周辺機器相互接続エクスプレス(PCIe)物理インターフェース、小型コンピュータシステムインターフェース(SCSI)インターフェース、シリアルアタッチメントSCSI(SAS)インターフェース、またはユニバーサルシリアルバス(USB)物理インターフェースとすることができる。しかしながら、一般に、物理ホストインターフェース106は、メモリシステム104と、物理ホストインターフェース106のための互換レセプタを有するホスト102との間で、制御、アドレス、情報、例えばデータ、および他の信号を伝達するためのインターフェースを提供することができる。
ソリッドステートメモリシステムコントローラ108は、数ある操作の中でも、ソリッドステートメモリデバイス110−1、・・・、110−Nと通信して、情報を読み出すこと、書き込むこと、および消去することができる。ソリッドステートメモリシステムコントローラ108は、ファームウェアおよび/または1以上の集積回路または離散した構成要素であり得る回路を有することができる。1以上の実施形態について、ソリッドステートメモリシステムコントローラ108の中の回路は、ソリッドステートメモリデバイス110−1、・・・、110−Nにわたってアクセスを制御するための制御回路と、ホスト102とメモリシステム104との間の変換層を提供するための回路とを含み得る。したがって、メモリコントローラは、ソリッドステートメモリデバイス110−1、・・・、110−NのI/O接続部(図1では示さず)を選択的に連結して、適切な時間に適切なI/O接続で適切な信号を受け取ることができる。同様に、ホスト102とメモリシステム104との間の通信プロトコルは、ソリッドステートメモリデバイス110−1、・・・、110−Nのアクセスに必要とされるものと異なり得る。ソリッドステートメモリシステムコントローラ108は、次いで、ソリッドステートメモリデバイス110−1、・・・、110−Nへの所望のアクセスを達成するために、ホスト102から受け取ったコマンドを適切なコマンドに変換することができる。
ソリッドステートメモリデバイス110−1、・・・、110−Nは、メモリセル、例えば不揮発性メモリセルの1以上のアレイを含むことができる。アレイは、例えば、NAND構造を伴うフラッシュアレイとすることができる。NAND構造では、「行」のメモリセルの制御ゲートをアクセス線、例えばワード線と連結することができる一方で、メモリセルは、セレクトゲートソーストランジスタとセレクトゲートドレイントランジスタとの間の「ストリング」内で、ソースとドレインとを直列に連結することができる。ストリングは、セレクトゲートドレイントランジスタによって、データ線、例えばビット線に接続することができる。「行」および「ストリング」という用語の使用は、メモリセルの線形配設も直交配設も意味するものではない。当業者には明らかなように、ビット線およびソース線に対するメモリセルの接続の手法は、アレイがNAND構造であるか、NOR構造であるか、またはいくつかの他のメモリアレイ構造であるかどうかに依存する。
ソリッドステートメモリデバイス110−1、・・・、110−Nは、グループ化することができる、1以上のメモリセルを含むことができる。本明細書で使用される場合、グループは、ページ、ブロック、プレーン、ダイ、アレイ全体、またはメモリセルの他のグループ等の、1以上のメモリセルを含むことができる。例えば、いくつかのメモリアレイは、メモリセルのブロックを形成する、1以上のメモリセルのページを含むことができる。1以上のブロックは、メモリセルのプレーンに含めることができる。1以上のメモリセルのプレーンは、1つのダイに含めることができる。一例として、128GBのメモリデバイスは、1ページあたり4320バイトの情報、1ブロックあたり128ページ、1プレーンあたり2048ブロック、および1デバイスあたり16プレーンを含むことができる。
メモリシステム104は、ソリッドステートメモリデバイス110−1、・・・、110−Nのウェアレートを制御するために、ウェアレベリング、例えばガーベージコレクションおよび/または再利用を実装することができる。ソリッドステートメモリアレイは、1以上のプログラムおよび/または消去サイクルの後に、誤り、例えば失敗を経験する可能性がある。ウェアレベリングは、アレイ全体を通じてより均一にサイクルを展開することによって、特定のグループに行われるプログラムおよび/または消去サイクルの数を低減させることができる。ウェアレベリングは、ブロックを再利用するために移動させる有効なブロックの量を最小化するために、動的ウェアレベリングを含むことができる。動的ウェアレベリングは、ガーベージコレクションと呼ばれる手法を含むことができる。ガーベージコレクションは、例えば「貪欲アルゴリズム」によって、最も無効なページを有するブロックを再利用すること、例えば消去して書き込むために利用できるようにすることを含むことができる。あるいは、ガーベージコレクションは、閾値量を超える無効なページを伴うブロックを再利用することを含むことができる。書き込み操作のための十分なフリーブロックが存在する場合は、ガーベージコレクション操作が起こり得ない。無効なページは、例えば、異なるページに更新された情報のページであり得る。静的ウェアレベリングは、ブロックの寿命を延ばすために、高い消去回数を有するブロックに静的情報を書き込むことを含む。
書き込み増幅は、情報をソリッドステートメモリデバイス110−1、・・・、110−Nに書き込むときに起こり得るプロセスである。情報がメモリアレイの中にランダムに書き込まれるときに、ソリッドステートメモリシステムコントローラ108は、アレイの中の利用可能空間をスキャンする。メモリアレイの中の利用可能空間は、情報を記憶していないおよび/または消去された、メモリセルの個々のセル、ページ、および/またはブロックであり得る。選択された場所に情報を書き込むのに十分な利用可能空間がある場合、情報は、メモリアレイの選択された場所に書き込まれる。選択された場所に十分な利用可能空間がない場合、メモリアレイの中の情報は、選択された場所に既に存在する情報を読み出し、コピーし、移動させ、または別様には再書き込み、および消去することによって、新しい場所に再配置され、選択された場所に書き込まれる新しい情報のための利用可能空間を残す。メモリアレイの中の旧情報を再配置することは、メモリデバイスによって行われる書き込みの量が、選択された場所に十分な利用可能空間があった場合に起こる書き込みの量を超えて増幅されるので、書き込み増幅と呼ばれる。
図1で示されるコンピュータシステム100は、図示されるものの他に、付加的な回路を含むことができる。図1で示されるコンピュータシステム100の詳細は、本開示の実施形態を不明確にしないために削減されている。例えば、メモリシステム104は、I/O回路を通したI/O接続を通じて提供されるアドレス信号をラッチするための、アドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリデバイス110−1、・・・、110−Nにアクセスするために、行デコーダおよび列デコーダによって受け取って、復号化することができる。当業者には、アドレス入力接続部の数が、ソリッドステートメモリデバイス110−1、・・・、110−Nの密度および構造に依存し得ることが理解されるであろう。
図2は、本開示の1以上の実施形態に従う、メモリシステム204の機能ブロック図である。メモリシステム204は、ソリッドステートメモリシステムコントローラ208を含むことができる。ソリッドステートメモリシステムコントローラ208は、1以上のソリッドステートメモリデバイス、例えば図1で示されるソリッドステートメモリデバイス110−1、・・・、110−Nに連結することができる。図2で示される実施例において、1以上のメモリデバイスは、1以上の論理ユニット(LUN)250を含む不揮発性メモリを含み、コントローラ208は、揮発性メモリ212を含む。LUN250は、独立に制御可能であり得る不揮発性メモリの一部分とすることができる。メモリシステム204およびソリッドステートメモリシステムコントローラ208は、それぞれ、図1で示されるメモリシステム104およびソリッドステートメモリシステムコントローラ108に類似し得る。
ソリッドステートメモリシステムコントローラ208は、物理ホストインターフェース206を介して、ホスト、例えば図1で示されるホスト102とのインターフェースをとるための、ホストインターフェース(I/F)回路214を含むことができる。ソリッドステートメモリシステムコントローラ208は、ホスト−メモリ変換回路216、メモリ管理回路218、スイッチ220、不揮発性メモリ制御回路222、および/または揮発性メモリ制御回路224を含むことができる。本明細書で説明されるように、ソリッドステートメモリシステムコントローラ208は、ASICの形態で提供することができるが、実施形態は、そのように限定されない。
ホストI/F回路214は、ホスト−メモリ変換回路216に連結することができる。ホストI/F回路214は、物理インターフェース206等の、ホストに対する物理インターフェースに連結する、および/またはそれに組み込むことができる。ホストI/F回路214は、ホスト、例えば図1のホスト102とインターフェースをとることができる。ホストI/F回路214は、物理層、リンク層、およびトランスポート層またはトランザクション層インターフェースを提供する、周辺機器相互接続エクスプレス(PCIe)回路230を含むことができ、例えば、ここで、例えばホストは、PCIe規格に従って情報を伝送するように構成される。シリアルアドバンストテクノロジーアタッチメント(SATA)規格および/またはシリアルアタッチメントSCSI(SAS)規格に従うトランスポート層は、PCIe規格に従うトランザクション層に類似し得る。PCIe回路230は、ホストバスアダプタ(HBA)234、例えばアドバンストホストコントローラインターフェース(AHCI)互換のHBAに連結することができる。HBA234は、SA準拠デバイス236に連結することができ、これは、ホスト−メモリ変換回路216に連結することができる。
一般に、ホストI/F回路214は、ホストから、例えばPCIeバスから受け取ったコマンドパケットを、ホスト−メモリ変換回路216に対するコマンド命令に変換する役割を果たし、また、ホスト−メモリの変換応答を要求ホストに伝送するためのホストコマンドに変換する役割を果たす。例えば、ホストI/F回路214は、PCIeに基づくトランザクション層パケットから、SAコマンドパケットを構築することができる。HBA234およびSA準拠デバイス236は、下で図3A−3Bに関してさらに詳細に説明される。
ホスト−メモリ変換回路216は、ホストI/F回路214、メモリ管理回路218、および/またはスイッチ220に連結することができる。ホスト−メモリ変換回路216は、ホストアドレスを、メモリアドレス、例えば読み出しおよび/または書き込みコマンド等の受け取ったコマンドと関連付けられるアドレスに変換するように構成することができる。例えば、そのような変換は、SATA−メモリ回路238によって行われ得る。「SATA−メモリ」回路238として識別されているが、該回路は、本明細書で説明されるように、SAS等の他のシリアルアタッチメント用に設定することができる。ホスト−メモリ変換回路216は、例えば、ホストセクタの読み出しおよび書き込み操作を、特定のLUN250に向けられるコマンドに変換し得る。ホスト−メモリ変換回路216は、RAID排他的論理和(XOR)回路226等の、誤り検出/修正回路を含むことができる。RAIDのXOR回路226は、ホストI/F回路214から受け取った情報に基づいて、パリティ情報を計算することができる。
メモリ管理回路218は、ホスト−メモリ変換回路216およびスイッチ220に連結することができる。メモリ管理回路218は、初期化、ウェアレベリング、例えばガーベージコレクションおよび/または再利用、ならびに/または誤り検出/修正が挙げられるが、それらに限定されない、1以上のメモリ操作を制御することができる。メモリ管理回路218は、プロセッサ228を含むことができるが、本開示の1以上の実施形態は、プロセッサ228によって、命令、例えばソフトウェアおよび/またはファームウェアの実行に依存することなく、回路、例えばハードウェアにおけるメモリ操作の制御を提供する。そのような実施形態は、メモリ操作を制御するためにプロセッサにより大きく依存するいくつかの以前の手法と比較して、より高速なメモリ操作を提供することができる。メモリ管理回路218は、ブロック管理回路240を含むことができるが、これは、図4に関してさらに詳細に説明される。
スイッチ220は、ホスト−メモリ変換回路216、メモリ管理回路218、不揮発性メモリ制御回路222、および/または揮発性メモリ制御回路224に連結することができる。スイッチ220は、クロスバースイッチとすることができ、1以上のバッファを含む、および/またはそれに連結することができる。例えば、スイッチ220は、内部スタティックランダムアクセスメモリ(SRAM)バッファ(ISB)225を含むことができる。スイッチは、揮発性メモリ212に含まれる複数のダイナミックランダムアクセスメモリ(DRAM)バッファ227に連結することができる。スイッチは、バッファ割り当て管理(BAM)回路221を含むことができるが、これは、バッファタグプール223を含むことができる。スイッチ220は、ソリッドステートメモリシステムコントローラ208の種々の構成要素間のインターフェースを提供することができる。スイッチ220は、構成要素間に一貫したアクセスおよび実装を提供するために、ソリッドステートメモリシステムコントローラ208の異なる構成要素と関連付けられ得る、定義済みのシグナリングプロトコルの変動を補償することができる。1以上の実施形態において、スイッチ220は、ダイレクトメモリアクセス(DMA)モジュールとすることができる。
BAM回路221の中のバッファタグプール223の中の複数のタグは、それぞれが複数のDRAMバッファ227または複数のISB225のそれぞれ1つを識別することができる。特定のタグがDRAMバッファ227を指すときに、揮発性メモリ212のアドレスに記入するために、プログラム可能な「BAR」アドレスをバッファタグに添付することができる。BAM回路221は、1以上のハードウェアマスタのうちの1つからの割り当て要求に応じて、タグを1以上のハードウェアマスタのうちの1つに割り当てるように構成することができる。ハードウェアマスタは、メモリにアクセスすることができる、ハードウェア構成要素を含むことができる。
BAM回路221は、複数のDRAMバッファ227のうちの1つを識別するタグよりも、複数のISB225のうちの1つを識別するタグの割り当てを優先させるように構成することができる。ISB225は、DRAMバッファ227よりも高速かつ低電力であり得、したがって、それに好ましい。したがって、BAM回路221は、ISB225を識別する全てのタグが割り当てられた後にだけ、複数のDRAMバッファ227のうちの1つを識別するタグが割り当てられるように、タグの割り当てを優先させるように構成することができる。1以上の実施形態において、ソリッドステートメモリシステムコントローラ208は、合計1024個のバッファについて、768個のDRAMバッファ227および256個のISB225を含むことができる。そのような実施形態において、バッファタグは、1024個のバッファのうちの1つを識別する、10ビットのタグとすることができる。バッファタグは、ハードウェアマスタに対していかなる特定の意味も有し得ないが、正しいバッファが参照されることを可能にするために、コマンド、例えば読み出しおよび/または書き込みコマンドの処理中に、ハードウェアマスタによって伝達される。1以上のハードウェアマスタは、複数のISB225のうちの1つまたは複数のDRAMバッファ227のうちの1つに特有のタグの割り当てを要求することなく、全体的にタグの割り当てを要求するように構成することができる。1以上の実施形態において、DRAMバッファ227およびISB225のそれぞれは、最大のサポートされたメモリページのサイズ、例えば4KBに等しいサイズとすることができる。
BAM回路221は、非機能(機能していない)バッファと関連付けられるタグをバッファプール223から除去するように構成される。プロセッサ228は、BAM回路221にアクセスし、非機能バッファと関連付けられるタグをバッファプール223から除去するように構成することができる。そのような実施形態は、1つ以上のISB225が故障した場合であっても、ソリッドステートメモリシステムコントローラ208が適切に機能するのを補助することができる。いくつかの実施形態において、「不良な」バッファを除去する、例えば「マップアウトする」能力は、製造中にISB225を試験する代わりに使用することができる。1以上のISB225を失うことが、ソリッドステートメモリシステムコントローラ208の操作に著しく影響を及ぼさないように、スイッチ220には、ISB225を「オーバープロビジョニング(多めに搭載)」し得る。
1以上のハードウェアマスタは、読み出しコマンドまたは書き込みコマンドと併せてBAM回路221からのタグの割り当てを要求し、読み出しコマンドまたは書き込みコマンドの完了と併せてBAM回路221からの割り当てられたタグの割り当て解除を要求するように構成することができる。ハードウェアマスタは、複数のコマンドについて同じタグを使用せず、したがって、各コマンドについて新しいタグを要求しない。ハードウェアマスタは、例えば、十分なバッファ、特にISB225が、複数のハードウェアマスタから複数のコマンドが利用可能であることを確実にするのを補助するために、割り当て要求よりも割り当て解除要求を優先させるように構成することができる。
バッファタグの使用は、読み出し操作を容易にすることができる。ハードウェアマスタは、割り当てられたタグとともに、読み出しコマンドを不揮発性メモリ制御回路222に送るように構成することができる。不揮発性メモリ制御回路222は、読み出しコマンドに対応する情報を、割り当てられたタグによって識別されるバッファに記憶し、読み出しコマンドを送った特定のハードウェアマスタに、情報の準備ができていることを通知するように構成することができる。
バッファタグの使用は、書き込み操作を容易にすることができる。ハードウェアマスタは、割り当てられたタグとともに、書き込みコマンドを不揮発性メモリ制御回路222に送り、書き込みコマンドに対応する情報を、割り当てられたタグによって識別されるバッファに記憶するように構成することができる。不揮発性メモリ制御回路222は、割り当てられたタグによって識別されるバッファから情報を取り出し、該情報を不揮発性メモリ、例えば適切なLUN250に書き込み、そして、書き込みコマンドを送ったハードウェアマスタに、情報が書き込まれたことを通知するように構成することができる。
メモリ管理回路218の中のプロセッサ228は、ハードウェアマスタとすることができる。プロセッサ228は、不揮発性メモリ制御回路222と、複数のタグに関係なく揮発性メモリ212の空間全体が利用可能な揮発性メモリ制御回路224との間のダイレクトメモリアクセス(DMA)操作を有効にするように構成することができる。他のハードウェアマスタは、DMA機能を有効にし得ず、したがって、メモリ空間に直接アクセスするのではなく、バッファにアクセスするためのタグに依存し得る。プロセッサ228は、メモリ空間にアクセスするためのバッファの必要性を回避するコマンドパイプラインを通して送られるコマンドと併せて使用されるフィールドの情報を介して、DMA操作を有効にすることができる。例えば、情報「DMA_En BARSEL」は、あるコマンドとともに使用されるフィールドに含めることができ、ここで、「DMA_En」は、DMA操作が有効になっていることを受信機に示し、またここで、「BARSEL」は、本明細書で説明されるように、バッファタグの代わりにDRAMのためにアドレスを含めるべきであることを示す。したがって、プロセッサ228は、他のハードウェアマスタのためのバッファに基づくアクセスと同じ論理を使用して、揮発性メモリ212とLUN250との間で情報を移動させることができる。「DMA_En」は、LUN250にアクセスするときに、チャネル制御回路248によってスイッチ220にエコーすることができる。チャネル制御回路248の観点から、DMAアクセスは、バッファに基づくアクセスと実質的に同一である。「DMA_En」がアサートされる場合、スイッチ220は、揮発性メモリ212に要求を強制することができる。「BARSEL」は、バッファタグがDRAMバッファ227を指すときに、該バッファタグに添付される「BAR」アドレスに類似する一意の「BAR」をスワップするために、スイッチ220によって使用される。例えば、「BAR」アドレスは、4つの場所のうちの1つを指す2ビットのアドレスとすることができるが、実施形態は、そのように限定されない。「BAR」アドレスの使用は、異なる同時のDMAを可能にすることができる。
不揮発性メモリ制御回路222は、スイッチ220に連結することができる。不揮発性メモリ制御回路222は、不揮発性メモリデバイスに連結することができる。図2は、1以上のLUN250を含む、不揮発性メモリデバイスを示す。1以上のLUN250は、1以上のチャネルによって不揮発性メモリ制御回路222に連結することができる。いくつかの実施形態において、1以上のチャネルは、不揮発性メモリ制御回路222によって集合的に制御することができる。1以上の実施形態において、各メモリチャネルは、図2で図示されるように、別々のチャネル制御回路248に連結される。特定のチャネル制御回路248は、単一のチャネルによって2つ以上のLUN250を制御し、それに連結することができる。1以上の実施形態において、チャネル制御回路248は、オープンNANDフラッシュインターフェース(ONFI)準拠のバスによって複数のLUN250に連結することができる。
不揮発性メモリ制御回路222は、チャネル制御回路248によって実行されるのを待機する間にコマンドが存在する、コマンドパイプラインの少なくとも一部分を含む。LUN250に対する要求を開始する全てのハードウェアマスタは、スイッチ220を通して同じコマンドパイプラインを共有することができる。ホストからの読み出しコマンド(ホストが読み出す)について、ホストは、1つ以上のLUN250に記憶される特定の情報を必要とするので、LUN250にアクセスするいかなる制御もない。同様に、ホストトラフィックの量を超えるいかなる制御もない。本明細書で説明されるコマンドパイプラインは、LUN250間でのプログラム時間、読み出し時間、および消去時間の競合を隠す際の柔軟性を提供することができる。例えば、消去時間は、プログラム時間または読み出し時間よりも長くなり得る。各チャネル制御回路248は、複数のチャネルによって複数のLUN250に連結することができる。したがって、特定のLUNについて特定のチャネル制御回路248によって消去コマンドが実行されている間、特定のチャネル制御回路248は、同じチャネル上の異なるLUN250について別のコマンドを実行し得る。
不揮発性メモリ制御回路222は、チャネル制御回路248のそれぞれに連結される、チャネル要求キュー(CRQ)242を含むことができる。各チャネル制御回路248は、複数のLUNコマンドキュー(LCQ)246に連結される、LUN要求キュー(LRQ)244を含むことができる。LRQ244は、深さLのキュー回路とすることができ、ここで、Lは、1つのチャネル制御回路248あたりのLUN250の数に等しい。CRQ242は、深さCのキュー回路とすることができ、ここで、Cは、例えば、x(複数のチャネル制御回路248)に等しく、ここで、xは、正の整数値、例えば4である。例えば、不揮発性メモリ制御回路222は、1チャネルあたり16個のLUNを伴う32個のチャネルと、チャネル間で共有されるコマンド記憶用の最高で128個のエントリを記憶するように構成される、1つの深さ128のCRQ242と、特定のチャネル上のLUN250間で最高で16個のコマンドを記憶するように構成される、1チャネルあたり1つの深さ16のLRQ244と、1チャネルあたり1つの深さ2のLCQ246とを含むことができ、ここで、LCQ246は、先入れ先出し(FIFO)回路である。例えば、深さ2のFIFOは、現在のコマンド、および現在のコマンドに続いて実行される次のコマンドをキューに入れるように構成することができる。そのような実施形態は、1024個のエントリ(512個のLUN×深さ2のLCQ)と、512個のエントリ(1チャネルあたり1つの深さ16のLRQ×32個のチャネル)と、(1つの深さ128のCRQ)との合計(1024+512+128)、すなわち1664個のコマンド記憶エントリを提供する。本明細書で説明されるように、そのようなコマンドパイプライン構造は、524,288個のコマンド記憶エントリ(1チャネルあたり32個のLUN×16個のチャネル×LUN1つあたり深さ1024のFIFO=524,288)と同じ性能を、その何分の一かのサイズで提供することができる。
CRQ242は、スイッチ220からコマンドを受け取り、該コマンドをLRQ244のうちの1つ、例えばコマンドが対象とする特定のLUN250と関連付けられるチャネルと関連付けられるLRQ244に中継するように構成することができる。LRQ244は、特定のLUN250に対する第1の複数のコマンドを、LRQ244によって第1の複数のコマンドが受け取られた順序で、特定のLUN250と関連付けられるLCQ246に中継するように構成することができる。コマンドパイプラインは、同じLUN250に対するコマンドが、ある順序で、例えばLRQ244によってコマンドが受け取られた順序で移動するように構造化される。LRQ244は、特定のLUN250と関連付けられるLCQ246が満杯であることに応じて、特定のLUN250に対するコマンドをキューに入れるように構成することができ、CRQ242は、特定のLRQ244が満杯であることに応じて、特定のLRQ244に対するコマンドをキューに入れるように構成することができる。
LRQ244は、異なるLUN250に対する第2の複数のコマンドを、異なるLUN250の状態に応じた順序で、異なるLUN250と関連付けられるLCQ246に中継するように構成することができる。例えば、異なるLUN250の状態は、レディ/ビジー状態とすることができる。コマンドパイプラインは、異なるLUN250間でコマンドを、異なる順序で、例えば、その時点で何が全体的なメモリ操作に効率的であるかに従って、LRQ244によってコマンドが受け取られた順序とは異なる順序で移動させることができるように構造化される。例えば、LRQ244は、第2のLCQ246に関連付けられる異なるLUN250の状態がビジーであることに応じて、第2の複数のコマンドのうちの第2のコマンドを第2のLCQ246に中継する前に、第2の複数のコマンドのうちの第1のコマンドを第1のLCQ246に中継するように構成することができ、ここで、第2の複数のコマンドのうちの第1のコマンドは、第2の複数のコマンドのうちの第2のコマンドよりも時間的に後に受け取られる。LRQ244は、第2のLCQ246と関連付けられるLUN250の状態がレディであることに応じて、例えば第2の複数のコマンドのうちの第1のコマンドを中継した後で、第2の複数のコマンドのうちの第2のコマンドを第2のLCQ246に中継するように構成することができる。
各チャネルについて別々の不揮発性メモリチャネル制御回路を含む、1以上の実施形態は、各チャネル制御回路248に連結される、別々の誤り検出/修正回路232、例えば誤り訂正コード(ECC)回路、および/または2つ以上のチャネルで使用することができる1以上の誤り検出/訂正回路232を含むことができる。誤り検出/修正回路232は、LUN250に記憶される情報と関連付けられる誤りを検出および/または訂正するために、当業者によって理解されるように、BCH誤り訂正等の誤り訂正を適用するように構成することができる。例えば、誤り検出/修正回路は、1080ビットの符号語を通じて29ビットの誤り訂正を提供することができる。誤り検出/修正回路232は、シングルおよび/またはマルチレベルセル(SLC/MLC)操作のための異なる誤り修正方式を提供するように構成することができる。
揮発性メモリ制御回路224は、スイッチ220、および揮発性メモリ212、例えば1以上の揮発性メモリデバイスに連結することができる。数ある情報の中でも、1以上の揮発性メモリデバイスは、図4に関してさらに詳細に説明するように、LBAテーブルおよび/またはブロックテーブルを記憶することができる。
図3Aは、本開示の1以上の実施形態に従う、ホストバスアダプタ(HBA)334とシリアルアタッチメント(SA)プログラミング準拠デバイス336との間のトランスポート層インターフェースの機能ブロック図である。HBA334は、図2で示されるHBA234に類似し得る。SAプログラミング準拠デバイス336は、図2で示されるSAプログラミング準拠デバイス236に類似し得る。1以上の実施形態において、SAプログラミング準拠デバイス336は、シリアルアドバンストテクノロジー(SATA)プログラミング準拠デバイスとすることができる。1以上の実施形態において、SAプログラミング準拠デバイス336は、シリアルアタッチメントSCSI(SAS)プログラミング準拠デバイスとすることができる。
SAプロトコルは、層を使用して、概念的に定義される。低位から高位への順序で、SATAの場合、これらは、物理層、リンク層、トランスポート層、およびコマンド層を含む。低位から高位への順序で、SASの場合、これらは、物理層、PHY層、リンク層、ポート層、トランスポート層、およびアプリケーション層を含む。コマンド層および/またはアプリケーション層情報は、コマンドをフレーム情報構造(FIS)に分割することによって、トランスポート層上で通信することができる。いくつかの以前の手法によれば、FISは、プリミティブを使用してリンク層上で通信を使用して通信されていた。プリミティブは、符号語を使用して物理層上で通信され、8b10b符号化を使用して、SATAまたはSASケーブル上で伝送されていた。SATAまたはSASケーブル上の通信は、ホストの観点から送信(Tx)および受信(Rx)として参照される2つの差動対のワイヤで構成される。これらのワイヤは、コマンドまたは情報のいずれかを伝送することができ、制御のためにアービトレートされていた。この方式の1つの制限は、通信がケーブル上でアービトレートされると、それが、生じる唯一の通信であるということである。すなわち、SATAまたはSASは、単に所与の時間に単一のFISを伝送することだけしかできない。
HBA334とSAプログラミング準拠デバイス336とのインターフェースが、例えば図2で示されるソリッドステートメモリシステムコントローラ208の場合のように、完全にコントローラ内にある場合、情報の流れは、ケーブル接続されたSA物理層の制約から解放される。本開示の1以上の実施形態は、コマンド層352およびトランスポート層354によってサポートされるFISおよびコマンドの使用量を維持しながら、物理層およびリンク層の使用を放棄する。並行処理は、4組の入力/出力、例えば、コマンド(Cmd)、応答(Rsp)、書き込みデータ(WrData)、および読み出しデータ(RdData)として、物理通信を定義することによって達成することができる。したがって、特定機能相互接続を利用することによって、コマンドと、応答と、情報送達との間には、競合がもはや存在しない。それらは、パイプライン化され、並行して操作することができる。すなわち、特定機能相互接続は、HBA334と、SAプログラミング準拠デバイス336との間で、コマンド、応答、および情報を同時に転送するように構成することができる。特定機能相互接続は、SAプログラミング準拠デバイス336上のCmd入力に連結されるHBA334上のCmd出力、HBA334上のRsp入力に連結されるSAプログラミング準拠デバイス336上のRsp出力、SAプログラミング準拠デバイス336上のWrData入力に連結されるHBA334上のWrData出力、およびHBA334上のRdData入力に連結されるSAプログラミング準拠デバイス336上のRdData出力を含むことができる。1以上の実施形態において、Cmd、Rsp、WrData、およびRdDataの入力/出力対のそれぞれは、一方向性とすることができ、8b10b符号化もプリミティブも利用しない。
特定機能相互接続は、数ある中でも、第1のコマンドプロトコル、例えば、ネイティブコマンドキューイング(NCQ)および/またはタグ付きコマンドキューイング(TCQ)に応じて、コマンドインターフェース(HBA334上のCmd出力およびSAプログラミング準拠デバイス336上のCmd入力)、応答インターフェース(HBA334上のRsp入力およびSAプログラミング準拠デバイス336上のRsp出力)、および情報インターフェース(HBA334上のWrData出力およびSAプログラミング準拠デバイス336上のWrData入力、ならびに/またはHBA334上のRdData入力およびSAプログラミング準拠デバイス336上のRdData出力)を並行して操作するように構成することができる。特定機能相互接続は、数ある中でも、第2のコマンドプロトコル、例えばNonData、プログラム式入力/出力(PIO)、および/または直接メモリアクセス(DMA)に応じて、コマンドインターフェース、応答インターフェース、および情報インターフェースをアトミックに操作するように構成することができる。
コマンドインターフェースは、ホスト−デバイス(HD)FISをHBA334からSAプログラミング準拠デバイス336に送達するために使用することができる。HBA334上のWrData出力は、情報をSAプログラミング準拠デバイス336上のWrData入力に送達するために使用することができる。SAプログラミング準拠デバイス336上のRdData出力は、情報をHBA334上のRdData入力に送達するために使用することができる。応答インターフェースは、情報送達、例えばPIOSetups、DMAActivates、DMASetups等を使用するもの、および通信完了、例えば、デバイス−ホスト(DH)および/またはセットデバイスビット(SDB)等を制限するために使用することができる。情報送達を制限することは、情報が送達される順序を定義することを含むことができる。バッファリングの使用は、対応する応答FISの前に情報の移動を開始することを可能にすることができる。
図3Bは、本開示の1以上の実施形態に従う、HBA334およびSAプログラミング準拠デバイス336の機能ブロック図である。HBA334は、図3Aで示されるHBA234に類似し得、より詳細に示される。SAプログラミング準拠デバイス336は、図3Aで示されるSAプログラミング準拠デバイス236に類似し得、より詳細に示される。
HBA334は、Cmd出力をSAプログラミング準拠デバイス336に提供する、コマンドフェッチャ356を含むことができる。HBA334は、SAプログラミング準拠デバイス336からRsp入力を受け取る、応答受信機358を含むことができる。HBA334は、SAプログラミング準拠デバイス336にWrData出力を提供する、下流側DMAデバイス360を含むことができる。HBA334は、SAプログラミング準拠デバイス336からRdData入力を受け取る、上流側DMAデバイス362を含むことができる。Cmdフェッチャ356、Rsp受信機358、下流側DMA360、および上流側DMA362のそれぞれは、互いに独立に操作することができるが、1以上の実施形態では、HBA FSM372、例えばAHCIプロトコルを実施することができるようなアドバンストホストコントローラインターフェース(AHCI)状態機械との操作を同期させることができる、ハードウェア構成要素とすることができる。
下流側DMAデバイス360およびCmdフェッチャ356は、下流側書き込みおよび/または上流側読み出しのためバスインターフェース(I/F)364に連結することができる。バスI/F364は、Cmdフェッチャ356から要求を受け取り、該要求をPCIeI/F、例えば図2で示されるPCIe回路230とのインターフェースに伝達し、そして適切なときに、返信をCmdフェッチャ356に返すように構成することができる。バスI/F364はまた、PCIeI/Fから情報を受け取り、例えば書き込み情報をフェッチする要求を、それに送るように構成することもできる。下流側DMAデバイス360は、書き込み情報を受け取るのに十分なバッファリングが存在するときに、BusI/F364を介して、複数のPCIe読み出し要求をパイプラインで送るように構成することができる。BusI/F364を介してPCIeI/Fに送られる各要求は、PCIeI/Fからそれぞれの書き込みバッファに情報を向ける回転バッファタグの割り当てを生じさせることができる。情報は、次いで、SAプログラミング準拠デバイス336に送信されるように、回転様式で書き込みバッファから除去することができる。Rsp受信機358および上流側DMAデバイス362は、下流側読み出しおよび/または上流側書き込みのためのバスI/F366に連結することができる。バスI/F366は、PCIeI/Fを介して、情報および/または要求を伝送するように構成することができる。
HBA334の構造は、単一のAHCIポートをホストデバイスドライバソフトウェアに提示することができるが、ポート内のコマンドスロットの数を、例えば256まで拡張することができる。独自のホストデバイスドライバは、制御レジスタ370、例えば8つの32ビットコマンド発行レジスタによって、スロットにアクセスすることができる。制御レジスタ370は、書き込み制御情報の入力および読み出し制御情報の出力のための制御インターフェース368を介して、PCIeI/Fに接続することができる。1以上の実施形態において、Cmdフェッチャ356は、コマンドが発行された順序で、コマンドを取り出し、それをSAプログラミング準拠デバイス336に転送することができる。1以上のコマンド、例えば32個のコマンドを、制御レジスタ370内で同時に受け取り、Cmdフェッチャ356に対してエンキューすることができる。
1以上のコマンドスロットは、コマンドスロットグループにグループ化し、それらに割り当てられるメッセージ信号割り込み(MSI)ベクタ、例えばMSI−Xベクタを有することができる。そのような実施形態は、複数のポートに対するコマンドのための32ビットAHCIレジスタを含むいくつかの以前の手法に対して有益であり得る。本開示の1以上の実施形態は、コマンドのための256ビットレジスタを伴う1つのポートを含むが、これは、ホスト、例えば図1で示されるホスト102において、割り込み性能を最適化することができる可能性を高める等のために、MSIベクタを伴うコマンドのグループ化を好都合なものにすることができる。
HBA334は、NCQの読み出しをインターリーブ様式で返すように、コンテキストアレイを使用することができる。特定の読み出しコマンド内の情報は順番に処理するが、複数の未処理の読み出しコマンドの部分が、互いにインターリーブされ得る。読み出しコンテキストが、SAプログラミング準拠デバイス336によって開始されるときに、HBA334は、コンテキストアレイから読み出しコマンドの現在の状態の記録を取り出し、最後に中断された位置から継続することができる。読み出しコンテキストが完了したときに、HBA334は、更新されたコマンド進捗値をコンテキストアレイに記憶することができる。コンテキストアレイの場所は、各可能な未処理の読み出しコマンド、例えば256個の未処理の読み出しコマンドについて存在し得る。書き込みには、類似したコンテキストアレイが使用され得る。
SAプログラミング準拠デバイス336は、HBA334、例えばHBA334のコマンドフェッチャ356からのCmd入力を受け取る、コマンド有限状態機械(FSM)374を含むことができる。SAプログラミング準拠デバイス336は、HBA334、例えばHBA334の応答受信機358へのRsp出力を提供する、デバイス−ホストアービタ(DH ARB)376を含むことができる。SAプログラミング準拠デバイス336は、HBA334、例えばHBA334の下流側DMA360からのWrData入力を受け取る、書き込みFSM378を含むことができる。SAプログラミング準拠デバイス336は、HBA334、例えばHBA334の上流側DMA362へのRdData出力を提供する、読み出しFSM380を含むことができる。例えば図2で示されるホスト−メモリ変換回路216を介して、WrFSM378は、メモリへの出力を提供することができ、また、RdFSM380は、メモリからの入力を提供することができる。
DH ARB376は、例えばDH、SDB等の通信のための、CmdFSM374からの入力を有することができる。DH ARB376は、例えば書き込みDMASetupsのための、WrFSM378からの入力を含むことができる。DH ARB376は、例えば読み出しDMASetupのための、RdFSM380からの入力を含むことができる。DH ARB376は、CmdFSM374、WrFSM378、およびRdFSM380からの入力に基づいて、HBA334に対する情報送達の順序および通信完了を制限するように構成することができる。WrFSM378は、DH ARB376が書き込み情報送達の順序を制限する前に、書き込み情報をバッファリングするように構成される、書き込みバッファを含むことができる。RdFSM380は、DH ARB376が読み出し情報送達の順序を制限する前に、読み出し情報をバッファリングするように構成される、書き込みバッファを含むことができる。
1以上の実施形態において、CmdFSM374は、デフォルトで並行して操作するように構成することができる。CmdFSM374は、PIOまたはDMA等の単一コンテキストのコマンドプロトコルの検出に応じて、アトミックに、例えば「CurrencyDisabled」モードで操作するように構成することができる。アトミックに操作するときに、CmdFSM374は、1つがWrFSM378に対し、1つがRdFSM380に対する2つの「PassControl」信号のうちの1つをアサートするように構成することができる。その後に、CmdFSM374は、リセットコマンドが受け取られるまで、またはWrFSM378またはRdFSM380のいずれかから「RetrunControl」信号がアサートされるまで、「WaitForCtl」状態に入ることができる。検出プロトコルがNonDataである場合、どちらのPassControl信号もアサートされない。CmdFSM374は、コマンド自体を使用可能にし、完了時にアイドル状態に戻ることができる。論理が、コマンドタグを放棄する準備ができたことを示す場合、CmdFSMは、適切なSDB FISを生成し、アイドル状態に戻ることができる。
1以上の実施形態において、WrFSM378およびRdFSM380は、デフォルトで並行して操作するように構成することができる。WrFSM378およびRdFSM380は、CmdFSM374からのPassControl信号の受け取り時に、および/またはPIOもしくはDMA等の単一コンテキストのコマンドプロトコルの検出時に、アトミックに操作するように構成することができる。WrFSM378および/またはRdFSM380は、コマンドカウントが完了する、または誤り条件が満たされる、のいずれかまで、SAプロトコル、例えばSATAプロトコルまたはSASプロトコルに従って、アトミックに操作することができ、その場合、それぞれのFSMは、そのRtnCtl信号をアサートすることができ、これは、そのWaitForCtl状態からCmdFSM374を発行することができる。これとは逆に、並行操作は、各FSMが、独立に情報を移動させることを可能にする。
図4は、本開示の1以上の実施形態に従う、ブロック管理デバイス440の機能ブロック図を示す。ブロック管理デバイス440は、図2で示されるブロック管理デバイス240に類似し得、メモリ管理回路に含めることができる。ブロック管理デバイス440は、図2で示される揮発性メモリ212に類似し得る揮発性メモリ412、例えばDRAMと通信することができる。したがって、例えば、ブロック管理デバイス440は、スイッチおよび揮発性メモリ制御回路を介して、揮発性メモリ412と通信することができる。揮発性メモリ412は、数ある情報の中でも、論理ブロックアドレス(LBA)テーブル482、ブロックテーブル484、および/またはトランザクションログ486を記憶することができる。
LBAテーブル482は、LUN、例えば図2で示されるLUN250のページの物理ページアドレスを記憶し、かつ、それに対応する論理アドレスを含むことができる。すなわち、LBAテーブル482は、論理−物理および/または物理−論理アドレス変換を記憶することができる。したがって、LBAテーブル482は、対応する情報を記憶することができる、論理ブロックアドレスに対応する物理ページアドレスをルックアップするために使用することができる。LBAテーブル482は、関連するSAコマンドに含まれるLBAによってインデックスを付けることができる。ブロックテーブル484は、1以上のLUNの消去可能なブロックのための情報を記憶することができる。ブロックテーブル484に記憶される情報は、有効なページ情報、消去カウント、ならびに他の健全性および/または状態情報を含むことができる。ブロックテーブル484からアクセスされる情報は、物理ブロックアドレスによってインデックスを付けることができる。トランザクションログ486は、LUNで起こる書き込みに関する情報を記録するために使用することができる。1以上の実施形態において、トランザクションログ486は、LUNへの書き込みと同時に更新することができる。トランザクションログ486は、例えば、突然の停電または不揮発性メモリに対するLBAテーブル482の更新間の他の誤りのため失い得る、LBAテーブル482の一部分の再現を容易にするために、LBAテーブル482が不揮発性メモリに最後に保存されて以来起こった、LUNへの書き込みに関する情報を含むことができる。
ブロック管理デバイス440内で表されるオブジェクトのいくつかは、ブロック管理デバイス440によって提供される機能を示す。LBAテーブルルックアップ機能490は、論理−物理アドレス変換を行うために、揮発性メモリ412の中のLBAテーブル482を参照することができる。LBAテーブルルックアップ機能490は、論理アドレスと関連付けられる情報が更新されるときに、論理アドレスに対応する新しい物理アドレスを伴うLBAテーブル482を更新することができる。ブロックテーブルルックアップ機能491は、例えば、再利用および/またはガーベージコレクション等のウェアレベリングの候補を決定するために、揮発性メモリ412の中のブロックテーブル484を参照することができる。再利用は、ブロックが消去される前に、消去されるブロックから新しい場所に全ての有効なページを移動させることを含むことができる。ブロック再利用機能493は、揮発性メモリ412の中のトランザクションログ486を参照することができる。
メモリ管理回路、例えばブロック管理デバイス440のローカルメモリに記憶されるブロックアレイ492は、例えばLBAテーブルルックアップ機能490および/またはブロックテーブルルックアップ機能491によってブロックアレイ492が参照されるときに、再利用ページ候補494、消去ブロック候補495、再利用書き込みブロック候補496、および/またはホスト書き込みブロック候補497を追跡することができる。そのような候補は、揮発性メモリの速度で、揮発性メモリ412、例えばDRAMから読み出す、またはそれに書き込むときに、各ブロックの健全性および/または状態情報を分析するために、専用のハードウェアを使用して、システムの中の各LUNについて選択することができる。各LUNの現在の候補は、ブロックアレイ492に記憶することができる。ブロックテーブル484がアクセスされる度に、パイプライン化された構造は、ブロックアレイ492から現在の最良の候補を取り出し、それを新しいブロックテーブル484アクセスと比較することができる。新しいブロックテーブル484アクセスが、例えば、書き込み、消去、または誤りイベントの結果として、ブロックアレイ492に記憶された現在の候補よりも良い候補を示した場合、新しいブロックを、ブロックアレイ492の中のその候補と置き換えることができる。候補選択は、揮発性メモリ412へのアクセスを遅れさせることなく生じさせることができ、これは、プロセスが、パイプライン化された構造を使用して揮発性メモリ412の速度で進行することを可能にする。
ブロック管理デバイス440は、揮発性メモリ412の中のブロックテーブル484に複数のブロックのそれぞれについて、健全性および状態情報を記憶するように構成することができる。ブロック管理デバイス440は、候補ブロックテーブル、例えば再利用ページ候補494、消去ブロック候補495、再利用書き込みブロック候補496、および/またはホスト書き込みブロック候補497を含むブロックアレイ492を、ローカルメモリに記憶するように構成することができる。候補ブロックテーブルは、特定の操作の1以上の基準に基づいて、特定の操作、例えばホスト書き込み、再利用読み出し、再利用書き込み、および/または消去のための候補ブロックを識別することができる。ブロック管理デバイス440は、例えば特定のブロックの書き込み、消去、または誤りイベントに応じて、ブロックテーブル484の中の特定のブロックについて、健全性および状態情報を更新するように構成することができる。ブロック管理デバイス440は、1以上の基準に従って、特定のブロックの更新された健全性および状態情報を、候補ブロックと比較するように構成することができる。ブロック管理デバイス440は、例えばその間に揮発性メモリ412において特定のブロックの健全性および状態情報が更新される同じクロックサイクル上で、特定のブロックが1以上の基準をより良く満たすことを示す比較に少なくとも部分的に応じて、特定のブロックを識別するために、候補ブロックテーブルを更新するように構成することができる。
例えば、上で説明される候補選択プロセスは、書き込み、消去、または誤りイベントの結果として、新しいブロックテーブル484アクセスに依存しない、テーブルウォーキングプロセスで補うことができる。テーブルウォーキングプロセスは、ブロック管理デバイス440の中のブロックアレイ492にローカルに記憶されていないブロック情報の履歴を復元することができる。テーブルウォーキングは、書き込み、消去、または誤りイベントの結果として、ブロックテーブル484アクセスと比較してより遅いバックグラウンドプロセスとすることができる。ブロックテーブル484全体がウォーキングされると、例えば揮発性メモリ412の電力消費を低減させるために、テーブルウォーキングプロセスは中断され得る。いくつかの事例において、新しいブロックテーブル484アクセスは、テーブルウォーキングプロセスを再開することができる。したがって、ブロック管理デバイス440は、複数のブロックのいずれかの書き込み、消去、または誤りイベントから独立した1以上の基準に従って、揮発性メモリ412の中のブロックテーブル484の複数のブロックのそれぞれについて、更新された健全性および状態情報を、候補ブロックと比較するように構成することができる。ブロックの比較は、複数のブロックのそれぞれが比較された後に中断することができる。
本開示の1以上の実施形態において、ホスト操作は、LBAテーブル482を更新するためのコヒーレンシー点の使用に従う再利用プロセス中にストールしない。再利用プロセス中に、例えば再利用ページ候補494からの、再利用ページ候補が、第1の場所から読み出され、第2の場所に書き込まれる。この読み出しおよび書き込み中に、ホストは、新しい情報を、現在再利用のために処理され、新しい物理アドレスでLBAテーブル482が更新されている、LBAに書き込んでしまっている場合がある。再利用がページの読み出しおよび書き込みを終了したときに、LBAテーブル482は、再利用下にあるLBAのLBAテーブル482エントリが、第1の場所から読み出された情報と同じ物理アドレスを有する場合にだけ、例えばホストがLBAテーブル482の中のエントリを更新していない場合に、新しい物理アドレスで更新することができる。再利用読み出しに対応するページは、ブロックテーブル484において、無効である、例えば失効情報を記憶している、としてマークすることができる。物理アドレスが再利用読み出しに対応するアドレスとは異なる場合は、ホストが更新を行ったことを示し、LBAテーブルは、再利用書き込みを通じて新しい物理アドレスで更新されない。再利用書き込みは、再利用書き込みに対応する物理的場所が無効な情報を記憶していることを示すように、ブロックテーブル484において無効にすることができる。
メモリ管理回路、例えばブロック管理デバイス440は、特定のブロックに対する再利用操作中に、特定のブロックから情報が読み込まれる前に、ブロックテーブル484から特定のブロックの論理アドレスに対応する第1の物理アドレスを取り出すように構成することができる。ブロック管理デバイス440は、再利用操作中に情報が異なるブロックに書き込まれた後に、LBAテーブル482から論理アドレスに対応する第2の物理アドレスを取り出すように構成することができる。ブロック管理デバイス440は、第2の物理アドレスが第1の物理アドレスに等しいことに少なくとも部分的に応じて、異なるブロックに対応する第3の物理アドレスでLBAテーブル482を更新するように構成することができる。ブロック管理デバイス440は、第2の物理アドレスが第1の物理アドレスと異なることに少なくとも部分的に応じて、再利用操作を無効にするように構成することができる。
ブロック管理デバイス440は、ホストコマンドキュー498とメモリコマンドキュー499との間に連結することができる。ホストコマンドキュー498は、図1で示されるホスト102等のホスト、図2で示されるようなメモリ回路238へのSA、および/または図2で示されるホストインターフェース214の1以上の構成要素と関連付けることができる。メモリコマンドキュー499は、図2で示されるCRQ242、LRQ244、およびLCQ246、ならびに/または他の構成要素のうちの1つ以上に類似し得る。
メモリ管理回路、例えばブロック管理デバイス440は、スイッチ、例えば図2で示されるスイッチ220を介して、不揮発性メモリ制御回路、例えば図2で示される不揮発性メモリ制御回路222に連結することができる。メモリ管理回路は、ホストバスの情報の幅およびホストバスのプロトコルに基づいて、ホスト書き込みのための書き込みブロッククラスタを割り当てるように構成することができる。書き込みブロッククラスタは、1以上のLUN250から1以上のブロックを含むことができる。ホストバスは、ホスト、例えば図1で示されるホスト102の一部とすることができる。例えば、ホストバスは、数ある中でも、x1、x2、x4、x8、x16、x32等のバス幅および第1〜3世代のPCIeプロトコルを伴うPCIeバスとすることができる。書き込みブロッククラスタは、不揮発性メモリ制御回路の中の複数のチャネル制御回路に連結される全てよりも少ないLUNから、1つのブロックを含むことができる。1以上の実施形態において、メモリ管理回路は、書き込みブロッククラスタのサイズを、ホストバスの情報の幅およびホストバスのプロトコルに応じて、最大ホストバス帯域幅をサポートするために使用されるLUNの最小数に制限するように構成することができる。
メモリシステムコントローラの書き込み帯域幅は、ホストバスによってサポートされる最大帯域幅、システムの中のメモリチャネルの数、および1チャネルあたりのLUNの数の関数とすることができる。ホストバスがサポートできるよりも多くのLUNを割り当てることは、別の場合であれば再利用操作に使用され得るリソースの浪費になり得る。したがって、本開示の1以上の実施形態によれば、ホスト書き込みブロッククラスタのサイズは、メモリシステムの中のLUNの総数よりもいくらか少ない数に制限され得る。
LUNからのブロックの残り、例えば書き込みブロッククラスタに割り当てられないものは、再利用操作に割り当てることができる。メモリ管理回路は、再利用操作による1以上の割り当てられたLUNの割り当てを一時的に解除するように構成することができる。書き込みブロッククラスタは、書き込みブロッククラスタのブロックがLUNの特定のシーケンスにおいて書き込まれるように、ホスト書き込みのために割り当てることができる。再利用帯域幅は、近い将来に書き込みのために使用され得るLUNに対する再利用操作を一時停止することによって、メモリシステムコントローラの書き込み帯域幅を改善するために制限され得る。割り当てられたLUNのうちの少なくとも1つは、LUNの特定のシーケンスが、ホスト書き込みのためのLUNの特定のシーケンスにおいて、次のLUNがLUNの閾値数の範囲内であることを示すことに少なくとも部分的に応じて、再利用操作による割り当てを解除することができる。閾値数は、再利用読み出し操作、再利用書き込み操作、および再利用消去操作のそれぞれについて異なり得る。閾値数は、書き込み操作の前にいかなる再利用操作も起こり得ない1以上のLUNである、「除外ゾーン」を表すことができる。
1チャネルあたり複数のLUNを使用することは、例えば図2でCRQ242、LRQ244、およびLCQ246に関して説明したように、特定のチャネルが扱うことができるよりも多くのコマンドが発行される状況に至る可能性があり、結果として、メモリチャネルに対してコマンドがキューに入れられることになる。メモリ管理回路は、閾値の範囲内である特定のLUNと関連付けられるキューの数が満杯になることに少なくとも部分的に応じて、特定のLUNに対する再利用操作に対して発行されるコマンドの数を制限するように構成することができる。1チャネルあたりのコマンドの最大数はまた、所要のパワーエンベロープの範囲内に留まるように制限され得る。再利用操作に対して発行されるコマンドの数は、メモリシステムコントローラによって使用される電力量が電力量の閾値を超えることに少なくとも部分的に応じて、制限することができる。1チャネルあたりのコマンドの最大数はまた、例えば、同じチャネルに対する連続のコマンドおよび/またはLUNが効率的な操作のために十分に離間されることを確実にすることを補助するために、制限され得る。メモリ管理回路は、再利用操作のための第1のコマンドの発行と第2のコマンドの発行との間に、少なくとも最短時間、例えばクロック数を実施するように構成することができる。最短時間は、例えば、消去されたブロックの数が減少するにつれて再利用帯域幅が増加し得るので、LUNの中の消去されたブロックの総数に基づくことができる。
利用可能な消去されたブロックの十分な供給源がある場合は、最大ホスト書き込み帯域幅を短期間維持することができる。消去されたブロックの供給源がほぼ消費されると、増加した再利用操作のため、書き込み帯域幅が減少し得る。メモリ管理回路は、例えばブロックテーブル484を参照して、LUNの到達について1以上の消去されたブロックを追跡するように構成することができる。メモリ管理回路は、特定のLUNの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数未満になることに少なくとも部分的に応じて、特定のLUNに対する再利用操作に従事するように構成することができる。メモリ管理回路は、特定のLUNの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数を超えることに少なくとも部分的に応じて、特定のLUNに対する再利用操作を一時停止するように構成することができる。ホスト書き込みは、特定のLUNの中の消去されたブロックの数がホスト書き込み閾値数未満になることに少なくとも部分的に応じて、特定のLUNに対して一時停止することができる。メモリ管理回路は、特定のLUNの中の消去されたブロックの数が書き込み閾値数を超えること、例えば閾値数未満になることに少なくとも部分的に応じて、特定のLUNに対する書き込みを一時中断するように構成することができる。メモリ管理回路は、特定のLUNの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数を超えることに少なくとも部分的に応じて、特定のLUNに対する書き込みに再従事するように構成することができる。そのような実施形態は、再利用操作と書き込み操作との間に釣り合い、例えばダイナミックロードバランシングを提供するのを補助することができる。
いくつかのメモリ操作は、長い所要時間を費やす。チャネル制御回路、例えば図2で示されるチャネル制御回路248は、LUNに対する状態読み出しを発行するように、例えばいつ特定のメモリ操作を完了させるのかを決定するように構成される、ポーリング論理を含むことができる。いくつかの事例において、そのようなポーリングは、ポーリングされているLUNと同じチャネルを使用する他のコマンドに干渉する可能性がある。本開示の1以上の実施形態によれば、ポーリング論理は、LUNに対して発行されるコマンドによって示される操作のタイプに応じて、特定の時間にわたってアイドリングさせることができる。アイドル時間は、例えば、数ある中でも、読み出し操作、書き込み操作、および/または削除操作等の、特定の操作が行われると予想される時間に応じて、特定の操作に対して設定することができる。
<結論> 本開示は、メモリシステムコントローラを含む種々の装置の実施例を含む。1つのそのようなメモリシステムコントローラは、スイッチと、スイッチに連結される不揮発性メモリ制御回路を含むことができる。不揮発性メモリ制御回路は、論理ユニットに連結されるチャネル制御回路を含むことができる。チャネル制御回路は、消去コマンドを複数の論理ユニットのうちの第1の論理ユニットに中継し、消去コマンドが複数の論理ユニットのうちの第1の論理ユニットで実行されている間に、特定のコマンドをスイッチから複数の論理ユニットのうちの第2の論理ユニットに中継するように構成される。
要素が、別の要素の「〜上にある」、別の要素に「接続される」、または別の要素に「連結される」ものとして言及されるとき、他の要素の直接的に上にある、他の要素に直接的に接続される、または他の要素に直接的に連結される可能性があるか、または介在要素が存在する場合があることが理解されるであろう。対照的に、要素が、別の要素に対して「直接的に上にある」、「直接的に接続される」、または「直接的に連結される」ものとして言及されるときは、いかなる介在要素または層も存在しない。本明細書で使用される場合、「および/または」という用語は、1以上の関連する列記された品目うちの任意および全ての組み合わせを含む。
本明細書で使用される場合、「および/または」という用語は、1以上の関連する列記された品目うちの任意および全ての組み合わせを含む。本明細書で使用される場合、「または」という用語は、別途注記されない限り、論理的に、包含的な「または」を意味する。すなわち、「AまたはB」は、(Aだけ)、(Bだけ)、または(AおよびBの両方)を含むことができる。換言すれば、「AまたはB」は、「Aおよび/またはB」または「AおよびBのうちの1つ以上」を意味することができる。
第1、第2、第3等の用語は、本明細書では、種々の要素を表すために使用されている場合があり、これらの用語によってこれらの要素を限定すべきではないことを理解されるであろう。これらの用語は、ある要素を別の要素と区別するために使用されているに過ぎない。したがって、第1の要素は、本開示の教示を逸脱しない範囲で第2の要素と称される可能性がある。
本明細書には具体的な実施形態が図示および記述されているが、当業者は、同じ結果を達成するように考案された配設を、示された具体的な実施形態に代えることができることを理解するであろう。本開示は、本開示の1以上の実施形態の適応または変形を包含することを意図する。上記の説明は、制限の様式ではなく、図説の様式において行われたものであることが理解されるであろう。上記の実施形態、および本明細書に具体的に説明されない他の実施形態の組み合わせは、上記の説明を検討することによって、当業者には明らかであろう。本開示の1以上の実施形態の範囲は、上記の構造および方法が使用される他の用途を含む。したがって、本開示の1以上の実施形態の範囲は、添付の特許請求の範囲に加えて、このような特許請求の範囲が権利を与えられる均等物の完全な範囲を参照して決定されなければならない。
前述の発明を実施するための形態では、開示を簡素化するために、いくつかの特徴が単一の実施形態にまとめられている。この開示方法は、本開示の開示される実施形態が、各請求項に明記されるよりも多くの特徴を用いなければならないという意図を反映するものとして解釈されるべきではない。そうではなく、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態の全ての特徴に満たない中に存する。したがって、以下の特許請求の範囲が本明細書により発明を実施するための形態に組み入れられ、各特許請求の範囲は個別の実施形態として独立する。
100 コンピュータシステム
102 ホスト
104 メモリシステム
106 物理ホストインターフェース
108 メモリシステムコントローラ
110−1〜110−N ソリッドステートメモリデバイス
204 メモリシステム
206 物理インターフェース
208 ソリッドステートメモリシステムコントローラ
212 揮発性メモリ
214 ホストインターフェース(I/F)回路
216 ホスト−メモリ変換回路
218 メモリ管理回路
220 スイッチ
221 バッファ割り当て管理(BAM)回路
222 不揮発性メモリ制御回路
223 バッファタグプール
224 揮発性メモリ制御回路
225 内部スタティックランダムアクセスメモリ(SRAM)バッファ(ISB)
226 RAID排他的論理和(XOR)回路
227 ダイナミックランダムアクセスメモリ(DRAM)バッファ
228 プロセッサ
230 PCIe回路
234 ホストバスアダプタ(HBA)
236 SA準拠デバイス
242 チャネル要求キュー(CRQ)
244 論理ユニット(LUN)要求キュー(LRQ)
246 論理ユニット(LUN)コマンドキュー(LCQ)
248 チャネル制御回路
250 論理ユニット(LUN)
334 ホストバスアダプタ(HBA)
336 シリアルアタッチメント(SA)プログラミング準拠デバイス
352 コマンド層
354 トランスポート層
356 コマンドフェッチャ
358 応答受信機
360 下流側DMAデバイス
362 上流側DMAデバイス
364 バスインターフェース(I/F)
366 バスインターフェース(I/F)
368 制御インターフェース
370 制御レジスタ
372 HBA FSM
374 コマンド有限状態機械(FSM)
376 デバイス−ホストアービタ(DH ARB)
378 書き込みFSM
380 読み出しFSM
412 揮発性メモリ
440 ブロック管理デバイス
482 論理ブロックアドレス(LBA)テーブル
484 ブロックテーブル
486 トランザクションログ
490 LBAテーブルルックアップ機能
491 ブロックテーブルルックアップ機能
492 ブロックアレイ
493 ブロック再利用機能
494 再利用ページ候補
495 消去ブロック候補
496 再利用書き込みブロック候補
497 ホスト書き込みブロック候補
498 ホストコマンドキュー
499 メモリコマンドキュー

Claims (6)

  1. 複数の第1の論理ユニットと、
    前記複数の第1の論理ユニットにそれぞれ対応して設けられた複数の第1の論理ユニットコマンドキューと、前記複数の第1の論理ユニットに対する複数のコマンドを第1の順序で受け、前記複数のコマンドのそれぞれを前記第1の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第1の順序とは異なる第2の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第1の論理ユニット要求キューと、を備える第1のチャネル制御回路と、
    複数の第2の論理ユニットと、
    前記複数の第2の論理ユニットにそれぞれ対応して設けられた複数の第2の論理ユニットコマンドキューと、前記複数の第2の論理ユニットに対する複数のコマンドを第3の順序で受け、前記複数のコマンドのそれぞれを前記第3の順序で前記複数の第2の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第3の順序とは異なる第4の順序で前記複数の第2の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第2の論理ユニット要求キューと、を備える第2のチャネル制御回路と、
    前記第1および第2のチャネル制御回路内の前記第1及び第2の論理ユニット要求キューにコマンドを中継するように構成されるチャネル要求キューと、
    を備える装置。
  2. 前記チャネル要求キューは正の整数値の深さCを備え、前記第1および第2の論理ユニット要求キューはそれぞれ正の整数値の深さLを備え、前記複数の第1および第2の論理ユニットコマンドキューはそれぞれ正の整数値の深さQを備え、LはQよりも大きく、CはLよりも大きい、請求項に記載の装置
  3. 前記第1のチャネル制御回路及び第2のチャネル制御回路に対応してそれぞれ設けられた第1及び第2の誤り検出/修正回路をさらに備えることを特徴とする請求項1に記載の装置。
  4. ホストと、
    前記ホストと通信可能に接続されたメモリシステムと、を含み、
    前記メモリシステムは、
    複数の第1の論理ユニットと、
    前記複数の第1の論理ユニットにそれぞれ対応して設けられた複数の第1の論理ユニットコマンドキューと、前記複数の第1の論理ユニットに対する複数のコマンドを第1の順序で受け、前記複数のコマンドのそれぞれを前記第1の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第1の順序とは異なる第2の順序で前記複数の第1の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第1の論理ユニット要求キューと、を備える第1のチャネル制御回路と、
    複数の第2の論理ユニットと、
    前記複数の第2の論理ユニットにそれぞれ対応して設けられた複数の第2の論理ユニットコマンドキューと、前記複数の第2の論理ユニットに対する複数のコマンドを第3の順序で受け、前記複数のコマンドのそれぞれを前記第3の順序で前記複数の第2の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第3の順序とは異なる第4の順序で前記複数の第2の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第2の論理ユニット要求キューと、を備える第2のチャネル制御回路と、
    前記第1および第2のチャネル制御回路内の前記第1及び第2の論理ユニット要求キューにコマンドを中継するように構成されるチャネル要求キューと、
    を備える装置。
  5. 前記チャネル要求キューは正の整数値の深さCを備え、前記第1および第2の論理ユニット要求キューはそれぞれ正の整数値の深さLを備え、前記複数の第1および第2の論理ユニットコマンドキューはそれぞれ正の整数値の深さQを備え、LはQよりも大きく、CはLよりも大きい、請求項4に記載の装置。
  6. 前記第1のチャネル制御回路及び第2のチャネル制御回路に対応してそれぞれ設けられた第1及び第2の誤り検出/修正回路をさらに備えることを特徴とする請求項4に記載の装置。
JP2015231866A 2011-05-31 2015-11-27 メモリシステムコントローラを含む装置 Active JP6163532B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/149,461 2011-05-31
US13/149,461 US8543758B2 (en) 2011-05-31 2011-05-31 Apparatus including memory channel control circuit and related methods for relaying commands to logical units

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014513587A Division JP2014515533A (ja) 2011-05-31 2012-05-24 メモリシステムコントローラを含む装置および関連する方法

Publications (2)

Publication Number Publication Date
JP2016053983A JP2016053983A (ja) 2016-04-14
JP6163532B2 true JP6163532B2 (ja) 2017-07-12

Family

ID=47260199

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014513587A Pending JP2014515533A (ja) 2011-05-31 2012-05-24 メモリシステムコントローラを含む装置および関連する方法
JP2015231866A Active JP6163532B2 (ja) 2011-05-31 2015-11-27 メモリシステムコントローラを含む装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014513587A Pending JP2014515533A (ja) 2011-05-31 2012-05-24 メモリシステムコントローラを含む装置および関連する方法

Country Status (7)

Country Link
US (2) US8543758B2 (ja)
EP (1) EP2715732B1 (ja)
JP (2) JP2014515533A (ja)
KR (1) KR101560469B1 (ja)
CN (1) CN103650054B (ja)
TW (1) TWI477965B (ja)
WO (1) WO2012166522A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146688B2 (en) * 2012-12-05 2015-09-29 SanDisk Technologies, Inc. Advanced groomer for storage array
US10067829B2 (en) 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9582211B2 (en) * 2014-04-29 2017-02-28 Sandisk Technologies Llc Throttling command execution in non-volatile memory systems based on power usage
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
CN104156432A (zh) * 2014-08-08 2014-11-19 四川九成信息技术有限公司 一种文件访问方法
US9679658B2 (en) * 2015-06-26 2017-06-13 Intel Corporation Method and apparatus for reducing read latency for a block erasable non-volatile memory
US10719237B2 (en) * 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
JP2018073038A (ja) 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
EP3635634A1 (en) * 2017-06-05 2020-04-15 Kioxia Corporation Memory card, host device, memory card connector, and memory card adapter
TWI640920B (zh) * 2017-06-30 2018-11-11 慧榮科技股份有限公司 資料儲存裝置、非揮發式記憶體操作方法及操作指令執行方法
CN110908591B (zh) * 2018-09-17 2023-05-30 群联电子股份有限公司 存储器管理方法、存储器储存装置及存储器控制电路单元
KR20210131391A (ko) 2019-02-22 2021-11-02 마이크론 테크놀로지, 인크. 메모리 디바이스 인터페이스 및 방법
US11036633B2 (en) * 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory apparatus
CN114503082B (zh) 2019-10-09 2024-01-30 美光科技公司 配备有数据保护方案的存储器装置
EP4081954A4 (en) 2019-12-27 2023-04-05 Micron Technology, Inc. NEUROMORPHIC STORAGE DEVICE AND METHOD
KR20220116258A (ko) 2019-12-30 2022-08-22 마이크론 테크놀로지, 인크. 메모리 디바이스 인터페이스 및 방법
US11150841B2 (en) * 2020-02-10 2021-10-19 Western Digital Technologies, Inc. NAND dropped command detection and recovery
TWI761992B (zh) 2020-10-16 2022-04-21 創鑫智慧股份有限公司 資料計算裝置及其操作方法
KR20220167077A (ko) * 2021-06-11 2022-12-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US20240028259A1 (en) * 2022-07-21 2024-01-25 Micron Technology, Inc. Buffer allocation for reducing block transit penalty

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2711831B1 (fr) * 1993-10-26 1997-09-26 Intel Corp Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire.
JPH1063442A (ja) * 1996-08-22 1998-03-06 Toshiba Corp 半導体ディスク装置
US6662262B1 (en) * 1999-10-19 2003-12-09 Advanced Micro Devices, Inc. OTP sector double protection for a simultaneous operation flash memory
US6654848B1 (en) * 2000-09-15 2003-11-25 Advanced Micro Devices, Inc. Simultaneous execution command modes in a flash memory device
US7003621B2 (en) * 2003-03-25 2006-02-21 M-System Flash Disk Pioneers Ltd. Methods of sanitizing a flash-based data storage device
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US20050198186A1 (en) 2004-01-20 2005-09-08 Mor Griv Method for automatic discovering of logical units and storage devices connected to a virtualization switch
US8060670B2 (en) * 2004-03-17 2011-11-15 Super Talent Electronics, Inc. Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device
JP4643198B2 (ja) 2004-07-28 2011-03-02 株式会社日立製作所 負荷分散コンピュータシステム、経路設定プログラム及びその方法
JP2006092154A (ja) * 2004-09-22 2006-04-06 Hitachi Ltd ストレージシステム及びストレージ制御方法
KR100672992B1 (ko) * 2005-01-04 2007-01-24 삼성전자주식회사 반도체 메모리 장치의 동작 방법
US7904639B2 (en) * 2006-08-22 2011-03-08 Mosaid Technologies Incorporated Modular command structure for memory and memory system
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
KR20090102789A (ko) * 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8775717B2 (en) * 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
JP5345679B2 (ja) * 2008-05-13 2013-11-20 ラムバス・インコーポレーテッド メモリデバイス用の部分プログラムコマンド
US7970978B2 (en) * 2008-05-27 2011-06-28 Initio Corporation SSD with SATA and USB interfaces
US20100115172A1 (en) * 2008-11-04 2010-05-06 Mosaid Technologies Incorporated Bridge device having a virtual page buffer
US8078848B2 (en) * 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8850103B2 (en) * 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US20110060869A1 (en) 2009-09-08 2011-03-10 Ocz Technology Group, Inc. Large capacity solid-state storage devices and methods therefor
US8331123B2 (en) * 2009-09-21 2012-12-11 Ocz Technology Group, Inc. High performance solid-state drives and methods therefor
US8990476B2 (en) 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8681546B2 (en) * 2011-02-22 2014-03-25 Apple Inc. Variable impedance control for memory devices

Also Published As

Publication number Publication date
KR20140013098A (ko) 2014-02-04
KR101560469B1 (ko) 2015-10-14
CN103650054A (zh) 2014-03-19
US8543758B2 (en) 2013-09-24
EP2715732A4 (en) 2015-02-18
TW201310233A (zh) 2013-03-01
EP2715732A2 (en) 2014-04-09
CN103650054B (zh) 2017-02-15
WO2012166522A2 (en) 2012-12-06
US20120311230A1 (en) 2012-12-06
EP2715732B1 (en) 2018-11-21
US20140025876A1 (en) 2014-01-23
WO2012166522A3 (en) 2013-03-21
US9430373B2 (en) 2016-08-30
JP2016053983A (ja) 2016-04-14
JP2014515533A (ja) 2014-06-30
TWI477965B (zh) 2015-03-21

Similar Documents

Publication Publication Date Title
JP6163532B2 (ja) メモリシステムコントローラを含む装置
JP5918359B2 (ja) メモリシステムコントローラを含む装置および関連する方法
US8949492B2 (en) Apparatus including buffer allocation management and related methods
US9747029B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
US9514838B2 (en) Apparatus including memory system controllers and related methods for memory management using block tables

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170314

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: 20170613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6163532

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250