JP5597306B2 - 記憶効率の高いセクタ化されたキャッシュ - Google Patents

記憶効率の高いセクタ化されたキャッシュ Download PDF

Info

Publication number
JP5597306B2
JP5597306B2 JP2013504876A JP2013504876A JP5597306B2 JP 5597306 B2 JP5597306 B2 JP 5597306B2 JP 2013504876 A JP2013504876 A JP 2013504876A JP 2013504876 A JP2013504876 A JP 2013504876A JP 5597306 B2 JP5597306 B2 JP 5597306B2
Authority
JP
Japan
Prior art keywords
data
sector
specific
array
tag
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.)
Expired - Fee Related
Application number
JP2013504876A
Other languages
English (en)
Other versions
JP2013524379A (ja
Inventor
ソリヒン,ヤン
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2013524379A publication Critical patent/JP2013524379A/ja
Application granted granted Critical
Publication of JP5597306B2 publication Critical patent/JP5597306B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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

Description

本明細書において別段の指示のない限り、この節で説明する題材は、本出願の請求項に対する従来技術ではなく、またこの節に含めることによって従来技術であると認められることはない。
プロセッサまたはプロセッサコアの1つまたは複数がアクセスするデータを格納するためにキャッシュが使用されうる。データは、キャッシュを備えるチップの外部に典型的には配置される、より大容量のメモリ内に格納されたデータのコピーとすることができる。キャッシュ内のデータのコピーは、データ配列内に格納することができる。タグ配列が、データ配列内に格納されているデータのインデックスを保持することができる。プロセッサは、アドレスを識別することによってキャッシュ内に格納されている特定のデータを要求することができる。アドレスはタグ配列内のアドレスと比較され、これにより、特定のデータのコピーがキャッシュのデータ配列内に格納されているかどうかを判定する。
一例では、特定のブロックの特定のセクタ内にある特定のデータをメモリからキャッシュ内にコピーするための方法が説明される。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備えることができる。いくつかの例では、この方法は、メモリから特定のセクタ内の特定のデータを、開始セクタから始まるデータ配列のウェイ内にプロセッサによってコピーすることを含むことができる。いくつかの例では、この方法は、特定のセクタを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。いくつかの例では、この方法は、データ配列内のウェイを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。いくつかの例では、この方法は、開始セクタを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。
別の例では、特定のブロックの特定のセクタ内にある特定のデータをコピーするためのシステムが説明される。いくつかの例では、システムは、タグ配列およびデータ配列を備えるキャッシュを具備する。いくつかの例では、システムは、メモリと、キャッシュおよびメモリと通信するように構成されたプロセッサとをさらに備える。いくつかの例では、プロセッサは、メモリから特定のセクタ内の特定のデータを開始セクタから始まるデータ配列のウェイ内にコピーするのに有効であるものとしてよい。いくつかの例では、プロセッサは、特定のセクタを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。いくつかの例では、プロセッサは、データ配列のウェイを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。いくつかの例では、プロセッサは、開始セクタを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。
さらに別の例では、アドレスに基づきキャッシュ内に格納されている特定のセクタ内の特定のデータのコピーを取り出すための方法が説明される。いくつかの例では、アドレスは、タグフィールド、セットインデックスフィールド(set index field)、およびセクタインデックスフィールド(sector index field)を備える。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備える。いくつかの例では、この方法は、セットインデックスフィールド内で識別されているセット内の、タグフィールド内の第1のタグデータを、タグ配列内の別のタグフィールド内の第2のタグデータと、プロセッサによって比較して、一致するタグを生成することを含む。いくつかの例では、一致するタグは、タグ構造内にある。いくつかの例では、タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを備える。いくつかの例では、この方法は、タグ構造のセクタビットベクタフィールド内のセクタビットベクタデータを、アドレスのセクタインデックスフィールド内のデータと、プロセッサによって比較し、特定のセクタ内の特定のデータのコピーがキャッシュ内に格納されていると判定することをさらに含む。いくつかの例では、この方法は、ウェイフィールド内のデータをプロセッサによって分析し、特定のセクタ内の特定のデータのコピーが格納されているデータ配列内のウェイを決定することをさらに含む。いくつかの例では、この方法は、開始セクタフィールド内のデータをプロセッサによって分析し、特定のセクタ内の特定のデータのコピーが格納されているデータ配列内の開始セクタを決定することをさらに含む。いくつかの例では、この方法は、データ配列のウェイ、セット、および開始セクタ内の特定のデータのコピーをプロセッサによって取り出すことをさらに含む。
前述の説明は、例示的なものにすぎず、いっさい制限することを意図されていない。上述の例示的な態様、実施形態、および特徴に加えて、図面を参照し、以下の詳細な説明を参照することによってさらなる態様、実施形態、および特徴も明らかになるであろう。
本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示す図である。 本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示す図である。 本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するための例示的なプロセスの流れ図である。 本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するための例示的なコンピュータプログラム製品を示す図である。 本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するように構成された例示的なコンピューティングデバイスを示すブロック図である。
以下の詳細な説明では、詳細な説明の一部をなす、添付図面が参照される。図面中の類似の記号は、典型的には、文章が別段説明していない限り類似のコンポーネントを明示する。詳細な説明、図面、および請求項で説明されている例示的な実施形態は、制限することを意図されていない。他の実施形態も利用することができ、また本明細書に提示されている主題の精神または範囲から逸脱することなく、他の変更を加えることができる。本明細書で一般的に説明され、また図に例示されているような本開示の態様は、さまざまな異なる構成による配置、置換、組み合わせ、分離、設計が可能であり、すべて本明細書において明示的に企図される。
本開示は、とりわけ、記憶効率の高いセクタ化されたキャッシュを実装することに関係する方法、装置、システム、デバイス、およびコンピュータプログラム製品に、一般的に関する。
簡単に言うと、メモリ内の特定のブロックの特定のセクタ内にある特定のデータをメモリからキャッシュ内にコピーするためのシステムの技術が一般的に説明されているということである。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備える。いくつかの例では、プロセッサは、メモリから特定のセクタ内のデータを開始セクタから始まるデータ配列のウェイ内にコピーするように適合されうる。いくつかの例では、プロセッサは、特定のセクタを識別するためにタグ配列を更新するように適合されうる。いくつかの例では、プロセッサは、データ配列内のウェイを識別するためにタグ配列を更新するように適合されうる。いくつかの例では、プロセッサは、開始セクタを識別するためにタグ配列を更新するように適合されうる。
図1は、本明細書に提示されている少なくともいくつかの実施形態により構成された記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示している。例示的なシステム100は、キャッシュ112およびメモリ154と通信するように構成されたプロセッサ102を備えることができる。キャッシュ112は、タグ配列106とデータ配列104とを備えることができる。いくつかの例では、データ配列104は、DRAM(ダイナミックランダムアクセスメモリ)を使用して実装することが可能であり、タグ配列106は、SRAM(スタティックランダムアクセスメモリ)またはDRAMを使用して実装することが可能である。
タグ配列106は、複数のウェイまたは列108および複数のセットまたは行110に配置された複数のタグ構造116を備えるように構成されうる。いくつかの例では、データ配列104は、同じ数のセット110および異なる数のウェイ114に配置された複数のキャッシュライン118を備えるように構成されうる。たとえば、図示されているように、タグ配列106およびデータ配列104は、両方ともN個のセットを含むものとしてよい。図示されている例では、タグ配列106は8個のウェイを含み、データ配列104は4個のウェイを含む。
以下でさらに詳しく説明されるように、タグ構造116は、セクタ120、122がデータ配列104内に格納されているデータを含む場所をマッピングするか、またはインデックス付けするように(マッピング矢印124によって例示されているように)構成されうる。セクタ120、122は、メモリ154内の異なるデータブロックからのデータのコピーを含むことができる。プロセッサ102は、データ配列104のキャッシュライン118内にデータを格納し、タグ配列106内にタグ構造116を格納するように適合されうる。いくつかの例では、異なるデータブロックからのデータが単一のキャッシュライン内に格納される場合、タグ構造116は、セット、ウェイ(列)、およびデータがデータ配列104内に格納される開始セクタの位置を示すように適合されうる。同様に、プロセッサ102は、アドレスを生成し、それらのアドレスをタグ配列106内のタグ構造116と比較することによってデータ配列104内に格納されているデータに対する要求を生成するように構成されうる。他の利点もあるが特に、同じキャッシュライン内に複数の異なるブロックからのデータのコピーを格納し、インデックス付けすることによって、効率的なキャッシュ格納を実現することができる。
図2は、本明細書に提示されている少なくともいくつかの実施形態により構成された記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示している。図2は、システム100のものと実質的に類似しており、詳細を追加している。図1のコンポーネントと全く同じくラベル付けされている図2のコンポーネントについては、わかりやすくするため、再度説明することはしない。
図2に示されているように、プロセッサ102は、キャッシュ112内に格納されうるデータの位置を識別するアドレス126を生成するように構成されうる。アドレス126は、タグ128、セットインデックス130、セクタインデックス132、およびセクタオフセット134などのフィールドを含むものとしてよい。タグ配列内のそれぞれのタグ構造116は、タグ136、状態138、セクタビットベクタ140、ウェイ142、開始セクタ144、および/または長さ145などのフィールドを含むように構成されうる。これらのフィールドの用途のいくつかについて以下で説明する。データ配列104内のそれぞれのキャッシュライン118は、146、148、150、および152に示されているようにM個のセクタを含むように構成されうる。いくつかの例では、64個のセクタが、キャッシュライン118内で使用されうる。
プロセッサ102が特定のブロックの特定のセクタ内の特定のデータを要求する例では、プロセッサ102は、特定のデータに対するアドレス126を生成するように構成されうる。アドレス126のセットインデックス130は、タグフィールド128内で識別されたタグに対するタグ配列106内のプロセッサ102が読み出すことができるセットまたは行を示すものとしてよい。図示されている例では、セットS2は、アドレス126で識別される。その例では、セットが識別された後、プロセッサ102は、タグフィールド128で識別されたタグに対するセットS2内のウェイ(列)におけるタグを比較するように構成されうる。セットS2内のウェイのうちの1つにおいてタグフィールド128内のデータとタグフィールド136内のデータとの間に一致がない場合、プロセッサ102は、ブロックミスがあると判定するように構成されうる。次いで、要求されたデータのセクタ内のデータをメモリ154から取り出して、置換ポリシーによって定められた位置のキャッシュ112内に格納することができる。たとえば、最も古いタイムスタンプを持つデータ、定義された期間内にアクセスされていないデータ、または最も長い間使用されていないデータは、要求されたデータのコピーで上書きされうる。
プロセッサ102がタグフィールド128内のデータとタグフィールド136のうちの1つの中のデータとの間の一致を判定する例では、プロセッサ102は、状態フィールド138内のデータを読み出すように構成されうる。状態フィールド138内のデータは、キャッシュコヒーレンスプロトコルに照らしてデータの状態が有効であるかどうかを示すことができる。状態が有効でない場合、プロセッサ102は、キャッシュミスが発生したと判定するように構成されうる。状態が有効である場合、プロセッサ102は、セクタインデックスフィールド132内のデータをセクタビットベクタフィールド140内のデータと比較し、特定のセクタ内のデータのコピーがデータ配列104内に格納されているかどうかを判定するように構成されうる。たとえば、セクタビットベクタ140内のビットは、特定のセクタ内のデータのコピーがデータ配列104内に格納されているかどうかを示しうる。セクタビットベクタ140内のデータが特定のセクタ内のデータのコピーがデータ配列104内に格納されていないことを示している場合、プロセッサ102は、セクタミスがあると判定するように構成されうる。セクタミスに応答して、プロセッサ102は、メモリ154から特定のセクタ内のデータを取り出し、それを置換ポリシー(本明細書で説明されている)に基づきキャッシュ112内にコピーするように構成されうる。
特定のセクタ内のデータのコピーが、キャッシュ112内に存在すると判定される例では、プロセッサ102は、ウェイフィールド142内のデータを読み出すように構成されうる。ウェイフィールド142は、特定のセクタ内のデータのコピーが格納されるデータ配列104内のウェイまたは列を示しうる。複数のタグラインを持つ複数の異なるブロックのセクタ内のデータは、タグ配列1006内でデータ配列104内の同じウェイ114およびキャッシュライン118にマッピングされうる。プロセッサ102は、開始セクタフィールド144のデータを読み出して、特定のセクタ内のデータのコピーが格納されているキャッシュライン118内の開始セクタを決定するように構成される。プロセッサ102は、長さフィールド145内のデータを読み出して特定のデータが占有および/または予約することができるセクタの数を決定するように構成されうる。たとえば、この特定のデータは、データ配列104内の2つのセクタを占有することができ、全部で4つのセクタを関係するデータのために予約することができる。占有され、予約されているセクタは、長さフィールド145で識別されうる。この例では、プロセッサ102が同じブロックの2つの新しいセクタにアクセスする場合、それら2つの新しいセクタ内のデータは、異なるブロックのデータを退去させることなく長さフィールド145内に定義されている既存の予約を使用して格納されうる。開始セクタフィールド144から開始セクタが決定された後、プロセッサ102は、アドレス126のセクタオフセットフィールド134内に1バイト/ワードを配置するように構成されうる。
メモリ154からのデータは、キャッシュ112内に効率よく格納することができる。プロセッサ102がブロックもしくはセクタミス(上述の)を判定する例では、またはキャッシュ112に、最初に、データが書き込まれる場合、データはプロセッサ102によってメモリ154からデータ配列114にコピーされるものとしてよい。データのブロック全体がデータ配列114に必ずしもコピーされる必要はないが、それは、要求された特定のセクタそれ自体がコピーされうるからである。複数の異なるブロックからのデータを含むセクタ群が単一のキャッシュライン内に収まりうる例では、データを入れたそれらのセクタ群を同じキャッシュライン内に格納することができる。たとえば、特定のセクタがプロセッサ102によってアクセスされる場合、そのセクタおよび次の連続する1つまたは複数のセクタをコピーすることが可能である。別の例では、プロセッサ102は、セクタプリフェッチャを使用するように構成されうる。セクタプリフェッチャは、セクタ内のデータに対する連続するアクセスを検出し、特定のセクタおよび次の少数のセクタをプリフェッチするように構成されうる。次の少数のセクタは、連続的であってもよいし、ストライドで隔てられていてもよい。履歴データに基づく、いくつかの例では、プリフェッチャは、長さフィールド145を使用してデータ配列104内に予約すべきセクタの数を決定するように構成することもできる。別の例では、プロセッサ102は、このブロックについて過去にアクセスされたセクタの数などのブロック内のデータの過去の使用を監視するように構成されうる。プロセッサ102は、この情報に基づき、ブロックに対するセクタを、過去にアクセスされたのと同じ数だけ予約するように構成されうる。
いくつかの例では、予測アルゴリズムに基づき、特定のセクタに加えて、データを含むセクタ群を予約するか、またはメモリ154からキャッシュ112にコピーすることができる。これらの例では、プロセッサ102は、メモリ154からコピーされたセクタおよびブロック内のデータの履歴情報を保持するように構成されうる。たとえば、これまでのことから、データを含むいくつかのセクタは、典型的には、メモリ154からキャッシュ112にまとめてコピーされうるか(連続するセクタなど)、またはデータを含む1つのセクタのコピーを行うことが、関係するセクタもコピーすべきであることを示唆しうる。この履歴情報があると、これらの関係するセクタのうちの1つに対するセクタミスは、関係するセクタをデータとともにコピーするようにプロセッサ102を構成すべきであることを示しうる。たとえば、プロセッサ102は、キャッシュ112が格納できる内容以上のブロックの使用を追跡することができる予測構造を使用するように構成されうる。一例では、予測構造は、ブロックアドレスでインデックス付けされたテーブル、およびブロックがキャッシュから退去させられるときにブロックのセクタビットベクタ140内に「1」の数を記録するのに有効なカウンタを備えることができる。プロセッサ102が、ブロックミスがあると判定した場合、プロセッサ102はテーブルをチェックするように構成されうる。カウンタは、ブロックのために予約するセクタの数を決定するためにプロセッサ102によって使用されうる。
一例では、メモリ154は、プロセッサ102による要求があったときにキャッシュ112のデータ配列114内にコピーされうるブロック156および162内のデータを含みうる。この例では、ブロック156はタグ「456」を有し、4つのセクタ158(X1、X2、X3、およびX4)を備える。この例では、データは、セクタX1およびX3内に格納される(データビットベクタ160のビット1010によって示されるように)。この例では、ブロック162はタグ「789」を有し、4つのセクタ162(Y1、Y2、Y3、およびY4)を備える。この例では、データは、セクタY3およびY4内に格納される(データビットベクタ166のビット0011によって示されるように)。ブロック156および162のすべてのセクタをコピーし格納すると、全部で8個のセクタと複数のキャッシュライン118が割り当てられ、データ配列114内で使用される。これは、セクタX2、X4、Y1、およびY2内に現在データが格納されていなくても当てはまる。
プロセッサ102は、データが現在格納されているセクタ158、164からのデータをメモリ154からデータ配列114内にコピーするように適合されうる。この例では、ブロック156のセクタX1およびX3内のデータは、データライン118aにコピーされる。データライン118aは、4つのキャッシュラインセクタ番号164(00、01、10、11と番号が振られる)を持つ4つのセクタを備える。ブロック158の2つのセクタ(X1およびX3)のみからのデータがメモリ154からデータ配列114にコピーされると、データライン118aに、他の2つのセクタ内のデータのための余地が作られる。ブロック162内のセクタY3およびY4内のデータも、データライン118aにコピーすることができる。いくつかの例では、プロセッサ102は、ブロックに対して必要になる可能性の高い連続するセクタをプリセットされた数だけ予約するように構成されうる。たとえば、キャッシュライン118内に64個のセクタがあり、タグ配列106にデータ配列104のライン数の2倍のラインを保持することができる場合、プロセッサ102は、デフォルトでそれぞれの新しいブロックについて32個のセクタを予約することができる。別の例では、上で説明されているように、ブロックの過去の使用度を記録する予測テーブルを使用することができる。この例では、プロセッサ102は、過去にそのブロックに対して使用した数のセクタを、予約することができるセクタの最小数に切り上げて予約するように構成されうる。たとえば、最小数は、16または32の倍数とすることが可能である。
この例では、プロセッサ102は、ブロック156および162のコピーを反映するためにタグ配列108を更新するように構成されうる。この例に示されているように、第1のタグ構造116aは、ブロック156にインデックスを付けるために使用することができる。この例では、プロセッサ102は、タグフィールド136にタグ「456」を格納し、状態フィールド138に有効状態(たとえば、「1」)を格納するように構成されうる。この例では、プロセッサ102は、ブロック156のどのセクタにデータ配列104内に格納されているデータが収められているかを示すビットベクタ「1010」を含めるためにセクタビットベクタ140内のデータを更新するように構成されうる。
この例では、ブロック156は、データ配列104のウェイw2にマッピングされる。複数の異なるブロックからのセクタ群のデータを同じキャッシュラインおよびウェイにマッピングできるので、タグ構造116aも開始セクタフィールド144を備える。この例では、タグ「456」を持つブロック156は、値00を持つキャッシュラインセクタ番号164から始まり、したがって、プロセッサ102は、開始セクタフィールド144内に「00」を格納するように構成されうる。ブロック156の2つのセクタ内にデータがあり、したがって、プロセッサ102は、長さフィールド145内に「10」を格納するように構成されうる。
同様に、この例では、第2のタグ構造116bは、ブロック162にインデックスを付けるために使用することができる。タグ構造116bは、タグ構造116aとして異なるタグエントリ内に格納されうる。プロセッサ102は、タグフィールド136にタグ「789」を格納し、状態フィールド138に有効状態(たとえば、「1」)を格納するように構成されうる。この例では、プロセッサ102は、ブロック162のどのセクタにデータ配列104内に格納されているデータが収められているかを示すビットベクタ「0011」を含めるためにセクタビットベクタ140内のデータを更新するように構成されうる。
この例では、ブロック162は、ウェイw2にマッピングされる。複数の異なるブロックからのセクタ群のデータを同じキャッシュラインおよびウェイにマッピングできるので、タグ構造116bも開始セクタフィールド144を備える。この例では、タグ「789」を持つブロック162は、値10を持つキャッシュラインセクタ番号164から始まり、したがって、プロセッサ102は、開始セクタフィールド144内に「10」を格納するように構成されうる。ブロック162の2つのセクタ内にデータがあり、したがって、プロセッサ102は、長さフィールド145内に「10」を格納するように構成されうる。
この例では、データがブロック156のセクタX2内に格納されていた場合、ブロック156および162は、同じキャッシュライン118aに収まりきらないことがある。このような例では、別のキャッシュラインを使用して、ブロック156、162を格納することができる。たとえば、プロセッサ102は、タグ配列106を読み出し、ヴィクティムブロック(victim block)内でブロック156、162からのデータを格納する所望の数のセクタを含むデータを探すように構成されうる。ヴィクティムブロックからのデータは、キャッシュ112から退去させられるようにプロセッサ102によって選択されうる。ヴィクティムブロックからデータを退去させた後、プロセッサ102は、ブロック156および/または162からのデータをコピーし、ヴィクティムブロックからのデータによって解放されたデータ配列104内の空間を占有するように構成されうる。別の例では、プロセッサ102は、タグ配列106を読み出して、ブロック156、162内のデータに連続する同じキャッシュライン内に格納された別のブロックからのデータがあるかどうかを調べるように構成されうる。そのようなデータは、退去させることができ、プロセッサ102は、ブロック156、162の記憶域を連続するセクタに拡張するように構成されうる。他の例では、プロセッサ102によって使用される置換ポリシーに基づき、キャッシュライン118a内に格納されている古くなったデータを退去させて、新しいデータの記憶域を確保することができる。プロセッサ102は、単一のキャッシュライン118内に格納されうる異なるデータブロックの個数を制限するように構成されうる。たとえば、タグ配列106を簡約するために、プロセッサ102は、単一のキャッシュライン内に格納されうる異なるブロックの個数(たとえば、2または4ブロック)を制限するように構成されうる。このような例では、開始セクタフィールド144内のデータは、キャッシュライン内の許可されたブロックの個数に基づき許可された開始セクタのうちの1つを識別する少数のビットで符号化されうる。開始セクタフィールド144内のデータは、特定のブロックが1/4のキャッシュライン、1/2のキャッシュライン、またはキャッシュライン全体を使用するかどうかを示すことができる。
他の可能な利点のうち特に、システム100では、キャッシュ112が、単一のキャッシュライン内に複数の異なるブロックからのデータを格納することができる。データの単一ブロックの格納は、必ずしも、データ配列104内のキャッシュライン全体の割り当てを必要とするわけではない。セクタ内にデータがあるかどうかに関係なくブロック内のすべてのセクタに対して空間の割り当てを行う代わりに、中にデータが格納されているセクタに対してデータ配列内の空間の割り当てを行うことができる。いくつかの例において、システム100では、タグ構造116とキャッシュライン118との間で1対1マッピングを行わずに、タグ構造116とキャッシュライン118との間の多対1またはn対1のマッピングを行うことができる。たとえば、タグ配列108内のウェイw2およびウェイw5におけるタグ構造は、両方とも、ウェイフィールド142内のデータに基づきデータ配列104のウェイw2内のキャッシュライン118にマッピングすることができる。タグ配列108では、データ配列104で使用されるのよりも多くのウェイ/列を使用することができるが、それは、データの複数の異なるブロックがデータ配列104内の同じキャッシュラインを共有することができるからである。いくつかの例では、中にデータが格納されているセクタをコピーすることによって、キャッシュ内の記憶域断片化は、比較的大きなキャッシュサイズを有するキャッシュ内であっても制限されうる。いくつかの例では、システム100は、データ配列104内のキャッシュラインを部分的に埋まることを回避する。上記の結果、他の利点もあるが特に、以下で説明されるように、より高い性能、より優れたエネルギー効率が得られる。
その結果、記憶域断片化の制限の少なくとも一部において、キャッシュはより多くのデータブロックを保持することができる。実効キャッシュ容量を増やすと、別のメモリから取り出さずにキャッシュ内により多くのブロックを見つけられるため、キャッシュミス率を低減することができる。チップの帯域幅エンベロープをキャッシュに当てることなくより多くのコアを実装できるようにして、データトラヒックを低減することができる。複数のブロックからのデータは単一のキャッシュラインを共有することができるので、キャッシュラインに対して、より頻繁にアクセスすることができる。DRAMキャッシュラインは、リフレッシュされないとその電荷を失うおそれがある。キャッシュラインに複数回アクセスすることは、使用するDRAMのリフレッシュ回数を減らせることを意味するものとしてよい。
システム100を使用して効率を高める例として、4KBラインおよび8ウェイアソシエイティブ方式を用いる32MBのセクタ化されたキャッシュでは、8,192個のキャッシュラインが、128KB(タグに64KB、セクタビットベクタに64KB)のタグ配列とともに使用されうる。それぞれの4KBラインが半分書き込まれた場合、実効キャッシュ容量は16MBにすぎない。タグ構造116は、キャッシュラインが配置されている場所を示すウェイフィールド(いくつかの例では、3ビットとすることができる)を含む。タグ構造116は、開始セクタを示す開始セクタフィールド(いくつかの例では、1ビットとすることができる)を含みうる。タグ構造116は、ブロックが占有することを許可されうるセクタの最大数を示す長さフィールド(いくつかの例では、1ビットとすることができる)を含みうる。この例において、タグ構造116内のエクストラフィールドは、タグ配列において合計5個のエクストラビットを有し、合計で5KBのエクストラタグ記憶域(4%増加)と32MBの実効キャッシュ容量(100%増加)を備える。
図3は、本明細書に提示されている少なくともいくつかの実施形態によって構成された記憶効率の高いセクタ化されたキャッシュを実装するための例示的なプロセスの流れ図を示している。いくつかの例では、図3のプロセスは、上述のシステム100を使用して実装することが可能である。例示的なプロセスは、ブロック200、202、204、206、208、210、212、214、および/または216のうちの1つまたは複数によって例示されているような1つまたは複数のオペレーション、アクション、または機能を備えることができる。離散ブロックとして例示されているが、所望の実装に応じて、さまざまなブロックをいくつかの付加的なブロックに分割するか、またはより少ないブロックに組み合わせるか、またはなくすことができる。処理はブロック200から始まるものとしてよい。
ブロック200で、プロセッサは、キャッシュに、特定のブロック内の特定のセクタ内のデータを要求するように構成されうる。処理は、ブロック200からブロック202に進むことができる。
ブロック202で、プロセッサは、特定のブロックに対するデータのコピーがキャッシュ内に格納されているかどうかを判定するように構成されうる。いくつかの例では、これは、タグ配列内のタグおよび/または状態フィールドを分析することによって実行されうる。ブロックがキャッシュ内に存在していない場合(「いいえ」)、プロセッサは、キャッシュミスが発生したと判定するように構成され、処理は、ブロック202からブロック210に進むことができる。
ブロック202で、ブロックがキャッシュ内に存在しているとプロセッサが判定した場合(「はい」)、処理は、ブロック202からブロック204に進むことができる。ブロック204で、プロセッサは、特定のセクタ内のデータのコピーがキャッシュ内に格納されているかどうかを判定するように構成されうる。いくつかの例では、これは、セクタビットベクタを分析することによって実行されうる。特定のセクタに対するデータがキャッシュ内に格納されていない場合(「いいえ」)、プロセッサは、セクタキャッシュミスが発生したと判定するように構成され、処理は、ブロック204からブロック210に進むことができる。
ブロック204で、特定のセクタ内のデータのコピーがキャッシュ内に存在しているとプロセッサが判定した場合(「はい」)、処理は、ブロック204からブロック206に進むことができる。ブロック206で、プロセッサは、特定のセクタ内のデータのコピーがキャッシュのデータ配列内に格納されている場所のウェイおよび開始セクタを決定するように構成されうる。いくつかの例では、これは、ウェイおよび開始セクタフィールド内のデータを分析することによって実行されうる。処理は、ブロック206からブロック208に進むことができる。ブロック208で、プロセッサは、セクタビットベクタを参照することによって適切なセクタにおいてデータ配列のウェイおよび開始セクタ内に格納されている特定のセクタのデータのコピーを取り出すように構成されうる。
ブロック210で、ブロック202におけるブロックミスの後、またはブロック204におけるセクタミスの後に、プロセッサは、特定のセクタ内に格納されているデータを別のメモリからキャッシュのデータ配列のキャッシュライン内にコピーするように構成されうる。特定のセクタ内に格納されているデータは、他の異なるブロックからのデータを含むキャッシュライン内にコピーされうる。処理は、ブロック210からブロック212に進むことができる。
ブロック212で、プロセッサは、データ配列内に格納されているデータを含む特定のセクタを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、セクタビットベクタフィールドを更新することによって実行することが可能である。処理は、ブロック212からブロック214に進むことができる。
ブロック214で、プロセッサは、データを含む特定のセクタがデータ配列内において格納されているウェイを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、ウェイフィールドを更新することによって実行することが可能である。処理は、ブロック214からブロック216に進むことができる。
ブロック216で、プロセッサは、データを含む特定のセクタがデータ配列内において格納されているキャッシュライン内の開始セクタを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、開始セクタフィールドを更新することによって実行することが可能である。
図4は、本明細書で提示されている少なくともいくつかの実施形態により構成された例示的なコンピュータプログラム製品300を示している。プログラム製品300は、信号伝送媒体302を含むことができる。信号伝送媒体302は、たとえば、プロセッサによって実行されたときに、図1〜3に関して上で説明されている機能をもたらすことができる1つまたは複数の命令304を含むことができる。そこで、たとえば、システム100を参照すると、プロセッサ102は、媒体302によってシステム100に伝達される命令304に対する応答として図4に示されているブロックのうちの1つまたは複数を実行することができる。
いくつかの実装では、信号伝送媒体302は、限定はしないが、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、メモリなどのコンピュータ可読媒体306を包含しうる。いくつかの実装では、信号伝送媒体302は、限定はしないが、メモリ、読み書き(R/W)CD、R/W DVDなどの記録可能媒体308を包含しうる。いくつかの実装では、信号伝送媒体302は、限定はしないが、デジタルおよび/またはアナログ通信媒体(たとえば、光ファイバーケーブル、導波管、有線通信リンク、ワイヤレス通信リンクなど)などの通信媒体310を包含しうる。そのため、たとえば、プログラム製品300は、RF信号伝送媒体302によってシステム100の1つまたは複数のモジュールに伝達されうるものとしてよく、信号伝送媒体302は、ワイヤレス通信媒体310(たとえば、IEEE802.11標準に適合するワイヤレス通信媒体)によって伝達される。
図5は、本明細書に提示されている少なくともいくつかの実施形態による記憶効率の高いセクタ化されたキャッシュを実装するように構成されている例示的なコンピューティングデバイス400を示すブロック図である。非常に基本的な構成402において、コンピューティングデバイス400は、典型的には、1つまたは複数のプロセッサ404およびシステムメモリ406を備える。メモリバス408は、プロセッサ404とシステムメモリ406との間の通信に使用されうる。
所望の構成に応じて、プロセッサ404は、限定はしないが、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタルシグナルプロセッサ(DSP)、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。プロセッサ404は、一次キャッシュ410および二次キャッシュ412などの1つまたは複数のキャッシングレベルのキャッシュ、プロセッサコア414、およびレジスタ416を備えることができる。例示的なプロセッサコア414は、算術論理演算ユニット(ALU)、浮動小数点演算ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはこれらの任意の組み合わせを含むことができる。例示的なメモリコントローラ418は、プロセッサ404と併用することもできるか、またはいくつかの実装では、メモリコントローラ418は、プロセッサ404の内部パーツとすることもできる。
所望の構成に応じて、システムメモリ406は、限定はしないが、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリなど)、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。システムメモリ406には、オペレーティングシステム420、1つまたは複数のアプリケーション422、およびプログラムデータ424を格納することができる。アプリケーション422は、図2のシステム100に関して説明されているものを含む本明細書で説明されているような機能を実行するように構成された記憶効率の高いセクタ化されたキャッシュアルゴリズム426を含むものとしてよい。プログラムデータ424は、本明細書で説明されているような記憶効率の高いセクタ化されたキャッシュアルゴリズムに使用することができる記憶効率の高いセクタ化されたキャッシュデータ428を含みうる。いくつかの実施形態では、アプリケーション422は、オペレーティングシステム420上でプログラムデータ424を操作し、記憶効率の高いセクタ化されたキャッシュアルゴリズムが実現されるように構成されうる。この説明されている基本的な構成402は、図5において、内側破線内のコンポーネントによって例示されている。
コンピューティングデバイス400は、付加的な特徴または機能を有し、また基本的な構成402と必要なデバイスおよびインターフェースとの間の通信が容易に行えるようにするための付加的なインターフェースを備えることができる。たとえば、バス/インターフェースコントローラ430は、記憶装置用のインターフェースバス434を介して基本的な構成402と1つまたは複数のデータ記憶装置デバイス432との間の通信が容易に行えるようにするために使用できる。データ記憶装置デバイス432は、取り外し可能な記憶装置デバイス436、取り外し不可能な記憶装置デバイス438、またはこれらの組み合わせとすることができる。取り外し可能な記憶装置デバイスおよび取り外し不可能な記憶装置デバイスの例を2、3挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、およびテープドライブなどがそうである。例示的なコンピュータ記憶媒体としては、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納するための方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能な媒体を挙げることができる。
システムメモリ406、取り外し可能記憶装置デバイス436、および取り外し不可能な記憶装置デバイス438は、すべてコンピュータ記憶媒体の実施例である。コンピュータ記憶媒体としては、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、しかもコンピューティングデバイス400によってアクセスできるその他の媒体が挙げられる。このような任意のコンピュータ記憶媒体は、コンピュータデバイス400の一部であるものとしてよい。
コンピューティングデバイス400は、バス/インターフェースコントローラ430を介してさまざまなインターフェースデバイス(たとえば、出力デバイス442、周辺機器インターフェース444、および通信デバイス446)から基本構成402への通信を容易に行えるようにするためのインターフェースバス440を備えることもできる。例示的な出力デバイス442は、グラフィックス処理ユニット448およびオーディオ処理ユニット450を備え、これらは、1つまたは複数のA/Vポート452を介してディスプレイまたはスピーカーなどのさまざまな外部デバイスと通信するように構成されうる。例示的な周辺機器インターフェース444は、シリアルインターフェースコントローラ454またはパラレルインターフェースコントローラ456を備え、これらは、1つまたは複数のI/Oポート458を介して入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)または他の周辺機器デバイス(たとえば、プリンタ、スキャナなど)などの外部デバイスと通信するように構成されうる。例示的な通信デバイス446は、ネットワークコントローラ460を備え、これは、1つまたは複数の通信ポート464を介してネットワーク通信リンク上で1つまたは複数の他のコンピューティングデバイス462との通信を容易に行えるように構成されうる。
ネットワーク通信リンクは、通信媒体の一例であるものとしてよい。通信媒体は、典型的には、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくは他のトランスポートメカニズムなどの変調データ信号による他のデータによって具現化されうるものであり、任意の情報配信媒体を含むことができる。「変調データ信号」は、信号内の情報を符号化する方法によりその特性のうち1つまたは複数が設定または変更された信号であるものとすることができる。たとえば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、高周波(RF)、マイクロ波、赤外線(IR)、およびその他のワイヤレス媒体などのワイヤレス媒体が挙げられる。本明細書で使用されているコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むことができる。
コンピューティングデバイス400は、携帯電話、パーソナルデータアシスタント(PDA)、パーソナルメディアプレーヤーデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記機能のいずれかを含むハイブリッドデバイスなどのスモールフォームファクタポータブル(またはモバイル)電子デバイスの一部として実装できる。コンピューティングデバイス400は、ラップトップコンピュータおよび非ラップトップコンピュータの両方の構成を含むパーソナルコンピュータとして実装することもできる。
本開示は、さまざまな態様を例示するものとして意図されている、本出願において説明されている特定の実施形態に関して限定されない。多くの修正ならびに変更は、当業者には明らかなように、本明細書の精神および範囲から逸脱することなく行うことができる。本開示の範囲内で機能的に同等の方法および装置は、本明細書に列挙されているものに加えて、当業者には前記の説明から明らかであろう。このような修正形態および変更形態は、付属の請求項の範囲内にあることが意図されている。本開示は、付属の請求項の対象である等価物の全範囲とともに、付属の請求項に関してのみ限定されるものとする。本開示は、もちろん変化しうる、特定の方法、試薬、化合物、組成物、または生体系に限定されない。また、本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としており、限定的であることを意図されていないことは理解されるであろう。
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
それに加えて、本開示の特徴または態様がマーカッシュグループに関して説明されている場合、本開示は、これにより、マーカッシュグループの個別のメンバーまたはメンバーのサブグループに関しても説明されることは当業者であれば理解するであろう。
当業者であれば理解するように、書面による明細書を提示することに関してなど、あらゆる目的について、本明細書で開示されているすべての範囲は、あらゆる可能な部分範囲およびそれらの部分範囲の組み合わせを包含する。リストされている範囲は、同じ範囲を少なくとも2等分、3等分、4等分、5等分、10等分などに分割することを十分に記述し、またそのように分割することを可能にする範囲であると容易に理解できる。非限定的な例として、本明細書で説明されているそれぞれの範囲は、下3分の1、中3分の1、および上3分の1などに容易に分割できる。当業者であれば理解するように、「最大〜まで」、「少なくとも」、「より大きい」、「より小さい」、および同様の語句などのすべての言い回しは、参照されている数を含み、上で説明したようにその後いくつかの部分範囲に分割することができる範囲を指す。最後に、当業者であれば理解するように、範囲はそれぞれの個別のメンバーを含む。したがって、たとえば、1〜3個のセルを持つ1つのグループは、1、2、または3個のセルを持ついくつかのグループを指す。同様に、1〜5個のセルを持つ1つのグループは、1、2、3、4、または5個のセルを持ついくつかのグループを指す。
本明細書ではさまざまな態様および実施形態が開示されているが、他の態様および実施形態も当業者には明らかであろう。本明細書で開示されているさまざまな態様および実施形態は、例示することを目的としており、制限することを意図しておらず、真の範囲および精神は以下の請求項によって示される。

