JP2007323192A - キャッシュメモリ装置および処理方法 - Google Patents

キャッシュメモリ装置および処理方法 Download PDF

Info

Publication number
JP2007323192A
JP2007323192A JP2006150445A JP2006150445A JP2007323192A JP 2007323192 A JP2007323192 A JP 2007323192A JP 2006150445 A JP2006150445 A JP 2006150445A JP 2006150445 A JP2006150445 A JP 2006150445A JP 2007323192 A JP2007323192 A JP 2007323192A
Authority
JP
Japan
Prior art keywords
command
processing
queue
machine
cache
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
JP2006150445A
Other languages
English (en)
Other versions
JP4208895B2 (ja
Inventor
Shigehiro Asano
滋博 浅野
Yoshifumi 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.)
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 JP2006150445A priority Critical patent/JP4208895B2/ja
Priority to US11/635,518 priority patent/US20070283100A1/en
Priority to EP07250797A priority patent/EP1862907A3/en
Priority to CNA2007100923685A priority patent/CN101082882A/zh
Publication of JP2007323192A publication Critical patent/JP2007323192A/ja
Application granted granted Critical
Publication of JP4208895B2 publication Critical patent/JP4208895B2/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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

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

【課題】メモリアクセスに起因した電力消費を低減し、排他的アクセスを可能とするキャッシュメモリ装置および処理方法を提供する。
【解決手段】複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付手段301と、コマンド受付手段301が受け付けたコマンドに対応する処理を行う処理手段と、処理手段がコマンドを処理しているときに、処理手段による処理中のコマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドをコマンド受付手段301が受け付けた場合に、コマンド受付手段301が受け付けたコマンドをキュー330に格納する格納手段とを備えた。
【選択図】 図2

Description

