(57)【要約】  キューバリア機能を一方的にサポートするホストコントローラが提供される。ホストコントローラは、キューバリアインジケータを付けられた第1のタスクを受信することができる。結果として、ホストコントローラは、ターゲットデバイスへの第1のタスクの送信を引き延ばす。さらに、ホストコントローラは、第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信も引き延ばす。ホストコントローラは、ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、第1のタスクのみをターゲットデバイスに送る。ホストコントローラは、ターゲットデバイスから、第1のタスクが処理されたという指示が受信されると、第1のタスク後に生じる任意のタスクのみをターゲットデバイスに送る。
2016532950.tif 000002
【特許請求の範囲】
【請求項１】
ホストコントローラであって、
ターゲットデバイスと通信するための通信インターフェースと、
前記通信インターフェースに結合された処理回路とを備え、前記処理回路は、
キューバリアインジケータ付きの第1のタスクを入手し、
前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばし、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送るように構成される、ホストコントローラ。
【請求項２】
前記処理回路はさらに、
タスクキューから複数のタスクを順次に入手し、前記第1のタスクは前記複数のタスクの中の1つであり、
各タスクがキューバリアインジケータを付けられているか否かを確認し、
前記第1のタスクが前記キューバリアインジケータを付けられていると判断するように構成される、請求項1に記載のホストコントローラ。
【請求項３】
前記処理回路はさらに、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばすように構成される、請求項1に記載のホストコントローラ。
【請求項４】
前記処理回路はさらに、
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送るように構成される、請求項3に記載のホストコントローラ。
【請求項５】
前記ホストコントローラおよび前記ターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する、請求項1に記載のホストコントローラ。
【請求項６】
前記ターゲットデバイスにおいて、個別のキューバリアインジケータ機能がサポートされない、請求項1に記載のホストコントローラ。
【請求項７】
前記キューバリアインジケータは、前記ターゲットデバイスにおいてサポートされるか、または前記ホストコントローラと前記ターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる、請求項1に記載のホストコントローラ。
【請求項８】
前記ホストコントローラは前記ターゲットデバイスとは個別のデバイスである、請求項1に記載のホストコントローラ。
【請求項９】
前記ホストコントローラは、単一の半導体デバイスにおいて前記ターゲットデバイスと一体に構成される、請求項1に記載のホストコントローラ。
【請求項１０】
前記ターゲットデバイスは記憶デバイスであり、前記タスクは読出し動作および/または書込み動作を含む、請求項1に記載のホストコントローラ。
【請求項１１】
前記第1のタスクは、前記キューバリアインジケータを伴うことなく前記ターゲットデバイスに送られる、請求項1に記載のホストコントローラ。
【請求項１２】
前記第1のタスクおよび他のタスクは、前記処理回路によってタスクキューから入手され、前記第1のタスクおよび他のタスクの各々は、各タスクがキューバリアインジケータを付けられた他のタスクに対して前記タスクキューに入れられた前記順序において前記処理回路によって処理される、請求項1に記載のホストコントローラ。
【請求項１３】
ターゲットデバイスと通信するためにホストコントローラ上で使用できる方法であって、
キューバリアインジケータ付きの第1のタスクを入手するステップと、
前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばすステップと、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送るステップとを含む、ターゲットデバイスと通信するためにホストコントローラ上で使用できる方法。
【請求項１４】
タスクキューから複数のタスクを順次に入手するステップであって、前記第1のタスクは前記複数のタスクの中の1つである、入手するステップと、
各タスクがキューバリアインジケータを付けられているか否かを確認するステップと、
前記第1のタスクが前記キューバリアインジケータを付けられていると判断するステップとをさらに含む、請求項13に記載の方法。
【請求項１５】
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばすステップをさらに含む、請求項14に記載の方法。
【請求項１６】
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送るステップをさらに含む、請求項15に記載の方法。
【請求項１７】
前記ホストコントローラおよび前記ターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する、請求項13に記載の方法。
【請求項１８】
前記キューバリアインジケータは、前記ターゲットデバイスにおいてサポートされるか、または前記ホストコントローラと前記ターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる、請求項13に記載の方法。
【請求項１９】
前記キューバリアインジケータ機能は前記ターゲットデバイスにおいてサポートされない、請求項13に記載の方法。
【請求項２０】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体であって、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
キューバリアインジケータ付きの第1のタスクを入手させ、
前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばさせ、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送らせる、1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体。
【請求項２１】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
タスクキューから複数のタスクを順次に入手させ、前記第1のタスクは前記複数のタスクの中の1つであり、
各タスクがキューバリアインジケータを付けられているか否かを確認させ、
前記第1のタスクが前記キューバリアインジケータを付けられていると判断させる、請求項20に記載の非一時的プロセッサ可読記憶媒体。
【請求項２２】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばさせる、請求項20に記載の非一時的プロセッサ可読記憶媒体。
【請求項２３】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送らせる、請求項20に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条の下での優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2013年7月23日に出願された「Providing Queue Barriers When Unsupported By An I/O Protocol or Target Device」と題する米国仮出願第61/857,570号の優先権を主張する。
【０００２】
以下の内容は包括的には、キュー内のタスク実行に関し、より具体的には、使用中の入力/出力(I/O)プロトコルによってキューバリアがサポートされないときに、そのようなキューバリアを設けるか、または支援するための方法およびデバイスに関する。
【背景技術】
【０００３】
ホストデバイス内のI/Oホストコントローラ内で動作するソフトウェアは、I/OホストコントローラによってターゲットI/Oデバイスに送られるいくつかのタスクを、キューに入れ、実行するためにキューに入れることができる。場合によっては、実行の順序は、ホストデバイスの制御を超えて、受信側のターゲットI/Oデバイスによって決定される場合がある。したがって、受信側ターゲットI/Oデバイスはタスクの実行の順序を変更することができる。
【０００４】
場合によっては、ホストデバイス上のソフトウェアは、ターゲットI/Oデバイスに送られるタスクの特定の実行順序を保証したい場合がある。たとえば、いくつかのI/O通信プロトコルは、タスクを順序から外れて処理できないか否かを指示するための役割を果たすキューバリアを設ける。別の場合では、ターゲットI/Oデバイスおよび/またはI/O通信プロトコル(ホストデバイスとターゲットI/Oデバイスとの間で用いられる)が、そのような実行順序を強制するための引っかかり(hook)を提供しない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そのため、キューバリア機能がターゲットI/OデバイスまたはI/O通信プロトコルによってサポートされない状況において、ホストデバイスがターゲットI/Oデバイスにおいて実行順序を制御できるようにするキューバリア機能を提供することが必要とされている。
【課題を解決するための手段】
【０００６】
ターゲットデバイスと通信するための通信インターフェースと、通信インターフェースに結合される処理回路とを備えるホストコントローラが提供される。処理回路は、(a)キューバリアインジケータ付きの第1のタスクを入手し、(b)ターゲットデバイスへの第1のタスクの送信を引き延ばし、および/または(c)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、第1のタスクをターゲットデバイスに送るように構成することができる。
【０００７】
一例では、処理回路はさらに、(a)タスクキューから複数のタスクを順次に入手し、第1のタスクは複数のタスクの中の1つであり、(b)各タスクがキューバリアインジケータ付きであるか否かを確認し、および/または(c)第1のタスクがキューバリアインジケータ付きであると判断するように構成することができる。
【０００８】
さらに、処理回路はさらに、ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信を引き延ばすように構成することができる。次いで、処理回路は、ターゲットデバイスから、第1のタスクが処理されたという指示が受信されると、第1のタスク後に生じる任意のタスクをターゲットデバイスに送ることができる。
【０００９】
一実施態様では、ホストコントローラおよびターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する場合がある。一態様によれば、ターゲットデバイスにおいて、個別のキューバリアインジケータ機能がサポートされない。別の態様によれば、キューバリアインジケータは、ターゲットデバイスにおいてサポートされるか、またはホストコントローラとターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる場合がある。
【００１０】
一実施態様では、ホストコントローラは、ターゲットデバイスとは個別のデバイスとすることができる。別の実施態様では、ホストコントローラは、単一の半導体デバイスにおいて、ターゲットデバイスと一体に構成することができる。一例では、ターゲットデバイスは記憶デバイスとすることができ、タスクは読出し動作および/または書込み動作を含む。
【００１１】
第1のタスクは、キューバリアインジケータを伴うことなく、ターゲットデバイスに送られる場合がある。第1のタスクおよび他のタスクは、処理回路によってタスクキューから入手される場合があり、第1のタスクおよび他のタスクの各々は、各タスクがキューバリアインジケータ付きの他のタスクに対してタスクキューに入れられた順序において、処理回路によって処理される。
【００１２】
ターゲットデバイスと通信するためにホストコントローラ上で使用できる方法も提供され、(a)キューバリアインジケータ付きの第1のタスクを入手することと、(b)ターゲットデバイスへの第1のタスクの送信を引き延ばす(stall)(たとえば、延期する、一時停止する)ことと、(c)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、第1のタスクをターゲットデバイスに送ることとを含む。
【００１３】
その方法はさらに、(a)タスクキューから複数のタスクを順次に入手することであって、第1のタスクは複数のタスクの中の1つである、入手すること、(b)各タスクがキューバリアインジケータ付きであるか否かを確認すること、(c)第1のタスクがキューバリアインジケータ付きであると判断すること、および/または(d)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信を引き延ばすことを含むことができる。ターゲットデバイスから、第1のタスクが処理されたという指示が受信されると、第1のタスク後に生じる任意のタスクをターゲットデバイスに送ることができる。
【００１４】
一例では、ホストコントローラおよびターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する場合がある。別の例では、キューバリアインジケータは、ターゲットデバイスにおいてサポートされるか、またはホストコントローラとターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる場合がある。さらに別の例では、キューバリアインジケータ機能はターゲットデバイスにおいてサポートされない。
【００１５】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体が提供され、1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、(a)キューバリアインジケータ付きの第1のタスクを入手させ、(b)ターゲットデバイスへの第1のタスクの送信を引き延ばさせ、(c)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、第1のタスクをターゲットデバイスに送らせ、および/または(d)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信を引き延ばさせる。
【００１６】
非一時的プロセッサ可読記憶媒体は1つまたは複数の命令をさらに含むことができ、1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、(a)タスクキューから複数のタスクを順次に入手させ、第1のタスクは複数のタスクの中の1つであり、(b)各タスクがキューバリアインジケータ付きであるか否かを確認させ、および/または(c)第1のタスクがキューバリアインジケータ付きであると判断させる。ターゲットデバイスから、第1のタスクが処理されたという指示が受信されると、第1のタスク後に生じる任意のタスクをターゲットデバイスに送ることができる。
【図面の簡単な説明】
【００１７】
【図１】バスを介してターゲットI/Oデバイスに結合され、キューバリア機能を実施するように構成されるホストデバイスを備えるシステムのブロック図である。
【図２】キューバリア機能をいかに実施できるかを示す流れ図である。
【図３Ａ】ホストデバイス上のキューバリアインジケータの例示的な実施態様の処理を図式的に示す図である。
【図３Ｂ】ホストデバイス上のキューバリアインジケータの例示的な実施態様の処理を図式的に示す図である。
【図３Ｃ】ホストデバイス上のキューバリアインジケータの例示的な実施態様の処理を図式的に示す図である。
【図４】タスクのためのキューバリアを実施するためにホストコントローラによって使用できる方法を示す流れ図である。
【図５】ホスト制御によるキューバリア機能を実施するホストデバイスの一例を示すブロック図である。
【図６】キューバリア機能を実施するためにホストデバイスにおいて使用できる例示的な方法を示す流れ図である。
【図７】キューバリア機能を支援するように構成される例示的なホストコントローラを示すブロック図である。
【図８】キューバリア機能を支援するように構成されるホストコントローラによって使用できる例示的な方法を示す流れ図である。
【図９】キューバリア機能を支援するように構成されるホストコントローラによって使用できる例示的な方法を示す別の流れ図である。
【発明を実施するための形態】
【００１８】
添付の図面に関連して以下に記載される説明は、種々の構成の説明として意図されており、本明細書に記載される概念および特徴が実践することができる唯一の構成を表すことは意図していない。以下の説明は、種々の概念を完全に理解してもらうために、具体的な細部を含む。しかしながら、これらの概念がこれらの具体的な細部を用いることなく実践できることは、当業者には明らかであろう。場合によっては、説明される概念および特徴を曖昧にするのを避けるために、周知の回路、構造、技法および構成要素がブロック図の形で示される。
【００１９】
本開示全体にわたって提示されている種々の概念は、幅広い種類の電気通信システム、ネットワークアーキテクチャ、電子デバイス、モバイルデバイス、コンピューティングデバイスおよび通信標準規格にわたって実施することができる。本開示の特定の態様が、具体的なプロトコル、システムおよび技術を参照しながら以下に説明される。しかしながら、本開示の1つまたは複数の態様が、1つまたは複数の他のワイヤレス通信プロトコル、システムおよび技術の中で利用され、その中に含まれる場合があることを当業者は認識されよう。
【００２０】
〔概説〕
本開示の種々の特徴および態様は、受信側ターゲットデバイスまたはインターフェースプロトコルが、キュー順序付けに関するサポートを提供しない場合であっても、タスクが特定の順序付けにおいて実行されることを保証することに関連する。ホストデバイス上で動作するホストソフトウェアが、特定のタスクに、キューバリア(QBR)インジケータ(たとえば、タグまたはマーカ)を付けることができる。しかしながら、ホストデバイスが通信するターゲットI/Oデバイス、および/または用いられるI/O通信プロトコルが、そのようなQBRインジケータをサポートしない場合がある。そのため、ホストI/Oコントローラが、QBRインジケータでタグ付けされるか、またはQBRインジケータを付けられたタスクを処理するとき、先行して(ターゲットI/Oデバイスにおいて)キューに入れられたすべてのタスクが実行されるまで、ホストI/OコントローラはそのタスクをターゲットI/Oデバイスに送らない。ターゲットI/Oデバイスは、各タスクが実行または処理されるのに応じて、ホストI/Oコントローラに実行確認応答を送ることができる。ホストデバイスにおけるホストI/Oコントローラは、QBR付きのタスク後にキューに入れられたすべてのタスクを引き延ばす/保留することもでき、QBR付きのタスクが実行された後にのみ、それらのタスクをターゲットI/Oデバイスに渡すことができる。このようにして、ホストデバイスのホストI/Oコントローラにおいて、I/Oインターフェースの一部としてキューバリアを実施することができる。たとえば、ホストI/Oコントローラにおけるそのようなキューバリアは、I/O通信プロトコルおよび/またはターゲットI/Oデバイスによってキューバリアがネイティブにサポートされない場合に有用な場合がある。他の例では、ホストI/Oコントローラにおけるそのようなキューバリアは、I/O通信プロトコルがキューバリアをサポートする場合であっても有用な場合がある。たとえば、I/O通信プロトコルがキューバリアをサポートする場合であっても、たとえば、他のキューバリアが依然として進行中である間にI/O通信プロトコルがキューバリアコマンドを送ることを許されない場合があるので、依然としてホストI/Oコントローラがキューバリアも実施できるようにすることが望ましい場合がある。こ
の概念は、1つまたは複数のQBRを付けられた/QBRでタグ付けされたタスクが、キュー内で任意の一時点で(すなわち、同時に)用いられることを企図している。
【００２１】
〔例示的な動作環境〕
図1は、バス106を介してターゲットI/Oデバイス104に結合され、キューバリア機能を実施するように構成されるホストデバイス102を備えるシステムのブロック図である。ホストデバイス102は、ホストソフトウェア108と、タスクキュー109と、ホストコントローラ110とを含むことができる。ターゲットI/Oデバイス104は、コントローラ112と、タスクキューと、記憶デバイス116とを含むことができる。ホストタスクキュー109は、ターゲットI/Oデバイス104に送られるタスクを保留することができる。たとえば、そのようなホストタスクキュー109は、ホストコントローラ110にタスクを与えるためにホストソフトウェア108によって用いられる場合があり、タスクがターゲットI/Oデバイス104に送られるまでタスクを保留するために用いられる場合がある。
【００２２】
種々の実施態様では、ターゲットI/Oデバイス104は、ホストデバイスとは異なる、もしくは個別の構成要素とすることができるか、またはターゲットI/Oデバイス104は、ホストデバイス102とともに、単一の半導体チップの一部として集積することができる。たとえば、ターゲットI/Oデバイス104は、電子装置技術連合評議会(JEDEC:Joint Electron Device Engineering Council)による組み込みマルチメディアコントローラ(eMMC:Embedded Multi-Media Controller)標準規格に準拠するフラッシュ記憶デバイスとすることができる。キューバリアは、他のタスクに対するタスクの実行順序を規定できるようにするプロトコルによって規定されることがある。しかしながら、これは、ターゲットI/Oデバイスが、そのようなバリアタグ/マーカによって規定される実行順序を認識し、準拠するときにのみ機能する。
【００２３】
1つの手法によれば、ホストハードウェア108は、他のタスクに対して特定の順序において実行されるべきであるタスクを生成することができる。たとえば、第1のタスクは、後続のすべてのタスクの前に実行されなければならない。そのため、ホストソフトウェア108は、第1のタスクが他のタスクに対して特定の順序において実行されるべきであることを指示するために、第1のタスクにキューバリア(QBR)インジケータ(たとえば、タグ、マーカまたはビット)を付けることができる(たとえば、第1のタスクは、その前に発行されたすべてのタスクの後に実行されなければならず、および/またはその後に発行されたすべてのタスクの前に実行されなければならない、など)。ホストコントローラ110は、第1のタスクがQBRインジケータ付きであることを認識することができる。したがって、ホストコントローラ110は、すべての先行するタスクがターゲットI/Oデバイス104によって実行されたという確認応答または指示が受信されるまで、第1のタスクを、ターゲットI/Oデバイス104に送る代わりに、引き延ばすか、または保留することができる。同様に、ホストコントローラ110は、後続のすべてのタスクをターゲットI/Oデバイス104に送る代わりに、それらのタスクを引き延ばすか、または保留することができる。ホストコントローラ104が、すべての先行するタスクがターゲットI/Oデバイス104によって実行されたという指示を受信すると、ホストコントローラは、第1のタスクをターゲットI/Oデバイス104に送る。次いで、ホストコントローラ110は、後続のタスクをターゲットI/Oデバイス104に送る前に、第1のタスクがターゲットI/Oデバイス104によって実行されたという指示を受信するのを待つ。本明細書において開示される「タスク」は、データタスクおよび/または非データタスク(たとえば、コマンド、命令など)とすることができることに留意されたい。一例では、タスクは読出し動作および/または書込み動作を含むことができる。
【００２４】
図2は、キューバリア機能をいかに実施できるかを示す流れ図である。ホストソフトウェア108はタスク1...nを生成し(204)、それらのタスクをホストコントローラ110に与えることができる。ホストコントローラ110は、次いで、タスク1...nをターゲットコントローラ112に送り、ターゲットコントローラ112はそれらのタスクをタスクキュー114に与え、タスクキューからのタスクを実行または処理することができる(208)。
【００２５】
ホストソフトウェア108は、キューバリアインジケータ212(たとえば、マーカまたはタグ)付きのタスクRも生成することができる(210)。タスクRは、ホストコントローラ110に与えられる。しかしながら、タスクRはQBRとしてタグ付けされるか、またはQBRを付けられるので、ホストコントローラ110はタスクRを引き延ばすか、または保留する(216)。ホストコントローラ110は、先行して送られたすべてのタスクが実行されたか、または処理されたというターゲットI/Oデバイス104からの確認応答を待つ。タスク1...nがターゲットI/Oデバイス104によって実行されたか、または処理されたという確認応答を受信する(217)と、ホストコントローラ110は、タスクRをターゲットコントローラ112に送る。いくつかの実施態様において、タスク1...nが実行または処理されたという確認応答は、最後のタスク(すなわち、タスクn)が処理されつつあるが、そのような処理がまだ完了していないときに送られる場合があることに留意されたい。ターゲットコントローラ112から、タスクRはタスクキュー114に渡され、タスクキューからのタスクが処理または実行される(226)。
【００２６】
そのときに、ホストコントローラ110は、タスクRがターゲットI/Oデバイス104によって実行または処理されたという確認応答を受信するまで、タスクR後に生成された任意のタスクt...w 218を引き延ばすか、または保留する(222)。タスクRがターゲットI/Oデバイス104によって実行または処理されたという確認応答を受信する(224)と、ホストコントローラ110は、タスクt...wをターゲットコントローラ112に送り、ターゲットコントローラ112は、そのタスクをタスクキュー114に渡し、タスクキューからのタスクが処理または実行される場合がある(228)。
【００２７】
このようにして、ホストコントローラ110は、ターゲットI/Oコントローラおよび/またはI/Oプロトコルがキューバリアをサポートしないときでも、タスクのためのキューバリアを一方的に実施することができる。その結果として、ホストコントローラ110によって、タスク実行順序付けを実施することができる。
【００２８】
QBRを付けられた/QBRでタグ付けされた1つまたは複数のタスクは、タスクキュー内で任意の一時点で(すなわち、同時に)用いることができることに留意されたい。そのため、QBRとしてタグ付けされるか、またはQBRを付けられた複数のタスクをホストデバイスキュー内に入れることができ、QBRを付けられた/QBRでタグ付けされた各タスクは、ホストデバイスタスクキュー内に入れられた順序で、ターゲットI/Oデバイスに送られる。
【００２９】
図3(図3A、図3Bおよび図3Cを含む)は、ホストデバイス上のキューバリアインジケータの例示的な実施態様の処理を図式的に示す。ホストデバイス102は、ホストコントローラ110によって処理するためにタスクが入れられる第1のタスクキュー302を実現することができる。ターゲットデバイス104が、同様に、ターゲットデバイス104によって処理するために、ターゲットコントローラ112によって受信されたタスクが入れられる第2のタスクキュー304を実現することができる。
【００３０】
第1のタスクキュー302内のタスクは、キューバリアインジケータでタグ付けされるか、またはキューバリアインジケータを付けられる場合がある。たとえば、キューバリアインジケータ=「0」は非キューバリアを指示し、キューバリアインジケータ=「1」はキューバリアを指示する。ホストコントローラ110は、各タスクを実行または処理する前に、タスクごとにキューバリアインジケータをチェックすることができる。特定のタスクに関してキューバリアインジケータ=「0」である場合には、ホストコントローラはタスクを処理する。そうではなく、特定のタスクに関してキューバリアインジケータ=「1」である場合には、ホストコントローラは、先行して送られたすべてのタスクがターゲットデバイス104によって処理されたという指示または確認応答を受信するまで、そのタスク(そして場合によっては後続のすべてのタスク)の処理を引き延ばすか、または休止する。
【００３１】
時点kにおいて、ホストコントローラ110は、タスクnをターゲットデバイス104に送ることによって、タスクnを実行または処理することができ、そのタスクは第2のタスクキュー304に入れられる。ターゲットデバイス104が各タスクを処理するとき、ターゲットデバイス104は、ホストデバイス102に、各タスクに関する実行確認応答を送ることができる。
【００３２】
時点k+iにおいて、ホストコントローラ110は、タスクn+iをターゲットデバイス104に送ることによってタスクn+iを実行または処理することができ、そのタスクは第2のタスクキュー304に入れられる。
【００３３】
時点k+i+1において、ホストコントローラ110は、タスクpをいつでも実行または処理することができる。タスクpのためのキューバリアインジケータをチェックすると、ホストコントローラは、キューバリアインジケータがイネーブルされているか、または「1」に設定されており、タスクpのためのキューバリアがアサートされていることを指示することを検出する。そのため、ホストコントローラ110は、ターゲットデバイス104に先行して送られたすべてのタスクが処理されたという確認応答または指示を受信するまで、タスクp(そして後続のすべてのタスク)の処理を休止するか、または引き延ばす。
【００３４】
時点k+i+jによって、ホストコントローラ110は、タスクn+iを含む先行するすべてのタスクがターゲットデバイス104によって実行または処理されたという確認応答を受信している場合がある。そのため、時点k+i+j+1において、ホストコントローラ110は、タスクpを処理することができる。ホストコントローラ110は、タスクp(すなわち、キューバリアインジケータを有するタスク)がターゲットデバイスによって処理されたという指示または確認応答まで、後続のすべてのタスクを引き延ばすことができる。時点k+i+j+2において、ホストコントローラ110は、タスクpのための実行確認応答を受信する場合がある。次いで、時点k+i+j+3において、ホストコントローラ110は、後続のタスクp+1を処理することができ、それ以降も同様である。
【００３５】
一例において、キューバリアインジケータは各タスクに添付されるビットとすることができることに留意されたい。別の例では、タスクごとのキューバリアインジケータは、個別のメモリセグメント内に保持される場合がある。
【００３６】
図4は、タスクのためのキューバリアを実施するためにホストコントローラによって使用できる方法を示す流れ図である。この方法は、たとえば、図1、図2および図3において示されるホストコントローラ110によって実施することができる。ホストコントローラは、ホストコントローラがターゲットデバイスと通信するための通信インターフェースを含むことができる。ホストコントローラ内の処理回路は、(a)キューバリアインジケータ付きの第1のタスクを入手し(402)、(b)ターゲットデバイスへの第1のタスクの送信を引き延ばし(404)、 (c)第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信を引き延ばし(406)、(d)ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信される(408)と、第1のタスクをターゲットデバイスに送り(410)、および/または(e)ターゲットデバイスから、第1のタスクが処理されたという指示が受信される(414)と、第1のタスク後に生じる任意のタスクをターゲットデバイスに送る(416)ように構成することができる。そうでない場合には、そのような指示が受信されるまで、第1のタスク後に生じる任意のタスクが引き延ばされる(412)。いくつかの実施態様では、キューバリアインジケータはターゲットデバイスに送られないことに留意されたい。
【００３７】
いくつかの実施態様では、ホストコントローラおよびターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する場合がある。さらに、キューバリアインジケータ機能は、ターゲットデバイスにおいてサポートされない場合もある。ホストコントローラは、単一の半導体デバイスにおいて、ターゲットデバイスと一体に構成することができる。一例では、ターゲットデバイスは記憶デバイスとすることができる(たとえば、不揮発性記憶装置、揮発性記憶装置、フラッシュ記憶装置など)。
【００３８】
例示的なホストデバイス
図5は、ホスト制御によるキューバリア機能を実施するホストデバイスの一例を示すブロック図である。ホストデバイス502は、処理回路504と、ホストコントローラ506と、プロセッサ可読記憶媒体/デバイス508と、メモリデバイス530と、トランシーバ回路512と、バス510とを含むことができる。
【００３９】
処理回路504は、1つまたは複数のタスクを生成し、それらのタスクを共有メモリデバイス530内のタスクキュー522に入れるように構成されるタスク発生器モジュール/回路514を含むことができる。また、処理回路504は、1つまたは複数のタスクに、オペレーティングシステム、ホストソフトウェアまたはコンパイラによって指示されるようなキューバリアインジケータを付けるように構成されるキューバリアマーキングモジュール/回路516も含むことができる。一例では、プロセッサ可読記憶媒体デバイス508は、処理回路504上で動作するホストソフトウェアがそのような機能を実行できるようにするためのタスク発生器命令524およびキューバリアマーキング命令526を含むことができる。
【００４０】
ホストコントローラ506は、メモリデバイス530内のタスクキュー522からタスクを入手することができる。キューバリアインジケータチェッカ520が、実行前に、その特定のタスクのためにキューバリアインジケータが設定されているか否かを確認するために、各タスクをチェックすることができる。そのタスクのためにキューバリアインジケータが設定されていない場合には、ホストコントローラ506はタスクを処理することができ、たとえば、そのタスク(たとえば、データおよびコマンド)をトランシーバ回路512を介してターゲットデバイスに送る。そのタスクのためにキューバリアインジケータが設定されている(たとえば、「1」の)場合には、ホストコントローラ506は、そのタスクおよび後続のすべてのタスクの実行または処理を引き延ばすか、一時停止するか、または休止することができる。一例では、タスクは、ターゲットデバイス上で実行されることになる読出し動作および/または書込み動作を含むことができる。
【００４１】
ホストコントローラ506は、処理されているタスクのためのステータス情報を保持することができる。ターゲットデバイスは、ターゲットデバイスが処理したタスクごとに、ホストコントローラ506に確認応答を送ることができる。先行するすべてのタスクが処理されたという指示を受信すると、ホストコントローラ506は、一時停止または休止されたタスクと、後続のすべてのタスクとを処理する(たとえば、送る)ことができる。
【００４２】
図6は、キューバリア機能を実施するためにホストデバイスにおいて使用できる例示的な方法を示す流れ図である。ホストデバイス上で動作するホストソフトウェアが、1つまたは複数のタスクを入手または生成することができる(602)。タスクごとに、ホストソフトウェアは、そのタスクがキューバリアインジケータを付けられるべきか否かを確認することができる(604)。付けられるべきである場合には、そのタスクのためのバリアキューインジケータが設定またはイネーブルされる(606)。次いで、各タスクはホストコントローラと共有されるタスクキューに記憶される(608)。
【００４３】
例示的なホストコントローラ
図7は、キューバリア機能を支援にするように構成される例示的なホストコントローラを示すブロック図である。この例では、ホストコントローラ702は、1つまたは複数のレジスタ708および/または入力/出力通信インターフェースもしくは回路710に結合されるコントローラ処理回路704を含むことができる。コントローラ処理回路704は、タスク処理モジュール/回路711、キューバリアインジケータ検出モジュール/回路712、タスク休止モジュール/回路714、および/またはタスク再開モジュール/回路716を含むことができる。
【００４４】
タスク処理モジュール/回路711は、タスクキュー726からタスクを検索し、検索されたタスクを処理し、次いで、タスクキュー726内の次のタスクを処理することができる。そのようなタスクは、たとえば、外部ターゲットデバイスからの読出し動作または外部ターゲットデバイスへの書込み動作を実行することを含むことができる。キューバリアインジケータ検出モジュール/回路712は、そのタスクを処理する前に、特定のタスクがキューバリアインジケータを付けられるか、またはタグ付けされるか否かを確認することができる。特定のタスクのためにキューバリアインジケータが検出された場合には、タスク休止モジュール/回路714は、そのタスクおよび後続のタスクの処理をフリーズ、休止または一時停止することができる(たとえば、現在のタスクの処理およびタスクキュー内で未完の任意の後続のタスクの処理を休止する)。タスク再開モジュール/回路716は、ターゲットデバイスにおける先行するタスクの完了を監視することができ、先行するすべてのタスクがターゲットデバイスによって処理されたという指示を受信すると、タスクキュー内のタスクの処理を再開する。
【００４５】
一例では、ホストコントローラ702は、1つまたは複数の動作命令を入手するために、(たとえば、I/Oインターフェース回路710を介して)記憶デバイス706に結合することができる。たとえば、記憶デバイス706は、タスクキュー726からのタスクを処理するタスク処理命令719、バリアインジケータの存在または発生を検出するキューバリアインジケータ検出命令720、バリアインジケータが検出されたときにタスクキューからのタスクの処理を休止するタスク休止命令722、および/またはバリアインジケータがクリアされると、タスクの処理を再開するタスク再開命令724を含むことができる。
【００４６】
一例では、入力/出力通信インターフェースまたは回路710は、コントローラ処理回路704をバスに通信可能に結合する役割を果たすことができ、バスを通して、コントローラ処理回路704は、トランシーバ回路を介して、ターゲットデバイスに結合する。代替的には、入力/出力通信インターフェースまたは回路710は、コントローラ処理回路704をターゲットデバイスに直接結合することができる。
【００４７】
図8は、キューバリア機能を支援するように構成されるホストコントローラによって使用できる例示的な方法を示す流れ図である。ホストコントローラは、タスクキューからタスクを入手することができる(802)。次いで、ホストコントローラは、タスクがキューバリアインジケータを付けられているか否かを確認する(804)。付けられている場合には、ホストコントローラは、ターゲットデバイスへのタスクの送信を引き延ばす(806)。ホストコントローラが、ターゲットデバイスが先行して送られたすべてのタスクの処理を完了したという指示を受信する(808)と、ホストコントローラはタスクをターゲットデバイスに送る(810)。このプロセスは、タスクキュー内のタスクごとに繰り返すことができる。
【００４８】
図9は、キューバリア機能を支援するように構成されるホストコントローラによって使用できる例示的な方法を示す別の流れ図である。ホストコントローラは、タスクキューから複数のタスクを順次に入手することができ、第1のタスクは複数のタスクの中の1つである(902)。各タスクが入手または検索されると、ホストコントローラは、各タスクがキューバリアインジケータを付けられているか否かを確認することができる(904)。たとえば、第1のタスクがキューバリアインジケータを付けられていると判断することができる(906)。そのため、ホストコントローラは、ターゲットデバイスへの第1のタスクの送信を引き延ばす(908)。同様に、ホストコントローラは、ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、第1のタスク後に生じる任意のタスクのターゲットデバイスへの送信も引き延ばすことができる(910)。ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、第1のタスクがターゲットデバイスに送られる(912)。ターゲットデバイスから、第1のタスクが処理されたという指示が受信されると、第1のタスク後に生じる任意のタスクをターゲットデバイスに送ることができる(914)。
【００４９】
一例では、ホストコントローラおよびターゲットデバイスは、キューバリアインジケータ機能がサポートされないプロトコルを用いて通信する。別の例では、キューバリアインジケータ機能はターゲットデバイスにおいてサポートされない。さらに別の例では、キューバリアインジケータは、ターゲットデバイスにおいてサポートされるか、またはホストコントローラとターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる場合がある。
【００５０】
一実施態様では、ホストコントローラは、ターゲットデバイスとは個別のデバイスとすることができる。別の実施態様では、ホストコントローラは、単一の半導体デバイスにおいて、ターゲットデバイスと一体に構成することができる。さらに別の実施態様では、ターゲットデバイスは記憶デバイスとし、タスクは読出し動作および/または書込み動作を含む。一態様によれば、第1のタスクは、キューバリアインジケータを伴うことなく、ターゲットデバイスに送られる。
【００５１】
上記の態様、構成、および実施形態は、具体的な細部を用いて詳細に論じられたが、図1、図2、図3、図4、図5、図6、図7および/または図8に示される構成要素、ステップ、特徴および/または機能のうちの1つまたは複数は、再構成し、および/または組み合わせて、単一の構成要素、ステップ、特徴または機能にすることができるか、あるいは、いくつかの構成要素、ステップ、または機能において具現することができる。本開示から逸脱することなく、追加の要素、構成要素、ステップ、および/または機能を追加することもできるか、または利用しないこともできる。図1、図2、図3、図5および/または図7に示された装置、デバイス、および/または構成要素は、図2、図3、図4、図6および/または図8に記載された方法、特徴、パラメータおよび/またはステップのうちの1つまたは複数を実行するか、または利用するように構成することができる。本明細書に記載された新規のアルゴリズムはまた、ソフトウェアにおいて効率的に実施することができ、および/またはハードウェアに効率的に埋め込むことができる。
【００５２】
また、少なくともいくつかの実施態様が、流れ図、フロー図、構造図、またはブロック図として表されるプロセスとして説明されたことに留意されたい。流れ図は動作を逐次プロセスとして説明する場合があるが、動作の多くを並列にまたは同時に実行することができる。さらに、動作の順序は、再配置することができる。プロセスは、その動作が完了したときに終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応することができる。処理が関数に対応する場合、その終了は、関数が呼出し関数またはメイン関数に戻ることに対応する。本明細書において説明される種々の方法は、非一時的機械可読媒体、コンピュータ可読媒体、および/またはプロセッサ可読記憶媒体に記憶し、1つまたは複数のプロセッサ、機械、および/またはデバイスによって実行することができるプログラミング(たとえば命令および/またはデータ)によって、部分的にまたは完全に実現することができる。
【００５３】
さらに、本明細書において開示される実施形態に関連して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せとして実現できることは当業者には理解されよう。この互換性を明確に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップはこれまで、全般的にそれらの機能に関して説明されてきた。そのような機能がハードウェアとして実現されるかソフトウェアとして実現されるかは、特定の適用例およびシステム全体に課される設計制約に応じて決まる。
【００５４】
本明細書において説明され、添付の図面に示される例に関連する種々の特徴は、本開示の範囲から逸脱することなく、異なる例および実施態様で実現することができる。したがって、いくつかの特定の構成および配置が説明され、添付の図面において図示されてきたが、説明された実施形態への種々の他の追加および変更、ならびに実施形態からの削除が当業者には明らかになるので、そのような実施形態は例示に過ぎず、本開示の範囲を制限するものではない。したがって、本開示の範囲は、以下の特許請求の範囲の文言、および法的均等物によってのみ決定される。
【符号の説明】
【００５５】
102  ホストデバイス
104  ターゲットI/Oデバイス
106  バス
108  ホストソフトウェア
109  ホストタスクキュー
110  ホストコントローラ
112  ターゲットコントローラ
116  記憶デバイス
302  第1のタスクキュー
304  第2のタスクキュー
502  ホストデバイス
504  処理回路
506  ホストコントローラ
508  プロセッサ可読記憶媒体/デバイス
510  バス
512  トランシーバ回路
514  タスク発生器モジュール/回路
516  キューバリアマーキングモジュール/回路
520  キューバリアインジケータチェッカ
522  タスクキュー
524  タスク発生器命令
526  キューバリアマーキング命令
530  メモリデバイス
702  ホストコントローラ
704  コントローラ処理回路
706  記憶デバイス
708  レジスタ
710  入力/出力通信インターフェースまたは回路
711  タスク処理モジュール/回路
712  キューバリアインジケータ検出モジュール/回路
714  タスク休止モジュール/回路
716  タスク再開モジュール/回路
719  タスク処理命令
720  キューバリアインジケータ検出命令
722  タスク休止命令
724  タスク再開命令
726  タスクキュー
【図１】
2016532950.tif 000003
【図２】
2016532950.tif 000004
【図３Ａ】
2016532950.tif 000005
【図３Ｂ】
2016532950.tif 000006
【図３Ｃ】
2016532950.tif 000007
【図４】
2016532950.tif 000008
【図５】
2016532950.tif 000009
【図６】
2016532950.tif 000010
【図７】
2016532950.tif 000011
【図８】
2016532950.tif 000012
【図９】
2016532950.tif 000013
【手続補正書】
【提出日】平成27年8月6日(2015.8.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストコントローラであって、
外部のターゲットデバイスと通信するための通信インターフェースと、
前記通信インターフェースに結合された処理回路とを備え、前記処理回路は、
タスクキューから複数のタスクを順次に入手することであって、前記複数のタスクのすべてではないがいくつかは、選択的および個別にキューバリアインジケータを付けられる、ことと、
前記複数のタスクの中から、第1のキューバリアインジケータ付きの第1のタスクを入手することと、
前記第1のキューバリアインジケータを検出すると、前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばすことと、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送ることとを行うように構成され、
前記ホストコントローラおよび前記ターゲットデバイスは、キューバリア機能がサポートされないプロトコルを用いて通信する、ホストコントローラ。
【請求項２】
前記処理回路はさらに、
各タスクがキューバリアインジケータを付けられているか否かを確認し、
前記第1のタスクが前記第1のキューバリアインジケータを付けられていると判断するように構成される、請求項1に記載のホストコントローラ。
【請求項３】
前記処理回路はさらに、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばすように構成される、請求項1に記載のホストコントローラ。
【請求項４】
前記処理回路はさらに、
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送るように構成される、請求項3に記載のホストコントローラ。
【請求項５】
前記ターゲットデバイスにおいて、個別のキューバリア機能がサポートされない、請求項1に記載のホストコントローラ。
【請求項６】
前記キューバリアインジケータは、前記ターゲットデバイスにおいてサポートされるか、または前記ホストコントローラと前記ターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる、請求項1に記載のホストコントローラ。
【請求項７】
前記ホストコントローラは前記ターゲットデバイスとは個別のデバイスである、請求項1に記載のホストコントローラ。
【請求項８】
前記ホストコントローラは、単一の半導体デバイスにおいて前記ターゲットデバイスと一体に構成される、請求項1に記載のホストコントローラ。
【請求項９】
前記ターゲットデバイスは記憶デバイスであり、前記タスクは読出し動作および/または書込み動作を含む、請求項1に記載のホストコントローラ。
【請求項１０】
前記第1のタスクは、前記キューバリアインジケータを伴うことなく前記ターゲットデバイスに送られる、請求項1に記載のホストコントローラ。
【請求項１１】
前記第1のタスクおよび他のタスクは、前記処理回路によってタスクキューから入手され、前記第1のタスクおよび他のタスクの各々は、各タスクがキューバリアインジケータを付けられた他のタスクに対して前記タスクキューに入れられた順序において前記処理回路によって処理される、請求項1に記載のホストコントローラ。
【請求項１２】
ターゲットデバイスと通信するためにホストコントローラ上で使用できる方法であって、
タスクキューから複数のタスクを順次に入手するステップであって、前記複数のタスクのすべてではないがいくつかは、選択的および個別にキューバリアインジケータを付けられる、ステップと、
前記複数のタスクの中から、第1のキューバリアインジケータ付きの第1のタスクを入手するステップと、
前記第1のキューバリアインジケータを検出すると、前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばすステップと、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送るステップとを含み、
前記ホストコントローラおよび前記ターゲットデバイスは、キューバリア機能がサポートされないプロトコルを用いて通信する、ターゲットデバイスと通信するためにホストコントローラ上で使用できる方法。
【請求項１３】
各タスクがキューバリアインジケータを付けられているか否かを確認するステップと、
前記第1のタスクが前記第1のキューバリアインジケータを付けられていると判断するステップとをさらに含む、請求項12に記載の方法。
【請求項１４】
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばすステップをさらに含む、請求項13に記載の方法。
【請求項１５】
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送るステップをさらに含む、請求項14に記載の方法。
【請求項１６】
前記キューバリアインジケータは、前記ターゲットデバイスにおいてサポートされるか、または前記ホストコントローラと前記ターゲットデバイスとの間の入力/出力通信プロトコルにおいてサポートされる個別のキューバリア機能とは異なる、請求項12に記載の方法。
【請求項１７】
前記キューバリア機能は前記ターゲットデバイスにおいてサポートされない、請求項12に記載の方法。
【請求項１８】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体であって、前記1つまたは複数の命令は、ターゲットデバイスと通信するためのホストコントローラ上の少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
タスクキューから複数のタスクを順次に入手することであって、前記複数のタスクのすべてではないがいくつかは、選択的および個別にキューバリアインジケータを付けられる、ことと、
前記複数のタスクの中から、第1のキューバリアインジケータ付きの第1のタスクを入手することと、
前記第1のキューバリアインジケータを検出すると、前記ターゲットデバイスへの前記第1のタスクの送信を引き延ばすことと、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されると、前記第1のタスクを前記ターゲットデバイスに送ることとを行わせ、
前記ホストコントローラおよび前記ターゲットデバイスは、キューバリア機能がサポートされないプロトコルを用いて通信する、1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体。
【請求項１９】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
各タスクがキューバリアインジケータを付けられているか否かを確認させ、
前記第1のタスクが前記第1のキューバリアインジケータを付けられていると判断させる、請求項18に記載の非一時的プロセッサ可読記憶媒体。
【請求項２０】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
前記ターゲットデバイスから、先行して送られたすべてのタスクが処理されたという指示が受信されるまで、前記第1のタスク後に生じる任意のタスクの前記ターゲットデバイスへの送信を引き延ばさせる、請求項18に記載の非一時的プロセッサ可読記憶媒体。
【請求項２１】
1つまたは複数の命令をさらに有し、前記1つまたは複数の命令は、少なくとも1つの処理回路によって実行されたときに、前記少なくとも1つの処理回路に、
前記ターゲットデバイスから、前記第1のタスクが処理されたという指示が受信されると、前記第1のタスク後に生じる任意のタスクを前記ターゲットデバイスに送らせる、請求項18に記載の非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2016532950.tif 000014
2016532950.tif 000015
2016532950.tif 000016