Claims (20)

  1. メモリから特定のブロックの特定のセクタ内の特定のデータをキャッシュ内にコピーするための方法であって、
    前記特定のブロックは少なくとも2つのセクタを含み、前記キャッシュはタグ配列およびデータ配列を含み、
    前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするものであって、複数のウェイおよび複数のセットに配置された複数のタグ構造を含み、
    前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを含み、
    前記方法は、
    前記メモリから前記特定のブロックの前記特定のセクタ内の前記特定のデータを、前記開始セクタから始まる前記データ配列のウェイ内にプロセッサによってコピーすることと、
    前記データ配列に格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
    前記データ配列内の前記ウェイに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
    前記データ配列内の前記ウェイ内の前記開始セクタに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することとを含む方法。
  2. 前記コピーを行う前に、前記特定のブロック内のデータのコピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することをさらに含む請求項1に記載の方法。
  3. 前記特定のブロック内の前記データの前記コピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することは、前記特定のデータに対する要求のタグフィールドを前記タグ配列内のタグフィールドと比較することを含む請求項2に記載の方法。
  4. 前記コピーを行う前に、前記特定のセクタ内の前記特定のデータのコピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することをさらに含む請求項3に記載の方法。
  5. 前記特定のセクタ内の前記特定のデータの前記コピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することは、前記要求のセクタインデックスフィールドを前記タグ配列内のセクタビットベクタフィールドと比較することを含む請求項4に記載の方法。
  6. 前記タグ配列内の前記セクタビットベクタフィールドは、前記データ配列内に格納されている前記特定のブロックのセクタのコピーを示す請求項5に記載の方法。
  7. 前記特定のブロックは、第1の特定のブロックであり、前記特定のデータは、第1の特定のデータであり、前記第1の特定のデータは、前記第1の特定のブロック内の前記メモリに格納され、
    前記特定のセクタは、第1の特定のセクタであり、
    前記ウェイは、第1のウェイであり、
    前記開始セクタは、第1の開始セクタであり、前記方法は、
    前記メモリから第2の特定のセクタ内のデータを、第2の開始セクタから始まる前記データ配列の第2のウェイ内に前記プロセッサによってコピーし、前記第2の特定のセクタは、第2の特定のブロック内の前記メモリに格納され、前記第2の特定のブロックは、前記第1の特定のブロックと異なることと、
    前記データ配列に格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
    前記データ配列内の前記第2のウェイに格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
    前記データ配列内の前記第2のウェイ内の前記第2の開始セクタに格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することとを含む請求項1に記載の方法。
  8. 前記第1のウェイと第2のウェイとは異なる請求項7に記載の方法。
  9. コピーすることは、前記特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記特定のブロックの前記特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含む請求項1に記載の方法。
  10. 前記プロセッサによって前記第1の特定のセクタ内のデータをコピーすることは、前記第1の特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記第1の特定のブロックの前記第1の特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記第1の特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含み、
    前記プロセッサによって前記第2の特定のセクタ内のデータをコピーすることは、前記第2の特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記第2の特定のブロックの前記第2の特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記第2の特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含む請求項7に記載の方法。
  11. コピーすることは、前記特定のセクタおよび関係するセクタ内のデータをコピーすることを含む請求項1に記載の方法。
  12. 前記データ配列内の前記特定のデータに予約されているセクタの数を示すために前記タグ配列を前記プロセッサによって更新することをさらに含む請求項1に記載の方法。
  13. 置換ポリシーに基づき前記プロセッサによって前記ウェイおよび開始セクタを選択することをさらに含む請求項1に記載の方法。
  14. 特定のブロックの特定のセクタ内にある特定のデータをコピーするシステムであって、前記特定のブロックは少なくとも2つのセクタを含み、
    メモリと、
    タグ配列とデータ配列とを備えるキャッシュであって、前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするものであって、複数のウェイまたは列および複数のセットまたは行に配置された複数のタグ構造を備え、前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを含む、キャッシュと、
    前記キャッシュおよび前記メモリと通信するように構成されたプロセッサとを備え、
    前記プロセッサは、
    前記メモリから前記特定のブロックの前記特定のセクタ内の前記特定のデータを、開始セクタから始まる前記データ配列のウェイ内にコピーし、
    前記データ配列に格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新し、
    前記データ配列内の前記ウェイに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新し、
    前記データ配列内の前記ウェイ内の前記開始セクタに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新するシステム。
  15. 前記特定のデータは、第1の特定のデータであり、前記第1の特定のデータは、第1の特定のブロック内の前記メモリに格納され、
    前記特定のセクタは、第1の特定のセクタであり、
    前記ウェイは、第1のウェイであり、
    前記開始セクタは、第1の開始セクタであり、前記プロセッサは、
    前記メモリから第2の特定のセクタ内のデータを、第2の開始セクタから始まる前記データ配列の第2のウェイ内にコピーし、前記第2の特定のデータは、第2の特定のブロック内の前記メモリに格納され、前記第2の特定のブロックは、前記第1の特定のブロックと異なり、
    前記データ配列に格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を更新し、
    前記データ配列内の前記第2のウェイに格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を更新し、
    前記データ配列内の前記第2のウェイ内の前記第2の開始セクタに格納されている前記第2の特定のブロックの前記第2の特定のセクタを識別するために前記タグ配列を更新するのにさらに有効である請求項14に記載のシステム。
  16. 前記第1のウェイと第2のウェイとは異なる請求項15に記載のシステム。
  17. 前記プロセッサは、前記第1の特定のブロックを分析することによって前記第1の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されている場合に前記第1の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されていない場合に前記第1の特定のブロックの別のセクタに対する前記データ配列内で空間を割り当てず
    前記プロセッサは、前記第2の特定のブロックを分析することによって前記第2の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されている場合に前記第2の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されていない場合に前記第2の特定のブロックの別のセクタに対する前記データ配列内で空間を割り当てない請求項15に記載のシステム。
  18. 前記データ配列は、DRAMを使用して実装され、前記タグ配列は、SRAMまたはDRAMを使用して実装される請求項14に記載のシステム。
  19. アドレスに基づきキャッシュ内に格納されている特定のブロックからの特定のセクタ内の特定のデータのコピーを取り出すための方法であって、前記アドレスは、タグフィールド、セットインデックスフィールド、セクタインデックスフィールドを含み、前記キャッシュはタグ配列およびデータ配列を含み、前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするのに有効であり、前記方法は、
    前記セットインデックスフィールド内で識別されているセット内の、前記タグフィールド内の第1のタグデータを、前記タグ配列内の別のタグフィールド内の第2のタグデータと、プロセッサによって比較して、一致するタグを生成し、前記一致するタグはタグ構造内にあり、前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを備えることと、
    前記タグ構造の前記セクタビットベクタフィールド内のセクタビットベクタデータを、前記アドレスの前記セクタインデックスフィールド内のデータと、前記プロセッサによって比較し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが前記キャッシュ内に格納されていると判定することと、
    前記ウェイフィールド内のデータを前記プロセッサによって分析し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが格納されている前記データ配列内のウェイを決定することと、
    前記開始セクタフィールド内のデータを前記プロセッサによって分析し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが格納されている前記データ配列内の開始セクタを決定することと、
    前記データ配列の前記ウェイ、セット、および開始セクタ内の、前記特定のブロックからの前記特定のセクタの前記特定のデータの前記コピーを前記プロセッサによって取り出すこととを含む方法。
  20. 前記アドレスは、セクタオフセットフィールドをさらに含み、前記方法は、前記セクタオフセットフィールド内のデータを使用して前記特定のセクタの前記特定のデータの前記コピーを取り出すことをさらに含む請求項19に記載の方法。
