JP2019519836A - 細かい粒度のリフレッシュ - Google Patents

細かい粒度のリフレッシュ Download PDF

Info

Publication number
JP2019519836A
JP2019519836A JP2018556343A JP2018556343A JP2019519836A JP 2019519836 A JP2019519836 A JP 2019519836A JP 2018556343 A JP2018556343 A JP 2018556343A JP 2018556343 A JP2018556343 A JP 2018556343A JP 2019519836 A JP2019519836 A JP 2019519836A
Authority
JP
Japan
Prior art keywords
refresh
memory
bank
state
auto
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
JP2018556343A
Other languages
English (en)
Other versions
JP6730453B2 (ja
Inventor
バラクリシュナン ケダーナス
バラクリシュナン ケダーナス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019519836A publication Critical patent/JP2019519836A/ja
Application granted granted Critical
Publication of JP6730453B2 publication Critical patent/JP6730453B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40622Partial refresh of memory arrays
    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40603Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2272Latency related aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

データ処理システムは、メモリチャネルと、メモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、少なくとも1つのランクにアクセスするように構成されており、リフレッシュロジックを有する。データプロセッサは、リフレッシュロジックの起動に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第1自動リフレッシュコマンドに対応する第1状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンドに対応する第2状態のうち1つの状態を選択する。データプロセッサは、バンクに関連する第1条件をリフレッシュロジックが検出したことに応じて、第1状態と第2状態との間での切り替えを開始し、第2条件をリフレッシュロジック回路が検出したことに応じて、第2状態と第1状態との間での切り替えを開始する。【選択図】図5

Description

本開示は、概して、データ処理システムに関し、特に、データ処理システムにおけるメモリシステムのリフレッシュに関する。
コンピュータシステムの全体的な処理速度を向上させるために、様々な技術が開発されている。集積回路処理技術の大幅な改善は、コンピュータ処理速度及びメモリ容量を増加させる能力に寄与し、これにより、コンピュータシステム全体の改善された性能に寄与する。サブミクロンの特徴を有する集積回路を製造する能力は、集積回路当たりのキャパシタ等の電気部品の量も増加させることができる。
サブミクロンの特徴を有するキャパシタの大規模アレイから構成されるダイナミックランダムアクセスメモリ(DRAM)チップは、コンピュータシステムのメインメモリに利用されている。DRAMは、通常、安価で高密度であり、これにより、大量のDRAMがデバイス毎に統合されることが可能になる。キャパシタの性質上、DRAMは、常にリフレッシュされなければならず、そうでなければ、キャパシタ内に記憶されたデータが失われてしまう。各キャパシタは電荷をゆっくりとリークし、DRAMがリフレッシュされない場合には、キャパシタは、最終的にかなりの電荷をリークして、不可逆的なデータ破損に直面する。
今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって推奨される様々なダブルデータレート(DDR)DRAM標準と互換性がある。JEDECによって提供される標準は、一定期間データのアクセスを禁止するリフレッシュサイクル時間を提供する。コンピュータシステム内のDDR DRAMデバイスの密度を増大させると、リフレッシュに必要な時間が増大し、これにより、コンピュータ処理のレイテンシが増大する。
これらの問題に対処するために、JEDECは、1X、2X、4Xリフレッシュモードとして知られるDDRバージョン4(DDR4)標準の機能を採用している。これらのモードでは、DDR4メモリは、単一のリフレッシュ(REF)コマンドに応じて、選択されたバンク、選択されたバンクの半分、又は、選択されたバンクの4分の1をリフレッシュすることができる。モードレジスタ(モードレジスタ3(MR3))は、これらのモード間でモードを選択するために使用される。更に、MR3は、1X若しくは2Xの選択、又は、1X若しくは4Xの選択を動的に実行し、未使用のアドレスビットによって示される「オンザフライ」モードをサポートするようにプログラムされる場合がある。
いくつかの実施形態による、データ処理システムのブロック図である。 図1のデータ処理システムでの使用に適したアクセラレーテッドプロセシングユニット(APU)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYのブロック図である。 いくつかの実施形態による、メモリコントローラのブロック図である。 いくつかの実施形態による、リフレッシュ条件を示す状態図である。 いくつかの実施形態による、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。 いくつかの実施形態による、図5のメモリコントローラによって使用される方法のフローチャートである。
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
以下の1つの形態で説明するように、データ処理システムは、少なくとも1つのランクを有するメモリチャネルと、リフレッシュロジックを有するメモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、リフレッシュロジックの起動(activation)に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第1自動リフレッシュコマンドに対応する第1状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンドに対応する第2状態のうち何れかの状態を選択する。データプロセッサは、リフレッシュロジックがバンクに関連する第1条件を検出したことに応じて、第1状態と第2状態との間での切り替えを開始し、リフレッシュロジック回路が第2条件を検出したことに応じて、第2状態と第1状態との間での切り替えを開始する。
別の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続され、メモリシステムに接続するように適合されたメモリコントローラと、を含む。メモリコントローラは、メモリシステムのメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路を含む。メモリコントローラは、第1状態及び第2状態を含むオンザフライモードを有する。第1状態は、メモリに対してバンクを自動リフレッシュさせる第1自動リフレッシュコマンド(例えば、REF1)に対応する。第2状態は、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンド(例えば、REF2又はREF4)に対応する。メモリコントローラは、バンクに関連する第1条件をリフレッシュロジック回路が検出したことに応じて、第1状態と第2状態との間で切り替えを行う。メモリコントローラは、第2条件をリフレッシュロジック回路が検出したことに応じて、第2状態と第1状態との間で切り替えを行う。
更に別の形態では、メモリコントローラを介してメモリシステム内のメモリのリフレッシュを管理する方法が説明される。第1自動リフレッシュコマンドは、メモリコントローラが第1状態にある場合に生成され、この第1自動リフレッシュコマンドは、メモリコントローラに対してバンクを自動リフレッシュさせる。第2自動リフレッシュコマンドは、メモリコントローラが第2状態にある場合に生成され、この第2自動リフレッシュコマンドは、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる。メモリコントローラが第1条件を検出したことに応じて、第1状態と第2状態との間での切り替えが行われる。メモリコントローラが第2条件を検出したことに応じて、第2状態と第1状態との間での切り替えが行われる。
図1は、いくつかの実施形態による、データ処理システム100のブロック図である。データ処理システム100は、概して、アクセラレーテッドプロセシングユニット(APU)の形態にあるデータプロセッサ110と、メモリシステム120と、PCIe(peripheral component interconnect express)システム150と、USB(universal serial bus)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理装置(CPU)として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクへの接続用のPCIeルート複合体、USBネットワークへの接続用のUSBコントローラ、及び、SATA(Serial Advanced Technology Attachment)大容量記憶装置へのインタフェースが含まれる。
メモリシステム120は、メモリチャネル130と、メモリチャネル140と、を含む。メモリチャネル130は、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセット(この実施例では、個別のランクに対応する代表的なDIMM134,136、138を含む)を含む。同様に、メモリチャネル140は、DDRxバス142に接続されたDIMMのセット(代表的なDIMM144,146,148を含む)を含む。
PCIeシステム150は、データプロセッサ110内のPCIeルート複合体に接続されたPCIeスイッチ152と、PCIeデバイス154と、PCIeデバイス156と、PCIeデバイス158と、を含む。PCIeデバイス156は、システム基本入力/出力システム(BIOS)メモリ157に接続されている。システムBIOSメモリ157は、リードオンリメモリ(ROM)及びフラッシュEEPROM(flash electrically erasable programmable ROM)等の様々な不揮発性メモリタイプの何れかであってもよい。
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、それぞれUSBハブ162に接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、キーボード、マウス及びフラッシュEEPROMポート等のデバイスであってもよい。
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム及びアプリケーションファイル等のための大容量記憶装置を提供する。
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。メモリチャネル130,140の各々は、例えばDDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等の最新のDDRメモリに接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。
図2は、図1のデータ処理システム100での使用に適したAPU200のブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジンのセット230と、メモリ管理ハブ240と、データファブリック250と、周辺機器コントローラのセット260と、周辺機器バスコントローラのセット270と、システム管理ユニット(SMU)280と、メモリコントローラのセット290と、を含む。
CPUコア複合体210は、CPUコア212と、CPUコア214と、を含む。この実施例では、CPUコア複合体210は2つのCPUコアを含むが、他の実施形態では、CPUコア複合体は任意の数のCPUコアを含むことができる。CPUコア212,214の各々は、制御ファブリックを形成するシステム管理ネットワーク(SMN)及びデータファブリック250に双方向に接続されており、データファブリック250にメモリアクセス要求を提供することができる。CPUコア212,214の各々は、単一のコアであってもよく、キャッシュ等の特定のリソースを共有する2つ以上の単一のコアを有するコア複合体であってもよい。
グラフィックスコア220は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャ混合等のグラフィック動作を高度に統合された並列形式で実行することの可能な高性能グラフィックスプロセシングユニット(GPU)である。グラフィックスコア220は、SMN及びデータファブリック250に双方向に接続されており、データファブリック250にメモリアクセス要求を提供することができる。この点について、APU200は、CPUコア複合体210及びグラフィックスコア220が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体210及びグラフィックスコア220がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができ、また、グラフィックスコア220は、CPUコア複合体210によってアクセスすることができないプライベートグラフィックスメモリを使用する。
ディスプレイエンジン230は、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタ上に表示する。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120における適切なアドレスへの一様な変換のために、共通メモリ管理(MM)ハブ240に双方向に接続されており、メモリ管理ハブ240は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック250に双方向に接続されている。
データファブリック250は、何れかのメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。データファブリック250は、BIOSによって定義されたシステムメモリマップであって、システム構成に基づいてメモリアクセスの宛先を決定するためのシステムメモリマップと、仮想接続毎のバッファと、を含む。
周辺機器コントローラ260は、USBコントローラ262と、SATAインタフェースコントローラ264と、を含み、これらの各々は、システムハブ266及びSMNバスに双方向に接続されている。これらの2つのコントローラは、APU200で使用することができる周辺機器コントローラの単なる例示である。
周辺機器バスコントローラ270は、システムコントローラ又は「サウスブリッジ」(SB)272と、PCIeコントローラ274と、を含み、これらの各々は、入力/出力(I/O)ハブ276及びSMNバスに双方向に接続されている。また、I/Oハブ276は、システムハブ266及びデータファブリック250に双方向に接続されている。よって、例えば、CPUコアは、I/Oハブ276を介してデータファブリック250がルーティングするアクセスを介して、USBコントローラ262、SATAインタフェースコントローラ264、SB272又はPCIeコントローラ274のレジスタをプログラムすることができる。
SMU280は、APU200上のリソースの動作を制御し、これらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の各コンポーネントにクロック信号を提供するために、例えば位相ロックループ(PLL)等のように図2に示されていない1つ以上のクロックソースを含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックの電力を管理し、CPUコア212,214及びグラフィックスコア220から測定された電力消費値を受信して、適切な電力状態を決定することができる。
また、APU200は、様々なシステムモニタリング及び省電力機能を実装する。特に、1つのシステムモニタリング機能は、サーマルモニタリングである。例えば、APU200が高温になると、SMU280は、CPUコア212,214及び/又はグラフィックスコア220の周波数及び電圧を低減することができる。APU200がさらに高温になると、APU200は完全にシャットダウンされてもよい。サーマルイベントは、SMNバスを介してSMU280によって外部センサから受信されてもよく、SMU280は、これに応じてクロック周波数及び/又は電源電圧を低減することができる。
図3は、いくつかの実施形態による、図2のAPU200での使用に適したメモリコントローラ300及び関連する物理インタフェース(PHY)330のブロック図である。メモリコントローラ300は、メモリチャネル310と、電力エンジン320と、を含む。メモリチャネル310は、ホストインタフェース312と、メモリチャネルコントローラ314と、物理インタフェース316と、を含む。ホストインタフェース312は、スケーラブルデータポート(SDP)を介して、メモリチャネルコントローラ314をデータファブリック250に双方向に接続する。物理インタフェース316は、DDR−PHYインタフェース仕様(DFI)に準拠するバスを介して、メモリチャネルコントローラ314をPHY330に双方向に接続する。電力エンジン320は、SMNバスを介してSMU280に双方向に接続されており、APB(Advanced Peripheral Bus)を介してPHY330に双方向に接続されており、メモリチャネルコントローラ314に双方向に接続されている。PHY330は、図1のメモリチャネル130又はメモリチャネル140等のメモリチャネルへの双方向接続を有する。メモリコントローラ300は、単一のメモリチャネルコントローラ314を使用した単一のメモリチャネル用のメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ314の動作を制御する電力エンジン320を有する。
図4は、いくつかの実施形態による、図2のAPU200での使用に適した他のメモリコントローラ400及び関連するPHY440,450のブロック図である。メモリコントローラ400は、メモリチャネル410,420と、電力エンジン430と、を含む。メモリチャネル410は、ホストインタフェース412と、メモリチャネルコントローラ414と、物理インタフェース416と、を含む。ホストインタフェース412は、SDPを介して、メモリチャネルコントローラ414をデータファブリック250に双方向に接続する。物理インタフェース416は、DFI仕様に準拠して、メモリチャネルコントローラ414をPHY440に双方向に接続する。メモリチャネル420は、ホストインタフェース422と、メモリチャネルコントローラ424と、物理インタフェース426と、を含む。ホストインタフェース422は、別のSDPを介して、メモリチャネルコントローラ424をデータファブリック250に双方向に接続する。物理インタフェース426は、DFI仕様に準拠して、メモリチャネルコントローラ424をPHY450に双方向に接続する。電力エンジン430は、SMNバスを介してSMU280に双方向に接続されており、APBを介してPHY440,450に双方向に接続されており、メモリチャネルコントローラ414,424に双方向に接続されている。PHY440は、図1のメモリチャネル130等のメモリチャネルへの双方向接続を有する。PHY450は、図1のメモリチャネル140等のメモリチャネルへの双方向接続を有する。メモリコントローラ400は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ414及びメモリチャネルコントローラ424の両方の動作を制御する共有電力エンジン430を使用する。
図5は、いくつかの実施形態による、メモリコントローラ500のブロック図である。メモリコントローラ500は、概して、メモリチャネルコントローラ510と、電力コントローラ550と、を含む。メモリチャネルコントローラ510は、概して、インタフェース512と、キュー514と、コマンドキュー520と、アドレスジェネレータ522と、コンテンツアドレス可能メモリ(CAM)524と、再生キュー530と、リフレッシュロジックブロック532と、タイミングブロック534と、ページテーブル536と、アービタ538と、エラー訂正コード(ECC)チェックブロック542と、ECC生成ブロック544と、データバッファ(DB)546と、を含む。
インタフェース512は、外部バスを介したデータファブリック250への第1双方向接続を有し、出力を有する。メモリコントローラ500において、この外部バスは、「AXI4」として知られる、イングランドのケンブリッジのARMホールディングスPLCによって指定されたAXI(advanced extensible interface)バージョン4と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース512は、FCLK(又は、MEMCLK)ドメインとして知られる第1クロックドメインから、UCLKドメインとして知られるメモリコントローラ500内の第2クロックドメインへのメモリアクセス要求を変換する。同様に、キュー514は、UCLKドメインからDFIインタフェースに関連するDFICLKドメインへのメモリアクセスを提供する。
アドレスジェネレータ522は、AXI4バスを介してデータファブリック250から受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、標準化されたフォーマットで表される物理アドレス空間内のアクセスアドレスを含む。アドレスジェネレータ522は、標準化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムBIOSは、起動すると、メモリシステム120内のメモリデバイスにクエリしてその細部及び構成を判別し、アドレスジェネレータ522に関連する構成レジスタのセットをプログラムする。アドレスジェネレータ522は、標準化されたアドレスを適切なフォーマットに変換するために、構成レジスタに記憶された構成を使用する。コマンドキュー520は、例えば、CPUコア212,214及びグラフィックスコア220等のデータ処理システム100内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー520は、アドレスジェネレータ522によって復号化されたアドレスフィールドと、アービタ538がアクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。CAM524は、例えば、ライトアフターライト(WAW)及びリードアフターライト(RAW)順序付けルール等の順序付けルールを実施するための情報を含む。
再生キュー530は、アドレス及びコマンドパリティ応答、DDR4 DRAMに対する書き込み巡回冗長チェック(CRC)応答、又は、gDDR5 DRAMに対する書き込み及び読み出しCRC応答等の応答を待っているアービタ538によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー530は、ECCチェックブロック542にアクセスして、返されたECCが正確であるかエラーを示すかを判別する。再生キュー530は、これらのサイクルのうち1つのサイクルのパリティ又はCRCエラーの場合にアクセスが再生されることを可能にする。
リフレッシュロジック532は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのための状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュサイクルを実行するために定期的に起動する必要がある。リフレッシュロジック532は、DRAMチップ内のメモリセルの記憶キャパシタから電荷がリークすることによって生じるデータエラーを防止するために、リフレッシュコマンドを定期的に生成する。また、リフレッシュロジック532は、システムの熱変化によるオンダイターミネーション抵抗の不一致を防止するために、ZQを定期的に較正する。
アービタ538は、コマンドキュー520に双方向に接続されており、メモリチャネルコントローラ510の中心部である。アービタ538は、メモリバスの使用を改善するために、アクセスのインテリジェントなスケジューリングによって効率を改善する。アービタ538は、タイミングブロック534を使用して、コマンドキュー520内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判別することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られる起動コマンドの間の最小の指定時間を有する。タイミングブロック534は、このタイミングパラメータ及びJEDEC仕様で指定された他のタイミングパラメータに基づいて、適格性を決定するカウンタのセットを維持し、再生キュー530に双方向に接続されている。ページテーブル536は、各バンクのアクティブページに関する状態情報、及び、アービタ538のためのメモリチャネルのランクを維持し、再生キュー530に双方向に接続されている。
ECC生成ブロック544は、インタフェース512から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。DB546は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。アービタ538がメモリチャネルへのディスパッチのための対応する書き込みアクセスを選択した場合に、組み合わされた書き込みデータ/ECCをキュー514に出力する。
電力コントローラ550は、概して、AXIバージョン1(AXI)へのインタフェース552と、APBインタフェース554と、電力エンジン560と、を含む。インタフェース552は、図5において別個に示される「EVENT_n」という符号が付されたイベント信号を受信するための入力と出力とを含む、SMNへの第1双方向接続を有する。APBインタフェース554は、インタフェース552の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。電力エンジン560は、インタフェース552の出力に接続された入力と、キュー514の入力に接続された出力と、を有する。電力エンジン560は、構成レジスタのセット562と、マイクロコントローラ(μC)564と、自動リフレッシュコントローラ(SLFREF/PE)566と、信頼された読み出し/書き込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされ、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、これらのブロック(図5には詳細に示されていない)に接続された出力を有する。自動リフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し/書き込みタイミングエンジン568は、DDRインタフェースの最大読み出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はI/Oデバイスに提供する。
メモリチャネルコントローラ510は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ522は、アドレス情報を、メモリシステム内のランク、行ドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー520は、予め復号化された情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレスジェネレータ522がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ538は、例えばQoS要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック534によって示されるタイミング適格性情報、及び、ページテーブル536によって示されたアクティブページ情報を使用する。例えば、アービタ538は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠す。特に、通常の動作中、アービタ538は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
図6は、いくつかの実施形態による、図5のメモリコントローラ500によって使用される状態図600である。状態図600は、メモリコントローラ500によって利用されるリフレッシュコマンドのタイプに対応する状態の図である。状態図600は、自動リフレッシュ状態602と、リフレッシュ1状態(REF1)604と、リフレッシュ2状態(REF2)606と、リフレッシュ4状態(REF4)608と、を含む。状態図600は、矢印による状態遷移を表し、メモリコントローラ500は、条件610,612,614,616,618,620,622,624を含む対応する条件に応じて、状態遷移を実行する。
動作中、図5のメモリコントローラ500等のメモリコントローラは、図2のCPUコア複合体210内のCPUコア又はグラフィックスコア220等のメモリアクセスエージェントに接続されており、メモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ500は、図1のメモリシステム120に接続するように構成されている。上述したように、メモリシステム120は、図1のDIMM134,136、138として実装されたメモリの複数のランクを含むことができる。メモリコントローラ500は、メモリシステム120内の各バンク又はバンクの組み合わせへのリフレッシュサイクルを定期的に生成するためのリフレッシュロジック回路(例えば、図5のリフレッシュロジック532等)を含む。リフレッシュロジック532は、オンザフライリフレッシュモードを実装し、リフレッシュコマンドは、リフレッシュされるメモリバンクに関連する条件に応じて自動的に選択された粒度で生成される。
リフレッシュロジック532は、第1状態と、REF1状態604と、第2状態と、REF2状態606又はREF4状態608の何れかと、を使用してオンザフライモードを実装する。REF1状態604は、リフレッシュ(REF)コマンドに応じて、バンク全体をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1)の使用に対応する。REF2状態606は、REFコマンドに応じて、にバンクの選択されたサブセット(ここでは、バンクの半分)をメモリに自動リフレッシュさせる第2自動リフレッシュコマンド(REF2)の使用に対応する。また、REF4状態608は、REFコマンドに応じて、バンクのより小さい選択されたサブセット(ここでは、バンクの4分の1)をメモリに自動リフレッシュさせる第3自動リフレッシュコマンド(REF4)の使用に対応する。メモリコントローラ290は、リフレッシュされるバンクに関連する第1条件(条件618又は条件622)を検出したことに応じて、REF1状態604と、REF2状態606又はREF4状態608と、の間で切り替えを行う。メモリコントローラ290は、第2条件(条件624又は条件620)を検出したことに応じて、REF2状態606又はREF4状態608からREF1状態604への切り替えを行う。
概して、リフレッシュロジック532は、リフレッシュ間隔パラメータtREFIによって示された期間内に各メモリバンクをリフレッシュするのに十分なレートでリフレッシュコマンドを発行する。各tREFI期間の間に発行されたリフレッシュコマンドの数は、現在のリフレッシュ状態で発行されたリフレッシュコマンドのタイプに依存する。リフレッシュロジック532は、バンクがREF1状態604にある場合に、各tREFI期間の間に1つのREF1コマンドをバンクに提供し、バンクがREF2状態606にある場合に、各tREFI期間の間に2つのREF2コマンドをバンクに提供し、又は、バンクがREF4状態608にある場合に、各tREFI期間の間に4つのREF4コマンドをバンクに提供する。
リフレッシュロジック532は、対応するメモリが低電力状態にある場合、自動リフレッシュ状態602にある。メモリコントローラ500がメモリを低電力状態から出させると、リフレッシュロジック532は、自動リフレッシュ状態602から、REF1状態604、REF2状態606及びREF4状態608のうち選択された1つの状態に遷移する。メモリコントローラ290は、特定の条件が満たされるまで、REF1状態604、REF2状態606及びREF4状態608毎に示された状態遷移612,614,616として、現在の状態に留まる。
リフレッシュ状態間を切り替えるためのいくつかの条件は、単独で又は様々な組み合わせで使用することができる。図示された実施形態では、これらの条件は、バンクに対する保留中のリフレッシュの数、図5のコマンドキュー520におけるバンクに対する保留中のメモリアクセス要求の数、バンクに対する保留中のメモリアクセス要求の優先度及び/又はタイプ(読み出し若しくは書き込み)、保留中のリフレッシュの数が所定の閾値を上回っている場合に、所定のバンクに対する保留中のリフレッシュ条件が存在するか否かを含む。更に、図6は、所定のランクのメモリ内の単一のバンクのリフレッシュ状態機械を示しているが、リフレッシュ状態機械は、所定のランクの全てのバンク及び複数のランクにおいて対応するバンク等のように、様々な方法でメモリシステムのより大きなサブセットに拡張してもよい。
1つの簡単な例を挙げると、リフレッシュロジック532は、バンクに対する保留中のメモリアクセス要求の数が閾値を超えている場合、REF1状態604とREF2状態606との間で切り替えることができる。この条件は、より低いレイテンシ及びより細かい粒度のリフレッシュが好ましいことを示している。一方、リフレッシュロジック532がREF2状態606にあるが、偶数のREF2コマンドが発行され、バンクに対する保留中のメモリアクセス要求が存在しないと判別した場合、効率を維持するために、REF2状態606からREF1状態604に戻る。リフレッシュロジック532がREF2状態606又はREF4状態608から状態遷移する前提条件は、発行されたリフレッシュの数が、一度にリフレッシュされているバンクの部分に対応することである。したがって、リフレッシュロジック532は、図5に示すように、これらの条件を追跡するためにアービタ538に接続されている。
図7は、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。図7のメモリリフレッシュ状態は、リフレッシュ1(REF1)状態700と、リフレッシュ2(REF2)状態710と、リフレッシュ4(REF4)状態720と、を含む。REF1状態700は、リフレッシュが開始する前のバンク702と、REF1コマンド中のREF1_1バンク704と、リフレッシュされたバンク706と、を含む。REF2状態710は、リフレッシュが開始する前のバンク702と、第1REF2コマンド中のREF2_1バンク714と、第2REF2コマンド中のREF2_2バンク716と、リフレッシュされたバンク706と、を含む。REF4状態720は、リフレッシュ状態の前のバンク702と、第1REF4コマンド中のREF4_1バンク724と、第2REF4コマンド中のREF4_2バンク726と、第3REF4コマンド中のREF4_3バンク728と、第4REF4コマンド中のREF4_4バンク730と、リフレッシュされたバンク706と、を含む。
REF1状態700は、1つ以上のバンク702をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1コマンド)の使用に対応する。REF1コマンドが実行されると、REF1バンク704がリフレッシュされ、リフレッシュされたバンク706が得られる。
REF2状態710は、REF2_1バンク714及びREF2_2バンク716で示されるように、リフレッシュ間隔(tREFI)として知られる期間内にバンク702の第1サブセット及び第2サブセットをメモリに自動リフレッシュさせる第2自動リフレッシュコマンド(REF2コマンド)の使用に対応する。REF2_1バンク714及びREF2_2バンク716の各々は、バンク702の別々の半分のサブセットである。
また、REF4状態720は、tREFI期間内にバンク702の第1サブセット、第2サブセット、第3サブセット及び第4サブセットをメモリに自動リフレッシュさせる第3自動リフレッシュコマンド(REF4コマンド)の使用に対応する。REF4_1バンク724、REF4_2バンク726、REF4_3バンク728及びREF4_4バンク730は、バンク702のリフレッシュされた第1サブセット、第2サブセット、第3サブセット及び第4サブセットに対応する。REF4_1バンク724、REF4_2バンク726、REF4_3バンク728及びREF4_4バンク730の各々は、REF4状態720内のバンク702の別々の4分の1のサブセットである。
リフレッシュの数は、状態変化が発生する前のサブセットの総数に対応している必要がある。一実施形態では、バンク702等のバンク全体をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1)が受信される。第1条件を検出したことに応じて、REF1 700からREF2 710又はREF4 720への切り替えが行われる。REF2コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に2の倍数になるはずである。REF4コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に4の倍数になるはずである。
これらの異なるリフレッシュモードをREFIモードよりも細かい粒度で提供し、メモリコントローラ500によって既に追跡されている保留中のメモリアクセス要求の特性を用いて、オンザフライで状態変化の決定を行うことにより、メモリコントローラ500は、システムバスの使用率が高い期間内に入ってくるメモリアクセス要求のレイテンシを低減することができ、システムバスの使用率が低い期間内にメモリバンクをより効率的にリフレッシュすることができる。
図8は、図5のメモリコントローラ500によって使用される方法800のフローチャートである。ブロック802において、第1状態において第1自動リフレッシュコマンドが生成される。ブロック804において、第2状態において第2自動リフレッシュコマンドが生成される。ブロック806において、第1条件が検出される。ブロック808において、第1状態と第2状態との間での切り替えが行われる。ブロック810において、第2条件が検出される。ブロック810において、第2条件が検出されたことに応じて、ブロック812において、第2状態と第1状態との間での切り替えが行われる。終了ブロックにおいて処理が終了する。
図8に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。図8に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/若しくは実行可能な他の命令フォーマットであってもよい。
特定の実施形態について説明したが、これらの実施形態の様々な変更が当業者には明らかであろう。メモリコントローラ500は、例えば、高帯域幅メモリ(HBM)及びRAMbus DRAM(RDRAM)等のDDRxメモリ以外の他のタイプのメモリにインタフェースすることができる。示された実施形態では、別々のDIMMに対応する各メモリのランクを示したが、他の実施形態では、各DIMMは、複数のランクをサポートすることができる。更に、メモリチャネルは、DDR4メモリの複数のランクを含んでもよい。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。
本開示は、概して、データ処理システムに関し、特に、データ処理システムにおけるメモリシステムのリフレッシュに関する。
コンピュータシステムの全体的な処理速度を向上させるために、様々な技術が開発されている。集積回路処理技術の大幅な改善は、コンピュータ処理速度及びメモリ容量を増加させる能力に寄与し、これにより、コンピュータシステム全体の改善された性能に寄与する。サブミクロンの特徴を有する集積回路を製造する能力は、集積回路当たりのキャパシタ等の電気部品の量も増加させることができる。
サブミクロンの特徴を有するキャパシタの大規模アレイから構成されるダイナミックランダムアクセスメモリ(DRAM)チップは、コンピュータシステムのメインメモリに利用されている。DRAMは、通常、安価で高密度であり、これにより、大量のDRAMがデバイス毎に統合されることが可能になる。キャパシタの性質上、DRAMは、常にリフレッシュされなければならず、そうでなければ、キャパシタ内に記憶されたデータが失われてしまう。各キャパシタは電荷をゆっくりとリークし、DRAMがリフレッシュされない場合には、キャパシタは、最終的にかなりの電荷をリークして、不可逆的なデータ破損に直面する。
今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって推奨される様々なダブルデータレート(DDR)DRAM標準と互換性がある。JEDECによって提供される標準は、一定期間データのアクセスを禁止するリフレッシュサイクル時間を提供する。コンピュータシステム内のDDR DRAMデバイスの密度を増大させると、リフレッシュに必要な時間が増大し、これにより、コンピュータ処理のレイテンシが増大する。
これらの問題に対処するために、JEDECは、1X、2X、4Xリフレッシュモードとして知られるDDRバージョン4(DDR4)標準の機能を採用している。これらのモードでは、DDR4メモリは、単一のリフレッシュ(REF)コマンドに応じて、選択されたバンク、選択されたバンクの半分、又は、選択されたバンクの4分の1をリフレッシュすることができる。モードレジスタ(モードレジスタ3(MR3))は、これらのモード間でモードを選択するために使用される。更に、MR3は、1X若しくは2Xの選択、又は、1X若しくは4Xの選択を動的に実行し、未使用のアドレスビットによって示される「オンザフライ」モードをサポートするようにプログラムされる場合がある。
いくつかの実施形態による、データ処理システムのブロック図である。 図1のデータ処理システムでの使用に適したアクセラレーテッドプロセシングユニット(APU)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYのブロック図である。 いくつかの実施形態による、メモリコントローラのブロック図である。 いくつかの実施形態による、リフレッシュ条件を示す状態図である。 いくつかの実施形態による、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。 いくつかの実施形態による、図5のメモリコントローラによって使用される方法のフローチャートである。
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
以下の1つの形態で説明するように、データ処理システムは、少なくとも1つのランクを有するメモリチャネルと、リフレッシュロジックを有するメモリチャネルに接続されたデータプロセッサと、を含む。データプロセッサは、リフレッシュロジックの起動(activation)に応じて、メモリチャネルのバンクへのリフレッシュサイクルを生成する。データプロセッサは、データプロセッサにバンクを自動リフレッシュさせる第1自動リフレッシュコマンドに対応する第1状態、及び、データプロセッサにバンクの選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンドに対応する第2状態のうち何れかの状態を選択する。データプロセッサは、リフレッシュロジックがバンクに関連する第1条件を検出したことに応じて、第1状態と第2状態との間での切り替えを開始し、リフレッシュロジック回路が第2条件を検出したことに応じて、第2状態と第1状態との間での切り替えを開始する。
別の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続され、メモリシステムに接続するように適合されたメモリコントローラと、を含む。メモリコントローラは、メモリシステムのメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路を含む。メモリコントローラは、第1状態及び第2状態を含むオンザフライモードを有する。第1状態は、メモリに対してバンクを自動リフレッシュさせる第1自動リフレッシュコマンド(例えば、REF1)に対応する。第2状態は、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンド(例えば、REF2又はREF4)に対応する。メモリコントローラは、バンクに関連する第1条件をリフレッシュロジック回路が検出したことに応じて、第1状態と第2状態との間で切り替えを行う。メモリコントローラは、第2条件をリフレッシュロジック回路が検出したことに応じて、第2状態と第1状態との間で切り替えを行う。
更に別の形態では、メモリコントローラを介してメモリシステム内のメモリのリフレッシュを管理する方法が説明される。第1自動リフレッシュコマンドは、メモリコントローラが第1状態にある場合に生成され、この第1自動リフレッシュコマンドは、メモリコントローラに対してバンクを自動リフレッシュさせる。第2自動リフレッシュコマンドは、メモリコントローラが第2状態にある場合に生成され、この第2自動リフレッシュコマンドは、メモリに対してバンクの選択されたサブセットを自動リフレッシュさせる。メモリコントローラが第1条件を検出したことに応じて、第1状態と第2状態との間での切り替えが行われる。メモリコントローラが第2条件を検出したことに応じて、第2状態と第1状態との間での切り替えが行われる。
図1は、いくつかの実施形態による、データ処理システム100のブロック図である。データ処理システム100は、概して、アクセラレーテッドプロセシングユニット(APU)の形態にあるデータプロセッサ110と、メモリシステム120と、PCIe(peripheral component interconnect express)システム150と、USB(universal serial bus)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理装置(CPU)として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクへの接続用のPCIeルート複合体、USBネットワークへの接続用のUSBコントローラ、及び、SATA(Serial Advanced Technology Attachment)大容量記憶装置へのインタフェースが含まれる。
メモリシステム120は、メモリチャネル130と、メモリチャネル140と、を含む。メモリチャネル130は、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセット(この実施例では、個別のランクに対応する代表的なDIMM134,136、138を含む)を含む。同様に、メモリチャネル140は、DDRxバス142に接続されたDIMMのセット(代表的なDIMM144,146,148を含む)を含む。
PCIeシステム150は、データプロセッサ110内のPCIeルート複合体に接続されたPCIeスイッチ152と、PCIeデバイス154と、PCIeデバイス156と、PCIeデバイス158と、を含む。PCIeデバイス156は、システム基本入力/出力システム(BIOS)メモリ157に接続されている。システムBIOSメモリ157は、リードオンリメモリ(ROM)及びフラッシュEEPROM(flash electrically erasable programmable ROM)等の様々な不揮発性メモリタイプの何れかであってもよい。
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、それぞれUSBハブ162に接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、キーボード、マウス及びフラッシュEEPROMポート等のデバイスであってもよい。
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム及びアプリケーションファイル等のための大容量記憶装置を提供する。
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。メモリチャネル130,140の各々は、例えばDDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等の最新のDDRメモリに接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。
図2は、図1のデータ処理システム100での使用に適したAPU200のブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジンのセット230と、メモリ管理ハブ240と、データファブリック250と、周辺機器コントローラのセット260と、周辺機器バスコントローラのセット270と、システム管理ユニット(SMU)280と、メモリコントローラのセット290と、を含む。
CPUコア複合体210は、CPUコア212と、CPUコア214と、を含む。この実施例では、CPUコア複合体210は2つのCPUコアを含むが、他の実施形態では、CPUコア複合体は任意の数のCPUコアを含むことができる。CPUコア212,214の各々は、制御ファブリックを形成するシステム管理ネットワーク(SMN)及びデータファブリック250に双方向に接続されており、データファブリック250にメモリアクセス要求を提供することができる。CPUコア212,214の各々は、単一のコアであってもよく、キャッシュ等の特定のリソースを共有する2つ以上の単一のコアを有するコア複合体であってもよい。
グラフィックスコア220は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャ混合等のグラフィック動作を高度に統合された並列形式で実行することの可能な高性能グラフィックスプロセシングユニット(GPU)である。グラフィックスコア220は、SMN及びデータファブリック250に双方向に接続されており、データファブリック250にメモリアクセス要求を提供することができる。この点について、APU200は、CPUコア複合体210及びグラフィックスコア220が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体210及びグラフィックスコア220がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができ、また、グラフィックスコア220は、CPUコア複合体210によってアクセスすることができないプライベートグラフィックスメモリを使用する。
ディスプレイエンジン230は、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタ上に表示する。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120における適切なアドレスへの一様な変換のために、共通メモリ管理(MM)ハブ240に双方向に接続されており、メモリ管理ハブ240は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック250に双方向に接続されている。
データファブリック250は、何れかのメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。データファブリック250は、BIOSによって定義されたシステムメモリマップであって、システム構成に基づいてメモリアクセスの宛先を決定するためのシステムメモリマップと、仮想接続毎のバッファと、を含む。
周辺機器コントローラ260は、USBコントローラ262と、SATAインタフェースコントローラ264と、を含み、これらの各々は、システムハブ266及びSMNバスに双方向に接続されている。これらの2つのコントローラは、APU200で使用することができる周辺機器コントローラの単なる例示である。
周辺機器バスコントローラ270は、システムコントローラ又は「サウスブリッジ」(SB)272と、PCIeコントローラ274と、を含み、これらの各々は、入力/出力(I/O)ハブ276及びSMNバスに双方向に接続されている。また、I/Oハブ276は、システムハブ266及びデータファブリック250に双方向に接続されている。よって、例えば、CPUコアは、I/Oハブ276を介してデータファブリック250がルーティングするアクセスを介して、USBコントローラ262、SATAインタフェースコントローラ264、SB272又はPCIeコントローラ274のレジスタをプログラムすることができる。
SMU280は、APU200上のリソースの動作を制御し、これらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の各コンポーネントにクロック信号を提供するために、例えば位相ロックループ(PLL)等のように図2に示されていない1つ以上のクロックソースを含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックの電力を管理し、CPUコア212,214及びグラフィックスコア220から測定された電力消費値を受信して、適切な電力状態を決定することができる。
また、APU200は、様々なシステムモニタリング及び省電力機能を実装する。特に、1つのシステムモニタリング機能は、サーマルモニタリングである。例えば、APU200が高温になると、SMU280は、CPUコア212,214及び/又はグラフィックスコア220の周波数及び電圧を低減することができる。APU200がさらに高温になると、APU200は完全にシャットダウンされてもよい。サーマルイベントは、SMNバスを介してSMU280によって外部センサから受信されてもよく、SMU280は、これに応じてクロック周波数及び/又は電源電圧を低減することができる。
図3は、いくつかの実施形態による、図2のAPU200での使用に適したメモリコントローラ300及び関連する物理インタフェース(PHY)330のブロック図である。メモリコントローラ300は、メモリチャネル310と、電力エンジン320と、を含む。メモリチャネル310は、ホストインタフェース312と、メモリチャネルコントローラ314と、物理インタフェース316と、を含む。ホストインタフェース312は、スケーラブルデータポート(SDP)を介して、メモリチャネルコントローラ314をデータファブリック250に双方向に接続する。物理インタフェース316は、DDR−PHYインタフェース仕様(DFI)に準拠するバスを介して、メモリチャネルコントローラ314をPHY330に双方向に接続する。電力エンジン320は、SMNバスを介してSMU280に双方向に接続されており、APB(Advanced Peripheral Bus)を介してPHY330に双方向に接続されており、メモリチャネルコントローラ314に双方向に接続されている。PHY330は、図1のメモリチャネル130又はメモリチャネル140等のメモリチャネルへの双方向接続を有する。メモリコントローラ300は、単一のメモリチャネルコントローラ314を使用した単一のメモリチャネル用のメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ314の動作を制御する電力エンジン320を有する。
図4は、いくつかの実施形態による、図2のAPU200での使用に適した他のメモリコントローラ400及び関連するPHY440,450のブロック図である。メモリコントローラ400は、メモリチャネル410,420と、電力エンジン430と、を含む。メモリチャネル410は、ホストインタフェース412と、メモリチャネルコントローラ414と、物理インタフェース416と、を含む。ホストインタフェース412は、SDPを介して、メモリチャネルコントローラ414をデータファブリック250に双方向に接続する。物理インタフェース416は、DFI仕様に準拠して、メモリチャネルコントローラ414をPHY440に双方向に接続する。メモリチャネル420は、ホストインタフェース422と、メモリチャネルコントローラ424と、物理インタフェース426と、を含む。ホストインタフェース422は、別のSDPを介して、メモリチャネルコントローラ424をデータファブリック250に双方向に接続する。物理インタフェース426は、DFI仕様に準拠して、メモリチャネルコントローラ424をPHY450に双方向に接続する。電力エンジン430は、SMNバスを介してSMU280に双方向に接続されており、APBを介してPHY440,450に双方向に接続されており、メモリチャネルコントローラ414,424に双方向に接続されている。PHY440は、図1のメモリチャネル130等のメモリチャネルへの双方向接続を有する。PHY450は、図1のメモリチャネル140等のメモリチャネルへの双方向接続を有する。メモリコントローラ400は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、以下に更に説明する方法でメモリチャネルコントローラ414及びメモリチャネルコントローラ424の両方の動作を制御する共有電力エンジン430を使用する。
図5は、いくつかの実施形態による、メモリコントローラ500のブロック図である。メモリコントローラ500は、概して、メモリチャネルコントローラ510と、電力コントローラ550と、を含む。メモリチャネルコントローラ510は、概して、インタフェース512と、キュー514と、コマンドキュー520と、アドレスジェネレータ522と、コンテンツアドレス可能メモリ(CAM)524と、再生キュー530と、リフレッシュロジックブロック532と、タイミングブロック534と、ページテーブル536と、アービタ538と、エラー訂正コード(ECC)チェックブロック542と、ECC生成ブロック544と、データバッファ(DB)546と、を含む。
インタフェース512は、外部バスを介したデータファブリック250への第1双方向接続を有し、出力を有する。メモリコントローラ500において、この外部バスは、「AXI4」として知られる、イングランドのケンブリッジのARMホールディングスPLCによって指定されたAXI(advanced extensible interface)バージョン4と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース512は、FCLK(又は、MEMCLK)ドメインとして知られる第1クロックドメインから、UCLKドメインとして知られるメモリコントローラ500内の第2クロックドメインへのメモリアクセス要求を変換する。同様に、キュー514は、UCLKドメインからDFIインタフェースに関連するDFICLKドメインへのメモリアクセスを提供する。
アドレスジェネレータ522は、AXI4バスを介してデータファブリック250から受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、標準化されたフォーマットで表される物理アドレス空間内のアクセスアドレスを含む。アドレスジェネレータ522は、標準化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムBIOSは、起動すると、メモリシステム120内のメモリデバイスにクエリしてその細部及び構成を判別し、アドレスジェネレータ522に関連する構成レジスタのセットをプログラムする。アドレスジェネレータ522は、標準化されたアドレスを適切なフォーマットに変換するために、構成レジスタに記憶された構成を使用する。コマンドキュー520は、例えば、CPUコア212,214及びグラフィックスコア220等のデータ処理システム100内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー520は、アドレスジェネレータ522によって復号化されたアドレスフィールドと、アービタ538がアクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。CAM524は、例えば、ライトアフターライト(WAW)及びリードアフターライト(RAW)順序付けルール等の順序付けルールを実施するための情報を含む。
再生キュー530は、アドレス及びコマンドパリティ応答、DDR4 DRAMに対する書き込み巡回冗長チェック(CRC)応答、又は、gDDR5 DRAMに対する書き込み及び読み出しCRC応答等の応答を待っているアービタ538によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー530は、ECCチェックブロック542にアクセスして、返されたECCが正確であるかエラーを示すかを判別する。再生キュー530は、これらのサイクルのうち1つのサイクルのパリティ又はCRCエラーの場合にアクセスが再生されることを可能にする。
リフレッシュロジック532は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのための状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュサイクルを実行するために定期的に起動する必要がある。リフレッシュロジック532は、DRAMチップ内のメモリセルの記憶キャパシタから電荷がリークすることによって生じるデータエラーを防止するために、リフレッシュコマンドを定期的に生成する。また、リフレッシュロジック532は、システムの熱変化によるオンダイターミネーション抵抗の不一致を防止するために、ZQを定期的に較正する。
アービタ538は、コマンドキュー520に双方向に接続されており、メモリチャネルコントローラ510の中心部である。アービタ538は、メモリバスの使用を改善するために、アクセスのインテリジェントなスケジューリングによって効率を改善する。アービタ538は、タイミングブロック534を使用して、コマンドキュー520内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判別することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られる起動コマンドの間の最小の指定時間を有する。タイミングブロック534は、このタイミングパラメータ及びJEDEC仕様で指定された他のタイミングパラメータに基づいて、適格性を決定するカウンタのセットを維持し、再生キュー530に双方向に接続されている。ページテーブル536は、各バンクのアクティブページに関する状態情報、及び、アービタ538のためのメモリチャネルのランクを維持し、再生キュー530に双方向に接続されている。
ECC生成ブロック544は、インタフェース512から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。DB546は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。アービタ538がメモリチャネルへのディスパッチのための対応する書き込みアクセスを選択した場合に、組み合わされた書き込みデータ/ECCをキュー514に出力する。
電力コントローラ550は、概して、AXIバージョン1(AXI)へのインタフェース552と、APBインタフェース554と、電力エンジン560と、を含む。インタフェース552は、図5において別個に示される「EVENT_n」という符号が付されたイベント信号を受信するための入力と出力とを含む、SMNへの第1双方向接続を有する。APBインタフェース554は、インタフェース552の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。電力エンジン560は、インタフェース552の出力に接続された入力と、キュー514の入力に接続された出力と、を有する。電力エンジン560は、構成レジスタのセット562と、マイクロコントローラ(μC)564と、自動リフレッシュコントローラ(SLFREF/PE)566と、信頼された読み出し/書き込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされ、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、これらのブロック(図5には詳細に示されていない)に接続された出力を有する。自動リフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し/書き込みタイミングエンジン568は、DDRインタフェースの最大読み出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はI/Oデバイスに提供する。
メモリチャネルコントローラ510は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ522は、アドレス情報を、メモリシステム内のランク、行ドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー520は、予め復号化された情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレスジェネレータ522がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ538は、例えばQoS要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック534によって示されるタイミング適格性情報、及び、ページテーブル536によって示されたアクティブページ情報を使用する。例えば、アービタ538は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠す。特に、通常の動作中、アービタ538は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
図6は、いくつかの実施形態による、図5のメモリコントローラ500によって使用される状態図600である。状態図600は、メモリコントローラ500によって利用されるリフレッシュコマンドのタイプに対応する状態の図である。状態図600は、自動リフレッシュ状態602と、リフレッシュ1状態(REF1)604と、リフレッシュ2状態(REF2)606と、リフレッシュ4状態(REF4)608と、を含む。状態図600は、矢印による状態遷移を表し、メモリコントローラ500は、条件610,612,614,616,618,620,622,624を含む対応する条件に応じて、状態遷移を実行する。
動作中、図5のメモリコントローラ500等のメモリコントローラは、図2のCPUコア複合体210内のCPUコア又はグラフィックスコア220等のメモリアクセスエージェントに接続されており、メモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ500は、図1のメモリシステム120に接続するように構成されている。上述したように、メモリシステム120は、図1のDIMM134,136、138として実装されたメモリの複数のランクを含むことができる。メモリコントローラ500は、メモリシステム120内の各バンク又はバンクの組み合わせへのリフレッシュサイクルを定期的に生成するためのリフレッシュロジック回路(例えば、図5のリフレッシュロジック532等)を含む。リフレッシュロジック532は、オンザフライリフレッシュモードを実装し、リフレッシュコマンドは、リフレッシュされるメモリバンクに関連する条件に応じて自動的に選択された粒度で生成される。
リフレッシュロジック532は、第1状態と、REF1状態604と、第2状態と、REF2状態606又はREF4状態608の何れかと、を使用してオンザフライモードを実装する。REF1状態604は、リフレッシュ(REF)コマンドに応じて、バンク全体をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1)の使用に対応する。REF2状態606は、REFコマンドに応じて、にバンクの選択されたサブセット(ここでは、バンクの半分)をメモリに自動リフレッシュさせる第2自動リフレッシュコマンド(REF2)の使用に対応する。また、REF4状態608は、REFコマンドに応じて、バンクのより小さい選択されたサブセット(ここでは、バンクの4分の1)をメモリに自動リフレッシュさせる第3自動リフレッシュコマンド(REF4)の使用に対応する。メモリコントローラ290は、リフレッシュされるバンクに関連する第1条件(条件618又は条件622)を検出したことに応じて、REF1状態604と、REF2状態606又はREF4状態608と、の間で切り替えを行う。メモリコントローラ290は、第2条件(条件624又は条件620)を検出したことに応じて、REF2状態606又はREF4状態608からREF1状態604への切り替えを行う。
概して、リフレッシュロジック532は、リフレッシュ間隔パラメータtREFIによって示された期間内に各メモリバンクをリフレッシュするのに十分なレートでリフレッシュコマンドを発行する。各tREFI期間の間に発行されたリフレッシュコマンドの数は、現在のリフレッシュ状態で発行されたリフレッシュコマンドのタイプに依存する。リフレッシュロジック532は、バンクがREF1状態604にある場合に、各tREFI期間の間に1つのREF1コマンドをバンクに提供し、バンクがREF2状態606にある場合に、各tREFI期間の間に2つのREF2コマンドをバンクに提供し、又は、バンクがREF4状態608にある場合に、各tREFI期間の間に4つのREF4コマンドをバンクに提供する。
リフレッシュロジック532は、対応するメモリが低電力状態にある場合、自動リフレッシュ状態602にある。メモリコントローラ500がメモリを低電力状態から出させると、リフレッシュロジック532は、自動リフレッシュ状態602から、REF1状態604、REF2状態606及びREF4状態608のうち選択された1つの状態に遷移する。メモリコントローラ290は、特定の条件が満たされるまで、REF1状態604、REF2状態606及びREF4状態608毎に示された状態遷移612,614,616として、現在の状態に留まる。
リフレッシュ状態間を切り替えるためのいくつかの条件は、単独で又は様々な組み合わせで使用することができる。図示された実施形態では、これらの条件は、バンクに対する保留中のリフレッシュの数、図5のコマンドキュー520におけるバンクに対する保留中のメモリアクセス要求の数、バンクに対する保留中のメモリアクセス要求の優先度及び/又はタイプ(読み出し若しくは書き込み)、保留中のリフレッシュの数が所定の閾値を上回っている場合に、所定のバンクに対する保留中のリフレッシュ条件が存在するか否かを含む。更に、図6は、所定のランクのメモリ内の単一のバンクのリフレッシュ状態機械を示しているが、リフレッシュ状態機械は、所定のランクの全てのバンク及び複数のランクにおいて対応するバンク等のように、様々な方法でメモリシステムのより大きなサブセットに拡張してもよい。
1つの簡単な例を挙げると、リフレッシュロジック532は、バンクに対する保留中のメモリアクセス要求の数が閾値を超えている場合、REF1状態604とREF2状態606との間で切り替えることができる。この条件は、より低いレイテンシ及びより細かい粒度のリフレッシュが好ましいことを示している。一方、リフレッシュロジック532がREF2状態606にあるが、偶数のREF2コマンドが発行され、バンクに対する保留中のメモリアクセス要求が存在しないと判別した場合、効率を維持するために、REF2状態606からREF1状態604に戻る。リフレッシュロジック532がREF2状態606又はREF4状態608から状態遷移する前提条件は、発行されたリフレッシュの数が、一度にリフレッシュされているバンクの部分に対応することである。したがって、リフレッシュロジック532は、図5に示すように、これらの条件を追跡するためにアービタ538に接続されている。
図7は、異なるメモリリフレッシュ状態におけるリフレッシュ動作のブロック図である。図7のメモリリフレッシュ状態は、リフレッシュ1(REF1)状態700と、リフレッシュ2(REF2)状態710と、リフレッシュ4(REF4)状態720と、を含む。REF1状態700は、リフレッシュが開始する前のバンク702と、REF1コマンド中のREF1_1バンク704と、リフレッシュされたバンク706と、を含む。REF2状態710は、リフレッシュが開始する前のバンク702と、第1REF2コマンド中のREF2_1バンク714と、第2REF2コマンド中のREF2_2バンク716と、リフレッシュされたバンク706と、を含む。REF4状態720は、リフレッシュ状態の前のバンク702と、第1REF4コマンド中のREF4_1バンク724と、第2REF4コマンド中のREF4_2バンク726と、第3REF4コマンド中のREF4_3バンク728と、第4REF4コマンド中のREF4_4バンク730と、リフレッシュされたバンク706と、を含む。
REF1状態700は、1つ以上のバンク702をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1コマンド)の使用に対応する。REF1コマンドが実行されると、REF1バンク704がリフレッシュされ、リフレッシュされたバンク706が得られる。
REF2状態710は、REF2_1バンク714及びREF2_2バンク716で示されるように、リフレッシュ間隔(tREFI)として知られる期間内にバンク702の第1サブセット及び第2サブセットをメモリに自動リフレッシュさせる第2自動リフレッシュコマンド(REF2コマンド)の使用に対応する。REF2_1バンク714及びREF2_2バンク716の各々は、バンク702の別々の半分のサブセットである。
また、REF4状態720は、tREFI期間内にバンク702の第1サブセット、第2サブセット、第3サブセット及び第4サブセットをメモリに自動リフレッシュさせる第3自動リフレッシュコマンド(REF4コマンド)の使用に対応する。REF4_1バンク724、REF4_2バンク726、REF4_3バンク728及びREF4_4バンク730は、バンク702のリフレッシュされた第1サブセット、第2サブセット、第3サブセット及び第4サブセットに対応する。REF4_1バンク724、REF4_2バンク726、REF4_3バンク728及びREF4_4バンク730の各々は、REF4状態720内のバンク702の別々の4分の1のサブセットである。
リフレッシュの数は、状態変化が発生する前のサブセットの総数に対応している必要がある。一実施形態では、バンク702等のバンク全体をメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1)が受信される。第1条件を検出したことに応じて、REF1 700からREF2 710又はREF4 720への切り替えが行われる。REF2コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に2の倍数になるはずである。REF4コマンドを受信する場合、リフレッシュの総数は、条件が満たされる前に4の倍数になるはずである。
これらの異なるリフレッシュモードをREFIモードよりも細かい粒度で提供し、メモリコントローラ500によって既に追跡されている保留中のメモリアクセス要求の特性を用いて、オンザフライで状態変化の決定を行うことにより、メモリコントローラ500は、システムバスの使用率が高い期間内に入ってくるメモリアクセス要求のレイテンシを低減することができ、システムバスの使用率が低い期間内にメモリバンクをより効率的にリフレッシュすることができる。
図8は、図5のメモリコントローラ500によって使用される方法800のフローチャートである。ブロック802において、第1状態において第1自動リフレッシュコマンドが生成される。ブロック804において、第2状態において第2自動リフレッシュコマンドが生成される。ブロック806において、第1条件が検出される。ブロック808において、第1状態と第2状態との間での切り替えが行われる。ブロック810において、第2条件が検出される。ブロック810において、第2条件が検出されたことに応じて、ブロック812において、第2状態と第1状態との間での切り替えが行われる。終了ブロックにおいて処理が終了する。
図8に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。図8に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/若しくは実行可能な他の命令フォーマットであってもよい。
特定の実施形態について説明したが、これらの実施形態の様々な変更が当業者には明らかであろう。メモリコントローラ500は、例えば、高帯域幅メモリ(HBM)及びRAMbus DRAM(RDRAM)等のDDRxメモリ以外の他のタイプのメモリにインタフェースすることができる。示された実施形態では、別々のDIMMに対応する各メモリのランクを示したが、他の実施形態では、各DIMMは、複数のランクをサポートすることができる。更に、メモリチャネルは、DDR4メモリの複数のランクを含んでもよい。
1つの形態では、データ処理システム(100)は、メモリチャネル(130)と、データプロセッサ(110)と、を備える。1つの態様によれば、データプロセッサ(110)は、バンク(702)に対する保留中のリフレッシュの数、バンク(702)へに対する保留中の要求の数、バンク(702)に対する保留中の要求の優先度、及び、バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、第1条件(618/622)を検出する。この態様によれば、データプロセッサ(110)は、第1状態(604)と第2状態(606/608)との間での切り替えの開始を決定するために、バンク(702)に対する保留中のリフレッシュの数を追跡してもよい。
別の態様によれば、第2自動リフレッシュコマンド(710/720)は、1つのランク(134)のバンク(702)の選択されたサブセットをリフレッシュする。
さらに別の態様によれば、第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の複数のバンクの選択されたサブセットをリフレッシュする。
さらに別の態様によれば、第2自動リフレッシュコマンド(710/720)は、複数のランク(134/136/138)の各々の対応するバンクの選択されたサブセットをリフレッシュする。
さらなる態様によれば、メモリチャネル(130)は、ダブルレート(DDR)バージョン4(DDR4)メモリの複数のランク(134/136/138)を含む。
別の態様では、データプロセッサ(110/200)は、メモリアクセスエージェント(210/220)と、メモリコントローラ(292/500)と、を備える。1つの態様によれば、メモリコントローラ(292/500)は、バンク(702)に対する保留中のリフレッシュの数、バンク(702)に対する保留中の要求の数、バンク(702)に対する保留中の要求の優先度、及び、バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、第1条件(618/622)を検出する。この態様によれば、メモリコントローラ(292/500)は、第1状態(604)と第2状態(606/608)との間での切り替えの開始を決定するために、バンク(702)に対する保留中のリフレッシュの数を追跡する。
別の態様によれば、第2自動リフレッシュコマンド(710/720)は、1つのランク(134)のバンク(702)の選択されたサブセットをリフレッシュする。
さらに別の態様によれば、第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の複数のバンクの選択されたサブセットをリフレッシュする。
さらに別の態様によれば、第2自動リフレッシュコマンド(710/720)は、複数のランク(134/136/138)の各々の対応するバンクの選択されたサブセットをリフレッシュする。
さらなる別の形態では、メモリコントローラ(292/500)を介してメモリシステム(120)のリフレッシュを管理する方法(800)は、メモリコントローラ(292/500)が第1状態(604/802)にある場合に第1自動リフレッシュコマンド(700)を生成することであって、第1自動リフレッシュコマンド(700)は、メモリにバンク(702)を自動リフレッシュさせる、ことと、メモリコントローラ(292/500)が第2状態(606/608/802)にある場合に第2自動リフレッシュコマンド(710/712)を生成することであって、第2自動リフレッシュコマンド(710/712)は、メモリにバンク(702)の選択されたサブセットを自動リフレッシュさせる、ことと、バンク(702)に関連する第1条件(612/618/806/808)をメモリコントローラ(292/500)が検出したことに応じて、第1状態と第2状態との間で切り替えを行うことと、第2条件(620/624/810/812)をメモリコントローラ(292/500)が検出したことに応じて、第2状態と第1状態との間で切り替えを行うことと、を含む。1つの態様によれば、第2自動リフレッシュコマンドを生成することは、第2自動リフレッシュコマンドがリフレッシュ2(REF2)コマンドである場合に、リフレッシュ期間内にバンク(702)の第1サブセット(724)、第2サブセット(726)、第3サブセット(728)及び第4サブセット(730)をリフレッシュすることを含み、バンクの第1サブセット(724)、第2サブセット(726)、第3サブセット(728)及び第4サブセット(724)は、バンク(702)の別々の4分の1のサブセットである。
別の態様によれば、方法は、バンク(702)に対する保留中のリフレッシュの数、バンク(702)に対する保留中の要求の数、バンク(702)に対する保留中の要求の優先度、及び、バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、第1条件を検出することをさらに含む。
さらなる別の態様によれば、方法は、第2自動リフレッシュコマンドを生成したことに応じて、1つのランク(134)のバンク(702)の選択されたサブセットをリフレッシュすることをさらに含む。
さらなる別の態様によれば、方法は、第2自動リフレッシュコマンドを生成したことに応じて、1つのランク(134)の複数のバンクの選択されたサブセットをリフレッシュすることをさらに含む。
さらなる態様によれば、方法は、第2自動リフレッシュコマンドを前記生成したことに応じて、複数のランク(134/136/138)の各々の対応するバンクの選択されたサブセットをリフレッシュすることをさらに含む。
さらなる別の形態では、メモリコントローラ(500)は、コマンドキュー(520)と、アービタ(538)と、リフレッシュロジック回路(532)と、を備える。1つの態様によれば、リフレッシュロジック回路(532)は、バンクに対する保留中のリフレッシュの数、バンクに対する保留中の要求の数、メモリバンクに対する保留中の要求の優先度、及び、バンクに対する保留中の要求のタイプのうち1つ以上に応じて、第1状態(604)と第2状態(606)との間を遷移する。
別の態様によれば、リフレッシュロジック回路(532)は、メモリバンクに対する保留中のメモリアクセス要求の数が所定の閾値を上回っていることに応じて、第1状態(604)と第2状態(606)との間を遷移する。
さらなる別の態様によれば、リフレッシュロジック回路(532)は、一度にリフレッシュされるメモリバンクの一部に対応するいくつかの自動リフレッシュコマンドを発行した後にのみ、第2状態(606)と第1状態(604)との間を遷移する。
さらなる別の態様によれば、リフレッシュロジック回路(532)は、コマンドキュー(520)がメモリバンクへのメモリアクセス要求を記憶していない場合に、第2状態(606)と第1状態(604)との間を遷移する。
さらなる態様によれば、リフレッシュロジック回路(532)は、オンザフライリフレッシュモードにおいて、メモリシステム(120)への自動リフレッシュコマンドを、メモリシステム(120)の所定のランクにおける全てのバンクについて自動選択した粒度を用いて生成する。
さらなる態様によれば、リフレッシュロジック回路(532)は、オンザフライリフレッシュモードにおいて、メモリシステム(120)への自動リフレッシュコマンドを、メモリシステム(120)の複数のランクにおいて対応するバンクについて自動選択した粒度を用いて生成する。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。

