特許第6373336号(P6373336)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴィア アライアンス セミコンダクター カンパニー リミテッドの特許一覧

<>
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000002
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000003
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000004
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000005
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000006
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000007
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000008
  • 特許6373336-サニタイズ認識DRAMコントローラ 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6373336
(24)【登録日】2018年7月27日
(45)【発行日】2018年8月15日
(54)【発明の名称】サニタイズ認識DRAMコントローラ
(51)【国際特許分類】
   G06F 12/00 20060101AFI20180806BHJP
   G11C 11/406 20060101ALI20180806BHJP
【FI】
   G06F12/00 550B
   G06F12/00 550E
   G11C11/406 460
【請求項の数】19
【全頁数】14
(21)【出願番号】特願2016-249420(P2016-249420)
(22)【出願日】2016年12月22日
(65)【公開番号】特開2017-191594(P2017-191594A)
(43)【公開日】2017年10月19日
【審査請求日】2017年3月8日
(31)【優先権主張番号】62/323,177
(32)【優先日】2016年4月15日
(33)【優先権主張国】US
(31)【優先権主張番号】15/335,141
(32)【優先日】2016年10月26日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】515324257
【氏名又は名称】ヴィア アライアンス セミコンダクター カンパニー リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】テリー パークス
(72)【発明者】
【氏名】ロドニー イー フッカー
(72)【発明者】
【氏名】ダグラス アール リード
【審査官】 篠塚 隆
(56)【参考文献】
【文献】 特開2014−197446(JP,A)
【文献】 国際公開第2014/186229(WO,A1)
【文献】 国際公開第2013/183155(WO,A1)
【文献】 特開2013−080560(JP,A)
【文献】 米国特許第05469559(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 11/406
(57)【特許請求の範囲】
【請求項1】
複数のブロックを含むダイナミック・ランダム・アクセス・メモリ(DRAM)を制御するためのDRAMコントローラであって、ブロックは前記DRAM内の1つ又は複数のストレージ・ユニットであり、当該DRAMコントローラは前記DRAMに対するリフレッシュを選択的にイネーブル又はディセーブルすることができ、
当該DRAMコントローラは、
それぞれが前記DRAMの複数のブロックのうちの1つのブロックと関連する複数のフラグと、
前記複数のブロックのうちの1つのブロックがサニタイズされるべきであると判定し、それに応答して前記複数のブロックのうちの1つのブロックと関連する、前記複数のフラグのうちの1つのフラグをセットし、該ブロックのリフレッシュをディセーブルするサニタイズコントローラと、
前記DRAMの前記複数のブロックの異なるブロックに対し、前記サニタイズコントローラによって別個に割り当て可能な複数のサニタイズ検出ハードウェアインスタンスと、
を含み、
引き続く前記ブロック内のロケーションからのデータ読み取り要求の受信に応答して、前記フラグがクリアされている場合には、当該DRAMコントローラは前記ロケーションを読み出し、そこから読み出されたデータを返し、前記フラグがセットされている場合には、当該DRAMコントローラはゼロ値を返し、DRAMの読み出しを行わない、DRAMコントローラ。
【請求項2】
引き続く前記ブロック内のロケーションへのデータ書き込み要求の受信に応答して、
(a)前記フラグがクリアされている場合には、当該DRAMコントローラは前記データを前記ロケーションに書き込み、
(b)前記フラグがセットされている場合には、当該DRAMコントローラは前記ブロックのリフレッシュをイネーブルし、前記データを前記ロケーションへ書き込むことをさらに含む、請求項1記載のDRAMコントローラ。
【請求項3】
引き続く前記ブロック内の前記ロケーションへのデータ書き込み要求の受信に応答して、
(b)前記フラグがセットされている場合には、当該DRAMコントローラはさらに前記フラグをクリアし、前記ブロック内の全ての他のロケーションにゼロ値を書き込むことをさらに含む、請求項2記載のDRAMコントローラ。
【請求項4】
引き続く前記ブロック内の前記ロケーションへのデータ書き込み要求の受信に応答して、
前記フラグがセットされている場合には、当該DRAMコントローラは、書き込まれるべきデータが非ゼロである場合にのみ、動作(a)及び(b)を実行することをさらに含む、請求項2記載のDRAMコントローラ。
【請求項5】
コントロールレジスタをさらに含み、
前記サニタイズコントローラは、前記DRAM及び当該DRAMコントローラを含むシステムのシステムソフトウェアにより前記コントロールレジスタへの書き込みを検出することによって、前記ブロックがサニタイズされるべきであると判定する、請求項1に記載のDRAMコントローラ。
【請求項6】
前記サニタイズコントローラは、前記ブロックの全てのロケーションへ、前記ブロックのロケーションへの非ゼロ値の書き込みの介入なしに、一連のゼロ値書き込みを検出することによって、前記ブロックがサニタイズされるべきであると判断するハードウェアをえる、請求項1に記載のDRAMコントローラ。
【請求項7】
各サニタイズ検出ハードウェアインスタンスは、
DRAMコントローラがブロック内のどのロケーションにゼロ値が書き込まれたかを追跡するために使用するビットマップと、
前記ビットマップが全て真のビットを有するときを検出するロジックとを備える、請求項に記載のDRAMコントローラ。
【請求項8】
各サニタイズ検出ハードウェアインスタンスは、
最も新しくゼロ値が書き込まれた前記ブロック内の固定サイズのワードの後の次の固定長のワードのインデックスを保持するレジスタであって、当該インデックスが現在のゼロ値の固定長ワード書き込みのインデックスと一致するとインクリメントされるレジスタと、
前記現在のゼロ値の固定長ワード書き込みのインデックスが前記ブロック内の最高インデックスとなるときを検出するロジックとを備える、請求項に記載のDRAMコントローラ。
【請求項9】
複数のブロックを含むダイナミック・ランダム・アクセス・メモリ(DRAM)を制御するための方法であって、ブロックは前記DRAM内の1つ又は複数のストレージ・ユニットであり、DRAMコントローラは前記DRAMに対するリフレッシュを選択的にイネーブル又はディセーブルすることができ、
当該方法は、
前記複数のブロックのうちの1つのブロックがサニタイズされるべきであると判定するステップであり、それに応答して、前記複数のブロックのうちの1つのブロックと関連するフラグをセットし、該ブロックのリフレッシュをディセーブルする、判定ステップを備え、
前記フラグは、それぞれがDRAMの複数のブロックのうちの1つのブロックと関連する複数のフラグのうちの1つのフラグであり、
当該方法はさらに、
前記DRAMの前記複数のブロックの異なるブロックに対し、複数のサニタイズ検出ハードウェアインスタンスを別個に割り当てるステップと、
引き続く前記ブロック内のロケーションからのデータ読み取り要求の受信に応答して、
前記フラグがクリアされている場合に、前記ロケーションを読み出し、そこから読み取られたデータを返すステップと、
前記フラグがセットされている場合に、前記DRAMの読み出しを行わず、ゼロ値を返すステップと、を備える方法。
【請求項10】
引き続く前記ブロック内のロケーションからのデータ書き込み要求の受信に応答して、
(a)前記フラグがクリアされている場合に、前記データを前記ロケーションに書き込むステップと、
(b)前記フラグがセットされている場合に、前記ブロックのリフレッシュをイネーブルし、前記ロケーションに前記データを書き込むステップと、をさらに備える、請求項に記載の方法。
【請求項11】
引き続く前記ブロック内のロケーションからのデータ書き込み要求の受信に応答して、
(b)前記フラグがセットされている場合に、さらに、前記フラグをクリアし、前記ブロック内の全ての他のロケーションにゼロ値を書き込むステップをさらに備える、請求項10に記載の方法。
【請求項12】
引き続く前記ブロック内のロケーションからのデータ書き込み要求の受信に応答して、
前記フラグがセットされている場合に、書き込まれるべきデータが非ゼロである場合にのみ、動作(a)及び(b)を実行するステップをさらに備える、請求項10に記載の方法。
【請求項13】
前記ブロックがサニタイズされるべきであると判定する前記判定ステップは、前記DRAM及びコントロールレジスタを含むDRAMコントローラを有するシステムのシステムソフトウェアによって前記コントロールレジスタへの書き込みを検出するステップをさらに備える、請求項9に記載の方法。
【請求項14】
前記ブロックがサニタイズされるべきであると判定する前記判定ステップは、前記ブロックのロケーションへの非ゼロ値の書き込みの介入なしに、前記ブロックの全てのロケーションへの一連のゼロ値書き込みを検出するステップをさらに備える、請求項に記載の方法。
【請求項15】
当該方法は、前記DRAMの前記複数のブロックの異なるブロックに対し、別個に割り当て可能な複数のサニタイズ検出ハードウェアインスタンスを備えたDRAMコントローラによって実行されることをさらに含む、請求項14に記載の方法。
【請求項16】
前記ブロック内のロケーションへのゼロ値の書き込みの検出に応答してビットマップのビットを真にセットするステップであって、前記ビットマップの各ビットが前記ブロック内の異なるロケーションと関連しているステップをさらに備え、
前記ブロックがサニタイズされるべきであると判定する判定ステップは、前記ビットマップが全て真のビットを有することを検出するステップをさらに備える、請求項15に記載の方法。
【請求項17】
インデックスが現在のゼロ値の固定長ワード書き込みのインデックスと一致すると、レジスタをインクリメントすることによって、前記ブロック内の最も新しくゼロ値が書き込まれた固定サイズのワードの後の次の固定長ワードのインデックスを保持するようにレジスタを維持するステップをさらに備え、
前記ブロックがサニタイズされるべきであると判定する前記判定ステップは、前記現在のゼロ値の固定長ワード書き込みのインデックスが前記ブロック内の最高インデックスとなるときを検出するステップを備える、請求項15に記載の方法。
【請求項18】
コンピューティングデバイスと共に使用するための少なくとも1つの非揮発性コンピュータ使用可能媒体において符号化されたコンピュータプログラムであって、
当該コンピュータプログラムは、
複数のブロックを含むダイナミック・ランダム・アクセス・メモリ(DRAM)を制御するためのコントローラを指定するための前記媒体内に具現化されたコンピュータ使用可能プログラムコードを含み、ブロックは前記DRAM内の1つ又は複数のストレージ・ユニットであり、DRAMコントローラは前記DRAMに対するリフレッシュを選択的にイネーブル又はディセーブルすることができ、
前記コンピュータ使用可能プログラムコードは、
それぞれが前記DRAMの複数のブロックのうちの1つのブロックと関連する複数のフラグを指定する第1のプログラムコードと、
前記複数のブロックのうちの1つのブロックがサニタイズされるべきであると判定し、それに応答して前記複数のブロックのうちの1つのブロックと関連する、前記複数のフラグのうちの1つのフラグをセットし、該ブロックのリフレッシュをディセーブルし、前記DRAMの前記複数のブロックの異なるブロックに対し、複数のサニタイズ検出ハードウェアインスタンスを別個に割り当てる、サニタイズコントローラを指定する第2のプログラムコードとを備え、
引き続く前記ブロック内のロケーションからのデータ読み取り要求の受信に応答して、前記フラグがクリアされている場合に、当該DRAMコントローラは前記ロケーションを読み出し、そこから読み出されたデータを返し、前記フラグがセットされている場合に、当該DRAMコントローラはDRAMの読み出しを行わず、ゼロ値を返す、コンピュータプログラム。
【請求項19】
前記少なくとも1つの非揮発性コンピュータ使用可能媒体は、ディスク、テープ、又は他の磁気、光学、又は電子記憶媒体の群から選択される、請求項18に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、参照によりその全体が本明細書に組み込まれる、SANITIZE−AWARE DRAM CONTROLLERと題する米国仮出願第62/323,177号(2006年4月15日出願)に基づく優先権を主張する。
【背景技術】
【0002】
ダイナミック・ランダム・アクセス・メモリ(DRAM)は、現代のコンピューティングシステムにおいて普及している。DRAMは、コストが低く、容量/密度が高く、高速であるため、普及している。密度の利点は、主に、データビットを記憶するための各セルがコンデンサおよび単一トランジスタのみを必要とするという事実に由来する。これは、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)でセル当たりに必要とされるよりも著しく少ないハードウェアである。しかしながら、セルのキャパシタへのデータビットの記憶は、電力消費コストを意味する。これは、コンデンサの電荷が時間とともにリークし、セルに値の喪失を引き起こす。したがって、その値を保持するために、コンデンサは定期的に「リフレッシュ」されねばならない。これは、セルから現在の値を読み取り、その値を「リフレッシュ」するためにセルに書き戻すことを含む。リフレッシュ動作は、リフレッシュを必要としない他のメモリ技術以上の追加の電力を消費する。リフレッシュは、システムによるDRAMアクセスの需要に応じて、DRAMのエネルギー消費のかなりの割合、例えば約20%に寄与し、システム性能を、例えば約30%低下させる可能性がある。
【0003】
本発明の共同発明者の一人による米国特許第5,469,559号には、DRAMの有効なデータを含まない選択された部分をリフレッシュするためのメモリコントローラおよび方法が記載されている。これは、無効なデータへの不要なリフレッシュによって消費される電力の量が削減される可能性がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国仮出願第62/323,177号明細書
【特許文献2】米国特許第5469559号明細書
【発明の概要】
【0005】
本発明の発明者らは、さらなる利点を提供するDRAMコントローラの実施形態を提供する。追加の利点は、多くのオペレーティングシステムが、例えばハッカー及び/又はメモリが割り当てられた次のユーザが第1のユーザのデータを見ることを防止することによってシステムセキュリティを高めるために、割り当てを解除されたメモリにゼロに書き込むことによってそのメモリを「サニタイズ」するということを本発明者が見出したことによって主に享受される
【図面の簡単な説明】
【0006】
図1図1は、コンピューティングシステムを示すブロック図である。
図2図2は、別の実施形態によるコンピューティングシステムを示すブロック図である。
図3図3は、システムの動作を示すフローチャートである。
図4図4は、システムの動作を示すフローチャートである。
図5図5は、システムの動作を示すフローチャートである。
図6図6は、一実施形態によるサニタイズされたDRAMブロックの選択的リフレッシュを実行するオペレーションシステムの動作を示すフローチャートである。
図7図7は、サニタイズ検出ハードウェア(SDH)インスタンスを示すブロック図である。
図8図8は、図7のSDHインスタンスを使用することによってDRAMブロックがサニタイズされるべきであることを検出するDRAMコントローラの動作を示すフローチャートである。
【発明を実施するための形態】
【0007】
DRAMのブロックは、DRAM内の1つ又は複数のストレージユニットであり、DRAMコントローラは、それに対してリフレッシュを選択的にイネーブル又はディセーブルすることができる。例えば、データRAM122の「行」と一般に称されるものがリフレッシュ可能である。いくつかのDRAMでは、例えば、1行は512バイトのストレージである。
【0008】
DRAMのブロックをサニタイズすることは、ブロック内のすべてのロケーションをゼロ値にクリアすることを意味する。
【0009】
ここで図1を参照すると、コンピューティングシステム100を示すブロック図が示されている。コンピューティングシステム100は、プロセッサ102と、DRAM104と、プロセッサ102をDRAM104に接続するDRAMコントローラ103と、DRAMコントローラ103を介してDRAM104にアクセスする他のバスマスタ106、例えばバスマスタリングI/Oデバイスと、を含む。プロセッサ102は、マルチコアプロセッサであってもよい。プロセッサ102は、オペレーティングシステム及び/又は基本入出力システム(BIOS)又は拡張ファームウェアなどのシステムファームウェア並びにユーティリティ及びアプリケーションプログラムなどのシステムソフトウェアを含むプログラムを実行する。DRAM104は、複数のDRAMブロック142として構成される。システムソフトウェアは、とりわけ、DRAMブロック142全体を含むDRAM104の一部をサニタイズする。多くのオペレーティングシステムは、プロセッサ102にサポートされる仮想メモリシステムに従ってサイズが判定されているページの粒度でメモリをサニタイズする。例えば、共通のページサイズは、4KB、64KB、1MB、16MB、256MB、1GB及び2GBである。
【0010】
DRAMコントローラ103は、DRAMブロック142としての、例えばDRAM104の行のリフレッシュを、DRAMコントローラが選択的にイネーブル又はディセーブルできるDRAM104内の1つ又は複数のストレージの単位を考慮する。いくつかの実施形態では、DRAMブロック142のサイズは、プロセッサ102の仮想メモリシステムによってサポートされる最小のページのサイズに対応する。例えば、DRAMコントローラがリフレッシュを選択的にイネーブル又はディセーブルすることができるストレージの単位が512バイト行であり、プロセッサ102によってサポートされる最小ページサイズが4KBである場合、DRAMコントローラ103は、DRAM104の8つの連続する行をDRAMブロック142として考慮する。
【0011】
DRAMコントローラ103は、サニタイズビット132とも呼ばれる複数のサニタイズフラグ132及びサニタイズコントローラ134を含む。一実施形態では、DRAMコントローラ103は、DRAM104の対応する各DRAMブロック142について、サニタイズビット132を含む。
【0012】
ここではサニタイズ範囲の実施形態と称される代替的実施形態において、各サニタイズビット132は、一緒にサニタイズペアを構成する対応する範囲レジスタを有する。範囲レジスタは、アドレスおよび連続するDRAMブロック142の範囲を指定するカウントを保持する。アドレスは、範囲内の第1または開始のDRAMブロック142を指定し、カウントはその範囲内の連続するDRAMブロック142の数を指定する。サニタイズビット132がセットされている場合、対応する範囲レジスタで指定されたDRAMブロック142の範囲は、以下により詳細に説明するように、サニタイズされたとみなされる。サニタイズコントローラ134は、複数のサニタイズペアを、プールとして扱い、そのプールから一連の連続したDRAMブロック142に対する割り当てを行うことができ(例えば図3のブロック304)、そのプールへ割り当て解除することができる(例えば、図5のブロック508)。サニタイズビット132がセットされている場合、サニタイズペアが割り当てられていることを示し、サニタイズビット132がクリアされている場合、これは、サニタイズペアが割り当てのために空いていることを示す。
【0013】
ここで図2を参照すると、代替的実施形態によるコンピューティングシステム100を示すブロック図が示されている。図2のコンピューティングシステム100は、図1のコンピューティングシステム100と類似であり、類似の要素を含む。しかしながら、図2のコンピューティングシステム100では、DRAMコントローラ103がプロセッサ102に組み込まれている。より具体的には、プロセッサ102は、DRAMコントローラ103が接続されたリングバス226を含む。プロセッサ102はまた、リングバス226に接続された複数の処理コア222を含む。プロセッサ102はまた、コア222によって共有されるリングバス226に接続されたラストレベルキャッシュ(LLC)224を含む。好ましくは、DRAMコントローラ103、LLC224、及び各コア222は、それをリングバス226に接続する関連するリングストップ228を有する。最後に、プロセッサ102は、I/Oデバイス106をリングバス226に接続するI/Oリングストップ228を含む。
【0014】
ここで図3を参照すると、システム100の動作を示すフローチャートが示されている。フローはブロック302で開始する。
【0015】
ブロック302において、DRAMコントローラ103は、DRAMブロック142がサニタイズされるべきであると判定する。一実施形態では、システムソフトウェアは、例えば、図6に関して以下に説明するように、DRAMブロック142がサニタイズされるべきであることをDRAMコントローラ103に通知する。別の実施形態では、DRAMコントローラ103は、例えば、図7および図8に関して以下に説明するように、DRAMブロック142に対するゼロ値書き込みを監視することによって判定を行うハードウェアを含む。DRAMブロック142がサニタイズされるべきであることを判定するための他の実施形態も考えられる。フローはブロック304に進む。
【0016】
ブロック304において、DRAMコントローラ103は、ブロック302で判定されたDRAMブロック142に関連付けられたサニタイズビット132をセットする。さらに、DRAMコントローラ103は、そのDRAMブロック142のリフレッシュをディセーブルする。サニタイズ範囲の実施形態では、DRAMコントローラ103は、サニタイズペアを割り当て、サニタイズビット132をセットし、範囲内の第1のDRAMブロック142のアドレスと、範囲内のDRAMブロック142の数の総数とを範囲レジスタに投入する。さらに、DRAMコントローラ103は、その範囲のすべてのDRAMブロック142のリフレッシュをディセーブルする。フローはブロック304で終了する。
【0017】
ここで図4を参照すると、システム100の動作を示すフローチャートが示されている。フローはブロック402で開始する。
【0018】
ブロック402において、DRAMコントローラ103は、DRAM104のロケーションからの読み出し要求を受信する。このロケーションは、DRAMブロック142に関係し、即ちそのアドレスに基づいてDRAMブロック142内にある。フローは判断ブロック404に進む。
【0019】
判断ブロック404において、DRAMコントローラ103は、関係するDRAMブロック142に対応するサニタイズビット132がセットされているかどうかを判定する。そうであれば、フローはブロック408に進み、そうでなければフローはブロック406に進む。サニタイズ範囲の実施形態では、サニタイズコントローラ134は、読み出し要求のアドレスが、サニタイズビット132がセットされたサニタイズペアの範囲レジスタで指定された範囲に入ることを判定する。
【0020】
ブロック406において、DRAMコントローラ103は、指定されたロケーションをDRAM104から読み出し、DRAMコントローラ103の通常動作に従って、読み出されたデータを返す。フローはブロック406で終了する。
【0021】
ブロック408において、DRAMコントローラ103は、DRAM104を読み出さず、その代わりに読み出し要求にゼロ値を返す。これは、読み出し要求によって関係付けられたDRAMブロック142が判断ブロック404でサニタイズされると判定されたためである。フローはブロック408で終了する。
【0022】
(例えば、ブロック408において)ブロックがサニタイズされているときDRAMを読み取らないことの利点は、(1)ゼロ値を維持するためにDRAMブロックをリフレッシュする必要がないので、より少ない電力が消費されうること、(2)ソフトウェアがデータの読み出しを要求しても、DRAMがデータを読み取るためにアクセスされないので、より少ない電力が消費されうること、(3)要求されたデータを読み取るためにDRAMにアクセスする必要がないので、リード要求の待ち時間が短くなるため性能が向上しうること、があり、それらのすべてはデータの要求されている値がゼロであることが分かっていることにより可能となる。
【0023】
ここで図5を参照すると、システム100の動作を示すフローチャートが示されている。フローはブロック502で開始する。
【0024】
ブロック502において、DRAMコントローラ103は、DRAM104のロケーションへのデータ書き込み要求を受信する。より具体的には、DRAMコントローラ103は、書き込まれるデータが非ゼロ値であると判定する。このロケーションは、DRAMブロック142に関係し、即ち、そのアドレスに基づいてDRAMブロック142内にあるか、又は、サニタイズ範囲の実施形態におけるDRAMブロック142の範囲に関係する。代替的実施形態では、DRAMコントローラ103は、書き込まれるデータが非ゼロであるかどうかをチェックするのではなく、代わりにデータ値に関係なく図5の動作を実行する。DRAMコントローラ103がDRAM104のロケーションにゼロ値を有するデータを書き込む要求を受信した場合には、サニタイズビット132がセットされていればDRAMコントローラ103はDRAM104に書き込まないのに対して、サニタイズビット132がクリアされていれば、DRAMコントローラ103がゼロ値をDRAM104の指定されたロケーションに書き込む。フローは判断ブロック504に進む。
【0025】
判断ブロック504において、DRAMコントローラ103は、関係するDRAMブロック142に又はDRAMブロック142の範囲に対応するサニタイズビット132が設定されているかどうかを判定する。そうであれば、フローはブロック508に進む。そうでない場合、フローはブロック506に進む。サニタイズ範囲の実施形態では、サニタイズコントローラ134は、書き込み要求のアドレスが、サニタイズビット132がセットされたサニタイズペアの範囲レジスタに指定された範囲に入ると判定する。
【0026】
ブロック506において、DRAMコントローラ103は、指定されたデータをDRAM104の特定の場所に、即ちDRAMコントローラ103の通常の動作に従って書き込む。フローはブロック506で終了する。
【0027】
ブロック508において、DRAMコントローラ103は、関係するDRAMブロック142に対応するサニタイズビット132をクリアする。さらに、DRAMコントローラ103は、関係するDRAMブロック142のリフレッシュ、又は、サニタイズ範囲の実施形態において範囲レジスタによって関係付けられたDRAMブロック142の範囲のリフレッシュを再びイネーブルする。さらに、DRAMコントローラ103は、指定されたデータをDRAM104の指定されたロケーションに書き込む。最後に、DRAMコントローラ103は、書き込み要求によって指定されたロケーション以外の、DRAMブロック142のすべてのロケーション又はDRAMブロック142の関係する範囲に、ゼロを書き込む。フローはブロック508で終了する。
【0028】
サニタイズされたブロックへの第1の非ゼロ書き込みが行われるまで、ブロックの他のロケーションにゼロ値を書き込むのを待つことの長所は、(1)そのブロックが割り当てられたことをオペレーティングシステムが示すとすぐにリフレッシュが開始される場合(例えば、米国特許第5,469,559号)に比べて、DRAMブロックが追加の回数量だけリフレッシュされず、場合によってそれは、そのブロックが割り当てられた後、ソフトウェアがそのブロックに書き込む前に、かなりの回数量となりうるので、より少ない電力が消費されるかもしれないという点、(2)オペレーティングシステムは、ブロックにゼロを書き込むために、プロセッサ102が数十から数百のオーダーに及びうる命令を実行することを含む、ブロックへのゼロ書き込みを、全ては実行する必要がない、という点である。この後者の考察は、次のよう利点を有する。(a)多くの書き込み命令を実行する必要がないので、プロセッサ102によってより少ない電力が消費される、(b)プロセッサ102が多くの書き込み命令を実行する必要がなくなり、したがって他の命令を実行する空きができるので、システム性能が改善され得る、(c)DRAMコントローラ103は、プロセッサ102が書き込み命令を実行し、かつ、DRAMコントローラ103への書き込み要求を作成しなければならない場合に生じる、余分な待ち時間なしでブロックへのゼロ書き込みを実行するのでシステム性能が改善され得る。第2の利点(2)は、図7及び図8のサニタイズ検出ハードウェア(SDH)の実施形態によっては実現されないことがあると理解されるべきである。
【0029】
ここで図6を参照すると、一実施形態による、サニタイズされたDRAMブロック142の選択的リフレッシュを実行するシステム100の動作を示すフローチャートが示されている。フローはブロック602で開始する。
【0030】
ブロック602において、(例えば、オペレーティングシステム又は他のエグゼクティブなどの)システムソフトウェアは、DRAMブロック142をサニタイズすることを判定する。例えば、いくつかのオペレーティングシステムは、メモリロケーションのシークエンス、即ち、所定のメモリアドレスから始まる所定の数の連続するメモリロケーションをサニタイズするために呼び出されるシステムコールであって、UNIX(登録商標)オペレーティングシステム及び、MacOSX並びにMicrosoftWindowsの後のバージョンのような同種のオペレーティングシステムで見られるbzero()やmemset()のようなシステムコールを提供する。慣習的に、それらのシステムコールを実行するルーチンは、所定のシークエンスで全てのメモリロケーションへのゼロ値の一連の書き込みを行う。一実施形態では、システムコールを実行するルーチンは、DRAMコントローラ103の能力を利用して変更される。より具体的には、ルーチンは、1つ又は複数のDRAMブロック142全体が一連のメモリロケーションによって含まれるかどうかをチェックする。そうであれば、従来のように含まれているブロック142への一連のゼロ値書き込みを実行する代わりに、ルーチンは、ブロック604に関して説明するように、DRAMコントローラ103へ、含まれているブロック142をサニタイズするように要求する書き込みをする。フローはブロック604へ進む。
【0031】
ブロック604において、システムソフトウェアは、サニタイズすべきブロック142のアドレスをDRAMコントローラ103に書き込む。好ましくは、DRAMコントローラ103は、アドレスを受け取るコントロールレジスタを含む。即ち、コントロールレジスタは、DRAM104及びDRAMコントローラ103を含むシステム100上(例えば、プロセッサ102上)で実行されるシステムソフトウェアによって書き込み可能である。サニタイズ範囲の実施形態では、システムソフトウェアは、アドレス及びその範囲のDRAMブロック142の数の両方を書き込む。フローはブロック606に進む。
【0032】
ブロック606において、DRAMコントローラ103は、指定されたブロック142又はブロック142の範囲に対して図3の動作を実行する、即ち、ブロック142又はブロック142の範囲に関連するサニタイズビット132を設定し、ブロック142又はブロック142の範囲に対してリフレッシュをディセーブルする。フローはブロック606で終了する。
【0033】
ここで図7を参照すると、サニタイズ検出ハードウェア(SDH)インスタンス700を示すブロック図が示されている。一実施形態では、DRAMコントローラ103は複数のSDHインスタンス700を含み、そこからDRAMコントローラ103が割り当てを行い(例えば、図8のブロック806)、その中へDRAMコントローラ103が割り当てを解除する(例えば、図8のブロック818)。SDHインスタンス700は、有効ビット702、ビットマップ704、アドレスレジスタ708、及びコントロールロジック706を含む。有効ビット702は、真の場合にSDHインスタンス700が割り当てられていることを示し、偽の場合にSDHインスタンス700が空いていることを示す。ビットマップ704は、そのアドレスがアドレスレジスタ708に保持されているDRAMブロック142の各ロケーションに対するビットを含む。様々な実施形態では、DRAMブロック142内のロケーションは、整列バイト、16ビットハーフワード、32ビットワード、64ビットダブルワード、128ビットクワドワード、又は256ビットオクタワードに対応する。一実施形態では、ロケーションは、例えばプロセッサ102のラストレベルキャッシュの整列キャッシュラインに対応する。図8を参照して以下に説明するように、コントロールロジック706は、有効ビット702、ビットマップ704、及び、アドレスレジスタ708の読み出し及び更新に関連する動作を実行する。
【0034】
ここで図8を参照すると、図7のSDHインスタンス700を使用することによってDRAMブロック142がサニタイズされることを検出するDRAMコントローラ103の動作を示すフローチャートが示されている。フローはブロック802で開始する。
【0035】
ブロック802において、DRAMコントローラ103は、DRAM104のロケーションにデータを書き込む要求を受信する。そのロケーションは、DRAMブロック142を表し、即ち、そのアドレスに基づいてDRAMブロック142内にあるか、又は、サニタイズ範囲の実施形態におけるDRAMブロック142を表す。フローは判断ブロック804に進む。
【0036】
判断ブロック804において、DRAMコントローラ103は、SDHインスタンス700が、書き込み要求によって関係付けられたDRAMブロック142又はDRAMブロック142の範囲に対して割り当てられているかどうかを判定する。より具体的には、DRAMコントローラ103は、読み出し要求アドレスの関連部分が、SDHインスタンス700の有効ビット702のアドレス708と一致するかどうかを判定する。そうであれば、フローは判断ブロック808に進み、そうでなければ、フローはブロック806に進む。
【0037】
ブロック806において、サニタイズコントローラ134は空きSDHインスタンス700を割り当てる。好ましくは、SDHインスタンス700を割り当てることは、空きSDHインスタンス700(即ち、有効ビット702が偽である)を見つけること、有効ビットを真に初期化すること、ビットマップ704の全てのビットをゼロへとクリーニングすること、及び、書き込み要求アドレスの関連部分をアドレスレジスタ708に書き込むことを含む。好ましくは、割り当てるべき空きSDH700がない場合、DRAMコントローラ103は単に通常通り継続する、即ち、ブロックがサニタイズされていることを検出することを試みない。フローはブロック806で終了する。
【0038】
判断ブロック808において、サニタイズコントローラ134は、書き込まれるべき値がゼロであるかどうかを判定する。そうであれば、フローはブロック814に進む。そうでなければ、フローはブロック812に進む。
【0039】
ブロック812において、サニタイズコントローラ134は、DRAMブロック142に対して以前に(即ち、ブロック806において)割り当てられたSDHインスタンス700を割り当て解除する。好ましくは、SDHインスタンス700の割り当てを解除することは、後の割り当てのためにSDHインスタンス700を解放する、有効なビット702をクリアすることを含む。フローは、ブロック812で終了する。
【0040】
ブロック814において、サニタイズコントローラ134は、ブロック802で受信された要求によって書き込まれたDRAMブロック142内のロケーションに関連するビットマップ704のビットをセットする。フローは、判断ブロック816に進む。
【0041】
判断ブロック816において、サニタイズコントローラ134は、ビットマップ704が一杯であるかどうか、即ち、ビットマップ704のビットがすべてセットされているかどうかを判定する。そうであれば、フローはブロック818に進む。そうでなければ、フローは終了する。
【0042】
ブロック818において、サニタイズコントローラ134は、DRAMブロック142に対して以前に割り当てられたSDHインスタンス700を割り当て解除し、図3を参照して説明したDRAMブロック142の動作の実行を開始する。なぜなら、サニタイズコントローラ134は、システムソフトウェアがDRAMブロック142をサニタイズしたと判定したからである。
【0043】
SDHインスタンスの他の実施形態も考えられる。一実施形態では、DRAMコントローラ103は、ブロック142をサニタイズするための一連のゼロ値書き込みが固定サイズワードであり、ブロック142の第1のロケーションから始まると仮定する。この実施形態はビットマップ704を必要とせず、その代わりに、最も新しくゼロ値が書き込まれたブロック142のワードの後のブロック142内の固定サイズワードのインデックスを保持するレジスタを必要とする。動作中、DRAMコントローラ103は、ブロック142における第1のロケーションへのデータ値の書き込みを検出する。SDHインスタンスがブロック142に対して割り当てられておらず、書き込みが固定サイズのゼロ値ワードである場合、DRAMコントローラ103は、SDHインスタンスを割り当てる。SDHインスタンスの割り当ては、レジスタを1の値に初期化することが含まれる。SDHインスタンスがブロック142に割り当てられている場合、DRAMコントローラ103は、データ値がゼロであり、レジスタのインデックスが現在のゼロ値書き込みのインデックスと一致するかどうかを判定する。そうでなければ、DRAMコントローラ103はSDHインスタンスを割り当て解除する。そうでない場合、DRAMコントローラ103は、レジスタのインデックスがブロック142で最高のインデックスであるかどうかを判定する。そうであれば、DRAMコントローラ103はSDHインスタンスを割り当て解除し、ブロックに対して図3の動作を実行する。そうでなければ、DRAMコントローラ103はレジスタをインクリメントする。
【0044】
本発明の様々な実施形態をここで説明してきたが、それらは例として提示されおり、限定ではないことを理解されたい。関連するコンピュータ技術の当業者には、本発明の範囲から逸脱することなく、形態及び詳細の様々な変更を行うことができることが明らかであろう。例えば、ソフトウェアは、ここで説明された装置及び方法の、例えば、機能、製造、モデリング、シムレーション、ディスクリプション及び/又は試験を可能にすることができる。これは、一般的なプログラミング言語(例えば、C、C++)、VerilogHDL、VHDLなどを含むハードウェア記述言語(HDL)、又は他の利用可能なプログラムを使用して達成することができる。そのようなソフトウェアは、磁気テープ、半導体、磁気ディスク、又は光ディスク(例えば、CD−ROM、DVD−ROMなど)、ネットワーク、有線、無線又は他の通信媒体のような、公知のコンピュータ読取可能媒体に配列され得る。ここで説明された装置及び方法の実施形態は、(例えば、HDLで具体化又は指定され)集積回路の製造においてハードウェアに変換されるプロセッサコアなどの半導体知的財産コアに含まれてもよい。さらに、個々で説明される装置及び方法は、ハードウェアとソフトウェアとの組み合わせとして実施されてもよい。したがって、本発明は、ここで説明された例示的実施形態のいずれによっても制限されるべきではなく、添付の特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。具体的には、本発明は、汎用コンピュータで使用可能なプロセッサ装置内で実施することができる。最後に、当業者は、添付の特許請求の範囲によって定義された本発明の範囲を逸脱することなく、本発明と同じ目的を実現するための他の構造を設計し又は改変するための基礎として、開示された概念を容易に使用することができることを評価すべきである。
図1
図2
図3
図4
図5
図6
図7
図8