(57)【特許請求の範囲】
【請求項１】
複数のメモリバンクのうちの少なくとも1つにおける少なくとも1つのメモリページに対応する少なくとも1つのメモリ位置に、前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従ってアクセスするように設定されるコントローラと、
前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示す前記メモリアクセス設定を格納するように設定される、1つまたは複数の静的なメモリアクセス設定レジスタと、
前記コントローラが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納するように設定される、1つまたは複数の動的なメモリアクセス設定レジスタとを備え、
前記コントローラは、前記1つまたは複数の静的なメモリアクセス設定レジスタに格納された前記メモリアクセス設定、及び前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記少なくとも1つのメモリページを、クローズするか、オープンにしておくかのいずれかにするように設定されると共に、
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記コントローラが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記コントローラが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、メモリコントローラ。
【請求項２】
前記メモリアクセス設定は、少なくとも1つの、メモリページをオープンにしておく設定、および、少なくとも1つの、メモリページをクローズする設定を含む、請求項１に記載のメモリコントローラ。
【請求項３】
前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、前記少なくとも1つのメモリページをオープンにしておくことを示すかどうかを判定するようにさらに設定される、請求項１に記載のメモリコントローラ。
【請求項４】
前記コントローラは、前記メモリバンクに対する前記メモリアクセス設定が、前記少なくとも1つのメモリページをクローズすることを示すならば、前記メモリバンク内の前記少なくとも1つのメモリページをオープンするようにさらに設定される、請求項３に記載のメモリコントローラ。
【請求項５】
前記コントローラは、前記メモリバンク内の前記少なくとも1つのメモリページが、オープンされているかどうかを判定するようにさらに設定される、請求項３に記載のメモリコントローラ。
【請求項６】
前記コントローラは、前記コントローラが、前記少なくとも1つのメモリページがすでにオープンされていると判定するならば、前記メモリページをまずオープンすることなしに、前記少なくとも1つのメモリページにアクセスするようにさらに設定される、請求項５に記載のメモリコントローラ。
【請求項７】
前記コントローラは、前記コントローラが、前記少なくとも1つのメモリページがオープンされていないと判定するならば、前にオープンされていたメモリページをクローズするようにさらに設定される、請求項５に記載のメモリコントローラ。
【請求項８】
前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、動的に変更されるべきであるかどうかを判定するようにさらに設定される、請求項１に記載のメモリコントローラ。
【請求項９】
前記コントローラは、前記メモリバンクに対する前記メモリアクセス設定が、1つまたは複数のメモリアクセス要求に応じて、動的に変更されるべきであるかどうかを判定するように設定される、請求項８に記載のメモリコントローラ。
【請求項１０】
前記コントローラは、前記メモリバンクに対する前記メモリアクセス設定が、メモリアクセス要求の予測に応じて、動的に変更されるべきであるかどうかを判定するように設定される、請求項８に記載のメモリコントローラ。
【請求項１１】
少なくとも1つの半導体ダイに統合される、請求項１に記載のメモリコントローラ。 
【請求項１２】
セットトップボックス、エンターテイメント装置、ナビゲーション装置、通信装置、固定位置データユニット、移動位置データユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、携帯型音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、および携帯型デジタルビデオプレーヤから成るグループから選択され、前記コントローラがその中に統合されるデバイスをさらに備える、請求項１に記載のメモリコントローラ。
【請求項１３】
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
複数のレジスタのうちのそれぞれが、対応するメモリバンクに対するメモリページをオープンにしておく設定を前記コントローラが取り消すことを可能にされるかどうかを示す第１の複数の動的なメモリアクセス設定レジスタと、
複数のレジスタのうちのそれぞれが、対応するメモリバンクに対するメモリページをクローズする設定を前記コントローラが取り消すことを可能にされるかどうかを示す第２の複数の動的なメモリアクセス設定レジスタと
を備える、請求項１に記載のメモリコントローラ。
【請求項１４】
メモリコントローラで、メモリアドレスを含むメモリアクセス要求を受信するステップと、
複数のメモリバンクのそれぞれについてのメモリアクセス設定を格納する1つまたは複数の静的なメモリアクセス設定レジスタにアクセスするステップであって、前記メモリアクセス設定は、前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示すと共に、各メモリバンクは、少なくとも1つのメモリページを含む、ステップと、
前記メモリアドレスを含むメモリバンクに対する前記メモリアクセス設定が、メモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するステップと、
前記メモリコントローラが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納する1つまたは複数の動的なメモリアクセス設定レジスタにアクセスすることによって、前記メモリアクセス設定を動的に変更するかどうかを判定するステップと、
前記1つまたは複数の静的なメモリアクセス設定レジスタに格納された前記メモリアクセス設定、及び前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記メモリアドレスを含む前記メモリバンク内の前記メモリページを、クローズするか、または、オープンにしておくステップと
を含み、
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、メモリシステム内のメモリにアクセスする方法。
【請求項１５】
前記メモリバンクに対する前記メモリアクセス設定が、アクセスの後で、そのメモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記メモリページにアクセスする前に、前記メモリページがオープンされているかどうかを判定するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記メモリページがオープンされているならば、前記メモリページをまずオープンすることなしに、前記メモリページにアクセスするステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記メモリアドレスを含む前記メモリページがオープンされていないならば、前にオープンされていたメモリページをクローズするステップをさらに含む、請求項１６に記載の方法。
【請求項１９】
前記メモリアドレスに格納されるデータにアクセスするために、前記メモリページにアクセスするステップをさらに含む、請求項１４に記載の方法。
【請求項２０】
前記メモリバンクに対する前記メモリアクセス設定が、前記メモリページをクローズするように設定されているならば、前記メモリページにアクセスする前に、前記メモリページをオープンするステップをさらに含む、請求項１９に記載の方法。
【請求項２１】
前記取り消し情報は、前記メモリバンクに対するメモリページをオープンにしておく設定を前記メモリコントローラが取り消すことを可能にされるかどうか、または前記メモリバンクに対するメモリページをクローズする設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す、請求項１４に記載の方法。
【請求項２２】
前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報に基づいて、前記メモリアクセス設定を一時的に取り消すステップ、または、前記メモリアクセス設定に対する新しい設定を格納するステップのいずれかにより、前記メモリアドレスを含む前記メモリバンクに対する前記メモリアクセス設定を動的に変更するステップをさらに含む、請求項２１に記載の方法。
【請求項２３】
1つまたは複数の未処理のメモリアクセス要求を調査するステップと、
前記1つまたは複数の未処理のメモリアクセス要求に基づいて、前記メモリアクセス設定を動的に変更するステップと
をさらに含む、請求項２１に記載の方法。
【請求項２４】
前記メモリバンクに対する将来のメモリアクセス要求を予測するステップと、
前記予測された前記メモリバンクに対する将来のメモリアクセス要求に基づいて、前記メモリバンクの前記メモリアクセス設定を動的に変更するステップと
をさらに含む、請求項２１に記載の方法。
【請求項２５】
それぞれが少なくとも1つのメモリページを含む、複数のメモリバンクと、
前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従って、前記複数のメモリバンクのうちの少なくとも1つにおける前記少なくとも1つのメモリページに対応する、少なくとも1つのメモリ位置にアクセスするように設定されるメモリコントローラと、
前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示す前記メモリアクセス設定を格納するように設定される、1つまたは複数の静的なメモリアクセス設定レジスタと、
前記メモリコントローラが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納するように設定される、1つまたは複数の動的なメモリアクセス設定レジスタとを備え、
前記メモリコントローラは、前記1つまたは複数の静的なメモリアクセス設定レジスタに格納された前記メモリアクセス設定、及び前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記少なくとも1つのメモリページを、クローズするか、オープンにしておくかのいずれかにするように設定されると共に、
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、メモリシステム。
【請求項２６】
前記メモリアクセス設定は、少なくとも1つの、メモリページをオープンにしておく設定、および、少なくとも1つの、メモリページをクローズする設定を含む、請求項２５に記載のメモリシステム。
【請求項２７】
前記メモリコントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、前記少なくとも1つのメモリページをオープンにしておくことを示すかどうかを判定するようにさらに設定される、請求項２５に記載のメモリシステム。
【請求項２８】
前記メモリコントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、動的に変更されるべきであるかどうかを判定するようにさらに設定される、請求項２５に記載のメモリシステム。
【請求項２９】
前記メモリコントローラは、前記メモリバンクに対する前記メモリアクセス設定を、動的に変更するようにさらに設定される、請求項２８に記載のメモリシステム。
【請求項３０】
少なくとも1つの半導体ダイに統合される、請求項２５に記載のメモリシステム。
【請求項３１】
メモリコントローラであって、
複数のメモリバンクのうちの少なくとも1つにおける少なくとも1つのメモリページに対応する少なくとも1つのメモリ位置に、前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従ってアクセスするように設定されるコントローラと、
前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示す前記メモリアクセス設定を格納するための手段と、
前記コントローラが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納するための手段とを備え、
前記コントローラは、前記メモリアクセス設定を格納するための前記手段に格納された前記メモリアクセス設定、及び取り消し情報を格納するための前記手段に格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記少なくとも1つのメモリページを、クローズするか、オープンにしておくかのいずれかにするように設定されると共に、
前記取り消し情報を格納するための前記手段が、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、メモリコントローラ。
【請求項３２】
メモリコントローラで、メモリアドレスを含むメモリアクセス要求を受信するためのステップと、
複数のメモリバンクのそれぞれに対するメモリアクセス設定を格納する1つまたは複数の静的なメモリアクセス設定レジスタにアクセスするためのステップであって、前記メモリアクセス設定は、前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示すと共に、各メモリバンクは、少なくとも1つのメモリページを含む、ステップと、
前記メモリバンクに対する前記メモリアクセス設定が、前記少なくとも1つのメモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するためのステップと、
前記メモリコントローラが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納する1つまたは複数の動的なメモリアクセス設定レジスタにアクセスすることによって、前記メモリアクセス設定を動的に変更するかどうかを判定するためのステップと、
前記1つまたは複数の静的なメモリアクセス設定レジスタに格納された前記メモリアクセス設定、及び前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記メモリアドレスを含む前記メモリバンク内の前記少なくとも1つのメモリページを、クローズするか、または、オープンにしておくためのステップと
を含み、
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記メモリコントローラが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、メモリシステム内のメモリにアクセスする方法。
【請求項３３】
プログラムコードを含む非一時的なコンピュータ可読記録媒体であって、前記プログラムコードがプロセッサによって実行された場合に、前記プロセッサに、
メモリアドレスを含むメモリアクセス要求を受信するステップと、
複数のメモリバンクのそれぞれについてのメモリアクセス設定を格納する1つまたは複数の静的なメモリアクセス設定レジスタにアクセスするステップであって、前記メモリアクセス設定は、前記複数のメモリバンクのうちの各メモリバンクが前記メモリバンクに対するアクセスの後でオープンにしておかれるべきかあるいはクローズされるべきかを示すと共に、各メモリバンクは、少なくとも1つのメモリページを含む、ステップと、
前記メモリアドレスを含むメモリバンクに対する前記メモリアクセス設定が、メモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するステップと、
前記プロセッサが前記メモリアクセス設定を取り消すことを可能にされるかどうかを示す取り消し情報を格納する1つまたは複数の動的なメモリアクセス設定レジスタにアクセスすることによって、前記メモリアクセス設定を動的に変更するかどうかを判定するステップと、
前記1つまたは複数の静的なメモリアクセス設定レジスタに格納された前記メモリアクセス設定、及び前記1つまたは複数の動的なメモリアクセス設定レジスタに格納された前記取り消し情報のうちの少なくとも1つに基づいて、前記メモリアドレスを含む前記メモリバンク内の前記少なくとも1つのメモリページを、クローズするか、または、オープンにしておくステップと
を実行させると共に、
前記1つまたは複数の動的なメモリアクセス設定レジスタが、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをオープンにしておく設定を前記プロセッサが取り消すことを可能にされるかどうかを示す第１の動的なメモリアクセス設定レジスタと、
少なくとも、前記複数のメモリバンクのうちのいずれかに対するメモリページをクローズする設定を前記プロセッサが取り消すことを可能にされるかどうかを示す第２の動的なメモリアクセス設定レジスタとを備える、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願の技術は、一般には、プロセッサベースのシステムでメモリアクセス時間を最適化するための、メモリアクセスコントローラ、ならびに関係するシステムおよび方法に関する。
【背景技術】
【０００２】
中央処理装置(CPU)ベースのシステムを含む、プロセッサベースのシステムに関しては、システムメモリに対してダイナミックメモリを使用することが一般的である。スタティックメモリの1ビット当たり複数のトランジスタが典型的には必要とされるのとは対照的に、ダイナミックメモリでは、1メモリビット当たりただ1つのトランジスタが典型的には必要とされるので、ダイナミックメモリは、スタティックメモリほど高価ではない。しかしながら、ダイナミックメモリの使用には、トレードオフがある。ダイナミックメモリのアクセス時間は、典型的には、スタティックメモリのアクセス時間より長い。ダイナミックメモリにアクセスすることは、2つの別個のタスクを必要とし、それらの両方は、処理時間を必要とする。第1に、アクセスされるべきメモリバンク内の所望のメモリ位置に対応するメモリページ(すなわち、行)が、オープンされる。これは、2次元の行および列のメモリ配置に関係して、「行選択」としても知られている。第2に、メモリページ内の所望のメモリ位置がアクセスされる。これは、「列選択」としても知られている。ダイナミックメモリの使用により生じる、増加されるメモリアクセス時間は、低減される帯域幅、および所与の時間内に実行される命令の数(例えば、100万命令毎秒(MIPS))の両方の観点から、CPUの性能に影響を与える場合がある。
【０００３】
プロセッサベースのシステムでダイナミックメモリを使用するときに、増加されるメモリアクセス時間を軽減するために、メモリコントローラは、メモリページに対するアクセスの後で、所与のメモリバンク内のメモリページをオープンに維持するか、またはオープンにしておくように設定される場合がある。メモリバンクでのアクセスの後で、メモリページを、オープンに維持すること、またはオープンにしておくことは、連続するメモリアクセスが同じメモリページに対するものであるならば、メモリアクセス時間の実績を向上させることができる。メモリページをクローズし、後続のアクセスのためにそれを再オープンするための処理時間は、必要とされない。しかしながら、アクセスの後、メモリバンクで、メモリページをオープンに維持するか、またはオープンにしておくことにより、トレードオフが存在する。例えば、CPUが、同じメモリバンク内の異なるメモリページからのデータにアクセスすることを望むならば、2つのタスクではなく、3つのタスクが実行されなければならない。まず、メモリバンク内の現在オープンのメモリページが、クローズされなければならない。次に、アクセスされるべき所望のメモリ位置を含む新しいメモリページが、オープンされなければならない。次いで、メモリページ内の所望のメモリ位置がアクセスされる。新しいメモリページがオープンされ得る前に、前にアクセスされたメモリページをクローズする際に生じる追加の処理時間は、CPUに対しては、低減される帯域幅をもたらし、MIPSを低減する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリコントローラを、アクセスの後で、メモリページをオープンに維持するか、またはオープンにしておくように設定することは、例として、あるメモリ用途、特に、ビデオ、グラフィックス、およびディスプレイのメモリ用途などの連続するメモリ位置にアクセスすることを必要とするもの、ならびに他の用途に対して理想的である場合がある。これらの筋書では、連続するメモリアクセスは、所与のメモリバンク内の同じメモリページに対するものであるため、メモリページのクローズは、より少ない頻度で発生する。しかしながら、メモリコントローラを、メモリアクセスの後で、メモリページをオープンに維持するか、またはオープンにしておくように設定することは、例えばキャッシュが可能なCPUのアクセスなどの、他のメモリアクセス用途に対しては、理想的ではない場合がある。これは、連続するメモリアクセスが、所与のメモリバンク内の同じメモリページに対するものになる見込みが低いためである。このように、新しいメモリページがオープンされ得る前に、前にアクセスされたメモリページをクローズする際に必要とされる、増加される処理時間により、メモリアクセス時間は増加されることになる。
【課題を解決するための手段】
【０００５】
発明を実施するための形態で開示される実施形態は、メモリアクセスコントローラ、ならびに関係するシステムおよび方法を含む。メモリコントローラは、所与のメモリシステム内の複数のメモリバンクのそれぞれに対して、別々のメモリアクセス設定を提供するように設定可能である。各メモリバンクに対して提供されるメモリアクセス設定は、メモリアクセスの後で、各メモリバンク内の少なくとも1つのメモリページを、オープンに維持するか、もしくはオープンにしておくこと、またはクローズすることのいずれかであり得る。このようにして、メモリアクセス設定は、各メモリバンクに格納されるデータのタイプに基づいて、メモリアクセス時間を最適化するために、個別化された基準で、各メモリバンクに対して提供され得る。例えば、メモリバンクが、同じメモリページ内のメモリ位置に対する連続するメモリアクセスを頻繁に必要とするデータを格納するように設定されるならば、メモリバンクは、各アクセスの後で、そのメモリページをオープンにしておくように設定され得る。メモリページは、同じメモリページに対する連続するアクセスの間に再オープンされる必要がなくなるので、メモリアクセス時間の節約が実現されることになる。しかしながら、メモリバンクが、異なるメモリページ内のメモリ位置に対する連続するメモリアクセスを頻繁に必要とするならば、そのメモリバンクは、各アクセスの後で、そのメモリページをクローズするように設定され得る。このようにすると、同じメモリバンク内の異なるメモリページに対するメモリアクセスを実行するために、前のアクセスされたメモリページをまずクローズしなければならないことによる、メモリアクセス時間のペナルティは生じない。
【０００６】
発明を実施するための形態における実施形態では、各メモリバンクに対して静的な、または動的な設定が提供され得る。静的な設定は、メモリバンクに対して、各アクセスの後で、そのメモリページを、オープンされている状態に維持するか、もしくはオープンされている状態にしておくこと、またはそれらをクローズすることのいずれかのために、メモリアクセス設定を提供することを含む。静的な設定は、初期化またはスタートアップの際に、メモリバンクに対して提供され得る。静的な設定は、交替なしに、実行時間中は、所定の状態にしておかれてよい。メモリコントローラは、実行時間中のメモリバンクの動的な設定を可能にするように設定され得る。動的な設定は、メモリアクセス時間をさらに最適化するために、特定のメモリバンクに対するメモリアクセス設定を変更することを含む。動的な設定は、メモリアクセス設定の一時的な取り消し、または(少なくとも次の永続的な設定変更までの)永続的な変更のいずれかを含むことができる。メモリアクセス設定の一時的な取り消しは、結果として、自動的に、前の静的なメモリアクセス設定に戻る設定となることになる。
【０００７】
動的なメモリアクセス設定は、所与のメモリページに対する将来の未処理の(pending)メモリアクセスの調査(review)、または、所与のメモリバンクに対する将来のメモリアクセスが、同じメモリページに対するものになりそうであるか否かの予測に基づいて、実行され得る。この事例では、調査または予測に応じて、所与のメモリバンクに対するメモリアクセス設定を動的に変更することにより、さらなるメモリアクセス時間の節約が実現され得る。
【図面の簡単な説明】
【０００８】
【図１】例示的なプロセッサベースのシステムの一部としての、例示的な設定可能なメモリコントローラおよび関連するメモリの図である。
【図２】所与のメモリバンクでの例示的なメモリページアクセスを説明する表図であり、それによって、メモリページをオープンにしておく設定が、メモリバンクに対して提供されるときに、メモリアクセス時間の節約が実現される。
【図３】所与のメモリバンクでの例示的なメモリページアクセスを説明する表図であり、それによって、メモリページをオープンにしておく設定が、メモリバンクに対して提供されるときに、メモリアクセス時間のペナルティが実現される。
【図４】メモリバンク内のメモリページがオープンであるかどうかを判定するために、メモリコントローラ内に設けられる、例示的な内部レジスタの図である。
【図５】メモリバンクのそれぞれに対するメモリアクセス設定を格納するために、メモリコントローラ内に設けられる、例示的な内部レジスタの図である。
【図６】メモリバンクに対してメモリコントローラ内に提供されたメモリアクセス設定に基づいて、メモリバンクのメモリページ内のデータにアクセスするための、例示的な処理を説明するフローチャートである。
【図７】メモリバンクに対してメモリコントローラ内に提供されたメモリアクセス設定に基づいて、メモリバンクのメモリページ内のデータにアクセスするための、例示的な処理を説明するフローチャートである。
【図８】動的なメモリアクセス設定がメモリバンクに対して提供され得る、メモリバンクのメモリページ内のデータにアクセスするための、別の例示的な処理を説明するフローチャートである。
【図９】動的なメモリアクセス設定がメモリバンクに対して提供され得る、メモリバンクのメモリページ内のデータにアクセスするための、別の例示的な処理を説明するフローチャートである。
【図１０】動的なメモリアクセス設定がメモリバンクに対して提供され得る、メモリバンクのメモリページ内のデータにアクセスするための、別の例示的な処理を説明するフローチャートである。
【図１１】メモリコントローラに対する例示的なメモリ要求待ち行列の図である。
【図１２】メモリコントローラに対する例示的なメモリ要求待ち行列の図である。
【図１３】予測ベースの動的なメモリアクセス設定が、メモリバンクに対して提供され得る、メモリバンクのメモリページ内のデータにアクセスするための、別の例示的な処理を説明するフローチャートである。
【図１４】動的なメモリアクセス設定をイネーブルするか、またはディスエーブルするために、メモリコントローラ内に設けられる、例示的な内部レジスタの図である。
【図１５】メモリバンクを基準として、動的なメモリアクセス設定をイネーブルするか、またはディスエーブルするために、メモリコントローラ内に設けられる、例示的な内部レジスタの図である。
【図１６】システムメモリ内に設けられる、各メモリバンクに対してメモリアクセス設定を提供するように設定される、図1のメモリコントローラを含む、例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【０００９】
次に、図面を参照して、本開示のいくつかの例示的な実施形態が記載される。「例示的」という単語は、本明細書では、「例、事例、または例示」を意味するために使用される。本明細書で「例示的」と記載されるどの実施形態も、必ずしも、他の実施形態より好適であるか、または有利であると解釈されるべきであるということではない。
【００１０】
発明を実施するための形態で開示される実施形態は、メモリアクセスコントローラ、ならびに関係するシステムおよび方法を含む。メモリコントローラは、所与のメモリシステム内の複数のメモリバンクのそれぞれに対して、別々のメモリアクセス設定を提供するように設定可能である。各メモリバンクに対して提供されるメモリアクセス設定は、メモリアクセスの後で、各メモリバンク内の少なくとも1つのメモリページを、オープンに維持するか、もしくはオープンにしておくこと、またはクローズすることのいずれかであり得る。このようにして、メモリアクセス設定は、各メモリバンクに格納されるデータのタイプに基づいて、メモリアクセス時間を最適化するために、個別化された基準で、各メモリバンクに対して提供され得る。例えば、メモリバンクが、同じメモリページ内のメモリ位置に対する連続するメモリアクセスを頻繁に必要とするデータを格納するように設定されるならば、メモリバンクは、各アクセスの後で、そのメモリページをオープンにしておくように設定され得る。メモリページは、同じメモリページに対する連続するアクセスの間に再オープンされる必要がなくなるので、メモリアクセス時間の節約が実現されることになる。しかしながら、メモリバンクが、異なるメモリページ内のメモリ位置に対する連続するメモリアクセスを頻繁に必要とするならば、そのメモリバンクは、各アクセスの後で、そのメモリページをクローズするように設定され得る。このようにすると、同じメモリバンク内の異なるメモリページに対するメモリアクセスを実行するために、前のアクセスされたメモリページをまずクローズしなければならないことによる、メモリアクセス時間のペナルティは生じない。
【００１１】
図1は、例示的なメモリシステム10を説明する。メモリシステム10は、メモリシステム10内の各メモリバンクに対して、別々のメモリアクセス設定を提供するように設定される、設定可能なメモリコントローラ12を使用する。メモリコントローラ12は、メモリ14を往来するデータのフローに責任を負う。説明される例では、メモリコントローラ12は、2つのダイナミックメモリチップ14A、14Bを往来するデータのフローを制御することに責任を負う。この例では、各メモリチップ14A、14Bは、DDR0およびDDR1と名付けられた、16ビットのダブルデータレート(DDR)のダイナミックランダムアクセスメモリ(DRAM)チップである。これに関連して、2つのDDR DRAMメモリチップ14A、14Bを駆動するために使用されるメモリコントローラ12は、DDRメモリコントローラであり得る。DDRメモリコントローラは、シングルデータレート(SDR)メモリコントローラよりも複雑である場合があるが、それらは、クロックレートまたはメモリセルに対するバス幅を増大することなしに、2倍のデータが転送されることを可能にする。しかしながら、メモリチップ14A、14Bは、任意のタイプのダイナミックメモリであり得る。例は、SDRAM、DDR、DDR2、DDR3、MDDR(モバイルDDR)、LPDDRおよびLPDDR2を含む。メモリコントローラ12は、そのメモリチップと互換性のある任意のタイプのメモリコントローラであり得る。さらには、説明されるようなメモリコントローラ12は、マザーボードもしくは他のプリント回路基板(PCB)上に別々のデバイスとして設けられ、または、少なくとも1つのCPUもしくは半導体ダイ上に統合される場合があり、それが、メモリのレイテンシを低減する場合がある。
【００１２】
メモリコントローラ12は、メモリバス16を介してメモリチップ14A、14Bを往来するデータのフローを制御する。この例では、メモリバス16は、各メモリチップ14A、14Bに対して1つの、2つのチップセレクト(CS0、CS1)18、20を含む。チップセレクト18、20は、アクセスされるべき所望のメモリ位置を含むメモリチップ14A、14Bをイネーブルするために、メモリコントローラ12により選択的にイネーブルされる。メモリコントローラ12は、データの衝突を回避するために、一度に、メモリチップ14A、14Bの1つのみをイネーブルし、それにより、ただ1つのDDR DRAMメモリチップ14A、14Bが、同時に、データをデータバス(DATA)22上にアサートする。メモリバス16はさらに、メモリ14に、またはメモリ14から、データを書き込むこと、または読み出すことのいずれかのために、メモリコントローラ12が、メモリチップ14A、14B内でアクセスされるメモリアドレスを制御することを可能にする、アドレス/制御バス(ADDR/CTRL)24を含む。メモリバス16はさらに、メモリアクセスのために、メモリコントローラ12とメモリチップ14A、14Bとの間のタイミングを同期させるためのクロック信号(CLK)26を含む。この例では、データは、DDR DRAMメモリチップ14A、14Bに対するメモリシステム10のクロック信号(CLK)26の立ち上がりおよび立ち下がりのアクセスに基づいて転送される。
【００１３】
各DDR DRAMメモリチップ14A、14Bは、全体として要素28と呼ばれる、複数のメモリバンクを含む。メモリバンクは、メモリの論理ユニットであり、そのサイズは、システムのCPUにより決定される。図1の説明される例では、DDRメモリチップ14A、14Bは16ビットであり、これは、それらが、16ビットCPUとの使用のために設計され、メモリバンク28に、同時に16ビットの情報を提供するように要求することを意味する。説明される例では、各DDR DRAMメモリチップ14A、14Bは、4つのメモリバンクを含む。DDR DRAMメモリチップ(DDR0)14Aに対する、4つのメモリバンク(B0、B1、B2、およびB3)28A、28B、28C、28Dのみが、図1で説明される。しかしながら、DDR DRAMメモリチップ(DDR1)14Bもまた、同様のメモリバンクおよびメモリページを含む。したがって、メモリバンクおよびメモリページは、本明細書では、全体として、各DDR DRAMメモリチップ14A、14Bに対して、それぞれ要素28および29と呼ばれる。
【００１４】
各メモリバンク28は、「行」および「列」を備える、格子状のパターンに組織化される。DDR DRAMメモリチップ14A、14Bに格納されるデータは、固有の情報の行および列の座標により定義されるブロックに入る。各列は、メモリページ29として知られている。DDR DRAMメモリチップ14A、14B内のメモリ14にアクセスするために、メモリコントローラ12は、チップセレクト(CS0またはCS1)18、20をアサートし、ADDR/CTRLバス24上のアドレスにより示されるような、あるメモリページ29を活性化するメモリページオープンコマンドを発行する。このコマンドは、典型的には、数クロックサイクルを必要とする。所望のメモリページ29がオープンされる後で、所望のメモリ位置内のデータにアクセスするために、列アドレス30が、「読み出し」または「書き込み」のいずれかとして、メモリコントローラ12により発行される。アクセスが、メモリバンク28内の別のメモリページ29に対して要求されるとき、メモリコントローラ12は、現在活性化されているメモリページ29を非活性化またはクローズしなければならず、それは、典型的には、数クロックサイクルを必要とする。このため、メモリチップ14A、14B内のデータに対するメモリアクセスは、通常は、データの書き込みまたは読み出しのために、所望のメモリ位置を含むメモリページ29をオープンすること、および、次いで、メモリアクセスが完了される後で、メモリページ29をクローズすることを必要とする。このようにして、異なるメモリページ29が、メモリコントローラ12により、後でアクセスされ得る。
【００１５】
連続するメモリアクセスが、所与のメモリバンク28内の同じメモリページ29に対して行われるならば、メモリページ29が、第1のメモリアクセスの後でオープンに維持された場合、クロックサイクルは節約され得る。このように、同じメモリページ29に対する後続のメモリアクセスは、メモリページ29を再オープンすることを必要としなくなる。全体のクロックサイクルの節約の量は、同じメモリページ29に対する連続するメモリアクセスの数により決まる。これは、図5に関連して、例により、以下でより詳細に考察されることになる。しかしながら、メモリアクセスが、異なるメモリページ29に対して頻繁に行われるならば、アクセスの後で、メモリページ29をオープンに維持すること、またはオープンにしておくことは、結果として、クロックサイクルのペナルティになる場合がある。これは、後続のメモリアクセスのメモリページ29がオープンされ得る前に、メモリコントローラ12は、前にオープンにしておかれたメモリページ29をまずクローズしなければならないことになるためである。クロックサイクルのペナルティの量は、異なるメモリページ29に対する連続するメモリアクセスの数により決まる。これは、図6に関連して、例により、以下でより詳細に考察されることになる。
【００１６】
本明細書に記載される実施形態によれば、メモリコントローラ12は、メモリバンク28のそれぞれに対して個別に、メモリアクセス設定を提供するように設定可能である。メモリアクセス設定は、特定のメモリバンク28からアクセスされるメモリページ29が、アクセスの後で、オープンにしておかれることになっているか、それともクローズされることになっているかを示すために、メモリコントローラ12に格納されるか、または、アクセス可能な設定である。これに関連して、メモリシステム10に対する総合のメモリアクセス時間の節約は、各メモリバンク28に対するメモリアクセス設定を可能にしないメモリシステム10よりも実現され得る。例えば、図1のメモリシステム10内のDDR DRAMメモリチップ14Aは、そのメモリバンク28内に、連続するメモリアクセスが同じメモリページ29内のメモリ位置に対するアクセスを頻繁に含まないランダムメモリアクセスを典型的には必要とする、システムデータを格納するように設計される場合がある。例は、キャッシュアクセスを含む、CPUシステムメモリを含む。この筋書では、各アクセスの後で、メモリページ29をクローズするために、DDR DRAMメモリチップ14Aのメモリバンク28に対してメモリアクセス設定を提供することは、所与のメモリバンク28内の新しいメモリページ29がアクセスされ得る前に、前にアクセスされたメモリページ29をまずクローズしなければならないメモリコントローラ12に起因する、メモリアクセスのペナルティを防ぐことになる。他方では、DDR DRAMメモリチップ14Bは、同じメモリページ29が頻繁に連続してアクセスされる、アプリケーション、または、ビデオ、グラフィックス、もしくはディスプレイベースのデータなどの他のタイプのデータを格納するように設計され得る。この筋書では、DDR DRAMメモリチップ14Bのメモリバンク28に対して、各アクセス後に、そのメモリページ29をオープンにしておくために、メモリアクセス設定を提供することは、結果として、メモリアクセス時間の節約になることになる。これは、同じメモリページ29に対する連続するメモリアクセスが、メモリページ29に、アクセスごとにオープンされることを要求しなくなるためである。
【００１７】
前述の例は、所与のDDR DRAMメモリチップ14A、14B内のすべてのメモリバンク28に対して、同じメモリアクセス設定を提供するが、異なるメモリアクセス設定が、同じDDR DRAMメモリチップ14A、14B内の各メモリバンク28に対して提供され得るということに留意されたい。これは、図2および3で説明されるメモリアクセスの例により、さらに説明される。
【００１８】
図2および3は、メモリ14内の各メモリバンク28に対してメモリアクセス設定を提供するように設定可能であるメモリコントローラ12により実現され得る、メモリアクセス時間の節約のさらなる例を提供する。第1のメモリアクセス例36が、図2で説明される。その中で説明されるように、メモリバンクB0(28A)に対する一連の八(8)個のメモリアクセス要求70が、すべて示される。最初の4個のメモリアクセス要求は、すべてメモリページ0に対するものである。最後の4個のメモリアクセス要求は、すべてメモリページ1に対するものである。メモリバンクB0が、メモリコントローラ12により、各アクセスの後で、メモリページをクローズするように設定されるならば、各メモリアクセスは、アクセスされるべきメモリ位置に対応するメモリページ29をオープンまたはクローズするために、この例では、結果として6クロックサイクルとなることになる。しかしながら、メモリバンクB0が、各アクセスの後で、そのメモリページ29をオープンに維持するか、またはオープンにしておくように設定されるならば、同じメモリページ29が、連続するメモリアクセス要求の間にアクセスされたか否かに応じて、各メモリアクセスは、結果として、異なるメモリアクセス時間となることになる。例えば、第1のメモリアクセスは、六(6)サイクルを必要とすることになり、三(3)サイクルは、アクセスされるべきメモリ位置に対応するメモリページ29をオープンするためのものであり、三(3)サイクルは、オープンされたメモリページ29内のメモリ位置にアクセスするためのものである。しかしながら、次の3個のメモリアクセス要求は、メモリページ0が、メモリアクセス設定に従って、メモリバンクB0内でオープンされたままであるので、三(3)クロックサイクルのみを必要とすることになり、結果として、三(3)クロックサイクルのアクセスの節約になる。
【００１９】
異なるメモリページ29がアクセスされるときにのみ、メモリアクセスのペナルティが発生することになる。図2のメモリアクセス要求番号5で示されるように、メモリページ1がまずアクセスされるときに、九(9)クロックサイクルが必要とされる。これは、メモリコントローラ12が、それがメモリページ1をオープンすることができる前に、メモリページ0をクローズしなければならないためである。各メモリページをオープンすることは、この例では、全体の六(6)クロックサイクルに対して、三(3)クロックサイクルを必要とする。メモリ位置に対するアクセスは、全体の九(9)クロックサイクルに対して、別の三(3)クロックサイクルをもたらす。したがって、各アクセスの後で、メモリページ29をクローズするように、メモリバンクB0に対するメモリアクセス設定が提供されていたならば必要とされる六(6)クロックサイクルと比較して、三(3)クロックサイクルのペナルティが、結果として発生する。しかしながら、メモリページ0は、後で、3回連続でアクセスされるので、メモリページ1は、オープンにしておかれたため、三(3)クロックサイクルのメモリアクセスの節約が、各アクセスに対して実現される。したがって、メモリバンクB0に対するメモリアクセス要求は、結果として、同じメモリページ29に対するものである連続するメモリアクセスとなるので、メモリバンクB0に対して、各アクセスの後で、そのメモリページ29をオープンに維持するために、メモリアクセス設定を提供することは、この例でのメモリアクセス時間の観点から、より有利である。図2でのメモリアクセス例36を要約すると、メモリバンクB0に対して、各アクセスの後で、そのメモリページ29をクローズするのではなく、各アクセスの後で、そのメモリページ29をオープンに維持するために提供されるメモリアクセス設定により、十五(15)クロックサイクルの全体のメモリアクセス時間の節約が実現される。
【００２０】
図3は、別のメモリアクセス例38を説明し、それは、メモリバンク28に対する一連の九(9)個のメモリアクセス要求72を含み、各アクセスの後で、メモリページ29をオープンに維持するために、メモリアクセス設定を提供することにより、総合のメモリアクセスのペナルティが発生する。説明されるように、メモリバンクB1は、9回アクセスされる。説明されるように、連続するメモリアクセス要求は、メモリバンクB1内の異なるメモリページ29にアクセスすることを頻繁に必要とする。したがって、メモリコントローラ12は、新しいメモリアクセスが実行され得る前に、前にオープンであるメモリページ29をクローズするように、より頻繁に要求され、それによって、結果として、九(9)クロックサイクル、および、三(3)クロックサイクルのメモリアクセスのペナルティとなる。しかしながら、メモリアクセス設定が、メモリバンクB1に対して、各アクセスの後で、メモリページをクローズするために提供されるならば、9個のメモリアクセス要求に対して、より少ない総合のクロックサイクルが必要とされることになる。この事例での各メモリアクセス要求は、六(6)クロックサイクルをもたらすことになり、したがって、メモリアクセスの節約は実現されないが、メモリアクセスのペナルティもまた実現されないことになる。このように、この例では、メモリバンクB1に対するメモリアクセス要求は、頻繁に、結果として、異なるメモリページ29に対する連続するメモリアクセスとなるので、各アクセスの後で、メモリページをクローズするように、メモリバンクB1に対するメモリアクセス設定を提供することは、メモリアクセス時間の観点から、より有利である。図3での例を要約すると、メモリバンクB1に対して、各アクセスの後で、そのメモリページ29をオープンに維持するためではなく、各アクセスの後で、そのメモリページ29をクローズするために提供されるメモリアクセス設定により、十二(12)クロックサイクルの全体のメモリアクセス時間の節約が実現される。
【００２１】
所望のメモリ位置が、メモリバス16を介してアクセスされると、メモリコントローラ12は、アクセスされたデータをシステムバス31に提供することができる。説明される例では、システムバス31は、メモリバス16とは異なるバスである。しかしながら、他のシステムでは、メモリバス16およびシステムバス31は、同じバスである場合がある。アクセスされたデータは、メモリコントローラ12により、システムバス31を介して、プロセッサベースのシステム内の別の構成要素に提供される。図1の説明される例では、システムバス31は、アクセスされるべきメモリ位置のアドレス、および、メモリ14に書き込まれるべき任意のデータを受信する、アドレス/制御/書き込みデータ(ADDR/CTRL/W_DATA)バス32を含む。読み出しデータバス34(R_DATA)もまた、メモリ14から読み出されるデータを搬送するために設けられる。メモリコントローラ12は、メモリ14内の読み出しメモリ位置からのデータをR_DATAバス34上にアサートする。
【００２２】
図4および5は、メモリアクセスを制御し、メモリアクセス設定を設定するために、メモリコントローラ12内に設けられ得る、内部レジスタの例を説明する。具体的には、メモリアクセス設定は、各メモリバンク28に対して、その中のメモリページ29が、各メモリアクセスの後で、オープンにしておかれるか、またはそうではないかを制御するために提供される。図4で説明されるように、ページアドレス(PAGE_ADDR)レジスタ42およびページオープン(PAGE_OPEN)レジスタ44を含む、内部レジスタ40が設けられ得る。PAGE_ADDRレジスタ42は、メモリシステム10のメモリ14内に現在保持されている、メモリページ29の物理アドレスを含む。よく知られているように、PAGE_ADDRレジスタ42は、あるオペレーティングシステム用に、アドレステーブルの過剰な使用を回避するために、メモリコントローラ12内で使用される場合がある。PAGE_OPENレジスタ44は、所与のメモリバンク28内のメモリページ29がオープンであるかどうかを示す。
【００２３】
図5は、メモリコントローラ12の内部にある、バンクオープンページイネーブル(BANK_OPEN_PAGE_EN)レジスタ46の例を説明する。BANK_OPEN_PAGE_ENレジスタ46は、メモリバンク28に対する各メモリアクセスの後で、各メモリバンク28が、そのメモリページ29をオープンに維持するか否かを制御するように設定可能である。このようにして、および上記で考察されたように、メモリコントローラ12は、メモリバンク28に対するメモリアクセスの設計、およびあり得る使用法、および特徴に基づいて、各メモリバンク28に対して個別に、設定を提供することができる。説明されるように、BANK_OPEN_PAGE_ENレジスタ46は、この例では8ビットレジスタである。これは、図1でのメモリシステム10のDDR DRAMメモリチップ14A、14B内に設けられる、全体で8個のメモリバンク28が存在するためである。バンクB0〜B3は、DDR DRAMメモリチップ14A、14Bのそれぞれに含まれる。メモリアクセス設定は、第1のメモリチップ14A内のメモリバンク28のそれぞれに対して、ビット位置七(7)から四(4)に提供される。メモリアクセス設定は、第2のDDR DRAMメモリチップ14B内のメモリバンク28のそれぞれに対して、ビット位置三(3)からゼロ(0)に提供される。所与のメモリバンク28に対して、BANK_OPEN_PAGE_ENレジスタ46内のビットに格納される論理的「1」は、そのメモリバンク28に対するメモリページ29が、各アクセスの後で、オープンにしておかれることを示す。所与のメモリバンク28に対して、BANK_OPEN_PAGE_ENレジスタ46内のビットに格納される論理的「0」は、そのメモリバンク28に対するメモリページ29が、各アクセスの後で、クローズされることを示す。
【００２４】
DDR DRAMメモリチップ14A、14Bに対するメモリアクセス設定は、メモリコントローラ12内のBANK_OPEN_PAGE_ENレジスタ46のビットをセットするために、適切なコマンドを発行することにより提供され得る。コマンドは、システムバス31を介して、メモリコントローラ12に発行される。これは、CPU(図示せず)または他のプロセッサもしくは電子機器が、DDR DRAMメモリチップ14A、14Bに対するメモリアクセス設定を提供することを可能にする。これはさらに、メモリアクセス設定が、メモリシステム10の設計者により、BANK_OPEN_PAGE_ENレジスタ46に対してビットをセットするソフトウェアをプログラミングすることによって、所望のように提供されることを可能にする。メモリアクセス設定は、スタートアップもしくはパワーアップで、実行時間中に、または他の任意の所望の時間にセットされ得る。メモリアクセス設定は、スタートアップまたはパワーアップで、デフォルトのセッティングを有する場合がある。デフォルトのセッティングは、各アクセスの後で、メモリページをクローズすること(例えば、BANK_OPEN_PAGE_ENレジスタ46が「00000000」に等しいか、または「00000000」にセットされる)、または、各アクセスの後で、メモリページをオープンにしておくこと(例えば、BANK_OPEN_PAGE_ENレジスタ46が「11111111」に等しいか、または「11111111」にセットされる)、のいずれかであり得る。メモリアクセス設定は、メモリアクセス設定が、BANK_OPEN_PAGE_ENレジスタ46に永続的に格納されたままであるということを意味する静的な設定として設定される場合がある。メモリアクセス設定の静的な制御、および静的なメモリアクセス設定を使用するメモリアクセスの例が、次に考察されることになる。
【００２５】
図6は、BANK_OPEN_PAGE_ENレジスタ46により提供されるメモリアクセス設定を使用する、メモリバンク28内のメモリページ29に対する、メモリコントローラ12による例示的なメモリアクセスのフローチャートを説明する。この例では、BANK_OPEN_PAGE_ENレジスタ46は、メモリバンク28のそれぞれに対して、各アクセスの後で、そのメモリページ29を、オープンにしておくこと、またはクローズすることのいずれかとして、すでに設定されている。メモリコントローラ12は、メモリページ29に対するアクセスの後で、所与のメモリバンク28内のメモリページ29をオープンにしておくか、それともクローズするかを判定するために、BANK_OPEN_PAGE_ENレジスタ46を参照する。処理は、メモリコントローラ12のマイクロコードで実施され得る。例示的なメモリアクセス処理が、フローチャート内の順次的なタスクとして提供されるが、これらの動作は、典型的には、可能であれば、複数のメモリアクセス要求を処理するためのパイプラインアーキテクチャで、メモリコントローラ12により実行されるということに留意されたい。
【００２６】
この例では、処理は、メモリコントローラ12により、まず、メモリ14内の特定のメモリアドレスに対するメモリアクセス要求を受信することを開始する(ブロック50)。メモリアクセス要求は、読み出し要求、または書き込み要求のいずれかであり得る。メモリコントローラ12は、前に記載されたような、システムバス31を介して、アクセスされるべきメモリアドレスを受信する。メモリアクセス要求が、データを書き込むことであるならば、メモリコントローラ12はさらに、メモリ14の受信されたメモリアドレスに書き込まれるべきデータを、システムバス31を介して受信する。
【００２７】
メモリコントローラ12は、どのメモリバンク28、およびメモリバンク28内のメモリページ29が、メモリアクセス要求で受信されたメモリアドレスに対応するかを判定する(ブロック52)。これは、その結果、メモリコントローラ12が、メモリ要求の所望のメモリ位置を含むDDR DRAMメモリチップ14A、14Bに対して、正しいチップセレクト(CS)をイネーブルすることができるということである。メモリコントローラ12はさらに、この情報を、アクセスされるべきメモリ位置に対応するDDR DRAMメモリチップ14A、14B内の正しいメモリページ29および列を活性化するために使用する。次いで、メモリコントローラ12は、そのメモリページ29に関するものであるアクセスされるべきメモリ位置を含むメモリバンク28に対して提供されるメモリアクセス設定が、各アクセスの後で、オープンにしておかれることになっているか、またはクローズされることになっているかを判定する(判定54)。メモリコントローラ12は、これに関連して、BANK_OPEN_PAGE_ENレジスタ46を参照する。各アクセスの後で、クローズされることになっているならば、これは、メモリ位置に対応するメモリページ29は、メモリページ29内のメモリ位置がアクセスされ得る前に、まずオープンされるということを意味する。これに関連して、図7で説明されるように、メモリコントローラ12は、アクセスされるべきメモリ位置に対応するメモリページ29をオープンする(ブロック56)。PAGE_OPENおよびPAGE_ADDRレジスタ44、42は、それに応じて、現在オープンのメモリページ29を示すために更新される(ブロック58)。次いで、メモリコントローラ12は、オープンされたメモリページ29に要求されるメモリ位置に直接アクセスする(ブロック60)。次いで、メモリコントローラ12は、アクセスされたメモリ位置に対する、現在オープンのメモリページ29をクローズする(ブロック62)。PAGE_OPENおよびPAGE_ADDRレジスタ44、42は、メモリページ29がもはやオープンではないことを示すために、再度更新される(ブロック64)。次いで、メモリアクセス要求処理は、この特定のメモリアクセス要求に関して終了する(ブロック66)。1つまたは複数の他のメモリアクセス要求が、メモリコントローラ12のパイプラインで実行し続けている場合がある。
【００２８】
しかしながら、メモリコントローラ12が、アクセスされるべきメモリ位置を含むメモリバンク28に対して、各アクセスの後で、オープンにしておかれるように、メモリアクセス設定が提供されていると、(BANK_OPEN_PAGE_ENレジスタ46により)判定するならば(判定54)、メモリコントローラ12は、メモリ位置を含むメモリページ29をまずオープンしなければならないということなしに、所望のメモリ位置に直接アクセスすることができる場合がある。これは、結果として、メモリアクセス時間の節約になることになる。これに関連して、図6で説明されるように、メモリコントローラ12は、アクセスされるべきメモリ位置に対応するメモリページ29が、すでにオープンされているかどうかを判定する(判定68)。PAGE_ADDRおよびPAGE_OPENレジスタ42、44が、これに関連して参照される。アクセスされるべきメモリ位置に対応するメモリページ29が、すでにオープンされているならば、メモリコントローラ12は、その後にメモリページ29をクローズすることなしに、要求されるメモリ位置に直接アクセスし(ブロック70)、メモリアクセス要求は、終了する(ブロック72)。PAGE_OPENおよびPAGE_ADDRレジスタ44、42は、アクセスされたメモリページ29がオープンのままであるので、更新されない。
【００２９】
メモリコントローラ12は、この事例では、メモリ位置にアクセスする前に、アクセスされるべきメモリ位置を含むメモリページ29をまずオープンする必要がなかったため、メモリアクセスは、メモリコントローラ12により、他の方法で必要とされることになるよりも少ないクロックサイクルで行われる。したがって、この例では、メモリコントローラ12は、メモリ位置がアクセスされ得る前に、メモリページ29をまずオープンする必要がないことになるため、同じメモリページ29に対する連続するメモリアクセスは、結果として、メモリアクセス時間の節約になることになる。例として、メモリページ29をオープンすることが、メモリコントローラ12に対してクロックサイクルを必要とするならば、同じメモリページ29に対する連続するメモリアクセスの間で、3クロックサイクルのアクセス時間の節約が実現され得る。メモリシステム10により使用されるメモリアクセスに対して実現され得る、メモリアクセス時間の節約およびペナルティは、図2および3での例により、前に考察かつ説明された。
【００３０】
メモリコントローラ12が、アクセスされるべきメモリ位置に対応するメモリページ29が、すでにオープンされてはいないと判定するならば(判定68)、アクセスされるべきメモリ位置に対応しない別のメモリページ29が、現在オープンである可能性がある。PAGE_ADDRおよびPAGE_OPENレジスタ42、44が、これに関連して参照される。そうであるならば、メモリコントローラ12は、アクセスされるべきメモリ位置に対応する新しいメモリページ29がオープンされ得る(ブロック76)前に、メモリバンク28内の現在オープンされているメモリページ29を、まずクローズしなければならない(ブロック74)。PAGE_ADDRおよびPAGE_OPENレジスタ42、44は、新しくオープンされたメモリページ29を格納するために更新される(ブロック78)。次いで、メモリコントローラ12は、アクセスされるべきメモリ位置に直接アクセスすることができる(ブロック70)。この例では、同じメモリバンク28内の異なるメモリページ29に対して、2つの連続するメモリアクセス要求が行われた。メモリコントローラ12は、前にオープンされたメモリページ29をクローズし、次いで、アクセスされるべきメモリ位置に対応する新しいメモリページ29をオープンする処理時間およびクロックサイクルを費やさなければならないので、メモリアクセス時間は増加される。例として、メモリページ29をクローズすることが、3クロックサイクルを必要とし、メモリページ29をオープンすることが、3クロックサイクルを必要とするならば、異なるメモリページ29に対する連続するメモリアクセスの間で、3クロックサイクルのアクセス時間のペナルティが現実のものにされる。
【００３１】
別の実施形態では、メモリコントローラ12は、メモリアクセス時間をさらに最適化するために、所与のメモリバンク28に対するメモリアクセス設定を動的に変更するか、または取り消す能力を有するように設定される。メモリコントローラ12は、実行時間中のメモリバンク28の動的な設定を可能にするように設定され得る。動的な設定は、メモリアクセス時間をさらに最適化するために、特定のメモリバンク28に対するメモリアクセス設定を変更することを含む。以下でより詳細に考察されることになるように、メモリコントローラ12は、メモリコントローラ12のメモリアクセス要求待ち行列内の、やがて来る未処理のメモリアクセス要求に基づいて、特定のメモリバンク28に対するメモリアクセス設定の変更または取り消しのいずれを行うかを決定することができる。例えば、所与のメモリバンク28に対する次の予定されたメモリアクセス要求が、同じメモリバンク28内の、メモリコントローラ12により現在アクセスされているメモリページ29とは異なるメモリページ29に対するものであるならば、メモリコントローラ12は、この状況を動的に認識することができる。これに応じて、メモリコントローラ12は、現在アクセスされているメモリページ29を、アクセスの後で、それをオープンにしておく代わりに、動的にクローズすることができる。このように、メモリコントローラ12は、同じメモリバンク28内の異なるメモリページ29に対するメモリアクセス要求が処理されるときに、現在アクセスされているメモリページ29を後でクローズするように求められていないことになる。動的ということは、メモリコントローラ12が、実際のメモリアクセス要求、または予測される将来のメモリアクセス要求のいずれかに基づいて、実行時間中に、メモリアクセス設定を認識し、取り消すか、もしくは変更するように設定されることが意味される。メモリコントローラ12は、メモリバンク28に対するメモリアクセス設定を変更することなしに、現在アクセスされているメモリページ29をクローズすることができ、それが、取り消しとなる。あるいは、メモリコントローラ12は、現在アクセスされているメモリページ29をクローズし、メモリアクセス設定レジスタ(例えば、BANK_OPEN_PAGE_ENレジスタ46)でメモリバンク28に割り当てられているビットを変更することにより、メモリバンク28に対するメモリアクセス設定を変更することができる。
【００３２】
図8〜10のフローチャートに移ると、動的なメモリアクセス設定の性能を含むメモリコントローラ12により実行される、例示的なメモリアクセス処理が説明される。メモリコントローラ12は、図6のブロック50〜54でまさしく提供されたように、システムバス31からメモリアクセス要求を受信し、要求のメモリ位置に対応するメモリバンク28に対して提供される静的なメモリアクセス設定に基づいて、要求を処理する(ブロック80〜84)。要求されるメモリアドレスを含むメモリバンク28が、そのメモリページ29がアクセスの後でクローズされるように設定されているならば(判定84)、処理は、次に、アクセスされるべきメモリページ29が、現在クローズされているかどうかを判定する(判定86)。このようにして、PAGE_ADDRおよびPAGE_OPENレジスタ42、44が参照される。これは、以下でさらに考察されるように、アクセスされるべきメモリページ29に対するメモリアクセス設定は、メモリアクセス設定の取り消しにより、前にオープンにしておかれている可能性があるためである。アクセスされるべきメモリページ29がクローズされているならば、メモリページ29は、アクセスされる前にまずオープンされる(ブロック88)。PAGE_OPENおよびPAGE_ADDRレジスタ44、42は、メモリページ29が現在オープンであることを示すために、更新される(ブロック90)。次いで、メモリ位置がアクセスされる(ブロック92)。
【００３３】
メモリコントローラ12は、未処理の、または将来のメモリアクセス要求に基づいて、動的なメモリアクセス設定を実行することができる。ある実施形態では、メモリページ29をクローズする前に、メモリコントローラ12は、まず、同じメモリバンク28に対する次の予定されたアクセスが、現在オープンの同じメモリページ29に対するものであるかどうかを判定する(図9、判定94)。そうであるならば、メモリページ29をクローズする代わりに、メモリページ29をオープンにしておくことによって、メモリアクセス設定を取り消すことにより、さらなるメモリアクセス時間の節約が実現される場合があり、それによって、処理を終了する(ブロック100)。図11では、メモリ要求待ち行列110に関して例が提供される。その中で説明されるように、メモリコントローラ12は、メモリ要求「C2」112での、メモリバンク1内のメモリ位置、メモリページ2に現在アクセスしているものとする。メモリコントローラ12が、メモリページ2をクローズする前に、メモリコントローラ12は、まず、メモリバンク1に対する次のアクセスが、同じメモリページ29に対するものであるか、それとも異なるメモリページ29に対するものであるかを判定するために、メモリ要求待ち行列110を調査する(図9、判定94)。図11のメモリ要求待ち行列110の例では、メモリページ1に対する次のアクセスは、メモリアクセス要求「C5」114で提供されるように、同じメモリページ2に対するものである。したがって、この場合には、メモリコントローラ12は、メモリページ29をオープンにしておくことにより、アクセスされたメモリページ29に対する、メモリアクセス後にページをクローズする設定を動的に取り消し、それによって、処理を終了する(ブロック100)。結果として、メモリページ29が、(例えば、図11でのメモリアクセス要求「C2」112の後で)クローズされ、次いで、後続のアクセスに関して(例えば、図11でのメモリアクセス要求「C5」114に対して)、再オープンされ、再度クローズされる場合の十二(12)クロックサイクルとは対照的に、メモリアクセス要求「C5」114での第2のアクセスの後で、メモリページ29が、オープンにしておかれるか、それともクローズされるかに応じて、それぞれ、六(6)または九(9)のいずれかのクロックサイクルが生じる。同じメモリバンク28に対する次のアクセスが、同じメモリページ29に対するものではないならば、メモリコントローラ12は、アクセスの後で、メモリページ29をクローズすることにより、静的なメモリアクセス設定に従い(図9、ブロック96)、PAGE_OPENおよびPAGE_ADDRレジスタ44、42を、それに応じて更新する(図9、ブロック98)。
【００３４】
図8に戻ると、アクセスされるべきメモリページ29を含むメモリバンク28が、各アクセスの後で、オープンにしておかれるための、メモリページに対するメモリアクセス設定を有するならば(判定84)、図10で説明されるように、メモリページ29がアクセスされる前に、メモリコントローラ12は、アクセスされるべきメモリページ29が、すでにオープンであるかどうかを判定する(判定120)。そうであるならば、メモリページ29をまずオープンしなければならないということなしに、メモリ位置が要求され得る(ブロック121)。これに関連して、メモリコントローラ12は、メモリバンク28内の異なるメモリページ29がオープンであるかどうかを判定する(判定122)。そうでないならば、これは、以下でより詳細に考察されることになるように、メモリコントローラ12が、先行するメモリアクセス要求の際に、アクセスされるべきメモリバンク28に対する、ページをオープンにしておくメモリアクセス設定を、前に取り消したということを意味する。メモリバンク28内の異なるメモリページ29がオープンであるならば(判定122)、現在オープンされているメモリページ29は、クローズされる(ブロック124)。その後、アクセスされるべきメモリページ29がオープンされ(ブロック126)、PAGE_OPENおよびPAGE_ADDRレジスタ44、42が、それに応じて更新される(ブロック128)。次いで、メモリページ29がオープンされる後で、メモリ位置が要求される(ブロック121)。
【００３５】
要求されるメモリ位置がアクセスされる(ブロック121)後で、メモリコントローラ12は、アクセスされたメモリページ29を有するメモリバンク28に対する、ページをオープンにしておくメモリアクセス設定が、取り消されるべきかどうかを判定する。同じメモリバンク28に対する次のメモリアクセス要求が、異なるメモリページ29に対するものであるならば、メモリコントローラ12は、アクセスされたメモリページ29を、それをオープンにしておく代わりにクローズするために、ページをオープンにしておく設定を取り消すことにより、さらなるクロックサイクルを節約することができる。そうしないと、メモリコントローラ12は、同じメモリバンク28内の後続の異なるメモリページ29をオープンする前に、アクセスされたメモリページ29をまずクローズしなければならないことになる。メモリコントローラ12は、同じメモリバンク28に対する、ただし異なるメモリページ29に対する、将来の、未処理のメモリアクセス要求が存在するかどうかを判定するために、メモリ要求待ち行列140を調査する(判定130)。そうであるならば、メモリコントローラ12は、アクセスされているメモリバンク28に対する、ページをオープンにしておくメモリアクセス設定を、動的に取り消し、現在アクセスされているメモリページ29を、アクセスの後でクローズし(ブロック132)、PAGE_OPENおよびPAGE_ADDRレジスタ44、42が、それに応じて更新される(ブロック134)。そうでないならば、現在アクセスされているメモリページ29は、オープンにしておかれ、処理は終了する(ブロック136)。これは、以下で考察される図12の例で、さらに説明される。
【００３６】
図12で説明されるように、待ち行列位置「C1」142で説明されるように、メモリバンク0内のメモリページ0が、メモリコントローラ12により、現在アクセスされている。メモリバンク0に対する次の知られているメモリアクセス要求は、待ち行列位置「C4」144で示されるように、メモリページ3に対するものである。したがって、同じメモリバンク28内の異なるメモリページ29に対する、次の、未処理のメモリアクセス要求が存在するので、メモリコントローラ12は、現在アクセスされているメモリページ29(すなわち、メモリバンク0内のメモリページ0)を、アクセスの後で、それをオープンにしておく代わりにクローズする(図10、ブロック132)。これは、この例では、三(3)クロックサイクルの代わりに六(6)クロックサイクルをもたらす。しかしながら、メモリバンク0内のメモリページ0が、動的なメモリアクセス設定の取り消しによりクローズされないならば、この例では、メモリバンク0内のメモリページ3がアクセスされるときに、九(9)クロックサイクルが生じることになる。
【００３７】
メモリコントローラ12は、メモリ要求待ち行列の調査の代わりに、予測分析に基づいて、動的なメモリアクセス設定を提供するように設定される場合がある。予測分析により、メモリコントローラ12は、メモリアクセス設定が取り消されるべきかどうかを判定するための将来のアクセスを予測するために、メモリバンク28およびそれらのメモリページ29に対するメモリアクセス要求の調査を実行する。将来のメモリアクセスを予測する任意の方法が、使用され得る。図13内のフローチャートは、それらのメモリページ29が、アクセスの後で、クローズされるように設定されている、メモリバンク28に対するある例を説明する。その中で説明されるように、処理が始まり(ブロック150)、メモリコントローラ12、または、メモリコントローラ12によりアクセス可能な別の回路もしくはコントローラは、メモリアクセス要求に対するトラフィックの統計を収集することを開始する(ブロック152)。この処理は、コマンドにより開始され、または、メモリコントローラ12のプログラミングによってイネーブルされ得る。カウントダウンタイマが開始され、メモリページ29のヒット、メモリページ29のミス、およびメモリページ29のオープンが、アクセスの後でメモリページ29をオープンに維持するように設定されている、一部またはすべてのメモリバンク28に関して収集される(ブロック154)。カウントダウンタイマは、任意の所望の開始カウントにセットされ得る。カウントダウンタイマが0に到達した(判定156)後で、各メモリバンク28に対する、メモリページ29のヒット、メモリページ29のミス、およびメモリページ29のオープンに関する統計の収集が停止される(ブロック158)。メモリページ29のミスは、メモリアクセス要求が、所与のメモリバンク28内の、所与のメモリバンク28に対する直前のメモリアクセス要求とは異なるメモリページ29に対して行われるときである。この場合では、直前のメモリアクセス要求の後で、メモリページ29をクローズすることが、結果として、最終的なメモリアクセス時間の節約になった。メモリページ29のヒットは、所与のメモリバンク28に対するメモリアクセス要求が、所与のメモリバンク28に対する直前のメモリアクセス要求と同じメモリページ29に対するものであるときである。この場合では、メモリページ29をオープンに維持することが、結果として、メモリアクセス時間の節約になったであろう。
【００３８】
所与のメモリバンク28に関して、結果としてメモリページ29のヒットとなるメモリアクセスのトランザクションの割合が、あるしきい値量だけ、結果としてメモリページ29のオープンとなるメモリアクセスのトランザクションの割合よりも大きいならば(判定160)、その所与のメモリバンク28に対するメモリアクセス設定は、アクセスの後で、そのメモリページ29をオープンに維持するように設定される(ブロック162)。言い換えれば、所与のメモリバンク28に対するメモリアクセス要求の履歴が、所与のメモリバンク28に対する将来のアクセスを予測するために、および、所与のメモリバンク28に関するメモリページ29をオープンに維持する設定が、結果として最終的なメモリアクセス時間の節約になり得るかどうかを予測するために、使用される。所与のメモリバンク28に関して、結果としてメモリページ29のヒットとなるメモリアクセスのトランザクションの割合が、あるしきい値量だけ、結果としてメモリページ29のオープンとなるメモリアクセスのトランザクションの割合よりも大きくないならば(判定160)、所与のメモリバンク28に対する、アクセスの後でメモリページ29をクローズする設定は、変更されない。
【００３９】
あるいは、または、さらには、アクセスの後で、メモリページ29をオープンに維持するように設定されるメモリバンク28に対して、メモリコントローラ12は、メモリバンク28に対するメモリアクセス設定が、アクセスの後で、メモリページ29をクローズするために取り消されるべきかどうかを判定するために、同様の分析を実行することができる。これに関連して、処理は、同じ処理150〜158を必要とする。しかしながら、所与のメモリバンク28に対して、メモリページ29のヒットの割合よりも大きい、結果としてメモリページ29のミスとなるメモリアクセスのトラフィックの割合が判定される。結果としてメモリページ29のミスとなるメモリアクセスのトラフィックの割合が、より大きいならば、メモリコントローラ12は、(ブロック162に対する置換として)所与のメモリバンク28に対するメモリアクセス設定を、アクセスの後で、メモリページ29をクローズすることに変更する。そうでないならば、所与のメモリバンク28に対する、アクセスの後でメモリページ29をオープンに維持する設定は、変更されない。この場合も、最終的なメモリアクセス時間の節約が、結果として、メモリページ29をオープンに維持するアクセス設定を、アクセスの後でメモリページ29をクローズする設定に変更することになり得るかどうかに関して、予測が行われている。
【００４０】
動的なメモリアクセス設定を可能にする(すなわち、イネーブルする)か、または可能にしない(すなわち、ディスエーブルする)かのいずれかのために、プログラミングされ得るメモリコントローラ12を提供することが求められる場合がある。これに関連して、図14は、動的なメモリアクセス設定を、イネーブルするか、またはディスエーブルするかのいずれかのために、メモリコントローラ12内に設けられ得る、「DYNAMIC_CONTROL」と名付けられた、例示的な内部の動的なメモリアクセス設定レジスタを説明する。これに関連して、2つのレジスタ170、172が設けられる。メモリコントローラ12が通常のアクセスの後でメモリページ29をクローズする設定を取り消すことを可能にすることを求められるならば、第1のレジスタ170が、設けられると共に、アクセスの後で、メモリページ29をオープンに維持するように、セットされる(例えば、図9を参照)。メモリコントローラ12が通常のアクセスの後でメモリページ29をオープンに維持する設定を取り消すことを可能にすることを求められるならば、第2のレジスタ172が、設けられると共に、アクセスの後で、メモリページ29をクローズするように、セットされる(例えば、図10を参照)。レジスタ170、172は、メモリコントローラ12によりアクセス可能なすべてのメモリバンク28に対する動的なメモリアクセス設定を制御するために、セットされる。通常はページをオープンに維持する設定、および、通常はメモリページをクローズする設定のために、動的なメモリアクセス設定に対して、別々のレジスタ170、172を設けることにより、メモリコントローラ12は、両方の場合、これらの場合の1つ、またはどちらでもない場合に対して、動的なメモリアクセス設定を可能にするようにプログラミングされ得る。さらには、動的なメモリアクセス設定のプログラミングを可能にしないことが求められないならば、DYNAMIC_CONTROLレジスタ170、172のビットは、所望のセッティングに対してハードコード化（hard code）され得る。
【００４１】
図15は、動的なメモリアクセス設定が、すべてのメモリバンク28に対して等しくという代わりに、各メモリバンク28に対して個別に提供されることを可能にする、「DYNAMIC_CONTROL」と名付けられた、例示的な内部の動的なメモリアクセス設定レジスタを説明する。これに関連して、それぞれが、メモリコントローラ12によりアクセス可能な各メモリバンク28に対するビットを有する、2つのレジスタ174、176が設けられる。この例では、メモリコントローラ12によりアクセス可能な8個のメモリバンク28が存在するので、各レジスタ174、176は、8個のビットを有する。メモリコントローラ12が通常のアクセスの後でメモリページ29をクローズする設定を取り消すことを可能にすることを求められるならば、第1のレジスタ174が、設けられると共に、アクセスの後で、メモリページ29をオープンに維持するように、セットされる(例えば、図9を参照)。メモリコントローラ12が通常のアクセスの後でメモリページ29をオープンに維持する設定を取り消すことを可能にすることを求められるならば、第2のレジスタ176が、設けられると共に、アクセスの後で、メモリページ29をクローズするように、セットされる(例えば、図10を参照)。レジスタ174、176は、メモリコントローラ12によりアクセス可能な動的なメモリアクセス設定を制御するために、各メモリバンク28に対してセットされる。各メモリバンク28に対するビットを設けることにより、メモリコントローラ12は、各メモリバンク28に対して個別に、動的なメモリアクセス設定を可能にするか、または可能にしないように制御され得る。さらには、動的なメモリアクセス設定のプログラミングを可能にしないことが求められないならば、DYNAMIC_CONTROLレジスタ174、176のビットは、所望のセッティングに対してハードコード化（hard code）され得る。
【００４２】
図16は、上述のメモリコントローラ12およびメモリアクセス設定の態様を使用することができる、プロセッサベースのシステム180を説明する。プロセッサベースのシステム180は、中央処理装置(CPU)182を含み、CPU182は、マイクロプロセッサ184、およびCPU182に対する内蔵のキャッシュシステム186を含む。キャッシュシステム186は、頻繁にアクセスされるデータのための一時記憶に対する迅速なアクセスのために、マイクロプロセッサ184にアクセス可能なキャッシュメモリ188へのアクセスを制御するキャッシュ管理ユニット187を含む。CPU182は、プロセッサベースのシステム180に含まれる他のデバイスを相互接続するシステムバス31に結合される。よく知られているように、CPU182は、システムバス31を介して、アドレス、制御、およびデータの情報を交換することにより、これらの他のデバイスと通信する。これらのデバイスは、任意のタイプのデバイスを含むことができる。図16で説明されるように、これらのデバイスは、例として、システムメモリ190、1つまたは複数の入力デバイス192、1つまたは複数の出力デバイス194、ネットワークインタフェースデバイス196、およびディスプレイコントローラ198を含むことができる。
【００４３】
入力デバイス192は、入力キー、スイッチ、音声プロセッサ等に限らず、それらを含む任意のタイプの入力デバイスを含むことができる。出力デバイス194は、音声、ビデオ、他の視覚インジケータ等に限らず、それらを含む任意のタイプの出力デバイスを含むことができる。ネットワークインタフェースデバイス196は、ネットワーク200を往来するデータの交換を可能にするように設定される任意のデバイスであり得る。ネットワーク200は、有線または無線のネットワーク、プライベートまたは公衆のネットワーク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、およびインターネットに限らず、それらを含む任意のタイプのネットワークであり得る。ネットワークインタフェースデバイス196は、任意のタイプの所望の通信プロトコルをサポートすることができる。
【００４４】
CPU182はさらに、システムバス31を介して、システムメモリ190にアクセスすることができる。システムメモリ190は、システムメモリ190に対するアクセスをインタフェースかつ制御するための、前に記載され、図1で説明されたような、メモリコントローラ12を含むことができる。システムメモリ190は、ダイナミックメモリ202を含むことができる。前に考察されたように、ダイナミックメモリ202は、スタティックメモリの代わりに、またはそれに加えて、システムメモリ190に対して設けられ得る。ダイナミックメモリ202は、CPU182用のプログラムストア204およびデータストア206を含むことができる。ダイナミックメモリ202は、前に記載され、図1で説明されたDDR DRAMメモリ14から成り得る。
【００４５】
CPU182はさらに、ディスプレイ214に送出される情報を制御するために、システムバス31を介して、ディスプレイコントローラ198にアクセスすることができる。ディスプレイコントローラ198は、CPU182との通信に応答してディスプレイ214に送出されるべきデータを格納するために、メモリコントローラ208およびメモリ210を含むことができる。メモリコントローラ208およびメモリ210は、前に記載され、図1で説明されたようなメモリコントローラ12およびDDR DRAMメモリ14のような、メモリコントローラおよびダイナミックメモリを含むことができる。ディスプレイコントローラ198は、表示されるべき情報を、ディスプレイ214に、ビデオプロセッサ212を介して送出し、ビデオプロセッサ212は、表示されるべき情報を、ディスプレイ214に適したフォーマットに処理する。ディスプレイ214は、陰極線管(CRT)、液晶表示装置(LCD)、プラズマディスプレイ等に限らず、それらを含む任意のタイプのディスプレイを含むことができる。
【００４６】
本明細書で開示される実施形態によるメモリコントローラは、半導体ダイ、集積回路、メモリに対するアクセスを制御するためのプロセッサベースのデバイス、もしくは、電子デバイスを含む、他の任意のデバイスに設けられるか、または統合されることができる。電子デバイスの例は、限定なしに、セットトップボックス、エンターテイメント装置、ナビゲーション装置、通信装置、固定位置データユニット(fixed location data unit)、移動位置データユニット(mobile location data unit)、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、携帯型音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、および携帯型デジタルビデオプレーヤを含む。
【００４７】
本明細書で例示的な実施形態のいずれかにおいて記載される動作タスクは、例および考察を提供するために記載されることに留意されたい。記載された動作は、説明された順序以外の多くの異なる順序で実行され得る。さらには、単一の動作タスクで記載された動作は、実際には、いくつかの異なるタスクで実行される場合がある。さらには、例示的な実施形態で考察された1つまたは複数の動作タスクは、組み合わされる場合がある。フローチャート図で説明された動作タスクは、当業者に対して容易に明らかとなるような多くの異なる修正を受けやすい場合があるということを理解されたい。当業者はさらに、情報および信号は、任意の種々の異なる技術および技法を使用して表され得るということを理解することになる。例えば、上記の記載を通じて言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光学場もしくは光学粒子、またはそれらの任意の組み合わせにより表され得る。
【００４８】
当業者はさらに、本明細書で開示される実施形態に関連して記載される、様々な説明に役立つ論理ブロック、モジュール、回路およびアルゴリズムタスクが、電子的なハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実施され得るということを理解することになる。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、様々な説明に役立つ構成要素、ブロック、モジュール、回路、およびタスクが、それらの機能性の観点から全体的に上述された。そのような機能性が、ハードウェアとして実施されるか、それともソフトウェアとして実施されるかは、特定の用途、および、総合的なシステムに課せられた設計の制約に応じて決まる。当業者であれば、それぞれの特定の用途に対して、様々な方法で、記載された機能性を実施することができるが、そのような実施の決定は、本発明の範囲からの逸脱を発生させると解釈されるべきではない。
【００４９】
本明細書で開示される実施形態に関連して記載される、様々な説明に役立つ論理ブロック、モジュール、および回路は、本明細書に記載される機能を実行するように設計される、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、ディスクリートのゲートもしくはトランジスタロジック、ディスクリートのハードウェア構成要素、または、それらの任意の組み合わせを用いて、実施または実行され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替方法では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはさらに、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと関連する1つもしくは複数のマイクロプロセッサ、または他の任意のそのような構成として実施され得る。
【００５０】
本明細書で開示される実施形態に関連して記載される、方法またはアルゴリズムのタスクは、直接ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、またはこの2つの組み合わせで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている他の任意の形態の記憶媒体内に存在することができる。例示的な記憶媒体はプロセッサに結合され、それにより、プロセッサは、情報を記憶媒体から読み出し、かつ、情報を記憶媒体に書き込むことができる。代替方法では、記憶媒体は、プロセッサに統合されている場合がある。プロセッサおよび記憶媒体は、ASIC内に存在する場合がある。ASICは、遠隔局内に存在する場合がある。代替方法では、プロセッサおよび記憶媒体は、別個の構成要素として、遠隔局、基地局、またはサーバ内に存在する場合がある。
【００５１】
先の開示の記載は、当業者ならば誰でも、本開示を実施または使用することを可能にするために提供される。本開示に対する様々な修正が、当業者に対して容易に明らかとなり、本明細書で定義される一般的な原理は、本開示の趣旨または範囲から逸脱することなく、他の変形に適用され得る。このように、本開示は、本明細書に記載される例および設計に限定されることは意図されておらず、本明細書で開示される原理および新規の特徴と矛盾しない最大の範囲が与えられるべきものである。
【符号の説明】
【００５２】
10  メモリシステム
12  メモリコントローラ
14  メモリ、DDR DRAMメモリ
14A  ダイナミックメモリチップ、DDR DRAMメモリチップ(DDR0)、DDRメモリチップ、メモリチップ
14B  ダイナミックメモリチップ、DDR DRAMメモリチップ(DDR1)、DDRメモリチップ、メモリチップ
16  メモリバス
18、20  チップセレクト
22  データバス(DATA)
24  アドレス/制御バス(ADDR/CTRL)、ADDR/CTRLバス
26  クロック信号(CLK)
28、28A、28B、28C、28D  メモリバンク
29  メモリページ
30  列アドレス
31  システムバス
32  アドレス/制御/書き込みデータ(ADDR/CTRL/W_DATA)バス
34  読み出しデータバス、R_DATAバス
36  第1のメモリアクセス例
38  別のメモリアクセス例
40  内部レジスタ
42  ページアドレス(PAGE_ADDR)レジスタ
44  ページオープン(PAGE_OPEN)レジスタ
46  バンクオープンページイネーブル(BANK_OPEN_PAGE_EN)レジスタ
70、72  メモリアクセス要求
110  メモリ要求待ち行列
112  メモリアクセス要求「C2」、メモリ要求「C2」
114  メモリアクセス要求「C5」
140  メモリ要求待ち行列
142  待ち行列位置「C1」
144  待ち行列位置「C4」
170  第1のレジスタ、DYNAMIC_CONTROLレジスタ
172  第2のレジスタ、DYNAMIC_CONTROLレジスタ
174  第1のレジスタ、DYNAMIC_CONTROLレジスタ
176  第2のレジスタ、DYNAMIC_CONTROLレジスタ
180  プロセッサベースのシステム
182  中央処理装置(CPU)
184  マイクロプロセッサ
186  キャッシュシステム
187  キャッシュ管理ユニット
188  キャッシュメモリ
190  システムメモリ
192  入力デバイス
194  出力デバイス
196  ネットワークインタフェースデバイス
198  ディスプレイコントローラ
200  ネットワーク
202  ダイナミックメモリ
204  プログラムストア
206  データストア
208  メモリコントローラ
210  メモリ
212  ビデオプロセッサ
214  ディスプレイ
【図１】
0005746136.tif 000002
【図２】
0005746136.tif 000003
【図３】
0005746136.tif 000004
【図４】
0005746136.tif 000005
【図５】
0005746136.tif 000006
【図６】
0005746136.tif 000007
【図７】
0005746136.tif 000008
【図８】
0005746136.tif 000009
【図９】
0005746136.tif 000010
【図１０】
0005746136.tif 000011
【図１１】
0005746136.tif 000012
【図１２】
0005746136.tif 000013
【図１３】
0005746136.tif 000014
【図１４】
0005746136.tif 000015
【図１５】
0005746136.tif 000016
【図１６】
0005746136.tif 000017