(57)【要約】  異種システムオンチップ（ＳｏＣ）［２００］内のマルチドメイン作成および分離は、異種ＳｏＣ［２００］内で利用可能な複数のプロセッサ［２０６、２０８、２１０］および複数のハードウェアリソースを指定するハードウェア記述ファイル［１３５、５１０］を受信すること［７０５］と、コンピュータハードウェアを使用して、異種ＳｏＣ［２００］のための複数のドメインを作成すること［７１０］であって、各ドメインが、複数のプロセッサ［２０６、２０８、２１０］から選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣ［２００］のための複数のドメインを作成すること［７１０］とを含み得る。方法は、コンピュータハードウェアを使用して、オペレーティングシステムを各ドメインに割り当てること［７３５］と、コンピュータハードウェアを使用して、異種ＳｏＣ［２００］内に複数のドメインを実装するように設定されたプラットフォームを生成すること［７５０］とを含み得る。【選択図】図７
2021521533.tif 000002
【特許請求の範囲】
【請求項１】
異種システムオンチップ（ＳｏＣ）内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、
コンピュータハードウェアを使用して、前記異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、前記複数のプロセッサから選択されたプロセッサと、前記複数のハードウェアリソースから選択されたハードウェアリソースとを含む、前記異種ＳｏＣのための複数のドメインを作成することと、
前記コンピュータハードウェアを使用して、オペレーティングシステムを各ドメインに割り当てることと、
前記コンピュータハードウェアを使用して、前記異種ＳｏＣ内に前記複数のドメインを実装するように設定されたプラットフォームを生成することと
を含む、方法。
【請求項２】
前記プラットフォームが、前記異種ＳｏＣの分離回路を設定するための設定データを含む、請求項１に記載の方法。
【請求項３】
前記プラットフォームが、前記異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む、請求項１または２に記載の方法。
【請求項４】
前記プラットフォームが、前記複数のドメインのうちの選択されたドメインについて、前記選択されたドメインに割り当てられた前記オペレーティングシステムのためのデバイスツリーを含み、前記デバイスツリーが、前記複数のハードウェアリソースから選択された前記ハードウェアリソースに基づいて生成される、請求項１から３のいずれか一項に記載の方法。
【請求項５】
各ドメインが前記異種ＳｏＣ内で論理的に実施される、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記ハードウェア記述ファイルを使用して前記異種ＳｏＣのための前記複数のドメインのうちの少なくとも１つのドメインを修正すること
をさらに含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記プラットフォームが、ソフトウェア開発環境による使用のための前記複数のドメインのための複数のアーティファクトを含み、前記方法は、
前記複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、前記選択されたドメインに対応する、前記複数のアーティファクトから選択されたアーティファクトを使用して生成すること
をさらに含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
各ドメインが、利用可能なランダムアクセスメモリの一部分を割り当てられる、請求項１から７のいずれか一項に記載の方法。
【請求項９】
プログラムコードを記憶するように設定されたメモリと、
前記メモリに連結されたプロセッサと
を備えるシステムであって、前記プロセッサが、前記プログラムコードを実行したことに応答して、
異種システムオンチップ（ＳｏＣ）内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、
前記異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、前記複数のプロセッサから選択されたプロセッサと、前記複数のハードウェアリソースから選択されたハードウェアリソースとを含む、前記異種ＳｏＣのための複数のドメインを作成することと、
オペレーティングシステムを各ドメインに割り当てることと、
前記異種ＳｏＣ内に前記複数のドメインを実装するように設定されたプラットフォームを生成することと
を含む動作を始動するように設定された、システム。
【請求項１０】
前記プラットフォームが、前記異種ＳｏＣの分離回路を設定するための設定データを含む、請求項９に記載のシステム。
【請求項１１】
前記プラットフォームが、前記異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む、請求項９または１０に記載のシステム。
【請求項１２】
前記プラットフォームが、前記複数のドメインのうちの選択されたドメインについて、前記選択されたドメインに割り当てられた前記オペレーティングシステムのためのデバイスツリーを含み、前記デバイスツリーが、前記複数のハードウェアリソースから選択された前記ハードウェアリソースに基づいて生成される、請求項９から１１のいずれか一項に記載のシステム。
【請求項１３】
各ドメインが前記異種ＳｏＣ内で論理的に実施され、各ドメインが、利用可能なランダムアクセスメモリの一部分を割り当てられる、請求項９から１２のいずれか一項に記載のシステム。
【請求項１４】
前記プロセッサが、
前記ハードウェア記述ファイルを使用して前記異種ＳｏＣのための前記複数のドメインのうちの少なくとも１つのドメインを修正すること
をさらに含む動作を始動するように設定された、請求項９から１３のいずれか一項に記載のシステム。
【請求項１５】
前記プラットフォームが、ソフトウェア開発環境による使用のための前記複数のドメインのための複数のアーティファクトを含み、前記プロセッサが、
前記複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、前記選択されたドメインに対応する、前記複数のアーティファクトから選択されたアーティファクトを使用して生成すること
をさらに含む動作を始動するように設定された、請求項９から１４のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、集積回路（ＩＣ）に関し、より詳細には、異種（ｈｅｔｅｒｏｇｅｎｅｏｕｓ）システムオンチップ（ＳｏＣ）タイプのＩＣ内に複数のドメインを作成し、分離することに関する。
【背景技術】
【０００２】
ＳｏＣは、プログラムコードを実行することが可能なプロセッサと、１つまたは複数の他のサブシステムとを含む集積回路（ＩＣ）のタイプを指す。プロセッサは、（１つまたは複数の）他のサブシステムと協調して動作することが可能である。異種ＳｏＣは、２つまたはそれ以上のプロセッサを含むＩＣを指す。プロセッサは、異なるアーキテクチャを有し、たとえば、異なる命令セットを利用し得る。プロセッサはまた、互いとは無関係に動作し得る。たとえば、そのような異種ＳｏＣの第１のプロセッサが、第１のオペレーティングシステムおよびアプリケーションを実行し得、異種ＳｏＣの第２のプロセッサが、第２のおよび異なるオペレーティングシステムおよび／またはアプリケーションを実行し得る。
【発明の概要】
【０００３】
１つまたは複数の実施形態では、方法が、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、コンピュータハードウェアを使用して、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。本方法は、コンピュータハードウェアを使用して、オペレーティングシステムを各ドメインに割り当てることと、コンピュータハードウェアを使用して、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【０００４】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含み得る。
【０００５】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダ（ｆｉｒｓｔ  ｓｔａｇｅ  ｂｏｏｔ  ｌｏａｄｅｒ）を含み得る。
【０００６】
いくつかの実施形態では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み得る。デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成され得る。
【０００７】
いくつかの実施形態では、各ドメインは異種ＳｏＣ内で論理的に実施され得る。
【０００８】
いくつかの実施形態では、本方法は、ハードウェア記述ファイルを使用して異種ＳｏＣのための複数のドメインのうちの少なくとも１つのドメインを修正することをさらに含み得る。
【０００９】
いくつかの実施形態では、プラットフォームは、ソフトウェア開発環境による使用のための複数のドメインのための複数のアーティファクトを含み得る。本方法は、複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、選択されたドメインに対応する、複数のアーティファクトから選択されたアーティファクトを使用して生成することをさらに含み得る。
【００１０】
いくつかの実施形態では、各ドメインは、利用可能なランダムアクセスメモリの一部分を割り当てられ得る。
【００１１】
１つまたは複数の実施形態では、システムが、プログラムコードを記憶するように設定されたメモリと、メモリに連結されたプロセッサとを含む。プロセッサは、プログラムコードを実行したことに応答して、動作を始動するように設定される。実行可能な動作は、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。動作は、オペレーティングシステムを各ドメインに割り当てることと、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【００１２】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含み得る。
【００１３】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含み得る。
【００１４】
いくつかの実施形態では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み得る。デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成され得る。
【００１５】
いくつかの実施形態では、各ドメインは異種ＳｏＣ内で論理的に実施され得る。
【００１６】
いくつかの実施形態では、プロセッサは、ハードウェア記述ファイルを使用して異種ＳｏＣのための複数のドメインのうちの少なくとも１つのドメインを修正することをさらに含む動作を始動するように設定され得る。
【００１７】
いくつかの実施形態では、プラットフォームは、ソフトウェア開発環境による使用のための複数のドメインのための複数のアーティファクトを含み得る。プロセッサは、複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、選択されたドメインに対応する、複数のアーティファクトから選択されたアーティファクトを使用して生成することをさらに含む動作を始動するように設定され得る。
【００１８】
いくつかの実施形態では、各ドメインは、利用可能なランダムアクセスメモリの一部分を割り当てられ得る。
【００１９】
１つまたは複数の実施形態では、コンピュータプログラム製品が、プログラムコードがその上に記憶されたコンピュータ可読記憶媒体を含む。プログラムコードは、動作を始動するためにコンピュータハードウェアによって実行可能である。動作は、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。動作は、オペレーティングシステムを各ドメインに割り当てることと、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【００２０】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含み得る。
【００２１】
いくつかの実施形態では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含み得る。
【００２２】
いくつかの実施形態では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み得る。デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成され得る。
【００２３】
本発明の概要セクションは、いくつかの概念を導入するために提供されるにすぎず、請求される主題の重要な、または本質的な特徴を識別するために提供されるものではない。本発明の構成の他の特徴は、添付の図面および以下の発明を実施するための形態から明らかになろう。
【００２４】
本発明の構成は、添付の図面において例として示される。しかしながら、図面は、本発明の構成を、図示される特定の実装形態のみに限定するものと解釈されるべきではない。様々な態様および利点が、以下の発明を実施するための形態を検討し、図面を参照すると明らかになろう。
【図面の簡単な説明】
【００２５】
【図１】本開示内で説明される１つまたは複数の実施形態とともに使用するための例示的なシステムを示す図である。
【図２】異種ＳｏＣの一例を示す図である。
【図３】分離回路の一例を示す図である。
【図４】分離回路の別の例を示す図である。
【図５】異種ＳｏＣ内に複数のドメインを作成し、分離することの一例を示す図である。
【図６】異種ＳｏＣのための複数のドメインの一例を示す図である。
【図７】異種ＳｏＣ内に複数のドメインを作成し、分離する例示的な方法を示す図である。
【図８】ＳｏＣタイプのＩＣのための例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００２６】
本開示は、新規の特徴を定義する特許請求の範囲で締めくくるが、本開示内で説明される様々な特徴は、図面とともにその説明を考慮することにより、より良く理解されると考えられる。本明細書で説明される（１つまたは複数の）プロセス、（１つまたは複数の）機械、（１つまたは複数の）製造物およびその任意の変形形態は、例示のために提供される。本開示内で説明される特定の構造的および機能的詳細は、限定するものとして解釈されるべきではなく、単に、特許請求の範囲のための基礎として、およびほぼすべての適切に詳細な構造において説明される特徴を様々に採用するように当業者に教示するための代表的基礎として解釈されるべきである。さらに、本開示内で使用される用語および句は、限定するものではなく、むしろ、説明される特徴の理解可能な説明を提供するものである。
【００２７】
本開示は、ＩＣに関し、より詳細には、異種ＳｏＣ内に複数のドメインを作成し、分離することに関する。本明細書で開示される本発明の構成によれば、異なるドメイン、たとえば、ソフトウェアドメインが、異種ＳｏＣ内での実装のために作成され得る。各ドメインは、事実上、異種ＳｏＣのサブシステムを実装する。ドメインは、ハードウェア設計ツールとは対照的にアプリケーションレベルツールを使用して作成され得る。異種ＳｏＣのための各ドメインは、ハードウェアおよび／またはソフトウェアかどうかにかかわらず、様々なリソースを含むように作成され得る。各ドメインは、異種ＳｏＣ中で実装されたとき、異種ＳｏＣ中で利用可能なハードウェア分離特徴を活用することによって１つまたは複数の埋込みアプリケーションを実装および／または実行するために使用され得る。説明のために、「ＳｏＣ」または「システムオンチップ」という用語は、本開示内では異種ＳｏＣを指す。
【００２８】
１つまたは複数の実施形態では、ハードウェア設計ツール（たとえば、電子設計オートメーション（ＥＤＡ）ツール）が、設計のためのハードウェア記述ファイルを生成するために使用され得る。ハードウェア設計ツールによって生成されたような、ハードウェア記述ファイルは、ＳｏＣ内に実装されるために、インスタンス化され、したがって、所与の設計による使用のために利用可能である、ＳｏＣの特定のハードウェアリソースを指定する。たとえば、ハードウェア記述ファイルは、ＳｏＣのどのプロセッサが使用のために利用可能であるかと、ＳｏＣのどの周辺デバイスが設計による使用のために利用可能であるかとを指定し得る。ハードウェア記述ファイルは、埋込みアプリケーション、たとえば、ＳｏＣ上で稼働または実行するために作成されるプログラムコードによって使用され得る、ＳｏＣのハードウェアリソースを指定する。この点について、ＳｏＣは、ハードウェア設計ツールによって生成されたハードウェア記述ファイル内で定義されるよりも多くのハードウェアリソースを含み得る。
【００２９】
１つまたは複数の実施形態では、ハードウェア記述ファイルは、ハードウェア設計ツールからエクスポートされ、コンピュータベースドメイン作成ツールによってインポートされ得る。ドメイン作成ツールは、ハードウェア記述ファイルに基づいて複数のドメインを生成することが可能である。ドメイン作成ツールは、たとえば、ハードウェア記述ファイルから、各ドメインがプロセッサを含む複数のドメインを定義することが可能である。ドメイン作成ツールは、ハードウェア記述ファイル内で指定された異なるハードウェアリソースを、作成される異なるドメインに割り当てることが可能である。
【００３０】
ドメイン作成ツールは、作成されたドメインを指定するプラットフォームを生成することが可能である。プラットフォームは、異なるドメインのための様々な異なるソフトウェアアーティファクトを含み得る。一例として、ドメイン作成ツールは、様々なドメインを実装するためにＳｏＣにロードされ得る設定データを生成することが可能である。設定データは、ＳｏＣにロードされたとき、ドメインを作成し、ドメインを互いから分離することが可能である。別の例では、ドメイン作成ツールは、異なるドメインに合わせられた１つまたは複数のソフトウェアアーティファクトを生成することが可能である。ソフトウェアアーティファクトは、ドメインのうちの特定のドメイン中での実行を目的とする実行可能プログラムコード（たとえば、埋込みアプリケーション）を生成するために使用され得る。
【００３１】
１つまたは複数の実施形態では、ドメイン作成ツールは、ハードウェア設計システムから作成されたドメインを修正することも可能である。たとえば、ソフトウェア開発者が、元のドメインを作成するために最初に使用された元のハードウェア記述ファイルに基づいて異なるドメインのうちの１つまたは複数を修正するために、ドメイン作成ツールを利用し得る。したがって、ＳｏＣのドメインを変更および／または修正するために、新しいおよび／または異なるハードウェア記述ファイルがハードウェア設計アプリケーションによって生成される必要がない。
【００３２】
図を参照しながら、本発明の構成のさらなる態様が以下でより詳細に説明される。例示を単純および明快にするために、図に示されている要素は、必ずしも一定の縮尺で描かれているとは限らない。たとえば、要素のうちのいくつかの寸法は、明快のために、他の要素に対して誇張され得る。さらに、適切と見なされる場合、対応する、類似する、または同様の特徴を示すために、参照番号が図の間で繰り返される。
【００３３】
図１は、本明細書で説明される１つまたは複数の実施形態とともに使用するための例示的なシステム１００を示す。システム１００は、コンピュータ、サーバ、ラップトップまたはタブレットコンピュータなどのポータブルコンピュータ、あるいは他のデータ処理システムを実装するために使用され得るコンピュータハードウェアの一例である。コンピュータハードウェアを使用して実装されるシステムまたはデバイスは、ＳｏＣ内に複数のドメインを作成し、分離すること、および／またはＳｏＣ内での実装のために回路設計を処理することに関係する、本明細書で説明される様々な動作を実施することが可能である。
【００３４】
図１の例では、システム１００は、少なくとも１つのプロセッサ１０５を含む。プロセッサ１０５は、インターフェース回路１１５を通してメモリ１１０に連結される。システム１００は、メモリ１１０内に（「プログラムコード」とも呼ばれる）コンピュータ可読命令を記憶することが可能である。メモリ１１０は、コンピュータ可読記憶媒体の一例である。プロセッサ１０５は、インターフェース回路１１５を介してメモリ１１０からアクセスされるプログラムコードを実行することが可能である。
【００３５】
メモリ１１０は、たとえば、ローカルメモリおよびバルク記憶デバイス（ｂｕｌｋ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）など、１つまたは複数の物理メモリデバイスを含み得る。ローカルメモリは、概してプログラムコードの実際の実行中に使用される（１つまたは複数の）非永続的メモリデバイスを指す。ローカルメモリの例は、ランダムアクセスメモリ（ＲＡＭ）、および／または、プログラムコードの実行中のプロセッサによる使用のために好適である様々なタイプのＲＡＭ（たとえば、ダイナミックＲＡＭまたは「ＤＲＡＭ」あるいはスタティックＲＡＭまたは「ＳＲＡＭ」）のいずれかを含む。バルク記憶デバイスは、永続的データ記憶デバイスを指す。バルク記憶デバイスの例は、限定はしないが、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、または他の好適なメモリを含む。システム１００は、プログラムコードが実行中にバルク記憶デバイスから取り出されなければならない回数を低減するために少なくともあるプログラムコードの一時的記憶を行う１つまたは複数のキャッシュメモリ（図示せず）をも含み得る。
【００３６】
メモリ１１０は、プログラムコードおよび／またはデータを記憶することが可能である。たとえば、メモリ１１０は、様々なルーチン、プログラム、オブジェクト、構成要素、論理、他の好適な命令、および／または他のデータ構造を記憶することが可能である。例示のために、メモリ１１０は、オペレーティングシステム１２５と、１つまたは複数のアプリケーション１３０と、ハードウェア記述ファイル１３５とを記憶する。メモリ１１０は、回路設計をも記憶し得る。１つまたは複数の実施形態では、（１つまたは複数の）アプリケーション１３０は、ハードウェア設計アプリケーション（たとえば、電子設計オートメーションまたはＥＤＡアプリケーション）および／またはドメイン作成アプリケーションを含み得る。ハードウェア設計アプリケーションは、ハードウェアシステムを生成し、ハードウェアシステムをハードウェア記述ファイル１３５として記憶することが可能である。ハードウェア記述ファイル１３５は、ターゲットＳｏＣ中で実装されるために、インスタンス化され、したがって、設計による使用のために利用可能である、ターゲットＳｏＣの異なるハードウェアリソースを指定し得る。ハードウェアリソースの例は、限定はしないが、インスタンス化され、使用のために利用可能である、プロセッサ（および／またはプロセッサコア）、メモリ、周辺機器、記憶デバイス、および／またはＳｏＣの他のハードウェア構成要素を含む。
【００３７】
ドメイン作成アプリケーションは、ＳｏＣ内でのドメインの作成および分離に関係する、本明細書で説明される動作を実施することが可能である。ハードウェア設計アプリケーションも、ＳｏＣ内に回路設計を実装するために、設計フローの１つまたは複数の動作（たとえば、合成、配置、ルーティング、および／またはビットストリーム生成）を実施し得る。
【００３８】
システム１００、たとえば、プロセッサ１０５は、本開示内で説明される動作を実施するために、オペレーティングシステム１２５と（１つまたは複数の）アプリケーション１３０とを実行することが可能である。したがって、オペレーティングシステム１２５と（１つまたは複数の）アプリケーション１３０とは、システム１００の一体部分と見なされ得る。さらに、システム１００（たとえば、プロセッサ１０５）によって使用され、生成され、および／または作用されるデータは、システムの一部として採用されたときに機能性を与える機能的データ構造であることを諒解されたい。
【００３９】
インターフェース回路１１５の例は、限定はしないが、システムバスと入出力（Ｉ／Ｏ）バスとを含む。インターフェース回路１１５は、様々なバスアーキテクチャのいずれかを使用して実装され得る。バスアーキテクチャの例は、限定はしないが、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、アクセラレーテッドグラフィックスポート（ＡＧＰ）、ビデオエレクトロニクス規格協会（ＶＥＳＡ）ローカルバス、ユニバーサルシリアルバス（ＵＳＢ）、および周辺構成要素相互接続エクスプレス（ＰＣＩｅ）バスを含み得る。
【００４０】
システム１００は、インターフェース回路１１５に連結された１つまたは複数のＩ／Ｏデバイス１２０をさらに含み得る。Ｉ／Ｏデバイス１２０は、直接、または介在するＩ／Ｏコントローラを通してのいずれかで、システム１００、たとえば、インターフェース回路１１５に連結され得る。Ｉ／Ｏデバイス１２０の例は、限定はしないが、キーボード、ディスプレイデバイス、ポインティングデバイス、１つまたは複数の通信ポート、およびネットワークアダプタを含む。ネットワークアダプタは、システム１００が、介在するプライベートまたは公衆ネットワークを通して他のシステム、コンピュータシステム、リモートプリンタ、および／またはリモート記憶デバイスに連結されるようになることを可能にする回路を指す。モデム、ケーブルモデム、イーサネットカード、およびワイヤレストランシーバが、システム１００とともに使用され得る異なるタイプのネットワークアダプタの例である。
【００４１】
システム１００は、実装されるデバイスおよび／またはシステムの特定のタイプに応じて、図示された構成要素よりも少数の構成要素、または図１に示されていない追加の構成要素を含み得る。さらに、含まれる特定のオペレーティングシステム、（１つまたは複数の）アプリケーション、および／またはＩ／Ｏデバイスは、システムタイプに基づいて変動し得る。さらに、例示的な構成要素のうちの１つまたは複数は、別の構成要素に組み込まれるか、またはさもなければ、別の構成要素の一部分を形成し得る。たとえば、プロセッサが、少なくともあるメモリを含み得る。システム１００は、図１のアーキテクチャまたはそれと同様のアーキテクチャを使用して各々実装される単一のコンピュータあるいは複数のネットワーク化されたまたは相互接続されたコンピュータを実装するために使用され得る。
【００４２】
本開示内で説明される本発明の構成は、ＳｏＣ内に複数の異なるドメインを作成することが可能である。たとえば、ドメイン作成アプリケーションを実行するシステム１００は、埋込みソフトウェアによる使用のために利用可能なハードウェア環境を定義するハードウェア記述ファイル１３５を受信することが可能である。埋込みソフトウェアは、ＳｏＣの特定のドメイン中で稼働または実行することを意図されるプログラムコードを指す。
【００４３】
システム１００は、ドメイン作成アプリケーションを実行する際に、ＳｏＣ内に実装され得る複数の異なるドメインの各々を定義することが可能である。各ドメインは、ハードウェア記述ファイル１３５からＳｏＣの利用可能なプロセッサのうちの１つを割り当てられる。さらに、システム１００は、ドメインの各々中のプロセッサによって実行されるべき特定のオペレーティングシステムを指定することが可能である。
【００４４】
システム１００は、ドメイン作成アプリケーションを実行する際に、ハードウェア記述ファイル１３５からハードウェアリソースのうちの異なるハードウェアリソースをドメインのうちの異なるドメインに割り当てることも可能である。特定の実施形態では、システム１００は、ＳｏＣにロードされたとき、ドメインを作成し、ＳｏＣの動作中にドメインの間で分離を実施する、設定データなどのソフトウェアアーティファクトを生成することが可能である。たとえば、ＳｏＣ内に実装されるべき設計が完成し、ＳｏＣにロードされると、ＳｏＣ内の回路は、あるドメインが、他のドメインに割り当てられたＳｏＣの要素にアクセスするのを防ぎ、それにより、それぞれのドメインによる独立性およびセキュアな動作を保証する。
【００４５】
従来のシステムでは、ハードウェア設計が、設計ツールを使用して作成される。ハードウェア設計は、設計のプロセッサのためのオペレーティングシステム割当ておよび関係するセッティングに気づいていない。ハードウェア設計は、ソフトウェア開発者にハードウェア記述ファイルとして出力される。しかしながら、ハードウェア記述ファイルは、ユーザ（たとえば、ソフトウェア開発者）が変えることができない、ハードウェアの厳格な（ｒｉｇｉｄ）ブロックとして提供された。ソフトウェア開発者は、所与のプロセッサにとって利用可能なリソースを修正することができなかった。
【００４６】
本明細書で説明される本発明の構成によれば、システム１００は、ユーザ（たとえば、ソフトウェア開発者）が、ハードウェア記述ファイルに基づいて異なるドメインを指定し、作成することを可能にする。システム１００は、たとえば、既存のハードウェア記述ファイルを使用し、作成される様々なドメインに同じく割り振られるプロセッサを稼働するための、割り当てられたハードウェアリソースおよびオペレーティングシステムを含む境界を割り振ることが可能である。ドメインは、元の（および不変の）ハードウェア記述ファイルを使用して修正され得る。
【００４７】
図２は、異種ＳｏＣ２００の一例を示す。図２の例では、ＳｏＣ２００は、プロセッサシステム２０２と、プログラマブル回路２０４とを含む。プロセッサシステム２０２は、プログラムコードを実行するように設定された２つまたはそれ以上のプロセッサを含む、ＳｏＣ２００のハードワイヤード領域である。１つまたは複数の実施形態では、プログラマブル回路２０４は、フィールドプログラマブルゲートアレイ（ＦＧＰＡ）回路および／またはプログラマブル論理として実装され得る。プログラマブル回路２０４を含むことにより、ＳｏＣ２００は、プログラマブルＳｏＣと呼ばれることもある。
【００４８】
概して、プログラマブル回路２０４の機能性は、設定データがＳｏＣ２００の設定メモリセル（図示せず）にロードされるまで確立されない。プログラマブル回路２０４をプログラムするために、設定ビットのセットが使用され得る。（１つまたは複数の）設定ビットは、一般に、「設定ビットストリーム」または「ビットストリーム」と呼ばれる。概して、プログラマブル回路は、設定ビットストリームをＳｏＣ２００に最初にロードしなければ、動作可能でないか、または機能可能でない。設定ビットストリームは、プログラマブル回路２０４内に特定の回路設計または回路構造および接続を効果的に実装する。回路設計は、たとえば、プログラマブル回路ブロックの機能的態様と、プログラマブル回路２０４の様々なプログラマブル回路ブロックの間の物理的接続性とを指定する。
【００４９】
「ハードワイヤード」または「ハード化（ｈａｒｄｅｎ）」される、すなわち、プログラマブルでない回路が、ＳｏＣ２００の一部として製造される。プログラマブル回路２０４とは異なり、ハード化された回路またはハード化された回路ブロックは、設定ビットストリームのローディングを通してＳｏＣ２００の製造後に実装されない。ハード化された回路は、概して、たとえば、設定ビットストリームをＳｏＣ２００に最初にロードすることなしに機能可能である専用回路ブロックおよび相互接続を有すると見なされる。
【００５０】
プロセッサシステム２０２は、様々な異なるプロセッサを含む。一態様では、プロセッサシステム２０２の異なるプロセッサは、物理的に別個のインスタンスであるが、同じアーキテクチャを有する（同じ命令セットを使用する）。別の態様では、プロセッサシステム２０２の異なるプロセッサは、物理的に別個のインスタンスであり、２つまたはそれ以上の異なるアーキテクチャを利用する（たとえば、異なる命令セットを利用する）。図２の例では、プロセッサシステム２０２は、アプリケーション処理ユニット（ＡＰＵ）２０６、リアルタイム処理ユニット（ＲＰＵ）２０８、および／またはプロセッサ２１０を含む。
【００５１】
ＡＰＵ２０６は、１つまたは複数のコアを含み得る。本開示内での議論のために、コアが、プログラムコードを実行するように設定された「プロセッサ」と見なされる。ＲＰＵ２０８は、１つまたは複数のコアを含み得る。１つまたは複数の実施形態では、ＲＰＵ２０８は、リアルタイムアプリケーションを実行することが可能である。リアルタイムアプリケーションの例は、限定はしないが、自動車アプリケーション、大容量記憶アプリケーション、モバイルベースバンドアプリケーション、医療用アプリケーション、および／または工業用アプリケーションを含む。ＡＰＵ２０６とＲＰＵ２０８の両方が、それぞれ、分離回路２３０−１および２３０−５を通してプログラマブル回路２０４に直接接続され得る。
【００５２】
述べられたように、一態様では、（たとえば、コアを含む）異なるプロセッサは、異なるアーキテクチャを有し得る。一例では、プロセッサ２１０は、Ｓａｎ  Ｊｏｓｅ，ＣＡのＸｉｌｉｎｘ，Ｉｎｃ．からのＭｉｃｒｏＢｌａｚｅ（商標）プロセッサのハード化されたバージョンとして実装される。ＡＰＵ２０６は、ＡＲＭ  ＣＯＲＴＥＸ−Ａ９など、Ｃａｍｂｒｉｄｇｅ，ＵＫのＡｒｍ  Ｌｔｄ．からのマルチコアプロセッサとして実装され得る。ＲＰＵ２０８は、同じくＡｒｍ  Ｌｔｄ．から入手可能なＡＲＭ  ＣＯＲＴＥＸ−Ｒ５プロセッサとして実装され得る。本明細書で説明される例示的なプロセッサアーキテクチャは、例示のために提供される。ｘ８６プロセッサアーキテクチャなどのプロセッサをＳｏＣ２００中に実装するために他のアーキテクチャが使用され得ることを、当業者は諒解されよう。
【００５３】
プロセッサシステム２０２は、入出力（Ｉ／Ｏ）サブシステム２１２と、相互接続２１４と、メモリコントローラ２１６と、オンチップメモリ（ＯＣＭ）２１８とをさらに含み得る。図２の例では、相互接続２１４は、ＲＰＵ２０８、ＯＣＭ２１８、ＡＰＵ２０６、プロセッサ２１０、Ｉ／Ｏサブシステム２１２、およびメモリコントローラ２１６に連結される。描かれているように、相互接続２１４は、それぞれ、介在する分離回路２３０−２、２３０−６、２３０−４、および２３０−７を通してそのような要素に接続され得る。
【００５４】
１つまたは複数の実施形態では、相互接続２１４は、オンチップ相互接続として実装される。オンチップ相互接続の一例は、ＡＭＢＡ拡張可能インターフェース（ＡＸＩ）バスである。ＡＭＢＡ  ＡＸＩバスは、回路ブロックおよび／またはシステムの間にオンチップ接続を確立する際に使用するための埋込みマイクロコントローラバスインターフェースである。相互接続の他の例示的な実装形態は、限定はしないが、バス、クロスバー、ネットワークオンチップ（ＮｏＣ）、スイッチなどを含み得る。
【００５５】
Ｉ／Ｏサブシステム２１２は、Ｉ／Ｏデバイス２２０および２２２など、複数のＩ／Ｏデバイスを含む。Ｉ／Ｏサブシステム２１２は、３つ以上のＩ／Ｏデバイスを含み得る。Ｉ／Ｏデバイス２２０および２２２の各々は、マルチプレクサＩ／Ｏ（ＭＩＯ）２２４に連結される。ＭＩＯ２２４は、ＳｏＣ２００の外部のノードへの、およびＳｏＣ２００の様々なＩ／Ｏデバイスへのアクセスを、プロセッサシステム２０２および／またはプログラマブル回路２０４に提供するように設定可能である。ＭＩＯ２２４は、ピンごとに設定され得、プロセッサシステム２０２および／またはプログラマブル回路２０４によるＩ／Ｏデバイス２２０および／または２２２への同時アクセスを容易にし得る。
【００５６】
図２の例では、分離回路２３０のインスタンスは、ＳｏＣ２００内に含まれる。１つまたは複数の実施形態では、分離回路２３０の各々は、ＳｏＣ２００中のハードウェアリソースへのアクセスを調節または制御するように設定可能である。各分離回路２３０は、たとえば、設定データのローディングを通して、選択されたハードウェアリソースのみが他のハードウェアリソースにアクセスすることを可能にするように設定され得る。設定データはまた、プロセッサシステム２０２内の要素のための実装オプションを指定し得る。したがって、設定データは、ＳｏＣ２００内の異なるドメインを指定し、および／または、ＳｏＣ２００内に異なるドメインを実装し得る。
【００５７】
たとえば、分離回路２３０−２は、ＲＰＵ２０８と相互接続２１４との間の信号経路中にあり、ＳｏＣ２００のどのハードウェアリソースがＲＰＵ２０８と対話することを許可されるかを調節することが可能である。分離回路２３０−６は、ＯＣＭ２１８と相互接続２１４との間の信号経路中にあり、ＳｏＣ２００のどのハードウェアリソースがＯＣＭ２１８と対話することを許可されるかを調節することが可能である。分離回路２３０−４は、ＡＰＵ２０６と相互接続２１４との間の信号経路中にあり、ＳｏＣ２００のどのハードウェアリソースがＡＰＵ２０６と対話することを許可されるかを調節することが可能である。分離回路２３０−７は、プロセッサ２１０と相互接続２１４との間の信号経路中にあり、ＳｏＣ２００のどのハードウェアリソースがプロセッサ２１０と対話することを許可されるかを調節することが可能である。
【００５８】
さらに、分離回路２３０−８は、相互接続２１４とＩ／Ｏサブシステム２１２との間の信号経路中（たとえば、Ｉ／Ｏデバイスの各々への信号経路中）にある。分離回路２３０−８は、たとえば、Ｉ／Ｏデバイスごとに、ＳｏＣ２００のどのハードウェアリソースがＩ／Ｏサブシステム２１２と対話することを許可されるかを調節することが可能である。分離回路２３０−９は、相互接続２１４とメモリコントローラ２１６との間の信号経路中にあり、ＳｏＣ２００のどのハードウェアリソースがメモリコントローラ２１６と対話し、および／またはメモリコントローラ２１６に連結されたメモリ（図示せず）の特定の領域にアクセスする（たとえば、読み取るおよび／または書き込む）ことを許可されるかを調節することが可能である。さらに、分離回路２３０−１、２３０−３、および２３０−５は、それぞれ、プログラマブル回路２０４と、ＲＰＵ２０８、相互接続２１４、およびＡＰＵ２０６との間の信号経路中にある。分離回路２３０−１は、ＲＰＵ２０８へのプログラマブル回路２０４中の回路のアクセスおよび／またはプログラマブル回路２０４中の回路へのＲＰＵ２０８のアクセスを調節することが可能である。分離回路２３０−３は、相互接続２１４へのプログラマブル回路２０４中の回路のアクセスおよび／またはプログラマブル回路２０４中の回路への相互接続２１４のアクセスを調節することが可能である。分離回路２３０−５は、ＡＰＵ２０６へのプログラマブル回路２０４中の回路のアクセスおよび／またはプログラマブル回路２０４中の回路へのＡＰＵ２０６のアクセスを調節することが可能である。
【００５９】
概して、分離回路２３０は、ＳｏＣ２００内に異なるドメインを実装するようにプログラムされ得る。分離回路２３０は、同じドメインに属するハードウェアリソースのみが互いと通信することを許可するようにプログラムされ得る。特定の実施形態では、分離回路２３０は、異なるドメインへのＳｏＣ２００のハードウェアリソースの論理的区分を実装する。たとえば、分離回路２３０は、アクセスされるアドレスおよび／または別のハードウェアリソースにアクセスすることを試みる回路の識別子に基づいて、アクセスを許可するかまたはアクセスを拒否し得る。
【００６０】
例示的なおよび非限定的な例として、Ｉ／Ｏデバイス２２０および／または２２２のうちの異なるＩ／Ｏデバイスが、プロセッサのうちの特定の１つに割り当てられ得る。たとえば、ＡＰＵ２０６と、メモリコントローラ２１６（たとえば、ＲＡＭの特定の領域）と、Ｉ／Ｏデバイス２２０とを含む第１のドメインが作成され得る。ＲＰＵ２０８と、Ｉ／Ｏデバイス２２２と、メモリコントローラ２１６（たとえば、ＲＡＭの第２のおよび異なる領域）と、ＯＣＭ２１８とを含む第２のドメインが作成され得る。この例では、分離回路２３０は、ドメイン分離を実施し、たとえば、ＲＰＵ２０８がＩ／Ｏデバイス２２０にアクセスするのを防ぎ、ＡＰＵ２０６がＩ／Ｏデバイス２２２にアクセスするのを防ぐ。分離回路２３０は、さらに、ＡＰＵ２０６がＲＡＭの第２の領域にアクセスするのを防ぎ、ＲＰＵ２０８がＲＡＭの第１の領域にアクセスするのを防ぐ。
【００６１】
１つまたは複数の実施形態では、分離回路２３０のうちの特定の分離回路は、メモリ保護ユニットとして実装され得る。たとえば、分離回路２３０−６および２３０−９は、メモリ保護ユニットとして実装され得る。１つまたは複数の他の実施形態では、分離回路２３０のうちの特定の分離回路は、プロセッサ保護ユニットとして実装され得る。たとえば、分離回路２３０−１、２３０−２、２３０−４、２３０−５、および２３０−７は、プロセッサ保護ユニットとして実装され得る。
【００６２】
図３は、分離回路２３０の一例である。図３の例はメモリ保護ユニットであり得る。例示のために、図３は、ＡＸＩインターフェース専門用語を利用する。図３の分離回路２３０は、様々な異なるバスおよび／または相互接続プロトコルのいずれかと協働するように実装され得ることを諒解されたい。
【００６３】
図３の例では、アドレス範囲検査回路３０５が、受信されたトランザクションのアドレスが、開始アドレスおよび終了アドレスによって定義された領域内にあるかどうかを検査し、これは、分離回路２３０の設定レジスタに（たとえば、設定データを設定レジスタに書き込むことによって）記憶され得る。さらに、マスタＩＤ（識別子）回路３１０が、分離回路２３０の設定レジスタに記憶された設定データに基づいて、着信トランザクションのマスタＩＤが許容されるかどうかを検査することが可能である。
【００６４】
分離回路２３０は、アドレス範囲検査回路３０５およびマスタＩＤ回路３１０によって実施された検査を満たさないトランザクションを許容しないことがある。分離回路２３０はまた、トランザクションを阻害する（ｐｏｉｓｏｎ）（たとえば、「阻害」信号を出す）ことがある。分離回路２３０の設定に応じて、実施された検査をトランザクションが満たさないおよび／または阻害信号がアサートされる場合、割込みが生成され得る。
【００６５】
図４は、分離回路２３０の別の例である。図４の例はプロセッサ保護ユニットであり得る。例示のために、図４は、ＡＸＩインターフェース専門用語を利用する。図４の分離回路２３０は、様々な異なるバスおよび／または相互接続プロトコルのいずれかと協働するように実装され得ることを諒解されたい。
【００６６】
図４の例では、周辺機器にアクセスすることを可能にされるマスタを定義するために、分離回路２３０内に記憶されたマスタＩＤリストが使用される。分離回路２３０内に記憶されたアパーチャ（ａｐｅｒｔｕｒｅ）許可リストが、マスタがアクセスすることができる周辺機器アドレスに関する許可を指定する。マスタＩＤ検査回路４１０が、受信されたトランザクションのＡＸＩマスタＩＤがアパーチャ許可リスト中にあることを検査する。許可はマスタＩＤに基づく。ＡＸＩスレーブエントリが、許可フィールド中の対応するビットから来る。アドレス範囲回路４０５が、設定データに従って、マスタによってアクセスされるアドレス範囲が許容されることを検査することが可能である。要件が満たされない場合、トランザクションは阻害され、割込みが随意に生成される。
【００６７】
図３と図４の両方を参照すると、エラー応答信号、たとえば、阻害信号は、トランザクションが違法である（たとえば、トランザクションが、分離回路２３０によって実施された一方または両方の検査に不合格になった）と決定したことに応答して生成され得る。エラー信号は、データアボートまたは割込み信号が生成されることを引き起こす。
【００６８】
図５は、異種ＳｏＣ内に複数のドメインを作成し、分離することの一例を示す。図５の例では、ハードウェア設計アプリケーション５０５が、ハードウェア記述ファイル５１０を生成する。ハードウェア記述ファイル５１０は、使用のために利用可能である、ＳｏＣの異なるハードウェアリソースを指定する。ドメイン作成アプリケーション５１５が、ハードウェア記述ファイル５１０を受信する。ドメイン、たとえば、どのプロセッサが各それぞれのドメイン中に含まれるか、各プロセッサによって実行されるべきオペレーティングシステム、各ドメイン中の各プロセッサにとって利用可能であるべき周辺機器および／またはメモリを指定するユーザ入力５２０に基づいて、ドメイン作成アプリケーション５１５は、ドメインを指定するプラットフォーム５２５を出力する。
【００６９】
１つまたは複数の実施形態では、プラットフォーム５２５は、１つまたは複数のソフトウェアアーティファクトを含む。ソフトウェアアーティファクトは、ＳｏＣの異なるドメインについて埋込みアプリケーションを構築する際に使用され得る設定データ、第１ステージブートローダ、および／または他のソフトウェアアーティファクトを含み得る。たとえば、ソフトウェアアーティファクトは、異なるドメインの各々中に含まれる周辺機器のためのドライバを含み得る。
【００７０】
図６は、異種ＳｏＣ６００のための複数のドメインの一例を示す。図６の例では、ドメイン６０２、６０４、６０６、および６６０が示されている。一態様では、（オペレーティングシステムを除いて）ドメイン６０２、６０４、６０６、および６６０内に示されているリソースの各々は、ハードウェア記述ファイル内で利用可能であるものとして指定される。例示のために、ドメイン６０２、６０４、および６０６の各々は、オペレーティングシステムを利用する。ドメイン６６０は、オペレーティングシステムを使用せず、１つまたは複数のベアメタル（ｂａｒｅ−ｍｅｔａｌ）および／またはスタンドアロンアプリケーションをサポートしないことがある。
【００７１】
示されているように、ドメイン６０２は、プロセッサ６０８と、汎用機器モデル（ＧＥＭ：Ｇｅｎｅｒａｌ  Ｅｑｕｉｐｍｅｎｔ  Ｍｏｄｅｌ）インターフェース６１４と、シリアル周辺インターフェース（ＳＰＩ）６１６と、ウォッチドッグタイマー（ＷＤＴ）６１８と、クワッドシリアル周辺インターフェース（ＱＳＰＩ：Ｑｕａｄ  Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）６２０と、プログラマブル論理知的財産（ＰＬ  ＩＰ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）６２２とを含む。プログラマブル論理ＩＰは、プログラマブル回路中に実装されるＩＰまたはコアを指す。ドメイン６０４は、プロセッサ６１０と、タイミングトリガおよび制御（ＴＴＣ：ｔｉｍｉｎｇ  ｔｒｉｇｇｅｒ  ａｎｄ  ｃｏｎｔｒｏｌ）インターフェース６３０と、ＷＤＴ６３２と、ユニバーサル非同期受信機送信機（ＵＡＲＴ）６３４と、ＰＬ  ＩＰ６３６とを含む。ドメイン６０６は、プロセッサ６１２と、ＧＥＭインターフェース６３８と、セキュアデジタル入出力（ＳＤＩＯ：Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）６４０と、ユニバーサルシリアルバス（ＵＳＢ）６４２と、ＳＰＩ６４４と、インター集積回路（Ｉ２Ｃ）インターフェース６４６と、Ｉ２Ｃインターフェース６４８と、ＵＡＲＴ６５０と、ＱＳＰＩ６５２と、ＷＤＴ６５４と、周辺構成要素相互接続エクスプレス（ＰＣＩｅ）６５６とを含む。ドメイン６６０は、（たとえば、オペレーティングシステムをもたない）プロセッサ６６２と、ＴＴＣインターフェース６６４と、ＷＤＴ６６８と、ＵＡＲＴ６７０と、ＰＬ  ＩＰ６７２とを含む。
【００７２】
図７は、ＳｏＣ内に複数のドメインを作成し、分離する例示的な方法７００を示す。方法７００は、ドメイン作成アプリケーションを実行する、図１に関して本明細書で説明されたようなコンピューティングシステムによって実施され得る。
【００７３】
ブロック７０５において、システムは、ハードウェア記述ファイルをロード、または受信する。ハードウェア記述ファイルは、ＳｏＣ中で利用可能になるハードウェアリソースをハードウェア設計者がインスタンス化するハードウェア設計アプリケーションから取得され得る。ハードウェア記述ファイルは、インスタンス化され、設計のために利用可能であるハードウェアリソースを指定する。ハードウェア記述ファイルは、リストされたハードウェアリソースに関係する追加の詳細をさらに含み得る。
【００７４】
ブロック７１０において、システムはドメインを作成する。たとえば、ユーザが、ドメインの作成を要求するユーザ入力を提供し得る。１つまたは複数の実施形態では、システムはグラフィカルユーザインターフェース（ＧＵＩ）を提供し、ＧＵＩを通して、ユーザはドメインの作成を要求し得る。１つまたは複数の他の実施形態では、システムはコマンドラインインターフェースを提供し、コマンドラインインターフェースを通して、ユーザはドメインを作成するためのコマンドを提供し得る。ドメインを作成するための要求に応答して、システムは、ＳｏＣのためのドメインを作成する。
【００７５】
ブロック７１５において、システムは、ドメインのためのプロセッサを決定する。たとえば、ドメインを作成するためのコマンドの後に、システムは、ドメインに割り当てるべき、ハードウェア記述ファイルにリストされているプロセッサを指定する、さらなるユーザ入力を受信し得る。特定の実施形態では、プロセッサは、ドメインを作成するための、コマンドの一部として、たとえば、コマンドのパラメータまたは引数として、指定され得る。プロセッサを指定するユーザ入力を受信したことに応答して、システムは、ドメインを作成し、プロセッサをドメインに割り当てる。たとえば、システムは、プロセッサをドメインに関連付けるデータ構造をメモリ中に作成する。
【００７６】
ブロック７２０において、システムは、ドメインのためのオペレーティングシステムを決定する。たとえば、システムは、ドメインのために使用されるべき特定のオペレーティングシステムを指定する、さらなるユーザ入力を受信し得る。１つまたは複数の実施形態では、ドメインを作成するためのコマンドは、コマンドのさらなるパラメータまたは引数としてオペレーティングシステムを含むかまたは指定し得る。ドメイン中で使用するために選択され得る異なるタイプのオペレーティングシステムの例は、限定はしないが、Ｌｉｎｕｘ、フリーリアルタイムオペレーティングシステム（ＲＴＯＳ）などのＲＴＯＳ、あるいは、プロセッサまたは埋込みプロセッサによる実行のために好適である任意の他のオペレーティングシステムを含む。他の実施形態では、ドメインが、オペレーティングシステムを含まず、１つまたは複数のベアメタルおよび／またはスタンドアロンアプリケーションをサポートしないことがある。
【００７７】
従来の埋込みシステム開発技法では、ソフトウェア開発者は、ハードウェア設計に基づいて、プロセッサに関連付けられた特定のオペレーティングシステムを利用することに制限された。本開示内で説明される本発明の構成によれば、ソフトウェア開発者は、異なるオペレーティングシステムを自由に選定することができる。ソフトウェア開発者は、異なるオペレーティングシステム／プロセッサペアリングおよび／または異なるオペレーティングシステム設定（たとえば、以下のブロック７２５によれば、異なるアドレス空間マッピング、異なるドライバなど）を試み得る。
【００７８】
ブロック７２５において、システムは、１つまたは複数のリソースを、ブロック７１０および７１５において作成されたドメインに追加することが可能である。１つまたは複数の実施形態では、システムは、（１つまたは複数の）リソースをドメインに割り当てることによって、（１つまたは複数の）リソースをドメインに追加する。リソースは、ハードウェア記述ファイルから選択されたハードウェアリソースであり得る。ハードウェアリソースの例は、限定はしないが、メモリおよびデバイス（たとえば、メモリコントローラ、Ｉ／Ｏデバイス、および／または他の周辺機器）を含むことができる。リソースは、選択されたオペレーティングシステムのためのソフトウェアリソースをも含み得る。ソフトウェアリソースの例は、限定はしないが、ドライバ、物理アドレス空間マッピング、および／またはファームウェアを含むことができる。
【００７９】
１つまたは複数の実施形態では、システムは、ドメインに追加されたハードウェアリソースのプロパティをプルーニングすることが可能である。たとえば、システムは、そのようなハードウェアリソースの設定可能なレジスタを変えること、たとえば、レジスタに書き込まれた設定データを変えることによって、ハードウェアリソースのプロパティを修正することが可能である。例示的なおよび非限定的な例として、システムは、ＵＡＲＴのクロック周波数を変更することが可能である。
【００８０】
ブロック７２５内で、追加のプロパティもドメインに追加され、および／または、ドメインに追加されたリソースにアタッチされ得る。たとえば、サービス品質（ＱｏＳ）セッティングが、ドメインに追加された特定のハードウェアリソースについて指定され得る。分離セッティングも、ドメインについて、および／またはドメインに追加された特定のハードウェアリソースについて指定され得る。クロック周波数が、ドメインのハードウェアリソースについて指定され得る。システムは、そのようなプロパティを受信したことに応答して、プロパティを、ドメインおよび／またはドメインの関連するハードウェアリソースに割り当てる。
【００８１】
ブロック７３０において、システムは、ドメインを実装する設定データを生成することが可能である。設定データは、ＳｏＣ内のドメインを分離することが可能である。設定データは、たとえば、ドメインに割り当てられた特定のハードウェアリソースへのアクセスを調節するために使用される特定の分離回路について、設定レジスタにロードされるデータであり得る。たとえば、ドメインがＡＰＵ２０６を含む場合、ブロック７３０において生成される設定データは、分離回路２３０−５および／または２３０−４についてのものであり得る。述べられたように、ＳｏＣの分離回路は、ドメインを作成し、設定されるとドメイン間の分離を実施する。
【００８２】
ブロック７３５において、システムは、ドメインに追加されるべきより多くのリソースがあるかどうかを決定する。たとえば、ユーザは、ドメインが完了したことを示す入力を提供し得る。別の例では、ユーザは、追加のリソースがドメインに追加されるべきであることを示す入力を提供し得る。より多くのリソースがドメインに追加されるべきであると決定したことに応答して、方法７００は、ブロック７２５にループバックして、より多くのリソースをドメインに追加する。さらなるリソースがドメインに追加されるべきでないと決定したことに応答して、方法７００は、ブロック７４０に進む。
【００８３】
ブロック７４０において、システムは、ドメインのオペレーティングシステムを設定する。たとえば、システムは、ドメインのためのＲＡＭ（たとえば、メモリコントローラを介してアクセス可能なオフチップＲＡＭ）をパーティショニングすることが可能である。一例として、設定されている現在のドメインについて、オペレーティングシステムはＬｉｎｕｘであり得る。現在のドメインのために使用されるＬｉｎｕｘのバージョンは、ＲＡＭの最高４ＧＢにアクセスすることが可能であり得る。ユーザは、ハードウェア記述ファイルにおいて指定される利用可能なＲＡＭのうち、ブロック７１０および７１５において作成されたドメインは、ＲＡＭの１ＧＢを割り振られるべきであることを指定する入力を提供し得る。異なるドメインを設定するときの方法７００のさらなる反復中に、ＲＡＭのさらなる部分が、異なるプロセッサおよび／またはオペレーティングシステムを有するそのような他のドメインに割り振られ得る。
【００８４】
ブロック７４０の一部として、システムは、ドメインに追加されたデバイスを決定し、各特定のデバイスのためのドライバを含めることがさらに可能である。たとえば、ドメインが、ＵＡＲＴ（たとえば、ＵＡＲＴ０）と、別のＵＡＲＴ（たとえば、ＵＡＲＴ１）と、ＵＳＢインターフェースとを含む場合、システムは、ドメイン中に含めるために選択された各特定のタイプ（およびインスタンス）のデバイスのための、およびドメインについて選択された特定のオペレーティングシステムのための、ドライバを選択することが可能である。Ｌｉｎｕｘがドメインのためのオペレーティングシステムである、前の例を参照すると、システムは、ドメインに追加された各デバイスについて、ドライバのＬｉｎｕｘバージョンを選定する。
【００８５】
ブロック７４０の一部として、システムは、ドメインのオペレーティングシステムのためのイメージファイルをさらに生成し得る。前の例を続けると、システムは、ＲＡＭの１ＧＢのみにアクセスするように設定され、ドメイン中に含まれるデバイスの各々のためのＬｉｎｕｘドライバを含む、Ｌｉｎｕｘイメージファイルを生成する。
【００８６】
ブロック７４５において、システムは、ＳｏＣのための別のドメインを追加すべきかどうかを決定する。たとえば、ユーザは、別のドメインの作成を要求するユーザ入力を提供し得る。ユーザ入力は、ＧＵＩを通してなのか、ウィザードを通してなのか、および／またはコマンドラインを通してなのかにかかわらず、本明細書で説明される機構のいずれかを介して提供され得る。ユーザは、さらなるドメインが作成されるべきでないことを示す入力をも提供し得る。別のドメインが追加されるべきである場合、方法７００は、ブロック７１０にループバックし、さらなるドメインが作成され、処理が続く。さらなるドメインが作成されるべきでない場合、方法７００はブロック７５０に進む。
【００８７】
ブロック７５０において、システムは、プラットフォームを生成することが可能である。プラットフォームは、ＳｏＣのために作成されたドメインをサポートする１つまたは複数のソフトウェアアーティファクトを含み得る。１つまたは複数の実施形態では、プラットフォームは、第１ステージブートローダタイプのソフトウェアアーティファクトを含む。第１ステージブートローダは、ブート時間においてＳｏＣにロードされ得るプログラムである。たとえば、第１ステージブートローダは、ＳｏＣにロードされ得るブートイメージ中に含まれ得る。システムは、第１ステージブートローダを生成し、作成されたドメインの各々についてブロック７３０において生成された設定データを含めることが可能である。
【００８８】
ＳｏＣのブートシーケンスは、第１ステージブートローダおよび／またはブートイメージをＳｏＣにロードしたことに応答して第１ステージブートローダを稼働することが可能である。第１ステージブートローダは、ＳｏＣ内での実行に応答して、様々な異なる機能を実施することが可能である。一態様では、第１ステージブートローダは、ＳｏＣのプロセッサシステム内のハードウェアリソースおよび設定レジスタを初期化することが可能である。
【００８９】
別の態様では、第１ステージブートローダは、ＳｏＣのアーキテクチャを設定することが可能である。たとえば、第１ステージブートローダは、プロセッサシステムについての設定データをＳｏＣの適切な設定レジスタに書き込むことによってＳｏＣのプロセッサシステムを設定することが可能である。設定データは、ドメインの各々を同時に実装するためのプロセッサシステム中に含まれる様々なハードウェアリソースについての動作セッティングを指定する。さらに、設定データは、プロセッサシステム中の分離回路についての設定データを含む。したがって、第１ステージブートローダは、異種ＳｏＣにロードされたとき、ドメインを実装し、定義されたドメインを分離する。
【００９０】
別の態様では、第１ステージブートローダは、ブートイメージ中に含まれ得る設定ビットストリームをＳｏＣの設定メモリにロードすることが可能である。説明されたように設定ビットストリームをロードすることは、設定ビットストリームによって定義されるＳｏＣのプログラマブル回路内の物理回路を実装する。
【００９１】
１つまたは複数の実施形態では、システムによって生成されたソフトウェアアーティファクトが、プロセッサ初期化ファイルを含む。特定の実施形態では、プロセッサ初期化ファイルは、「Ｃ設定ファイル」であり得る。プロセッサ初期化ファイルは、プロセッサシステムのためのシステム初期化コードを含み得る。プロセッサ初期化ファイルは、たとえば、ｍａｓｋ＿ｗｒｉｔｅ、ｍａｓｋ＿ｐｏｌｌ、およびｍａｓｋ＿ｒｅａｄなど、レジスタシーケンスを含み得る。プロセッサ初期化ファイルは、プロセッサシステム設定を指定するユーザ入力に基づいて生成され得る。プロセッサ初期化ファイルは、第１ステージブートローダアプリケーション中に含まれる。ユーザが、ドメインを作成し、ドメインに、メモリ、ＵＡＲＴなど、ハードウェアリソースを割り当てるとき、分離回路は、再設定される必要がある。分離回路のための設定レジスタシーケンスは、変化する。これらの変化、たとえば、分離回路のための設定レジスタシーケンスは、プロセッサ初期化ファイルの一部であり得る。
【００９２】
１つまたは複数の実施形態では、プラットフォームは、１つまたは複数のオペレーティングシステムタイプソフトウェアアーティファクトを含む。たとえば、システムは、プラットフォームのために作成されたドメインの各々のための１つまたは複数のオペレーティングシステムアーティファクトを生成することが可能である。オペレーティングシステムアーティファクトを作成する際に、たとえば、ドメインに追加されたリソースについての、ブロック７２５内で指定されたセッティングおよび／またはプロパティが、受け付けられる。
【００９３】
ブロック７５０の一部として生成され得るオペレーティングシステムアーティファクトの一例は、デバイスツリーである。システムは、作成され、デバイスツリーを利用する、ドメインの各々のオペレーティングシステムのためのデバイスツリーを生成することが可能である。生成されるデバイスツリーは、ブロック７２５において指定されたセッティング、アドレス範囲、および／またはプロパティを受け付ける。所与のドメインのためのデバイスツリーは、そのドメインに割り振られたまたは割り当てられたハードウェアリソースのみを含む。したがって、オペレーティングシステムは、ドメイン中で利用可能なデバイスに対応する、デバイスツリーにリストされているデバイスのみを「見る」。
【００９４】
１つまたは複数の実施形態では、プラットフォームは、ＳｏＣの設定およびその中に含まれるドメインに関する情報を指定する１つまたは複数のデータ構造および／またはファイルなど、ソフトウェアアーティファクトを含む。プラットフォーム、または特定のソフトウェアアーティファクトは、たとえば、アプリケーション開発環境（たとえば、コンピューティングシステム中で実行するアプリケーション）にロードされ得る。アプリケーション開発環境は、ＳｏＣのドメイン上で稼働することを意図されるアプリケーションおよび／またはプログラムを開発するように設定され得る。その場合、ソフトウェア開発者が、ドメインのためのプログラムを作成するためにアプリケーション開発環境を使用するとき、設定に関する情報を指定するソフトウェアアーティファクトは、アプリケーション開発のためにインポートされ、使用され得る。
【００９５】
アプリケーション開発環境にインポートされ得るソフトウェアアーティファクトの一例は、リンカスクリプトである。システムは、ドメインの各々のためのリンカスクリプトを生成し、リンカスクリプトとソフトウェアアーティファクトとを出力することが可能である。概して、各リンカスクリプトは、ＳｏＣの特定のドメインのための実行可能アプリケーションを生成するためのリンカの動作を制御する。たとえば、特定のドメインのためのリンカスクリプトは、入力ファイルを出力ファイルにマッピングし、ドメインの確立されたプロパティ、たとえば、ドメインのアドレス指定可能なメモリなどが与えられれば、出力ファイルのメモリレイアウトを制御することが可能である。リンカスクリプトを使用する際に、たとえば、アセンブルされているアプリケーションは、開発されているアプリケーションを実行するドメインにとって利用可能でないメモリの部分を見ることができない。アプリケーションは、ドメインに割り当てられたメモリ（たとえば、ＲＡＭ）の部分のみを見るか、またはその部分のみにアクセスすることが可能である。
【００９６】
たとえば、ソフトウェア開発者がアプリケーション開発環境を開き、プラットフォームをロードするとき、ソフトウェア開発者は、アプリケーションが開発されるべきである、プラットフォームの特定のドメインを指定し得る。アプリケーション開発環境は、指定されたドメインのためのソフトウェアアーティファクトを、ソフトウェア開発者にとって利用可能にすることが可能である。例示的なおよび非限定的な例として、各異なるオペレーティングシステムは、ドメインのオペレーティングシステムと、ドメイン中に含まれるデバイスとに基づいて、特定のドライバ呼出しを利用する。たとえば、ＦｒｅｅＲＴＯＳを使用するドメインのためのアプリケーションを開発する際に、ソフトウェア開発環境は、特定のデバイスを対象とする特定のステートメント（たとえば、「印刷」ステートメント）を、そのデバイスのためのドライバ呼出しに変換し得る。たとえば、ドメインのためのアプリケーションが、ＵＡＲＴ０を介してデータを書き込むことを試み、ＵＡＲＴ０がドメインの一部である場合、アプリケーション開発環境は、ＵＡＲＴ０にアクセスするステートメント、たとえば、「印刷」ステートメントを、ＵＡＲＴ０のためのデバイスドライバ呼出しと置き換えることが可能である。アプリケーションが、ドメイン中に含まれないデバイスにアクセスすることを試みるステートメントを含む場合、アプリケーションの構築は失敗する。たとえば、アプリケーションが、ＵＡＲＴ０を対象とする印刷ステートメントを含むが、ＵＡＲＴ０がドメイン中に含まれない場合、アプリケーションの構築動作は失敗する。
【００９７】
他の場合には、ソフトウェア開発者が、アプリケーションが開発されているドメイン中にないデバイスのアドレスを知り、アプリケーションがＳｏＣ中で実行されるとき、そのアドレスにアクセスするためにプログラムコードを書き込む（たとえば、そのようなアドレスを手動で指定する）場合、その中に含まれる（１つまたは複数の）分離回路は、アプリケーションのドメインの一部でないハードウェアリソースを対象とするそのようなトランザクションを拒否する。
【００９８】
本発明の構成は、ソフトウェア開発者が、所与の異種ＳｏＣのためのドメインを再定義するためにハードウェア開発ツールを利用する必要なしに、プロセッサ、デバイス、および／またはオペレーティングシステムの異なる組合せを試みることを可能にする。本明細書で説明されるツールを使用して、ソフトウェア開発者は、ドメインを定義し、また、ハードウェア設計アプリケーションから生成された同じハードウェア記述ファイルを使用しながらドメインを再定義することが可能である。（たとえば、ハードウェア設計アプリケーションを使用する）ハードウェアレベルにおいてではなくソフトウェアレベルにおいてドメインを指定する能力は、ソフトウェア開発者が、通常ならば生じるよりも著しく少ない時間においてドメインを修正および／または再定義することを可能にする。ソフトウェア開発者が（１つまたは複数の）ドメインへの修正を行うたびに、ドメイン作成ツールは、プラットフォームの更新されたバージョンを出力することが可能である。
【００９９】
アプリケーション開発者は、たとえば、ＧＵＩを通しておよび／またはコマンドラインインターフェースを介してプラットフォームを修正し得る。アプリケーション開発者は、たとえば、ドメインの間のメモリパーティショニングを調整し、ドメインのオペレーティングシステムを変更し、および／またはドメインの間でデバイスを再割り当てし得る。修正を完了すると、および／またはプラットフォームを生成するためのコマンドに応答して、ドメイン作成アプリケーションは、修正を実装する更新されたプラットフォームを生成する。更新されたプラットフォームは、ハードウェア設計アプリケーションにおいて再生成された、修正されたハードウェア記述ファイルとは対照的に、元のハードウェア記述ファイルに基づいて生成される。
【０１００】
得られたプラットフォーム、たとえば、第１ステージブートローダは、ブートイメージ内に含まれ得る。ブートイメージは、１つまたは複数の設定ビットストリーム、および／またはドメイン中での実行のための他の実行可能プログラムコードをも含み得る。議論されるように、実行可能プログラムコード（たとえば、ドメインのためのオペレーティングシステムおよび／またはアプリケーション）は、本明細書で説明される本発明の構成を使用して、および／または本明細書で説明される本発明の構成を使用して生成されるソフトウェアアーティファクトを使用して、作成され得る。
【０１０１】
ブートイメージは、ターゲットＳｏＣにロードされ、ターゲットＳｏＣを設定するために使用され得る。ブートイメージをロードしたことに応答して、第１ステージブートローダは、説明されるように稼働され得る。さらに、プログラマブル回路は、ブートイメージから設定ビットストリームをロードすることによって設定され得る。ブートイメージ中に含まれ得る実行可能プログラムコード（たとえば、オペレーティングシステムおよび／またはアプリケーション）は、それぞれのドメインのための適切なメモリ領域またはパーティションにロードされ、実行され得る。
【０１０２】
図８は、ＩＣのための例示的なアーキテクチャ８００を示す。一態様では、アーキテクチャ８００は、プログラマブルＩＣ内に実装され得る。たとえば、アーキテクチャ８００は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を実装するために使用され得る。アーキテクチャ８００はまた、ＩＣのＳｏＣタイプ（たとえば、異種ＳｏＣ）を表し得る。
【０１０３】
図示のように、アーキテクチャ８００は、いくつかの異なるタイプのプログラマブル回路、たとえば、論理、ブロックを含む。たとえば、アーキテクチャ８００は、マルチギガビットトランシーバ（ＭＧＴ：ｍｕｌｔｉ−ｇｉｇａｂｉｔ  ｔｒａｎｓｃｅｉｖｅｒ）８０１、設定可能論理ブロック（ＣＬＢ）８０２、ランダムアクセスメモリブロック（ＢＲＡＭ）８０３、入出力ブロック（ＩＯＢ）８０４、設定およびクロッキング論理（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）８０５、デジタル信号処理ブロック（ＤＳＰ）８０６、特殊なＩ／Ｏブロック８０７（たとえば、設定ポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログデジタル変換器、システム監視論理などの他のプログラマブル論理８０８を含む、多数の異なるプログラマブルタイルを含み得る。
【０１０４】
いくつかのＩＣでは、各プログラマブルタイルは、プログラマブル相互接続要素（ＩＮＴ）８１１を含み、ＩＮＴ８１１は、各隣接するタイル中の対応するＩＮＴ８１１との間の規格化された接続を有する。したがって、ＩＮＴ８１１は、まとめると、示されているＩＣのためのプログラマブル相互接続構造を実装する。各ＩＮＴ８１１は、図８の上部に含まれる例によって示されているように、同じタイル内のプログラマブル論理要素との間の接続をも含む。
【０１０５】
たとえば、ＣＬＢ８０２は、ユーザ論理を実装するようにプログラムされ得る設定可能論理要素（ＣＬＥ）８１２と、単一のＩＮＴ８１１とを含み得る。ＢＲＡＭ８０３は、１つまたは複数のＩＮＴ８１１に加えてＢＲＡＭ論理要素（ＢＲＬ）８１３を含み得る。一般に、タイル中に含まれるＩＮＴ８１１の数は、タイルの高さに依存する。描かれているように、ＢＲＡＭタイルは、５つのＣＬＢと同じ高さを有するが、他の数（たとえば、４つ）も使用され得る。ＤＳＰタイル８０６は、適切な数のＩＮＴ８１１に加えてＤＳＰ論理要素（ＤＳＰＬ）８１４を含み得る。ＩＯＢ８０４は、たとえば、ＩＮＴ８１１の１つのインスタンスに加えてＩ／Ｏ論理要素（ＩＯＬ）８１５の２つのインスタンスを含み得る。ＩＯＬ８１５に接続された実際のＩ／Ｏパッドは、ＩＯＬ８１５のエリアに制限されないことがある。
【０１０６】
図８に描かれている例では、ダイの中心の近くの、たとえば、領域８０５、８０７、および８０８から形成された、列状エリアが、設定、クロック、および他の制御論理のために使用され得る。この列から延びる水平エリア８０９が、プログラマブルＩＣの幅にわたってクロックおよび設定信号を分散させるために使用され得る。
【０１０７】
図８に示されているアーキテクチャを利用するいくつかのＩＣは、ＩＣの大部分を作り上げる規則的な列状構造を損なう追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび／または専用回路であり得る。たとえば、ＰＲＯＣ８１０およびＰＲＯＣ８１６として示されている２つまたはそれ以上のプロセッサブロックが、ＣＬＢおよびＢＲＡＭのいくつかの列にまたがる。
【０１０８】
一態様では、ＰＲＯＣ８１０および／またはＰＲＯＣ８１６は、ＩＣのプログラマブル回路を実装するダイの一部として作製される専用回路として、たとえば、ハードワイヤードプロセッサとして実装され得る。ＰＲＯＣ８１０および／またはＰＲＯＣ８１６は、個々のプロセッサ、たとえば、プログラムコードを実行することが可能な単一のコアから、１つまたは複数のコア、モジュール、コプロセッサ、インターフェースなどを有するプロセッサシステム全体まで、複雑さに幅がある様々な異なるプロセッサタイプおよび／またはシステムのいずれかを表し得る。
【０１０９】
別の態様では、ＰＲＯＣ８１０および／またはＰＲＯＣ８１６は、アーキテクチャ８００から省略され、説明されるプログラマブルブロックの他の種類のうちの１つまたは複数と置き換えられ得る。さらに、そのようなブロックは、ＰＲＯＣ８１０および／またはＰＲＯＣ８１６の場合のようにプログラムコードを実行することができるプロセッサを形成するためにプログラマブル回路の様々なブロックが使用され得るという点で、「（１つまたは複数の）ソフトプロセッサ」を形成するために利用され得る。
【０１１０】
「プログラマブル回路」という句は、ＩＣ内のプログラマブル回路要素、たとえば、本明細書で説明される様々なプログラマブルまたは設定可能回路ブロックまたはタイル、ならびに、ＩＣにロードされた設定データに従って様々な回路ブロック、タイル、および／または要素を選択的に連結する相互接続回路を指す。たとえば、ＣＬＢ８０２およびＢＲＡＭ８０３など、ＰＲＯＣ８１０の外部にある、図８に示されている回路ブロックは、ＩＣのプログラマブル回路と見なされる。
【０１１１】
本明細書で議論されるように、ＰＲＯＣ８１０は、第１のオペレーティングシステムを実行することが可能であり、ＰＲＯＣ８１６は、第２のおよび異なるオペレーティングシステムを実行することが可能である。さらに、ＰＲＯＣ８１０およびＰＲＯＣ８１６の各々にとって利用可能なデバイスは、異なり、ブート時間においてアーキテクチャ８００内で実行される第１ステージブートローダによって作成されるドメインによって定義され得る。
【０１１２】
概して、プログラマブル回路の機能性は、設定データがＩＣにロードされるまで確立されない。ＦＰＧＡなど、ＩＣのプログラマブル回路をプログラムするために、設定ビットのセットが使用され得る。（１つまたは複数の）設定ビットは、一般に、「設定ビットストリーム」と呼ばれる。概して、プログラマブル回路は、設定ビットストリームをＩＣに最初にロードしなければ、動作可能でないか、または機能可能でない。設定ビットストリームは、プログラマブル回路内に特定の回路設計を効果的に実装する。回路設計は、たとえば、プログラマブル回路ブロックの機能的態様と、様々なプログラマブル回路ブロックの間の物理的接続性とを指定する。
【０１１３】
「ハードワイヤード」または「ハード化」される、すなわち、プログラマブルでない回路が、ＩＣの一部として製造される。プログラマブル回路とは異なり、ハードワイヤード回路または回路ブロックは、設定ビットストリームのローディングを通してＩＣの製造後に実装されない。ハードワイヤード回路は、概して、たとえば、設定ビットストリームを、ＩＣ、たとえば、ＰＲＯＣ８１０および／またはＰＲＯＣ８１６に最初にロードすることなしに機能可能である、専用回路ブロックおよび相互接続を有すると見なされる。
【０１１４】
いくつかの事例では、ハードワイヤード回路は、ＩＣ内の１つまたは複数のメモリ要素に記憶されたレジスタセッティングまたは値に従ってセットまたは選択され得る１つまたは複数の動作モードを有し得る。動作モードは、たとえば、ＩＣへの設定データのローディングを通してセットされ得る。この能力にもかかわらず、ハードワイヤード回路が、ＩＣの一部として製造されたとき、動作可能であり、特定の機能を有するので、ハードワイヤード回路はプログラマブル回路と見なされない。
【０１１５】
図８は、プログラマブル回路、たとえば、プログラマブルファブリックを含むＩＣを実装するために使用され得る例示的なアーキテクチャを示すことを意図される。たとえば、１つの列中の論理ブロックの数、列の相対幅、列の数および順序、列中に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および図８の上部に含まれる相互接続／論理実装形態は、例示にすぎない。実際のＩＣでは、たとえば、ＣＬＢの２つ以上の隣接する列は、一般に、ユーザ回路設計の効率的な実装を容易にするために、ＣＬＢが現れるところならどこでも含まれる。しかしながら、隣接するＣＬＢ列の数は、ＩＣの全体的サイズとともに変動し得る。さらに、ＩＣ内のＰＲＯＣ８１０などのブロックのサイズおよび／または配置は、例示のためのものにすぎず、限定として意図されていない。
【０１１６】
説明のために、特定の名称が、本明細書で開示される様々な発明概念の完全な理解を提供するために記載される。しかしながら、本明細書で使用される専門用語は、本発明の構成の特定の態様を説明するためのものにすぎず、限定するものではない。
【０１１７】
本明細書で定義される単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈が別段に明確に示さない限り、複数形をも含むものとする。
【０１１８】
本明細書で定義される「少なくとも１つ」、「１つまたは複数」、および「および／または」という用語は、別段に明記されていない限り、運用において連言的と選言的の両方である、オープンエンド表現である。たとえば、「Ａ、Ｂ、およびＣのうちの少なくとも１つ」、「Ａ、Ｂ、またはＣのうちの少なくとも１つ」、「Ａ、Ｂ、およびＣのうちの１つまたは複数」、「Ａ、Ｂ、またはＣのうちの１つまたは複数」、および「Ａ、Ｂ、および／またはＣ」という表現の各々は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢを一緒に、ＡとＣを一緒に、ＢとＣを一緒に、またはＡとＢとＣを一緒に、を意味する。
【０１１９】
本明細書で定義される「自動的に」という用語は、ユーザ介入なしに、を意味する。本明細書で定義される「ユーザ」という用語は、人間を意味する。
【０１２０】
本明細書で定義される「コンピュータ可読記憶媒体」という用語は、命令実行システム、装置、またはデバイスが使用するための、あるいはそれとともに使用するためのプログラムコードを含んでいるかまたは記憶する記憶媒体を意味する。本明細書で定義される「コンピュータ可読記憶媒体」は、それ自体は、一時的な伝搬信号でない。コンピュータ可読記憶媒体は、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せであり得る。本明細書で説明される、様々な形態のメモリが、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ＲＡＭ、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、電子的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスクなどを含み得る。
【０１２１】
本明細書で定義される「する場合（ｉｆ）」という用語は、文脈に応じて、「するとき（ｗｈｅｎ）」または「すると（ｕｐｏｎ）」または「に応答して（ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ）」または「に反応して（ｒｅｓｐｏｎｓｉｖｅ  ｔｏ）」を意味する。したがって、「それが決定された場合」または「［述べられた条件またはイベント］が検出された場合」という句は、文脈に応じて、「決定すると」または「決定したことに応答して」あるいは「［述べられた条件またはイベント］を検出すると」または「［述べられた条件またはイベント］を検出したことに応答して」または「［述べられた条件またはイベント］を検出したことに反応して」を意味すると解釈され得る。
【０１２２】
本明細書で定義される「に反応して」という用語および上記で説明されたような同様の言い回し、たとえば、「する場合」、「するとき」、または「すると」は、アクションまたはイベントに容易に応答または反応することを意味する。応答または反応は、自動的に実施される。したがって、第２のアクションが第１のアクション「に反応して」実施される場合、第１のアクションの発生と第２のアクションの発生との間に因果関係がある。「に反応して」という用語は、因果関係を示す。
【０１２３】
本明細書で定義される「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「１つまたは複数の実施形態」、「特定の実施形態」という用語、または同様の言い回しは、実施形態に関して説明される特定の特徴、構造、または特性が、本開示内で説明される少なくとも１つの実施形態に含まれることを意味する。したがって、本開示全体にわたる、「一実施形態では（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「一実施形態では（ｉｎ  ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「１つまたは複数の実施形態では」、「特定の実施形態では」という句、および同様の言い回しの出現は、必ずしもそうとは限らないが、すべて、同じ実施形態を指し得る。「実施形態」および「構成」という用語は、本開示内では互換的に使用される。
【０１２４】
本明細書で定義される「プロセッサ」という用語は、少なくとも１つのハードウェア回路を意味する。ハードウェア回路は、プログラムコード中に含まれている命令を行うように設定され得る。ハードウェア回路は集積回路であり得る。プロセッサの例は、限定はしないが、中央処理ユニット（ＣＰＵ）、アレイプロセッサ、ベクトルプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、プログラマブル論理アレイ（ＰＬＡ）、ＡＳＩＣ、およびコントローラを含む。
【０１２５】
本明細書で定義される「出力」という用語は、物理メモリ要素、たとえば、デバイスに記憶すること、ディスプレイまたは他の周辺出力デバイスに書き込むこと、別のシステムに送ることまたは送信すること、エクスポートすることなどを意味する。
【０１２６】
本明細書で定義される「リアルタイム」という用語は、ユーザまたはシステムが、特定のプロセスまたは決定が行われるのに十分に即時であると感じる、あるいは、プロセッサが、何らかの外部プロセスについていくことを可能にする、処理応答性のレベルを意味する。
【０１２７】
本明細書で定義される「実質的に」という用語は、具陳された特性、パラメータ、または値が正確に達成される必要がないこと、ただし、たとえば、当業者に知られている許容差、測定誤差、測定精度限界、および他のファクタを含む、偏差または変動が、特性が提供することを意図された効果を妨げない量で生じ得ることを意味する。
【０１２８】
第１の、第２のなどの用語は、様々な要素を説明するために本明細書で使用され得る。これらの用語は、別段に述べられていない限り、または文脈が別段に明確に示さない限り、ある要素を別の要素と区別するために使用されるにすぎないので、これらの要素はこれらの用語によって限定されるべきでない。
【０１２９】
コンピュータプログラム製品は、プロセッサに本明細書で説明される本発明の構成の態様を行わせるためのコンピュータ可読プログラム命令をその上に有する（１つまたは複数の）コンピュータ可読記憶媒体を含み得る。本開示内では、「プログラムコード」という用語は、「コンピュータ可読プログラム命令」という用語と互換的に使用される。本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、たとえば、インターネット、ＬＡＮ、ＷＡＮおよび／またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバー、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むエッジデバイスを含み得る。各コンピューティング／処理デバイス中のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するためにフォワーディングする。
【０１３０】
本明細書で説明される本発明の構成のための動作を行うためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、あるいは、オブジェクト指向プログラミング言語および／または手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書き込まれたソースコードまたはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、状態セッティングデータを含み得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上でおよび部分的にリモートコンピュータ上で、あるいは完全にリモートコンピュータまたはサーバ上で実行し得る。後者のシナリオでは、リモートコンピュータは、ＬＡＮまたはＷＡＮを含む任意のタイプのネットワークを通してユーザのコンピュータに接続され得るか、あるいは接続は、（たとえば、インターネットサービスプロバイダを使用してインターネットを通して）外部コンピュータに対して行われ得る。いくつかの場合には、たとえば、プログラマブル論理回路、ＦＰＧＡ、またはＰＬＡを含む電子回路が、本明細書で説明される本発明の構成の態様を実施するために、電子回路を個人化するためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し得る。
【０１３１】
本発明の構成のいくつかの態様が、方法、装置（システム）、およびコンピュータプログラム製品のフローチャート例示図および／またはブロック図を参照しながら本明細書で説明された。フローチャート例示図および／またはブロック図の各ブロック、ならびにフローチャートの例示図および／またはブロック図中のブロックの組合せが、コンピュータ可読プログラム命令、たとえば、プログラムコードによって実装され得ることを理解されよう。
【０１３２】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を作り出すための他のプログラマブルデータ処理装置のプロセッサに提供され得、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて指定された機能／行為を実装するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、および／または他のデバイスに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得、その結果、命令が記憶されたコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて指定された動作の態様を実装する命令を含む製造品を備える。
【０１３３】
コンピュータ可読プログラム命令はまた、コンピュータ実装プロセスを作り出すために、一連の動作をコンピュータ、他のプログラマブルデータ処理装置または他のデバイス上で実施させるように、コンピュータ、他のプログラマブル装置、または他のデバイスにロードされ得、その結果、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて指定された機能／行為を実装する。
【０１３４】
図中のフローチャートおよびブロック図は、本発明の構成の様々な態様によるシステム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。この点について、フローチャートまたはブロック図中の各ブロックは、指定された動作を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表し得る。
【０１３５】
いくつかの代替実装形態では、ブロック中で言及される動作は、図中で言及される順序から外れて行われ得る。たとえば、関与する機能性に応じて、連続して示されている２つのブロックが、実質的に同時に実行され得るか、またはブロックが、時々、逆の順序で実行され得る。他の例では、ブロックは、概して小さい数字から順に実施され得、さらに他の例では、１つまたは複数のブロックは、変動順で実施され得、結果は、記憶され、後続の、または直後にこない他のブロックにおいて利用される。また、ブロック図および／またはフローチャート例示図の各ブロック、ならびにブロック図および／またはフローチャート例示図中のブロックの組合せが、指定された機能または行為を実施するかあるいは専用ハードウェアとコンピュータ命令との組合せを行う専用ハードウェアベースシステムによって実装され得ることに留意されたい。
【０１３６】
以下の特許請求の範囲において見られ得るすべての手段またはステップおよび機能要素の対応する構造、材料、行為、および等価物は、特に主張されるように、他の請求される要素と組み合わせて機能を実施するための任意の構造、材料、または行為を含むことを意図される。
【０１３７】
１つまたは複数の実施形態では、方法が、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、コンピュータハードウェアを使用して、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。本方法は、コンピュータハードウェアを使用して、オペレーティングシステムを各ドメインに割り当てることと、コンピュータハードウェアを使用して、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【０１３８】
一態様では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含む。
【０１３９】
別の態様では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む。
【０１４０】
別の態様では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み、デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成される。
【０１４１】
別の態様では、各ドメインは異種ＳｏＣ内で論理的に実施される。
【０１４２】
別の態様では、本方法は、ハードウェア記述ファイルを使用して異種ＳｏＣのための複数のドメインのうちの少なくとも１つのドメインを修正することを含み得る。
【０１４３】
別の態様では、プラットフォームは、ソフトウェア開発環境による使用のための複数のドメインのための複数のアーティファクトを含む。したがって、本方法は、複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、選択されたドメインに対応する、複数のアーティファクトから選択されたアーティファクトを使用して生成することを含み得る。
【０１４４】
別の態様では、各ドメインは、利用可能なランダムアクセスメモリの一部分を割り当てられる。
【０１４５】
１つまたは複数の実施形態では、システムが、プログラムコードを記憶するように設定されたメモリと、メモリに連結されたプロセッサとを含む。プロセッサは、プログラムコードを実行したことに応答して、動作を始動するように設定される。実行可能な動作は、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。動作は、オペレーティングシステムを各ドメインに割り当てることと、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【０１４６】
一態様では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含む。
【０１４７】
別の態様では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む。
【０１４８】
別の態様では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み、デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成される。
【０１４９】
別の態様では、各ドメインは異種ＳｏＣ内で論理的に実施される。
【０１５０】
別の態様では、プロセッサは、ハードウェア記述ファイルを使用して異種ＳｏＣのための複数のドメインのうちの少なくとも１つのドメインを修正することを含み得る実行可能な動作を始動するように設定される。
【０１５１】
別の態様では、プラットフォームは、ソフトウェア開発環境による使用のための複数のドメインのための複数のアーティファクトを含む。したがって、プロセッサは、複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、選択されたドメインに対応する、複数のアーティファクトから選択されたアーティファクトを使用して生成することを含み得る実行可能な動作を始動するように設定される。
【０１５２】
別の態様では、各ドメインは、利用可能なランダムアクセスメモリの一部分を割り当てられる。
【０１５３】
１つまたは複数の実施形態では、コンピュータプログラム製品が、プログラムコードがその上に記憶されたコンピュータ可読記憶媒体を含む。プログラムコードは、動作を始動するためにコンピュータハードウェアによって実行可能である。動作は、異種ＳｏＣ内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、複数のプロセッサから選択されたプロセッサと、複数のハードウェアリソースから選択されたハードウェアリソースとを含む、異種ＳｏＣのための複数のドメインを作成することとを含み得る。動作は、オペレーティングシステムを各ドメインに割り当てることと、異種ＳｏＣ内に複数のドメインを実装するように設定されたプラットフォームを生成することとを含み得る。
【０１５４】
一態様では、プラットフォームは、異種ＳｏＣの分離回路を設定するための設定データを含む。
【０１５５】
別の態様では、プラットフォームは、異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む。
【０１５６】
別の態様では、プラットフォームは、複数のドメインのうちの選択されたドメインについて、選択されたドメインに割り当てられたオペレーティングシステムのためのデバイスツリーを含み、デバイスツリーは、複数のハードウェアリソースから選択されたハードウェアリソースに基づいて生成される。
【０１５７】
別の態様では、各ドメインは異種ＳｏＣ内で論理的に実施される。
【０１５８】
別の態様では、プログラムコードは、ハードウェア記述ファイルを使用して異種ＳｏＣのための複数のドメインのうちの少なくとも１つのドメインを修正することを含み得る動作を始動するために、コンピュータハードウェアによって実行可能である。
【０１５９】
別の態様では、プラットフォームは、ソフトウェア開発環境による使用のための複数のドメインのための複数のアーティファクトを含む。したがって、プログラムコードは、複数のドメインのうちの選択されたドメインのための実行可能プログラムコードを、選択されたドメインに対応する、複数のアーティファクトから選択されたアーティファクトを使用して生成することを含み得る動作を始動するために、コンピュータハードウェアによって実行可能である。
【０１６０】
別の態様では、各ドメインは、利用可能なランダムアクセスメモリの一部分を割り当てられる。
【０１６１】
本明細書で提供される本発明の構成の説明は、例示のためであり、網羅的なものでも、開示される形式および例に限定されるものでもない。本明細書で使用される専門用語は、本発明の構成の原理、実際的適用例、または市場で見られる技術に対する技術的改善を説明するために、および／あるいは、他の当業者が本明細書で開示される本発明の構成を理解することを可能にするために選定された。説明される本発明の構成の範囲および趣旨から逸脱することなく、修正および変形が当業者に明らかになり得る。したがって、そのような特徴および実装形態の範囲を示すものとして、上記の開示に対してではなく、以下の特許請求の範囲に対して参照が行われるべきである。
【図１】
2021521533.tif 000003
【図２】
2021521533.tif 000004
【図３】
2021521533.tif 000005
【図４】
2021521533.tif 000006
【図５】
2021521533.tif 000007
【図６】
2021521533.tif 000008
【図７】
2021521533.tif 000009
【図８】
2021521533.tif 000010
【手続補正書】
【提出日】令和1年8月30日(2019.8.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
異種システムオンチップ（ＳｏＣ）内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、
コンピュータハードウェアを使用して、前記異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、前記複数のプロセッサから選択されたプロセッサと、前記複数のハードウェアリソースから選択されたハードウェアリソースとを含む、前記異種ＳｏＣのための複数のドメインを作成することと、
前記コンピュータハードウェアを使用して、オペレーティングシステムを各ドメインに割り当てることと、
前記コンピュータハードウェアを使用して、前記異種ＳｏＣ内に前記複数のドメインを実装し、前記複数のドメイン間の論理的区分を実装するように設定されたプラットフォームを生成することと
を含む、方法。
【請求項２】
前記プラットフォームが、前記異種ＳｏＣの分離回路を設定するための設定データを含み、前記分離回路は、前記複数のドメインのうちの第１のドメインの前記プロセッサが前記複数のドメインのうちの第２のドメインの前記ハードウェアリソースにアクセスするのを防ぐことによって、少なくとも部分的に、前記論理的区分を実装する、請求項１に記載の方法。
【請求項３】
前記プラットフォームが、前記異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む、請求項１または２に記載の方法。
【請求項４】
前記プラットフォームが、前記複数のドメインのうちの選択されたドメインについて、前記選択されたドメインに割り当てられた前記オペレーティングシステムのためのデバイスツリーを含み、前記デバイスツリーが、前記選択されたドメインについて前記複数のハードウェアリソースから選択された前記ハードウェアリソースを指定するために生成される、請求項１から３のいずれか一項に記載の方法。
【請求項５】
各ドメインが前記異種ＳｏＣ内で論理的に実施される、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記異種ＳｏＣのための前記複数のドメインのうちの少なくとも１つのドメインを、前記複数のハードウェアリソースのうちの選択されたハードウェアリソースを前記少なくとも１つのドメインに再割り当てすること、前記少なくとも１つのドメインのメモリパーティショニングを調整すること、または前記少なくとも１つのドメインのためのオペレーティングシステムを変更すること、によって修正すること
をさらに含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記プラットフォームが、ソフトウェア開発環境による使用のための前記複数のドメインのための複数のファイルを含み、前記複数のファイルがリンカスクリプトを含み、前記方法は、
リンカの動作を制御するために前記リンカスクリプトを実行することによって、前記複数のドメインのうちの選択されたドメインのプロセッサのための実行可能プログラムコードを生成すること
をさらに含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
各ドメインが、利用可能なランダムアクセスメモリの一部分を割り当てられる、請求項１から７のいずれか一項に記載の方法。
【請求項９】
プログラムコードを記憶するように設定されたメモリと、
前記メモリに連結されたプロセッサと
を備えるシステムであって、前記プロセッサが、前記プログラムコードを実行したことに応答して、
異種システムオンチップ（ＳｏＣ）内で利用可能な複数のプロセッサおよび複数のハードウェアリソースを指定するハードウェア記述ファイルを受信することと、
前記異種ＳｏＣのための複数のドメインを作成することであって、各ドメインが、前記複数のプロセッサから選択されたプロセッサと、前記複数のハードウェアリソースから選択されたハードウェアリソースとを含む、前記異種ＳｏＣのための複数のドメインを作成することと、
オペレーティングシステムを各ドメインに割り当てることと、
前記異種ＳｏＣ内に前記複数のドメインを実装し、前記複数のドメイン間の論理的区分を実装するように設定されたプラットフォームを生成することと
を含む動作を始動するように設定された、システム。
【請求項１０】
前記プラットフォームが、前記異種ＳｏＣの分離回路を設定するための設定データを含み、
前記分離回路は、前記複数のドメインのうちの第１のドメインの前記プロセッサが前記複数のドメインのうちの第２のドメインの前記ハードウェアリソースにアクセスするのを防ぐことによって、少なくとも部分的に、前記論理的区分を実装する、
請求項９に記載のシステム。
【請求項１１】
前記プラットフォームが、前記異種ＳｏＣのプロセッサシステムを初期化するように設定された第１ステージブートローダを含む、請求項９または１０に記載のシステム。
【請求項１２】
前記プラットフォームが、前記複数のドメインのうちの選択されたドメインについて、前記選択されたドメインに割り当てられた前記オペレーティングシステムのためのデバイスツリーを含み、前記デバイスツリーが、前記選択されたドメインについて前記複数のハードウェアリソースから選択された前記ハードウェアリソースを指定するために生成される、請求項９から１１のいずれか一項に記載のシステム。
【請求項１３】
各ドメインが前記異種ＳｏＣ内で論理的に実施され、各ドメインが、利用可能なランダムアクセスメモリの一部分を割り当てられる、請求項９から１２のいずれか一項に記載のシステム。
【請求項１４】
前記プロセッサが、
前記異種ＳｏＣのための前記複数のドメインのうちの少なくとも１つのドメインを、前記複数のハードウェアリソースのうちの選択されたハードウェアリソースを前記少なくとも１つのドメインに再割り当てすること、前記少なくとも１つのドメインのメモリパーティショニングを調整すること、または前記少なくとも１つのドメインのためのオペレーティングシステムを変更すること、によって修正すること
をさらに含む動作を始動するように設定された、請求項９から１３のいずれか一項に記載のシステム。
【請求項１５】
前記プラットフォームが、ソフトウェア開発環境による使用のための前記複数のドメインのための複数のファイルを含み、前記複数のファイルがリンカスクリプトを含み、前記プロセッサが、
リンカの動作を制御するために前記リンカスクリプトを実行することによって、前記複数のドメインのうちの選択されたドメインのプロセッサのための実行可能プログラムコードを生成すること
をさらに含む動作を始動するように設定された、請求項９から１４のいずれか一項に記載のシステム。
【国際調査報告】
2021521533.tif 000011
2021521533.tif 000012