(57)【特許請求の範囲】
【請求項１】
メモリ構成であって、
複数のメモリブロックと、
第１の群のアクセスポートおよび第２の群のアクセスポートと、
前記第１および第２の群のアクセスポートの各対を前記複数のメモリブロックのそれぞれのメモリブロックに結合するルーティング回路系とを含み、前記第１および第２の群のアクセスポートの各対は、前記第１の群のアクセスポートからの第１のアクセスポート、および前記第２の群のアクセスポートからの第２のアクセスポートを含み、
各第１のアクセスポートは、前記複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスを許され、前記複数のメモリブロックの前記それぞれのメモリブロックの第２の部分への読出アクセスを許され、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第１の部分への読出アクセスを許されず、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第２の部分への書込アクセスを許されず、
各第２のアクセスポートは、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第２の部分への書込アクセスを許され、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第１の部分への読出アクセスを許され、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第２の部分への読出アクセスを許されず、前記複数のメモリブロックの前記それぞれのメモリブロックの前記第１の部分への書込アクセスを許されない、メモリ構成。
【請求項２】
前記メモリ構成はネットワークおよびシステムの間に接続されたブリッジインターフェースに含まれ、
前記複数のメモリブロックの各々の各第１の部分はシステムへの送信のためにネットワークから受けられるデータのみをバッファ処理するために用いられ、
前記複数のメモリブロックの各々の各第２の部分はネットワークへの送信のためにシステムから受けられるデータのみをバッファ処理するために用いられる、請求項１に記載のメモリ構成。
【請求項３】
前記複数のメモリブロックは複数の積層された半導体ダイ上に実現される、請求項１または２に記載のメモリ構成。
【請求項４】
前記複数のメモリブロックの各々は、前記複数の積層された半導体ダイのそれぞれの半導体ダイ上に実現される、請求項３に記載のメモリ構成。
【請求項５】
インターポーザをさらに含み、前記複数の積層された半導体ダイは、前記インターポーザの前側においてコンタクトに電気的に結合される、請求項３または４に記載のメモリ構成。
【請求項６】
前記複数のメモリブロックの各々は２つのメモリスライスを含む、請求項１〜５のいずれか１つに記載のメモリ構成。
【請求項７】
前記ルーティング回路系は、前記複数のメモリブロックと前記第１および第２の群のアクセスポートとの間において１つ以上の経路において遅延を調整するよう設定可能なプログラマブル遅延回路系を含む、請求項１〜６のいずれか１つに記載のメモリ構成。
【請求項８】
遅延は、前記１つ以上の経路のうち、最小のレイテンシを示す経路に対しては調整されない、請求項７に記載のメモリ構成。
【請求項９】
前記プログラマブル遅延回路系は複数のＭＵＸ選択可能経路を含み、前記ＭＵＸ選択可能経路の各々は異なる数のフリップフロップを含む、請求項７に記載のメモリ構成。
【請求項１０】
前記複数のメモリブロックの各々ごとに、前記メモリブロックの前記第１および第２の部分は、各々、整数のメモリバンクを含む、請求項１〜９のいずれか１つに記載のメモリ構成。
【請求項１１】
前記ルーティング回路系は、前記複数のメモリブロックならびに前記第１および第２の群のアクセスポートに結合されるクロスバースイッチを含み、前記クロスバースイッチは、前記メモリブロックのシーケンシャルなアクセスが生じ得る速度より速い速度でクロック制御される、請求項１〜９のいずれか１つに記載のメモリ構成。
【請求項１２】
前記複数のメモリブロックおよび前記ルーティング回路系は、
各メモリブロックごとに、それぞれの第１の部分に含まれるメモリブロックの量、およびそれぞれの第２の部分に含まれるメモリブロックの量を、調整するよう構成される、請求項１〜１１のいずれか１つに記載のメモリ構成。
【請求項１３】
前記複数のメモリブロックの各々は、
複数のメモリバンクを含み、各メモリバンクは１つ以上のアクセスポートを有し、前記複数のメモリブロックの各々は、さらに、
各メモリバンクごとに、それぞれの選択回路を含み、前記選択回路は、読出要求を、前記第１および第２の群のアクセスポートの対応する対の一方のアクセスポートから、前記メモリバンクの前記１つ以上のアクセスポートに、送るよう構成され、書込要求を、前記第１および第２の群のアクセスポートの対応する対の他方のアクセスポートから、前記メモリバンクの前記１つ以上のアクセスポートに、送るよう構成される、請求項１２に記載のメモリ構成。
【請求項１４】
ルーティング回路系を使用することを備える方法であって、
第１の群のアクセスポートおよび第２の群のアクセスポートの各対を複数のメモリブロックのそれぞれのメモリブロックに結合するステップを含み、前記第１および第２の群のアクセスポートの各対は、前記第１の群のアクセスポートからの第１のアクセスポート、および前記第２の群のアクセスポートからの第２のアクセスポートを含み、さらに、
複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスおよび前記複数のメモリブロックの前記それぞれのメモリブロックの第２の部分への読出アクセスのみを前記第１の群のアクセスポートの各々に許すステップと、
前記複数のメモリブロックの前記それぞれのメモリブロックの第２の部分への書込アクセスおよび前記複数のメモリブロックの前記それぞれのメモリブロックの前記第１の部分への読出アクセスのみを前記第２の群のアクセスポートの各々に許すステップと、を含む、方法。
【請求項１５】
各メモリブロックごとに、それぞれの第１の部分に含まれるメモリブロックの量、およびそれぞれの第２の部分に含まれるメモリブロックの量を、コンフィギュレーション信号に応答して調整するステップをさらに含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
１つ以上の実施の形態は、一般的にデータ記憶および検索に関する。
【背景技術】
【０００２】
背景
多くのネットワーク装置は、ブリッジインターフェイスを含んで、データを１つのプロトコルフォーマットから別のプロトコルフォーマットに変換するか、データをルーティングするか、または他の処理を実行する。たとえば、ブリッジインターフェイスはネットワーク間でデータパケットフォーマットを変換するよう実現されてもよい。
【０００３】
別の例として、ブリッジインターフェイスは、ネットワークとコンピューティングシステムとの間でデータフォーマットを変換するために用いられてもよい。説明を容易にするため、実施の形態および実施例は、主に、光ネットワークとそれに接続されるコンピューティングシステムとの間においてインターフェイスを設けるよう構成されるネットワークブリッジを参照して記載される。
【０００４】
設計およびデバッギングのために必要とされる時間ならびに投資の低減のために、ブリッジインターフェイスはプログラマブル集積回路（ＩＣ）を用いて実現されてもよく、それは回路設計を実施するように構成されてもよい多くのロジックおよびルーティングリソースを含む。プログラマブルＩＣは、回路設計の実施、試験および修正を、当該回路設計を特定用途向けＩＣ（ＡＳＩＣ）として実現することなく、可能にする。このような態様で、開発時間およびコストが低減され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ブリッジインターフェイスは、しばしば効率的な処理のためにメモリにおいてデータパケットをバッファ処理する。従来のブリッジインターフェイスは、データバッファ処理を実施するためにオフチップメモリ（たとえばＤＲＡＭ）を用いる。しかしながら、光ネットワークにおいて用いられるもののような高速通信速度適用例（たとえば４００Ｇｂｐｓ全二重方式）の場合、多くの場合、プログラマブルＩＣパッケージには、メモリへのアクセスコンフリクトによってもたらされるスループットにおける低減を補償するように十分なピンはない。
【０００６】
１つ以上の実施の形態は、上記の問題の１つ以上に対応してもよい。
【課題を解決するための手段】
【０００７】
概要
メモリ構成の１つの実施の形態は、複数のメモリブロック、第１の群のアクセスポート、および第２の群のアクセスポートを含むことができる。ルーティング回路系は、第１および第２の群のアクセスポートの各対を、複数のメモリブロックのそれぞれのメモリブロックに結合することができる。アクセスポートの各対は、第１の群からの第１のアクセスポートおよび第２の群からの第２のアクセスポートを含むことができる。第１のアクセスポートは、複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスを有することが可能であり、当該メモリブロックの第２の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第２の部分への読出アクセスを有することが可能であり、当該メモリブロックの第１の部分への読出アクセスを有することが可能ではない。第２のアクセスポートは、当該それぞれのメモリブロックの第２の部分への書込アクセスを有することが可能であり、当該メモリブロックの第１の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第１の部分への読出アクセスを有することが可能であり、当該メモリブロックの第２の部分への読出アクセスを有することが可能ではない。
【０００８】
この実施の形態においては、複数のメモリブロックの各々の各第１の部分は排他的に出口データをバッファ処理するために用いられることが可能であり、複数のメモリブロックの各々の各第２の部分は排他的に入来データをバッファ処理するために用いられることが可能である。複数のメモリブロックは複数の積層された半導体ダイ上に実現されることが可能である。複数のメモリブロックの各々は、複数の積層された半導体ダイのそれぞれの半導体ダイ上に実現されることが可能である。
【０００９】
この実施の形態においては、メモリ構成は、インターポーザをさらに含むことが可能であり、複数の積層された半導体ダイは、インターポーザの前側においてコンタクトに電気的に結合されることが可能である。複数のメモリブロックの各々は２つのメモリスライスを含むことが可能である。ルーティング回路系は、複数のメモリブロックと第１および第２の群のアクセスポートとの間において１つ以上の経路においてタイミングを調整するよう設定可能なプログラマブル遅延回路系を含むことが可能である。タイミングは、１つ以上の経路のうち、最小のレイテンシを示す経路に対しては調整されない。プログラマブル遅延回路系は複数のＭＵＸ選択可能経路を含むことが可能であり、ＭＵＸ選択可能経路の各々は、異なる数のフリップフロップを含むことが可能である。複数のブロックの各々ごとに、メモリブロックの第１および第２の部分は、各々、整数のメモリバンクを含むことが可能である。
【００１０】
この実施の形態においては、ルーティング回路系は、複数のメモリブロックならびに第１および第２の群のアクセスポートに結合されるクロスバースイッチを含むことが可能であり、クロスバースイッチは、メモリブロックのシーケンシャルなアクセスが生じ得る速度より速い速度でクロック制御されて、行頭ブロッキングを低減することが可能である。複数のメモリブロックおよびルーティング回路系は、各メモリブロックごとに、それぞれの第１の部分に含まれるメモリブロックの量、およびそれぞれの第２の部分に含まれるメモリブロックの量を、コンフィギュレーションビットストリームに応答して調整するよう構成されることが可能である。この実施の形態においては、複数のメモリブロックの各々は、複数のメモリバンクを含むことができ、各メモリバンクは１つ以上のアクセスポートを有することが可能であり、複数のメモリブロックの各々は、さらに、各メモリバンクごとに、それぞれの選択回路を含むことができ、それぞれの選択回路は、読出要求を、コンフィギュレーションビットストリームによって示される第１および第２の群のアクセスポートの対応する対の一方のアクセスポートから、当該メモリバンクの１つ以上のアクセスポートに、送るよう構成されることが可能であり、書込要求を、第１および第２の群のアクセスポートの対応する対の他方のアクセスポートから、当該メモリバンクの１つ以上のアクセスポートに、送るよう構成されることが可能である。
【００１１】
ネットワークインターフェイス回路の実施の形態は、ネットワーク側の並直列変換器／直並列変換器（ＳｅｒＤｅｒ）回路、ネットワーク側のＳｅｒＤｅｓ回路に結合される第１の群のアクセスポート、システム側のＳＥＲＤＥＳ回路、およびシステム側のＳｅｒＤｅｓ回路に結合される第２の群のアクセスポートを含むことが可能である。複数のメモリブロックおよびルーティング回路系が、半導体ダイの積層に含まれることが可能である。ルーティング回路系は、複数のメモリブロックを第１および第２の群のアクセスポートに結合することが可能である。各メモリブロックごとに、それぞれの第１のアクセスポートは、当該メモリブロックの第１の部分への書込アクセスを有することが可能であり、当該メモリブロックの第２の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第２の部分への読出アクセスを有することが可能であり、当該メモリブロックの第１の部分への読出アクセスを有することが可能ではない。第２のアクセスポートは、当該それぞれのメモリブロックの第２の部分への書込アクセスを有することが可能であり、当該メモリブロックの第１の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第１の部分への読出アクセスを有することが可能であり、当該メモリブロックの第２の部分への読出アクセスを有することが可能ではない。
【００１２】
この実施の形態においては、ルーティング回路は、メモリブロックのシーケンシャルなアクセスが生じ得る速度の２倍より速い速度でクロック制御されるクロスバースイッチを含むことが可能である。各メモリブロックの各第１の部分は排他的に出口データをバッファ処理するために用いられることが可能であり、各メモリブロックの各第２の部分は排他的に入来データをバッファ処理するために用いられることが可能である。各ブロックごとに、メモリブロックの第１および第２の部分は、各々、整数のメモリバンクを含むことが可能である。
【００１３】
ブリッジインターフェイス回路の実施の形態は第１のデータフォーマットでデータを送受信するように構成された第１のトランシーバ回路を含むことが可能である。第２のトランシーバ回路は、第２のフォーマットでデータを送受信するよう構成することが可能である。変換回路は第１および第２のトランシーバ回路に結合されることが可能である。変換回路は、データを第１のフォーマットから第２のフォーマットに変換し、データを第２のフォーマットから第１のフォーマットに変換するよう、構成することができる。メモリ回路は変換回路に結合されることが可能である。メモリ回路は複数のメモリブロックと、第１の群のアクセスポートと、第２の群のアクセスポートと、複数のメモリブロックのそれぞれのメモリブロックに第１および第２の群のアクセスポートの各対を結合するルーティング回路系とを含むことが可能である。第１および第２の群のアクセスポートの各対のアクセスポートは、第１の群のアクセスポートからの第１のアクセスポート、および第２の群のアクセスポートからの第２のアクセスポートを含むことが可能である。各第１のアクセスポートは、複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスを有することが可能であり、当該メモリブロックの第２の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第２の部分への読出アクセスを有することが可能であり、当該メモリブロックの第１の部分への読出アクセスを有することが可能ではない。各第２のアクセスポートは、当該それぞれのメモリブロックの第２の部分への書込アクセスを有することが可能であり、当該メモリブロックの第１の部分への書込アクセスを有することが可能ではなく、当該メモリブロックの第１の部分への読出アクセスを有することが可能であり、当該メモリブロックの第２の部分への読出アクセスを有することが可能ではない。
【００１４】
この実施の形態においては、変換回路は、第１のトランシーバ回路とメモリ回路との間において第１のポート群のみを通ってデータをルーティングし、第２のトランシーバ回路とメモリ回路との間において第２のポート群のみを通ってデータをルーティングするよう構成することが可能である。第１のポート群は第２のポート群より第１のトランシーバに接近して位置することが可能であり、第２のポート群は第１のポート群より第２のトランシーバに接近して位置することが可能である。
【００１５】
方法の実施の形態は、第１の群のアクセスポートおよび第２の群のアクセスポートの各対を複数のメモリブロックのそれぞれのメモリブロックに結合するステップを含み、第１および第２の群のアクセスポートの各対は、第１の群のアクセスポートからの第１のアクセスポート、および第２の群のアクセスポートからの第２のアクセスポートを含むことが可能であり、さらに、複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスを有するように、および複数のメモリブロックのそれぞれのメモリブロックの第２の部分への読出アクセスを有するように、第１の群のアクセスポートの各々を設定するステップと、複数のメモリブロックのそれぞれのメモリブロックの第１の部分への読出アクセスを有さないように、および複数のメモリブロックのそれぞれのメモリブロックの第２の部分への書込アクセスを有さないように、第１の群のアクセスポートの各々を設定するステップと、複数のメモリブロックのそれぞれのメモリブロックの第２の部分への書込アクセスを有するように、および複数のメモリブロックのそれぞれのメモリブロックの第１の部分への読出アクセスを有するように、第２の群のアクセスポートの各々を設定するステップと、複数のメモリブロックのそれぞれのメモリブロックの第２の部分への読出アクセスを有さないように、および複数のメモリブロックのそれぞれのメモリブロックの第１の部分への書込アクセスを有さないように、第２の群のアクセスポートの各々を設定するステップとを含むことが可能である。
【００１６】
この方法のこの実施の形態は、さらに、各メモリブロックごとに、それぞれの第１の部分に含まれるメモリブロックの量、およびそれぞれの第２の部分に含まれるメモリブロックの量を、コンフィギュレーションビットストリームに応答して調整するステップを含むことが可能である。
【００１７】
他の実施の形態は以下の詳細な記載および特許請求の範囲の考察から認識される。
開示された実施の形態のさまざまな局面および利点は、以下の詳細な記載の検討、および図面への参照で明らかになる。
【図面の簡単な説明】
【００１８】
【図１】１つ以上の実施の形態に従ってプログラマブルＩＣとともに実現されたネットワークインターフェイスのブロック図を示す。
【図２】メモリアーキテクチャのブロック図を示す。
【図３】メモリブロックが入来データおよび出口データのためにメモリバンクのそれぞれの群に区分されるのを示す。
【図４】区分されたメモリスライスのメモリバンクの読出／書込ポートへのアクセスを制御するよう構成されてもよい回路のブロック図を示す。
【図５】１つ以上の実施の形態に従って、ポート群とメモリとの間においてデータをルーティングするために用いられてもよいルーティング回路系のブロック図を示す。
【図６】１つ以上の実施の形態に従って集積回路に結合されてもよいインターポーザ上に積層された複数のダイを用いて実施されたメモリ構成の側面図を示す。
【図７】１つ以上の実施の形態に従って構成されてもよい例示のプログラマブルＩＣを示す。
【発明を実施するための形態】
【００１９】
図面の詳細な説明
高速ブリッジインターフェイス適用例については、多くの場合、プログラマブルＩＣパッケージには、メモリの競合するアクセスによるスループットにおける低減を補償するように利用可能なピンは十分にはない。しかしながら、ブリッジインターフェイスのためのメモリ容量要件は、一般的に、現在の加工技術を用いてメモリがプログラマブルＩＣパッケージ内に集積されることを可能にするように十分に低い（たとえば１ＧＢ〜２ＧＢ）。以前のブリッジインターフェイス実現例は、制御ロジックを利用してメモリアクセスを調停してアクセスコンフリクトを回避する。しかしながら、プログラマブルＩＣにおいてそのような制御ロジックを実現することは多くのプログラマブルなリソースを必要とし、それによって、ブリッジインターフェイスのロジックを実現するよう利用可能なプログラマブルリソースの数を低減する。１つ以上の実施の形態は、コンフリクトがない効率的なメモリ構成を提供する。システムはコンフリクトがないので、プログラマブルなリソースは調停回路系を実現することを求められない。
【００２０】
１つ以上の実施の形態においては、メモリ構成が、コンフリクトのないメモリアクセスのために提供される。メモリ構成は、調停が必要でないように、アクセスを特定のメモリアドレスに向けるよう、効率的なルーティングシステムを実現する。
【００２１】
図１は、１つ以上の実施の形態に従ってプログラマブルＩＣとともに実現されたブリッジインターフェイスのブロック図を示す。この例において、ネットワークブリッジインターフェイス１００はプログラマブルＩＣ１０２を用いて実現される。プログラマブルＩＣ１０２は、ネットワークによって用いられる第１のプロトコルフォーマットにおけるデータの送信および受信のための第１の組の並直列変換器／直並列変換器（ＳｅｒＤｅｓ）トランシーバ回路１０６と、システムによって用いられる第２のプロトコルフォーマットにおけるデータの送信および受信のための第２の組のＳｅｒＤｅｓトランシーバ回路１１０とを含む。参照を容易にするため、ネットワークからシステム側への送信のために受けられるデータは、入来データと呼ばれ得、システムからネットワークへの送信のために受けられるデータは出口データと呼ばれ得る。この例において、矢印１２０および１２２は、入来メモリバッファ１０４Ａを通る入来データフローを示す。矢印１２４および１２６は、出口メモリバッファ１０４Ｂを通る出口データフローを示す。プログラマブルなリソース１０８は、第１および第２のプロトコルフォーマット間でデータを変換し、それぞれのメモリバッファ１０４Ａおよび１０４Ｂ間で入来データおよび出口データをルーティングする変換回路１０９を実現するために用いられる。
【００２２】
図２は、１つ以上の実施の形態に従ってブリッジインターフェイス回路を実現するために用いられてもよいメモリアーキテクチャ２００のブロック図を示す。ネットワークから受けられるデータおよびネットワークに向けられるデータは、第１のポート群２０４（ポート群Ａ）を介してメモリ２０８において書込みおよび読出しされ、システムから受けられるデータおよびシステムに向けられるデータは、第２のポート群２０６（ポート群Ｂ）を介してメモリにおいて書込みおよび読出しされる。メモリアーキテクチャは２つのポート群のポートを対に組織化し、各対のメモリアクセスをメモリのそれぞれの区分に制限する。この例において、メモリは４つのメモリブロックに区分され、各メモリブロックはメモリスライスの対を含む。たとえば、ルーティング回路系２０９は、ポート１Ａおよびポート１Ｂにのみ、メモリスライス１Ａおよび１Ｂからなる第１のメモリブロックへのアクセスを許すよう構成される。別の例として、ポート２Ａおよび２Ｂのみが、メモリスライス２Ａおよび２Ｂからなる第２のメモリブロックにアクセスを許される。各ポート群対ごとに、入来データは、対応ブロックのメモリスライスの第１のメモリスライスを用いて処理され、出口データは、対応ブロックのメモリスライスの第２のメモリスライスを用いて処理される。たとえば、１つの実現例においては、ポート１Ａおよび１Ｂを含むポート群対ごとに、入来データはメモリスライス１Ａを用いて処理され、出口データはメモリスライス１Ｂを用いて処理される。メモリブロックの各スライスが、ポート群対（たとえば１Ａおよび１Ｂ）の一方のポートに排他的な書込アクセスを与え、他方に排他的な読出アクセスを与えるよう実現される限り、入来データおよび出口データを、データブロックの異なる部分（つまり異なるメモリスライス）を用いて処理することにより、ポート群対におけるポートがメモリの部分への読出アクセスまたは書込アクセスのために競合するのを防ぐことが可能である。このように、入来データおよび出口データは、コンフリクトのない態様においては処理することが可能である。
【００２３】
上記の例が各メモリブロックを入来データのための１つのスライスおよび出口データのための１つのスライスに区分する一方で、１つ以上の実施の形態においては、異なる量のメモリを入来データおよび出口データのために用いるために、各メモリブロックが区分されてもよいことが、認識される。たとえば、多くの適用例においては、入来データバッファ処理は、輻輳を軽減するよう、出口データバッファ処理より多くのメモリを必要とするかもしれない。図３は、１つ以上の実施の形態に従ってメモリブロックが入来データおよび出口データのためにメモリバンクのそれぞれの群に区分されるのを示す。メモリブロック３０２および３０４はメモリブロックのいくつかの異なる区分構成を示す。この例においては、各メモリブロック３０２および３０４は、０ｘ００００００から０ｘＦＦＦＦＦＦの範囲のアドレス空間をともになって含む２つのそれぞれのメモリスライス（たとえばスライス１Ａおよび１Ｂ）を含む。
【００２４】
各メモリスライス（たとえばスライス１Ａ）は、独立してアクセスされてもよい４つのメモリバンク（たとえばバンク５〜８）を含む。たとえば、各バンクは、マルチポートメモリ（たとえば１読出１書込メモリ）であってもよい。メモリブロック３０２および３０４はメモリバンク間において任意のアドレス境界で区分されてもよい。右向き矢印は、入来データのために用いられるメモリバンクを示し、左向き矢印は、出口データのために用いられるバンクを示す。この例においては、メモリブロック３０２および３０４の各々は、出口データのために２つのメモリバンクを割当て、入来データのために６つのメモリバンクを割当てるよう、区分される。メモリブロック３０２は境界３０６でメモリバンクの２つの隣接する群に区分される。境界３０６より下のアドレスは入来データのために用いられ、境界より上のアドレスは出口データのために用いられる。別の実施の形態においては、メモリブロックはメモリバンク間において任意の態様で区分されてもよい。たとえば、メモリブロック３０４において示されるように、メモリスライス２Ｂにおけるバンク１〜３、ならびにメモリスライス２Ａにおけるバンク５、６および８は、入来データ向けであり；メモリスライス２Ｂにおけるバンク４およびメモリスライス２Ａにおけるバンク７は、出口データ向けである。
【００２５】
各メモリブロックを実現するために用いられるメモリ回路は、メモリ回路のメモリセルに読出または書込を行なうよう用いられてもよい、ある数のポートを有することが理解される。個々のメモリ回路のポートをポート群ＡおよびＢのポートと区別するために、メモリ回路のポートは内部ポートと呼ばれ得る。区分されたスライスのために排他的な読出および書込アクセスを与えるために、各スライスは、２つの内部書込ポート−ポート群（たとえばポート群Ａおよびポート群Ｂ）の各ポートごとに１つ−とともに実現される。これは、ポート群Ａからのポートがスライスの第１の区分にデータを書込むこと、およびポート群Ｂからのポートがスライスの第２の区分にデータを書込むことを、競合なく可能にする。同様に、各スライスは２つの内部の読出ポートを有する。メモリスライスを実現するよう用いられるメモリの読出および書込内部ポートの構成に依って、各メモリスライスは、各ポートが読出および書込可能な２つの内部ポートを有することが可能である（「２ＲＷ」）か、または各メモリスライスは、２つの専用読出ポートおよび２つの専用書込ポートを有することが可能である（「２Ｒ２Ｗ」）。
【００２６】
１つ以上の実施の形態においては、メモリスライスは、特定用途の要件に依って、入来部分および出口部分に動的に区分されてもよい。たとえば、各スライスのメモリバンクは１Ｒ１Ｗメモリであってもよい。各バンクの内部の読出ポートおよび書込ポートは、１つのポート群によって読出され、異なるポート群によって書込まれるように、独立してプログラミングされてもよい。そのようなコンフィギュレーション能力は両方のポート群（たとえばスライスの内部ポート）からスライスにおけるすべてのバンクの内部ポートへの読出アドレスおよび書込アドレスのプログラマブルな接続を必要とする。
【００２７】
図４は、区分されたメモリスライスのメモリバンクへの読出アクセスを制御するように構成されてもよい回路系のブロック図を示す。各メモリバンクへの書込アクセスは同様の態様で実現されてもよい。この例においては、各バンク（たとえば４０２）は、読出イネーブル制御入力（ＲＥ）および読出アドレス入力（ＲＡ）を有する。ＲＥ入力は２：１マルチプレクサ（たとえば４０６）の出力に結合される。マルチプレクサ４０６は、設定信号（たとえばConfig[0]）に基づいて、それぞれのバンクに入力するよう、イネーブル信号を選択する。この２：１マルチプレクサ４０６への２つの入力は、ポート１Ａにおけるポートからの読出要求信号およびポート１Ｂからの読出要求信号に応答する。マルチプレクサへの選択入力は、静的な信号（Config[0]または短縮して「Config」）であり、それは、このバンクがポート１Ａまたはポート１Ｂによって読出されるべきかどうかを選択する。Config信号は、初期設定中に（たとえばＦＰＧＡコンフィギュレーションビットストリームの一部として）設定される。ＡＮＤゲート４０８は、読出アドレス（たとえばＲＡｄｄｒ＿Ｐ１ＡまたはＲＡｄｄｒ＿Ｐ１Ｂ）のバンクアドレス（ＢＡ）が、それぞれのバンク（たとえば４０２）のバンクアドレスである場合にのみ、ポート１Ａおよび１Ｂに対応するイネーブル信号ＲＥ＿Ｐ１ＡおよびＲＥ＿Ｐ１Ｂをマルチプレクサ４０６に送る。
【００２８】
バンク４０２に対する読出アドレスポートは、マルチプレクサ４０４によって同様に多重化される。マルチプレクサ４０４は、Config信号に基づいてアドレス信号（たとえばＲＡｄｄｒ＿Ｐ１ＡまたはＲＡｄｄｒ＿Ｐ１Ｂ）を選択する。たとえば、Config[0]が０であることに応答して、バンク４０２はポート１Ｂではなくポート１Ａによってのみ読出可能であり、Config[0]が１であることに応答して、バンク４０２はポート１Ａではなくポート１Ｂによってのみ読出可能である。この選択信号は不法な読出アドレスを効果的に無視する。同様のロジックを用いて、アクセス違反を検出し、エラー信号を生成してもよい。エラー信号を用いて、読出／書込要求はメモリに対するアクセスを与えられなかった旨を外部回路、たとえばメモリコントローラに信号で知らせてもよい。
【００２９】
１つ以上の実施の形態においては、各それぞれのポートの対（たとえば図２のポート１Ａおよび１Ｂ）のメモリブロックのメモリアクセスは、ポートの各対ごとにルーティングシステムを実現することによって実施される。図５は、１つ以上の実施の形態に従って、ポート５０２の対とメモリスライス１Ａおよび１Ｂを有するメモリブロック５０６との間においてデータをルーティングするために用いられてもよいルーティング回路５０４のブロック図を示す。ルーティング回路系５０４は、読出経路および書込経路が対のポート５０２の各ポートからメモリブロック５０６の各区分（つまりスライス１Ａおよび１Ｂ）に与えられるバタフライレイアウトで構成される。
【００３０】
ポート間においてメモリを介して入来データまたは出口データをルーティングすることは、各信号経路の長さに依って、異なる量の遅延を招くかもしれない。例示の目的のために、メモリスライス１Ａを通る経路についての遅延を視覚的に表すために、破線のフリップフロップ５１６、５１８、５２２、５２４、５２６および５２８が、図５において与えられる。ルーティング回路系はこれらのフリップフロップを実際には含まないことが理解されるべきである。各破線のフリップフロップは、信号伝播遅延の１クロックサイクルを表す。同様に、メモリスライス１Ｂを通る経路に関する遅延は、破線のフリップフロップ５４２、５４４、５４６、５４８、５５０および５５２によって示される。対角線の経路はこの例においてはより長く、したがって、より多くの遅延を招く。未補正の場合、経路の長さにおける差は、２つの異なるメモリ位置から読出されたデータを、ポート５０２の対のポート１Ａに同時に到着させ、それによってコンフリクトを生じさせるか、または正しくない順序で到着させるかもしれない。たとえば、メモリスライス１Ａはアクセスポート５０２に近く位置され、メモリスライス１Ｂはアクセスポート５０２からより大きな距離に位置される、と仮定する。第１の入来データパケットが、メモリスライス１Ｂに書込まれ、次いでメモリスライス１Ｂから読出され（たとえば、長い信号経路で書込まれ読出され）、次の入来データパケットが、メモリスライス１Ａに書込まれ、次いで、メモリスライス１Ａから読出される（たとえば、短い信号経路で書込まれ読出される）場合、第２の入来データパケットは第１の入来データパケットの前に出力され得る。
【００３１】
コンフリクトおよび乱れたデータを回避するために、アクセスポート５０２の対間の各入来および出口経路は、入来経路および出口経路の遅延を調整し、遅延変動を低減するために、プログラマブル遅延回路系を含んでもよい。この例においては、２つのマルチプレクサ（ＭＵＸ）選択可能経路（たとえば５１０および５６０）が、プログラマブル遅延回路の各々を実現する。各入来および出口経路ごとに、ルーティング回路系５０４は、補正のために用いられてもよいさらなる遅延を与えるためにフリップフロップ（５６０、５６２、５６４および５６６）を含む。それぞれのＭＵＸ（５７０、５７２、５７４および５７８）は、データを、ＭＵＸ選択可能経路の１つから、それぞれの制御信号（遅延調整１〜４）によって向けられるようにルーティングする。このように、さまざまな経路の伝播遅延における変動が補償されてもよい。
【００３２】
図５において示されるルーティング回路系５０４は、アクセスポート５０２とメモリブロック５０６との間において固定されたルーティングを実現して、上に論じられるようなメモリアクセスコンフリクトを回避する。１つ以上の実施の形態は、クロスバースイッチのような動的なルーティング回路系を用いて、同様のルーティング制限を実施してもよい。１つ以上の実施の形態においては、クロスバースイッチは、１つのポートと別のポートが同じサイクルにおいて同じメモリアドレスに書込もうとしているときに、別のポートのデータをルーティングしバッファ処理するために用いられる。十分なスループットを与えるために、クロスバースイッチは、メモリブロックへのアクセスが生じ得る速度の少なくとも２倍である速度でクロック制御されてもよい。データパケットがアクセスコンフリクトのためにポートでバッファ処理される場合、スイッチは、（データパケットは異なるメモリ位置に書込まれることになると仮定して、）バッファ処理されるデータパケットおよび任意の新たなデータパケットを次のサイクルにおいてルーティングする能力がある。（行頭ブロッキングのような）クロスバースイッチの競合低減効果の輻輳使用に関する詳細は、Sundar Iyer and Nick McKeown, On the Speedup Required for a Multicast Parallel Packet Switch, IEEE Communication Letters, vol. 5, no. 6, pp. 269（２００１年６月）にさらに説明されており、その全体をここにその全体をここに引用により援用する。
【００３３】
１つ以上の実施の形態においては、上記の例を参照して論じられたような、競合のないメモリ構成が、プログラマブルＩＣ上に積層することが可能である１つ以上のダイ上にＡＳＩＣ回路系を用いて実施されてもよい。メモリ構成は、プログラマブルＩＣとは別途実施されるので、プログラマブルＩＣの、より多くのプログラマブルなリソースが、回路設計の実現のために利用可能なままである。
【００３４】
図６は、１つ以上の実施の形態に従って集積回路に結合されてもよいインターポーザ上に積層された複数のダイを用いて実施されるメモリ構成の側面図を示す。インターポーザ６０６は、メモリ構成６０２のコンタクトを電気的にＩＣ６０４に結合し、それはメモリ構成にアクセスする。インターポーザはインターポーザ本体６１０を含み、インターポーザ本体６１０は、ある数の貫通シリコンビアホール（ＴＳＶ）６１２がそこに形成される。複数のハンダボールコンタクト６１４を有するコンタクトアレイが、インターポーザ本体６１０の背面上に形成される。ハンダボールコンタクト６１４はＴＳＶのそれぞれに結合される。１つ以上の配線層６１６が複数の回路経路を実現し、それらは、ＴＳＶを第２のコンタクトアレイのそれぞれのコンタクトパッド６１８に結合する。第２のコンタクトアレイは、メモリ構成６０２のマイクロバンプコンタクト６２０と整列するように構成される。インターポーザはＩＣ６０４とメモリ構成６０２との間においてルーティングを調整するために容易に再設計し実現することが可能であるので、ＩＣ６０４の回路は、メモリ構成６０２のどのマイクロバンプ６２０がどの特定のポート群に対応するかに配慮をせずに、（ＩＣにおいて）配置されルーティングされてもよい。これは、ＩＣ６０４の配置およびルーティングがより最適に実行されることを可能にし、メモリ構成６０２のレイアウトが、さまざまな設計がＩＣ６０４上に実現される状態で、容易に用いられることを可能にする。例および実施の形態が、メモリ構成６０２をＩＣ６０４に接続するよう、インターポーザの使用を参照して主に記載される一方で、メモリ構成６０２はインターポーザなしにＩＣ６０４に直接結合されてもよいことが認識される。
【００３５】
メモリ構成６０２のメモリダイはある数の代替的な構成において構成され接続されてもよい。たとえば、メモリ構成を実施するダイは、複数のダイからなる単一の積層、または１つ以上のダイを有する複数の積層において構成されてもよい。図６の例においては、メモリ構成は２つの積層において実現されるとして示される。図１〜図４を参照して論じられたルーティング回路は、ある数の代替的なダイ積層構成において構成されてもよい。たとえば、左の積層においては、メモリダイ６３２Ａおよび６３２Ｂは、ルーティング回路系を実現するＩＣダイ６３０上に積層される。ルーティングはダイ６３０において実施されるので、ルーティング回路は、メモリダイの異なる構成と適合するよう構成および構築されることが可能である。別の例として、右の積層のメモリダイ６４０Ａおよび６４０Ｂの各々は、メモリ構成６０２のいくつかのメモリブロックおよびルーティング回路系を実現する。ポートの各対はメモリブロックへの排他的アクセスを有するので、ポートの各対は他のものから独立して動作する。その結果、異なるポート群対のメモリおよび対応するルーティング回路系は、積層されたダイのうちの異なるダイにおいて実現することが可能である。
【００３６】
図７は、１つ以上の実施の形態に従って構成されてもよい例示のプログラマブルＩＣを示す。示されたプログラマブルＩＣは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）として公知である。ＦＰＧＡは、アレイにいくつかの異なる種類のプログラマブルロジックブロックを含むことができる。たとえば、図７は、マルチギガビットトランシーバ（ＭＧＴ７０１）、コンフィギュラブルロジックブロック（ＣＬＢ７０２）、ランダムアクセスメモリブロック（ＢＲＡＭ７０３）、入力／出力ブロック（ＩＯＢ７０４）、コンフィギュレーションおよびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ７０５）、デジタル信号処理ブロック（ＤＳＰ７０６）、専用入力／出力ブロック（Ｉ／Ｏ７０７）たとえばクロックポート、ならびにデジタルクロックマネージャ、アナログ−デジタル変換器、システムモニタロジックなどの他のプログラマブルロジック７０８を含む多数の異なるプログラマブルタイルを含むＦＰＧＡアーキテクチャ（７００）を図示する。いくつかのＦＰＧＡはさらに専用プロセッサブロック（ＰＲＯＣ７１０）ならびに内部および外部のコンフィギュレーションポート（図示せず）を含む。
【００３７】
いくつかのＦＰＧＡにおいて、各々のプログラマブルタイルは、各々の隣接するタイル中の対応のインターコネクト素子へおよびそれからの標準化された接続部を有するプログラマブルインターコネクト素子（ＩＮＴ７１１）を含む。したがって、プログラマブルインターコネクト素子は、図示されるＦＰＧＡのためのプログラマブルインターコネクト構造をともに実現する。プログラマブルインターコネクト素子ＩＮＴ７１１は、図７の上部に含まれる例によって示されるように、同じタイル内にプログラマブルロジック素子へのおよびそれからの接続部も含む。
【００３８】
たとえば、ＣＬＢ７０２は、ユーザロジックに単一のプログラマブルインターコネクト素子ＩＮＴ７１１を加えたものを実現するようにプログラミング可能なコンフィギュラブルロジック素子ＣＬＥ７１２を含むことができる。ＢＲＡＭ７０３は、１つ以上のプログラマブルインターコネクト素子に加えてＢＲＡＭロジック素子（ＢＲＬ７１３）を含むことができる。典型的に、タイルに含まれるインターコネクト素子の数はタイルの高さに依存する。図示される実施の形態では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（たとえば４つ）を用いることも可能である。ＤＳＰタイル７０６は適切な数のプログラマブルインターコネクト素子に加えてＤＳＰロジック素子（ＤＳＰＬ７１４）を含むことができる。ＩＯＢ７０４は、たとえば、プログラマブルインターコネクト素子７１１の１つのインスタンスに加えて入力／出力ロジック素子（ＩＯＬ７１５）の２つのインスタンスを含むことができる。当業者には明らかなように、たとえばＩ／Ｏロジック素子７１５に接続される実際のＩ／Ｏパッドは、さまざまな示されたロジックブロックより上に層になった金属を用いて製造され、典型的には、入力／出力ロジック素子７１５の領域に閉じ込められない。
【００３９】
図示される実施形態では、（図７において影付きで示される）ダイの中央近くの列状領域がコンフィギュレーションロジック、クロックロジックおよび他の制御ロジックのために用いられる。この列から延在する水平方向領域７０９はＦＰＧＡの幅に亘ってクロックおよびコンフィギュレーション信号を分配するのに用いられる。
【００４０】
図７に図示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的な列状構造を分断する付加的なロジックブロックを含む。付加的なロジックブロックはプログラマブルブロックおよび／または専用ロジックであり得る。たとえば、図７に示されるプロセッサブロックＰＲＯＣ７１０は、ＣＬＢおよびＢＲＡＭのいくつかの列に跨っている。
【００４１】
図７は単に例示的なＦＰＧＡアーキテクチャを図示することを意図していることに注目されたい。列の中のロジックブロックの数、列の相対的な幅、列の数および順番、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、ならびに図７の上部に含まれるインターコネクト／ロジック実現例は純粋に例示的なものである。たとえば、実際のＦＰＧＡにおいては、ＣＬＢの、２つ以上の近接する列は、典型的には、ＣＬＢが現れるところならどこでも含まれて、ユーザロジックの効率的な実現を容易にする。
【００４２】
実施の形態はメモリを用いるさまざまな適用例に適用可能であると考えられる。他の局面および実施の形態は明細書の考察から当業者には明らかとなる。実施の形態は、特定用途向け集積回路（ＡＳＩＣ）として、またはプログラマブルロジックデバイス上のロジックとして、ソフトウェアを実行するように構成される、１つ以上のプロセッサとして実現されてもよい。明細書および示される実施の形態は、例としてのみ考えられ、この発明の真の範囲は以下の特許請求の範囲によって示されることが意図される。
【図１】
0005947397.tif 000002
【図２】
0005947397.tif 000003
【図３】
0005947397.tif 000004
【図４】
0005947397.tif 000005
【図５】
0005947397.tif 000006
【図６】
0005947397.tif 000007
【図７】
0005947397.tif 000008