• ポートフォリオ機能


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

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない(前置又は当審拒絶理由) G06F
審判 査定不服 特39条先願 特許、登録しない(前置又は当審拒絶理由) G06F
管理番号 1247134
審判番号 不服2010-3770  
総通号数 145 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2012-01-27 
種別 拒絶査定不服の審決 
審判請求日 2010-02-22 
確定日 2011-11-16 
事件の表示 特願2006-277835「コンピュータシステムのためのプログラマブルなブランチ予測システムおよび方法」拒絶査定不服審判事件〔平成19年 3月 8日出願公開、特開2007- 58875〕について、次のとおり審決する。 
結論 本件審判の請求は、成り立たない。 
理由 第1.手続の経緯
本願は、
平成9年7月25日(パリ条約による優先権主張外国庁受理1996年8月2日、アメリカ合衆国)を国際出願日とする特願平10-508025号の一部を平成18年10月11日に新たな特許出願としたものであって、
平成20年5月8日付けで最初の拒絶理由通知(同年同月12日発送)がなされ、
同年8月12日付けで意見書が提出されるとともに、手続補正がなされ、
同年9月1日付けで最後の拒絶理由通知(同年同月8日発送)がなされ、
平成21年3月9日付けで意見書が提出されるとともに、手続補正がなされ、
平成21年10月14日付けで拒絶査定(同年同月22日発送)がなされ、
平成22年2月22日付けで審判請求がなされるとともに、手続補正がなされ、
同年6月3日付けで審査官より特許法第164条第3項の規定による前置報告がなされ、
同年8月6日付けで当審より審尋(同年同月12日発送)がなされ、
この審尋に対して、同年11月11日付けで回答書が提出され、
平成23年2月4日付けで当審より最初の拒絶理由通知(同年同月8日発送)がなされ、
同年5月2日付けで意見書が提出されるとともに、手続補正がなされたものである。

第2.本願発明の認定
平成23年5月2日付けの手続補正により補正された、本願の特許請求の範囲の請求項1は次のとおりである。

「コンピュータシステムにおいてブランチを予測するためのシステムにおいて、
ブランチ命令および予測オペレーションを含む複数の命令からなるプログラムコードを含んでいるメモリであって、前記予測オペレーションは(i)前記ブランチ命令に対して前記プログラムコードにおける所定の位置に挿入されており、(ii)該プログラムコードの実行前に該プログラムコードへ挿入されている、メモリと、
前記プログラムコードにおけるブランチ命令への参照、およびブランチが行われるが否かについてのブランチ命令の予測結果を有する前記ブランチ命令に対応する予測データを含むストアと、
ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測結果を変更するための変更手段と、
前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段であって、前記変更手段とは独立して動作する予測手段と、
を備えることを特徴とするシステム。」

上記の記載のうち、「ブランチが行われるが否か」の部分は明らかな誤記であり、正しくは「ブランチが行われるか否か」である。よって、本願の請求項1に係る発明(以下、「本願発明」という。)は、次のものと認められる。

「コンピュータシステムにおいてブランチを予測するためのシステムにおいて、
ブランチ命令および予測オペレーションを含む複数の命令からなるプログラムコードを含んでいるメモリであって、前記予測オペレーションは(i)前記ブランチ命令に対して前記プログラムコードにおける所定の位置に挿入されており、(ii)該プログラムコードの実行前に該プログラムコードへ挿入されている、メモリと、
前記プログラムコードにおけるブランチ命令への参照、およびブランチが行われるか否かについてのブランチ命令の予測結果を有する前記ブランチ命令に対応する予測データを含むストアと、
ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測結果を変更するための変更手段と、
前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段であって、前記変更手段とは独立して動作する予測手段と、
を備えることを特徴とするシステム。」

第3.拒絶査定が確定した原出願に係る発明の認定
本願の原出願であり、拒絶査定が確定している特願平10-508025号(以下、特願平10-508025号を「原出願」という。)の請求項1及び請求項4に係る発明(以下、原出願の請求項4に係る発明を「原出願発明」という。)は、原出願における平成17年11月24日付け手続補正により補正された明細書及び図面の記載からみて、下記のとおりのものと認められる。

「1.コンピュータシステムにおいてブランチを予測するためのシステムにおいて、
ブランチ命令を含む複数の命令からなるプログラムコードと、前記ブランチ命令に対して前記プログラムコードにおける所定の位置に該プログラムコードの実行前に該プログラムコードへ挿入される予測オペレーションとを含むメモリと、
前記プログラムコードにおけるブランチ命令への参照、およびブランチ命令の予測結果を有する対応する予測データを含むストアと、
ブランチ命令の挙動の予測に影響するように前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測データを変更するための変更手段と、
前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段と、
を備えることを特徴とするシステム。

4.前記予測オペレーションは、ブランチ命令の実行前にそのブランチ命令が行われると予想されるかを前記プロセッサが決定するように予測命令を備える請求項1記載のシステム。」

第4.本願発明と原出願発明の対比
本願における、平成23年5月2日付け手続補正は、平成22年2月22日付け手続補正による請求項1における「ブランチ命令の予測結果」の部分を(上記「第2.本願発明の認定」で指摘した明らかな誤記を「第2.本願発明の認定」と同様に正すことにすると、)「ブランチが行われるか否かについてのブランチ命令の予測結果」とすることを含む。
平成22年2月22日付け手続補正による請求項4に「前記予測オペレーションは、ブランチ命令の実行前にそのブランチが行われると予想されるかを前記プロセッサが決定するように予測命令を備える請求項1記載のシステム。」と記載されていて、この平成22年2月22日付け手続補正による請求項4の記載は、平成23年5月2日付け手続補正後の請求項1における「ブランチが行われるか否かについてのブランチ命令の予測結果」(明らかな誤記は正している。)と技術的に関連するものである。
そして、平成23年5月2日付け手続補正が行われる前である平成23年2月4日付け拒絶理由通知において当審は、本願における平成22年2月22日付け手続補正による請求項4に係る発明と原出願の請求項4に係る発明(原出願発明)が同一であるとしている。
このように、本願においては、平成23年5月2日付け手続補正後の請求項1に係る発明(本願発明)と平成22年2月22日付け手続補正による請求項4に係る発明が対応するものであり、かつ、平成23年2月4日付け拒絶理由通知において、本願における平成22年2月22日付け手続補正による請求項4に係る発明と原出願の請求項4に係る発明(原出願発明)とが同一であるか否かを検討したのであるから、以下では、本願における平成23年5月2日付け手続補正後の請求項1に係る発明(本願発明)と原出願の請求項4に係る発明(原出願発明)とを比較して、同一であるか否かを検討する。

