• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない。 G06F
管理番号 1285950
審判番号 不服2012-22837  
総通号数 173 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2014-05-30 
種別 拒絶査定不服の審決 
審判請求日 2012-11-19 
確定日 2014-03-19 
事件の表示 特願2009-548426「マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法」拒絶査定不服審判事件〔平成20年 8月 7日国際公開、WO2008/095025、平成22年 5月27日国内公表、特表2010-518487〕について、次のとおり審決する。 
結論 本件審判の請求は、成り立たない。 
理由 第1 手続の経緯
本願は、2008年1月30日を国際出願日とする出願(パリ条約による優先権主張2007年1月31日、米国)であって、平成24年7月10日付けで拒絶査定がなされ(発送日:同月17日)、これに対して同年11月19日に審判の請求がなされたものである。


2.本願発明
本願の請求項1に係る発明(以下、「本願発明」という。)は、平成24年5月10日付け手続補正書の特許請求の範囲に記載された次のとおりのものである。

「置換されたキャッシュラインの割り当てを低減するためのトラッキング方法であって、
次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセスに応じて下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスすることと、
前記選択ラインが次の上位レベルキャッシュに存在しないことを示す前記選択されたラインと関連する情報を識別することと、
前記識別された情報と前記下位レベルキャッシュにおけるキャッシュラインに関連する割り当て指示に応答して前記次の上位レベルキャッシュにおいて前記選択されたラインを、次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセスに対して割り当てることであって、前記割り当て指示は、前記キャッシュラインが次の上位レベルキャッシュに存在することを示す、割り当てることと、
を備えたトラッキング方法。」

なお、請求項1における「前記選択ラインが次の上位レベルキャッシュに存在しないこと示す…」の記載は、「前記選択ラインが次の上位レベルキャッシュに存在しないことを示す…」の誤記と認めて、また、請求項1末尾の「…を備えたトラキング方法。」の記載は、「…を備えたトラッキング方法。」の誤記と認めて、上記のように本願の請求項1に係る発明(以下、「本願発明」という。)を認定した。

3.引用例について
原査定の拒絶の理由に引用された、本願優先日前に公開された、米国特許第5564035号明細書(以下、「引用例」という。)には、図面とともに以下の記載がある(下線は当審において付与。訳は当審訳。)。

(1) 5欄22-30行
「In the case of a primary cache miss, a line must be displaced from the primary cache so that the requested data may be cached into the primary cache from main memory. The present invention assumes that the least recently used (LRU) line will be displaced, although it should be understood that the present invention is applicable to any cache replacement policy. Therefore, the LRU line is chosen as the primary cache victim line and stored in a victim buffer (not shown) (step 506).」
(1次キャッシュがミスの場合、要求されたデータがメインメモリから1次キャッシュにキャッシュされるためには、1次キャッシュから一つのラインが取り除かれねばならない。本発明は、LRU(Least Recently Used、最も長く使われていない)ラインが取り除かれると仮定している。しかし、本発明がどのようなキャッシュ置き換えポリシーにも適用可能であることが理解されるべきである。したがって、LRUラインが、1次キャッシュの犠牲ライン(victim line)に選ばれて、(図示されない)犠牲バッファに格納される(ステップ506)。)

(2) 6欄32行?41行
「Based on FIGS. 6A and 6B it can be seen that the swapping operation is unnecessary and superfluous if the primary cache victim line address is cached in the extension cache, and the primary cache line is not dirty. Put another way, swapping is necessary only if the primary cache victim address is not found in the extension cache or, if it is, the primary cache victim data is dirty with respect to the data found at the same address in the extension cache. The present invention takes advantage of this observation in order to prevent unnecessary swapping.」
(図6Aおよび図6Bに基づいて、1次キャッシュの犠牲ライン(victim line)のアドレスが、拡張キャッシュ中にキャッシュされており、かつ、1次キャッシュラインがダーティではない場合、スワップ操作は不必要かつ余分であることが理解されよう。換言すれば、スワップが必要なのは、1次キャッシュの犠牲ラインのアドレスが、拡張キャッシュに見出されないか、あるいは、もし見出されたならば、同じアドレスの拡張キャッシュで見出されるデータに対して、1次キャッシュの犠牲データがダーティな場合のみである。本発明では、この観察結果を、不必要なスワップの防止に利用している。)

