• ポートフォリオ機能


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

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない。 G06F
管理番号 1304313
審判番号 不服2014-10610  
総通号数 190 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2015-10-30 
種別 拒絶査定不服の審決 
審判請求日 2014-06-04 
確定日 2015-08-12 
事件の表示 特願2013- 34561「ロックインジケータを有するマルチスレッドプロセッサ」拒絶査定不服審判事件〔平成25年 7月25日出願公開、特開2013-145568〕について、次のとおり審決する。 
結論 本件審判の請求は、成り立たない。 
理由 第1.手続の経緯

特願2010-537031号が,2008年12月3日(パリ条約による優先権主張外国庁受理,2007年12月3日(以下,「優先日」という。),アメリカ合衆国)に国際出願され,該出願を原出願とする特許法第44条第1号の規定による新たな特許出願として,本件審判に係る出願(以下,「本願」という。)が,平成25年2月25日に出願され,平成25年3月19日付けで特許法第184条の4第1項の規定による翻訳文が提出されると共に,同日付けで審査請求と手続補正がなされた。
そして,平成25年9月4日付けで拒絶理由通知(平成25年9月10日発送)がなされ,これに対して平成26年1月10日付けで意見書が提出されるとともに同日付けで手続補正がなされたが,平成26年1月30日付けで拒絶査定(平成26年2月4日謄本送達)がなされた。
これに対して,「原査定を取り消す。本願は特許をすべきものである,との審決を求める。」ことを請求の趣旨として,平成26年6月4日付けで審判請求がなされた。


第2.本願発明

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

「 変換索引バッファ(TLB)と制御論理回路とTLBロックインジケータとを備えたマルチスレッドプロセッサが実行する方法であって,
前記マルチスレッドプロセッサの第1のスレッドに関連付けられたTLBミス事象を受信することと;
前記TLBロックインジケータをチェックすることと,なお,前記TLBロックインジケータはグローバル状態レジスタの1以上のビットを備える;
前記TLBロックインジケータがアンロック状態を指示していることに応答して,前記第1のスレッドによる前記TLBに関連付けられた例外ハンドラへのアクセスを許可することと;
前記TLBロックインジケータがロック状態を指示していることに応答して,
前記第1のスレッドをスリープ状態にすることと,なお,前記第1のスレッドをスリープ状態にすることは前記制御論理回路からのスリープ命令の受信に応答して実行される;
前記第1のスレッドをスリープ状態にした後,前記TLBロックインジケータを,前記ロック状態を指示することからアンロック状態を指示することに移行することと;
前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行することに応答して,前記TLBミス事象を引き起こしたパケットの実行を再現することと,
なお,前記パケットは複数の命令を備える;
を備える方法。」


第3.先行技術文献記載事項

1.引用文献1
本願の優先日前に頒布又は電気通信回線を通じて公衆に利用可能となった文献であって,原審の平成25年9月4日付けの拒絶理由通知において引用された,米国特許出願公開第2007/0050595号明細書(2007年3月1日公開。以下,「引用文献1」という。)には,図面とともに,次の記載がある。
(当審注:下線は,参考のために当審で付与したものである。以下,同じ。)

A.「1 . A method for synchronizing access to a translation lookaside buffer in a multithread processor, wherein the method comprises:
finding a first translation lookaside buffer exception with a first thread processor;
indicating that the first translation lookaside buffer exception is being processed;
finding a second translation lookaside buffer exception with a second thread processor; and
handling the second translation lookaside buffer exception after the first translation lookaside buffer exception has been processed.
2 . The method of claim 1 , wherein the first thread processor and the second thread processor search the translation lookaside buffer at the same time.
3 . The method of claim 1 , wherein a serialization bit is set to indicate that the first translation lookaside buffer exception is being processed.
4 . The method of claim 3 , wherein the serialization bit is reset to indicate that the first translation lookaside buffer exception has been processed.」

(当審仮訳:
1.マルチスレッドプロセッサ内の変換索引バッファへのアクセスを同期するための方法であって,
第1のスレッドプロセッサの第1の変換索引バッファ例外を発見することと,
第1の変換索引バッファ例外が処理中であることを示すことと,
第2のスレッドプロセッサの第2の変換索引バッファ例外を発見することと,
第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと,
を含む方法。
2.第1のスレッドプロセッサと第2のスレッドプロセッサが同時に変換索引バッファを検索することを特徴とする請求項1に記載の方法。
3.第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットがセットされることを特徴とする請求項1に記載の方法。
4.第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットがリセットされることを特徴とする請求項3に記載の方法。)

B.「[0013] The CMT processor 101 contains a set of execution elements, called the thread processors (TP) 103 , 105 , and 107 . Each TP 103 , 105 , and 107 can execute a program independently and receive external interrupts. TPs 103 , 105 , and 107 can share system resources such as a system interface 109 , a translation lookaside buffer (TLB) 111 , an instruction cache 113 , and a data cache 115 .
・・・(中略)・・・
[0015] The TLB 111 can be shared by multiple TPs in a CMT processor 101 . When one TLB exception is handled, the resource requirements may preclude another TLB exception from being handled. Therefore, the CMT processor allows one TLB exception at a time.」

