(57)【要約】【課題】  大きなバッファーメモリーを必要とせず、比較的簡単な処理でメモリーアクセスを効率化するメモリーコントローラーを得る。【解決手段】  コマンド発行部１７は、メモリーデバイス３に対するコマンド要求およびアクセスすべきアドレスを出力する。アドレス変換部１８ａは、アドレスにおける一部のアドレスビットの値を、アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更し、コマンド出力部１８は、アドレス変換部１８ａにより一部を変換されたアドレスとともに、コマンド要求により要求されたコマンドを出力する。【選択図】  図１
2016085541.tif 000002
【特許請求の範囲】
【請求項１】
メモリーデバイスに対するコマンド要求およびアクセスすべきアドレスを出力するコマンド発行部と、
前記アドレスの一部を変換するアドレス変換部と、
前記アドレス変換部により一部を変換された前記アドレスとともに、前記コマンド要求により要求されたコマンドを出力するコマンド出力部とを備え、
前記アドレス変換部は、前記アドレスにおける一部のアドレスビットの値を、前記アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更すること、
を特徴とするメモリーコントローラー。
【請求項２】
前記アドレス変換部は、前記アドレスにおけるバンクアドレスビットの値を、前記アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更することを特徴とする請求項１記載のメモリーコントローラー。
【請求項３】
前記アドレス変換部は、前記メモリーデバイスのランク数が２のべき乗ではない場合、前記アドレスにおけるランクアドレスビットの値が前記ランク数以上であるとき、前記ランクアドレスビットの値と、前記アドレスにおけるロウアドレスビットにおける最上位ビットから前記ランクアドレスビットのビット数と同数のビット範囲の値とを交換することを特徴とする請求項１または請求項２記載のメモリーコントローラー。
【請求項４】
前記ハッシュ関数は、前記アドレスにおける一部のアドレスビットの値と、前記アドレスにおける所定の範囲のアドレスビットの値との排他的論理和を含むことを特徴とする請求項１から請求項３のうちのいずれか１項記載のメモリーコントローラー。
【請求項５】
前記メモリーデバイスは、ＤＲＡＭであることを特徴とする請求項１から請求項４のうちのいずれか１項記載のメモリーコントローラー。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリーコントローラーに関するものである。
【背景技術】
【０００２】
マイクロプロセッサーのメインメモリー用のメモリーデバイスとして使用されるＤＲＡＭ（Dynamic Random Access Memory）へのアクセスの高速化手法が種々提案されている（例えば特許文献１参照）。
【０００３】
高集積度が可能なページ・バンク方式のメモリーデバイスでは、アクセスする場所や組み合わせによって速度が変化する。
【０００４】
同一ページ内への連続的なアクセス（同じロウおよびバンクアドレスで、カラムアドレスのみが変わる連続的なアクセス）は、効率的に実行されるが、連続的なアクセスにおいてロウアドレスが変化した場合には、ロウアドレスの変化前にアクセスしていたページを閉じてから、ロウアドレスの変化後にアクセスページを新たに開く動作が必要になる。
【０００５】
また、メモリーデバイスが複数のチップを有する場合（つまり、複数のランクがある場合）には、それぞれのチップで現在開いているページが独立に管理されるため、ロウアドレスの変化が少なくなるようにアクセスを調整することで、効率的なアクセスが可能である。
【０００６】
さらに、複数のバンクを有するチップでは、バンク毎に独立してページを開くことができるため、ロウアドレスの変化が少なくなるようにアクセスを調整することで、効率的なアクセスが可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２０４４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のようなメモリーデバイスにおいて、例えばデータコピーの場合などにおいて頻繁にページの開閉が発生すると、遅延が大きくなってしまう。一般的に、このような遅延を軽減するために、リードライトのデータ粒度を大きくしたり、アクセス順序の入れ替えなどが行われるが、これらの方法では、大きなバッファーメモリーと複雑な制御が必要となっている。
【０００９】
本発明は、上記の問題に鑑みてなされたものであり、大きなバッファーメモリーを必要とせず、比較的簡単な処理でメモリーアクセスを効率化するメモリーコントローラーを得ることを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るメモリーコントローラーは、メモリーデバイスに対するコマンド要求およびアクセスすべきアドレスを出力するコマンド発行部と、前記アドレスの一部を変換するアドレス変換部と、前記アドレス変換部により一部を変換された前記アドレスとともに、前記コマンド要求により要求されたコマンドを出力するコマンド出力部とを備える。そして、前記アドレス変換部は、前記アドレスにおける一部のアドレスビットの値を、前記アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更する。
【発明の効果】
【００１１】
本発明によれば、大きなバッファーメモリーを必要とせず、比較的簡単な処理でメモリーアクセスを効率化するメモリーコントローラーを得ることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施の形態に係るメモリーコントローラーの構成を示すブロック図である。
【図２】図２は、メモリーデバイス３として使用可能なＤＲＡＭのアドレスビット数を示す図である。
【図３】図３は、メモリーデバイス３に使用されるアドレスパターンの例を示す図である。
【図４】図４は、実施の形態１におけるアドレス変換の一例を示す図である。
【図５】図５は、実施の形態２におけるアドレス変換の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図に基づいて本発明の実施の形態を説明する。
【００１４】
実施の形態１．
【００１５】
図１は、本発明の実施の形態に係るメモリーコントローラーの構成を示すブロック図である。図１に示すメモリーコントローラーは、論理層１および物理層２を有し、物理層２は、外部のメモリーデバイス３を直接的に制御し、論理層１は、物理層２に対して各種信号を供給して物理層２を動作させてメモリーデバイス３を制御する。メモリーデバイス３は、ＤＤＲ３−ＳＤＲＡＭなどといったＳＤＲＡＭ形式の揮発メモリーである。図２は、メモリーデバイス３として使用可能なＤＲＡＭのアドレスビット数を示す図である。また、図３は、メモリーデバイス３に使用されるアドレスパターンの例を示す図である。
【００１６】
論理層１は、ホストインターフェイス１１、調停部１２、ストローブ信号生成部１３、リフレッシュコントローラー１４、トランザクションバッファー１５、デバイス管理部１６、コマンド発行部１７、コマンド出力部１８、および物理層インターフェイス１９を有する。
【００１７】
ホストインターフェイス１１は、システムバスを介してメモリーデバイス３に対するアクセス要求を受け付け、そのアクセス要求を調停部１２に出力する。また、ライトアクセス要求の場合、ホストインターフェイス１１は、ライト対象のデータを受け付け、ストローブ信号生成部１３に出力する。リードアクセス要求の場合、ホストインターフェイス１１は、リード対象のデータをストローブ信号生成部１３から受け付け、システムバスを介して、リードアクセス要求の発行元に出力する。
【００１８】
調停部１２は、ホストインターフェイス１１からのアクセス要求、リフレッシュコントローラー１４からのリフレッシュ要求などの各種要求を調停し、それらの要求を順番にトランザクションバッファー１５に登録する。
【００１９】
ストローブ信号生成部１３は、ストローブ信号を生成し、物理層インターフェイス１９を介して物理層２との間でアクセス対象のデータの送受を行う。
【００２０】
リフレッシュコントローラー１４は、図示せぬレジスターに設定された周期で定期的にリフレッシュ要求を出力する。
【００２１】
トランザクションバッファー１５は、調停部１２により登録される要求をキューイングし順番に出力する。
【００２２】
デバイス管理部１６は、メモリーデバイス３の状態管理を行い、メモリーデバイス３に関するデバイス状態情報を出力する。
【００２３】
また、コマンド発行部１７は、トランザクションバッファー１５から、順番に、ロウ（ＲＯＷ）コマンド要求、カラム（ＣＯＬ）コマンド要求、バンク（ＢＡＮＫ）コマンド要求、ランク（ＲＡＮＫ）コマンド要求、ロウアドレス、カラムアドレス、バンクアドレス、ランクアドレスなどのコマンド要求とアドレスを受け付け、それらのコマンドについてのコマンド発行要求をそれらのアドレスとともにコマンド出力部１８に供給する。また、コマンド発行部１７は、上述のデバイス状態情報に基づいて各種コマンドについてのコマンド発行要求をそれらのアドレスとともにコマンド出力部１８に供給する。
【００２４】
コマンド発行部１７は、コマンド発行要求を発行すると、そのコマンドの種別を示す通知（状態遷移指令）をデバイス管理部１６に供給する。
【００２５】
コマンド出力部１８は、コマンド発行部１７からのコマンド発行要求に従って、要求されるコマンドを実行するための各種信号（アドレスを示す信号を含む）を物理層インターフェイス１９に供給する。コマンド出力部１８は、データ転送トリガーをストローブ信号生成部１３に供給し、ストローブ信号生成部１３は、そのデータ転送トリガーに従ってデータ転送を行う。
【００２６】
コマンド出力部１８は、供給されたアドレスの一部を変換するアドレス変換部１８ａを有している。アドレス変換部１８ａは、そのアドレスにおける一部のアドレスビットの値を、アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更し、コマンド出力部１８は、アドレス変換部１８ａにより一部を変換されたアドレスとともに、コマンド要求により要求されたコマンドを出力する。
【００２７】
例えば、アドレス変換部１８ａは、そのアドレスにおけるバンクアドレスビットの値を、アドレスにおける所定の範囲のアドレスビットの値（ここでは、バンクアドレスビット以外の部分であるロウアドレスビットの値）のハッシュ関数値に変更する。
【００２８】
このハッシュ関数は、アドレスにおける一部のアドレスビットの値と、アドレスにおける所定の範囲のアドレスビットの値との排他的論理和を含む。
【００２９】
例えば、このハッシュ関数には、次式が使用される。
【００３０】
バンク［ｘ−１：０］＝変更前のバンク［ｘ−１：０］＾ロウ［ｘ−１：０］＾ロウ［２ｘ−１：ｘ］＾・・・＾ロウ［（ｎ＋１）ｘ−１：ｎ・ｘ］
【００３１】
ここで、「＾」は排他的論理を示し、バンク［ｂ：ａ］は、第ａビットから第ｂビットまでのビット範囲のバンクアドレスビットの値を示し、ロウ［ｂ：ａ］は、第ａビットから第ｂビットまでのビット範囲のロウアドレスビットの値を示し、ｘは、バンクアドレスビットのビット数であり、ｎは、ロウアドレスビットのビット数／バンクアドレスビットのビット数（除算に余りがある場合には切り上げて整数化する）以下の任意の数である。
【００３２】
物理層インターフェイス１９は、論理層１と物理層２との間のインターフェイスであって、論理層１および物理層２の間で各種信号を転送する。
【００３３】
次に、実施の形態１に係るメモリーコントローラーの動作について説明する。ここでは、主に、アドレス変換部１８ａの動作について説明する。
【００３４】
実施の形態１では、アドレス変換部１８ａは、コマンド発行部１７から供給されたアドレスから上述のハッシュ関数の値を計算し、そのハッシュ関数の値で、そのアドレスのバンクアドレス部分を上書きする。そして、コマンド出力部１８は、上述のようにして一部を変更されたアドレスに基づく信号を物理層インターフェイス１９に供給し、データ転送トリガーをストローブ信号生成部１３に供給し、データ転送（リードまたはライト）を実行させる。
【００３５】
図４は、実施の形態１におけるアドレス変換の一例を示す図である。図４に示す例は、図３におけるアドレスパターン＃１の場合の一例である。図４に示すように、アドレスにおけるバンクアドレスが変更されるため、例えば複数バンクに跨って記憶されているデータのコピーを行う場合、アドレス変換をしないときに比べ、コピー元のバンクへのリードアクセスとコピー先のバンクへのライトアクセスとのバンク競合が減少している。
【００３６】
以上のように、上記実施の形態１によれば、コマンド発行部１７は、メモリーデバイス３に対するコマンド要求およびアクセスすべきアドレスを出力する。アドレス変換部１８ａは、アドレスにおける一部のアドレスビットの値を、アドレスにおける所定の範囲のアドレスビットの値のハッシュ関数値に変更し、コマンド出力部１８は、アドレス変換部１８ａにより一部を変換されたアドレスとともに、コマンド要求により要求されたコマンドを出力する。
【００３７】
これにより、大きなバッファーメモリーを必要とせず、比較的簡単な処理でメモリーアクセスが効率化され、バンク競合のワーストケースが起きにくくなっている。
【００３８】
実施の形態２．
【００３９】
実施の形態２では、実施の形態１と同様にバンクアドレスのアドレス変換を行った後に、アドレス変換部１８ａは、メモリーデバイス３のランク数が２のべき乗ではない場合、アドレスにおけるランクアドレスビットの値がランク数以上であるとき、ランクアドレスビットの値と、アドレスにおけるロウアドレスビットにおける最上位ビットからランクアドレスビットのビット数と同数のビット範囲の値とを交換する。
【００４０】
具体的には、アドレス変換部１８ａは、次式のように、ランクアドレスビットの値と、ロウアドレスビットの最上位側の一部の値とを交換する。
【００４１】
ランク［ｘ−１：０］＝変更前のロウ［ｙ−１：ｙ−ｘ］（変更前のランク［ｘ−１：０］≧ｎＲａｎｋｓの場合）
ランク［ｘ−１：０］＝変更前のランク［ｘ−１：０］（変更前のランク［ｘ−１：０］＜ｎＲａｎｋｓの場合）
【００４２】
ロウ［ｙ−１：ｙ−ｘ］＝変更前のランク［ｘ−１：０］（変更前のランク［ｘ−１：０］≧ｎＲａｎｋｓの場合）
ロウ［ｙ−１：ｙ−ｘ］＝変更前のロウ［ｙ−１：ｙ−ｘ］（変更前のランク［ｘ−１：０］＜ｎＲａｎｋｓの場合）
【００４３】
ここで、ランク［ｂ：ａ］は、第ａビットから第ｂビットまでのビット範囲のランクアドレスビットの値を示し、ｎＲａｎｋｓは、ランク数であり、ｘは、ランクアドレスビットのビット数であり、ｙは、ロウアドレスビットのビット数である。
【００４４】
なお、実施の形態２に係るメモリーコントローラーのその他の構成および動作については実施の形態１のものと同様であるので、その説明を省略する。
【００４５】
図５は、実施の形態２におけるアドレス変換の一例を示す図である。図５に示す例は、図３におけるアドレスパターン＃２の場合の一例である。例えばランク数が３である場合、図５に示すように、ランクビットの値が３であるときに、ランクビット（２ビット）の値とロウの最上位２ビットの値とが交換される。
【００４６】
以上のように、上記実施の形態２によれば、ランク数が２のべき乗ではない場合でも、確実に、アドレスの一部をハッシュ関数値で置き換えることができる。
【００４７】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【００４８】
例えば、上記実施の形態１，２において使用されるハッシュ関数は、上記のものに限定されず、他の一対一関数でもよい。
【００４９】
また、上記実施の形態２において、上述のバンクアドレスビットの場合と同様に、アドレス変換部１８ａは、アドレスにおけるランクアドレスビットの値を、アドレスにおける所定の範囲のアドレスビットの値（ここでは、バンクアドレスビット以外の部分であるロウアドレスビットの値）のハッシュ関数値に変更し、変更後のランクアドレスビットの値とロウアドレスビットの上位ビットの値とを上述のように交換するようにしてもよい。
【産業上の利用可能性】
【００５０】
本発明は、例えば、ＤＲＡＭのメモリーコントローラーに適用可能である。
【符号の説明】
【００５１】
１７  コマンド発行部
１８  コマンド出力部
１８ａ  アドレス変換部
【図１】
2016085541.tif 000003
【図２】
2016085541.tif 000004
【図３】
2016085541.tif 000005
【図４】
2016085541.tif 000006
【図５】
2016085541.tif 000007