本発明は、複数のプロセッサそれぞれからコマンドを受け付けるキャッシュメモリ装置およびキャッシュメモリ装置における処理方法に関するものである。
近年における半導体微細加工技術の進展により、一つの半導体基板上に複数のプロセッサを集積することが可能となった。一方、メモリのレーテンシを隠蔽するためのキャッシュメモリ技術は広く使用されており、キャッシュメモリのスループットを向上させることはシステムの性能を向上させるのに不可欠な要素となっている。さらに、複数のプロセッサ間で排他的アクセスを行う機構は、並列プログラムを記述する上で必要不可欠な機能である。排他的アクセスを行う機構としては、例えばバスにロック信号を設けて、この信号がValldである間は同じアドレスに対するプロセッサからのアクセスを行えなくする技術が開示されている(例えば、「特許文献1参照」)。
米国特許第5276847号明細書
しかしながら、複数のプロセッサがキャッシュを共有する装置において、同じキャッシュラインに対する複数の要求が出され、最初のアクセスがキャッシュの状態を書き換える前に次のアクセスが起こった場合には、次のアクセスも最初のアクセスと同様の動作を行うこととなり不都合がある。
また、キャッシュにミスした場合には次の階層、すなわち一般的にはメインメモリをアクセスすることになるがこのアクセスは遅い上に多くの電力を消費してしまう。また、複数アクセスを同時に行えることとするとキャッシュの排他的アクセスを行うことができない。
本発明は、上記に鑑みてなされたものであって、メモリアクセスに起因した電力消費を低減し、排他的アクセスを可能とするキャッシュメモリ装置および処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリ装置であって、複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付手段と、前記コマンド受付手段が受け付けたコマンドに対応する処理を行う処理手段と、前記処理手段が前記コマンドを処理しているときに、前記処理手段による処理中の前記コマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドを前記コマンド受付手段が受け付けた場合に、前記コマンド受付手段が受け付けた前記コマンドをキューに格納する格納手段とを備えたことを特徴とする。
また、本発明の他の形態は、キャッシュメモリ装置であって、複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付手段と、前記コマンド受付手段が受け付けたコマンドに対応する処理を行う処理手段であり、コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンと、所定の種類のコマンドに対するすべての前記第1ステートマシンが使用されているときに、前記コマンド受付手段が当該種類のコマンドを受け付けた場合に、前記コマンド受付手段が受け付けた前記コマンドを前記キューに格納する格納手段とを備えたことを特徴とする。
また、本発明の他の形態は、キャッシュメモリ装置における処理方法であって、複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付ステップと、前記コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行う処理ステップが存在し、前記処理ステップにおいて前記コマンドを処理しているときに、処理中の前記コマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドを受け付けた場合に、受け付けた前記コマンドをキューに格納する格納ステップとを有することを特徴とする。
また、本発明の他の形態は、キャッシュメモリ装置における処理方法であって、複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付ステップと、前記コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行う処理ステップが存在し、コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンのうち所定の種類のコマンドに対するすべての前記第1ステートマシンが使用されているときに、当該種類のコマンドを受け付けた場合に、受け付けた前記コマンドを前記キューに格納する格納ステップとを有することを特徴とする。
本発明にかかるキャッシュメモリ装置によれば、コマンド受付手段が、複数のプロセッサそれぞれから複数のコマンドを受け付け、処理手段が、コマンド受付手段が受け付けたコマンドに対応する処理を行い、格納手段が、処理手段がコマンドを処理しているときに、処理手段による処理中のコマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドをコマンド受付手段が受け付けた場合に、コマンド受付手段が受け付けたコマンドをキューに格納するので、メモリアクセスに起因した電力消費を低減し、排他的アクセスを可能とすることができるという効果を奏する。
また、本発明の他の形態にかかるキャッシュメモリ装置によれば、コマンド受付手段が、複数のプロセッサそれぞれから複数のコマンドを受け付け、処理手段が、コマンド受付手段が受け付けたコマンドに対応する処理を行い、複数の第1ステートマシンが、コマンドの種類ごとに設けられ、各コマンドの処理状態を監視し、格納手段が、所定の種類のコマンドに対するすべての第1ステートマシンが使用されているときに、コマンド受付手段が当該種類のコマンドを受け付けた場合に、コマンド受付手段が受け付けたコマンドをキューに格納するので、プロセッサが再度コマンドを送付する必要がなくなり、プロセッサとキャッシュメモリ装置間の通信を低減し、電力消費の低減という効果を奏する。
また、本発明の他の形態にかかる処理方法によれば、コマンド受付ステップにおいて、複数のプロセッサそれぞれから複数のコマンドを受け付け、処理ステップにおいて、コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行い、格納ステップにおいて、処理ステップにおいてコマンドを処理しているときに、処理中のコマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドを受け付けた場合に、受け付けたコマンドをキューに格納するので、メモリアクセスに起因した電力消費を低減し、排他的アクセスを可能とすることができるという効果を奏する。
また、本発明の他の形態にかかる処理方法によれば、コマンド受付ステップにおいて、複数のプロセッサそれぞれから複数のコマンドを受け付け、処理ステップにおいて、コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行い、格納ステップにおいて、コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンのうち所定の種類のコマンドに対するすべての第1ステートマシンが使用されているときに、当該種類のコマンドを受け付けた場合に、受け付けたコマンドをキューに格納するので、プロセッサが再度コマンドを送付する必要がなくなり、プロセッサとキャッシュメモリ装置間の通信を低減し、電力消費の低減という効果を奏する。
以下に、本発明にかかるキャッシュメモリ装置およびキャッシュメモリ装置における処理方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
図1は、実施の形態にかかるバスシステム1の全体構成を示す図である。バスシステム1は、8つのプロセッサ10A〜10Hと、I/Oデバイス50と、L2(レベル2)キャッシュ30と、メモリコントローラ40と、内蔵EDRAM43と、外部SDRAM44とを備えている。8つのプロセッサ10A〜10Hは、L2キャッシュ30に接続している。さらに、I/Oデバイス50がL2キャッシュ30に接続している。L2キャッシュ30は、さらにメモリコントローラ40に接続している。
アドレス情報は、プロセッサ10A〜10Hから、L2キャッシュ30に伝達される。L2キャッシュ30は、プロセッサ10A〜10Hから要求される情報がL2キャッシュ30にキャッシュされているかどうかをチェックし、チェックの結果に応じて所定の動作を行う。キャッシュされていない場合には、メモリコントローラ40がアドレスに応じて内蔵EDRAM43および外部SDRAM44をアクセスする。
なお、アドレス情報には、プロセッサが要求するメモリのアドレスの他、コマンドの種類(ReadまたはWriteなど)、データ転送の大きさ(キャッシュラインまたはバイトなど)などの情報が含まれており、これらの情報が同時に転送される。
L2キャッシュ30は、複数のプロセッサ10A〜10Hから共有されている。複数のプロセッサ10A〜10Hそれぞれがコマンドを発生するので、L2キャッシュは、これらすべてのコマンドを処理する必要がある。なお、各プロセッサ10A〜10Hには、L1キャッシュ11A〜11Hが設けられており、L1キャッシュにミスした要求がコマンドとしてL2キャッシュ30に伝達される。
図2は、L2キャッシュ30におけるアドレスパスを示す図である。各プロセッサ10A〜10Hからのコマンドはバスのアービトレーション機構を介して、L2キャッシュ30のコマンド受付部301に入力される。最大でも2サイクルに1回しかL2コントローラにコマンドが入力されないような制限を設けるのが好ましい。具体的には、例えばバスの周波数をL2コントローラの周波数の1/2にしてもよい。これにより、ハードウェアの機構を簡単にすることができる。
L2キャッシュ30に入力されたアドレスのうち下位アドレスは、L2キャッシュ30のタグのインデックスとして使用され、タグRAM302に送られる。また、上位アドレスはタグRAM302から出力された結果と比較される。本実施の形態においては、4Wayのキャッシュが実現されている。
ディスパッチ処理部304により、タグを引いた結果に応じてL2コントローラのステートマシンがディスパッチされる。本実施の形態においては、ステートマシンとして、4つのRCマシン306、2つのCPBKマシン308、および2つのLockマシン310が用意されている。RCマシン306は、L2キャッシュ30へのRead要求を扱うステートマシンである。CPBKマシン308は、L2キャッシュ30へのL1キャッシュ11A〜11Hからのコピーバックを扱うステートマシンである。Lockマシン310は、L2キャッシュ30へのロック要求を扱うステートマシンである。
それぞれのステートマシンは一つのコマンドに対応して動作する。L2キャッシュ30は同時に複数のコマンドを扱う。したがって、複数のステートマシンが同時に動作する場合がある。
アドレスバッファ(OutstandingAddressBuffer)320として、4つのRCマシン306、2つのCPBKマシン308および2つのLockマシン310それぞれに対応するレジスタが設けられている。ステートマシンがディスパッチされると同時に、アドレスバッファ320の対応するレジスタには、それぞれのステートマシンが処理しているアドレスが保持される。そして、それぞれのステートマシンが終了すると、対応するアドレスバッファ320のレジスタのアドレスがクリアされる。
アドレスバッファ320と、アドレスバッファ320のレジスタそれぞれに対応して設けられた比較器322は、L2コントローラが処理中のアドレス(すなわちRCマシン、CPBKマシン、Lockマシンのいずれかが処理中のアドレス)と同一のアドレスに対する新たな要求がL2コントローラに入ってきたことを検出するために使用される。
プロセッサ10A〜10Hからコマンドが送られると、このコマンドのアドレスの上位ビットが比較器322に送られる。比較器322において、対応するレジスタに格納されている各アドレスの上位ビットと比較される。比較器322のうち一つが一致を示すと、そのコマンドおよびアドレスはリサイクルキュー(RecycleQ4entry)330に格納される。
先行するコマンド、すなわち実行中のコマンドが終了すると、リサイクルキュー330に格納されているコマンドおよびアドレスはリサイクルキュー330から取り出される。そして、L2コントローラが実行を開始し、リサイクルキュー330から取り出されたアドレスの上位ビットは、再び比較器322に送られる。そして、一致するアドレスがなければ、ディスパッチ処理部304によりコマンドに対応するディスパッチが行われる。
なお、リサイクルキュー330にコマンド等が投入されるのは、比較器322が一致を示した場合だけではない。例えば、RCマシン、CPBKマシンおよびLockマシンのうちいずれかがFullの状態である場合に、Fullの状態を示すマシンに対するコマンドが投入された場合にも、コマンドとアドレスがリサイクルキュー330に投入される。前述したようにコマンドは2サイクルに1回しかL2コントローラに投入されない。したがって、Fullが判定されたときには、次のコマンドがシャドウレジスタ324に入っており、このコマンドがリサイクルキュー330に格納される。リサイクルキューがFullの場合には、プロセッサからL2コントローラへのパイプラインをストールさせる。すなわち、L2コントローラへのコマンド投入はできない。
図3は、リサイクルキュー330の構成を示す図である。リサイクルキュー330には、4つのエントリ332が設けられている。各エントリ332には、バリッド領域、アドレス/コマンド領域、RC#領域が設けられている。アドレス/コマンド領域には、アドレスおよびコマンドが格納される。アドレス/コマンド領域にアドレスおよびコマンドが格納されると、バリッド領域に1が格納される。RC#領域には、コマンドがいずれの原因でエントリに入れられたのかを示す情報、すなわちステートマシンを識別する情報が入れられる。
本実施の形態においては、合計8個のステートマシンがディスパッチされることから、RC#には8ビットが割り当てられる。具体的には、ビット7がRCマシン3に対応している。また、ビット6がRCマシン2に、ビット5がRCマシン1に、ビット4がRCマシン0に、ビット3がCPBKマシン1に、ビット2がCPBKマシン0に、ビット1がLockマシン1に、ビット0がLockマシン0にそれぞれ対応している。
例えば、RCマシン2のアドレスにマッチしてリサイクルキュー330に入れられた場合には、アドレス/コマンド領域にはコマンドとアドレスがセットされ、対応するRC#領域においてビット6が立てられる。
また、例えばRCマシンが4つとも使用されている状態などRCマシン、CPBKマシンおよびLockマシンのいずれかがFullの状態で、リサイクルキューに入れられる場合には、対応するエントリ332のRC#領域はすべてのビットに1が立てられる。
フリーリスト331は、4つのエントリ332に対応した4ビットが割り当てられたレジスタである。エントリが空いているときは対応するビットは0となる。エントリが使用されているときは対応するビットは1となる。
リサイクルキュー330にアドレスが投入されると、フリーリスト331のレジスタのうち0になっているビットであって、最もLSB(Least Significant Bit)側のビットに1がセットされる。エントリ管理部333は、フリーリスト331のうち1がセットされたビットであって最もLSB側のビットに対応するエントリ332に情報をセットする。さらに、4つのシフトレジスタ334のうち、情報がセットされたエントリ332に対応するシフトレジスタのMSB(Most Significant Bit)に1をセットする。そして、MSBに1をセットした以外の3つのシフトレジスタ334すべてを右シフトする。
このように、シフトレジスタ334は、エントリに情報がセットされるごとに右シフトするので、ビット位置がより右にあるシフトレジスタに対応するエントリがより古いものとなる。デコーダ335は、シフトレジスタ334のビット位置にしたがい、より古いエントリを特定することができる。
次に、リサイクルキュー330に実行可能なコマンドが存在するか否かを判断する処理について説明する。RCマシン、CPBKマシン、Lockマシンのいずれかの動作が終わると、リサイクルキュー330に入れられていたコマンドのうちいずれかのコマンドが選択される。具体的には、リサイクルキュー330のすべてのエントリ332のRC#領域と、終了したステートマシンに対応するビットとが比較される。終了したステートマシンに対応するビットとRC#領域のビットとが一致する場合には、一致したエントリに対応するレディレジスタ336に1がセットされる。すなわち、このRC#領域に対応するコマンドが選択される。
このように、レディレジスタ336が1になっていることにより、対応するエントリに再実行可能な候補がセットされていることがわかる。レディレジスタ336の情報により、リサイクルキュー330に実行可能なコマンドが存在するか否かを判断することができる。
エントリ332には、同一のステートマシンが複数セットされている場合がある。すなわち、レディレジスタ336が1になっているエントリ332が複数ある場合がある。この場合には、デコーダ335は、複数のコマンドの中からL2コントローラが再実行するコマンドとしていずれか1つを選択する。
具体的には、シフトレジスタ334のビットに基づいて、コマンドを選択する。前述のように、各エントリ332に情報がセットされると対応するシフトレジスタ334に1が立つ。そして、新たなエントリがセットされる度に右シフトされる。したがって、4つのシフトレジスタ334のうち最も右側にビットが立っているものに対応するエントリにセットされている情報が最も古いものである。本実施の形態においては、エントリにセットされたまま永遠に実行されないことを防ぐべく、最も古いエントリを選択することとする。
リサイクルキュー330のエントリからコマンドが出力される際には、選択されたエントリに対応するレディレジスタ336のビット、対応するフリーリスト331のビットおよび対応するシフトレジスタ334のビットがすべてリセットされる。また選択されたエントリのバリッド領域は1から0に変更される。そして、選択されたエントリのコマンド、アドレスの情報がL2コントローラにより再実行される。
L2コントローラは、プロセッサのコマンドとリサイクルキュー330に入れられていたコマンドのいずれから実行するか選択する必要がある。ここでは、リサイクルキュー330に実行可能なコマンドがある場合には、必ずリサイクルキュー330から選択することとする。この処理は、コマンド受付部301により行われる。なお、コマンド受付部301はリサイクルキュー330のコマンドの読出手段としても機能する。
本実施の形態においては、プロセッサ10A〜10HからL2コントローラへのパイプがストールするのは、次の2つのケースである。すなわち、リサイクルキュー330がFullの場合およびリサイクルキュー330に実行可能なコマンドが存在する場合である。
図4は、シフトレジスタにおいて最も右側に1が立っているものを選択するためのデコードロジックを示す図である。図4に示す例においては、siftが1になるとすべてのビットは右シフトを行う。実施の形態にかかるリサイクルキュー330は4エントリであるので、シフトレジスタも4組設けられている。
リサイクルキュー330のそれぞれのエントリに対応するレディレジスタ336のビットは、それぞれReady0からReady3に接続される。IN0からIN3は、シフトレジスタ334の入力である。リサイクルキュー330に新たなエントリがセットされると対応するIN入力に1が入る。Out0からOut3までは対応するエントリが選択されたときに1になる。具体的には、Readyが1のエントリのシフトレジスタ336の中で、最も右側に1が立っているものが選択される。
リサイクルキュー330の構成は、実施の形態に限定されるものではない。例えば、リサイクルキュー330のエントリ数は、必要とされる性能に応じて決定されればよく、実施の形態に限定されるものではない。リサイクルキュー330のエントリ数が少な過ぎる場合には、容易にプロセッサからL2コントローラへのパイプラインがストールし、性能が低下する。エントリ数が多すぎる場合には、ストールの可能性は少なくなるがリサイクルキュー330の使用効率が低くなり面積の無駄となる。これらの観点から適当なエントリ数を決定するのが好ましい。
また、実施の形態にかかるリサイクルキュー330においては、タグを引いて実行できることが確実なオペレーションのみをリサイクルキュー330から引き出していたが、ハードウェアの構成を簡単にすべく、シフトレジスタ334にかえて単なるFIFO構造を用いてもよい。このように、リサイクルキュー330は、各エントリのうち1つを選択できるものであればよい。ただし、FIFO構造においては、FIFOから出されたエントリがアドレスバッファ320のアドレスにヒットし、再びリサイクルキュー330に入れられる場合がある。
さらに、本実施の形態においては、古いエントリが永遠にリサイクルキュー330にとどまるスタベーションを防ぐべく、リサイクルキュー330に入れられた時期の古いものから順に、リサイクルキュー330から引き出したが、他の例としては、ある一定の時間がたったエントリは優先して取り出すこととしてもよい。このように、永遠に選択されないエントリが生じないような構成であればよい。
以上のように、本実施の形態によれば、処理中のアドレスと同一のアドレスに対する要求はリサイクルキュー330に入れられ、同一アドレスに対する処理が終了した後に再実行されるので、L2コントローラが同時に2つ以上の同一のアドレスに対する処理を行わないことが保証される。
また、本実施の形態によれば、アクセスするアドレスが同一の場合には、リサイクルキュー330に入れられ、メモリアクセスを行わないので、性能が向上し、消費電力を低減することができる。
次に、ロック機構について説明する。上述のように、実施の形態にかかるL2コントローラにおいては、同一のアドレスに対する要求が2つ以上起こらないことが保証されている。したがってプロセッサ10A〜10Hからの特定のコマンドがL2キャッシュ30のデータを排他的に読み書きできれば、ロック機構を実現することができる。
本実施の形態においては、プロセッサ10A〜10Hからのロック命令をL1キャッシュ11A〜11Hを介さずに直接L2キャッシュ30に伝える。L2キャッシュ30では、ロック命令用のステートマシン(Lockマシン)を起動する。Lockマシンは、L2キャッシュ30にヒットした場合はL2キャッシュ30の内容を読み出し、さらにL2キャッシュ30の内容を更新する。これと同時に、L2キャッシュ30から読み出した内容をプロセッサ10A〜10Hに送る。L2キャッシュ30にミスした場合は、メモリ43,44から読み出した内容をプロセッサ10A〜10Hに送り、読み出した内容を更新してL2キャッシュ30に書き込む。
より具体的には、プロセッサ10A〜10Hのロック命令としてTest&Set命令を実装する。プロセッサ10A〜10Hは、Test&Set命令を検出すると、L1キャッシュ11A〜11HにミスしたものとみなしてL2キャッシュ30にアドレスとコマンドを転送する。
なお、ハードウェアを簡単にするために、Test&Setはキャッシュライン中で1箇所のみに対して行われることとする。例えば、Test&Setはキャッシュライン中の最も小さいアドレスのバイトに対して行われ、バイト中の最下位ビットが1にセットされることとする。Test&Setが行われるキャッシュラインの最下位ビット以外のデータは、意味の無いデータとなっている。
L2キャッシュ30では、Test&Set命令に対して次のような動作が行われる。すなわち、まず、L2キャッシュ30のタグをチェックする。この時点でリサイクルキュー330の働きにより同じアドレスに対して動作しているステートマシンはないことが保証されている。L2キャッシュ30においてヒットした場合には、ヒットしたL2キャッシュ30のデータをプロセッサ10A〜10Hに送る。次に、上述のようにキャッシュライン中の最下位ビットが1にセットされたデータをキャッシュラインに書き込む。プロセッサ10A〜10Hでは書き込む前のデータを読むことができる。L2キャッシュ30においてミスした場合には、メモリ43,44からデータをL2キャッシュ30に読み込む。次にL2キャッシュ30のデータをプロセッサ10A〜10Hに送る。さらに、キャッシュライン中の最下位ビットに1をセットする。プロセッサ10A〜10Hではこの1を書き込む前のデータを読むことができる。
図5は、L2キャッシュ30におけるデータパスを示す図である。以下、7つのケースにおけるデータの流れを説明する。
1. L2キャッシュ30にReadでヒットした場合
2. L2キャッシュ30にReadでミスした場合
3. L2キャッシュ30にWriteでヒットした場合
4. L2キャッシュ30にWriteでミスした場合
5. L2データメモリ350からのコピーバック
6. L2キャッシュ30にロック命令(Test&Set)でヒットした場合
7. L2キャッシュ30にロック命令(Test&Set)でミスした場合
L2キャッシュ30にReadでヒットした場合には、L2データメモリ350のアドレスがアドレス系からL2データメモリ350に供給される。このアドレスは対応するRCマシンが示しているアドレスである。L2データメモリ350から読み出されたデータはプロセッサ10A〜10Hへ送られる。
L2キャッシュ30にReadでミスした場合には、メモリコントローラ40より送られたデータは、MRLDバッファ352、MUX(マルチプレクサ)354、ロック用ロジック356を経由してL2データメモリ350に書き込まれる。L2データメモリ350のアドレスは対応しているRCマシンが示しているアドレスである。L2データメモリ350の内容は、読み出され、プロセッサ10A〜10Hに送られる。
L2キャッシュ30にWriteでヒットした場合には、プロセッサ10A〜10HよりMUX354およびロック用ロジック356を経由してL2データメモリ350にデータが書き込まれる。MUX354は、プロセッサ10A〜10Hからのデータとメモリコントローラ40からのデータのどちらかのパスを選択する。L2データメモリ350のアドレスは対応するCPBKマシンが示しているアドレスである。
L2キャッシュ30にWriteでミスした場合には、プロセッサ10A〜10Hからのデータはバイパスバッファ360、MUX362を経由してメモリコントローラ40に送られる。L2データメモリ350に書き込まれることはない。
L2データメモリ350からのコピーバックは、L2にReadでミスした場合、またはロック命令がミスした場合に行われる。新たなキャッシュラインを確保するためコピーバックが必要な場合には、L2データメモリ350の内容が読み出され、MCPBKバッファ364およびMUX362を経由してメモリコントローラ40に送られる。L2データメモリ350のアドレスはMCPBKマシンが示すアドレスである。
L2キャッシュ30にロック命令(Test&Set)でヒットした場合には、L2データメモリ350から読み出されたデータは、プロセッサ10A〜10Hに送られる。次にロック用ロジック356はデータとして最下位ビットが1となったデータを用意し、L2データメモリ350に書き込む。L2データメモリ350のアドレスは対応するLockマシンのアドレスである。
L2キャッシュ30にロック命令(Test&Set)でミスした場合には、メモリコントローラ40からのデータは、MRLDバッファ352、MUX354、ロック用ロジック356を経由してL2データメモリ350に書き込まれる。次にL2データメモリ350のデータが読み出されてプロセッサ10A〜10Hに送られる。最後にロック用ロジック356はデータとして最下位ビットが1となったデータを用意し、L2データメモリ350に書き込む。L2データメモリ350のアドレスは対応するLockマシンのアドレスである。ロック用ロジック356は、最下位ビットが1となったデータを生成するためのロジックである。
なお、本実施の形態にかかるL2キャッシュ30のアドレスパスおよびデータパスを構成する機構およびコマンドに応じた処理を行う部分は、処理手段に相当する。
図6は、ロック用ロジック356の処理を説明するための図である。図に示すように、ロック用ロジック356は、通常時は入力をそのまま出力するが、ロックのためのデータを書き込むときには出力に1を出す。このように、実施の形態にかかるロック用ロジック356は、ロックをかけるアドレスの内容がどのような内容であっても1を上書きするものであるが、これにかえて、例えば、Compare&Swapその他のロック用オペレーションを利用してもよい。
次に、各ステートマシンの動作について説明する。図7は、RCマシンの動作を説明するための図である。RCマシンの初期状態はIdleである。そして、タグを引いた結果に応じた動作が行われる。タグを引いた結果としては3つの場合がある。すなわち、ヒットの場合、ミスでキャッシュラインがリプレースなしの場合、ミスでキャッシュラインのリプレースがある場合である。
ヒットの場合には、L2データメモリ350がアクセスされていないときに、RCマシンからL2データメモリ350にアドレスを送りL2データメモリ350からデータを読み出す。そして、プロセッサ10A〜10Hにデータを送って終了する。
ミスでリプレースなしの場合は、MRLDマシンを起動する。MRLDマシンはメモリコントローラ40よりL2データメモリ350にデータを書き込むためのステートマシンである。MRLDマシンが他のステートマシンと共用されている場合は、MLRDマシンが起動できる状態になるまで待つ。MRLDマシンが起動できる状態になるとMRLDマシンを起動し、MRLDマシンが終了するまで待つ。L2データメモリ350にデータが書き込まれるとMRLDマシンは終了する。その後は、ヒットの場合と同様にL2データメモリ350より読み出したデータをプロセッサ10A〜10Hに転送する。
ミスでリプレースありの場合は、リプレースするキャッシュラインをMCPBKマシンを使用してメモリコントローラ40に書き出す必要がある。MCPBKマシンは、キャッシュラインのデータをメモリ43,44に書き出すためのステートマシンである。MCPBKマシンが他のステートマシンと共用されている場合は、MCPBKマシンが起動できるまで待つ。MCPBKマシンが起動できる状態になると、MCPBKマシンを起動し、MCPBKマシンが終了するまで待つ。MCPBKマシンが終了した後は、ミスでリプレースなしの場合と同様のパスとなる。
図8は、CPBKマシンの動作を説明するための図である。CPBKマシンの初期状態はIdleである。タグを引いた結果に応じた動作が行われる。タグを引いた結果としては2つの場合がある。すなわち、ヒットの場合とミスの場合である。
ヒットの場合には、L2データメモリ350が他のステートマシンに使われているかどうか判定する。使われていなければ図8に示す一連の動作により要求元のプロセッサからデータを転送し、タグを更新する。
ミスの場合には、データをL2データメモリ350には書き込まず、バイパスバッファ360を経由してメモリ43,44に書き込む。まず、プロセッサ10A〜10Hからバイパスバッファ360への書き込みでは他のCPBKマシンがバイパスバッファ360を使用していると書き込めないのでバイパスバッファ360の空きを待つ。バイパスバッファ360が空き、プロセッサからの書き込みが終わると、図8に示すようにメモリ43,44への書き込みを行う。
なお、メモリ43,44への書き込み要求以降の動作は、一度にCPBKマシンまたはMCPBKマシンのうち1つのステートマシンのみしか行うことができない。そこで、インターロックでは、アービタを利用してこの調停を行う。
図9は、MRLDマシンの動作を説明するための図である。上述のように、MRLDマシンは、RCマシンまたはLockマシンから呼び出される。複数のRCマシンと複数のLockマシンが存在するので、MRLDマシンを呼び出すためには調停が必要になることがある。調停には通常キューが用いられる。キューにより古い要求から順にMRLDマシンを呼び出せばよい。他のRCマシンおよびLockマシンがMRLDマシンを使用しているときは、終了するまで待機する。
MRLDマシンは、呼び出されるとメモリコントローラ40に対して読み出しのリクエストを出し、データがMRLDバッファ352に書き込まれるのを待つ。次に、L2データメモリ350の空きを待ち、使用されていなければMRLDバッファ352からL2データメモリ350へのデータの書き込みを行い、さらにタグを更新する。
図10は、MCPBKマシンの動作を説明するための図である。MCPBKマシンは、RCマシンまたはLockマシンから呼び出される。複数のRCマシン、およびLockマシンが存在するため、MCPBKマシンを呼び出すためには調停が必要になることがある。調停には通常キューが用いられる。キューにより古い要求から順にMCPBKマシンを呼び出せばよい。他のRCマシンおよびLockマシンがMCPBKマシンを使用しているときは、それらが終了するまで待機する。
MCPBKマシンは、呼び出されるとまずL2データメモリ350の空きがあるときはL2データメモリ350よりデータを読み出してMCPBKバッファ364に入れる。次にメモリコントローラ40に対して書き込み要求を行う。CPBKマシンもメモリコントローラ40に書き込み要求を行うので調停が必要である。具体的には、アービタにより調停を行う。メモリコントローラ40に対する書き込み要求が承認されると、MCPBKバッファ364からメモリコントローラ40へデータ転送を行う。なお、タグの更新は、RCマシンにより行われるのでここでは行わない。
図11は、Lockマシンの動作を説明するための図である。Lockマシンの動作は、RCマシンの動作とほぼ同様であるが、プロセッサ10A〜10Hにデータを送った後、最下位ビットに1を書き込む処理が追加されている。上記各機構によりL2キャッシュ30に確保したキャッシュラインを使用してロック(Test&Set)のメカニズムを実現することができる。
ここでは、複数のプロセッサがロックの取り合いを起こした場合について説明する。例えば、3つのプロセッサ10A〜10Cがアドレス1000番地のロックをとる場合、最初にアドレス1000番地に0を書き込んでおく。そして、プロセッサ10A〜10Cは、Test&Setを使用して1000番地をアクセスする。ここでは、第1プロセッサ10Aが最初にL2キャッシュ30に到達したとする。第1プロセッサ10Aが、L2キャッシュ30にミスすると、L2キャッシュ30はメインメモリから1000番地の値0を読み出し、L2データメモリ350に格納する。そして、L2キャッシュ30上の1000番地の値は1に更新される。プロセッサ10AはL2キャッシュ30から値0が返ってくることによりロックに成功したことがわかる。そして、第1プロセッサ10Aは、所定の処理を開始する。
後からL2キャッシュ30に到達した第2プロセッサ10Bおよび第3プロセッサ10Cのコマンドは、リサイクルキュー330に入れられ、順に処理が行われる。第1プロセッサ10Aのコマンドに対する処理が完了した後、第2プロセッサ10Bのコマンドがリサイクルキュー330より出されてタグが引かれると今度はヒットする。ただし、このとき、L2キャッシュ30の1000番地は、第1プロセッサ10Aによりロックされ、1が書き込まれているので、第2プロセッサ10Bは、L2キャッシュ30の1000番地に入っている値1をもらう。
そして、L2キャッシュ30は1000番地の値に1を上書きする。第2プロセッサ10Bは値1が返ってくることによりロックの失敗を知る。第3プロセッサ10Cのコマンドも同様にリサイクルキュー330から実行され、値1が返されてロックの失敗を知る。
ロックに成功した第1プロセッサ10Aは処理が終わると0を1000番地に書き込み、1000番地をフラッシュすることでL2キャッシュ30のロックに関わるアドレス1000番地を再び0に戻す。これにより第1プロセッサ10Aによるロックが解除される。
なお、本実施の形態にかかるロック機構においては、L2データメモリに1を書き込むことによりロックを行ったが、他の例としては、L2データメモリからデータを読み出し、1を加えて書き込むこととしてもよい。このように、1だけインクリメントされた値がL2データメモリに書き込まれればよく、そのための処理は実施の形態に限定されるものではない。
次に、複数のステートマシンが一つのステートマシンを起動する場合に、どのような機構で調停が行われるかを説明する。本実施の形態においては、例えばRCマシンやLockマシンはL2キャッシュ30にミスしたときにMRLDマシンを呼び出す。しかし、MRLDマシンは一つしか存在しないので、複数のステートマシン間で調停が必要となる。
図12は、このように複数のステートマシンで一つのステートマシンを起動する際の調停の機構を示す図である。IdleからMRLDマシンを要求する状態に遷移するパルスは1サイクルだけ出る、MRLDマシンを使うステートマシンは全部で6個存在するのでこれらは3ビットでエンコードできる。なお、ステートマシンは1サイクルに1つしかディスパッチされないのでエンコーダ370の入力は1−hotコードである。
エンコーダ370によりエンコードされた値がデュアルポートメモリ372に書き込まれ、ライトポインタ374がインクリメントされる。デュアルポートメモリ372には、要求が古い順にFIFO形式で値が格納されることになる。なお、書き込まれた値を適切なタイミングで出力するものであればよく、他の例としては、シフトレジスタであってもよい。
デュアルポートメモリ372の出力は再びデコーダ376によりデコードされ1−hotコードとなる。そして、要求したステートマシンにReady信号が返される。ただし、ライトポインタ374とリードポインタ378とが一致した場合、すなわちデュアルポートメモリ372で構成したFIFOに値が入っていないときは、Ready信号は出力されない。MRLDマシンが終了すると、リードポインタ378はインクリメントされ、次にMRLDマシンを要求しているステートマシンのMRLDマシン要求が処理される。
次に、複数のステートマシンが1つの機器を共有する際に、どのような機構で調停が行われるかを説明する。本実施の形態においては、ステートマシンがL2データメモリ350の空き待ちをする場合が多数ある。ステートマシンは、他のステートマシンに使用されているかどうか、すなわちデータメモリ350の空きを検出し、空きを待っているステートマシンが調停により順にデータメモリ350を確保する。
図13は、ステートマシンがデータメモリ350を確保する機構を示す図である。本実施の形態にかかるバスシステム1においては、4つのRCマシン、2つのCPBKマシン、2つのLockマシン、1つのMRLDマシンおよび1つのMCPBKマシンのそれぞれがL2データメモリ350に対し要求を行う。
各ステートマシンからの要求があると、各マシンに対応して設けられたフリップフロップ(SetResetFlipFlop)380がセットされる。そして、選択回路(Select leftmost)382により、複数の要求から一つだけが選択される。選択回路382は、最も左のビットを選択する回路である。選択回路382は、1つの要求のみを選択するので、同時に2つのマシンから要求があった場合であっても、そのうち1つの要求のみを選択することができる。
選択回路382により選択された要求に対応するフリップフロップ380はリセット信号によりリセットされる。なお、選択回路382の出力は1サイクルにつき1ビットずつとなっている。この出力は、エンコーダ384によりデュアルポートメモリ386に入力される。
デュアルポートメモリ386はFIFOを構成するようにライトポインタ388およびリードポインタ390が備えられている。なお、他の例としては、シフトレジスタであってもよい。
エンコーダ384からデュアルポートメモリ386に値が入るとライトポインタ388が1だけインクリメントされる。FIFOの中身はL2データメモリ350が使用できる順番に並んでいる。すなわち、FIFOの先頭が最初にL2データメモリ350を使用する。デュアルポートメモリ386の出力は、デコーダ392により再び各ステートマシンに対応するL2データメモリ350のReady信号となる。Ready信号が出されると、ステートマシンの種別に応じたマシンタイマ(RCマシンタイマ、Lockマシンタイマ、CPBKマシンタイマ、MLRDマシンタイマ、MCPBマシンタイマ)394が動作する。
マシンタイマ394の動作中はFIFOの先頭が進まず、他のステートマシンにL2データメモリ350のReady信号を出すのを妨げる。マシンタイマ394はステートマシンの種別に応じた値が設定されている。Ready信号を出してから設定されたサイクル数の間だけ出力が1になる。
マシンタイマ394が終了すると、出力が1から0になったのを検出部(NegativeEdgeDetecter)396が検出し、リードポインタ390がインクリメントされる。これにより、FIFOの次の要素がReadyとなる。FIFOが空のときはリードポインタ390とライトポインタ388の値を比較し、一致しているのでReady信号は出ないように構成されている。
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
実施の形態にかかるバスシステム1の全体構成を示す図である。 L2キャッシュ30におけるアドレスパスを示す図である。 リサイクルキュー330の構成を示す図である。 シフトレジスタにおいて最も右側に1が立っているものを選択するためのデコードロジックを示す図である。 L2キャッシュ30におけるデータパスを示す図である。 ロック用ロジック356の処理を説明するための図である。 RCマシンの動作を説明するための図である。 CPBKマシンの動作を説明するための図である。 MRLDマシンの動作を説明するための図である。 MCPBKマシンの動作を説明するための図である。 Lockマシンの動作を説明するための図である。 複数のステートマシンで一つのステートマシンを起動する際の調停の機構を示す図である。 ステートマシンがデータメモリ350を確保する機構を示す図である。
符号の説明
10A〜10H プロセッサ
11A〜11H L1キャッシュ
30 L2キャッシュ
40 メモリコントローラ
43 内蔵EDRAM
44 外部SDRAM
301 コマンド受付部
302 タグRAM
304 ディスパッチ処理部
306 RCマシン
308 CPBKマシン
310 Lockマシン
320 アドレスバッファ
322 比較器
324 シャドウレジスタ
330 リサイクルキュー
331 フリーリスト
332 エントリ
333 エントリ管理部
334 シフトレジスタ
335 デコーダ
336 レディレジスタ
350 L2データメモリ
352 MRLDバッファ
354 MUX
356 ロック用ロジック
360 バイパスバッファ
362 MUX
364 MCPBKバッファ
370 エンコーダ
372 デュアルポートメモリ
374 ライトポインタ
376 デコーダ
378 リードポインタ
380 フリップフロップ
382 選択回路
384 エンコーダ
386 デュアルポートメモリ
388 ライトポインタ
390 リードポインタ
392 デコーダ
394 マシンタイマ
396 検出部

