(57)【要約】  マルチポートメモリシステム用の衝突検出回路が提示される。2つ以上のポートにおける各アドレスが同時に一致する場合、および2つ以上のポートのうちの1つのポートがそのアドレスに関連する記憶場所に書込みを行っている場合に、衝突検出回路は衝突条件を検出する。次いで、衝突条件が存在するときに、衝突フラグをセットすることができる。実施形態によっては、衝突フラグがセットされるとき、アービトレーションが発生することがある。【選択図】図２
2007525766.tif 000002
【特許請求の範囲】
【請求項１】
アドレス指定可能な記憶場所のアレイを有するメモリアレイと、
前記メモリアレイに結合されたポートであって、前記ポートの各々が、アドレス、クロック信号、および読出し/書込み制御信号を前記メモリアレイに送出する、少なくとも2つのポートと、
前記アドレス、前記クロック信号、および前記読出し/書込み制御信号を前記少なくとも2つのポートの各々から受け取るように結合された衝突検出回路とを備え、
前記衝突検出回路は、前記少なくとも2つのポートのうちのいずれかで衝突条件が検出されたときに衝突フラグをセットする、マルチポートメモリシステム。
【請求項２】
前記少なくとも2つのポートに関連する信号を受け取り、信号を前記メモリアレイに提示するように前記メモリアレイに結合された制御論理回路をさらに含む、請求項1に記載のシステム。
【請求項３】
前記少なくとも2つのポートのうちの前記1つのポートがアクセスするのと同じ記憶場所で、前記少なくとも2つのポートのうちの別のポートが前記記憶場所に書込み動作を実行している場合に、前記衝突検出回路は、前記少なくとも2つのポートのうちの1つのポートに関連する前記衝突フラグをセットする、請求項1に記載のシステム。
【請求項４】
前記衝突検出回路は、
前記少なくとも2つのポートの各々からの各アドレスを受け取り、比較し、また前記各アドレスのうちのどれが同じであるのかを示す一致信号を提供するように結合されたアドレス比較回路と、
前記一致信号および前記読出し/書込み信号を受け取り、前記一致信号が、前記少なくとも2つのポートのうちの前記第1のポートと第2のポートとの間のアドレス一致を示し、前記第2のポートに関連する前記読出し/書込み信号が書込み動作を示す場合に、前記少なくとも2つのポートのうちの第1のポートに衝突信号を提供するように結合された少なくとも1つの衝突検出論理回路と、
前記衝突検出論理回路からの衝突信号を受け取り、前記第1のポートに関連する前記クロック信号に従って衝突検出フラグをセットするように結合された少なくとも1つの衝突フラグセット回路とを備える、請求項1に記載のシステム。
【請求項５】
前記第1のポートに関連する前記衝突フラグセット回路は、
前記衝突検出フラグに従ってセットされるフリップフロップ回路と、
前記第1のポートに関連する前記クロック信号の立上りエッジで、前記フリップフロップ回路からの出力信号をラッチする第1のラッチと、
前記第1のポートに関連する前記クロック信号の立下りエッジで、前記第1のラッチからの信号をラッチする第2のラッチと、
前記第2のラッチからの信号を受け取り、衝突検出フラグを提供するように結合された出力ドライバとを備える、請求項4に記載のシステム。
【請求項６】
前記フリップフロップ回路は、前記第1のラッチからの前記信号によってリセットされる、請求項5に記載のシステム。
【請求項７】
前記衝突信号に応答して各アドレスを記憶するための先入れ先出し回路をさらに含む、請求項5に記載のシステム。
【請求項８】
左側のポートのメモリアドレスおよび右側のポートのメモリアドレスを受け取るように結合されたメモリアレイと、
前記左側のポートのメモリアドレスと前記右側のポートのメモリアドレスとの間の一致を検出し、前記右側のポートがデータの書込みを行っている場合には、左側のポートの衝突フラグを生成し、前記左側のポートがデータの書込みを行っている場合には、右側のポートの衝突フラグを生成するように構成された衝突検出回路とを備える、デュアルポートメモリシステム。
【請求項９】
前記衝突検出回路は、
前記左側のポートのアドレスおよび前記右側のポートのアドレスが同じであるときに、一致信号を提供するアドレス比較回路と、
前記一致信号が存在し、前記右側のポートが書込みを行っているときに、左側のポートの衝突信号を提供する左側のポートの衝突検出回路と、
前記左側のポートの衝突信号でセットされる左側のポートのフリップフロップと、
前記左側のポートのフリップフロップからの衝突フラグを、左側のポートのクロック信号の立上りエッジでラッチする第1の左側のポートのラッチであって、前記左側のポートのフリップフロップは、該第1の左側のポートのラッチから出力される前記衝突フラグに従ってリセットされるように構成されている、第1の左側のポートのラッチと、
前記第1の左側のポートのラッチからの前記衝突フラグを、前記左側のポートのクロック信号の立下りエッジでラッチする第2の左側のポートのラッチと、
前記第2の左側のポートのラッチからの前記衝突フラグを提供する左側のポートの出力ドライバとを含む、請求項8に記載のシステム。
【請求項１０】
前記左側のポートの衝突信号に従って前記左側のポートのアドレスを記憶するフリップフロップをさらに含む、請求項9に記載のシステム。
【請求項１１】
左側のポートに提示される左側のポートのアドレスが、右側のポートに提示される右側のポートのアドレスと同一であることを検出するステップと、
前記右側のポートで、前記右側のポートのアドレスに対して書込み動作が処理されている場合に、左側のポートの衝突フラグを生成するステップとを含む、デュアルポートメモリシステムにおける衝突検出の方法。
【請求項１２】
前記左側のポートで、前記左側のポートのアドレスに対して書込み動作が処理されている場合に、右側のポートの衝突フラグを生成するステップをさらに含む、請求項11に記載の方法。
【請求項１３】
前記左側のポートの衝突フラグまたは前記右側のポートの衝突フラグのいずれかがセットされるときに、アービトレーションを行うステップをさらに含む、請求項12に記載の方法。
【請求項１４】
2つ以上のポート間のアドレス一致を検出するステップと、
前記2つ以上のポートのうちのその他いずれかのポートが書込みを行っている場合に、前記2つ以上のポートのうちの少なくとも1つのポートに対して衝突フラグを生成するステップとを含む、衝突検出の方法。
【請求項１５】
前記衝突フラグがセットされるときに、アービトレーションを行うステップをさらに含む、衝突検出の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、本開示と同じ発明者による2004年2月26日出願の、同期衝突検出(Synchronous Collision Detection)と題する、特許仮出願第60/548,527号(代理人整理番号第09145.6002-00号)、および本開示と同じ発明者による2004年3月23日出願の、マルチポートメモリシステムにおける衝突検出(Collision Detection in a Multi-Port Memory System)と題する、米国特許出願第10/808,253号(代理人整理番号第09145.0021-00号)に対して優先権を主張し、それら両方を、そっくりそのまま参考として本明細書に組み込む。
【０００２】
本発明は、デュアルポートメモリシステムに関し、詳細には、デュアルポートメモリシステムにおける衝突検出に関する。
【背景技術】
【０００３】
多くの計算システムでは、2つ以上のプロセッサが、同じメモリアレイ、具体的には同じ記憶場所に同時にアクセスする能力が重要になってきた。たとえば、コンピュータシステム内の周辺装置およびプロセッサが同じメモリアレイにアクセスできることにより、周辺装置へのデータ転送または周辺装置間のデータ転送でさえ、プロセッサ自体の介入なしに可能になる。システムによっては、こうしたメモリシステムにより、各クロックを同期させることなく、様々なクロック信号に従って動作する複数の装置が、各装置間で情報を渡すことができる。さらに、様々な装置が同じ記憶場所に同時にアクセスすることができるとき、通信システムでのデータの高速スイッチングを達成することができる。
【０００４】
マルチポートメモリシステムにより、複数の装置が同じメモリアレイを同時に利用することができる。一般に、装置は各々、メモリアレイへの読み書きを行うことができる。メモリアレイは、マルチポート記憶セルを利用して、メモリアレイ内のどんなアドレスにも、各ポートのいずれからも同時アクセスできるようにすることができる。実施形態によっては、各ポートにおけるパイプライン回路(pipelining circuit)は、データおよびアドレスの入力を制御し、セットアップ時間およびホールド時間を最小にすることができる。一般に、広範囲の選択肢および機能(たとえば、パイプラインモードまたはフロースルー(flow-through)モード、1つまたは複数のポートにおける同期動作、読み書き動作のための個別のバイト制御(byte controls)、パッケージング機能(packaging features)、および様々な規格のサポート)が、マルチポートメモリシステム上で使用可能である。
【０００５】
デュアルポートメモリシステムは、たとえば、移動体無線技術、ネットワーキング用途、ストレージエリアネットワーク、企業システム、および他のシステムにおいて使用することができる。デュアルポートメモリシステムは、高速ルータ、スイッチ、および他のネットワーキング環境において特に有用である。さらに、デュアルポートメモリシステムは、グラフィックスおよびマルチメディア用途、医療用、ならびに信号処理において有用である。
【０００６】
メモリアレイ中の同じ記憶場所に同時にアクセスすることが潜在的にできる2つ以上の独立したプロセッサを使用する場合、両方のプロセッサが同じ記憶場所に同時にアクセスしようとする潜在的可能性は高い。場合によっては、両方のプロセッサが同じ位置にアクセスを試みる結果、メモリアレイとの間のデータの読出しまたはデータの書込みに誤りが生じることがある。
【０００７】
メモリアレイ内の同じ記憶場所へのこうした2重アクセスを防止するために、各方式が考案されてきた。手法によっては、記憶場所へのアクセスを要求する第1のポートが優先権を有し、同じ記憶場所にアクセスしようとする第2のポートは、第1のポートがその動作を完了し第2のポートがその記憶場所へのアクセス権を獲得することができるまでビジー信号を受け取るように、各ポートにアービトレーションが行われる。こうしたアービトレーション方式は、ハネウェル社による1986年2月15日出願の欧州特許出願第86101935.4号、欧州特許第0192209号A1に記載されている。1995年3月14日Willenzらに交付された米国特許第5,398,211号に記載されている手法など他の手法では、1つのポートは、他のあらゆるポートをしのぐ優先権を常に有する。優先ポート(preferred port)が、その記憶場所へのアクセスを要求するこの時間中は、特定の記憶場所にアクセスを試みる他のポートはビジー信号を得ることになる。
【０００８】
しかし、衝突が発生するときにメモリアレイ内の各記憶場所へのアクセスにアービトレーションを行うための各方式は、メモリ装置のスループットを著しく低下させることがある。ある種の順次システム、特に各装置間のデジタルデータの高速スイッチングが要求されることがある遠隔通信システムにおいては、帯域幅が高くなる。アービトレーション方式回路など、データの流量を遅くする競合方法は、望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、マルチポートメモリシステムの帯域幅に影響を及ぼすことなく、メモリアレイ内の単一の記憶場所への各ポートによる同時アクセスを認識し処理することのできるマルチポートメモリシステムが必要である。
【課題を解決するための手段】
【００１０】
本発明によれば、衝突検出回路を含むマルチポートメモリシステムが提示される。衝突検出回路は、2つ以上のポートによる個々の記憶場所の同時アクセスを認識し、その同時アクセスの結果としての破損データを読み書きしたかも知れないそれらのポートに、衝突フラグを提供することができる。実施形態によっては、衝突検出回路は、メモリアレイへのアクセスと並列に動作し、したがって、メモリアレイの帯域幅に影響を及ぼさない。
【００１１】
実施形態によっては、各ポートで提示されたメモリアドレスは比較され、メモリアドレス(たとえば各整合ポート)のうちの2つ以上のアドレス間で一致する場合、一致が発生するそれらのポートについて衝突条件が存在するのかどうかが判定される。各メモリアドレス内の一致によって示されるように、すべての整合ポートが同じ記憶場所から読出しを行っている場合、各ポート間に衝突は存在しない。しかし、1つのポートがある記憶場所に書込みを行っている場合、その同じ記憶場所から読出しを行っている各ポートについて衝突条件が存在する。さらに、2つ以上のポートが同じ記憶場所に書込みを行っている場合、その記憶場所に書込みを行っているすべてのポートについて衝突条件が存在する。本発明の実施形態によっては、衝突条件が検出されるそれらのポートに対して、衝突フラグをセットすることができる。
【００１２】
したがって、本発明によるマルチポートメモリシステムは、記憶場所のアドレス指定可能なアレイを有するメモリアレイ、メモリアレイに結合された少なくとも2つのポート、アドレス、クロック信号、および読出し/書込み制御信号をメモリアレイに送出する少なくとも2つのポートの各々、ならびに少なくとも2つのポートの各々から、アドレス、クロック信号、および読出し/書込み制御信号を受け取るように結合された衝突検出回路を含む。衝突検出回路は、少なくとも2つのポートのうちのいずれかで衝突条件が検出されたとき、衝突フラグをセットする。
【００１３】
本発明によるデュアルポートメモリシステムは、左側のポートのメモリアドレスおよび右側のポートのメモリアドレスを受け取るように結合されたメモリアレイと、左側のポートのメモリアドレスと右側のポートのメモリアドレスとの間の一致を検出し、右側のポートがデータの書込みを行っている場合に左側のポートの衝突フラグを生成し、左側のポートがデータの書込みを行っている場合に右側のポートの衝突フラグを生成するように構成された衝突検出回路とを含む。
【００１４】
本発明による衝突検出の方法は、2つ以上のポート間のアドレス一致を検出するステップと、2つ以上のポートのうちの他のいずれかのポートが書込みを行っている場合に、2つ以上のポートのうちの少なくとも1つのポートに対して衝突フラグを生成するステップとを含む。
【００１５】
本発明によるデュアルポートメモリシステムにおける衝突検出の方法は、左側のポートに提示されるべき左側のポートのアドレスが、右側のポートに提示されるべき右側のポートのアドレスと同一であることを検出するステップと、右側のポートにおいて右側のポートのアドレスに対して書込み動作が処理されている場合に、左側のポートの衝突フラグを生成するステップとを含む。
【００１６】
以下の各図面を参照しながら、これらおよび他の実施形態を、さらに以下に述べる。前述の一般的な記述および以下の詳細な記述は、ともに例示的および説明的なものに過ぎず、特許請求の範囲に記載の本発明を制限するものではないことを理解されたい。
【発明を実施するための最良の形態】
【００１７】
図1Aには、本発明のいくつかの実施形態によるマルチポートメモリシステム100が示してある。マルチポートメモリシステム100は、メモリアレイ110および衝突検出120を含む。メモリアレイ110は、ポート1からNまでを介してアクセス可能な、アドレス指定可能な記憶場所130のアレイを含む。アドレス指定可能な記憶場所130のアレイの任意の記憶場所は、便宜上、記憶場所140と表示されている。記憶場所130は、メモリアドレスによってアドレス指定可能である。
【００１８】
実施形態によっては、ポート1からNまでの各々は、メモリアレイ100内の記憶場所130の各々への独立した同時アクセスを行う。ポート1からNまでの各々には、たとえば、クロック信号、アドレスライン、メモリアレイ110からデータを読出しメモリアレイ110へデータの書き込むためのデータラインと、チップイネーブル信号と、制御ラインとが含まれ得る。実施形態によっては、ポート1からNまでの各々は、メモリアレイ110内の各記憶場所130に対して、その独立したクロック信号に従って、独立におよび同時に読み書きすることができる。
【００１９】
論理回路150は、メモリシステム100の外部ユーザとメモリアレイ110との間で、クロック信号、制御信号、アドレス信号、およびデータ信号のインターフェースを制御することができる。メモリアレイ110内の追加の論理回路および制御回路は、メモリアレイ110内の個々の記憶場所へのアクセスおよび読出し/書込みの動作を制御することができる。
【００２０】
2つ以上のポートが、メモリアレイ110内の任意の記憶場所である同じ記憶場所140にアクセスするとき、衝突が起こることがある。具体的には、少なくとも2つのポート間でアクセスのオーバーラップが存在するときに衝突が起こり、その結果、各ポートのうちの少なくとも1つが、メモリアレイ110内の具体的なアドレスに、間違ったデータの読み書きを行う潜在的な可能性が生じる。こうした衝突は、衝突検出120において検出することができる。本発明の実施形態によっては、衝突検出120は、論理回路150に入力される、または実施形態によっては論理回路150からメモリアレイ110に入力されるアドレス、クロック信号、および読出し/書込み制御信号を受け取る。衝突検出120は、個々のポートが関係する衝突を検出し、その結果、各ポートに対する衝突フラグColl1からCollNを出力する。各ポートに結合されたプロセッサは、適宜、各ポートに対する衝突フラグの各々に応答する。
【００２１】
2つ以上のポートがメモリアレイ110内の記憶場所140を同時にアクセスする場合、それらのポートのうちの1つまたは複数のポートに対して衝突が起こってもよく、その結果、衝突フラグが衝突検出120によってセットされる。しかし、すべてのポートが記憶場所140から同時に読出しを行っている場合、どんなデータも、破損され、紛失され、または誤って読出されることはなく、したがって衝突は発生しない。その結果、2つ以上のポートのいずれに対しても、衝突検出120によって衝突フラグがセットされることはない。
【００２２】
他の各ポートが記憶場所140から読出しを行っているのと同時に、各ポートのうちの1つのポートが記憶場所140に書込みを行っているとき、記憶場所140から読出しを行っているそれらのポートは、遷移状態にあるデータを取り込むことになる潜在的可能性がある。しかし、書込みを行っているポートからの書込み動作によって、破損データが記憶場所140に書き込まれることにはならない。他のポートが記憶場所140に書込みを行う前後に、あるポートが記憶場所140からデータの読出しを行う場合には、結果として衝突フラグが生じない状況が起こってもよく、その結果、場合によっては古いデータを読出すことになる。しかし、記憶場所140上で書込み動作が実行される前後に読出されたデータは、依然として有効であるとみなすことができ、したがって衝突フラグは生成されない。
【００２３】
したがって、衝突検出120は、他のポートが記憶場所140に書込みを行っているのと同時に記憶場所140から読出しを行っているすべてのポートに対して、衝突フラグをセットすることができる。記憶場所140に書込みを行っている単一のポートに対しては、衝突フラグを示す必要はない。衝突フラグがセットされる各ポートを介して結合されているプロセッサは、次いで、有効な読出し動作を確実にするために、しばらく経ってから読出し動作を再主張（再アサート）するかどうか決定する。
【００２４】
2つ以上のポートが、同じ記憶場所、たとえばメモリアレイ110内の記憶場所140に同時に書込みを行っている場合には、書込みを行っている各ポートが互いに干渉し合い、その結果、不確定のデータが記憶場所140に書き込まれることになる危険がある。その結果、記憶場所140は、記憶場所140に書込みを行うポートの各々の書込みデータの無作為な組合せを含むことになる。
【００２５】
1つのポートが記憶場所140に書込みを行い、第2のポートが直ちに記憶場所140の書換えを行う場合には、第2の書込みの後に記憶場所140内のデータが有効になるので、衝突フラグはセットされない。しかし、記憶場所140に記憶されるデータは、どちらのポートが最後に記憶場所140に書込みを行うかに依存する。
【００２６】
したがって、2つ以上のポートがメモリアレイ110内の記憶場所140に同時に書込みを試みるとき、衝突検出120は、記憶場所140に同時に書込みを行っている各ポートのすべてに対して衝突検出フラグをセットすることができる。前述の通り、衝突検出120は、他のポートから記憶場所140への書込みが実行されているのと同時に記憶場所140から読出しを行っているすべてのポートに対して、衝突検出フラグをセットすることもできる。
【００２７】
衝突検出については、さらに2つのことを考慮することが重要となり得る。第1に、衝突検出120は、有効な衝突の検出および報告に失敗することがある。第2に、衝突検出120は、実際には衝突が存在しないときに、衝突を報告することがある。衝突の予測がこのように難しいのは、主として、潜在的に非同期で独立したクロックがポート1からNまでの各々に入力される結果である。本発明の実施形態によっては、ポートの各々に入力される各クロック信号は、知られている方法で関係づけることができ(たとえば、同期させてもよい)、場合によっては同じクロック信号とすることができるが、実施形態によっては、各クロック信号は、それ自体の周波数および位相を、その他のポートの各々におけるその他のクロック信号のすべてから独立させることができる。したがって、メモリアレイ110内で衝突が発生することになるのかどうか、または各ポート間においてどんな順序で衝突が発生し得るのか(すなわち、特定の記憶場所へのアクセスを要求する各ポート間で、まずどのポートが特定の記憶場所へのアクセスを要求してもよいのか)を判定することは難しいことがある。タイミングの問題は、高いクロック周波数で特に重要になることがある。したがって、衝突検出120の実施形態によっては、衝突を過大に報告する傾向になることがあり(すなわち、実際には発生していない衝突を報告することになる)、実施形態によっては、衝突のうちのいくつかを見過ごして、衝突を過少に報告する傾向になることがある。
【００２８】
再び図1Aを参照すると、実施形態によっては、1つまたは複数のクロックサイクルの間、衝突検出120に提示されるアドレスは、メモリアレイ110には提示されないことになる。たとえば、制御論理回路150がパイプライン化されたシステムを表す場合は、そうなることがある。実施形態によっては、たとえばポートの各々のクロックが同じである場合には、衝突が実際に発生する前に、アービトレーション(すなわち、実際の衝突を防止するアクセス制御)が、左側のポートと右側のポートとの間で行われてもよい。各ポートでのクロックが独立し、互いに異なる位相および周波数を有してもよい実施形態では、衝突検出120は、どのポートがまずアクセスを試みるのかを決定することによってアービトレーションを実行し、次に到着するポートにビジー信号を提供することができる。しかし、2つのクロックが同じクロックでない場合には、衝突検出においてアービトレーションを実施する際のタイミングの問題により、その手法が実施困難になることがある。さらに、アービトレーションを実施する実施形態は、アービトレーションを行わない実施形態よりも動作が遅くてよい。
【００２９】
本質において、どのポートがそのアクセスを最初に開始したのかを決定し、そのポートがそのアクセスを継続することができるようにし、負けたポートにビジー信号を発行し、次いでその負けたポートへのアクセスを可能にするための十分な時間が、単一のクロックサイクルにはないことがある。同期メモリシステムの帯域幅を最適化するためには、記憶場所140への内部アクセスができるだけ早く始まることが重要である。アービトレーションを強制するための割込みアクセスは、メモリシステム100内にメタステーブル状態の深刻な潜在的可能性をもたらすことがある。
【００３０】
各ポートでの各クロックに密接な関係がないときに、アービトレーションに影響を及ぼすために内部パイプライン段をメモリシステム100内に組み付けても、個々のポートでの各クロック間の関係が一般的に予測できない性質を有するために、タイミングの問題は完全には解決されないことがある。したがって、実施形態によっては、マルチポートメモリシステム100の各ポートが同じ周波数で動作するように、かつ/または同期するように、あるいは同じクロックを使用するように強制することによって、アービトレーション手順を実施することができる。実施形態によっては、こうした装置は、アービトレーションを行わない他の同期メモリシステム100よりも実行が著しく遅くなる。
【００３１】
メモリシステム100のポートの各々が同じクロックを使用する実施形態では、アービトレーションは、一番手のアクセスの時間によって決定されない。代わりに、各ポートのうちの1つのポートは、優先ポートと定義することができ、優先ポートによるメモリアレイ110内の記憶場所140へのアクセスは、その他のポートのうちのどのポートによるその記憶場所へのアクセスにも優先する。実施形態によっては、メモリアレイ110のポートの各々には、その他のポートの各々に対しての優先権を割り当てることができる。この場合も、記憶場所140を同時にアクセスする各ポートが読出しを行っている場合には、アービトレーションは必要でない。他の各ポートが記憶場所140から読出しを行っているのと同時に、1つのポートが記憶場所140に書込みを行っている場合、実施形態によっては、その書込みがまず実行されてもよく、読出しを行っている各ポートにはビジー信号が提供され、書込み動作が完了した後に読出しが許可される。両方のポートが書込みを行っている場合、優先ポートは書込みを行うことができ、他のすべてのポートの書込み動作は廃棄することができる。この場合も、前述のように衝突フラグを生成することができる。他のアービトレーション方式を実施できることも、当業者には理解されよう。
【００３２】
ほとんどの実施形態において、メモリシステム100でのアービトレーションは試みられていない。アービトレーションを含むことにより、装置を、より低い周波数で動作する単一の入力クロックに制限してもよく、これにより、メモリシステム100の帯域幅および柔軟性に影響を与えることがある。したがって、メモリシステム100の実施形態によっては、アービトレーションまたはそうでなければ衝突自体に影響を及ぼすことを試みることなく、衝突が発生したことを単に示す。そのようにして、衝突検出120は、メモリアレイ110および制御論理回路150と並列に動作することができ、メモリアレイ110または制御論理回路150の速度あるいは動作に影響を及ぼさない。その場合、各ポートに入力されるクロックの限界速度は、論理回路150およびメモリアレイ110の限界速度であり、衝突検出120には影響されない。さらに、各ポート向けのクロックが独立した(すなわち、互いに異なる周波数を有し、互いに非同期とすることができる)実施形態を、より容易に実施することができる。
【００３３】
この場合も、2つのポート間のタイミング関係のばらつきは、メモリシステム100の機能を定義する重要な問題である。どのポートがまず開始し、各アクセスがどの程度までオーバーラップすることになるのかをあらかじめ知ることができない場合、適切なポートに対して、衝突警告フラグを、所望のシステム速度を有するそのポートのクロックのすぐ次の立上りエッジにセットできることを保証するのがきわめて難しくなる。場合によっては、後続の立上りエッジまで信号はセットされないかもしれない。その結果、衝突フラグは、そのポートに取り付けられたプロセッサに対して、衝突が直前の2つのアクセス内で発生したことを指摘することになるが、それが、衝突の発生する直近のアクセスであったのか、または先行するアクセスであったのかを示すことができないかもしれない。
【００３４】
図1Bには、メモリシステム100のデュアルポートの実施形態が具体的に示してある。メモリシステム100のデュアルポートの実施形態は、図1Bに示すように、左側のポートおよび右側のポートを含む。デュアルポートメモリシステム100の各実施形態の開示から、図1Aに示したより一般的なマルチポートメモリシステム100へと一般化することが、当業者にはできよう。
【００３５】
図1Bには、メモリアレイ110を有するデュアルポートメモリシステム100の詳細なブロック図が示してある。メモリアレイ110は、どんなサイズのSRAMまたはDRAMのメモリとすることもできる。実施形態によっては、メモリアレイ110の記憶セル(すなわち、記憶場所140の個々のセル)は、2つのポートの各々から同じ記憶場所への同時アクセスを可能にする。図1Bに示すように、メモリアレイ110は、左側のアドレスALを左側のポートに受け取るためのアドレス入力端子、および右側のアドレスARを右側のポートに受け取るためのアドレス入力端子を含む。さらに、メモリアレイ110は、左側のクロックCLKLおよび右側のクロックCLKRのための入力端子を含み、左側のクロックCLKLは、左側のポートから記憶場所へのアクセスのタイミングを制御し、右側のクロックCLKRは、右側のポートから記憶場所へのアクセスのタイミングを制御する。
【００３６】
実施形態によっては、右側のアドレスARは、アドレスコントローラ113からメモリアレイ110に入力される。アドレスコントローラ113は、アドレスADDR、右側のクロックCLKR、およびバースト制御(burst controls)(すなわち、バーストモードの読出しおよび書込みのアクセスを制御する各制御信号)を受け取ることができる。次いで、右側のポートへのバーストモードアドレッシングは、アドレスコントローラ113によって制御することができる。
【００３７】
同様に、左側のアドレスALは、アドレスコントローラ116からメモリアレイ110に入力される。アドレスコントローラ116は、アドレスADDL、左側のクロックCLKL、およびバースト制御を受け取ることができる。次いで、左側のポートへのバーストモードアドレッシングは、アドレスコントローラ116によって制御することもできる。
【００３８】
メモリシステム100(図1B)でのアドレスおよびデータのサイズは、どんなサイズとすることもできる。実施形態によっては、アドレスは18ビットアドレスとすることができ、データは36ビットデータとすることができる。より大きいまたはより小さいアドレスおよびデータのサイズを有する他のシステムも、当業者には認識されよう。この場合も、図1B示すように、メモリアレイ110は、アドレス指定可能な記憶場所130のアレイを含み、記憶場所140は、アドレス指定可能な記憶場所130のうちの任意の1つである。
【００３９】
メモリアレイ110には、それぞれ左側のポートおよび右側のポートからメモリアレイ110に書き込むべきデータを受け取るための、それぞれ左側および右側のデータ入力端子DINLおよびDINRも含まれ得る。左側のポートでは、入力データは、書込みバッファ115によってバッファリングすることができる。同様に、右側のポートでは、入力データは、書込みバッファ112によってバッファリングすることができる。
【００４０】
メモリアレイ110には、それぞれ左側および右側のデータ出力端子DoutlおよびDoutrも含まれ得る。左側のデータ出力端子からのデータは、読出しバッファ114によってバッファリングすることができ、右側のデータ出力端子からのデータは、読出しバッファ111によってバッファリングすることができる。実施形態によっては、読出しバッファ114および111からのデータ出力は、メモリシステム100の同じデータピン上に出力することができる。
【００４１】
読み書き制御は、左側のコントローラ117および右側のコントローラ118において制御することができる。図1Bに示すように、読み書き動作に対する個々のバイト書込み制御を使用することができる。図1Bに示す実施形態では、データの各バイトに対する個々のバイトイネーブルBELは、左側のコントローラ117に入力することができる。R/WL信号およびCELはともに、メモリアレイ110の左側のポートにおいて、読出し機能または書込み機能を実行するのかどうかを制御する。同様に、データの各バイトに対する個々のバイトイネーブルBERは、右側のコントローラ118に入力することができ、信号R/WRおよびCERは、読出し動作または書込み動作を実行するのかどうかを制御する。
【００４２】
通信システムでは、メモリシステム100にアクセスをする際に、タイミングに様々な考慮が必要になることがある。たとえば、パイプライン化された実施形態は、メモリ110への書込みまたはメモリアレイ110からの読出しのためにデータが提示される数クロックサイクル前に、メモリシステム100に各アドレスを提示してもよい。さらに、アドレスおよびそれに関連する制御信号が、メモリアレイ110による処理のために実際にメモリアレイ110に提示される前の数クロックサイクルの間、フロースルーシステムは、各アドレスおよびデータをバッファリングしてもよい。
【００４３】
本発明によれば、メモリシステム100は、衝突検出120を含む。衝突検出120は、アドレスコントローラ116から左側のアドレスALを受け取り、アドレスコントローラ113から右側のアドレスARを受け取る。衝突検出120は、各アドレスに関連する制御信号をも受け取る。図1Bに示すように、衝突検出120は、左側のアドレスALに関連する信号WR_LおよびELを受け取る。衝突検出120は、左側のクロックCLKLをも受け取る。同様に、衝突検出120は、右側のアドレスARに関連する信号WR_RおよびERとともに右側のクロックCLKRを受け取る。図1Bに示したように、信号WR_RおよびWR_Lは、メモリシステム100に入力されるR/WRおよびR/WLの信号からの派生信号とすることができる。同様に、イネーブル信号ERおよびELは、それぞれチップイネーブル信号CERおよびCELから派生している。
【００４４】
実施形態によっては、各信号は、それらの信号がメモリアレイ110に提示されるのと同時に、衝突検出120に提示される。実施形態によっては、各信号は、メモリアレイ110に提示する1つまたは複数のクロックサイクル前に、衝突検出120に提示することができる。衝突検出120は、左側のポートおよび右側のポートのうちの一方または両方において、衝突を検出する。表1は、衝突検出120のいくつかの実施形態に対する真理値表を示す。
【表１】
2007525766.tif 000003
【００４５】
表1に示すように、実施形態によっては、右側のポートまたは左側のポートのどちらかで衝突条件が存在するかどうか(Collの列に示される)の判定は、左側の衝突条件については、左側のポート用のクロック信号(CLKL)の立上りエッジで行われ、右側の衝突条件については、右側のポート用のクロック信号(CLKR)の立上りエッジで行われる。左側のポートおよび右側のポートに対しては、関連するイネーブル(ERまたはEL)信号がイネーブルにセットされない場合、およびアドレスALおよびARが一致しない場合、衝突フラグはセットされない。
【００４６】
表1に示すように、左側および右側の両方のポートが同じ記憶場所に同時にアクセスを試み、各ポートのうちの少なくとも1つのポートが書込み動作すなわち書込みを試みているとき、衝突が示される。したがって、両方のポートがメモリアレイ110内の記憶場所140から同時に読出しを試みる場合、衝突条件は存在しない。しかし、一方のポートが記憶場所140から読出しを試み、他方のポートが記憶場所140に書込みを行っている場合、読出しを試みているポートに衝突フラグが送られる。さらに、両方のポートが記憶場所140に書込みを試みている場合、両方のポートに対して衝突条件が存在する。
【００４７】
実施形態によっては、衝突条件が存在するとき、図1Bにおける衝突フラグColLまたはColRがセットされる。実施形態によっては、割込みをも送ることができる。衝突条件が存在し、その結果、衝突の結果を訂正するために誤り訂正ルーチンまたは他のステップが実行されることがある場合、衝突フラグがプロセッサに送られる。
【００４８】
先に述べた通り、クロック信号CLKLおよびCLKRは、位相および周波数の両方が異なっていてもよい。図4には、本発明のいくつかの実施形態についての衝突検出のタイミングが示してある。図4のタイミング図には、左側のポートのクロックCLKL、左側のポートのクロックCLKLに従って入力されるアドレス、および衝突検出120により左側のポートにセットされる衝突フラグが示してある。さらに、タイミング図には、この例では左側のポートのクロックCLKLよりも遅れている右側のポートのクロックCLKR、左側のポートにクロック同期して取り込まれたアドレスと同一の右側のポートにクロック同期して取り込まれたアドレス、および衝突検出120により右側のポートにセットされる衝突フラグが示してある。
【００４９】
図4のタイミング図では、左側のポートおよび右側のポートは両方とも、最初に書込みを行っている。左側のポートのクロックは、tofs分だけ右側のポートのクロックよりも先行している。見て分かるように、2つの領域がある。第1の領域は、右側のクロックCLKRの立上りエッジが、左側のポートでの有効なアドレスと依然として位置が揃っているときに発生する。第2の領域は、無効な第1のアドレスと有効な第2のアドレスのポイント間で発生する。サイクル時間が5nsのクロックに対しては、たとえば、領域1は、0nsから2.8nsまでのtofsの領域で発生し、領域2は、2.81nsから4.6nsまでのtofsの領域で発生することがある。6nsのクロックサイクル時間に対しては、領域1は、0nsから3.8nsまでのtofsを有し、領域2は、約3.81nsから5.6nsまでのtofsを有することがある。同様に、7.5nsのクロックサイクル時間に対しては、領域1でのtofsは、0nsから5.3nsまでであり、領域2は、5.31nsから7.1nsまでである。領域の定義は、サイクル時間だけでなく、各アドレスに対するセットアップ時間およびホールド時間に依存することがある。
【００５０】
領域1、および両方のポートで書込みが行われている図4に示されたタイミング状況では、各タイミングサイクルの数サイクル後に衝突フラグ信号が示してある。しかし、実施形態によっては、衝突が2サイクル連続して発生する場合、第2の衝突は示されなくてもよい。したがって、アドレスA0およびA2についての衝突は示されるが、アドレスA1での衝突は示されなくてもよい。領域2では、先行するポートは、アドレスA0およびA3についての衝突を示してもよく、後続するポートは、アドレスA0、A2についての衝突を示す。
【００５１】
図2には、本発明による衝突検出120の一実施形態が示してある。図2に示す衝突検出120では、R/W信号が低い場合は読出しを示し、R/W信号が高い場合は、書込みを示す。イネーブル信号CEは、イネーブルであるときは低く、イネーブルでないときは高い。アドレスの一致は高い信号によって示され、アドレスの不一致は低い信号によって示される。同じまたは同様の結果を生み出すためには、本発明の各実施形態は、異なる信号方式を利用しても、また他のエレクトロニクス技術を実施してもよい。
【００５２】
図2に示すように、左側のポートおよび右側のポートのアドレス、ならびに信号CELおよびCER(または、実施形態によってはCELおよびCERの論理的反転)は、アドレス比較(比較器)210に入力される。実施形態によっては、左側のポートおよび右側のポートの各アドレスは、メモリアレイ110に提出されたアドレスALおよびARに対応する。
【００５３】
アドレスALおよびARが一致し、ELおよびERが両方とも高く、チップがイネーブルであることを示す場合、アドレス比較器210は、論理Highを出力する。他の場合には、アドレス比較器210は、論理Lowを出力する。
【００５４】
図3には、19ビットアドレスに適したアドレス比較器210の一実施形態が示してある。2つのアドレスALおよびARの個々のビットは、排他的NORゲート301-0から301-18で比較される。排他的NORゲート301-0から301-18は、2つの入力が一致する場合にのみ論理Highを発生する。したがって、排他的NORゲート301-0から301-18の各々からの出力信号の値が高くなるためには、2つの入力アドレスALおよびARは、ビット単位の比較において一致する。さらに、2つのイネーブル信号ELおよびER(これらは、対応するチップイネーブル信号CELおよびCERの論理的反転である)は、NANDゲート302に入力される。NANDゲート302は、ELおよびERが両方ともイネーブルである(すなわち、論理Highである)場合にのみ、論理Lowを提供する。ELおよびERが両方ともイネーブルである場合、NANDゲート302からの信号は、インバータ303で反転され、論理Highを提供する。排他的NORゲート301-0から301-18の出力信号およびインバータ303の出力信号は、NANDゲート304-1から304-7に入力される。次いで、アドレスALおよびARが一致し、ELおよびERが両方とも高い場合、NANDゲート304-1から304-7の各々は、論理Lowを出力する。304-1から304-7までのNANDゲートからの出力信号は、それぞれインバータ305-1から305-7で反転され、NANDゲート306-1から306-3に3つずつ入力される。この場合も、アドレスALおよびARが一致し、ELおよびERが両方とも高い場合にのみ、306-1から306-3までのNANDゲートからの出力信号は、すべて低い。306-1から306-3までのNANDゲートからの出力信号は、この場合もインバータ307-1から307-3で反転され、NANDゲート308に入力される。この場合も、アドレスALおよびARが一致し、ELおよびERが両方とも高い場合にのみ、NANDゲート308からの出力信号は低い。アドレスALおよびARが一致し、ELおよびERが両方とも高い場合にのみ、NANDゲート308からの出力信号は、インバータ309で反転されて、比較210から高い信号を提供する。
【００５５】
図2に示すように、比較器210からの出力信号は、NANDゲート211および212に入力される。右側のポートのR/W信号WR_Rは、NANDゲート211にも入力される。次いで、比較器210からの出力信号および信号WR_Rの両方が高い場合、または、比較器210が一致を見つけ、右側のポートの信号が書込み動作を示す場合にのみ、NANDゲート211からの出力信号は低い。結果として、比較器210が一致を見つけ、右側のポートの信号が書込み動作を示す場合にのみ、NANDゲート211からの出力信号およびバッファ214からの信号を入力として使用するNORゲート213の出力は高い。バッファ214は、過渡的なグリッチを破棄することができるように、NORゲート213への信号を遅延させる働きをする。すなわち、NANDゲート211からの出力信号が規定の期間低いときにのみ、NORゲート213からの出力信号は高くなる。
【００５６】
次いで、NORゲート213からの出力信号は、NORゲート216および217によって形成されるフリップフロップ回路に入力される。したがって、通常、NORゲート213からNORゲート216への入力信号は低い。さらに、NORゲート217への入力は低い。NORゲート217からの出力信号も通常は低く、NORゲート216からの出力信号は通常は高い。アドレス一致が検出され、右側のポートが書込みを示しているとき、NORゲート213からの出力信号は高くなり、NORゲート216および217によって形成されるフリップフロップは反転し、その結果NORゲート217からの出力信号は高くなり、NORゲート216からの出力信号は低くなる。NORゲート217からの出力信号は、左側のクロックCLKLの次の立上りエッジでレジスタ218にクロック同期して取り込まれる。次に続くサイクル中は、NANDゲート219からの出力信号を駆動して低くし、したがってNANDゲート220からの出力信号を駆動して高くすることによって、レジスタ218の出力での高い信号は、フリップフロップをリセットする。次いで、NANDゲート216および217によって形成されるフリップフロップは、NANDゲート217からの出力信号が低くなるように、その標準状態に戻る。
【００５７】
したがって、NORゲート216および217によって形成されるフリップフロップは、NORゲート213から高い信号が入力されるとセットされ、セットされた後に、ラッチ218からの出力信号の結果として、半クロックサイクル後にリセットされる。その結果、衝突の検出直後に続くクロックサイクルにおいて検出される衝突は、見逃されることがある。すなわち、図2に示された衝突検出120の実施形態は、第1の衝突が検出されたときに、衝突検出信号を提供することができるが、直後に続くクロックサイクルにおいて第2の衝突が検出されたときは、衝突検出信号を提供しなくてもよい。
【００５８】
本発明の実施形態によっては、NORゲート213からの出力信号が高い場合(衝突を示す)、その衝突に対応するアドレスADDLをFIFO 240に記憶することができる。その場合には、衝突の結果として衝突フラグがセットされないときでも、衝突に対応するアドレスをFIFO 240に記憶することができる。FIFO 240は、左側のポートに結合されたプロセッサによって読出すことができる。左側のポートに結合されたプロセッサは、衝突が発生した各アドレスをFIFO 240から読出すことができ、それらの衝突に適切に対応することができる。実施形態によっては、左側のポートに結合されたプロセッサは、FIFO 240が空になるまで、FIFO 240から各アドレスを読出すことができる。
【００５９】
次いで、レジスタ218からの出力信号は、クロックCLKLの次の立下りエッジでレジスタ222にクロック同期して取り込まれ、その結果、誤り検出信号は、出力223において、左側のクロックCLKLの次の立上りエッジで使用可能である。アドレス一致が検出され、右側のポートの信号WR_Rが書込みを示す場合、左側のポートでの誤りは高い。次いで、出力223は、衝突検出フラグを出力する。
【００６０】
図2に示すように、右側のポートにおける衝突検出信号COLLRのセッティングは、左側のポートについて前述したセッティングと同様に行うことができる。左側のポートの信号WR_Lに加えて比較器210からの出力信号がNANDゲート212に入力され、その出力はNORゲート215を駆動する。この場合も、グリッチが結果として衝突を示すことにならないよう、バッファ232は遅延を行う。この場合も、アドレス一致が検出され、左側のポートの信号RW_Lが書込みを示す場合にのみ、NORゲート215からの出力信号は高くなり、NORゲート224および225によって形成されるフリップフロップを反転させる。さらに、後に右側のポートに結合されたプロセッサによって読出すために、この衝突に対応する各アドレスをFIFO 242に記憶することができる。NORゲート225からの出力信号は、右側のポートのクロックCLKRに従ってレジスタ229および230を介してラッチされ、衝突検出信号は、出力231から出力される。この場合も、レジスタ229からの出力信号が、NANDゲート226を駆動するNANDゲート228に入力されたために、NORゲート224および225によって形成されるフリップフロップはセットされた後にリセットされる。
【００６１】
実施形態によっては、インバータ221および227を介して入力される電源投入信号PUを利用して、各フリップフロップをリセットし、レジスタ218、222、229、および230をセットすることができる。さらに、図2および図3に示す各実施形態以外の他の回路を利用して、前述のように衝突を検出できることが、当業者には理解できよう。
【００６２】
図2に示すように、衝突検出フラグは、衝突に続く作用ポート(affect port)の次の立上りクロックエッジで主張（アサート）され、1サイクルの間セットを維持する。次のサイクル中、NAND 219およびNAND 220によって表される内部リセットは、たとえば、衝突フラグのリセットに関与し、衝突フラグをリセットしなければならないポートに結合されたプロセッサの必要性を無くする。2つの衝突が後続のクロックサイクルで発生する場合、フリップフロップの状態により、第2の衝突は衝突フラグを生成しないことになる。後続のクロックサイクルでの第3の衝突は、衝突検出フラグを生成することになる。バーストアクセスが、同じ開始アドレスを有する両方のポートによって生成される場合、衝突フラグは、存在する場合には、1サイクルおきに主張（アサート）され消去されることになる。
【００６３】
実施形態によっては、正確な衝突タイミングが決定できるように、衝突フラグに待ち時間サイクルを実装することができる。しかし、この実施形態による衝突検出120は、図2で説明されているものよりも著しく複雑になることがあり、図2に示された衝突検出の実施形態ほど容易に、高い周波数で実行できない、またより高い動作周波数に上げられないかもしれない。
【００６４】
本発明による衝突検出を有するメモリシステム100の各実施形態は、従来のマルチポートシステムを上回る大幅な適用性を示す。メモリシステム100は、高い帯域を維持し、メモリアレイ100および論理回路150が動作することのできる最高動作周波数で、衝突を検出し、相応に衝突フラグを出力することができる。さらに、各ポートにおいて別々の独立したクロックを可能にするメモリシステム100の各実施形態により、より高い柔軟性を得ることができる。
【００６５】
各ポートに結合されたプロセッサは、実施形態によっては、直前の2つのクロックサイクル内で衝突が発生したとの通知を受け取る。バースト読出しおよびバースト書込みが利用される場合、バーストおよびバーストの繰り返しに関連する問題が正常な状態にあることを示すのに、この情報は有用である。場合によっては、プロセッサは、衝突の数が閾値を超えているかどうかを判定するために、その数を監視してもよい。ランダムアクセスでは、衝突が発生したアドレスを記憶する衝突検出の各実施形態、または衝突フラグをパイプライン化してどのサイクルが衝突を生成したのか決定することは、どの動作を繰り返す必要があるのかを決定する際に有益である。
【００６６】
本明細書において開示された本発明の仕様および実施方法を考慮することにより、本発明の他の実施形態が当業者には明白になるであろう。本明細書および各例は、単に例示的なものとみなされるものであり、本発明の真の範囲および趣旨は、上述の特許請求の範囲によって示される。
【図面の簡単な説明】
【００６７】
【図１Ａ】図1Aは、本発明による衝突検出を有するマルチポートメモリシステムの一実施形態を示す図である。
【図１Ｂ】図1Bは、本発明による衝突検出を有するデュアルポートメモリシステムの一実施形態を示す図である。
【図２】本発明のいくつかの実施形態による衝突検出回路の一実施形態を示す図である。
【図３】図2に示した衝突検出回路の実施形態において使用することができるアドレス比較回路の一実施形態を示す図である。
【図４】図2に示した衝突検出回路の実施形態にとって適切な衝突検出タイミング図を示す図である。
【符号の説明】
【００６８】
100…マルチポートメモリシステム、110…メモリアレイ、111…読出しバッファ、112…書込みバッファ、113…アドレスコントローラ、114…読出しバッファ、115…書込みバッファ、116…アドレスコントローラ、117,118…コントローラ、120…衝突検出、130…記憶場所、150…制御論理回路、210…比較器、211,212…NANDゲート、213…NORゲート、214…バッファ、215…NORゲート、216,217…NORゲート、218…レジスタ、219…NANDゲート、220…NANDゲート、221…インバータ、222…レジスタ、223…出力、224,225…NORゲート、226…NANDゲート、227…インバータ、228…NANDゲート、229,230…レジスタ、231…出力、232…バッファ、240FIFO、301-0〜301-18…排他的NORゲート、302…NANDゲート、303…インバータ、304-1〜304-7…NANDゲート、305-1〜305-7…インバータ、306-1〜306-3…NANDゲート、307-1〜307-3…インバータ、308…NANDゲート、309…インバータ、
【図１Ａ】
2007525766.tif 000004
【図１Ｂ】
2007525766.tif 000005
【図２】
2007525766.tif 000006
【図３】
2007525766.tif 000007
【図４】
2007525766.tif 000008
【国際調査報告】
2007525766.tif 000009
2007525766.tif 000010
2007525766.tif 000011