(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-31
(45)【発行日】2023-09-08
(54)【発明の名称】システムオンチップのためのインラインECC機能
(51)【国際特許分類】
H04L 1/00 20060101AFI20230901BHJP
G06F 12/06 20060101ALI20230901BHJP
G06F 11/10 20060101ALI20230901BHJP
【FI】
H04L1/00 B
G06F12/06 550A
G06F11/10 612
(21)【出願番号】P 2020533568
(86)(22)【出願日】2018-10-09
(86)【国際出願番号】 US2018055068
(87)【国際公開番号】W WO2019125584
(87)【国際公開日】2019-06-27
【審査請求日】2021-10-05
(32)【優先日】2017-12-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】アーヴェル, イーガル
(72)【発明者】
【氏名】スワーブリック, イアン エー.
(72)【発明者】
【氏名】アフメド, サギール
【審査官】阿部 弘
(56)【参考文献】
【文献】米国特許出願公開第2015/0301890(US,A1)
【文献】米国特許出願公開第2015/0143036(US,A1)
【文献】米国特許出願公開第2015/0278004(US,A1)
【文献】米国特許第09632869(US,B1)
【文献】米国特許出願公開第2013/0111295(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 1/00
G06F 12/06
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
集積回路(IC)であって、
ネットワークオンチップ(NoC)であって、前記NoCが、NoCマスターユニット、NoCスレーブユニット、および前記NoCマスターユニットを前記NoCスレーブユニットに接続するネットワークを備える、ネットワークオンチップ(NoC)と、
前記NoCのNoCマスターユニットに接続されたマスターデバイスと、
前記No
Cに接続され、前記ICに接続されたメモリを制御するように構成された
メモリコントローラであって、前記NoCが、前記マスターデバイスと前記メモリコントローラとの間のメモリトランザクションをルーティングするように構成された、メモリコントローラと、
前記NoCに接続され
、前記NoCを介して前記マスターデバイスと前記メモリコントローラに接続されたインライン誤り訂正符号(ECC)回路であって、前記ECC回路が、前記マスターデバイ
スから
前記NoCを介して前記メモリを対象とする読み出しおよび書き込みトランザクションを受信し、前記読み出しおよび書き込みトランザクションに基づいてECCデータを計算し、発信トランザクションを
前記NoCを介して前記メモリコントロー
ラに供給するように構成される、インラインECC回路と、
を備える、集積回路(IC)。
【請求項2】
前記インラインECC回路が、
前記マスターデバイスから書き込みトランザクションを受信し、
前記書き込みトランザクションのデータに基づいてECCデータを計算し、
前記データおよび前記ECCデータの両方を前記メモリ内の1つまたは複数の宛先に書き込むための1つまたは複数の発信トランザクションを生成する
ように構成される、請求項1に記載のIC。
【請求項3】
前記1つまたは複数の発信トランザクションが、前記データおよび前記ECCデータの両方を前記メモリのモジュール内の領域に書き込むための単一の発信トランザクションを含む、請求項2に記載のIC。
【請求項4】
前記1つまたは複数の発信トランザクションが、前記データを前記メモリのモジュールの第1の領域に書き込むための第1の発信トランザクションと、前記データを前記メモリの前記モジュールの第2の領域に書き込むための第2の発信トランザクションとを含む、請求項2に記載のIC。
【請求項5】
前記1つまたは複数の発信トランザクションが、前記データを前記メモリの第1のモジュールに書き込むための第1の発信トランザクションと、前記データを前記メモリの第2のモジュールに書き込むための第2の発信トランザクションとを含む、請求項2に記載のIC。
【請求項6】
前記インラインECC回路が、
前記マスターデバイスから読み出しトランザクションを受信し、
前記メモリ内のそれぞれのストレージロケーションから前記データおよび前記ECCデータの両方を読み出すための1つまたは複数の発信トランザクションを生成し、
前記ECCデータからECCシンドロームを計算し、
前記データを含む前記読み出しトランザクションに対する応答を生成する
ように構成される、請求項1から5のいずれか一項に記載のIC。
【請求項7】
前記インラインECC回路が、
前記ECCシンドロームを使用して、前記データ内の1つまたは複数の誤りを処理する
ように構成される、請求項6に記載のIC。
【請求項8】
ネットワークオンチップ(NoC)を有する集積回路(IC)におけるメモリ管理の方法であって、前記NoCが、NoCマスターユニット、NoCスレーブユニット、および前記NoCマスターユニットを前記NoCスレーブユニットに接続するネットワークを備え、前記方法が、
インライン誤り訂正符号(ECC)回路において、前記No
Cを介してマスターデバイスからトランザクションを受信することであって、前記トランザクションが、前記ICに接続されたメモリを対象と
し、メモリコントローラが前記メモリを制御するように構成され、前記マスターデバイスと前記メモリコントローラが前記NoCに接続され、前記ECC回路が前記Nocを介して前記マスターデバイスと前記メモリコントローラに接続された、トランザクションを受信することと、
前記インラインECC回路において、前記トランザクションに基づいてECCデータを判定することと、
前記ECC回路から前記No
Cを介して
前記メモリコントローラに、1つまたは複数の発信トランザクションを供給すること
と、
を含む、方法。
【請求項9】
前記トランザクションが書き込みトランザクションであり、前記ECCデータが前記書き込みトランザクションのデータに基づいて判定され、前記1つまたは複数の発信トランザクションが前記データおよび前記ECCデータの両方を前記メモリ内の1つまたは複数の宛先に書き込むように構成される、請求項8に記載の方法。
【請求項10】
前記1つまたは複数の発信トランザクションが、前記データおよび前記ECCデータの両方を前記メモリのモジュール内の領域に書き込むための単一の発信トランザクションを含む、請求項9に記載の方法。
【請求項11】
前記1つまたは複数の発信トランザクションが、前記データを前記メモリのモジュールの第1の領域に書き込むための第1の発信トランザクションと、前記データを前記メモリの前記モジュールの第2の領域に書き込むための第2の発信トランザクションとを含む、請求項9に記載の方法。
【請求項12】
前記1つまたは複数の発信トランザクションが、前記データを前記メモリの第1のモジュールに書き込むための第1の発信トランザクションと、前記データを前記メモリの第2のモジュールに書き込むための第2の発信トランザクションとを含む、請求項9に記載の方法。
【請求項13】
前記トランザクションが読み出しトランザクションであり、前記1つまたは複数の発信トランザクションが前記メモリ内のそれぞれのストレージロケーションか
らデータおよび前記ECCデータの両方を読み出すように構成され、前記方法が、
前記ECCデータからECCシンドロームを計算することと、
前記データを含む前記読み出しトランザクションに対する応答を生成することと
をさらに含む、請求項8に記載の方法。
【請求項14】
前記方法が、
前記ECCシンドロームを使用して、前記データ内の1つまたは複数の誤りを処理すること
をさらに含む、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般に、電子回路に関し、詳細には、システムオンチップ(SoC)のためのインライン誤り訂正符号(ECC)機能に関する。
【背景技術】
【0002】
ダイナミックランダムアクセスメモリ(DRAM)の誤り訂正符号(ECC)保護は、従来、追加の「帯域外」データビット(例えば、64ビットのデータに8ビットのパリティを付加)を使用して実装されている。この手法は、ECCデータを格納するための1つまたは複数のDRAMコンポーネントと追加のインターフェース入出力(IO)ピンとを必要とするため、コストがかかる。
【0003】
加えて、バス構造が、いくつかのシステムオンチップ(SoC)集積回路(SoC)には不適切であることがわかっている。回路の集積度が高まるとトランザクションが詰まる可能性があり、容量が大きくなるとシグナリングの問題が発生する可能性がある。バス構造の代わりに、ネットワークオンチップ(NoC)を使用して、SoCのコンポーネント間のデータ通信を支援できる。
【0004】
NoCには、一般に、パケットをチップ上の送信元回路(「送信元」)からチップ上の宛先回路(「宛先」)にルーティングする一群のスイッチが設けられる。チップにおけるスイッチのレイアウトが、所望の送信元から所望の宛先へのパケット送信を支援する。パケットは、送信元から宛先に送られる間に複数のスイッチを通過し得る。各スイッチは、ネットワーク内の1つまたは複数の他のスイッチに接続され、接続されたスイッチのうちの1つまたは宛先に、入力されたパケットをルーティングする。
【発明の概要】
【0005】
システムオンチップ(SoC)のためのインライン誤り訂正符号(ECC)機能の技法について説明する。一例では、集積回路(IC)が、ネットワークオンチップ(NoC)と、NoCに接続されたマスターデバイスと、NoCに接続され、ICに接続されたメモリを制御するように構成されたメモリコントローラと、NoCに接続されたインライン誤り訂正符号(ECC)回路であって、ECC回路が、マスターデバイスからメモリを対象とする読み出しおよび書き込みトランザクションを受信し、読み出しおよび書き込みトランザクションに基づいてECCデータを計算し、発信トランザクションをメモリコントローラに供給するように構成される、インラインECC回路と、を備える。
【0006】
別の例では、集積回路(IC)におけるメモリ管理の方法が、インライン誤り訂正符号(ECC)回路において、ネットワークオンチップ(NoC)を介してマスターデバイスからトランザクションを受信することであって、トランザクションが、ICに接続されたメモリを対象とする、トランザクションを受信することと、インラインECC回路において、トランザクションに基づいてECCデータを判定することと、NoCに接続され、メモリを制御するように構成されたメモリコントローラに、1つまたは複数の発信トランザクションを供給することと、を含む。
【0007】
別の例では、集積回路(IC)が、処理システムと、プログラマブルロジック領域と、処理システムとプログラマブルロジック領域とを接続するネットワークオンチップ(NoC)と、NoCに接続されたマスターデバイスと、NoCに接続され、ICに接続されたメモリを制御するように構成されたメモリコントローラと、NoCに接続されたインライン誤り訂正符号(ECC)回路であって、ECC回路が、マスターデバイスからメモリを対象とする読み出しおよび書き込みトランザクションを受信し、読み出しおよび書き込みトランザクションに基づいてECCデータを計算し、発信トランザクションをメモリコントローラに供給するように構成される、インラインECC回路と、を備える。
【0008】
これらおよび他の態様は、以下の詳細な説明を参照して理解され得る。
【0009】
上記の特徴を詳細に理解できるように、上で簡単に要約した上記特徴のより具体的な説明が、例示的な実装形態を参照することにより得られ、そのいくつかは添付の図面に示されている。ただし、添付の図面は、本発明の典型的な例示的な実装形態のみを示しているに過ぎず、したがって、本発明の範囲を限定するものと見なされるべきではないことに留意されたい。
【図面の簡単な説明】
【0010】
【
図1】一例によるシステムオンチップ(SoC)を示すブロック図である。
【
図2】一例によるネットワークオンチップ(NoC)を示すブロック図である。
【
図3】一例によるメモリシステムを示すブロック図である。
【
図4】一例による、ECC書き込みトランザクションを処理する方法である。
【
図5】一例による、読み出しトランザクションを処理する方法を示す流れ図である。
【
図6】本明細書に記載される技法が使用され得るプログラマブル集積回路(IC)を示すブロック図である。
【
図7】一例による、プログラマブルICのシステムオンチップ(SoC)実装を示すブロック図である。
【
図8】本明細書に記載される技法が使用され得るフィールドプログラマブルゲートアレイ(FPGA)アーキテクチャの概略図である。
【0011】
理解を容易にするために、可能な場合、各図に共通する同一の要素を示すために同一の参照番号が使用されている。1つの例の要素は、他の例に好適に組み込むことができることが企図されている。
【発明を実施するための形態】
【0012】
以下、図面を参照して様々な特徴を説明する。図面は、縮尺通りに描かれている場合も描かれていない場合もあり、同様の構造または機能の要素は、図面全体を通して同様の参照番号によって表されることに留意されたい。図面は、特徴の説明を容易にすることのみを目的としていることに留意されたい。特徴の説明は、特許請求の範囲において請求された発明の網羅的な説明として意図されているものでも、特許請求の範囲において請求された発明の範囲に対する限定として意図されているものでもない。加えて、例示される例は、示されているすべての態様または利点を有する必要はない。特定の例に関連して説明された態様または利点は、必ずしもその例に限定されず、そのように例示されていなくても、または明示的に説明されていなくても、他の任意の例で実施され得る。
【0013】
図1は、一例によるシステムオンチップ(SoC)102を示すブロック図である。SoC102は、処理システム104と、ネットワークオンチップ(NoC)106と、インライン誤り訂正符号(ECC)回路112と、1つまたは複数のプログラマブル領域108とを備える集積回路(IC)である。SoC102は、不揮発性メモリ(NVM)110およびダイナミックランダムアクセスメモリ(DRAM)114などの外部回路に接続され得る。一例では、処理システム104は、NVM110および/またはDRAM114を制御するための1つまたは複数のメモリコントローラ118を備える。別の例では、プログラマブルロジック領域(複数可)108は、NVM110および/またはDRAM114を制御するための、ハードニングされた回路または構成可能なロジックとして実装される1つまたは複数のメモリコントローラ(複数可)116を備える。さらに他の例では、SoC102は、メモリコントローラ(複数可)118およびメモリコントローラ(複数可)116の両方を備える。
【0014】
NVM110は、NoC106およびプログラマブルロジック領域(複数可)108を構成するなど、SoC102を構成するためにSoC102にロードされ得るデータを格納し得る。DRAM114は、処理システム104およびプログラマブルロジック領域108に構成された任意の回路を含む、SoC102内の様々な回路によって使用されるデータを格納し得る。処理システム104、NoC106、およびプログラマブルロジック領域(複数可)108の例を以下に説明する。一般に、処理システム104は、NoC106を介してプログラマブルロジック領域(複数可)108に接続される。
【0015】
インラインECC回路112は、DRAM114上で追加のECCコンポーネントを必要としないようにインラインECC機能を提供する。いくつかの技法では、インラインECC機能は、メモリコントローラ(複数可)118および/またはメモリコントローラ(複数可)116の一部として実装され得る。しかしながら、本明細書で説明される例では、インラインECC機能は、NoC106に取り付けられた別個の回路(インラインECC回路112)として実装される。これにより、インラインECC機能から複雑なDRAMコントローラ回路を切り離すモジュール式手法が提供される。この技法は、ハードニングされたDRAMコントローラ、ソフトDRAMコントローラ(例えば、プログラマブルロジック領域(複数可)108に構成されたDRAMコントローラ)、および他のタイプのメモリ(例えば、スタティックRAM(SRAM)または任意の他のタイプのRAMと共に使用され得る。インラインECC回路112は、最小限の影響で、SoC102で使用される任意のシステム実装に追加または除去され得る。インラインECC回路112はまた、ECCデータがどこにどのように格納されるかに関してより多くの柔軟性を提供する。
【0016】
図2は、一例によるNoC106を示すブロック図である。NoC106は、NoCマスターユニット(NMU)202と、NoCスレーブユニット(NSU)204と、ネットワーク214と、NoCペリフェラルインターコネクト(NPI)210と、レジスタ(Regs)212とを備える。各NMU202は、マスターエンドポイントをNoC106に接続する入口回路である。各NSU204は、NoC106をスレーブエンドポイントに接続する出口回路である。NMU202は、ネットワーク214を介してNSU204に接続される。一例では、ネットワーク214は、NoCパケットスイッチ206と、NoCパケットスイッチ206間のルーティング208とを備える。各NoCパケットスイッチ206は、NoCパケットのスイッチングを行う。NoCパケットスイッチ206は、複数の物理チャネルを実装するためにルーティング208を介して互いに接続され、またNMU202およびNSU204に接続される。NoCパケットスイッチ206はまた、物理チャネルごとに複数の仮想チャネルを支援する。NPI210は、NMU202、NSU204、およびNoCパケットスイッチ206をプログラムするための回路を備える。例えば、NMU202、NSU204、およびNoCパケットスイッチ206は、それらの機能を判定するレジスタ212を備え得る。NPI210は、機能を設定するようにNPIをプログラミングするためにレジスタ212に接続されたインターコネクトを備える。NoC106の構成データは、NVM110に格納され、NoC106をプログラミングするためにNPI210に供給され得る。
【0017】
図3は、一例によるメモリシステム300を示すブロック図である。メモリシステム300は、1つまたは複数のマスターデバイス(複数可)302と、NoC106と、1つまたは複数のメモリコントローラ304と、インラインECC回路112と、メモリ306とを備える。マスターデバイス(複数可)302は、処理システム104内の回路またはプログラマブルロジック領域(複数可)108内の回路(例えば、ハードニングされた回路または構成された回路)などの、SoC102内の回路である。マスターデバイス(複数可)302は、NoC106内のNMU202に接続される。メモリコントローラ304(複数可)は、処理システム104および/またはプログラマブルロジック領域(複数可)108に配置される。メモリコントローラ(複数可)304は、メモリ306を制御するように構成される。メモリ306は、1つまたは複数のDRAMモジュール、SRAMモジュール、および/または他のタイプのメモリモジュールなどの1つまたは複数のメモリモジュールを含み得る。NoC106は、マスターデバイス(複数可)302とメモリコントローラ(複数可)304との間でメモリトランザクション(例えば、読み出しおよび書き込みトランザクション)をルーティングする。
【0018】
動作中、SoC102のアドレス空間内の1つまたは複数のアドレス範囲は、ECC保護されるように選択され得るが、アドレス空間の他の部分は保護されないままであり得る。保護されていない領域へのメモリトランザクションは、NoC106を介してマスターデバイス(複数可)302とメモリコントローラ(複数可)304との間で直接ルーティングされ得る。ECC保護領域へのメモリトランザクションは、インラインECC回路112を介してルーティングされ、インラインECC回路112は、マスターデバイス(複数可)302およびメモリコントローラ(複数可)304(すなわち、スレーブデバイス)の両方に対して透過的にECCデータの生成およびチェックを管理する。
【0019】
図4は、一例による、ECC書き込みトランザクションを処理する方法400である。方法400は、インラインECC回路112がマスターデバイス302から書き込みトランザクションを受信するステップ402において始まる。書き込みトランザクションは、メモリ306内のアドレス指定されたロケーションに書き込まれるデータを含む。ステップ404において、インラインECC回路112は、書き込まれるデータ(例えば、ECCパリティデータ)に基づいてECCデータを計算する。ステップ406において、インラインECC回路112は、元のデータおよびECCデータの両方を1つまたは複数の宛先に書き込むための1つまたは複数の発信トランザクションを生成する。一例では、ステップ408において、インラインECC回路112は、メモリ306の同じメモリ領域内で元のデータの間にECCデータを散在させる。このような場合、インラインECC回路112は、単一の発信トランザクションを生成し得る。例えば、メモリ306がページ単位でアクセスされる場合、元のデータおよびECCデータの両方が同じページ(複数可)に格納され得る。
【0020】
別の例では、ステップ410において、インラインECC回路112は、同じメモリまたは別個のメモリモジュールの、元のデータとは別個のメモリ領域にECCデータを格納する。このような場合、インラインECC回路112は、元のデータのための1つのトランザクションと、ECCデータを書き込むための別のトランザクションとを生成する。例えば、別個のメモリ領域は、同じメモリ内の別個のページとすることができる。別個のメモリモジュールが使用される場合、別個のメモリモジュールは、元のデータの格納に使用されるメモリモジュールと同じタイプとすることも異なるタイプとすることもできる。
【0021】
図5は、一例による、読み出しトランザクションを処理する方法500を示す流れ図である。方法500は、インラインECC回路112がマスターデバイス302から読み出しトランザクションを受信するステップ502において始まる。読み出しトランザクションは、データを読み出すための、メモリ306内のアドレスを含む。ステップ504において、ラインECC回路112は、元のデータおよびECCデータの両方をそれらのそれぞれのストレージロケーションから読み出すための1つまたは複数の発信トランザクションを生成する。上記のように、ECCデータは、元のデータと同じメモリ領域に格納されても、異なるメモリ領域に格納されても、異なるメモリモジュールに格納されてもよい。インラインECC回路112は、元のデータおよびECCデータの両方を読み出すための1つまたは複数のトランザクションを生成する。
【0022】
ステップ506において、ラインECC回路112は、ECCデータおよび元のデータに基づいて誤りを検出および訂正するために使用されるECCシンドロームを計算する。ステップ508において、ECC回路112は、計算されたECCシンドロームに基づいて、元のデータの誤りがあればこれを処理する。ステップ510において、インラインECC回路112は、要求されたデータのみを含む、読み出しトランザクションに対する応答を生成し、その応答をマスターデバイス302に送信する。ECC機能は、マスターデバイス302およびメモリコントローラ304に対して透過的である。
【0023】
図6は、本明細書で説明されるインラインECC回路112を使用することができる、一例によるプログラマブルIC1を示すブロック図である。プログラマブルIC1は、プログラマブルロジック3と、構成ロジック25と、構成メモリ26とを備える。プログラマブルIC1は、不揮発性メモリ27、DRAM28、および他の回路29などの外部回路に接続され得る。プログラマブルロジック3は、ロジックセル30と、支援回路31と、プログラマブルインターコネクト32とを備える。ロジックセル30は、複数の入力の一般的なロジック機能を実装するように構成され得る回路を含む。支援回路31は、送受信機、入出力ブロック、デジタルシグナルプロセッサ、メモリなどの専用回路を含む。ロジックセルと支援回路31とは、プログラマブルインターコネクト32を使用して相互接続され得る。ロジックセル30をプログラミングするため、支援回路31のパラメータを設定するため、およびプログラマブルインターコネクト32をプログラミングするための情報が、構成ロジック25によって構成メモリ26に格納される。構成ロジック25は、不揮発性メモリ27または任意の他の送信元(例えば、DRAM28または他の回路29)から構成データを取得し得る。いくつかの例では、プログラマブルIC1は、処理システム2を備える。処理システム2は、マイクロプロセッサ(複数可)、メモリ、支援回路、入出力回路などを備え得る。
【0024】
図7は、一例による、プログラマブル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、および多重入出力(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は、キャッシュコヒーレントインターコネクトなどを含み得る。
【0025】
PS2を参照すると、処理ユニットのそれぞれが、1つまたは複数の中央処理ユニット(CPU)と、メモリ、割り込みコントローラ、ダイレクトメモリアクセス(DMA)コントローラ、メモリ管理ユニット(MMU)、浮動小数点ユニット(FPU)などの関連回路とを備える。インターコネクト16は、処理ユニットを相互接続するとともに、PS2内の他の構成要素を処理ユニットに相互接続するように構成された様々なスイッチ、バス、通信リンクなどを含む。
【0026】
OCM14は、PS2全体に分散され得る1つまたは複数のRAMモジュールを備える。例えば、OCM14は、バッテリーバックアップされたRAM(BBRAM)、密結合メモリ(TCM)などを含み得る。メモリコントローラ10は、外部DRAMにアクセスするためのDRAMインターフェースを備え得る。ペリフェラル8、15は、PS2へのインターフェースを提供する1つまたは複数のコンポーネントを含み得る。例えば、ペリフェラル132は、グラフィック処理ユニット(GPU)、ディスプレイインターフェース(例えば、ディスプレイポート、高解像度マルチメディアインターフェース(HDMI)ポートなど)、ユニバーサルシリアルバス(USB)ポート、イーサネットポート、ユニバーサル非同期送受信機(UART)ポート、シリアルペリフェラルインターフェース(SPI)ポート、汎用入出力(GPIO)ポート、シリアルアドバンスド・テクノロジーアタッチメント(SATA)ポート、PCIeポートなどを含み得る。ペリフェラル15は、MIO13に接続され得る。ペリフェラル8は、送受信機7に接続され得る。送受信機7は、シリアライザ/デシリアライザ(SERDES)回路、MGTなどを備え得る。
【0027】
図8は、送受信機37、構成可能な論理ブロック(「CLB」)33、ランダムアクセスメモリブロック(「BRAM」)34、入出力ブロック(「IOB」)36、構成およびクロッキングロジック(「構成/クロック」)42、デジタル信号処理ブロック(「DSP」)35、専用入出力ブロック(「入出力」)41(例えば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログ-デジタル変換器、システム監視ロジックなどの他のプログラマブルロジック39を含む多数の異なるプログラマブルタイルを備える、プログラマブルIC1のフィールドプログラマブルゲートアレイ(FPGA)実装を示している。FPGAはまた、PCIeインターフェース40、アナログ-デジタル変換器(ADC)38などを備え得る。
【0028】
いくつかのFPGAでは、
図8の上部に含まれる例によって示されるように、各プログラマブルタイルは、同じタイル内のプログラマブルロジックエレメントの入出力端子48への接続を有する少なくとも1つのプログラマブルインターコネクトエレメント(「INT」)43を含み得る。各プログラマブルインターコネクトエレメント43はまた、同じタイルまたは他のタイル(複数可)における隣接するプログラマブルインターコネクトエレメント(複数可)のインターコネクトセグメント49への接続を含み得る。各プログラマブルインターコネクトエレメント43はまた、論理ブロック(図示せず)間の一般的なルーティングリソースのインターコネクトセグメント50への接続を含み得る。一般的なルーティングリソースは、インターコネクトセグメント(例えば、インターコネクトセグメント50)のトラックを含む論理ブロック(図示せず)と、インターコネクトセグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含み得る。一般的なルーティングリソースのインターコネクトセグメント(例えば、インターコネクトセグメント50)は、1つまたは複数の論理ブロックにわたることができる。プログラマブルインターコネクトエレメント43は、一般的なルーティングリソースと共に、例示されたFPGAのためのプログラマブルインターコネクト構造(「プログラマブルインターコネクト」)を実装する。
【0029】
例示的な実装形態では、CLB33は、ユーザロジックに加えて単一のプログラマブルインターコネクトエレメント(「INT」)43を実装するようにプログラムされ得る構成可能なロジックエレメント(「CLE」)44を含み得る。BRAM34は、1つまたは複数のプログラマブルインターコネクトエレメントに加えて、BRAMロジックエレメント(「BRL」)45を備え得る。通常、タイルに含まれるインターコネクトエレメントの数は、タイルの高さに依存する。図示の例では、BRAMタイルの高さは5つのCLBと同じであるが、他の数(例えば、4)も用いられ得る。DSPタイル35は、適切な数のプログラマブルインターコネクトエレメントに加えて、DSPロジックエレメント(「DSPL」)46を備え得る。IOB36は、例えば、プログラマブルインターコネクトエレメント43の1つのインスタンスに加えて、入出力ロジックエレメント(「IOL」)47の2つのインスタンスを備え得る。当業者には明らかであるように、例えば、入出力ロジックエレメント47に接続された実際の入出力パッドは、通常、入出力ロジックエレメント47の領域に限定されない。
【0030】
図示の例では、(
図8に示す)ダイの中心付近の水平領域が構成、クロック、および他の制御ロジックに使用されている。この水平領域または列から延びる垂直の列51は、FPGAの幅全体にクロックおよび構成信号を分配するために使用される。
【0031】
図8に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する通常のカラム型構造を破壊する追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用ロジックであり得る。
【0032】
図8は、例示的なFPGAアーキテクチャを示すことのみを意図されていることに留意されたい。例えば、
図8の上部に含まれている行内の論理ブロックの数、行の相対的な幅、行の数および順序、行に含まれる論理ブロックのタイプ、論理ブロックの相対的なサイズ、インターコネクト/ロジックの実装は単なる例である。例えば、実際のFPGAでは、ユーザロジックの効率的な実装を容易にするために、CLBが現れる場所にはどこでも、CLBの複数の隣接する行が通常含まれるが、隣接するCLB行の数はFPGAの全体的なサイズによって異なる。
【0033】
一例では、集積ICが提供され得る。このようなICは、ネットワークオンチップ(NoC)と、NoCに接続されたマスターデバイスと、
NoCに接続され、ICに接続されたメモリを制御するように構成されたメモリコントローラと、インライン誤り訂正符号(ECC)回路であって、ECC回路が、マスターデバイスからメモリを対象とする読み出しおよび書き込みトランザクションを受信し、読み出しおよび書き込みトランザクションに基づいてECCデータを計算し、発信トランザクションをメモリコントローラに供給するように構成される、インラインECC回路と、を備え得る。
【0034】
いくつかのこのようなICでは、インラインECC回路は、マスターデバイスから書き込みトランザクションを受信し、書き込みトランザクションのデータに基づいてECCデータを計算し、データおよびECCデータの両方をメモリ内の1つまたは複数の宛先に書き込むための1つまたは複数の発信トランザクションを生成するように構成され得る。
【0035】
いくつかのこのようなICでは、1つまたは複数の発信トランザクションが、データおよびECCデータの両方をメモリのモジュール内の領域に書き込むための単一の発信トランザクションを含み得る。
【0036】
いくつかのこのようなICでは、1つまたは複数の発信トランザクションが、データをメモリのモジュールの第1の領域に書き込むための第1の発信トランザクションと、データをメモリのモジュールの第2の領域に書き込むための第2の発信トランザクションとを含み得る。
【0037】
いくつかのこのようなICでは、1つまたは複数の発信トランザクションが、データをメモリの第1のモジュールに書き込むための第1の発信トランザクションと、データをメモリの第2のモジュールに書き込むための第2の発信トランザクションとを含み得る。
【0038】
このようないくつかのICでは、インラインECC回路は、マスターデバイスから読み出しトランザクションを受信し、データおよびECCデータの両方をメモリ内のそれぞれのストレージロケーションから読み出すための1つまたは複数の発信トランザクションを生成し、ECCデータからECCシンドロームを計算し、データを含む読み出しトランザクションに対する応答を生成するように構成され得る。
【0039】
いくつかのこのようなICでは、インラインECC回路は、ECCシンドロームを使用して、データ内の1つまたは複数の誤りを処理するように構成され得る。
【0040】
別の例では、ICにおけるメモリ管理の方法が提供され得る。このような集積回路(IC)におけるメモリ管理の方法は、インライン誤り訂正符号(ECC)回路において、ネットワークオンチップ(NoC)を介してマスターデバイスからトランザクションを受信することであって、トランザクションが、ICに接続されたメモリを対象とする、トランザクションを受信することと、インラインECC回路において、トランザクションに基づいてECCデータを判定することと、NoCに接続され、メモリを制御するように構成されたメモリコントローラに、1つまたは複数の発信トランザクションを供給することと、を含む。
【0041】
いくつかのこのような方法では、トランザクションが書き込みトランザクションであり得、ECCデータが書き込みトランザクションのデータに基づいて判定され得、1つまたは複数の発信トランザクションがデータおよびECCデータの両方をメモリ内の1つまたは複数の宛先に書き込むように構成され得る。
【0042】
いくつかのこのような方法では、1つまたは複数の発信トランザクションが、データおよびECCデータの両方をメモリのモジュール内の領域に書き込むための単一の発信トランザクションを含み得る。
【0043】
いくつかのこのような方法では、1つまたは複数の発信トランザクションが、データをメモリのモジュールの第1の領域に書き込むための第1の発信トランザクションと、データをメモリのモジュールの第2の領域に書き込むための第2の発信トランザクションとを含み得る。
【0044】
いくつかのこのような方法では、1つまたは複数の発信トランザクションが、データをメモリの第1のモジュールに書き込むための第1の発信トランザクションと、データをメモリの第2のモジュールに書き込むための第2の発信トランザクションとを含み得る。
【0045】
いくつかのこのような方法では、トランザクションが読み出しトランザクションであり得、1つまたは複数の発信トランザクションがデータおよびECCデータの両方をメモリ内のそれぞれのストレージロケーションから読み出すように構成され得、本方法が、ECCデータからECCシンドロームを計算することと、
データを含み得る、読み出しトランザクションに対する応答を生成することと
をさらに含む。
【0046】
いくつかのこのような方法では、本方法は、ECCシンドロームを使用して、データ内の1つまたは複数の誤りを処理することをさらに含む。
【0047】
さらに別の例では、ICが提供され得る。このようなICは、処理システムと、プログラマブルロジック領域と、処理システムとプログラマブルロジック領域とを接続するネットワークオンチップ(NoC)と、NoCに接続されたマスターデバイスと、NoCに接続され、ICに接続されたメモリを制御するように構成されたメモリコントローラと、NoCに接続されたインライン誤り訂正符号(ECC)回路であって、ECC回路が、マスターデバイスからメモリを対象とする読み出しおよび書き込みトランザクションを受信し、読み出しおよび書き込みトランザクションに基づいてECCデータを計算し、発信トランザクションをメモリコントローラに供給するように構成される、インラインECC回路と、を備え得る。
【0048】
このようなICでは、マスターデバイスは処理システムに配置され得る。
【0049】
このようなICでは、マスターデバイスは、プログラマブルロジック領域に配置され得る。
【0050】
このようなICでは、マスターデバイスは、プログラマブルロジック領域に構成され得る。
【0051】
このようなICでは、インラインECC回路は、マスターデバイスから書き込みトランザクションを受信し、書き込みトランザクションのデータに基づいてECCデータを計算し、データおよびECCデータの両方をメモリ内の1つまたは複数の宛先に書き込むための1つまたは複数の発信トランザクションを生成するように構成され得る。
【0052】
このようなICでは、インラインECC回路は、マスターデバイスから読み出しトランザクションを受信し、データおよびECCデータの両方をメモリ内のそれぞれのストレージロケーションから読み出すための1つまたは複数の発信トランザクションを生成し、ECCデータからECCシンドロームを計算し、データを含む読み出しトランザクションに対する応答を生成するように構成され得る。
【0053】
以上は具体的な例を対象としているが、本開示の基本的な範囲から逸脱することなく、他のさらなる例を考案することができ、本開示の範囲は添付の特許請求の範囲によって決定される。