Claims (11)

  1. 複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付手段と、
    前記コマンド受付手段が受け付けたコマンドに対応する処理を行う処理手段と、
    前記処理手段が前記コマンドを処理しているときに、前記処理手段による処理中の前記コマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドを前記コマンド受付手段が受け付けた場合に、前記コマンド受付手段が受け付けた前記コマンドをキューに格納する格納手段と
    を備えたことを特徴とするキャッシュメモリ装置。
  2. 前記処理が完了した場合に、前記キューに格納されている前記コマンドを読み出す読出手段をさらに備え、
    前記処理手段は、前記読出手段により読み出された前記コマンドに対する処理を行うことを特徴とする請求項1に記載のキャッシュメモリ装置。
  3. 前記読出手段は、前記キューに複数のコマンドが格納されている場合に、前記キューに格納された時期が最も古いコマンドから順に読み出すことを特徴とする請求項2に記載のキャッシュメモリ装置。
  4. 前記処理手段は、前記コマンドに対するコマンド処理として、ロック処理を行うことを特徴とする請求項2または3に記載のキャッシュメモリ装置。
  5. 前記コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンをさらに備え、
    前記処理手段は、前記コマンドに対応する前記第1ステートマシンを動作させ、
    前記読出手段は、前記第1ステートマシンの処理が終了した場合に、前記キューに格納されている前記コマンドを読み出すことを特徴とする請求項2から4のいずれか一項に記載のキャッシュメモリ装置。
  6. 前記格納手段は、所定の種類のコマンドに対するすべての前記第1ステートマシンが使用されているときに、前記コマンド受付手段が当該種類のコマンドを受け付けた場合に、前記コマンド受付手段が受け付けた前記コマンドを前記キューに格納することを特徴とする請求項5に記載のキャッシュメモリ装置。
  7. 前記第1ステートマシンにより呼び出される第2ステートマシンであって、前記第1ステートマシンの数より少ない数の前記第2ステートマシンと、
    前記第2ステートマシンを呼び出すべき複数の前記第1ステートマシンの待ち行列を作り、前記待ち行列に格納された時期が最も古い前記第1ステートマシンから順に前記第2ステートマシンを呼び出し可能とする調停手段と
    をさらに備えたことを特徴とする請求項5または6に記載のキャッシュメモリ装置。
  8. 前記第1ステートマシンにより利用される機器であって、前記第1ステートマシンの数より少ない数の前記機器と、
    前記機器を利用すべき複数の前記第1ステートマシンの待ち行列を作り、前記待ち行列に格納された時期が最も古い前記第1ステートマシンから順に前記機器を利用可能とする調停手段と、
    前記機器を利用している前記第1ステートマシンの種類に応じた利用時間を管理するタイマと
    をさらに備え、
    前記調停手段は、前記タイマが前記利用時間をカウントした場合に、前記機器を利用可能であると判断し、前記待ち行列に格納された時期が最も古い前記第1ステートマシンに対し、前記機器を利用可能とすることを特徴とする請求項5から7のいずれか一項に記載のキャッシュメモリ装置。
  9. 複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付手段と、
    前記コマンド受付手段が受け付けたコマンドに対応する処理を行う処理手段と、
    コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンと、
    所定の種類のコマンドに対するすべての前記第1ステートマシンが使用されているときに、前記コマンド受付手段が当該種類のコマンドを受け付けた場合に、前記コマンド受付手段が受け付けた前記コマンドを前記キューに格納する格納手段と
    を備えたことを特徴とするキャッシュメモリ装置。
  10. キャッシュメモリ装置における処理方法であって、
    複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付ステップと、
    前記コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行う処理ステップと、
    前記処理ステップにおいて前記コマンドを処理しているときに、処理中の前記コマンドに対するキャッシュラインアドレスと同一のキャッシュラインアドレスに対するコマンドを受け付けた場合に、受け付けた前記コマンドをキューに格納する格納ステップと
    を有することを特徴とする処理方法。
  11. キャッシュメモリ装置における処理方法であって、
    複数のプロセッサそれぞれから複数のコマンドを受け付けるコマンド受付ステップと、
    前記コマンド受付ステップにおいて受け付けたコマンドに対応する処理を行う処理ステップと、
    コマンドの種類ごとに設けられ、各コマンドの処理状態を監視する複数の第1ステートマシンのうち所定の種類のコマンドに対するすべての前記第1ステートマシンが使用されているときに、当該種類のコマンドを受け付けた場合に、受け付けた前記コマンドを前記キューに格納する格納ステップと
    を有することを特徴とする処理方法。