(3) 6欄42行?7欄19行
「FIG. 7 illustrates the operation of the present invention, wherein the first bit 412 and the dirty bit 408 shown in the cache of FIG. 4 are used to minimize swapping.
Under the control of cache access logic, it is first determined whether the requested address results in a hit or a miss in the primary cache (step 702). If so, the data is returned to the processor coupled to the primary cache, as before (step 704). If there is a miss, then the cache access logic reads the primary cache victim line (step 706). The cache access logic then determines whether the dirty (D) and/or first (F) bits are set (step 708). If the dirty bit is set this indicates that the primary cache holds the latest version of the data found at the address in the victim line and that such data is inconsistent with the data found in other memory devices, e.g., the extension cache and memory. If the first bit is set, this indicates that the address tag of the victim line matches in the primary cache only and not in the extension cache. If either the dirty or first bits is set, then the latest version of the data found in the victim line is not to be found in any other memory device. If D=1 or F=1, the victim line is temporarily stored in a victim buffer (not shown) so that it may be later saved in the next level cache (step 710).
Because the requested address was not found in the primary cache, it is presented to the extension cache to determine whether it is to be found there (step 712). If there is a hit, then the extension cache line containing the requested address data is transferred to the processor and the primary cache. Because the line came from the extension cache and was placed into the primary cache, the first bit is set to zero in the transferred line in the primary cache. To keep a record of whether the transferred cache line contains the latest version of the data, the dirty bit of the line is copied along with the line into the primary cache (step 714).
If however, a miss in the extension cache results, then the block of address locations from main memory is written into the primary cache and the data transferred to the processor. Because the data was sent directly to the primary cache without first being stored in the extension cache, the first bit is set to one. Further, for a read operation, because the primary cache and main memory contain the same data at the requested address, the dirty bit is set to zero to indicate consistency. Conversely, for a write operation, such as a write allocate, the dirty bit is set to one to indicate that the processor has changed the data (step 716).」
(図7は、本発明の動作を例示しており、ここで、図4のキャッシュで示された、ファースト・ビット412とダーティ・ビット408とが、スワップの最小化に用いられる。
キャッシュ・アクセス・ロジックの管理下で、最初に、要求されたアドレスが、1次キャッシュでヒット又はミスいずれに帰着したかが決定される(ステップ702)。もしヒットならば、データは、従来と同じく、1次キャッシュと結合したプロセッサへと返される(ステップ704)。ミスであれば、キャッシュ・アクセス・ロジックは、1次キャッシュの犠牲ラインを読み出す(ステップ706)。それから、キャッシュアクセス・ロジックは、ダーティ・ビット(D)および(または)ファースト・ビット(F)がセットされているかを判定する(ステップ708)。ダーティ・ビットがセットされていれば、これは、1次キャッシュが、犠牲ラインのアドレスで見出される最新バージョンのデータを保持しており、そのようなデータは、他のメモリ素子(例えば拡張キャッシュおよびメモリ)で見出されるデータとは一致しないことを示す。ファースト・ビットがセットされている場合、このことは、犠牲ラインのアドレス・タグが、1次キャッシュ内のみで一致して、拡張キャッシュ内では一致しないことを示す。ダーティ・ビット又はファースト・ビットのいずれかがセットされている場合、犠牲ラインで見出される最新バージョンのデータは、他のいずれのメモリ素子でも見出されない。もしもD=1又はF=1であれば、次のレベルのキャッシュ内に後で保存されるように、犠牲ラインは、(図示されない)犠牲バッファに一時的に保存される(ステップ710)。
要求されたアドレスが、1次キャッシュ内で見出されなかったので、それは、拡張キャッシュで見つかるかどうかを判断するために、拡張キャッシュに対して提示される(ステップ712)。ヒットした場合、要求されたアドレス・データを含む拡張キャッシュのラインが、プロセッサと1次キャッシュに転送される。そのラインが、拡張キャッシュから到来して、1次キャッシュに入れられたので、1次キャッシュ内の転送されたラインのファースト・ビットは、0にセットされる。転送されたキャッシュラインが、最新のバージョンのデータを含んでいるかどうかを記録するために、ラインのダーティ・ビットは、ラインと共に、1次キャッシュの中にコピーされる(ステップ714)。
これとは逆に、もしも拡張キャッシュのミスに帰結した場合、メインメモリから、アドレス位置のブロックが、1次キャッシュと、プロセッサに転送されるデータとに書き込まれる。データが、拡張キャッシュに先に格納されずに、直接1次キャッシュへと送られたので、ファースト・ビットは、1にセットされる。さらに、読み出しの操作であれば、1次キャッシュとメインメモリーとが、要求されたアドレスにおいて同じデータを含んでいるので、データ一貫性を示すために、ダーティ・ビットは、0にセットされる。逆に、書き込みアロケートなどの書き込みの操作であれば、プロセッサがデータを書き替えたことを示すために、ダーティ・ビットは、1にセットされる(ステップ716)。)

