JP2011150684A - キャッシュメモリおよびキャッシュメモリ制御装置 - Google Patents

キャッシュメモリおよびキャッシュメモリ制御装置 Download PDF

Info

Publication number
JP2011150684A
JP2011150684A JP2010212516A JP2010212516A JP2011150684A JP 2011150684 A JP2011150684 A JP 2011150684A JP 2010212516 A JP2010212516 A JP 2010212516A JP 2010212516 A JP2010212516 A JP 2010212516A JP 2011150684 A JP2011150684 A JP 2011150684A
Authority
JP
Japan
Prior art keywords
data
tag
storage unit
address
entry
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.)
Pending
Application number
JP2010212516A
Other languages
English (en)
Inventor
Hiroaki Sakaguchi
浩章 坂口
Taichi Hirao
太一 平尾
Masaaki Ishii
雅明 石井
Hiroshi Yoshikawa
洋 芳川
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2010212516A priority Critical patent/JP2011150684A/ja
Priority to CN201080055593.1A priority patent/CN102667737B/zh
Priority to PCT/JP2010/072475 priority patent/WO2011078014A1/ja
Priority to EP10839247A priority patent/EP2518633A1/en
Priority to US13/515,315 priority patent/US9535841B2/en
Priority to KR1020127015222A priority patent/KR20120106748A/ko
Publication of JP2011150684A publication Critical patent/JP2011150684A/ja
Priority to US15/364,596 priority patent/US10102132B2/en
Pending legal-status Critical Current

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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0806Multiuser, multiprocessor or multiprocessing cache 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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

【課題】共有キャッシュメモリを有するマルチプロセッサにおいてプロセッサ間のデータの受け渡しを効率良く行う。
【解決手段】キャッシュメモリのタグ記憶部220の各エントリにおいて、タグアドレス221、バリッド222、ダーティ223に加えて、参照回数224を記憶する。参照回数224はデータライト時に設定され、リードアクセスの度にデクリメントされる。参照回数224が「1」から「0」になると、そのエントリはライトバックされることなく無効化される。このキャッシュメモリをマルチプロセッサシステムにおけるプロセッサ間通信に利用すると、共有FIFOとして機能し、使用済データは自動的に削除される。
【選択図】図5

Description

