JP2012523612A - いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法 - Google Patents

いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法 Download PDF

Info

Publication number
JP2012523612A
JP2012523612A JP2012504666A JP2012504666A JP2012523612A JP 2012523612 A JP2012523612 A JP 2012523612A JP 2012504666 A JP2012504666 A JP 2012504666A JP 2012504666 A JP2012504666 A JP 2012504666A JP 2012523612 A JP2012523612 A JP 2012523612A
Authority
JP
Japan
Prior art keywords
command
commands
host
channels
backend
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.)
Granted
Application number
JP2012504666A
Other languages
English (en)
Other versions
JP5729774B2 (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 JP2012523612A publication Critical patent/JP2012523612A/ja
Application granted granted Critical
Publication of JP5729774B2 publication Critical patent/JP5729774B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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

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)
  • Stored Programmes (AREA)

Abstract

本開示は、メモリコントローラのための方法および装置を含む。1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキューと、を含む。コマンドキューは、ホストから受信されるホストコマンドを保持するように構成される。回路は、コマンドキュー内のいくつかのホストコマンドに少なくとも応答していくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
【選択図】図3

Description

本開示は、概して、半導体記憶装置、方法、およびシステムに関し、より具体的には、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法に関する。
記憶装置は、一般的に、コンピュータまたは他の電子装置の中の内部の、半導体の、集積回路として提供される。揮発性および不揮発性メモリを含む、多種多様なメモリが存在する。揮発性メモリは、そのデータを維持するために電源を要求する可能性があり、数ある中でも、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)が挙げられる。不揮発性メモリは、電源を供給されていない時に記憶された情報を保持することによって永続的データを提供することができ、数ある中でも、NANDフラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、および相変化ランダムアクセスメモリ(PCRAM)を挙げることができる。
記憶装置は、ソリッドステートドライブ(SSD)を形成するように一体化することができる。SSDは、多様な他のタイプの不揮発性および揮発性メモリの中でも、例えば、NANDフラッシュメモリおよびNORフラッシュメモリ等の不揮発性メモリを含むことができ、かつ/または、例えば、DRAMおよびSRAM等の揮発性メモリを含むことができる。
SSDは、性能、サイズ、重量、耐久性、動作温度範囲、電力消費の点においてハードドライブに優る利点を有することができるため、SSDは、ハードディスクドライブに代わって、コンピュータ用の主記憶装置として使用することができる。例えば、SSDは、稼動部がないことに起因して、磁気ディスクドライブに比較すると優れた性能を有することができ、磁気ディスクドライブに関連する、シーク時間、待ち時間、および他の電気機械的遅延を改善する場合がある。SSD製造者は、内部のバッテリー電源を使用しない場合があるフラッシュSSDを作成するために不揮発性フラッシュメモリを使用することができ、これによって、ドライブの多用途化および小型化を可能にする。
SSDは、いくつかの記憶装置、例えば、いくつかのメモリチップを含んでもよい(本明細書に使用される場合、「いくつかの」物とは1つ以上の該当物を参照することができ、例えば、いくつかの記憶装置は、1つ以上の記憶装置を参照することができる)。当業者が理解するであろうように、メモリチップはいくつかのダイを含んでもよい。各ダイは、いくつかのメモリアレイおよびその上の周辺回路を含んでもよい。メモリアレイは、いくつかのプレーンを含んでもよく、各プレーンには、メモリセルのいくつかの物理ブロックを含んでもよい。各物理ブロックは、データのいくつかのセクタを記憶することができる、いくつかのページを含んでもよい。
例えば、SSD等のメモリシステムは、コンピューティングシステムに組み込まれる場合があり、メモリシステムは、ホストと、ハードディスクドライブ、光学式ドライブ、およびSSDなどのような大型記憶装置との間のコマンドおよびデータの転送のために主に設計された、例えば、シリアルアドバンストテクノロジアタッチメント(SATA)高速シリアルバス等の通信インターフェースによって、ホストに通信可能に結合することができる。
数ある他のコマンドの中でも、プログラムコマンド、読み出しコマンド、および消去コマンドなどのようなコマンドは、SSDの操作中に使用される場合がある。例えば、プログラムコマンド、例えば、書き込みコマンドは、ソリッドステートドライブ上のデータをプログラムするために使用される場合があり、読み出しコマンドは、ソリッドステートドライブ上のデータを読み出すために使用される場合があり、消去コマンドは、ソリッドステートドライブ上のデータを消去するために使用される場合がある。
本開示の1つ以上の実施形態に従う、コンピューティングシステムの機能ブロック図である。 本開示の1つ以上の実施形態に従う、少なくとも1つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。 本開示の1つ以上の実施形態に従う、いくつかの記憶装置に通信可能に結合されるメモリシステムコントローラの機能ブロック図である。 本開示の1つ以上の実施形態に従う、論理アドレスから物理アドレスへのマップを示す図である。 本開示の1つ以上の実施形態に従う、フロントエンドDMAのコマンドキューの機能ブロック図である。 本開示の1つ以上の実施形態に従う、フロントエンドDMAのコマンドキューの動作を示す図である。 本開示の1つ以上の実施形態に従う、フロントエンドDMAのコマンドキューの動作を示す図である。 本開示の1つ以上の実施形態に従い、いくつかのバックエンドチャネルの間でコマンドを分配するための流れ図である。 本開示の1つ以上の実施形態に従う、フロントエンドといくつかのチャネルとの間のインターフェースを示す機能ブロック図である。 本開示の1つ以上の実施形態に従って実装される、ダイレクトメモリアクセスモジュール(DMA)ディスクリプタブロックの機能ブロック図である。 本開示の1つ以上の実施形態に従って実装される、図9Aに図示されるDMAディスクリプタブロック(DDB)内のエントリを示す図である。
本開示は、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法を含む。1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキューと、を含む。コマンドキューは、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー内のいくつかのホストコマンドに少なくとも応答して、いくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
本開示はまた、メモリコントローラのための方法および装置も含む。1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルおよびコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を含む。コマンドディスパッチャは、いくつかのコマンドによって達成される、メモリへのネット変更を判定し、複数のバックエンドチャネルの間のいくつかのコマンドの分配を最適化するために、いくつかのコマンドのうちの1つ以上を修正するように構成することができる。
本明細書中の図面は、上位の桁(単数または複数)が、図面の図番号に対応し、残りの桁(複数)は、図面の中の要素または構成要素を識別するという、番号規則に従う。異なる図面間の同様な要素または構成要素は、同様な数字の使用によって識別される場合がある。例えば、104によって、図1中の要素「10」を参照する場合があり、類似要素が、図2中の210として参照される場合等がある。
図1は、本開示の1つ以上の実施形態に従う、コンピューティングシステムの機能ブロック図である。図1の実施形態は、コンピューティングシステム100の一実施形態の構成要素およびアーキテクチャを示す。コンピューティングシステム100は、数ある中でも、例えば、USB、PCI、SATA/150、SATA/300、またはSATA/600インターフェース等のインターフェース106を通して、ホスト102のようなホストに通信可能に結合される、例えば、ソリッドステートドライブ(SSD)等のメモリシステム104を含む。
SATAは、アドバンストテクノロジーアタッチメント(ATA)規格の後継技術として考案され、しばしばパラレルATA(PATA)と呼ばれる。SATA/150または非公式にはSATA1としても知られる、第1世代のSATAインターフェースは、毎秒約1.5ギガビット(Gb/秒)または毎秒約150メガバイト(MB/秒)の速度で通信する。その後、3.0Gb/秒の信号レートが、物理層に追加され、例えば、上限データ処理能力を150MB/秒から300MB/秒に、事実上、最高速度を2倍にした。3.0Gb/秒の仕様は、SATA/300あるいは非公式にはSATAIIまたはSATA2としても知られる。SATA300の転送速度は、しばらくの間は、磁気ハードディスクドライブの処理能力要件を満たすかもしれないが、しかしながら、高速フラッシュの複数のチャネルを使用するソリッドステートドライブは、これよりはるかに高速のデータ転送速度をサポートすることができるため、例えば、フラッシュソリッドステートドライブの読み出し速度をサポートする際には、6Gb/秒の処理能力を有するSATA/600等のこれよりさらに高速のSATA規格が実装されるかもしれない。
ホスト102は、いくつかの別個の集積回路を含むことができるか、あるいは、2つ以上の構成要素または機能を同じ集積回路上に存在させることができる。1つ以上の実施形態に従い、ホスト102は、少なくとも部分的に「マザーボード」として、コンピューティングシステム100内に物理的に実装することができ、SSD104は、別個のカード上に物理的に実装され、マザーボードおよびSSDは、バスを通して通信可能に結合される。
ホスト102は、メモリおよびバスコントロール107に通信可能に結合される、例えば、パラレルプロセッサ、コプロセッサ、プロセッサコア等のいくつかのプロセッサ105を含むことができる。いくつかのプロセッサ105は、マイクロプロセッサ、または特定用途集積回路(ASIC)のようないずれかの他の数種の制御回路とすることができる。コンピューティングシステムの他の構成要素もプロセッサを有する場合がある。メモリおよびバスコントロール107は、例えば、ダイナミックランダムアクセスメモリ(DRAM)111、グラフィックユーザインターフェース113、または、例えば、ディスプレイモニタ、キーボード、マウス等の他のユーザインターフェースに直接通信可能に結合される、メモリおよび他の構成要素を有することができる。
メモリおよびバスコントロール107はまた、そこに通信可能に結合される周辺およびバスコントロール109も有することができ、これはさらに、ユニバーサルシリアルバス(USB)インターフェースを使用するフラッシュドライブ115、不揮発性メモリホストコントロールインターフェース(NVMHCI)フラッシュメモリ117、またはSSD104等のいくつかの装置に接続することができる。読者が理解するであろうように、SSD104は、いくつかの異なるコンピュータィングシステム内のハードディスクドライブ(HDD)に加えて、またはこれの代わりに使用することができる。図1に図示されるコンピューティングシステム100は、そのようなシステムの一例である。
図2は、本開示の1つ以上の実施形態に従う、少なくとも1つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。コンピューティングシステム200は、ホスト202に通信可能に結合される、メモリシステム204、例えばSSDを含む。SSD204は、SATAインターフェースのような、例えば、ケーブル、バス等のインターフェース206を通して、ホスト202に通信可能に結合することができる。SSD204は、図1のソリッドステートドライブ104に類似することができる。
図2は、コントローラ210と、例えばコネクタ等の物理的インターフェース208と、いくつかの記憶装置212−1、・・・、212−Nであって、コントローラ210のいくつかのチャネルに対応するいくつかの記憶装置(例えば、1つ以上の記憶装置は、特定のチャネルに対応する)と、を含む、ソリッドステートドライブ204の1つ以上の実施形態の構成要素を示す。したがって、記憶装置212−1、・・・、212−Nは、図面上で「チャネル何番メモリ」として示される。本明細書に使用される場合、記憶装置は、制御入力を共有する、例えば、ダイ、チップ、アレイ、または他のグループのような、いくつかのメモリセルを含むことができ、例えば、NANDフラッシュ等のいくつかのメモリタイプを使用して製造される場合がある。制御入力は概して、アドレスラッチイネーブル(ALE)、チップイネーブル(CE)、読み出しイネーブル(RE)、読み出し/ビジー(R/B)、書き込み保護(WP)、およびピン、パッド等のような入力/出力(I/O)接続を含むことができる。1つ以上の実施形態において、SSD204は、SSD204を包囲するための筐体を含むことができるが、そのような筐体は不可欠ではなく、例えば、ホスト202およびSSD204はどちらも、コンピューティングシステムの筐体によって包囲される場合がある。
インターフェース206は、SSD204と、ホスト202のような別の装置との間で情報を通信するために使用することができる。1つ以上の実施形態に従い、SSD204は、コンピューティングシステム200の中の記憶装置として使用することができる。1つ以上の実施形態に従い、SSD204は、例えば、プラグイン接続性を備えて、コンピューティングシステム200のための外付け、または携帯用のメモリシステムとして構成することができる。
コントローラ210は、記憶装置のメモリセルを、例えば、読み出す、プログラムする(すなわち、書き込む)、消去する等の操作するために、記憶装置212−1、・・・、212−Nと通信することができる。コントローラ210を、記憶装置212−1、・・・、212−Nとの通信、およびこれらの中に記憶されるデータを管理するために使用することができる。コントローラ210は、いくつかの集積回路であってもよい、回路を有することができる。コントローラ210はまた、いくつかの離散構成要素とすることができる、回路も有することができる。1つ以上の実施形態では、コントローラ210内の回路は、いくつかのチャネルにわたって、およびいくつかの記憶装置212−1、・・・、212−Nにわたって、アクセスを制御するための制御回路を含むことができる。メモリコントローラ210は、いくつかのチャネルを通して、対応する記憶装置に選択的に通信することができる。
ホスト202とSSD204との間の通信プロトコルは、記憶装置212−1、・・・、212−N等の記憶装置にアクセスするために必要なプロトコルとは異なる場合がある。メモリコントローラ210は、ホスト202から受信されるコマンドを適切なコマンドに変換して、いくつかの記憶装置212−1、・・・、212−Nにわたって意図した動作を達成するように構成される制御回路を含むことができる。メモリコントローラ210の回路は、ホスト202とSSD204との間の変換層を提供することができる。メモリコントローラ210はまた、例えば、データを記憶し、かつ取り出すために、ホストコマンドシーケンス、関連データ、および例えば信号等の他の情報を適切なチャネルコマンドシーケンスに処理することもできる。メモリコントローラ210は、コマンド、通信(例えば、受信、送信、伝送)関連データ、および他の情報を、適切なチャネルを通して適時に対応する記憶装置へ選択的に分配することができる。
本開示の1つ以上の実施形態に従い、各記憶装置212−1、・・・、212−Nは、いくつかのメモリセルを含むことができる。記憶装置212−1、・・・、212−Nは、数ある中でも、例えば、NANDフラッシュ、DRAM等の多種多様な種類の揮発性または不揮発性メモリアレイを使用して、形成することができる。本開示の1つ以上の実施形態に従い、記憶装置212−1、・・・、212−Nは、その全ては本開示の1つ以上の実施形態を実装する際に使用される場合がある、NANDアーキテクチャ、NORアーキテクチャ、ANDアーキテクチャ、または何らかの他のメモリアレイアーキテクチャの中に構成される、いくつかのフラッシュメモリセルを含むことができる。
記憶装置212−1、・・・、212−Nは、ページ、ブロック、プレーン、アレイ、または他のグループのような、特定の物理的または論理的構成を提供するように構成することができる、いくつかのメモリセルを含むことができる。ページは、データのいくつかの物理セクタに応じて、データを記憶することができる。各物理セクタは、論理セクタに対応することができ、エラー修正コード(ECC)情報、および論理ブロックアドレス(LBA)情報のようなオーバーヘッド情報、ならびにユーザデータを含むことができる。当業者が理解するであろうように、論理ブロックアドレッシングは、情報の論理セクタを識別するために、ホストによってしばしば使用されるスキーマである。例として、論理セクタは、例えば、256バイト、512バイト、または1,024バイト等のデータのいくつかのバイトを表す情報を記憶することができる。本明細書に使用される場合、ページとは、まとめてまたは機能グループとしてプログラムおよび/または読み出すことができる、例えば、いくつかのセル、またはその上に記憶されるデータの部分等のプログラムおよび/または読み出しのユニットを言う。例えば、メモリアレイの中には、メモリセルの1ブロックを成す、いくつかのページを含むことができるものがあり、ブロックは、ユニットとしてまとめて消去することができるメモリセルを含み、例えば、各物理ブロック内のセルは、実質的に同時的に消去することができる。いくつかのブロックは、メモリセルの1プレーン内に含むことができる。メモリセルのいくつかのプレーンは、1つのダイ上に含むことができる。1つのアレイは、いくつかのダイを含むことができる。制限ではなく、例として、128Gbの記憶装置は、ページあたり4314バイトのデータ、ブロックあたり128ページ、プレーンあたり2048ブロック、装置あたり16プレーンを含むことができる。しかしながら、実施形態はこの例に限定されない。
各記憶装置212−1、・・・、212−Nは、数ある中でも、例えば、フラッシュおよびDRAMアレイ等の多種多様な揮発性または不揮発性メモリアレイを含むことができる。1つ以上の実施形態において、記憶装置212−1、・・・、212−Nは、ソリッドステートメモリアレイとすることができる。記憶装置212−1、・・・、212−Nは、複数のユニットにグループ化することができる、いくつかのメモリセルを含むことができる。本明細書に使用される場合、ユニットは、メモリセルのページ、物理ブロック、プレーン、アレイ全体、または他のグループなどのような、いくつかのメモリセルを含むことができる。例えば、記憶装置は、メモリアレイとすることができ、各プレーンがいくつかの物理ブロックを含む、いくつかのプレーンを含むことができる。各物理ブロック内のメモリセルは、ユニットとしてまとめて消去することができ、例えば、各物理ブロック内のセルは、実質的に同時的に消去することができる。例えば、各物理ブロック内のセルは、単一の操作でまとめて消去することができる。物理ブロックは、いくつかのページを含むことができる。各ページ内のメモリセルは、ユニットとしてまとめてプログラムすることができ、例えば、各ページ内のセルは、実質的に同時的にプログラムすることができる。各ページ内のメモリセルもまた、ユニットとしてまとめて読み出すことができる。
メモリシステムの物理セクタは、論理セクタに対応することができ、エラー修正コード(ECC)情報、および論理ブロックアドレス(LBA)情報などのようなオーバーヘッド情報、ならびにユーザデータを含むことができる。当業者が理解するであろうように、論理ブロックアドレッシングは、情報の論理セクタを識別するために、ホストによってしばしば使用されるスキーマである。例として、各論理セクタは、他のバイト数の中でも、例えば、256バイト、512バイト、または1,024バイト等、データのいくつかのバイトを表す情報を記憶することができる。しかしながら、本開示の実施形態は、物理セクタ内に記憶される、または論理セクタに関連するデータの特定の数のバイトに限定されない。
図3は、本開示の1つ以上の実施形態に従う、いくつかの記憶装置に通信可能に結合されたメモリシステムコントローラの機能ブロック図である。図3に示されるように、メモリコントローラ310は、いくつかの、例えば、8つの記憶装置、例えば、312−1、・・・、312−Nに通信可能に結合することができる。1つ以上の実施形態において、記憶装置は、図2の212−1、・・・、212−Nに示される記憶装置とすることができる。各記憶装置、例えば、312−1、・・・、312−Nは、コントローラ310のチャネル、例えば、350−1、・・・、350−Nに対応する。本明細書に使用される場合、記憶装置は、前述のように、制御入力を共有する、いくつかのメモリセルを含むことができる。1つ以上の実施形態において、メモリコントローラ310は、SSDコントローラとすることができる。1つ以上の実施形態において、メモリコントローラ310は、図2に示されるコントローラ210に類似のものとすることができる。
各記憶装置、例えば、312−1、・・・、312−Nは、記憶装置212−1、・・・、212−Nに関して前述したように体系化することができ、個別のダイ上に製造することができるか、または積層ダイ上に製造することができる。各ダイは、いくつかのアレイのメモリセルを含むことができる。メモリコントローラ310は、フロントエンド部分344と、バックエンド部分346とを含むことができる。コントローラ310は、例えば、バックエンド部分346上に伝送されるコマンドの質を削減すること等によって、複数のバックエンドチャネルの間のいくつかのコマンドの分配を最適化するように、フロントエンド344内のコマンドおよびデータを処理することができる。コントローラ310はさらに、特定のチャネルに関して、メモリ動作の追加の効率を達成するように、バックエンドチャネルの各々の中のコマンドおよびデータを処理することができる。この様式において、コントローラ310は、記憶装置312−1、・・・、312−Nとの通信を管理する。
図3に示されるように、フロントエンド部分344は、タスクファイル315に通信可能に結合されるホストインターフェース314と、アプリケーション層320のFIFO等のホストバッファ322と、を含むことができる。例えば、ホストインターフェース314は、例えば、図2の208などの、SSD上の物理インターフェース、および例えば、図2の206などの、SATAインターフェースを通して、図2のホスト、例えば、202とともに、データストリーム等の入力および出力情報を通信するように構成することができる。1つ以上の実施形態に従い、コマンド(コマンドパラメータを含む)、例えば、入力情報のコマンド部分は、タスクファイル315に向けることができ、関連のペイロード、例えば、入力情報のデータ部分は、ホストFIFO322に向けることができる。
タスクファイル315は、1つの深いキューにすることができ、コマンドプロセッサおよびディスパッチャ318(以下、「コマンドディスパッチャ」と称する)を通して、フロントエンドダイレクトメモリアクセスモジュール(DMA)316と通信状態にすることができる。コマンドディスパッチャ318は、ホストから到着時にタスクファイル315内のコマンドを所定の条件(例えば、整合性チェック)に対してチェックすることができ、条件に対して検証された後、到着するコマンドを受容することができ、これをタスクファイル315から、フロントエンドDMA316および適切なバックエンドチャネルへ分配することができるように、構成される(例えば、ハードウェアを含む)。整合性チェックに対する以前の手法は、ファームウェアを使用して実行されてきたが、しかしながら、ハードウェア内でホストコマンドの整合性チェックを実行することはより速く、結果として、コマンドディスパッチャ318によるホストコマンド処理速度を上げることになる。
ホストFIFO322は、例えば、AESアルゴリズムを実装する暗号化エンジン等、いくつかの暗号化エンジンを有する暗号化装置324に通信可能に結合することができる。暗号化装置324は、特定のコマンドに関連するペイロードを処理、すなわち、暗号化し、ペイロードをフロントエンドDMA316へ伝送するように構成される場合がある。暗号化装置324の動作に関するさらなる詳細は、少なくとも1人の共通発明人を有し、代理人整理番号1002.0400001を有する、2008年12月12日に出願された、同一出願人による米国特許出願第12/333,822号「Parallel Encryption/Decryption」に見出すことができる。
フロントエンド部分344はまた、フロントエンドプロセッサ(FEP)328と、RAM、ROM等のメモリ336と、DMA332と、メインバッファ334と、を含むことができる、いくつかの他のプロセッサ330も有することができる。いくつかのプロセッサ330は、例えば、通信バスによって、フロントエンドDMA316に通信可能に結合することができる。
フロントエンドDMA316は、データのいくつかのワードを含有するために、関連レジスタを含む、DMAディスクリプタブロック(DDB)およびレジスタ340を含むことができる。フロントエンドDMA316はまた、そこに通信可能に結合されるいくつかのチャネル間を調整するための、アービタ342も含むことができる。暗号化装置324はまた、FEP328に通信可能に結合することができる。FEP328はまた、ホストFIFO322、およびフロントエンドDMA316にも通信可能に直接結合することができる。
フロントエンドDMA316は、コマンドディスパッチャ318に通信可能に結合することができる。コントローラ310は、いくつかの記憶装置、例えば、312−1、・・・、312−Nに対応する、いくつかのチャネル、例えば、1、・・・、Nを含むことができる。いくつかのチャネルといくつかの記憶装置との間の関係は、1対1の関係であるとして、本明細書に説明され、図面に示されるが、しかしながら、本開示の実施形態はそれに限定されず、他の構成が考えられる(例えば、複数の記憶装置が特定のチャネルに対応する、特定の記憶装置が複数のチャネルに対応する、またはこれらの組み合わせ)。フロントエンドDMA316およびコマンドディスパッチャ318は、例えば、バックエンドチャネル1(350−1)、・・・、バックエンドチャネルN(350−N)等、フロントエンド344回路をバックエンド回路346に有効に通信可能に結合する。本開示の1つ以上の実施形態に従い、コントローラ310は、8つのチャネル、例えば、1、・・・、8を含む。本開示の実施形態は、8つのチャネルを有するコントローラに限定されず、したがって、8つよりも多いまたは少ない数のチャネルを有するコントローラが実装されてもよい。
ここで、コントローラ310のバックエンド部346を参照すると、バックエンド部346は、いくつかのチャネル、例えば、350−1、・・・、350−Nを含む。各バックエンドチャネルは、チャネルプロセッサ、例えば、356−1、・・・、356−Nと、関連のチャネルDMA、例えば、354−1、・・・、354−Nとを含むことができ、これらの各々は、フロントエンドDMA316に通信可能に結合することができる。コマンドディスパッチャ318は、チャネルコマンドキュー、例えば、355−1、・・・、355−Nを通して、それぞれのチャネルプロセッサ、例えば、356−1、・・・、356−Nにコマンドを分配するように構成することができる。1つ以上の実施形態において、チャネルコマンドキュー、例えば、355−1、・・・、355−Nは、コマンドディスパッチャ318から受信されるいくつかのコマンドを保持することができる。
フロントエンドDMA316は、特定のコマンドに関連するデータを対応するチャネルDMA、例えば、354−1、・・・、354−Nに分配するように構成することができる。チャネルDMA、例えば、354−1、・・・、354−Nは、チャネルバッファ、例えば、358−1、・・・、358−Nに通信可能に結合することができ、これはさらに、エラー修正コード(ECC)およびメモリインターフェースモジュール、例えば、360−1、・・・、360−Nに通信可能に結合することができる。チャネルプロセッサ、例えば、356−1、・・・、356−Nもまた、ECC/メモリインターフェース、例えば、360−1、・・・、360−N、チャネルDMA、例えば、354−1、・・・、354−N、およびチャネルバッファ、例えば、358−1、・・・、358−Nに通信可能に結合することができる。
図3に示される実施形態は、各バックエンドチャネル350−1、・・・、350−Nをバックエンドチャネルプロセッサ、例えば、356−1、・・・、356−Nを含むものとして図説するが、本開示の実施形態はそれには限定されない。例えば、バックエンド部分346は、いくつかのバックエンドチャネル、例えば、350−1、・・・、350−N上で動作することができる、特定用途集積回路(ASIC)などのようなハードウェアロジックを含む、共有バックエンドプロセッサのような回路を含むことができる。したがって、共有バックエンドプロセッサは、専用チャネルプロセッサ、例えば、356−1、・・・、356−Nに対して説明された内容に類似して、コマンドディスパッチャ318およびフロントエンドDMA316と通信するように、通信可能に結合することができる。図3に示されるように、特定の記憶装置へのアクセスが対応するチャネルを通るように、特定の記憶装置、例えば、312−1、・・・、312−Nは、各チャネル、例えば、350−1、・・・、350−Nに対応する。
ホストインターフェース314は、コントローラ310とホストとの間の通信インターフェースとすることができる。1つ以上の実施形態において、ホストとコントローラとの間で通信される情報は、プログラム(例えば、書き込み)コマンド、読み出しコマンド、消去コマンド等のいくつかのコマンドを含むことができる。コマンドは、関連の記憶装置を操作するために使用することができる。
コマンドディスパッチャ318は、ホストインターフェース314およびアプリケーション層320を通して、ホスト、例えば、図2の202からいくつかのコマンドを受信することができる。コマンドディスパッチャ318は、受信したコマンドを保持することができ、例えば、350−1、・・・、350−Nなどのそれぞれのバックエンドチャネル、のうちのいくつかの、例えば、355−1、・・・、355−Nなどのそれぞれのチャネルコマンドキュー、およびフロントエンドDMA316にコマンドを分配することができる。
ペイロードは、コマンドに関連付けることができる。例えば、メモリに書き込むためのコマンドの場合、関連のペイロードは、書き込まれるデータにすることができる。特定のコマンドに関連するペイロードは、ホストFIFO322およびAES324を通して、フロントエンドDMA316で受信することができる。フロントエンドDMA316は、コマンドディスパッチャ318内の特定のコマンドに関連するデータを、チャネルDMA、例えば、354−1、・・・、354−Nに、または、対応するチャネルバッファ、例えば、358−1、・・・、358−Nに直接分配することができる。チャネルDMA、例えば、354−1、・・・、354−Nは、特定のコマンドに関連するデータを対応するチャネルバッファ、例えば、358−1、・・・、358−Nに分配することができる。1つ以上の実施形態において、チャネルバッファ、例えば、358−1、・・・、358−Nは、いくつかのコマンドに対応するデータを保持することができ、そのデータは、チャネルDMA、例えば、354−1、・・・、354−Nを通して、フロントエンドDMA316から受信される。
1つ以上の実施形態において、ホスト、例えば、図2の202から、コントローラ318のコマンドディスパッチャ318へ通信される情報は、数ある中でも、プログラムコマンド、読み出しコマンド、および消去コマンド等のいくつかのコマンドを含むことができる。プログラムコマンドは、メモリ、例えば、記憶装置312−1、・・・、312−Nにデータを書き込むために使用することができ、読み出しコマンドは、メモリからデータを読み出すために使用することができ、消去コマンドは、メモリの一部を消去するために使用される場合がある。コマンドは、例えば、プログラム、読み出し、消去等の操作の種類に加えて、メモリの操作に関与するメモリの開始位置、例えば、LBA、および数量、例えば、論理セクタの数を示すことができる。
1つ以上の実施形態において、LBAは、ホストの論理セクタに関連付けることができ、例えば、ホストの各論理セクタは、特定のLBAに関連付けることができる。例えば、LBA1000は、第1の論理セクタに関連付けることができ、LBA1001は、第2の論理セクタに関連付けることができ、LBA1002は、第3の論理セクタに関連付けることができる、等である。さらなる例として、LBA1000から開始するデータの16の論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドは、LBA1000から1015までに関連するメモリセルをプログラムすることができ、例えば、メモリセルは、LBA1000から1015までに関連するデータの論理セクタに対応する。このように、メモリアレイ内のデータの各論理セクタは、特定のLBAによって参照することができる。LBAは、バックエンド346によって、メモリの特定のブロックに関連する物理アドレス、例えば、メモリの特定ブロックの開始アドレスにマッピングすることができるか、または、LBAは、メモリのブロック内の特定のセクタ、例えば、メモリの特定のセクタの開始アドレスに関連する物理アドレスにマッピングすることができる。
図4は、本開示の1つ以上の実施形態に従って実装される、論理アドレスから物理アドレスへのマップを示す図である。アドレスマップ461は、記憶装置、例えば、312−1、・・・、312−NのLBAと物理ブロックアドレス(PBA)との間の相関関係を示す。例えば、LBA1(462−1)は、PBA A(464−1)に対応し、LBA2(462−2)は、PBA B(464−2)に対応し、LBA3(462−3)は、PBA C(464−3)に対応し、LBA4(462−4)は、PBA D(464−4)に対応し、・・・、LBA M(462−M)は、PBA M(464−M)に対応する。
[コマンドの受信]
本開示の1つ以上の実施形態に従い、フロントエンドDMA、例えば、図3の316は、コマンドキュー386を含むことができる。フロントエンドDMA、例えば、図3の316は、アプリケーション層320およびコマンドディスパッチャ318を通して、ホストから受信されるいくつかのコマンドを保持することができる。コマンドディスパッチャ318は、コマンドを処理し、コマンドをフロントエンドDMA316およびいくつかの適切なバックエンドチャネル、例えば、図3の350−1、・・・、350−Nに分配することができる。コマンドディスパッチャ、例えば、図3の318によって実行される操作は、ハードウェア、ソフトウェア、またはこれらの組み合わせに実装することができる。コマンドディスパッチャ、例えば、図3の318は、コマンドプロセッサ部と、ディスパッチャ部とを含むことができる。コマンドプロセッサ部およびディスパッチャ部は、ディスクリートハードウェアモジュールである場合がある、または、それぞれの機能が、制御回路によって統合様式で実装される場合がある。
ホストからのコマンド(以下、「ホストコマンド」と称する)を受信後、例えば、図3の318などの、コマンドディスパッチャのコマンドプロセッサ部は、ホストコマンドの整合性をチェックし、次いで、ホストコマンドをコマンドディスパッチャのディスパッチャ部に転送することができる。本開示の1つ以上の実施形態に従い、例えば、図3の318などの、コマンドディスパッチャのコマンドプロセッサ部は、他の整合性テストの中でも、受容可能なLBA範囲、および有効なタグに対してコマンドをチェックするように構成することができる。
ディスパッチャ部は、フロントエンドDMA316およびいくつかの適切なバックエンドチャネル、例えば、図3の350−1、・・・、350−Nにホストコマンドを分配し、アプリケーション層320にコマンドの完了ステータス、例えば、受容されて処理されたかどうかを示すことができ、これは、次のホストコマンドが送信される場合があることを示すためにホストに通信することができる。コマンドディスパッチャの機能性をハードウェアに実装すると、ホストコマンドの処理時間、例えば、ホストからのホストコマンドの受信後に、コマンドを処理し、コマンド完了ステータスのインジケータを通信(例えば、伝送または送信)するための時間を短縮することができる。ホストとメモリシステムとの間で通信されるホストコマンド間の処理時間を短縮することによって、メモリシステムの処理能力を上げることができる。
図5は、本開示の1つ以上の実施形態に従う、フロントエンドDMAのコマンドキューの機能ブロック図である。コマンドキュー586は、C個のコマンドを保持する能力を有し、例えば、コマンドキューは、いくつかのコマンドスロットを有することができ、各コマンドスロットは、コマンドを保持することが可能である。図5に示されるように、コマンドキュー586は、いくつかのコマンドスロット、例えば、コマンドスロット1(587−1)、コマンドスロット2(587−2)、・・・、コマンドスロットC(587−C)を含む。例えば、1つ以上の実施形態において、フロントエンドDMA、例えば、図3の316は、32のコマンドを記憶する能力を有するいくつかのコマンドキュー386を含むことができる。しかしながら、本開示の実施形態は、特定の数のコマンドスロット、コマンドキュー能力、またはコマンドディスパッチャによって同時に処理することが可能なコマンド数に限定されない。
1つ以上の実施形態において、フロントエンドDMA、例えば、図3の316は、最初の順序でホストからホストコマンドを受信することができる。いくつかのコマンドキュー386は、最初の順序、例えば、ホストから受信される順序で、いくつかのホストコマンドを保持することができる。コマンドキュー386は、1度に有限数のコマンドを保持することができる。したがって、コマンドキュー386がその容量に到達し、ホストからそれ以上ホストコマンドを受信することが一時的に不可能である時、コマンドディスパッチャは、ホストに信号を送信するように構成される。
1つ以上の実施形態において、コマンドディスパッチャ、例えば、図3の318は、タスクファイル315内に保持されるホストコマンドを処理することができ、フロントエンドDMA316内のコマンドキュー386にそれを分配することができる。コマンドディスパッチャ318は、次いで、コマンドキュー386からのホストコマンドを、例えば、ホストコマンドが実行される順序などのような、コマンドキュー386内で受信され、かつキューされる順序、ホストコマンドを分配できる順序、前述の順序の組み合わせ、または何らかの他の適切な順序スキームに従って、バックエンドチャネルに分配することができる。
1つ以上の実施形態において、コマンドディスパッチャのコマンドプロセッサ部は、コマンドキュー386内に保持されるコマンドが、例えば、複数のバックエンドチャネル間のいくつかのコマンドの分配を最適化するように、およびホストコマンドを個別にまたはグループとして修正するように、修正できるかどうかを判定するように構成される。分配を効率的に利用するようにコマンドを修正することは、書き込み動作のためにメモリへの同じネット変更を達成するために、または読み出し動作のためにメモリからの同じネット読み出しを達成するために、より少ない数のコマンドが送信され、それによって、数ある中でも、時間、処理するリソース、および/または通信帯域幅を節約するように、例えば、コマンドを隣接したメモリ位置に組み合わせること、ならびに/あるいは読み出されずに以降に上書きされたコマンドを削除することを含むことができる。本明細書に使用される場合、コマンドは、ホストコマンド、修正済みのホストコマンド、および他の種類のコマンドを含むことができる。コマンドプロセッサ部は、それぞれのチャネルにコマンドをより効率的に分配し、個々のコマンドをより効率的に作成し、メモリシステムの信頼性を向上し、メモリシステムの性能を向上し、メモリシステムのウェアを削減し、あるいはそれぞれのバックエンドチャネルの間でのコマンドの質、効率性、またはフローを向上するために、コマンドキュー386内のコマンドを分析し、修正することができる。例えば、コマンドプロセッサ部は、他のコマンド最適化技法の中でも、コマンドのグループ内のコマンドの順序を変更し、複数のコマンドを1つ以上のコマンドにグループ化することによってコマンドを組み合わせ(例えば、融合)、または特定のコマンドが実行されないことを判定すること(例えば、以降のコマンドが特定のメモリ位置のデータを修正すると判定することができる場合)ができる。1つ以上の実施形態において、フロントエンドプロセッサ(FEP)328はまた、これらのタスクを実行し、これらの判定を行うこともできる。
図6Aおよび図6Bは、本開示の1つ以上の実施形態に従う、フロントエンドDMAのコマンドキューの動作を示す図である。1つ以上の実施形態に従い、コマンドディスパッチャ、例えば、図3の318、および/またはFEP、例えば、図3の328は、フロントエンドDMA、例えば、図3の386のコマンドキュー内に保持されるコマンドが、修正されるかどうかを判定することができ、コマンドディスパッチャは、コントローラ、例えば、図3の344のフロントエンドのコマンド処理能力を促進させることを目的とする様式において、コマンドを修正するように構成することができる。
コマンド処理能力を向上させるために、1つ以上の実施形態においては、コマンドディスパッチャ318またはFEP328は、バックエンドチャネルがビジーである時(例えば、関連のチャネルバッファに空きがない時)のみに処理能力を向上させるように、ホストコマンドを処理する。関連のチャネルバッファ(例えば、それぞれ358−1、・・・、358−N)に空きがない時等、バックエンドチャネルがビジーである時、コントローラのフロントエンド部は、バックエンドチャネルへコマンドを分配することを阻止される場合がある。いくつかのバックエンドチャネルが有効で、追加のコマンドを受容することができる範囲では、コマンドは、コマンドディスパッチャによる処理のさらなる最適化を達成するために遅延されてはならない、というのは、コマンドキュー686A/Bを空にすることが遅延すると、コマンドキュー686A/B内のホストコマンドの完了を遅延することになり、このために、ホストからの追加のコマンドの転送を遅延することになり、コマンドのさらなる最適化は、他のバックエンドチャネルへのコマンドの分配の際に遅延を発生させることなく、それぞれのチャネルコマンドキュー(おそらくさらに高い効率性で)発生する場合があるからである。バックエンドチャネルの動作に関する追加の詳細は、少なくとも1人の共通発明人を有し、代理人整理番号1002.0430001を有する、同一出願人による米国特許出願番号第12/351,206号「Modifying Commands」に見出すことができる。
1つ以上の実施形態において、コマンドキュー686Aは、図3に関して検討されるコマンドキュー386に類似する可能性がある。コマンドキュー686Aは、いくつか、例えば、C個の、コマンドスロット、例えば、687−1A、687−2A、687−3A、687−4A、687−5A、687−6A、687−7A、687−8A、・・・、687−CAを含む。C個のコマンドスロットの各々は、ホストコマンド等のコマンドを一時的に記憶するように構成することができる。例えば、コマンドスロット687−1Aは、第1のコマンドを記憶することができ、コマンドスロット687−2Aは、第2のコマンドを記憶することができる、等である。
コマンドキュー686A内のコマンドを処理するフロントエンドコマンドディスパッチャに関して以下に説明され、図6Aに図説される例において、コマンドスロット1、例えば、687−1A、内のコマンドは、LBA1000から開始する16の論理セクタが関与する記憶装置内のメモリセルにデータをプログラムする、例えば、書き込む、ためのコマンドとすることができる。コマンドスロット2、例えば、687−2A、内のコマンドは、LBA2000から開始する4つの論理セクタが関与する記憶装置内のメモリセルからデータを読み出すためのコマンドとすることができる。コマンドスロット3、例えば、687−3A、内のコマンドは、LBA1000から開始するデータの48の論理セクタが関与する記憶装置内のメモリセル内にデータをプログラムするためのコマンドとすることができる。コマンドスロット4、例えば、687−4A、内のコマンドは、LBA2002から開始するデータの10の論理セクタが関与する記憶装置内のメモリセル内のデータを読み出すためのコマンドとすることができる。コマンドスロット5、例えば、687−5A、内のコマンドは、LBA2000から開始するデータの16の論理セクタが関与する記憶装置内のメモリセルを読み出すためのコマンドとすることができる。コマンドスロット6、例えば、687−6A、内のコマンドは、LBA1040から開始するデータの16の論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。コマンドスロット7、例えば、687−7A、内のコマンドは、LBA3000から開始するデータの2つの論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。コマンドスロット8、例えば、687−8A、内のコマンドは、LBA3002から開始するデータの2つの論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。
任意の特定の時間にコマンドキュー686A内に保持されるコマンドは、例えば、全てが同じチャネルに対応するように、1つの記憶装置に関連する場合があり、または、例えば、複数のチャネルに対応するように、いくつかの異なる記憶装置に関連する場合がある。コマンドが関連する特定のチャネルは、論理アドレスから物理アドレスのマップ、例えば、図4のアドレスマップ461、によってマッピングされるように、各チャネルに関して物理メモリの量および区画に従って、LBAから決定することができる。例えば、物理ブロックアドレスは、チャネル識別情報を含む場合がある。
コマンドキュー686A内に保持されるコマンドは、本開示の1つ以上の実施形態に従い修正することができる。例えば、コマンドスロット687−1、687−3、および687−6内のコマンドは、LBA1000から開始する56の論理セクタが関与するメモリセルをプログラムするための単一のコマンドに組み合わされる場合がある。このように、コマンドディスパッチャは、少なくとも2つのコマンドが同じ動作、例えば、書き込み動作、のためであるが、論理的に隣接したメモリ位置が関与していると判定するように構成することができる。コマンドディスパッチャは、少なくとも2つのコマンドを、論理的に隣接したメモリ位置の組み合わせが関与する単一のコマンドに組み合わせることによって、バックエンドチャネルへのコマンドの分配を最適化することができる。組み合わされたコマンドは、論理的に隣接したメモリ位置が単一のチャネルに関連する場合に最も効率的である。
図6Bは、図6Aに示されるコマンドが、本開示の1つ以上の実施形態に従い修正された後のチャネルコマンドキュー686Bの模式図を示す。図6Bに示されるように、チャネルコマンドスロット687−1B内に保持されるコマンド1は、LBA1000から開始するホストの56の論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドである。チャネルコマンドスロット687−2B内に保持されるコマンド2は、LBA2000から開始するホストの16の論理セクタに対応するアレイ内のメモリセルを読み出すためのコマンドで、チャネルコマンドスロット687−3B内に保持されるコマンド3は、LBA3000から開始するホストの4つの論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドである。
コマンドディスパッチャはまた、少なくとも2つのコマンドが同じ動作、例えば、書き込み動作、のためであるが、論理的に重複するメモリ位置、例えば、1つのコマンドに関与するメモリ位置、に関与することが、同じ種類の別のコマンドに関与するメモリ位置の少なくとも一部を含むことを判定するように構成することもできる。コマンドディスパッチャは、少なくとも2つのコマンドを、論理的に重複するメモリ位置の組み合わせが関与する単一のコマンドに組み合わせることによって、バックエンドチャネルへのコマンドの分配を最適化することができる。
他のコマンド修正が可能であってもよい。例えば、コマンドプロセッサ部が、特定のメモリ位置、例えば、LBA、に関与するコマンドキュー686A内の第1のコマンドが、特定のメモリ位置を上書きすることになる第2のコマンドの前に実行される場合があると判定することができる場合、その結果は一時的、例えば、第2のコマンドが実行される時まで、に過ぎないので、コマンドプロセッサ部は、第1のコマンドをその送信先チャネルに分配しない(例えば、消去する、無視する、実行しない)場合がある。
上述の例は、図6を参照するとさらに理解することができる。コマンドキュー686Aの1番上により近いコマンド、例えば、コマンドスロット687−1、は、コマンドキュー686Aの1番下により近いコマンド、例えば、コマンドスロット687−C、の前に実行されると想定する。コマンドスロット1、例えば、687−1A、およびコマンドスロット3、例えば、687−3A、内のコマンドのLBAはどちらも1000である。コマンド1およびコマンド3はどちらもプログラム動作である。コマンド3は、LBA1000から開始する48のセクタをプログラムするので、コマンド3は、コマンド1の結果としてLBA1000から開始する16のセクタ内にプログラムされる内容が何であれ完全に上書きすることになる。介在する読み出し動作、例えば、コマンド2が存在するが、しかしながら、コマンド2は、LBA1000から開始する16のセクタに関与しない。したがって、コマンド1は、分配される必要がなく(例えば、消去される、無視される、実行されない)、それによって、コマンド1をチャネルに転送する必要がないことによって時間を節約し、コマンドキュー686Aから、およびコマンドの複数のバックエンドチャネル間の分配、ならびに、コマンドキュー686Aが追加のホストコマンドを受容することができる速度を最適化する。その他、コマンドの順序を変更すること、組み合わせること、および削除することは、いくつかのバックエンドチャネルへのコマンドキュー686A内に示されるコマンドの分配を最適化、例えば、効率的に利用すること、を可能にする場合がある。
コマンドディスパッチャは、このように、コマンドキュー686A内のいくつかのコマンドによって達成される、メモリへのネット変更を判定し、この判定に基づいて、コマンドキュー686A内に保持されるいくつかのコマンドを修正するように構成することができ、それによって、複数のバックエンドチャネル間のいくつかのコマンドの分配を最適化する。コマンドディスパッチャが、任意の所与の時間にコマンドキュー686A内に保持されるコマンドから、それを実行しても、決定された、いくつかのコマンドによるメモリへのネット変更を変更しないと判定することができる時、コマンドディスパッチャは、コマンドキュー686Aからのいくつかのコマンドのうちの1つを分配しない(例えば、削除する、無視する、実行しない)ように構成することができる。例えば、コマンドディスパッチャは、コマンドキュー686A内の第1のコマンドに関連するメモリ範囲を修正して、コマンドキュー686A内の第2のコマンドのメモリ範囲の一部を含み、その後、いくつかのコマンドによって達成されることが決定されたメモリへのネット変更を変更することなく、コマンドキュー686Aからの第2のコマンドを削除するように、構成することができる。
上述のように、コマンドディスパッチャのディスパッチャ部は、例えば、ホストコマンド等のコマンドをいくつかの適切なチャネルに分配することができる。ディスパッチャ部は、例えば、特定のコマンドに関連するペイロードが単一のチャネルに関与する場合、特定のコマンドを適切なチャネルに分配することができる。複数のチャネルに関与するペイロードの場合、ディスパッチャ部は、コマンドに関連する特定の論理ブロックアドレスおよびセクタカウントに対応するそれぞれの記憶装置を動作させるためのそのチャネル特定のパラメータを含む、特定のコマンドを複数のチャネルに分配することによって、関連するコマンドの分配を管理することができる。コマンドに関連するペイロードは、次いで、解析することができ、その部分は、例えば、ラウンドロビン様式等、により、複数のチャネル間に分配される。読み出し動作の場合も同様に、読み出しコマンドに関連するペイロードは、複数のバックエンドチャネル間で分配される場合があり、対応する読み出しコマンドは、複数のチャネル間からデータを集めるために、関連するバックエンドチャネルに分配される場合がある。
各バックエンドチャネルは、例えば、R個の連続する論理ブロックアドレス(LBA)を処理することができるが、ホストコマンド(すなわち、ホストから受信されるコマンド)は、比較的多数のセクタに関与することができる。コマンドディスパッチャは、ラウンドロビン様式でバックエンドコマンドをいくつかのバックエンドチャネル間に分配することができ、各バックエンドコマンドがR個の連続するLBAに関与する点を除いては、各バックエンドコマンドはホストコマンドを模倣する。ラウンドロビン処理は、ホストコマンドのセクタの全てが、バックエンドチャネルの間でRの大きさの「かたまり」で分配されるまで、継続する。
さらなる説明のために、以下の数値例を検討するが、ここでは、ホストコマンドは、128セクタのデータを書き込むためで、4つのバックエンドチャネルが存在し、各バックエンドチャネルは、8つの連続するLBAを処理することができる。簡潔性のために、この例ではメモリ位置オフセットは無視される。128のセクタが関与するホスト書き込みコマンドを受信後、単一のホスト書き込みコマンドに応答して、複数のバックエンド書き込みコマンドが生成される。第1のバックエンド書き込みコマンドは、バックエンドチャネル1に向かう最初の8つのLBAに関与することができ、その後第2のバックエンド書き込みコマンドは、バックエンドチャネル2に向かう次の8つのLBAに関与することができ、第3のバックエンド書き込みコマンドは、バックエンドチャネル3に向かう次の8つのLBAに関与することができ、第4のバックエンド書き込みコマンドは、バックエンドチャネル4に向かう次の8つのLBAに関与することができる。このラウンドロビン処理は、第1のバックエンド書き込みコマンドがバックエンドチャネル1に向かう次の8つのLBAにも関与することによって、全ての128のセクタが4つのチャネルの間で分配されるまで、継続する。
この結果、各チャネルは、ホスト書き込みコマンドに対応するペイロードの受信した32のセクタを有することになるが、8つのLBA部分がまとめてつながれた集合体として組み立てられる。その後、それぞれの書き込みコマンドは、それぞれのバックエンドチャネルに分配されて、データの32のセクタに書き込む。このように、単一のホストコマンドは、結果としてN個のバックエンドコマンドとすることができ(N個のバックエンドチャネルが存在する場合)、各々は、ホストコマンド動作を模倣するが、ホストコマンドに関連するペイロードの約N分の1が関与する。ホストコマンドに関連するペイロードのそれぞれの部分に加えて、チャネルあたり1つのコマンドだけが分配される。本開示の実施形態は、ここに説明される数値例の量に限定されず、書き込みコマンドにも限定されない。当業者は、他のコマンド(例えば、読み出しコマンド)が、単一のホストコマンドからの結果として、複数のチャネルの間で同様に並列に分配される(例えば、いくつかのバックエンドチャネルからデータを読み出すために)場合があることを理解するであろう。
1つ以上の実施形態において、コマンドキュー686A内のコマンドは、部分的なページプログラム動作を削除する、または削減するように、いくつかのコマンドを単一のコマンドに込み合わせることによって、例えば、部分的なページをまとめて単一の動作に組み合わせることによって、修正することができる。部分的ページをプログラムすることに関与するウェアを削減することによって、メモリシステムの性能および信頼性を向上することに加えて、フロントエンドコマンドキュー686A内のコマンドを組み合わせると、複数のプログラムコマンドをより少ない数のコマンド、例えば、単一のコマンド、に削減することができるので、いくつかのコマンドの複数のバックエンドチャネル間の分配を最適化する。
部分的ページプログラム動作は、空きがあるメモリセルの新しいブロックを検出し、古いブロックからのページをデータバッファに読み出し、新しいデータをデータバッファに結合し、ページ全体(結合したデータを含む)を新しいブロック内のメモリの新しいページに書き込み、古いブロックの他のページ全てを新しいブロックへ移動し、それが消去されるものであることを示すために古いブロックにマークを付けることによって、実施される。いくつかのコマンドの複数のバックエンドチャネル間の分配を最適化する、コマンドを組み合わせるために使用されるアルゴリズムを説明するために、数例が提供されてきたが、本開示の実施形態は、提供される例に限定されず、本開示は、複数のバックエンドチャネル間で分配されるコマンドの数を削減するために、フロントエンドでコマンドを削除、またはコマンドの順序を変更することが関与するような、他の最適化技法を意図する。
1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキュー、例えば、図3の386と、を含む。コマンドキュー、例えば、図3の386は、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー、例えば、図3の386、内のいくつかのホストコマンドに少なくとも応答していくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
バックエンドコマンドの数は、ホストコマンドの数よりも少なく、または多くできる。例えば、1つ以上の実施形態において、回路は、単一のホストコマンドに応答して、複数のバックエンドチャネルの各々に対応するバックエンドコマンドを生成するように構成することができる。回路はさらに、バックエンドコマンドが実質的に並列に処理されるように、対応するバックエンドコマンドをそのそれぞれのバックエンドチャネルに分配するように構成することができる。1つ以上の実施形態において、回路は、複数のホストコマンドが実質的に同時に実行されるように、異なる複数のバックエンドチャネルの間で複数のホストコマンドを分配するように構成することができる。
いくつかのバックエンドコマンドを生成することは、いくつかのホストコマンドのうちの少なくとも1つを修正することと、いくつかのホストコマンドのうちの少なくとも別の1つを消去することとの組み合わせを含むことができる。ダイレクトメモリアクセスモジュール(DMA)は、生成されるいくつかのバックエンドコマンドに対応するホストコマンドに関連するデータを分配するように構成することができる。
それぞれのバックエンドコマンドの完了時、回路は、任意の他の複数のバックエンドコマンドの実行の完了に関係なく、複数のバックエンドコマンドのうちの特定の1つの完了時に、複数のバックエンドコマンドのうちの特定の1つの実行の結果をホストに通信するように構成することができる。
図7は、本開示の1つ以上の実施形態に従う、いくつかのバックエンドチャネルの間でコマンドを分配するための流れ図である。コマンド分配は、766で開始する。767で、分配されたコマンドの開始LBAは、コマンドLBAとLBAオフセットとの和に設定することができる。開始チャネルは、開始チャネルのセクタカウント、終了チャネル、終了チャネルのセクタカウント、残りのセクタカウント、およびチャネル開始LBAに加えて、決定、例えば、計算、することができる。768で、例えば、コマンドが最初に分配される、チャネル番号を開始チャネルに設定することができる。次いで769で、開始LBAおよびセクタカウントを、現在のチャネルに対して決定、すなわち、計算、することができ、ステータスビット、例えば、involved_ch、に関与するチャネルは、特定のチャネルが特定のコマンドに関与することを示すように、特定の現在のチャネル番号に対してアサートすることができる。
次に770で、現在のチャネルの開始LBAおよびセクタカウントは、現在のチャネルのインボックスにロードされる(チャネルインボックスは以下にさらに説明される)。現在のチャネルがエンドチャネルであるかどうか(767を参照)は、771で判定することができる。現在のチャネルがエンドチャネルでない場合、分配プロセスは、773で次のチャネルに移動し、例えば、現在のチャネル番号はインクリメントすることができ、プロセスは、769に継続する(現在のチャネルの開始LBAおよびセクタカウントは現在のチャネルのインボックスにロードされる)。現在のチャネルがエンドチャネルである場合、772で、関与する開始チャネル、チャネルセクタカウントおよび関与するチャネルは、DMAディスクリプタブロック(DDB、以下に詳細を説明)にロードされ、プロセスは、766で次のコマンド分配を開始するように戻る。
図8は、本開示の1つ以上の実施形態に従う、フロントエンドといくつかのチャネルとの間のインターフェースの一実施形態を示す機能ブロック図である。図8は、メモリコントローラのバックエンド部846に存在するいくつかのチャネル、例えば、850−1、・・・、850−Nを示し、これらは、図3に示されるチャネル350−1、・・・、350−Nに類似する場合があるが、しかしながら、追加の構造がより詳細に示されてもよいように、図3に示されるチャネル詳細のうちの一部は、図8では明確化のために省略される。図8はまた、メモリコントローラのフロントエンド部844に配置されるフロントエンドDMA816およびフロントエンドプロセッサ828(FEP)を示す。フロントエンドDMA816は、図3のフロントエンドDMA316に類似する場合があり、FEP828は、図3のFEP328に類似する場合がある。フロントエンドDMA816およびFEP828はそれぞれ、図8においては、以下にさらに詳細を説明する様式において、いくつかのチャネル、例えば、850−1、・・・、850−Nの各々に通信可能に結合されるとして示される。
各チャネルは、チャネルプロセッサ、例えば、856−1、・・・、856−N、チャネルインボックス、例えば、874−1、・・・、874−N、チャネルインレジスタ、例えば876−1、・・・、876−N、およびチャネルアウトレジスタ、例えば、878−1、・・・、878−Nを含む。チャネルアウトレジスタおよびインボックスの各々は、FEP828に情報を提供するように、通信可能に結合される。チャネルインボックスおよびインレジスタの各々は、フロントエンドDMA816から情報を受信するように、通信可能に結合される。
[フロントエンドダイレクトメモリアクセス(DMA)]
図9Aは、本開示の1つ以上の実施形態に従って実装される、ダイレクトメモリアクセスモジュール(DMA)ディスクリプタブロックの機能ブロック図である。DDBは、ホストとバックエンドチャネルとの間のデータフローを制御し、コマンドキュー、例えば、図3の386、から、多様なバックエンドチャネルへのコマンドの分配の効率を向上し、それによって、コマンドキュー、例えば、図3の386、を通してコマンドの速度を上げるために、例えば、コマンドキュー、例えば、図3の386、内に保持されるコマンドに関して行う知的意思決定を使用する等、システムの処理能力を最適化するように機能する。
対応するチャネルを通してアクセスされるいくつかの記憶装置を有するメモリシステム、例えば、ソリッドステートドライブ、の場合、書き込みコマンドに関連するペイロードは、いくつかのチャネルへプログラムすることができ、読み出しコマンドに関連するペイロードは、いくつかのチャネルから組み立てることができる。複数のチャネルが関与する特定のコマンドに関連するペイロードを管理する際、DMAは、適当なチャネルの間でデータを分配する。例えば、DMAは、書き込みコマンドに関連するペイロードをいくつかのチャネルへ分配することと、読み出しコマンドに関連するペイロードをいくつかのチャネルから組み立てることと、を管理する。DMAはまた、ホストとバックエンドチャネルとの間で複数のコマンドに関連するペイロードを管理することによって、並列を含む、複数のコマンド実行を促進する。
DDB、例えば、図3の340は、コマンドが発行される時に、N個のチャネルへ、およびN個チャネルからのペイロードの分配を調整する。例えば、書き込みまたは読み出し動作の間、N個のチャネルのうちのいくつかを使用することができる。DDBは、DDB TAGを各ホストコマンドのアドレスとすることができる場合、コマンドディスパッチャ、例えば図3の318、またはフロントエンドプロセッサ(FEP)、例えば図3の328、によって、最初に更新、例えば、ロード、することができる。DDBは、FEPまたはコマンドディスパッチャのいずれかによって、設定することができる。「エラーなし」状況の間、I/OプロセッサのFEPによるさらなる管理は必要としない可能性がある。
図9Aは、いくつかのTAGアドレスエントリ、例えば、DDB1、・・・、DDB32、を有するDDB988の内容を示す。各TAGアドレスエントリは、データ転送に関連するセットアップ990、ステータス992、およびコマンド情報994に関連するパラメータを含有する。本開示の1つ以上の実施形態に従い、TAGアドレッシングは、シリアルアドバンストテクノロジーアタッチメント(SATA)規格に従って実装されてもよい。このように、DDBエントリは、他の情報の中でも、アクセスするチャネル、特定のチャネルに対して転送するセクタの数、および関連するステータスを決定することができる。DDBは、例えば、複数のコマンドがDDBで同時に管理される代わりに、1度に1つのレガシーコマンドだけがDDBを通して処理される等、複数のコマンドキューをサポートしないレガシーコマンドに対してはDDB1だけを使用することによって、後方互換性を有することができる。
DDB988内の各エントリは、割り当てまたは暗示のいずれかとすることができる、TAGを有する。1つ以上の実施形態において、TAGは、例えば、DDB内のエントリの物理的位置等のエントリ番号と同じにすることができ、このために、実際のTAG番号フィールドは各エントリとともに記憶される必要がないように、DDB内のエントリの物理的位置は、TAGを暗示する。コントローラがホストコマンドを受信し、かつホストコマンドに対応するDDBに対して新しいエントリを追加すると、各エントリがTAGに関連付けられ、かつ新しいエントリに関連するTAGを出力する。コントローラは、前述のようにコマンドキュー、例えば図3の386、を維持し、新しいエントリに関連するTAGを受信し、TAGに対応する新しいコマンドキューエントリを追加し、範囲動作リクエストを出力する。
図9Bは、本開示の1つ以上の実施形態に従って実装される、図9Aに図示されるDMAディスクリプタブロック(DDB)の中のエントリを示す。図9Bは、タイプ別のDDBエントリ(例えば、セットアップ、ステータス、情報)、記述、サイズ(例えば、ビット数)、エントリ内の位置(例えば、ビット位置)のデータフィールドを示す。
各DDBエントリの次のカウントデータフィールド990A、例えば、ビット位置93〜96にある「next_cnt」は、1つの所与のチャネルに対して転送するデータのセクタ数を表す。次のカウントは、開始チャネルの第1の転送カウントを指定するように、コマンドディスパッチャまたはFEPによって初期化することができる。次のカウントは、その前のチャネルの転送カウントを指定するように、ハードウェアによって更新することができる。更新は、現在のチャネルがその転送を完了後であるが、転送全体が完了する前に、発生する。転送するセクタ全体の残りの数が、チャネルが転送可能なセクタの最大数よりも大きい場合、例えば、カウントがページあたりのセクタ数とプレーン数の積よりも大きい場合、次のカウントには、その最大数のセクタをロードすることができる。そうでなければ、次のカウントには、転送するセクタ全体の残りの数をロードすることができる。
カウントデータフィールド990B、例えば、ビット位置80〜95にある「cnt」、は、特定のコマンドに対する全体的な転送カウントとすることができる。カウントは、コマンドディスパッチャまたはFEPによって、合計転送カウントで初期化することができ、転送するセクタの残りの数を示すように、ハードウェアによって更新することができる。1つ以上の実施形態に従い、ビット位置79は使用されず、例えば、今後の使用のために保留される。
転送完了データフィールド990D、例えば、位置78にある「XC」ビットは、DMA転送が完了したことを示す。すなわち、データ段階は完了されている場合があるが、コマンド完了ステータスのインジケータが送信されていない場合がある。このビットは、チャネルステータス(「ch_status」)が特定の値に等しくなると、ホストコマンドが完了したことを示すように、ハードウェアによって設定することができる。ハードウェアは次いで、コマンド完了ステータスのインジケータの送信をスケジュールする。インジケータがホストへ問題なく送信されると、ハードウェアは、後述するように、別のホストコマンドを受信する可能性が生じる前に、有効なデータフィールド、例えば、「V」フラグ、をクリアするように動作する。
ホストエラーデータフィールド992A、例えば、位置77にある「HE」ビット、は、エラーが発生したことを示すために使用することができる。このビットは、ホスト転送中にエラーが発生した場合、I/Oプロセッサまたはホストインターフェース、例えば、図3の314によって設定することができる。フラッシュエラーデータフィールド992B、例えば、位置76にある「FE」ビット、は、記憶装置、例えば、NANDフラッシュ、のエラーが発生したことを示すために使用することができる。
有効データフィールド992C、例えば、位置75にある「V」ビットは、有効なエントリを示すために使用することができる。このビットは、コマンドディスパッチャまたはFEPによって、ハードウェアがDDBエントリへのアクセスを有することを示すために、例えば、V=1に、設定することができ、コマンドディスパッチャまたはFEPは、そのエントリを上書きしない場合がある。このビットは、ホストコマンドが完了し、インジケータのホストへの送信が成功した後に、ハードウェアによってクリアすることができるか、または、DDB内のエントリは、ホストから新しいコマンドを受信するために使用可能であることを示すために、コマンド、例えば、V=0、を処理中にエラーがある時にFEPによってクリアすることができる。
次のチャネルデータフィールド992D、例えば、ビット位置72〜74にある「nxt_ch」、は、転送が発生するチャネルを参照する。このフィールドは、転送のための開始チャネルを指定するために、コマンドディスパッチャまたはFEPによって初期化することができ、転送のための次のチャネルを指定するために、ハードウェアによって更新することができる。更新は、その前のチャネルが、チャネルが処理することができる連続したLBAの全ての転送を終了すると、発生する。特定のコマンドに対するセクタカウントは、前述のように、ラウンドロビン分配の一部としてチャネルへの追加のラウンドを含む、特定のコマンドに対して転送するためのセクタが残っている場合があるので、ゼロに到達しない場合がある。1つのチャネルの場合、例えば、ペイロードが分配されるラウンドロビンシーケンスの最後のチャネル等、特定のコマンドに対して転送するためのセクタが残っていない時、特定のコマンドに対するセクタカウントはゼロに到達する。
アクティブチャネルデータフィールド992E,例えば、ビット位置64〜71にある「active_ch」は、各ビットがそのそれぞれのチャネルの完了ステータスを表す場合、例えば、8チャネルに対応する8ビット等のNビット信号にすることができる。転送が発生する前に、各関与チャネルに対応するビットを設定することができる。次いで、各ビットは、そのチャネルに対するコマンドが完了するとリセットすることができる。
コマンド情報データフィールド994、例えば、ビット位置0〜63にある「CMD_info」、は、コマンド、優先ビット、FUAビット、LBA、およびセクタカウントを含む、フレーム情報構造(FIS)レジスタからの4つのワードを備えることができる。
例えば、1ビット等の、特定のデータフィールドサイズおよびデータフィールド位置を上記の例で説明したが、本開示の実施形態は、それぞれのそのような説明されたフィールド、または特定のデータフィールドサイズまたは位置に限定されず、追加または代替のフィールドを含むことができる。コマンドディスパッチャがDDBを更新する時、入力信号、例えば、「xfer_TAG」、は、DDBのアドレスポインタになり、更新信号、例えば、「update_ddb_en」、は、書き込み可能になる。
アービタ、例えば、図3の342、は、特定の時間にアクセスすることができるチャネルを決定する、ラウンドロビンアービタとすることができる。アービタは、次に使用可能なチャネルを検索する。アービタは、チャネルをステップスルーし、選択された使用可能なチャネル番号を特定のDDBエントリ内の次のチャネルに一致させようと試みる。使用可能なチャネルがDDBエントリに一致しない場合、アービタは、選択された使用可能なチャネル番号と特定のDDBエントリ内の次のチャネルとの間の一致を発見することができるまで、必要な場合はラウンドロビン様式で反復を継続する。一致が発見されると、アービタは、通信プロトコルを起動して、転送を開始する。転送の完了時、完了プロトコルの信号を送信することができ、DDBエントリ内のチャネル情報が更新され、アービタは次に使用可能なチャネルを検索する。
特定のTAGエントリのNビットのアクティブチャネルフィールド992Eの各々、例えば、レジスタ、は、それぞれN個のチャネルのうちの1つに対応する。チャネルが特定のホストコマンドに使用可能であると見做されると、そのチャネルに関連するビットを設定することができる。チャネルが所与のホストコマンドに対する特定のチャネルへの転送を完了すると、チャネルのコマンド完了ステータスを設定することができ、さらに、DDBエントリのアクティブチャネルフィールド内のそれぞれのビットをリセットすることができる。アクティブチャネルの全ビットがリセットされると、ホストコマンドの「完了」ステータスのインジケータをアプリケーション層に発行することができる。アプリケーション層は、次いで、ホストコマンドの「完了」ステータスのインジケータをホストへ送信することができる。エントリの有効ビットは、ホストコマンドが完了され、「完了」ステータスのインジケータが正常にホストへの送信された後に、ハードウェアによってクリアすることができるか(例えば、V=0)、または、例えば、DDB内のエントリが、ホストから新しいコマンドを受信するために利用可能であることを示すようにコマンドを処理中にエラーが存在する時、FEPによってクリアすることができる。
コマンド完了は、リクエストされた転送が完了したことを示すバックエンドチャネルに基づく。本開示の1つ以上の実施形態に従い、複数のコマンドに関連する読み出し動作が複数のチャネルにわたって同時に実行されている間、DMAは、コマンドがホストから受信された順序に関係なく、データが準備できしだい、任意のチャネルからのデータをホストへ伝送する。メモリシステムのデータ処理能力を、例えば、記憶装置から読み出されたデータをホストへ返信する等、コマンドが受信または起動された順序ではなく、コマンドが各バックエンドチャネルによって少なくとも部分的に完了された順序で、コマンドを実行することによって大幅に向上することができる。
例えば、第1の読み出しコマンドは、メモリシステムによってホストから受信することができ、メモリシステムによる実行を開始することができ、その後に、第2の読み出しコマンドがメモリシステムによってホストから受信され、メモリシステムによりその実行が開始される。しかしながら、第2の読み出しコマンドが最初に完了する可能性がある。1つ以上の実施形態に従って、そのデータを最初にホストへ返すことができるように、第1の読み出しコマンドの完了を待機するのではなく、第1の読み出しコマンドから得られるデータをホストに返すことができる前に、第2の読み出しコマンドから得られるデータをホストへ返すことができる。
別の例では、第1の読み出しコマンドは、メモリシステムによってホストから受信することができ、その後に、第2の読み出しコマンドが、メモリシステムによってホストから受信される。しかしながら、効率性のために、メモリシステムは、例えば、前述の様式で、コマンドの順序を変更し、第1の読み出しコマンドを実行する前に、第2の読み出しコマンドを実行することができ、結果として、第2の読み出しコマンドは、第1の読み出しコマンドの前に完了されるようになる。1つ以上の実施形態に従って、第1の読み出しコマンドの完了を待機するのではなく、第2の読み出しコマンドから得られるデータは、完了と同時にホストへ返すことができ、これは、第1の読み出しコマンドから得られるデータをホストへ返すことができる前にすることができる。
複数の記憶装置を操作する際、その一部がそれらを相互に関連させる一定の逐次的順序を有する、単一のコマンドに関連するペイロードは、例えば、ペイロードの第1の部分は第1の記憶装置に記憶される場合があり、ペイロードの第2の部分は第2の記憶装置に記憶される場合がある等、異なるチャネルにわたって分配することができる。したがって、例えば、読み出しコマンドからの結果等、データの部分は、逐次的順序から外れて、異なる記憶装置(および関連のチャネル)から、コントローラのフロントエンドへ返される場合があり、例えば、第1の部分が第1の記憶装置から取り出すことができる前に、第2の部分が第2の記憶装置から取り出される場合がある。1つ以上の実施形態に従い、DMBバッファオフセットをサポートすることができる時、該部分は、逐次的順序から外れて、該部分が関係する逐次的順序ではなく、コマンドがそれぞれのバックエンドチャネルによって完了される順序で、ホストへ返信することができる。
換言すれば、単一のコマンドに関連するペイロードのいくつかの部分は、ソリッドステートドライブのいくつかの記憶装置の間に記憶され、例えば、常駐する。ペイロードの部分は、ペイロードを形成する特定の順序によって相互に関係する。単一の読み出しコマンドは、いくつかの記憶装置の中からペイロードを組み立てるために使用することができ、読み出しコマンドは、特定のメモリ位置に関して適切にカスタマイズされ、いくつかの記憶装置の各々からペイロードのそれぞれの部分を受信するために、いくつかの記憶装置に対応するいくつかのチャネルの各々に分配される。1つ以上の実施形態に従い、該部分はメモリシステムコントローラによって受信され、ペイロードの部分はペイロードを形成する際の相互に関係する特定の順序とは異なる可能性がある順序で、受信されるにつれてホストへ送信される。換言すると、ペイロードの部分は、ホストへ送信される前にペイロードに再び組み立てられることはなく、その代わりに、ペイロードの部分は、いくつかの記憶装置の中からコントローラに受信されるにつれて送信される。
本開示の1つ以上の実施形態に従い、複数のコマンド、例えば、書き込みコマンド、が、複数のチャネルにわたって同時に実行される動作中、例えば、対応する複数の記憶装置に対して、DMAは、コマンドが完了すると、特定のコマンドに対するコマンド完了ステータスのインジケータをホストに送信することができ、これによって、ホストは次の保留中コマンドを送信することが可能になる。1つ以上の実施形態において、複数のチャネルは非同期チャネルであり、コマンド、例えば、ホストコマンド、の実行は、コマンドがホストから受信された順序(ホストから受信された他のコマンドに対して)と同じ順序で発生しない場合がある。
例えば、第1のコマンドは、メモリシステムによってホストから受信することができ、その実行はメモリシステムによって開始され、その後に、第2のコマンドがメモリシステムによってホストから受信され、その実行はメモリシステムによって開始される。しかしながら、第2の読み出しコマンドは、最初に、複数のバックエンドチャネルのうちのいくつかによって完了することができる。1つ以上の実施形態に従い、第2のコマンドの完了ステータスのインジケータがホストに送信できる前に、第1のコマンドの完了ステータスのインジケータがホストに送信できるように、第1のコマンドの完了を待機するのではなく、第1のコマンドの完了ステータスのインジケータがホストに送信される前に、第2のコマンドの完了ステータスのインジケータをホストに送信することができる。
別の例では、例えば、メモリシステムの、メモリコントローラは、ホストから第1のコマンドを受信した後に、ホストから第2のコマンドをメモリコントローラによって受信する。しかしながら、メモリシステムは、例えば、前述の様式で、コマンドの順序を変更し、第1のコマンドを実行する前に、第2のコマンドを実行し、その結果第2のコマンドは、第1のコマンドの前に完了されることになる。1つ以上の実施形態に従い、第2のコマンドの完了ステータスのインジケータがホストに送信できる前に、第1のコマンドの完了ステータスのインジケータがホストに送信できるように、第1のコマンドの完了を待機するのではなく、第1のコマンドの完了ステータスのインジケータがホストに送信される前に、第2のコマンドの完了ステータスのインジケータをホストに送信することができる。
[結論]
本開示は、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法を含む。1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキュー、例えば、図3の386、と、を含む。コマンドキュー386は、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー386内のいくつかのホストコマンドに少なくとも応答して、いくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
本開示はまた、メモリコントローラのための方法および装置も含む。1つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるフロントエンドコマンドディスパッチャと、を含む。コマンドディスパッチャは、いくつかのコマンドをバッファするように構成される、コマンドキュー、例えば図3の386、に通信可能に結合される。コマンドディスパッチャは、いくつかのコマンドによって達成される、メモリへのネット変更を判定し、複数のバックエンドチャネルの間でいくつかのコマンドの分配を最適化するために、決定に基づいて、いくつかのコマンドのうちの少なくとも1つを修正するように構成することができる。
本開示の発明を実施するための形態においては、本明細書の一部を形成し、その中で、本開示の1つ以上の実施形態がどのように実践されてもよいかを例として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用されてもよいこと、および本開示の範囲から逸脱することなく、工程的、電気的、または構造的変更が行われてもよいことが理解される。
本明細書に使用される場合、指示子「N」、「M」、および「C」は、特に図面の参照番号に関して、特定の特徴の数を示すので、指示は、本開示の1つ以上の実施形態に含むことができる。理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対スケールは、本開示の実施形態を図示することを目的とし、限定の意味で解釈されてはならない。
第1の要素が別の要素「に接続」または「と結合」されると言及される時、該要素は2つの要素のうちのそれに物理的に付設されることを意図することが理解される。対照的に、要素が「通信可能に結合」されると言及される時、ハードワイヤまたはワイヤレス信号経路によることを含むがこれらに限定されず、要素は相互に通信状態にある。
要素が別の要素「の上にある」、「に接続される」、または「と結合される」と言及される時、それは、もう一方の要素、または層の直接その上にあることができる、それらに接続できる、またはそれらと結合できること、あるいは介在要素または層が存在する場合があることが理解される。対照的に、要素が別の要素または層「の直接その上に」「に直接接続される」または「と直接結合される」されると言及される場合、介在要素または層は存在しない。本明細書に使用される場合、用語「および/または」は、いくつかの関連列挙項目のうちのいずれかのおよび全ての組み合わせを含む。
第1、第2、等の用語は、本明細書において、多様な要素、構成要素、領域、層、および区分を記述するために使用される場合があるが、これらの要素、構成要素、領域、配線、層、および区分はこれらの用語によって限定されないことが理解される。これらの用語は、1つの要素、構成要素、領域、配線、層、または区分を別の領域、層、または区分から区別するために使用されるに過ぎない。このため、以下の第1の要素、構成要素、領域、配線、層、または区分は、本開示の教示から逸脱することなく、第2の要素、構成要素、領域、配線、層、または区分と称することができる可能性がある。
「下方に」、「下に」、「下部の」、「上に」、「上方に」等の空間的に相対的な用語は、本明細書において、空間内の絶対的配向ではなく、図面に示されるように、ある要素または特徴の別の要素または特徴に対する関係を説明するために、説明の容易化のために使用される場合がある。空間的に相対的な用語は、図面に表される配向に加えて、使用中または動作中の装置の異なる配向を包含することを意図することが理解される。例えば、図中の装置が反対向きである場合、他の要素または特徴の「下方に」または「下に」として説明される要素は、他の要素または特徴の「上方に」に配向されるようになる。このため、例の用語「下」は、上および下の配向両方に及ぶことができる。装置はそれ以外の配向(90度回転または他の配向)であってもよく、本明細書に使用される空間的に相対的な説明はそのように解釈される場合がある。
本明細書に使用される用語は、特定の実施形態を説明することのみを目的とし、本開示を限定することを意図しない。本明細書に使用される場合、単数形の「1つの(a)、(an)」および「その(the)」は、文脈がそうでないことを明確に示さない限り、複数形も含むことを意図する。さらに、本明細書において使用される場合、「含む、備える(comprises、comprising)」という用語は、記載の特徴、個数、ステップ、動作、要素、または構成要素の存在を指定するが、いくつかの他の特徴、個数、ステップ、動作、要素、構成要素、またはこれらのグループの存在または追加を除外しない。
別途定義されない限り、本明細書に使用される全ての用語(技術用語および科学用語を含む)は、本開示が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。さらに、一般的に使用される辞書で定義されるような用語は、関連技術および本開示の文脈においてそれらの意味と一貫する意味を有するとして解釈されるべきであり、本明細書においてそのように明示的に定義されない限り、理想化されたまたは過度に正式な意味に解釈されてはならないことが理解される。
本開示の実施形態は、本明細書において、本開示の理想的な実施形態の模式的説明である、機能ブロック図説を参照して説明される。このため、結果として、例えば、製造技法および許容範囲の図説の形状からの変形が予想される。このため、本開示の実施形態は、本明細書に図説される領域の特定の形状に限定されるものとして解釈されるべきではなく、例えば、製造に起因する、形状における偏差を含むものである。例えば、平坦であると図説または説明された領域は、一般的に、粗い、または非直線的特徴を有する場合がある。さらに、図説される鋭い角度は、丸みを帯びて表される場合がある。このため、図面に図説される領域は事実上模式図であり、それらの形状および相対的大きさ、厚さ等は、領域の正確な形状/大きさ/厚さを図説することを意図するものではなく、本開示の範囲を限定することを意図するものではない。
本明細書には具体的な実施形態が図示および説明されているが、当業者は、同じ結果を達成するように考案された配設を、示された具体的な実施形態に代えることができることを理解するであろう。本開示は、本開示の1つ以上の実施形態の適応または変形を包含することを意図する。上記の説明は、制限の様式ではなく、図説の様式において行われたものである。上記の実施形態の組み合わせ、および本明細書に具体的に説明されない他の実施形態は、上記の説明を検討することによって、当業者には明らかとなるであろう。本開示の1つ以上の実施形態の範囲は、上記の構造および方法が使用される他の用途を含む。したがって、本開示の1つ以上の実施形態の範囲は、添付の特許請求の範囲に加えて、このような特許請求の範囲が権利を与えられる均等物の完全な範囲を参照して決定されなければならない。
前述の発明を実施するための形態では、開示を簡素化するために、いくつかの特徴が単一の実施形態にまとめられている。この開示方法は、本開示の開示される実施形態が、各特許請求の範囲に明記されるよりも多くの特徴を有さねばならないという意図を反映するものとして解釈されるべきではない。そうではなく、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態の全ての特徴に満たない中に存する。したがって、以下の特許請求の範囲は、本明細書において発明を実施するための形態に組み入れられ、各特許請求の範囲は個別の実施形態として独立する。

Claims (68)

  1. メモリコントローラであって、
    複数のバックエンドチャネルと、
    前記複数のバックエンドチャネルに通信可能に結合されるコマンドキューであって、ホストによって通信されるホストコマンドを保持するように構成される、コマンドキューと、
    前記コマンドキュー内の前記ホストコマンドのうちのいくつかに少なくとも応答していくつかのバックエンドコマンドを生成し、
    前記いくつかのバックエンドコマンドを前記複数のバックエンドチャネルのうちのいくつかに分配するように構成される、
    回路と、を備える、メモリコントローラ。
  2. バックエンドコマンドの数は、前記ホストコマンドの数よりも少ない、請求項1に記載のメモリコントローラ。
  3. バックエンドコマンドの数は、前記ホストコマンドの数よりも多い、請求項1に記載のメモリコントローラ。
  4. 前記回路は、
    単一のホストコマンドに応答して、前記複数のバックエンドチャネルの各々に対応するそれぞれのバックエンドコマンドを生成し、
    前記バックエンドコマンドが実質的に並列に処理されるように、前記それぞれのバックエンドコマンドをその対応するバックエンドチャネルに分配するように構成される、請求項3に記載のメモリコントローラ。
  5. 前記回路は、前記複数のバックエンドコマンドのうちの特定の1つの実行からの結果を、前記複数のバックエンドコマンドのうちの前記特定の1つの完了時に、前記複数のバックエンドコマンドのうちの任意の他の実行の完了にも関係なく、前記ホストに通信するように構成される、請求項4に記載のメモリコントローラ。
  6. 前記回路は、複数のホストコマンドが実質的に同時に実行されるように、前記複数のホストコマンドを異なる複数のバックエンドチャネルの間で分配するように構成される、請求項1から5のうちのいずれか1項に記載のメモリコントローラ。
  7. 前記いくつかのバックエンドコマンドを生成することは、前記いくつかのホストコマンドのうちの少なくとも1つを修正することと、前記いくつかのホストコマンドのうちの少なくとも別の1つを削除することとの組み合わせを含む、請求項1から5のうちのいずれか1項に記載のメモリコントローラ。
  8. ダイレクトメモリアクセスモジュール(DMA)は、生成される前記いくつかのバックエンドコマンドに対応するホストコマンドに関連するデータを分配するように構成される、請求項1から5のうちのいずれか1項に記載のメモリコントローラ。
  9. 前記回路は、前記複数のバックエンドチャネルの間の前記コマンドの分配を最適化するように、ホストコマンドを修正するように構成されるコマンドプロセッサ部と、前記修正されたコマンドを前記複数のバックエンドチャネルの間で分配するように構成されるディスパッチャ部とを有する、コマンドディスパッチャである、請求項1から5のうちのいずれか1項に記載のメモリコントローラ。
  10. 前記回路は、前記複数のバックエンドチャネルに通信可能に結合されるフロントエンドプロセッサ(FEP)であって、前記FEPは、前記複数のバックエンドチャネルの間の前記コマンドの分配を最適化するように、ホストコマンドを修正するように構成される、請求項1から5のうちのいずれか1項に記載のメモリコントローラ。
  11. メモリコントローラであって、
    複数のバックエンドチャネルと、
    前記複数のバックエンドチャネル、およびいくつかの読み出しコマンドを保持するように構成されるコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を備え、
    前記コマンドディスパッチャは、前記いくつかの読み出しコマンドによって達成される、メモリからのネット読み出しを判定し、前記複数のバックエンドチャネルの間の前記いくつかの読み出しコマンドの分配を最適化するために、前記いくつかの読み出しコマンドのうちの1つ以上を修正するように構成される、メモリコントローラ。
  12. 前記フロントエンドコマンドディスパッチャは、前記複数のバックエンドチャネルの間の前記コマンドの分配を最適化するように、1つ以上のコマンドを修正するように構成されるコマンドプロセッサ部と、前記複数のバックエンドチャネルの間でコマンドを分配するように構成されるディスパッチャ部とを含む、請求項11に記載のメモリコントローラ。
  13. 前記フロントエンドコマンドディスパッチャは、ハードウェアの中でホストコマンド整合性チェックを実行するように構成される、請求項11に記載のメモリコントローラ。
  14. 前記複数のバックエンドチャネルに通信可能に結合されるフロントエンドプロセッサ(FEP)を含み、
    前記FEPは、前記いくつかの読み出しコマンドによって達成される、メモリからのネット読み出しを判定し、前記複数のバックエンドチャネルの間で前記いくつかの読み出しコマンドの分配を最適化するために、前記いくつかの読み出しコマンドのうちの1つ以上を修正するように構成される、請求項11から13のうちのいずれか1項に記載のメモリコントローラ。
  15. メモリコントローラであって、
    複数のバックエンドチャネルと、
    前記複数のバックエンドチャネル、およびいくつかの書き込みコマンドを保持するように構成されるコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を備え、
    前記コマンドディスパッチャは、前記いくつかの書き込みコマンドによって達成される、メモリへのネット変更を判定し、前記複数のバックエンドチャネルの中の前記いくつかの書き込みコマンドの分配を最適化するために、前記いくつかの書き込みコマンドのうちの1つ以上を修正するように構成される、メモリコントローラ。
  16. 前記コマンドディスパッチャは、前記複数のバックエンドチャネルがビジーである時のみ、分配を最適化するために、前記いくつかの書き込みコマンドのうちの1つ以上を修正するように構成される、請求項15に記載のメモリコントローラ。
  17. 前記コマンドディスパッチャは、前記いくつかの書き込みコマンドによって前記判定されるメモリへのネット変更を変更することなく、前記コマンドキューからの前記いくつかの書き込みコマンドのうちの1つを分配しないように構成される、請求項15に記載のメモリコントローラ。
  18. 前記コマンドディスパッチャは、前記コマンドキュー内の第1の書き込みコマンドに関連するメモリ範囲を、前記コマンドキュー内の第2の書き込みコマンドの前記メモリ範囲の部分を含むように修正し、それ以降、前記いくつかの書き込みコマンドによって前記判定されるメモリへのネット変更を変更することなく、前記コマンドキューからの前記第2の書き込みコマンドを分配しないように構成される、請求項17に記載のメモリコントローラ。
  19. 前記いくつかの書き込みコマンドは、最初の順序で前記コマンドキュー内に受信され、前記コマンドディスパッチャは、前記コマンドキュー内の前記いくつかの書き込みコマンドの順序を前記最初の順序から変更された順序に変更するように構成される、請求項15から18のうちのいずれか1項に記載のメモリコントローラ。
  20. 前記コマンドディスパッチャは、前記最初の順序ではなく、前記コマンドキュー内の前記いくつかの書き込みコマンドの前記変更された順序に従って、コマンドを分配するように構成される、請求項19に記載のメモリコントローラ。
  21. 前記コマンドディスパッチャは、コマンドを重複するメモリ位置に組み合わせることによって、前記コマンドキュー内の前記いくつかの書き込みコマンドのうちの少なくとも1つを修正するように構成される、請求項15〜18のうちのいずれか1項に記載のメモリコントローラ。
  22. 前記コマンドディスパッチャは、前記いくつかの書き込みコマンドのうちの少なくとも1つが修正されることに応答して、前記コマンドキュー内の前記いくつかの書き込みコマンドの順序を変更された順序に変更するように構成される、請求項21に記載のメモリコントローラ。
  23. 前記コマンドディスパッチャは、前記コマンドキュー内の次に実行される書き込みコマンドによって上書きされる、いくつかのメモリ位置に関与することが判定された書き込みコマンドを分配しないように構成される、請求項21に記載のメモリコントローラ。
  24. 前記コマンドディスパッチャは、介在する読み出し動作が前記いくつかのメモリ位置に関与することなく、次に実行される書き込みコマンドによって上書きされる、前記いくつかのメモリ位置に関与することが判定された書き込みコマンドを実行しないように構成される、請求項21に記載のメモリコントローラ。
  25. 前記コマンドディスパッチャは、複数の書き込みコマンドを単一の書き込みコマンドにグループ化するように構成される、請求項21に記載のメモリコントローラ。
  26. 前記コマンドディスパッチャは、少なくとも2つの書き込みコマンドが、論理的に隣接したメモリ位置に関与する同じ動作であると判定し、前記少なくとも2つの書き込みコマンドを、前記論理的に隣接したメモリ位置に関与する単一の書き込みコマンドに組み合わせるように構成される、請求項25に記載のメモリコントローラ。
  27. 前記コマンドディスパッチャは、少なくとも2つの書き込みコマンドが、論理的に重複するメモリ位置に関与する同じ動作であると判定し、前記少なくとも2つの書き込みコマンドを、前記論理的に重複するメモリ位置に関与する単一の書き込みコマンドに組み合わせるように構成される、請求項25に記載のメモリコントローラ。
  28. 特定の書き込みコマンドに関連する前記ペイロードは、前記複数のバックエンドチャネルのうちの2つ以上の間で分配され、前記コマンドディスパッチャは、前記特定の書き込みコマンドを前記複数のバックエンドチャネルのうちの2つ以上の各々に分配するように構成される、請求項15から18のうちのいずれか1項に記載のメモリコントローラ。
  29. 前記コマンドディスパッチャは、前記複数のバックエンドチャネルのうちの2つ以上の各々に関連する前記ペイロードの部分に対して、関連論理ブロックアドレスおよびセクタカウントを決定し、前記ペイロードの前記関連部分に対して、前記論理ブロックアドレスおよびセクタカウントで、それぞれのバックエンドチャネルに分配される前記特定の書き込みコマンドを修正するように構成される、請求項28に記載のメモリコントローラ。
  30. 前記コマンドディスパッチャが前記複数のバックエンドチャネルにコマンドを分配することを阻止される間、前記コマンドディスパッチャは、前記コマンドキュー内の書き込みコマンドを修正するように構成される、請求項15から18のうちのいずれか1項に記載のメモリコントローラ。
  31. メモリシステムであって、
    いくつかの記憶装置と、
    フロントエンドダイレクトメモリアクセスモジュール(DMA)、ならびに前記いくつかの記憶装置のそれぞれ1つと前記フロントエンドDMAとの間で通信可能に結合されるいくつかのバックエンドチャネルを有するコントローラであって、前記フロントエンドDMAは、ホストにより通信される単一のホストコマンドに関連するペイロードを処理するように構成される、コントローラと、を備え、前記ペイロードのそれぞれの部分は、前記いくつかのバックエンドチャネルにわたって実質的に同時に実行されている、対応する複数のバックエンドコマンドに関連する、メモリシステム。
  32. 前記単一のホストコマンドは、書き込みコマンドであって、前記フロントエンドDMAは、前記複数のバックエンドコマンドに対応する前記いくつかのバックエンドチャネルのうちの2つ以上の間で前記単一のホストコマンドに関連する前記ペイロードを分配するように構成される、請求項31に記載のメモリシステム。
  33. 前記単一のホストコマンドは、読み出しコマンドであって、前記フロントエンドDMAは、前記複数のバックエンドコマンドに対応する前記いくつかのバックエンドチャネルのうちの2つ以上の中から、前記単一のホストコマンドに関連するペイロードを組み立てるように構成される、請求項31に記載のメモリシステム。
  34. 前記フロントエンドDMAは、前記複数のバックエンドコマンドの各々に関連する前記ペイロードの各それぞれの部分に対して、論理ブロックアドレスおよびセクタカウントを決定するように構成され、前記複数のバックエンドコマンドの各々は、前記ホストコマンドを模倣するが、前記いくつかのバックエンドチャネルのそれぞれの1つに対応する、修正されたそれぞれの論理ブロックアドレスおよびセクタカウントを含む、請求項31に記載のメモリシステム。
  35. 前記フロントエンドDMAは、前記複数のバックエンドコマンドに関連する前記ペイロードの部分を、単一のバックエンドチャネルによって実行されていた場合に前記ホストコマンドが前記ペイロードを生成したであろう順序とは異なる順序で、ホストに通信するように構成される、請求項31から34のうちのいずれか1項に記載のメモリシステム。
  36. 前記フロントエンドDMAは、前記複数のバックエンドコマンドに関連する前記ペイロードの部分を、前記部分が前記複数のバックエンドチャネルから受信される順序で、通信するように構成される、請求項35に記載のメモリシステム。
  37. 前記フロントエンドDMAは、ホストコマンドが前記ホストによって通信される順序とは異なる順序で、コマンド完了ステータスのインジケータを前記ホストに通信するように構成される、請求項31から34のうちのいずれか1項に記載のメモリシステム。
  38. 前記フロントエンドDMAは、バックエンドコマンドが前記いくつかのバックエンドチャネルによって完了される順序で、コマンド完了ステータスのインジケータを前記ホストに通信するように構成される、請求項37に記載のメモリシステム。
  39. 前記部分の各々は、特定のバックエンドチャネルに対応し、前記フロントエンドDMAは、前記部分の各々を個別に、他の部分とは別に前記ホストに通信するように構成される、請求項31から34のうちのいずれか1項に記載のメモリシステム。
  40. 前記フロントエンドDMAは、前記部分を前記単一のホストコマンドに関連する完全なペイロードに組み立てることなく、前記いくつかのバックエンドチャネルのうちの1つからの前記それぞれの部分の受信後、前記部分のうちの1つを前記ホストに通信するように構成される、請求項39に記載のメモリシステム。
  41. 前記単一のホストコマンドは、読み出しコマンドで、前記部分の各々は、異なるバックエンドチャネルに関連する、請求項40に記載のメモリシステム。
  42. 前記フロントエンドDMAは、前記いくつかのバックエンドチャネルのうちの1つが、それに関連する前記部分の処理を完了すると、前記部分の各々を前記ホストに通信するように構成される、請求項40に記載のメモリシステム。
  43. 前記単一のホストコマンドは、第1の順序のホストコマンドの一部として前記フロントエンドDMAで受信される書き込みコマンドであり、前記ホストコマンドは、第2の順序で完了され、前記フロントエンドDMAは、前記第2の順序に従って、前記単一のホストコマンドのコマンド完了ステータスのインジケータを前記ホストに通信するように構成される、請求項31から34のうちのいずれか1項に記載のメモリシステム。
  44. ソリッドステートドライブであって、
    複数のフラッシュ記憶装置と、
    メモリコントローラであって、
    各々が前記複数の記憶装置のうちのいくつかに通信可能に結合される、複数のバックエンドチャネルと、
    前記複数のバックエンドチャネルに通信可能に結合されるフロントエンドダイレクトメモリアクセス(DMA)と、
    いくつかのコマンドを保持するように構成されるコマンドキューを有する前記DMAに通信可能に結合されるフロントエンドコマンドディスパッチャと、を備える、メモリコントローラと、を備え、
    前記コマンドディスパッチャは、前記いくつかのコマンドに基づいて、前記複数のバックエンドチャネルの間のそれらの分配を最適化するようにコマンドを処理し、その後前記コマンドキュー内に保持されるように構成され、前記フロントエンドDMAは、前記複数のバックエンドチャネルのうちの2つ以上に関与する少なくとも1つのコマンドに関連するそれぞれのペイロードを処理するように構成される、ソリッドステートドライブ。
  45. 前記メモリコントローラに通信可能に結合されるシリアルアドバンストテクノロジーアタッチメント(SATA)インターフェースを含み、前記SATAインターフェースは、ホストと通信するように構成される、請求項44に記載のソリッドステートドライブ。
  46. 前記複数のバックエンドチャネルの各々は、前記複数の記憶装置のうちのそれぞれ1つに通信可能に結合される、請求項44に記載のソリッドステートドライブ。
  47. 前記複数のフラッシュメモリ装置は、8つのNANDフラッシュメモリ装置を備え、前記複数のバックエンドチャネルは、8つのバックエンドチャネルを備える、請求項46に記載のソリッドステートドライブ。
  48. 前記コマンドディスパッチャは、コマンドの順序を選択的に変更すること、コマンドを選択的に組み合わせること、および/またはコマンドを選択的に削除することによって、前記コントローラのバックエンドに対するそれらの分配を最適化するために、前記コントローラのフロントエンド上でコマンドを処理するように構成される、請求項44から47のうちのいずれか1項に記載のソリッドステートドライブ。
  49. 前記複数のバックエンドチャネルの各々は、受信したコマンドの順序を選択的に変更すること、受信したコマンドを選択的に組み合わせること、および/またはコマンドを選択的に削除することによって、それぞれ受信したコマンドの実行を早めるように、前記それぞれ受信したコマンドをさらに処理するように構成される、請求項48に記載のソリッドステートドライブ。
  50. 複数のバックエンドチャネルの間でいくつかのコマンドを分配する前に、前記いくつかのコマンドを処理する方法であって、
    ホストからいくつかのコマンドをある順序で受信することと、
    フロントエンド処理能力を改善するために、前記いくつかのコマンドを処理することと、を含み、
    前記処理することは、
    前記コマンドの順序を変更すること、
    複数のコマンドを単一のコマンドに組み合わせること、および/または
    その次に実行されるコマンドによって上書きされることが判定されるメモリ位置に関与するコマンドであって、介在する動作が前記メモリ位置に関与することのない、コマンドを削除すること、を含み、
    前記いくつかのコマンドのうちの少なくとも1つは、2つ以上のバックエンドチャネルに分配される、方法。
  51. 前記処理は、前記バックエンドチャネルがビジーである時のみに発生する、請求項50に記載の方法。
  52. 前記順序の変更は、少なくとも部分的に、コマンドを組み合わせること、またはコマンドを削除することに応答する、請求項50に記載の方法。
  53. 複数のコマンドを組み合わせることは、隣接したメモリ位置に関与するコマンドを単一のコマンドにグループ化することを含む、請求項50から52のうちのいずれか1項に記載の方法。
  54. 複数のコマンドを組み合わせることは、前記いくつかの同じメモリ位置に関与するコマンドを単一のコマンドにグループ化することを含む、請求項50から52のうちのいずれか1項に記載の方法。
  55. コマンドを組み合わせることは、特定の記憶装置上の逐次的なメモリ位置に関与するコマンドを単一のコマンドに融合することを含む、請求項50から52のうちのいずれか1項に記載の方法。
  56. コマンドを組み合わせることは、特定の記憶装置上の重複するメモリ位置に関与するコマンドを単一のコマンドに融合することを含む、請求項50から52のうちのいずれか1項に記載の方法。
  57. 前記処理することは、前記いくつかのコマンドのうちの少なくとも1つに対して、前記いくつかのコマンドのうちの前記少なくとも1つに関連するペイロードの各部分に対するそれぞれの論理ブロックアドレスおよびセクタカウントを決定することと、前記それぞれの論理ブロックアドレスおよびセクタカウントで、前記特定のバックエンドチャネルに分配された前記いくつかのコマンドのうちの前記少なくとも1つを修正すること、を含む、請求項50から52のうちのいずれか1項に記載の方法。
  58. いくつかのコマンドを処理する方法であって、
    ホストからいくつかのコマンドをある順序で受信することと、
    複数のバックエンドチャネルのうちの2つ以上が関与するペイロードに関連する少なくとも1つのコマンドを処理することと、を含む、方法。
  59. 前記複数のバックエンドチャネルのうちの2つ以上の間で前記少なくとも1つのコマンドに関連する前記ペイロードを分配することを含み、前記少なくとも1つのコマンドは、書き込みコマンドである、請求項58に記載の方法。
  60. 前記複数のバックエンドチャネルのうちの2つ以上から、前記少なくとも1つのコマンドに関連する前記ペイロードを組み立てることを含み、前記少なくとも1つのコマンドは、読み出しコマンドである、請求項58に記載の方法。
  61. 前記少なくとも1つのコマンドに関連する前記複数のバックエンドチャネルのうちのそれぞれ1つに関与する前記ペイロードの各部分に対して、関連の論理ブロックアドレスおよびセクタカウントを決定することと、
    前記それぞれのバックエンドチャネルに特定の前記決定された論理ブロックアドレスおよびセクタカウントで、前記それぞれのバックエンドチャネルに分配される前記少なくとも1つのコマンドを修正することと、を含む、請求項58に記載の方法。
  62. 前記バックエンドチャネルから、前記いくつかのコマンドのうちの1つに関連するペイロードを受信することと、
    前記いくつかのコマンドが前記ホストによって通信された順序とは異なる順序に従って、前記受信されたペイロードを前記ホストに通信することと、を含む、
    請求項58に記載の方法。
  63. 前記バックエンドチャネルのうちの別の1つから、前記ペイロードの別の部分を受信することを待つことなく、前記バックエンドチャネルのうちの別の1つから受信される前記ペイロードの別の部分を、前記ホストに通信することを含む、請求項58から62のうちのいずれか1項に記載の方法。
  64. 前記ペイロードを再び組み立てることなく、前記バックエンドチャネルのうちの前記1つから受信された前記ペイロードの前記部分を、前記ホストに通信することを含む、請求項63に記載の方法。
  65. 前記特定のコマンドの完了時に、前記コマンドが前記ホストによって通信された前記順序とは無関係に、前記いくつかのコマンドのうちの特定のコマンドの完了ステータスのインジケータを、前記ホストに通信することを含む、請求項58から62のうちのいずれか1項に記載の方法。
  66. 前記特定のコマンドを受信する前に第1のコマンドを受信することと、
    前記第1のコマンドを第1のバックエンドチャネルに分配することと、
    前記特定のコマンドを第2のバックエンドチャネルに分配することと、
    前記特定のコマンドの完了時に、前記第1のコマンドの完了とは無関係に、前記特定のコマンドの前記完了ステータスの前記インジケータを、前記ホストに通信することと、を含む、請求項65に記載の方法。
  67. 前記いくつかのコマンドを前記複数のバックエンドチャネルの間で分配する前に、フロントエンドの処理能力を向上するように、前記いくつかのコマンドを処理することを含み、前記コマンドの処理は、
    前記コマンドの順序を変更すること、
    複数のコマンドを組み合わせること、および/または
    コマンドを削除すること、のうちの1つ以上を含む、請求項58から62のうちのいずれか1項に記載の方法。
  68. 前記複数のバックエンドチャネルのうちの2つ以上の間で、少なくとも1つの組み合わされたコマンドに関連する前記ペイロードを分配することを含み、組み合わされるコマンドは、前記複数のバックエンドチャネルのうちの特定の1つに関与するそれらのペイロードのうちの少なくとも部分を有する、請求項67に記載の方法。
