(57)【要約】      （修正有）【課題】ネットワークの高速化や高いスイッチングフレキシビリティに適した高速マルチポートメモリアーキテクチャー、それを含む方法とシステムを提供する。【解決手段】マルチポートメモリは、（ａ）メモリアレイ（ｂ）データを受信／送信する複数のポート（ｃ）それぞれがポートの一つ以上との間でデータの送信／受信を行う複数のポートバッファを備える。ポートバッファは、（１）第一の共通バス上でメモリアレイへのデータ送信（２）第二の共通バス上でメモリアレイからのデータ受信を行う。データのブロックを書き込み／読み出しし、メモリをまたがってデータのブロックを転送する構成とする。ポートバッファをメインメモリに密に結合し、メモリ読み出し／書き込みパスの長い区間でポイント間通信を可能とし、特にネットワークスイッチにおいてデータ通信における待ち時間を減らし、それによりルーティングの過密を減らし、かつＦＩＦＯの削除が図れる。【選択図】図１
2004288355.tif 000002
【特許請求の範囲】
【請求項１】
ａ）メモリアレイと、
ｂ）データを、受信および／あるいは送信するように構成された複数のポートと、
ｃ）複数のポートバッファと
を備えているマルチポートメモリアーキテクチャであって、
前記複数のポートバッファのそれぞれは、前記ポートの一つ以上に前記データを送信する、および／あるいは前記ポートの一つ以上から前記データを受信するように構成されており、前記複数のポートバッファの全ては、（ｉ）第一の共通バス上で前記メモリアレイに前記データの第一のブロックを送信し、（ｉｉ）第二の共通バス上で前記メモリアレイから前記データの第二のブロックを受信するように構成されているマルチポートメモリアーキテクチャ。
【請求項２】
前記メモリアレイは複数のページを備えており、前記ページのそれぞれは、固有のメモリページアドレスによって識別可能および／あるいはアクセス可能であり、前記データの第一のブロックおよび第二のブロックのそれぞれは、前記データの一ページを含んでいる請求項１に記載のマルチポートメモリアーキテクチャ。
【請求項３】
前記複数のポートバッファのそれぞれは、読み出し部と書き込み部とを備えている請求項１に記載のマルチポートメモリアーキテクチャ。
【請求項４】
前記読み出し部は第一の読み出しラインおよび第二の読み出しラインを備えており、前記書き込み部は第一の書き込みラインおよび第二の書き込みラインを備えている請求項３に記載のマルチポートメモリアーキテクチャ。
【請求項５】
前記メモリアレイは、単一のデータ書き込みポートおよび単一のデータ読み出しポートを有している請求項１に記載のマルチポートメモリアーキテクチャ。
【請求項６】
請求項１に記載のマルチポートメモリアーキテクチャを備えているネットワークスイッチ。
【請求項７】
第一および第二のデータパスのいずれも、先入れ先出し（ＦＩＦＯ）メモリを有していない請求項６に記載のネットワークスイッチ。
【請求項８】
メモリにデータを書き込む方法であって、
ａ）シリアルデータをｎビット幅のパラレルデータに変換するステップであって、ｎビットのデータは１ワードを構成するステップと、
ｂ）前記ｎビット幅のパラレルデータのｋワード長のブロックをバッファリングするステップと、
ｃ）前記ｋ＊ｎビットのデータを前記メモリに実質的に同時に書き込むステップと
を包含する方法。
【請求項９】
ｋ＊ｎビットのデータ全てを前記メモリに実質的に同時に書き込むために、複数のメモリアドレスのうちの一つを特定するステップをさらに包含している請求項８に記載の方法。
【請求項１０】
シリアルデータをｎビット幅のパラレルデータに変換するステップは第一の周波数で行われ、バッファリングステップは第二の周波数で行われ、前記ｋ＊ｎビットのデータを実質的に同時に書き込むステップは第三の周波数で行われ、前記第一の周波数は前記第三の周波数とは異なっている請求項９に記載の方法。
【請求項１１】
メモリからデータを読み出す方法であって、
ａ）前記メモリからｋ＊ｎビットのデータをｋ＊ｎビット幅のバス上に実質的に同時に出力するステップと、
ｂ）前記ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップと、
ｃ）前記ｎビット幅のパラレルデータを、前記メモリから外的に読み出されるシリアルデータに変換するステップと
を包含している方法。
【請求項１２】
前記ｋ＊ｎビットのデータを実質的に同時に読み出すステップは、前記ｋ＊ｎビットのデータをｎビット幅のデータのｋ個のワードとしてバッファリングすることを含んでおり、ｎビットのデータが前記ワードの一つを形成する請求項１１に記載の方法。
【請求項１３】
前記ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換する工程は、ｎビット幅のデータをｎビット幅のバス上で順にシフトさせることを含んでおり、ｎビットのデータが前記ワードの一つを形成する請求項１１に記載の方法。
【請求項１４】
ｎビット幅のパラレルデータをシリアルデータに変換するステップは第一の周波数で行われ、前記ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップな第二の周波数で行われ、前記ｋ＊ｎビットのデータを同時に出力するステップは第三の周波数で行われ、前記第一の周波数は前記第三の周波数とは異なっている請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００３年５月１３日に出願された米国仮出願第６０／４５４，４４３号（弁護士整理番号第ＭＰ０３００ＰＲ）に基づく優先権を主張しており、それを全体としてここに援用する。
【０００２】
本発明はマルチポートメモリの分野に関連する。特に本発明の実施形態は、マルチポートメモリを用いるネットワークにおけるデータ通信のためのアーキテクチャ、システムおよび方法に関連する。
【背景技術】
【０００３】
メモリは、一つ以上のデータソースから複数の宛先のいずれかへの高速なデータ転送を可能にするためにネットワークにおいて、しばしばスイッチング素子において用いられる。図１は、従来のマルチポートメモリアーキテクチャ１０を示している。このマルチポートメモリアーキテクチャ１０は、メモリアレイ２０と、ポート３０〜３７と、先入れ先出しメモリ（ＦＩＦＯ）バッファ４０〜４７と、マルチプレクサ５４とを備えている。ポート３０〜３７のそれぞれは、ネットワーク（例えばイーサネット装置）からシリアルデータを受け取り、それをｍビット幅のパラレルデータに変化する。一例において、ｍは８である。このｍビット幅のパラレルデータは、メモリアレイ２０に格納される前に対応するＦＩＦＯバッファ４０〜４７に一時的に置かれる。ＦＩＦＯバッファ４０〜４７は時間領域変換バッファとしても機能する。メモリアレイ２０は、書き込みポート２２と読み出しポート２４とを有しており、それらを通じてデータはアレイ２０内の記憶素子に転送されたり、記憶素子から転送されたりする。ＦＩＦＯバッファ４０〜４７のそれぞれは、メモリアレイ２０の周囲の書き込みバス５０および読み出しバス５２のおかげで、メモリアレイ２０と独立して相互作用することができる。また各ＦＩＦＯバッファ４０〜４７は、シリアルデータをパラレルデータに変換するように構成されており、一例において、バイトシリアルデータをバイトパラレルデータに変換する。各ＦＩＦＯバッファ４０〜４７はメモリ２０に対して、自身の専用書き込みバスを有しているので、書き込みバス５０は（ｍ＊ｎ）から（８ｍ＊ｎ）ビット幅を有しており、それにより、バッファ４０〜４７の一つがメモリアレイ２０と通信することを可能にするｍ＊ｎビット幅のバスのそれぞれを収容する。またメモリ入力ポート２２もｍ＊ｎビット幅を有しているので、マルチプレクサ５０は。ＦＩＦＯからメモリ２０へのデータの書き込みのために、専用のＦＩＦＯ?メモリ書き込みバスの一つを選択する。読み出しバス５２は、ＦＩＦＯバッファ４０〜４７の全てにメモリ２０からｍ＊ｎビット幅のデータを出力する。ＦＩＦＯバッファ４０〜４７の全てに痛心される多ビット制御信号が、対応するポート３０〜３７を通じてのそれに続く外部との転送のためにどのＦＩＦＯバッファ４０〜４７がメモリセルにデータを書き込むかを決定する。
【０００４】
ポート３０〜３７は典型的には、ネットワークの速さ、例えば１ＧＨｚ程度で操作する。しかしながら、メモリアレイ２０は典型的には、著しく遅い速さ、例えば１００〜２００ＭＨｚで動作する。したがって、アーキテクチャ１０は、メモリアレイ２０に入っていく、あるいはメモリアレイ２０から出ていくデータをＦＩＦＯバッファに一時的に格納させる必要がある。しかしＦＩＦＯバッファ４０〜４７は典型的にはポート３０〜３７の近くにあり、これがバス５０および５２のロード要件（例えばバス５０および５２の固有の容量、抵抗、および／またはインピーダンスを克服あるいは制御するために必要な電流および／または電圧）ゆえにＦＩＦＯバッファ４０〜４７およびメモリアレイ２０の実行動作レートを制限する。したがって、図１のアーキテクチャを用いてスループットを改良するためには、メモリスピードか帯域（すなわち、メモリアレイ２０との間でデータを出し入れするバスの幅）を増やさなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、アーキテクチャ１０の最大スループットについては物理的な制限がある。メモリは任意のプロセス技術においてある程度速くなることはでき、メモリ幅を増やすことは、メモリ制御信号の内部ローディングのためにそのスピードを制限する。メモリの外部の幅を増やすことはダイの面積およびダイのコストの増加を引き起こす。図１の例においては、全てのポート３０〜３７が１Ｇｂｉｔ／秒で動作し、ｍが８であるときには、ＦＩＦＯ４０〜４７は１２５ＭＨｚのレートで８ビットバイトのデータを受け取る。データは全二重であり、それにより８ビットのデータはそれぞれのポートについて１２５ＭＨｚのレートで各方向に処理されなければならない。その結果、メモリ２０は１サイクル当たり、（８ポート＊８ビット＊２方向）＝１２８ビットのデータを１２５ＭＨｚのレートで処理することができなければならない。２４ポートアーキテクチャにおいては、メモリ２０は１２５ＭＨｚのレートで３８４ビットのデータを処理することができなければならない。メモリスピードおよび／あるいはメモリバスの寸法（幅および／あるいは長さ）への制限が標準的なメモリアレイ２０のスループットを制限するので、代替的なアプローチが望まれる。
【０００６】
したがって、マルチポートメモリの動作スピードを増やして、ネットワークスピードの高速化および高いネットワークスイッチングフレキシビリティへの依然として増え続けている要求についていく必要がある。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、マルチポートメモリアーキテクチャ、それを用いるシステムおよび方法に関する。マルチポートメモリアーキテクチャは、（ａ）メモリアレイと、（ｂ）データを送受信するように構成された複数のポートと、（ｃ）複数のポートとを備えており、複数のポートバッファのそれぞれは一つ以上のポートとの間でデータを送受信するように構成されており、ポートバッファの全ては、（ｉ）第一の共通バス上でメモリアレイにデータを送信し、（ｉｉ）第二の共通バス上でメモリアレイからデータを受信するように構成されている。システムおよびネットワークスイッチは、ここに開示されている発明の概念の一つ以上を具体化するアーキテクチャを含むシステムおよびネットワークスイッチを備えている。
【０００８】
書き込む方法は、（１）シリアルデータをｎビット幅のパラレルデータに変換するステップであって、データのｎビットがワードを形成するステップと、（２）ｎビット幅のパラレルデータのｋワード長をバッファリングするステップと、（３）実質的に同時にｋ＊ｎビットのデータをメモリに書き込むステップとを備えている。発明はまたメモリからデータを読み出す方法に関連しており、（１‘）メモリからｋ＊ｎビットのデータをｋ＊ｎビット幅のバス上に実質的に同時に出力するステップと、（２’）ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップと、（３‘）ｎビット幅のパラレルデータを、外部からメモリから読み出されるべきシリアルデータに変換するステップとを包含している。発明はまた、ネットワークにおいてデータを転送する方法にも関連しており、メモリに書き込む本発明の方法およびメモリから読み出す本発明の方法のそれぞれからの一つ以上の組み合わせを包含している。
【０００９】
本発明は、ポートバッファをメインメモリに密に結合することによって、データ通信、特にパケットネットワークスイッチにおける待ち時間を減らし、それにより（１）メモリの読み出し・書き込みパスの比較的長い区間にわたるポイント間の通信の使用と、（２）メモリの読み出し・書き込みパスにおいてＦＩＦＯメモリをなくすこととを可能にするという効果をもつ。したがって本発明はまた、特に標準的なセルベースの設計技術を用いているときに、ルーティングの過密を減らし、ダイサイズを減らす。ボンドパッドとポートバッファとの間のオンチップでのポイント間通信はさらに、対応する配線における寄生を減少させる。ポートバッファをメインメモリアレイに密に結合させることによって、本発明は、メモリの読み出し・書き込みバスのＲＣ要素を減らすという効果を有し、さらにデータ転送レートおよびスループットを増加させる。対照的に図１のアーキテクチャのルーティングは、比較的複雑であり、より大きなチップ面積を使う。
【００１０】
本発明のこれら、および他の効果は、以下の好ましい実施形態の詳細な説明から容易に明らかになることであろう。
【発明を実施するための最良の形態】
【００１１】
本発明の好ましい実施形態に詳細に言及する。好ましい実施形態の例は添付の図面に示されている。発明は、好ましい実施形態と関連して説明されるが、それらは発明をこれらの実施形態に限定することを意図するものではないということを理解されたい。逆に発明は、代替物、変更および等価物をカバーするように意図されており、これらは添付のクレームによって定義される発明の精神および範囲内に含まれうる。さらに、本発明の以下に続く詳細な説明において、本発明の徹底的な理解を提供するために、数多くの具体的な内容が述べられる。しかしながら、当業者は、本発明はこれらの具体的な内容なして実行され得ることを容易に理解するであろう。他の例において、本発明の特徴を不必要に分かりにくくするのを避けるために、公知の方法、手順、構成要素および回路は詳細には説明しない。
【００１２】
以下に続く詳細な説明のいくつかの部分は、コンピュータ、プロセッサ、コントローラおよび／あるいはメモリ内でのデータビット、データストリームあるいは波形についてのプロセス、手順、論理ブロック、機能ブロック、処理および他の象徴的な動作の表現に関して、提示される。これらの説明および表現は、データ処理分野における当業者が同分野における他の人に、自身の仕事の実体を効果的に伝えるために一般的に使用されるものである。プロセス、手順、論理ブロック、機能、プロセス等がここで使われ、一般的には、所望のおよび／あるいは予測される結果に至る一貫したステップあるいは指示のシーケンスであるものと考えられる。これらのステップは、一般的には物理量の物理的な操作を含む。通常は、必ずしもとはいえないが、これらの量は、コンピュータあるいはデータ処理システムにおいて記憶、転送、結合、比較およびその他の操作を行うことが可能である電気、磁気、光学あるいは量子信号の形態をとる。主として一般的な使用の理由から、これらの信号を、ビット、波、波形、ストリーム、値、要素、シンボル、文字、語句、あるいは数等として言及されることが便利であるということがわかる。
【００１３】
しかしながら、これらの、および類似した用語の全ては適切な物理量に関連づけられ、これらの量に適用される都合のよいラベルに過ぎないことに留意されたい。それ以外であると具体的に述べない、および／あるいは以下の議論から明らかではない限り、本出願を通じて、「処理する」、「演算する」、「コンピュータで計算する」、「計算する」、「判断する」、「操作する」、「変換する」、「表示する」等の用語を用いる議論は、物理（例えば電気的）量として表されるデータを操作し、変換するコンピュータ、あるいはデータ処理システム、あるいは類似した処理装置（例えば電気、光学的、量子コンピューティング装置あるいは処理装置）の作用およびプロセスに言及している。これらの用語は、システムあるいはアーキテクチャの構成要素内（レジスタ、メモリ、他のこのような情報記憶、転送あるいは表示装置等）における物理量を操作あるいは変換して、同一あるいは異なるシステムあるいはアーキテクチャの他の構成要素内の物理量として同様に表される他のデータにする処理装置の作用およびプロセスに言及する。
【００１４】
さらに、簡便さのために、「クロック」、「時間」、「レート」、「周期」および「周波数」という用語は、ここではいくらか交換可能であるものとして使われ得るが、一般的にはそれらがこの分野で理解される意味を与えられているものとする。また、簡便さのために、「データ」、「データストリーム」、「信号」、「波形」および「情報」という用語は交換可能に用いられ得、同様に、「接続される」、「結合される」、「連結される」および「連通している」は交換可能に用いられ得る（これらは直接的あるいは間接的なリンクまたは信号路を指し得る）が、一般的には、それら自体がこの分野で理解される意味も与えられているものとする。
【００１５】
本発明はマルチポートメモリアーキテクチャ、これを備えたシステム、ならびにこれを用いる方法に関連する。このマルチポートメモリアーキテクチャは一般的には、（ａ）メモリアレイと、（ｂ）データを受信および／または送信するように構成された複数のポートと、（ｃ）複数のポートバッファとを備えており、複数のポートバッファのそれぞれは、ポートの一つ以上にデータを送信し、および／またはポートの一つ以上からデータを受信するように構成されており、複数のポートバッファの全ては、（ｉ）第一の共通バス上でメモリアレイへのデータを送信し、（ｉｉ）第二の共通バス上でメモリアレイからデータを受信するように構成される。発明のさらなる特徴は、本発明のアーキテクチャを包含する、および／あるいはここで述べられる発明の概念の一つ以上を具体化するネットワークスイッチ、システムおよびネットワークに関連する。
【００１６】
発明のさらなる特徴は、メモリからの読み出しおよび／あるいはメモリへの書き込みの方法に関連する。書き込みの方法は、（１）シリアルデータをｎビット幅のパラレルデータに変換するステップであって、データのｎビットがワードを構成するステップと、（２）ｎビット幅のパラレルデータのｋワード長のブロックをバッファリングするステップと、（３）データのｋ＊ｎビットを実質的に同時にメモリに出力するステップとを包含する。発明はメモリからデータを読み出す方法にも関連しており、（１‘）メモリからｋ＊ｎビット幅のバス上にデータのｋ＊ｎビットを実質的に同時に出力するステップと、（２’）データのｋ＊ｎビットをｎビット幅のパラレルデータに変換するステップと、（３‘）ｎビット幅のパラレルデータを外部からメモリから読み出され得るシリアルデータに変換するステップとを包含する。発明はまた、ネットワークにおいてデータを転送する方法にも関連しており、この方法は、本発明のメモリへの書き込み方法およびメモリからの読み出し方法のそれぞれからの一つ以上のステップの組み合わせを包含する。
【００１７】
本発明は、そのさまざまな態様において、例示的な実施形態に関して以下により詳細に説明される。
【００１８】
メモリアーキテクチャの一例：一態様において、本発明は、（ａ）メモリアレイと、（ｂ）データを受信および／あるいは送信するように構成された複数のポートと、（ｃ）複数のポートバッファとを備えているマルチポートメモリアーキテクチャに関連しており、複数のポートバッファのそれぞれは、ポートの一つ以上へデータを送信し、および／あるいはポートの一つ以上からデータを受信するように構成されており、複数のポートバッファの全ては（ｉ）第一の共通バス上にメモリアレイにデータのブロックを送信し、（ｉｉ）第二の共通バス上でメモリアレイからデータのブロックを受信するように構成されている。
【００１９】
図２は、本発明のマルチポートメモリアーキテクチャの第一の例示的な実施形態１００を示しており、これは、メモリアレイ１１０、ポートバッファ１２０〜１２７、ポート１３０〜１４４、並列読み出し・書き込みレジスタ１４１〜１４２および「スヌープ」レジスタ１４０を有している。図１からＦＩＦＯメモリがなくなっているのが目立つ。ポートバッファ１２０〜１２７は、一つ以上のレジスタ、あるいはフリップフロップ、ラッチまたはレジスタのバンクを備えており、ポートおよびメモリアレイ１１０からパラレルデータを受け取り、ポートおよびメモリアレイ１１０にパラレルデータを提供するように構成されている。データは、共通のメモリ書き込みバス１５０ａおよび１５０ｂ上、ならびに共通のメモリ読み出しバス１５５ａおよび１５５ｂ上でポートバッファ１２０〜１２７とメモリアレイ１１０との間で通信される。
【００２０】
本アーキテクチャにおいては、メモリアレイは従来のものであり、複数のメモリサブアレイを備えている。これらのサブアレイは、一つ以上のメモリの行、列、ブロックまたはページを備えていてもよく、ページが好ましいインプリメンテーションである（いわゆる「マルチポートページモードメモリ」、ＭＰＰＭ）。メモリの行、列、ブロックおよび／またはページのそれぞれは、行、列、ブロックおよび／またはページに対応する固有のメモリアドレスによって識別可能、および／またはアクセス可能である。好ましいインプリメンテーションにおいては、メモリアレイ１１０とポートバッファ１２０〜１２７との間で転送されるデータのブロックのそれぞれは、データのページを備えている。典型的には、メモリアレイ１１０の最小密度は２５６ｋｂあるいは１Ｍｂである。メモリアレイ１１０の最大密度には制限はないが、実際の問題として、典型的な最大密度は約３２Ｍｂあるいは１２８Ｍｂである。
【００２１】
メモリアレイ１１０におけるメモリ素子の性質も特に限定されておらず、ラッチ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）およびフラッシュメモリを含み得るが、簡単にするために、またスピードと低電力を考慮して、ラッチが好ましい。メモリアレイ１１０はシンクロナスであっても非シンクロナスであってもよいが、スピードとタイミングを考慮すると、シンクロナスメモリが好ましい。
【００２２】
本アーキテクチャにおいては、ポートバッファ１２０〜１２７は、メモリアレイ１１０に「密に連結される」と考えてもよい。基本的に、「密に連結される」とは、ポートバッファ１２０〜１２７は、ポート１３０〜１４５よりもメモリアレイ１１０の方の近くにあり、メモリバス１５０ａ、１５０ｂ、１５５ａおよび１５５ｂは、バスにおける隣接するメタル配線間でのバス長（抵抗に対応する）および／あるいは寄生容量のようなＲＣ要素を減少させる、または最小にするように設計されることを意味する。ポートバッファ１２０〜１２７はメモリアレイ１１０の異なる側に示されており、ポート１３０〜１４４はポートバッファ１２０〜１２７の異なる側に示されているとき、ポートバッファ１２０〜１２７はアレイ１１０の片側に配置することができ（例えば図３）、ポート１３０〜１４４はポートバッファ１２０〜１２７の一方の側に配置することができる。さらに、ポートバッファ１２０〜１２７とメモリアレイ１１０との間の通信は、好ましくは、メモリアレイに「密に連結されている」ポートバッファにおけるクロック依存の回路によって遅延されない。
【００２３】
本マルチポートメモリアーキテクチャにおいては、ポートバッファの数は、２以上、３以上、あるいは４以上のいずれであってもよい。あるインプリメンテーションにおいては、アーキテクチャにおいては（２ｘ−ｄ）個のポートバッファがあり、ｘは少なくとも３である整数であり、さまざまな実施態様においては、４から８（例えば５または６）という整数であり、ｄは０または（２ｘ−１−１）以下の整数である。ｄの値は、ポートバッファに伴う（例えばポートバッファアドレスを有する）並列なレジスタの数によって決定され得るが、それは「スヌープ」レジスタ１４０および／または並列な読み出し・書き込みレジスタ１４１〜１４２のような異なる機能を提供する。独立して、対応するポートの数は一般的には２以上、３以上、あるいは４以上であり、あるインプリメンテーションにおいては、（２ｘ−ｄ）であり得る。ここでｘおよびｄは上述した通りである。一インプリメンテーションにおいては１０個のポートがある。好ましくは、ポートおよびポートバッファは１対１の関係にある。しかし各ポートは単一のポートバッファだけと通信するというのは必ずしも本当ではない（あるいはその逆もしかり。いわゆる「専用の」ポートあるいはポートバッファ）。
【００２４】
ここで図４を参照すると、ポートバッファは、読み出し部２５０ｉおよび書き込み部２４０ｉを有する。読み出し部２５０ｉおよび書き込み部２４０ｉのそれぞれは、複数のエントリ２４２ａ〜２４２ｏ、２４４ａ〜２４４ｏ、２５２ａ〜２５２ｏおよび２５４ａ〜２５４ｏを備え、エントリのそれぞれは一つ以上のデータ記憶ユニットを備えている。データ記憶ユニットは、１ビットのデータを記憶するように構成された従来のメモリセルであり、ＳＲＡＭセル、ＤＲＡＭセル、ＭＲＡＭセル、ＥＥＰＲＯＭセルおよび／あるいはフラッシュメモリセルを備えているが、スピードと低電力とを考慮すると、ＳＲＡＭが好ましい。
【００２５】
好ましいインプリメンテーションにおいては、読み出し部２５０ｉおよび書き込み部２４０ｉはそれぞれ独立に、ａ＊（２ｙ＋ｂ）個のエントリを備えており、ここでａはエントリのラインあるいは行の数（例えば、書き込みライン２４２および／あるいは２４４）であり、２ｙは一つのラインまたは行におけるエントリの数であり、ｙは少なくとも３の整数であり、ｂは０または（２ｙ−１）以下の整数である。ある実施形態においては、ｂは０であり、ｙは４から８の整数であり、具体的な実施形態においてｙは５または６である。
【００２６】
図２に戻ると、本アーキテクチャにおけるメモリ読み出し・書き込みバス１５０ａ、１５０ｂ、１５５ａおよび１５５ｂは、それぞれｋ＊ｎビットの幅を有している。ここでｋは一つのポートバッファのラインまたは行におけるエントリの数であり、ｎは一つのエントリにおけるデータビットの数である。上述したように、ｋは（２ｙ＋ｂ）であり得る。ここでｙおよびｂは上述した通りである。したがって、共通のメモリバスは、ｎ＊（２ｙ＋ｂ）ビットの幅を有する。あるインプリメンテーションにおいては、ｎは（２ｐ＋ｃ）であり、ここでｐは２から７の整数（例えば３から６）であり、ｃは０または（２ｐ−１）以下の整数である。ある実施形態においてはｃは０である。これは実質的に、データのブロック全体（ここでデータの一つのブロックは、図４に示されるようにポートバッファライン２２２、２２４、２２６あるいは２２８におけるデータである）を、メモリアレイ１１０に対して、あるいはメモリアレイ１１０から実質的に同時に書き込む、あるいは読み出すことを可能にする。好ましい実施形態においては、ｎはポートとそれに対応するポートバッファとの間でデータを通信するように構成されたバスの幅でもある。このようなバスは、２つの別個の一方向性のバス（例えば、図１に示すｍビット幅のバス）を備えている
【００２７】
再び図２に戻って、メモリ読み出し・書き込みバス１５５ａ、１５０ｂ、１５５ａおよび１５５ｂは、「共通の」バスであると考えられる。なぜならそれらは、複数のポートバッファに共通であり、それらの全長にわたって一定のビット幅を有しているからである。例えば、ポートバッファ１２０〜１２３はそれぞれ、メモリ書き込みバス１５０ａ上への同じ数の出力を有し、メモリ読み出しバス１５５ａからの同じ数の入力を有する。その結果、メモリアレイ１１０からメモリ読み出しバス１５５ａ上に読み出されるデータは、ポートバッファ１２０〜１２３のいずれか一つ（あるいは全て）へとラッチされ得る。
【００２８】
本アーキテクチャにおけるポートバッファは、単一バッファ型であってもよく（例えば図５参照）、その場合には読み出し部は第一の読み出しラインを備え、書き込み部は第一の書き込み部を備える。あるいはマルチバッファ型（例えば、図４の二重バッファ型の実施形態２２０ｉを参照）であってもよく、この場合には、読み出し部は複数の読み出しラインを備え、書き込み部は複数の書き込みラインを備える。例えば、二重バッファ型の構成は、第一および第二の読み出しラインと第一および第二の書き込みラインとを備え、三重バッファ型構成は、第一、第二および第三の読み出しラインと、第一、第二および第三の書き込みラインとを備え、四重バッファ型の構成は、第一、第二、第三および第四の読み出しラインと第一、第二、第三および第四の書き込みラインとを備える。以下同様である。いずれの構成においても、書き込み部は、（ｉ）対応するポートからのデータを記憶するためのエントリ（例えば２４４ａ〜２４４ｏ）の一つを選択するように構成されたデマルチプレクサ２５８と、（ｉｉ）ポートバッファからメモリアレイにデータを転送するための書き込みラインの一つを選択するように構成された一つ以上の制御信号とをさらに備える。ここで図４だけを参照して、マルチバッファ型の構成（例えば、二重バッファ型のポートバッファ２２０ｉ）においては、読み出し部は、マルチプレクサ２５６および／あるいは、対応するポートへデータを出力するための読み出しラインの一つを選択するように構成された一つ以上の制御信号をさらに備える。
【００２９】
本アーキテクチャは、さまざまなレートで、および／あるいは時間領域にわたってデータを処理および／あるいは転送することを可能にする。例えば、メモリアレイは第一の周波数で動作し、ポートのそれぞれは、第一の周波数よりも大きい、または小さい第二の周波数で独立して動作してもよい。例えば、図２に戻ると、ポート１３０〜１４４の受信部あるいは送信部は、約１０ＭＨｚ、１００ＭＨｚ、１ＧＨｚ、約２ＧＨｚ、あるいは約３．１２５ＧＨｚのレートでデータを受信あるいは送信してもよい。また、各ポートは、他のポートの動作周波数とは独立した周波数で動作してもよい。しかしながら、メモリアレイ１１０およびポートバッファ１２０〜１２７は、一般的には１００ＭＨｚから４００ＭＨｚの周波数で動作するが、ポートバッファ１２０〜１２７は、メモリアレイ１１０と必ずしも同じ周波数で動作しない。さらに、メモリアレイ１１０およびポートバッファ１２０〜１２７は互いに同期して動作してもよく、ポート１３０〜１４４のそれぞれは、（ｉ）メモリアレイ１１０およびポートバッファ１２０〜１２７および（ｉｉ）他のポートに対して同期して動作する。したがって、ポートバッファ１２０〜１２７は、ポート領域のそれぞれとメモリ領域との間での時間領域バッファ（あるいはスイッチ）として独立して機能する。
【００３０】
続いて図２を参照すると、さらなる実施形態においては、本メモリアーキテクチャは、（ｉ）並列読み出しレジスタ１４０および並列書き込みレジスタ１４１、および／あるいは（ｉｉ）読み出し専用「スヌープ」レジスタ１４２をさらに有する。並列読み出しレジスタ１４０は、ポートバッファ読み出しレジスタ（例えば図４におけるポートバッファ読み出し部２５０ｉ）のための冗長レジスタである。当業者に知られているように、冗長読み出しレジスタは、主要な読みだしレジスタにハードウェア上の欠陥があるときに、通常は冗長読み出しレジスタのアドレスを主要な読み出しレジスタのアドレスに置き換えることによって、あるいは主要な読み出しレジスタへ、およびそれからのバスを再配線する（典型的にはヒューズを切る）ことによって、主要な読み出しレジスタを置き換えることができる。処理エラーが主要な読み出しレジスタから下流で起これば、冗長読み出しレジスタは、データを素早く置き換えるために、主要な読み出しレジスタにおけるデータのコピーを一時的に格納することができる。したがって、並列読み出しレジスタ１４０（図２）はおおまかには、ポートバッファ読み出し部２５０ｉ（図４）と類似した、あるいは同一の構造を有する。同様に、並列書き込みレジスタ１４１（図２）は、ポートバッファ書き込みレジスタ（例えば図４におけるポートバッファ読み出し部２４０ｉ）のための冗長書き込みレジスタであり、おおまかにはそれと類似した構造および機能を有する。並列読み出し・書き込みレジスタ１４０〜１４１のデータ幅はメモリアレイ１１０の全幅とすることができるので、並列読み出し・書き込みレジスタ１４０〜１４１は、標準的なポートを用いて得られるよりも大きい帯域幅の利益を享受することができるポートあるいはデータ処理素子を供給することができる。並列読み出し・書き込みレジスタ１４０〜１４１はまた、メモリのＢＩＳＴ中のメモリへの高速アクセスのために用いられることができる。
【００３１】
読み出し専用「スヌープ」レジスタ１４２（図２）は、メインメモリ（例えばメモリ１１０）に書き込まれるべきデータのコピーを記憶するように構成される。スヌープレジスタ１４２は、パケットまたはヘッダ処理ロジック（例えば宛先アドレス、ソースアドレス、フレームタイプ等）のようなある処理動作のために、処理ロジックをさらに含んでもよく、あるいは外部の処理ロジックに接続されてもよく、その結果、後に続くデータの修正および／あるいはメモリを含むネットワークにおけるスイッチングの決定を行うことが可能である。このような修正および／あるいは転送を実行するさらなるロジックは、本マルチポートメモリを含むＩＣにおけるどこに配置されてもよく、あるいはそれに近接するコプロセッサ内に（例えば共通の基板あるいはプリント回路基板上）配置される。したがって、スヌープレジスタ１４２は実質的に、マルチポートメモリ１１０が処理ロジックを複数のセット、各ポートバッファに対して一つのセットを有することから救うことになる。これは、パケットあるいはフレーム処理を含むアプリケーションにおいて、このような動作のための専用のおよび／あるいは冗長レジスタがない場合に必要とされる。
【００３２】
パケットネットワークスイッチ、システムおよびネットワークの例：発明のさらなる態様において、ネットワークスイッチ、システムおよびネットワークは、概して、ここで開示される発明的な概念の一つ以上を具体化するアーキテクチャを含むものを備えている。例えば、ネットワークスイッチは、単に本マルチポートメモリアーキテクチャを備えていてもよい。好ましい実施形態においては、ネットワークスイッチは単一の集積回路上で具体化される。
【００３３】
上述したように、本発明の利点の一つは、ポートとメインメモリとの間でデータをバッファするためのＦＩＦＯバッファは必要ないということであり、それによりＦＩＦＯ?メインメモリのルーティング専用のＩＣの面積を減らすことができ、（理想的には）ＩＣを通るデータ転送スピードを上げることができる。したがって、本ネットワークスイッチは、それぞれが（ｉ）第一のデータパスに沿って対応するポートにデータを送信し、（ｉｉ）第二のデータパスに沿って対応するポートからのデータを受信する、複数のポートバッファを備えていてもよく、これらのデータパスはいずれも、先入れ先出し（ＦＩＦＯ）メモリを含まない。
【００３４】
さらなる実施形態においては、システムは、ネットワークスイッチにおける処理のために、ネットワークからのシリアルデータをパラレルデータに変換する、および／またはネットワークスイッチからのパラレルデータをネットワークのためのシリアルデータに変換するように構成されたポートを有していてもよい。大半のインプリメンテーションにおいては、システムポートは、上述したメモリアーキテクチャポートとなるが、いくつかのインプリメンテーションにおいては、システムポートは、メモリアーキテクチャおよび送信部を含む集積回路（ＩＣ）に外部からデータを送信するように構成された別個のポートでもあり得る。したがって、システムは、（ｉ）シリアルデータを外部の受信部に送信するように構成された送信部を備えている少なくとも一つのポート（および好ましくは複数のポート）と、（ｉｉ）外部で生成されたシリアルデータ（例えば、外部の送信部からのシリアルデータ）を受信するように構成された受信部を備えている少なくとも一つのポート（および好ましくは複数のポート）とをさらに有していてもよい。
【００３５】
発明はさらに、本システムの少なくとも一つと、複数の記憶あるいはデータ通信装置とを備えているネットワークに関連しており、これらの装置のそれぞれは、通信可能にシステムに連結されている。さらなる実施形態においては、ネットワークは、（ａ）複数の本システムであって、互いに通信可能に連結され、および／あるいは互いに縦続接続されていてもよい本システムと、（ｂ）複数の記憶あるいは通信装置とを備えていてもよく、各記憶あるいは通信装置は、システムの少なくとも一つと通信可能に連結されている。一インプリメンテーションにおいては、それらの装置のそれぞれは固有のシステムに通信可能に連結されている。ネットワークは、パケットスイッチングネットワークのような公知のネットワークのどの種のものであってもよい。
【００３６】
方法の例：本発明はさらに、メモリにデータを書き込む方法にも関連している。この方法は、（ａ）シリアルデータをｎビット幅のパラレルデータに変換するステップであって、ｎビットのデータがワードを形成するステップと、（ｂ）ｎビット幅のパラレルデータのｋワード長のブロックをバッファリングするステップと、（ｃ）ｋ＊ｎビットのデータをメモリに実質的に同時に書き込むステップとを包含している。発明はメモリからデータを読み出す方法にも関連しており、この方法は、（１）メモリからｋ＊ｎビット幅のバス上にｋ＊ｎビットのデータを実質的に同時に出力するステップと、（２）このｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップと、（３）このｎビット幅のパラレルデータを、メモリから外部的に読み出されるべきシリアルデータに変換するステップとを包含している。発明は、ネットワークにおいてデータを転送する方法にも関連しており、この方法は、書き込み方法および読み出し方法のステップの組み合わせを包含している。
【００３７】
書き込み方法の一実施形態において、バッファリングは、ｎビット幅のパラレルデータのｋワードをｋ個のデータ記憶素子に順に書き込むことを包含してもよい。読み出しおよび／あるいは書き込み方法のさらなる実施形態において、シリアルデータをｎビット幅のパラレルデータに変換するステップは第一の周波数で行われ、バッファリングステップは第二の周波数で行われ、ｋ＊ｎビットのデータを実質的に同時に書き込むステップは第三の周波数で行われてもよく、第一の周波数は第二および第三の周波数の両方と同じであるか、異なっている。上述したように、第一の周波数は第二および第三の周波数よりも大きい、あるいは小さくてもよい。しかしながら、第三の周波数は一般的には、第二の周波数と実質的に同じであるか、第二の周端数よりも高い。
【００３８】
データを書き込む方法はさらに、（ｉ）ｎビット幅のパラレルデータのｋワード長のブロックをバッファリングするための複数のバッファアドレスの一つを特定するステップと、（ｉｉ）ｋ＊ｎビットのデータを実質的に同時にメモリに書き込むために複数のメモリアドレスの一つを特定するステップと、（ｉｉｉ）シリアルデータを受け取るステップとを包含してもよい。
【００３９】
発明はさらに、ネットワークにおいてデータを転送する方法を包含しており、この方法は、メモリにデータを書き込む本方法と、ｋ＊ｎビットのデータをメモリから実質的に同時に読み出すこととを備えている。予想されるかもしれないが、好ましいインプリメンテーションにおいては、ｋ＊ｎビットのデータを実質的に同時に読み出すステップは、ｋ＊ｎビットのデータをｎビット幅のデータのｋ個のワードとしてバッファリングすることを含んでいる。また、ｎビット幅のデータを、外部的にメモリから読み出し可能であるシリアルデータに変換することをさらに含んでいてもよい。
【００４０】
メモリからデータを読み出す方法は一般的には、（１）ｋ＊ｎビットのデータをメモリからｋ＊ｎビット幅のデータバス上に実質的に同時に出力するステップと、（２）ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップと、（３）ｎビット幅のパラレルデータを、外部的にメモリから読み出し可能であるシリアルデータに変換するステップとを備えている。好ましい実施形態においては、ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップは、ｎビット幅のデータのｋ個のワードをバッファリングすることを含んでおり、このバッファリングステップは、ｋ個のレジスタにｎビット幅のデータのｋ個のワードを格納することを含んでいてもよく、各レジスタはｎ個のデータ記憶素子を有する（ここでｋおよびｎは上述した通りである）。言い換えると、読み出し方法においては、ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換することは、そのデータをｎビット幅のデータのｋ個のワードとしてバッファリングすることを含んでいる。好ましいインプリメンテーションにおいては、ｋ＊ｎビットのデータをｎビット幅のパラレルデータに変換するステップはさらに、ｎビット幅のデータのｋ個のワードをｎビット幅のバス上へと順にシフトさせることを含んでいる。上述したように、ｎビット幅のパラレルデータをシリアルデータに変換するステップは第一の周波数で行われてもよく、ｋ＊ｎビットのデータをｎビットのパラレルデータに変換するステップは第二の周波数で行われてもよく、ｋ＊ｎビットのデータを実質的に同時に出力するステップは第三の周波数で行われてもよく、第一、第二および第三の周波数は上述した通りである。
【００４１】
メモリからデータを読み出す方法はさらに、（ａ）ｎビット幅のデータのｋ個のワードをバッファリングするための複数のバッファアドレスの一つを特定すること、および／あるいは（ｂ）メモリからｋ＊ｎビットのデータを実質的に同時に出力するために複数のメモリアドレスの一つを特定することを備えていてもよい。
【００４２】
実施例：図３を参照すると、発明の一実施例は、マルチポートページモードメモリ２００に関連している。以下の実施例においては、マルチポートページモードメモリ２００は、拡張可能なマルチポートメモリブロック２１０を備えている。このメモリブロック２１０は、所望のアプリケーションに応じて、一ブロックあたり、いかなる数の（そしてある具体的な実施例では１６）書き込みポートでもサポートすることができる。全てのポートは同時に動作することができるが、ランダムワードアクセスはサポートされていない。メモリ２１０へのアクセスは、ページ単位２２０ａ〜２２０ｋで行われる。各ポートは、専用の読み出しページおよび専用の書き込みページを通じてメモリにアクセスする。各ページは、１ラインあたり、２ｙ個（具体的な実施例では３２）の８ビットエントリを含む２ラインの記憶部を有する二重バッファ型である。読み出しおよび書き込みデータ幅は、それぞれ８ビットである。１ラインあたり２ｙ個の８ビットエントリがこの例では実施されているが、ポートバッファの位置ラインに何個のエントリがあってもよく、そのエントリは何ビットを含んでもよい。また、読み出しおよび書き込みポートのデータ幅は、何ビット幅であってもよい。メモリへのアクセスは、構成に応じて、３２バイトまでのページで行われる。このメモリは、ポートの総数までが、共通のメモリブロック２１０における２ｚ個（具体的な実施例では４０９６個）のページを共有することを可能にする。メモリブロック２１０は、６４ｋｂから６４Ｍｂ以上の密度を有してもよい（例えば、１２８ｋｂから３２Ｍｂ、あるいは２５６ｋｂから約１６Ｍｂ、一具体例では約１Ｍビット）。この例では３２バイトの最大のページサイズと、２ｚ個のページというメモリサイズとが実施されているが、最大のページサイズは何バイトでもよく、メモリはどのようなサイズでもあり得る（好ましくはメモリは上述した最小密度を有するが）。また読み出しおよび書き込みポートのデータ幅は、何ビット幅でもよい。帯域幅および維持される同時アクセスの要件にしたがって、より多くの、あるいはより少ないポートを用いることができる。
【００４３】
このメモリは２つの主要は機能ユニット、すなわちポートページ２２０ａ〜ｋとメモリブロック２１０とを含んでいる。ポートからのメモリアクセスは、ポートページ２２０ｉ（記号「ｉ」は、構造的および／あるいは機能的に実質的に同一である複数の要素のうちのいずれか一つを指している）を通じて行われ、それは、内部メモリブロックインタフェース（例えばバッファ２３０）とポートインタフェースとの間の掛け橋として働き、メモリブロックの帯域幅の効率的に使用することを可能にしつつ、メモリブロックの帯域幅と個々のポートの帯域幅との間の差を調整する。内部のメモリブロックデータインタフェース２３０の幅は比較的広く、ポートデータインタフェースの幅は比較的狭いので、ポートページは、一時的な記憶部、ならびにパラレルからシリアルへ、およびシリアルからパラレルへのコンバータとして機能する。
【００４４】
読み出しおよび書き込みアクセスの両方に関してポートページを二重バッファリングすることで、マルチポートメモリ２００は、メモリ２１０と全てのポートの間での持続した同時の非ブロックアクセス（ｓｕｓｔａｉｎｅｄ  ｃｏｎｃｕｒｒｅｎｔ  ｎｏｎ−ｂｌｏｃｋｉｎｇ  ａｃｃｅｓｓ）を無制限に維持することができるように使用可能である。ポート書き込みアクセスについては、専用の８ビットポート書き込みデータバスを通じて、対応するページエントリを順に書き込みデータで満たしていく。続いて、メモリ書き込み信号の合図で、ページ２２０ｉの全内容が、メモリ２１０内の選択されたページに書き込まれる。
【００４５】
メモリ制御インタフェースおよびページ制御インタフェース（図示せず）を通じて、ユーザは、いつメモリ２１０にページの内容を書き込むかを制御することができる。ここで図４を参照すると、二重バッファ型のページ２２０ｉは、第一のライン２２４からメモリ２１０（図４には示されていない）へのデータ転送がメモリの使用可能性が示されるのを待っている間に、ポート書き込みアクセスをページ２２０ｉの書き込みバッファ部２４０ｉの第二のライン２２２に向けることができることを示している。
【００４６】
ポート読み出しアクセスは、メモリ２１０内の所望のページから内容（３２バイトまで）をまずポートページ２２０ｉの読み出しバッファ部２５０ｉへとロードすることによって行われる。次に、ポートページ２２０ｉの内容は、専用の８ビットポート読み出しバスＲＤ〔７：０〕を通じて順にクロックアウトされる。制御信号ＮＲＳＥｉの適切な状態およびマルチプレクサ２５６を用いてラインを選択することによって、ポートが第一のライン２２８からのデータを送っている間に、第二の読み出しページライン２２６がメモリからのデータの次のページについてできるだけ早く利用可能となる。第一のライン２２８からデータが全て出されるとすぐに、データは第二のライン２２６から送られることが可能であり、第一のライン２２８は、メモリ２１０からのデータの次のページのために利用可能となる。
【００４７】
メモリブロック２１０は、メモリ制御信号、ポートページへの専用の読み出しバス２１２および専用の書き込みバス２１４を通じてアクセスされる。データバスの幅は、ページにおけるエントリ２４２ａ〜ｏ、２４４ａ〜ｏ、２５２ａ〜ｏあるいは２５４ａ〜ｏの数に８をかけたものとなる。メモリ読み出しバス２１２およびメモリ書き込みバス２１４は、それぞれ、ポート読み出しページ２５０ｉおよびポート書き込みページ２４０ｉに連結されている。ソースアドレスおよび宛先アドレスは、各メモリリクエストを伴わなければならない。書き込みアクセスについては、ソースアドレスはポートページ２２０ｉのアドレスであり、宛先アドレスはメモリ２１０におけるページアドレスである。読み出しアクセスについては、ソースアドレスはメモリ２１０におけるページアドレスであり、宛先アドレスはポートページ２２０ｉのアドレスである。ユーザは、ポートページ２２０ｉおよびメモリブロック２１０におけるデータの一時的な妥当性にしたがって、ポートページ２２０ｉおよびメモリブロック２１０に対する書き込み動作および読み出し動作のスケジューリングを制御する。
【００４８】
多くの場合、持続された同時非ブロックモードにおいて動作することは、ページ２２０ｉあたりのエントリ２４２ｉ、２４４ｉ、２５２ｉおよび２５４ｉのエントリの数がポートの数を２で割ったものよりも大きいことを必要とし、かつ、メモリの帯域幅が、ポートページ２２０ａ〜２２０ｋの必要とされる総計の帯域幅よりも大きいことを必要とする。
【００４９】
ポートカウント、メモリ容量およびメモリの帯域幅は、上述したマルチポートメモリシステムの複数個のブロックを用いることで増やすことができる。この分野で知られている技術によって２個のマルチポートページモード（ＭＰＰＭ）メモリアーキテクチャ２００を縦続接続することによって、１ラインあたり２ｙ（一具体例では３２）バイトまでのデータを含む、２＊２ｚ（一具体例では８１９２）個までのページの持続される同時アクセスが、２＊２ｘ（一具体例では３２）個までの読み出しおよび／あるいは書き込み（Ｒ／Ｗ）ポートによって実現可能である。最大ｍ個のＭＰＰＭメモリ２００が縦続接続されてもよく、ｍ＊２ｘ（ここでｘは例えば２から７））個までのＲ／Ｗポートによって、１ラインあたり２ｙ（ここでｙは例えば３から８）バイトまでのデータを含む、ｍ＊２ｚ（ここでｚは、例えば８から１５）個のページの持続された同時アクセスを可能にする。ポートの正確な数は、所望の総計のポート帯域幅およびメモリの動作周波数に依存する。
【００５０】
マルチポートページモードメモリ２００のアプリケーションは、高ポートカウント、高帯域幅のスイッチ構造を用いることができるものを含んでいる。メモリ２００の特徴には、いかなる数のポート（例えば、一実施例では１０であり、他の実施例では１６）、各ポートについての専用の読み出しページおよび専用の書き込みページ、専用の二重バッファ型読み出しポートページ、専用の二重バッファ方書き込みポートページ、１ページラインあたりどのようなビット数（例えば、（２ｐ＋ｃ）まで、一実施例では８）のいかなる数のエントリ（２ｙまで、一実施例では３２）、いかなる数のページまたはメモリブロック（例えば２ｚまで、一実施例では４０９６）、２００ＭＨｚまでのポートページ動作周波数（あるいは用いられる技術に応じてそれ以上）、２００ＭＨｚまで（あるいはそれ以上）のメモリブック動作周波数、２サイクルのメモリ読み出し待ち時間、２サイクルのメモリ書き込みの待ち時間、単純なインタフェース、書き込みスヌープレジスタ２６０、並列読み出しポートレジスタ２７０、および並列書き込みポートレジスタ２８０が含まれる。メモリ２００のハードウェアの説明は、０．１３あるいは０．１５μｍＣＭＯＳ技術における必要以上の実験なしで存在し、あるいは提供可能である。１Ｍｂの９ポート二重バッファ構成のおおよその寸法は、約１８８０μｍ×２８７０μｍであり、２Ｍｂの２６ポートの単一バッファの構成のおおよその寸法は、約３８００μｍ×３１２０μｍである（ともに０．１５μｍ技術に関して見積もっている）。２００ＭＨｚ（ページクロック周波数およびメモリクロック周波数）での予想消費電力は、１Ｗよりも少ない。
【００５１】
以下の名称および使用の規則を図３〜１４で用いる。信号名は、大文字で始まる（例えばＣＬＫ）。かっこで挟まれた範囲が後に続く信号名は、論理的に関連している信号の範囲、すなわちバスを表す。範囲の最初の数は最上位ビット（ＭＳｂ）をしめし、最後の数は最下位ビット（ＬＳｂ）を示すものとする。例えば、ＲＤ〔１５：０〕は、ＲＤ〔１５〕がＲＤバスの最上位ビット（「ＭＳｂ」）であるようなバスである。信号名の最初の「Ｎ」は、電圧がローであるときに信号のアクティブな状態が生じることを示している。例えば、ＮＷＲ（アウトプットイネーブルハイ）はアクティブローの信号である。ＲＳＴ上のアンダースコア（「＿」）は、電圧がローである時に信号のアクティブ状態が生じることを示している。図３〜１４に示されているポートインタフェース信号の説明を以下の表１に示す。
【００５２】
【表１】
2004288355.tif 000003
図３〜１４に示されるメモリインタフェース信号の説明を以下の表２に示す。
【００５３】
【表２】
2004288355.tif 000004
【００５４】
機能の説明：図３を参照して、各ポート２２０ｉは、専用の読み出しバス２１２および専用の書き込みバス２１４を含んでいる。したがって、読み出しおよび書き込み活動は、各ポート２２０ｉを通じて同時に起こることができる。ポートインタフェースは、８ビット読み出しバス（ＲＤ）と、８ビット書き込みバス（ＷＤ）と、書き込みポートクロック（ＷＰＣＫ）と、読み出しポートクロック（ＲＰＣＫ）と、書き込みエントリポインタリセット（ＷＥＰＲ）と、書き込み二重バッファラインセレクタ（ＮＷＳＥ）と、読み出し二重バッファラインセレクタ（ＮＲＳＥ）とをそれぞれのラインについて含んでいる。ポートクロックのどちらか、あるいは両方を、専用のあるいは全体的／ユニバーサルなポートリファレンスクロック（例えば、図６〜９における信号ｒｅｆ  ｐｃｋ）に同期されてもよい。二重バッファ型の読み出しおよび書き込みポートページ２２０ｉの詳細なブロック図を図４に示す。ＭＰＰＭの２つ以上のバンクを用いるシステムについては、ポートページは二重バッファ型にする必要はない。二重バッファは、一以上のマルチバッファリング機能を行うように、複数個のバンクからそれぞれの単一のバッファを組み合わせることができるという事実に起因する。図５は、単一バッファ型のポートページ２２０’のブロック図を示しており、これは二重バッファ型ページと似ている。しかしそれにおいては。読み出し部２５０および書き込み部２４０のそれぞれは、それぞれエントリ２５２ｉおよび２４２ｉの単一のラインを含み、かつ読み出し部はマルチプレクサ２５６を含まない。
【００５５】
図４に戻って、ページ２２０における各ラインはｎ個の８ビットエントリを含む。あるラインにおける書き込みエントリへのアクセスは、アクセスポインタを用いて順に行われる。このアクセスポインタは、それぞれの書き込みライン選択信号ＮＷＳＥを用いてアクティベートされる。図６を参照すると、ポートクロック（書き込みラインについてはＷＰＣＫであり、これは、リファレンスクロックｒｅｆ  ｐｃｋと同一である、補完的である、あるいはの整数倍および／あるいは分数であってもよい）の立ち上がりエッジで選択されたエントリポインタリセット信号ＷＥＰＲをアサートすることで、エントリ０を選択するようにエントリポインタをリセットし、これがＷＤ〔７：０〕上の８ビットのデータをライン０にラッチする（ＮＷＳＥ０はアクティブローの状態である）。次の（ｎ−１）クロックは順に選択されたポインタをエントリＮへと進め、ＷＤ〔７：０〕上のデータを、連続するクロックのそれぞれについての連続したラインエントリのそれぞれにラッチする。（ｎ−１）クロックサイクルの後、ＮＷＳＥ１はアクティブロー状態へと遷移し、ＮＷＳＥ０は非アクティブなハイ状態へと遷移する。いずれかの付加的なポートクロックＷＰＣＫサイクルが、エントリポインタがライン０におけるエントリをどれも選択しないようにし（ヌルポインタ）、そしてライン０のエントリポインタは、リセット信号ＷＥＰＲが再びアサートされてエントリ０を選択するようにそれを設定するまではヌルの状態のままである。ＷＥＰＲは、ｎクロックサイクルおきに１クロックサイクルの間アクティブであるように、（例えばカウンタ回路を用いて）時間を計測されてもよい。ＷＥＰＲおよびＮＷＳＥ１をアサートした後、データをライン０についてと同じやり方で、連続したライン１のエントリに書き込む。電力節約のためにＮＷＳＥは、ポートがアクティブでないときにはアサート停止されるべきである。
【００５６】
図６は、相補的な配置における書き込みライン選択信号ＮＷＳＥ０およびＮＷＳＥ１を示しているが、これらの信号は同時に状態を変化させる必要はない。例えば、特に両方のラインを連続して書き込む必要がない場合には、ＮＷＳＥ０のアサート停止とＮＷＳＥ１のアサートとの間にいくらかの時間があってもよい。図７は、相補的な方法でＮＷＳＥ０およびＮＷＳＥ１が状態を変化させるさらに他の場合を示しているが、（ｎ−１）ＷＰＣＫサイクルの後にはいくらか時間がある。例えば、ＷＥＰＲおよびＮＷＳＥをアクティベートさせる遷移は、タイミングを確実にするために、および／あるいは潜在的なデータ損失を避けるために、一つ以上のクロックサイクル分ずれていてもよい。このような場合、ＷＥＰＲは、ＮＷＳＥが状態を変化させる前にＷＰＣＫの立ち上がりおよび立ち下がりの遷移の両方をまたいでアサートされてもよい。
【００５７】
図８を参照すると、読み出しラインエントリへのアクセスは、縦続接続されたフリップフロップを用いて順に行われる。読み出しラインを通じたデータのシフトは、それぞれの読み出しライン選択信号ＮＲＳＥを用いてアクティベートされる。図８は、二重バッファ型ポートバッファ（例えば、図４における読み出しページ構成２５０ｉを参照）における２つのページラインからエントリデータを読み出すためのＲＰＣＫ、ＮＲＳＥ０およびＮＲＳＥ１信号のシーケンスを示している。
図８の一部に示すように、単なるＮＲＳＥ０のアサートは、ポート読み出しクロックＲＰＣＫの次の立ち上がりエッジ（サイクル０）で、メモリ読み出しバス上でｎ＊８ビットのデータをライン０、ポート２２０ｉのｎ個のエントリにラッチする。次の（ｎ−１）個の読み出しクロックは、ライン２２８（図４参照）からのｎ個のエントリをＲＤ〔７：０〕上に順にシフトする。エントリポインタをエントリ０にリセットする必要はない。これは、読み出しバッファライン２２６および２２８の構造（例えば従来のシフトレジスタ）が連続した立ち上がりクロック遷移で連続したエントリからのデータを自動的に出力するので、ポインタリセット信号ＷＥＰＲがアサートされているときに選択されたエントリである。（ｎ−１）クロックサイクルの後、ＮＲＳＥ１はアクティブロー状態に遷移し、ＮＲＳＥ０は非アクティブのハイ状態に遷移する。もしＮＲＳＥ１がアクティブな状態に遷移しなければ、ＮＲＳＥ信号の一つのようなリセット信号（好ましくはＮＲＳＥ１）がポート２２０ｉからの別の読み出し動作を開始するべくアサートされるまで、さらなるＲＰＣＫサイクルはライン０からの高インピーダンスあるいはヌルステートを読み出す。ＮＲＳＥ信号は、適切な（そして一般的に外部で生成される）読み出し指示によっていつでもアクティベートされたときはいつも、連続した３２クロックサイクルの間アクティブであるように時間を（例えばカウンタ回路を用いて）計測されてもよい。ＮＲＳＥ１をアサートした（これはＮＲＳＥ０がハイに遷移する前でもあり得、サイクルＮ−１での直前のＲＰＣＫの立ち上がりエッジの後のいつでもよい）後に、ライン０と同様なやり方でｎ個のライン１のエントリにｎ＊８ビットのデータを書き込む。電力を節約するために、ＮＲＳＥは、ポートが非アクティブのときにはアサート停止されるべきである。同様に書き込みの場合も電力節約のために、ＮＷＳＥは、ポートが非アクティブであるときには、アサートを停止されるべきである。
【００５８】
メモリインタフェース：図３に戻って、メモリインタフェースは、内部のメモリブロック２１０とポートページ２２０ａ〜ｋとの間のデータ転送を制御するように構成される。個のインタフェースは、専用の読み出しおよび専用の書き込みバスを有している。メモリ読み出しおよびメモリ書き込みコマンドは、メモリクロックＭＣＫの立ち上がりでサンプリングされ、一般的にはソースアドレスおよび宛先アドレス、ならびにページライン番号（アドレスのポートページが二重バッファ構成であるとき）を有している。有効なメモリインタフェースコマンドは、読み出し、書き込みおよびノーオペレーション（読み出しも書き込みもアサートされないとき）を含む。ポートページ２２０ｉからメモリ２１０内のページへの書き込みについては、ＰＡバス上で駆動されるソースアドレスはポートアドレスであり、ＭＡバス上で駆動される宛先アドレスはメモリページアドレスである。メモリ２１０内のページからポートページ２２０ｉへの読み出しについては、ＭＡ上で駆動されるソースアドレスはメモリページアドレスであり、ＰＡ上で駆動される宛先アドレスはポートページアドレスである。メモリコマンドは、ＭＣＫサイクル毎に受け入れ可能である。
【００５９】
メモリへの書き込み：書き込みページでの全てのエントリのロードは追跡されなければならない。これは、従来のロジック（例えばＷＥＰＲおよび／あるいはＮＷＳＥの適切な遷移または組み合わせに応じてリセットされるｎビットカウンタ）を用いて自動的に行われてもよい。一旦ポートページに全てのエントリがロードされると、ＮＷＲをアサートし、ＮＲＤをアサート停止し、適切なソースアドレスおよび宛先アドレスを指定することによって、このページの内容全体がメモリ２１０に書き込まれる。図４を参照すると、書き込みページライン２２４または２２２における最後のエントリ２４２ｏまたは２４４ｏにおけるデータが、関連する書き込みによってメモリに確実に書き込まれるようにするために、最後のエントリ２４２ｏ／２４４ｏをロードするページクロック（ＰＣＫ）の立ち上がりエッジから、書き込みコマンドをサンプリングするＭＣＫの立ち上がりエッジまでの最小時間は、少なくとも０ｎｓでなければならず、好ましくは０ｎｓよりも大きい。書き込みコマンドと、データガ実際にメモリに書き込まれる時との間には、一般的には２ＭＣＫサイクルの待ち時間がある。
【００６０】
図３に戻ると、スヌープバッファ２６０は、一個のＭＣＫサイクル内でメモリ２１０に書き込まれるデータを取り込むように構成される。スヌープバッファ２６０は、メモリ書き込みコマンドの間にＳＬＤをアサートすることによってアクティベートされる。メモリ２１０に書き込まれるべきＮ個のエントリの全てからのデータは、スヌープバッファにも書き込まれ、Ｎ＊８ビット幅のスヌープバス上に駆動される。
【００６１】
図９は、ポートページ２４０ｊからメモリブロック２１０内のページへのデータの書き込みを関連するタイミングの制約とともに示すタイミング図である。ある書き込みイベントのトリガとなるメモリインタフェース信号のさまざまな状態が図９の上から２段目の波形に示されている。ＭＣＫエッジ３０１で、ポート２４０ｊ、ライン０からのデータは、メモリ２１０、ページアドレスＸに書き込まれる。書き込みページ２２４ｊにおける最後のエントリ２４４ｏへデータを書き込むポートクロックＷＰＣＫ〔ｊ〕の立ち上がりエッジ３０２は、ＭＣＫエッジ３０１の前の少なくともＴＬＥＭＷの期間に生じなければならない。ＴＬＥＭＷは、最後に書き込まれるエントリのためのクロックと、メモリブロック２１０への関連する書き込みのためのメモリコマンドクロックとの間の時間である。ＴＬＥＭＷは少なくとも０ｎｓであり、好ましくは０ｎｓよりも大きく、より好ましくは少なくとも１ｎｓである。
【００６２】
ＭＣＫエッジ３０３で、ポート２４０ｋ、ライン１からのデータがメモリ２１０、ページアドレスＺに書き込まれる。クロックＷＰＣＫ〔ｊ〕については、書き込みページ２２４ｋにおける最後のエントリにデータを書き込むポートクロックＷＰＣＫ〔ｋ〕の立ち上がりエッジは、ＭＣＫエッジ３０３の前の少なくともＴＬＥＭＷの期間に生じなければならない。ポート２４０ｊ、ライン０からのデータは、ＭＣＫエッジ３０３でスヌープレジスタ２６０においてラッチされる。
【００６３】
ＭＣＫエッジ３０５で、ポート２４０ｑ、ライン０からのデータがメモリ２１０、ページアドレスＸに書き込まれる。したがって、本アーキテクチャは、メモリ２１０内のデータを、データの最初のブロックまたはページが書き込まれた２クロックサイクル後すぐにオーバーライトすることが可能である。ポート２４０ｋ、ライン１からのデータは、ＭＣＫエッジ３０５でスヌープレジスタ２６０においてラッチされる。
【００６４】
ＭＰＰＭブロック２００も、Ｎ＊８個のパラレル入力、ＰＷＤ〔Ｎ＊８−１：０〕と、メモリ書き込みバス２１４へのＮ＊８個のパラレル出力を有してもよい。存在すれば、並列書き込みポートページレジスタ２８０は、３１というポートアドレスを有し得る。このレジスタの内容は、ソースアドレスとして並列書き込みポート２８０を有し、宛先アドレスとしてメモリ２１０内のページを有するメモリ書き込みコマンドを用いてメモリ２１０に書き込まれてもよい。
【００６５】
メモリからの読み出し：図１０を参照すると、メモリ２１０におけるページからポートページ２１０ｉへの読み出しのために、読み出しコマンド（ＮＲＤ＝０、ＮＷＲ＝１）がメモリページアドレス（ＭＡ）、ポートページアドレス（ＰＡ）およびライン番号（ポートページ２１０ｉが二重バッファ型である場合）とともにＭＰＰＭ２００に送られる。図１０に示すように、メモリ２１０からのデータがポートページ２２０ｉにロードされる前には、２ＭＣＫサイクル（ＴＭＲＬ２）プラスＴＭＣＯ（２サイクルの待ち時間の終わりからＭＣＫの次の立ち上がり遷移までの時間）の待ち時間がある。データは、メモリ読み出しコマンドの２個か３個のＭＣＫサイクルの後に、ポートページから読み出すことができる。図１０は、２あるいは３サイクルの待ち時間がある場合を示しているが、待ち時間は、メモリ動作周波数、レジスタ動作周波数、ポート動作周波数、処理技術（例えば抵抗率）、レイアウト（例えばデータ転送配線の長さ）等の数多くのファクタに依存する。したがって、適切な設計および処理技術の条件下では、１サイクルの待ち時間で十分であり、他の条件下では３サイクル以上が望ましい。
【００６６】
図１０〜１２は、二重バッファ型ポートページ２２０ｊの読み出し部２５０ｊから連続したデータストリームを得るためにメモリ読み出しコマンドとポートライン（アドレス）選択とをインターリーブすることを示している。メモリ読み出しコマンドの２ＭＣＫサイクル後での適切な読み出しタイミングを確保するように、ＮＲＳＥがアサートされ、読み出されたデータがメモリ読み出しコマンドの３ＭＣＫサイクル後にシフトされ始める。例えば、対応するメモリ読み出しコマンドから２ＭＣＫサイクルしか経っていないときに読み出しラインからのデータをシフトすると、ＴＰＣＯタイミングの不利益（すなわち、ＲＰＣＫの立ち上がりエッジから有効なＲＤまで）があり得る。
【００６７】
図１０は、メモリ２１０からポート２２０ｊへの読み出しの待ち時間が２サイクルである場合を示している。ＭＣＫエッジ３１１では、アドレス／コマンドインタフェースの波形上のコマンドおよび信号３１２がＭＡ〔Ｘ〕、ＰＡ〔ｊ〕、ＮＲＤ＝０、ＭＷＲ＝１およびＲＰＬ＝１の値を有しているので、メモリ２１０、ページＸからのデータがポート２２０ｊ、ライン１に読み出される。図１０の一番下のＲＤ波形に示すように、ポート２２０ｊ、ライン１からのデータは、ＭＣＫエッジ３１１の２ＭＣＫサイクルプラスＴＭＣＯ後にアーキテクチャ／装置２００から読み出される。ＭＣＫエッジ３１３では、アドレス／コマンドインタフェース波形上のコマンドおよび信号３１４がＭＡ〔Ｚ〕、ＰＡ〔ｑ〕、ＮＲＤ＝０、ＮＷＲ＝１およびＲＰＬ＝１という値を有しているので、メモリ２１０、ページＺからのデータがポート２２０ｑ、ライン１に読み出される。この実施形態では、メモリ読み出しコマンドＮＲＤのアサートからポートページラインのＲＤ〔７：０〕上への出力までの読み出し待ち時間は、ＲＰＣＫがＭＣＫと同じであるときには、２ＭＣＫサイクルプラスＴＭＣＯ程度の短さである。データは、適切なＮＲＤエッジの２サイクル後に、ポート読み出しライン２２６／２２８から移動され得る。ＮＲＳＥのアサートの後に読み出されたエントリの時間を測定する、あるいはそのエントリをラッチする立ち上がりのＲＰＣＫ〔ｘ〕エッジは、ＴＭＰＣＲ（ＴＭＲＬ２からＲＰＣＫ〔ｘ〕の次の立ち上がりエッジまでの時間、これは少なくとも０ｎｓでなければならず、好ましくは０ｎｓよりも大きい）プラス、ＮＲＤエッジからのＴＭＲＬ２よりも小さくてはならない。
【００６８】
図１１は、メモリ２１０からポート２２０ｉへの読み出しの待ち時間が３ＭＣＫサイクルである場合を示している。ＭＣＫエッジ３２１では、アドレス／コマンドインタフェースの波形上のコマンドおよび信号３２２がＭＡ〔Ｘ〕、ＰＡ〔ｊ〕、ＮＲＤ＝０、ＮＷＲ＝１およびＲＰＬ＝１という値を有するので、メモリ２１０、ページＸからのデータがポート２２０ｉに読み出される。図１１の一番下のＲＤ波形に示すように、ポート２２０ｊ、ライン１からのデータ３２３は、ＭＣＫエッジ３２１の３ＭＣＫサイクルプラスＴＭＣＯ後にアーキテクチャ／装置２００から読み出される。ＮＲＳＥのアサート後に読み出されるエントリの時間を計る、あるいはこのエントリをラッチするＲＰＣＫ〔ｘ〕の立ち上がりエッジは、関連するＮＲＤエッジから、ＴＭＰＣＲ（上で定義した通り）プラスＴＭＲＬ３（３ＭＣＫサイクル）以上であり得る。「待ち時間が３」の場合は、この例示的な実施形態において製造プロセス技術およびタイミングの制限のもとで、ＲＰＣＫがＭＣＫと同じでないときに好ましい。異なるプロセスおよび／またはタイミング条件下では、異なるサイクル数の待ち時間を適用してもよい。
【００６９】
図３に戻ると、ＭＰＰＭブロック２００は、Ｎ＊８ビットメモリ読み出しバス２１４によって駆動される（Ｎ＊８）ビットパラレル入力と、ＰＲＤ〔Ｎ＊８−１：０〕を駆動するＮ＊８パラレル出力バスとを有するページ２７０も含んでいてもよい。ある場合には、並列読み出しポートページレジスタ２７０は、ポートアドレスを３０と仮定してもよい。ＲＰＤバスの内容は、メモリ読み出しコマンドにおける宛先としての並列読み出しポート２７０のアドレスを用いて、メモリページの内容で更新することができる。
【００７０】
次の図１２を参照する。ＭＣＫエッジ３１１では、アドレス／コマンドインタフェース波形上のコマンドおよび信号３３２がＭＡ〔Ｘ〕、ＰＡ〔３１〕、ＮＲＤ＝１およびＮＷＲ＝０の値を有するので、並列書き込みポート２８０からメモリ２１０にデータガ書き込まれる。図１２のＰＷＤ波形に示すように、並列書き込みポート２８０からのデータは、（ＴＬＰＷＤＳ＋ＴＬＰＷＤＨ）の時間、すなわち並列書き込みレジスタ（ＰＷＤ）セットアップおよびホールドタイムの間有効である。典型的には、ＴＬＰＷＤＳ（ＰＷＤセットアップ時間）は、ＰＷＣＫの立ち上がりエッジの前の０ｎｓから２ｎｓまでであり（例えば０ｎｓと約１ｎｓとの間であり、一実施例では約０．３ｎｓ）、ＴＬＰＷＤＨ（ＰＷＤホールドタイム）は、ＰＷＣＫの立ち上がりエッジの後０．５ｎｓから４ｎｓまで（例えば０．５ｎｓから２ｎｓであり、一実施例では約１．２ｎｓ）である。ＭＣＫエッジ３３３では、アドレス／コマンドインタフェース波形上のコマンドおよび信号３３４はＭＡ〔Ｚ〕、ＰＡ〔３０〕、ＮＲＤ＝０およびＮＷＲ＝１の値を有するので、データは、メモリ２１０、ページＺから並列読み出しポート２７０へと読み出される。上述したメモリの読み出し動作については、ＭＡ〔Ｚ〕からのデータ３３７は、対応する読み出しコマンドのエッジ３３３の２ＭＣＫサイクルプラスＴＰＲＤＣの時間（すなわち、ＭＣＫエッジから有効な並列読み出しポートデータＰＲＤまで）だけ後に並列読み出しポートバスＰＲＤ上に読み出される。
【００７１】
ＭＣＫエッジ３３５では、アドレス／コマンドインタフェース波形上のコマンドおよび信号３３６がＭＡ〔Ｘ〕、ＰＡ〔ｑ〕、ＮＲＤ＝０、ＮＷＲ＝１およびＲＰＬ＝０の値を有しているので、データは、上述したメモリ読み出し動作にしたがってメモリ２１０、ページＸからポートバッファ２２０ｑ、ライン０に読み出される。ＭＡ〔Ｚ〕からのデータ３３７については、対応する読み出しコマンドエッジ３３３の２ＭＣＫサイクルプラスＴＰＲＣＯの時間後に並列読み出しポートバスＰＲＤ上に読み出される。アドレス／コマンドインタフェース波形上のコマンドおよび信号３３８は、ＭＡ〔Ｙ〕、ＰＡ〔３０〕、ＮＲＤ＝０およびＮＷＲ＝１の値を有している。したがって、ＭＣＫエッジ３３９では、データは、メモリ２１０、ページＹから並列読み出しポート２７０に読み出される。このデータ３３８は、対応するコマンドエッジ３３９の２ＭＣＫサイクルプラスＴＰＲＤＯの時間の後、並列読み出しポートバスＲＰＤ上に読み出される。
【００７２】
結論／まとめ：したがって、本発明はマルチポートメモリアーキテクチャ、ならびにこのようなメモリおよび／あるいはネットワークまたはこのようなメモリを有するネットワークにおいてデータを操作するシステムおよび方法を提供する。本発明は、ポートバッファをメインメモリに密に結合させ、ポートからポートバッファへの狭い幅のポイント間通信を有用に用いることによって、特に非常に高速なネットワークスイッチにおいて、データ通信装置におけるダイサイズを減らし、それにより、チップのかなりの面積にわたるルーティングの過密を減少させ、メモリ読み出しおよび書き込みパスにおけるＦＩＦＯをなくすことができるという効果を有する。ＦＩＦＯをなくすことによって、発明は、データ転送レートおよびスループットを高めることができる。ポイント間通信を用いるある実施形態においては、発明は、メモリ読み出しおよび書き込みバスのＲＣ要素が減ることによってメモリの周波数を高めることができ、それによりデータ転送レートおよびスループットをさらに高めることができるという効果を有する。
【００７３】
本発明の具体的な実施形態の上で行った説明は、例示および説明のためのものであり、包括的である、あるいは発明を開示されたまさにその形態に限定することを意図するものではなく、明らかに上記教示に照らして多くの改変および変形が可能である。実施形態は、発明の原理およびその実際の応用を最もよく説明するために選ばれて説明されたものであり、それによって、当業者が特定の使用の目的に適合されたさまざまな改変とともに発明およびさまざまな実施形態を最もよく使用することを可能にするであろう。発明の範囲は、ここに添付のクレームおよびそれらの等価物によって規定される。
【図面の簡単な説明】
【００７４】
【図１】従来のマルチポートメモリアーキテクチャを示す図である。
【図２】本発明のマルチポートメモリアーキテクチャの一実施形態を示す図である。
【図３】本発明のマルチポートメモリアレイの好ましいインプリメンテーションを示す図である。
【図４】二重バッファ型のポートバッファの一例のブロック図である。
【図５】単一バッファ型のポートバッファの一例のブロック図である。
【図６】本発明によるポートバッファの書き込み動作の一例のタイミング図である。
【図７】本発明によるポートバッファの書き込み動作の第二の例のタイミング図である。
【図８】本発明によるポートバッファの読み出し動作の一例のタイミング図である。
【図９】本発明によるメモリブロックの書き込み動作の一例のタイミング図である。
【図１０】本発明によるメモリブロックの読み出し動作の一例のタイミング図である。
【図１１】本発明によるメモリブロックの読み出し動作の第二の例のタイミング図である。
【図１２】は本発明による並行書き込み・読み出し動作の一例のタイミング図である。
【符号の説明】
【００７５】
１１０  メモリアレイ
１２０〜１２７  ポートバッファ
１３０〜１４４  ポート
１４０  並列読み出しレジスタ
１４１  並列書き込みレジスタ
１４２  スヌープレジスタ
１５０ａ、１５０ｂ  共通メモリ書き込みバス
１５５ａ、１５５ｂ  共通メモリ読み出しバス
２５０ｉ  ポートバッファ読み出し部
【図１】
2004288355.tif 000005
【図２】
2004288355.tif 000006
【図３】
2004288355.tif 000007
【図４】
2004288355.tif 000008
【図５】
2004288355.tif 000009
【図６】
2004288355.tif 000010
【図７】
2004288355.tif 000011
【図８】
2004288355.tif 000012
【図９】
2004288355.tif 000013
【図１０】
2004288355.tif 000014
【図１１】
2004288355.tif 000015
【図１２】
2004288355.tif 000016
【外国語明細書】
2004288355.tif 000017
2004288355.tif 000018
2004288355.tif 000019
2004288355.tif 000020
2004288355.tif 000021
2004288355.tif 000022
2004288355.tif 000023
2004288355.tif 000024
2004288355.tif 000025
2004288355.tif 000026
2004288355.tif 000027
2004288355.tif 000028
2004288355.tif 000029
2004288355.tif 000030
2004288355.tif 000031
2004288355.tif 000032
2004288355.tif 000033
2004288355.tif 000034
2004288355.tif 000035
2004288355.tif 000036
2004288355.tif 000037
2004288355.tif 000038
2004288355.tif 000039
2004288355.tif 000040
2004288355.tif 000041
2004288355.tif 000042
2004288355.tif 000043
2004288355.tif 000044
2004288355.tif 000045
2004288355.tif 000046
2004288355.tif 000047
2004288355.tif 000048
2004288355.tif 000049
2004288355.tif 000050
2004288355.tif 000051
2004288355.tif 000052
2004288355.tif 000053
2004288355.tif 000054
2004288355.tif 000055
2004288355.tif 000056
2004288355.tif 000057
2004288355.tif 000058
2004288355.tif 000059
2004288355.tif 000060
2004288355.tif 000061
2004288355.tif 000062
2004288355.tif 000063
2004288355.tif 000064
2004288355.tif 000065
2004288355.tif 000066
2004288355.tif 000067
2004288355.tif 000068