メモリとして、本願発明は「ブランチ命令および予測オペレーションを含む複数の命令からなるプログラムコードを含んでいるメモリであって、前記予測オペレーションは(i)前記ブランチ命令に対して前記プログラムコードにおける所定の位置に挿入されており、(ii)該プログラムコードの実行前に該プログラムコードへ挿入されている、メモリ」を備えるのに対し、原出願発明は「ブランチ命令を含む複数の命令からなるプログラムコードと、前記ブランチ命令に対して前記プログラムコードにおける所定の位置に該プログラムコードの実行前に該プログラムコードへ挿入される予測オペレーションとを含むメモリ」を備える。
本願の請求項1では「ブランチ命令および予測オペレーションを含む複数の命令からなるプログラムコード」と記載されているのに対し、原出願の請求項1では「ブランチ命令を含む複数の命令からなるプログラムコード」と記載されている。
しかしながら、原出願の請求項1には、「予測オペレーション」は「前記ブランチ命令に対して前記プログラムコードにおける所定の位置に該プログラムコードの実行前に該プログラムコードへ挿入される」ものであり、また、「予測オペレーション」は「前記プログラムコード内に含まれた」ものであることが、別途記載されているので、原出願発明における「プログラムコード」に「予測オペレーション」が含まれるものであることは明らかである。
また、本願の請求項1における「前記予測オペレーションは(i)前記ブランチ命令に対して前記プログラムコードにおける所定の位置に挿入されており、(ii)該プログラムコードの実行前に該プログラムコードへ挿入されている」という記載と、原出願の請求項1における「前記ブランチ命令に対して前記プログラムコードにおける所定の位置に該プログラムコードの実行前に該プログラムコードへ挿入される予測オペレーション」という記載を比較すると、本願の請求項1においては「挿入されており」または「挿入されている」という用語が用いられているのに対し、原出願の請求項1においては「挿入される」という用語が用いられている。
しかしながら、原出願の請求項1には「前記プログラムコード内に含まれた前記予測オペレーション」と別途記載されてており、この記載は「プログラムコード」の中に「予測オペレーション」が含まれている状態を示すものであるから、原出願の請求項1における「前記ブランチ命令に対して前記プログラムコードにおける所定の位置に該プログラムコードの実行前に該プログラムコードへ挿入される予測オペレーション」という記載箇所における「挿入される」という用語は、「プログラムコード」に「予測オペレーション」が挿入されている状態を示すものであることは自明である。
以上のように、メモリに関する発明特定事項に関して、本願発明と原出願発明は実質的に同一である。

ストアとして、本願発明は「前記プログラムコードにおけるブランチ命令への参照、およびブランチが行われるか否かについてのブランチ命令の予測結果を有する前記ブランチ命令に対応する予測データを含むストア」を備えるのに対し、原出願発明は「前記プログラムコードにおけるブランチ命令への参照、およびブランチ命令の予測結果を有する対応する予測データを含むストア」を備える。
本願の請求項1では「ブランチが行われるか否かについてのブランチ命令の予測結果」(明らかな誤記は正してある。)と記載されているのに対し、原出願の請求項1では「ブランチ命令の予測結果」と記載されている。
しかしながら、原出願の請求項1には「前記予測オペレーションの実行に応答して前記ストアにおける前記予測データを変更する」と記載され、原出願の請求項4には「前記予測オペレーションは、ブランチ命令の実行前にそのブランチ命令が行われると予想されるかを前記プロセッサが決定するように予測命令を備える」と別途記載されている。つまり、原出願発明においては、「予測オペレーション」により「予測データを変更する」ものであり、かつ、「予測オペレーション」により「ブランチ命令が行われると予想されるかを前記プロセッサが決定するように」されるものであるから、「予測データ」はブランチが行われるか否かについてのものである。そして、原出願発明では「ブランチ命令の予測結果を有する対応する予測データ」なのであるから、結局のところ、原出願発明においても「ブランチ命令の予測結果」はブランチが行われるか否かについてのものである。
また、本願の請求項1では「前記ブランチ命令に対応する予測データ」と記載されているのに対し、原出願の請求項1では「対応する予測データ」と記載されている。
しかしながら、原出願の請求項1には「前記プログラムコードにおけるブランチ命令への参照、およびブランチ命令の予測結果を有する対応する予測データ」と記載されているのであり、「予測データ」が「ブランチ命令への参照」を有するものである以上、「予測データ」が「ブランチ命令」に対応するものであることは自明である。
以上のように、ストアに関する発明特定事項に関して、本願発明と原出願発明は実質的に同一である。

変更手段として、本願発明は「ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測結果を変更するための変更手段」を備えるのに対し、原出願発明は「ブランチ命令の挙動の予測に影響するように前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測データを変更するための変更手段」を備える。
本願の請求項1では「前記予測結果を変更する」と記載されているのに対し、原出願の請求項1では「前記予測データを変更する」と記載されている。
しかしながら、原出願の請求項1には、「前記プログラムコードにおけるブランチ命令への参照、およびブランチ命令の予測結果を有する対応する予測データ」と別途記載されている。つまり、「予測データ」は「ブランチ命令への参照」と「ブランチ命令の予測結果」から構成されるものである。原出願の請求項1には、「変更手段」が変更する対象が「前記予測データ」であることが記載されているものの、「予測データ」を構成する「ブランチ命令への参照」と「ブランチ命令の予測結果」のうち、「ブランチ命令への参照」はブランチ命令を特定する情報(例えば、ブランチ命令のアドレス)を示すに過ぎず、当該ブランチ命令の挙動の予測内容が変更されるときに何ら変更されるものではないことは自明であるから、原出願発明においても、「変更手段」が変更する対象は実質的には「ブランチ命令の予測結果」である。
以上のように、変更手段に関する発明特定事項に関して、本願発明と原出願発明は実質的に同一である。

予測手段として、本願発明は「前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段であって、前記変更手段とは独立して動作する予測手段」を備えるのに対し、原出願発明は「前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段」を備える。
本願の請求項1では「前記変更手段とは独立して動作する予測手段」と記載されているのに対し、原出願の請求項1では同じ文言の記載がない。
しかしながら、原出願の請求項1に「ブランチ命令の挙動の予測に影響するように前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測データを変更するための変更手段」と記載されている。つまり、原出願発明における「変更手段」は「前記予測オペレーションの実行に応答して」動作するものであり、「予測手段」による「ブランチ命令の挙動をハードウェアで予測する」動作に伴って「変更手段」が動作するわけではない。このように、原出願発明においても、「予測手段」は「変更手段」とは独立して動作するものである。
以上のように、予測手段に関する発明特定事項に関して、本願発明と原出願発明は実質的に同一である。

