(57)【特許請求の範囲】
【請求項１】
制御方法であって、
第1のデバイスによって送信されるデータをルータで受信するステップであって、前記データは、I/Oデバイスの識別子を運んでいる、受信するステップと、
複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定するステップと、
前記I/Oデバイスの前記識別子に対応する前記1つの決定されたコントローラに前記データを送信し、それによって前記1つの決定されたコントローラが、該1つの決定されたコントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
前記1つの決定されたコントローラによって送信される前記処理されたデータを受信するステップと、
第2のデバイスに前記処理されたデータを送信するステップと、
前記I/Oデバイスの機能的要求に従って、前記1つの決定されたコントローラの前記ファームウェア・コードを修正するステップと、を含み、
前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、
制御方法。
【請求項２】
前記1つのコントローラが、該1つのコントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップは、
前記1つのコントローラの中のキューからバッファへと前記データを読み出すステップと、
メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理するステップと、を含む、請求項１に記載の制御方法。
【請求項３】
複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定するステップの前に、当該制御方法は、
前記I/Oデバイスの機能的要求及び前記コントローラによって実装される機能に従って、前記I/Oデバイスと前記1つのコントローラとの間の1つの対応関係を確立するステップをさらに含む、請求項１又は２に記載の制御方法。
【請求項４】
基本入力/出力システム(BIOS)又はオペレーティング・システム(OS)を使用して、前記ファームウェア・コードを前記1つの決定されたコントローラにロードするステップをさらに含む、請求項１乃至３のいずれか１項に記載の制御方法。
【請求項５】
前記I/Oデバイスの前記機能的要求に従って、前記I/Oデバイスと前記コントローラとの間の前記対応関係を修正するステップをさらに含む、請求項１乃至４のうちのいずれか１項に記載の制御方法。
【請求項６】
前記I/Oデバイスの前記機能的要求は、暗号化、復号化、圧縮、及び帯域幅割り当てを含む機能のグループについての機能的要求のうちの少なくとも1つを含む、請求項１乃至５のいずれか１項に記載の制御方法。
【請求項７】
制御方法であって、
データをコントローラで受信し、前記コントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより第2のデバイスに送信するステップ、又はルータを使用して第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより前記ルータに送信し、それによって前記ルータが第2のデバイスに前記処理されたデータを送信するステップであって、前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、ステップと、
前記I/Oデバイスの機能的要求に従って、前記コントローラの前記ファームウェア・コードを修正するステップと、を含む、
制御方法。
【請求項８】
前記コントローラの中に格納されているファームウェア・コードに従って前記データを前記コントローラによって処理するステップは、
前記コントローラの中のキューからバッファへと前記データを読み出すステップと、
メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理するステップと、を含む、請求項７に記載の制御方法。
【請求項９】
基本入力/出力システム(BIOS)又はオペレーティング・システム(OS)を使用して、前記ファームウェア・コードを前記コントローラにロードするステップをさらに含む、請求項７又は８に記載の制御方法。
【請求項１０】
前記I/Oデバイスの前記機能的要求は、暗号化、復号化、圧縮、及び帯域幅割り当てを含む機能のグループについての機能的要求のうちの少なくとも1つを含む、請求項７乃至９のいずれか１項に記載の制御方法。
【請求項１１】
制御デバイスであって、
1つのルータ及び少なくとも2つのコントローラを含み、
前記ルータは、第1のデバイスによって送信されるデータを受信するように構成され、前記データは、I/Oデバイスの識別子を運んでおり、前記ルータは、さらに、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記少なくとも2つのコントローラのうちで前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定し、前記I/Oデバイスの前記識別子に対応する前記1つの決定されたコントローラに前記データを送信する、ように構成され、
前記1つの決定されたコントローラは、
前記I/Oデバイスの機能的要求に従って、前記1つの決定されたコントローラの中に格納されているファームウェア・コードを修正するように構成されるコントローラ・プログラミング・インターフェイスをさらに含み、
前記I/Oデバイスの前記識別子に対応する前記1つの決定されたコントローラは、該1つの決定されたコントローラの中に格納されている前記ファームウェア・コードに従って前記データを処理し、前記処理されたデータを取得し、前記処理されたデータを前記ルータに送信するように構成され、
前記ルータは、さらに、前記処理されたデータを第2のデバイスに送信するように構成され、
前記第2のデバイス又は前記第1のデバイスは、前記I/Oデバイスである、
制御デバイス。
【請求項１２】
前記1つの決定されたコントローラは、
前記ファームウェア・コードを格納するように構成されるメモリと、
プロセッサによって前記1つの決定されたコントローラの中のキューから読みだされる前記データを格納するように構成されるバッファと、を含み、
前記プロセッサは、前記メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理し、前記処理されたデータを取得し、そして前記処理されたデータを前記ルータに送信するように構成される、請求項１１に記載の制御デバイス。
【請求項１３】
前記ルータは、さらに、前記I/Oデバイスの機能的要求及び前記少なくとも2つのコントローラによって実装される機能に従って、前記I/Oデバイスと1つのコントローラとの間の1つの対応関係を確立するように構成される、請求項１１又は１２に記載の制御デバイス。
【請求項１４】
前記1つのコントローラは、さらに、基本入力/出力システム(BIOS)又はオペレーティング・システム（OS）によってロードされる前記ファームウェア・コードを受信するように構成される、請求項１１乃至１３のいずれか１項に記載の制御デバイス。
【請求項１５】
前記ルータは、
前記I/Oデバイスの前記機能的要求に従って、前記I/Oデバイスと前記1つの決定されたコントローラとの間の前記対応関係を修正するように構成されるルータ・プログラミング・インターフェイスをさらに含む、請求項１１乃至１４のいずれか１項に記載の制御デバイス。
【請求項１６】
前記I/Oデバイスの前記機能的要求は、暗号化、復号化、圧縮、及び帯域幅割り当てを含む機能のグループについての機能的要求のうちの少なくとも1つを含む、請求項１１乃至１５のいずれか１項に記載の制御デバイス。
【請求項１７】
プロセッサにより実行可能な1つ又は複数の命令を含むコンピュータ・プログラムであって、前記プロセッサにより実行可能な1つ又は複数の命令は、前記プロセッサの上で実行されると、少なくとも2つのコントローラと1つのルータとを含む制御デバイスに制御方法を実行させ、該制御方法は、
第1のデバイスによって送信されるデータを前記ルータで受信するステップであって、前記データは、I/Oデバイスの識別子を運んでいる、受信するステップと、
複数のI/Oデバイスと前記少なくとも2つのコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記少なくとも2つのコントローラのうちで前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定するステップと、
前記I/Oデバイスの前記識別子に対応する前記1つの決定されたコントローラに前記データを送信し、それによって前記1つの決定されたコントローラが、該1つの決定されたコントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
前記1つの決定されたコントローラによって送信される前記処理されたデータを受信するステップと、
第2のデバイスに前記処理されたデータを送信するステップと、
前記I/Oデバイスの機能的要求に従って、前記1つの決定されたコントローラの前記ファームウェア・コードを修正するステップと、を含み、
前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、
コンピュータ・プログラム。
【請求項１８】
プロセッサにより実行可能な1つ又は複数の命令を含むコンピュータ・プログラムであって、前記プロセッサにより実行可能な1つ又は複数の命令は、前記プロセッサの上で実行されると、コントローラに制御方法を実行させ、該制御方法は、
データをコントローラで受信し、前記コントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより第2のデバイスに送信するステップ、又はルータを使用して第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより前記ルータに送信し、それによって前記ルータが第2のデバイスに前記処理されたデータを送信するステップであって、前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、ステップと、
前記I/Oデバイスの機能的要求に従って、前記コントローラの前記ファームウェア・コードを修正するステップと、を含む、
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンピュータ技術に関し、特に、制御方法及び制御デバイスに関する。
【背景技術】
【０００２】
入力/出力（Input/Output、略して、I/O）チップセットは、コンピュータ・システム内の重要な構成要素であり、その基本的な機能は、中央処理装置（Central  Processing  Uint、略して、CPU）とI/Oデバイスとを接続することである。入力/出力チップセットは、CPUとI/Oデバイスとの間のデータパスである。
【０００３】
従来技術において、I/Oチップセットは、CPUに接続されているクイック・パス相互接続（Quick Path
Interconnect、略して、QPI）バス・インターフェイスと、I/Oデバイスに接続されている周辺構成要素相互接続エクスプレス（Peripheral
Component Interconnect Express、略して、PCIE）バス・インターフェイスと、例えば、暗号化機能を実装する機能モジュール等のいくつかの他の機能モジュールとを含む。しかしながら、QPIバス・インターフェイス、PCIEバス・インターフェイス、及びいくつかの他の機能モジュールによって実装される機能は、上記のチップセットの中に組み込まれている。すなわち、いったん1つのI/Oチップセットが製造されると、その複数の機能を修正することは不可能である。したがって、I/Oチップセットを柔軟に実装することはできない。
【発明の概要】
【０００４】
従来技術における上記の技術的課題を解決するために、本発明の複数の実施形態は、制御方法及び制御デバイスを提供する。
【０００５】
本発明の複数の実施形態の第1の態様は、制御方法であって、
第1のデバイスによって送信されるデータをルータで受信するステップであって、前記データは、I/Oデバイスの識別子を運んでいる、受信するステップと、
複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定するステップと、
前記I/Oデバイスの前記識別子に対応する前記1つのコントローラに前記データを送信し、それによって前記1つのコントローラが、該1つのコントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
前記1つのコントローラによって送信される前記処理されたデータを受信するステップと、
第2のデバイスに前記処理されたデータを送信するステップとを含み、
前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、制御方法を提供する。
【０００６】
前記第1の態様に関連して、第1の可能な実装方法において、前記1つのコントローラが、該1つのコントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップは、
前記1つのコントローラの中のキューからバッファへと前記データを読み出すステップと、
メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理するステップとを含む。
【０００７】
前記第1の可能な実装方法に関連して、第2の可能な実装方法において、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定するステップの前に、当該制御方法は、
前記I/Oデバイスの機能的要求及び前記コントローラによって実装される機能に従って、前記I/Oデバイスと前記コントローラとの間の1つの対応関係を確立するステップをさらに含む。
【０００８】
前記第1の可能な実装方法に関連して、第3の可能な実装方法において、当該制御方法は、
基本入力/出力システム（BIOS）又はオペレーティング・システム（OS）を使用して、前記ファームウェア・コードを前記1つのコントローラにロードするステップをさらに含む。
【０００９】
前記第1の可能な実装方法乃至前記第3の可能な実装方法のうちのいずれかの可能な実装方法に関連して、第4の可能な実装方法において、当該制御方法は、
前記I/Oデバイスの前記機能的要求に従って、前記I/Oデバイスと前記コントローラとの間の前記対応関係を修正するステップをさらに含む。
【００１０】
前記第1の可能な実装方法乃至前記第3の可能な実装方法のうちのいずれかの可能な実装方法に関連して、第5の可能な実装方法において、当該制御方法は、
前記I/Oデバイスの前記機能的要求に従って、前記1つのコントローラの前記ファームウェア・コードを修正するステップをさらに含む。
【００１１】
本発明の複数の実施形態の第2の態様は、制御方法であって、
データをコントローラで受信し、前記コントローラの中に格納されているファームウェア・コードに従って前記データを処理するステップと、
第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより第2のデバイスに送信するステップ、又はルータを使用して第1のデバイスから前記データが受信される場合には、前記処理されたデータを、前記コントローラにより前記ルータに送信し、それによって前記ルータが第2のデバイスに前記処理されたデータを送信するステップとを含み、
前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、制御方法を提供する。
【００１２】
前記第2の態様に関連して、第1の可能な実装方法において、前記コントローラの中に格納されているファームウェア・コードに従って前記データを前記コントローラによって処理するステップは、
前記コントローラの中のキューからバッファへと前記データを読み出すステップと、
メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理するステップとを含む。
【００１３】
前記第2の態様の前記第1の可能な実装方法に関連して、第2の可能な実装方法において、当該制御方法は、
基本入力/出力システム（BIOS）又はオペレーティング・システム（OS）を使用して、前記ファームウェア・コードを前記コントローラにロードするステップをさらに含む。
【００１４】
前記第2の態様又は前記第2の態様の前記第1の可能な実装方法に関連して、第3の可能な実装方法において、当該制御方法は、
前記I/Oデバイスの機能的要求に従って、前記コントローラの前記ファームウェア・コードを修正するステップをさらに含む。
【００１５】
本発明の複数の実施形態の第3の態様は、制御デバイスであって、
1つのルータ及び少なくとも2つのコントローラを含み、
前記ルータは、第1のデバイスによって送信されるデータを受信するように構成され、前記データは、I/Oデバイスの識別子を運んでおり、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記少なくとも2つのコントローラのうちで前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定し、前記I/Oデバイスの前記識別子に対応する前記1つのコントローラに前記データを送信するように構成され、
前記I/Oデバイスの前記識別子に対応する前記1つのコントローラは、該1つのコントローラの中に格納されているファームウェア・コードに従って前記データを処理し、前記処理されたデータを取得し、前記処理されたデータを前記ルータに送信するように構成され、
前記ルータは、さらに、前記処理されたデータを第2のデバイスに送信するように構成され、
前記第2のデバイス又は前記第1のデバイスは、I/Oデバイスである、制御デバイスを提供する、制御デバイスを提供する。
【００１６】
前記第3の態様に関連して、第1の可能な実装方法において、前記1つのコントローラは、
前記ファームウェア・コードを格納するように構成されるメモリと、
プロセッサによって前記1つのコントローラの中のキューから読みだされる前記データを格納するように構成されるバッファとを含み、
前記プロセッサは、前記メモリの中に格納されている前記ファームウェア・コードを呼び出し、前記バッファの中で前記データを処理し、前記処理されたデータを取得し、そして前記処理されたデータを前記ルータに送信するように構成される。
【００１７】
前記第3の態様又は前記第3の態様の前記第1の可能な実装方法に関連して、第2の可能な実装方法において、前記ルータは、さらに、前記I/Oデバイスの機能的要求及び前記少なくとも2つのコントローラによって実装される機能に従って、前記I/Oデバイスと1つのコントローラとの間の1つの対応関係を確立するように構成される。
【００１８】
前記第3の態様又は前記第1の可能な実装方法若しくは前記第2の可能な実装方法に関連して、第3の可能な実装方法において、前記1つのコントローラは、さらに、基本入力/出力システムBIOS又はオペレーティング・システムOSによってロードされる前記ファームウェア・コードを受信するように構成される。
【００１９】
前記第3の態様又は前記第1の可能な実装方法乃至前記第3の可能な実装方法のうちのいずれかの可能な実装方法に関連して、第4の可能な実装方法において、前記ルータは、
前記I/Oデバイスの前記機能的要求に従って、前記I/Oデバイスと前記1つのコントローラとの間の前記1つの対応関係を修正するように構成されるルータ・プログラミング・インターフェイスをさらに含む。
【００２０】
前記第3の態様又は前記第1の可能な実装方法乃至前記第4の可能な実装方法のうちのいずれかの可能な実装方法に関連して、前記1つのコントローラは、
前記I/Oデバイスの前記機能的要求に従って、前記1つのコントローラの前記ファームウェア・コードを修正するように構成されるコントローラ・プログラミング・インターフェイスをさらに含む。
【００２１】
本発明に従った複数の実施形態において提供される制御方法及び制御デバイスによれば、ルータは、第1のデバイスによって送信されるデータを受信し、データは、I/Oデバイスの識別子を運び、ルータは、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及び前記I/Oデバイスの前記識別子に従って、前記I/Oデバイスの前記識別子に対応する1つのコントローラを決定し、前記I/Oデバイスの前記識別子に対応する前記1つのコントローラに前記データを送信し、それによって前記1つのコントローラが、該コントローラの中に格納されているファームウェア・コードに従って前記データを処理し、前記ルータは、前記1つのコントローラによって送信される前記処理されたデータを受信し、第2のデバイスに前記処理されたデータを送信し、前記第2のデバイス又は前記第1のデバイスは、前記I/Oデバイスである。本発明の複数の実施形態においては、ファームウェア・コードは、通常、プログラム可能であり、したがって、上記の制御方法を適用する（具体的には、I/Oチップセットであってもよい）制御デバイスは、比較的柔軟に実装されうる。
【図面の簡単な説明】
【００２２】
本発明の実施形態の中で又は従来技術の中でより明確に技術的解決方法を記載するために、以下は、実施形態又は従来技術を記載するのに要求される添付の図面を簡潔に説明する。明らかに、以下の記載の中の添付の図面は、本発明のいくつかの実施形態を示しているにすぎず、本発明の技術分野の当業者は、創造的な努力なくして、これらの添付の図面から他の図面をさらに導き出すことができる。
【図１】従来技術のI/Oチップセットの概略的な構造的ブロック図である。
【図２】本発明に従った制御方法の実施形態1の概略的なフローチャートである。
【図３】本発明に従ったコントローラの概略的な構造的ブロック図である。
【図４】本発明に従った制御方法の実施形態2の概略的なフローチャートである。
【図５】本発明に従った制御デバイスの1つの実施形態の概略的な構造的ブロック図である。
【発明を実施するための形態】
【００２３】
以下は、本発明の実施形態における添付の図面との関連で本発明の複数の実施形態の技術的解決方法を明確かつ完全に記載している。明らかに、記載される実施形態は、本発明の複数の実施形態のいくつかに過ぎず、すべてではない。創造的な努力なくして本発明の実施形態に基づいて本発明の技術分野の当業者によって取得されるすべての他の実施形態は、本発明の保護範囲に属するべきである。
【００２４】
通常、1つのコンピュータは、少なくとも1つのI/Oチップセットを含んでいる。例えば、1つのマザーボードは、少なくとも1つのI/Oチップセットを含んでいる。I/Oチップセットの主要な機能は、I/OデバイスとCPUとの間で通信されるデータを転送することである。図1は、従来技術のI/Oチップセットの概略的な構造的ブロック図である。図1から理解できるように、I/Oチップセットは、CPUバス・インターフェイスとI/Oバス・インターフェイスとを含む。図1の例において、CPUバス・インターフェイスは、クイック・パス相互接続（Quick  Path  Interconnect、略して、QPI）バス・インターフェイスとして示されている。QPIバス・インターフェイスは、CPUバス・インターフェイスの1つのタイプに過ぎず、QPIバス・インターフェイスは、CPUに接続するように構成される。図1の例において、I/Oバス・インターフェイスは、デバイスに接続される周辺構成要素相互接続エクスプレス（Peripheral  Component  Interconnect  Express、略して、PCIE）バス・インターフェイスとして示されている。PCIEバス・インターフェイスは、I/Oバス・インターフェイスの1つのタイプに過ぎず、I/Oデバイスに接続するように構成される。もちろんのことではあるが、I/Oチップセットは、（図示されていない）他のインターフェイス又は他の機能モジュールをさらに含んでもよい。しかしながら、QPIインターフェイス、PCIEインターフェイス、及びいくつかの他の機能モジュールによって実装される機能は、チップセットの中に組み込まれている。したがって、I/Oチップセットを柔軟に実装することは不可能である。
【００２５】
従来技術の解決方法を使用することによっては、I/Oチップセットを柔軟に実装することは不可能である。本発明の技術的解決方法においては、ルータは、第1のデバイスによって送信されるデータを受信し、I/Oデバイスの識別子がそのデータの中で運ばれており、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及びI/Oデバイスの識別子に従って、そのI/Oデバイスの識別子に対応する1つのコントローラを決定する。コントローラは、ファームウェア・コードの部分を格納しており、ファームウェア・コードは、例えば、暗号化、復号化、圧縮、帯域幅割り当て、及び/又はその他同様のものをそれらに応じて実装する1つの機能又は複数の機能のグループを実装するのに使用することができる。ルータは、I/Oデバイスの識別子に対応するコントローラにデータを送信し、コントローラは、そのデータを処理して、ルータに処理されたデータを送信し、そして、ルータは、コントローラによって処理されたデータを第2のデバイスに送信する。本発明の実施形態においては、第1のデバイス又は第2のデバイスが、I/Oデバイスである。すなわち、第1のデバイスがCPUである場合には、第2のデバイスはI/Oデバイスであり、又は第1のデバイスがI/Oデバイスである場合には、第2のデバイスはCPUである。本発明の実施形態においては、ファームウェア・コードは、一般的に、プログラム可能であり、したがって、上記の制御方法を適用する（具体的には、I/Oチップセットであってもよい）制御デバイスを比較的柔軟に実装することが可能である。
【００２６】
以下では、特有の実施形態を用いることにより、本願発明の技術的解決方法を詳細に記載している。以下の特有の実施形態は組み合わせられてもよく、同一の又は同様の概念又はプロセスについては、細部は、いくつかの実施形態においては記載されなくてもよい。
【００２７】
図2は、本発明に従った制御方法の実施形態1の概略的なフローチャートである。図2に示されているように、本実施形態に従った方法は、以下のステップを含む:
【００２８】
ステップS201:ルータは、第1のデバイスによって送信されるデータを受信する。
【００２９】
第1のデバイスによって送信されるデータは、I/Oデバイスの識別子を運んでいる。
【００３０】
第1のデバイスは、CPU又はI/Oデバイスであってもよい。上記のデータは、CPUによってI/Oデバイスに送信されるデータであってもよく、又はI/OデバイスによってCPUに送信されるデータであってもよい。データがCPUによってI/Oデバイスに送信されるか又はI/OデバイスによってCPUに送信されるかにかかわらず、そのデータは、I/Oデバイスの識別子を運んでいる。I/Oデバイスの識別子は、I/Oデバイスの名称であってもよく、又はI/Oデバイスの番号であってもよく、I/Oデバイスの識別子は、I/Oデバイスを一意に識別することができれば、本発明においては限定されることはない。
【００３１】
ステップS202:複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及びI/Oデバイスの識別子に従って、そのI/Oデバイスの識別子に対応するコントローラを決定する。
【００３２】
ルータは、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係を格納している。1つのコントローラは、1つの機能又は複数の機能のグループを実装することができ、例えば、暗号化、復号化、圧縮、及び/又は帯域幅割り当て等の複数の機能を実装することができる。
【００３３】
通常、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係は、I/Oデバイスの機能的要求及びコントローラによって実装される機能に従って確立される。例えば、I/Oデバイス1の機能的要求が、I/Oデバイス1とCPUとの間で通信されるデータが暗号化されることを必要とするということであり、そして、コントローラ1によって実装される機能が暗号化機能である場合には、そのI/Oデバイス1とそのコントローラ1との間の1つの対応関係が確立される。また、I/Oデバイス2の機能的要求が、I/Oデバイス2とCPUとの間で通信されるデータが圧縮されることを必要とするということであり、そして、コントローラ3によって実装される機能が圧縮機能である場合には、そのI/Oデバイス2とそのコントローラ3との間の1つの対応関係が確立される。他のI/Oデバイスとある1つのコントローラとの間の1つの対応関係が同様の方法で確立されてもよく、本明細書では、詳細は記載されない。
【００３４】
ある1つのI/Oデバイスの機能的要求が変化する場合には、実装方法は:I/Oチップセットのある1つのコントローラがそのI/Oデバイスの変化した機能的要求を実装することができる場合には、そのI/Oデバイスとそのコントローラとの間の1つの対応関係が、そのI/Oデバイスの機能的要求に従って、通常、修正される。例えば、I/Oチップセットの中の4つの現在のコントローラによって実装されうる機能が、それぞれ、以下のものである:すなわち、コントローラ1が暗号化機能を実装し、コントローラ2が帯域幅割り当て機能を実装し、コントローラ3が圧縮機能を実装し、そして、コントローラ4が復号化機能を実装する。I/Oデバイス1の機能的要求が、暗号化要求から圧縮要求に変化し、コントローラ3が圧縮機能を実装することができ、したがって、I/Oデバイス1とコントローラ1との間の対応関係が、I/Oデバイス1とコントローラ3との間の対応関係に修正されることが要求されるにすぎない。
【００３５】
I/Oデバイスの機能的要求が変化する場合に、他の実装方法は:I/Oチップセットの中のある1つのコントローラがそのI/Oデバイスの変化した機能的要求を実装することができない場合には、そのコントローラのファームウェア・コードが、そのI/Oデバイスの機能的要求に従って、通常、修正される。例えば、I/Oデバイス1の機能的要求が暗号化要求から遅延制御要求に変化する場合には、コントローラ1によって実装される機能は、暗号化から遅延制御に修正されてもよい。コントローラによって実装される機能は、そのコントローラの中に格納されているファームウェア・コードを修正することによって、通常、修正される。コントローラの中のメモリは、異なるファームウェア・コードを格納していてもよい。コントローラのプロセッサは、異なるファームウェア・コードを呼び出して、処理を実行し、それによってそのコントローラが異なる機能を実装することができるようにしてもよい。さらに、本発明の本実施形態において、ファームウェア・コードは、通常、プログラム可能であり、したがって、上記の制御方法を適用する（具体的には、I/Oチップセットであってもよい）制御デバイスを比較的柔軟に実装することができる。
【００３６】
I/Oデバイスの機能的要求が変化する場合に、さらに別の実装方法は:  そのI/Oデバイスの機能的要求がそのコントローラによって実装される機能と同一であるということを、確立される対応関係が満たせば、コントローラの機能及びI/Oデバイスとそのコントローラとの間の対応関係の双方が修正される。
【００３７】
コントローラの中のファームウェア・コードについては、ファームウェア・コードは、通常、システムが起動する際に、基本入力/出力システム（Basic  Input/Output  System、略して、BIOS）又はオペレーティング・システム（Operating  System、略して、OS）によってそのコントローラにロードされる。通常、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係は、ファームウェア・コードがコントローラにロードされた後に確立されるが、本発明においては限定されず、もちろんのことではあるが、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係が最初に確立され、その後、対応するコードが対応関係に従ってコントローラにロードされてもよい。
【００３８】
ステップS203:I/Oデバイスの識別子に従って、コントローラにデータを送信し、それによってそのコントローラが、当該コントローラの中に格納されているファームウェア・コードに従ってデータを処理するようにする。
【００３９】
ルータは、I/Oデバイスの識別子に対応するコントローラにデータを送信し、そのコントローラはデータを処理する。
【００４０】
図3は、本発明に従ったコントローラの概略的な構造的ブロック図である。図3に示されているように、コントローラは、キュー、バッファ、プロセッサ、及びメモリを含む。メモリは、ファームウェア・コードを格納している。キューは、ルータによって送信されるデータを格納する。図3を参照すると、CPUとI/Oデバイスとの間で通信されるデータを受信した後に、ルータは、I/Oデバイスの識別子に従って、コントローラの中のキューにデータを送信し、I/Oデバイスの識別子は、上記のデータの中で運ばれ、そのコントローラのプロセッサは、当該コントローラの中のキューからバッファへとデータを読み出し、メモリの中に格納されているファームウェア・コードを呼び出して、バッファの中でそのデータを処理し、処理されたデータをルータに返送する。
【００４１】
ステップS204:コントローラによって送信される処理されたデータを受信する。
【００４２】
格納されているファームウェア・コードに従ってデータを処理した後に、コントローラはルータにデータを返送し、そのルータは、コントローラによって送信される処理されたデータを受信する。
【００４３】
ステップS205:第2のデバイスに処理されたデータを送信する。
【００４４】
ルータは、処理されたデータを第2のデバイスに送信する。本実施形態において、第2のデバイス又は第1のデバイスは、I/Oデバイスである。すなわち、第1のデバイスがCPUである場合には、第2のデバイスはI/Oデバイスであり、又は第1のデバイスがI/Oデバイスである場合には、第2のデバイスはCPUである。データがCPUによってI/Oデバイスに送信されるか、又はI/OデバイスによってCPUに送信されるかにかかわらず、本発明の技術的解決方法は適用可能である。
【００４５】
上記の複数のステップに関する記載からわかるように、コントローラは、異なるコードをロードして、複数の異なる機能を実装することが可能である。すなわち、コントローラの機能は変更可能であり、ルータの中に格納されているI/Oデバイスとコントローラとの間の対応関係は、I/Oデバイスの機能的要求が変化するのに従って、修正することができる。したがって、上記のルータ及びコントローラを含むI/Oチップセットは、複数の異なる機能を実装することが可能であり、I/Oチップセットは、きわめて柔軟に実装されうる。
【００４６】
図4は、本発明に従った制御方法の実施形態2の概略的なフローチャートである。具体的には、本実施形態に従った方法は、以下のステップを含む。
【００４７】
ステップS401:コントローラは、データを受信し、そのコントローラの中に格納されているファームウェア・コードに従ってデータを処理する。
【００４８】
コントローラの構造については、図3を参照してもよい。具体的には、コントローラは、受信したデータをキューの中に格納し、コントローラのプロセッサは、そのコントローラの中のキューからバッファへとデータを読み出し、メモリの中に格納されているファームウェア・コードを呼び出して、バッファの中でデータを処理する。
【００４９】
ルータを含む適用のシナリオの場合には、コントローラは、ルータからデータを受信する。ルータを含まない適用のシナリオの場合には、コントローラは、第1のデバイスからデータを受信する。第1のデバイスは、CPU又はI/Oデバイスであってもよく、第1のデバイスがCPUである場合には、第2のデバイスはI/Oデバイスであり、第1のデバイスがI/Oデバイスである場合には、第2のデバイスはCPUである。
【００５０】
コントローラの中に格納されているファームウェア・コードに関して、ファームウェア・コードは、通常、システムが起動する際に、BIOS又はOSによってコントローラにロードされるということに留意すべきである。さらに、コントローラのファームウェア・コードは、I/Oデバイスの機能的要求に従って修正されてもよい。ファームウェア・コードが、いつ、どのようにして修正されるかに関する情報のために、図2に示されている実施形態の中の詳細な説明が参照されてもよく、それらの詳細はここでは説明されない。
【００５１】
ステップS402:データが第1のデバイスから受信される場合に、コントローラは、第2のデバイスにその処理されたデータを送信し、データがルータを使用して第1のデバイスから受信される場合に、コントローラは、ルータにその処理されたデータを送信し、それによってルータがその処理されたデータを第2のデバイスに送信するようにする。
【００５２】
すなわち、ルータを含まないシナリオの場合には、データを処理した後に、コントローラが、その処理されたデータを直接第2のデバイスに送信する。ルータを含むシナリオの場合には、データを処理した後、コントローラが、その処理されたデータをルータに返送し、そして、ルータが、その処理されたデータを第2のデバイスに送信する。
【００５３】
本発明の本実施形態において、コントローラはデータを受信し、そのコントローラの中に格納されているファームウェア・コードに従ってデータを処理する。データが第1のデバイスから受信される場合に、コントローラは、処理されたデータを第2のデバイスに送信し、又はデータがルータを使用して第1のデバイスから受信される場合に、コントローラは、処理されたデータをルータに送信し、それによってルータがその処理されたデータを第2にデバイスに送信するようにする。本発明の本実施形態においては、ファームウェア・コードは、通常、プログラム可能であり、したがって、上記の制御方法を適用する（具体的には、I/Oチップセットであってもよい）制御デバイスを比較的柔軟に実装することが可能である。
【００５４】
図5は、本発明に従った制御デバイスの1つの実施形態の概略的な構造的ブロック図である。本実施形態において、制御デバイスは、コンピュータの中のI/Oチップセットに配置される。構造に関しては、本実施形態の制御デバイスは、ルータ501と少なくとも2つのコントローラ502とを含む。図5においては、4つのコントローラのみが示されている。コントローラの具体的な数量は、実際の適用に応じて設定してもよく、本発明では限定されない。制御デバイスの中のルータは、第1のデバイスによって送信されるデータを受信するように構成され、そのデータは、I/Oデバイスの識別子を運んでいる。ルータは、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係及びI/Oデバイスの識別子に従って、少なくとも2つのコントローラのうちのそのI/Oデバイスの識別子に対応している1つのコントローラを決定し、そのI/Oデバイスの識別子に従ってその1つのコントローラにデータを送信する。そのI/Oデバイスの識別子に対応する1つのコントローラは、その1つのコントローラの中に格納されているファームウェア・コードに従ってデータを処理して、処理されたデータを取得し、その処理されたデータをルータに送信する。ルータは、さらに、その処理されたデータを第2のデバイスに送信するように構成される。第2のデバイス又は第1のデバイスは、I/Oデバイスである。
【００５５】
図3は、図5に示されている実施形態に従ったいずれかのコントローラの概略的な構造的ブロック図である。図3を参照すると、コントローラは、メモリと、バッファと、キューと、プロセッサとを含み、メモリは、ファームウェア・コードを格納するように構成され、キューは、ルータによって送信されるデータを受信するのに使用され、バッファは、プロセッサによってコントローラの中のキューから読みだされるデータを格納するのに使用され、プロセッサは、メモリの中に格納されているファームウェア・コードを呼び出して、バッファの中でデータを処理し、処理されたデータを取得し、その処理されたデータをルータに送信するように構成される。コントローラの具体的なワークフローについては、図2に示されている方法の実施形態に中の詳細な記載を参照してもよく、それらの詳細は、ここでは説明されない。
【００５６】
上記の実施形態においては、複数の異なるコントローラが、ファームウェア・コードを格納するのに1つのメモリを共有してもよく、プロセッサは、対応するファームウェア・コードを呼び出してもよい。
【００５７】
上記の実施形態において、ルータは、さらに、I/Oデバイスの機能的要求及び少なくとも2つのコントローラによって実装される機能に従って、複数のI/Oデバイスと複数のコントローラとの間の複数の対応関係を確立するように構成される。具体的な確立方法については、図2に示されている方法の実施形態の中の詳細な記載を参照してもよく、それらの詳細は、ここでは説明されない。
【００５８】
上記の実施形態においては、コントローラは、さらに、BIOS又はOSによってロードされるファームウェア・コードを受信するように構成される。詳細な実装については、図2に示されている方法の実施形態の中の詳細な記載を参照してもよく、それらの詳細は、ここでは説明されない。
【００５９】
上記の実施形態においては、ルータは、さらに、I/Oデバイスの機能的要求に従って、I/Oデバイスとコントローラとの間の対応関係を修正するように構成されるルータ・プログラミング・インターフェイスを含む。対応関係が、いつ、どのようにして修正されるかに関する情報のために、図2に示されている実施形態の中の詳細な説明が参照されてもよく、それらの詳細はここでは説明されない。
【００６０】
上記の実施形態においては、コントローラは、さらに、I/Oデバイスの機能的要求に従って、コントローラのファームウェア・コードを修正するように構成されるコントローラ・プログラミング・インターフェイスをさらに含む。ファームウェア・コードが、いつ、どのようにして修正されるかに関する情報のために、図2に示されている実施形態の中の詳細な説明が参照されてもよく、それらの詳細はここでは説明されない。
【００６１】
本発明において提供される制御デバイスによれば、上記の記載から理解できるように、制御デバイスのコントローラは、異なるファームウェア・コードをロードして、複数の異なる機能を実装することが可能であり、制御デバイスのルータに格納される対応関係は、ユーザの要求が変化するのに従って修正されることが可能である。したがって、制御デバイスを含むI/Oチップセットは、要求に従って複数の異なる機能を実装することが可能であり、I/Oチップセットは、きわめて柔軟に実装されうる。
【００６２】
本発明の技術分野の当業者は、方法の実施形態の複数のステップのうちのいくつか又はすべてが、プログラム命令に関連するハードウェアによって実装されてもよいということを理解することができる。プログラムは、コンピュータ読み取り可能な記憶媒体に格納されていてもよい。プログラムが実行されると、方法の実施形態の複数のステップが実行される。上記の記憶媒体は、プログラム・コードを格納することができるROM、RAM、磁気ディスク、又は光ディスク等のいずれかの媒体を含む。
【００６３】
最後に、上記の複数の実施形態は、本発明の技術的解決方法を説明するように意図されているにすぎず、本発明を限定するように意図はされていないということに留意すべきである。本発明は、上記の複数の実施形態を参照して詳細に説明されるが、本発明の技術分野の当業者であれば、本発明の複数の実施形態の技術的解決方法の範囲から離れることなく、上記の複数の実施形態において説明される技術的解決方法にさらに変更を加え、又は上記の複数の実施形態の複数の技術的特徴のうちのいくつか又はすべてに対して等価な置換を行うことができるということを、当業者は理解すべきである。
【図１】
0006479045.tif 000002
【図２】
0006479045.tif 000003
【図３】
0006479045.tif 000004
【図４】
0006479045.tif 000005
【図５】
0006479045.tif 000006