(当審仮訳:
[0013] CMTプロセッサ101は,スレッドプロセッサ(TP)103,105,及び107と呼ばれる実行要素の組を含んでいる。各TP103,105,及び107は,プログラムを独立に実行し,外部割り込みを受け取ることができる。TP103,105,及び107は,システムインターフェース109,変換索引バッファ(TLB)111,命令キャッシュ113,及びデータキャッシュ115のようなシステムリソースを共有することができる。
・・・(中略)・・・
[0015] TLB111は,CMTプロセッサ101内の複数のTPで共有することができる。1つのTLB例外が処理される際,他のTLB例外の処理は排除され得る。したがって,CMTプロセッサは,一度に1つのTLB例外を許可する。)

C.「[0017] Each entry in the table 201 may contain a virtual page ID, a physical page ID, and a page size. A memory access can manage a search of the TLB 111 . For example, the mth TP 107 may read 117 from the TLB 111 and perform a normal memory access when a virtual page match is found. When a TLB search cannot match a virtual page in the TLB 111 , a TLB miss exception is generated and the exception handler 207 can use control registers 205 and instructions 203 to refill 119 a missing page translation in the table 201 of the TLB 111 . The refill 119 will write the correct page translation into the memory of the TLB 111 .」

(当審仮訳:
[0017] テーブル201の各エントリは,仮想ページID,物理ページID,及びページサイズを含み得る。メモリアクセスは,TLB111の検索を管理することができる。例えば,m番目のTP107は,TLB111から117を読み取り,仮想ページの一致が検出された際に,通常のメモリアクセスを実行することができる。TLB111内で仮想ページの一致が検出できない際には,TLBミス例外が生成され,TLB111のテーブル201内に不足しているページ変換をリフィル119するために,例外ハンドラ207は,コントロールレジスタ205と命令203を使用できる。リフィル119は,TLB111のメモリに適切なページ変換を書き込む。)

D.「[0020] FIG. 3 is a flowchart 300 illustrating an exemplary method for synchronizing Translation Lookaside Buffer (TLB) access in a concurrent multithread processor in accordance with a representative embodiment of the present invention.
[0021] A first thread processor searches a translation look-aside buffer at 301 . The first thread processor finds a first TLB exception at 303 . The exception can be caused by having a particular page missing from the plurality of virtual pages in the TLB. The processing of the first TLB exception may be indicated by setting a serialization bit to 'one'.
[0022]When a serialization bit is set, the TLB can be continuously searched by the second TP or searching can be stopped until the first TLB exception has been completed. A second thread processor searches the TLB at 305 . If searching continues, the second thread processor may find a second TLB exception at 309 . At 311 , a handling of the second TLB exception is delayed until after the first TLB exception has been processed.
[0023] An exception handler can replace the missing page in the first TLB exception by using the instructions and control registers in the TLB. The serialization bit can be reset to 'zero' to indicate when the first TLB exception has been completed. Upon completion, the exception handler can execute a special 'return from exception' instruction to return the first thread processor to the program that searched the TLB. Handling of the second TLB exceptions can then be performed. 」

(当審仮訳:
[0020] 図3は,本発明の代表的な実施形態による,マルチスレッドプロセッサ内の変換索引バッファ(TLB)へのアクセスを同期するための例示的な方法を示すフローチャート300である。
[0021] 第1のスレッドプロセッサは301で変換索引バッファを検索する。第1のスレッドプロセッサは,303で第1のTLB例外を検出する。第1のTLB例外は,TLBにおいて,所定の仮想ページに所望のページが含まれていないことによって引き起こされ得る。第1のTLB例外が処理中であることは,シリアライゼーション・ビットを「1」にセットすることで示してもよい。
[0022] シリアライゼーション・ビットがセットされると,TLBは,第2のスレッドプロセッサによって,連続的に検索され得るか,第1のTLB例外が完了するまで,検索を停止させられ得る。第2のスレッドプロセッサは305で,TLBを検索する。検索が続けば,第2のスレッドプロセッサは,309で第2のTLB例外を検出し得る。311において,第2のTLB例外の処理は,第1のTLB例外の処理が終わるまで遅延される。
[0023] 例外ハンドラは,TLB内の命令レジスタや制御レジスタを用いて,第1のTLB例外で含まれていないページを置き換えることができる。第1のTLB例外が完了したことを示すために,シリアライゼーション・ビットを「0」にリセットすることができる。完了すると,例外ハンドラは,第1のスレッドプロセッサをTLBを検索したプログラムに戻すために,特別な命令である“return from exception”を実行することができる。第2のTLB例外の処理はその後に行うことができる。)

E.「[0025] Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in an integrated circuit or in a distributed fashion where different elements are spread across several circuits. ・・・(後略)・・・」

(当審仮訳:
[0025] したがって,本発明は,ハードウェア,ソフトウェア,又はハードウェアとソフトウェアの組合せで実現されてもよい。本発明は,集積回路内に形成される集中方式,又は異なる要素がいくつかの回路に分散している分散方式で実現されてもよい。・・・(後略)・・・)

F. 図3


2.参考文献1
本願の優先日前に頒布又は電気通信回線を通じて公衆に利用可能となった文献である,特開2002-342163号公報(平成14年11月29日公開。以下,「参考文献1」という。)には,次の記載がある。

G.「【0021】図2に示すように,マルチスレッドプロセッサ100は,レジスタ101と,プログラムカウンタ102と,命令読出部103と,命令バッファ104と,命令発行部105と,命令実行部106と,記憶制御部107と,キャッシュ110と,占有フラグ111と,IDレジスタ112とを備える。
・・・(中略)・・・
【0023】記憶制御部107は,メモリとキャッシュ110間のデータ転送を制御する部分であり,特に,キャッシュ110の一部分に対し,複数のスレッドで共有するか,特定のスレッドで占有して用いるかの割り当てをウェイ単位に制御する機能を持つ。
【0024】占有フラグ111は,該当ウェイごとにスレッド共有/スレッド占有を示すフラグである。IDレジスタ112は,該当ウェイを占有するスレッドIDを保持するレジスタである。」

3.参考文献2
本願の優先日前に頒布又は電気通信回線を通じて公衆に利用可能となった文献である,特表2006-503385号公報(平成18年1月26日公表。以下,「参考文献2」という。)には,次の記載がある。

H.「【0046】
図3および図4はそれぞれ,本発明による割込みコントローラ105に付随する例示的なイネーブル・レジスタおよびフラグ・レジスタを示す。図3および図4のレジスタは,図2に一般的に示したレジスタ204の特別な例と見なすことができる。以下でより詳細に説明するように,これらの例示的な割込みコントローラ・レジスタは,任意の所与の時間にどの割込みをどのスレッドに送達可能かを制御するものであるが,これらは,単一の命令実行サイクルで読み出し,または修正することができる。好ましくは上記のように,これらのレジスタはマルチスレッド・プロセッサ102と一体化される。例えば,これらの割込みコントローラ・レジスタは,割込みコントローラ105の内部,またはマルチスレッド・プロセッサ内の他の場所に組み込まれた,いわゆる「特殊用途」のレジスタであってもよい。ただし,本発明の技術を実装するには,他の種類のレジスタを使用することも可能である。」

4.参考文献3
本願の優先日前に頒布又は電気通信回線を通じて公衆に利用可能となった文献である,特開2004-021985号公報(平成16年1月22日公開。以下,「参考文献3」という。)には,次の記載がある。

I.「【0002】
【従来の技術】
マルチスレッドプログラムでは,プログラムのいくつかの部分および/または変数を複数のスレッドによるアクセスから保護することが望ましい。
ロック機構を用いる一手法では,スレッドは,保護部分にアクセスする際にロックを取得するため,そのスレッドがロックを保持している間,他のスレッドは同じ部分にアクセスすることができない。
スレッドがロックを解除すると,別のスレッドがロックを取得して保護部分にアクセスし,他のスレッドが同じ部分にアクセスできないようにする。
【0003】
ロックを待っているスレッドは,スリープ待ち行列に入り,この待機中のスレッドが実行可能になったときに実行待ち行列に移される。」

5.参考文献4
本願の優先日前に頒布又は電気通信回線を通じて公衆に利用可能となった文献である,特表2007-520769号公報(平成19年7月26日公表。以下,「参考文献4」という。)には,関連する図とともに,次の記載がある。

J.「【0003】
ロックがプロセッサに利用可能になるなど,モニタイベントが発生するまで他のプロセッサと競合するロックを取得するため,プロセッサをスリープ状態にするシステム,装置及び方法が提供される。すなわち,プロセッサはロックが利用可能となるのを待機しているが,キューへの待機中にはスリープ状態となるようにしてもよい。一実施例によると,プロセッサをスリープ状態にする選択肢は,プロセッサがそれのリソースを解放し,他のプロセッサによる使用のため解放されたリソースを提供することを含む。一実施例によると,ロックを求めるプロセッサは,ハイパースレッドプロセッサの論理プロセッサであってもよい。典型的なハイパースレッドプロセッサは,同一のリソースを共有する論理プロセッサまたは複数のスレッドを含むものであってもよい。」


第4.引用発明の認定

1.引用文献1に記載されている事項について検討する。
(1) 上記A.には,請求項1として,「A method for synchronizing access to a translation lookaside buffer in a multithread processor, wherein the method comprises: finding a first translation lookaside buffer exception with a first thread processor; indicating that the first translation lookaside buffer exception is being processed; finding a second translation lookaside buffer exception with a second thread processor; and handling the second translation lookaside buffer exception after the first translation lookaside buffer exception has been processed. (マルチスレッドプロセッサ内の変換索引バッファへのアクセスを同期するための方法であって,第1のスレッドプロセッサの第1の変換索引バッファ例外を発見することと,第1の変換索引バッファ例外が処理中であることを示すことと,第2のスレッドプロセッサの第2の変換索引バッファ例外を発見することと,第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと,を含む方法)」が記載され,請求項3として,「The method of claim 1 , wherein a serialization bit is set to indicate that the first translation lookaside buffer exception is being processed.(第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットがセットされることを特徴とする請求項1に記載の方法)」が記載され,請求項4として「The method of claim 3 , wherein the serialization bit is reset to indicate that the first translation lookaside buffer exception has been processed.(第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットがリセットされることを特徴とする請求項3に記載の方法)」が記載されている。
そして,上記「第1のスレッドプロセッサの第1の変換索引バッファ例外」及び上記「第2のスレッドプロセッサの第2の変換索引バッファ例外」が,それぞれ「第1のスレッドに関する第1の変換索引バッファ例外」及び「第2のスレッドに関する第2の変換索引バッファ例外」といえることは,当業者にとって自明であるから,上記A.には,「マルチスレッドプロセッサ内の変換索引バッファへのアクセスを同期するための方法であって,第1のスレッドに関する第1の変換索引バッファ例外を発見することと,第1の変換索引バッファ例外が処理中であることを示すことと,第2のスレッドに関する第2の変換索引バッファ例外を発見することと,第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと,第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットをセットすることと,第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットすること,を含む方法」が記載されているといえる。