Claims (43)

  1. データ処理システム(100)であって、
    少なくとも1つのランク(134/136/138)を含むメモリチャネル(130)と、
    前記メモリチャネル(130)に接続されたデータプロセッサ(110)であって、前記少なくとも1つのランク(134/136/138)にアクセスするように構成されたデータプロセッサ(110)と、を備え、
    前記データプロセッサ(110)は、リフレッシュロジック(532)を有しており、前記リフレッシュロジック(532)の起動に応じて、
    前記メモリチャネル(130)のバンク(702)へのリフレッシュサイクルを生成することであって、前記データプロセッサ(110)は、第1状態(604)及び第2状態(606/608)のうち1つの状態を選択し、前記第1状態(604)は、前記データプロセッサ(110)に前記バンク(702)を自動リフレッシュさせる第1自動リフレッシュコマンド(700)に対応し、前記第2状態は、前記データプロセッサ(110)に前記バンク(702)の選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンド(710/720)に対応する、ことと、
    前記バンク(702)に関連する第1条件(618/622)を前記リフレッシュロジック(532)が検出したことに応じて、前記第1状態(604)と前記第2状態(606/608)との間での切り替えを開始することと、
    第2条件(620/624)の検出に応じて、前記第2状態(606/608)と前記第1状態(604)との間での切り替えを開始することと、
    を行うように構成されている、
    データ処理システム(100)。
  2. 前記リフレッシュロジック(532)は、前記バンク(702)に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第1条件(816)を検出する、
    請求項1のデータ処理システム(100)。
  3. 前記リフレッシュロジック(532)は、前記バンク(702)に送信されたリフレッシュの数が前記バンク(702)のサブセットの総数に対応することに応じて、前記第2条件(810)を検出し、
    前記データプロセッサは、前記バンク(702)へのアクセス要求を記憶しない、
    請求項1のデータ処理システム(100)。
  4. 前記データプロセッサ(110)は、前記第2自動リフレッシュコマンドがリフレッシュ2(REF2)コマンドである場合に、リフレッシュサイクル時間内に前記バンク(702)の第1サブセット(714)及び第2サブセット(716)をリフレッシュし、
    前記バンク(702)の前記第1サブセット(714)及び前記第2サブセット(716)の各々は、前記バンク(702)の別々の半分のサブセットである、
    請求項1のデータ処理システム(100)。
  5. 前記データプロセッサ(110)は、前記第2自動リフレッシュコマンドがリフレッシュ4(REF4)コマンドである場合に、前記リフレッシュサイクル時間内に前記バンク(702)の前記第1サブセット(724)、前記第2サブセット(726)、第3サブセット(728)及び第4サブセット(730)をリフレッシュし、
    前記バンク(702)の前記第1サブセット(724)、前記第2サブセット(726)、前記第3サブセット(728)及び前記第4サブセット(740)の各々は、前記バンク(702)の別々の4分の1のサブセットである、
    請求項4のデータ処理システム(100)。
  6. 前記データプロセッサ(110)は、前記バンク(702)に対する保留中のリフレッシュの数、前記バンク(702)に対する保留中の要求の数、前記バンク(702)に対する保留中の要求の優先度、及び、前記バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、前記第1条件(618/622)を検出する、
    請求項1のデータ処理システム(100)。
  7. 前記データプロセッサ(110)は、前記第1状態(604)と前記第2状態(606/608)との間での切り替えの開始を決定するために、前記バンク(702)に対する保留中のリフレッシュの数を追跡する、
    請求項6のデータ処理システム(100)。
  8. 前記第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の前記バンク(702)の前記選択されたサブセットをリフレッシュする、
    請求項1のデータ処理システム(100)。
  9. 前記第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の複数のバンクの前記選択されたサブセットをリフレッシュする、
    請求項1のデータ処理システム(100)。
  10. 前記第2自動リフレッシュコマンド(710/720)は、複数のランク(134/136/138)の各々の対応するバンクの前記選択されたサブセットをリフレッシュする、
    請求項1のデータ処理システム(100)。
  11. 前記メモリチャネル(130)は、ダブルレート(DDR)バージョン4(DDR4)メモリの複数のランク(134/136/138)を含む、
    請求項1のデータ処理システム(100)。
  12. データプロセッサ(110/200)であって、
    メモリアクセスエージェント(210/220)と、
    前記メモリアクセスエージェント(210/220)に接続されたメモリコントローラ(292/500)であって、メモリシステム(120)に接続するように構成されたメモリコントローラ(292/500)と、を備え、
    前記メモリコントローラ(292/500)は、
    第1状態(604)及び第2状態(606/608)を含むオンザフライモードを有する、前記メモリシステム(120)のメモリへのリフレッシュサイクルを生成するためのリフレッシュロジック回路(532)を備えており、前記第1状態(604)は、前記メモリにバンク(702)を自動リフレッシュさせる第1自動リフレッシュコマンド(700)に対応しており、前記第2状態(606/608)は、前記メモリに前記バンク(702)の選択されたサブセットを自動リフレッシュさせる第2自動リフレッシュコマンド(710/720)に対応しており、
    前記メモリシステム(120)の前記バンク(702)に関連する第1条件(618/622)を前記リフレッシュロジック回路(532)が検出したことに応じて、前記第1状態(604)と前記第2状態(606/608)との間で切り替えを行い、
    第2条件(620/624)をリフレッシュロジック回路(532)が検出したことに応じて、前記第2状態(606/608)と前記第1状態(604)との間で切り替えを行う、
    データプロセッサ(110/200)。
  13. 前記リフレッシュロジック回路(532)は、前記バンク(702)に対する保留中のリフレッシュの数が所定の閾値を上回っていることに応じて、前記第1条件(620/624)を検出する、
    請求項12のデータプロセッサ(110/200)。
  14. 前記リフレッシュロジック回路(532)は、前記バンク(702)に対する保留中のリフレッシュの数に応じて前記第2条件(620/624)を検出する、
    請求項12のデータプロセッサ(110/200)。
  15. 前記メモリコントローラ(292/500)は、前記第2自動リフレッシュコマンド(710/720)がリフレッシュ2(REF2)コマンド(710)である場合に、リフレッシュサイクル時間内に前記バンク(702)の第1サブセット(714)及び第2サブセット(716)をリフレッシュするように構成されており、
    前記バンク(702)の前記第1サブセット(714)及び前記第2サブセット(716)の各々は、前記バンク(702)の別々の半分のサブセットである、
    請求項12のデータプロセッサ(110/200)。
  16. 前記メモリコントローラ(292/500)は、前記第2自動リフレッシュコマンド(710/720)がリフレッシュ4(REF4)コマンド(720)である場合に、リフレッシュサイクル時間内に前記バンク(702)の第1サブセット(724)、第2サブセット(726)、第3サブセット(728)及び第4サブセット(730)をリフレッシュするように構成されており、
    前記バンク(702)の前記第1サブセット(724)、前記第2サブセット(726)、前記第3サブセット(728)及び前記第4サブセット(740)の各々は、前記バンク(720)の別々の4分の1のサブセットである、
    請求項12のデータプロセッサ(110/200)。
  17. 前記メモリコントローラ(292/500)は、前記バンク(702)に対する保留中のリフレッシュの数、前記バンク(702)に対する保留中の要求の数、前記バンク(702)に対する保留中の要求の優先度、及び、前記バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、前記第1条件(618/622)を検出する、
    請求項12のデータプロセッサ(110/200)。
  18. 前記メモリコントローラ(292/500)は、前記第1状態(604)と前記第2状態(606/608)との間での切り替えの開始を決定するために、前記バンク(702)に対する保留中のリフレッシュの数を追跡する、
    請求項17のデータプロセッサ(110/200)。
  19. 前記第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の前記バンク(702)の前記選択されたサブセットをリフレッシュする、
    請求項12のデータプロセッサ(110/200)。
  20. 前記第2自動リフレッシュコマンド(710/720)は、1つのランク(134)の複数のバンクの前記選択されたサブセットをリフレッシュする、
    請求項12のデータプロセッサ(110/200)。
  21. 前記第2自動リフレッシュコマンド(710/720)は、複数のランク(134/136/138)の各々の対応するバンクの前記選択されたサブセットをリフレッシュする、
    請求項12のデータプロセッサ(110/200)。
  22. メモリコントローラ(292/500)を介してメモリシステム(120)内のメモリのリフレッシュを管理する方法(800)であって、
    前記メモリコントローラ(292/500)が第1状態(604/802)にある場合に第1自動リフレッシュコマンド(700)を生成することであって、前記第1自動リフレッシュコマンド(700)は、前記メモリにバンク(702)を自動リフレッシュさせる、ことと、
    前記メモリコントローラ(292/500)が第2状態(606/608/802)にある場合に第2自動リフレッシュコマンド(710/712)を生成することであって、前記第2自動リフレッシュコマンド(710/712)は、前記メモリに前記バンク(702)の選択されたサブセットを自動リフレッシュさせる、ことと、
    前記バンク(702)に関連する第1条件(612/618/806/808)を前記メモリコントローラ(292/500)が検出したことに応じて、前記第1状態と前記第2状態との間で切り替えを行うことと、
    第2条件(620/624/810/812)を前記メモリコントローラ(292/500)が検出したことに応じて、前記第2状態と前記第1状態との間で切り替えを行うことと、を含む、
    方法。
  23. 前記第1条件を検出することは、
    前記バンク(702)に対する保留中のリフレッシュの数が所定の閾値を上回ったときを検出することを含む、
    請求項22の方法(800)。
  24. 前記第2条件を検出することは、
    送信されたリフレッシュの数が前記バンク(702)のサブセットの総数に対応することを検出することと、
    前記メモリコントローラ(292/500)が、前記バンク(702)へのアクセス要求を記憶しないことを検出することと、を含む、
    請求項22の方法(800)。
  25. 前記第2自動リフレッシュコマンドを生成することは、
    前記第2自動リフレッシュコマンドがリフレッシュ2(REF2)コマンド(710)である場合に、リフレッシュ期間内に前記バンク(702)の第1サブセット(714)及び第2サブセット(716)をリフレッシュすることを含み、
    前記バンク(702)の前記第1サブセット(714)及び前記第2サブセット(716)の各々は、前記バンク(702)の別々の半分のサブセットである、
    請求項22の方法(800)。
  26. 前記第2自動リフレッシュコマンドを生成することは、
    前記第2自動リフレッシュコマンドがリフレッシュ4(REF4)コマンドである場合に、リフレッシュ期間内に前記バンク(702)の第1サブセット(724)、第2サブセット(726)、第3サブセット(728)及び第4サブセット(730)をリフレッシュすることを含み、
    前記バンクの前記第1サブセット(724)、前記第2サブセット(726)、前記第3サブセット(728)及び前記第4サブセット(724)は、前記バンク(702)の別々の4分の1のサブセットである、
    請求項22の方法(800)。
  27. 前記バンク(702)に対する保留中のリフレッシュの数、前記バンク(702)に対する保留中の要求の数、前記バンク(702)に対する保留中の要求の優先度、及び、前記バンク(702)に対する保留中の要求のタイプのうち1つ以上に応じて、前記第1条件を検出することを含む、
    請求項22の方法(800)。
  28. 前記第2自動リフレッシュコマンドを生成したことに応じて、1つのランク(134)の前記バンク(702)の前記選択されたサブセットをリフレッシュすることを含む、
    請求項22の方法(800)。
  29. 前記第2自動リフレッシュコマンドを生成したことに応じて、1つのランク(134)の複数のバンクの前記選択されたサブセットをリフレッシュすることを含む、
    請求項22の方法(800)。
  30. 前記第2自動リフレッシュコマンドを生成したことに応じて、複数のランク(134/136/138)の各々の対応するバンクの前記選択されたサブセットをリフレッシュすることを含む、
    請求項22の方法(800)。
  31. 前記第1自動リフレッシュコマンド(700)を生成することと、
    前記第2自動リフレッシュコマンド(710/712)を生成することと、
    前記第1状態と前記第2状態との間で切り替えを行うことと、
    前記メモリの複数のバンクの各々で独立して前記第2状態と前記第1状態との間の切り替えを行うことと、
    を実行することを含む、
    請求項22の方法(800)。
  32. メモリアクセス要求を受信する入力と、メモリアクセスをメモリシステム(120)に提供する出力と、を有するメモリコントローラ(500)であって、
    前記メモリコントローラ(500)は、
    前記メモリアクセス要求を受信するコマンドキュー(520)であって、複数のエントリと、選択されたメモリアクセスを提供する出力と、を有するコマンドキュー(520)と、
    前記コマンドキュー(520)に接続されたアービタ(538)であって、前記メモリシステム(120)にディスパッチするために前記コマンドキュー(520)からエントリを選択するアービタ(538)と、
    前記アービタ(538)に接続されたリフレッシュロジック回路(532)であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム(120)への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行する、リフレッシュロジック回路(532)と、を備える、
    メモリコントローラ(500)。
  33. 前記リフレッシュロジック回路(532)は、第1状態(604)にある場合に、前記リフレッシュ間隔中に、前記メモリバンクの全てをメモリに自動リフレッシュさせる第1自動リフレッシュコマンド(REF1)を提供し、
    前記リフレッシュロジック回路(532)は、第2状態(606)にある場合に、前記リフレッシュ間隔中に、複数の自動リフレッシュコマンドに対応する前記メモリバンクの一部を自動リフレッシュする前記複数の自動リフレッシュコマンドを提供する、
    請求項32のメモリコントローラ(500)。
  34. 前記リフレッシュロジック回路(532)は、第2状態(606)にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの半分を前記メモリに自動リフレッシュさせる2つの第2自動リフレッシュコマンド(REF2)を提供する、
    請求項33のメモリコントローラ(500)。
  35. 前記リフレッシュロジック回路(532)は、第3状態(608)にある場合に、前記リフレッシュ間隔中に、それぞれ前記メモリバンクの4分の1を前記メモリに自動リフレッシュさせる4つの第3自動リフレッシュコマンド(REF4)を提供する、
    請求項34のメモリコントローラ(500)。
  36. 前記リフレッシュロジック回路(532)は、前記バンクに対する保留中のリフレッシュの数、前記バンクに対する保留中の要求の数、前記メモリバンクに対する保留中の要求の優先度、及び、前記バンクに対する保留中の要求のタイプのうち1つ以上に応じて、前記第1状態(604)と前記第2状態(606)との間を遷移する、
    請求項33のメモリコントローラ(500)。
  37. 前記リフレッシュロジック回路(532)は、前記メモリバンクに対する保留中のメモリアクセス要求の数が所定の閾値を上回っていることに応じて、前記第1状態(604)と前記第2状態(606)との間を遷移する、
    請求項33のメモリコントローラ(500)。
  38. 前記リフレッシュロジック回路(532)は、一度にリフレッシュされる前記メモリバンクの一部に対応するいくつかの自動リフレッシュコマンドを発行した後にのみ、前記第2状態(606)と前記第1状態(604)との間を遷移する、
    請求項33のメモリコントローラ(500)。
  39. 前記リフレッシュロジック回路(532)は、前記コマンドキュー(520)が前記メモリバンクへのメモリアクセス要求を記憶していない場合に、前記第2状態(606)と前記第1状態(604)との間を遷移する、
    請求項38のメモリコントローラ(500)。
  40. 前記リフレッシュロジック回路(532)は、前記オンザフライリフレッシュモードにおいて、前記メモリシステム(120)への自動リフレッシュコマンドを、前記メモリシステム(120)の所定のランクにおける全てのバンクについて自動選択した粒度を用いて生成する、
    請求項32のメモリコントローラ(500)。
  41. 前記リフレッシュロジック回路(532)は、前記オンザフライリフレッシュモードにおいて、前記メモリシステム(120)への自動リフレッシュコマンドを、前記メモリシステム(120)の複数のランクにおいて対応するバンクについて自動選択した粒度を用いて生成する、
    請求項32のメモリコントローラ(500)。
  42. メモリコントローラ(500)であって、
    メモリアクセス要求を受信する入力と、出力と、を有するインタフェース(512)と、
    前記インタフェース(512)の出力に接続されたデコーダ(522)であって、前記メモリアクセス要求を復号化して、対応するメモリアクセスを提供するデコーダ(522)と、
    前記デコーダ(522)の出力に接続された第1入力と、第2入力と、出力と、を有するコマンドキュー(520)であって、複数のエントリを有するコマンドキュー(520)と、
    前記コマンドキュー(520)に接続されたアービタ(538)であって、前記メモリシステム(120)にディスパッチするために前記コマンドキュー(520)からエントリを選択し、前記コマンドキュー(520)の第2入力に自動リフレッシュコマンドを提供するアービタ(538)と、
    前記コマンドキュー(520)の出力に接続された入力と、メモリチャネルに接続するための出力と、を有する第2キュー(514)と、
    前記アービタ(514)に接続されたリフレッシュロジック回路(532)であって、オンザフライリフレッシュモードにおいて、リフレッシュされるメモリバンクに関連する条件に応じて自動選択した粒度を有する、前記メモリシステム(120)への自動リフレッシュコマンドを生成し、前記粒度に反比例するリフレッシュ間隔中にいくつかの自動リフレッシュコマンドを発行し、前記自動リフレッシュコマンドを前記アービタ(538)に提供するリフレッシュロジック回路(532)と、を備える、
    メモリコントローラ(500)。
  43. メモリへのアクセスを制御する方法であって、
    メモリアクセス要求を受信することと、
    前記メモリアクセス要求を復号化して、復号化されたメモリアクセス要求を提供することと、
    前記復号化されたメモリアクセス要求をコマンドキュー(520)に記憶することと、
    自動リフレッシュコマンドを前記コマンドキュー(520)に記憶することと、
    前記復号化されたメモリアクセス要求及び前記自動リフレッシュコマンドのうち選択された1つを前記メモリに提供するために、前記コマンドキュー(520)において、前記復号化されたメモリアクセス要求と前記自動リフレッシュコマンドとの間でアービトレーションすることと、
    リフレッシュされるメモリバンクに関連する条件に応じて、オンザフライリフレッシュモードにおいて、自動選択された粒度を用いて前記自動リフレッシュコマンドを生成することと、を含む、
    方法。
