(57)【特許請求の範囲】
【請求項１】
第１のデータ通信バスに対する第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ送受信のための第１のデータインタフェースと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従ったデータ通信のために前記第１のデータインタフェースと接続された複数のアービトレーションモジュールと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従ったデータ通信のために前記複数のアービトレーションモジュールと接続された複数のメモリバンクであって、前記複数のメモリバンクの各々が、データ通信のために前記複数のアービトレーションモジュールのうちのそれぞれ異なるアービトレーションモジュールと接続される、複数のメモリバンクと、
第２のデータ通信バスに対する第２のデータバスビットサイズおよび第２のクロック周波数に従ったデータ送受信のための第２のデータインタフェースであって、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの整数倍（ただし、２以上の整数）であり、前記第１のクロック周波数は、前記第２のクロック周波数の整数倍（ただし、２以上の整数）である、第２のデータインタフェースと、
前記第２のデータバスビットサイズおよび前記第２のクロック周波数に従ったデータ通信のために前記第２のデータインタフェースと接続されたチャネライザモジュールであって、前記チャネライザモジュールはさらに、前記第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ通信のために前記複数のアービトレーションモジュールと接続されるチャネライザモジュールとを備え、
前記チャネライザモジュールは、
ａ）格納動作中に、前記第２のデータインタフェースから受信したデータを、前記第２のデータバスビットサイズから、前記第１のデータバスビットサイズの複数個のデータセグメントに分割し、
ｂ）前記格納動作中に、前記第１のデータバスビットサイズのデータセグメントを、それぞれのデータチャネルに沿って、前記複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、前記複数のメモリバンクのうちの指定されたメモリバンクへ前記第１のクロック周波数に従って送信し、
ｃ）ロード動作中に、前記複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、前記複数のメモリバンクのうちの指定されたメモリバンクから前記第１のデータバスビットサイズおよび第１のクロック周波数に従ってデータを受信し、
ｄ）前記ロード動作中に、前記複数のメモリバンクから受信したデータを、前記第２のデータバスビットサイズへ結合し、前記結合された第２のデータバスビットサイズのデータを前記第２のクロック周波数に従って前記第２のデータインタフェースへ送信する
ように規定されている
メモリアクセス制御モジュール。
【請求項２】
前記第１のデータ通信バスは、データ通信のためにコンピュータプロセッサと接続され、前記第２のデータ通信バスは、データ通信のためにシステムバスマスタと接続された、請求項１に記載されたメモリアクセス制御モジュール。
【請求項３】
前記第１のデータバスビットサイズは３２ビットであり、前記第２のデータバスビットサイズは６４ビットである、請求項１に記載されたメモリアクセス制御モジュール。
【請求項４】
前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍である、請求項１に記載されたメモリアクセス制御モジュール。
【請求項５】
前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、請求項４に記載されたメモリアクセス制御モジュール。
【請求項６】
前記第１のデータインタフェースと前記複数のアービトレーションモジュールとの間に接続された第１のデコーダをさらに備えており、
前記第１のデコーダは、メモリアクセス要求が向けられているメモリアドレスを決定するように規定され、
前記第１のデコーダは、前記複数のアービトレーションモジュールのうちの、前記複数のメモリバンクのうちの前記決定されたメモリアドレスを含むメモリバンクに接続されるアービトレーションモジュールに前記メモリアクセス要求を向けるように規定されている、請求項１に記載されたメモリアクセス制御モジュール。
【請求項７】
前記第１のデータバスビットサイズのデータセグメントの数は、前記第２のデータバスビットサイズの前記第１のデータバスビットサイズに対する前記整数倍の値に等しく、
前記データチャネルの数は、前記第２のデータバスビットサイズの前記第１のデータバスビットサイズに対する前記整数倍の値に等しい、請求項１に記載されたメモリアクセス制御モジュール。
【請求項８】
各データチャネルは、前記複数のメモリバンクの一部分にアクセスするために接続され、前記複数のメモリバンクの各々が、前記データチャネルのうちの１つによってアクセス可能である、請求項７に記載されたメモリアクセス制御モジュール。
【請求項９】
各データチャネルは、メモリアクセス要求が向けられているメモリアドレスを決定するように規定されたチャネルデコーダを含み、
前記チャネルデコーダは、前記複数のアービトレーションモジュールのうちの１つのアービトレーションモジュールであって、前記複数のメモリバンクのうちの前記決定されたメモリアドレスを含むメモリバンクに接続されたアービトレーションモジュールに前記メモリアクセス要求を向けるように規定されている、請求項８に記載されたメモリアクセス制御モジュール。
【請求項１０】
前記複数のアービトレーションモジュールの数は４つであり、前記複数のメモリバンクの数は４つであり、前記データチャネルの数は２つであり、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍であり、前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、請求項１に記載されたメモリアクセス制御モジュール。
【請求項１１】
メモリへのアクセスを制御する方法であって、メモリアクセス制御モジュールが、
第１のデータバスビットサイズおよび第１のクロック周波数に従って、第１のデータインタフェースから第１のメモリアクセス要求を受信することと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従って、前記第１のメモリアクセス要求によって指定されたメモリバンクを担当するアービトレーションモジュールに前記第１のメモリアクセス要求を送信することと、
第２のデータバスビットサイズおよび第２のクロック周波数に従って、第２のデータインタフェースから、データ格納要求である第２のメモリアクセス要求を受信することと、
前記第２のデータバスビットサイズの前記第２のメモリアクセス要求のデータを、前記第１のデータバスビットサイズのデータセグメントへ分割することと、
前記第１のクロック周波数に従って、前記第２のメモリアクセス要求が向けられているメモリアドレスを含むメモリバンクを担当するアービトレーションモジュールへ前記第１のデータバスビットサイズの各データセグメントを送信することと、
を備えており、
前記第２のデータバスビットサイズは前記第１のデータバスビットサイズの整数倍（ただし、２以上の整数）であり、
前記第１のクロック周波数は前記第２のクロック周波数の整数倍（ただし、２以上の整数）である、
ことを特徴とする方法。
【請求項１２】
前記第２のメモリアクセス要求の前記データセグメントに比べて前記第１のメモリアクセス要求に対してより高いアクセス優先度を与えるように、前記アービトレーションモジュールを動作させること、をさらに備える請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１３】
前記メモリアクセス制御モジュールが、
前記第２のデータバスビットサイズおよび前記第２のクロック周波数に従って、前記第２のデータインタフェースからデータロード要求である第３のメモリアクセス要求を受信することと、
前記第１のデータバスビットサイズおよび第１のクロック周波数に従って、前記第３のメモリアクセス要求によって指定されたデータを複数のメモリバンクから、対応する複数のアービトレーションモジュールを経由して取得することと、
前記複数のメモリバンクから受信した前記データを、前記第２のデータバスビットサイズとなるように結合することと、
前記結合された第２のデータバスビットサイズのデータを、前記第２のクロック周波数に従って前記第２のデータインタフェースへ送信することと、
をさらに備える請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１４】
前記第１のデータインタフェースは、コンピュータプロセッサと接続され、
前記第２のデータインタフェースは、システムバスマスタと接続されている、請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１５】
前記第１のデータバスビットサイズは３２ビットであり、前記第２のデータバスビットサイズは６４ビットである、請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１６】
前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍である、請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１７】
前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１８】
前記第１のデータバスビットサイズの各データセグメントは、それぞれ異なるデータチャネルを介して、前記第２のメモリアクセス要求が向けられているメモリアドレスを含むメモリバンクを担当するアービトレーションモジュールへ送信される、請求項１１に記載されたメモリへのアクセスを制御する方法。
【請求項１９】
各データチャネルは、それぞれ異なるメモリバンクのグループと通信する、請求項１８に記載されたメモリへのアクセスを制御する方法。
【請求項２０】
前記メモリは、４つのアービトレーションモジュールと４つのメモリバンクを含み、前記データチャネルの数は２つであり、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍であり、前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、請求項１８に記載されたメモリへのアクセスを制御する方法。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのコンピューティングシステムは、異なるクロック周波数で動作し異なるデータバスビットサイズを有する構成要素および／またはサブシステムを含み得る。例えば、コンピューティングシステムは、システムバスマスタよりも高いクロック周波数で動作するプロセッサを含み得る。また、同じコンピューティングシステムが、そのプロセッサバスよりも大きなビットサイズを有するシステムバスを有し得る。この例示的なコンピューティングシステムでは、システムバスに接続されたプロセッサと構成要素との両方が、ある程度の量のコンピュータメモリにアクセスする必要がある。クロック周波数およびバスサイズの相違により、プロセッサおよびシステムバスマスタは、それぞれのクロック周波数およびバスサイズに従って動作する異なるコンピュータメモリを必要とし得る。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
しかしながら、異なるクロック周波数およびバスサイズに従って動作する多くのメモリデバイスを用いることは、コンピューティングシステムの費用を増加させ、複雑化させる。したがって、プロセッサとシステムバスマスタとの両方が、クロック周波数およびバスサイズの相違に関わらず、共通の共有メモリデバイスを利用することができるようにすることが注目される。本発明は、このことに関連して創作される。
【課題を解決するための手段】
【０００３】
１つの実施形態では、メモリアクセス制御モジュールが開示される。メモリアクセス制御モジュールは、第１のデータ通信バスに対する第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ送受信のための第１のデータインタフェースを含んでいる。メモリアクセス制御モジュールはまた、第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ通信のために第１のデータインタフェースと接続された複数のアービトレーションモジュールを含んでいる。メモリアクセス制御モジュールはまた、第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ通信のために複数のアービトレーションモジュールと接続された複数のメモリバンクを含んでおり、これによって、複数のメモリバンクの各々が、データ通信のために複数のアービトレーションモジュールのうちのそれぞれ異なるものと接続されている。メモリアクセス制御モジュールはまた、第２のデータ通信バスに対する第２のデータバスビットサイズおよび第２のクロック周波数に従ったデータ送受信のための第２のデータインタフェースを含んでいる。第２のデータバスビットサイズは、第１のデータバスビットサイズの整数倍である。第１のクロック周波数は、第２のクロック周波数の整数倍である。メモリアクセス制御モジュールはまた、第２のデータバスビットサイズおよび第２のクロック周波数に従ったデータ通信のために第２のデータインタフェースと接続されたチャネライザモジュールを含んでいる。チャネライザモジュールはさらに、第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ通信のために複数のアービトレーションモジュールと接続されている。チャネライザモジュールは、格納動作中に、第２のデータインタフェースから受信したデータを、第２のデータバスビットサイズから第１のデータバスビットサイズの複数個のデータセグメントに分割するように規定されている。チャネライザモジュールはまた、格納動作中に、第１のデータバスビットサイズのデータセグメントを、それぞれのデータチャネルに沿って複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、複数のメモリバンクのうちの指定されたメモリバンクへ第１のクロック周波数に従って送信するように規定されている。チャネライザモジュールはまた、ロード動作中に、複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、複数のメモリバンクのうちの指定されたメモリバンクから第１のデータバスビットサイズおよび第１のクロック周波数に従ってデータを受信するように規定されている。チャネライザモジュールはまた、ロード動作中、複数のメモリバンクから受信したデータを、第２のデータバスビットサイズに結合し、結合した第２のデータバスビットサイズのデータを、第２のクロック周波数に従って、第２のデータインタフェースへ送信するように規定されている。
【０００４】
別の実施形態では、メモリへのアクセスを制御するための方法が開示される。この方法は、第１のデータインタフェースから第１のメモリアクセス要求を、第１のデータバスビットサイズおよび第１のクロック周波数に従って受信することを含んでいる。この方法はまた、第１のメモリアクセス要求によって指定されたメモリバンクを担当するアービトレーションモジュールへ、第１のメモリアクセス要求を第１のデータバスビットサイズおよび第１のクロック周波数に従って送信することを含んでいる。この方法はまた、第２のデータインタフェースから第２のメモリアクセス要求を第２のデータバスビットサイズおよび第２のクロック周波数に従って、受信することを含んでいる。第２のメモリアクセス要求は、データ格納要求である。第２のデータバスビットサイズは、第１のデータバスビットサイズの整数倍である。第１のクロック周波数は、第２のクロック周波数の整数倍である。この方法はまた、第２のデータバスビットサイズの第２のメモリアクセス要求を、第１のデータバスビットサイズのデータセグメントへ分割することを含んでいる。この方法はまた、第１のクロック周波数に従って、第１のデータバスビットサイズのデータセグメントによって指定されたメモリバンクを担当するアービトレーションモジュールに、第１のデータバスビットサイズの各データセグメントを送信することを含んでいる。
【０００５】
本発明の他の態様および利点は、本発明を例示している添付図面と併せた以下の詳細説明からより明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】本発明の１つの実施形態におけるコンピューティングシステムを示す図である。
【０００７】
【図２】本発明の１つの実施形態における、メモリアクセス制御モジュールが、第１のメモリアクセサとしてのコンピュータプロセッサと、第２のメモリアクセサとしてのシステムバスマスタとによる、複数のメモリバンクへのアクセスを制御するように実行されるコンピューティングシステムを示す図である。
【０００８】
【図３】本発明の１つの実施形態におけるメモリアクセス制御モジュールをより詳細な観点からみた図１および図２のコンピューティングシステムを示す図である。
【０００９】
【図４Ａ】本発明の１つの実施形態における、メモリへのアクセスを制御するために格納動作中にメモリアクセス制御モジュールを動作させるための方法のフローチャートである。
【００１０】
【図４Ｂ】本発明の１つの実施形態における、ロード動作中にメモリアクセス制御モジュールを動作させるための図４Ａの方法に続くフローチャートである。
【発明を実施するための形態】
【００１１】
以下の記載では、多くの具体的な詳細が、本発明を細部まで理解するために述べられる。しかしながら、本発明は、これら具体的な詳細のいくつかまたはすべてがなくても実現され得ることは当業者に明らかである。他の事例では、周知の処理動作は、本発明を不必要に不明瞭にしないために、詳細に記載されていない。
【００１２】
図１は、本発明の１つの実施形態におけるコンピューティングシステム１００を図示する。コンピューティングシステム１００は、複数のメモリバンク１０９Ａ〜１０９Ｄと、複数のメモリアクセサ１０１、１０３とを含んでいる。メモリアクセサ１０１、１０３は、例えば、コンピュータプロセッサ、システムバスマスタ、または、コンピュータメモリへのアクセスを要求するその他のコンピューティング構成要素などの任意のタイプのコンピューティング構成要素であり得るが、これらに限定されない。１つの実施形態では、第１のメモリアクセサ１０１は、コンピュータプロセッサとして規定され、第２のメモリアクセサ１０３は、他のコンピューティング構成要素が複数のメモリバンク１０９Ａ〜１０９Ｄにアクセスできるようにするシステムバスマスタ１０３として規定される。図１は、例として、４つのメモリバンク１０９Ａ〜１０９Ｄしか図示していないが、他の実施形態は、実質的に任意の数のメモリバンクを実装し得ることが理解されるべきである。１つの実施形態では、メモリバンク１０９Ａ〜１０９Ｄの各々は、スタティックランダムアクセスメモリ（ＳＲＡＭ）として規定される。しかしながら、他の実施形態では、メモリバンク１０９Ａ〜１０９Ｄが、任意のタイプのコンピュータメモリ、または、コンピュータメモリタイプの任意の組み合わせとして規定され得ることが理解されるべきである。さらに、多くのメモリバンク１０９Ａ〜１０９Ｄの場合、各メモリバンク１０９Ａ〜１０９Ｄは、指定可能なメモリ空間全体のうちの異なる部分を含むように構成される。
【００１３】
複数のメモリバンク１０９Ａ〜１０９Ｄの各々へのアクセスは、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのそれぞれによって制御される。図１に図示されるように、各アービトレーションモジュール１０７Ａ〜１０７Ｄは、矢印１１３Ａ〜１１３Ｄによって示されるように、メモリバンク１０９Ａ〜１０９Ｄのうちのそれぞれと、双方向データ通信をする。データ格納動作、すなわち、データ書込動作中、アービトレーションモジュール１０７Ａ〜１０７Ｄは、データ格納命令および、格納されるべきデータを、そのメモリバンク１０９Ａ〜１０９Ｄに通信するものである。データロード動作、すなわち、データ読出動作中、アービトレーションモジュール１０７Ａ〜１０７Ｄは、データロード命令をそのメモリバンク１０９Ａ〜１０９Ｄに通信し、要求されているデータを受信する。
【００１４】
各アービトレーションモジュール１０７Ａ〜１０７Ｄは、そのメモリバンク１０９Ａ〜１０９Ｄそれぞれへのアクセスを制御するように規定され、これによって、所与の時間におけるそのメモリバンクへのアクセス要求数が、特定のメモリバンクのための許容可能な仕様内に維持される。例えば、メモリバンク１０９Ａ〜１０９Ｄが一度に１つのアクセス要求を処理するように規定されていれば、メモリバンク１０９Ａ〜１０９Ｄのアービトレーションモジュール１０７Ａ〜１０７Ｄは、メモリバンク１０９Ａ〜１０９Ｄが一度に１つのアクセス要求でしかタスクを課されないことを保証するように動作する。メモリバンク１０９Ａ〜１０９Ｄがビジー状態である間にアービトレーションモジュール１０７Ａ〜１０７Ｄに到達するさらなる任意のアクセス要求は、メモリバンク１０９Ａ〜１０９Ｄが次のメモリアクセス要求を処理するために利用可能になるまで、アービトレーションモジュール１０７Ａ〜１０７Ｄによって保持される。
【００１５】
第１のメモリアクセサ１０１は、矢印１１１によって示されるように、アービトレーションモジュール１０７Ａ〜１０７Ｄの各々と通信するために接続されている。矢印１１１は、第１のデータ通信バス１１１に対応する。このように、第１のメモリアクセサ１０１は、ターゲットとされたメモリアドレスを含むメモリバンク１０９Ａ〜１０９Ｄを担当する特定のアービトレーションモジュール１０７Ａ〜１０７Ｄへメモリアクセス要求を送信することが可能である。図１の例示的な実施形態では、第１のメモリアクセサ１０１、アービトレーションモジュール１０７Ａ〜１０７Ｄの各々、および、メモリバンク１０９Ａ〜１０９Ｄの各々は、第１のクロック周波数ｃｌｋ１を有する第１のクロックおよび第１のデータバスビットサイズｂｓ１に従って、互いにデータを通信するように規定されている。
【００１６】
第２のメモリアクセサ１０３は、第２のクロック周波数ｃｌｋ２を有する第２のクロックおよび第２のデータバスビットサイズｂｓ２に従って、動作するように規定されている。したがって、第２のメモリアクセサ１０３は、クロック周波数およびデータバスビットサイズの観点から、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄとは異なるデータインタフェース仕様を有する。その結果、第２のメモリアクセサ１０３は、アービトレーションモジュール１０７Ａ〜１０７Ｄと直接通信することができない。この状況に適応するために、チャネライザモジュール１０５が、第２のメモリアクセサ１０３と、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄとの間に接続される。
【００１７】
特に、第２のメモリアクセサ１０３は、矢印１１５によって示されるように、第２のクロック周波数ｃｌｋ２と第２のデータバスビットサイズｂｓ２とに従って、チャネライザモジュール１０５にデータ送信し、チャネライザモジュール１０５からデータを受信する。矢印１１５は、第２のデータ通信バス１１５を指している。また、チャネライザモジュール１０５は、第１のクロック周波数ｃｌｋ１および第１のデータバスビットサイズｂｓ１に従って、矢印１１７Ａおよび矢印１１７Ｂによって示されるように、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄにデータを送信し、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄからデータを受信する。具体的には、チャネライザモジュール１０５は、矢印１１７Ａおよび矢印１１７Ｂそれぞれによって示される２つの個別のデータ通信チャネルによって、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄと通信するために接続されている。このように、チャネライザモジュール１０５は、矢印１１７Ａによって示されるように、第１のデータ通信チャネルを用いて、アービトレーションモジュール１０７Ａおよび１０７Ｂとの間でデータを送受信することができる。また、チャネライザモジュール１０５は、矢印１１７Ｂによって示されるように、第２のデータ通信チャネルを用いて、アービトレーションモジュール１０７Ｃおよび１０７Ｄとの間でデータを送受信することができる。
【００１８】
チャネライザモジュール１０５は、アービトレーションモジュール１０７Ａ〜１０７Ｄのデータインタフェースとの互換性を持つように、第１のクロック周波数ｃｌｋ１および第１のデータバスビットサイズｂｓ１に従って、データ通信チャネル１１７Ａ、１１７Ｂの各々を介してデータを通信するように規定されている。チャネライザモジュール１０５は、２つの通信チャネル１１７Ａ、１１７Ｂの各々を介して独立してデータを送信し、２つの通信チャネル１１７Ａ、１１７Ｂの各々からデータを受信するように規定されていることが理解されるべきである。したがって、データは、第１のクロックの所与のサイクルにおいて、すなわち、第１のクロック周波数ｃｌｋ１の所与のサイクルに従って、通信チャネル１１７Ａ、１１７Ｂの各々を介して独立して送信され得る。したがって、各通信チャネル１１７Ａ、１１７Ｂは、アービトレーションモジュール１０７Ａ〜１０７Ｄを経由して、メモリバンク１０９Ａ〜１０９Ｄのうちの異なる部分とデータを通信するために接続されている。
【００１９】
図２は、本発明の１つの実施形態における、メモリアクセス制御モジュール２０３が、第１のメモリアクセサ１０１としてのコンピュータプロセッサ１０１Ａ、および、第２のメモリアクセサ１０３としてのシステムバスマスタ１０３Ａによる、複数のメモリバンク１０９Ａ〜１０９Ｄへのアクセスを制御するコンピューティングシステム１００を図示する。メモリアクセス制御モジュール２０３はまた、ダイレクトメモリアクセスブリッジ２０３とも称され得る。メモリアクセス制御モジュール２０３は、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従う、第１のデータ通信バス１１１との間のデータ転送のための第１のデータインタフェース１０４を含んでいる。メモリアクセス制御モジュール２０３はまた、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従う、第２のデータ通信バス１１５との間のデータ転送のための第２のデータインタフェース１０６を含んでいる。
【００２０】
１つの実施形態では、第２のデータバスビットサイズｂｓ２は、第１のデータバスビットサイズｂｓ１の整数倍である。１つの実施形態では、第２のデータバスビットサイズｂｓ２は、第１のデータバスビットサイズｂｓ１の２倍である。例えば、１つの実施形態では、第１のデータバスビットサイズｂｓ１は３２ビットであり、第２のデータバスビットサイズｂｓ２は６４ビットである。また、１つの実施形態では、第１のクロック周波数ｃｌｋ１は、第２のクロック周波数ｃｌｋ２の整数倍である。例えば、１つの実施形態では、第１のクロック周波数ｃｌｋ１は、第２のクロック周波数ｃｌｋ２の２倍である。したがって、例によれば、この実施形態では、第１のクロック周波数ｃｌｋ１が４００ＭＨｚであれば、第２のクロック周波数ｃｌｋ２は２００ＭＨｚである。これらのクロック周波数は、第１のクロック周波数ｃｌｋ１と第２のクロック周波数ｃｌｋ２との間の整数倍関係を明らかにするために使用されたのであって、本明細書に開示されたメモリアクセス制御モジュール２０３において利用され得るクロック周波数に関するいかなる限定も表わしていないことが理解されるべきである。
【００２１】
メモリアクセス制御モジュール２０３はまた、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従うデータ通信のために、第１のデータインタフェース１０４と接続された複数のアービトレーションモジュール１０７Ａ〜１０７Ｄを含んでいる。図１に関して議論されたように、複数のメモリバンク１０９Ａ〜１０９Ｄは、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従うデータ通信のために、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄと接続され、これによって、複数のメモリバンク１０９Ａ〜１０９Ｄの各々が、データ通信のために複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのうちの異なるアービトレーションモジュールと接続される。
【００２２】
メモリアクセス制御モジュール２０３は、図１に関して上記で議論されたようなチャネライザモジュール１０５を含んでいる。チャネライザモジュール１０５は、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従うデータ通信のために、第２のデータインタフェース１０６と接続されている。チャネライザモジュール１０５はさらに、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従うデータ通信のために、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄと接続されている。
【００２３】
チャネライザモジュール１０５は、格納動作中、第２のデータインタフェース１０６から受信したデータを、第２のデータバスビットサイズｂｓ２から、第１のデータバスビットサイズｂｓ１の複数個のデータセグメントに分割するように規定されている。チャネライザモジュール１０５はまた、格納動作中、第１のクロック周波数ｃｌｋ１に従って、第１のデータバスビットサイズｂｓ１のデータセグメントを、それぞれのデータチャネル１１７Ａ、１１７Ｂに沿って、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのうちの対応するアービトレーションモジュールを経由して、複数のメモリバンク１０９Ａ〜１０９Ｄのうちのアドレスされたメモリバンクへ送信するように規定されている。
【００２４】
チャネライザモジュール１０５はまた、ロード動作中、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのうちの対応するアービトレーションモジュールを経由して、複数のメモリバンク１０９Ａ〜１０９Ｄのうちの指定されたメモリバンクから、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って、データを受信するように規定されている。チャネライザモジュール１０５はさらに、ロード動作中、複数のメモリバンク１０９Ａ〜１０９Ｄから受信したデータを、第２のデータバスビットサイズｂｓ２になるように結合し、結合した第２のデータバスビットサイズｂｓ２のデータを、第２のクロック周波数ｃｌｋ２に従って第２のデータインタフェース１０６へ送信するように規定されている。
【００２５】
図３は、本発明の１つの実施形態における、メモリアクセス制御モジュール２０３のより詳細な視点での図１および図２のコンピューティングシステム１００を図示する。第１のデータインタフェース１０４を介したデータ通信が、デコーダ３０１において受信される。デコーダ３０１は、第１のメモリアクセサ１０１から受信したデータ通信を処理して、データ通信のターゲットとされたメモリアドレスを決定するように規定されている。デコーダ３０１はさらに、第１のメモリアクセサ１０１から受信したデータ通信を、そのアービトレーションモジュール１０７Ａ〜１０７Ｄを経由して、ターゲットとされたメモリアドレスを含むメモリバンク１０９Ａ〜１０９Ｄへ向けるように規定されている。このように、デコーダ３０１は、第１のデータインタフェース１０４と、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄとの間に接続されている。デコーダ３０１は、第１メモリアクセサ１０１からのメモリアクセス要求が向けられるメモリアドレスを決定するように規定されている。デコーダ３０１は、第１のメモリアクセサ１０１からのメモリアクセス要求を、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのうちの、複数のメモリバンク１０９Ａ〜１０９Ｄのうちの決定されたメモリアドレスを含むものに接続されたアービトレーションモジュールへ向けるように規定されている。デコーダ３０１と複数のアービトレーションモジュール１０７Ａ〜１０７Ｄを経由する、第１のメモリアクセサ１０１と複数のメモリバンク１０９Ａ〜１０９Ｄとの間のデータ通信は、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って実行されることが理解されるべきである。
【００２６】
図３はまた、第２のメモリアクセサ１０３から、第２のデータ通信バス１１５を経由して、第２のデータインタフェース１０６によって受信され、チャネライザモジュール１０５へ送信されるデータ通信を図示する。チャネライザモジュール１０５は、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従って、第２のデータインタフェース１０６からデータを受信し、また、第２のデータインタフェース１０６へデータを送信するように規定されていることが理解されるべきである。チャネライザモジュール１０５では、データ通信は、バスコントローラ３０３によって受信される。バスコントローラ３０３は、メモリアクセスコマンドおよびデータを抽出するために、到来したデータ通信を解析するように規定されている。バスコントローラ３０３は、抽出されたメモリアクセスコマンドを、矢印３３７によって示されるように、第２のクロック周波数ｃｌｋ２に従って、コマンドＦＩＦＯ（ファーストインファーストアウトバッファ）３０５へ送信するように規定されている。抽出されたメモリアクセスコマンドはその後、矢印３３９によって示されるように、第２のクロック周波数ｃｌｋ２に従って、コマンドＦＩＦＯ３０５からデータ転送コントローラ３０９へ送信される。
【００２７】
また、バスコントローラ３０３は、矢印３４１によって示されるように、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従って、到来したデータ通信からのデータを、第１のロード／格納ＭＵＸ（マルチプレクサ）３１１に送信するように規定されている。データ格納動作中、矢印３４３によって示されるように、到来したデータ通信からのデータが、第１のロード／格納ＭＵＸ３１１からデータＦＩＦＯ３０７へ送信される。さらに、矢印３４５によって示されるように、データＦＩＦＯ３０７からのデータが、第２のロード／格納ＤＥＭＵＸ３１３へ送信される。データ格納動作中、矢印３４９によって示されるように、データは、第２のデータバスサイズｂｓ２および第２のクロック周波数ｃｌｋｓに従って、データＦＩＦＯ３０７から、第２のロード／格納ＤＥＭＵＸ３１３を経由して、データ転送コントローラ３０９へ送信される。
【００２８】
データ転送コントローラ３０９は、コマンドＦＩＦＯ３０５から受信したメモリアクセスコマンドを解析し、メモリアクセスコマンドを、データＦＩＦＯ３０７から受信した対応するデータと揃えるように規定されている。格納動作中、データ転送コントローラ３０９は、到来したデータを、第１のデータバスビットサイズｂｓ１の複数個のデータセグメントにチャネル化する。第１のデータバスビットサイズｂｓ１のデータセグメントの数は、第２のデータバスビットサイズｂｓ２が第１データバスビットサイズｂｓ１よりも大きい整数倍の値に等しい。例えば、第２のデータバスビットサイズｂｓ２が、第１のデータバスビットサイズｂｓ１の２倍であれば、チャネライザは、到来したデータを、各々が第１のデータバスビットサイズｂｓ１からなる２つのデータセグメントにチャネル化するだろう。別の例として、第２のデータバスビットサイズｂｓ２が、第１のデータバスビットサイズｂｓ１の４倍であれば、チャネライザは、到来したデータを、各々が第１のデータバスビットサイズｂｓ１からなる４つのデータセグメントにチャネル化するだろう。他の例も同様である。
【００２９】
格納動作中、データ転送コントローラ３０９は、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って、第１のデータバスビットサイズｂｓ１のデータセグメントを、それぞれのデータチャネル３３５Ａ、３３５Ｂを介して、それぞれのチャネルコントローラモジュール３１５Ａ、３１５Ｂへ送信する。図３の例では、第２のデータバスビットサイズｂｓ２は、第１のデータバスビットサイズｂｓ１の２倍である。したがって、データ転送コントローラ３０９は、データを、第１のデータバスビットサイズｂｓ１の２つのデータセグメントへチャネル化する。矢印３３５Ａおよび矢印３３３Ａによって示されるように、これらデータセグメントのうちの第１のデータセグメントは、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って、データ転送コントローラ３０９から第１のチャネルコントローラモジュール３１５Ａへ送信される。矢印３３５Ｂおよび矢印３３３Ｂによって示されるように、これらデータセグメントのうちの第２のデータセグメントは、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って、データ転送コントローラ３０９から第２のチャネルコントローラモジュール３１５Ｂへ送信される。データ転送コントローラ３０９によって使用されるデータチャネルの数は、第２のデータバスビットサイズｂｓ２が第１のデータバスビットサイズｂｓ１よりも大きくなる整数倍の値に等しいことが理解されるべきである。
【００３０】
チャネルコントローラモジュール３１５Ａおよび３１５Ｂの各々は、同一の手法で規定される。しかしながら、チャネルコントローラモジュール３１５Ａおよび３１５Ｂの各々は、複数のメモリバンク１０９Ａ〜１０９Ｄのうちのそれぞれ異なる部分にアクセスするように接続されている。１つの実施形態では、複数のメモリバンク１０９Ａ〜１０９Ｄへのアクセスは、多くのチャネルコントローラモジュール３１５Ａ、３１５Ｂの間で均等に分割される。例えば、図３の例では、２つのチャネルコントローラモジュール３１５Ａ、３１５Ｂが存在するので、各チャネルコントローラモジュール３１５Ａ、３１５Ｂは、複数のメモリバンク１０９Ａ〜１０９Ｄのうちのそれぞれ異なる半分にアクセスするように接続されている。その他の実施形態では、例えば３１５Ａ、３１５Ｂなどの１つまたは複数のチャネルコントローラモジュールが、他のチャネルコントローラモジュールよりも多くの、あるいは少ない数のメモリバンク１０９Ａ〜１０９Ｄ等にアクセスすることが可能である。しかしながら、複数のメモリバンク１０９Ａ〜１０９Ｄの各々は、データチャネルのうちの１つ、すなわち、チャネルコントローラモジュール３１５Ａ、３１５Ｂのいずれかによってアクセス可能であることが理解されるべきである。これは、複数のチャネルコントローラモジュール３１５Ａ、３１５Ｂが同時に同じメモリバンク１０９Ａ〜１０９Ｄにアクセスする際の競合を回避する。したがって、アービトレーションモジュール１０７Ａ〜１０７Ｄの各々は、同じメモリバンク１０９Ａ〜１０９Ｄへの同時アクセスについて、最大でもチャネルコントローラモジュール３１５Ａ、３１５Ｂのいずれかと第１のメモリアクセサ１０１との間の潜在的な競合を取り扱うのみである。
【００３１】
各チャネルコントローラモジュール３１５Ａ、３１５Ｂはそれぞれ、メモリアクセス要求が向けられるメモリアドレスを決定するように規定されているチャネルデコーダ３１７Ａ、３１７Ｂを含んでいる。チャネルデコーダ３１７Ａ、３１７Ｂはさらに、矢印１１７Ａ１、１１７Ａ２、１１７Ｂ１、１１７Ｂ２によって示されるように、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄのうちの１つであるアービトレーションモジュールであって、複数のメモリバンク１０９Ａ〜１０９Ｄのうちの決定されたメモリアドレスを含んでいる１つのメモリバンクに接続されるアービトレーションモジュールにメモリアクセス要求を向けるように規定されている。
【００３２】
図３の例では、メモリアクセス要求が、第１のメモリバンク１０９Ａ内のメモリアドレスに向けられているのであれば、矢印１１７Ａ１によって示されるように、第１のチャネルコントローラモジュール３１５Ａにおけるチャネルデコーダ３１７Ａは、メモリアクセス要求を第１のアービトレーションモジュール１０７Ａへ向ける。メモリアクセス要求が第２のメモリバンク１０９Ｂ内のメモリアドレスに向けられているのであれば、矢印１１７Ａ２によって示されるように、第１のチャネルコントローラモジュール３１５Ａにおけるチャネルデコーダ３１７Ａは、メモリアクセス要求を第２のアービトレーションモジュール１０７Ｂへ向ける。メモリアクセス要求が第３のメモリバンク１０９Ｃ内のメモリアドレスに向けられているのであれば、矢印１１７Ｂ１によって示されるように、第２のチャネルコントローラモジュール３１５Ｂにおけるチャネルデコーダ３１７Ｂは、メモリアクセス要求を第３のアービトレーションモジュール１０７Ｃへ向ける。そして、メモリアクセス要求が第４のメモリバンク１０９Ｄ内のメモリアドレスに向けられているのであれば、矢印１１７Ｂ２によって示されるように、第２のチャネルコントローラモジュール３１５Ｂにおけるチャネルデコーダ３１７Ｂは、メモリアクセス要求を第４のアービトレーションモジュール１０７Ｄへ向ける。
【００３３】
チャネルデコーダ３１７Ａ、３１７Ｂとこれらが接続されているアービトレーションモジュール１０７Ａ〜１０７Ｄとの間のデータ通信は、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って実行されることが理解されるべきである。したがって、チャネライザモジュール１０５は、所与のデータバスサイズおよび所与のクロック周波数で動作しているメモリシステムが、異なるデータバスサイズおよび異なるクロック周波数において動作するコンピューティングデバイスによるアクセスを可能にするための、データバスサイズおよびクロック周波数アダプタとして動作することが理解されるべきである。各アービトレーションモジュール１０７Ａ〜１０７Ｄは、メモリアクセス衝突を回避するように、その接続しているメモリバンク１０９Ａ〜１０９Ｄへのアクセスを制御するように規定されている。１つの実施形態では、各メモリバンク１０９Ａ〜１０９Ｄは、一度に１つのアクセス動作を取り扱うように規定されている。この実施形態では、各アービトレーションモジュール１０７Ａ〜１０７Ｄは、アクセスしているリソースが、データバス１１１を経由した第１のメモリアクセサ１０１であるか、または、チャネライザモジュール１０５を経由した第２のメモリアクセサ１０３であるかに関わらず、接続されているメモリバンク１０９Ａ〜１０９Ｄが、一度に１つのみのコンピューティングリソースによってアクセスされることを保証するように動作する。
【００３４】
前述した記載は、データ格納、すなわち、書込動作を実行するためのメモリアクセス制御モジュール２０３を取り扱った。ロード動作、すなわち読出動作中、メモリアクセス制御モジュール２０３は、第１のメモリアクセサ１０１または第２のメモリアクセサ１０３の何れかから、到来するメモリアクセス要求を受信し、ロードされるべきターゲットとされたデータのメモリアドレスを決定し、要求されたデータを取得し、返送する。特に、第１のメモリアクセサ１０１が、メモリアクセス制御モジュール２０３にデータロード要求を出し、デコーダ３０１は、このデータがロードされるべきアドレスを決定し、対応するメモリバンク１０９Ａ〜１０９Ｄを担当するアービトレーションモジュール１０７Ａ〜１０７Ｄへデータロード要求を送信する。その後、アービトレーションモジュール１０７Ａ〜１０７Ｄは、要求されたデータを返送するようにそのメモリバンク１０９Ａ〜１０９Ｄへ指示する。要求されたデータは、その後、第１のメモリアクセサ１０１へ返信される。
【００３５】
メモリアクセス制御モジュール２０３のチャネライザモジュール１０５側では、ロード動作中、適切なアービトレーションモジュール１０７Ａ〜１０７Ｄが、要求されたデータを返送するように、メモリバンク１０９Ａ〜１０９Ｄに対して指示するだろう。要求されたデータは、その後、矢印３２９Ａ、３２９Ｂによって示されるように、ターゲットとされたアービトレーションモジュール１０７Ａ〜１０７Ｄおよびメモリバンク１０９Ａ〜１０９Ｄが関連付けられているデータチャネルを担当するチャネルコントローラモジュール３１５Ａ、３１５Ｂ内で、ロードＭＵＸ３２１Ａ、３２１Ｂを経由してデータバッファ３１９Ａ、３１９Ｂへ送信される。矢印３３１Ａ／３３５Ａ、３３１Ｂ／３３５Ｂによって示されるように、要求されたデータは、データバッファ３１９Ａ、３１９Ｂから、データ転送コントローラ３０９へ送信される。
【００３６】
メモリバンク１０９Ａ〜１０９Ｄからロードされたデータは、第１のデータバスビットサイズｂｓ１および第１のクロック周波数ｃｌｋ１に従って、メモリバンク１０９Ａ〜１０９Ｄからデータ転送コントローラ３０９へ送信されることが理解されるべきである。データ転送コントローラ３０９は、メモリバンク１０９Ａ〜１０９Ｄからロードされたデータを第２のデータバスビットサイズｂｓ２になるように結合し、結合したこのデータを、第２のクロック周波数ｃｌｋ２に従って第２のデータインタフェース１０６まで送信するように規定されている。図３の例で、矢印３５１によって示されるように、結合したデータは、データ転送コントローラ３０９から第１のロード／格納ＭＵＸ３１１へ送信される。結合したデータは、矢印３４３および３４５によって示されるように、第１のロード／格納ＭＵＸ３１１から、データＦＩＦＯ３０７を経由して第２のロード／格納ＤＥＭＵＸ３１３へ送信される。結合したされたデータは、その後、矢印３４７によって示されるように、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従って、第２のロード／格納ＤＥＭＵＸ３１３からバスコントローラ３０３へ送信される。その後、バスコントローラ３０３は、結合したデータを、第２のデータバスビットサイズｂｓ２および第２のクロック周波数ｃｌｋ２に従って、第２のデータインタフェース１０６を経由して第２のメモリアクセサ１０３へ送信する。
【００３７】
図３に図示されるような１つの実施形態では、複数のアービトレーションモジュール１０７Ａ〜１０７Ｄの数は４つであり、複数のメモリバンク１０９Ａ〜１０９Ｄの数は４つであり、データチャネルの数は２つ、すなわち、チャネルコントローラモジュール３１５Ａ、３１５Ｂの数は２つであり、第２のデータバスビットサイズｂｓ２は、第１のデータバスビットサイズｂｓ１の２倍であり、第１のクロック周波数ｃｌｋ１は、第２のクロック周波数ｃｌｋ２の２倍である。この実施形態の１つの事例では、第２のデータバスビットサイズｂｓ２は、６４ビットであり、第１のデータバスビットサイズｂｓ１は、３２ビットである。しかしながら、メモリアクセス制御モジュール２０３のその他の実施形態は、実質的に任意の数のアービトレーションモジュールおよびメモリバンクを含み得、第１のデータバスビットサイズと第２のデータバスビットサイズとの間の整数倍に対応する任意の数のチャネルコントローラモジュールを含み得ることが認識されるべきである。
【００３８】
図４Ａは、本発明の１つの実施形態において、メモリへのアクセスを制御するために、格納動作中、メモリアクセス制御モジュール２０３を動作させるための方法のフローチャートを図示する。この方法は、第１のデータバスビットサイズ（ｂｓ１）と第１のクロック周波数（ｃｌｋ１）とに従って、第１のデータインタフェース（１０４）から第１のメモリアクセス要求を受信するための動作４０１を含んでいる。この方法はまた、第１のメモリアクセス要求によって指定されたメモリバンク（１０９Ａ〜１０９Ｄ）を担当するアービトレーションモジュール（１０７Ａ〜１０７Ｄ）へ第１のメモリアクセス要求を、第１のデータバスビットサイズ（ｂｓ１）と第１のクロック周波数（ｃｌｋ１）とに従って、送信するための動作４０３を含んでいる。この方法はまた、第２のデータバスビットサイズ（ｂｓ２）と第２のクロック周波数（ｃｌｋ２）とに従って、第２のデータインタフェース（１０６）から第２のメモリアクセス要求を受信するための動作４０５を含んでいる。第２のメモリアクセス要求は、データ格納要求である。第２のデータバスビットサイズ（ｂｓ２）は、第１のデータバスビットサイズ（ｂｓ１）の整数倍である。第１のクロック周波数（ｃｌｋ１）は、第２のクロック周波数（ｃｌｋ２）の整数倍である。
【００３９】
この方法はさらに、第２のデータバスビットサイズ（ｂｓ２）の第２のメモリアクセス要求を、第１のデータバスビットサイズ（ｂｓ１）のデータセグメントへ分割するための動作４０７を含んでいる。この方法はまた、第１のクロック周波数（ｃｌｋ１）に従って、第１のデータバスビットサイズ（ｂｓ１）のデータセグメントによって指定されたメモリバンク（１０９Ａ〜１０９Ｄ）を担当するアービトレーションモジュール（１０７Ａ〜１０７Ｄ）へ、第１のデータバスビットサイズ（ｂｓ１）の各データセグメントを送信するための動作４０９を含んでいる。第１のデータバスビットサイズ（ｂｓ１）の各データセグメントは、その指定されたメモリバンク（１０９Ａ〜１０９Ｄ）を担当するアービトレーションモジュール（１０７Ａ〜１０７Ｄ）へ、個別のデータチャネルを介して送信される。また、各データチャネルは、それぞれ異なるメモリバンク（１０９Ａ〜１０９Ｄ）のグループと通信する。
【００４０】
一例である実施形態では、第１のデータインタフェース（１０４）がコンピュータプロセッサに接続され、第２のデータインタフェース（１０６）がシステムバスマスタに接続されている。また、一例である実施形態では、第２のデータバスビットサイズ（ｂｓ２）は、第１のデータバスビットサイズ（ｂｓ１）の２倍である。この例である実施形態の１つの事例では、第１のデータバスビットサイズは３２ビットであり、第２のデータバスビットサイズは６４ビットである。また、一例である実施形態では、第１のクロック周波数（ｃｌｋ１）は、第２のクロック周波数（ｃｌｋ２）の２倍である。一例である実施形態では、メモリは、４つのアービトレーションモジュール（１０７Ａ〜１０７Ｄ）と４つのメモリバンク（１０９Ａ〜１０９Ｄ）を含んでおり、データチャネルの数は２つであり、第２のデータバスビットサイズ（ｂｓ２）は、第１のデータバスビットサイズ（ｂｓ１）の２倍であり、第１のクロック周波数（ｃｌｋ１）は、第２のクロック周波数（ｃｌｋ２）の２倍である。さらに、一例である実施形態では、この方法は、第２のメモリアクセサ（１０３）からの第２のメモリアクセス要求のデータセグメントに比べて、第１のメモリアクセサ（１０１）からの第１のメモリアクセス要求に対してより高いアクセス優先度を与えるようにアービトレーションモジュール（１０７Ａ〜１０７Ｄ）を動作させることを含んでいる。
【００４１】
図４Ｂは、本発明の１つの実施形態に従って、ロード動作中、メモリアクセス制御モジュール２０３を動作させるための図４Ａの方法に続くフローチャートを図示する。この方法は、第２のデータインタフェース（１０６）から第３のメモリアクセス要求を第２のデータバスビットサイズ（ｂｓ２）と第２のクロック周波数（ｃｌｋ２）とに従って、受信するための動作４１１を含んでいる。第３のメモリアクセス要求は、データロード要求、すなわち、データ読み出し要求である。この方法はまた、第３のメモリアクセス要求によってアドレスされたデータを、対応する複数のアービトレーションモジュール（１０７Ａ〜１０７Ｄ）を経由して複数のメモリバンク（１０９Ａ〜１０９Ｄ）から第１のデータバスビットサイズ（ｂｓ１）と第１のクロック周波数（ｃｌｋ１）とに従って、取得するための動作４１３を含んでいる。この方法はまた、複数のメモリバンク（１０９Ａ〜１０９Ｄ）から受信されたデータを、第２のデータバスビットサイズ（ｂｓ２）となるように結合するための動作４１５を含んでいる。この方法はまた、結合した第２のデータバスビットサイズ（ｂｓ２）のデータを、第２のクロック周波数（ｃｌｋ２）に従って、第２のデータインタフェース（１０６）へ送信するための動作４１７を含んでいる。
【００４２】
前述したものに基づいて、本明細書に開示されたメモリアクセス制御モジュール２０３は、プロセッサメモリアクセス動作と干渉することなく、外部のダイレクトメモリアクセス（ＤＭＡ）エンジンによる直接密結合メモリへのアクセスを可能にするためのシステムおよび方法を提供することが認識されるべきである。以下では、本明細書に開示されたメモリアクセス制御モジュール２０３は、より簡単な回路タイミングクロージャと、より高いパフォーマンスのメモリアクセスとを提供する。また、メモリアクセス制御モジュール２０３は、ファームウェア透過型、すなわち、ファームウェアフレンドリである。
【００４３】
前述したものを考慮して、メモリアクセス制御モジュール２０３は、複数のメモリバンク１０９Ａ〜１０９Ｄ間でデータストレージをインタリーブするように機能し得ることが理解されるべきである。例えば、１つの実施形態では、メモリバンク１０９Ａおよび１０９Ｃは、指定可能なメモリ範囲のうちの下半分をカバーし、メモリバンク１０９Ｂおよび１０９Ｄは、指定可能なメモリ範囲のうちの上半分をカバーし得る。第２のデータバスビットサイズｂｓ２の各データ通信は、第１のデータバスビットサイズｂｓ１の２つのデータセグメントへ分離される。その後、第１のデータバスビットサイズｂｓ１の第１のデータセグメントは、第１のチャネル制御モジュール３１５Ａを介して、第１のメモリバンク１０９Ａまたは第３のメモリバンク１０９Ｃの何れかへ送信される。そして、第１のデータバスビットサイズｂｓ１の第２のデータセグメントは、第２のチャネル制御モジュール３１５Ｂを介して、第２のメモリバンク１０９Ｂまたは第４のメモリバンク１０９Ｄの何れかへ送信される。このように、第２のデータインタフェース１０６を介して到来するデータは、前半であるメモリバンク１０９Ａ、１０９Ｃと、後半であるメモリバンク１０９Ｂ、１０９Ｄとの間でインタリーブされる。また、このようにして、アクセサ２（１０３）からの１つのｂｓ２アクセス（下半分または上半分）が並列して行われ得る。
【００４４】
メモリアクセス制御モジュール２０３はまた、リードプリフェッチおよびライトバッファ機能を提供する。さらに詳しくは、第１のクロック周波数ｃｌｋ１は、例えば２倍等の第２のクロック周波数ｃｌｋ２の整数倍であるので、第２のクロック周波数ｃｌｋ２の１サイクルにつき整数倍の回数分だけ第１のクロック周波数ｃｌｋ１に従ったリードデータのプリフェッチを試みることができる。また、データ転送コントローラ３０９および多くのチャネルコントローラモジュール３１５Ａ、３１５Ｂによって提供された多くのデータチャネルによって、各データチャネルを介して独立して読出要求の一部分をプリフェッチすることが可能である。
【００４５】
メモリアクセス制御モジュール２０３は、例えば１０１、１０３などの多くのメモリアクセサによる、共有メモリの異なる部分、すなわち、異なるメモリバンク１０９Ａ〜１０９Ｄへの同時アクセスを提供することが理解されるべきである。したがって、メモリアクセス制御モジュール２０３は、１）多くのコンピューティングリソースによる共有メモリへの同時要求、２）共有メモリと、共有メモリにアクセスする多くのコンピューティングリソースとの間のクロック同期問題、３）共有メモリと、共有メモリにアクセスする多くのコンピューティングリソースとの間のデータバスビットサイズ差、および４）共有メモリの異なる部分への多くのコンピューティングリソースによる同時アクセスを管理するように規定されている。
【００４６】
本明細書に記載された発明は、コンピュータ読取可能な媒体上のコンピュータ読取可能なコードとして具体化され得る。例えば、コンピュータ読取可能なコードは、メモリアクセス制御モジュール２０３に対応する１つまたは複数のレイアウトが記憶されるレイアウトデータファイルを含み得る。本明細書において言及されたコンピュータ読取可能な媒体は、コンピュータシステムによってその後読みだされ得るデータを記憶し得る任意のデータ記憶デバイスである。コンピュータ読取可能な媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読取専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、およびその他の光学的および非光学的なデータ記憶デバイスを含む。コンピュータ読取可能な媒体はまた、結合されたコンピュータシステムのネットワークを介して分散され得、これにより、コンピュータ読取可能なコードが分散して記憶され実行される。
【００４７】
本発明の一部を形成する、本明細書に記載された動作の何れかは、有用なマシン動作である。本発明はまた、これら動作を実行するためのデバイスまたは装置に関連する。この装置は、特に、例えば特別目的コンピュータなどの、必要とされる目的のために構築され得る。特別目的コンピュータとして規定されている場合、このコンピュータはまた、特別目的のための動作を可能にしながら、その他の処理、プログラム実行、または、特別目的の一部分ではないルーチンを実行し得る。あるいは、これら動作は、コンピュータメモリやキャッシュに記憶された、または、ネットワークを介して取得された、１つまたは複数のコンピュータプログラムによって選択的に起動または設定される汎用コンピュータによって処理され得る。データが、ネットワークを介して取得された場合、このデータは、例えばコンピューティングリソースのクラウドなどの、ネットワーク上におけるその他のコンピュータによって処理され得る。
【００４８】
本発明の実施形態はまた、データを１つの状態から別の状態へと変換するマシンとして定義され得る。このデータは、電子的信号および電子的操作データとして表され得る物品等である。変換されたデータは、ある場合には、ディスプレイ上に視覚的に表示され、データの変換からの結果である物理的な物体を表わす。変換されたデータは、一般的な形式で、記憶装置に保存されるか、または、有体物の構築または表現を可能にする特定のフォーマットで保存され得る。いくつかの実施形態では、操作は、プロセッサによって実行され得る。すなわち、そのような例において、プロセッサが、データを１つのものから別のものへと変換する。またさらに、本発明の方法は、ネットワークを介して接続され得る１つまたは複数のマシンまたはプロセッサによって処理され得る。各マシンは、データを１つの状態または物から、別の状態または物へ変換し、また、データを処理し、データを記憶装置に保存し、データをネットワークを介して送信し、結果を表示し、または、この結果を別のマシンへ通信し得る。
【００４９】
本明細書に開示されたようなメモリアクセス制御モジュール２０３は、半導体デバイスまたはチップの一部として製造され得ることがさらに理解されるべきである。例えば集積回路、メモリセル等などの半導体デバイスの製造では、一連の製造作業において、半導体ウェハ上に特徴的形状が形成される。ウェハは、シリコン基板上に形成された多層構造の形態を取る集積回路デバイスを含む。基板段階では、拡散領域を備えたトランジスタデバイスが形成される。続く（製造）段階では、相互接続メタル配線のパターンが形成され、トランジスタデバイスに電気的に接続されて、所望の集積回路デバイスが作られる。また、パターン形成された導電層は、誘電材料によって、その他の導電層から絶縁される。
【００５０】
本発明はいくつかの実施形態に関して記載されているが、当業者であれば、前述した明細書を読み、図面を検討すれば、さまざまな変形、追加、置換、およびその均等物を実現するであろうことが認識されるだろう。したがって、本発明は、そのようなすべての変形、追加、置換、および均等物を、本発明の精神および範囲内にあるものとして含むことが意図されている。
以下の項目は、国際出願時の特許請求の範囲に記載の要素である。
［項目１］
第１のデータ通信バスに対する第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ送受信のための第１のデータインタフェースと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従ったデータ通信のために前記第１のデータインタフェースと接続された複数のアービトレーションモジュールと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従ったデータ通信のために前記複数のアービトレーションモジュールと接続された複数のメモリバンクであって、前記複数のメモリバンクの各々が、データ通信のために前記複数のアービトレーションモジュールのうちのそれぞれ異なるアービトレーションモジュールと接続される、複数のメモリバンクと、
第２のデータ通信バスに対する第２のデータバスビットサイズおよび第２のクロック周波数に従ったデータ送受信のための第２のデータインタフェースであって、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの整数倍であり、前記第１のクロック周波数は、前記第２のクロック周波数の整数倍である、第２のデータインタフェースと、
前記第２のデータバスビットサイズおよび前記第２のクロック周波数に従ったデータ通信のために前記第２のデータインタフェースと接続されたチャネライザモジュールであって、前記チャネライザモジュールはさらに、前記第１のデータバスビットサイズおよび第１のクロック周波数に従ったデータ通信のために前記複数のアービトレーションモジュールと接続されるチャネライザモジュールとを備え、
前記チャネライザモジュールは、
ａ）格納動作中に、前記第２のデータインタフェースから受信したデータを、前記第２のデータバスビットサイズから、前記第１のデータバスビットサイズの複数個のデータセグメントに分割し、
ｂ）前記格納動作中に、前記第１のデータバスビットサイズのデータセグメントを、それぞれのデータチャネルに沿って、前記複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、前記複数のメモリバンクのうちの指定されたメモリバンクへ前記第１のクロック周波数に従って送信し、
ｃ）ロード動作中に、前記複数のアービトレーションモジュールのうちの対応するアービトレーションモジュールを経由して、前記複数のメモリバンクのうちの指定されたメモリバンクから前記第１のデータバスビットサイズおよび第１のクロック周波数に従ってデータを受信し、
ｄ）前記ロード動作中に、前記複数のメモリバンクから受信したデータを、前記第２のデータバスビットサイズへ結合し、前記結合された第２のデータバスビットサイズのデータを前記第２のクロック周波数に従って前記第２のデータインタフェースへ送信する
ように規定されている
メモリアクセス制御モジュール。
［項目２］
前記第１のデータ通信バスは、データ通信のためにコンピュータプロセッサと接続され、前記第２のデータ通信バスは、データ通信のためにシステムバスマスタと接続された、項目１に記載されたメモリアクセス制御モジュール。
［項目３］
前記第１のデータバスビットサイズは３２ビットであり、前記第２のデータバスビットサイズは６４ビットである、項目１に記載されたメモリアクセス制御モジュール。
［項目４］
前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍である、項目１に記載されたメモリアクセス制御モジュール。
［項目５］
前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、項目４に記載されたメモリアクセス制御モジュール。
［項目６］
前記第１のデータインタフェースと前記複数のアービトレーションモジュールとの間に接続された第１のデコーダをさらに備えており、
前記第１のデコーダは、メモリアクセス要求が向けられているメモリアドレスを決定するように規定され、
前記第１のデコーダは、、前記複数のアービトレーションモジュールのうちの、前記複数のメモリバンクのうちの前記決定されたメモリアドレスを含むメモリバンクに接続されるアービトレーションモジュールに前記メモリアクセス要求を向けるように規定されている、項目１に記載されたメモリアクセス制御モジュール。
［項目７］
前記第１のデータバスビットサイズのデータセグメントの数は、前記第２のデータバスビットサイズが前記第１のデータバスビットサイズよりも大きくなる整数倍の値に等しく、
前記データチャネルの数は、前記第２のデータバスビットサイズが前記第１のデータバスビットサイズよりも大きくなる整数倍の値に等しい、項目１に記載されたメモリアクセス制御モジュール。
［項目８］
各データチャネルは、前記複数のメモリバンクの一部分にアクセスするために接続され、前記複数のメモリバンクの各々が、前記データチャネルのうちの１つによってアクセス可能である、項目７に記載されたメモリアクセス制御モジュール。
［項目９］
各データチャネルは、メモリアクセス要求が向けられているメモリアドレスを決定するように規定されたチャネルデコーダを含み、
前記チャネルデコーダは、前記複数のアービトレーションモジュールのうちの１つのアービトレーションモジュールであって、前記複数のメモリバンクのうちの前記決定されたメモリアドレスを含むメモリバンクに接続されたアービトレーションモジュールに前記メモリアクセス要求を向けるように規定されている、項目８に記載されたメモリアクセス制御モジュール。
［項目１０］
前記複数のアービトレーションモジュールの数は４つであり、前記複数のメモリバンクの数は４つであり、前記データチャネルの数は２つであり、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍であり、前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、項目１に記載されたメモリアクセス制御モジュール。
［項目１１］
メモリへのアクセスを制御する方法であって、
第１のデータバスビットサイズおよび第１のクロック周波数に従って、第１のデータインタフェースから第１のメモリアクセス要求を受信することと、
前記第１のデータバスビットサイズおよび前記第１のクロック周波数に従って、前記第１のメモリアクセス要求によって指定されたメモリバンクを担当するアービトレーションモジュールに前記第１のメモリアクセス要求を送信することと、
第２のデータバスビットサイズおよび第２のクロック周波数に従って、第２のデータインタフェースから、データ格納要求である第２のメモリアクセス要求を受信することと、
前記第２のデータバスビットサイズの前記第２のメモリアクセス要求を、前記第１のデータバスビットサイズのデータセグメントへ分割することと、
前記第１のクロック周波数に従って、前記第１のデータバスビットサイズのデータセグメントによってアドレスされたメモリバンクを担当するアービトレーションモジュールへ前記第１のデータバスビットサイズの各データセグメントを送信することと、
を備えており、
前記第２のデータバスビットサイズは前記第１のデータバスビットサイズの整数倍であり、
前記第１のクロック周波数は前記第２のクロック周波数の整数倍である、
ことを特徴とする方法。
［項目１２］
前記第２のメモリアクセス要求の前記データセグメントに比べて前記第１のメモリアクセス要求に対してより高いアクセス優先度を与えるように、前記アービトレーションモジュールを動作させること、をさらに備える項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１３］
前記第２のデータバスビットサイズおよび前記第２のクロック周波数に従って、前記第２のデータインタフェースからデータロード要求である第３のメモリアクセス要求を受信することと、
前記第１のデータバスビットサイズおよび第１のクロック周波数に従って、前記第３のメモリアクセス要求によって指定されたデータを複数のメモリバンクから、対応する複数のアービトレーションモジュールを経由して取得することと、
前記複数のメモリバンクから受信した前記データを、前記第２のデータバスビットサイズとなるように結合することと、
前記結合された第２のデータバスビットサイズのデータを、前記第２のクロック周波数に従って前記第２のデータインタフェースへ送信することと、
をさらに備える項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１４］
前記第１のデータインタフェースは、コンピュータプロセッサと接続され、
前記第２のデータインタフェースは、システムバスマスタと接続されている、項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１５］
前記第１のデータバスビットサイズは３２ビットであり、前記第２のデータバスビットサイズは６４ビットである、項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１６］
前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍である、項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１７］
前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１８］
前記第１のデータバスビットサイズの各データセグメントは、それぞれ異なるデータチャネルを介して、前記指定されたメモリバンクを担当するアービトレーションモジュールへ送信される、項目１１に記載されたメモリへのアクセスを制御する方法。
［項目１９］
各データチャネルは、それぞれ異なるメモリバンクのグループと通信する、項目１８に記載されたメモリへのアクセスを制御する方法。
［項目２０］
前記メモリは、４つのアービトレーションモジュールと４つのメモリバンクを含み、前記データチャネルの数は２つであり、前記第２のデータバスビットサイズは、前記第１のデータバスビットサイズの２倍であり、前記第１のクロック周波数は、前記第２のクロック周波数の２倍である、項目１８に記載されたメモリへのアクセスを制御する方法。
【図１】
0006353843.tif 000002
【図２】
0006353843.tif 000003
【図３】
0006353843.tif 000004
【図４Ａ】
0006353843.tif 000005
【図４Ｂ】
0006353843.tif 000006