JP2010073029A - 命令キャッシュシステム - Google Patents

命令キャッシュシステム Download PDF

Info

Publication number
JP2010073029A
JP2010073029A JP2008241194A JP2008241194A JP2010073029A JP 2010073029 A JP2010073029 A JP 2010073029A JP 2008241194 A JP2008241194 A JP 2008241194A JP 2008241194 A JP2008241194 A JP 2008241194A JP 2010073029 A JP2010073029 A JP 2010073029A
Authority
JP
Japan
Prior art keywords
cache data
cache
instruction
instruction cache
index
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
JP2008241194A
Other languages
English (en)
Other versions
JP4653830B2 (ja
Inventor
Soichiro Hosoda
宗一郎 細田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008241194A priority Critical patent/JP4653830B2/ja
Priority to US12/435,023 priority patent/US8086802B2/en
Publication of JP2010073029A publication Critical patent/JP2010073029A/ja
Application granted granted Critical
Publication of JP4653830B2 publication Critical patent/JP4653830B2/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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供する。
【解決手段】キャッシュデータをインデックス毎に記憶する命令キャッシュデータRAM1と、命令キャッシュデータRAM1にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部4と、を備え、命令キャッシュ制御部4は、管理している圧縮率に基づきn個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき余剰の領域に新たなキャッシュデータを圧縮して書き込む。
【選択図】 図1

Description

この発明は、セットアソシアティブ方式を採用する命令キャッシュシステムに関する。
従来、プロセッサ内に命令キャッシュを置く命令キャッシュシステムには、命令キャッシュのヒット率を向上させるために、複数のウェイを用いるセットアソシアティブ(Set Associative)方式が多く採用されている。従来のセットアソシアティブ方式を採用する命令キャッシュシステムにおいては、一旦プロセッサに実装された後にウェイを増強することが困難であるという問題があった。例えば特許文献1には、動作時にウェイの数を一時的に増加させることを可能にする技術も開示されているが、予め補助的なキャッシュをわざわざ配備しなければならず、実装面積やコストなどの点できわめて不利なものであった。
また、従来の命令キャッシュシステムにおいて命令コードをプリフェッチする場合は、何れかのキャッシュラインを命令キャッシュ上から排除するか、プリフェッチ用に別のバッファメモリを命令キャッシュ近傍に配備する必要があるという問題があった。
特開平6−231044号公報
本発明は、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することを目的とする。
本願発明の一態様によれば、命令コードをキャッシュデータとしてキャッシュするnウェイセットアソシアティブ方式を採用する命令キャッシュシステムにおいて、キャッシュデータをインデックス毎に記憶する命令キャッシュデータ記憶部と、前記命令キャッシュデータ記憶部にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部と、を備え、前記命令キャッシュ制御部は、前記管理している圧縮率に基づきn個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき前記余剰の領域に新たなキャッシュデータを圧縮して書き込む、ことを特徴とする命令キャッシュシステムが提供される。
本発明によれば、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる命令キャッシュシステムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
第1の実施の形態の命令キャッシュシステムは本来的に4つのウェイが設定されているセットアソシアティブ方式を採用するとして説明するが、本発明が属する分野の技術者によって、以下の説明要綱に基づき、4つ以外の複数のウェイを有するセットアソシアティブ方式を採用する命令キャッシュシステムに適用することが可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
図1は、本発明の第1の実施の形態にかかる命令キャッシュシステムの構成を示すブロック図である。図1において、第1の実施の形態の命令キャッシュシステムは、キャッシュライン単位の命令コードを圧縮した状態で記憶する命令キャッシュデータRAM(Random Access Memory)1と、命令キャッシュデータRAM1に記憶される夫々のキャッシュラインのタグ情報を、夫々のキャッシュラインの圧縮率を示す圧縮率ビットとともに記憶する命令キャッシュタグRAM2と、命令キャッシュシステム全体を制御する命令キャッシュ制御部4と、命令キャッシュ制御部4から受信したアドレスのタグ情報と命令キャッシュタグRAM2から読み出されたタグ情報とを比較し、比較結果を命令キャッシュ制御部4へ出力するタグ比較器3と、プロセッサからの要求に基づき命令キャッシュ制御部4にフェッチ要求を送信して命令コードを取得する命令フェッチユニット5と、を備える。
命令キャッシュ制御部4は、キャッシュライン単位の命令コードの圧縮によって命令キャッシュデータRAM1に生じる動的に利用が可能な領域(Dynamic Available Region;DAR)を管理するための情報ビットである、命令キャッシュタグRAM2に記憶される圧縮率ビットなどを管理するDAR制御部41と、外部バスを介して主記憶装置(図示せず)などから取得したキャッシュライン単位の命令コードを圧縮して命令キャッシュデータRAM1に書き込む圧縮リフィルユニット42と、命令キャッシュデータRAM1から取得した圧縮された命令コードを復元して命令フェッチユニット5に送信する解凍ユニット43と、DARの制御のための設定情報を格納するフィルモードレジスタ(Fill Mode Register;FMR)44および投機的モードレジスタ(Speculative Mode Register;SMR)45と、を備える。
命令キャッシュデータRAM1の構成の一例を説明する。図2は、命令キャッシュデータRAM1の構成の一例を説明する図である。図2の構成例においては、命令キャッシュデータRAM1は、インデックス毎に複数の圧縮されたキャッシュライン単位の命令コードを記憶できるように構成されている(以降、命令キャッシュデータRAM1に書き込まれるキャッシュライン単位の命令コードを単にキャッシュデータという)。インデックスとは、アドレスの下位ビット部分の値に対応し、例えば下位の6ビットをインデックスとして使用する場合、インデックスは0〜63までの値をとることとなる。図2においてはIndex 0〜Index xと表示している。命令キャッシュデータRAM1の各インデックスに属する記憶領域は、第1の実施の形態に本来的に採用されている4ウェイセットアソシアティブ方式に対応して、圧縮前のキャッシュライン長(以降、固定キャッシュライン長という)4つ分の記憶容量を有している。命令キャッシュデータRAM1に記憶されているキャッシュデータは夫々圧縮リフィルユニット42によって圧縮されて書き込まれているので、各インデックスに属する記憶領域は、4ウェイ分、つまりウェイ0〜ウェイ3のキャッシュデータを記憶してもなお余剰の領域を有することとなる。この余剰の領域がDARである。DARは、新規のウェイすなわちウェイ4のキャッシュデータまたはプリフェッチしたキャッシュデータを記憶する領域として使用される。
図2の構成例においては、Index 1の記憶領域に、夫々固定キャッシュライン長の3/4、3/4、7/8、5/8のサイズに圧縮されたウェイ0、ウェイ1、ウェイ2、ウェイ3のキャッシュデータが記憶され、1固定キャッシュライン長の記憶容量を有するDARが存在している。
次に、命令キャッシュタグRAM2の構成について説明する。図3は、命令キャッシュタグRAM2の構成の一例を説明する図である。各インデックスは、次にリフィルするウェイを指示するリプレイス(Replace)ビットR、タグ情報フィールドに記憶するデータがタグ情報として有効であるか否かを示すバリッド(Valid)ビットV、キャッシュデータの圧縮率を示す圧縮率(Compression Ratio)ビットCR、DARが記憶するデータがプリフェッチされたキャッシュデータであるか否かを示すプリフェッチ(Prefetch)ビットP、およびタグ情報(Tag Info)を記憶するタグ情報フィールドを有する。各インデックスに対してリプレイスビットRが設定され、各ウェイに対してバリッドビットV、圧縮率ビットCR、およびタグ情報フィールドが設定され、DARに対してバリッドビットV、圧縮率ビットCR、プリフェッチビットP、およびタグ情報フィールドが設定されている。
圧縮率ビットCRは、固定キャッシュライン長に対する圧縮後のキャッシュデータのサイズの比を表すビットであり、圧縮率の分解能に応じたビット数により構成される。ここでは圧縮率の分解能を1/8としており、圧縮率ビットCRは、3ビット構成とする。例えば、キャッシュデータが固定キャッシュライン長の5/8に圧縮されている場合、「100」と表す。なお、圧縮率ビットCRは、固定キャッシュライン長に対する圧縮後のキャッシュデータのサイズの比を表すことができればどのような形態をとるように構成してもよく、圧縮率の分解能、圧縮率ビットCRの構成、および圧縮率を表す形式は上記述べた例に限定しない。
プリフェッチビットPは、例えば1ビット構成であって、DARに記憶されたキャッシュデータが新規のウェイ、すなわちウェイ4のデータである場合、「0」と表し、プリフェッチされた次インデックスに属するキャッシュデータである場合、「1」と表す。
バリッドビットVは、例えば、1ビット構成であって、記憶するデータがタグ情報として無効である場合を「0」、タグ情報として有効である場合を「1」とする。
リプレイスビットRは、ウェイ数に応じたビット構成をとる。ここでは、4ウェイセットアソシアティブ方式を採用し、さらにDARに一つの新規ウェイが追加される場合があるので、DARに記憶されるウェイを含む合計5つのウェイのうちの何れか一つを追い出すキャッシュデータとして示すために、例えば3ビット構成をとる。例えば、次にリフィルするのがウェイ0である場合、「000」と表し、ウェイ3である場合、「011」と表し、DARにウェイ4のキャッシュデータが記憶されており、ウェイ4を次にリフィルする場合、「100」と表す。
リフィルのポリシとしては、最後に使用されてから最も長く時間が経っているキャッシュデータを追い出すLRU(Least Recently Used)や、リフィルされた時期が最も古いキャッシュデータを追い出すLRR(Least RecentlyReplaced)などが公知であり、これらを使用するようにしてもよいが、ここでは、効率よくDARの記憶容量を増加させるために、圧縮率ビットCRの値に基づき、圧縮率が最も低い、つまり圧縮後のサイズが最も大きいキャッシュデータを追い出すポリシであるLCR(Least Compression Ratio)に従うこととする。
図4は、図2に示した命令キャッシュデータRAM1の例に対応する命令キャッシュタグRAM2の状態を説明する図である。図4においては、わかりやすくするために、リプレイスビットRおよび圧縮率ビットCRの値を10進法で表示している。命令キャッシュデータRAM1にはウェイ0からウェイ3にキャッシュデータが記憶されているので、図示するように、インデックス1の行において、ウェイ0からウェイ3のバリッドビットVは1となっている。また、夫々のキャッシュデータの圧縮率に対応し、ウェイ0〜ウェイ3の圧縮率ビットCRは夫々3/4、3/4、7/8、5/8を示している。LCRによると、最も圧縮率が低いウェイ2が最も先に追い出されるので、インデックス1のリプレイスビットRは2を示している。
次に、以上のように構成される本発明にかかる第1の実施の形態の動作について説明する。第1の実施の形態は、プリフェッチを行うように設定されているか否かに基づき、夫々異なった動作を行う。まず、プリフェッチを行わない設定となっている場合の動作(以降、第1の動作という)について説明する。プリフェッチを行うか否かの設定は、FMR44に格納されている設定情報に記述されており、命令キャッシュ制御部4は、FMR44を参照することにより、第1の動作を行うか後述する第2の動作を行うかを決定する。
図5は、第1の実施の形態の命令キャッシュシステムによる第1の動作を説明するフローチャートである。図5において、プロセッサから命令コードのアドレスを要求されると、該アドレスのタグ情報と命令キャッシュタグRAM2に記憶されるタグ情報とを比較するタグ情報比較処理が実行される(ステップS1)。すなわち、要求されたアドレスは命令フェッチユニット5を経て命令キャッシュ制御部4へ供給される。命令キャッシュタグRAM2は、命令キャッシュ制御部4からのアドレスのインデックスにより指定されたタグ情報を読み出す。タグ比較器3は、読み出されたタグ情報と要求されたアドレスのタグ情報とを比較し、比較結果を命令キャッシュ制御部4へ出力する。ここで、命令キャッシュタグRAM2およびタグ比較器3は、要求されたアドレスのインデックスに指定されるタグ情報の比較結果とともに、該インデックスの各ウェイの各情報ビットの値も命令キャッシュ制御部4に出力する。
続いて、命令キャッシュ制御部4は、比較結果において、命令キャッシュタグRAM2から読み出された何れかのタグ情報と要求されたアドレスのタグ情報とが一致(ヒット)した場合(ステップS2、Yes)、命令コードを出力する処理に移行する(ステップS4)。すなわち、命令キャッシュデータRAM1は、要求されたアドレスのインデックスにより指定される複数の圧縮されたキャッシュデータのうち前記ヒットしたタグ情報のウェイに対応するキャッシュデータを命令キャッシュデータRAM1から読み出して命令キャッシュ制御部4に送信する。解凍ユニット43は該送信されてきた圧縮されているキャッシュデータを解凍して命令フェッチユニット5へ出力する。
命令キャッシュ制御部4は、ステップS1において得られた比較結果において、命令キャッシュタグRAM2から読み出された何れのタグ情報も要求されたアドレスのタグ情報と一致しなかった(キャッシュミスした)場合(ステップS2、No)、命令キャッシュシステムは、要求された命令コードをリフィルする処理を行う(ステップS3)。ここで、命令キャッシュシステムは、DARの記憶領域が所定のしきい値以上である場合、DARをウェイ4のキャッシュデータを記憶する領域として使用する。
すなわち、命令キャッシュ制御部4は、ステップS1において比較結果とともに取得した圧縮率ビットCRの値に基づいてDARの記憶容量を計算する。所定のしきい値とは、DARを新規ウェイとして使用するか否かを判断するための、SMR45に設定情報として格納されている値であり、例えば1固定キャッシュライン長の値や0.9固定キャッシュライン長の値が設定される。命令キャッシュ制御部4は、SMR45の値と、計算して求めたDARの記憶容量と、を比較する。
DARの記憶領域の容量がSMR45の値以上であり、かつDARにキャッシュデータが記憶されていない場合、圧縮リフィルユニット42は、リフィルする命令コードのキャッシュデータを外部バスを介して取得し、該取得したキャッシュデータを圧縮し、DARに記憶させる。DARの記憶領域の容量がSMR45の値以上でありかつDARがすでにウェイ4のキャッシュデータを記憶している場合、またはDARの記憶領域の容量がSMR45の値未満である場合、圧縮リフィルユニット42は、リフィルするキャッシュデータを取得して圧縮し、リプレイスビットRが示すウェイにリフィルする。DAR制御部41は、リフィル処理時において、圧縮リフィルユニット42によって圧縮されたキャッシュデータの圧縮率を取得し、該取得した圧縮率をリフィルされたウェイのCRビットを更新する。
取得されたキャッシュデータは、圧縮されていない状態で解凍ユニット43から命令フェッチユニット5へ出力される。
次に、FMR44により、プリフェッチを行う設定になっている場合の動作(第2の動作)について説明する。第2の動作においては、キャッシュミス発生時に、ミスを発生したキャッシュデータに隣接するアドレスのキャッシュデータを予め取得して(プリフェッチして)DARに格納する。図6は、第2の動作を説明するフローチャートである。
図6において、ステップS11においては、ステップS1における動作と同様に、命令キャッシュタグRAM2に記憶されるタグ情報と、要求されたアドレスのタグ情報と、を比較する処理が行われる。この処理において、命令キャッシュ制御部4は、命令キャッシュ制御部4からのアドレスのインデックスにより指定されたタグ情報と、該インデックスの一つ前のインデックスのDARにプリフェッチされたキャッシュデータが記憶されている場合、該プリフェッチされたキャッシュラインのタグ情報と、を読み出させるように命令キャッシュタグRAM2にアドレスを送信する。プリフェッチされたキャッシュデータが記憶されているか否かは、前インデックスのDARにプリフェッチビットPが「1」となっているタグ情報が記憶されているか否かにより判断される。
命令キャッシュ制御部4は、キャッシュミスした場合(ステップS12、No)、命令キャッシュシステムは、要求された命令コードをリフィルする処理(ステップS13)とプリフェッチ処理とを行う(ステップS14)。
すなわち、DARの記憶領域がSMR45によって設定されている値以上の記憶容量があるとき、命令キャッシュ制御部4は、リフィルする命令コードのキャッシュデータを取得するとともに、該キャッシュデータにアドレスが隣接する、すなわち本来的に次のインデックスに属する命令コードのキャッシュデータをプリフェッチし、圧縮リフィルユニット42は、前者のキャッシュデータを圧縮してリプレイスビットRが示すウェイにリフィルし、後者のプリフェッチしたキャッシュデータを圧縮してDARに書き込む。
また、DARにすでにウェイ4のキャッシュデータが記憶され、かつリプレイスビットRがウェイ4を示している場合、圧縮リフィルユニット42は、LCRのポリシに基づいて圧縮率ビットCRが大きい値を示す、DARに記憶されているキャッシュデータを含む2つのウェイのキャッシュデータを追い出してから、前記する取得した要求されているキャッシュデータをウェイ0〜ウェイ3のうちの追い出したウェイにリフィルし、取得した次のインデックスのキャッシュデータをDARに記憶させる。
また、DARの記憶領域の容量がSMR45の値未満であるとき、命令キャッシュ制御部4は、リフィルする命令コードのキャッシュデータを取得し、リプレイスビットRが示すウェイに圧縮してリフィルする。
DAR制御部41は、リフィルまたはプリフェッチされたキャッシュデータの書き込みが行われたとき、該当するキャッシュデータの圧縮率ビットCRを更新する。DAR制御部41は、プリフェッチされたキャッシュラインの書き込みが行われたとき、書き込まれたDARのプリフェッチビットPを「1」とする。
リフィルされたキャッシュデータは、圧縮されていない状態で解凍ユニット43から命令フェッチユニット5へ出力される。
命令キャッシュ制御部4は、ステップS11の比較結果において、ヒットした場合(ステップS12、Yes)、命令キャッシュデータRAM1は、前記ヒットしたタグ情報のウェイに対応するキャッシュデータを命令キャッシュデータRAM1から読み出して命令キャッシュ制御部4に送信し、解凍ユニット43は該送信されてきた圧縮されているキャッシュデータを解凍して命令フェッチユニット5へ出力する(ステップS15)。
続いて、命令キャッシュ制御部4は、ヒットしたキャッシュデータがプリフェッチされたキャッシュデータであったか否かを判定する(ステップS16)。ヒットしたキャッシュラインがプリフェッチされたキャッシュデータであった場合(ステップS16、Yes)、命令キャッシュ制御部4は、ヒットしたキャッシュデータを現在該キャッシュデータが記憶されているインデックスのDARから、次のインデックスのDARに移動させる(ステップS17)。ここで、移動先のDARの記憶領域に、ヒットしたキャッシュデータを記憶させる十分な容量がない場合、命令キャッシュ制御部4は、リプレイスビットRが示すウェイのキャッシュデータを追い出し、前記ヒットしたキャッシュデータを記憶させる領域を生成し、該生成した領域に前記ヒットしたキャッシュデータを移動させる。
以上述べたように、第1の実施の形態によれば、命令キャッシュ制御部4がキャッシュデータを圧縮して命令キャッシュデータRAM1に書き込むように構成したので、生じた余剰の領域であるDARを使用することができるようになるので、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することができる。また、第1の実施の形態によれば、プリフェッチを行わない設定になっている場合、DARに同じインデックスに属するキャッシュデータをさらに記憶させることにより、本来的に設定されたウェイの数を越えるウェイを使用することができるようになる。すなわちウェイを増強することができる。また、プリフェッチを行う設定になっている場合、DARにプリフェッチした次のインデックスに属するキャッシュデータをさらに記憶させることができるので、プリフェッチ専用の補助キャッシュを配備する必要をなくプリフェッチ機能を使用することができるようになる。
ところで、以上の説明において、圧縮リフィルユニット42による圧縮の手法については特に言及しなかったが、命令コードのキャッシュデータのサイズを減少させることができる手法であればどのような手法を用いるようにしてもよい。例えば、NOP命令など比較的簡単な命令コードまたは命令コードの一部を特定ビットのフラグに変換する圧縮手法を用いても良い。
また、ステップS14において、キャッシュミス発生時におけるリフィルするキャッシュデータにアドレスが隣接するキャッシュデータをプリフェッチするとしたが、プリフェッチ先のアドレスはこれに限定しない。また、命令キャッシュ制御部4は、プリフェッチする前に、プリフェッチ先のアドレスのキャッシュデータが次のインデックスに記憶されているか否かを判定し、記憶されている場合はプリフェッチしないようにしてもよい。また、プリフェッチするキャッシュデータが次のインデックスに記憶されている場合、命令キャッシュ制御部4は、リフィルするキャッシュデータをDARに記憶させるようにしてもよい。
(第2の実施の形態)
次に、本発明の第2の実施の形態の命令キャッシュシステムについて説明する。一般的に、命令キャッシュデータRAM1は、一つのインデックスに属する記憶領域が複数のメモリバンクのRAMにわたって記憶されるように構成される。このような命令キャッシュデータRAM1が読み出し対象のキャッシュデータを読み出す際、命令キャッシュ制御部4が全てのバンクに電力を供給して活性化させると、読み出し対象のキャッシュデータを含まないバンクをも活性化させることとなり、電力の無駄を生じる。第2の実施の形態によれば、命令キャッシュデータRAM1がキャッシュデータを読み出す際、命令キャッシュ制御部4は、圧縮率ビットCRの値に基づいて読み出し対象のキャッシュデータを記憶しているメモリバンクを特定し、該特定したメモリバンクのみ活性化させる。
例えば、図7に示すように、命令キャッシュデータRAM1は、一つのインデックスに属する記憶領域が1/2固定キャッシュライン長のデータを記憶できるバンク0A、バンク0B、バンク1A、バンク1B、バンク2A、バンク2B、バンク3A、およびバンク3Bから構成され、各インデックスのキャッシュデータはウェイ0のキャッシュデータから順に前のキャッシュデータとの間に空白の領域をあけることなくバンク0A〜バンク3Bに詰めて記憶されるように構成されているとする。このように構成されている命令キャッシュデータRAM1において、インデックス1には、ウェイ0〜ウェイ4のキャッシュデータが夫々固定キャッシュライン長の3/4、3/4、7/8、5/8、3/4に圧縮されて記憶されているとする。
ステップS2またはステップS12においてインデックス1のウェイ1にヒットしたとする。ステップS4またはステップS15に移行すると、命令キャッシュ制御部4は、圧縮率ビットCRによりインデックス1の各キャッシュデータの圧縮率はウェイ0から順に3/4、3/4、7/8、5/8、3/4であることを認識しているので、読み出しの対象であるウェイ1のキャッシュデータはバンク0Bの1/2のあたりからバンク1Aの全体にわたって記憶されていることを知る。すると、命令キャッシュ制御部4は、バンク0Bおよびバンク1Aのみを活性化させ、命令キャッシュデータRAM1に対象のキャッシュデータを出力させる。
このように、第2の実施の形態によれば、命令キャッシュ制御部4は、要求されたキャッシュデータがヒットした場合、該ヒットしたキャッシュデータが書き込まれているメモリバンクを圧縮率情報に基づいて特定し、該特定したメモリバンクを活性化するように構成したので、要求されたキャッシュデータを記憶しているメモリバンク以外に電力を供給することがないので、命令キャッシュシステムを低消費電力化することができる。
ところで、上記説明においては、メモリバンクの構成は、命令キャッシュデータRAMは、一つのインデックスあたり1/2固定キャッシュライン長のデータを記憶できる8つのバンクから構成されているとしたが、一つのメモリバンクが記憶できるデータ長や命令キャッシュデータRAMを構成するメモリバンクの数はこれに限定しない。
(第3の実施の形態)
次に、本発明の第3の実施の形態について説明する。第1の実施の形態によれば、要求されたアドレスにより指定されるインデックスのDARがSMR45に設定されている値以上の記憶容量を有するとき、該インデックスのDARに新規にキャッシュラインを記憶するようにした。これに対して、第3の実施の形態は、複数のインデックスのDARを結合して一つのDARとして使用する。
具体的には、命令キャッシュ制御部4は、どのインデックスのDARがどのインデックスのDARと結合されているかを示すレジスタであるインデックスセットレジスタ(Index Set Register;ISR)を有する。命令キャッシュ制御部4は、ISRにより仮想的に一つに結合されたDARを、FMR44による設定に基づいて、新規のウェイのキャッシュラインまたはプリフェッチしたキャッシュデータを記憶する領域として使用する。
このように、第3の実施の形態によれば、命令キャッシュ制御部4は、管理している圧縮率に基づき、複数の記憶領域に生じたDARを仮想的に結合し、該結合したDARに新たなキャッシュデータを圧縮して書き込むように構成したので、キャッシュデータの圧縮によって生じるDARを効率的に使用することが可能になる。
第1の実施形態の命令キャッシュシステムの構成を示す図。 命令キャッシュデータRAMの構成例を説明する図。 命令キャッシュタグRAMの構成例を説明する図。 命令キャッシュタグRAMの状態を説明する図。 第1の実施の形態の命令キャッシュシステムの第1の動作を説明するフローチャート。 第1の実施の形態の命令キャッシュシステムの第2の動作を説明するフローチャート。 第2の実施の形態の命令キャッシュシステムの命令キャッシュデータRAMの構成例を説明する図。
符号の説明
1 命令キャッシュデータRAM、2 命令キャッシュタグRAM、3 タグ比較器、4 命令キャッシュ制御部、5 命令フェッチユニット、41 DAR制御部、42 圧縮リフィルユニット、43 解凍ユニット、44 FMR、45 SMR

Claims (5)

  1. 命令コードをキャッシュデータとしてキャッシュするnウェイセットアソシアティブ方式を採用する命令キャッシュシステムにおいて、
    キャッシュデータをインデックス毎に記憶する命令キャッシュデータ記憶部と、
    前記命令キャッシュデータ記憶部にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部と、
    を備え、
    前記命令キャッシュ制御部は、前記管理している圧縮率に基づきn個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき前記余剰の領域に新たなキャッシュデータを圧縮して書き込む、
    ことを特徴とする命令キャッシュシステム。
  2. 前記余剰の領域に書き込まれる新たなキャッシュデータは、同じインデックスに属するキャッシュデータ、または該インデックスの次のインデックスに属するプリフェッチされたキャッシュデータ、である、
    ことを特徴とする請求項1に記載の命令キャッシュシステム。
  3. プロセッサから要求されたキャッシュデータが前記プリフェッチされたキャッシュデータにヒットした場合、前記命令キャッシュ制御部は、該キャッシュデータを記憶している記憶領域のインデックスの次のインデックスの記憶領域の余剰の領域が前記ヒットしたキャッシュデータを書き込み可能な記憶容量を有しているか否かを前記管理している圧縮率に基づいて判断し、前記次のインデックスの余剰の領域が前記ヒットしたキャッシュデータを書き込み可能な記憶容量を有しているとき、前記次のインデックスの余剰の領域へ前記キャッシュデータを移動させ、前記次のインデックスの余剰の領域が前記キャッシュデータを書き込み可能な記憶容量を有していないとき、前記次のインデックスの記憶領域が記憶しているキャッシュデータを削除して前記ヒットしたキャッシュデータを書き込み可能な領域を生成し、該生成した領域に前記ヒットしたキャッシュデータを移動する、
    ことを特徴とする請求項2に記載の命令キャッシュシステム。
  4. 前記命令キャッシュデータ記憶部の記憶領域は、複数のメモリバンクに分割されており、
    前記命令キャッシュ制御部は、要求されたキャッシュデータがヒットした場合、該ヒットしたキャッシュデータが書き込まれているメモリバンクを前記圧縮率情報に基づいて特定し、該特定したメモリバンクを活性化する、
    ことを特徴とする請求項1〜3の何れか一つに記載の命令キャッシュシステム。
  5. 前記命令キャッシュ制御部は、前記管理している圧縮率に基づき、複数の記憶領域に生じた余剰の領域を仮想的に結合し、該結合した領域に新たなキャッシュデータを圧縮して書き込む、
    ことを特徴とする請求項1に記載の命令キャッシュシステム。
JP2008241194A 2008-09-19 2008-09-19 命令キャッシュシステム Expired - Fee Related JP4653830B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008241194A JP4653830B2 (ja) 2008-09-19 2008-09-19 命令キャッシュシステム
US12/435,023 US8086802B2 (en) 2008-09-19 2009-05-04 Instruction cache system, instruction-cache-system control method, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008241194A JP4653830B2 (ja) 2008-09-19 2008-09-19 命令キャッシュシステム

Publications (2)

Publication Number Publication Date
JP2010073029A true JP2010073029A (ja) 2010-04-02
JP4653830B2 JP4653830B2 (ja) 2011-03-16

Family

ID=42038777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008241194A Expired - Fee Related JP4653830B2 (ja) 2008-09-19 2008-09-19 命令キャッシュシステム

Country Status (2)

Country Link
US (1) US8086802B2 (ja)
JP (1) JP4653830B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014068694A1 (ja) * 2012-10-31 2014-05-08 ルネサスエレクトロニクス株式会社 半導体装置及びキャッシュメモリへのデータ先読み方法
JP2017117145A (ja) * 2015-12-24 2017-06-29 ルネサスエレクトロニクス株式会社 半導体装置、データ処理システム及び半導体装置の制御方法
CN108804042A (zh) * 2018-06-16 2018-11-13 王梅 一种基于缓存内移出的数据组进行动态处理的方法及系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092361A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Caching technologies employing data compression
US9652384B2 (en) 2014-12-16 2017-05-16 Intel Corporation Apparatus, system and method for caching compressed data
CN107046606B (zh) * 2016-02-06 2019-03-12 株式会社理光 图像发送装置、图像实时显示系统以及图像实时显示方法
US11223528B2 (en) * 2017-01-27 2022-01-11 Box. Inc. Management of cloud-based shared content using predictive cost modeling
US10496335B2 (en) * 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US11567872B1 (en) * 2021-07-08 2023-01-31 Advanced Micro Devices, Inc. Compression aware prefetch

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573413A (ja) * 1991-09-12 1993-03-26 Mitsubishi Electric Corp キヤツシユメモリ・データ制御装置
JP2004185627A (ja) * 2002-12-05 2004-07-02 Nec Corp コード圧縮技術の高速プロトタイピングを可能にするプログラムのコード圧縮方法、及びコード圧縮システム
JP2006236239A (ja) * 2005-02-28 2006-09-07 Toshiba Corp データ処理システム及びデータ伸長方法
JP2007507806A (ja) * 2003-09-30 2007-03-29 インテル コーポレイション コンピューターシステム、キャッシュ制御部、方法
JP2007517331A (ja) * 2003-12-29 2007-06-28 インテル コーポレイション コンピューターシステム、方法、装置
JP2007272336A (ja) * 2006-03-30 2007-10-18 Toshiba Corp 命令処理装置及び命令処理方法
JP2008171312A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465342A (en) 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6640283B2 (en) * 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US7512750B2 (en) * 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US7243191B2 (en) * 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573413A (ja) * 1991-09-12 1993-03-26 Mitsubishi Electric Corp キヤツシユメモリ・データ制御装置
JP2004185627A (ja) * 2002-12-05 2004-07-02 Nec Corp コード圧縮技術の高速プロトタイピングを可能にするプログラムのコード圧縮方法、及びコード圧縮システム
JP2007507806A (ja) * 2003-09-30 2007-03-29 インテル コーポレイション コンピューターシステム、キャッシュ制御部、方法
JP2007517331A (ja) * 2003-12-29 2007-06-28 インテル コーポレイション コンピューターシステム、方法、装置
JP2006236239A (ja) * 2005-02-28 2006-09-07 Toshiba Corp データ処理システム及びデータ伸長方法
JP2007272336A (ja) * 2006-03-30 2007-10-18 Toshiba Corp 命令処理装置及び命令処理方法
JP2008171312A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014068694A1 (ja) * 2012-10-31 2014-05-08 ルネサスエレクトロニクス株式会社 半導体装置及びキャッシュメモリへのデータ先読み方法
JP5901787B2 (ja) * 2012-10-31 2016-04-13 ルネサスエレクトロニクス株式会社 半導体装置及びキャッシュメモリへのデータ先読み方法
US9892049B2 (en) 2012-10-31 2018-02-13 Renesas Electronics Corporation Semiconductor device and method for prefetching to cache memory
JP2017117145A (ja) * 2015-12-24 2017-06-29 ルネサスエレクトロニクス株式会社 半導体装置、データ処理システム及び半導体装置の制御方法
US10229063B2 (en) 2015-12-24 2019-03-12 Renesas Electronics Corporation Semiconductor device, data processing system, and semiconductor device control method
CN108804042A (zh) * 2018-06-16 2018-11-13 王梅 一种基于缓存内移出的数据组进行动态处理的方法及系统
CN108804042B (zh) * 2018-06-16 2021-06-15 浙江力石科技股份有限公司 一种基于缓存内移出的数据组进行动态处理的方法及系统

Also Published As

Publication number Publication date
US20100077146A1 (en) 2010-03-25
JP4653830B2 (ja) 2011-03-16
US8086802B2 (en) 2011-12-27

Similar Documents

Publication Publication Date Title
JP4653830B2 (ja) 命令キャッシュシステム
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
US10067881B2 (en) Compression and caching for logical-to-physical storage address mapping tables
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US7162584B2 (en) Mechanism to include hints within compressed data
KR100577384B1 (ko) 페이지 정보를 이용한 페이지 대체 방법
US8799585B2 (en) Cache memory capable of adjusting burst length of write-back data in write-back operation
JP2005528695A (ja) キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置
US9430394B2 (en) Storage system having data storage lines with different data storage line sizes
JP2017516234A (ja) 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
JPS61156346A (ja) 記憶階層の先取り装置
JP2005528694A (ja) スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置
JP2017519286A (ja) 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
WO2011049051A1 (ja) キャッシュメモリおよびその制御方法
CN100538664C (zh) 存储带压缩的重排序数据的系统、方法和装置
JP2010097557A (ja) セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法
US7219197B2 (en) Cache memory, processor and cache control method
JP2006236239A (ja) データ処理システム及びデータ伸長方法
US20180004669A1 (en) Cache device and method for storing tag data and cache data in cache device
US7103722B2 (en) Cache configuration for compressed memory systems
US20050071566A1 (en) Mechanism to increase data compression in a cache
US9348598B2 (en) Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
JP2008507028A (ja) キャッシュメモリーを管理するシステムと方法
US20210349828A1 (en) Page modification encoding and caching

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100730

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101217

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees