(57)【要約】一形態では、メモリコントローラは、コマンドキューと、アービタと、を含む。コマンドキューは、メモリアクセス要求を受信して記憶する。アービタは、コントローラサイクル中にメモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供する複数のサブアービタであって、対応するコントローラサイクルにおいて複数のメモリコマンドを提供するために複数のサブアービトレーション勝者の中から何れかを選択する複数のサブアービタを含む。他の形態では、データ処理システムは、メモリアクセス要求を提供するメモリアクセスエージェントと、メモリシステムと、メモリアクセスエージェント及びメモリシステムに接続されたメモリコントローラと、を含む。【選択図】図６
2019525271.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセス要求を受信し、記憶するコマンドキュー（５２０）と、
コントローラサイクル中に前記メモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供する複数のサブアービタ（６０５）であって、対応するコントローラサイクルにおいて複数のメモリコマンドを提供するために前記複数のサブアービトレーション勝者の中から何れかを選択する複数のサブアービタ（６０５）を備えるアービタ（５３８）と、を備える、
メモリコントローラ（５００）。
【請求項２】
メモリコマンドサイクルは前記対応するコントローラサイクルよりも短い、
請求項１のメモリコントローラ（５００）。
【請求項３】
前記コントローラサイクルは、コントローラクロック信号によって定義され、
前記メモリコマンドサイクルは、メモリクロック信号によって定義され、
前記メモリクロック信号は、前記コントローラクロック信号よりも高い周波数を有する、
請求項２のメモリコントローラ（５００）。
【請求項４】
前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数の２倍である、
請求項３のメモリコントローラ（５００）。
【請求項５】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第１サブアービタ（６１０）であって、コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第１サブアービトレーション勝者を決定する第１サブアービタ（６１０）と、
前記コマンドキュー（５２０）に接続された第２サブアービタ（６２０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内の前記アクティブエントリの中から前記第１サブアービトレーション勝者とは異なる第２サブアービトレーション勝者を決定する第２サブアービタ（６２０）と、を備え、
前記メモリコントローラ（５００）は、メモリクロック信号の第１サイクルにおいて前記第１サブアービトレーション勝者を第１メモリコマンドとして出力し、前記メモリクロック信号の後続のサイクルにおいて前記第２サブアービトレーション勝者を第２メモリコマンドとして出力するように動作し、前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数よりも高い、
請求項１のメモリコントローラ（５００）。
【請求項６】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第３サブアービタ（６３０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第３サブアービトレーション勝者を決定する第３サブアービタ（６３０）を備える、
請求項５のメモリコントローラ（５００）。
【請求項７】
前記アービタ（５３８）は、
前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者及び前記第３サブアービトレーション勝者の中から２つの最終アービトレーション勝者を選択し、前記２つの最終アービトレーション勝者を前記第１メモリコマンド及び前記第２メモリコマンドとして提供する最終アービタ（６５０）を備える、
請求項６のメモリコントローラ（５００）。
【請求項８】
前記最終アービタ（６５０）は、前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者、前記第３サブアービトレーション勝者及びオーバヘッドコマンドの中から前記２つの最終アービトレーション勝者を選択する、
請求項７のメモリコントローラ（５００）。
【請求項９】
前記オーバヘッドコマンドは、パワーダウンコマンド、オートリフレッシュコマンド及び較正コマンドのうち何れかを含む、
請求項８のメモリコントローラ（５００）。
【請求項１０】
前記複数のサブアービタ（６０５）は、前記第１サブアービタ（６１０）、前記第２サブアービタ（６２０）及び前記第３サブアービタ（６３０）のうち何れかと同じタイプの少なくとも１つの他のサブアービタを備え、
前記最終アービタ（６５０）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項７のメモリコントローラ（５００）。
【請求項１１】
前記第１サブアービタ（６１０）は、前記コマンドキュー（５２０）内のページヒットコマンドから前記第１サブアービトレーション勝者を選択し、
前記第２サブアービタ（６２０）は、前記コマンドキュー（５２０）内のページ競合コマンドから前記第２サブアービトレーション勝者を選択し、
前記第３サブアービタ（６３０）は、前記コマンドキュー（５２０）内のページミスコマンドから前記第３サブアービトレーション勝者を選択する、
請求項６のメモリコントローラ（５００）。
【請求項１２】
前記複数のサブアービタ（６０５）の各々は、前記コマンドキュー（５２０）内の関連するタイプのコマンドの中からアービトレーション勝者を選択し、
前記複数のサブアービタ（６０５）のうち少なくとも２つは、同じタイプのアービトレーション勝者を選択し、
前記アービタ（５３８）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項１のメモリコントローラ（５００）。
【請求項１３】
メモリアクセス要求を提供するメモリアクセスエージェント（１１０，２１０，２２０）と、
メモリシステム（１２０）と、
前記メモリアクセスエージェント（１１０，２１０，２２０）及び前記メモリシステム（１２０）に接続されたメモリコントローラ（２９２，５００）と、を備え、
前記メモリコントローラ（２９２，５００）は、
前記メモリアクセスエージェント（１１０，２１０，２２０）から受信したメモリアクセスコマンドを記憶するコマンドキュー（５２０）と、
コントローラサイクル中に前記メモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供する複数のサブアービタ（６０５）であって、対応するコントローラサイクルにおいて複数のメモリコマンドを提供するために前記複数のサブアービトレーション勝者の中から何れかを選択する複数のサブアービタ（６０５）を備えるアービタ（５３８）と、を備える、
データ処理システム（１００）。
【請求項１４】
前記メモリアクセスエージェントは、
中央処理ユニットコア（２１２，２１４）と、
グラフィックス処理ユニットコア（２２０）と、
前記中央処理ユニットコア（２１２，２１４）及び前記グラフィックス処理ユニットコア（２２０）を前記メモリコントローラ（２９２，５００）に相互接続するデータファブリック（２５０）と、を備える、
請求項１３のデータ処理システム（１００）。
【請求項１５】
メモリコマンドサイクルは前記コントローラサイクルよりも短い、
請求項１３のデータ処理システム（１００）。
【請求項１６】
前記コントローラサイクルは、コントローラクロック信号によって定義され、
前記メモリコマンドサイクルは、メモリクロック信号によって定義され、
前記メモリクロック信号は、前記コントローラクロック信号よりも高い周波数を有する、
請求項１５のデータ処理システム（１００）。
【請求項１７】
前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数の２倍である、
請求項１６のデータ処理システム（１００）。
【請求項１８】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第１サブアービタ（６１０）であって、コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第１サブアービトレーション勝者を決定する第１サブアービタ（６１０）と、
前記コマンドキュー（５２０）に接続された第２サブアービタ（６２０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内の前記アクティブエントリの中から前記第１サブアービトレーション勝者とは異なる第２サブアービトレーション勝者を決定する第２サブアービタ（６２０）と、を備え、
前記メモリコントローラ（５００）は、メモリクロック信号の第１サイクルにおいて前記第１サブアービトレーション勝者を第１メモリコマンドとして出力し、前記メモリクロック信号の後続のサイクルにおいて前記第２サブアービトレーション勝者を第２メモリコマンドとして出力するように動作し、前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数よりも高い、
請求項１３のデータ処理システム（１００）。
【請求項１９】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第３サブアービタ（６３０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第３サブアービトレーション勝者を決定する第３サブアービタ（６３０）を備える、
請求項１８のデータ処理システム（１００）。
【請求項２０】
前記アービタ（５３８）は、
前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者及び前記第３サブアービトレーション勝者の中から２つの最終アービトレーション勝者を選択し、前記２つの最終アービトレーション勝者を前記第１メモリコマンド及び前記第２メモリコマンドとして提供する最終アービタ（６５０）を備える、
請求項１９のデータ処理システム（１００）。
【請求項２１】
前記複数のサブアービタ（６０５）は、前記第１サブアービタ（６１０）、前記第２サブアービタ（６２０）及び前記第３サブアービタ（６３０）のうち何れかと同じタイプの少なくとも１つの他のサブアービタを備え、
前記最終アービタ（６５０）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項２０のデータ処理システム（１００）。
【請求項２２】
前記第１サブアービタ（６１０）は、前記コマンドキュー（５２０）内のページヒットコマンドから前記第１サブアービトレーション勝者を選択し、
前記第２サブアービタ（６２０）は、前記コマンドキュー（５２０）内のページ競合コマンドから前記第２サブアービトレーション勝者を選択し、
前記第３サブアービタ（６３０）は、前記コマンドキュー（５２０）内のページミスコマンドから前記第３サブアービトレーション勝者を選択する、
請求項１９のデータ処理システム（１００）。
【請求項２３】
前記複数のサブアービタ（６０５）の各々は、前記コマンドキュー（５２０）内の関連するタイプのコマンドの中からアービトレーション勝者を選択し、
前記複数のサブアービタ（６０５）のうち少なくとも２つは、同じタイプのアービトレーション勝者を選択し、
前記アービタ（５３８）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項１３のデータ処理システム（１００）。
【請求項２４】
複数のメモリアクセス要求を受信することと、
前記複数のメモリアクセス要求をコマンドキュー（５２０）に記憶することと、
前記コマンドキュー（５２０）からメモリアクセス要求を選択することであって、第１コントローラサイクル中に前記メモリアクセス要求の中から複数のサブアービトレーション勝者を選択することと、対応するコントローラサイクルにおいて複数のメモリコマンドを提供するために前記複数のサブアービトレーション勝者の中から何れかを選択することとを含む、ことと、を含む、
方法。
【請求項２５】
前記複数のサブアービトレーション勝者を選択することは、
前記コマンドキュー（５２０）内のページヒットコマンドから第１サブアービトレーション勝者を選択することと、
前記コマンドキュー（５２０）内のページ競合コマンドから第２サブアービトレーション勝者を選択することと、
前記コマンドキュー（５２０）内のページミスコマンドから第３サブアービトレーション勝者を選択することと、を含む、
請求項２４の方法。
【請求項２６】
前記コマンドキュー内の前記ページヒットコマンド、前記ページ競合コマンド及び前記ページミスコマンドのうち何れかから第４サブアービトレーション勝者を選択することと、
前記第１コントローラサイクルにおいて、前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者、前記第３サブアービトレーション勝者及び前記第４サブアービトレーション勝者の中から同じタイプの２つの最終アービトレーション勝者を選択することと、を含む、
請求項２５の方法。
【請求項２７】
対応する第２の複数のメモリサイクルにおいて第２の複数のメモリコマンドを提供するために、前記複数のサブアービトレーション勝者及びオーバヘッドコマンドの中から何れかを選択することを含む、
請求項２４の方法。
【請求項２８】
前記オーバヘッドコマンドを、パワーダウンコマンド、オートリフレッシュコマンド及び較正コマンドのうち何れかとして提供することを含む、
請求項２７の方法。
【請求項２９】
前記複数のメモリコマンドを提供するために前記複数のサブアービトレーション勝者の中から何れかを選択することは、
対応するメモリコマンドサイクルにおいて前記複数のメモリコマンドを提供するために前記複数のサブアービトレーション勝者の中から何れかを選択することであって、前記メモリコマンドサイクルは前記コントローラサイクルよりも短い、ことを含む、
請求項２４の方法。
【請求項３０】
前記第１コントローラサイクル中に前記メモリアクセス要求の中から複数のサブアービトレーション勝者を選択することは、前記第１コントローラサイクル中に前記メモリアクセス要求の中から同じタイプの第１の複数のサブアービトレーション勝者を選択することを含み、
前記第１コントローラサイクル中に前記同じタイプの２つの最終アービトレーション勝者を選択することをさらに含む、
請求項２４の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳細には、高速メモリインタフェースを有するデータ処理システムで使用されるメモリコントローラに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリとして使用する。今日販売されている多くのＤＲＡＭチップは、半導体技術協会（ＪＥＤＥＣ：Joint Electron Devices Engineering Council）によって公布された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＤＤＲ  ＤＲＡＭは、高速アクセス回路を有する従来のＤＲＡＭメモリセルアレイを使用して、高い転送レートを達成し、メモリバスの利用を改善する。例えば、ＤＤＲ４  ＤＲＡＭは、１２〜１５ナノ秒（ｎｓ）のアクセス時間を必要とするメモリセルアレイを使用するが、１．６ギガヘルツ（ＧＨｚ）のメモリクロック周波数に対応して最大３．２ギガトランスファー毎秒（ＧＴ／秒）の速度で大量のデータにアクセスし、データをシリアル化する。転送は、良好な伝送ライン性能のために、オンダイターミネーション（on-die termination）を有する疑似オープンドレイン技術を使用する。そのレートでポイントツーポイントインタフェースを動作させて高速転送を達成することが可能であるが、メモリコントローラがメモリアクセスをスケジュールするのに十分な速度で動作することが、ますます困難になっている。
【０００３】
典型的なＤＤＲメモリコントローラは、待ち状態の読出し及び書込み要求を記憶するためにキューを維持して、メモリコントローラが、待ち状態の要求をアウトオブオーダで選択することによって、効率を高めるのを可能にする。例えば、メモリコントローラは、現在の行をプリチャージし、別の行を繰り返しアクティブにするオーバヘッドを回避するために、メモリの所定ランク内の同じ行に対する複数のメモリアクセス要求（「ページヒット」と呼ばれる）をアウトオブオーダでキューから取り出し、これらの要求を連続してメモリシステムに発行することができる。しかしながら、ＤＤＲ４等の最新のメモリ技術で利用可能なバス帯域幅を活用しながら、深いキューからのアクセスをスキャン及び取り出すことを、既知のメモリコントローラを用いて達成することが困難になってきている。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアクセラレーテッドプロセッシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、図５のアービタとして使用され得るアービタのブロック図である。
【発明を実施するための形態】
【０００５】
以下の説明において、異なる図面において同じ参照番号を使用することは、類似又は同一の項目を示している。特に断らない限り、「接続された」という用語及びこれに関連する動詞形は、当技術分野において既知の手段による直接接続及び間接的な電気接続の両方を含む。特に断らない限り、直接接続の説明は、適切な形態の間接的な電気接続を使用する代替の実施形態をも意味する。
【０００６】
以下の一形態で説明するように、メモリコントローラは、コマンドキューと、アービタと、を含む。コマンドキューは、メモリアクセス要求を受信及び記憶するためのものである。アービタは、コントローラサイクル中にメモリアクセス要求の中から対応する複数のサブアービトレーションの勝者（winner）を提供する複数のサブアービタを含み、複数のサブアービトレーションの勝者の中から何れかを選択して、対応するコントローラサイクルにおいて複数のメモリコマンドを提供する。いくつかの実施形態では、メモリコマンドサイクルは、コントローラサイクルより短くてもよい。例えば、コントローラは、コントローラクロック信号に従って動作する一方で、メモリサイクルは、コントローラクロック信号よりも高い周波数を有するメモリクロック信号によって規定される。複数のサブアービタは、コマンドキュー内のページヒットコマンドの中から第１サブアービトレーション勝者を選択する第１サブアービタと、コマンドキュー内のページ競合コマンドの中から第２サブアービトレーション勝者を選択する第２サブアービタと、コマンドキュー内のページミスコマンドの中から第３サブアービトレーション勝者を選択する第３サブアービタと、を含むことができる。アービタは、第１サブアービトレーション勝者、第２サブアービトレーション勝者、及び、第３サブアービトレーション勝者の中から何れかを選択するための最終アービタ（final arbiter）をさらに含むことができる。
【０００７】
別の形態では、データ処理システムは、複数のメモリアクセス要求を提供するメモリアクセスエージェントと、メモリシステムと、メモリアクセスエージェント及びメモリシステムに接続されたメモリコントローラと、を含む。メモリコントローラは、コマンドキューと、アービタとを含む。コマンドキューは、メモリアクセスエージェントから受信したメモリアクセスコマンドを記憶する。アービタは、コントローラサイクル中にメモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供し、複数のサブアービトレーション勝者の中から何れかを選択して、対応するコントローラサイクルにおいて複数のメモリコマンドを提供する複数のサブアービタを含む。
【０００８】
さらに別の形態では、性能及び効率を向上させるために、メモリアクセス要求間でアービトレーションを行う方法を使用することができる。複数のメモリアクセス要求が受信され、コマンドキューに記憶される。第１コントローラサイクル中に、メモリアクセス要求の中から複数のサブアービトレーション勝者が選択される。複数のサブアービトレーション勝者の中から複数のメモリコマンドが選択され、対応する複数のメモリコマンドサイクルにおいて提供される。
【０００９】
図１は、いくつかの実施形態によるデータ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、周辺機器相互接続エクスプレス（ＰＣＩｅ）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネルと、ＰＣＩｅリンクへの接続用のＰＣＩｅルートコンプレックスと、ＵＳＢネットワークへの接続用のＵＳＢコントローラと、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースと、が含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、本例において別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、例えばリードオンリメモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ＧＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等の最新のＤＤＲメモリに接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。本例において、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンド等のグラフィックス操作を、高度に統合された並列形式で実行することの可能な高性能グラフィックス処理ユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有するユニファイドメモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャをサポートしてもよいが、グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０は、システムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２２】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロック源（例えば位相同期ループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２３】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２４】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２５】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２６】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、再生キュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００２７】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００２８】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表わされる物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００２９】
再生キュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長検査（ＣＲＣ）応答、又は、ＧＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているか否かを判別する。再生キュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再生されるのを可能にする。
【００３０】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、及び、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、オートリフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。また、リフレッシュロジック５３２は、どの場合にＤＲＡＭデバイスを別のパワーダウンモードにするのかを決定する。
【００３１】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、同じバンクへの起動コマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、再生キュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、再生キュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３２】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３３】
電力コントローラ５５０は、アドバンストエクテンシブルインタフェースバージョン１（ＡＸＩ）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「イベント＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みトレーニングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みトレーニングエンジン５６８は、ＤＤＲインタフェース読出しレイテンシトレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３４】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３５】
図６は、いくつかの実施形態による、図５のメモリコントローラ５００の一部６００のブロック図である。この一部６００は、アービタ５３８と、アービタ５３８の動作に関連する制御回路６６０のセットと、を含む。アービタ５３８は、サブアービタ６０５のセットと、最終アービタ６５０と、を含む。サブアービタ６０５は、サブアービタ６１０と、サブアービタ６２０と、サブアービタ６３０と、を含む。サブアービタ６１０は、「ＰＨ  ＡＲＢ」と付されたページヒットアービタ６１２と、出力レジスタ６１４と、を含む。ページヒットアービタ６１２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６１４は、ページヒットアービタ６１２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。サブアービタ６２０は、「ＰＣ  ＡＲＢ」と付されたページ競合アービタ６２２と、出力レジスタ６２４と、を含む。ページ競合アービタ６２２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６２４は、ページ競合アービタ６２２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。サブアービタ６３０は、「ＰＭ  ＡＲＢ」と付されたページミスアービタ６３２と、出力レジスタ６３４と、を含む。ページミスアービタ６３２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６３４は、ページミスアービタ６３２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。最終アービタ６５０は、リフレッシュロジック５３２の出力に接続された第１入力と、ページクローズプレディクタ６６２からの第２入力と、出力レジスタ６１４の出力に接続された第３入力と、出力レジスタ６２４の出力に接続された第４入力と、出力レジスタ６３４の出力に接続された第５入力と、「ＣＭＤ１」と付された第１出力であって、第１アービトレーション勝者をキュー５１４に提供するための第１出力と、「ＣＭＤ２」と付された第２出力であって、第２アービトレーション勝者をキュー５１４に提供するための第２出力と、を有する。
【００３６】
制御回路６６０は、図５に関して上述したように、タイミングブロック５３４と、ページテーブル５３６と、ページクローズプレディクタ６６２と、を含む。タイミングブロック５３４は、入力と、ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々の第１入力に接続された出力と、を有する。ページテーブル５３４は、再生キュー５３０の出力に接続された入力と、再生キュー５３０の入力に接続された出力と、コマンドキュー５２０の入力に接続された出力と、タイミングブロック５３４の入力に接続された出力と、ページクローズプレディクタ６６２の入力に接続された出力と、を有する。ページクローズプレディクタ６６２は、ページテーブル５３６の１つの出力に接続された入力と、出力レジスタ６１４の出力に接続された入力と、最終アービタ６５０の第２入力に接続された出力と、を有する。
【００３７】
アービタ５３８は、動作中、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮することによって、メモリアクセス要求（コマンド）をコマンドキュー５２０及びリフレッシュロジック５３２から選択する。優先度は、ＡＸＩ４バスから受信されコマンドキュー５２０に記憶された要求のサービス品質（即ちＱｏＳ）に関連するが、メモリアクセスのタイプ、及び、アービタ５３８のダイナミック動作に基づいて変更され得る。アービタ５３８は、既存の集積回路技術の処理制限と伝送制限との間の不整合に対処するために並行して動作する３つのサブアービタを含む。各サブアービトレーションの勝者は、最終アービタ６５０に提示される。最終アービタ６５０は、これらの３つのサブアービトレーション勝者のうち何れかを、リフレッシュロジック５３２からのリフレッシュ動作と同様に選択し、読出し又は書込みコマンドを、ページクローズプレディクタ６６２によって決定された自動プリチャージ付き読出し又は書込みコマンドにさらに変更してもよい。
【００３８】
ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々は、タイミングブロック５３４の出力に接続された入力を有しており、これらの各々のカテゴリに入るコマンドキュー５２０内のコマンドのタイミング適格性を判断する。タイミングブロック５３４は、各ランクの各バンクの特定の動作に関連する期間をカウントするバイナリカウンタのアレイを含む。状態を判断するのに必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンク数、及び、所定のメモリチャネル上のシステムによってサポートされるランク数に依存する。次に、順番に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、ＧＤＤＲ５メモリは、他のＤＤＲｘメモリタイプよりも多くのタイミングパラメータに対応するために、より多くのタイマを必要とする。タイミングブロック５３４は、バイナリカウンタとして実装されたジェネリックタイマのアレイを含むことによって、異なるメモリタイプに対して調整され、再利用され得る。
【００３９】
ページヒットは、オープンページに対する読出し又は書込みサイクルである。ページヒットアービタ６１２は、オープンページに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。タイミングブロック５３４内のタイマによって追跡され、ページヒットアービタ６１２によってチェックされるタイミング適格性パラメータは、例えば、列アドレスストローブ（ＣＡＳ）に対する行アドレスストローブ（ＲＡＳ）の遅延時間（ｔＲＣＤ）及びＣＡＳレイテンシ（ｔＣＬ）を含む。例えば、ｔＲＣＤは、ＲＡＳサイクルでページが開かれた後に当該ページに読出し又は書込みアクセスする前に経過する必要がある最小時間を指定する。ページヒットアービタ６１２は、アクセスの割り当てられた優先度に基づいて、サブアービトレーション勝者を選択する。一実施形態では、優先度は４ビットのワンホット値であり、４つの値の中で優先度を示しているが、この４つのレベルの優先度スキームが単なる一例に過ぎないことは明らかである。ページヒットアービタ６１２が同じ優先度レベルで２つ以上の要求を検出した場合、最も古いエントリが勝者となる。
【００４０】
ページ競合は、バンク内の他の行が現在アクティブ化されているときの当該バンク内の或る行へのアクセスである。ページ競合アービタ６２２は、対応するバンク及びランクで現在オープンのページと競合するページに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。ページ競合アービタ６２２は、プリチャージコマンドの発行を引き起こすサブアービトレーション勝者を選択する。タイミングブロック５３４でタイマによって追跡され、ページ競合アービタ６２２によってチェックされるタイミング適格性パラメータは、例えば、ａｃｔｉｖｅ  ｔｏ  ｐｒｅｃｈａｒｇｅコマンド期間（ｔＲＡＳ）を含む。ページ競合アービタ６２２は、アクセスの割り当てられた優先度に基づいて、サブアービトレーション勝者を選択する。ページ競合アービタ６２２が同じ優先度レベルで２つ以上の要求を検出した場合、最も古いエントリが勝者となる。
【００４１】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ６３２は、プリチャージされたメモリバンクに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。タイミングブロック５３４でタイマによって追跡され、ページミスアービタ６３２によってチェックされるタイミング適格性パラメータは、例えば、ｐｒｅｃｈａｒｇｅコマンド期間（ｔＲＰ）を含む。同じ優先度レベルでページミスである２つ以上の要求が存在する場合、最も古いエントリが勝者となる。
【００４２】
各サブアービタは、各々のサブアービトレーション勝者の優先度値を出力する。最終アービタ６５０は、ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々からのサブアービトレーション勝者の優先度値を比較する。最終アービタ６５０は、一度に２つのサブアービトレーション勝者を考慮して、相対優先度比較のセットを実行することによって、サブアービトレーション勝者間の相対優先度を決定する。
【００４３】
最終アービタ６５０は、３つのサブアービトレーション勝者間の相対優先度を決定した後に、サブアービトレーション勝者が競合するか否か（即ち、それらが同じバンク及びランクを対象としているかどうか）を判断する。かかる競合がない場合、最終アービタ６５０は、最高の優先度を有する最大２つのサブアービトレーション勝者を選択する。競合が生じた場合、最終アービタ６５０は、以下のルールに従う。最終アービタ６５０は、ページヒットアービタ６１２のサブアービトレーション勝者の優先度値がページ競合アービタ６２２の優先度値よりも高く、これらが両方とも同じバンク及びランクに対するものである場合に、ページヒットアービタ６１２によって示されたアクセスを選択する。最終アービタ６５０は、ページ競合アービタ６２２のサブアービトレーション勝者の優先度値がページヒットアービタ６１２の優先度値よりも高く、これらが両方とも同じバンク及びランクに対するものである場合に、いくつかの追加要因に基づいて勝者を選択する。場合によっては、ページクローズプレディクタ６６２は、自動プリチャージ属性を設定することによって、ページヒットアービタ６１２によって示されたアクセスの終了時にページを閉じる。
【００４４】
ページヒットアービタ６１２内では、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ（読出し又は書込み）及びアクセスのシーケンスに基づいて動的に調整される。概して、ページヒットアービタ６１２は、読出しに対してより高い暗黙の優先度を割り当てるが、書込みが完了に向けて進行するのを保証するための優先度上昇メカニズムを実装する。
【００４５】
ページクローズプレディクタ６６２は、ページヒットアービタ６１２が読出し又は書込みコマンドを選択すると、自動プリチャージ（ＡＰ）属性を有するコマンドを送信するか否かを決定する。読出し又は書込みサイクル中、自動プリチャージ属性は、事前に定義されたアドレスビットで設定されており、読出し又は書込みサイクルが完了した後に自動プリチャージ属性によってＤＤＲデバイスがページを閉じることによって、メモリコントローラが後でそのバンクに対して別個のプリチャージコマンドを送信する必要性を回避する。ページクローズプレディクタ６６２は、選択されたコマンドと同じバンクにアクセスする他の要求であって、コマンドキュー５２０内に既に存在する他のリクエストを考慮する。ページクローズプレディクタ６６２がメモリアクセスをＡＰコマンドに変換する場合には、そのページへの次のアクセスはページミスとなる。
【００４６】
アービタ５３８は、メモリコントローラクロックサイクル毎に１つのコマンド又は２つのコマンドの何れかの発行をサポートする。例えば、ＤＤＲ４  ３２００は、１６００ＭＨｚのメモリクロック周波数で動作するＤＤＲ４  ＤＲＡＭのスピードビンである。集積回路処理技術によって、メモリコントローラ５００が１６００ＭＨｚで動作することができる場合、メモリコントローラ５００は、メモリコントローラクロックサイクル毎に１つのメモリアクセスを発行することができる。この場合、最終アービタ６５０は、メモリコントローラクロックサイクル毎に単一のアービトレーション勝者のみを選択する１Ｘモードで動作することができる。
【００４７】
但し、ＤＤＲ４  ３６００又はＬＰＤＤＲ４  ４６６７等の高速メモリの場合、１６００ＭＨｚのメモリコントローラのクロック速度は、メモリバスの全帯域幅を使用するには遅すぎる場合がある。アービタ５３８は、これらの高性能のＤＲＡＭに対応するために、最終アービタ６５０がメモリコントローラクロックサイクル毎に２つのコマンド（ＣＭＤ１及びＣＭＤ２）を選択する２Ｘモードをサポートする。アービタ５３８は、このモードを提供して、各サブアービタがより遅いメモリコントローラクロックを使用して並列に動作することを可能にする。図６に示すように、アービタ５３８は３つのサブアービタを含み、２Ｘモードでは、最終アービタ６５０は、３つの勝者のうち最適な２つの勝者として２つのアービトレーション勝者を選択する。
【００４８】
２Ｘモードでは、メモリコントローラ５００は、最高速度よりも遅いメモリコントローラクロック速度で動作して、メモリコントローラコマンド生成をメモリクロックサイクルに合わせることが可能であることに留意されたい。メモリコントローラが、最大１６００ＭＨｚのクロック速度で動作可能なＤＤＲ４  ３６００の例では、クロック速度を、２Ｘモードにおいて９００ＭＨｚまで低減することができる。
【００４９】
異なるメモリアクセスタイプに対して異なるサブアービタを使用することによって、各アービタは、全てのアクセスタイプ（ページヒット、ページミス及びページ競合）間のアービトレーションを行うことが必要な場合よりも単純なロジックで実装され得る。したがって、アービトレーションロジックを単純化することができ、アービタ５３８のサイズを比較的小さく保つことができる。ページヒット、ページ競合及びページミスのためにサブアービタを使用することによって、アービタ５３８は、データ転送を伴うアクセスのレイテンシを隠すために、互いに適したペアとなる２つのコマンドの選択を可能にする。
【００５０】
他の実施形態では、アービタ５３８は、２Ｘモードをサポートするために少なくとも２つのサブアービタを有する限り、異なる数のサブアービタを含むことができる。例えば、アービタ５３８は、４つのサブアービタを含んでもよく、メモリコントローラクロックサイクル毎に最大４つのアクセスが選択されるのを可能にする。さらに他の実施形態では、アービタ５３８は、任意の単一タイプの２つ以上のサブアービタを含むことができる。例えば、アービタ５３８は、２つ以上のページヒットアービタ、２つ以上のページ競合アービタ、及び／又は、２つ以上のページミスアービタを含むことができる。この場合、アービタ５３８は、各コントローラサイクルで同じタイプの２つ以上のアクセスを選択することができる。
【００５１】
図５及び図６の回路は、ハードウェア及びソフトウェアの様々な組み合わせで実装されてもよい。例えば、ハードウェア回路は、プライオリティエンコーダ、有限ステートマシン、プログラマブルロジックアレイ（ＰＬＡ）等を含んでもよく、アービタ５３８は、待ち状態のコマンドの相対タイミング適格性を評価するために、記憶されたプログラム命令を実行するマイクロコントローラで実装され得る。この場合、いくつかの命令は、マイクロコントローラによる実行のために、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶されてもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５２】
図１のＡＰＵ１１０、図５のメモリコントローラ５００又はこれらの一部（例えば、アービタ５３８等）は、プログラムによって読出され、集積回路を製造するために直接的若しくは間接的に使用されるデータベース又は他のデータ構造の形態のコンピュータアクセス可能なデータ構造によって記述されてもよいし表現されてもよい。例えば、このデータ構造は、例えばＶｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述であってもよいし、レジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために当該記述を合成し得る合成ツールによって読出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。そして、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成してもよい。マスクは、集積回路を製造するために様々な半導体製造工程で使用されてもよい。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、所望により、ネットリスト（合成ライブラリ有り若しくは無し）又はデータセットであってもよいし、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００５３】
特定の実施形態について説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、メモリチャネルコントローラ５１０及び／又は電力エンジン５５０の内部アーキテクチャは、異なる実施形態において変更することができる。メモリコントローラ５００は、例えば高帯域幅メモリ（ＨＢＭ）、ＲＡＭバスＤＲＡＭ（ＲＤＲＡＭ）等のようなＤＤＲｘメモリ以外の他のタイプのメモリにインタフェースすることができる。例示された実施形態では、別々のＤＩＭＭに対応するメモリの各ランクを示したが、他の実施形態では、各ＤＩＭＭは複数のランクをサポートすることができる。
【００５４】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲内に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【図１】
2019525271.tif 000003
【図２】
2019525271.tif 000004
【図３】
2019525271.tif 000005
【図４】
2019525271.tif 000006
【図５】
2019525271.tif 000007
【図６】
2019525271.tif 000008
【手続補正書】
【提出日】令和1年6月11日(2019.6.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリアクセス要求を受信し、記憶するコマンドキュー（５２０）と、
コントローラサイクル中に前記メモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供する複数のサブアービタ（６０５）であって、対応するコントローラサイクルにおいて複数のメモリコマンドをメモリに提供するために前記複数のサブアービトレーション勝者の中から何れかを選択する複数のサブアービタ（６０５）を備えるアービタ（５３８）と、を備え、
メモリコマンドサイクルは前記対応するコントローラサイクルよりも短い、
メモリコントローラ（５００）。
【請求項２】
前記コントローラサイクルは、コントローラクロック信号によって定義され、
前記メモリコマンドサイクルは、メモリクロック信号によって定義され、
前記メモリクロック信号は、前記コントローラクロック信号よりも高い周波数を有する、
請求項１のメモリコントローラ（５００）。
【請求項３】
前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数の２倍である、
請求項２のメモリコントローラ（５００）。
【請求項４】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第１サブアービタ（６１０）であって、コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第１サブアービトレーション勝者を決定する第１サブアービタ（６１０）と、
前記コマンドキュー（５２０）に接続された第２サブアービタ（６２０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内の前記アクティブエントリの中から前記第１アービトレーション勝者とは異なる第２サブアービトレーション勝者を決定する第２サブアービタ（６２０）と、を備え、
前記メモリコントローラ（５００）は、メモリクロック信号の第１サイクルにおいて前記第１サブアービトレーション勝者を第１メモリコマンドとして出力し、前記メモリクロック信号の後続のサイクルにおいて前記第２サブアービトレーション勝者を第２メモリコマンドとして出力するように動作し、前記メモリクロック信号の周波数は、前記コントローラクロック信号の周波数よりも高い、
請求項１のメモリコントローラ（５００）。
【請求項５】
前記複数のサブアービタ（６０５）は、
前記コマンドキュー（５２０）に接続された第３サブアービタ（６３０）であって、前記コントローラクロック信号に同期して、前記コマンドキュー（５２０）内のアクティブエントリの中から第３サブアービトレーション勝者を決定する第３サブアービタ（６３０）を備える、
請求項４のメモリコントローラ（５００）。
【請求項６】
前記アービタ（５３８）は、
前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者及び前記第３サブアービトレーション勝者の中から２つの最終アービトレーション勝者を選択し、前記２つの最終アービトレーション勝者を前記第１メモリコマンド及び前記第２メモリコマンドとして提供する最終アービタ（６５０）を備える、
請求項５のメモリコントローラ（５００）。
【請求項７】
前記複数のサブアービタ（６０５）は、前記第１サブアービタ（６１０）、前記第２サブアービタ（６２０）及び前記第３サブアービタ（６３０）のうち何れかと同じタイプの少なくとも１つの他のサブアービタを備え、
前記最終アービタ（６５０）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項６のメモリコントローラ（５００）。
【請求項８】
前記第１サブアービタ（６１０）は、前記コマンドキュー（５２０）内のページヒットコマンドから前記第１サブアービトレーション勝者を選択し、
前記第２サブアービタ（６２０）は、前記コマンドキュー（５２０）内のページ競合コマンドから前記第２サブアービトレーション勝者を選択し、
前記第３サブアービタ（６３０）は、前記コマンドキュー（５２０）内のページミスコマンドから前記第３サブアービトレーション勝者を選択する、
請求項５のメモリコントローラ（５００）。
【請求項９】
前記複数のサブアービタ（６０５）の各々は、前記コマンドキュー（５２０）内の関連するタイプのコマンドの中からアービトレーション勝者を選択し、
前記複数のサブアービタ（６０５）のうち少なくとも２つは、同じタイプのアービトレーション勝者を選択し、
前記アービタ（５３８）は、前記対応するコントローラサイクルにおいて前記複数のサブアービタ（６０５）の中から前記同じタイプの２つの最終アービトレーション勝者を選択する、
請求項１のメモリコントローラ（５００）。
【請求項１０】
メモリアクセス要求を提供するメモリアクセスエージェント（１１０，２１０，２２０）と、
メモリシステム（１２０）と、
請求項１〜９の何れかのメモリコントローラと、を備える、
データ処理システム（１００）。
【請求項１１】
前記メモリアクセスエージェントは、
中央処理ユニットコア（２１２，２１４）と、
グラフィックス処理ユニットコア（２２０）と、
前記中央処理ユニットコア（２１２，２１４）及び前記グラフィックス処理ユニットコア（２２０）を前記メモリコントローラ（２９２，５００）に相互接続するデータファブリック（２５０）と、を備える、
請求項１０のデータ処理システム（１００）。
【請求項１２】
複数のメモリアクセス要求を受信することと、
前記複数のメモリアクセス要求をコマンドキュー（５２０）に記憶することと、
前記コマンドキュー（５２０）からメモリアクセス要求を選択することであって、第１コントローラサイクル中に前記メモリアクセス要求の中から複数のサブアービトレーション勝者を選択することと、対応するコントローラサイクルにおいて複数のメモリコマンドをメモリに提供するために前記複数のサブアービトレーション勝者の中から何れかを選択することとを含む、ことと、を含み、
メモリコマンドサイクルは前記対応するコントローラサイクルよりも短い、
方法。
【請求項１３】
前記複数のサブアービトレーション勝者を選択することは、
前記コマンドキュー（５２０）内のページヒットコマンドから第１サブアービトレーション勝者を選択することと、
前記コマンドキュー（５２０）内のページ競合コマンドから第２サブアービトレーション勝者を選択することと、
前記コマンドキュー（５２０）内のページミスコマンドから第３サブアービトレーション勝者を選択することと、を含む、
請求項１２の方法。
【請求項１４】
前記コマンドキュー内の前記ページヒットコマンド、前記ページ競合コマンド及び前記ページミスコマンドのうち何れかから第４サブアービトレーション勝者を選択することと、
前記第１コントローラサイクルにおいて、前記第１サブアービトレーション勝者、前記第２サブアービトレーション勝者、前記第３サブアービトレーション勝者及び前記第４サブアービトレーション勝者の中から同じタイプの２つの最終アービトレーション勝者を選択することと、を含む、
請求項１３の方法。
【請求項１５】
対応する第２の複数のメモリサイクルにおいて第２の複数のメモリコマンドを提供するために、前記複数のサブアービトレーション勝者の中から何れかとオーバヘッドコマンドとを選択することを含む、
請求項１２の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳細には、高速メモリインタフェースを有するデータ処理システムで使用されるメモリコントローラに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリとして使用する。今日販売されている多くのＤＲＡＭチップは、半導体技術協会（ＪＥＤＥＣ：Joint Electron Devices Engineering Council）によって公布された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＤＤＲ  ＤＲＡＭは、高速アクセス回路を有する従来のＤＲＡＭメモリセルアレイを使用して、高い転送レートを達成し、メモリバスの利用を改善する。例えば、ＤＤＲ４  ＤＲＡＭは、１２〜１５ナノ秒（ｎｓ）のアクセス時間を必要とするメモリセルアレイを使用するが、１．６ギガヘルツ（ＧＨｚ）のメモリクロック周波数に対応して最大３．２ギガトランスファー毎秒（ＧＴ／秒）の速度で大量のデータにアクセスし、データをシリアル化する。転送は、良好な伝送ライン性能のために、オンダイターミネーション（on-die termination）を有する疑似オープンドレイン技術を使用する。そのレートでポイントツーポイントインタフェースを動作させて高速転送を達成することが可能であるが、メモリコントローラがメモリアクセスをスケジュールするのに十分な速度で動作することが、ますます困難になっている。
【０００３】
典型的なＤＤＲメモリコントローラは、待ち状態の読出し及び書込み要求を記憶するためにキューを維持して、メモリコントローラが、待ち状態の要求をアウトオブオーダで選択することによって、効率を高めるのを可能にする。例えば、メモリコントローラは、現在の行をプリチャージし、別の行を繰り返しアクティブにするオーバヘッドを回避するために、メモリの所定ランク内の同じ行に対する複数のメモリアクセス要求（「ページヒット」と呼ばれる）をアウトオブオーダでキューから取り出し、これらの要求を連続してメモリシステムに発行することができる。しかしながら、ＤＤＲ４等の最新のメモリ技術で利用可能なバス帯域幅を活用しながら、深いキューからのアクセスをスキャン及び取り出すことを、既知のメモリコントローラを用いて達成することが困難になってきている。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアクセラレーテッドプロセッシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、図５のアービタとして使用され得るアービタのブロック図である。
【発明を実施するための形態】
【０００５】
以下の説明において、異なる図面において同じ参照番号を使用することは、類似又は同一の項目を示している。特に断らない限り、「接続された」という用語及びこれに関連する動詞形は、当技術分野において既知の手段による直接接続及び間接的な電気接続の両方を含む。特に断らない限り、直接接続の説明は、適切な形態の間接的な電気接続を使用する代替の実施形態をも意味する。
【０００６】
以下の一形態で説明するように、メモリコントローラは、コマンドキューと、アービタと、を含む。コマンドキューは、メモリアクセス要求を受信及び記憶するためのものである。アービタは、コントローラサイクル中にメモリアクセス要求の中から対応する複数のサブアービトレーションの勝者（winner）を提供する複数のサブアービタを含み、複数のサブアービトレーションの勝者の中から何れかを選択して、対応するコントローラサイクルにおいて複数のメモリコマンドを提供する。いくつかの実施形態では、メモリコマンドサイクルは、コントローラサイクルより短くてもよい。例えば、コントローラは、コントローラクロック信号に従って動作する一方で、メモリサイクルは、コントローラクロック信号よりも高い周波数を有するメモリクロック信号によって規定される。複数のサブアービタは、コマンドキュー内のページヒットコマンドの中から第１サブアービトレーション勝者を選択する第１サブアービタと、コマンドキュー内のページ競合コマンドの中から第２サブアービトレーション勝者を選択する第２サブアービタと、コマンドキュー内のページミスコマンドの中から第３サブアービトレーション勝者を選択する第３サブアービタと、を含むことができる。アービタは、第１サブアービトレーション勝者、第２サブアービトレーション勝者、及び、第３サブアービトレーション勝者の中から何れかを選択するための最終アービタ（final arbiter）をさらに含むことができる。
【０００７】
別の形態では、データ処理システムは、複数のメモリアクセス要求を提供するメモリアクセスエージェントと、メモリシステムと、メモリアクセスエージェント及びメモリシステムに接続されたメモリコントローラと、を含む。メモリコントローラは、コマンドキューと、アービタとを含む。コマンドキューは、メモリアクセスエージェントから受信したメモリアクセスコマンドを記憶する。アービタは、コントローラサイクル中にメモリアクセス要求の中から対応する複数のサブアービトレーション勝者を提供し、複数のサブアービトレーション勝者の中から何れかを選択して、対応するコントローラサイクルにおいて複数のメモリコマンドを提供する複数のサブアービタを含む。
【０００８】
さらに別の形態では、性能及び効率を向上させるために、メモリアクセス要求間でアービトレーションを行う方法を使用することができる。複数のメモリアクセス要求が受信され、コマンドキューに記憶される。第１コントローラサイクル中に、メモリアクセス要求の中から複数のサブアービトレーション勝者が選択される。複数のサブアービトレーション勝者の中から複数のメモリコマンドが選択され、対応する複数のメモリコマンドサイクルにおいて提供される。
【０００９】
図１は、いくつかの実施形態によるデータ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、周辺機器相互接続エクスプレス（ＰＣＩｅ）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネルと、ＰＣＩｅリンクへの接続用のＰＣＩｅルートコンプレックスと、ＵＳＢネットワークへの接続用のＵＳＢコントローラと、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースと、が含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、本例において別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、例えばリードオンリメモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ＧＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等の最新のＤＤＲメモリに接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。本例において、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンド等のグラフィックス操作を、高度に統合された並列形式で実行することの可能な高性能グラフィックス処理ユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有するユニファイドメモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャをサポートしてもよいが、グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０は、システムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２２】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロック源（例えば位相同期ループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２３】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２４】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２５】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２６】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、再生キュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００２７】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００２８】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表わされる物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００２９】
再生キュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長検査（ＣＲＣ）応答、又は、ＧＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているか否かを判別する。再生キュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再生されるのを可能にする。
【００３０】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、及び、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、オートリフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。また、リフレッシュロジック５３２は、どの場合にＤＲＡＭデバイスを別のパワーダウンモードにするのかを決定する。
【００３１】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、同じバンクへの起動コマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、再生キュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、再生キュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３２】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３３】
電力コントローラ５５０は、アドバンストエクテンシブルインタフェースバージョン１（ＡＸＩ）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「イベント＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みトレーニングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みトレーニングエンジン５６８は、ＤＤＲインタフェース読出しレイテンシトレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３４】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３５】
図６は、いくつかの実施形態による、図５のメモリコントローラ５００の一部６００のブロック図である。この一部６００は、アービタ５３８と、アービタ５３８の動作に関連する制御回路６６０のセットと、を含む。アービタ５３８は、サブアービタ６０５のセットと、最終アービタ６５０と、を含む。サブアービタ６０５は、サブアービタ６１０と、サブアービタ６２０と、サブアービタ６３０と、を含む。サブアービタ６１０は、「ＰＨ  ＡＲＢ」と付されたページヒットアービタ６１２と、出力レジスタ６１４と、を含む。ページヒットアービタ６１２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６１４は、ページヒットアービタ６１２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。サブアービタ６２０は、「ＰＣ  ＡＲＢ」と付されたページ競合アービタ６２２と、出力レジスタ６２４と、を含む。ページ競合アービタ６２２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６２４は、ページ競合アービタ６２２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。サブアービタ６３０は、「ＰＭ  ＡＲＢ」と付されたページミスアービタ６３２と、出力レジスタ６３４と、を含む。ページミスアービタ６３２は、コマンドキュー５２０に接続された第１入力及び第２入力と、出力と、を有する。レジスタ６３４は、ページミスアービタ６３２の出力に接続されたデータ入力と、ＵＣＬＫ信号を受信するためのクロック入力と、出力と、を有する。最終アービタ６５０は、リフレッシュロジック５３２の出力に接続された第１入力と、ページクローズプレディクタ６６２からの第２入力と、出力レジスタ６１４の出力に接続された第３入力と、出力レジスタ６２４の出力に接続された第４入力と、出力レジスタ６３４の出力に接続された第５入力と、「ＣＭＤ１」と付された第１出力であって、第１アービトレーション勝者をキュー５１４に提供するための第１出力と、「ＣＭＤ２」と付された第２出力であって、第２アービトレーション勝者をキュー５１４に提供するための第２出力と、を有する。
【００３６】
制御回路６６０は、図５に関して上述したように、タイミングブロック５３４と、ページテーブル５３６と、ページクローズプレディクタ６６２と、を含む。タイミングブロック５３４は、入力と、ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々の第１入力に接続された出力と、を有する。ページテーブル５３４は、再生キュー５３０の出力に接続された入力と、再生キュー５３０の入力に接続された出力と、コマンドキュー５２０の入力に接続された出力と、タイミングブロック５３４の入力に接続された出力と、ページクローズプレディクタ６６２の入力に接続された出力と、を有する。ページクローズプレディクタ６６２は、ページテーブル５３６の１つの出力に接続された入力と、出力レジスタ６１４の出力に接続された入力と、最終アービタ６５０の第２入力に接続された出力と、を有する。
【００３７】
アービタ５３８は、動作中、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮することによって、メモリアクセス要求（コマンド）をコマンドキュー５２０及びリフレッシュロジック５３２から選択する。優先度は、ＡＸＩ４バスから受信されコマンドキュー５２０に記憶された要求のサービス品質（即ちＱｏＳ）に関連するが、メモリアクセスのタイプ、及び、アービタ５３８のダイナミック動作に基づいて変更され得る。アービタ５３８は、既存の集積回路技術の処理制限と伝送制限との間の不整合に対処するために並行して動作する３つのサブアービタを含む。各サブアービトレーションの勝者は、最終アービタ６５０に提示される。最終アービタ６５０は、これらの３つのサブアービトレーション勝者のうち何れかを、リフレッシュロジック５３２からのリフレッシュ動作と同様に選択し、読出し又は書込みコマンドを、ページクローズプレディクタ６６２によって決定された自動プリチャージ付き読出し又は書込みコマンドにさらに変更してもよい。
【００３８】
ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々は、タイミングブロック５３４の出力に接続された入力を有しており、これらの各々のカテゴリに入るコマンドキュー５２０内のコマンドのタイミング適格性を判断する。タイミングブロック５３４は、各ランクの各バンクの特定の動作に関連する期間をカウントするバイナリカウンタのアレイを含む。状態を判断するのに必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンク数、及び、所定のメモリチャネル上のシステムによってサポートされるランク数に依存する。次に、順番に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、ＧＤＤＲ５メモリは、他のＤＤＲｘメモリタイプよりも多くのタイミングパラメータに対応するために、より多くのタイマを必要とする。タイミングブロック５３４は、バイナリカウンタとして実装されたジェネリックタイマのアレイを含むことによって、異なるメモリタイプに対して調整され、再利用され得る。
【００３９】
ページヒットは、オープンページに対する読出し又は書込みサイクルである。ページヒットアービタ６１２は、オープンページに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。タイミングブロック５３４内のタイマによって追跡され、ページヒットアービタ６１２によってチェックされるタイミング適格性パラメータは、例えば、列アドレスストローブ（ＣＡＳ）に対する行アドレスストローブ（ＲＡＳ）の遅延時間（ｔＲＣＤ）及びＣＡＳレイテンシ（ｔＣＬ）を含む。例えば、ｔＲＣＤは、ＲＡＳサイクルでページが開かれた後に当該ページに読出し又は書込みアクセスする前に経過する必要がある最小時間を指定する。ページヒットアービタ６１２は、アクセスの割り当てられた優先度に基づいて、サブアービトレーション勝者を選択する。一実施形態では、優先度は４ビットのワンホット値であり、４つの値の中で優先度を示しているが、この４つのレベルの優先度スキームが単なる一例に過ぎないことは明らかである。ページヒットアービタ６１２が同じ優先度レベルで２つ以上の要求を検出した場合、最も古いエントリが勝者となる。
【００４０】
ページ競合は、バンク内の他の行が現在アクティブ化されているときの当該バンク内の或る行へのアクセスである。ページ競合アービタ６２２は、対応するバンク及びランクで現在オープンのページと競合するページに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。ページ競合アービタ６２２は、プリチャージコマンドの発行を引き起こすサブアービトレーション勝者を選択する。タイミングブロック５３４でタイマによって追跡され、ページ競合アービタ６２２によってチェックされるタイミング適格性パラメータは、例えば、ａｃｔｉｖｅ  ｔｏ  ｐｒｅｃｈａｒｇｅコマンド期間（ｔＲＡＳ）を含む。ページ競合アービタ６２２は、アクセスの割り当てられた優先度に基づいて、サブアービトレーション勝者を選択する。ページ競合アービタ６２２が同じ優先度レベルで２つ以上の要求を検出した場合、最も古いエントリが勝者となる。
【００４１】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ６３２は、プリチャージされたメモリバンクに対するコマンドキュー５２０内のアクセス間のアービトレーションを行う。タイミングブロック５３４でタイマによって追跡され、ページミスアービタ６３２によってチェックされるタイミング適格性パラメータは、例えば、ｐｒｅｃｈａｒｇｅコマンド期間（ｔＲＰ）を含む。同じ優先度レベルでページミスである２つ以上の要求が存在する場合、最も古いエントリが勝者となる。
【００４２】
各サブアービタは、各々のサブアービトレーション勝者の優先度値を出力する。最終アービタ６５０は、ページヒットアービタ６１２、ページ競合アービタ６２２及びページミスアービタ６３２の各々からのサブアービトレーション勝者の優先度値を比較する。最終アービタ６５０は、一度に２つのサブアービトレーション勝者を考慮して、相対優先度比較のセットを実行することによって、サブアービトレーション勝者間の相対優先度を決定する。
【００４３】
最終アービタ６５０は、３つのサブアービトレーション勝者間の相対優先度を決定した後に、サブアービトレーション勝者が競合するか否か（即ち、それらが同じバンク及びランクを対象としているかどうか）を判断する。かかる競合がない場合、最終アービタ６５０は、最高の優先度を有する最大２つのサブアービトレーション勝者を選択する。競合が生じた場合、最終アービタ６５０は、以下のルールに従う。最終アービタ６５０は、ページヒットアービタ６１２のサブアービトレーション勝者の優先度値がページ競合アービタ６２２の優先度値よりも高く、これらが両方とも同じバンク及びランクに対するものである場合に、ページヒットアービタ６１２によって示されたアクセスを選択する。最終アービタ６５０は、ページ競合アービタ６２２のサブアービトレーション勝者の優先度値がページヒットアービタ６１２の優先度値よりも高く、これらが両方とも同じバンク及びランクに対するものである場合に、いくつかの追加要因に基づいて勝者を選択する。場合によっては、ページクローズプレディクタ６６２は、自動プリチャージ属性を設定することによって、ページヒットアービタ６１２によって示されたアクセスの終了時にページを閉じる。
【００４４】
ページヒットアービタ６１２内では、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ（読出し又は書込み）及びアクセスのシーケンスに基づいて動的に調整される。概して、ページヒットアービタ６１２は、読出しに対してより高い暗黙の優先度を割り当てるが、書込みが完了に向けて進行するのを保証するための優先度上昇メカニズムを実装する。
【００４５】
ページクローズプレディクタ６６２は、ページヒットアービタ６１２が読出し又は書込みコマンドを選択すると、自動プリチャージ（ＡＰ）属性を有するコマンドを送信するか否かを決定する。読出し又は書込みサイクル中、自動プリチャージ属性は、事前に定義されたアドレスビットで設定されており、読出し又は書込みサイクルが完了した後に自動プリチャージ属性によってＤＤＲデバイスがページを閉じることによって、メモリコントローラが後でそのバンクに対して別個のプリチャージコマンドを送信する必要性を回避する。ページクローズプレディクタ６６２は、選択されたコマンドと同じバンクにアクセスする他の要求であって、コマンドキュー５２０内に既に存在する他のリクエストを考慮する。ページクローズプレディクタ６６２がメモリアクセスをＡＰコマンドに変換する場合には、そのページへの次のアクセスはページミスとなる。
【００４６】
アービタ５３８は、メモリコントローラクロックサイクル毎に１つのコマンド又は２つのコマンドの何れかの発行をサポートする。例えば、ＤＤＲ４  ３２００は、１６００ＭＨｚのメモリクロック周波数で動作するＤＤＲ４  ＤＲＡＭのスピードビンである。集積回路処理技術によって、メモリコントローラ５００が１６００ＭＨｚで動作することができる場合、メモリコントローラ５００は、メモリコントローラクロックサイクル毎に１つのメモリアクセスを発行することができる。この場合、最終アービタ６５０は、メモリコントローラクロックサイクル毎に単一のアービトレーション勝者のみを選択する１Ｘモードで動作することができる。
【００４７】
但し、ＤＤＲ４  ３６００又はＬＰＤＤＲ４  ４６６７等の高速メモリの場合、１６００ＭＨｚのメモリコントローラのクロック速度は、メモリバスの全帯域幅を使用するには遅すぎる場合がある。アービタ５３８は、これらの高性能のＤＲＡＭに対応するために、最終アービタ６５０がメモリコントローラクロックサイクル毎に２つのコマンド（ＣＭＤ１及びＣＭＤ２）を選択する２Ｘモードをサポートする。アービタ５３８は、このモードを提供して、各サブアービタがより遅いメモリコントローラクロックを使用して並列に動作することを可能にする。図６に示すように、アービタ５３８は３つのサブアービタを含み、２Ｘモードでは、最終アービタ６５０は、３つの勝者のうち最適な２つの勝者として２つのアービトレーション勝者を選択する。
【００４８】
２Ｘモードでは、メモリコントローラ５００は、最高速度よりも遅いメモリコントローラクロック速度で動作して、メモリコントローラコマンド生成をメモリクロックサイクルに合わせることが可能であることに留意されたい。メモリコントローラが、最大１６００ＭＨｚのクロック速度で動作可能なＤＤＲ４  ３６００の例では、クロック速度を、２Ｘモードにおいて９００ＭＨｚまで低減することができる。
【００４９】
異なるメモリアクセスタイプに対して異なるサブアービタを使用することによって、各アービタは、全てのアクセスタイプ（ページヒット、ページミス及びページ競合）間のアービトレーションを行うことが必要な場合よりも単純なロジックで実装され得る。したがって、アービトレーションロジックを単純化することができ、アービタ５３８のサイズを比較的小さく保つことができる。ページヒット、ページ競合及びページミスのためにサブアービタを使用することによって、アービタ５３８は、データ転送を伴うアクセスのレイテンシを隠すために、互いに適したペアとなる２つのコマンドの選択を可能にする。
【００５０】
他の実施形態では、アービタ５３８は、２Ｘモードをサポートするために少なくとも２つのサブアービタを有する限り、異なる数のサブアービタを含むことができる。例えば、アービタ５３８は、４つのサブアービタを含んでもよく、メモリコントローラクロックサイクル毎に最大４つのアクセスが選択されるのを可能にする。さらに他の実施形態では、アービタ５３８は、任意の単一タイプの２つ以上のサブアービタを含むことができる。例えば、アービタ５３８は、２つ以上のページヒットアービタ、２つ以上のページ競合アービタ、及び／又は、２つ以上のページミスアービタを含むことができる。この場合、アービタ５３８は、各コントローラサイクルで同じタイプの２つ以上のアクセスを選択することができる。
【００５１】
図５及び図６の回路は、ハードウェア及びソフトウェアの様々な組み合わせで実装されてもよい。例えば、ハードウェア回路は、プライオリティエンコーダ、有限ステートマシン、プログラマブルロジックアレイ（ＰＬＡ）等を含んでもよく、アービタ５３８は、待ち状態のコマンドの相対タイミング適格性を評価するために、記憶されたプログラム命令を実行するマイクロコントローラで実装され得る。この場合、いくつかの命令は、マイクロコントローラによる実行のために、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶されてもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５２】
図１のＡＰＵ１１０、図５のメモリコントローラ５００又はこれらの一部（例えば、アービタ５３８等）は、プログラムによって読出され、集積回路を製造するために直接的若しくは間接的に使用されるデータベース又は他のデータ構造の形態のコンピュータアクセス可能なデータ構造によって記述されてもよいし表現されてもよい。例えば、このデータ構造は、例えばＶｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述であってもよいし、レジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために当該記述を合成し得る合成ツールによって読出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。そして、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成してもよい。マスクは、集積回路を製造するために様々な半導体製造工程で使用されてもよい。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、所望により、ネットリスト（合成ライブラリ有り若しくは無し）又はデータセットであってもよいし、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００５３】
特定の実施形態について説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、メモリチャネルコントローラ５１０及び／又は電力エンジン５５０の内部アーキテクチャは、異なる実施形態において変更することができる。メモリコントローラ５００は、例えば高帯域幅メモリ（ＨＢＭ）、ＲＡＭバスＤＲＡＭ（ＲＤＲＡＭ）等のようなＤＤＲｘメモリ以外の他のタイプのメモリにインタフェースすることができる。例示された実施形態では、別々のＤＩＭＭに対応するメモリの各ランクを示したが、他の実施形態では、各ＤＩＭＭは複数のランクをサポートすることができる。
【００５４】
１つの形態では、本明細書に開示されたメモリコントローラは、コマンドキューと、複数のサブアービタを含むアービタと、を備える。１つの態様によれば、複数のサブアービタは、第１サブアービトレーション勝者、第２サブアービトレーション勝者及び第３サブアービトレーション勝者を提供するための第１サブアービタ、第２サブアービタ及び第３サブアービタと、２つの最終アービトレーション勝者を選択するための最終アービタと、を含み、最終アービタは、第１アービトレーション勝者、第２アービトレーション勝者及び第３アービトレーション勝者とオーバヘッドコマンドとから、２つの最終アービトレーション勝者を選択する。この場合、オーバヘッドコマンドは、パワーダウンコマンド、オートリフレッシュコマンド及び較正コマンドのうち何れかを含んでもよい。
【００５５】
別の形態では、本明細書に開示されたメモリコントローラは、メモリアクセスエージェントと、メモリシステムと、メモリアクセスエージェント及びメモリシステムに接続されたメモリコントローラと、を含むデータ処理システムの一部である。
【００５６】
さらに別の形態では、方法は、複数のメモリアクセス要求を受信することと、複数のメモリアクセス要求をコマンドキューに記憶することと、コマンドキューからメモリアクセス要求を選択することであって、第１コントローラサイクル期間中にメモリアクセス要求の中から複数のサブアービトレーション勝者を選択することと、対応する複数のメモリコマンドサイクルにおいて複数のコマンドを提供するために複数のサブアービトレーション勝者の中から何れかを選択することとを含む、ことと、を含む。１つの態様によれば、方法は、対応する第２の複数のメモリサイクルにおいて第２の複数のメモリコマンドを提供するために、複数のサブアービトレーション勝者の何れかと、オーバーヘッドコマンドとを選択することと、オーバヘッドコマンドを、パワーダウンコマンド、オートリフレッシュコマンド及び較正コマンドのうち何れかとして提供することと、をさらに含む。別の態様によれば、複数のメモリコマンドを提供するために、複数のサブアービトレーション勝者の中から何れかを選択することは、対応する複数のメモリコマンドサイクルにおいて複数のメモリコマンドを提供するために、複数のサブアービトレーション勝者の中から何れかを選択することを含み、メモリコマンドサイクルは、コントローラサイクルよりも短い。さらに別の態様によれば、第１コントローラサイクル中に、メモリアクセス要求の中から複数のサブアービトレーション勝者を選択することは、第１コントローラサイクル中に、メモリアクセス要求の中から同じタイプの第１の複数のサブアービトレーション勝者を選択することを含み、方法は、第１コントローラサイクル中に、同じタイプの２つの最終アービトレーション勝者を選択することをさらに含む。
【００５７】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲内に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【国際調査報告】
2019525271.tif 000009
2019525271.tif 000010