(なお、念のため、本願の請求項1における「前記変更手段とは独立して動作する予測手段」という記載が意味するところについて、本願明細書等の記載を検討すると、明細書の【0034】?【0035】に下記のとおりの記載がある。

「【0034】
本発明は、P-STORE38内に記憶された予測データを、自動ブランチプレディクタから独立して変更するシステム及び方法を提供する。本発明は、いつでも、予測データを変更し得る。上述の自動ブランチプレディクタは、P-STORE内に記憶された予測データを用いているけれど、本発明は、プログラムの実行中に、予測オペレーションに応答して、予測データを発生及び/又は変更する。…(中略)…しかしながら、プログラムが実行され始めると、プロシージャコール行き先は、後述のように、予測オペレーションを用いて決定されて、正しい行き先が、プロシージャコール命令の実行の前に、P-STORE内にロードされる。従って、実際のタスクスイッチ命令が実行されているとき、自動ブランチプレディクタは、本発明によって提供される更新された予測データに基づいて、プロシージャコールの行き先を正しく予測することになる。
【0035】
本発明は、任意の自動ブランチ予測システムと協働して、後に詳細に記述する予測オペレーションに基づいて、予測データを修正する。本発明は、従来の自動ブランチ予測システムの精度を向上するが、本発明は予測データだけを更新し、変更し、アクセスするから、自動ブランチプレディクタの動作を邪魔することはない。図示の実施例において、P-STORE内のデータを自動ブランチプレディクタとは独立に修正する能力は、P-WRITEライン48及びP-ADDR ライン50によって提供される。これらのラインは、P-STORE38内に記憶された予測データを更新するアップデータ52に接続されている。…(後略)…」

上記した明細書の【0034】?【0035】の記載を参酌しても、本願の請求項1における「前記変更手段とは独立して動作する予測手段」という記載の意味するところは、「予測手段」(自動ブランチプレディクタ、自動ブランチ予測システム)による分岐予測処理とは別に、「予測オペレーション」に基づく「変更手段」(アップデータ52)による「予測データ」の変更処理が行われる、という動作の態様の程度のことであるというほかない。そして、原出願発明が同様の動作の態様であることは明らかであるから、本願の請求項1の「前記変更手段とは独立して動作する予測手段」という記載を解釈するに際して本願明細書の記載を参酌したとしても、予測手段に関する発明特定事項に関して、本願発明と原出願発明は実質的に同一である。)

以上で検討したように、本願発明と原出願発明は同一である。

第5.特許法第39条第2項の規定に関する判断
上記「第4.本願発明と原出願発明の対比」で示したように、本願発明と原出願発明は同一である。
ところで、本願および原出願はいずれも平成9年7月25日に出願されたものであるため、平成10年法律第51号改正附則第2条第1項によりなお従前の例によるとされる同法による改正前の特許法第39条第5項の規定が適用される。そのため、原出願の拒絶査定が確定しているものの、特許法第39条第2項の規定の適用について、原出願は初めからなかったものとはみなされない。
既に指摘したように、本願発明と原出願発明は同一であり、原出願については拒絶査定が確定していて協議をすることができないのであるから、特許法第39条第2項の規定により、本願は特許を受けることができない。

第6.先行技術文献に記載されている技術的事項と先行技術文献に記載されている発明の認定
6の1.引用例1に記載されている技術的事項
当審が拒絶理由通知において引用した特開昭62-293434号公報(昭和62年12月21日出願公開。以下、「引用例1」という。)には、図面とともに以下の技術的事項が記載されている。

(1-1)
「本発明は分岐先予測制御方式、特に、命令先取り処理方式を採用した情報処理装置における分岐予測テーブルによる分岐先予測制御方式に関する。」(第1頁左下欄下から3行目?同頁同欄最終行)

(1-2)
「分岐予測テーブルには分岐命令が実行されその分岐が成功した場合にその分岐命令アドレスと分岐先アドレスが対で登録され、命令語の読み出しと同時にその命令語アドレスで検索される。この検索がヒットする(命令語アドレスと一致する分岐先アドレスが登録されている)と、次に読み出す命令語のアドレスとしてヒットしたエントリの分岐先アドレスを使うようにして、命令実行時間を短縮している。」(第1頁右下欄第8行目?同頁同欄第17行目)

(1-3)
「第1図、第2図および第3図は本発明の第1,第2および第3の各実施例であり、分岐先アドレスロード命令(図のLBR,LB,LBC命令)を使用した命令列を示す。尚、各図の命令列内の破線は以下の説明に特に必要のない命令列部分の省略表示である。
第1図はサブルーチンのリターン用の分岐命令BCRの分岐先アドレスを分岐先アドレスロード命令LBRで分岐予測テーブルにロードしている例である。
LABEL A_(0)のロード命令Lで主プログラムのリターン先アドレス(LABEL A_(3)の内容)がR_(1)レジスタにロードされる。分岐先アドレスロード命令LBRは現命令アドレス(LABEL A_(1)の対応アドレス)と即値I_(1)を加算して分岐命令アドレスとし、レジスタR_(1)の内容を分岐先アドレスとして分岐予測テーブルにロードする。
分岐先アドレスロード命令LBRの即値I_(1)はこの分岐先アドレスロード命令LBRのアドレスを加えると分岐命令BCRのアドレスになる値を設定する。これによってLABEL A_(2)の命令語の読み出しと同時に実行される分岐予測テーブルの検索はヒットし、その分岐先アドレスは分岐命令BCRのリターンアドレス(R_(1)の内容)と一致する。従って主プログラムの各所からこのサブルーチンがコールされ、リターンアドレスが毎回変る場合でもこのリターン用分岐命令の分岐予測は成功する。」(第2頁右上欄第8行目?同頁左下欄第15行目)

(1-4)
「第2図はアドレスLABEL A_(3)?A_(2)のループ処理の以前に分岐先アドレスロード命令LBを適用した例を示す。分岐先アドレスロード命令LBRとLBの差異は、前者の分岐先アドレスがレジスタR_(1)にあるが後者のそれはメモリに対するアドレスLABEL A_(3)にある点のみである。
アドレスLABEL A_(3)?A_(2)のループが以前に実行されていても、ループ終了時の計数用の分岐命令BCTは分岐不成功で終了している。分岐予測テーブルの登録は分岐不成功時にその分岐命令に対応するエントリを無効化する。従って、アドレスLABEL A_(3)?A_(2)ループが再実行される場合、分岐命令BCTは分岐予測テーブル上になく、そのままループの実行を開始すると1回目のループ時かならず分岐命令BCTの分岐予測失敗となる。これを防ぐため分岐先アドレスロード命令LBで分岐命令BCTのアドレス及び分岐先アドレスを分岐予測テーブルにロードしている。」(第2頁左下欄第16行目?同頁右下欄第14行目)

