(57)【特許請求の範囲】
【請求項１】
メモリシステムであって、
いくつかのビットを有する1つのドアベルレジスタと、
同数のビットを有する1つの完了レジスタと、
前記ドアベルレジスタおよび前記完了レジスタに動作可能に結合されるホストコントローラと、
前記ホストコントローラを制御するホストソフトウェアと
を備え、
前記ホストソフトウェアが、転送要求開始のために前記ドアベルレジスタにおいてドアベルビットを設定するように構成され、
前記ホストコントローラが、前記転送要求に関連付けられた転送を完了するために、
完了したタスクに対応する前記ドアベルビットをクリアし、
前記完了したタスクに対応する前記完了レジスタにおける完了ビットを設定する
ように構成され、
前記ホストソフトウェアが、前記転送を完了するために、
前記完了レジスタを読み取り、
前記設定された完了ビットに対応する処理を実行し、
前記設定された完了ビットをクリアする
ようにさらに構成される、
メモリシステム。
【請求項２】
メモリシステムを制御する方法であって、
ホストにおいて転送要求を生成するステップと、
前記転送要求を識別する前記ホスト内の1つのドアベルレジスタにおいてドアベルビットを設定するステップと、
通信インターフェースを通じて前記転送要求をデバイスに渡すステップと、
前記転送要求に関連付けられた転送を完了するステップであって、
前記ホスト内のホストコントローラによって、完了したタスクに対応する前記ドアベルレジスタにおけるドアベルビットをクリアするステップと、
前記ホストコントローラによって、前記ホスト内の1つの完了レジスタにおける前記タスクに対応する完了ビットを設定するステップと、
前記ホストのホストソフトウェアによって前記完了レジスタを読み取るステップと、
前記ホストソフトウェアによって、前記設定された完了ビットに対応する処理を実行するステップと、
前記ホストソフトウェアによって、前記設定された完了ビットをクリアするステップと
を備える、ステップと
を備える、方法。
【請求項３】
前記転送要求を生成するステップが、データを前記デバイスから読み取るための読取りコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項４】
前記転送要求を生成するステップが、データを前記デバイスに書き込むための書込みコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項５】
前記転送を開始するステップをさらに備える、請求項2に記載の方法。
【請求項６】
ソフトウェアロックを必要とすることなしに、前記転送要求に対する割込みを処理するステップをさらに備える、請求項2に記載の方法。
【請求項７】
第2の転送要求によって生成された割込みを受けるステップをさらに備える、請求項2に記載の方法。
【請求項８】
前記完了ビットをクリアした後に、前記完了ビットに関連付けられたスロットを再利用するステップをさらに備える、請求項2に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その全体が参照により本明細書に組み込まれる、2013年9月10日に出願した「SYSTEMS AND METHODS FOR ASCERTAINING COMMAND COMPLETION IN FLASH MEMORY」と題する米国仮特許出願第61/875,907号の優先権を主張する。
【０００２】
本出願はまた、その全体が参照により本明細書に組み込まれる、2014年8月25日に出願した「ASCERTAINING COMMAND COMPLETION IN FLASH MEMORIES」と題する米国特許出願第14/467,404号の優先権を主張する。
【０００３】
本開示の技術は一般に、フラッシュメモリおよびフラッシュメモリのためのコマンドを処理することに関する。
【背景技術】
【０００４】
フラッシュメモリは、カメラ、オーディオプレーヤ、スマートフォン、タブレットなどのモバイル端末を含む多くの種類のコンピューティングデバイスでよく見られる。フラッシュメモリは、2つの一般的なタイプ（取外し可能または組み込み型）のうちの1つであり得、両方の一般的なタイプには、いくつかの規格が存在する。組み込みの状況向けに最初に設計された1つの規格は、電子デバイス技術合同協議会(JEDEC:Joint Electron Device Engineering Council)によって規定されたユニバーサルフラッシュストレージ(UFS:Universal Flash Storage)規格である。別の一般的な規格は、組み込みマルチメディアコントローラ(eMMC:embedded Multi-Media Controller)規格である。
【０００５】
UFS規格では、ホストは、メモリ要素を保持するデバイスと通信する。ホストは、データをメモリ要素に書き込む、データをメモリ要素から読み取るなどの「転送要求」タスクを実行し、キャッシュを同期させるためのコマンドをデバイスに発行する。設計上、UFSは複数の同時の転送要求をサポートする。転送要求は、ホストのコントローラにおいてソフトウェア駆動され、ドアベルレジスタと呼ばれるレジスタと、(少なくともLINUX実装内では)未解決要求変数と呼ばれるソフトウェア変数とを使用する。「未解決要求変数」という用語はLINUXに固有のものであるが、他のオペレーティングシステムは同様の変数を使用しており、本明細書ではすべてを未解決要求変数と呼ぶ。各転送要求は、ドアベルレジスタおよび未解決要求変数において、スロットおよび対応するビットを占める。新しい転送要求を送信するとき、ソフトウェアは、レジスタおよび変数におけるスロットに対応するビットを設定する。レジスタにおいてビットを設定することは、新しい転送要求の準備ができたことをコントローラに通知する。転送要求が完了すると、ハードウェアはレジスタにおけるスロットに対応するビットをクリアし、次いで、ソフトウェアはレジスタにおけるビットを未解決要求変数におけるビットと比較して、完了した要求を見つける。特定の要素が異なる名前を有し得るが、eMMCは同様であることに留意されたい。
【０００６】
ドアベルレジスタを設定する前かつ未解決要求変数を更新した後にホストが中断を受けた場合、ホストは、要求が送信される前に要求が完了したと認識することがある。そのような状況では、ソフトウェアは要求を完了することができるが、エラーを伴う。あるいは、レジスタを設定した後にホストが中断を受け、未解決要求変数を更新する前に要求が完了した場合、要求は失われることがある。さらに別の状況は、別の転送要求完了の中断が現れるまで、要求を遅延させることがある。そのような状況は、要求を遅延させ、それによって性能劣化を引き起こすか、無期限にまたはコマンドを中止させるエラーが生じるまで遅延を継続させるかのいずれかである。現在、そのような状況は、ソフトウェアロックを使用することで回避されている。しかしながら、そのようなソフトウェアロックは遅く、他の転送要求を除外する可能性がある。さらに、そのようなソフトウェアロックまたは除外は、一般に待ち時間を増加させ、特にマルチコアプロセッサにおける性能の劣化をもたらす。
【発明の概要】
【課題を解決するための手段】
【０００７】
発明を実施するための形態で開示される態様は、フラッシュメモリにおけるコマンド完了を確認することを含む。例示的な態様は、ソフトウェアロックおよび未解決要求変数を排除し、これらを転送要求完了レジスタに置換することを含む。転送要求完了レジスタは、ユニバーサルフラッシュストレージ(UFS)転送プロトコル(UTP)転送要求リスト(UTRL)スロットにマップされ得る。ホストのコントローラ（ハードウェア構成要素）は、ドアベルレジスタがクリアされると同時に、転送要求完了時に転送要求完了レジスタにおいてビットを設定することができる。このビットが読み取られた後、転送要求完了レジスタにおけるビットはクリアされる。具体的にはUFSが企図されているが、組み込みマルチメディアコントローラ(eMMC)などの他のフラッシュメモリ規格も、本開示の態様から利益を得ることができる(たとえば、eMMCは、UTRLと機能的に等価であるタスク記述子リスト(TDL)を有する)。ソフトウェアロックおよび未解決要求変数を置換することは、待ち時間を低減し、そのようなソフトウェアロックを使用することで生じ得る転送要求の除外を排除することによって、性能を改善する。特に、完了およびコンテキストの発行は同時に動作することができる。転送要求は、複数のコンテキストから同時に発行され得る。これらの複数のコンテキストの使用は、特にスマートフォンなどのマルチコアデバイスにおける性能を改善する。
【０００８】
この点について、一態様では、UFSシステムが開示される。UFSシステムは、UTRLに対応するいくつかのビットを有するドアベルレジスタを含む。UFSシステムはまた、同数のビットを有する完了レジスタを備える。UFSシステムは、ドアベルレジスタおよび完了レジスタに動作可能に結合された制御システムをさらに備える。制御システムは、送信要求開始のためにドアベルレジスタにおいてドアベルビットを設定するように構成される。別の言い方をすれば、ドアベルレジスタにおけるビットが発生すると、転送要求の準備ができており、転送要求を処理することができる(すなわち、データの転送を開始する)ことをコントローラにシグナリングする。制御システムはまた、転送要求完了時に完了レジスタにおいて完了ビットを設定するように構成される。制御システムはまた、転送要求完了時にドアベルビットをクリアするように構成される。
【０００９】
別の態様では、メモリシステムが開示される。メモリシステムは、いくつかのビットを有するドアベルレジスタを含む。メモリシステムはまた、同数のビットを有する完了レジスタを含む。メモリシステムはまた、ドアベルレジスタおよび完了レジスタに動作可能に結合された制御システムを含む。制御システムは、送信要求開始のためにドアベルレジスタにおいてドアベルビットを設定するように構成される。制御システムはまた、転送要求完了時に完了レジスタにおいて完了ビットを設定するように構成される。制御システムはまた、転送要求完了時にドアベルビットをクリアするように構成される。
【００１０】
別の態様では、メモリシステムを制御する方法が開示される。方法は、ホストにおいて転送要求を生成するステップを含む。方法はまた、転送要求を識別するホスト内のドアベルレジスタにおいてビットを設定するステップを含む。方法はまた、通信インターフェースを通じて転送要求をデバイスに渡すステップを含む。方法はまた、転送要求に関連付けられた転送を完了するステップを含む。方法はまた、ドアベルレジスタにおけるビットをクリアするステップを含む。方法はまた、完了レジスタにおいて完了ビットを設定するステップを含む。
【００１１】
別の態様では、組み込みマルチメディアコントローラ(eMMC)メモリシステムが開示される。メモリシステムは、eMMCタスク記述子リストに対応するいくつかのビットを有するドアベルレジスタを含む。メモリシステムはまた、同数のビットを有する完了通知レジスタを含む。メモリシステムはまた、ドアベルレジスタおよび完了通知レジスタに動作可能に結合され、送信要求開始のためにドアベルレジスタにおいてドアベルビットを設定するように構成された制御システムを含む。制御システムはまた、転送要求完了時に完了通知レジスタにおいて完了ビットを設定するように構成される。制御システムはまた、転送要求完了時にドアベルビットをクリアするように構成される。
【図面の簡単な説明】
【００１２】
【図１】本開示の例示的な態様を用いない、ホストとデバイスとの間の例示的な接続のブロック図である。
【図２Ａ】同期ロックまたは本開示の態様なしで、メモリシステムで生じ得る第1の競合状態を示す図である。
【図２Ｂ】同期ロックまたは本開示の態様なしで、メモリシステムで生じ得る第2の競合状態を示す図である。
【図３】図2Aおよび図2Bに示す競合状態などの競合状態を防止するためにロックを使用する従来のデータフロープロセスのフローチャートである。
【図４】本開示の例示的な態様による、ホストとホストレジスタを有するデバイスとの間の例示的な接続のブロック図である。
【図５】図4のホストとデバイスとの間のデータフローの例示的なプロセスを示すフローチャートである。
【図６】図4に示すホストおよびデバイスを用いることができる、例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１３】
次に図面を参照しながら、本開示のいくつかの例示的な態様について説明する。「例示的」という言葉は、本明細書では「一例、事例、または例示として役立つ」ことを意味するように使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるわけではない。
【００１４】
発明を実施するための形態で開示される態様は、フラッシュメモリにおけるコマンド完了を確認することを含む。例示的な態様は、ソフトウェアロックおよび未解決要求変数を排除し、これらを転送要求完了レジスタに置換することを含む。転送要求完了レジスタは、ユニバーサルフラッシュストレージ(UFS)転送プロトコル(UTP)転送要求リスト(UTRL)スロットにマップされ得る。ホストのコントローラ（ハードウェア構成要素）は、ドアベルレジスタがクリアされると同時に、転送要求完了時に転送要求完了レジスタにおいてビットを設定することができる。このビットが読み取られた後、転送要求完了レジスタにおけるビットはクリアされる。具体的にはUFSが検討されるが、組み込みマルチメディアコントローラ(eMMC)などの他のフラッシュメモリ規格も、本開示の態様から利益を得ることができる(たとえば、eMMCは、UTRLと機能的に等価であるタスク記述子リスト(TDL)を有する)。ソフトウェアロックおよび未解決要求変数を置換することは、待ち時間を低減し、そのようなソフトウェアロックを使用することで生じ得る転送要求の除外を排除することによって、性能を改善する。特に、完了およびコンテキストの発行は同時に動作することができる。転送要求は、複数のコンテキストから同時に発行され得る。これらの複数のコンテキストの使用は、特にスマートフォンなどのマルチコアデバイスにおける性能を改善する。
【００１５】
本開示の態様に取り組む前に、図1〜図3を参照しながら、従来のシステムおよび従来のシステムで生じる問題の概要を提示する。本開示の例示的な態様は、図4を参照しながら、以下で開始する。
【００１６】
この点について、図1は、導体14を介してデバイス12に結合されたホスト10のブロック図である。ホスト10とデバイス12との間の通信は、2013年9月に公表されたUFS v2.0規格に準拠する。本議論はUFSに焦点を当てているが、組み込みマルチメディアコントローラ(eMMC)を含む他のフラッシュ規格も、本開示の態様から利益を得ることができる。ホスト10は、適切な通信インターフェース18に動作可能に結合されたハードウェアベースのシステムであるホストコントローラ16を含む。ホストコントローラ16は、ホストソフトウェア20と相互動作する。総称して、ホストコントローラ16およびホストソフトウェア20は制御システムである。
【００１７】
引き続き図1を参照すると、デバイス12は、適切な通信インターフェース24に動作可能に結合されたハードウェアベースのシステムであるコントローラ22を含む。デバイス12は、メモリユニット26(たとえば、Negated ANDまたはNOT AND(NAND)フラッシュストレージデバイス)をさらに含む。デバイス12は、タスクキュー28をさらに含む。総称して、コントローラ22およびコントローラ22の動作に関連付けられた任意のソフトウェアは制御システムである。
【００１８】
ホスト10は、ドアベルレジスタ30(UTRLDBR)をさらに含む。ドアベルレジスタ30は、ホストコントローラ16によって扱われる転送要求スロットの数に等しいいくつかのビットを有するハードウェアベースの構成要素である。すなわち、ドアベルレジスタ30は、UFS規格のプロトコル転送要求リストに対応するいくつかのビットを有する。
【００１９】
引き続き図1を参照すると、従来のUFSシステムでは、ホスト10を包含するコンピューティング要素は、データをメモリユニット26から読み取るか、またはデータをメモリユニット26に書き込む必要があり得る。したがって、要求されたデータ転送の概要を説明する転送要求は、ホストコントローラ16に送信され得る。次いで、ホストソフトウェア20は、スロットを転送要求に割り当てる。ホストコントローラ16は、複数の転送要求を処理するために複数のスロット(図示せず)を有してもよい。複数の転送要求は、特にマルチコアプロセッサにおいてよく見られる。ホストソフトウェア20がデバイス12に対する転送要求を準備すると、ホストソフトウェア20は、ドアベルレジスタ30において、転送要求が関連付けられたスロットに対応するビットを設定する。ドアベルレジスタ30においてビットを設定することは、通信インターフェース18を通じて転送要求をデバイス12に送信するようにホストコントローラ16にシグナリングする。
【００２０】
デバイス12は、UFS規格内の十分に裏付けされた規則に従って、転送要求を処理する。データ転送が行われ、データ転送が完了すると、ホストコントローラ16はドアベルレジスタ30におけるビットをクリアすることによってホストソフトウェア20に通知する。動作中、ホスト10は転送要求中断を受けることがある。ホストソフトウェア20はドアベルレジスタ30をチェックして、どのタスクが終了したか、どのスロットがすでに割り当てられているかを調べる。しかしながら、より多くの情報がなければ、ホストソフトウェア20は完了したタスク用にゼロにセットされたビットとまだ送信されていない要求用にゼロにセットされたビットを区別することができない。したがって、ホストソフトウェア20は、どのスロットが割り当てられているかを示す未解決要求変数(図示せず)を維持する。
【００２１】
未解決要求変数は、転送要求を送信する準備が始まると更新され、転送要求に対する応答がデバイス12から受信されるとクリアされる。ホストソフトウェア20は、どのスロットが完了した要求を有するかを知るために、未解決要求変数をドアベルレジスタ30と比較する。さらなる制御がなければ、UFSシステムは、エラー、遅延、中止されたコマンド、またはコマンドの損失を引き起こす競合状態を有する可能性がある。そのような2つの競合状態は、図2Aおよび図2Bに示されている。
【００２２】
この点について、図2Aは、プロセス34を通じて、未解決要求変数が更新される前に送信要求が動作を停止した場合に何が起こるかを示す。プロセス34はソフトウェアおよびハードウェアを含む異なる要素によって実施され得、別個の相異なる構成要素(たとえば、異なるサブルーチン、異なるソフトウェアモジュール、異なるICなど)であり得ることを諒解されたい。特に、上記で述べたように、図1のホストソフトウェア20がデバイス12に対する転送要求を準備すると、ホストソフトウェア20は、ドアベルレジスタ30において、転送要求が関連付けられたスロットに対応するビットを設定する(ブロック36)。何らかの他の転送要求を処理するか、または何らかの入来データを処理するホスト10に対応して、ホスト10のコンテキストが変わる(ブロック38)。デバイス12が転送要求を処理する(ブロック40)。デバイス12は、転送要求を処理するのにいくらかの時間を必要とすることがある。デバイス12が転送要求を処理している間に、スリープするための「送信コマンドプロセス」を送信するコンテキスト切替えが行われることがある。デバイス12が転送要求を完了すると、デバイス12は完了タスク通知を送信する。次いで、ホスト10が完了中断を発生させる(ブロック42)。この時点において、コンテキストが変わったので、未解決要求変数は一切更新されなかった。したがって、完了中断時に、ホスト10がドアベルレジスタ30をチェックし(ブロック44)、未解決要求変数を読み取る(ブロック46)。しかしながら、上記で述べたように、未解決要求変数が更新されなかったので、完了した要求は認識されず(ブロック48)、コマンドは中止されるか、またはタイムアウトになる(ブロック50)。
【００２３】
同様に、図2Bは、ドアベルレジスタ30を更新する前に未解決要求変数の更新が行われるプロセス52(上記で説明した、プロセス34で記載した競合状態を回避するために行われた順序の逆)を示す。プロセス52はソフトウェアおよびハードウェアを含む異なる要素によって実施されてよく、別個の異なる構成要素(たとえば、異なるサブルーチン、異なるソフトウェアモジュール、異なるICなど)であり得ることを諒解されたい。しかしながら、コマンドが完了してもエラーを伴う場合、プロセス52は別の競合状態を引き起こす(すなわち、2つのプロセスが同じリソースをめぐって競合している)。特に、プロセス52は、未解決要求変数が更新される時点で開始する(ブロック54)。別の転送要求に対する完了中断が発生する(ブロック56)。しかしながら、中断はドアベルレジスタ30を更新する前に生じる。したがって、ドアベルレジスタ30が読み取られる(ブロック58)とき、ビットは設定されない。しかしながら、未解決要求変数が読み取られる(ブロック60)とき、ホストソフトウェア20は転送要求を見て、完了した要求を認識する(ブロック62)。したがって、ホストソフトウェア20は要求を完了するが、エラーを伴う(ブロック64)。
【００２４】
従来のシステムは、ソフトウェアロックを使用することによって、これらの競合状態を防止する。ソフトウェアロックは待ち時間を増大させる。完全にするために、図3は、送信要求コンテキスト66および要求完了コンテキスト68に関連付けられたフロープロセスを示す。送信要求コンテキスト66に関連付けられたプロセスは、送信要求コンテキスト開始で始まる(ブロック70)。ホスト10がトランザクションデータを準備する(ブロック72)。次いで、ホストソフトウェア20がロックを設定し、中断を無効にする(ブロック74)。ソフトウェアが未解決要求変数を設定し(ブロック76)、次いでドアベルレジスタ30が設定される(ブロック78)。ドアベルレジスタ30が設定された後、ロックが無効になり、中断が有効になる(ブロック80)。ロックが取り外された後、送信要求コンテキストが終了する(ブロック82)。
【００２５】
引き続き図3を参照すると、要求完了コンテキスト68が開始する(ブロック84)。ホストコントローラ16がドアベルレジスタ30におけるビットをクリアする(ブロック85)。要求完了中断が生じ、ホストソフトウェア20によってロックが作成される(ブロック86)。ホスト10がホストソフトウェア20における未解決要求変数を読み取る(ブロック88)。次いで、ホスト10がドアベルレジスタ30を読み取り(ブロック90)、ドアベルレジスタ30および未解決要求変数を参照しながら、完了した要求を判断する(ブロック92)。完了した要求ごとに(ブロック94)、サブルーチンが実行され、ここにおいて、応答コードが読み取られ(ブロック96)、任意のエラーを処理し(ブロック98)、上位レイヤ(たとえば、まず第一に要求を発行したソフトウェア)に要求完了が通知される(ブロック100)。すべての完了した要求がブロック94において処理されると、未解決要求変数の対応するビットがクリアされ(ブロック101)、次いで、ホストソフトウェア20がロックを取り外して終了する(ブロック102)ことにより、要求完了コンテキストが終了する(ブロック104)。送信要求コンテキスト66と要求完了コンテキスト68の両方におけるロックの存在は、指定ロックされたシーケンスによって強調される(ブロック106)。
【００２６】
送信要求コンテキスト66および要求完了コンテキスト68のプロセスとは対照的に、本開示の態様はロックの排除を可能にし、それに伴う不利益を軽減する。この点について、図4は、コマンド完了レジスタ(UTRLCNR)32(時として、完了通知レジスタと呼ばれることがある)を含むホスト10'を示す。大半の他の要求では、ホスト10'は図1のホスト10と同一の要素を有することに留意されたい。ドアベルレジスタ30と同様に、コマンド完了レジスタ32はハードウェアベースであり、ホストコントローラ16によって扱われるスロットの数に等しいいくつかのビットを有する。すなわち、コマンド完了レジスタ32の使用により、ロックの代わりに、ハードウェアソリューションが可能になる。ハードウェアソリューションの使用により、どの時点であっても要求の送信および完了を開始することができる。複数のコンテキストを同時に動作させる能力は、特にマルチコアプロセッサの動作効率を改善する。
【００２７】
この点について、図5は、送信要求コンテキスト108および要求完了コンテキスト110を提供する。送信要求コンテキスト108が開始し(ブロック112)、ホストソフトウェア20がトランザクションデータを準備する(ブロック114)。ホストソフトウェア20がドアベルレジスタ30を設定し(ブロック116)、送信要求が終了する(ブロック118)。未解決要求に対してソフトウェア変数を設定する必要がないので、中断が生じることについての心配がない。
【００２８】
引き続き図5を参照すると、要求完了コンテキスト110が開始する(ブロック120)。最初に、ハードウェアがドアベルレジスタ30をクリアし、コマンド完了レジスタ32を設定する(ブロック122)。中断が生じる(ブロック124)。ホストソフトウェア20が、どのタスクが完了したかを確認するためにコマンド完了レジスタ32を読み取る(ブロック126)。完了したタスクごとに、サブルーチンが開始し(ブロック128)、ここにおいて、応答コードが読み取られ(ブロック130)、任意のエラーを処理し(ブロック132)、ホストソフトウェア20がコマンド完了レジスタ32をクリアする(ブロック134)。ホストソフトウェア20がコマンド完了レジスタ32をクリアした後、上位レイヤ(たとえば、要求を発行したソフトウェア)に要求完了が通知される(ブロック136)。クリアおよび通知の後、コマンド完了レジスタ32における、ビットに対応するスロットは、必要に応じてまたは定義された通りに反転され得る。すべての完了した要求が処理される(ブロック128)と、要求完了コンテキスト110が終了する(ブロック138)。(図3の106によって強調された)ロックが中断を無効にする時間期間とは対照的に、ブロック139は、どの時点であっても中断が生じ得ること、特に、従来のシステムがロックを課す時間の間に生じ得ることを強調する。上記で述べたように、ロックの排除は性能を改善し、新しいハードウェア(すなわち、コマンド完了レジスタ32)の追加は性能の改善に対する許容できるトレードオフと見なされる。
【００２９】
本明細書で開示する態様に従ってフラッシュメモリにおいてコマンド完了を確認することは、任意のプロセッサベースのデバイスで実現されるか、またはそれに組み込まれ得る。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００３０】
この点について、図6は、図4に示すホスト10'およびデバイス12を用いることができる、プロセッサベースのシステム140の一例を示す。この例では、プロセッサベースのシステム140は、1つまたは複数のプロセッサ144を各々が含む1つまたは複数の中央処理装置(CPU)142を含む。CPU142はマスターデバイスであり得、ホスト10'を含み得る。CPU142は、一時記憶データへの高速アクセスのためにプロセッサ144に結合されたキャッシュメモリ146を有し得る。CPU142は、システムバス148に結合される。よく知られているように、CPU142は、システムバス148を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU142は、デバイス12を含み得るメモリシステム150にバストランザクション要求を通信することができる。図6には示さないが、複数のシステムバス148を設けてもよく、この場合、各システムバス148は異なるファブリックを構成する。
【００３１】
他のマスターデバイスおよびスレーブデバイスをシステムバス148に接続することができる。図6に示すように、これらのデバイスは、例として、複数のメモリユニット(詳細には図示していない)を有し得るメモリシステム150、1つまたは複数の入力デバイス152、1つまたは複数の出力デバイス154、1つまたは複数のネットワークインターフェースデバイス156、および1つまたは複数のディスプレイコントローラ158を含むことができる。入力デバイス152は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス154は、限定はしないが、音声、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス156は、ネットワーク160との間のデータの交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク160は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス156は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【００３２】
CPU142はまた、システムバス148を介してディスプレイコントローラ158にアクセスして、1つまたは複数のディスプレイ162に送信される情報を制御するように構成され得る。ディスプレイコントローラ158は、1つまたは複数のビデオプロセッサ164を介して表示されることになる情報をディスプレイ162に送信し、ビデオプロセッサ164は、表示される情報を、ディスプレイ162に適したフォーマットとなるように処理する。ディスプレイ162は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００３３】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを当業者はさらに諒解するであろう。本明細書で説明するデバイスは、例として、どの回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内でも用いられ得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリとすることができ、所望の任意のタイプの情報を記憶するように構成され得る。
この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００３４】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【００３５】
本明細書で開示する態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現化され得、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体化され得る。プロセッサおよび記憶媒体は、ASICに常駐し得る。ASICは、リモート局に常駐し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素として、リモート局、基地局、またはサーバに常駐し得る。
【００３６】
本明細書の例示的な態様のいずれかで説明した動作ステップは、例および考察を提供するために説明されることにも留意されたい。説明した動作は、図示した順序以外の多くの異なる順序で実行され得る。さらに、単一の動作ステップにおいて説明した動作は、実際には、いくつかの異なるステップで実行され得る。加えて、例示的な態様において論じた1つまたは複数の動作ステップは、組み合わされてもよい。フローチャート図において図示した動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを理解されたい。情報および信号は、様々な異なる技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００３７】
本開示の前述の説明は、いかなる当業者も本開示を作製または使用できるようにするために提供される。本開示に対する様々な修正形態が当業者には容易に明らかとなり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【００３８】
10、10'  ホスト
12  デバイス
14  導体
16  ホストコントローラ
18  通信インターフェース
20  ホストソフトウェア
22  コントローラ
24  通信インターフェース
26  メモリユニット
28  タスクキュー
30  ドアベルレジスタ
34  プロセス
52  プロセス
66  送信要求コンテキスト
68  要求完了コンテキスト
108  送信要求コンテキスト
110  要求完了コンテキスト
140  プロセッサベースのシステム
142  中央処理装置、CPU
144  プロセッサ
146  キャッシュメモリ
148  システムバス
150  メモリシステム
152  入力デバイス
154  出力デバイス
156  ネットワークインターフェースデバイス
158  ディスプレイコントローラ
160  ネットワーク
162  ディスプレイ
164  ビデオプロセッサ
【図１】
0006599397.tif 000002
【図２Ａ】
0006599397.tif 000003
【図２Ｂ】
0006599397.tif 000004
【図３】
0006599397.tif 000005
【図４】
0006599397.tif 000006
【図５】
0006599397.tif 000007
【図６】
0006599397.tif 000008