(57)【要約】【課題】最適化問題を高速に計算できる計算装置を提供する。【解決手段】実施形態によれば、計算装置は、第１メモリ、第２メモリ、第３メモリ、第１演算モジュール及び第２演算モジュールを含む。前記第１メモリの出力は、前記第１演算モジュールに入力される。前記第１メモリの前記出力は、前記第２演算モジュールに入力される。前記第２メモリの出力は、前記第２演算モジュールに入力される。前記第３メモリの出力は、前記第２演算モジュールに入力される。前記第２演算モジュールの出力は、前記第１演算モジュールに入力される。【選択図】図１
2019159566.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
を備え、
前記第１メモリの出力は、前記第１演算モジュールに入力され、
前記第１メモリの前記出力は、前記第２演算モジュールに入力され、
前記第２メモリの出力は、前記第２演算モジュールに入力され、
前記第３メモリの出力は、前記第２演算モジュールに入力され、
前記第２演算モジュールの出力は、前記第１演算モジュールに入力される、計算装置。
【請求項２】
前記第２演算モジュールは、ＪＸ関数回路及びＪＸ更新回路を含み、
記第１メモリの前記出力及び前記第３メモリの前記出力は、前記ＪＸ関数回路に入力され、
前記ＪＸ関数回路の出力及び前記第２メモリの前記出力は、前記ＪＸ更新回路に入力され、
前記ＪＸ更新回路の出力は、前記第１演算モジュールに入力される、請求項１記載の計算装置。
【請求項３】
前記第２演算モジュールの前記出力は、前記ＪＸ更新回路の出力を含む、請求項２記載の計算装置。
【請求項４】
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＸ関数回路の出力は、前記ＦＸ更新回路に入力され、
前記ＦＸ更新回路の出力は、前記ＦＹ関数回路に入力され、
前記ＦＹ関数回路の出力は、前記ＦＹ更新回路に入力される、請求項１〜３のいずれか１つに記載の計算装置。
【請求項５】
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＸ関数回路の出力は、前記別のＦＸ更新回路に入力され、
前記別のＦＸ更新回路の出力は、前記別のＦＹ関数回路に入力され、
前記別のＦＹ関数回路の出力は、前記別のＦＹ更新回路に入力され、
前記ＦＸ更新回路の前記出力は、前記別のＦＸ更新回路に入力され、
前記ＦＹ更新回路の出力は、前記別のＦＹ更新回路に入力される、請求項４記載の計算装置。
【請求項６】
前記第２演算モジュールの前記出力は、前記ＦＸ更新回路に入力され、
前記第１メモリの前記出力は、前記ＦＹ更新回路に入力される、請求項４または５に記載の計算装置。
【請求項７】
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＹ関数回路の出力は、前記ＦＹ更新回路に入力され、
前記ＦＹ更新回路の出力は、前記ＦＸ関数回路に入力され、
前記ＦＸ関数回路の出力は、前記ＦＸ更新回路に入力される、請求項１〜３のいずれか１つに記載の計算装置。
【請求項８】
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＹ関数回路の出力は、前記別のＦＹ更新回路に入力され、
前記別のＦＹ更新回路の出力は、前記別のＦＸ関数回路に入力され、
前記別のＦＸ関数回路の出力は、前記別のＦＸ更新回路に入力され、
前記ＦＹ更新回路の前記出力は、前記別のＦＹ更新回路に入力され、
前記ＦＸ更新回路の出力は、前記別のＦＸ更新回路に入力される、請求項７記載の計算装置。
【請求項９】
前記第２演算モジュールの前記出力は、前記ＦＸ更新回路に入力され、
前記第１メモリの前記出力は、前記ＦＹ更新回路に入力される、請求項７または８に記載の計算装置。
【請求項１０】
前記第１演算モジュールの出力の一部は、前記第１メモリに入力され、
前記第１演算モジュールの出力の別の一部は、前記第２メモリに入力される、請求項１〜９のいずれか１つに記載の計算装置。
【請求項１１】
前記第１メモリは、第１メモリ部分と、第２メモリ部分と、を含み、
前記第１メモリ部分が読み出し動作を実施している時に、前記第２メモリ部分が書き込み動作を実施し、
前記第２メモリ部分が読み出し動作を実施している時に、前記第１メモリ部分が書き込み動作を実施する、請求項１〜１０のいずれか１つに記載の計算装置。
【請求項１２】
前記第１メモリは、第１変数群{ｘ}を保持し、
前記第２メモリは、第２変数群{ｙ}を保持し、
前記第３メモリは、第１パラメータ群｛Ｊ｝を保持し、
前記第１変数群{ｘ}は、Ｎ個（前記Ｎは２以上の整数）のｉ番目（ｉは１以上前記Ｎ以下の整数）の第１変数ｘｉを含み、
前記第２変数群{ｙ}は、前記Ｎ個のｉ番目（ｉは１以上前記Ｎ以下の整数）の第２変数ｙｉを含み、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ個の第１パラメータＪｌ，ｍ（前記ｌは１以上前記Ｎ以下の整数であり、前記ｍは１以上前記Ｎ以下の整数）を含み、
前記第１演算モジュールは、第１変数更新及び第１サブ更新を実施し、
前記第２演算モジュールは、第２サブ更新を実施し、
前記第１変数更新は、前記ｉ番目の前記第１変数ｘｉを前記ｉ番目の前記第２変数ｙｉに基づいて更新することを含み、
前記第１サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記ｉ番目の前記第１変数ｘｉに基づいて更新することを含み、
前記第２サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて更新することを含む、請求項１〜１１記載の計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、計算装置に関する。
【背景技術】
【０００２】
例えば、大規模な最適化問題を高速に解く計算装置が求められる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５８６５４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、最適化問題を高速に計算できる計算装置を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態によれば、計算装置は、第１メモリ、第２メモリ、第３メモリ、第１演算モジュール及び第２演算モジュールを含む。前記第１メモリの出力は、前記第１演算モジュールに入力される。前記第１メモリの前記出力は、前記第２演算モジュールに入力される。前記第２メモリの出力は、前記第２演算モジュールに入力される。前記第３メモリの出力は、前記第２演算モジュールに入力される。前記第２演算モジュールの出力は、前記第１演算モジュールに入力される。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係る計算装置を示す模式図である。
【図２】図２（ａ）及び図２（ｂ）は、第１実施形態に係る計算装置を示す模式図である。
【図３】図３（ａ）及び図３（ｂ）は、第１実施形態に係る計算装置を示す模式図である。
【図４】第１実施形態に係る計算装置を示す模式図である。
【図５】第１実施形態に係る計算装置を示す模式図である。
【図６】第１実施形態に係る計算装置を示す模式図である。
【図７】図７（ａ）〜図７（ｃ）は、第１実施形態に係る計算装置を示す模式図である。
【図８】図８（ａ）〜図８（ｃ）は、第１実施形態に係る計算装置を示す模式図である。
【図９】図９（ａ）及び図９（ｂ）は、第１実施形態に係る計算装置を示す模式図である。
【図１０】第１実施形態に係る計算装置を示す模式図である。
【図１１】図１１（ａ）及び図１１（ｂ）は、第１実施形態に係る計算装置を示す模式図である。
【図１２】図１２（ａ）及び図１２（ｂ）は、第１実施形態に係る計算装置を示す模式図である。
【図１３】第１実施形態に係る計算装置における動作を例示する模式図である。
【図１４】第１実施形態に係る計算装置における動作を例示する模式図である。
【図１５】図１５は、第２実施形態に係る計算装置を例示する模式図である。
【図１６】図１６は、第２実施形態に係る計算装置を例示する模式図である。
【図１７】図１７は、第２実施形態に係る計算装置を例示する模式図である。
【図１８】図１８（ａ）及び図１８（ｂ）は、第２実施形態に係る計算装置を例示する模式図である。
【図１９】図１９（ａ）〜図１９（ｆ）は、実施形態に係る計算装置の動作を例示する模式図である。
【図２０】実施形態に係る計算装置を含む情報処理装置を例示する模式図である。
【図２１】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２２】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２３】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２４】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２５】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２６】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２７】実施形態に係る計算装置の動作を例示するフローチャート図である。
【図２８】実施形態に係る計算装置の動作を例示するフローチャート図である。
【発明を実施するための形態】
【０００７】
以下に、本発明の各実施の形態について図面を参照しつつ説明する。  
本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【０００８】
（第１実施形態）  
図１は、第１実施形態に係る計算装置を示す模式図である。  
図１に示すように、本実施形態に係る計算装置１２０は、第１メモリ１１、第２メモリ１２、第３メモリ１３、第１演算モジュール２１及び第２演算モジュール２２を含む。これらのメモリは、例えば、保持部１０に含まれる。これらの演算モジュールは、例えば、演算部２０に含まれる。
【０００９】
第１メモリ１１の出力は、第１演算モジュール２１に入力される。第１メモリ１１の出力は、第２演算モジュール２２に入力される。第２メモリ１２の出力は、第２演算モジュール２２に入力される。第３メモリ１３の出力は、第２演算モジュール２２に入力される。第２演算モジュール２２の出力は、第１演算モジュール２１に入力される。
【００１０】
計算装置１２０において、制御回路４０が設けられても良い。制御回路４０から、制御信号４０ｓが出力され、上記の保持部１０及び演算部２０の動作が制御される。
【００１１】
１つの例において、第１メモリ１１は、第１変数群{ｘ}を保持する。１つの例において、第２メモリ１２は、第２変数群{ｙ}を保持する。１つの例において、第３メモリ１３は、第１パラメータ群｛Ｊ｝を保持する。
【００１２】
第１メモリ１１は、例えば、Ｘｍｅｍメモリである。第２メモリ１２は、例えば、Ｙｍｅｍメモリである。第３メモリ１３は、例えば、Ｊｍｅｍメモリである。
【００１３】
第１演算モジュール２１は、例えば、ＦＸＦＹモジュールＦＸＦＹＭである。第２演算モジュール２２は、例えば、ＪＸモジュールＪＸＭである。
【００１４】
１つの例において、計算装置１２０は、例えば、以下の演算を効率的に実施できる。例えば、第１変数群{ｘ}は、Ｎ個（Ｎは２以上の整数）のｉ番目（ｉは１以上Ｎ以下の整数）の第１変数ｘｉを含む。第２変数群{ｙ}は、Ｎ個のｉ番目（ｉは１以上Ｎ以下の整数）の第２変数ｙｉを含む。第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ個の第１パラメータＪｌ，ｍ（ｌは１以上Ｎ以下の整数であり、ｍは１以上Ｎ以下の整数）を含む。例えば、第１演算モジュール２１は、第１変数更新及び第１サブ更新を実施する。例えば、第２演算モジュール２２は、第２サブ更新を実施する。第１変数更新は、ｉ番目の第１変数ｘｉをｉ番目の第２変数ｙｉに基づいて更新することを含む。第１サブ更新は、ｉ番目の第２変数ｙｉをｉ番目の第１変数ｘｉに基づいて更新することを含む。第２サブ更新は、ｉ番目の第２変数ｙｉを第１パラメータ群｛Ｊ｝の少なくとも一部及び第１変数群｛ｘ｝の少なくとも一部に基づいて更新することを含む。
【００１５】
実施形態に係る計算装置１２０によれば、例えば、最適化問題を高速に計算できる。
【００１６】
計算装置１２０は、例えば、ＦＰＧＡ（Field programmable gate array)、ゲートアレイ、または、特定用途向け集積回路（ＡＳＩＣ）を含んでも良い。計算装置１２０は、例えば、単一チップ構造を有しても良い。
【００１７】
Ｘｍｅｍメモリ、Ｙｍｅｍメモリ及びＪｍｅｍメモリのそれぞれは、例えば、オンチップメモリである。オンチップメモリのそれぞれは、例えば、少なくとも「1write，1readポート」を含む。
【００１８】
計算装置１２０は、Ｈｍｅｍメモリ（図８（ａ）〜図８（ｃ）などを参照）を含んでも良い。Ｈｍｅｍメモリは、例えば、第２パラメータ群{ｈ}を保持する。Ｈｍｅｍメモリは、オンチップメモリである。このオンチップメモリは、例えば、「1write，1readポート」を含む。第２パラメータ群{ｈ}が設けられない場合は、Ｈｍｅｍメモリは省略されても良い。
【００１９】
計算装置１２０は、例えば、同期式回路である。この同期式回路は、例えば、循環型データパス構造「Recurrent data path structure」を含む。
【００２０】
計算装置１２０においては、第１変数群{ｘ}及び第２変数群{ｙ}のそれぞれの初期値、及び、第１パラメータ群{Ｊ}が、保持部１０に保持される。必要に応じて、保持部１０は、第２パラメータ群{ｈ}を保持しても良い。計算装置１２０は、所望のクロックサイクル数だけ駆動される。例えば、第１変数ｘｉ及び第２変数ｙｉのそれぞれの時間発展が計算される。
【００２１】
計算装置１２０は、例えば、インターフェース回路７１（図２０参照）を含む。インターフェース回路７１は、例えば、メモリインターフェース、バスインターフェース及びシリアルリンクの少なくともいずれかを含む。メモリインターフェースは、例えば「ＤＤＲ４」及び「ＨＢＭ２」の少なくともいずれかを含む。バスインターフェースは、例えば、「ＰＣＩｅ」などを含む。
【００２２】
１つの例において、計算装置１２０は、インターフェース回路７１を経由して、例えば、第１変数群{ｘ}及び第２変数群{ｙ}のそれぞれの初期値、及び、第１パラメータ群{Ｊ}を受け取る。受け取ったこれらの値は、例えば、保持部１０に保持される。１つの例において、計算装置１２０は、初期値生成回路７２（図２０参照）を含んでも良い。初期値生成回路７２は、例えば、乱数生成器を含む。この場合、初期値生成回路７２において、第１変数群{ｘ}及び第２変数群{ｙ}のそれぞれの初期値が生成される。生成された値が、保持部１０に保持される。
計算装置１２０は、第１変数群{ｘ}およびそれから計算される値を、インターフェース回路７１から出力することができる。
【００２３】
図１に示すように、この例では、第２演算モジュール２１は、ＪＸ関数回路ＪＸＦ及びＪＸ更新回路ＪＸＵを含む。第１メモリ１１の出力及び第３メモリ１３の出力は、ＪＸ関数回路ＪＸＦに入力される。ＪＸ関数回路ＪＸＦの出力及び第２メモリ１２の出力は、ＪＸ更新回路ＪＸＵに入力される。ＪＸ更新回路ＪＸＵの出力は、第１演算モジュール２１に入力される。
【００２４】
第２演算モジュール２２の出力は、ＪＸ更新回路ＪＸＵの出力に対応する。このように、第２演算モジュール２２の出力は、ＪＸ更新回路ＪＸＵの出力を含む。
【００２５】
図１に示すように、この例では、第１演算モジュール２１は、１または複数の回路セット２１Ａを含む。この例では、複数の回路セット２１Ａが設けられている。この例では、複数の回路セット２１Ａの数は、２である。後述するように、数は、１でも良く３以上でも良い。
【００２６】
１つの回路セット２１Ａは、第１演算回路２１ａ及び第２演算回路２１ｂを含む。第１演算回路２１ａは、ＦＸ関数回路ＦＸＦ及びＦＸ更新回路ＦＸＵを含む。第２演算回路２１ｂは、ＦＹ関数回路ＦＹＦ及びＦＹ更新回路ＦＹＵを含む。
【００２７】
ＦＸ関数回路ＦＸＦの出力は、ＦＸ更新回路ＦＸＵに入力される。ＦＸ更新回路ＦＸＵの出力は、ＦＹ関数回路ＦＹＦに入力される。ＦＹ関数回路ＦＹＦの出力は、ＦＹ更新回路ＦＹＵに入力される。複数の回路セット２１Ａは、例えば、直列に接続される。
【００２８】
複数の回路セット２１Ａが設けられる場合、複数の回路セット２１Ａの別の１つ（２段目）は、別の第１演算回路２１ａ及び別の第２演算回路２１ｂを含む。別の第１演算回路２１ａは、別のＦＸ関数回路ＦＸＦ、及び、別のＦＸ更新回路ＦＸＵを含む。別の第２演算回路２１ｂは、別のＦＹ関数回路ＦＹＦ、及び、別のＦＹ更新回路ＦＹＵを含む。別のＦＸ関数回路ＦＸＦの出力は、別のＦＸ更新回路ＦＸＵに入力される。別のＦＸ更新回路ＦＸＵの出力は、別のＦＹ関数回路ＦＹＦに入力される。別のＦＹ関数回路ＦＹＦの出力は、別のＦＹ更新回路ＦＹＵに入力される。
【００２９】
上記のＦＸ更新回路ＦＸＵ（１段目）の出力は、上記の別のＦＸ更新回路ＦＸＵ（２段目）に入力される。上記のＦＹ更新回路ＦＹＵ（１段目）の出力は、上記の別のＦＹ更新回路ＦＹＵ（２段目）に入力される。
【００３０】
第２演算モジュール２２の出力は、上記のＦＸ更新回路ＦＸＵ（１段目）に入力される。第１メモリ１１の出力は、上記のＦＸ関数回路ＦＸＦ（１段目）、及び、上記のＦＹ更新回路ＦＹＵ（１段目）に入力される。
【００３１】
このような第１演算モジュール２１により、例えば、上記の第１変数更新及び第２変数更新が効率的に実施できる。例えば、高速の更新ができる。第１演算モジュール２１に、第１メモリ１１からｘの値が入力され、第２演算モジュール２２からｙの値が入力される。第１演算モジュール２１において、ｘ及びｙの更新が行われる。第１演算モジュール２１から、更新後のｘ及びｙの値が出力される。
【００３２】
図１に示すように、第１演算モジュール２１の出力の一部は、第１メモリ１１に入力される。第１演算モジュール２１の出力の別の一部は、第２メモリ１２に入力される。これにより、演算（更新）の繰り返しが効率的に実施できる。
【００３３】
ＪＸモジュールＪＸＭにおける、第２変数群{ｙ}の１回の更新における積和演算などの数は、Ｎ２に依存する。一方、ＦＸＦＹモジュールＦＸＦＹＭにおける、第１変数群{ｘ}及び第２変数群{ｙ}の１回の更新における積和演算の数は、Ｎに依存する。
【００３４】
実施形態において、ＪＸモジュールＪＸＭには、主に、空間並列化手法が適応されても良い。例えば、ＪＸモジュールＪＸＭは、複数の乗算器を含む。これにより、ＪＸモジュールＪＸＭは、Ｊの要素とＸの要素との２以上の積を同じクロックサイクルで行うことができる。ＪＸ計算を行うクロックサイクル数を、減少できる。
【００３５】
一方、ＦＸＦＹモジュールＦＸＦＹＭには、主に、時間並列化手法(例えば、パイプライン並列化)が適応されても良い。例えば、ＦＸＦＹモジュールＦＸＦＹＭに、上記の複数の回路セット２１Ａが設けられ、それらが、直列に接続される。これにより、計算が高速になる。
【００３６】
実施形態において、例えば、ＪＸモジュールＪＸＭの動作、及び、ＦＸＦＹモジュールＦＸＦＹＭの動作は、例えば、時間的にオーバーラップして実施されても良い。例えば、ＪＸモジュールＪＸＭの出力がＦＸＦＹモジュールＦＸＦＹＭに接続され、ＪＸ演算の出力が、順次、ＦＸＦＹモジュールＦＸＦＹＭ送られ、演算が行われる。ＪＸ演算の少なくとも一部と、ＦＸＦＹ演算の少なくとも一部が並行的に実施される。これにより、計算がさらに高速になる。
【００３７】
図２（ａ）、図２（ｂ）、図３（ａ）及び図３（ｂ）は、第１実施形態に係る計算装置を示す模式図である。  
図２（ｂ）は、図２（ａ）に示す例のＪＸ関数回路ＪＸＦで行われる演算を例示している。図３（ｂ）は、図３（ａ）に示す例のＪＸ関数回路ＪＸＦで行われる演算を例示している。
【００３８】
図３（ｂ）に示す例においては、ＪＸ関数回路ＪＸＦとして、ＪＸＦ１回路と、ＪＦＸ２回路が設けられる。ＪＦＸ２は、dt*cと、入力と、の乗算が行われる。例えば、ＪＸモジュールＪＸＭ内の積和演算時に、オーバーフローが発生する場合がある。例えば、dt*cは、１以下の数に設定できる。例えば、xi’=dt*c*xiとした後で、積和演算を行うことで、オーバーフローを回避できる。
【００３９】
図２（ａ）、図２（ｂ）、図３（ａ）及び図３（ｂ）に示す計算装置においては、第１メモリ１１は、第１メモリ部分１１ａと、第２メモリ部分１１ｂと、を含む。例えば、第１メモリ部分１１ａが読み出し動作を実施している時に、第２メモリ部分１１ｂが書き込み動作を実施できる。第２メモリ部分１１ｂが読み出し動作を実施している時に、第１メモリ部分１１ａが書き込み動作を実施できる。
【００４０】
このような動作により、更新が効率的に実施される。例えば、偶数番目の更新と奇数番目の更新とが交互に行われる。交互に行われる更新のそれぞれで、第１メモリ部分１１ａ及び第２メモリ部分１１ｂが使い分けられる。例えば、第１メモリ１１（例えばＸｍｅｍメモリ）は、例えば、「double-buffer構造」または「Ping-Pong buffer構造」を有する。
【００４１】
後述するように、第２演算モジュール２２（例えば、ＪＸモジュールＪＸＭ）は、例えば、Ｎ行×Ｎ列の積和演算を、ブロック分割して、実施する。ブロック分割において、行並列度パラメータ「Ｐｒ」及び列並列度パラメータ「Ｐｃ」が導入される。「Ｐｒ」は、行列Ｊの行の並列度に対応する。「Ｐｃ」は、行列Ｊの列の並列度に対応する。例えば、ＪＸモジュールにおいて、これらのパラメータ（並列度）が設定される。
【００４２】
図２（ａ）に示す例においては、第１メモリ１１は、Ｘｂｕｆ回路を含む。Ｘｂｕｆ回路は、例えば、ベクトルＸの少なくとも一部を保持する。Ｘｂｕｆ回路は、例えば、Ｐｒ個のｘデータを保持する。
【００４３】
図３（ａ）に示す例においては、第１メモリ１１は、Ｘメモリ部分を含む。Ｘメモリ部分は、Ｎ個のｘデータを保持する。
【００４４】
第２演算モジュール２２（ＪＸモジュールＪＸＭ）は、例えば、複数のＭＡＣ（multiply and accumulation）演算モジュール（積和アキュムレーション演算モジュール）と、Ａｂｕｆ回路（バッファ回路２４）と、を含む。
【００４５】
以下、第２演算モジュール２２（ＪＸモジュールＪＸＭ）の例について説明する。  
図４〜図６、図７（ａ）〜図７（ｃ）、図８（ａ）〜図８（ｃ）、図９（ａ）、図９（ｂ）、図１０、図１１（ａ）、図１１（ｂ）、図１２（ａ）及び図１２（ｂ）は、第１実施形態に係る計算装置を示す模式図である。  
図１３及び図１４は、第１実施形態に係る計算装置における動作を例示する模式図である。  
図１３及び図１４は、図２（ａ）及び図３（ａ）に示す例におけるタイムチャートに対応する。
【００４６】
図４及ぶ図５は、ＪＸモジュールＪＸＭに含まれるＪＸ関数回路ＪＸＦを例示している。図４に示すように、ＪＸモジュールＪＸＭは、Ｐｒ個のＭＡＣ演算モジュール（演算モジュールＭＡＣ０〜ＭＡＣＰｒ−１）を含む。ＭＡＣ演算モジュールの１つは、Ｐｃ個の乗算器を含む。１つのサイクルで、Ｐｃ回の乗算を実施する。ＪＸモジュールＪＸＭは、１つのＪＢｌｏｃｋ（後述）と、１つのＸＢｌｏｃｋ（後述）と、の内積を１つのサイクルで実施する。この内積は、Ｐｒ×Ｐｃ回の乗算に対応する。
【００４７】
既に説明したように、第２演算モジュール２２（例えば、ＪＸモジュールＪＸＭ）は、例えば、Ｎ行×Ｎ列の積和演算を、ブロック分割して、実施する。
【００４８】
図５に示すように、Ｎ行×Ｎ列の行列Ｊが、行方向において、Ｎｒ個（Ｎｒ＝Ｎ／Ｐｒ）に分割される。行列Ｊが、列方向において、Ｎｃ個（Ｎｃ＝Ｎ／Ｐｃ）に分割される。複数のブロックの１つは、Ｐｒ行及びＰｃ列を含む。複数の分割ブロックのそれぞれを、ＪＢｌｏｃｋｉｊ（ｉは０以上（Ｎｒ−１）以下の整数。ｊは、０以上（Ｎｃ−１）以下の整数）で参照する。「Ｎ×１のＸ行列」は、行方向において、Ｎｃ個に分割される。複数のブロックの１つは、Ｐｃ行を含む。Ｘ行列の複数の分割ブロックのそれぞれは、ＸＢｌｏｃｋｉ（ｉは１以上（Ｎｃ−１）以下の整数）で参照される。
【００４９】
「Ａ行列」は、Ｎ行１列の行列である。この行列は、Ｊ行列とＸ行列との行列積の結果により得られる。「Ｎ×１のＡ行列」は、行方向において、Ｎｒ個に分割される。複数のブロックの１つは、Ｐｒ行を含む。「Ａ行列」の複数の分割ブロックのそれぞれは、ＡＢｌｏｃｋｉ（ｉは１以上（Ｎｒ−１）以下の整数）で参照される。
【００５０】
例えば、図５に示すように、第１メモリ１１（Ｘｍｅｍメモリ）は、Ｐｃ個の部分（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）を含む。第３メモリ１３（Ｊｍｅｍメモリ）は、Ｐｃ個の部分（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）を含む。
【００５１】
図１３に示すように、ＪＸモジュールＪＸＭにおいて、「０ to Ｎｃ−１」のサイクル（第０phase）の期間内において、サイクル毎に、（０，０），（０，１），，，（０，Ｎｃ−１）のＪＢｌｏｃｋと、（０），（１），，，（Ｎｃ−１）のＸＢｌｏｃｋと、が順次入力される。Ｐｒ個のＭＡＣ演算モジュールは、第０phaseの最終サイクルの後に、（０）のＡＢｌｏｃｋのデータを１つのサイクルで、並列出力する。（０）のＡＢｌｏｃｋのデータは、「回路ＡＢｕｆ」に保持される（図４参照）。Ａｂｕｆ回路は、次の第１phaseの期間において、（０）のＡＢｌｏｃｋを保持し、ＡＢｌｏｃｋの要素をシーケンシャルに出力することができる。その後、「Ｎｃ to ２Ｎｃ−１」のサイクル（第１phase）の期間内において、次のブロック列に相当する（１，０），（１，１），，，（１，Ｎｃ−１）のＪＢｌｏｃｋと、（０）、（１），，，（Ｎｃ−１）のＸＢｌｏｃｋと、が順次入力される。Ｐｒ個のＭＡＣ演算モジュールは、第１phaseの最終サイクルの後に、（１）の「ＡＢｌｏｃｋ」のデータを１つのサイクルで並列出力する。（１）の「ＡＢｌｏｃｋ」のデータは、Ａｂｕｆ回路に保持される。
【００５２】
例えば、ＪＸモジュールＪＸＭに、Ｐｃ個のｘデータと、Ｐｃ×Ｐｒ個のｊデータと、が、サイクル毎に供給される。Ｐｃ個のｘデータは、第１変数群{ｘ}に含まれる。ｊデータは、第１パラメータ群{ｊ}に含まれる。
【００５３】
既に説明したように、Ｘｍｅｍメモリは、Ｐｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）に分割される（図５参照）。これにより、１つのサイクルにおけるＰｃ回の「read」が可能になる。Ｐｃ個のメモリブロックのそれぞれのワード長（ｗｉｄｔｈ）は、例えば、ｘデータのデータビット幅以上である。Ｐｃ個のメモリブロックのそれぞれのワード数（ｄｅｐｔｈ）は、「Ｎｃ」以上である。Ｐｃ個のメモリブロックのそれぞれは、「1write, 1readポート」を含む。
【００５４】
Ｐｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）のそれぞれは、１つの物理メモリブロックを含んでも良い。Ｐｃ個のメモリブロックのそれぞれは、複数の物理メモリブロックを含んでも良い。複数の物理メモリブロックは、互いに論理的に組み合わせられる。
【００５５】
Ｐｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）のそれぞれに、対応するデータが保持される。例えば、メモリブロックＸｍｅｍ０には、ＸＢｌｏｃｋの０行目のデータが保持される。ＸＢｌｏｃｋの０行目のデータは、例えば、ＸＢｌｏｃｋ（０）の０行列目のデータ「x０」、及び、ＸＢｌｏｃｋ（１）の０行列目のデータ「ｘＰｃ」を含む。例えば、メモリブロックＸｍｅｍ１には、ＸＢｌｏｃｋの１行目のデータが保持される。ＸＢｌｏｃｋの１行目のデータは、例えば、ＸＢｌｏｃｋ（０）の１行列目のデータ「x１」、及び、ＸＢｌｏｃｋ（１）の１行列目のデータ「ｘＰｃ＋１」を含む。
【００５６】
Ｐｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）のそれぞれへの「readアクセスパターン」は、シーケンシャルアクセスである。シーケンシャルアクセスにおいては、「read addr」が、０から（Ｎｃ−１）まで、１つずつインクリメントされる。これより、例えば、複雑なアドレス演算が不要になる。
【００５７】
既に説明したように、Ｊｍｅｍメモリは、Ｐｃ個のメモリブロック（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）に分割される（図５参照）。１つのサイクルにおいて、Ｐｃ×Ｐｒ個のＪデータが供給できる。Ｐｃ個のメモリブロックのそれぞれのワード長（ｗｉｄｔｈ）は、Ｊデータパケット(図４参照)に相当するデータ幅以上とする。Ｊデータパケットは、Ｐｒ個のＪデータを含む。例えば、Ｊデータが１ビットの場合、Ｊデータパケットは、Ｐｒビットとなる。例えば、Ｊデータが３２ビットの場合、Ｊデータパケットは、Ｐｒ×３２ビットとなる。Ｐｃ個のメモリブロックのそれぞれは、１つのサイクルにおいて、１つのＪデータパケットの「read」を実施できる。Ｐｃ個のメモリブロックのそれぞれのワード数（ｄｅｐｔｈ）は、Ｎｃ×Ｎｒである。
【００５８】
Ｐｃ個のメモリブロック（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）のそれぞれに、対応するデータが保持される。例えば、メモリブロックＪｍｅｍ０には、ＪＢｌｏｃｋの０列目のデータがＪデータパケットとして、保持される。例えば、ＪＢｌｏｃｋ（０，０）の０列目のデータ「ｊ０，０〜ｊＰｒ−１，０」がＪデータパケット（０）として保持される。例えば、ＪＢｌｏｃｋ（０，１）の０列目のデータ「ｊ０，Pｃ〜ｊＰｒ−１，Pc」が、Ｊデータパケット（１）として保持される。例えば、メモリブロックＪｍｅｍ１には、ＪＢｌｏｃｋの１列目のデータがＪデータパケットとして保持される。例えば、ＪＢｌｏｃｋ（０，０）の1列目のデータ「ｊ０，１〜ｊＰｒ−１，１」が、Ｊデータパケット（０）として保持される。例えば、ＪＢｌｏｃｋ（０，１）の１列目のデータ「ｊ０，Pｃ＋１〜ｊＰｒ−１，Pｃ＋１」がＪデータパケット（１）として、保持される。
【００５９】
Ｐｃ個のメモリブロック（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）のそれぞれへの「readアクセスパターン」は、シーケンシャルアクセスである。シーケンシャルアクセスにおいては、「read addr」が０からＮｒＮｃ−１まで、１ずつインクリメントされる。これより、複雑なアドレス演算が不要になる。
【００６０】
図４は、ＪＸモジュールＪＸＭ、Ｘｍｅｍメモリ、Ｊｍｅｍメモリ及びＡｂｕｆ回路についての接続配線の例を示している。
【００６１】
Ｘｍｅｍメモリに含まれるＰｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１：図５参照）の１つは、Ｐｒ個のＭＡＣ演算モジュール（ＭＡＣ演算モジュールＭＡＣ０〜ＭＡＣＰｒ−１）と、「ブロードキャストワイヤ」で接続される。例えば、メモリブロックＸｍｅｍ０から読み出されたｘ０データは、Ｐｒ個のＭＡＣ演算モジュールの全てに供給される。
【００６２】
一方、Ｊｍｅｍメモリに含まれるＰｃ個のメモリブロック（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１：図５参照）の１つは、「point-to-pointワイヤ」で、Ｐｒ個のＭＡＣ演算モジュール（ＭＡＣ演算モジュールＭＡＣ０〜ＭＡＣＰｒ−１）と接続される。例えば、メモリブロックＪｍｅｍ０から読み出されたＪデータパケット（０）は、「wire connectivity」により分解される。Ｊデータパケット（０）は、Ｊ０，０〜ＪＰｒ−１，０を含む。例えば、Ｊ０，０データは、ＭＡＣ演算モジュールＭＡＣ０に転送される。例えば、Ｊ１，０データは、ＭＡＣ演算モジュールＭＡＣ１に転送される。例えば、ＪＰｒ−１，０データは、ＭＡＣ演算モジュールＭＡＣＰｒ−１に転送される。
【００６３】
このように、計算装置１２０は、複数の第１配線１１ｂｃ、及び、複数の第２配線１３ｐｃをさらに含んでも良い（図４及び図５参照）。例えば、第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ（Ｎは２以上の整数）の行列を含む。第２演算モジュール２２（ＪＸモジュールＪＸＭ）において、行並列度パラメータ「Ｐｒ」及び列並列度パラメータ「Ｐｃ」が設定される。
【００６４】
第２演算モジュール２２（ＪＸモジュールＪＸＭ）は、Ｐｒ個の積和モジュール２２ｃを含む（図４及び図５参照）。「Ｐｒ」は、２以上でＮ以下の整数であり、Ｎの約数である。Ｐｒ個の積和モジュール２２ｃは、Ｐｒ個のＭＡＣ演算モジュール（ＭＡＣ演算モジュールＭＡＣ０〜ＭＡＣＰｒ−１）にそれぞれ対応する。例えば、Ｐｒ個の積和モジュール２２ｃの１つは、Ｐｃ個（Ｐｃは２以上Ｎ以下の整数であり、Ｎの約数）の乗算器（後述）を含む。
【００６５】
第１メモリ１１（Ｘｍｅｍメモリ）は、第１メモリ１１がＰｃ個に分割されたＰｃ個の第１メモリブロック１１ｄ（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）を含む。第３メモリ１３（Ｊｍｅｍメモリ）は、第３メモリ１３がＰｃ個に分割されたＰｃ個の第３メモリブロック１３ｄ（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）を含む。
【００６６】
図４及び図５に示すように、複数の第１配線１１ｂｃの１つは、Ｐｃ個の第１メモリブロック１１ｄの１つと、Ｐｒ個の積和モジュール２２ｃの全てと、を接続する。複数の第１配線１１ｂｃの別の１つは、Ｐｃ個の第１メモリブロック１１ｄの別の１つと、Ｐｒ個の積和モジュール２２ｃの全てと、を接続する。複数の第１配線１１ｂｃのさらに別の１つは、Ｐｃ個の第１メモリブロック１１ｄの別の１つと、Ｐｒ個の積和モジュール２２ｃの全てと、を接続する。例えば、「ブロードキャストワイヤ」による接続が行われる。
【００６７】
一方、複数の第２配線１３ｐｃの１つは、Ｐｃ個の第３メモリブロック１３ｄの１つと、Ｐｒ個の積和モジュール２２ｃの１つと、を接続する。例えば、「point-to-pointワイヤ」による接続が行われる。
【００６８】
図６は、ＭＡＣ演算モジュールの例を示している。  
図６に示すように、１つの積和モジュール２２ｃ（ＭＡＣ演算モジュール）は、Ｐｃ個の乗算器ＭＵＬ（乗算器ＭＵＬ０〜ＭＵＬＰｃ−１）を含む。さらに、「Ｐｃ対１」の加算器ツリーＡＤＤｔｒｅｅ（「add tree」）、及び、アキュムレータＡＣＣが設けられる。Ｐｃ個の乗算器ＭＵＬのそれぞれにおいて、第１変数群{ｘ}の１つ（第１変数ｘｉなど）と、第１パラメータ群{Ｊ}の１つ（第１パラメータＪｉ，ｊなど）と、の乗算が行われる。乗算の結果が、加算器ツリーＡＤＤｔｒｅｅに出力される。加算器ツリーＡＤｔｒｅｅの出力が、アキュムレータＡＣＣに供給される。アキュムレータＡＣＣから、出力Ａｏｕｔが出力される。
【００６９】
図７（ａ）〜図７（ｃ）は、乗算器ＭＵＬのいくつかの例を示す。  
図７（ａ）に示すように、１つの例において、乗算器ＭＵＬは、固定小数点乗算器または浮動小数点乗算器を含む。この構成は、例えば、「Ｘｉｎ」及び「Ｊｉｎ」の両方が、「ＩＮＴ］（符号付き固定小数点)表現、または、「Ｆｌｏａｔ」（符号付き浮動小数点)表現の時に使用される。
【００７０】
図７（ｂ）に示すように、１つの例において、乗算器ＭＵＬは、１つの乗算器ＭＵＬｃと、２つの２対１マルチプレキサ（マルチプレキサＭＵＸＡ及びＭＵＣＢ）と、を含む。この構成は、例えば、行列Ｊの要素が、−１または＋１の２値である時に使用される。このとき、−１または＋１の２値は、０または１のビットに、符号化される。図７（ｂ）に示す例の乗算器ＭＵＬは、乗算器の機能、及び、復号器の機能を有する。
【００７１】
例えば、２対１マルチプレキサ（マルチプレキサＭＵＸＡ）の制御端子に、「Ｊｉｎ」が接続される。マルチプレキサＭＵＸＡには、−１または＋１の定数が入力される。「Ｊｉｎ」の値に応じて、−１または＋１が出力される。
【００７２】
行列Ｊの対角要素は、０である。２対１マルチプレキサ（マルチプレキサＭＵＸＢ）には、乗算器ＭＵＬｃの出力及び定数０が入力される。マルチプレキサＭＵＸＢの制御端子には、制御回路４０（Control Logic：図１参照）からゼロ要素判定フラグ「(row==col)?」が供給される。行列Ｊの対角要素に関しては、「Ｊｉｎ」の値にかかわらず、マルチプレキサＭＵＸＢの出力端子から０が出力される。
【００７３】
行列Ｊの要素が、−１または＋１である場合、対角要素（すなわち、０）を考慮すると、行列Ｊのデータは、３値である。このため、行列Ｊのデータの記憶に、２ビットを使用することもできる。一方、図７（ｂ）に例示した構成においては、復号器付乗算器が用いられる。この場合には、行列Ｊのデータを１ビットで表現することができる。これにより、例えば、Ｊｍｅｍメモリ用のオンチップメモリの容量を小さくできる。
【００７４】
実施形態において、ハードウェアが対応できる最大の問題のサイズ（Ｎ）よりも小さい問題(Nprblm: Nprblm<N)を解きたい場合、次のように対応することができる。Ｊ行列のj0,0からjNprblm-1,Nprblm-1までに解きたい問題を設定し、row>=Nprblm、col>=Nprblmの領域には、０を設定する。
【００７５】
図７（ｂ）に示す乗算器ＭＵＬの場合は、マルチプレキサＭＵＸＢのゼロ要素判定フラグを「(row==col)|| (row>=Nprblm)||(col>=Nprblm)」とすれば良い。例えば、row>=Nprblm、col>=Nprblmの領域に相当する場合は、マルチプレキサＭＵＸＢから０が出力される。
【００７６】
図７（ｃ）に示すように、１つの例において、乗算器ＭＵＬは、１つの乗算器ＭＵＬｃと、１つのデータ型変換器（「conv」）と、を含む。図７（ｃ）に示す例の構成は、例えば、「Ｘｉｎ」のデータ型と、「Ｊｉｎ」のデータ型と、が互いに異なるときに使用される。例えば、「Ｘｉｎ」が「float(/INT32)」であり、「Ｊｉｎ」が「INT4」であるときに、「Ｊｉｎ」の入力側に、データ型変換器（「conv」）が設けられる。このデータ型変換器においては、例えば、「INT4」のデータ型が「float(/INT32)」のデータ型に変換される。例えば、固定小数点の表現の複数のデータ間の変換は、ビットシフタにより実施できる。計算精度は、ｘデータのデータ表現に依存する。一方、「Ｊｉｎ」のビット数(例えば、データ型）は、目的とする問題（解くべき問題）の性質によって決定され、必ずしも高いビット精度は必要ない。
【００７７】
図７（ｃ）に例示した構成（例えば、データ型変換器付乗算器）を用いることで、例えば、高い計算精度を維持しつつ、「Ｊデータ」のデータ型を小さくすることができる。例えば、Ｊｍｅｍメモリ用のオンチップメモリの容量を小さくすることができる。
【００７８】
このように、実施形態において、ＪＸモジュールＪＸＭ（第２演算モジュール２２）は、Ｐｒ個の積和モジュール２２ｃを含む。積和モジュール２２ｃの少なくとも１つは、復号器を含む乗算器、及び、データ型変換器を含む乗算器の少なくともいずれかを含んでも良い。
【００７９】
実施形態において、ＪＸモジュールＪＸＭは、例えば、Ｎｃサイクルにより、Ｐｒ個の「Ａデータ」を含むＡＢｌｏｃｋを計算して、出力する。この動作をＮｒ回繰り返すことで、Ｊｘモジュールは、Ｎ個（すなわち、Ｐｒ×Ｎｒ）のＡ行列を生成する。ＪＸモジュールＪＸＭを用いることで、例えば、第１パラメータ群{Ｊ}及び第１変数群{ｘ}の行列積演算を、並列度が１の場合の計算速度と比較して、Ｐｒ×Ｐｃ倍に高速化できる。並列度が１のときには、Ｐｒ＝Ｐｃ＝１である。
【００８０】
図８（ａ）〜図８（ｃ）、図９（ａ）、図９（ｂ）、図１０、図１１（ａ）、図１１（ｂ）、図１２（ａ）及び図１２（ｂ）は、ＦＸＦＹモジュールＦＸＦＹＭの例を示している。既に説明したように、ＦＸＦＹモジュールＦＸＦＹＭ（第１演算モジュール２１）は、１または複数の回路セット２１Ａを含む。
【００８１】
図８（ａ）〜図８（ｃ）において、回路セット２１Ａの数Ｍは、１である。図８（ａ）に示す例において、ＦＸ関数回路ＦＸＦには、Ｘｉｎが入力される。ＦＸ更新回路ＦＸＵには、ＦＸ関数回路ＦＸＦの出力と、Ｙｉｎと、が入力される。ＦＸ更新回路ＦＸＵは、Ｙｏｕｔを出力する。ＦＹ関数回路ＦＹＦには、Ｙｉｎが入力される。ＦＹ更新回路ＦＹＵには、ＦＹ関数回路ＦＹＦの出力と、Ｘｉｎが入力される。ＦＹ更新回路ＦＹＵは、Ｙｏｕｔを出力する。ＦＹ関数回路ＦＹＦ及びＦＸ関数回路ＦＸＦは、図８（ｂ）に示す演算を行う。図８（ａ）に示す回路は、図８（ｃ）に示す演算を行う。
【００８２】
図９（ａ）及び図９（ｂ）においては、回路セット２１Ａの数Ｍは、５である。図９（ａ）において、複数の内部ノード(x1〜x4、及び、y1〜y4)、入出力端子（Ｘｉｎ、Ｙｉｎ、Ｘｏｕｔ及びＹｏｕｔ）の関係は、図１０（ｂ）に示す状態となる。５つの回路セット２１Ａが直列（シーケンシャル）に接続される。シーケンシャル回路により、複数の更新が実施できる。
【００８３】
図１０においては、回路セット２１Ａの数Ｍは、５である。図１２において、複数の処理単位(パイプラインステージ)の間に、パイプラインレジスタ（レジスタｒｅｇ）が設けられている。例えば、ＦＸＦＹモジュールＦＸＦＹＭのスループットを向上できる。図１２の例では、１６個のパイプラインレジスタが挿入される。ＣＵＴ０〜ＣＵＴ８において、ＦＸＦＹ演算が１０のパイプラインステージに分割される。この例では、ＦＸＦＹモジュールＦＸＦＹＭは、直列に接続された１０ステージのパイプラインステージを含む。パイプライン化することによって、例えば、動作周波数を上昇できる。例えば、時間的なハードウェア利用効率を向上できる。スループットを向上できる。
【００８４】
図１１（ａ）及び図１１（ｂ）においては、回路セット２１Ａの数Ｍは、１である。図１１（ａ）に示す例において、ＦＹ関数回路ＦＹＦには、Ｙｉｎが入力される。ＦＹ更新回路ＦＹＵには、ＦＹ関数回路ＦＹＦの出力と、Ｘｉｎと、が入力される。ＦＹ更新回路ＦＹＵは、Ｘｏｕｔを出力する。ＦＸ関数回路ＦＸＦには、ＦＹ更新回路ＦＹＵの出力が入力される。ＦＸ更新回路ＦＸＵには、ＦＸ関数回路ＦＸＦの出力と、Ｙｉｎと、が入力される。ＦＸ更新回路ＦＸＵは、Ｙｏｕｔを出力する。ＦＸ関数回路ＦＸＦ及びＦＹ関数回路ＦＸＦは、例えば、図８（ｂ）に示す演算を行う。図１１（ａ）に示す回路は、図１１（ｂ）に示す演算を行う。
【００８５】
図１２（ａ）及び図１２（ｂ）においては、回路セット２１Ａの数Ｍは、５である。図１２（ａ）において、複数の内部ノード(x1〜x4、及び、y1〜y4)、入出力端子（Ｘｉｎ、Ｙｉｎ、Ｘｏｕｔ及びＹｏｕｔ）の関係は、図１２（ｂ）に示す状態となる。５つの回路セット２１Ａが直列（シーケンシャル）に接続される。シーケンシャル回路により、複数の更新が実施できる。
【００８６】
図１１（ａ）、図１１（ｂ）、図１２（ａ）及び図１２（ｂ）に示す例においても、第１演算モジュール２１は、１または複数の回路セット２１Ａを含む。回路セット２１Ａは、第１演算回路２１ａ及び第２演算回路２１ｂを含む。第１演算回路２１ａは、ＦＸ関数回路ＦＸＦ及びＦＸ更新回路ＦＸＵを含む。第２演算回路２１ｂは、ＦＹ関数回路ＦＹＦ及びＦＹ更新回路ＦＹＵを含む。ＦＹ関数回路ＦＹＦの出力は、ＦＹ更新回路ＦＹＵに入力される。ＦＹ更新回路ＦＹＵの出力は、ＦＸ関数回路ＦＵＸに入力される。ＦＸ関数回路ＦＸＦの出力は、ＦＸ更新回路ＦＸＵに入力される。
【００８７】
例えば、複数の回路セット２１Ａが設けられる場合は、以下となる。複数の回路セット２１Ａの別の１つは、別の第１演算回路２１ａ及び別の第２演算回路２１ｂを含む。別の第１演算回路２１ａは、別のＦＸ関数回路ＦＸＦ及び別のＦＸ更新回路ＦＸＵを含む。別の第２演算回路２１ｂは、別のＦＹ関数回路ＦＹＦ及び別のＦＹ更新回路ＦＹＵを含む。上記の別のＦＹ関数回路ＦＹＦの出力は、上記の別のＦＹ更新回路ＦＹＵに入力される。上記の別のＦＹ更新回路ＦＹＵの出力は、上記の別のＦＸ関数回路ＦＸＦに入力される。上記の別のＦＸ関数回路ＦＸＦの出力は、上記の別のＦＸ更新回路ＦＸＵに入力される。上記のＦＹ更新回路ＦＹＵ（１段目）の出力は、上記の別のＦＹ更新回路ＦＹＵに入力される。上記のＦＸ更新回路ＦＸＵ（１段目）の出力は、上記の別のＦＸ更新回路ＦＸＵ（１段目）に入力される。
【００８８】
第２演算モジュール２２の出力は、上記のＦＹ関数回路ＦＹＦ（１段目）、及び、上記のＦＸ更新回路ＦＸＵ（１段目）に入力される。第１メモリ１１の出力は、上記のＦＹ更新回路ＦＹＵ（１段目）に入力される。
【００８９】
図１１（ａ）、図１１（ｂ）、図１２（ａ）及び図１２（ｂ）に示す例において、例えば、図２８に例示する演算が行われる。
【００９０】
ＦＸＦＹモジュールＦＸＦＹＭは、例えば、Ｎｃサイクル内にＰｒ個のデータを演算する。これにより、ＪＸモジュールＪＸＭの動作のストールが抑制される。ＦＸＦＹモジュールＦＸＦＹＭのレイテンシを「Ｌｘｙ」とする。「Ｎｃ＞（Ｐｒ＋Ｌｘｙ）」の条件のときに、ＦＸＦＹモジュールＦＸＦＹＭの数は、１で十分である。このとき、例えば、１つのＦＸＦＹモジュールＦＸＦＹＭでＰｒ個のデータを、Ｎｃサイクルの時間内に演算することができる。「Ｎｃ＞（Ｐｒ＋Ｌｘｙ）」の条件が成り立たない場合、例えば、ＦＸＦＹを多重化する。多重化の程度は、例えば、並列度パラメータＰｘｙである。これにより、ＪＸモジュールＪＸＭの動作のストールを抑制できる。例えば、並列度パラメータＰｘｙは、「Ｎｃ＞（Ｐｒ／Ｐｘｙ＋Ｌｘｙ）」の条件を満たす最小の整数に設定される。
【００９１】
図１３に示すように、Ｘｂｕｆ回路は、１つの「phase」において、次の「phase」においてＦＸＦＹモジュールＦＸＦＹＭで用いられるデータをバッファする。次の「phase」でＦＸＦＹモジュールＦＸＦＹＭで用いられるデータは、ｘデータ（ＸＢｌｏｃｋ）である。
【００９２】
図２（ａ）に示す例において、Ｘｍｅｍメモリが「1readポート」を有する場合に、Ｘｍｅｍメモリから、Ｊｘモジュール及びＦＸＦＹモジュールＦＸＦＹＭの両方にデータを供給することが困難である。このとき、Ｘｂｕｆ回路において、ＪＸモジュールＪＸＭが動作中において、次の「phase」においてＦＸＦＹモジュールＦＸＦＹＭで用いられるデータを保持する。これにより、ＪＸモジュール及びＦＸＦＹモジュールＦＸＦＹＭの両方にデータを安定して供給できる。
【００９３】
図２（ａ）及び図３（ａ）に関して既に説明したように、Ｘｍｅｍメモリは、例えば、「double-buffer構造」または「Ping-Pong buffer構造」を有する。例えば、Ｘｍｅｍの「even」に対応する部分、及び、Ｘｍｅｍの「odd」に対応する部分のそれぞれの役割が、「read」及び「write」で、入れ替わる。
【００９４】
例えば、図１３及び図１４に示すように、第０ループにおいては、「Ｘｍｅｍｅｖｅｎ」が「read」状態であり、「Ｘｍｅｍｏｄｄ」が「write」状態である。第１ループにおいて、「Ｘｍｅｍｏｄｄ」が「read」状態であり、「Ｘｍｅｍｅｖｅｎ」が「write」状態となる。１つのループ中において、ｘ行列は、Ｎｐ回読み出される。Ｘｍｅｍｅｖｅｎ及びＸｍｅｍｏｄｄのうちの１つが「read」状態である。この１つは、この１つのループが終了するまで、ループの開始の前の時刻におけるｘデータの値を保持し続ける。
【００９５】
double buffer構造を用いることで、図１３に示すように、ＪＸモジュールＪＸＭの動作及びＦＸＦＹモジュールＦＸＦＹＭの動作をオーバーラップさせる。これにより、高速化できる。
【００９６】
１つの例において、ＪＸモジュールＪＸＭに主に空間並列化手法が適用される。ＪＸモジュールＪＸＭの速度が、Ｐｒ×Ｐｃ倍に高速化される。
【００９７】
１つの例において、Ｘｍｅｍメモリに「double-buffer構造」が適用される。例えば、第１メモリ１１に、第１メモリ部分１１ａ及び第２メモリ部分１１ｂが設けられる。例えば、ＪＸモジュールＪＸＭ及びＦＸＦＹモジュールＦＸＦＹＭをオーバーラップ動作させる。これにより、ＪＸモジュールＪＸＭ及びＦＸＦＹモジュールＦＸＦＹＭのトータル演算時間を短くできる。
【００９８】
本実施形態によれば、例えば、最適化問題を高速に計算できる計算装置を提供できる。
【００９９】
（第２実施形態）  
図１５は、第２実施形態に係る計算装置を例示する模式図である。  
図１５に示すように、本実施形態においては、ＪＸ演算及びＦＹ演算が、Ｂｌｏｃｋ０〜３の４つの部分（Ｂｌｏｃｋ）に分割されて行われる。
【０１００】
このＢｌｏｃｋは、ＡＢｌｏｃｋ及びＪＢｌｏｃｋよりも大きい。１つのＢｌｏｃｋは、複数のＡＢｌｏｃｋ及び複数のＪＢｌｏｃｋを含む。
【０１０１】
図１６は、第２実施形態に係る計算装置を例示する模式図である。  
図１６に示す例において、例えば、１つの半導体チップ内に、複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹＭが設けられる（チップ内分割）。複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹの１つは、Ｘｍｅｍと、Ｙｍｅｍと、Ｊｍｅｍと、ＪＸモジュールＪＸＭと、及び、ＦＸＦＹモジュールＦＸＦＹＭを含む。ＪＸＦＸＹ０の、Ｘｍｅｍ０、Ｙｍｅｍ０及びＪｍｅｍ０は、ＢＬＯＣＫ０に含まれる、Ｘ＿Ｂ０データ、Ｙ＿Ｂ０データ、及び、Ｊ＿Ｂ０データをそれぞれ保持する。ＪＸＦＸＹ３の、Ｘｍｅｍ３、Ｙｍｅｍ３及びＪｍｅｍ３は、ＢＬＯＣＫ３に含まれる、Ｘ＿Ｂ３データ、Ｙ＿Ｂ３データ、及び、Ｊ＿Ｂ３データをそれぞれ保持する。複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹＭが、同時並列的に、複数のＢｌｏｃｋにおける演算を行う。
【０１０２】
例えば、１つのControl Logic回路と、１つのX’memメモリ（グローバルメモリ）と、が設けられる。これらの回路及びメモリは、４つのＪＸＦＸＦＹモジュールに接続される。Control Logic回路及びX’memメモリは、４つのＪＸＦＸＦＹモジュールによって、共有される。X’memメモリの出力（read）ポートは、４つのＪＸＦＸＦＹモジュールと、ブロードキャストワイヤで接続される。X’memメモリの内部は、X’_B０〜X’_B３のブロックに分割される。例えば、X’memメモリが、種々の粒度に分割される。例えば、ＪＸＦＸＦＹ０の出力は、X’_B０に接続される。ＪＸＦＸＦＹ１の出力は、X’_B１に接続される。これにより、４つのＪＸＦＸＦＹモジュールの出力を、同時にX’memメモリに書き込むことができる。例えば、X’memメモリを分割することで、writeポートを増やすことができる。
【０１０３】
図１７は、第２実施形態に係る計算装置を例示する模式図である。  
図１７に示す例では、複数の半導体チップに、ＪＸＦＸＦＹモジュールが設けられる（マルチチップ実装）。複数の半導体チップは、相互接続配線により、互いに接続される。例えば、Ｃｈｉｐ０〜Ｃｈｉｐ３が設けられる。これらのチップのそれぞれに、第１メモリ１１（Ｘｍｅｍメモリ及びＸ’ｍｅｍメモリ）、第２メモリ１２（Ｙｍｅｍメモリ）、第３メモリ１３（Ｊｍｅｍメモリ）、ＪＸモジュールＪＸＭ、ＦＸＦＹモジュールＦＸＦＹＭ、及び、Control Logic回路が設けられる。
【０１０４】
Ｃｈｉｐ０〜３とは別に、モジュール(Join&Map)が設けられても良い。モジュール(Join&Map)は、各チップからの出力を統合（join）し、再度、各チップへ配布（Map）する。
【０１０５】
Ｃｈｉｐ０は、X’mem０、Xmem０、Ymem０及びJmem０を含む。Ｃｈｉｐ０の、Xmem０、Ymem０及びJmem０は、BLOCK０に含まれる、X_B０データ、Y_B０データ及びJ_B０データを保持する。Ｃｈｉｐ０の、X’memは、BLOCK０〜3に含まれる、X_B０〜３データにdt*cを乗じたデータ(X’_B０〜３)を保持する。
【０１０６】
Ｃｈｉｐ０は、１ループにおいて、BLOCK０のXデータ（X_B０）、及び、Yデータ（Y_B０）の更新を行い、その結果を、Ｃｈｉｐ０の内部のXmem０及びYmem０に書き戻す。また、Ｃｈｉｐ０は、更新後のX_B０にdt*cを乗じたデータX’_BOをX’outbufにバッファリングした後に、チップ外に出力する。
【０１０７】
Ｃｈｉｐ３は、１ループにおいて、BLOCK３のXデータ（X_B３）及びYデータ（Y_B３）の更新を行い、その結果を、Ｃｈｉｐ３の内部のXmem３及びYmem３に書き戻す。Ｃｈｉｐ３は、更新後のX_B３にdt*cを乗じたデータX’_B3を、X’outbufにバッファリングした後に、チップ外に出力する。
【０１０８】
Join&Mapは、各チップから出力された、X’_B０、X’_B１、X’_B０３、及び、X’_B０３を統合し、それらを全チップにブロードキャストする。各チップは、Join&Mapから配布されたX’データを受け取り、X’memに格納する。
【０１０９】
図１８（ａ）及び図１８（ｂ）は、第２実施形態に係る計算装置を例示する模式図である。  
これらの図は、複数のチップの相互接続配線による接続に関するいくつかの例を示している。相互接続配線には、ＢＵＳ接続及びクロスバが含まれる。
【０１１０】
図１８（ａ）に示すように、複数のチップ（回路部６０：第１〜第４回路部６１〜６４）はＢＵＳ接続６８ｂにより接続されても良い。図１８（ａ）に示す例の場合、複数の回路部６０は、「ＨＯＳＴ」（例えば制御回路４０）と通信しても良い。例えば、「ＨＯＳＴ制御」が行われる。または、複数の回路部６０は、互いに、直接通信しても良い。例えば、「ダイレクト通信」が行われても良い。「ＨＯＳＴ制御」の場合、「ＨＯＳＴ」が、「Ｊｏｉｎ」及び「Ｍａｐ」の演算を行っても良い。「ダイレクト通信」の場合は、各チップがX’Blockデータをブロードキャストし、その他のチップがそのデータを受信し、X'memに格納する．このように各チップが互いに通信することによって、Join&とMapの機能が実現される。
【０１１１】
図１８（ｂ）に示すように、複数の回路部６０は、クロスバ６８ｃにより接続されても良い。図１８（ｂ）に示す例の場合、複数の回路部６０（複数のチップ）は、複数の回路部６０どうしが相互通信するためのパケット制御機構（ルーター）を含む。複数の回路部６０の１つは、ＸＢｌｏｃｋデータを、複数の回路部６０の別の少なくとも１つに、ブロードキャストする。これにより、複数の回路部６０において、ｘデータが共有される。
【０１１２】
図１９（ａ）〜図１９（ｆ）は、実施形態に係る計算装置の動作を例示する模式図である。  
図１９（ａ）の例においては、ＪＸ演算の後で、ＦＸＦＹ演算が行われる。
【０１１３】
図１９（ｂ）の例においては、ＪＸ演算の並列演算が行われる。ＪＸ演算が高速化できる。
【０１１４】
図１９（ｃ）の例においては、ＪＸモジュールＪＸＭとＦＸＦＹモジュールＦＸＦＹＭとが、互いにオーバーラップして動作する。これにより、演算が高速化できる。
【０１１５】
図１９（ｄ）の例においては、ＪＸ演算が並列に行われる。ＪＸ演算が高速化する。
【０１１６】
図１９（ｅ）の例においては、ＦＸＦＹモジュールＦＸＦＹＭが並列化（多重化）される。さらに、ＪＸモジュールＪＸＭとＦＸＦＹモジュールＦＸＦＹＭとが、互いにオーバーラップして動作する。これにより、演算が高速化できる。
【０１１７】
図１９（ｆ）の例においては、ブロック並列演算が行われる。チップ内分割及びマルチチップ実装の少なくともいずれかが行われる。これにより、演算が高速化できる。
【０１１８】
図２０は、実施形態に係る計算装置を含む情報処理装置を例示する模式図である。  
図２０に示すように、情報処理装置２１０は、計算装置１２０を含む。この例では、情報処理装置１２０に、複数の計算装置１２０が設けられる。シリアルリンク７３は、例えば、複数の計算装置１２０を相互に接続する。
【０１１９】
計算装置１２０は、情報処理装置２１０の一部として使用される。情報処理装置の１つの例において、例えば、サーバーに、計算装置１２０を含むアクセラレータカード７５が設けられる。サーバーは、一般的なサーバーでも良い。アクセラレータカード７５は、計算装置１２０の他に、メモリ７６を含んでも良い。情報処理装置２１０は、例えば、中央処理装置（ＣＰＵ）、メインメモリ、記憶装置（ＳＤＤ）、及び、複数のアクセラレータカード７５を含む。これらは、システムバスに接続される。例えば、計算装置１２０のバスインターフェース７４がシステムバスと接続される。
【０１２０】
図２１〜図２８は、実施形態に係る計算装置の動作を例示するフローチャート図である。実施形態に係る計算装置は、例えば、これらの図に示す演算を実施できる。
【０１２１】
実施形態は、以下の構成（技術案）を含んでも良い。  
（構成１）  
第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
を備え、
前記第１メモリの出力端子は、前記第１演算モジュールの入力端子に接続され、
前記第１メモリの前記出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第２メモリの出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第３メモリの出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第２演算モジュールの出力端子は、前記第１演算モジュールの入力端子に接続される、計算装置。
（構成２）  
前記第２演算モジュールは、ＪＸ関数回路及びＪＸ更新回路を含み、
記第１メモリの前記出力端子及び前記第３メモリの前記出力端子は、前記ＪＸ関数回路の入力端子に接続され、
前記ＪＸ関数回路の出力端子及び前記第２メモリの前記出力端子は、前記ＪＸ更新回路の入力端子に接続され、
前記ＪＸ更新回路の出力端子は、前記第１演算モジュールの入力端子に接続される、構成１記載の計算装置。
（構成３）  
前記第２演算モジュールの前記出力端子は、前記ＪＸ更新回路の出力端子を含む、構成２記載の計算装置。
（構成４）  
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＸ関数回路の出力端子は、前記ＦＸ更新回路の入力端子に接続され、
前記ＦＸ更新回路の出力端子は、前記ＦＹ関数回路の入力端子に接続され、
前記ＦＹ関数回路の出力端子は、前記ＦＹ更新回路の入力端子に接続される、構成１〜３のいずれか１つに記載の計算装置。
（構成５）  
前記第１演算モジュールは、モジュール入力端子１とモジュール入力端子２とモジュール出力端子１とモジュール出力端子２を含み、
前記モジュール入力端子１は前記ＦＸ関数回路の入力端子と前記ＦＹ更新回路の入力端子とに接続され、
前記モジュール入力端子２は前記ＦＸ更新回路の入力端子に接続され、
前記モジュール出力端子１は前記ＦＹ更新回路の出力端子に接続され、
前記モジュール出力端子２は前記ＦＸ更新回路の出力端子に接続され、
構成４記載の計算装置。
（構成６）  
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＸ関数回路の出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記別のＦＸ更新回路の出力端子は、前記別のＦＹ関数回路の入力端子に接続され、
前記別のＦＹ関数回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続され、
前記ＦＸ更新回路の前記出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記別のＦＸ関数回路の入力端子と前記別のＦＹ更新回路の入力端子とに接続される、構成５記載の計算装置。
（構成７）  
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＹ関数回路の出力端子は、前記ＦＹ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記ＦＸ関数回路の入力端子に接続され、
前記ＦＸ関数回路の出力端子は、前記ＦＸ更新回路の入力端子に接続される、構成１〜３のいずれか１つに記載の計算装置。
（構成８）  
前記第１演算モジュールは、モジュール入力端子１とモジュール入力端子２とモジュール出力端子１とモジュール出力端子２を含み、
前記モジュール入力端子１は前記ＦＹ更新回路の入力端子に接続され、
前記モジュール入力端子２は前記ＦＹ関数回路の入力端子と前記ＦＸ更新回路の入力端子とに接続され、
前記モジュール出力端子１は前記ＦＹ更新回路の出力端子に接続され、
前記モジュール出力端子２は前記ＦＸ更新回路の出力端子に接続され、
構成７に記載の計算装置。
（構成９）  
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＹ関数回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続され、
前記別のＦＹ更新回路の出力端子は、前記別のＦＸ関数回路の入力端子に接続され、
前記別のＦＸ関数回路の出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＸ更新回路の前記出力端子は、前記別のＦＹ関数回路の入力端子と前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続される、構成７記載の計算装置。
（構成１０）  
前記第２演算モジュールの前記出力は、前記ＦＸ更新回路に入力され、
前記第１メモリの前記出力は、前記ＦＹ更新回路に入力される、構成４〜９のいずれか１つに記載の計算装置。
（構成１１）  
前記第１演算モジュールの出力端子の一部は、前記第１メモリの入力端子に接続され、
前記第１演算モジュールの出力端子の別の一部は、前記第２メモリの入力端子に接続される、構成１〜１０のいずれか１つに記載の計算装置。
（構成１２）  
前記第１メモリは、第１メモリ部分と、第２メモリ部分と、を含み、
前記第１メモリ部分が読み出し動作を実施している時に、前記第２メモリ部分が書き込み動作を実施し、
前記第２メモリ部分が読み出し動作を実施している時に、前記第１メモリ部分が書き込み動作を実施する、構成１〜１１のいずれか１つに記載の計算装置。
（構成１３）  
前記第１メモリは、第１変数群{ｘ}を保持し、
前記第２メモリは、第２変数群{ｙ}を保持し、
前記第３メモリは、第１パラメータ群｛Ｊ｝を保持し、
前記第１変数群{ｘ}は、Ｎ個（前記Ｎは２以上の整数）のｉ番目（ｉは１以上前記Ｎ以下の整数）の第１変数ｘｉを含み、
前記第２変数群{ｙ}は、前記Ｎ個のｉ番目（ｉは１以上前記Ｎ以下の整数）の第２変数ｙｉを含み、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ個の第１パラメータＪｌ，ｍ（前記ｌは１以上前記Ｎ以下の整数であり、前記ｍは１以上前記Ｎ以下の整数）を含み、
前記第１演算モジュールは、第１変数更新及び第１サブ更新を実施し、
前記第２演算モジュールは、第２サブ更新を実施し、
前記第１変数更新は、前記ｉ番目の前記第１変数ｘｉを前記ｉ番目の前記第２変数ｙｉに基づいて更新することを含み、
前記第１サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記ｉ番目の前記第１変数ｘｉに基づいて更新することを含み、
前記第２サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて更新することを含む、構成１〜１２記載の計算装置。
（構成１４）  
前記第１演算モジュールは複数の乗算器を備え、
前記第２サブ更新に含まれる前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて行う更新に含まれる乗算の内複数を、同一クロックにおいて実施する、構成１〜１３のいずれか１つに記載の計算装置。
（構成１５）
複数の第１配線、及び、複数の第２配線をさらに備え、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ（Ｎは２以上の整数）の行列を含み、
前記第２モジュールは、Ｐｒ個（Ｐｒは２以上前記Ｎ以下の整数であり、前記Ｎの約数）の積和モジュールＭＡＣを含み、前記Ｐｒ個の積和モジュールの１つは、Ｐｃ個（Ｐｃは２以上Ｎ以下の整数であり、前記Ｎの約数）の乗算器を含み、前記Ｐｒは、前記行列の行の並列度に対応し、前記Ｐｃは、前記行列の列の並列度に対応し、
前記第１メモリは、前記第１メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第１メモリブロックを含み、
前記第３メモリは、前記第３メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第３メモリブロックを含み、
前記複数の第１配線の１つは、前記Ｐｃ個の前記第１メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの全てと、を接続し、
前記複数の第１配線の別の１つは、前記Ｐｃ個の前記第１メモリブロックの別の１つと、前記Ｐｒ個の前記積和モジュールの別の全てと、を接続し、
前記複数の第２配線の１つは、前記Ｐｃ個の前記第３メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの１つと、を接続し、
前記複数の第２配線の別の１つは、前記Ｐｃ個の前記第３メモリブロックの前記１つと、前記Ｐｒ個の前記積和モジュールの別の１つと、を接続する、構成１〜１３のいずれか１つに記載の計算装置。
（構成１６）  
前記Ｐｒ個の前記積和モジュールの少なくとも１つは、復号器を含む乗算器、及び、データ型変換器を含む乗算器の少なくともいずれかを含む、構成１５記載の計算装置。
（構成１７）  
第１グローバルメモリと、第０モジュールと、第１モジュールと、を備え、
前記第０モジュールは、
記第０１メモリと、
第０２メモリと、
第０３メモリと、
第０１演算モジュールと、
第０２演算モジュールと、
を含み、
前記第０１メモリの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第１グローバルメモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０３メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２演算モジュールの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１演算モジュールの出力端子の一部は、前記第０１メモリの入力端子と前記第１グローバルメモリの入力端子とに接続され、
第１モジュールは、
第１１メモリと、
第１２メモリと、
第１３メモリと、
第１１演算モジュールと、
第１２演算モジュールと、
を含み、
前記第１１メモリの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１グローバルメモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１３メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２演算モジュールの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１演算モジュールの出力端子の一部は、前記第１１メモリの入力端子と前記第１グローバルメモリの入力端子とに接続される、計算装置。
（構成１８）  
第０チップと、第１チップと、相互接続配線と、を備え、
前記第０チップは、
第０１メモリと、
第０２メモリと、
第０３メモリと、
第０１演算モジュールと、
第０２演算モジュールと、
第０チップ入力端子と、
第０チップ出力端子と、
を含み、
前記第０１メモリは、第０１ローカルメモリと第０１グローバルメモリとを含み、
前記第０１ローカルメモリの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１グローバルメモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０３メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２演算モジュールの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１演算モジュールの出力端子の一部は、前記第０１ローカルメモリの入力端子  と前記第０チップ出力端子とに接続され、
前記第０チップ入力端子は、前記第０１グローバルメモリの入力端子に接続され、
前記第０チップ入力端子と前記第０チップ出力端子とは前記相互接続配線に接続され、
前記１モジュールは、
第１１メモリと、
第１２メモリと、
第１３メモリと、
第１１演算モジュールと、
第１２演算モジュールと、
第１チップ入力端子と、
第１チップ出力端子と、
を含み、
前記第１１メモリは、第１１ローカルメモリと第１１グローバルメモリとを含み、
前記第１１ローカルメモリの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１グローバルメモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１３メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２演算モジュールの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１演算モジュールの出力端子の一部は、前記第１１ローカルメモリの入力端子と前記第１チップ出力端子とに接続され、
前記第１チップ入力端子は、前記第１１グローバルメモリの入力端子に接続され、
前記第０チップ入力端子と前記第０チップ出力端子と前記第１チップ入力端子と前記第１チップ出力端子とは前記相互接続配線に接続される、計算装置。
【０１２２】
実施形態によれば、最適化問題を高速に計算できる計算装置が提供できる。
【０１２３】
以上、例を参照しつつ、本発明の実施の形態について説明した。しかし、本発明は、これらの例に限定されるものではない。例えば、計算装置に含まれるメモリ、及び演算モジュールなどの各要素の具体的な構成に関しては、当業者が公知の範囲から適宜選択することにより本発明を同様に実施し、同様の効果を得ることができる限り、本発明の範囲に包含される。
【０１２４】
各例のいずれか２つ以上の要素を技術的に可能な範囲で組み合わせたものも、本発明の要旨を包含する限り本発明の範囲に含まれる。
【０１２５】
本発明の実施の形態として上述した計算装置を基にして、当業者が適宜設計変更して実施し得る全ての計算装置も、本発明の要旨を包含する限り、本発明の範囲に属する。
【０１２６】
本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【０１２７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２８】
１０…保持部、  １１…第１メモリ、  １１ａ、１１ｂ…第１、第２メモリ部分、  １１ｂｃ…第１配線、  １１ｄ…第１メモリブロック、  １２…第２メモリ、  １３…第３メモリ、  １３ｄ…第３メモリブロック、  １３ｐｃ…第２配線、  ２０…演算部、  ２１…第１演算モジュール、  ２１Ａ…回路セット、  ２１ａ、２１ｂ…第１、第２演算回路、  ２２…第２演算モジュール、  ２２ｃ…積和モジュール、  ２４…バッファ回路、  ４０…制御回路、  ４０ｓ…制御信号、  ６０…回路部、  ６１〜６４…第１〜第４回路部、  ６８ｂ…ＢＵＳ接続、  ６８ｃ…クロスバ、  ７１…インターフェース回路、  ７２…初期値生成回路、  ７３…シリアルリンク、  ７４…バスインターフェース、  ７５…アクセラレータカード、  ７６…メモリ、  １２０…計算装置、  ２１０…情報処理装置、  ＡＣＣ…アキュムレータ、  ＡＤＤｔｒｅｅ…加算器ツリー、  Ａｏｕｔ…出力、  ＦＸＦ…ＦＸ関数回路、  ＦＸＦＸＭ……ＦＸＦＹモジュール、  ＦＸＵ…ＦＸ更新回路、  ＦＹＦ…ＦＹ関数回路、  ＦＹＵ…ＦＹ更新回路、  ＪＸＦ…ＪＸＦ関数回路、  ＪＸＭ…ＪＸモジュール、  ＪＸＵ…ＪＸ更新回路、  Ｊｍｅｍ０〜ＪｍｅｍＰｃ…メモリブロック、  Ｍ…数、  ＭＡＣ０〜ＭＡＣＰｒ…演算モジュール、  ＭＵＬ、ＭＵＬ０〜ＭＵＬＰｒ、ＭＵＬｃ…乗算器、  ＭＵＸＡ、ＭＵＸＢ…マルチプレキサ、  Ｘｍｅｍ０〜ＸｍｅｍＰｃ…メモリブロック、  ｒｅｇ…レジスタ
【図１】
2019159566.tif 000003
【図２】
2019159566.tif 000004
【図３】
2019159566.tif 000005
【図４】
2019159566.tif 000006
【図５】
2019159566.tif 000007
【図６】
2019159566.tif 000008
【図７】
2019159566.tif 000009
【図８】
2019159566.tif 000010
【図９】
2019159566.tif 000011
【図１０】
2019159566.tif 000012
【図１１】
2019159566.tif 000013
【図１２】
2019159566.tif 000014
【図１３】
2019159566.tif 000015
【図１４】
2019159566.tif 000016
【図１５】
2019159566.tif 000017
【図１６】
2019159566.tif 000018
【図１７】
2019159566.tif 000019
【図１８】
2019159566.tif 000020
【図１９】
2019159566.tif 000021
【図２０】
2019159566.tif 000022
【図２１】
2019159566.tif 000023
【図２２】
2019159566.tif 000024
【図２３】
2019159566.tif 000025
【図２４】
2019159566.tif 000026
【図２５】
2019159566.tif 000027
【図２６】
2019159566.tif 000028
【図２７】
2019159566.tif 000029
【図２８】
2019159566.tif 000030
【手続補正書】
【提出日】平成30年8月7日(2018.8.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
前記第１メモリの第１出力端子と前記第１演算モジュールの第１入力端子とを電気的に接続する第１導電線と、
前記第１メモリの第２出力端子と前記第２演算モジュールの第１入力端子とを電気的に接続する第２導電線と、
前記第２メモリの第１出力端子と前記第２演算モジュールの第２入力端子とを電気的に接続する第３導電線と、
前記第３メモリの第１出力端子と前記第２演算モジュールの第３入力端子とを電気的に接続する第４導電線と、
前記第２演算モジュールの第１出力端子と前記第１演算モジュールの第２入力端子とを電気的に接続する第５導電線と、
を備えた、計算装置。
【請求項２】
前記第２演算モジュールは、ＪＸ関数回路、ＪＸ更新回路、及び第６導電線を含み、
前記第２演算モジュールの前記第１入力端子及び前記第３入力端子は、前記ＪＸ関数回路に設けられ、
前記第２演算モジュールの前記第２入力端子は、前記ＪＸ更新回路に設けられ、
前記第６導電線は、前記ＪＸ関数回路の第１出力端子と前記ＪＸ更新回路の第１入力端子とを電気的に接続する、請求項１記載の計算装置。
【請求項３】
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記回路セットは、
前記ＦＸ関数回路の第１出力端子と前記ＦＸ更新回路の第１入力端子とを電気的に接続する第７導電線と、
前記ＦＸ更新回路の第１出力端子と前記ＦＹ関数回路の第１入力端子とを電気的に接続する第８導電線と、
前記ＦＹ関数回路の第１出力端子と前記ＦＹ更新回路の第１入力端子とを電気的に接続する第９導電線と、
を含む、請求項１または２に記載の計算装置。
【請求項４】
前記第１演算モジュールの前記第１入力端子は、前記ＦＸ関数回路及び前記ＦＹ更新回路に設けられ、
前記第１演算モジュールの前記第２入力端子は、前記ＦＸ更新回路に設けられ、
前記第１演算モジュールの第１出力端子は、前記ＦＹ更新回路に設けられ、
前記第１演算モジュールの第２出力端子は、前記ＦＸ更新回路に設けられる、請求項３記載の計算装置。
【請求項５】
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記複数の回路セットの前記別の１つは、
前記別のＦＸ関数回路の第１出力端子と前記別のＦＸ更新回路の第１入力端子とを電気的に接続する別の第７導電線と、
前記別のＦＸ更新回路の第１出力端子と前記別のＦＹ関数回路の第１入力端子とを電気的に接続する別の第８導電線と、
前記別のＦＹ関数回路の第１出力端子と前記別のＦＹ更新回路の第１入力端子とを電気的に接続する別の第９導電線と、
前記ＦＸ更新回路の前記第１出力端子と前記別のＦＸ更新回路の第２入力端子とを電気的に接続する第１０導電線と、
前記ＦＹ更新回路の第１出力端子と前記別のＦＸ関数回路の第１入力端子とを電気的に接続する第１１導電線と、
前記ＦＹ更新回路の前記第１出力端子と前記別のＦＹ更新回路の第２入力端子とを電気的に接続する第１２導電線と、
を含む、請求項３または４に記載の計算装置。
【請求項６】
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記回路セットは、
前記ＦＹ関数回路の第１出力端子と前記ＦＹ更新回路の第１入力端子とを電気的に接続する第１３導電線と、
前記ＦＹ更新回路の第１出力端子と前記ＦＸ関数回路の第１入力端子とを電気的に接続する第１４導電線と、
前記ＦＸ関数回路の第１出力端子と前記ＦＸ更新回路の第１入力端子とを電気的に接続する第１５導電線と、
を含む、請求項１または２に記載の計算装置。
【請求項７】
前記第１演算モジュールの前記第１入力端子は、前記ＦＹ更新回路に設けられ、
前記第１演算モジュールの前記第２入力端子は、前記ＦＹ関数回路及び前記ＦＸ更新回路に設けられ、
前記第１演算モジュールの第１出力端子は、前記ＦＹ更新回路に設けられ、
前記第１演算モジュールの第２出力端子は、前記ＦＸ更新回路に設けられる、請求項６記載の計算装置。
【請求項８】
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記複数の回路セットの前記別の１つは、
前記別のＦＹ関数回路の第１出力端子と前記別のＦＹ更新回路の第１入力端子とを電気的に接続する別の第１３導電線と、
前記別のＦＹ更新回路の第１出力端子と前記別のＦＸ関数回路の第１入力端子とを電気的に接続する別の第１４導電線と、
前記別のＦＸ関数回路の第１出力端子と前記別のＦＸ更新回路の第１入力端子とを電気的に接続する別の第１５導電線と、
前記ＦＸ更新回路の第１出力端子と前記別のＦＹ関数回路の第１入力端子とを電気的に接続する第１６導電線と、
前記ＦＸ更新回路の前記第１出力端子と前記別のＦＸ更新回路の第２入力端子とを電気的に接続する第１７導電線と、
前記ＦＹ更新回路の前記第１出力端子と前記別のＦＹ更新回路の第２入力端子とを電気的に接続する第１８導電線と、
を含む、請求項６または７に記載の計算装置。
【請求項９】
前記第１演算モジュールの第１出力端子と前記第１メモリの第１入力端子とを電気的に接続する第１９導電線と、
前記第１演算モジュールの第２出力端子と前記第２メモリの第１入力端子とを電気的に接続する第２０導電線と、
をさらに備えた、請求項１〜８のいずれか１つに記載の計算装置。
【請求項１０】
前記第１メモリは、第１メモリ部分と、第２メモリ部分と、を含み、
前記第１メモリ部分が読み出し動作を実施している時に、前記第２メモリ部分が書き込み動作を実施し、
前記第２メモリ部分が読み出し動作を実施している時に、前記第１メモリ部分が書き込み動作を実施する、請求項１〜９のいずれか１つに記載の計算装置。
【請求項１１】
前記第１メモリは、第１変数群{ｘ}を保持し、
前記第２メモリは、第２変数群{ｙ}を保持し、
前記第３メモリは、第１パラメータ群｛Ｊ｝を保持し、
前記第１変数群{ｘ}は、Ｎ個（前記Ｎは２以上の整数）のｉ番目（ｉは１以上前記Ｎ以下の整数）の第１変数ｘｉを含み、
前記第２変数群{ｙ}は、前記Ｎ個のｉ番目（ｉは１以上前記Ｎ以下の整数）の第２変数ｙｉを含み、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ個の第１パラメータＪｌ，ｍ（前記ｌは１以上前記Ｎ以下の整数であり、前記ｍは１以上前記Ｎ以下の整数）を含み、
前記第１演算モジュールは、第１変数更新及び第１サブ更新を実施し、
前記第２演算モジュールは、第２サブ更新を実施し、
前記第１変数更新は、前記ｉ番目の前記第１変数ｘｉを前記ｉ番目の前記第２変数ｙｉに基づいて更新することを含み、
前記第１サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記ｉ番目の前記第１変数ｘｉに基づいて更新することを含み、
前記第２サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて更新することを含む、請求項１〜１０のいずれか１つに記載の計算装置。
【請求項１２】
前記第２演算モジュールは、複数の乗算器を含み、
前記第２サブ更新に含まれる前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて行う更新に含まれる乗算の内複数を、同一クロックにおいて実施する、請求項１１記載の計算装置。
【請求項１３】
複数の第１配線、及び、複数の第２配線をさらに備え、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ（Ｎは２以上の整数）の行列を含み、
前記第２演算モジュールは、Ｐｒ個（Ｐｒは２以上前記Ｎ以下の整数であり、前記Ｎの約数）の積和モジュールを含み、前記Ｐｒ個の積和モジュールの１つは、Ｐｃ個（Ｐｃは２以上Ｎ以下の整数であり、前記Ｎの約数）の乗算器を含み、前記Ｐｒは、前記行列の行の並列度に対応し、前記Ｐｃは、前記行列の列の並列度に対応し、
前記第１メモリは、前記第１メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第１メモリブロックを含み、
前記第３メモリは、前記第３メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第３メモリブロックを含み、
前記複数の第１配線の１つは、前記Ｐｃ個の前記第１メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの全てと、を接続し、
前記複数の第１配線の別の１つは、前記Ｐｃ個の前記第１メモリブロックの別の１つと、前記Ｐｒ個の前記積和モジュールの別の全てと、を接続し、
前記複数の第２配線の１つは、前記Ｐｃ個の前記第３メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの１つと、を接続し、
前記複数の第２配線の別の１つは、前記Ｐｃ個の前記第３メモリブロックの前記１つと、前記Ｐｒ個の前記積和モジュールの別の１つと、を接続する、請求項１１または１２に記載の計算装置。
【請求項１４】
前記Ｐｒ個の前記積和モジュールの少なくとも１つは、復号器を含む乗算器、及び、データ型変換器を含む乗算器の少なくともいずれかを含む、請求項１３記載の計算装置。
【請求項１５】
第１グローバルメモリと、第１モジュールと、第２モジュールと、を備え、
前記第１モジュールは、
第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
前記第１メモリの第１出力端子と前記第１演算モジュールの第１入力端子とを電気的に接続する第１導電線と、
前記第１グローバルメモリの第１出力端子と前記第２演算モジュールの第１入力端子とを電気的に接続する第２導電線と、
前記第２メモリの第１出力端子と前記第２演算モジュールの第２入力端子とを電気的に接続する第３導電線と、
前記第３メモリの第１出力端子と前記第２演算モジュールの第３入力端子とを電気的に接続する第４導電線と、
前記第２演算モジュールの第１出力端子と前記第１演算モジュールの第２入力端子とを電気的に接続する第５導電線と、
前記第１演算モジュールの第１出力端子と前記第１メモリの第１入力端子とを電気的に接続する第１９導電線と、
前記第１演算モジュールの第２出力端子と前記第２メモリの第１入力端子とを電気的に接続する第２０導電線と、
前記第１演算モジュールの前記第１出力端子と前記第１グローバルメモリの第１入力端子とを電気的に接続する第２１導電線と、
を含み、
第２モジュールは、
別の第１メモリと、
別の第２メモリと、
別の第３メモリと、
別の第１演算モジュールと、
別の第２演算モジュールと、
前記別の第１メモリの第１出力端子と前記別の第１演算モジュールの第１入力端子とを電気的に接続する別の第１導電線と、
前記第１グローバルメモリの前記第１出力端子と前記別の第２演算モジュールの第１入力端子とを電気的に接続する別の第２導電線と、
前記別の第２メモリの第１出力端子と前記別の第２演算モジュールの第２入力端子とを電気的に接続する別の第３導電線と、
前記別の第３メモリの第１出力端子と前記別の第２演算モジュールの第３入力端子とを電気的に接続する別の第４導電線と、
前記別の第２演算モジュールの第１出力端子と前記別の第１演算モジュールの第２入力端子とを電気的に接続する別の第５導電線と、
前記別の第１演算モジュールの第１出力端子と前記別の第１メモリの第１入力端子とを電気的に接続する別の第１９導電線と、
前記別の第１演算モジュールの第２出力端子と前記別の第２メモリの第１入力端子とを電気的に接続する別の第２０導電線と、
前記別の第１演算モジュールの前記第１出力端子と前記第１グローバルメモリの第２入力端子とを電気的に接続する別の第２１導電線と、
を含む、計算装置。
【請求項１６】
第１チップと、第２チップと、相互接続配線と、を備え、
前記第１チップは、
第１メモリであって、第１ローカルメモリと第１グローバルメモリとを含む、前記第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
前記第１ローカルメモリの第１出力端子と前記第１演算モジュールの第１入力端子とを電気的に接続する第１導電線と、
前記第１グローバルメモリの第１出力端子と前記第２演算モジュールの第１入力端子とを電気的に接続する第２導電線と、
前記第２メモリの第１出力端子と前記第２演算モジュールの第２入力端子とを電気的に接続する第３導電線と、
前記第３メモリの第１出力端子と前記第２演算モジュールの第３入力端子とを電気的に接続する第４導電線と、
前記第２演算モジュールの第１出力端子と前記第１演算モジュールの第２入力端子とを電気的に接続する第５導電線と、
前記第１演算モジュールの第１出力端子と前記第１ローカルメモリの第１入力端子とを電気的に接続する第１９導電線と、
前記第１演算モジュールの第２出力端子と前記第２メモリの第１入力端子とを電気的に接続する第２０導電線と、
を含み、
前記相互接続配線は、前記第１演算モジュールの前記第１出力端子と前記第１グローバルメモリの第１入力端子とを電気的に接続し、
前記第２チップは、
別の第１メモリであって、別の第１ローカルメモリと別の第１グローバルメモリとを含む、前記別の第１メモリと、
別の第２メモリと、
別の第３メモリと、
別の第１演算モジュールと、
別の第２演算モジュールと、
前記別の第１ローカルメモリの第１出力端子と前記別の第１演算モジュールの第１入力端子とを電気的に接続する別の第１導電線と、
前記別の第１グローバルメモリの第１出力端子と前記別の第２演算モジュールの第１入力端子とを電気的に接続する別の第２導電線と、
前記別の第２メモリの第１出力端子と前記別の第２演算モジュールの第２入力端子とを電気的に接続する別の第３導電線と、
前記別の第３メモリの第１出力端子と前記別の第２演算モジュールの第３入力端子とを電気的に接続する別の第４導電線と、
前記別の第２演算モジュールの第１出力端子と前記別の第１演算モジュールの第２入力端子とを電気的に接続する別の第５導電線と、
前記別の第１演算モジュールの第１出力端子と前記別の第１ローカルメモリの第１入力端子とを電気的に接続する別の第１９導電線と、
前記別の第１演算モジュールの第２出力端子と前記別の第２メモリの第１入力端子とを電気的に接続する別の第２０導電線と、
を含み、
前記相互接続配線は、前記別の第１演算モジュールの前記第１出力端子と前記別の第１グローバルメモリの第１入力端子とを電気的に接続する、計算装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
本発明の実施形態によれば、計算装置は、第１メモリ、第２メモリ、第３メモリ、第１演算モジュール、第２演算モジュール、第１導電線、第２導電線、第３導電線、第４導電線、及び第５導電線を含む。前記第１導電線は、前記第１メモリの第１出力端子と前記第１演算モジュールの第１入力端子とを電気的に接続する。前記第２導電線は、前記第１メモリの第２出力端子と前記第２演算モジュールの第１入力端子とを電気的に接続する。前記第３導電線は、前記第２メモリの第１出力端子と前記第２演算モジュールの第２入力端子とを電気的に接続する。前記第４導電線は、前記第３メモリの第１出力端子と前記第２演算モジュールの第３入力端子とを電気的に接続する。前記第５導電線は、前記第２演算モジュールの第１出力端子と前記第１演算モジュールの第２入力端子とを電気的に接続する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
図１に示すように、この例では、第２演算モジュール２２は、ＪＸ関数回路ＪＸＦ及びＪＸ更新回路ＪＸＵを含む。第１メモリ１１の出力及び第３メモリ１３の出力は、ＪＸ関数回路ＪＸＦに入力される。ＪＸ関数回路ＪＸＦの出力及び第２メモリ１２の出力は、ＪＸ更新回路ＪＸＵに入力される。ＪＸ更新回路ＪＸＵの出力は、第１演算モジュール２１に入力される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
図３（ａ）に示す例においては、ＪＸ関数回路ＪＸＦとして、ＪＸＦ１回路と、ＪＦＸ２回路が設けられる。ＪＦＸ２は、dt*cと、入力と、の乗算が行われる。例えば、ＪＸモジュールＪＸＭ内の積和演算時に、オーバーフローが発生する場合がある。例えば、dt*cは、１以下の数に設定できる。例えば、xi’=dt*c*xiとした後で、積和演算を行うことで、オーバーフローを回避できる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
図４及び図５は、ＪＸモジュールＪＸＭに含まれるＪＸ関数回路ＪＸＦを例示している。図４に示すように、ＪＸモジュールＪＸＭは、Ｐｒ個のＭＡＣ演算モジュール（演算モジュールＭＡＣ０〜ＭＡＣＰｒ−１）を含む。ＭＡＣ演算モジュールの１つは、Ｐｃ個の乗算器を含む。１つのサイクルで、Ｐｃ回の乗算を実施する。ＪＸモジュールＪＸＭは、１つのＪＢｌｏｃｋ（後述）と、１つのＸＢｌｏｃｋ（後述）と、の内積を１つのサイクルで実施する。この内積は、Ｐｒ×Ｐｃ回の乗算に対応する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
Ｐｃ個のメモリブロック（メモリブロックＸｍｅｍ０〜ＸｍｅｍＰｃ−１）のそれぞれへの「readアクセスパターン」は、シーケンシャルアクセスである。シーケンシャルアクセスにおいては、「read addr」が、０から（Ｎｃ−１）まで、１つずつインクリメントされる。これにより、例えば、複雑なアドレス演算が不要になる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
Ｐｃ個のメモリブロック（メモリブロックＪｍｅｍ０〜ＪｍｅｍＰｃ−１）のそれぞれへの「readアクセスパターン」は、シーケンシャルアクセスである。シーケンシャルアクセスにおいては、「read addr」が０からＮｒＮｃ−１まで、１ずつインクリメントされる。これにより、複雑なアドレス演算が不要になる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
図９（ａ）及び図９（ｂ）においては、回路セット２１Ａの数Ｍは、５である。図９（ａ）において、複数の内部ノード(x1〜x4、及び、y1〜y4)、入出力端子（Ｘｉｎ、Ｙｉｎ、Ｘｏｕｔ及びＹｏｕｔ）の関係は、図９（ｂ）に示す状態となる。５つの回路セット２１Ａが直列（シーケンシャル）に接続される。シーケンシャル回路により、複数の更新が実施できる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
図１０においては、回路セット２１Ａの数Ｍは、５である。図１０において、複数の処理単位(パイプラインステージ)の間に、パイプラインレジスタ（レジスタｒｅｇ）が設けられている。例えば、ＦＸＦＹモジュールＦＸＦＹＭのスループットを向上できる。図１０の例では、１８個のパイプラインレジスタが挿入される。ＣＵＴ０〜ＣＵＴ８において、ＦＸＦＹ演算が１０のパイプラインステージに分割される。この例では、ＦＸＦＹモジュールＦＸＦＹＭは、直列に接続された１０ステージのパイプラインステージを含む。パイプライン化することによって、例えば、動作周波数を上昇できる。例えば、時間的なハードウェア利用効率を向上できる。スループットを向上できる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
図１１（ａ）及び図１１（ｂ）においては、回路セット２１Ａの数Ｍは、１である。図１１（ａ）に示す例において、ＦＹ関数回路ＦＹＦには、Ｙｉｎが入力される。ＦＹ更新回路ＦＹＵには、ＦＹ関数回路ＦＹＦの出力と、Ｘｉｎと、が入力される。ＦＹ更新回路ＦＹＵは、Ｘｏｕｔを出力する。ＦＸ関数回路ＦＸＦには、ＦＹ更新回路ＦＹＵの出力が入力される。ＦＸ更新回路ＦＸＵには、ＦＸ関数回路ＦＸＦの出力と、Ｙｉｎと、が入力される。ＦＸ更新回路ＦＸＵは、Ｙｏｕｔを出力する。ＦＸ関数回路ＦＸＦ及びＦＹ関数回路ＦＹＦは、例えば、図８（ｂ）に示す演算を行う。図１１（ａ）に示す回路は、図１１（ｂ）に示す演算を行う。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００８６
【補正方法】変更
【補正の内容】
【００８６】
図１１（ａ）、図１１（ｂ）、図１２（ａ）及び図１２（ｂ）に示す例においても、第１演算モジュール２１は、１または複数の回路セット２１Ａを含む。回路セット２１Ａは、第１演算回路２１ａ及び第２演算回路２１ｂを含む。第１演算回路２１ａは、ＦＸ関数回路ＦＸＦ及びＦＸ更新回路ＦＸＵを含む。第２演算回路２１ｂは、ＦＹ関数回路ＦＹＦ及びＦＹ更新回路ＦＹＵを含む。ＦＹ関数回路ＦＹＦの出力は、ＦＹ更新回路ＦＹＵに入力される。ＦＹ更新回路ＦＹＵの出力は、ＦＸ関数回路ＦＸＦに入力される。ＦＸ関数回路ＦＸＦの出力は、ＦＸ更新回路ＦＸＵに入力される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
図１６は、第２実施形態に係る計算装置を例示する模式図である。  
図１６に示す例において、例えば、１つの半導体チップ内に、複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹＭが設けられる（チップ内分割）。複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹＭの１つは、Ｘｍｅｍと、Ｙｍｅｍと、Ｊｍｅｍと、ＪＸモジュールＪＸＭと、及び、ＦＸＦＹモジュールＦＸＦＹＭを含む。ＪＸＦＸＹ０の、Ｘｍｅｍ０、Ｙｍｅｍ０及びＪｍｅｍ０は、ＢＬＯＣＫ０に含まれる、Ｘ＿Ｂ０データ、Ｙ＿Ｂ０データ、及び、Ｊ＿Ｂ０データをそれぞれ保持する。ＪＸＦＸＹ３の、Ｘｍｅｍ３、Ｙｍｅｍ３及びＪｍｅｍ３は、ＢＬＯＣＫ３に含まれる、Ｘ＿Ｂ３データ、Ｙ＿Ｂ３データ、及び、Ｊ＿Ｂ３データをそれぞれ保持する。複数のＪＸＦＸＦＹモジュールＪＸＦＸＦＹＭが、同時並列的に、複数のＢｌｏｃｋにおける演算を行う。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１１８
【補正方法】変更
【補正の内容】
【０１１８】
図２０は、実施形態に係る計算装置を含む情報処理装置を例示する模式図である。  
図２０に示すように、情報処理装置２１０は、計算装置１２０を含む。この例では、情報処理装置２１０に、複数の計算装置１２０が設けられる。シリアルリンク７３は、例えば、複数の計算装置１２０を相互に接続する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１２１
【補正方法】変更
【補正の内容】
【０１２１】
実施形態は、以下の構成（技術案）を含んでも良い。  
（構成１）  
第１メモリと、
第２メモリと、
第３メモリと、
第１演算モジュールと、
第２演算モジュールと、
を備え、
前記第１メモリの出力端子は、前記第１演算モジュールの入力端子に接続され、
前記第１メモリの前記出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第２メモリの出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第３メモリの出力端子は、前記第２演算モジュールの入力端子に接続され、
前記第２演算モジュールの出力端子は、前記第１演算モジュールの入力端子に接続される、計算装置。
（構成２）  
前記第２演算モジュールは、ＪＸ関数回路及びＪＸ更新回路を含み、
記第１メモリの前記出力端子及び前記第３メモリの前記出力端子は、前記ＪＸ関数回路の入力端子に接続され、
前記ＪＸ関数回路の出力端子及び前記第２メモリの前記出力端子は、前記ＪＸ更新回路の入力端子に接続され、
前記ＪＸ更新回路の出力端子は、前記第１演算モジュールの入力端子に接続される、構成１記載の計算装置。
（構成３）  
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＸ関数回路の出力端子は、前記ＦＸ更新回路の入力端子に接続され、
前記ＦＸ更新回路の出力端子は、前記ＦＹ関数回路の入力端子に接続され、
前記ＦＹ関数回路の出力端子は、前記ＦＹ更新回路の入力端子に接続される、構成１または２に記載の計算装置。
（構成４）  
前記第１演算モジュールは、モジュール入力端子１とモジュール入力端子２とモジュール出力端子１とモジュール出力端子２を含み、
前記モジュール入力端子１は前記ＦＸ関数回路の入力端子と前記ＦＹ更新回路の入力端子とに接続され、
前記モジュール入力端子２は前記ＦＸ更新回路の入力端子に接続され、
前記モジュール出力端子１は前記ＦＹ更新回路の出力端子に接続され、
前記モジュール出力端子２は前記ＦＸ更新回路の出力端子に接続され、
構成３記載の計算装置。
（構成５）  
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＸ関数回路の出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記別のＦＸ更新回路の出力端子は、前記別のＦＹ関数回路の入力端子に接続され、
前記別のＦＹ関数回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続され、
前記ＦＸ更新回路の前記出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記別のＦＸ関数回路の入力端子と前記別のＦＹ更新回路の入力端子とに接続される、構成４記載の計算装置。
（構成６）  
前記第１演算モジュールは、１または複数の回路セットを含み、
前記回路セットは、第１演算回路及び第２演算回路を含み、
前記第１演算回路は、ＦＸ関数回路及びＦＸ更新回路を含み、
前記第２演算回路は、ＦＹ関数回路及びＦＹ更新回路を含み、
前記ＦＹ関数回路の出力端子は、前記ＦＹ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記ＦＸ関数回路の入力端子に接続され、
前記ＦＸ関数回路の出力端子は、前記ＦＸ更新回路の入力端子に接続される、構成１または２に記載の計算装置。
（構成７）  
前記第１演算モジュールは、モジュール入力端子１とモジュール入力端子２とモジュール出力端子１とモジュール出力端子２を含み、
前記モジュール入力端子１は前記ＦＹ更新回路の入力端子に接続され、
前記モジュール入力端子２は前記ＦＹ関数回路の入力端子と前記ＦＸ更新回路の入力端子とに接続され、
前記モジュール出力端子１は前記ＦＹ更新回路の出力端子に接続され、
前記モジュール出力端子２は前記ＦＸ更新回路の出力端子に接続され、
構成６記載の計算装置。
（構成８）  
前記複数の回路セットが設けられ、
前記複数の回路セットの別の１つは、別の第１演算回路及び別の第２演算回路を含み、
前記別の第１演算回路は、別のＦＸ関数回路及び別のＦＸ更新回路を含み、
前記別の第２演算回路は、別のＦＹ関数回路及び別のＦＹ更新回路を含み、
前記別のＦＹ関数回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続され、
前記別のＦＹ更新回路の出力端子は、前記別のＦＸ関数回路の入力端子に接続され、
前記別のＦＸ関数回路の出力端子は、前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＸ更新回路の前記出力端子は、前記別のＦＹ関数回路の入力端子と前記別のＦＸ更新回路の入力端子に接続され、
前記ＦＹ更新回路の出力端子は、前記別のＦＹ更新回路の入力端子に接続される、構成６記載の計算装置。
（構成９）  
前記第２演算モジュールの前記出力は、前記ＦＸ更新回路に入力され、
前記第１メモリの前記出力は、前記ＦＹ更新回路に入力される、構成３〜８のいずれか１つに記載の計算装置。
（構成１０）  
前記第１演算モジュールの出力端子の一部は、前記第１メモリの入力端子に接続され、
前記第１演算モジュールの出力端子の別の一部は、前記第２メモリの入力端子に接続される、構成１〜９のいずれか１つに記載の計算装置。
（構成１１）  
前記第１メモリは、第１メモリ部分と、第２メモリ部分と、を含み、
前記第１メモリ部分が読み出し動作を実施している時に、前記第２メモリ部分が書き込み動作を実施し、
前記第２メモリ部分が読み出し動作を実施している時に、前記第１メモリ部分が書き込み動作を実施する、構成１〜１０のいずれか１つに記載の計算装置。
（構成１２）  
前記第１メモリは、第１変数群{ｘ}を保持し、
前記第２メモリは、第２変数群{ｙ}を保持し、
前記第３メモリは、第１パラメータ群｛Ｊ｝を保持し、
前記第１変数群{ｘ}は、Ｎ個（前記Ｎは２以上の整数）のｉ番目（ｉは１以上前記Ｎ以下の整数）の第１変数ｘｉを含み、
前記第２変数群{ｙ}は、前記Ｎ個のｉ番目（ｉは１以上前記Ｎ以下の整数）の第２変数ｙｉを含み、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ個の第１パラメータＪｌ，ｍ（前記ｌは１以上前記Ｎ以下の整数であり、前記ｍは１以上前記Ｎ以下の整数）を含み、
前記第１演算モジュールは、第１変数更新及び第１サブ更新を実施し、
前記第２演算モジュールは、第２サブ更新を実施し、
前記第１変数更新は、前記ｉ番目の前記第１変数ｘｉを前記ｉ番目の前記第２変数ｙｉに基づいて更新することを含み、
前記第１サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記ｉ番目の前記第１変数ｘｉに基づいて更新することを含み、
前記第２サブ更新は、前記ｉ番目の前記第２変数ｙｉを前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて更新することを含む、構成１〜１１のいずれか１つに記載の計算装置。
（構成１３）  
前記第２演算モジュールは複数の乗算器を備え、
前記第２サブ更新に含まれる前記第１パラメータ群｛Ｊ｝の少なくとも一部及び前記第１変数群｛ｘ｝の少なくとも一部に基づいて行う更新に含まれる乗算の内複数を、同一クロックにおいて実施する、構成１２記載の計算装置。
（構成１４）
複数の第１配線、及び、複数の第２配線をさらに備え、
前記第１パラメータ群｛Ｊ｝は、Ｎ×Ｎ（Ｎは２以上の整数）の行列を含み、
前記第２演算モジュールは、Ｐｒ個（Ｐｒは２以上前記Ｎ以下の整数であり、前記Ｎの約数）の積和モジュールを含み、前記Ｐｒ個の積和モジュールの１つは、Ｐｃ個（Ｐｃは２以上Ｎ以下の整数であり、前記Ｎの約数）の乗算器を含み、前記Ｐｒは、前記行列の行の並列度に対応し、前記Ｐｃは、前記行列の列の並列度に対応し、
前記第１メモリは、前記第１メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第１メモリブロックを含み、
前記第３メモリは、前記第３メモリが前記Ｐｃ個に分割された前記Ｐｃ個の第３メモリブロックを含み、
前記複数の第１配線の１つは、前記Ｐｃ個の前記第１メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの全てと、を接続し、
前記複数の第１配線の別の１つは、前記Ｐｃ個の前記第１メモリブロックの別の１つと、前記Ｐｒ個の前記積和モジュールの別の全てと、を接続し、
前記複数の第２配線の１つは、前記Ｐｃ個の前記第３メモリブロックの１つと、前記Ｐｒ個の前記積和モジュールの１つと、を接続し、
前記複数の第２配線の別の１つは、前記Ｐｃ個の前記第３メモリブロックの前記１つと、前記Ｐｒ個の前記積和モジュールの別の１つと、を接続する、構成１２または１３に記載の計算装置。
（構成１５）  
前記Ｐｒ個の前記積和モジュールの少なくとも１つは、復号器を含む乗算器、及び、データ型変換器を含む乗算器の少なくともいずれかを含む、構成１４記載の計算装置。
（構成１６）  
第１グローバルメモリと、第０モジュールと、第１モジュールと、を備え、
前記第０モジュールは、
第０１メモリと、
第０２メモリと、
第０３メモリと、
第０１演算モジュールと、
第０２演算モジュールと、
を含み、
前記第０１メモリの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第１グローバルメモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０３メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２演算モジュールの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１演算モジュールの出力端子の一部は、前記第０１メモリの入力端子と前記第１グローバルメモリの入力端子とに接続され、
第１モジュールは、
第１１メモリと、
第１２メモリと、
第１３メモリと、
第１１演算モジュールと、
第１２演算モジュールと、
を含み、
前記第１１メモリの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１グローバルメモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１３メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２演算モジュールの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１演算モジュールの出力端子の一部は、前記第１１メモリの入力端子と前記第１グローバルメモリの入力端子とに接続される、計算装置。
（構成１７）  
第０チップと、第１チップと、相互接続配線と、を備え、
前記第０チップは、
第０１メモリと、
第０２メモリと、
第０３メモリと、
第０１演算モジュールと、
第０２演算モジュールと、
第０チップ入力端子と、
第０チップ出力端子と、
を含み、
前記第０１メモリは、第０１ローカルメモリと第０１グローバルメモリとを含み、
前記第０１ローカルメモリの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１グローバルメモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０３メモリの出力端子は、前記第０２演算モジュールの入力端子に接続され、
前記第０２演算モジュールの出力端子は、前記第０１演算モジュールの入力端子に接続され、
前記第０１演算モジュールの出力端子の一部は、前記第０１ローカルメモリの入力端子  と前記第０チップ出力端子とに接続され、
前記第０チップ入力端子は、前記第０１グローバルメモリの入力端子に接続され、
前記第０チップ入力端子と前記第０チップ出力端子とは前記相互接続配線に接続され、
前記１チップは、
第１１メモリと、
第１２メモリと、
第１３メモリと、
第１１演算モジュールと、
第１２演算モジュールと、
第１チップ入力端子と、
第１チップ出力端子と、
を含み、
前記第１１メモリは、第１１ローカルメモリと第１１グローバルメモリとを含み、
前記第１１ローカルメモリの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１グローバルメモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１３メモリの出力端子は、前記第１２演算モジュールの入力端子に接続され、
前記第１２演算モジュールの出力端子は、前記第１１演算モジュールの入力端子に接続され、
前記第１１演算モジュールの出力端子の一部は、前記第１１ローカルメモリの入力端子と前記第１チップ出力端子とに接続され、
前記第１チップ入力端子は、前記第１１グローバルメモリの入力端子に接続され、
前記第０チップ入力端子と前記第０チップ出力端子と前記第１チップ入力端子と前記第１チップ出力端子とは前記相互接続配線に接続される、計算装置。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１２８
【補正方法】変更
【補正の内容】
【０１２８】
１０…保持部、  １１…第１メモリ、  １１ａ、１１ｂ…第１、第２メモリ部分、  １１ｂｃ…第１配線、  １１ｄ…第１メモリブロック、  １２…第２メモリ、  １３…第３メモリ、  １３ｄ…第３メモリブロック、  １３ｐｃ…第２配線、  ２０…演算部、  ２１…第１演算モジュール、  ２１Ａ…回路セット、  ２１ａ、２１ｂ…第１、第２演算回路、  ２２…第２演算モジュール、  ２２ｃ…積和モジュール、  ２４…バッファ回路、  ４０…制御回路、  ４０ｓ…制御信号、  ６０…回路部、  ６１〜６４…第１〜第４回路部、  ６８ｂ…ＢＵＳ接続、  ６８ｃ…クロスバ、  ７１…インターフェース回路、  ７２…初期値生成回路、  ７３…シリアルリンク、  ７４…バスインターフェース、  ７５…アクセラレータカード、  ７６…メモリ、  １２０…計算装置、  ２１０…情報処理装置、  ＡＣＣ…アキュムレータ、  ＡＤＤｔｒｅｅ…加算器ツリー、  Ａｏｕｔ…出力、  ＦＸＦ…ＦＸ関数回路、  ＦＸＦＹＭ……ＦＸＦＹモジュール、  ＦＸＵ…ＦＸ更新回路、  ＦＹＦ…ＦＹ関数回路、  ＦＹＵ…ＦＹ更新回路、  ＪＸＦ…ＪＸ関数回路、  ＪＸＭ…ＪＸモジュール、  ＪＸＵ…ＪＸ更新回路、  Ｊｍｅｍ０〜ＪｍｅｍＰｃ…メモリブロック、  Ｍ…数、  ＭＡＣ０〜ＭＡＣＰｒ…演算モジュール、  ＭＵＬ、ＭＵＬ０〜ＭＵＬＰｒ、ＭＵＬｃ…乗算器、  ＭＵＸＡ、ＭＵＸＢ…マルチプレキサ、  Ｘｍｅｍ０〜ＸｍｅｍＰｃ…メモリブロック、  ｒｅｇ…レジスタ
【手続補正１６】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2019159566.tif 000031
【手続補正１７】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2019159566.tif 000032
【手続補正１８】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2019159566.tif 000033
【手続補正１９】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2019159566.tif 000034