(57)【特許請求の範囲】
【請求項１】
メモリデバイスによりホストメモリアクセスを制御するための方法であって、
ホスト・メモリ内に記憶された少なくとも１つのコマンドの位置を示すために用いられるポインタを含むコマンドメッセージをホストから前記メモリデバイスに送信することと、
ホスト・メモリ内の前記少なくとも１つのコマンドの位置を示す前記ポインタを含み、転送サイズ、データオフセット、およびデータフラグを含むホストメモリアドレスコンテキストを含むパケットヘッダを備えるデータ転送メッセージを、前記メモリデバイスの所望のタイミングで、前記メモリデバイスから前記ホストに送信することと、
前記ホストから前記少なくとも１つのコマンドを受信することと、
前記メモリデバイスにより前記少なくとも１つのコマンドの実行を制御することと、を含む、方法。
【請求項２】
前記メモリデバイスによる前記少なくとも１つのコマンドの実行の制御は、前記データ転送のタイミング、シーケンス、およびサイズを決定することを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのコマンドを実行するためのメモリデバイスの状態および／または能力に基づいて、前記データ転送のタイミング、シーケンス、およびサイズを決定する、請求項２に記載の方法。 
【請求項４】
前記パケットのヘッダは、トランザクションタイプコード、トランザクションタグ、物理的装置ＩＤ、論理装置ＩＤ、ポインタ、オフセット、および転送長を含む、請求項１に記載の方法。 
【請求項５】
ホストに接続された少なくとも１つのメモリデバイスを備えたシステムであって、
前記ホストは、少なくとも１つのコマンドが実行可能状態にあることを前記少なくとも１つのメモリデバイスに通知するコマンドメッセージを、前記少なくとも１つのメモリデバイスに送信するように構成され、
前記少なくとも１つのメモリデバイスは、前記コマンドメッセージを受信すると、前記少なくとも１つのメモリデバイスの所望のタイミングで、パケットヘッダを含む少なくとも１つのデータ転送メッセージを前記ホストに送信するように構成され、前記パケットヘッダは、転送サイズ、データオフセット、およびデータフラグを含むホストメモリアドレスコンテキストを含み、
前記ホストは、前記少なくとも１つのデータ転送メッセージを受信すると、前記少なくとも１つのコマンドをホスト・メモリから前記少なくとも１つのメモリデバイスに送信するように構成され、
前記少なくとも１つのメモリデバイスは前記少なくとも１つのコマンドの実行を制御するように構成される、システム。
【請求項６】
前記少なくとも１つのコマンドを生成し、前記ホスト・メモリ内にデータバッファおよび状態バッファを分配するように前記ホストが構成された、請求項５に記載のシステム。
【請求項７】
前記少なくとも１つのコマンドに関するポインタ、前記データバッファに関するポインタ、および前記状態バッファに関するポインタを有する前記コマンドメッセージを、前記少なくとも１つのメモリデバイスに送信するように前記ホストが構成された、請求項６記載のシステム。
【請求項８】
前記少なくとも１つのメモリデバイスは、前記少なくとも１つのコマンドの実行を制御するように構成された制御回路を含む、請求項５または６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広くは半導体メモリデバイス、方法、およびシステムに関するものであり、より詳細には、メモリデバイスで制御されるホストメモリアクセスに関するものである。
【背景技術】
【０００２】
メモリデバイスは、一般的に、種々の他の電子装置の中でも特に、コンピュータ、携帯情報端末（ＰＤＡ）、デジタルカメラ、および携帯電話における内部の半導体集積回路および／または着脱式の外付け装置として提供される。特にランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、およびフラッシュメモリを含む多くの異なる種類のメモリが存在する。
【０００３】
フラッシュメモリデバイスは、電子アプリケーションの広範囲において非揮発性メモリとして利用される。フラッシュメモリデバイスは、通常、高記録密度、高信頼性、および低消費電力を可能にする単一トランジスタメモリセルを用いる。
【０００４】
メモリシステムには、種々の種類のメモリが用いられ得る。種々の種類のメモリは任意の組み合わせにおいて用いられ得、ホスト装置またはホストシステムなどのホスト用のメモリとして備えられる。例えば、フラッシュメモリはメモリシステムに含まれ得る。フラッシュメモリは、ＵＳＢ接続などのインターフェースを通じてメモリシステムに接続され得る着脱式メモリまたは内部メモリとしてメモリシステムの一部となる。
【０００５】
システムはホストシステム、ホストメモリ、および複数の外部メモリデバイスを含んでもよい。ホストシステムは、複数のプロセッサ、ホストコントローラ、ホストコントローラに配置されるホストコントローラメモリ、および複数の内部メモリデバイスを有してもよい。ホストシステムは、ホストコントローラおよび／または複数のホストプロセッサを通じてメモリデバイスと相互作用することにより、内部および／または外部のメモリデバイスを用いることができる。ホストコントローラおよび／または複数のホストプロセッサはメモリデバイスと通信し得、メモリデバイスからホストへのデータの読み出し、またはホストからメモリデバイスへのデータの書き込みなどの、メモリデバイスにおけるオペレーションを実行する。データの読み出しおよび書き込みを制御するコマンドは、ホストにより生成され得る。ホストコントローラおよび／または複数のホストプロセッサは、コマンドの実行を制御するハードウェアを有し得る。ホストコントローラおよび／または複数のホストプロセッサがコマンドの実行を制御するハードウェアを有するこれらの場合では、ホストシステムはメモリデバイスの状態を管理および維持する。
【図面の簡単な説明】
【０００６】
【図１】本開示の１つ以上の実施形態に従うメモリを示すブロック図である。
【図２】本開示の１つ以上の実施形態に従うホストメモリを示すブロック図である。
【図３】本開示の１つ以上の実施形態に従うデータ転送メッセージを示すブロック図である。
【発明を実施するための形態】
【０００７】
本開示は、メモリデバイスによりホストメモリアクセスを制御するための方法、装置、およびシステムを含む。メモリデバイスによりホストメモリアクセスを制御するための一実施形態は、ホストから少なくとも１つのコマンドを受信することと、メモリデバイスにより少なくとも１つのコマンドの実行を制御することとを含む。
【０００８】
本開示の下記の詳細な説明においては、本開示の一部を構成する添付図面を参照し、図に示すことにより１つ以上の実施形態がどのように実施され得るかを説明する。これらの実施形態は、当業者が本開示の実施形態を実施するのに十分な詳細が記述されており、本開示の範囲から逸脱することなく他の実施形態が利用され得、プロセス、電気的および／または構造的な変更がなされ得ることが理解される。本明細書に用いられる、特に図面における参照番号に付随する指定印「Ｎ」は、そのように特定され得る特定の特徴が本開示の１つ以上の実施形態に含まれることを示す。指定印は同じまたは異なる数の特定の特徴を示し得る。
【０００９】
本明細書の図面においては、最初の１つ以上の数字は図面番号に対応し、残りの数字は図面内の要素またはコンポーネントを識別するという慣習に基づいて番号が付けられている。異なる図面間の同等の要素またはコンポーネントが、同じ数字を用いることにより同一とみなされ得る。例えば、１１８は図１における要素「１８」を参照し得、類似の要素は図２の２１８として参照され得る。理解されるように、本開示の複数の追加的な実施形態を提供するために、本明細書における種々の実施形態に示す要素は、追加、交換、および／または削除され得る。さらに理解されるように、図面に提供される要素の割合および相対的な大きさは、本開示の実施形態を示すように意図されており、限定的な意味を持たないことは言うまでもない。
【００１０】
図１は本開示の１つ以上の実施形態に従うメモリシステム１００のブロック図である。図１にはホスト１１０が示される。１つ以上の実施形態では、ホスト１１０は、種々の種類のコンピュータ装置のうちのパーソナルコンピュータなどのコンピュータ装置でもよい。ホスト１１０の例示は、種々の例示のうちのラップトップコンピュータ、パーソナルコンピュータ、携帯電話、デジタルカメラ、デジタル記録および再生装置、ＰＤＡ、メモリカードリーダ、並びにインターフェースハブを含む。図１のホスト１１０は、図示しないコンピュータ装置要素に加えて、ホストコントローラ１１２、ホストプロセッサ１１４、ホストメモリコントローラ１１６、並びにホストメモリ１１８−１および１１８−Ｎを含む。ホストコントローラ１１２は、トランザクション層、リンク層、および／または物理層を含み得、ホストメモリコントローラ１１６を介して、ホストメモリ１１８−１、１１８−２〜１１８−Ｎに接続され得る。図１に示すホストコントローラ１１２はさらに、バス１２０を介してメモリデバイス１３０−１、１３０−２〜１３０−Ｎに接続される。
【００１１】
１つ以上の実施形態では、ホストコントローラ１１２は、複数のメモリデバイス１３０−１、１３０−２〜１３０−Ｎと、ホスト１１０との間の情報通信に用いられ得る。「１つのプロセッサ」が、例えば、並列処理システム、複数のコプロセッサなどの１つ以上のプロセッサを意図し得ることを当業者は理解する。
【００１２】
１つ以上の実施形態では、ホストコントローラ１１２は、標準インターフェースを実施するように接続され得る。例えば、メモリデバイス１３０−１、１３０−２〜１３０−Ｎがメモリシステムにおけるデータストレージとして用いられ得る場合には、ホストコントローラは、インターフェースのうちのシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）、ユニバーサルシリアルバス（ＵＳＢ）、および／または小型コンピュータシステムインターフェース（ＳＣＳＩ）を実施できる。ただし、通常、ホストコントローラ１１２は、メモリデバイス１３０−１、１３０−２〜１３０−Ｎと、ホスト１１０と、ホストメモリ１１８−１、１１８−２〜１１８−Ｎなどの他の装置との間において制御、アドレス、データ、および他の信号をパスするためのインターフェースを実施するように接続され得る。
【００１３】
１つ以上の実施形態では、メモリデバイス１３０−１、１３０−２〜１３０−Ｎは１つ以上のメモリデバイスコントローラを含み得、これは例えば、ホスト１１０とメモリデバイス１３０−１、１３０−２〜１３０−Ｎとを通信するオペレーションコマンドのうちの、読み出し、書き込み、および／または消去コマンドの実行により、オペレーションを援助するために用いられ得る。メモリデバイス１３０−１、１３０−２〜１３０−Ｎは、それぞれ、バス１２０に接続される。また、一部の実施形態では、メモリデバイス１３０−１、１３０−２〜１３０−Ｎは、バスに接続された１つのメモリデバイスとして連鎖してもよい。１つ以上の実施形態では、１つ以上のメモリデバイスコントローラは、ホストシステム１１０とメモリデバイス１３０−１、１３０−２〜１３０−Ｎとの間にトランスレーション層を備え得る。それ故、メモリデバイスコントローラは、メモリデバイス１３０−１、１３０−２〜１３０−ＮのＩ／Ｏコネクタ（図１に不示）と選択的に接続し得、適切な時に適切なＩ／Ｏ接続により適切な信号を受信する。同様に、ホスト１１０とメモリデバイス１３０−１、１３０−２〜１３０−Ｎとの間の通信プロトコルは、メモリデバイス１３０−１、１３０−２〜１３０−Ｎへのアクセスに応じて必要なものに変更され得る。メモリデバイスコントローラは、次に、メモリデバイス１３０−１、１３０−２〜１３０−Ｎへの所望のアクセスを達成するために、ホスト１１０から受信したコマンドシーケンスを適切なコマンドシーケンスに変形する。各変形は、コマンドシーケンスに加えて、信号電圧レベルの変形をさらに含んでもよい。
【００１４】
図１の実施形態は、本開示の実施形態を曖昧にしないために図示されない追加的な回路を含んでもよい。例えば、メモリデバイス１３０−１、１３０−２〜１３０−Ｎは、Ｉ／Ｏ回路を通じてＩ／Ｏコネクタ全体に提供されるアドレス信号をラッチするためのアドレス回路を含んでもよい。アドレス信号はメモリデバイス１３０−１、１３０−２〜１３０−Ｎにアクセスするために、行デコーダおよび列デコーダにより受信およびデコードされ得る。アドレス入力コネクタの数がメモリデバイス１３０−１、１３０−２〜１３０−Ｎの密度およびアーキテクチャに応じて変更され得ることが当業者に理解される。
【００１５】
１つ以上の実施形態では、ホストシステムは単一コマンドまたはコマンドリストなどの少なくとも１つのコマンドを生成できる。コマンドリストは２つ以上のコマンドを含んでもよい。ホストはまた、データ転送に関するデータバッファ、コマンド状態および完了情報に関する状態バッファをホストメモリに割り当て得る。
【００１６】
ホストは、１つ以上のコマンドが実行可能状態にあり、データバッファおよび状態バッファがホストメモリに割り当てられたことを、バスを通じて送られたコマンドメッセージによって１つ以上のメモリデバイスに通知できる。メッセージは、１つ以上のコマンドが配置されたホストメモリ内の位置（例えば、アドレス）を示すポインタをさらに含んでもよい。１つ以上のコマンドが実行可能状態にあることをホストが１つ以上のメモリデバイスに通知することに関連して（例えば、コマンドが実行可能状態にあることをホストがメモリデバイスに通知した時点で）、１つ以上のメモリデバイスに関するコマンドリストのうちの１つ以上のコマンド実行の制御を放棄する。ホストはさらに、ホストと１つ以上のメモリデバイスとの間のバスの制御を放棄する。
【００１７】
１つ以上の実施形態では、１つ以上のメモリデバイスは、ホストメモリ内の１つ以上のコマンドが実行可能状態にあることを通知された時点で、ホストコントローラに対して１つ以上のコマンドに関するポインタを含むデータ転送メッセージ、および転送サイズ、データオフセット、およびデータフラグなどの追加的な情報を送信することによって、メモリデバイスは所望のタイミングでホストメモリから１つ以上のコマンドを受信できる。転送サイズ、データオフセット、およびデータフラグなどの追加的な情報は、ホストメモリアドレスコンテキストとも称される。転送サイズはホストメモリからメモリデバイスに送信された、またはメモリデバイスからホストメモリに送信されたデータ量である。データオフセットはホストメモリ内のデータの実際の位置を特定するために、ポインタと共に用いられる値である。オフセットはホストメモリファイルの割当て方法に適応するために、メモリデバイスによって設定および修正され得る。データフラグは、データ転送の実行に関連するデータ転送特性に含まれるデータ転送方向などのデータ転送特性を特定するために用いられ得る。ホストコントローラはホストメモリアドレスコンテキストを処理し、ホストメモリからコマンドまたはコマンドリストなどの要求データを取り出し、それを１つ以上のメモリデバイスに送信する。
【００１８】
１つ以上の実施形態では、ホストメモリからデータを取り出すか、それにデータを送信するホストコントローラを通じてホストメモリへの、かつ／またはそれからのデータ転送となる一連のデータ転送メッセージを送信することによって、１つ以上のメモリデバイスは１つ以上のコマンドを解釈し得、１つ以上のコマンドの実行を制御し得る。
【００１９】
データ転送メッセージは、ホストメモリ内のデータ位置を示すホストメモリアドレスコンテキストを含んでもよい。コマンドまたはコマンドリストの実行に起因するデータ転送は、１つ以上のメモリデバイスにより制御される。１つ以上のメモリデバイスは、個々の装置の状態および／または所定のデータ転送を実行するための能力に基づいて、データ転送のタイミング、シーケンス、優先度、およびサイズを決定できる。１つ以上の実施形態では、装置は１つ以上のコマンドの実行を制御する。このため、ホストは１つ以上のメモリデバイスの状態または資源を管理しないか、１つ以上のメモリデバイスについてのデータ転送のスケジュールを決めない。
【００２０】
１つ以上の実施形態では、コマンドの実行が完了すると、１つ以上のメモリデバイスは完了メッセージをホストに送信できる。ホストコントローラは完了メッセージを認識し得、そしてコマンドまたはコマンドリストが完了したことをホストプロセッサに通知できる。
【００２１】
１つ以上の実施形態では、コマンドまたはコマンドリストが実行可能状態になり、システムメモリ内にデータバッファが割り当てられたことを示すメッセージを、ホストは１つ以上のメモリデバイスに送信できる。ホストから１つ以上のメモリデバイスに送信されるメッセージは、ホストメモリ内のコマンド位置を示し得る、不透明のメモリポインタオブジェクトなどのポインタを含み得る。不透明のメモリポインタオブジェクトは、メモリデバイスが解釈しないポインタでもよい。不透明のメモリポインタはホストおよびメモリデバイス間に送信され、ホストメモリ内のデータおよび／またはコマンドの位置を特定するのに用いられ得るデータ転送メッセージの一部となる。不透明のメモリポインタはホストにより解釈される。１つ以上のメモリデバイスはホストメモリから１つ以上のコマンドを取り出し得る。各コマンドはホストメモリアドレスコンテキストを含んでもよい。ホストメモリアドレスコンテキストは、追加的なポインタ、並びにコマンドが実行された際に転送されるデータを含むか、受信するデータバッファに関する転送サイズおよびオフセット情報を含んでもよい。
【００２２】
１つ以上の実施形態では、１つ以上のメモリデバイスは１つ以上のコマンドを解釈できる。各コマンドは１つ以上のメモリデバイスからホストメモリへの送信データ、またはホストメモリから１つ以上のメモリデバイスへの送信データなどのデータの転送方向を示す。１つ以上のメモリデバイスはデータ転送を開始するための追加的なデータ転送メッセージをホストに送信することにより、１つ以上のコマンドを実行できる。追加的なデータ転送メッセージはホストメモリアドレスコンテキストを含む。一部の実施形態では、１つ以上のメモリデバイスがホストメモリにデータを転送しているときに、メッセージ内のホストメモリアドレスコンテキストに続いてデータが送られる。一部の実施形態では、１つ以上のメモリデバイスがホストメモリからデータを取り出しているときに、ホストコントローラは、データに付随するホストメモリアドレスコンテキストと共に、メッセージを１つ以上のメモリデバイスに返信する。
【００２３】
１つ以上の実施形態では、１つ以上のコマンドの実行に関連する全てのデータ転送が完了すると、１つ以上のメモリデバイスは１つ以上のコマンドの完了を示すメッセージを送信できる。このメッセージはホストシステムメモリ内の状態バッファの位置を示すポインタおよびホストメモリアドレスコンテキストを含み得る。状態バッファは１つ以上のコマンド状態に関するデータを記憶する、ホストメモリ内の場所であってもよい。１つ以上のコマンドが実行されると、状態バッファは、１つ以上のコマンドの完了をホストに示す完了メッセージに含まれる状態データを受信する。状態データは完了メッセージの一部でもよく、ホストメモリアドレスコンテキストに続いて送信され得、ホストメモリ内の状態バッファ内に配置され得る。ホストコントローラは、完了メッセージを受信および識別すると、例えば、１つ以上のコマンドに関する処理の完了をホストプロセッサに通知、例えば割り込みをする。１つ以上のメモリデバイスは、ここで次の１つ以上のコマンドの処理の用意をする。
【００２４】
図２は本開示の１つ以上の実施形態に従うホストメモリのブロック図である。１つ以上の実施形態では、ホストメモリ２１８は、その物理的な外部位置からホストに接続されたリモートホストメモリでもよい。１つ以上の実施形態では、ホストメモリは、ホストに配置された内蔵ホストメモリでもよい。１つ以上の実施形態では、ホストメモリ２１８は、リモートホストメモリおよび／または内蔵ホストメモリを含んでもよい。
【００２５】
前述のように、１つ以上の実施形態では、ホストはホストシステムメモリ２１８内にコマンドリスト２０２を生成できる。コマンドリスト２０２は２つ以上のコマンドを含み得、各コマンドはコマンド、メモリアドレスコンテキストの基本機能を示す基本コマンド記述子ブロックを含み得る。メモリアドレスコンテキストは、転送方向およびデータバッファ２０４が直接アクセスまたは間接アクセスのいずれであるかを示し得る、データバッファ２０４に関する情報を含んでもよい。データバッファはデータ転送に関するデータが書き込まれるか、そこから読み出される、ホストメモリ内の場所であってもよい。１つ以上の実施形態では、複数のデータバッファが用いられてもよい。直接アクセスバッファはデータ転送に含まれる実際のバッファである。間接アクセスバッファは、複数のデータバッファ内でデータが分類および記憶される場合の、複数のデータバッファに関する追加的なメモリアドレスコンテキスト情報を含む。間接アクセスバッファを用いる方法は、スキャター／ギャザーアクセスと称され得る。
【００２６】
前述のように、コマンドリスト２０２が実行可能状態にあることを示す、ホストから１つ以上のメモリデバイスへの初期コマンドメッセージは、コマンドリスト２０２に関するポインタを含み得る。ポインタは、直接アクセスバッファにアクセスするための直接ホストメモリアドレスを含み得る。ポインタは間接アクセスバッファにアクセスするための、データ、または当業者に周知および理解されるようなデータ編成に関するシステム固有の実装のうちの、アドレスアクセステーブル、メモリラッパー内のルックアップテーブルへのインデックス、および／またはページ記述子などの、データの位置に関する情報を含む他の位置を示し得る。直接アクセスバッファおよび間接アクセスバッファの両方において、ポインタはホストにより解釈およびデコードされる。１つ以上のメモリデバイスはポインタを受信するが、ポインタの解釈は試みない。ポインタは、１つ以上のメモリデバイスおよびホスト間のホストメモリ参照として用いられる。
【００２７】
１つ以上の実施形態では、コマンドリストは、単一コマンド、多重コマンド、またはコマンドのリンクリストを含み得る。コマンドリスト構造は、システム全体の実装に応じて決定され得、１つ以上のメモリデバイスによるコマンドの実行に影響を与えない。ホストおよび１つ以上のメモリデバイスは、類似の方法を用いるコマンド構造を生成、実行、および解釈できる。
【００２８】
ホストシステムは、ホストシステムメモリ内にコマンドリストが生成されて、実行可能にあることを示すコマンドメッセージを１つ以上のメモリデバイスに送信できる。コマンドメッセージは、複数のポインタを用いて、１つ以上のコマンド２０２、データバッファ２０４、および状態バッファ２０６のホストシステムメモリにおける位置を示す。コマンドメッセージは、追加的なホストメモリコンテキスト情報をさらに含み得る。１つ以上のコマンドは、メモリデバイスおよびホストシステムメモリ間のデータ転送を実行するための指示を含んでもよい。データバッファは、転送されるデータがそこに書き込まれるか、そこから読み出される、ホストメモリ内の位置であってもよい。状態バッファは、１つ以上のコマンド状態についてのデータに関連する、ホストメモリ内の位置であってもよい。
【００２９】
１つ以上の実施形態では、１つ以上のメモリデバイスはコマンドメッセージを受信すると、コマンドメッセージを解釈し得、ポインタを記憶できる。１つ以上のメモリデバイスは、メモリデバイスの資源および性能に応じて、１つ以上のコマンドの取り出しを試みることができる。１つ以上の実施形態では、１つ以上のメモリデバイスは、ホストメモリ内のコマンドリストから一つずつコマンドを受信できる。１つ以上の実施形態では、１つ以上のメモリデバイスはコマンドリスト内の全てのコマンドを受信できる。また、１つ以上のメモリデバイスはコマンドリスト内の一部のコマンドのみを受信できる。
【００３０】
１つ以上の実施形態では、１つ以上のメモリデバイスは、データ転送メッセージをホストに送信することによって、ホストメモリからコマンドを取り出し得る。コマンドを取り出すために１つ以上のメモリデバイスによって送信されたデータ転送メッセージは、ホストからデータを取り出すか、ホストにデータを送信するために１つ以上のメモリデバイスにより送信されたデータ転送メッセージと同一であるとホストにみなされ、例えばホストに区別されない。バスプロトコルおよびホストは、コマンド取り出し用と、データ転送用とのデータ転送メッセージを区別しない。コマンドおよび／またはデータの解釈は、１つ以上のメモリデバイスによりなされ得る。ホストコントローラはデータを解釈しないか、装置またはコマンドステータス情報を保持しない。ホストコントローラは、ホストコントローラが受信するデータ転送メッセージにより導かれたホストメモリ内からデータを取り出すか、そこにデータを保存できる。
【００３１】
１つ以上のメモリデバイスからホストへの、またはホストから１つ以上のメモリデバイスへのデータ転送メッセージは、パケットのヘッダを含み得る。パケットのヘッダは情報のうちの転送サイズ、データオフセット、およびフラグを含み得るホストメモリアドレスコンテキストを含んでもよい。
【００３２】
図３は本開示の１つ以上の実施形態に従うデータ転送メッセージ３４０のブロック図を示す。図３に示す実施形態では、データ転送メッセージ３４０は、パケットのヘッダ３５０およびデータ３７０を含み得る。１つ以上の実施形態では、パケットのヘッダ３５０は、データ転送に関する情報を示す複数のフィールドを含み得る。
【００３３】
１つ以上の実施形態では、パケットのヘッダ３５０はトランザクションタイプコード（ＴＴＣ）フィールド３５２を含み得る。ＴＴＣフィールド３５２は、特定のデータ転送メッセージに関するトランザクションタイプを示すために用いられ得る。ＴＴＣフィールド３５２は、データ転送メッセージの受信、およびパケットのヘッダ３５０が示すオペレーションタイプを示すのに用いられ得、このオペレーションタイプには、例えば、ホストメモリからのデータの読み出し、ホストメモリへのデータの書き込み、またはメモリデバイスへのデータの書き込みが含まれる。
【００３４】
１つ以上の実施形態では、パケットのヘッダ３５０は、トランザクションタグ（ＴＡＧ）フィールド３５４を含み得る。ＴＡＧフィールド３５４は、コマンドトランザクションの段階を示す不変の基準カウントとして用いられ得る。ＴＡＧフィールド３５４は、複数のデータ転送メッセージを用いてコマンドが実行される場合に、実行コマンドの進展を追跡するのに用いられ得る。
【００３５】
１つ以上の実施形態では、パケットのヘッダ３５０は、物理的装置ＩＤ（ＰＤＩＤ）フィールド３５６を含み得る。ＰＤＩＤフィールド３５６は、物理的な識別特徴のうちの特に、物理バスアドレス／ＩＤ、バス番号、およびチャンネル番号を示す複数のビットを含み得る。ＰＤＩＤフィールド３５６は、特定のメモリデバイスのバス上における物理的位置のアドレス指定、さらにはデータ転送メッセージを送信している装置をホストに示すのに用いられ得る。 
【００３６】
１つ以上の実施形態では、パケットのヘッダ３５０は、論理装置ＩＤ（ＬＤＩＤ）フィールド３５８を含み得る。ＬＤＩＤフィールド３５８は論理装置アドレス／ＩＤを含み得る。ＬＤＩＤフィールド３５８は、ホストおよび／または１つ以上のメモリデバイスなどの、物理的装置内の特定のユニットまたは要素を論理的にアドレス特定するのに用いられ得る。
【００３７】
１つ以上の実施形態では、パケットのヘッダ３５０は不透明のメモリポインタオブジェクト（ＯＭＰＯ）フィールド３６０を含み得る。ＯＭＰＯフィールド３６０は、ホストメモリ内のメモリアドレスを示すデータを含み得る。ＯＭＰＯフィールド３６０内のデータは、ホスト依存データを含む。ＯＭＰＯフィールド３６０内のデータは、不透明のメモリポインタオブジェクトなどのポインタでもよい。不透明のメモリポインタオブジェクトは、コマンドの処理中に１つ以上のメモリデバイスまたはホストにより変更されない不変値でもよい。データ転送メッセージは複数のポインタを含んでもよく、この１つ以上のポインタは１つ以上のコマンド、１つ以上のデータバッファ、および１つ以上の状態バッファに関するものでもよい。データ転送のスキャター／ギャザーでは、１つ以上のデータバッファポインタが用いられ得る。
【００３８】
１つ以上の実施形態では、パケットのヘッダ３５０はオフセットフィールド３６２を含み得る。オフセットフィールド３６２は、ポインタにより参照されるデータ位置を示すのに用いられ得るオフセット値を含み得る。ポインタはデータ位置を示すための基準でもよく、オフセットは物理的なデータ位置を検出するための、ポインタ内のアドレスと組み合わさった値を含み得る。ポインタおよびオフセットは、ホストメモリ内の実際のデータのアドレスを示すために共に用いられ得る。オフセットフィールド３６２はメモリデバイスにより決定されてもよい。１つ以上の実施形態では、オフセットフィールド３６２は、コマンドの処理中、１つ以上のメモリデバイスまたはホストにより変更されない。 １つ以上の実施形態では、オフセットはシステムに依存する。
【００３９】
１つ以上の実施形態では、パケットのヘッダ３５０は転送長フィールド３６４を含み得る。転送長フィールド３６４は、データ転送メッセージにおいて指定されたデータ転送中に転送する、データ転送の単語数および／またはサイズなどのデータ量を含み得る。
【００４０】
１つ以上の実施形態では、データ転送メッセージ３４０はデータ３７０を含み得る。データが１つ以上のメモリデバイスから読み出され、ホストメモリに書き込まれると、データ３７０を含むデータ転送メッセージが１つ以上のメモリデバイスからホストに送信される。データがホストメモリから読み出され、１つ以上のメモリデバイスに書き込まれると、データ３７０を含むデータ転送メッセージがホストから１つ以上のメモリデバイスに送信される。
【００４１】
１つ以上のメモリデバイスはコマンドを実行する際に、送信されるデータ転送メッセージの数、データパケットサイズ、およびデータ転送方向を決定できる。１つ以上のメモリデバイスは、ホスト干渉またはデータ転送もしくは装置状態の追跡を要求しない。１つ以上のメモリデバイスはデータ転送メッセージおよび／または完了メッセージをホストコントローラに送信できる。転送タイプはＴＴＣによりパケットのヘッダに示され得、特に、読み出しなどのデータ転送要求または書き込みなどのデータ転送応答でもよい。１つ以上の実施形態では、１つ以上のデータ転送要求またはデータ転送応答は、例えば、ホストメモリおよび／または１つ以上のメモリデバイスのブロックサイズ、並びにプロトコルパケットサイズに応じてコマンドを実行するのに用いられ得る。１つ以上のメモリデバイスはデータ転送メッセージを送信する際に、コマンドの実行により生じるトランザクションの数を決定できる。１つ以上のメモリデバイスは、１つ以上のメモリデバイスにより決定されたタイミング、シーケンス、および優先度に基づいてコマンドを待ち行列に入れ得る。１つ以上のコマンドを実行するデータ転送メッセージは、１つ以上のメモリデバイスが指定する任意の順序によって送信され得る。
【００４２】
１つ以上の実施形態では、ホストコントローラは、ハードウェアおよび／またはファームウェアを通じて、パケットのヘッダ内のトランザクションタイプコード（ＴＴＣ）に応答するように構成され得る。ＴＴＣに応答するホスト制御における能力により、例えば、ホストの動作が処理状態を把握しない方法において、ホストはトランザクションに関するステータス情報または１つ以上のメモリデバイスに関するステータス情報を保持しない。
【００４３】
１つ以上の実施形態では、ホストコントローラは、ファームウェアおよび／またはハードウェアを通じて、パケットのヘッダ内のメモリアドレスコンテキストに応答するように構成され得る。このような実施形態では、ホストコントローラは、データのファーストパーティダイレクトメモリアクセス（ＦＰＤＭＡ）転送を援助し得る。ホストと１つ以上のメモリデバイスとの間のデータ転送は、ホスト干渉無しで実行される。
【００４４】
１つ以上のメモリデバイスはデータ転送が完了すると、ホストコントローラを通じてホストに完了メッセージを送信できる。完了メッセージは最新に実行された１つ以上のコマンド状態を示し得る。完了メッセージはさらに、１つ以上のメモリデバイスの状態を示し得る。１つ以上のメモリデバイスは、１つ以上のコマンドが実行可能状態にあったことを示す、ホストシステムから１つ以上のメモリデバイスへのデータ転送メッセージに含まれ得るポインタにより、ホストメモリ内の状態バッファの位置を受信できる。完了メッセージは状態バッファに関するポインタを含み得る。
【００４５】
ホストコントローラは完了メッセージに含まれる状態データを状態バッファ内に転送し、完了メッセージが受信および記憶されたことをホストに依存する方法でホストに通知できる。１つ以上のコマンドの実行の完了を示すために、ホストに利用可能な任意の手段により通知は完了され得る。一部の実施形態では、ホスト内で実施される割り込みメカニズムを通じて通知される。
【００４６】
〔結論〕
本開示はメモリデバイスによりホストメモリアクセスを制御するための方法、装置、およびシステムを含む。メモリデバイスによりホストメモリアクセスを制御するための一実施形態は、ホストから少なくとも１つのコマンドを受信することと、メモリデバイスにより少なくとも１つのコマンドの実行を制御することとを含む。
【００４７】
要素が別の要素「上」、「との連結」、または「との接続」と言及される場合は、他の要素または介在要素が存在し得る状態で、直接上に配置、連結または接続され得ることが理解される。一方、要素が別の要素「のすぐ上」、「と直接連結する」、または「と直接接続する」と言及される場合は、他の介在要素または層が全く存在しないことを意味する。本明細書に用いられる用語「および／または」は、関連するリストされた事項の任意の１つ以上および全ての組み合わせを含む。
【００４８】
種々の要素を説明するために、第１、第２などの用語が本明細書に用いられ得るが、これらの用語がこれらの要素を当然に限定しないことが理解される。これらの用語は単に、一つの要素と別の要素とを区別するために用いられる。それ故、第１の要素は、本開示の教示から逸脱することなく、第２の要素ともなる。
【００４９】
特定の実施形態を本明細書に図示、説明したが、これらの特定実施形態を、同じ目的を達成するように計算された構成で置き換えることができることが当業者に理解される。本開示はその如何なる翻案または変更態様をも包含することが意図される。前述の記述内容は説明のためのものであって、制限的なものではないことが理解される。前述の説明に照らした、前述の実施形態と本明細書に特定しない他の実施形態との組み合わせは当業者に明らかである。本開示の１つ以上の実施形態の範囲は、前述の構造および方法が用いられる他の用途を含む。それ故、本開示の１つ以上の実施形態の範囲は、添付請求項が権利を与えるあらゆる種類の均等物に従って、これらの請求項に関連して決定されることは言うまでもない。
【００５０】
前述の詳細な説明では、本開示を合理化する目的で、いくつかの特徴が単独の実施形態にまとめて記載される。本開示の方法は、本開示の実施形態が各請求項において明確に列挙された以上の特徴を用いる必要があるという意図を反映するものとしては解釈されない。むしろ、以下の請求項は、発明の主題が単独で開示する実施形態における全ての特徴未満であることを示す。それ故、各請求項が単独で個々の実施形態に依存するように、以下の請求項はここで詳細な説明に組み込まれる。
【図１】
0005638069.tif 000002
【図２】
0005638069.tif 000003
【図３】
0005638069.tif 000004