(57)【要約】  ホストコントローラおよびホストソフトウェアが協働するエラー検出および回復のための方法が提供される。ホストコントローラは、エラー条件を検出し、エラー割込みもしくはレジスタを設定し、および/またはホストコントローラにおけるタスク実行または処理を休止することができる。ホストソフトウェアは、ホストコントローラがエラー割込みまたはレジスタを設定した結果としてエラー条件を検出することができ、エラーハンドリングを実行し、エラー条件をクリアする。その後、ホストソフトウェアによってエラー条件がクリアされたことを検出すると、ホストコントローラはタスクの実行または処理を再開する。
2016532192.tif 000002
【特許請求の範囲】
【請求項１】
ホストコントローラであって、
1つまたは複数のレジスタにアクセスするためのインターフェースと、
前記インターフェースに結合される処理回路とを含み、前記処理回路は、
タスクの処理中にエラー条件を検出すると、エラーレジスタを設定し、
タスクのタスク実行または処理を休止し、
前記エラー条件がクリアされたことを検出すると、タスクの実行または処理を再開するように構成される、ホストコントローラ。
【請求項２】
前記処理回路はさらに、
タスクキューからの1つまたは複数のタスクを処理し、
前記タスクを処理している間にエラー条件を監視するように構成される、請求項1に記載のホストコントローラ。
【請求項３】
前記処理回路はさらに、
前記エラー条件がクリアされたか否かを確認するために前記エラーレジスタをポーリングするように構成される、請求項1に記載のホストコントローラ。
【請求項４】
前記ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止する、請求項1に記載のホストコントローラ。
【請求項５】
前記エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置する、請求項1に記載のホストコントローラ。
【請求項６】
前記エラー条件は、外部エラーハンドリングソフトウェアによってクリアされる、請求項1に記載のホストコントローラ。
【請求項７】
前記タスクは、外部記憶デバイスでの読出し動作または書込み動作のうちの少なくとも1つを含む、請求項1に記載のホストコントローラ。
【請求項８】
ホストコントローラにおいて使用できる方法であって、
タスクの処理中にエラー条件を検出すると、エラーレジスタを設定するステップと、
タスクのタスク実行または処理を休止するステップと、
前記エラー条件がクリアされたことを検出すると、タスクの実行または処理を再開するステップとを含む、ホストコントローラにおいて使用できる方法。
【請求項９】
タスクキューからの1つまたは複数のタスクを処理するステップと、
前記タスクを処理している間にエラー条件を監視するステップとをさらに含む、請求項8に記載の方法。
【請求項１０】
前記エラー条件がクリアされたか否かを確認するために前記エラーレジスタをポーリングするステップをさらに含む、請求項8に記載の方法。
【請求項１１】
前記ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止する、請求項8に記載の方法。
【請求項１２】
前記エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置する、請求項8に記載の方法。
【請求項１３】
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップをさらに含む、請求項8に記載の方法。
【請求項１４】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体であって、少なくとも1つの処理回路によって実行されたときに、前記1つまたは複数の命令が、前記少なくとも1つの処理回路に、
タスクの処理中にエラー条件を検出すると、エラーレジスタを設定させ、
タスクのタスク実行または処理を休止させ、
前記エラー条件がクリアされたことを検出すると、タスクの実行または処理を再開させる、非一時的プロセッサ可読記憶媒体。
【請求項１５】
前記1つまたは複数の命令は、前記少なくとも1つの処理回路にさらに、
タスクキューからの1つまたは複数のタスクを処理させ、
前記タスクを処理している間にエラー条件を監視させる、請求項14に記載の記憶媒体。
【請求項１６】
前記1つまたは複数の命令は、前記少なくとも1つの処理回路にさらに、
前記エラー条件がクリアされたか否かを確認するために前記エラーレジスタをポーリングさせる、請求項14に記載の記憶媒体。
【請求項１７】
ホストデバイスであって、
1つまたは複数のレジスタと、
ホストコントローラと、
前記ホストコントローラおよび前記1つまたは複数のレジスタに結合され、ホストソフトウェアを実行する処理回路とを備え、前記ホストソフトウェアは、
エラーが前記ホストコントローラによって設定されたか否かを確認するためにエラーレジスタをポーリングし、
前記エラーレジスタが設定されたことを検出すると、エラーハンドリングを実行し、
エラーハンドリングが完了すると、前記エラーレジスタをクリアすることによって、前記ホストコントローラ上でエラーハンドリングを実行するように構成される、ホストデバイス。
【請求項１８】
前記処理回路およびホストコントローラは、単一の半導体デバイスに集積される、請求項17に記載のホストデバイス。
【請求項１９】
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つがさらに、
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすることと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアすることと、
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することとのうちの少なくとも1つを実行する、請求項17に記載のホストデバイス。
【請求項２０】
ホストデバイス上のソフトウェアによって実行される方法であって、
エラーがホストコントローラによって設定されたか否かを確認するためにエラーレジスタをポーリングするステップと、
前記エラーレジスタが設定されたことを検出すると、エラーハンドリングを実行するステップと、
エラーハンドリングが完了すると、前記エラーレジスタをクリアするステップとを含む、ホストデバイス上のソフトウェアによって実行される方法。
【請求項２１】
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアするステップと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアするステップと、
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップとをさらに含む、請求項20に記載の方法。
【請求項２２】
ホストデバイスであって、
ホストソフトウェアを実行する処理回路と、
前記処理回路に結合されるホストコントローラとを備え、前記ホストコントローラおよび前記ホストソフトウェアは、
前記ホストコントローラにおいてエラー条件を検出し、
前記ホストコントローラによってエラー割込みまたはレジスタを設定し、
前記ホストコントローラによってタスク実行または処理を休止し、
前記ホストコントローラが前記エラー割込みまたはレジスタを設定した結果として、前記ホストソフトウェアにおいてエラー条件を検出し、
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行し、
前記ホストソフトウェアによって前記エラー条件をクリアし、
前記ホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラにおいてタスクの実行または処理を再開するように構成される、ホストデバイス。
【請求項２３】
前記ホストコントローラおよび前記ホストソフトウェアは、前記エラー割込みまたはレジスタを含む共有レジスタ空間にアクセスすることができる、請求項22に記載のホストデバイス。
【請求項２４】
前記エラー条件の詳細を確認するために、前記ホストソフトウェアによって、レジスタをチェックすることをさらに含む、請求項22に記載のホストデバイス。
【請求項２５】
ホストデバイス上で使用できる方法であって、
ホストコントローラにおいてエラー条件を検出するステップと、
前記ホストコントローラによってエラー割込みまたはレジスタを設定するステップと、
前記ホストコントローラによってタスク実行または処理を休止するステップと、
前記ホストコントローラが前記エラー割込みまたはレジスタを設定した結果として、ホストソフトウェアにおいてエラー条件を検出するステップと、
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行するステップと、
前記ホストソフトウェアによって前記エラー条件をクリアするステップと、
前記ホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラにおいてタスクの実行または処理を再開するステップとを含む、ホストデバイス上で使用できる方法。
【請求項２６】
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つがさらに、
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアするステップと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアするステップと、
前記ホストコントローラが通信するターゲットデバイスに、前記ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップとのうちの少なくとも1つを実行する、請求項25に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条の下での優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれている、2013年7月23日に出願された、「Robust Hardware/Software Error Recovery System」と題する米国特許仮出願第61/857,571号の優先権を主張する。
【０００２】
種々の態様は包括的には、ハードウェア/ソフトウェアシステムのエラー回復に関し、より詳細には、ハードウェアおよびソフトウェアにわたってエラー回復を同期させるシステム、方法および/またはデバイスに関する。
【背景技術】
【０００３】
ホストシステムが、I/Oホストコントローラ(ハードウェア)と、入力/出力(I/O)ホストソフトウェア(たとえば、ドライバ)と、ターゲットI/Oデバイスとを備えることができる。ホストコントローラは、ターゲットI/Oデバイスと通信して、タスク(たとえば、データ、コマンドなど)を送信/受信することができる。ホストソフトウェアは、タスクをホストコントローラに与えることができる。
【０００４】
たとえば、コントローラにおいて、ハードウェア動作エラーが生じる場合がある。ハードウェアはソフトウェアより速く作動するので、ソフトウェアが介入する、たとえば、ソフトウェアがそのようなエラーから回復するか、またはそのようなエラーを訂正するのは難しい。多くの場合に、介入を必要としたイベントはすでに過ぎ去っており、ホストシステムの状態は、ソフトウェアが応答するのに要する時間だけ変化している。さらに、ソフトウェアがハードウェアの状態(たとえば、ホストコントローラおよびホストシステムの状態)を調査しようと試みているときに、ハードウェア(たとえば、コントローラ)は依然として動作を実行している場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
結果として、ソフトウェアが、エラーから回復するためにハードウェアの動作に効率的に介入できるようにする機構を提供することが必要とされている。
【課題を解決するための手段】
【０００６】
1つまたは複数のレジスタにアクセスするためのインターフェースと、インターフェースに結合される処理回路とを備えるホストコントローラが提供される。処理回路は、(a)タスクキューからの1つまたは複数のタスクを処理し、(b)タスクを処理しながら、エラー条件を監視し、(c)タスクの処理中にエラー条件を検出すると、エラーレジスタを設定し、(d)タスクのタスク実行または処理を休止し、(e)エラー条件がクリアされたか否かを確認するためにエラーレジスタをポーリングし、および/または(f)エラー条件がクリアされたことを検出すると、タスクの実行または処理を再開するように構成することができる。ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止することができる。エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置することができる。一例では、エラー条件は、外部エラーハンドリングソフトウェアによってクリアされる場合がある。いくつかの実施態様では、タスクは、外部記憶デバイスでの読出し動作または書込み動作のうちの少なくとも1つを含むことができる。
【０００７】
また、ホストコントローラにおいて使用できる方法も提供される。ホストコントローラは、エラー条件を監視しながら、タスクキューからの1つまたは複数のタスクを処理することができる。タスクの処理中にエラー条件を検出すると、ホストコントローラによってエラーレジスタを設定することができる。さらに、ホストコントローラによって、タスクのタスク実行または処理を休止することができる。ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止することができる。その後、ホストコントローラは、エラー条件がクリアされたか否かを確認するためにエラーレジスタ(または何らかの他のフラグ、レジスタおよび/もしくはインジケータ)をポーリングすることができる。エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置することができる。エラー条件がクリアされたことを検出すると、ホストコントローラは、タスクの実行または処理を再開することができる。ホストコントローラはさらに、ホストコントローラが通信する外部ターゲットデバイスに、外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することができる。
【０００８】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体も提供され、少なくとも1つの処理回路によって実行されるときに、その命令は少なくとも1つの処理回路に、(a)タスクキューからの1つまたは複数のタスクを処理させ、(b)タスクを処理しながら、エラー条件を監視させ、(c)タスクの処理中にエラー条件を検出すると、エラーレジスタを設定させ、(d)タスクのタスク実行または処理を休止させ、(e)エラー条件がクリアされたか否かを確認するためにエラーレジスタをポーリングさせ、および/または(f)エラー条件がクリアされたことを検出すると、タスクの実行または処理を再開させる。
また、1つまたは複数のレジスタと、ホストコントローラと、ホストコントローラおよび1つまたは複数のレジスタに結合される処理回路とを備えるホストデバイスも提供される。処理回路はホストソフトウェアを実行し、ホストソフトウェアは、(a)ホストコントローラによってエラーが設定されたか否かを確認するためにエラーレジスタをポーリングし、(b)エラーレジスタが設定されたのを検出すると、エラーハンドリングを実行し、および/または(c)エラーハンドリングが完了するとエラーレジスタをクリアすることによって、ホストコントローラ上でエラーハンドリングを実行するように構成することができる。処理回路およびホストコントローラは、単一の半導体デバイスに集積することができる。一例では、ホストソフトウェアおよびホストコントローラのうちの少なくとも1つがさらに、(a)ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすること、(b)ホストデバイスのタスクキューにおいて未処理の特定のタスクをクリアすること、および/または(c)ホストコントローラが通信する外部ターゲットデバイスに、ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することのうちの少なくとも1つを実行することができる。
【０００９】
ホストデバイス上のソフトウェアによって実行される方法も提供される。ホストコントローラによってエラーが設定されたか否かを確認するために、ホストソフトウェアによって、エラーレジスタをポーリングすることができる。エラーレジスタが設定されたことを検出すると、エラーハンドリングを実行することができる。エラーハンドリングが完了すると、エラーレジスタをクリアすることができる。一例では、その方法はさらに、(a)ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすること、(b)ホストデバイスのタスクキューにおいて未処理の特定のタスクをクリアすること、および/または(c)ホストコントローラが通信する外部ターゲットデバイスに、ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することを含むことができる。
【００１０】
さらに、ホストソフトウェアを実行する処理回路と、処理回路に結合されるホストコントローラとを備えるホストデバイスが提供される。ホストコントローラおよびホストソフトウェアは、(a)ホストコントローラにおいてエラー条件を検出し、(b)ホストコントローラによってエラー割込みまたはレジスタを設定し、(c)ホストコントローラによってタスク実行または処理を休止し、(d)ホストコントローラがエラー割込みまたはレジスタを設定した結果として、ホストソフトウェアにおいてエラー条件を検出し、(e)ホストソフトウェアおよびホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行し、(f)ホストソフトウェアによってエラー条件をクリアし、ならびに/または(g)ホストソフトウェアによってエラー条件がクリアされたことを検出すると、ホストコントローラにおいてタスクの実行または処理を再開するように構成される。ホストコントローラおよびホストソフトウェアは、エラー割込みまたはレジスタを含む共有レジスタ空間にアクセスすることができる。ホストソフトウェアは、エラー条件の詳細を確認するためにレジスタをチェックすることができる。
【００１１】
ホストデバイス上で使用できる方法であって、(a)ホストコントローラにおいてエラー条件を検出すること、(b)ホストコントローラによってエラー割込みまたはレジスタを設定すること、(c)ホストコントローラによってタスク実行または処理を休止すること、(d)ホストコントローラがエラー割込みまたはレジスタを設定した結果として、ホストソフトウェアにおいてエラー条件を検出すること、(e)ホストソフトウェアおよびホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行すること、(f)ホストソフトウェアによってエラー条件をクリアすること、ならびに/または(g)ホストソフトウェアによってエラー条件がクリアされたことを検出すると、ホストコントローラにおいてタスクの実行または処理を再開することを含む。ホストソフトウェアおよびホストコントローラのうちの少なくとも1つがさらに、(a)ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすること、(b)ホストデバイスのタスクキューにおいて未処理の特定のタスクをクリアすること、および/または(c)ホストコントローラが通信する外部ターゲットデバイスに、ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することのうちの少なくとも1つを実行することができる。
【図面の簡単な説明】
【００１２】
【図１】バスを介して外部ターゲットI/Oデバイスに結合されるホストデバイスを備えるシステムのブロック図であって、ホストデバイスは、エラーが発生すると、動作を休止し、ソフトウェアがエラーを回復させるか、または訂正できるように構成される、システムのブロック図である。
【図２】ハードウェア/ソフトウェアシステムにおけるエラー検出の例示的手法を示す図である。
【図３】タスクシーケンスを休止し、破棄するためにホストコントローラ上で使用できる例示的方法を示す図である。
【図４】ハードウェアとソフトウェアとの間のエラー訂正および回復を容易にするように構成されるホストデバイスを示すブロック図である。
【図５】エラーハンドリングを容易にするように構成することができる例示的なホストコントローラのブロック図である。
【図６】エラー訂正および回復を実行するためにホストコントローラとホストソフトウェアとの間で使用できる例示的方法を示す図である。
【図７】エラー訂正および回復のためにホストコントローラによって使用できる例示的方法を示す図である。
【図８】エラー訂正および回復のためにホストソフトウェアによって使用できる例示的方法を示す図である。
【発明を実施するための形態】
【００１３】
添付の図面に関連して以下に記載される説明は、様々な構成の説明として意図されており、本明細書において記載される概念および特徴を実践することができる唯一の構成を表すことは意図していない。以下の説明は、様々な概念を完全に理解してもらうために、具体的な細部を含む。しかしながら、これらの概念はこれらの具体的な細部がなくても実践できることは、当業者には明らかであろう。場合によっては、説明される概念および特徴を曖昧にするのを回避するために、周知の回路、構造、技法および構成要素がブロック図の形式で示される。
【００１４】
本開示全体にわたって提示される様々な概念は、広範な電気通信システム、ネットワークアーキテクチャ、電子デバイス、モバイルデバイス、コンピューティングデバイスおよび/または通信規格にわたって実現することができる。
【００１５】
概説
本開示の種々の特徴および態様は、エラーが発生すると、ソフトウェアがエラーをハンドリングする(たとえば、回復を実行するか、またはエラーを訂正する)ことができるように、ハードウェアの動作をフリーズさせるか、休止するか、または一時停止することに関連する。たとえば、ホストデバイスが、ホストコントローラと、ソフトウェアとを含むことができ、ホストコントローラは、エラーが発生すると、ハードウェアの動作を既知の場所(たとえば、キューの特定の点)および/または状態において停止するように構成または設計される。ホストコントローラおよび任意の外部ターゲットデバイスがフリーズ状態または一時停止状態にある間にソフトウェアがエラーを調査またはハンドリングできるように、ホストコントローラは、すべての活動をフリーズさせるか、休止するか、または一時停止する。ホストコントローラがエラーに直面し、ソフトウェア割込みをトリガするとき、ホストコントローラは、ソフトウェアによって活動を再開するように指示されるまで、すべてのハードウェア活動を休止する。同様に、ソフトウェアが、何らかの理由で、ハードウェア活動に介入することに決めるとき、ソフトウェアは、ホストコントローラに動作を休止または中断するように命令する。ホストコントローラは現在のコマンドを完了することができ、既知の場所(たとえば、キューの特定の点)または状態において、その動作を休止/一時停止する。外部ターゲットデバイスが、ホストコントローラが活動を再開するのを待つことができ、それにより、ホストコントローラが自らの活動を休止または一時停止するとき、ターゲットデバイスも休止または一時停止される。ホストコントローラは、(たとえば、ホストデバイス上で実行されている)ソフトウェアに、現在フリーズ状態または中断状態にあることを指示することができる。ソフトウェアはステップインし、ホストコントローラおよびターゲットデバイス内の現在の状態を調査し、並列にプロセスが実行されない(すなわち、ハードウェアが休止または一時停止される)間に、エラーハンドリング手順(たとえば、エラー回復手順、エラー訂正手順または任意の他の手順)を実行することができる。その手順がソフトウェアによって完了されるとき、ソフトウェアはホストコントローラにその動作を再開するように指示することができる。ハードウェア/ソフトウェア競合条件および不確定性を解消することによって、エラー回復および他のハードウェア/ソフトウェア手順が簡単になる。
【００１６】
例示的な動作環境
図1は、バス106を介して外部ターゲットI/Oデバイス104に結合されるホストデバイス102を備えるシステムのブロック図であり、ホストデバイスは、エラーが発生すると、ソフトウェアがエラーを回復または訂正できるようにするために、動作を休止するように構成される。ホストデバイス102は、ホストソフトウェア108、タスクキュー109、1つまたは複数のレジスタ107、および/またはホストコントローラ110を含むことができる。ターゲットI/Oデバイス104は、コントローラ112と、タスクキュー114と、記憶デバイス116とを含むことができる。ホストタスクキュー109は、ターゲットI/Oデバイス104に送信されるタスク(たとえば、演算またはコマンド)を保持することができる。たとえば、そのようなホストタスクキュー109は、ホストコントローラ110にタスクを与えるためにホストソフトウェア108によって用いられる場合があり、タスクがターゲットI/Oデバイス104に送信されるまでタスクを保持するために用いられる場合がある。(たとえば、ホストコントローラ内、またはホストデバイス102内の他の場所内の)レジスタ107は、ソフトウェア108および/またはホストコントローラ110間でステータス情報を転送する役割を果たすことができる。たとえば、レジスタ107は、ホストタスクキュー109内のどのタスクがターゲットI/Oデバイス104に送信されたか、および送信されていないかについての情報を含むことができる。
【００１７】
一実施態様では、ターゲットI/Oデバイス104は、ホストデバイス102とは別に、若しくはホストデバイス102の外部に存在する場合があるか、またはホストデバイス102とともに単一の半導体チップの一部として集積される場合がある。一例では、ターゲットI/Oデバイス104は、電子装置技術統合評議会(JEDEC:Joint Electron Device Engineering Council)による組み込みマルチメディアコントローラ(eMMC:Embedded Multi-Media Controller)標準規格に準拠するフラッシュ記憶デバイスとすることができる。そのような例において、ホストデバイス102は、(たとえば、ホストタスクキュー109内で特定される)データを、ターゲットI/Oデバイス104から読み出し、および/またはターゲットI/Oデバイス104に書き込むことができる。
【００１８】
図2は、ハードウェア/ソフトウェアシステムにおけるエラー検出の例示的手法を示す。ホストソフトウェア108はタスク1...nを生成(204)し、それらのタスクをホストコントローラ110に与える(206a)ことができる。その後、ホストコントローラ110は、タスク1...nをターゲットコントローラ112に送信し(206b)、ターゲットコントローラ112は、それらのタスクをタスクキュー114に与え(206c)、タスクキューからのタスクを、ターゲットI/Oデバイス104によって実行するか、または処理する(208)ことができる。本明細書において開示される「タスク」は、データタスクおよび/または非データタスクとすることができる。ターゲットI/Oデバイス104は、各タスクを実行または処理すると、ホストデバイス102に確認応答またはインジケータを返送することができる。
【００１９】
1つの特徴によれば、エラーを検出する(210)と、ホストコントローラ110は、その実行または処理をフリーズさせる/休止する(212)ように構成することができる。そのようなフリーズ/休止点は、たとえば、現在のタスク(たとえば、特定の組合せ/複数のコマンド)、コマンド(たとえば、特定の組合せ/複数の基本命令)、命令(たとえば、現在の命令)の処理の終了時とすることができる。その後、ホストコントローラ110は、1つまたは複数のエラーレジスタを設定し(214)、エラーレジスタを用いて、ホストソフトウェア108によってエラー割込みがトリガ/検出される(216)。ホストソフトウェア108によってそのようなエラー割込みが検出される(216)と、ホストソフトウェア108は、レジスタからのエラー条件を確認し(218)(たとえば、エラーのタイプを判断するなど)、タスクシーケンスを休止し(220)(たとえば、タスク生成および/または処理を休止する)、エラーハンドリングを実行する(222)ことができる。一例では、そのようなエラーハンドリングは、1つまたは複数の未処理のタスクt...wをクリア/削除する(224a)ことを含むことができる。たとえば、これは、ホストタスクキュー109から特定のタスクt...wを削除すること、および/またはホストコントローラ110に、それらの特定のタスクを削除するように、または実行しないように指示することを伴うことができる。さらに、タスクt...wがターゲットI/Oデバイス104にすでに送信されていた場合、ホストソフトウェア108は、ターゲットデバイスタスクキュー114から1つまたは複数のタスクt...wをクリアし、および/または削除するために、ターゲットデバイスコントローラ112に付加メッセージを送信する(224b)ことができる。
【００２０】
そのエラーハンドリング動作(222)を完了すると、その後、ホストソフトウェア108は、エラー割込みおよび/またはエラーレジスタをクリアする(228)ことができ、および/またはホストコントローラ110にそうするように指示する(230)ことができる。エラーハンドリングが完了したというそのような指示を受信すると、ホストコントローラは、ホストタスクキュー109に残っているタスクの実行を再開する(232)ことができる。このようにして、ホストコントローラ110は、ホストソフトウェア108と協働して、その間の競合条件を回避しながら、エラー回復をハンドリングする。
【００２１】
図3は、タスクシーケンスを休止し、破棄するためにホストコントローラ上で使用できる例示的方法を示す。エラー条件を検出すると、ホストソフトウェアは、休止インジケータを発行する(302)(たとえば、第1の構成可能レジスタ内の休止ビット(halt bit)に“1”を書き込む)ことができるか、または「休止」命令、インジケータ、フラグまたは割込みをホストコントローラに対して発行するための他の方法を用いることができる。その後、ホストソフトウェアは、休止インジケータが完了するか、または設定される(“1”またはHighに設定される)まで、休止インジケータ(たとえば、第1の構成可能レジスタ内の休止ビット)をポーリングする(304)ことができる。すなわち、ホストソフトウェアが休止インジケータを以前に設定していた場合であっても、ホストソフトウェアは、休止インジケータが実際に設定されたことを確認するために、すべての他のプロセスが停止したことを確かめなければならない場合がある。休止インジケータに関するポーリングの代わりに、割込み、または他の通知方法を用いて、いつ休止インジケータが完全に設定されたかをホストソフトウェアに通知することができることに留意されたい。
【００２２】
その後、ホストコントローラは、タスクキュー内にさらなるタスクが存在するか否かを確認することができる。たとえば、ホストコントローラは、タスクレジスタを読み出し(306)て、実行されるべき、または未処理であるタスクが存在するか否かを確認することができる。タスクレジスタがクリアされている(task_register=0)場合には、これは、すべてのタスクが実行された(すなわち、タスクキュー内に未処理のタスクがない)ことを意味するので、ホストコントローラは、休止インジケータをクリアして(308)(たとえば、第1の構成可能レジスタ内の休止ビットが“0”またはLowに設定される)、動作を再開することができる。
【００２３】
そうではなく、タスクレジスタが設定される(たとえば、task_register=“1”またはハイ)場合には、ホストコントローラは、タスクキュー内のすべてのタスクをクリアするか、または特定のタスクをクリアするために、キュークリアインジケータを設定する(310)ことができる。
【００２４】
その後、ホストコントローラはキュークリアインジケータ(または対応するレジスタ)をポーリングし、タスクがタスクキューからクリアされたことを検証する(312)ことができる。そのようなエラー回復/訂正ステップが完了すると、ホストコントローラは、休止インジケータをリセットする(314)ことができ(休止ビット=0またはLow)、タスクの実行または処理を再開する。
【００２５】
例示的なホストデバイス
図4は、ハードウェアとソフトウェアとの間のエラー訂正および回復を容易にするように構成されるホストデバイスを示すブロック図である。ホストデバイス402は、処理回路404と、ホストコントローラ406と、プロセッサ可読記憶媒体/デバイス408と、メモリデバイス430と、トランシーバ回路412と、バス410とを含むことができる。ホストコントローラ406は、メモリデバイス430内のタスクキュー422からタスクを入手し、そのタスクを実行することができ、および/または(たとえば、データおよびコマンドを含む)そのタスクをトランシーバ回路を介してターゲットデバイスに送信することができる。たとえば、ホストコントローラ406は、ターゲットデバイス(たとえば、外部記憶デバイス)上で読出しおよび/または書込み動作を実行することができる。ホストコントローラ406は、1つまたは複数のレジスタ420内で処理されているタスクに関するステータス情報を保持することができ、レジスタは、ホストコントローラ406内に、メモリデバイス430内に、または他の場所に存在する場合がある。ホストコントローラ406は、エラーを検出すると、タスクキュー422内のタスクの処理を休止するように構成することができ、ソフトウェア割込みをトリガするか、または(たとえば、レジスタ内の)フラグを設定して、エラー条件の発生をホストソフトウェアに通知する。
【００２６】
処理回路は、ホストソフトウェアおよび/または機能回路を実行するように構成することができる。たとえば、エラー検出モジュール/回路414は、ホストコントローラ406がエラーフラグを設定したか、またはエラー割込みをトリガした時点を検出または監視するように構成することができる。エラーハンドリングモジュール/回路416は、ホストコントローラ406上でエラー回復または訂正を実行するように構成することができる。たとえば、そのようなエラーハンドリングモジュール/回路416は、タスクキュー422内の1つまたは複数のタスクをクリアし、および/またはレジスタ420のうちの1つまたは複数をリセットすることができる。エラー条件クリアモジュール/回路418は、ソフトウェア割込みをクリアすることができ、ホストコントローラ406によって設定された1つまたは複数のフラグをクリアすることができ、および/または別の方法で、エラーがハンドリングされたことを、そしてホストコントローラ406が処理を再開できることをホストコントローラ406に通知する。エラーハンドリングがクリアされたことを通知されると、ホストコントローラ406は、タスクキュー内のタスクの処理を再開することができる。プロセッサ可読記憶媒体/デバイス408は、エラー検出命令、エラーハンドリング命令426、および/またはエラー条件クリア命令428を含むことができ、それらの命令は、その機能を実行するために、処理回路404によって実行される場合がある。
【００２７】
図5は、エラーハンドリングを容易にするように構成することができる例示的なホストコントローラ502のブロック図である。この例では、ホストコントローラ502は、1つまたは複数のレジスタ508および/または入力/出力インターフェース回路510に結合されるコントローラ処理回路504を含むことができる。コントローラ処理回路504は、タスク処理モジュール/回路、エラー条件検出モジュール/回路512、タスク休止モジュール/回路514、エラー条件インジケータモジュール/回路516および/またはエラークリアポーリングモジュール/回路518を含むことができる。
【００２８】
タスク処理モジュール/回路は、タスクキューからタスクを検索し、検索されたタスクを処理し、その後、タスクキュー内の次のタスクを処理することができる。そのようなタスクは、たとえば、外部ターゲットデバイスからの読出し動作または外部ターゲットデバイスへの書込み動作を実行することを含むことができる。エラー条件検出モジュール/回路512は、タスクを処理する際にエラーが発生したか否かを確認することができる。エラー条件を検出するのに応答して、タスク休止モジュール/回路514は、ホストコントローラ502によるさらなる処理を休止し、一時停止し、および/またはフリーズさせる(たとえば、任意のさらなるタスクの処理を休止する)ことができる。コントローラ処理回路は、現在のタスクを終了するか、または終結させ、その後、任意のさらなる処理を休止することができる。エラー条件インジケータモジュール/回路516は、フラグ、レジスタおよび/またはハードウェア/ソフトウェア割込みを設定して、エラー条件がホストコントローラ502によって検出されたことを指示することができる。これにより、外部または内部ソフトウェアが、エラーハンドリングを実行し、エラー条件に対処できるようになる場合がある。エラークリアポーリングモジュール/回路518は、タスク処理モジュール/回路が動作を再開できるように、エラー条件がハンドリングされたか否か、およびエラー条件がハンドリングされた時点を確認することができる。
【００２９】
一例では、ホストコントローラ502は、1つまたは複数の動作命令を得るために、記憶デバイス506に(たとえば、I/Oインターフェース回路510を介して)結合することができる。たとえば、記憶デバイス506は、タスクキューからのタスクを処理するタスク処理命令519、タスク処理中にエラーを検出するエラー条件検出命令520、エラーが検出されるときに処理を休止するタスク休止命令522、エラー回復のためにソフトウェアが介入できるようにするフラグ、レジスタもしくは他のインジケータを設定するエラー条件インジケータ命令524、および/またはホストコントローラが、以前に設定されたフラグ、レジスタまたはインジケータのクリア(すなわち、エラー条件が対処されたという指示)を監視し、検出し、および/またはポーリングできるようにするエラークリアポーリング命令526を含むことができる。
【００３０】
図6は、エラー訂正および回復を実行するためにホストコントローラとホストソフトウェアとの間で使用できる例示的方法を示す図である。ホストコントローラは、(a)(たとえば、ホストソフトウェアからの通知に基づく)エラー条件を検出し(602)、(b)エラー割込みまたはレジスタを設定し（604）、および/または(c)タスク実行または処理を休止する(606)。ホストソフトウェアは、(d)ホストコントローラがエラー割込みまたはレジスタを設定する結果としてエラー条件を検出し(608)、(e)エラーハンドリングを実行し(610)、および/または(エラーハンドリングの終了時に)エラー条件をクリアする(612)ことができる。その後、ホストコントローラは、ホストソフトウェアによってエラー条件がクリアされたことを検出すると、タスクの実行または処理を再開する(614)ことができる。ソフトウェアはホストコントローラに結合される処理回路によって実行できることに留意されたい。処理回路およびホストコントローラは、単一の半導体デバイスに集積することができる。ホストコントローラおよびホストソフトウェアは、エラー割込みまたはレジスタを含む共有レジスタ空間にアクセスすることができる。
【００３１】
一例では、ホストソフトウェアおよびホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行することは、(i)ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすること、(ii)ホストデバイスのタスクキューにおいて未処理の特定のタスクをクリアすること、および/または(iii)ホストコントローラが通信するターゲットデバイスに、ターゲットデバイス内のいくつかもしくはすべてのタスクをクリアするように指示することのうちの少なくとも1つを含む。
【００３２】
ホストソフトウェアおよびホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行する他の例では、未処理のタスクは、ホストデバイスのタスクキューから、および/またはターゲットデバイス内のタスクキューからクリアされない場合があるか、またはクリアされる必要がない場合がある。
【００３３】
ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスク実行または処理を休止することができることに留意されたい。
【００３４】
図7は、エラー訂正および回復のためのホストコントローラによって使用できる例示的方法を示す図である。ホストコントローラは(たとえば、タスクキューからの)タスクを処理する(702)。たとえば、タスクは、外部ターゲットデバイスからの読出しおよび/または外部ターゲットデバイスへの書込み動作とすることができる。ホストコントローラは、タスクを処理しながら、エラー条件を監視する(704)ことができる。ホストコントローラは、タスクの処理中にエラー条件を検出すると、エラーレジスタを設定する(706)ことができる。さらに、ホストコントローラはタスク実行/処理を休止する(708)。ホストコントローラによる処理を休止することはまた、レジスタの状態をフリーズさせ、それにより、エラーハンドリングをホストソフトウェアによって実行することができる。休止されている間に、ホストコントローラは、エラー条件がクリアされたか否かを確認するために、エラーレジスタをポーリングする(710)ことができる。他の例では、異なるレジスタ、インジケータ、フラグまたは機構を用いて、エラー条件が対処されたか、またはクリアされたことをホストコントローラに指示できることに留意されたい。エラー条件がクリアされたことを検出すると、ホストコントローラは、実行または処理を再開する(712)ことができる。
【００３５】
図8は、エラー訂正および回復のためにホストソフトウェアによって使用できる例示的方法を示す。エラー割込みレジスタからエラー割込みを受信/検出する(802)と、ホストソフトウェアは、最終応答および/または最終応答インデックスレジスタを読み出す(804)ことができる。また、ホストソフトウェアは、エラーハンドリングレジスタを読み出し、失敗タスクインデックスおよびコマンドを検証する(806)こともできる。その後、ホストソフトウェアは、タスク休止シーケンスまたは動作を実行する(808)ことができ、エラー検出およびハンドリングシーケンスを継続する(810)。
【００３６】
これまでに論じられた態様、構成、および実施形態について具体的な細部まで詳細に論じられてきたが、図1、図2、図3、図4、図5、図6、図7および/または図8に示される構成要素、ステップ、特徴および/または機能のうちの1つまたは複数は、単一の構成要素、ステップ、特徴若しくは機能に再構成され、および/または組み合わせられる場合があるか、または、いくつかの構成要素、ステップ、または機能において具現される場合がある。また、本開示から逸脱することなく追加の要素、構成要素、ステップ、および/または機能が追加される場合もあるが、利用されなくてもよい。図1、図2、図4および/または図5に示される装置、デバイス、および/または構成要素は、図2、図3、図6、図7および/または図8において説明された方法、特徴、パラメータ、および/またはステップのうちの1つまたは複数を実行または利用するように構成することができる。本明細書において記述される新規のアルゴリズムは、ソフトウェアにおいて効率的に実現することもでき、および/またはハードウェアに組み込むこともできる。
【００３７】
また、少なくともいくつかの実施態様が、流れ図、フロー図、構造図、またはブロック図として表されるプロセスとして説明されてきたことに留意されたい。流れ図は動作を逐次プロセスとして説明する場合があるが、動作のうちの多くは並行してまたは同時に実行することができる。さらに、動作の順序は、再配置することができる。プロセスは、その動作が完了したときに終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応することができる。処理が関数に対応するとき、その終了は、関数が呼出し関数またはメイン関数に戻ることに対応する。本明細書において説明される様々な方法は、非一時的機械可読媒体、コンピュータ可読媒体、および/またはプロセッサ可読記憶媒体に記憶され、1つまたは複数のプロセッサ、機械、および/またはデバイスによって実行することができるプログラミング(たとえば、命令および/またはデータ)によって、部分的にまたは完全に実現することができる。
【００３８】
本明細書において開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せとして実現できることは、当業者であればさらに理解されよう。この互換性を明確に示すために、上記では、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されてきた。そのような機能がハードウェアとして実現されるかソフトウェアとして実現されるかは、特定の適用例およびシステム全体に課される設計制約に応じて決まる。
【００３９】
本明細書において説明され、添付の図面において示される例に関連する様々な特徴は、本開示の範囲から逸脱することなく、異なる例および実施態様において実現することができる。したがって、いくつかの特定の構成および配置が説明され、添付の図面において示されたが、説明された実施形態への様々な他の追加および変更ならびに説明された実施形態からの削除が当業者にとって明らかであるので、そのような実施形態は、例示に過ぎず、本開示の範囲を制限するものではない。したがって、本開示の範囲は、以下の特許請求の範囲の文言、および法的均等物によってのみ決定される。
【符号の説明】
【００４０】
102  ホストデバイス
104  外部ターゲットI/Oデバイス
106  バス
107  レジスタ
108  ホストソフトウェア
109  タスクキュー
110  ホストコントローラ
112  コントローラ
114  タスクキュー
116  記憶デバイス
402  ホストデバイス
404  処理回路
406  ホストコントローラ
408  プロセッサ可読記憶媒体/デバイス
410  バス
412  トランシーバ回路
414  エラー検出モジュール/回路
416  エラーハンドリングモジュール/回路
418  エラー条件クリアモジュール/回路
420  レジスタ
422  タスクキュー
426  エラーハンドリング命令
428  エラー条件クリア命令
430  メモリデバイス
502  ホストコントローラ
504  コントローラ処理回路
506  記憶デバイス
508  レジスタ
510  入力/出力インターフェース回路
512  エラー条件検出モジュール/回路
514  タスク休止モジュール/回路
516  エラー条件インジケータモジュール/回路
518  エラークリアポーリングモジュール/回路
519  タスク処理命令
520  エラー条件検出命令
522  タスク休止命令
524  エラー条件インジケータ命令
526  エラークリアポーリング命令
【図１】
2016532192.tif 000003
【図２】
2016532192.tif 000004
【図３】
2016532192.tif 000005
【図４】
2016532192.tif 000006
【図５】
2016532192.tif 000007
【図６】
2016532192.tif 000008
【図７】
2016532192.tif 000009
【図８】
2016532192.tif 000010
【手続補正書】
【提出日】平成27年6月15日(2015.6.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストコントローラであって、
前記ホストコントローラ内の1つまたは複数のレジスタにアクセスするためのインターフェースと、
前記ホストコントローラ内にあり、前記インターフェースに結合される処理回路とを含み、前記処理回路は、
ホストコントローラハードウェアによって、タスクの処理中にエラー条件を検出すると、エラーレジスタを設定し、
前記ホストコントローラハードウェアによって、タスクのタスク実行または処理を休止し、
ホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラハードウェアによって、タスクの実行または処理を再開するように構成される、ホストコントローラ。
【請求項２】
前記処理回路はさらに、
タスクキューからの1つまたは複数のタスクを処理し、
前記タスクを処理している間にエラー条件を監視するように構成される、請求項1に記載のホストコントローラ。
【請求項３】
前記処理回路はさらに、
前記エラー条件が前記ホストコントローラハードウェアによってクリアされたか否かを確認するために前記エラーレジスタをポーリングするように構成される、請求項1に記載のホストコントローラ。
【請求項４】
前記ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止する、請求項1に記載のホストコントローラ。
【請求項５】
前記エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置する、請求項1に記載のホストコントローラ。
【請求項６】
前記エラー条件は、外部エラーハンドリングソフトウェアによってクリアされる、請求項1に記載のホストコントローラ。
【請求項７】
タスクのタスク実行または処理を休止することは、現在のタスク、現在のコマンドまたは現在の命令のうちの1つを終了すると、ハードウェア動作を既知の場所または状態において停止することを含む、請求項1に記載のホストコントローラ。
【請求項８】
ホストコントローラにおいて使用できる方法であって、
ホストコントローラハードウェアによって、処理回路によるタスクの処理中にエラー条件を検出すると、エラーレジスタを設定するステップと、
前記ホストコントローラハードウェアによって、前記処理回路によるタスクのタスク実行または処理を休止するステップと、
前記処理回路において動作するホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラハードウェアによって、タスクの実行または処理を再開するステップとを含む、ホストコントローラにおいて使用できる方法。
【請求項９】
タスクキューからの1つまたは複数のタスクを処理するステップと、
前記タスクを処理している間にエラー条件を監視するステップとをさらに含む、請求項8に記載の方法。
【請求項１０】
前記エラー条件がクリアされたか否かを確認するために前記エラーレジスタをポーリングするステップをさらに含む、請求項8に記載の方法。
【請求項１１】
前記ホストコントローラは、現在のタスク、現在のコマンドおよび現在の命令のうちの1つを終了すると、タスクの実行または処理を休止する、請求項8に記載の方法。
【請求項１２】
前記エラーレジスタは、ホストコントローラの外部にあるエラーハンドリングソフトウェアにアクセス可能な共有レジスタ空間内に位置する、請求項8に記載の方法。
【請求項１３】
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップをさらに含む、請求項8に記載の方法。
【請求項１４】
1つまたは複数の命令を有する非一時的プロセッサ可読記憶媒体であって、少なくとも1つのホストコントローラによって実行されたときに、前記1つまたは複数の命令が、前記少なくとも1つのホストコントローラに、
ホストコントローラハードウェアによって、処理回路によるタスクの処理中にエラー条件を検出すると、エラーレジスタを設定させ、
前記ホストコントローラハードウェアによって、前記処理回路によるタスクのタスク実行または処理を休止させ、
前記処理回路において動作するホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラハードウェアによって、タスクの実行または処理を再開させる、非一時的プロセッサ可読記憶媒体。
【請求項１５】
前記1つまたは複数の命令は、前記少なくとも1つの処理回路にさらに、
タスクキューからの1つまたは複数のタスクを処理させ、
前記タスクを処理している間にエラー条件を監視させる、請求項14に記載の記憶媒体。
【請求項１６】
前記1つまたは複数の命令は、前記少なくとも1つの処理回路にさらに、
前記エラー条件がクリアされたか否かを確認するために前記エラーレジスタをポーリングさせる、請求項14に記載の記憶媒体。
【請求項１７】
ホストデバイスであって、
エラーレジスタを含む1つまたは複数のレジスタと、
タスクのタスク実行または処理中にエラーを検出し、そのようなエラーが検出されるときに前記エラーレジスタを設定するように構成されるハードウェアを含むホストコントローラと、
前記ホストコントローラおよび前記1つまたは複数のレジスタに結合され、ホストソフトウェアを実行する処理回路とを備え、前記ホストソフトウェアは、
エラーが前記ホストコントローラによって設定されたか否かを確認するために、前記ホストソフトウェアによって、前記エラーレジスタをポーリングし、
前記エラーレジスタが設定されたことを検出すると、前記ホストソフトウェアによって、エラーハンドリングを実行し、
エラーハンドリングが完了すると、前記ホストソフトウェアによって、前記エラーレジスタをクリアする
ことによって、前記ホストコントローラ上でエラーハンドリングを実行するように構成される、ホストデバイス。
【請求項１８】
前記処理回路およびホストコントローラは、単一の半導体デバイスに集積される、請求項17に記載のホストデバイス。
【請求項１９】
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つがさらに、
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアすることと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアすることと、
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示することとのうちの少なくとも1つを実行する、請求項17に記載のホストデバイス。
【請求項２０】
ホストデバイス上のホストソフトウェアによって実行される方法であって、
エラーが、ホストコントローラの処理回路によって、ハードウェアレベルにおいて設定されたか否かを確認するために、前記ホストソフトウェアによって、エラーレジスタをポーリングするステップと、
前記処理回路によって前記エラーレジスタが設定されたことを検出すると、前記ホストソフトウェアによって、エラーハンドリングを実行するステップと、
前記処理回路によるエラーハンドリングが完了すると、前記ホストソフトウェアによって、前記エラーレジスタをクリアするステップとを含む、ホストデバイス上のホストソフトウェアによって実行される方法。
【請求項２１】
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアするステップと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアするステップと、
前記ホストコントローラが通信する外部ターゲットデバイスに、前記外部ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップとをさらに含む、請求項20に記載の方法。
【請求項２２】
ホストデバイスであって、
ホストソフトウェアを実行する処理回路と、
前記処理回路に結合されるホストコントローラとを備え、前記ホストコントローラおよび前記ホストソフトウェアは、
前記ホストコントローラにおいて、ハードウェアレベルにおいて、エラー条件を検出し、
前記ホストコントローラによって、前記ハードウェアレベルにおいて、エラー割込みまたはレジスタを設定し、
前記ホストコントローラによってタスク実行または処理を休止し、
前記ホストコントローラが前記エラー割込みまたはレジスタを設定した結果として、前記ホストソフトウェアにおいてエラー条件を検出し、
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行し、
前記ホストソフトウェアによって前記エラー条件をクリアし、
前記ホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラにおいてタスクの実行または処理を再開するように構成される、ホストデバイス。
【請求項２３】
前記ホストコントローラおよび前記ホストソフトウェアは、前記エラー割込みまたはレジスタを含む共有レジスタ空間にアクセスすることができる、請求項22に記載のホストデバイス。
【請求項２４】
前記エラー条件の詳細を確認するために、前記ホストソフトウェアによって、レジスタをチェックすることをさらに含む、請求項22に記載のホストデバイス。
【請求項２５】
ホストデバイス上で使用できる方法であって、
処理回路によってホストコントローラにおいて、ハードウェアレベルにおいて、エラー条件を検出するステップと、
前記処理回路によって前記ホストコントローラにおいて、前記ハードウェアレベルにおいて、エラー割込みまたはレジスタを設定するステップと、
前記処理回路によって前記ホストコントローラにおいてタスク実行または処理を休止するステップと、
前記ホストコントローラが前記エラー割込みまたはレジスタを設定した結果として、ホストソフトウェアにおいてエラー条件を検出するステップと、
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つによってエラーハンドリングを実行するステップと、
前記ホストソフトウェアによって前記エラー条件をクリアするステップと、
前記ホストソフトウェアによって前記エラー条件がクリアされたことを検出すると、前記ホストコントローラにおいてタスクの実行または処理を再開するステップとを含む、ホストデバイス上で使用できる方法。
【請求項２６】
前記ホストソフトウェアおよび前記ホストコントローラのうちの少なくとも1つがさらに、
前記ホストデバイスのタスクキューにおいて未処理のすべてのタスクをクリアするステップと、
前記ホストデバイスの前記タスクキューにおいて未処理の特定のタスクをクリアするステップと、
前記ホストコントローラが通信するターゲットデバイスに、前記ターゲットデバイス内のいくつかまたはすべてのタスクをクリアするように指示するステップとのうちの少なくとも1つを実行する、請求項25に記載の方法。
【国際調査報告】
2016532192.tif 000011
2016532192.tif 000012