IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザイリンクス インコーポレイテッドの特許一覧

特許7383645システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換
<>
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図1
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図2
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図3
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図4
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図5
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図6
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図7
  • 特許-システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換
(51)【国際特許分類】
   G06F 12/1027 20160101AFI20231113BHJP
【FI】
G06F12/1027 105
【請求項の数】 11
(21)【出願番号】P 2020570532
(86)(22)【出願日】2019-06-21
(65)【公表番号】
(43)【公表日】2021-10-28
(86)【国際出願番号】 US2019038490
(87)【国際公開番号】W WO2019246534
(87)【国際公開日】2019-12-26
【審査請求日】2022-06-15
(31)【優先権主張番号】16/016,349
(32)【優先日】2018-06-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】アーヴェル, イーガル
(72)【発明者】
【氏名】アーマッド, サギール
(72)【発明者】
【氏名】シン, ゴーラヴ
【審査官】田中 啓介
(56)【参考文献】
【文献】特表2017-528821(JP,A)
【文献】国際公開第2017/172342(WO,A1)
【文献】特開2007-233615(JP,A)
【文献】特開平06-324946(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/08-12/128
(57)【特許請求の範囲】
【請求項1】
プロセッサと、マスタ回路と、システムメモリ管理ユニット(SMMU)とを有する処理システムであって、前記SMMUが、
前記マスタ回路に結合された第1の変換バッファユニット(TBU)と、
第2のTBUと、
仮想アドレス(VA)要求インターフェース、および前記VA要求インターフェースと前記第2のTBUとの間に結合されたアドレス変換(AT)マスタ回路を含む、アドレス変換(AT)回路と、
前記AT回路の前記VA要求インターフェースに結合されたATインターフェース
含む、処理システムと、
前記ATインターフェースを通して前記SMMU中の前記AT回路に結合された論理部と
を備える、集積回路(IC)。
【請求項2】
前記AT回路および前記第2のTBUが、前記論理部のクロックドメインにおいて動作し、前記第1のTBUが、前記処理システムのクロックドメインにおいて動作する、請求項1に記載のIC。
【請求項3】
前記SMMUが、変換制御ユニット(TCU)と、前記第2のTBUと前記TCUとの間に結合されたクロックドメインクロッシングブリッジとをさらに含む、請求項2に記載のIC。
【請求項4】
前記AT回路が
記ATインターフェースに結合された物理アドレス(PA)応答インターフェースと、
前記PA応答インターフェースと前記第2のTBUとの間に結合されたATスレーブ回路と
さらに備える、請求項1に記載のIC。
【請求項5】
前記ATインターフェースが、前記VA要求インターフェースに結合されたAT要求サブチャネルと、前記PA応答インターフェースに結合されたAT応答サブチャネルとを含む、請求項4に記載のIC。
【請求項6】
前記ATインターフェースが、前記PA応答インターフェースに結合されたAT完了サブチャネルをさらに含む、請求項5に記載のIC。
【請求項7】
積回路(IC)におけるアドレス変換の方法であって、
記ICの処理システム(PS)中のシステムメモリ管理ユニット(SMMU)において、前記ICのプログラマブル論理部(PL)中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、
前記SMMUにおいて前記仮想アドレスを変換することと、
前記SMMUから前記PL中の前記マスタ回路に、変換されたアドレスを送ることと
を含
前記変換されたアドレスを送ることが、
前記変換されたアドレスを有する、前記SMMU中の変換バッファユニット(TBU)からの発信トランザクションをキャプチャすることと、
前記発信トランザクションから、前記変換されたアドレスを抽出することと、
前記SMMU中のアドレス変換(AT)回路から前記PL中の前記マスタ回路に、前記変換されたアドレスを返し、前記PL中の前記マスタ回路において、前記変換されたアドレスを使用することと
により行われる、方法。
【請求項8】
前記要求を受信することが、
前記SMMU中の前記AT回路において、前記仮想アドレスを使用してトランザクションを作成することと、
前記SMMU中の前記TBUに前記トランザクションを送ることと
を含む、請求項7に記載の方法。
【請求項9】
記PL中の前記マスタ回路から前記SMMUに完了メッセージを提供するこ
さらに含む、請求項に記載の方法。
【請求項10】
前記AT回路から、前記TBUに前記発信トランザクションへの応答を提供すること
をさらに含む、請求項に記載の方法。
【請求項11】
前記マスタ回路から、他の仮想アドレスを変換するようにとの第2の要求を前記SMMUにおいて受信することと、
前記第2の要求に応答して前記SMMUにおいてエラーを決定することと、
前記SMMUから前記マスタ回路にエラー指示を送ることと
をさらに含む、請求項7に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般に、電子回路に関し、詳細には、システムオンチップ(SoC)におけるプログラマブル論理(PL)マスタのためのハードウェアベースの仮想-物理アドレス変換(virtual-to-physical address translation)に関する。
【背景技術】
【0002】
集積回路技術における進歩は、プロセッサコアとメモリコントローラとバスとを含むなどのシステム全体を単一の半導体チップに埋め込むことを可能にした。このタイプのチップは、一般にシステムオンチップ(SoC)と呼ばれる。他のSoCは、異なる適用例のために、異なる構成要素をその中に埋め込むことができる。SoCは、旧来のプロセッサベース設計に勝る多くの利点を提供する。SoCは、単一のデバイスへの構成要素の集積がサイズを減少させながら全体的速度を増加させるので、マルチチップ設計の魅力的な代替である。SoCは、特定用途向け集積回路(ASIC)設計が、著しくより長い開発時間とより大きい開発コストとを有する傾向があるので、ASICなどの完全にカスタマイズされたチップの魅力的な代替でもある。処理システム(PS)とプログラマブル論理部(PL)とを含む、構成可能SoC(CSoC)は、プログラマブル論理部とSoCの両方の利益を得ることができるプログラマブル半導体チップを実装するために開発された。
【0003】
SoCのPS中のアプリケーションプロセッサが、仮想-物理アドレス変換を提供する内蔵メモリ管理ユニット(MMU)を含む。さらに、PSは、内蔵MMUをもたない他のPSマスタによる使用のためのシステムMMU(SMMU)を含むことができる。さらに、PLマスタはまた、仮想化のためにPS SMMUを使用することができるが、PSを通してPLマスタのトラフィックをルーティングすることによってのみこれを使用することができ、これは、いくつかの適用例では望ましくないことがある。たとえば、PLマスタの1つのクラスは、内部キャッシュをもつ回路である。そのようなPLマスタは、キャッシュアクセスより前にアドレス変換を必要とし、したがって、PS SMMUを使用する目的でPSを通してPLマスタのトラフィックをルーティングすることができない。
【発明の概要】
【0004】
システムオンチップ(SoC)におけるプログラマブル論理(PL)マスタのためのハードウェアベースの仮想-物理アドレス変換のための技法が説明される。一例では、プログラマブル集積回路(IC)は、プロセッサと、マスタ回路と、システムメモリ管理ユニット(SMMU)とを有する処理システムであって、SMMUが、マスタ回路に結合された第1の変換バッファユニット(TBU)と、アドレス変換(AT)回路と、AT回路に結合されたATインターフェースと、AT回路に結合された第2のTBUとを含む、処理システムと、ATインターフェースを通してSMMU中のAT回路に結合されたプログラマブル論理部とを含む。
【0005】
別の例では、プログラマブル集積回路(IC)中の回路は、プログラマブル論理(PL)マスタ回路を有するプログラマブル論理部(PL)と、システムメモリ管理ユニット(SMMU)を有する処理システム(PS)であって、SMMUが、アドレス変換(AT)回路と、PLマスタ回路とAT回路との間に結合されたATインターフェースと、AT回路に結合された変換バッファユニット(TBU)とを含む、処理システム(PS)とを含む。
【0006】
別の例では、プログラマブル集積回路(IC)におけるアドレス変換の方法が、プログラマブルICの処理システム(PS)中のシステムメモリ管理ユニット(SMMU)において、プログラマブルICのプログラマブル論理部(PL)中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、SMMUにおいて仮想アドレスを変換することと、SMMUからPL中のマスタ回路に、変換されたアドレスを送ることとを含む。
【0007】
これらおよび他の態様は、以下の発明を実施するための形態を参照しながら理解され得る。
【0008】
上記の具陳された特徴が詳細に理解され得るように、上記で手短に要約されたより詳細な説明は、添付の図面にその一部が示されている例示的な実装形態を参照することによってなされ得る。しかしながら、添付の図面は、典型的な例示的な実装形態を示すにすぎず、したがって、その範囲の限定と見なされるべきでないことに留意されたい。
【図面の簡単な説明】
【0009】
図1】一例による、プログラマブル集積回路を示すブロック図である。
図2】一例による、図1のプログラマブルICのシステムオンチップ(SoC)実装形態を示すブロック図である。
図3】一例による、図1のプログラマブルICのプログラマブル論理部を示す図である。
図4】一例による、プログラマブルIC中のPS-PLシステムを示すブロック図である。
図5】例による、SMMUへのアドレス変換インターフェースを利用する例示的なシステムを示すブロック図である。
図6】一例による、SMMUを示すブロック図である。
図7】一例による、SMMUにおいてPLマスタからのAT要求を処理する方法を示す流れ図である。
図8】一例による、障害を処理する方法を示す流れ図である。
【発明を実施するための形態】
【0010】
理解を容易にするために、可能な場合、図に共通である同じ要素を示すために同じ参照番号が使用されている。一例の要素が、他の例に有益に組み込まれ得ることが企図される。
【0011】
図を参照しながら様々な特徴が以下で説明される。図は一定の縮尺で描かれることも描かれないこともあり、同様の構造または機能の要素が、図全体にわたって同様の参照番号によって表されることに留意されたい。図は、特徴の説明を容易にすることを意図されているにすぎないことに留意されたい。図は、請求される本発明の網羅的な説明として、または請求される本発明の範囲に対する限定として意図されていない。さらに、示されている例は、すべての態様または利点が示される必要があるとは限らない。特定の例に関して説明される一態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはそのように明示的に説明されていない場合でも、任意の他の例において実施され得る。
【0012】
システムオンチップ(SoC)におけるプログラマブル論理(PL)マスタのためのハードウェアベースの仮想-物理アドレス変換のための技法が説明される。本技法は、SoCの処理システム(PS)中のシステムメモリ管理ユニット(SMMU)を利用する。ハードウェアベースの低レイテンシ技法は、PLマスタが内部キャッシュを実装することを可能にするアドレス変換サービスをPLマスタに提供し、また、トラフィックがPS SMMUを介してルーティングされる必要がない仮想化されたPLマスタを設計するために使用され得る。例では、PS SMMUは、追加のポートを追加することによって拡張される。アドレス変換要求以外のトラフィックは、追加されたポートを介して流れない。PS SMMUは、純粋なアドレス変換サービスを提供する、追加のポートに結合されたアドレス変換器を含む。PS SMMUは、PLマスタをアドレス変換機能にアタッチするためのアドレス変換インターフェースを含む。追加されたポート、アドレス変換機能、およびアドレス変換インターフェースは、PLクロックドメイン(clock domain)において動作し、クロックドメインクロッシング(clock domain crossing)によるレイテンシをなくす。これらおよびさらなる態様は、図面に関して以下で説明される。
【0013】
図1は、一例による、プログラマブルIC1を示すブロック図である。プログラマブルIC1は、処理システム2と、プログラマブル論理部3と、ネットワークオンチップ(NoC)82と、構成論理部25と、構成メモリ26とを含む。プログラマブルIC1は、不揮発性メモリ27、DRAM28、および他の回路29など、外部回路に結合され得る。プログラマブル論理部3は、論理セル30と、サポート回路31と、プログラマブル相互接続32とを含む。論理セル30は、複数の入力の一般的な論理関数を実装するように構成され得る回路を含む。サポート回路31は、トランシーバ、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用の回路を含む。論理セルとサポート回路31とは、プログラマブル相互接続32を使用して相互接続され得る。論理セル30をプログラムするための情報と、サポート回路31のパラメータを設定するための情報と、プログラマブル相互接続32をプログラムするための情報とが、構成論理部25によって構成メモリ26に記憶される。構成論理部25は、不揮発性メモリ27または任意の他のソース(たとえば、DRAM28または他の回路29)から構成データを取得することができる。処理システム2は、(1つまたは複数の)マイクロプロセッサ、メモリ、サポート回路、IO回路などを含むことができる。本明細書で説明される例では、処理システム2は、システムメモリ管理ユニット(SMMU)80を含む。SMMU80は、内蔵MMUを有しないPSおよびPLマスタによる使用のための別個のメモリ管理ユニットである。NoC82は、プログラマブルIC1中の構成されたおよび/またはハード化された回路間の物理および論理接続を提供するための回路を含む。
【0014】
図2は、一例による、プログラマブルIC1のシステムオンチップ(SoC)実装形態を示すブロック図である。本例では、プログラマブルIC1は、処理システム2とプログラマブル論理部3とを含む。処理システム2は、リアルタイム処理ユニット(RPU)4、アプリケーション処理ユニット(APU)5、グラフィックス処理ユニット(GPU)6、構成およびセキュリティユニット(CSU)12、プラットフォーム管理ユニット(PMU)122など、様々な処理ユニットを含む。処理システム2は、オンチップメモリ(OCM)14、トランシーバ7、周辺機器8、相互接続16、DMA回路9、メモリコントローラ10、周辺機器15、および多重化IO(MIO)回路13など、様々なサポート回路をも含む。処理ユニットとサポート回路とは、相互接続16によって相互接続される。PL3も、相互接続16に結合される。トランシーバ7は、外部ピン24に結合される。PL3は、外部ピン23に結合される。メモリコントローラ10は、外部ピン22に結合される。MIO13は、外部ピン20に結合される。PS2は、一般に、外部ピン21に結合される。APU5は、CPU17と、メモリ18と、サポート回路19とを含むことができる。APU5は、L1およびL2キャッシュなどを含む、他の回路を含むことができる。RPU4は、L1キャッシュなど、追加の回路を含むことができる。相互接続16は、キャッシュコヒーレント相互接続(CCI)81を含むことができる。本例では、相互接続16は、メモリ仮想化のための埋込みSMMU80を含む。
【0015】
PS2を参照すると、処理ユニットの各々が、1つまたは複数の中央処理ユニット(CPU)と、メモリ、割込みコントローラ、ダイレクトメモリアクセス(DMA)コントローラ、メモリ管理ユニット(MMU)、浮動小数点ユニット(FPU)など、関連する回路とを含む。相互接続16は、処理ユニットを相互接続し、ならびにPS2中の他の構成要素を処理ユニットに相互接続するように構成された、様々なスイッチ、バス、通信リンクなどを含む。一例では、相互接続16は、マスタクライアントとスレーブクライアントとの間でアドレス、データ、および応答トランザクションを通信するために、高度拡張可能インターフェース(AXI)チャネルを使用する。たとえば、相互接続16は、AXIコヒーレンシ拡張(ACE)と、AXIコヒーレンシ拡張ライト(ACE-Lite)と、AXI4と、AXI4-Liteと、AXI4-Streamとを含む、ARM(登録商標)アドバンストマイクロコントローラバスアーキテクチャ(AMBA)4仕様において定義されているバス/インターフェースを実装することができる。相互接続16は、アドレス、データ、および応答トランザクションを通信するためにAXIチャネルを使用するものとして本明細書で説明されるが、他のタイプのオンチップ相互接続が使用され得ることを、当業者は諒解されよう。相互接続16は、サービス品質(QoS)、デバッグ、およびテスト監視のための相互接続通信能力およびオーバーレイの完全なアレイを実装することができる。CCI81は、相互接続16の一部とコヒーレンシ機能とを組み合わせる。CCI81は、完全なコヒーレンシのためのポートを提供することができ、CCI81に接続されたコヒーレントマスタが、互いのキャッシュをスヌープすることができる。CCI81はまた、入出力(IO)コヒーレンシを提供することができ、IOコヒーレントマスタが、APU5キャッシュをスヌープすることができ、ソフトウェアがAPU5キャッシュをフラッシュすることによってコヒーレンシを提供する必要を回避する。SMMU80は、以下でさらに説明される。
【0016】
OCM14は、PS2全体に分散され得る1つまたは複数のRAMモジュールを含む。たとえば、OCM14は、バッテリーバックアップRAM(BBRAM:battery backed RAM)、密結合メモリ(TCM)などを含むことができる。メモリコントローラ10は、外部DRAMにアクセスするためのDRAMインターフェースを含むことができる。周辺機器8、15は、PS2へのインターフェースを提供する1つまたは複数の構成要素を含むことができる。たとえば、周辺機器132は、グラフィックス処理ユニット(GPU)、ディスプレイインターフェース(たとえば、DisplayPort、高精細度マルチメディアインターフェース(HDMI)ポートなど)、ユニバーサルシリアルバス(USB)ポート、イーサネットポート、ユニバーサル非同期トランシーバ(UART)ポート、シリアル周辺インターフェース(SPI)ポート、汎用IO(GPIO)ポート、シリアルアドバンストテクノロジアタッチメント(SATA)ポート、PCIeポートなどを含むことができる。周辺機器15は、MIO13に結合され得る。周辺機器8は、トランシーバ7に結合され得る。トランシーバ7は、シリアライザ/デシリアライザ(SERDES)回路、MGTなどを含むことができる。
【0017】
図3は、トランシーバ37、構成可能論理ブロック(「CLB」)33、ランダムアクセスメモリブロック(「BRAM」)34、入出力ブロック(「IOB」)36、構成およびクロッキング論理部(「CONFIG/CLOCKS」)42、デジタル信号処理ブロック(「DSP」)35、特殊な入出力ブロック(「I/O」)41(たとえば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログデジタルコンバータ、システム監視論理部などの他のプログラマブル論理部39を含む、多数の異なるプログラマブルタイルを含むプログラマブルIC1のプログラマブル論理部3を示す。プログラマブル論理部3はまた、PCIeインターフェース40、アナログデジタルコンバータ(ADC)38などを含むことができる。
【0018】
いくつかのプログラマブル論理部では、各プログラマブルタイルは、図3の上部に含まれる例によって示されているように、同じタイル内のプログラマブル論理要素の入力および出力端子48への接続を有する少なくとも1つのプログラマブル相互接続要素(「INT」)43を含むことができる。各プログラマブル相互接続要素43は、同じタイルまたは(1つまたは複数の)他のタイル中の(1つまたは複数の)隣接するプログラマブル相互接続要素の相互接続セグメント49への接続をも含むことができる。各プログラマブル相互接続要素43は、論理ブロック(図示せず)間の一般的なルーティングリソースの相互接続セグメント50への接続をも含むことができる。一般的なルーティングリソースは、相互接続セグメント(たとえば、相互接続セグメント50)のトラックを備える論理ブロック(図示せず)と、相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含むことができる。一般的なルーティングリソースの相互接続セグメント(たとえば、相互接続セグメント50)は、1つまたは複数の論理ブロックにわたることができる。一般的なルーティングリソースとともにとられるプログラマブル相互接続要素43は、示されているプログラマブル論理部のためのプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0019】
例示的な一実装形態では、CLB33は、ユーザ論理部を実装するようにプログラムされ得る構成可能論理要素(「CLE」)44と、単一のプログラマブル相互接続要素(「INT」)43とを含むことができる。BRAM34は、1つまたは複数のプログラマブル相互接続要素に加えてBRAM論理要素(「BRL」)45を含むことができる。典型的には、タイル中に含まれる相互接続要素の数は、タイルの高さに依存する。描かれている例では、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数(たとえば、4つ)も使用され得る。DSPタイル35は、適切な数のプログラマブル相互接続要素に加えてDSP論理要素(「DSPL」)46を含むことができる。IOB36は、たとえば、プログラマブル相互接続要素43の1つのインスタンスに加えて入出力論理要素(「IOL」)47の2つのインスタンスを含むことができる。当業者に明らかになるように、たとえばI/O論理要素47に接続される実際のI/Oパッドは、典型的に、入出力論理要素47のエリアに制限されない。
【0020】
描かれている例では、(図3に示されている)ダイの中心の近くの水平方向のエリアが、構成、クロック、および他の制御論理部のために使用される。この水平方向のエリアまたは列から延びる垂直方向の列51が、プログラマブル論理部の幅にわたってクロックおよび構成信号を分散させるために使用される。
【0021】
図3に示されているアーキテクチャを利用するあるプログラマブル論理部は、プログラマブル論理部の大部分を構築する規則的な列状構造を損なう追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用の論理部であり得る。
【0022】
図3は、例示的なプログラマブル論理アーキテクチャを示すことを意図されているにすぎないことに留意されたい。たとえば、1つの行中の論理ブロックの数、行の相対幅、行の数および順序、行中に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および図3の上部に含まれる相互接続/論理実装形態は、例にすぎない。たとえば、実際のプログラマブル論理部では、ユーザ論理部の効率的な実装を容易にするために、CLBが現れるところならどこでも、CLBの2つ以上の隣接する行が典型的に含まれるが、隣接するCLB行の数は、プログラマブル論理部の全体的なサイズによって変動する。
【0023】
図4は、一例による、プログラマブルIC1中のPS-PLシステム400を示すブロック図である。PS-PLシステム400は、PS2と、NoC82と、PL3とを含む。PS2は、APU5と、SMMU80と、CCI81と、非コヒーレント相互接続408と、1つまたは複数のPSコヒーレントマスタ404と、1つまたは複数のPS非コヒーレントマスタ402とを含む。APU5、SMMU80、およびPL3は、CCI81に結合される。SMMU80は、非コヒーレント相互接続408に結合される。(1つまたは複数の)PSコヒーレントマスタ404、(1つまたは複数の)PS非コヒーレントマスタ402、およびPL3は、SMMU80に結合される。SMMU80は、複数のPS変換バッファ回路(変換バッファユニット(TBU)と呼ばれる)410と、アドレス変換器回路(AT)412と、AT TBU411とを含む。PL3は、PL AXI ACEマスタインターフェース416、PLコヒーレントマスタインターフェース418、およびPL非コヒーレントマスタインターフェース420を通して、CCI81に結合される。PL3はまた、ATインターフェース414を通して、SMMU80に結合される。CCI81、非コヒーレント相互接続408、およびPL3は、NoC82に結合される。PL3は、コヒーレントおよび/または非コヒーレントマスタを含むことができる、1つまたは複数のPLマスタ422を含む。PLマスタ422は、PL3中のハード化された回路、またはPL3のプログラマブル論理部で構成された回路であり得る。
【0024】
APU5は、キャッシュメモリ(キャッシュ424)と、メモリ管理ユニット(MMU)426とを含む。MMU426は、メモリのページングの形態でメモリ管理を実装する。MMU426は、APU5によって行われるメモリアクセスのためのアドレス変換およびアクセス許可を制御する。MMU426は、(「変換方式」とも呼ばれる)特権レベルに基づく複数のアドレス変換方式を実装する。各変換方式は、一般に、入力アドレス(IA)をとり、定義されたアクセス許可に基づいて許可された場合、出力アドレス(OA)を返す。(たとえば、アクセス許可の違反により)アドレス変換が実施され得ない場合、MMU426は、例外を生成する。MMU426は、APU5中の複数のシステムレジスタによって制御される。MMU426は、APU5による使用のためのアドレス変換をキャッシュする変換索引バッファ(TLB)を含むことができる。SMMU80は、MMU426と同様に動作し、同じアドレス変換方式を実装する。
【0025】
アドレス変換方式の1つのタイプは、仮想アドレス空間において仮想アドレス(VA)を受信し、物理アドレス空間において物理アドレス(PA)を出力する、アドレス変換の単一のステージを含む。仮想アドレス空間は、ソフトウェアによって管理されるフラットな論理アドレス空間である。物理アドレス空間は、メモリを含む物理メモリマップを含む。別のタイプの変換方式は、アドレス変換の2つのステージを含む。アドレス変換の第1のステージは、VAを受信し、中間物理アドレス空間において中間物理アドレス(IPA)を出力する。アドレス変換の第2のステージは、IPAを受信し、PAを出力する。IPAアドレス空間は、ソフトウェアによって管理されるフラットな論理アドレス空間である。
【0026】
CCI81は、それに接続されたコヒーレントマスタ間のハードウェアキャッシュコヒーレンシを提供する。非コヒーレント相互接続408は、キャッシュコヒーレンシ機能を有しない。本例では、コヒーレントマスタは、APU5と、(1つまたは複数の)PSコヒーレントマスタ404と、随意に(1つまたは複数の)PLマスタ422とを含む。(1つまたは複数の)PS非コヒーレントマスタ402の各々、および(1つまたは複数の)任意の非コヒーレントPLマスタ422は、キャッシュコヒーレンシ機能性を必要とせず、非コヒーレント相互接続408を通して通信することができる。
【0027】
(1つまたは複数の)PSコヒーレントマスタ404とPLコヒーレントマスタインターフェース418とは、PS2のクロックドメインにおいて動作するPS TBU410を通して、SMMU80に結合される。ATインターフェース414は、PL3のクロックドメインにおいて動作するAT TBU411に結合される。AT412は、アドレス変換インターフェース414上の要求/応答通信を使用して、PLマスタ422のためのアドレス変換を実施するように構成される。特に、例では、(1つまたは複数の)PLマスタ422は、仮想アドレスを変換するために、PS2を通して(アドレス変換要求以外の)PLマスタ422のトラフィックをダイレクトしない。さらに、アドレス変換要求以外のトラフィックは、ATインターフェース414を通って流れない。AT412、ATインターフェース414、およびAT TBU411は、PL3のクロックドメインにおいて動作し、したがって、クロックドメインクロッシングによるレイテンシをなくす。
【0028】
図5は、例による、SMMU80へのATインターフェース414を利用する例示的なシステム500を示すブロック図である。本例では、PL3は、カーネル回路502と、PL MMU504と、PLキャッシュメモリ(PLキャッシュ506)とを有するPLマスタ422を含む。カーネル回路502は、ハード化された回路、またはプログラマブル論理部で構成された回路であり得る。同様に、PL MMU504は、ハード化された回路、またはプログラマブル論理部で構成された回路であり得る。PLキャッシュ506は、PL3中に配設されたランダムアクセスメモリ(RAM)(たとえば、BRAM)を備える。PL MMU504は、ATインターフェース414を通してPS2中のSMMU80に結合される。PLキャッシュ506は、PL ACEマスタインターフェース416を通してPS2に結合される。
【0029】
動作中、カーネル回路502は、PL MMU504に、仮想アドレス(VA)を変換するようにとの要求を出す。PL MMU504は、ローカルTLBを含まず、したがって、本例では、アドレス変換をキャッシュしない。むしろ、PL MMU504は、AT要求を使用して、ATインターフェース414を通してSMMU80にすべてのVA変換要求をフォワーディングする。したがって、カーネル回路502において分散仮想メモリ(DVM)トランザクションサポートの必要がない。
【0030】
図6は、一例による、SMMU80を示すブロック図である。SMMU80は、(本明細書では変換制御ユニット(TCU)と呼ばれる)変換制御回路602と、PS TBU410と、クロックドメインクロッシングブリッジ606と、AT412と、AT TBU411とを含む。AT412は、VA要求インターフェース(IF)608と、アドレス変換(AT)AXIマスタ610と、AT AXIスレーブ614と、PA応答IF616とを含む。VA要求IF608、AT AXIマスタ610、AT TBU411、AT AXIスレーブ614、およびPA応答IF616は、(クロックドメイン617として示される)PLのクロックドメインにおいて動作する。TCU602およびPS TBU410は、PS2のクロックドメインにおいて動作する。クロックドメインクロッシングブリッジ606は、TCU 602とAT TBU411との間の通信のために、PS2のクロックドメインとPLのクロックドメインとの間で変換するように構成される。
【0031】
一例では、ATインターフェース414は、読取り変換要求および書込み変換要求について1つずつ、2つの独立チャネルを含む。読取りチャネルおよび書込みチャネルの各々は、AT要求サブチャネルとAT応答サブチャネルとを含む。いくつかの例では、各読取りおよび書込みチャネルは、AT完了サブチャネルをさらに含む。VA要求IF608は、AT要求サブチャネル618から受信するように構成される。PA応答IF616は、AT応答サブチャネル620上で送信するように構成される。PA応答IF616はまた、(存在する場合)AT完了サブチャネル622上で受信するように構成される。
【0032】
AT要求サブチャネルは、仮想アドレスのアドレス変換を要求するために使用される。一例では、AT要求サブチャネルは、信号の中でも、アドレス信号とAXI ID信号とを含む。アドレス信号は、変換されるべき仮想アドレスを供給する。AXI ID信号は、AT要求のための識別子を供給する。一例では、AT要求サブチャネルは、PLマスタ422とVA要求IF608との間のAXIストリーミングインターフェースを使用して実装される。
【0033】
AT応答サブチャネルは、PLマスタ422に、変換されたアドレスおよび関係するパラメータを提供するために使用される。一例では、AT応答サブチャネルは、信号の中でも、変換されたアドレス信号と、AXI ID信号と、エラー信号とを含む。変換されたアドレス信号は、要求された仮想アドレスに対する変換されたアドレスを供給する。AXI ID信号は、対応するAT要求のための識別子を供給する。エラー信号は、変換エラーが発生したかどうかを指示する。一例では、AT応答サブチャネルは、PLマスタ422とPA応答IF616との間のAXIストリーミングインターフェースを使用して実装される。
【0034】
AT完了サブチャネルは、PLマスタ422が変換されたアドレスを使用してトランザクション(たとえば、メモリに対する読取りまたは書込みトランザクション)を完了したとAT412に通知するために、PLマスタ422によって使用され得る。一例では、AT完了サブチャネルは、対応するAT要求のための識別子を供給するAXI ID信号を含む。一例では、AT完了サブチャネルは、PLマスタ422とPA応答IF616との間のAXIストリーミングインターフェースを使用して実装される。AT完了サブチャネルは、ページテーブルが動的に変更され、TBUとTCUとの間のDVMメッセージングが、TBUエントリを無効にするために使用され得るとき、使用され得る。完了サブチャネルがなければ、PLマスタ422の変換されたトランザクションと、システムレベルにおいて行われる可能な仮想メモリ再構成との間で、競合状態の危険がある。別の例では、使用事例が静的仮想メモリ構成のみを伴う場合、DVM無効化イベントは予想されない。この例では、完了フェーズを回避すること(たとえば、完了バイパス)によって、ある程度の性能向上が達成され得る。したがって、完了フェーズの実装およびAT完了サブチャネルの使用は、仮想メモリ構成が静的であるのか動的であるのかに応じて、随意である。
【0035】
図7は、一例による、SMMU80においてPLマスタ422からのAT要求を処理する方法700を示す流れ図である。方法700の態様は、上記で説明された図4図6を参照しながら理解され得る。方法700は、ステップ702において始まり、VA要求IF608が、PLマスタ422中のPL MMU504からのAT要求を受け入れる。VA要求IF608は、AT AXIマスタ610にAT要求をフォワーディングする。
【0036】
ステップ704において、AT AXIマスタ610は、要求されたアドレスを使用してAXIトランザクションを作成する。AT AXIマスタ610は、AT TBU411の入口ポートに、AT要求をカプセル化するAXIトランザクションを送る。ステップ706において、AT TBU411は、アドレス変換を実施する。たとえば、AT TBU411が、要求された仮想アドレスのための有効なエントリを含む場合、TBU411は、そのTLBから変換されたアドレスを取得する。AT TBU411が、仮想アドレスのための有効なエントリを含まない場合、AT TBU411は、クロックドメインクロッシングブリッジ606を通してTCU602に要求をフォワーディングする。TCU602は、変換されたアドレスを取得するために、ページテーブルに基づいてアドレス変換機能を実施する。TCU602は、クロックドメインクロッシングブリッジ606を通して、AT TBU411に変換されたアドレスを返す。
【0037】
ステップ707において、AT AXIスレーブ614は、AT TBU411からの変換されたアドレスを有する発信AXIトランザクションをキャプチャする。ステップ708において、PA応答IF616は、発信AXIトランザクションから、変換されたアドレスを抽出する。PA応答IF616は、AT応答中でPL MMU504に変換されたアドレスを返す。PL MMU504は、次に、カーネル回路502に変換されたアドレスを返す。ステップ710において、カーネル回路502は、変換されたアドレスを使用し、トランザクション(たとえば、読取りまたは書込みメモリトランザクション)を完了する。
【0038】
ステップ712において、PL MMU504は、ATインターフェース414を通してPA応答IF616にAT完了メッセージを送る。PA応答IF616は、AXIスレーブ614に完了メッセージをフォワーディングする。ステップ714において、AXIスレーブ614は、AT TBU411に発信AXIトランザクションへのAXI応答を提供する。ステップ716において、AT TBU411は、AXI応答を受け入れて、トランザクションを終了する。
【0039】
図8は、一例による、障害を処理する方法800を示す流れ図である。方法800の態様は、上記で説明された図4図6を参照しながら理解され得る。方法800は、ステップ802において始まり、TCU602は、変換要求に応答して、障害(たとえば、ページフォールト)を決定する。ステップ804において、AT TBU411は、AT要求に対するスレーブエラー応答を出す。ステップ806において、AXIスレーブ614は、エラーを指示するために、PLマスタ422にAT応答を出す。したがって、変換要求がSMMU80によって完了され得ない場合、AT TBU411は、AXI要求に対応するスレーブエラー応答を出すことになる。AXIスレーブ614は、(成功した変換のための応答に加えて)そのようなスレーブエラー応答についてAT TBU411を監視する。AXIスレーブ614は、両方の起こり得る結果に基づいて応答を生成し、AXI順序付けルールが維持されなければならない。PLマスタ422は、変換の失敗の場合、AT完了を送ってはならない。
【0040】
たとえば、同じAXI IDをもつ2つの相次ぐ(back-to-back)AT要求、R1およびR2を仮定する。R1は、失敗し、AT TBU411から出力されたスレーブエラーとして現れる。R2は、成功し、AT TBU411から出力された変換された要求として現れる。AT TBU411インターフェースにおいてどちらが最初に現れることになるかは知られていない。正しいAXI順序付けが、AXI要求をタグ付けすることと、必要に応じて並べ替えることとによって、達成され得る。したがって、図7を参照すると、AXIマスタ610は、AT要求に応答してAXIトランザクションを作成するとき、作成されたAXIトランザクションをタグ付けすることができる(ステップ705)。たとえば、3ビットタグは、最高8つの未解決のトランザクションを追跡するために使用され得る。AXIスレーブ614は、AXIマスタ610によって追加されたタグに基づいて、応答の順序を決定することができる。したがって、ステップ808において、AXIスレーブ613は、タグに基づいて必要に応じてAXI応答を並べ替える。
【0041】
別の例では、AXIマスタ610は、AXI要求をタグ付けしない。むしろ、PLマスタ422は、AT要求ごとに一意のAXI IDを使用しなければならず、したがって、順不同で応答を受け入れることが可能である。成功した変換と障害エラーとを同じAT応答サブチャネル上に一緒に多重化するのではなく、AXIスレーブ614は、PLマスタ422にエラー応答を提供するための別個のエラー応答サブチャネルを提供することができる(ステップ810)。
【0042】
一例では、プログラマブル集積回路(IC)は、プロセッサと、マスタ回路と、システムメモリ管理ユニット(SMMU)とを有する処理システムであって、SMMUが、マスタ回路に結合された第1の変換バッファユニット(TBU)と、アドレス変換(AT)回路と、AT回路に結合されたATインターフェースと、AT回路に結合された第2のTBUとを含む、処理システムと、ATインターフェースを通してSMMU中のAT回路に結合されたプログラマブル論理部とを含む。
【0043】
一例では、プログラマブルICにおいて、AT回路および第2のTBUは、プログラマブル論理部のクロックドメインにおいて動作し、第1のTBUは、処理システムのクロックドメインにおいて動作する。
【0044】
一例では、プログラマブルICにおいて、SMMUは、変換制御ユニット(TCU)と、第2のTBUとTCUとの間に結合されたクロックドメインクロッシングブリッジとをさらに含む。
【0045】
一例では、プログラマブルICにおいて、AT回路は、ATインターフェースに結合された仮想アドレス(VA)要求インターフェースと、VA要求インターフェースと第2のTBUとの間に結合されたATマスタ回路と、ATインターフェースに結合された物理アドレス(PA)応答インターフェースと、PA応答インターフェースと第2のTBUとの間に結合されたATスレーブ回路とを備える。
【0046】
一例では、プログラマブルICにおいて、ATインターフェースは、VA要求インターフェースに結合されたAT要求サブチャネルと、PA応答インターフェースに結合されたAT応答サブチャネルとを含む。
【0047】
一例では、プログラマブルICにおいて、ATインターフェースは、PA応答インターフェースに結合されたAT完了サブチャネルをさらに含む。
【0048】
一例では、プログラマブル集積回路(IC)におけるアドレス変換の方法が、プログラマブルICの処理システム(PS)中のシステムメモリ管理ユニット(SMMU)において、プログラマブルICのプログラマブル論理部(PL)中のマスタ回路から、仮想アドレスを変換するようにとの要求を受信することと、SMMUにおいて仮想アドレスを変換することと、SMMUからPL中のマスタ回路に、変換されたアドレスを送ることとを含む。
【0049】
一例では、受信するステップは、SMMU中のアドレス変換(AT)回路において、仮想アドレスを使用してトランザクションを作成することと、SMMU中の変換バッファユニット(TBU)にトランザクションを送ることとを含む。
【0050】
一例では、送るステップは、変換されたアドレスを有する、TBUからの発信トランザクションをキャプチャすることと、発信トランザクションから、変換されたアドレスを抽出することと、AT回路からPL中のマスタ回路に、変換されたアドレスを返すこととを含む。
【0051】
一例では、本方法は、PL中のマスタ回路において、変換されたアドレスを使用することと、PL中のマスタ回路からSMMUに完了メッセージを提供することとをさらに含む。
【0052】
一例では、本方法は、AT回路から、TBUに発信トランザクションへの応答を提供することをさらに含む。
【0053】
一例では、本方法は、マスタ回路から、他の仮想アドレスを変換するようにとの他の要求をSMMUにおいて受信することと、他の要求に応答してSMMUにおいてエラーを決定することと、SMMUからマスタ回路にエラー指示を送ることとをさらに含む。
【0054】
上記は特定の例を対象とするが、他のおよびさらなる例がその基本的範囲から逸脱することなく考案され得、その範囲は以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7
図8