JP2013504876A 2010-04-21 2010-04-21 記憶効率の高いセクタ化されたキャッシュ Expired - Fee Related JP5597306B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/031878 WO2011133146A2 (en) 2010-04-21 2010-04-21 Storage efficient sectored cache

Publications (2)

Publication Number Publication Date
JP2013524379A JP2013524379A (ja) 2013-06-17
JP5597306B2 true JP5597306B2 (ja) 2014-10-01

Family

ID=44834713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013504876A Expired - Fee Related JP5597306B2 (ja) 2010-04-21 2010-04-21 記憶効率の高いセクタ化されたキャッシュ

Country Status (5)

Country Link
US (1) US8874849B2 (ja)
JP (1) JP5597306B2 (ja)
KR (1) KR101414035B1 (ja)
CN (1) CN102859504B (ja)
WO (1) WO2011133146A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150009883A (ko) * 2013-07-17 2015-01-27 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
KR102317248B1 (ko) * 2014-03-17 2021-10-26 한국전자통신연구원 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
US10013352B2 (en) * 2014-09-26 2018-07-03 Intel Corporation Partner-aware virtual microsectoring for sectored cache architectures
US20170091099A1 (en) * 2015-09-25 2017-03-30 Zvika Greenfield Memory controller for multi-level system memory having sectored cache
GR20170100067A (el) * 2017-02-16 2018-10-31 Arm Limited Προβλεψη χρησης τομεων κρυφης μνημης
CN107704527B (zh) * 2017-09-18 2020-05-08 华为技术有限公司 数据存储方法、装置及存储介质
CN109165172B (zh) * 2018-08-23 2021-10-29 郑州云海信息技术有限公司 缓存数据处理方法及相关设备
WO2020190841A1 (en) 2019-03-18 2020-09-24 Rambus Inc. System application of dram component with cache mode

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
JPH02171944A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd バッファ記憶装置
US5202969A (en) 1988-11-01 1993-04-13 Hitachi, Ltd. Single-chip-cache-buffer for selectively writing write-back and exclusively writing data-block portions to main-memory based upon indication of bits and bit-strings respectively
JPH05149675A (ja) * 1991-11-27 1993-06-15 Matsushita Refrig Co Ltd 冷蔵庫
JPH05314008A (ja) * 1992-05-13 1993-11-26 Toshiba Corp 情報処理装置
JPH06149675A (ja) * 1992-11-11 1994-05-31 Kofu Nippon Denki Kk キャッシュメモリ装置
US6678790B1 (en) * 1997-06-09 2004-01-13 Hewlett-Packard Development Company, L.P. Microprocessor chip having a memory that is reconfigurable to function as on-chip main memory or an on-chip cache
US6643743B1 (en) * 2000-03-31 2003-11-04 Intel Corporation Stream-down prefetching cache
US6766431B1 (en) 2000-06-16 2004-07-20 Freescale Semiconductor, Inc. Data processing system and method for a sector cache
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
WO2009037912A1 (ja) * 2007-09-20 2009-03-26 Nec Corporation キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP5217432B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
US7526610B1 (en) * 2008-03-20 2009-04-28 International Business Machines Corporation Sectored cache memory
JP5413001B2 (ja) * 2009-07-09 2014-02-12 富士通株式会社 キャッシュメモリ

