知財高等裁判所 平成23年(行ケ)10320号 判決 2012年9月27日
原告
エスティーマイクロエレクトロニクス
リミテッド
(審決上の名称エスジーエス-トムソン
マイクロエレクトロニクスリミテッ
ド)
訴訟代理人弁理士
中島淳
同
加藤和詳
同
佐久間顕治
被告
特許庁長官
指定代理人
殿川雅也
同
山崎達也
同
田部元史
同
芦葉松美
主文
1 特許庁が不服2007-12853号事件について平成23年5月24日にした審決を取り消す。
2 訴訟費用は被告の負担とする。
事実及び理由
第1請求
主文同旨
第2当事者間に争いのない事実
1 特許庁における手続の経緯等
原告は,発明の名称を「命令トレース供給方式」とする発明について,平成9年12月19日(パリ条約による優先権主張1996年12月19日,英国)に特許出願(特願平9-349884号)をし,平成17年8月19日付け手続補正書により特許請求の範囲を補正したが,平成19年1月29日付けで拒絶査定がされた。これに対し,原告は,平成19年5月7日,拒絶査定に対する不服審判の請求(不服2007-12853号)をし,同年5月30日付け,平成22年2月17日付け,同年12月28日付け各手続補正書により特許請求の範囲を補正したが,特許庁は,平成23年5月24日,「本件審判の請求は,成り立たない。」との審決をし,その謄本は,同年6月7日,原告に送達された(附加期間90日)。
2 特許請求の範囲の記載
平成22年12月28日付け手続補正書による補正後の特許請求の範囲(請求項の数34)の請求項1の記載は,次のとおりである(以下,同請求項に記載された発明を「本願発明」といい,同補正後の明細書及び図面を併せて「本願明細書」という。)
「【請求項1】 メモリから命令を取り出して実行する取り出し回路及び実行回路と,CPUによって実行される命令のメモリ内のアドレスを含む命令ポインタを順次保持する命令ポインタレジスタと,を含んで構成されるオン-チップCPUであって,前記CPUの前記実行回路は,前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である,オン-チップCPUと,
前記CPUにバスにより接続され,前記CPUから前記バスを介して前記命令ポインタレジスタに順次保持された命令ポインタを受信し,前記受信した命令ポインタのアドレスを監視するように作動可能である命令トレースコントローラであって,トレースストレージ位置に接続され,前記受信した命令ポインタのアドレスのうちの選択された1つを前記トレース位置に記憶させる命令トレースコントローラと,
を含んで構成され,
前記命令トレースコントローラはさらに,前記CPUから前記バスを介して前記命令ポインタと同時に前記命令トレースコントローラに送信される前記制御信号を受信し,前記制御信号の検知に基づいて前記アドレスのうちの選択された1つを前記トレース位置に記憶する,
単一チップ集積回路装置。」
3 審決の理由
審決の理由は,別紙審決書写しのとおりである。要するに,本願発明は,特開平5-158734号公報(以下,「引用文献1」といい,引用文献1に記載された発明を「引用発明」という。なお,引用文献1の図1は,別紙のとおりである。)に記載された発明及び周知技術に基づいて当業者が容易に発明をすることができたものであり,特許法29条2項により特許を受けることができない,というものである。
審決が認定した引用発明の内容,同発明と本願発明との一致点及び相違点は以下のとおりである。
(1) 引用発明の内容
命令キャッシュを有し,次サイクルで実行する命令を読み出す命令プリフェッチ部と,命令プリフェッチ部より読み出された命令をデコードする命令デコーダと,命令デコーダにより指示された命令を実行する命令実行部とを単一の集積回路に有し,
分岐先アドレスと分岐命令信号を受けて分岐先アドレスをトレース装置に格納するバス制御部を含んで構成され,
命令実行部はデコードされた命令が分岐命令であった場合,分岐先アドレスを計算し,分岐アドレスバスに出力すると共に,分岐条件が成立又は無条件に分岐が行われることを示す分岐命令信号を出力するものであり,
命令キャッシュを有する命令プリフェッチ部は,次サイクルにおいて実行する命令のアドレスを計算し,分岐が発生しない場合は前記計算されたアドレスにより,また,分岐が発生する場合は分岐アドレスバス上の分岐先アドレスにより分岐先アドレスの命令を読み出すものであり,
バス制御部は,命令実行部から分岐先アドレスバスを介して受信した分岐先アドレスを分岐アドレスレジスタに格納した後,分岐命令信号に基づいてバスアドレス情報を生成し,バスアドレス情報により分岐先アドレスをトレース装置に書き込むように制御することにより命令アドレストレースを行うマイクロプロセッサ。
(2) 一致点
メモリから命令を取り出して実行する取り出し回路及び実行回路と,CPUによって実行される命令のメモリ内のアドレスを含む命令ポインタを順次保持する命令ポインタレジスタと,を含んで構成されるオン-チップCPUであって,前記CPUの前記実行回路は,前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である,オン-チップCPUと,
前記CPUにバスにより接続され,
前記CPUから前記バスを介してトレースすべきアドレスを監視するように作動可能である命令トレース制御部であって,トレースストレージ位置に接続され,トレースすべきアドレスを前記トレース位置に記憶させる命令トレース制御部と,
を含んで構成され,
前記命令トレース制御部はさらに,前記CPUから前記バスを介してトレースすべき候補のアドレスと前記命令トレース制御部に送信される前記制御信号を受信し,前記制御信号の検知に基づいて前記トレースすべきアドレスを前記トレース位置に記憶する,
命令をトレースする装置。
(3) 相違点
ア 相違点1
制御信号の検出に基づいて受信したトレースすべき候補のアドレスをトレース位置に記憶させることに関して,本願発明では,命令ポインタレジスタに順次保持された命令ポインタを受信し,命令ポインタと同時に送信される制御信号の検知に基づいてアドレスのうちの1つを選択するものであるのに対し,引用発明では分岐先アドレスを受信し,分岐命令信号から生成されたバスアドレス情報に基づいてトレース装置に書き込むものである点。
イ 相違点2
命令をトレースする装置が,本願発明では,オンチップCPUと命令トレースコントローラとが単一チップ集積回路装置を構成するものであるのに対し,引用発明では,命令プリフェッチ部と,命令デコーダと,命令実行部とは単一の集積回路を構成するが,バス制御部が単一の集積回路に含まれるかどうか不明である点。
第3当事者の主張
1 取消事由に係る原告の主張
(1) 取消事由1(一致点の認定の誤り)
審決は,引用発明において,命令プリフェッチ部10に分岐条件が成立したことを通知するため,分岐命令信号51が使用されていること,分岐命令信号51は,分岐条件が成立した場合に命令プリフェッチ部10に命令キャッシュ20から命令の読み出しをさせる信号であることを前提に,本願発明と引用発明は,「前記CPUの前記実行回路は,前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である」点で一致すると認定した。
しかし,審決の上記認定には,誤りがある。すなわち,
ア 引用文献1には,デコードした命令が分岐命令であった場合に命令プリフェッチ部10がどのように分岐先アドレスの命令を命令キャッシュ20から取り出し,命令デコーダ30及び命令実行部50に供給するのかに関する記載はなく,命令プリフェッチ部10は,分岐条件が成立したときのみ分岐先アドレスを次命令読み出しのために使用するものであるとはいえない。
また,引用文献1には,命令プリフェッチ部10の動作が,分岐命令が実行され分岐条件が成立したことを通知されてから実行されるものとの記載もない。むしろ,命令プリフェッチ部10は,分岐先アドレスが分岐先アドレスバス41に出力されると,分岐条件の成立・不成立を待たずに分岐先アドレスを取り込み,命令キャッシュ20を検索するものであり,分岐条件が成立したことを通知されてから命令キャッシュ20の検索を行い命令の読み出しを行うものとはいえない。
なお,引用発明の命令プリフェッチ部10には,条件付き分岐命令の条件が確定したときに次命令を選択して命令デコーダに供給するような構成を採っておらず,被告の主張は前提に誤りがある。
イ 引用文献1は,分岐命令信号51の入力先が実行命令カウンタ80であることを明確に記載しており,分岐命令信号51が命令プリフェッチ部10にも入力される,あるいは命令プリフェッチ部10に分岐条件の成立を通知するとの記載も示唆もない。
また,本願発明の制御信号は,本来,実行回路が取り出し回路を制御するための信号であり,これが命令トレースコントローラにも送信されることにより,命令トレースコントローラでのアドレスの不連続を示す命令ポインタの選択にも使用されている。これに対し,引用発明の命令実行部50から出力される分岐命令信号51は,実行命令カウンタ80に出力されることで,分岐先アドレスに分岐するまでに実行した命令数をカウントするために使用されており,本願発明の制御信号と引用発明の分岐命令信号51とは,目的も機能も異なる。
ウ 仮に,審決が認定したように,引用発明において,「命令プリフェッチ部は,・・・分岐命令信号により分岐条件の成功を通知されたときには命令実行部からの分岐先アドレスを用いて,命令キャッシュからの読み出しを行う」ように構成した場合,命令プリフェッチ部10は,分岐命令が実行されて分岐条件が成立し,分岐命令信号51が入力されるまで次命令の読み出しを待機しなければならず,その間,命令デコーダ30による次命令のデコードもできないこととなり,マイクロプロセッサの処理速度を上げるという命令プリフェッチ部の目的に反することとなる。さらに,プリフェッチ部10が,分岐命令信号51の入力まで次命令の読み出しを待機する構成とすると,キャッシュの検索と,実際の命令の読み出しを別々に行うことになり,非合理的である。そして,引用文献1において,分岐命令信号51に基づいて命令を取り出しているとすると,先に分岐先アドレスを分岐先アドレスバス41へ出力する意味がなくなるから,取り出し回路に新しいメモリ位置から命令の取り出しをさせるのは,分岐命令信号51ではなく,分岐先アドレスである。
エ 以上のとおり,引用発明のプリフェッチ部10に分岐条件の成立を通知するため,分岐命令信号51が使用されているとの審決の認定には誤りがあり,本願発明と引用発明は,「前記CPUの前記実行回路は,前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である」点で一致するとの判断にも誤りがある。
(2) 取消事由2(相違点1に係る容易想到性判断の誤り)
審決は,本願発明のように全ての命令ポインタを命令トレースコントローラに送ることは格別の効果を生ずるものではなく,命令ポインタを全て命令トレースコントローラに送っておき,不連続なアドレスを示す制御信号により命令トレースコントローラによって記憶すべきアドレスを選択するようにすることは当業者が容易になし得ることであると認定,判断する。
しかし,審決の上記認定,判断には,誤りがある。すなわち,
ア 本願発明の制御信号は,CPUの実行回路が取り出し回路を制御するための信号であり,本願発明の実行回路がトレースのための新たな信号を生成することはない。かかる構成により,本願発明においては,CPU側では命令トレースコントローラに送る命令ポインタを選択する必要も,命令トレースのために追加的な信号を生成する必要もなく,命令トレースに関するCPUの制御を単純にし,CPUの回路構成を簡単なものとすることができるという格別の効果を奏する。これに対し,引用発明は,トレース(即ち出力)すべきアドレスを,命令実行部50とバスインタフェース制御部60により選択しており,本願発明に比べて複雑な制御を行っており,CPUの制御を単純にし,回路構成を簡単なものとするという効果は奏し得ない。また,本願発明の構成によれば,引用発明のように命令実行部50が分岐命令信号51を生成する必要がなく,分岐命令信号51により分岐条件の成立が通知されるまでの間,分岐アドレスを格納する分岐アドレスレジスタ70を設ける必要もない。なお,引用文献1においては,CPUは命令トレースのために分岐命令信号51を出力する必要があるのに対して,本願発明においては取り出し回路の制御のために実行回路が生成する制御信号を付加的に命令トレースコントローラに供給しており,命令トレースのためにはCPUの機能を変更していない。
イ 引用発明の課題は,出力される実行情報の量を抑制することであり,このため,分岐先アドレスと分岐先アドレスへ分岐するまでに実行された命令数とを出力するようにマイクロプロセッサを構成している。このような課題とその解決手段を有する引用発明について,実行する命令のアドレスを全てバスインタフェース制御部60に送るように変更することは,その目的に反している。バスインタフェース制御部60は,外部装置との入出力を制御するものであり,ここに実行する全ての命令のアドレスを送ることはバスインタフェース制御部60の性能を低下させ,ひいてはマイクロプロセッサ全体の性能も低下させることになる。
ウ 以上のとおり,引用発明から実行する命令のアドレスを全てバスインタフェース制御部60に送信するとの構成に想到することは容易ではなく,審決の相違点1に係る容易想到性判断には,誤りがある。
(3) 取消事由3(作用効果の判断の誤り)
審決は,本願発明の作用効果も,引用文献及び周知技術から当業者が容易に予測できる範囲のものであると判断する。
しかし,審決の上記判断には,誤りがある。すなわち,本願発明によれば,CPUの実行回路が取り出し回路を制御するための制御信号を,命令トレースコントローラにおいてアドレスの不連続を示す命令ポインタのアドレスの選択という目的にも利用することができるので,CPUの制御及び回路構成を単純にすることができる。また,本願発明によれば,分岐命令に備えて命令ポインタを格納するための追加的な回路(例えば引用文献1記載の分岐アドレスレジスタ70等)を設ける必要がない。
したがって,本願発明の作用効果は,引用文献及び周知技術から容易に予測できる範囲のものではない。
2 被告の反論
(1) 取消事由1(一致点の認定の誤り)に対して
ア 引用発明の分岐命令信号51は,「分岐条件が成立し,あるいは無条件に分岐が行われていることを示すために」出力される信号であるから,「前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す」信号といえる。また,引用発明の分岐命令信号51は,分岐条件が成立したときに命令キャッシュ20から次命令を取得するための通知をプリフェッチ部に対して行うものである。この点,引用文献1において,分岐命令信号51が,命令プリフェッチ部に新しいメモリ位置から命令の取り出しを開始させる構成が明らかでないとしても,条件付き分岐命令の条件が未確定で分岐するかどうか不明の期間,現命令列と分岐成功の命令系列を先取りし,条件付き分岐命令の条件が確定したときに,確定された命令を実行するように構成することにより,本願発明の制御信号のように取り出し回路に新しいメモリ位置から命令の取り出しを開始させるように構成することは,当業者が適宜なし得たことである。
したがって,引用発明の「分岐命令信号」は,本願発明の「制御信号」と同じく「前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す」という同一の目的及び機能を有しているといえる。
イ これに対し,原告は,引用文献1には,分岐命令信号51が命令プリフェッチ部10にも入力される,あるいは命令プリフェッチ部10に分岐条件の成立を通知するとの記載も示唆もないと主張する。しかし,引用文献1には,分岐命令信号51又は分岐条件の成立の通知が命令プリフェッチ部10に入力することを否定する記載はない上,技術常識を勘案すれば,引用文献1には,分岐が発生しない場合,命令プリフェッチ部10において次サイクルにおいて実行する命令のアドレスが計算されるのみならず,デコードされた命令が分岐命令であった場合,分岐命令の成立・不成立が通知されたタイミングで分岐先アドレスの命令を実行するものであることが記載ないし示唆されているといえる。
ウ また,原告は,本願発明の「制御信号」と,引用発明の分岐命令信号51とは,それぞれ設けられた目的も機能も異なっており,引用発明において,分岐命令信号51を,分岐条件の成立を命令プリフェッチ部10に通知し,命令取り出しを実行させるために使用することはできないと主張する。しかし,引用発明の分岐命令信号51が,命令実行カウンタ80に入力されることと,取り出し回路に命令の取り出しを開始させ,アドレスの不連続を示すことは両立し,それぞれの目的と機能が矛盾するものではない。
エ さらに,原告は,引用発明について,「命令プリフェッチ部は,・・・分岐命令信号により分岐条件の成功を通知されたときには命令実行部からの分岐先アドレスを用いて,命令キャッシュからの読み出しを行う」ように構成した場合,命令実行部50は,命令デコーダ30からすぐに次命令の入力を受けられずに処理が停止してしまうこととなり,マイクロプロセッサの処理速度を上げるという命令プリフェッチ部を設ける目的に反することとなると主張する。しかし,分岐命令が実行されて分岐条件が成立されるまでの期間に,命令デコーダが命令を取り出すことができるように構成することにより,命令処理部の処理を停止させることなく,次命令をデコードし,命令実行部が処理を継続することは,普通に行われている。仮に,命令先読み動作が中断されても,分岐の成立または不成立が確定するのを待って,分岐が成立した場合には,分岐先の命令を実行し,分岐が不成立の場合には,そのまま通常動作を行うことは普通であって,キャッシュによる高速化がすべて否定されるわけではないので,引用発明の目的にも反しない。
(2) 取消事由2(相違点1に係る容易想到性判断の誤り)に対して
ア 原告は,本願発明は,CPUが命令ポインタを選択せずに命令トレースコントローラに送ることで,CPUの制御と回路構成を簡単なものとすることができるという格別の効果を奏するのに対し,引用発明では,命令実行部50とバスインタフェース制御部60とにより,記憶すべきアドレスを選択するという,より複雑な動作を行っているので,上記の効果を奏することはないと主張する。
しかし,原告の上記主張は,失当である。すなわち,CPUの実行命令のトレースを行う装置において,実行アドレス値の出力のうちアドレスの変化の不連続を検出した時に当該アドレス値を,CPUに接続された手段にて記録するように構成することは周知技術である(甲2,4,乙3)から,上記周知技術にならって,引用発明においても,実行命令をトレースするためCPUに接続されたバスインタフェース制御部60においてアドレスの変化の不連続を検出した時に当該アドレス値を記録するように構成することは,当業者が容易に想到できたものである。また,本願発明においても,実施例においては,記憶すべき分岐アドレスを選択してレジスタに格納するための機構を備えるから,「CPUが命令ポインタを選択せずに命令トレースコントローラに送ることで,CPUの制御と回路構成を簡単なものとすることができる」という本願発明の効果は,結局,単一チップ上において,分岐アドレスレジスタに格納すべきアドレスを命令実行部側ではなく,命令トレースコントローラ上のレジスタ側で選択するかだけの差異にすぎず,格別なものとはいえない。
イ 原告は,命令のトレースに必要な情報量を減少させることを課題とし,そのために,分岐が行われた場合の分岐先アドレスと,当該分岐先アドレスに分岐するまでに実行した命令数とを出力するよう構成している引用発明において,実行する命令のアドレスを全てバスインタフェース制御部60に送るよう構成することは,その目的に反していると主張する。
しかし,原告の上記主張は,失当である。すなわち,引用文献1は,バスインタフェース制御部が出力しない分岐先アドレスもバスインタフェース制御部に出力し,間接分岐命令実行時のみバスインタフェース制御部が分岐先アドレスを出力する技術思想が開示されているので,実行する命令のアドレスの全てをバスインターフェース制御部に送るように変更することが,引用発明の目的に反しているとはいえない。
(3) 取消事由3(作用効果の判断の誤り)に対して
原告は,本願発明の作用効果は,引用文献及び周知技術から当業者が容易に予測できる範囲のものとはいえないと主張する。
しかし,原告の上記主張は,失当である。すなわち,CPUにおいて取り出し回路の制御を行うための制御信号を,命令トレースコントローラにおいてアドレスの不連続を示す命令ポインタのアドレスの選択という目的にも利用することができることは,引用文献1にも実質的に開示されている。また,追加的な回路を設ける必要がないという効果は,本願発明と引用発明に格別異なるところがない。さらに,「CPUが命令ポインタを選択せずに命令トレースコントローラに送ることで,CPUの制御と回路構成を簡単なものとすることができる」という効果も,格別なものではない。
第4当裁判所の判断
当裁判所は,審決の相違点1に係る容易想到性判断には誤りがあり,審決は,その余の点について判断するまでもなく,これを取り消すべきものと判断する。その理由は,以下のとおりである。
1 事実認定
(1) 本願発明
ア 本願発明に係る特許請求の範囲の記載は,前記第2の2記載のとおりである。
イ また,本願明細書(甲8)には,以下の記載がある。
「【0001】
【発明の属する技術分野】本発明は命令トレース供給方式に関する。特に,本発明は命令トレースが集められた単一チップ集積回路装置及び命令トレースを供給する方法に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】CPUは,メモリから命令を取り出して実行するための取り出し及び実行回路に加えて,CPUによって実行される命令のメモリ内のアドレスを保持する命令ポインタレジスタを有する。命令ポインタレジスタに保持されるアドレスを認識することは,CPU上で実行するソフトウエア上の診断機能を実行する際に特に重要である。簡単な場合,命令ポインタとして保持されるアドレスは,外部メモリバス上のメモリアドレス値を観察することによって推測できる。しかしながら,多くの場合において,命令ポインタはCPUの奥にかくされており,CPUの外側からは容易にアクセスできない。」
「【0007】
【課題を解決するための手段】本発明によれば,メモリから命令を取り出して実行する取り出し及び実行回路と,CPUによって実行される命令のメモリ内のアドレスを順次保持する命令ポインタレジスタと,を含んで構成されるオン-チップCPUと,前記アドレスを監視するように作動可能であり,トレースストレージ位置に接続されて,前記アドレスの1つが前記アドレスの前回アドレス後のメモリ内の次に続くアドレスではないことを検出したことに応じて前記アドレスのうちの選択されたアドレスを前記トレース位置に記憶させる命令トレースコントローラと,を含んで構成される単一チップ集積回路装置が提供される。
【0008】このように,オン-チップ命令トレースコントローラは,付加外部接続ピンを必要とせずに,リアルタイムで命令トレースを集めることができる。不連続(非シーケンシャルアドレス)における命令ポインタの値を記憶するだけで,所定時間記憶する必要がある情報量をかなり減少できる。命令トレースコントローラは前記アドレスを監視するための命令ポインタレジスタに接続できる。或いは,前記アドレスを監視するために命令がCPUに取り出されるメモリバスに接続することもできる。」
(2) 引用文献1(甲1)には,以下の記載がある。
「【0001】
【産業上の利用分野】本発明は,マイクロプロセッサの実行状態をマイクロプロセッサ外部に出力する装置に関し,特に,コンピュータの処理の高速化技術の一つである命令用キャッシュメモリ装置を内蔵するマイクロプロセッサに関するものである。
【0002】
【従来の技術】近年,マイクロプロセッサは,処理速度の高速化のためにパイプライン処理やキャッシュメモリ装置などの技術を導入すると共に,マイクロプロセッサを用いた回路やプログラムの開発時にその開発効率を高めるために必要となるマイクロプロセッサの実行状態を示す情報をマイクロプロセッサの外部に出力するための機構が利用されている。命令用のキャッシュを内蔵する場合,内蔵キャッシュがヒットしている場合命令の実行状況がマイクロプロセッサの外部に出力されず,マイクロプロセッサのアドレスバスおよびデータバスの情報を記録するだけでは,マイクロプロセッサの実行する命令をトレースすることはできない。」
「【0007】
【発明が解決しようとする課題】しかしながら上記のような構成では,マイクロプロセッサが出力する情報に基づいて,マイクロプロセッサの実行命令のトレースを行う場合,マイクロプロセッサが実行する全ての命令のアドレスを記録する必要があり容量の大きい記憶装置を必要とするという問題点を有していた。また,マイクロプロセッサの高速化に伴い,常にマイクロプロセッサの実行情報をプロセッサの外部に出力することによって,バスの競合が発生しマイクロプロセッサの性能の低下を招く。さらに,マイクロプロセッサの実行する命令のトレースを行う場合のみマイクロプロセッサの実行情報を出力する方法もあるが,トレースを行う場合とそうでない場合の実行環境が大きく変化し,正確な情報を得る事が困難である。」
「【0009】
【課題を解決するための手段】上記問題点を解決するために本発明のマイクロプロセッサは,命令の実行の終了を示す命令終了信号と,分岐命令実行時に分岐条件が成立し,あるいは無条件に分岐を行うことを示す分岐信号と,前記命令終了信号を入力し実行した命令数をカウントし前記分岐信号を入力することにより内容をリセットする命令実行カウンタと,前記命令実行カウンタより命令実行数を入力し保持する第一のレジスタと,分岐先の命令のアドレスを計算し出力するアドレス計算部と,前記アドレス計算部が出力する分岐先アドレスを入力し保持する第二のレジスタと,前記分岐信号を入力し前記第一及び第二のレジスタの内容をそれぞれ端子に出力するバス制御部とを備えたものである。」
「【0013】
【実施例】以下本発明の一実施例のマイクロプロセッサについて,図面を参照しながら説明する。
【0014】図1は本発明の実施例におけるマイクロプロセッサの構成例を示すものである。図1において,10は命令プリフェッチ部,20は命令キャッシュ,30は命令デコーダ,40はアドレス計算部,50は命令実行部,60はバスインタフェース制御部,70は分岐アドレスレジスタ,80は実行命令カウンタで,41は分岐アドレス,51は分岐信号,52は命令終了信号,61はアドレスバス,62はバスアクセス情報,63は命令実行情報である。
【0015】以上のように構成されたマイクロプロセッサについて,以下,図1を用いてその動作を説明する。キャッシュイネーブル信号12により命令キャッシュ20の使用が許可されている場合,命令プリフェッチ部10において次サイクルにおいて実行する命令のアドレスが計算され(分岐が発生しない場合),命令キュッシュ10内にある命令が読みだされ,読みだされた命令は命令デコーダ30においてデコードされる。命令デコーダ30のデコード結果に基づき命令実行部50は命令の実行を行う。命令実行部50は命令デコーダ30により指示された命令の実行を終了するサイクルにおいて命令実行終了信号52を出力する。さらに,命令実行カウンタ80は命令実行終了信号52が出力される毎にその内容を1づつ(判決注・「1ずつ」の誤記と認める。)加算し,命令実行部50において実行の終了した命令の数をカウントする。なお,この命令実行カウンタ80は図1には示していないが,マイクロプロセッサのリセット時に同時に0にリセットされる。
【0016】命令デコーダ30においてデコードされた命令が分岐命令で合った場合(判決注・「あった場合」の誤記と認める。),命令実行部50は分岐先命令のアドレスをアドレス計算部40において求め,その結果を分岐アドレスバス41へ出力すると共に,分岐条件が成立し,あるいは無条件に分岐が行なわれる事を示すために分岐命令信号51を出力する。バス制御部60は,ユニット内の分岐アドレスレジスタ70に分岐先アドレスバス41に分岐アドレスが出力される毎に分岐アドレスを取り込み格納する。また,命令プリフェッチ部10は分岐先アドレスを分岐アドレスバス41より取り込み命令キャッシュ20内に分岐先の命令が格納されているかどうか検索を行う。さらに,分岐信号51が出力されると命令実行カウンタ80は,そのカウンタ内に保持している内容をラッチ85に出力すると共にカウンタの内容を0にクリアする。バス制御部60は,キャッシュイネーブル信号12が出力されている場合は,分岐命令信号51が出力される毎に分岐アドレスレジスタ70の内容をセレクタ65により選択しアドレスバス61に出力すると共に,バスアクセス情報62によりアドレスバス61上に分岐アドレスが出力されていることを示す。さらに,バス制御部は同時にラッチ85の内容を命令実行情報63に出力する。」
「【0018】以上のように本実施例のよれば(判決注・「本実施例によれば」の誤記と認める。),命令の実行の終了を示すための命令終了信号52と,分岐命令実行時に分岐を行うことを示す分岐信号51と,前記命令終了信号を入力し実行した命令の数をカウントし前記分岐信号を入力することにより内容をリセットする命令実行カウンタ80と,前記命令実行カウンタより入力し保持するラッチ85と,アドレス計算部40が出力する分岐先アドレス41を入力し保持するレジスタ70と,端子としてアドレスバス61,バスアクセス情報62および命令実行情報63とを設けることにより,命令のトレースを命令キャッシュの使用中においても,プロセッサ外部で多くの情報を保持することなくマイクロプロセッサの実行する命令のトレースを行うことができる。」
2 判断
審決は,相違点1に関して,引用発明において,本願発明のように,メモリにアクセスするアドレスを含む命令ポインタを,全て命令トレースコントローラに送っておき,不連続なアドレスを示す制御信号により命令トレースコントローラによって選択するようにすることは当業者が容易になし得たことであると認定,判断する。しかし,審決の上記認定,判断には,誤りがある。すなわち,
(1) 本願発明に係る特許請求の範囲及び本願明細書の上記記載によれば,本願発明は,①メモリから命令を取り出して実行する取り出し回路及び実行回路と,CPUによって実行される命令のメモリ内のアドレスを含む命令ポインタを順次保持する命令ポインタレジスタとを含んで構成され,前記CPUの実行回路は,取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に,前記アドレスの1つが,そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能であるオン-チップCPUと,②前記アドレスを監視するように作動可能であり,トレースストレージ位置に接続されて,前記アドレスの1つが前記アドレスの前回アドレス後のメモリ内の次に続くアドレスではないことを検出したことに応じて,前記アドレスのうちの選択されたアドレスを前記トレース位置に記憶させる命令トレースコントローラと,を含んで構成される単一チップ集積回路装置である。
他方,引用文献1の上記記載によれば,①引用発明は,命令用キャッシュメモリ装置を内蔵するマイクロプロセッサの実行状態をマイクロプロセッサ外部に出力する装置に関するものであること,②マイクロプロセッサは,命令用のキャッシュを内蔵する場合,内蔵キャッシュがヒットしている場合には,命令の実行状況がマイクロプロセッサの外部に出力されず,マイクロプロセッサのアドレスバス及びデータバスの情報を記録するだけでは,マイクロプロセッサの実行する命令をトレースすることができないこと,③他方,全ての命令のアドレスを記録すると容量の大きい記憶装置が必要となり,常にマイクロプロセッサの実行情報を外部に出力することは,マイクロプロセッサの性能低下を招く上,マイクロプロセッサの実行する命令のトレースを行う場合のみマイクロプロセッサの実行情報を出力する方法では,トレースを行う場合とそうでない場合で実行環境が大きく変化し,正確な情報を得ることが困難であるなどの課題があったこと,④このような課題を解決するため,引用発明は,命令の実行の終了を示す命令終了信号と,分岐を行うことを示す分岐信号と,命令数をカウントする命令実行カウンタと,分岐先の命令のアドレスを計算し出力するアドレス計算部と,バス制御部などを備えた発明であることが認められる。そして,引用発明においては,分岐が発生しない場合の命令アドレスは,命令プリフェッチ部10において計算され,分岐先アドレスはアドレス計算部により計算されるものであるから,アドレス計算部により計算された分岐先アドレスに代えて,命令ポインタレジスタから出力される全てのアドレスから,命令トレースに必要な不連続アドレスのみをアドレスの不連続を示す制御信号を用いて抽出する構成に変更することは,自明とはいえない。
そもそも,引用発明は,上記のとおり,分岐先アドレスを出力することで,出力される実行情報の量を抑制することを目的とするものであるから,引用発明において,この目的を達成することが可能なアドレス計算部の出力する分岐先アドレスを用いるのに代えて,実行する命令のアドレス全てを出力するとの構成に至る動機付けがない。むしろ,引用文献1の上記記載によれば,引用発明は,内蔵キャッシュがヒットしている場合,命令の実行状況がマイクロプロセッサのアドレスバスやデータバスに出力されない構成である上,常にマイクロプロセッサの実行情報をプロセッサの外部に出力することは,バスの競合が発生し,マイクロプロセッサの性能の低下を招くとの認識を前提としており,引用発明において,実行する命令のアドレス全てを出力するように構成することには,阻害事由があるといえる(なお,本願発明は,命令ポインタレジスタから出力され,CPUによって実行されるアドレス(命令ポインタ)のうち,命令トレースに必要な不連続アドレス(分岐先アドレス)のみを,アドレスの不連続を示す制御信号を用いて抽出するものである。これに対し,引用発明においては,命令実行部がアドレス計算部を備え,分岐先アドレスを計算して出力するが,分岐が発生しない場合には,命令プリフェッチ部10において,次サイクルにおいて実行する命令のアドレスが計算され,命令キャッシュ内にある命令が読み出されるものであって,アドレス計算部から出力されるのは,不連続な分岐先アドレスのみであり,CPUによって実行される命令のアドレス全てを出力するものではないから,引用発明におけるアドレス計算部は,本願発明における命令ポインタレジスタに対応するものともいえない。)。
これに対し,審決は,本願発明において,制御信号によって不連続であることが通知されたアドレス以外は,命令トレースコントローラで何ら使用されることなく,捨てられるだけであり,全ての命令ポインタを命令トレースコントローラに送ることによって格別の効果を生ずるものではないとして,相違点1は格別のものではないと認定,判断するが,不連続でないアドレスが利用されないからといって,引用発明から本願発明を容易に想到できたとはいえない。
以上によれば,引用発明において,本願発明のように,メモリにアクセスするアドレスを含む命令ポインタを,全て命令トレースコントローラに送っておき,不連続なアドレスを示す制御信号により命令トレースコントローラによって選択するようにすることは当業者が容易になし得たことであるとの審決の認定,判断には,誤りがある。
(2) これに対し,被告は,CPUの実行命令のトレースを行う装置において,実行アドレス値の出力のうちアドレスの変化の不連続を検出した時に,当該アドレス値をCPUに接続された手段にて記録するように構成することは周知技術である(甲2,4,乙3)から,上記周知技術にならって,引用発明において,実行命令をトレースするためCPUに接続されたバスインタフェース60においてアドレスの変化の不連続を検出した時に当該アドレス値を記録するように構成することは,当業者が容易に想到できたものであると主張する。
しかし,被告の上記主張は,失当である。すなわち,甲2,4,乙3には,連続したアドレスを含む命令のアドレスを出力し,アドレス変化が不連続であることを検出したときにアドレスを記録することは記載されているものの,上記のとおり,引用発明は,連続したアドレスを含む命令のアドレスを出力するものではないから,上記周知技術によっても引用発明から相違点1に係る構成に想到することが容易であるとはいえない。
また,被告は,本願発明においても,実施例においては,引用発明と同様に,記憶すべき分岐アドレスを選択してレジスタに格納するための機構を備えるから,CPUが命令ポインタを選択せずに命令トレースコントローラに送ることで,CPUの制御と回路構成を簡単なものとすることができるという本願発明の効果は,結局,単一チップ上において,分岐アドレスレジスタに格納すべきアドレスを命令実行部側ではなく,命令トレースコントローラ上のレジスタ側で選択するというものにすぎず,格別なものとはいえないと主張する。
しかし,引用発明において,分岐が発生しない場合,命令実行部が次サイクルにおいて実行する命令のアドレスを計算したり,命令プリフェッチ部から次サイクルにおいて実行する命令のアドレスを受け取ることは記載されていない上,アドレス計算部の出力する分岐先アドレスは,分岐する可能性のあるアドレスであって,必ずしもCPUによって実行されるものではないから,トレースすべきアドレスとしての分岐先アドレスの選択を全て命令実行部が行っているとはいえない。したがって,引用発明は,分岐アドレスレジスタに格納すべきアドレスを全て命令実行部側で選択するものとはいえず,被告の上記主張は前提に誤りがある。
3 結論
以上のとおり,審決の相違点1に係る容易想到性判断には誤りがあり,その余の点について判断するまでもなく,原告の請求には理由がある。その他,被告は,縷々主張するが,いずれも理由がない。よって,主文のとおり判決する。
(裁判長裁判官 芝田俊文 裁判官 西理香 裁判官 知野明)
file_2.jpg別紙