(57)【要約】データ処理システムは、メモリチャネルと、メモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、少なくとも１つのランクにアクセスするように構成されており、リフレッシュロジックを有する。データプロセッサは、リフレッシュロジックの起動に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第１自動リフレッシュコマンドに対応する第１状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンドに対応する第２状態のうち１つの状態を選択する。データプロセッサは、バンクに関連する第１条件をリフレッシュロジックが検出したことに応じて、第１状態と第２状態との間での切り替えを開始し、第２条件をリフレッシュロジック回路が検出したことに応じて、第２状態と第１状態との間での切り替えを開始する。【選択図】図５
2019519836.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システム（１００）であって、
少なくとも１つのランク（１３４／１３６／１３８）を含むメモリチャネル（１３０）と、
前記メモリチャネル（１３０）に接続されたデータプロセッサ（１１０）であって、前記少なくとも１つのランク（１３４／１３６／１３８）にアクセスするように構成されたデータプロセッサ（１１０）と、を備え、
前記データプロセッサ（１１０）は、リフレッシュロジック（５３２）を有しており、前記リフレッシュロジック（５３２）の起動に応じて、
前記メモリチャネル（１３０）のバンク（７０２）へのリフレッシュサイクルを生成することであって、前記データプロセッサ（１１０）は、第１状態（６０４）及び第２状態（６０６／６０８）のうち１つの状態を選択し、前記第１状態（６０４）は、前記データプロセッサ（１１０）に前記バンク（７０２）を自動リフレッシュさせる第１自動リフレッシュコマンド（７００）に対応し、前記第２状態は、前記データプロセッサ（１１０）に前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（７１０／７２０）に対応する、ことと、
前記バンク（７０２）に関連する第１条件（６１８／６２２）を前記リフレッシュロジック（５３２）が検出したことに応じて、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間での切り替えを開始することと、
第２条件（６２０／６２４）の検出に応じて、前記第２状態（６０６／６０８）と前記第１状態（６０４）との間での切り替えを開始することと、
を行うように構成されている、
データ処理システム（１００）。
【請求項２】
前記リフレッシュロジック（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第１条件（８１６）を検出する、
請求項１のデータ処理システム（１００）。
【請求項３】
前記リフレッシュロジック（５３２）は、前記バンク（７０２）に送信されたリフレッシュの数が前記バンク（７０２）のサブセットの総数に対応することに応じて、前記第２条件（８１０）を検出し、
前記データプロセッサは、前記バンク（７０２）へのアクセス要求を記憶しない、
請求項１のデータ処理システム（１００）。
【請求項４】
前記データプロセッサ（１１０）は、前記第２自動リフレッシュコマンドがリフレッシュ２（ＲＥＦ２）コマンドである場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュし、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項１のデータ処理システム（１００）。
【請求項５】
前記データプロセッサ（１１０）は、前記第２自動リフレッシュコマンドがリフレッシュ４（ＲＥＦ４）コマンドである場合に、前記リフレッシュサイクル時間内に前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュし、
前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、前記第３サブセット（７２８）及び前記第４サブセット（７４０）の各々は、前記バンク（７０２）の別々の４分の１のサブセットである、
請求項４のデータ処理システム（１００）。
【請求項６】
前記データプロセッサ（１１０）は、前記バンク（７０２）に対する保留中のリフレッシュの数、前記バンク（７０２）に対する保留中の要求の数、前記バンク（７０２）に対する保留中の要求の優先度、及び、前記バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、前記第１条件（６１８／６２２）を検出する、
請求項１のデータ処理システム（１００）。
【請求項７】
前記データプロセッサ（１１０）は、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間での切り替えの開始を決定するために、前記バンク（７０２）に対する保留中のリフレッシュの数を追跡する、
請求項６のデータ処理システム（１００）。
【請求項８】
前記第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の前記バンク（７０２）の前記選択されたサブセットをリフレッシュする、
請求項１のデータ処理システム（１００）。
【請求項９】
前記第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の複数のバンクの前記選択されたサブセットをリフレッシュする、
請求項１のデータ処理システム（１００）。
【請求項１０】
前記第２自動リフレッシュコマンド（７１０／７２０）は、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの前記選択されたサブセットをリフレッシュする、
請求項１のデータ処理システム（１００）。
【請求項１１】
前記メモリチャネル（１３０）は、ダブルレート（ＤＤＲ）バージョン４（ＤＤＲ４）メモリの複数のランク（１３４／１３６／１３８）を含む、
請求項１のデータ処理システム（１００）。
【請求項１２】
データプロセッサ（１１０／２００）であって、
メモリアクセスエージェント（２１０／２２０）と、
前記メモリアクセスエージェント（２１０／２２０）に接続されたメモリコントローラ（２９２／５００）であって、メモリシステム（１２０）に接続するように構成されたメモリコントローラ（２９２／５００）と、を備え、
前記メモリコントローラ（２９２／５００）は、
第１状態（６０４）及び第２状態（６０６／６０８）を含むオンザフライモードを有する、前記メモリシステム（１２０）のメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路（５３２）を備えており、前記第１状態（６０４）は、前記メモリにバンク（７０２）を自動リフレッシュさせる第１自動リフレッシュコマンド（７００）に対応しており、前記第２状態（６０６／６０８）は、前記メモリに前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（７１０／７２０）に対応しており、
前記メモリシステム（１２０）の前記バンク（７０２）に関連する第１条件（６１８／６２２）を前記リフレッシュロジック回路（５３２）が検出したことに応じて、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間で切り替えを行い、
第２条件（６２０／６２４）をリフレッシュロジック回路（５３２）が検出したことに応じて、前記第２状態（６０６／６０８）と前記第１状態（６０４）との間で切り替えを行う、
データプロセッサ（１１０／２００）。
【請求項１３】
前記リフレッシュロジック回路（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第１条件（６２０／６２４）を検出する、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項１４】
前記リフレッシュロジック回路（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数に応じて前記第２条件（６２０／６２４）を検出する、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項１５】
前記メモリコントローラ（２９２／５００）は、前記第２自動リフレッシュコマンド（７１０／７２０）がリフレッシュ２（ＲＥＦ２）コマンド（７１０）である場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュするように構成されており、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項１６】
前記メモリコントローラ（２９２／５００）は、前記第２自動リフレッシュコマンド（７１０／７２０）がリフレッシュ４（ＲＥＦ４）コマンド（７２０）である場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７２４）、第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュするように構成されており、
前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、前記第３サブセット（７２８）及び前記第４サブセット（７４０）の各々は、前記バンク（７２０）の別々の４分の１のサブセットである、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項１７】
前記メモリコントローラ（２９２／５００）は、前記バンク（７０２）に対する保留中のリフレッシュの数、前記バンク（７０２）に対する保留中の要求の数、前記バンク（７０２）に対する保留中の要求の優先度、及び、前記バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、前記第１条件（６１８／６２２）を検出する、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項１８】
前記メモリコントローラ（２９２／５００）は、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間での切り替えの開始を決定するために、前記バンク（７０２）に対する保留中のリフレッシュの数を追跡する、
請求項１７のデータプロセッサ（１１０／２００）。
【請求項１９】
前記第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の前記バンク（７０２）の前記選択されたサブセットをリフレッシュする、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項２０】
前記第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の複数のバンクの前記選択されたサブセットをリフレッシュする、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項２１】
前記第２自動リフレッシュコマンド（７１０／７２０）は、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの前記選択されたサブセットをリフレッシュする、
請求項１２のデータプロセッサ（１１０／２００）。
【請求項２２】
メモリコントローラ（２９２／５００）を介してメモリシステム（１２０）内のメモリのリフレッシュを管理する方法（８００）であって、
前記メモリコントローラ（２９２／５００）が第１状態（６０４／８０２）にある場合に第１自動リフレッシュコマンド（７００）を生成することであって、前記第１自動リフレッシュコマンド（７００）は、前記メモリにバンク（７０２）を自動リフレッシュさせる、ことと、
前記メモリコントローラ（２９２／５００）が第２状態（６０６／６０８／８０２）にある場合に第２自動リフレッシュコマンド（７１０／７１２）を生成することであって、前記第２自動リフレッシュコマンド（７１０／７１２）は、前記メモリに前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる、ことと、
前記バンク（７０２）に関連する第１条件（６１２／６１８／８０６／８０８）を前記メモリコントローラ（２９２／５００）が検出したことに応じて、前記第１状態と前記第２状態との間で切り替えを行うことと、
第２条件（６２０／６２４／８１０／８１２）を前記メモリコントローラ（２９２／５００）が検出したことに応じて、前記第２状態と前記第１状態との間で切り替えを行うことと、を含む、
方法。
【請求項２３】
前記第１条件を検出することは、
前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回ったときを検出することを含む、
請求項２２の方法（８００）。
【請求項２４】
前記第２条件を検出することは、
送信されたリフレッシュの数が前記バンク（７０２）のサブセットの総数に対応することを検出することと、
前記メモリコントローラ（２９２／５００）が、前記バンク（７０２）へのアクセス要求を記憶しないことを検出することと、を含む、
請求項２２の方法（８００）。
【請求項２５】
前記第２自動リフレッシュコマンドを生成することは、
前記第２自動リフレッシュコマンドがリフレッシュ２（ＲＥＦ２）コマンド（７１０）である場合に、リフレッシュ期間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュすることを含み、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項２２の方法（８００）。
【請求項２６】
前記第２自動リフレッシュコマンドを生成することは、
前記第２自動リフレッシュコマンドがリフレッシュ４（ＲＥＦ４）コマンドである場合に、リフレッシュ期間内に前記バンク（７０２）の第１サブセット（７２４）、第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュすることを含み、
前記バンクの前記第１サブセット（７２４）、前記第２サブセット（７２６）、前記第３サブセット（７２８）及び前記第４サブセット（７２４）は、前記バンク（７０２）の別々の４分の１のサブセットである、
請求項２２の方法（８００）。
【請求項２７】
前記バンク（７０２）に対する保留中のリフレッシュの数、前記バンク（７０２）に対する保留中の要求の数、前記バンク（７０２）に対する保留中の要求の優先度、及び、前記バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、前記第１条件を検出することを含む、
請求項２２の方法（８００）。
【請求項２８】
前記第２自動リフレッシュコマンドを生成したことに応じて、１つのランク（１３４）の前記バンク（７０２）の前記選択されたサブセットをリフレッシュすることを含む、
請求項２２の方法（８００）。
【請求項２９】
前記第２自動リフレッシュコマンドを生成したことに応じて、１つのランク（１３４）の複数のバンクの前記選択されたサブセットをリフレッシュすることを含む、
請求項２２の方法（８００）。
【請求項３０】
前記第２自動リフレッシュコマンドを生成したことに応じて、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの前記選択されたサブセットをリフレッシュすることを含む、
請求項２２の方法（８００）。
【請求項３１】
前記第１自動リフレッシュコマンド（７００）を生成することと、
前記第２自動リフレッシュコマンド（７１０／７１２）を生成することと、
前記第１状態と前記第２状態との間で切り替えを行うことと、
前記メモリの複数のバンクの各々で独立して前記第２状態と前記第１状態との間の切り替えを行うことと、
を実行することを含む、
請求項２２の方法（８００）。
【請求項３２】
メモリアクセス要求を受信する入力と、メモリアクセスをメモリシステム（１２０）に提供する出力と、を有するメモリコントローラ（５００）であって、
前記メモリコントローラ（５００）は、
前記メモリアクセス要求を受信するコマンドキュー（５２０）であって、複数のエントリと、選択されたメモリアクセスを提供する出力と、を有するコマンドキュー（５２０）と、
前記コマンドキュー（５２０）に接続されたアービタ（５３８）であって、前記メモリシステム（１２０）にディスパッチするために前記コマンドキュー（５２０）からエントリを選択するアービタ（５３８）と、
前記アービタ（５３８）に接続されたリフレッシュロジック回路（５３２）であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム（１２０）への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行する、リフレッシュロジック回路（５３２）と、を備える、
メモリコントローラ（５００）。
【請求項３３】
前記リフレッシュロジック回路（５３２）は、第１状態（６０４）にある場合に、前記リフレッシュ間隔中に、前記メモリバンクの全てをメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）を提供し、
前記リフレッシュロジック回路（５３２）は、第２状態（６０６）にある場合に、前記リフレッシュ間隔中に、複数の自動リフレッシュコマンドに対応する前記メモリバンクの一部を自動リフレッシュする前記複数の自動リフレッシュコマンドを提供する、
請求項３２のメモリコントローラ（５００）。
【請求項３４】
前記リフレッシュロジック回路（５３２）は、第２状態（６０６）にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの半分を前記メモリに自動リフレッシュさせる２つの第２自動リフレッシュコマンド（ＲＥＦ２）を提供する、
請求項３３のメモリコントローラ（５００）。
【請求項３５】
前記リフレッシュロジック回路（５３２）は、第３状態（６０８）にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの４分の１を前記メモリに自動リフレッシュさせる４つの第３自動リフレッシュコマンド（ＲＥＦ４）を提供する、
請求項３４のメモリコントローラ（５００）。
【請求項３６】
前記リフレッシュロジック回路（５３２）は、前記バンクに対する保留中のリフレッシュの数、前記バンクに対する保留中の要求の数、前記メモリバンクに対する保留中の要求の優先度、及び、前記バンクに対する保留中の要求のタイプのうち１つ以上に応じて、前記第１状態（６０４）と前記第２状態（６０６）との間を遷移する、
請求項３３のメモリコントローラ（５００）。
【請求項３７】
前記リフレッシュロジック回路（５３２）は、前記メモリバンクに対する保留中のメモリアクセス要求の数が所定の閾値を上回っていることに応じて、前記第１状態（６０４）と前記第２状態（６０６）との間を遷移する、
請求項３３のメモリコントローラ（５００）。
【請求項３８】
前記リフレッシュロジック回路（５３２）は、一度にリフレッシュされる前記メモリバンクの一部に対応するいくつかの自動リフレッシュコマンドを発行した後にのみ、前記第２状態（６０６）と前記第１状態（６０４）との間を遷移する、
請求項３３のメモリコントローラ（５００）。
【請求項３９】
前記リフレッシュロジック回路（５３２）は、前記コマンドキュー（５２０）が前記メモリバンクへのメモリアクセス要求を記憶していない場合に、前記第２状態（６０６）と前記第１状態（６０４）との間を遷移する、
請求項３８のメモリコントローラ（５００）。
【請求項４０】
前記リフレッシュロジック回路（５３２）は、前記オンザフライリフレッシュモードにおいて、前記メモリシステム（１２０）への自動リフレッシュコマンドを、前記メモリシステム（１２０）の所定のランクにおける全てのバンクについて自動選択した粒度を用いて生成する、
請求項３２のメモリコントローラ（５００）。
【請求項４１】
前記リフレッシュロジック回路（５３２）は、前記オンザフライリフレッシュモードにおいて、前記メモリシステム（１２０）への自動リフレッシュコマンドを、前記メモリシステム（１２０）の複数のランクにおいて対応するバンクについて自動選択した粒度を用いて生成する、
請求項３２のメモリコントローラ（５００）。
【請求項４２】
メモリコントローラ（５００）であって、
メモリアクセス要求を受信する入力と、出力と、を有するインタフェース（５１２）と、
前記インタフェース（５１２）の出力に接続されたデコーダ（５２２）であって、前記メモリアクセス要求を復号化して、対応するメモリアクセスを提供するデコーダ（５２２）と、
前記デコーダ（５２２）の出力に接続された第１入力と、第２入力と、出力と、を有するコマンドキュー（５２０）であって、複数のエントリを有するコマンドキュー（５２０）と、
前記コマンドキュー（５２０）に接続されたアービタ（５３８）であって、前記メモリシステム（１２０）にディスパッチするために前記コマンドキュー（５２０）からエントリを選択し、前記コマンドキュー（５２０）の第２入力に自動リフレッシュコマンドを提供するアービタ（５３８）と、
前記コマンドキュー（５２０）の出力に接続された入力と、メモリチャネルに接続するための出力と、を有する第２キュー（５１４）と、
前記アービタ（５１４）に接続されたリフレッシュロジック回路（５３２）であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム（１２０）への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行し、前記自動リフレッシュコマンドを前記アービタ（５３８）に提供するリフレッシュロジック回路（５３２）と、を備える、
メモリコントローラ（５００）。
【請求項４３】
メモリへのアクセスを制御する方法であって、
メモリアクセス要求を受信することと、
前記メモリアクセス要求を復号化して、復号化されたメモリアクセス要求を提供することと、
前記復号化されたメモリアクセス要求をコマンドキュー（５２０）に記憶することと、
自動リフレッシュコマンドを前記コマンドキュー（５２０）に記憶することと、
前記復号化されたメモリアクセス要求及び前記自動リフレッシュコマンドのうち選択された１つを前記メモリに提供するために、前記コマンドキュー（５２０）において、前記復号化されたメモリアクセス要求と前記自動リフレッシュコマンドとの間でアービトレーションすることと、
リフレッシュされるメモリバンクに関連する条件に応じて、オンザフライリフレッシュモードにおいて、自動選択された粒度を用いて前記自動リフレッシュコマンドを生成することと、を含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、特に、データ処理システムにおけるメモリシステムのリフレッシュに関する。
【背景技術】
【０００２】
コンピュータシステムの全体的な処理速度を向上させるために、様々な技術が開発されている。集積回路処理技術の大幅な改善は、コンピュータ処理速度及びメモリ容量を増加させる能力に寄与し、これにより、コンピュータシステム全体の改善された性能に寄与する。サブミクロンの特徴を有する集積回路を製造する能力は、集積回路当たりのキャパシタ等の電気部品の量も増加させることができる。
【０００３】
サブミクロンの特徴を有するキャパシタの大規模アレイから構成されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップは、コンピュータシステムのメインメモリに利用されている。ＤＲＡＭは、通常、安価で高密度であり、これにより、大量のＤＲＡＭがデバイス毎に統合されることが可能になる。キャパシタの性質上、ＤＲＡＭは、常にリフレッシュされなければならず、そうでなければ、キャパシタ内に記憶されたデータが失われてしまう。各キャパシタは電荷をゆっくりとリークし、ＤＲＡＭがリフレッシュされない場合には、キャパシタは、最終的にかなりの電荷をリークして、不可逆的なデータ破損に直面する。
【０００４】
今日販売されている殆どのＤＲＡＭチップは、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって推奨される様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ標準と互換性がある。ＪＥＤＥＣによって提供される標準は、一定期間データのアクセスを禁止するリフレッシュサイクル時間を提供する。コンピュータシステム内のＤＤＲ  ＤＲＡＭデバイスの密度を増大させると、リフレッシュに必要な時間が増大し、これにより、コンピュータ処理のレイテンシが増大する。
【０００５】
これらの問題に対処するために、ＪＥＤＥＣは、１Ｘ、２Ｘ、４Ｘリフレッシュモードとして知られるＤＤＲバージョン４（ＤＤＲ４）標準の機能を採用している。これらのモードでは、ＤＤＲ４メモリは、単一のリフレッシュ（ＲＥＦ）コマンドに応じて、選択されたバンク、選択されたバンクの半分、又は、選択されたバンクの４分の１をリフレッシュすることができる。モードレジスタ（モードレジスタ３（ＭＲ３））は、これらのモード間でモードを選択するために使用される。更に、ＭＲ３は、１Ｘ若しくは２Ｘの選択、又は、１Ｘ若しくは４Ｘの選択を動的に実行し、未使用のアドレスビットによって示される「オンザフライ」モードをサポートするようにプログラムされる場合がある。
【図面の簡単な説明】
【０００６】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアクセラレーテッドプロセシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、リフレッシュ条件を示す状態図である。
【図７】いくつかの実施形態による、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。
【図８】いくつかの実施形態による、図５のメモリコントローラによって使用される方法のフローチャートである。
【発明を実施するための形態】
【０００７】
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
【０００８】
以下の１つの形態で説明するように、データ処理システムは、少なくとも１つのランクを有するメモリチャネルと、リフレッシュロジックを有するメモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、リフレッシュロジックの起動（activation）に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第１自動リフレッシュコマンドに対応する第１状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンドに対応する第２状態のうち何れかの状態を選択する。データプロセッサは、リフレッシュロジックがバンクに関連する第１条件を検出したことに応じて、第１状態と第２状態との間での切り替えを開始し、リフレッシュロジック回路が第２条件を検出したことに応じて、第２状態と第１状態との間での切り替えを開始する。
【０００９】
別の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続され、メモリシステムに接続するように適合されたメモリコントローラと、を含む。メモリコントローラは、メモリシステムのメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路を含む。メモリコントローラは、第１状態及び第２状態を含むオンザフライモードを有する。第１状態は、メモリに対してバンクを自動リフレッシュさせる第１自動リフレッシュコマンド（例えば、ＲＥＦ１）に対応する。第２状態は、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（例えば、ＲＥＦ２又はＲＥＦ４）に対応する。メモリコントローラは、バンクに関連する第１条件をリフレッシュロジック回路が検出したことに応じて、第１状態と第２状態との間で切り替えを行う。メモリコントローラは、第２条件をリフレッシュロジック回路が検出したことに応じて、第２状態と第１状態との間で切り替えを行う。
【００１０】
更に別の形態では、メモリコントローラを介してメモリシステム内のメモリのリフレッシュを管理する方法が説明される。第１自動リフレッシュコマンドは、メモリコントローラが第１状態にある場合に生成され、この第１自動リフレッシュコマンドは、メモリコントローラに対してバンクを自動リフレッシュさせる。第２自動リフレッシュコマンドは、メモリコントローラが第２状態にある場合に生成され、この第２自動リフレッシュコマンドは、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる。メモリコントローラが第１条件を検出したことに応じて、第１状態と第２状態との間での切り替えが行われる。メモリコントローラが第２条件を検出したことに応じて、第２状態と第１状態との間での切り替えが行われる。
【００１１】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセシングユニット（ＡＰＵ）の形態にあるデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（peripheral component interconnect express）システム１５０と、ＵＳＢ（universal serial bus）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクへの接続用のＰＣＩｅルート複合体、ＵＳＢネットワークへの接続用のＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶装置へのインタフェースが含まれる。
【００１２】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセット（この実施例では、個別のランクに対応する代表的なＤＩＭＭ１３４，１３６、１３８を含む）を含む。同様に、メモリチャネル１４０は、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセット（代表的なＤＩＭＭ１４４，１４６，１４８を含む）を含む。
【００１３】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルート複合体に接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入力／出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、リードオンリメモリ（ＲＯＭ）及びフラッシュＥＥＰＲＯＭ（flash electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１４】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、それぞれＵＳＢハブ１６２に接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、キーボード、マウス及びフラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１５】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム及びアプリケーションファイル等のための大容量記憶装置を提供する。
【００１６】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。メモリチャネル１３０，１４０の各々は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等の最新のＤＤＲメモリに接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。
【００１７】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コア複合体２１０と、グラフィックスコア２２０と、ディスプレイエンジンのセット２３０と、メモリ管理ハブ２４０と、データファブリック２５０と、周辺機器コントローラのセット２６０と、周辺機器バスコントローラのセット２７０と、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラのセット２９０と、を含む。
【００１８】
ＣＰＵコア複合体２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この実施例では、ＣＰＵコア複合体２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコア複合体は任意の数のＣＰＵコアを含むことができる。ＣＰＵコア２１２，２１４の各々は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に双方向に接続されており、データファブリック２５０にメモリアクセス要求を提供することができる。ＣＰＵコア２１２，２１４の各々は、単一のコアであってもよく、キャッシュ等の特定のリソースを共有する２つ以上の単一のコアを有するコア複合体であってもよい。
【００１９】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャ混合等のグラフィック動作を高度に統合された並列形式で実行することの可能な高性能グラフィックスプロセシングユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に双方向に接続されており、データファブリック２５０にメモリアクセス要求を提供することができる。この点について、ＡＰＵ２００は、ＣＰＵコア複合体２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコア複合体２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができ、また、グラフィックスコア２２０は、ＣＰＵコア複合体２１０によってアクセスすることができないプライベートグラフィックスメモリを使用する。
【００２０】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタ上に表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０における適切なアドレスへの一様な変換のために、共通メモリ管理（ＭＭ）ハブ２４０に双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック２５０に双方向に接続されている。
【００２１】
データファブリック２５０は、何れかのメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。データファブリック２５０は、ＢＩＯＳによって定義されたシステムメモリマップであって、システム構成に基づいてメモリアクセスの宛先を決定するためのシステムメモリマップと、仮想接続毎のバッファと、を含む。
【００２２】
周辺機器コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々は、システムハブ２６６及びＳＭＮバスに双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用することができる周辺機器コントローラの単なる例示である。
【００２３】
周辺機器バスコントローラ２７０は、システムコントローラ又は「サウスブリッジ」（ＳＢ）２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々は、入力／出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に双方向に接続されている。よって、例えば、ＣＰＵコアは、Ｉ／Ｏハブ２７６を介してデータファブリック２５０がルーティングするアクセスを介して、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２又はＰＣＩｅコントローラ２７４のレジスタをプログラムすることができる。
【００２４】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、これらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、例えば位相ロックループ（ＰＬＬ）等のように図２に示されていない１つ以上のクロックソースを含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を決定することができる。
【００２５】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＡＰＵ２００が高温になると、ＳＭＵ２８０は、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減することができる。ＡＰＵ２００がさらに高温になると、ＡＰＵ２００は完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＮバスを介してＳＭＵ２８０によって外部センサから受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低減することができる。
【００２６】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、スケーラブルデータポート（ＳＤＰ）を介して、メモリチャネルコントローラ３１４をデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介して、メモリチャネルコントローラ３１４をＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４に双方向に接続されている。ＰＨＹ３３０は、図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルへの双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ３１４の動作を制御する電力エンジン３２０を有する。
【００２７】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した他のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、ＳＤＰを介して、メモリチャネルコントローラ４１４をデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠して、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、別のＳＤＰを介して、メモリチャネルコントローラ４２４をデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠して、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４に双方向に接続されている。ＰＨＹ４４０は、図１のメモリチャネル１３０等のメモリチャネルへの双方向接続を有する。ＰＨＹ４５０は、図１のメモリチャネル１４０等のメモリチャネルへの双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の両方の動作を制御する共有電力エンジン４３０を使用する。
【００２８】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレスジェネレータ５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、再生キュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００２９】
インタフェース５１２は、外部バスを介したデータファブリック２５０への第１双方向接続を有し、出力を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られる、イングランドのケンブリッジのＡＲＭホールディングスＰＬＣによって指定されたＡＸＩ（advanced extensible interface）バージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又は、ＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００内の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインからＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００３０】
アドレスジェネレータ５２２は、ＡＸＩ４バスを介してデータファブリック２５０から受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、標準化されたフォーマットで表される物理アドレス空間内のアクセスアドレスを含む。アドレスジェネレータ５２２は、標準化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動すると、メモリシステム１２０内のメモリデバイスにクエリしてその細部及び構成を判別し、アドレスジェネレータ５２２に関連する構成レジスタのセットをプログラムする。アドレスジェネレータ５２２は、標準化されたアドレスを適切なフォーマットに変換するために、構成レジスタに記憶された構成を使用する。コマンドキュー５２０は、例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等のデータ処理システム１００内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレスジェネレータ５２２によって復号化されたアドレスフィールドと、アービタ５３８がアクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えば、ライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００３１】
再生キュー５３０は、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭに対する書き込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭに対する書き込み及び読み出しＣＲＣ応答等の応答を待っているアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正確であるかエラーを示すかを判別する。再生キュー５３０は、これらのサイクルのうち１つのサイクルのパリティ又はＣＲＣエラーの場合にアクセスが再生されることを可能にする。
【００３２】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗（ＺＱ）較正サイクルのための状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュサイクルを実行するために定期的に起動する必要がある。リフレッシュロジック５３２は、ＤＲＡＭチップ内のメモリセルの記憶キャパシタから電荷がリークすることによって生じるデータエラーを防止するために、リフレッシュコマンドを定期的に生成する。また、リフレッシュロジック５３２は、システムの熱変化によるオンダイターミネーション抵抗の不一致を防止するために、ＺＱを定期的に較正する。
【００３３】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部である。アービタ５３８は、メモリバスの使用を改善するために、アクセスのインテリジェントなスケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスがＤＲＡＭタイミングパラメータに基づいて発行に適格であるかどうかを判別することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、「ｔＲＣ」として知られる起動コマンドの間の最小の指定時間を有する。タイミングブロック５３４は、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて、適格性を決定するカウンタのセットを維持し、再生キュー５３０に双方向に接続されている。ページテーブル５３６は、各バンクのアクティブページに関する状態情報、及び、アービタ５３８のためのメモリチャネルのランクを維持し、再生キュー５３０に双方向に接続されている。
【００３４】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求に関する書き込みデータ及びＥＣＣを記憶する。アービタ５３８がメモリチャネルへのディスパッチのための対応する書き込みアクセスを選択した場合に、組み合わされた書き込みデータ／ＥＣＣをキュー５１４に出力する。
【００３５】
電力コントローラ５５０は、概して、ＡＸＩバージョン１（ＡＸＩ）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、図５において別個に示される「ＥＶＥＮＴ＿ｎ」という符号が付されたイベント信号を受信するための入力と出力とを含む、ＳＭＮへの第１双方向接続を有する。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタのセット５６２と、マイクロコントローラ（μＣ）５６４と、自動リフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼された読み出し／書き込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされ、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、これらのブロック（図５には詳細に示されていない）に接続された出力を有する。自動リフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し／書き込みタイミングエンジン５６８は、ＤＤＲインタフェースの最大読み出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３６】
メモリチャネルコントローラ５１０は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ５２２は、アドレス情報を、メモリシステム内のランク、行ドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー５２０は、予め復号化された情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレスジェネレータ５２２がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ５３８は、例えばＱｏＳ要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック５３４によって示されるタイミング適格性情報、及び、ページテーブル５３６によって示されたアクティブページ情報を使用する。例えば、アービタ５３８は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、１つのバンクへのオーバヘッドアクセスを隠す。特に、通常の動作中、アービタ５３８は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
【００３７】
図６は、いくつかの実施形態による、図５のメモリコントローラ５００によって使用される状態図６００である。状態図６００は、メモリコントローラ５００によって利用されるリフレッシュコマンドのタイプに対応する状態の図である。状態図６００は、自動リフレッシュ状態６０２と、リフレッシュ１状態（ＲＥＦ１）６０４と、リフレッシュ２状態（ＲＥＦ２）６０６と、リフレッシュ４状態（ＲＥＦ４）６０８と、を含む。状態図６００は、矢印による状態遷移を表し、メモリコントローラ５００は、条件６１０，６１２，６１４，６１６，６１８，６２０，６２２，６２４を含む対応する条件に応じて、状態遷移を実行する。
【００３８】
動作中、図５のメモリコントローラ５００等のメモリコントローラは、図２のＣＰＵコア複合体２１０内のＣＰＵコア又はグラフィックスコア２２０等のメモリアクセスエージェントに接続されており、メモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ５００は、図１のメモリシステム１２０に接続するように構成されている。上述したように、メモリシステム１２０は、図１のＤＩＭＭ１３４，１３６、１３８として実装されたメモリの複数のランクを含むことができる。メモリコントローラ５００は、メモリシステム１２０内の各バンク又はバンクの組み合わせへのリフレッシュサイクルを定期的に生成するためのリフレッシュロジック回路（例えば、図５のリフレッシュロジック５３２等）を含む。リフレッシュロジック５３２は、オンザフライリフレッシュモードを実装し、リフレッシュコマンドは、リフレッシュされるメモリバンクに関連する条件に応じて自動的に選択された粒度で生成される。
【００３９】
リフレッシュロジック５３２は、第１状態と、ＲＥＦ１状態６０４と、第２状態と、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８の何れかと、を使用してオンザフライモードを実装する。ＲＥＦ１状態６０４は、リフレッシュ（ＲＥＦ）コマンドに応じて、バンク全体をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）の使用に対応する。ＲＥＦ２状態６０６は、ＲＥＦコマンドに応じて、にバンクの選択されたサブセット（ここでは、バンクの半分）をメモリに自動リフレッシュさせる第２自動リフレッシュコマンド（ＲＥＦ２）の使用に対応する。また、ＲＥＦ４状態６０８は、ＲＥＦコマンドに応じて、バンクのより小さい選択されたサブセット（ここでは、バンクの４分の１）をメモリに自動リフレッシュさせる第３自動リフレッシュコマンド（ＲＥＦ４）の使用に対応する。メモリコントローラ２９０は、リフレッシュされるバンクに関連する第１条件（条件６１８又は条件６２２）を検出したことに応じて、ＲＥＦ１状態６０４と、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８と、の間で切り替えを行う。メモリコントローラ２９０は、第２条件（条件６２４又は条件６２０）を検出したことに応じて、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８からＲＥＦ１状態６０４への切り替えを行う。
【００４０】
概して、リフレッシュロジック５３２は、リフレッシュ間隔パラメータｔＲＥＦＩによって示された期間内に各メモリバンクをリフレッシュするのに十分なレートでリフレッシュコマンドを発行する。各ｔＲＥＦＩ期間の間に発行されたリフレッシュコマンドの数は、現在のリフレッシュ状態で発行されたリフレッシュコマンドのタイプに依存する。リフレッシュロジック５３２は、バンクがＲＥＦ１状態６０４にある場合に、各ｔＲＥＦＩ期間の間に１つのＲＥＦ１コマンドをバンクに提供し、バンクがＲＥＦ２状態６０６にある場合に、各ｔＲＥＦＩ期間の間に２つのＲＥＦ２コマンドをバンクに提供し、又は、バンクがＲＥＦ４状態６０８にある場合に、各ｔＲＥＦＩ期間の間に４つのＲＥＦ４コマンドをバンクに提供する。
【００４１】
リフレッシュロジック５３２は、対応するメモリが低電力状態にある場合、自動リフレッシュ状態６０２にある。メモリコントローラ５００がメモリを低電力状態から出させると、リフレッシュロジック５３２は、自動リフレッシュ状態６０２から、ＲＥＦ１状態６０４、ＲＥＦ２状態６０６及びＲＥＦ４状態６０８のうち選択された１つの状態に遷移する。メモリコントローラ２９０は、特定の条件が満たされるまで、ＲＥＦ１状態６０４、ＲＥＦ２状態６０６及びＲＥＦ４状態６０８毎に示された状態遷移６１２，６１４，６１６として、現在の状態に留まる。
【００４２】
リフレッシュ状態間を切り替えるためのいくつかの条件は、単独で又は様々な組み合わせで使用することができる。図示された実施形態では、これらの条件は、バンクに対する保留中のリフレッシュの数、図５のコマンドキュー５２０におけるバンクに対する保留中のメモリアクセス要求の数、バンクに対する保留中のメモリアクセス要求の優先度及び／又はタイプ（読み出し若しくは書き込み）、保留中のリフレッシュの数が所定の閾値を上回っている場合に、所定のバンクに対する保留中のリフレッシュ条件が存在するか否かを含む。更に、図６は、所定のランクのメモリ内の単一のバンクのリフレッシュ状態機械を示しているが、リフレッシュ状態機械は、所定のランクの全てのバンク及び複数のランクにおいて対応するバンク等のように、様々な方法でメモリシステムのより大きなサブセットに拡張してもよい。
【００４３】
１つの簡単な例を挙げると、リフレッシュロジック５３２は、バンクに対する保留中のメモリアクセス要求の数が閾値を超えている場合、ＲＥＦ１状態６０４とＲＥＦ２状態６０６との間で切り替えることができる。この条件は、より低いレイテンシ及びより細かい粒度のリフレッシュが好ましいことを示している。一方、リフレッシュロジック５３２がＲＥＦ２状態６０６にあるが、偶数のＲＥＦ２コマンドが発行され、バンクに対する保留中のメモリアクセス要求が存在しないと判別した場合、効率を維持するために、ＲＥＦ２状態６０６からＲＥＦ１状態６０４に戻る。リフレッシュロジック５３２がＲＥＦ２状態６０６又はＲＥＦ４状態６０８から状態遷移する前提条件は、発行されたリフレッシュの数が、一度にリフレッシュされているバンクの部分に対応することである。したがって、リフレッシュロジック５３２は、図５に示すように、これらの条件を追跡するためにアービタ５３８に接続されている。
【００４４】
図７は、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。図７のメモリリフレッシュ状態は、リフレッシュ１（ＲＥＦ１）状態７００と、リフレッシュ２（ＲＥＦ２）状態７１０と、リフレッシュ４（ＲＥＦ４）状態７２０と、を含む。ＲＥＦ１状態７００は、リフレッシュが開始する前のバンク７０２と、ＲＥＦ１コマンド中のＲＥＦ１_１バンク７０４と、リフレッシュされたバンク７０６と、を含む。ＲＥＦ２状態７１０は、リフレッシュが開始する前のバンク７０２と、第１ＲＥＦ２コマンド中のＲＥＦ２_１バンク７１４と、第２ＲＥＦ２コマンド中のＲＥＦ２_２バンク７１６と、リフレッシュされたバンク７０６と、を含む。ＲＥＦ４状態７２０は、リフレッシュ状態の前のバンク７０２と、第１ＲＥＦ４コマンド中のＲＥＦ４_１バンク７２４と、第２ＲＥＦ４コマンド中のＲＥＦ４_２バンク７２６と、第３ＲＥＦ４コマンド中のＲＥＦ４_３バンク７２８と、第４ＲＥＦ４コマンド中のＲＥＦ４_４バンク７３０と、リフレッシュされたバンク７０６と、を含む。
【００４５】
ＲＥＦ１状態７００は、１つ以上のバンク７０２をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１コマンド）の使用に対応する。ＲＥＦ１コマンドが実行されると、ＲＥＦ１バンク７０４がリフレッシュされ、リフレッシュされたバンク７０６が得られる。
【００４６】
ＲＥＦ２状態７１０は、ＲＥＦ２_１バンク７１４及びＲＥＦ２_２バンク７１６で示されるように、リフレッシュ間隔（ｔＲＥＦＩ）として知られる期間内にバンク７０２の第１サブセット及び第２サブセットをメモリに自動リフレッシュさせる第２自動リフレッシュコマンド（ＲＥＦ２コマンド）の使用に対応する。ＲＥＦ２_１バンク７１４及びＲＥＦ２_２バンク７１６の各々は、バンク７０２の別々の半分のサブセットである。
【００４７】
また、ＲＥＦ４状態７２０は、ｔＲＥＦＩ期間内にバンク７０２の第１サブセット、第２サブセット、第３サブセット及び第４サブセットをメモリに自動リフレッシュさせる第３自動リフレッシュコマンド（ＲＥＦ４コマンド）の使用に対応する。ＲＥＦ４_１バンク７２４、ＲＥＦ４_２バンク７２６、ＲＥＦ４_３バンク７２８及びＲＥＦ４_４バンク７３０は、バンク７０２のリフレッシュされた第１サブセット、第２サブセット、第３サブセット及び第４サブセットに対応する。ＲＥＦ４_１バンク７２４、ＲＥＦ４_２バンク７２６、ＲＥＦ４_３バンク７２８及びＲＥＦ４_４バンク７３０の各々は、ＲＥＦ４状態７２０内のバンク７０２の別々の４分の１のサブセットである。
【００４８】
リフレッシュの数は、状態変化が発生する前のサブセットの総数に対応している必要がある。一実施形態では、バンク７０２等のバンク全体をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）が受信される。第１条件を検出したことに応じて、ＲＥＦ１  ７００からＲＥＦ２  ７１０又はＲＥＦ４  ７２０への切り替えが行われる。ＲＥＦ２コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に２の倍数になるはずである。ＲＥＦ４コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に４の倍数になるはずである。
【００４９】
これらの異なるリフレッシュモードをＲＥＦＩモードよりも細かい粒度で提供し、メモリコントローラ５００によって既に追跡されている保留中のメモリアクセス要求の特性を用いて、オンザフライで状態変化の決定を行うことにより、メモリコントローラ５００は、システムバスの使用率が高い期間内に入ってくるメモリアクセス要求のレイテンシを低減することができ、システムバスの使用率が低い期間内にメモリバンクをより効率的にリフレッシュすることができる。
【００５０】
図８は、図５のメモリコントローラ５００によって使用される方法８００のフローチャートである。ブロック８０２において、第１状態において第１自動リフレッシュコマンドが生成される。ブロック８０４において、第２状態において第２自動リフレッシュコマンドが生成される。ブロック８０６において、第１条件が検出される。ブロック８０８において、第１状態と第２状態との間での切り替えが行われる。ブロック８１０において、第２条件が検出される。ブロック８１０において、第２条件が検出されたことに応じて、ブロック８１２において、第２状態と第１状態との間での切り替えが行われる。終了ブロックにおいて処理が終了する。
【００５１】
図８に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも１つのプロセッサによって実行される命令によって管理されてもよい。図８に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５２】
特定の実施形態について説明したが、これらの実施形態の様々な変更が当業者には明らかであろう。メモリコントローラ５００は、例えば、高帯域幅メモリ（ＨＢＭ）及びＲＡＭｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）等のＤＤＲｘメモリ以外の他のタイプのメモリにインタフェースすることができる。示された実施形態では、別々のＤＩＭＭに対応する各メモリのランクを示したが、他の実施形態では、各ＤＩＭＭは、複数のランクをサポートすることができる。更に、メモリチャネルは、ＤＤＲ４メモリの複数のランクを含んでもよい。
【００５３】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【図１】
2019519836.tif 000003
【図２】
2019519836.tif 000004
【図３】
2019519836.tif 000005
【図４】
2019519836.tif 000006
【図５】
2019519836.tif 000007
【図６】
2019519836.tif 000008
【図７】
2019519836.tif 000009
【図８】
2019519836.tif 000010
【手続補正書】
【提出日】平成31年2月21日(2019.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システム（１００）であって、
少なくとも１つのランク（１３４／１３６／１３８）を含むメモリチャネル（１３０）と、
前記メモリチャネル（１３０）に接続されたデータプロセッサ（１１０）であって、前記少なくとも１つのランク（１３４／１３６／１３８）にアクセスするように構成されたデータプロセッサ（１１０）と、を備え、
前記データプロセッサ（１１０）は、リフレッシュロジック（５３２）を有しており、前記リフレッシュロジック（５３２）の起動に応じて、
前記メモリチャネル（１３０）のバンク（７０２）へのリフレッシュサイクルを生成することであって、前記データプロセッサ（１１０）は、第１状態（６０４）及び第２状態（６０６／６０８）のうち１つの状態を選択し、前記第１状態（６０４）は、前記データプロセッサ（１１０）に前記バンク（７０２）を自動リフレッシュさせる第１自動リフレッシュコマンド（７００）に対応し、前記第２状態は、前記データプロセッサ（１１０）に前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（７１０／７２０）に対応する、ことと、
前記バンク（７０２）に関連する第１条件（６１８／６２２）を前記リフレッシュロジック（５３２）が検出したことに応じて、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間での切り替えを開始することと、
第２条件（６２０／６２４）の検出に応じて、前記第２状態（６０６／６０８）と前記第１状態（６０４）との間での切り替えを開始することと、
を行うように構成されている、
データ処理システム（１００）。
【請求項２】
前記リフレッシュロジック（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第１条件（８１６）を検出する、
請求項１のデータ処理システム（１００）。
【請求項３】
前記リフレッシュロジック（５３２）は、前記バンク（７０２）に送信されたリフレッシュの数が前記バンク（７０２）のサブセットの総数に対応するのを検出したことに応じて、前記第２条件（８１０）を検出し、
前記データプロセッサは、前記バンク（７０２）へのアクセス要求を記憶しない、
請求項１のデータ処理システム（１００）。
【請求項４】
前記データプロセッサ（１１０）は、前記第２自動リフレッシュコマンドがリフレッシュ２（ＲＥＦ２）コマンドである場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュし、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項１のデータ処理システム（１００）。
【請求項５】
前記データプロセッサ（１１０）は、前記第２自動リフレッシュコマンドがリフレッシュ４（ＲＥＦ４）コマンドである場合に、前記リフレッシュサイクル時間内に前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュし、
前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、前記第３サブセット（７２８）及び前記第４サブセット（７４０）の各々は、前記バンク（７０２）の別々の４分の１のサブセットである、
請求項４のデータ処理システム（１００）。
【請求項６】
データプロセッサ（１１０／２００）であって、
メモリアクセスエージェント（２１０／２２０）と、
前記メモリアクセスエージェント（２１０／２２０）に接続されたメモリコントローラ（２９２／５００）であって、メモリシステム（１２０）に接続するように構成されたメモリコントローラ（２９２／５００）と、を備え、
前記メモリコントローラ（２９２／５００）は、
第１状態（６０４）及び第２状態（６０６／６０８）を含むオンザフライモードを有する、前記メモリシステム（１２０）のメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路（５３２）を備えており、前記第１状態（６０４）は、前記メモリにバンク（７０２）を自動リフレッシュさせる第１自動リフレッシュコマンド（７００）に対応しており、前記第２状態（６０６／６０８）は、前記メモリに前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（７１０／７２０）に対応しており、
前記メモリシステム（１２０）の前記バンク（７０２）に関連する第１条件（６１８／６２２）を前記リフレッシュロジック回路（５３２）が検出したことに応じて、前記第１状態（６０４）と前記第２状態（６０６／６０８）との間で切り替えを行い、
第２条件（６２０／６２４）をリフレッシュロジック回路（５３２）が検出したことに応じて、前記第２状態（６０６／６０８）と前記第１状態（６０４）との間で切り替えを行う、
データプロセッサ（１１０／２００）。
【請求項７】
前記リフレッシュロジック回路（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第１条件（６２０／６２４）を検出する、
請求項６のデータプロセッサ（１１０／２００）。
【請求項８】
前記リフレッシュロジック回路（５３２）は、前記バンク（７０２）に対する保留中のリフレッシュの数に応じて前記第２条件（６２０／６２４）を検出する、
請求項６のデータプロセッサ（１１０／２００）。
【請求項９】
前記メモリコントローラ（２９２／５００）は、前記第２自動リフレッシュコマンド（７１０／７２０）がリフレッシュ２（ＲＥＦ２）コマンド（７１０）である場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュするように構成されており、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項６のデータプロセッサ（１１０／２００）。
【請求項１０】
前記メモリコントローラ（２９２／５００）は、前記第２自動リフレッシュコマンド（７１０／７２０）がリフレッシュ４（ＲＥＦ４）コマンド（７２０）である場合に、リフレッシュサイクル時間内に前記バンク（７０２）の第１サブセット（７２４）、第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュするように構成されており、
前記バンク（７０２）の前記第１サブセット（７２４）、前記第２サブセット（７２６）、前記第３サブセット（７２８）及び前記第４サブセット（７４０）の各々は、前記バンク（７２０）の別々の４分の１のサブセットである、
請求項６のデータプロセッサ（１１０／２００）。
【請求項１１】
メモリコントローラ（２９２／５００）を介してメモリシステム（１２０）内のメモリのリフレッシュを管理する方法（８００）であって、
前記メモリコントローラ（２９２／５００）が第１状態（６０４／８０２）にある場合に第１自動リフレッシュコマンド（７００）を生成することであって、前記第１自動リフレッシュコマンド（７００）は、前記メモリにバンク（７０２）を自動リフレッシュさせる、ことと、
前記メモリコントローラ（２９２／５００）が第２状態（６０６／６０８／８０２）にある場合に第２自動リフレッシュコマンド（７１０／７１２）を生成することであって、前記第２自動リフレッシュコマンド（７１０／７１２）は、前記メモリに前記バンク（７０２）の選択されたサブセットを自動リフレッシュさせる、ことと、
前記バンク（７０２）に関連する第１条件（６１２／６１８／８０６／８０８）を前記メモリコントローラ（２９２／５００）が検出したことに応じて、前記第１状態と前記第２状態との間で切り替えを行うことと、
第２条件（６２０／６２４／８１０／８１２）を前記メモリコントローラ（２９２／５００）が検出したことに応じて、前記第２状態と前記第１状態との間で切り替えを行うことと、を含む、
方法。
【請求項１２】
前記第１条件を検出することは、
前記バンク（７０２）に対する保留中のリフレッシュの数が所定の閾値を上回ったときを検出することを含む、
請求項１１の方法（８００）。
【請求項１３】
前記第２条件を検出することは、
送信されたリフレッシュの数が前記バンク（７０２）のサブセットの総数に対応することを検出することと、
前記メモリコントローラ（２９２／５００）が、前記バンク（７０２）へのアクセス要求を記憶しないことを検出することと、を含む、
請求項１１の方法（８００）。
【請求項１４】
前記第２自動リフレッシュコマンドを生成することは、
前記第２自動リフレッシュコマンドがリフレッシュ２（ＲＥＦ２）コマンド（７１０）である場合に、リフレッシュ期間内に前記バンク（７０２）の第１サブセット（７１４）及び第２サブセット（７１６）をリフレッシュすることを含み、
前記バンク（７０２）の前記第１サブセット（７１４）及び前記第２サブセット（７１６）の各々は、前記バンク（７０２）の別々の半分のサブセットである、
請求項１１の方法（８００）。
【請求項１５】
前記第１自動リフレッシュコマンド（７００）を生成することと、
前記第２自動リフレッシュコマンド（７１０／７１２）を生成することと、
前記第１状態と前記第２状態との間で切り替えを行うことと、
前記メモリの複数のバンクの各々で独立して前記第２状態と前記第１状態との間の切り替えを行うことと、
を実行することを含む、
請求項１１の方法（８００）。
【請求項１６】
メモリアクセス要求を受信する入力と、メモリアクセスをメモリシステム（１２０）に提供する出力と、を有するメモリコントローラ（５００）であって、
前記メモリコントローラ（５００）は、
前記メモリアクセス要求を受信するコマンドキュー（５２０）であって、複数のエントリと、選択されたメモリアクセスを提供する出力と、を有するコマンドキュー（５２０）と、
前記コマンドキュー（５２０）に接続されたアービタ（５３８）であって、前記メモリシステム（１２０）にディスパッチするために前記コマンドキュー（５２０）からエントリを選択するアービタ（５３８）と、
前記アービタ（５３８）に接続されたリフレッシュロジック回路（５３２）であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム（１２０）への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行する、リフレッシュロジック回路（５３２）と、を備える、
メモリコントローラ（５００）。
【請求項１７】
前記リフレッシュロジック回路（５３２）は、第１状態（６０４）にある場合に、前記リフレッシュ間隔中に、前記メモリバンクの全てをメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）を提供し、
前記リフレッシュロジック回路（５３２）は、第２状態（６０６）にある場合に、前記リフレッシュ間隔中に、複数の自動リフレッシュコマンドに対応する前記メモリバンクの一部を自動リフレッシュする前記複数の自動リフレッシュコマンドを提供する、
請求項１６のメモリコントローラ（５００）。
【請求項１８】
前記リフレッシュロジック回路（５３２）は、第２状態（６０６）にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの半分を前記メモリに自動リフレッシュさせる２つの第２自動リフレッシュコマンド（ＲＥＦ２）を提供し、
前記リフレッシュロジック回路（５３２）は、第３状態（６０８）にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの４分の１を前記メモリに自動リフレッシュさせる４つの第３自動リフレッシュコマンド（ＲＥＦ４）を提供する、
請求項１７のメモリコントローラ（５００）。
【請求項１９】
メモリコントローラ（５００）であって、
メモリアクセス要求を受信する入力と、出力と、を有するインタフェース（５１２）と、
前記インタフェース（５１２）の出力に接続されたデコーダ（５２２）であって、前記メモリアクセス要求を復号化して、対応するメモリアクセスを提供するデコーダ（５２２）と、
前記デコーダ（５２２）の出力に接続された第１入力と、第２入力と、出力と、を有するコマンドキュー（５２０）であって、複数のエントリを有するコマンドキュー（５２０）と、
前記コマンドキュー（５２０）に接続されたアービタ（５３８）であって、前記メモリシステム（１２０）にディスパッチするために前記コマンドキュー（５２０）からエントリを選択し、前記コマンドキュー（５２０）の第２入力に自動リフレッシュコマンドを提供するアービタ（５３８）と、
前記コマンドキュー（５２０）の出力に接続された入力と、メモリチャネルに接続するための出力と、を有する第２キュー（５１４）と、
前記アービタ（５１４）に接続されたリフレッシュロジック回路（５３２）であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム（１２０）への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行し、前記自動リフレッシュコマンドを前記アービタ（５３８）に提供するリフレッシュロジック回路（５３２）と、を備える、
メモリコントローラ（５００）。
【請求項２０】
メモリへのアクセスを制御する方法であって、
メモリアクセス要求を受信することと、
前記メモリアクセス要求を復号化して、復号化されたメモリアクセス要求を提供することと、
前記復号化されたメモリアクセス要求をコマンドキュー（５２０）に記憶することと、
自動リフレッシュコマンドを前記コマンドキュー（５２０）に記憶することと、
前記復号化されたメモリアクセス要求及び前記自動リフレッシュコマンドのうち選択された１つを前記メモリに提供するために、前記コマンドキュー（５２０）において、前記復号化されたメモリアクセス要求と前記自動リフレッシュコマンドとの間でアービトレーションすることと、
リフレッシュされるメモリバンクに関連する条件に応じて、オンザフライリフレッシュモードにおいて、自動選択された粒度を用いて前記自動リフレッシュコマンドを生成することと、を含む、
方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、特に、データ処理システムにおけるメモリシステムのリフレッシュに関する。
【背景技術】
【０００２】
コンピュータシステムの全体的な処理速度を向上させるために、様々な技術が開発されている。集積回路処理技術の大幅な改善は、コンピュータ処理速度及びメモリ容量を増加させる能力に寄与し、これにより、コンピュータシステム全体の改善された性能に寄与する。サブミクロンの特徴を有する集積回路を製造する能力は、集積回路当たりのキャパシタ等の電気部品の量も増加させることができる。
【０００３】
サブミクロンの特徴を有するキャパシタの大規模アレイから構成されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップは、コンピュータシステムのメインメモリに利用されている。ＤＲＡＭは、通常、安価で高密度であり、これにより、大量のＤＲＡＭがデバイス毎に統合されることが可能になる。キャパシタの性質上、ＤＲＡＭは、常にリフレッシュされなければならず、そうでなければ、キャパシタ内に記憶されたデータが失われてしまう。各キャパシタは電荷をゆっくりとリークし、ＤＲＡＭがリフレッシュされない場合には、キャパシタは、最終的にかなりの電荷をリークして、不可逆的なデータ破損に直面する。
【０００４】
今日販売されている殆どのＤＲＡＭチップは、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって推奨される様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ標準と互換性がある。ＪＥＤＥＣによって提供される標準は、一定期間データのアクセスを禁止するリフレッシュサイクル時間を提供する。コンピュータシステム内のＤＤＲ  ＤＲＡＭデバイスの密度を増大させると、リフレッシュに必要な時間が増大し、これにより、コンピュータ処理のレイテンシが増大する。
【０００５】
これらの問題に対処するために、ＪＥＤＥＣは、１Ｘ、２Ｘ、４Ｘリフレッシュモードとして知られるＤＤＲバージョン４（ＤＤＲ４）標準の機能を採用している。これらのモードでは、ＤＤＲ４メモリは、単一のリフレッシュ（ＲＥＦ）コマンドに応じて、選択されたバンク、選択されたバンクの半分、又は、選択されたバンクの４分の１をリフレッシュすることができる。モードレジスタ（モードレジスタ３（ＭＲ３））は、これらのモード間でモードを選択するために使用される。更に、ＭＲ３は、１Ｘ若しくは２Ｘの選択、又は、１Ｘ若しくは４Ｘの選択を動的に実行し、未使用のアドレスビットによって示される「オンザフライ」モードをサポートするようにプログラムされる場合がある。
【図面の簡単な説明】
【０００６】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアクセラレーテッドプロセシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、リフレッシュ条件を示す状態図である。
【図７】いくつかの実施形態による、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。
【図８】いくつかの実施形態による、図５のメモリコントローラによって使用される方法のフローチャートである。
【発明を実施するための形態】
【０００７】
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
【０００８】
以下の１つの形態で説明するように、データ処理システムは、少なくとも１つのランクを有するメモリチャネルと、リフレッシュロジックを有するメモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、リフレッシュロジックの起動（activation）に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第１自動リフレッシュコマンドに対応する第１状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンドに対応する第２状態のうち何れかの状態を選択する。データプロセッサは、リフレッシュロジックがバンクに関連する第１条件を検出したことに応じて、第１状態と第２状態との間での切り替えを開始し、リフレッシュロジック回路が第２条件を検出したことに応じて、第２状態と第１状態との間での切り替えを開始する。
【０００９】
別の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続され、メモリシステムに接続するように適合されたメモリコントローラと、を含む。メモリコントローラは、メモリシステムのメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路を含む。メモリコントローラは、第１状態及び第２状態を含むオンザフライモードを有する。第１状態は、メモリに対してバンクを自動リフレッシュさせる第１自動リフレッシュコマンド（例えば、ＲＥＦ１）に対応する。第２状態は、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる第２自動リフレッシュコマンド（例えば、ＲＥＦ２又はＲＥＦ４）に対応する。メモリコントローラは、バンクに関連する第１条件をリフレッシュロジック回路が検出したことに応じて、第１状態と第２状態との間で切り替えを行う。メモリコントローラは、第２条件をリフレッシュロジック回路が検出したことに応じて、第２状態と第１状態との間で切り替えを行う。
【００１０】
更に別の形態では、メモリコントローラを介してメモリシステム内のメモリのリフレッシュを管理する方法が説明される。第１自動リフレッシュコマンドは、メモリコントローラが第１状態にある場合に生成され、この第１自動リフレッシュコマンドは、メモリコントローラに対してバンクを自動リフレッシュさせる。第２自動リフレッシュコマンドは、メモリコントローラが第２状態にある場合に生成され、この第２自動リフレッシュコマンドは、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる。メモリコントローラが第１条件を検出したことに応じて、第１状態と第２状態との間での切り替えが行われる。メモリコントローラが第２条件を検出したことに応じて、第２状態と第１状態との間での切り替えが行われる。
【００１１】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセシングユニット（ＡＰＵ）の形態にあるデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（peripheral component interconnect express）システム１５０と、ＵＳＢ（universal serial bus）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクへの接続用のＰＣＩｅルート複合体、ＵＳＢネットワークへの接続用のＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶装置へのインタフェースが含まれる。
【００１２】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセット（この実施例では、個別のランクに対応する代表的なＤＩＭＭ１３４，１３６、１３８を含む）を含む。同様に、メモリチャネル１４０は、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセット（代表的なＤＩＭＭ１４４，１４６，１４８を含む）を含む。
【００１３】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルート複合体に接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入力／出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、リードオンリメモリ（ＲＯＭ）及びフラッシュＥＥＰＲＯＭ（flash electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１４】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、それぞれＵＳＢハブ１６２に接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、キーボード、マウス及びフラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１５】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム及びアプリケーションファイル等のための大容量記憶装置を提供する。
【００１６】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。メモリチャネル１３０，１４０の各々は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等の最新のＤＤＲメモリに接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。
【００１７】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コア複合体２１０と、グラフィックスコア２２０と、ディスプレイエンジンのセット２３０と、メモリ管理ハブ２４０と、データファブリック２５０と、周辺機器コントローラのセット２６０と、周辺機器バスコントローラのセット２７０と、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラのセット２９０と、を含む。
【００１８】
ＣＰＵコア複合体２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この実施例では、ＣＰＵコア複合体２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコア複合体は任意の数のＣＰＵコアを含むことができる。ＣＰＵコア２１２，２１４の各々は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に双方向に接続されており、データファブリック２５０にメモリアクセス要求を提供することができる。ＣＰＵコア２１２，２１４の各々は、単一のコアであってもよく、キャッシュ等の特定のリソースを共有する２つ以上の単一のコアを有するコア複合体であってもよい。
【００１９】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャ混合等のグラフィック動作を高度に統合された並列形式で実行することの可能な高性能グラフィックスプロセシングユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に双方向に接続されており、データファブリック２５０にメモリアクセス要求を提供することができる。この点について、ＡＰＵ２００は、ＣＰＵコア複合体２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコア複合体２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができ、また、グラフィックスコア２２０は、ＣＰＵコア複合体２１０によってアクセスすることができないプライベートグラフィックスメモリを使用する。
【００２０】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタ上に表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０における適切なアドレスへの一様な変換のために、共通メモリ管理（ＭＭ）ハブ２４０に双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック２５０に双方向に接続されている。
【００２１】
データファブリック２５０は、何れかのメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。データファブリック２５０は、ＢＩＯＳによって定義されたシステムメモリマップであって、システム構成に基づいてメモリアクセスの宛先を決定するためのシステムメモリマップと、仮想接続毎のバッファと、を含む。
【００２２】
周辺機器コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々は、システムハブ２６６及びＳＭＮバスに双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用することができる周辺機器コントローラの単なる例示である。
【００２３】
周辺機器バスコントローラ２７０は、システムコントローラ又は「サウスブリッジ」（ＳＢ）２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々は、入力／出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に双方向に接続されている。よって、例えば、ＣＰＵコアは、Ｉ／Ｏハブ２７６を介してデータファブリック２５０がルーティングするアクセスを介して、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２又はＰＣＩｅコントローラ２７４のレジスタをプログラムすることができる。
【００２４】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、これらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、例えば位相ロックループ（ＰＬＬ）等のように図２に示されていない１つ以上のクロックソースを含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を決定することができる。
【００２５】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＡＰＵ２００が高温になると、ＳＭＵ２８０は、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減することができる。ＡＰＵ２００がさらに高温になると、ＡＰＵ２００は完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＮバスを介してＳＭＵ２８０によって外部センサから受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低減することができる。
【００２６】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、スケーラブルデータポート（ＳＤＰ）を介して、メモリチャネルコントローラ３１４をデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介して、メモリチャネルコントローラ３１４をＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４に双方向に接続されている。ＰＨＹ３３０は、図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルへの双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ３１４の動作を制御する電力エンジン３２０を有する。
【００２７】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した他のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、ＳＤＰを介して、メモリチャネルコントローラ４１４をデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠して、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、別のＳＤＰを介して、メモリチャネルコントローラ４２４をデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠して、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４に双方向に接続されている。ＰＨＹ４４０は、図１のメモリチャネル１３０等のメモリチャネルへの双方向接続を有する。ＰＨＹ４５０は、図１のメモリチャネル１４０等のメモリチャネルへの双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の両方の動作を制御する共有電力エンジン４３０を使用する。
【００２８】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレスジェネレータ５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、再生キュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００２９】
インタフェース５１２は、外部バスを介したデータファブリック２５０への第１双方向接続を有し、出力を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られる、イングランドのケンブリッジのＡＲＭホールディングスＰＬＣによって指定されたＡＸＩ（advanced extensible interface）バージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又は、ＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００内の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインからＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００３０】
アドレスジェネレータ５２２は、ＡＸＩ４バスを介してデータファブリック２５０から受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、標準化されたフォーマットで表される物理アドレス空間内のアクセスアドレスを含む。アドレスジェネレータ５２２は、標準化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動すると、メモリシステム１２０内のメモリデバイスにクエリしてその細部及び構成を判別し、アドレスジェネレータ５２２に関連する構成レジスタのセットをプログラムする。アドレスジェネレータ５２２は、標準化されたアドレスを適切なフォーマットに変換するために、構成レジスタに記憶された構成を使用する。コマンドキュー５２０は、例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等のデータ処理システム１００内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレスジェネレータ５２２によって復号化されたアドレスフィールドと、アービタ５３８がアクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えば、ライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００３１】
再生キュー５３０は、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭに対する書き込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭに対する書き込み及び読み出しＣＲＣ応答等の応答を待っているアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正確であるかエラーを示すかを判別する。再生キュー５３０は、これらのサイクルのうち１つのサイクルのパリティ又はＣＲＣエラーの場合にアクセスが再生されることを可能にする。
【００３２】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗（ＺＱ）較正サイクルのための状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュサイクルを実行するために定期的に起動する必要がある。リフレッシュロジック５３２は、ＤＲＡＭチップ内のメモリセルの記憶キャパシタから電荷がリークすることによって生じるデータエラーを防止するために、リフレッシュコマンドを定期的に生成する。また、リフレッシュロジック５３２は、システムの熱変化によるオンダイターミネーション抵抗の不一致を防止するために、ＺＱを定期的に較正する。
【００３３】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部である。アービタ５３８は、メモリバスの使用を改善するために、アクセスのインテリジェントなスケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスがＤＲＡＭタイミングパラメータに基づいて発行に適格であるかどうかを判別することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、「ｔＲＣ」として知られる起動コマンドの間の最小の指定時間を有する。タイミングブロック５３４は、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて、適格性を決定するカウンタのセットを維持し、再生キュー５３０に双方向に接続されている。ページテーブル５３６は、各バンクのアクティブページに関する状態情報、及び、アービタ５３８のためのメモリチャネルのランクを維持し、再生キュー５３０に双方向に接続されている。
【００３４】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求に関する書き込みデータ及びＥＣＣを記憶する。アービタ５３８がメモリチャネルへのディスパッチのための対応する書き込みアクセスを選択した場合に、組み合わされた書き込みデータ／ＥＣＣをキュー５１４に出力する。
【００３５】
電力コントローラ５５０は、概して、ＡＸＩバージョン１（ＡＸＩ）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、図５において別個に示される「ＥＶＥＮＴ＿ｎ」という符号が付されたイベント信号を受信するための入力と出力とを含む、ＳＭＮへの第１双方向接続を有する。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタのセット５６２と、マイクロコントローラ（μＣ）５６４と、自動リフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼された読み出し／書き込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされ、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、これらのブロック（図５には詳細に示されていない）に接続された出力を有する。自動リフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し／書き込みタイミングエンジン５６８は、ＤＤＲインタフェースの最大読み出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３６】
メモリチャネルコントローラ５１０は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ５２２は、アドレス情報を、メモリシステム内のランク、行ドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー５２０は、予め復号化された情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレスジェネレータ５２２がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ５３８は、例えばＱｏＳ要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック５３４によって示されるタイミング適格性情報、及び、ページテーブル５３６によって示されたアクティブページ情報を使用する。例えば、アービタ５３８は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、１つのバンクへのオーバヘッドアクセスを隠す。特に、通常の動作中、アービタ５３８は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
【００３７】
図６は、いくつかの実施形態による、図５のメモリコントローラ５００によって使用される状態図６００である。状態図６００は、メモリコントローラ５００によって利用されるリフレッシュコマンドのタイプに対応する状態の図である。状態図６００は、自動リフレッシュ状態６０２と、リフレッシュ１状態（ＲＥＦ１）６０４と、リフレッシュ２状態（ＲＥＦ２）６０６と、リフレッシュ４状態（ＲＥＦ４）６０８と、を含む。状態図６００は、矢印による状態遷移を表し、メモリコントローラ５００は、条件６１０，６１２，６１４，６１６，６１８，６２０，６２２，６２４を含む対応する条件に応じて、状態遷移を実行する。
【００３８】
動作中、図５のメモリコントローラ５００等のメモリコントローラは、図２のＣＰＵコア複合体２１０内のＣＰＵコア又はグラフィックスコア２２０等のメモリアクセスエージェントに接続されており、メモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ５００は、図１のメモリシステム１２０に接続するように構成されている。上述したように、メモリシステム１２０は、図１のＤＩＭＭ１３４，１３６、１３８として実装されたメモリの複数のランクを含むことができる。メモリコントローラ５００は、メモリシステム１２０内の各バンク又はバンクの組み合わせへのリフレッシュサイクルを定期的に生成するためのリフレッシュロジック回路（例えば、図５のリフレッシュロジック５３２等）を含む。リフレッシュロジック５３２は、オンザフライリフレッシュモードを実装し、リフレッシュコマンドは、リフレッシュされるメモリバンクに関連する条件に応じて自動的に選択された粒度で生成される。
【００３９】
リフレッシュロジック５３２は、第１状態と、ＲＥＦ１状態６０４と、第２状態と、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８の何れかと、を使用してオンザフライモードを実装する。ＲＥＦ１状態６０４は、リフレッシュ（ＲＥＦ）コマンドに応じて、バンク全体をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）の使用に対応する。ＲＥＦ２状態６０６は、ＲＥＦコマンドに応じて、にバンクの選択されたサブセット（ここでは、バンクの半分）をメモリに自動リフレッシュさせる第２自動リフレッシュコマンド（ＲＥＦ２）の使用に対応する。また、ＲＥＦ４状態６０８は、ＲＥＦコマンドに応じて、バンクのより小さい選択されたサブセット（ここでは、バンクの４分の１）をメモリに自動リフレッシュさせる第３自動リフレッシュコマンド（ＲＥＦ４）の使用に対応する。メモリコントローラ２９０は、リフレッシュされるバンクに関連する第１条件（条件６１８又は条件６２２）を検出したことに応じて、ＲＥＦ１状態６０４と、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８と、の間で切り替えを行う。メモリコントローラ２９０は、第２条件（条件６２４又は条件６２０）を検出したことに応じて、ＲＥＦ２状態６０６又はＲＥＦ４状態６０８からＲＥＦ１状態６０４への切り替えを行う。
【００４０】
概して、リフレッシュロジック５３２は、リフレッシュ間隔パラメータｔＲＥＦＩによって示された期間内に各メモリバンクをリフレッシュするのに十分なレートでリフレッシュコマンドを発行する。各ｔＲＥＦＩ期間の間に発行されたリフレッシュコマンドの数は、現在のリフレッシュ状態で発行されたリフレッシュコマンドのタイプに依存する。リフレッシュロジック５３２は、バンクがＲＥＦ１状態６０４にある場合に、各ｔＲＥＦＩ期間の間に１つのＲＥＦ１コマンドをバンクに提供し、バンクがＲＥＦ２状態６０６にある場合に、各ｔＲＥＦＩ期間の間に２つのＲＥＦ２コマンドをバンクに提供し、又は、バンクがＲＥＦ４状態６０８にある場合に、各ｔＲＥＦＩ期間の間に４つのＲＥＦ４コマンドをバンクに提供する。
【００４１】
リフレッシュロジック５３２は、対応するメモリが低電力状態にある場合、自動リフレッシュ状態６０２にある。メモリコントローラ５００がメモリを低電力状態から出させると、リフレッシュロジック５３２は、自動リフレッシュ状態６０２から、ＲＥＦ１状態６０４、ＲＥＦ２状態６０６及びＲＥＦ４状態６０８のうち選択された１つの状態に遷移する。メモリコントローラ２９０は、特定の条件が満たされるまで、ＲＥＦ１状態６０４、ＲＥＦ２状態６０６及びＲＥＦ４状態６０８毎に示された状態遷移６１２，６１４，６１６として、現在の状態に留まる。
【００４２】
リフレッシュ状態間を切り替えるためのいくつかの条件は、単独で又は様々な組み合わせで使用することができる。図示された実施形態では、これらの条件は、バンクに対する保留中のリフレッシュの数、図５のコマンドキュー５２０におけるバンクに対する保留中のメモリアクセス要求の数、バンクに対する保留中のメモリアクセス要求の優先度及び／又はタイプ（読み出し若しくは書き込み）、保留中のリフレッシュの数が所定の閾値を上回っている場合に、所定のバンクに対する保留中のリフレッシュ条件が存在するか否かを含む。更に、図６は、所定のランクのメモリ内の単一のバンクのリフレッシュ状態機械を示しているが、リフレッシュ状態機械は、所定のランクの全てのバンク及び複数のランクにおいて対応するバンク等のように、様々な方法でメモリシステムのより大きなサブセットに拡張してもよい。
【００４３】
１つの簡単な例を挙げると、リフレッシュロジック５３２は、バンクに対する保留中のメモリアクセス要求の数が閾値を超えている場合、ＲＥＦ１状態６０４とＲＥＦ２状態６０６との間で切り替えることができる。この条件は、より低いレイテンシ及びより細かい粒度のリフレッシュが好ましいことを示している。一方、リフレッシュロジック５３２がＲＥＦ２状態６０６にあるが、偶数のＲＥＦ２コマンドが発行され、バンクに対する保留中のメモリアクセス要求が存在しないと判別した場合、効率を維持するために、ＲＥＦ２状態６０６からＲＥＦ１状態６０４に戻る。リフレッシュロジック５３２がＲＥＦ２状態６０６又はＲＥＦ４状態６０８から状態遷移する前提条件は、発行されたリフレッシュの数が、一度にリフレッシュされているバンクの部分に対応することである。したがって、リフレッシュロジック５３２は、図５に示すように、これらの条件を追跡するためにアービタ５３８に接続されている。
【００４４】
図７は、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。図７のメモリリフレッシュ状態は、リフレッシュ１（ＲＥＦ１）状態７００と、リフレッシュ２（ＲＥＦ２）状態７１０と、リフレッシュ４（ＲＥＦ４）状態７２０と、を含む。ＲＥＦ１状態７００は、リフレッシュが開始する前のバンク７０２と、ＲＥＦ１コマンド中のＲＥＦ１_１バンク７０４と、リフレッシュされたバンク７０６と、を含む。ＲＥＦ２状態７１０は、リフレッシュが開始する前のバンク７０２と、第１ＲＥＦ２コマンド中のＲＥＦ２_１バンク７１４と、第２ＲＥＦ２コマンド中のＲＥＦ２_２バンク７１６と、リフレッシュされたバンク７０６と、を含む。ＲＥＦ４状態７２０は、リフレッシュ状態の前のバンク７０２と、第１ＲＥＦ４コマンド中のＲＥＦ４_１バンク７２４と、第２ＲＥＦ４コマンド中のＲＥＦ４_２バンク７２６と、第３ＲＥＦ４コマンド中のＲＥＦ４_３バンク７２８と、第４ＲＥＦ４コマンド中のＲＥＦ４_４バンク７３０と、リフレッシュされたバンク７０６と、を含む。
【００４５】
ＲＥＦ１状態７００は、１つ以上のバンク７０２をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１コマンド）の使用に対応する。ＲＥＦ１コマンドが実行されると、ＲＥＦ１バンク７０４がリフレッシュされ、リフレッシュされたバンク７０６が得られる。
【００４６】
ＲＥＦ２状態７１０は、ＲＥＦ２_１バンク７１４及びＲＥＦ２_２バンク７１６で示されるように、リフレッシュ間隔（ｔＲＥＦＩ）として知られる期間内にバンク７０２の第１サブセット及び第２サブセットをメモリに自動リフレッシュさせる第２自動リフレッシュコマンド（ＲＥＦ２コマンド）の使用に対応する。ＲＥＦ２_１バンク７１４及びＲＥＦ２_２バンク７１６の各々は、バンク７０２の別々の半分のサブセットである。
【００４７】
また、ＲＥＦ４状態７２０は、ｔＲＥＦＩ期間内にバンク７０２の第１サブセット、第２サブセット、第３サブセット及び第４サブセットをメモリに自動リフレッシュさせる第３自動リフレッシュコマンド（ＲＥＦ４コマンド）の使用に対応する。ＲＥＦ４_１バンク７２４、ＲＥＦ４_２バンク７２６、ＲＥＦ４_３バンク７２８及びＲＥＦ４_４バンク７３０は、バンク７０２のリフレッシュされた第１サブセット、第２サブセット、第３サブセット及び第４サブセットに対応する。ＲＥＦ４_１バンク７２４、ＲＥＦ４_２バンク７２６、ＲＥＦ４_３バンク７２８及びＲＥＦ４_４バンク７３０の各々は、ＲＥＦ４状態７２０内のバンク７０２の別々の４分の１のサブセットである。
【００４８】
リフレッシュの数は、状態変化が発生する前のサブセットの総数に対応している必要がある。一実施形態では、バンク７０２等のバンク全体をメモリに自動リフレッシュさせる第１自動リフレッシュコマンド（ＲＥＦ１）が受信される。第１条件を検出したことに応じて、ＲＥＦ１  ７００からＲＥＦ２  ７１０又はＲＥＦ４  ７２０への切り替えが行われる。ＲＥＦ２コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に２の倍数になるはずである。ＲＥＦ４コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に４の倍数になるはずである。
【００４９】
これらの異なるリフレッシュモードをＲＥＦＩモードよりも細かい粒度で提供し、メモリコントローラ５００によって既に追跡されている保留中のメモリアクセス要求の特性を用いて、オンザフライで状態変化の決定を行うことにより、メモリコントローラ５００は、システムバスの使用率が高い期間内に入ってくるメモリアクセス要求のレイテンシを低減することができ、システムバスの使用率が低い期間内にメモリバンクをより効率的にリフレッシュすることができる。
【００５０】
図８は、図５のメモリコントローラ５００によって使用される方法８００のフローチャートである。ブロック８０２において、第１状態において第１自動リフレッシュコマンドが生成される。ブロック８０４において、第２状態において第２自動リフレッシュコマンドが生成される。ブロック８０６において、第１条件が検出される。ブロック８０８において、第１状態と第２状態との間での切り替えが行われる。ブロック８１０において、第２条件が検出される。ブロック８１０において、第２条件が検出されたことに応じて、ブロック８１２において、第２状態と第１状態との間での切り替えが行われる。終了ブロックにおいて処理が終了する。
【００５１】
図８に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも１つのプロセッサによって実行される命令によって管理されてもよい。図８に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５２】
特定の実施形態について説明したが、これらの実施形態の様々な変更が当業者には明らかであろう。メモリコントローラ５００は、例えば、高帯域幅メモリ（ＨＢＭ）及びＲＡＭｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）等のＤＤＲｘメモリ以外の他のタイプのメモリにインタフェースすることができる。示された実施形態では、別々のＤＩＭＭに対応する各メモリのランクを示したが、他の実施形態では、各ＤＩＭＭは、複数のランクをサポートすることができる。更に、メモリチャネルは、ＤＤＲ４メモリの複数のランクを含んでもよい。
【００５３】
１つの形態では、データ処理システム（１００）は、メモリチャネル（１３０）と、データプロセッサ（１１０）と、を備える。１つの態様によれば、データプロセッサ（１１０）は、バンク（７０２）に対する保留中のリフレッシュの数、バンク（７０２）へに対する保留中の要求の数、バンク（７０２）に対する保留中の要求の優先度、及び、バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、第１条件（６１８／６２２）を検出する。この態様によれば、データプロセッサ（１１０）は、第１状態（６０４）と第２状態（６０６／６０８）との間での切り替えの開始を決定するために、バンク（７０２）に対する保留中のリフレッシュの数を追跡してもよい。
【００５４】
別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）のバンク（７０２）の選択されたサブセットをリフレッシュする。
【００５５】
さらに別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の複数のバンクの選択されたサブセットをリフレッシュする。
【００５６】
さらに別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの選択されたサブセットをリフレッシュする。
【００５７】
さらなる態様によれば、メモリチャネル（１３０）は、ダブルレート（ＤＤＲ）バージョン４（ＤＤＲ４）メモリの複数のランク（１３４／１３６／１３８）を含む。
【００５８】
別の態様では、データプロセッサ（１１０／２００）は、メモリアクセスエージェント（２１０／２２０）と、メモリコントローラ（２９２／５００）と、を備える。１つの態様によれば、メモリコントローラ（２９２／５００）は、バンク（７０２）に対する保留中のリフレッシュの数、バンク（７０２）に対する保留中の要求の数、バンク（７０２）に対する保留中の要求の優先度、及び、バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、第１条件（６１８／６２２）を検出する。この態様によれば、メモリコントローラ（２９２／５００）は、第１状態（６０４）と第２状態（６０６／６０８）との間での切り替えの開始を決定するために、バンク（７０２）に対する保留中のリフレッシュの数を追跡する。
【００５９】
別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）のバンク（７０２）の選択されたサブセットをリフレッシュする。
【００６０】
さらに別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、１つのランク（１３４）の複数のバンクの選択されたサブセットをリフレッシュする。
【００６１】
さらに別の態様によれば、第２自動リフレッシュコマンド（７１０／７２０）は、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの選択されたサブセットをリフレッシュする。
【００６２】
さらなる別の形態では、メモリコントローラ（２９２／５００）を介してメモリシステム（１２０）のリフレッシュを管理する方法（８００）は、メモリコントローラ（２９２／５００）が第１状態（６０４／８０２）にある場合に第１自動リフレッシュコマンド（７００）を生成することであって、第１自動リフレッシュコマンド（７００）は、メモリにバンク（７０２）を自動リフレッシュさせる、ことと、メモリコントローラ（２９２／５００）が第２状態（６０６／６０８／８０２）にある場合に第２自動リフレッシュコマンド（７１０／７１２）を生成することであって、第２自動リフレッシュコマンド（７１０／７１２）は、メモリにバンク（７０２）の選択されたサブセットを自動リフレッシュさせる、ことと、バンク（７０２）に関連する第１条件（６１２／６１８／８０６／８０８）をメモリコントローラ（２９２／５００）が検出したことに応じて、第１状態と第２状態との間で切り替えを行うことと、第２条件（６２０／６２４／８１０／８１２）をメモリコントローラ（２９２／５００）が検出したことに応じて、第２状態と第１状態との間で切り替えを行うことと、を含む。１つの態様によれば、第２自動リフレッシュコマンドを生成することは、第２自動リフレッシュコマンドがリフレッシュ２（ＲＥＦ２）コマンドである場合に、リフレッシュ期間内にバンク（７０２）の第１サブセット（７２４）、第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７３０）をリフレッシュすることを含み、バンクの第１サブセット（７２４）、第２サブセット（７２６）、第３サブセット（７２８）及び第４サブセット（７２４）は、バンク（７０２）の別々の４分の１のサブセットである。
【００６３】
別の態様によれば、方法は、バンク（７０２）に対する保留中のリフレッシュの数、バンク（７０２）に対する保留中の要求の数、バンク（７０２）に対する保留中の要求の優先度、及び、バンク（７０２）に対する保留中の要求のタイプのうち１つ以上に応じて、第１条件を検出することをさらに含む。
【００６４】
さらなる別の態様によれば、方法は、第２自動リフレッシュコマンドを生成したことに応じて、１つのランク（１３４）のバンク（７０２）の選択されたサブセットをリフレッシュすることをさらに含む。
【００６５】
さらなる別の態様によれば、方法は、第２自動リフレッシュコマンドを生成したことに応じて、１つのランク（１３４）の複数のバンクの選択されたサブセットをリフレッシュすることをさらに含む。
【００６６】
さらなる態様によれば、方法は、第２自動リフレッシュコマンドを前記生成したことに応じて、複数のランク（１３４／１３６／１３８）の各々の対応するバンクの選択されたサブセットをリフレッシュすることをさらに含む。
【００６７】
さらなる別の形態では、メモリコントローラ（５００）は、コマンドキュー（５２０）と、アービタ（５３８）と、リフレッシュロジック回路（５３２）と、を備える。１つの態様によれば、リフレッシュロジック回路（５３２）は、バンクに対する保留中のリフレッシュの数、バンクに対する保留中の要求の数、メモリバンクに対する保留中の要求の優先度、及び、バンクに対する保留中の要求のタイプのうち１つ以上に応じて、第１状態（６０４）と第２状態（６０６）との間を遷移する。
【００６８】
別の態様によれば、リフレッシュロジック回路（５３２）は、メモリバンクに対する保留中のメモリアクセス要求の数が所定の閾値を上回っていることに応じて、第１状態（６０４）と第２状態（６０６）との間を遷移する。
【００６９】
さらなる別の態様によれば、リフレッシュロジック回路（５３２）は、一度にリフレッシュされるメモリバンクの一部に対応するいくつかの自動リフレッシュコマンドを発行した後にのみ、第２状態（６０６）と第１状態（６０４）との間を遷移する。
【００７０】
さらなる別の態様によれば、リフレッシュロジック回路（５３２）は、コマンドキュー（５２０）がメモリバンクへのメモリアクセス要求を記憶していない場合に、第２状態（６０６）と第１状態（６０４）との間を遷移する。
【００７１】
さらなる態様によれば、リフレッシュロジック回路（５３２）は、オンザフライリフレッシュモードにおいて、メモリシステム（１２０）への自動リフレッシュコマンドを、メモリシステム（１２０）の所定のランクにおける全てのバンクについて自動選択した粒度を用いて生成する。
【００７２】
さらなる態様によれば、リフレッシュロジック回路（５３２）は、オンザフライリフレッシュモードにおいて、メモリシステム（１２０）への自動リフレッシュコマンドを、メモリシステム（１２０）の複数のランクにおいて対応するバンクについて自動選択した粒度を用いて生成する。
【００７３】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【国際調査報告】
2019519836.tif 000011
2019519836.tif 000012