(1-5)
「第3図は条件付の分岐命令BCに対する分岐先アドレスロード命令LBCの適用例を示している。分岐先アドレスロード命令LBCの即値I_(1)及び分岐先のアドレスLABEL A_(3)は分岐先アドレスロード命令LBと同じで、即値I_(1)は分岐先アドレスロード命令LBCのアドレスに加算すると分岐命令BCのアドレスを指すように設定される。
マスク指定M_(1)の値は分岐命令BCのマスク指定M_(1)と同じ値を設定し、条件コードを調べるために使用する。分岐先アドレスロード命令LBCではマスク指定M_(1)と条件コードの値により、条件分岐が成功する条件の場合には分岐命令アドレス及び分岐先アドレスを分岐予測テーブルに登録する。マスク指定M_(1)と条件コードの値により条件分岐が不成功となる場合には、分岐命令アドレスで分岐予測テーブルを検索し登録されている場合はそのエントリを無効化する。
以上の処理により条件分岐の分岐成功、不成功が変化する場合にも分岐予測は成功する。但し、分岐先アドレスロード命令LBCの追加により、その実行時間が発生するため、分岐成功、不成功の変化の多い条件分岐命令でかつ条件分岐命令の命令語読み出し時点までに分岐先アドレスロード命令LBCの実行を完了させることができる場合(分岐先アドレスロード命令LBCと分岐命令BCの間の他の命令実行時間がパイプライン段数程度ある場合)に性能改善が大きくなる。」(第2頁右下欄第15行目?第3頁右上欄第2行目)

6の2.引用発明の認定
上記(1-1)に「本発明は分岐先予測制御方式、特に、命令先取り処理方式を採用した情報処理装置における分岐予測テーブルによる分岐先予測制御方式に関する。」と記載されていることから、引用例1は、情報処理装置において分岐を予測するための分岐先予測制御方式に関するものであると認められる。

上記(1-3)に「第1図、第2図および第3図は本発明の第1,第2および第3の各実施例であり、分岐先アドレスロード命令(図のLBR,LB,LBC命令)を使用した命令列を示す。尚、各図の命令列内の破線は以下の説明に特に必要のない命令列部分の省略表示である。…(改行)…第1図はサブルーチンのリターン用の分岐命令BCRの分岐先アドレスを分岐先アドレスロード命令LBRで分岐予測テーブルにロードしている例である。」と記載され、上記(1-4)に「第2図はアドレスLABEL A_(3)?A_(2)のループ処理の以前に分岐先アドレスロード命令LBを適用した例を示す。…(中略)…アドレスLABEL A_(3)?A_(2)のループが以前に実行されていても、ループ終了時の計数用の分岐命令BCTは分岐不成功で終了している。…(中略)…分岐先アドレスロード命令LBで分岐命令BCTのアドレス及び分岐先アドレスを分岐予測テーブルにロードしている。」と記載され、上記(1-5)に「第3図は条件付の分岐命令BCに対する分岐先アドレスロード命令LBCの適用例を示している。」と記載されていることから、引用例1の第1図乃至第3図に示されているものは、分岐命令BCR、BCT、BCおよび分岐先アドレスロード命令LBR、LB、LBCを含む複数の命令からなる命令列であると認められる。

上記(1-3)に「LABEL A_(0)のロード命令Lで主プログラムのリターン先アドレス(LABEL A_(3)の内容)がR_(1)レジスタにロードされる。分岐先アドレスロード命令LBRは現命令アドレス(LABEL A_(1)の対応アドレス)と即値I_(1)を加算して分岐命令アドレスとし、レジスタR_(1)の内容を分岐先アドレスとして分岐予測テーブルにロードする。」と記載され、上記(1-4)に「分岐先アドレスロード命令LBRとLBの差異は、前者の分岐先アドレスがレジスタR_(1)にあるが後者のそれはメモリに対するアドレスLABEL A_(3)にある点のみである。…(中略)…分岐先アドレスロード命令LBで分岐命令BCTのアドレス及び分岐先アドレスを分岐予測テーブルにロードしている。」と記載され、上記(1-5)に「分岐先アドレスロード命令LBCの即値I_(1)及び分岐先のアドレスLABEL A_(3)は分岐先アドレスロード命令LBと同じで、即値I_(1)は分岐先アドレスロード命令LBCのアドレスに加算すると分岐命令BCのアドレスを指すように設定される。…(改行)…マスク指定M_(1)の値は分岐命令BCのマスク指定M_(1)と同じ値を設定し、条件コードを調べるために使用する。分岐先アドレスロード命令LBCではマスク指定M_(1)と条件コードの値により、条件分岐が成功する条件の場合には分岐命令アドレス及び分岐先アドレスを分岐予測テーブルに登録する。マスク指定M_(1)と条件コードの値により条件分岐が不成功となる場合には、分岐命令アドレスで分岐予測テーブルを検索し登録されている場合はそのエントリを無効化する。」と記載されていることから、引用例1における分岐先予測制御方式は、命令列内に含まれた分岐先アドレスロード命令LBR、LB、LBCの実行に応答して、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段を備えるものであると認められる。また、この手段は、分岐命令BCR、BCT、BCの挙動の予測に影響するように用いられることは自明である。

引用例1の第1図乃至第3図に示された命令列から明らかなように、引用例1における分岐先アドレスロード命令LBR、LB、LBCは、分岐命令BCR、BCT、BCに対して命令列における所定の位置に配置されているものであり、引用例1における分岐先アドレスロード命令LBR、LB、LBCは、命令列の実行前に命令列に配置されているものであると認められる。

上記(1-2)に「分岐予測テーブルには分岐命令が実行されその分岐が成功した場合にその分岐命令アドレスと分岐先アドレスが対で登録され、命令語の読み出しと同時にその命令語アドレスで検索される。この検索がヒットする(命令語アドレスと一致する分岐先アドレスが登録されている)と、次に読み出す命令語のアドレスとしてヒットしたエントリの分岐先アドレスを使うようにして、命令実行時間を短縮している。」と記載され、上記(1-3)に「分岐先アドレスロード命令(図のLBR,LB,LBC命令)」と記載されていることから、引用例1における分岐先予測制御方式は、命令列における分岐命令BCR、BCT、BCの分岐命令アドレスおよび分岐先アドレスを有する分岐命令BCR、BCT、BCに対応するエントリを含む分岐予測テーブルと、分岐予測テーブルにおけるエントリに基づいて分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段を備えるものと認められる。

そして、既に示したように、引用例1における分岐先予測制御方式は、命令列内に含まれた分岐先アドレスロード命令LBR、LB、LBCの実行に応答して、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段を備えるものであるから、引用例1における分岐先予測制御方式における、分岐予測テーブルにおけるエントリに基づいて分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段は、分岐予測テーブルにおける変更されたエントリに基づいて分岐命令の挙動を予測して次に読み出すべき命令語を先取りする手段であると認められる。