JP2012504666A 2009-04-09 2010-03-11 いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法 Active JP5729774B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/421,093 US8055816B2 (en) 2009-04-09 2009-04-09 Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US12/421,093 2009-04-09
PCT/US2010/000732 WO2010117404A2 (en) 2009-04-09 2010-03-11 Memory controllers, memory systems, solid state drivers and methods for processing a number of commands

Publications (2)

Publication Number Publication Date
JP2012523612A true JP2012523612A (ja) 2012-10-04
JP5729774B2 JP5729774B2 (ja) 2015-06-03

Family

ID=42935228

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012504666A Active JP5729774B2 (ja) 2009-04-09 2010-03-11 いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法

Country Status (7)

Country Link
US (7) US8055816B2 (ja)
EP (2) EP2958027B1 (ja)
JP (1) JP5729774B2 (ja)
KR (1) KR101371815B1 (ja)
CN (1) CN102439576B (ja)
TW (1) TWI418989B (ja)
WO (1) WO2010117404A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015215774A (ja) * 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
JP5866032B2 (ja) * 2013-08-19 2016-02-17 株式会社東芝 メモリシステム
US9760295B2 (en) 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
JP2019164487A (ja) * 2018-03-19 2019-09-26 東芝メモリ株式会社 メモリシステム

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
KR101006748B1 (ko) * 2009-01-29 2011-01-10 (주)인디링스 패드들의 동시 스위칭을 제어하는 고체 상태 디스크를 위한컨트롤러
US8271720B1 (en) 2009-03-02 2012-09-18 Marvell International Ltd. Adaptive physical allocation in solid-state drives
KR101662729B1 (ko) * 2009-05-08 2016-10-06 삼성전자주식회사 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
US20110004742A1 (en) * 2009-07-06 2011-01-06 Eonsil, Inc. Variable-Cycle, Event-Driven Multi-Execution Flash Processor
WO2011019494A1 (en) * 2009-08-11 2011-02-17 Marvell World Trade Ltd. Controller for reading data from non-volatile memory
TW201111986A (en) * 2009-09-29 2011-04-01 Silicon Motion Inc Memory apparatus and data access method for memories
US9213628B2 (en) 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
JP4966404B2 (ja) * 2010-10-21 2012-07-04 株式会社東芝 メモリ制御装置、記憶装置、及びメモリ制御方法
JP2012128644A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US20120233401A1 (en) * 2011-03-08 2012-09-13 Skymedi Corporation Embedded memory system
US8856482B2 (en) * 2011-03-11 2014-10-07 Micron Technology, Inc. Systems, devices, memory controllers, and methods for memory initialization
US9021215B2 (en) * 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
WO2012143944A2 (en) * 2011-04-18 2012-10-26 Ineda Systems Pvt. Ltd Multi-host nand flash controller
US9436594B2 (en) * 2011-05-27 2016-09-06 Seagate Technology Llc Write operation with immediate local destruction of old content in non-volatile memory
US8543758B2 (en) 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
KR101835604B1 (ko) * 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
GB2494625A (en) * 2011-09-06 2013-03-20 St Microelectronics Grenoble 2 Minimizing the latency of a scrambled memory access by sending a memory access operation to the encryption engine and the memory controller in parallel
US8255618B1 (en) * 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US8886872B1 (en) 2011-10-06 2014-11-11 Google Inc. Memory command dispatch in a data storage device
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8904091B1 (en) * 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US8811913B2 (en) * 2012-02-21 2014-08-19 Htc Corporation RF calibration data management in portable device
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
US9141296B2 (en) 2012-05-31 2015-09-22 Sandisk Technologies Inc. Method and host device for packing and dispatching read and write commands
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US9557800B2 (en) * 2012-08-31 2017-01-31 Micron Technology, Inc. Sequence power control
US10095433B1 (en) * 2012-10-24 2018-10-09 Western Digital Technologies, Inc. Out-of-order data transfer mechanisms for data storage systems
KR101988287B1 (ko) 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9244877B2 (en) 2013-03-14 2016-01-26 Intel Corporation Link layer virtualization in SATA controller
US9170755B2 (en) 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
JP6160294B2 (ja) * 2013-06-24 2017-07-12 富士通株式会社 ストレージシステム、ストレージ装置及びストレージシステムの制御方法
TWI493455B (zh) * 2013-07-02 2015-07-21 Phison Electronics Corp 命令佇列管理方法、記憶體控制器及記憶體儲存裝置
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US10331583B2 (en) * 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9292903B2 (en) 2013-10-03 2016-03-22 Google Inc. Overlap aware reordering of rendering operations for efficiency
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
US9880777B1 (en) * 2013-12-23 2018-01-30 EMC IP Holding Company LLC Embedded synchronous replication for block and file objects
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
TW201533657A (zh) * 2014-02-18 2015-09-01 Toshiba Kk 資訊處理系統及記憶體系統
US20150261473A1 (en) * 2014-03-11 2015-09-17 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US10228854B2 (en) 2014-08-20 2019-03-12 Sandisk Technologies Llc Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
US10007442B2 (en) * 2014-08-20 2018-06-26 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically deriving hints from accesses to a storage device and from file system metadata and for optimizing utilization of the storage device based on the hints
US20160062729A1 (en) * 2014-09-03 2016-03-03 Qualcomm Incorporated Multi-channel audio communication in a serial low-power inter-chip media bus (slimbus) system
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
US10101943B1 (en) * 2014-09-25 2018-10-16 EMC IP Holding Company LLC Realigning data in replication system
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
US9910621B1 (en) 2014-09-29 2018-03-06 EMC IP Holding Company LLC Backlogging I/O metadata utilizing counters to monitor write acknowledgements and no acknowledgements
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9575669B2 (en) * 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
US9778848B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Method and apparatus for improving read performance of a solid state drive
TWI553476B (zh) 2015-03-05 2016-10-11 光寶電子(廣州)有限公司 區域描述元管理方法及其電子裝置
US10073714B2 (en) * 2015-03-11 2018-09-11 Western Digital Technologies, Inc. Task queues
US9772796B2 (en) 2015-04-09 2017-09-26 Sandisk Technologies Llc Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) * 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
KR102398611B1 (ko) * 2015-05-07 2022-05-17 에스케이하이닉스 주식회사 메모리 시스템
US10698607B2 (en) * 2015-05-19 2020-06-30 Netapp Inc. Configuration update management
KR102367982B1 (ko) 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
JP2017027479A (ja) * 2015-07-24 2017-02-02 富士通株式会社 データ読出し方法及び情報処理システム
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
CN106547701B (zh) * 2015-09-17 2020-01-10 慧荣科技股份有限公司 记忆装置及数据读取方法
TWI587141B (zh) * 2015-09-17 2017-06-11 慧榮科技股份有限公司 記憶裝置及資料讀取方法
US9886196B2 (en) 2015-10-21 2018-02-06 Western Digital Technologies, Inc. Method and system for efficient common processing in memory device controllers
US10108340B2 (en) 2015-10-21 2018-10-23 Western Digital Technologies, Inc. Method and system for a common processing framework for memory device controllers
US10452596B2 (en) * 2015-10-29 2019-10-22 Micron Technology, Inc. Memory cells configured in multiple configuration modes
US9904609B2 (en) * 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
US10275160B2 (en) * 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US9927997B2 (en) 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
JP6502879B2 (ja) * 2016-03-08 2019-04-17 東芝メモリ株式会社 記憶装置
US20170344262A1 (en) * 2016-05-25 2017-11-30 SK Hynix Inc. Data processing system and method for operating the same
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10200376B2 (en) 2016-08-24 2019-02-05 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
CN109643093A (zh) * 2016-08-30 2019-04-16 三菱电机株式会社 程序编辑装置、程序编辑方法及程序编辑程序
US10176116B2 (en) * 2016-09-28 2019-01-08 Intel Corporation Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US20180336034A1 (en) * 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
US10621117B2 (en) * 2017-06-15 2020-04-14 Micron Technology, Inc. Controlling memory devices using a shared channel
US10521375B2 (en) 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
KR20190032809A (ko) 2017-09-20 2019-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10409739B2 (en) * 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
CN108628759B (zh) * 2017-12-29 2020-09-01 贵阳忆芯科技有限公司 乱序执行nvm命令的方法与装置
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR20190110360A (ko) 2018-03-20 2019-09-30 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
JP2019175292A (ja) * 2018-03-29 2019-10-10 東芝メモリ株式会社 電子機器、コンピュータシステム、および制御方法
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
CN108874685B (zh) * 2018-06-21 2021-10-29 郑州云海信息技术有限公司 固态硬盘的数据处理方法以及固态硬盘
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
KR102649657B1 (ko) * 2018-07-17 2024-03-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10884920B2 (en) 2018-08-14 2021-01-05 Western Digital Technologies, Inc. Metadata-based operations for use with solid state devices
CN110851073B (zh) * 2018-08-20 2023-06-02 慧荣科技股份有限公司 储存装置及巨集指令的执行方法
CN110851372B (zh) 2018-08-20 2023-10-31 慧荣科技股份有限公司 储存装置及快取区定址方法
CN110858127B (zh) * 2018-08-22 2023-09-12 慧荣科技股份有限公司 数据存储装置
US11188496B2 (en) * 2018-09-13 2021-11-30 Toshiba Memory Corporation System and method for storing data using ethernet drives and ethernet open-channel drives
US11340810B2 (en) 2018-10-09 2022-05-24 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
US11249664B2 (en) 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11455402B2 (en) 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US20210064368A1 (en) * 2019-08-28 2021-03-04 Micron Technology, Inc. Command tracking
CN110737540B (zh) * 2019-09-29 2023-06-06 深圳忆联信息系统有限公司 用于ssd读取异常的恢复优化方法、装置、设备、存储介质
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11797188B2 (en) * 2019-12-12 2023-10-24 Sk Hynix Nand Product Solutions Corp. Solid state drive with multiplexed internal channel access during program data transfers
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11137943B2 (en) * 2020-03-04 2021-10-05 Micron Technology, Inc. Internal commands for access operations
US11138115B2 (en) * 2020-03-04 2021-10-05 Micron Technology, Inc. Hardware-based coherency checking techniques
US11222258B2 (en) 2020-03-27 2022-01-11 Google Llc Load balancing for memory channel controllers
US11579801B2 (en) * 2020-06-09 2023-02-14 Samsung Electronics Co., Ltd. Write ordering in SSDs
US11681465B2 (en) * 2020-06-12 2023-06-20 Advanced Micro Devices, Inc. Dynamic multi-bank memory command coalescing
US11307806B2 (en) 2020-07-22 2022-04-19 Seagate Technology Llc Controlling SSD performance by queue depth
US11347394B2 (en) 2020-08-03 2022-05-31 Seagate Technology Llc Controlling SSD performance by the number of active memory dies
US11507298B2 (en) * 2020-08-18 2022-11-22 PetaIO Inc. Computational storage systems and methods
US11847037B2 (en) 2020-09-16 2023-12-19 Kioxia Corporation Device and method for high performance memory debug record generation and management
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US20230120600A1 (en) * 2021-10-20 2023-04-20 Western Digital Technologies, Inc. Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices
KR20230082377A (ko) 2021-12-01 2023-06-08 삼성전자주식회사 메모리 컨트롤러 및 메모리 시스템
CN114416178A (zh) * 2021-12-16 2022-04-29 北京小米移动软件有限公司 数据访问方法、装置及非临时性计算机可读存储介质
CN114721984B (zh) * 2022-03-30 2024-03-26 湖南长城银河科技有限公司 面向低延时应用的sata接口数据传输方法和系统
US20230393784A1 (en) * 2022-06-03 2023-12-07 Micron Technology, Inc. Data path sequencing in memory systems
US20240004788A1 (en) * 2022-07-01 2024-01-04 Micron Technology, Inc. Adaptive configuration of memory devices using host profiling
US20240061615A1 (en) * 2022-08-22 2024-02-22 Micron Technology, Inc. Command scheduling for a memory system

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128159A (ja) * 1995-11-06 1997-05-16 Matsushita Electric Ind Co Ltd 記憶装置
JP2002510079A (ja) * 1998-01-23 2002-04-02 サン・マイクロシステムズ・インコーポレーテッド メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置
US20020199072A1 (en) * 2001-06-22 2002-12-26 Fanning Blaise B. Method and mechanism for common scheduling in a RDRAM system
JP2004013473A (ja) * 2002-06-06 2004-01-15 Hitachi Ltd 磁気ディスク装置におけるデータ書き込み制御方法
US20050021921A1 (en) * 2003-07-24 2005-01-27 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
JP2006514386A (ja) * 2003-10-29 2006-04-27 松下電器産業株式会社 ドライブ装置、プログラム
US20070283109A1 (en) * 2002-05-15 2007-12-06 Kelly James D Memory controller configurable to allow bandwidth/latency tradeoff
US20080016294A1 (en) * 2004-10-21 2008-01-17 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
WO2008138249A1 (en) * 2007-05-10 2008-11-20 Memoright Memoritech (Shenzhen) Co., Ltd Parallel flash memory controller, chip and control method thereof
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
JP2009020883A (ja) * 2007-07-10 2009-01-29 Internatl Business Mach Corp <Ibm> コマンド選択のメモリ・コントローラ読み取りキュー動的最適化

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5924485A (ja) * 1982-07-30 1984-02-08 Toshiba Corp 入出力ペ−ジング機構
DE3241376A1 (de) * 1982-11-09 1984-05-10 Siemens AG, 1000 Berlin und 8000 München Dma-steuereinrichtung zur uebertragung von daten zwischen einem datensender und einem datenempfaenger
US4797812A (en) * 1985-06-19 1989-01-10 Kabushiki Kaisha Toshiba System for continuous DMA transfer of virtually addressed data blocks
JPS63175970A (ja) * 1987-01-16 1988-07-20 Hitachi Ltd 記憶制御方式
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5182800A (en) * 1990-11-16 1993-01-26 International Business Machines Corporation Direct memory access controller with adaptive pipelining and bus control features
US5640596A (en) * 1992-03-10 1997-06-17 Hitachi, Ltd. Input output control system for transferring control programs collectively as one transfer unit designated by plurality of input output requests to be executed
US5526484A (en) * 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
US5517670A (en) * 1992-12-30 1996-05-14 International Business Machines Corporation Adaptive data transfer channel employing extended data block capability
US5564055A (en) * 1994-08-30 1996-10-08 Lucent Technologies Inc. PCMCIA slot expander and method
US5717952A (en) * 1994-11-16 1998-02-10 Apple Computer, Inc. DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
JP3287203B2 (ja) * 1996-01-10 2002-06-04 株式会社日立製作所 外部記憶制御装置及び外部記憶制御装置間データ転送方法
US6185521B1 (en) * 1996-02-16 2001-02-06 Emc Corporation System and method for emulating mainframe channel programs by open systems computer systems
US5889935A (en) * 1996-05-28 1999-03-30 Emc Corporation Disaster control features for remote data mirroring
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6012104A (en) * 1997-10-24 2000-01-04 International Business Machines Corporation Method and apparatus for dynamic extension of channel programs
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6192444B1 (en) * 1998-01-05 2001-02-20 International Business Machines Corporation Method and system for providing additional addressable functional space on a disk for use with a virtual data storage subsystem
US8171204B2 (en) * 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US7102671B1 (en) * 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
US20020120741A1 (en) * 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
US6948031B2 (en) * 2000-12-19 2005-09-20 Emc Corporation Methods and apparatus for transferring a data element within a data storage system
US6915378B2 (en) * 2003-04-23 2005-07-05 Hypernova Technologies, Inc. Method and system for improving the performance of a processing system
US7058735B2 (en) * 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
TW200506733A (en) * 2003-08-15 2005-02-16 Via Tech Inc Apparatus and method for the co-simulation of CPU and DUT modules
KR100585136B1 (ko) * 2004-03-04 2006-05-30 삼성전자주식회사 메모리 시스템의 데이터 채널 초기화 방법
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
JP4366298B2 (ja) * 2004-12-02 2009-11-18 富士通株式会社 記憶装置、その制御方法及びプログラム
US8332526B2 (en) * 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
JP2007058646A (ja) * 2005-08-25 2007-03-08 Hitachi Ltd データ処理システム
US20070162642A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek A dma controller with multiple intra-channel software request support
JP2008021380A (ja) * 2006-07-14 2008-01-31 Fujitsu Ltd シーク制御装置、シーク制御方法、記憶装置
US7822887B2 (en) * 2006-10-27 2010-10-26 Stec, Inc. Multi-channel solid-state storage system
US20080107275A1 (en) * 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA
TW200844841A (en) * 2007-05-10 2008-11-16 Realtek Semiconductor Corp Method for expediting data access of universal serial bus stoarage device
JP4963088B2 (ja) * 2007-07-13 2012-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データをキャッシュする技術
JP2009128159A (ja) 2007-11-22 2009-06-11 Ogata Institute For Medical & Chemical Research キャピラリ等電点電気泳動装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128159A (ja) * 1995-11-06 1997-05-16 Matsushita Electric Ind Co Ltd 記憶装置
JP2002510079A (ja) * 1998-01-23 2002-04-02 サン・マイクロシステムズ・インコーポレーテッド メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US20020199072A1 (en) * 2001-06-22 2002-12-26 Fanning Blaise B. Method and mechanism for common scheduling in a RDRAM system
US20070283109A1 (en) * 2002-05-15 2007-12-06 Kelly James D Memory controller configurable to allow bandwidth/latency tradeoff
JP2004013473A (ja) * 2002-06-06 2004-01-15 Hitachi Ltd 磁気ディスク装置におけるデータ書き込み制御方法
US20050021921A1 (en) * 2003-07-24 2005-01-27 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
JP2006514386A (ja) * 2003-10-29 2006-04-27 松下電器産業株式会社 ドライブ装置、プログラム
US20080016294A1 (en) * 2004-10-21 2008-01-17 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
WO2008138249A1 (en) * 2007-05-10 2008-11-20 Memoright Memoritech (Shenzhen) Co., Ltd Parallel flash memory controller, chip and control method thereof
JP2009020883A (ja) * 2007-07-10 2009-01-29 Internatl Business Mach Corp <Ibm> コマンド選択のメモリ・コントローラ読み取りキュー動的最適化

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5866032B2 (ja) * 2013-08-19 2016-02-17 株式会社東芝 メモリシステム
JPWO2015025357A1 (ja) * 2013-08-19 2017-03-02 株式会社東芝 メモリシステム
US9799406B2 (en) 2013-08-19 2017-10-24 Toshiba Memory Corporation Memory system
JP2015215774A (ja) * 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US9760295B2 (en) 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
JP2019164487A (ja) * 2018-03-19 2019-09-26 東芝メモリ株式会社 メモリシステム
JP7013294B2 (ja) 2018-03-19 2022-01-31 キオクシア株式会社 メモリシステム
US11494082B2 (en) 2018-03-19 2022-11-08 Kioxia Corporation Memory system

