(57)【要約】システムが、ＵＳＢストリームを使用したＵＳＢデバイスのサイドチャネルアクセスを提供し得る。システムは、ＵＳＢデバイスコントローラとのＵＳＢインターフェースと、内部バスと、ＵＳＢコントローラと内部バスとの間に結合される論理ユニット番号（ＬＵＮ）アービタと、ＬＵＮアービタに結合される二次インターフェースとを含み得る。システムは、内部バスに結合される複数の記憶デバイスを含み得る。システムは、ＵＳＢデバイスコントローラと二次インターフェースとの両方を介して、記憶デバイスへのアクセスを提供し得る。ＬＵＮアービタは、ＵＳＢデバイスコントローラからの複数のＵＳＢストリームと、二次インターフェースからの少なくとも１つの付加的ＵＳＢストリームとを受け取り得る。ＬＵＮアービタは、ＵＳＢデバイスコントローラおよび二次インターフェースから生じるＵＳＢストリーム間のアクセスの優先順位を決定し得る。
2017531871.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢデバイスコントローラおよびバッファメモリを有するＵＳＢインターフェースと、
内部バスと、
前記ＵＳＢデバイスコントローラと前記内部バスとの間に結合される論理ユニット番号（ＬＵＮ）アービタと、
前記ＬＵＮアービタに結合される二次インターフェースと
を備える、システム。
【請求項２】
前記二次インターフェースと前記内部バスとの間に結合されるＦＩＦＯをさらに備える、請求項１に記載のシステム。
【請求項３】
前記内部バスに結合される複数の記憶デバイスをさらに備える、請求項１に記載のシステム。
【請求項４】
各記憶デバイスは、小型コンピュータシステムインターフェース（ＳＣＳＩ）コマンド処理ユニットと、メモリカードコントローラとを備える、請求項３に記載のシステム。
【請求項５】
前記ＵＳＢデバイスコントローラと前記ＬＵＮアービタとの間に結合される複数のエンドポイントをさらに備える、請求項１に記載のシステム。
【請求項６】
前記ＵＳＢデバイスコントローラは、ＵＳＢストリームをサポートし、前記ＬＵＮアービタは、ＵＳＢストリームアービタである、請求項５に記載のシステム。
【請求項７】
前記ＬＵＮアービタは、前記ＵＳＢデバイスコントローラからの複数のＵＳＢストリームと、前記二次インターフェースからの少なくとも１つの付加的ＵＳＢストリームとを受け取るように構成される、請求項６に記載のシステム。
【請求項８】
前記二次インターフェースは、シリアルペリフェラルインターフェース（ＳＰＩ）、集積回路間（Ｉ２Ｃ）インターフェース、または、汎用非同期送受信機（ＵＡＲＴ）インターフェースのうちの１つである、請求項１に記載のシステム。
【請求項９】
複数のハードウェアリソースと、ＵＳＢストリームをサポートするＵＳＢデバイスコントローラと、論理ユニット番号（ＬＵＮ）アービタと、二次インターフェースとを有するシステム内の第１のハードウェアリソースへのサイドチャネルアクセスを提供するための方法であって、前記方法は、
前記ＵＳＢデバイスコントローラが、前記複数のハードウェアリソースのうちの前記第１のハードウェアリソースにアクセスするためのＵＳＢ要求を受信することと、
前記二次インターフェースが、前記複数のハードウェアリソースのうちの前記第１のハードウェアリソースにアクセスするためのサイドチャネル要求を受信することと、
前記ＵＳＢデバイスコントローラが、前記ＵＳＢ要求を前記ＬＵＮアービタに転送することと、
前記二次インターフェースが、前記サイドチャネル要求を前記ＬＵＮアービタに転送することと、
前記ＬＵＮアービタが、前記ＵＳＢ要求および前記サイドチャネル要求が前記第１のハードウェアリソースに転送される順序を決定することと
を含む、方法。
【請求項１０】
前記二次インターフェースは、ＵＳＢインターフェースではなく、前記サイドチャネル要求は、前記二次インターフェースを経由してトンネリングされるＵＳＢパケットである、請求項９に記載の方法。
【請求項１１】
前記二次インターフェースは、シリアルペリフェラルインターフェース（ＳＰＩ）、集積回路間（Ｉ２Ｃ）インターフェース、または、汎用非同期送受信機（ＵＡＲＴ）インターフェースのうちの１つである、請求項１０に記載の方法。
【請求項１２】
前記二次インターフェースは、ＦＩＦＯを使用して前記サイドチャネル要求を前記ＬＵＮアービタに転送する、請求項９に記載の方法。
【請求項１３】
前記二次インターフェースは、前記ＵＳＢパケットをアンパックし、前記ＵＳＢパケットをＦＩＦＯ内に記憶する、請求項１０に記載の方法。
【請求項１４】
前記ＬＵＮアービタは、前記ＵＳＢ要求および前記サイドチャネル要求をＵＳＢパケットとして受信する、請求項９に記載の方法。
【請求項１５】
前記ＬＵＮアービタは、小型コンピュータシステムインターフェース（ＳＣＳＩ）コマンドを使用して、前記ＵＳＢ要求および前記サイドチャネル要求を前記第１のハードウェアリソースに転送する、請求項１４に記載の方法。
【請求項１６】
前記ＬＵＮアービタは、ＵＳＢストリームアービタであり、前記ＵＳＢデバイスコントローラは、前記ＵＳＢ要求を前記ＬＵＮアービタに第１のＵＳＢストリームとして転送し、前記二次インターフェースは、前記サイドチャネル要求を前記ＬＵＮアービタに第２のＵＳＢストリームとして転送する、請求項９に記載の方法。
【請求項１７】
ＵＳＢデバイスコントローラと、
内部バスと、
サイドチャネルインターフェースユニットと、
（ｉ）前記ＵＳＢデバイスコントローラと前記内部バスとの間、かつ、（ｉｉ）前記サイドチャネルインターフェースユニットと前記内部バスとの間に結合される論理ユニット番号（ＬＵＮ）アービタと、
前記内部バスに結合される少なくとも１つのハードウェアコントローラと、
前記少なくとも１つのハードウェアコントローラにアクセスするための第１のＵＳＢパケットおよび第２のＵＳＢパケットを生成することと、
ＵＳＢインターフェースを介して、前記第１のＵＳＢパケットを前記ＵＳＢデバイスコントローラに伝送することと、
サイドチャネルインターフェース通信プロトコルを経由して前記第２のＵＳＢパケットをトンネリングすることによって、前記第２のＵＳＢパケットを前記サイドチャネルインターフェースユニットに伝送することと
を実行するように構成される少なくとも１つのプロセッサと
を備えるシステムであって、
前記ＵＳＢデバイスコントローラは、前記第１のＵＳＢパケットを前記ＬＵＮアービタに第１のＵＳＢストリームとして転送し、前記サイドチャネルインターフェースユニットは、前記第２のＵＳＢパケットを前記ＬＵＮアービタに第２のＵＳＢストリームとして転送し、前記ＬＵＮアービタは、前記第１のＵＳＢストリームと前記第２のＵＳＢストリームと間のアクセス優先順位を決定する、システム。
【請求項１８】
前記少なくとも１つのハードウェアコントローラは、前記第１のＵＳＢパケットおよび前記第２のＵＳＢパケットに応答してアクセスされる、請求項１７に記載のシステム。
【請求項１９】
前記少なくとも１つのハードウェアコントローラは、メモリカードコントローラである、請求項１７に記載のシステム。
【請求項２０】
前記内部バスは、小型コンピュータシステムインターフェース（ＳＣＳＩ）バスであり、前記少なくとも１つのハードウェアコントローラは、ＳＣＳＩコマンド処理ユニットを介して前記内部バスに結合される、請求項１７に記載のシステム。
【請求項２１】
前記サイドチャネルインターフェース通信プロトコルは、シリアルペリフェラルインターフェース（ＳＰＩ）プロトコル、集積回路間（Ｉ２Ｃ）インターフェースプロトコル、または、汎用非同期送受信機（ＵＡＲＴ）インターフェースプロトコルのうちの１つである、請求項１７に記載のシステム。
【請求項２２】
前記サイドチャネルインターフェースユニットは、ＦＩＦＯを使用して前記第２のＵＳＢパケットを前記ＬＵＮアービタに転送する、請求項１７に記載のシステム。
【請求項２３】
前記ＬＵＮアービタは、前記ＵＳＢデバイスコントローラからの複数のＵＳＢストリームと、前記サイドチャネルインターフェースユニットからの少なくとも１つの付加的ストリームとを受け取るように構成される、請求項１７に記載のシステム。
【請求項２４】
前記第１のＵＳＢパケットは、前記少なくとも１つのプロセッサのうちの第１のプロセッサによって生成され、前記第２のＵＳＢパケットは、前記少なくとも１つのプロセッサのうちの第２のプロセッサによって生成される、請求項１７に記載のシステム。
【請求項２５】
前記第１のプロセッサは、第１のハードウェアユニットの一部であり、前記第２のプロセッサは、第２のハードウェアユニットの一部であり、前記ＵＳＢデバイスコントローラは、第３のハードウェアユニットの一部である、請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連特許出願）
本願は、２０１４年１０月１３日に出願された共同所有の米国仮特許出願第６２／０６３，０９２号に対する優先権を主張し、この出願は、あらゆる目的のために、参照により本明細書に援用される。
【０００２】
（技術分野）
本開示は、ユニバーサルシリアルバス（ＵＳＢ）環境における使用のためのシステムおよび方法に関し、より具体的には、ＵＳＢストリームを使用するＵＳＢデバイスのサイドチャネルアクセスのための改善されたシステムおよび方法に関する。
【背景技術】
【０００３】
（背景）
ＵＳＢ環境は、現代の電子機器デバイス（例えば、サーバ、パーソナルコンピュータ（「ＰＣ」）、タブレットＰＣ、携帯電話、自動車インフォテインメントシステム、パーソナルゲーミングシステム、玩具等）においてユビキタスである。キーボード、モニタ、プリンタ、記憶デバイス、カメラ、電話、玩具、ゲーム、および多数の他の電子デバイスが単一のインターフェースで機能することを可能にするものは、「ユニバーサル」インターフェースである。ＵＳＢデバイス（特に、カードリーダおよび類似物のようなデバイス）では、下流ＵＳＢリソース（例えば、カードリーダの場合ではメディアカード等）が直接アクセスされることが可能である別個のインターフェース（例えば、ＳＰＩ、Ｉ２Ｃ、ＵＡＲＴ等）を使用して、デバイス内へのサイドチャネルを有することが有益である。１つのアプローチは、そのようなアクセスが上流ＵＳＢポートを通してなされることを要求することであるが、これは、論理を複雑化させ、かつ／または、システム性能を損ない得る。
【０００４】
例えば、ＵＳＢストリームをサポートしないＵＳＢデバイス（例えば、デュアルカードリーダ）においては、１つのＵＳＢパケットのみが所与の時点で処理されることが可能であり、任意のさらなるパケットは、現在のパケットの処理が完了するまで保留される。これは、サイドチャネル伝達が上流ＵＳＢポートを通してシステム内へ入る場合、全てのＵＳＢパケットは、物理的リソース（例えば、メモリカード）がアクセスされていない場合であっても、保留されなければならないことを意味する。
【０００５】
ＵＳＢストリームをサポートするＵＳＢデバイスにおいては、ＵＳＢデバイスコントローラが、順次入るＮ個の数のストリームを処理する。ＵＳＢストリームを用いると、新しいパケットが、先のパケットが処理される前にデバイス内に（デバイスの記憶および処理能力にまで）受け取られることが可能である。これは、中央コマンドアービタを有することによって遂行されることが可能であり、中央コマンドアービタは、各ＵＳＢパケットを検証し、どの物理的リソース（例えば、メモリカード＃１、メモリカード＃２、ＣＰＵ等）にパケットがルーティングされるべきかを決定する。パケットが意図される物理的リソースにのみルーティングすることによって、物理的リソース内の論理は、簡略化されることが可能である。
【０００６】
しかしながら、ＵＳＢストリームをサポートするデバイスであっても、デバイス上の物理的リソースのうちの１つへのサイドチャネルアクセスは、正しい進行を決定するために、ＣＰＵによって処理される必要がある。パケットの順不同処理をサポートしないデバイス（パケットの順不同処理をサポートしない方が単純なため、殆どのデバイス）では、全ての他のパケットの処理は、サイドチャネルパケットが正しく進行させられるまで保留されなければならず、その結果、全てのパケットの順序は、維持される。これは、サイドチャネル論理とＵＳＢデバイスコントローラとの間の通信および同期を要求し、これは、正しく実装することが困難であり得る。
【０００７】
さらに、上流ＵＳＢポートを通してサイドチャネルアクセスを要求することは、ＵＳＢデバイスにアクセスするために別個のインターフェース（例えば、ＳＰＩ、Ｉ２Ｃ、ＵＡＲＴ等）を使用する必要がある（または使用することを所望する）一部のユーザに許容可能ではない場合がある。これらの別個のインターフェースのうちの１つを介してＵＳＢデバイスへのサイドチャネルアクセスを可能にすることは、ハードウェアおよび関連付けられるソフトウェアルーチンを複雑化させ得る。例えば、そのようなサイドチャネル上の読取および書込コマンド／データをＵＳＢ上流の読取および書込コマンドを用いて多重化する機能性を実装することは、実装することが困難である可能性があり、多くの場合、専用コマンドならびにアドレス指定方式および／または付加的ハードウェア要求（例えば、ＵＳＢホストから生じるコマンドと別個のＳＰＩ／Ｉ２Ｃ／ＵＡＲＴ等のインターフェースを介して生じるコマンドとの間のアクセス優先順位を決定する付加的アービタ層）をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
（要旨）
それ故、前述の複雑性を回避する効率的かつ単純なサイドチャネルアクセスを提供することが可能である改善されたＵＳＢ環境の必要性が存在する。
【課題を解決するための手段】
【０００９】
ある実施形態によると、ＵＳＢデバイスコントローラおよびバッファメモリを有するＵＳＢインターフェースを含み得るシステムが提供される。システムは、内部バスと、ＵＳＢデバイスコントローラと内部バスとの間に結合される論理ユニット番号（ＬＵＮ）アービタとをさらに含み得る。システムは、ＬＵＮアービタと結合される二次インターフェースをさらに含み得る。ある実施形態では、システムは、二次インターフェースと内部バスとの間に結合されるＦＩＦＯを含み得る。同一のまたは代替的な実施形態では、本システムは、内部バスに結合される複数の記憶デバイスを含み得、各記憶デバイスは、小型コンピュータシステムインターフェース（ＳＣＳＩ）コマンド処理ユニットと、メモリカードコントローラとを含み得る。同一のまたは代替的な実施形態では、システムは、ＵＳＢデバイスコントローラとＬＵＮアービタとの間に結合される複数のエンドポイントを含み得る。同一のまたは代替的な実施形態では、ＵＳＢデバイスコントローラは、ＵＳＢストリームをサポートし得、ＬＵＮアービタは、ＵＳＢストリームアービタであり得る。同一のまたは代替的な実施形態では、ＬＵＮアービタは、ＵＳＢデバイスコントローラからの複数のＵＳＢストリームと、二次インターフェースからの少なくとも１つの付加的ＵＳＢストリームとを受け取るように構成され得る。
【００１０】
さらなる実施形態によると、複数のハードウェアリソースと、ＵＳＢストリームをサポートするＵＳＢデバイスコントローラと、論理ユニット番号（ＬＵＮ）アービタと、二次インターフェースとを有するシステム内の第１のハードウェアリソースへのサイドチャネルアクセスを提供するための方法が提供される。ＵＳＢデバイスコントローラは、複数のハードウェアリソースのうちの第１のハードウェアリソースにアクセスするためのＵＳＢ要求を受信し得る。二次インターフェースは、複数のハードウェアリソースのうちの第１のハードウェアリソースにアクセスするためのサイドチャネル要求を受信し得る。ＵＳＢデバイスコントローラは、ＵＳＢ要求をＬＵＮアービタに転送し得、二次インターフェースは、サイドチャネル要求をＬＵＮアービタに転送し得る。ＬＵＮアービタは、ＵＳＢ要求およびサイドチャネル要求が第１のハードウェアリソースに転送される順序を決定し得る。
【００１１】
さらなる実施形態によると、ＵＳＢデバイスコントローラと、内部バスと、サイドチャネルインターフェースユニットとを含み得るシステムが提供される。システムはさらに、（ｉ）ＵＳＢデバイスコントローラと内部バスとの間、かつ、（ｉｉ）サイドチャネルインターフェースユニットと内部バスとの間に結合される論理ユニット番号（ＬＵＮ）アービタを含み得る。システムは、内部バスに結合される少なくとも１つのハードウェアコントローラをさらに含み得る。システムは、少なくとも１つのプロセッサをさらに含み得る。少なくとも１つのプロセッサは、少なくとも１つのハードウェアコントローラにアクセスするための第１のＵＳＢパケットおよび第２のＵＳＢパケットを生成するように構成され得る。少なくとも１つのプロセッサは、ＵＳＢインターフェースを介して第１のＵＳＢパケットをＵＳＢデバイスコントローラに伝送することと、サイドチャネルインターフェース通信プロトコルを経由して第２のＵＳＢパケットをトンネリングすることによって第２のＵＳＢパケットをサイドチャネルインターフェースユニットに伝送することとを実行するようにさらに構成され得る。第１のＵＳＢパケットを受信すると、ＵＳＢデバイスコントローラは、第１のＵＳＢパケットを第１のＵＳＢストリームとしてＬＵＮアービタに転送し得る。第２のＵＳＢパケットを受信すると、サイドチャネルインターフェースユニットは、第２のＵＳＢパケットを第２のＵＳＢストリームとしてＬＵＮアービタに転送し得る。ＬＵＮアービタは、第１のＵＳＢストリームと第２のＵＳＢストリームと間のアクセス優先順位を決定し得る。少なくとも１つのハードウェアコントローラは、第１のＵＳＢパケットおよび第２のＵＳＢパケットに応答してアクセスされ得る。
【図面の簡単な説明】
【００１２】
付随の図面と併せて検討される以下の説明を参照することによって、本開示のさらに完全な理解が取得され得る。
【００１３】
【図１】図１は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスのサイドチャネルアクセスを提供することが可能である例示的なシステムのブロック図を示す。
【図２】図２は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスのサイドチャネルアクセスを提供することが可能である例示的なシステムのブロック図を示す。
【図３】図３は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスのサイドチャネルアクセスを提供するための例示的な方法のフローチャートを示す。
【００１４】
本開示は、種々の改変および代替的な形態の余地があるが、その具体的な例示的な実施形態が、図面に示され、本明細書で詳細に説明される。しかしながら、本明細書における具体的な例示的な実施形態の説明は、本開示を本明細書に開示される特定の形態に限定することを意図しておらず、反対に、本開示は、添付の特許請求の範囲によって定義されるような全ての改変および均等物を網羅するものであることを理解されたい。
【発明を実施するための形態】
【００１５】
（詳細な説明）
種々の実施形態によると、ＵＳＢストリームを使用したＵＳＢデバイスの改良されたサイドチャネルアクセスを提供することが可能であるシステムが、提供されることが可能である。
【００１６】
ここで図面を参照すると、例示的な実施形態の詳細が、図式的に示される。図面中の同様の要素は、同様の番号によって表され、類似する要素は、異なる小文字の接尾辞を伴う同様の番号によって表される。
【００１７】
図１は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスの改良されたサイドチャネルアクセスを提供することが可能である例示的なシステムのブロック図を示す。図１に描写されるように、システム１００は、プロセッサ１０２ａを有するハードウェアユニット１０２と、プロセッサ１０４ａを有するハードウェアユニット１０４とを備え得る。システム１００は、エンドポイントバッファ１１０およびバッファメモリ１１２に結合されたＵＳＢデバイスコントローラ１０６をさらに備え得る。システム１００は、ＦＩＦＯ１２２に結合された二次インターフェース１０８をさらに含み得る。システム１００は、上流ポート１２６および１２８を有しかつ下流ポートを介して内部バス１１６に結合された論理ユニット（ＬＵＮ）アービタ１１４をさらに備え得る。システム１００は、メモリカード１２４ａにアクセスするための小型コンピュータシステムインターフェース（ＳＣＳＩ）コマンド処理ユニット１１８ａおよびメモリカードコントローラ１２０ａと、メモリカード１２４ｂにアクセスするためのＳＣＳＩコマンド処理ユニット１１８ｂおよびメモリカードコントローラ１２０ｂとをさらに備え得る。バス１０３が、ハードウェアユニット１０２をＵＳＢデバイスコントローラ１０６と結合し得、ハードウェアユニット１０２とＵＳＢデバイスコントローラ１０６との間でＵＳＢ対応のシグナリングを伝搬することを可能にし得る。バス１３０が、ハードウェアユニット１０４を二次インターフェース１０８と結合し得、二次インターフェース１０８によってサポートされるプロトコルに対応するシグナリングを伝搬することを可能にし得る。図１は、ハードウェアユニット１４０を描写し、ハードウェアユニット１４０がハードウェアユニット１０２およびハードウェアユニット１０４とは別個のハードウェア（例えば、異なる物理的なチップ、基板等）であり得ることを示す。しかしながら、この描写されるハードウェア略図は、単に、例示的である。異なる実施形態（例えば、以下に説明される図２）が、異なるハードウェア構成を提供し得る。さらに、図１に描写される実施形態は、２つの物理的メモリカード（１２４ａ／ｂ）ならびに対応するメモリカードコントローラ（１２０ａ／ｂ）およびＳＣＳＩコマンド処理ユニット（１１８ａ／ｂ）を含むが、代替的な実施形態は、任意の数のメモリカード（例えば、２個、３個、１０個、１６個等）および関連付けられるＳＣＳＩコマンド処理ユニットを含み得る。
【００１８】
プロセッサ１０２ａおよびプロセッサ１０４ａは、プログラム命令を解釈および／または実行しかつ／またはデータを処理するように動作可能な任意のシステム、デバイス、もしくは装置を備え得、プログラム命令を解釈および／または実行しかつ／またはデータを処理するように構成されるマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、または任意の他のデジタルもしくはアナログ回路を含み得るがこれらに限定されない。ハードウェアユニット１０２のプロセッサ１０２ａは、ＵＳＢデバイスコントローラ１０６に通信可能に結合されることにより、ＵＳＢデバイスを実装／制御するために適切なシグナリングを提供し得る。ハードウェアユニット１０４のプロセッサ１０４ａは、二次インターフェース１０８に通信可能に結合されることにより、二次インターフェース（例えば、ＳＰＩ／Ｉ２Ｃ／ＵＡＲＴ等）を実装／制御するために適切なシグナリングを提供し得る。プロセッサ１０２ａおよびプロセッサ１０４ａはまた、メモリ（例えば、揮発性、不揮発性等）、記憶媒体（例えば、フラッシュ、ＥＥＰＲＯＭ、ソリッドステート記憶媒体等）等を含む他のリソース（図示せず）に通信可能に結合され得る。
【００１９】
ＵＳＢデバイスコントローラ１０６は、ＵＳＢデバイスコントローラインターフェースを実装するように動作可能な任意のシステム、デバイス、または装置を備え得、ＵＳＢデバイスコントローラインターフェースを実装するように構成される特定用途向け集積回路（ＡＳＩＣ）または任意の他のデジタルもしくはアナログ回路（および必要なソフトウェア／ファームウェア）を含み得るがこれらに限定されない。ある実施形態において、ＵＳＢデバイスコントローラ１０６は、Ｍｉｃｒｏｃｈｉｐ  Ｔｅｃｈｎｏｌｏｇｙ，  Ｉｎｃ．（Ｍｉｃｒｏｃｈｉｐ）によって提供されるデバイスコントローラであり得る。ＵＳＢデバイスコントローラ１０６は、（例えば、ＵＳＢ仕様のバージョン３．０において導入されるように）ＵＳＢストリームをサポートし得る。ＵＳＢデバイスコントローラ１０６は、エンドポイントバッファ１１０およびバッファメモリ１１２に結合され得る。エンドポイントバッファ１１０は、ＵＳＢ仕様によって許容される最大数まで、任意の数のエンドポイントを備え得る。エンドポイントバッファ１１０は、ＵＳＢコマンドを記憶するために使用され得る一方で、バッファメモリ１１２は、ＵＳＢデバイスコントローラ１０６によって取り扱われるＵＳＢトランザクションに関連するデータを記憶するために使用され得る。
【００２０】
二次インターフェース１０８は、二次インターフェースを実装するように動作可能な任意のシステム、デバイス、または装置を備え得、二次インターフェースを実装するように構成される特定用途向け集積回路（ＡＳＩＣ）または任意の他のデジタルもしくはアナログ回路（および必要なソフトウェア／ファームウェア）を含み得るがこれらに限定されない。二次インターフェース１０８は、サイドチャネルアクセスインターフェースを実装するために適したシリアルペリフェラルインターフェース（ＳＰＩ）、集積回路間（Ｉ２Ｃ）インターフェース、汎用非同期送受信機（ＵＡＲＴ）インターフェース、または任意の他の非ＵＳＢ通信インターフェースであり得る。二次インターフェース１０８は、ＦＩＦＯ１２２に結合され得る。ＦＩＦＯ１２２は、ＵＳＢコマンドと、二次インターフェース１０８によって取り扱われるサイドチャネルアクセスＵＳＢトランザクションに関連するデータとを記憶するために使用され得る。
【００２１】
論理ユニット番号（ＬＵＮ）アービタ１１４は、ＵＳＢストリームアービタを実装するように動作可能な任意のシステム、デバイス、または装置を備え得、ＵＳＢストリームアービタを実装するように構成される特定用途向け集積回路（ＡＳＩＣ）または任意の他のデジタルもしくはアナログ回路（および必要なソフトウェア／ファームウェア）を含み得るがこれらに限定されない。ＬＵＮアービタ１１４は、エンドポイントバッファ１１０に結合された上流ポート１２６と、ＦＩＦＯ１２２に結合された上流ポート１２８とを含み得る。ＬＵＮアービタ１１４は、上流ポート１２６を介して、ＵＳＢデバイスコントローラ１０６から生じる複数のＵＳＢストリームをサポートし得る。ＬＵＮアービタ１１４は、上流ポート１２８を介して、二次インターフェース１０８から生じる少なくとも１つの付加的ＵＳＢストリームをさらにサポートし得る。ＬＵＮは、ＳＣＳＩ、ｉＳＣＳＩ、またはファイバチャネル（ＦＣ）プロトコルによってアドレス指定されるような別個のデバイス（そのデバイスの各々が論理ユニットである）を区別するために使用される一意の識別子である。
【００２２】
ＳＣＳＩコマンド処理ユニット１１８ａおよびＳＣＳＩコマンド処理ユニット１１８ｂは、内部バス１１６上に送られるＳＣＳＩコマンドを処理するように動作可能な任意のシステム、デバイス、または装置を備え得、内部バス１１６上に発行されるＳＣＳＩコマンドを処理するように構成される特定用途向け集積回路（ＡＳＩＣ）または任意の他のデジタルもしくはアナログ回路（および必要なソフトウェア／ファームウェア）を含み得るがこれらに限定されない。代替的な実施形態では、内部バス１１６は、ＬＵＮアービタとメモリカードコントローラ１２０ａおよびメモリカードコントローラ１２０ｂとの間をインターフェースするために適したｉＳＣＳＩ、ＦＣ、または任意の他のバスであり得る。従って、図１は、ＳＣＳＩコマンド処理ユニットとして要素１１８ａおよび要素１１８ｂを描写しているが、これらの処理ユニットは、代替的な実施形態では、ｉＳＣＳＩ、ＦＣ、または他のコマンド処理ユニットであり得る。
【００２３】
メモリカードコントローラ１２０ａおよびメモリカードコントローラ１２０ｂは、それぞれ、メモリカード１２４ａおよびメモリカード１２４ｂを制御するように動作可能な任意のシステム、デバイス、または装置を備え得、メモリカード１２４ａおよびメモリカード１２４ｂを制御するように構成される特定用途向け集積回路（ＡＳＩＣ）または任意の他のデジタルもしくはアナログ回路（および必要なソフトウェア／ファームウェア）を含み得るがこれらに限定されない。代替的な実施形態では、メモリカード１２４ａおよびメモリカード１２４ｂは、メモリカード以外のハードウェアリソース（例えば、オーディオデバイス等）であり得る。従って、図１は、メモリカードコントローラとして要素１２０ａおよび要素１２０ｂを描写しているが、これらのコントローラは、メモリカード以外のハードウェアリソース（例えば、オーディオデバイス等）を制御するように構成され得る。
【００２４】
動作時、システム１００は、ＵＳＢストリームを使用したＵＳＢデバイスへの改良されたサイドチャネルアクセスを提供し得る。ハードウェアユニット１０２およびプロセッサ１０２ａは、ＵＳＢバス１０３を介してＵＳＢデバイスコントローラ１０６と相互作用するように概して動作可能なソフトウェアおよび／またはファームウェア（例えば、ＵＳＢホストコントローラスタック等）を実行し得る。ＵＳＢバス１０３を介してＵＳＢパケットを受信すると、ＵＳＢデバイスコントローラ１０６は、ＵＳＢストリームを含む対応するＵＳＢコマンドをエンドポイントバッファ１１０に転送（例えば、記憶）し得、対応するデータをバッファメモリ１１２内に記憶し得る。
【００２５】
任意の時点で、ハードウェアユニット１０４およびプロセッサ１０４ａは、バス１３０を介してデータを二次インターフェース１０８に伝送することによって、ＵＳＢデバイスのサイドチャネルアクセスを開始するように概して動作可能なソフトウェアおよび／またはファームウェアを実行し得る。先に開示されたように、バス１３０は、サイドチャネルアクセスインターフェースを実装するために適したＳＰＩバス、Ｉ２Ｃバス、ＵＡＲＴバス、または任意の他の非ＵＳＢバスであり得る。ハードウェアユニット１０４およびプロセッサ１０４ａは、二次インターフェースプロトコルを経由してＵＳＢパケットをトンネリングすることによって、バス１３０を経由してＵＳＢパケットを送信し得る。言い換えると、ＵＳＢプロトコルは、ＳＰＩ／Ｉ２Ｃ／ＵＡＲＴ等のプロトコルの上にオーバーレイされ得、これは、ＵＳＢをＳＰＩ／Ｉ２Ｃ／ＵＡＲＴ等にブリッジしないときは、反直観的である。実際には、逆ブリッジ機能がなされ、これは、使用することがより有能かつロバストなプロトコルとＵＳＢがみなされるため、非常に奇異なことであるとみなされ得る。バス１３０を介してＵＳＢパケットを受信すると、二次インターフェース１０８は、ＵＳＢパケットをアンパックし、ＵＳＢコマンドおよびデータをＵＳＢストリームとしてＦＩＦＯ１２２内に転送（例えば、記憶）する。
【００２６】
ＬＵＮアービタ１１４は、（ＵＳＢデバイスコントローラ１０６からの）上流ポート１２６および（二次インターフェース１０８からの）上流ポート１２８において、ＵＳＢストリームを介してＵＳＢパケットを受信し得る。ＬＵＮアービタ１１４は、上流ポート１２６および上流ポート１２８において受信されたＵＳＢパケットを、どの物理的ＬＵＮ（例えば、図１におけるメモリカードコントローラ１２０ａおよびメモリカードコントローラ１２０ｂ）にパケットが行くことになっているかを決定し、かつ、ＵＳＢパケット内に含まれる要求を正しいＬＵＮに向かわせることによって、正しいオンチップリソースに進行させ得る。従って、ＬＵＮアービタ１１４は、ＳＣＳＩ、ｉＳＣＳＩ、またはファイバチャネル（ＦＣ）プロトコルに従ってＵＳＢパケット内に含まれる要求をコマンド（例えば、ユニキャストコマンド）に変換し得、変換された要求を内部バス１１６に転送し得る。
【００２７】
ＳＣＳＩコマンド処理ユニット１１８ａおよびＳＣＳＩコマンド処理ユニット１１８ｂは、内部バス１１６からコマンドを受信し得、ＳＣＳＩコマンド処理ユニット１１８ａおよびＳＣＳＩコマンド処理ユニット１１８ｂは、それぞれ、メモリカードコントローラ１２０ａおよびメモリカードコントローラ１２０ｂ（または他のハードウェアコントローラ）とインターフェースすることにより、メモリカード１２４ａおよびメモリカード１２４ｂ（または他のハードウェアリソース）へのアクセスを生じさせ得る。メモリカード１２４ａおよびメモリカード１２４ｂのアクセスは、正規のＵＳＢアクセス（すなわち、ＵＳＢデバイスコントローラ１０６を介して）またはサイドチャネルアクセス（すなわち、二次インターフェース１０８を介して）であり得る。
【００２８】
図２は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスへの改良されたサイドチャネルアクセスを提供することが可能である例示的なシステムのブロック図を示す。図２は、ほぼ全ての点で、図１と同じである。図２は、プロセッサ２０３が図１のハードウェアユニット１０２およびハードウェアユニット１０４に取って代わる代替的な実施形態を描写する。図２の実施形態はまた、要素１４０ａの追加が図１とは異なる。
【００２９】
図２に描写される実施形態によると、プロセッサ２０３は、プログラム命令を解釈および／または実行しかつ／またはデータを処理するように動作可能な任意のシステム、デバイス、もしくは装置を備え得、プログラム命令を解釈および／または実行しかつ／またはデータを処理するように構成されるマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、または任意の他のデジタルもしくはアナログ回路を含み得るがこれらに限定されない。プロセッサ２０３は、ＵＳＢデバイスコントローラ１０６に通信可能に結合されることにより、ＵＳＢデバイスを実装／制御するために適切なシグナリングを提供し得る。プロセッサ２０３はさらに、二次インターフェース１０８に通信可能に結合されることにより、二次インターフェースを実装／制御するために適切なシグナリングを提供し得る。プロセッサ２０３はまた、メモリ（例えば、揮発性、不揮発性等）、記憶媒体（例えば、フラッシュ、ＥＥＰＲＯＭ、ソリッドステート記憶媒体等）等を含む他のリソース（図示せず）に通信可能に結合され得る。したがって、図１のプロセッサ１０２ａおよびプロセッサ１０４ａは、別個のハードウェアユニットの一部であったが、図２のプロセッサ２０３は、通常のＵＳＢアクセスおよびサイドチャネルアクセスの両方を開始する。
【００３０】
図２の要素１４０ａは、本開示に従った種々の代替的な実施形態を表す。例えば、１つの実施形態では、プロセッサ２０３は、ハードウェアユニット１４０の一部であり得る。代替的な実施形態では、プロセッサ２０３は、ハードウェアユニット１４０とは別個のハードウェアユニットの一部であり得る。
【００３１】
図３は、本開示のある実施形態に従った、ＵＳＢストリームを使用したＵＳＢデバイスの改良されたサイドチャネルアクセスを提供するための例示的な方法３００のフローチャートを示す。１つの実施形態によると、方法３００は、好ましくは、ステップ３０２において開始する。上述されたように、本開示の教示は、システム１００／２００の種々の構成において実装され得る。したがって、方法３００の好ましい初期化点および方法３００を構成するステップ３０２〜３１４の順序は、選定された実装に依存し得る。
【００３２】
ステップ３０２において、システム１００／２００は、初期化し得る。例えば、システム１００／２００は、（電源を介して、またはＵＳＢホストへの接続を介して）電源オンにされ得、システム１００／２００のＵＳＢデバイスコントローラ１０６、二次インターフェース１０８、および他の構成要素が、初期化し得る。ステップ３０４において、システム１００／２００は、ＵＳＢバス１０３を介して第１のＵＳＢパケットを受信し得る。第１のＵＳＢパケットは、ハードウェアユニット１０２内のＵＳＢホストから送信される通常のＵＳＢトラフィックを表し得る。ステップ３０６において、システム１００／２００は、二次インターフェース１０８上に第２のＵＳＢパケットを受信し得る。第２のＵＳＢパケットは、二次インターフェースによって定義された通信プロトコル（例えば、ＳＰＩ／Ｉ２Ｃ／ＵＡＲＴ等のインターフェースを経由してＵＳＢパケットをトンネリングすること）に従って受信され得る。ステップ３０８において、ＵＳＢデバイスコントローラは、第１のＵＳＢパケットをＵＳＢストリームとしてＬＵＮアービタ１１４に転送し得る。ステップ３１０において、二次インターフェース１０８は、第２のＵＳＢパケットをＵＳＢストリームとしてＬＵＮアービタ１１４に転送し得る（すなわち、二次インターフェースは、トンネリングされた第２のＵＳＢパケットをＦＩＦＯ１２２を介してＬＵＮアービタ１１４に転送するために、トンネリングされた第２のＵＳＢパケットをアンパックし得る）。ステップ３１２において、ＬＵＮアービタ１１４は、第１のＵＳＢパケットと第２のＵＳＢパケットと間のアクセスの優先順位を決定し得る。本文脈では、ＬＵＮアービタ１１４が、第１のパケットおよび第２のパケットは異なるハードウェアリソースに向かっていると決定する場合、ＬＵＮアービタ１１４は、第１のパケットおよび第２のパケット内に含まれる要求間に競合は全く存在しないと決定し得る。ステップ３１４において、ＬＵＮアービタ１１４は、第１のＵＳＢパケットおよび第２のＵＳＢパケットに関して決定された優先順位に従って、ハードウェアコントローラ１２０ａおよび／またはハードウェアコントローラ１２０ｂにアクセスし得る。例えば、ＬＵＮアービタ１１４は、コマンド処理ブロック１１８ａ／１１８ｂによって処理され得るコマンドを内部バス１１６上に発行し得る。次に、ハードウェアコントローラ１２０ａおよび／またはハードウェアコントローラ１２０ｂは、アクセスされ得、メモリカード１２４ａおよび／またはメモリカード１２４ｂへのアクセスをもたらす。
【００３３】
図３は、図３に描写される方法に関して行われるべき特定の数のステップを開示しているが、その方法は、描写されるものよりも多いまたは少ないステップで実行され得る。加えて、図３は、図３に描写される方法に関して行われるべきある順序のステップを開示しているが、ステップは、任意の適した順序で完了され得る。例えば、ステップ３０４は、ステップ３０６の後に起こり得る。別の例として、ステップ３０８は、ステップ３１０の後に起こり得る。
【００３４】
本明細書に開示される方法およびシステムを使用して、ＵＳＢストリームを使用したＵＳＢデバイスの改良されたサイドチャネルアクセスを提供することが可能であるシステムが、提供されることが可能である。開示される実施形態によると、ユーザは、有利に、ＵＳＢデバイスのサイドチャネルアクセスを実行するために、既存のハードウェアインターフェースを使用し得る。サイドチャネルマスタ（例えば、ＳＰＩ、Ｉ２Ｃ、ＵＡＲＴ等のマスタ）が、ＵＳＢホストのように、チップ上に置かれ得る任意の種類のＵＳＢ下流デバイスに呼びかけ得る。さらに、開示される実施形態によると、システム１４０上に存在するＣＰＵは、全てのサイドチャネルパケットを処理する負担を軽減され得る。さらに、開示される実施形態によると、アービトレーションは、集中化され、それ故、より単純かつより整合した状態になる。例えば、ＬＵＮアービタ１１４は、ＵＳＢパケットを処理することのみを必要とし、これは、設計を簡略化し、専用プロトコルの必要性を排除し得る。別の例として、いくつかの実施形態では、ＬＵＮアービタ１１４は、以前から存在するＵＳＢストリームアービタへの単純な修正である、サイドチャネルアクセスに関連する１つの付加的ＵＳＢストリームをサポートすることのみを必要とする。またさらに、開示される実施形態は、サイドチャネルアクセスに関するコヒーレントな順不同処理を可能にする。
【００３５】
本開示が詳細に説明されたが、種々の変更、置換、および改変が、添付される特許請求の範囲によって定義されるような本開示の精神および範囲から逸脱することなく、本明細書に成され得ることを理解されたい。
【図１】
2017531871.tif 000003
【図２】
2017531871.tif 000004
【図３】
2017531871.tif 000005
【国際調査報告】
2017531871.tif 000006
2017531871.tif 000007