(2) 上記D.には,段落[0022]に「a handling of the second TLB exception is delayed until after the first TLB exception has been processed.(第2のTLB例外の処理は,第1のTLB例外の処理が終わるまで遅延される)」ことが記載され,「TLB」が「変換索引バッファ」であることは,上記D.の段落[0020]に示されるとおりであるから,上記A.に記載された「第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと」の具体的態様として,「第2の変換索引バッファ例外の処理を,第1の変換索引バッファ例外の処理が終わるまで遅延する」ことが記載されているといえる。

(3) 上記C.には,「When a TLB search cannot match a virtual page in the TLB 111 , a TLB miss exception is generated and the exception handler 207 can use control registers 205 and instructions 203 to refill 119 a missing page translation in the table 201 of the TLB 111 .(TLB111内で仮想ページの一致が検出できない際には,TLBミス例外が生成され,TLB111のテーブル201内に不足しているページ変換をリフィル119するために,例外ハンドラ207は,コントロールレジスタ205と命令203を使用できる)」ことが記載され,「TLB111内で仮想ページの一致が検出できない際には,TLBミス例外が生成」されるとは「TLB例外」が発見されることであることは,当業者にとって自明であるから,上記C.には,変換索引バッファ例外が発見されると,例外ハンドラが実行されることが記載されているといえる。
そして,上記D.の段落[0023]の「when the first TLB exception has been completed. Upon completion, the exception handler can execute ・・・(中略)・・・ to return the first thread processor to the program that searched the TLB.(第1のTLB例外が完了したことを示すために,・・・(中略)・・・完了すると,例外ハンドラは,第1のスレッドプロセッサをTLBを検索したプログラムに戻す)」との記載からは,「TLBを検索したプログラム」に戻される「第1のスレッドプロセッサ」で「例外ハンドラ」が実行されていたことが読み取れるから,「TLBを検索したプログラム」が実行されるスレッド,すなわちTLB例外を発見したスレッドと,「例外ハンドラ」が実行されるスレッドは,共に「第1のスレッド」ということができる旨が,上記D.から読み取れる。
してみれば,上記C.及びD.からは,第1のスレッドに関する変換索引バッファ例外が発見されると,「第1のスレッドで例外ハンドラを実行する」ことが読み取れる。

(4) 上記D.の,段落[0023]の「when the first TLB exception has been completed. Upon completion, the exception handler can execute a special 'return from exception' instruction to return the first thread processor to the program that searched the TLB. (第1のTLB例外が完了したことを示すために,・・・(中略)・・・完了すると,例外ハンドラは,第1のスレッドプロセッサをTLBを検索したプログラムに戻すために,特別な命令である“return from exception”を実行する)」との記載から,上記D.には,「第1の変換索引バッファ例外の処理が完了すると,例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行する」ことが記載されているといえる。

2.上記1.の(1)ないし(4)に示したことから,引用文献1には,次の発明(以下,「引用発明」という。)が記載されていると認められる。

「マルチスレッドプロセッサ内の変換索引バッファへのアクセスを同期するための方法であって,
第1のスレッドに関する第1の変換索引バッファ例外を発見することと,
第1のスレッドで例外ハンドラを実行することと,
第1の変換索引バッファ例外が処理中であることを示すことと,
第2のスレッドに関する第2の変換索引バッファ例外を発見することと,
第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと,を含み,
第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットをセットすることと,
第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットすることと,
第2の変換索引バッファ例外の処理を,第1の変換索引バッファ例外の処理が終わるまで遅延することと,
第1の変換索引バッファ例外の処理が完了すると,例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行すること,
を含む方法。」


第5.対比

1.引用発明と本願発明を対比する。
(1) 引用発明における,「マルチスレッドプロセッサ内の変換索引バッファへのアクセスを同期するための方法」は,上記B.の「CMTプロセッサは,一度に1つのTLB例外を許可する」旨の記載を参酌すれば,「CMTプロセッサ」,すなわち「マルチスレッドプロセッサ」が実行する方法であることは明らかである。また,引用発明は,「マルチスレッドプロセッサ内の変換索引バッファ」へのアクセスを同期するための方法であるから,引用発明における「マルチスレッドプロセッサ」が「変換索引バッファ」を備えるものであることは明らかである。
してみれば,引用発明と本願発明は,「変換索引バッファ(TLB)を備えたマルチスレッドプロセッサが実行する方法」である点で共通する。

