(57)【要約】      （修正有）【課題】下位互換性を実装する新しいバスアーキテクチャで動作するシステムを提供する。【解決手段】新しいデバイスでレガシーアプリケーションを実行しているときの、バス動作の違いによって発生する問題に対処するために、新しいデバイスは、レガシーデバイスのバス動作をエミュレートする方法で、レガシーアプリケーションを実行するときにバスパフォーマンスを調整する。【選択図】図２
2020170541.tif 000002
【特許請求の範囲】
【請求項１】
非レガシーデバイス上でレガシーアプリケーションを実行しているときのバス動作におけるタイミング及びデータ転送速度に関する違いによって発生する問題に対処するための方法であって、
前記レガシーアプリケーションを実行しているときに、前記非レガシーデバイス上で同期を維持する方法で、前記非レガシーデバイスのバスパフォーマンスを調整する、方法。
【請求項２】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から決定される推定された帯域幅の割り当てに基づいている、請求項１に記載の方法。
【請求項３】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から推定される量に従って、特定のバストランザクションに割り当てられる利用可能なバス帯域幅の量を制限することを含む、請求項１に記載の方法。
【請求項４】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記非レガシーデバイスが前記レガシーデバイスによって割り当てられた帯域幅と少なくとも同量の帯域幅であるがレガシーアプリケーションの実行時に同期エラーが発生するほど大きくはない帯域幅を割り当てるように、前記非レガシーデバイス上のバストラフィックを調整することを含む、請求項１に記載の方法。
【請求項５】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記非レガシーデバイス上でレガシーアプリケーションを実行している間に前記バスパフォーマンスを調整し、追加の帯域幅の割り当てによって実行に問題が生じる量を決定することを含む、請求項１に記載の方法。
【請求項６】
前記非レガシーデバイスが、メモリまたは構成可能なハードウェアレジスタに格納されたルックアップテーブルを使用して、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てる、請求項１に記載の方法。
【請求項７】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、帯域幅の割り当てを決定するために前記レガシーデバイスのバス動作のコンピュータモデルを使用することを含む、請求項１に記載の方法。
【請求項８】
前記非レガシーデバイスが、メモリまたは構成可能なハードウェアレジスタに格納された１つまたは複数の比率を使用して、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てる、請求項１に記載の方法。
【請求項９】
非レガシーデバイスであって、
１つまたは複数のプロセッサと、
１つまたは複数のバスによって前記１つまたは複数のプロセッサに動作可能に結合されたメモリと、を備え、
前記メモリに記憶され、前記プロセッサによって実行可能な実行可能命令が、実行されると、前記プロセッサに、前記非レガシーデバイスでレガシーアプリケーションを実行しているときに、バス動作におけるタイミング及びデータ転送速度に関する違いによって発生する問題に対処する方法を実装させ、前記方法が、
前記レガシーアプリケーションを実行しているときに、前記非レガシーデバイス上で同期を維持する方法で、前記１つまたは複数のバス上のバスパフォーマンスを調整することを含む、非レガシーデバイス。
【請求項１０】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から決定される推定された帯域幅の割り当てに基づいている、請求項９に記載の非レガシーデバイス。
【請求項１１】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から推定される量に従って、特定のバストランザクションに割り当てられる利用可能なバス帯域幅の量を制限することを含む、請求項９に記載の非レガシーデバイス。
【請求項１２】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、前記非レガシーデバイスが前記レガシーデバイスによって割り当てられた帯域幅と少なくとも同量の帯域幅であるがレガシーアプリケーションの実行時に同期エラーが発生するほど大きくはない帯域幅を割り当てるように、前記非レガシーデバイス上のバストラフィックを調整することを含む、請求項９に記載の非レガシーデバイス。
【請求項１３】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、前記非レガシーデバイス上でレガシーアプリケーションを実行している間に前記バスパフォーマンスを調整し、追加の帯域幅の割り当てによって実行に問題が生じる量を決定することを含む、請求項９に記載の非レガシーデバイス。
【請求項１４】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てるために、メモリまたは構成可能なハードウェアレジスタに格納されたルックアップテーブルを使用することを含む、請求項９に記載の非レガシーデバイス。
【請求項１５】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、帯域幅の割り当てを決定するために前記レガシーデバイスのバス動作のコンピュータモデルを使用することを含む、請求項９に記載の非レガシーデバイス。
【請求項１６】
前記１つまたは複数のバス上のバスパフォーマンスを調整することが、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てるために、メモリまたは構成可能なハードウェアレジスタに格納された１つまたは複数の比率を使用することを含む、請求項９に記載の非レガシーデバイス。
【請求項１７】
前記１つまたは複数のプロセッサが、１つまたは複数の中央プロセッサユニットを含む、請求項９に記載の非レガシーデバイス。
【請求項１８】
コンピューティングデバイスに、非レガシーデバイス上でレガシーアプリケーションを実行しているときのバス動作におけるタイミング及びデータ転送速度に関する違いによって発生する問題に対処する方法を実装させるように構成された実行可能命令を媒体中に具体化した非一時的なコンピュータ可読媒体であって、前記方法が、
前記レガシーアプリケーションを実行しているときに、前記非レガシーデバイス上で同期を維持する方法で、前記非レガシーデバイス上のバスパフォーマンスを調整することを含む、前記非一時的なコンピュータ可読媒体。
【請求項１９】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から決定される推定された帯域幅の割り当てに基づいている、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記レガシーデバイスのバス動作から推定される量に従って、特定のバストランザクションに割り当てられる利用可能なバス帯域幅の量を制限することを含む、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２１】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記非レガシーデバイスが前記レガシーデバイスによって割り当てられた帯域幅と少なくとも同量の帯域幅であるがレガシーアプリケーションの実行時に同期エラーが発生するほど大きくはない帯域幅を割り当てるように、前記非レガシーデバイス上のバストラフィックを調整することを含む、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２２】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、前記非レガシーデバイス上でレガシーアプリケーションを実行している間に前記バスパフォーマンスを調整し、追加の帯域幅の割り当てによって実行に問題が生じる量を決定することを含む、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２３】
前記非レガシーデバイスが、メモリまたは構成可能なハードウェアレジスタに格納されたルックアップテーブルを使用して、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てる、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２４】
前記非レガシーデバイス上のバスパフォーマンスを調整することが、帯域幅の割り当てを決定するために前記レガシーデバイスのバス動作のコンピュータモデルを使用することを含む、請求項１８に記載の非一時的なコンピュータ可読媒体。
【請求項２５】
前記非レガシーデバイスが、メモリまたは構成可能なハードウェアレジスタに格納された１つまたは複数の比率を使用して、異なるバストラフィック条件下で前記非レガシーデバイスのノード間に帯域幅を割り当てる、請求項１８に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、本発明の譲受人に譲渡され、２０１６年１月２２日に出願された米国仮出願第６２／２８４号の利益を主張するものであり、この内容全体が、参照により本明細書に援用される。
【背景技術】
【０００２】
新しいコンピュータアーキテクチャがリリースされると、以前のバージョンのアーキテクチャ用に作成されたアプリケーションは、新しいアーキテクチャで完璧に実行することが望まれる。この機能は、しばしば「下位互換性」と呼ばれる。下位互換性を実装することは、新しいアーキテクチャがレガシー用に作成されたプログラムの命令を実行できるように、新しいホストアーキテクチャ上のターゲットレガシーデバイスをエミュレートすることを含む。コンピュータアーキテクチャは、時間の経過と共にバスの技術的進歩、クロック速度、プロセッサアーキテクチャ、キャッシング、標準規格などを利用するように変化する。１つのコンピュータアーキテクチャが新しいアーキテクチャに置き換えられると、古いアーキテクチャはいわゆるレガシーアーキテクチャになる。ネットワークプロトコル、ユーザーインターフェース、オーディオ処理、デバイスドライバ、グラフィックス処理、メッセージング、ワードプロセッサ、スプレッドシート、データベースプログラム、ゲーム、その他のアプリケーションなどのソフトウェアアプリケーションは、その開発過程では、レガシーアーキテクチャ向けに作成されている。そのようなレガシーソフトウェアは、新しいアーキテクチャにアップグレードしても、ユーザーにとって価値があるものである。したがって、新しいアーキテクチャでレガシーソフトウェアを実行できるようにする必要がある。
【０００３】
新しいデバイス及びレガシーデバイスのハードウェアコンポーネントのパフォーマンスの違いにより、新しいデバイスの同期のエラーが発生し、新しいデバイスアーキテクチャで実行しているときに、レガシーアプリケーションがクラッシュし得る。このようなパフォーマンスの差は、例えば、新しいデバイスとレガシーデバイスとの間のバスアーキテクチャの違いから生じる可能性がある。バスアーキテクチャは、異なるデバイスコンポーネント間で複数のデータパスを提供する。レガシーデバイス及び新しいデバイスは、デバイスコンポーネント間のタイミング及びデータ転送速度の制約が異なるため、デバイスコンポーネント間で異なるバスパスを持つことができる。例えば、新しいデバイスの２つのコンポーネント間のバスパスが、レガシーデバイスのこれらのコンポーネント間で対応するバスパスよりも高速である場合、あるコンポーネントによって引き続き使用されているデータは、別のコンポーネントによって早い段階で上書きされ得る。
【発明の概要】
【０００４】
新しいデバイスでレガシーアプリケーションを実行しているときのバス動作の違いによって発生する問題に対処するために、新しいデバイスは、レガシーデバイスのバス動作をエミュレートする方法で、レガシーアプリケーションを実行しているときにバスパフォーマンスを調整し得る。
【０００５】
新しいシステムのバススロットルは、レガシーバス動作から決定される推定帯域幅の割り当てに基づき得る。バストラフィックは、レガシーバス動作から推定された量に従って、特定のバストランザクションに割り当てられた利用可能なバス帯域幅の量を制限することによって調整し得る。バストラフィックは、新しいデバイスがレガシーシステムによって割り当てられていた帯域幅と少なくとも同量の帯域幅を割り当てるように調整されるが、レガシーアプリケーションの実行時に同期エラーが発生することはそれほど多くはない。新しいデバイスでレガシーアプリケーションを実行している間にスロットルを調整して、追加の帯域幅の割り当てによって実行に問題が生じる量を決定できる。
【０００６】
本開示の教示は、添付の図面と併せて以下の詳細な説明を考慮することによって容易に理解することができる。
【図面の簡単な説明】
【０００７】
【図１】本開示の態様による新しいデバイスとレガシーデバイスとの間のバスアーキテクチャの違いを説明するように構成されたデバイスを示すブロック図である。
【図２】本開示の態様による新しいデバイスとレガシーデバイスとの間のバスアーキテクチャの違いを考慮して帯域幅の割り当てを決定するヒューリスティックアプローチを示すフロー図である。
【発明を実施するための形態】
【０００８】
以下の詳細な説明は、例示の目的で多くの特定の詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が特許請求された発明の範囲内にあることを理解するであろう。したがって、以下に記載される本発明の例示的な実施形態は、一般性を失うことなく、かつ制限を課すことなく、特許請求された発明に記載されている。
【０００９】
図１は、レガシーデバイス用に作成されたアプリケーションを実行しているときに、レガシーデバイスと新しいデバイスとの間のバスアーキテクチャの違いを説明するように構成された新しいデバイスの例を示す。この例では、新しいデバイスは、共通メモリ１０６及びＩ／Ｏアクセスコントローラ１０８に結合されたマルチコアＣＰＵ及びマルチコアＧＰＵを含み得る。各ＣＰＵまたはＧＰＵコアは、バックサイドバス（ＢＳＢ１、ＢＳＢ２）を介して、レベル２キャッシュ１１０及びバスインターフェースユニット１１２に結合される。レベル２のキャッシュ１１０は、フロントサイドバス（ＦＳＢ）によってメモリ１０６及びＩ／Ｏアクセスコントローラ１０８に結合される。追加のメモリ（図示せず）、周辺機器１１４、ビデオ１１６、及びデータ記憶デバイス１１８は、様々なバスによってアクセスコントローラを介してＣＰＵ及びＧＰＵとインターフェースする。ＣＰＵ及びＧＰＵは、データ及び／または命令の一時的な記憶のための構成可能なレジスタ１０５を含み得る。図１のデバイスのレガシーバージョンは、例えば、ＣＰＵ及びＧＰＵのための別個のバスがあるアーキテクチャや、メモリ及びＩ／Ｏアクセスのための別個のコントローラがあるアーキテクチャなどの、異なるアーキテクチャを有することができる。
【００１０】
図１に示す例では、アクセスコントローラ１０８は、例えば、メモリ１０６に格納されたコード命令１０３を実行することによって、バスパフォーマンスを調整してレガシーバス動作をエミュレートし、レガシーアプリケーションを実行しているときに同期を維持する。アクセスコントローラは、レガシーデバイスのバス動作をエミュレートする方法で利用可能なバス帯域幅を割り当てることにより、様々なバスＢＳＢ１、ＢＳＢ２、ＦＳＢのバストラフィックを調整する（１０８）。スロットルには、レガシーデバイスのバスパフォーマンスデータによって通知される。このデータを生成するために、レガシーアプリケーションの実行中にレガシーデバイスがテストされ得る。異なるバスクライアントのバス帯域幅の割り当ては、異なる条件で測定される。特定のバストランザクションに割り当てられる帯域幅に影響を及ぼす要因には、バスにアクセスしている特定のバスクライアント（例えば、ＣＰＵ１０２またはＧＰＵ１０４）、バスを介して送信されるデータの送信元または宛先（例えば、メモリ１０６）、データが読み書きされているかどうか、トランザクションの優先順位が高いか低いか、要求された帯域幅の量、他のバスクライアントがバス帯域幅に対して競合しているか、などが含まれる。これらの要因のすべては、バス帯域幅の割り当てと共にレガシーデバイスのテスト中に記録され得る。
【００１１】
レガシーバス動作をエミュレートするには、テーブル駆動型アプローチ、比率駆動型アプローチ、ヒューリスティックアプローチの少なくとも３つのアプローチがある。３つのアプローチはすべて、レガシーデバイスが異なる状況下で異なるクライアントに実際に割り当てる帯域幅を調べ、同一または類似の状況下で新しいデバイスで帯域幅の割り当てを複製する。テスト段階では、特定のクライアントと特定のリソースとの間（または特定のクライアントとの間）の古いハードウェア上の帯域幅の割り当てが、異なる状況下で測定される。測定された帯域幅の割り当て値は、新しいハードウェアのテーブルまたは比率またはヒューリスティックに入れられる。
【００１２】
テーブル駆動型アプローチ
テーブル駆動型アプローチでは、新しいデバイスは、メモリ１０６または構成可能レジスタ１０５に格納されたルックアップテーブルを使用して、異なるバストラフィック条件下でノード間に帯域幅を割り当てる。簡単な例として、メモリトランザクション用に３０ＭＢ／ｓの利用可能なバス帯域幅で競合する２つのバスクライアントＡとＢがあると仮定する。以下の表１は、レガシーデバイスの測定されたパフォーマンス（すなわち、バス帯域幅の割り当て）に基づいて、クライアントＡとＢとの間に割り当てられた帯域幅を示す。
【表１】
2020170541.tif 000003
【００１３】
表１では、所与の要求された帯域幅に割り当てられた帯域幅はＡ／Ｂで示され、ここで、ＡはクライアントＡに割り当てられた帯域幅であり、ＢはクライアントＢに割り当てられた帯域幅である。表１の値は、レガシーアプリケーションによる通常動作中のレガシーデバイスのバス帯域幅の割り当てを監視することによって決定され得る。要求された帯域幅以外のいくつかの要因は、例えば、帯域幅が読み出しまたは書き込み動作のために要求されているかどうか、Ａ及びＢの要求の相対的な優先順位など、帯域幅の割り当てに影響を及ぼし得る。テーブルには、これらの要因を考慮に入れ得る。
【００１４】
比率アプローチ
比率アプローチは、メモリ１０６または構成可能レジスタ１０５に格納されたテーブルが比率によって帯域幅の割り当てを指定することを除いて、テーブル駆動アプローチと同様である。例えば、表２は、利用可能な最大バス帯域幅の割合による帯域幅の要求及び割り当てを示す。
【表２】
2020170541.tif 000004
【００１５】
上記では２次元の例を示したが、テーブルまたは比率アプローチは、３つ、４つまたはそれ以上の異なるバスクライアントに対応するために、３つ、４つまたはそれ以上の次元に拡張し得る。また、クライアントの異なるグループにサービスを提供する複数の異なるバスがある場合、テーブルまたは比率はこのことを考慮に入れ得る。
【００１６】
ヒューリスティックアプローチ
ヒューリスティックアプローチは、レガシーバス動作のコンピュータモデル２０１を使用して、帯域幅の割り当てを決定する。図２に一例を示す。クライアントＡとＢとの間の所与のバストランザクションの場合、ヒューリスティックは、現在のバストラフィック、要求された帯域幅、帯域幅を要求するクライアント（複数可）、トラフィックの宛先などに関する入力を受信する。図２では、入力は、それぞれクライアントＡ及びクライアントＢからの帯域幅要求２０２、２０４である。ヒューリスティックは、クライアントＡとＢとの間のバスパスの動作、バス調停２０６など、同じまたは類似の状況下でのレガシーバス動作に関するデータ２０８を使用してモデル化する。レガシーバス動作データは、ヒューリスティックによる迅速なアクセスのためにローカルメモリに格納され得る。モデリングでは、帯域幅要求、現在のバスの条件、及びレガシーバスデータを考慮して、クライアントＡ及びクライアントＢの推定バス帯域幅の割り当てを決定する。バスコントローラ、例えば、バスインターフェース１１２は、これらの割り当てを使用してバストラフィックを調整することができる。
【００１７】
テーブル、比率、及びヒューリスティックアプローチでは、原因よりも、所与の状況下でレガシーバス帯域幅がどのように割り当てられるかが考慮される。レガシーバス帯域幅の調停は、データがクライアントから読み取られているか、クライアントに書き込まれているか、トランザクションの優先順位が高いか低いか、要求された帯域幅の量などによって異なる。レガシーバス帯域幅の割り当てが十分に予測可能である場合、それらはテーブル、比率またはヒューリスティックアプローチを使用して複製できる。
【００１８】
ウィジェットは、メモリ１０６及びＩ／Ｏコントローラ１０８によって実装する必要はない。代替的な実施態様では、バスクライアントＡ、Ｂは自己スロットルすることができる。具体的には、各バスクライアントは、バストラフィックを調べて、レガシーシステムに処理可能な帯域幅よりも多くの帯域幅を要求しているかどうかを判断し、十分な帯域幅が利用可能であると判断するまで要求を保持するウィジェット１０９を含むことができる。これらの各ウィジェットは、構成可能レジスタ１１１に格納されたテーブル、比率、またはヒューリスティックにアクセスすることができる。
【００１９】
上記は、本発明の好適な実施形態の完全な説明であるが、様々な代替、変更、及び等価物を使用することが可能である。したがって、本発明の範囲は、上記の説明を参照せずに判断されるべきであり、代わりに、添付の特許請求の範囲を参照して、等価物の全範囲と共に判断されるべきである。好適であろうとなかろうと、任意の特徴は、好適であろうとなかろうと、他の特徴と組み合わせることができる。以下の特許請求の範囲において、不定冠詞「Ａ」または「Ａｎ」は、別段特に述べられていない場合を除いて、その冠詞に続く事項の１つまたは複数の量のことを言う。添付の特許請求の範囲は、「〜するための手段」という言い回しを使用して所与の特許請求の範囲においてそのような限定が明示的に記載されていない限り、ミーンズ・プラス・ファンクションの限定を含むものとして解釈されない。指定された機能を実行「するための手段」を明示的に記載していない特許請求の範囲内の要素は、米国特許法１１２条（ｆ）項に規定されている「手段」または「ステップ」句として解釈されない。
【図１】
2020170541.tif 000005
【図２】
2020170541.tif 000006