(57)【要約】  コンピューティングシステムに対する効率的なメモリアクセスを行うための、システム、装置、及び方法が開示される。コンピューティングシステムは、アプリケーションを処理するための１つまたは複数のクライアントを含む。メモリコントローラは、メモリコントローラと、それぞれがメモリデバイスに接続される２つのチャネルとの間でトラフィックを転送する。クライアントは、同じページ内の不連続データを対象にした２つの３２バイト要求があることを指定する指示と共に６４バイトメモリ要求を送る。メモリコントローラは、２つのアドレスを生成し、かつ、同じページにおける不連続データに同時にアクセスするために、単一のコマンド及び２つのアドレスを２つのチャネルに送る。【選択図】図４
2021507414.tif 000002
【特許請求の範囲】
【請求項１】
メモリ要求を受信するための第１のインターフェースと、
前記メモリ要求に対応するメモリアクセスコマンドをメモリデバイスに送るためのコマンドバス、前記メモリデバイスにアドレスを送るための第１のアドレスバス、及び前記メモリデバイスにアドレスを送るための第２のアドレスバスを含む、第２のインターフェースと、
制御論理であって、任意のメモリアクセスコマンドが任意の時点で発行されるようにスケジューリングされると判断することに応答して、前記任意のメモリアクセスコマンドを前記メモリデバイスに前記任意の時点で送ること、前記任意の時点で、前記第１のアドレスバス上で第１のアドレスを送ることであって、前記第１のアドレスは、第１のデータを格納する前記メモリデバイスにおける第１の場所を指し示す、前記第１のアドレスを送ること、及び、前記任意の時点で、前記第２のアドレスバス上で第２のアドレスを送ることであって、前記第２のアドレスは、前記第１のデータに連続していない第２のデータを格納する前記メモリデバイスにおける第２の場所を指し示す、前記第２のアドレスを送ることを行うように構成される、前記制御論理と、を備える、メモリコントローラ。
【請求項２】
前記制御論理は、前記第１のメモリ要求及び前記第２のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断することに応答して、前記任意のメモリアクセスコマンドが、前記第１のメモリ要求及び前記第２のメモリ要求のそれぞれに応えるという指示を格納するようにさらに構成される、請求項１に記載のメモリコントローラ。
【請求項３】
前記任意の範囲のメモリアドレスはメモリのページに対する範囲である、請求項２に記載のメモリコントローラ。
【請求項４】
第１のメモリ要求は前記第１の場所を指し示すアドレスを含み、
第２のメモリ要求は前記第２の場所を指し示すアドレスを含む、請求項１に記載のメモリコントローラ。
【請求項５】
前記第２のアドレスは前記第１のアドレスに対するオフセットである、請求項１に記載のメモリコントローラ。
【請求項６】
前記任意のメモリアクセスコマンドは前記第１のデータ及び前記第２のデータのそれぞれにアクセスする、請求項１に記載のメモリコントローラ。
【請求項７】
前記第２のインターフェースは、前記メモリコントローラと前記メモリデバイスとの間でデータを転送するためのデータバスをさらに含み、前記第１のデータ及び前記第２のデータのそれぞれはサイズ閾値より小さいサイズを有する、請求項１に記載のメモリコントローラ。
【請求項８】
前記第１のデータ及び前記第２のデータは前記データバス上で同時に転送される、請求項７に記載のメモリコントローラ。
【請求項９】
前記制御論理は、前記任意のメモリアクセスコマンドが完了したとの判断に応答して、第１のメモリ要求、及び前記第１のメモリ要求と異なる第２のメモリ要求のそれぞれを完了とマークするようにさらに構成される、請求項１に記載のメモリコントローラ。
【請求項１０】
第１のインターフェースによってメモリ要求を受信することと、
第２のインターフェースにおけるコマンドバスによって、前記メモリ要求に対応するメモリアクセスコマンドをメモリデバイスに送ることと、
前記第２のインターフェースにおける第１のアドレスバスによって、前記メモリデバイスにアドレスを送ることと、
前記第２のインターフェースにおける第２のアドレスバスによって、前記メモリデバイスにアドレスを送ることと、
任意のメモリアクセスコマンドが任意の時点で発行されるようにスケジューリングされると判断することに応答して、
前記任意のメモリアクセスコマンドを前記メモリデバイスに前記任意の時点で送ることと、
前記任意の時点で、前記第１のアドレスバス上で第１のアドレスを送ることであって、前記第１のアドレスは、第１のデータを格納する前記メモリデバイスにおける第１の場所を指し示す、前記第１のアドレスを送ることと、
前記任意の時点で、前記第２のアドレスバス上で第２のアドレスを送ることであって、前記第２のアドレスは、前記第１のデータに連続していない第２のデータを格納する前記メモリデバイスにおける第２の場所を指し示す、前記第２のアドレスを送ることと、を含む、方法。
【請求項１１】
第１のメモリ要求及び第２のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断することに応答して、前記任意のメモリアクセスコマンドが、前記第１のメモリ要求及び前記第２のメモリ要求のそれぞれに応えるという指示を格納することをさらに含む、請求項１０に記載の方法。
【請求項１２】
第１のメモリ要求は前記第１の場所を指し示すアドレスを含み、第２のメモリ要求は前記第２の場所を指し示すアドレスを含む、請求項１０に記載の方法。
【請求項１３】
前記第２のアドレスは前記第１のアドレスに対するオフセットである、請求項１０に記載の方法。
【請求項１４】
前記任意のメモリアクセスコマンドは前記第１のデータ及び前記第２のデータのそれぞれにアクセスする、請求項１０に記載の方法。
【請求項１５】
前記第２のインターフェースは、前記メモリコントローラと前記メモリデバイスとの間でデータを転送するためのデータバスをさらに含み、前記第１のデータ及び前記第２のデータのそれぞれはサイズ閾値より小さいサイズを有する、請求項１０に記載の方法。
【請求項１６】
前記任意のメモリアクセスコマンドが完了したとの判断に応答して、第１のメモリ要求、及び前記第１のメモリ要求と異なる第２のメモリ要求のそれぞれを完了とマークすることをさらに含む、請求項１０に記載の方法。
【請求項１７】
メモリデバイスに格納されるデータに対するメモリアクセス要求を生成するように構成されるプロセッサと、
前記メモリデバイスに結合されるメモリコントローラと、を備える、コンピューティングシステムであって、
任意のメモリアクセスコマンドが任意の時点で発行されるようにスケジューリングされると判断することに応答して、前記メモリコントローラは、前記任意のメモリアクセスコマンドを前記メモリデバイスに前記任意の時点で送ること、前記任意の時点で、第１のアドレスバス上で第１のアドレスを送ることであって、前記第１のアドレスは第１のデータを格納する前記メモリデバイスにおける第１の場所を指し示す、前記第１のアドレスを送ること、及び、前記任意の時点で、第２のアドレスバス上で第２のアドレスを送ることであって、前記第２のアドレスは、前記第１のデータに連続していない第２のデータを格納する前記メモリデバイスにおける第２の場所を指し示す、前記第２のアドレスを送ることを行うように構成される、前記コンピューティングシステム。
【請求項１８】
前記メモリコントローラは、第１のメモリ要求及び第２のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断することに応答して、前記任意のメモリアクセスコマンドが、前記第１のメモリ要求及び前記第２のメモリ要求のそれぞれに応えるという指示を格納するようにさらに構成される、請求項１７に記載のコンピューティングシステム。
【請求項１９】
前記第２のアドレスは前記第１のアドレスに対するオフセットである、請求項１７に記載のコンピューティングシステム。
【請求項２０】
前記メモリコントローラは、前記任意のメモリアクセスコマンドが完了したとの判断に応答して、第１のメモリ要求、及び前記第１のメモリ要求と異なる第２のメモリ要求のそれぞれを完了とマークするようにさらに構成される、請求項１７に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
＜関連技術の説明＞
比較的高いレベルの性能を維持することは、格納されたデータへの迅速なアクセスを要する。いくつかのタイプのデータ集約型アプリケーションは、いくつかのローカル及びリモートプログラムならびにこれらのユーザに信頼できる高性能を提供するためにデータストレージへの迅速なアクセスに頼っている。さまざまなコンピューティングデバイスは、システム機能性を提供するために多数のタイプのＩＣを統合する不均一集積を利用する。多数の機能は、音声／映像（Ａ／Ｖ）データ処理、医療分野及びビジネス分野に向けた他の高度なデータ並列アプリケーション、汎用命令セットアーキテクチャ（ＩＳＡ）の命令の処理、ならびに、デジタル、アナログ、混合信号、及び無線周波数（ＲＦ）機能などを含む。多数のタイプのＩＣを統合するためにシステムパッケージングで処理ノードを配置するためのさまざまな選定がある。いくつかの例には、システムオンチップ（ＳＯＣ）、マルチチップモジュール（ＭＣＭ）、及びシステムインパッケージ（ＳｉＰ）がある。
【０００２】
システムパッケージングの選定にかかわらず、いくつかの使用では、１つまたは複数のコンピューティングシステムの性能は、処理ノードに左右される可能性がある。１つの例では、処理ノードは、いくつかの異なるタイプのアプリケーションを起動させる、場合によっては、情報を多数のユーザ（ローカル及びリモート両方）に一度に中継するモバイルコンピューティングデバイス内で使用される。別の例では、処理ノードはデスクトップ内で使用される。さらに別の例では、処理ノードは、マルチソケットサーバのソケットにおける多数の処理ノードのうちの１つである。サーバを使用して、リモートコンピューティングデバイスにおける他のコンピュータプログラムのみならず、サーバ内のコンピュータプログラムにサービスを提供する。
【０００３】
上記のさまざまなコンピューティングシステムのそれぞれにおける記憶階層は、プロセッサダイ上のレジスタ、及びプロセッサダイ上に位置するまたはプロセッサダイに接続されるキャッシュなどの比較的高速の揮発性メモリから、磁気ハードディスクなどの不揮発性の比較的低速のメモリに移行する。記憶階層は、実行中のコンピュータプログラムによる迅速なアクセス要求に対する高性能を維持するための課題を提供する。１つの課題は、キャッシュサブシステム以外に位置するランダムアクセスメモリ（ＲＡＭ）であるが不揮発性ディスクメモリを含まない、システムメモリにおける時間を低減することである。同時性ダイナミックＲＡＭ（ＳＤＲＡＭ）及び他の従来のメモリ技術は、限定された帯域幅によりシステムメモリのストール時間を低減させるが、アクセスレイテンシはこれらの技法では改善しない。さらに、システムメモリに格納されたデータにアクセスするためのインターフェース及びプロトコルをサポートするために、相当量のオンダイ面積及び電力消費が使用される。
【０００４】
上記を考慮して、コンピューティングシステムに対する効率的なメモリアクセスを行うための効率的な方法及びシステムが所望されている。
【０００５】
本明細書に説明される方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解され得る。
【図面の簡単な説明】
【０００６】
【図１】コンピューティングシステムの１つの実施形態のブロック図である。
【図２】メモリコントローラの１つの実施形態のブロック図である。
【図３】コンピューティングシステムに対する効率的なメモリアクセスを行うための方法の１つの実施形態のフロー図である。
【図４】コンピューティングシステムに対する効率的なメモリアクセスを行うための方法の１つの実施形態のフロー図である。
【発明を実施するための形態】
【０００７】
本発明は、さまざまな修正及び代替的な形態をなすことが可能であるが、具体的な実施形態は、図面に例として示されており、本明細書に詳細に説明されている。しかしながら、図面及びこれに対する詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、むしろ、本発明は、添付の特許請求の範囲によって定められる本発明の範囲内にある全ての修正、等価物、及び代替物を包含するものとすると理解されるべきである。
【０００８】
下記の説明では、本明細書に提示される方法及び機構を十分に理解してもらうために、多数の具体的詳細が示されている。しかしながら、さまざまな実施形態がこれらの具体的詳細なしで実践され得ることを、当業者は認識するべきである。いくつかの事例では、周知の構造、構成要素、信号、コンピュータプログラム命令、及び技法は、本明細書に説明されるアプローチを不明瞭にすることを回避するために詳細に示されていない。例示を簡略化しかつ明確にするために、図に示される要素が必ずしも一定尺度で描かれているわけではないことは理解されるであろう。例えば、要素のいくつかの寸法は他の要素に対して誇張される場合がある。
【０００９】
コンピューティングシステムに対する効率的なメモリアクセスを行うための、さまざまなシステム、装置、方法、及びコンピュータ可読媒体が開示される。さまざまな実施形態では、コンピューティングシステムはアプリケーションを処理するための１つまたは複数のクライアントを含む。クライアントの例には、汎用中央処理装置（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、加速処理ユニット（ＡＰＵ）、及び入出力（Ｉ／Ｏ）デバイスなどがある。メモリコントローラは、メモリコントローラと、それぞれがメモリデバイスに接続される２つのチャネルとの間でトラフィックを転送するように構成される。いくつかの実施形態では、２つのメモリデバイスの１つまたは複数は、デュアルインラインメモリモジュール（ＤＩＭＭ）上のさまざまなランダムアクセスメモリ（ＲＡＭ）のうちの１つである。他の実施形態では、２つのメモリデバイスの１つまたは複数は、マザーボードにソケット付けされるまたは、はんだ付けされるＲＡＭデバイスである、平面実装ＲＡＭデバイスである。さらに他の実施形態では、２つのメモリデバイスの１つまたは複数は、三次元集積回路（３Ｄ  ＩＣ）である。一実施形態では、メモリコントローラにおけるコマンドプロセッサは、クライアントから受信されるメモリ要求を、メモリデバイスの選択されたタイプ（複数可）によって処理されるコマンドに翻訳する。
【００１０】
一実施形態では、クライアントは、同じページ内の不連続データを対象にした２つの３２バイト要求があることを指定する指示と共に６４バイトメモリ要求を送る。メモリコントローラは２つのアドレスを生成する。メモリコントローラは同じページにおけるデータにアクセスするために単一のコマンド及び２つのアドレスを２つのチャネルに送る。１つの実施形態では、メモリコントローラは、別個の生成済みの２つのアドレスまたはこれらの一部分を２つのチャネルに送る。いくつかの実施形態では、１つのアドレスは、２つの生成済みアドレスの他のアドレスに対するオフセットである。いくつかの実施形態では、２つのアドレスを有する単一のコマンドは、同じページにおける不連続データにアクセスする。他の実施形態では、２つのアドレスを有する単一のコマンドは同じページにおける連続データにアクセスする。従って、連続データまたは不連続データである（同じページ内の）隣接するデータには同時にアクセスする。従って、メモリコントローラは、単一の３２バイトメモリ要求に対して６４バイトを転送せず、６４バイトのうちの３２バイトを破棄し、これは非効率的である。もっと正確に言えば、メモリコントローラは、メモリの１ページ内など、メモリアドレスの範囲内のデータにアクセスする２つの３２バイトメモリ要求に対して６４バイトを転送する。
【００１１】
図１を参照すると、コンピューティングシステム１００の１つの実施形態の一般化されたブロック図が示されている。示されるように、クライアント１１０及び１１２は、メモリ要求を、データファブリック１２０を介してメモリコントローラ１３０Ａ及び１３０Ｂに送る。示されるように、それぞれのメモリコントローラは、２つのアドレスを送ることが可能である単一のメモリチャネルを有する。例えば、メモリコントローラ１３０Ａは、アドレス生成器１４２Ａ及びアドレス生成器１４４Ａを有するメモリチャネル１４０Ａを含む。同様に、メモリコントローラ１３０Ｂは、アドレス生成器１４２Ｂ及びアドレス生成器１４４Ｂを有するメモリチャネル１４０Ｂを含む。メモリコントローラ１３０Ａは、チャネル１５２Ａ及び１５４Ａ上のコマンド、アドレス、及びデータをメモリデバイス１６０Ａ及び１６２Ａに転送する。メモリコントローラ１３０Ｂは、チャネル１５２Ｂ及び１５４Ｂ上のコマンド、アドレス、及びデータをメモリデバイス１６０Ｂ及び１６２Ｂに転送する。
【００１２】
入出力（Ｉ／Ｏ）デバイス、電力マネージャ、及び任意のリンクに対するＩ／Ｏインターフェース、及びネットワーク接続用のインターフェースは、例示を容易にするためにコンピューティングシステム１００に示されていない。いくつかの実施形態では、コンピューティングシステム１００の構成要素は、システムオンチップ（ＳＯＣ）などの集積回路（ＩＣ）上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ（ＳｉＰ）またはマルチチップモジュール（ＭＣＭ）における個々のダイである。いくつかの実施形態では、クライアント１１０及び１１２は、中央処理装置（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、及びマルチメディアエンジン用のハブなどの１つまたは複数を含む。クライアント１１０及び１１２のそれぞれは、アプリケーションを処理しかつメモリ要求を生成することが可能であるさまざまなコンピューティングリソースのうちの１つである。
【００１３】
クライアント１１０〜１１２のうちの１つが中央処理装置（ＣＰＵ）である時、いくつかの実施形態では、ＣＰＵにおける１つまたは複数のプロセッサコアのそれぞれは、任意の選択済み命令セットアーキテクチャ（ＩＳＡ）に従った命令を実行するための回路網を含む。さまざまな実施形態では、ＣＰＵにおけるプロセッサコアのそれぞれは、任意のＩＳＡの命令を処理するために使用されるスーパースカラーマルチスレッドマイクロアーキテクチャを含む。一実施形態では、クライアント１１０〜１１２のうちの１つがグラフィック処理ユニット（ＧＰＵ）である時、かなりの数の並列実行レーンを有する高度な並列データマイクロアーキテクチャを含む。１つの実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。クライアント１１０〜１１２のうちの１つがマルチメディアエンジンである時、マルチメディアアプリケーションに対する音声データ及び映像データを処理するためのプロセッサを含む。クライアント１１０〜１１２に対するメモリ要求を生成する処理ユニットの他の例は可能でありかつ考えられる。
【００１４】
さまざまな実施形態では、通信ファブリック１２０は、クライアント１１０及び１１２とメモリコントローラ１３０Ａ及び１３０Ｂとの間でトラフィックを相互に転送する。データファブリック１２０は、各通信プロトコルをサポートするためのインターフェースを含む。いくつかの実施形態では、通信ファブリック１２０は、要求及び応答を格納するためのキュー、内部ネットワークにわたって要求を送る前に受信した要求の間のアービトレーションを行うための選択論理、パケットを構築しかつ復号するための論理、及びパケットに対する経路を選択するための論理を含む。
【００１５】
さまざまな実施形態では、メモリコントローラ１３０Ａ〜１３０Ｂは、通信ファブリック１２０を介してクライアント１１０〜１１２からメモリ要求を受信し、メモリ要求をコマンドに翻訳し、オフチップディスクメモリ（図示せず）、及びメモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂにおけるさまざまなランダムアクセスメモリ（ＲＡＭ）のうちの１つとして実装されるシステムメモリの１つまたは複数にこのコマンドを送る。メモリコントローラ１３０はまた、メモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂ、ならびにディスクメモリから応答を受信し、かつこの応答を、クライアント１１０〜１１２の対応するソースに送る。
【００１６】
いくつかの実施形態では、コンピューティングシステム１００のアドレス空間は、少なくとも、クライアント１１０〜１１２、及び、入出力周辺デバイス（図示せず）及び他のタイプのコンピューティングリソースなどの１つまたは複数の他の構成要素の間で分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるか、ひいては、クライアント１１０〜１１２のうちのどれに特定のアドレスに対するメモリ要求がルーティングされるべきなのかを判断するために維持される。クライアント１１０〜１１２の１つまたは複数は、対応するプロセッサコアに対するメモリレイテンシを低減するためのキャッシュメモリサブシステムを含む。さらに、いくつかの実施形態では、共有のキャッシュメモリサブシステムは、メモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂにアクセスする前にラストレベルキャッシュ（ＬＬＣ）としてプロセッサコアによって使用される。本明細書で使用されるように、「メモリアクセス」という用語は、対応する要求アドレスの要求されたデータがキャッシュにある場合キャッシュヒットが生じる、メモリ読み出し要求またはメモリ書き込み要求動作を行うことを指す。代替的には、メモリアクセス要求は、要求されたデータがキャッシュにない場合にキャッシュミスが生じる。
【００１７】
さまざまな実施形態では、システムメモリはマルチチャネルメモリアーキテクチャを含む。このタイプのアーキテクチャは、メモリコントローラ１３０Ａ及び１３０Ｂへのデータの転送速度を、チャネル１５２Ａ、１５４Ａ、１５２Ｂ、及び１５４Ｂなど、これらメモリコントローラの間での通信のより多くのチャネルを追加することによって増大させる。一実施形態では、マルチチャネルアーキテクチャは、多数のメモリモジュール、及び、多チャネルをサポートすることが可能であるマザーボード及び／またはカードを利用する。
【００１８】
いくつかの実施形態では、コンピューティングシステム１００は、システムメモリを提供するためにさまざまなダイナミックＲＡＭ（ＤＲＡＭ）のうちの１つを利用する。他の実施形態では、コンピューティングシステム１００は、システムメモリを提供するために三次元集積回路（３Ｄ  ＩＣ）を利用する。このような実施形態では、３Ｄ集積ＤＲＡＭは、オフチップメモリアクセスを低減させるために低レイテンシ相互接続及び追加のオンチップメモリストレージ両方共を提供する。１つまたは複数の行バッファまたは他の同等の構造を含む行ベースアクセススキームを使用するシステムメモリの他のメモリ技術は、可能でありかつ考えられる。他のメモリ技術の例には、相変化メモリ、スピントルク移行磁化反転抵抗性メモリ、及びメモリスタなどが挙げられる。
【００１９】
さまざまな実施形態では、メモリコントローラ１３０Ｂ内の構成要素は、メモリコントローラ１３０Ａにおける構成要素と同じ機能性を有する。いくつかの実施形態では、メモリコントローラ１３０Ａ及び１３０Ｂ内の制御ユニット１３２Ａ及び１３２Ｂは、受信したメモリ要求を、読み出し／書き込みトランザクション、ならびにアクティブ化及びプリチャージトランザクションなどのトランザクションに翻訳する。本明細書で使用されるように、「トランザクション」は「コマンド」とも称される。さまざまな実施形態では、チャネル１５２Ａ、１５４Ａ、１５２Ｂ、及び１５４Ｂのうちのそれぞれ１つは、メモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂの対応する１つ内の多数のバンクに対する、コマンドバス、アドレスバス、及びデータバスを含むリンクである。
【００２０】
さまざまな実施形態では、メモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂは多数のランクを含み、このそれぞれは、多数のメモリアレイバンクを有する。バンクのそれぞれは、多数の行及び行バッファを含む。それぞれの行バッファは、メモリアレイバンク内の多数の行のうちのアクセスした行に対応するデータを格納する。アクセスした行は、受信したメモリ要求におけるＤＲＡＭアドレスによって識別される。典型的には、それぞれの行はデータのページを格納する。ページのサイズは、設計検討に基づいて選定される。このようなページサイズは、１キロバイト（１ＫＢ）、４キロバイト（４ＫＢ）、または任意の他のサイズとすることができる。
【００２１】
メモリチャネル１４０Ａ及び１４０ＢはＰＨＹ１５０Ａ及び１５０Ｂとインターフェース接続する。いくつかの実施形態では、物理インターフェースＰＨＹ１５０Ａ及び１５０Ｂのそれぞれは、メモリコントローラ１３０Ａ及び１３０Ｂからのコマンドストリームを、メモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂに任意のタイミングで伝達する。プロトコルは、１クロックサイクル当たりのデータ転送数、信号電圧レベル、信号タイミング、信号及びクロック位相、ならびにクロック周波数などの情報転送に使用される値を判断する。いくつかの実施形態では、ＰＨＹ１５０Ａ及び１５０Ｂのそれぞれは、プロトコルにおいて指定される初期化及び較正シーケンスのための状態機械を含む。
【００２２】
さらに、一実施形態では、ＰＨＹ１５０Ａ及び１５０Ｂのそれぞれは、セルフテスト、診断、ならびに誤差検出及び補正ハードウェアを含む。ＰＨＹ１５０Ａ及び１５０Ｂとメモリデバイス１６０Ａ、１６２Ａ、１６０Ｂ、及び１６２Ｂとの間の対応するインターフェースのプロトコル例には、ＤＤＲ２  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭ、ＧＤＤＲ４（Ｇｒａｐｈｉｃｓ  Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ、バージョン４）  ＳＤＲＡＭ、ＧＤＤＲ５  ＳＤＲＡＭ、及びＧＤＤＲ６  ＳＤＲＡＭが挙げられる。
【００２３】
示されるように、メモリチャネル１４０Ａはアドレス生成器１４２Ａ及び１４４Ａを含み、メモリチャネル１４０Ｂはアドレス生成器１４２Ｂ及び１４４Ｂを含む。さまざまな実施形態では、アドレス生成器１４２Ａ及び１４４Ａは、メモリコントローラ１３０Ａによって受信されるメモリ要求アドレスを、メモリデバイス１６０Ａ及び１６２Ａのうちの１つにおける任意のランク、任意のバンク、及び任意の行を識別する値に翻訳する。２つのアドレス生成器が示されるが、他の実施形態では、別の数のアドレス生成器がメモリコントローラ１３０Ａに含まれる。
【００２４】
いくつかの実施形態では、アドレス生成器１４４Ａは、アドレス生成器１４２Ａによって生成された第１のアドレスに対するオフセットとして第２のアドレスを生成する。１つの実施形態では、アドレス生成器１４４Ａは、第２のアドレスにおいて、メモリデバイス１６０Ａ及び１６２Ａのうちの１つ内の任意のランク、任意のバンク、及び任意の行を識別するために、アドレス生成器１４２Ａによって生成された第１のアドレスと同じ識別子を使用する。さらに、一実施形態では、第１のアドレスは、識別された行における要求される第１のデータの開始バイトを識別し、第２のアドレスは、第１のデータと重複しない要求される第２のデータの開始バイトを識別する。一実施形態では、第２のデータは識別された行における第１のデータに連続している。他の実施形態では、第２のデータは識別された行における第１のデータに連続していない。従って、単一のメモリコントローラ１３０Ａは、データ及びコマンドを２つのチャネル１５２Ａ及び１５４Ａに転送し、また、２つの異なる要求に対して同じ行におけるデータへの同時アクセスをサポートする。
【００２５】
さまざまな実施形態では、制御ユニット１３２Ａは、制御ユニット１３２Ａが第１のメモリ要求及び第２のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断する時、任意のメモリアクセスコマンドが、第１のメモリ要求、及び第１のメモリ要求と異なる第２のメモリ要求のそれぞれに応えるという指示を格納する。一実施形態では、任意の範囲のメモリアドレスは、メモリデバイス１６０Ａ及び１６２Ａのうちの１つにおけるメモリのページに対する範囲である。いくつかの実施形態では、制御ユニット１３０Ａは、任意のメモリアクセスコマンドが完了したとの判断に応答して、第１のメモリ要求及び第２のメモリ要求のそれぞれを完了とマークする。
【００２６】
図２を参照すると、メモリコントローラ２００の１つの実施形態の一般化されたブロック図が示されている。示された実施形態では、メモリコントローラ２００は、通信ファブリックを介したコンピューティングリソースに対するインターフェース２１０と、受信したメモリアクセス要求及び受信した応答を格納するためのキュー２２０と、制御ユニット２５０と、少なくとも物理インターフェース及び少なくとも２つのチャネルを介したメモリデバイスに対するインターフェース２８０と、を含む。インターフェース２１０及び２８０のそれぞれは、各通信プロトコルをサポートする。
【００２７】
一実施形態では、キュー２２０は、受信した読み出し要求を格納するための読み出しキュー２３２、及び受信した書き込み要求を格納するための別個の書き込みキュー２３４を含む。他の実施形態では、キュー２２０は、メモリ読み出し要求及びメモリ書き込み要求両方共を格納するための統一キューを含む。１つの実施形態では、キュー２２０は、読み出しキュー２３２、書き込みキュー２３４、または使用される場合は統一キューから選択された、スケジューリング済みメモリアクセス要求を格納するためのキュー２３６を含む。キュー２３６は、保留キュー２３６とも称される。いくつかの実施形態では、制御レジスタ２７０は現在のモードの指示を格納する。例えば、オフセットチップメモリデータバス及びメモリデバイスは、任意の時間で読み出しモードまたは書き込みモードのどちらかをサポートする。従って、トラフィックは、現在のモード中に任意の一方向にルーティングされ、かつ現在のモードが終了する時に方向を変更する。
【００２８】
いくつかの実施形態では、読み出しスケジューラ２５２は、読み出しキュー２３２からの読み出し要求を順不同で選択するためのアービトレーション論理を含む。読み出しスケジューラ２５２は、サービス品質（ＱｏＳ）または他の優先情報、期間、プロセスまたはスレッド識別子（ＩＤ）、及び、同じメモリチャネルを対象にすること、同じランクを対象にすること、同じバンクを対象にすること、及び／または同じページを対象にすることなどの他の格納された要求との関係に基づいて、メモリデバイスに対する読み出しキュー２３２内の格納済み要求の順不同の発行をスケジューリングする。書き込みスケジューラ２５４は、書き込みキュー２３４に対する同様の選択論理を含む。一実施形態では、応答スケジューラ２５６は、優先度に基づいて、メモリデバイスから受信されたコンピューティングリソースに対する応答を順不同で発行するための同様の論理を含む。
【００２９】
さまざまな実施形態では、コマンドプロセッサ２７２は、受信したメモリ要求を、読み出し／書き込みトランザクション、ならびにアクティブ化及びプリチャージトランザクションなどの１つまたは複数のトランザクション（またはコマンド）に翻訳する。いくつかの実施形態では、コマンドはキュー２３２〜２３６に格納される。他の実施形態では、別個のキューのセットが使用される。示されるように、制御ユニット２５０はアドレス生成器２６０及び２６２を含む。さまざまな実施形態では、アドレス生成器２６０及び２６２は、メモリコントローラ１３０Ａによって受信されたメモリ要求アドレスを、メモリコントローラ２００に接続されるメモリデバイスのうちの１つにおける、任意のランク、任意のバンク、及び任意の行を識別する値に翻訳する。２つのアドレス生成器が示されているが、他の実施形態では、別の数のアドレス生成器が制御ユニット２５０に含まれる。
【００３０】
いくつかの実施形態では、アドレス生成器２６２は、アドレス生成器２６０によって生成される第１のアドレスに対するオフセットとして第２のアドレスを生成する。１つの実施形態では、アドレス生成器２６２は、第２のアドレスにおいて、メモリデバイスのうちの１つ内の、任意のランク、任意のバンク、及び任意の行を識別するために第１のアドレスと同じ識別子を使用する。さらに、一実施形態では、第１のアドレスは、識別された行における要求されるデータの開始バイトを識別し、第２のアドレスは、第１のデータと重複せず、かつ識別された行における第１のデータに連続していない要求されるデータの開始バイトを識別する。従って、単一のメモリコントローラ２００は、データ及びコマンドを少なくとも２つのチャネルに転送し、また、不連続データへの同時アクセスをサポートする。
【００３１】
さまざまな実施形態では、制御ユニット２５０は、第１のメモリ要求及び第２のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にしていると制御ユニット２５０が判断する時、キュー２２０に格納される任意のメモリアクセスコマンドが、キュー２２０に格納される、第１のメモリ要求、及び第１のメモリ要求と異なる第２のメモリ要求のそれぞれに応えるという指示を格納する。一実施形態では、任意の範囲のメモリアドレスは、メモリデバイスのうちの１つにおけるメモリのページに対するアドレス範囲である。いくつかの実施形態では、制御ユニット２５０は、任意のメモリアクセスコマンドが完了したとの判断に応答して、第１のメモリ要求及び第２のメモリ要求のそれぞれを完了とマークする。
【００３２】
いくつかの実施形態では、制御レジスタ２７０は現在のモードの指示を格納する。例えば、メモリデータバス及びメモリデバイスは、任意の時間で読み出しモードまたは書き込みモードどちらかをサポートする。従って、トラフィックは、現在のモード中に任意の一方向にルーティングされ、かつデータバスのターンアラウンドレイテンシの後に現在のモードが変更される時に方向を変更する。さまざまな実施形態では、制御レジスタ２７０は、読み出しモード中に送るために読み出し要求数の閾値（読み出しバースト長）を格納する。いくつかの実施形態では、制御レジスタ２７０は、発行するためにキュー２３２〜２３６に格納される要求を選択するために読み出しスケジューラ２５２及び書き込みスケジューラ２５４における選択アルゴリズムによって使用される基準に対する重みを格納する。
【００３３】
コンピューティングシステム１００と同様に、２つのメモリチャネルをメモリコントローラ２００に接続することは、「連動させること」と称される。物理インターフェースを介してメモリコントローラ２００に接続される少なくとも２つのチャネルのそれぞれは、選択されたメモリデバイス内の同じページにおけるデータにアクセスする同じコマンドを受信する。さらに、それぞれのチャネルはこれ自体のアドレスを有する。例えば、第１のチャネルはアドレス生成器２６０から第１のアドレスを受信し、第１のチャネルと異なる第２のチャネルはアドレス生成器２６２から第２のアドレスを受信する。一実施形態では、アドレス生成器２６０及び２６２によって生成されるアドレスは、ＤＲＡＭ用の列アドレスである。さまざまな実施形態では、メモリコントローラ２００は不連続データに同時にアクセスする。
【００３４】
いくつかの実施形態では、メモリコントローラ２００はＧＤＤＲ６  ＤＲＡＭプロトコルをサポートする。このような実施形態では、インターフェース２８０は、１６ビット（２バイト）の幅を有する（２つのチャネルの）１チャネル当たりの読み出し及び書き込みトランザクションをサポートし、バースト長は１６である。２つの連動した１６ビット幅のチャネルは、３２ビット（４バイト）幅のチャネルに相当するものを提供する。６４バイト要求について、２つのチャネル及び１６のバースト長によって提供される、３２ビット（４バイト）幅に相当するチャネルは、６４バイトメモリ要求に応えるために６４バイトを転送する。２つのチャネルは連動し、メモリコントローラ２００は両方の１６ビット幅のインターフェースを管理する。
【００３５】
ＧＤＤＲ６プロトコルを使用する実施形態では、制御ユニット２５０は、３２バイト要求に対する２つの独立した３２バイトのインターフェースとして６４バイトのインターフェースを管理する。一実施形態では、制御ユニット２５０は、両方の１６ビットチャネルにわたって同じページを同時に開くためのコマンドを送る。例えば、制御ユニット２５０は、２つのチャネルのそれぞれに対するアクティブ化コマンドを同時に発行し、かつ２つのチャネルのそれぞれに対するメモリアクセスコマンドを同時に発行するが、制御ユニット２５０は、開かれたページに同時にかつ独立してアクセスするためにアドレス生成器２６０及び２６２を介して２つの異なるアドレスを送る。不連続データでもある（同じページ内の）隣接するデータには同時にアクセスする。従って、メモリコントローラ２００は、単一の３２バイトメモリ要求に対して６４バイトを転送せず、６４バイトのうちの３２バイトを破棄し、これは非効率的である。もっと正確に言えば、メモリコントローラ２００は、メモリの１ページ内など、メモリアドレスの範囲内の不連続データにアクセスする２つの３２バイトメモリ要求に対して６４バイトを転送する。
【００３６】
いくつかの実施形態では、制御ユニット２５０は、２つの３２バイトメモリ要求がメモリデバイスのうちの１つにおける同じページ内の不連続データにアクセスする時を判断する。他の実施形態では、ＧＰＵなどのクライアントは、２つの３２バイトメモリ要求がメモリデバイスのうちの１つにおける同じページにアクセスする時を判断する。クライアントは、同じページ内の不連続データを対象にする２つの３２バイト要求があることを指定する指示と共に６４バイトメモリ要求を送る。一実施形態では、制御ユニット２５０が６４バイトコマンドを発行する時、アドレス生成器２６２からのアドレスは無視される。
【００３７】
ここで図３を参照すると、コンピューティングシステムに対する効率的なメモリアクセスを行うための方法３００の１つの実施形態が示されている。論述の目的で、この実施形態における（及び図４における）ステップは、順番に示されている。しかしながら、説明される方法のさまざまな実施形態において、説明される要素の１つまたは複数が、示されるのとは異なる順序で同時に行われる、または完全に省略されることは留意されたい。他のさらなる要素も要望通りに行われる。本明細書に説明されるさまざまなシステムまたは装置のいずれかは、方法３００を実施するように構成される。
【００３８】
１つまたは複数のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。クライアントは、任意のメモリアクセス要求がキャッシュメモリサブシステム内で見落とされていると判断し、メモリコントローラを介してシステムメモリにメモリアクセス要求を送る。メモリ要求は、受信されると格納される（ブロック３０２）。受信したメモリ要求がサイズ閾値より小さいデータサイズを有するデータを要求しない場合（条件ブロック３０４の「いいえ」ブランチ）、メモリ要求はコマンドに翻訳される（ブロック３１０）。いくつかの実施形態では、メモリ要求は、６４バイト及び３２バイトのサイズを有するデータを要求する。一実施形態では、サイズ閾値は６４バイトで設定される。従って、６４バイトのデータサイズを有するデータを要求するメモリ要求は、サイズ閾値より小さいデータサイズを有するデータを要求しない。
【００３９】
さまざまな実施形態では、メモリ読み出し要求などのメモリ要求は、アクセスしているメモリに基づいて１つまたは複数のコマンドに変換される。例えば、ＤＲＡＭ内の制御論理は、識別された行に一度アクセスするために、及び、行バッファに格納された修正済みコンテンツをクローズトランザクション中に識別された行に一度戻すために、ＤＲＡＭ内のデータライン及び制御ラインのアクティブ化（オープン）トランザクション及びプリチャージなどの複雑なトランザクションを行う。アクティブ化／オープン、列アクセス、読み出しアクセス、書き込みアクセス、及びプリチャージ／クローズなどの異なるＤＲＡＭトランザクションのそれぞれは、異なる対応するレイテンシを有する。
【００４０】
メモリアクセスコマンドは、メモリ要求に応えるために発行するようにスケジューリングされる（ブロック３１２）。いくつかの実施形態では、メモリアクセスコマンドは、少なくとも、対応するメモリ要求の優先度及び対象に基づく順不同の発行に対してマークされる。他の実施形態では、メモリ要求は、コマンドへの翻訳の前にスケジューリングされる。従って、メモリコントローラはメモリ要求に対する順不同の発行をサポートする。
【００４１】
受信したメモリ要求がサイズ閾値より小さいデータサイズを有し（条件ブロック３０４の「はい」ブランチ）、かつ第１のメモリ要求及び第２のメモリ要求が同じ任意のアドレス範囲を対象にしない（条件ブロック３０６の「いいえ」ブランチ）場合、方法３００はブロック３１０に移り、ここで、メモリ要求はコマンドに翻訳される。しかしながら、受信したメモリ要求がメモリデータバスのサイズより小さいデータサイズを有し（条件ブロック３０４の「はい」ブランチ）、かつ第１のメモリ要求及び第２のメモリ要求が同じ任意のアドレス範囲を対象にする（条件ブロック３０６の「はい」ブランチ）場合、任意のメモリアクセスコマンドが、第１のメモリ要求及び第２のメモリ要求のそれぞれに応えるという指示が格納される（ブロック３０８）。その後、方法３００はブロック３１０に移り、ここで、メモリ要求はコマンドに翻訳される。
【００４２】
図４に移ると、コンピューティングシステムに対する効率的なメモリアクセスを行うための方法４００の１つの実施形態が示されている。任意のメモリアクセスコマンドが第１のメモリ要求及び第２のメモリ要求のそれぞれに応えるという指示が検出される（ブロック４０２）。任意のメモリアクセスコマンドはメモリデバイスに送られる（ブロック４０４）。例えば、メモリコントローラにおけるスケジューリング論理は、優先レベル及び期間などに基づいてメモリデバイスに対して発行するための任意のメモリアクセスコマンドを選択する。
【００４３】
メモリコントローラは、メモリデバイスに、第１のデータを格納するメモリデバイスにおける第１の場所を指し示す第１のアドレスを送る（ブロック４０６）。メモリコントローラは、メモリデバイスに、第１のデータに連続していない第２のデータを格納するメモリデバイスにおける第２の場所を指し示す第２のアドレスを送る（ブロック４０８）。第１のメモリ要求及び第２のメモリ要求のそれぞれは、任意のメモリアクセスコマンドが完了したとの判断に応答して完了とマークされる（ブロック４１０）。
【００４４】
さまざまな実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、先に説明した方法及び／または機構を実施する。プログラム命令は、Ｃなどの高水準プログラミング言語でハードウェアの挙動を表す。代替的には、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は非一時的なコンピュータ可読記憶媒体上に格納される。多数のタイプの記憶媒体が利用可能である。記憶媒体には、プログラム実行のためにコンピューティングシステムにプログラム命令及び付随のデータを提供するために使用中のコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、プログラム命令を実行するように構成される、少なくとも１つまたは複数のメモリ及び１つまたは複数のプロセッサを含む。
【００４５】
上述した実施形態が実施態様の非限定的な例に過ぎないことは、強調されるべきである。上記の開示を十分に理解することで、多数の変形及び修正が当業者には明らかとなるであろう。下記の特許請求の範囲がこのような変形及び修正全てを含んでいると解釈されることが意図される。
【図１】
2021507414.tif 000003
【図２】
2021507414.tif 000004
【図３】
2021507414.tif 000005
【図４】
2021507414.tif 000006
【国際調査報告】
2021507414.tif 000007
2021507414.tif 000008
2021507414.tif 000009