JP2006150445A 2006-05-30 2006-05-30 キャッシュメモリ装置および処理方法 Expired - Fee Related JP4208895B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006150445A JP4208895B2 (ja) 2006-05-30 2006-05-30 キャッシュメモリ装置および処理方法
US11/635,518 US20070283100A1 (en) 2006-05-30 2006-12-08 Cache memory device and caching method
EP07250797A EP1862907A3 (en) 2006-05-30 2007-02-26 Cache memory device and caching method
CNA2007100923685A CN101082882A (zh) 2006-05-30 2007-02-28 高速缓冲存储器装置和高速缓冲存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006150445A JP4208895B2 (ja) 2006-05-30 2006-05-30 キャッシュメモリ装置および処理方法

Publications (2)

Publication Number Publication Date
JP2007323192A true JP2007323192A (ja) 2007-12-13
JP4208895B2 JP4208895B2 (ja) 2009-01-14

Family

ID=38477345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006150445A Expired - Fee Related JP4208895B2 (ja) 2006-05-30 2006-05-30 キャッシュメモリ装置および処理方法

Country Status (4)

Country Link
US (1) US20070283100A1 (ja)
EP (1) EP1862907A3 (ja)
JP (1) JP4208895B2 (ja)
CN (1) CN101082882A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008731A (ja) * 2009-06-29 2011-01-13 Fujitsu Ltd キャッシュメモリ装置、半導体集積回路および演算処理装置
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
US9171227B2 (en) 2012-06-20 2015-10-27 Samsung Electronics Co., Ltd. Apparatus and method extracting feature information of a source image
JP2017102903A (ja) * 2015-12-03 2017-06-08 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ管理メカニズムを具備する電子システム
JP2021502629A (ja) * 2017-11-10 2021-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のプロセッサによる共有キャッシュ・ラインの同時変更

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7616470B2 (en) * 2006-06-16 2009-11-10 International Business Machines Corporation Method for achieving very high bandwidth between the levels of a cache hierarchy in 3-dimensional structures, and a 3-dimensional structure resulting therefrom
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8521982B2 (en) * 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US8793442B2 (en) * 2012-02-08 2014-07-29 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US9405551B2 (en) 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9916243B2 (en) * 2013-10-25 2018-03-13 Advanced Micro Devices, Inc. Method and apparatus for performing a bus lock and translation lookaside buffer invalidation
US9589606B2 (en) * 2014-01-15 2017-03-07 Samsung Electronics Co., Ltd. Handling maximum activation count limit and target row refresh in DDR4 SDRAM
US10133627B2 (en) * 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
US20220382578A1 (en) * 2021-05-28 2022-12-01 Microsoft Technology Licensing, Llc Asynchronous processing of transaction log requests in a database transaction log service

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0348628A3 (en) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache storage system
ATE157183T1 (de) * 1989-07-06 1997-09-15 Digital Equipment Corp Eingabewarteschlange für speichersubsysteme
US5276847A (en) * 1990-02-14 1994-01-04 Intel Corporation Method for locking and unlocking a computer address
JP3451103B2 (ja) * 1992-11-27 2003-09-29 富士通株式会社 データ通信装置及び方法
US6161208A (en) * 1994-05-06 2000-12-12 International Business Machines Corporation Storage subsystem including an error correcting cache and means for performing memory to memory transfers
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US6408345B1 (en) * 1999-07-15 2002-06-18 Texas Instruments Incorporated Superscalar memory transfer controller in multilevel memory organization
US6484240B1 (en) * 1999-07-30 2002-11-19 Sun Microsystems, Inc. Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols
US6801203B1 (en) * 1999-12-22 2004-10-05 Microsoft Corporation Efficient graphics pipeline with a pixel cache and data pre-fetching
US6694417B1 (en) * 2000-04-10 2004-02-17 International Business Machines Corporation Write pipeline and method of data transfer that sequentially accumulate a plurality of data granules for transfer in association with a single address
US6895472B2 (en) * 2002-06-21 2005-05-17 Jp Morgan & Chase System and method for caching results
US20040022094A1 (en) * 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7047322B1 (en) * 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008731A (ja) * 2009-06-29 2011-01-13 Fujitsu Ltd キャッシュメモリ装置、半導体集積回路および演算処理装置
US8589636B2 (en) 2009-06-29 2013-11-19 Fujitsu Limited Cache memory device, processor, and processing method
US9171227B2 (en) 2012-06-20 2015-10-27 Samsung Electronics Co., Ltd. Apparatus and method extracting feature information of a source image
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
US10198361B2 (en) 2012-08-17 2019-02-05 Intel Corporation Memory sharing via a unified memory architecture
US10929304B2 (en) 2012-08-17 2021-02-23 Intel Corporation Memory sharing via a unified memory architecture
US11531623B2 (en) 2012-08-17 2022-12-20 Intel Corporation Memory sharing via a unified memory architecture
JP2017102903A (ja) * 2015-12-03 2017-06-08 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ管理メカニズムを具備する電子システム
JP2021502629A (ja) * 2017-11-10 2021-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のプロセッサによる共有キャッシュ・ラインの同時変更
JP7083446B2 (ja) 2017-11-10 2022-06-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のプロセッサによる共有キャッシュ・ラインの同時変更