本発明は、キャッシュメモリに関し、特に共有FIFO(First-In First-Out)として利用可能なキャッシュメモリに関する。
マルチプロセッサシステムにおいては、処理過程においてプロセッサ間でデータの受け渡しが必要となる場合がある。共有キャッシュメモリを有するマルチプロセッサシステムでは、共有キャッシュメモリを介して共有FIFOとして利用することにより、データの受け渡しを行うことが考えられる。共有キャッシュメモリに関する従来の制御手法としては、M(Modified:変更)、E(Exclusive:排他)、S(Shared:共有)、I(Invalid:無効)の4状態によるMESIプロトコルが知られている。すなわち、各キャッシュラインについて上の4状態の何れであるかを管理することにより、メインメモリへのライトバックの必要性を判断できるようにしている。この種の従来技術として、例えば、MESIプロトコルを用いた複数のコアキャッシュ・クラスタ間の包括的供給キャッシュが提案されている(例えば、特許文献1参照。)。
特開2009−037615号公報(表1)
上述の従来技術では、共有キャッシュメモリを介してプロセッサ間でデータの受け渡しが行われた後、同じエントリを用いて他のデータの受け渡しを行うためには、最初のデータをメインメモリにライトバックするか、無効化する必要がある。前者の場合にはライトバック処理のためにメインメモリに接続するバスを占有するため、他のプロセッサにも影響を与えるおそれがある。また、後者の場合には、明示的に無効化命令を共有キャッシュメモリに発行する必要があり、プロセッサにおける処理サイクル数が増大するという問題がある。
また、上述の従来技術では、共有キャッシュメモリを介してプロセッサ間でデータの受け渡しを行う際、プロセッサ間の同期を別途実行する必要がある。すなわち、ライト側のプロセッサからライトされたデータをリード側プロセッサがリードする際、ライトされた以上のサイズをリードしないようにリード側の追い越しを防止しなければならない。
本発明はこのような状況に鑑みてなされたものであり、共有キャッシュメモリを有するマルチプロセッサにおいてプロセッサ間のデータの受け渡しを効率良く行うことを目的とする。また、本発明は、マルチプロセッサにおいてプロセッサ間のデータの受け渡しを行う際、共有キャッシュメモリにより同期を実現することを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、アクセスアドレスの第1のアドレス部分によってタグアドレスおよび残り参照回数を含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、上記複数のエントリに対応するデータを記憶するデータ記憶部と、上記第1のアドレス部分とは異なる上記アクセスアドレスの第2のアドレス部分と上記索引されたエントリに含まれる上記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して上記一致したエントリに含まれる上記残り参照回数が残り1回である旨を表示している場合には上記リードアクセスの後に当該エントリをライトバックせずに無効化し、上記残り参照回数が残り1回よりも大きい数を表示している場合には上記残り参照回数を1回分減らすタグ制御部と、上記リードアクセスに対して上記一致したエントリに対応するデータを上記データ記憶部から選択するデータ制御部とを具備するキャッシュメモリである。これにより、残り参照回数に相当する回数分リードされた後にそのデータを無効化させるという作用をもたらす。
また、この第1の側面において、上記タグ制御部は、ライトアクセスに対して上記第1のアドレス部分に対応する上記タグ記憶部のエントリの上記残り参照回数が何れもゼロより大きい数を表示している場合には上記タグ記憶部および上記データ記憶部にアクセスせずに上記ライトアクセスに係るデータおよび参照回数を外部のメモリに退避するように制御するようにしてもよい。これにより、キャッシュメモリの容量を超えるサイズのデータを外部のメモリに退避して、その後の受け渡しを継続させるという作用をもたらす。また、この場合において、上記データ記憶部に空き容量が存在する場合に上記退避されたデータおよび参照回数を上記メモリからそれぞれ上記データ記憶部および上記タグ記憶部にプリフェッチするよう制御するプリフェッチ制御部をさらに具備してもよい。これにより、メモリからキャッシュメモリへのデータ転送を促すという作用をもたらす。
また、この第1の側面において、メモリ上の特定の領域を指定する領域指定レジスタをさらに具備し、上記タグ制御部は、上記アクセスアドレスが上記領域に含まれる場合においてライトアクセスに対して上記第1のアドレス部分に対応する上記タグ記憶部のエントリの上記残り参照回数が何れもゼロより大きい数を表示しているときには上記タグ記憶部および上記データ記憶部にアクセスせずに上記ライトアクセスに係るデータを外部のメモリに退避するように制御するようにしてもよい。これにより、キャッシュメモリの容量を超えるサイズのデータを領域指定レジスタにより指定されるメモリ領域に退避して、その後の受け渡しを継続させるという作用をもたらす。また、この場合において、上記データ記憶部に空き容量が存在する場合に上記退避されたデータを上記メモリから上記データ記憶部にプリフェッチするとともに上記タグ記憶部における残り参照回数を1回に設定するよう制御するプリフェッチ制御部をさらに具備してもよい。これにより、メモリからキャッシュメモリへのデータ転送を促すという作用をもたらす。
また、本発明の第2の側面は、アクセスアドレスの第1のアドレス部分によってタグアドレスおよび残り参照回数を含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、上記第1のアドレス部分とは異なる上記アクセスアドレスの第2のアドレス部分と上記索引されたエントリに含まれる上記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して上記一致したエントリに含まれる上記残り参照回数が残り1回である旨を表示している場合には上記リードアクセスの後に当該エントリをライトバックせずに無効化し、上記残り参照回数が残り1回よりも大きい数を表示している場合には上記残り参照回数を1回分減らすタグ制御部とを具備するキャッシュメモリ制御装置である。これにより、残り参照回数に相当する回数分リードされた後にそのデータを無効化させるという作用をもたらす。
また、本発明の第3の側面は、アクセスアドレスの第1のアドレス部分によってタグアドレスおよび寿命付きか否かを示す寿命フラグを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、上記複数のエントリに対応するデータを記憶するとともに上記寿命フラグが寿命付きである旨を示している場合には残り参照回数を記憶するデータ記憶部と、上記第1のアドレス部分とは異なる上記アクセスアドレスの第2のアドレス部分と上記索引されたエントリに含まれる上記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して上記一致したエントリに含まれる上記寿命フラグが寿命付きである旨を示している場合には対応する上記残り参照回数が残り1回である旨を表示しているときには上記リードアクセスの後に当該エントリをライトバックせずに無効化するタグ制御部と、上記リードアクセスに対して上記一致したエントリに対応するデータを上記データ記憶部から選択するとともに、上記一致したエントリに含まれる上記寿命フラグが寿命付きである旨を示している場合には対応する上記残り参照回数が残り1回よりも大きい数を表示しているときには上記残り参照回数を1回分減らすデータ制御部とを具備するキャッシュメモリである。これにより、残り参照回数に相当する回数分リードされた後にそのデータを無効化させるという作用をもたらす。
また、この第3の側面において、上記タグ制御部は、ライトアクセスに対して上記第1のアドレス部分に対応する上記データ記憶部のエントリの上記残り参照回数が何れもゼロより大きい数を表示している場合には上記タグ記憶部および上記データ記憶部にアクセスせずに上記ライトアクセスに係るデータおよび参照回数を外部のメモリに退避するように制御するようにしてもよい。これにより、キャッシュメモリの容量を超えるサイズのデータを外部のメモリに退避して、その後の受け渡しを継続させるという作用をもたらす。また、この場合において、上記データ記憶部に空き容量が存在する場合に上記退避されたデータおよび参照回数を上記メモリから上記データ記憶部にプリフェッチするよう制御するプリフェッチ制御部をさらに具備してもよい。これにより、メモリからキャッシュメモリへのデータ転送を促すという作用をもたらす。
また、この第3の側面において、メモリ上の特定の領域を指定する領域指定レジスタをさらに具備し、上記タグ制御部は、上記アクセスアドレスが上記領域に含まれる場合においてライトアクセスに対して上記第1のアドレス部分に対応する上記データ記憶部のエントリの上記残り参照回数が何れもゼロより大きい数を表示しているときには上記タグ記憶部および上記データ記憶部にアクセスせずに上記ライトアクセスに係るデータを外部のメモリに退避するように制御するようにしてもよい。これにより、キャッシュメモリの容量を超えるサイズのデータを領域指定レジスタにより指定されるメモリ領域に退避して、その後の受け渡しを継続させるという作用をもたらす。また、この場合において、上記データ記憶部に空き容量が存在する場合に上記退避されたデータを上記メモリから上記データ記憶部にプリフェッチするとともに上記データ記憶部における残り参照回数を1回に設定するよう制御するプリフェッチ制御部をさらに具備してもよい。これにより、メモリからキャッシュメモリへのデータ転送を促すという作用をもたらす。
また、本発明の第4の側面は、アクセスアドレスの第1のアドレス部分によってタグアドレスおよびデータ量フィールドを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、上記複数のエントリに対応するデータを記憶するデータ記憶部と、上記第1のアドレス部分とは異なる上記アクセスアドレスの第2のアドレス部分と上記索引されたエントリに含まれる上記タグアドレスとを比較して一致したエントリを検出し、ライトアクセスの場合は上記一致したエントリに含まれる上記データ量フィールドの値に基づいて空き容量が確保されるまで待機して、上記ライトアクセス後は上記データ量フィールドに上記ライトアクセスに係るデータ量を加算し、リードアクセスの場合は上記一致したエントリに含まれる上記データ量フィールドの値に基づいて上記リードアクセスの対象となるデータ量が確保されるまで待機して、上記リードアクセス後は上記データ量フィールドから上記リードアクセスに係るデータ量を減算するタグ制御部と、上記ライトアクセスに対して上記ライトアクセスに係るデータを上記データ記憶部の上記一致したエントリに書き込み、上記リードアクセスに対して上記一致したエントリに対応するデータを上記データ記憶部から選択するデータ制御部とを具備するキャッシュメモリである。これにより、データ量フィールドの値に基づいてライトアクセスの際の空き待ちおよびリードアクセスの際のデータ待ちを調整させるという作用をもたらす。
また、この第4の側面において、上記タグ制御部は、上記ライトアクセス後に所定数のエントリについてライトアクセスが実行された遅延タイミングで上記データ量の加算を行うモードを備えてもよい。これにより、データ量フィールドの更新を遅延させ、データの再書込みを許容させるという作用をもたらす。また、それに拘らず、上記タグ制御部は、上記遅延タイミングによる上記データ量の加算を行うモードにおいて、フラッシュ指示を受けると速やかに上記データ量の加算を行うようにしてもよい。
また、この第4の側面において、上記タグ記憶部は、上記エントリに当該エントリがロックされているか否かを示すロックビットを含み、上記タグ制御部は、上記ライトアクセスの際に上記一致したエントリに含まれる上記ロックビットをロックし、上記リードアクセスの際に上記一致したエントリに含まれる上記ロックビットをアンロックするようにしてもよい。これにより、使用中のエントリが他のアクセスにより追い出されることを防止させるという作用をもたらす。この場合において、上記タグ制御部は、上記ライトアクセス後に所定数のエントリについてライトアクセスが実行された遅延タイミングで上記ロックビットのロックを行うモードを備えてもよい。これにより、ロックビットの更新を遅延させ、データの再読出しを許容させるという作用をもたらす。また、それに拘らず、上記タグ制御部は、上記遅延タイミングによる上記ロックビットのロックを行うモードにおいて、フラッシュ指示を受けると速やかに上記ロックビットのアンロックを行うようにしてもよい。
また、この第4の側面において、上記タグ制御部は、上記ライトアクセスに対して上記第1のアドレス部分に対応する上記タグ記憶部のエントリの上記データ量フィールドが何れもゼロより大きい数を表示している場合または上記ロックビットが何れもロックされている場合には上記タグ記憶部および上記データ記憶部にアクセスせずに上記ライトアクセスに係るデータおよびライトデータ量を外部のメモリに退避するように制御するようにしてもよい。これにより、キャッシュメモリの容量を超えるサイズのデータを外部のメモリに退避して、その後の受け渡しを継続させるという作用をもたらす。
また、本発明の第5の側面は、アクセスアドレスの第1のアドレス部分によってタグアドレスおよびデータ量フィールドを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、上記第1のアドレス部分とは異なる上記アクセスアドレスの第2のアドレス部分と上記索引されたエントリに含まれる上記タグアドレスとを比較して一致したエントリを検出し、ライトアクセスの場合は上記一致したエントリに含まれる上記データ量フィールドの値に基づいて空き容量が確保されるまで待機して、上記ライトアクセス後は上記データ量フィールドに上記ライトアクセスに係るデータ量を加算し、リードアクセスの場合は上記一致したエントリに含まれる上記データ量フィールドの値に基づいて上記リードアクセスの対象となるデータ量が確保されるまで待機して、上記リードアクセス後は上記データ量フィールドから上記リードアクセスに係るデータ量を減算するタグ制御部と
を具備するキャッシュメモリ制御装置である。これにより、データ量フィールドの値に基づいてライトアクセスの際の空き待ちおよびリードアクセスの際のデータ待ちを調整させるという作用をもたらす。
本発明によれば、共有キャッシュメモリを有するマルチプロセッサにおいてプロセッサ間のデータの受け渡しを効率良く行うことができるという優れた効果を奏し得る。また、 本発明によれば、マルチプロセッサにおいてプロセッサ間のデータの受け渡しを行う際、共有キャッシュメモリにより同期を実現することができるという優れた効果を奏し得る。
本発明の実施の形態における情報処理システムの一構成例を示す図である。 本発明の実施の形態における共有キャッシュ200の機能構成例を示す図である。 本発明の実施の形態における共有キャッシュ200の回路構成例を示す図である。 本発明の実施の形態におけるデータ記憶部240とメインメモリ300との対応関係の例を示す図である。 本発明の第1の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。 本発明の第1の実施の形態におけるタグ記憶部220の更新に関する構成例を示す図である。 本発明の第1の実施の形態におけるメインメモリ300とFIFO記憶領域310の関係の第1の例を示す図である。 本発明の第1の実施の形態における共有キャッシュ200のライト時の処理手順を示す図である。 本発明の第1の実施の形態における共有キャッシュ200のリード時の処理手順を示す図である。 本発明の第1の実施の形態におけるプロセッサ間のデータ受け渡しシーケンスの第1の例を示す図である。 本発明の第1の実施の形態におけるプロセッサ間のデータ受け渡しシーケンスの第2の例を示す図である。 本発明の第1の実施の形態による情報処理システムにおいてプリフェッチ機能を設けた構成例を示す図である。 本発明の第1の実施の形態におけるプリフェッチ制御部400の一構成例を示す図である。 本発明の第1の実施の形態におけるプリフェッチ制御部400の状態遷移の一例を示す図である。 本発明の第1の実施の形態におけるメインメモリ300とFIFO記憶領域310の関係の第2の例を示す図である。 本発明の第1の実施の形態においてFIFO記憶領域の指定を行った際の共有キャッシュ200のリード時の処理手順を示す図である。 本発明の第2の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。 本発明の第2の実施の形態におけるデータ記憶部240のフィールド構成例を示す図である。 本発明の第2の実施の形態におけるタグ制御部230のキャッシュラインライト時の処理手順を示す図である。 本発明の第2の実施の形態におけるタグ制御部230のキャッシュラインリード時の処理手順を示す図である。 本発明の第2の実施の形態におけるタグ制御部230のキャッシュライン置換時の処理手順を示す図である。 本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインリード時の処理手順を示す図である。 本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインライトバック時の処理手順を示す図である。 本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインフェッチ時の処理手順を示す図である。 本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインライト時の処理手順を示す図である。 本発明の第2の実施の形態における共有キャッシュ200へのデータライトシーケンスの例を示す図である。 本発明の第2の実施の形態における共有キャッシュ200からのデータリードシーケンスの例を示す図である。 本発明の第3の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。 本発明の第3の実施の形態における共有キャッシュ200のライト時の処理手順を示す図である。 本発明の第3の実施の形態における共有キャッシュ200のリード時の処理手順を示す図である。 本発明の第3の実施の形態における利用可能量227の遅延設定機構の態様を示す図である。 本発明の第3の実施の形態におけるロック226の遅延解除機構の態様を示す図である。 本発明の第3の実施の形態における遅延更新機構を利用したデータ順序入れ換えの一例を示す図である。 本発明の第3の実施の形態における遅延更新機構を利用したデータサイズ圧縮の一例を示す図である。 一般的なコーデックにおけるIDCT係数デコード処理アルゴリズムを示す図である。 一般的なコーデックにおけるIDCT係数のジグザグスキャンの態様を示す図である。 従来手法により最適化されたコーデックのIDCT係数デコード処理アルゴリズムを示す図である。 本発明の第3の実施の形態における遅延更新機構を利用したコーデックのIDCT係数デコード処理アルゴリズムを示す図である。 本発明の実施の形態の応用例としてのデジタルテレビ放送システムの一例を示す図である。 本発明の実施の形態の応用例におけるインターリーバ610の一構成例を示す図である。 本発明の実施の形態の応用例におけるデインターリーバ630の一構成例を示す図である。
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(参照回数フィールドをタグ記憶部に設けた例)
2.第2の実施の形態(参照回数フィールドをデータ記憶部に設けた例)
3.第3の実施の形態(利用可能量フィールドおよびロックフィールドをタグ記憶部に設けた例)
4.応用例(デジタルテレビ放送システムへの適用例)
5.変形例
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本発明の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、p個(pは1以上の整数)のプロセッサ100−1乃至100−p(以下、これらをまとめてプロセッサ100と呼称する場合がある。)と、共有キャッシュ(二次キャッシュ)200と、メインメモリ300とを備える。プロセッサ100−1乃至100−pと共有キャッシュ200との間は、システムバス190により相互に接続されている。
プロセッサ100は、それぞれ内部に一次キャッシュ110−1乃至110−p(以下、これらをまとめて一次キャッシュ110と呼称する場合がある。)を備える。これにより、プロセッサ100は、一次キャッシュ110にヒットしている限りにおいては一次キャッシュ110を用いてデータアクセスを行うが、一次キャッシュ110においてミスヒットとなった場合には共有キャッシュ200にアクセスを行う。また、プロセッサ100は、一次キャッシュ110でミスヒットとなった際、共有キャッシュ200にヒットしている限りにおいては共有キャッシュ200を用いてデータアクセスを行う。一方、共有キャッシュ200においてミスヒットとなった場合にはメインメモリ300にアクセスを行う。
このように、本発明の実施の形態においては、プロセッサ100のそれぞれに対応する一次キャッシュ110、共有キャッシュ(二次キャッシュ)200、メインメモリ300という3階層の記憶構造となっている。
[共有キャッシュ200の構成]
図2は、本発明の実施の形態における共有キャッシュ200の機能構成例を示す図である。この共有キャッシュ200は、調停部210と、タグ記憶部220と、タグ制御部230と、データ記憶部240と、データ制御部250と、応答部260とを備えている。
調停部210は、プロセッサ100−1乃至100−pおよびメインメモリ300からのアクセスを調停して、何れかにアクセス許可を付与するものである。この調停部210における調停としては、例えば、ラウンドロビン方式によりプロセッサ100−1乃至100−pおよびメインメモリ300に順次割り当てていくことが考えられる。許可されたアクセスは、タグ制御部230に供給される。
タグ記憶部220は、複数のエントリからなるメモリであり、各エントリにタグアドレス等を保持するものである。タグアドレスは、後述するように、アクセスされたアドレスの一部を示すものである。タグ記憶部220の各エントリは、アクセスされたアドレスの他の一部により索引される。
タグ制御部230は、アクセスされたアドレスに基づいて、タグ記憶部220においてアクセスすべきエントリを選択して制御するものである。このタグ制御部230により選択されたエントリは、データ制御部250に通知される。
データ記憶部240は、タグ記憶部220の各エントリに対応するデータを記憶するものである。このデータ記憶部240に記憶されるデータはキャッシュライン毎に管理され、メインメモリ300やプロセッサ100との間の転送もキャッシュライン毎に行われる。
データ制御部250は、タグ制御部230において選択されたエントリに応じて、データ記憶部240に記憶されたデータ(キャッシュライン)にアクセスするものである。リードアクセスやライトバック動作の場合には、データ記憶部240から読み出されたデータは応答部260に供給される。ライトアクセスの場合には、データ記憶部240から読み出されたデータの中の対応する位置にライトデータが埋め込まれて、再びデータ記憶部240に記憶される。
応答部260は、データ制御部250から供給されたデータをプロセッサ100−1乃至100−pまたはメインメモリ300に出力するものである。プロセッサ100からのリードアクセスに対する応答であれば、データはアクセスしたプロセッサ100に出力される。メインメモリ300へのライトバック動作であれば、データはメインメモリ300に出力される。
図3は、本発明の実施の形態における共有キャッシュ200の回路構成例を示す図である。ここでは、共有キャッシュ200として、ライン数128、ラインサイズ64B(バイト)の2ウェイ・セット・アソシアティブ・キャッシュを想定する。すなわち、同一インデックスアドレスに対して最大2つのキャッシュラインを記憶可能であり、各キャッシュラインに対応するデータのサイズは64バイトとなる。
メインメモリ300の領域を256MBとすると、必要なアドレスは28ビットとなる。ブロックサイズが64バイトであるため、アクセスアドレスの第0乃至5ビットの計6ビットがライン内アドレスに割り当てられる。また、ライン数が128であることから、タグ記憶部220のエントリを索引するためのインデックスアドレスは、アクセスアドレスの第6乃至12ビットの計7ビットに割り当てられる。したがって、タグアドレスは、アクセスアドレスの第13乃至27ビットの計15ビットに割り当てられる。アクセスアドレスのうちタグアドレスは信号線201を介して、インデックスアドレスは信号線202を介して、ライン内アドレスは信号線203を介して、それぞれ共有キャッシュ200に供給される。
タグ記憶部220は、それぞれ128個のエントリから成る2つのウェイ(way)#0および#1を備える。タグ記憶部220の各ウェイは、信号線202を介して供給されるインデックスアドレスによって索引される。したがって、この例では、2つのエントリが索引されることになる。
タグ制御部230は、比較器231および232と、論理和演算器233とを備え、タグ記憶部220において索引されたエントリのうちタグアドレスが一致するものを検出する。比較器231は、タグ記憶部220のウェイ#0において索引されたエントリに含まれるタグアドレスと、信号線201を介して供給されたタグアドレスとを比較して一致を検出するものである。同様に、比較器232は、タグ記憶部220のウェイ#1において索引されたエントリに含まれるタグアドレスと、信号線201を介して供給されたタグアドレスとを比較して一致を検出するものである。これら比較器231および232における比較結果は、論理和演算器233およびデータ制御部250に供給される。論理和演算器233は、比較器231または232の何れかで一致が検出された場合に、ヒットした旨を、信号線298を介して出力するものである。ただし、後述するように、対応するエントリのバリッドビットが無効である旨を示している場合には、ミスヒットとして判定される。
データ記憶部240は、それぞれ128個のキャッシュラインから成る2つのウェイ#0および#1を備え、タグ記憶部220の各エントリに対応するデータを記憶する。このデータ記憶部240もタグ記憶部220と同様に信号線202を介して供給されるインデックスアドレスによって索引される。これにより、2つの64バイトのラインデータがデータ制御部250に供給される。
データ制御部250は、選択器251および252を備える。選択器251は、データ記憶部240から供給された2つの64Bデータの何れか一方を選択するものである。すなわち、比較器231において一致が検出された場合にはデータ記憶部240のウェイ#0のラインデータが選択され、比較器232において一致が検出された場合にはデータ記憶部240のウェイ#1のラインデータが選択される。ただし、後述するように、一致が検出されたエントリのバリッドビットが無効である旨を示している場合にはそのキャッシュラインのデータは選択されない。比較器231および232の何れにおいても一致が検出されない場合には、何れのキャッシュラインのデータも選択されない。
選択器252は、選択されたラインデータのうちライン内アドレスとして指定された位置のデータを選択するものである。ライン内アドレスは、信号線203を介して供給される。ただし、この選択器252の機能はプロセッサ100側に備えるようにしてもよい。何れの場合も、ラインデータ全体またはその一部は信号線299を介して応答部260に出力される。
図4は、本発明の実施の形態におけるデータ記憶部240とメインメモリ300との対応関係の例を示す図である。ここでは、図3の例と同様に、共有キャッシュ200として、ライン数128、ブロックサイズ64バイトの2ウェイ・セット・アソシアティブ・キャッシュを想定する。
データ記憶部240の各キャッシュラインは、上述のようにインデックスアドレスにより索引される。第0ラインのインデックスアドレスは「0」、第1ラインのインデックスアドレスは「1」であり、同様にして、第127ラインのインデックスアドレスは「127」である。
データ記憶部240の第0ラインには、アドレスの下位13ビットが「0b0000000000000」(「0b」は、続く数字が2進数であることを意味する。以下同様。)であるラインが記憶される。データ記憶部240の第1ラインには、アドレスの下位13ビットが「0b0000001000000」であるラインが記憶される。データ記憶部240の第2ラインには、アドレスの下位13ビットが「0b0000010000000」であるラインが記憶される。データ記憶部240の第3ラインには、アドレスの下位13ビットが「0b0000011000000」であるラインが記憶される。データ記憶部240の第4ラインには、アドレスの下位13ビットが「0b0000100000000」であるラインが記憶される。同様に、データ記憶部240の第127ラインには、アドレスの下位13ビットが「0b1111111000000」であるラインが記憶される。
すなわち、この例では、あるインデックスアドレスに対して共有キャッシュ200に記憶可能なキャッシュラインは2つに限定されている。したがって、既に2つのキャッシュラインが占有されているセットに新たなデータを記憶するためには、何れかのキャッシュラインを追い出して置換(リプレース)する必要がある。置換すべきキャッシュライン候補を選択する手法として、例えば、最も近い時期に使用されていないキャッシュラインを追い出す手法(LRU法)が知られている。
[タグ記憶部220の構成と機能]
図5は、本発明の第1の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。タグ記憶部220の各エントリは、タグアドレス221、バリッド222、ダーティ223、および、参照回数224の各フィールドを備える。
タグアドレス221は、そのエントリに対応するキャッシュラインのタグアドレス(アドレスの上位15ビット)を記憶するものである。図中では、このタグアドレス221を「TAG」と略している。
バリッド222は、そのエントリの有効性を示すバリッドビット(Valid)を記憶するものである。このバリッド222が「1」を示していればそのエントリに対応するキャッシュラインのデータは有効であり、「0」を示していれば比較器231または232において一致が検出されたとしてもヒットとは判定されない。図中では、このバリッド222を「V」と略している。
ダーティ223は、そのエントリに対応するキャッシュラインのデータとメインメモリ300のデータとが一致していないことを示すダーティービット(Dirty)を記憶するものである。このダーティ223が「1」を示している場合には、そのエントリに対応するキャッシュラインのデータとメインメモリ300のデータは一致しておらず、共有キャッシュ200のデータが最新のデータであることを意味する。一方、ダーティ223が「0」を示している場合には、そのエントリに対応するキャッシュラインのデータとメインメモリ300のデータは一致していることを意味する。図中では、このダーティ223を「D」と略している。
参照回数224は、そのエントリに対応するキャッシュラインが参照されるべき残り参照回数(Reference number)を記憶するものである。図中では、この参照回数224を「R」と略している。この参照回数224は、受け渡し対象となるデータがキャッシュラインにライトされた際に、同時に設定される。この参照回数224が「2」以上を示している場合にリードアクセスが行われた際には、参照回数224に記憶される値から「1」減算(デクリメント)される。そして、参照回数224が「1」を示している場合にリードアクセスが行われた際には、そのリードアクセスの後にそのキャッシュラインは無効化される。その際、メインメモリ300へのライトバックは行われない。
なお、参照回数224が「0」を示している場合には、リードアクセスが行われてもその値に変化はない。これにより、通常のキャッシュアルゴリズムに沿った動作を行わせることができる。すなわち、何度リードアクセスが行われてもキャッシュヒットである限り無効化は行われず、必要になったときにはメインメモリ300へのライトバックが行われる。
図6は、本発明の第1の実施の形態におけるタグ記憶部220の更新に関する構成例を示す図である。ここでは、タグ記憶部220またはタグ制御部230に、比較器511、減算器512および比較器513を備えることを想定する。
リードアクセスの際、対象となるキャッシュラインの参照回数224が読み出され、比較器511において参照回数224が「2」以上を示している旨が検出されると、その参照回数224は減算器512によって「1」減算(デクリメント)される。また、リードアクセスの際、対象となるキャッシュラインの参照回数224が読み出され、比較器513において参照回数224が「1」を示している旨が検出されると、そのキャッシュラインの無効化が行われる。すなわち、バリッド222およびダーティ223がゼロクリアされる。
これにより、各プロセッサ100間で共有キャッシュ200を共有FIFOとして利用してデータの受け渡しを行うことができる。その際、受け渡しの済んだデータはライトバックされずに無効化されるため、共有キャッシュ200には残存しない。
[キャッシュ容量を超えるサイズのデータ受け渡し]
共有キャッシュ200の容量を越えるサイズのデータをプロセッサ100間で転送するためには、共有キャッシュ200を使用しないアンキャッシュ経路と、データ制御部250において以下のような制御機能とを追加することが有用である。
例えば、プロセッサ100−1が参照回数を伴ったデータを共有キャッシュ200にライトすることを想定する。ライトされたデータの量がある一定量(例えば、共有キャッシュ200の容量)を越えた段階で、タグ制御部230においてライトアクセスに対するタグ一致検出の結果、全てのウェイにおいて参照回数224が既に設定されている事象が発生する。この場合、共有キャッシュ200をスルーし、アンキャッシュの経路を用いてメインメモリ300へデータを直接格納する。このとき、ライトデータに付随する参照回数もメインメモリ300へ退避する。
その後、例えば、プロセッサ100−2が共有キャッシュ200からデータを読み出し、参照回数224が「1」から「0」に変化したキャッシュラインを無効化する。そして、引き続きプロセッサ100−2からリードアクセス要求があると、メインメモリ300から共有キャッシュ200へデータがフィルされる。このとき、退避されていた参照回数も参照回数224に設定される。これにより、プロセッサ100−2からのリードアクセスが可能となる。
図7は、本発明の第1の実施の形態におけるメインメモリ300とFIFO記憶領域310の関係の第1の例を示す図である。プロセッサ100間で共有されるFIFO記憶領域310として使用されるのは、メインメモリ300の連続空間である。したがって、このFIFO記憶領域310は、開始アドレスとサイズによって特定される。この例では、FIFO記憶領域310は規定値として予め定められているものとしている。このFIFO記憶領域310には、上述のように全てのウェイにおいて参照回数224が既に設定されている場合、共有キャッシュ200をスルーして、ライトデータが退避される。
また、メインメモリ300には、FIFO記憶領域310以外に、参照回数を退避するための参照回数記憶領域320が割り当てられる。この参照回数記憶領域320には、上述のように全てのウェイにおいて参照回数224が既に設定されている場合、共有キャッシュ200をスルーして、ライトデータに付随する参照回数が退避される。
[共有キャッシュ200の動作]
図8は、本発明の第1の実施の形態における共有キャッシュ200のライト時の処理手順を示す図である。
タグ制御部230における比較の結果、キャッシュヒットが検出されると(ステップS910)、そのキャッシュラインのダーティ223に「1」が設定され、ライトデータに付随する参照回数が参照回数224に設定される(ステップS918)。そして、ライトデータがデータ記憶部240に書き込まれる(ステップS919)。
一方、ミスヒットが検出された場合(ステップS910)、未使用となっているウェイが存在すれば(ステップS911)、キャッシュラインが追加され(ステップS912)、そのキャッシュラインのバリッド222に「1」が設定される(ステップS917)。そして、そのキャッシュラインのダーティ223に「1」が設定され、ライトデータに付随する参照回数が参照回数224に設定される(ステップS918)。そして、ライトデータがデータ記憶部240に書き込まれる(ステップS919)。
ミスヒットが検出された場合において(ステップS910)、全てのウェイが使用中であって(ステップS911)、かつ、全ウェイの参照回数224にゼロより大きい値が設定されていれば(ステップS913)、共有キャッシュ200をスルーする。すなわち、アンキャッシュの経路を用いて、メインメモリ300へデータおよび参照回数を退避する(ステップS915、S916)。また、ミスヒットが検出された場合において、全てのウェイが使用中であって(ステップS911)、かつ、何れかのウェイの参照回数224にゼロが設定されていれば(ステップS913)、そのキャッシュラインを置換する(ステップS914)。キャッシュライン置換後の動作は、キャッシュライン追加時の動作と同様である(ステップS917乃至S919)。
図9は、本発明の第1の実施の形態における共有キャッシュ200のリード時の処理手順を示す図である。
タグ制御部230における比較の結果、ミスヒットが検出されると(ステップS921)、キャッシュラインが確保され(ステップS922)、そのキャッシュラインのバリッド222に「1」が設定される(ステップS923)。このとき、ダーティ223に「0」が設定され、メインメモリ300の参照回数記憶領域320に退避されていた参照回数が参照回数224に設定される(ステップS923)。そして、データ記憶部240にはメインメモリ300のFIFO記憶領域310からデータがフィルされる(ステップS924)。その後、そのキャッシュラインのデータ記憶部240からデータが読み出される(ステップS925)。
タグ制御部230における比較の結果、キャッシュヒットが検出されると(ステップS921)、そのキャッシュラインのデータ記憶部240からデータが読み出される(ステップS926)。このとき、そのキャッシュラインの参照回数224の値が「1」であれば(ステップS927)、バリッド222が「0」に設定され、無効化される(ステップS928)。参照回数224の値が「2」以上であれば(ステップS927)、参照回数224の値は「1」減算(デクリメント)される(ステップS929)。なお、参照回数224の値が「0」であれば(ステップS927)、参照回数224の値は変化しない。
図10は、本発明の第1の実施の形態におけるプロセッサ間のデータ受け渡しシーケンスの第1の例を示す図である。この例は、共有キャッシュ200に十分な容量が備わっている場合の例である。
プロセッサ100−1がライトデータおよび参照回数を含むライトリクエストを発行すると(ステップS950)、共有キャッシュ200はキャッシュラインを確保してそのエントリにライトデータおよび参照回数を書き込む(ステップS951)。
その後、プロセッサ100−2がリードリクエストを発行すると(ステップS952)、共有キャッシュ200はタグ制御部230において比較を行い(ステップS953)、キャッシュヒットするとプロセッサ100−2にデータを出力する(ステップS954)。このとき、参照回数224の値が「2」以上であると仮定して、「1」が減算される(ステップS955)。
プロセッサ100−2が何回目かのリードリクエストを発行した際(ステップS956)、キャッシュヒットして(ステップS957)、プロセッサ100−2にデータが出力される(ステップS958)。このとき、参照回数224の値が「1」であったと仮定すると、そのキャッシュラインはライトバックされることなく無効化される(ステップS959)。
図11は、本発明の第1の実施の形態におけるプロセッサ間のデータ受け渡しシーケンスの第2の例を示す図である。この例は、共有キャッシュ200の容量を超えたサイズのデータを受け渡す場合の例である。
プロセッサ100−1がライトリクエストを発行した際(ステップS960)、共有キャッシュ200にキャッシュラインを確保できずにスルーされ(ステップS961)、メインメモリ300にデータおよび参照回数が退避されたと仮定する(ステップS962)。
その後、プロセッサ100−2によって他のデータに関するリードリクエストが発行され(ステップS963)、キャッシュヒットして(ステップS964)、プロセッサ100−2にデータが出力される(ステップS965)。このとき、参照回数224の値が「1」であったと仮定すると、そのキャッシュラインはライトバックされることなく無効化される(ステップS966)。
その次に、退避されていたデータに関するリードリクエストがプロセッサ100−2によって発行されると(ステップS967)、ミスヒットとなり、共有キャッシュ200からメインメモリ300にフィル要求が発行される(ステップS968)。メインメモリ300に退避されていたデータおよび参照回数が共有キャッシュ200に出力されると(ステップS969)、共有キャッシュ200はキャッシュラインのエントリに書き込む(ステップS970)。これにより、退避されていたデータの共有キャッシュ200からの読み出しが可能となり、プロセッサ100−2にデータが出力される(ステップS971)。
このような仕組みを利用すれば、読出し側からのアクセスによってキャッシュミスを発生させることにより、その都度、共有キャッシュ200にデータをフィルすることができる。しかしながら、リードアクセスを待ってデータフィルを起動していたのでは高速な動作を行えなくなるおそれがある。そこで、以下では、メインメモリ300から共有キャッシュ200へのプリフェッチを実現するための構成例について説明する。
[共有キャッシュ200へのプリフェッチ]
図12は、本発明の第1の実施の形態による情報処理システムにおいてプリフェッチ機能を設けた構成例を示す図である。この構成例では、プロセッサ100−1乃至pと共有キャッシュ200との間にプリフェッチ制御部400が接続されている。このプリフェッチ制御部400は、プロセッサ100からのリードアクセスに先行して、共有キャッシュ200にリードリクエストを発行し、プリフェッチを行わせるものである。すなわち、このプリフェッチは、メインメモリ300から共有キャッシュ200へのデータ転送を促すものである。
図13は、本発明の第1の実施の形態におけるプリフェッチ制御部400の一構成例を示す図である。このプリフェッチ制御部400は、プリフェッチアドレスレジスタ410と、FIFO容量レジスタ420と、共有キャッシュ容量カウンタ430と、メインメモリ容量カウンタ440と、バスインターフェース450と、制御部490とを備えている。
プリフェッチアドレスレジスタ410は、共有キャッシュ200に対してリードリクエストを発行するためのプリフェッチアドレスを保持するレジスタである。このプリフェッチアドレスレジスタ410の値は、逐次更新されて、次のプリフェッチに備えるよう制御される。
FIFO容量レジスタ420は、共有FIFOとして使用される共有キャッシュ200およびメインメモリ300の容量の総和を保持するレジスタである。共有キャッシュ容量カウンタ430は、共有キャッシュ200に格納されているデータサイズを保持するカウンタである。メインメモリ容量カウンタ440は、メインメモリ300に格納されている受け渡し対象データのサイズを保持するカウンタである。
バスインターフェース450は、共有キャッシュ200側のシステムバス190に対するバスインターフェースである。制御部490は、プリフェッチ制御部400の全体の制御を司るものである。
共有キャッシュ200をFIFO用途で使用し、プロセッサ100−1からプロセッサ100−2にデータを受け渡そうとする場合、まずFIFOとして扱う容量をFIFO容量レジスタ420に設定する。次に、プロセッサ100−1が最初のデータを転送すべくデータのライトを行う。このとき、プロセッサ100−1からのライトアドレスに、増加する共有キャッシュ容量カウンタ430の値を加えたものがプリフェッチアドレスレジスタ410に格納される。このプリフェッチアドレスレジスタ410の値がプリフェッチ要求を出す可能性のあるアドレスを意味する。
それ以降は、プロセッサ100−1からのライトによる共有キャッシュ容量カウンタ430の増加分だけプリフェッチアドレスレジスタ410を加算していく。そして、後述のプリフェッチ発生条件を満たした際にプリフェッチアドレスレジスタ410に保持されているアドレスに対してプリフェッチ要求が発行される。FIFO用途として一連のデータ送受信が終了すると、FIFO容量レジスタ420を設定し直し、または、クリアする。これをトリガとしてプリフェッチアドレスレジスタ410もクリアされる。
図14は、本発明の第1の実施の形態におけるプリフェッチ制御部400の状態遷移の一例を示す図である。プリフェッチ制御部400は、エンプティ状態10、L2限定状態21、L2フル/メイン退避状態22、L2ノンフル/メイン退避状態23、フル状態30の5つの状態のうちの何れかになる。なお、この図において、共有キャッシュ容量カウンタ430の値をcnt、メインメモリ容量カウンタ440の値をexcnt、FIFO容量レジスタ420の値をsize、共有キャッシュ200の総容量をL2sizeと表記する。また、各データの参照回数は1回とする。
エンプティ状態10は、受け渡し対象となるデータが共有キャッシュ200およびメインメモリ300の何れにも格納されていない状態である。すなわち、cnt=0、かつ、excnt=0である。
L2限定状態21は、共有キャッシュ200のみに受け渡し対象となるデータが格納されている状態である。すなわち、cnt≠0、かつ、excnt=0である。
L2フル/メイン退避状態22は、共有キャッシュ200の全てに受け渡し対象となるデータが格納されており(全ウェイの参照回数224の値が全て「1」以上)、さらにメインメモリ300にも格納されている状態である。すなわち、cnt=L2size、かつ、excnt≠0である。
L2ノンフル/メイン退避状態23は、共有キャッシュ200に参照回数224の値が「0」のキャッシュラインがあるが、受け渡し対象となるデータがメインメモリ300にも格納されている状態である。すなわち、cnt≠L2size、かつ、excnt≠0である。
フル状態30は、受け渡し対象となるデータが共有FIFOとして使用される容量に達してしまった状態である。すなわち、cnt+excnt=sizeである。
このような5つ状態間で、以下のような遷移が行われる。なお、ここでは、プロセッサ100−1からプロセッサ100−2にデータが受け渡されることを想定する。
まず、エンプティ状態10においてプロセッサ100−1が受け渡し対象となるデータを共有キャッシュ200にライトすると、共有キャッシュ容量カウンタ430が「1」加算(インクリメント)され、L2限定状態21へ遷移する。共有キャッシュ容量カウンタ430の加算および状態遷移のタイミングは、プリフェッチ制御部400と共有キャッシュ200との間におけるトランザクション完了時である。また、以下の説明においても、共有キャッシュ容量カウンタ430およびメインメモリ容量カウンタ440の更新および状態遷移のタイミングは、プリフェッチ制御部400と共有キャッシュ200との間におけるトランザクション完了時である。
L2限定状態21において、プロセッサ100−2が共有キャッシュ200からリードを行うと、共有キャッシュ容量カウンタ430が「1」減算(デクリメント)される。その際に共有キャッシュ容量カウンタ430の値が「1」から「0」に減算されたのであれば、エンプティ状態10に遷移する。L2限定状態21において、プロセッサ100−1が共有キャッシュ200にライトを行うと、共有キャッシュ容量カウンタ430が「1」加算(インクリメント)される。その際に共有キャッシュ容量カウンタ430の値がL2sizeに達し、さらにライト動作のみがされると、メインメモリ容量カウンタ440が「0」から「1」に加算され、L2フル/メイン退避状態22に遷移する。その際、データは共有キャッシュ200ではなく、メインメモリ300に直接格納される。
L2フル/メイン退避状態22において、プロセッサ100−2が共有キャッシュ200からリードを行うと、共有キャッシュ容量カウンタ430が「1」減算(デクリメント)され、L2ノンフル/メイン退避状態23に遷移する。このときのリードデータは、共有キャッシュ200に格納されているデータであり、上述のように参照回数は1回を想定しているため、リード後のキャッシュラインは無効化される。L2フル/メイン退避状態22において、プロセッサ100−1がライトを行う際にはメインメモリ300に直接ライトが行われ、メインメモリ容量カウンタ440が「1」加算(インクリメント)される。その際cnt+excnt=size−1であれば、フル状態30に遷移する。
フル状態30においては、ライト動作のみの場合はブロックされ、状態遷移も生じない。フル状態30において、プロセッサ100−2が共有キャッシュ200からリードを行うと、共有キャッシュ容量カウンタ430が「1」減算(デクリメント)され、L2ノンフル/メイン退避状態23に遷移する。また、フル状態30において、共有キャッシュ200には受け渡し対象となるデータが格納されず、全てがメインメモリ300に格納されている場合が生じ得る。この場合、メインメモリ300から共有キャッシュ200にプリフェッチが行われ、共有キャッシュ容量カウンタ430が「1」加算され、メインメモリ容量カウンタ440が「0」から「1」に減算され、L2ノンフル/メイン退避状態23に状態が遷移する。
L2ノンフル/メイン退避状態23において、プロセッサ100−1がライトを行い、その際cnt+excnt=size−1であれば、フル状態30に遷移する。L2ノンフル/メイン退避状態23では、プリフェッチ制御部400から共有キャッシュ200に対して自動的にプリフェッチ要求が発行される。その後、共有キャッシュ200からのプリフェッチ完了通知を受けると、共有キャッシュ容量カウンタ430は「1」加算(インクリメント)され、メインメモリ容量カウンタ440は「1」減算(デクリメント)される。また、プロセッサ100−1がライトを行った際には、メインメモリ容量カウンタ440が「1」加算(インクリメント)され、メインメモリへ直接データを格納する。プロセッサ100−2が共有キャッシュ200からリードを行った際には、共有キャッシュ容量カウンタ430は「1」減算(デクリメント)される。ただし、リードを行う際に共有キャッシュ容量カウンタ430の値が「0」のときは、プリフェッチの完了を待つ。プリフェッチ動作後、メインメモリ容量カウンタ440の値が「0」となった場合には、L2限定状態21に遷移する。
このように、5つの状態による状態遷移において、L2ノンフル/メイン退避状態23にあるとき、または、フル状態30であってかつ受け渡し対象となるデータが全てメインメモリ300に格納されているとき、プリフェッチ発生条件を満たす。そして、プリフェッチが行われることにより、メインメモリ300から共有キャッシュ200にデータがフィルされる。
[FIFO記憶領域の指定]
上述の、キャッシュ容量を超えるサイズのデータ受け渡しを実現する他の手法として、FIFO記憶領域の指定について説明する。この手法では、参照回数は1回であることが前提となる。
図15は、本発明の第1の実施の形態におけるメインメモリ300とFIFO記憶領域310の関係の第2の例を示す図である。この例では、共有キャッシュ200内にFIFO用途として使用される記憶領域を指定するため、先頭アドレスを保持する先頭アドレスレジスタ521と、サイズを保持するサイズレジスタ522とを備える。なお、先頭アドレスレジスタ521およびサイズレジスタ522は、特許請求の範囲に記載の領域指定レジスタの一例である。
タグ制御部230における比較の結果、全てのウェイにおいて参照回数224に「0」以外の値が設定されている場合、アンキャッシュ経路を用いてメインメモリ300へデータが直接格納される。第1の例ではその際に参照回数も退避していたが、この第2の例では参照回数をメインメモリ300に退避する必要はない。
この第2の例では、プロセッサからのリード要求によって、メインメモリ300から共有キャッシュ200へデータフィルが発生した場合、そのアドレスが指定された記憶領域内にあれば、データフィルの際に参照回数224を「1」に設定する。通常のFIFOでは一度読み出したデータは不要であり、参照回数が1回であることは問題なく、さらにメインメモリ300へ参照回数を退避する必要がなくなり、その分LSI上の面積を削減することができる。
この第2の例では、ライト時の処理手順は図8により説明したものと同様であるため説明を省略し、リード時の処理手順について以下に説明する。
図16は、本発明の第1の実施の形態においてFIFO記憶領域の指定を行った際の共有キャッシュ200のリード時の処理手順を示す図である。
タグ制御部230における比較の結果、キャッシュヒットが検出された際(ステップS931)の動作は、図9により説明した処理手順(ステップS926乃至S929)と同様である(ステップS936乃至S939)。
また、ミスヒットが検出された際(ステップS931)の動作も、図9により説明した処理手順(ステップS922乃至S925)とほぼ同様である(ステップS932乃至S935)。ただし、この例では、ステップS933において参照回数224が「1」に設定される点が異なる。これにより、参照回数記憶領域320に参照回数を退避することを不要にすることができる。
[第1の実施の形態の効果]
このように、本発明の第1の実施の形態によれば、リードアクセスの度にタグ記憶部220の参照回数224を減算し、「1」から「0」に変化した際にキャッシュラインを無効化することができる。これにより、キャッシュメモリをプロセッサ間の共有FIFOとして動作させることが可能となる。
<2.第2の実施の形態>
上述の第1の実施の形態では、タグ記憶部220内に参照回数224フィールドを設けたが、この第2の実施の形態ではデータ記憶部240内に参照回数を記憶する。前提とする情報処理システムおよび共有キャッシュの構成は図1乃至図4により説明した第1の実施の形態と同様であるため、ここでは説明を省略する。
[タグ記憶部220の構成]
図17は、本発明の第2の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。タグ記憶部220の各エントリは、タグアドレス221、バリッド222、ダーティ223、および、寿命付き225の各フィールドを備える。タグアドレス221、バリッド222およびダーティ223については、図5により説明した第1の実施の形態のフィールドと同様であるため、ここでは説明を省略する。
寿命付き225は、そのエントリに対応するキャッシュラインが寿命付きであるか否かを示す寿命付きフラグ(Time limited)を記憶するものである。図中では、この寿命付き225を「T」と略している。この寿命付き225が寿命付きである旨を示しているキャッシュラインのデータ記憶部240には、後述するように参照回数が記憶される。
なお、このタグ記憶部220の各フィールドの値は、キャッシュミス発生に伴うキャッシュミスへの対処処理時に設定され、その後の処理過程において適宜更新される。
[データ記憶部240の構成]
図18は、本発明の第2の実施の形態におけるデータ記憶部240のフィールド構成例を示す図である。上述のように、データ記憶部240は、それぞれ128個のキャッシュラインから成る2つのウェイ#0および#1を備え、それぞれ64バイトのラインデータを保持している。64バイトのラインデータのうち上位1バイトは参照回数242であり、下位63バイトがデータ241である。なお、この1バイトと63バイトの割り当ては一例であり、適宜変更してもよい。
参照回数242は、そのエントリに対応するキャッシュラインが参照されるべき残り参照回数(Reference Number)を記憶するものであり、この例では「0」から「255」の整数値が格納される。図中では、この参照回数242を「RN」と略している。この参照回数242は、対応するキャッシュラインの寿命付き225が「1」を示しているときのみ有効である。寿命付き225が「0」を示しているときには、参照回数242は特別な意味を有するものではなく、64バイトのラインデータ全体がデータとして取り扱われる。すなわち、寿命付き225の値に応じて、キャッシュラインとして2種類の何れかの構成を有する。
この参照回数242は、受け渡し対象となるデータがデータ241としてキャッシュラインにライトされた際に、同時に設定される。この参照回数242が「2」以上を示している場合にリードアクセスが行われた際には、参照回数224に記憶される値から「1」減算(デクリメント)される。そして、参照回数224が「1」を示している場合にリードアクセスが行われた際には、そのリードアクセスの後にそのキャッシュラインは無効化される。その際、メインメモリ300へのライトバックは行われない。
[共有キャッシュ200の動作]
本発明の第2の実施の形態では、共有キャッシュ200の動作について、タグ制御部230とデータ制御部250に分けて説明する。
図19は、本発明の第2の実施の形態におけるタグ制御部230のキャッシュラインライト時の処理手順を示す図である。
タグ制御部230は、プロセッサ100からキャッシュラインライトの要求を受信すると(ステップS811)、それに含まれるキャッシュラインのアドレスに基づいてタグ記憶部220を読み出して、キャッシュヒットまたはミスヒットの判定を行う。なお、このキャッシュラインライトの要求には、キャッシュラインのアドレスと種類の指定が含まれる。
キャッシュヒットであれば(ステップS812)、タグ制御部230は、タグ記憶部220に格納されているヒットしたキャッシュラインのタグ情報を更新する(ステップS816)。更新されるキャッシュラインにおいて、バリッド222は「1」に設定される。そして、タグ制御部230は、ヒットしたキャッシュラインのデータ記憶部240における格納位置をデータ制御部250に通知して、キャッシュラインライトを指示する(ステップS818)。
キャッシュミスであれば(ステップS812)、タグ制御部230は、ミスしたキャッシュラインをデータ記憶部240に追加可能であるか否かを判断する。
ミスしたキャッシュラインのデータ記憶部240への追加が可能であれば(ステップS813)、タグ制御部230は、ミスしたキャッシュラインのタグ情報をタグ記憶部220に追加する(ステップS815)。追加されるキャッシュラインにおいて、バリッド222は「1」に設定され、ダーティ223は「1」に設定される。また、寿命付き225はキャッシュラインの要求に含まれる種類に応じて、寿命付きであれば「1」に、寿命付きでなければ「0」に設定される。そして、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240における格納位置をデータ制御部250に通知して、キャッシュラインライトを指示する(ステップS818)。
ミスしたキャッシュラインのデータ記憶部240への追加が不可能であれば(ステップS813)、キャッシュラインの置換処理を行うことによりキャッシュラインの追加領域を確保する(ステップS814)。そして、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240における格納位置をデータ制御部250に通知して、キャッシュラインライトを指示する(ステップS818)。
図20は、本発明の第2の実施の形態におけるタグ制御部230のキャッシュラインリード時の処理手順を示す図である。
タグ制御部230は、プロセッサ100からキャッシュラインリードの要求を受信すると(ステップS821)、それに含まれるキャッシュラインのアドレスに基づいてタグ記憶部220を読み出して、キャッシュヒットまたはミスヒットの判定を行う。このキャッシュラインリードの要求には、キャッシュラインのアドレスと種類の指定が含まれる。タグアドレス221が一致し、バリッド222が「1」であり、寿命付き225が要求に含まれる種類と合致していればキャッシュヒットと判定され、それ以外であればキャッシュミスと判定される。
キャッシュヒットであれば(ステップS822)、タグ制御部230は、ヒットしたキャッシュラインのデータ記憶部240における格納位置と、キャッシュラインの種類と、キャッシュラインの供給先とをデータ制御部250に通知する。これにより、キャッシュラインリードを要求する(ステップS828)。
キャッシュミスであれば(ステップS822)、タグ制御部230は、ミスしたキャッシュラインをデータ記憶部240に追加可能であるか否かを判断する。
ミスしたキャッシュラインの追加が可能であれば(ステップS823)、タグ制御部230は、ミスしたキャッシュラインのタグ情報をタグ記憶部220に追加する(ステップS825)。追加されるキャッシュラインにおいて、タグアドレス221にはミスしたキャッシュラインのアドレスから算出されるタグが格納される。バリッド222は「1」に設定され、ダーティ223は「0」に設定される。また、寿命付き225はキャッシュラインの要求に含まれる種類に応じて、寿命付きであれば「1」に、寿命付きでなければ「0」に設定される。その後、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240での格納先位置と、メインメモリ300におけるアドレスとをデータ制御部250に通知し、キャッシュラインフェッチを要求する(ステップS827)。そして、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240における格納位置と、キャッシュラインの種類と、キャッシュラインの供給先とをデータ制御部250に通知して、キャッシュラインリードを要求する(ステップS828)。
ミスしたキャッシュラインの追加が不可能であれば(ステップS823)、タグ制御部230は、キャッシュラインの置換処理の実行によりキャッシュラインの追加領域を確保する(ステップS824)。そして、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240での格納先位置と、メインメモリ300におけるアドレスとをデータ制御部250に通知し、キャッシュラインフェッチを要求する(ステップS827)。そして、タグ制御部230は、ミスしたキャッシュラインのデータ記憶部240における格納位置と、キャッシュラインの種類と、キャッシュラインの供給先とをデータ制御部250に通知して、キャッシュラインリードを要求する(ステップS828)。
図21は、本発明の第2の実施の形態におけるタグ制御部230のキャッシュライン置換時の処理手順を示す図である。この処理は、図19におけるステップS814または図20におけるステップS824に相当するものである。
タグ制御部230は、キャッシュミスによりキャッシュラインを追加する必要が発生したとき、データ記憶部240にキャッシュラインを追加可能であるか否かを判断する。このとき、追加不可能であれば、現在保持している何れかのキャッシュラインを選択して、そのキャッシュラインをメインメモリ300に書き戻すことにより空き領域を確保して、そこに新たなキャッシュラインを格納する。これがキャッシュラインの置換処理である。
タグ制御部230は、キャッシュラインの置き換えが必要になると、タグ記憶部220のタグ情報を参照して、メインメモリ300へ書き戻すキャッシュラインを選択する(ステップS831)。このキャッシュラインの選択には、上述のように、最も近い時期に使用されていないキャッシュラインを追い出す手法(LRU法)を用いることができる。
次に、タグ制御部230は、選択したキャッシュラインのタグ記憶部220における格納位置と、キャッシュラインの種類と、キャッシュラインのメインメモリ300への書き戻し先アドレスとをデータ制御部250に通知する。これにより、キャッシュラインライトバックを要求する(ステップS832)。
そして、タグ制御部230は、選択したキャッシュラインのタグ情報を、ミスしたキャッシュラインのタグ情報に置き換える(ステップS833)。置換後のタグ情報において、タグアドレス221にはミスしたキャッシュラインのアドレスから算出されるタグが格納される。バリッド222は「1」に設定される。ダーティ223には、キャッシュミスがライトアクセスによるものであれば「1」が、リードアクセスによるものであれば「0」が格納される。また、寿命付き225はキャッシュラインの要求に含まれる種類に応じて、寿命付きであれば「1」に、寿命付きでなければ「0」に設定される。
図22は、本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインリード時の処理手順を示す図である。
データ制御部250は、タグ制御部230からキャッシュラインリードの指示を受信すると(ステップS841)、タグ制御部230から指定されたデータ記憶部240における位置のキャッシュラインを読み出す(ステップS842)。タグ制御部230のリード指示の対象が寿命付きキャッシュラインであれば(ステップS843)、データ制御部250は、読み出した参照回数242の値を「1」減算して(ステップS844)、データ記憶部240に書き戻す(ステップS845)。そして、データ制御部250は、この寿命付きキャッシュラインをプロセッサ100側に出力する(ステップS846)。タグ制御部230のリード指示の対象が通常のキャッシュラインであれば(ステップS843)、データ制御部250はタグ制御部230から指定されたデータ記憶部240における位置から読み出したキャッシュラインを出力する(ステップS846)。
図23は、本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインライトバック時の処理手順を示す図である。
データ制御部250は、タグ制御部230からキャッシュラインライトバック指示を受信すると(ステップS851)、タグ制御部230から指定されたデータ記憶部240における位置のキャッシュラインを読み出す(ステップS852)。タグ制御部230のライトバック指示の対象が寿命付きキャッシュラインであれば(ステップS853)、データ制御部250はデータ記憶部240から読み出した参照回数242の値を確認する。そして、参照回数242の値がゼロであればキャッシュラインライトバック処理を一旦終了する(ステップS854)。参照回数242の値がゼロでなければ(ステップS854)、データ制御部250はこの寿命キャッシュラインとタグ制御部230から指定されたアドレスとをメインメモリ300側へ出力する(ステップS855)。これにより、メインメモリ300の指定されたアドレスへこの寿命付きキャッシュラインが書き込まれる。
図24は、本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインフェッチ時の処理手順を示す図である。
データ制御部250は、タグ制御部230からキャッシュラインフェッチ指示を受信すると(ステップS861)、タグ制御部230から指定されたアドレスをメインメモリ300側に出力する。これにより、指定されたアドレスからのキャッシュラインサイズ分のデータをメインメモリ300から読み出すよう要求する(ステップS862)。
要求したキャッシュラインの転送が開始されると、データ制御部250は、転送されるキャッシュラインを受信し(ステップS863)、受信したキャッシュラインをタグ制御部230から指定されたデータ記憶部240における位置に書き込む(ステップS864)。
図25は、本発明の第2の実施の形態におけるデータ制御部250のキャッシュラインライト時の処理手順を示す図である。
データ制御部250は、タグ制御部230からキャッシュラインライト指示を受信すると(ステップS871)、プロセッサ100の一次キャッシュ110側からキャッシュラインを受信する(ステップS872)。そして、データ制御部250は、受信したキャッシュラインを、タグ制御部230から指定されたデータ記憶部240における位置に書き込む(ステップS873)。
図26は、本発明の第2の実施の形態における共有キャッシュ200へのデータライトシーケンスの例を示す図である。
プロセッサ100−1は、一次キャッシュ110−1のキャッシュラインにおいて、上位1バイトに参照回数として1回を表す「1」をライトし、下位63バイトにプロセッサ100−2に対して受け渡すデータをライトする(ステップS881)。そして、一次キャッシュ110−1に、この作業領域を寿命付きキャッシュラインとして共有キャッシュ200にライトするよう指示する(ステップS882)。
一次キャッシュ110−1は、共有キャッシュ200に対して、キャッシュラインの種類として寿命付きキャッシュラインを指定して、キャッシュラインのライトを要求する(ステップS883)。共有キャッシュ200は、ライト要求を受信すると(ステップS884)、キャッシュヒットまたはミスヒットの判定と、必要に応じてキャッシュラインの置き換えとを実行する(ステップS885)。そして、寿命付きキャッシュラインを受信して、受信した寿命付きキャッシュラインをデータ記憶部240に格納する(ステップS886)。
一次キャッシュ110−1は、寿命付きキャッシュラインの送信が完了すると(ステップS887)、プロセッサ100−1に寿命付きキャッシュラインのライト完了を報告する(ステップS888)。プロセッサ100−1がこの報告を受信することによりライト処理は終了する(ステップS889)。
図27は、本発明の第2の実施の形態における共有キャッシュ200からのデータリードシーケンスの例を示す図である。
プロセッサ100−2は、プロセッサ100−1がライトしたデータを参照するために、一次キャッシュ110−2に対してキャッシュラインをリードするよう指示する(ステップS890)。一次キャッシュ110−2は、共有キャッシュ200に対して、キャッシュラインの種類として寿命付きキャッシュラインを指定して、キャッシュラインのリードを要求する(ステップS891)。
共有キャッシュ200は、一次キャッシュ110−2からのリード要求を受信すると(ステップS892)、キャッシュヒットまたはミスヒットの判定を行う(ステップS893)。そして、ヒットした寿命付きキャッシュラインをデータ記憶部240から読み出して、参照回数242の値を「1」減算するとともに(ステップS894)、その寿命付きキャッシュラインを一次キャッシュ110−2に送信する(ステップS895)。
一次キャッシュ110−2は、寿命付きキャッシュラインの受信が完了すると(ステップS896)、プロセッサ100−2に寿命付きキャッシュラインのリード完了を報告する(ステップS897)。プロセッサ100−2は、一次キャッシュ110−2から寿命付きキャッシュラインのリード完了報告を受信すると(ステップS898)、共有データのリード処理を開始する(ステップS899)。
ステップS894において、参照回数242がゼロとなった寿命付きキャッシュラインは、今後参照されることのない不要なキャッシュラインであり、将来的にはタグ制御部230によって置換対象キャッシュラインとして選択される。ただし、本発明の実施の形態によれば、参照回数242の値がゼロになったことにより、データ制御部250によってメインメモリ300へはライトバックされず、そのまま破棄される。
[変形例]
この第2の実施の形態においても、上述の第1の実施の形態において説明した、キャッシュ容量を超えるサイズのデータ受け渡し、プリフェッチ、FIFO記憶領域の指定といった変形例を適宜適用することができる。
[第2の実施の形態の効果]
このように、本発明の第2の実施の形態によれば、リードアクセスの度にデータ記憶部240の参照回数242を減算し、「1」から「0」に変化した際にキャッシュラインを無効化することができる。これにより、キャッシュメモリをプロセッサ間の共有FIFOとして動作させることが可能となる。
<3.第3の実施の形態>
上述の第1の実施の形態では、タグ記憶部220内に参照回数224フィールドを設けたが、この第3の実施の形態ではタグ記憶部220内に利用可能量およびロックビットを記憶する。前提とする情報処理システムおよび共有キャッシュの構成は図1乃至図4により説明した第1の実施の形態と同様であるため、ここでは説明を省略する。
[タグ記憶部220の構成]
図28は、本発明の第3の実施の形態におけるタグ記憶部220のフィールド構成例を示す図である。タグ記憶部220の各エントリは、タグアドレス221、バリッド222、ダーティ223、ロック226、および、利用可能量227の各フィールドを備える。タグアドレス221、バリッド222およびダーティ223については、図5により説明した第1の実施の形態のフィールドと同様であるため、ここでは説明を省略する。
ロック226は、そのエントリが置換対象とならないようにロックをかけるためのロックビットを記憶するものである。このロック226があるプロセッサによってロック状態(例えば「1」)に設定された場合、そのエントリは無関係な他のプロセッサからのアクセスによっては置換されない。すなわち、ライト側プロセッサが新規のキャッシュラインを必要とする際にロック226をロック状態とし、リード側プロセッサにおいてそのキャッシュラインが不要になった際にロック226をアンロック状態とする。図中では、このロック226を「L」と略している。
利用可能量227は、そのエントリのデータ記憶部240において利用可能なデータの量(Usable amount)を記憶するものである。データ量の単位としては、統一されていれば任意の単位を使用できるが、例えばバイトやブロック(4バイトまたは8バイト)を単位とすることができる。1バイトを単位とする場合には、この利用可能量227で64バイト分を表現するために、6ビット幅を割り当てる必要がある。図中では、この利用可能量227を「U」と略している。
なお、利用可能量227は、ロック226と併用することなく単独で使用可能であるが、ロック226と併用することにより、後述の遅延機構を有効に利用することができるようになる。
[共有キャッシュ200の動作]
図29は、本発明の第3の実施の形態における共有キャッシュ200のライト時の処理手順を示す図である。
タグ制御部230における比較の結果、キャッシュヒットが検出されると(ステップS710)、そのキャッシュラインにデータをライトする余裕があるか否かが判断される(ステップS718)。具体的には、ラインサイズ(64バイト)から利用可能量227を減算した値がライトデータ量に足りない場合には、ライト動作は待機される。一方、ラインサイズから利用可能量227を減算した値がライトデータ量以上であれば、ライトデータがデータ記憶部240に書き込まれる(ステップS719)。その際、利用可能量227にはそのライトデータ量が加算される(ステップS720)。
一方、ミスヒットが検出された場合(ステップS710)、未使用となっているウェイが存在すれば(ステップS711)、キャッシュラインが追加され(ステップS712)、そのキャッシュラインのバリッド222に「1」が設定される(ステップS717)。以降の動作はキャッシュヒット時と同様である(ステップS718乃至S720)。
ミスヒットが検出された場合(ステップS710)、以下のように処理される。全てのウェイが使用中であって(ステップS711)、かつ、全ウェイのロック226がロックされているか利用可能量227にゼロより大きい値が設定されていれば(ステップS713)、共有キャッシュ200をスルーする。すなわち、アンキャッシュの経路を用いて、メインメモリ300へデータおよびライトデータ量を退避する(ステップS715、S716)。メインメモリ300上の退避領域は、図7により説明した第1の実施の形態と同様であり、FIFO記憶領域310の他に、(図示しない)ライトデータ量の記憶領域が確保される。全てのウェイが使用中であって、かつ、何れかのウェイのロック226がアンロックされているか利用可能量227にゼロより大きい値が設定されていないキャッシュラインがあれば(ステップS713)、そのキャッシュラインを置換する(ステップS714)。キャッシュライン置換後の動作は、キャッシュライン追加時の動作と同様である(ステップS717乃至S720)。
図30は、本発明の第3の実施の形態における共有キャッシュ200のリード時の処理手順を示す図である。
タグ制御部230における比較の結果、キャッシュヒットが検出されると(ステップS721)、そのキャッシュラインからデータをリード可能であるか否かが判断される(ステップS725)。具体的には、利用可能量227の値がリードデータ量に足りない場合には、リード動作は待機される。一方、利用可能量227の値がリードデータ量以上であれば、そのキャッシュラインのデータ記憶部240からリードデータが読み出される(ステップS926)。その際、利用可能量227からそのリードデータ量が減算され(ステップS727)、ロック226が「0」にアンロックされる(ステップS728)。
タグ制御部230における比較の結果、ミスヒットが検出されると(ステップS721)、キャッシュラインが確保され(ステップS722)、そのキャッシュラインのバリッド222に「1」が設定される(ステップS723)。このとき、ダーティ223に「0」が設定され、ロック226が「1」(ロック)に設定され、退避されていたライトデータ量が利用可能量227に設定される(ステップS723)。そして、データ記憶部240にはメインメモリ300のFIFO記憶領域からデータがフィルされる(ステップS724)。以降の動作はキャッシュヒット時と同様である(ステップS725乃至S728)。
[遅延更新機構]
図31は、本発明の第3の実施の形態における利用可能量227の遅延設定機構の態様を示す図である。新規にキャッシュラインが必要となって割り当てを行う際に、利用可能量227の更新タイミングをNライン分遅らせる機構を追加することを想定する。このような機構を、利用可能量227の遅延設定機構と称する。この遅延設定機構により、最終ライト位置からNライン以内のデータが再書込み可能になる。この図では、2ライン分の遅延を想定した例を示している。
この遅延設定機構を実現するために、ライトラインポインタレジスタ581、および、複数のライトデータ量レジスタ582が設けられる。ライトラインポインタレジスタ581は、現在ライトアクセスを行っているキャッシュラインがどこまで進んでいるかを記憶するレジスタである。ライトデータ量レジスタ582は、遅延対象となったキャッシュラインの利用可能量227を確定する際に、それまでのライトデータ量を記憶するレジスタである。
この図では、ライトラインポインタレジスタ581が第5番目のキャッシュラインを指し示しており、第3番目のキャッシュラインの利用可能量227が確定したことを表している。第5番目のキャッシュラインをライトした直後は、第4番目および第5番目のキャッシュラインの利用可能量227には設定がされていないため、対応するキャッシュラインは再書込み可能である。第4番目および第5番目のキャッシュラインの利用可能量227に設定すべきライトデータ量は、ライトデータ量レジスタ582に記憶されており、ライトラインポインタレジスタ581の変化に合わせて参照されていく。
図32は、本発明の第3の実施の形態におけるロック226の遅延解除機構の態様を示す図である。リードされたキャッシュラインが不要になりアンロックする際に、そのアンロックのタイミングをNライン分遅らせる機構を追加することを想定する。このような機構を、ロック226の遅延解除機構と称する。この遅延解除機構により、最終リード位置からNライン以内のデータが再読出し可能になる。この図では、2ライン分の遅延を想定した例を示している。
この遅延解除機構を実現するために、リードラインポインタレジスタ591が設けられる。このリードラインポインタレジスタ591は、現在リードアクセスを行っているキャッシュラインがどこまで進んでいるかを記憶するレジスタである。
この図では、リードラインポインタレジスタ591が第5番目のキャッシュラインを指し示しており、第3番目のキャッシュラインのロック226のアンロック状態が確定したことを表している。第5番目のキャッシュラインをリードした直後は、第4番目および第5番目のロック226はロック状態が解除されていないため、対応するキャッシュラインは再読出し可能である。
図33は、本発明の第3の実施の形態における遅延更新機構を利用したデータ順序入れ換えの一例を示す図である。それぞれ実行される命令と、仮想的なFIFOの状態とを組にして示している。仮想的なFIFOの実体は共有キャッシュ200に記憶される。ここでは、8つのキャッシュラインに相当するFIFOを示している。
図33(a)はライト側プロセッサにより実行される命令と実行直後の状態を示している。ライト側プロセッサがFIFOに対して左から順次ライトを行っているものとする。その過程において、データD2のキャッシュラインをライトした直後に、一つ前のキャッシュラインに戻ってデータD1をライトした様子を示している。通常は、データD1をライトしようとしても、利用可能量227が確定しているとリード側プロセッサがリードするまでデータをライトできなくなってしまうが、利用可能量227の設定を遅延することによりデータD1のライトが可能になる。
図33(b)はリード側プロセッサにより実行される命令と実行直後の状態を示している。リード側プロセッサでは、FIFOに対して左から順次リードを行っている。その結果、データD1を先にリードし、次にデータD2をリードすることができる。すなわち、ライト側プロセッサのライト順序とは異なり、データD1とD2とを入れ換えてリードすることが可能となる。これにより、ライト側プロセッサまたはリード側プロセッサにおいてメモリに保存してデータを入れ換えるコストを削減することができる。
図34は、本発明の第3の実施の形態における遅延更新機構を利用したデータサイズ圧縮の一例を示す図である。それぞれ実行される命令と、仮想的なFIFOの状態とを組にして示している。仮想的なFIFOの実体は共有キャッシュ200に記憶される。ここでは、キャッシュラインにおける8バイト分に相当するFIFOを示している。
図34(a)は遅延更新機構を利用しない場合のライト側プロセッサにより実行される命令と実行直後の状態を示している。まず、1バイトデータD1がFIFOの第0バイト目にライトされる。次に、2バイトデータD2がFIFOの第2乃至3バイト目にライトされる。このとき、利用可能量227がキャッシュライン内の最終位置を記憶するものとすると、次の1バイトデータD3は第4バイト目にライトされることになる。
図34(b)は遅延更新機構を利用した場合のライト側プロセッサにより実行される命令と実行直後の状態を示している。この場合、データD1およびD2がライトされた際に利用可能量227が確定していないため、1バイトデータD3は第1バイト目にライトすることが可能となる。このように、複数のデータサイズが混在している場合であってもFIFO内の空き領域を利用することができる。これにより、データアラインメントのための未使用領域を削減することができる。
なお、ここでは、利用可能量227の遅延設定機構を利用してライト側プロセッサにおけるライト順序の入れ換えを行う例について説明したが、同様の手法によりロック226の遅延解除機構を利用してリード順序の入れ換えを行うことも可能である。
[遅延更新機構のコーデックへの適用例]
以下では、ここまでに説明した遅延更新機構をコーデックのアルゴリズムに適用して最適化を行う適用例について説明する。
図35は、一般的なコーデックにおけるIDCT(Inverse Discrete Cosine Transform:逆離散コサイン変換)係数デコード処理アルゴリズムを示す図である。この原アルゴリズムでは、ビットストリームから8画素×8画素ブロックのIDCT係数を取得し、取得したIDCT係数を図36のようにジグザグスキャンして、1次元の係数列としてFIFOに出力している。このような手法は、MPEG(Moving Picture Experts Group)やJPEG(Joint Photographic Experts Group)においても利用されている。
図37は、従来手法により最適化されたコーデックのIDCT係数デコード処理アルゴリズムを示す図である。このアルゴリズムでは、ジグザグスキャンをIDCT係数デコードと同時に実行することにより、最適化を行っている。ただし、この手法を採用した場合、ジグザグスキャン後の係数列をFIFOに出力する際に順序を入れ換える必要があり、中間結果を保持するバッファQFを設ける必要が生じる。
図38は、本発明の第3の実施の形態における遅延更新機構を利用したコーデックのIDCT係数デコード処理アルゴリズムを示す図である。このアルゴリズムでは、ジグザグスキャンをIDCT係数デコードと同時に実行し、中間結果を保持するバッファを設けることなくFIFOに出力している。すなわち、初期化データを一旦FIFOに出力した後に、非ゼロ係数のみを再度FIFOに書き込むことができることから、中間結果を保持するバッファを省くことが可能となっている。
IDCT係数は、128バイト(8画素×8画素×2バイト)であり、キャッシュラインサイズが64バイトの場合、2ライン分を使用する。本発明の第3の実施の形態による遅延更新機構によれば、2ライン内における任意の場所に複数回ライトすることができるため、アルゴリズムの最適化を柔軟に行うことができる。
[キャッシュ容量を超えるサイズのデータ受け渡し]
この第3の実施の形態においても、共有キャッシュ200の容量を越えるサイズのデータをプロセッサ100間で転送することが可能である。すなわち、第1の実施の形態の場合と同様に、共有キャッシュ200を使用しないアンキャッシュ経路と、データ制御部250において以下のような制御機能とを追加することが有用である。
例えば、プロセッサ100−1がデータを共有キャッシュ200にライトすることを想定する。ライトされたデータの量がある一定量を越えた段階で、タグ制御部230においてライトアクセスに対するタグ一致検出の結果、全てのウェイにおいて利用可能量227およびロック226が既に設定されている事象が発生する。この場合、共有キャッシュ200をスルーし、アンキャッシュの経路を用いてメインメモリ300へデータを直接格納する。このとき、ライトデータに付随してライトデータ量もメインメモリ300へ退避する。
その後、例えば、プロセッサ100−2が共有キャッシュ200からデータを読み出し、メインメモリ300から共有キャッシュ200へデータがフィルされる。このとき、退避されていたライトデータ量も利用可能量227に設定される。これにより、プロセッサ100−2からのリードアクセスが可能となる。
このとき、遅延更新機構が利用されている場合、アンキャッシュの経路が用いられるようになった際には、更新が遅延されていた利用可能量227およびロック226を確定する必要がある。すなわち、利用可能量227の遅延設定機構では、後からライト動作が行われないと利用可能量227が確定せず、同様に、ロック226の遅延解除機構では、後からリード動作が行われないとロック226が確定しないことになる。したがって、キャッシュ容量を超えた際だけでなく、通常のアクセスにおいても最後のNライン分は強制的に利用可能量227およびロック226を確定させる必要がある。そのため、以下のようなフラッシュ機能を設ける。
[フラッシュ機能]
遅延更新機構を備える共有キャッシュ200においては、利用可能量227およびロック226を確定させるためのフラッシュ機能を設ける。ライト動作に関してフラッシュの指示があった場合、ライトデータ量レジスタ582に保持されたライトデータ量を利用可能量227に設定して確定させるとともに、未確定となっていたロック226をロック状態に確定させる。リード動作に関してフラッシュの指示があった場合、全ての利用可能量227を「0」に設定するとともに、全てのロック226をアンロックに設定して、キャッシュラインを解放する。
[変形例]
この第3の実施の形態においても、上述の第1の実施の形態において説明した、プリフェッチ、FIFO記憶領域の指定といった変形例を適宜適用することができる。
[第3の実施の形態の効果]
このように、本発明の第3の実施の形態によれば、利用可能量227に対して、ライトアクセスの度に加算し、リードアクセスの度に減算することにより、共有FIFOとして動作させた際のデータの追い越しを防止することができる。また、ライトアクセスの際にロック226をロック状態にして、リードアクセスの際にアンロック状態にすることにより、第三者によるキャッシュラインの追い出しを防止することができる。また、これら利用可能量227およびロック226について遅延更新機構を設けることにより、共有FIFOとして利用する際にデータを入れ換えることが可能となる。
<4.応用例>
上述のように、本発明の実施の形態によれば、キャッシュメモリ上に共有FIFOを実現することができる。そこで、次に共用FIFOを利用した応用例として、デジタルテレビ放送システムについて説明する。
図39は、本発明の実施の形態の応用例としてのデジタルテレビ放送システムの一例を示す図である。このデジタルテレビ放送システムでは、送信機601から受信機603に対して、チャネル602を介してデジタルテレビ放送信号が伝送される。送信機601は、トランスポートストリームのストリームデータを送信する。受信機603は、送信機601から送信されたトランスポートストリームのストリームデータを受信する。
ここで、このデジタルテレビ放送システムは、伝送トランスポートストリームパケットに対して、バイトインターリーブを行うこと想定する。インターリーブの深さは12バイトとし、同期バイトの次のバイトは遅延の無い基準パスを通過するものとする。このバイトインターリーブを実現するために、送信機601はインターリーバ610を備え、受信機603はデインターリーバ630を備えるものとする。
なお、デジタルテレビ放送ではチャネル602に相当する部分において様々な処理が行われるが、ここでは説明の便宜上、簡略化している。
図40は、本発明の実施の形態の応用例におけるインターリーバ610の一構成例を示す図である。このインターリーバ610は、12個のパス#0乃至#11を有しており、何れかのパスを通過するようにスイッチ611および613が同時に切り替わるようになっている。バイトインターリーバ610においては、1バイト毎に異なるパスを通過するように切り替えられる。すなわち、パス#0から順に、パス#1、パス#2と切り替わり、パス#11の次は再びパス#0に切り替わる。
このインターリーバ610では、12個のパス#0乃至#11のうちパス#1乃至#11において、FIFO612−1乃至11を備えている。FIFO612−1乃至11はバイト単位のシフトレジスタであり、それぞれ異なる長さを有している。例えば、パス#1上のFIFO612−1は17バイト長、パス#2上のFIFO612−2は34(=17×2)バイト長、パス#3上のFIFO612−3は51(=17×3)バイト長を有している。
図41は、本発明の実施の形態の応用例におけるデインターリーバ630の一構成例を示す図である。このデインターリーバ630は、インターリーバ610と同様に、12個のパス#0乃至#11を有しており、何れかのパスを通過するようにスイッチ631および633が同時に切り替わるようになっている。デバイトインターリーバ630においては、インターリーバ610と同様に、1バイト毎に異なるパスを通過するように切り替えられる。すなわち、パス#0から順に、パス#1、パス#2と切り替わり、パス#11の次は再びパス#0に切り替わる。
このデインターリーバ630では、12個のパス#0乃至#11のうちパス#0乃至#10において、FIFO632−0乃至10を備えている。FIFO632−0乃至10はバイト単位のシフトレジスタであり、それぞれ異なる長さを有している。例えば、パス#0上のFIFO632−0は187(=17×11)バイト長、パス#1上のFIFO632−1は170(=17×10)バイト長、パス#2上のFIFO632−2は153(=17×9)バイト長を有している。
これらインターリーバ610およびデインターリーバ630におけるFIFO612および632には、ダミーのデータが満たされているものとして処理が行われる。したがって、処理の最初の段階では、ダミーデータを押し出すための処理が必要になる。
インターリーバ610とデインターリーバ630とを比較すると分かるように、両者のパスにおけるFIFOの長さは対になるように設定されており、何れのパスも両者を合わせると187バイト分の長さを有するように構成されている。したがって、インターリーバ610の入力とデインターリーバ630の出力とでは、データの並びが一致するようになっている。その一方で、チャネル602上ではデータの並びが散らばることにより、バーストエラーが生じた場合でも、受信機603における誤り訂正符号による誤り訂正にとって都合のよい状態となる。
なお、このようなFIFOによる並び替えは、デジタルテレビ放送においては他に時間インターリーブなどの畳込みインターリーブに適用することができる。
これらインターリーバ610およびデインターリーバ630におけるFIFO612および632を、上述の本発明の実施の形態における共有FIFOとして実現することが可能である。FIFO612および632は、必ずしも全てをキャッシュメモリ上に格納する必要はないため、処理の状況に応じてキャッシュメモリを利用することができる。すなわち、FIFO以外の用途で用いられているキャッシュラインが多い場合にはメインメモリへの退避が行われ、逆の場合にはキャッシュライン上にFIFOのデータが乗り切った状態が維持される。したがって、少ないキャッシュ容量によって効率良く処理を行うことができる。
<5.変形例>
以上、本発明の実施の形態について説明したが、本発明はこれらの実施の形態に限定されるものではない。例えば、本発明の実施の形態においては、共有キャッシュ200のキャッシュラインサイズを64バイトと想定したが、本発明はこれに限定されるものではない。また、本発明の実施の形態においては、共有キャッシュ200と一次キャッシュ110のキャッシュラインサイズを同じ64バイトと想定したが、本発明はこれに限定されるものではなく、異なるキャッシュラインサイズの組合せであってもよい。
また、本発明の実施の形態においては、共有キャッシュ200をライトバック方式のキャッシュメモリと想定したが、本発明はこれに限定されるものではなく、ライトスルー方式など他の方式であってもよい。
また、本発明の実施の形態においては、一次キャッシュ110と共有キャッシュ200との間のデータ転送は、キャッシュラインサイズ単位で行うことを想定したが、本発明はこれに限定されるものではなく、任意のサイズによる転送を行えるようにしてもよい。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
10 エンプティ状態
21 L2限定状態
22 L2フル/メイン退避状態
23 L2ノンフル/メイン退避状態
30 フル状態
100 プロセッサ
110 一次キャッシュ
190 システムバス
200 共有キャッシュ(二次キャッシュ)
210 調停部
220 タグ記憶部
230 タグ制御部
231、232 比較器
233 論理和演算器
240 データ記憶部
250 データ制御部
251、252 選択器
260 応答部
300 メインメモリ
310 FIFO記憶領域
320 参照回数記憶領域
400 プリフェッチ制御部
410 プリフェッチアドレスレジスタ
420 FIFO容量レジスタ
430 共有キャッシュ容量カウンタ
440 メインメモリ容量カウンタ
450 バスインターフェース
490 制御部
511、513 比較器
512 減算器
521 先頭アドレスレジスタ
522 サイズレジスタ
581 ライトラインポインタレジスタ
582 ライトデータ量レジスタ
591 リードラインポインタレジスタ
601 送信機
602 チャネル
603 受信機
610 インターリーバ
630 デインターリーバ