以上に示したように、引用例1における、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段は、分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段とは別に動作するものであり、両手段が動作するための契機が異なる(分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段は、分岐先アドレスロード命令LBR、LB、LBCが契機となり動作するのに対し、分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段は、分岐命令BCR、BCT、BCが契機となり動作するものである。)から、分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段が、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段とは独立して動作することは自明である。

上記引用例1の記載事項及び図面を総合勘案すると、引用例1には、次の発明(以下、「引用発明」という。)が記載されていると認められる。

「情報処理装置において分岐を予測するための分岐先予測制御方式において、
分岐命令BCR、BCT、BCおよび分岐先アドレスロード命令LBR、LB、LBCを含む複数の命令からなる命令列であって、前記分岐先アドレスロード命令LBR、LB、LBCは、(i)分岐命令BCR、BCT、BCに対して命令列における所定の位置に配置されているものであり、(ii)命令列の実行前に命令列に配置されているものである、命令列と、
命令列における分岐命令BCR、BCT、BCの分岐命令アドレスおよび分岐先アドレスを有する分岐命令BCR、BCT、BCに対応するエントリを含む分岐予測テーブルと、
分岐命令BCR、BCT、BCの挙動の予測に影響するように、命令列内に含まれた分岐先アドレスロード命令LBR、LB、LBCの実行に応答して、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段と、
分岐予測テーブルにおける変更されたエントリに基づいて分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段であって、前記分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段とは独立して動作する、分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段と、
を備えることを特徴とする分岐先予測制御方式。」

6の3.引用例2に記載されている技術的事項
当審が拒絶理由通知において引用した特開平6-274352号公報(平成6年9月30日出願公開。以下、「引用例2」という。)には、図面とともに以下の技術事項が記載されている。

(2-1)
「【0015】〔2〕NOP命令に対する制御情報の組み込み
コンパイラにおけるここまでの内容は従来と何等変わらない。本実施例においては、上記最適化処理などによってオブジェクトプログラム中に多用される無操作のNOP命令に、コード生成時に得られるデータ処理装置のハードウェアの制御情報を組み込んで、これを該データ処理装置に通知できるようにするものである。
【0016】図1にはNOP命令を挿入する際のコンパイラの処理が示される。コード生成の段階においては、既に分岐テーブル10、レジスタ割付けテーブル13、ループテーブル11などが作成されている。コンパイラは、それら情報を参照することによって、オブジェクトプログラムで実現すべき処理がどのように進捗するかを把握することができ、これに基づいて、NOP命令にハードウェアの制御情報を組み込む。制御情報が組み込まれるNOP命令は、特に制限されないが、分岐用NOP、リソースコンフリクト通知用NOP、ループ通知用NOP、単なるNOPの4種類とされる。コンパイラは、それらテーブルの情報を参照して、NOP命令を挿入する場合、何れの機能を持つNOP命令にするかを決定し、各々のNOP命令を発行する。」

(2-2)
「【0017】図4には上記4種類の機能を持つNOP命令の一例が示される。特に制限されないが、NOP命令は32ビットから成り、ソフトウェアの動作上は従来の無操作NOP命令と同様にノーオペレーションであるが、データ処理装置にコンパイラ情報を通知するためのフィールドを有する。すなわち、ビット0?13は無操作NOP命令であることを示す従来と同様のノーオペレーションの命令コード(NOPコード)の指定フィールドとされる。そして、ビット14,15が上記機能を示す指定フィールドであり、ビット16?31はオフセットフィールドとされる。
…(中略)…
(2)ビット14,15=1,0のときは分岐通知を意味する。そのNOP命令の実行後、最初に現れる分岐命令の分岐先のアドレスを、そのNOP命令のアドレスからの相対アドレスの形でオフセットに組み込む。このとき、コンパイラは、前記分岐テーブル10を用いる。この機能によれば、データ処理装置は、分岐命令の分岐先アドレスの演算結果を得る時間を待つことなく、分岐先の命令をフェッチすることが可能になる。
…(後略)…」

6の4.引用例3に記載されている技術的事項
当審が拒絶理由通知において引用した特開平8-63356号公報(平成8年3月8日出願公開。以下、「引用例3」という。)には、図面とともに以下の技術事項が記載されている。

(3-1)
「【0207】[第5の実施例]第4の実施例では、分岐予測情報を2つの命令から実行時に生成する。しかし、こうした情報は命令のコンパイル時に既に得られるものである。したがって、分岐予測情報を保持する命令を新たに用意して、コンパイル時にその命令を命令コード中の適切な位置に配置することが考えられる。この第5の実施例はそのような方式を用いて分岐予測情報を命令から得て分岐予測を行なう。
【0208】図23を参照して、分岐予測命令230を新たに設け、オペコード232と、分岐情報234と、分岐先情報236とを含ませる。オペコード232は分岐予測命令を示すコードである。分岐情報234は予測オペレーションやレジスタ番号などを示す。分岐先情報236は分岐先アドレスなどである。
【0209】コンパイラは、分岐の処理に従ってこの分岐予測命令の予測情報を設定し、予測を行なう位置に分岐予測命令をスケジューリングする。
【0210】実行時に命令キャッシュから読出された命令は、命令パイプラインと分岐予測機構とに同時に投入される。分岐予測機構では、分岐予測命令を認識すると、その分岐情報に従って予測を行なう。
【0211】この場合、第4の実施例の図21に示される分岐予測情報生成回路222に代えて、1つの命令から分岐情報および分岐先情報を抽出して分岐予測回路部220に与える回路を設ければよい。
【0212】この実施例では、命令セット中の従来の命令については変更する必要がなく、新たな命令を追加するだけでよい。命令のビット幅が多くなることもない。また、分岐予測情報を供給する余分なハードウェアを用意する必要もないという効果がある。」

6の5.引用例2及び引用例3に例示または記載される周知技術・公知技術の認定
引用例2や引用例3に例示されるような、コンパイラによりコンパイル時に、プログラムコード(命令列)に適宜命令を挿入することは当業者には周知である(以下、この周知技術を「周知技術1」という。)。
特に、引用例2の(2-1)に「コンパイラは、…(中略)…NOP命令にハードウェアの制御情報を組み込む。制御情報が組み込まれるNOP命令は、…(中略)…分岐用NOP…(中略)…とされる。コンパイラは、…(中略)…NOP命令を挿入する場合、何れの機能を持つNOP命令にするかを決定し、各々のNOP命令を発行する。」と記載され、引用例2の(2-2)に「図4には上記4種類の機能を持つNOP命令の一例が示される。…(中略)…NOP命令は…(中略)…データ処理装置にコンパイラ情報を通知するためのフィールドを有する。…(中略)…ビット14,15が上記機能を示す指定フィールドであり、ビット16?31はオフセットフィールドとされる。…(中略)…ビット14,15=1,0のときは分岐通知を意味する。そのNOP命令の実行後、最初に現れる分岐命令の分岐先のアドレスを、そのNOP命令のアドレスからの相対アドレスの形でオフセットに組み込む。」と記載され、引用例3の(3-1)に「第4の実施例では、分岐予測情報を2つの命令から実行時に生成する。しかし、こうした情報は命令のコンパイル時に既に得られるものである。したがって、分岐予測情報を保持する命令を新たに用意して、コンパイル時にその命令を命令コード中の適切な位置に配置することが考えられる。この第5の実施例はそのような方式を用いて分岐予測情報を命令から得て分岐予測を行なう。」、「図23を参照して、分岐予測命令230を新たに設け、…(中略)…分岐先情報236とを含ませる。…(中略)…分岐先情報236は分岐先アドレスなどである。…(中略)…コンパイラは、分岐の処理に従ってこの分岐予測命令の予測情報を設定し、予測を行なう位置に分岐予測命令をスケジューリングする。」と記載されているように、コンパイラによりコンパイル時に、プログラムコード(命令列)に、ブランチ命令(分岐命令)の制御に用いる情報を示すための命令を挿入することも知られたことである(以下、この公知技術を「公知技術1」という。)。

6の6.引用例4に記載されている技術的事項
当審が拒絶理由通知において引用した特開昭53-126837号公報(昭和53年11月6日出願公開。以下、「引用例4」という。)には、図面とともに以下の技術事項が記載されている。

(4-1)
「第1図のような処理フロー(a,b,c,dはある処理単位を表わすとする)において、b→c→b→cのループを複数回まわった後c→dへ抜けるような場合、第2図のようにabの間に分岐指定を行うため、本発明に関る処理eを追加する。処理eが分岐不成立を指定すると、この時点からc→dへ抜けるまでハードウェアは分岐不成功を予測し命令の先取りを行う。このような方法により命令の先取り効果を改善し、処理能力を向上できる。」(第2頁右上欄第6行目?同頁同欄第16行目)

(4-2)
「第4図は制御部7を詳細に示した本発明の適用部5の詳細図である。図において、デコーダ6の出力線11は、分岐指定が”成功”を指示した場合を伝える信号線11-1と”不成功”を指示した場合を伝える信号線11-2より成る。たとえば、次表のように本発明を実現するための命令を定義したとする。

命令形式 f g (f=命令コード部 g=分岐指定部)

分岐成功指定ケース :g=10××…×
分岐不成功指定ケース:g=01××…×
命令コード f=00000000
(値はビット表示 ×…は値を無視する)

このような場合、デコーダ6はf、gの初めの2ビットをデコードし、これらが2進数0000000010の場合は出力線11-1を有効とし、2進数0000000001の場合は出力線11-2を有効とする。このとき出力線11-1および11-2の値をそれぞれフリップフロップ17および18に保持する。一方、実行ユニットにより、予め定めた分岐命令の実行結果を、分岐成功の場合は制御線12-2で、分岐不成功の場合は制御線12-1で報告するようにする。例えば、分岐不成功を指示する命令を実行した場合、フリップフロップ18が2進”1”にセットされる。出力線13-2を、命令の先取り制御を強制的に分岐不成功を予測する制御線として、命令先取り制御部4に送出する。一方出力線13-2(当審注:この箇所は明らかな脱字であり、本来は「を」が追加される。)アンド回路20に接続する。フリップフロップ18が2進”1”の期間に分岐成功が実行ユニットより制御線12-2より報告されるとアンド回路20が開き線25を介してフリップ・フロップ18を2進”0”にリセットする。分岐成功を指示する命令を実行した場合も同様にフリップフロップ17、出力線13-1、アンド回路19および制御線12-1により、分岐成功の予測のもとに命令の先取りを行う。」(第2頁右下欄第2行目?第3頁左上欄第16行目)

6の7.引用例5に記載されている技術的事項
当審が拒絶理由通知において引用した特開平6-124206号公報(平成6年5月6日出願公開。以下、「引用例5」という。)には、図面とともに以下の技術事項が記載されている。

(5-1)
「【0014】分岐命令予測処理部9は、分岐命令実行部8で分岐命令が実行される前にその分岐命令のアドレスから分岐方向を予測し、命令フェッチ部7に予め次の命令をフェッチさせる。分岐予測テーブル10は、分岐命令アドレスに対応して分岐先アドレス、分岐方向予測、Validを格納している。分岐予測テーブル変更命令実行部11は、演算処理部3で実行される所定の命令により、分岐予測テーブル10中の命令アドレス、分岐先アドレス、分岐方向予測を明示的に書き換え得る。
【0015】図4は、分岐予測テーブルを設定するプログラムの例を示す図である。即ち、この図には、分岐予測テーブルに書き込みを行なう命令列の例を示す。この命令中moviは第1引数で示される分岐予測テーブルのフィールドに第2引数で示される値を書き込む命令である。bp,bpa,bptは各々分岐予測テーブルの分岐予測、分岐命令アドレス、分岐予測アドレスの各フィールドを示している。…(後略)…」

6の8.引用例4及び引用例5に記載されている公知技術の認定
引用例4の(4-1)に「第1図のような処理フロー(a,b,c,dはある処理単位を表わすとする)において、b→c→b→cのループを複数回まわった後c→dへ抜けるような場合、第2図のようにabの間に分岐指定を行うため、本発明に関る処理eを追加する。処理eが分岐不成立を指定すると、この時点からc→dへ抜けるまでハードウェアは分岐不成功を予測し命令の先取りを行う。」と記載され、引用例4の(4-2)に「例えば、分岐不成功を指示する命令を実行した場合、フリップフロップ18が2進”1”にセットされる。出力線13-2を、命令の先取り制御を強制的に分岐不成功を予測する制御線として、命令先取り制御部4に送出する。」、「分岐成功を指示する命令を実行した場合も同様にフリップフロップ17、出力線13-1、アンド回路19および制御線12-1により、分岐成功の予測のもとに命令の先取りを行う。」と記載され、引用例5の(5-1)に「分岐予測テーブル変更命令実行部11は、演算処理部3で実行される所定の命令により、分岐予測テーブル10中の命令アドレス、分岐先アドレス、分岐方向予測を明示的に書き換え得る。…(中略)…図4は、分岐予測テーブルを設定するプログラムの例を示す図である。即ち、この図には、分岐予測テーブルに書き込みを行なう命令列の例を示す。この命令中moviは第1引数で示される分岐予測テーブルのフィールドに第2引数で示される値を書き込む命令である。bp,bpa,bptは各々分岐予測テーブルの分岐予測、分岐命令アドレス、分岐予測アドレスの各フィールドを示している。」と記載されているように、ある命令(引用例4では、処理e、分岐不成功を指示する命令、分岐成功を指示する命令、引用例5では、所定の命令、第1引数がbpであるmovi。)を実行することにより、ブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグ(引用例4ではフリップフロップ17及び18、引用例5では分岐方向予測bp。)の値を変更することは、本願優先日前に公知である(以下、「公知技術2」という。)。
また、引用例5の(5-1)に「分岐予測テーブル10は、分岐命令アドレスに対応して分岐先アドレス、分岐方向予測、Validを格納している。」、「bp,bpa,bptは各々分岐予測テーブルの分岐予測、分岐命令アドレス、分岐予測アドレスの各フィールドを示している。」と記載され、また、引用例5の【図1】や【図2】に分岐予測テーブルが複数のエントリを備えることが記載されているように、分岐予測テーブルの各エントリにブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグである分岐方向予測bpを備えることは、本願優先日前に公知である(以下、「公知技術3」という。)。

