(58)【調査した分野】(Int.Cl.,DB名)
前記メモリコントローラ(292/300/400)は、ダブルデータレート(DDR)バージョン4(DDR4)メモリチャネル、グラフィックスDDRバージョン5(gDDR5)メモリチャネル及び高帯域幅メモリ(HBM)メモリチャネルのうち少なくとも1つにアクセスするように構成されている、
請求項1のデータプロセッサ(110/200)。
前記熱イベントを検出すること(630)は、システム温度を第1の閾値と比較することと、前記システム温度が前記第1の閾値以上であることを判別することと、を含む、
請求項9の方法(600)。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示す。特に明示しない限り、「接続された」という用語及びこれに関連する動詞の形態は、本技術分野で知られている手段による直接接続及び間接的な電気的接続の両方を含み、特に断りのない限り、直接接続の説明は、間接的な電気的接続の適切な形態を使用する代替の実施形態をも意味する。
【0006】
以下に一形態で説明するように、データ処理システムは、複数のランクを含むメモリチャネルと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、複数のランクの各々にアクセスするように構成されている。データプロセッサは、所定のイベントを検出したことに応じて、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の他のランクを低電力状態にする。この場合、他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとも1つのランクを含む。次に、データプロセッサは、アクティブなランクに対するメモリアクセス要求を処理する。
【0007】
他の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続されたメモリコントローラと、を含む。メモリコントローラは、第1の複数のランクを含むメモリシステムに接続するように構成されている。メモリコントローラは、第1の所定のイベントの検出に応じて、第1の複数のランクのうちアクティブなランクを選択し、第1の複数のランクのうちアクティブなランク以外の他のランクを低電力状態にする。例えば、所定のイベントは、熱イベントであってもよく、低電力状態は、プリチャージパワーダウン状態であってもよい。他のランクは、所定のイベントの検出時に保留中の要求を有する少なくとの1つのランクを含む。次に、メモリコントローラは、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理する。
【0008】
さらに他の形態では、メモリシステムへのメモリアクセスのスロットリングを行う方法を使用して、潜在的に有害な熱イベントを軽減することができる。熱イベントが検出され、熱イベントの検出に応じて、複数のランクのうちアクティブなランクが選択され、複数のランクのうちアクティブなランク以外の他のランクが低電力状態にされる。他のランクは、保留中の要求を有する少なくとも1つのランクを含む。アクティブなランクに対する少なくとも1つのメモリアクセス要求が処理される。
【0009】
図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)大容量記憶装置に対するインタフェースが含まれる。
【0010】
メモリシステム120は、メモリチャネル130と、メモリチャネル140と、を含む。メモリチャネル130は、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセット(この例では、別々のランクに対応する代表的なDIMM134,136,138)を含む。同様に、メモリチャネル140は、DDRxバス142に接続されたDIMMのセット(代表的なDIMM144,146,148)を含む。
【0011】
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)等の様々な不揮発性メモリタイプの何れかとすることができる。
【0012】
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、それぞれUSBハブ162に接続された代表的なUSB装置164,166,168と、を含む。USB装置164,166,168は、例えばキーボード、マウス、フラッシュEEPROMポート等の装置であってもよい。
【0013】
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量記憶装置を提供する。
【0014】
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、現在のコンピューティングアプリケーションでの使用に適している。メモリチャネル130,140の各々は、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等の最新のDDRメモリに接続することができ、将来のメモリ技術に適応可能である。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、ビルトインのサーマルモニタリングをも提供する。以下により詳細に説明するように、データプロセッサ110は、過熱を回避し、且つ、熱的過負荷の可能性を低減するために、特定の状況において電力のスロットリングを行うことができるメモリコントローラを含む。
【0015】
図2は、
図1のデータ処理システム100での使用に適したAPU200を示すブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理(MM)ハブ240と、データファブリック250と、周辺機器コントローラ260のセットと、周辺機器バスコントローラ270のセットと、システム管理ユニット(SMU)280と、メモリコントローラ290のセットと、を含む。
【0016】
CPUコア複合体210は、CPUコア212と、CPUコア214と、を含む。この例では、CPUコア複合体210は、2つのCPUコアを含むが、他の実施形態では、CPUコア複合体は、任意の数のCPUコアを含むことができる。CPUコア212,214の各々は、制御ファブリックを形成するシステム管理ネットワーク(SMN)及びデータファブリック250に双方向に接続されており、データファブリック250に対してメモリアクセス要求を提供することができる。CPUコア212,214の各々は、単一のコアであってもよいし、キャッシュ等の特定のリソースを共有する2つ以上の単一のコアを有するコア複合体であってもよい。
【0017】
グラフィックスコア220は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャ混合等のグラフィック動作を高度に統合された並列形式で実行することの可能な高性能グラフィックス処理ユニット(GPU)である。グラフィックスコア220は、SMN及びデータファブリック250に双方向に接続されており、データファブリック250に対してメモリアクセス要求を提供することができる。この点において、APU200は、CPUコア複合体210及びグラフィックスコア220が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体210及びグラフィックスコア220がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができ、また、グラフィックスコア220は、CPUコア複合体210によってアクセスすることができないプライベートグラフィックスメモリを使用する。
【0018】
ディスプレイエンジン230は、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタ上に表示する。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120における適切なアドレスへの一様な変換のために、共通メモリ管理(MM)ハブ240に双方向に接続されており、メモリ管理ハブ240は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック250に双方向に接続されている。
【0019】
データファブリック250は、何れかのメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。データファブリック250は、BIOSによって定義されたシステムメモリマップであって、システム構成に基づいてメモリアクセスの宛先を決定するためのシステムメモリマップと、仮想接続毎のバッファと、を含む。
【0020】
周辺機器コントローラ260は、USBコントローラ262と、SATAインタフェースコントローラ264と、を含み、これらの各々は、システムハブ266及びSMNバスに双方向に接続されている。これらの2つのコントローラは、APU200で使用することができる周辺機器コントローラの単なる例示である。
【0021】
周辺機器バスコントローラ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のレジスタをプログラムすることができる。
【0022】
SMU280は、APU200上のリソースの動作を制御し、これらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップ装置を制御する。SMU280は、APU200の各コンポーネントにクロック信号を提供するために、例えば位相同期ループ(PLL)等のように
図2に示されていない1つ以上のクロックソースを含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックの電力を管理し、CPUコア212,214及びグラフィックスコア220から測定された電力消費値を受信して、適切な電力状態を決定することができる。
【0023】
また、APU200は、様々なシステムモニタリング及び節電機能を実装する。特に、1つのシステムモニタリング機能は、サーマルモニタリング(熱監視)である。例えば、APU200が高温になると、SMU280は、CPUコア212,214及び/又はグラフィックスコア220の周波数及び電圧を低減することができる。APU200がさらに高温になると、APU200は完全にシャットダウンされてもよい。サーマルイベントは、SMNバスを介してSMU280によって外部センサから受信されてもよく、SMU280は、これに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0024】
図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を有する。
【0025】
図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を使用する。
【0026】
図5は、いくつかの実施形態による、メモリコントローラ500を示すブロック図である。メモリコントローラ500は、概して、メモリチャネルコントローラ510と、電源コントローラ550と、を含む。メモリチャネルコントローラ510は、概して、インタフェース512と、キュー514と、コマンドキュー520と、アドレスジェネレータ522と、コンテンツアドレス可能メモリ(CAM)524と、再生キュー530と、リフレッシュロジックブロック532と、タイミングブロック534と、ページテーブル536と、アービタ538と、エラー訂正コード(ECC)チェックブロック542と、ECC生成ブロック544と、データバッファ(DB)546と、を含む。
【0027】
インタフェース512は、外部バスを介したデータファブリック250への第1双方向接続を有し、出力を有する。メモリコントローラ500において、この外部バスは、「AXI4」として知られる、イングランドのケンブリッジのARMホールディングスPLCによって指定されたAXI(Advanced Extensible Interface)バージョン4と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース512は、FCLC(又は、MEMCLK)ドメインとして知られる第1クロックドメインから、UCLKドメインとして知られるメモリコントローラ500内の第2クロックドメインへのメモリアクセス要求を返還する。同様に、キュー514は、UCLKドメインからDFIインタフェースに関連するDFICLKドメインへのメモリアクセスを提供する。
【0028】
アドレスジェネレータ522は、AXI4バスを介してデータファブリック250から受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、標準化されたフォーマットで表される物理アドレス空間内のアクセスアドレスを含む。アドレスジェネレータ522は、標準化されたアドレスを、メモリシステム120内の実際のメモリ装置をアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムBIOSは、起動すると、メモリシステム120内のメモリ装置にクエリしてそのサイズ及び構成を判別し、アドレスジェネレータ522に関連する構成レジスタのセットをプログラミングする。アドレスジェネレータ522は、標準化されたアドレスを適切なフォーマットに変換するために、構成レジスタに記憶された構成を使用する。コマンドキュー520は、例えば、CPUコア212,214及びグラフィックスコア220等のデータ処理システム100内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー520は、アドレスジェネレータ522によって復号化されたアドレスフィールドと、アービタ538がアクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。CAM524は、例えば、ライトアフターライト(WAW)及びリードアフターライト(RAW)順序付けルール等の順序付けルールを実施するための情報を含む。
【0029】
再生キュー530は、アドレス及びコマンドパリティ応答、DDR4 DRAMに対する書き込み巡回冗長チェック(CRC)応答、又は、gDDR5 DRAMに対する書き込み及び読み出しCRC応答等の応答を待っているアービタ538によって取り出されたメモリアクセスを記憶するための一時的なキューである。再生キュー530は、ECCチェックブロック542にアクセスして、返されたECCが正確であるかエラーを示すかを判別する。再生キュー530は、これらのサイクルのうち1つのサイクルのパリティ又はCRCエラーの場合にアクセスが再生されることを可能にする。
【0030】
リフレッシュロジック532は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのための状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュサイクルを実行するために定期的に起動する必要がある。リフレッシュロジック532は、DRAMチップ内のメモリセルの記憶キャパシタから電荷がリークすることによって生じるデータエラーを防止するために、リフレッシュコマンドを定期的に生成する。また、リフレッシュロジック532は、システムの熱変化によるオンダイターミネーション抵抗の不一致を防止するために、ZQを定期的に較正する。
【0031】
アービタ538は、コマンドキュー520に双方向に接続されており、メモリチャネルコントローラ510の中心部である。アービタ538は、メモリバスの使用を改善するために、アクセスのインテリジェントなスケジューリングによって効率を改善する。アービタ538は、タイミングブロック534を使用して、コマンドキュー520内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判別することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「t
RC」として知られるアクティブコマンド間の最小の指定時間を有する。タイミングブロック534は、JEDEC仕様で規定されたこの及び他のタイミングパラメータに基づいて、適格性を決定するカウンタのセットを維持し、再生キュー530に双方向に接続されている。ページテーブル536は、各バンクのアクティブページに関する状態情報、及び、アービタ538のためにメモリチャネルのランクを維持し、再生キュー530に双方向に接続されている。
【0032】
ECC生成ブロック544は、インタフェース512から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。DB546は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。DB546は、アービタ538がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択した場合に、組み合わされた書き込みデータ/ECCをキュー514に出力する。
【0033】
電源コントローラ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信号をアクティブ化する。
【0034】
メモリチャネルコントローラ510は、関連するメモリチャネルにディスパッチするためにメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーションの決定を行うために、アドレスジェネレータ522は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含む予め復号化された情報に復号化し、コマンドキュー520は、予め復号化された情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレスジェネレータ522がどのように復号化するのかを決定するために、構成情報を記憶する。アービタ538は、例えばQoS要件等の他の基準を観察しながらメモリアクセスを効率的にスケジュールするために、復号化されたアドレス情報、タイミングブロック534によって示されるタイミング適格性情報、及び、ページテーブル536によって示されたアクティブページ情報を使用する。例えば、アービタ538は、メモリページを変更するために必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを回避するために、オープンページへのアクセスを優先し、別のバンクへの読み出し及び書き込みアクセスとインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠す。特に、通常動作中、アービタ538は、通常、ページを選択する前にプリチャージされる必要があるまで、異なるバンクにおいてページを開いたままにする。
【0035】
関連するメモリチャネル内の少なくとも1つのDIMMが過熱すると、メモリチャネルは、EVENT_n信号をアクティブにする。EVENT_n信号は、熱イベントがメモリチャネルの1つ以上のランクで発生したことを示すワイヤードOR信号である。電源エンジン560は、EVENT_n信号のアクティベーションを検出したことに応じて、THERMAL THROTTLE信号をアクティブにするようにプログラム可能である。アービタ538は、THERMAL THROTTLE信号のアクティベーションに応じて、低電力と効率との間のトレードオフを低電力が優先されるように変更するように、ポリシーを変更する。他の実施形態では、電源エンジン560は、イベントに応じて設定されるレジスタをポーリングすること等によって、イベント入力信号を使用することなくイベントを検出可能であることに留意されたい。アービタ538は、複数のランクのうちアクティブなランクを選択し、アクティブなランク以外の外のランクを低電力状態にする。この場合、他のランクは、THERMAL THROTTLE信号のアクティベーション時に保留中の要求を有する少なくとも1つのランクを含む。次に、アービタ538は、アクティブなランクに対するメモリアクセス要求を選ぶ。状況によっては、このメモリアクセス要求は、通常、アクセスを効率的に提供するため、又は、オーバヘッドアクセスを隠すために、別の要求を提供するようにバイパスされている。
【0036】
図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つのメモリアクセス要求を処理する。
【0037】
判別ボックス670において、アービタ538は、熱イベントが終了したかどうかを、THERMAL THROTTLE信号をサンプリングすることによって判別する。熱イベントが終了したことを示すように、THERMAL THROTTLE信号が非アクティブである場合には、フローは、アクションボックス620に戻り、アービタ538は、デフォルト基準によって決定された次の要求を処理する。複数のバンクが、デフォルト基準を使用して許可されるのと同時にアクティブになる場合があることに留意されたい。熱イベントが終了していないことを示すように、THERMAL THROTTLE信号が依然としてアクティブである場合には、フローは、判別ボックス680に進む。判別ボックス680は、別のランクを選択するかどうかを判別する。例えば、コマンドキュー520内のアクティブなランクに対する全ての要求が処理された場合には、別のランクが(当該別のランクが1つ以上の保留中の要求を有すると仮定して)選択される。他の基準(例えば、アクティブなランク内の現在のページに対するさらなる保留中の要求がないこと、又は、保留中のチャネルに対する特定の数の他の要求よりも少ない等)も可能である。この場合、フローは、アクションボックス640に戻り、アービタ538は、新たなアクティブなランクを選択し、(現在アクティブなランクを含む)他の全てのランクを低電力状態にする。アービタ538が別のランクを選択しない場合、フローは、アクションボックス660に戻り、アービタ538は、アクティブなランク内の次のコマンドを処理する。
【0038】
既知のメモリコントローラとは異なり、メモリコントローラ500は、アクティブなランク以外の全てのランクを低電力状態にする。ここで、これらの他のランクの1つ以上は、保留中の要求を含む。メモリコントローラ500は、保留中の要求があるかどうかに基づいて特定のランクを低電力にするという決定を条件付けしないことによって、熱イベントをより良く軽減するために、現在のランク以外の全ての電力を低減する。また、メモリコントローラ500は、熱イベントの存在下で、レイテンシと公正性との間のトレードオフのバランス及び電力消費のバランスを変更するのが望ましいことを認識する。熱イベントの存在下で、メモリコントローラ500は、より低い電力消費に向かうようにバランスを移動させることにより、熱イベントの軽減に役立つ。
【0039】
図6の方法は、ハードウェア及びソフトウェアの様々な組み合わせによって実施されてもよい。例えば、
図5は、ソフトウェアの制御下で動作する熱イベントを検出し報告するために、μC564を使用するメモリコントローラの一実施形態を示しているが、アービタ538は、ハードウェア回路で実装されている。このハードウェア回路は、プライオリティエンコーダ、有限状態機械、プログラマブルロジックアレイ(PLA)等を含んでもよい。しかしながら、他の実施形態では、アービタ538は、記憶されたプログラム命令を実行するマイクロコントローラを用いて実装可能である。ソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために、コンピュータ可読記憶媒体に記憶されてもよい。また、
図6に示される方法のいくつか又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。
図6に示す各動作は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリ装置を含む。非一時的なコンピュータ可読記憶媒体に記憶されるコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/若しくは実行可能な他の命令フォーマットであってもよい。
【0040】
図5のメモリコントローラ500又はこの一部は、データベースの形態でコンピュータがアクセス可能なデータ構造、又は、プログラムによって読み出され、集積回路を製造するために直接若しくは間接的に使用可能な他のデータ構造によって記述又は表現されてもよい。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、当該記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造ステップで使用して、集積回路を製造することができる。或いは、コンピュータがアクセス可能な記憶媒体上のデータベースは、(合成ライブラリを伴う若しくは伴わない)ネットリスト又はデータセットであってもよいし、必要に応じて、グラフィックデータシステム(GDS)IIデータであってもよい。
【0041】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者に明らかになるであろう。例えば、メモリコントローラは、メモリを、上述したアクティブパワーダウン、プリチャージパワーダウン、セルフリフレッシュ状態とは異なる様々な低電力状態にすることができる。また、メモリチャネルコントローラ510及び/又は電源エンジン550の内部アーキテクチャは、異なる実施形態において変えられてもよい。メモリコントローラ500は、DDRxメモリ、HBM、RAMbus DRAM(RDRAM)、及び、同様のメモリを含む様々なタイプのメモリとインタフェースすることができる。示された実施形態は、別々のDIMMに対応するメモリの各ランクを示したが、他の実施形態では、各DIMMは、複数のランクをサポートすることができる。
【0042】
一形態では、データ処理システム(100)は、メモリバスとメモリバスに接続された複数のランク(134/136/138)とを含むメモリチャネル(130)と、前記メモリチャネル(130)に接続されたデータプロセッサ(110)と、を備える。各ランクは、所定のコマンドに応答するためにロックステップで動作し、複数のチップ選択信号の各々に接続されたメモリデバイスのセットを備える。データプロセッサは、複数のランク(134/136/138)の各々にアクセスするように構成されている。データプロセッサ(110)は、所定のイベントの検出に応じて、複数のランク(134/136/138)のうちアクティブなランクを選択することと、アクティブなランク以外の他のランクを低電力状態にすることであって、他のランクは、所定のイベントを検出したときにデータプロセッサが保留中の要求を記憶する少なくとも1つのランクを含む、ことと、アクティブなランクに対するメモリアクセス要求を処理することと、を行うように構成されている。
【0043】
一態様によれば、所定のイベントは熱イベントを示し、複数のランクのうち少なくとも1つのランクは、熱イベントを示すイベント信号を提供するための出力を有する温度センサを含む。この態様によれば、複数のランクの各々は、イベント入力導体に接続された対応するオープンドレイン出力を有する、対応する温度センサを含む。
【0044】
別の態様によれば、データプロセッサ(110)は、所定のイベントが終了していないことを検出し、所定の基準に基づいて別のランクを選択しないことを決定したことに応じて、アクティブなランクにおいて次のコマンドを処理する。この態様によれば、所定の基準は、アクティブなランク内に少なくとも1つの保留中の要求があることを含んでもよい。この態様によれば、所定の基準は、アクティブなランクの現在のページ内に少なくとも1つの保留中の要求があることを含んでもよい。この態様によれば、所定の基準は、アクティブなランク内に少なくとも1つの保留中の要求があることと、他のランクに対する所定数の要求よりも少ないこととを含んでもよい。
【0045】
さらに別の態様によれば、メモリチャネルは、複数のランクのダブルデータレート(DDR)メモリを含む。この態様によれば、低電力状態は、DDR低電力状態を含んでもよい。
【0046】
他の形態では、データプロセッサ(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つのメモリアクセス要求を処理する。
【0047】
一態様によれば、低電力状態は、アクティブパワーダウン状態、プリチャージパワーダウン状態及びセルフリフレッシュ状態のうち1つを含む。
【0048】
別の態様によれば、メモリコントローラ(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)と、を備えてもよい。
【0049】
さらに別の形態では、メモリシステム(120)に対してメモリアクセスのスロットリングを行う方法(600)は、熱イベントを検出すること(630)と、熱イベントを検出したことに応じて、メモリバスに接続された複数のランク(124/126/128)のうちアクティブなランクを選択し(640)、複数のランク(124/126/128)のうちアクティブなランク以外の他のランクを低電力状態にすること(650)であって、他のランクは、メモリコントローラ(292/300/400)が保留中の要求を記憶する少なくとも1つのランクを含む、ことと、アクティブなランクに対する少なくとも1つのメモリアクセス要求を処理すること(660/670/680)と、を含む。
【0050】
一態様によれば、熱イベントを検出する(630)前に、複数のランクのうち1つのランクにおいて少なくとも1つのアクセス要求を処理すること(620)を含む。
【0051】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。