Claims (19)

  1. アクセスアドレスの第1のアドレス部分によってタグアドレスおよび残り参照回数を含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、
    前記複数のエントリに対応するデータを記憶するデータ記憶部と、
    前記第1のアドレス部分とは異なる前記アクセスアドレスの第2のアドレス部分と前記索引されたエントリに含まれる前記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して前記一致したエントリに含まれる前記残り参照回数が残り1回である旨を表示している場合には前記リードアクセスの後に当該エントリをライトバックせずに無効化し、前記残り参照回数が残り1回よりも大きい数を表示している場合には前記残り参照回数を1回分減らすタグ制御部と、
    前記リードアクセスに対して前記一致したエントリに対応するデータを前記データ記憶部から選択するデータ制御部と
    を具備するキャッシュメモリ。
  2. 前記タグ制御部は、ライトアクセスに対して前記第1のアドレス部分に対応する前記タグ記憶部のエントリの前記残り参照回数が何れもゼロより大きい数を表示している場合には前記タグ記憶部および前記データ記憶部にアクセスせずに前記ライトアクセスに係るデータおよび参照回数を外部のメモリに退避するように制御する
    請求項1記載のキャッシュメモリ。
  3. 前記データ記憶部に空き容量が存在する場合に前記退避されたデータおよび参照回数を前記メモリからそれぞれ前記データ記憶部および前記タグ記憶部にプリフェッチするよう制御するプリフェッチ制御部をさらに具備する請求項2記載のキャッシュメモリ。
  4. メモリ上の特定の領域を指定する領域指定レジスタをさらに具備し、
    前記タグ制御部は、前記アクセスアドレスが前記領域に含まれる場合においてライトアクセスに対して前記第1のアドレス部分に対応する前記タグ記憶部のエントリの前記残り参照回数が何れもゼロより大きい数を表示しているときには前記タグ記憶部および前記データ記憶部にアクセスせずに前記ライトアクセスに係るデータを外部のメモリに退避するように制御する
    請求項1記載のキャッシュメモリ。
  5. 前記データ記憶部に空き容量が存在する場合に前記退避されたデータを前記メモリから前記データ記憶部にプリフェッチするとともに前記タグ記憶部における残り参照回数を1回に設定するよう制御するプリフェッチ制御部をさらに具備する請求項4記載のキャッシュメモリ。
  6. アクセスアドレスの第1のアドレス部分によってタグアドレスおよび残り参照回数を含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、
    前記第1のアドレス部分とは異なる前記アクセスアドレスの第2のアドレス部分と前記索引されたエントリに含まれる前記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して前記一致したエントリに含まれる前記残り参照回数が残り1回である旨を表示している場合には前記リードアクセスの後に当該エントリをライトバックせずに無効化し、前記残り参照回数が残り1回よりも大きい数を表示している場合には前記残り参照回数を1回分減らすタグ制御部と
    を具備するキャッシュメモリ制御装置。
  7. アクセスアドレスの第1のアドレス部分によってタグアドレスおよび寿命付きか否かを示す寿命フラグを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、
    前記複数のエントリに対応するデータを記憶するとともに前記寿命フラグが寿命付きである旨を示している場合には残り参照回数を記憶するデータ記憶部と、
    前記第1のアドレス部分とは異なる前記アクセスアドレスの第2のアドレス部分と前記索引されたエントリに含まれる前記タグアドレスとを比較して一致したエントリを検出し、リードアクセスに対して前記一致したエントリに含まれる前記寿命フラグが寿命付きである旨を示している場合には対応する前記残り参照回数が残り1回である旨を表示しているときには前記リードアクセスの後に当該エントリをライトバックせずに無効化するタグ制御部と、
    前記リードアクセスに対して前記一致したエントリに対応するデータを前記データ記憶部から選択するとともに、前記一致したエントリに含まれる前記寿命フラグが寿命付きである旨を示している場合には対応する前記残り参照回数が残り1回よりも大きい数を表示しているときには前記残り参照回数を1回分減らすデータ制御部と
    を具備するキャッシュメモリ。
  8. 前記タグ制御部は、ライトアクセスに対して前記第1のアドレス部分に対応する前記データ記憶部のエントリの前記残り参照回数が何れもゼロより大きい数を表示している場合には前記タグ記憶部および前記データ記憶部にアクセスせずに前記ライトアクセスに係るデータおよび参照回数を外部のメモリに退避するように制御する
    請求項7記載のキャッシュメモリ。
  9. 前記データ記憶部に空き容量が存在する場合に前記退避されたデータおよび参照回数を前記メモリから前記データ記憶部にプリフェッチするよう制御するプリフェッチ制御部をさらに具備する請求項8記載のキャッシュメモリ。
  10. メモリ上の特定の領域を指定する領域指定レジスタをさらに具備し、
    前記タグ制御部は、前記アクセスアドレスが前記領域に含まれる場合においてライトアクセスに対して前記第1のアドレス部分に対応する前記データ記憶部のエントリの前記残り参照回数が何れもゼロより大きい数を表示しているときには前記タグ記憶部および前記データ記憶部にアクセスせずに前記ライトアクセスに係るデータを外部のメモリに退避するように制御する
    請求項7記載のキャッシュメモリ。
  11. 前記データ記憶部に空き容量が存在する場合に前記退避されたデータを前記メモリから前記データ記憶部にプリフェッチするとともに前記データ記憶部における残り参照回数を1回に設定するよう制御するプリフェッチ制御部をさらに具備する請求項10記載のキャッシュメモリ。
  12. アクセスアドレスの第1のアドレス部分によってタグアドレスおよびデータ量フィールドを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、
    前記複数のエントリに対応するデータを記憶するデータ記憶部と、
    前記第1のアドレス部分とは異なる前記アクセスアドレスの第2のアドレス部分と前記索引されたエントリに含まれる前記タグアドレスとを比較して一致したエントリを検出し、ライトアクセスの場合は前記一致したエントリに含まれる前記データ量フィールドの値に基づいて空き容量が確保されるまで待機して、前記ライトアクセス後は前記データ量フィールドに前記ライトアクセスに係るデータ量を加算し、リードアクセスの場合は前記一致したエントリに含まれる前記データ量フィールドの値に基づいて前記リードアクセスの対象となるデータ量が確保されるまで待機して、前記リードアクセス後は前記データ量フィールドから前記リードアクセスに係るデータ量を減算するタグ制御部と、
    前記ライトアクセスに対して前記ライトアクセスに係るデータを前記データ記憶部の前記一致したエントリに書き込み、前記リードアクセスに対して前記一致したエントリに対応するデータを前記データ記憶部から選択するデータ制御部と
    を具備するキャッシュメモリ。
  13. 前記タグ制御部は、前記ライトアクセス後に所定数のエントリについてライトアクセスが実行された遅延タイミングで前記データ量の加算を行うモードを備える請求項12記載のキャッシュメモリ。
  14. 前記タグ制御部は、前記遅延タイミングによる前記データ量の加算を行うモードにおいて、フラッシュ指示を受けると速やかに前記データ量の加算を行う請求項13記載のキャッシュメモリ。
  15. 前記タグ記憶部は、前記エントリに当該エントリがロックされているか否かを示すロックビットを含み、
    前記タグ制御部は、前記ライトアクセスの際に前記一致したエントリに含まれる前記ロックビットをロックし、前記リードアクセスの際に前記一致したエントリに含まれる前記ロックビットをアンロックする
    請求項12記載のキャッシュメモリ。
  16. 前記タグ制御部は、前記ライトアクセス後に所定数のエントリについてライトアクセスが実行された遅延タイミングで前記ロックビットのロックを行うモードを備える請求項15記載のキャッシュメモリ。
  17. 前記タグ制御部は、前記遅延タイミングによる前記ロックビットのロックを行うモードにおいて、フラッシュ指示を受けると速やかに前記ロックビットのアンロックを行う請求項16記載のキャッシュメモリ。
  18. 前記タグ制御部は、前記ライトアクセスに対して前記第1のアドレス部分に対応する前記タグ記憶部のエントリの前記データ量フィールドが何れもゼロより大きい数を表示している場合または前記ロックビットが何れもロックされている場合には前記タグ記憶部および前記データ記憶部にアクセスせずに前記ライトアクセスに係るデータおよびライトデータ量を外部のメモリに退避するように制御する
    請求項15記載のキャッシュメモリ。
  19. アクセスアドレスの第1のアドレス部分によってタグアドレスおよびデータ量フィールドを含む複数のエントリのうち少なくとも一つが索引されるタグ記憶部と、
    前記第1のアドレス部分とは異なる前記アクセスアドレスの第2のアドレス部分と前記索引されたエントリに含まれる前記タグアドレスとを比較して一致したエントリを検出し、ライトアクセスの場合は前記一致したエントリに含まれる前記データ量フィールドの値に基づいて空き容量が確保されるまで待機して、前記ライトアクセス後は前記データ量フィールドに前記ライトアクセスに係るデータ量を加算し、リードアクセスの場合は前記一致したエントリに含まれる前記データ量フィールドの値に基づいて前記リードアクセスの対象となるデータ量が確保されるまで待機して、前記リードアクセス後は前記データ量フィールドから前記リードアクセスに係るデータ量を減算するタグ制御部と
    を具備するキャッシュメモリ制御装置。
