(57)【要約】メモリー(MEM)をネットワーク(N)に結合するためのメモリーコントローラ(SMC)を提供する。このメモリーコントローラ(SMC)は、第１インタフェース(PI)、ストリーミング・メモリーユニット(SMU)、及び第２インタフェースを具えている。第１インタフェース(PI)は、メモリーコントローラ(SMC)をネットワーク(N)に接続してデータストリーム(ST1-ST4)を受信するために使用する。ストリーミング・メモリーユニット(SMU)は、第１インタフェース(PI)に結合されて、ネットワーク(N)とメモリー(MEM)との間でデータストリーム(ST1-ST4)を制御する。ストリーミング・メモリーユニット(SMU)は、データストリーム(ST1-ST4)の少なくとも一部分を一時記憶するためのバッファ(B)、及びデータストリーム(ST1-ST4)のバッファ(B)への一時記憶を管理し、データストリーム(ST1-ST4)の少なくとも１つにバッファ(PFB,WBB)を動的に割り当てるバッファ管理ユニット(BMU)を具えている。第２インタフェースはストリーミング・メモリーユニット(SMU)に結合されてメモリーコントローラ(SMC)をメモリー(MEM)に接続して、メモリー(MEM)との間でデータをバースト形式で交換する。さらに、バッファ容量決定ユニット(BDU)を設けて、データストリーム(ST1-ST4)の少なくとも１つ用のバッファ(B)の容量を定める。
2008544359.tif 000002
【特許請求の範囲】
【請求項１】
メモリーをネットワークに結合するためのメモリーコントローラにおいて、
前記メモリーコントローラを前記ネットワークに接続するための第１インタフェースであって、複数のデータストリームを受信し送信するように構成された第１インタフェースと；
前記第１インタフェースに結合され、前記ネットワークと前記メモリーとの間で前記複数のデータストリームを制御するストリーミング・メモリーユニットであって、前記複数のデータストリームの少なくとも一部分を一時記憶するためのバッファと、前記データストリームの前記バッファへの一時記憶を管理し、前記データストリームの少なくとも１つに前記バッファを動的に割り当てるバッファ管理ユニットと、前記バッファの容量を定めるバッファ容量決定ユニットとを具えたストリーミング・メモリーユニットと；
前記ストリーミング・メモリーユニットに結合され、前記メモリーコントローラを前記メモリーに接続して、前記メモリーとの間でデータをバースト形式で交換するための第２インタフェースと
を具えていることを特徴とするメモリーコントローラ。
【請求項２】
前記第１インタフェースがＰＣＩエクスプレス（登録商標）インタフェースであることを特徴とする請求項１に記載のメモリーコントローラ。
【請求項３】
前記メモリーへのアクセスを前記データストリーム間で調停するアービタを設けて、前記データストリームの各々が、前記メモリーの少なくとも１メモリーページにアクセスするのに十分なタイムスロット中に前記メモリーにアクセスすることを特徴とする請求項１に記載のメモリーコントローラ。
【請求項４】
前記バッファが、少なくとも１つのプリフェッチバッファ及び少なくとも１つのライトバックバッファを具え、
前記バッファ容量決定ユニットが、前記プリフェッチバッファ及び前記ライトバックバッファの容量を、前記メモリーの１メモリーページに相当するサイズ、及び１つのデータストリームについて最悪の場合の待ち時間中に伝送されるビット数に定めることを特徴とする請求項３に記載のメモリーコントローラ。
【請求項５】
メモリーをネットワークに結合する方法において、
メモリーコントローラを前記ネットワークに結合するための第１インタフェース経由でデータストリームを受信及び送信するステップと；
ストリーミング・メモリーユニットによって、前記ネットワークと前記メモリーとの間で前記データストリームを制御するステップと；
前記データストリームの少なくとも一部分をバッファに一時記憶するステップと；
前記データストリームの少なくとも１つについて、当該データストリームの前記バッファへの一時記憶を管理し、前記データストリームの少なくとも１つに前記バッファを動的に割り当てるステップと；
前記ストリーミング・メモリーコントローラを、第２インタフェースを介して前記メモリーに接続し、前記メモリーとの間でデータをバースト形式で交換するステップと；
前記データストリームの少なくとも１つに対して前記バッファの容量を定めるステップと
を具えていることを特徴とするメモリーをネットワークに結合する方法。
【請求項６】
複数の処理装置と；
前記処理装置を結合するネットワークと；
請求項１〜４のいずれかに記載のメモリーコントローラと
を具えていることを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークとメモリーとを結合するメモリーコントローラ及び方法に関するものである。
【背景技術】
【０００２】
【非特許文献１】E.A. de Kock et al., “YAPI: Application modeling for signal processing systems”, Proc. of the 37th. Design Automation Conference, Los Angeles, CA, June 2000, IEEE 2000
【０００３】
先進のモバイル（移動）及び携帯装置の複雑性は増加している。こうした装置の常により厳しくなる用途、複雑性、フレキシビリティ（柔軟性）、及びプログラマビリティ（プログラム可能性）の要求は、装置内部のデータ交換を増強させる。こうした用途を実現する装置は、本明細書ではサブシステムと称するいくつかの機能ブロックまたは処理ブロックで構成されることが多い。これらのサブシステムは一般に別個のＩＣとして実現され、各ＩＣは、ローカルプロセッサ、ローカルバス、及びローカルメモリー、等から成る異なる内部アーキテクチャを有する。あるいはまた、種々のサブシステムを１つのＩＣ上に集積することができる。システムレベルでは、これらのサブシステムは、リアルタイムのサポート（支援）を伴うことの多い特定のサービスを提供するトップレベルの相互接続経由で互いに通信する。移動電話アーキテクチャにおけるサブシステムの例として、とりわけ、ベースバンド・プロセッサ、ディスプレイ、メディアプロセッサ、または記憶素子がある。マルチメディア・アプリケーション（応用）のサポートとして、これらのサブシステムは大部分のデータをストリーム（データ流）様式で交換する。データ・ストリーミング（ストリーム伝送）の例として、メディアプロセッサによってＭＰ３符号化されたオーディオファイルをローカル記憶装置から読み出し、復号化したストリームをスピーカーに送ることを参照する。図１に、こうした通信の基本表現を示し、この基本表現は、ＦＩＦＯ（先入れ先出し）バッファＢを介して接続されたプロセッサＰ1〜Ｐ4のグラフとして記述することができる。こうした表現はカーン（Kahn）プロセス・ネットワークと称されることが多い。カーンプロセス・ネットワークはシステム・アーキテクチャ上にマッピング（対応付け）することができ、これについてはE.A. de Kock et al., “YAPI: Application modeling for signal processing systems”, Proc. of the 37th. Design Automation Conference, Los Angeles, CA, June 2000, IEEE 2000の402〜405ページに記載されている。こうしたアーキテクチャでは、プロセスＰがサブシステムＳ上にマッピングされ、ＦＩＦＯバッファはメモリーＳＭＥＭ上にマッピングされ、そして通信はシステムレベルの相互接続ＩＭ上にマッピングされる。
【０００４】
バッファリング（バッファ一時記憶）は、関係するプロセス間のデータ・ストリーミングの適切なサポートにおいて必要不可欠である。一般に、ストリーミング用途の（有界）カーンプロセス・ネットワークモデルに従うストリーミング用にはＦＩＦＯバッファが用いられる。同時に実行することのできるマルチメディア・アプリケーションの数の増加と共に、プロセス、リアルタイム・ストリーム、並びに関連するＦＩＦＯの数も大幅に増加する。
【０００５】
メモリー使用及びＦＩＦＯ割当てに関して、ストリーミングの２つの極端な実現が存在する。１番目は物理的に分散したメモリーを使用し、ＦＩＦＯバッファはサブシステムのローカルメモリー内に位置する。２番目は物理的にも論理的にも統合されたメモリーを使用し、すべてのＦＩＦＯバッファが、チップ外にあることの多い共有メモリー内に割り当てられている。これらの組合せも可能である。
【０００６】
ＦＩＦＯバッファは、外部ＤＲＡＭ技術を用いて共有メモリー内に実現することができる。ＳＤＲＡＭ（同期ＤＲＡＭ）及びＤＤＲ−ＳＤＲＡＭ（２倍データレートＳＤＲＡＭ）は大容量の外部メモリーを低コストで送り届ける技術であり、非常に魅力的なコスト対シリコン面積比を有する。
【０００７】
図２に、共有メモリー・ストリーミングのフレームワーク（枠組）を有するシステム・オン・チップの基本アーキテクチャを示す。処理装置Ｃ、ＳはバッファＢ経由で互いに通信する。処理装置Ｃ、Ｓ、並びにバッファの各々が、これらを相互接続手段ＩＭに結合するためのインタフェースユニットＩＵに関連している。共有メモリーのデータ交換の場合には、メモリーを他の目的に用いることもできる。このメモリーは例えば、メイン（主）プロセッサ上で実行されるプログラムの処理のためのコード実行または動的なメモリー割当て用に用いることもできる。
【０００８】
こうした通信アーキテクチャまたはネットワークは、上記相互接続手段、インタフェースユニット、並びに処理装置Ｃ、Ｓ及びバッファＢも含めて、特定の搬送設備、及び特定のデータ搬送保証を与えるそれぞれのインフラストラクチャ（基盤）を提供することができ、これらのインフラストラクチャは例えば、エラー（誤り）なしのデータ搬送のための保証されたスループット（処理能力）または保証された受け渡し、あるいはソース（送信源）要素とデスティネーション（宛先）要素とを同期させて、バッファのアンダーフローまたはオーバーフローによりデータが失われないようにするための同期サービスである。このことは、システムがリアルタイムのストリーミング処理を実行すべきであり、すべての構成要素にとってリアルタイムのサポートが要求される場合に重要になる。
【０００９】
【非特許文献２】J.L. Hennessy and D.A. Patterson, “Computer Architecture-A Quantitative Approach”
【００１０】
多くのシステム・オン・チップ（ＳｏＣ）内、及び図２に示すマイクロプロセッサシステム内では、データをバッファリングするためにバックグラウンドメモリー（ＤＲＡＭ）を使用している。データをストリーミング様式で通信し、ストリームとしてメモリーにバッファリングする際には、プリフェッチ・バッファリングを用いることができる。このことは、ＳＤＲＡＭからのデータを事前に読み出して特別な（プリフェッチ）バッファ内に保持することを意味ずる。読出し要求が到着すると、この読出し要求に対し、通常はオンチップ（チップ上の）ＳＲＡＭ内に実現されるローカル・プリフェッチバッファからレイテンシなしに読み出すことができ、さもなければバックグラウンドメモリー（ＤＲＡＭ）がこの要求を受け入れる。このことは、プロセッサ用のランダムデータの既知のキャッシング技術に類似している。ストリーミングのためには、フェッチバッファ内では、キャッシュにおいて用いられるランダムアドレスではなく、連続的な（もっとうまく言えば予測可能な）データのアドレス指定が用いられる。より詳しいことは、J.L. Hennessy and D.A. Patterson, “Computer Architecture - A Quantitative Approach”を参照されたい。
【００１１】
他方では、ＤＲＡＭ技術によれば、ＤＲＡＭにはバーストでアクセス（読出し及び書込み）する方が良い。従って、ライトバック（書戻し）バッファが実現されることが多く、ライトバックバッファは多くの単一データアクセスを集めて特定サイズのアクセスのバーストにする。一旦、最初のＤＲＡＭアクセスのための初期処理が行われると、メモリーの次のサイクル毎にアクセスされる、前のアドレスと特定の関係にある（例えばバーストのやり方次第で次、前の）アドレスを有する次のデータワード（データ語）毎に、指定されたアクセス数（例えば２／４／８フルページ（１ページ全体））については（１サイクル以内の）さらなる遅延なしに記憶することができる。従って、メモリーへのストリーミングアクセスのためには、すべてのアクセスについてアドレスが同様に増加または減少する（例えば連続アドレス指定）際には、バーストアクセスはより低い電力消費で最良の性能を提供する。ＤＲＡＭメモリーの原理についてのより多くの情報は、マイクロン社の128MビットのＤＤＲＲＡＭ仕様を、
http://downloa.micron.com/pdf/datasheets/dram/ddr/128MbDDR4x8x16.pdf
で参照されたい。この仕様は参考文献として本明細書に含める。
【００１２】
ストリーミングデータを（外部）メモリー経由で交換するために、メモリーに書き込むべきデータはまずライトバックバッファに記憶し、外部メモリーから読み出したデータはまずプリフェッチバッファに記憶する。こうしたバッファに対する要求は、こうしたバッファは、遅延またはレイテンシを可能な限り低減するのに十分大きいが、必要以上に大きくはなく、空間を無駄にせず他の目的に使用することができるべきである、ということである。
【００１３】
本発明の目的は、ネットワークとメモリーとを結合するメモリーコントローラ、並びにネットワークとメモリーとを結合する方法を提供することにあり、これらのメモリーコントローラ及び方法は複数のデータストリームのメモリーへの効率的なバッファリングを提供する。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
この目的は、請求項１に記載のメモリーコントローラによって達成され、そして請求項５に記載のネットワークとメモリーとを結合する方法によって達成される。
【課題を解決するための手段】
【００１５】
メモリーをネットワークに結合するメモリーコントローラが提供される。このメモリーコントローラは、第１インタフェース、ストリーミング・メモリーユニット、及び第２インタフェースを具えている。第１インタフェースは、メモリーコントローラをネットワークに接続してデータストリームを受信及び送信するために用いる。上記ストリーミング・メモリーユニットは上記第１インタフェースに結合されて、ネットワークとメモリーとの間でデータストリームを制御する。上記ストリーミング・メモリーユニットは、データストリームの少なくとも一部分を一時記憶するためのバッファ、及びデータストリームのバッファへの一時記憶を管理し、データストリームの少なくとも１つにバッファを動的に割り当てるバッファ管理ユニットを具えている。上記第２インタフェースは上記ストリーミング・メモリーユニットに結合され、メモリーコントローラをメモリーに接続して、メモリーとの間でデータをバースト形式で交換する。さらに、バッファ容量決定ユニットを設けて、データストリームの少なくとも１つ用のバッファの容量を定める。
【００１６】
従って、バッファ用の正確かつ最適なサイズを実行時間中に計算し割り当てることができ、これによりシステム全体の能力が増加する。
【００１７】
本発明の１つの態様によれば、上記第１インタフェースをＰＣＩエクスプレス（PCI Express：登録商標）インタフェースとして実現して、ＰＣＩエクスプレス・ネットワークの特徴及びネットワークサービスをメモリーコントローラによって実現することができる。
【００１８】
本発明の別な態様によれば、アービタを設けて、各データストリームがタイムスロット中にメモリーにアクセスすることを可能にし、このタイムスロットはメモリーの少なくとも１つのメモリーページにアクセスするのに十分なものである。ＤＲＡＭのようなメモリーは、電力消費に関してはバーストで最良の動作をし、従ってこうしたメモリーコントローラは低電力消費でインテリジェントなアービトレーション（調停）を可能にする。
【００１９】
本発明は、メモリーをネットワークに結合する方法にも関するものである。メモリーコントローラをネットワークに接続するための第１インタフェース経由でデータストリームを受信及び送信する。データストリームは、ストリーミング・メモリーユニットによってネットワークとメモリーとの間で制御される。データストリームの少なくとも一部分はバッファに一時記憶される。このデータストリームのバッファへの一時記憶は管理され、バッファはデータストリームの少なくとも１つに動的に割り当てられる。上記ストリーミング・メモリーコントローラは第２インタフェースを介してメモリーに接続され、データがメモリーとの間でバースト形式で交換される。データストリームの少なくとも１つ用のバッファは容量を定められる。
【００２０】
本発明は、メモリーコントローラのバッファ、即ちプリフェッチバッファ及びライトバックバッファを実行時間中に計算する思想に関するものであり、ストリームの帯域幅、通信ネットワークの挙動、及びＤＲＡＭアービトレーションの詳細を考慮に入れる。バッファ容量決定ユニットを設けて、メモリーコントローラ内のバッファの容量を定める。特に、プリフェッチバッファ及びライトバックバッファは、バッファ容量決定ユニットに従って容量を定める。メモリーへの遅延０のアクセスを可能にするプリフェッチバッファ及びライトバックバッファの最適なバッファサイズは、メモリーの１つのメモリーページ、及び最悪の場合の待ち時間中に伝送されるビット数に相当する。こうしたバッファサイズにより、メモリーコントローラによって導入される遅延は大幅に低減されて最小になる。より小さいバッファサイズは遅延の増加を生じさせ、より大きいバッファサイズは他の目的に利用可能なメモリー空間を減少させる。
【００２１】
本発明の他の態様は従属請求項に記載されている。
【発明を実施するための最良の形態】
【００２２】
本発明のこれら及び他の態様は、以下に図面を参照しながら説明する実施例を参照すれば明らかになる。
【実施例１】
【００２３】
図３に、本発明の第１実施例によるストリーミング・メモリーコントローラＳＭＣのブロック図を示す。このストリーミング・メモリーコントローラＳＭＣは、ＰＣＩエクスプレス・インタフェースＰＩ、ストリーミング・メモリーユニットＳＭＵ、及び（外部）ＳＤＲＡＭメモリーＭＥＭへのインタフェースとして働く別なインタフェースＭＩを具えている。ストリーミング・メモリーユニットＳＭＵは、バッファマネージャ（管理）ユニットＢＭＵ、バッファＢ、並びにアービタＡＲＢを具え、バッファＢはＳＲＡＭメモリーとして実現することができる。ＳＲＡＭ内のバッファリングを実現するストリーミング・メモリーユニットＳＭＵはバッファマネージャＢＭＵと共に、ＰＣＩエクスプレス・インタフェースを介したＳＤＲＡＭへのアクセスをバッファリングするために用いられる。バッファマネージャユニットＢＭＵは、ＰＣＩエクスプレス・インタフェースからＳＤＲＡＭへの読出し及び書込みアクセスに反応して、バッファを管理し（即ちポインタのレジスタを更新し）、バッファ（ＳＲＡＭ）からＳＤＲＡＭへ、及びＳＤＲＡＭからバッファへデータを中継すべく動作する。特に、バッファマネージャユニットＢＭＵはＦＩＦＯマネージャで構成することができる。
【００２４】
ストリーミング・メモリーユニットはさらにバッファ容量決定ユニットＢＤＵを具え、バッファ容量決定ユニットＢＤＵはバッファＢの容量を定める働きをする。バッファ容量決定ユニットＢＤＵは、バッファ、即ちプリフェッチバッファ及びライトバックバッファのサイズを計算する働きをして、ＳＤＲＡＭメモリーへのレイテンシ０のアクセスを保証する。このことはストリームの帯域幅及びアービトレーションのスロットサイズに基づいて実行される。こうしたバッファ容量決定ユニットＢＤＵにより、プリフェッチバッファ及びライトバックバッファ、並びに他のバッファの正確かつ最適なサイズを実行時間中に計算して割り当てることができる。さらに、ＳＤＲＡＭへの小さい遅延のアクセスが実現される。必要ならば、利用可能なメモリー空間、割り当てられるメモリー、及び実際の遅延の相互間のトレードオフ（妥協点の探り）を実行することができる。プリフェッチバッファ及びライトバックバッファはＳＲＡＭメモリー内に実現することができる。
【００２５】
ストリーミング・メモリーコントローラＳＭＣは、ネットワークによって生成される（ＰＣＩエクスプレス・ネットワークに基づく）トラフィックを、ＳＲＡＭとして実現することのできる外部メモリーＭＥＭの特定の挙動に適応させる。換言すれば、ストリーミング・メモリーコントローラＳＭＣは、ストリーム毎の帯域幅保証を提供する働きをして、外部メモリーＭＥＭとの間のエラーなしのデータ搬送のための限定された伝送時間を提供する。ストリーミング・メモリーコントローラＳＭＣは、外部メモリーへのアクセスを制御すべく設計され、ストリーミング・メモリーコントローラＳＭＣにおける帯域幅アービトレーションはネットワーク・アービトレーションと同じ概念、即ちタイムスロット及びタイムスロット割当てに基づくが、タイムスロットのサイズは、ＳＤＲＡＭの挙動に適合するように適応させなければならない。
【００２６】
換言すれば、ストリーミング・メモリーユニットＳＭＵは、ＰＣＩエクスプレス・ネットワークの外部メモリーＭＥＭに対するサービスを実現する。従って、ストリーミング・メモリーユニットＳＭＵは、ＰＣＩエクスプレス・ネットワークからのデータストリームを、ＳＤＲＡＭメモリーをアクセスするためのバーストに変換して、ＳＤＲＡＭの利用可能な総帯域幅を複数のバーストアクセスに分割する。バーストアクセスの数をネットワークからのストリームに割り当てて、データストリームの帯域幅要求を満足することができる。ストリーミング・メモリーユニットＳＭＵは、ＰＣＩエクスプレス・ネットワークのフロー制御メカニズムに準拠するための同期メカニズムを実現する働きもする。この同期メカニズムは各要求のブロック（阻止）も含むことができる。ストリーミング・メモリーコントローラＳＭＣは、いくつかの独立したストリームを取り扱うように設計され、ストリーミング・メモリーユニットＳＭＵは、要求されるバッファを生成し、維持し、そして管理するように設計されている。
【００２７】
図３によるストリーミング・メモリーコントローラは２つのインタフェースを有し：第１のものはＰＣＩエクスプレス構成に向かうインタフェースであり、第２のものはメモリー（即ちＤＲＡＭ）に向かうインタフェースである。ストリーミング・メモリーコントローラＳＭＣのＰＣＩエクスプレス・インタフェースは、ＳＤＲＡＭメモリーから取り出したデータに対する整形を実行してＰＣＩエクスプレスのトラフィックルールに準拠させなければならない。ストリーミング・メモリーコントローラＳＭＣの他方のインタフェース上では、ＤＲＡＭメモリーへのアクセスをバースト形式で実行することができる、というのは、ＤＲＡＭメモリーに記憶されているデータをアクセスするこのモードは、電力消費に関して最大の利点を有するからである。ストリーミング・メモリーコントローラＳＭＣ自体は、ＤＲＡＭへのアクセスについて、異なるデータストリーム間のインテリジェントなアービトレーションを提供して、アクセスのスループット及びレイテンシを保証しなければならない。これに加えて、ＳＭＣはスマートなＦＩＦＯバッファ管理のための機能も提供する。
【００２８】
【非特許文献３】PCI Express Base Specification, Revision 1.0, PCI-SIG
【００２９】
ＰＣＩエクスプレス・ネットワークの基本概念は、PCI Express Base Specification, Revision 1.0, PCI-SIG、2002年7月（www.pcisig.org参照）に記載され、この文献を参考文献として本明細書に含める。ストリーミング・メモリーコントローラの設計において考慮に入れるＰＣＩエクスプレスの特徴は、等時性（等間隔）のデータ搬送のサポート、フロー制御、及び特定のアドレス指定方式である。等時性のサポートは主として、仮想チャンネルＶＣによる等時性トラフィックと非等時性トラフィックとの分離に基づく。従って、帯域幅及びバッファのようなネットワーク・リソースを、スイッチ構成において特定ストリーム用に予約し、これにより、異なる仮想チャンネルＶＣ内のストリーム間には干渉がない。これに加えて、スイッチ構成では、等時性トラフィックがスケジューリング、即ち許可制御及びサービス規律によって調整される。
【００３０】
第１実施例では、（ＤＤＲ）ＳＤＲＡＭメモリーを使用する。一例として、マイクロン社の128MビットのＤＤＲＲＡＭ仕様を
http://downloa.micron.com/pdf/datasheets/dram/ddr/128MbDDR4x8x16.pdf
で参照することができ、この仕様を参考文献として本明細書に含める。こうした技術は、所望の電力消費及びタイミング挙動を提供するので好適である。しかし、その設計はパラメータ化され、メモリーコントローラＳＭＣは単一レートのメモリーとして構成することもできる。ＤＤＲ−ＳＤＲＡＭは、データ線のタイミング以外はＳＤＲＡＭと同様に挙動するので、ここではＳＤＲＡＭの概念を用いた基本事項を説明する。
【００３１】
ＰＣＩエクスプレス・ネットワークＰＣＩＥは、リアルタイム・ストリームが通過する装置内で予約された排他的なリソース／帯域幅を通したネットワークサービス、例えば保証された実時間データ搬送を提供する。標準的なコントローラによってサポートされる外部ＤＲＡＭが、間にインテリジェント・メモリーコントローラを介さずにＰＣＩエクスプレス構成に接続されると、メモリーは、ＰＣＩエクスプレスによって一般に提供される帯域幅、遅延、及び他の保証を満足しない、というのは、ＰＣＩエクスプレスは何らの保証も与えず、入りのトラフィックに対する「スレーブ」として作用するからである。
【００３２】
標準的なメモリーコントローラの設計は、最大可能な帯域幅を最低限のレイテンシで提供することに焦点をおく。こうした取り組みはプロセッサのデータ及び命令（キャッシュ）のアクセスには適するが、等時性トラフィックには適さない。外部ＤＲＡＭを伴って拡張されたＰＣＩエクスプレス・ネットワークの予測可能な挙動を提供可能にするためには、ストリーミング・メモリーコントローラが必要であり、ストリーミング・メモリーコントローラはストリーミング用の外部メモリーの予測可能な挙動を保証する。これに加えて、本発明によるメモリーコントローラの設計は、スループット及びレイテンシを保証することだけでなく、このＤＲＡＭにアクセスする間の電力消費を低減することも目標にしている。
【実施例２】
【００３３】
図４に、本発明の第２実施例によるストリーミング・メモリーコントローラＳＭＣの論理的ブロック図を示す。ここでは、マルチストリーム・バッファリングの論理図を示す。ストリームＳＴ1〜ＳＴ4の各々が別個のバッファに関連する。これらのバッファは、外部ＤＲＡＭへのデータアクセスが必要な際に２つに分割され、即ち、プリフェッチバッファ及びライトバックバッファが提供される。一時に１つのストリームのみが外部ＳＤＲＡＭにアクセスすることができるので、アービタＡＲＢを設けて、アービタＡＲＢはマルチプレクサ（多重器）ＭＵＸとの組合せでアービトレーションを実行して、それぞれの帯域幅要求に応じてメモリーバッファをアクセスする異なるストリーム間の競合を解決する。
【００３４】
異なるリアルタイム・ストリーム間のメモリーアクセスのアービトレーションは、保証された帯域幅及び限定されたアクセス遅延にとって不可欠である。メモリーにデータを書き込むかメモリーからデータを読み出す際にいつも、好適にはフルページ（またはその倍数）が書き込まれるか読み出され、即ちアクセスがバースト形式で実行されるものと仮定する。１ページにアクセスするために必要な時間（読出し及び書込み動作のための時間とは少し異なる）をタイムスロットＴＳと称する。各ストリームはメモリーＭＥＭの制御を行い、メモリーＭＥＭは１つのタイムスロットＴＳ用のＳＤＲＡＭとして実現することができ、このタイムスロット中に、各ストリームは例えばＳＤＲＡＭの単一ページをアクセスすることができる。サービスサイクルＳＣは固定数のタイムスロットで構成することができる。このアクセス・シーケンスは反復され、新たなサービスサイクルが開始されるとリセットされる。
【００３５】
このタイムスロットのサイズは原則としてプログラマブル（プログラム可能）であるべきである。このスロットのサイズは、メモリー挙動並びに所望のデータサイズ、即ちＳＤＲＡＭと相互接続（例えばＰＣＩエクスプレス）との間で転送すべき内部メモリーコントローラのサイズを反映すべきである。従って、このタイムスロットはシステム及びメモリー毎に異なる。このタイムスロットのサイズは実行時に調整することができる。現在のストリーム用に最適なバッファを生成するために内部メモリーに不足（例えば他のストリームバッファに取られている）がある場合には、バッファサイズのための電力消費と、非最適なバッファリング（例えばより小さいバッファ）を反映したタイムスロットの調整との間のトレードオフを実行する。
【００３６】
ここで、ＳＤＲＡＭへのフルページのアクセスに等しいタイムスロットの計算を、ＰＣＩエクスプレス・ネットワーク及びＳＤＲＡＭについて説明する。
【００３７】
１つのタイムスロット中に、あらゆるストリームがＳＤＲＡＭの１つのフルページをアクセスする。マイクロン社の128MビットＤＤＲ−ＲＡＭ（４M×８×４バンク）については、ページサイズは１Ｋバイトである。１Ｋバイトは基本パケットサイズ（128バイト）のＰＣＩエクスプレス・パケット８個と等価である。
【００３８】
16ビットのワードを仮定すれば、１ページを読み出すための最小時間（アクティブ−アクティブ）は：
2(アクティブ−読出し・サイクル)＋512(読出しサイクル)＋2(プリチャージ−アクティブ・サイクル)＝516クロックサイクル＝516×7.5ns＝3.87μs
に等しい。
【００３９】
１ページに書き込むための最小時間（アクティブ−アクティブ）は：
2(アクティブ−書込み)＋512(書込みサイクル)＋1.25(ｔQDSSmax)＋2(ｔWR)＋2(プリチャージ−アクティブ・サイクル)＝519.25クロックサイクル＝519×7.5ns＝3.894μs
に等しい。
【００４０】
従って、１つのタイムスロットは少なくとも3.894μs（または520メモリークロックサイクル）に等しくなければならない。従って、１秒当たり（最大）256.805ページのＳＤＲＡＭへのアクセスを達成することができる。
【００４１】
これらの仮定により、この場合のＳＤＲＡＭへの最大可能なデータレート（帯域幅）は256.805Mバイト／sである。なお、これらの値は上述したＤＤＲ−ＲＡＭに当てはまる。他のＤＲＡＭは他の値をもたらす。
【００４２】
例として、ＳＤＲＡＭのＦＩＦＯバッファの総数を４に選定して、アービトレーションによって導入される最悪の場合のパケットの遅延、即ちパケットがメモリーコントローラＳＭＣを出る時点とこのパケットがメモリーコントローラに入る時点との間の時間差を計算する。さらに、すべてのデータストリームが同じ優先度を有する、即ち、アービトレーションはラウンドロビン・ベースに基づいて実行されるものと仮定する。メモリーコントローラＳＭＣ内のバッファサイズは８パケットまたは１Ｋバイトである。ストリームは同じデータレートでのＳＤＲＡＭからの読出し及びＳＤＲＡＭへの書込みである。従って、８タイムスロットのウィンドウ（時間窓）を設け、このウィンドウ内で、ＳＤＲＡＭ内の各ＦＩＦＯバッファを、十分なデータが存在する場合に１回書込み及び読出しする。
Ｔ＝ｔ1＋ｔ2＋ｔ3＋ｔ4＋ｔ5＋ｔ6＋ｔ7
ｔ1は、ＰＣＩエクスプレスがデータをアンパック（展開、解凍）してメモリーコントローラＳＭＣに送るのに要する時間に相当する。ｔ2は、パケットがメモリーコントローラＳＭＣのライトバックバッファ内に留まる時間に相当する。ｔ3は、パケットをＳＤＲＡＭに書き込むために費やされる時間に相当する。ｔ4は、パケットがＳＤＲＡＭ ＦＩＦＯのＦＩＦＯ内に留まる時間に相当する。ｔ5は、ＳＤＲＡＭからパケットを読み出すために費やされる時間に相当する。ｔ6は、パケットがメモリーコントローラのプリフェッチバッファ内に留まる時間に相当する。ｔ7は、ＰＣＩエクスプレスがメモリーコントローラからデータを受信してパケットを形成するのに要する時間に相当する。
【００４３】
応答例として、ｔ2、ｔ3、ｔ5、及びｔ6をいくつかの仮定の下で計算する。最悪の場合の遅延について、パケットはまずメモリーコントローラのライトバックバッファに到着し、そしてさらに７つのパケットを待ち（これにより、ライトバックバッファが満（フル）状態になる）、そしてパケットはＳＤＲＡＭにアクセスするために７タイムスロット分待たなければならない（他の７つのストリームが先にＳＤＲＡＭにアクセスする）ものと仮定する。同様に、最悪の場合について、パケットは７タイムスロット分待ち、さらに、読み出すべき７つのパケットを待つものと仮定する。
【００４４】
ストリームの例について、２つのパケット間の時間が945μs（単一オーディオチャンネル：44.1KHz×24ビット＝1058.4Kbps＝1058パケット／秒）であるものと仮定する。
最悪の場合の条件については、次の通りである：
ｔ2＝7×945＝6615μs
ｔ6＝7×945＝6615μs
【００４５】
しかし、これらの最悪の場合の時間ｔ2とｔ6とは背反的である、というのは、ＳＲＡＭ内の書込みバッファにおいて、あるパケットが他の７つのパケットを待たなければならない場合（最悪の場合）には、このパケットは読出し用にアクセスされる最初のパケットとなるからである。
【００４６】
従って、一般的な導出はｔ2＋Ｔ6＝6615μsで実行することができる。ｔ3及びｔ5の最悪の場合の値はＳＤＲＡＭへの８ページのアクセスである、というのは、最悪の場合については、どのストリームも７タイムスロット分待たなければならないことがあり、そしてこのストリームはページアクセスを完了しなければならないからである。従って、合計時間は、待ち時間（７タイムスロット）及び実際の読出し／書込み（１タイムスロット）の合計である。
１つのＳＤＲＡＭタイムスロット（ページアクセス）は3前に計算したように3.894μsであるので、ｔ3＝ｔ5＝8×3.894＝31.2μsである。
【００４７】
ｔ’＝ｔ1＋ｔ4＋ｔ7は、ストリームのパラメータに依存しない一定値であるものと仮定すれば、最悪の場合の遅延Ｔは、Ｔ＝6615＋31.2＋31.2＋ｔ’μs＝6.7ms＋ｔ’である。
【００４８】
（他の場合について）12.8MB／秒（10μs毎のパケット）のデータレートを仮定すれば、最悪の場合の遅延ＴはＴ＝70＋31.2＋31.2＋ｔ’μs＝132.4＋ｔ’μsである。
【００４９】
この種のＳＤＲＡＭアクセス方策（フルページのアクセス）では、電力は最小化されるが最悪の場合の遅延は、より小さいデータレート（帯域幅）を有するストリームについてはより大きくなる。
【００５０】
図５に、最悪の場合の遅延ＷＣＤに対するバッファサイズの影響を例示するグラフを示す。このグラフは、最悪の場合の遅延ＷＣＤとバッファサイズＢＳ（ＳＤＲＡＭのアービトレーション・スロット）との間の依存性を表す。ここでｔ’は設計に依存しないので無視する。
【００５１】
図５のグラフは、128Mビット／秒のデータレート、ページバーストを用いる128MBのＤＤＲ−ＲＡＭ（４M×８×４バンク）、及び最悪の場合の遅延について計算したものであり、すべてのストリームが同じ帯域幅を割り当てられているものと仮定している。図５に示すように、最悪の場合の遅延ＷＣＤはバッファサイズＢＳと共に直線的に増加する。
【００５２】
図６に、メモリーコントローラＳＭＣのレイテンシに対するライトバックバッファのサイズの影響を例示するグラフを示す。メモリーコントローラＳＭＣ内のプリフェッチバッファまたはライトバックバッファがＳＤＲＡＭをアクセスする要求を発行する際には、アクセスに至るために有限時間（上記で計算したｔ5）を必要とする。最悪の場合には、この要求は、すべてのより高い優先度のストリームによって遅延される。他の７つのストリームのすべてに、まずラウンドロビン方式で対応するものと仮定する。この時間中に、当該バッファに対する要求が発生した場合には、このバッファは、この要求を完了するのに十分な余分の空間（上述したＳＤＲＡＭの１ページの基本サイズ）を必要とする。さもなければ、バッファがＳＤＲＡＭにアクセスできるまで待たなければならないので、要求はブロック（阻止）される。ブロックなしのアクセスを提供するためにバッファ内に要求されるこの余分な空間は、ストリームのデータレートに依存する。
【００５３】
図６のグラフは128MBのＤＤＲ−ＲＡＭ（４Ｍ×８×４バンク）及び平均レイテンシについて計算したものであり、すべてのストリームが同じ帯域幅を割り当てられているものと仮定している。
【００５４】
プリフェッチバッファが空になり、ＤＲＡＭのフルページをプリフェッチバッファに転送する際には、最悪の場合の８タイムスロット（〜8×516サイクル＝32μs）が必要となる。バッファサイズがＤＲＡＭの１ページに等しい場合には、最初のパケットアクセス（読出し要求の完了）は32μsを必要とし、残りのパケットは理想的には単一クロックサイクル内にアクセス（読出し要求を完了）に至る。従って、あらゆるパケットについての平均レイテンシは517（(8×516＋7)／8）クロックサイクルとなる。この平均レイテンシはデータレートとは無関係である。
【００５５】
図６によれば、高データレートのストリームについては、必要なバッファサイズはより大きくなる、というのは、ＳＤＲＡＭのアクセス時間中にアクセスをブロックしないために、バッファはより多くのデータを供給しなければならないからである。高データレートのストリームについては、ＳＤＲＡＭのアクセス時間中により多くのパケットが必要になる。
【００５６】
遅延０のＳＤＲＡＭのアクセスを提供するためのメモリーコントローラＳＭＣ内の最適なバッファサイズは、（この例については）：
ＤＲＡＭの１ページ＋要求が待ち行列内にある際のバッファパケット数分（最大〜32μs）＝1KB＋4Mビット／秒のデータレート毎に1パケット（128バイト）の追加的空間
となる。
【００５７】
図７に、バッファサイズＢＳの消費電力Ｐに対する影響を例示するグラフを示す。ここでは、バッファサイズを調整すべき際に他のトレードオフを実行し計算することができる。ＳＤＲＡＭは１、２、４、８のバーストサイズ、及びページバーストをサポートする。バーストサイズが増加すると共に、ＳＤＲＡＭがアクティブ（ACTIVE）モードになるための時間が低減され、ＳＤＲＡＭはより早くスタンバイ（待機）状態（SELF REFRESH）に入ることができる。従って、バーストサイズが増加すると共に、ＳＤＲＡＭにおける電力消費は低減される。
【００５８】
図７のグラフは、ＳＤＲＡＭからの10Mビット／秒のデータ読出し、及び128MBのＤＤＲ−ＲＡＭ（４Ｍ×８×４バンク）について計算したものである。
【００５９】
このグラフは、ページバーストがより低い電力を消費することを示している。必要なＳＤＲＡＭの帯域幅がより大きいほど、異なるバーストについての電力消費の差はより大きくなる。
【００６０】
上述した思想は、少ない消費電力の要求を満足しつつ、（ストリーミングアクセスのような）ＳＤＲＡＭのアクセスについてのリアルタイムのアービトレーションを必要とするシステムにおいても実現することができる。その一例は、オーディオ／ビデオ能力を有する移動電話機とすることができる。
【００６１】
従って、上述した本発明の実施例の原理は、特定サービスをサポートするバスまたはネットワークのような相互接続インフラストラクチャを具え、他の（外部）装置はこうしたネットワークサービスを実現しないすべてのシステムに適用することができる。こうした相互接続インフラストラクチャの一例はＰＣＩエクスプレス・ネットワークであり、帯域幅割当てサービス、フロー制御サービス、等を実現することができ、（外部）ＳＤＲＡＭメモリーはこうしたサービスを実現しない。
【００６２】
以上の実施例では、１つのメモリーＭＥＭのみを説明してきたが、上述した構想はすべてのＰＣＩエクスプレス・ストリーミング・トランザクション、特にダイレクト・メモリーアクセスＤＭＡのアドレスのようなシーケンシャル（順次）アドレスに用いることができ、上述した本発明の原理は、２つ以上の別個のメモリーを有する物理的に分散したメモリーシステムに適用することもできる。こうした状況では、メモリー毎に別個のメモリーコントローラを設けるべきであり、すべてのメモリーが別個のデバイスアドレスを具えるべきである。ここで、ストリーミングバッファの数は８に限定されない。
【００６３】
パラメータ（例えばバッファ及びバッファサイズ、アービトレーション方策）を変更する設計を行ってきたが、実験をして、チップ外メモリー用のリアルタイム・ストリーミング・メモリーコントローラの設計におけるトレードオフのための結果を得ることができる。こうしたトレードオフの例は、設計を行うことによって可視化することができ、例えば、バーストサイズ及び入力／出力バッファサイズ対、データアクセスのための最悪の場合の遅延、外部メモリーの電力消費、及びＳＭＣ内のレイテンシである。
【００６４】
本発明によるリアルタイムのストリーミング・メモリーコントローラは、チップ外のネットワークサービス、及び外部ＤＲＡＭにストリーミング様式でアクセスするためのリアルタイム保証をサポートする。
【００６５】
メモリーコントローラＳＭＣは、ＰＣＩエクスプレス・ネットワーク内から外部ＤＲＡＭにアクセスすることを可能にするように設計されている。このメモリーコントローラＳＭＣはＶＨＤＬ（Very High Speed Integrated Circuit Hardware Description Language：米国防省の次世代高速ＩＣ開発計画のハードウェア記述言語）で設計され、合成され、そして検証されている。シリコン及び電力の消費の意味での複雑性の特徴が利用可能である。これに加えて、設計空間を特定用途向けに探索することができ、そして、異なるパラメータ及びアービトレーション方策で設計を行うことによって特定のトレードオフを可視化することができる。
【００６６】
ここでは、低電力の方法でＳＤＲＡＭ用の帯域幅保証を与えるメモリーコントローラを実現する。アービトレーション・アルゴリズムは、常に帯域幅を保証するが、なおもフレキシブルであり、ネットワークの変動及びジッタに対処する。ＰＣＩエクスプレスは、独立して調停することのできるストリームが８つであるという制限を有する。ＳＭＣの設計については、バッファサイズ（コスト）対電力及びアクセス遅延という、ある重要なトレードオフが存在する。Ｉ／Ｏバッファの増加はアービトレーションを緩和し、アクセスのレイテンシを低下させ、そしてＳＤＲＡＭから要求される累計帯域幅を低減する。
【００６７】
なお、上述した実施例は本発明を限定するものではなく例示するものであり、当業者は多くの代案実施例を請求項の範囲を逸脱することなしに設計することができる。「具えている」等の文言は請求項中に挙げた以外の要素またはステップの存在を排除するものではない。いくつかの手段を挙げた装置の請求項では、これらの手段のいくつかは同一のハードウェア・アイテムによって具体化することができる。単に、互いに異なる従属請求項中に特定の方策が存在するということは、これらの方策の組合せを有利に用いることができないことを示すものではない。
【図面の簡単な説明】
【００６８】
【図１】カーンプロセス・ネットワーク、及びその共有メモリーアーキテクチャ上へのマッピングの基本表現を示す図である。
【図２】共有メモリー・ストリーミングのフレームワークを有するシステム・オン・チップの基本アーキテクチャを示す図である。
【図３】本発明の第１実施例によるストリーミング・メモリーコントローラＳＭＣのブロック図である。
【図４】本発明の第２実施例によるストリーミング・メモリーコントローラＳＭＣの論理的ブロック図である。
【図５】最悪の場合の遅延に対するバッファサイズの影響を例示するグラフである。
【図６】レイテンシの影響対バッファサイズを例示するグラフである。
【図７】電力に対するバッファサイズの影響を例示するグラフである。
【図１】
2008544359.tif 000003
【図２】
2008544359.tif 000004
【図３】
2008544359.tif 000005
【図４】
2008544359.tif 000006
【図５】
2008544359.tif 000007
【図６】
2008544359.tif 000008
【図７】
2008544359.tif 000009
【国際調査報告】
2008544359.tif 000010
2008544359.tif 000011
2008544359.tif 000012