(4) 7欄20行?8欄9行
「From this point in the process, the logic of the present invention determines where to write the primary cache victim line. First, the logic determines whether any line was victimized from the primary cache in the first place (step 718). If the victim buffer is empty then the process stops (step 720). Otherwise, the logic determines whether the address of the data found in the primary cache victim is already present in the extension cache. To do so, the primary cache presents the address tag of the victim line to the extension cache. (step 722). If there is a hit, then this means that the first bit was not set. Referring back to step 708, the victim buffer is filled only if the dirty bit or first bit is set. Accordingly, the dirty bit must have been set (because the first bit is not set), meaning that the primary cache victim contains the latest version of the data found in the victim line. Accordingly, the primary cache victim is written from the victim buffer into the extension cache line allocated to the victim address (step 724). After this point the process terminates (step 726).
If, however, the primary cache victim is not found in the extension cache, i.e. the first bit of the victim line is set to one, then the logic determines again whether the requested address is found in the extension cache (step 728). To make this determination, a flag could have been set in step 712 to determine whether there is an extension cache hit or miss, and the flag tested in step 728. If the requested address is found in the extension cache then it is known that in step 714 the line caching that address was transferred to the primary cache and thus is no longer needed in the extension cache. Accordingly, that vacated extension cache line can receive the primary cache victim line, thereby resulting in a swap between the primary and extension caches. In conjunction with this operation, the first bit of the requested line in the primary cache is set to indicate that the requested line is no longer found in the extension cache because it has been overwritten with the primary cache victim line (step 730). At this point the process may terminate (step 732).
Conversely, if the requested address is not found in the extension cache, then no lines in the extension cache are currently likely to be available to receive the primary cache victim. Thus, in this embodiment, the LRU line of the extension cache may be selected as a victim (step 734). The dirty bit of this line is examined to determine whether the line contains the latest version of the data to be found at the addresses cached in that line, meaning that that data must be saved elsewhere (step 736). If the extension cache victim line is dirty, then the data from the line is used to update the data found at the same main memory addresses (or same addresses in the next level cache in another embodiment) (step 738) before the line in the extension cache is overwritten with the primary victim line (step 740).
If, however, the data in the extension cache victim line is consistent with that found in main memory, then that data is overwritten in the extension cache by the primary cache victim line without first storing the extension cache victim line into memory (step 740), and the process terminates (step 742).」
(プロセスのこの時点からは、本発明のロジックは、1次キャッシュの犠牲ラインをどこに書くべきかを決定する。まず最初に、ロジックは、そもそも、1次キャッシュのいずれかのラインが犠牲にされたかを判定する(ステップ718)。もしも犠牲バッファが空ならば、そのときは、プロセスは停止する(ステップ720)。空でなければ、ロジックは、1次キャッシュの犠牲で見つかったデータのアドレスが、拡張キャッシュ中に既に存在するか否かを判定する。そのために、1次キャッシュは、犠牲ラインのアドレス・タグを、拡張キャッシュに提示する(ステップ722)。ヒットした場合、これはファースト・ビットがセットされていなかったことを意味する。ステップ708に戻って参照すると、ダーティ・ビットかファースト・ビットがセットされている場合にのみ、犠牲バッファが書き込まれる。したがって、(ファースト・ビットがセットされていなかった以上)ダーティ・ビットが、セットされていたことに間違いはなく、これは1次キャッシュの犠牲が、犠牲ラインで見出されるデータ中の最新版を含むことを意味する。従って、1次キャッシュの犠牲は、犠牲バッファから、犠牲アドレスに割り当てられた拡張キャッシュのラインに書き込まれる(ステップ724)。この時点の後で、プロセスは終了する(ステップ726)。
もしも、これに対して、1次キャッシュの犠牲が、拡張キャッシュで見つからなければ、つまり、犠牲ラインのファースト・ビットが1にセットされているならば、要求されたアドレスが、拡張キャッシュで見つかるかどうかを、ロジックは再び判定する(ステップ728)。この判定をするために、ステップ712で、拡張キャッシュのヒットかミスかを判定するためのフラグをセットしておいて、ステップ728では、そのフラグを検査するようにしてもよい。要求されたアドレスが、拡張キャッシュで見つかったならば、ステップ714で、そのアドレスを貯えるラインが1次キャッシュに転送済みで、もはや拡張キャッシュでは不要であると分かる。従って、その無効になった拡張キャッシュのラインが、1次キャッシュの犠牲ラインを受け取ることができ、これによって、1次キャッシュと拡張キャッシュ間のスワップに帰着する。この操作と共に、1次キャッシュの犠牲ラインによって上書きされたために、要求されたラインが、拡張キャッシュではもはや見つからないことを示すために、1次キャッシュ中の要求されたラインのファースト・ビットがセットされる(ステップ730)。この時点で、プロセスは終了するであろう(ステップ732)。
反対に、もしも要求されたアドレスが、拡張キャッシュで見つからなければ、1次キャッシュから犠牲を受け取るために、拡張キャッシュ中のラインを利用することは、今のところできないであろう。したがって、この実施例では、拡張キャッシュのLRU(最も長く使われていない)ラインが、犠牲として選択されるであろう(ステップ734)。このラインのダーティ・ビットを検査することによって、そのデータが他のどこかで保存されねばならないことを意味するところの、そのラインにキャッシュされたアドレスで見出されるデータの最新版を、ラインが含んでいるか否かが判定される(ステップ736)。もしも拡張キャッシュの犠牲ラインがダーティの場合、そのラインからのデータは、メインメモリ中の同じアドレス(又は、別の実施例における、次のレベルのキャッシュ中の同じアドレス)で見出されるデータを更新するために、そのラインのデータが利用されてから(ステップ738)、拡張キャッシュのラインは、1次キャッシュの犠牲ラインで上書きされる(ステップ740)。
もしも、しかし、拡張キャッシュの犠牲ラインのデータが、メインメモリ中で見出されるものと一致している場合、最初に拡張キャッシュの犠牲ラインをメモリ中に保存することなく、1次キャッシュの犠牲ラインによって、拡張キャッシュにおいてデータが上書きされ(ステップ740)、そしてプロセスは停止する(ステップ742)。

(5) 8欄10行?8欄27行
「By treating the next level cache as an extension of the primary cache, the present invention essentially treats the primary and extension caches together as one large cache, with the advantage of maintaining the most recently used portion of the cached data in the primary cache and thus closest to the processor. Consequently, the multi-cache configuration of the present invention has the effectiveness of a large cache. Every primary cache line with the first bit set avoids displacing another line in the extension cache, thus keeping more unique lines available in both caches for the processor to reference. Further, the present invention provides the advantage that swapping operations are minimized by using a bit to indicate whether a cache line in the primary cache is not found in the extension cache, i.e., the line is exclusive to the primary or the extension cache. One should note, however, that because of the lack of redundancy between the primary and extension caches, both the primary and extension caches must snoop the system bus for outside accesses to data stored in those caches.」
(次のレベルのキャッシュを、1次キャッシュの拡張として取り扱うことによって、本発明は、本質的に、1次キャッシュと拡張キャッシュとを一緒に、一つの大きなキャッシュとして取り扱い、最も最近に使用されたキャッシュされたデータを、1次キャッシュに、従って、プロセッサの一番近くに保存するという、利点を備えている。その結果、本発明のマルチ・キャッシュの構成は、大型のキャッシュが備える効率性を有する。ファースト・ビットがセットされているすべての1次キャッシュのラインが、拡張キャッシュ中の別のラインを置き換えることを避けることによって、プロセッサが参照するために、より多くのユニークなラインが、両方のキャッシュ内に利用できるよう保たれる。さらに、本発明は、1次キャッシュのキャッシュ・ラインが、拡張キャッシュ内に見出されないこと、すなわち、1次又は拡張キャッシュでラインが排他的であること、を示すビットを用いることで、スワップ操作が最小限にされるという利点を与える。ただし、1次キャッシュと拡張キャッシュ間での冗長性の不足により、これらのキャッシュに保持されたデータへの外部アクセスに対して、1次キャッシュと拡張キャッシュがシステムバスをスヌープしなければならないことには注意すべきである。)

よって、引用例には、以下の発明(以下、「引用発明」という。)が開示されていると認められる。

「ファースト・ビット412とダーティ・ビット408とが、スワップの最小化に用いられる、方法であって、
キャッシュ・アクセス・ロジックの管理下で、最初に、要求されたアドレスが、1次キャッシュでヒット又はミスいずれに帰着したかが決定され(ステップ702)、
ミスであれば、キャッシュ・アクセス・ロジックは、1次キャッシュの犠牲ラインを読み出し(ステップ706)、
それから、キャッシュアクセス・ロジックは、ダーティ・ビット(D)および(または)ファースト・ビット(F)がセットされているかを判定し(ステップ708)、
ファースト・ビットがセットされている場合、このことは、犠牲ラインのアドレス・タグが、1次キャッシュ内のみで一致して、拡張キャッシュ内では一致しないことを示し、ダーティ・ビット又はファースト・ビットのいずれかがセットされている場合、犠牲ラインで見出される最新バージョンのデータは、他のいずれのメモリ素子でも見出されず、もしもD=1又はF=1であれば、次のレベルのキャッシュ内に後で保存されるように、犠牲ラインは、犠牲バッファに一時的に保存され(ステップ710)、
要求されたアドレスが、1次キャッシュ内で見出されなかったので、それは、拡張キャッシュで見つかるかどうかを判断するために、拡張キャッシュに対して提示され(ステップ712)、
ヒットした場合、要求されたアドレス・データを含む拡張キャッシュのラインが、プロセッサと1次キャッシュに転送され、そのラインが、拡張キャッシュから到来して、1次キャッシュに入れられたので、1次キャッシュ内の転送されたラインのファースト・ビットは、0にセットされ、転送されたキャッシュラインが、最新のバージョンのデータを含んでいるかどうかを記録するために、ラインのダーティ・ビットは、ラインと共に、1次キャッシュの中にコピーされ(ステップ714)、
これとは逆に、もしも拡張キャッシュのミスに帰結した場合、メインメモリから、アドレス位置のブロックが、1次キャッシュと、プロセッサに転送されるデータとに書き込まれ(ステップ716)、
プロセスのこの時点からは、本発明のロジックは、1次キャッシュの犠牲ラインをどこに書くべきかを決定し、
ロジックは、1次キャッシュの犠牲で見つかったデータのアドレスが、拡張キャッシュ中に既に存在するか否かを判定し、そのために、1次キャッシュは、犠牲ラインのアドレス・タグを、拡張キャッシュに提示し(ステップ722)、
ヒットした場合、これはファースト・ビットがセットされていなかったことを意味し、1次キャッシュの犠牲は、犠牲バッファから、犠牲アドレスに割り当てられた拡張キャッシュのラインに書き込まれ(ステップ724)、
1次キャッシュの犠牲が、拡張キャッシュで見つからなければ、要求されたアドレスが、拡張キャッシュで見つかるかどうかを、ロジックは再び判定し(ステップ728)、
要求されたアドレスが、拡張キャッシュで見つかったならば、1次キャッシュと拡張キャッシュ間のスワップの操作と共に、1次キャッシュ中の要求されたラインのファースト・ビットがセットされ(ステップ730)、
もしも要求されたアドレスが、拡張キャッシュで見つからなければ、拡張キャッシュのLRUラインが、犠牲として選択され(ステップ734)、
このラインのダーティ・ビットを検査し(ステップ736)、
もしも拡張キャッシュの犠牲ラインがダーティの場合、そのラインからのデータは、メインメモリ中の同じアドレスで見出されるデータを更新するために、そのラインのデータが利用されてから(ステップ738)、
拡張キャッシュのラインは、1次キャッシュの犠牲ラインで上書きされ(ステップ740)、
拡張キャッシュの犠牲ラインのデータが、メインメモリ中で見出されるものと一致している場合、最初に拡張キャッシュの犠牲ラインをメモリ中に保存することなく、1次キャッシュの犠牲ラインによって、拡張キャッシュにおいてデータが上書きされ(ステップ740)、
そしてプロセスは停止する(ステップ742)、
ファースト・ビットがセットされているすべての1次キャッシュのラインが、拡張キャッシュ中の別のラインを置き換えることを避けることによって、プロセッサが参照するために、より多くのユニークなラインが、両方のキャッシュ内に利用できるよう保たれる、方法。」


4.対比
本願発明と引用発明とを対比する。

(1) 引用発明の「ファースト・ビット412とダーティ・ビット408とが、スワップの最小化に用いられる」、「ファースト・ビットがセットされているすべての1次キャッシュのラインが、拡張キャッシュ中の別のラインを置き換えることを避ける」方法は、「ファーストビット」による、キャッシュ間のデータの重複の継続的な「監視方法」すなわち「トラッキング方法」といえる点を考慮すると、本願発明の「置換されたキャッシュラインの割り当てを低減するためのトラッキング方法」に相当する。

(2a) 引用発明の「1次キャッシュ」と「拡張キャッシュ」は、それぞれ、本願発明の「下位レベルキャッシュ」と「次の上位レベルキャッシュ」に相当する。
引用発明の「ステップ712」で、「要求されたアドレスが」、「拡張キャッシュで見つかるかどうかを判断するために、拡張キャッシュに対して提示され」、「ヒット」と判定されることは、本願発明の「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス」に相当する。
(2b) 引用例における「犠牲ライン(victim line)」とは、上記3(1)の摘記のとおり、「要求されたデータがメインメモリから1次キャッシュにキャッシュされるためには、1次キャッシュから一つのラインが取り除かれねばならない」ラインであって、例えば、「LRU(Least Recently Used、最も長く使われていない)ライン」が選択されるものである。
よって、引用発明の「1次キャッシュの犠牲ライン」は、本願発明の「下位レベルキャッシュにおいて置換されるべき選択されたライン」に相当する。
よって、引用発明の「ステップ706」で、(1次キャッシュが)「ミスであれば、キャッシュ・アクセス・ロジックは、1次キャッシュの犠牲ラインを読み出し」することは、本願発明の「下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスすること」に相当する。

(3) 引用発明における犠牲ラインの「ファースト・ビット」は、「ファースト・ビットがセットされている場合、このことは、犠牲ラインのアドレス・タグが、1次キャッシュ内のみで一致して、拡張キャッシュ内では一致しないことを示し、ダーティ・ビット又はファースト・ビットのいずれかがセットされている場合、犠牲ラインで見出される最新バージョンのデータは、他のいずれのメモリ素子でも見出され」ないことを示す情報であるから、本願発明の「前記選択ラインが次の上位レベルキャッシュに存在しないことを示す前記選択されたラインと関連する情報」に相当する。
よって、引用発明の「ステップ708」で、「それから、キャッシュアクセス・ロジックは、ダーティ・ビット(D)および(または)ファースト・ビット(F)がセットされているかを判定し」ていることは、本願発明の「前記選択ラインが次の上位レベルキャッシュに存在しないことを示す前記選択されたラインと関連する情報を識別すること」に相当する。

(4a) 上記(3)記載のとおり、引用発明の「ステップ708」で判定された、犠牲ラインの「ファースト・ビット」は、本願発明の「前記識別された情報」に相当する。
また、上記「ステップ708」の判定を経て、これに後続する「ステップ714」で、(要求されたアドレスが拡張キャッシュで)「ヒットした場合、要求されたアドレス・データを含む拡張キャッシュのラインが、プロセッサと1次キャッシュに転送され」、「1次キャッシュに入れられ」、「1次キャッシュ内の転送されたラインのファースト・ビットは、0にセットされ」ることは、本願発明の「前記下位レベルキャッシュにおけるキャッシュラインに関連する割り当て指示」に相当する。
したがって、引用発明において、上記「ステップ708」と上記「ステップ714」に後続する各ステップは、「前記識別された情報と前記下位レベルキャッシュにおけるキャッシュラインに関連する割り当て指示に応答して」行われるステップといえる。

(4b) 上記(2a)記載のとおり、引用発明の「ステップ712」で、要求されたアドレスが拡張キャッシュで「ヒット」と判定されることは、本願発明の「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス」に相当する。
そして、引用発明の方法のステップ716に後続する、(ステップ718から)「ステップ742」までの一連のステップは、「プロセスのこの時点からは、本発明のロジックは、1次キャッシュの犠牲ラインをどこに書くべきかを決定し」ている一連のステップであって、特に「ステップ724」等において、「1次キャッシュの犠牲は、犠牲バッファから、犠牲アドレスに割り当てられた拡張キャッシュのラインに書き込まれ」ることは、本願発明の「前記次の上位レベルキャッシュにおいて前記選択されたラインを、次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセスに対して割り当てること」に相当する。

(4c) 上記(4a)記載のとおり、引用発明の方法の「ステップ708」のファースト・ビットの判定を経て、後続する「ステップ714」で、「要求されたアドレス・データを含む拡張キャッシュのラインが、プロセッサと1次キャッシュに転送され」、「1次キャッシュに入れられ」、「1次キャッシュ内の転送されたラインのファースト・ビットは、0にセットされ」ることは、本願発明の「前記下位レベルキャッシュにおけるキャッシュラインに関連する割り当て指示」に相当する。
引用発明の「ステップ714」で、「要求されたアドレス・データを含む拡張キャッシュのラインが、プロセッサと1次キャッシュに転送され、そのラインが、拡張キャッシュから到来して、1次キャッシュに入れられたので、1次キャッシュ内の転送されたラインのファースト・ビットは、0にセットされ」ることは、本願発明の「前記割り当て指示は、前記キャッシュラインが次の上位レベルキャッシュに存在することを示す」ことに相当する。

したがって、本願発明と引用発明との一致点・相違点は次のとおりである。

<一致点>
「置換されたキャッシュラインの割り当てを低減するためのトラッキング方法であって、
下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスすることと、
前記選択ラインが次の上位レベルキャッシュに存在しないことを示す前記選択されたラインと関連する情報を識別することと、
前記識別された情報と前記下位レベルキャッシュにおけるキャッシュラインに関連する割り当て指示に応答して前記次の上位レベルキャッシュにおいて前記選択されたラインを、次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセスに対して割り当てることであって、前記割り当て指示は、前記キャッシュラインが次の上位レベルキャッシュに存在することを示す、割り当てることと、
を備えたトラッキング方法。」

<相違点>
本願発明は、「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセスに応じて」下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスするのに対して、引用発明は、本願発明の「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス」に相当する、「ステップ712」で、要求されたアドレスが拡張キャッシュで「ヒット」と判定されるステップ、及び、本願発明の「下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスすること」に相当する、「ステップ706」で、「キャッシュ・アクセス・ロジックは、1次キャッシュの犠牲ラインを読み出し」するステップを、それぞれ備えているものの、両ステップが、「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス「に応じて」下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスする」ものではない点。


5.当審の判断
<相違点>について
一般的に、情報処理の実行時に、処理効率などを考慮して、個々の処理ステップの順序を適宜入れ替えることは、普通に行われる。
引用発明において、ステップ712の「拡張キャッシュ」に対する要求されたアドレスのヒットを判定する処理と、ステップ706の「1次キャッシュ」に対する「犠牲ライン」の「読み出し」処理とは、異なるキャッシュメモリに対する、異なる処理であるから、両者が適宜入れ替え可能であることは明らかである。
よって、引用発明において、ステップ712と、ステップ706の順序を適宜入れ替えることによって、「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス「に応じて」下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスする」ように構成することは、当業者の設計的事項にすぎない。

さらに、上記の犠牲ラインからの「読み出し」アクセスではなく、「書き込み」アクセスに着目すると、引用発明は、ステップ712の「拡張キャッシュ」に対する要求されたアドレスの「ヒット判定」の直後のステップ714で、「拡張キャッシュ」のラインを、「1次キャッシュ」に「書き込み」アクセスするものである。
ここで、引用発明は、ステップ714の、「書き込み」アクセス先が、1次キャッシュのどの「ライン」かは明記がない。
しかし、先行するステップ(ステップ706)で、1次キャッシュの「犠牲ライン」からデータを読み出して「犠牲バッファ」へと退避させている以上、また「犠牲ライン」それ自体の意義からも、ステップ714では「1次キャッシュ」の「犠牲ライン」に対して書き込むと理解するのが自然である。
よって、引用発明は、ステップ712,714における、犠牲ラインへの「書き込み」アクセスに着目すれば、実質的に、「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス「に応じて」下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスする」ものと認められる。

結局、引用発明において、「次の上位レベルキャッシュにおけるフェッチアドレスヒットを有するメモリアクセス「に応じて」下位レベルキャッシュにおいて置換されるべき選択されたラインにアクセスする」ように構成することで、相違点に係る構成とすることは、当業者が適宜なし得たことである。

さらに、本願発明の効果も、引用発明及び周知技術に基づいて、当業者が予測し得る範囲内のものである。


6.むすび
したがって、本願発明は、引用発明、及び、周知技術に基づいて、当業者が容易に発明をすることができたものであるから、本願は、特許法第29条第2項の規定により特許を受けることができない。
よって、結論のとおり審決する。
 
審理終結日 2013-10-21 
結審通知日 2013-10-22 
審決日 2013-11-05 
出願番号 特願2009-548426(P2009-548426)
審決分類 P 1 8・ 121- Z (G06F)
最終処分 不成立  
前審関与審査官 中野 裕二  
特許庁審判長 小曳 満昭
特許庁審判官 稲葉 和生
山田 正文
発明の名称 マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法  
代理人 中村 誠  
代理人 井上 正  
代理人 河野 直樹  
代理人 砂川 克  
代理人 佐藤 立志  
代理人 堀内 美保子  
代理人 赤穂 隆雄  
代理人 井関 守三  
代理人 峰 隆司  
代理人 蔵田 昌俊  
代理人 福原 淑弘  
代理人 野河 信久  
代理人 竹内 将訓  
代理人 白根 俊郎  
代理人 岡田 貴志  
代理人 幸長 保次郎  

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