JP2010212516A 2009-12-21 2010-09-22 キャッシュメモリおよびキャッシュメモリ制御装置 Pending JP2011150684A (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2010212516A JP2011150684A (ja) 2009-12-21 2010-09-22 キャッシュメモリおよびキャッシュメモリ制御装置
CN201080055593.1A CN102667737B (zh) 2009-12-21 2010-12-14 缓冲存储器和缓冲存储器控制单元
PCT/JP2010/072475 WO2011078014A1 (ja) 2009-12-21 2010-12-14 キャッシュメモリおよびキャッシュメモリ制御装置
EP10839247A EP2518633A1 (en) 2009-12-21 2010-12-14 Cache memory and cache memory control device
US13/515,315 US9535841B2 (en) 2009-12-21 2010-12-14 Cache memory and cache memory control unit
KR1020127015222A KR20120106748A (ko) 2009-12-21 2010-12-14 캐시 메모리 및 캐시 메모리 제어 장치
US15/364,596 US10102132B2 (en) 2009-12-21 2016-11-30 Data transfer in a multiprocessor using a shared cache memory

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP2009288647 2009-12-21
JP2009288647 2009-12-21
JP2009288649 2009-12-21
JP2009288648 2009-12-21
JP2009288649 2009-12-21
JP2009288648 2009-12-21
JP2010212516A JP2011150684A (ja) 2009-12-21 2010-09-22 キャッシュメモリおよびキャッシュメモリ制御装置

Publications (1)

Publication Number Publication Date
JP2011150684A true JP2011150684A (ja) 2011-08-04

Family

ID=44195543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010212516A Pending JP2011150684A (ja) 2009-12-21 2010-09-22 キャッシュメモリおよびキャッシュメモリ制御装置

Country Status (6)

Country Link
US (2) US9535841B2 (ja)
EP (1) EP2518633A1 (ja)
JP (1) JP2011150684A (ja)
KR (1) KR20120106748A (ja)
CN (1) CN102667737B (ja)
WO (1) WO2011078014A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法
WO2014142852A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Vulnerability estimation for cache memory
JP2015118638A (ja) * 2013-12-19 2015-06-25 キヤノン株式会社 情報処理装置及びその制御方法、プログラム

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972661B2 (en) 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US8930624B2 (en) * 2012-03-05 2015-01-06 International Business Machines Corporation Adaptive cache promotions in a two level caching system
JP5998998B2 (ja) * 2013-03-22 2016-09-28 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
WO2014180112A1 (zh) * 2013-05-06 2014-11-13 华为技术有限公司 一种数据读写方法、存储控制器及计算机
CN104346295B (zh) * 2013-08-09 2017-08-11 华为技术有限公司 一种缓存刷新方法和装置
KR20150113657A (ko) * 2014-03-31 2015-10-08 삼성전자주식회사 가변 크기의 데이터를 기록하는 방법 및 프로세서와 가변 크기의 데이터를 판독하는 방법 및 프로세서 및 기록매체
JP6447629B2 (ja) * 2014-05-09 2019-01-09 ソニー株式会社 記憶制御装置、記憶装置、および、その記憶制御方法
KR102354848B1 (ko) 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
WO2016203629A1 (ja) * 2015-06-19 2016-12-22 株式会社日立製作所 ストレージシステム及びキャッシュ制御方法
CN107025130B (zh) * 2016-01-29 2021-09-03 华为技术有限公司 处理节点、计算机系统及事务冲突检测方法
US10049044B2 (en) * 2016-06-14 2018-08-14 Advanced Micro Devices, Inc. Asynchronous cache flushing
CN107526535B (zh) 2016-06-22 2020-07-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache
CN110321997B (zh) * 2018-03-31 2021-10-19 赛灵思公司 高并行度计算平台、系统及计算实现方法
DE102018005618B4 (de) * 2018-07-17 2021-10-14 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Vorrichtung zur gepufferten Übertragung von Daten
CN111340678A (zh) * 2018-12-19 2020-06-26 华为技术有限公司 一种数据缓存系统、图形处理器及数据缓存方法
CN116897335A (zh) * 2021-02-26 2023-10-17 华为技术有限公司 一种缓存替换方法和装置
CN113222115B (zh) * 2021-04-30 2024-03-01 西安邮电大学 面向卷积神经网络的共享缓存阵列
US11907722B2 (en) * 2022-04-20 2024-02-20 Arm Limited Methods and apparatus for storing prefetch metadata
US11994994B2 (en) * 2022-04-25 2024-05-28 Analog Devices International Unlimited Company Smart prefetch buffer and queue management

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
JPH11339464A (ja) * 1998-05-28 1999-12-10 Sony Corp Fifo記憶回路
JP2000010862A (ja) 1998-06-23 2000-01-14 Hitachi Software Eng Co Ltd キャッシュメモリ制御方法
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US7707321B2 (en) * 1999-08-04 2010-04-27 Super Talent Electronics, Inc. Chained DMA for low-power extended USB flash device without polling
US6868472B1 (en) * 1999-10-01 2005-03-15 Fujitsu Limited Method of Controlling and addressing a cache memory which acts as a random address memory to increase an access speed to a main memory
JP3770091B2 (ja) 2001-02-09 2006-04-26 日本電気株式会社 キャッシュ制御方法及びキャッシュ制御回路
JP2003030051A (ja) 2001-07-19 2003-01-31 Sony Corp データ処理装置及びデータアクセス方法
JP3988485B2 (ja) 2002-02-25 2007-10-10 セイコーエプソン株式会社 キャッシュ回路、情報処理装置及び電子機器
JP2003271455A (ja) 2002-03-19 2003-09-26 Fujitsu Ltd キャッシュメモリ制御装置およびキャッシュメモリシステム
US6847990B2 (en) * 2002-05-17 2005-01-25 Freescale Semiconductor, Inc. Data transfer unit with support for multiple coherency granules
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7225301B2 (en) * 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
JP2004355365A (ja) 2003-05-29 2004-12-16 Fujitsu Ltd キャッシュ管理装置およびキャッシュメモリ管理方法
TWI227853B (en) * 2003-08-29 2005-02-11 Rdc Semiconductor Co Ltd Data accessing method and system for processing unit
JP4451717B2 (ja) * 2004-05-31 2010-04-14 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
JP2007272336A (ja) * 2006-03-30 2007-10-18 Toshiba Corp 命令処理装置及び命令処理方法
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
JP2009015509A (ja) 2007-07-03 2009-01-22 Renesas Technology Corp キャッシュメモリ装置
US7827357B2 (en) 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US8769207B2 (en) * 2008-01-16 2014-07-01 Via Technologies, Inc. Caching method and apparatus for a vertex shader and geometry shader
US8145768B1 (en) * 2008-02-26 2012-03-27 F5 Networks, Inc. Tuning of SSL session caches based on SSL session IDS

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法
WO2014142852A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Vulnerability estimation for cache memory
US9075904B2 (en) 2013-03-13 2015-07-07 Intel Corporation Vulnerability estimation for cache memory
JP2015118638A (ja) * 2013-12-19 2015-06-25 キヤノン株式会社 情報処理装置及びその制御方法、プログラム

Also Published As

Publication number Publication date
US20170083440A1 (en) 2017-03-23
CN102667737B (zh) 2015-02-25
US9535841B2 (en) 2017-01-03
US10102132B2 (en) 2018-10-16
EP2518633A1 (en) 2012-10-31
KR20120106748A (ko) 2012-09-26
WO2011078014A1 (ja) 2011-06-30
CN102667737A (zh) 2012-09-12
US20120331234A1 (en) 2012-12-27

Similar Documents

Publication Publication Date Title
WO2011078014A1 (ja) キャッシュメモリおよびキャッシュメモリ制御装置
US10740260B2 (en) Cache self-clean engine
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US8122216B2 (en) Systems and methods for masking latency of memory reorganization work in a compressed memory system
US20100211746A1 (en) Cache device
KR20160141735A (ko) 캐시 오염을 감소시키기 위해서 전용 캐시 세트들에서의 경합 전용 프리페치 정책들에 기초한 적응형 캐시 프리페칭
US20080055323A1 (en) Systems and methods for reducing latency for accessing compressed memory using stratified compressed memory architectures and organization
US20110167224A1 (en) Cache memory, memory system, data copying method, and data rewriting method
US20100030966A1 (en) Cache memory and cache memory control apparatus
US7454575B2 (en) Cache memory and its controlling method
KR20110101994A (ko) 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
US7555610B2 (en) Cache memory and control method thereof
US20140297966A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
US10649901B2 (en) Victim cache line selection
JP5040121B2 (ja) 情報処理装置、キャッシュ制御方法及びプログラム
JP4302083B2 (ja) キャッシュシステムおよびキャッシュシステム制御方法
JP2014199576A (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
JP2014186579A (ja) キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法
US9053030B2 (en) Cache memory and control method thereof with cache hit rate
TWI450092B (zh) 串流上下文的快取記憶體系統
CN113791989A (zh) 基于cache的缓存数据处理方法、存储介质及芯片
JP2022015514A (ja) 半導体装置
JP2019053390A (ja) 演算処理装置及び演算処理装置の制御方法
US20230393988A1 (en) Arithmetic processing device and arithmetic processing method