JP2019522257A - 低電力メモリのスロットリング - Google Patents

低電力メモリのスロットリング Download PDF

Info

Publication number
JP2019522257A
JP2019522257A JP2018557082A JP2018557082A JP2019522257A JP 2019522257 A JP2019522257 A JP 2019522257A JP 2018557082 A JP2018557082 A JP 2018557082A JP 2018557082 A JP2018557082 A JP 2018557082A JP 2019522257 A JP2019522257 A JP 2019522257A
Authority
JP
Japan
Prior art keywords
memory
ranks
rank
active
controller
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
JP2018557082A
Other languages
English (en)
Other versions
JP6761870B2 (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 JP2019522257A publication Critical patent/JP2019522257A/ja
Application granted granted Critical
Publication of JP6761870B2 publication Critical patent/JP6761870B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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/1684Details of memory controller using multiple buses
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/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/4072Circuits for initialization, powering up or down, clearing memory or presetting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Power Sources (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

一形態では、データ処理システムは、複数のランクを有するメモリチャネルと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、複数のランクの各々にアクセスするように構成されている。データプロセッサは、所定のイベントを検出したことに応じて、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の他のランクを低電力状態にする。この場合、他のランクは、所定のイベントを検出したときに保留中の要求を有する少なくとも1つのランクを含む。次に、データプロセッサは、アクティブなランクに対するメモリアクセス要求を処理する。【選択図】図6

Description

本開示は、概して、データ処理システムに関し、より具体的には、低電力モードでメモリとインタフェースすることの可能なデータ処理システムに関する。
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用している。現在販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。DDR DRAMは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち1つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウン時には、全てのバンクがプリチャージされ、オンチップ遅延ロックループ(DLL)を無効にし、入力クロックをオフにし、出力バッファを無効にして電力消費を大幅に低減することができる。プリチャージパワーダウンは、比較的早く終了するので、DLLを動作させ続けることによって終了時間を短縮することができる。別の低電力モードは、アクティブパワーダウンである。アクティブパワーダウンは、少なくとも1つのバンクがアクティブのままである、すなわち、オープンな行を有している点でプリチャージパワーダウンと異なっており、これにより、プリチャージパワーダウンよりも早く終了することができる。さらに別の低電力モードは、セルフリフレッシュモードである。セルフリフレッシュモードでは、全てのバンクがアイドル状態であり、全ての外部クロッキングが除去されるが、DRAMは、内蔵タイマーを使用して、全ての行を周期的にリフレッシュすることによって、その内容を維持する。
最近のDDRメモリコントローラは、効率を高めるために、保留中のメモリアクセス要求を順不同に選ぶことができるように、保留中のメモリアクセス要求を記憶するためのキューを維持する。例えば、メモリコントローラは、現在の行をプリチャージして別の行をアクティブにするオーバヘッドを回避するために、所定のランクの同じ行への複数のメモリアクセス要求を順不同にキューから検索し、これらをメモリシステムに連続して発行することができる。メモリコントローラは、効率を改善することに加えて、低電力状態に出入りするのに必要とされる余分な時間を節電が上回るのを見越して、DDR DRAMの1つ以上のランクを低電力状態にする。既知のメモリコントローラは、DDR DRAMの特定のランクを、キュー内の当該ランクに対する保留中のメモリアクセス要求がない限り、低電力状態にしない。
いくつかの実施形態による、データ処理システムを示すブロック図である。 図1のデータ処理システムでの使用に適した高度処理ユニット(APU:Advanced Processing Unit)を示すブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)を示すブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYを示すブロック図である。 いくつかの実施形態による、メモリコントローラを示すブロック図である。 いくつかの実施形態による、図5のメモリコントローラによって使用され得るフロー図である。
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
以下に一形態で説明するように、データ処理システムは、複数のランクを含むメモリチャネルと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、複数のランクの各々にアクセスするように構成されている。データプロセッサは、所定のイベントを検出したことに応じて、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の他のランクを低電力状態にする。この場合、他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとも1つのランクを含む。次に、データプロセッサは、アクティブなランクに対するメモリアクセス要求を処理する。
他の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続されたメモリコントローラと、を含む。メモリコントローラは、第1の複数のランクを含むメモリシステムに接続するように構成されている。メモリコントローラは、第1の所定のイベントの検出に応じて、第1の複数のランクのうちアクティブなランクを選択し、第1の複数のランクのうちアクティブなランク以外の他のランクを低電力状態にする。例えば、所定のイベントは、熱イベントであってもよく、低電力状態は、プリチャージパワーダウン状態であってもよい。他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとの1つのランクを含む。次に、メモリコントローラは、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
さらに他の形態では、メモリシステムへのメモリアクセスのスロットリングを行う方法を使用して、潜在的に有害な熱イベントを軽減することができる。熱イベントが検出され、熱イベントの検出に応じて、複数のランクのうちアクティブなランクが選択され、複数のランクのうちアクティブなランク以外の他のランクが低電力状態にされる。他のランクは、保留中の要求を有する少なくとも1つのランクを含む。アクティブなランクに対する少なくとも1つのメモリアクセス要求が処理される。
図1は、いくつかの実施形態による、データ処理システム100を示すブロック図である。データ処理システム100は、概して、加速処理ユニット(APU:Accelerated Arocessing Unit)の形態にあるデータプロセッサ110と、メモリシステム120と、PCIe(Peripheral Component Interconnect express)システム150と、ユニバーサルシリアルバス(USB)システム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メモリに接続することができ、将来のメモリ技術に適応可能である。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。以下により詳細に説明するように、データプロセッサ110は、過熱を回避し、且つ、熱的過負荷の可能性を低減するために、特定の状況において電力のスロットリングを行うことができるメモリコントローラを含む。
図2は、図1のデータ処理システム100での使用に適したAPU200を示すブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理(MM)ハブ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は、FCLC(又は、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を記憶する。DB546は、アービタ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の入力に接続された出力と、「THERMAL THROTTLE」という符号が付された信号を提供するための出力と、を有する。電源エンジン560は、構成レジスタ562のセットと、マイクロコントローラ(μC)564と、セルフリフレッシュコントローラ(SLFREF/PE)566と、信頼された読み出し/書き込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされ、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、これらのブロック(図5には詳細に示されていない)に接続された出力を有する。セルフリフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し/書き込みタイミングエンジン568は、DDRインタフェースの最大読み出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はI/O装置に提供する。μC564は、とりわけ、熱イベントをスロットリングするかどうかを決定するために使用される。したがって、μC564は、EVENT_n信号のアクティブ化に応じて、構成レジスタ562の設定を決定し、選択された場合、THERMAL THROTTLE信号をアクティブ化する。
メモリチャネルコントローラ510は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ522は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー520は、予め復号化された情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレスジェネレータ522がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ538は、例えばQoS要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック534によって示されるタイミング適格性情報、及び、ページテーブル536によって示されたアクティブページ情報を使用する。例えば、アービタ538は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠す。特に、通常動作中、アービタ538は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
関連するメモリチャネル内の少なくとも1つのDIMMが過熱すると、メモリチャネルは、EVENT_n信号をアクティブにする。EVENT_n信号は、熱イベントがメモリチャネルの1つ以上のランクで発生したことを示すワイヤードOR信号である。電源エンジン560は、EVENT_n信号のアクティベーションを検出したことに応じて、THERMAL THROTTLE信号をアクティブにするようにプログラム可能である。アービタ538は、THERMAL THROTTLE信号のアクティベーションに応じて、低電力と効率との間のトレードオフを低電力が優先されるように変更するように、ポリシーを変更する。他の実施形態では、電源エンジン560は、イベントに応じて設定されるレジスタをポーリングすること等によって、イベント入力信号を使用することなくイベントを検出可能であることに留意されたい。アービタ538は、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の外のランクを低電力状態にする。この場合、他のランクは、THERMAL THROTTLE信号のアクティベーション時に保留中の要求を有する少なくとも1つのランクを含む。次に、アービタ538は、アクティブなランクに対するメモリアクセス要求を選ぶ。状況によっては、このメモリアクセス要求は、通常、アクセスを効率的に提供するため、又は、オーバヘッドアクセスを隠すために、別の要求を提供するようにバイパスされている。
図6は、いくつかの実施形態による、図5のメモリコントローラ500によって使用され得るフロー図600である。フローは、ボックス610で開始する。アクションボックス620では、アービタ538は、図5を参照して説明したように、デフォルト基準を使用して、UCLK信号と同期した次の要求を処理する。判別ボックス630では、アービタ538は、THERMAL THROTTLE信号がアクティブであるかどうかを判別することによって、熱イベントを検出する。THERMAL THROTTLE信号がアクティブでない場合、フローは、アクションボックス620に戻り、アービタ538は、デフォルト基準を使用して、UCLK信号と同期した次の要求を処理する。一方、THERMAL THROTTLE信号がアクティブである場合、フローは、アクションボックス640に進む。アクションボックス640では、アービタ538は、アクティブなランクを、より多くの要求が保留のままである場合には現在のランク又は別のランクとして選択する。アクションボックス650において、アービタ538は、アクティブなランク以外の他のランクを、アクティブパワーダウン状態、プリチャージパワーダウン状態、又は、セルフリフレッシュ状態等の低電力状態にする。アクションボックス660において、メモリコントローラ500は、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
判別ボックス670において、アービタ538は、熱イベントが終了したかどうかを、THERMAL THROTTLE信号をサンプリングすることによって判別する。熱イベントが終了したことを示すように、THERMAL THROTTLE信号が非アクティブである場合には、フローは、アクションボックス620に戻り、アービタ538は、デフォルト基準によって決定された次の要求を処理する。複数のバンクが、デフォルト基準を使用して許可されるのと同時にアクティブになる場合があることに留意されたい。熱イベントが終了していないことを示すように、THERMAL THROTTLE信号が依然としてアクティブである場合には、フローは、判別ボックス680に進む。判別ボックス680は、別のランクを選択するかどうかを判別する。例えば、コマンドキュー520内のアクティブなランクに対する全ての要求が処理された場合には、別のランクが(当該別のランクが1つ以上の保留中の要求を有すると仮定して)選択される。他の基準(例えば、アクティブなランク内の現在のページに対するさらなる保留中の要求がないこと、又は、保留中のチャネルに対する特定の数の他の要求よりも少ない等)も可能である。この場合、フローは、アクションボックス640に戻り、アービタ538は、新たなアクティブなランクを選択し、(現在アクティブなランクを含む)他の全てのランクを低電力状態にする。アービタ538が別のランクを選択しない場合、フローは、アクションボックス660に戻り、アービタ538は、アクティブなランク内の次のコマンドを処理する。
既知のメモリコントローラとは異なり、メモリコントローラ500は、アクティブなランク以外の全てのランクを低電力状態にする。ここで、これらの他のランクの1つ以上は、保留中の要求を含む。メモリコントローラ500は、保留中の要求があるかどうかに基づいて特定のランクを低電力にするという決定を条件付けしないことによって、熱イベントをより良く軽減するために、現在のランク以外の全ての電力を低減する。また、メモリコントローラ500は、熱イベントの存在下で、レイテンシと公正性との間のトレードオフのバランス及び電力消費のバランスを変更するのが望ましいことを認識する。熱イベントの存在下で、メモリコントローラ500は、より低い電力消費に向かうようにバランスを移動させることにより、熱イベントの軽減に役立つ。
図6の方法は、ハードウェア及びソフトウェアの様々な組み合わせによって実施されてもよい。例えば、図5は、ソフトウェアの制御下で動作する熱イベントを検出し報告するために、μC564を使用するメモリコントローラの一実施形態を示しているが、アービタ538は、ハードウェア回路で実装されている。このハードウェア回路は、プライオリティエンコーダ、有限状態機械、プログラマブルロジックアレイ(PLA)等を含んでもよい。しかしながら、他の実施形態では、アービタ538は、記憶されたプログラム命令を実行するマイクロコントローラを用いて実装可能である。ソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために、コンピュータ可読記憶媒体に記憶されてもよい。また、図6に示される方法のいくつか又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。図6に示す各動作は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリ装置を含む。非一時的なコンピュータ可読記憶媒体に記憶されるコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/若しくは実行可能な他の命令フォーマットであってもよい。
図5のメモリコントローラ500又はこの一部は、データベースの形態でコンピュータがアクセス可能なデータ構造、又は、プログラムによって読み出され、集積回路を製造するために直接若しくは間接的に使用可能な他のデータ構造によって記述又は表現されてもよい。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、当該記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造ステップで使用して、集積回路を製造することができる。或いは、コンピュータがアクセス可能な記憶媒体上のデータベースは、(合成ライブラリを伴う若しくは伴わない)ネットリスト又はデータセットであってもよいし、必要に応じて、グラフィックデータシステム(GDS)IIデータであってもよい。
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者に明らかになるであろう。例えば、メモリコントローラは、メモリを、上述したアクティブパワーダウン、プリチャージパワーダウン、セルフリフレッシュ状態とは異なる様々な低電力状態にすることができる。また、メモリチャネルコントローラ510及び/又は電源エンジン550の内部アーキテクチャは、異なる実施形態において変えられてもよい。メモリコントローラ500は、DDRxメモリ、HBM、RAMbus DRAM(RDRAM)、及び、同様のメモリを含む様々なタイプのメモリとインタフェースすることができる。示された実施形態は、別々のDIMMに対応するメモリの各ランクを示したが、他の実施形態では、各DIMMは、複数のランクをサポートすることができる。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。
本開示は、概して、データ処理システムに関し、より具体的には、低電力モードでメモリとインタフェースすることの可能なデータ処理システムに関する。
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用している。現在販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。DDR DRAMは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち1つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウン時には、全てのバンクがプリチャージされ、オンチップ遅延ロックループ(DLL)を無効にし、入力クロックをオフにし、出力バッファを無効にして電力消費を大幅に低減することができる。プリチャージパワーダウンは、比較的早く終了するので、DLLを動作させ続けることによって終了時間を短縮することができる。別の低電力モードは、アクティブパワーダウンである。アクティブパワーダウンは、少なくとも1つのバンクがアクティブのままである、すなわち、オープンな行を有している点でプリチャージパワーダウンと異なっており、これにより、プリチャージパワーダウンよりも早く終了することができる。さらに別の低電力モードは、セルフリフレッシュモードである。セルフリフレッシュモードでは、全てのバンクがアイドル状態であり、全ての外部クロッキングが除去されるが、DRAMは、内蔵タイマーを使用して、全ての行を周期的にリフレッシュすることによって、その内容を維持する。
最近のDDRメモリコントローラは、効率を高めるために、保留中のメモリアクセス要求を順不同に選ぶことができるように、保留中のメモリアクセス要求を記憶するためのキューを維持する。例えば、メモリコントローラは、現在の行をプリチャージして別の行をアクティブにするオーバヘッドを回避するために、所定のランクの同じ行への複数のメモリアクセス要求を順不同にキューから検索し、これらをメモリシステムに連続して発行することができる。メモリコントローラは、効率を改善することに加えて、低電力状態に出入りするのに必要とされる余分な時間を節電が上回るのを見越して、DDR DRAMの1つ以上のランクを低電力状態にする。既知のメモリコントローラは、DDR DRAMの特定のランクを、キュー内の当該ランクに対する保留中のメモリアクセス要求がない限り、低電力状態にしない。
いくつかの実施形態による、データ処理システムを示すブロック図である。 図1のデータ処理システムでの使用に適した高度処理ユニット(APU:Advanced Processing Unit)を示すブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)を示すブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYを示すブロック図である。 いくつかの実施形態による、メモリコントローラを示すブロック図である。 いくつかの実施形態による、図5のメモリコントローラによって使用され得るフロー図である。
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
以下に一形態で説明するように、データ処理システムは、複数のランクを含むメモリチャネルと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、複数のランクの各々にアクセスするように構成されている。データプロセッサは、所定のイベントを検出したことに応じて、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の他のランクを低電力状態にする。この場合、他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとも1つのランクを含む。次に、データプロセッサは、アクティブなランクに対するメモリアクセス要求を処理する。
他の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続されたメモリコントローラと、を含む。メモリコントローラは、第1の複数のランクを含むメモリシステムに接続するように構成されている。メモリコントローラは、第1の所定のイベントの検出に応じて、第1の複数のランクのうちアクティブなランクを選択し、第1の複数のランクのうちアクティブなランク以外の他のランクを低電力状態にする。例えば、所定のイベントは、熱イベントであってもよく、低電力状態は、プリチャージパワーダウン状態であってもよい。他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとの1つのランクを含む。次に、メモリコントローラは、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
さらに他の形態では、メモリシステムへのメモリアクセスのスロットリングを行う方法を使用して、潜在的に有害な熱イベントを軽減することができる。熱イベントが検出され、熱イベントの検出に応じて、複数のランクのうちアクティブなランクが選択され、複数のランクのうちアクティブなランク以外の他のランクが低電力状態にされる。他のランクは、保留中の要求を有する少なくとも1つのランクを含む。アクティブなランクに対する少なくとも1つのメモリアクセス要求が処理される。
図1は、いくつかの実施形態による、データ処理システム100を示すブロック図である。データ処理システム100は、概して、加速処理ユニット(APU:Accelerated Processing Unit)の形態にあるデータプロセッサ110と、メモリシステム120と、PCIe(Peripheral Component Interconnect express)システム150と、ユニバーサルシリアルバス(USB)システム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メモリに接続することができ、将来のメモリ技術に適応可能である。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。以下により詳細に説明するように、データプロセッサ110は、過熱を回避し、且つ、熱的過負荷の可能性を低減するために、特定の状況において電力のスロットリングを行うことができるメモリコントローラを含む。
図2は、図1のデータ処理システム100での使用に適したAPU200を示すブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理(MM)ハブ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は、FCLC(又は、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を記憶する。DB546は、アービタ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の入力に接続された出力と、「THERMAL THROTTLE」という符号が付された信号を提供するための出力と、を有する。電源エンジン560は、構成レジスタ562のセットと、マイクロコントローラ(μC)564と、セルフリフレッシュコントローラ(SLFREF/PE)566と、信頼された読み出し/書き込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされ、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、これらのブロック(図5には詳細に示されていない)に接続された出力を有する。セルフリフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼された読み出し/書き込みタイミングエンジン568は、DDRインタフェースの最大読み出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続したメモリアクセスストリームをメモリ又はI/O装置に提供する。μC564は、とりわけ、熱イベントをスロットリングするかどうかを決定するために使用される。したがって、μC564は、EVENT_n信号のアクティブ化に応じて、構成レジスタ562の設定を決定し、選択された場合、THERMAL THROTTLE信号をアクティブ化する。
メモリチャネルコントローラ510は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ522は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー520は、予め復号化された情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレスジェネレータ522がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ538は、例えばQoS要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック534によって示されるタイミング適格性情報、及び、ページテーブル536によって示されたアクティブページ情報を使用する。例えば、アービタ538は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠す。特に、通常動作中、アービタ538は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
関連するメモリチャネル内の少なくとも1つのDIMMが過熱すると、メモリチャネルは、EVENT_n信号をアクティブにする。EVENT_n信号は、熱イベントがメモリチャネルの1つ以上のランクで発生したことを示すワイヤードOR信号である。電源エンジン560は、EVENT_n信号のアクティベーションを検出したことに応じて、THERMAL THROTTLE信号をアクティブにするようにプログラム可能である。アービタ538は、THERMAL THROTTLE信号のアクティベーションに応じて、低電力と効率との間のトレードオフを低電力が優先されるように変更するように、ポリシーを変更する。他の実施形態では、電源エンジン560は、イベントに応じて設定されるレジスタをポーリングすること等によって、イベント入力信号を使用することなくイベントを検出可能であることに留意されたい。アービタ538は、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の外のランクを低電力状態にする。この場合、他のランクは、THERMAL THROTTLE信号のアクティベーション時に保留中の要求を有する少なくとも1つのランクを含む。次に、アービタ538は、アクティブなランクに対するメモリアクセス要求を選ぶ。状況によっては、このメモリアクセス要求は、通常、アクセスを効率的に提供するため、又は、オーバヘッドアクセスを隠すために、別の要求を提供するようにバイパスされている。
図6は、いくつかの実施形態による、図5のメモリコントローラ500によって使用され得るフロー図600である。フローは、ボックス610で開始する。アクションボックス620では、アービタ538は、図5を参照して説明したように、デフォルト基準を使用して、UCLK信号と同期した次の要求を処理する。判別ボックス630では、アービタ538は、THERMAL THROTTLE信号がアクティブであるかどうかを判別することによって、熱イベントを検出する。THERMAL THROTTLE信号がアクティブでない場合、フローは、アクションボックス620に戻り、アービタ538は、デフォルト基準を使用して、UCLK信号と同期した次の要求を処理する。一方、THERMAL THROTTLE信号がアクティブである場合、フローは、アクションボックス640に進む。アクションボックス640では、アービタ538は、アクティブなランクを、より多くの要求が保留のままである場合には現在のランク又は別のランクとして選択する。アクションボックス650において、アービタ538は、アクティブなランク以外の他のランクを、アクティブパワーダウン状態、プリチャージパワーダウン状態、又は、セルフリフレッシュ状態等の低電力状態にする。アクションボックス660において、メモリコントローラ500は、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
判別ボックス670において、アービタ538は、熱イベントが終了したかどうかを、THERMAL THROTTLE信号をサンプリングすることによって判別する。熱イベントが終了したことを示すように、THERMAL THROTTLE信号が非アクティブである場合には、フローは、アクションボックス620に戻り、アービタ538は、デフォルト基準によって決定された次の要求を処理する。複数のバンクが、デフォルト基準を使用して許可されるのと同時にアクティブになる場合があることに留意されたい。熱イベントが終了していないことを示すように、THERMAL THROTTLE信号が依然としてアクティブである場合には、フローは、判別ボックス680に進む。判別ボックス680は、別のランクを選択するかどうかを判別する。例えば、コマンドキュー520内のアクティブなランクに対する全ての要求が処理された場合には、別のランクが(当該別のランクが1つ以上の保留中の要求を有すると仮定して)選択される。他の基準(例えば、アクティブなランク内の現在のページに対するさらなる保留中の要求がないこと、又は、保留中のチャネルに対する特定の数の他の要求よりも少ない等)も可能である。この場合、フローは、アクションボックス640に戻り、アービタ538は、新たなアクティブなランクを選択し、(現在アクティブなランクを含む)他の全てのランクを低電力状態にする。アービタ538が別のランクを選択しない場合、フローは、アクションボックス660に戻り、アービタ538は、アクティブなランク内の次のコマンドを処理する。
既知のメモリコントローラとは異なり、メモリコントローラ500は、アクティブなランク以外の全てのランクを低電力状態にする。ここで、これらの他のランクの1つ以上は、保留中の要求を含む。メモリコントローラ500は、保留中の要求があるかどうかに基づいて特定のランクを低電力にするという決定を条件付けしないことによって、熱イベントをより良く軽減するために、現在のランク以外の全ての電力を低減する。また、メモリコントローラ500は、熱イベントの存在下で、レイテンシと公正性との間のトレードオフのバランス及び電力消費のバランスを変更するのが望ましいことを認識する。熱イベントの存在下で、メモリコントローラ500は、より低い電力消費に向かうようにバランスを移動させることにより、熱イベントの軽減に役立つ。
図6の方法は、ハードウェア及びソフトウェアの様々な組み合わせによって実施されてもよい。例えば、図5は、ソフトウェアの制御下で動作する熱イベントを検出し報告するために、μC564を使用するメモリコントローラの一実施形態を示しているが、アービタ538は、ハードウェア回路で実装されている。このハードウェア回路は、プライオリティエンコーダ、有限状態機械、プログラマブルロジックアレイ(PLA)等を含んでもよい。しかしながら、他の実施形態では、アービタ538は、記憶されたプログラム命令を実行するマイクロコントローラを用いて実装可能である。ソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために、コンピュータ可読記憶媒体に記憶されてもよい。また、図6に示される方法のいくつか又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。図6に示す各動作は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリ装置を含む。非一時的なコンピュータ可読記憶媒体に記憶されるコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/若しくは実行可能な他の命令フォーマットであってもよい。
図5のメモリコントローラ500又はこの一部は、データベースの形態でコンピュータがアクセス可能なデータ構造、又は、プログラムによって読み出され、集積回路を製造するために直接若しくは間接的に使用可能な他のデータ構造によって記述又は表現されてもよい。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、当該記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造ステップで使用して、集積回路を製造することができる。或いは、コンピュータがアクセス可能な記憶媒体上のデータベースは、(合成ライブラリを伴う若しくは伴わない)ネットリスト又はデータセットであってもよいし、必要に応じて、グラフィックデータシステム(GDS)IIデータであってもよい。
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者に明らかになるであろう。例えば、メモリコントローラは、メモリを、上述したアクティブパワーダウン、プリチャージパワーダウン、セルフリフレッシュ状態とは異なる様々な低電力状態にすることができる。また、メモリチャネルコントローラ510及び/又は電源エンジン550の内部アーキテクチャは、異なる実施形態において変えられてもよい。メモリコントローラ500は、DDRxメモリ、HBM、RAMbus DRAM(RDRAM)、及び、同様のメモリを含む様々なタイプのメモリとインタフェースすることができる。示された実施形態は、別々のDIMMに対応するメモリの各ランクを示したが、他の実施形態では、各DIMMは、複数のランクをサポートすることができる。
一形態では、データ処理システム(100)は、メモリバスとメモリバスに接続された複数のランク(134/136/138)とを含むメモリチャネル(130)と、前記メモリチャネル(130)に接続されたデータプロセッサ(110)と、を備える。各ランクは、所定のコマンドに応答するためにロックステップで動作し、複数のチップ選択信号の各々に接続されたメモリデバイスのセットを備える。データプロセッサは、複数のランク(134/136/138)の各々にアクセスするように構成されている。データプロセッサ(110)は、所定のイベントの検出に応じて、複数のランク(134/136/138)のうちアクティブなランクを選択することと、アクティブなランク以外の他のランクを低電力状態にすることであって、他のランクは、所定のイベントを検出したときにデータプロセッサが保留中の要求を記憶する少なくとも1つのランクを含む、ことと、アクティブなランクに対するメモリアクセス要求を処理することと、を行うように構成されている。
一態様によれば、所定のイベントは熱イベントを示し、複数のランクのうち少なくとも1つのランクは、熱イベントを示すイベント信号を提供するための出力を有する温度センサを含む。この態様によれば、複数のランクの各々は、イベント入力導体に接続された対応するオープンドレイン出力を有する、対応する温度センサを含む。
別の態様によれば、データプロセッサ(110)は、所定のイベントが終了していないことを検出し、所定の基準に基づいて別のランクを選択しないことを決定したことに応じて、アクティブなランクにおいて次のコマンドを処理する。この態様によれば、所定の基準は、アクティブなランク内に少なくとも1つの保留中の要求があることを含んでもよい。この態様によれば、所定の基準は、アクティブなランクの現在のページ内に少なくとも1つの保留中の要求があることを含んでもよい。この態様によれば、所定の基準は、アクティブなランク内に少なくとも1つの保留中の要求があることと、他のランクに対する所定数の要求よりも少ないこととを含んでもよい。
さらに別の態様によれば、メモリチャネルは、複数のランクのダブルデータレート(DDR)メモリを含む。この態様によれば、低電力状態は、DDR低電力状態を含んでもよい。
他の形態では、データプロセッサ(110/200)は、メモリアクセスエージェント(210/220)と、メモリアクセスエージェント(210/220)に接続され、メモリバスと第1の複数のランク(132/133/134)とを含むメモリシステム(120)に接続するように構成されたメモリコントローラ(292/300/400)と、を備える。各ランクは、所定のコマンドに応答するためにロックステップで動作し、複数のチップ選択信号の各々に接続されたメモリデバイスのセットを備える。メモリコントローラ(292/300/400)は、第1の所定のイベントの検出に応じて、第1の複数のランク(132/133/134)のうちアクティブなランクを選択する一方で、第1の複数のランク(134/136/138)のうちアクティブなランク以外の他のランクを低電力状態にする。他のランクは、所定のイベントを検出したときにメモリコントローラが保留中の要求を記憶する少なくとも1つのランクを含む。メモリコントローラ(292/300/400)は、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
一態様によれば、低電力状態は、アクティブパワーダウン状態、プリチャージパワーダウン状態及びセルフリフレッシュ状態のうち1つを含む。
別の態様によれば、メモリコントローラ(292/300/400)は、第1のメモリチャネルコントローラ(314/414)と、電源エンジン(320/430)と、を備える。第1のメモリチャネルコントローラ(314/414)は、第1の複数のアクセス要求を受信し、第1の複数のアクセス要求に応じてデータを実行するための第1のホストインタフェース(312/412)と、第1の物理インタフェース(316/416)と、に接続されている。電源エンジン(320/430)は、第1のメモリチャネルコントローラ(314/414)に接続されており、第1の所定のイベントに応じて、第1のメモリチャネルコントローラ(314/414)に対して、第1の複数のランク(134/136/138)のうちアクティブなランクを選択させ、アクティブなランク以外の他のランクを低電力状態にさせる。この態様によれば、メモリコントローラ(292/400)は、第2の複数のアクセス要求を受信し、第2の複数のアクセス要求に応じてデータを実行するための第2のホストインタフェース(422)と、第2の物理インタフェース(426)と、に接続された第2のメモリチャネルコントローラ(424)を備えてもよい。この場合、電源エンジン(430)は、第2の所定のイベントに応じて、第2のメモリチャネルコントローラ(424)に対して、第2の複数のランク(144/146/148)のうちアクティブなランクを選択させ、アクティブなランク以外の他のランクを低電力状態にさせる。さらに、この態様によれば、データプロセッサは、第1のメモリチャネルコントローラ(414)の第1の物理インタフェース(416)に接続され、第1の複数のランク(134/136/138)に接続されるように構成された、第1のデータプロセッサ物理インタフェース(440)と、第2のメモリチャネルコントローラ(424)の第2の物理インタフェース(426)に接続され、第2の複数のランク(144/146/148)に接続されるように構成された、第2のデータプロセッサ物理インタフェース(450)と、を備えてもよい。
さらに別の形態では、メモリシステム(120)に対してメモリアクセスのスロットリングを行う方法(600)は、熱イベントを検出すること(630)と、熱イベントを検出したことに応じて、メモリバスに接続された複数のランク(124/126/128)のうちアクティブなランクを選択し(640)、複数のランク(124/126/128)のうちアクティブなランク以外の他のランクを低電力状態にすること(650)であって、他のランクは、メモリコントローラ(292/300/400)が保留中の要求を記憶する少なくとも1つのランクを含む、ことと、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理すること(660/670/680)と、を含む。
一態様によれば、熱イベントを検出する(630)前に、複数のランクのうち1つのランクにおいて少なくとも1つのアクセス要求を処理すること(620)を含む。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。

Claims (28)

  1. 複数のランク(134/136/138)を含むメモリチャネル(130)と、
    前記メモリチャネル(130)に接続され、前記複数のランク(134/136/138)の各々にアクセスするように構成されたデータプロセッサ(110)と、を備え、
    前記データプロセッサ(110)は、
    所定のイベントの検出に応じて、前記複数のランク(134/136/138)のうちアクティブなランクを選択することと、
    前記アクティブなランク以外の他のランクを低電力状態にすることであって、前記他のランクは、前記所定のイベントを検出したときに保留中の要求を有する少なくとも1つのランクを含む、ことと、
    前記アクティブなランクに対するメモリアクセス要求を処理することと、
    を行うように構成されている、
    データ処理システム(100)。
  2. 前記所定のイベントは熱イベントを示し、前記複数のランクのうち前記少なくとも1つのランクは、前記熱イベントを示すイベント信号を提供するための出力を有する温度センサを含む、
    請求項1のデータ処理システム(100)。
  3. 前記複数のランクの各々は、イベント入力導体に接続された対応するオープンドレイン出力を有する、対応する温度センサを含む、
    請求項2のデータ処理システム(100)。
  4. 前記データプロセッサ(110)は、前記所定のイベントが終了していないことを検出し、所定の基準に基づいて別のランクを選択しないことを決定したことに応じて、前記アクティブなランクにおいて次のコマンドを処理する、
    請求項1のデータ処理システム(100)。
  5. 前記所定の基準は、前記アクティブなランク内に少なくとも1つの保留中の要求があることを含む、
    請求項4のデータ処理システム(100)。
  6. 前記所定の基準は、前記アクティブなランクの現在のページ内に少なくとも1つの保留中の要求があることを含む、
    請求項4のデータ処理システム(100)。
  7. 前記所定の基準は、前記アクティブなランク内に少なくとも1つの保留中の要求があることと、他のランクに対する所定数の要求よりも少ないこととを含む、
    請求項4のデータ処理システム(100)。
  8. 前記メモリチャネルは、複数のランクのダブルデータレート(DDR)メモリを含む、
    請求項1のデータ処理システム(100)。
  9. 前記低電力状態は、DDR低電力状態を含む、
    請求項8のデータ処理システム(100)。
  10. メモリアクセスエージェント(210/220)と、
    前記メモリアクセスエージェント(210/220)に接続され、第1の複数のランク(132/133/134)を含むメモリシステム(120)に接続するように構成されたメモリコントローラ(292/300/400)と、を備え、
    前記メモリコントローラ(292/300/400)は、
    第1の所定のイベントの検出に応じて、前記第1の複数のランク(132/133/134)のうちアクティブなランクを選択することと、
    前記第1の複数のランク(134/136/138)のうちアクティブなランク以外の他のランクを低電力状態にすることであって、前記他のランクは、前記所定のイベントを検出したときに保留中の要求を有する少なくとも1つのランクを含む、ことと、
    前記アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理することと、
    を行うように構成されている、
    データプロセッサ(110/200)。
  11. 前記第1の所定のイベントは熱イベントを含む、
    請求項10のデータプロセッサ(110/200)。
  12. 前記低電力状態は、アクティブパワーダウン状態、プリチャージパワーダウン状態及びセルフリフレッシュ状態のうち1つを含む、
    請求項10のデータプロセッサ(110/200)。
  13. 前記メモリコントローラ(292/300/400)は、ダブルデータレート(DDR)バージョン4(DDR4)メモリチャネル、グラフィックスDDRバージョン5(gDDR5)メモリチャネル及び高帯域幅メモリ(HBM)メモリチャネルのうち少なくとも1つにアクセスするように構成されている、
    請求項10のデータプロセッサ(110/200)。
  14. 前記メモリコントローラ(292/300/400)は、
    第1の複数のアクセス要求を受信し、前記第1の複数のアクセス要求に応じてデータを実行するための第1のホストインタフェース(312/412)と、第1の物理インタフェース(316/416)と、に接続された第1のメモリチャネルコントローラ(314/414)と、
    前記第1のメモリチャネルコントローラ(314/414)に接続された電源エンジン(320/430)であって、前記第1の所定のイベントに応じて、前記第1のメモリチャネルコントローラ(314/414)に対して、前記第1の複数のランク(134/136/138)のうちアクティブなランクを選択させ、前記アクティブなランク以外の他のランクを低電力状態にさせる、電源エンジン(320/430)と、を備える、
    請求項10のデータプロセッサ(110/200)。
  15. 前記メモリコントローラ(292/400)は、
    第2の複数のアクセス要求を受信し、前記第2の複数のアクセス要求に応じてデータを実行するための第2のホストインタフェース(422)と、第2の物理インタフェース(426)と、に接続された第2のメモリチャネルコントローラ(424)を備え、
    前記電源エンジン(430)は、第2の所定のイベントに応じて、前記第2のメモリチャネルコントローラ(424)に対して、第2の複数のランク(144/146/148)のうちアクティブなランクを選択させ、前記アクティブなランク以外の前記他のランクを低電力状態にさせる、
    請求項14のデータプロセッサ(110/200)。
  16. 前記第1のメモリチャネルコントローラ(414)の前記第1の物理インタフェース(416)に接続され、前記第1の複数のランク(134/136/138)に接続されるように構成された、第1のデータプロセッサ物理インタフェース(440)と、
    前記第2のメモリチャネルコントローラ(424)の前記第2の物理インタフェース(426)に接続され、前記第2の複数のランク(144/146/148)に接続されるように構成された、第2のデータプロセッサ物理インタフェース(450)と、を備える、
    請求項15のデータプロセッサ(110/200)。
  17. 前記メモリコントローラ(292/300/400)は、
    前記第1の所定のイベントが依然としてアクティブであることを検出したことと、所定の基準に基づいて別のランクを選択しないことを判別したことと、に応じて、前記アクティブなランクにおいて次のコマンドを処理する、
    請求項10のデータプロセッサ(110/200)。
  18. 前記所定の基準は、前記アクティブなランク内に少なくとも1つの保留中の要求があることを含む、
    請求項17のデータプロセッサ(110/200)。
  19. 前記所定の基準は、前記アクティブなランクの現在のページ内に少なくとも1つの保留中の要求があることを含む、
    請求項17のデータプロセッサ(110/200)。
  20. 前記所定の基準は、前記アクティブなランク内に少なくとも1つの保留中の要求があることと、他のランクに対する所定数の要求よりも少なこととを含む、
    請求項17のデータプロセッサ(110/200)。
  21. メモリシステム(120)に対してメモリアクセスのスロットリングを行う方法(600)であって、
    熱イベントを検出すること(630)と、
    前記熱イベントを検出したことに応じて、複数のランク(124/126/128)のうちアクティブなランクを選択し(640)、前記複数のランク(124/126/128)のうち前記アクティブなランク以外の他のランクを低電力状態にすること(650)であって、前記他のランクは、保留中の要求を有する少なくとも1つのランクを含む、ことと、
    前記アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理すること(660/670/680)と、を含む、
    方法(600)。
  22. 前記メモリシステム(120)は、ダブルデータレート(DDR)メモリシステムを備え、
    前記複数のランク(124/126/128)のうち前記他のランクを低電力状態にすることは、前記複数のランク(124/126/128)のうち前記他のランクをDDR低電力状態にすることを含む、
    請求項21の方法(600)。
  23. 前記熱イベントを検出すること(630)は、システム温度を第1の閾値と比較することと、前記システム温度が前記第1の閾値以上であることを判別することと、を含む、
    請求項21の方法(600)。
  24. 前記少なくとも1つのメモリアクセス要求を処理すること(660/670/680)は、
    前記アクティブなランクにおいて次のコマンドを処理すること(660)と、
    前記熱イベントが終了していないことを検出すること(670)と、
    所定の基準に基づいて別のランクを選択するかどうかを決定すること(680)と、を含む、
    請求項23の方法(600)。
  25. 前記所定の基準に基づいて別のランクを選択するかどうかを決定すること(680)は、
    前記アクティブなランク内に少なくとも1つの保留中の要求があるかどうかを判別することを含む、
    請求項24の方法(600)。
  26. 前記所定の基準に基づいて別のランクを選択するかどうかを決定すること(680)は、
    前記アクティブなランクの現在のページ内に少なくとも1つの保留中の要求があるかどうかを判別することを含む、
    請求項24の方法(600)。
  27. 前記所定の基準に基づいて別のランクを選択するかどうかを決定すること(680)は、
    前記アクティブなランク内に少なくとも1つの保留中の要求があるかどうかと、他のランクに対する所定数の要求よりも少ないかどうかを判別することと、を含む、
    請求項24の方法(600)。
  28. 前記熱イベントを検出する(630)前に、前記複数のランクのうち1つのランクにおいて少なくとも1つのアクセス要求を処理すること(620)を含む、
    請求項21の方法(600)。
JP2018557082A 2016-05-28 2016-09-23 低電力メモリのスロットリング Active JP6761870B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/168,043 US10198216B2 (en) 2016-05-28 2016-05-28 Low power memory throttling
US15/168,043 2016-05-28
PCT/US2016/053425 WO2017209783A1 (en) 2016-05-28 2016-09-23 Low power memory throttling

Publications (2)

Publication Number Publication Date
JP2019522257A true JP2019522257A (ja) 2019-08-08
JP6761870B2 JP6761870B2 (ja) 2020-09-30

Family

ID=60418703

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018557082A Active JP6761870B2 (ja) 2016-05-28 2016-09-23 低電力メモリのスロットリング

Country Status (6)

Country Link
US (1) US10198216B2 (ja)
EP (1) EP3436958B1 (ja)
JP (1) JP6761870B2 (ja)
KR (1) KR20190002490A (ja)
CN (1) CN109219806B (ja)
WO (1) WO2017209783A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929062B2 (en) 2018-11-07 2021-02-23 International Business Machines Corporation Gradually throttling memory due to dynamic thermal conditions
US11182100B2 (en) * 2018-11-07 2021-11-23 Intel Corporation SSD temperature control technique
KR20210036593A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 스토리지 장치
CN111290977B (zh) * 2020-01-16 2021-11-16 芯创智(北京)微电子有限公司 一种基于ddr多数据单元的寄存器访问系统及方法
US20220011960A1 (en) * 2021-09-25 2022-01-13 Intel Corporation Per channel thermal management techniques for stacked memory
US20230131347A1 (en) * 2021-10-21 2023-04-27 Micron Technology, Inc. Managing thermal throttling in a memory sub-system
US11829218B1 (en) 2022-05-10 2023-11-28 Western Digital Technologies, Inc. Solid-state device with multiple thermal power states

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141283A (en) * 1999-04-01 2000-10-31 Intel Corporation Method and apparatus for dynamically placing portions of a memory in a reduced power consumption state
TW544575B (en) * 2000-08-15 2003-08-01 Silicon Integrated Sys Corp Page organizer within memory controller
US6662278B1 (en) * 2000-09-22 2003-12-09 Intel Corporation Adaptive throttling of memory acceses, such as throttling RDRAM accesses in a real-time system
US6507530B1 (en) * 2001-09-28 2003-01-14 Intel Corporation Weighted throttling mechanism with rank based throttling for a memory system
DE10313605B4 (de) 2003-03-26 2009-03-19 Qimonda Ag Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine
US7149841B2 (en) * 2003-03-31 2006-12-12 Micron Technology, Inc. Memory devices with buffered command address bus
US7240143B1 (en) * 2003-06-06 2007-07-03 Broadbus Technologies, Inc. Data access and address translation for retrieval of data amongst multiple interconnected access nodes
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7064994B1 (en) * 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7304905B2 (en) * 2004-05-24 2007-12-04 Intel Corporation Throttling memory in response to an internal temperature of a memory device
US7191088B1 (en) * 2004-10-25 2007-03-13 Nvidia Corporation Method and system for memory temperature detection and thermal load management
US7495985B1 (en) * 2004-10-25 2009-02-24 Nvidia Corporation Method and system for memory thermal load sharing using memory on die termination
US7259585B2 (en) * 2005-09-28 2007-08-21 International Business Machines Corporation Selective on-die termination for improved power management and thermal distribution
US7496777B2 (en) * 2005-10-12 2009-02-24 Sun Microsystems, Inc. Power throttling in a memory system
US7549034B2 (en) 2005-11-10 2009-06-16 International Business Machines Corporation Redistribution of memory to reduce computer system power consumption
DE102006035612B4 (de) * 2006-07-31 2011-05-05 Qimonda Ag Speicherpuffer, FB-DIMM und Verfahren zum Betrieb eines Speicherpuffers
US7739461B2 (en) * 2007-07-10 2010-06-15 International Business Machines Corporation DRAM power management in a memory controller
US7724602B2 (en) * 2007-07-10 2010-05-25 International Business Machines Corporation Memory controller with programmable regression model for power control
US8397011B2 (en) * 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
US8006108B2 (en) * 2007-11-08 2011-08-23 International Business Machines Corporation Dynamic selection of group and device power limits
US8200999B2 (en) * 2008-08-11 2012-06-12 International Business Machines Corporation Selective power reduction of memory hardware
EP2313830B1 (en) * 2008-08-13 2013-10-02 Hewlett-Packard Development Company, L.P. Dynamic utilization of power-down modes in multi-core memory modules
US8639874B2 (en) * 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
US8799553B2 (en) * 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
US20130132704A1 (en) * 2010-09-10 2013-05-23 Rambus Inc. Memory controller and method for tuned address mapping
US8484418B2 (en) * 2010-10-22 2013-07-09 Intel Corporation Methods and apparatuses for idle-prioritized memory ranks
DE112011103916B4 (de) * 2010-11-25 2021-11-25 International Business Machines Corporation Speicherzugriffseinheit für gemeinsame Speichernutzung zwischen mehreren Prozessoren
US9374787B2 (en) * 2011-02-10 2016-06-21 Alcatel Lucent Method and apparatus of smart power management for mobile communication terminals using power thresholds
US20120239887A1 (en) * 2011-03-16 2012-09-20 Advanced Micro Devices, Inc. Method and apparatus for memory control
US9405355B2 (en) * 2012-08-21 2016-08-02 Micron Technology, Inc. Memory operation power management by data transfer time adjustment
US9281046B2 (en) * 2013-10-08 2016-03-08 Advanced Micro Devices, Inc. Data processor with memory controller for high reliability operation and method
US9535614B2 (en) 2013-11-21 2017-01-03 Sandisk Technologies Llc Temperature based flash memory system maintenance
US9939865B2 (en) * 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management

Also Published As

Publication number Publication date
CN109219806A (zh) 2019-01-15
EP3436958A1 (en) 2019-02-06
EP3436958B1 (en) 2021-01-06
JP6761870B2 (ja) 2020-09-30
KR20190002490A (ko) 2019-01-08
US20170344309A1 (en) 2017-11-30
WO2017209783A1 (en) 2017-12-07
US10198216B2 (en) 2019-02-05
EP3436958A4 (en) 2019-11-06
CN109219806B (zh) 2023-04-04

Similar Documents

Publication Publication Date Title
US11221772B2 (en) Self refresh state machine mop array
EP3474150B1 (en) Memory controller arbiter with streak and read/write transaction management
JP6730453B2 (ja) 細かい粒度のリフレッシュ
JP6840145B2 (ja) 高速メモリインタフェースのためのコマンドアービトレーション
US10593391B2 (en) Refresh scheme in a memory controller
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
JP6761870B2 (ja) 低電力メモリのスロットリング
JP2019536136A (ja) プラットフォームマージニング及びデバッグのためのソフトウェアモードレジスタアクセス
US20230031595A1 (en) Memory controller with a plurality of command sub-queues and corresponding arbiters
CN114902198B (zh) 用于异构存储器系统的信令
KR20230010675A (ko) Dram을 위한 리프레시 관리
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
KR20230004912A (ko) 효율적인 메모리 버스 관리

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190912

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200907

R150 Certificate of patent or registration of utility model

Ref document number: 6761870

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250