(2) 上記D.の段落[0021]には,「The exception can be caused by having a particular page missing from the plurality of virtual pages in the TLB. (第1のTLB例外は,TLBにおいて,所定の仮想ページに所望のページが含まれていないことによって引き起こされ得る)」ことが記載されているから,引用発明の「変換索引バッファ例外」は,変換索引バッファにおいて,所定の仮想ページに所望のページが含まれていないことによって引き起こされるものであるといえる。一方,本願明細書の段落【0014】には,「TLB 108は,要求された仮想アドレスがTLB 108で見つからなかった時に,制御論理回路106にTLBミス事象を信号で送るように構成される」と記載されているから,本願発明の「TLBミス事象」は,要求された仮想アドレスが変換索引バッファで見つからない際に起きるものであるといえる。
そして,変換索引バッファにおいて所定の仮想ページに所望のページが含まれていないことと,要求された仮想アドレスが変換索引バッファで見つからないことが,同義であることは,コンピュータアーキテクチャの技術分野における当業者にとっては自明であるから,引用発明の「変換索引バッファ例外」と,本願発明の「TLBミス事象」は同じ事象によって引き起こされるもの,すなわち,相当するものであるといえる。
よって,引用発明の「第1のスレッドプロセッサの第1の変換索引バッファ例外を発見すること」は本願発明の「前記マルチスレッドプロセッサの第1のスレッドに関連付けられたTLBミス事象を受信すること」に相当する。

(3)
ア.引用発明における「シリアライゼーション・ビット」とは,変換索引バッファ例外が処理中であることを示すためにセットされ,変換索引バッファ例外の処理が終了するとリセットされるものであることは,上記A.の請求項3及び4,並びに上記D.の段落[0021]及び[0023]の記載から明らかである。
一方,本願発明における「TLBロックインジケータ」とは,一般的な技術用語とはいえないから,その意味を解釈するために,本願明細書及び図面を参酌すると,段落【0022】に「TLBミス事象によりTLB 108がロックされる時,制御論理回路106は,TLBミス事象に応答する例外ハンドラ112や132を起動するために,TLBミス事象を生成するスレッド112または114に命令する。制御論理回路106が,TLBミス事象が処理されたことを示す戻り命令や他の信号を例外ハンドラ122や132から受信すると,制御論理回路106はTLBロックインジケータ110をアンロックする。」と記載され,段落【0037】に「処理は,TLBに関連する例外ハンドラへのスレッドによるアクセスが制御論理回路を使用して許可され,・・・(中略)・・・TLBロックインジケータは,アクセスが許可された時,制御論理回路を使用してロックされる。」と記載され,段落【0039】に「TLBロックインジケータは,例外ハンドラから戻り次第,自動的にアンロックされる。」と記載されている。してみると,本願発明の「TLBロックインジケータ」とは,TLBミスを解消するための例外ハンドラの処理が実行中であるか否かを示すために,例外ハンドラの処理の実行中にロックされ,当該処理が終了するとアンロックされる,インジケータであると解することができる。
してみると,引用発明の「シリアライゼーション・ビット」は,本願発明の「TLBロックインジケータ」に相当するといえる。

イ.上記D.において「The first thread processor finds a first TLB exception at 303 .(第1のスレッドプロセッサは,303で第1のTLB例外を検出する)」ことと,「the second thread processor may find a second TLB exception at 309 .(第2のスレッドプロセッサは,309で第2のTLB例外を検出し得る)」ことが記載されると共に,上記F.において,「303」の処理が,「309」の処理より先に行われることが記載されているから,引用発明において,「第1のスレッドプロセッサの第1の変換索引バッファ例外を発見する」との処理が,「第2のスレッドプロセッサの第2の変換索引バッファ例外を発見する」との処理より前に行われることは明らかである。
そして,第1の変換索引バッファ例外を発見すると,第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットがセットされるのであるから,第2の変換索引バッファ例外を発見するとの処理が行われる際には,シリアライゼーション・ビットは既にセットされているといえる。
また,ビットがセットされるとの処理は,リセット状態にあるビットをセットすることを意味することは,当業者にとって自明であるし,「第1のスレッドプロセッサの第1の変換索引バッファ例外を発見する」処理より前に変換索引バッファ例外が起きていること,又はシリアライゼーション・ビットがセットされていることが,引用文献1のいずれの箇所にも記載も示唆もされていないことなどから見て,引用発明において,シリアライゼーション・ビットがセットされる前には,シリアライゼーション・ビットはリセット状態にあるといえる。

ウ.「ハンドラ」とは,コンピュータアーキテクチャの技術分野においては,何らかの処理要求が発生したときに起動されるプログラムなどであって,通常のプログラムの流れには組み込まれず,普段は待機しているが,対応すべき処理要求が発生すると通常のプログラムの流れを中断して呼び出され,要求された処理を実行するものを指す技術用語であると解するのが通常である。また,「ハンドラ」には,対応すべき処理要求の種類に応じて,「イベントハンドラ」や「割り込みハンドラ」などがあることも,当業者に広く知られたことである。
そして,本願明細書の段落【0018】の「一般的に,第1のスレッド112の例外ハンドラ122は,スレッド112と114によって共有されたリソースに関連する例外を処理するため,および,例外が処理された後に,リソースのためにハードウェアロックをアンロックするために,命令を取り込み,実行する。」との記載を参酌すると,本願発明における「例外ハンドラ」とは,スレッドによって共有されたリソースに関する例外を処理するためのものであるといえる。してみると,本願発明において,「前記第1のスレッドによる前記TLBに関連付けられた例外ハンドラへのアクセスを許可する」とは,「前記第1のスレッド」から変換索引バッファに関連する例外処理を行うハンドラへのアクセスを許可すること,すなわち,「前記第1のスレッド」から変換索引バッファに関連する例外処理の要求を許可することであると解される。
一方,上記C.の記載によると,引用発明の「例外ハンドラ」は「TLB111内で仮想ページの一致が検出できない際には,TLBミス例外が生成され,TLB111のテーブル201内に不足しているページ変換をリフィル119するため」のものといえるから,引用発明の「例外ハンドラ」は,変換索引バッファに関連する例外処理を行うハンドラであるといえる。そして,スレッドで例外ハンドラを実行する際に,スレッドから例外処理の要求を行うことは,当業者にとって自明であり,例外処理の要求を行う際には,例外処理の要求を行うことが少なくとも許可されることも,当業者にとって自明である。よって,引用発明において「第1のスレッドで例外ハンドラを実行する」際には,少なくとも,「第1スレッド」から変換索引バッファに関連する例外処理の要求を行うことを可能にしているといえる。
してみれば,引用発明の「第1スレッドで例外ハンドラを実行する」ことは,本願発明の「前記第1のスレッドによる前記TLBに関連付けられた例外ハンドラへのアクセスを許可する」ことに相当する。