JP2018556343A 2016-05-25 2017-05-23 細かい粒度のリフレッシュ Active JP6730453B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/164,721 2016-05-25
US15/164,721 US9576637B1 (en) 2016-05-25 2016-05-25 Fine granularity refresh
PCT/US2017/034010 WO2017205378A1 (en) 2016-05-25 2017-05-23 Fine granularity refresh

Publications (2)

Publication Number Publication Date
JP2019519836A true JP2019519836A (ja) 2019-07-11
JP6730453B2 JP6730453B2 (ja) 2020-07-29

Family

ID=58017784

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018556343A Active JP6730453B2 (ja) 2016-05-25 2017-05-23 細かい粒度のリフレッシュ

Country Status (6)

Country Link
US (2) US9576637B1 (ja)
EP (2) EP3433860B1 (ja)
JP (1) JP6730453B2 (ja)
KR (1) KR102235055B1 (ja)
CN (2) CN112506422B (ja)
WO (1) WO2017205378A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102346629B1 (ko) * 2014-12-05 2022-01-03 삼성전자주식회사 메모리 접근 제어 방법 및 장치
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
KR20180047778A (ko) * 2016-11-01 2018-05-10 삼성전자주식회사 단계별 저전력 상태들을 갖는 메모리 장치
US10446215B1 (en) * 2016-11-16 2019-10-15 Cadence Design Systems, Inc. System and method for adaptively optimized refresh of memory
US10490251B2 (en) 2017-01-30 2019-11-26 Micron Technology, Inc. Apparatuses and methods for distributing row hammer refresh events across a memory device
CN106875971B (zh) * 2017-02-16 2021-01-22 上海兆芯集成电路有限公司 动态随机存取存储器控制器及其控制方法
EP3605541A4 (en) 2017-04-14 2020-04-01 Huawei Technologies Co., Ltd. MEMORY REFRESHING TECHNOLOGY AND COMPUTER SYSTEM
SG11201908892TA (en) * 2017-04-14 2019-11-28 Huawei Tech Co Ltd Memory refresh technology and computer system
US10141041B1 (en) 2017-11-01 2018-11-27 Micron Technology, Inc. Systems and methods for maintaining refresh operations of memory banks using a shared
US11017833B2 (en) 2018-05-24 2021-05-25 Micron Technology, Inc. Apparatuses and methods for pure-time, self adopt sampling for row hammer refresh sampling
US10573370B2 (en) 2018-07-02 2020-02-25 Micron Technology, Inc. Apparatus and methods for triggering row hammer address sampling
CN110729006B (zh) 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
US10535393B1 (en) * 2018-07-21 2020-01-14 Advanced Micro Devices, Inc. Configuring dynamic random access memory refreshes for systems having multiple ranks of memory
US10685696B2 (en) 2018-10-31 2020-06-16 Micron Technology, Inc. Apparatuses and methods for access based refresh timing
WO2020117686A1 (en) 2018-12-03 2020-06-11 Micron Technology, Inc. Semiconductor device performing row hammer refresh operation
CN111354393B (zh) * 2018-12-21 2023-10-20 美光科技公司 用于目标刷新操作的时序交错的设备和方法
US10957377B2 (en) 2018-12-26 2021-03-23 Micron Technology, Inc. Apparatuses and methods for distributed targeted refresh operations
US11615831B2 (en) 2019-02-26 2023-03-28 Micron Technology, Inc. Apparatuses and methods for memory mat refresh sequencing
US11227649B2 (en) 2019-04-04 2022-01-18 Micron Technology, Inc. Apparatuses and methods for staggered timing of targeted refresh operations
US10915451B2 (en) * 2019-05-10 2021-02-09 Samsung Electronics Co., Ltd. Bandwidth boosted stacked memory
US11069393B2 (en) 2019-06-04 2021-07-20 Micron Technology, Inc. Apparatuses and methods for controlling steal rates
US10978132B2 (en) 2019-06-05 2021-04-13 Micron Technology, Inc. Apparatuses and methods for staggered timing of skipped refresh operations
US10811076B1 (en) 2019-06-29 2020-10-20 Intel Corporation Battery life based on inhibited memory refreshes
US11302374B2 (en) 2019-08-23 2022-04-12 Micron Technology, Inc. Apparatuses and methods for dynamic refresh allocation
US11302377B2 (en) 2019-10-16 2022-04-12 Micron Technology, Inc. Apparatuses and methods for dynamic targeted refresh steals
US11531601B2 (en) 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules
US11222685B2 (en) * 2020-05-15 2022-01-11 Advanced Micro Devices, Inc. Refresh management for DRAM
US11120860B1 (en) 2020-08-06 2021-09-14 Micron Technology, Inc. Staggering refresh address counters of a number of memory devices, and related methods, devices, and systems
US11309010B2 (en) 2020-08-14 2022-04-19 Micron Technology, Inc. Apparatuses, systems, and methods for memory directed access pause
US11348631B2 (en) 2020-08-19 2022-05-31 Micron Technology, Inc. Apparatuses, systems, and methods for identifying victim rows in a memory device which cannot be simultaneously refreshed
US11380382B2 (en) 2020-08-19 2022-07-05 Micron Technology, Inc. Refresh logic circuit layout having aggressor detector circuit sampling circuit and row hammer refresh control circuit
US11809743B2 (en) * 2020-09-21 2023-11-07 Advanced Micro Devices, Inc. Refresh management list for DRAM
US11557331B2 (en) 2020-09-23 2023-01-17 Micron Technology, Inc. Apparatuses and methods for controlling refresh operations
US11222686B1 (en) 2020-11-12 2022-01-11 Micron Technology, Inc. Apparatuses and methods for controlling refresh timing
US11264079B1 (en) 2020-12-18 2022-03-01 Micron Technology, Inc. Apparatuses and methods for row hammer based cache lockdown
US11995008B2 (en) * 2021-06-22 2024-05-28 Advanced Micro Devices, Inc. Memory controller with hybrid DRAM/persistent memory channel arbitration
US11755246B2 (en) * 2021-06-24 2023-09-12 Advanced Micro Devices, Inc. Efficient rank switching in multi-rank memory controller
CN113823340B (zh) * 2021-09-18 2023-08-25 长鑫存储技术有限公司 刷新命令保护方法及电路、存储器刷新方法及电路、设备
US20230176608A1 (en) * 2021-12-08 2023-06-08 Advanced Micro Devices, Inc. Read clock start and stop for synchronous memories
US12002541B2 (en) 2021-12-08 2024-06-04 Advanced Micro Devices, Inc. Read clock toggle at configurable PAM levels

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226709B1 (en) 1997-10-24 2001-05-01 Compaq Computer Corporation Memory refresh control system
US6295586B1 (en) 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
JP4381013B2 (ja) * 2003-03-17 2009-12-09 富士通マイクロエレクトロニクス株式会社 半導体記憶装置
JP2008502083A (ja) * 2004-06-08 2008-01-24 ユニバーシティー オブ ロチェスター クラスタ化されたプロセッサ群における通信並列性のトレードオフを動的に管理する方法
JP4869011B2 (ja) * 2006-09-29 2012-02-01 富士通セミコンダクター株式会社 メモリシステム
US7788414B2 (en) * 2007-01-16 2010-08-31 Lantiq Deutschland Gmbh Memory controller and method of controlling a memory
JP2011192343A (ja) * 2010-03-12 2011-09-29 Elpida Memory Inc 半導体装置及びそのリフレッシュ制御方法並びにコンピュータシステム
US8990490B2 (en) * 2011-11-29 2015-03-24 Rambus Inc. Memory controller with reconfigurable hardware
KR20140028659A (ko) * 2012-08-30 2014-03-10 에스케이하이닉스 주식회사 리프레시 제어회로 및 이를 포함하는 메모리 장치
KR102021401B1 (ko) * 2012-08-30 2019-11-04 에스케이하이닉스 주식회사 메모리 장치
US9734888B2 (en) * 2013-12-11 2017-08-15 SK Hynix Inc. Address storage circuit and memory and memory system including the same
US9412433B2 (en) * 2014-01-22 2016-08-09 Nanya Technology Corp. Counter based design for temperature controlled refresh
US9293188B2 (en) 2014-02-03 2016-03-22 Advanced Micro Devices, Inc. Memory and memory controller for high reliability operation and method
US9490002B2 (en) 2014-07-24 2016-11-08 Rambus Inc. Reduced refresh power
KR102204240B1 (ko) * 2014-09-11 2021-01-19 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US9418723B2 (en) * 2014-12-23 2016-08-16 Intel Corporation Techniques to reduce memory cell refreshes for a memory device
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh

Also Published As

Publication number Publication date
KR102235055B1 (ko) 2021-04-01
EP3433860A1 (en) 2019-01-30
EP3965107A1 (en) 2022-03-09
EP3433860B1 (en) 2021-12-01
CN112506422B (zh) 2022-12-20
CN112506422A (zh) 2021-03-16
CN109155143A (zh) 2019-01-04
US9899074B2 (en) 2018-02-20
EP3433860A4 (en) 2019-11-20
US9576637B1 (en) 2017-02-21
US20170345482A1 (en) 2017-11-30
CN109155143B (zh) 2020-11-20
KR20190003517A (ko) 2019-01-09
WO2017205378A1 (en) 2017-11-30
JP6730453B2 (ja) 2020-07-29

Similar Documents

Publication Publication Date Title
JP6730453B2 (ja) 細かい粒度のリフレッシュ
US11221772B2 (en) Self refresh state machine mop array
KR102395745B1 (ko) 스트릭 및 판독/기입 트랜잭션 관리 기능을 갖는 메모리 제어기 아비터
KR102442078B1 (ko) 고속 메모리 인터페이스들을 위한 명령 중재
JP7181863B2 (ja) データ処理システム、データプロセッサ及び方法
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
JP7357169B2 (ja) Dramのリフレッシュ管理
US20170344309A1 (en) Low power memory throttling
JP2023543426A (ja) Dramのリフレッシュ管理リスト

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190221

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200323

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200323

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200324

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: 20200609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200702

R150 Certificate of patent or registration of utility model

Ref document number: 6730453

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250