JP2012520535A - メモリアクセス時間を最適化するための、メモリアクセスコントローラ、システム、および方法 - Google Patents

メモリアクセス時間を最適化するための、メモリアクセスコントローラ、システム、および方法 Download PDF

Info

Publication number
JP2012520535A
JP2012520535A JP2012500994A JP2012500994A JP2012520535A JP 2012520535 A JP2012520535 A JP 2012520535A JP 2012500994 A JP2012500994 A JP 2012500994A JP 2012500994 A JP2012500994 A JP 2012500994A JP 2012520535 A JP2012520535 A JP 2012520535A
Authority
JP
Japan
Prior art keywords
memory
page
controller
access
bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012500994A
Other languages
English (en)
Other versions
JP5746136B2 (ja
Inventor
シュリーニヴァース・マダリ
ディープティ・ヴィジャヤラクシミ・シュリラマギリ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2012520535A publication Critical patent/JP2012520535A/ja
Application granted granted Critical
Publication of JP5746136B2 publication Critical patent/JP5746136B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • G11C11/4085Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types

Abstract

設定可能なメモリアクセスコントローラ、関連システム、及び方法。本願実施形態では、設定可能なメモリコントローラは、所与のメモリシステム内の複数のメモリバンクのそれぞれに別々のメモリアクセス設定を提供するように構成される。各メモリバンクに提供されるメモリアクセス設定は、各メモリバンク内の少なくとも1つのメモリページをオープンにしておくこと、またはクローズすることのいずれかであり得る。このようにメモリアクセス設定は、各メモリバンク内のデータのアクティビティのタイプに基づき、メモリアクセス時間を最適化するために個別化された基準で各メモリバンクに対して提供され得る。メモリコントローラはさらに1つまたは複数のメモリバンクの動的な設定を可能にするように設定され得る。動的な設定は、メモリアクセス時間を最適化するために特定のメモリバンクに対するメモリアクセス設定を変更または取り消すことを含む。

Description

本出願の技術は、一般には、プロセッサベースのシステムでメモリアクセス時間を最適化するための、メモリアクセスコントローラ、ならびに関係するシステムおよび方法に関する。
中央処理装置(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 ディスプレイ

Claims (33)

  1. 複数のメモリバンクのそれぞれに含まれる少なくとも1つのメモリページに対応する少なくとも1つのメモリ位置に、前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従ってアクセスするように設定されるコントローラを備え、
    前記コントローラは、前記複数のメモリバンクのそれぞれに対して提供される前記メモリアクセス設定に基づいて、前記少なくとも1つのメモリページを、クローズするか、オープンにしておくかのいずれかにするように設定可能である、メモリコントローラ。
  2. 前記メモリアクセス設定は、少なくとも1つの、メモリページをオープンにしておくこと、および、少なくとも1つの、メモリページをクローズすることを含む、請求項1に記載のメモリコントローラ。
  3. 前記コントローラ内に、前記メモリアクセス設定を含む1つまたは複数の内部レジスタをさらに備える、請求項1に記載のメモリコントローラ。
  4. 前記コントローラ内に、1つまたは複数の動的なメモリアクセス設定レジスタをさらに備える、請求項1に記載のメモリコントローラ。
  5. 前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、メモリページをオープンにしておくように設定されているかどうかを判定するようにさらに設定される、請求項1に記載のメモリコントローラ。
  6. 前記コントローラは、前記メモリバンクに対する前記メモリアクセス設定が、メモリページをクローズするように設定されているならば、前記メモリバンク内のメモリページをオープンするようにさらに設定される、請求項5に記載のメモリコントローラ。
  7. 前記コントローラは、前記複数のメモリバンクの中のメモリバンク内のメモリページが、オープンされているかどうかを判定するようにさらに設定される、請求項5に記載のメモリコントローラ。
  8. 前記コントローラは、前記コントローラが、前記メモリページがすでにオープンされていると判定するならば、前記メモリページをまずオープンすることなしに、前記メモリページにアクセスするようにさらに設定される、請求項7に記載のメモリコントローラ。
  9. 前記コントローラは、前記コントローラが、メモリアドレスを含む前記メモリページがオープンされていないと判定するならば、前にオープンされていたメモリページをクローズするようにさらに設定される、請求項7に記載のメモリコントローラ。
  10. 前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、動的に変更されるべきであるかどうかを判定するようにさらに設定される、請求項1に記載のメモリコントローラ。
  11. 前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、1つまたは複数のメモリアクセス要求の関数として、動的に変更されるべきであるかどうかを判定するように設定される、請求項10に記載のメモリコントローラ。
  12. 前記コントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、メモリアクセス要求の予測の関数として、動的に変更されるべきであるかどうかを判定するように設定される、請求項10に記載のメモリコントローラ。
  13. 少なくとも1つの半導体ダイに統合される、請求項1に記載のメモリコントローラ。
  14. セットトップボックス、エンターテイメント装置、ナビゲーション装置、通信装置、固定位置データユニット、移動位置データユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、携帯型音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、および携帯型デジタルビデオプレーヤから成るグループから選択され、前記メモリコントローラがその中に統合されるデバイスをさらに備える、請求項1に記載のメモリコントローラ。
  15. メモリコントローラで、メモリアドレスを含むメモリアクセス要求を受信するステップと、
    前記メモリアドレスを含むメモリバンクに対するメモリアクセス設定が、メモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するステップと、
    少なくとも1つのメモリページを含むメモリバンクに対するメモリアクセス設定にアクセスするステップであって、前記メモリアクセス設定は、複数のメモリバンクのそれぞれに対して、前記少なくとも1つのメモリページを、クローズすること、または、オープンにしておくことのいずれかを提供するステップと、
    前記メモリアクセス設定に基づいて、前記メモリアドレスを含む前記メモリバンク内のメモリページを、クローズするか、または、オープンにしておくステップと
    を含む、メモリシステム内のメモリにアクセスする方法。
  16. 前記メモリバンクに対する前記メモリアクセス設定が、アクセスの後で、そのメモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するステップをさらに含む、請求項15に記載の方法。
  17. 前記メモリアドレスに格納されるデータにアクセスするために、前記メモリページにアクセスするステップをさらに含む、請求項15に記載の方法。
  18. 前記メモリバンクに対する前記メモリアクセス設定が、メモリページをクローズするように設定されているならば、前記メモリページにアクセスする前に、前記メモリページをオープンするステップをさらに含む、請求項17に記載の方法。
  19. 前記メモリページにアクセスする前に、前記メモリページがオープンされているかどうかを判定するステップをさらに含む、請求項16に記載の方法。
  20. 前記メモリページがオープンされているならば、前記メモリページをまずオープンすることなしに、前記メモリページにアクセスするステップをさらに含む、請求項19に記載の方法。
  21. 前記メモリアドレスを含む前記メモリページがオープンされていないならば、前にオープンされていたメモリページをクローズするステップをさらに含む、請求項19に記載の方法。
  22. 前記メモリアドレスを含む前記メモリバンクに対する前記メモリアクセス設定が、動的に変更されるべきであるかどうかを判定するステップをさらに含む、請求項15に記載の方法。
  23. 前記メモリアクセス設定を一時的に取り消すステップ、または、前記メモリアクセス設定に対する新しい設定を格納するステップのいずれかにより、前記メモリアドレスを含む前記メモリバンクに対する前記メモリアクセス設定を動的に変更するステップをさらに含む、請求項22に記載の方法。
  24. 1つまたは複数の未処理のメモリアクセス要求を調査するステップと、
    前記1つまたは複数の未処理のメモリアクセス要求に基づいて、前記メモリアクセス設定を動的に変更するステップと
    をさらに含む、請求項22に記載の方法。
  25. 前記メモリバンクに対する将来のメモリアクセス要求を予測するステップと、
    前記メモリバンクに対する将来のメモリアクセス要求を予測するステップに基づいて、前記メモリバンクの前記メモリアクセス設定を動的に変更するステップと
    をさらに含む、請求項22に記載の方法。
  26. それぞれが少なくとも1つのメモリページを含む、複数のメモリバンクと、
    前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従って、前記複数のメモリバンクのそれぞれに含まれる前記少なくとも1つのメモリページに対応する、少なくとも1つのメモリ位置にアクセスするように設定されるメモリコントローラと
    を備え、
    前記メモリコントローラは、前記複数のメモリバンクのそれぞれに対して提供される前記メモリアクセス設定に基づいて、前記メモリページを、クローズするか、オープンにしておくかのいずれかにするように設定される、メモリシステム。
  27. 前記メモリアクセス設定は、少なくとも1つの、メモリページをオープンにしておくこと、および、少なくとも1つの、メモリページをクローズすることを含む、請求項26に記載のメモリシステム。
  28. 前記メモリコントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、メモリページをオープンにしておくように設定されているかどうかを判定するようにさらに設定される、請求項26に記載のメモリシステム。
  29. 前記メモリコントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定が、動的に変更されるべきであるかどうかを判定するようにさらに設定される、請求項26に記載のメモリシステム。
  30. 前記メモリコントローラは、前記複数のメモリバンクの中のメモリバンクに対する前記メモリアクセス設定を、動的に変更するようにさらに設定される、請求項29に記載のメモリシステム。
  31. 少なくとも1つの半導体ダイに統合される、請求項26に記載のメモリシステム。
  32. メモリコントローラであって、
    複数のメモリバンクのそれぞれに含まれる少なくとも1つのメモリページに対応する少なくとも1つのメモリ位置に、前記複数のメモリバンクのそれぞれに対して提供されるメモリアクセス設定に従ってアクセスするように設定されるコントローラと、
    前記メモリコントローラを、前記複数のメモリバンクのそれぞれに対して提供される前記メモリアクセス設定に基づいて、前記少なくとも1つのメモリページを、クローズするか、オープンにしておくかのいずれかにするように設定するための手段と
    を備える、メモリコントローラ。
  33. メモリコントローラで、メモリアドレスを含むメモリアクセス要求を受信するためのステップと、
    少なくとも1つのメモリページを含むメモリバンクに対するメモリアクセス設定にアクセスするためのステップであって、前記メモリアクセス設定は、複数のメモリバンクのそれぞれに対して、前記少なくとも1つのメモリページを、クローズすること、または、オープンにしておくことのいずれかを提供するステップと、
    前記メモリバンクに対する前記メモリアクセス設定が、前記少なくとも1つのメモリページを、クローズするように設定されているか、それとも、オープンにしておくように設定されているかを判定するためのステップと、
    前記メモリアクセス設定に基づいて、前記メモリアドレスを含む前記メモリバンク内のメモリページを、クローズするか、または、オープンにしておくためのステップと
    を含む、メモリシステム内のメモリにアクセスする方法。
JP2012500994A 2009-03-20 2010-03-19 メモリアクセス時間を最適化するための、メモリアクセスコントローラ、システム、および方法 Active JP5746136B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/407,910 US8347020B2 (en) 2009-03-20 2009-03-20 Memory access controller, systems, and methods for optimizing memory access times
US12/407,910 2009-03-20
PCT/US2010/027981 WO2010108096A2 (en) 2009-03-20 2010-03-19 Memory access controller, systems, and methods for optimizing memory access times

Publications (2)

Publication Number Publication Date
JP2012520535A true JP2012520535A (ja) 2012-09-06
JP5746136B2 JP5746136B2 (ja) 2015-07-08

Family

ID=42738597

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012500994A Active JP5746136B2 (ja) 2009-03-20 2010-03-19 メモリアクセス時間を最適化するための、メモリアクセスコントローラ、システム、および方法

Country Status (9)

Country Link
US (1) US8347020B2 (ja)
EP (1) EP2409235B1 (ja)
JP (1) JP5746136B2 (ja)
KR (1) KR101268978B1 (ja)
CN (1) CN102356385B (ja)
ES (1) ES2719544T3 (ja)
HU (1) HUE041677T2 (ja)
TW (1) TWI421695B (ja)
WO (1) WO2010108096A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9431091B2 (en) 2008-06-06 2016-08-30 Uniquify, Inc. Multiple gating modes and half-frequency dynamic calibration for DDR memory controllers
US8712751B2 (en) * 2009-05-08 2014-04-29 Qualcomm Incorporated System and method of verification of analog circuits
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
US8819379B2 (en) 2011-11-15 2014-08-26 Memory Technologies Llc Allocating memory based on performance ranking
US9275692B2 (en) * 2012-02-28 2016-03-01 Micron Technology, Inc. Memory, memory controllers, and methods for dynamically switching a data masking/data bus inversion input
US8914604B2 (en) * 2012-06-12 2014-12-16 The Boeing Company Creating optimal comparison criterion within associative memories
US9251048B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Memory page management
KR101484600B1 (ko) * 2013-05-28 2015-01-22 부산대학교 산학협력단 카운터 기반 멀티 사이클 프로세서 제어 장치
CN103309781B (zh) * 2013-06-28 2016-05-04 福州大学 基于dsp与fpga的单倍率同步动态内存的检测方法
KR20160061704A (ko) 2014-11-24 2016-06-01 삼성전자주식회사 페이지 상태 알림 기능이 있는 메모리 장치
US9703493B2 (en) 2015-12-14 2017-07-11 Qualcomm Incorporated Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
US11183248B1 (en) 2020-07-29 2021-11-23 Micron Technology, Inc. Timing parameter adjustment mechanisms

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP2004013618A (ja) * 2002-06-07 2004-01-15 Renesas Technology Corp 同期型半導体記憶装置のアクセス制御装置
US20040193787A1 (en) * 2003-03-26 2004-09-30 Nec Corporation Memory access control device
JP2006343947A (ja) * 2005-06-08 2006-12-21 Kyocera Mita Corp メモリアクセス制御装置及びコンピュータプログラム
US20080183977A1 (en) * 2007-01-29 2008-07-31 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052134A (en) * 1997-12-22 2000-04-18 Compaq Computer Corp. Memory controller and method for dynamic page management
US6212598B1 (en) * 1998-11-30 2001-04-03 Micron Technology, Inc. Controlling a paging policy based on a requestor characteristic
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
US7793037B2 (en) * 2005-05-31 2010-09-07 Intel Corporation Partial page scheme for memory technologies
US8108596B2 (en) * 2006-08-03 2012-01-31 Arm Limited Memory controller address mapping scheme
JP5340658B2 (ja) * 2007-07-10 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション コマンド選択のメモリ・コントローラ読み取りキュー動的最適化
US7761656B2 (en) * 2007-08-22 2010-07-20 Advanced Micro Devices, Inc. Detection of speculative precharge

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP2004013618A (ja) * 2002-06-07 2004-01-15 Renesas Technology Corp 同期型半導体記憶装置のアクセス制御装置
US20040193787A1 (en) * 2003-03-26 2004-09-30 Nec Corporation Memory access control device
JP2004295322A (ja) * 2003-03-26 2004-10-21 Nec Corp メモリアクセス制御装置
JP2006343947A (ja) * 2005-06-08 2006-12-21 Kyocera Mita Corp メモリアクセス制御装置及びコンピュータプログラム
US20080183977A1 (en) * 2007-01-29 2008-07-31 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy

Also Published As

Publication number Publication date
US20100241782A1 (en) 2010-09-23
KR101268978B1 (ko) 2013-05-29
TW201104435A (en) 2011-02-01
JP5746136B2 (ja) 2015-07-08
TWI421695B (zh) 2014-01-01
US8347020B2 (en) 2013-01-01
HUE041677T2 (hu) 2019-05-28
CN102356385B (zh) 2014-11-19
WO2010108096A3 (en) 2011-01-13
EP2409235A2 (en) 2012-01-25
EP2409235B1 (en) 2019-01-09
EP2409235A4 (en) 2012-05-09
CN102356385A (zh) 2012-02-15
KR20110128949A (ko) 2011-11-30
ES2719544T3 (es) 2019-07-11
WO2010108096A2 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
JP5746136B2 (ja) メモリアクセス時間を最適化するための、メモリアクセスコントローラ、システム、および方法
US20110055495A1 (en) Memory Controller Page Management Devices, Systems, and Methods
JP5893632B2 (ja) ストリームトランザクション情報に基づいてページ管理ポリシーを適用するためのメモリコントローラ、システム、および方法
JP5917782B2 (ja) プロセッサベースのシステムにおける異種メモリアクセス要求をサポートするための、異種メモリシステム、ならびに関連する方法およびコンピュータ可読媒体
JP5431003B2 (ja) リコンフィギュラブル回路及びリコンフィギュラブル回路システム
JP2017509998A (ja) キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
CN112639752A (zh) 基于访问效率对存储器请求进行排序
KR20160116533A (ko) 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법
GB2533808A (en) An apparatus and method for issuing access requests to a memory controller
JP2014154119A (ja) メモリ制御装置及び半導体記憶装置
US7409516B2 (en) Pending request scoreboard for out-of-order memory scheduler
US20140317355A1 (en) Cache allocation scheme optimized for browsing applications
US6687821B1 (en) System for dynamically configuring system logic device coupled to the microprocessor to optimize application performance by reading from selection table located in non-volatile memory
US10152261B2 (en) Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
US8856459B1 (en) Matrix for numerical comparison
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
US11755498B2 (en) Emulating scratchpad functionality using caches in processor-based devices
US11967394B2 (en) Memory arrays employing flying bit lines to increase effective bit line length for supporting higher performance, increased memory density, and related methods
Stankovic et al. Synchronization algorithm for predictors for SDRAM memories
TWI409816B (zh) 解決單埠靜態隨機存取記憶體之請求衝突的系統及方法
KR20070020391A (ko) 스트리밍 id 방법에 의한 dmac 발행 메커니즘

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140107

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141107

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150507

R150 Certificate of patent or registration of utility model

Ref document number: 5746136

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250