第7.本願発明と引用発明の対比
本願発明と引用発明を比較する。

引用発明における「情報処理装置」は、本願発明における「コンピュータシステム」に相当する。
引用発明における「分岐」は、本願発明における「ブランチ」に相当する。
引用発明における「分岐先予測制御方式」は、本願発明における「システム」に相当する。
引用発明における「分岐命令BCR、BCT、BC」は、本願発明における「ブランチ命令」に相当する。
引用発明における「命令列」は、本願発明における「プログラムコード」に相当する。
引用発明における「分岐命令アドレス」は、本願発明における「ブランチ命令への参照」に相当する。
引用発明における「分岐先アドレス」と本願発明における「ブランチが行われるか否かについてのブランチ命令の予測結果」は、ブランチ命令(分岐命令)の挙動の予測に用いられるデータであるという点で一致する。
引用発明における「エントリ」と本願発明における「予測データ」は、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データであるという点で一致する。
引用発明における「分岐予測テーブル」と本願発明における「ストア」は、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データ(予測データ、エントリ)を含む構成であるという点で一致する。
引用発明における「分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う」ことと、本願発明における「前記ストアにおける前記予測結果を変更する」ことは、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データ(予測データ、エントリ)を含む構成(ストア、分岐予測テーブル)における、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを変更することである点で一致する。
引用発明における「分岐先アドレスロード命令LBR、LB、LBC」と本願発明における「予測オペレーション」は、プログラムコード(命令列)に含まれるものであり、ブランチ命令(分岐命令BCR、BCT、BC)に対してプログラムコード(命令列)における所定の位置に配置されているものであり、プログラムコード(命令列)の実行前にプログラムコード(命令列)へ配置されているものであり、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データ(予測データ、エントリ)を含む構成(ストア、分岐予測テーブル)における、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを変更するための予測オペレーションであるという点で一致する。
引用発明における「分岐命令BCR、BCT、BCの挙動の予測に影響するように、命令列内に含まれた分岐先アドレスロード命令LBR、LB、LBCの実行に応答して、分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段」と、本願発明における「ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記ストアにおける前記予測結果を変更するための変更手段」は、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に影響するように、プログラムコード(命令列)内に含まれた予測オペレーション(予測オペレーション、分岐先アドレスロード命令LBR、LB、LBC)の実行に応答して、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データ(予測データ、エントリ)を含む構成(ストア、分岐予測テーブル)における、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを変更するための変更手段である点で一致する。
引用発明における「分岐予測テーブルにおける変更されたエントリに基づいて分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段」と、本願発明における「前記ストアにおける前記変更された予測データに基づいてブランチ命令の挙動をハードウェアで予測するための予測手段」は、プログラムコード(命令列)におけるブランチ命令への参照(分岐命令BCR、BCT、BCの分岐命令アドレス)、および、ブランチ命令(分岐命令BCR、BCT、BC)の挙動の予測に用いられるデータを有し、ブランチ命令(分岐命令BCR、BCT、BC)に対応する予測データ(予測データ、エントリ)を含む構成(ストア、分岐予測テーブル)における、変更された予測データ(予測データ、エントリ)に基づいて、ブランチ命令(分岐命令BCR、BCT、BC)の挙動を予測するための予測手段である点で一致する。

すると、本願発明と引用発明とは、次の点で一致する。

<一致点>
コンピュータシステムにおいてブランチを予測するためのシステムにおいて、
ブランチ命令および予測オペレーションを含む複数の命令からなるプログラムコードであって、前記予測オペレーションは(i)前記ブランチ命令に対して前記プログラムコードにおける所定の位置に配置されているものであり、(ii)該プログラムコードの実行前に該プログラムコードへ配置されているものである、プログラムコードと、
前記プログラムコードにおけるブランチ命令への参照、および、ブランチ命令の挙動の予測に用いられるデータを有する前記ブランチ命令に対応する予測データを含む構成と、
ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記構成におけるブランチ命令の挙動の予測に用いられるデータを変更するための変更手段と、
前記構成における前記変更された予測データに基づいてブランチ命令の挙動を予測するための予測手段であって、前記変更手段とは独立して動作する予測手段と、
を備えることを特徴とするシステム。

一方で、両者は、次の点で相違する。

<相違点1>
プログラムコードに関して、本願発明においては、「プログラムコード」は「メモリ」に含まれるものであるのに対し、引用発明における「命令列」は、どのように記憶されているのかが不明である点。

<相違点2>
予測オペレーションが(i)ブランチ命令に対してプログラムコードにおける所定の位置に配置されているものであり、(ii)プログラムコードの実行前にプログラムコードへ配置されているものであることに関して、本願発明における「予測オペレーション」は「プログラムコード」に「挿入されている」ものであるのに対し、引用発明における「分岐先アドレスロード命令LBR、LB、LBC」は「命令列」に「配置されている」ものであるものの、挿入されているものであるのかが不明である点。

<相違点3>
プログラムコードにおけるブランチ命令への参照、および、ブランチ命令の挙動の予測に用いられるデータを有するブランチ命令に対応する予測データを含む構成に関して、本願発明における「予測データ」を含むものが「ストア」であるのに対し、引用発明における「エントリ」を含む「分岐予測テーブル」は、どのように記憶されているのかが不明である点。

<相違点4>
前記プログラムコードにおけるブランチ命令への参照、および、ブランチ命令の挙動の予測に用いられるデータを有する前記ブランチ命令に対応する予測データに関して、本願発明における「予測データ」が有するものが「ブランチが行われるか否かについてのブランチ命令の予測結果」であるのに対し、引用発明における「エントリ」が有するものが「分岐先アドレス」である点。

<相違点5>
ブランチ命令の挙動の予測に影響するように、前記プログラムコード内に含まれた前記予測オペレーションの実行に応答して前記構成におけるブランチ命令の挙動の予測に用いられるデータを変更するための変更手段に関して、本願発明は「前記予測結果を変更する」ものであるのに対し、引用発明は「分岐先アドレスを変更するか、または、」「エントリの登録または無効化を行う」ものである点。