Also Published As

Publication number Publication date
EP2958027A1 (en) 2015-12-23
EP2417527B1 (en) 2015-09-23
US8751700B2 (en) 2014-06-10
KR101371815B1 (ko) 2014-03-07
JP5729774B2 (ja) 2015-06-03
EP2958027B1 (en) 2019-09-04
CN102439576A (zh) 2012-05-02
TW201104440A (en) 2011-02-01
US9015356B2 (en) 2015-04-21
US20100262721A1 (en) 2010-10-14
US10949091B2 (en) 2021-03-16
US20150212734A1 (en) 2015-07-30
EP2417527A2 (en) 2012-02-15
US8260973B2 (en) 2012-09-04
US20130268701A1 (en) 2013-10-10
EP2417527A4 (en) 2012-12-19
WO2010117404A3 (en) 2011-03-31
CN102439576B (zh) 2015-04-15
US20120011335A1 (en) 2012-01-12
US10331351B2 (en) 2019-06-25
US8396995B2 (en) 2013-03-12
TWI418989B (zh) 2013-12-11
KR20120015313A (ko) 2012-02-21
WO2010117404A2 (en) 2010-10-14
US20190265889A1 (en) 2019-08-29
US20120324180A1 (en) 2012-12-20
US8055816B2 (en) 2011-11-08
US20140310431A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
JP5729774B2 (ja) いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法
US10534560B2 (en) Data storage device and data processing system having the same
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US9123409B2 (en) Memory device for a hierarchical memory architecture
EP2715730B1 (en) Apparatus including memory system controllers and related methods for memory management using blok tables
US11042300B2 (en) Command load balancing for NVME dual port operations
JP5918359B2 (ja) メモリシステムコントローラを含む装置および関連する方法
CN108153482B (zh) Io命令处理方法与介质接口控制器
CN207008602U (zh) 一种基于NandFlash存储器多通道的存储阵列控制装置
US8713204B2 (en) High-performance AHCI interface
CN114253461A (zh) 混合通道存储设备
CN114253462A (zh) 提供混合通道存储设备的方法
CN213338708U (zh) 一种控制部件及存储设备
Bougioukou et al. Prototyping and performance evaluation of a dynamically adaptable block device driver for PCIe-based SSDs

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130722

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130722

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130823

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130823

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140409

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140409

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140416

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20140613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150402

R150 Certificate of patent or registration of utility model

Ref document number: 5729774

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250