JP5918359B2 - メモリシステムコントローラを含む装置および関連する方法 - Google Patents

メモリシステムコントローラを含む装置および関連する方法 Download PDF

Info

Publication number
JP5918359B2
JP5918359B2 JP2014513596A JP2014513596A JP5918359B2 JP 5918359 B2 JP5918359 B2 JP 5918359B2 JP 2014513596 A JP2014513596 A JP 2014513596A JP 2014513596 A JP2014513596 A JP 2014513596A JP 5918359 B2 JP5918359 B2 JP 5918359B2
Authority
JP
Japan
Prior art keywords
command
hba
information
compliant device
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014513596A
Other languages
English (en)
Other versions
JP2014517402A (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 JP2014517402A publication Critical patent/JP2014517402A/ja
Application granted granted Critical
Publication of JP5918359B2 publication Critical patent/JP5918359B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • 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
    • 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/38Information transfer, e.g. on 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/0661Format or protocol conversion arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

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

Claims (13)

  1. ホストバスアダプタ(HBA)と、
    シリアルアタッチメント(SA)プログラミング準拠デバイスであって、前記HBAと前記SAプログラミング準拠デバイスとの間でコマンドと応答と他の情報とを同時に伝達するように構成された機能固有の相互接続を介して、前記HBAに結合された、シリアルアタッチメント(SA)プログラミング準拠デバイスと、
    を備えるソリッドステートドライブ(SSD)コントローラである装置であって、
    前記機能固有の相互接続が、其々前記SSDコントローラ内のコマンドインターフェースと応答インターフェースと情報インターフェースとを、第1のコマンドプロトコルに応答して同時に動作させ、また、第2のコマンドプロトコルに応答してアトミックに動作させるように構成される、SSDコントローラである装置。
  2. 前記HBAが、
    コマンドフェッチャーと、
    応答レシーバと、
    ダウンストリーム直接メモリアクセス(DMA)デバイスと、
    アップストリームDMAデバイスと
    を含む、請求項1に記載の装置。
  3. 前記SAプログラミング準拠デバイスが、
    デバイス−ホスト(DH)アービタと、
    前記DHアービタに結合されたコマンド有限状態機械(FSM)と、
    前記DHアービタに結合された書込みFSMと、
    前記DHアービタに結合された読取りFSMと
    を含み、
    前記DHアービタが、前記コマンドFSM、前記書込みFSMおよび前記読取りFSMからの入力に基づいて、情報配信の順序を適正化し、前記HBAに完了を通信するように構成される、請求項2に記載の装置。
  4. 前記書込みFSMは、書込み情報配信の前記順序を前記DHアービタが適正化する前に、書込み情報をバッファするように構成された書込みバッファを含む、請求項3に記載の装置。
  5. 前記読取りFSMは、読取り情報配信の前記順序を前記DHアービタが適正化する前に、読取り情報をバッファするように構成された読取りバッファを含む、請求項3に記載の装置。
  6. 前記コマンドFSM、前記書込みFSMおよび前記読取りFSMが、並行したコマンドの受信、応答の配信、書込み情報の受信および読取り情報の配信を行うように構成された、請求項3に記載の装置。
  7. 前記機能固有の相互接続が、
    前記SAプログラミング準拠デバイス上のコマンド入力に結合された前記HBA上のコマンド出力と、
    前記HBA上の応答入力に結合された前記SAプログラミング準拠デバイス上の応答出力と、
    前記SAプログラミング準拠デバイス上の書込み情報入力に結合された前記HBA上の書込み情報出力と、
    前記HBA上の読取り情報入力に結合された前記SAプログラミング準拠デバイス上の読取り情報出力と
    を含む、請求項1に記載の装置。
  8. 前記コマンド入力/出力の対、前記応答入力/出力の対、前記書込み情報入力/出力の対および前記読取り情報の入力/出力の対が一方向性であり、8b10b符号化またはプリミティブのいずれも採用しない、請求項7に記載の装置
  9. 前記SAプログラミング準拠デバイスが、シリアルアドバンストテクノロジーアタッチメント(SATA)プログラミング準拠デバイスを備える、請求項1〜8のいずれか一項に記載の装置。
  10. 前記SAプログラミング準拠デバイスが、シリアルアタッチドスモールコンピュータシステムインターフェース(SAS)プログラミング準拠デバイスを備える、請求項1〜8のいずれか一項に記載の装置。
  11. ソリッドステートドライブ(SSD)コントローラ内のホストバスアダプタ(HBA)とシリアルアタッチメント(SA)プログラミング準拠デバイスとの間で、前記HBAと前記SAプログラミング準拠デバイスとの間の前記SSDコントローラ内のコマンドインターフェースを介して、コマンドを伝達することと、
    前記コマンドと同時に、前記HBAと前記SAプログラミング準拠デバイスとの間で、前記HBAと前記SAプログラミング準拠デバイスとの間の前記SSDコントローラ内の応答インターフェースを介して、応答を伝達することと、
    前記コマンドと同時に、前記HBAと前記SAプログラミング準拠デバイスとの間で、前記HBAと前記SAプログラミング準拠デバイスとの間の前記SSDコントローラ内の情報インターフェースを介して、他の情報を伝達することと、
    第2のコマンドプロトコルに応答して、前記コマンドインターフェースと前記応答インターフェースと前記情報インターフェースとをアトミックに動作させることと、
    を含む、方法。
  12. 前記方法が、コマンド有限状態機械、書込み有限状態機械および読取り有限状態機械からの入力に基づいて、情報配信の順序を適正化し、前記HBAに完了を通信すること含む、請求項11に記載の方法。
  13. 前記方法が、第1のコマンドプロトコルに応答して、前記コマンドインターフェースと前記応答インターフェースと前記情報インターフェースとを同時に動作させることを含む、請求項11又は12に記載の方法。
JP2014513596A 2011-05-31 2012-05-24 メモリシステムコントローラを含む装置および関連する方法 Active JP5918359B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/149,447 2011-05-31
US13/149,447 US8621113B2 (en) 2011-05-31 2011-05-31 Apparatus including host bus adapter and serial attachment programming compliant device and related methods
PCT/US2012/039439 WO2012166548A2 (en) 2011-05-31 2012-05-24 Apparatus including memory system controllers and related methods

Publications (2)

Publication Number Publication Date
JP2014517402A JP2014517402A (ja) 2014-07-17
JP5918359B2 true JP5918359B2 (ja) 2016-05-18

Family

ID=47260205

Family Applications (1)

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

Country Status (7)

Country Link
US (2) US8621113B2 (ja)
EP (1) EP2715729B1 (ja)
JP (1) JP5918359B2 (ja)
KR (1) KR101532863B1 (ja)
CN (1) CN103635969B (ja)
TW (1) TWI463314B (ja)
WO (1) WO2012166548A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201790B2 (en) * 2007-10-09 2015-12-01 Seagate Technology Llc System and method of matching data rates
US9405027B2 (en) 2012-01-12 2016-08-02 Westerngeco L.L.C. Attentuating noise acquired in an energy measurement
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus
US20150074293A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Information processing system, storage device and controlling method of storage device
US10073731B2 (en) * 2013-11-27 2018-09-11 Intel Corporation Error correction in memory
US9933980B2 (en) 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
CN106257434B (zh) * 2015-06-16 2019-04-30 深圳市中兴微电子技术有限公司 一种基于增强型外设互连协议总线的数据传输方法及装置
CN107851062A (zh) * 2015-12-31 2018-03-27 华为技术有限公司 一种主机集群中缓存管理方法及主机
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
KR102466239B1 (ko) * 2016-04-05 2022-11-14 에스케이하이닉스 주식회사 메모리 컨트롤러를 포함하는 메모리 시스템 및 그의 동작 방법
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
CN107479824B (zh) * 2016-06-08 2020-03-06 宜鼎国际股份有限公司 冗余磁盘阵列系统及其数据储存方法
US10318185B2 (en) 2016-07-01 2019-06-11 Intel Corporation Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive
US10613772B2 (en) * 2017-03-16 2020-04-07 Qualcomm Incorporated Methods and apparatuses for copying a data page in an unmanaged flash memory device
KR102385541B1 (ko) * 2017-09-29 2022-04-11 삼성전자주식회사 버스 시스템
TWI680375B (zh) 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like
US11563570B2 (en) * 2020-05-19 2023-01-24 Western Digital Technologies, Inc. Storage system and method for command execution ordering by security key
CN114721978B (zh) * 2022-03-04 2023-08-25 成都储迅科技有限责任公司 一种加快Nand Flash控制命令执行速度的方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784390A (en) * 1995-06-19 1998-07-21 Seagate Technology, Inc. Fast AtA-compatible drive interface with error detection and/or error correction
JPH11242632A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd メモリ装置
US8006001B2 (en) * 2004-09-22 2011-08-23 Lsi Corporation Method and apparatus for manipulating direct memory access transfers
KR101340176B1 (ko) * 2005-08-25 2013-12-10 실리콘 이미지, 인크. 스마트 스케일러블 스토리지 스위치 아키텍처
US7809068B2 (en) * 2005-12-28 2010-10-05 Intel Corporation Integrated circuit capable of independently operating a plurality of communication channels
US8635376B2 (en) 2006-02-22 2014-01-21 Emulex Design & Manufacturing Corporation Computer system input/output management
US20070294459A1 (en) * 2006-06-16 2007-12-20 Acard Technology Corp. Apparatus for bridging a host to a SAN
US7502874B2 (en) 2006-11-21 2009-03-10 Lsi Corporation Methods and systems for integrating unique information in SAS interface components
US7627709B2 (en) 2006-12-12 2009-12-01 Spectra Logic Corporation Computer bus power consuming device
JP4445535B2 (ja) * 2007-09-19 2010-04-07 富士通株式会社 データ転送装置,情報処理システム,データ転送プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US20090119452A1 (en) * 2007-11-02 2009-05-07 Crossroads Systems, Inc. Method and system for a sharable storage device
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
US7886105B2 (en) * 2008-12-04 2011-02-08 Lsi Corporation Combined fibre channel and SAS host bus adapter
US9176883B2 (en) * 2009-04-30 2015-11-03 HGST Netherlands B.V. Storage of data reference blocks and deltas in different storage devices
US20110040924A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8694723B2 (en) * 2011-04-28 2014-04-08 Lsi Corporation Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter

Also Published As

Publication number Publication date
KR20140025541A (ko) 2014-03-04
EP2715729A2 (en) 2014-04-09
EP2715729B1 (en) 2017-02-08
US8621113B2 (en) 2013-12-31
JP2014517402A (ja) 2014-07-17
TWI463314B (zh) 2014-12-01
TW201303586A (zh) 2013-01-16
CN103635969A (zh) 2014-03-12
WO2012166548A3 (en) 2013-02-28
EP2715729A4 (en) 2015-10-07
US20140189163A1 (en) 2014-07-03
CN103635969B (zh) 2017-02-15
WO2012166548A2 (en) 2012-12-06
US20120311193A1 (en) 2012-12-06
KR101532863B1 (ko) 2015-06-30

Similar Documents

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

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150306

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150306

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150916

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150916

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20151102

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160407

R150 Certificate of patent or registration of utility model

Ref document number: 5918359

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