(57)【要約】  例示的なプログラマブル集積回路（ＩＣ）が、プロセッサ（５）と、マスタ回路（４０４）と、システムメモリ管理ユニット（ＳＭＭＵ）（８０）とを有する処理システム（２）を含む。ＳＭＭＵは、マスタ回路に結合された第１の変換バッファユニット（ＴＢＵ）（４１０）と、アドレス変換（ＡＴ）回路（４１２）と、ＡＴ回路に結合されたＡＴインターフェース（４１４）と、ＡＴ回路に結合された第２のＴＢＵ（４１１）とを含み、プログラマブル論理部（３）が、ＡＴインターフェースを通してＳＭＭＵ中のＡＴ回路に結合される。【選択図】図４
2021529373.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、マスタ回路と、システムメモリ管理ユニット（ＳＭＭＵ）とを有する処理システムであって、前記ＳＭＭＵが、
前記マスタ回路に結合された第１の変換バッファユニット（ＴＢＵ）と、
アドレス変換（ＡＴ）回路と、
前記ＡＴ回路に結合されたＡＴインターフェースと、
前記ＡＴ回路に結合された第２のＴＢＵと
を含む、処理システムと、
前記ＡＴインターフェースを通して前記ＳＭＭＵ中の前記ＡＴ回路に結合されたプログラマブル論理部と
を備える、プログラマブル集積回路（ＩＣ）。
【請求項２】
前記ＡＴ回路および前記第２のＴＢＵが、前記プログラマブル論理部のクロックドメインにおいて動作し、前記第１のＴＢＵが、前記処理システムのクロックドメインにおいて動作する、請求項１に記載のプログラマブルＩＣ。
【請求項３】
前記ＳＭＭＵが、変換制御ユニット（ＴＣＵ）と、前記第２のＴＢＵと前記ＴＣＵとの間に結合されたクロックドメインクロッシングブリッジとをさらに含む、請求項２に記載のプログラマブルＩＣ。
【請求項４】
前記ＡＴ回路が、
前記ＡＴインターフェースに結合された仮想アドレス（ＶＡ）要求インターフェースと、
前記ＶＡ要求インターフェースと前記第２のＴＢＵとの間に結合されたＡＴマスタ回路と、
前記ＡＴインターフェースに結合された物理アドレス（ＰＡ）応答インターフェースと、
前記ＰＡ応答インターフェースと前記第２のＴＢＵとの間に結合されたＡＴスレーブ回路と
を備える、請求項１に記載のプログラマブルＩＣ。
【請求項５】
前記ＡＴインターフェースが、前記ＶＡ要求インターフェースに結合されたＡＴ要求サブチャネルと、前記ＰＡ応答インターフェースに結合されたＡＴ応答サブチャネルとを含む、請求項４に記載のプログラマブルＩＣ。
【請求項６】
前記ＡＴインターフェースが、前記ＰＡ応答インターフェースに結合されたＡＴ完了サブチャネルをさらに含む、請求項５に記載のプログラマブルＩＣ。
【請求項７】
プログラマブル集積回路（ＩＣ）におけるアドレス変換の方法であって、
前記プログラマブルＩＣの処理システム（ＰＳ）中のシステムメモリ管理ユニット（ＳＭＭＵ）において、前記プログラマブルＩＣのプログラマブル論理部（ＰＬ）中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、
前記ＳＭＭＵにおいて前記仮想アドレスを変換することと、
前記ＳＭＭＵから前記ＰＬ中の前記マスタ回路に、変換されたアドレスを送ることと
を含む、方法。
【請求項８】
前記受信するステップが、
前記ＳＭＭＵ中のアドレス変換（ＡＴ）回路において、前記仮想アドレスを使用してトランザクションを作成することと、
前記ＳＭＭＵ中の変換バッファユニット（ＴＢＵ）に前記トランザクションを送ることと
を含む、請求項７に記載の方法。
【請求項９】
前記送るステップが、
前記変換されたアドレスを有する、前記ＴＢＵからの発信トランザクションをキャプチャすることと、
前記発信トランザクションから、前記変換されたアドレスを抽出することと、
前記ＡＴ回路から前記ＰＬ中の前記マスタ回路に、前記変換されたアドレスを返すことと
を含む、請求項８に記載の方法。
【請求項１０】
前記ＰＬ中の前記マスタ回路において、前記変換されたアドレスを使用することと、
前記ＰＬ中の前記マスタ回路から前記ＳＭＭＵに完了メッセージを提供することと
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記ＡＴ回路から、前記ＴＢＵに前記発信トランザクションへの応答を提供すること
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記マスタ回路から、他の仮想アドレスを変換するようにとの他の要求を前記ＳＭＭＵにおいて受信することと、
前記他の要求に応答して前記ＳＭＭＵにおいてエラーを決定することと、
前記ＳＭＭＵから前記マスタ回路にエラー指示を送ることと
をさらに含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般に、電子回路に関し、詳細には、システムオンチップ（ＳｏＣ）におけるプログラマブル論理（ＰＬ）マスタのためのハードウェアベースの仮想−物理アドレス変換（ｖｉｒｔｕａｌ−ｔｏ−ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）に関する。
【背景技術】
【０００２】
集積回路技術における進歩は、プロセッサコアとメモリコントローラとバスとを含むなどのシステム全体を単一の半導体チップに埋め込むことを可能にした。このタイプのチップは、一般にシステムオンチップ（ＳｏＣ）と呼ばれる。他のＳｏＣは、異なる適用例のために、異なる構成要素をその中に埋め込むことができる。ＳｏＣは、旧来のプロセッサベース設計に勝る多くの利点を提供する。ＳｏＣは、単一のデバイスへの構成要素の集積がサイズを減少させながら全体的速度を増加させるので、マルチチップ設計の魅力的な代替である。ＳｏＣは、特定用途向け集積回路（ＡＳＩＣ）設計が、著しくより長い開発時間とより大きい開発コストとを有する傾向があるので、ＡＳＩＣなどの完全にカスタマイズされたチップの魅力的な代替でもある。処理システム（ＰＳ）とプログラマブル論理部（ＰＬ）とを含む、構成可能ＳｏＣ（ＣＳｏＣ）は、プログラマブル論理部とＳｏＣの両方の利益を得ることができるプログラマブル半導体チップを実装するために開発された。
【０００３】
ＳｏＣのＰＳ中のアプリケーションプロセッサが、仮想−物理アドレス変換を提供する内蔵メモリ管理ユニット（ＭＭＵ）を含む。さらに、ＰＳは、内蔵ＭＭＵをもたない他のＰＳマスタによる使用のためのシステムＭＭＵ（ＳＭＭＵ）を含むことができる。さらに、ＰＬマスタはまた、仮想化のためにＰＳ  ＳＭＭＵを使用することができるが、ＰＳを通してＰＬマスタのトラフィックをルーティングすることによってのみこれを使用することができ、これは、いくつかの適用例では望ましくないことがある。たとえば、ＰＬマスタの１つのクラスは、内部キャッシュをもつ回路である。そのようなＰＬマスタは、キャッシュアクセスより前にアドレス変換を必要とし、したがって、ＰＳ  ＳＭＭＵを使用する目的でＰＳを通してＰＬマスタのトラフィックをルーティングすることができない。
【発明の概要】
【０００４】
システムオンチップ（ＳｏＣ）におけるプログラマブル論理（ＰＬ）マスタのためのハードウェアベースの仮想−物理アドレス変換のための技法が説明される。一例では、プログラマブル集積回路（ＩＣ）は、プロセッサと、マスタ回路と、システムメモリ管理ユニット（ＳＭＭＵ）とを有する処理システムであって、ＳＭＭＵが、マスタ回路に結合された第１の変換バッファユニット（ＴＢＵ）と、アドレス変換（ＡＴ）回路と、ＡＴ回路に結合されたＡＴインターフェースと、ＡＴ回路に結合された第２のＴＢＵとを含む、処理システムと、ＡＴインターフェースを通してＳＭＭＵ中のＡＴ回路に結合されたプログラマブル論理部とを含む。
【０００５】
別の例では、プログラマブル集積回路（ＩＣ）中の回路は、プログラマブル論理（ＰＬ）マスタ回路を有するプログラマブル論理部（ＰＬ）と、システムメモリ管理ユニット（ＳＭＭＵ）を有する処理システム（ＰＳ）であって、ＳＭＭＵが、アドレス変換（ＡＴ）回路と、ＰＬマスタ回路とＡＴ回路との間に結合されたＡＴインターフェースと、ＡＴ回路に結合された変換バッファユニット（ＴＢＵ）とを含む、処理システム（ＰＳ）とを含む。
【０００６】
別の例では、プログラマブル集積回路（ＩＣ）におけるアドレス変換の方法が、プログラマブルＩＣの処理システム（ＰＳ）中のシステムメモリ管理ユニット（ＳＭＭＵ）において、プログラマブルＩＣのプログラマブル論理部（ＰＬ）中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、ＳＭＭＵにおいて仮想アドレスを変換することと、ＳＭＭＵからＰＬ中のマスタ回路に、変換されたアドレスを送ることとを含む。
【０００７】
これらおよび他の態様は、以下の発明を実施するための形態を参照しながら理解され得る。
【０００８】
上記の具陳された特徴が詳細に理解され得るように、上記で手短に要約されたより詳細な説明は、添付の図面にその一部が示されている例示的な実装形態を参照することによってなされ得る。しかしながら、添付の図面は、典型的な例示的な実装形態を示すにすぎず、したがって、その範囲の限定と見なされるべきでないことに留意されたい。
【図面の簡単な説明】
【０００９】
【図１】一例による、プログラマブル集積回路を示すブロック図である。
【図２】一例による、図１のプログラマブルＩＣのシステムオンチップ（ＳｏＣ）実装形態を示すブロック図である。
【図３】一例による、図１のプログラマブルＩＣのプログラマブル論理部を示す図である。
【図４】一例による、プログラマブルＩＣ中のＰＳ−ＰＬシステムを示すブロック図である。
【図５】例による、ＳＭＭＵへのアドレス変換インターフェースを利用する例示的なシステムを示すブロック図である。
【図６】一例による、ＳＭＭＵを示すブロック図である。
【図７】一例による、ＳＭＭＵにおいてＰＬマスタからのＡＴ要求を処理する方法を示す流れ図である。
【図８】一例による、障害を処理する方法を示す流れ図である。
【発明を実施するための形態】
【００１０】
理解を容易にするために、可能な場合、図に共通である同じ要素を示すために同じ参照番号が使用されている。一例の要素が、他の例に有益に組み込まれ得ることが企図される。
【００１１】
図を参照しながら様々な特徴が以下で説明される。図は一定の縮尺で描かれることも描かれないこともあり、同様の構造または機能の要素が、図全体にわたって同様の参照番号によって表されることに留意されたい。図は、特徴の説明を容易にすることを意図されているにすぎないことに留意されたい。図は、請求される本発明の網羅的な説明として、または請求される本発明の範囲に対する限定として意図されていない。さらに、示されている例は、すべての態様または利点が示される必要があるとは限らない。特定の例に関して説明される一態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはそのように明示的に説明されていない場合でも、任意の他の例において実施され得る。
【００１２】
システムオンチップ（ＳｏＣ）におけるプログラマブル論理（ＰＬ）マスタのためのハードウェアベースの仮想−物理アドレス変換のための技法が説明される。本技法は、ＳｏＣの処理システム（ＰＳ）中のシステムメモリ管理ユニット（ＳＭＭＵ）を利用する。ハードウェアベースの低レイテンシ技法は、ＰＬマスタが内部キャッシュを実装することを可能にするアドレス変換サービスをＰＬマスタに提供し、また、トラフィックがＰＳ  ＳＭＭＵを介してルーティングされる必要がない仮想化されたＰＬマスタを設計するために使用され得る。例では、ＰＳ  ＳＭＭＵは、追加のポートを追加することによって拡張される。アドレス変換要求以外のトラフィックは、追加されたポートを介して流れない。ＰＳ  ＳＭＭＵは、純粋なアドレス変換サービスを提供する、追加のポートに結合されたアドレス変換器を含む。ＰＳ  ＳＭＭＵは、ＰＬマスタをアドレス変換機能にアタッチするためのアドレス変換インターフェースを含む。追加されたポート、アドレス変換機能、およびアドレス変換インターフェースは、ＰＬクロックドメイン（ｃｌｏｃｋ  ｄｏｍａｉｎ）において動作し、クロックドメインクロッシング（ｃｌｏｃｋ  ｄｏｍａｉｎ  ｃｒｏｓｓｉｎｇ）によるレイテンシをなくす。これらおよびさらなる態様は、図面に関して以下で説明される。
【００１３】
図１は、一例による、プログラマブルＩＣ１を示すブロック図である。プログラマブルＩＣ１は、処理システム２と、プログラマブル論理部３と、ネットワークオンチップ（ＮｏＣ）８２と、構成論理部２５と、構成メモリ２６とを含む。プログラマブルＩＣ１は、不揮発性メモリ２７、ＤＲＡＭ２８、および他の回路２９など、外部回路に結合され得る。プログラマブル論理部３は、論理セル３０と、サポート回路３１と、プログラマブル相互接続３２とを含む。論理セル３０は、複数の入力の一般的な論理関数を実装するように構成され得る回路を含む。サポート回路３１は、トランシーバ、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用の回路を含む。論理セルとサポート回路３１とは、プログラマブル相互接続３２を使用して相互接続され得る。論理セル３０をプログラムするための情報と、サポート回路３１のパラメータを設定するための情報と、プログラマブル相互接続３２をプログラムするための情報とが、構成論理部２５によって構成メモリ２６に記憶される。構成論理部２５は、不揮発性メモリ２７または任意の他のソース（たとえば、ＤＲＡＭ２８または他の回路２９）から構成データを取得することができる。処理システム２は、（１つまたは複数の）マイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含むことができる。本明細書で説明される例では、処理システム２は、システムメモリ管理ユニット（ＳＭＭＵ）８０を含む。ＳＭＭＵ８０は、内蔵ＭＭＵを有しないＰＳおよびＰＬマスタによる使用のための別個のメモリ管理ユニットである。ＮｏＣ８２は、プログラマブルＩＣ１中の構成されたおよび／またはハード化された回路間の物理および論理接続を提供するための回路を含む。
【００１４】
図２は、一例による、プログラマブルＩＣ１のシステムオンチップ（ＳｏＣ）実装形態を示すブロック図である。本例では、プログラマブルＩＣ１は、処理システム２とプログラマブル論理部３とを含む。処理システム２は、リアルタイム処理ユニット（ＲＰＵ）４、アプリケーション処理ユニット（ＡＰＵ）５、グラフィックス処理ユニット（ＧＰＵ）６、構成およびセキュリティユニット（ＣＳＵ）１２、プラットフォーム管理ユニット（ＰＭＵ）１２２など、様々な処理ユニットを含む。処理システム２は、オンチップメモリ（ＯＣＭ）１４、トランシーバ７、周辺機器８、相互接続１６、ＤＭＡ回路９、メモリコントローラ１０、周辺機器１５、および多重化ＩＯ（ＭＩＯ）回路１３など、様々なサポート回路をも含む。処理ユニットとサポート回路とは、相互接続１６によって相互接続される。ＰＬ３も、相互接続１６に結合される。トランシーバ７は、外部ピン２４に結合される。ＰＬ３は、外部ピン２３に結合される。メモリコントローラ１０は、外部ピン２２に結合される。ＭＩＯ１３は、外部ピン２０に結合される。ＰＳ２は、一般に、外部ピン２１に結合される。ＡＰＵ５は、ＣＰＵ１７と、メモリ１８と、サポート回路１９とを含むことができる。ＡＰＵ５は、Ｌ１およびＬ２キャッシュなどを含む、他の回路を含むことができる。ＲＰＵ４は、Ｌ１キャッシュなど、追加の回路を含むことができる。相互接続１６は、キャッシュコヒーレント相互接続（ＣＣＩ）８１を含むことができる。本例では、相互接続１６は、メモリ仮想化のための埋込みＳＭＭＵ８０を含む。
【００１５】
ＰＳ２を参照すると、処理ユニットの各々が、１つまたは複数の中央処理ユニット（ＣＰＵ）と、メモリ、割込みコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）、浮動小数点ユニット（ＦＰＵ）など、関連する回路とを含む。相互接続１６は、処理ユニットを相互接続し、ならびにＰＳ２中の他の構成要素を処理ユニットに相互接続するように構成された、様々なスイッチ、バス、通信リンクなどを含む。一例では、相互接続１６は、マスタクライアントとスレーブクライアントとの間でアドレス、データ、および応答トランザクションを通信するために、高度拡張可能インターフェース（ＡＸＩ）チャネルを使用する。たとえば、相互接続１６は、ＡＸＩコヒーレンシ拡張（ＡＣＥ）と、ＡＸＩコヒーレンシ拡張ライト（ＡＣＥ−Ｌｉｔｅ）と、ＡＸＩ４と、ＡＸＩ４−Ｌｉｔｅと、ＡＸＩ４−Ｓｔｒｅａｍとを含む、ＡＲＭ（登録商標）アドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）４仕様において定義されているバス／インターフェースを実装することができる。相互接続１６は、アドレス、データ、および応答トランザクションを通信するためにＡＸＩチャネルを使用するものとして本明細書で説明されるが、他のタイプのオンチップ相互接続が使用され得ることを、当業者は諒解されよう。相互接続１６は、サービス品質（ＱｏＳ）、デバッグ、およびテスト監視のための相互接続通信能力およびオーバーレイの完全なアレイを実装することができる。ＣＣＩ８１は、相互接続１６の一部とコヒーレンシ機能とを組み合わせる。ＣＣＩ８１は、完全なコヒーレンシのためのポートを提供することができ、ＣＣＩ８１に接続されたコヒーレントマスタが、互いのキャッシュをスヌープすることができる。ＣＣＩ８１はまた、入出力（ＩＯ）コヒーレンシを提供することができ、ＩＯコヒーレントマスタが、ＡＰＵ５キャッシュをスヌープすることができ、ソフトウェアがＡＰＵ５キャッシュをフラッシュすることによってコヒーレンシを提供する必要を回避する。ＳＭＭＵ８０は、以下でさらに説明される。
【００１６】
ＯＣＭ１４は、ＰＳ２全体に分散され得る１つまたは複数のＲＡＭモジュールを含む。たとえば、ＯＣＭ１４は、バッテリーバックアップＲＡＭ（ＢＢＲＡＭ：ｂａｔｔｅｒｙ  ｂａｃｋｅｄ  ＲＡＭ）、密結合メモリ（ＴＣＭ）などを含むことができる。メモリコントローラ１０は、外部ＤＲＡＭにアクセスするためのＤＲＡＭインターフェースを含むことができる。周辺機器８、１５は、ＰＳ２へのインターフェースを提供する１つまたは複数の構成要素を含むことができる。たとえば、周辺機器１３２は、グラフィックス処理ユニット（ＧＰＵ）、ディスプレイインターフェース（たとえば、ＤｉｓｐｌａｙＰｏｒｔ、高精細度マルチメディアインターフェース（ＨＤＭＩ）ポートなど）、ユニバーサルシリアルバス（ＵＳＢ）ポート、イーサネットポート、ユニバーサル非同期トランシーバ（ＵＡＲＴ）ポート、シリアル周辺インターフェース（ＳＰＩ）ポート、汎用ＩＯ（ＧＰＩＯ）ポート、シリアルアドバンストテクノロジアタッチメント（ＳＡＴＡ）ポート、ＰＣＩｅポートなどを含むことができる。周辺機器１５は、ＭＩＯ１３に結合され得る。周辺機器８は、トランシーバ７に結合され得る。トランシーバ７は、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴなどを含むことができる。
【００１７】
図３は、トランシーバ３７、構成可能論理ブロック（「ＣＬＢ」）３３、ランダムアクセスメモリブロック（「ＢＲＡＭ」）３４、入出力ブロック（「ＩＯＢ」）３６、構成およびクロッキング論理部（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）４２、デジタル信号処理ブロック（「ＤＳＰ」）３５、特殊な入出力ブロック（「Ｉ／Ｏ」）４１（たとえば、構成ポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログデジタルコンバータ、システム監視論理部などの他のプログラマブル論理部３９を含む、多数の異なるプログラマブルタイルを含むプログラマブルＩＣ１のプログラマブル論理部３を示す。プログラマブル論理部３はまた、ＰＣＩｅインターフェース４０、アナログデジタルコンバータ（ＡＤＣ）３８などを含むことができる。
【００１８】
いくつかのプログラマブル論理部では、各プログラマブルタイルは、図３の上部に含まれる例によって示されているように、同じタイル内のプログラマブル論理要素の入力および出力端子４８への接続を有する少なくとも１つのプログラマブル相互接続要素（「ＩＮＴ」）４３を含むことができる。各プログラマブル相互接続要素４３は、同じタイルまたは（１つまたは複数の）他のタイル中の（１つまたは複数の）隣接するプログラマブル相互接続要素の相互接続セグメント４９への接続をも含むことができる。各プログラマブル相互接続要素４３は、論理ブロック（図示せず）間の一般的なルーティングリソースの相互接続セグメント５０への接続をも含むことができる。一般的なルーティングリソースは、相互接続セグメント（たとえば、相互接続セグメント５０）のトラックを備える論理ブロック（図示せず）と、相互接続セグメントを接続するためのスイッチブロック（図示せず）との間のルーティングチャネルを含むことができる。一般的なルーティングリソースの相互接続セグメント（たとえば、相互接続セグメント５０）は、１つまたは複数の論理ブロックにわたることができる。一般的なルーティングリソースとともにとられるプログラマブル相互接続要素４３は、示されているプログラマブル論理部のためのプログラマブル相互接続構造（「プログラマブル相互接続」）を実装する。
【００１９】
例示的な一実装形態では、ＣＬＢ３３は、ユーザ論理部を実装するようにプログラムされ得る構成可能論理要素（「ＣＬＥ」）４４と、単一のプログラマブル相互接続要素（「ＩＮＴ」）４３とを含むことができる。ＢＲＡＭ３４は、１つまたは複数のプログラマブル相互接続要素に加えてＢＲＡＭ論理要素（「ＢＲＬ」）４５を含むことができる。典型的には、タイル中に含まれる相互接続要素の数は、タイルの高さに依存する。描かれている例では、ＢＲＡＭタイルは、５つのＣＬＢと同じ高さを有するが、他の数（たとえば、４つ）も使用され得る。ＤＳＰタイル３５は、適切な数のプログラマブル相互接続要素に加えてＤＳＰ論理要素（「ＤＳＰＬ」）４６を含むことができる。ＩＯＢ３６は、たとえば、プログラマブル相互接続要素４３の１つのインスタンスに加えて入出力論理要素（「ＩＯＬ」）４７の２つのインスタンスを含むことができる。当業者に明らかになるように、たとえばＩ／Ｏ論理要素４７に接続される実際のＩ／Ｏパッドは、典型的に、入出力論理要素４７のエリアに制限されない。
【００２０】
描かれている例では、（図３に示されている）ダイの中心の近くの水平方向のエリアが、構成、クロック、および他の制御論理部のために使用される。この水平方向のエリアまたは列から延びる垂直方向の列５１が、プログラマブル論理部の幅にわたってクロックおよび構成信号を分散させるために使用される。
【００２１】
図３に示されているアーキテクチャを利用するあるプログラマブル論理部は、プログラマブル論理部の大部分を構築する規則的な列状構造を損なう追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび／または専用の論理部であり得る。
【００２２】
図３は、例示的なプログラマブル論理アーキテクチャを示すことを意図されているにすぎないことに留意されたい。たとえば、１つの行中の論理ブロックの数、行の相対幅、行の数および順序、行中に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および図３の上部に含まれる相互接続／論理実装形態は、例にすぎない。たとえば、実際のプログラマブル論理部では、ユーザ論理部の効率的な実装を容易にするために、ＣＬＢが現れるところならどこでも、ＣＬＢの２つ以上の隣接する行が典型的に含まれるが、隣接するＣＬＢ行の数は、プログラマブル論理部の全体的なサイズによって変動する。
【００２３】
図４は、一例による、プログラマブルＩＣ１中のＰＳ−ＰＬシステム４００を示すブロック図である。ＰＳ−ＰＬシステム４００は、ＰＳ２と、ＮｏＣ８２と、ＰＬ３とを含む。ＰＳ２は、ＡＰＵ５と、ＳＭＭＵ８０と、ＣＣＩ８１と、非コヒーレント相互接続４０８と、１つまたは複数のＰＳコヒーレントマスタ４０４と、１つまたは複数のＰＳ非コヒーレントマスタ４０２とを含む。ＡＰＵ５、ＳＭＭＵ８０、およびＰＬ３は、ＣＣＩ８１に結合される。ＳＭＭＵ８０は、非コヒーレント相互接続４０８に結合される。（１つまたは複数の）ＰＳコヒーレントマスタ４０４、（１つまたは複数の）ＰＳ非コヒーレントマスタ４０２、およびＰＬ３は、ＳＭＭＵ８０に結合される。ＳＭＭＵ８０は、複数のＰＳ変換バッファ回路（変換バッファユニット（ＴＢＵ）と呼ばれる）４１０と、アドレス変換器回路（ＡＴ）４１２と、ＡＴ  ＴＢＵ４１１とを含む。ＰＬ３は、ＰＬ  ＡＸＩ  ＡＣＥマスタインターフェース４１６、ＰＬコヒーレントマスタインターフェース４１８、およびＰＬ非コヒーレントマスタインターフェース４２０を通して、ＣＣＩ８１に結合される。ＰＬ３はまた、ＡＴインターフェース４１４を通して、ＳＭＭＵ８０に結合される。ＣＣＩ８１、非コヒーレント相互接続４０８、およびＰＬ３は、ＮｏＣ８２に結合される。ＰＬ３は、コヒーレントおよび／または非コヒーレントマスタを含むことができる、１つまたは複数のＰＬマスタ４２２を含む。ＰＬマスタ４２２は、ＰＬ３中のハード化された回路、またはＰＬ３のプログラマブル論理部で構成された回路であり得る。
【００２４】
ＡＰＵ５は、キャッシュメモリ（キャッシュ４２４）と、メモリ管理ユニット（ＭＭＵ）４２６とを含む。ＭＭＵ４２６は、メモリのページングの形態でメモリ管理を実装する。ＭＭＵ４２６は、ＡＰＵ５によって行われるメモリアクセスのためのアドレス変換およびアクセス許可を制御する。ＭＭＵ４２６は、（「変換方式」とも呼ばれる）特権レベルに基づく複数のアドレス変換方式を実装する。各変換方式は、一般に、入力アドレス（ＩＡ）をとり、定義されたアクセス許可に基づいて許可された場合、出力アドレス（ＯＡ）を返す。（たとえば、アクセス許可の違反により）アドレス変換が実施され得ない場合、ＭＭＵ４２６は、例外を生成する。ＭＭＵ４２６は、ＡＰＵ５中の複数のシステムレジスタによって制御される。ＭＭＵ４２６は、ＡＰＵ５による使用のためのアドレス変換をキャッシュする変換索引バッファ（ＴＬＢ）を含むことができる。ＳＭＭＵ８０は、ＭＭＵ４２６と同様に動作し、同じアドレス変換方式を実装する。
【００２５】
アドレス変換方式の１つのタイプは、仮想アドレス空間において仮想アドレス（ＶＡ）を受信し、物理アドレス空間において物理アドレス（ＰＡ）を出力する、アドレス変換の単一のステージを含む。仮想アドレス空間は、ソフトウェアによって管理されるフラットな論理アドレス空間である。物理アドレス空間は、メモリを含む物理メモリマップを含む。別のタイプの変換方式は、アドレス変換の２つのステージを含む。アドレス変換の第１のステージは、ＶＡを受信し、中間物理アドレス空間において中間物理アドレス（ＩＰＡ）を出力する。アドレス変換の第２のステージは、ＩＰＡを受信し、ＰＡを出力する。ＩＰＡアドレス空間は、ソフトウェアによって管理されるフラットな論理アドレス空間である。
【００２６】
ＣＣＩ８１は、それに接続されたコヒーレントマスタ間のハードウェアキャッシュコヒーレンシを提供する。非コヒーレント相互接続４０８は、キャッシュコヒーレンシ機能を有しない。本例では、コヒーレントマスタは、ＡＰＵ５と、（１つまたは複数の）ＰＳコヒーレントマスタ４０４と、随意に（１つまたは複数の）ＰＬマスタ４２２とを含む。（１つまたは複数の）ＰＳ非コヒーレントマスタ４０２の各々、および（１つまたは複数の）任意の非コヒーレントＰＬマスタ４２２は、キャッシュコヒーレンシ機能性を必要とせず、非コヒーレント相互接続４０８を通して通信することができる。
【００２７】
（１つまたは複数の）ＰＳコヒーレントマスタ４０４とＰＬコヒーレントマスタインターフェース４１８とは、ＰＳ２のクロックドメインにおいて動作するＰＳ  ＴＢＵ４１０を通して、ＳＭＭＵ８０に結合される。ＡＴインターフェース４１４は、ＰＬ３のクロックドメインにおいて動作するＡＴ  ＴＢＵ４１１に結合される。ＡＴ４１２は、アドレス変換インターフェース４１４上の要求／応答通信を使用して、ＰＬマスタ４２２のためのアドレス変換を実施するように構成される。特に、例では、（１つまたは複数の）ＰＬマスタ４２２は、仮想アドレスを変換するために、ＰＳ２を通して（アドレス変換要求以外の）ＰＬマスタ４２２のトラフィックをダイレクトしない。さらに、アドレス変換要求以外のトラフィックは、ＡＴインターフェース４１４を通って流れない。ＡＴ４１２、ＡＴインターフェース４１４、およびＡＴ  ＴＢＵ４１１は、ＰＬ３のクロックドメインにおいて動作し、したがって、クロックドメインクロッシングによるレイテンシをなくす。
【００２８】
図５は、例による、ＳＭＭＵ８０へのＡＴインターフェース４１４を利用する例示的なシステム５００を示すブロック図である。本例では、ＰＬ３は、カーネル回路５０２と、ＰＬ  ＭＭＵ５０４と、ＰＬキャッシュメモリ（ＰＬキャッシュ５０６）とを有するＰＬマスタ４２２を含む。カーネル回路５０２は、ハード化された回路、またはプログラマブル論理部で構成された回路であり得る。同様に、ＰＬ  ＭＭＵ５０４は、ハード化された回路、またはプログラマブル論理部で構成された回路であり得る。ＰＬキャッシュ５０６は、ＰＬ３中に配設されたランダムアクセスメモリ（ＲＡＭ）（たとえば、ＢＲＡＭ）を備える。ＰＬ  ＭＭＵ５０４は、ＡＴインターフェース４１４を通してＰＳ２中のＳＭＭＵ８０に結合される。ＰＬキャッシュ５０６は、ＰＬ  ＡＣＥマスタインターフェース４１６を通してＰＳ２に結合される。
【００２９】
動作中、カーネル回路５０２は、ＰＬ  ＭＭＵ５０４に、仮想アドレス（ＶＡ）を変換するようにとの要求を出す。ＰＬ  ＭＭＵ５０４は、ローカルＴＬＢを含まず、したがって、本例では、アドレス変換をキャッシュしない。むしろ、ＰＬ  ＭＭＵ５０４は、ＡＴ要求を使用して、ＡＴインターフェース４１４を通してＳＭＭＵ８０にすべてのＶＡ変換要求をフォワーディングする。したがって、カーネル回路５０２において分散仮想メモリ（ＤＶＭ）トランザクションサポートの必要がない。
【００３０】
図６は、一例による、ＳＭＭＵ８０を示すブロック図である。ＳＭＭＵ８０は、（本明細書では変換制御ユニット（ＴＣＵ）と呼ばれる）変換制御回路６０２と、ＰＳ  ＴＢＵ４１０と、クロックドメインクロッシングブリッジ６０６と、ＡＴ４１２と、ＡＴ  ＴＢＵ４１１とを含む。ＡＴ４１２は、ＶＡ要求インターフェース（ＩＦ）６０８と、アドレス変換（ＡＴ）ＡＸＩマスタ６１０と、ＡＴ  ＡＸＩスレーブ６１４と、ＰＡ応答ＩＦ６１６とを含む。ＶＡ要求ＩＦ６０８、ＡＴ  ＡＸＩマスタ６１０、ＡＴ  ＴＢＵ４１１、ＡＴ  ＡＸＩスレーブ６１４、およびＰＡ応答ＩＦ６１６は、（クロックドメイン６１７として示される）ＰＬのクロックドメインにおいて動作する。ＴＣＵ６０２およびＰＳ  ＴＢＵ４１０は、ＰＳ２のクロックドメインにおいて動作する。クロックドメインクロッシングブリッジ６０６は、ＴＣＵ  ６０２とＡＴ  ＴＢＵ４１１との間の通信のために、ＰＳ２のクロックドメインとＰＬのクロックドメインとの間で変換するように構成される。
【００３１】
一例では、ＡＴインターフェース４１４は、読取り変換要求および書込み変換要求について１つずつ、２つの独立チャネルを含む。読取りチャネルおよび書込みチャネルの各々は、ＡＴ要求サブチャネルとＡＴ応答サブチャネルとを含む。いくつかの例では、各読取りおよび書込みチャネルは、ＡＴ完了サブチャネルをさらに含む。ＶＡ要求ＩＦ６０８は、ＡＴ要求サブチャネル６１８から受信するように構成される。ＰＡ応答ＩＦ６１６は、ＡＴ応答サブチャネル６２０上で送信するように構成される。ＰＡ応答ＩＦ６１６はまた、（存在する場合）ＡＴ完了サブチャネル６２２上で受信するように構成される。
【００３２】
ＡＴ要求サブチャネルは、仮想アドレスのアドレス変換を要求するために使用される。一例では、ＡＴ要求サブチャネルは、信号の中でも、アドレス信号とＡＸＩ  ＩＤ信号とを含む。アドレス信号は、変換されるべき仮想アドレスを供給する。ＡＸＩ  ＩＤ信号は、ＡＴ要求のための識別子を供給する。一例では、ＡＴ要求サブチャネルは、ＰＬマスタ４２２とＶＡ要求ＩＦ６０８との間のＡＸＩストリーミングインターフェースを使用して実装される。
【００３３】
ＡＴ応答サブチャネルは、ＰＬマスタ４２２に、変換されたアドレスおよび関係するパラメータを提供するために使用される。一例では、ＡＴ応答サブチャネルは、信号の中でも、変換されたアドレス信号と、ＡＸＩ  ＩＤ信号と、エラー信号とを含む。変換されたアドレス信号は、要求された仮想アドレスに対する変換されたアドレスを供給する。ＡＸＩ  ＩＤ信号は、対応するＡＴ要求のための識別子を供給する。エラー信号は、変換エラーが発生したかどうかを指示する。一例では、ＡＴ応答サブチャネルは、ＰＬマスタ４２２とＰＡ応答ＩＦ６１６との間のＡＸＩストリーミングインターフェースを使用して実装される。
【００３４】
ＡＴ完了サブチャネルは、ＰＬマスタ４２２が変換されたアドレスを使用してトランザクション（たとえば、メモリに対する読取りまたは書込みトランザクション）を完了したとＡＴ４１２に通知するために、ＰＬマスタ４２２によって使用され得る。一例では、ＡＴ完了サブチャネルは、対応するＡＴ要求のための識別子を供給するＡＸＩ  ＩＤ信号を含む。一例では、ＡＴ完了サブチャネルは、ＰＬマスタ４２２とＰＡ応答ＩＦ６１６との間のＡＸＩストリーミングインターフェースを使用して実装される。ＡＴ完了サブチャネルは、ページテーブルが動的に変更され、ＴＢＵとＴＣＵとの間のＤＶＭメッセージングが、ＴＢＵエントリを無効にするために使用され得るとき、使用され得る。完了サブチャネルがなければ、ＰＬマスタ４２２の変換されたトランザクションと、システムレベルにおいて行われる可能な仮想メモリ再構成との間で、競合状態の危険がある。別の例では、使用事例が静的仮想メモリ構成のみを伴う場合、ＤＶＭ無効化イベントは予想されない。この例では、完了フェーズを回避すること（たとえば、完了バイパス）によって、ある程度の性能向上が達成され得る。したがって、完了フェーズの実装およびＡＴ完了サブチャネルの使用は、仮想メモリ構成が静的であるのか動的であるのかに応じて、随意である。
【００３５】
図７は、一例による、ＳＭＭＵ８０においてＰＬマスタ４２２からのＡＴ要求を処理する方法７００を示す流れ図である。方法７００の態様は、上記で説明された図４〜図６を参照しながら理解され得る。方法７００は、ステップ７０２において始まり、ＶＡ要求ＩＦ６０８が、ＰＬマスタ４２２中のＰＬ  ＭＭＵ５０４からのＡＴ要求を受け入れる。ＶＡ要求ＩＦ６０８は、ＡＴ  ＡＸＩマスタ６１０にＡＴ要求をフォワーディングする。
【００３６】
ステップ７０４において、ＡＴ  ＡＸＩマスタ６１０は、要求されたアドレスを使用してＡＸＩトランザクションを作成する。ＡＴ  ＡＸＩマスタ６１０は、ＡＴ  ＴＢＵ４１１の入口ポートに、ＡＴ要求をカプセル化するＡＸＩトランザクションを送る。ステップ７０６において、ＡＴ  ＴＢＵ４１１は、アドレス変換を実施する。たとえば、ＡＴ  ＴＢＵ４１１が、要求された仮想アドレスのための有効なエントリを含む場合、ＴＢＵ４１１は、そのＴＬＢから変換されたアドレスを取得する。ＡＴ  ＴＢＵ４１１が、仮想アドレスのための有効なエントリを含まない場合、ＡＴ  ＴＢＵ４１１は、クロックドメインクロッシングブリッジ６０６を通してＴＣＵ６０２に要求をフォワーディングする。ＴＣＵ６０２は、変換されたアドレスを取得するために、ページテーブルに基づいてアドレス変換機能を実施する。ＴＣＵ６０２は、クロックドメインクロッシングブリッジ６０６を通して、ＡＴ  ＴＢＵ４１１に変換されたアドレスを返す。
【００３７】
ステップ７０７において、ＡＴ  ＡＸＩスレーブ６１４は、ＡＴ  ＴＢＵ４１１からの変換されたアドレスを有する発信ＡＸＩトランザクションをキャプチャする。ステップ７０８において、ＰＡ応答ＩＦ６１６は、発信ＡＸＩトランザクションから、変換されたアドレスを抽出する。ＰＡ応答ＩＦ６１６は、ＡＴ応答中でＰＬ  ＭＭＵ５０４に変換されたアドレスを返す。ＰＬ  ＭＭＵ５０４は、次に、カーネル回路５０２に変換されたアドレスを返す。ステップ７１０において、カーネル回路５０２は、変換されたアドレスを使用し、トランザクション（たとえば、読取りまたは書込みメモリトランザクション）を完了する。
【００３８】
ステップ７１２において、ＰＬ  ＭＭＵ５０４は、ＡＴインターフェース４１４を通してＰＡ応答ＩＦ６１６にＡＴ完了メッセージを送る。ＰＡ応答ＩＦ６１６は、ＡＸＩスレーブ６１４に完了メッセージをフォワーディングする。ステップ７１４において、ＡＸＩスレーブ６１４は、ＡＴ  ＴＢＵ４１１に発信ＡＸＩトランザクションへのＡＸＩ応答を提供する。ステップ７１６において、ＡＴ  ＴＢＵ４１１は、ＡＸＩ応答を受け入れて、トランザクションを終了する。
【００３９】
図８は、一例による、障害を処理する方法８００を示す流れ図である。方法８００の態様は、上記で説明された図４〜図６を参照しながら理解され得る。方法８００は、ステップ８０２において始まり、ＴＣＵ６０２は、変換要求に応答して、障害（たとえば、ページフォールト）を決定する。ステップ８０４において、ＡＴ  ＴＢＵ４１１は、ＡＴ要求に対するスレーブエラー応答を出す。ステップ８０６において、ＡＸＩスレーブ６１４は、エラーを指示するために、ＰＬマスタ４２２にＡＴ応答を出す。したがって、変換要求がＳＭＭＵ８０によって完了され得ない場合、ＡＴ  ＴＢＵ４１１は、ＡＸＩ要求に対応するスレーブエラー応答を出すことになる。ＡＸＩスレーブ６１４は、（成功した変換のための応答に加えて）そのようなスレーブエラー応答についてＡＴ  ＴＢＵ４１１を監視する。ＡＸＩスレーブ６１４は、両方の起こり得る結果に基づいて応答を生成し、ＡＸＩ順序付けルールが維持されなければならない。ＰＬマスタ４２２は、変換の失敗の場合、ＡＴ完了を送ってはならない。
【００４０】
たとえば、同じＡＸＩ  ＩＤをもつ２つの相次ぐ（ｂａｃｋ−ｔｏ−ｂａｃｋ）ＡＴ要求、Ｒ１およびＲ２を仮定する。Ｒ１は、失敗し、ＡＴ  ＴＢＵ４１１から出力されたスレーブエラーとして現れる。Ｒ２は、成功し、ＡＴ  ＴＢＵ４１１から出力された変換された要求として現れる。ＡＴ  ＴＢＵ４１１インターフェースにおいてどちらが最初に現れることになるかは知られていない。正しいＡＸＩ順序付けが、ＡＸＩ要求をタグ付けすることと、必要に応じて並べ替えることとによって、達成され得る。したがって、図７を参照すると、ＡＸＩマスタ６１０は、ＡＴ要求に応答してＡＸＩトランザクションを作成するとき、作成されたＡＸＩトランザクションをタグ付けすることができる（ステップ７０５）。たとえば、３ビットタグは、最高８つの未解決のトランザクションを追跡するために使用され得る。ＡＸＩスレーブ６１４は、ＡＸＩマスタ６１０によって追加されたタグに基づいて、応答の順序を決定することができる。したがって、ステップ８０８において、ＡＸＩスレーブ６１３は、タグに基づいて必要に応じてＡＸＩ応答を並べ替える。
【００４１】
別の例では、ＡＸＩマスタ６１０は、ＡＸＩ要求をタグ付けしない。むしろ、ＰＬマスタ４２２は、ＡＴ要求ごとに一意のＡＸＩ  ＩＤを使用しなければならず、したがって、順不同で応答を受け入れることが可能である。成功した変換と障害エラーとを同じＡＴ応答サブチャネル上に一緒に多重化するのではなく、ＡＸＩスレーブ６１４は、ＰＬマスタ４２２にエラー応答を提供するための別個のエラー応答サブチャネルを提供することができる（ステップ８１０）。
【００４２】
一例では、プログラマブル集積回路（ＩＣ）は、プロセッサと、マスタ回路と、システムメモリ管理ユニット（ＳＭＭＵ）とを有する処理システムであって、ＳＭＭＵが、マスタ回路に結合された第１の変換バッファユニット（ＴＢＵ）と、アドレス変換（ＡＴ）回路と、ＡＴ回路に結合されたＡＴインターフェースと、ＡＴ回路に結合された第２のＴＢＵとを含む、処理システムと、ＡＴインターフェースを通してＳＭＭＵ中のＡＴ回路に結合されたプログラマブル論理部とを含む。
【００４３】
一例では、プログラマブルＩＣにおいて、ＡＴ回路および第２のＴＢＵは、プログラマブル論理部のクロックドメインにおいて動作し、第１のＴＢＵは、処理システムのクロックドメインにおいて動作する。
【００４４】
一例では、プログラマブルＩＣにおいて、ＳＭＭＵは、変換制御ユニット（ＴＣＵ）と、第２のＴＢＵとＴＣＵとの間に結合されたクロックドメインクロッシングブリッジとをさらに含む。
【００４５】
一例では、プログラマブルＩＣにおいて、ＡＴ回路は、ＡＴインターフェースに結合された仮想アドレス（ＶＡ）要求インターフェースと、ＶＡ要求インターフェースと第２のＴＢＵとの間に結合されたＡＴマスタ回路と、ＡＴインターフェースに結合された物理アドレス（ＰＡ）応答インターフェースと、ＰＡ応答インターフェースと第２のＴＢＵとの間に結合されたＡＴスレーブ回路とを備える。
【００４６】
一例では、プログラマブルＩＣにおいて、ＡＴインターフェースは、ＶＡ要求インターフェースに結合されたＡＴ要求サブチャネルと、ＰＡ応答インターフェースに結合されたＡＴ応答サブチャネルとを含む。
【００４７】
一例では、プログラマブルＩＣにおいて、ＡＴインターフェースは、ＰＡ応答インターフェースに結合されたＡＴ完了サブチャネルをさらに含む。
【００４８】
一例では、プログラマブル集積回路（ＩＣ）におけるアドレス変換の方法が、プログラマブルＩＣの処理システム（ＰＳ）中のシステムメモリ管理ユニット（ＳＭＭＵ）において、プログラマブルＩＣのプログラマブル論理部（ＰＬ）中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、ＳＭＭＵにおいて仮想アドレスを変換することと、ＳＭＭＵからＰＬ中のマスタ回路に、変換されたアドレスを送ることとを含む。
【００４９】
一例では、受信するステップは、ＳＭＭＵ中のアドレス変換（ＡＴ）回路において、仮想アドレスを使用してトランザクションを作成することと、ＳＭＭＵ中の変換バッファユニット（ＴＢＵ）にトランザクションを送ることとを含む。
【００５０】
一例では、送るステップは、変換されたアドレスを有する、ＴＢＵからの発信トランザクションをキャプチャすることと、発信トランザクションから、変換されたアドレスを抽出することと、ＡＴ回路からＰＬ中のマスタ回路に、変換されたアドレスを返すこととを含む。
【００５１】
一例では、本方法は、ＰＬ中のマスタ回路において、変換されたアドレスを使用することと、ＰＬ中のマスタ回路からＳＭＭＵに完了メッセージを提供することとをさらに含む。
【００５２】
一例では、本方法は、ＡＴ回路から、ＴＢＵに発信トランザクションへの応答を提供することをさらに含む。
【００５３】
一例では、本方法は、マスタ回路から、他の仮想アドレスを変換するようにとの他の要求をＳＭＭＵにおいて受信することと、他の要求に応答してＳＭＭＵにおいてエラーを決定することと、ＳＭＭＵからマスタ回路にエラー指示を送ることとをさらに含む。
【００５４】
上記は特定の例を対象とするが、他のおよびさらなる例がその基本的範囲から逸脱することなく考案され得、その範囲は以下の特許請求の範囲によって決定される。
【図１】
2021529373.tif 000003
【図２】
2021529373.tif 000004
【図３】
2021529373.tif 000005
【図４】
2021529373.tif 000006
【図５】
2021529373.tif 000007
【図６】
2021529373.tif 000008
【図７】
2021529373.tif 000009
【図８】
2021529373.tif 000010
【国際調査報告】
2021529373.tif 000011
2021529373.tif 000012
2021529373.tif 000013