JP2013025794A - フラッシュインタフェースの有効利用 - Google Patents

フラッシュインタフェースの有効利用 Download PDF

Info

Publication number
JP2013025794A
JP2013025794A JP2012138095A JP2012138095A JP2013025794A JP 2013025794 A JP2013025794 A JP 2013025794A JP 2012138095 A JP2012138095 A JP 2012138095A JP 2012138095 A JP2012138095 A JP 2012138095A JP 2013025794 A JP2013025794 A JP 2013025794A
Authority
JP
Japan
Prior art keywords
context
flash
die
block
state
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.)
Pending
Application number
JP2012138095A
Other languages
English (en)
Inventor
Ashok Somanache Vinay
ヴィネイ・アショック・ソマナシュ
L Ellis Jackson
ジャクソン・エル・エリス
S Hempstead Pamela
パメラ・エス・ヘンプステッド
W Swatosh Timothy
ティモシー・ダブリュー・スワトシュ
S Hicken Michael
マイケル・エス・ヒッケン
S Dell Martin
マーティン・エス・デル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2013025794A publication Critical patent/JP2013025794A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

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

Abstract

【課題】フラッシュインタフェースの有効利用のための方法を提供する。
【解決手段】第1の回路206、第2の回路204、及び第3の回路208を含む装置。第1の回路は、フラッシュレーンコントローラ(FLC)の動作のために用いられるダイに基づく情報を保持するように構成される。第2の回路は、フラッシュレーンコントローラ(FLC)によってアクティブに処理されているコンテキストを管理するように構成される。第3の回路は、第2の回路によって管理される複数のコンテキストのパイプライン実行を実行するように構成される。
【選択図】図3

Description

本願は、2011年7月14日に出願された米国仮特許出願第61/507,654号明細書の利益を主張し、その全体が参照によって援用される。
本願は、同時係属中の出願である、2011年12月21日に出願された米国特許出願第13/332,849号、及び2011年12月22日に出願された米国特許出願第13/344,599号に関連し、その全体が参照によって援用される。
本発明は、一般に、フラッシュメモリシステムに係り、特に、フラッシュインタフェースの有効利用のための方法に関する。
フラッシュメディアコントローラは、ONFI2.X等のフラッシュインタフェースを介してフラッシュデバイスと通信する。単一のフラッシュインタフェースには、フラッシュターゲットの固定数を接続することができる。単一のフラッシュインタフェースでの複数のフラッシュターゲットの接続は、複数のフラッシュターゲットの間で共有されるフラッシュインタフェースにおいてもたらされる。複数のフラッシュターゲットの間でのフラッシュインタフェースの共有は、フラッシュデバイスにボトルネックを生成する。
フラッシュインタフェースの有効利用のための方法を有することは望ましいだろう。
本発明は、第1の回路、第2の回路、及び第3の回路を含む装置に関する。第1の回路は、フラッシュレーンコントローラ(FLC)の動作のために用いられるダイに基づく情報を保持するように構成される。第2の回路は、フラッシュレーンコントローラ(FLC)によってアクティブに処理されているコンテキストを管理するように構成される。第3の回路は、第2の回路によって管理される複数のコンテキストのパイプライン実行を実行するように構成される。
本発明の目的、特徴、及び利点は、(i)ダイ管理テーブルのダイごとに情報を管理し、(ii)コンテキストテーブルへの待ち行列に入れるためのアクセスのために複数のダイの間でアービトレートし、(iii)ダイ状態マシンを用いてダイ状態をアップデートし、(iv)マルチダイ動作を実行/モニタリングし、(v)フラッシュレーンコントローラでの動作のフェーズをステージ及び実行し、(vi)フラッシュレーンの全てのアクティブなコンテキストのプライオリティオーダリングを保持し、(vii)フラッシュレーンのコンテキストのそれぞれの状態を保持し、(viii)完全なトランザクションを実行するために用いられるコンテキストのテンポラリオンチップストレージの総量を最低量又は最小限量を提供し、(ix)実行中の処理でコンテキストのそれぞれのバッファポインタを保持し、(x)コンテキスト状態マシンを用いてコンテキストの次の状態を決定することによって、コンテキストのそれぞれのためのエージェンシーを提供し、(xi)現在実行されているコンテキストの優先待ち行列に最小のコンテキスト情報を保持し、(xii)優先待ち行列から完了したコンテキストを除去し、ギャップを削減するために待ち行列を圧縮するフラッシュインタフェースの有効利用のための方法を提供することを含む。
本発明のこれら及び他の目的、特徴、及び利点は、以下の明細書、添付された特許請求の範囲、及び図面から明らかになる。
チップ(SOC)コンテキストのシステムにおいて実現されたフラッシュメディアコントローラを図示するブロック図である。 本発明の実施の形態によるフラッシュメディアコントローラ(FMC)アーキテクチャの一例を図示するブロック図である。 本発明の実施の形態によるフラッシュレーンコントローラアーキテクチャの一例を図示するブロック図である。 図3のコンテキストマネージャモジュールのサブモジュールの一例を図示する図である。 図3のダイ管理モジュールのサブモジュールの一例を図示する図である。 図3のフラッシュ動作マネージャモジュールのサブモジュールの一例を図示する図である。 図3のデータフローマネージャモジュールのサブモジュールの一例を図示する図である。 図3のコンテキストマネージャモジュールの実施の形態の一例を図示する図である。 図8のコンテキストテーブルのエントリのパイプライン実行を図示する流れ図である。 図8のコンテキスト状態マシンの実施の形態の一例を図示する図である。 図8のフラッシュ動作マネージャ(FOM)コンテキストテーブルアクセスインタフェースの読み取りタイミングの一例を図示する刻時図である。 図3のダイ管理モジュールの実施の形態の一例を図示する図である。
1つの実施の形態では、本発明によるシステムは、小型コンピュータシステムインタフェース(「SCSI」)に基づいた、SAS(「シリアルアタッチドSCSI」)、FC(「ファイバチャンネル」)、及びFC−AL(「ファイバチャネルアービトレーテッドループ)を含む様々なマスストレージプロトコル、並びにシリアルATA(「SATA」)プロトコルで動作するように設計される。当業者はマスストレージプロトコルに精通しているため、これらプロトコルはここで更に説明されない。特定のプロトコルがどこで呼び出されるかを除いて、ここに開示されたシステムと方法は、用いられる特定のプロトコルに依存せず、プロトコルの全てで正確に動作するように設計される。更に、本発明の実施の形態によるシステム及び方法は、エンドユーザ等の他のアプリケーションのためのプロトコルと同様にエンタープライズレベルのアプリケーションのためのプロトコルを含む現在利用しているか又は開発されているいずれかの他の同様のプロトコルの利用のために適しているだろう。ここに説明されたシステムは、フラッシュインタフェースの有効利用のための新規な方法を含む。
図1を参照すると、本発明の実施の形態によるフラッシュメディアコントローラを有して実現されたシステム100のブロック図が示される。一例では、システム(又はアーキテクチャ)100は、ブロック(又は回路)102、複数のブロック(又は回路)104a〜104n、複数のブロック(又は回路)106a〜106n、ブロック(又は回路)108、ブロック(又は回路)110、ブロック(又は回路)112、ブロック(又は回路)114、及びブロック(又は回路)116を備える。回路102〜116は、ハードウェア、ファームウェア、ソフトウェア、ハードウェアの組み合わせ、ファームウェア、及び/又はソフトウェア、又は他の実装として実現されたモジュール及び/又はブロックを表わす。
一例では、ブロック102は、本発明の実施の形態によるフラッシュメディアコントローラ(FMC)を実現する。ブロック104a〜104nは、フラッシュストレージデバイス又はコンポーネントの第1の数として実現される。ブロック104a〜104nは、ブロック102の第1のフラッシュレーンに連結される。ブロック102の第1のフラッシュレーンは、ブロック104a〜104nのそれぞれに独立したチップイネーブル(CE)信号を提供するように構成される。ブロック106a〜106nは、フラッシュストレージデバイス又はコンポーネントの第2の数として実現される。ブロック106a〜106nは、ブロック102の第2のフラッシュレーンに連結される。ブロック102の第2のフラッシュレーンは、ブロック106a〜106nのそれぞれに独立したチップイネーブル(CE)信号を提供するように構成される。FMC102は、2つのフラッシュレーンインスタンスで図示されるが、特定の実施の形態のその設計基準を満たすために、より多くのフラッシュレーンが実現されるであろうことは当業者に明らかである。フラッシュコンポーネント104a〜104n及び106a〜106nは、1つ以上のダイを備える単一のフラッシュパッケージとして実現される。フラッシュコンポーネント104a〜104n及び106a〜106nは、NAND及び/又はNORフラッシュデバイスを用いて実現される。ブロック102は、NANDフラッシュ及び/又はNORフラッシュのための適切なフィジカルレイヤサポート(PHY)を含む。
ブロック108は、ブロック102に連結される外部のFMCプロセッサ(FARM)を実現する。ブロック110は、ブロック102に静的ランダムアクセスメモリ(SRAM)及び/又は動的ランダムアクセスメモリ(DRAM)を連結するように構成されるメモリコントローラを実現する。ブロック112は、1つ以上のSRAMデバイスとして実現される。ブロック114は、1つ以上のDRAMデバイスとして実現される。ブロック116は、ブロック110及びブロック114を連結するダブルデータレートフィジカルレイヤ(PHY)インタフェースを実現する。一例では、ブロック102、108、110、112、114及び116は、チップ(SOC)アーキテクチャのシステムを実現する。
ブロック102は、様々なアプリケーションがフラッシュデバイス104a〜104n及び106a〜106nを用いるのを支援するように構成されたソフトIPブロックとして実現される。ここに用いられたように、用語のソフトIPブロックは、一般に、ソフトウェア(例えば、HDLコード、RTLコード等)で提供される集積回路のビルディングブロックを表わす。ブロック102は、一般に、フラッシュデバイスを有する複数のフラッシュインタフェースをサポートする。ブロック102は、一般に、プロセッサ(例えば、ARM)を含まない。しかしながら、ブロック102は、一例では、外部プロセッサ108にブロック102を連結するように構成されたインタフェース(例えば、32ビットAHB等)を実現する。ブロック102は、一般に、ブロック104a〜104n及び106a〜106nによって構成されたフラッシュメディアマスストレージアレイの管理をハンドリングするように構成される。一例では、ブロック102は、付属する複数の独立したフラッシュコンポーネントを有する単一のフラッシュデータレーンに関連する大部分の管理機能を実行する多数例示されたフラッシュレーンコントローラ(FLC)を利用する。ブロック102の機能は、ブロック102がフラッシュアクセスに関してほとんど理解しないという意味ではいくぶん一般的である。ブロック102は、一般に、フラッシュアウェアレーンをまとめ上げて単一のハードウェアエンティティを作ることに関する。一例では、ブロック102を実現するソフトIPは、アプリケーションのために出来る限り最大のレーンをサポートするためにパラメータ化する。例えば、1つの実施の形態では、レーンの数は2である。別の実施の形態では、その数は8である。
一例では、ブロック102は、以下に含まれる特徴をサポートする:(i)2つのフラッシュレーン;(ii)フラッシュレーンのそれぞれでの8つまでのチップイネーブル信号(CE);(iii)非同期ノーマルモード、非同期拡張モード、トグル1.0、ONFI2.1、ONFI2.3、及びトグル2.0を含むフラッシュインタフェース;(iv)専門のECC又は複数のレーンの間で共有されたECCは、設定可能なハードウェアである(例えば、ブロック102を実現するソフトIPブロックの特徴をパラメータ化する);(v)フラッシュインタフェースでの8ビットデータ;(vi)トグル2.0でのフラッシュインタフェース又はONFI2.3でのフラッシュインタフェースの仕様の200MHzまでのDDRレート;(vii)部分的な読み取りコマンド、(viii)ランダム読み取りコマンド;(ix)フラッシュ書き込み/読み取りのCRCストリップ/インサートオプション;(x)4Kバイトデータのための64ビットまでの訂正;(xi)512、2K、4Kバイトデータでの設定可能なnビット訂正(最大n=64);(xii)レジスタプログラミングのための32ビットAHBインタフェース;(xiii)外部メモリ(例えば、DRAM又はSRAM)でのコンテキストコマンドの記憶;(xiv)フラッシュレーンコントローラのカットスルーバッファ;(xv)優れたパフォーマンスを提供するための独立したフラッシュ読み書きデータパス;(xvi)フラッシュユニットナンバー(FUN)ごとにインオーダ状態の伝達;(xvii)フラッシュレーンごとにデータパスのための1つの読み取り及び1つの書き込みバッファコントローラ(BC)インタフェースのサポート;(xviii)コンテキスト訂正のための読み取りBCインタフェースのサポート;(xix)コンテキストアップデートのための書き込みBCインタフェースのサポート;(xx)コンテキストフリーリソースポインタ(CFRP)のための読み取り/書き込みBCインタフェースのサポート。
図2を参照すると、本発明の実施の形態によるフラッシュメディアコントローラ(FMC)アーキテクチャの一例を図示する図1のブロック102のより多くの個別ブロック線図が示される。一例では、ブロック102は、バッファコントローラ(BC)インタフェース、フラッシュデバイスインタフェース、及びプロセッサインタフェース(例えば、32ビットAHB等)の三大機能インタフェースを実現する。バッファコントローラ(BC)インタフェースは、ブロック図の左側及び左上に図示される。一例では、7つのバッファコントローラインタフェース(例えば、3つの読み取りインタフェースBC_RD_I/F、3つの書き込みインタフェースBC_WR_I/F、及び1つの読み取り/書き込みインタフェースBC_RD/WR_I/F)が実現される。フラッシュデバイスインタフェースは、ブロック図の右側に図示される。一例では、2つのフラッシュレーンインタフェース(例えば、FLASH_I/F_0及びFLASH_I/F_1)が実現される。32ビットAHBインタフェースは、ブロック図の右上に図示される。32ビットAHBインタフェースは、一例では、レジスタのプログラム、状態の読み取り、及びブロック102の内部のレジスタの診断に用いられる。
ブロック102は、一般に、ブロック(又は回路)150、ブロック(又は回路)152、複数のブロック(又は回路)154a〜154n、複数のブロック(又は回路)156a〜156n、複数のブロック(又は回路)158a〜158n、ブロック(又は回路)160、ブロック(又は回路)162、ブロック(又は回路)164、ブロック(又は回路)166、ブロック(又は回路)168、ブロック(又は回路)170、複数のブロック(又は回路)172a〜172n、及び複数のブロック(又は回路)174a〜174nを備える。回路150から174a〜174nは、ハードウェア、ファームウェア、ソフトウェア、ハードウェアの組み合わせ、ファームウェア、及び/又はソフトウェア、又は他の実装として実現されるモジュール及び/又はブロックを表わす。ブロック150は、プロセッサインタフェースロジック(PIL)を実現する。ブロック152は、データDMAマネージャ(DDM)を実現する。ブロック154a〜154nは、フラッシュバスコントローラ(FBC)を実現する。ブロック156a〜156nは、フラッシュレーンコントローラ(FLC)を実現する。ブロック158a〜158nは、データ転送パス(DTP)を実現する。ブロック160は、コンテキストフェッチアービタ(CA)を実現する。ブロック162は、コンテキストフリーポインタリソース(CFPM)を実現する。ブロック164は、消費コンテキストマネージャ(CCM)を実現する。ブロック166は、コンテキスト訂正ポート(CRP)を実現する。ブロック168は、コンテキストアップデートポート(CUP)を実現する。ブロック170は、コンテキストポインタリストポート(CPLP)を実現する。ブロック170は、一般に、オプションである。ブロック172a〜172nは、データDMA読み取りインタフェースポート(DDRIP)を実現する。ブロック174a〜174nは、データDMA書き込みインタフェースポート(DDWIP)を実現する。そして、ブロック172a〜172n及び174a〜174nは、一般に、データDMAインタフェースポート(DDIP)を構成する。
一例では、ブロック150は、ブロック108からブロック102の指定可能なリソースにインタフェースを提供する(例えば、AMBA AHBライトインタフェースを介して)。ブロック150は、構成のために全ての指定可能なリソース、ダイレクトインタフェース、及びブロック156a〜156nの内部に存在しないブロック102のサブモジュールの状態レジスタにインタフェースを提供する。ブロック150は、同様にそれぞれのブロック156a〜156nの内部に存在する指定可能なリソースにインタフェースを提供する。更に、ブロック150は、プロセッサファームウェアはブロック168を介してシステムバッファの中への記憶のためのブロック102に実メディアコンテキストを書き込むコンテキスト構造バッファ(CCB)を含む。一例では、ブロック150は以下の特徴を含む:ブロック108に対する32ビットAMBA AHBライトスレーブインタフェース、入力クロック(例えば、HCLK)のいくらか分割値(又は同じ)システムクロック(例えば、SYS_CLK)、ブロック102の全てのプロセッサ指定可能スペースと同様に全ての構成及び状態レジスタに対するアクセス、システムバッファに格納されるコンテキストを構築するためにプロセッサファームウェアによって用いられるコンテキスト構造バッファ(CCB)、指定可能リソースのアクセスがプロセッサアクセスポート(PAP)によってハンドリングされ、ブロック102で複数のサブモジュールによって用いられるレジスタを含んでいる場合、ブロック156a〜156nのそれぞれに分配されるプロセッサインタフェース。ブロック150は、全てのレジスタの復号化を実行し、ブロック156a〜156nにおいて論理的に格納されない全ての指定可能なリソースのために読み取りデータを多重化する。
ブロック152は、一般に、2つのデータ転送、フラッシュプログラム(例えば、バッファからフラッシュデバイスへのデータトランザクション)のための1つ、及びフラッシュ読み取り(例えば、フラッシュデバイスからバッファへのデータトランザクション)のための別のものを管理する。DMAデータパスは、一般に、ブロック156a〜156nからそれぞれのブロック158a〜158n、データDMAインタフェースポート(DDIP)ブロック172a〜172n及び174a〜174nを通じて別々の32ビットの読み書きデータバスを備える。ブロック158a〜158nは、ECC機能を含む。DMAデータ転送は、一般に、ブロック102の他のサブブロック(又はポートブロック)によって対応するコンテキストに対するマルチプルアクセスを含むイベントのシーケンスを備える。一例では、DMA転送は、FLC要求、検索コンテキスト動作、データ転送、及びFLC完了フェーズを含む。
FLC要求ステップにおいて、データ転送は、それぞれの要求ラインをレイズするブロック156a〜156nの1つから開始する。検索コンテキスト動作では、対応するコンテキストはコンテキスト訂正ポート(CRP)インタフェース166を介してバッファコントローラから検索される。データ転送は、コンテキストがDDIPに送信されると共に返答をし又はしない間に、DDIP、DTP、及びFLCブロックの間で発生する。FLC完了フェーズでは、選択されたブロック156a〜156nに対する完了ラインは転送の終わりを示すためにレイズされる。DDM152は、コンテキストを検索し、データトランザクションを容易にするためにDTPブロックに入力を提供するために作用する。
ブロック154a〜154nは、一般に、フラッシュレーンのそれぞれの1セットのNANDフラッシュデバイスに対するローレベルのインタフェースシグナリングを実行する。一般に、フラッシュレーンコントローラ(FLC)156a〜156nのそれぞれのために1つのフラッシュバスコントローラ(FBC)154a〜154nがある。ブロック154a〜154nは、一般に、与えられたタイプ(例えば、非同期、ONFI2.0同期、ONFI2.3同期、三星トグル1.0、三星トグル2.0等)のための異なるタイミングモードと同様にいくつかのインタフェースタイプのために、フラッシュインタフェースプロトコルのサイクルのそれぞれのタイミングを管理する。サイクルのタイミングは、一例では、内部タイミングレジスタのグループに格納されたタイミングカウントを介して制御される。ブロック154a〜154nのコアロジックは、一般に、ブロック102の残りとは異なるクロックドメインで動作する。一般に、タイミングレジスタセットのみが、ブロック156a〜156nの残りと同一のクロックドメインに属する。同期ロジックは、一般に、FBCが静止しているときに限り(例えば、未解決の動作がない)、レジスタが書き込まれるため、レジスタが静的なものとして扱われるので、これらのレジスタとFBCコアとの間に必要でない。
ブロック156a〜156nは、一般に、ダイのそれぞれに対するコマンドのスケジューリングを実行する。ブロック156a〜156nは、フラッシュレーンのそれぞれでのコマンドのシーケンシングを管理する。ブロック156a〜156nは、ダイをプログラムすると共に状態を監視するファームウェアを通じて制御と状態レジスタを提供する。ブロック156a〜156nのそれぞれは、コンテキスト管理及びダイ管理を含む。ブロック156a〜156nは、一般に、コンテキストの処理のための役割を担う。
ブロック158a〜158nのそれぞれは、データトラフィックを送り、ブロック154a〜154n、オプションの内部ECCエンコーダ/デコーダ、及びデータDMAインタフェースポート(DDIP)のそれぞれの1つの間においてデータフローのためのインタフェースのそれぞれのフロー制御を有効にする。一例では、内部ECCエンコーダ/デコーダは、ブロック158a〜158nの内部で実現される。また、ブロック158a〜158nのそれぞれは、単一のECCエンコーダ/デコーダモジュールを共有するように構成される。ブロック158a〜158nは、データDMAマネージャ(DDM)モジュール152のそれぞれとデータDMAインタフェースポート(DDIP)ブロック172a〜172n及び174a〜174nのそれぞれとの両方によって転送のそれぞれのためにプログラムされる。ブロック158a〜158nのそれぞれは、全二重動作モードで動作する独立したフラッシュ読み書きパスを含む。ブロック158a〜158nは、リージョンのそれぞれの内部の現在のdwordカウントと同様にデータ転送の間に現在のリージョンカウントを保持する。ブロック158a〜158nは、一般に、DDIP、ECCエンコーダ&デコーダ、及びFLCブロックの間のフロー制御変換を実行する。ブロック158a〜158nは、転送のそれぞれのために訂正可能なECCエラー和の動作を保持し、転送の終わりでブロック152に対する終値を送信する。ブロック158a〜158nは、ECCエンコーダ&デコーダのプログラムのために用いられるFMCレジスタを含む。レジスタは、ブロック150からのレジスタインタフェースを介してアクセスされる。ECCモジュールは、一般に、4Kバイト以上のデータの64ビット訂正ができる。しかしながら、他のレベルの訂正は、特定の実施の形態のその設計基準を満たすために実現される。一例では、デコーダゲートカウントは415Kゲートであり、エンコーダゲートカウントは75Kゲートである。
ブロック160は、一般に、ブロック156a〜156nからコンテキストのための要求を受け取り、システムバッファ(例えば、バッファコントローラを介してアクセスされたDRAM)から要求されたコンテキストを検索し、その後、ブロック156a〜156nにコンテキストを伝達するための役割を担う。訂正は、事実上、コンテキスト訂正アクセスポート(CRP)166に対する要求を介して実行される。コンテキストは、FMCの制御の基本ユニットである。コンテキストは、一般に、コマンドを実行するためのFLCによって、及びシステムバッファに又はそのシステムバッファから関連データ転送(DMA)を実行するためのFMCによって必要とされる全ての情報を含む。FLCは、完全に自主的に動く。従って、FLCは、ファームウェアによって構築されたコンテキストのリンクリストを含むシステムバッファへのバッファコントローラを介するアクセスのためのアービトレーションを必要とする。ブロック160は、一般に、ブロック166に対する要求の開始と同様にアービトレーションを提供する。その後、ブロック160は、FLCデスティネーションのそれぞれに検索されたコンテキストを率直に送る。ブロック162は、一般に、フリーポインタがファームウェアに使用可能な単一のポイントを提供するために、ブロック102のサブブロックとして実現される。
ブロック164は、一般に、完了したコンテキストが完了の後にファームウェアによって検査される単一のポイントを提供するために、ブロック102のサブブロックとして実現される。ブロック164は、一般に、複数のFLCソースの間でアービトレーションを実行する。FLCは、コンテキストポインタに関連するパス/フェイルECC状態を提供する。ブロック164は、コンテキストがフェッチされたならば、コンテキスト状態フィールドをアップデートし、その後、ファームウェアに対するコンテキストを送信する。ファームウェアが完了したコンテキストを読み取るためのより長い時間を要し、ブロック164の内部の内部メモリが満たされる場合には、ブロック164は、現在の報告されたコンテキストの後に待ち行列に入れられる完了したコンテキストを格納するためにバッファを用いる。
ブロック166〜174nは、一般に、ポートインタフェースを実現する。ポートインタフェースは、バッファコントローラによって通信するために用いられる。一例では、QBFIFOブロックは、ポートインタフェースの内部で実現される。以下のポートインタフェースもポートインタフェースの一部として実現される:コンテキスト訂正ポート(CRP)166、コンテキストアップデートポート(CUP)168、コンテキストポインタリストインタフェースポート(CPLIP)170(オプション)、データDMA読み取りインタフェースポート(DDRIP)172a〜172n、及びデータDMA書き込みインタフェースポート(DDWIP)174a〜174n。一例では、ブロック102のインタフェース信号は、4大インタフェースにグループ化される:AHBインタフェース、バッファコントローラインタフェース、NAND及び/又はNORフラッシュフィジカルレイヤ(PHY)インタフェース、及びミソレニアス(MISC)インタフェース。バッファコントローラインタフェースは、(i)レーン0&レーン1のためのDDIP BC書き込みインタフェース、(ii)レーン0&レーン1のためのDDIP BC読み取りインタフェース、(iii)CRP BC読み取りインタフェース、(iv)CUP BC書き込みインタフェース、及び(v)CPLIP BC読み取り/書き込みインタフェース。
一例では、ブロック102は、3つのクロックで実現される。ブロック102の大多数のロジックは、システムクロック(例えば、SYS_CLK)と呼ばれるクロックドメインで動作する。システムクロックは、AHBクロックである。システムクロックは、一般に、FMCプロセッサ(FARM)112の動作周波数の2分の1の周波数を有する。第2のクロックは、フラッシュクロック(例えば、FBC_CLK)と呼ばれる。フラッシュバスコントローラ(FBC)154a〜154nは、完全にフラッシュクロックドメインで動作する。一例では、先入れ先出しバッファ(FIFO)は、クロックFBC_CLKとSYS_CLKとの間の周波数を管理するために、ブロック154a〜154nのデータフローマネージャ(DM)モジュールで実現される。第3のクロックは、バッファコントローラクロック(例えばBC_CLK)である。BCを有する全てのインタフェースポートは、バッファコントローラクロックドメインで動作する。バッファリングエレメント(例えば、QBFIFO)は、バッファコントローラクロックBC_CLKとシステムクロックSYS_CLKとの間で実現される。
図3を参照すると、本発明の実施の形態によるフラッシュレーンコントローラアーキテクチャの一例を図示するブロック200の図が示される。ブロック200は、一例では、図2のブロック154a〜154n及び156a〜156nを実現するために用いられる。一例では、ブロック(又は回路)200は、ブロック(又は回路)202、ブロック(又は回路)204、ブロック(又は回路)206、ブロック(又は回路)208、ブロック(又は回路)210、ブロック(又は回路)212、及びブロック(又は回路)214を備える。回路202〜210は、ハードウェア、ファームウェア、ソフトウェア、ハードウェアの組み合わせ、ファームウェア、及び/又はソフトウェア、又は他の実装として実現されるモジュール及び/又はブロックを表わす。ブロック202は、一例では、コンテキスト処理コーディネータ(CPC)を実現する。ブロック204は、一例では、コンテキストマネージャ(CM)を実現する。ブロック206は、一例では、ダイ管理モジュール(DMM)を実現する。ブロック208は、一例では、フラッシュ動作マネージャ(FOM)を実現する。ブロック210は、一例では、プロセッサアクセスポート(PAP)を実現する。ブロック212は、一例では、フラッシュバスコントローラ(FBC)を実現する。ブロック214は、一例では、データフローマネージャ(DFM)を実現する。
ブロック202は、ブロック200に及びそのブロックからのコンテキスト情報のフローをアシストする。コンテキストフローは、ブロック204によって開始される。ブロック202は、コンテキストを取得するか解放するための要求に応えることに主として関する。コンテキストを取得するために、ブロック202は、ブロック204による新規のコンテキストのための要求に応える。最初に、ブロック202は、ブロック206に対する要求を開始する。ブロック200によって管理されたダイの間にアービトレートし、ブロック202に選択されたダイ又は論理装置番号(LUN)のためのコンテキストを転送する。その後、ブロック202は、システムバッファからコンテキストを検索することを試みるコンテキストフェッチアービタ(CFA)(例えば、図2のブロック160)に対するフェッチをもたらす。
フェッチされたならば、コンテキストは、ブロック202に伝達される。ブロック202は、コンテキストでいくらかの解釈を実行し、ブロック204にコンテキストを転送する。ブロック206がコンテキストの実行を開始するために使用可能なダイ(LUN)を有さないならば、ブロック206は、使用可能なダイの不足をブロック202に通知し、ブロック202は、ブロック204に使用可能なダイの不足への返答を通信する。ブロック202は、完了したコンテキストの解放においてもブロック200をアシストする。再び、このフローを開始するのはブロック204であり、消費コンテキストマネージャ(CCM)(例えば、図2のブロック164)を実現するブロックに対する解放メッセージをもたらすのはブロック202である。解放メッセージがCCMによって受信され動作が開始されたとき、ブロック202は、ブロック204に通知し、その後、ブロック204は、コンテキスト処理の実行を保持する。
ブロック202は、一般に、コンテキストのいくらかの解釈を実行する。具体的には、ブロック202は、コンテキストがプロセッサ制御モード(PCM)コンテキストか否かを判断する目的でコンテキストを解釈する。PCMコンテキストが受信されるとき、コンテキストフェッチ(追加)は停止するべきである。その後、ブロック202は、ブロック204がPCMコンテキストを実行し始めることを待ち、プロセッサ制御モードが完了するとき、「スタンダード」動作を再開する。プロセッサ制御モードインターバルの間に、ブロック202は、フェッチされたコンテキストが4つのdwordフラッシュコンテキストの代わりに完全な15のdwordコンテキストか否かを判断し、ブロック202は「スタンダード」動作のブロック204にそれらを送信する。
ブロック204は、一例では、コンテキスト状態マシン(CSM)、コンテキストフェッチマネージャ(CFM)、コンテキスト解放エンジン(CDE)、及びコンテキストインタープリタ(CI)を備える。ブロック204は、一般に、ブロック200によって活動的に処理されるコンテキストを管理する役割を担う。ブロック204は、一般に、アクティブなコンテキストの「ブックキーピング」を実行する。コンテキストは、システムバッファに対するフラッシュトランザクション及びDMAを実行するためにフラッシュメディアコントローラ(FMC)によって必要とされる全ての情報を提供するデータ構造である。ブロック204は、フラッシュレーンコントローラのレベルでコンテキストを管理し、従って、フラッシュトランザクションに関連するように、コンテキスト管理に主として関する。ブロック204は、フラッシュレーンのフラッシュダイに対するコマンド及びデータ転送を実行するために、ブロック208によって用いられる情報を保持する。
ブロック206は、一般に、ブロック200の動作のために必要とされるダイに基づいた情報を保持するための役割を担う。ブロック206は、ダイ管理テーブルのダイごとに情報を管理し、コンテキストテーブルへの待ち行列となるためのアクセスのためにダイの間にアービトレートする。ブロック206は、一例では、ダイ状態をアップデートするためにダイ状態マシンを含む。ブロック206は、マルチダイ動作を実行/モニタリングする。ブロック206は、一般に、READ、COPYBACK READ/COPYBACK WRITE、BLOCK ERASE、PAGE PROGRAMを含み、これらに限定されないフラッシュコマンド、及びREAD ID、READ PARAMETER PAGE、GET FEATURES、SET FEATURES、SYNCHRONOUS RESET、及びRESETを含み、これらに限定されないターゲットレベルコマンドのための役割を担う。
ブロック208は、一般に、フラッシュレーンに適用されたフラッシュ動作のそれぞれのシーケンシングをハンドリングする。1つのブロック208は、一般に、フラッシュメディアコントローラのフラッシュレーンコントローラ(FLC)のそれぞれのために実現される。ブロック208は、ブロック204のコンテキストテーブルのコマンドの間にアービトレートし、ブロック212にコマンドを適用する。一例では、ブロック208は、本来、三星NANDフラッシュデバイスにおいて知られたいくつかの特定の(かつ類似した)コマンドと同様にONFI2.0コマンドリストからの大部分の共通コマンドをサポートする。更に、他の既存の及び将来のコマンドは、ナノシーケンサ(図9〜11に関してより詳細に説明される)を介してサポートされる。本来、サポートされたコマンドは、プロセッサインターベンションなしに実行されるが、一般に他のコマンドはいくらかのレベルのプロセッササポートを用いる。
フラッシュコマンドは、ブロック208によって制御された実際のフラッシュダイに連続的に適用される原子の「サイクル」に分割される。典型的には、フラッシュコマンドが長いウェイト時間(例えば、データがチップから読み取られるために使用可能な前に、ページ読み取りは25μsを要する)を含んでいるので、「コマンドサイクル」は、しばしばフラッシュレーン上の異なるダイに「バックツーバック」実行され、従って、累積的なウェイト時間を効果的に削減できる。ブロック208は、一般に、フラッシュ「サイクル」のそれぞれが適用されるとき、ダイの状態をアップデートすることによってフラッシュダイを管理する。その後、ブロック208は、「サイクル」が次に実行されるべき(又はありうる)であるかを判断するべきための最新のコンテキストテーブルを読み取る。NANDフラッシュ動作は、一般に、1つ以上のフラッシュサイクルで構成される。4つのタイプのフラッシュサイクルが一般にある:コマンド、アドレス、データ出力(フラッシュデバイスについては、例えば、読み取り)、及びデータ入力(フラッシュデバイスについては、例えば、書き込み)。サイクルタイプは、大雑把に言ってブロック208とブロック212との間に定義された動作タイプに解釈する。
ブロック210は、一般に、ブロック200の内部のアドレス可能なリソースにFMC100のAHBライトスレーブインタフェースからのプロセッサアクセスを提供するインタフェースブロックを実現する。ここでアドレスされた大部分のリソースは、全てのコンフィギュレーション信号がグローバルレベル(共有コンフィギュレーションレジスタブロックの一部としての)で送信されるとき、主として診断目的のためのアクセス可能である。例えば、フラッシュレーンデータバッファに対する完全なアクセスは、ブロック210によって使用可能である。アクセスは単に迅速な検証の足がかりとして提供される。しかしながら、フラッシュレーンデータバッファに対するアクセスは、内部テーブルに対する直接アクセスを必要とするファームウェアパッチもサポートする。そのようなアクセスは、ブロック210によって提供される。
ブロック210の特徴は次のものを含む:AHBライトスレーブプロトコルに従い、FMCにおいてプロセッサインタフェースロジック(PIL)によってバッファされるシンプルアクセスインタフェース;リソース、コンテキストテーブル、コンテキストキャッシュ、及びダイ管理テーブルをレジストするために提供される読み取り書き込みアクセス;ブロック214に位置されるフラッシュレーンデータバッファメモリリソースに提供される読み取り書き込みアクセス。大部分のコンフィギュレーションレジスタは、一般に、ブロック200に入力として提供されるが、ブロック210は、一般に、レーンごとにコンフィギュレーションレジスタを追加するための能力をサポートする。同様に、大部分の状態及び割り込みレジスタは、一般に、ブロック200の外部に生成されるが、状態及び割り込みレジスタアクセスはサポートされる。ブロック210の主要なロジックグループは次のものを含む:インタフェースマネージャ(IF_MGR)、データフローマネージャインタフェース(DM_IF)、レジスタブロックデコーダ(REG_DEC)、レジスタブロックマルチプレクサ(REG_MUX)、割り込みハンドラ(INT_HND)、及びFLCグローバルレジスタ(GLOB_REGS)。
図4を参照すると、図3のコンテキストマネージャモジュール204のサブモジュールを図示する図が示される。一例では、ブロック204は、コンテキストテーブル(CT)220、コンテキスト状態マシン(CSM)222、コンテキストキャッシュ(CC)224、及びコンテキスト待ち行列コントローラ(CQC)226を含む。ブロック204は、一般に、フラッシュレーンコントローラに対する動作のフェーズをステージし実行し、フラッシュレーンで全てのアクティブなコンテキストのプライオリティオーダリングを保持し、フラッシュレーンでコンテキストのそれぞれの状態を保持し、完全なトランザクションを実行するために必要とされるコンテキストのテンポラリオンチップストレージの最低量を提供し(例えば、コンテキストキャッシュを介して)、実行が進行中のコンテキストのそれぞれのバッファポインタを保持し、及びコンテキスト状態マシン(CSM)222を用いてコンテキストの次の状態を決定することによって、コンテキストのそれぞれのためにエージェンシーを提供する。最小のコンテキスト情報は、コンテキストテーブル(CT)220に保持される。コンテキストテーブル220は、一般に、現在実行されているコンテキストの優先待ち行列を提供する。コンテキスト待ち行列コントローラ(CQC)226は、コンテキストテーブル220から完了したコンテキストを除去し、かつギャップを削減するためにコンテキストテーブル220を圧縮するように構成される。
図5を参照すると、図3のダイ管理モジュール206のサブモジュールを図示する図が示される。一例では、ブロック206は、ダイ状態マシン230、ダイサービスアービタ232、及びダイ管理テーブル234を備える。
図6を参照すると、図3のフラッシュ動作マネージャ(FOM)208のサブモジュールを図示する図が示される。一例では、ブロック208は、4つのサブモジュール、コマンドアービタ(CA)240、データ転送アービタ(DTA)242、フラッシュ動作フォーマッタ(FOF)244、及びナノシーケンサ246に分割される。コマンドアービタ240は、一般に、適用するためのコマンドのためにコンテキストテーブルをスキャンし、その後、フラッシュバッファコントローラ(FBC)に信号を送信するためにフラッシュ動作フォーマッタ(FOF)244によって通信する。全ての「コマンド」の部分が実行され、フラッシュが「データフェーズ」のための準備ができたならば、データ転送アービタ242は、FBCとデータフローマネージャ(DM)214との間の転送を開始する。最後に、ナノシーケンサ246は、本来、コマンドシーケンスがサポートされてなくても、フラッシュが必要とするあらゆるコマンドシーケンスを適用するために特別の「ソフトコンテキスト」を解釈する。
図7を参照すると、図3のデータフローマネージャ214のサブモジュールを図示する図が示される。データフローマネージャ214は、一般に、フラッシュレーンデータバッファメモリリソースを提供する。一例では、フラッシュレーンデータバッファメモリリソースは、カットスルーバッファ250及び252を備える。一例では、カットスルーバッファ250及び252は、プログラマブルなサイズで実現される。例えば、バッファ250及び252のサイズは、帯域幅仕様とマッチするように調節される。一例では、バッファ250及び252は、静的ランダムアクセスメモリ(SRAM)を備える。しかしながら、他のタイプのメモリは、特定の実施の形態のその設計基準を満たすために実現される。一般に、2つのカットスルーバッファは、フラッシュレーンごとに実現される。
図8を参照すると、図3のコンテキストマネージャ(CM)204の実施の形態の一例を図示する図が示される。コンテキストマネージャ(CM)204は、一般に、フラッシュレーンコントローラ(FLC)のそれぞれによってアクティブに処理されているコンテキストを管理する役割を担う。CM204は、一般に、アクティブなコンテキストの「ブックキーピング」を実行する。先に述べたように、コンテキストは、システムバッファに対するフラッシュトランザクション及びDMAを実行するためにフラッシュメディアコントローラ(FMC)102によって用いられる全ての情報を提供するデータ構造である。CM204は、FLCのレベルでコンテキストを管理し、従って、フラッシュトランザクションに関連するコンテキスト管理に主として関する。CM204は、フラッシュレーンのフラッシュダイに対するコマンド及びデータ転送を実行するためにフラッシュ動作マネージャ(FOM)によって用いられる情報を保持する。
CM204は、一般に、(i)フラッシュレーンコントローラのそれぞれに対する動作のフェーズをステージし実行し、するように構成される。(ii)フラッシュレーンのそれぞれで全てのアクティブなコンテキストのプライオリティオーダリングを保持し、(iii)フラッシュレーンのそれぞれでコンテキストのそれぞれの状態を保持し、(iv)完全なトランザクションを実行するために用いられるコンテキストのテンポラリオンチップストレージ(例えば、コンテキストキャッシュ224を介して)の最低量(又は最小限に抑えた量)を提供し、(v)実行が進行中のコンテキストのそれぞれのバッファポインタを保持し、(vi)コンテキスト状態マシン(CSM)222を用いてコンテキストの次の状態を決定することによって、コンテキストのそれぞれのためにエージェンシーを提供し、及び(vii)現在実行されているコンテキスト(例えば、コンテキストテーブル220)の優先待ち行列に最小のコンテキスト情報を保持する。コンテキスト待ち行列コントローラ226は、一般に、コンテキストテーブル220から完了したコンテキストを除去し、かつギャップを削減するためにコンテキストテーブル224を圧縮するように構成される。
コンテキスト待ち行列コントローラ(CQC)226は、コンテキストテーブル(CT)220で修正を実行するロジックブロックである。CT220は、一例では、待ち行列に入れられたコンテキストごとに1つのエントリに編成されるレジスタのブロックとして実現される。CQC226は、優先待ち行列として編成されるテーブルで動作を実行するブロックである。CQC226は、一般に、コンテキスト処理を開始し実行し、コンテキストテーブルの処理を実行する役割を担う。メイン処理は、一般に、追加、待機、修正、解放、及び圧縮の処理を含む。処理は、CQC226によってステージされ実行される。
追加フェーズは、新規のコンテキストがFMCによってフェッチされ、それらのコンテキストのためのエントリがコンテキストテーブル220に追加されるフェーズである。CQC226は、CPC202によって送信されたフラッシュコンテキスト及びコンテキスト情報の内容を検査し、内容とコンテキスト情報に基づいたエントリを追加し、作成する。一例では、コンテキストテーブルエントリは、コンテキストテーブルエントリがアクティブか否かを示すビット(又はフラグ)、コンテキスト状態を表わす値、コンテキストキャッシュインデックスを表わす値、フラッシュ動作を送信する値、フラッシュダイを表わす値、コンテキストポインタ、データ転送を無効にするべきか否かを示すビット(又はフラグ)、及びプレーンアドレスを表わす値を備える。新規なエントリは、一般に、「アクティブな」ビットセット(例えば、ロジック「1」)によって開始し、「コンテキスト状態」は値「QUEUED」に設定する。フラッシュ動作がイリーガルの場合、初期状態は値「ILLEGAL」に設定され、コンテキストテーブルエントリは解放フェーズの間に除去される。他のフィールドは、一般に、CQC226によって提供されるコンテキストと情報によって決定される。新規なエントリは、一般に、圧縮されたコンテキストテーブル220の末尾に追加される。従って、CQC226は、一般に、コンテキストテーブル220の深度を知っている。
CQC226は、一般に、CQC226がもはや未解決のデータ転送が完了するのを待っておらず、CQC226が与えられたフラッシュ動作サイクルの間に少なくとも1つ追加の動作を試みたとき、「追加」フェーズを完了する。CQC226は、コンテキストテーブル220又はコンテキストキャッシュ224に使用可能なスペースがもはやないときも、「追加」フェーズを完了する。
コンテキストマネージャ204は、完全なフラッシュ動作サイクルの間に待つことを強制されるか、又は強制されない。コンテキストマネージャ204は、一般に、最小のフラッシュ動作期間(例えば、フラッシュ動作期間レジスタを介して)を強制するための能力を有する。そのような最小の期間は、例えば、フラッシュレーンがPROGRAM又はERASEのコマンドの後にポーリングすることを除いて主として使用されていないケースのために望ましい。そのようなインスタンスでは、コンテキストフェーズは、追加又は解放がないとき、実行するべきための非常に短時間を要する。従って、レーンが連続的に使用中であるフラッシュダイをポーリングする状態においてレーンが存在するための傾向があり、その結果としてその消費電力が保証されないときフラッシュインタフェースで電力を消費する。CQC226は、一般に、所定時間が完了する(例えば、時間は「フラッシュ動作タイマー」レジスタにおいて指定される)まで存続する。所定時間が完了したとき、CQC226は「修正」フェーズに入る。
CQCによって開始される次のフェーズは、一般に、「修正」フェーズである。修正フェーズでは、コンテキストテーブル220は、フラッシュ動作マネージャ(FOM)によって及びデータパス転送からの結果によって実行されたフラッシュ動作に基づいて修正される。アップデートは、一般に、コンテキストの状態に関連し、従って、一般に、コンテキスト状態マシン(CSM)222によって開始される。状態アップデートが発生するとき、CSM222はCQC226に最新の状態及びコンテキストテーブルインデックスを送信する。その後、CQC226は、コンテキストテーブル220のエントリをアップデートする。FOMがフラッシュインタフェース処理のサイクルを終えるとき修正フェーズは終わる。FOMは、信号(例えば、FOM_CM_FLASH_PROC_CMPLT)のアサートによって、フラッシュインタフェース処理が終わったことをコンテキストマネージャ204に通知する。修正フェーズが完了したならば、CQC226は、解放、圧縮、及びコンテキストテーブル220のコンテキストの追加を実行する。この時間の間に、コンテキストテーブル220はFOMに対してアクセス不能である。CQC226は、コンテキストテーブルがエントリを読み取ったこと、及びコンテキストキャッシュに読み取られたデータが特定のクロックサイクルの間に有効であることをFOMに示す信号(例えば、CM_FOM_CT_VALID)をデアサートすることによってFOMに対してアクセス不能なコンテキストテーブル220を強制する。
修正フェーズが完了したとき、CPC202は「解放」アクションを開始する。解放アクションは、CQC226が実行を終えたエントリ有産者を捜すコンテキストテーブル220を探索するモードにCQC226を至らせる。CQC226は、エントリがコンテキストの状態の実行を終えたか否かの判断に基づく。コンテキストが「完了」状態であるとき、コンテキストはCQC226によって解放される。一例では、コンテキストは、CQC226がコンテキストの完了状態に関してデータパスからの通知を待つ状態である。例えば、読み取り動作の場合には、コンテキストはDATA_TRANSFER_DONE状態にあり、ECCチェックの結果を待つ。この場合には、CQC226は一時的に解放処理を停止し、状態がデータパスから復帰されるのを待つ。この時間の間に、CQC226は「追加」を許可する。しかしながら、待機状態が復帰されれば、コンテキストはCQC226によって解放され、消費されたコンテキストレコードはCPC202に(結局、消費コンテキストマネージャ(CCM)164に)転送される。
CQC226がコンテキストを解放したとき、CQC226はコンテキストテーブル220の通信エントリのための「アクティブ」ビットを除去する。CQC226がコンテキストテーブル220ごとにコンテキストを調査するまで、その処理は継続する。CQC226がコンテキストテーブル220のアクティブなコンテキストの終わりに到達するとき、解放フェーズは完了する。
CQC226によって解放されたコンテキストは除去されたテーブルエントリのそれぞれにおいて「アクティブ」ビットを有する。ホールを満たすまでテーブルをシフトするための機構なしに、アクティブなエントリはコンテキストテーブル220に支出される(又は細分化される)。支出されたコンテキストは、コンテキストテーブルをスキャンすることを困難にし、「追加」フェーズをより複雑にする。コンテキストテーブル220が優先待ち行列としてそのキャラクタを保持することを保証するために、コンテキストテーブル220は圧縮される。圧縮処理において、CQC226がコンテキストを解放するとき、CQC226は1つの位置によって解放されたエントリの後に直ちに全てのエントリをシフトする。処理が完了するとき、全てのアクティブなエントリはプライオリティオーダーのリストのフロントにあり、全ての「ホール」は除去される。他のアクションの場合であるとき、圧縮処理が完了されるとき、CQC226は「完了」セマフォ(又はビット)をアサートする。最終の圧縮フェーズの終わりで、CQC226は追加フェーズを開始する。
CQC226は、一般に、プロセッサ制御モードを知っている。プロセッサ制御モードでは、全てのCM204はスタンダード動作を停止し、フラッシュ動作マネージャ208の内部のナノシーケンサ246によって実行される「ソフトコンテキスト」によってFLCの動作が本質的に駆動されるモードで進行する。ソフトコンテキストは、スタンダードフラッシュコンテキストとは異なるサイズである。一例では、ソフトコンテキストは完全な15の32ビットダブルワードを備えるが、「フラッシュコンテキスト」、FLCによって実行された完全なメディアコンテキストの部分は、一般に、ちょうど4つの32ビットダブルワードを備える。
プロセッサ制御モード(PCM)は、一般に、「フラッシュ動作」フィールドがPROCESSOR_CONTROL_MODEに設定されるコンテキストがコンテキスト待ち行列のトップに現われるとき開始する。一般に、CQC226がPCMコンテキストを待ち行列に入れれば、CQC226がスタンダードコンテキストの訂正を停止するとき、コンテキストテーブル220にPCMコンテキストの後ろにアクティブなエントリはない。PCMが開始するとき、CQC226は信号(例えば、CM_CPC_PROC_CNTL_MODE)を介してCPC202に通知する。通知に応じて、CPC202は、PCMコンテキストに与えられた位置で見つけられた「ソフトコンテキスト」をフェッチする。FOMに送信されるものの観点から、PCMコンテキストがコンテキストテーブル220の他のアクティブなエントリの後ろにある間に、FOMは、一般に、コンテキストテーブル220のPCMコンテキストの存在についての情報を有さない。CM204がソフトコンテキストを実行し始めるFOMのための準備ができるまで、コンテキストテーブル220のPCMコンテキストエントリは、FOMに「アクティブ」ビットを0として送信する。
FOMがソフトコンテキストを読み取り始めるとき、ソフトコンテキストが格納されるコンテキストキャッシュ224によって動作がFOM208に送信されるとき、CQC226は動作をスヌープする。動作がDMAコンテキスト(例えば、プリフェッチデータ、セット読み取りデータバッファ、又はコンテキストポインタの解放)を含んでいるとき、CQC226は、コンテキストテーブル220の現在未使用のストレージを選出し、トラッキングのためのコンテキストテーブルにポインタを配置する。それらのDMAコンテキストが完了するとき、FOM208はコンテキストマネージャ204に通知し、その後、コンテキストマネージャ204は通常の方法でコンテキストを解放する。
スヌープしている間に、CQC226は、「ネクストソフトコンテキストのフェッチ」動作を捜す。CQC226がそれを見つけるとき、CQC226はCPC202に信号(例えば、CM_CQC_PCM_NEXT_CONTEXT)をアサートし、CPC202はネクストソフトコンテキストをフェッチする。FOM208がソフトコンテキスト実行が完了したことをCM204に通知するとき、FOM208はFOM/CMコマンドインタフェースでCM204に通知する。その後、CQC226は、CPCに信号(例えば、CM_CPC_PROC_CNTL_MODE)をデアサートし、スタンダード動作は継続する。一例では、CM204がプロセッサ制御モードに入っており、現在ソフトコンテキストを受信するための準備ができていること示すためのレベルとして信号CM_CPC_PROC_CNTL_MODEがアサートされる。
CQC226の別の重要な機能は、タイムアウト状況をモニタすることにある。一例では、CQC226は、同一のコンテキストテーブルエントリがコンテキストテーブル220のトップ(例えばエントリ0で)に属するシステムクロック(SYS_CLK)サイクルの数を数えるように構成されたカウンタを含む。カウント値がプログラマブルな「タイムアウト」カウンタの値に到達する場合、コンテキストテーブル220のトップのエントリはタイムアウトを有すると見なされる。エントリがタイムアウトを有すると見なされるとき、エントリは、コンテキストテーブル220から除去され、コンテキストポインタは、消費コンテキストインタフェースのコンテキスト処理コーディネータ(CPC)202にリターンされる。
コンテキストのためのリターン状態は2つの起こり得る「タイムアウト」状態の1つである。第1のケースでは、タイムアウトは、可能性としてフラッシュレーンの別のダイが使用中で、R/Bラインを押し下げている状況である。この場合には、状態は、タイムアウトが別のダイのタイムアウトであることを示す。第2のケースでは、コンテキストのためのダイはカルプリットであると認識される。ここで、異なる状態はダイがカルプリットであることを示してリターンされる。
コンテキストテーブル220は、本質的にエントリの記憶媒体である。コンテキストテーブルの深度は、パラメータ化することができる。例えば、レーンごとに16ダイをサポートすることができるチップの場合には、16のエントリが実現される。1つを超える動作が1つのダイごとに管理されるならば、深度を増加させることは有利である。コンテキストテーブル220は、最小の機能を有する。大部分のより複雑な処理は、コンテキストテーブル220でCQC226によって実行される。しかしながら、コンテキストテーブル220は、複数の読み取りインタフェース、及び読み取りインタフェースのそれぞれのための多重化ロジックで実現される。一例では、コンテキストテーブル220は、FOM208に対するインタフェース、及び読み取りアクセシビリティのためのコンテキスト状態マシン(CSM)222に対するインタフェースによって実現される。コンテキストテーブル220は、CQC226に対する読み取りインタフェースも有する。コンテキストテーブル220は、プロセッサによってもアクセスされる。
コンテキストテーブル220は、同様にテーブルの圧縮フェーズのために用いられる「シフト」性能を有する。それに加えて、CQC226はシンプルな書き込みインタフェースを用いてコンテキストテーブル220をアップデートする。一例では、コンテキストテーブル220は、フリップフロップで実現される。コンテキストテーブル220がフリップフロップで実現されるとき、読み取りアクセスのために必要なアービトレーションはない。コンテキストテーブル220が約1000を超えるフリップフロップのサイズに増加する場合、コンテキストテーブル220はレジスタファイル又はSRAMで実現されるが、追加の管理及びアクセスのアービトレーションも実現される。
コンテキストキャッシュ224は、コンテキストテーブル220に類似する別のコンテキストデータストレージエレメントである。コンテキストキャッシュ224は、一般に、エントリのパラメータ化することができる数を含む。一例では、エントリの数は8である。しかしながら、エントリの他の数は、特定の実施の形態のその設計基準を満たすために実現される。例えば、完全なパイプライン動作のために事実上必要とされるよりエントリの数は1つ又は2つ以上に設定される。数は、一般に、プロセッサ制御モードの完全な「ソフトコンテキスト」のための十分なスペースを許可するために十分に大きくされる。先に述べたように、完全なコンテキストは15の32ビットダブルワードを備える。完全なメディアコンテキストのサブセットは「フラッシュコンテキスト」と指称される。フラッシュコンテキストは、一般に、完全なメディアコンテキストの第1の4つのダブルワード(又はdwords)である。フラッシュコンテキストの4つのdwordsは、一般に、ファームウェアによって指定された完全な動作を実行するためにFLCによって用いられる全ての情報を含む。スタンダード動作(例えば、FLCがプロセッサ制御モードにないとき)の間に、フラッシュコンテキストの第1の2つのdwordsのみがコンテキストキャッシュ224に格納される。フラッシュコンテキストの残りは、一般に、コンテキストテーブル220に格納される。
コンテキストキャッシュ224は、一般に、エントリのそれぞれの状態を保持する。一例では、状態は、エントリがFREE又はUSEDか否かを示すビットを備える。一例では、そのような8ビットは、コンテキストキャッシュ224で実現される。フラッシュコンテキストがコンテキストキャッシュ224で位置に書き込まれるとき、位置の状態はUSEDになる。CQC226がその位置をクリアすることを許可する状態変更についての情報を取得するとき、位置の状態はFREEにリターンする。スタンダード動作の間に、コンテキストキャッシュ224は、コンテキストキャッシュ224が状態ビットに基づいてフリーエントリのためのスペースを有することをCQC226に通知する。フリーロケーションがあるならば、CQC226は自由にCPC202からコンテキストを要求することができる。CPC202が新規のフラッシュコンテキストをフェッチしたとき、CPC202はデータの32ビットダブルワードのバーストとしてコンテキストキャッシュ224にフラッシュコンテキストを送信する。データが有効なとき、信号(例えば、CPC_CM_ENQ_CTX_VALID)がアサートされる。コンテキストキャッシュ224は、フリーロケーションにデータを書き込む。コンテキストキャッシュ224は、CPC202が単に1つのフラッシュコンテキストを書き込むだろうと予期する。
コンテキストテーブル220のトップのエントリがPROCESSOR_CONTROL_MODE動作として示されるときに入るプロセッサ制御モードでは、コンテキストキャッシュ224は完全に自由である。プロセッサ制御モードでは、コンテキストキャッシュ224は、CPC202からソフトコンテキストを受信することを予期する。コンテキストキャッシュ224は、ソフトコンテキストが15のdwordsを含むことも予期する。本質的に、コンテキストキャッシュ224は、CPC202によって送信された全てのデータを受け取って、スレーブとして行動する。コンテキストキャッシュ224にデータの適正量を書き込むことはCPC202の責務である。コンテキストキャッシュ224は、FOM208によってアクセス可能であり、フラッシュユニットで実コマンドを実行するとき、完全なフラッシュコンテキスト情報を用いる。FOM208は、32ビットダブルワードにアドレスを提供し、コンテキストキャッシュ224は、以下のクロックサイクルで要求されたダブルワードによって応答する。プロセッサ制御モードの間に、コンテキストキャッシュ224からの読み取られた応答は、動作の内容に基づいたアクションを実行するコンテキスト待ち行列コントローラ(CQC)226によってスヌープされる。コンテキストキャッシュ224は、コンテキストテーブル220であるときも、プロセッサインタフェースによってアクセス可能である。
FOM208は、コンテキストテーブル220からエントリを読み取り、動作を実行する。FOM208は、動作を実行した後にコンテキスト状態マシン(CSM)222をアップデートする。CSM222は、コンテキストテーブル220の特定のエントリに状態を格納する。その後、FOM208は、実行するための次のエントリ等を続行する。コンテキストの終わりに到達した後に、FOM208はロールし、実行の次の部分をチェックするためにエントリをもう一度実行する。コンテキストテーブル220で多重エントリを実行する処理は、一般に、フラッシュインタフェースでコマンドのパイプライン実行を提供する。フラッシュインタフェースでコマンドのパイプライン実行は、一般に、フラッシュインタフェースの有効利用を提供する。部分によって多重エントリ部分を実行しコンテキストテーブル220に状態を再格納することによって、FOM208は、従来のテクニックよりもフラッシュインタフェースのより多くの有効利用を提供する。
図9を参照すると、FOM208が複数のエントリを一つ一つ実行し、コンテキストテーブル220に状態をレストアする処理300の一例を図示する流れ図が示される。一例では、処理(又は方法)300は、ステップ(又は状態)302、ステップ(又は状態)304、ステップ(又は状態)306、ステップ(又は状態)308、ステップ(又は状態)310、ステップ(又は状態)312及びステップ(又は状態)314を備える。ステップ302では、FOM208は、コンテキストテーブル220のエントリの設定数(例えば、N)があるか否かをチェックする。エントリNの設定数は設定可能である(例えば、レジスタ等の値)。一例では、数Nは、4として設定される。別の例では、数Nは、10として設定される。Nが10の値に設定される例では、コンテキストテーブル220に10のエントリがあるまで、処理300は状態302を継続する。コンテキストテーブル220に10のエントリがあるとき、処理300はステップ304に進む。ステップ304では、FOM208は、コンテキストテーブル220のエントリ1を読み取り、コマンドの一部を実行する。その後、処理300はステップ306に移行する。ステップ306では、FOM208は、CSM222にこの情報をアップデートし、処理300は、ステップ308に移行する。ステップ308では、CSM222は、コンテキストテーブル220のエントリ1にこの情報をアップデートし、処理300は、ステップ310に移行する。ステップ310では、FOM208は、コンテキストテーブル220の次のエントリ(例えば、エントリ2)を読み取り、コマンドの一部を実行する。その後、処理300はステップ312に移行する。ステップ312では、処理は、コンテキストテーブル220のエントリ10に到達するまで、ステップ306から310を繰り返す。10のエントリのそれぞれの部分が実行されたとき、処理300はステップ314に移行する。ステップ314では、処理300は、10のエントリが全て完了したか否かをチェックする。エントリが完了し続ける場合、処理300は、ステップ304にリターンし、FOM208はロールバックし、再びエントリのそれぞれをチェックし、エントリの全ての設定数が完了するまで、コマンドの全ての残存部分を実行する。
CSM222は、一般に、エントリの現在状態に基づいてコンテキストテーブル220のコンテキストのそれぞれの実行状態、及びFOM208によって実行されている動作又はデータパス動作の状態のいずれかを決定するように構成される。修正フェーズでは、CSM222は、FOM208がコマンドを適用するか、結果をリターンするごとにCQC226によって呼び出される。FOMコマンド通知インタフェース及びFOMコンテキストテーブル読み取りインタフェースの内容は、一般に、次の状態を決定するためにCSM222のために必要とされる全ての情報を提供する。
解放フェーズでは、CQC226がコンテキストテーブル220をスキャンし、コンテキストテーブルエントリがアクション(例えば、TRANSFER_DATA状態又はPREFETCH_DATA状態)を待っている状態であるコンテキストテーブルエントリにエンカウントするとき、CSM222はCQC226によって呼び出される。TRANSFER_DATA状態又はPREFETCH_DATA状態にエンカウントするとき、CQC226はデータ転送の状態に関するデータパスからの情報(例えば、DM、DDM、又はDTPのいずれか)を待つ。どちらにしても、CSM222は、一般に、懸案のコンテキストテーブルエントリのための次の状態を決定するために呼び出される。CSM222は、コンテキストテーブルエントリが完了状態(例えば、COMPLETED又はCOMPLETED WITH ERROR)に移行するときに、ダイ管理モジュール206に通知するための役割も担う。
図10を参照すると、コンテキスト状態マシン(CSM)400の実施の形態の一例を図示する図が示される。一例では、CSM400は図8のCSM222を実現するために用いられる。一例では、CSM400は、状態402、状態404、状態406、状態408、状態410、状態412、状態414、状態416、状態418、状態420、及び状態422を備える。状態402は、コンテキスト待機状態を備える。状態404は、読み取り適用状態を備える。状態406は、読み取り完了状態を備える。状態408は、データ転送状態を備える。状態410は、データ転送完了状態を備える。状態412は、プリフェッチデータ状態を備える。状態414は、プログラムフラッシュ状態を備える。状態416は、コピーバックプログラム状態を備える。状態418は、準備のための待機状態を備える。状態420は、完了状態を備える。状態422は、エラー完了状態を備える。追加フェーズが完了したら、コンテキストマネージャ(CM)204が適切な合計の時間(例えば、全ての未解決のデータ転送の完了、又は最小の「フラッシュ動作期間」が経過するまで)待機したならば、コンテキストテーブル220はフラッシュレーンに適用するための選択コマンド及びデータ転送のためにフラッシュ動作マネージャ(FOM)208によって用いられるための準備ができる。それらのコマンドが適用されるとき、FOM208はCM204に通知し、CM204は影響を受けたエントリを適切に修正する。コマンドがフラッシュに対して連続的に実行されるので、コンテキスト状態へのアップデートが連続的に発生する;従って、別々のコンカレントなハードウェア状態マシンエンティティはコンテキストテーブルエントリのために必要ではない。そのエントリは、CSM400の単一のインスタンスを共有する。状態情報のみを格納する必要があり、状態遷移は現在状態情報及びコマンド/状態情報を用いて決定される。
図11を参照すると、図8のフラッシュ動作マネージャ(FOM)コンテキストテーブルアクセスインタフェースのための読み取りタイミングの一例を図示する刻時図が示される。同様のタイミングは、フラッシュ動作マネージャ(FOM)のためのコンテキストキャッシュインタフェースで実現される。
図12を参照すると、図3及び5のダイ管理モジュールの実施の形態の一例を図示する図が示される。ダイ管理モジュール(DMM)206は、一般に、フラッシュレーンコントローラ(FLC)の動作のために用いられるダイに基づく情報を保持する役割を担う。一例では、DMM206は、ブロック(又は回路)230、ブロック(又は回路)232、及びブロック(又は回路)234を備える。ブロック230は、ダイ状態マシン(DIE FSM)を実現する。ブロック232は、ダイサービスアービタを実現する。ブロック234は、ダイ管理テーブルを実現する。DMM206は、一般に、ダイ管理テーブル234のダイごとに情報を管理し、コンテキストテーブル220への待ち行列に入れるためのアクセスのためにダイの間でアービトレートし、ダイ状態マシン230を用いてダイ状態をアップデートし、マルチダイ動作を実行/モニタリングするように構成される。DMM206は、一般に、限定されるものではないが、READ、COPYBACK READ/COPYBACK WRITE、BLOCK ERASE、及びPAGE PROGRAMを含むフラッシュコマンドのための役割を担う。DMM206は、限定されるものではないが、READ ID、READ PARAMETER PAGE、GET FEATURES、SET FEATURES、SYNCHRONOUS RESET、及びRESETを含むターゲットレベルコマンドのための役割を担う。
一例では、ダイ管理モジュール(DMM)206は、コンテキスト処理コーディネータ(CPC)202のためのインタフェース(例えば、CPC INTF)、コンテキストマネージャ(CM)204のためのインタフェース(例えば、CM INTF)、及びプロセッサインタフェース(例えば、UP INTF)を有する。CPC及びCMインタフェースは、限定されるものではないが、(i)CPCがコンテキストポインタを要求し、(ii)DMM DSAがアービトレーションを完了したことを示し、(iii)コンテキストポインタが有効か否かを示し、(iv)ウイニングダイのコンテキストポインタを示し、(v)ウイニングダイの数を示し、(vi)ウイニングダイのネクストポインタ及びコマンド種別のためにダイ管理テーブル234をアップデートし、及び(vii)ダイ管理テーブルをアップデートし、解放するべきための対応するダイの状態を設定するためにダイ管理モジュール206をもたらすための信号を含む。プロセッサインタフェースは、限定されるものではないが、(i)レジスタライトストローブ(例えば、コンテキストネクストポインタ、コンテキストエンドポインタ、コンテキストフェッチイネーブル等のための)、(ii)プロセッサデータバス、(iii)コンテキストネクストポインタレジスタ値、(iv)コンテキストエンドポインタレジスタ値、(v)コンテキストフェッチイネーブルレジスタ値、(vi)ダイ状態、及び(vi)マルチダイ動作を制御するための信号を含む。
ダイ管理テーブル234は、一般に、コンテキストリンクリストポインタを含むダイごとに情報、状態ビット、及びそれらのターゲットを共有する他のダイの選択によって「ヘルドオフ」されたダイによって生じたクレジットを格納する。ダイのそれぞれは、一例では、コンテキストネクストポインタ、コンテキストエンドポインタ、コンテキストフェッチイネーブル、クレジットカウント、及び状態ベクトルを含むフィールドを有するダイ管理テーブル234にエントリを有する。コンテキストネクストポインタは、一般に、実行されるコンテキストのためのリンクリストのネクストコンテキストポインタである。コンテキストネクストポインタは、最初にプロセッサによって設定され、その後、コンテキストがフェッチされるとき、ハードウェアによってアップデートされる。コンテキストエンドポインタは、一般に、ダイのためのコンテキスト待ち行列のリンクリストの最後のポインタである。コンテキストエンドポインタは、一般に、プロセッサによって設定される。コンテキストフェッチイネーブルフィールドは、一般に、フェッチの自動化及びハードウェアによるコンテキストの実行を有効にするためにプロセッサによって用いられる。クレジットカウントフィールドは、一般に、ダイが選択されることを禁じる読み取りシリーズ又は他のいくらかのコマンドでターゲットの別のダイが待ち行列に入れられる「ロックアウト」状況のために、ダイによるクレジットの数を表わす値を含む。状態ベクトルフィールドは、一般に、コントローラの観点からダイの状態を保持する。即ち、状態ベクトルフィールドは、必ずしもダイのRDY/ARDY状態ではなく、むしろダイサービスアービタ232のアービトレーション及びコンテキストマネージャ204のコンテキスト状態マシン222によって必要とされる現在の動作に関する追加情報を含む状態ベクトルである。
コンテキストネクストポインタ及びコンテキストエンドポインタは、一般に、FLCによって実行されるコンテキストのリンクリストをセットアップするためにプロセッサによって用いられる。コンテキストがフェッチされた後、コンテキストネクストポインタはハードウェアによってアップデートされる。ネクストポインタ及びエンドポインタが等しいとき、待ち行列はハードウェアによってダイのために空いていると見なされる。プロセッサは、単にコンテキストエンドポインタを修正することによってダイのためのリンクリストを追加する。
状態ベクトルのフィールドは、ターゲットビジー、コマンド種別、及びダイビジーを含む。ターゲットビジーフィールドは、一般に、コマンドを待ち行列に入れることができないターゲットを共有する他のダイを意味するマルチダイコマンドの動作をサスペンドするプログレス(又は待ち行列)においてダイのそれぞれが動作を有することを示す。READ及びCOPYBACKコマンドは、このカテゴリーに属する。全てのターゲットレベルコマンドは、一般に、ビットセットを生じさせる。コマンド種別フィールドは、一般に、最後の動作タイプがフラッシュに適用されたことを示す。一例では、許容値は、NONE、READ、PROGRAM、ERASE、COPYBACK、及びOTHERを含む。値OTHERは、一般に、ターゲットレベル動作を参照する。コンテキストがフェッチされるとき、一般に、コマンド種別フィールドはアップデートされる。一例では、ダイビジーフィールドは、第1の状態(例えば、ロジック「0」)又は第2の状態(例えば、ロジック「1」)を有するセマフォビットとして実現される。ダイビジーフィールドは、一般に、ダイが現在どの処理ステージに関わっているかを示す。一例では、ダイビジーフィールドは以下の通り定義された値で実現される:
0:FREE−動作は完了し、ダイは完全に自由である(例えば、READコマンドはDONEになることができるが、データが転送された後まで、ダイはFREEではない)。
1:BUSY。
コンテキスト処理フローの追加フェーズの間に、ダイサービスアービタ(DSA)232は、実行のためのリンクリストからコンテキストを選択するダイを選択するために呼び出される。一例では、DSA232は、2つのレベルのアービトレーションストラテジを用いる。アービトレーションの第1のレベルは、ダイ管理テーブル234のクレジットカウントフィールドに基づく。例えば、最も高いクレジットを有するダイはアービトレーションを取得する。最初に、クレジットカウントは全てのダイのために0に設定される。その後、ダイがラウンドロビンステージの間に取得する場合、クレジットカウントはハードウェアによってインクリメントされるが、マルチダイ動作制限のために禁止される。アービトレーションの第2のレベルは、どのダイを次にサーブするか判断するためにラウンドロビンアプローチを用いる。DSA232は、第1のダイから始めて、ターゲットを順番に探し、その後、第2のダイを用いて、ターゲットを再利用する。選択されたダイがリンクリストのコンテキストを有する(例えば、コンテキストネクストポインタがコンテキストエンドポインタと等しくなく、コンテキストフェッチイネーブルが1に設定される)場合、コンテキストポインタは、コンテキスト処理コントローラ(CPC)202に送信される。
コンテキストマネージャ204に類似し、ダイ管理モジュール206は、前述したダイのそれぞれのために状態を管理するためのダイ状態マシン(DIE FSM)230を含む。一般に、ダイ状態マシン230の1つのインスタンスがある。所定の時点で1つのダイだけが常に状態変更を受けているので、ダイ状態マシン230インスタンスは、一般に、全てのダイによって共有される。ダイ状態マシン230は、コンテキストマネージャ(CM)204からのダイ状態信号をモニタし、それに従ってダイ管理テーブル234をアップデートする。
ダイが動作を受け取るための準備をする時間はあるが、ターゲットを共有する別のダイはマルチダイ動作を許可しない動作で忙しい。ちなみに、ダイは動作によって「クレジット」され、「ロックアウト」状態が別のダイによって除去されるとすぐに、そのダイはプライオリティを受信する。ターゲットは、一般に、1つのチップイネーブル信号(例えばCE#)によって制御される。ターゲットは、一般に、1つ以上のロジカルユニット(LUN、ダイ)に編成される。例えば、1つのダイが読み取りコマンドの処理中であるとき、コマンドは、同一のチップイネーブルを共有する第2のダイに送られる。この制限は、第1のダイのREADY/BUSY状態が不定であるという事実から生じる。1つが第2のダイにREAD PAGEコマンドを実行する直前に第1のダイの状態を読み取り、状態がBUSYだったとしても、READ PAGEコマンドが第2のダイに適用された時点でREADYになる。これが問題である理由は、ダイがBUSYであるとき、CEが有効になるときにコマンド/アドレスバスに「レスニング」がアクティブでないということである。しかしながら、ダイがREADYであるとき、「レスニング」を開始する。ダイがレスニングするとき、コマンドが懸案のダイのために予定されなくても、ダイはコマンドのアドレスを格納する。その後、そのアドレスはアクティブなプレーンを選択するために用いられる。従って、データがダイのページレジスタから究極的に転送されるとき、不注意に間違ったプレーンのページレジスタからデータが転送される。そのような問題がないことを保証するために、1つのダイがREAD PAGE(又はCOPYBACK PAGE)トランザクション中であるとき、マルチダイアクセスは許可されない。
以下のターゲットレベルコマンドは、一般に、target_busyビット、READ ID、READ PARAMETER PAGE、GET FEATURES、SET FEATURES、SYNCHRONOUS RESET、及びRESETを設定する。一般に、ターゲットが使用中のとき、他のコマンドはターゲットに発行されない。ONFI2.0インタフェースが実現されるとき、この規則の例外がある。ONFI2.0によれば、フラッシュコマンドRESET及びSYNCHRONOUS RESETは、他のLUNの使用中に、及びアクセスされたLUNの使用中に認められる。ONFI2.0インタフェースが実現されるとき、本発明の実施の形態によって実現されたフラッシュメディアコントローラは、ターゲットが使用中でも、RESET又はSYNCHRONOUS RESETが発行されることを許可するようにプログラムされる。一例では、DSA232は、2つ以上のダイがターゲットレジスタ当たりのダイの数の値の検査によってターゲットを共有するとき、認識するように構成される。別の一例では、レジスタのマルチダイイネーブルビットは、フラッシュコマンドがサポートされたDMMのそれぞれのために実現される。
一例では、ダイ管理モジュールの動作は以下の通り進行する。ファームウェアは、コンテキストが実行されるダイのためのダイ管理テーブル(DMT)234に「コンテキストネクストポインタ」レジスタ及び「コンテキストエンドポインタ」レジスタをロードする。ファームウェアは、ダイ管理テーブル234に対するフルアクセスを有し、ファームウェアは、最初に全てのダイのためのテーブルを構成するための役割を担う。ファームウェアは、ダイのためのDMT234の「コンテキストフェッチイネーブル」ビットを設定することによってそのダイに関して動作が開始することを許可する。ダイサービスアービタ(DSA)232がサーブするためにダイを選択しており、異なるネクストポインタ、エンドポインタ、及び「コンテキストフェッチイネーブル」ビットセットを有するダイを参照するとき、ダイサービスアービタ(DSA)232は、FLCのコンテキスト処理コントローラ(CPC)202にコンテキストポインタを有するフェッチ要求を送信する。FLCのCPC202は、コンテキストフェッチアービタ(CFA)160にフェッチ要求とポインタを送信する。コンテキスト訂正ポート(CRP)166は、コンテキストを検索し、CFA160にFLCによって必要とされるコンテキストの部分を転送し、CFA160はCPC202にその部分を転送する。CPC202はダイ管理モジュール(DMM)206に通知し、ダイ管理モジュール(DMM)206はダイ管理テーブル(DMT)234におけるダイの状態をアップデートする。DMT234の「コンテキストネクストポインタ」フィールドは、フェッチされたコンテキストに基づいてアップデートされる。同時に、ダイ状態マシン(DSA)230は、ダイ動作状態のためにコンテキストマネージャ204をモニタリングし、それに従ってDMT234をアップデートする。
本発明の実施の形態によるフラッシュメディアコントローラ(FMC)の主要なサブモジュールは、フラッシュレーンコントローラ(FLC)である。フラッシュレーンコントローラは、本質的にスタンドアロンのフラッシュレーンコントローラである。FLCの複数のインスタンス化はFMCによって管理される。単一のフラッシュレーンには、複数のフラッシュターゲットがあり、フラッシュターゲットのそれぞれの内部には、複数の論理装置番号(LUN)がある。LUNのそれぞれは、フラッシュトランザクションを独立して実行することができる。フラッシュレーンコントローラは、ダイ管理モジュール(DMM)及びコンテキストマネージャ(CM)の支援によりフラッシュトランザクションをパイプラインするように構成される。パイプライン動作の性質により、DMM及びCMによって処理されるパイプラインフラッシュコマンドを追跡し発行する必要がある。本発明の1つの実施の形態では、一般に、フラッシュメディアコントローラアーキテクチャのダイ管理テーブル及びコンテキストマネージャハードウェアによって用いられる方法は、フラッシュインタフェースの最大の利用化を達成するのを支援する。
図1〜12によって説明される機能は、従来のメインプロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、RISC(縮小命令型コンピュータ)プロセッサ、CISC(複雑命令セットコンピュータ)プロセッサ、SIMD(単一命令多重データ)プロセッサ、信号プロセッサ、中央演算処理装置(CPU)、算術論理演算装置(ALU)、ビデオデジタル信号プロセッサ(VDSP)、及び/又は関連する技術分野における当業者に明らかであろうように本明細書の教示に従ってプログラムされた同様の計算機の1つ以上を用いて実現される。適切なソフトウェア、ファームウェア、符号化、ルーチン、命令、オペコード、マイクロコード、及び/又はプログラムモジュールもまた関連する技術分野における当業者に明らかであろうように本明細書の教示に基づいて熟練したプログラマによって容易に準備される。ソフトウェアは、一般に、機械実装のプロセッサの1つ以上によって1つの媒体又は複数の媒体から実行される。
本発明は、更にASIC(特定用途向け集積回路)、プラットホームASIC、FPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラマブルロジックデバイス)、CPLD(コンプレックスプログラマブルロジックデバイス)、シーゲート、RFIC(高周波集積回路)、ASSP(特定用途専用標準品)、1つ以上のモノリシック集積回路、1つ以上のチップ又はダイに配置されたフリップチップモジュール及び/又はマルチチップモジュールによって、又はここで説明されるように従来の構成回路の適切なネットワークを相互に接続することによって実現され、それらの修正は、技術分野における当業者に容易に明らかである。
本発明は、また本発明による1つ以上の処理又は方法を行うように機械をプログラムするために用いられる命令を含むコンピュータ製品である記憶媒体又は媒体及び/又は送信媒体又は媒体を含む。コンピュータ製品に包含される命令の機械による実行は、回路素子を取り巻く動作に加えて、入力データを記憶媒体で1つ以上のファイル、及び/又はオーディオ及び/又はビジュアルな描写のようなフィジカルオブジェクト又は実体の典型である1つ以上の出力信号に変換する。記憶媒体は、限定されるものではないが、フロッピー(登録商標)ディスク、ハードドライブ、磁気ディスク、光ディスク、CD−ROM、DVD、及び光磁気ディスクを含む如何なるタイプのディスク、及びROM(リードオンリメモリ)、RAM(ランダムアクセスメモリ)、EPROM(電気的プログラム可能リードオンリメモリ)、EEPROM(電気的消去可能リードオンリメモリ)、UVPROM(紫外線消去可能リードオンリメモリ)、フラッシュメモリ、磁気カード、光カードのような回路、及び/又は電子命令の格納のために適切な如何なるタイプの媒体を含む。
本発明のエレメントは、1つ以上のデバイス、ユニット、コンポーネント、システム、機械及び/又は装置の一部又は全てを構成する。デバイスは、限定されるものではないが、サーバ、ワークステーション、記憶アレイコントローラ、記憶システム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、パームコンピュータ、携帯情報端末、携帯電子デバイス、バッテリ駆動デバイス、セットトップボックス、エンコーダ、デコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、サイファ回路、携帯電話、デジタルカメラ、ポジショニング及び/又はナビゲーションシステム、医療機器、ヘッドアップ表示装置、ワイヤレスデバイス、オーディオ録音、記憶及び/又は再生装置、ビデオ録画、記憶及び/又は再生装置、ゲームプラットホーム、周辺装置及び/又はマルチチップモジュールを含む。関連する技術分野における当業者は、特定用途の基準を満たす他のタイプのデバイスで、本発明のエレメントが実現されることを理解するであろう。
本発明は、特にその好適な実施の形態に関して表わされ説明されたが、本発明の範囲から逸脱することなく、形式と細部の様々な変更なし得るであろうことが当業者によって理解されるであろう。

Claims (15)

  1. フラッシュレーンコントローラ(FLC)の動作のために用いられるダイに基づく情報を保持するように構成された第1の回路と、
    フラッシュレーンコントローラ(FLC)によってアクティブに処理されているコンテキストを管理するように構成された第2の回路と、
    前記第2の回路によって管理される複数の前記コンテキストのパイプライン実行を実行するように構成された第3の回路と、
    を備える装置。
  2. 前記第1の回路は、ダイ管理モジュールを備えることを特徴とする請求項1に記載の装置。
  3. 前記ダイ管理モジュールは、
    ダイ管理テーブルと、
    ダイ動作状態のために前記装置のコンテキストマネージャをモニタリングし、前記ダイ管理テーブルをアップデートするように構成されたダイ状態マシンと、
    実行のためにリンクリストからコンテキストを選択するダイを選択するように構成されたダイサービスアービタと、
    を備えることを特徴とする請求項2に記載の装置。
  4. 前記第2の回路は、コンテキストマネージャを備えることを特徴とする請求項1に記載の装置。
  5. 前記コンテキストマネージャは、
    現在実行されているコンテキストの優先待ち行列を格納するコンテキストテーブルと、
    前記コンテキストテーブルから完了したコンテキストを除去し、ギャップを削減するために前記コンテキストテーブルを圧縮するように構成されたコンテキスト待ち行列コントローラと、
    前記コンテキストテーブルのコンテキストのそれぞれの実行状態を決定するように構成されたコンテキスト状態マシンと、
    前記コンテキストテーブルにフラッシュコンテキストのそれぞれの部分を格納するように構成されたコンテキストキャッシュと、
    を備えることを特徴とする請求項1に記載の装置。
  6. 前記コンテキスト状態マシンは、コンテキストエントリの現在状態に基づいて前記コンテキストテーブルの前記コンテキストエントリのそれぞれの実行状態、及びフラッシュ動作マネージャによって実行されている動作又はデータパス動作の状態のいずれかを決定することを特徴とする請求項5に記載の装置。
  7. 前記第2の回路は、主としてフラッシュトランザクションに関連するコンテキストマネジメントに関することを特徴とする請求項1に記載の装置。
  8. 前記第3の回路は、フラッシュ動作マネージャ(FOM)を備えることを特徴とする請求項1に記載の装置。
  9. 前記第2の回路は、フラッシュレーンのフラッシュダイにコマンド及びデータ転送の前記パイプライン実行を実行するために前記フラッシュ動作マネージャ(FOM)によって利用される情報を保持することを特徴とする請求項8に記載の装置。
  10. 複数のフラッシュデバイスを有するトランザクションでフラッシュレーンコントローラ(FLC)によって利用されるダイに基づく情報を保持するステップと、
    前記フラッシュレーンコントローラ(FLC)によってアクティブに処理されているコンテキストを管理するステップと、
    複数の前記コンテキストのパイプライン実行を実行するステップと、
    を備えるフラッシュインタフェースを利用する方法。
  11. ダイ動作状態のためにコンテキストマネージャをモニタリングし、ダイ管理テーブルをアップデートするように構成されたダイ状態マシンを用いて、ダイ管理テーブルを保持するステップと、
    実行のためにリンクリストからコンテキストを選択する前記複数のフラッシュデバイスからダイを選択するステップと、
    を更に備えることを特徴とする請求項10に記載の方法。
  12. 現在実行されているコンテキストの優先待ち行列を格納するコンテキストテーブルを保持するステップと、
    前記コンテキストテーブルから完了したコンテキストを除去し、ギャップを削減するためにコンテキストテーブルを圧縮するステップと、
    コンテキスト状態マシンを用いて前記コンテキストテーブルのコンテキストのそれぞれの実行状態を決定するステップと、
    コンテキストキャッシュの前記コンテキストテーブルにフラッシュコンテキストのそれぞれの部分を格納するステップと、
    を更に備えることを特徴とする請求項10に記載の方法。
  13. コンテキストエントリの現在状態に基づいて前記コンテキストテーブルの前記コンテキストエントリのそれぞれの実行状態、及びフラッシュ動作マネージャによって実行されている動作又はデータパス動作の状態のいずれかを決定することを特徴とする請求項12に記載の方法。
  14. 前記コンテキストは、フラッシュトランザクションに関連することを特徴とする請求項10に記載の方法。
  15. 1つ以上のフラッシュレーンの前記複数のフラッシュデバイスにコマンド及びデータ転送のパイプライン実行を実行するためにフラッシュ動作マネージャ(FOM)によって利用される情報を保持するステップを更に備えることを特徴とする請求項10に記載の方法。
JP2012138095A 2011-07-14 2012-06-19 フラッシュインタフェースの有効利用 Pending JP2013025794A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161507654P 2011-07-14 2011-07-14
US61/507,654 2011-07-14
US13/344,030 2012-01-05
US13/344,030 US20130019052A1 (en) 2011-07-14 2012-01-05 Effective utilization of flash interface

Publications (1)

Publication Number Publication Date
JP2013025794A true JP2013025794A (ja) 2013-02-04

Family

ID=46548247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012138095A Pending JP2013025794A (ja) 2011-07-14 2012-06-19 フラッシュインタフェースの有効利用

Country Status (6)

Country Link
US (1) US20130019052A1 (ja)
EP (1) EP2546756A3 (ja)
JP (1) JP2013025794A (ja)
KR (1) KR20130009928A (ja)
CN (1) CN103092781A (ja)
TW (1) TW201303870A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372786B2 (en) 2020-09-16 2022-06-28 Kioxia Corporation Transceiver, bridge chip, semiconductor storage device, and method

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189435B2 (en) * 2013-04-23 2015-11-17 Apple Inc. Method and apparatus for arbitration with multiple source paths
US9508437B2 (en) * 2014-01-30 2016-11-29 Sandisk Technologies Llc Pattern breaking in multi-die write management
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
US20200089537A1 (en) * 2019-11-20 2020-03-19 Intel Corporation Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
TWI788894B (zh) * 2021-06-29 2023-01-01 新唐科技股份有限公司 記憶體控制電路及快閃記憶體之抹除操作的控制方法
CN114611453A (zh) * 2022-03-25 2022-06-10 中国电子科技集团公司第五十八研究所 一种复合制导微系统电路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US8566508B2 (en) * 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US8495332B2 (en) * 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8289801B2 (en) * 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US8996794B2 (en) * 2009-12-11 2015-03-31 International Business Machines Corporation Flash memory controller
US8595411B2 (en) * 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372786B2 (en) 2020-09-16 2022-06-28 Kioxia Corporation Transceiver, bridge chip, semiconductor storage device, and method

Also Published As

Publication number Publication date
US20130019052A1 (en) 2013-01-17
KR20130009928A (ko) 2013-01-24
TW201303870A (zh) 2013-01-16
EP2546756A3 (en) 2013-10-09
EP2546756A2 (en) 2013-01-16
CN103092781A (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
JP5977094B2 (ja) フレキシブルフラッシュコマンド
EP2546755A2 (en) Flash controller hardware architecture for flash devices
JP5960517B2 (ja) フラッシュメディアコントローラの内部のメタデータハンドリング
US7523228B2 (en) Method for performing a direct memory access block move in a direct memory access device
TWI278755B (en) An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
JP5963282B2 (ja) 割り込み分配スキーム
US7620749B2 (en) Descriptor prefetch mechanism for high latency and out of order DMA device
US7743191B1 (en) On-chip shared memory based device architecture
EP2549382A1 (en) Virtual GPU
JP2013025794A (ja) フラッシュインタフェースの有効利用
US20080168191A1 (en) Barrier and Interrupt Mechanism for High Latency and Out of Order DMA Device
US20200133905A1 (en) Memory request management system
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
JP4931828B2 (ja) ライン・アクセスおよびワード・アクセスの結合を用いてメモリをアクセスするためのシステムおよび方法
WO2022227671A1 (zh) 处理器微架构、SoC芯片及低功耗智能设备
Zou et al. DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing
TW201342193A (zh) 高效能進階主機控制器介面

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140718

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140718