<相違点6>
前記構成における前記変更された予測データに基づいてブランチ命令の挙動を予測するための予測手段に関して、本願発明では「ハードウェア」であるのに対し、引用発明においてはどのような手段であるのかが不明である点。

第8.特許法第29条第2項の規定に関する判断
上記相違点1乃至6について検討する。

8の1.相違点1について
引用例1には「命令列」をどのように記憶するのかについては明記されてはいないものの、「命令列」をメモリに記憶することは当業者が通常行うことに過ぎない。
よって、上記相違点1は格別のものではない。

8の2.相違点2について
上記「6の5.引用例2及び引用例3に例示または記載される周知技術・公知技術の認定」にて周知技術1として示したように、コンパイラによりコンパイル時に、プログラムコード(命令列)に適宜命令を挿入することは当業者には周知である。特に、上記「6の5.引用例2及び引用例3に例示または記載される周知技術・公知技術の認定」にて公知技術1として示したように、コンパイラによりコンパイル時に、プログラムコード(命令列)に、ブランチ命令(分岐命令)の制御に用いる情報を示すための命令を挿入することも知られたことである。
引用発明、周知技術1、公知技術1はともに、本来のプログラムコード(命令列)に何らかの命令を追加された状態とすることに関するものであるから、引用発明に周知技術1または公知技術1を適用して、引用発明における「分岐先アドレスロード命令LBR、LB、LBC」が「命令列」に、(例えばコンパイラによるコンパイル時に、)挿入されるようにすることに、特段の困難性はない。
よって、上記相違点2は格別のものではない。

8の3.相違点3について
引用例1には「分岐予測テーブル」をどのように記憶するのかについては明記されてはいないものの、テーブルを何らかの記憶装置に記憶することは当業者が通常行うことに過ぎず、引用発明における「分岐予測テーブル」をストアに記憶することに特段の困難性はない。
よって、上記相違点3は格別のものではない。

8の4.相違点4及び相違点5について
上記「6の8.引用例4及び引用例5に記載されている公知技術の認定」にて公知技術2として示したように、ある命令(引用例4では、処理e、分岐不成功を指示する命令、分岐成功を指示する命令、引用例5では、所定の命令、第1引数がbpであるmovi。)を実行することにより、ブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグ(引用例4ではフリップフロップ17及び18、引用例5では分岐方向予測bp。)の値を変更することは、本願優先日前に公知である。また、上記「6の8.引用例4及び引用例5に記載されている公知技術の認定」にて公知技術3として示したように、分岐予測テーブルの各エントリにブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグである分岐方向予測bpを備えることは、本願優先日前に公知である。
引用発明、公知技術2、公知技術3はともに、ブランチ(分岐)の挙動の予測に関するものであり、引用発明も「分岐予測テーブルのエントリの登録または無効化を行う」ことにより、ブランチ命令(分岐命令)によりブランチ(分岐)が成立するか否かの予測を分岐予測テーブルに反映させることができるものであるから、引用発明に公知技術2及び公知技術3を適用して、引用発明における分岐予測テーブルのエントリに、分岐先アドレスに代えて、または、分岐先アドレスとともに、ブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグを設けるようにし、引用発明における分岐先アドレスロード命令LBR、LB、LBCを、ブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグの値を変更する命令に設計変更して、引用発明における分岐予測テーブルにおける分岐先アドレスを変更するか、または、分岐予測テーブルのエントリの登録または無効化を行う手段を、ブランチ(分岐)が成立するか否か(takenかnot takenか)の予測を示すフラグの値を変更する手段にすべく設計変更することに特段の困難性はない。
よって、上記相違点4及び上記相違点5は格別のものではない。

8の5.相違点6について
ブランチ命令の挙動を予測するための予測手段をハードウェアにて実現することは当業者には周知であり、引用発明における「分岐命令BCR、BCT、BCの挙動を予測して次に読み出すべき命令語を先取りする手段」についてもハードウェアにて実現することに特段の困難性はない。
よって、上記相違点6は格別のものではない。

また、本願発明が有する作用効果は、引用発明、(引用例2及び引用例3に例示されている)周知技術1、(引用例2及び引用例3に記載されている)公知技術1、(引用例4及び引用例5に記載されている)公知技術2、及び、(引用例5に記載されている)公知技術3から当業者が予測できた範囲内のものである。

よって、本願発明は、引用発明、(引用例2及び引用例3に例示されている)周知技術1、(引用例2及び引用例3に記載されている)公知技術1、(引用例4及び引用例5に記載されている)公知技術2、及び、(引用例5に記載されている)公知技術3に基いて、当業者が容易に発明をすることができたものである。

第9.むすび
したがって、上記した「第2.本願発明の認定」、「第3.拒絶査定が確定した原出願に係る発明の認定」、「第4.本願発明と原出願発明の対比」及び「第5.特許法第39条第2項の規定に関する判断」にて示したように、同日に出願されたものとされる、本願の請求項1に係る発明と特願平10-508025号の請求項4に係る発明は同一であり、特願平10-508025号については拒絶査定が確定していて協議をすることができず、本願と特願平10-508025号には平成10年法律第51号改正附則第2条第1項によりなお従前の例によるとされる同法による改正前の特許法第39条第5項の規定が適用されるのであるから、他の請求項について検討をするまでもなく、本願は特許法第39条第2項の規定により特許を受けることができない。
また、上記した「第2.本願発明の認定」、「第6.先行技術文献に記載されている技術的事項と先行技術文献に記載されている発明の認定」、「第7.本願発明と引用発明の対比」及び「第8.特許法第29条第2項の規定に関する判断」にて示したように、本願の請求項1に係る発明は、その出願前に日本国内又は外国において頒布された刊行物に記載された発明に基いて、当業者が容易に発明をすることができたものであるから、他の請求項について検討をするまでもなく、本願は特許法第29条第2項の規定により特許を受けることができない。

よって、結論のとおり審決する。
 
審理終結日 2011-06-14 
結審通知日 2011-06-21 
審決日 2011-07-04 
出願番号 特願2006-277835(P2006-277835)
審決分類 P 1 8・ 121- WZ (G06F)
P 1 8・ 4- WZ (G06F)
最終処分 不成立  
前審関与審査官 漆原 孝治塚田 肇鳥居 稔  
特許庁審判長 赤川 誠一
特許庁審判官 清木 泰
田中 秀人
発明の名称 コンピュータシステムのためのプログラマブルなブランチ予測システムおよび方法  
代理人 小川 信夫  
代理人 大塚 文昭  
代理人 近藤 直樹  
代理人 中村 稔  
代理人 宍戸 嘉一  
代理人 伊東 忠彦  

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