エ.よって,引用発明において「第1のスレッドプロセッサの第1の変換索引バッファ例外を発見する」処理に続いて,「第1のスレッドで例外ハンドラを実行する」処理と,「第1の変換索引バッファ例外が処理中であることを示す」処理,すなわち,「第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットをセットする」との処理を行うことは,本願発明の「前記TLBロックインジケータがアンロック状態を指示していることに応答して,前記第1のスレッドによる前記TLBに関連付けられた例外ハンドラへのアクセスを許可すること」に相当する。
また,引用発明において,「第2のスレッドプロセッサの第2の変換索引バッファ例外を発見する」との処理に続いて,「第1の変換索引バッファ例外が処理された後に第2の変換索引バッファ例外の処理を行うこと」,すなわち,「第2の変換索引バッファ例外の処理を,第1の変換索引バッファ例外の処理が終わるまで遅延する」との処理を行うことと,本願発明の「前記TLBロックインジケータがロック状態を指示していることに応答して,前記第1のスレッドをスリープ状態にすること」は,「前記TLBロックインジケータがロック状態を指示していることに応答して,前記第1のスレッドの処理を遅延させること」である点で共通する。

(4) 引用発明において,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」ことは,「第1の変換索引バッファ例外の処理」の後に行われることが自明である。さらに,「第1の変換索引バッファ例外の処理」を実行する間は,「第2の変換索引バッファの例外処理」が遅延されているのであるから,引用発明において,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」ことは,「第2の変換索引バッファの例外処理」を遅延した後に行われるといえる。
一方,本願発明においては,「前記TLBロックインジケータを,前記ロック状態を指示することからアンロック状態を指示することに移行すること」は,「前記第1のスレッドをスリープ状態にした後」に行われる。
さらに,上記(3)で検討したことから,引用発明の「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットすること」は,本願発明の「前記TLBロックインジケータを,前記ロック状態を指示することからアンロック状態を指示することに移行すること」に相当するといえるし,引用発明において「第2の変換索引バッファの例外処理」を遅延することと,本願発明において「前記第1のスレッドをスリープ状態」にすることは,「前記第1のスレッドの処理を遅延させる」ことである点で共通するといえる。
してみると,引用発明と本願発明は,「前記第1のスレッドの処理を遅延させた後,前記TLBロックインジケータを,前記ロック状態を指示することからアンロック状態を指示することに移行する」点で共通する。

(5) 引用発明は,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」のであるから,「第1の変換索引バッファ例外の処理が完了する」と,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」といえる。さらに,引用発明は「第1の変換索引バッファ例外の処理が完了すると,例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行する」との処理を行うのであるから,引用発明は,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」ことに応答して,「例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行する」といえる。
また,本願明細書の段落【0047】には「制御ユニットは,スレッド1がウェーク動作を行い,命令パケット動作の実行を再現すること(434)に応答して,スレッド1を覚醒するために信号433を送る。」と記載され,段落【0048】には「パケット動作のウェークや再現434の実行は,スレッド1がスリープ状態420に置かれる前に保存されたスレッド1の前回の状態を再ロードし,TLBミス事象414を生成するパケットの実行を再現する。」と記載されていることから,本願発明において,「前記TLBミス事象を引き起こしたパケットの実行を再現すること」は,スレッドを覚醒するために行うことは明らかである。
してみれば,引用発明の「第1の変換索引バッファ例外の処理が完了すると,例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行すること」と,本願発明の「前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行することに応答して,前記TLBミス事象を引き起こしたパケットの実行を再現することと」は,「前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行することに応答して,前記TLBミス事象を引き起こしたプログラムに戻すこと」である点で共通する。

2.上記1.において示したことから,本願発明と引用発明の一致点及び相違点は,次のとおりである。

[一致点]
変換索引バッファ(TLB)を備えたマルチスレッドプロセッサが実行する方法であって,
前記マルチスレッドプロセッサの第1のスレッドに関連付けられたTLBミス事象を受信することと;
前記TLBロックインジケータがアンロック状態を指示していることに応答して,前記第1のスレッドによる前記TLBに関連付けられた例外ハンドラへのアクセスを許可することと;
前記TLBロックインジケータがロック状態を指示していることに応答して,
前記第1のスレッドの処理を遅延させることと;
前記第1のスレッドの処理を遅延させた後,前記TLBロックインジケータを,前記ロック状態を指示することからアンロック状態を指示することに移行することと;
前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行することに応答して,前記TLBミス事象を引き起こしたプログラムに戻すことと,
を備える方法。

[相違点1]
本願発明においては,マルチスレッドプロセッサが「変換索引バッファ(TLB)」に加えて「制御論理回路とTLBロックインジケータとを備えた」ものであるのに対して,引用発明では,マルチスレッドプロセッサが「制御論理回路とTLBロックインジケータとを備えた」ものであるとの限定がなされていない点。

[相違点2]
本願発明においては,「前記TLBロックインジケータはグローバル状態レジスタの1以上のビットを備える」ものであるのに対して,引用発明では,そのような限定がなされていない点。

[相違点3]
本願発明は,「前記TLBロックインジケータをチェックする」構成を備えているのに対して,引用発明では「チェックする」構成に言及されていない点。

[相違点4]
本願発明は,「前記第1のスレッドをスリープ状態にする」,「なお,前記第1のスレッドをスリープ状態にすることは前記制御論理回路からのスリープ命令の受信に応答して実行される」構成を備えているのに対して,引用発明は「スリープ状態にする」構成に言及されていない点。

[相違点5]
本願発明は,「前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行することに応答して,前記TLBミス事象を引き起こしたパケットの実行を再現する」ことと,「前記パケットは複数の命令を備える」構成を備えているのに対して,引用発明は「パケットの実行を再現する」構成及び「前記パケットは複数の命令を備える」構成に言及されていない点。


第6.判断

1.相違点1及び相違点2について
(1) 引用発明においては,「第1の変換索引バッファ例外が処理中であることを示すために,シリアライゼーション・ビットをセットする」,「第1の変換索引バッファ例外の処理が終了したことを示すために,シリアライゼーション・ビットをリセットする」,及び「第2の変換索引バッファ例外の処理を,第1の変換索引バッファ例外の処理が終わるまで遅延する」との処理が行われるのであるから,引用発明の「マルチスレッドプロセッサ」が,当該処理を制御する機構を備えていることは,当業者にとって自明である。
さらに,上記E.には,「the present invention may be realized in hardware, software, or a combination of hardware and software.(本発明は,ハードウェア,ソフトウェア,又はハードウェアとソフトウェアの組合せで実現されてもよい)」ことが記載されているし,所望の処理を制御する機構を「ハードウェア」で形成する際に,「制御論理回路」からなる「ハードウェア」を用いることは,当業者が通常選択する常とう手段であるといえる。してみれば,引用発明において,上記した処理を制御する機構を「マルチスレッドプロセッサ」が備える「制御論理回路」で実現することは,当業者が当然に想到し得ることである。

(2) 「グローバル」との用語は,本願特許請求の範囲又は明細書において,その意味が定義されるものではなく,マルチスレッドの技術分野においては,複数のスレッドによって共用されるとの意味で用いられることが当業者における技術常識であるから,本願発明の「グローバル状態レジスタ」をその字句のとおりに解釈すれば,複数のスレッドから共用されるレジスタであって,何らかの「状態」を示す情報を格納するレジスタの意味であると解される。
そして,引用発明における「シリアライゼーション・ビット」は,少なくとも第1及び第2のスレッドから参照され得る情報であって,変換索引バッファ例外が処理中であることを示す情報であるから,「グローバル」な性質を有し,何らかの「状態」を示す情報であるといえる。さらに,ビットで表現される情報をレジスタに格納することは,コンピュータアーキテクチャの技術分野において当業者が通常選択する慣用技術にすぎないし,参考文献1(上記G.)及び参考文献2(上記H.)にみられるように,マルチスレッドプロセッサ内にフラグビットを格納するレジスタを備えることは,当該技術分野における周知技術であるから,引用発明における「シリアライゼーション・ビット」を,マルチスレッドプロセッサ内に備えるレジスタに格納することは,当業者が通常選択することにすぎない。
してみれば,引用発明において,「シリアライゼーション・ビット」が,複数のスレッドから共用されるレジスタであって,何らかの「状態」を示す情報を格納するレジスタ,すなわち「グローバル状態レジスタ」の1以上のビットを備え,当該「グローバル状態レジスタ」がマルチプロセッサ内に備えられることは,当業者が当然に想到し得ることである。

(3) 上記(1)及び(2)に示したことから,引用発明を,マルチスレッドプロセッサが「変換索引バッファ(TLB)」に加えて「制御論理回路とTLBロックインジケータとを備えた」ものとして,「前記TLBロックインジケータはグローバル状態レジスタの1以上のビットを備える」ものとすること,すなわち,相違点1及び2に係る構成とすることは,当業者が容易に想到し得ることである。

2.相違点3について
引用発明において,「第2の変換索引バッファ例外の処理は,第1の変換索引バッファ例外の処理が終わるまで遅延する」との処理を行うためには,第1の変換索引バッファ例外が処理中であることを示すための「シリアライゼーション・ビット」がセットされているか否かをチェックする必要があることは,当業者にとって自明である。
してみれば,引用発明において,「シリアライゼーション・ビット」がセットされているか否かをチェックする構成とすることは,当業者が必然的に想到し得ることである。