Also Published As

Publication number Publication date
JP4208895B2 (ja) 2009-01-14
EP1862907A3 (en) 2009-10-21
EP1862907A2 (en) 2007-12-05
CN101082882A (zh) 2007-12-05
US20070283100A1 (en) 2007-12-06

Similar Documents

Publication Publication Date Title
JP4208895B2 (ja) キャッシュメモリ装置および処理方法
US9367472B2 (en) Observation of data in persistent memory
TW591384B (en) Method and system for speculatively invalidating lines in a cache
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
KR101531078B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US8327077B2 (en) Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
EP0514024B1 (en) Method and apparatus for an improved memory architecture
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
KR100228940B1 (ko) 메모리 일관성 유지 방법
US7363435B1 (en) System and method for coherence prediction
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US20120226865A1 (en) Network-on-chip system including active memory processor
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
US9092346B2 (en) Speculative cache modification
WO2009054959A1 (en) Coherent dram prefetcher
US8645588B2 (en) Pipelined serial ring bus
JP2008107983A (ja) キャッシュメモリ
JP2007514237A (ja) 分岐先バッファにおいてエントリを割り当てる方法及び装置
JP5163220B2 (ja) キャッシュ制御装置、情報処理装置
WO2005121970A1 (en) Title: system and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
WO2013101213A1 (en) Method and apparatus for cutting senior store latency using store prefetching
US20100095071A1 (en) Cache control apparatus and cache control method
CN114020656A (zh) 多核SOC中非阻塞L1 Cache
US11176042B2 (en) Method and apparatus for architectural cache transaction logging

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080929

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

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

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees