(57)【要約】      （修正有）【課題】１つ以上のＩ／Ｏリソースをシステムオンチップ（ＳｏＣ）上の計算サブシステムにステアリングする。【解決手段】システム３００において、ＳｏＣは、複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステム及び複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムを含む。ステアリングエンジンは、第１Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングし、第２Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングする。【選択図】図３
2020035453.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムと通信するように構成されるシステムオンチップ（ＳｏＣ）であり、
複数の計算サブシステムと、
複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステムと、
前記第１Ｉ／Ｏサブシステムに連結されるＩ／Ｏステアリングエンジンであり、前記複数の第１Ｉ／Ｏリソースの少なくとも１つを前記複数の計算サブシステムにある１つ以上の計算サブシステムに導くように構成される、前記Ｉ／Ｏステアリングエンジン
とを備える、前記ＳｏＣ。
【請求項２】
前記ＳｏＣは複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数の第２Ｉ／Ｏリソースの少なくとも１つを前記複数の計算サブシステムにある前記１つ以上の計算サブシステムに導くようにさらに構成される、請求項１に記載のＳｏＣ。
【請求項３】
前記ＳｏＣは１つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記アクセラレータの少なくとも１つを前記複数の計算サブシステムにある前記１つ以上の計算サブシステムに導くようにさらに構成される、先行請求項のいずれかに記載のＳｏＣ。
【請求項４】
前記ＳｏＣは管理計算サブシステムをさらに備え、前記管理計算サブシステムは前記Ｉ／Ｏステアリングエンジンにステアリング構成を提供するように構成される、先行請求項のいずれかに記載のＳｏＣ。
【請求項５】
前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、先行請求項のいずれかに記載のＳｏＣ。
【請求項６】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導き、前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、請求項５に記載のＳｏＣ。
【請求項７】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、請求項５または６に記載のＳｏＣ。
【請求項８】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導くように構成される、請求項５〜７のいずれかに記載のＳｏＣ。
【請求項９】
前記Ｉ／Ｏステアリングエンジンはネットワーク計算サブシステムキャッシュコヒーレントファブリックを介して前記ネットワーク計算サブシステムに連結され、サーバ計算サブシステムキャッシュコヒーレントファブリックを介して前記サーバ計算サブシステムに連結される、請求項５〜８のいずれかに記載のＳｏＣ。
【請求項１０】
前記ＳｏＣは複数のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数のアクセラレータの１つ以上を前記ネットワーク計算サブシステムに導き、前記複数のアクセラレータの１つ以上を前記サーバ計算サブシステムに導くようにさらに構成される、請求項５〜９のいずれかに記載のＳｏＣ。
【請求項１１】
前記第１Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、先行請求項のいずれかに記載のＳｏＣ。
【請求項１２】
前記第２Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、先行請求項のいずれかに記載のＳｏＣ。
【請求項１３】
システムオンチップ（ＳｏＣ）にあるＩ／Ｏリソースをステアリングする方法であり、
複数の計算サブシステムにある１つ以上の計算サブシステムをアクティブ化することと、
第１Ｉ／Ｏサブシステムにある複数の第１Ｉ／Ｏリソースの少なくとも１つを前記１つ以上の計算サブシステムにステアリングするために、及び第２Ｉ／Ｏサブシステムにある複数の第２Ｉ／Ｏリソースの少なくとも１つを前記１つ以上の計算サブシステムにステアリングするためにステアリング構成を決定することと、
前記第１Ｉ／Ｏサブシステム及び前記第２Ｉ／Ｏサブシステムに連結されたＩ／Ｏステアリングエンジンに前記ステアリング構成を提供することと
を備える、前記方法。
【請求項１４】
前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、請求項１３に記載の方法。
【請求項１５】
前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上は前記ネットワーク計算サブシステムにステアリングされる、請求項１４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
多数の組織及び企業が複数の通信ネットワーク上でコンピューティングサービスを提供する。例えば、コンピューティングサービスは、インターネット上で様々なクライアントに提供可能なウェブストレージまたは仮想サーバなどのウェブサービスを含み得る。いくつかの例では、仮想サーバは必要に応じてクライアントに貸し出され得る。
【０００２】
一般的に、システムは種々の異なる機能を行うための複数のサブシステムを含み得る。大半の例では、各サブシステムは固定のコンピューティングリソース及びＩ／Ｏリソースを利用して目的の機能を行い得る。ゆえに、各サブシステムのＩ／Ｏ帯域幅は割り当てられたＩ／Ｏリソースに限定され得る。このため、各サブシステムは割り当てられたコンピューティングリソース及びＩ／Ｏリソースに基づいた性能レベルを提供することに限定され得る。
【０００３】
本開示による種々の実施形態が図面を参照して説明される。
【図面の簡単な説明】
【０００４】
【図１】本開示技術のいくつかの実施形態による、複数の計算サブシステムを備えるシステムのブロック図を例示する。
【図２】本技術のいくつかの実施形態による、システムのブロック図を例示する。
【図３】本技術のある特定の実施形態による、システムオンチップ（ＳｏＣ）のハイレベルブロック図を例示する。
【図４Ａ】本技術のある特定の実施形態による、両方の計算サブシステムにアクセラレータをステアリングすることを含むように構成されるＳｏＣを含む、システム例を例示する。
【図４Ｂ】本技術のある特定の実施形態による、ネットワーク計算サブシステムのみにアクセラレータをステアリングすることを含むように構成されるＳｏＣを含む、システム例を例示する。
【図４Ｃ】本技術のある特定の実施形態による、サーバ計算サブシステムのみにアクセラレータをステアリングすることを含むように構成されるＳｏＣを含む、システム例を例示する。
【図５】本技術のある特定の実施形態による、サーバ計算サブシステムのみを含むように構成されるＳｏＣを伴うシステム例を例示する。
【図６】本技術のある特定の実施形態による、ネットワーク計算サブシステムのみを含むように構成されるＳｏＣを伴うシステム例を例示する。
【図７】本技術のある特定の実施形態による、Ｉ／Ｏサブシステムに対するブロック図を例示する。
【図８】本技術のある特定の実施形態による、Ｉ／Ｏステアリングエンジンのブロック図を例示する。
【図９】本技術のある特定の実施形態による、管理計算サブシステムのブロック図を例示する。
【図１０】本開示技術のいくつかの実施形態による、アクセラレータサブシステムに対するブロック図を例示する。
【図１１】本技術のある特定の実施形態による、第１Ｉ／Ｏサブシステムのブロック図を例示する。
【図１２】本技術のある特定の実施形態による、第２Ｉ／Ｏサブシステムのブロック図を例示する。
【図１３】本技術のある特定の実施形態による、共有リソースサブシステムのブロック図を例示する。
【図１４】本技術のある特定の実施形態によるフロー図を例示する。
【図１５】少なくとも１つの実施形態例による、１つ以上のネットワークを介して接続される１つ以上のサービスプロバイダコンピュータ及び／またはユーザデバイスを含む、本明細書に記載の機能及びシステムに対するアーキテクチャ例を例示する。
【図１６】種々の実施形態が実装可能な環境を例示する。
【発明を実施するための形態】
【０００５】
以下の説明では、種々の実施形態が記載される。説明の目的上、実施形態の十分な理解を提供するために、特定の構成及び詳細が記載される。しかしながら、実施形態は特定の詳細を伴わずに実施され得ることが当業者には明らかであるだろう。さらに、記載されている実施形態を不明瞭にしないために、既知の特徴は省略または簡素化され得る。
【０００６】
一般的に、コンピューティングシステムはいくつかの異なる機能を行うために１つ以上の計算サブシステムを含み得る。場合によっては、システムは、複数のアプリケーションに対応するためにより多くのネットワーク帯域幅を必要とし得る、多数の仮想サーバインスタンスを実行している場合がある。しかしながら、大半の例では、各計算サブシステムは固定数の計算リソース及びＩ／Ｏリソースを含み得る。ゆえに、各計算サブシステムは割り当てられたＩ／Ｏリソースに基づいた性能レベルを提供することに限定され得る。場合によっては、システム上のＩ／Ｏリソースを効率的に使用することができない。例えば、計算サブシステムが作動しない場合、その計算サブシステムに割り当てられたＩ／Ｏリソースは他の計算サブシステムに使用することができない。これにより、結果的にシステムレベルでＩ／Ｏリソースを十分に利用できない場合がある。
【０００７】
本開示技術の実施形態は１つ以上のＩ／Ｏリソースをシステムオンチップ（ＳｏＣ）上の２つ以上の計算サブシステムにステアリングすることを提供できる。例えば、ＳｏＣはホストシステム（例えば、ｘ８６サーバ）に通信可能に連結され、トラフィック監視、トラフィックシェーピング、コンピューティング等などの種々のサービスを提供し得る。いくつかの実施形態では、ＳｏＣは種々の機能を行うための複数の計算サブシステムを含み得る。例えば、ある特定の実施形態によると、ＳｏＣは、計算サービスを提供するためのサーバ計算サブシステムならびにホストシステム及びサーバサブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステムを含み得る。ＳｏＣは複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステム及び複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムを含み得る。本開示技術の実施形態では、ステアリングエンジンは、第１Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングし、第２Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングするように構成され得る。例えば、ＳｏＣは、様々な計算サブシステムの再構成を必要とし得る様々な機能（例えば、高性能ネットワーキング、高性能計算等）を行うための様々な構成で構成され得る。本開示技術の実施形態は、各構成に必要なＩ／Ｏリソースに適合するよう、Ｉ／Ｏリソースを様々なサブシステムに適宜にステアリングできる。これにより、各計算サブシステムはＩ／Ｏリソースをより効率的に使用することができ、システムのスループットが増加する。
【０００８】
コンピュータネットワークは、通常、データをホストし複数のクライアントまたは組織にサービスを提供できる複数のサーバを含み得る。例えば、サーバは、クラウドコンピューティング、解析、ウェブサービス、ストレージ、データベース、アプリケーション、展開サービス等などのサービスを潜在的により多くのクライアントコンピュータに提供できる。クライアントまたは組織はこれらのサービスまたはデータを使用し、ストレージ、データ処理及び管理、ウェブ及びモバイルアプリケーション、アーカイブならびに多数の他のタスクなどの多様なワークロードを供給できる。一般的に、クライアントはサーバにサービスまたはデータを要求し、サーバは、ネットワーク上で要求に対応する及び／またはデータを提供するある特定のタスクを実行することにより、応答する。ネットワークトラフィックは、ある特定の時間にサービスを要求するクライアントの数、サーバの容量等などの多数の要因に応じて変わり得る。
【０００９】
場合によっては、ネットワークシステムはトラフィックを規制し帯域幅の混雑を最小化するためにネットワークトラフィックを監視できる。例えば、ネットワークシステムは、ウェブサービスを様々なクライアントに提供するホストシステム（例えば、ｘ８６サーバ）に通信可能に連結され得る。ネットワークシステムは１つ以上のプロセッサコア、キャッシュ、ネットワーク高速化論理、メモリコントローラ及びＩ／Ｏサブシステム等を含み得る。いくつかの実施形態では、ネットワークシステムは、サーバ（例えば、ホストシステム）により供給されるウェブサービスに関連する、トラフィックシェーピング、ネットワークストレージ処理等などの他の機能をさらに行い得る。場合によっては、ネットワークシステムの機能性は、ホストシステムに通信可能に連結され得るシステムオンチップ（ＳｏＣ）上にネットワーク計算サブシステムとして実装され得る。例えば、ＳｏＣはプラグインカードを使用して、またはホストシステムのマザーボード上にはんだ付けされることにより、ホストシステム（例えば、１つ以上のサーバ）に連結できる。
【００１０】
いくつかの実施形態では、ＳｏＣは、ネットワーク計算サブシステムに加えて、サーバ計算サブシステム及び管理計算サブシステムをさらに含み得る。例えば、サーバ計算サブシステムは計算サービスを提供するように構成されてよく、管理計算サブシステムはネットワーク計算サブシステム及びサーバ計算サブシステムに対するリソースを管理するよう
に構成されてよい。場合によっては、ネットワーク計算サブシステム及びサーバ計算サブシステムは固定リソースを含み得る。例えば、リソースは、処理リソース（例えば、プロセッサコア）、メモリリソース（例えば、（例えば、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、レベル３（Ｌ３）キャッシュまたはラストレベルキャッシュ、メモリコントローラ、メモリチャネル等）及びＩ／Ｏリソース（例えば、周辺デバイス、ネットワークインターフェース及びバスインターフェース）を含み得る。
【００１１】
一般的に、ＳｏＣ上の各計算サブシステムは固定数の処理リソース及びメモリリソースで設計され得る。大半の例では、固定数のＩ／Ｏリソースがハードウェア設計により各計算サブシステムに割り当てられ得る。ある特定の例では、ＳｏＣが非対称の計算サブシステムを含む（例えば、１つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する）ように構成される場合、各計算サブシステムはその割り当てられたＩ／Ｏリソースに制限され得る。したがって、ＳｏＣにより提供されるネットワーク帯域幅及びサーバ帯域幅は、各計算サブシステムに対する固定Ｉ／Ｏ帯域幅に制限され得る。
【００１２】
さらに、場合によっては、Ｉ／Ｏリソースの一部はＳｏＣの構成に基づき、結果的に十分に利用されていない場合がある。例えば、ＳｏＣがサーバ計算サービスのみを提供するように構成される場合、ネットワークＩ／Ｏリソースは利用できない。同様に、ＳｏＣがネットワーク計算サービスのみを提供するように構成される場合、サーバＩ／Ｏリソースは利用できない。このため、ＳｏＣのＩ／Ｏ帯域幅が効率的に利用できず、ゆえにシステムのスループットが減少する。
【００１３】
本開示技術の実施形態はＩ／Ｏリソースをシステムオンチップ（ＳｏＣ）上の２つ以上の計算サブシステムにステアリングすることを提供できる。いくつかの実施形態では、計算サブシステムは１つ以上の処理コアを伴うサブシステムを含み得る。ＳｏＣはホストシステム（例えば、ｘ８６サーバ）に通信可能に連結され、トラフィック監視、トラフィックシェーピング、コンピューティング等などの種々のサービスを提供し得る。本技術のいくつかの実施形態では、ＳｏＣは、計算サービスを提供するためのサーバ計算サブシステム、ホストシステム及びサーバ計算サブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステム、リソースを管理するための管理計算サブシステム、複数の第１Ｉ／Ｏリソースを伴う第１Ｉ／Ｏサブシステム、複数の第２Ｉ／Ｏリソースを伴う第２Ｉ／Ｏサブシステム、複数のアクセラレータを備えるアクセラレータサブシステムなどの複数のサブシステムを含み得る。ある特定の実施形態では、単一のＩ／Ｏサブシステムはネットワーク計算サブシステム及びサーバ計算サブシステムに対するＩ／Ｏ要求を管理するために使用され得る。
【００１４】
本技術のある特定の実施形態では、Ｉ／Ｏステアリングエンジンは、複数の第１Ｉ／Ｏリソースの少なくとも１つを、サーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングし、複数の第２Ｉ／Ｏリソースの少なくとも１つを、サーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングするように構成され得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジンは、管理計算サブシステムにより提供されるステアリング構成に基づいて、Ｉ／Ｏリソースをステアリングし得る。いくつかの実施形態では、管理計算サブシステムは、１つ以上のＩ／Ｏリソースを起動時にまたは実行時に動的にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジンに提供し得る。Ｉ／Ｏステアリングエンジンは第１Ｉ／Ｏサブシステム、第２Ｉ／Ｏサブシステム、ネットワーク計算サブシステム及びサーバ計算サブシステムに連結され得る。ある特定の例では、ＳｏＣが非対称の計算サブシステムを含む（例えば、１つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する）ように構成される場合、Ｉ／Ｏステアリングエンジンは適切なＩ／Ｏリソース
を各計算サブシステムにステアリングする柔軟性を提供し得る。いくつかの他の例では、ＳｏＣがネットワーキングのみのサービスを提供するように構成される場合、Ｉ／Ｏステアリングエンジンは第１及び第２Ｉ／Ｏリソースの両方をネットワーク計算サブシステムにステアリングしてよく、ＳｏＣがサーバ計算のみのサービスを提供するように構成される場合、Ｉ／Ｏステアリングエンジンは第１及び第２Ｉ／Ｏリソースの両方をサーバ計算サブシステムにステアリングしてよい。本技術のある特定の実施形態では、Ｉ／Ｏステアリングエンジンはアクセラレータの少なくとも１つをサーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングするようにさらに構成され得る。例えば、場合によっては、ＳｏＣがネットワーキングのみのサービスを提供するように構成される場合、Ｉ／Ｏステアリングエンジンは全てのＩ／Ｏリソース及びアクセラレータをネットワーク計算サブシステムにステアリングし得る。
【００１５】
本開示技術のある特定の実施形態によると、管理計算サブシステムは、Ｉ／Ｏリソース及びアクセラレータを適切な計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジンに提供し得る。いくつかの実施形態では、管理計算サブシステムは、ネットワーク計算サブシステムとサーバ計算サブシステムの両方が作動可能であると判定し得、第１Ｉ／Ｏリソースをネットワーク計算サブシステムにステアリングするため、及び第２Ｉ／Ｏリソースをサーバ計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジンに提供してよい。いくつかの実施形態では、管理計算サブシステムは、両方の計算サブシステムへの処理リソース及びメモリリソースの割り当てを基に、ステアリング構成を両方の計算サブシステムに提供し得る。ある特定の実施形態では、管理計算サブシステムはサーバ計算サブシステムが作動できないと判定し得、第１Ｉ／Ｏリソース及び第２Ｉ／Ｏリソースをネットワーク計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジンに提供してよい。ある特定の実施形態では、管理計算サブシステムはネットワーク計算サブシステムが作動できないと判定し得、第１Ｉ／Ｏリソース及び第２Ｉ／Ｏリソースをサーバ計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジンに提供してよい。いくつかの実施形態では、第１Ｉ／Ｏリソース及び第２Ｉ／Ｏリソースのステアリング構成は、デフォルト構成に基づいてよい。いくつかの実施形態では、管理計算サブシステムは、ハードウェア構成（例えば、ピンまたはヒューズ）またはソフトウェア構成（例えば、ソフトウェアレジスタのデータフィールド）に基づき、起動時に、第１Ｉ／Ｏリソース及び第２Ｉ／Ｏリソースのステアリング構成を決定してよい。いくつかの実施形態では、管理計算サブシステムは、ステアリング構成を動的に決定し、実行時にＩ／Ｏステアリングエンジンに提供してよい。例えば、管理計算サブシステムはネットワーク計算サブシステムがサーバ計算サブシステムと比べてより多くの計算リソースをある特定の時間に利用していると判定し得る。ゆえに、いくつかの実装では、管理計算サブシステムは、ネットワーク計算サブシステムにより利用される計算リソースに適合する適切なＩ／Ｏリソースをネットワーク計算サブシステムにステアリングするために、ステアリング構成を動的に更新してよい。キャッシュコヒーレントファブリックブリッジは構成された各Ｉ／Ｏリソースを計算サブシステムに関連し得る物理層にマッピングできる。
【００１６】
典型的なＳｏＣは単一のチップに統合されたシステムの機能性を含み得る。例えば、ＳｏＣはマルチプロセッサコア、揮発性及び不揮発性のメモリモジュール、メモリコントローラ、１つ以上の内部バス、標準インターフェース、周辺装置、電圧レギュレータ、電源管理回路、発振回路及び位相同期回路などのタイミングリソース等を含むことがある。複数のチップの機能性を単一チップに実装することで製造コスト及び組立コストを削減できる。さらに、ＳｏＣは一般的、により少ない占有面積及び空間要件を有する。したがって、ＳｏＣの実装は一般的に、同じ機能性を実装するマルチチップシステムに比べて、電力の消費がより少なく、費用効果がより高い。
【００１７】
本開示技術の実施形態はＩ／ＯリソースをＳｏＣ上の２つ以上の計算サブシステムにステアリングする柔軟性を提供できる。ＳｏＣ上のＩ／Ｏリソースをより良く利用する能力により、種々の計算サービスに対してホストシステムにより提供されるネットワーク及びストレージ帯域幅を結果的に改善できる。
【００１８】
本開示技術の実施形態はＳｏＣ上の２つの計算サブシステム間でＩ／Ｏリソースをステアリングするよう記載及び示されているが、本開示技術の態様は２つの計算サブシステム間のみでＩ／Ｏリソースをステアリングすることに限定されない。例えば、いくつかの実装では、本開示技術の範囲を逸脱することなく、Ｉ／ＯリソースはＳｏＣ上の複数（例えば、３つ以上）の計算サブシステム間にステアリングされ得る。
【００１９】
図１は、本明細書に記載の実施形態を行うために使用可能なシステム例１００を例示する。一般的に、ＳｏＣは複数のＩ／Ｏリソースを備えるＩ／Ｏサブシステムを含むことができる。複数のＩ／Ｏリソースの１つ以上は、Ｉ／Ｏステアリングエンジンを使用して複数の計算サブシステムにステアリングできる。
【００２０】
図１は、ホストシステム１０４と通信するように構成されるＳｏＣ１０２を例示する。場合によっては、ホストシステム１０４は複数のクライアントにマルチテナントプラットフォームを提供し得る。例えば、ホストシステム１０４はクラウドコンピューティング、クラウドストレージ、解析、ウェブサービス、データベース、アプリケーション、展開サービス、ウェブサイト運用等などのサービスを様々なクライアントに提供し得る。ホストシステム１０４は、サーバ、例えばｘ８６サーバを含み得る。いくつかの実施形態では、ホストシステム１０４の１つ以上のプロセッサはＳｏＣ１０２上のソケットに接続され得る。
【００２１】
ＳｏＣ１０２は、第１計算サブシステム１０６、第２計算サブシステム１０８及び第Ｎ計算サブシステム１１０などの複数の計算サブシステムを含み得る。例えば、場合によっては、複数の計算サブシステムは２つ以上の計算サブシステムを含み得る。ＳｏＣ１０２は、Ｉ／Ｏサブシステム１１４及びＩ／Ｏステアリングエンジン１１２をさらに含み得る。Ｉ／Ｏサブシステム１１４はインターフェース１１６を使用してホストシステム１０４と通信し得る。インターフェース１１６はペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）などの標準インターフェースに基づき得る。
【００２２】
いくつかの実施形態では、第１計算サブシステム１０６はネットワーク計算サブシステムとして構成されてよく、第２計算サブシステム１０８はサーバ計算サブシステムとして構成されてよい。例えば、第１計算サブシステム１０６はホストシステム１０４に対するネットワークトラフィックを少なくとも管理するように構成され得る。いくつかの実施形態では、第１計算サブシステム１０６はネットワークトラフィックシェーピング、ネットワーク高速化、ネットワークストレージ処理等などのネットワーク関連機能を行い得る。いくつかの実施形態では、第２計算サブシステム１０８は計算サービスを提供するように構成され得る。例えば、計算サービスは、種々のサイズの仮想マシンインスタンスの起動、ストレージ容量の仮想マシンへの関連付け、データ処理等を含み得る。
【００２３】
Ｉ／Ｏサブシステム１１４は複数のＩ／Ｏリソースを含み得る。いくつかの実施形態では、複数のＩ／Ｏリソースは内部及び外部通信用のＩ／Ｏデバイス及び種々のＩ／Ｏインターフェースを含み得る。例えば、Ｉ／Ｏサブシステム１１４は１つ以上のＥｔｈｅｒｎｅｔ  ＭＡＣ（媒体アクセス制御）、ＰＣＩｅデバイス、ＵＡＲＴ（汎用非同期送受信回路）、Ｉ２Ｃ（インターインテグレイティドサーキット）、ＧＰＩＯ（汎用入出力）、ＳＡＴＡ（シリアルＡＴＡ）コントローラ、ＳＰＩ（シリアルペリフェラルインターフェース）ポート及び任意の他の適切なデバイスを含み得る。
【００２４】
Ｉ／Ｏステアリングエンジン１１２は複数のＩ／Ｏリソースの少なくとも１つを複数の計算サブシステムにある１つ以上の計算サブシステムにステアリングまたは導くように構成され得る。例えば、いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２はＩ／Ｏリソースの１つ以上を第１計算サブシステム１０６に、第２計算サブシステム１０８に、または第１計算サブシステム１０６と第２計算サブシステム１０８の両方にステアリングするように構成され得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジンはステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を含み得る。しかしながら、Ｉ／Ｏステアリングエンジンの他の実装が可能である。
【００２５】
図２は、本明細書に記載の実施形態を行うために使用可能なシステム例２００を例示する。一般的に、ＳｏＣは、Ｉ／Ｏステアリングエンジンを使用してネットワーク計算サブシステムまたはサーバ計算サブシステムにステアリングできる複数のＩ／Ｏリソースを備えるＩ／Ｏサブシステムを含むことができる。
【００２６】
図２は、図１を参照して論述したインターフェース１１６を介して、ホストシステム１０４と通信するように構成されるＳｏＣ１０２を例示する。ＳｏＣ１０２はネットワーク計算サブシステム２０２、サーバ計算サブシステム２０４、Ｉ／Ｏサブシステム１１４、Ｉ／Ｏステアリングエンジン１１２及び管理計算サブシステム２０６を含み得る。いくつかの実施形態では、図１を参照して論述した通り、ネットワーク計算サブシステム２０２は第１計算サブシステム１０６であってよく、サーバ計算サブシステム２０４は第２計算サブシステム１０８であってよい。
【００２７】
ネットワーク計算サブシステム２０２はネットワークトラフィックシェーピング、ネットワーク高速化、ネットワークストレージ処理等などのネットワーク関連機能を提供するように構成され得る。いくつかの実施形態では、ネットワーク計算サブシステム２０２はネットワークインターフェースコントローラ（ＮＩＣ）またはネットワークコプロセッサの少なくとも一部の機能を含み得る。ある特定の実施形態では、ネットワーク計算サブシステム２０２は、例えば、課金、レート、トラフィックシェーピング、暗号化、チョーキング等のホストシステム１０４が供給するウェブサービスに関連する一部の機能を含み得る。
【００２８】
サーバ計算サブシステム２０４は、例えば、仮想リソースまたは物理リソースの計算サービスをホストシステム１０４に提供するように構成され得る。例えば、計算サービスは、種々のサイズの仮想マシンインスタンスの起動、仮想マシンへのストレージ容量の関連付け等を要求に応じて含み得る。いくつかの実施形態では、サーバ計算サブシステム２０４はホストシステム１０４の一部の作業負荷をオフロードするために使用され得る。場合によっては、ホストシステム１０４はサーバ計算サブシステム２０４と共に高性能の計算サービスを提供し得る。例えば、ホストシステム１０４はターンアラウンドタイムが短いサービスの処理に集中してよく、低性能の作業負荷をサーバ計算サブシステム２０４にオフロードしてよく、これによりシステムのスループットを増加させる。
【００２９】
Ｉ／Ｏサブシステム１１４は複数のＩ／Ｏリソースを含み得る。本開示技術の実施形態では、複数のＩ／Ｏリソースはシステムのスループット要件に適合するよう、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４により使用され得る。いくつかの実施形態では、複数のＩ／Ｏリソースは内部及び外部通信用の周辺デバイス及び種々のＩ／Ｏインターフェースを含み得る。例えば、Ｉ／Ｏサブシステム１１４は、ホストシステム１０４と通信するための第１インターフェース（例えば、インターフェース１１６）、Ｉ／Ｏステアリングエンジン１１２と通信するための第２インターフェース及びネットワークと通信するための第３インターフェース（例えば、インターネット、イント
ラネット）を含み得る。いくつかの実施形態では、Ｉ／Ｏサブシステム１１４はさらに、Ｅｔｈｅｒｎｅｔ  ＭＡＣ（媒体アクセス制御）、ＰＣＩｅデバイス、ＵＡＲＴ（汎用非同期送受信回路）、Ｉ２Ｃ（インターインテグレイティドサーキット）、ＧＰＩＯ（汎用入出力）、ＳＡＴＡ（シリアルＡＴＡ）コントローラ、ＳＰＩ（シリアルペリフェラルインターフェース）ポート及び任意の他の適切な周辺デバイスなどの１つ以上のＩ／Ｏデバイスを含み得る。
【００３０】
いくつかの実施形態では、Ｉ／Ｏサブシステム１１４は、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングできる１つ以上のＳＡＴＡコントローラ、Ｅｔｈｅｒｎｅｔ  ＭＡＣ、ＰＣＩｅデバイス、ＳＥＲＤＥＳ  Ｉ／Ｏマルチプレクサ、ＧＰＩＯ、ＵＡＲＴ等などのＩ／Ｏリソースプールを含み得る。一実施形態では、Ｉ／Ｏサブシステム１１４の全てのリソースをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングできる。別の実施形態では、ステアリングはデバイスごとに行うことができる。例えば、Ｉ／Ｏデバイスの第１セットはネットワーク計算サブシステム２０２にステアリングされてよく、Ｉ／Ｏデバイスの第２セットはサーバ計算サブシステム２０４にステアリングされてよく、Ｉ／Ｏデバイスの第３セットはネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方にステアリングされてよい。いくつかの実施形態では、サーバ計算サブシステム２０４より多くの数のＩ／Ｏリソースがネットワーク計算サブシステム２０２にステアリングされてよく、逆も同様である。例えば、ＳｏＣ１０２の構成（例えば、高性能ネットワーキングまたは高性能計算サーバ）に応じて、計算サブシステムは、その計算サブシステムが利用する計算リソースに適合する、より多くの数のＩ／Ｏリソースを利用してよい。
【００３１】
いくつかの実施形態では、図３を参照して論述する通り、Ｉ／Ｏサブシステム１１４は第１Ｉ／Ｏサブシステム及び第２Ｉ／Ｏサブシステムを含み得る。例えば、第１Ｉ／Ｏサブシステムは、ネットワーク計算サブシステム２０２に対する複数の第１Ｉ／Ｏリソースを含んでよく、第２Ｉ／Ｏサブシステムはサーバ計算サブシステム２０４に対する複数の第２Ｉ／Ｏリソースを含んでよい。いくつかの実施形態では、第１Ｉ／Ｏサブシステムは第２Ｉ／Ｏサブシステムより多くのＩ／Ｏリソースを含んでよく、逆も同様である。例えば、ある例では、第１Ｉ／Ｏサブシステムは第２Ｉ／Ｏサブシステムと比べてより多くの数のＥｔｈｅｒｎｅｔ  ＭＡＣ及びＵＡＲＴを含んでよい。
【００３２】
Ｉ／Ｏステアリングエンジン１１２は複数のＩ／Ｏリソースの少なくとも１つをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするように構成され得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジンはステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を含み得る。しかしながら、Ｉ／Ｏステアリングエンジンの他の実装も可能である。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２は、管理計算サブシステム２０６が提供するステアリング構成に基づいて、Ｉ／Ｏリソースをステアリングし得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２が１つ以上の計算サブシステムにステアリングするＩ／Ｏリソースの数は動的に変化し得る。ある特定の例では、ＳｏＣ１０２が非対称の計算サブシステムを含む（例えば、１つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する）ように構成される場合、Ｉ／Ｏステアリングエンジン１１２は適切な数のＩ／Ｏリソースを各計算サブシステムにステアリングする柔軟性を提供し得る。例えば、ネットワーク計算サブシステム２０２がより多くの処理リソース及びメモリリソースを有する（例えば、ＳｏＣ１０２が高性能ネットワーキングサービスを提供するように構成される）場合、Ｉ／Ｏステアリングエンジン１１２は、ネットワーク計算サブシステム２０２のスループット要件に対して必要なＩ／Ｏリソースに適合するよう、適切な数のＩ／Ｏリソースをステアリングし得る。同様に、サーバ計算サブシステム２０４がより多くの処理リソース及びメモリリソースを有
する（例えば、ＳｏＣ１０２が高性能サーバコンピューティングサービスを提供するように構成される）場合、Ｉ／Ｏステアリングエンジン１１２は、サーバ計算サブシステム２０４のスループット要件に対して必要なＩ／Ｏリソースに適合するよう、適切な数のＩ／Ｏリソースをステアリングし得る。場合によっては、ＳｏＣ１０２がネットワーキングのみのサービスを提供するように構成される場合、Ｉ／Ｏステアリングエンジン１１２は全てのＩ／Ｏリソースをネットワーク計算サブシステム２０２にステアリングしてよく、ＳｏＣ１０２がサーバ計算のみのサービスを提供するように構成される場合、Ｉ／Ｏステアリングエンジン１１２は全てのＩ／Ｏリソースをサーバ計算サブシステム２０４にステアリングしてよい。
【００３３】
いくつかの実施形態では、管理計算サブシステム２０６は、ＳｏＣ１０２全体のコールド起動時に、最初に実行されるように構成され得る。いくつかの実施形態では、管理計算サブシステム２０６は、起動時にＳｏＣ１０２の構成を決定し得る。例えば、いくつかの実施形態では、ＳｏＣ１０２の構成は、計算サブシステムの構成ならびに各計算サブシステムに対する処理リソース及びメモリリソースの構成を含み得る。いくつかの実施形態では、管理計算サブシステム２０６は、ＳｏＣ１０２の構成を基にステアリング構成を決定し適切なＩ／Ｏリソースを１つの計算サブシステムまたは両方の計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供するように構成されてよい。例えば、管理計算サブシステム２０６は、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方が作動可能であると判定し得、Ｉ／Ｏサブシステム１１４にある適切な数のＩ／Ｏリソースをネットワーク計算サブシステム２０２にステアリングするために、及びＩ／Ｏサブシステム１１４にある適切な数のＩ／Ｏリソースをサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。場合によっては、管理計算サブシステム２０６はサーバ計算サブシステム２０４が作動できないと判定し得、複数のＩ／Ｏリソースの少なくとも１つをＩ／Ｏサブシステム１１４からネットワーク計算サブシステム２０２にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。場合によっては、管理計算サブシステム２０６はネットワーク計算サブシステム２０２が作動できないと判定し得、複数のＩ／Ｏリソースの少なくとも１つをＩ／Ｏサブシステム１１４からサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。ＳｏＣ１０２の構成は外部エンティティ（例えば、ネットワーク接続を介して）が提供するポリシに基づいてよく、ハードウェア構成（例えば、１つ以上のピンまたはヒューズ）に基づいてよく、またはソフトウェア構成（例えば、ソフトウェアレジスタのデータフィールド）に基づいてよい。いくつかの実施形態では、ＳｏＣ１０２は起動時にデフォルト構成を有し得る。いくつかの実施形態では、管理計算サブシステム２０６は、ＳｏＣの構成を基に、様々なＩ／Ｏリソースを様々な計算サブシステムにステアリングするために、ステアリング構成を決定し得る。いくつかの実施形態では、例えば、ＳｏＣが各計算サブシステムにより、非対称の計算リソースを使用して計算サービスを提供するように構成される場合、管理計算サブシステム２０６は非対称な数のＩ／Ｏリソースを各計算サブシステムにステアリングするためにステアリング構成を決定し得る。いくつかの実施形態では、管理計算サブシステム２０６は、例えば、実行時の各計算サブシステムによる計算リソースの活用を基に、ステアリング構成を動的に更新し得る。
【００３４】
図３は、本開示技術のいくつかの実施形態による、ＳｏＣ１０２の詳細図を伴うシステム３００を例示する。
【００３５】
ＳｏＣ１０２はネットワーク計算サブシステム２０２、サーバ計算サブシステム２０４、第１Ｉ／Ｏサブシステム３０２、第２Ｉ／Ｏサブシステム３０４、アクセラレータサブシステム３０６、Ｉ／Ｏステアリングエンジン１１２、管理計算サブシステム２０６及び
共有リソースサブシステム３０８を含み得る。簡潔性のために、図３は２つの計算サブシステムにステアリングされる２つのＩ／Ｏサブシステムを例示することが理解される。しかしながら、いくつかの実装では、本開示技術の範囲を逸脱することなく、３つ以上のＩ／Ｏサブシステムからの複数のＩ／ＯリソースがＳｏＣ上の複数の（例えば、３つ以上の）計算サブシステム間にステアリングされ得る。
【００３６】
ネットワーク計算サブシステム２０２は、ネットワーク計算サブシステムマルチコアプロセッサ３１０、Ｌ１／Ｌ２キャッシュ３１２、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４、Ｌ３キャッシュ３１６、プライベート周辺装置３２０及びネットワーク計算サブシステムメモリコントローラ３１８を含み得る。
【００３７】
サーバ計算サブシステム２０４は、サーバ計算サブシステムマルチコアプロセッサ３２２、Ｌ１／Ｌ２キャッシュ３２４、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６、Ｌ３キャッシュ３２８及びネットワーク計算サブシステムメモリコントローラ３３０を含み得る。
【００３８】
ネットワーク計算サブシステムマルチコアプロセッサ３１０は、同じプロセッサ内に複数のマルチプロセッサコアまたは処理ユニットを含み得る。例えば、ある例では、ネットワーク計算サブシステムマルチコアプロセッサ３１０は１２の２コアプロセッサを含み得る。ネットワーク計算サブシステムマルチコアプロセッサ３１０はプロセッサコアの１つ以上のプロセッサ上で複数の命令を集合的に実行するように構成され得る。命令はコンピュータ可読記憶媒体上に、例えば、コンピュータプログラムの形態で記憶され得る。コンピュータ可読記憶媒体は非一時的であり得る。いくつかの実施形態では、マルチコアプロセッサは、バスならびにレベル１（Ｌ１）キャッシュ及び／またはレベル２（Ｌ２）キャッシュなどのある特定のリソースをマルチコア間で共有し得る。例えば、場合によっては、シングルコアまたはマルチコアプロセッサの各コアは複数の実行論理プロセッサ（またはスレッド）をさらに含み得る。（複数の論理プロセッサをサポートする）係るコアでは、実行パイプラインのいくつかのステージ、さらには低レベルキャッシュ（例えば、Ｌ１またはＬ２）がさらに共有され得る。マルチコアプロセッサの非限定的な例の一部には、ＡＲＭ社のｃｏｒｔｅｘ  Ａ５７、ＭＩＰＳ、ＡＭＤ社のＰｈｅｎｏｍ、Ｉｎｔｅｌ社のＡＴＯＭ等が含まれ得る。
【００３９】
いくつかの実施形態では、Ｌ１／Ｌ２キャッシュ３１２は、ネットワーク計算サブシステムマルチコアプロセッサ３１０の複数のコア間で共有され得る。例えば、Ｌ１キャッシュは一次キャッシュとして使用されてよく、Ｌ２キャッシュは二次キャッシュとして使用されてよい。いくつかの実施形態では、Ｌ１／Ｌ２キャッシュ３１２は、ネットワーク計算サブシステムマルチコアプロセッサ３１０に内蔵され得る。例えば、１つのＬ１／Ｌ２キャッシュは、１つのマルチコアプロセッサに統合され得る。
【００４０】
ネットワーク計算サブシステムメモリコントローラ３１８は、ＤＤＲ（ダブルデータレート）コントローラ、ＤＤＲ２コントローラまたは任意の適切なメモリコントローラなどの複数のメモリコントローラを含み得る。ネットワーク計算サブシステムメモリコントローラ３１８は外部メモリ（例えば、システムメモリ）へのアクセスを管理するために使用され得る。例えば、外部システムメモリは、ＤＤＲ同期型ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ＤＤＲ２  ＤＲＡＭ、ＤＲＡＭ等を含み得る。いくつかの実施形態では、ネットワーク計算サブシステムメモリコントローラ３１８にあるメモリコントローラの数は、プロセッサコアの数、キャッシュのサイズ等に基づいてよい。
【００４１】
プライベート周辺装置３２０は、サーバ計算サブシステム２０４と共有できないネットワーク計算サブシステム２０２専用の１つ以上の周辺装置を含み得る。例えば、いくつか
の実施形態では、プライベート周辺装置３２０はブートＲＯＭなどの信頼できる周辺装置を含み得る。
【００４２】
Ｌ３キャッシュ３１６はラストレベルキャッシュを含み得る。いくつかの実施形態では、Ｌ３キャッシュ３１６は、ネットワーク計算サブシステムマルチコアプロセッサ３１０の複数のコア間で共有され得る。この仕様では、ラストレベルキャッシュ及びＬ３キャッシュという用語は互換可能に使用してよいが、一部のシステムでは、本技術の範囲を逸脱することなく、ラストレベルキャッシュはレベル２キャッシュもしくはレベル４キャッシュまたは任意の他のレベルであってよい。
【００４３】
ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、ネットワーク計算サブシステム２０２に割り当てられた全てのリソースに接続可能な物理層ファブリックを表し得る。本開示技術の実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、ネットワーク計算サブシステム２０２に割り当てられた全てのリソースに対する専用ハードウェアパスを可能にすることにより、ハードウェアセキュリティ及び性能／ジッタ分離を提供し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、ネットワーク計算サブシステム２０２の様々な構成要素間、例えば、ネットワーク計算サブシステムマルチコアプロセッサ３１０、Ｌ１／Ｌ２キャッシュ３１２、ネットワーク計算サブシステムメモリコントローラ３１８、Ｌ３キャッシュ３１６及び共有リソースサブシステム３０８のコヒーレンシを管理するように構成され得る。場合によっては、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、ネットワーク計算サブシステム２０２の通信バックボーンを表し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、全ての共有データがネットワーク計算サブシステム２０２内で確実にコヒーレントになるように構成され得る。例えば、ある特定の共有データが２つ以上の場所に記憶される場合（例えば、マルチプロセッサ、プロセッサの複数のコア、キャッシュ等）、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は様々な場所にある共有データの一貫性を維持するように動作し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４は、ネットワーク計算サブシステム２０２の様々な構成要素間のコヒーレンシを維持するために、コヒーレンシコントローラ及びコヒーレンシディレクトリを含み得る。
【００４４】
サーバ計算サブシステムマルチコアプロセッサ３２２は、同じプロセッサ内に複数のマルチプロセッサコアまたは処理ユニットを含み得る。例えば、ある例では、サーバ計算サブシステムマルチコアプロセッサ３２２は１２の２コアプロセッサを含み得る。サーバ計算サブシステムマルチコアプロセッサ３２２はプロセッサコアの１つ以上のプロセッサ上で複数の命令を集合的に実行するように構成され得る。命令はコンピュータ可読記憶媒体上に、例えば、コンピュータプログラムの形態で記憶され得る。コンピュータ可読記憶媒体は非一時的であり得る。
【００４５】
いくつかの実施形態では、Ｌ１／Ｌ２キャッシュ３２４は、サーバ計算サブシステムマルチコアプロセッサ３２２の複数のコア間で共有され得る。例えば、Ｌ１キャッシュは一次キャッシュとして使用されてよく、Ｌ２キャッシュは二次キャッシュとして使用されてよい。いくつかの実施形態では、Ｌ１／Ｌ２キャッシュ３２４は、サーバ計算サブシステムマルチコアプロセッサ３２２に内蔵され得る。
【００４６】
サーバ計算サブシステムメモリコントローラ３３０は、ＤＤＲコントローラ、ＤＤＲ２コントローラまたは任意の適切なメモリコントローラなどの複数のメモリコントローラを含み得る。サーバ計算サブシステムメモリコントローラ３３０は外部メモリへのアクセス
を管理するために使用され得る。いくつかの実施形態では、サーバ計算サブシステムメモリコントローラ３３０にあるメモリコントローラの数は、プロセッサコアの数、キャッシュのサイズ等に基づいてよい。
【００４７】
プライベート周辺装置３３２は、ネットワーク計算サブシステム２０２と共有できないサーバ計算サブシステム２０４専用の１つ以上の周辺装置を含み得る。例えば、いくつかの実施形態では、プライベート周辺装置３３２はブートＲＯＭなどの信頼できる周辺装置を含み得る。
【００４８】
Ｌ３キャッシュ３２８はラストレベルキャッシュを含み得る。いくつかの実施形態では、Ｌ３キャッシュ３２８は、サーバ計算サブシステムマルチコアプロセッサ３２２の複数のコア間で共有され得る。
【００４９】
サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、サーバ計算サブシステム２０４に割り当てられた全てのリソースに接続可能な物理層ファブリックを表し得る。本開示技術の実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、サーバ計算サブシステム２０４に割り当てられた全てのリソースに対する専用ハードウェアパスを可能にすることにより、ハードウェアセキュリティ及び性能／ジッタ分離を提供し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、サーバ計算サブシステム２０４の様々な構成要素間、例えば、サーバ計算サブシステムマルチコアプロセッサ３２２、Ｌ１／Ｌ２キャッシュ３２４、サーバ計算サブシステムメモリコントローラ３３０、Ｌ３キャッシュ３２８及び共有リソースサブシステム３０８のコヒーレンシを管理するように構成され得る。場合によっては、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、サーバ計算サブシステム２０４の通信バックボーンを表し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、全ての共有データがサーバ計算サブシステム２０４内で確実にコヒーレントになるように構成され得る。例えば、ある特定の共有データが２つ以上の場所に記憶される場合（例えば、マルチプロセッサ、プロセッサの複数のコア、キャッシュ等）、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は様々な場所にある共有データの一貫性を維持するように動作し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６は、サーバ計算サブシステム２０４の様々な構成要素間のコヒーレンシを維持するために、コヒーレンシコントローラ及びコヒーレンシディレクトリを含み得る。
【００５０】
第１Ｉ／Ｏサブシステム３０２は複数の第１Ｉ／Ｏリソースを含み得る。例えば、第１Ｉ／Ｏサブシステム３０２は、内部及び外部通信用の１つ以上のＩ／Ｏデバイス及びインターフェースを含み得る。いくつかの実施形態では、第１Ｉ／Ｏサブシステム３０２は、１つ以上のＳＡＴＡコントローラ、Ｅｔｈｅｒｎｅｔ  ＭＡＣ、ＰＣＩｅデバイス、ＳＥＲＤＥＳ（シリアライズ−デシリアライズ）Ｉ／Ｏマルチプレクサ、ＵＡＲＴ、Ｉ２Ｃ、ＧＰＩＯ及びＳｏＣの機能性に対する任意の他の適切なＩ／Ｏデバイスをさらに含み得る。いくつかの実施形態では、第１Ｉ／Ｏサブシステム３０２は例えば、インターフェース１１６と同様の、ホストシステム１０４と通信するための第１インターフェース３４６を含み得る。第１Ｉ／Ｏサブシステム３０２は、ネットワーク計算サブシステム２０２と通信するための第２インターフェース３３４、サーバ計算サブシステム２０４と通信するための第３インターフェース３３６及びネットワークと通信するための第４インターフェース（図示しない）を含み得る。インターフェース３４６、３３４及び３３６はＰＣＩｅインターフェースなどの既定のインターフェースに基づいてよい。いくつかの実施形態では、第４インターフェースは、Ｅｔｈｅｒｎｅｔ、トークンリング、Ｗｉ−Ｆｉ、ＡＴＭ（非同期転送モード）等の規格に基づいてよい。いくつかの実施形態では、第１Ｉ／Ｏサブ
システム３０２は、ハードドライブ、光学ドライブ等などの外部大容量記憶デバイスに接続されるインターフェース（例えば、ＳＡＴＡ）をさらに含み得る。
【００５１】
第２Ｉ／Ｏサブシステム３０４は複数の第２Ｉ／Ｏリソースを含み得る。例えば、第２Ｉ／Ｏサブシステム３０４は、内部及び外部通信用の１つ以上のＩ／Ｏデバイス及びインターフェースを含み得る。いくつかの実施形態では、第２Ｉ／Ｏサブシステム３０２は、１つ以上のＳＡＴＡコントローラ、Ｅｔｈｅｒｎｅｔ  ＭＡＣ、ＰＣＩｅデバイス、ＳＥＲＤＥＳ（シリアライズ−デシリアライズ）Ｉ／Ｏマルチプレクサ、ＵＡＲＴ、Ｉ２Ｃ、ＧＰＩＯ及びＳｏＣの機能性に対する任意の他の適切なＩ／Ｏデバイスをさらに含み得る。いくつかの実施形態では、第２Ｉ／Ｏサブシステム３０４は例えば、インターフェース１１６と同様の、ホストシステム１０４と通信するための第１インターフェース３４８を含み得る。第２Ｉ／Ｏサブシステム３０４は、サーバ計算サブシステム２０４と通信するための第２インターフェース３３８、ネットワーク計算サブシステム２０２と通信するための第３インターフェース３４０及びネットワークと通信するための第４インターフェース（図示しない）を含み得る。インターフェース３４８、３３８及び３４０はＰＣＩｅインターフェースなどの既定のインターフェースに基づいてよい。いくつかの実施形態では、第４インターフェースは、Ｅｔｈｅｒｎｅｔ、トークンリング、Ｗｉ−Ｆｉ、ＡＴＭ（非同期転送モード）等の規格に基づいてよい。いくつかの実施形態では、第４インターフェースは、Ｅｔｈｅｒｎｅｔ、トークンリング、Ｗｉ−Ｆｉ、ＡＴＭ（非同期転送モード）等の規格に基づいてよい。いくつかの実施形態では、第２Ｉ／Ｏサブシステム３０４は、ハードドライブ、光学ドライブ等の外部大容量記憶デバイスに接続されるインターフェース（例えば、ＳＡＴＡ）をさらに含み得る。
【００５２】
いくつかの実施形態では、第１Ｉ／Ｏサブシステム３０２にある１つ以上の第１Ｉ／Ｏリソースは第２Ｉ／Ｏサブシステム３０４にある第２Ｉ／Ｏリソースと異なり得る。例えば、場合によっては、第１Ｉ／Ｏサブシステム３０２はＥｔｈｅｒｎｅｔ  ＭＡＣ、Ｉ２Ｃ、ＵＡＲＴを含んでよく、第２Ｉ／Ｏサブシステム３０４はＳＡＴＡコントローラ、ＧＰＩＯ、ＰＣＩｅデバイス等を含んでよい。いくつかの実施形態では、管理計算サブシステム２０６は、利用可能なリソース及び各計算サブシステムに対するＩ／Ｏリソース要件を基に各Ｉ／Ｏサブシステムから適切なＩ／Ｏリソースをステアリングするために、ステアリング構成を決定し得る。
【００５３】
アクセラレータサブシステム３０６は、ネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ等などの１つ以上のアクセラレータを含んでよい。例えば、場合によっては、暗号化エンジンはハードウェアで暗号化機能を実行してよく、これによりソフトウェアオーバヘッドを削減し、ネットワーキングに関連する復号機能、暗号化機能及び認証機能の実行を高速化する。いくつかの実施形態では、アクセラレータサブシステム３０６は、例えば、ハードウェアアクセラレータ、種々のパイプライン、キャッシング、圧縮等を使用して帯域幅最適化またはネットワーク高速化を提供するために、種々のハードウェア及びソフトウェア技法の組み合わせを含み得る。いくつかの実施形態では、アクセラレータサブシステム３０６はＲＤＭＡ（リモートダイレクトメモリアクセス）等をさらにサポートし得る。いくつかの実施形態では、アクセラレータサブシステム３０６は、ネットワーク計算サブシステム２０２と通信するための第１インターフェース３４２及びサーバ計算サブシステム２０４と通信するための第２インターフェース３４４を含み得る。
【００５４】
本開示技術のいくつかの実施形態によると、１つ以上のアクセラレータはネットワーク計算サブシステム２０２にステアリングされてよく、１つ以上のアクセラレータはサーバ計算サブシステム２０４にステアリングされてよい。いくつかの実装では、本開示技術の範囲を逸脱することなく、１つ以上のアクセラレータが複数（例えば、３つ以上）の計算サブシステムにステアリングされ得ることに留意されたい。場合によっては、図３に示す
通り、アクセラレータサブシステム３０６は、アクセラレータＡ、アクセラレータＢ及びアクセラレータＣを含み得る。例えば、アクセラレータＡはネットワークアクセラレータであってよく、アクセラレータＢは暗号化エンジンであってよく、アクセラレータＣは圧縮アクセラレータであってよい。いくつかの実施形態では、アクセラレータサブシステム３０６は、いずれかの計算サブシステムに適切にステアリングされ得る複数のネットワークアクセラレータ、暗号化エンジン及び他のアクセラレータを含み得ることに留意されたい。一実施形態では、例えば、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方が作動可能である場合、アクセラレータＡ及びＢはネットワーク計算サブシステム２０２にステアリングされてよく、アクセラレータＣはサーバ計算サブシステム２０４にステアリングされてよい。別の実施形態では、例えば、サーバ計算サブシステム２０４が構成解除される、または作動しない場合、アクセラレータＡ、Ｂ及びＣの一部または全てはネットワーク計算サブシステム２０２にステアリングされてよい。別の実施形態では、例えば、ネットワーク計算サブシステム２０２が構成解除される、または作動しない場合、アクセラレータＡ、Ｂ及びＣの一部または全てはサーバ計算サブシステム２０４にステアリングされてよい。
【００５５】
Ｉ／Ｏステアリングエンジン１１２は、第１Ｉ／Ｏサブシステム３０２にある少なくとも１つのＩ／Ｏリソースをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングし、第２Ｉ／Ｏサブシステム３０４にある少なくとも１つのＩ／Ｏリソースをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするように構成され得る。例えば、ある特定の実施形態では、Ｉ／Ｏステアリングエンジン１１２は、第１Ｉ／Ｏリソースをインターフェース３３４を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４にステアリングするか、インターフェース３３６を介してサーバ計算サブシステムキャッシュコヒーレントファブリック３２６にステアリングし得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２は、第２Ｉ／Ｏリソースをインターフェース３４０を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４にステアリングするか、インターフェース３３８を介してサーバ計算サブシステムキャッシュコヒーレントファブリック３２６にステアリングし得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２はアクセラレータサブシステム３０６にある１つ以上のアクセラレータをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするようにさらに構成され得る。例えば、Ｉ／Ｏステアリングエンジン１１２は、１つ以上のアクセラレータをインターフェース３４２を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４にステアリングするか、インターフェース３４４を介してサーバ計算サブシステムキャッシュコヒーレントファブリック３２６にステアリングし得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２は、ステアリング構成を基に、様々なＩ／Ｏリソースを様々な計算サブシステムにステアリングし得る。例えば、場合によっては、Ｉ／Ｏステアリングエンジン１１２は、全てのＥｔｈｅｒｎｅｔ  ＭＡＣを第１Ｉ／Ｏサブシステム３０２からネットワーク計算サブシステム２０２にステアリングしてよく、全てのＧＰＩＯを第２Ｉ／Ｏサブシステム３０４からサーバ計算サブシステム２０４にステアリングしてよい。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２は、非対称な数のＩ／Ｏリソースを第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４からステアリングしてよい。例えば、Ｉ／Ｏステアリングエンジン１１２は、第２Ｉ／Ｏサブシステム３０４より多くの数のＥｔｈｅｒｎｅｔ  ＭＡＣを第１Ｉ／Ｏサブシステム３０２からステアリングし、第１Ｉ／Ｏサブシステム３０２より多くの数のＵＡＲＴを第２Ｉ／Ｏサブシステム３０４からステアリングしてよい。
【００５６】
共有リソースサブシステム３０８は、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４との間で共有できる１つ以上のリソースを含み得る。いくつかの実
施形態では、共有リソースサブシステム３０８は、ジッタまたは安全上の懸念を生じることなく、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４との間で安全に共有できる１つ以上の周辺装置を含み得る。例えば、共有リソースサブシステム３０８は乱数発生器、通信メールボックス、スクラッチパッドメモリ、フラッシュメモリ等を含み得る。
【００５７】
管理計算サブシステム２０６は、適切な数のＩ／Ｏリソースを各計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供するように構成され得る。いくつかの実施形態では、管理計算サブシステム２０６はアクセラレータサブシステム３０６にある１つ以上のアクセラレータをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供するようにさらに構成され得る。いくつかの実施形態では、管理計算サブシステム２０６はネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方が作動可能であると判定し得、第１Ｉ／Ｏサブシステム３０２をネットワーク計算サブシステム２０２に、及び第２Ｉ／Ｏサブシステム３０４をサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。ある特定の実施形態では、管理計算サブシステム２０６はサーバ計算サブシステム２０４が作動できないと判定し得、第１Ｉ／Ｏサブシステム３０２と第２Ｉ／Ｏサブシステム３０４の両方をネットワーク計算サブシステム２０２にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。ある特定の実施形態では、管理計算サブシステム２０６はネットワーク計算サブシステム２０２が作動できないと判定し得、第１Ｉ／Ｏサブシステム３０２と第２Ｉ／Ｏサブシステム３０４の両方をサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供してよい。いくつかの実施形態では、第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４のステアリング構成は、デフォルト構成、例えば、ポリシに基づいてよい。いくつかの実施形態では、管理計算サブシステム２０６は、ハードウェア構成（例えば、１つ以上のピンまたはヒューズ）またはソフトウェア構成（例えば、ソフトウェアレジスタのデータフィールド）に基づき、起動時に、第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４のステアリング構成を決定してよい。いくつかの実施形態では、管理計算サブシステム２０６は、第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４のステアリング構成を実行時に動的に決定してよい。
【００５８】
図４Ａ〜４Ｃは、両方の計算サブシステムを含むように構成されるＳｏＣ１０２を伴うシステム例４００を例示する。
【００５９】
システム４００は、図３を参照して論述した通り、ＳｏＣ１０２の全ての構成要素を含み得る。一般的に、サーバ計算サブシステム２０４は計算サービスを提供するように構成されてよく、ネットワーク計算サブシステム２０２はホストシステム１０４及びサーバ計算サブシステム２０４に対するネットワークトラフィックを少なくとも管理するように構成されてよい。アクセラレータサブシステム３０６は、ネットワーク計算サブシステム２０２のみにステアリングできる、サーバ計算サブシステム２０４のみにステアリングできる、またはネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方にステアリングできる１つ以上のアクセラレータ（例えば、アクセラレータＡ、Ｂ及びＣ）を含み得る。
【００６０】
図４Ａは、Ｉ／Ｏリソース及びアクセラレータをネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方にステアリングすることを含む、本開示技術の一実施形態を例示する。
【００６１】
管理計算サブシステム２０６は、起動時にまたは実行時にＳｏＣ１０２の構成を決定し得る。例えば、管理計算サブシステム２０６はネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方が作動可能であると判定し得る。いくつかの実施形態では、管理計算サブシステム２０６は、各計算サブシステムに対する処理リソース及びメモリリソースの割り当てを基に、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４が対称または非対称構成を有することを決定してよい。例えば、ＳｏＣ１０２は高性能ネットワーキングサービス及び低性能計算サービス、高性能計算サービス及び低性能ネットワーキングサービスを提供するように構成されてよく、あるいはネットワーキングサービス及び計算サービスの両方に同様の性能を提供するように構成されてよい。したがって、一実装では、管理計算サブシステム２０６は、適切な数のＩ／Ｏリソースを各計算サブシステムにステアリングするために、Ｉ／Ｏステアリングエンジン１１２に提供するためのステアリング構成を決定し得る。
【００６２】
いくつかの実施形態では、管理計算サブシステム２０６は１つ以上のアクセラレータをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするために、ステアリング構成をさらに提供し得る。例えば、場合によっては、アクセラレータＡ及びＢはネットワーク計算サブシステム２０２にステアリングでき、アクセラレータＣはサーバ計算サブシステム２０４にステアリングできる。例えば、アクセラレータＡはネットワーキング高速化のためにネットワーク計算サブシステム２０２により使用され得るネットワークアクセラレータであってよく、アクセラレータＢはネットワーク計算サブシステム２０２により実行される暗号化機能を高速化するための、ネットワーク計算サブシステム２０２により使用され得る暗号化エンジンであってよい。アクセラレータＣは、サーバ計算サブシステム２０４により行われるビデオ圧縮または他のデータ処理タスクを高速化するための圧縮アクセラレータであってよい。いくつかの実施形態では、管理計算サブシステム２０６は、Ｉ／Ｏステアリングエンジン１１２のために実行時にステアリング構成を更新し、各計算サブシステムに対する複数のＩ／Ｏリソース及び／またはアクセラレータのステアリングを動的に変更し得る。
【００６３】
いくつかの実施形態では、ネットワーク計算サブシステム２０２には、サーバ計算サブシステム２０４に比べてより多くの計算リソースが割り当てられてよく、例えば、ＳｏＣ１０２は高性能ネットワーキングサービス及び低性能計算サービスを提供するように構成され得る。いくつかの実施形態では、ＳｏＣ１０２に対する構成設定は起動時に提供され得るか、永続メモリ（図示せず）に記憶され得る。例えば、管理計算サブシステム２０６は、ハードウェア構成（例えば、１つ以上のピンまたはヒューズ）またはソフトウェア構成（例えば、レジスタのデータフィールド）に基づき、ＳｏＣ１０２に対する構成設定を決定してよい。いくつかの実施形態では、ＳｏＣ１０２に対する構成設定は実行時に動的に更新されてよい。例えば、ＳｏＣ１０２は、ネットワーク計算サブシステム２０２のみを含むように、サーバ計算サブシステム２０４のみを含むように、あるいはネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方を含むように、ブート時にまたは動的に構成され得る。例えば、場合によっては、ネットワーク計算サブシステムマルチコアプロセッサ３１０はサーバ計算サブシステムマルチコアプロセッサ３２２より多くの数のプロセッサコアを含んでよく、サーバ計算サブシステムメモリコントローラ３３０より多くの数のネットワーク計算サブシステムメモリコントローラ３１８を含んでよく、あるいはＬ１／Ｌ２キャッシュ３２４、Ｌ３キャッシュ３２８より大きいＬ１／Ｌ２キャッシュ３１２、Ｌ３キャッシュ３１６を含んでよい。したがって、Ｉ／Ｏステアリングエンジン１１２は、ネットワーク計算サブシステム２０２に割り当てられた計算リソースのスループット要件に適合するよう、（例えば、インターフェース３３８を介して）サーバ計算サブシステム２０４にステアリングするより多くの数のＩ／Ｏリソースを、ネットワーク計算サブシステム２０２に（例えば、インターフェース３３４を介して）ステアリングしてよい。同様に、高性能ネットワーキング構成では、Ｉ／Ｏステアリングエンジ
ン１１２はネットワーキング帯域幅に適合するよう、サーバ計算サブシステム２０４に比べてより多くの数のネットワークアクセラレータを（例えば、インターフェース３４２を介して）ネットワーク計算サブシステム２０２にステアリングしてよい。例えば、暗号化エンジンのみが（例えば、インターフェース３４４を介して）サーバ計算サブシステム２０４にステアリングされてよい。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２はマルチプレクサ、デマルチプレクサまたはステアリングを行うための任意の他の適切な論理を含み得る。
【００６４】
図４Ｂはアクセラレータをネットワーク計算サブシステム２０２のみにステアリングすることを含む、本開示技術の一実施形態を例示する。
【００６５】
一実施形態では、アクセラレータサブシステム３０６にある１つ以上のアクセラレータは、（例えば、インターフェース３４２を介して）ネットワーク計算サブシステム２０２のみにステアリングされ得る。例えば、いくつかの実施形態では、ネットワーク計算サブシステム２０２は高性能ネットワーキングサービスを提供するように構成されてよく、サーバ計算サブシステム２０４は低性能計算サービスを提供するように構成されてよい。場合によっては、ネットワーク計算サブシステム２０２は複数のネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ及び高性能ネットワーキングサービスを提供するための任意の他の適切なアクセラレータを利用してよく、サーバ計算サブシステム２０４はいずれのアクセラレータも利用できない。図４ＢはアクセラレータＡ、Ｂ及びＣがネットワーク計算サブシステム２０２にステアリングされることを示すことに留意されたい。しかしながら、任意の適切な数のアクセラレータ、例えば、Ａのみ、Ｂのみ、ＣのみあるいはＡ、Ｂ及び／またはＣの複数のインスタンスがネットワーク計算サブシステム２０２にステアリングされ得る。
【００６６】
図４Ｃはアクセラレータをサーバ計算サブシステム２０４のみにステアリングすることを含む、本開示技術の一実施形態を例示する。
【００６７】
一実施形態では、アクセラレータサブシステム３０６にある１つ以上のアクセラレータは、（例えば、インターフェース３４４を介して）サーバ計算サブシステム２０４のみにステアリングされ得る。例えば、いくつかの実施形態では、サーバ計算サブシステム２０４は高性能計算サービスを提供するように構成されてよく、ネットワーク計算サブシステム２０４は低性能ネットワーキングサービスを提供するように構成されてよい。場合によっては、サーバ計算サブシステム２０４は複数の暗号化エンジン、圧縮アクセラレータ及び高性能計算サービスを提供するための任意の他の適切なアクセラレータを利用してよく、ネットワーク計算サブシステム２０２はいずれのアクセラレータも利用できない。図４ＣはアクセラレータＡ、Ｂ及びＣがサーバ計算サブシステム２０４にステアリングされることを示すことに留意されたい。しかしながら、任意の適切な数のアクセラレータ、例えば、Ｂのみ、ＣのみあるいはＢ及び／またはＣの複数のインスタンスがサーバ計算サブシステム２０４にステアリングされ得る。
【００６８】
図５は、サーバ計算サブシステムのみを含むように構成されるＳｏＣ１０２を伴うシステム例５００を例示する。
【００６９】
図５に例示する通り、ネットワーク計算サブシステム２０２は作動できない。例えば、ＳｏＣ１０２はサーバ計算サービスのみを提供するように構成され得る。いくつかの実施形態では、ＳｏＣ１０２は計算サービスを提供するように構成され得るサーバ計算サブシステム２０４を含むのみであってよい。
【００７０】
管理計算サブシステム２０６は、起動時にまたは実行時に動的にＳｏＣ１０２の構成を
決定し得る。例えば、管理計算サブシステム２０６はサーバ計算サブシステム２０４のみが作動可能であると判定し得る。いくつかの実施形態では、ネットワーク計算サブシステム２０２は構成解除または機能解除されてよい。例えば、ＳｏＣ１０２は高性能計算サービスのみを提供するように構成されてよく、ゆえにネットワーキングサービスを利用できない。例えば、ＳｏＣ１０２は計算集約リソースを利用し得るデータ計算またはデータ解析を行うように構成され得る。いくつかの実施形態では、管理計算サブシステム２０６は、サーバ計算サブシステム２０４に対する処理リソース及びメモリリソースの割り当てを基に、Ｉ／Ｏステアリングエンジン１１２に提供するためのステアリング構成を決定し得る。ゆえに、Ｉ／Ｏステアリングエンジン１１２は、管理計算サブシステム２０６により提供されるステアリング構成を基に、１つ以上の第１Ｉ／Ｏリソースを（例えば、インターフェース３３６を介して）ステアリングしてよく、１つ以上の第２Ｉ／Ｏリソースを（例えば、インターフェース３３８を介して）サーバ計算サブシステム２０４にステアリングしてよい。例えば、場合によっては、Ｉ／Ｏステアリングエンジン１１２は、第２Ｉ／Ｏサブシステム３０４と比べてより多くの数のＥｔｈｅｒｎｅｔ  ＭＡＣを第１Ｉ／Ｏサブシステム３０２からサーバ計算サブシステム２０４にステアリングし、第１Ｉ／Ｏサブシステム３０２より多くの数のＳＡＴＡコントローラを第２Ｉ／Ｏサブシステム３０４からサーバ計算サブシステム２０４にステアリングし得る。Ｉ／Ｏステアリングエンジン１１２は、管理計算サブシステム１１４により提供されるステアリング構成を基に、アクセラレータをサーバ計算サブシステム１０６にステアリングしてもよく、しなくてもよい。いくつかの実施形態では、アクセラレータサブシステム３０６にある１つ以上のアクセラレータは、（例えば、インターフェース３４４を介して）サーバ計算サブシステム２０４にステアリングされ得る。例えば、場合によっては、暗号化エンジン及び／または圧縮アクセラレータのみがサーバ計算サブシステム２０４にステアリングされてよいが、ネットワークアクセラレータにはステアリングできない。
【００７１】
本開示技術のいくつかの実施形態により、ネットワーク計算サブシステム２０２が作動しない場合、より多くの数のリソースをサーバ計算サブシステム２０４にステアリングすることを可能にできる。例えば、ＳｏＣ１０２は高性能計算サービスを提供するように構成され得る。いくつかの実施形態によれば、サーバ計算サブシステム２０４により利用される計算リソースに適合し、高性能計算サービスを提供するよう、複数のＩ／Ｏリソースを第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４の両方からステアリングすることができる。ゆえに、本技術の実施形態はシステムのスループットを増加させるためにＩ／Ｏリソースのより効率的な利用を可能にできる。
【００７２】
図６は、ネットワーク計算サブシステム２０２のみを含むように構成されるＳｏＣ１０２を伴うシステム例６００を例示する。
【００７３】
図６に例示する通り、サーバ計算サブシステム２０４は作動できない。例えば、ＳｏＣ１０２はネットワーキングサービスのみを提供するように構成され得る。いくつかの実施形態では、ＳｏＣ１０２はホストシステム１０４に対するネットワークトラフィックを少なくとも管理するように構成され得るネットワーク計算サブシステム２０２を含むのみであってよい。
【００７４】
管理計算サブシステム２０６は、起動時にＳｏＣ１０２の構成を決定し得る。例えば、管理計算サブシステム２０６はネットワーク計算サブシステム２０２のみが作動可能であると判定し得る。いくつかの実施形態では、サーバ計算サブシステム２０４は構成解除または機能解除されてよい。例えば、ＳｏＣ１０２は高性能ネットワーキングサービスのみを提供するように構成されてよく、ゆえに計算サービスを利用できない。例えば、ＳｏＣ１０２はネットワーク集約リソースを利用し得るネットワークストレージまたはネットワークトラフィックシェーピングを行うように構成され得る。いくつかの実施形態では、管
理計算サブシステム２０６は、ネットワーク計算サブシステム２０２に対する処理リソース及びメモリリソースの割り当てを基に、Ｉ／Ｏステアリングエンジン１１２に提供するためのステアリング構成を決定し得る。ゆえに、Ｉ／Ｏステアリングエンジン１１２は、ネットワーキングサービスを提供するためのネットワーク計算サブシステム２０２のスループット要件に適合するよう、１つ以上の第１Ｉ／Ｏリソースを（例えば、インターフェース３３４を介して）ステアリングしてよく、１つ以上の第２Ｉ／Ｏリソースを（例えば、インターフェース３４０を介して）ネットワーク計算サブシステム２０２にステアリングしてよい。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１１２は、（例えば、インターフェース３４２を介して）ＳｏＣ１０２により提供されるネットワーキングサービスに必要なネットワーク帯域幅に適合するよう、アクセラレータサブシステム３０６にある１つ以上のアクセラレータをネットワーク計算サブシステム２０２にステアリングしてよい。例えば、場合によっては、１つ以上のネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ等はネットワーク計算サブシステム２０２にステアリングされてよい。
【００７５】
本開示技術のいくつかの実施形態により、サーバ計算サブシステム２０４が作動しない場合、より多くの数のリソースをネットワーク計算サブシステム２０２にステアリングすることを可能にできる。例えば、ＳｏＣ１０２は高性能ネットワーキングサービスを提供するように構成され得る。いくつかの実施形態によれば、ネットワーク計算サブシステム２０２により利用される計算リソースに適合し、高性能ネットワーキングサービスを提供するよう、複数のＩ／Ｏリソースを第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４の両方からステアリングすることができる。さらに、ネットワーク高速化を提供するために、複数のアクセラレータをアクセラレータサブシステム３０６からネットワーク計算サブシステム２０２にステアリングできる。ゆえに、本技術の実施形態はシステムのスループットを増加させるためにＩ／Ｏリソースのより効率的な利用を可能にすることができる。
【００７６】
図７は、本技術のある特定の実施形態による、Ｉ／Ｏサブシステム１１４に対するブロック図を例示する。Ｉ／Ｏサブシステム１１４は、複数のＩ／Ｏデバイス、例えば、第１Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０２、第２Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０４、第３Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０６、第１ＰＣＩｅデバイス７０８、第２ＰＣＩｅデバイス７１０、ＧＰＩＯデバイス７１２、第１ＳＡＴＡコントローラ７１４、第２ＳＡＴＡコントローラ７１６及びＩ２Ｃデバイス７１８を含み得る。Ｉ／Ｏサブシステム１１４は、ＳｏＣ１０２の構成に基づき、より多くの数のまたはより少ない数のデバイスを含み得ることが理解される。
【００７７】
いくつかの実施形態では、図３を参照して既に論述した通り、Ｉ／Ｏサブシステム１１４は第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４を含み得る。本開示技術のいくつかの実施形態によると、図１を参照して既に論述した通り、Ｉ／Ｏサブシステム１１４の１つ以上のデバイスは１つ以上の計算サブシステムにステアリングされ得る。例えば、いくつかの実装では、１つ以上のデバイスはネットワーク計算サブシステム２０２にステアリングされてよく、１つ以上のデバイスはサーバ計算サブシステム２０４にステアリングされてよい。いくつかの実施形態では、管理計算サブシステム２０６はＳｏＣ１０２の構成を基に、適切な数及びタイプのＩ／Ｏデバイスを１つ以上の計算サブシステムにステアリングするために、ステアリング構成をＩ／Ｏステアリングエンジン１１２に提供し得る。例えば、一実施形態では、ＳｏＣ１０２がネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方として機能するように構成される場合（例えば、図４Ａ〜４Ｃを参照）、Ｉ／Ｏステアリングエンジン１１２はＩ／Ｏデバイスの第１セットをネットワーク計算サブシステム２０２にステアリングしてよく、Ｉ／Ｏデバイスの第２セットをサーバ計算サブシステム２０４にステアリングしてよい。例えば、Ｉ
／Ｏデバイスの第１セットは、ネットワーク計算サブシステム２０２が使用し得る、第１Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０２、第２Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０４、第１ＰＣＩｅデバイス７０８及び第１ＳＡＴＡコントローラ７１４などの適切な数及びタイプのＩ／Ｏデバイスを含み得る。Ｉ／Ｏデバイスの第２セットは、サーバ計算サブシステム２０４が使用し得る、第３Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０６、第２ＰＣＩｅデバイス７１０、ＧＰＩＯデバイス７１２、第２ＳＡＴＡコントローラ７１６及びＩ２Ｃデバイス７１８などの適切な数及びタイプのＩ／Ｏデバイスを含み得る。一実施形態では、ＳｏＣ１０２がサーバのみの計算サブシステムとして構成される場合（例えば、図５を参照）、Ｉ／Ｏステアリングエンジン１１２は、例えば、第３Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０６、第１ＰＣＩｅデバイス７０８、第２ＳＡＴＡコントローラ７１６及びＧＰＩＯデバイス７１２などのサーバ計算サブシステム２０４が使用し得る適切なＩ／Ｏデバイスをステアリングし得る。一実施形態では、ＳｏＣ１０２がネットワークのみの計算サブシステムとして構成される場合（例えば、図６を参照）、Ｉ／Ｏステアリングエンジン１１２は、例えば、第１Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０２、第２Ｅｔｈｅｒｎｅｔ  ＭＡＣ７０４、第１ＰＣＩｅデバイス７０８及び第１ＳＡＴＡコントローラ７１４などのネットワーク計算サブシステム２０２が使用し得る適切なＩ／Ｏデバイスをステアリングし得る。
【００７８】
図８は、本技術のある特定の実施形態による、Ｉ／Ｏステアリングエンジン１１２に対するブロック図を例示する。Ｉ／Ｏステアリングエンジン１１２はインターフェースユニット８０２及びステアリングユニット８０４を含み得る。本技術のある特定の実施形態によると、Ｉ／Ｏステアリングエンジン１１２は、複数のＩ／Ｏリソースがネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４及びサーバ計算サブシステムキャッシュコヒーレントファブリック３２６により表される物理層を介して、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４に接続することを可能にし得る。
【００７９】
インターフェースユニット８０２は、ＳｏＣ１０２の異なる構成要素との種々のインターフェースを含み得る。例えば、インターフェースユニット８０２は第１Ｉ／Ｏサブシステム３０２、第２Ｉ／Ｏサブシステム３０４、アクセラレータサブシステム３０６、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４、サーバ計算サブシステムキャッシュコヒーレントファブリック３２６及び管理計算サブシステム２０６とインターフェースをとり得る。
【００８０】
ステアリングユニット８０４は、Ｉ／Ｏサブシステム１１４にある１つ以上のＩ／Ｏリソース及びアクセラレータサブシステム３０６にある１つ以上のアクセラレータを１つ以上の計算サブシステムにステアリングまたは導くためのステアリング論理を含み得る。例えば、いくつかの実施形態では、ステアリングユニット８０４は、第１Ｉ／Ｏサブシステム３０２にある複数の第１Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４またはサーバ計算サブシステムキャッシュコヒーレントファブリック３２６にステアリングするための、及び第２Ｉ／Ｏサブシステム３０４にある複数の第２Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステムキャッシュコヒーレントファブリック３１４またはサーバ計算サブシステムキャッシュコヒーレントファブリック３２６にステアリングするためのステアリング論理を含み得る。ステアリングユニット８０４はアクセラレータサブシステム３０６にある１つ以上のアクセラレータをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするようにさらに構成され得る。いくつかの実施形態では、ステアリング論理はステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を使用して実装され得る。しかしながら、ステアリング論理の他の実装も可能である。いくつかの実施形態では、ステアリングユニット８０４は、管理計算サブシステム２０６が提供するステアリング構成に基づいて、１つ以上のＩ／Ｏリソースを
ステアリングし得る。
【００８１】
図９は、本開示技術のある特定の実施形態による、管理計算サブシステム２０６に対するブロック図を例示する。管理計算サブシステム２０６は、マルチコアプロセッサ９０２、Ｌ１／Ｌ２キャッシュ９０４、ネットワークインターフェースユニット９０６、プライベートメモリ９０８、周辺デバイス９１０及びコンピュータ可読記憶媒体９１２を含み得る。
【００８２】
マルチコアプロセッサ９０２は、ＡＲＭ（登録商標）のＡ５７などの２つ以上のプロセッサコアを含み得る。いくつかの実施形態では、マルチコアプロセッサ９０２の代わりにシングルコアプロセッサが使用され得る。Ｌ１／Ｌ２キャッシュ９０４はマルチコアプロセッサ９０２の内部または外部であってよく、全てのプロセッサコアにより共有され得る。マルチコアプロセッサ９０２は、コンピュータ可読記憶媒体９１２上に記憶され得る複数の命令を実行するように構成され得る。例えば、コンピュータ可読媒体は、ブート時にまたは実行時に動的に、Ｉ／Ｏリソース及びアクセラレータを適切な計算サブシステムにステアリングするために、Ｉ／Ｏステアリングエンジン１１２に提供するためのステアリング構成を決定する命令を含み得る。コンピュータ可読記憶媒体９１２は非一時的であり得る。いくつかの実施形態では、コンピュータ可読記憶媒体は、パラメータランダムアクセスメモリ（ＰＲＡＭ）、ＳＲＡＭ、ＤＲＡＭ、ＲＡＭ、読み出し専用メモリ（ＲＯＭ）、電気的消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク（ＣＤ）−ＲＯＭ、デジタルビデオディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用可能であり、マルチコアプロセッサ９０２によりアクセス可能な任意の他の媒体を含み得るが、これらに限定されない。いくつかの実施形態では、コンピュータ可読記憶媒体９１２は周辺デバイス９１０の一部であってよい。Ｌ１／Ｌ２キャッシュ９０４はデータの一時的な記憶のためのデータキャッシュであってよい。
【００８３】
ネットワークインターフェースユニット９０６により、管理計算サブシステム２０６はネットワークに接続することが可能になり得る。例えば、ネットワークインターフェースユニット９０６は、Ｅｔｈｅｒｎｅｔなどのネットワークに接続するための管理計算サブシステム２０６を使用可能にできるＥｔｈｅｒｎｅｔ  ＭＡＣ（媒体アクセス制御）を含み得る。場合によっては、Ｅｔｈｅｒｎｅｔ  ＭＡＣはネットワークに接続するためのＰＨＹ（物理層）デバイスにインターフェースをとるＥｔｈｅｒｎｅｔポートを提供し得る。いくつかの実施形態では、管理計算サブシステム２０６は、処理リソース及びメモリリソースを構成するために、ネットワーク上で外部エンティティまたはシステムと通信し仮想サーバインスタンスの作業負荷を決定できる。
【００８４】
プライベートメモリ９０８は管理計算サブシステム２０６をプライベートに使用するためのメモリを含み得る。プライベートメモリ９０８はランダムアクセスメモリ（例えば、ＳＲＡＭまたはＤＲＡＭ）などの揮発性メモリを含み得る。例えば、管理計算サブシステム２０６はデータを一時的に記憶するためのプライベートメモリ９０８を使用し得る。
【００８５】
周辺デバイス９１０は管理計算サブシステム２０６に対するプライベート周辺デバイスを含み得る。いくつかの実施形態では、プライベート周辺デバイス９１０の一部は、ＳｏＣ１０２の様々なサブシステムのリブート及び電源管理のためのデバイスを含み得る。例えば、周辺デバイス９１０はブートファームウェアを含む信頼された管理モジュールを含んでよく、ブートファームウェアは他のサブシステムを起動する前に、起動時に信頼の基点を構築することを実行できる。いくつかの実施形態では、電源管理は電源操作、クロック操作または任意の他の適切な方法を通じて提供され得る。
【００８６】
いくつかの実施形態では、管理計算サブシステム２０６は、ＳｏＣ１０２全体のコールド起動時に、最初に実行されるように構成され得る。場合によっては、管理計算サブシステム２０６は他のサブシステムを起動する前に、他のサブシステムに対する信頼の基点を構築するために最初に起動され得る。例えば、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４に対するブートプロセスは管理計算サブシステム２０６に対するコアブート下で階層的に考慮され得る。いくつかの実施形態では、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４上で後続的に実行されたであろうソフトウェアは、ホストシステム１０４またはホストシステム１０４により提供される特定のサービスに関連する秘密鍵を使用して署名されたため、管理計算サブシステム２０６による承認が完了していてよい。これにより、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方のプロセスが信頼された独立ブートローダを介してブート可能にできる。
【００８７】
いくつかの実施形態では、管理計算サブシステム２０６は、ネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方のライブ動作に影響を及ぼすことなく、個別のリセットラインによりリセット／リブートし得る。
【００８８】
図１０は、本開示技術のいくつかの実施形態による、アクセラレータサブシステム３０６に対するブロック図を例示する。アクセラレータサブシステム３０６は、ネットワークアクセラレータ１００２、暗号化エンジン１００４及び圧縮アクセラレータ１００６などの複数のアクセラレータを含み得る。アクセラレータサブシステム３０６は、本開示技術の実施形態による、２つ以上の計算サブシステムにステアリングできる、より多くのまたはより少ないアクセラレータ及び種々のタイプのアクセラレータを含み得ることが理解される。
【００８９】
ネットワークアクセラレータ１００２はネットワーク高速化を提供するために利用され得る。例えば、いくつかの実装では、例えば、キャッシング、データ圧縮、データ複製または任意の他の適切な技法を使用することで帯域幅最適化を提供するために、ネットワークアクセラレータ１００２はハードウェアとソフトウェアの組み合わせを含み得る。１つ以上のネットワークアクセラレータ１００２は、図４Ａ〜図４Ｃ、図５及び図６を参照して論述した通り、ＳｏＣ１０２の構成を基に、ネットワーク計算サブシステム２０２及び／またはサーバ計算サブシステム２０４にステアリングされ得る。
【００９０】
暗号化エンジン１００４は、例えば、暗号化機能のためのハードウェア高速化を提供するために利用され得る。例えば、いくつかの実装では、暗号化エンジン１００４は、例えば、キャッシング、データ圧縮、データ複製または任意の他の適切な技法を使用することでハードウェア高速化を提供するハードウェアとソフトウェアの組み合わせを含み得る。１つ以上の暗号化エンジン１００４は、図４Ａ〜図４Ｃ、図５及び図６を参照して論述した通り、ＳｏＣ１０２の構成を基に、ネットワーク計算サブシステム２０２及び／またはサーバ計算サブシステム２０４にステアリングされ得る。
【００９１】
圧縮アクセラレータ１００６は計算集約アプリケーションに高速化を提供するために利用され得る。例えば、いくつかの実装では、圧縮アクセラレータ１００６は、任意の適切な技法を使用する高速化を提供するハードウェアとソフトウェアの組み合わせを含み得る。１つ以上の圧縮アクセラレータ１００６は、図４Ａ〜図４Ｃ、図５及び図６を参照して論述した通り、ＳｏＣ１０２の構成を基に、ネットワーク計算サブシステム２０２及び／またはサーバ計算サブシステム２０４にステアリングされ得る。
【００９２】
図１１は、第１Ｉ／Ｏサブシステム３０２の一部の構成要素を例示する。第１Ｉ／Ｏサ
ブシステム３０２はバスインターフェースユニット１１０２、ネットワークインターフェースユニット１１０４及びＩ／Ｏ周辺装置ユニット１１０６を含み得る。いくつかの実施形態では、図７を参照して既に論述した通り、第１Ｉ／Ｏサブシステム３０２はＩ／Ｏサブシステム１１４の一部であり得る。
【００９３】
バスインターフェースユニット１１０２は、内部または外部の構成要素と通信するための１つ以上のバスインターフェースを含み得る。例えば、バスインターフェースユニット１１０２は、例えば、インターフェース３４６などの、ホストシステム１０４と通信するための第１インターフェースを含み得る。いくつかの実施形態では、第１インターフェースはＰＣＩｅインターフェースであってよい。例えば、バスインターフェースユニット１１０２は、他のＰＣＩｅポートに接続するための１つ以上のＰＣＩｅポートを含み得る。バスインターフェースユニット１１０２はルートコンプレックス（ＲＣ）ポート及びエンドポイントポート（ＥＰ）を含み得る。いくつかの実施形態では、ネットワーク計算サブシステム２０２は第１Ｉ／Ｏサブシステム３０２にあるＰＣＩｅポート及びインターフェース３４６を使用するホストシステム１０４にあるＰＣＩｅポートを介してホストシステム１０４と通信し得る。バスインターフェースユニット１１０２は、Ｉ／Ｏステアリングエンジン１１２に接続するための（例えば、図８に参照するインターフェースユニット８０２と接続するための）第２インターフェースを含み得る。例えば、Ｉ／Ｏステアリングエンジン１１２は、第２インターフェースを使用して、第１Ｉ／Ｏサブシステム３０２にある第１Ｉ／Ｏリソースを、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４のいずれかに接続し得る。
【００９４】
ネットワークインターフェースユニット１１０４はネットワークに接続するための第３インターフェースを含み得る。いくつかの実施形態では、ネットワークインターフェースユニット１１０４はＥｔｈｅｒｎｅｔネットワークに接続するための１つ以上のＥｔｈｅｒｎｅｔ  ＭＡＣ（例えば、１０／２５／４０／５０Ｇｂ／秒）を含み得る。場合によっては、Ｅｔｈｅｒｎｅｔ  ＭＡＣはネットワークに接続するためのＰＨＹ（物理層）デバイスにインターフェースをとるＥｔｈｅｒｎｅｔポートを提供し得る。
【００９５】
Ｉ／Ｏ周辺装置ユニット１１０６は１つ以上の周辺デバイスを含み得る。例えば、Ｉ／Ｏ周辺装置ユニット１１０６は、ＵＡＲＴ、Ｉ２Ｃ、ＧＰＩＯ、ＳＡＴＡコントローラ、ＳＰＩポート、ＳＥＲＤＥＳ（シリアライズ−デシリアライズ）インターフェース等などの１つ以上の周辺デバイスを含み得る。
【００９６】
図１２は、第２Ｉ／Ｏサブシステム３０４の一部の構成要素を例示する。第２Ｉ／Ｏサブシステム３０４はバスインターフェースユニット１２０２、ネットワークインターフェースユニット１２０４及びＩ／Ｏ周辺装置ユニット１２０６を含み得る。いくつかの実施形態では、図７を参照して既に論述した通り、第２Ｉ／Ｏサブシステム３０４はＩ／Ｏサブシステム１１４の一部であり得る。
【００９７】
バスインターフェースユニット１２０２は、内部または外部の構成要素と通信するための１つ以上のバスインターフェースを含み得る。例えば、バスインターフェースユニット１２０２は、例えば、インターフェース３４８などの、ホストシステム１０４と通信するための第１インターフェースを含み得る。いくつかの実施形態では、第１インターフェースはＰＣＩｅインターフェースであってよい。例えば、バスインターフェースユニット１２０２は、他のＰＣＩｅポートに接続するための１つ以上のＰＣＩｅポートを含み得る。バスインターフェースユニット１２０２はルートコンプレックス（ＲＣ）ポート及びエンドポイントポート（ＥＰ）を含み得る。いくつかの実施形態では、サーバ計算サブシステム２０４は第２Ｉ／Ｏサブシステム３０４にあるＰＣＩｅポート及びインターフェース３４８を使用するホストシステム１０４にあるＰＣＩｅポートを介してホストシステム１０
４と通信し得る。バスインターフェースユニット１２０２は、Ｉ／Ｏステアリングエンジン１１２に接続するための（例えば、図８に参照するインターフェースユニット８０２と接続するための）第２インターフェースを含み得る。例えば、Ｉ／Ｏステアリングエンジン１１２は、第２インターフェースを使用して、第２Ｉ／Ｏサブシステム３０４にある第２Ｉ／Ｏリソースを、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４のいずれかに接続し得る。
【００９８】
ネットワークインターフェースユニット１２０４はネットワークに接続するための第３インターフェースを含み得る。いくつかの実施形態では、ネットワークインターフェースユニット１２０４はＥｔｈｅｒｎｅｔネットワークに接続するための１つ以上のＥｔｈｅｒｎｅｔ  ＭＡＣ（例えば、１０／２５／４０／５０Ｇｂ／秒）を含み得る。場合によっては、Ｅｔｈｅｒｎｅｔ  ＭＡＣはネットワークに接続するためのＰＨＹ（物理層）デバイスにインターフェースをとるＥｔｈｅｒｎｅｔポートを提供し得る。
【００９９】
Ｉ／Ｏ周辺装置ユニット１２０６は１つ以上の周辺デバイスを含み得る。例えば、Ｉ／Ｏ周辺装置ユニット１２０６は、ＵＡＲＴ、Ｉ２Ｃ、ＧＰＩＯ、ＳＡＴＡコントローラ、ＳＰＩポート、ＳＥＲＤＥＳ（シリアライズ−デシリアライズ）インターフェース等などの１つ以上の周辺デバイスを含み得る。いくつかの実施形態では、Ｉ／Ｏ周辺装置ユニット１２０６は、図１１を参照して論述したＩ／Ｏ周辺装置ユニット１１０６とは異なるタイプ及び数のＩ／Ｏデバイスを含み得る。例えば、場合によっては、Ｉ／Ｏ周辺装置ユニット１２０６は、Ｉ／Ｏ周辺装置ユニット１１０６と比べてより多くの数のＳＡＴＡコントローラを含み得る。場合によっては、Ｉ／Ｏ周辺装置ユニット１２０６のみがＧＰＩＯを含み、Ｉ／Ｏ周辺装置ユニット１１０６のみがＵＡＲＴを含み得る。
【０１００】
図１３は、共有リソースサブシステム３０８の一部の構成要素を例示する。本技術の実施形態では、共有リソースサブシステム３０８は処理状態を含むことができない構成要素を含み得る。共有リソースサブシステム３０８は、メモリモジュール１３０２、乱数発生器モジュール１３０４、通信メールボックス１３０６及びスクラッチパッドメモリモジュール１３０８を含み得る。
【０１０１】
メモリモジュール１３０２は、フラッシュメモリなどの不揮発性メモリストレージを含み得る。例えば、メモリモジュール１３０２は、低レベルのフラッシュメモリ管理を提供するために、埋め込み型マルチメディアコントローラ（ｅＭＭＣ）またはセキュアデジタル（ＳＤ）を含み得る。いくつかの実施形態では、メモリモジュール１３０２は、例えば、ＢＩＯＳ（基本入出力システム）、ブートローダ等の制御コードを記憶するために使用され得る。例えば、メモリモジュール１３０２は、両方の計算システムにより共有され得るコードを含み得る。
【０１０２】
乱数発生器モジュール１３０４は数値またはシンボルのランダムな順序を生成するように構成され得る。例えば、ランダムな数値はデータの暗号化などの暗号化アプリケーションまたは任意の係るアプリケーションに使用され得る。いくつかの実施形態では、乱数発生器モジュール１３０４はランダムな数値または順序を生成するために使用されてよく、ランダムな数値または順序は、起動またはリブート後、各計算サブシステムを起動する前に各計算サブシステムを認証するために管理計算サブシステム２０６により使用され得る。
【０１０３】
通信メールボックス１３０６は２つのサブシステムに関連する様々なプロセス間の通信を促すために使用され得る。例えば、通信メールボックス１３０６は、メッセージ受け渡し、同期、共有メモリ及びリモートプロシージャコール（ＲＰＣ）などの種々の機能に対するデータ交換のためのプロセス間通信モジュールとして使用され得る。
【０１０４】
スクラッチパッドメモリモジュール１３０８は両方のサブシステムにより使用され得るデータの一時的記憶のために使用され得る。いくつかの実施形態では、スクラッチパッドメモリモジュール１３０８は、例えば、命令または中間値などの少量のデータを高速に読み出すために記憶する、高速メモリ（例えば、２ＭＢのＳＲＡＭ）を含み得る。
【０１０５】
図１４は、本技術の１つ以上の態様によるフロー図１４００を例示する。プロセス１４００の一部または全て（あるいは本明細書に記載の任意の他のプロセス、つまりその変形及び／または組み合わせ）は、実行可能命令で構成される１つ以上のコンピュータシステムの制御下で行われてよく、かつ１つ以上のプロセッサ上で集合的に実行するコード（例えば、ファームウェア、実行可能命令、１つ以上のコンピュータプログラムまたは１つ以上のアプリケーション）として実装され得るか、ハードウェアもしくはその組み合わせにより実装され得る。コードはコンピュータ可読記憶媒体上に、例えば、１つ以上のプロセッサにより実行可能な複数の命令を含み得るコンピュータプログラムの形態で記憶されてよい。コンピュータ可読記憶媒体は非一時的であり得る。
【０１０６】
ステップ１４０２では、複数の計算サブシステムにある１つ以上の計算サブシステムはシステムオンチップ（ＳｏＣ）上で起動され得る。例えば、いくつかの実施形態では、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４が起動してよく、サーバ計算サブシステム２０４は計算サービスを提供するように構成され、ネットワーク計算サブシステム２０２はホストシステム１０４及びサーバ計算サブシステム２０２に対するネットワークトラフィックを少なくとも管理するように構成される。例えば、図３に戻って参照すると、管理計算サブシステム２０６はネットワーク計算サブシステム２０２とサーバ計算サブシステム２０４の両方を起動し得る。いくつかの実施形態では、管理計算サブシステム２０６は、ＳｏＣ１０２の構成を基に起動した後、プロセッサ及びメモリリソースを各計算サブシステムに割り当て得る。例えば、場合によっては、ＳｏＣ１０２は高性能ネットワーキングサービス、高性能計算サービス、ネットワーキングのみのサービスまたはサーバのみのサービスを提供するように構成されてよい。
【０１０７】
ステップ１４０４では、第１Ｉ／Ｏサブシステムにある複数の第１Ｉ／Ｏリソースの少なくとも１つを、複数の計算サブシステムにある１つ以上の計算サブシステムにステアリングするために、及び第２Ｉ／Ｏサブシステムにある複数の第２Ｉ／Ｏリソースの少なくとも１つを、複数の計算サブシステムにある１つ以上の計算サブシステムにステアリングするために、ステアリング構成が決定される。図３に戻って参照すると、管理計算サブシステム２０６は、第１Ｉ／Ｏサブシステム３０２にある複数の第１Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするために、及び第２Ｉ／Ｏサブシステム３０４にある複数の第２Ｉ／Ｏリソースの少なくとも１つを、ネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするために、ステアリング構成を決定し得る。いくつかの実施形態では、図４Ａ〜図４Ｃ、図５、図６を参照して既に論述した通り、管理計算サブシステム２０６は１つ以上のアクセラレータをネットワーク計算サブシステム２０２またはサーバ計算サブシステム２０４にステアリングするために、ステアリング構成を決定し得る。図３を参照して既に論述した通り、場合によっては、管理計算サブシステム２０６は、適切な数及びタイプのＩ／Ｏリソースを各計算サブシステムにステアリングするためにステアリング構成を決定し得る。例えば、場合によっては、サーバ計算サブシステム２０４に比べてより多くの数のＩ／Ｏリソース及びアクセラレータがネットワーキング計算サブシステム２０２にステアリングされ得る。
【０１０８】
ステップ１４０６では、第１Ｉ／Ｏサブシステム及び第２Ｉ／Ｏサブシステムに連結されたＩ／Ｏステアリングエンジンにステアリング構成が提供され得る。図３に戻って参照
すると、管理計算サブシステム２０６は、第１Ｉ／Ｏサブシステム３０２及び第２Ｉ／Ｏサブシステム３０４に連結されたＩ／Ｏステアリングエンジン１１２にステアリング構成を提供し得る。いくつかの実施形態では、ステアリングエンジン１１２は、適切な数及びタイプのＩ／Ｏリソース及びアクセラレータを複数の計算サブシステム、例えば、ネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４にステアリングし得る。
【０１０９】
本開示技術の実施形態はＩ／Ｏリソース及びアクセラレータをＳｏＣ上の２つ以上の計算サブシステムにステアリングする柔軟性を提供できる。ＳｏＣ上のＩ／Ｏリソース及びアクセラレータをより良く利用する能力により、ホストシステムが提供する、種々の計算サービスに対するネットワーク及びストレージ帯域幅は結果的に改善できる。
【０１１０】
図１５は、少なくとも１つの実施形態例による、１つ以上のネットワークを介して接続される１つ以上のサービスプロバイダコンピュータ及び／またはユーザデバイスを含む、本明細書に記載の特徴及びシステムのためのアーキテクチャ例を例示する。図１〜１３に記載のデバイスは、図１５に記載のコンピューティングデバイスの１つ以上の構成要素を使用してよく、あるいは図１５に記載の１つ以上のコンピューティングデバイスを表してよい。アーキテクチャ１５００では、１人以上のユーザ１５０２はユーザコンピューティングデバイス１５０４（１）〜（Ｎ）（総称してユーザデバイス１５０４）を利用し、１つ以上のネットワーク１５０８を介して、アプリケーション１５０６（例えば、ウェブブラウザまたはモバイルデバイスアプリケーション）にアクセスしてよい。いくつかの態様では、コンピューティングリソースサービスまたはサービスプロバイダによりアプリケーション１５０６をホスト、管理及び／または提供してよい。１つ以上のサービスプロバイダコンピュータ１５１０は、ユーザ（複数可）１５０２が対話し得るユーザデバイス１５０４上で実行するように構成されるネイティブアプリケーションを提供してよい。サービスプロバイダコンピュータ（複数可）１５１０は、いくつかの例では、クライアントエンティティ、低遅延データ記憶、耐久性のあるデータ記憶、データアクセス、管理、仮想化、クラウドベースソフトウェアソリューション、電子コンテンツ性能管理等などであるが、これらに限定されないコンピューティングリソースを提供してよい。サービスプロバイダコンピュータ（複数可）１５１０はさらに、ウェブホスティング、コンピュータアプリケーション開発及び／または実装プラットフォーム、前述の組み合わせなどを、ユーザ（複数可）１５０２に提供するように動作可能であってよい。サービスプロバイダコンピュータ（複数可）１５１０は、いくつかの例では、１つ以上のサードパーティコンピュータ１５１２と通信してよい。
【０１１１】
いくつかの例では、ネットワーク（複数可）１５０８は、ケーブルネットワーク、インターネット、無線ネットワーク、セルラネットワークならびに他のプライベート及び／またはパブリックネットワークなどの多くの様々なタイプのネットワークの任意の１つまたは組み合わせを含んでよい。例示の例はネットワーク（複数可）１５０８上でアプリケーション１５０６にアクセスしているユーザ（複数可）１５０２を表す一方、記載された技法は、ユーザ（複数可）１５０２がユーザデバイス（複数可）１５０４を介して、固定電話上で、キオスクを介して、または任意の他の様式で、サービスプロバイダコンピュータ（複数可）１５１０と対話する例に、同様に適用されてよい。記載された技法が、非クライアント／サーバ配置（例えば、ローカルに記憶されたアプリケーション等）だけでなく、他のクライアント／サーバ配置（例えば、セットトップボックス等）に適用されてよいことがさらに留意される。
【０１１２】
簡単に上述した通り、アプリケーション１５０６により、ユーザ（複数可）１５０２は、ウェブコンテンツ（例えば、ウェブページ、音楽、ビデオ等）にアクセスすることなど、サービスプロバイダコンピュータ（複数可）１５１０と対話することが可能になり得る
。サーバのクラスタ内またはサーバファームとしておそらく配置されるサービスプロバイダコンピュータ（複数可）１５１０は、アプリケーション１５０６及び／またはクラウドベースのソフトウェアサービスをホストしてよい。他のサーバアーキテクチャはさらに、アプリケーション１５０６をホストするためにも使用されてよい。アプリケーション１５０６は、多くのユーザ１５０２からの要求を処理し、それに応答して、種々のアイテムウェブページを供給することが可能であってよい。アプリケーション１５０６は、ソーシャルネットワーキングサイト、オンライン小売店、情報サイト、ブログサイト、検索エンジンサイト、ニュース及びエンターテイメントサイトなどを含む、ユーザ対話をサポートする任意のタイプのウェブサイトを提供できる。上述の通り、記載された技法は、ユーザデバイス（複数可）１４０４上で実行している他のアプリケーションなどのアプリケーション１５０６の外部で同様に実施できる。
【０１１３】
ユーザデバイス（複数可）１５０４は、携帯電話、スマートフォン、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップコンピュータ、シンクライアントデバイス、タブレットＰＣ、電子書籍（ｅ−ｂｏｏｋ）リーダ等であるがそれらに限定されない、任意のタイプのコンピューティングデバイスであってよい。いくつかの例において、ユーザデバイス（複数可）１５０４は、ネットワーク（複数可）１５０８を介して、または他のネットワーク接続を介して、サービスプロバイダコンピュータ（複数可）１５１０と通信状態にあってよい。追加的に、ユーザデバイス（複数可）１５０４は、サービスプロバイダコンピュータ（複数可）１５１０により管理されるか、制御されるか、別様にはその一部である分散システムの一部（例えば、サービスプロバイダコンピュータ１５１０に統合されるコンソールデバイス）であってよい。
【０１１４】
１つの例示的な構成において、ユーザデバイス（複数可）１５０４は、少なくとも１つのメモリ１５１４及び１つ以上の処理ユニット（またはプロセッサ（複数可）１５１６）を含んでよい。プロセッサ（複数可）１５１６は、ハードウェア、コンピュータ実行可能命令、ファームウェアまたはそれらの組み合わせにおいて適切に実装されてよい。プロセッサ（複数可）１５１６のコンピュータ実行可能命令またはファームウェア実装は、記載された種々の機能を行うために任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令またはマシン実行可能命令を含んでよい。ユーザデバイス（複数可）１５０４はさらに、ユーザデバイス（複数可）１５０４に関連する地理的位置情報を提供及び／または記録するための地理的位置デバイス（例えば、全地球測位システム（ＧＰＳ）デバイスなど）を含んでよい。
【０１１５】
メモリ１５１４は、プロセッサ（複数可）１５１６上でロード可能及び実行可能であるプログラム命令、ならびに、これらのプログラムの実行中に生成されたデータを記憶してよい。ユーザデバイス（複数可）１５０４の構成及びタイプに応じて、メモリ１５１４は揮発性（ランダムアクセスメモリ（ＲＡＭ）など）及び／または不揮発性（読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ等など）であってよい。ユーザデバイス（複数可）１５０４はさらに、磁気ストレージ、光学ディスク及び／またはテープストレージを含むがそれらに限定されない、追加の取り外し可能ストレージ及び／または取り外し不可能ストレージを含んでよい。ディスクドライブ及びそれらの関連するコンピュータ可読媒体は、コンピューティングデバイスに、コンピュータ可読命令、データ構造、プログラムモジュール及び他のデータの不揮発性ストレージを提供してよい。いくつかの実装において、メモリ１５１４は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはＲＯＭなどの複数の異なるタイプのメモリを含んでよい。
【０１１６】
さらに詳細にメモリ１５１４のコンテンツに注目すると、メモリ１５１４は、ブラウザアプリケーション１５０６または専用アプリケーション（例えば、スマートフォンアプリ
ケーション、タブレットアプリケーション等）を介するなど、少なくとも１人のユーザが提供する入力要素または電子サービスウェブページを含む、本明細書に開示された特徴を実装するためのオペレーティングシステムと、１つ以上のアプリケーションプログラムまたはサービスとを含んでよい。ブラウザアプリケーション１５０６は、サービスプロバイダコンピュータ（複数可）１５１０と対話するためのウェブサイトまたは他のインターフェースを受信、記憶及び／または表示するように構成されてよい。追加的に、メモリ１５１４は、アクセス認証情報及び／または他のユーザ情報（ユーザＩＤ、パスワード及び／または他のユーザ情報などであるが、これらに限定されない）を記憶してよい。いくつかの例では、ユーザ情報は、アカウントアクセス要求を認証するための情報（デバイスＩＤ、クッキー、ＩＰアドレス、位置などであるが、これらに限定されない）を含んでよい。さらに、ユーザ情報は、セキュリティ質問に対してユーザが提供した応答またはユーザデバイス１５０４により得られる地理的位置を含んでよい。
【０１１７】
いくつかの態様では、サービスプロバイダコンピュータ（複数可）１５１０はさらに、任意のタイプのコンピューティングデバイスであってよく、携帯電話、スマートフォン、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ、シンクライアントデバイス、タブレットＰＣ等などであるが、これらに限定されない。追加的に、いくつかの実施形態では、サービスプロバイダコンピュータ（複数可）１５１０は、ホスト型コンピューティング環境に実装された１つ以上の仮想マシンにより実行されることに留意すべきである。ホスト型コンピューティング環境は、１つ以上の迅速に提供及び解放されるコンピューティングリソースを含んでよく、コンピューティングリソースは、コンピューティングデバイス、ネットワーキングデバイス及び／またはストレージデバイスを含んでよい。ホスト型コンピューティング環境はさらに、クラウドコンピューティング環境と呼ばれてよい。いくつかの例では、サービスプロバイダコンピュータ（複数可）１５１０は、ユーザデバイス（複数可）１５０４及び／または他のサービスプロバイダと、ネットワーク（複数可）１５０８を介して、または他のネットワーク接続を介して通信状態にあってよい。サービスプロバイダコンピュータ（複数可）１５１０は、１つ以上のサーバを含んでよく、おそらくクラスタ内に、サーバファームとして、または互いに関連しない別個のサーバとして、配置される。これらのサーバは、本明細書で記載したキーワード分類及び評価機能サービスを、統合された分散コンピューティング環境の一部として実施するように構成されてよい。
【０１１８】
１つの例示的な構成において、サービスプロバイダコンピュータ（複数可）１５１０は、少なくとも１つのメモリ１５１８及び１つ以上の処理ユニット（またはプロセッサ（複数可）１５２０）を含んでよい。プロセッサ（複数可）１５２０は、ハードウェア、コンピュータ実行可能命令、ファームウェアまたはそれらの組み合わせにおいて適切に実装されてよい。プロセッサ（複数可）１５２０のコンピュータ実行可能命令またはファームウェア実装は、記載された種々の機能を行うために任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令またはマシン実行可能命令を含んでよい。
【０１１９】
場合によっては、ハードウェアプロセッサ（複数可）１５２０はシングルコアプロセッサまたはマルチコアプロセッサであってよい。マルチコアプロセッサは同じプロセッサ内の複数の処理ユニットを含んでよい。いくつかの実施形態では、マルチコアプロセッサは、バス及びマルチコア間の第２または第３レベルのキャッシュなどのある特定のリソースを共有してよい。場合によっては、シングルまたはマルチコアプロセッサの各コアはさらに、複数の実行論理プロセッサ（またはスレッド）を含んでよい。（複数の論理プロセッサをサポートする）係るコアにおいて、実行パイプラインのいくつかのステージ及びさらに低レベルのキャッシュはさらに共有されてよい。
【０１２０】
メモリ１５１８は、プロセッサ（複数可）１５２０上でロード可能及び実行可能である
プログラム命令、ならびに、これらのプログラムの実行中に生成されたデータを記憶してよい。サービスプロバイダコンピュータ（複数可）１５１０の構成及びタイプに応じて、メモリ１５１８は揮発性（ＲＡＭなど）及び／または不揮発性（ＲＯＭ、フラッシュメモリ等など）であってよい。サービスプロバイダコンピュータ（複数可）１５１０またはサーバはさらに、追加のストレージ１５２２を含んでよく、ストレージ１５２２は取り外し可能ストレージ及び／または取り外し不可能ストレージを含んでよい。追加のストレージ１５２２は、磁気ストレージ、光学ディスク及び／またはテープストレージを含んでよいが、これらに限定されない。ディスクドライブ及びそれらの関連するコンピュータ可読媒体は、コンピューティングデバイスのためのコンピュータ可読命令、データ構造、プログラムモジュール及び他のデータの不揮発性ストレージを提供してよい。いくつかの実装において、メモリ１５１８は、ＳＲＡＭ、ＤＲＡＭまたはＲＯＭなどの複数の異なるタイプのメモリを含んでよい。
【０１２１】
メモリ１５１８、取り外し可能及び取り外し不可能の両方の追加のストレージ１５２２は全て、コンピュータ可読記憶媒体の例である。例えば、コンピュータ可読記憶媒体は、情報（コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど）の記憶のための任意の方法または技術で実装された揮発性または不揮発性、取り外し可能または取り外し不可能な媒体を含んでよい。メモリ１５１８及び追加のストレージ１５２２は全て、コンピュータ記憶媒体の例である。サービスプロバイダコンピュータ（複数可）１５１０に存在し得る追加タイプのコンピュータ記憶媒体としては、ＰＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤもしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または任意の他の媒体であって、所望の情報を記憶するために使用可能であり、サービスプロバイダコンピュータ（複数可）１５１０がアクセス可能なものを含んでよいが、これらに限定されない。前述の任意の組み合わせはさらに、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１２２】
代替的に、コンピュータ可読通信媒体は、コンピュータ可読命令、プログラムモジュールまたはデータ信号内で送信される他のデータ（搬送波または他の送信など）を含んでよい。しかしながら、本明細書で使用する場合、コンピュータ可読記憶媒体にはコンピュータ可読通信媒体は含まれない。
【０１２３】
サービスプロバイダコンピュータ（複数可）１５１０はさらに、通信接続（複数可）１５２４であって、サービスプロバイダコンピュータ（複数可）１５１０が、記憶されたデータベース、別のコンピューティングデバイスもしくはサーバ、ユーザ端末及び／またはネットワーク（複数可）１５０８上の他のデバイスと通信することを可能にする通信接続（複数可）１５２４を包含してよい。サービスプロバイダコンピュータ（複数可）１５１０はさらに、Ｉ／Ｏデバイス（複数可）１５２６（キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、ディスプレイ、スピーカ、プリンタなど）を含んでよい。
【０１２４】
メモリ１５１８は、オペレーティングシステム１５２８、１つ以上のデータストア１５３０及び／または任意にＩ／Ｏステアリングエンジン１５３２、リソースモジュール１５４０及び複数の計算サブシステムモジュール１５４２を含む本明細書に開示の特徴を実施するための１つ以上のアプリケーションプログラムもしくはサービスを含んでよい。いくつかの実施形態では、リソースモジュール１５４０は複数のＩ／Ｏリソース及びアクセラレータを含み得る。いくつかの実施形態では、Ｉ／Ｏステアリングエンジン１５３２はＩ／Ｏステアリングエンジン１１２と類似し得る。複数の計算サブシステムモジュール１５４２はネットワーク計算サブシステム２０２及びサーバ計算サブシステム２０４を含み得る。本明細書に記載のモジュールは、ソフトウェアモジュール、ハードウェアモジュール
またはその適切な組み合わせでよい。モジュールがソフトウェアモジュールの場合、モジュールは非一時的なコンピュータ可読媒体上に具現化され、本明細書に記載の任意のコンピュータシステムのプロセッサにより処理できる。記載の処理及びアーキテクチャは、任意のユーザ対話の前に、リアルタイムモードまたは非同時モードのいずれかで行うことができることに留意すべきである。モジュールは図１５に提示された様式で構成されてよく、及び／または本明細書に記載の機能は個別のモジュールとして存在する１つ以上のモジュールにより提供することができ、及び／または本明細書に記載のモジュール機能は複数のモジュールにわたり広がり得る。
【０１２５】
図１６は、種々の実施形態による、態様を実施するための環境例１６００の態様を例示する。理解される通り、説明の目的上、ウェブベースの環境が使用されるが、適切であれば、種々の実施形態を実装するために様々な環境が使用され得る。環境は、電子クライアントデバイス１６０２を含み、このデバイスは、適切なネットワーク１６０４上で要求、メッセージまたは情報を送信及び受信するように、ならびにデバイスのユーザに情報を返すように動作可能な、任意の適切なデバイスを含んでよい。係るクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子書籍リーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワークもしくは任意の他の係るネットワークまたはそれらの組み合わせを含む、任意の適切なネットワークを含んでよい。係るシステムに使用される構成要素は、選択されるネットワーク及び／または環境のタイプに少なくとも部分的に依存してよい。係るネットワークを介した通信のためのプロトコル及び構成要素は周知であり、本明細書では詳細に述べない。ネットワーク上の通信は、有線接続または無線接続及びそれらの組み合わせによって使用可能になり得る。本例では、ネットワークはインターネットを含み、環境は要求を受信及びそれに応答するコンテンツの供給を行うウェブサーバ１６０６を含むが、他のネットワークの場合、同様の目的を果たす代替デバイスが使用できることが当業者には明らかであろう。
【０１２６】
例示の環境は、少なくとも１つのアプリケーションサーバ１６０８及びデータストア１６１０を含む。連結されるかまたは別様に構成可能であり、適切なデータストアからデータを取得するなどのタスクを行うために対話可能な、いくつかのアプリケーションサーバ、層または他の要素、処理もしくは構成要素が存在し得ることを理解すべきである。本明細書で使用される場合、用語「データストア」は、任意の標準型、分散型またはクラスタ型の環境において、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス及びデータ記憶媒体を含み得る、データの記憶、アクセス及び検索が可能な任意のデバイスまたはデバイスの組み合わせを指す。アプリケーションサーバは、クライアントデバイスに対する１つ以上のアプリケーションの態様を実行し、アプリケーションに対する大部分のデータアクセス及びビジネス論理を処理するために、必要に応じてデータストアに統合するための、任意の適切なハードウェア及びソフトウェアを含んでよい。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、オーディオ及び／またはビデオなどのコンテンツを生成することが可能であり、これをウェブサーバによって、本例ではハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張可能マークアップ言語（「ＸＭＬ」）または別の適切な構造言語の形態でユーザに供給してよい。全ての要求及び応答の処理、ならびにクライアントデバイス１６０２とアプリケーションサーバ１６０８との間のコンテンツの送達は、ウェブサーバによって処理可能である。本明細書で述べられる構造化コードは、本明細書の他の場所で述べられるような任意の適切なデバイスまたはホストマシン上で実行可能であるため、ウェブサーバ及びアプリケーションサーバは必須ではなく単なる例示の構成要素であることを理解すべきである。
【０１２７】
データストア１６１０は、特定の態様に関するデータを記憶するための、いくつかの個別のデータテーブル、データベースまたは他のデータ記憶機構及び媒体を含んでよい。例えば、例示のデータストアは、製造データ１６１２及びユーザ情報１６１６を記憶するための機構を含み、これを使用して製造側にコンテンツを供給してよい。データストアはさらに、ログデータ１６１４を記憶するための機構を含むように示されており、これは報告、分析または他の係る目的に使用してよい。データストアに記憶する必要があり得る多くの他の態様が存在し得ることを理解すべきであり、例えば、適切であるものとして上記で列挙した機構のいずれか、またはデータストア１６１０の追加の機構に記憶可能なページイメージ情報及びアクセス権情報などに対してのものである。データストア１６１０は、それに関連付けられた論理を介してアプリケーションサーバ１６０８から命令を受信し、それに応答してデータの取得、更新または別様の処理を行うように、動作可能である。一例では、ユーザはある特定のタイプのアイテムに対する検索要求を提出する可能性がある。この場合、データストアは、ユーザの識別を検証するためにユーザ情報にアクセスする可能性があり、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することができる。次いで、ユーザがユーザデバイス１６０２上でブラウザを介して見ることができるウェブページ上の結果一覧においてなど、情報をユーザに返すことができる。対象の特定アイテムに関する情報は、ブラウザの専用ページまたはウィンドウで見ることができる。
【０１２８】
各サーバは、通常、そのサーバの一般的な管理及び動作に関する実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、通常、サーバのプロセッサによって実行された場合、サーバがその目的とする機能を行えるようにする命令を記憶するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等）を含むことになる。オペレーティングシステム及びサーバの一般的な機能性に対する好適な実装は既知であるか、または市販されており、当業者によって、特に本明細書における開示に鑑みて、容易に実装される。
【０１２９】
一実施形態における環境は、１つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する、分散型コンピューティング環境である。しかしながら、当業者であれば、係るシステムが、図１６に示されるよりも少ないかまたは多い数の構成要素を有するシステム内で、等しく良好に動作可能であることを理解されよう。したがって、図１６のシステム１６００の図示は、本来は例示的なものであり、本開示の範囲を限定するものと解釈されるべきではない。
【０１３０】
種々の実施形態は、いくつかの場合、多数のアプリケーションのいずれかを動作するように使用可能な１つ以上のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含んでよい、多種多様な動作環境でさらに実施できる。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどの多数の汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行し、多数のネットワーキングプロトコル及びメッセージングプロトコルをサポートすることが可能な、セルラ式、無線及びハンドヘルドのデバイスのいずれかを含んでよい。係るシステムはさらに、開発及びデータベース管理などの目的で多様な市販のオペレーティングシステム及び他の既知のアプリケーションのいずれかを実行する、多数のワークステーションを含んでよい。これらのデバイスは、ダミー端末、シンクライアント、ゲームシステム及びネットワークを介して通信可能な他のデバイスなどの、他の電子デバイスをさらに含んでよい。
【０１３１】
ほとんどの実施形態は、トランスミッションコントロールプロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、開放型システム間相互接続（「ＯＳＩ」）、ファイル
トランスファプロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵｐｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）及びＡｐｐｌｅＴａｌｋなどの、多様な市販のプロトコルのいずれかを使用する通信をサポートするための、当業者によく知られた少なくとも１つのネットワークを利用する。例えば、ネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク及びそれらの任意の組み合わせとなり得る。
【０１３２】
ウェブサーバを利用する実施形態では、ウェブサーバは、ハイパーテキストトランスファプロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、共通ゲートウェイインターフェース（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａ（登録商標）サーバ及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのいずれかを実行することができる。サーバ（複数可）はさらに、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃もしくはＣ＋＋などの任意のプログラミング言語、またはＰｅｒｌ、ＰｙｔｈｏｎもしくはＴＣＬなどの任意のスクリプト言語、ならびにそれらの組み合わせで記述された、１つ以上のスクリプトまたはプログラムとして実装してよい、１つ以上のウェブアプリケーションを実行することなどにより、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行可能であってよい。サーバ（複数可）はさらに、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）及びＩＢＭ（登録商標）から市販されているものを限定なしに含む、データベースサーバを含んでよい。
【０１３３】
環境はさらに、前述のように、多様なデータストアならびに他のメモリ及び記憶媒体を含んでよい。これらは、１つ以上のコンピュータに対してローカルな（及び／または内部に常駐した）、あるいはネットワークにわたるコンピュータのいずれかまたは全てからリモートの、記憶媒体上などの、多様な位置に常駐可能である。実施形態の特定のセットでは、情報は当業者によく知られたストレージエリアネットワーク（「ＳＡＮ」）内に常駐してよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに寄与する機能を行うために必要な任意のファイルは、適宜、ローカル及び／またはリモートに記憶されてよい。システムがコンピュータ化されたデバイスを含む場合、それぞれの係るデバイスは、バスを介して電気的に結合し得るハードウェア要素を含むことが可能であり、要素は、例えば、少なくとも１つの中央処理ユニット（「ＣＰＵ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド）、及び少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタまたはスピーカ）を含む。係るシステムはさらに、ディスクドライブ、光学ストレージデバイス及びランダムアクセスメモリ（「ＲＡＭ」）または読み出し専用メモリ（「ＲＯＭ」」などのソリッドステートストレージデバイスなどの、１つ以上のストレージデバイス、ならびに取り外し可能な媒体デバイス、メモリカード、フラッシュカード等を含んでよい。
【０１３４】
係るデバイスはさらに、上記の通り、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）及び作業メモリを含んでよい。コンピュータ可読記憶媒体リーダは、リモート、ローカル、固定及び／または取り外し可能ストレージデバイスを表す、コンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的及び／またはより永続的に包含する、記憶する、伝達する及び検索するための記憶媒体に、接続可能か、またはそれらを受信するように構成可能である。システム及び種々のデバイスはさらに、通常、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、少なくとも１つの作業メモリデバイス内に配置された、多数のソフトウェアアプリケーション、モジュール、サービスまたは他の要素を含むことになる。代替的な実
施形態は、上記からの多数の変形形態を有してよいことを理解すべきである。例えば、カスタマイズされたハードウェアはさらに、ハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）またはその両方で使用される可能性があり、及び／または特定の要素をハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）またはその両方で実装する可能性がある。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続を用いてよい。
【０１３５】
コードまたはコードの一部を包含するための記憶媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電気的に消去可能なプログラム可能読み出し専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイスを含む、コンピュータ可読命令、データ構造、プログラムモジュールもしくは他のデータなどの情報の記憶及び／または伝達用の任意の方法または技術で実装された、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体などであるがこれらに限定されない記憶媒体及び通信媒体、あるいは所望の情報を記憶するために使用可能であり、システムデバイスによるアクセス可能な任意の他の媒体を含む、当分野で知られているかまたは使用されている任意の適切な媒体を含んでよい。当業者であれば、本明細書で提供された開示及び教示に基づき、種々の実施形態を実装するための他の手段及び／または方法を理解されよう。
【０１３６】
したがって、本明細書及び図面は、限定的ではなく例示的な意味であるとみなされる。しかしながら、特許請求の範囲に記載された本開示のより広義な趣旨及び範囲から逸脱することなく、本明細書に対する種々の修正及び変更が行われ得ることは明白であろう。
【０１３７】
開示の実施形態は以下の条項を考慮して記載され得る。
【０１３８】
条項１．ホストシステムと通信するように構成されるシステムオンチップ（ＳｏＣ）であり、
計算サービスを提供するためのサーバ計算サブシステムと、
前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステムと、
複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステムと、
複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムと、
前記第１Ｉ／Ｏサブシステム及び前記第２Ｉ／Ｏサブシステムに連結されるＩ／Ｏステアリングエンジンであり、
前記複数の第１Ｉ／Ｏリソースの少なくとも１つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングし、
前記複数の第２Ｉ／Ｏリソースの少なくとも１つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングするように構成される前記Ｉ／Ｏステアリングエンジンと
を備える、前記ＳｏＣ。
【０１３９】
条項２．前記第１Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、前記ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとをさらに含む、条項１に記載のＳｏＣ。
【０１４０】
条項３．前記第２Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、前記ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとをさらに含む、先行条項のいずれかに記載
のＳｏＣ。
【０１４１】
条項４．１つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記アクセラレータの少なくとも１つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングするようにさらに構成される、先行条項のいずれかに記載のＳｏＣ。
【０１４２】
条項５．ホストシステムと通信するように構成されるシステムオンチップ（ＳｏＣ）であり、
複数の計算サブシステムと、
複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステムと、
前記第１Ｉ／Ｏサブシステムに連結されるＩ／Ｏステアリングエンジンであり、前記複数の第１Ｉ／Ｏリソースの少なくとも１つを前記複数の計算サブシステムにある１つ以上の計算サブシステムに導くように構成される、前記Ｉ／Ｏステアリングエンジン
とを備える、前記ＳｏＣ。
【０１４３】
条項６．前記ＳｏＣは複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数の第２Ｉ／Ｏリソースの少なくとも１つを前記複数の計算サブシステムにある前記１つ以上の計算サブシステムに導くようにさらに構成される、条項５に記載のＳｏＣ。
【０１４４】
条項７．前記ＳｏＣは１つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記アクセラレータの少なくとも１つを前記複数の計算サブシステムにある前記１つ以上の計算サブシステムに導くようにさらに構成される、条項５または６に記載のＳｏＣ。
【０１４５】
条項８．前記ＳｏＣは管理計算サブシステムをさらに備え、前記管理計算サブシステムは前記Ｉ／Ｏステアリングエンジンにステアリング構成を提供するように構成される、条項５〜７のいずれかに記載のＳｏＣ。
【０１４６】
条項９．前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、条項５〜８のいずれかに記載のＳｏＣ。
【０１４７】
条項１０．前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導き、前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、条項９に記載のＳｏＣ。
【０１４８】
条項１１．前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、条項９または１０に記載のＳｏＣ。
【０１４９】
条項１２．前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導くように構成される、条項９〜１１のいずれかに記載のＳｏＣ。
【０１５０】
条項１３．前記Ｉ／Ｏステアリングエンジンはネットワーク計算サブシステムキャッシュコヒーレントファブリックを介して前記ネットワーク計算サブシステムに連結され、サーバ計算サブシステムキャッシュコヒーレントファブリックを介して前記サーバ計算サブ
システムに連結される、条項９〜１２のいずれかに記載のＳｏＣ。
【０１５１】
条項１４．前記ＳｏＣは複数のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数のアクセラレータの１つ以上を前記ネットワーク計算サブシステムに導き、前記複数のアクセラレータの１つ以上を前記サーバ計算サブシステムに導くようにさらに構成される、条項９〜１３のいずれかに記載のＳｏＣ。
【０１５２】
条項１５．前記第１Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、条項５〜１４のいずれかに記載のＳｏＣ。
【０１５３】
条項１６．前記第２Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、条項５〜１５のいずれかに記載のＳｏＣ。
【０１５４】
条項１７．システムオンチップ（ＳｏＣ）にあるＩ／Ｏリソースをステアリングする方法であり、
複数の計算サブシステムにある１つ以上の計算サブシステムをアクティブ化することと、
第１Ｉ／Ｏサブシステムにある複数の第１Ｉ／Ｏリソースの少なくとも１つを前記１つ以上の計算サブシステムにステアリングするために、及び第２Ｉ／Ｏサブシステムにある複数の第２Ｉ／Ｏリソースの少なくとも１つを前記１つ以上の計算サブシステムにステアリングするためにステアリング構成を決定することと、
前記第１Ｉ／Ｏサブシステム及び前記第２Ｉ／Ｏサブシステムに連結されたＩ／Ｏステアリングエンジンに前記ステアリング構成を提供することと
を備える、前記方法。
【０１５５】
条項１８．前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、条項１７に記載の方法。
【０１５６】
条項１９．前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上は前記ネットワーク計算サブシステムにステアリングされる、条項１８に記載の方法。
【０１５７】
条項２０．前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上は前記サーバ計算サブシステムにステアリングされる、条項１８または１９に記載の方法。
【０１５８】
他の変形形態は本開示の趣旨の範囲内である。したがって、開示された技法は種々の修正及び代替構成の対象となり得るが、そのうちのある特定の例示された実施形態が図面に示されており、上記で詳細に説明された。しかしながら、開示された１つの特定の形態または複数の特定の形態に本開示を限定することは意図されておらず、反対に、添付の特許請求の範囲に定義された通り本開示の趣旨及び範囲内にある全ての修正、代替構成及び等価物をカバーするよう意図されていることを理解すべきである。
【０１５９】
開示された実施形態を記述する文脈での（特に以下の特許請求の範囲の文脈での）用語「ａ」及び「ａｎ」及び「ｔｈｅ」及び同様の指示対象の使用は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾しない限り、単数形及び複数形の両方をカバーするものと解釈されるものである。用語「ｃｏｍｐｒｉｓｉｎｇ（備える）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」及び「ｃｏｎｔａｉｎｉｎｇ（包含する）」は、別段に記載されていない限り、非限定（すなわち「含むが限定されない」ことを意味する）用語として解釈されるものである。用語「接続された」は、たとえ何らかの介入が存在していても、部分的または全体的に包含される、連結される、または互いに接合されるとして解釈されるものである。本明細書での値の範囲の列挙は、本明細書で別段に指示されていない限り、範囲内にある各個別の値を個々に指す省略方法として機能することが単に意図されており、各個別の値は、あたかも本明細書に個々に列挙されているかのように本明細書に組み込まれる。本明細書に記載された全ての方法は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で行うことができる。本明細書で提供された任意及び全ての例または例示の表現（例えば、「などの」）の使用は、本開示の実施形態を単により良く明らかにすることが意図されており、別段に請求されない限り、本開示の範囲に限定を課すものではない。本明細書内のいかなる表現も、任意の請求されない要素を本開示の実施に不可欠であるものとして示すものと解釈されるべきではない。
【０１６０】
語句「Ｘ、ＹまたはＺの少なくとも１つ」などの離接的な表現は、別段の定めのない限り、項目、用語などがＸ、ＹまたはＺのいずれかまたはそれらの任意の組み合わせ（例えば、Ｘ、Ｙ及び／またはＺ）であり得ることを提示するために、一般的に使用される文脈内で解釈される。したがって、係る離接的な表現は、一般的に、ある特定の実施形態が、Ｘ、Ｙ及びＺのそれぞれが存在するために、Ｘの少なくとも１つ、Ｙの少なくとも１つまたはＺの少なくとも１つを必要とすることを示すように意図されるものではなく、そうすべきでもない。
【０１６１】
本明細書には、本開示を実施するための発明者に知られた最良の方法を含む、本開示の好適な実施形態が記述されている。前述の説明を読むことで当業者にそれらの好適な実施形態の変形形態が明らかとなり得る。発明者は、当業者が係る変形形態を適切なものとして利用するものと予期し、発明者は、本明細書で具体的に記載された以外の方法で本開示が実施されることを意図する。したがって、本開示は、適用可能な法律によって許可された場合、添付の特許請求の範囲に記載された主題の全ての修正及び等価物を含む。さらに、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、全ての可能な変形形態での前述の要素の任意の組み合わせが本開示によって包含される。
【図１】
2020035453.tif 000003
【図２】
2020035453.tif 000004
【図３】
2020035453.tif 000005
【図４Ａ】
2020035453.tif 000006
【図４Ｂ】
2020035453.tif 000007
【図４Ｃ】
2020035453.tif 000008
【図５】
2020035453.tif 000009
【図６】
2020035453.tif 000010
【図７】
2020035453.tif 000011
【図８】
2020035453.tif 000012
【図９】
2020035453.tif 000013
【図１０】
2020035453.tif 000014
【図１１】
2020035453.tif 000015
【図１２】
2020035453.tif 000016
【図１３】
2020035453.tif 000017
【図１４】
2020035453.tif 000018
【図１５】
2020035453.tif 000019
【図１６】
2020035453.tif 000020
【手続補正書】
【提出日】令和1年10月30日(2019.10.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストシステムと通信するように構成されるシステムオンチップ（ＳｏＣ）であり、
計算サービスを提供するサーバ計算サブシステムと前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するネットワーク計算サブシステムとを含む、複数の計算サブシステムと、
複数の第１Ｉ／Ｏリソースを備える第１Ｉ／Ｏサブシステムと、
前記第１Ｉ／Ｏサブシステムに連結され、前記複数の第１Ｉ／Ｏリソースの第１セットを前記サーバ計算サブシステムに導き、
前記複数の第１Ｉ／Ｏリソースの第２セットを前記ネットワーク計算サブシステムに導き、
前記複数の第１Ｉ／Ｏリソースの第３セットは前記サーバ計算サブシステムと前記ネットワーク計算サブシステムの両方に導くように構成される、前記Ｉ／Ｏステアリングエンジンと、を備えるＳｏＣ。
【請求項２】
前記サーバ計算サブシステムは前記ホストシステムからオフロードされた作業負荷を処理するように構成される、請求項１に記載のＳｏＣ。
【請求項３】
前記ＳｏＣは１つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記アクセラレータの少なくとも１つを前記サーバ計算サブシステム及び前記ネットワーク計算サブシステムの少なくとも一方に導くようにさらに構成される、請求項１または請求項２に記載のＳｏＣ。
【請求項４】
前記ＳｏＣは管理計算サブシステムをさらに備え、前記管理計算サブシステムは前記Ｉ／Ｏステアリングエンジンにステアリング構成を提供するように構成される、請求項１〜請求項３のいずれか一項に記載のＳｏＣ。
【請求項５】
前記第１Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、請求項１〜請求項４のいずれか一項に記載のＳｏＣ。
【請求項６】
前記ＳｏＣは複数の第２Ｉ／Ｏリソースを備える第２Ｉ／Ｏサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数の第２Ｉ／Ｏリソースの少なくとも１つを前記サーバ計算サブシステム及び前記ネットワーク計算サブシステムの少なくとも一方に導くようにさらに構成される、請求項１〜請求項５のいずれか一項に記載のＳｏＣ。
【請求項７】
前記第２Ｉ／Ｏサブシステムは前記ホストシステムと通信する第１インターフェースと、ネットワークと通信する第２インターフェースと、前記Ｉ／Ｏステアリングエンジンと通信する第３インターフェースとを含む、請求項６に記載のＳｏＣ。
【請求項８】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導き、前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、請求項６または請求項７に記載のＳｏＣ。
【請求項９】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記ネットワーク計算サブシステムに導くように構成される、請求項６〜請求項８のいずれか一項に記載のＳｏＣ。
【請求項１０】
前記Ｉ／Ｏステアリングエンジンは前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上を前記サーバ計算サブシステムに導くように構成される、請求項６〜請求項９のいずれか一項に記載のＳｏＣ。
【請求項１１】
前記Ｉ／Ｏステアリングエンジンはネットワーク計算サブシステムキャッシュコヒーレントファブリックを介して前記ネットワーク計算サブシステムに連結され、サーバ計算サブシステムキャッシュコヒーレントファブリックを介して前記サーバ計算サブシステムに連結される、請求項１〜請求項１０のいずれか一項に記載のＳｏＣ。
【請求項１２】
前記ＳｏＣは複数のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記Ｉ／Ｏステアリングエンジンは前記複数のアクセラレータの１つ以上を前記ネットワーク計算サブシステムに導き、前記複数のアクセラレータの１つ以上を前記サーバ計算サブシステムに導くようにさらに構成される、請求項１〜請求項１１のいずれか一項に記載のＳｏＣ。
【請求項１３】
システムオンチップ（ＳｏＣ）にあるＩ／Ｏリソースをステアリングする方法であって、
計算サービスを提供するためのサーバ計算サブシステムと、ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムをアクティブ化することと、
第１Ｉ／Ｏサブシステムにある複数の第１Ｉ／Ｏリソースの第１セットを前記サーバ計算サブシステムにステアリングし、前記複数の第１Ｉ／Ｏリソースの第２セットを前記ネットワーク計算サブシステムにステアリングし、前記複数の第１Ｉ／Ｏリソースの第３セットを前記サーバ計算サブシステムと前記ネットワーク計算サブシステムの両方にステアリングするために、及び第２Ｉ／Ｏサブシステムにある複数の第２Ｉ／Ｏリソースの少なくとも１つを前記サーバー計算サブシステムとネットワーク計算サブシステムの少なくとも一方にステアリングするためにステアリング構成を決定することと、
前記第１Ｉ／Ｏサブシステム及び前記第２Ｉ／Ｏサブシステムに連結されたＩ／Ｏステアリングエンジンに前記ステアリング構成を提供することと、
を備える、Ｉ／Ｏリソースをステアリングする方法。
【請求項１４】
前記複数の第１Ｉ／Ｏリソースの１つ以上及び前記複数の第２Ｉ／Ｏリソースの１つ以上は前記ネットワーク計算サブシステムにステアリングされる、請求項１４に記載の方法。
【請求項１５】
前記サーバ計算サブシステムに導かれる前記複数の第１Ｉ／Ｏリソースの数は、前記ネットワーク計算サブシステムに導かれる前記複数の第１Ｉ／Ｏリソースの数と異なる、請求項１〜請求項１２のいずれか一項に記載のＳｏＣ。
【請求項１６】
前記サーバ計算サブシステムにステアリングされる前記複数の第１Ｉ／Ｏリソースの数は、前記ネットワーク計算サブシステムにステアリングされる前記複数の第１Ｉ／Ｏリソースの数と異なる、請求項１３または請求項１４に記載の方法。
【外国語明細書】
2020035453000001.pdf