(57)【要約】  ＤＲＡＭコントローラ（１０３）は、それぞれが、個々のＮビットインタフェース（例えば６４ビットインタフェース）を処理することが可能な２つのサブコントローラ（４０６，４０４）を備えうる。各サブコントローラは、論理１２８ビットデータパスを制御するために、制御ロジックからみて（２×Ｎ）ビット（例えば１２８ビット）に対応可能にも設定可能である。各サブコントローラは、合同モードにおいては、見かけ上、（２×Ｎ）ビットのチャンクのデータを処理する（すなわち、１２８ビットデータパス全体を処理する）ように論理的に動作する。実際の完全な帯域幅は、サブコントローラの一方に、コマンドと、各（２×Ｎ）ビットのデータのチャンクの最初のＮビット部分とを処理させ、もう一方のサブコントローラに、コマンドの「コピー」と各（２×Ｎ）ビットのデータのチャンクの対応する残りのＮビット部分とを処理させることで実現される。ＢＩＯＳが、２つのＤＲＡＭコントローラを合同モードで動作するように構成および初期化したら、ＢＩＯＳとすべてのソフトウェアは、１つの（２×Ｎ）ビット幅チャネルにアクセスするために２つのメモリコントローラが使用されていることを考慮する必要がなくなる。
2010537311.tif 000002
【特許請求の範囲】
【請求項１】
（２×Ｎ）ビットデータパス（Ｎは正の整数）を有するメモリチャンネルにアクセスする方法であって、
前記メモリチャンネルを介して、（２×Ｎ）ビットのデータのチャンクを送信および／または受信するために、Ｎビットデータパスを有する第１のメモリコントローラ（４０６）にアクセス情報を送信するステップと、
Ｎビットデータパスを有する第２のメモリコントローラ（４０４）に前記アクセス情報をコピーするステップと、
前記アクセス情報の送信、および前記アクセス情報のコピーに応答して、
前記第１のメモリコントローラが、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの最初のＮビット部分を送信および／または受信するステップと、
前記第２のメモリコントローラが、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの残りのＮビット部分を送信および／または受信するステップとを含む方法。
【請求項２】
前記第１のメモリコントローラが、前記第１のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第１の物理メモリ（３０４）との間で、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの前記最初のＮビット部分を送信および／または受信するステップと、
前記第２のメモリコントローラが、前記第２のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第２の物理メモリ（３０２）との間で、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの前記残りのＮビット部分を送信および／または受信するステップとを更に含む、請求項１に記載の方法。
【請求項３】
前記アクセス情報の送信および前記アクセス情報のコピーの前に、前記第１のメモリコントローラおよび前記第２のメモリコントローラを合同モードで動作するように構成するステップと、
前記第１のメモリコントローラおよび前記第２のメモリコントローラを有するシステムを初期化するためのファームウェア命令を実行するステップとを更に含み、
前記ファームウェア命令を実行する前記ステップは、前記第１のメモリコントローラおよび前記第２のメモリコントローラを構成するステップが含まれる、請求項１に記載の方法。
【請求項４】
前記第１のメモリコントローラにアクセス情報を送信する前記ステップは、アドレス情報を送信するステップを含み、
前記方法は、
前記アドレス情報に対応する１つ以上の（２×Ｎ）ビットのデータのチャンクを前記第１のメモリコントローラに送信して、前記アドレス情報に従って前記１つ以上の（２×Ｎ）ビットのデータのチャンクを記憶するステップと、
前記アドレス情報に対応する前記１つ以上の（２×Ｎ）ビットのデータのチャンクを、前記第２のメモリコントローラに複製するステップとを更に含む、請求項１に記載の方法。
【請求項５】
前記第１のメモリコントローラが、前記第１のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第１の物理メモリに、自身のＮビットデータパスを介して、前記アドレス情報に対応する前記１つ以上の（２×Ｎ）ビットのデータのチャンクのそれぞれの最初のＮビット部分を送信するステップと、
前記第２のメモリコントローラが、前記第２のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第２の物理メモリに、自身のＮビットデータパスを介して、前記アドレス情報に対応する前記１つ以上の（２×Ｎ）ビットのデータのチャンクのそれぞれの残りのＮビット部分を送信するステップと、を更に有する請求項４に記載の方法。
【請求項６】
メモリシステムであって、
Ｎビットデータパスを有し、（２×Ｎ）ビットメモリチャンネルを介して、対応する（２×Ｎ）ビットのデータのチャンクを送信および／または受信するための、第１のタイプのアクセス情報を受信するように構成された第１のメモリコントローラ（１０３，４０６）と、
Ｎビットデータパスを有する第２のメモリコントローラ（１０３，４０４）と、
前記第１のメモリコントローラおよび前記第２のメモリコントローラに結合され、前記第１のメモリコントローラが受け取った前記第１のタイプのアクセス情報を前記第２のメモリコントローラに複製するように動作可能な制御ブロック（４１０）とを備え、
前記第１のメモリコントローラは、前記受け取った第１のタイプのアクセス情報に従って、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの最初のＮビット部分を送信および／または受信するように動作可能であり、前記第２のメモリコントローラは、前記複製された第１のタイプのアクセス情報に従って、自身のＮビットデータパスを介して、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの残りのＮビット部分を送信および／または受信するように動作可能であるメモリシステム。
【請求項７】
前記第１のメモリコントローラおよび前記第２のメモリコントローラはそれぞれ、個々のＮビットメモリチャネルを介して、個々のＮビットのデータのチャンクを送信および／または受信するための、第２のタイプのアクセス情報をそれぞれ受信するように更に構成され、
前記第１のメモリコントローラは、自身が受信した第２のタイプのアクセス情報に従って、自身のＮビットデータパスを介して、自身の個々のＮビットのデータのチャンクを送信および／または受信するように動作可能であり、前記第２のメモリコントローラは、自身が受信した第２のタイプのアクセス情報に従って、自身のＮビットデータパスを介して、自身の個々のＮビットのデータのチャンクを送信および／または受信するように動作可能である、請求項６に記載のメモリシステム。
【請求項８】
前記第１のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第１のメモリモジュール（３０４）と、
前記第２のメモリコントローラの前記Ｎビットデータパスに結合されたＮ本のデータ線を有する第２のメモリモジュール（３０２）とを更に備え、
前記第１のメモリコントローラは、自身のＮビットデータパスを介して、前記第１のメモリモジュールとの間で、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの最初のＮビット部分を送信および／または受信するように動作可能であり、
前記第２のメモリコントローラは、自身のＮビットデータパスを介して、前記第２のメモリモジュールとの間で、前記（２×Ｎ）ビットのデータのチャンクのそれぞれの残りのＮビット部分を送信および／または受信するように動作可能である、請求項６に記載のメモリシステム。
【請求項９】
前記第１のメモリコントローラおよび前記第２のメモリコントローラは、
１つの（２×Ｎ）ビット幅デュアルチャンネルメモリコントローラ、または
２つのＮビット幅シングルチャネルメモリコントローラの一方として動作可能である、請求項６に記載のメモリシステム。
【請求項１０】
請求項６乃至９のいずれか１項に記載のメモリシステムを有するシステム（１００）であって、前記システムは、前記制御ブロックによって前記第１のメモリコントローラおよび前記第２のメモリコントローラを構成するための命令を実行するように構成された処理ユニット（１０１）を更に備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、メモリシステムの分野に関し、より詳細には、複数のメモリチャネルの制御に関する。
【背景技術】
【０００２】
今日のコンピュータシステムが一層複雑さを増し、技術の進歩に伴ってプロセッサの速度が上がるのに伴い、多くの場合、帯域幅と所定のシステムのメモリのレーテンシに大きく依存するシステムの性能を最適化することが一層困難となっている。この結果、レーテンシを最小限に抑えてメモリにアクセスし、メモリ帯域幅を最大限に使用することで、システムの性能を改善および／または最適化することができる。メモリにアクセスし、所定のメモリ要求を完了するのに要する時間が長くなると、システムが低速化する。このため、アクセス時間の短縮および／またはメモリバスのスループットの全体的な向上が、システムの性能に寄与しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
デスクトップコンピュータ、グラフィックアダプタカード、ノートブックコンピュータなどの多くのシステムが、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を使用している。ＤＲＡＭデバイスは、特にスタティックランダムアクセスメモリ（ＳＲＡＭ）デバイスなどの他のメモリ技術に比べて多くの利点を有する。このような利点のうち最も重要なのは、記憶密度の高さと電力消費の低さである。しかし、このような利点は、その後アクセスが行われる度（例えば、各リード／ライトアクセスの前後など）に、ＤＲＡＭデバイス内のメモリセルや他のコンポーネントを準備する際に発生する、各種の時間遅延という代償を伴う。このような遅延の例としては、行のプリチャージ、行のリフレッシュおよび行のアクティブ化（activation）の実行に要する時間が挙げられる。このような遅延の発生時に、メモリオペレーションをより厳密に管理および制御するために、リード／ライトアクセス中に送信する追加のコマンドが追加されており、オーバーヘッドにつながっている。メモリ管理を中央処理装置に対してトランスペアレントにすることにより、システムの性能と設計を改善するために、メモリアクセスは、通常、専用のメモリコントローラによって管理されている。メモリコントローラは、メモリに出入りするデータのフローを制御し、行のプリチャージおよび行のアクティブ化などの必要なメモリ管理コマンドを実行する。
【０００４】
今日使用されているＤＲＡＭのほとんどがダブルデータレートシンクロナスＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）ファミリに属する。ＤＤＲ  ＳＤＲＡＭ（ＤＤＲ２とＤＤＲ３を含む）は、システムクロックに基づき、ストローブ信号の立ち上りエッジと立ち下りエッジでデータを転送することで、シングルデータレートＳＤＲＡＭよりも広い帯域幅を実現している。これにより、転送速度が実際上２倍に上がり、メモリバスの周波数を上げる必要なく、システムの性能を向上させることができる。データ転送速度に加えて、システムの性能は、メモリバス幅によっても影響される。一般に、バス幅は、メモリセルとの通信に使用可能な並列データ線の本数によって決まる。また、メモリコントローラのバス幅は、メモリコントローラが一度に管理可能なデータのビット数も決定する。バス幅は、初期のシステムでは８ビットから、より複雑なシステムやグラフィックカードでは２５６ビットの間の任意の範囲をとりうる。ＤＲＡＭの性能を（この場合はバス幅を指定する（addressing）ことによって）更に向上させるために、多くのマザーボードが、デュアルチャネルメモリを備えて構成されており、バス幅を事実上２倍に上げることによって、ＤＲＡＭとメモリコントローラ間のデータスループットを２倍に上げている。
【０００５】
デュアルチャネル（一般化すればマルチチャネル）技術は、主にボトルネックの問題に対処するために開発された。上で説明したように、メモリコントローラの構成は、通常、使用可能なＤＲＡＭのタイプと速度のほか、個々のメモリモジュールの最大サイズと、システム全体のメモリ容量とを決定する。メモリコントローラは、さまざまな組み込みの機能と能力を備えたものが存在するが、以前は、一般に、１つのメモリチャネルに対する制御を与えるように構成されていた。シングルチャネルメモリコントローラの利点として、低コストと柔軟性が挙げられる。しかし、シングルチャネルメモリコントローラは、その性能がＣＰＵの性能に追いつくのに十分でなければ、ボトルネックを発生させかねない。多くの場合、メモリコントローラが必要なデータフローを維持することができない場合、ＣＰＵは処理するデータがなく遊休状態に留まることがある。一般に、ＣＰＵバスのスループットが１つのメモリチャネルのバススループットを超える場合、シングルチャネルメモリのほとんどにこのボトルネックが発生する。
【０００６】
デュアルチャネル構成は、一般に、利用可能なメモリ帯域幅の量を事実上２倍に上げることによって、このボトルネックの問題を軽減する。１つのメモリチャネルに代えて、第２の並列のチャネルを追加して、２つのメモリチャネルを同時に動作させることによってボトルネックを低減させる。このため、デュアルチャネルアーキテクチャは、既存のＳＤＲＡＭ（ＤＤＲなど）技術を利用し、メモリがアクセスされる方法を向上させうる。デュアルチャネルメモリコントローラを使用するために、ＤＲＡＭデバイスは、通常、２つの異なるバスに分割されており、２つのメモリコントローラがこの２つのバスに並列にアクセス可能にして、バスの帯域幅の理論値を２倍に上げている。機能の視点から、チャネルの数を増やすこともできる（ＤＲＡＭの各セルに１つのチャネルを設けることが理想的な解決案である可能性がある）が、ワイヤの本数とラインのキャパシタンスのため、および並列のアクセス線の長さを等しくする必要があるため、チャネルの追加は通常、実装が極めて困難である。現在、ハイエンドのグラフィックサブシステムは、並列に動作する４つの６４ビット同時メモリコントローラを備えて実装され、合計２５６本のデータ線を一度に管理することができる。場合によっては、複数チャネルに対応するメモリコントローラは、「合同（gang）モード」で動作するように設計することができる。このモードでは、例えば、２つの６４ビットメモリコントローラを使用して、１２８ビットメモリデバイスにアクセスするか、あるいは１つの論理１２８ビットインタフェースを管理することができる。
【０００７】
信頼性の高いメモリサブシステムを必要とする多くのコンピューティングアーキテクチャが、動作中に発生しうるエラーを訂正するために、冗長メモリデバイスとエラー訂正コード（ＥＣＣ）とを使用している。ＥＣＣは、多くの場合、故障したメモリデバイスにより発生するエラーを訂正するためのマルチビットシンボルを有して構成されうる。このＥＣＣの構成／使用は、「チップキルＥＣＣ」と呼ばれることが多い。デュアルチャネル構成は、チップキルＥＣＣに関連がある。実際、チップキルＥＣＣは、チップキルＥＣＣが必要とする帯域幅が、メモリデバイスのデータパス幅を超えている場合に、複数チャネルに対応するメモリコントローラが、合同モードで動作するように構成されうる１つの理由となりうる。例えば、「×４チップキルＥＣＣに対応」とは、任意の４ビットシンボルが、完全に誤っている場合であっても訂正可能であることを指す。チップキルＥＣＣが使用する×４シンボルの個数が、必要なインタフェースのサイズ（すなわち、必要なデータパスの幅）を決定する。例えば、３２の×４シンボルが使用される場合、１２８ビットインタフェースが必要となりうる。
【０００８】
デュアルチャネルメモリに対応することによって、システム全体の性能を実質的に向上させることができるが、１つのチャネルのみに対応するメモリコントローラに比べて、デュアルチャネル構成を処理可能なメモリコントローラの設計の複雑さとサイズは、特にデュアルチャネルへの対応が、合同構成と非合同構成の両方で必要となる場合には不可避的に大きくなる。このため、面積効率を保持し、１つのメモリチャネルのみを処理するように構成されたメモリコントローラと比べて、さほど複雑化させることなく、デュアルチャネルメモリ制御が可能なメモリコントローラを設計および作製することが、課題となっている。
【０００９】
従来技術に関連するほかの対応する問題は、このような従来技術と、本明細書に記載の本発明とを比較することにより、当業者にとって明らかとなろう。
【課題を解決するための手段】
【００１０】
システム（コンピュータシステムなど）は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）バスに結合されたＤＲＡＭデバイスと、ＤＲＡＭデバイスへのアクセスを管理および制御するように構成されたＤＲＡＭコントローラとを備えうる。一組の実施形態では、ＤＲＡＭコントローラは、デュアルメモリチャネルを制御するための２つの独立したＤＲＡＭサブコントローラを備えうる。例えばチップキルＥＣＣによって要求されうる合同モードでは、この２つの独立したＤＲＡＭサブコントローラが、１つの（２×Ｎ）ビット（１２８ビットなど）幅のデュアルチャンネルＤＲＡＭコントローラとして動作し、非合同モードでは、２つの独立したＤＲＡＭサブコントローラは、２つのシングルチャンネルＮビット（６４ビットなど）幅のＤＲＡＭコントローラとして動作しうる。
【００１１】
一組の実施形態では、２つのＤＲＡＭサブコントローラは、同一に設計および実装され、それぞれが、基本的に６４ビットデータパスを処理する物理６４ビットインタフェースを備えて構成されうる。すなわち、各コントローラを通過するデータパスは６４ビットしか有さない。各ＤＲＡＭサブコントローラは、６４ビットインタフェースのみにアクセスするが、合同モードの動作中は、各ＤＲＡＭサブコントローラは、見かけ上、１２８ビットデータパスにアクセスしているように動作しうる。すなわち、各ＤＲＡＭサブコントローラは、見かけ上、１２８ビットのチャンクのデータを処理しているように論理的に振る舞うことができる。一組の実施形態では、各ＤＲＡＭサブコントローラは、メモリにアクセスするためにシステムが使用する、対応するポート（チャネル）を備えうる。ポートの一方（ＤＲＡＭサブコントローラの一方に対応）は、１つの１２８ビットＤＲＡＭコントローラとして構成されうる。その後、上記のように構成されたポートにおける全トラフィックが、（例えば、ＤＲＡＭサブコントローラに結合された、構成されたノースブリッジによって）もう一方のポートに複製されうる。このため、各ＤＲＡＭサブコントローラは、６４ビットの実際のデータパスにのみアクセスするが、制御ロジックからみて１２８ビットに対応可能となる。
【００１２】
一組の実施形態では、システム内でのデータの転送時に、メモリバスよりも幅の広い（例えば６４バイト幅など）キャッシュラインの読み出しと書き込みが行われることがある。６４ビットメモリチャネルの代わりに１２８ビットメモリチャネルを使用してキャッシュラインの読み出しおよび／または書き込みを行うことにより、１つのキャッシュラインへのデータの読み出しおよび／または書き込みに要するバースト転送のサイズを低減できる。したがって、１２８ビット幅のメモリチャネルのバースト転送のサイズは、６４ビット幅のメモリチャネルのバースト転送のサイズの半分である。このため、（物理的には６４ビット幅データパスのみを制御しているが）論理的には１２８ビット幅のメモリチャネルを制御していることを考慮に入れるために、各ＤＲＡＭサブコントローラは、バースト転送のためのビート数（すなわちサイズ）を調整しうる。
【００１３】
システムは、第１のメモリコントローラおよび第２のメモリコントローラと、第１のメモリモジュールおよび第２のメモリモジュールとを備えうる。各メモリコントローラは、個々の物理Ｎビットデータパスを有し、各メモリモジュールは、Ｎ本のデータ線（すなわちＮビットデータポート）を有し、第１のメモリコントローラのＮビットデータパスが、第１のメモリモジュールのＮビットデータパスに結合され、第２のメモリコントローラのＮビットデータパスが、第２のメモリモジュールのＮビットデータポートに結合されうる。システムは、２つの別個のメモリコントローラを使用してアクセスすることができる、（２×Ｎ）ビット幅のデータパスを有する論理メモリチャネルを使用するように構成されうる。２つのメモリコントローラを合同モードで動作するように構成するために、（例えばＢＩＯＳによって）構成情報が２つのメモリコントローラに書き込まれ、メモリコントローラの一方に対応するチャネルが、（２×Ｎ）ビット幅の論理メモリチャネルとして指定されうる。その後、指定されたチャネル、このため、このチャネルに対応するメモリコントローラへの全アクセスが、もう一方のメモリコントローラに同時にコピーされうる。このため、各メモリコントローラは、実際には個々のＮビットデータパスにアクセスしているが、見かけ上、（２×Ｎ）ビットコントローラのように動作しうる。
【００１４】
システムは、（２×Ｎ）ビット幅のメモリチャネルを介して、（２×Ｎ）ビットのデータのチャンクを送信および／または受信するために、指定されたメモリコントローラにメモリ要求を送信しうる。このメモリ要求は、もう一方のメモリコントローラに複製され、この要求に応答して、第１のメモリコントローラは、第１のメモリモジュールとの間で、（２×Ｎ）ビットのデータのチャンクのそれぞれの最初のＮビット部分を送信および／または受信し、第２のメモリコントローラは、第２のメモリモジュールとの間で、（２×Ｎ）ビットのデータのチャンクのそれぞれの残りのＮビット部分を送信および／または受信しうる。このため、データは、（２×Ｎ）ビットのチャンクでシステムに提供されうる。システムは、非合同モードで動作し、それぞれＮビット幅の２つの論理メモリチャネルを使用するように更に設定可能であり、このモードでは、２つのメモリコントローラが、それぞれ、自身の個々のＮビットデータパスを使用して各メモリチャネルを制御する。個々のメモリ要求が、メモリコントローラの両方、すなわち、メモリコントローラのために構成された２つの個々のポートのそれぞれに送信され、それぞれの特定のメモリコントローラのＮビットデータパスを介して個々にデータがアクセスされうる。
【図面の簡単な説明】
【００１５】
【図１】メモリバスを介したメモリへのアクセスを制御するように構成されたメモリコントローラを備える例示的なシステムのブロック図。
【図２】図１のメモリコントローラの一実施形態の部分論理ブロック図。
【図３】図２のメモリコントローラ構成の一実施形態を示すより詳細なブロック図。
【図４】２つの６４ビットメモリコントローラを使用して、１２８ビット論理メモリチャネルに対して１２８ビットデータが提供される構成の一実施形態を示すブロック図。
【発明を実施するための形態】
【００１６】
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
【００１７】
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
【００１８】
図１は、コンピュータシステムなど、基本の例示的なシステム１００のブロック図を示し、処理ユニット１００は、メモリコントローラ１０３に結合されたプロセッサコア１０１を備えて構成されている。一部の実施形態では、プロセッサコア１０１は、プロセッサコア１０１との間のデータフローを管理するように構成されたノースブリッジ１０７を介して、メモリコントローラ１０３に結合されうる。メモリコントローラ１０３は、メモリバス１１１に結合され、メモリコントローラ１０３は、メモリバス１１１を介して、処理ユニット１００とメモリ１０５との間のデータ交換を促すために、メモリ１０５へのアクセスを調整しうる。システム１００は、さまざまな方法で実装することができ、メモリコントローラによってメモリアクセスが制御される基本的な構成を示すために図示されていることを当業者は認めるであろう。
【００１９】
一組の実施形態では、メモリコントローラ１０３は、システム１００のニーズによって要求される一連の機能に対応するための、副次的な回路および／またはコンポーネント（レジスタなど）を備えてもよい。例えば、メモリコントローラ１０３は、メモリ１０５とプロセッサコア１０１間で転送中のデータをバッファするための各種バッファを備えても、サブ制御ブロックに分割されてもよい。同様に、メモリ１０５は、メモリバス１１１を介してメモリコントローラ１０３とインタフェースするように適合された、さまざまな構成の複数の記憶素子またはメモリデバイスを備えうる。各種の実施形態が可能であり、考察される。メモリ１０５はＤＲＡＭ（ダイナミックランダムアクセスメモリ）であり、このためメモリコントローラ１０３はＤＲＡＭコントローラである。より詳細には、システム１００は、ダブルデータレートＤＲＡＭ（ＤＤＲ  ＤＲＡＭ）（ＤＤＲ３メモリ（メモリ１０５）など）を備え、これがＤＤＲ３メモリコントローラ１０３によって制御されていてもよい。一組の実施形態では、ＤＲＡＭコントローラ１０３は、複数のチャンネルを介して（例えばデュアルチャネルを介して）、ＤＲＡＭデバイス１０５へのアクセスを管理および制御するように構成されうる。
【００２０】
両ＤＲＡＭチャンネルは、特定のサイズ（例えば６４ビット幅）を有しうる。このため、１つのＤＲＡＭチャンネルは、６４ビット幅でもよい。このため、２つの並列ＤＲＡＭチャンネルは、１２８ビットの実効バス幅を提供することができる。一部のシステム構成では、２つのＤＲＡＭチャンネルが、１つの論理１２８ビットインタフェースとして動作するように、好ましくは「合同」（ganged together）されうる。他の特定のシステム構成では、２つのＤＲＡＭチャンネルが、２つの独立した６４ビットチャンネルとして動作するように、好ましくは「合同解除」（unganged）されうる。両方のシステム構成に対応するには、小さなシングルチャンネル［バス］幅の独立性を保つ必要があり、上記の例の場合、これは、６４ビットの独立性を保つことである。本明細書に記載の実施形態では、１つのチャンネルが６４ビットのバス幅を有するが、別の実施形態では、１つのチャンネルのバス幅が異なってもよく、バス幅が６４ビットから増減する各種の実施形態およびシステム構成が可能であり、考察されることを留意すべきである。
【００２１】
一組の実施形態では、ＤＲＡＭ１０５は、複数の物理ＤＩＭＭ（デュアルインラインメモリモジュール）を備えうる。ＤＲＡＭコントローラ１０３によってアクセスされる論理ＤＩＭＭが、（合同；ギャングドモードのように）１つの１２８ビットインタフェースを形成するために並列に動作される２つの同一の物理６４ビットＤＩＭＭ、あるいは（非合同；アンギャングドモードのように）1つの物理６４ビットＤＩＭＭを有するように、システム１００が構成されうる。２つの６４ビット幅の論理ＤＩＭＭにアクセスできる能力を保持するために、独立した６４ビットチャンネルを保持するために、ＤＲＡＭコントローラ１０５は、２つのメモリサブコントローラを備えて構成されうる。図２に示すように、各メモリサブコントローラは、非合同モードにおいて、少なくとも個々のシングル６４ビット幅チャンネルを制御可能であり、そのうちの１本が、１２８ビットチャンネルも制御可能である。２つのメモリサブコントローラが合同モードで動作される場合、論理ＤＩＭＭは、２チャンネル幅となりうる。デュアルチャンネル論理ＤＩＭＭの各物理ＤＩＭＭは、同一サイズであり、同じタイミングパラメータを使用する必要があり、両メモリサブコントローラが、同じ情報によってプログラムされる。メモリサブコントローラが、６４ビットモードで動作される場合、論理ＤＩＭＭは、６４ビット物理ＤＩＭＭと等しくなり、対応する個々のメモリサブコントローラが各チャンネルを制御する。
【００２２】
図２に示すＤＲＡＭコントローラ２０３は、図１に示したＤＲＡＭコントローラ１０３の可能な一実施形態を示し、メモリチャネル０とメモリチャネル１をそれぞれ制御するためのメモリサブコントローラ２０４，２０６を有しうる。ＤＲＡＭコントローラ２０３は、メモリサブコントローラ２０４，２０６を、合同モードまたは非合同モードで動作させるように構成されうる。図２に示す実施形態では、メモリサブコントローラ２０６は、６４ビットデータパスに対応するように構成され、メモリサブコントローラ２０４は、６４ビットデータパス（非合同モード）、あるいは１２８ビットデータパスに対応するよう（合同モード）に構成されている。このため、非合同モードでは、メモリサブコントローラ２０４は、チャンネル０の６４ビットデータパスを制御し、メモリサブコントローラ２０６は、チャンネル１の６４ビットデータパスを制御しうる。合同モードでは、メモリサブコントローラ２０６が無効にされ、メモリサブコントローラ２０４が、両方のチャンネルを制御するために１２８ビットモードで動作されうる。しかし、これを行うためには、チャンネル１が、メモリサブコントローラ２０６によって制御されている（非合同モード）か、あるいはメモリサブコントローラ２０４によって制御されているか（合同モード）に応じて、チャンネル１の６４ビットデータパス出力を多重化する必要がある。このため、マルチプレクサ（ＭＵＸ）２０８が、合同モード信号を制御信号として使用して、個々の６４ビットデータパスを選択するように構成されうる。メモリサブコントローラ２０４，２０６が合同モードで動作されている場合、ＭＵＸ２０８は、６４ビットデータパス２１２を選択するように動作し、非合同モードで動作されている場合、ＭＵＸ２０８は、６４ビットデータパス２１０を選択するように動作しうる。
【００２３】
本実施形態のより詳細な図が図３に示される。メモリ１０５は、物理６４ビットＤＩＭＭ３０２，３０４を備えうる。ＤＩＭＭ３０２はＤＲＡＭサブコントローラ２０４のデータパスに結合され、ＤＩＭＭ３０４は出力ＭＵＸ３０６に結合されうる。図に示すように、例えば中央処理装置とＤＲＡＭサブコントローラ２０４，２０６との間をインタフェースするために、ノースブリッジ３１０が使用されうる。この実施形態では、合同モードの動作時に、ポート０が（例えばソフトウェアによって）１２８ビットコントローラとして構成されうる。この結果、ＤＲＡＭサブコントローラ２０４は、１２８ビットデータパスを有して構成され、ＤＲＡＭサブコントローラ２０４が合同モードで使用されるときに、ビット６３：０が（上で説明したように）チャンネル０に対応し、ビット１２７：６４がチャンネル１に対応しうる。このため、チャンネル１に対応する６４ビットデータパスが、ノースブリッジ３１０とＤＲＡＭサブコントローラ２０４，２０６との間でも多重化されうる。
【００２４】
非合同モードの動作時は、ＭＵＸ３０８を使用して、チャンネル（ポート）１に対応する、ノースブリッジ３１０から受け取った６４ビットデータが、ＤＲＡＭサブコントローラ２０６にルーティングされる。続いて、ＭＵＸ３０６を使用して、ＤＲＡＭコントローラ２０６からのデータが選択され、チャンネル１のＤＩＭＭ３０４に結合される。合同モードの動作時は、ＭＵＸ３０８を使用して、ポート１に対応する、ノースブリッジ３１０から受け取った６４ビットデータが、ＤＲＡＭサブコントローラ２０４に、ＤＲＡＭサブコントローラ２０４によって制御される１２８ビットデータパスのビット１２７：６４としてルーティングされる。続いて、ＭＵＸ３０６を使用して、ＤＲＡＭコントローラ２０４からのデータパスのビット１２７：６４が選択され、チャンネル１のＤＩＭＭ３０４に結合される。また、ＭＵＸ３０６を使用して、ＤＩＭＭ３０２，３０４にアドレス指定してこれらにアクセスするために使用されるアドレス／コマンド情報が選択される。非合同モードでは、ＭＵＸ３０６を使用して、ＤＲＡＭサブコントローラ２０６からのアドレスおよびコマンド情報が選択され、合同モードでは、ＭＵＸ３０６を使用して、ＤＲＡＭサブコントローラ２０４からのアドレスおよびコマンド情報が選択されうる。
【００２５】
上記は、ＤＲＡＭコントローラ１０３が、２つの独立した６４ビットチャンネル、または１つの１２８ビットチャンネル（一般化すると、２つの独立したＮビットチャンネル、または１つの＜２×Ｎ＞ビットチャンネル）にアクセスできるようにするための解決策となりうる。しかし、実際の１２８ビットデータパスを制御することによって真に１２８ビットに対応可能なＤＲＡＭサブコントローラを構成すると、ＤＲＡＭサブコントローラ２０４の専有面積が増大しうる。また、ソース同期型バスを実装することが大きな問題となるため、ＭＵＸ３０６とＭＵＸ３０８によって実行される多重化が課題となりうる。更に、もう一方の６４ビットチャンネル（すなわち、データビット１２７：６４に対応）のための追加のＤＩＭＭのＤＩＭＭタイプとメモリ範囲とを識別するために、１２８ビットインタフェースは、ＤＲＡＭサブコントローラ２０４が、構成レジスタにかなりのデータ量を記憶することを要求しうる。図３に示すように、このような構成は、ＤＲＡＭサブコントローラ２０４とＤＩＭＭ３０２，３０４間のほか、ＤＲＡＭサブコントローラ２０４とノースブリッジ３１０間にも、完全な１２８ビットデータパスを必要する。これは、ＤＲＡＭサブコントローラ２０６などの、非合同モードで動作する必要がある別のコントローラが存在する場合には実装が困難となりうる。
【００２６】
図４は、別の実施形態４００を示す。この実施形態では、ＤＲＡＭサブコントローラ４０４，４０６の両方が、独立して個々の６４ビットデータパスを制御するように構成される一方、協働して１つの１２８ビットデータパスを制御するようにも構成され、いずれのサブコントローラも、（図３に示す構成のように）実際の１２８ビットデータパスを備えて構成する必要がない。この実施形態では、独立したＤＲＡＭサブコントローラ４０４，４０６が、合同モードでは、１つの１２８ビット幅デュアルチャンネルＤＲＡＭコントローラとして、あるいは、非合同モードでは、２つのシングルチャンネル６４ビット幅ＤＲＡＭコントローラとして動作するように構成されうる。一般化すれば、ＤＲＡＭサブコントローラ４０４，４０６は、合同モードでは、１つの＜２×Ｎ＞ビット幅デュアルチャンネルＤＲＡＭコントローラとして、あるいは、非合同モードでは、２つのシングルチャンネルＮビット幅ＤＲＡＭコントローラとして動作するように構成されうる。合同モードでは、ＤＲＡＭサブコントローラ４０６とＤＲＡＭサブコントローラ４０４の両方が、同じ情報によってプログラムされうる。このため、ＤＲＡＭサブコントローラ４０４に対応する第１のレジスタの組に書き込まれた情報／データが、両チャンネル（ポート）に適用されうる。ＤＲＡＭサブコントローラ４０６に対応する、第２のレジスタの組に書き込まれた情報／データは無視されうる。リードオペレーションおよびライトオペレーションが、システムで使用されうるキャッシュラインのサイズに合わせて調整されうる。例えば、一組の実施形態では、６４バイトのキャッシュラインが使用されうる。６４ビットインタフェースでは、これは、８ビートのバーストデータ転送（または、８バースト長）となる。１２８ビットインタフェースでは、これは、４バースト長となる。
【００２７】
合同モード
図４に示した構成においては、合同モードの動作時に、ＤＲＡＭサブコントローラ４０６，４０４が、見かけ上、それぞれが個々に１２８ビットインタフェース全体を制御しているように動作するが、実際には、それぞれが１２８ビットインタフェースの半分を制御している。このため、合同モードで動作する場合でも、ＤＲＡＭサブコントローラ４０６はＤＩＭＭ３０４にアクセスし、ＤＲＡＭサブコントローラ４０４はＤＩＭＭ３０２にアクセスしうる。各サブコントローラは、バースト転送のビート数を調整し、アドレスマッピングも調整して、見かけ上、１２８ビットバス全体を制御しているように動作しうる。このように、ＤＲＡＭサブコントローラ４０４とＤＲＡＭサブコントローラ４０６を等しく設計および製造でき、多重化も不要であるため、図４に示した構成は、最適な解決策となりうる。
【００２８】
各サブコントローラは、基本的にＮビット（例えば６４ビット）のインタフェースを処理しうる。各コントローラを通過するデータパスも同じＮビットであり、本例では６４ビットである。このため、各サブコントローラは、それぞれ６４ビット（Ｎビット）インタフェースのみを処理するが、各サブコントローラが、論理１２８ビット（（２×Ｎ）ビット）データパスを制御するために、制御ロジックからみて１２８ビット（（２×Ｎ）ビット）に対応可能となりうる。換言すれば、各サブコントローラが、見かけ上、１２８ビット（（２×Ｎ）ビット）のチャンクのデータを処理する、すなわち、一度に１２８ビット（２×Ｎビット）のデータを送受信するように、論理的に振る舞うことができる。サブコントローラの一方（ＤＲＡＭサブコントローラ４０４など）に、１２８ビット（（２×Ｎ）ビット）のデータのチャンクのそれぞれの最初の６４ビット（Ｎビット）を処理させ、もう一方のサブコントローラ（ＤＲＡＭサブコントローラ４０６など）に、コマンドの第２の「コピー」と、データの対応する他の６４ビット（Ｎビット）（全１２８ビット（（２×Ｎ）ビット）のデータのチャンクのそれぞれの残りの半分を表す）とを処理させることによって、完全な帯域幅を実現することができる。その際、両サブコントローラは、見かけ上、１２８ビット（（２×Ｎ）ビット）データパス全体を処理しているように動作する。
【００２９】
一組の実施形態では、ＢＩＯＳが、１つの（２×Ｎ）ビット幅チャネルの制御が望ましい場合には、サブコントローラを、合同モードで動作するように構成および初期化し、２つのサブコントローラの一方に対応する一方のチャンネル（例えばＤＲＡＭサブコントローラ４０４に対応するチャンネル）が、使用される（２×Ｎ）ビット幅チャネルとして指定されうる。初期化が完了すると、ＢＩＯＳは、単に、指定したチャンネルにアクセスし、その際、指定したチャンネル（このため対応するサブコントローラ）に対してその後行われる構成アクセスがもう一方のサブコントローラに「複製（shadow）」される、すなわち、コピーされる（考えられる例外としては、特定の指定されたトレーニングレジスタが挙げられ、この場合、ＢＩＯＳが、各サブコントローラに個々に書き込み、サブコントローラが、それぞれのチャンネルで適切に動作することを確認する）。一般に、初期化が完了すると、ＢＩＯＳと（すべてのシステム）ソフトウェアが、サブコントローラが合同モードで動作していることを意識する必要がなくなる。（２×Ｎ）ビット幅のチャネルとして指定されたチャンネル（ＤＲＡＭサブコントローラ４０４に対応するチャンネルなど）のみがアクセスされ、特定されたチャンネルに対してその後行われる全アクセスが、ノースブリッジ４１０によって、もう一方のサブコントローラ（ＤＲＡＭサブコントローラ４０６など）にコピーされる。
【００３０】
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
【産業上の利用可能性】
【００３１】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
2010537311.tif 000003
【図２】
2010537311.tif 000004
【図３】
2010537311.tif 000005
【図４】
2010537311.tif 000006
【国際調査報告】
2010537311.tif 000007
2010537311.tif 000008
2010537311.tif 000009