特許第5759623号(P5759623)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロン テクノロジー, インク.の特許一覧

特許5759623メモリシステムコントローラを含む装置および関連する方法
<>
  • 特許5759623-メモリシステムコントローラを含む装置および関連する方法 図000002
  • 特許5759623-メモリシステムコントローラを含む装置および関連する方法 図000003
  • 特許5759623-メモリシステムコントローラを含む装置および関連する方法 図000004
  • 特許5759623-メモリシステムコントローラを含む装置および関連する方法 図000005
  • 特許5759623-メモリシステムコントローラを含む装置および関連する方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5759623
(24)【登録日】2015年6月12日
(45)【発行日】2015年8月5日
(54)【発明の名称】メモリシステムコントローラを含む装置および関連する方法
(51)【国際特許分類】
   G06F 12/16 20060101AFI20150716BHJP
【FI】
   G06F12/16 310A
【請求項の数】15
【全頁数】24
(21)【出願番号】特願2014-513591(P2014-513591)
(86)(22)【出願日】2012年5月24日
(65)【公表番号】特表2014-515534(P2014-515534A)
(43)【公表日】2014年6月30日
(86)【国際出願番号】US2012039412
(87)【国際公開番号】WO2012166537
(87)【国際公開日】20121206
【審査請求日】2013年12月20日
(31)【優先権主張番号】13/149,518
(32)【優先日】2011年5月31日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー, インク.
(74)【代理人】
【識別番号】100106851
【弁理士】
【氏名又は名称】野村 泰久
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ポーターフィールド,エー.ケント
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 国際公開第2011/040950(WO,A1)
【文献】 米国特許出願公開第2011/0082963(US,A1)
【文献】 米国特許出願公開第2011/0078496(US,A1)
【文献】 国際公開第2011/043791(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G06F 12/00 − 12/06
(57)【特許請求の範囲】
【請求項1】
スイッチと、
前記スイッチに結合され、かつ、複数のチャネル制御回路を含む、不揮発性メモリ制御回路であって、前記複数のチャネル制御回路の各々が、いくつかの論理ユニット(LUN)に結合されるように構成され、前記いくつかのLUNの各々が複数のブロックを含む、不揮発性メモリ制御回路と、
前記スイッチに結合された揮発性メモリと、
前記スイッチに結合され、かつ、ローカルメモリを含む、メモリ管理回路であって、前記メモリ管理回路が、
前記複数のブロックの各々に対する正常性およびステータス情報を前記揮発性メモリ内のブロックテーブルに格納することと、
候補ブロックテーブルを前記ローカルメモリに格納することであって、前記候補ブロックテーブルが、特定の操作に対するLUNあたり1つの候補ブロックを、前記特定の操作に対するいくつかの基準に基づいて識別する、候補ブロックテーブルを格納することと、
前記揮発性メモリ内の前記ブロックテーブル内の前記複数のブロックのうちの特定の1つに対する前記正常性およびステータス情報を更新することと、
前記特定のブロックに対する前記更新された正常性およびステータス情報を、前記いくつかの基準に従って前記候補ブロックに対する正常性およびステータス情報と比較することと、
前記特定のブロックの方が前記いくつかの基準を良く満足することを示す前記比較に少なくとも一部応答して、前記特定のブロックを識別するために前記候補ブロックテーブルを更新することと
を行うように構成されている、メモリ管理回路と
を備える装置。
【請求項2】
前記候補ブロックテーブルが、ホスト書込み、摩耗平滑化読取り、摩耗平滑化書込み、および消去を含む操作のグループから選択された前記特定の操作に対して候補ブロックを識別する、請求項1に記載の装置。
【請求項3】
前記メモリ管理回路が、前記特定のブロックに対する書込み、消去、または誤り事象のうちの1つに少なくとも一部応答して、前記揮発性メモリ内の前記ブロックテーブル内の前記特定のブロックに対する前記正常性およびステータス情報を更新するように構成されている、請求項1に記載の装置。
【請求項4】
前記メモリ管理回路が、前記特定のブロックに対する前記正常性およびステータス情報が前記揮発性メモリ内で更新される同じクロック周期で、前記特定のブロックを識別するために前記候補ブロックテーブルを更新するように構成されている、請求項1に記載の装置。
【請求項5】
前記メモリ管理回路が、前記揮発性メモリ内の前記ブロックテーブル内の前記複数のブロックの各々に対する前記更新された正常性およびステータス情報を、前記複数のブロックのいずれかに対する、書込み、消去、または誤り事象とは無関係に、前記いくつかの基準に従って、前記候補ブロックの各々に対する正常性およびステータス情報と比較するように構成されている、請求項1〜請求項4のいずれか1つに記載の装置。
【請求項6】
前記メモリ管理回路が、前記複数のブロックの各々が比較された後に、書込み、消去、または誤り事象とは無関係に、前記正常性およびステータス情報を比較するのをやめるように構成されている、請求項5に記載の装置。
【請求項7】
前記メモリ管理回路が、
論理アドレスから物理アドレスへの変換を、前記揮発性メモリ内の論理ブロックアドレス(LBA)テーブル内に格納することと、
前記複数のブロックのうちの特定のブロックに対する論理アドレスに対応する第1の物理アドレスを、前記特定のブロックに関する摩耗平滑化操作中に情報が前記特定のブロックから読み取られる前に、前記ブロックテーブルから取り出すことと、
前記情報が、前記摩耗平滑化操作中に前記複数のブロックのうちの前記特定のブロックとは異なる1つのブロックに書き込まれた後に、前記論理アドレスに対応する第2の物理アドレスを、前記LBAテーブルから取り出すことと、
前記第2の物理アドレスが、前記第1の物理アドレスに等しいことに少なくとも一部応答して、前記LBAテーブルを、前記摩耗平滑化操作中に前記情報が書き込まれた前記複数のブロックのうちの前記特定のブロックとは異なる1つのブロックに対応する第3の物理アドレスで更新することと
を行うように構成されている、請求項1〜請求項4のいずれか1つに記載の装置。
【請求項8】
前記メモリ管理回路が、前記第2の物理アドレスが前記第1の物理アドレスとは異なることに少なくとも一部応答して、前記摩耗平滑化操作を無効にするように構成されている、請求項7に記載の装置。
【請求項9】
メモリ管理回路に含まれるブロック管理装置が、
論理ユニットに含まれる複数のブロックの各々に対する正常性およびステータス情報を揮発性メモリ内のブロックテーブルに格納することと、
候補ブロックテーブルをローカルメモリに格納することであって、前記候補ブロックテーブルが、特定の操作に対する論理ユニットあたり1つの候補ブロックを、前記特定の操作に対するいくつかの基準に基づいて識別する、候補ブロックテーブルを格納することと、
前記揮発性メモリ内の前記ブロックテーブル内の前記複数のブロックのうちの特定の1つに対する前記正常性およびステータス情報を更新することと、
前記特定のブロックに対する前記更新された正常性およびステータス情報を、前記いくつかの基準に従って前記候補ブロックに対する正常性およびステータス情報と比較することと、
前記特定のブロックの方が前記いくつかの基準を良く満足することを示す前記比較に少なくとも一部応答して、前記特定のブロックを識別するために前記候補ブロックテーブルを更新することと
を含む、方法。
【請求項10】
前記特定の操作が、ホスト書込み、摩耗平滑化読取り、摩耗平滑化書込み、および消去を含む操作のグループから選択される、請求項9に記載の方法。
【請求項11】
前記揮発性メモリ内の前記ブロックテーブル内の前記特定のブロックに対する前記正常性およびステータス情報を更新することが、前記特定のブロックに対する書込み、消去、または誤り事象のうちの1つに少なくとも一部応答して、更新することを含む、請求項9に記載の方法。
【請求項12】
前記特定のブロックを識別するために前記候補ブロックテーブルを更新することが、前記特定のブロックに対する前記正常性およびステータス情報が前記揮発性メモリ内で更新される同じクロック周期で、前記候補ブロックテーブルを更新することを含む、請求項9に記載の方法。
【請求項13】
前記特定のブロックに対する前記更新された正常性およびステータス情報を、前記いくつかの基準に従って前記候補ブロックに対する正常性およびステータス情報と比較することが、前記複数のブロックのいずれかに対する書込み、消去、または誤り事象とは無関係に比較することを含む、請求項9〜請求項12のいずれか1つに記載の方法。
【請求項14】
前記方法が、前記複数のブロックの各々が比較された後に、書込み、消去、または誤り事象とは無関係に前記正常性およびステータス情報を比較するのをやめることを含む、請求項13に記載の方法。
【請求項15】
前記方法が、
論理アドレスから物理アドレスへの変換を、前記揮発性メモリ内の論理ブロックアドレス(LBA)テーブル内に格納することと、
前記複数のブロックのうちの特定のブロックに対する論理アドレスに対応する第1の物理アドレスを、前記特定のブロックに関する摩耗平滑化操作中に情報が前記特定のブロックから読み取られる前に、前記ブロックテーブルから取り出すことと、
前記情報が、前記摩耗平滑化操作中に前記複数のブロックのうちの前記特定のブロックとは異なる1つのブロックに書き込まれた後に、前記論理アドレスに対応する第2の物理アドレスを、前記LBAテーブルから取り出すことと、
前記第2の物理アドレスが前記第1の物理アドレスに等しいことに少なくとも一部応答して、前記LBAテーブルを、前記摩耗平滑化操作中に前記情報が書き込まれた前記複数のブロックのうちの前記特定のブロックとは異なる1つのブロックに対応する第3の物理アドレスで更新することと
前記第2の物理アドレスが前記第1の物理アドレスとは異なることに少なくとも一部応答して、前記摩耗平滑化操作を無効にすることと
を含む、請求項9〜請求項12のいずれか1つに記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、半導体メモリ装置、システム、およびコントローラなどの装置、ならびに関連した方法に関し、より詳細には、例えば、メモリシステムコントローラに関する。
【背景技術】
【0002】
メモリ装置は、通常、コンピュータまたは他の電子装置において、内部回路、半導体回路、集積回路として提供される。揮発性および不揮発性メモリを含む、多数の異なるタイプのメモリがある。揮発性メモリは、例えば、データなどの、その情報を維持するために電力を必要とし得、特に、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、およびスタティックランダムアクセスメモリ(SRAM)を含む。不揮発性メモリは、電力供給されていないときに、格納された情報を保持することにより、持続的な情報を提供でき、特に、NANDフラッシュメモリ、NORフラッシュメモリ、読取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、および相変化ランダムアクセスメモリ(PCRAM)を含み得る。
【0003】
メモリ装置は、ソリッドステートドライブ(SSD)を形成するために一緒に結合できる。ソリッドステートドライブは、様々な他のタイプの不揮発性メモリおよび揮発性メモリの中で、例えば、NANDフラッシュメモリおよびNORフラッシュメモリなどの、不揮発性メモリを含み得、かつ/または、例えば、DRAMおよびSRAMなどの、揮発性メモリを含み得る。情報を窒化物層内の電荷トラップに格納する、半導体‐酸化物‐窒化物‐酸化物‐半導体および金属‐酸化物‐窒化物‐酸化物‐半導体コンデンサ構造を使用する、フローティングゲートフラッシュ装置および電荷トラップフラッシュ(CTF)装置を含め、フラッシュメモリ装置は、多種多様な電子用途に対して不揮発性メモリとして利用され得る。フラッシュメモリ装置は、通常、高記憶密度、高信頼性、および低電力消費を可能にする1トランジスタメモリセルを使用する。
【0004】
ソリッドステートドライブは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費に関して、ハードドライブに勝る利点を有し得るので、SSDは、コンピューティングシステム用の主記憶装置としてハードディスクドライブを置き換えるために使用できる。例えば、SSDは、それらの可動部品がないことに起因して、磁気ディスクドライブと比較した場合に、優れた性能を有し得るが、そのことは、磁気ディスクドライブに関連した、シーク時間、遅延、および他の電気機械的遅延を回避し得る。SSD製造業者は、内部のバッテリー供給を使用し得ないフラッシュSSDを作成するために不揮発性フラッシュメモリを使用でき、従って、ドライブをより多用途でコンパクトにできる。
【0005】
SSDは、いくつかのメモリ装置、例えば、いくつかのメモリチップ(本明細書では、「いくつかの(a number of)」何かは、1つまたは複数のかかる物を指し得る、例えば、いくつかのメモリ装置は、1つまたは複数のメモリ装置を指し得る)を含み得る。当業者には分かるように、メモリチップはいくつかのダイおよび/または論理ユニット(LUN)を含み得、例えば、LUNは1つまたは複数のダイであり得る。各ダイは、その上にいくつかのメモリアレイおよび周辺回路を含み得る。メモリアレイは、いくつかの物理ページに編成された、いくつかのメモリセルを含むことができ、また、物理ページは、いくつかのブロックに編成できる。フラッシュメモリセルのアレイは、一度に1ページプログラム化でき、一度に1ブロック消去できる。SSDコントローラは、メモリ管理および割当てを実行するために組込みプロセッサを使用し得る。
【図面の簡単な説明】
【0006】
図1】本開示のいくつかの実施形態に従って、少なくとも1つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。
図2】本開示のいくつかの実施形態に従った、メモリシステムの機能ブロック図である。
図3A】本開示のいくつかの実施形態に従った、ホストバスアダプタ(HBA)とシリアルアタッチメント(SA)プログラミング対応装置との間のトランスポート層インタフェースの機能ブロック図である。
図3B】本開示のいくつかの実施形態に従った、HBAおよびSAプログラミング対応装置の機能ブロック図である。
図4】本開示のいくつかの実施形態に従った、ブロック管理装置の機能ブロック図を示す。
【発明を実施するための形態】
【0007】
本開示は、メモリシステムコントローラを含む。メモリシステムコントローラは、スイッチおよび、そのスイッチに結合されたチャネル制御回路を含む不揮発性メモリ制御回路を含むことができる。チャネル制御回路は、ブロックを含む論理装置に結合できる。揮発性メモリおよび、ローカルメモリを含むメモリ管理回路は、スイッチに結合できる。メモリ管理回路は、ブロックの各々に対する正常性およびステータス情報を揮発性メモリ内のブロックテーブルに格納し、基準に基づき特定の操作に対して候補ブロックを識別する候補ブロックテーブルをローカルメモリに格納し、ブロックテーブル内の特定のブロックに対する正常性およびステータス情報を更新し、特定のブロックに対する更新された正常性およびステータス情報を基準に従って候補ブロックと比較し、特定のブロックの方が良くその基準を満足することを示す比較に応答して、特定のブロックを識別するために候補ブロックテーブルを更新するように構成できる。
【0008】
本開示の以下の詳細な記述では、その一部を形成する付随する図への参照が行われ、その中で、本開示のいくつかの実施形態がどのように実施され得るかが実例として示されている。これらの実施形態は、当業者が本開示の実施形態を実施できるように十分に詳細に説明されており、また、他の実施形態が利用され得ること、ならびに、プロセス、電気的、および/または構造的変更が、本開示の範囲から逸脱することなく行われ得ることが理解されよう。本明細書では、指示子“N”は、特に、図中の参照番号に関して、そのように指定されたいくつかの特定の特徴が、本開示のいくつかの実施形態に含まれ得ることを示す。
【0009】
本明細書では、図は、最初の1つまたは複数の数字が図面番号に対応し、残りの数字がその図内の要素またはコンポーネントを識別する、番号付け規約に従う。異なる図の間の同様の要素またはコンポーネントは、同様の数字の使用によって識別され得る。例えば、108は、図1内の要素「08」を参照し得、また、同様の要素は、図2内で208として参照され得る。理解されるように、本明細書では、様々な実施形態で示される要素は、本開示のいくつかの追加の実施形態を提供するために、追加、交換、および/または除外できる。さらに、理解されるように、図で提供される要素の比率および相対的な大きさは、本開示の実施形態を図解することを目的としており、制限的な意味で取られるべきでない。
【0010】
図1は、本開示のいくつかの実施形態に従って、少なくとも1つのメモリシステム104を含むコンピューティングシステム100の機能ブロック図である。図1に示す実施形態では、メモリシステム104(例えば、ソリッドステートドライブ(SSD))は、物理ホストインタフェース106、メモリシステムコントローラ108(例えば、SSDコントローラ)、およびいくつかのソリッドステートメモリ装置110−1、...、110−Nを含み得る。ソリッドステートメモリ装置110−1、...、110−Nは、メモリシステムに対する記憶ボリュームを提供し得る。いくつかの実施形態では、ソリッドステートメモリシステムコントローラ108は、特定用途向け集積回路(ASIC)であり得るが、その場合、コントローラ108は、例えば、ASICの形式で、物理インタフェース106およびソリッドステートメモリ装置110−1、...、110−Nを含むプリント基板に結合されている。
【0011】
図1に示すように、メモリシステムコントローラ108(例えば、ソリッドステートメモリシステムコントローラ)は、物理ホストインタフェース106に、およびソリッドステートメモリ装置110−1、...、110−Nに結合できる。物理ホストインタフェース106は、メモリシステム104と、ホスト102などの別の装置との間で情報を伝達するために使用できる。ホスト102は、メモリアクセス装置、例えば、プロセッサを含み得る。当業者であれば、「プロセッサ」は、並列処理システムなどのいくつかのプロセッサ、いくつかのコプロセッサなど、を意味し得ることを理解するであろう。ホスト例には、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル録音および再生装置、携帯電話、PDA、メモリカードリーダー、インタフェースハブ、および同類のものを含む。いくつかの実施形態に対して、物理ホストインタフェース106は、標準物理インタフェースの形であり得る。例えば、メモリシステム104がコンピューティングシステム100内で情報の記憶用に使用される場合、物理ホストインタフェース106は、他のインタフェースの中で特に、シリアルアドバンスドテクノロジーアタッチメント(SATA)物理インタフェース、PCI Express(PCIe)物理インタフェース、小規模コンピュータシステムインタフェース(SCSI)インタフェース、シリアルアタッチメントSCSI(SAS)インタフェース、またはユニバーサルシリアルバス(USB)物理インタフェースであり得る。しかし、一般に、物理ホストインタフェース106は、メモリシステム104と、その物理ホストインタフェース106に対して互換性のあるレセプタを有するホスト102との間で、制御、アドレス、情報(例えば、データ)、および他の信号を渡すためのインタフェースを提供できる。
【0012】
ソリッドステートメモリシステムコントローラ108は、他の操作の中で特に、情報の読取り、書込み、および消去を行うために、ソリッドステートメモリ装置110−1、...、110−Nと通信できる。ソリッドステートメモリシステムコントローラ108は、いくつかの集積回路および/または個別部品であり得るファームウェアおよび/または回路機構をもつことができる。いくつかの実施形態に対して、ソリッドステートメモリシステムコントローラ108内の回路機構は、ソリッドステートメモリ装置110−1、...、110−Nにわたるアクセスを制御するための制御回路、およびホスト102とメモリシステム104との間に変換層を提供するための回路を含み得る。それ故、メモリコントローラは、ソリッドステートメモリ装置110−1、...、110−Nの入出力接続(図1に示されていない)に選択的に結合して、適切な信号を適切な入出力接続で適切な時に受信し得る。同様に、ホスト102とメモリシステム104との間の通信プロトコルは、ソリッドステートメモリ装置110−1、...、110−Nのアクセスに必要なものとは異なり得る。ソリッドステートメモリシステムコントローラ108は、次いで、ホスト102から受信したコマンドを、適切なコマンドに変換して、ソリッドステートメモリ装置110−1、...、110−Nへの所望のアクセスを獲得し得る。
【0013】
ソリッドステートメモリ装置110−1、...、110−Nは、メモリセル(例えば、不揮発性メモリセル)のいくつかのアレイを含み得る。アレイは、例えば、NANDアーキテクチャをもつフラッシュアレイであり得る。NANDアーキテクチャでは、「行(row)」のメモリセルの制御ゲートが、アクセス(例えば、ワード)線に結合でき、他方、メモリセルは、選択ゲートソーストランジスタと選択ゲートドレイントランジスタとの間の「ストリング(string)」内のソースからドレインに直列に結合できる。ストリングは、選択ゲートドレイントランジスタによって、データ(例えば、ビット)線に結合できる。「行」および「ストリング」という用語の使用は、直線構成のメモリセルおよび直交構成のメモリセルのいずれも示唆するわけではない。当業者には分かるように、メモリセルのビット線およびソース線への接続方法は、アレイが、NANDアーキテクチャ、NORアーキテクチャ、または何らかの他のメモリアレイアーキテクチャかどうかによって決まる。
【0014】
ソリッドステートメモリ装置110−1、...、110−Nは、グループ化できるいくつかのメモリセルを含むことができる。本明細書では、グループは、例えば、ページ、ブロック、プレーン(plane)、ダイ、アレイ全体、またはメモリセルの他のグループなどの、いくつかのメモリセルを含み得る。例えば、いくつかのメモリアレイは、メモリセルのブロックを構成する、メモリセルのいくつかのページを含み得る。いくつかのブロックは、メモリセルのプレーンに含まれ得る。メモリセルのいくつかのプレーンは、ダイ上に含まれ得る。一例として、128GBのメモリ装置は、ページあたり4320バイトの情報、ブロックあたり128ページ、プレーンあたり2048ブロック、および装置あたり16プレーンを含み得る。
【0015】
メモリシステム104は、ソリッドステートメモリ装置110−1、...、110−N上の摩耗率を制御するために、摩耗平滑化(例えば、ガーベジコレクションおよび/または再生(reclamation))を実装できる。ソリッドステートメモリアレイは、いくつかのプログラムおよび/または消去サイクルの後、誤り(例えば、障害)を経験し得る。摩耗平滑化は、そのサイクルをアレイ全体に対してさらに均等に広げることにより、特定のグループ上で実行されるプログラムおよび/または消去サイクルの数を減らすことができる。摩耗平滑化は、ブロックを再生するために移動された有効なブロックの量を最小限にするための動的摩耗平滑化を含み得る。動的摩耗平滑化は、ガーベジコレクションと呼ばれる技術を含み得る。ガーベジコレクションは、例えば、「貪欲法」に従って、最も多くの無効なページを有するブロックを再生する(例えば、消去して、書込みのために利用可能にする)ことを含み得る。あるいは、ガーベジコレクションは、無効なページが閾値量よりも多いブロックを再生することを含み得る。書込み操作に対して十分な空きブロックが存在する場合、ガーベジコレクション操作は生じ得ない。例えば、無効なページは、異なるページに更新されている情報のページであり得る。静的摩耗平滑化は、ブロックの寿命を延ばすために、静的情報を高消去カウントを有するブロックに書き込むことを含む。
【0016】
書込み増幅(write amplification)は、情報をソリッドステートメモリ装置110−1、...、110−Nに書き込む際に生じ得るプロセスである。情報をメモリアレイにランダムに書き込む場合、ソリッドステートメモリシステムコントローラ108は、アレイ内で利用可能なスペースを求めてスキャンする。メモリアレイ内の利用可能なスペースは、情報を格納していないか、かつ/または消去されている、個々のセル、ページ、および/またはメモリセルのブロックであり得る。選択された位置に情報を書き込むために十分な利用可能スペースある場合、情報は、メモリアレイの選択された位置に書き込まれる。選択された位置に十分な利用可能スペースがない場合、メモリアレイ内の情報が、その選択された位置に既に存在する情報の読取り、コピー、移動、または他の方法での再書込み、および消去により、新しい位置に再配置されて、その選択された位置に書き込まれる新しい情報に対して利用可能なスペースを空ける。メモリアレイ内の古い情報の再配置が書込み増幅と呼ばれるのは、メモリ装置によって実行される書込みの量が、選択された位置に十分な利用可能スペースがあった場合に生じていたであろう書込み量に対して増幅されるためである。
【0017】
図1に示されたコンピューティングシステム100は、例示されているもの以上に、追加の回路機構を含むことができる。図1に示されたコンピューティングシステム100の詳細は、本開示の実施形態を曖昧にしないために減らされている。例えば、メモリシステム104は、入出力接続により入出力回路を通じて提供されたアドレス信号をラッチするためのアドレス回路を含むことができる。アドレス信号は、受信され、行デコーダおよび列デコーダによって復号されて、ソリッドステートメモリ装置110−1、...、110−Nにアクセスし得る。アドレス入力接続数は、ソリッドステートメモリ装置110−1、...、110−Nの密度およびアーキテクチャによって決まり得ることが当業者によって理解されるであろう。
【0018】
図2は、本開示のいくつかの実施形態に従った、メモリシステム204の機能ブロック図である。メモリシステム204は、ソリッドステートメモリシステムコントローラ208を含むことができる。ソリッドステートメモリシステムコントローラ208は、いくつかのソリッドステートメモリ装置、例えば、図1に示されたソリッドステートメモリ装置110−1、...、110−Nに結合できる。図2に示された例では、いくつかのメモリ装置は、いくつかの論理ユニット(LUN)250を含む不揮発性メモリを含み、また、コントローラ208は揮発性メモリ212を含む。1つのLUN 250は、独立して制御可能であり得る不揮発性メモリの一部であり得る。メモリシステム204およびソリッドステートメモリシステムコントローラ208は、それぞれ、図1に示されている、メモリシステム104およびソリッドステートメモリシステムコントローラ108に類似し得る。
【0019】
ソリッドステートメモリシステムコントローラ208は、物理ホストインタフェース206を通じて、ホスト(例えば、図1に示されているホスト102)とのインタフェースをとるためのホストインタフェース(I/F)回路214を含むことができる。ソリッドステートメモリシステムコントローラ208は、ホスト・メモリ変換回路216、メモリ管理回路218、スイッチ220、不揮発性メモリ制御回路222、および/または揮発性メモリ制御回路224を含むことができる。本明細書に記載するように、ソリッドステートメモリシステムコントローラ208は、ASICの形式で提供できるが、実施形態は、それに制限されない。
【0020】
ホストI/F回路214は、ホスト・メモリ変換回路216に結合できる。ホストI/F回路214は、物理インタフェース206などの、ホストへの物理インタフェースに結合できるか、かつ/またはそれに組み込むことができる。ホストI/F回路214は、例えば、図1におけるホスト102など、ホストとインタフェースをとることができる。ホストI/F回路214は、例えば、ホストが、PCI Express(PCIe)規格に従って情報を伝送するように構成される場合、物理層、リンク層、およびトランスポート層またはトランザクション層インタフェースを提供するPCI Express(PCIe)回路230を含むことができる。シリアルアドバンスドテクノロジーアタッチメント(SATA)規格および/またはシリアルアタッチメントSCSI(SAS)規格に従ったトランスポート層は、PCIe規格に従ったトランザクション層に類似し得る。PCIe回路230は、ホストバスアダプタ(HBA)234、例えば、拡張ホストコントローラインタフェース(AHCI)に準拠したHBAに結合できる。HBA 234は、SA対応装置236に結合でき、それは、ホスト・メモリ変換回路216に結合できる。
【0021】
一般に、ホストI/F回路214は、ホストから(例えば、PCIeバスから)受信したコマンドパケットをホスト・メモリ変換回路216に対するコマンド命令に変換することに対して、およびホスト・メモリ変換応答を、要求しているホストに伝送するためのホストコマンドに変換することに対して責任を負う。例えば、ホストI/F回路214は、SAコマンドパケットをPCIeベースのトランザクション層パケットから構築できる。HBA 234およびSA対応装置236は、図3A図3Bに関連して以下でさらに詳細に説明される。
【0022】
ホスト・メモリ変換回路216は、ホストI/F回路214、メモリ管理回路218、および/またはスイッチ220に結合できる。ホスト・メモリ変換回路216は、ホストアドレスをメモリアドレス、例えば、読取りコマンドおよび/または書込みコマンドなどの受信されたコマンドに関連付けられたアドレスに変換するように構成できる。例えば、かかる変換は、メモリへのSATA回路238によって実行され得る。「メモリへのSATA」回路238として識別されるが、その回路は、本明細書に記載するように、SASなどの他のシリアルアタッチメントに対して構成できる。ホスト・メモリ変換回路216は、例えば、ホストセクター読取りおよび書込み操作を、特定のLUN 250を対象としたコマンドに変換し得る。ホスト・メモリ変換回路216は、RAID排他的OR(XOR)回路226などの、誤り検出/訂正回路を含むことができる。RAID XOR回路226は、ホストI/F回路214から受信した情報に基づいてパリティ情報を計算できる。
【0023】
メモリ管理回路218は、ホスト・メモリ変換回路216およびスイッチ220に結合できる。メモリ管理回路218は、初期化、摩耗平滑化(例えば、ガーベジコレクションおよび/または再生)、および/または誤り検出/訂正を含むが、それらに制限されない、いくつかのメモリ操作を制御できる。メモリ管理回路218はプロセッサ228を含み得るが、本開示のいくつかの実施形態は、プロセッサ228による、例えば、ソフトウェアおよび/またはファームウェアなどの、命令の実行に頼ることなく、回路(例えば、ハードウェア)内にメモリ操作の制御を提供する。かかる実施形態は、メモリ操作を制御するために、プロセッサにもっと大きく頼るいくつかの以前のアプローチに比較して、より高速なメモリ操作を提供できる。メモリ管理回路218は、ブロック管理回路240を含むことができるが、それは、図4に関連してさらに詳細に説明される。
【0024】
スイッチ220は、ホスト・メモリ変換回路216、メモリ管理回路218、不揮発性メモリ制御回路222、および/または揮発性メモリ制御回路224に結合できる。スイッチ220は、クロスバースイッチであり得、いくつかのバッファを含むことができるか、かつ/またはそれに結合できる。例えば、スイッチ220は、内部スタティックランダムアクセスメモリ(SRAM)バッファ(ISB)225を含むことができる。スイッチは、揮発性メモリ212に含まれた複数のダイナミックランダムアクセスメモリ(DRAM)バッファ227に結合できる。スイッチは、バッファ割当て管理(BAM)回路221を含むことができ、それは、バッファタグプール223を含み得る。スイッチ220は、ソリッドステートメモリシステムコントローラ208の様々なコンポーネント間にインタフェースを提供できる。スイッチ220は、コンポーネント間に一貫性のあるアクセスおよび実装を提供するために、ソリッドステートメモリシステムコントローラ208の異なるコンポーネントに関連付けられ得る、定義された信号プロトコルにおける相違を吸収し得る。いくつかの実施形態では、スイッチ220は、直接メモリアクセス(DMA)モジュールであり得る。
【0025】
BAM回路221内のバッファタグプール223内の複数のタグは、各々、複数のDRAMバッファ227または複数のISB 225のうちのそれぞれ1つを識別できる。特定のタグがDRAMバッファ227を指し示す場合、揮発性メモリ212に対するアドレスを書き込むため、プログラマブル「BAR」アドレスをバッファタグに付加できる。BAM回路221は、いくつかのハードウェアマスターのうちの1つからの割当て要求に応答して、いくつかのハードウェアマスターのうちの1つにタグを割り当てるように構成できる。ハードウェアマスターは、メモリにアクセスできるハードウェアコンポーネントを含み得る。
【0026】
BAM回路221は、複数のISB 225のうちの1つを識別するタグの割当てを、複数のDRAMバッファ227のうちの1つを識別するタグよりも優先するように構成できる。ISB 225は、DRAMバッファ227よりも高速かつ低出力であり得、それ故、それよりも望ましい。従って、BAM回路221は、ISB 225を識別する全てのタグが割り当てられた後に限り、複数のDRAMバッファ227のうちの1つを識別するタグが割り当てられるように、タグの割当てを優先するように構成できる。いくつかの実施形態では、ソリッドステートメモリシステムコントローラ208は、768個のDRAMバッファ227および256個のISB 225の計1024個のバッファを含み得る。かかる実施形態では、バッファタグは、1024個のバッファのうちの1つを識別する10ビットのタグであり得る。バッファタグは、ハードウェアマスターに対しては特定の意味を持たないかも知れないが、正しいバッファが参照されるようにするために、例えば、読取りおよび/または書込みコマンドなど、コマンドの処理中に、ハードウェアマスターによって伝えられる。いくつかのハードウェアマスターは、複数のISB 225のうちの1つまたは複数のDRAMバッファ227のうちの1つに固有のタグの割当てを要求することなく、一般的にタグの割当てを要求するように構成できる。いくつかの実施形態では、DRAMバッファ227およびISB 225の各々は、最大のサポートされるメモリページのサイズ(例えば、4KB)に等しいサイズであり得る。
【0027】
BAM回路221は、機能していないバッファに関連付けられているタグをバッファプール223から除去するように構成できる。プロセッサ228は、BAM回路221にアクセスして、機能していないバッファに関連付けられているタグをバッファプール223から除去するように構成できる。かかる実施形態は、たとえ1つまたは複数のISB 225が障害を起こしても、ソリッドステートメモリシステムコントローラ208が適切に機能するのに役立ち得る。いくつかの実施形態では、「悪い」バッファを除去する(例えば、「マップアウト(map out)する」)能力は、製造中にISB 225をテストする代わりに使用できる。スイッチ220は、いくつかのISB 225を失うことが、ソリッドステートメモリシステムコントローラ208の操作に著しく影響を及ぼさないように、ISB 225で「オーバープロビジョニング(over−provisioned)」され得る。
【0028】
いくつかのハードウェアマスターは、BAM回路221からのタグの割当てを読取りコマンドまたは書込みコマンドと同時に要求し、また、BAM回路221からの割り当てられたタグの解除を読取りコマンドまたは書込みコマンドの終了と同時に要求するように構成できる。ハードウェアマスターは、複数のコマンドに対して同じタグを使用せず、従って、各コマンドに対して新しいタグを要求する。ハードウェアマスターは、例えば、十分なバッファ、特にISB 225が、複数のハードウェアマスターからの複数のコマンドに対して利用可能であることを確実にするのに役立つように、割当て要求よりも割当て解除要求を優先させるように構成できる。
【0029】
バッファタグの使用は、読取り操作を容易にできる。ハードウェアマスターは、読取りコマンドを割り当てられたタグと一緒に不揮発性メモリ制御回路222に送信するように構成できる。不揮発性メモリ制御回路222は、その読取りコマンドに対応する情報を割り当てられたタグで識別されるバッファに格納し、その読取りコマンドを送信した特定のハードウェアマスターに、情報が準備できていることを通知するように構成できる。
【0030】
バッファタグの使用は、書込み操作を容易にできる。ハードウェアマスターは、書込みコマンドを割り当てられたタグと一緒に不揮発性メモリ制御回路222に送信して、その書込みコマンドに対応する情報をその割り当てられたタグで識別されるバッファに格納するように構成できる。不揮発性メモリ制御回路222は、割り当てられたタグで識別されるバッファから情報を取り出し、その情報を不揮発性メモリに(例えば、適切なLUN 250に)書込み、その書込みコマンドを送信したハードウェアマスターに、情報が書き込まれていることを通知するように構成できる。
【0031】
メモリ管理回路218内のプロセッサ228は、ハードウェアマスターであり得る。プロセッサ228は、不揮発性メモリ制御回路222と、揮発性メモリ212空間全体へのアクセスを有する揮発性メモリ制御回路224との間で、複数のタグを考慮することなく、直接メモリアクセス(DMA)操作を可能にするように構成できる。他のハードウェアマスターはDMA機能を可能にしないことがあり、それ故、メモリ空間を直接アクセスするよりも、バッファへのアクセスのためのタグを頼りにし得る。プロセッサ228は、メモリ空間をアクセスするためのバッファの必要性を迂回するコマンドパイプラインを通じて送信されたコマンドとともに使用される、フィールド内の情報を介して、DMA操作を可能にできる。例えば、情報「DMA_En BARSEL」が、コマンドとともに使用されるフィールド内に含まれ得るが、ここで「DMA_En」は、DMA操作が可能にされていることを受信側に示し、また「BARSEL」は、本明細書に記載されているように、バッファタグの代わりにDRAMに対するアドレスが含まれているはずであることを示す。それ故、プロセッサ228は、他のハードウェアマスターに対するバッファベースのアクセスと同じ論理を使用して、揮発性メモリ212とLUN 250との間で情報を移動できる。「DMA_En」は、LUN 250をアクセスする際に、チャネル制御回路248によってスイッチ220にエコーされ得る。チャネル制御回路248の観点から見れば、DMAアクセスは、実質的にはバッファベースのアクセスと同一である。「DMA_En」がアサートされると、スイッチ220は、要求を揮発性メモリ212に強制できる。「BARSEL」は、それがDRAMバッファ227を指す場合、バッファタグに付加された「BAR」アドレスに類似した一意の「BAR」をスワップするために、スイッチ220によって使用される。例えば、「BAR」アドレスは、4つの位置のうちの1つを指す2ビットアドレスであり得るが、実施形態はそのように制限されていない。「BAR」アドレスの使用は、異なる同時DMAを許可し得る。
【0032】
不揮発性メモリ制御回路222は、スイッチ220に結合できる。不揮発性メモリ制御回路222は、不揮発性メモリ装置に結合できる。図2は、いくつかのLUN 250を含む、不揮発性メモリ装置を示す。いくつかのLUN 250は、いくつかのチャネルによって、不揮発性メモリ制御回路222に結合できる。いくつかの実施形態では、いくつかのチャネルは、不揮発性メモリ制御回路222によって、全体として制御できる。いくつかの実施形態では、各メモリチャネルは、図2に示すように、個別のチャネル制御回路248に結合される。特定のチャネル制御回路248は、単一のチャネルによって、複数のLUN 250を制御して結合できる。いくつかの実施形態では、チャネル制御回路248は、Open NAND Flash Interface(ONFI)対応バスによって、複数のLUN 250に結合できる。
【0033】
不揮発性メモリ制御回路222は、コマンドが、チャネル制御回路248によって実行されるのを待機している間に存在するコマンドパイプラインの少なくとも一部を含む。LUN 250に対する要求を開始する全てのハードウェアマスターは、スイッチ220を通じて同じコマンドパイプラインを共有できる。ホストからの読取りコマンド(ホスト読取り)について、ホストは、1つまたは複数のLUN 250に格納されている、特定の情報を必要とするので、LUN 250のアクセスに関して管理されない。同様に、ホストトラフィックの量に関して管理されない。本明細書に記載されるコマンドパイプラインは、LUN 250間でのプログラム時間、読取り時間、および消去時間の競合を隠す際に柔軟性を提供できる。例えば、消去時間は、プログラム時間または読取り時間より長いかも知れない。各チャネル制御回路248は、複数のチャネルによって複数のLUN 250に結合され得る。それ故、特定のチャネル制御回路248によって特定のLUNに対して消去コマンドが実行されている間、特定のチャネル制御回路248は、同じチャネル上の異なるLUN 250に対して別のコマンドを実行し得る。
【0034】
不揮発性メモリ制御回路222は、チャネル制御回路248の各々に結合されたチャネル要求キュー(CRQ)242を含むことができる。各チャネル制御回路248は、複数のLUNコマンドキュー(LCQ)246に結合されたLUN要求キュー(LRQ)244を含むことができる。LRQ 244は、L数−深さのキュー回路であり得、ここで、Lは、チャネル制御回路248あたりのLUN 250の数に等しい。CRQ 242は、C数−深さのキュー回路であり得、ここで、Cは、例えば、x*(複数のチャネル制御回路248)に等しく、xは、整数(例えば、4)である。例えば、不揮発性メモリ制御回路222は、チャネルあたり16のLUNをもつ32のチャネル、チャネル間で共有されたコマンド記憶に対して最大で128のエントリを格納するように構成された1つの128−深さのCRQ 242、特定のチャネル上のLUN 250間で最大で16のコマンドを格納するように構成されたチャネルあたり1つの16−深さのLRQ 244、およびチャネルあたり1つの2−深さのLCQ 246(ここで、LCQ 246は先入れ先出し方式(FIFO)の回路)を含むことができる。例えば、2−深さのFIFOは、現在のコマンドおよび、現在のコマンドに続いて実行される次のコマンドをキューに登録するように構成できる。かかる実施形態は、1024のエントリ(512のLUN*2−深さのLCQ)+512のエントリ(チャネルあたり1つの16−深さのLRQ*32のチャネル)+(1つの128−深さのCRQ)=総計1664(1024+512+128)のコマンド記憶エントリを提供する。本明細書に記載するように、かかるコマンドパイプライン構造は、524,288コマンド記憶エントリ(チャネルあたり32のLUN*16チャネル*LUNあたり1024−深さのFIFO=524,288)と同じ性能を何分の1かのサイズで提供できる。
【0035】
CRQ 242は、コマンドをスイッチ220から受信して、そのコマンドをLRQ 244の1つ、例えば、そのコマンドが対象とする特定のLUN 250に関連付けられているチャネルに関連したLRQ 244に中継するように構成できる。LRQ 244は、特定のLUN 250に対する第1の複数のコマンドを、その第1の複数のコマンドがLRQ 244によって受信された順番で、特定のLUN 250に関連したLCQ 246に中継するように構成できる。コマンドパイプラインは、同じLUN 250に対するコマンドが順番に、例えば、LRQ 244によって受信された順番に、移動するように構築される。LRQ 244は、満杯である特定のLUN 250に関連したLCQ 246に応答して、特定のLUN 250に対するコマンドをキューに登録するように構成でき、また、CRQ 242は、満杯である特定のLRQ 244に応答して、特定のLRQ 244に対するコマンドをキューに登録するように構成できる。
【0036】
LRQ 244は、異なるLUN 250に対する第2の複数のコマンドを、異なるLUN 250に関連したLCQ 246に、異なるLUN 250のステータスに従った順序で中継するように構成できる。例えば、異なるLUN 250のステータスはレディ/ビジーステータスであり得る。コマンドパイプラインは、異なるLUN 250間のコマンドが、順番から外れて、例えば、その時点でメモリ操作全体に対して効率的なものに従って、それらがLRQ 244によって受信された順番とは異なる順番で、移動できるように構築される。例えば、第2の複数のコマンドのうちの第1のものが第2の複数のコマンドのうちの第2のものよりも時間的に後で受信される場合において、ビジーである第2のLCQ 246に関連した異なるLUN 250のステータスに応答して、LRQ 244は、第2の複数のコマンドのうちの第2のものを第2のLCQ 246に中継する前に、第2の複数のコマンドのうちの第1のものを第1のLCQ 246に中継するように構成することができる。LRQ 244は、レディである第2のLCQ 246に関連したLUN 250のステータスに応答して、例えば、第2の複数のコマンドのうちの第1のものを中継した後に、第2の複数のコマンドのうちの第2のものを第2のLCQ 246に中継するように構成できる。
【0037】
各チャネルに対する個別の不揮発性メモリチャネル制御回路を含むいくつかの実施形態は、各チャネル制御回路248に結合された個別の誤り検出/訂正回路232(例えば、誤り訂正符号(ECC)回路)、および/または複数のチャネルで使用できるいくつかの誤り検出/訂正回路232を含むことができる。誤り検出/訂正回路232は、当業者には理解されるように、LUN 250に格納された情報に関連した誤りを検出および/または訂正するために、BCH誤り訂正などの誤り訂正を適用するように構成できる。例えば、誤り検出/訂正回路は、1080ビットの符号語に関して29ビットの誤り訂正を提供できる。誤り検出/訂正回路232は、シングルレベルセルおよび/またはマルチレベルセル(SLC/MLC)操作に対して、異なる誤り訂正方式を提供するように構成できる。
【0038】
揮発性メモリ制御回路224は、スイッチ220、および揮発性メモリ212(例えば、いくつかの揮発性メモリ装置)に結合できる。他の情報の中で特に、いくつかの揮発性メモリ装置は、図4に関してさらに詳細に説明するように、LBAテーブルおよび/またはブロックテーブルを格納できる。
【0039】
図3Aは、本開示のいくつかの実施形態に従った、ホストバスアダプタ(HBA)334とシリアルアタッチメント(SA)プログラミング対応装置336との間のトランスポート層インタフェースの機能ブロック図である。HBA 334は、図2に示されたHBA 234に類似し得る。SAプログラミング対応装置336は、図2に示されたSAプログラミング対応装置236に類似し得る。いくつかの実施形態では、SAプログラム対応装置336は、シリアルアドバンスドテクノロジー(SATA)プログラム対応装置であり得る。いくつかの実施形態では、SAプログラム対応装置336は、シリアルアタッチメントSCSI(SAS)プログラミング対応装置であり得る。
【0040】
SAプロトコルは、層を使用して概念的に定義される。SATAに対して、下から上に順番に、これらは、物理層、リンク層、トランスポート層、およびコマンド層を含む。SASに対して、下から上に順番に、これらは、物理層、PHY層、リンク層、ポート層、トランスポート層、およびアプリケーション層を含む。コマンド層および/またはアプリケーション層情報は、コマンドをフレーム情報構造(FIS)に分割することにより、トランスポート層上で伝達できる。いくつかの以前のアプローチによれば、FISは、プリミティブを使用してリンク層上で伝達された。プリミティブは、符号語を使用して物理層上で伝達され、符号語は、8b10b符号化を使用してSATAまたはSASケーブル上で伝送された。ワイヤーの2つの差動ペアから成るSATAまたはSASケーブル上での通信は、ホストの観点から、送信(Tx)および受信(Rx)として参照された。これらのワイヤーは、コマンドまたは情報のいずれかを送信でき、また、制御のために仲裁された。この方式の1つの制約は、通信がケーブル上で仲裁されると、1つの通信だけが生じることである。すなわち、SATAまたはSASが、所与の時に、単一のFISを伝送できるだけである。
【0041】
HBA 334−SAプログラミング対応装置336インタフェースが、例えば、図2に示されたソリッドステートメモリシステムコントローラ208の事例におけるように、完全にコントローラ内である場合、情報の流れは、ケーブルで接続されたSA物理層の制約に縛られない。本開示のいくつかの実施形態は、物理層およびリンク層の使用を放棄するが、他方、コマンド層352およびトランスポート層354によってサポートされるFISおよびコマンドの使用を維持する。同時実行が、物理通信を4つのセットの入力/出力、例えば、コマンド(Cmd)、応答(Rsp)、書込みデータ(WrData)、および読取りデータ(RdData)として定義することにより達成できる。従って、機能固有の相互接続を採用することにより、コマンド、応答、および情報配信間にもはや競合は存在しない。それらは、パイプライン化されて、同時に動作できる。すなわち、機能固有の相互接続は、コマンド、応答、および情報をHBA 334とSAプログラミング対応装置336との間で同時に伝達するように構成できる。機能固有の相互接続は、SAプログラミング対応装置336上のCmd入力に結合されたHBA 334上のCmd出力、HBA 334上のRsp入力に結合されたSAプログラミング対応装置336上のRsp出力、SAプログラミング対応装置336上のWrData入力に結合されたHBA 334上のWrData出力、およびHBA 334上のRdData入力に結合されたSAプログラミング対応装置336上のRdData出力を含み得る。いくつかの実施形態では、Cmd、Rsp、WrData、およびRdData入力/出力ペアの各々は、一方向であり得、8b10b符号化もプリミティブもどちらも採用できない。
【0042】
機能固有の相互接続は、コマンドインタフェース(HBA 334上のCmd出力およびSAプログラミング対応装置336上のCmd入力)、応答インタフェース(HBA 334上のRsp入力およびSAプログラミング対応装置336上のRsp出力)、および情報インタフェース(HBA 334上のWrData出力およびSAプログラミング対応装置336上のWrData入力ならびに/またはHBA 334上のRdData入力およびSAプログラミング対応装置336上のRdData出力)を、第1のコマンドプロトコル(例えば、特に、ネイティブコマンドキューイング(NCQ)および/またはタグ付きコマンドキューイング(TCQ))に応答して、同時に動作するように構成できる。機能固有の相互接続は、コマンドインタフェース、応答インタフェース、および情報インタフェースを、第2にコマンドプロトコル(例えば、特に、NonData、プログラム入出力(PIO)、および/または直接メモリアクセス(DMA))に応答して、アトミックに動作するように構成できる。
【0043】
コマンドインタフェースは、ホスト・デバイス(HD)FISをHBA 334からSAプログラミング対応装置336に配信するために使用できる。HBA 334上のWrData出力は、SAプログラミング対応装置336上のWrData入力に、情報を配信するために使用できる。SAプログラミング対応装置336上のRdData出力は、HBA 334上のRdData入力に情報を配信するために使用できる。応答インタフェースは、例えば、PIOSetups、DMAActivates、DMASetupsなどを使用して、情報配信を適格にし、また、例えば、デバイス・ホスト(DH)および/またはセットデバイスビット(SDB)などの終了を伝達するために使用できる。情報配信を適格にすることは、情報が配信される順番を定義することを含み得る。バッファリングの使用は、対応する応答FISの前に、情報の移動が開始できるようにし得る。
【0044】
図3Bは、本開示のいくつかの実施形態に従った、HBA 334およびSAプログラミング対応装置336の機能ブロック図である。HBA 334は、図3Aに示されているHBA 234に類似し得、より詳細に示されている。SAプログラミング対応装置336は、図3Aに示されているSAプログラミング対応装置236に類似し得、より詳細に示されている。
【0045】
HBA 334は、Cmd出力をSAプログラミング対応装置336に提供するコマンドフェッチャ(command fetcher)356を含むことができる。HBA 334は、Rsp入力をSAプログラミング対応装置336から受信する応答受信部358を含むことができる。HBA 334は、WrData出力をSAプログラミング対応装置336に提供する、ダウンストリームDMA装置360を含むことができる。HBA 334は、RdData入力をSAプログラミング対応装置336から受信する、アップストリームDMA装置362を含むことができる。Cmdフェッチャ356、Rsp受信部358、ダウンストリームDMA 360、およびアップストリームDMA 362の各々は、互いに独立して動作できるハードウェアコンポーネントであり得るが、いくつかの実施形態では、動作をHBA FSM 372(例えば、拡張ホストコントローラインタフェース(AHCI)状態機械)と同期させて、AHCIプロトコルが実施できるようにする。
【0046】
ダウンストリームDMA装置360およびCmdフェッチャ356は、ダウンストリーム書込みおよび/またはアップストリーム読取りのために、バスインタフェース(I/F)364に結合できる。バスI/F 364は、Cmdフェッチャ356から要求を受信し、その要求をPCIe I/F(例えば、図2に示すPCIe回路230をもつインタフェース)に渡して、適切な時に応答をCmdフェッチャ356に返すように構成できる。バスI/F 364は、PCIe I/Fから情報を受信し、要求(例えば、書込み情報のフェッチ)をそれに対して送信するように構成できる。ダウンストリームDMA装置360は、書込み情報を受信するために十分なバッファリングが存在する場合、複数のPCIe読取り要求をバスI/F 364を介してパイプライン化するように構成できる。バスI/F 364を介してPCIe I/Fに送信された各要求は、PCIe I/Fからの情報をそれぞれの書込みバッファに向ける回転バッファタグの割当てを引き起こし得る。情報は、次いで、SAプログラミング対応装置336に送信されるように、書込みバッファから回転方式で除去され得る。Rsp受信部358およびアップストリームDMA装置362は、ダウンストリーム読取りおよび/またはアップストリーム書込みのために、バスI/F 336に結合できる。バスI/F 366は、情報および/または要求をPCIe I/Fを介して伝送するように構成できる。
【0047】
HBA 334アーキテクチャは、単一のAHCIポートをホストデバイスドライバソフトウェアに提示できるが、ポート内のコマンドスロットの数を、例えば、256に拡張できる。専用のホストデバイスドライバが、制御レジスタ370(例えば、8個の32ビットコマンド発行レジスタ)によってスロットにアクセスできる。制御レジスタ370は、書込み制御情報の入力および読取り制御情報の出力のために、制御インタフェース368を介して、PCIe I/Fに接続され得る。いくつかの実施形態では、Cmdフェッチャ356は、コマンドを取り出し、コマンドが発行される順番で、SAプログラミング対応装置336に転送できる。いくつかのコマンド(例えば、32個のコマンド)が、制御レジスタ370内で同時に受信され、Cmdフェッチャ356に対してキューに加えられ得る。
【0048】
いくつかのコマンドスロットがコマンドスロットグループにグループ分けされ、それに割り当てられたメッセージ信号割込み(MSI)(例えば、MSI−X)ベクトルを有し得る。かかる実施形態は、多重ポートに対するコマンド用に32bのAHCIレジスタを含むいくつかの以前のアプローチに対して有益であり得る。本開示のいくつかの実施形態は、コマンド用に256bのレジスタを有する1つのポートを含むが、それは、割込み性能がホスト(例えば、図1に示されているホスト102)内で最適化できる可能性を改善するように、MSIベクトルをもつコマンドグループ分けを有利にできる。
【0049】
HBA 334は、NCQ読取りに対してコンテキスト配列を使用して、インターリーブされた方法で返されるようにし得る。特定の読取りコマンド内の情報は順番に処理されるが、複数の未処理の読取りコマンドの一部は互いにインターリーブされ得る。読取りコンテキストがSAプログラミング対応装置336によって開始される場合、HBA 334は、読取りコマンドの現在のステータスのレコードをコンテキスト配列から取り出し、それが最後に中断されたポイントから再開できる。読取りコンテキストが完了すると、HBA 334は、更新されたコマンド進捗値をコンテキスト配列に格納できる。コンテキスト配列位置は、各考えられる未処理の読取りコマンド(例えば、256個の未処理の読取りコマンド)に対して存在し得る。類似したコンテキスト配列が書込みに対して使用され得る。
【0050】
SAプログラミング対応装置336は、Cmd入力をHBA 334(例えば、HBA 334のコマンドフェッチャ356)から受信するコマンド有限状態機械を含み得る。SAプログラミング対応装置336は、Rsp出力をHBA 334(例えば、HBA 334の応答受信部358)に提供するデバイス・ホストアービタ(DH ARB)376を含み得る。SAプログラミング対応装置336は、WrData入力をHBA 334(例えば、HBA 334のダウンストリームDMA 360)から受信する書込みFSM 378を含み得る。SAプログラミング対応装置336は、RdData出力をHBA 334(例えば、HBA 334のアップストリームDMA 362)に提供する読取りFSM 380を含み得る。Wr FSM 378は、出力をメモリに提供でき、Rd FSM 380は、メモリからの入力を、例えば、図2に示されているホスト・メモリ変換回路216を介して、提供できる。
【0051】
DH ARB 376は、Cmd FSM 374からの入力を、例えば、DH、SDBなどの伝達のために持つことができる。DH ARB 376は、Wr FSM 378からの入力を、例えば、書込みDMASetupsのために含み得る。DH ARB 376は、Rd FSM 380からの入力を、例えば、読取りDMASetupsのために含み得る。DH ARB 376は、情報配信の順序を適格にし、Cmd FSM 374、Wr FSM 378、およびRd FSM 380からの入力に基づいて、完了をHBA 334に伝達するように構成できる。Wr FSM 378は、DH ARB 376が書込み情報配信の順序を適格にする前に、書込み情報をバッファリングするように構成された書込みバッファを含み得る。Rd FSM 380は、DH ARB 376が読取り情報配信の順序を適格にする前に、読取り情報をバッファリングするように構成された読取りバッファを含み得る。
【0052】
いくつかの実施形態では、Cmd FSM 374は、デフォルト設定で同時に動作するように構成できる。Cmd FSM 374は、PIOまたはDMAなどの単一コンテキストコマンドプロトコルの検出に応答して、例えば、「CurrencyDisabled」モードでアトミックに動作するように構成できる。アトミックに動作する場合、Cmd FSM 374は、Wr FSM 378に対して1つ、およびRd FSM 380に対して1つの、2つの「PassControl」信号のうちの1つをアサートするように構成できる。その後、Cmd FSM 374は、リセットコマンドが受信されるか、または「ReturnControl」信号がWr FSM 378もしくはRd FSM 380のいずれかからアサートされるまで、「WaitForCtl」状態に入り得る。検出されたプロトコルがNonDataである場合、いずれのPassControl信号もアサートされない。Cmd FSM 374は、コマンド自体をサービスし、完了するとアイドルに戻る。コマンドタグがリタイアされる準備ができていることを論理が示している場合、Cmd FSMは、適切なSDB FISを生成して、アイドルに戻ることができる。
【0053】
いくつかの実施形態では、Wr FSM 378およびRd FSM 380は、デフォルト設定で同時に動作するように構成できる。Wr FSM 378およびRd FSM 380は、Cmd FSM 374からのPassControl信号を受信するか、かつ/またはPIOもしくはDMAなどの単一コンテキストコマンドプロトコルを検出すると、アトミックに動作するように構成できる。Wr FSM 378および/またはRd FSM 380は、SAプロトコル(例えば、SATAプロトコルまたはSASプロトコル)に続いて、コマンドカウントが完了するか、または誤り条件が満たされるまで、アトミックに動作できるが、その場合、それぞれのFSMはそのRtnCtl信号をアサートでき、それは、Cmd FSM 374をそのWaitForCtl状態から解放できる。逆に、並行動作は各FSMが情報を独立して移動できるようにする。
【0054】
図4は、本開示のいくつかの実施形態に従った、ブロック管理装置440の機能ブロック図を示す。ブロック管理装置440は、図2に示されているブロック管理装置240に類似し得、メモリ管理回路内に含まれ得る。ブロック管理装置440は、揮発性メモリ412(例えば、DRAM)と通信できるが、それは、図2に示されている揮発性メモリ212に類似し得る。従って、例えば、ブロック管理装置440は、スイッチおよび揮発性メモリ制御回路を経由して、揮発性メモリ412と通信できる。揮発性メモリ412は、他の情報の中で特に、論理ブロックアドレス(LBA)テーブル482、ブロックテーブル484、および/またはトランザクションログ486を格納できる。
【0055】
TBAテーブル482は、LUN(例えば、図2に示されているLUN 250)内のページの物理ページアドレスを格納でき、対応する論理アドレスを含むことができる。すなわち、LBAテーブル482は、論理アドレスから物理アドレスおよび/または物理アドレスから論理アドレスへの変換を含むことができる。従って、LBAテーブル482は、対応する情報が格納できる、論理ブロックアドレスに対応する物理ページアドレスを検索するために使用できる。LBAテーブル482は、関連したSAコマンドに含まれているLBAによってインデックス付けできる。ブロックテーブル484は、いくつかのLUN内の消去可能なブロックに関する情報を格納できる。ブロックテーブル484内に格納された情報は、有効なページ情報、消去カウント、ならびに他の正常性およびステータス情報を含み得る。ブロックテーブル484からアクセスされた情報は、物理ブロックアドレスによってインデックス付けできる。トランザクションログ486は、LUN内で生じる書込みに関する情報を記録するために使用できる。いくつかの実施形態では、トランザクションログ486は、LUNへの書込みと同時に更新され得る。トランザクションログ486は、例えば、LBAテーブル482の不揮発性メモリへの更新の間に突然の電力損失または他の誤りに起因して失い得るLBAテーブル482の一部の再作成を容易にするため、LBAテーブル482が不揮発性メモリに最後に保存されてから生じたLUNへの書込みに関する情報を含み得る。
【0056】
ブロック管理装置440内に描かれているいくつかのオブジェクトは、ブロック管理装置440によって提供される機能を示す。LBAテーブルルックアップ機能490は、論理アドレスから物理アドレスへの変換を実行するために、揮発性メモリ412内のLBAテーブル482を参照できる。LBAテーブルルックアップ機能490は、論理アドレスに関連した情報が更新されると、LBAテーブル482をその論理アドレスに対応する新しい物理アドレスで更新できる。ブロックテーブルルックアップ機能491は、例えば、再生および/またはガーベジコレクションなどの摩耗平滑化に対する候補を決定するために、揮発性メモリ412内のブロックテーブル484を参照できる。再生は、消去されるブロックから、そのブロックが消去される前に、新しい場所に全ての有効なページを移動することを伴い得る。ブロック再生機能493は、揮発性メモリ412内のトランザクションログ486を参照できる。
【0057】
メモリ管理回路(例えば、ブロック管理装置440)のローカルメモリ内に格納されたブロック配列492は、再生ページ候補494、消去ブロック候補495、再生書込みブロック候補496、および/またはホスト書込みブロック候補497を、例えば、LBAテーブルルックアップ機能490および/またはブロックテーブルルックアップ機能491によってブロック配列492を参照する際に追跡し得る。かかる候補は、各ブロックが揮発性メモリ412(例えば、DRAM)に対して揮発性メモリ速度で読み取られるか、もしくは書き込まれる際に、各ブロックの正常性および/またはステータス情報を分析するための専用ハードウェアを使用して、システム内の各LUNに対して選択され得る。各LUNに対する現在の候補が、ブロック配列492内に格納できる。ブロックテーブル484がアクセスされるたびに、パイプライン構造が現在の最善の候補をブロック配列492から取り出して、それを新しいブロックテーブル484アクセスと比較できる。新しいブロックテーブル484アクセス(例えば、書込み、消去、または誤り事象の結果としての)が、ブロック配列492に格納された現在の候補よりも良い候補を明らかにすると、その新しいブロックは、ブロック配列492内のその候補に取って代わることができる。候補選択は、揮発性メモリ412へのアクセスを停止することなく起こり得るが、それは、プロセスが、パイプライン構造を使用して、揮発性メモリ412速度で継続することを可能にする。
【0058】
ブロック管理装置440は、複数のブロックの各々に対する正常性およびステータス情報を、揮発性メモリ412内のブロックテーブル484内に格納するように構成できる。ブロック管理装置440は、候補ブロックテーブル(例えば、再生ページ候補494、消去ブロック候補495、再生書込みブロック候補496、および/またはホスト書込みブロック候補497を含むブロック配列492)をローカルメモリに格納するように構成できる。候補ブロックテーブルは、特定の操作に対するいくつかの基準に基づいて、特定の操作(例えば、ホスト書込み、再生読取り、再生書込み、および/または消去)に対する候補ブロックを識別できる。ブロック管理装置440は、ブロックテーブル484内の特定のブロックに対する正常性およびステータス情報を、例えば、特定のブロックに対する書込み、読取り、または誤り事象に応答して、更新するように構成できる。ブロック管理装置440は、特定のブロックに対する更新された正常性およびステータス情報を、いくつかの基準に従って、候補ブロックと比較するように構成できる。ブロック管理装置440は、例えば、特定のブロックに対する正常性およびステータス情報が揮発性メモリ412内で更新される同じクロック周期で、特定のブロックの方がいくつかの基準を良く満足することを示す比較に少なくとも一部応答して、特定のブロックを識別するために候補ブロックテーブルを更新するように構成できる。
【0059】
前述した候補選択プロセスは、例えば、書込み、消去、または誤り事象の結果としての新しいブロックテーブル484アクセスに頼らないテーブルウォーキングプロセスで補完できる。テーブルウォーキングプロセスは、ブロック管理装置440内のブロック配列492内にローカルに格納されていないブロック情報の履歴を回復できる。テーブルウォーキングは、書込み、消去、または誤り事象の結果としてのブロックテーブル484アクセスに比べて、遅いバックグラウンドプロセスであり得る。ブロックテーブル484全体がウォークされると、テーブルウォーキングプロセスは、例えば、揮発性メモリ412の電力消費を削減するために、停止され得る。いくつかの事例では、新しいブロックテーブル484アクセスがテーブルウォーキングプロセスを再開できる。従って、ブロック管理装置440は、揮発性メモリ412内のブロックテーブル484内の複数のブロックの各々に対する更新された正常性およびステータス情報を、任意の複数のブロックに対する書込み、消去、または誤り事象とは無関係な、いくつかの基準に従って、候補ブロックと比較するように構成できる。ブロックの比較は、複数のブロックの各々が比較された後、停止され得る。
【0060】
本開示のいくつかの実施形態では、LBAテーブル482を更新するため、コヒーレンシポイントの使用に従った再生プロセス中に、ホスト動作は停止されない。再生プロセス中、例えば、再生ページ候補494からの再生ページ候補が、第1の位置から読み取られて、第2の位置に書き込まれる。この読取りおよび書込み中に、ホストは、再生のために現在処理されているLBAに新しい情報を書き込んで、LBAテーブル482を新しい物理アドレスで更新している。再生がページ読取りおよび書込みを完了すると、再生中のLBAに対するLBAテーブル482エントリが、第1の位置から読み取られた情報と同じ物理アドレスを有する場合(例えば、ホストがLBAテーブル482内のエントリを更新していない場合)に限り、LBAテーブル482は、新しい物理アドレスで更新できる。再生読取りに対応するページは、ブロックテーブル484内に、例えば、陳腐(stale)情報を格納するなど、無効としてマークされ得る。物理アドレスが、再生読取りに対応するアドレスとは異なる場合、それは、ホストが更新を行ったことを示し、LBAテーブルはその再生書込みによって新しい物理アドレスで更新されない。その再生書込みは、その再生書込みに対応する物理位置が無効な情報を格納していることを示すために、ブロックテーブル484内で無効にされ得る。
【0061】
メモリ管理回路(例えば、ブロック管理装置440)は、特定のブロックに関する再生操作中に情報が特定のブロックから読み取られる前、特定のブロックに対する論理アドレスに対応する第1の物理アドレスを、ブロックテーブル484から取り出すように構成できる。ブロック管理装置440は、再生操作中にその情報が異なるブロックに書き込まれた後、その論理アドレスに対応する第2の物理アドレスを、LBAテーブル482から取り出すように構成できる。ブロック管理装置440は、第2の物理アドレスが第1の物理アドレスに等しいことに少なくとも一部応答して、異なるブロックに対応する第3の物理アドレスでLBAテーブル482を更新するように構成できる。ブロック管理装置440は、第2の物理アドレスが第1の物理アドレスとは異なることに少なくとも一部応答して、再生操作を無効にするように構成できる。
【0062】
ブロック管理装置440は、ホストコマンドキュー498とメモリコマンドキュー499との間に結合できる。ホストコマンドキュー498は、図1に示されているホスト102などの、ホスト、図2に示されているようなメモリへのSA回路238、および/または図2に示されているホストインタフェース214のいくつかのコンポーネントに関連付けられ得る。メモリコマンドキュー499は、図2に示されているCRQ 242、LRQ 244、およびLCQ 246のうちの1つまたは複数、ならびに/または他のコンポーネントに類似し得る。
【0063】
メモリ管理回路(例えば、ブロック管理装置440)は、不揮発性メモリ制御回路(例えば、図に示されている不揮発性メモリ制御回路222)にスイッチ(例えば、図2に示されているスイッチ220)を介して結合できる。メモリ管理回路は、ホストバスの情報幅およびそのホストバスのプロトコルに基づいて、ホスト書込みに対して書込みブロッククラスタを割り当てるように構成できる。書込みブロッククラスタは、いくつかのLUN 250からのいくつかのブロックを含み得る。ホストバスは、ホスト(例えば、図1に示されているホスト102)の一部であり得る。例えば、ホストバスは、バス幅が×1、×2、×4、×8、×16、×32などのPCIeバス、および特に、PCIe第1〜第3世代のプロトコルであり得る。書込みブロッククラスタは、不揮発性メモリ制御回路内の複数のチャネル制御回路に結合されている全てのLUNよりも少ない中からの1つのブロックを含み得る。いくつかの実施形態では、メモリ管理回路は、書込みブロッククラスタのサイズを、ホストバスの情報幅およびホストバスのプロトコルに従って、最大ホストバス帯域幅をサポートするために使用されるLUNの最小数に制限するように構成できる。
【0064】
メモリシステムコントローラの書込み帯域幅は、ホストバスによってサポートされる最大帯域幅、システム内のメモリチャネル数、およびチャネルごとのLUN数の関数であり得る。ホストバスがサポートできるよりも多くのLUNを割り当てることは、そうでなければ再生操作用に使用できた資源の無駄であり得る。従って、本開示のいくつかの実施形態によれば、ホスト書込みブロッククラスタのサイズは、メモリシステム内のLUNの総数未満に制限できる。
【0065】
LUNからのブロックの残り(例えば、書込みブロッククラスタに割り当てられていないもの)が、再生操作用に割り当てられ得る。メモリ管理回路は、いくつかの割り当てられたLUNを再生操作から一時的に割当て解除するように構成できる。書込みブロッククラスタは、書込みブロッククラスタのブロックがLUNの特定のシーケンス内に書き込まれるように、ホスト書込みに対して割り当てられ得る。再生帯域幅は、近い将来、書込み用に使用され得るLUNに対する再生操作を中断することにより、メモリシステムコントローラの書込み帯域幅を改善するために制限され得る。ホスト書込みに対するLUNの特定のシーケンス内で順番が次であるLUNが、LUNの閾値数内であることを示す、LUNの特定のシーケンスに少なくとも一部応答して、割り当てられたLUNのうちの少なくとも1つが、再生操作から割当てが解除され得る。閾値数は、再生読取り操作、再生書込み操作、および再生消去操作の各々に対して異なり得る。閾値数は、書込み操作に先だって、再生操作が生じ得ない、LUNの数である「除外ゾーン(exclusion zone)」を表し得る。
【0066】
チャネルあたり複数のLUNを使用することは、特定のチャネルが処理できるよりも多くのコマンドが発行される状況をもたらし得、例えば、図2のCRQ 242、LRQ 244、およびLCQ 246に関して説明されたように、メモリチャネルに関してキュー登録されているコマンドとなり得る。メモリ管理回路は、特定のLUNに対する再生操作に対して発行されたいくつかのコマンドを、満杯である閾値内にある、特定のLUNに関連したキューの数に少なくとも一部応答して、制限するように構成できる。チャネルあたりのコマンドの最大数は、所望の電力エンベロープ内に収まるようにも制限され得る。再生操作に対して発行されるコマンド数は、電力の閾値を超えるメモリシステムコントローラによって使用される電力量に少なくとも一部応答して、制限され得る。チャネルあたりのコマンドの最大数は、例えば、同じチャネルおよび/またはLUNに対する連続的なコマンドが、効率的な操作のために十分に離間されていることを確実にするのに役立つためにも、制限され得る。メモリ管理回路は、再生操作のための第1のコマンドと第2のコマンドの発行の間に、少なくとも最短の時間(例えば、いくつかのクロック)を強制するように構成できる。例えば、再生帯域幅は、消去されたブロック数が減少するにつれて増加し得るので、最短の時間は、LUN内の消去されたブロックの総数に基づき得る。
【0067】
最大ホスト書込み帯域幅は、利用可能な消去されたブロックの十分な供給がある場合、短期的に維持され得る。消去されたブロックの供給がほぼ消費されると、書込み帯域幅は、増大された再生操作に起因して、減少し得る。メモリ管理回路は、例えば、ブロックテーブル484に関連して、LUNの範囲に対していくつかの消去されたブロックを追跡するように構成できる。メモリ管理回路は、例えば、閾値数を下回る、再生閾値数を超える特定のLUN内の消去されたブロック数に少なくとも一部応答して、特定のLUNに関する再生操作に関与するように構成できる。メモリ管理回路は、特定のLUNに対する再生操作を、例えば、閾値数をオーバーする、再生閾値数を超える特定のLUN内の消去されたブロック数に少なくとも一部応答して、中断するように構成できる。ホスト書込みは、ホスト書込み閾値数を下回る特定のLUN内の消去されたブロック数に少なくとも一部応答して、特定のLUNに対して中断され得る。メモリ管理回路は、例えば、閾値数を下回る、書込み閾値数を超える特定のLUN内の消去されたブロック数に少なくとも一部応答して、特定のLUNに対する書込みを中断するように構成できる。メモリ管理回路は、例えば、閾値数をオーバーする、再生閾値数を超える特定のLUN内の消去されたブロック数に少なくとも一部応答して、特定のLUNに対する書込みに再度関与するように構成できる。かかる実施形態は、再生操作と書込み操作との間に平衡、例えば、動的負荷分散を提供する役に立ち得る。
【0068】
いくつかのメモリ操作は、長い持続時間を有する。チャネル制御回路(例えば、図2に示されている、チャネル制御回路248)は、例えば、特定のメモリ操作がいつ完了するかを判断するために、LUNに対するステータス読取りを発行するように構成されたポーリング論理を含み得る。いくつかの事例では、かかるポーリングは、ポーリングされているLUNと同じチャネルを使用する他のコマンドを妨げ得る。本開示のいくつかの実施形態によれば、ポーリング論理は、LUNに対して発行されたコマンドによって示された操作のタイプに従って、特定の間、アイドルにされ得る。アイドル時間は、例えば、特に、読取り、書込み、および/または消去操作などの、特定の操作にかかると予期される時間に従って、特定の操作に対して設定され得る。
【0069】
〔結論〕
本開示は、メモリシステムコントローラを含む、様々な装置の例を含む。1つのかかるメモリシステムコントローラは、スイッチおよび、そのスイッチに結合されたチャネル制御回路を含む不揮発性メモリ制御回路を含み得る。チャネル制御回路は、ブロックを含む論理ユニットに結合できる。揮発性メモリおよび、ローカルメモリを含むメモリ管理回路は、スイッチに結合できる。メモリ管理回路は、ブロックの各々に対する正常性およびステータス情報を揮発性メモリ内のブロックテーブルに格納し、基準に基づき特定の操作に対して候補ブロックを識別する候補ブロックテーブルをローカルメモリに格納し、そのブロックテーブル内の特定のブロックに対する正常性およびステータス情報を更新し、特定のブロックに対する更新された正常性およびステータス情報を基準に従って候補ブロックと比較して、特定のブロックの方がその基準を良く満足することを示す比較に応答して、特定のブロックを識別するために候補ブロックテーブルを更新するように構成できる。
【0070】
要素が、別の要素「の上にある(on)」、「に接続されている(connected to)」、または「に結合されている(coupled with)」として参照されている場合、それは直接他の要素の上にあるか、それに接続されているか、もしくは、それに結合されているか、または介在する要素が存在し得ることが理解されよう。その一方、要素が、別の要素「の直接上にある(directly on)」、「に直接接続されている(directly connected to)」、または「に直接結合されている(directly coupled with)」として参照されている場合、介在する要素または存在する層はない。本明細書では、「および/または(and/or)」という用語は、いくつかの関連するリストされた項目の任意および全ての組合せを含む。
【0071】
本明細書では、「および/または(and/or)」という用語は、いくつかの関連するリストされた項目の任意および全ての組合せを含む。本明細書では、「または(or)」という用語は、特に指定のない限り、論理的に包括的ORを意味する。すなわち、「AまたはB」は、(Aのみ)、(Bのみ)、または(AおよびBの両方)を含み得る。言い換えれば、「AまたはB」は、「Aおよび/またはB」または「AおよびBの1つまたは複数」を意味し得る。
【0072】
第1、第2、第3などの用語は、本明細書では、様々な要素を記述するために使用され得るが、これらの要素は、これらの用語によって限定されるべきでないことが理解されよう。これらの用語は、1つの要素を別の要素から区別するためにのみ使用される。従って、第1の要素は、本開示の教示から逸脱することなく、第2の要素と呼ばれ得る。
【0073】
本明細書では、特定の実施形態が例示および説明されているが、当業者は、同一の結果を達成するために計算された配置が、示された特定の実施形態と置き換えられ得ることを理解するであろう。本開示は、本開示のいくつかの実施形態の適合または変形をカバーすることが意図される。上の記述が、制限的ではなく、例示的な方法で行われていることが理解されよう。上の実施形態の組合せ、および本明細書に具体的に記述されていない他の実施形態は、上の記述を再検討すると、当業者には明らかであろう。本開示のいくつかの実施形態の範囲は、上の構造および方法が使用される他の用途を含む。従って、本開示のいくつかの実施形態の範囲は、添付の請求項に関して、かかる請求項が権利を与えられる均等物の完全な範囲と共に、決定されるべきである。
【0074】
前述の発明を実施するための形態では、本開示を簡素化する目的で、いくつかの特徴が、単一の実施形態に一緒にまとめられている。開示のこの方法は、本開示の開示された実施形態が、各請求項で明示的に詳述されているよりも多くの特徴を使用する必要があるという意図の反映としては解釈されない。むしろ、以下の請求項が反映するように、発明の主題は、決して、単一の開示された実施形態の全ての特徴にあるのではない。従って、以下の請求項は、それにより発明を実施するための形態に組み込まれ、各請求項が別個の実施形態としてそれ自身の権利を主張する。
図1
図2
図3A
図3B
図4