3.相違点4について
参考文献3(上記I.)に「マルチスレッドプログラムでは,・・・(中略)・・・スレッドは,保護部分にアクセスする際にロックを取得するため,そのスレッドがロックを保持している間,他のスレッドは同じ部分にアクセスすることができない。・・・(中略)・・・ロックを待っているスレッドは,スリープ待ち行列に入り」と記載され,参考文献4(上記J.)に「プロセッサはロックが利用可能となるのを待機しているが,キューへの待機中にはスリープ状態となるようにしてもよい。・・・(中略)・・・ロックを求めるプロセッサは,ハイパースレッドプロセッサの論理プロセッサであってもよい。」と記載されているように,マルチスレッドの技術分野において,他のスレッドによってロックされている部分が利用可能となるのを待機する間,当該待機するスレッドをスリープ状態にすることは,当業者が通常なし得る周知技術である。
そして,引用発明と上記周知技術は,マルチスレッドの技術分野において,他のスレッドによってロックされている部分が利用可能となるのを待機する点で共通である。
さらに,上記1.(1)に示したように,引用発明において,各処理を制御する機構を「マルチスレッドプロセッサ」が備える「制御論理回路」で実現することは,当業者が当然に想到し得ることであるから,引用発明における各処理を,「制御論理回路」からの命令の受信に応答して行う構成とすることは,当業者が当然に想到し得ることである。
してみれば,引用発明において「第2の変換索引バッファ例外の処理を,第1の変換索引バッファ例外の処理が終わるまで遅延する」際に,「第2の変換索引バッファ例外の処理」を行うスレッドをスリープ状態にすることは,他のスレッドによってロックされている部分が利用可能となるのを待機する際の構成を具現化するために,引用発明と共通するマルチスレッドの技術分野における周知技術を適用することにすぎないのであるから,当業者が適宜選択し得る設計事項といえるし,「制御論理回路」からの命令の受信に応答してスレッドをスリープ状態にすることは,当業者が当然に想到し得ることであるといえる。

4.相違点5について
本願発明においては,「パケットの実行を再現する」旨の言及がなされているが,「パケット」との用語は,データ通信ネットワークを流れるデータの単位の意味で用いられることが一般的であるから,「パケット」との用語を一般的な意味で解した場合には,「パケット」は,必ずしも「実行」され得るものではないといえる。そこで,本願明細書の記載を参酌して,「パケットの実行を再現する」との構成を解する。
本願明細書の段落【0024】には,「制御論理回路106はTLBロックインジケータ110をアンロックし,・・・(中略)・・・1つ以上のスリープ状態のスレッド,・・・(中略)・・・を覚醒(awaken)する。」と記載され,段落【0025】には,「第2のスレッド114は覚醒される,そして,・・・(中略)・・・TLBミス事象を起こす命令パケットを再現する。再現された命令パケットは,TLB 108で仮想アドレスの変換のために要求を繰り返す。」と記載されている。当該記載を参酌すれば,本願発明の「前記TLBミス事象を引き起こしたパケットの実行を再現する」構成は,仮想アドレスの変換のための要求を行い,その結果として変換索引バッファミス事象を起こした「命令パケット」の実行を再現する態様といえる。
そして,プログラムを実行する際に,当該プログラムを各「命令パケット」に分割してプロセッサに実行させること,及び1つの「命令パケット」が複数の命令を備えることは,いずれも,コンピュータアーキテクチャの技術分野における技術常識であるから,引用発明において,所望の「プログラムに戻す命令を実行する」ことを,複数の命令を備える所望の「命令パケット」の実行を再現することとすることは,当業者が当然になし得ることといえる。
してみれば,引用発明において,「例外ハンドラは,第1のスレッドプロセッサを変換索引バッファを検索したプログラムに戻す命令を実行する」構成を,「前記TLBミス事象を引き起こしたパケットの実行を再現すること」において「なお,前記パケットは複数の命令を備える」構成とすることは,当業者が当然に想到し得ることである。

5.小括
上記で検討したごとく,各相違点はいずれも格別なものではなく,また,各相違点を総合的に勘案しても,本願発明の奏する作用効果は,上記引用発明,並びに参考文献1ないし4にみられる周知技術の奏する作用効果から予測される範囲内のものにすぎず,格別顕著なものということはできない。
したがって,本願発明は,上記引用発明,並びに参考文献1ないし4にみられる周知技術に基づいて,当業者が容易に発明をすることができたものである。


第7.むすび
以上のとおり,本願発明は,特許法第29条第2項の規定により特許を受けることができないから,他の請求項に係る発明について検討するまでもなく,本願は拒絶されるべきものである。
よって,結論のとおり審決する。
 
審理終結日 2015-03-16 
結審通知日 2015-03-17 
審決日 2015-03-30 
出願番号 特願2013-34561(P2013-34561)
審決分類 P 1 8・ 121- Z (G06F)
最終処分 不成立  
前審関与審査官 久保 光宏  
特許庁審判長 山崎 達也
特許庁審判官 田中 秀人
小林 大介
発明の名称 ロックインジケータを有するマルチスレッドプロセッサ  
代理人 井関 守三  
代理人 井上 正  
代理人 岡田 貴志  
代理人 堀内 美保子  
代理人 砂川 克  
代理人 峰 隆司  
代理人 福原 淑弘  
代理人 蔵田 昌俊  
代理人 佐藤 立志  
代理人 河野 直樹  
代理人 野河 信久  

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