(57)【特許請求の範囲】
【請求項１】
独立なチャネル内に編成されたメモリ装置の複数のバンク、メモリ装置の各バンク内の複写データ、ならびに前記各チャネル内の各バンクに対するデータ読取りアクセスおよびデータ書込みアクセスを制御するためのツリー・メモリ・コントローラを備えるシステムにおけるメモリの管理方法であって、
バンク可用性を示すために、各チャネル内のバンクごとにバンク・キューを確立するステップと、
ツリー・メモリ・コントローラに読取り要求または書込み要求を送るステップと、
チャネル内の各バンクの可用性をツリー・メモリ・コントローラでチェックするステップと、
最初に利用可能なバンクを識別するステップと、
前記最初に利用可能なバンクから前記読取り要求を実行するステップとを含み、
前記データ書込みアクセスを制御するステップが、
すべての読取り要求をブロックするステップと、
書き込むべきデータが、選択したメモリ語長に対して完全であることを確認するステップと、
各バンク・キューがすべてのバンクについてのバンク可用性を示すまで待機するステップと、
すべてのバンクへの、完了したデータ語のバースト・モード転送を同時に開始するステップとを含むメモリ管理の方法。
【請求項２】
前記メモリ装置が、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）装置を含む請求項１に記載の方法。
【請求項３】
前記メモリ装置が、高速サイクル・ランダム・アクセス・メモリ（ＦＣＲＡＭ）装置を含む請求項１に記載の方法。
【請求項４】
メモリ装置の前記バンクが、２つの独立なチャネルに編成される請求項１に記載の方法。
【請求項５】
独立なチャネルに編成されるメモリ装置の複数のバンクであって、それぞれが複写データを含むバンクと、
各チャネル内の各バンクへのデータの読取りアクセスおよび書込みアクセスを制御するためのツリー・メモリ・コントローラと、
バンク可用性を示すための、各チャネル内のバンクごとのバンク・キューと、
前記ツリー・メモリ・コントローラに読取り要求または書込み要求を送るための手段とを備え、
前記コントローラが、データを読み取るためのバンクの可用性を判定し、最初に利用可能なバンクから読取り要求を実行し、
すべての読取り要求をブロックし、書き込むべきデータが、選択したメモリ語長に対して完全であることを確認し、各バンク・キューがすべてのバンクについてのバンク可用性を示すまで待機し、およびすべてのバンクへの、完了したデータ語のバースト・モード転送を同時に開始することによって、前記コントローラが前記データの書込みアクセスを制御するシステム。
【請求項６】
すべてのメモリ・バンクが同一のデータを含む請求項５に記載のシステム。
【請求項７】
前記メモリ・バンクが、高速サイクル・ランダム・アクセス・メモリ装置を含む請求項５に記載のシステム。
【請求項８】
メモリ装置の前記バンクが、２つの独立なチャネルで構成される請求項５に記載のシステム。
【請求項９】
メモリ・バンクの最小数が、ランダム・サイクル・タイムとランダム・バンク・アクセス遅延との比によって決定される請求項５に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に高速メモリ・システムに関し、より詳細には、ＳＲＡＭに近い性能を有するＤＲＡＭを用いたメモリ・システムに関する。
【０００２】
【従来の技術】
ネットワーク・プロセッサは、一般に非同期転送モード（ＡＴＭ）ネットワークまたは同期光ネットワーク（ＳＯＮＥＴ）の物理層部分などの物理的伝送媒体と、ルータまたは他のタイプのパケット・スイッチ内のスイッチ・ファブリックとの間のパケットの流れを制御する。ネットワーク・プロセッサでの記憶技術では、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）を使用して、低い電力消費で大きな記憶容量を実現する。しかし、プロセッサおよびメモリ・バスの速度が増加し続けるにつれ、システム全体の性能の要求を満たすためにメモリ・アクセス速度要件も増大する。ＳＲＡＭ（同期ランダム・アクセス・メモリ）の速度は、この速度に対処することができる。しかしＳＲＡＭメモリ容量は、一般にＤＲＡＭメモリより１桁小さい。さらにＳＲＡＭは、一般にＤＲＡＭよりも電力所要量が２桁大きい。したがって、ＤＲＡＭを使用してＳＲＡＭの性能を達成することが望ましい。
【０００３】
ネットワーク・プロセッサ内のＤＲＡＭ、またはネットワーク・プロセッサに関連するＤＲＡＭは、一般に複数のメモリ・バンクの形態で構成される。バンクのうちの所与のバンク内のアドレスに対する、連続する読取りアクセスまたは書込みアクセスでは、必要なアクセス・プリチャージ・プロセスが完了するまでのランダム・サイクル・タイムＴｒｃだけ待機することが必要となる。しかし、異なるバンク内の同じアドレスへの連続するアクセスでさえ、本明細書でバンク競合ペナルティとも呼ぶこのＴｒｃ待ち時間に直面することはない。スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）はバンク競合ペナルティを完全に回避する。すなわち、ＤＲＡＭに関連するＴｒｃ待ち時間を招くことなく、メモリ内の任意のアドレスに固定の時間でアクセスすることができる。
【０００４】
当技術分野で周知のいくつかのＤＲＡＭは、特に上述のＴｒｃ待ち時間を低減するように構成されている。例えば、いわゆる高速サイクルＤＲＡＭ（ＦＣＤＲＡＭ）は、特に最小のＴｒｃを示すように設計されている。東芝から市販されているＦＣＤＲＡＭのより具体的な例は、部品番号ＴＣ５９ＬＭ８１４ＣＦＴ−５０で識別される。この特定のタイプのＦＣＤＲＡＭでは、ランダム・サイクル・タイムＴｒｃは５Ｔに制限される。ただしＴはメモリ・クロック周期を示す。読取りまたは書込みのメモリ・アクセスは２クロック周期を必要とし、最大データ・スループットは、いわゆる「４バースト」モードを使用することによって達成される。例えば、２００ＭＨｚメモリ・クロックと、それぞれ１６ビットの４Ｍメモリ語をそれぞれ含む４つのバンクで構成されたＦＣＤＲＡＭとを用いると、メモリ・クロック周期Ｔは５ナノ秒、Ｔｒｃは２５ナノ秒、４バースト・モードを使用した最大データ・スループットは、毎秒約６．４ギガビット（Ｇｂｐｓ）となる。しかし、連続するメモリ・アクセスが４つのバンクのうちの同じバンクに向かう場合、Ｔｒｃ待ち時間の結果として、データ・スループットは２．５Ｇｂｐｓに減少する。
【０００５】
【発明が解決しようとする課題】
上記から明らかな通り、性能の点でＳＲＡＭの利点を提供すると共にＤＲＡＭの記憶容量および低電力消費の利点を実現することができる、ネットワーク・プロセッサまたは他の処理装置と共に使用するための改良型のＤＲＡＭベースのメモリ・アーキテクチャが求められている。
【０００６】
【課題を解決するための手段】
本発明のいくつかの特徴および利点の中には、ＤＲＡＭメモリを使用してＳＲＡＭに近い性能を達成することが含まれる。例示的実施形態では、本発明は、性能を最善とするためにＦＣＲＡＭ（高速サイクルＤＲＡＭ）を使用する。しかし本発明は、ＤＲＡＭベースのランダム・アクセス・メモリ・サブシステムでのツリー・アクセスに関する時間要件を低減するためのマルチ・バンク・スケジューリングの方法によってこのような高速なメモリ性能を実現する。
【０００７】
例示的形態では、独立なアドレス・データ制御線を有する少なくとも２つの独立なＦＣＲＡＭチャネルを使用して、１０Ｇｂｐｓのスループットを達成する。第１チャネル０メモリ内の全データは、第２チャネル１メモリ内に複写される。メモリ・コントローラは、ランダム・アドレスＡ０、Ａ１、Ａ２、Ａ３、Ａ４などへのアクセス読取り要求のストリームを受け取り、２つのチャネルに対して要求のストリームをスケジュールする。２つのチャネルは負荷の平衡を取り、バンク競合を最小にする。コントローラは、各チャネル内のＦＣＲＡＭメモリのバンク当たり１つの、複数のキューを維持する。ツリー・エンジンからの読取りアドレスが復号化されてバンク・アドレスが抽出され、要求は適切なバンク・キュー内に格納される。コントローラはまた、チャネルのバンクごとのバンク競合カウンタも維持する。バンク競合カウンタには、読取り要求が適切なバンクに送られた後にＴｒｃ値がロードされる。すべてのバンク競合カウンタは各クロックごとに減分され、バンク競合カウンタが０のとき、対応するバンクが利用可能となる。コントローラはまた、最後に処理されたキューに対するポインタも維持する。
【０００８】
各クロックごとに、コントローラは、次に利用可能なバンク・キューから要求を、最後に処理したキューから開始して、すなわち仕事量保存型ラウンドロビン・アルゴリズムを使用して、チャネル０またはチャネル１のどちらか利用可能な方までラウンドロビン式にディスパッチする。バンク・キューが空でなく、対応するバンク競合カウンタが０である場合、バンク・キューは利用可能である。要求を送ることができ、アクセスするバンクがビジーでない場合、チャネルは利用可能である。バンク・キューのいずれも利用可能でない場合、ＦＣＲＡＭには要求は送られない。
【０００９】
本発明の新規であると考えられる特徴は、添付の特許請求の範囲内に具体的に述べられている。しかし本発明自体は、本発明の構造と、動作方法の両方に関して、以下の説明と添付の図面を参照することによって最も良く理解することができよう。
【００１０】
【発明の実施の形態】
予想されるツリー・メモリ使用量の９５％超が読取りであり、５％未満が書込みであるようなＤＲＡＭメモリを使用してＳＲＡＭに近い性能を実現する方法が開示される。これらの方法はどんなＤＲＡＭメモリにも適用可能であるが、最良の性能は、東芝  ＴＣ５９ＬＭ８１４／０６ＣＦＴなどのデュアル・データ転送速度ＦＣＲＡＭ（高速サイクルＤＲＡＭ）を使用することで得られると考えられる。この特定のＦＣＲＡＭでは、５ｎｓの短いランダム・サイクル・タイム（Ｔｒｃ）が存在する。この装置でのメモリ・アクセス（読取りまたは書込み）は、２クロック周期を必要とする。この装置についての最大データ・スループットは、４バースト・モードを使用して達成される。例えば、４バースト・モードでの２００Ｍｈｚ４バンク×４Ｍ×１６ビットＦＣＲＡＭは、最大データ・スループット約６．４Ｇｂｐｓを達成する。バースト・モード・オペレーションの詳細は、この装置の製造業者が提供する仕様書に記載されている。
【００１１】
本発明で企図されるツリー・メモリ構造では、上述のＦＣＲＡＭなどのＤＲＡＭはバンクで編成される。これらのバンク内のアドレスに対する連続するメモリ・アクセスは、ランダム・サイクル・タイムが満了するまでの待ちを必要とする。ランダム・サイクル・タイム（Ｔｒｃ）は、プリチャージを完了するのに必要な時間である。すなわち、バンクへの各読取りまたは書込みの後に、バンクはリフレッシュしなければならない。しかし、異なるバンク内のアドレスに対する連続するメモリ・アクセスは、ランダム・サイクル・タイムによって制限されない。
【００１２】
バンク競合ペナルティのないＦＣＲＡＭを用いてほぼランダムなアクセス機能を達成することは、異なるバンク内に同一のデータ・コピーを格納し、異なるバンクに連続するメモリ・アクセス要求を送ることによって実施される。必要なデータ・コピーの最小数は、以下の式に示すように、ランダム・サイクル・タイムとランダム・バンク・アクセス遅延との比によって決定される。
（Ｔｒｃ／Ｔｒｂｄ）≧２５ｎｓ／１０ｎｓ＝３バンク
上式で、Ｔｒｃ＝５Ｔ、
Ｔｒｂｄ＝１０ｎｓ、および
Ｔ＝メモリ・クロック周期
【００１３】
１０Ｇｂｐｓの読取りスループットを達成するために、それぞれそれ自体のアドレス・データ制御線を有する２つの独立なＦＣＲＡＭチャネルを使用する。チャネル０内の３つのバンクと、チャネル１内の３つのバンクの、合計６つのメモリ・バンクが必要である。６つのバンクはすべて同一のデータを含む。しかし、他のチャネルとバンクの組合せを使用することにより、１０Ｇｐｓを超えるスループットを達成できることを理解されよう。２つのチャネルを使用することは単に例として述べたに過ぎず、本発明をそのような実施形態に限定するものと解釈すべきではない。
【００１４】
図１に示すように、ツリー・エンジン１０３は、アクセス読取り要求のストリーム（ＴＲＥ要求ＦＩＦＯ  １０４）をツリー・メモリ・コントローラ１０６に送る。最大で２００Ｍｈｚコア・クロック速度当たり１回の要求、すなわち５．０ナノ秒ごとに１回の要求をツリー・エンジン１０３で生成することができる。チャネル０  ＦＣＲＡＭ  １０７とチャネル１  ＦＣＲＡＭ  １０８は独立である。したがって、ツリー・メモリ・コントローラ１０６は、チャネル０  ＦＣＲＡＭ  １０７とチャネル１  ＦＣＲＡＭ  １０８を使用して、平均で５ｎｓごとに１回のメモリの読取りを実行することができる。ツリー・メモリ・コントローラ１０６およびＴＲＥ読取りＦＩＦＯ  １０５に対して読取り要求を送り、ツリー・エンジン１０３にデータを戻すために、ＴＲＥ要求ＦＩＦＯ  １０４に対してデュアル・クロック同期を使用する。
【００１５】
図２および３は、この方法のために使用される並行状態マシンである。図２の状態図では、ツリー・エンジン要求が適切なバンク・キュー（ＢＱｉ）に送られる。第２状態は、２つのチャネルの一方にチャネル・キュー（ＱＣ）を割り当て、バンク指数を増分する。
【００１６】
他のチャネル組合せも可能であるが、この実施形態では、以下のチャネルとバンクの組合せを使用する。
ＣＨ０−Ｂ０
ＣＨ１−Ｂ０
ＣＨ０−Ｂ１
ＣＨ１−Ｂ１
ＣＨ０−Ｂ２
ＣＨ１−Ｂ２
【００１７】
リフレッシュ割込みがアクティブであるかどうかを判定するためのチェックは、アクセス要求を送る前に実行しなければならない。リフレッシュ割込みがアクティブである場合、リフレッシュ・シーケンスは、両方のチャネルに同時に送られる。リフレッシュ割込みがアクティブである間、アクセス要求はブロックされる。
【００１８】
効率を最適化するため、ツリー・メモリ・コントローラ１０６への書込みはバースト式に行われる。ホスト・インターフェース１００は、書込みオペレーションを実行する前にホスト要求ＦＩＦＯ  １０１内に入れられる、いくつかの６４ビット語を送る。キューに入れられるデータ量は、ホスト・プロセッサに依存する。実装は、連続する３２ビット語が６４ビット・データ語を形成する３２×３２ビットＦＩＦＯとすることができる。
【００１９】
書込み実行を実施するために、すべての読取りアクセス要求をブロックする。次いで、連続する３２ビット語を組み合わせ、６４ビット語を形成する。６４ビット語を形成することができるかどうか判定するために、チェックを実行する。この語をその時に形成することができない場合、ホスト要求ＦＩＦＯをブロックし、ツリー・エンジン読取り要求を続行する。６４ビット語をその時に形成することができる場合、データをチャネル０とチャネル１の両方に同時に書き込み、ツリー・メモリ・コントローラ１０６への書込み実行が完了する。
【００２０】
図３に示すように、更新シーケンスは、すべてのバンクが非アクティブとなるまで待機する。この待機は、最大５クロック・サイクルとすることができる。ＦＩＦＯ内のすべてのデータ語をメモリに書き込むまで、以下のシーケンスを反復する。
１．リフレッシュ割込みがアクティブである場合、リフレッシュ・シーケンスを完了し、
２．アドレスを送り、６４ビット・データをＣＨ０−Ｂ０およびＣＨ１−Ｂ０に書き込む
３．アドレスを送り、６４ビット・データをＣＨ０−Ｂ１およびＣＨ１−Ｂ１に書き込む
４．アドレスを送り、６４ビット・データをＣＨ０−Ｂ２およびＣＨ１−Ｂ２に書き込む
【００２１】
本発明は、マルチ・バンク・スケジューリングを使用して、ＤＲＡＭベースのランダム・アクセス・メモリ・サブシステムでのツリー・アクセスに関する性能を改善する。独立なチャネル０  ＦＣＲＡＭ  １０７とチャネル１  ＦＣＲＡＭ１０８の両方を使用する。チャネル１メモリは、チャネル０内のメモリ全体の複製である。
【００２２】
図１のツリー・メモリ・コントローラ１０６は、ランダム・アクセスＡ０、Ａ１、Ａ２、Ａ３、Ａ４などに対するアクセス読取り要求１０４のストリームを受け取る。さらにツリー・メモリ・コントローラ１０６は、負荷の平衡を取ってバンク競合を最小にする２つのチャネル（すなわちチャネル０  ＦＣＲＡＭ  １０７とチャネル１  ＦＣＲＡＭ  １０８）への要求のストリームをスケジュールする。ツリー・メモリ・コントローラ１０６は、各ＦＣＲＡＭバンクについてのキューを維持する。ツリー・エンジン１０３は読取りアドレスを復号化し、要求を適切なバンク・キューに格納する。
【００２３】
図３に示すように、チャネルごとに１つのバンク競合カウンタを維持する。読取り要求が適切なバンクに送られた後、バンク競合カウンタは、ダウンカウント用に使用されるカウンタのタイプと、ゼロ検出がラッチされたかどうかとに依存する値にリセットされる。この値は、Ｔｒｃ値、またはＴｒｃに１を加えた値／Ｔｒｃから１を減じた値となる可能性がある。すべてのバンク競合カウンタは、各クロック・サイクルごとに減分される。バンク競合カウンタが０であるとき、対応するバンクは利用可能となる。ツリー・メモリ・コントローラ１０６は、ラウンドロビン・アルゴリズム・スケジューリングをサポートして、最後に処理したキューに対するポインタを維持する。
【００２４】
各クロック・サイクルごとに、ツリー・メモリ・コントローラ１０６は、最後に処理したキューから始まる、次に利用可能なバンク・キューから、利用可能なチャネル（すなわち、チャネル０  ＦＣＲＡＭ  １０７またはチャネル１  ＦＣＲＡＭ１０８）に要求をディスパッチする。バンク・キューが空でなく、かつバンク競合カウンタが０である場合、バンク・キューは利用可能である。要求を送ることができ、かつアクセスするバンクがビジーでない場合、チャネルは利用可能である。バンク・キューがどれも利用可能でない場合、ＦＣＲＡＭ（１０７および１０８）に要求は送られない。ツリー・メモリ・コントローラ１０６は、リフレッシュ割込みをチェックする。リフレッシュ割込みがアクティブである場合、リフレッシュ要求を処理する。リフレッシュ処理を処理した後、読取り要求を送ることができる。
【００２５】
効率を最適化するため、ツリー・メモリ・コントローラ１０６への書込みはバースト式に行われる。ホスト・インターフェース１００は、書込みオペレーションを実行する前にホスト要求ＦＩＦＯ  １０１内に入れられる、いくつかの６４ビット語を送る。キューに入れられるデータ量は、ホスト・プロセッサに依存する。実装は、連続する３２ビット語が６４ビット・データ語を形成する３２×３２ビットＦＩＦＯとすることができる。ホスト読取りデータＦＩＦＯ  １０２は、ホスト・インターフェース１００にデータを戻す。
【００２６】
書込み実行を実施するために、すべての読取りアクセス要求をブロックする。次いで、連続する３２ビット語を組み合わせ、６４ビット語を形成する。６４ビット語を形成することができるかどうか判定するために、チェックを実行する。この語を形成することができない場合、ホスト要求ＦＩＦＯをブロックし、ホストが残りの語を送るまで、ツリー・エンジン読取り要求を続行する。更新アクセスおよび読取りアクセスをインターリーブする。図３に示すように、状態マシンは、ＢＱからＦＣＲＡＭチャネル０またはチャネル１への要求をスケジュールする。更新シーケンスは以下の通りである。
１．リフレッシュ割込みがアクティブである場合、リフレッシュ・シーケンスを完了する。
２．指定のバンクがチャネル０またはチャネル１のどちらかでビジーである場合、アクセス保留フラグをセットする。このアクセス保留フラグは、読取りアクセスを指定のバンクに両方のチャネルに関してディスパッチすることをブロックする（他のバンクは引き続きアクセスすることができる）。
３．バンク競合カウンタが０に達するまで待機し、両方のチャネルへの書込みを完了する。
【００２７】
本発明のいくつかの好ましい特徴だけを例示したが、当業者は多くの修正および変更を思いつくであろう。したがって、特許請求の範囲は、本発明の真の精神内にあるすべてのこのような修正および変更を包含するものとする。
【図面の簡単な説明】
【図１】データ・フローを示すブロック・インターフェース図である。
【図２】ツリー・エンジン要求を送ることについての状態図である。
【図３】アクセス要求をスケジュールする状態図である。
【図１】
0004299536.tif 000002
【図２】
0004299536.tif 000003
【図３】
0004299536.tif 000004