(58)【調査した分野】(Int.Cl.,DB名)
前記複数のメモリブロックの間に専用のインターコネクト・エレメントを結合するステップは、前記プログラム可能なインターコネクト・エレメントから分離した前記専用のインターコネクト・エレメントを設けるステップを備える、請求項7に記載の方法。
専用のインターコネクト・エレメントを前記複数のメモリブロックに結合するステップは、クロスバースイッチを前記複数のメモリブロックに結合するステップを備える、請求項7および8のいずれか1項に記載の方法。
【発明を実施するための形態】
【0009】
図面の詳細な説明
まず
図1を参照して、外部メモリに結合された集積回路のブロック図が示されている。特に、集積回路デバイス102は、通信リンク106を介して外部メモリ104に結合されている。集積回路デバイスは、特定用途向け集積回路(application specific integrated circuit:ASIC)または以下でより詳細に説明するプログラム可能なリソースを有する集積回路デバイスなどの、いかなるタイプの集積回路デバイスであってもよい。集積回路デバイス102は、コンフィギュレーション回路110に結合された制御回路108を備える。コンフィギュレーション回路110は、制御回路108を介して、または入力/出力(I/O)ポート112を介して、外部メモリ104からコンフィギュレーションデータを受取り得る。コンフィギュレーション回路110は、コンフィギュレーションデータをコンフィギュレーションメモリ116に提供することによって集積回路デバイスのプログラム可能なリソース114を構成するために使用される。代替的には、コンフィギュレーションデータは、制御回路108によって直接コンフィギュレーションメモリに提供されてもよい。また、制御回路108およびプログラム可能なリソース114は、内部メモリ118および120に結合され得る。さらに、集積回路デバイスは、メモリエレメントへのアクセスを可能にするために、プログラム可能なリソース114に関連付けられたインターコネクト・エレメントから分離した専用のインターコネクト・エレメント122および124を任意に含んでいてもよい。
【0010】
以下でより詳細に説明するように、内部メモリ118および120は、異なるタイプのメモリであってもよく、異なるサイズのアレイであってもよい。例えば、メモリ階層においてプログラム可能なリソースに関連付けられたルックアップテーブル(LUT)ランダム・アクセス・メモリ(RAM)およびブロックRAM(BRAM)(例えば36キロビット(Kb)ブロック)を有し得る従来のデバイスでは、メモリ階層の次のレベルは、外部SRAMおよびDRAMを含む。以下に記載されるさまざまな回路実装は、小さなBRAMと外部SRAMまたはDRAMとの間に、メモリ階層の追加のレベルを含む。ネットワーク化されたSRAMとして構成され得るこのSRAMの追加のレベルは、BRAMよりも深いが、以下でより詳細に説明するFPGAダイ上に取付けるには十分に小さいオンチップSRAMであってもよい。これらのネットワーク化されたSRAMは、外部メモリを支援してシステム全体の性能を向上させ、ユーザがSRAM帯域幅をSRAM容量とよりよく関連付けることを可能にする。
【0011】
ここで
図2を参照して、SRAMブロック200のブロック図が示されている。
図2のSRAMブロック200は、内部メモリ118の一部であり得て、内部メモリ120は、例えば
図4および
図5を参照して以下でより詳細に説明するDRAMブロックであり得る。SRAMブロック200は、マトリクス状に配置され得る複数の個々のメモリセル202を備える。メモリセルの列および列デコーダ204は、データ線に結合され、メモリセルの行は、ワード線に結合されて、DRAMの出力として出力データを生成する。したがって、データをセルに書込むためには、セルに関連付けられたワード線がハイにされ、セルに関連付けられたデータ線に所望のデータが結合される。データをセルから読出すためには、セルに関連付けられたワード線がハイにされ、セルが位置する列に関連付けられた出力値を列デコーダが生成する。
【0012】
ここで
図3を参照して、
図2のSRAMメモリブロックのメモリセルの回路図が示されている。メモリセルは、p−チャネルトランジスタ302を有するインバータを含み、当該p−チャネルトランジスタ302は、Vddなどの基準パワー電圧に結合されたソースと、第1のノード「Q」においてn−チャネルトランジスタ304のドレインに結合されたドレインとを有し、当該n−チャネルトランジスタ304のソースは、接地電位(Vss)に結合されている。メモリセルは、p−チャネルトランジスタ306を有する第2のインバータを含み、当該p−チャネルトランジスタ306は、基準電圧に結合されたソースと、第2のノード「Q_b」においてn−チャネルトランジスタ308のドレインに結合されたドレインとを有し、当該n−チャネルトランジスタ308のソースも、接地に結合されている。第1のノード「Q」は、n−チャネルトランジスタ310によって制御され、当該n−チャネルトランジスタ310は、第1のノードでのビット線(BL)上の入力データの受取りを制御する反転ワード線(WL0_bar)信号をそのゲートにおいて受取るように結合されている。第2のノード「Q_b」は、別のn−チャネルトランジスタ312によって制御され、当該n−チャネルトランジスタ312は、第2のノードQ_bでの反転入力データの受取りを制御する反転ワード線信号をそのゲートにおいて受取るように結合されている。トランジスタ314および316は、別々の反転ワード線WL0_barおよびWL1_barをイネーブルにするように構成されている。トランジスタ314および316は、示されているようにQおよびQ_bノードに結合されたソースを有するように、示されているように構成されており、ゲートは各々、反転WL1_barによって制御され、デュアルポートSRAMを可能にする。所与のセルのために反転ワード線(WL0_bar)が選択されると、ビット線および反転ビット線上の値がQおよびQ_bノードに結合され、当該セルのデータ値が格納される。次いで、データは、WL1_bar信号によってアクセスされることができ、デュアルポートメモリエレメントを可能にする。より特定的には、SRAMセルは、たった1つの読出ポートおよび1つの書込ポートを有する状態で実現され得る。いずれかが読出しまたは書込みに使用され得る2つの読出/書込(w/r)ポートを設けるいくつかのSRAMセルとは異なって、たった1つの読出ポートおよび1つの書込ポートを含むことによって、メモリ密度を高くすることができる。読出し用に1つのポートを設け、書込み用に1つのポートを設けることによって、
図3の8T SRAMセルは、ハーフクロックサイクル(すなわちクロックの立上りおよび立下りエッジ)でメモリにアクセスすることを可能にすることにより、2w/rポートを有するセルの2倍の速さで動作することができる。
図3のメモリセルは一例として示されているが、他のメモリセルが利用されてもよい。
【0013】
ここで
図4を参照して、DRAMブロックのブロック図が示されている。
図4のDRAMブロックは、以下でより詳細に説明するように、外部メモリ104または内部メモリ120の一部であり得る。DRAMブロック400は、複数のセル402を備え、当該複数のセル402の各々は、アドレスデコーダ404に結合されている。アドレスデコーダ404は、アドレス線406を受け、示されているように複数のメモリセル402に結合されるアドレスを生成する。アドレスデコーダ404は、チップイネーブル信号を受取り、メモリセル402の各々は、基準電圧Vrefを受取る。書込ブロック410は、メモリセル402からのデータの読出しまたはメモリセル402へのデータの書込みを可能にする。特に、書込ブロック410に提供された書込イネーブル信号がゲート414を介したメモリセル402への書込みを可能にする場合、データ線412を介して提供されたデータは、アドレスデコーダに提供されたアドレスに書込まれる。書込イネーブル信号がメモリセル402への書込みを可能にしていない場合、インバータ416に結合されたデータがデータ線418上で生成される。以下でより詳細に説明するように、DRAMブロックのセルに格納されたデータは、データを保持するために定期的にリフレッシュされなければならない。
【0014】
ここで
図5を参照して、
図4のDRAMブロックのメモリセルの回路図が示されている。特に、第1のトランジスタ502は、基準ビット線に結合されたドレイン504と、キャパシタ508に結合されたソース506とを有する。トランジスタ502は、ゲートにおいて基準ワード線によって制御される。第2のトランジスタ514は、ビット線に結合されたドレイン516と、キャパシタ520に結合されたソース518とを有する。トランジスタ514は、ゲートにおいてワード線によって制御される。ワード線をハイにし、格納されるべき所望の値をビット線に供給してキャパシタ520を充電することによって、データが書込まれる。データをメモリから読出すためには、センス増幅器526が、出力値を生成するために、基準ビット線におけるキャパシタ512に格納された電圧とビット線におけるキャパシタ524に格納された電圧との差を検出する。ビット線の値が決定された後、当該値は、キャパシタ524に適切な電荷を蓄えることによってビット線に再書込みされる。すなわち、キャパシタ524は、セルによって格納されるデータの正しい値を維持するために定期的に再充電される。個々のDRAMメモリセルは、
図3のSRAMセルよりも小さいので有益であるが、DRAMメモリセルは、格納データを表わすキャパシタ上の電荷を維持するために定期的にリフレッシュされなければならず、SRAMセルよりもアクセス時間が長くなる可能性がある。
【0015】
ここで
図6を参照して、複数のSRAMブロックを有する集積回路デバイスの一部のブロック図が示されている。プログラム可能なリソースの部分602は、複数のメモリブロック606へのインターフェースを提供するルーティング回路604に、データ線603によって結合されている。複数のメモリブロックは、ここでは一例として、32個のSRAMブロックとして示されている。ルーティング回路604は、好ましくは、複数のメモリブロック606のための専用のインターコネクト・エレメントである。ルーティング回路604は、ルーティング回路のU個の入力ポート(ここでは、対応するデータ線D
1〜D
8に結合された8個のデータ入力ポートとして示されている)およびV個の出力ポート(Vは、例えばここに示されているように32であってもよい)にデータをルーティングすることを可能にし、入力および出力ポートの各々は、ポート当たりWビットを有し得る。すなわち、データ線に対応するルーティング回路604の各々の個々の入力ポートは、288ビットデータ(256ビットデータおよび32オーバーヘッドビットであり得る)を受取り得て、各出力ポートは、288ビットデータを生成し得る。例えば、出力ポートのうちの代表的なものは、対応するデータ線605によって、SRAM0と表わされる第1のメモリブロックの入力に結合されている。したがって、8個の288ビット入力ポートの各々からのデータD
1〜D
8は、ルーティング回路604の32個の288ビット出力ポートを介して、32個のメモリブロックのうちの1つ以上にルーティングされ得る。
図6の回路構成に従って複数のメモリブロックに提供されるデータは、データビットと制御ビットとを含み得て、制御ビットは、例えばアドレスビットを含み得る、ということが理解されるべきである。
【0016】
複数のメモリブロックによって生成されたデータを受取るように、第2のルーティング回路608が複数のメモリブロック606の出力に結合されている。対応する代表的なデータ線607におけるSRAM0の出力は、ルーティング回路608の入力に結合されている。ルーティング回路608の出力データ線609は、ルーティング回路608の対応する出力ポートとプログラム可能なリソースの第2の部分610との間に結合されている。ルーティング回路604および608は、
図15を参照してより詳細に説明するように同期クロスバースイッチとして実現されてもよく、プログラム可能なリソースの特定の部分602および610以外の回路によって使用され得る共有ルーティングエレメントを使用するのではなく、好ましくは専用のインターコネクト・エレメントとして実現される。また、出力データ線609は、複数のメモリエレメントの出力において対応する8ビット出力を受取るように結合されるマルチビット線(例えば8ビット線)であってもよい。したがって、32個のSRAMのうちの8個のSRAMの8ビット出力Q
1〜Q
8が、ルーティング回路608の8本の出力データ線609において生成され得る。制御線612は、ルーティング回路604へのさまざまな入力を複数のメモリブロック606の第1の予め定められたメモリブロックにルーティングするために使用される。同様に、制御線614は、第2の予め定められたメモリブロックの出力を、ルーティング回路608の8個の出力ポートおよびプログラム可能なリソースの部分610にルーティングするために使用される。回路への入力および出力として専用のルーティング回路および専用のインターコネクトを設けることによって、SRAMアクセスの速度を速くすることができる。すなわち、プログラム可能なロジックデバイスのための共有インターコネクトルーティングは、デバイスに対してより高い柔軟性を提供するが、ゆっくりとしている可能性がある。これに対して、クロスバースイッチなどの専用のルーティング回路は、集積回路のためのシステムクロックで動作することができる。
【0017】
ここで
図7を参照して、複数のSRAMブロックに結合され、別々の読出および書込制御を有する集積回路デバイスの一部のブロック図が示されている。すなわち、
図7の構成は、別々のルーティング回路を介したデータビットおよび制御ビットの別々のルーティングを可能にし、制御ビットは、例えばアドレスビットを含む別々の読出および書込制御ビットを含む。特に、プログラム可能なリソース602から書込制御信号WC
1〜WC
8を受取るようにルーティング回路702が結合されており、ルーティング回路702の複数の出力ポートのうちの代表的なものは、制御線704によって、ここではSRAM0と表わされる複数のメモリエレメント
606のメモリエレメントの対応する制御信号入力に結合されている。別のルーティング回路708が、ルーティング回路708の入力ポートにおいてデータ入力D
1〜D
8を受取るように結合されている。ここでは対応する出力ポートにおける複数のデータ線の代表的なデータ線710によって示されているルーティング回路708の出力ポートは、ここではSRAM0と表わされる第1のメモリブロックに結合されている。したがって、ルーティング回路702は、データおよび制御信号の任意の対を、複数のメモリエレメント606のうちの1つ以上の選択されたメモリエレメントのデータおよび制御入力にルーティングすることを可能にする。
【0018】
ルーティング回路は、複数のメモリブロックからデータを読出すためにも設けられている。読出制御信号RC
1〜RC
8を含む制御信号を、プログラム可能なリソースの部分610から受取るように、ルーティング回路714が結合されている。ルーティング回路714は、選択されたメモリブロックに読出制御信号をルーティングすることを可能にし、ルーティング回路714の出力ポートは、制御線(ここではSRAM31と表わされる最後のメモリブロックに結合された代表的な制御線716としてここでは示されている)によってメモリに結合されている。複数のメモリ720から出力を受取るようにルーティング回路718が結合されており、代表的なデータ線720は、最後のメモリブロックの出力からルーティング回路718の入力にデータを提供する。メモリブロック
606によって提供されたデータQ
1〜Q
8は、8本の出力線のうちの1本によって、ルーティング回路718からプログラム可能なリソース610に提供される。制御信号は、プログラム可能なリソースによってルーティング回路に提供される。より特定的には、書込制御信号は、プログラム可能なリソース602によって、制御線720および722を介して、ルーティング回路702および708にそれぞれ提供されるのに対して、読出制御信号は、プログラム可能なリソース610によって、724および726を介して、ルーティング回路714および718にそれぞれ提供される。代替的には、制御信号は、回路のプロセッサなどの回路の別の要素によって提供されてもよい。
【0019】
ここで
図8を参照して、単一のクロスバー
スイッチに関連付けられたデータならびに読出および書込制御を有する複数のSRAMブロックを備える集積回路デバイスの一部のブロック図が示されている。したがって、データD
1〜D
8も書込制御信号WC
1〜WC
8もルーティング回路802に提供される。例えば、データD
1および書込制御信号WC
1は、代表的な信号線対803によってルーティング回路802に提供される。次いで、ルーティング回路802の対応する入力ポートにおける信号線対上の信号は、信号線対804によって、(一例としてSRAM0であり得る)選択されたメモリエレメントに提供される。読出制御信号RC
1〜RC
8は、プログラム可能なリソース610によって生成され、プログラム可能なリソース610と複数のメモリエレメント
606との間に制御信号線によって結合される。一例として、代表的な制御信号線810は、(プログラム可能なリソース806の出力ポートとルーティング回路806の入力ポートとの間に読出制御線811を介して提供される読出制御信号RC
1であり得る)選択された読出制御信号をSRAM0の読出入力に結合し、SRAM0のデータ出力に結合された出力信号線812は、SRAM0からのデータがルーティング回路806を介してプログラム可能なリソースに結合されることを可能にする。例えば、出力信号線812上に提供される出力データは、Q
1であり得て、Q
1は、ルーティング回路806によって、信号線814に沿って、ルーティング回路806の出力ポートとプログラム可能なリソース610の対応する入力ポートとの間でルーティングされる。制御信号は、読出データを制御するために、制御信号線816および818によってルーティング回路802および806にそれぞれ提供される。
【0020】
ここで
図9を参照して、複数のSRAMとDRAMとを有する集積回路デバイスのブロック図が示されている。
図9の回路構成によれば、DRAM902は、集積回路904に結合されている。DRAM902は、DRAMチャネル0〜DRAMチャネル7と表わされる出力チャネル906〜920を備える。DRAMインターフェース922は、集積回路904に提供されたデータが、ここでは4.5メガバイトメモリアレイであり得るネットワーク化されたSRAM(NSRAM0〜NSRAM3)として示されている複数のメモリブロック924〜930のうちの1つにルーティングされることを可能にする。すなわち、ネットワーク化されたSRAM(NSRAM0〜NSRAM3)の各々は、SRAM606などの32個の4K×288ビットSRAMを備え得る。複数のメモリブロック924〜930がSRAMとして示されているが、複数のメモリブロック924〜930はDRAM902よりも概して速いアクセス時間を有するということが理解されるべきである。例えば、メモリブロック924〜930は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシン・コーポレーションから入手可能なeDRAMであってもよい。データおよびコマンドがメモリブロックとプログラム可能なリソース934との間で転送されることを可能にするために、複数のメモリブロック924〜930とプログラム可能なリソース934との間にはプログラム可能なリソースインターフェース932が設けられている。DRAMインターフェース922およびプログラム可能なリソースインターフェース932は、好ましくは専用のインターフェースであり、
図15のクロスバースイッチなどのクロスバースイッチを用いて実現されてもよい。複数のメモリブロック924〜930および対応するインターフェース922および932は、例えば
図6〜
図8の回路に従って実現され得る。DRAM902は集積回路904から分離しているように示されているが、
図19を参照してより詳細に説明するように、DRAMは、同一の集積回路ダイ上に実装されてもよく、または同一の集積回路パッケージ上の別のダイ上に実装されてもよい。
【0021】
図9の構成は、集積回路にメモリを実装する際の効率を向上させることができるので、有益である。例えば、(SRAM924〜930などの)100Mbのダイ上のさらなるキャッシングSRAMがなければ、集積回路デバイス904は、最大300個までの論理キューのための帯域幅保証で400Gb/sのパケットバッファをサポートすることができない。これらのSRAMブロックは、ダイ上になければならない。なぜなら、従来のデバイスでは、外部SRAMのための必要な帯域幅をサポートするためにパッケージI/Oピンが不十分であるからである。さらに、SRAM幅は、DRAMチャネル幅(例えばサイクル当たり256ビット)と整合がとられ、SRAM深さは、複数のこのようなSRAMを組み合わせてさらに大きなメモリにすることによってメモリポートへのメモリ容量の柔軟な割当てを可能にするようにサイズ決めされる。例えば、1MbのビルディングブロックSRAMでは、2Mbが1つのキャッシュに割当てられることができ、10Mbが異なるキャッシュに割当てられることができる。ビルディングブロックSRAMが浅すぎると、密度(すなわち単位面積当たりのビット)が小さくなり、ビルディングブロックSRAMが深すぎると、メモリ容量をメモリポートに割当てるための柔軟性が制限される。
図9の回路構成の特定のアプリケーションは、
図10〜
図14に記載されている。
【0022】
ここで
図10を参照して、ブロック図は、DRAMのキューへのデータの格納を可能にする回路を示している。複数のデータパケットからのデータを有する入力データストリームは、メモリエレメント1002に格納され、当該メモリエレメント1002は、例えば複数の論理FIFOを備え得る。メモリエレメント1004の出力に結合されたルーティング回路1006は、示されているように、データパケットに関連付けられたデータを対応するキュー1008〜1010にルーティングすることを可能にする。第2のルーティング回路1014は、キュー1008〜1010の出力からメモリエレメント1016にデータをルーティングする。したがって、
図10の回路は、データの多重化を可能にするために専用のルーティング回路を使用して、例えばDRAMであり得る大容量記憶エレメント(例えばメモリエレメント1002)からデータを読出し、大容量記憶エレメントにデータを書込むことを可能にし、メモリエレメント1002は、DRAM902であってもよく、メモリエレメント1004および1016は、SRAM924〜930のうちの2つ以上であってもよい。
【0023】
一例として、(
図10に示されるように実現された)
図6〜
図9の回路は、R
aのピーク帯域幅を有するDRAMを使用して、R′の入力線速度で、最大T
c秒にわたってパケットのQ個の論理フローを保持するために、(入力データストリームと出力データストリームとの間の)パケットバッファとして使用され得て、読出速度R
wおよび書込速度R
rは、結合された(R
w+R
r)を有し、当該結合された(R
w+R
r)は、ピーク大容量記憶帯域幅R
aおよびT
cR’の大容量記憶容量未満である。したがって、R″のバッファ読出速度は、ゼロパケットドロップで維持され得る。
図10から明らかであるように、ここではキューとして示されているメモリブロックは、さまざまなパケットからのデータ(例えば、キュー1における斜交平行線がつけられたデータ、キュー2における陰影付きのデータ、またはキュー3における陰影なしのデータ)を格納することを可能にするために使用されることができ、ルーティング回路は、入力データストリームから大容量記憶装置に、および大容量記憶装置から出力データストリームに、データをルーティングすることを可能にする。
【0024】
ここで
図11を参照して、ブロック図は、パケットバッファサブシステムを可能にするより詳細な回路を示している。より特定的には、パケットバッファサブシステム1102は、入力データR
inを受取るための入力ロジック1104および出力データR
outを生成するための出力ロジックに結合されている。パケットバッファサブシステム1102は、パケットバッファコントローラ1108に結合されるパケットバッファ1110を備える。パケットバッファ1110は、例えばDRAMであってもよい。パケットバッファコントローラ1108は、キューイングコーディネータ1116によって制御されるテールキャッシュSRAM1112およびヘッドキャッシュSRAM1114を備える。テール−ヘッドキャッシングについては、
図12および
図13を参照して以下でより詳細に説明する。キューイングコーディネータ1116は、DRAMのバイパスを可能にし、これについては、
図14を参照してより詳細に説明する。
【0025】
ここで
図12を参照して、ブロック図は、ヘッドおよびテール部分のために異なるサイズのメモリアレイを使用したSRAMブロックの実装を示している。特に、対応するメモリブロック924,926および930に結合されたDRAMチャネル906,908および920を含むさまざまなDRAMチャネルが示されている。メモリブロック924,926および930は、別々のテール部分1202およびヘッド部分1204で仕切られており、テール部分は、ヘッド部分よりも概して小さい。すなわち、キューがいつアクセスされるかが予測不可能であり得て、次の読出しが、満たされているキューのためのものであり得るので、ヘッドキャッシュをより大きくする必要がある。メモリブロック926の拡大部に示されているように、濃い陰影によって表わされている特定のメモリエレメント1206は、テールキャッシングのためのメモリエレメントであるのに対して、他の陰影なしのメモリエレメント1208は、ヘッドキャッシングのメモリエレメントである。低遅延を可能にするために、ヘッドキャッシュは、しばしば、テールキャッシュよりもはるかに大きい。
【0026】
ここで
図13を参照して、ブロック図は、ヘッドおよびテールメモリ割当てを有するSRAMブロックの実装を示している。
図13の実施例によれば、濃い陰影で示されている特定のメモリブロックは、テールメモリブロックと表わされるのに対して、陰影なしの他のメモリブロックは、ヘッドメモリブロックである。一例として、SRAM0およびSRAM1は、チャネル0のためのテールキャッシングメモリブロックであるのに対して、SRAM2〜SRAM12は、チャネル0のためのヘッドキャッシングメモリブロックであり、SRAM13およびSRAM14は、チャネル1のためのテールメモリブロックであるのに対して、SRAM15〜SRAM24は、チャネル1のためのヘッドメモリブロックである。
【0027】
ここで
図14を参照して、ブロック図は、ヘッドおよびテールメモリ割当てならびにバイパスチャネルを有するSRAMブロックの実装を示している。特に、チャネル1およびチャネル2の各々のためのさまざまな書込信号は、チャネル0のためのテール書込コマンド(テール書込0)およびヘッド書込コマンド(ヘッド書込0)、ならびに、チャネル1のためのテール書込コマンド(テール書込1)およびヘッド書込コマンド(ヘッド書込1)を含む。また、チャネル0のためのテール読出(テール読出0)およびヘッド読出(ヘッド読出0)値、ならびに、チャネル1のためのテール読出(テール読出1)およびヘッド読出(ヘッド読出1)値も示されている。チャネル1およびチャネル2の各々のためのテールメモリエレメントからヘッドメモリエレメントへのバイパスが設けられている。したがって、
図14は、例えば
図6〜
図13の要素の構成を使用したテール−ヘッドキャッシングの例示的な実現を示している。
【0028】
ここで
図15を参照して、クロスバースイッチのブロック図が示されている。特に、複数のマルチプレクサ1502〜1510の各マルチプレクサは、Di0〜Di3と表わされる入力の各々を受取り、各マルチプレクサのための出力を生成するように結合されている。複数のマルチプレクサに提供される選択信号に基づいて、マルチプレクサ1502は出力Do0を生成し、マルチプレクサ1504は出力Do1を生成し、マルチプレクサ1506は出力Do2を生成し、マルチプレクサ1508は出力Do3を生成し、マルチプレクサ1510は出力Do4を生成する。マルチプレクサ1510の拡大セクションは、トランジスタ1512〜1518を示しており、当該トランジスタ1512〜1518は、選択信号S1〜S4に基づいて、信号Di0〜Di3をそれぞれ受取るための入力に結合され、共通のノードにおいて出力信号Do4に結合されている。
図15のマルチプレクサ構成が一例として示されているが、多重化機能を達成するためにトランジスタの他の構成が実装されてもよいということが理解されるべきである。
図15から明らかであるように、クロスバースイッチは、所与の数の信号をより少ない数の出力に、または所与の数の信号をより大きな数の出力にルーティングするように選択され得る。さらに、コンフィギュレーションデータとして提供されてコンフィギュレーションプロセスによって変更されなければならないプログラム可能なロジックデバイスの一般的なプログラム可能なインターコネクトのためのマルチプレクサ制御信号とは対照的に、クロスバースイッチの選択信号は、動的に変更可能である。したがって、
図15のクロスバースイッチは、
図6〜
図14のルーティング回路のうちのいずれか、またはクロスバースイッチに実装され得る上記のその他の回路で使用され得る。
【0029】
ここで
図16を参照して、実施例に係るプログラム可能なリソースを有するデバイスをプログラムするためのシステムのブロック図が示されている。特に、コンピュータ1602は、メモリ1606から回路設計1604を受取り、不揮発性メモリ1606に格納されるコンフィギュレーションビットストリームを生成するように結合されている。以下でより詳細に説明するように、回路設計は、ハードウェア記述言語(hardware description language:HDL)において規定される回路設計などの高レベル設計であり得る。また、コンピュータは、コンフィギュレーションビットストリームを生成するソフトウェアを実行するように構成され得て、当該コンフィギュレーションビットストリームは、不揮発性メモリ1608に格納され、
図17において以下に記載される集積回路などのプログラム可能な集積回路であり得る集積回路1610に提供される。
【0030】
ここで
図17を参照して、
図2〜
図16の回路を含むプログラム可能なリソースを有するデバイスのブロック図が示されている。プログラム可能なリソースを有するデバイスは、プログラム可能なリソースを有する特定用途向け集積回路(ASIC)などの任意のタイプの集積回路デバイスに実装され得るが、他のデバイスは、専用のプログラム可能なロジックデバイス(PLD)を備える。1つのタイプのPLDは、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)である。CPLDは、互いに接続されるとともに、インターコネクトスイッチマトリクスによって入力/出力(I/O)リソースに接続される2つ以上の「機能ブロック」を含む。CPLDの各々の機能ブロックは、プログラマブル・ロジック・アレイ(PLA)またはプログラマブル・アレイ・ロジック(PAL)デバイスにおいて用いられるのと同様の2レベルAND/OR構造を含む。別のタイプのPLDは、フィールド・プログラマブル・ゲート・アレイ(FPGA)である。典型的なFPGAにおいて、コンフィギュラブル・ロジック・ブロック(CLB)のアレイは、プログラム可能な入力/出力ブロック(IOB)に結合されている。CLBおよびIOBは、プログラム可能なルーティングリソースの階層によって相互接続されている。これらのCLB、IOBおよびプログラム可能なルーティングリソースは、典型的にはオフチップメモリからFPGAのコンフィギュレーションメモリセルへコンフィギュレーションビットストリームをロードすることによってカスタマイズされる。これらのタイプのプログラム可能なロジックデバイスの両方の場合、デバイスの機能は、その目的のためにデバイスに与えられるコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。コンフィギュレーションデータビットは、揮発性メモリ(例えばFPGAおよびいくつかのCPLDにあるようなスタティックメモリセル)、不揮発性メモリ(例えばいくつかのCPLDにあるようなフラッシュメモリ)、またはその他のタイプのメモリセルに格納され得る。
【0031】
図17のデバイスは、FPGAアーキテクチャ1400を備え、当該FPGAアーキテクチャ1400は、マルチギガビットトランシーバ(MGT)1701と、CLB1702と、ランダムアクセスメモリブロック(BRAM)1703と、入力/出力ブロック(IOB)1704と、コンフィギュレーションおよびクロッキングロジック(CONFIG/CLOCKS)1705と、デジタル信号処理ブロック(DSP)1706と、専用の入力/出力ブロック(I/O)1707(例えば、コンフィギュレーションポートおよびクロックポート)と、デジタルクロックマネージャ、アナログ−デジタルコンバータ、システムモニタリングロジックなどの他のプログラム可能なロジック1708とを含む、多数の異なるプログラム可能なタイルを有する。いくつかのFPGAは、例えばソフトウェアアプリケーションを実行するために使用され得る専用のプロセッサブロック(PROC)1710も含む。
【0032】
いくつかのFPGAにおいて、各々のプログラム可能なタイルは、プログラム可能なインターコネクト・エレメント(INT)1711を含み、INT1711は、隣接する各タイルの対応するインターコネクト・エレメントに対して規格化された接続を有する。したがって、まとめられたプログラム可能なインターコネクト・エレメントは、示されているFPGAのためのプログラム可能なインターコネクト構造を実現する。プログラム可能なインターコネクト・エレメント1711は、
図17の上部に含まれる例によって示されるように、同じタイル内でプログラム可能なロジック・エレメントに対する接続も含む。
【0033】
例えば、CLB1702は、ユーザロジックを実現するようにプログラムされ得るコンフィギュラブル・ロジック・エレメント(CLE)1712と単一のプログラム可能なインターコネクト・エレメント1711とを含み得る。BRAM1703は、1つ以上のプログラム可能なインターコネクト・エレメントに加えて、BRAMロジックエレメント(BRL)1713を含み得る。BRAMは、コンフィギュレーションロジックブロックの分散RAMから分離したた専用のメモリを含んでいる。通常、タイルに含まれるインターコネクト・エレメントの数は、タイルの高さに依存する。図示されている実施例において、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数も使用されてもよい。DSPタイル1706は、適切な数のプログラム可能なインターコネクト・エレメントに加えて、DSPロジックエレメント(DSPL)1714を含み得る。IOB1704は、プログラム可能なインターコネクト・エレメント1711の1つのインスタンスに加えて、例えば入力/出力ロジックエレメント(IOL)1715の2つのインスタンスを含み得る。デバイスの接続の位置は、その目的のためにデバイスに与えられるコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。プログラム可能なインターコネクトは、コンフィギュレーションビットストリームのビットに応答して、インターコネクト線を備える接続が、さまざまな信号を、プログラム可能なロジックにおいて実現される回路、または、BRAMもしくはプロセッサなどの他の回路に結合するために用いられることを可能にする。
【0034】
図示されている実施例において、ダイの中心付近の列領域は、コンフィギュレーション、クロック、および他の制御ロジックに使用される。この列から延在するconfig/clock分配領域
1709は、FPGAの幅方向にわたってクロックおよびコンフィギュレーション信号を分配するために使用される。
図17に示されるアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する規則的な列構造を分断させる追加のロジックブロックを含む。追加のロジックブロックは、プログラム可能なブロックおよび/または専用のロジックであり得る。例えば、
図17に示されるプロセッサブロックPROC1710は、CLBおよびBRAMのいくつかの列に及ぶ。
【0035】
図17のFPGAは、BRAM1703よりも大きな拡張メモリエレメント1716をさらに備える。拡張メモリエレメント1716は、回路1700のブロックを参照して説明したさまざまなインターコネクト・エレメントから切離して、SRAMブロックおよび専用のインターコネクト・エレメントを備え得て、回路1700のブロックまたは回路1700の外部のデバイスによって拡張メモリエレメントのメモリエレメントへのアクセスを可能にする。
【0036】
なお、
図17は、例示的なFPGAアーキテクチャのみを示すことを意図している。列におけるロジックブロックの数、列の相対幅、列の数および順序、列に含まれるロジックブロックのタイプ、ロジックブロックの相対的サイズ、および
図17の上部に含まれるインターコネクト/ロジックの実現例は、純粋に例示である。例えば、実際のFPGAでは、2つ以上の隣接するCLBの列は、通常は、ユーザロジックの効率的な実施を容易とするために、CLBがある場所ならどこでも含まれる。
図17の実施例は、プログラム可能なリソースを有する集積回路に関係するが、以下でより詳細に説明する回路および方法が、任意のタイプのASICにおいて実現されてもよい、ということが理解されるべきである。
【0037】
したがって、
図17の要素の構成は、36キロバイトメモリエレメントであり得るBRAMを含む2つのグループにSRAMを分割し、拡張メモリエレメント1716は、BRAMよりも大きく、例えば36Mbであり得るメモリのブロックを備える。拡張メモリエレメント1716のより深いメモリを設けることによって、単位面積当たりより多くのビットが提供され、より大きなメモリを達成するために複数のBRAMをカスケード接続する必要がない。拡張メモリエレメント1716は、上記の、より特定的には
図6〜
図8に示されているメモリエレメントおよび専用のルーティング・インターコネクト・エレメントの構成、または、
図9において実現されているような
図6〜
図8の構成を用いて実現されてもよい。
【0038】
ここで
図18を参照して、
図17のデバイスのコンフィギュラブル・ロジック・エレメントのブロック図が示されている。特に、
図18は、
図17のコンフィギュレーションロジックブロック1702のコンフィギュラブル・ロジック・エレメントを単純な形態で図示している。
図18の実施例において、スライスM 1801は、4つのルックアップテーブル(LUTM)1801A〜1801Dを含み、各々は、6つのLUTデータ入力端子A1〜A6,B1〜B6,C1〜C6およびD1〜D6によって駆動され、各々は、2つのLUT出力信号O5およびO6を提供する。LUT 1801A〜1801DからのO6出力端子は、それぞれスライス出力端子A〜Dを駆動する。LUTデータ入力信号は、入力マルチプレクサを介してFPGAインターコネクト構造によって供給されるが、入力マルチプレクサは、プログラム可能なインターコネクト・エレメント1811によって実現可能であり、LUT出力信号は、インターコネクト構造にも供給される。スライスMは、以下のものも含む。すなわち、出力端子AMUX〜DMUXを駆動する出力選択マルチプレクサ1811A〜1811D、メモリエレメント1802A〜1802Dのデータ入力端子を駆動するマルチプレクサ1812A〜1812D、組み合わせマルチプレクサ1816,1818および1819、バウンスマルチプレクサ回路1822〜1823、インバータ1805およびマルチプレクサ1806によって表わされる回路(ともに入力クロック経路における任意の反転を提供する)、ならびに、マルチプレクサ1814A〜1814D,1815A〜1815D,1820〜1821および排他的ORゲート1813A〜1813Dを有する桁上げロジックである。これらの全ての要素は、
図18に示されるようにともに結合されている。
図18に示されるマルチプレクサについて選択入力が示されていないが、当該選択入力は、コンフィギュレーションメモリセルによって制御される。すなわち、コンフィギュレーションメモリセルに格納されたコンフィギュレーションビットストリームのコンフィギュレーションビットは、マルチプレクサの選択入力に結合されて、マルチプレクサへの正しい入力を選択する。周知であるこれらのコンフィギュレーションメモリセルは、明確にするために
図18から省略されているが、同様に本明細書における他の選択された図からも省略されている。
【0039】
図示されている実施例において、メモリエレメント1802A〜1802Dの各々は、同期または非同期フリップフロップまたはラッチとして機能するようにプログラムされ得る。同期機能と非同期機能との間の選択は、Sync/Asynch選択回路1803をプログラムすることによって、スライス中の全ての4つのメモリエレメントに対してなされる。メモリエレメントがプログラムされて、S/R(セット/リセット)入力信号がセット機能を提供する場合、REV入力端子はリセット機能を提供する。メモリエレメントがプログラムされて、S/R入力信号がリセット機能を提供する場合、REV入力端子はセット機能を提供する。メモリエレメント1802A〜
1802Dは、クロック信号CKによってクロックされ、当該クロック信号CKは、例えばグローバルクロックネットワークまたはインターコネクト構造によって提供され得る。このようなプログラム可能なメモリエレメントは、FPGA設計の分野において周知である。各々のメモリエレメント1802A〜1802Dは、登録された出力信号AQ〜DQをインターコネクト構造に提供する。LUT 1801A〜1801Dの各々が2つの出力信号O5およびO6を提供するので、LUTは、5つの共有入力信号(IN1〜IN5)を有する2つの5入力LUT、または入力信号IN1〜IN6を有する1つの6入力LUTとして機能するように構成され得る。
【0040】
図18の実施例において、LUTM 1801A〜1801Dの各々は、いくつかのモードのいずれかで機能し得る。ルックアップテーブルモードにおける場合、各々のLUTは、入力マルチプレクサを介してFPGAインターコネクト構造によって供給される6つのデータ入力信号IN1〜IN6を有する。64個のデータ値のうちの1つが、信号IN1〜IN6の値に基づいてコンフィギュレーションメモリセルからプログラム可能に選択される。RAMモードにおける場合、各々のLUTは、共有アドレシングを有する単一の64ビットRAMまたは2つの32ビットRAMとして機能する。RAM書込データは、入力端子DI1を介して(LUT 1801A〜1801Cのためのマルチプレクサ1817A〜1817Cを介して)64ビットRAMに供給されるか、または入力端子DI1およびDI2を介して2つの32ビットRAMに供給される。LUT RAMにおけるRAM書込動作は、マルチプレクサ1806からのクロック信号CK、およびマルチプレクサ1807からの書込イネーブル信号WENによって制御されるが、マルチプレクサ1806およびマルチプレクサ1807は、クロックイネーブル信号CEまたは書込イネーブル信号WEのいずれかを選択的に通し得る。シフトレジスタモードでは、各々のLUTは、2つの16ビットシフトレジスタとして、または直列に結合されて単一の32ビットシフトレジスタを形成する2つの16ビットシフトレジスタをであるように機能する。入力端子DI1およびDI2の一方または両方を介して、シフトイン信号が提供される。16ビットシフトアウト信号および32ビットシフトアウト信号は、LUT出力端子を介して提供され得て、また、32ビットシフトアウト信号は、LUT出力端子MC31を介してより直接的に提供され得る。LUT 1801Aの32ビットシフトアウト信号MC31は、また、出力選択マルチプレクサ1811DおよびCLE出力端子DMUXを介して、シフトレジスタ連鎖のための一般的なインターコネクト構造へと提供され得る。したがって、上記の回路および方法は、
図17および
図18のデバイスなどのデバイス、またはその他の好適なデバイスにおいて実現可能である。
【0041】
図19の実施例によれば、印刷回路基板などの回路基板1902は、マルチダイ集積回路1904を受けるように構成されている。マルチダイ集積回路1904は、インターポーザ回路1908を受けるように結合された基板1906を備える。インターポーザ1908は、FPGAチップ1910およびDRAMチップ1912回路などの複数の集積回路チップまたはダイを基板1906に結合することを可能にする。はんだボール1914は、シリコンビア(TSV)などのさまざまなインターコネクト1916を介して、さまざまなチップから回路基板1902に信号を結合することを可能にする。また、インターコネクト
1918は、マルチダイ集積回路のさまざまなチップ間の信号のルーティングを可能にする。インターポーザ回路1908は、さまざまな金属層を有するシリコン基板であってもよく、当該金属層は、FPGAチップとDRAMチップとの間、またはチップのうちの1つと基板1906との間での信号のルーティングを可能にするインターコネクト・エレメントを備える。しかし、インターポーザ回路は、示されているように信号のルーティングを可能にする導電性要素を有するいかなる材料であってもよい。FPGAチップ1910およびDRAMチップ1912の全ての回路は単一のダイ上に実装され得るが、
図19の実施例では、FPGAチップ1910およびDRAMチップ1912のさまざまな回路のより効率的な実装が可能になる。例えば、いくつかの回路は、特定の寸法のトランジスタを形成するプロセスなどの1つのプロセスに従って製造された集積回路チップにより効率的に実装され得るが、他の回路は、別のプロセスに従って製造された集積回路チップにより効率的に実装され得る。したがって、
図19の構成は、
図9の回路を実現するために使用され得て、DRAM902は、DRAM1912として実現され、複数のメモリエレメント924〜930は、基板1906ではSRAMまたはEDRAMとして実現される。DRAMインターフェース922およびプログラム可能なリソースインターフェース932は、基板1906上に、またはインターポーザ1908の一部として実装され得る。
【0042】
ここで
図20を参照して、フローチャートは、集積回路デバイスにメモリを実装する方法を示している。特に、ブロック2002において、プログラム可能なインターコネクト・エレメントに結合されたプログラム可能なリソースを実装し、プログラム可能なインターコネクト・エレメントは、プログラム可能なリソースとの信号の通信を可能にする。プログラム可能なインターコネクトは、例えば
図17のIOBまたはCLEに関連付けられたインターコネクト・エレメントであってもよい。ブロック2004において、複数のメモリブロックを設け、ブロック2006において、専用のインターコネクト・エレメントを複数のメモリブロックに結合する。複数のメモリブロックは、例えば
図17の拡張メモリエレメント1716であってもよい。ブロック2008において、DRAMブロックを実装し得て、専用のインターコネクト・エレメントは、DRAMブロックと複数のメモリブロックとの間に実装され得る。
図20の方法のさまざまな要素は、記載されているような
図1〜
図19の回路を用いて、または何らかの他の好適な回路を用いて実現され得る。方法の特定の要素について説明しているが、方法のさらなる要素または要素2002〜2008に関連するさらなる詳細が
図1〜
図19の開示に従って実現されてもよい、ということが理解されるべきである。
【0043】
したがって、メモリを有する新規の集積回路デバイスおよび集積回路デバイスにメモリを実装する方法について説明してきたということが理解できる。開示されている発明を組込む多数の代替例および等価物が存在するということが当業者によって理解されるであろう。その結果、本発明は、上記の実施例によって限定されるものではなく、以下の特許請求の範囲によってのみ限定される。