(57)【特許請求の範囲】
【請求項１】
複数のマルチポート内部キャッシュDRAM（AMPIC DRAM）ユニットからなるアレイにおける性能を改良する方法であって、複数のシステムI/Oリソースが、該アレイの各ユニット内の対応するDRAMコアに接続された共通の内部データバスを介してインターフェースしており、処理ソースからのデータもまた、データ転送サイクルの間にバスを介して各ユニットに伝送されるようになっており、前記方法が、
データ転送と同時に、前記データ転送サイクルの間に、あるシステムI/Oリソースから前記アレイのすべてのAMPIC DRAMユニットにメッセージを送信することによって、システムI/Oリソースが、互いにマルチビットメッセージを、DRAM内のメッセージのアドレス位置に関するビット情報と同時に送信できるようにするステップを含み、
各システムI/Oリソースが前記AMPIC DRAMアレイ内の対応する１つのデータポートに接続され、前記アレイを複数のDRAMバンクに分割するステップと、前記各データポートをDRAMバンクの数に等しい数のスロットに分割するステップと、前記システムI/Oリソースから到来したデータを、該データが書き込まれることになるDRAMアドレスによって決定される、前記システムI/Oリソースのデータポートの適切なスロットに送るステップと、どのDRAMバンクに該データを書き込むかを決定するステップが実施されることからなる、方法。
【請求項２】
ATMネットワーキングにおけるような比較的短いメッセージを使用し、あるシステムI/Oリソースから到来したメッセージデータを前記システムI/Oリソースのデータポートのスロットに送る、請求項１の方法であって、他のシステムI/Oリソースが、それらの対応するデータポートのそれぞれ異なるスロットを同様に短いメッセージで満たしている場合は、すべてのそれらのメッセージを書き込み対象のDRAMバンクに同時に送信し、それによって、前記データバスを効率的に使用することを可能にする、方法。
【請求項３】
各AMPIC DRAMユニットは、前記データ転送の間に異なるデータ部分を受信するが、同じDRAMメッセージのアドレス位置を受信し、各AMPIC DRAMが、システムI/Oリソースによって送信されたメッセージを、内部DRAMアレイの同じ位置に書き込むことができるようにする、請求項１または２の方法。
【請求項４】
メッセージの宛先のシステムI/Oリソースで、メッセージが読み出される、請求項３の方法。
【請求項５】
システムI/Oリソースによって送信されたメッセージのAMPIC DRAMアレイへの書き込みに続いて、該メッセージが送られる宛先のシステムI/Oリソースに、メッセージの存在と、前記AMPIC DRAMアレイ内の該メッセージのアドレス位置の両方を通知するステップを実行する、請求項１の方法。
【請求項６】
前記のように通知された際に、メッセージが送られる前記宛先のシステムI/Oリソースが、前記AMPIC DRAMアレイから該メッセージを取り出す、請求項５の方法。
【請求項７】
前記メッセージデータが、前記AMPIC DRAMアレイ全体にわたって分布し、該アレイの各要素が、該データの一部を保持し、前記メッセージの完全な信号情報が、前記AMPIC DRAMアレイの各要素に送信される、請求項６の方法。
【請求項８】
前記メッセージビットのアドレス位置情報が、DRAMアレイにおいて複数のセクションに論理的に分割される、請求項４の方法。
【請求項９】
前記セクションのサイズが等しい、請求項８の方法。
【請求項１０】
リンクアドレスビットが、前記セクションより大きなメッセージの部分を結合するメッセージ位置情報に含まれる、請求項８の方法。
【請求項１１】
前記AMPIC DRAMアレイが、AMPIC DRAMに結合されたシステムI/Oリソースの数以上の、複数の独立に制御されるバンクに分割され、各内部データバスが該各DRAMバンク間に均等に分割される、請求項１の方法。
【請求項１２】
各転送に対して、適切なデータポートを適切なDRAMバンクに双方向に切り換えるために、各システムI/Oリソースのデータポートと前記DRAMアレイの間にクロスバースイッチを配置する、請求項１１の方法。
【請求項１３】
前記メッセージのサイズもまた、前記メッセージのアドレス位置と共に、前記宛先のシステムI/Oリソースに送られる、請求項５の方法。
【請求項１４】
前記メッセージが、DRAMアレイ内に書き込まれるときに、該DRAMアレイに前記メッセージのサイズを記憶し、データ有効信号がメッセージのビットカウントによって表明されている間、前記データ有効信号をアサートすることによって、該メッセージのサイズを宛先のシステムI/Oリソースに示す、請求項１３の方法。
【請求項１５】
前記宛先システムI/Oリソースが、前記メッセージのアドレス位置を受信すると、各AMPIC DRAMに前記アドレス位置を送る、請求項４の方法。
【請求項１６】
前記メッセージのアドレス位置が各AMPIC DRAMに送られると、前記アレイの各AMPIC DRAMから、メッセージデータのその部分を読み出すことによって、前記メッセージの取り出しを実行し、該メッセージを前記宛先のシステムI/Oリソースに送信する、請求項６の方法。
【請求項１７】
前記メッセージが、マルチキャストメッセージとして複数の宛先のシステムI/Oリソースに送信されて、同じDRAMアドレスが、各マルチキャストメッセージシステムI/Oリソースから受信されたことを認識すると、単一のDRAM読み出しサイクルが実行される、請求項１５の方法。
【請求項１８】
AMPIC DRAMアレイの連続するセクションからのメッセージの読み出しにおいて、あるセクションのリンクアドレスが、他のセクションを指示していない場合に、全メッセージの読み出しが終了する、請求項１０の方法。
【請求項１９】
前記セクションのサイズが、主として比較的小さなメッセージと大きなメッセージのそれぞれに対応するために、可変サイズの値の範囲にプログラムされる、請求項８の方法。
【請求項２０】
メッセージのサイズに関係なく、メッセージをDRAMアレイ内に背中合わせに記憶し、それに応じて、異なるサイズのメッセージがアレイ内に分布する、請求項４の方法。
【請求項２１】
システムI/Oリソース間のアドレスの伝送が、AMPIC DRAM外部のロジックで実行される、請求項４の方法。
【請求項２２】
前記AMPIC DRAMユニットは、メッセージデータを受信すると、DRAMアレイ内の空きアドレス位置を選択して、その位置にメッセージを書き込み、そして、前記宛先のシステムI/OリソースにMESSAGE READY 信号で通知し、前記宛先のシステムI/Oリソースが、メッセージを受け取る準備ができている場合には、前記アレイの各DRAMから前記メッセージデータのその部分を取り出して、該データを、前記AMPIC DRAMユニットの内部構造からすべてが独立した、前記宛先のシステムI/Oリソースに送り、前記アレイは、記憶及び送信用の交差接続アレイとして機能することからなる、請求項１の方法。
【請求項２３】
複数のマルチポート内部キャッシュDRAM（AMPIC DRAM）ユニットからなるアレイの性能を高めるための装置であって、複数のシステムI/Oリソースが、該アレイの各ユニット内の対応するDRAMコアに接続された共通の内部データバスを介してインターフェースしており、該装置は、データ転送サイクルの間に、あるシステムI/Oリソースから前記アレイのすべてのAMPIC DRAMユニットにメッセージを送信することによって、システムI/Oリソースが、互いにマルチビットメッセージを、DRAM内のメッセージのアドレス位置に関する情報と同時に送信することができるようにするための論理回路を備え、
処理ソースからのデータもまた、前記データ転送サイクルの間にバスを介して各ユニットに伝送されるようになっており、
各AMPIC DRAMユニットは、前記データ転送中に異なるデータ部分を受信し、各AMPIC DRAMユニットは、同じDRAMのメッセージのアドレス位置を受信して、内部DRAMアレイ内の同じ位置に、システムI/Oリソースによって送信されたメッセージを書き込むように接続され、
前記アレイが複数の独立に制御されるDRAMバンクに分割され、各システムI/OリソースがAMPIC DRAMアレイ内の対応する１つのデータポートに接続され、前記各ポートがDRAMバンクの数に等しい複数のスロットに分割され、システムI/Oリソースから到来するデータを、データを書き込むべきDRAMアドレスによって決定される、システムI/Oリソースのデータポートの適切なスロットに送り、該データを書き込むDRAMバンクを決定する、装置。
【請求項２４】
比較的短いメッセージをATMネットワーキングで使用し、あるシステムI/Oリソースから到来するメッセージデータを、該システムI/Oリソースのデータポートのスロットに送ることからなる請求項２３の装置であって、他のシステムI/Oリソースが、それらの対応するデータポートのそれぞれ異なるスロットを同様に短いメッセージで満たしている場合は、すべてのそれらのメッセージを書き込み対象のDRAMバンクに同時に送信し、前記データバスを効率的に使用することを可能にするための手段を備える、装置。
【請求項２５】
メッセージの宛先のシステムI/Oリソースが、メッセージを読み出すことを可能にするための手段を備える、請求項２３の装置。
【請求項２６】
システムI/Oリソースによって送信されたメッセージのAMPIC DRAMアレイへの書き込みに続いて、該メッセージが送られる宛先のシステムI/Oリソースに、メッセージの存在と、前記AMPIC DRAMアレイ内の該メッセージのアドレス位置との両方を通知するよう動作する手段を備える、請求項２４の装置。
【請求項２７】
前記のように通知された際に、メッセージが送られる前記宛先のシステムI/Oリソースが、前記AMPIC DRAMアレイから該メッセージを取り出すことができるようにするための手段を備える、請求項２６の装置。
【請求項２８】
前記メッセージデータが、前記AMPIC DRAMアレイ全体にわたって分布し、該アレイの各要素が該データの一部を保持し、前記メッセージの完全な信号情報が、前記AMPIC DRAMアレイの各要素に送信されることからなる、請求項２７の装置。
【請求項２９】
前記論理回路によって、前記メッセージのサイズもまた、前記メッセージのアドレス位置と共に、前記宛先のシステムI/Oリソースに送ることが可能である、請求項２６の装置。
【請求項３０】
前記論理回路は、前記メッセージがDRAMアレイ内に書き込まれるときに、該DRAMアレイに前記メッセージのサイズを記憶し、データ有効信号がメッセージのビットカウントによって表明されている間、前記データ有効信号をアサートすることによって、該メッセージのサイズを宛先のシステムI/Oリソースに示す、請求項２９の装置。
【請求項３１】
前記メッセージのアドレス位置を受信したときに、各AMPIC DRAMに前記アドレス位置を送るように前記宛先のシステムI/Oリソースを動作させるための手段を備える、請求項２６の装置。
【請求項３２】
前記メッセージのアドレス位置が各AMPIC DRAMに送られると、前記アレイの各AMPIC DRAMから、メッセージデータのその部分を読み出すための手段によって、前記メッセージの取り出しを実行して、該メッセージを前記宛先のシステムI/Oリソースに送信する、請求項２７の装置。
【請求項３３】
前記メッセージが、マルチキャストメッセージとして複数の宛先のシステムI/Oリソースに送信され、同じDRAMアドレスが、各マルチキャストメッセージシステムI/Oリソースから受信されたことを認識すると、単一のDRAM読み出しサイクルを実行する、請求項３１の装置。
【請求項３４】
前記メッセージビットのアドレス位置情報が、DRAMアレイにおいて複数の同様のセクションに論理的に分割される、請求項２５の装置。
【請求項３５】
リンクアドレスビットが、前記セクションより大きなメッセージの部分を結合するメッセージアドレス位置情報に含まれる、請求項３４の装置。
【請求項３６】
前記アレイの連続するセクションからのメッセージの読み出し中に、あるセクションのリンクアドレスが、他のセクションを指示していない場合に、全メッセージの読み出しが終了する、請求項３５の装置。
【請求項３７】
前記セクションのサイズが、比較的小さなメッセージと大きなメッセージの両方に対応するために、可変サイズの値の範囲にプログラムされる、請求項３４の装置。
【請求項３８】
メッセージのサイズに関係なく、メッセージをDRAMアレイ内に背中合わせに記憶し、それに応じて、異なるサイズのメッセージがアレイ内に分布する、請求項２５の装置。
【請求項３９】
システムI/Oリソース間のアドレスの伝送が、AMPIC DRAM外部のロジック回路で実行される、請求項２５の装置。
【発明の詳細な説明】
本発明は、DRAM構造として知られるダイナミックランダムアクセスメモリに関連し、より詳しくは、DRAMのマルチポート内部キャッシュバージョンに関連する。内部キャッシュされるDRAMは、大きなデータブロックを内部的に移動させることにより、システムの非常に多くの入出力（I/O）リソースに対するメモリに極めて高いシステム帯域幅を提供するものであり、このことは、共同発明者の一人、Mukesh Chatterにより1995年12月29日に出願された、「High Performance Universal Multi Port Internally Cached Dynamic Random Access Memory System,Architecture and Method」と題する係属中の米国特許出願第581,467号に記載されており、また、同じ動作において、拡張されたアーキテクチャ及び改良システム対しても高いシステム帯域幅を提供する。
【０００１】
【発明の背景】
図１を参照して後述する前記係属出願におけるマルチポート内部キャッシュDRAM（AMPIC DRAMと呼ぶ）は、中央処理装置（CPU）のようなマスターコントローラを有するシステムにおいて、高いシステム帯域幅を使用するために設計される。このマスターコントローラは、それぞれが共通のシステムバスインターフェースに接続され、それに対するアクセスが競合するところのパラレルデータポートとダイナミックランダムアクセスメモリを備えている。これによって、マルチポート内部キャッシュDRAMからなる改良されたDRAMアーキテクチャが提供されるが、このDRAMアーキテクチャには、それぞれが、個別の外部I/Oリソースと、内部DRAMメモリとの間に対応するバッファを介して接続された複数の独立したシリアルデータインターフェース、シリアルインターフェースとバッファの間に配置されたスイッチングモジュール、及び、所望のデータに対する経路指定機能の割り当てを適切に切り換えるために、前記CPUのようなバスマスターコントローラによる動的配置の下に、シリアルインターフェースをバッファに接続するためのスイッチングモジュールロジック制御が含まれる。この技術によれば、メモリチップ内部のデータブロックの転送を従来のアプローチに比べて桁違いの速さで実行することができ、現行システムの帯域幅制限及び関連する問題を除去することができる。そして、この場合、非常に高度化されたシステム性能が低コストで提供されるとともに、統一化されたメモリアーキテクチャが提供される結果として、多くのアプリケーションに対して、実質的に統括的な使用が可能となる。
【０００２】
前記係属出願においては、各々が広いデータバスを有する非常に多くのシステムI/Oリソースをサポートすることができるが、図２を参照して後述するように、AMPIC DRAMデバイスにおけるピン数は、これらのいくつかのデバイスを、サポートするシステムI/Oリソースの数に応じてスタックする（重ねる）ことによって、依然として少なく維持される。そして、各システムI/Oリソースバスの広さ（幅）は、技術的な制限によってのみ制限される。
【０００３】
前述した、また、前記係属出願に記載されたかかるアーキテクチャは、DRAMのアクセスに際して、各システムI/Oリソースに対して非常に大きな帯域幅をみごとに提供するものであるが、該システムは、あるシステムI/Oリソースが、他のシステムI/Oリソースにデータを送信することができるメカニズムを提供しない。そして、これに対する改良が本発明によってもたらされる。一例として、システムI/Oリソースｍが、システムI/Oリソースｎに送信すべき多ビット（マルチビット）メッセージを有している場合に、システムI/Oリソースｍが、AMPIC DRAMスタックまたはアレイにこの多ビットメッセージを書き込むと、本発明のメカニズムにより、かかるメッセージの存在と、AMPIC DRAMアレイ内のメッセージ位置の両方が、システムI/Oリソースｎに通知される。さらに、システムI/Oリソースｎが、アレイにおけるメッセージの存在とその位置を通知されると、本発明に従って、システムI/Oリソースｎが、該アレイからメッセージを取り出すことを可能とする技術が提供される。このように、メッセージデータが、AMPIC DRAMアレイ全体間に分散配置され、さらに、アレイの各要素がデータの一部のみを保持する限り、完全な信号情報は、AMPIC DRAMアレイの個々の要素に送信されなければならない。
【０００４】
さらに、本発明は、いくつかの小サイズ同時転送、または、単一の大規模転送のいずれも可能にする分割技法をさらに改良し、広い（広帯域）システム内部データバスをより効率的に使用して、小さな単位量及び大きな単位量のデータ転送の両方に対応するものである。
【０００５】
【発明の目的】
従って、本発明の第１の目的は、マルチポート内部キャッシュDRAM等の性能をアークテクチャ上改善するための、新規で改良された装置及び方法を提供することであり、これは、システムI/Oリソースが、互いにメッセージデータを送信し、かかるメッセージの存在とメッセージ位置の両方を通知し、そして、メッセージを取り出すことを可能とするための新規なメカニズム及び技法を提供することによってなされる。
【０００６】
本発明の別の目的は、新規な分割技法を使用して、かかる改良されたシステムを提供することであり、このシステムにおいては、広システム内部データバスをより効率的に使用して、小さな単位量及び大きな単位量の内部データ転送に対応し、いくつかの同時小メッセージ転送または単一の大規模転送が可能となる。
【０００７】
本発明のさらに他の目的については後述するが、それらは特許請求の範囲により詳細に記載されている。
【０００８】
本発明のより広い１態様において要約すると、本発明は、AMPIC DRAMユニットのマルチポート内部キャッシュアレイを含み、複数のシステムI/Oリソースは、アレイの各ユニットにおいて対応するDRAMコアに接続された共通の内部データバスを介してインターフェースしており、CPUまたは同様のソースからのデータもまた、データ転送サイクルの間にバスを介して各ユニットに伝送される。また、本発明は、性能を改良する方法を含み、該方法は、データ転送と同時に、前記データ転送サイクルの間に、あるシステムI/OリソースからアレイのすべてのAMPIC DRAMユニットにメッセージを送信することによって、システムI/Oリソースが、互いにマルチビットメッセージを、さらに、DRAM内のメッセージアドレス位置に関するビット情報もそれと同時に、送信することができるようにすることを含む。
【０００９】
好ましくかつベストモードである構成、装置、技法、及び代替構造について、以下に詳述する。尚、本発明は、添付の図面を参照して説明される。
【００１０】
【本発明の好ましい実施態様】
前述したように、前記係属出願のAMPIC DRAMデバイスによって提供される基本構造を図１に示す。この基本構造は、AMPIC DRAMデバイス内に配置されたDRAMメモリアレイ中の対応するデータポートによって、システムI/OリソースNo.1．．．No.n間に非常に広帯域の接続を提供する。かかるAMPIC DRAMデバイスのフレキシビリティは、図２の例で説明するように、（また、前述したように）複数のAMPIC DRAMデバイスを「スタック」する能力によって、さらに強化される。図２には、AMPIC  No.0〜No.3の４つのAMPIC DRAMデバイスからなるシステムが示されている。システム内のAMPIC DRAMデバイスの実際の数は、技術上の制限によってのみ制限される。AMPIC DRAMデバイスのかかるスタックまたはアレイが構築された場合は、システムI/Oリソースが利用可能な全DRAMアレイのサイズは、各AMPIC DRAMデバイスのDRAMアレイのサイズに、スタック内のデバイスの数を乗じたものに等しい。例えば、図２に示した各AMPIC DRAMが、６４ＭビットDRAMを含むものと仮定すると、図示したAMPIC DRAMスタックNo.0〜No.3は、システムI/OリソースNo.1〜No.4に対して２５６ビットDRAMアレイを提供することになる。
【００１１】
かかるアーキテクチャは、DRAMをアクセスするために、各システムI/Oリソースに極めて広帯域の帯域幅を提供するが、このシステムでは、以前指摘したように、あるシステムI/Oリソースから他のシステムI/Oリソースに、データを送ることができない。例えば、システムI/Oリソースｍが、システムI/Oシステムｎに対して３２Ｋビットのメッセージを送る必要があり、次に、システムI/Oリソースｍが、AMPIC DRAMアレイNo.0〜No.3にこのメッセージを書き込んだ場合、メッセージの存在と、AMPIC DRAMアレイ内のメッセージ位置の両方についてシステムI/Oリソースｎに通知するための新しいメカニズムが本発明によって提供されなければならない。システムI/Oリソースｎがメッセージの存在とAMPIC DRAMアレイ内のメッセージ位置を通知されると、システムI/OリソースｎがそのメッセージをAMPIC DRAMアレイから取り出すことを可能とせしめるための、追加の新規なメカニズムが再び本発明に従ってさらに提供されなければならない。前述したように、メッセージデータがAMPIC DRAMアレイ全体間に分散配置され、アレイの各要素がデータの一部のみを保持する限り、完全な信号情報は、AMPIC DRAMアレイの個々の要素に送信されなければならないということに注意することが重要である。
【００１２】
本発明によって提供されるような上述の及び後述するようなタイプの新規なメカニズムの存在を想定すると、このメカニズムによって、システムI/Oリソースは、AMPIC DRAMアレイを介して互いにメッセージを送信することができる。システムI/Oリソースｍが、システムI/Oリソースｎに３２Ｋビットのメッセージを送信する例では、１Ｋバイトの内部データバスにより、わずか２（つの）AMPIC DRAM転送サイクルで、２つのシステムI/Oリソース間のメッセージの転送が可能となる。説明のために、AMPIC DRAM転送サイクルの時間を５０ナノ秒（ｎＳ）と仮定した場合は、AMPIC DRAMにおいて利用可能な全帯域幅は、３２Ｋビット／５０ｎＳ、すなわち、６５５ギガビット／秒であることがわかる。しかし、この非常に広帯域幅のバスは、小さなメッセージをシステムI/Oリソース間で転送するのにはあまり適さない。小さなメッセージをシステムI/Oリソース間で転送することを必要とするアプリケーションには、例えば、ATMネットワーキングがある。ATMでは、データは、わずか４２４ビットの単位で伝送される。システムI/Oリソースｍとｎが共に、ATMネットワークデバイスの場合は、システムI/Oリソースｍは、システムI/Oリソースｎに送信するための４２４ビットのメッセージを有することができる。この場合は、３２Ｋビット幅の内部バスが、わずか２AMPIC DRAM転送サイクルで転送を完了させるために使用されることになるが、あまりにも広帯域の内部バスは、この転送では無駄である。メッセージが、３２Ｋビット幅のバスの４２４ビットしか占めていない場合でも、他のすべてのシステムI/Oリソースは、システムI/Oリソースｍとｎがそれらの転送を完了するまでの間、データバスを使用することができないことになる。この例を説明するために、AMPIC DRAMの転送サイクルを今度も、５０ｎＳと仮定すると、この例で使用される全帯域幅は、たったの４２４ビット／５０ｎＳ、すなわち、約８．５ギガビット／秒である。AMPIC DRAMにおいて利用可能な帯域幅のわずか約１．３％が、この例で実際に使用されるということに留意されたい。
【００１３】
本発明は、非常に広帯域の内部データバスをかかる状況においてより効率的に利用し、小さな単位量及び大きな単位量のデータ転送に対して、AMPIC DRAMアーキテクチャを同じように好適なものにすることによって、該アーキテクチャの有用性をさらに高めるものである。
【００１４】
本発明がこれらの改良点を実現するアーキテクチャについて、これから説明する。特に、システムI/OリソースｍがAMPIC DRAMに書き込むメッセージを有しているときには、システムI/Oリソースは、メッセージを配置すべきDRAMアドレスについて、システム内のすべてのAMPIC DRAMに通知することができなければならない。本発明は、これを実現するために、図３に開示したアーキテクチャ及びメカニズムを提供する。図３に示したシステムでは、図２の４つのAMPIC DRAMがチップ（CHIP）０〜３として図示されており、これらは各々が、システムI/Oリソースに対して１ビット幅のシリアルインターフェースを備えている。前記係属出願に開示されているような図２の例においては、第１のデータ転送サイクルで、チップ０がデータビット０を取得し、チップ１がデータビット８を取得し、チップ２がデータビット１６を取得し、チップ３がデータビット２４を取得する。次のクロックサイクルで、すべてのデータビットがインクリメントされる。このプロセスは、メッセージ全体がAMPIC DRAMに送信されるまで継続する。
【００１５】
図３に示す本発明によれば、このデータ転送と同時に、システムI/Oリソースは、また、DRAM内のデータを配置すべきアドレスを転送することを要求される。システムI/Oリソース内のアドレスレジスタの幅は、AMPIC DRAM内のDRAMアレイのサイズ、及び、システム内のAMPIC DRAMデバイスの数によって決定される。
【００１６】
上述の例では、各々が６４ＭビットDRAMを含む、４つのAMPIC DRAMデバイスを具備するシステムにより、２５アドレスビットを必要とする２５６ＭビットAMPIC DRAMアレイが提供される。しかし、大きなメモリアレイが多数のアドレスビット数を要求するために、システムI/OリソースとAMPIC DRAM間のアドレスバスを、アドレス全体のサイズより小さくなるように規定し、複数の転送を使用してAMPIC DRAMに完全なアドレスを送信する必要がある場合がある。例えば、アドレスバスが４ビット幅として規定されている場合は、７サイクルが、完全な２５ビットアドレスをAMPIC DRAMに転送するために使用される。このアドレス転送は、図３に示すシステムI/Oリソースからのデータ転送と同時に起こる。第１の転送サイクルで、「アドレス」のビット０から３までが転送される。第２の転送サイクルで、アドレスのビット４から７までが転送され、全アドレスがすべてのAMPIC DRAMに転送されるまで、以下同様にして転送される。データ転送と異なり、システム内の各AMPIC DRAMは、異なるデータ部分を受信し、図３のシステム内の各AMPIC DRAMは、完全なDRAMアドレスの全く同じコピーを受信し、従って、各AMPIC DRAMは、システムI/Oリソースによって送信されたメッセージを、内部DRAMアレイの同じ位置に書き込むということに留意することが重要である。
【００１７】
メッセージをその宛先のシステムI/Oリソースに到達させるために、図３に示すような、同様なアドレス指定プロセスが、宛先側でも生じる必要がある。システムI/Oリソースｍが、AMPIC DRAMアレイにメッセージを書き込むと、メッセージが書かれたアドレスとメッセージの全体サイズを、宛先のシステムI/Oリソースに送らなければならない。メッセージのアドレスを受信すると、宛先のシステムI/Oリソースは、そのアドレスを各AMPIC DRAMデバイスに送り込む。各AMPIC DRAMデバイスは、その与えられたアドレスにより、それのDRAMアレイからメッセージデータのその部分を読み出して、そのメッセージを宛先のシステムI/Oリソースに送り始める。本発明の好適な実施態様では、メッセージがDRAMアレイに書き込まれるときに、メッセージのサイズもまた、DRAMアレイに記憶される。AMPIC DRAMデバイスが、メッセージを受信すると、それは、メッセージ内のビット数をカウントする。図３に示すように、データ有効（DATA VALID）信号が、すべてのAMPIC DRAMのデータ受信ポートに与えられる。送信元のシステムI/Oリソースは、メッセージデータが、AMPIC DRAMに送信されている間、アサートされているデータ有効信号を保持し、AMPIC DRAMは、このデータ有効信号のアサートを使用してメッセージの長さを決定する。データがDRAMアレイに書き込まれるとき、このビット計数値（ビットカウント）もメッセージ自身と共に記憶される。メッセージがDRAMアレイから読み出されるときは、対応するビット計数値もそのデータと共に読み出される。そして、AMPIC DRAMは、このビット計数値を使用して送信すべきメッセージの長さを決定する。AMPIC DRAMは、データ有効信号を、それが、メッセージのビット計数値によって表明されるのと同じ時間だけアサートすることによって、メッセージのサイズを宛先のシステムI/Oリソースに示す。
【００１８】
各AMPIC DRAM内の各メッセージDRAMアドレスの存在によって、あるシステムI/Oリソースが、他のいくつかのシステムI/Oリソースに送信する必要がある単一メッセージを有する場合に、効率的な解決法が提供されるが、これについては図４に示す。このタイプのメッセージは、マルチキャストメッセージとして定義される。マルチキャストメッセージの場合は、送信元のシステムI/Oリソースは、標準的な、すなわち、ユニキャストのメッセージを書き込むのと同様にして、AMPIC DRAMにメッセージを書き込む。DRAMアレイ内のこのマルチキャストメッセージのアドレスは、次に、このメッセージを受信することが必要とされているすべてのシステムI/Oリソースに送られる。宛先のシステムI/OリソースNo.１〜No.mの各々は、次に、マルチキャストメッセージのアドレスをAMPIC DRAMデバイスに送り込み始める。AMPIC DRAMデバイスが、図４に示す、異なるシステムI/Oリソースから受信したDRAMアドレスを比較することができるアドレス比較ロジックを具備する場合は、AMPIC DRAMのマルチキャスト制御部は、同じDRAMアドレスが、マルチキャストメッセージシステムI/Oリソースの各々から受信されたことを認識し、単一のDRAM読み出しサイクルを実行する必要があるだけである。この読み出しサイクルで読み出されたDRAMデータは、次に、図４に示すマルチキャスト制御ロジックによって、同時にすべての宛先システムI/OリソースNo.1〜No.mに送られ、従って、マルチキャストメッセージ用に複数のDRAM読み出しを行う必要がなくなる。
【００１９】
本発明の好適な実施態様では、メッセージを書き込むべきDRAMの位置を特定するのに必要な全アドレスビット数は、DRAMを多くの同じ大きさの部分（セクション）に論理的に分割することによって、さらに少なくなる。例えば、２５６ＭビットのAMPIC DRAMアレイが、４つのAMPIC DRAMデバイス全体に広がっている場合は、このアレイを、例えば、２０４８ビットのセクションに分割することができる。この場合は、DRAMアレイは、１２８Ｋのセクションから構成され、各AMPIC DRAMデバイスは、１２８Ｋのセクションの各々について５１２ビットを記憶する。この結果、AMPIC DRAMに対するアドレスを完全に指定するために、１７のアドレスビットが必要となるだけである。４ビット幅のアドレスバスの例に戻ると、システムI/Oリソースから、全AMPIC DRAMデバイスにアドレスを転送するためには、５サイクルだけが必要である。このようにメモリを分割する際には、無駄なメモリ空間を最小限にするために、セクションのサイズを小さく維持することが望ましい。上記２０４８ビットセクションの例では、例えば、システムI/Oリソースｍが、AMPIC DRAMに書き込むべき５１２ビットのメッセージを有している場合、このメッセージはDRAMセクションの一部分のみを満たすことになり、結果として、メモリ空間に無駄が生じる。
【００２０】
しかし、本発明は、小さなセクションサイズを維持する一方で、システムI/Oリソースｍが、AMPIC DRAMに書き込むべき１つのセクションより大きいメッセージを有する場合に対処するメカニズムも提供する。
【００２１】
本発明の好適な実施態様におけるこの問題の解決策を図５に示す。各DRAMセクションA〜Cは、リンクアドレス（Link Address）と呼ばれるものを含むために数ビットを確保している。システムI/Oリソースｍが、AMPIC DRAMに書き込むべき、現在規定されているセクションサイズより大きなメッセージを有している場合、システムI/Oリソースは、最初に、メッセージをいくつかの部分に分割することが必要である。この部分のサイズは、現在規定されているセクションサイズ以下である。メッセージの第１の部分は、第１のDRAMセクションに配置され、そのセクションのリンクアドレスは、次のDRAMセクションを指示するように設定され、そこに、メッセージの第２の部分が配置され、全メッセージが、AMPIC DRAMアレイに書き込まれるまで、以下同様に配置される。メッセージが３つのDRAMセクションを占める例の結果を図５に示す。説明のために、メッセージのサイズは５１２０ビットと仮定され、セクションサイズは、上記したように２０４８ビットと仮定する。この場合、メッセージの１〜２０４８ビットは、DRAMセクションAに、ビット２０４９〜４０９６は、DRAMセクションBに、そして、ビット４０９７〜５１２０は、DRAMセクションCに存在することになり、結果として、図５に示すように、DRAMセクションは部分的に満たされることになる。リンクアドレスは、メッセージデータと共にAMPIC DRAMアレイに記憶されるので、AMPIC DRAMは、メッセージを宛先のシステムI/Oリソースに送信するときに、完全なメッセージを再構築する。あるセクションがAMPIC DRAMアレイから読み出されるときに、AMPIC DRAM内のロジックが、そのセクションのリンクアドレス部分を検査して、このDRAMセクションがより大きなメッセージの一部分であるかどうかを判定する。リンクアドレスが、DRAMの別のセクションを指示している場合、AMPIC DRAMは、DRAMアレイからそのセクションを読み出して宛先ポートに送る。このプロセスは、他のセクションを指示していないDRAMセクションのリンクアドレスを、AMPIC DRAMが見つけるまで続行される。該DRAMセクションが見つかった時点で、メッセージ全体が再構築される。このメッセージの再構築は、宛先のシステムI/Oリソースの部分に関与することなく実行される。すなわち、この再構築は、AMPIC DRAM内のロジックによって全て処理される。
【００２２】
本発明の代替実施態様では、セクションのサイズは、AMPIC内で一定ではないが、図６に示すような異なる値の範囲にプログラムすることができる。例えば、主に、小さなメッセージがシステムI/Oリソース間を伝送されるシステムでは、セクションサイズを、例えば、２５６ビットに設定することができる。主に、大きなメッセージがシステムI/Oリソース間を伝送されるシステムでは、セクションサイズを、例えば、２０４８ビットに設定することができる。かかるサイズの範囲は、DRAMアレイを最大限に使用し、かつ、セクションのサイズより小さなメッセージによって生じる無駄なメモリ空間を最小限にするように、AMPIC DRAMデバイスによって与えられる。図６に、３つの異なるセクションサイズ、Ａ、Ｂ、Ｃの例、及び結果として生成されるDRAMアレイ構造を示す。他の代替実施態様では、図７に示すように、DRAMアレイをセクションに全く分割しないことによって、無駄なDRAM空間を完全に無くすことができる。この実施態様では、メッセージは、常に、それらのサイズに関係なく、DRAMアレイ内に背中合わせに配置される。DRAMアドレスを追跡（把握）するために必要なアドレスビットの数は増加するが、この実施態様は、メモリを最も有効に使用するという利点を有する。図７に、異なるサイズのメッセージをDRAMアレイ内に分布させた様子を示す。
【００２３】
本発明の好適な形態では、送信元のシステムI/Oリソースと宛先のシステムI/Oリソース間のアドレスのすべての転送は、AMPIC DRAM外部のロジックで起こる。代替実施態様では、この機能は、図８に示すように、AMPIC DRAMそれ自体によって処理される。この場合、送信元のシステムI/Oリソースから宛先のシステムI/Oリソースへの全てのアドレス指定及びアドレスの転送はAMPIC DRAMそれ自体の内部で起こる。この実施態様では、システムI/Oリソースは、メッセージが、AMPIC DRAMアレイ内に配置されるDRAMアドレスについて何ら知っている必要はない。例えば、送信元のシステムI/Oリソースが、宛先のシステムI/Oリソースに送るべきメッセージを有している場合、送信元システムI/Oリソースは、そのメッセージデータをAMPIC DRAM内に送るが、この場合も、あるアドレスに関して送る必要はない。図８には、AMPIC DRAMデバイスが１つだけしか示されていないが、これらのことは、前述したように、複数のAMPIC DRAMから構成されるシステムにも同様に適用できることに留意すべきである。メッセージデータを受信すると、AMPIC DRAMは、空きアドレスリストからそれのDRAMアレイ内の空きアドレスを選択して、その位置にメッセージを書き込む。次に、そのアドレスは、宛先のシステムI/Oリソースが接続されているAMPIC DRAMのポートに送られる。次に、AMPIC DRAMは、宛先のシステムI/Oリソースに、それ宛てのメッセージがAMPIC DRAM内にあることを、図８に示すMESSAGE READY信号を使用して通知する。ある時間経過後、宛先のシステムI/Oリソースは、図８のI/O RESOURCE READY信号によって、メッセージを受け入れる準備ができていることを示し、この時点で、各AMPIC DRAMデバイスは、DRAMアレイからメッセージデータのその部分を取り出して、そのデータを宛先のシステムI/Oリソースに送る。このようにして、システムI/Oリソースは、AMPIC DRAMデバイスの内部構造から完全に独立したものとされる。すなわち、AMPIC DRAMアレイは、記憶及び送信用のｍ×ｎの交差接続アレイとして機能する。この実施態様では、AMPIC DRAMは、DRAMアレイ内のメッセージ位置を把握することに加えて、DRAMアレイに残存している空き空間の大きさも把握しなければならない。DRAMアレイが、満杯になり始めたときには、AMPIC DRAMは、システムI/Oリソースに、DRAMアレイが空になり始めるまで、ある時間の間いかなるメッセージも送信しないように合図することができなければならない。図８に示す空きアドレスリストは、この目的のために使用される。
【００２４】
図９に示すような、データをAMPIC DRAMデバイス内で転送する好適なメカニズムについてこれから説明する。AMPIC DRAMデバイスのDRAMアレイが、いくつかの独立した被制御バンクに物理的に区分けされて、すなわち分割されて示されている。実装されるDRAMバンク（DRAMバンク１〜ｍ）の実際の数は、AMPIC DRAMを実施するために使用される技術にのみ依存する。説明を簡明にするために、１つだけのAMPIC DRAMデバイスからなるシステムをここでは説明するが、この説明は、複数のAMPIC DRAMデバイスからなるシステムにも同様に適用することができる。後者の場合、各AMPIC DRAMデバイス内のDRAMアレイは、全く同様に分割される。
【００２５】
DRAMバンクの数は、AMPIC DRAMに接続することができるシステムI/Oリソースの数以上であることが好ましい。各DRAMバンク間に等しく分割された、非常に広帯域の内部データバスを図９に示す。例えば、６４のDRAMバンクと３２Ｋビット幅のデータバスを備えるAMPIC DRAMの実装では、各DRAMバンクに対するデータバスは、５１２ビット幅である。６４の５１２ビット幅のバスが、３２Ｋビット幅のデータバスを構成するために結合される。前記係属出願及び図１に記載されているように、各システムI/Oリソースは、AMPIC DRAM内のデータポートに接続されており、さらに、データポートは、内部の非常に幅の広い（超広帯域の）データバスに接続している。図９に示す実施態様では、これらのデータポートの各々は、たくさんのスロット（０〜ｍ）に分割される。各データポートのスロットの数は、DRAMバンクの数に等しい。以前に説明した例では、各データポートは、３２Ｋビット幅であり、それぞれ５１２ビットの６４のセクションに分割される。各スロットは、DRAMアレイの１つのバンクに対応する。データが、システムI/Oリソースから到着すると、そのデータは、そのシステムI/Oリソースのデータポートの適切なスロットに流れ込む。この適切なスロットは、データが書かれるDRAMアドレスによって決定されるが、これによって、どのDRAMバンクにそのデータを書き込むかが決定される。本発明の好適な実施態様において、このアドレスは、メッセージデータと同時にシステムI/Oリソースによって提供されるということを想起されたい。例えば、入力メッセージが３２Ｋビット幅の場合、全メッセージをデータポートの６４のすべてのスロットに送り込むことができ、次に、単一のAMPIC DRAMの書き込みサイクルで、DRAMアレイに書き込むことができる。５０ｎＳという例示の値を、AMPIC DRAMの転送サイクル時間として再度仮定すると、結果として生じる内部AMPIC DRAMの帯域幅は、３２Ｋビット／５０ｎＳ、すなわち、６５５ギガビット／秒であることがわかる。
【００２６】
代替的に、前述のATMネットワーキングの例に戻ると、入力メッセージが非常に短い場合、例えば、４２４ビットの場合、システムI/Oリソースのデータポートの１つのスロットのみを使用するだけでよい。この場合において、他のいくつかのシステムI/Oリソースが、それらのデータポートのそれぞれのスロットを同様の大きさ（サイズ）のメッセージで一杯にしている場合は、それらのすべてのメッセージを、同時にDRAMに転送することができ、従って、非常に広いデータバスをより効率的に使用することができるようになる。代替的には、単一のシステムI/Oリソースは、複数の短いメッセージを蓄積して、メッセージデータをDRAMアレイに書き込む前に、自身のデータポートのいくつかのスロットを一杯にすることができる。各々のメッセージが、そのメッセージアドレスによって示されている異なるDRAMバンクに向けられたものである場合は、単一のシステムI/Oリソースは、それ自身のデータポートにいくつかの短いメッセージを蓄積するだけであるということに留意されたい。いずれにしても、６４のDRAMバンクという現在の例では、６４までのメッセージを、同じシステムI/Oリソースからであろうと、あるいは、多くの異なるシステムI/Oリソースからであろうと、AMPIC DRAM内に同時に転送することができる。従って、AMPIC DRAMの転送サイクルの時間が５０ｎＳという例示の値を使用すると、ATMネットワーキングで使用される帯域幅は、（６４×４２４）ビット／５０ｎＳ、すなわち、５４２ギガビット／秒として、従って、利用可能な全帯域幅のほとんど８３％であるとして計算される。この全帯域幅の利用度は、AMPIC DRAMデバイスに設けられるDRAMバンクの数が増えるにつれて増加する。従って、本明細書で開示されたDRAM及びバッファリング構造は、異なるシステムI/Oリソースからのいくつかの小規模のデータ転送が同時に起こることを可能にすることによって、少数の非常に広帯域幅のデータ転送と、多数の小さなデータ転送をサポートすることにおけるバランスを提供するものである。
【００２７】
しかし、前述した本発明の実施態様には、システムI/Oリソースが、AMPIC DRAMに、そのいずれもが同じDRAMバンクを宛先とする２つの連続するメッセージを送信するときに制限がある。この特殊な場合では、両方のメッセージが、データポートの同じスロットを使用しなければならないため、２番目のメッセージは、データポートに書かれる前に、１番目のメッセージがDRAMアレイに書き込まれるまで待たなければならない。この問題を緩和するための本発明の代替実施態様を図１０に示す。この実施態様では、ｍ×ｎのクロスバースイッチが、各システムI/Oリソースのデータポート（１〜ｎ）とDRAMアレイ（バンク１〜ｍ）の間に配置される。この場合、DRAMアレイはｍ個のバンクから構成され、バッファはｓ個のスロットから構成される。クロスバースイッチにより、バッファの任意のセクションを、任意の１つのDRAMバンクに送ることができ、従って、使用されるDRAMアドレスからバッファを独立したものとすることができる。どのバッファセクションにデータを書き込まなければならないかを制御するのではなくて、DRAMアドレスがスイッチの機能を制御する。この例では、システムI/Oリソース１が、DRAMバンク１に宛てて４２４ビットをデータポートのスロット０に書き込み、システムI/Oリソースｎが、DRAMバンクｍに宛てて４２４ビットをデータポートのスロット１に書き込んだ場合は、両方のメッセージを同時にDRAMに書き込むことができる。AMPIC DRAM内のロジックは、各ポートのスイッチを適切に制御して、それぞれの転送毎に、正しいデータポートのスロットを正しいDRAMバンクに切り換える必要がある。このスイッチは、また、双方向に動作する必要があるということに留意することは重要である。すなわち、AMPIC DRAMからシステムI/Oリソースにデータを送信することになるDRAMの読み出しの場合は、スイッチは、適切なDRAMバンクから適正なデータポートのスロットにデータを移動させることができなければならない。本発明の好適な実施態様によって提供される全帯域幅の利用度を利用を変更せずに、バッファセクションを使用する際にアドレスの独立性を提供することによって、この代替実施態様におけるクロスバースイッチは、全データポートをはるかにフレキシビルに使用することを可能にする。例えば、両方とも同じDRAMバンクに宛てた２つの連続するメッセージを、AMPIC DRAMに送る前述したシステムI/Oリソースの例では、この場合、２番目のメッセージは、その最終的な宛先DRAMバンクがどれであるかに関係なく、次の利用可能なデータポートのスロットに書き込まれる。ｍ×ｎのクロスバースイッチは、メッセージをDRAMに書き込む時間になったとき、メッセージを適切なDRAMバンクに送信するために使用される。
【００２８】
他の修正が当業者には工夫されるであろうが、そのような修正等は、特許請求の範囲で規定されている本発明の思想及び範囲内に存するものとみなされる。
【図面の簡単な説明】
【図１】  前記係属出願のAMPIC DRAMの内部アーキテクチャの例示的なブロック図であり、本発明によってその動作は拡張される。
【図２】  図１のAMPIC DRAMに基づく例示的なシステムアーキテクチャのブロック図である。
【図３】  新規な装置及び方法を示す図であって、本発明に従って、アドレス及びデータが、システムI/OリソースによりAMPIC DRAMデバイスに配信される。
【図３ａ】  新規な装置及び方法を示す図であって、本発明に従って、データが、AMPIC DRAMデバイスからシステムI/Oリソースに配信される。
【図４】  AMPIC DRAMが、メッセージの宛先ポートの各々に、マルチキャストメッセージを効率的に配信することができる、新規な装置及び方法を示す図である。
【図５】  いつかのDRAMセクションにわたって存在する１単位量のデータを１つに「結合（linking）」する様子を示す図である。
【図６】  DRAMアレイを複数の等しいサイズのセクションに分割した図であり、３つのセクションのサイズについてそれぞれ示している。
【図７】  DRAMアレイを、サイズがそれぞれ異なる多くのセクションに分割した図である。
【図８】  AMPIC DRAMが、その内部において、送信元のシステムI/Oリソースから宛先のシステムI/Oリソースへのメッセージの送信のすべて実行する、装置及び方法を示す図である。
【図９】  AMPIC DRAMの内部システムバスの好適なアーキテクチャのブロック図であり、複数の小規模同時転送と、１つの超広帯域転送の両方を可能にする本発明の新規な分割技法を示す。
【図１０】  AMPIC DRAMの内部システムバスの代替実施態様を示す図であり、図９のシステムで達成される結果と同様の結果を実現するために、各AMPIC DRAMのポートバッファとDRAMアレイの間にクロスバースイッチが配置されている。
【図１】
0004046943.tif 000002
【図２】
0004046943.tif 000003
【図３】
0004046943.tif 000004
【図３ａ】
0004046943.tif 000005
【図４】
0004046943.tif 000006
【図５】
0004046943.tif 000007
【図６】
0004046943.tif 000008
【図７】
0004046943.tif 000009
【図８】
0004046943.tif 000010
【図９】
0004046943.tif 000011
【図１０】
0004046943.tif 000012