(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-06
(45)【発行日】2023-09-14
(54)【発明の名称】システムオンチップのためのメモリサブシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20230907BHJP
【FI】
G06F12/00 550E
G06F12/00 550K
(21)【出願番号】P 2020543222
(86)(22)【出願日】2019-02-13
(86)【国際出願番号】 US2019017896
(87)【国際公開番号】W WO2019160988
(87)【国際公開日】2019-08-22
【審査請求日】2022-01-12
(32)【優先日】2018-02-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】アーヴェル, イーガル
(72)【発明者】
【氏名】スワーブリック, イアン エー.
(72)【発明者】
【氏名】アフメド, サギール
【審査官】松平 英
(56)【参考文献】
【文献】特開2009-187552(JP,A)
【文献】特表2016-509261(JP,A)
【文献】特開2012-074042(JP,A)
【文献】特表2017-517810(JP,A)
【文献】国際公開第2017/105727(WO,A1)
【文献】米国特許出願公開第2013/0073878(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26-1/3296
12/00-12/06
13/16-13/18
15/16-15/177
15/78
(57)【特許請求の範囲】
【請求項1】
チップ上の第1の電力領域中の第1のマスタ回路と、
前記チップ上の第2の電力領域中の第2のマスタ回路と、
前記チップ上の第3の電力領域中の構成可能な相互接続ネットワークと、
前記チップ上の第4の電力領域中の第1のメモリコントローラと
を備える集積回路であって、前記第1のマスタ回路および前記第2のマスタ回路が、それぞれ前記第1のメモリコントローラと前記構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成され、前記第1の電力領域、前記第2の電力領域、および前記第3の電力領域がそれぞれ前記第4の電力領域から分離し、独立して
おり、
前記チップ上の第5の電力領域中の第2のメモリコントローラをさらに備え、前記第1のマスタ回路および前記第2のマスタ回路が、それぞれ前記第2のメモリコントローラと前記構成可能な相互接続ネットワークとを介して前記メモリにアクセスするように構成され、前記第1の電力領域および前記第2の電力領域がそれぞれ前記第5の電力領域から分離し、独立している、集積回路。
【請求項2】
前記第1の電力領域が前記第2の電力領域から分離し、独立している、請求項1に記載の集積回路。
【請求項3】
前記第1のメモリコントローラがマスタ回路中に含まれない、請求項1または2に記載の集積回路。
【請求項4】
前記第1のメモリコントローラが、前記第1のメモリコントローラに専用の物理ブロック中にある、請求項1から3のいずれか一項に記載の集積回路。
【請求項5】
前記第1のメモリコントローラが前記メモリの第1のアドレス範囲にアクセスし、
前記第2のメモリコントローラが前記メモリの第2のアドレス範囲にアクセスし、
前記第1のアドレス範囲が前記第2のアドレス範囲とは異なる、請求項
1に記載の集積回路。
【請求項6】
前記第1のメモリコントローラおよび前記第2のメモリコントローラが、前記メモリへのアクセスをインターリーブするように構成された、請求項
5に記載の集積回路。
【請求項7】
前記第1のメモリコントローラが、前記構成可能な相互接続ネットワークに接続された複数のポートを含む、請求項1から
6のいずれか一項に記載の集積回路。
【請求項8】
前記第1のメモリコントローラが、前記構成可能な相互接続ネットワークの物理チャネルのそれぞれの仮想チャネルを介して複数のトラフィッククラスを処理することを可能にするように構成された、請求項1から
7のいずれか一項に記載の集積回路。
【請求項9】
集積回路を動作させる方法であって、前記方法は、
前記集積回路の複数のマスタ回路の各々を複数の電力モードのうちの1つに選択的に入れることと、
前記複数のマスタ回路のうちの少なくとも1つによって、前記複数のマスタ回路の他のマスタ回路の各々の前記複数の電力モードのうちの前記選択された電力モードと無関係に、前記集積回路の第1のメモリコントローラと、前記集積回路の構成可能な相互接続ネットワークとを介してメモリにアクセスすることと
、
前記集積回路の第2のメモリコントローラと前記構成可能な相互接続ネットワークとを介して前記複数のマスタ回路のうちの少なくとも1つによってメモリにアクセスすることと
を含み、前記複数のマスタ回路の各マスタ回路が、前記第1のメモリコントローラと前記構成可能な相互接続ネットワークとを介して前記メモリにアクセスするように構成され、前記第1のメモリコントローラが、前記複数のマスタ回路および前記構成可能な相互接続ネットワークの各電力領域から分離した電力領域中にあ
り、前記第2のメモリコントローラが、前記複数のマスタ回路および前記構成可能な相互接続ネットワークの各電力領域から分離した電力領域中にある、集積回路を動作させる方法。
【請求項10】
前記第1のメモリコントローラがマスタ回路中に含まれない、請求項
9に記載の方法。
【請求項11】
前記構成可能な相互接続ネットワークを介して前記複数のマスタ回路のうちの前記少なくとも1つによって前記メモリにアクセスすることが、前記構成可能な相互接続ネットワークの物理チャネルの複数の仮想チャネルのうちの少なくとも1つを介して前記複数のマスタ回路のうちの前記少なくとも1つと前記第1のメモリコントローラとの間で通信することを含む、請求項
9または10に記載の方法。
【請求項12】
チップ上のプログラマブル論理領域と、
前記チップ上の処理システムと、
前記チップ上の構成可能な相互接続ネットワークと、
前記チップ上の
第1のメモリコントローラと
、
前記チップ上の第2のメモリコントローラと
を備える集積回路であって、前記プログラマブル論理領域および前記処理システムが、それぞれ前記
第1のメモリコントローラと前記構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成され、前記
第1のメモリコントローラが配設された電力領域が、前記プログラマブル論理領域、前記処理システム、および前記構成可能な相互接続ネットワークのいずれかが配設された各電力領域から分離し、独立して
おり、
前記プログラマブル論理領域および前記処理システムが、それぞれ前記第2のメモリコントローラと前記構成可能な相互接続ネットワークとを介して前記メモリにアクセスするように構成され、前記第2のメモリコントローラが配設された電力領域が、前記プログラマブル論理領域、前記処理システム、および前記構成可能な相互接続ネットワークのいずれかが配設された各電力領域から分離し、独立しており、
前記第1のメモリコントローラがマスタ回路中に含まれず、前記第1のメモリコントローラが、前記第1のメモリコントローラに専用の物理ブロック中にある、集積回路。
【請求項13】
チップ
上に配設された
第1のメモリコントローラと、
前記チップ上のマスタ回路と
を備える集積回路であって、
前記マスタ回路の各マスタ回路が、前記
第1のメモリコントローラを介してメモリにアクセスするように構成され、
前記マスタ回路の第1のマスタ回路が、前記マスタ回路の第2のマスタ回路が配設された電力領域から分離し、独立している電力領域中に配設され、
前記第1のマスタ回路および前記第2のマスタ回路が、前記第1のメモリコントローラと構成可能な相互接続ネットワークとを介して前記メモリにアクセスするように構成され、前記第1のメモリコントローラ、前記構成可能な相互接続ネットワーク、前記第1のマスタ回路および前記第2のマスタ回路が、分離し、独立している電力領域中にあり、
前記第1のマスタ回路および前記第2のマスタ回路が、第2のメモリコントローラと前記構成可能な相互接続ネットワークとを介して前記メモリにアクセスするように構成され、前記第2のメモリコントローラ、前記構成可能な相互接続ネットワーク、前記第1のマスタ回路および前記第2のマスタ回路が、分離し、独立している電力領域中にあり、
前記第1のメモリコントローラがマスタ回路中に含まれず、前記第1のメモリコントローラが、前記第1のメモリコントローラに専用の物理ブロック中にある、集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般にシステムオンチップ(SoC)に関し、特に、1つまたは複数のメモリコントローラを含むメモリサブシステムを含むSoCに関する。
【背景技術】
【0002】
集積回路技術の進歩は、プロセッサコア、メモリコントローラ、およびバスなどを含む、システム全体を単一の半導体チップに埋め込むことを可能にした。このタイプのチップは、一般的に、システムオンチップ(SoC)と呼ばれる。他のSoCは、異なるアプリケーションのためにその中に埋め込まれた異なる構成要素を有し得る。SoCは、旧来のプロセッサベース設計に勝る多くの利点を与える。単一のデバイスへの構成要素の統合は、サイズを縮小しながら全体の速度を高めるので、SoCはマルチチップ設計の魅力的な代替である。また、ASIC(特定用途向け集積回路)設計は著しくより長い開発時間およびより大きい開発コストを有する傾向があるので、SoCは、ASICなど、完全にカスタマイズされたチップの魅力的な代替である。プログラマブル論理とSoCの両方の利益を得ることができるプログラマブル半導体チップを実現するために、プログラマブル論理を含む構成可能なSoC(CSoC)が開発された。
【発明の概要】
【0003】
本開示の例は、一般に、メモリサブシステムを含む、システムオンチップ(SoC)など、集積回路に関する。様々な例が、メモリコントローラを集積回路のマスタ回路から独立して動作させることを可能にすることができ、スケーラブルで統一されたメモリサブシステムを可能にすることができる。
【0004】
本開示の一例は集積回路である。集積回路は、チップ上の第1の電力領域中の第1のマスタ回路と、チップ上の第2の電力領域中の第2のマスタ回路と、チップ上の第3の電力領域中の第1のメモリコントローラとを含む。第1のマスタ回路および第2のマスタ回路はそれぞれ、第1のメモリコントローラを介してメモリにアクセスするように構成される。第1の電力領域および第2の電力領域はそれぞれ、第3の電力領域から分離し、独立している。
【0005】
本開示の別の例は、集積回路を動作させる方法である。集積回路の複数のマスタ回路の各々が複数の電力モードのうちの1つに選択的に入れられる。メモリが、複数のマスタ回路のうちの少なくとも1つによって、複数のマスタ回路の他のマスタ回路の各々の複数の電力モードのうちの選択された電力モードと無関係に、集積回路の第1のメモリコントローラを介してアクセスされる。第1のメモリコントローラは、複数のマスタ回路の各それぞれの電力領域から分離した電力領域中にある。
【0006】
本開示のまた別の例は集積回路である。集積回路は、チップ上の処理システムと、チップ上のプログラマブル論理と、チップ上の構成可能な相互接続ネットワークと、チップ上の第1のメモリコントローラと、チップ上の管理ユニットとを含む。処理システムおよびプログラマブル論理はそれぞれ、構成可能な相互接続ネットワークを介して第1のメモリコントローラに通信可能に結合される。処理システムおよびプログラマブル論理はそれぞれ、第1のメモリコントローラと構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成される。管理ユニットは、第1のメモリコントローラの動作から独立して処理システムおよびプログラマブル論理のそれぞれの電力モードを制御することが可能である。
【0007】
これらおよび他の態様は、以下の詳細な説明を参照しながら理解され得る。
【0008】
上記の特徴が詳細に理解され得るように、上記で手短に要約された、より詳細な説明が、そのうちのいくつかが添付の図面に示されている例示的な実装形態を参照することによって得られ得る。しかしながら、添付の図面は例示的な実装形態のみを示し、したがって、他の実装形態の範囲を限定するものと考えられるべきでないことに留意されたい。
【図面の簡単な説明】
【0009】
【
図1】本開示のいくつかの例による、集積回路(IC)のブロック図である。
【
図2】本開示のいくつかの例による、IC中の電力管理およびメモリアクセスのためのフローチャートである。
【
図3】本開示のいくつかの例による、ネットワークオンチップ(NoC)を示すブロック図である。
【
図4】本開示のいくつかの例による、NoCによるエンドポイント回路間の接続を示すブロック図である。
【
図5】本開示のいくつかの例による、NoCに接続された4つのポートをもつメモリコントローラを含むICの部分のブロック図である。
【発明を実施するための形態】
【0010】
理解を促すために、可能な場合、図に共通する同一の要素を指定するために同一の参照番号が使用されている。1つの例の要素は他の例中に有利に組み込まれ得ることが企図される。
【0011】
本開示の例は、メモリサブシステムを含む、システムオンチップ(SoC)など、集積回路を与える。一般に、いくつかの例では、メモリサブシステムは、マスタモジュールの電力領域から分離し、独立した電力領域中にある、1つまたは複数のメモリコントローラを含む。したがって、メモリコントローラの動作はマスタモジュールの各々の電力モードから独立し、分離しているので、各マスタモジュールは、他のマスタモジュールの電力モードにかかわらず、メモリコントローラを介してメモリにアクセスすることができる。さらに、メモリコントローラは、IC中の、プログラマブルネットワークオンチップ(NoC)など、相互接続構造をもつIC中に実装され得る。メモリコントローラおよび相互接続構造は、マスタモジュールにメモリへのアクセスを許可するスケーラブルで統一された方式を与えることができる。
【0012】
以下で、図を参照しながら様々な特徴について説明する。図は一定の縮尺で描かれていることもあり、描かれていないこともあること、および同様の構造または機能の要素は図全体にわたって同様の参照番号によって表されていることに留意されたい。図は、特徴の説明を促すためのものに過ぎないことに留意されたい。図は、異なる実施形態の網羅的な説明として、または特許請求の範囲の限定として意図されていない。さらに、示された例が、示されたすべての態様または利点を有するとは限らない。特定の例に関して説明される態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはあまり明示的に説明されていない場合でも、他のいかなる例においても実践され得る。
【0013】
図1は、本開示のいくつかの例による、集積回路(IC)100のブロック図である。いくつかの例では、IC100は、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)など、プログラマブルICであり得る。他の例では、IC100は特定用途向けIC(ASIC)または別のICであり得る。IC100は、システムオンチップ(SoC)であり得、単一のダイ上に実装され得る。IC100は、処理システム(PS)102と、プログラマブル論理(PL)104と、マスタおよび/またはスレーブ(M/S)ブロック1 106と、M/Sブロック2 108と、メモリコントローラ(MC)1 110と、MC2 112と、入出力(I/O)インターフェース114と、管理ユニット(MU)116と、システム相互接続120とを含む。システム相互接続120はネットワークオンチップ(NoC)122をさらに含む。これらのブロックおよびサブシステムは例である。IC100は、これらの任意の組合せ、追加のおよび/または異なるブロックならびにサブシステムを含むことができる。
【0014】
PS102は、1つまたは複数のプロセッサコアであり得るか、または1つまたは複数のプロセッサコアを含むことができる。たとえば、PS102は、いくつかのARMベースの組込みプロセッサコアを含むことができる。PL104は、プログラムされ得るか、またはPS102を使用して構成され得る、任意の数の構成可能な論理ブロック(CLB)を含むことができる。M/Sブロック1 106およびM/Sブロック2 108はいくつかのブロックおよびサブシステムのいずれかであり得る。たとえば、M/Sブロック1 106およびM/Sブロック2 108はそれぞれ、プログラマブル論理、処理システム(デジタル信号プロセッサ(DSP)、グラフィカルプロセッサユニット(GPU)など)、ビデオ圧縮ユニット(VCU)、アクセラレータ、メモリ、または他のブロックおよび/またはサブシステムであり得る。
【0015】
MC1 110およびMC2 112は、PS102、PL104、または別のモジュールなど、マスタモジュールによってメモリへのアクセスを制御するように構成されたメモリコントローラである。いくつかの例では、MC1 110およびMC2 112はそれぞれ、ダブルデータレート第4世代(DDR4)MC、高帯域幅メモリ第2世代(HBM2)MC、または別のMCであり得る。他の例では、MC1 110およびMC2 112は、任意の世代の技術および/または任意の標準または非標準MCであり得る。具体例では、MC1 110およびMC2 112はそれぞれDDR4 MCである。MC1 110およびMC2 112の各々は、パリティビットおよび/または誤り訂正コードの生成および検査、訂正不可能な誤りを示すデータポイズニングサポート、および/または誤りロギングおよび報告など、エンドツーエンドデータ保護を有することができる。
【0016】
I/Oインターフェース114は、IC100とオフチップの別の構成要素との間の通信を可能にするように構成され得る。I/Oインターフェース114は、任意の標準および/またはプロプライエタリ通信のために構成され得る。I/Oインターフェース114は、IC100上の任意のモジュールに通信可能に結合され得る。いくつかのモジュールはI/Oインターフェース114に直接通信可能に結合され得、他のモジュールは、NoC122のような別のモジュールによってなど、I/Oインターフェース114に間接的に通信可能に結合され得る。図示のように、PS102、PL104、MC1 110、およびMC2 112は、(たとえば、システム相互接続120が介入することなしに)I/Oインターフェース114に直接通信可能に結合され、さらに、システム相互接続120はI/Oインターフェース114に通信可能に結合される。さらに、図示のように、I/Oインターフェース114はオフチップメモリ124に通信可能に結合される。オフチップメモリ124は、たとえば、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリ、または他のメモリであり得るか、またはダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリ、または他のメモリを含むことができる。オフチップメモリ124は、IC100と同じインターポーザおよび/またはパッケージ基板に取り付けられ得、そのインターポーザおよび/またはパッケージ基板は、たとえば、オフチップメモリ124をIC100に通信可能に結合することができる。追加の構成要素および/または異なる構成要素が、I/Oインターフェース114を使用してIC100に結合され得る。IC100上の様々なモジュールは、I/Oインターフェース114を介して、さらに、場合によってはシステム相互接続120を介して、IC100から様々なオフチップの構成要素に通信可能に結合され得る。
【0017】
MU116は、IC100の様々な態様を制御するように構成される。MU116は、単独で、または1つまたは複数の他の構成要素と協調して、IC100を初期化し、構成し、IC100の動作をデバッグし、IC100の電源投入を制御し、IC100内の電力管理を制御することができる。MU116による電力管理の追加の詳細について以下で説明する。
【0018】
システム相互接続120は、IC100のモジュールのうちの様々なモジュールを通信可能に接続することができる。前述のように、システム相互接続120はNoC122を含む。NoC122は、構成可能なスイッチによって相互接続される通信経路を含む。構成可能なスイッチは、通信経路がIC100の異なるモジュールを通信可能に結合するように選択的にプログラムまたは構成されることを可能にする。スイッチが構成またはプログラムされることを可能にすることによって、NoC122は、相互接続のためのPL104中のリソースを必ずしも専用にする必要なしに、および/またはモジュール間の構成可能でない相互接続を必ずしも専用にする必要なしに、たとえば、PL104の構成に基づいて、リソースの効率的な使用を可能にすることができる。NoC122は、NoC122のスイッチを構成するために実装された相互接続をさらに含むことができ、その相互接続はNoC周辺相互接続(NPI)と呼ばれることがある。システム相互接続120は、構成可能でない相互接続をさらに含み得、その相互接続は、ブートシーケンス中の通信、および/または電力管理のための通信を可能にし得る。
【0019】
IC100の様々なモジュールは異なる電力領域中にある。たとえば、PS102は第1の電力領域202中にある。PL104は第2の電力領域204中にある。MC1 110およびMC2 112は1つまたは複数の第3の電力領域206中にある。I/Oインターフェース114は第4の電力領域208中にあり得、MU116は第5の電力領域210中にあり得る。システム相互接続120は第6の電力領域212中にあり得る。M/Sブロック1 106およびM/Sブロック2 108は、1つまたは複数の追加の電力領域中、または第1の電力領域202、第2の電力領域204、第3の電力領域206、第4の電力領域208、または第5の電力領域210中にあり得る。図示のように、M/Sブロック1 106およびM/Sブロック2 108は第1の電力領域202中にある。
図1中の例は、1つの電力領域を共有しているいくつかのブロックまたはモジュール(たとえば、PS102、M/Sブロック1 106およびM/Sブロック2 108が第1の電力領域202を共有し、MC1 110およびMC2 112が第3の電力領域206を共有している)を示すが、各ブロックまたはモジュールは、別個の物理ブロックであり得、たとえば、他のブロックまたはモジュールの電力状態から独立して動作させられる、分離した電力領域中にあり得る。たとえば、MC1 110およびMC2 112の各々は、それぞれMC1 110およびMC2 112専用の物理ブロック中にあり得る。各電力領域は、1つまたは複数の動作電圧(または動作電圧の範囲)を有することができ、他の電力領域から独立し、分離している。
【0020】
電源200はIC100に電気的に結合される。電源200は、IC100上の各電力領域のための動作電圧を与える。電源200は、IC100と同じ基板および/またはボードに取り付けられ得、たとえば、基板および/またはボードを介してIC100に電気的に結合され得る。電源200は、第1の電力領域202のための第1の電圧V0、第2の電力領域204のための第2の電圧V1、第3の電力領域206のための第3の電圧V2、第4の電力領域208のための第4の電圧V3、第5の電力領域210のための第5の電圧V4、第6の電力領域212のための第6の電圧V5を与える。動作電圧V0、V1、V2、V3、V4、およびV5のいずれかは、他の動作電圧V0、V1、V2、V3、V4、およびV5のいずれかと同じであり得るか、または異なり得る。
【0021】
MU116は、IC100のマスタモジュールとともに、標準仕様または専有実装形態に基づいて電力管理フレームワークを実現することができる。いくつかの例では、MU116およびマスタモジュールは、組込みエネルギー管理API仕様(UG1200)に基づいて電力管理フレームワークを実現する。
【0022】
PS102内の1つまたは複数の処理ユニット(PU)のような、PS102の構成要素など、マスタモジュール内の構成要素は、電力モードを自己開始することができ、および/またはMU116によって電力モードのうちの所与の1つに入るように制御され得る。たとえば、PS102内のPUが、所定の時間期間の間、非アクティブである場合、PUは、電源切断または中断モードに入ることを要求するメッセージをMU116に送ることができる。MU116がメッセージに肯定応答すると、PUは電源切断または中断モードに入る。MU116は、次いでPUを起動させることができる。
【0023】
MC1 110およびMC2 112など、スレーブモジュールは、MU116のみによって、および/またはマスタモジュールとともに電力モードになるように制御され得る。たとえば、MU116は、マスタモジュールがスレーブモジュールのリソースを要求するまで、スレーブモジュールを電源オフモードに維持することができる。MU116は、次いで、マスタモジュールがスレーブモジュールのリソースにアクセスすることを可能にするために、スレーブモジュールを電力投入することができる。マスタモジュールがスレーブモジュールのリソースにアクセスすることを完了すると、MU116はスレーブモジュールに電源オフさせることができる。
【0024】
MU116はまた、様々な電力領域内の構成要素のパワーゲーティングを制御することができる。たとえば、MU116は、PS102のPU、M/Sブロック1 106、および/またはM/Sブロック2 108、PUに関連するメモリブロック、PL104の構成可能な論理ブロックなどへのパワーゲートを制御するための信号を生成することができる論理を、そのような構成要素の用途またはインスタンス化に応じて、ソフトウェアおよび/またはハードウェアなどで実現することができる。PL104のいくつかの構成可能な論理ブロックがインスタンス化されない場合、たとえば、漏れを低減し、それによって電力消費を低減するために、それらの論理ブロックへの電力を排除するために、それらの論理ブロックへのパワーゲートは開放され得る。
【0025】
MC1 110およびMC2 112の各々がIC100の別個の物理ブロックであり(たとえば、各々がマスタモジュール中に含まれず、または配設されず、またはマスタモジュールの一部でない)、IC100の各マスタモジュールの電力領域から分離し、独立した電力領域中にある状態で、MC1 110およびMC2 112は各マスタモジュールから独立して電力モードで動作させられ得、MC1 110またはMC2 112を使用するマスタモジュール間の依存性はなくされ得る。たとえば、PL104が、メモリから読み取るか、またはメモリに書き込むためにMC1 110を使用し、PS102が節電モード(たとえば、電源切断またはオフ)にある場合、PL104は、PS102が電源投入されることなしにメモリから読み取る、またはメモリに書き込むためにMC1 110を使用することができる。IC100中の各マスタブロックまたはモジュール(たとえば、PS102、PL104、M/Sブロック1 106、およびM/Sブロック2 108)は、マスタブロック間またはモジュール間の依存性なしにMC1 110およびMC2 112の一方または両方を共有することができる。本明細書で説明するプログラマブルNoC122を実装する例では、NoC122はまた、マスタモジュールとMCとの間、およびMCとメモリ(オフチップであり得る)との間など、通信がNoC122を通って送信されるように電源投入され、アクティブであり得る。
【0026】
図1は、たとえば、プログラマブル論理および/またはプログラマブル相互接続を含む、プログラマブルICのコンテキストにおける例示的な実装形態である。他の実装形態は、非プログラマブルASICなど、非プログラマブルICのコンテキストにあり得る。いくつかの実施形態は、たとえば、マスタモジュールの他の電力領域から分離し、独立している電力領域中のメモリコントローラを含む、SoCなど、任意のICにわたる。
【0027】
図2は、本開示のいくつかの例による、IC中の電力管理およびメモリアクセスのためのフローチャートである。ICは、プロセッサシステム、プログラマブル論理、アクセラレータ、または別のモジュールなど、複数のマスタモジュールを有する。ICはさらに、マスタモジュールがオンチップであるかまたは別個のIC上にあり得るメモリにアクセスするために使用し得る、メモリコントローラを有する。マスタモジュールはIC上の1つまたは複数の電力領域中にあり(いくつかの事例では、各マスタモジュールが他のマスタモジュールの他の領域から分離した専用の電力領域中にあり)、メモリコントローラは、マスタモジュールが配設された1つまたは複数の電力領域から分離し、独立した、IC上の電力領域中にある。メモリコントローラは、マスタモジュール中に含まれないか、または配設されない。たとえば、メモリコントローラは、メモリコントローラ専用の物理ブロック中にあり得る。マスタモジュールの電力モードは、管理ユニットがマスタモジュールと協調することなどによって制御され得る。各マスタモジュールは、それぞれのマスタモジュールがマスタモジュールの制御に基づいて選択的に入れられ得る、中断モード、電源切断モード、アクティブモード、電源投入など、異なる電力モードを有することができる。
【0028】
ブロック302において、ICの各マスタモジュールは選択的に電力モードに入れられる。ブロック304において、メモリにアクセスする少なくとも1つのマスタモジュールの電力領域から分離した電力領域中の他のマスタモジュールの各々の電力モードとは無関係に、ICのメモリコントローラを介して、マスタモジュールのうちの少なくとも1つによって、メモリがアクセスされる。メモリコントローラは、たとえば、マスタモジュールの電力領域から分離し、独立している電力領域中にあるので、他のマスタモジュールが不活性モードまたは電源切断モードにある場合、マスタモジュールは、(メモリにアクセスするマスタモジュールの電力領域とは異なる電力領域中にある)別のマスタモジュールをアクティブモードまたは電源投入モードに入れることなしに、メモリコントローラによってメモリにアクセスすることができる。メモリコントローラの電力領域中になく、メモリにアクセスするマスタモジュールの電力領域中にないマスタモジュールの各々は、メモリアクセスにかかわらず、それのそれぞれの電力モードにとどまり得る。
【0029】
図2のフローチャートを実現するための例示的なICが
図1に示されており、上記で説明した。他のICも、
図2のフローチャートを実現し得、
図1を参照ながらまたは
図2を参照しながら上記で説明したよりも少ない、多い、および/または異なるモジュールおよび/または電力領域を有し得る。
【0030】
図3は、本開示のいくつかの例による、NoC122を示すブロック図である。NoC122は、NoCマスタユニット(NMU)402と、NoCスレーブユニット(NSU)404と、ネットワーク414と、NoC周辺相互接続(NPI)410と、レジスタ(Reg)412とを含む。各NMU402は、マスタエンドポイント回路をNoC122に接続する進入回路である。各マスタエンドポイント回路はマスタモジュール中にある。各NSU404は、NoC122をスレーブエンドポイント回路に接続する退出回路である。各スレーブエンドポイント回路はスレーブモジュールまたはマスタモジュール中にあり得る。マスタモジュールは、スレーブモジュールなど、別のモジュールの動作を命令または制御することが可能であるか、またはそのように構成される。いくつかの状況下で、マスタモジュールは、それの動作を別のマスタモジュールによって命令または制御され得(たとえば、スレーブになり得る)、したがって、マスタモジュールは、マスタエンドポイント回路のみ、またはマスタエンドポイント回路とスレーブエンドポイント回路との組合せを含み得る。スレーブモジュールはスレーブエンドポイント回路を有する。
【0031】
NMU402はネットワーク414によってNSU404に接続される。一例では、ネットワーク414は、NoCパケット交換機406と、NoCパケット交換機406間のルーティング408とを含む。各NoCパケット交換機406はNoCパケットのスイッチングを実行する。NoCパケット交換機406は、複数の物理チャネルを実現するために、ルーティング408を介して、互いにおよびNMU402とNSU404とに接続される。NoCパケット交換機406はまた、物理チャネルごとに複数の仮想チャネルをサポートする。
【0032】
NPI410は、NMU402とNSU404とNoCパケット交換機406とをプログラムするための回路を含む。たとえば、NMU402、NSU404、およびNoCパケット交換機406は、それらの機能を決定するレジスタ412を含むことができる。たとえば、レジスタ412は、NoCパケット交換機406のスイッチング機能を命令するための1つまたは複数のルーティングテーブルを実現することができる。NPI410は、機能を設定するために、それのプログラミングのためにレジスタ412に結合された相互接続を含む。NoC122のための構成データは、メモリ(たとえば、ローカルメモリおよび/またはオフチップメモリ)に記憶され得、NoC122をプログラムするためにNPI410に与えられ得る。
【0033】
NoC122は、その中のデータフローを制御するためのエンドツーエンドサービス品質(QoS)特徴を含む。例では、NoC122は、最初に、データフローを指定されたトラフィッククラスに分離する。同じトラフィッククラス中のデータフローは、独立した仮想伝送路または物理伝送路を共有するか、または有するかのいずれかが可能である。QoS方式は、トラフィッククラスにわたって優先度の2つのレベルを適用する。トラフィッククラス内およびトラフィッククラスにわたって、NoC122は、トラフィックフローを成形し、ユーザ要件を満たす帯域幅およびレイテンシを与えるために重み付けされたアービトレーション方式を適用する。
【0034】
図4は、本開示のいくつかの例による、NoC122を介したエンドポイント回路間の接続を示すブロック図である。例では、エンドポイント回路502は、NoC122を介してエンドポイント回路504に接続される。エンドポイント回路502は、NoC122のNMU402に結合されたマスタ回路である。エンドポイント回路504は、NoC122のNSU404に結合されたスレーブ回路である。各エンドポイント回路502および504は、たとえば、PS102中の回路またはPL104中の回路であり得、PS102およびPL104のうちの1つは、適切な状況下で、スレーブになるであろう、他に対するマスタになり得る。PL104中の各エンドポイント回路は、専用回路(たとえば、強化回路)、またはプログラマブル論理において構成される回路であり得る。
【0035】
ネットワーク414は複数の物理チャネル506を含む。物理チャネル506は、NoC122をプログラムすることによって実現される。各物理チャネル506は、1つまたは複数のNoCパケット交換機406と、関連するルーティング408とを含む。NMU402は、少なくとも1つの物理チャネル506を介してNSU404と接続する。物理チャネル506はまた、1つまたは複数の仮想チャネル508を有し得る。
【0036】
いくつかの例では、MC1 110およびMC2 112はそれぞれ、複数のエンドポイント回路、たとえば、4つのポートなど、ポートを含む。MC1 110およびMC2 112のエンドポイント回路の各々は、それぞれのNSU404と接続し、したがって、MC1 110およびMC2 112の各々は、複数の、たとえば4つのNSU404に接続する。
図5は、各MC1 110およびMC2 112が、4つのポートを実現するために4つのNSU404に接続されたエンドポイント回路を含む例を示す。各NSU404はNoC122のルーティング408に接続され、NoC122は、様々なNSU404をマスタモジュールに通信可能に結合するために様々なNoCパケット交換機406に接続される。複数のNSU404を介してNoC122に接続されることによって、送信元から宛先までのルーティングにおけるフレキシビリティおよび負荷分散が与えられ、達成され得る。
【0037】
さらに、いくつかの例では、MC1 110およびMC2 112はそれぞれ、NoC122について上記で説明したように、別個の仮想チャネルにおける2つのトラフィッククラスをサポートする。これは、異なるトラフィッククラスが、干渉なしにMC1 110またはMC2 112の物理NoCチャネルおよびポートを共有することを可能にする。さらに、複数のエンドポイント回路、たとえば、MC1 110およびMC2 112のポートは、QoSの改善のために異なるトラフィッククラスの物理的分離を可能にする。
【0038】
いくつかの実装形態では、1つまたは複数のメモリコントローラがIC(たとえば、SoC)上に存在し得る。各メモリコントローラは別個のメモリチャネルを実現することができる。いくつかの例では、マスタモジュールをそれぞれのメモリコントローラに通信可能に結合するようにNoC122を構成することによって、各メモリコントローラへのアクセスがマスタモジュールに対して透過的になり得る。これは帯域幅およびストレージ量におけるスケーラビリティを可能にすることができる。マスタモジュールに対して透過的であるメモリコントローラを追加することによって、帯域幅およびレイテンシなど、同等のパフォーマンスをもつ、複数のメモリチャネルが実現され得る。
【0039】
複数のメモリチャネルの各々は別個の連続アドレス範囲を占有することができるか、または複数のメモリチャネルは、単一の連続アドレス空間を与えるためにインターリーブされ得る。いくつかの例では、たとえば、4つのメモリチャネルが2つのペアを有して実現され、各ペアは別個のアドレス範囲を占有するが、アドレスは各ペア内でインターリーブされる、混合方式が実現され得る。実現される方式は、NoCルーティングテーブルを介してプログラム可能であり得、マスタモジュールに対して透過的であり得る。MC1 110およびMC2 112は、チャネル選択ビットとして使用され得るアドレスビットを無視することによってチャネルインターリービングをサポートすることができる。
【0040】
チャネルインターリービングは、たとえば、所与のアプリケーションのための帯域幅またはストレージ量が単一のチャネルの容量を超え、ユーザが複数のチャネルにわたるリソースの割振りを直接管理することを望まないときに有用であり得る。チャネルインターリービングは、ユーザ介入なしに複数のチャネルにわたる自動負荷分散を与えることができる。
【0041】
別個のメモリチャネル上に別個の連続アドレス範囲を有することは、ユーザがタスク間の明示的な分離を望むときに有用であり得る。たとえば、1つのチャネルは、ビデオデータなど、時間敏感またはリアルタイムデータフローのために使用され得、別のチャネルは汎用処理のために使用され得る。
【0042】
本開示の例は、一般に、メモリサブシステムを含むシステムオンチップ(SoC)など、集積回路に関する。様々な例が、集積回路のマスタ回路から独立してメモリコントローラを動作させることを可能にすることができ、スケーラブルで統一されたメモリサブシステムを可能にすることができる。
【0043】
一例では、集積回路は、チップ上の第1の電力領域中の第1のマスタ回路と、チップ上の第2の電力領域中の第2のマスタ回路と、チップ上の第3の電力領域中の第1のメモリコントローラとを含み得、第1のマスタ回路および第2のマスタ回路はそれぞれ、第1のメモリコントローラを介してメモリにアクセスするように構成され、第1の電力領域および第2の電力領域はそれぞれ、第3の電力領域から分離し、独立している。
【0044】
いくつかのそのような集積回路では、第1の電力領域は第2の電力領域から分離し、独立し得る。
【0045】
いくつかのそのような集積回路では、第1のメモリコントローラはマスタ回路中に含まれないことがある。
【0046】
いくつかのそのような集積回路では、第1のメモリコントローラは、第1のメモリコントローラに専用の物理ブロック中にあり得る。
【0047】
そのような集積回路は、チップ上の構成可能な相互接続ネットワークをさらに含み得、第1のマスタ回路および第2のマスタ回路はそれぞれ、第1のメモリコントローラと構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成される。
【0048】
いくつかのそのような集積回路は、チップ上の第4の電力領域中の第2のメモリコントローラをさらに含み得、第1のマスタ回路および第2のマスタ回路はそれぞれ、第2のメモリコントローラと構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成され、第1の電力領域および第2の電力領域はそれぞれ、第4の電力領域から分離し、独立している。
【0049】
いくつかのそのような集積回路では、第1のメモリコントローラはメモリの第1のアドレス範囲にアクセスし得、第2のメモリコントローラはメモリの第2のアドレス範囲にアクセスし、第1のアドレス範囲は第2のアドレス範囲とは異なり得る。
【0050】
いくつかのそのような集積回路では、第1のメモリコントローラおよび第2のメモリコントローラは、メモリへのアクセスをインターリーブするように構成され得る。
【0051】
いくつかのそのような集積回路では、第1のメモリコントローラは、構成可能な相互接続ネットワークに接続された複数のポートを含み得る。
【0052】
いくつかのそのような集積回路では、第1のメモリコントローラは、構成可能な相互接続ネットワークの物理チャネルそれぞれの仮想チャネルを介して複数のトラフィッククラスを処理することを可能にするように構成され得る。
【0053】
本開示の別の例は、集積回路を動作させる方法である。そのような方法は、集積回路の複数のマスタ回路の各々を複数の電力モードのうちの1つに選択的に入れることと、複数のマスタ回路のうちの少なくとも1つによって、複数のマスタ回路の他のマスタ回路の各々の複数の電力モードのうちの選択された電力モードと無関係に、集積回路の第1のメモリコントローラを介してメモリにアクセスすることとを含み得、第1のメモリコントローラは、複数のマスタ回路の各それぞれの電力領域から分離した電力領域中にあり得る。
【0054】
いくつかのそのような方法では、第1のメモリコントローラがマスタ回路中に含まれないことがある。
【0055】
いくつかのそのような方法では、第1のメモリコントローラを介して複数のマスタ回路のうちの少なくとも1つによってメモリにアクセスすることは、集積回路の構成可能な相互接続ネットワークを介して複数のマスタ回路のうちの少なくとも1つと第1のメモリコントローラとの間を通信することを含む。
【0056】
いくつかのそのような方法は、集積回路の第2のメモリコントローラと構成可能な相互接続ネットワークとを介して、複数のマスタ回路のうちの少なくとも1つによってメモリにアクセスすることをさらに含み得、第2のメモリコントローラは、複数のマスタ回路の各それぞれの電力領域から分離した電力領域中にあり得る。
【0057】
そのような方法では、構成可能な相互接続ネットワークを介して、複数のマスタ回路のうちの少なくとも1つと第1のメモリコントローラとの間で通信することは、構成可能な相互接続ネットワークの物理チャネルの複数の仮想チャネルのうちの少なくとも1つを介して複数のマスタ回路のうちの少なくとも1つと第1のメモリコントローラとの間で通信することを含む。
【0058】
本開示のまた別の例は集積回路である。そのような集積回路は、チップ上の処理システムと、チップ上のプログラマブル論理と、チップ上の構成可能な相互接続ネットワークと、チップ上の第1のメモリコントローラと、チップ上の管理ユニットとを含み得、処理システムおよびプログラマブル論理はそれぞれ、構成可能な相互接続ネットワークを介して第1のメモリコントローラに通信可能に結合され、処理システムおよびプログラマブル論理はそれぞれ、第1のメモリコントローラと構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成され、管理ユニットは、第1のメモリコントローラの動作から独立して、処理システムおよびプログラマブル論理のそれぞれの電力モードを制御することが可能である。
【0059】
そのような集積回路では、処理システムは第1の電力領域中にあり得、プログラマブル論理は、第1の電力領域から分離し、独立した第2の電力領域中にあり得、第1のメモリコントローラは、第1の電力領域および第2の電力領域の各々から分離し、独立した第3の電力領域中にあり得る。
【0060】
そのような集積回路は、チップ上の第2のメモリコントローラをさらに含み得、処理システムおよびプログラマブル論理はそれぞれ、構成可能な相互接続ネットワークを介して第2のメモリコントローラに通信可能に結合され、処理システムおよびプログラマブル論理はそれぞれ、第2のメモリコントローラと構成可能な相互接続ネットワークとを介してメモリにアクセスするように構成され、管理ユニットは、第2のメモリコントローラの動作から独立して、処理システムおよびプログラマブル論理のそれぞれの電力モードを制御することが可能である。
【0061】
いくつかのそのような集積回路では、第1のメモリコントローラは、構成可能な相互接続ネットワークに接続された複数のポートを含み得る。
【0062】
いくつかのそのような集積回路では、構成可能な相互接続ネットワークは、物理チャネル上に複数の仮想チャネルを実現するように動作可能であり得、第1のメモリコントローラは、複数の仮想チャネルのそれぞれを介して複数のトラフィッククラスを処理することを可能にするように構成され得る。
【0063】
上記は特定の例を対象とするが、他のおよびさらなる例が、それの基本的範囲から逸脱することなく考案され得、それの範囲は以下の特許請求の範囲によって決定される。