【事件の表示】
　特願２０１６−１９３５５３「演算処理装置、演算処理方法及びプログラム」拒絶査定不服審判事件〔平成３０年　４月　５日出願公開、特開２０１８−　５５５７０、請求項の数（１３）〕について、次のとおり審決する。
【結　論】
　原査定を取り消す。
　本願の発明は、特許すべきものとする。
【理　由】
第１　手続の経緯
　本願は，平成２８年９月３０日の出願であって，令和２年７月１３日付けで拒絶理由が通知され，令和２年９月９日付けで手続補正がされ，令和２年１１月１６日付けで拒絶査定（原査定）がされ，これに対し，令和３年２月２２日に拒絶査定不服審判の請求がされると同時に手続補正がされ，令和３年３月２３日に前置報告がされたものである。
第２　原査定の概要
　原査定（令和２年１１月１６日付け拒絶査定）の概要は次のとおりである。
１．本願請求項１〜３，５〜９，１２〜１３に係る発明は，以下の引用文献１〜３に基づいて，その発明の属する技術の分野における通常の知識を有する者（以下，「当業者」という。）が容易に発明できたものであるから，特許法第２９条第２項の規定により特許を受けることができない。
引用文献等一覧
１．特開２００１−１８８７６７号公報
２．特開２０１３−１１４５３８号公報
３．特開２０１０−２１１４９６号公報（周知技術を示す文献）
第３　審判請求時の補正について
　審判請求時の補正は，特許法第１７条の２第３項から第６項までの要件に違反しているものとはいえない。
　審判請求時の補正によって，請求項１において，「前記割当て手段は，
　　演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し，
　　前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正及び，
　請求項１２において，「割当てにおいて，
　演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し，
　前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正は，それぞれ，補正前の請求項１の発明特定事項である「割当て手段」及び補正前の請求項１２の発明特定事項である「割当て」の内容を限定的に減縮するものであるから，特許請求の範囲の減縮を目的とするものであり，また，当該補正の内容は，当初明細書の段落００５４〜００６９に記載されているから，当該補正は新規事項を追加するものではない。
　また，審判請求時の補正によって請求項１０において，「前記割当て手段は，前記第２の割当て候補の前記評価値が前記複数の演算回路間で重複して保持するデータが所定数以下になることを示す場合，または，前記第１の割当て候補における前記複数の演算回路間で重複して保持するデータ量に対する，前記第２の割当て候補における前記複数の演算回路間で重複して保持するデータ量の削減率が所定値以上となることを前記第２の割当て候補の前記評価値が示す場合，前記第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正は，補正前の請求項１０の発明特定事項である「割当て手段」の内容を限定的に減縮するものであるから，特許請求の範囲の減縮を目的とするものであり，また，当該補正の内容は，当初明細書の段落００６９に記載されているから，当該補正は新規事項を追加するものではない。
　そして，「第４　本願発明」から「第６　対比・判断」までに示すように，補正後の請求項１〜１３に係る発明は，独立特許要件を満たすものである。
第４　本願発明
　本願の請求項１〜１３に係る発明（以下，それぞれ「本願発明１」〜「本願発明１３」という。）は，令和３年２月２２日付けの手続補正で補正された特許請求の範囲の請求項１〜１３に記載された事項により特定される発明であり，以下のとおりの発明である。
「　【請求項１】
　階層的な演算処理を並列に行う複数の演算回路と，
　前記演算処理における所定の階層における複数の演算であって，前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段とを有し，
　前記割当て手段は，
　　演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し，
　　前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする演算処理装置。
　　【請求項２】
　前記複数の演算回路のそれぞれは，演算する際に参照する前記所定の階層より前の階層における演算結果を記憶する記憶手段を有することを特徴とする請求項１に記載の演算処理装置。
　　【請求項３】
　前記演算処理は，Ｃｏｎｖｏｌｕｔｉｏｎａｌ　Ｎｅｕｒａｌ　Ｎｅｔｗｏｒｋによる演算処理であるであることを特徴とする請求項１又は２に記載の演算処理装置。
　　【請求項４】
　前記割当て手段は，シミュレーテッド　アニーリング法に基づいて，前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項１乃至３の何れか１項に記載の演算処理装置。
　　【請求項５】
　前記割当て手段は，前記複数の演算回路間の演算量の差が少なくなるように，前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項１乃至４の何れか１項に記載の演算処理装置。
　　【請求項６】
　前記割当て手段は，前記記憶手段に記憶されるデータの量が所定値を超えないように，前記複数の演算それぞれを前記複数の演算回路に割り当てることを特徴とする請求項２に記載の演算処理装置。
　　【請求項７】
　前記割当て手段は，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が所定数より少なくなるように，前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項１乃至６の何れか１項に記載の演算処理装置。
　　【請求項８】
　前記複数の演算回路の稼働状態を確認する第１確認手段をさらに有し，
　前記割当て手段は，前記第１確認手段によって確認された前記稼働状態に基づいて，前記複数の演算の前記複数の演算回路への割当てを変更することを特徴とする請求項１乃至７の何れか１項に記載の演算処理装置。
　　【請求項９】
　前記演算回路は，前記所定の階層より前の階層における演算結果とフィルタカーネルとの畳込み演算を行うことを特徴とする請求項１乃至８の何れか１項に記載の演算処理装置。
　　【請求項１０】
　前記割当て手段は，前記第２の割当て候補の前記評価値が前記複数の演算回路間で重複して保持するデータが所定数以下になることを示す場合，または，前記第１の割当て候補における前記複数の演算回路間で重複して保持するデータ量に対する，前記第２の割当て候補における前記複数の演算回路間で重複して保持するデータ量の削減率が所定値以上となることを前記第２の割当て候補の前記評価値が示す場合，前記第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする請求項１乃至９の何れか１項に記載の演算処理装置。
　　【請求項１１】
　前記評価値は，前記複数の演算回路の個数および前記複数の演算回路に割当て可能な演算処理量に応じたペナルティ値を有することを特徴とする請求項１乃至１０の何れか１項に記載の演算処理装置。
　　【請求項１２】
　階層的な演算処理を並列に行う複数の演算回路への，前記演算処理における所定の階層における複数の演算であって，前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれの割当てにおいて，
　演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し，
　前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする演算処理方法。
　　【請求項１３】
　請求項１から１１の何れか１項に記載の演算処理装置としてコンピュータを機能させるためのプログラム。」
第５　引用文献，引用発明等
１．引用文献１について
　原査定の拒絶の理由に引用された引用文献１（特開２００１−１８８７６７号公報）には，図面とともに次の事項が記載されている。（下線は当審で付したものである。）
「【００４４】【発明の実施の形態】（第１実施の形態）本第１の実施の形態の
ニューラルネットワーク演算装置
複数の演算ユニット１０1〜１０x
，マスターノード１２，プログラムメモリ１４，ホストコンピュータ１６とから構成され
入力層，隠れ層，及び出力層からなる３層のパーセプトロンのニューラルネットワークにおけるニューロン演算
を行う
「【００５１】
演算ユニット１０1〜１０xは，
ニューロン演算値の部分和ｙαjの演算
を
並列して行う
【００５２】
すなわち，
ニューロン演算時には，特定のニューロンの持つ全シナプスのうちから割り当てられたシナプス
のそれぞれとシナプス接続する前段のニューロン出力値と，シナプスの接続重みとを乗算して，乗算結果をＮ個のシナプスに亙って累積加算し，得られた結果を出力する
「【００９３】次に，上記構成のニューラルネットワーク演算装置に，図３に示した，
入力層，隠れ層及び出力層からなる３層のパーセプトロン型のニューラルネットワークの演算を
第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニットに割り当てる場合に
【００９４】また，図３に示した全てのニューロン１〜ｎ＋ｍ＋ｐのニューロン出力値をそれぞれＹ1〜Ｙn+m+p，ニューロンｉからニューロンjへのシナプス接続の重みをＷjiと書き表すと，３層のパーセプトロン型のニューラルネットワークの演算は，Ｗjiを用いて，図９（Ａ）に示すような３×３のブロックからなる行列で表すことができる。
【００９５】図９（Ａ）中のＩの領域は入力層から隠れ層への接続(すなわち，１≦i≦ｎ，ｎ＋１≦ｊ≦ｎ＋ｍ)を表し，図９（Ａ）中のIIの領域は隠れ層から出力層への接続(すなわち，ｎ＋１≦i≦ｎ＋ｍ，ｎ＋ｍ＋１≦ｊ≦ｎ＋ｍ＋ｐ)を表しており，他の領域は接続が無く(Ｗji＝０)，計算する必要の無い領域である。
【００９６】本第１の実施の形態におけるニューラルネットワークの計算方法では，I及びIIの領域で表された計算すべき接続を，少なくとも横方向に複数分割してｘ個の演算ユニットの全部又は１部に割り当て，分散処理させる。
【００９７】ここでは，一例として，図９（Ｂ）及び図９（Ｃ）に示すように，I及びIIの領域で表された計算すべき接続を，それぞれ横方向に３分割，縦方向に２分割して６つの演算ユニット１０1〜１０6に均等に割り当て，分散処理させるように構成する。
【００９８】
６つの演算ユニット１０1〜１０6のうち，第１演算ユニット１０1〜第３演算ユニット１０3を第１グループＧ１としてグループレジスタ５４に「１」を設定し，第４演算ユニット１０4〜第６演算ユニット１０6を第２グループＧ２としてグループレジスタ５４に「２」を設定し，１つの演算層を構成する複数のニューロンを２つのグループ
に分割して前記２つのグループＧ１，Ｇ２のそれぞれに割り当てると共に，１つのニューロンが行うニューロン演算を３分割して１グループを構成する３つの演算ユニットに均等に割り当て
「【０１０３】上記のようにニューロン演算が割り当てられた各演算ユニット１０1〜１０6を制御するマスターノード１２の制御ルーチンについて，図１０のフローチャートを参照しながら説明する。なお，マスターノード１２は，ホストコンピュータ１６がプログラムメモリ１４に書き込んだマスターノード１２の動作を記述するプログラムを読み込み，このプログラムにより動作を開始する。
ホストコンピュータ１６は，
各演算ユニット1０1〜１０6に対して
シナプス接続重みメモリ２６への初期データの書き込み，及びグループレジスタ５４の設定を行う
【０１０４】まず，ステップ３００では，ホストコンピュータ１６からニューロン演算開始命令が出力されたかを判断し，ニューロン演算開始命令が出力されたと判断すると，プログラムメモリ１４からマスターノード１２の制御プログラムを読み込み，次のステップ３０２に移行する。ステップ３０２では，隠れ層のニューロン演算を行うために必要な各種データを書き込み指示とともに出力する。
【０１０５】まず，
マスターノード１２は，グループレジスタ５４に「１」が設定された演算ユニット，すなわち，第１グループＧ１に属する演算ユニット１０1，１０2，１０3のそれぞれに対し，以下の設定を行う。すなわち，第１演算ユニット１０1の最小ニューロンレジスタ５０には１を設定し，第２演算ユニット１０2の最小ニューロンレジスタ５０にはＮ１＋１を設定し，第３演算ユニット１０3の最小ニューロンレジスタ５０にはＮ２＋１を設定すると共に，第１演算ユニット１０1の最大ニューロンレジスタ５２にはＮ１を設定し，第２演算ユニット１０2の最大ニューロンレジスタ５２にはＮ２を設定し，第３演算ユニット１０3の最大ニューロンレジスタ５２にはｎを設定する
【０１０６】
同様に，マスターノード１２は，グループレジスタ５４に「２」が設定された演算ユニット，すなわち，第２グループＧ２に属する演算ユニット１０4，１０5，１０6の最小ニューロンレジスタ５０に対しても，第４演算ユニット１０4には１を設定し，第５演算ユニット１０5にはＮ１＋１を設定し，第５演算ユニット１０5にはＮ２＋１を設定すると共に，最大ニューロンレジスタ５２に対し，第４演算ユニット１０4にはＮ１を設定し，第５演算ユニット１０5にはＮ２を設定し，第５演算ユニット１０5にはｎを設定する
【０１０７】また，
マスターノード１２は，ホストコンピュータ１６がプログラムメモリ１４に書き込んだ入力層のニューロン出力値Ｙ1〜Ｙnをプログラムメモリ１４から読み出し，読み出したニューロン出力値Ｙ1〜Ｙnをニューロン番号ｉ，及び書き込み制御信号と共にローカルバス１８に出力する
【０１０８】
演算ユニット１０1〜１０6に対する書き込みは前述の方法によって行われる。すなわち，演算ユニット１０1〜１０6は，それぞれ最小ニューロンレジスタ５０に設定された値と最大ニューロンレジスタ５２に設定された値の間のニューロン番号ｉのニューロン出力値Ｙiを受取るため，ニューロン出力値Ｙ1〜ＹN1は第１演算ユニット１０1及び第４演算ユニット１０4のニューロン出力値メモリ２４のアドレス０からアドレスＮ−１に順に保存され，ニューロン出力値ＹN1+1〜ＹN2は第２演算ユニット１０2及び第５演算ユニット１０5のニューロン出力値メモリ２４のアドレス０からアドレスＮ−１に順に保存され，ニューロン出力値ＹN2+1〜Ｙnは第３演算ユニット１０3及び第６演算ユニット１０6のニューロン出力値メモリ２４のアドレス０からアドレスＮ−１に順に保存される
【０１０９】
また，マスターノード１２は，第１グループＧ１に属する演算ユニット１０1，１０2，１０3のそれぞれの演算開始ニューロンレジスタ４２及び演算シナプス数レジスタ４０を設定する
【０１１０】
第２グループＧ２に属する演算ユニット１０4，１０5，１０6に対しても同様に，それぞれの演算開始ニューロンレジスタ４２及び演算シナプス数レジスタ４０を設定する
【０１１１】
全ての設定が終了したら
隠れ層のニューロン
に関するニューロン演算値の部分和演算処理を開始させる
「図１
」
「図２
」
「図３
」
　上記段落０１０５〜０１１０の記載及び図２の記載から，引用文献１には，「マスターノード１２は，グループレジスタ５４の設定に応じて，最小ニューロンレジスタ５０，最大ニューロンレジスタ５２，演算開始ニューロンレジスタ４２及び演算シナプス数レジスタ４０を設定するとともに，ホストコンピュータ１６がプログラムメモリ１４に書き込んだ入力層のニューロン出力値Ｙ1〜Ｙnを演算ユニット１０1〜１０6に書き込」むことが記載されていると認められる。
　したがって，上記引用文献１には次の発明（以下，「引用発明」という。）が記載されていると認められる。
「複数の演算ユニット１０1〜１０x，マスターノード１２，プログラムメモリ１４，ホストコンピュータ１６とから構成され，入力層，隠れ層，及び出力層からなる３層のパーセプトロンのニューラルネットワークにおけるニューロン演算を行うニューラルネットワーク演算装置であって，（段落００４４，図１，図３）
　演算ユニット１０1〜１０xは，ニューロン演算値の部分和ｙαjの演算を並列して行う，すなわち，ニューロン演算時には，特定のニューロンの持つ全シナプスのうちから割り当てられたシナプスのそれぞれとシナプス接続する前段のニューロン出力値と，シナプスの接続重みとを乗算して，乗算結果をＮ個のシナプスに亙って累積加算し，得られた結果を出力するものであり，（段落００５１，００５２）
　入力層，隠れ層及び出力層からなる３層のパーセプトロン型のニューラルネットワークの演算を第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニットに割り当てる場合に，６つの演算ユニット１０1〜１０6のうち，第１演算ユニット１０1〜第３演算ユニット１０3を第１グループＧ１としてグループレジスタ５４に「１」を設定し，第４演算ユニット１０4〜第６演算ユニット１０6を第２グループＧ２としてグループレジスタ５４に「２」を設定し，１つの演算層を構成する複数のニューロンを２つのグループに分割して前記２つのグループＧ１，Ｇ２のそれぞれに割り当てると共に，１つのニューロンが行うニューロン演算を３分割して１グループを構成する３つの演算ユニットに均等に割り当て，（段落００９３，００９８）
　ホストコンピュータ１６は，各演算ユニット１０1〜１０6に対してシナプス接続重みメモリ２６への初期データの書き込み，及びグループレジスタ５４の設定を行い，（段落０１０３，図２）
　マスターノード１２は，グループレジスタ５４の設定に応じて，最小ニューロンレジスタ５０，最大ニューロンレジスタ５２，演算開始ニューロンレジスタ４２及び演算シナプス数レジスタ４０を設定するとともに，ホストコンピュータ１６がプログラムメモリ１４に書き込んだ入力層のニューロン出力値Ｙ1〜Ｙnを演算ユニット１０1〜１０6に書き込み，（段落０１０５〜０１１０，図２）
　全ての設定が終了したら，隠れ層のニューロンに関するニューロン演算値の部分和演算処理を開始させる，（段落０１１１）
　ニューラルネットワーク演算装置。」
２．引用文献２について
　原査定の拒絶の理由に引用された引用文献２（特開２０１３−１１４５３８号公報）には，図面とともに次の事項が記載されている。（下線は当審で付したものである。）
「【００１０】
　ここで，図２を参照してＧＰＵ１２について詳細に説明する。
　図２は，ＧＰＵの概要構成説明図である。
　ＧＰＵ１２は，複数の演算ユニット３１と，これら複数の演算ユニット３１上におけるスレッドの実行制御を行うコントローラ３２を備えている。各演算ユニット３１は，例えば，ＰＣＩ　Ｅｘｐｒｅｓｓ２．０規格に則った高速グラフィックバス３３を介して，キャッシュ２１に接続されている。さらにこのキャッシュ２１を介して，複数の演算ユニット３１により共用されるＶＲＡＭ２２が接続されている。
　ＶＲＡＭ２２は，大別すると，汎用メモリエリア３４及び各種定数を格納する定数メモリエリア３５を備えている。
【００１１】
　図３は，演算ユニットの詳細構成説明図である。
　ＧＰＵ１２を構成している各演算ユニット３１は，複数の演算エレメント４１と，全演算エレメント４１により共有されるメモリエリアを構成するローカルメモリ４２と，各演算エレメント４１に対応づけられ，当該対応する演算エレメント４１により占有されるメモリエリアを構成するプライベートメモリ４３と，各演算エレメント４１とローカルメモリ４２とを相互に接続するバス４４と，を備えている。ここで，バス４４と，高速グラフィックバス３３とは，相互に接続されている。
【００１２】
　次に再び情報処理装置の構成について説明する。
　ノースブリッジ１３は，比較的広帯域で高速なバスの通信インタフェース動作を行っている。
　ＲＯＭ１５は，制御プログラム等の不揮発的に記憶する必要があるデータを格納している。
　ＲＡＭ１６は，いわゆるメインメモリを構成しており，各種のデータを一時的に格納する。
　サウスブリッジ１７は，機械的な駆動部を有するＨＤＤ，光ディスクドライブ等の比較的狭帯域で低速なバスに接続される装置との間の通信インタフェース動作を行う。
　ＨＤＤ１８は，低速動作ではあるが，大容量のデータを記憶する。
　通信インタフェース(ＩＦ)部２０は，図示しないイーサネット（登録商標）規格に準拠した通信ネットワークを介して他の情報処理装置等との間でデータ通信を行う際の通信インタフェース動作を行う。
【００１３】
　ここで，実施形態の動作説明に先立ち，処理対象のデータについて説明する。
　本実施形態においては，スレッドを実行する演算ユニット３１は，可能な場合には，メモリアクセス領域（メモリアクセス範囲）が近いスレッド群（≒タスク）を近い時間に実行するようにされている。
　ＧＰＵ１２においては，一つのアプリケーションプログラムが複数のデータに対して実行されるＳＰＭＤ（Single　Program　Multiple　Data）という実行モデルが適用されることが多い。
【００１４】
　ところで，一つのアプリケーションプログラムは，並列に実行されるスレッド（ワークアイテム）と呼ばれる小さなプログラムで構成されている。そして，スレッドを実行するに際しては，複数のスレッドが，一つのワークグループとしてグルーピングされてワークグループ単位で実行される。したがって，一つのアプリケーションプログラムを実行することで複数のワークグループが並列に実行されることとなる。
【００１５】
　そして，各演算ユニット３１には，ワークグループ単位で割り当てがなされる。演算ユニット３１に割り当てられたワークグループを構成する複数のスレッドには，割り当てがなされた演算ユニット３１に対応するローカルメモリ４２が共有可能とされている。すなわち，同一の演算ユニット３１に割り当てられた複数のワークグループは，ローカルメモリ４２を共有する。
　さらにワークグループを構成する各スレッドは，それぞれ演算エレメント４１に割り当てられ，各演算エレメント４１に割り当てられたスレッドは，当該演算エレメント４１に割り当てられたスレッドのみが参照可能なプライベートメモリ４３を利用可能な状態となっている。
【００１６】
　図４は，ＧＰＵにおけるアプリケーションプログラムの実行モデルの概念説明図である。
　図４に示すように，アプリケーションプログラムＡＰＬは，概念上，２次元のインデックス＝（Ｗｘ，Ｗｙ）で識別され，それぞれ並列に実行可能とされた複数のワークグループＷＧにより構成されている。各ワークグループＷＧは，同様にそれぞれ並列に実行可能とされた複数のスレッドＴＨにより構成されている。
【００１７】
　図５は，各ワークグループのＶＲＡＭの利用状況の説明図である。
　図５においては，３つのワークグループがメモリを参照している場合の説明図である。
　図５に示すように，グループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，グループＩＤ＝３００が割り当てられているワークグループＷＧ３のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，は一部重なる領域がある。
【００１８】
　これに対し，グループＩＤ＝２００が割り当てられているワークグループＷＧ２の参照エリアは，いずれのワークグループＷＧ１，ＷＧ３が参照しているエリアとは重なりがなく，異なる領域となっている。
　上述したようにグループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，グループＩＤ＝３００が割り当てられているワークグループＷＧ３のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，は一部重なりがある。したがって，このまま，ワークグループＷＧ１と，ワークグループＷＧ３と，を並列動作可能な別の演算ユニット３１にそれぞれ割り当てたとしても，ワークグループＷＧ１及びワークグループＷＧ３が同時に並列して実行された場合には，同一のメモリアドレスにアクセスすることはできない。すなわち，同一データのフェッチは排他制御により異なる演算ユニット３１で同時に行うことはできないため，実質的な実行効率が低下することとなる。
【００１９】
　したがって，このような場合には，ワークグループＷＧ１及びワークグループＷＧ３を同一の演算ユニット３１に割り当てることで，メモリアクセス空間における最適な割り当て（空間方向のアクセス最適化）を行うことが可能となる。
【００２０】
　一方，グループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，グループＩＤ＝２００が割り当てられているワークグループＷＧ２のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと，は，重なりがない。
　このため，このままワークグループＷＧ１と，ワークグループＷＧ２と，を同一の演算ユニット３１に割り当てたとしても，例えば，ワークグループＷＧ１の次にワークグループＷＧ２を同一の演算ユニット３１に割り当てて実行した場合には，演算ユニット３１は，ワークグループＷＧ１の処理終了後，ワークグループＷＧ２の処理を行う前にデータの再読込を行う必要があり，キャッシュ２１の利用効率が低下する。
【００２１】
　したがって，このような場合には，ワークグループＷＧ１と，ワークグループＷＧ２を同時並行して処理が可能な別の演算ユニット３１にそれぞれ割り当てることで，時間軸方向における最適な割り当て（時間方向のアクセス最適化）を行うことが可能となる。
　これらのため，本実施形態においては，ワークグループについて空間方向及び時間方向のアクセス最適化を行うために，ランタイムモジュールに各ワークグループの参照エリア（メモリアクセス範囲）を通知する構成を採っている。
【００２２】
　この場合に，各ワークグループＷＧ１〜ＷＧ３に参照エリアが割り当てられる態様としては，アドレスが連続したメモリエリアが参照エリアとして割り当てられるラスター形式の割り当て態様と，アドレスは不連続であるが，概念的に２次元のメモリ空間上でタイル形状（矩形形状）のメモリエリアが参照エリアとして割り当てられるタイル形式の割り当て態様（連続したメモリ空間では，所定アドレスずつ離れて，複数の同一容量のメモリ空間が配置される態様となる），が存在する。
　そこで，本実施形態においては，ＡＰＩの仕様として，参照エリアがラスター形式で割り当てられる場合と，タイル形式で割り当てられる場合との，双方に対応可能な仕様を採用した。」
「【００２７】
　次に実施形態の動作を説明する。
　図７は，実施形態の処理フローチャートである。
　まず，コントローラ３２は，キューの先頭にあるタスクのグループのメモリアクセス領域を取得する（ステップＳ１０）。
【００２８】
　次にコントローラ３２は，キューがいっぱいであるか否かを判別する（ステップＳ１１）。
　ステップＳ１１の判別において，キューがいっぱいである場合には（ステップＳ１１；Ｙｅｓ），再び処理をステップＳ１０に移行して待機状態となる。
　ステップＳ１１の判別において，キューがいっぱいではない，すなわち，キューに余裕がある場合には（ステップＳ１１；Ｎｏ），スケジュール待ちをしているタスクのグループがあり，他のタスクのグループをキューに積むことが可能であるか否かを判別する（ステップＳ１２）。
【００２９】
　ステップＳ１２の判別において，スケジュール待ちをしているタスクのグループがない場合には（ステップＳ１２；Ｎｏ），再び処理をステップＳ１０に移行して待機状態となる。
　ステップＳ１２の判別において，スケジュール待ちをしているタスクのグループがあり，他のタスクのグループをキューに積むことが可能である場合には（ステップＳ１２；Ｙｅｓ），当該スケジュール待ちをしているタスクのグループのメモリアクセス領域を計算により算出する（ステップＳ１３）。
【００３０】
　次にコントローラ３２は，算出したメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっているか否かを判別する（ステップＳ１４）。
　ステップＳ１４の判別において，算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっている場合には（ステップＳ１４；Ｙｅｓ），当該タスクのグループをメモリアクセス領域が重なるグループのリストに追加し（ステップＳ１５），処理をステップＳ１７に移行する。
【００３１】
　一方，ステップＳ１４の判別において，算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっていない場合には（ステップＳ１４；Ｎｏ），当該タスクのグループをメモリアクセス領域が重ならないグループのリストに追加する（ステップＳ１６）。
　続いてコントローラ３２は，メモリアクセス領域が重なるグループのリスト及びメモリアクセス領域が重ならないグループのリストに含まれるタスクのグループの数がキューにタスクのグループを積むか否かを判定するための所定の閾値を超えたか否かを判別する（ステップＳ１７）。
【００３２】
　ステップＳ１７の判別において，両リストに含まれる全タスクのグループの数が所定の閾値を超えていない場合には（ステップＳ１７；Ｎｏ），コントローラ３２は，スケジュール待ちをしているタスクのグループがあり，他のタスクのグループをキューに積むことが可能であるか否かを再び判別する（ステップＳ１８）。
　ステップＳ１８の判別において，スケジュール待ちしているタスクのグループがある場合には（ステップＳ１８；Ｙｅｓ），処理を再びステップＳ１３に移行し，以下，同様の処理を行う。
【００３３】
　ステップＳ１８の判別において，スケジュール待ちしているタスクのグループがない場合には（ステップＳ１８；Ｎｏ），コントローラ３２は，メモリアクセス領域が重なるグループのリストに含まれるタスクのグループのうち，最も重なる領域が多いタスクのグループを時間方向にキューに積む（ステップＳ１９）。すなわち，キューの先頭にあるワークグループの処理後に同一の演算ユニット３（あるいは，演算エレメント４１）において，処理がなされるようにキューに積まれることとなる。
【００３４】
　また，コントローラ３２は，メモリアクセス領域が重ならないグループのリストに含まれるタスクのグループのうち，最もアドレスが近いタスクのグループを空間方向にキューに積む（ステップＳ２０）。すなわち，キューの先頭にあるタスクのグループとは，別の演算ユニット３１（あるいは演算エレメント４１）において，処理がなされるようにキューに積まれることとなる。」
３．引用文献３について
　原査定の拒絶の理由に引用された引用文献３（特開２０１０−２１１４９６号公報）には，図面とともに次の事項が記載されている。（下線は当審で付したものである。）
「【００１６】
　次に動作について説明する。
　図４はこの発明の実施の形態１による動的再構成装置の処理内容を示すフローチャートである。
　動的再構成回路２を構成している各ＰＥ３のマッピング判定部１１は，マッピング制御部８からマッピング情報Ｓ３の出力を受けて，現在，演算処理部１２が演算処理を実施していれば，現在処理中である旨（空き領域でない旨）を示す領域情報Ｓ１を構成情報生成部４に出力する。
　一方，マッピング制御部８からマッピング情報Ｓ３の出力を受けていない場合，あるいは，マッピング制御部８からマッピング情報Ｓ３の出力を受けていても，既に演算処理部１２の演算処理が終了している場合，現在処理を実行していない旨（空き領域である旨）を示す領域情報Ｓ１を構成情報生成部４に出力する。
【００１７】
　構成情報生成部４の空き領域検出部６は，動的再構成回路２を構成している全てのＰＥ３のマッピング判定部１１から領域情報Ｓ１を収集する。
　空き領域検出部６は，全てのＰＥ３のマッピング判定部１１から領域情報Ｓ１を収集すると，その領域情報Ｓ１の内容を参照することで，動的再構成回路１を構成しているＰＥ３の中で，現在処理を実行していない（空き領域である）ＰＥ３を検出し，そのＰＥ３を示す空き領域情報を回路構成生成部７に出力する（ステップＳＴ１）。
【００１８】
　構成情報生成部４の回路構成生成部７は，空き領域検出部６から空き領域情報を受けると，その空き領域情報を参照して，現在処理を実行していないＰＥ３を認識する。
　また，回路構成生成部７は，処理基幹メモリ５に記憶されている演算内容と，その演算内容に係る処理を実行する際に必要なＰＥ３の個数Ｎを取得する。
　回路構成生成部７は，例えば，現在処理を実行していないＰＥ３の個数がＭであり，その個数Ｍが，処理を実行する際に必要なＰＥ３の個数Ｎより大きければ，現在処理を実行していないＭ個のＰＥ３の中から，Ｎ個のＰＥ３を選択する。
　動的再構成回路２を構成しているＰＥ３はどれも同じ処理能力を有し，どのＰＥ３でも，割り当てられた演算内容を同じように処理する論理セルであるため，選択するＰＥ３は任意でよく，ＰＥ３の選択方法を特に限定するものではない。
【００１９】
　回路構成生成部７は，Ｎ個のＰＥ３を選択すると，Ｎ個のＰＥ３を示す選択情報と，Ｎ個のＰＥ３が処理する演算内容とを含む構成情報Ｓ２をマッピング制御部８に出力する（ステップＳＴ２）。
　例えば，処理基幹メモリ５に記憶されている演算内容が，下記に示すような３つの演算ステップをシリアルに実行するものであり，処理を実行する際に必要なＰＥ３の個数が３個である場合，３個のＰＥ３を直列に接続して，先頭のＰＥ３に（ステップ１）の演算内容，次のＰＥ３に（ステップ２）の演算内容，最後のＰＥ３に（ステップ３）の演算内容を割り当てる必要がある。
（ステップ１）　ａとｂを加算
（ステップ２）　ステップ１の演算結果にｃを乗算
（ステップ３）　ステップ１の演算結果をｄで除算
　したがって，構成情報Ｓ２に含まれる選択情報は，単に選択したＰＥ３を示す情報だけでなく，選択した複数のＰＥ３間の接続情報を含む情報である。
　ここでは，説明の簡単化のため，各ステップの演算内容が極めて簡単な四則演算の例を示しているが，実際には，もっと複雑な演算の場合が多い。
【００２０】
　マッピング制御部８は，構成情報生成部４の回路構成生成部７から構成情報Ｓ２を受けると，その構成情報Ｓ２に含まれている選択情報が示すＰＥ３に対して，その構成情報Ｓ２に含まれている演算内容を割り当てる旨を示すマッピング情報Ｓ３を動的再構成回路２に出力する。
【００２１】
　動的再構成回路２を構成しているＰＥ３のマッピング判定部１１は，マッピング制御部８からマッピング情報Ｓ３を受けると，そのマッピング情報Ｓ３に含まれている演算内容を演算処理部１２に割り当てる処理を行う（ステップＳＴ３）。
　上記の例では，Ｎ個のＰＥ３を選択しているので，Ｎ個のＰＥ３がマッピング制御部８からマッピング情報Ｓ３を受けて，そのマッピング情報Ｓ３に含まれている演算内容を演算処理部１２に割り当てることになる。
　マッピング判定部１１は，上述したように，そのマッピング情報Ｓ３に含まれている演算内容を演算処理部１２に割り当てると，当該ＰＥ３が現在処理中である旨（空き領域でない旨）を示す領域情報Ｓ１を構成情報生成部４に出力する。
【００２２】
　ＰＥ３の演算処理部１２は，マッピング判定部１１から演算内容が割り当てられると，その演算内容に係る処理を実行する（ステップＳＴ４）。
　なお，マッピング判定部１１により演算内容が割り当てられた演算処理部１２は，既に演算内容が割り当てられて処理を実行している他のＰＥ３の演算処理部１２とは独立しているので，他のＰＥ３の演算処理部１２と並行して処理を実行することになる。
　図１の動的再構成装置は，次に実行する処理があれば，ステップＳＴ１〜ＳＴ４を繰り返し実行し，次に実行する処理がなければ，一連の処理を終了する（ステップＳＴ５）。」
第６　対比・判断
１．本願発明１について
（１）対比
　本願発明１と引用発明とを対比すると，次のことがいえる。
ア　引用発明の「入力層，隠れ層，及び出力層からなる３層のパーセプトロンのニューラルネットワークにおけるニューロン演算」は，本願発明１の「階層的な演算処理」に相当する。
　そして，引用発明の「演算ユニット１０1〜１０x」は，「ニューロン演算値の部分和ｙαjの演算を並列して行う」ものである。
　そうすると，引用発明の「ニューロン演算値の部分和ｙαjの演算を並列して行う」「演算ユニット１０1〜１０x」は，本願発明１の「階層的な演算処理を並列に行う複数の演算回路」に相当する。
イ（ア）引用発明は，「入力層，隠れ層及び出力層からなる３層のパーセプトロン型のニューラルネットワークの演算を第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニットに割り当てる場合に」，「１つの演算層を構成する複数のニューロンを２つのグループに分割して前記２つのグループＧ１，Ｇ２のそれぞれに割り当てると共に，１つのニューロンが行うニューロン演算を３分割して１グループを構成する３つの演算ユニットに均等に割り当て」ているところ，「第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニット」に割り当てられる“６個の演算”は，「３層のパーセプトロン型のニューラルネットワーク」における“複数の演算”であるといえるから，本願発明１の「所定の階層における複数の演算」に相当する。
　また，上記アの検討から，上記“６個の演算”は，「階層的な演算処理」における「演算」である。
　したがって，引用発明の「第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニットに割り当て」られる“６個の演算”は，本願発明１の「前記演算処理における所定の階層における複数の演算」に相当する。
（イ）引用発明の「演算ユニット１０1〜１０x」は，「ニューロン演算時には，特定のニューロンの持つ全シナプスのうちから割り当てられたシナプスのそれぞれとシナプス接続する前段のニューロン出力値と，シナプスの接続重みとを乗算して，乗算結果をＮ個のシナプスに亙って累積加算」するものであるところ，引用発明の「前段のニューロン出力値」は，本願発明１の「前記所定の階層より前の階層における複数の演算結果」に相当し，当該「前段のニューロン出力値」と「シナプスの接続重み」とを乗算する際には，「前段のニューロン出力値」のうちの“少なくとも一部”を“参照して”「シナプスの接続重み」と乗算しているから，引用発明の“６個の演算”は，「前段のニューロン出力値」“のうちの少なくとも一部を参照”しているといえる。
　したがって，引用発明の「第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニット」に割り当てられる“６個の演算”と本願発明の「複数の演算」とは，「所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する複数の演算」である点で一致する。
（ウ）引用発明の「ホストコンピュータ１６」は，「各演算ユニット１０1〜１０6に対してシナプス接続重みメモリ２６への初期データの書き込み，及びグループレジスタ５４の設定を行」うものであり，また，「マスターノード１２」は，「グループレジスタ５４の設定に応じて，最小ニューロンレジスタ５０，最大ニューロンレジスタ５２，演算開始ニューロンレジスタ４２及び演算シナプス数レジスタ４０を設定するとともに，ホストコンピュータ１６がプログラムメモリ１４に書き込んだ入力層のニューロン出力値Ｙ1〜Ｙnを演算ユニット１０1〜１０6に書き込」むものである。
　そして，引用発明は，これらの「設定」や「書き込み」を行うことで，「入力層，隠れ層及び出力層からなる３層のパーセプトロン型のニューラルネットワークの演算」を分割した“６個の演算”を「第１演算ユニット１０1から第６演算ユニット１０6の６個の演算ユニット」に「割り当てる」ものである。
　したがって，引用発明の上記「設定」や「書き込み」を行う主体である「ホストコンピュータ１６」及び「マスターノード１２」は，本願発明１の「複数の演算それぞれを前記複数の演算回路に割当てる割当て手段」に相当する。
（エ）上記（ア）〜（ウ）の検討から，引用発明の「ホストコンピュータ１６」及び「マスターノード１２」と本願発明１の「割当て手段」とは，“前記演算処理における所定の階層における複数の演算であって，前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段”である点で共通する。
ウ　引用発明の「ニューラルネットワーク演算装置」は，上記ア，イで検討した「複数の演算回路」及び「割当て手段」を備えている点で，本願発明１の「演算処理装置」に対応するものといえる。
エ　したがって，本願発明１と引用発明との間には，次の一致点，相違点があるといえる。
（一致点）
「階層的な演算処理を並列に行う複数の演算回路と，
　前記演算処理における所定の階層における複数の演算であって，前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段と
を有する演算処理装置。」
（相違点）
　本願発明１では，割当て手段が，「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」，「前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」ものであるのに対して，引用発明のホストコンピュータ１６及びマスターノード１２は，そのように動作するものではない点。
（２）相違点についての判断
ア　引用発明は，ホストコンピュータ１６がグループレジスタ５４の設定を行うと，マスターノード１２は，グループレジスタ５４の設定に応じて，演算ユニット内の各種レジスタの設定を行い，これにより，６個の演算ユニットに，３層のパーセプトロン型のニューラルネットワークの演算を割り当てるものであり，具体的には，１つの演算層を構成する複数のニューロンを２つのグループに分割して前記２つのグループＧ１，Ｇ２のそれぞれに割り当てると共に，１つのニューロンが行うニューロン演算を３分割して１グループを構成する３つの演算ユニットに均等に割り当てるというものである。
　そうすると，引用発明は，単に，３層のパーセプトロン型のニューラルネットワークの演算を６個の演算ユニットに均等に分割して割り当てることが記載されているだけであって，「割当て手段」が，「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」，「前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」こと（以下，「相違点に係る構成」という。）は想定されておらず，そのようなことについて，記載も示唆もされていない。
　また，引用文献２〜３にも，上記相違点に係る構成については記載がなく，また，上記相違点に係る構成が，本願出願前に当該技術分野における周知技術であったともいえない。
　そうすると，引用発明において，「割当て手段」が，「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」，「前記評価値が所定の基準を満たす割当て候補であって，演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第１の割当て候補より少ない第２の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」ことは，当業者であっても，容易に想到し得たことであるとはいえない。
イ　よって，本願発明１は，当業者であっても引用発明及び引用文献２〜３に記載の技術的事項に基づいて容易に発明できたものであるとはいえない。
２．本願発明２〜１３について
　本願発明２〜１１，１３は，本願発明１を直接・間接に引用するものであって，本願発明１と同一の構成を備えるものであるから，本願発明１と同じ理由により，当業者であっても引用発明及び引用文献２〜３に記載の技術的事項に基づいて容易に発明できたものとはいえない。
　また，本願発明１２は，本願発明１に対応する演算処理方法の発明であって，本願発明１とカテゴリ表現が異なるだけの発明であるから，本願発明１と同じ理由により，当業者であっても引用発明及び引用文献２〜３に記載の技術的事項に基づいて容易に発明できたものとはいえない。
第７　むすび
　以上のとおり，本願発明１〜１３は，当業者が引用発明及び引用文献２〜３に記載の技術的事項に基づいて容易に発明をすることができたものではない。したがって，原査定の理由によっては，本願を拒絶することはできない。
　また，他に本願を拒絶すべき理由を発見しない。
　よって，結論のとおり審決する。