(57)【要約】メモリコントローラは、アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェースと、メモリアクセスをメモリシステムに提供するメモリインタフェースと、アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングするために、ホストインタフェースに接続されたアドレスデコーダと、を含む。アドレスデコーダは、それぞれ２のべき乗のサイズを有する一次デコーダ及び二次デコーダを使用して、アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能であり、これに応じて第１領域マッピング信号を提供する。コマンドキューは、メモリアクセス要求及び領域マッピング信号を記憶する。アービタは、領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、コマンドキューからメモリアクセス要求を選択し、これに応じて、対応するメモリアクセスをメモリインタフェースに提供する。【選択図】図５
2019520660.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラ（５００）を有するデバイス（１００，２００）であって、
メモリコントローラ（５００）は、
アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェース（５１２）と、
メモリアクセスをメモリシステム（１２０）に提供するメモリインタフェース（５１４）と、
ハッシュ関数を使用して、前記アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングするために、前記ホストインタフェース（５１２）に接続されたアドレスデコーダ（５２２，６１０，１１１０）であって、複数のプログラム可能なビットに応じて、前記アクセスアドレスの対応する複数のビットのうち何れのビットが前記ハッシュ関数で使用されるかを決定し、第１の２のべき乗のサイズを有する一次デコーダ（７２０）と、第２の２のべき乗のサイズを有する二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能である、アドレスデコーダ（５２２，６１０，１１１０）と、
前記メモリアクセス要求及び領域マッピング信号を記憶するために前記アドレスデコーダ（５２２，６１０，１１１０）に接続されたコマンドキュー（５２０）と、
前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、前記コマンドキュー（５２０）から前記メモリアクセス要求を選択し、これに応じて、対応するメモリアクセスを前記メモリインタフェース（５１４）に提供するするアービタ（５３８）と、を備える、
デバイス（１００，２００）。
【請求項２】
前記アドレスデコーダ（１１１０）は、
前記ホストインタフェースに接続された入力と、ハッシュされたアドレスを有するアクセス要求を提供するための出力と、を有するハッシュ回路（１１２０）と、
前記ハッシュされたアドレスと、前記領域マッピング信号を提供するための出力と、に応答する非２のべき乗デコーダ回路（１１３０）と、を備える、
請求項１のデバイス（１００，２００）。
【請求項３】
前記ハッシュ回路（１１２０）は、
前記アクセスアドレスと、少なくとも１つのプログラム可能なチップ選択ハッシュビットとに応じて、１つのハッシュされたチップ選択信号を各アクセス要求に関連付けるために前記アクセスアドレスのプログラム可能部分をハッシュするチップ選択ハッシュ回路（１０１２）と、
前記アクセスアドレスと、前記ハッシュされたチップ選択信号と、少なくとも１つのプログラム可能なバンクアドレスハッシュビットとに応じて、選択されたハッシュチップ選択に対応するチップ内の１つのバンクに各アクセス要求を関連付けるために前記アクセスアドレスのプログラム可能部分をハッシュするバンクアドレスハッシュ回路（１０１４）と、を備える、
請求項２のデバイス（１００，２００）。
【請求項４】
前記非２のべき乗デコーダ回路（１１３０）は、複数の領域デコーダを備え、
領域デコーダ（７１０）毎に、
前記一次デコーダ（７２０）は、前記アクセスアドレスを受信し、一次領域選択信号を提供し、第１ベースアドレス及び第１の２のべき乗のサイズを有し、
前記二次デコーダ（７３０）は、前記アクセスアドレスを受信し、二次領域選択信号を提供し、第２ベースアドレス及び第２の２のべき乗のサイズを有し、
前記領域デコーダ（７１０）は、前記一次領域選択信号及び前記二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートするための論理回路（７４０）をさらに備える、
請求項２のデバイス（１００，２００）。
【請求項５】
前記第１領域は、２Ｎ＋２（Ｎ−１）（Ｎは整数）のサイズを有し、
前記一次デコーダ（７２０）は、サイズ２Ｎのサブ領域をデコードし、
前記二次デコーダ（７３０）は、サイズ２（Ｎ−１）の領域をデコードする、
請求項４のデバイス（１００，２００）。
【請求項６】
前記領域マッピング信号は、前記メモリシステム（１２０）のチップ選択信号に対応する、
請求項４のデバイス（１００，２００）。
【請求項７】
前記非２のべき乗デコーダ回路（１１３０）は、前記アクセスアドレスをデコードして、行アドレス、列アドレス、バンクアドレス及びバンクグループを提供する、
請求項６のデバイス（１００，２００）。
【請求項８】
前記デバイス（１００，２００）は、データ処理システム（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）と、
前記メモリアクセスに応答するメモリシステム（１２０）であって、少なくとも１つの非２のべき乗領域を含む複数の領域を有するメモリシステム（１２０）と、をさらに備える、
請求項１のデバイス（１００，２００）。
【請求項９】
前記デバイス（２００）は、単一の集積回路チップ上に形成されたマイクロプロセッサ（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）をさらに備える、
請求項１のデバイス（１００，２００）。
【請求項１０】
メモリコントローラ（５００）を有するデバイス（１００，２００）であって、
メモリコントローラ（５００）は、
アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェース（５１２）と、
メモリアクセスをメモリシステム（１２０）に提供するメモリインタフェース（５１４）と、
前記アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングするために、前記ホストインタフェース（５１２）に接続されたアドレスデコーダ（５２２，６１０）であって、第１の２のべき乗のサイズを有する一次デコーダ（７２０）と、第２の２のべき乗のサイズを有する二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能であり、これに応じて第１領域マッピング信号を提供する、アドレスデコーダ（５２２，６１０）と、
前記メモリアクセス要求及び領域マッピング信号を記憶するために前記アドレスデコーダ（５２２，６１０）に接続されたコマンドキュー（５２０）と、
前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、前記コマンドキュー（５２０）から前記メモリアクセス要求を選択し、これに応じて、対応するメモリアクセスを前記メモリインタフェース（５１４）に提供するアービタ（５３８）と、を備える、
デバイス（１００，２００）。
【請求項１１】
前記領域マッピング信号は、前記メモリシステム（１２０）のチップ選択信号に対応する、
請求項１０のデバイス（１００，２００）。
【請求項１２】
前記アドレスデコーダ（５２２／６１０）は、複数の領域デコーダを備え、
領域デコーダ（７１０）毎に、
前記一次デコーダ（７２０）は、前記アクセスアドレスを受信し、一次領域選択信号を提供し、第１ベースアドレス及び第１の２のべき乗のサイズを有し、
前記二次デコーダ（７３０）は、前記アクセスアドレスを受信し、二次領域選択信号を提供し、第２ベースアドレス及び第２の２のべき乗のサイズを有し、
前記領域デコーダ（７１０）は、前記一次領域選択信号及び前記二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートするための論理回路（７４０）をさらに備える、
請求項１０のデバイス（１００，２００）。
【請求項１３】
前記第１領域は、２Ｎ＋２（Ｎ−１）（Ｎは整数）のサイズを有し、
前記一次デコーダ（７２０）は、サイズ２Ｎのサブ領域をデコードし、
前記二次デコーダ（７３０）は、サイズ２（Ｎ−１）の領域をデコードする、
請求項１２のデバイス（１００，２００）。
【請求項１４】
前記アドレスデコーダ（５２２，７００）は、前記アクセスアドレスをデコードして、行アドレス、列アドレス、バンクアドレス及びバンクグループを提供する、
請求項１２のデバイス（１００，２００）。
【請求項１５】
各領域デコーダ（７１０）は、
前記一次デコーダ（７２０）に関連する第１構成レジスタのセット（７５０）と、
前記二次デコーダ（７３０）に関連する第２構成レジスタのセット（７６０）と、をさらに備える、
請求項１２のデバイス（１００，２００）。
【請求項１６】
第３の２のべき乗のサイズを有する第１の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第１領域（９２０）に選択的にマッピングし、これに応じて前記第１領域マッピング信号を提供する第１領域デコーダ（７１０，ＣＳ０）と、
前記第３の２のべき乗のサイズを有する第２の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第２の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第２領域（９３０）に選択的にマッピングし、これに応じて第２領域マッピング信号を提供する第２領域デコーダ（７１０，ＣＳ１）と、をさらに備え、
前記メモリコントローラ（５００）は、前記第１の一次デコーダ（７２０）と、前記第２の一次デコーダ（７２０）と、前記第１の二次デコーダ（７３０）と、前記第２の二次デコーダ（７３０）と、の各々の間で、前記アクセスアドレスに対応するメモリ空間をインターリーブする、
請求項１０のデバイス（１００，２００）。
【請求項１７】
前記デバイス（１００，２００）は、データ処理システム（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）と、
前記メモリアクセスに応答するメモリシステム（１２０）であって、少なくとも１つの非２のべき乗領域を含む複数の領域を有するメモリシステム（１２０）と、をさらに備える、
請求項１０のデバイス（１００，２００）。
【請求項１８】
前記デバイス（２００）は、単一の集積回路チップ上に形成されたマイクロプロセッサ（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）をさらに備える、
請求項１０のデバイス（１００，２００）。
【請求項１９】
メモリコントローラ（５００）を有するデバイス（１００，２００）であって、
メモリコントローラ（５００）は、
アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェース（５１２）と、
ハッシュされたアドレスを含むメモリアクセスをメモリシステム（１２０）に提供するメモリインタフェース（５１４）と、
ハッシュ関数を使用して、前記アクセスアドレスを、前記メモリシステム（１２０）の複数の領域のうち選択された領域にプログラム可能にマッピングするために、前記ホストインタフェース（５１２）に接続されたアドレスデコーダ（５２２，１０１０）であって、複数のプログラム可能なビットに応じて、前記アクセスアドレスの対応する複数のビットのうち何れのビットが前記ハッシュ関数で使用されるかを決定するアドレスデコーダ（５２２，１０１０）と、
前記ハッシュされたアドレスを含むメモリアクセス要求を記憶するために前記アドレスデコーダ（５２２，１０１０）に接続されたコマンドキュー（５２０）と、
複数の基準に基づいて前記コマンドキュー（５２０）から前記メモリアクセス要求を選択し、これに応じて、前記ハッシュされたアドレスを含む対応するメモリアクセスを前記メモリインタフェース（５１４）に提供するアービタ（５３８）と、を備える、
デバイス（１００，２００）。
【請求項２０】
前記アドレスデコーダ（５２２，１０１０）は、
前記アクセスアドレスと、少なくとも１つのプログラム可能なチップ選択ハッシュビットとに応じて、１つのハッシュされたチップ選択信号を各アクセス要求に関連付けるために前記アクセスアドレスのプログラム可能部分をハッシュするチップ選択ハッシュ回路（１０１２）と、
前記アクセスアドレスと、前記ハッシュされたチップ選択信号と、少なくとも１つのプログラム可能なバンクアドレスハッシュビットとに応じて、選択されたハッシュチップ選択に対応するチップ内の１つのバンクに各アクセス要求を関連付けるために前記アクセスアドレスのプログラム可能部分をハッシュするバンクアドレスハッシュ回路（１０１４）と、を備える、
請求項１９のデバイス（１００，２００）。
【請求項２１】
符号化されたチップ選択信号のビットにそれぞれ対応し、前記アクセスアドレスのビットにそれぞれ対応する複数のビットを記憶し、対応するビットが前記ハッシュ関数の一部を形成するか否かを定義する複数のチップ選択構成レジスタ（１０２０）をさらに備える、
請求項２０のデバイス（１００，２００）。
【請求項２２】
前記チップ選択ハッシュ回路（１０１２）は、前記符号化されたチップ選択信号のビット毎に、前記複数のチップ選択構成レジスタ（１０２０）のうち対応するレジスタ内のビットによって指示された前記アクセスアドレスの複数のビットの各々との間で排他的ＯＲ演算を実行する、
請求項２１のデバイス（１００，２００）。
【請求項２３】
符号化されたバンクアドレス信号のビットにそれぞれ対応し、前記アクセスアドレスのビットにそれぞれ対応する複数のビットを記憶し、前記アクセスアドレスの対応するビットが前記ハッシュ関数で使用されるか否かを定義する複数のバンクアドレス構成レジスタ（１０３０）をさらに備える、
請求項２０のデバイス（１００，２００）。
【請求項２４】
前記バンクアドレスハッシュ回路（１０１４）は、前記符号化されたバンク信号のビット毎に、前記複数のバンクアドレス構成レジスタ（１０３０）のうち対応するレジスタ内のビットによって指示された前記アクセスアドレスの複数のビットの各々との間で排他的ＯＲ演算を実行する、
請求項２３のデバイス（１００，２００）。
【請求項２５】
前記デバイス（１００，２００）は、データ処理システム（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）と、
前記メモリアクセスに応答するメモリシステム（１２０）であって、少なくとも１つの非２のべき乗領域を含む複数の領域を有するメモリシステム（１２０）と、をさらに備える、
請求項１９のデバイス（１００，２００）。
【請求項２６】
前記デバイス（２００）は、単一の集積回路チップ上に形成されたマイクロプロセッサ（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）をさらに備える、
請求項１９のデバイス（１００，２００）。
【請求項２７】
アクセスアドレスを含むメモリアクセス要求を受信することと、
前記アクセスアドレスをデコードし、これに応じて、対応する領域マッピング信号を提供することであって、前記デコードすることは、第１の２のべき乗のサイズを有する第１の一次デコーダ（７２０）と、第２の２のべき乗のサイズを有する第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、非２のべき乗のサイズを有する第１領域に選択的にマッピングすることを含む、ことと、
前記アクセスアドレスを前記第１領域にマッピングすることに応じて、第１領域マッピング信号を提供することと、
前記メモリアクセス要求及び領域マッピング信号を記憶することと、
記憶された前記メモリアクセス要求を、前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて選択することと、
選択されたメモリアクセス要求に応じて、対応するメモリアクセスを提供することと、を含む、
方法。
【請求項２８】
前記選択されたメモリアクセス要求の前記領域マッピング信号に応じて、複数のチップ選択信号のうち選択されたチップ選択信号をアクティベートすることをさらに含む、
請求項２７の方法。
【請求項２９】
前記デコードすることは、
第１アクセスアドレスが、第１ベースアドレス及び前記第１の２のべき乗のサイズによって定義された第１サブ領域内に存在する場合に、前記第１アクセスアドレスをデコードして一次領域選択信号を提供することと、
前記第１アクセスアドレスが、第２ベースアドレス及び前記第２の２のべき乗のサイズによって定義された第２サブ領域内に存在する場合に、前記第１アクセスアドレスをデコードして二次領域選択信号を提供することと、
前記一次領域選択信号及び前記二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートすることと、を含む、
請求項２７の方法。
【請求項３０】
前記第１アクセスアドレスをデコードして一次領域選択信号を提供すること、及び、前記第１アクセスアドレスをデコードして二次領域選択信号を提供すること、の各々は、
前記第１アクセスアドレスをデコードして行アドレス、列アドレス、バンクアドレス及びバンクグループを提供することを含む、
請求項２９の方法。
【請求項３１】
第３の２のべき乗のサイズを有する前記第１の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する前記第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する前記第１領域（９２０）に選択的にマッピングし、これに応じて第１領域マッピング信号を提供することと、
前記第３の２のべき乗のサイズを有する第２の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第２の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第２領域（９３０）に選択的にマッピングし、これに応じて第２領域マッピング信号を提供することと、をさらに含み、
前記アクセスアドレスを前記第１領域（９２０）に選択的にマッピングすること、及び、前記アクセスアドレスを前記第２領域（９３０）に選択的にマッピングすること、の各々は、前記第１の一次デコーダ（７２０）と、前記第２の一次デコーダ（７２０）と、前記第１の二次デコーダ（７３０）と、前記第２の二次デコーダ（７３０）と、の間で、前記アクセスアドレスに対応するメモリ空間（９１０）をインターリーブすることを含む、
請求項２７の方法。
【請求項３２】
前記デコードすることは、
複数のプログラム可能なビットに応じて、前記アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定し、前記ハッシュ関数を使用して前記アクセスアドレスを選択的にハッシュすることをさらに含む、
請求項２７の方法。
【請求項３３】
アクセスアドレスを含むメモリアクセス要求を受信することと、
前記アクセスアドレスをデコードし、これに応じて、対応する領域マッピング信号を提供することであって、前記デコードすることは、複数のプログラム可能なビットに応じて、前記アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定し、ハッシュ関数を使用して前記アクセスアドレスを選択的にハッシュすることを含む、ことと、
前記デコードすることに応じて、前記領域マッピング信号を提供することと、
前記メモリアクセス要求及び前記領域マッピング信号を記憶することと、
記憶された前記メモリアクセス要求を、前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて選択することと、
選択されたメモリアクセス要求に応じて、対応するメモリアクセスを提供することと、を含む、
方法。
【請求項３４】
前記アクセスアドレスと、１つのハッシュされたチップ選択信号を各アクセス要求に関連付けるための少なくとも１つのプログラム可能なビットと、に応じて前記アクセスアドレスのプログラム可能部分をハッシュすることと、
前記アクセスアドレスと、前記ハッシュされたチップ選択信号と、選択されたハッシュチップ選択に対応するチップ内の１つのバンクに各アクセス要求を関連付けるための少なくとも１つのプログラム可能なビットと、に応じて前記アクセスアドレスのプログラム可能部分をハッシュすることと、をさらに含む、
請求項３３の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳細には、可変サイズを有するメモリとインタフェースすることの可能なメモリコントローラを備えるデータ処理システムに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリとして使用する。今日販売されている殆どのＤＲＡＭチップは、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって公表された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＪＥＤＥＣが新たなＤＤＲ規格を公表しているので、ＤＤＲ３やＤＤＲ４等の複数の世代のＤＤＲ  ＤＲＡＭが普及しているかなりの期間が存在する。また、ＪＥＤＥＣは、グラフィックスＤＤＲ（ｇＤＤＲ）メモリと呼ばれる最新のグラフィックスプロセッサのニーズに合わせて特別に設計された他のクラスのＤＲＡＭを規格化しており、１つの世代であるｇＤＤＲ５が今日も普及している。したがって、メモリコントローラが、これらのメモリタイプに加えて、潜在的には他の新たなメモリタイプにも柔軟にインタフェースできることが重要である。
【０００３】
メモリコントローラの柔軟性は、これを使用する様々なタイプの製品のニーズを満たすために、メモリシステムにとっても重要である。例えば、メモリは、通常、レイアウト及びデコードを単純化するために２のべき乗の密度で設計されている。現代の集積回路リソグラフィ技術が進化するにつれて、メモリチップの密度は、歴史的に指数関数的に増加してきた。このように、４、８、１６ギガビット（Ｇｂ）密度のＤＤＲ  ＤＲＡＭが一般に入手可能になる現在まで、ＤＲＡＭのサイズは、１９８０年代半ばに利用可能であった６４キロビット（６４Ｋｂ）から１２８Ｋｂ、２５６Ｋｂまで等に歴史的に進化してきた。この傾向が継続しない可能性のある理由が２つある。第１に、半導体リソグラフィ技術が物理的限界に近づきつつある。したがって、メモリ製造業者は、２のべき乗ではない中間サイズを提供する可能性がある。第２に、設計者は、最も近い２のべき乗のサイズに近くない密度を有するメモリを必要とする場合があり、次の高い密度に伴う余分な製品コストを望まない場合がある。したがって、メモリ製造業者は、これらの現実をより良く満たすために、２のべき乗でないメモリサイズを設計し始めている。２のべき乗でないメモリへのインタフェースは、余分なコストをかけずに全ての可能な構成を満たす回路を設計するために、メモリコントローラ製造業者に対して追加の負担をかけることになる。
【０００４】
メモリコントローラが、ページ競合を引き起こすことなく、インターリーブ方式で異なるバンクにアクセスすることができれば、メモリシステムは、より効率的に動作する。メモリコントローラは、異なるバンクへのアクセスをインターリーブすることによって、同じバンクの異なる行への一連のアクセスに必要となるオーバーヘッドを部分的に隠すことができる。既知のメモリコントローラは、同じランク及びバンクへの連続的なアクセスが複数のバンクに亘って拡散されるように、入力アドレスをスクランブル又は「スウィズル（swizzle）」する回路を使用する。例えば、メモリコントローラは、特定のアドレスビットを使用してバンクアドレスをスクランブルすることによって、アドレス空間の比較的小さい領域におけるメモリアクセスが異なるバンクにマッピングされる。このメモリコントローラによって実施されるバンクスクランブルアルゴリズムは、システムのタイプ、アプリケーションプログラム及びオペレーティングシステムによって生成されるアクセスの特性等に応じて、所望のインターリーブレベルを有するアクセスパターンを一部のシステムに提供するが、他のシステムには提供しない。
【図面の簡単な説明】
【０００５】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアドバンストプロセッシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、図５のメモリコントローラの一部を実装するのに使用可能なメモリコントローラのブロック図である。
【図７】いくつかの実施形態による、図６の非２のべき乗（non-power-of-two）デコーダとして使用可能なアドレスデコーダの簡略化ブロック図である。
【図８】２つの領域デコーダを使用して非２のべき乗アドレス空間用にプログラムされている場合に図７のアドレスデコーダによって実行されたアドレスマッピングを示す図である。
【図９】いくつかの実施形態による、チップ選択インターリーブを実施するようにプログラムされている場合に図７のアドレスデコーダによって実行されたアドレスマッピングを示す図である。
【図１０】いくつかの実施形態による、図５のアドレスデコーダを実装するのに使用可能なアドレスデコーダのブロック図である。
【図１１】いくつかの実施形態による、図５のアドレスデコーダを実装するのに使用可能な他のアドレスデコーダのブロック図である。
【発明を実施するための形態】
【０００６】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【０００７】
以下に一形態で説明するように、メモリコントローラは、アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェースと、メモリアクセスをメモリシステムに提供するメモリインタフェースと、アドレスデコーダと、コマンドキューと、アービタと、を含む。アドレスデコーダは、ホストインタフェースに接続されており、ハッシュ関数を使用して、アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングする。アドレスデコーダは、複数のプログラム可能なビットに応じて、アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定し、第１の２のべき乗のサイズを有する一次デコーダと、第２の２のべき乗のサイズを有する二次デコーダとを使用して、アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能である。コマンドキューは、アドレスデコーダに接続されており、メモリアクセス要求及び領域マッピング信号を記憶する。アービタは、領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、コマンドキューからメモリアクセス要求を選択し、これに応じて、対応するメモリアクセスをメモリインタフェースに提供する。
【０００８】
例えば、アドレスデコーダは、領域がメモリシステムのチップ選択信号に対応する、複数の領域デコーダを含むことができる。各領域デコーダは、一次デコーダ及び二次デコーダの両方を含むことができる。一次デコーダは、アクセスアドレスを受信して、一次領域選択信号を提供するためのものであり、第１ベースアドレス及び第１の２のべき乗のサイズを有する。二次デコーダは、アクセスアドレスを受信して、二次領域選択信号を提供するためのものであり、第２ベースアドレス及び第２の２のべき乗のサイズを有する。領域デコーダは、一次領域選択信号及び二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートするための論理回路をさらに含む。例えば、領域は２Ｎ＋２（Ｎ−１）のサイズを有することができ、一次デコーダは２Ｎの領域サイズをデコードし、二次デコーダは２（Ｎ−１）の領域サイズをデコードする。このようにして、領域は、２つのコンパクトな２のべき乗のデコーダで実装される、例えば６ギガバイト（６ＧＢ）のサイズを有することができる。
【０００９】
他の例では、メモリコントローラは、第１領域デコーダと、第２領域デコーダと、をさらに含む。第１領域デコーダは、第３の２のべき乗のサイズを有する第１の一次デコーダと、第３の２のべき乗のサイズを有する第１の二次デコーダとを使用して、アクセスアドレスを、２のべき乗のサイズを有する第１領域に選択的にマッピングし、これに応じて第１領域マッピング信号を提供する。第２領域デコーダは、第３の２のべき乗のサイズを有する第２の一次デコーダと、第３の２のべき乗のサイズを有する第２の二次デコーダとを使用して、アクセスアドレスを、２のべき乗のサイズを有する第２領域に選択的にマッピングし、これに応じて第２領域マッピング信号を提供する。メモリコントローラは、第１の一次デコーダと、第２の一次デコーダと、第１の二次デコーダと、第２の二次デコーダと、の各々の間で、アクセスアドレスに対応するメモリ空間をインターリーブする。
【００１０】
他の形態では、デバイスは、ホストインタフェースと、メモリインタフェースと、アドレスデコーダと、コマンドキューと、アービタと、を含むメモリコントローラを有する。ホストインタフェースは、アクセスアドレスを含むメモリアクセス要求を受信する。メモリインタフェースは、メモリアクセスをメモリシステムに提供する。アドレスデコーダは、ホストインタフェースに接続されており、アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングする。アドレスデコーダは、第１の２のべき乗のサイズを有する一次デコーダと、第２の２のべき乗のサイズを有する二次デコーダとを使用して、アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能であり、これに応じて第１領域マッピング信号を提供する。コマンドキューは、アドレスデコーダに接続されており、メモリアクセス要求及び領域マッピング信号を記憶する。アービタは、領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、コマンドキューからメモリアクセス要求を選択し、これに応じて、対応するメモリアクセスをメモリインタフェースに提供する。さらに他の形態では、メモリコントローラを有するデバイスは、ホストインタフェースと、メモリインタフェースと、アドレスデコーダと、コマンドキューと、アービタと、を含む。ホストインタフェースは、アクセスアドレスを含むメモリアクセス要求を受信する。メモリインタフェースは、ハッシュされたアドレスを含むメモリアクセスを、メモリシステムに提供する。アドレスデコーダは、ホストインタフェースに接続されており、ハッシュ関数を使用して、アクセスアドレスを、メモリシステムの複数の領域のうち選択された領域にプログラム可能にマッピングする。アドレスデコーダは、複数のプログラム可能なビットに応じて、アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定する。コマンドキューは、アドレスデコーダに接続されており、ハッシュされたアドレスを含むメモリアクセス要求を記憶する。アービタは、複数の基準に基づいてコマンドキューからメモリアクセス要求を選択し、これに応じて、ハッシュされたアドレスを含む対応するメモリアクセスをメモリインタフェースに提供する。
【００１１】
さらに他の形態では、方法は、アクセスアドレスを含むメモリアクセス要求を受信することを含む。アクセスアドレスがデコードされ、これに応じて、対応する領域マッピング信号が提供される。デコードすることは、第１の２のべき乗のサイズを有する第１の一次デコーダと、第２の２のべき乗のサイズを有する第１の二次デコーダとを使用して、アクセスアドレスを、非２のべき乗のサイズを有する第１領域に選択的にマッピングすることを含む。アクセスアドレスを第１領域にマッピングすることに応じて、第１領域マッピング信号が提供される。メモリアクセス要求及び領域マッピング信号が記憶され、記憶されたメモリアクセス要求が、領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて選択される。選択されたメモリアクセス要求に応じて、対応するメモリアクセスが提供される。
【００１２】
さらに他の形態では、方法は、アクセスアドレスを含むメモリアクセス要求を受信することを含む。アクセスアドレスがデコードされ、これに応じて、対応する領域マッピング信号が提供される。デコードすることは、複数のプログラム可能なビットに応じて、アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定し、ハッシュ関数を使用してアクセスアドレスを選択的にハッシュすることを含む。デコードしたことに応じて、領域マッピング信号が提供される。メモリアクセス要求及び領域マッピング信号が記憶され、記憶されたメモリアクセス要求が、領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて選択される。選択されたメモリアクセス要求に応じて、対応するメモリアクセスが提供される。
【００１３】
図１に、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（Peripheral Component Interconnect Express）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理ユニット（ＣＰＵ）として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックス、ＵＳＢネットワークに接続するためのＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースが含まれる。
【００１４】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、この例では別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１５】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、様々な不揮発性メモリタイプ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等）の何れかであってもよい。
【００１６】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１７】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１８】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を設けることによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、最新のＤＤＲメモリ（例えば、ＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等）に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを設けており、組み込み型サーマルモニタリングも設けている。
【００１９】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、中央処理ユニット（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００２０】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この例では、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００２１】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理ユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００２２】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００２３】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを決定するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２４】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２５】
周辺バスコントローラ２７０は、システムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２６】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロックソース（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された消費電力値を受信して、適切な電力状態を判断してもよい。
【００２７】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２８】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、パワーエンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。パワーエンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するためのパワーエンジン３２０を有する。
【００２９】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、パワーエンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。パワーエンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有のパワーエンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００３０】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、パワーコントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、連想メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００３１】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって規格化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００３２】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスをデコードする。メモリアクセス要求は、標準化フォーマット（normalized format）で表現された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、標準化アドレス（normalized address）を、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、標準化アドレスを適切なフォーマットに変換する。コマンドキュー５２０は、たとえばＣＰＵコア２１２及び２１４ならびにグラフィックスコア２２０などのデータ処理システム１００内のメモリアクセスエージェントから受け取ったメモリアクセス要求のキューである。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によってデコードされたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００３３】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているかを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再実行されるのを可能にする。
【００３４】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、リフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【００３５】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、アクティブコマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ規格で規定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３６】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３７】
パワーコントローラ５５０は、ＡＸＩ（Advanced Extensible Interface, version 1）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、パワーエンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。パワーエンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。パワーエンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みタイミングエンジン５６８は、ＤＤＲインタフェース最大読出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３８】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報にデコードし、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのようにデコードするのかを決定するための構成情報を記憶する。アービタ５３８は、デコードされたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティベートコマンドのオーバーヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバーヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインターリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３９】
図６に、いくつかの実施形態による、図５のメモリコントローラ５００の一部を実装するのに使用可能なメモリコントローラ６００のブロック図である。メモリコントローラ６００は、図５のアドレスデコーダ５２２を、非従来型のメモリサイズに適応するために、非２のべき乗のアドレスデコーダ６１０として実装する。例えば、メモリコントローラ６００は、データファブリック２５０から要求を受信し、この要求を、非２のべき乗のメモリサイズ（例えば、６ＧＢ等）のＤＩＭＭにプログラム可能にマッピングすることができる。この動作については、以下により詳細に説明する。
【００４０】
メモリコントローラ６００は、ＳＤＰを使用してデータファブリック２５０からメモリアクセス要求を受信するための入力ポートを有する。各メモリアクセス要求は、「ＣＯＮＴＲＯＬ」と付された制御信号のセットと、「ＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳ」と付された４０ビットのアドレスと、「ＤＡＴＡ」と付された２５６個のデータ信号のセットと、を含む。ＣＯＮＴＲＯＬ信号は、アクセス要求のタグ、要求のサイズ、要求されたサービスの質、アクセスのタイプ（例えば、読出し又は書込み）等を含む。ＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳは、サポートされている全てのアドレスビットを含み、先頭にゼロが暗黙的に付加された４０ビットのアドレスである。ＤＡＴＡ信号は、単一のメモリアクセス要求に関連する十分な数の信号を含む。例えば、ＣＰＵコアは、２５６ビットのキャッシュラインサイズを有する最終レベルのキャッシュ（last level cache）を含む場合がある。したがって、キャッシュラインをメモリにライトバックするには、２５６ビットの転送が必要になる。図３のＰＨＹ３３０等の物理インタフェースは、対応するメモリアクセスを、８〜６４ビット又は７２ビット（６４ビット＋８ビットのエラー訂正コード）のＤＤＲ  ＤＩＭＭのバーストとして実行することができるが、メモリコントローラは、２５６のＤＡＴＡビットの全てを、メモリアクセス要求の一部として受信する。
【００４１】
メモリコントローラ６００は、先に図５に示したように、非２のべき乗のアドレスデコーダ６１０と、書込みデータバッファ５４６と、を含む。アドレスデコーダ６１０は、ＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳを受信するための入力を含み、「ＣＳ［ｎ］」と付されたｎ個のチップ選択信号のセットと、「ＣＨＩＰ＿ＩＤ」と付された３つのチップ識別信号のセットと、「ＲＯＷ＿ＡＤＤＲＥＳＳ」と付されたデコードされた行アドレスと、「ＣＯＬＵＭＮ＿ＡＤＤＲＥＳＳ」と付されたレコードされた列アドレスと、「ＢＧ」と付されたバンクグループ信号と、「ＢＡ」と付されたバンクアドレス信号と、を提供するための出力を含む。メモリコントローラ６００は、アドレスデコーダ６１０のこれらの出力をＣＯＮＴＲＯＬ信号と共にコマンドキュー５２０に提供して、コマンドキュー５２０に記憶させることによって、アービタ５３８が、メモリアクセス要求の効率的な順序付けに関する決定を行うことができる。また、メモリコントローラ６００は、ＣＯＬＵＭＮ＿ＡＤＤＲＥＳＳ信号、ＢＧ信号及びＢＡ信号をページテーブル５３６に提供して、ページテーブル５３６が、アクセス要求を各ＤＲＡＭチップのオープンページに関連付けるのを可能にする。
【００４２】
書込みデータバッファ５４６は、２５６ビットのＤＡＴＡ信号を受信するための入力と、ＢＥＱ５１４の入力に接続された出力と、を有する保持バッファである。データファブリック２５０は、散在する（interspersed）読出し及び書込みメモリアクセス要求をメモリコントローラ６００に提供するので、書込みデータバッファ５４６は、受信した全てのメモリアクセス要求に使用されるのではなく、書込みのみに使用される。
【００４３】
動作中、システムＢＩＯＳは、起動時にメモリチャネル１３０，１４０の各メモリモジュール上のシリアルプレゼンス検出（ＳＰＤ）ＲＯＭにクエリして、それぞれの密度及び構成を決定する。システムＢＩＯＳは、この情報を用いてアドレスデコーダ６１０の構成可能なアドレスデコーダレジスタをプログラムして、所定のワークロード及びメモリチップ構成に対するアドレスマップを定義する。また、システムＢＩＯＳは、この情報をオペレーティングシステムが利用できるようにして、論理アドレスから物理アドレスへの仮想アドレス変換に使用されるページテーブルをプログラムできるようにする。ページテーブルは、ＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳ（標準化アドレス）のフォーマットである。レジスタがシステムＢＩＯＳによって構成された後、アドレスデコーダ６１０は、これらを使用して、標準化アドレスをデコードすることによって、各アクセス要求を、対応するチップ選択を有する特定の領域にマッピングする。
【００４４】
例えば、メモリが２のべき乗のサイズを有するＤＤＲ４メモリである場合、アドレスデコーダ５２２は、以下の表１に示すように、標準化アドレスを様々な出力信号にデコードする。
【表１】
2019520660.tif 000003
【００４５】
メモリコントローラ６００は、いくつかのＤＩＭＭと共に動作するために、ランク乗算（rank multiplication）として知られる機能もサポートする。ランク乗算を有するシステムでは、所定のＤＩＭＭ上の各パッケージ集積回路は、スルーシリコンビア（ＴＳＶ：through-silicon-via）技術を使用して相互接続されたメモリチップの３次元（３Ｄ）スタックを含む。例えば、ＤＤＲ４規格では、２、４及び８メモリチップのスタックをサポートするために、３ビットのチップ識別入力信号Ｃ［２：０］が規定されている。このようにして、領域内の選択された論理ランクを識別するために、スタック内の各メモリチップが、共通のチップ選択信号と、符号化されたＣ［２：０］信号との両方によって選択される。アドレスデコーダ６１０は、ランク乗算を実施するために、標準化アドレスを、論理ランクにプログラム可能にデコードし、選択された領域に対するワンホット（one-hot）のチップ選択信号をアクティベートし、選択された論理ランクに対応する符号化されたＣ［２：０］信号を提供する。
【００４６】
アドレスデコーダ６１０は、非２のべき乗のアドレスのデコードをサポートする。次に、アドレスデコーダ６１０の構成について説明する。
【００４７】
図７は、いくつかの実施形態による、図６の非２のべき乗デコーダ６１０の簡略化ブロック図である。非２のべき乗のアドレスデコーダ６１０は、対応するチップ選択信号によって定義された異なるランクに関連する領域デコーダのセット７００を含む。図７に示す例では、領域デコーダのセット７００は、それぞれ「ＣＳ０」、「ＣＳ１」、「ＣＳ２」、「ＣＳ３」と付された４つのチップ選択信号に関連する４つの領域デコーダ７１０を含む。各領域デコーダ７１０は、一次デコーダ７２０と、二次デコーダ７３０と、「ＯＲ」と付された論理回路７４０と、「ＣＦＧ」と付された、一次デコーダ７２０に関連する構成レジスタ７５０の第１セットと、「ＣＦＧ」と付された、二次デコーダ７３０に関連する構成レジスタ７６０の第２セットと、を含む。なお、構成レジスタ７５０，７６０の各々は、一次デコーダ７２０及び二次デコーダ７３０と論理的に関連付けられており、物理的に異なっていてもよいし、図５の構成レジスタ５６２等の中央レジスタセット内の他の構成レジスタと組み合わせられてもよい。
【００４８】
構成レジスタ７５０，７６０の各々は、ＳＭＮバスに接続された入力と、一次デコーダ７２０及び二次デコーダ７３０の各々に使用されるレジスタ値を提供するための出力と、を有する。一次デコーダ７２０は、標準化アドレスを受信するための第１入力と、構成レジスタ７５０の出力に接続された第２入力と、一次チップ選択信号を提供するための出力と、を有する。一次チップ選択信号は、それぞれ「ＣＳＰＲＩ０」、「ＣＳＰＲＩ１」、「ＣＳＰＲＩ２」、「ＣＳＰＲＩ３」と付されている。二次デコーダ７３０は、標準化アドレスを受信するための第１入力と、構成レジスタ７６０の出力に接続された第２入力と、一次チップ選択信号を出力するための出力と、を有する。一次チップ選択信号は、それぞれ「ＣＳＳＥＣ０」、「ＣＳＳＥＣ１」、「ＣＳＳＥＣ２」、「ＣＳＳＥＣ３」と付されている。論理回路７４０は、一次デコーダ７２０の出力に接続された第１入力と、二次デコーダ７３０の出力に接続された第２入力と、信号「ＣＳ０」、「ＣＳ１」、「ＣＳ２」、「ＣＳ３」の何れかを提供するための出力と、を有する。
【００４９】
構成レジスタ７５０，７６０の各々のセットは、標準化アドレスをデコードして領域にマッピングすることができるように、領域の属性を定義するのに十分ないくつかのレジスタを含む。一例では、ベースアドレスレジスタは、領域の開始アドレスを定義し、領域の最下位アドレスに対応し、アドレスマスクレジスタは、領域のサイズを定義し、それによってデコードに使用される有効ビットを識別する。各デコーダは、アドレスマスクレジスタに応じてマスクされた標準化アドレスの有効ビットを、ベースアドレスレジスタの対応するビットと比較する。一致した場合、デコーダは、それぞれのチップ選択信号を出力し、論理回路７４０は、最終チップ選択信号を出力する。アクティブハイのチップ選択信号の場合、論理回路７４０は、論理ＯＲ関数を使用して実装される。
【００５０】
一実施形態では、一次デコーダの各々は、２Ｎのサイズの領域をサポートし、二次デコーダの各々は、２（Ｎ−１）のサイズの領域をサポートする。ここで、Ｎは整数である。例えば、Ｎが３２に等しい場合、６ＧＢの合計領域サイズに対して、一次デコーダ７２０は４ＧＢの領域サイズをサポートし、二次デコーダは２ＧＢの領域サイズをサポートする。
【００５１】
同じ領域に割り当てられた一次デコーダ及び二次デコーダの両方を設け、それらの結果を組み合わせることによって、領域デコーダ７１０は、複雑なビット毎のデコードを行わずに非２のべき乗のメモリサイズをサポートし、それによってデコーダのサイズを縮小する。一次デコーダ及び二次デコーダの各々が２のべき乗のサイズを有するので、コンパクトな回路を用いて、迅速且つ効率的に、標準化アドレスビットのサブセットに対する領域デコードを実行することができる。デコード演算に必要なビット数を減らすことによって、アドレスデコーダ６１０は、アドレスをより高速にデコードすることが可能である。例えば、４０ビットの標準化アドレスのうち３２ビットを、任意の領域サイズのベースレジスタ及びリミットレジスタとビット毎に完全に比較するには、現在のＣＭＯＳ論理プロセスを使用してより高いクロックレートでも、解決するのに１クロックサイクル以上が必要になる。
【００５２】
アドレスデコーダ６１０を使用して、一次デコーダ及び二次デコーダの両方によって非２のべき乗の領域サイズをサポートすることができるが、他の実施形態によれば、追加の構成が可能である。例えば、各アドレスデコーダは、２Ｎ、２（Ｎ−１）、２（Ｎ−２）のサイズをそれぞれ有する一次デコーダ、二次デコーダ、三次デコーダを含むことができる。例えば、Ｎが３２に等しい場合、この構成によって、１ＧＢの増分で１〜７ＧＢの領域サイズへの標準化アドレスのデコードが可能になる。この概念は、さらに４つ以上のデコーダにも拡張することができる。
【００５３】
図８は、２つの領域デコーダを使用して非２のべき乗アドレス空間用にプログラムされている場合に図７のアドレスデコーダによって実行されたアドレスマッピングを示す図８００である。図８００は、標準化アドレス空間８１０と、第１領域８２０と、第２領域８３０と、を含む。標準化アドレス空間８１０は、デコードされた信号ＣＳＰＲＩ０に関連する４ＧＢのサブ領域８１２と、デコードされた信号ＣＳＰＲＩ１に関連する４ＧＢのサブ領域８１４と、デコードされた信号ＣＳＳＥＣ０に関連する２ＧＢのサブ領域８１６と、デコードされた信号ＣＳＳＥＣ１に関連する２ＧＢのサブ領域と、を有する。サブ領域８１２は、アドレス０ｘ０から始まり、アドレス０ｘ０＿ＦＦＦＦ＿ＦＦＦＦ（４Ｇ−１（２３２−１））まで及び、０ｘは先頭にゼロが暗黙的に付加された４０ビットの１６進アドレスを示す。サブ領域８１４は、アドレス０ｘ１＿００００＿００００（２３２）から始まり、アドレス０ｘ１＿ＦＦＦＦ＿ＦＦＦＦ（８Ｇ−１（２３２＋２３２−１））まで及ぶ。サブ領域８１６は、アドレス０ｘ２＿００００＿００００（８Ｇ）から始まり、アドレス０ｘ２＿７ＦＦＦ＿ＦＦＦＦ（１０Ｇ−１）まで及ぶ。サブ領域８１８は、アドレス０ｘ２＿８０００＿００００（１０Ｇ）から始まり、アドレス０ｘ２＿ＦＦＦＦ＿ＦＦＦＦ（１２Ｇ−１）まで及ぶ。第１領域８２０は、ＣＳ０に関連する６ＧＢの領域であり、４ＧＢの一次部分８２２と、２ＧＢの二次部分８２４と、を有する。第１領域８２０は、それぞれ１２８Ｋ（１３１，０７２）バイトの４８Ｋ（４９，１５２）行で実装されており、一次領域８２２は、行アドレス０ｘ０から行アドレス０ｘ７ＦＦＦまでの３２Ｋ（３２，７６８）行で実装されており、二次領域８２４は、行アドレス０ｘ８０００から０ｘｂＦＦＦまでの１６Ｋ行で実装されている。同様に、第２領域８３０は、それぞれ１２８Ｋバイトの４８Ｋ行で実装されており、一次領域８３２は、行アドレス０ｘ０から行アドレス０ｘ７ＦＦＦまでの３２Ｋ行で実装されており、二次領域８３４は、行アドレス０ｘ８０００から０ｘｂＦＦＦまでの１６Ｋ行で実装されている。
【００５４】
このデコード演算を実行するために、システムＢＩＯＳは、構成レジスタを表２に示すようにプログラムする。
【表２】
2019520660.tif 000004
なお、ビット［７：０］は、２５６バイトのバイトアドレス指定を表すことに留意されたい。これらのビットは実装の便宜上切り捨てられ、ベースレジスタの場合に０、マスクレジスタの場合に１と推測される。
【００５５】
（メモリアクセスインターリーブ）
既知のメモリコントローラは、バンクアドレスを形成するために入力アドレスの特定のビットがデコードされるバンクスウィズルモードとして知られる追加のインターリーブモードを使用する。これらの特定のビットは、新たなバンク（又は、ＤＤＲ４の場合には、バンク及びバンクグループの両方）のビットを生成するためのアクセスアドレスの特定のビット（例えば、下位の行アドレスビット等）を含む。このようにして、本来ページ競合を引き起こしていたであろう連続するアドレスのセットの異なる部分がバンク間で分割され、より高い効率をもたらす。
【００５６】
いくつかの実施形態によれば、本明細書に記載のメモリコントローラは、物理アドレス空間を異なる領域のセットにインターリーブするためのプログラム可能なメカニズムを含む。このようにして、上述したメモリコントローラ（例えば、図２のメモリコントローラ２９２，２９４又は図５のメモリコントローラ５００）は、プログラムの実行中に遭遇し得る一連のアクセスをＤＲＡＭの複数のランクに拡散させることによって、より効率的に動作することができる。これにより、ページのプリチャージやページのアクティベート等のオーバーヘッドサイクルを有効なサイクル内に隠すことができる。第１メカニズムは、一次領域デコーダ及び二次領域デコーダを使用して実現することができるチップ選択インターリーブである。
【００５７】
図９は、いくつかの実施形態による、２つのアドレスデコーダを使用してチップ選択インターリーブを実施するようにプログラムされている場合に図７のアドレスデコーダによって実行されたアドレスマッピングを示す図９００である。図９００は、標準化アドレス空間９１０と、第１領域９２０と、第２領域９３０と、を含む。標準化アドレス空間９１０は、デコードされた信号ＣＳＰＲＩ０に関連する２ＧＢのサブ領域９１２と、デコードされた信号ＣＳＰＲＩ１に関連する２ＧＢのサブ領域９１４と、デコードされた信号ＣＳＳＥＣ０に関連する２ＧＢのサブ領域９１６と、デコードされた信号ＣＳＳＥＣ１に関連する２ＧＢのサブ領域９１８と、を有する。サブ領域９１２は、アドレス０ｘ０から始まり、アドレス０ｘ０＿７ＦＦＦ＿ＦＦＦＦ（２Ｇ−１（２３１−１））まで及ぶ。サブ領域９１４は、アドレス０ｘ８＿００００＿００００（２３１）から始まり、アドレス０ｘ０＿ＦＦＦＦ＿ＦＦＦＦ（４Ｇ−１（２３１＋２３１−１））まで及ぶ。サブ領域９１６は、アドレス０ｘ１＿００００＿００００（４ＧＢ）から始まり、アドレス０ｘ１＿７ＦＦＦ＿ＦＦＦＦ（６Ｇ−１）まで及ぶ。サブ領域９１８は、アドレス０ｘ１＿８０００＿００００（６Ｇ）から始まり、アドレス０ｘ１＿ＦＦＦＦ＿ＦＦＦＦ（８Ｇ−１）まで及ぶ。第１領域９２０は、ＣＳ０に関連する４ＧＢの領域であり、２ＧＢの部分９２２と、２ＧＢの部分９２４と、を有する。第１領域９２０は、それぞれ１２８Ｋバイトの１６Ｋ行で実装されており、一次領域９２２は、行アドレス０ｘ０から行アドレス０ｘ３ＦＦＦまでの１６Ｋ行で実装されており、二次領域９２４は、行アドレス０ｘ４０００から０ｘ７ＦＦＦまでの１６Ｋ行で実装されている。同様に、第２領域９３０は、それぞれ１２８Ｋバイトの１６Ｋ行で実装されており、一次領域９３２は、行アドレス０ｘ０から行アドレス０ｘ３ＦＦＦまでの１６Ｋ行で実装されており、二次領域９３４は、行アドレス０ｘ４０００から０ｘ７ＦＦＦまでの１６Ｋ行で実装されている。
【００５８】
チップ選択インターリーブモードでは、メモリコントローラ６００は、単一のＤＩＭＭランクが標準化アドレス空間内の連続するアドレスセットを占有するのとは対照的に、チャネル上の複数のＤＩＭＭランクに亘って物理アドレス空間をインターリーブする。チップ選択（ＣＳ）インターリーブでは、より小さいアドレス領域で潜在的により多くのＤＲＡＭバンクを使用することができるので、ページ競合を減らし、事実上より多くのＤＲＡＭバンクが使用可能になる。チップ選択インターリーブを使用するには、２つの要件がある。第１に、インターリーブされたチップ選択信号の数は２のべき乗である。第２に、領域は同じサイズである。図９の例では、同じサイズ（４ＧＢ）を有する２つの領域に対して２つ（２１）のチップ選択が存在する。
【００５９】
メモリコントローラ６００は、領域及びチップ選択信号を選択するために使用される上位の標準化アドレスビットを、所望のインターリーブサイズに対応する標準化アドレスの下位ビットと交換することによって、チップ選択インターリーブをプログラム可能に実施する。ＢａｓｅＡｄｄｒＣＳ及びＡｄｄｒＭａｓｋＣＳレジスタを設定してインターリーブのサイズを示すことによって、ＣＳインターリーブモードを設定することができる。例えば、２−ＣＳシステムにおいて１０２４ＫＢの標準化アドレス範囲上で一次デコーダのみをインターリーブし、次いで二次デコーダのみをインターリーブする場合、レジスタの設定は、以下の表３に示すようになる。
【表３】
2019520660.tif 000005
これにより、領域９１２，９１４は、０ｘ０から０ｘ０＿ＦＦＦＦ＿ＦＦＦＦまでのアドレスに亘って双方向にインターリーブされ、アドレスビット１２でＣＳ０及びＣＳ１の何れを使用するかが決まる。同様に、領域９１６，９１８も０ｘ１＿００００＿００００から０ｘ１＿ＦＦＦＦ＿ＦＦＦＦまでのアドレスに亘って双方向にインターリーブされ、アドレスビット１２でＣＳ０及びＣＳ１の何れを使用するかが決まる。
【００６０】
表１に示す例では、アドレスビットＡ［１２］（１０２４ＫＢのサイズに対応する）は、列アドレスビット９（ＣＯＬ［９］）にマッピングされている。このマッピングによって、インターリーブを実装する際のファームウェアの柔軟性がさらに向上する。現在の例では、Ａ［１２］がＣＳインターリーブに使用され、ＣＯＬ［９］がＡ［１３］にマッピングされ、上位のアドレスビットが表１のパターンに従ってバンク及びバンクグループアドレスに使用される（すなわち、Ａ［１４］がＢＡ０に使用され、Ａ［１５］がＢＡ１に使用される等）。
【００６１】
第２メカニズムは、ハッシュとして知られている。ハッシュは、より多くのアドレスビットを使用可能にすることによって、より細かい粒度を提供する。ハッシュで使用されるアドレスビットの数及び位置をユーザによってプログラムすることができるので、ハッシュ演算が特定のアプリケーション及びソフトウェアコードの特徴に合わせて調整することができるように、柔軟性を提供することができる。
【００６２】
図１０は、いくつかの実施形態による、図５のアドレスデコーダ５２２を実装するのに使用可能なメモリコントローラ１０００の一部のブロック図である。メモリコントローラ１０００は、アドレスデコーダ１０１０と、構成レジスタのセット１０２０と、を含む。アドレスデコーダ１０１０は、チップ選択（ＣＳ）ハッシュ回路１０１２と、バンクアドレス（ＢＡ）ハッシュ回路１０１４と、を含む。ＣＳハッシュ回路１０１２は、インタフェース５１２から４０ビットのＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳ（標準化アドレス）を受信するための入力と、「ＣＳ＿ＨＡＳＨ」と付された、ハッシュされたチップ選択信号のセットを提供するための出力と、を有する。ＢＡハッシュ回路１０１４は、ＣＳハッシュ回路１０１２の出力に接続された第１入力と、標準化アドレスを受信するための第２入力と、ＣＨＩＰ＿ＩＤ、ＲＯＷ＿ＡＤＤＲＥＳＳ、ＣＯＬＵＭＮ＿ＡＤＤＲＥＳＳ、ＢＧ及びＢＡ＿ＨＡＳＨ信号を提供するための出力と、を有する。メモリコントローラ１０００は、これらの出力をＣＯＮＴＲＯＬ信号と共に使用して、デコードされたメモリアクセスを、コマンドキュー５２０に提供してコマンドキュー５２０に記憶させることによって、アービタ５３８が、メモリアクセス要求の効率的な順序付けに関する決定を行うことができる。
【００６３】
アドレスデコーダ１０１０は、上述したように、メモリチャネル内の各メモリチップのベースアドレス及びサイズについての様々な構成レジスタからフィールドを受信する。また、アドレスデコーダ１０１０は、プログラム可能なハッシュ関数をサポートするために、追加の構成レジスタを使用する。図１０は、これらの追加の構成レジスタのみを示している。図示した実施形態では、アドレスデコーダ１０１０は、最大４つのチップ選択信号と、最大３２個のバンクと、をサポートする。したがって、構成レジスタ１０２０は、符号化ＣＳ信号のビットに対応する２つのＣＳハッシュレジスタのセット１０３０と、符号化ＢＡ信号のビットに対応する５つのＢＡハッシュレジスタのセット１０４０と、を含む。
【００６４】
ＣＳハッシュレジスタのセット１０３０は、ＣＳ＿ＨＡＳＨ［０］に関連する第１ＣＳハッシュレジスタ１０３２と、ＣＳ＿ＨＡＳＨ［１］に関連する第２ＣＳハッシュレジスタ１０３４と、を含む。各ＣＳハッシュレジスタは、レジスタビット３１：１において「ＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳ  ＸＯＲ［３９：９］」と付された３０ビットフィールドと、レジスタビット０において「ＥＮ」と付されたイネーブルフィールドと、を含む３２ビットのレジスタである。ＢＡハッシュレジスタのセット１０４０は、ハッシュされたバンクアドレスビットＢＡ＿ＨＡＳＨ［０］、ＢＡ＿ＨＡＳＨ［１］、ＢＡ＿ＨＡＳＨ［２］、ＢＡ＿ＨＡＳＨ［３］及びＢＡ＿ＨＡＳＨ［４］の各々に関連するＢＡハッシュレジスタ１０４２，１０４４，１０４６，１０４８，１０５０を含む。各ＢＡハッシュレジスタは、レジスタビット３１：１４において「ＲＯＷＸＯＲ［１７：０］」と付された１８ビットの行排他的論理和（ＸＯＲ）フィールドと、レジスタビット１３：１において「ＣＯＬＸＯＲ［１２：０］」と付された１３ビットの列排他的論理和フィールドと、レジスタビット０において「ＥＮ」と付されたイネーブルフィールドと、の３つのフィールドを有する３２ビットのレジスタである。
【００６５】
アドレスデコーダ１０１０は、標準化アドレスの選択されたビットを使用して、ビット毎のＸＯＲ演算を実行する。ＣＳハッシュ回路１０１２は、最初に、標準化アドレスの最上位の３１ビットのうち選択されたビットを使用して、チップ選択ビットをハッシュする。ＣＳハッシュレジスタのＮＯＲＭＡＬＩＺＥＤ  ＡＤＤＲＥＳＳ  ＸＯＲフィールドの各ビットは、標準化アドレスの指示されたビットに対してビット毎の排他的ＯＲ（ＸＯＲ）演算を選択的に実行するために使用される。２つのチップ選択信号は、以下の式（１）及び式（２）に従ってハッシュされる。
【数１】
2019520660.tif 000006
【数２】
2019520660.tif 000007
ここで、＾は、ＸＯＲ演算子を表し、＾（）は、ビット対の各々に対するビット毎のＸＯＲ演算子を表す。
【００６６】
メモリデコーダ１０１０は、最初に、メモリのサイズに基づいてＣＳ［１：０］ビットを見つける。次に、ＣＳハッシュを実行して、式（１）及び（２）を使用してＣＳ＿ＨＡＳＨ値を計算する。ＣＳハッシュ回路１０１２が、ハッシュされたＣＳ＿ＨＡＳＨ値を決定した後に、ＢＡハッシュ回路１０１４は、式（３）〜式（７）を使用してＢＡハッシュを実行することによって、ＢＡ＿ＨＡＳＨ値を計算する。
【数３】
2019520660.tif 000008
【数４】
2019520660.tif 000009
【数５】
2019520660.tif 000010
【数６】
2019520660.tif 000011
【数７】
2019520660.tif 000012
ここで、ＣＳビットに対応する標準化アドレスのビット自体を、ＣＳビットのハッシュに使用することはできない。そうしないと、全てのＣＳ＿ＨＡＳＨ値が強制的に０になるからである。これらのレジスタ値の設定に関する追加の制限について、さらに後述する。
【００６７】
いくつかの実施形態では、ＣＳ及びＢＡハッシュ関数は、さらなるレベルのメモリ構成に拡張することができる。例えば、ＨＢＭメモリは、「擬似チャネル」として知られる概念を実装する。擬似チャネルは、以下の式（８）に示すように、対応するハッシュ式及び対応する擬似チャネルレジスタを使用して、ハッシュされ得る。
【数８】
2019520660.tif 000013
この場合、メモリコントローラは、追加のハッシュ回路及び追加の構成レジスタを使用する。
【００６８】
既知のメモリコントローラは、バンクアドレスをハッシュし、固定のハッシュ関数を使用するだけである。メモリコントローラ１０００は、その柔軟性を高めるために、２つの追加のメカニズムを提供する。第１に、メモリコントローラ１０００は、チップ選択を選択的にハッシュすることによって、アクセスを分割する際のさらなる柔軟性を可能にする。例えば、４つのランク及び４つのチップ選択を有するメモリを使用して、近接するメモリアクセスのセットを、４倍以上のメモリバンクに亘ってより広範に拡散させることができる。このより広い拡散によって、メモリコントローラ１０００がオーバーヘッドをより良く隠すことを可能にする。第２に、メモリコントローラ１０００は、ハッシュ関数自体をプログラム可能にし、これにより、処理環境により良く適合するように変更可能にすることができる。例えば、モバイルシステムは、デスクトップシステムやサーバよりも少数のタスクを実行し、物理アドレス空間においてより高度のコード及びデータの集中を使用する傾向があることから、比較的小さい物理メモリ領域へのより多くのメモリアクセスが複数のチップ及びバンクに亘ってより広く拡散されるのを保証するために、より複雑なハッシュアルゴリズムから恩恵を受けるであろう。一方、デスクトップシステム及びサーバシステムは、よりマルチタスク化及びマルチスレッド化される傾向があることから、より単純なハッシュアルゴリズムで十分な場合がある。何れの場合も、ハッシュアルゴリズムは、システムＢＩＯＳによって選択的にプログラムされ得るハッシュレジスタのセットを通じてプログラム可能である。
【００６９】
図１１は、いくつかの実施形態による、図５のアドレスデコーダ５２２を実装するのに使用可能なメモリコントローラ１１００の他の部分のブロック図である。図示したように、メモリコントローラ１１００は、ハッシュ回路１１２０と、これに続く非２のべき乗デコーダ１１３０と、を有するアドレスデコーダ１１１０を含む。ハッシュ回路１１２０は、アクセスアドレスを受信するための入力と、出力と、を有しており、図１０のハッシュ回路１０１０を用いて実装することができる。非２のべき乗デコーダ１１３０は、ハッシュ回路１１２０の出力に接続された入力と、デコードされたアドレスを提供するための出力と、を有しており、図６及び図７の非２のべき乗デコーダ回路６１０を用いて実装することができる。メモリコントローラ１１００は、ハッシュメカニズム及び非２のべき乗メモリサイズのデコーダを別々に実装できるだけでなく、これらを単一のメモリデコーダ１１１０内で一緒に使用することも可能であることを示している。この場合、ハッシュメカニズムは、非２のべき乗デコードにシームレスに先行して、両方の機能をサポートすることによって、さらに高められた柔軟性をメモリコントローラに提供する。
【００７０】
また、ハッシュ演算は、非２のべき乗メモリサイズでシームレスに使用することができる。ハッシュ回路１０１２が非２のべき乗メモリアドレスサイズでハッシュ演算を実行する方法を、特定の例に関して説明することができる。この例では、デュアルランク１２Ｇｂメモリが２つの領域デコーダを使用して実装され、ＣＳ０用の第１領域デコーダは、一次デコーダ（ＣＳ０ｐ）及び二次デコーダ（ＣＳ０ｓ）を使用して１２Ｇｂのメモリ空間にマッピングし、ＣＳ１用の第２領域デコーダは、一次デコーダ（ＣＳ１ｐ）及び二次デコーダ（ＣＳ１ｓ）を使用して１２Ｇｂのメモリ空間にマッピングする。この例では、インターリーブは、簡単な方法で行われる。
【表４】
2019520660.tif 000014
【表５】
2019520660.tif 000015
【００７１】
システムＢＩＯＳが非２のべき乗サイズを設定するように非２のべき乗デコーダ１１３０を構成した場合、ＤＲＡＭアーキテクチャに起因して、ハッシュ関数に追加の制限がある。例えば、図８及び図９に示す構成によれば、４８Ｋ行しか存在せず、Ｒｏｗ［ＭＳＢ：ＭＳＢ−１］に対応するＲＯＷＸＯＲビットは、３つの状態が正しい数のバンク状態に正しく変換されないので、ハッシュ演算のために有効にされるべきではない。代わりに、これらのビットは、２のべき乗サイズのメモリでのみ使用することができる。
【００７２】
したがって、上述したメモリコントローラは、様々な構成可能オプションを通じて柔軟なアドレスマッピングを実行することによって、様々な選択肢をユーザに提供することが可能である。これらのアドレスマッピングの選択肢は、非２のべき乗メモリサイズのサポート、インターリーブ及びハッシュを含み、これらの全てが１つの結合されたデコーダ（アドレスデコーダ５２２）で実装される。
【００７３】
図５及び図６のメモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせによって実装されてもよい。例えば、デコーダ６１０は、速度及び効率の目的のためにハードウェア回路で実装されてもよい。このハードウェア回路は、プライオリティエンコーダ、有限ステートマシン、プログラマブルロジックアレイ（ＰＬＡ）等を含んでもよい。いくつかの実施形態では、メモリコントローラ５００の他の機能ブロックは、ソフトウェアの制御下でデータプロセッサによって実行されてもよい。いくつかのソフトウェアコンポーネントは、少なくとも１つのプロセッサによる実行のためにコンピュータ可読記憶媒体に記憶されてもよく、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００７４】
図５のメモリコントローラ５００、図６のアドレスデコーダ６１０、又は、これらの任意の部分は、プログラムによって読出され、集積回路を製造するために直接的若しくは間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能なデータ構造によって記述されてもよいし表現されてもよい。例えば、このデータ構造は、例えばＶｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベルの記述であってもよいし、レジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために当該記述を合成し得る合成ツールによって読出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。そして、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成してもよい。マスクは、集積回路を製造するために様々な半導体製造工程で使用されてもよい。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、所望により、ネットリスト（合成ライブラリ有り若しくは無し）又はデータセットであってもよいし、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００７５】
特定の実施形態について説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、メモリコントローラ５００は、ＤＤＲｘメモリ以外の他のタイプのメモリ（例えば、高帯域幅メモリ（ＨＢＭ）、ＲＡＭバスＤＲＡＭ（ＲＤＲＡＭ）及び異なるタイプのＤＩＭＭ等）とインタフェースをとることができる。また、メモリコントローラ５００は、異なるサイズのメモリにアクセスするように拡張可能である。２のべき乗デコーダの数は、他の実施形態において変わるであろう。図示した実施形態では、ＤＤＲメモリにおいて有用なメモリアドレス指定及び制御信号を説明したが、これらは使用されるメモリのタイプに応じて変わるであろう。また、例示的なデータ処理システム１００は、例えば図２のＡＰＵ２００等のＣＰＵコア及びＧＰＵコアの両方を有するＡＰＵに基づいていたが、上述した技術は、ＣＰＵ（１つ以上ＣＰＵコアを有するがＧＰＵコアを有しないシステム）及びＧＰＵ（ＣＰＵコアを有していないが１つ以上のＧＰＵコアを有するシステム）にも適合され得る。
【００７６】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲内に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【図１】
2019520660.tif 000016
【図２】
2019520660.tif 000017
【図３】
2019520660.tif 000018
【図４】
2019520660.tif 000019
【図５】
2019520660.tif 000020
【図６】
2019520660.tif 000021
【図７】
2019520660.tif 000022
【図８】
2019520660.tif 000023
【図９】
2019520660.tif 000024
【図１０】
2019520660.tif 000025
【図１１】
2019520660.tif 000026
【手続補正書】
【提出日】平成31年4月8日(2019.4.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリコントローラ（５００）を有するデバイス（１００，２００）であって、
メモリコントローラ（５００）は、
アクセスアドレスを含むメモリアクセス要求を受信するホストインタフェース（５１２）と、
メモリアクセスをメモリシステム（１２０）に提供するメモリインタフェース（５１４）と、
前記アクセスアドレスを、複数の領域のうち選択された領域にプログラム可能にマッピングするために、前記ホストインタフェース（５１２）に接続されたアドレスデコーダ（５２２，６１０）であって、第１の２のべき乗のサイズを有する一次デコーダ（７２０）と、第２の２のべき乗のサイズを有する二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、非２のべき乗のサイズを有する第１領域にマッピングするようにプログラム可能であり、前記アクセスアドレスを前記第１領域にマッピングすることに応じて第１領域マッピング信号を提供する、アドレスデコーダ（５２２，６１０）と、
前記メモリアクセス要求及び領域マッピング信号を記憶するために前記アドレスデコーダ（５２２，６１０）に接続されたコマンドキュー（５２０）と、
前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて、前記コマンドキュー（５２０）から前記メモリアクセス要求を選択し、これに応じて、対応するメモリアクセスを前記メモリインタフェース（５１４）に提供するアービタ（５３８）と、を備える、
デバイス（１００，２００）。
【請求項２】
前記領域マッピング信号は、前記メモリシステム（１２０）のチップ選択信号に対応する、
請求項１のデバイス（１００，２００）。
【請求項３】
前記アドレスデコーダ（５２２，６１０）は、複数の領域デコーダを備え、
領域デコーダ（７１０）毎に、
前記一次デコーダ（７２０）は、前記アクセスアドレスを受信し、一次領域選択信号を提供し、第１ベースアドレス及び第１の２のべき乗のサイズを有し、
前記二次デコーダ（７３０）は、前記アクセスアドレスを受信し、二次領域選択信号を提供し、第２ベースアドレス及び第２の２のべき乗のサイズを有し、
前記領域デコーダ（７１０）は、前記一次領域選択信号及び前記二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートするための論理回路（７４０）をさらに備える、
請求項１のデバイス（１００，２００）。
【請求項４】
前記第１領域は、２Ｎ＋２（Ｎ−１）（Ｎは整数）のサイズを有し、
前記一次デコーダ（７２０）は、サイズ２Ｎのサブ領域をデコードし、
前記二次デコーダ（７３０）は、サイズ２（Ｎ−１）の領域をデコードする、
請求項３のデバイス（１００，２００）。
【請求項５】
前記アドレスデコーダ（５２２，６１０）は、前記アクセスアドレスをデコードして、行アドレス、列アドレス、バンクアドレス及びバンクグループを提供する、
請求項３のデバイス（１００，２００）。
【請求項６】
各領域デコーダ（７１０）は、
前記一次デコーダ（７２０）に関連する第１構成レジスタのセット（７５０）と、
前記二次デコーダ（７３０）に関連する第２構成レジスタのセット（７６０）と、をさらに備える、
請求項３のデバイス（１００，２００）。
【請求項７】
第３の２のべき乗のサイズを有する第１の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第１領域（９２０）に選択的にマッピングし、これに応じて前記第１領域マッピング信号を提供する第１領域デコーダ（７１０，ＣＳ０）と、
前記第３の２のべき乗のサイズを有する第２の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第２の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第２領域（９３０）に選択的にマッピングし、これに応じて第２領域マッピング信号を提供する第２領域デコーダ（７１０，ＣＳ１）と、をさらに備え、
前記メモリコントローラ（５００）は、前記第１の一次デコーダ（７２０）と、前記第２の一次デコーダ（７２０）と、前記第１の二次デコーダ（７３０）と、前記第２の二次デコーダ（７３０）と、の各々の間で、前記アクセスアドレスに対応するメモリ空間をインターリーブする、
請求項１のデバイス（１００，２００）。
【請求項８】
前記デバイス（１００，２００）は、データ処理システム（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）と、
前記メモリアクセスに応答するメモリシステム（１２０）であって、少なくとも１つの非２のべき乗領域を含む複数の領域を有するメモリシステム（１２０）と、をさらに備える、
請求項１のデバイス（１００，２００）。
【請求項９】
前記デバイス（２００）は、単一の集積回路チップ上に形成されたマイクロプロセッサ（１００）であって、
前記アクセスアドレスを有するメモリアクセス要求を提供するためのメモリアクセスエージェント（１１０，２１０，２２０）をさらに備える、
請求項１のデバイス（１００，２００）。
【請求項１０】
アクセスアドレスを含むメモリアクセス要求を受信することと、
前記アクセスアドレスをデコードし、これに応じて、対応する領域マッピング信号を提供することであって、前記デコードすることは、第１の２のべき乗のサイズを有する第１の一次デコーダ（７２０）と、第２の２のべき乗のサイズを有する第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、非２のべき乗のサイズを有する第１領域に選択的にマッピングすることを含む、ことと、
前記アクセスアドレスを前記第１領域にマッピングすることに応じて、第１領域マッピング信号を提供することと、
前記メモリアクセス要求及び領域マッピング信号を記憶することと、
記憶された前記メモリアクセス要求を、前記領域マッピング信号に部分的に基づいて評価された複数の基準に基づいて選択することと、
選択されたメモリアクセス要求に応じて、対応するメモリアクセスを提供することと、を含む、
方法。
【請求項１１】
前記選択されたメモリアクセス要求の前記対応する領域マッピング信号に応じて、複数のチップ選択信号のうち選択されたチップ選択信号をアクティベートすることをさらに含む、
請求項１０の方法。
【請求項１２】
前記デコードすることは、
第１アクセスアドレスが、第１ベースアドレス及び前記第１の２のべき乗のサイズによって定義された第１サブ領域内に存在する場合に、前記第１アクセスアドレスをデコードして一次領域選択信号を提供することと、
前記第１アクセスアドレスが、第２ベースアドレス及び前記第２の２のべき乗のサイズによって定義された第２サブ領域内に存在する場合に、前記第１アクセスアドレスをデコードして二次領域選択信号を提供することと、
前記一次領域選択信号及び前記二次領域選択信号のうち少なくとも一方のアクティベートに応じて、対応する領域マッピング信号をアクティベートすることと、を含む、
請求項１０の方法。
【請求項１３】
前記第１アクセスアドレスをデコードして一次領域選択信号を提供すること、及び、前記第１アクセスアドレスをデコードして二次領域選択信号を提供すること、の各々は、
前記第１アクセスアドレスをデコードして行アドレス、列アドレス、バンクアドレス及びバンクグループを提供することを含む、
請求項１２の方法。
【請求項１４】
第３の２のべき乗のサイズを有する前記第１の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する前記第１の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する前記第１領域（９２０）に選択的にマッピングし、これに応じて第１領域マッピング信号を提供することと、
前記第３の２のべき乗のサイズを有する第２の一次デコーダ（７２０）と、前記第３の２のべき乗のサイズを有する第２の二次デコーダ（７３０）とを使用して、前記アクセスアドレスを、２のべき乗のサイズを有する第２領域（９３０）に選択的にマッピングし、これに応じて第２領域マッピング信号を提供することと、をさらに含み、
前記アクセスアドレスを前記第１領域（９２０）に選択的にマッピングすること、及び、前記アクセスアドレスを前記第２領域（９３０）に選択的にマッピングすること、の各々は、前記第１の一次デコーダ（７２０）と、前記第２の一次デコーダ（７２０）と、前記第１の二次デコーダ（７３０）と、前記第２の二次デコーダ（７３０）と、の間で、前記アクセスアドレスに対応するメモリ空間（９１０）をインターリーブすることを含む、
請求項１０の方法。
【請求項１５】
前記デコードすることは、
複数のプログラム可能なビットに応じて、前記アクセスアドレスの対応する複数のビットのうち何れのビットがハッシュ関数で使用されるかを決定し、前記ハッシュ関数を使用して前記アクセスアドレスを選択的にハッシュすることをさらに含む、
請求項１０の方法。
【国際調査報告】
2019520660.tif 000027
2019520660.tif 000028