JP2010537311A - データチャネルを制御するための最適な解決策 - Google Patents
データチャネルを制御するための最適な解決策 Download PDFInfo
- Publication number
- JP2010537311A JP2010537311A JP2010521846A JP2010521846A JP2010537311A JP 2010537311 A JP2010537311 A JP 2010537311A JP 2010521846 A JP2010521846 A JP 2010521846A JP 2010521846 A JP2010521846 A JP 2010521846A JP 2010537311 A JP2010537311 A JP 2010537311A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- memory
- memory controller
- data path
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System (AREA)
- Microcomputers (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
DRAMコントローラ(103)は、それぞれが、個々のNビットインタフェース(例えば64ビットインタフェース)を処理することが可能な2つのサブコントローラ(406,404)を備えうる。各サブコントローラは、論理128ビットデータパスを制御するために、制御ロジックからみて(2×N)ビット(例えば128ビット)に対応可能にも設定可能である。各サブコントローラは、合同モードにおいては、見かけ上、(2×N)ビットのチャンクのデータを処理する(すなわち、128ビットデータパス全体を処理する)ように論理的に動作する。実際の完全な帯域幅は、サブコントローラの一方に、コマンドと、各(2×N)ビットのデータのチャンクの最初のNビット部分とを処理させ、もう一方のサブコントローラに、コマンドの「コピー」と各(2×N)ビットのデータのチャンクの対応する残りのNビット部分とを処理させることで実現される。BIOSが、2つのDRAMコントローラを合同モードで動作するように構成および初期化したら、BIOSとすべてのソフトウェアは、1つの(2×N)ビット幅チャネルにアクセスするために2つのメモリコントローラが使用されていることを考慮する必要がなくなる。
Description
本発明は、一般に、メモリシステムの分野に関し、より詳細には、複数のメモリチャネルの制御に関する。
今日のコンピュータシステムが一層複雑さを増し、技術の進歩に伴ってプロセッサの速度が上がるのに伴い、多くの場合、帯域幅と所定のシステムのメモリのレーテンシに大きく依存するシステムの性能を最適化することが一層困難となっている。この結果、レーテンシを最小限に抑えてメモリにアクセスし、メモリ帯域幅を最大限に使用することで、システムの性能を改善および/または最適化することができる。メモリにアクセスし、所定のメモリ要求を完了するのに要する時間が長くなると、システムが低速化する。このため、アクセス時間の短縮および/またはメモリバスのスループットの全体的な向上が、システムの性能に寄与しうる。
デスクトップコンピュータ、グラフィックアダプタカード、ノートブックコンピュータなどの多くのシステムが、ダイナミックランダムアクセスメモリ(DRAM)を使用している。DRAMデバイスは、特にスタティックランダムアクセスメモリ(SRAM)デバイスなどの他のメモリ技術に比べて多くの利点を有する。このような利点のうち最も重要なのは、記憶密度の高さと電力消費の低さである。しかし、このような利点は、その後アクセスが行われる度(例えば、各リード/ライトアクセスの前後など)に、DRAMデバイス内のメモリセルや他のコンポーネントを準備する際に発生する、各種の時間遅延という代償を伴う。このような遅延の例としては、行のプリチャージ、行のリフレッシュおよび行のアクティブ化(activation)の実行に要する時間が挙げられる。このような遅延の発生時に、メモリオペレーションをより厳密に管理および制御するために、リード/ライトアクセス中に送信する追加のコマンドが追加されており、オーバーヘッドにつながっている。メモリ管理を中央処理装置に対してトランスペアレントにすることにより、システムの性能と設計を改善するために、メモリアクセスは、通常、専用のメモリコントローラによって管理されている。メモリコントローラは、メモリに出入りするデータのフローを制御し、行のプリチャージおよび行のアクティブ化などの必要なメモリ管理コマンドを実行する。
今日使用されているDRAMのほとんどがダブルデータレートシンクロナスDRAM(DDR SDRAM)ファミリに属する。DDR SDRAM(DDR2とDDR3を含む)は、システムクロックに基づき、ストローブ信号の立ち上りエッジと立ち下りエッジでデータを転送することで、シングルデータレートSDRAMよりも広い帯域幅を実現している。これにより、転送速度が実際上2倍に上がり、メモリバスの周波数を上げる必要なく、システムの性能を向上させることができる。データ転送速度に加えて、システムの性能は、メモリバス幅によっても影響される。一般に、バス幅は、メモリセルとの通信に使用可能な並列データ線の本数によって決まる。また、メモリコントローラのバス幅は、メモリコントローラが一度に管理可能なデータのビット数も決定する。バス幅は、初期のシステムでは8ビットから、より複雑なシステムやグラフィックカードでは256ビットの間の任意の範囲をとりうる。DRAMの性能を(この場合はバス幅を指定する(addressing)ことによって)更に向上させるために、多くのマザーボードが、デュアルチャネルメモリを備えて構成されており、バス幅を事実上2倍に上げることによって、DRAMとメモリコントローラ間のデータスループットを2倍に上げている。
デュアルチャネル(一般化すればマルチチャネル)技術は、主にボトルネックの問題に対処するために開発された。上で説明したように、メモリコントローラの構成は、通常、使用可能なDRAMのタイプと速度のほか、個々のメモリモジュールの最大サイズと、システム全体のメモリ容量とを決定する。メモリコントローラは、さまざまな組み込みの機能と能力を備えたものが存在するが、以前は、一般に、1つのメモリチャネルに対する制御を与えるように構成されていた。シングルチャネルメモリコントローラの利点として、低コストと柔軟性が挙げられる。しかし、シングルチャネルメモリコントローラは、その性能がCPUの性能に追いつくのに十分でなければ、ボトルネックを発生させかねない。多くの場合、メモリコントローラが必要なデータフローを維持することができない場合、CPUは処理するデータがなく遊休状態に留まることがある。一般に、CPUバスのスループットが1つのメモリチャネルのバススループットを超える場合、シングルチャネルメモリのほとんどにこのボトルネックが発生する。
デュアルチャネル構成は、一般に、利用可能なメモリ帯域幅の量を事実上2倍に上げることによって、このボトルネックの問題を軽減する。1つのメモリチャネルに代えて、第2の並列のチャネルを追加して、2つのメモリチャネルを同時に動作させることによってボトルネックを低減させる。このため、デュアルチャネルアーキテクチャは、既存のSDRAM(DDRなど)技術を利用し、メモリがアクセスされる方法を向上させうる。デュアルチャネルメモリコントローラを使用するために、DRAMデバイスは、通常、2つの異なるバスに分割されており、2つのメモリコントローラがこの2つのバスに並列にアクセス可能にして、バスの帯域幅の理論値を2倍に上げている。機能の視点から、チャネルの数を増やすこともできる(DRAMの各セルに1つのチャネルを設けることが理想的な解決案である可能性がある)が、ワイヤの本数とラインのキャパシタンスのため、および並列のアクセス線の長さを等しくする必要があるため、チャネルの追加は通常、実装が極めて困難である。現在、ハイエンドのグラフィックサブシステムは、並列に動作する4つの64ビット同時メモリコントローラを備えて実装され、合計256本のデータ線を一度に管理することができる。場合によっては、複数チャネルに対応するメモリコントローラは、「合同(gang)モード」で動作するように設計することができる。このモードでは、例えば、2つの64ビットメモリコントローラを使用して、128ビットメモリデバイスにアクセスするか、あるいは1つの論理128ビットインタフェースを管理することができる。
信頼性の高いメモリサブシステムを必要とする多くのコンピューティングアーキテクチャが、動作中に発生しうるエラーを訂正するために、冗長メモリデバイスとエラー訂正コード(ECC)とを使用している。ECCは、多くの場合、故障したメモリデバイスにより発生するエラーを訂正するためのマルチビットシンボルを有して構成されうる。このECCの構成/使用は、「チップキルECC」と呼ばれることが多い。デュアルチャネル構成は、チップキルECCに関連がある。実際、チップキルECCは、チップキルECCが必要とする帯域幅が、メモリデバイスのデータパス幅を超えている場合に、複数チャネルに対応するメモリコントローラが、合同モードで動作するように構成されうる1つの理由となりうる。例えば、「×4チップキルECCに対応」とは、任意の4ビットシンボルが、完全に誤っている場合であっても訂正可能であることを指す。チップキルECCが使用する×4シンボルの個数が、必要なインタフェースのサイズ(すなわち、必要なデータパスの幅)を決定する。例えば、32の×4シンボルが使用される場合、128ビットインタフェースが必要となりうる。
デュアルチャネルメモリに対応することによって、システム全体の性能を実質的に向上させることができるが、1つのチャネルのみに対応するメモリコントローラに比べて、デュアルチャネル構成を処理可能なメモリコントローラの設計の複雑さとサイズは、特にデュアルチャネルへの対応が、合同構成と非合同構成の両方で必要となる場合には不可避的に大きくなる。このため、面積効率を保持し、1つのメモリチャネルのみを処理するように構成されたメモリコントローラと比べて、さほど複雑化させることなく、デュアルチャネルメモリ制御が可能なメモリコントローラを設計および作製することが、課題となっている。
従来技術に関連するほかの対応する問題は、このような従来技術と、本明細書に記載の本発明とを比較することにより、当業者にとって明らかとなろう。
システム(コンピュータシステムなど)は、DRAM(ダイナミックランダムアクセスメモリ)バスに結合されたDRAMデバイスと、DRAMデバイスへのアクセスを管理および制御するように構成されたDRAMコントローラとを備えうる。一組の実施形態では、DRAMコントローラは、デュアルメモリチャネルを制御するための2つの独立したDRAMサブコントローラを備えうる。例えばチップキルECCによって要求されうる合同モードでは、この2つの独立したDRAMサブコントローラが、1つの(2×N)ビット(128ビットなど)幅のデュアルチャンネルDRAMコントローラとして動作し、非合同モードでは、2つの独立したDRAMサブコントローラは、2つのシングルチャンネルNビット(64ビットなど)幅のDRAMコントローラとして動作しうる。
一組の実施形態では、2つのDRAMサブコントローラは、同一に設計および実装され、それぞれが、基本的に64ビットデータパスを処理する物理64ビットインタフェースを備えて構成されうる。すなわち、各コントローラを通過するデータパスは64ビットしか有さない。各DRAMサブコントローラは、64ビットインタフェースのみにアクセスするが、合同モードの動作中は、各DRAMサブコントローラは、見かけ上、128ビットデータパスにアクセスしているように動作しうる。すなわち、各DRAMサブコントローラは、見かけ上、128ビットのチャンクのデータを処理しているように論理的に振る舞うことができる。一組の実施形態では、各DRAMサブコントローラは、メモリにアクセスするためにシステムが使用する、対応するポート(チャネル)を備えうる。ポートの一方(DRAMサブコントローラの一方に対応)は、1つの128ビットDRAMコントローラとして構成されうる。その後、上記のように構成されたポートにおける全トラフィックが、(例えば、DRAMサブコントローラに結合された、構成されたノースブリッジによって)もう一方のポートに複製されうる。このため、各DRAMサブコントローラは、64ビットの実際のデータパスにのみアクセスするが、制御ロジックからみて128ビットに対応可能となる。
一組の実施形態では、システム内でのデータの転送時に、メモリバスよりも幅の広い(例えば64バイト幅など)キャッシュラインの読み出しと書き込みが行われることがある。64ビットメモリチャネルの代わりに128ビットメモリチャネルを使用してキャッシュラインの読み出しおよび/または書き込みを行うことにより、1つのキャッシュラインへのデータの読み出しおよび/または書き込みに要するバースト転送のサイズを低減できる。したがって、128ビット幅のメモリチャネルのバースト転送のサイズは、64ビット幅のメモリチャネルのバースト転送のサイズの半分である。このため、(物理的には64ビット幅データパスのみを制御しているが)論理的には128ビット幅のメモリチャネルを制御していることを考慮に入れるために、各DRAMサブコントローラは、バースト転送のためのビート数(すなわちサイズ)を調整しうる。
システムは、第1のメモリコントローラおよび第2のメモリコントローラと、第1のメモリモジュールおよび第2のメモリモジュールとを備えうる。各メモリコントローラは、個々の物理Nビットデータパスを有し、各メモリモジュールは、N本のデータ線(すなわちNビットデータポート)を有し、第1のメモリコントローラのNビットデータパスが、第1のメモリモジュールのNビットデータパスに結合され、第2のメモリコントローラのNビットデータパスが、第2のメモリモジュールのNビットデータポートに結合されうる。システムは、2つの別個のメモリコントローラを使用してアクセスすることができる、(2×N)ビット幅のデータパスを有する論理メモリチャネルを使用するように構成されうる。2つのメモリコントローラを合同モードで動作するように構成するために、(例えばBIOSによって)構成情報が2つのメモリコントローラに書き込まれ、メモリコントローラの一方に対応するチャネルが、(2×N)ビット幅の論理メモリチャネルとして指定されうる。その後、指定されたチャネル、このため、このチャネルに対応するメモリコントローラへの全アクセスが、もう一方のメモリコントローラに同時にコピーされうる。このため、各メモリコントローラは、実際には個々のNビットデータパスにアクセスしているが、見かけ上、(2×N)ビットコントローラのように動作しうる。
システムは、(2×N)ビット幅のメモリチャネルを介して、(2×N)ビットのデータのチャンクを送信および/または受信するために、指定されたメモリコントローラにメモリ要求を送信しうる。このメモリ要求は、もう一方のメモリコントローラに複製され、この要求に応答して、第1のメモリコントローラは、第1のメモリモジュールとの間で、(2×N)ビットのデータのチャンクのそれぞれの最初のNビット部分を送信および/または受信し、第2のメモリコントローラは、第2のメモリモジュールとの間で、(2×N)ビットのデータのチャンクのそれぞれの残りのNビット部分を送信および/または受信しうる。このため、データは、(2×N)ビットのチャンクでシステムに提供されうる。システムは、非合同モードで動作し、それぞれNビット幅の2つの論理メモリチャネルを使用するように更に設定可能であり、このモードでは、2つのメモリコントローラが、それぞれ、自身の個々のNビットデータパスを使用して各メモリチャネルを制御する。個々のメモリ要求が、メモリコントローラの両方、すなわち、メモリコントローラのために構成された2つの個々のポートのそれぞれに送信され、それぞれの特定のメモリコントローラのNビットデータパスを介して個々にデータがアクセスされうる。
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
図1は、コンピュータシステムなど、基本の例示的なシステム100のブロック図を示し、処理ユニット100は、メモリコントローラ103に結合されたプロセッサコア101を備えて構成されている。一部の実施形態では、プロセッサコア101は、プロセッサコア101との間のデータフローを管理するように構成されたノースブリッジ107を介して、メモリコントローラ103に結合されうる。メモリコントローラ103は、メモリバス111に結合され、メモリコントローラ103は、メモリバス111を介して、処理ユニット100とメモリ105との間のデータ交換を促すために、メモリ105へのアクセスを調整しうる。システム100は、さまざまな方法で実装することができ、メモリコントローラによってメモリアクセスが制御される基本的な構成を示すために図示されていることを当業者は認めるであろう。
一組の実施形態では、メモリコントローラ103は、システム100のニーズによって要求される一連の機能に対応するための、副次的な回路および/またはコンポーネント(レジスタなど)を備えてもよい。例えば、メモリコントローラ103は、メモリ105とプロセッサコア101間で転送中のデータをバッファするための各種バッファを備えても、サブ制御ブロックに分割されてもよい。同様に、メモリ105は、メモリバス111を介してメモリコントローラ103とインタフェースするように適合された、さまざまな構成の複数の記憶素子またはメモリデバイスを備えうる。各種の実施形態が可能であり、考察される。メモリ105はDRAM(ダイナミックランダムアクセスメモリ)であり、このためメモリコントローラ103はDRAMコントローラである。より詳細には、システム100は、ダブルデータレートDRAM(DDR DRAM)(DDR3メモリ(メモリ105)など)を備え、これがDDR3メモリコントローラ103によって制御されていてもよい。一組の実施形態では、DRAMコントローラ103は、複数のチャンネルを介して(例えばデュアルチャネルを介して)、DRAMデバイス105へのアクセスを管理および制御するように構成されうる。
両DRAMチャンネルは、特定のサイズ(例えば64ビット幅)を有しうる。このため、1つのDRAMチャンネルは、64ビット幅でもよい。このため、2つの並列DRAMチャンネルは、128ビットの実効バス幅を提供することができる。一部のシステム構成では、2つのDRAMチャンネルが、1つの論理128ビットインタフェースとして動作するように、好ましくは「合同」(ganged together)されうる。他の特定のシステム構成では、2つのDRAMチャンネルが、2つの独立した64ビットチャンネルとして動作するように、好ましくは「合同解除」(unganged)されうる。両方のシステム構成に対応するには、小さなシングルチャンネル[バス]幅の独立性を保つ必要があり、上記の例の場合、これは、64ビットの独立性を保つことである。本明細書に記載の実施形態では、1つのチャンネルが64ビットのバス幅を有するが、別の実施形態では、1つのチャンネルのバス幅が異なってもよく、バス幅が64ビットから増減する各種の実施形態およびシステム構成が可能であり、考察されることを留意すべきである。
一組の実施形態では、DRAM105は、複数の物理DIMM(デュアルインラインメモリモジュール)を備えうる。DRAMコントローラ103によってアクセスされる論理DIMMが、(合同;ギャングドモードのように)1つの128ビットインタフェースを形成するために並列に動作される2つの同一の物理64ビットDIMM、あるいは(非合同;アンギャングドモードのように)1つの物理64ビットDIMMを有するように、システム100が構成されうる。2つの64ビット幅の論理DIMMにアクセスできる能力を保持するために、独立した64ビットチャンネルを保持するために、DRAMコントローラ105は、2つのメモリサブコントローラを備えて構成されうる。図2に示すように、各メモリサブコントローラは、非合同モードにおいて、少なくとも個々のシングル64ビット幅チャンネルを制御可能であり、そのうちの1本が、128ビットチャンネルも制御可能である。2つのメモリサブコントローラが合同モードで動作される場合、論理DIMMは、2チャンネル幅となりうる。デュアルチャンネル論理DIMMの各物理DIMMは、同一サイズであり、同じタイミングパラメータを使用する必要があり、両メモリサブコントローラが、同じ情報によってプログラムされる。メモリサブコントローラが、64ビットモードで動作される場合、論理DIMMは、64ビット物理DIMMと等しくなり、対応する個々のメモリサブコントローラが各チャンネルを制御する。
図2に示すDRAMコントローラ203は、図1に示したDRAMコントローラ103の可能な一実施形態を示し、メモリチャネル0とメモリチャネル1をそれぞれ制御するためのメモリサブコントローラ204,206を有しうる。DRAMコントローラ203は、メモリサブコントローラ204,206を、合同モードまたは非合同モードで動作させるように構成されうる。図2に示す実施形態では、メモリサブコントローラ206は、64ビットデータパスに対応するように構成され、メモリサブコントローラ204は、64ビットデータパス(非合同モード)、あるいは128ビットデータパスに対応するよう(合同モード)に構成されている。このため、非合同モードでは、メモリサブコントローラ204は、チャンネル0の64ビットデータパスを制御し、メモリサブコントローラ206は、チャンネル1の64ビットデータパスを制御しうる。合同モードでは、メモリサブコントローラ206が無効にされ、メモリサブコントローラ204が、両方のチャンネルを制御するために128ビットモードで動作されうる。しかし、これを行うためには、チャンネル1が、メモリサブコントローラ206によって制御されている(非合同モード)か、あるいはメモリサブコントローラ204によって制御されているか(合同モード)に応じて、チャンネル1の64ビットデータパス出力を多重化する必要がある。このため、マルチプレクサ(MUX)208が、合同モード信号を制御信号として使用して、個々の64ビットデータパスを選択するように構成されうる。メモリサブコントローラ204,206が合同モードで動作されている場合、MUX208は、64ビットデータパス212を選択するように動作し、非合同モードで動作されている場合、MUX208は、64ビットデータパス210を選択するように動作しうる。
本実施形態のより詳細な図が図3に示される。メモリ105は、物理64ビットDIMM302,304を備えうる。DIMM302はDRAMサブコントローラ204のデータパスに結合され、DIMM304は出力MUX306に結合されうる。図に示すように、例えば中央処理装置とDRAMサブコントローラ204,206との間をインタフェースするために、ノースブリッジ310が使用されうる。この実施形態では、合同モードの動作時に、ポート0が(例えばソフトウェアによって)128ビットコントローラとして構成されうる。この結果、DRAMサブコントローラ204は、128ビットデータパスを有して構成され、DRAMサブコントローラ204が合同モードで使用されるときに、ビット63:0が(上で説明したように)チャンネル0に対応し、ビット127:64がチャンネル1に対応しうる。このため、チャンネル1に対応する64ビットデータパスが、ノースブリッジ310とDRAMサブコントローラ204,206との間でも多重化されうる。
非合同モードの動作時は、MUX308を使用して、チャンネル(ポート)1に対応する、ノースブリッジ310から受け取った64ビットデータが、DRAMサブコントローラ206にルーティングされる。続いて、MUX306を使用して、DRAMコントローラ206からのデータが選択され、チャンネル1のDIMM304に結合される。合同モードの動作時は、MUX308を使用して、ポート1に対応する、ノースブリッジ310から受け取った64ビットデータが、DRAMサブコントローラ204に、DRAMサブコントローラ204によって制御される128ビットデータパスのビット127:64としてルーティングされる。続いて、MUX306を使用して、DRAMコントローラ204からのデータパスのビット127:64が選択され、チャンネル1のDIMM304に結合される。また、MUX306を使用して、DIMM302,304にアドレス指定してこれらにアクセスするために使用されるアドレス/コマンド情報が選択される。非合同モードでは、MUX306を使用して、DRAMサブコントローラ206からのアドレスおよびコマンド情報が選択され、合同モードでは、MUX306を使用して、DRAMサブコントローラ204からのアドレスおよびコマンド情報が選択されうる。
上記は、DRAMコントローラ103が、2つの独立した64ビットチャンネル、または1つの128ビットチャンネル(一般化すると、2つの独立したNビットチャンネル、または1つの<2×N>ビットチャンネル)にアクセスできるようにするための解決策となりうる。しかし、実際の128ビットデータパスを制御することによって真に128ビットに対応可能なDRAMサブコントローラを構成すると、DRAMサブコントローラ204の専有面積が増大しうる。また、ソース同期型バスを実装することが大きな問題となるため、MUX306とMUX308によって実行される多重化が課題となりうる。更に、もう一方の64ビットチャンネル(すなわち、データビット127:64に対応)のための追加のDIMMのDIMMタイプとメモリ範囲とを識別するために、128ビットインタフェースは、DRAMサブコントローラ204が、構成レジスタにかなりのデータ量を記憶することを要求しうる。図3に示すように、このような構成は、DRAMサブコントローラ204とDIMM302,304間のほか、DRAMサブコントローラ204とノースブリッジ310間にも、完全な128ビットデータパスを必要する。これは、DRAMサブコントローラ206などの、非合同モードで動作する必要がある別のコントローラが存在する場合には実装が困難となりうる。
図4は、別の実施形態400を示す。この実施形態では、DRAMサブコントローラ404,406の両方が、独立して個々の64ビットデータパスを制御するように構成される一方、協働して1つの128ビットデータパスを制御するようにも構成され、いずれのサブコントローラも、(図3に示す構成のように)実際の128ビットデータパスを備えて構成する必要がない。この実施形態では、独立したDRAMサブコントローラ404,406が、合同モードでは、1つの128ビット幅デュアルチャンネルDRAMコントローラとして、あるいは、非合同モードでは、2つのシングルチャンネル64ビット幅DRAMコントローラとして動作するように構成されうる。一般化すれば、DRAMサブコントローラ404,406は、合同モードでは、1つの<2×N>ビット幅デュアルチャンネルDRAMコントローラとして、あるいは、非合同モードでは、2つのシングルチャンネルNビット幅DRAMコントローラとして動作するように構成されうる。合同モードでは、DRAMサブコントローラ406とDRAMサブコントローラ404の両方が、同じ情報によってプログラムされうる。このため、DRAMサブコントローラ404に対応する第1のレジスタの組に書き込まれた情報/データが、両チャンネル(ポート)に適用されうる。DRAMサブコントローラ406に対応する、第2のレジスタの組に書き込まれた情報/データは無視されうる。リードオペレーションおよびライトオペレーションが、システムで使用されうるキャッシュラインのサイズに合わせて調整されうる。例えば、一組の実施形態では、64バイトのキャッシュラインが使用されうる。64ビットインタフェースでは、これは、8ビートのバーストデータ転送(または、8バースト長)となる。128ビットインタフェースでは、これは、4バースト長となる。
合同モード
図4に示した構成においては、合同モードの動作時に、DRAMサブコントローラ406,404が、見かけ上、それぞれが個々に128ビットインタフェース全体を制御しているように動作するが、実際には、それぞれが128ビットインタフェースの半分を制御している。このため、合同モードで動作する場合でも、DRAMサブコントローラ406はDIMM304にアクセスし、DRAMサブコントローラ404はDIMM302にアクセスしうる。各サブコントローラは、バースト転送のビート数を調整し、アドレスマッピングも調整して、見かけ上、128ビットバス全体を制御しているように動作しうる。このように、DRAMサブコントローラ404とDRAMサブコントローラ406を等しく設計および製造でき、多重化も不要であるため、図4に示した構成は、最適な解決策となりうる。
図4に示した構成においては、合同モードの動作時に、DRAMサブコントローラ406,404が、見かけ上、それぞれが個々に128ビットインタフェース全体を制御しているように動作するが、実際には、それぞれが128ビットインタフェースの半分を制御している。このため、合同モードで動作する場合でも、DRAMサブコントローラ406はDIMM304にアクセスし、DRAMサブコントローラ404はDIMM302にアクセスしうる。各サブコントローラは、バースト転送のビート数を調整し、アドレスマッピングも調整して、見かけ上、128ビットバス全体を制御しているように動作しうる。このように、DRAMサブコントローラ404とDRAMサブコントローラ406を等しく設計および製造でき、多重化も不要であるため、図4に示した構成は、最適な解決策となりうる。
各サブコントローラは、基本的にNビット(例えば64ビット)のインタフェースを処理しうる。各コントローラを通過するデータパスも同じNビットであり、本例では64ビットである。このため、各サブコントローラは、それぞれ64ビット(Nビット)インタフェースのみを処理するが、各サブコントローラが、論理128ビット((2×N)ビット)データパスを制御するために、制御ロジックからみて128ビット((2×N)ビット)に対応可能となりうる。換言すれば、各サブコントローラが、見かけ上、128ビット((2×N)ビット)のチャンクのデータを処理する、すなわち、一度に128ビット(2×Nビット)のデータを送受信するように、論理的に振る舞うことができる。サブコントローラの一方(DRAMサブコントローラ404など)に、128ビット((2×N)ビット)のデータのチャンクのそれぞれの最初の64ビット(Nビット)を処理させ、もう一方のサブコントローラ(DRAMサブコントローラ406など)に、コマンドの第2の「コピー」と、データの対応する他の64ビット(Nビット)(全128ビット((2×N)ビット)のデータのチャンクのそれぞれの残りの半分を表す)とを処理させることによって、完全な帯域幅を実現することができる。その際、両サブコントローラは、見かけ上、128ビット((2×N)ビット)データパス全体を処理しているように動作する。
一組の実施形態では、BIOSが、1つの(2×N)ビット幅チャネルの制御が望ましい場合には、サブコントローラを、合同モードで動作するように構成および初期化し、2つのサブコントローラの一方に対応する一方のチャンネル(例えばDRAMサブコントローラ404に対応するチャンネル)が、使用される(2×N)ビット幅チャネルとして指定されうる。初期化が完了すると、BIOSは、単に、指定したチャンネルにアクセスし、その際、指定したチャンネル(このため対応するサブコントローラ)に対してその後行われる構成アクセスがもう一方のサブコントローラに「複製(shadow)」される、すなわち、コピーされる(考えられる例外としては、特定の指定されたトレーニングレジスタが挙げられ、この場合、BIOSが、各サブコントローラに個々に書き込み、サブコントローラが、それぞれのチャンネルで適切に動作することを確認する)。一般に、初期化が完了すると、BIOSと(すべてのシステム)ソフトウェアが、サブコントローラが合同モードで動作していることを意識する必要がなくなる。(2×N)ビット幅のチャネルとして指定されたチャンネル(DRAMサブコントローラ404に対応するチャンネルなど)のみがアクセスされ、特定されたチャンネルに対してその後行われる全アクセスが、ノースブリッジ410によって、もう一方のサブコントローラ(DRAMサブコントローラ406など)にコピーされる。
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
本発明は、一般にマイクロプロセッサに利用可能である。
Claims (10)
- (2×N)ビットデータパス(Nは正の整数)を有するメモリチャンネルにアクセスする方法であって、
前記メモリチャンネルを介して、(2×N)ビットのデータのチャンクを送信および/または受信するために、Nビットデータパスを有する第1のメモリコントローラ(406)にアクセス情報を送信するステップと、
Nビットデータパスを有する第2のメモリコントローラ(404)に前記アクセス情報をコピーするステップと、
前記アクセス情報の送信、および前記アクセス情報のコピーに応答して、
前記第1のメモリコントローラが、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの最初のNビット部分を送信および/または受信するステップと、
前記第2のメモリコントローラが、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの残りのNビット部分を送信および/または受信するステップとを含む方法。 - 前記第1のメモリコントローラが、前記第1のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第1の物理メモリ(304)との間で、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの前記最初のNビット部分を送信および/または受信するステップと、
前記第2のメモリコントローラが、前記第2のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第2の物理メモリ(302)との間で、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの前記残りのNビット部分を送信および/または受信するステップとを更に含む、請求項1に記載の方法。 - 前記アクセス情報の送信および前記アクセス情報のコピーの前に、前記第1のメモリコントローラおよび前記第2のメモリコントローラを合同モードで動作するように構成するステップと、
前記第1のメモリコントローラおよび前記第2のメモリコントローラを有するシステムを初期化するためのファームウェア命令を実行するステップとを更に含み、
前記ファームウェア命令を実行する前記ステップは、前記第1のメモリコントローラおよび前記第2のメモリコントローラを構成するステップが含まれる、請求項1に記載の方法。 - 前記第1のメモリコントローラにアクセス情報を送信する前記ステップは、アドレス情報を送信するステップを含み、
前記方法は、
前記アドレス情報に対応する1つ以上の(2×N)ビットのデータのチャンクを前記第1のメモリコントローラに送信して、前記アドレス情報に従って前記1つ以上の(2×N)ビットのデータのチャンクを記憶するステップと、
前記アドレス情報に対応する前記1つ以上の(2×N)ビットのデータのチャンクを、前記第2のメモリコントローラに複製するステップとを更に含む、請求項1に記載の方法。 - 前記第1のメモリコントローラが、前記第1のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第1の物理メモリに、自身のNビットデータパスを介して、前記アドレス情報に対応する前記1つ以上の(2×N)ビットのデータのチャンクのそれぞれの最初のNビット部分を送信するステップと、
前記第2のメモリコントローラが、前記第2のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第2の物理メモリに、自身のNビットデータパスを介して、前記アドレス情報に対応する前記1つ以上の(2×N)ビットのデータのチャンクのそれぞれの残りのNビット部分を送信するステップと、を更に有する請求項4に記載の方法。 - メモリシステムであって、
Nビットデータパスを有し、(2×N)ビットメモリチャンネルを介して、対応する(2×N)ビットのデータのチャンクを送信および/または受信するための、第1のタイプのアクセス情報を受信するように構成された第1のメモリコントローラ(103,406)と、
Nビットデータパスを有する第2のメモリコントローラ(103,404)と、
前記第1のメモリコントローラおよび前記第2のメモリコントローラに結合され、前記第1のメモリコントローラが受け取った前記第1のタイプのアクセス情報を前記第2のメモリコントローラに複製するように動作可能な制御ブロック(410)とを備え、
前記第1のメモリコントローラは、前記受け取った第1のタイプのアクセス情報に従って、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの最初のNビット部分を送信および/または受信するように動作可能であり、前記第2のメモリコントローラは、前記複製された第1のタイプのアクセス情報に従って、自身のNビットデータパスを介して、前記(2×N)ビットのデータのチャンクのそれぞれの残りのNビット部分を送信および/または受信するように動作可能であるメモリシステム。 - 前記第1のメモリコントローラおよび前記第2のメモリコントローラはそれぞれ、個々のNビットメモリチャネルを介して、個々のNビットのデータのチャンクを送信および/または受信するための、第2のタイプのアクセス情報をそれぞれ受信するように更に構成され、
前記第1のメモリコントローラは、自身が受信した第2のタイプのアクセス情報に従って、自身のNビットデータパスを介して、自身の個々のNビットのデータのチャンクを送信および/または受信するように動作可能であり、前記第2のメモリコントローラは、自身が受信した第2のタイプのアクセス情報に従って、自身のNビットデータパスを介して、自身の個々のNビットのデータのチャンクを送信および/または受信するように動作可能である、請求項6に記載のメモリシステム。 - 前記第1のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第1のメモリモジュール(304)と、
前記第2のメモリコントローラの前記Nビットデータパスに結合されたN本のデータ線を有する第2のメモリモジュール(302)とを更に備え、
前記第1のメモリコントローラは、自身のNビットデータパスを介して、前記第1のメモリモジュールとの間で、前記(2×N)ビットのデータのチャンクのそれぞれの最初のNビット部分を送信および/または受信するように動作可能であり、
前記第2のメモリコントローラは、自身のNビットデータパスを介して、前記第2のメモリモジュールとの間で、前記(2×N)ビットのデータのチャンクのそれぞれの残りのNビット部分を送信および/または受信するように動作可能である、請求項6に記載のメモリシステム。 - 前記第1のメモリコントローラおよび前記第2のメモリコントローラは、
1つの(2×N)ビット幅デュアルチャンネルメモリコントローラ、または
2つのNビット幅シングルチャネルメモリコントローラの一方として動作可能である、請求項6に記載のメモリシステム。 - 請求項6乃至9のいずれか1項に記載のメモリシステムを有するシステム(100)であって、前記システムは、前記制御ブロックによって前記第1のメモリコントローラおよび前記第2のメモリコントローラを構成するための命令を実行するように構成された処理ユニット(101)を更に備える、システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/843,434 US8006032B2 (en) | 2007-08-22 | 2007-08-22 | Optimal solution to control data channels |
PCT/US2008/009101 WO2009025713A1 (en) | 2007-08-22 | 2008-07-28 | An optical solution to control data channels |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010537311A true JP2010537311A (ja) | 2010-12-02 |
Family
ID=40009288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010521846A Pending JP2010537311A (ja) | 2007-08-22 | 2008-07-28 | データチャネルを制御するための最適な解決策 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8006032B2 (ja) |
JP (1) | JP2010537311A (ja) |
KR (1) | KR20100075847A (ja) |
CN (1) | CN101836194B (ja) |
DE (1) | DE112008002273B4 (ja) |
GB (1) | GB2465317A (ja) |
TW (1) | TW200928751A (ja) |
WO (1) | WO2009025713A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013503397A (ja) * | 2009-08-26 | 2013-01-31 | クアルコム,インコーポレイテッド | デュアルチャネル動作中にアドレス/コントロール信号をインターリーブすることによるシングルチャネルとデュアルチャネルのハイブリッドddrインターフェース方式 |
JP2013051013A (ja) * | 2011-08-31 | 2013-03-14 | Renesas Electronics Corp | 半導体装置 |
EP2787440A1 (en) | 2013-03-29 | 2014-10-08 | Fujitsu Limited | Information processing device, program, and method |
JP2021509499A (ja) * | 2018-01-03 | 2021-03-25 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリ・コントローラを動作させる方法、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法、およびメモリ・コントローラ |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI420982B (zh) * | 2010-12-03 | 2013-12-21 | Hon Hai Prec Ind Co Ltd | 印刷電路板 |
KR20160120004A (ko) | 2015-04-07 | 2016-10-17 | 삼성전자주식회사 | 시스템 온-칩 및 이를 포함하는 전자 기기 |
US10956342B1 (en) * | 2017-02-03 | 2021-03-23 | Cadence Design Systems, Inc. | Variable channel multi-controller memory system |
CN114661641A (zh) * | 2020-12-24 | 2022-06-24 | 华为技术有限公司 | 一种内存模组和内存总线信号处理方法 |
US11960735B2 (en) * | 2021-09-01 | 2024-04-16 | Micron Technology, Inc. | Memory channel controller operation based on data types |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828856A (en) | 1994-01-28 | 1998-10-27 | Apple Computer, Inc. | Dual bus concurrent multi-channel direct memory access controller and method |
US5604714A (en) | 1995-11-30 | 1997-02-18 | Micron Technology, Inc. | DRAM having multiple column address strobe operation |
JP4084428B2 (ja) | 1996-02-02 | 2008-04-30 | 富士通株式会社 | 半導体記憶装置 |
KR100244268B1 (ko) | 1997-04-02 | 2000-02-01 | 김영환 | 비휘발성 메모리 소자 및 제조 방법 |
US6026466A (en) | 1997-06-16 | 2000-02-15 | Integrated Silicon Solution, Inc. | Multiple row address strobe DRAM architecture to improve bandwidth |
US6108745A (en) | 1997-10-31 | 2000-08-22 | Hewlett-Packard Company | Fast and compact address bit routing scheme that supports various DRAM bank sizes and multiple interleaving schemes |
US6545935B1 (en) | 2000-08-29 | 2003-04-08 | Ibm Corporation | Dual-port DRAM architecture system |
US6452834B1 (en) | 2001-02-13 | 2002-09-17 | Silicon Access Networks | 2T dual-port DRAM in a pure logic process with non-destructive read capability |
US6816889B1 (en) | 2001-07-03 | 2004-11-09 | Advanced Micro Devices, Inc. | Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node |
US6999091B2 (en) | 2001-12-28 | 2006-02-14 | Intel Corporation | Dual memory channel interleaving for graphics and video |
US6794254B1 (en) | 2003-05-15 | 2004-09-21 | Taiwan Semiconductor Manufacturing Company | Embedded dual-port DRAM process |
TWI224261B (en) * | 2003-08-06 | 2004-11-21 | Via Tech Inc | Mother board utilizing a single-channel memory controller to control multiple dynamic-random-access memories |
TWI299497B (en) | 2004-06-24 | 2008-08-01 | Via Tech Inc | Method and related apparatus for accessing memory apparatus |
US7110306B2 (en) | 2004-06-28 | 2006-09-19 | United Memories, Inc. | Dual access DRAM |
CN100487673C (zh) * | 2005-05-30 | 2009-05-13 | 欧阳昌廉 | 次级内存装置及使用次级内存的方法 |
US7587521B2 (en) | 2005-06-23 | 2009-09-08 | Intel Corporation | Mechanism for assembling memory access requests while speculatively returning data |
-
2007
- 2007-08-22 US US11/843,434 patent/US8006032B2/en active Active
-
2008
- 2008-07-28 CN CN200880112465.9A patent/CN101836194B/zh active Active
- 2008-07-28 DE DE112008002273.9T patent/DE112008002273B4/de active Active
- 2008-07-28 JP JP2010521846A patent/JP2010537311A/ja active Pending
- 2008-07-28 KR KR1020107006165A patent/KR20100075847A/ko not_active Application Discontinuation
- 2008-07-28 WO PCT/US2008/009101 patent/WO2009025713A1/en active Application Filing
- 2008-08-22 TW TW097132034A patent/TW200928751A/zh unknown
-
2010
- 2010-03-15 GB GB1004207A patent/GB2465317A/en not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013503397A (ja) * | 2009-08-26 | 2013-01-31 | クアルコム,インコーポレイテッド | デュアルチャネル動作中にアドレス/コントロール信号をインターリーブすることによるシングルチャネルとデュアルチャネルのハイブリッドddrインターフェース方式 |
JP2013051013A (ja) * | 2011-08-31 | 2013-03-14 | Renesas Electronics Corp | 半導体装置 |
EP2787440A1 (en) | 2013-03-29 | 2014-10-08 | Fujitsu Limited | Information processing device, program, and method |
US9570197B2 (en) | 2013-03-29 | 2017-02-14 | Fujitsu Limited | Information processing device, computer-readable recording medium, and method |
JP2021509499A (ja) * | 2018-01-03 | 2021-03-25 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリ・コントローラを動作させる方法、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法、およびメモリ・コントローラ |
JP7146920B2 (ja) | 2018-01-03 | 2022-10-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ・コントローラを動作させる方法、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法、およびメモリ・コントローラ |
Also Published As
Publication number | Publication date |
---|---|
GB2465317A (en) | 2010-05-19 |
DE112008002273T5 (de) | 2010-08-05 |
GB201004207D0 (en) | 2010-04-28 |
US8006032B2 (en) | 2011-08-23 |
TW200928751A (en) | 2009-07-01 |
DE112008002273B4 (de) | 2022-06-09 |
WO2009025713A1 (en) | 2009-02-26 |
KR20100075847A (ko) | 2010-07-05 |
CN101836194A (zh) | 2010-09-15 |
US20090055572A1 (en) | 2009-02-26 |
CN101836194B (zh) | 2012-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8006032B2 (en) | Optimal solution to control data channels | |
US6854043B2 (en) | System and method for multi-modal memory controller system operation | |
US20240028207A1 (en) | Near-memory compute module | |
US6295592B1 (en) | Method of processing memory requests in a pipelined memory controller | |
US6272609B1 (en) | Pipelined memory controller | |
US6681301B1 (en) | System for controlling multiple memory types | |
US5961660A (en) | Method and apparatus for optimizing ECC memory performance | |
US8612684B2 (en) | Memory controller connection to RAM using buffer interface | |
US20160232112A1 (en) | Unified Memory Bus and Method to Operate the Unified Memory Bus | |
US11862236B1 (en) | Memory component for deployment in a dynamic stripe width memory system | |
JP4824126B2 (ja) | コマンド・データ・レプリケーションをサポートする高容量メモリ・サブシステム用メモリ・チップ | |
WO2008022162A2 (en) | Systems and methods for program directed memory access patterns | |
EP3268864B1 (en) | High performance non-volatile memory module | |
TW201636859A (zh) | 記憶體系統、記憶體模組及其操作方法 | |
US10216685B1 (en) | Memory modules with nonvolatile storage and rapid, sustained transfer rates | |
CN110633230A (zh) | 高带宽dimm | |
US20130318393A1 (en) | Solid-state mass storage device and methods of operation | |
JP4528491B2 (ja) | 情報処理装置 | |
US11513725B2 (en) | Hybrid memory module having a volatile memory subsystem and a module controller sourcing read strobes to accompany read data from the volatile memory subsystem | |
US20240004799A1 (en) | Memory controller architecture | |
JP2001222472A (ja) | 記憶素子及びそれを用いた記憶装置 | |
CN117331859A (zh) | 用于存储器控制器架构的系统、设备及方法 | |
CN118069037A (zh) | 存储器控制器、电子系统和控制存储器访问的方法 | |
WO2007116485A1 (ja) | メモリ装置、そのインタフェース回路、メモリ・システム、メモリ・カード、回路基板及び電子機器 |