Also Published As

Publication number Publication date
CN102859504A (zh) 2013-01-02
KR101414035B1 (ko) 2014-07-01
WO2011133146A3 (en) 2012-01-26
CN102859504B (zh) 2015-11-25
US8874849B2 (en) 2014-10-28
US20120317361A1 (en) 2012-12-13
JP2013524379A (ja) 2013-06-17
KR20130018412A (ko) 2013-02-21
WO2011133146A2 (en) 2011-10-27

Similar Documents

Publication Publication Date Title
JP5597306B2 (ja) 記憶効率の高いセクタ化されたキャッシュ
US9785558B2 (en) Mixed cache management
JP5752989B2 (ja) プロセッサ・メインメモリのための持続性メモリ
US8868843B2 (en) Hardware filter for tracking block presence in large caches
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US10061704B2 (en) Systems and methods for managing cache of a data storage device
JP2018521385A (ja) 共有システムキャッシュの仮想化制御のための方法および装置
US20110161597A1 (en) Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
US9317448B2 (en) Methods and apparatus related to data processors and caches incorporated in data processors
TWI600015B (zh) 用於相變記憶體與開關(pcms)之元資料管理及支援技術
US20180032429A1 (en) Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators
US20160048451A1 (en) Energy-efficient dynamic dram cache sizing
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
US11188467B2 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US10331385B2 (en) Cooperative write-back cache flushing for storage devices
KR20150094205A (ko) 플래시 기반 저장 장치의 스왑 관리 방법
JP2019525327A (ja) キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
JP2021506028A (ja) 共通のメモリページからメモリへのキャッシュラインのリンス
KR102317248B1 (ko) 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
TW202244735A (zh) Dram感知快取記憶體
KR101591583B1 (ko) 캐싱 장치 및 방법
US20160283386A1 (en) Sequential access of cache data

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140401

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140808

R150 Certificate of patent or registration of utility model

Ref document number: 5597306

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees