以下の説明では、種々の実施形態が記載される。説明の目的上、実施形態の十分な理解を提供するために、特定の構成及び詳細が記載される。しかしながら、実施形態は特定の詳細を伴わずに実施され得ることが当業者には明らかであるだろう。さらに、記載されている実施形態を不明瞭にしないために、既知の特徴は省略または簡素化され得る。
一般的に、コンピューティングシステムはいくつかの異なる機能を行うために1つ以上の計算サブシステムを含み得る。場合によっては、システムは、複数のアプリケーションに対応するためにより多くのネットワーク帯域幅を必要とし得る、多数の仮想サーバインスタンスを実行している場合がある。しかしながら、大半の例では、各計算サブシステムは固定数の計算リソース及びI/Oリソースを含み得る。ゆえに、各計算サブシステムは割り当てられたI/Oリソースに基づいた性能レベルを提供することに限定され得る。場合によっては、システム上のI/Oリソースを効率的に使用することができない。例えば、計算サブシステムが作動しない場合、その計算サブシステムに割り当てられたI/Oリソースは他の計算サブシステムに使用することができない。これにより、結果的にシステムレベルでI/Oリソースを十分に利用できない場合がある。
本開示技術の実施形態は1つ以上のI/Oリソースをシステムオンチップ(SoC)上の2つ以上の計算サブシステムにステアリングすることを提供できる。例えば、SoCはホストシステム(例えば、x86サーバ)に通信可能に連結され、トラフィック監視、トラフィックシェーピング、コンピューティング等などの種々のサービスを提供し得る。いくつかの実施形態では、SoCは種々の機能を行うための複数の計算サブシステムを含み得る。例えば、ある特定の実施形態によると、SoCは、計算サービスを提供するためのサーバ計算サブシステムならびにホストシステム及びサーバサブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステムを含み得る。SoCは複数の第1I/Oリソースを備える第1I/Oサブシステム及び複数の第2I/Oリソースを備える第2I/Oサブシステムを含み得る。本開示技術の実施形態では、ステアリングエンジンは、第1I/Oリソースの少なくとも1つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングし、第2I/Oリソースの少なくとも1つを、ネットワーク計算サブシステムまたはサーバ計算サブシステムのいずれかにステアリングするように構成され得る。例えば、SoCは、様々な計算サブシステムの再構成を必要とし得る様々な機能(例えば、高性能ネットワーキング、高性能計算等)を行うための様々な構成で構成され得る。本開示技術の実施形態は、各構成に必要なI/Oリソースに適合するよう、I/Oリソースを様々なサブシステムに適宜にステアリングできる。これにより、各計算サブシステムはI/Oリソースをより効率的に使用することができ、システムのスループットが増加する。
コンピュータネットワークは、通常、データをホストし複数のクライアントまたは組織にサービスを提供できる複数のサーバを含み得る。例えば、サーバは、クラウドコンピューティング、解析、ウェブサービス、ストレージ、データベース、アプリケーション、展開サービス等などのサービスを潜在的により多くのクライアントコンピュータに提供できる。クライアントまたは組織はこれらのサービスまたはデータを使用し、ストレージ、データ処理及び管理、ウェブ及びモバイルアプリケーション、アーカイブならびに多数の他のタスクなどの多様なワークロードを供給できる。一般的に、クライアントはサーバにサービスまたはデータを要求し、サーバは、ネットワーク上で要求に対応する及び/またはデータを提供するある特定のタスクを実行することにより、応答する。ネットワークトラフィックは、ある特定の時間にサービスを要求するクライアントの数、サーバの容量等などの多数の要因に応じて変わり得る。
場合によっては、ネットワークシステムはトラフィックを規制し帯域幅の混雑を最小化するためにネットワークトラフィックを監視できる。例えば、ネットワークシステムは、ウェブサービスを様々なクライアントに提供するホストシステム(例えば、x86サーバ)に通信可能に連結され得る。ネットワークシステムは1つ以上のプロセッサコア、キャッシュ、ネットワーク高速化論理、メモリコントローラ及びI/Oサブシステム等を含み得る。いくつかの実施形態では、ネットワークシステムは、サーバ(例えば、ホストシステム)により供給されるウェブサービスに関連する、トラフィックシェーピング、ネットワークストレージ処理等などの他の機能をさらに行い得る。場合によっては、ネットワークシステムの機能性は、ホストシステムに通信可能に連結され得るシステムオンチップ(SoC)上にネットワーク計算サブシステムとして実装され得る。例えば、SoCはプラグインカードを使用して、またはホストシステムのマザーボード上にはんだ付けされることにより、ホストシステム(例えば、1つ以上のサーバ)に連結できる。
いくつかの実施形態では、SoCは、ネットワーク計算サブシステムに加えて、サーバ計算サブシステム及び管理計算サブシステムをさらに含み得る。例えば、サーバ計算サブシステムは計算サービスを提供するように構成されてよく、管理計算サブシステムはネットワーク計算サブシステム及びサーバ計算サブシステムに対するリソースを管理するよう
に構成されてよい。場合によっては、ネットワーク計算サブシステム及びサーバ計算サブシステムは固定リソースを含み得る。例えば、リソースは、処理リソース(例えば、プロセッサコア)、メモリリソース(例えば、(例えば、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、レベル3(L3)キャッシュまたはラストレベルキャッシュ、メモリコントローラ、メモリチャネル等)及びI/Oリソース(例えば、周辺デバイス、ネットワークインターフェース及びバスインターフェース)を含み得る。
一般的に、SoC上の各計算サブシステムは固定数の処理リソース及びメモリリソースで設計され得る。大半の例では、固定数のI/Oリソースがハードウェア設計により各計算サブシステムに割り当てられ得る。ある特定の例では、SoCが非対称の計算サブシステムを含む(例えば、1つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する)ように構成される場合、各計算サブシステムはその割り当てられたI/Oリソースに制限され得る。したがって、SoCにより提供されるネットワーク帯域幅及びサーバ帯域幅は、各計算サブシステムに対する固定I/O帯域幅に制限され得る。
さらに、場合によっては、I/Oリソースの一部はSoCの構成に基づき、結果的に十分に利用されていない場合がある。例えば、SoCがサーバ計算サービスのみを提供するように構成される場合、ネットワークI/Oリソースは利用できない。同様に、SoCがネットワーク計算サービスのみを提供するように構成される場合、サーバI/Oリソースは利用できない。このため、SoCのI/O帯域幅が効率的に利用できず、ゆえにシステムのスループットが減少する。
本開示技術の実施形態はI/Oリソースをシステムオンチップ(SoC)上の2つ以上の計算サブシステムにステアリングすることを提供できる。いくつかの実施形態では、計算サブシステムは1つ以上の処理コアを伴うサブシステムを含み得る。SoCはホストシステム(例えば、x86サーバ)に通信可能に連結され、トラフィック監視、トラフィックシェーピング、コンピューティング等などの種々のサービスを提供し得る。本技術のいくつかの実施形態では、SoCは、計算サービスを提供するためのサーバ計算サブシステム、ホストシステム及びサーバ計算サブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステム、リソースを管理するための管理計算サブシステム、複数の第1I/Oリソースを伴う第1I/Oサブシステム、複数の第2I/Oリソースを伴う第2I/Oサブシステム、複数のアクセラレータを備えるアクセラレータサブシステムなどの複数のサブシステムを含み得る。ある特定の実施形態では、単一のI/Oサブシステムはネットワーク計算サブシステム及びサーバ計算サブシステムに対するI/O要求を管理するために使用され得る。
本技術のある特定の実施形態では、I/Oステアリングエンジンは、複数の第1I/Oリソースの少なくとも1つを、サーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングし、複数の第2I/Oリソースの少なくとも1つを、サーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングするように構成され得る。いくつかの実施形態では、I/Oステアリングエンジンは、管理計算サブシステムにより提供されるステアリング構成に基づいて、I/Oリソースをステアリングし得る。いくつかの実施形態では、管理計算サブシステムは、1つ以上のI/Oリソースを起動時にまたは実行時に動的にステアリングするために、ステアリング構成をI/Oステアリングエンジンに提供し得る。I/Oステアリングエンジンは第1I/Oサブシステム、第2I/Oサブシステム、ネットワーク計算サブシステム及びサーバ計算サブシステムに連結され得る。ある特定の例では、SoCが非対称の計算サブシステムを含む(例えば、1つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する)ように構成される場合、I/Oステアリングエンジンは適切なI/Oリソース
を各計算サブシステムにステアリングする柔軟性を提供し得る。いくつかの他の例では、SoCがネットワーキングのみのサービスを提供するように構成される場合、I/Oステアリングエンジンは第1及び第2I/Oリソースの両方をネットワーク計算サブシステムにステアリングしてよく、SoCがサーバ計算のみのサービスを提供するように構成される場合、I/Oステアリングエンジンは第1及び第2I/Oリソースの両方をサーバ計算サブシステムにステアリングしてよい。本技術のある特定の実施形態では、I/Oステアリングエンジンはアクセラレータの少なくとも1つをサーバ計算サブシステムまたはネットワーク計算サブシステムにステアリングするようにさらに構成され得る。例えば、場合によっては、SoCがネットワーキングのみのサービスを提供するように構成される場合、I/Oステアリングエンジンは全てのI/Oリソース及びアクセラレータをネットワーク計算サブシステムにステアリングし得る。
本開示技術のある特定の実施形態によると、管理計算サブシステムは、I/Oリソース及びアクセラレータを適切な計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジンに提供し得る。いくつかの実施形態では、管理計算サブシステムは、ネットワーク計算サブシステムとサーバ計算サブシステムの両方が作動可能であると判定し得、第1I/Oリソースをネットワーク計算サブシステムにステアリングするため、及び第2I/Oリソースをサーバ計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジンに提供してよい。いくつかの実施形態では、管理計算サブシステムは、両方の計算サブシステムへの処理リソース及びメモリリソースの割り当てを基に、ステアリング構成を両方の計算サブシステムに提供し得る。ある特定の実施形態では、管理計算サブシステムはサーバ計算サブシステムが作動できないと判定し得、第1I/Oリソース及び第2I/Oリソースをネットワーク計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジンに提供してよい。ある特定の実施形態では、管理計算サブシステムはネットワーク計算サブシステムが作動できないと判定し得、第1I/Oリソース及び第2I/Oリソースをサーバ計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジンに提供してよい。いくつかの実施形態では、第1I/Oリソース及び第2I/Oリソースのステアリング構成は、デフォルト構成に基づいてよい。いくつかの実施形態では、管理計算サブシステムは、ハードウェア構成(例えば、ピンまたはヒューズ)またはソフトウェア構成(例えば、ソフトウェアレジスタのデータフィールド)に基づき、起動時に、第1I/Oリソース及び第2I/Oリソースのステアリング構成を決定してよい。いくつかの実施形態では、管理計算サブシステムは、ステアリング構成を動的に決定し、実行時にI/Oステアリングエンジンに提供してよい。例えば、管理計算サブシステムはネットワーク計算サブシステムがサーバ計算サブシステムと比べてより多くの計算リソースをある特定の時間に利用していると判定し得る。ゆえに、いくつかの実装では、管理計算サブシステムは、ネットワーク計算サブシステムにより利用される計算リソースに適合する適切なI/Oリソースをネットワーク計算サブシステムにステアリングするために、ステアリング構成を動的に更新してよい。キャッシュコヒーレントファブリックブリッジは構成された各I/Oリソースを計算サブシステムに関連し得る物理層にマッピングできる。
典型的なSoCは単一のチップに統合されたシステムの機能性を含み得る。例えば、SoCはマルチプロセッサコア、揮発性及び不揮発性のメモリモジュール、メモリコントローラ、1つ以上の内部バス、標準インターフェース、周辺装置、電圧レギュレータ、電源管理回路、発振回路及び位相同期回路などのタイミングリソース等を含むことがある。複数のチップの機能性を単一チップに実装することで製造コスト及び組立コストを削減できる。さらに、SoCは一般的、により少ない占有面積及び空間要件を有する。したがって、SoCの実装は一般的に、同じ機能性を実装するマルチチップシステムに比べて、電力の消費がより少なく、費用効果がより高い。
本開示技術の実施形態はI/OリソースをSoC上の2つ以上の計算サブシステムにステアリングする柔軟性を提供できる。SoC上のI/Oリソースをより良く利用する能力により、種々の計算サービスに対してホストシステムにより提供されるネットワーク及びストレージ帯域幅を結果的に改善できる。
本開示技術の実施形態はSoC上の2つの計算サブシステム間でI/Oリソースをステアリングするよう記載及び示されているが、本開示技術の態様は2つの計算サブシステム間のみでI/Oリソースをステアリングすることに限定されない。例えば、いくつかの実装では、本開示技術の範囲を逸脱することなく、I/OリソースはSoC上の複数(例えば、3つ以上)の計算サブシステム間にステアリングされ得る。
図1は、本明細書に記載の実施形態を行うために使用可能なシステム例100を例示する。一般的に、SoCは複数のI/Oリソースを備えるI/Oサブシステムを含むことができる。複数のI/Oリソースの1つ以上は、I/Oステアリングエンジンを使用して複数の計算サブシステムにステアリングできる。
図1は、ホストシステム104と通信するように構成されるSoC102を例示する。場合によっては、ホストシステム104は複数のクライアントにマルチテナントプラットフォームを提供し得る。例えば、ホストシステム104はクラウドコンピューティング、クラウドストレージ、解析、ウェブサービス、データベース、アプリケーション、展開サービス、ウェブサイト運用等などのサービスを様々なクライアントに提供し得る。ホストシステム104は、サーバ、例えばx86サーバを含み得る。いくつかの実施形態では、ホストシステム104の1つ以上のプロセッサはSoC102上のソケットに接続され得る。
SoC102は、第1計算サブシステム106、第2計算サブシステム108及び第N計算サブシステム110などの複数の計算サブシステムを含み得る。例えば、場合によっては、複数の計算サブシステムは2つ以上の計算サブシステムを含み得る。SoC102は、I/Oサブシステム114及びI/Oステアリングエンジン112をさらに含み得る。I/Oサブシステム114はインターフェース116を使用してホストシステム104と通信し得る。インターフェース116はペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)などの標準インターフェースに基づき得る。
いくつかの実施形態では、第1計算サブシステム106はネットワーク計算サブシステムとして構成されてよく、第2計算サブシステム108はサーバ計算サブシステムとして構成されてよい。例えば、第1計算サブシステム106はホストシステム104に対するネットワークトラフィックを少なくとも管理するように構成され得る。いくつかの実施形態では、第1計算サブシステム106はネットワークトラフィックシェーピング、ネットワーク高速化、ネットワークストレージ処理等などのネットワーク関連機能を行い得る。いくつかの実施形態では、第2計算サブシステム108は計算サービスを提供するように構成され得る。例えば、計算サービスは、種々のサイズの仮想マシンインスタンスの起動、ストレージ容量の仮想マシンへの関連付け、データ処理等を含み得る。
I/Oサブシステム114は複数のI/Oリソースを含み得る。いくつかの実施形態では、複数のI/Oリソースは内部及び外部通信用のI/Oデバイス及び種々のI/Oインターフェースを含み得る。例えば、I/Oサブシステム114は1つ以上のEthernet MAC(媒体アクセス制御)、PCIeデバイス、UART(汎用非同期送受信回路)、I2C(インターインテグレイティドサーキット)、GPIO(汎用入出力)、SATA(シリアルATA)コントローラ、SPI(シリアルペリフェラルインターフェース)ポート及び任意の他の適切なデバイスを含み得る。
I/Oステアリングエンジン112は複数のI/Oリソースの少なくとも1つを複数の計算サブシステムにある1つ以上の計算サブシステムにステアリングまたは導くように構成され得る。例えば、いくつかの実施形態では、I/Oステアリングエンジン112はI/Oリソースの1つ以上を第1計算サブシステム106に、第2計算サブシステム108に、または第1計算サブシステム106と第2計算サブシステム108の両方にステアリングするように構成され得る。いくつかの実施形態では、I/Oステアリングエンジンはステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を含み得る。しかしながら、I/Oステアリングエンジンの他の実装が可能である。
図2は、本明細書に記載の実施形態を行うために使用可能なシステム例200を例示する。一般的に、SoCは、I/Oステアリングエンジンを使用してネットワーク計算サブシステムまたはサーバ計算サブシステムにステアリングできる複数のI/Oリソースを備えるI/Oサブシステムを含むことができる。
図2は、図1を参照して論述したインターフェース116を介して、ホストシステム104と通信するように構成されるSoC102を例示する。SoC102はネットワーク計算サブシステム202、サーバ計算サブシステム204、I/Oサブシステム114、I/Oステアリングエンジン112及び管理計算サブシステム206を含み得る。いくつかの実施形態では、図1を参照して論述した通り、ネットワーク計算サブシステム202は第1計算サブシステム106であってよく、サーバ計算サブシステム204は第2計算サブシステム108であってよい。
ネットワーク計算サブシステム202はネットワークトラフィックシェーピング、ネットワーク高速化、ネットワークストレージ処理等などのネットワーク関連機能を提供するように構成され得る。いくつかの実施形態では、ネットワーク計算サブシステム202はネットワークインターフェースコントローラ(NIC)またはネットワークコプロセッサの少なくとも一部の機能を含み得る。ある特定の実施形態では、ネットワーク計算サブシステム202は、例えば、課金、レート、トラフィックシェーピング、暗号化、チョーキング等のホストシステム104が供給するウェブサービスに関連する一部の機能を含み得る。
サーバ計算サブシステム204は、例えば、仮想リソースまたは物理リソースの計算サービスをホストシステム104に提供するように構成され得る。例えば、計算サービスは、種々のサイズの仮想マシンインスタンスの起動、仮想マシンへのストレージ容量の関連付け等を要求に応じて含み得る。いくつかの実施形態では、サーバ計算サブシステム204はホストシステム104の一部の作業負荷をオフロードするために使用され得る。場合によっては、ホストシステム104はサーバ計算サブシステム204と共に高性能の計算サービスを提供し得る。例えば、ホストシステム104はターンアラウンドタイムが短いサービスの処理に集中してよく、低性能の作業負荷をサーバ計算サブシステム204にオフロードしてよく、これによりシステムのスループットを増加させる。
I/Oサブシステム114は複数のI/Oリソースを含み得る。本開示技術の実施形態では、複数のI/Oリソースはシステムのスループット要件に適合するよう、ネットワーク計算サブシステム202またはサーバ計算サブシステム204により使用され得る。いくつかの実施形態では、複数のI/Oリソースは内部及び外部通信用の周辺デバイス及び種々のI/Oインターフェースを含み得る。例えば、I/Oサブシステム114は、ホストシステム104と通信するための第1インターフェース(例えば、インターフェース116)、I/Oステアリングエンジン112と通信するための第2インターフェース及びネットワークと通信するための第3インターフェース(例えば、インターネット、イント
ラネット)を含み得る。いくつかの実施形態では、I/Oサブシステム114はさらに、Ethernet MAC(媒体アクセス制御)、PCIeデバイス、UART(汎用非同期送受信回路)、I2C(インターインテグレイティドサーキット)、GPIO(汎用入出力)、SATA(シリアルATA)コントローラ、SPI(シリアルペリフェラルインターフェース)ポート及び任意の他の適切な周辺デバイスなどの1つ以上のI/Oデバイスを含み得る。
いくつかの実施形態では、I/Oサブシステム114は、ネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングできる1つ以上のSATAコントローラ、Ethernet MAC、PCIeデバイス、SERDES I/Oマルチプレクサ、GPIO、UART等などのI/Oリソースプールを含み得る。一実施形態では、I/Oサブシステム114の全てのリソースをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングできる。別の実施形態では、ステアリングはデバイスごとに行うことができる。例えば、I/Oデバイスの第1セットはネットワーク計算サブシステム202にステアリングされてよく、I/Oデバイスの第2セットはサーバ計算サブシステム204にステアリングされてよく、I/Oデバイスの第3セットはネットワーク計算サブシステム202とサーバ計算サブシステム204の両方にステアリングされてよい。いくつかの実施形態では、サーバ計算サブシステム204より多くの数のI/Oリソースがネットワーク計算サブシステム202にステアリングされてよく、逆も同様である。例えば、SoC102の構成(例えば、高性能ネットワーキングまたは高性能計算サーバ)に応じて、計算サブシステムは、その計算サブシステムが利用する計算リソースに適合する、より多くの数のI/Oリソースを利用してよい。
いくつかの実施形態では、図3を参照して論述する通り、I/Oサブシステム114は第1I/Oサブシステム及び第2I/Oサブシステムを含み得る。例えば、第1I/Oサブシステムは、ネットワーク計算サブシステム202に対する複数の第1I/Oリソースを含んでよく、第2I/Oサブシステムはサーバ計算サブシステム204に対する複数の第2I/Oリソースを含んでよい。いくつかの実施形態では、第1I/Oサブシステムは第2I/Oサブシステムより多くのI/Oリソースを含んでよく、逆も同様である。例えば、ある例では、第1I/Oサブシステムは第2I/Oサブシステムと比べてより多くの数のEthernet MAC及びUARTを含んでよい。
I/Oステアリングエンジン112は複数のI/Oリソースの少なくとも1つをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするように構成され得る。いくつかの実施形態では、I/Oステアリングエンジンはステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を含み得る。しかしながら、I/Oステアリングエンジンの他の実装も可能である。いくつかの実施形態では、I/Oステアリングエンジン112は、管理計算サブシステム206が提供するステアリング構成に基づいて、I/Oリソースをステアリングし得る。いくつかの実施形態では、I/Oステアリングエンジン112が1つ以上の計算サブシステムにステアリングするI/Oリソースの数は動的に変化し得る。ある特定の例では、SoC102が非対称の計算サブシステムを含む(例えば、1つの計算サブシステムがもう一方の計算サブシステムより多くの処理リソース及びメモリリソースを有する)ように構成される場合、I/Oステアリングエンジン112は適切な数のI/Oリソースを各計算サブシステムにステアリングする柔軟性を提供し得る。例えば、ネットワーク計算サブシステム202がより多くの処理リソース及びメモリリソースを有する(例えば、SoC102が高性能ネットワーキングサービスを提供するように構成される)場合、I/Oステアリングエンジン112は、ネットワーク計算サブシステム202のスループット要件に対して必要なI/Oリソースに適合するよう、適切な数のI/Oリソースをステアリングし得る。同様に、サーバ計算サブシステム204がより多くの処理リソース及びメモリリソースを有
する(例えば、SoC102が高性能サーバコンピューティングサービスを提供するように構成される)場合、I/Oステアリングエンジン112は、サーバ計算サブシステム204のスループット要件に対して必要なI/Oリソースに適合するよう、適切な数のI/Oリソースをステアリングし得る。場合によっては、SoC102がネットワーキングのみのサービスを提供するように構成される場合、I/Oステアリングエンジン112は全てのI/Oリソースをネットワーク計算サブシステム202にステアリングしてよく、SoC102がサーバ計算のみのサービスを提供するように構成される場合、I/Oステアリングエンジン112は全てのI/Oリソースをサーバ計算サブシステム204にステアリングしてよい。
いくつかの実施形態では、管理計算サブシステム206は、SoC102全体のコールド起動時に、最初に実行されるように構成され得る。いくつかの実施形態では、管理計算サブシステム206は、起動時にSoC102の構成を決定し得る。例えば、いくつかの実施形態では、SoC102の構成は、計算サブシステムの構成ならびに各計算サブシステムに対する処理リソース及びメモリリソースの構成を含み得る。いくつかの実施形態では、管理計算サブシステム206は、SoC102の構成を基にステアリング構成を決定し適切なI/Oリソースを1つの計算サブシステムまたは両方の計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供するように構成されてよい。例えば、管理計算サブシステム206は、ネットワーク計算サブシステム202とサーバ計算サブシステム204の両方が作動可能であると判定し得、I/Oサブシステム114にある適切な数のI/Oリソースをネットワーク計算サブシステム202にステアリングするために、及びI/Oサブシステム114にある適切な数のI/Oリソースをサーバ計算サブシステム204にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。場合によっては、管理計算サブシステム206はサーバ計算サブシステム204が作動できないと判定し得、複数のI/Oリソースの少なくとも1つをI/Oサブシステム114からネットワーク計算サブシステム202にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。場合によっては、管理計算サブシステム206はネットワーク計算サブシステム202が作動できないと判定し得、複数のI/Oリソースの少なくとも1つをI/Oサブシステム114からサーバ計算サブシステム204にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。SoC102の構成は外部エンティティ(例えば、ネットワーク接続を介して)が提供するポリシに基づいてよく、ハードウェア構成(例えば、1つ以上のピンまたはヒューズ)に基づいてよく、またはソフトウェア構成(例えば、ソフトウェアレジスタのデータフィールド)に基づいてよい。いくつかの実施形態では、SoC102は起動時にデフォルト構成を有し得る。いくつかの実施形態では、管理計算サブシステム206は、SoCの構成を基に、様々なI/Oリソースを様々な計算サブシステムにステアリングするために、ステアリング構成を決定し得る。いくつかの実施形態では、例えば、SoCが各計算サブシステムにより、非対称の計算リソースを使用して計算サービスを提供するように構成される場合、管理計算サブシステム206は非対称な数のI/Oリソースを各計算サブシステムにステアリングするためにステアリング構成を決定し得る。いくつかの実施形態では、管理計算サブシステム206は、例えば、実行時の各計算サブシステムによる計算リソースの活用を基に、ステアリング構成を動的に更新し得る。
図3は、本開示技術のいくつかの実施形態による、SoC102の詳細図を伴うシステム300を例示する。
SoC102はネットワーク計算サブシステム202、サーバ計算サブシステム204、第1I/Oサブシステム302、第2I/Oサブシステム304、アクセラレータサブシステム306、I/Oステアリングエンジン112、管理計算サブシステム206及び
共有リソースサブシステム308を含み得る。簡潔性のために、図3は2つの計算サブシステムにステアリングされる2つのI/Oサブシステムを例示することが理解される。しかしながら、いくつかの実装では、本開示技術の範囲を逸脱することなく、3つ以上のI/Oサブシステムからの複数のI/OリソースがSoC上の複数の(例えば、3つ以上の)計算サブシステム間にステアリングされ得る。
ネットワーク計算サブシステム202は、ネットワーク計算サブシステムマルチコアプロセッサ310、L1/L2キャッシュ312、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314、L3キャッシュ316、プライベート周辺装置320及びネットワーク計算サブシステムメモリコントローラ318を含み得る。
サーバ計算サブシステム204は、サーバ計算サブシステムマルチコアプロセッサ322、L1/L2キャッシュ324、サーバ計算サブシステムキャッシュコヒーレントファブリック326、L3キャッシュ328及びネットワーク計算サブシステムメモリコントローラ330を含み得る。
ネットワーク計算サブシステムマルチコアプロセッサ310は、同じプロセッサ内に複数のマルチプロセッサコアまたは処理ユニットを含み得る。例えば、ある例では、ネットワーク計算サブシステムマルチコアプロセッサ310は12の2コアプロセッサを含み得る。ネットワーク計算サブシステムマルチコアプロセッサ310はプロセッサコアの1つ以上のプロセッサ上で複数の命令を集合的に実行するように構成され得る。命令はコンピュータ可読記憶媒体上に、例えば、コンピュータプログラムの形態で記憶され得る。コンピュータ可読記憶媒体は非一時的であり得る。いくつかの実施形態では、マルチコアプロセッサは、バスならびにレベル1(L1)キャッシュ及び/またはレベル2(L2)キャッシュなどのある特定のリソースをマルチコア間で共有し得る。例えば、場合によっては、シングルコアまたはマルチコアプロセッサの各コアは複数の実行論理プロセッサ(またはスレッド)をさらに含み得る。(複数の論理プロセッサをサポートする)係るコアでは、実行パイプラインのいくつかのステージ、さらには低レベルキャッシュ(例えば、L1またはL2)がさらに共有され得る。マルチコアプロセッサの非限定的な例の一部には、ARM社のcortex A57、MIPS、AMD社のPhenom、Intel社のATOM等が含まれ得る。
いくつかの実施形態では、L1/L2キャッシュ312は、ネットワーク計算サブシステムマルチコアプロセッサ310の複数のコア間で共有され得る。例えば、L1キャッシュは一次キャッシュとして使用されてよく、L2キャッシュは二次キャッシュとして使用されてよい。いくつかの実施形態では、L1/L2キャッシュ312は、ネットワーク計算サブシステムマルチコアプロセッサ310に内蔵され得る。例えば、1つのL1/L2キャッシュは、1つのマルチコアプロセッサに統合され得る。
ネットワーク計算サブシステムメモリコントローラ318は、DDR(ダブルデータレート)コントローラ、DDR2コントローラまたは任意の適切なメモリコントローラなどの複数のメモリコントローラを含み得る。ネットワーク計算サブシステムメモリコントローラ318は外部メモリ(例えば、システムメモリ)へのアクセスを管理するために使用され得る。例えば、外部システムメモリは、DDR同期型ダイナミックランダムアクセスメモリ(DRAM)、DDR2 DRAM、DRAM等を含み得る。いくつかの実施形態では、ネットワーク計算サブシステムメモリコントローラ318にあるメモリコントローラの数は、プロセッサコアの数、キャッシュのサイズ等に基づいてよい。
プライベート周辺装置320は、サーバ計算サブシステム204と共有できないネットワーク計算サブシステム202専用の1つ以上の周辺装置を含み得る。例えば、いくつか
の実施形態では、プライベート周辺装置320はブートROMなどの信頼できる周辺装置を含み得る。
L3キャッシュ316はラストレベルキャッシュを含み得る。いくつかの実施形態では、L3キャッシュ316は、ネットワーク計算サブシステムマルチコアプロセッサ310の複数のコア間で共有され得る。この仕様では、ラストレベルキャッシュ及びL3キャッシュという用語は互換可能に使用してよいが、一部のシステムでは、本技術の範囲を逸脱することなく、ラストレベルキャッシュはレベル2キャッシュもしくはレベル4キャッシュまたは任意の他のレベルであってよい。
ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、ネットワーク計算サブシステム202に割り当てられた全てのリソースに接続可能な物理層ファブリックを表し得る。本開示技術の実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、ネットワーク計算サブシステム202に割り当てられた全てのリソースに対する専用ハードウェアパスを可能にすることにより、ハードウェアセキュリティ及び性能/ジッタ分離を提供し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、ネットワーク計算サブシステム202の様々な構成要素間、例えば、ネットワーク計算サブシステムマルチコアプロセッサ310、L1/L2キャッシュ312、ネットワーク計算サブシステムメモリコントローラ318、L3キャッシュ316及び共有リソースサブシステム308のコヒーレンシを管理するように構成され得る。場合によっては、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、ネットワーク計算サブシステム202の通信バックボーンを表し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、全ての共有データがネットワーク計算サブシステム202内で確実にコヒーレントになるように構成され得る。例えば、ある特定の共有データが2つ以上の場所に記憶される場合(例えば、マルチプロセッサ、プロセッサの複数のコア、キャッシュ等)、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は様々な場所にある共有データの一貫性を維持するように動作し得る。いくつかの実施形態では、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314は、ネットワーク計算サブシステム202の様々な構成要素間のコヒーレンシを維持するために、コヒーレンシコントローラ及びコヒーレンシディレクトリを含み得る。
サーバ計算サブシステムマルチコアプロセッサ322は、同じプロセッサ内に複数のマルチプロセッサコアまたは処理ユニットを含み得る。例えば、ある例では、サーバ計算サブシステムマルチコアプロセッサ322は12の2コアプロセッサを含み得る。サーバ計算サブシステムマルチコアプロセッサ322はプロセッサコアの1つ以上のプロセッサ上で複数の命令を集合的に実行するように構成され得る。命令はコンピュータ可読記憶媒体上に、例えば、コンピュータプログラムの形態で記憶され得る。コンピュータ可読記憶媒体は非一時的であり得る。
いくつかの実施形態では、L1/L2キャッシュ324は、サーバ計算サブシステムマルチコアプロセッサ322の複数のコア間で共有され得る。例えば、L1キャッシュは一次キャッシュとして使用されてよく、L2キャッシュは二次キャッシュとして使用されてよい。いくつかの実施形態では、L1/L2キャッシュ324は、サーバ計算サブシステムマルチコアプロセッサ322に内蔵され得る。
サーバ計算サブシステムメモリコントローラ330は、DDRコントローラ、DDR2コントローラまたは任意の適切なメモリコントローラなどの複数のメモリコントローラを含み得る。サーバ計算サブシステムメモリコントローラ330は外部メモリへのアクセス
を管理するために使用され得る。いくつかの実施形態では、サーバ計算サブシステムメモリコントローラ330にあるメモリコントローラの数は、プロセッサコアの数、キャッシュのサイズ等に基づいてよい。
プライベート周辺装置332は、ネットワーク計算サブシステム202と共有できないサーバ計算サブシステム204専用の1つ以上の周辺装置を含み得る。例えば、いくつかの実施形態では、プライベート周辺装置332はブートROMなどの信頼できる周辺装置を含み得る。
L3キャッシュ328はラストレベルキャッシュを含み得る。いくつかの実施形態では、L3キャッシュ328は、サーバ計算サブシステムマルチコアプロセッサ322の複数のコア間で共有され得る。
サーバ計算サブシステムキャッシュコヒーレントファブリック326は、サーバ計算サブシステム204に割り当てられた全てのリソースに接続可能な物理層ファブリックを表し得る。本開示技術の実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック326は、サーバ計算サブシステム204に割り当てられた全てのリソースに対する専用ハードウェアパスを可能にすることにより、ハードウェアセキュリティ及び性能/ジッタ分離を提供し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック326は、サーバ計算サブシステム204の様々な構成要素間、例えば、サーバ計算サブシステムマルチコアプロセッサ322、L1/L2キャッシュ324、サーバ計算サブシステムメモリコントローラ330、L3キャッシュ328及び共有リソースサブシステム308のコヒーレンシを管理するように構成され得る。場合によっては、サーバ計算サブシステムキャッシュコヒーレントファブリック326は、サーバ計算サブシステム204の通信バックボーンを表し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック326は、全ての共有データがサーバ計算サブシステム204内で確実にコヒーレントになるように構成され得る。例えば、ある特定の共有データが2つ以上の場所に記憶される場合(例えば、マルチプロセッサ、プロセッサの複数のコア、キャッシュ等)、サーバ計算サブシステムキャッシュコヒーレントファブリック326は様々な場所にある共有データの一貫性を維持するように動作し得る。いくつかの実施形態では、サーバ計算サブシステムキャッシュコヒーレントファブリック326は、サーバ計算サブシステム204の様々な構成要素間のコヒーレンシを維持するために、コヒーレンシコントローラ及びコヒーレンシディレクトリを含み得る。
第1I/Oサブシステム302は複数の第1I/Oリソースを含み得る。例えば、第1I/Oサブシステム302は、内部及び外部通信用の1つ以上のI/Oデバイス及びインターフェースを含み得る。いくつかの実施形態では、第1I/Oサブシステム302は、1つ以上のSATAコントローラ、Ethernet MAC、PCIeデバイス、SERDES(シリアライズ-デシリアライズ)I/Oマルチプレクサ、UART、I2C、GPIO及びSoCの機能性に対する任意の他の適切なI/Oデバイスをさらに含み得る。いくつかの実施形態では、第1I/Oサブシステム302は例えば、インターフェース116と同様の、ホストシステム104と通信するための第1インターフェース346を含み得る。第1I/Oサブシステム302は、ネットワーク計算サブシステム202と通信するための第2インターフェース334、サーバ計算サブシステム204と通信するための第3インターフェース336及びネットワークと通信するための第4インターフェース(図示しない)を含み得る。インターフェース346、334及び336はPCIeインターフェースなどの既定のインターフェースに基づいてよい。いくつかの実施形態では、第4インターフェースは、Ethernet、トークンリング、Wi-Fi、ATM(非同期転送モード)等の規格に基づいてよい。いくつかの実施形態では、第1I/Oサブ
システム302は、ハードドライブ、光学ドライブ等などの外部大容量記憶デバイスに接続されるインターフェース(例えば、SATA)をさらに含み得る。
第2I/Oサブシステム304は複数の第2I/Oリソースを含み得る。例えば、第2I/Oサブシステム304は、内部及び外部通信用の1つ以上のI/Oデバイス及びインターフェースを含み得る。いくつかの実施形態では、第2I/Oサブシステム302は、1つ以上のSATAコントローラ、Ethernet MAC、PCIeデバイス、SERDES(シリアライズ-デシリアライズ)I/Oマルチプレクサ、UART、I2C、GPIO及びSoCの機能性に対する任意の他の適切なI/Oデバイスをさらに含み得る。いくつかの実施形態では、第2I/Oサブシステム304は例えば、インターフェース116と同様の、ホストシステム104と通信するための第1インターフェース348を含み得る。第2I/Oサブシステム304は、サーバ計算サブシステム204と通信するための第2インターフェース338、ネットワーク計算サブシステム202と通信するための第3インターフェース340及びネットワークと通信するための第4インターフェース(図示しない)を含み得る。インターフェース348、338及び340はPCIeインターフェースなどの既定のインターフェースに基づいてよい。いくつかの実施形態では、第4インターフェースは、Ethernet、トークンリング、Wi-Fi、ATM(非同期転送モード)等の規格に基づいてよい。いくつかの実施形態では、第4インターフェースは、Ethernet、トークンリング、Wi-Fi、ATM(非同期転送モード)等の規格に基づいてよい。いくつかの実施形態では、第2I/Oサブシステム304は、ハードドライブ、光学ドライブ等の外部大容量記憶デバイスに接続されるインターフェース(例えば、SATA)をさらに含み得る。
いくつかの実施形態では、第1I/Oサブシステム302にある1つ以上の第1I/Oリソースは第2I/Oサブシステム304にある第2I/Oリソースと異なり得る。例えば、場合によっては、第1I/Oサブシステム302はEthernet MAC、I2C、UARTを含んでよく、第2I/Oサブシステム304はSATAコントローラ、GPIO、PCIeデバイス等を含んでよい。いくつかの実施形態では、管理計算サブシステム206は、利用可能なリソース及び各計算サブシステムに対するI/Oリソース要件を基に各I/Oサブシステムから適切なI/Oリソースをステアリングするために、ステアリング構成を決定し得る。
アクセラレータサブシステム306は、ネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ等などの1つ以上のアクセラレータを含んでよい。例えば、場合によっては、暗号化エンジンはハードウェアで暗号化機能を実行してよく、これによりソフトウェアオーバヘッドを削減し、ネットワーキングに関連する復号機能、暗号化機能及び認証機能の実行を高速化する。いくつかの実施形態では、アクセラレータサブシステム306は、例えば、ハードウェアアクセラレータ、種々のパイプライン、キャッシング、圧縮等を使用して帯域幅最適化またはネットワーク高速化を提供するために、種々のハードウェア及びソフトウェア技法の組み合わせを含み得る。いくつかの実施形態では、アクセラレータサブシステム306はRDMA(リモートダイレクトメモリアクセス)等をさらにサポートし得る。いくつかの実施形態では、アクセラレータサブシステム306は、ネットワーク計算サブシステム202と通信するための第1インターフェース342及びサーバ計算サブシステム204と通信するための第2インターフェース344を含み得る。
本開示技術のいくつかの実施形態によると、1つ以上のアクセラレータはネットワーク計算サブシステム202にステアリングされてよく、1つ以上のアクセラレータはサーバ計算サブシステム204にステアリングされてよい。いくつかの実装では、本開示技術の範囲を逸脱することなく、1つ以上のアクセラレータが複数(例えば、3つ以上)の計算サブシステムにステアリングされ得ることに留意されたい。場合によっては、図3に示す
通り、アクセラレータサブシステム306は、アクセラレータA、アクセラレータB及びアクセラレータCを含み得る。例えば、アクセラレータAはネットワークアクセラレータであってよく、アクセラレータBは暗号化エンジンであってよく、アクセラレータCは圧縮アクセラレータであってよい。いくつかの実施形態では、アクセラレータサブシステム306は、いずれかの計算サブシステムに適切にステアリングされ得る複数のネットワークアクセラレータ、暗号化エンジン及び他のアクセラレータを含み得ることに留意されたい。一実施形態では、例えば、ネットワーク計算サブシステム202とサーバ計算サブシステム204の両方が作動可能である場合、アクセラレータA及びBはネットワーク計算サブシステム202にステアリングされてよく、アクセラレータCはサーバ計算サブシステム204にステアリングされてよい。別の実施形態では、例えば、サーバ計算サブシステム204が構成解除される、または作動しない場合、アクセラレータA、B及びCの一部または全てはネットワーク計算サブシステム202にステアリングされてよい。別の実施形態では、例えば、ネットワーク計算サブシステム202が構成解除される、または作動しない場合、アクセラレータA、B及びCの一部または全てはサーバ計算サブシステム204にステアリングされてよい。
I/Oステアリングエンジン112は、第1I/Oサブシステム302にある少なくとも1つのI/Oリソースをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングし、第2I/Oサブシステム304にある少なくとも1つのI/Oリソースをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするように構成され得る。例えば、ある特定の実施形態では、I/Oステアリングエンジン112は、第1I/Oリソースをインターフェース334を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック314にステアリングするか、インターフェース336を介してサーバ計算サブシステムキャッシュコヒーレントファブリック326にステアリングし得る。いくつかの実施形態では、I/Oステアリングエンジン112は、第2I/Oリソースをインターフェース340を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック314にステアリングするか、インターフェース338を介してサーバ計算サブシステムキャッシュコヒーレントファブリック326にステアリングし得る。いくつかの実施形態では、I/Oステアリングエンジン112はアクセラレータサブシステム306にある1つ以上のアクセラレータをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするようにさらに構成され得る。例えば、I/Oステアリングエンジン112は、1つ以上のアクセラレータをインターフェース342を介してネットワーク計算サブシステムキャッシュコヒーレントファブリック314にステアリングするか、インターフェース344を介してサーバ計算サブシステムキャッシュコヒーレントファブリック326にステアリングし得る。いくつかの実施形態では、I/Oステアリングエンジン112は、ステアリング構成を基に、様々なI/Oリソースを様々な計算サブシステムにステアリングし得る。例えば、場合によっては、I/Oステアリングエンジン112は、全てのEthernet MACを第1I/Oサブシステム302からネットワーク計算サブシステム202にステアリングしてよく、全てのGPIOを第2I/Oサブシステム304からサーバ計算サブシステム204にステアリングしてよい。いくつかの実施形態では、I/Oステアリングエンジン112は、非対称な数のI/Oリソースを第1I/Oサブシステム302及び第2I/Oサブシステム304からステアリングしてよい。例えば、I/Oステアリングエンジン112は、第2I/Oサブシステム304より多くの数のEthernet MACを第1I/Oサブシステム302からステアリングし、第1I/Oサブシステム302より多くの数のUARTを第2I/Oサブシステム304からステアリングしてよい。
共有リソースサブシステム308は、ネットワーク計算サブシステム202とサーバ計算サブシステム204との間で共有できる1つ以上のリソースを含み得る。いくつかの実
施形態では、共有リソースサブシステム308は、ジッタまたは安全上の懸念を生じることなく、ネットワーク計算サブシステム202とサーバ計算サブシステム204との間で安全に共有できる1つ以上の周辺装置を含み得る。例えば、共有リソースサブシステム308は乱数発生器、通信メールボックス、スクラッチパッドメモリ、フラッシュメモリ等を含み得る。
管理計算サブシステム206は、適切な数のI/Oリソースを各計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供するように構成され得る。いくつかの実施形態では、管理計算サブシステム206はアクセラレータサブシステム306にある1つ以上のアクセラレータをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供するようにさらに構成され得る。いくつかの実施形態では、管理計算サブシステム206はネットワーク計算サブシステム202とサーバ計算サブシステム204の両方が作動可能であると判定し得、第1I/Oサブシステム302をネットワーク計算サブシステム202に、及び第2I/Oサブシステム304をサーバ計算サブシステム204にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。ある特定の実施形態では、管理計算サブシステム206はサーバ計算サブシステム204が作動できないと判定し得、第1I/Oサブシステム302と第2I/Oサブシステム304の両方をネットワーク計算サブシステム202にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。ある特定の実施形態では、管理計算サブシステム206はネットワーク計算サブシステム202が作動できないと判定し得、第1I/Oサブシステム302と第2I/Oサブシステム304の両方をサーバ計算サブシステム204にステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供してよい。いくつかの実施形態では、第1I/Oサブシステム302及び第2I/Oサブシステム304のステアリング構成は、デフォルト構成、例えば、ポリシに基づいてよい。いくつかの実施形態では、管理計算サブシステム206は、ハードウェア構成(例えば、1つ以上のピンまたはヒューズ)またはソフトウェア構成(例えば、ソフトウェアレジスタのデータフィールド)に基づき、起動時に、第1I/Oサブシステム302及び第2I/Oサブシステム304のステアリング構成を決定してよい。いくつかの実施形態では、管理計算サブシステム206は、第1I/Oサブシステム302及び第2I/Oサブシステム304のステアリング構成を実行時に動的に決定してよい。
図4A~4Cは、両方の計算サブシステムを含むように構成されるSoC102を伴うシステム例400を例示する。
システム400は、図3を参照して論述した通り、SoC102の全ての構成要素を含み得る。一般的に、サーバ計算サブシステム204は計算サービスを提供するように構成されてよく、ネットワーク計算サブシステム202はホストシステム104及びサーバ計算サブシステム204に対するネットワークトラフィックを少なくとも管理するように構成されてよい。アクセラレータサブシステム306は、ネットワーク計算サブシステム202のみにステアリングできる、サーバ計算サブシステム204のみにステアリングできる、またはネットワーク計算サブシステム202とサーバ計算サブシステム204の両方にステアリングできる1つ以上のアクセラレータ(例えば、アクセラレータA、B及びC)を含み得る。
図4Aは、I/Oリソース及びアクセラレータをネットワーク計算サブシステム202とサーバ計算サブシステム204の両方にステアリングすることを含む、本開示技術の一実施形態を例示する。
管理計算サブシステム206は、起動時にまたは実行時にSoC102の構成を決定し得る。例えば、管理計算サブシステム206はネットワーク計算サブシステム202とサーバ計算サブシステム204の両方が作動可能であると判定し得る。いくつかの実施形態では、管理計算サブシステム206は、各計算サブシステムに対する処理リソース及びメモリリソースの割り当てを基に、ネットワーク計算サブシステム202及びサーバ計算サブシステム204が対称または非対称構成を有することを決定してよい。例えば、SoC102は高性能ネットワーキングサービス及び低性能計算サービス、高性能計算サービス及び低性能ネットワーキングサービスを提供するように構成されてよく、あるいはネットワーキングサービス及び計算サービスの両方に同様の性能を提供するように構成されてよい。したがって、一実装では、管理計算サブシステム206は、適切な数のI/Oリソースを各計算サブシステムにステアリングするために、I/Oステアリングエンジン112に提供するためのステアリング構成を決定し得る。
いくつかの実施形態では、管理計算サブシステム206は1つ以上のアクセラレータをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするために、ステアリング構成をさらに提供し得る。例えば、場合によっては、アクセラレータA及びBはネットワーク計算サブシステム202にステアリングでき、アクセラレータCはサーバ計算サブシステム204にステアリングできる。例えば、アクセラレータAはネットワーキング高速化のためにネットワーク計算サブシステム202により使用され得るネットワークアクセラレータであってよく、アクセラレータBはネットワーク計算サブシステム202により実行される暗号化機能を高速化するための、ネットワーク計算サブシステム202により使用され得る暗号化エンジンであってよい。アクセラレータCは、サーバ計算サブシステム204により行われるビデオ圧縮または他のデータ処理タスクを高速化するための圧縮アクセラレータであってよい。いくつかの実施形態では、管理計算サブシステム206は、I/Oステアリングエンジン112のために実行時にステアリング構成を更新し、各計算サブシステムに対する複数のI/Oリソース及び/またはアクセラレータのステアリングを動的に変更し得る。
いくつかの実施形態では、ネットワーク計算サブシステム202には、サーバ計算サブシステム204に比べてより多くの計算リソースが割り当てられてよく、例えば、SoC102は高性能ネットワーキングサービス及び低性能計算サービスを提供するように構成され得る。いくつかの実施形態では、SoC102に対する構成設定は起動時に提供され得るか、永続メモリ(図示せず)に記憶され得る。例えば、管理計算サブシステム206は、ハードウェア構成(例えば、1つ以上のピンまたはヒューズ)またはソフトウェア構成(例えば、レジスタのデータフィールド)に基づき、SoC102に対する構成設定を決定してよい。いくつかの実施形態では、SoC102に対する構成設定は実行時に動的に更新されてよい。例えば、SoC102は、ネットワーク計算サブシステム202のみを含むように、サーバ計算サブシステム204のみを含むように、あるいはネットワーク計算サブシステム202とサーバ計算サブシステム204の両方を含むように、ブート時にまたは動的に構成され得る。例えば、場合によっては、ネットワーク計算サブシステムマルチコアプロセッサ310はサーバ計算サブシステムマルチコアプロセッサ322より多くの数のプロセッサコアを含んでよく、サーバ計算サブシステムメモリコントローラ330より多くの数のネットワーク計算サブシステムメモリコントローラ318を含んでよく、あるいはL1/L2キャッシュ324、L3キャッシュ328より大きいL1/L2キャッシュ312、L3キャッシュ316を含んでよい。したがって、I/Oステアリングエンジン112は、ネットワーク計算サブシステム202に割り当てられた計算リソースのスループット要件に適合するよう、(例えば、インターフェース338を介して)サーバ計算サブシステム204にステアリングするより多くの数のI/Oリソースを、ネットワーク計算サブシステム202に(例えば、インターフェース334を介して)ステアリングしてよい。同様に、高性能ネットワーキング構成では、I/Oステアリングエンジ
ン112はネットワーキング帯域幅に適合するよう、サーバ計算サブシステム204に比べてより多くの数のネットワークアクセラレータを(例えば、インターフェース342を介して)ネットワーク計算サブシステム202にステアリングしてよい。例えば、暗号化エンジンのみが(例えば、インターフェース344を介して)サーバ計算サブシステム204にステアリングされてよい。いくつかの実施形態では、I/Oステアリングエンジン112はマルチプレクサ、デマルチプレクサまたはステアリングを行うための任意の他の適切な論理を含み得る。
図4Bはアクセラレータをネットワーク計算サブシステム202のみにステアリングすることを含む、本開示技術の一実施形態を例示する。
一実施形態では、アクセラレータサブシステム306にある1つ以上のアクセラレータは、(例えば、インターフェース342を介して)ネットワーク計算サブシステム202のみにステアリングされ得る。例えば、いくつかの実施形態では、ネットワーク計算サブシステム202は高性能ネットワーキングサービスを提供するように構成されてよく、サーバ計算サブシステム204は低性能計算サービスを提供するように構成されてよい。場合によっては、ネットワーク計算サブシステム202は複数のネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ及び高性能ネットワーキングサービスを提供するための任意の他の適切なアクセラレータを利用してよく、サーバ計算サブシステム204はいずれのアクセラレータも利用できない。図4BはアクセラレータA、B及びCがネットワーク計算サブシステム202にステアリングされることを示すことに留意されたい。しかしながら、任意の適切な数のアクセラレータ、例えば、Aのみ、Bのみ、CのみあるいはA、B及び/またはCの複数のインスタンスがネットワーク計算サブシステム202にステアリングされ得る。
図4Cはアクセラレータをサーバ計算サブシステム204のみにステアリングすることを含む、本開示技術の一実施形態を例示する。
一実施形態では、アクセラレータサブシステム306にある1つ以上のアクセラレータは、(例えば、インターフェース344を介して)サーバ計算サブシステム204のみにステアリングされ得る。例えば、いくつかの実施形態では、サーバ計算サブシステム204は高性能計算サービスを提供するように構成されてよく、ネットワーク計算サブシステム204は低性能ネットワーキングサービスを提供するように構成されてよい。場合によっては、サーバ計算サブシステム204は複数の暗号化エンジン、圧縮アクセラレータ及び高性能計算サービスを提供するための任意の他の適切なアクセラレータを利用してよく、ネットワーク計算サブシステム202はいずれのアクセラレータも利用できない。図4CはアクセラレータA、B及びCがサーバ計算サブシステム204にステアリングされることを示すことに留意されたい。しかしながら、任意の適切な数のアクセラレータ、例えば、Bのみ、CのみあるいはB及び/またはCの複数のインスタンスがサーバ計算サブシステム204にステアリングされ得る。
図5は、サーバ計算サブシステムのみを含むように構成されるSoC102を伴うシステム例500を例示する。
図5に例示する通り、ネットワーク計算サブシステム202は作動できない。例えば、SoC102はサーバ計算サービスのみを提供するように構成され得る。いくつかの実施形態では、SoC102は計算サービスを提供するように構成され得るサーバ計算サブシステム204を含むのみであってよい。
管理計算サブシステム206は、起動時にまたは実行時に動的にSoC102の構成を
決定し得る。例えば、管理計算サブシステム206はサーバ計算サブシステム204のみが作動可能であると判定し得る。いくつかの実施形態では、ネットワーク計算サブシステム202は構成解除または機能解除されてよい。例えば、SoC102は高性能計算サービスのみを提供するように構成されてよく、ゆえにネットワーキングサービスを利用できない。例えば、SoC102は計算集約リソースを利用し得るデータ計算またはデータ解析を行うように構成され得る。いくつかの実施形態では、管理計算サブシステム206は、サーバ計算サブシステム204に対する処理リソース及びメモリリソースの割り当てを基に、I/Oステアリングエンジン112に提供するためのステアリング構成を決定し得る。ゆえに、I/Oステアリングエンジン112は、管理計算サブシステム206により提供されるステアリング構成を基に、1つ以上の第1I/Oリソースを(例えば、インターフェース336を介して)ステアリングしてよく、1つ以上の第2I/Oリソースを(例えば、インターフェース338を介して)サーバ計算サブシステム204にステアリングしてよい。例えば、場合によっては、I/Oステアリングエンジン112は、第2I/Oサブシステム304と比べてより多くの数のEthernet MACを第1I/Oサブシステム302からサーバ計算サブシステム204にステアリングし、第1I/Oサブシステム302より多くの数のSATAコントローラを第2I/Oサブシステム304からサーバ計算サブシステム204にステアリングし得る。I/Oステアリングエンジン112は、管理計算サブシステム114により提供されるステアリング構成を基に、アクセラレータをサーバ計算サブシステム106にステアリングしてもよく、しなくてもよい。いくつかの実施形態では、アクセラレータサブシステム306にある1つ以上のアクセラレータは、(例えば、インターフェース344を介して)サーバ計算サブシステム204にステアリングされ得る。例えば、場合によっては、暗号化エンジン及び/または圧縮アクセラレータのみがサーバ計算サブシステム204にステアリングされてよいが、ネットワークアクセラレータにはステアリングできない。
本開示技術のいくつかの実施形態により、ネットワーク計算サブシステム202が作動しない場合、より多くの数のリソースをサーバ計算サブシステム204にステアリングすることを可能にできる。例えば、SoC102は高性能計算サービスを提供するように構成され得る。いくつかの実施形態によれば、サーバ計算サブシステム204により利用される計算リソースに適合し、高性能計算サービスを提供するよう、複数のI/Oリソースを第1I/Oサブシステム302及び第2I/Oサブシステム304の両方からステアリングすることができる。ゆえに、本技術の実施形態はシステムのスループットを増加させるためにI/Oリソースのより効率的な利用を可能にできる。
図6は、ネットワーク計算サブシステム202のみを含むように構成されるSoC102を伴うシステム例600を例示する。
図6に例示する通り、サーバ計算サブシステム204は作動できない。例えば、SoC102はネットワーキングサービスのみを提供するように構成され得る。いくつかの実施形態では、SoC102はホストシステム104に対するネットワークトラフィックを少なくとも管理するように構成され得るネットワーク計算サブシステム202を含むのみであってよい。
管理計算サブシステム206は、起動時にSoC102の構成を決定し得る。例えば、管理計算サブシステム206はネットワーク計算サブシステム202のみが作動可能であると判定し得る。いくつかの実施形態では、サーバ計算サブシステム204は構成解除または機能解除されてよい。例えば、SoC102は高性能ネットワーキングサービスのみを提供するように構成されてよく、ゆえに計算サービスを利用できない。例えば、SoC102はネットワーク集約リソースを利用し得るネットワークストレージまたはネットワークトラフィックシェーピングを行うように構成され得る。いくつかの実施形態では、管
理計算サブシステム206は、ネットワーク計算サブシステム202に対する処理リソース及びメモリリソースの割り当てを基に、I/Oステアリングエンジン112に提供するためのステアリング構成を決定し得る。ゆえに、I/Oステアリングエンジン112は、ネットワーキングサービスを提供するためのネットワーク計算サブシステム202のスループット要件に適合するよう、1つ以上の第1I/Oリソースを(例えば、インターフェース334を介して)ステアリングしてよく、1つ以上の第2I/Oリソースを(例えば、インターフェース340を介して)ネットワーク計算サブシステム202にステアリングしてよい。いくつかの実施形態では、I/Oステアリングエンジン112は、(例えば、インターフェース342を介して)SoC102により提供されるネットワーキングサービスに必要なネットワーク帯域幅に適合するよう、アクセラレータサブシステム306にある1つ以上のアクセラレータをネットワーク計算サブシステム202にステアリングしてよい。例えば、場合によっては、1つ以上のネットワークアクセラレータ、暗号化エンジン、圧縮アクセラレータ等はネットワーク計算サブシステム202にステアリングされてよい。
本開示技術のいくつかの実施形態により、サーバ計算サブシステム204が作動しない場合、より多くの数のリソースをネットワーク計算サブシステム202にステアリングすることを可能にできる。例えば、SoC102は高性能ネットワーキングサービスを提供するように構成され得る。いくつかの実施形態によれば、ネットワーク計算サブシステム202により利用される計算リソースに適合し、高性能ネットワーキングサービスを提供するよう、複数のI/Oリソースを第1I/Oサブシステム302及び第2I/Oサブシステム304の両方からステアリングすることができる。さらに、ネットワーク高速化を提供するために、複数のアクセラレータをアクセラレータサブシステム306からネットワーク計算サブシステム202にステアリングできる。ゆえに、本技術の実施形態はシステムのスループットを増加させるためにI/Oリソースのより効率的な利用を可能にすることができる。
図7は、本技術のある特定の実施形態による、I/Oサブシステム114に対するブロック図を例示する。I/Oサブシステム114は、複数のI/Oデバイス、例えば、第1Ethernet MAC702、第2Ethernet MAC704、第3Ethernet MAC706、第1PCIeデバイス708、第2PCIeデバイス710、GPIOデバイス712、第1SATAコントローラ714、第2SATAコントローラ716及びI2Cデバイス718を含み得る。I/Oサブシステム114は、SoC102の構成に基づき、より多くの数のまたはより少ない数のデバイスを含み得ることが理解される。
いくつかの実施形態では、図3を参照して既に論述した通り、I/Oサブシステム114は第1I/Oサブシステム302及び第2I/Oサブシステム304を含み得る。本開示技術のいくつかの実施形態によると、図1を参照して既に論述した通り、I/Oサブシステム114の1つ以上のデバイスは1つ以上の計算サブシステムにステアリングされ得る。例えば、いくつかの実装では、1つ以上のデバイスはネットワーク計算サブシステム202にステアリングされてよく、1つ以上のデバイスはサーバ計算サブシステム204にステアリングされてよい。いくつかの実施形態では、管理計算サブシステム206はSoC102の構成を基に、適切な数及びタイプのI/Oデバイスを1つ以上の計算サブシステムにステアリングするために、ステアリング構成をI/Oステアリングエンジン112に提供し得る。例えば、一実施形態では、SoC102がネットワーク計算サブシステム202とサーバ計算サブシステム204の両方として機能するように構成される場合(例えば、図4A~4Cを参照)、I/Oステアリングエンジン112はI/Oデバイスの第1セットをネットワーク計算サブシステム202にステアリングしてよく、I/Oデバイスの第2セットをサーバ計算サブシステム204にステアリングしてよい。例えば、I
/Oデバイスの第1セットは、ネットワーク計算サブシステム202が使用し得る、第1Ethernet MAC702、第2Ethernet MAC704、第1PCIeデバイス708及び第1SATAコントローラ714などの適切な数及びタイプのI/Oデバイスを含み得る。I/Oデバイスの第2セットは、サーバ計算サブシステム204が使用し得る、第3Ethernet MAC706、第2PCIeデバイス710、GPIOデバイス712、第2SATAコントローラ716及びI2Cデバイス718などの適切な数及びタイプのI/Oデバイスを含み得る。一実施形態では、SoC102がサーバのみの計算サブシステムとして構成される場合(例えば、図5を参照)、I/Oステアリングエンジン112は、例えば、第3Ethernet MAC706、第1PCIeデバイス708、第2SATAコントローラ716及びGPIOデバイス712などのサーバ計算サブシステム204が使用し得る適切なI/Oデバイスをステアリングし得る。一実施形態では、SoC102がネットワークのみの計算サブシステムとして構成される場合(例えば、図6を参照)、I/Oステアリングエンジン112は、例えば、第1Ethernet MAC702、第2Ethernet MAC704、第1PCIeデバイス708及び第1SATAコントローラ714などのネットワーク計算サブシステム202が使用し得る適切なI/Oデバイスをステアリングし得る。
図8は、本技術のある特定の実施形態による、I/Oステアリングエンジン112に対するブロック図を例示する。I/Oステアリングエンジン112はインターフェースユニット802及びステアリングユニット804を含み得る。本技術のある特定の実施形態によると、I/Oステアリングエンジン112は、複数のI/Oリソースがネットワーク計算サブシステムキャッシュコヒーレントファブリック314及びサーバ計算サブシステムキャッシュコヒーレントファブリック326により表される物理層を介して、ネットワーク計算サブシステム202及びサーバ計算サブシステム204に接続することを可能にし得る。
インターフェースユニット802は、SoC102の異なる構成要素との種々のインターフェースを含み得る。例えば、インターフェースユニット802は第1I/Oサブシステム302、第2I/Oサブシステム304、アクセラレータサブシステム306、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314、サーバ計算サブシステムキャッシュコヒーレントファブリック326及び管理計算サブシステム206とインターフェースをとり得る。
ステアリングユニット804は、I/Oサブシステム114にある1つ以上のI/Oリソース及びアクセラレータサブシステム306にある1つ以上のアクセラレータを1つ以上の計算サブシステムにステアリングまたは導くためのステアリング論理を含み得る。例えば、いくつかの実施形態では、ステアリングユニット804は、第1I/Oサブシステム302にある複数の第1I/Oリソースの少なくとも1つを、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314またはサーバ計算サブシステムキャッシュコヒーレントファブリック326にステアリングするための、及び第2I/Oサブシステム304にある複数の第2I/Oリソースの少なくとも1つを、ネットワーク計算サブシステムキャッシュコヒーレントファブリック314またはサーバ計算サブシステムキャッシュコヒーレントファブリック326にステアリングするためのステアリング論理を含み得る。ステアリングユニット804はアクセラレータサブシステム306にある1つ以上のアクセラレータをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするようにさらに構成され得る。いくつかの実施形態では、ステアリング論理はステアリングマトリックス、クロスバー、メッシュ、マルチプレクサ、デマルチプレクサ等を使用して実装され得る。しかしながら、ステアリング論理の他の実装も可能である。いくつかの実施形態では、ステアリングユニット804は、管理計算サブシステム206が提供するステアリング構成に基づいて、1つ以上のI/Oリソースを
ステアリングし得る。
図9は、本開示技術のある特定の実施形態による、管理計算サブシステム206に対するブロック図を例示する。管理計算サブシステム206は、マルチコアプロセッサ902、L1/L2キャッシュ904、ネットワークインターフェースユニット906、プライベートメモリ908、周辺デバイス910及びコンピュータ可読記憶媒体912を含み得る。
マルチコアプロセッサ902は、ARM(登録商標)のA57などの2つ以上のプロセッサコアを含み得る。いくつかの実施形態では、マルチコアプロセッサ902の代わりにシングルコアプロセッサが使用され得る。L1/L2キャッシュ904はマルチコアプロセッサ902の内部または外部であってよく、全てのプロセッサコアにより共有され得る。マルチコアプロセッサ902は、コンピュータ可読記憶媒体912上に記憶され得る複数の命令を実行するように構成され得る。例えば、コンピュータ可読媒体は、ブート時にまたは実行時に動的に、I/Oリソース及びアクセラレータを適切な計算サブシステムにステアリングするために、I/Oステアリングエンジン112に提供するためのステアリング構成を決定する命令を含み得る。コンピュータ可読記憶媒体912は非一時的であり得る。いくつかの実施形態では、コンピュータ可読記憶媒体は、パラメータランダムアクセスメモリ(PRAM)、SRAM、DRAM、RAM、読み出し専用メモリ(ROM)、電気的消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク(CD)-ROM、デジタルビデオディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用可能であり、マルチコアプロセッサ902によりアクセス可能な任意の他の媒体を含み得るが、これらに限定されない。いくつかの実施形態では、コンピュータ可読記憶媒体912は周辺デバイス910の一部であってよい。L1/L2キャッシュ904はデータの一時的な記憶のためのデータキャッシュであってよい。
ネットワークインターフェースユニット906により、管理計算サブシステム206はネットワークに接続することが可能になり得る。例えば、ネットワークインターフェースユニット906は、Ethernetなどのネットワークに接続するための管理計算サブシステム206を使用可能にできるEthernet MAC(媒体アクセス制御)を含み得る。場合によっては、Ethernet MACはネットワークに接続するためのPHY(物理層)デバイスにインターフェースをとるEthernetポートを提供し得る。いくつかの実施形態では、管理計算サブシステム206は、処理リソース及びメモリリソースを構成するために、ネットワーク上で外部エンティティまたはシステムと通信し仮想サーバインスタンスの作業負荷を決定できる。
プライベートメモリ908は管理計算サブシステム206をプライベートに使用するためのメモリを含み得る。プライベートメモリ908はランダムアクセスメモリ(例えば、SRAMまたはDRAM)などの揮発性メモリを含み得る。例えば、管理計算サブシステム206はデータを一時的に記憶するためのプライベートメモリ908を使用し得る。
周辺デバイス910は管理計算サブシステム206に対するプライベート周辺デバイスを含み得る。いくつかの実施形態では、プライベート周辺デバイス910の一部は、SoC102の様々なサブシステムのリブート及び電源管理のためのデバイスを含み得る。例えば、周辺デバイス910はブートファームウェアを含む信頼された管理モジュールを含んでよく、ブートファームウェアは他のサブシステムを起動する前に、起動時に信頼の基点を構築することを実行できる。いくつかの実施形態では、電源管理は電源操作、クロック操作または任意の他の適切な方法を通じて提供され得る。
いくつかの実施形態では、管理計算サブシステム206は、SoC102全体のコールド起動時に、最初に実行されるように構成され得る。場合によっては、管理計算サブシステム206は他のサブシステムを起動する前に、他のサブシステムに対する信頼の基点を構築するために最初に起動され得る。例えば、ネットワーク計算サブシステム202及びサーバ計算サブシステム204に対するブートプロセスは管理計算サブシステム206に対するコアブート下で階層的に考慮され得る。いくつかの実施形態では、ネットワーク計算サブシステム202及びサーバ計算サブシステム204上で後続的に実行されたであろうソフトウェアは、ホストシステム104またはホストシステム104により提供される特定のサービスに関連する秘密鍵を使用して署名されたため、管理計算サブシステム206による承認が完了していてよい。これにより、ネットワーク計算サブシステム202とサーバ計算サブシステム204の両方のプロセスが信頼された独立ブートローダを介してブート可能にできる。
いくつかの実施形態では、管理計算サブシステム206は、ネットワーク計算サブシステム202とサーバ計算サブシステム204の両方のライブ動作に影響を及ぼすことなく、個別のリセットラインによりリセット/リブートし得る。
図10は、本開示技術のいくつかの実施形態による、アクセラレータサブシステム306に対するブロック図を例示する。アクセラレータサブシステム306は、ネットワークアクセラレータ1002、暗号化エンジン1004及び圧縮アクセラレータ1006などの複数のアクセラレータを含み得る。アクセラレータサブシステム306は、本開示技術の実施形態による、2つ以上の計算サブシステムにステアリングできる、より多くのまたはより少ないアクセラレータ及び種々のタイプのアクセラレータを含み得ることが理解される。
ネットワークアクセラレータ1002はネットワーク高速化を提供するために利用され得る。例えば、いくつかの実装では、例えば、キャッシング、データ圧縮、データ複製または任意の他の適切な技法を使用することで帯域幅最適化を提供するために、ネットワークアクセラレータ1002はハードウェアとソフトウェアの組み合わせを含み得る。1つ以上のネットワークアクセラレータ1002は、図4A~図4C、図5及び図6を参照して論述した通り、SoC102の構成を基に、ネットワーク計算サブシステム202及び/またはサーバ計算サブシステム204にステアリングされ得る。
暗号化エンジン1004は、例えば、暗号化機能のためのハードウェア高速化を提供するために利用され得る。例えば、いくつかの実装では、暗号化エンジン1004は、例えば、キャッシング、データ圧縮、データ複製または任意の他の適切な技法を使用することでハードウェア高速化を提供するハードウェアとソフトウェアの組み合わせを含み得る。1つ以上の暗号化エンジン1004は、図4A~図4C、図5及び図6を参照して論述した通り、SoC102の構成を基に、ネットワーク計算サブシステム202及び/またはサーバ計算サブシステム204にステアリングされ得る。
圧縮アクセラレータ1006は計算集約アプリケーションに高速化を提供するために利用され得る。例えば、いくつかの実装では、圧縮アクセラレータ1006は、任意の適切な技法を使用する高速化を提供するハードウェアとソフトウェアの組み合わせを含み得る。1つ以上の圧縮アクセラレータ1006は、図4A~図4C、図5及び図6を参照して論述した通り、SoC102の構成を基に、ネットワーク計算サブシステム202及び/またはサーバ計算サブシステム204にステアリングされ得る。
図11は、第1I/Oサブシステム302の一部の構成要素を例示する。第1I/Oサ
ブシステム302はバスインターフェースユニット1102、ネットワークインターフェースユニット1104及びI/O周辺装置ユニット1106を含み得る。いくつかの実施形態では、図7を参照して既に論述した通り、第1I/Oサブシステム302はI/Oサブシステム114の一部であり得る。
バスインターフェースユニット1102は、内部または外部の構成要素と通信するための1つ以上のバスインターフェースを含み得る。例えば、バスインターフェースユニット1102は、例えば、インターフェース346などの、ホストシステム104と通信するための第1インターフェースを含み得る。いくつかの実施形態では、第1インターフェースはPCIeインターフェースであってよい。例えば、バスインターフェースユニット1102は、他のPCIeポートに接続するための1つ以上のPCIeポートを含み得る。バスインターフェースユニット1102はルートコンプレックス(RC)ポート及びエンドポイントポート(EP)を含み得る。いくつかの実施形態では、ネットワーク計算サブシステム202は第1I/Oサブシステム302にあるPCIeポート及びインターフェース346を使用するホストシステム104にあるPCIeポートを介してホストシステム104と通信し得る。バスインターフェースユニット1102は、I/Oステアリングエンジン112に接続するための(例えば、図8に参照するインターフェースユニット802と接続するための)第2インターフェースを含み得る。例えば、I/Oステアリングエンジン112は、第2インターフェースを使用して、第1I/Oサブシステム302にある第1I/Oリソースを、ネットワーク計算サブシステム202またはサーバ計算サブシステム204のいずれかに接続し得る。
ネットワークインターフェースユニット1104はネットワークに接続するための第3インターフェースを含み得る。いくつかの実施形態では、ネットワークインターフェースユニット1104はEthernetネットワークに接続するための1つ以上のEthernet MAC(例えば、10/25/40/50Gb/秒)を含み得る。場合によっては、Ethernet MACはネットワークに接続するためのPHY(物理層)デバイスにインターフェースをとるEthernetポートを提供し得る。
I/O周辺装置ユニット1106は1つ以上の周辺デバイスを含み得る。例えば、I/O周辺装置ユニット1106は、UART、I2C、GPIO、SATAコントローラ、SPIポート、SERDES(シリアライズ-デシリアライズ)インターフェース等などの1つ以上の周辺デバイスを含み得る。
図12は、第2I/Oサブシステム304の一部の構成要素を例示する。第2I/Oサブシステム304はバスインターフェースユニット1202、ネットワークインターフェースユニット1204及びI/O周辺装置ユニット1206を含み得る。いくつかの実施形態では、図7を参照して既に論述した通り、第2I/Oサブシステム304はI/Oサブシステム114の一部であり得る。
バスインターフェースユニット1202は、内部または外部の構成要素と通信するための1つ以上のバスインターフェースを含み得る。例えば、バスインターフェースユニット1202は、例えば、インターフェース348などの、ホストシステム104と通信するための第1インターフェースを含み得る。いくつかの実施形態では、第1インターフェースはPCIeインターフェースであってよい。例えば、バスインターフェースユニット1202は、他のPCIeポートに接続するための1つ以上のPCIeポートを含み得る。バスインターフェースユニット1202はルートコンプレックス(RC)ポート及びエンドポイントポート(EP)を含み得る。いくつかの実施形態では、サーバ計算サブシステム204は第2I/Oサブシステム304にあるPCIeポート及びインターフェース348を使用するホストシステム104にあるPCIeポートを介してホストシステム10
4と通信し得る。バスインターフェースユニット1202は、I/Oステアリングエンジン112に接続するための(例えば、図8に参照するインターフェースユニット802と接続するための)第2インターフェースを含み得る。例えば、I/Oステアリングエンジン112は、第2インターフェースを使用して、第2I/Oサブシステム304にある第2I/Oリソースを、ネットワーク計算サブシステム202またはサーバ計算サブシステム204のいずれかに接続し得る。
ネットワークインターフェースユニット1204はネットワークに接続するための第3インターフェースを含み得る。いくつかの実施形態では、ネットワークインターフェースユニット1204はEthernetネットワークに接続するための1つ以上のEthernet MAC(例えば、10/25/40/50Gb/秒)を含み得る。場合によっては、Ethernet MACはネットワークに接続するためのPHY(物理層)デバイスにインターフェースをとるEthernetポートを提供し得る。
I/O周辺装置ユニット1206は1つ以上の周辺デバイスを含み得る。例えば、I/O周辺装置ユニット1206は、UART、I2C、GPIO、SATAコントローラ、SPIポート、SERDES(シリアライズ-デシリアライズ)インターフェース等などの1つ以上の周辺デバイスを含み得る。いくつかの実施形態では、I/O周辺装置ユニット1206は、図11を参照して論述したI/O周辺装置ユニット1106とは異なるタイプ及び数のI/Oデバイスを含み得る。例えば、場合によっては、I/O周辺装置ユニット1206は、I/O周辺装置ユニット1106と比べてより多くの数のSATAコントローラを含み得る。場合によっては、I/O周辺装置ユニット1206のみがGPIOを含み、I/O周辺装置ユニット1106のみがUARTを含み得る。
図13は、共有リソースサブシステム308の一部の構成要素を例示する。本技術の実施形態では、共有リソースサブシステム308は処理状態を含むことができない構成要素を含み得る。共有リソースサブシステム308は、メモリモジュール1302、乱数発生器モジュール1304、通信メールボックス1306及びスクラッチパッドメモリモジュール1308を含み得る。
メモリモジュール1302は、フラッシュメモリなどの不揮発性メモリストレージを含み得る。例えば、メモリモジュール1302は、低レベルのフラッシュメモリ管理を提供するために、埋め込み型マルチメディアコントローラ(eMMC)またはセキュアデジタル(SD)を含み得る。いくつかの実施形態では、メモリモジュール1302は、例えば、BIOS(基本入出力システム)、ブートローダ等の制御コードを記憶するために使用され得る。例えば、メモリモジュール1302は、両方の計算システムにより共有され得るコードを含み得る。
乱数発生器モジュール1304は数値またはシンボルのランダムな順序を生成するように構成され得る。例えば、ランダムな数値はデータの暗号化などの暗号化アプリケーションまたは任意の係るアプリケーションに使用され得る。いくつかの実施形態では、乱数発生器モジュール1304はランダムな数値または順序を生成するために使用されてよく、ランダムな数値または順序は、起動またはリブート後、各計算サブシステムを起動する前に各計算サブシステムを認証するために管理計算サブシステム206により使用され得る。
通信メールボックス1306は2つのサブシステムに関連する様々なプロセス間の通信を促すために使用され得る。例えば、通信メールボックス1306は、メッセージ受け渡し、同期、共有メモリ及びリモートプロシージャコール(RPC)などの種々の機能に対するデータ交換のためのプロセス間通信モジュールとして使用され得る。
スクラッチパッドメモリモジュール1308は両方のサブシステムにより使用され得るデータの一時的記憶のために使用され得る。いくつかの実施形態では、スクラッチパッドメモリモジュール1308は、例えば、命令または中間値などの少量のデータを高速に読み出すために記憶する、高速メモリ(例えば、2MBのSRAM)を含み得る。
図14は、本技術の1つ以上の態様によるフロー図1400を例示する。プロセス1400の一部または全て(あるいは本明細書に記載の任意の他のプロセス、つまりその変形及び/または組み合わせ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われてよく、かつ1つ以上のプロセッサ上で集合的に実行するコード(例えば、ファームウェア、実行可能命令、1つ以上のコンピュータプログラムまたは1つ以上のアプリケーション)として実装され得るか、ハードウェアもしくはその組み合わせにより実装され得る。コードはコンピュータ可読記憶媒体上に、例えば、1つ以上のプロセッサにより実行可能な複数の命令を含み得るコンピュータプログラムの形態で記憶されてよい。コンピュータ可読記憶媒体は非一時的であり得る。
ステップ1402では、複数の計算サブシステムにある1つ以上の計算サブシステムはシステムオンチップ(SoC)上で起動され得る。例えば、いくつかの実施形態では、ネットワーク計算サブシステム202及びサーバ計算サブシステム204が起動してよく、サーバ計算サブシステム204は計算サービスを提供するように構成され、ネットワーク計算サブシステム202はホストシステム104及びサーバ計算サブシステム202に対するネットワークトラフィックを少なくとも管理するように構成される。例えば、図3に戻って参照すると、管理計算サブシステム206はネットワーク計算サブシステム202とサーバ計算サブシステム204の両方を起動し得る。いくつかの実施形態では、管理計算サブシステム206は、SoC102の構成を基に起動した後、プロセッサ及びメモリリソースを各計算サブシステムに割り当て得る。例えば、場合によっては、SoC102は高性能ネットワーキングサービス、高性能計算サービス、ネットワーキングのみのサービスまたはサーバのみのサービスを提供するように構成されてよい。
ステップ1404では、第1I/Oサブシステムにある複数の第1I/Oリソースの少なくとも1つを、複数の計算サブシステムにある1つ以上の計算サブシステムにステアリングするために、及び第2I/Oサブシステムにある複数の第2I/Oリソースの少なくとも1つを、複数の計算サブシステムにある1つ以上の計算サブシステムにステアリングするために、ステアリング構成が決定される。図3に戻って参照すると、管理計算サブシステム206は、第1I/Oサブシステム302にある複数の第1I/Oリソースの少なくとも1つを、ネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするために、及び第2I/Oサブシステム304にある複数の第2I/Oリソースの少なくとも1つを、ネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするために、ステアリング構成を決定し得る。いくつかの実施形態では、図4A~図4C、図5、図6を参照して既に論述した通り、管理計算サブシステム206は1つ以上のアクセラレータをネットワーク計算サブシステム202またはサーバ計算サブシステム204にステアリングするために、ステアリング構成を決定し得る。図3を参照して既に論述した通り、場合によっては、管理計算サブシステム206は、適切な数及びタイプのI/Oリソースを各計算サブシステムにステアリングするためにステアリング構成を決定し得る。例えば、場合によっては、サーバ計算サブシステム204に比べてより多くの数のI/Oリソース及びアクセラレータがネットワーキング計算サブシステム202にステアリングされ得る。
ステップ1406では、第1I/Oサブシステム及び第2I/Oサブシステムに連結されたI/Oステアリングエンジンにステアリング構成が提供され得る。図3に戻って参照
すると、管理計算サブシステム206は、第1I/Oサブシステム302及び第2I/Oサブシステム304に連結されたI/Oステアリングエンジン112にステアリング構成を提供し得る。いくつかの実施形態では、ステアリングエンジン112は、適切な数及びタイプのI/Oリソース及びアクセラレータを複数の計算サブシステム、例えば、ネットワーク計算サブシステム202及びサーバ計算サブシステム204にステアリングし得る。
本開示技術の実施形態はI/Oリソース及びアクセラレータをSoC上の2つ以上の計算サブシステムにステアリングする柔軟性を提供できる。SoC上のI/Oリソース及びアクセラレータをより良く利用する能力により、ホストシステムが提供する、種々の計算サービスに対するネットワーク及びストレージ帯域幅は結果的に改善できる。
図15は、少なくとも1つの実施形態例による、1つ以上のネットワークを介して接続される1つ以上のサービスプロバイダコンピュータ及び/またはユーザデバイスを含む、本明細書に記載の特徴及びシステムのためのアーキテクチャ例を例示する。図1~13に記載のデバイスは、図15に記載のコンピューティングデバイスの1つ以上の構成要素を使用してよく、あるいは図15に記載の1つ以上のコンピューティングデバイスを表してよい。アーキテクチャ1500では、1人以上のユーザ1502はユーザコンピューティングデバイス1504(1)~(N)(総称してユーザデバイス1504)を利用し、1つ以上のネットワーク1508を介して、アプリケーション1506(例えば、ウェブブラウザまたはモバイルデバイスアプリケーション)にアクセスしてよい。いくつかの態様では、コンピューティングリソースサービスまたはサービスプロバイダによりアプリケーション1506をホスト、管理及び/または提供してよい。1つ以上のサービスプロバイダコンピュータ1510は、ユーザ(複数可)1502が対話し得るユーザデバイス1504上で実行するように構成されるネイティブアプリケーションを提供してよい。サービスプロバイダコンピュータ(複数可)1510は、いくつかの例では、クライアントエンティティ、低遅延データ記憶、耐久性のあるデータ記憶、データアクセス、管理、仮想化、クラウドベースソフトウェアソリューション、電子コンテンツ性能管理等などであるが、これらに限定されないコンピューティングリソースを提供してよい。サービスプロバイダコンピュータ(複数可)1510はさらに、ウェブホスティング、コンピュータアプリケーション開発及び/または実装プラットフォーム、前述の組み合わせなどを、ユーザ(複数可)1502に提供するように動作可能であってよい。サービスプロバイダコンピュータ(複数可)1510は、いくつかの例では、1つ以上のサードパーティコンピュータ1512と通信してよい。
いくつかの例では、ネットワーク(複数可)1508は、ケーブルネットワーク、インターネット、無線ネットワーク、セルラネットワークならびに他のプライベート及び/またはパブリックネットワークなどの多くの様々なタイプのネットワークの任意の1つまたは組み合わせを含んでよい。例示の例はネットワーク(複数可)1508上でアプリケーション1506にアクセスしているユーザ(複数可)1502を表す一方、記載された技法は、ユーザ(複数可)1502がユーザデバイス(複数可)1504を介して、固定電話上で、キオスクを介して、または任意の他の様式で、サービスプロバイダコンピュータ(複数可)1510と対話する例に、同様に適用されてよい。記載された技法が、非クライアント/サーバ配置(例えば、ローカルに記憶されたアプリケーション等)だけでなく、他のクライアント/サーバ配置(例えば、セットトップボックス等)に適用されてよいことがさらに留意される。
簡単に上述した通り、アプリケーション1506により、ユーザ(複数可)1502は、ウェブコンテンツ(例えば、ウェブページ、音楽、ビデオ等)にアクセスすることなど、サービスプロバイダコンピュータ(複数可)1510と対話することが可能になり得る
。サーバのクラスタ内またはサーバファームとしておそらく配置されるサービスプロバイダコンピュータ(複数可)1510は、アプリケーション1506及び/またはクラウドベースのソフトウェアサービスをホストしてよい。他のサーバアーキテクチャはさらに、アプリケーション1506をホストするためにも使用されてよい。アプリケーション1506は、多くのユーザ1502からの要求を処理し、それに応答して、種々のアイテムウェブページを供給することが可能であってよい。アプリケーション1506は、ソーシャルネットワーキングサイト、オンライン小売店、情報サイト、ブログサイト、検索エンジンサイト、ニュース及びエンターテイメントサイトなどを含む、ユーザ対話をサポートする任意のタイプのウェブサイトを提供できる。上述の通り、記載された技法は、ユーザデバイス(複数可)1404上で実行している他のアプリケーションなどのアプリケーション1506の外部で同様に実施できる。
ユーザデバイス(複数可)1504は、携帯電話、スマートフォン、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、シンクライアントデバイス、タブレットPC、電子書籍(e-book)リーダ等であるがそれらに限定されない、任意のタイプのコンピューティングデバイスであってよい。いくつかの例において、ユーザデバイス(複数可)1504は、ネットワーク(複数可)1508を介して、または他のネットワーク接続を介して、サービスプロバイダコンピュータ(複数可)1510と通信状態にあってよい。追加的に、ユーザデバイス(複数可)1504は、サービスプロバイダコンピュータ(複数可)1510により管理されるか、制御されるか、別様にはその一部である分散システムの一部(例えば、サービスプロバイダコンピュータ1510に統合されるコンソールデバイス)であってよい。
1つの例示的な構成において、ユーザデバイス(複数可)1504は、少なくとも1つのメモリ1514及び1つ以上の処理ユニット(またはプロセッサ(複数可)1516)を含んでよい。プロセッサ(複数可)1516は、ハードウェア、コンピュータ実行可能命令、ファームウェアまたはそれらの組み合わせにおいて適切に実装されてよい。プロセッサ(複数可)1516のコンピュータ実行可能命令またはファームウェア実装は、記載された種々の機能を行うために任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令またはマシン実行可能命令を含んでよい。ユーザデバイス(複数可)1504はさらに、ユーザデバイス(複数可)1504に関連する地理的位置情報を提供及び/または記録するための地理的位置デバイス(例えば、全地球測位システム(GPS)デバイスなど)を含んでよい。
メモリ1514は、プロセッサ(複数可)1516上でロード可能及び実行可能であるプログラム命令、ならびに、これらのプログラムの実行中に生成されたデータを記憶してよい。ユーザデバイス(複数可)1504の構成及びタイプに応じて、メモリ1514は揮発性(ランダムアクセスメモリ(RAM)など)及び/または不揮発性(読み出し専用メモリ(ROM)、フラッシュメモリ等など)であってよい。ユーザデバイス(複数可)1504はさらに、磁気ストレージ、光学ディスク及び/またはテープストレージを含むがそれらに限定されない、追加の取り外し可能ストレージ及び/または取り外し不可能ストレージを含んでよい。ディスクドライブ及びそれらの関連するコンピュータ可読媒体は、コンピューティングデバイスに、コンピュータ可読命令、データ構造、プログラムモジュール及び他のデータの不揮発性ストレージを提供してよい。いくつかの実装において、メモリ1514は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)またはROMなどの複数の異なるタイプのメモリを含んでよい。
さらに詳細にメモリ1514のコンテンツに注目すると、メモリ1514は、ブラウザアプリケーション1506または専用アプリケーション(例えば、スマートフォンアプリ
ケーション、タブレットアプリケーション等)を介するなど、少なくとも1人のユーザが提供する入力要素または電子サービスウェブページを含む、本明細書に開示された特徴を実装するためのオペレーティングシステムと、1つ以上のアプリケーションプログラムまたはサービスとを含んでよい。ブラウザアプリケーション1506は、サービスプロバイダコンピュータ(複数可)1510と対話するためのウェブサイトまたは他のインターフェースを受信、記憶及び/または表示するように構成されてよい。追加的に、メモリ1514は、アクセス認証情報及び/または他のユーザ情報(ユーザID、パスワード及び/または他のユーザ情報などであるが、これらに限定されない)を記憶してよい。いくつかの例では、ユーザ情報は、アカウントアクセス要求を認証するための情報(デバイスID、クッキー、IPアドレス、位置などであるが、これらに限定されない)を含んでよい。さらに、ユーザ情報は、セキュリティ質問に対してユーザが提供した応答またはユーザデバイス1504により得られる地理的位置を含んでよい。
いくつかの態様では、サービスプロバイダコンピュータ(複数可)1510はさらに、任意のタイプのコンピューティングデバイスであってよく、携帯電話、スマートフォン、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ、シンクライアントデバイス、タブレットPC等などであるが、これらに限定されない。追加的に、いくつかの実施形態では、サービスプロバイダコンピュータ(複数可)1510は、ホスト型コンピューティング環境に実装された1つ以上の仮想マシンにより実行されることに留意すべきである。ホスト型コンピューティング環境は、1つ以上の迅速に提供及び解放されるコンピューティングリソースを含んでよく、コンピューティングリソースは、コンピューティングデバイス、ネットワーキングデバイス及び/またはストレージデバイスを含んでよい。ホスト型コンピューティング環境はさらに、クラウドコンピューティング環境と呼ばれてよい。いくつかの例では、サービスプロバイダコンピュータ(複数可)1510は、ユーザデバイス(複数可)1504及び/または他のサービスプロバイダと、ネットワーク(複数可)1508を介して、または他のネットワーク接続を介して通信状態にあってよい。サービスプロバイダコンピュータ(複数可)1510は、1つ以上のサーバを含んでよく、おそらくクラスタ内に、サーバファームとして、または互いに関連しない別個のサーバとして、配置される。これらのサーバは、本明細書で記載したキーワード分類及び評価機能サービスを、統合された分散コンピューティング環境の一部として実施するように構成されてよい。
1つの例示的な構成において、サービスプロバイダコンピュータ(複数可)1510は、少なくとも1つのメモリ1518及び1つ以上の処理ユニット(またはプロセッサ(複数可)1520)を含んでよい。プロセッサ(複数可)1520は、ハードウェア、コンピュータ実行可能命令、ファームウェアまたはそれらの組み合わせにおいて適切に実装されてよい。プロセッサ(複数可)1520のコンピュータ実行可能命令またはファームウェア実装は、記載された種々の機能を行うために任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令またはマシン実行可能命令を含んでよい。
場合によっては、ハードウェアプロセッサ(複数可)1520はシングルコアプロセッサまたはマルチコアプロセッサであってよい。マルチコアプロセッサは同じプロセッサ内の複数の処理ユニットを含んでよい。いくつかの実施形態では、マルチコアプロセッサは、バス及びマルチコア間の第2または第3レベルのキャッシュなどのある特定のリソースを共有してよい。場合によっては、シングルまたはマルチコアプロセッサの各コアはさらに、複数の実行論理プロセッサ(またはスレッド)を含んでよい。(複数の論理プロセッサをサポートする)係るコアにおいて、実行パイプラインのいくつかのステージ及びさらに低レベルのキャッシュはさらに共有されてよい。
メモリ1518は、プロセッサ(複数可)1520上でロード可能及び実行可能である
プログラム命令、ならびに、これらのプログラムの実行中に生成されたデータを記憶してよい。サービスプロバイダコンピュータ(複数可)1510の構成及びタイプに応じて、メモリ1518は揮発性(RAMなど)及び/または不揮発性(ROM、フラッシュメモリ等など)であってよい。サービスプロバイダコンピュータ(複数可)1510またはサーバはさらに、追加のストレージ1522を含んでよく、ストレージ1522は取り外し可能ストレージ及び/または取り外し不可能ストレージを含んでよい。追加のストレージ1522は、磁気ストレージ、光学ディスク及び/またはテープストレージを含んでよいが、これらに限定されない。ディスクドライブ及びそれらの関連するコンピュータ可読媒体は、コンピューティングデバイスのためのコンピュータ可読命令、データ構造、プログラムモジュール及び他のデータの不揮発性ストレージを提供してよい。いくつかの実装において、メモリ1518は、SRAM、DRAMまたはROMなどの複数の異なるタイプのメモリを含んでよい。
メモリ1518、取り外し可能及び取り外し不可能の両方の追加のストレージ1522は全て、コンピュータ可読記憶媒体の例である。例えば、コンピュータ可読記憶媒体は、情報(コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど)の記憶のための任意の方法または技術で実装された揮発性または不揮発性、取り外し可能または取り外し不可能な媒体を含んでよい。メモリ1518及び追加のストレージ1522は全て、コンピュータ記憶媒体の例である。サービスプロバイダコンピュータ(複数可)1510に存在し得る追加タイプのコンピュータ記憶媒体としては、PRAM、SRAM、DRAM、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、DVDもしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または任意の他の媒体であって、所望の情報を記憶するために使用可能であり、サービスプロバイダコンピュータ(複数可)1510がアクセス可能なものを含んでよいが、これらに限定されない。前述の任意の組み合わせはさらに、コンピュータ可読媒体の範囲内に含まれるべきである。
代替的に、コンピュータ可読通信媒体は、コンピュータ可読命令、プログラムモジュールまたはデータ信号内で送信される他のデータ(搬送波または他の送信など)を含んでよい。しかしながら、本明細書で使用する場合、コンピュータ可読記憶媒体にはコンピュータ可読通信媒体は含まれない。
サービスプロバイダコンピュータ(複数可)1510はさらに、通信接続(複数可)1524であって、サービスプロバイダコンピュータ(複数可)1510が、記憶されたデータベース、別のコンピューティングデバイスもしくはサーバ、ユーザ端末及び/またはネットワーク(複数可)1508上の他のデバイスと通信することを可能にする通信接続(複数可)1524を包含してよい。サービスプロバイダコンピュータ(複数可)1510はさらに、I/Oデバイス(複数可)1526(キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、ディスプレイ、スピーカ、プリンタなど)を含んでよい。
メモリ1518は、オペレーティングシステム1528、1つ以上のデータストア1530及び/または任意にI/Oステアリングエンジン1532、リソースモジュール1540及び複数の計算サブシステムモジュール1542を含む本明細書に開示の特徴を実施するための1つ以上のアプリケーションプログラムもしくはサービスを含んでよい。いくつかの実施形態では、リソースモジュール1540は複数のI/Oリソース及びアクセラレータを含み得る。いくつかの実施形態では、I/Oステアリングエンジン1532はI/Oステアリングエンジン112と類似し得る。複数の計算サブシステムモジュール1542はネットワーク計算サブシステム202及びサーバ計算サブシステム204を含み得る。本明細書に記載のモジュールは、ソフトウェアモジュール、ハードウェアモジュール
またはその適切な組み合わせでよい。モジュールがソフトウェアモジュールの場合、モジュールは非一時的なコンピュータ可読媒体上に具現化され、本明細書に記載の任意のコンピュータシステムのプロセッサにより処理できる。記載の処理及びアーキテクチャは、任意のユーザ対話の前に、リアルタイムモードまたは非同時モードのいずれかで行うことができることに留意すべきである。モジュールは図15に提示された様式で構成されてよく、及び/または本明細書に記載の機能は個別のモジュールとして存在する1つ以上のモジュールにより提供することができ、及び/または本明細書に記載のモジュール機能は複数のモジュールにわたり広がり得る。
図16は、種々の実施形態による、態様を実施するための環境例1600の態様を例示する。理解される通り、説明の目的上、ウェブベースの環境が使用されるが、適切であれば、種々の実施形態を実装するために様々な環境が使用され得る。環境は、電子クライアントデバイス1602を含み、このデバイスは、適切なネットワーク1604上で要求、メッセージまたは情報を送信及び受信するように、ならびにデバイスのユーザに情報を返すように動作可能な、任意の適切なデバイスを含んでよい。係るクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子書籍リーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワークもしくは任意の他の係るネットワークまたはそれらの組み合わせを含む、任意の適切なネットワークを含んでよい。係るシステムに使用される構成要素は、選択されるネットワーク及び/または環境のタイプに少なくとも部分的に依存してよい。係るネットワークを介した通信のためのプロトコル及び構成要素は周知であり、本明細書では詳細に述べない。ネットワーク上の通信は、有線接続または無線接続及びそれらの組み合わせによって使用可能になり得る。本例では、ネットワークはインターネットを含み、環境は要求を受信及びそれに応答するコンテンツの供給を行うウェブサーバ1606を含むが、他のネットワークの場合、同様の目的を果たす代替デバイスが使用できることが当業者には明らかであろう。
例示の環境は、少なくとも1つのアプリケーションサーバ1608及びデータストア1610を含む。連結されるかまたは別様に構成可能であり、適切なデータストアからデータを取得するなどのタスクを行うために対話可能な、いくつかのアプリケーションサーバ、層または他の要素、処理もしくは構成要素が存在し得ることを理解すべきである。本明細書で使用される場合、用語「データストア」は、任意の標準型、分散型またはクラスタ型の環境において、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス及びデータ記憶媒体を含み得る、データの記憶、アクセス及び検索が可能な任意のデバイスまたはデバイスの組み合わせを指す。アプリケーションサーバは、クライアントデバイスに対する1つ以上のアプリケーションの態様を実行し、アプリケーションに対する大部分のデータアクセス及びビジネス論理を処理するために、必要に応じてデータストアに統合するための、任意の適切なハードウェア及びソフトウェアを含んでよい。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、オーディオ及び/またはビデオなどのコンテンツを生成することが可能であり、これをウェブサーバによって、本例ではハイパーテキストマークアップ言語(「HTML」)、拡張可能マークアップ言語(「XML」)または別の適切な構造言語の形態でユーザに供給してよい。全ての要求及び応答の処理、ならびにクライアントデバイス1602とアプリケーションサーバ1608との間のコンテンツの送達は、ウェブサーバによって処理可能である。本明細書で述べられる構造化コードは、本明細書の他の場所で述べられるような任意の適切なデバイスまたはホストマシン上で実行可能であるため、ウェブサーバ及びアプリケーションサーバは必須ではなく単なる例示の構成要素であることを理解すべきである。
データストア1610は、特定の態様に関するデータを記憶するための、いくつかの個別のデータテーブル、データベースまたは他のデータ記憶機構及び媒体を含んでよい。例えば、例示のデータストアは、製造データ1612及びユーザ情報1616を記憶するための機構を含み、これを使用して製造側にコンテンツを供給してよい。データストアはさらに、ログデータ1614を記憶するための機構を含むように示されており、これは報告、分析または他の係る目的に使用してよい。データストアに記憶する必要があり得る多くの他の態様が存在し得ることを理解すべきであり、例えば、適切であるものとして上記で列挙した機構のいずれか、またはデータストア1610の追加の機構に記憶可能なページイメージ情報及びアクセス権情報などに対してのものである。データストア1610は、それに関連付けられた論理を介してアプリケーションサーバ1608から命令を受信し、それに応答してデータの取得、更新または別様の処理を行うように、動作可能である。一例では、ユーザはある特定のタイプのアイテムに対する検索要求を提出する可能性がある。この場合、データストアは、ユーザの識別を検証するためにユーザ情報にアクセスする可能性があり、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することができる。次いで、ユーザがユーザデバイス1602上でブラウザを介して見ることができるウェブページ上の結果一覧においてなど、情報をユーザに返すことができる。対象の特定アイテムに関する情報は、ブラウザの専用ページまたはウィンドウで見ることができる。
各サーバは、通常、そのサーバの一般的な管理及び動作に関する実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、通常、サーバのプロセッサによって実行された場合、サーバがその目的とする機能を行えるようにする命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等)を含むことになる。オペレーティングシステム及びサーバの一般的な機能性に対する好適な実装は既知であるか、または市販されており、当業者によって、特に本明細書における開示に鑑みて、容易に実装される。
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する、分散型コンピューティング環境である。しかしながら、当業者であれば、係るシステムが、図16に示されるよりも少ないかまたは多い数の構成要素を有するシステム内で、等しく良好に動作可能であることを理解されよう。したがって、図16のシステム1600の図示は、本来は例示的なものであり、本開示の範囲を限定するものと解釈されるべきではない。
種々の実施形態は、いくつかの場合、多数のアプリケーションのいずれかを動作するように使用可能な1つ以上のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含んでよい、多種多様な動作環境でさらに実施できる。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどの多数の汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行し、多数のネットワーキングプロトコル及びメッセージングプロトコルをサポートすることが可能な、セルラ式、無線及びハンドヘルドのデバイスのいずれかを含んでよい。係るシステムはさらに、開発及びデータベース管理などの目的で多様な市販のオペレーティングシステム及び他の既知のアプリケーションのいずれかを実行する、多数のワークステーションを含んでよい。これらのデバイスは、ダミー端末、シンクライアント、ゲームシステム及びネットワークを介して通信可能な他のデバイスなどの、他の電子デバイスをさらに含んでよい。
ほとんどの実施形態は、トランスミッションコントロールプロトコル/インターネットプロトコル(「TCP/IP」)、開放型システム間相互接続(「OSI」)、ファイル
トランスファプロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)及びAppleTalkなどの、多様な市販のプロトコルのいずれかを使用する通信をサポートするための、当業者によく知られた少なくとも1つのネットワークを利用する。例えば、ネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク及びそれらの任意の組み合わせとなり得る。
ウェブサーバを利用する実施形態では、ウェブサーバは、ハイパーテキストトランスファプロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインターフェース(「CGI」)サーバ、データサーバ、Java(登録商標)サーバ及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのいずれかを実行することができる。サーバ(複数可)はさらに、Java(登録商標)、C、C#もしくはC++などの任意のプログラミング言語、またはPerl、PythonもしくはTCLなどの任意のスクリプト言語、ならびにそれらの組み合わせで記述された、1つ以上のスクリプトまたはプログラムとして実装してよい、1つ以上のウェブアプリケーションを実行することなどにより、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行可能であってよい。サーバ(複数可)はさらに、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)及びIBM(登録商標)から市販されているものを限定なしに含む、データベースサーバを含んでよい。
環境はさらに、前述のように、多様なデータストアならびに他のメモリ及び記憶媒体を含んでよい。これらは、1つ以上のコンピュータに対してローカルな(及び/または内部に常駐した)、あるいはネットワークにわたるコンピュータのいずれかまたは全てからリモートの、記憶媒体上などの、多様な位置に常駐可能である。実施形態の特定のセットでは、情報は当業者によく知られたストレージエリアネットワーク(「SAN」)内に常駐してよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに寄与する機能を行うために必要な任意のファイルは、適宜、ローカル及び/またはリモートに記憶されてよい。システムがコンピュータ化されたデバイスを含む場合、それぞれの係るデバイスは、バスを介して電気的に結合し得るハードウェア要素を含むことが可能であり、要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタまたはスピーカ)を含む。係るシステムはさらに、ディスクドライブ、光学ストレージデバイス及びランダムアクセスメモリ(「RAM」)または読み出し専用メモリ(「ROM」」などのソリッドステートストレージデバイスなどの、1つ以上のストレージデバイス、ならびに取り外し可能な媒体デバイス、メモリカード、フラッシュカード等を含んでよい。
係るデバイスはさらに、上記の通り、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)及び作業メモリを含んでよい。コンピュータ可読記憶媒体リーダは、リモート、ローカル、固定及び/または取り外し可能ストレージデバイスを表す、コンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的及び/またはより永続的に包含する、記憶する、伝達する及び検索するための記憶媒体に、接続可能か、またはそれらを受信するように構成可能である。システム及び種々のデバイスはさらに、通常、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、少なくとも1つの作業メモリデバイス内に配置された、多数のソフトウェアアプリケーション、モジュール、サービスまたは他の要素を含むことになる。代替的な実
施形態は、上記からの多数の変形形態を有してよいことを理解すべきである。例えば、カスタマイズされたハードウェアはさらに、ハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)またはその両方で使用される可能性があり、及び/または特定の要素をハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)またはその両方で実装する可能性がある。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続を用いてよい。
コードまたはコードの一部を包含するための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電気的に消去可能なプログラム可能読み出し専用メモリ(「EEPROM」)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(「CD-ROM」)、デジタル多用途ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイスを含む、コンピュータ可読命令、データ構造、プログラムモジュールもしくは他のデータなどの情報の記憶及び/または伝達用の任意の方法または技術で実装された、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体などであるがこれらに限定されない記憶媒体及び通信媒体、あるいは所望の情報を記憶するために使用可能であり、システムデバイスによるアクセス可能な任意の他の媒体を含む、当分野で知られているかまたは使用されている任意の適切な媒体を含んでよい。当業者であれば、本明細書で提供された開示及び教示に基づき、種々の実施形態を実装するための他の手段及び/または方法を理解されよう。
したがって、本明細書及び図面は、限定的ではなく例示的な意味であるとみなされる。しかしながら、特許請求の範囲に記載された本開示のより広義な趣旨及び範囲から逸脱することなく、本明細書に対する種々の修正及び変更が行われ得ることは明白であろう。
開示の実施形態は以下の条項を考慮して記載され得る。
条項1.ホストシステムと通信するように構成されるシステムオンチップ(SoC)であり、
計算サービスを提供するためのサーバ計算サブシステムと、
前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを少なくとも管理するためのネットワーク計算サブシステムと、
複数の第1I/Oリソースを備える第1I/Oサブシステムと、
複数の第2I/Oリソースを備える第2I/Oサブシステムと、
前記第1I/Oサブシステム及び前記第2I/Oサブシステムに連結されるI/Oステアリングエンジンであり、
前記複数の第1I/Oリソースの少なくとも1つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングし、
前記複数の第2I/Oリソースの少なくとも1つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングするように構成される前記I/Oステアリングエンジンと
を備える、前記SoC。
条項2.前記第1I/Oサブシステムは前記ホストシステムと通信する第1インターフェースと、前記ネットワークと通信する第2インターフェースと、前記I/Oステアリングエンジンと通信する第3インターフェースとをさらに含む、条項1に記載のSoC。
条項3.前記第2I/Oサブシステムは前記ホストシステムと通信する第1インターフェースと、前記ネットワークと通信する第2インターフェースと、前記I/Oステアリングエンジンと通信する第3インターフェースとをさらに含む、先行条項のいずれかに記載
のSoC。
条項4.1つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記I/Oステアリングエンジンは前記アクセラレータの少なくとも1つを前記サーバ計算サブシステムまたは前記ネットワーク計算サブシステムにステアリングするようにさらに構成される、先行条項のいずれかに記載のSoC。
条項5.ホストシステムと通信するように構成されるシステムオンチップ(SoC)であり、
複数の計算サブシステムと、
複数の第1I/Oリソースを備える第1I/Oサブシステムと、
前記第1I/Oサブシステムに連結されるI/Oステアリングエンジンであり、前記複数の第1I/Oリソースの少なくとも1つを前記複数の計算サブシステムにある1つ以上の計算サブシステムに導くように構成される、前記I/Oステアリングエンジン
とを備える、前記SoC。
条項6.前記SoCは複数の第2I/Oリソースを備える第2I/Oサブシステムをさらに備え、前記I/Oステアリングエンジンは前記複数の第2I/Oリソースの少なくとも1つを前記複数の計算サブシステムにある前記1つ以上の計算サブシステムに導くようにさらに構成される、条項5に記載のSoC。
条項7.前記SoCは1つ以上のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記I/Oステアリングエンジンは前記アクセラレータの少なくとも1つを前記複数の計算サブシステムにある前記1つ以上の計算サブシステムに導くようにさらに構成される、条項5または6に記載のSoC。
条項8.前記SoCは管理計算サブシステムをさらに備え、前記管理計算サブシステムは前記I/Oステアリングエンジンにステアリング構成を提供するように構成される、条項5~7のいずれかに記載のSoC。
条項9.前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、条項5~8のいずれかに記載のSoC。
条項10.前記I/Oステアリングエンジンは前記複数の第1I/Oリソースの1つ以上を前記サーバ計算サブシステムに導き、前記複数の第2I/Oリソースの1つ以上を前記ネットワーク計算サブシステムに導くように構成される、条項9に記載のSoC。
条項11.前記I/Oステアリングエンジンは前記複数の第1I/Oリソースの1つ以上及び前記複数の第2I/Oリソースの1つ以上を前記ネットワーク計算サブシステムに導くように構成される、条項9または10に記載のSoC。
条項12.前記I/Oステアリングエンジンは前記複数の第1I/Oリソースの1つ以上及び前記複数の第2I/Oリソースの1つ以上を前記サーバ計算サブシステムに導くように構成される、条項9~11のいずれかに記載のSoC。
条項13.前記I/Oステアリングエンジンはネットワーク計算サブシステムキャッシュコヒーレントファブリックを介して前記ネットワーク計算サブシステムに連結され、サーバ計算サブシステムキャッシュコヒーレントファブリックを介して前記サーバ計算サブ
システムに連結される、条項9~12のいずれかに記載のSoC。
条項14.前記SoCは複数のアクセラレータを備えるアクセラレータサブシステムをさらに備え、前記I/Oステアリングエンジンは前記複数のアクセラレータの1つ以上を前記ネットワーク計算サブシステムに導き、前記複数のアクセラレータの1つ以上を前記サーバ計算サブシステムに導くようにさらに構成される、条項9~13のいずれかに記載のSoC。
条項15.前記第1I/Oサブシステムは前記ホストシステムと通信する第1インターフェースと、ネットワークと通信する第2インターフェースと、前記I/Oステアリングエンジンと通信する第3インターフェースとを含む、条項5~14のいずれかに記載のSoC。
条項16.前記第2I/Oサブシステムは前記ホストシステムと通信する第1インターフェースと、ネットワークと通信する第2インターフェースと、前記I/Oステアリングエンジンと通信する第3インターフェースとを含む、条項5~15のいずれかに記載のSoC。
条項17.システムオンチップ(SoC)にあるI/Oリソースをステアリングする方法であり、
複数の計算サブシステムにある1つ以上の計算サブシステムをアクティブ化することと、
第1I/Oサブシステムにある複数の第1I/Oリソースの少なくとも1つを前記1つ以上の計算サブシステムにステアリングするために、及び第2I/Oサブシステムにある複数の第2I/Oリソースの少なくとも1つを前記1つ以上の計算サブシステムにステアリングするためにステアリング構成を決定することと、
前記第1I/Oサブシステム及び前記第2I/Oサブシステムに連結されたI/Oステアリングエンジンに前記ステアリング構成を提供することと
を備える、前記方法。
条項18.前記複数の計算サブシステムは計算サービスを提供するためのサーバ計算サブシステムと、前記ホストシステム及び前記サーバ計算サブシステムに対するネットワークトラフィックを管理するためのネットワーク計算サブシステムとを含む、条項17に記載の方法。
条項19.前記複数の第1I/Oリソースの1つ以上及び前記複数の第2I/Oリソースの1つ以上は前記ネットワーク計算サブシステムにステアリングされる、条項18に記載の方法。
条項20.前記複数の第1I/Oリソースの1つ以上及び前記複数の第2I/Oリソースの1つ以上は前記サーバ計算サブシステムにステアリングされる、条項18または19に記載の方法。
他の変形形態は本開示の趣旨の範囲内である。したがって、開示された技法は種々の修正及び代替構成の対象となり得るが、そのうちのある特定の例示された実施形態が図面に示されており、上記で詳細に説明された。しかしながら、開示された1つの特定の形態または複数の特定の形態に本開示を限定することは意図されておらず、反対に、添付の特許請求の範囲に定義された通り本開示の趣旨及び範囲内にある全ての修正、代替構成及び等価物をカバーするよう意図されていることを理解すべきである。
開示された実施形態を記述する文脈での(特に以下の特許請求の範囲の文脈での)用語「a」及び「an」及び「the」及び同様の指示対象の使用は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾しない限り、単数形及び複数形の両方をカバーするものと解釈されるものである。用語「comprising(備える)」、「having(有する)」、「including(含む)」及び「containing(包含する)」は、別段に記載されていない限り、非限定(すなわち「含むが限定されない」ことを意味する)用語として解釈されるものである。用語「接続された」は、たとえ何らかの介入が存在していても、部分的または全体的に包含される、連結される、または互いに接合されるとして解釈されるものである。本明細書での値の範囲の列挙は、本明細書で別段に指示されていない限り、範囲内にある各個別の値を個々に指す省略方法として機能することが単に意図されており、各個別の値は、あたかも本明細書に個々に列挙されているかのように本明細書に組み込まれる。本明細書に記載された全ての方法は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で行うことができる。本明細書で提供された任意及び全ての例または例示の表現(例えば、「などの」)の使用は、本開示の実施形態を単により良く明らかにすることが意図されており、別段に請求されない限り、本開示の範囲に限定を課すものではない。本明細書内のいかなる表現も、任意の請求されない要素を本開示の実施に不可欠であるものとして示すものと解釈されるべきではない。
語句「X、YまたはZの少なくとも1つ」などの離接的な表現は、別段の定めのない限り、項目、用語などがX、YまたはZのいずれかまたはそれらの任意の組み合わせ(例えば、X、Y及び/またはZ)であり得ることを提示するために、一般的に使用される文脈内で解釈される。したがって、係る離接的な表現は、一般的に、ある特定の実施形態が、X、Y及びZのそれぞれが存在するために、Xの少なくとも1つ、Yの少なくとも1つまたはZの少なくとも1つを必要とすることを示すように意図されるものではなく、そうすべきでもない。
本明細書には、本開示を実施するための発明者に知られた最良の方法を含む、本開示の好適な実施形態が記述されている。前述の説明を読むことで当業者にそれらの好適な実施形態の変形形態が明らかとなり得る。発明者は、当業者が係る変形形態を適切なものとして利用するものと予期し、発明者は、本明細書で具体的に記載された以外の方法で本開示が実施されることを意図する。したがって、本開示は、適用可能な法律によって許可された場合、添付の特許請求の範囲に記載された主題の全ての修正及び等価物を含む。さらに、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、全ての可能な変形形態での前述の要素の任意の組み合わせが本開示によって包含される。