(57)【要約】【課題】複数のコアを備える演算処理装置の処理性能を向上させる。【解決手段】アクセスバスを共有する複数の第１コア１３が属する予め設定されたコアグループを、アクセスバスごとに備えるとともに、複数の前記コアグループの各々における１以上の第１コア１３とそれぞれ接続される第２コア１４であって、前記複数のコアグループにおいて共有される各アクセスバスを共有可能である前記第２コア１４と、第１転送要求に応じて、転送元の第１コア１３が属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コア１３から前記第２コア１４に前記情報を転送する制御を行なう第１転送制御部１２と、第２転送要求に応じて、転送先の第１コア１３が属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コア１４から前記転送先の第１コア１３に前記情報を転送する制御を行なう第２転送制御部１２と、を備える。【選択図】図１
2020204913.tif 000002
【特許請求の範囲】
【請求項１】
アクセスバスを共有する複数の第１コアが属する予め設定されたコアグループを、アクセスバスごとに備えるとともに、
複数の前記コアグループの各々における１以上の第１コアとそれぞれ接続される第２コアであって、前記複数のコアグループにおいて共有される各アクセスバスを共有可能である前記第２コアと、
前記複数のコアグループの間で情報を転送するための第１転送要求に応じて、前記情報の転送元の第１コアが属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コアから前記第２コアに前記情報を転送する制御を行なう第１制御部と、
前記複数のコアグループの間で情報を転送するための第２転送要求に応じて、前記情報の転送先の第１コアが属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コアから前記転送先の第１コアに前記情報を転送する制御を行なう第２制御部と、を備える、
演算処理装置。
【請求項２】
前記第２コアは、
前記第２転送要求に基づき、前記情報の出力ポートを判定し、判定した出力ポートに接続される、前記第２コアに接続される複数の第１コアのうちのいずれかの第１コアに、前記情報を出力する出力回路を備える、
請求項１に記載の演算処理装置。
【請求項３】
前記第２転送要求は、前記転送先の第１コアが属する前記第２コアグループの識別情報を含み、
前記出力回路は、前記識別情報に基づき、前記情報の出力ポートを判定する、
請求項２に記載の演算処理装置。
【請求項４】
前記第２コアは、
記憶回路を備え、前記記憶回路に対する書き込み及び読み出しを行なう演算回路を備え、
前記第２コアは、
前記情報を前記記憶回路に書き込むことを指示する前記第１転送要求を受信し、
前記記憶回路から前記情報を読み出すことを指示する前記第２転送要求を受信する、
請求項１〜請求項３のいずれか１項に記載の演算処理装置。
【請求項５】
前記演算回路は、前記第２転送要求に応じて前記記憶回路から前記情報を読み出した場合、読み出した前記情報を前記転送先の第１コアが備える記憶回路に書き込むことを指示するように前記第２転送要求を更新し、更新した前記第２転送要求と、読み出した前記情報とを、前記出力ポートから出力する、
請求項４に記載の演算処理装置。
【請求項６】
前記第２コアは、前記複数のコアグループの各々に属する複数の第１コアのうちのいずれかの第１コアが不良のコアである場合に、当該不良のコアに代えて、当該不良のコアが属するコアグループに属するように設定される予備コアである、
請求項１〜請求項５のいずれか１項に記載の演算処理装置。
【請求項７】
前記不良のコアの検出は、前記演算処理装置のチップ診断において行なわれ、
前記チップ診断の結果に応じて設定される、前記不良のコアの有無を示す情報に基づき、前記第１制御部による前記制御及び前記第２制御部による前記制御が行なわれる、
請求項６に記載の演算処理装置。
【請求項８】
アクセスバスを共有する複数の第１コアが属する予め設定されたコアグループを、アクセスバスごとに備える演算処理装置を備え、
前記演算処理装置は、
複数の前記コアグループの各々における１以上の第１コアとそれぞれ接続される第２コアであって、前記複数のコアグループにおいて共有される各アクセスバスを共有可能である前記第２コアと、
前記複数のコアグループの間で情報を転送するための第１転送要求に応じて、前記情報の転送元の第１コアが属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コアから前記第２コアに前記情報を転送する制御を行なう第１制御部と、
前記複数のコアグループの間で情報を転送するための第２転送要求に応じて、前記情報の転送先の第１コアが属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コアから前記転送先の第１コアに前記情報を転送する制御を行なう第２制御部と、を備える、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、及び情報処理装置に関する。
【背景技術】
【０００２】
サーバ等の情報処理装置が備える演算処理装置、例えばＣＰＵ（Central Processing Unit）等のプロセッサにおいて、複数のコア（以下、「マルチコア」又は「複数コア」と称する場合がある）を備えるマルチコア構成が採用されることがある。マルチコアを備えるプロセッサを、以下、「マルチコアプロセッサ」と表記する場合がある。
【０００３】
マルチコアプロセッサのアーキテクチャにおいては、各コア内に演算命令の実行制御部（「演算器」と称されてもよい）が設けられ、メモリ等の主記憶装置へのデータ読み出し及び書き込みと演算処理とをコアグループ単位で行なう手法が知られている。各コアグループは、複数コアの組み合わせである。
【０００４】
マルチコアプロセッサでは、搭載コア数に応じて（例えば搭載コア数が多い場合）、回路実装の都合から、アクセスバス、例えばメモリバスが複数コア間で共有されることがある。また、配線性の観点から、マルチコアプロセッサでは、コアグループ内の複数コアをリング状に接続する構成が用いられることがある。
【０００５】
上述したマルチコアプロセッサでは、コアグループを跨ぐコア間でデータ又は命令を転送する場合、転送経路は、主記憶装置を経由する経路となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１５-５０９１８３号公報
【特許文献２】特開２０１２-１９９７６７号公報
【特許文献３】特開２０１８-１６５９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数コアの予め設定された組み合わせを越えたコア間でデータ又は命令の転送が行なわれる場合、転送経路は主記憶装置を経由することになり、当該組み合わせ内のコア間における転送と比較して、データ又は命令の転送効率が低下する場合がある。
【０００８】
このように、複数コア間における転送経路が、プロセッサの処理性能のボトルネックとなる可能性がある。
【０００９】
１つの側面では、本発明は、複数のコアを備える演算処理装置の処理性能を向上させることを目的の１つとする。
【課題を解決するための手段】
【００１０】
１つの側面では、演算処理装置は、アクセスバスを共有する複数の第１コアが属する予め設定されたコアグループを、アクセスバスごとに備えてよい。また、前記演算処理装置は、第２コアと、第１転送制御部と、第２転送制御部と、を備えてよい。前記第２コアは、複数の前記コアグループの各々における１以上の第１コアとそれぞれ接続されてよい。前記第２コアは、前記複数のコアグループにおいて共有される各アクセスバスを共有可能であってよい。前記第１転送制御部は、前記複数のコアグループの間で情報を転送するための第１転送要求に応じて、前記情報の転送元の第１コアが属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コアから前記第２コアに前記情報を転送する制御を行なってよい。前記第２転送制御部は、前記複数のコアグループの間で情報を転送するための第２転送要求に応じて、前記情報の転送先の第１コアが属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コアから前記転送先の第１コアに前記情報を転送する制御を行なってよい。
【発明の効果】
【００１１】
１つの側面では、複数のコアを備える演算処理装置の処理性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係るサーバが備えるプロセッサに着目したハードウェア構成例を示すブロック図である。
【図２】プロセッサにおいて故障コアが存在しない場合における情報転送経路の比較例を示す図である。
【図３】プロセッサにおいて故障コアが存在する場合における情報転送経路の一例を示す図である。
【図４】ＰＵＴ命令による情報転送経路の比較例を示す図である。
【図５】一実施形態に係るプロセッサにおける、データ転送命令によるコアグループ間の情報転送経路の一例を示す図である。
【図６】一実施形態に係るプロセッサにおける、データ転送命令によるコアグループ間の情報転送経路の一例を示す図である。
【図７】ＰＵＴ命令のフォーマット例を示す図である。
【図８】ＰＵＴ命令のビットアサインの一例を示す図である。
【図９】一実施形態に係るコアのハードウェア構成例を示すブロック図である。
【図１０】一実施形態に係る冗長コアのハードウェア構成例を示すブロック図である。
【図１１】一実施形態に係るデータ転送制御部のハードウェア構成例を示すブロック図である。
【図１２】図５に示す情報転送経路における各構成の動作例を説明するフローチャートである。
【図１３】図５に示す情報転送経路における各構成の動作例を説明するフローチャートである。
【図１４】図５に示す情報転送経路におけるコア及び冗長コアの動作例を示す図である。
【図１５】図６に示す情報転送経路における各構成の動作例を説明するフローチャートである。
【図１６】図６に示す情報転送経路における各構成の動作例を説明するフローチャートである。
【図１７】図６に示す情報転送経路におけるコア及び冗長コアの動作例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１４】
〔１〕一実施形態
〔１−１〕サーバの構成例
図１は、一実施形態に係るサーバ１が備えるプロセッサ１０に着目したハードウェア（ＨＷ；Hardware）構成例を示すブロック図である。
【００１５】
図１に示すように、サーバ１は、情報処理装置又はコンピュータの一例であり、例示的に、プロセッサ１０及び複数のメモリ２を備えてよい。
【００１６】
プロセッサ１０は、ＣＰＵ等の演算処理装置の一例であり、例えば、複数のコア１３及び冗長コア１４を備えるマルチコアプロセッサである。プロセッサ１０は、例えば、少なくとも１つのコア１３及び１４により、メモリ２上に展開したソフトウェア（Software）を実行することで、サーバ１としての機能を実現する。
【００１７】
ソフトウェアは、メモリ２並びにコア１３及び１４の少なくとも１つを指定して、種々の演算命令を発行してよい。なお、ソフトウェアは、プロセッサ１０と通信可能に接続された図示しないホスト装置において実行され、ホスト装置からプロセッサ１０に対して種々の演算命令が発行されてもよい。ソフトウェアには、ＯＳ（Operating System）、ミドルウェア、及び、アプリケーションの少なくとも１つが含まれてよい。
【００１８】
図１に示すように、プロセッサ１０は、例示的に、複数の命令制御部１１、複数のデータ転送制御部１２、複数のコア１３及び１４、複数のスイッチ（ＳＷ；Switch）１６、並びに、複数のメモリコントローラ（ＭＣ；Memory Controller）１７を備えてよい。
【００１９】
以下の説明において、複数のメモリ２を互いに区別する場合には、図１に示すように、符号「２」に続けて符号「Ａ」〜「Ｈ」のいずれかを付加するか、或いは、符号「２」に代えて符号「＃０」〜「＃７」のいずれかを付加するものとする。同様に、以下の説明において、ブロック１１、１２及び１４〜１７のいずれかを互いに区別する場合には、符号「１１」、「１２」及び「１４」〜「１７」のいずれかに続けて符号「Ａ」〜「Ｈ」のいずれかを付加するものとする。或いは、符号「１１」、「１２」及び「１４」〜「１７」のいずれかに代えて符号「＃０」〜「＃７」並びに「＃Ｒ０」及び「＃Ｒ１」のいずれかを付加するものとする。さらに、以下の説明において、コア１３を互いに区別する場合には、符号「１３」に続けて符号「Ａ０」〜「Ｈ３」のいずれかを付加するか、符号「１３」に代えて符号「＃００」〜「＃７３」のいずれかを付加するものとする。
【００２０】
なお、一実施形態において、メモリ２及びブロック１１〜１７は、図１に例示する数に限定されるものではなく、任意の数とすることができる。
【００２１】
命令制御部１１は、プロセッサ１０における命令に応じた処理動作の実行を制御する上位コントローラの一例である。例えば、命令制御部１１Ａは、コア１３Ａ０〜１３Ｄ３並びに冗長コア１４Ａ及び１３Ｂによる、コア間のデータ転送命令や、メモリ２Ａ及び２Ｂに対する読出命令及び書込命令等を制御してよい。また、例えば、命令制御部１１Ｂは、コア１３Ｅ０〜１３Ｈ３並びに冗長コア１４Ａ及び１３Ｂによる、コア間のデータ転送命令や、メモリ２Ｃ及び２Ｄに対する読出命令及び書込命令等を制御してよい。読出命令及び書込命令は、それぞれ、「読出要求」及び「書込要求」と称されてもよい。
【００２２】
命令制御部１１は、コア１３又は１４に対する上述した命令（指示）を、アクセスバスを介して接続されたデータ転送制御部１２に発行（例えば転送）してよい。図１の例では、命令制御部１１Ａは、データ転送制御部１２Ａに対して命令を転送し、命令制御部１１Ｂは、データ転送制御部１２Ｅに対して命令を転送する。
【００２３】
データ転送制御部１２は、第１及び第２転送制御部の一例であり、命令制御部１１からの指示に応じて、コア１３間、コア１３と冗長コア１４との間、及び、ＭＣ１７と各コア１３及び１４との間のデータ又は命令の転送を制御する。以下、データ及び命令を総称して「情報」と表記する場合がある。
【００２４】
データ転送制御部１２と各コア１３及び１４、並びに、ＭＣ１７との間は、アクセスバスの一例であるメモリバスを介して接続される。図１の例示するように、データ転送制御部１２からコア１３及び１４に向かう３本のバスは、それぞれ、ライトデータ、ライト要求、及び、リード要求が伝送されるバスを示す。また、コア１４及び１３からデータ転送制御部１２に向かう１本のバスは、リードデータが伝送されるバスを示す。
【００２５】
ここで、データ転送制御部１２Ａは、アクセスバスを共有するコア１３Ａ０〜１３Ａ３の間の情報の転送を制御する。換言すれば、各データ転送制御部１２は、アクセスバスを共有する複数のコア１３が属する予め設定されたコアグループを管轄（担当）し、当該コアグループにおける情報の転送を制御する。
【００２６】
なお、プロセッサ１０において、コアグループは、アクセスバスごとに備えられてよい（設定されてよい）。コアグループにおけるアクセスバスは、図１においては、一例として、データ転送制御部１２Ａ〜コア１３Ａ３の区間であってよい。
【００２７】
以下の説明において、データ転送制御部１２と、当該データ転送制御部１２が担当するコアグループとを、データ転送制御部１２Ａ〜１２Ｈの符号の一部である「Ａ」〜「Ｈ」を用いて、「Ａグループ」〜「Ｈグループ」と表記する場合がある。
【００２８】
一例として、Ｂグループでは、データ転送制御部１２Ｂは、コア１３Ｂ０〜１３Ｂ３の間の情報の転送を制御する。また、Ｃグループでは、データ転送制御部１２Ｃは、コア１３Ｃ０〜１３Ｃ３の間の情報の転送を制御する。Ｄグループ〜Ｈグループについても同様である。
【００２９】
なお、後述するように、冗長コア１４は、不良のコア１３、例えば故障したコア１３の代わりに利用される予備コアである。このため、コアグループに故障コアが存在する場合には、冗長コア１４が、故障コアに代えて当該コアグループに属することになる。従って、冗長コア１４が属するコアグループを管轄するデータ転送制御部１２は、故障コアを除くコアグループ内の複数のコア１３及び冗長コア１４の間の情報の転送を制御する。
【００３０】
このように、プロセッサ１０では、データ転送制御部１２により、メモリ２へのデータ読み出し及び書き込み（ロード及びストア）とコア１３及び１４による演算処理とを、コアグループ単位で行なう。
【００３１】
また、図１に例示するように、データ転送制御部１２Ａ〜１２Ｄ、及び、１２Ｅ〜１２Ｈは、それぞれ、リング状に接続される。例えば、データ転送制御部１２は、命令制御部１１からの命令を、当該命令で指定されたコア１３又は１４を担当するデータ転送制御部１２まで順に転送してよい。
【００３２】
コア１３は、第１コアの一例であり、演算器（図１において「PLOC.」と表記する）１５を備える。演算器１５は、演算命令の実行制御を行なう実行制御部の一例である。
【００３３】
一実施形態では、コアグループ内において、コア１３からメモリ２へのアクセスバスが複数のコア１３間で共有され、複数のコア１３がリング状に接続される。図１の例では、Ａグループにおいて、データ転送制御部１２Ａにより制御されるコア１３Ａ０〜１３Ａ３の４個のコア１３がリング状に接続される。
【００３４】
冗長コア１４は、複数のコアグループの各々における１以上のコア１３とそれぞれ接続され（例えば隣接し）、複数のコアグループにおいて共有される各アクセスバスを共有可能である第２コアの一例である。冗長コア１４は、「コア」としての演算機能及び転送機能を有してよい。
【００３５】
例えば、冗長コア１４は、プロセッサ１０の製造段階におけるチップ診断時にコアの故障が見つかった場合に、演算能力が低下しないように故障コアの代わりに動作する、歩留まり向上用の予備コアである。一例として、冗長コア１４は、複数のコアグループの各々に属する複数のコア１３のうちのいずれかのコア１３が不良のコア１３である場合に、当該不良のコア１３に代えて、当該不良のコアが属するコアグループに属するように設定されてよい。
【００３６】
図１に示す例では、冗長コア１４Ａが予備コアとしてカバーできる範囲は、Ａグループ、Ｂグループ、Ｅグループ及びＦグループに属する、コア１３Ａ０〜１３Ａ３、１３Ｂ０〜１３Ｂ３、１３Ｅ０〜１３Ｅ３及び１３Ｆ０〜１３Ｆ３の１６コア分である。また、冗長コア１４Ｂが予備コアとしてカバーできる範囲は、Ｃグループ、Ｄグループ、Ｇグループ及びＨグループに属する、コア１３Ｃ０〜１３Ｃ３、１３Ｄ０〜１３Ｄ３、１３Ｇ０〜１３Ｇ３及び１３Ｈ０〜１３Ｈ３の１６コア分である。このような冗長コア１４の構成は、１６個のコア１３に対して１個のコア故障に有効な冗長構成であるため、１／１６冗長構成等と呼ばれる。
【００３７】
ＳＷ１６は、データ転送制御部１２とＭＣ１７との間のアクセス経路を構成する。例えば、ＳＷ１６Ａは、データ転送制御部１２Ａ〜１２Ｄと、ＭＣ１７Ａ及び１７Ｂとの間の情報の転送経路を選択的に切り替え、ＳＷ１６Ｂは、データ転送制御部１２Ｅ〜１２Ｈと、ＭＣ１７Ｃ及び１７Ｄとの間の情報の転送経路を選択的に切り替える。
【００３８】
ＭＣ１７は、メモリ制御部の一例であり、データ転送制御部１２の要求に従ってメモリ２に対するメモリアクセス等を実行する。例えば、ＭＣ１７Ａはメモリ２Ａに対するメモリアクセス等を実行し、ＭＣ１７Ｂはメモリ２Ｂに対するメモリアクセス等を実行し、ＭＣ１７Ｃはメモリ２Ｃに対するメモリアクセス等を実行し、ＭＣ１７Ｄはメモリ２Ｄに対するメモリアクセス等を実行する。
【００３９】
メモリ２は、主記憶装置の一例である。例えば、メモリ２Ａ及び２Ｂは、それぞれ、Ａグループ〜Ｄグループによりメモリアクセス可能な記憶領域を備え、メモリ２Ｃ及び２Ｄは、それぞれ、Ｅグループ〜Ｈグループによりメモリアクセス可能な記憶領域を備える。
【００４０】
〔１−２〕冗長コアの説明
図２は、プロセッサ１０において、演算器１５の故障したコア（故障コア）が存在しない場合における情報転送経路の比較例を示す図である。図２では、情報の転送経路を太実線矢印で示す。Ａグループに着目すると、データ転送制御部１２Ａは、命令制御部１１Ａの指示（例えばＰＵＳＨ命令）に従い、メモリ２Ａ又は２Ｂから読み出したデータをＭＣ１７Ａ又は１７ＢとＳＷ１６Ａとを経由して自身からコア１３Ａ０〜１３Ａ３のいずれかに書き込む。また、データ転送制御部１２Ａは、命令制御部１１Ａの指示（例えばＰＵＬＬ命令）に従い、コア１３Ａ０〜１３Ａ３のいずれかからデータを読み出し、ＳＷ１６ＡとＭＣ１７Ａ又は１７Ｂとを経由してメモリ２Ａ又は２Ｂに転送する。
【００４１】
図３は、プロセッサ１０において、演算器１５の故障した故障コアが存在する場合における情報転送経路の一例を示す図である。図３の例では、コア１３Ｃ２及び１３Ｆ３の演算器１５がそれぞれ故障しているものとする。
【００４２】
図３に示すように、コア１３Ｆ３の演算器１５が故障しているため、冗長コア１４Ａが稼働し、コア１３Ｃ２の演算器１５が故障しているため、冗長コア１４Ｂが稼働する。この場合、コア１３Ｆ３及び１３Ｃ２では、演算器１５は利用されないが、情報の転送経路の一部として、コア１３Ｆ３及び１３Ｃ２を通過するアクセスバスが利用される。
【００４３】
なお、冗長コア１４の転送先（換言すれば転送経路）は、故障コアの検出後に（プロセッサ１０の出荷前までに）、冗長コア１４の図示しないレジスタ等に対して設定される。この設定は、例えば、冗長コア１４と故障コアのコアグループ内のコア１３との間をリング状に接続する（アクセスバスを共有させる）ための静的（固定的）な設定である。これにより、冗長コア１４Ａは、コア１３Ｆ３に代えてＦグループのコアグループに属し、冗長コア１４Ｂは、コア１３Ｃ２に代えてＣグループのコアグループに属することになる。
【００４４】
図４は、データ転送命令の一例であるＰＵＴ命令による情報転送経路の比較例を示す図である。図４において、太破線矢印で示す経路がＰＵＴ命令の経路であり、太実線矢印で示す経路がコア１３間の転送データの経路である。
【００４５】
ＰＵＴ命令は、或るコア１３の演算器１５の記憶素子、例えばＲＡＭ（Random Access Memory）上のデータを、他のコア１３の演算器１５に転送する命令である。ＰＵＴ命令により、メモリ２を介さずにコア１３同士でのデータ転送が可能となる。
【００４６】
図４においては、例えば、データ転送制御部１２Ｃが、ＰＵＴ命令に従い、コア１３Ｃ０の演算器１５の記憶素子からコア１３Ｃ２の演算器１５へのデータ転送を制御する。また、データ転送制御部１２Ｆが、ＰＵＴ命令に従い、コア１３Ｆ３の演算器１５の記憶素子からコア１３Ｆ１の演算器１５へのデータ転送を制御する。
【００４７】
なお、図４の例では、コアグループ内におけるコア１３間のデータ転送を示すが、例えば、コア１３Ｃ０からコア１３Ｆ１へのデータ転送のように、コアグループを跨ぐコア１３間のデータ転送を行なう場合、図２に示すように、メモリ２を介した転送となる。
【００４８】
ここで、上述のように、一実施形態に係る冗長コア１４が予備コアとしてカバーできる範囲は、１６コア分である。しかし、一方で、図２に例示するように、演算器１５に故障がない場合、冗長コア１４の資源が使用されることはない。すなわち、冗長コア１４は、歩留まり向上用のコアであるため、プロセッサ１０の製造段階におけるチップ診断において故障コアがない場合のように、プロセッサ１０が「良品」として出荷されると、プロセッサ１０の動作において使用されることはない。
【００４９】
このように、冗長コア１４は、１６個のコア１３の中心に位置しているにも関わらず、プロセッサ１０の出荷後に動作することがない、換言すれば、出荷されるプロセッサ１０が少なくとも１つの未使用コアを有する、ということが十分に起こり得る。半導体の製造技術及びＬＳＩ（Large Scale Integration）の集積度の向上に伴い、出荷されるプロセッサ１０において少なくとも１つの冗長コア１４が使用されない可能性は、より高まる。
【００５０】
そこで、一実施形態においては、未使用コア、一例として上述した冗長コア１４に着目し、複数のコア１３間でアクセスバスを共有するプロセッサ１０において、情報の転送経路として、冗長コア１４を経由させる手法について説明する。
【００５１】
この手法により、現状の組み合わせであるコアグループの枠を越えた範囲に情報の転送を行なう、換言すれば、コア１３間の情報の転送経路の選択肢を増やすことができる。これにより、情報の転送効率を向上させることができ、プロセッサ１０の性能向上を図ることができる。
【００５２】
〔１−３〕一実施形態に係るコアグループ間の情報転送経路の一例
図５及び図６は、一実施形態に係るプロセッサ１０における、データ転送命令によるコアグループ間の情報転送経路の一例を示す図である。
【００５３】
なお、図５では、複数のコアグループの間で情報を転送するための第１転送要求により、コア１３Ｃ３から冗長コア１４Ｂへの情報の転送が行なわれる経路を示す。また、図６では、複数のコアグループの間で情報を転送するための第２転送要求により、冗長コア１４Ｂからコア１３Ｇ１への情報の転送が行なわれる経路を示す。すなわち、一実施形態においては、第１及び第２転送要求により、複数のコアグループの間における情報の転送が実現されてよい。但し、これに限定されるものではなく、１つ又は３つ以上の転送要求によって複数のコアグループの間における情報の転送が実現されてもよい。
【００５４】
図５では、コア＃２２（コア１３Ｃ２）から冗長コア＃Ｒ１（冗長コア１４Ｂ）へのデータ転送命令がソフトウェアから発行された場合の情報転送経路の一例を示す。図５に示すように、データ転送命令は、命令制御部１１Ａ、データ転送制御部１２Ａ〜１２Ｃ、コア１３Ｃ０〜１３Ｃ１を経由する経路で転送され、コア１３Ｃ２にて受信される。コア１３Ｃ２では、演算器１５の記憶素子からデータ転送命令で指定された記憶領域のデータが読み出されてコア１３Ｃ３を経由する経路で転送され、冗長コア１４Ｂにて受信される。冗長コア１４Ｂの演算器１５は、受信したデータを記憶素子に書き込む。
【００５５】
図５の例において、データ転送制御部１２Ｃは、第１転送要求に応じて、情報の転送元のコア１３Ｃ２が属する第１コアグループにおいて共有されるアクセスバスを経由して、転送元のコア１３Ｃ２から冗長コア１４Ｂに情報を転送する制御を行なう。
【００５６】
図６では、冗長コア＃Ｒ１（冗長コア１４Ｂ）からコア＃６１（コア１３Ｇ１）へのデータ転送命令がソフトウェアから発行された場合の情報転送経路の一例を示す。図６に示すように、データ転送命令は、命令制御部１１Ｂ、データ転送制御部１２Ｅ〜１２Ｇ、コア１３Ｇ０〜１３Ｇ３を経由する経路で転送され、冗長コア１４Ｂにて受信される。冗長コア１４Ｂでは、演算器１５の記憶素子からデータ転送命令で指定された記憶領域のデータが読み出されてコア１３Ｇ３〜１３Ｇ２を経由する経路で転送され、コア１３Ｇ１にて受信される。コア１３Ｇ１の演算器１５は、受信したデータを記憶素子に書き込む。
【００５７】
図６の例において、データ転送制御部１２Ｇは、第２転送要求に応じて、情報の転送先のコア１３Ｇ１が属する第２コアグループにおいて共有されるアクセスバスを経由して、冗長コア１４Ｂから転送先のコア１３Ｇ１に情報を転送する制御を行なう。
【００５８】
なお、図５及び図６に示す情報転送経路の各構成１１〜１４における動作の詳細は、後述する。
【００５９】
以上のように、一実施形態に係るプロセッサ１０によれば、冗長コア１４と接続された複数のコア１３を含む複数のコアグループの間で、冗長コア１４を経由したデータの転送が可能となる。
【００６０】
これにより、メモリ２を経由せずにデータを転送できるコア１３の組み合わせを増加させることができるため、データの転送効率を上昇させ、プロセッサ１０の性能を向上させることが可能となる。
【００６１】
なお、図５及び図６に例示するコアグループ間のデータ転送が実現されるには、プロセッサ１０において、少なくとも１つの未使用コアが存在すればよい。このため、ソフトウェア又はシステム（例えばプロセッサ１０若しくはサーバ１）は、故障コアの有無、又は、未使用コアの有無を事前に把握できる構成を備えてよい。
【００６２】
一例として、プロセッサ１０は、チップ診断時の故障情報、例えば、故障コアの識別情報や、未使用のままである未使用コア（或いは故障コアに代えて利用されるように設定された「使用コア」）の識別情報を、図示しないレジスタ等に格納してよい。これにより、ソフトウェアやシステムにより、レジスタを参照することで故障コアを認識することが可能となる。なお、故障コア又は未使用コアの情報を取得（把握）するための手法は、上述した手法に限定されず、既知の種々の手法により実現可能である。
【００６３】
〔１−４〕転送命令の説明
一実施形態においては、コアグループ間で情報を転送するための転送命令（転送要求）の一例として、上述したＰＵＴ命令を利用可能である。図５及び図６を参照して説明した転送命令の経路は、図７に例示するＰＵＴ命令のフォーマットで一意に設定することができる。
【００６４】
図７は、ＰＵＴ命令のフォーマット例を示す図であり、図８は、ＰＵＴ命令のビットアサインの一例を示す図である。
【００６５】
図７に例示するように、“REQ_ID”（Request ID）は、命令単位で固有に割り当てられる識別番号であり、命令の識別情報の一例である。
【００６６】
“CHAIN”（Chain number）は、データ転送制御部１２単位で割り当てられる識別番号がビット位置に対応付けられたビットマップである。換言すれば、“CHAIN”は、情報の転送先のコア１３が属するコアグループの識別情報の一例である。例えば、図８に示すように、“CHAIN[7:0]”における各ビットには、データ転送制御部１２＃７〜１２＃０がそれぞれ割り当てられる。これにより、ＯＮ（例えば“１”）のビット位置に対応するデータ転送制御部１２の管轄チェインすなわちコアグループが、命令対象であると特定される。なお、“CHAIN”の複数ビットをＯＮに設定することで、ＯＮのビット位置に対応する複数のデータ転送制御部１２を命令対象に指定することも可能である。
【００６７】
“LEN”（Data length）は、各命令で取り扱う転送データの総データ長である。
【００６８】
“OPCODE”（Operation code）は、命令種ごとに割り当てられた命令種識別子である。例えば、図８に示すように、“OPCODE[4:0]”には、“11100”（ＰＵＴ  ｒｅａｄ命令）、“11101”（ＰＵＴ  ｗｒｉｔｅ命令）、“11000”（ＰＵＬＬ命令）、“10000”（ＰＵＳＨ命令）、及び、“11111”（ＥＸＥＣ命令）等が割り当てられてよい。ＰＵＴ  ｒｅａｄ命令は、ＰＵＴ命令における転送元のコア１３からのデータの読出命令（読出要求）であり、ＰＵＴ  ｗｒｉｔｅ命令は、ＰＵＴ命令における転送先のコア１３へのデータの書込命令（書込要求）である。ＰＵＬＬ命令は、コア１３からメモリ２へのデータ転送命令であり、ＰＵＳＨ命令は、メモリ２からコア１３へのデータ転送命令である。ＥＸＥＣ命令は、コア１３に対する演算器１５による演算実行命令である。
【００６９】
“SRF_LINE_ADRS”（Source register file line address）は、ＰＵＴ命令におけるデータ転送元の記憶素子に割り当てられたデータ格納元アドレスである。“TRF_LINE_ADRS”（Target register file line address）は、ＰＵＴ命令におけるデータ転送先の記憶素子に割り当てられたデータ格納先アドレスである。
【００７０】
“SPU_ENBL”（Source processing unit enable）は、ＰＵＴ命令におけるデータ転送元の“Processing Unit”の番号、例えばコア１３又は１４のコア番号、がビット位置に対応付けられたビットマップである。
【００７１】
“TPU_ENBL”（Target processing unit enable）は、ＰＵＴ命令におけるデータ転送先の“Processing Unit”の番号、例えばコア１３又は１４のコア番号、がビット位置に対応付けられたビットマップである。
【００７２】
例えば、図８に示すように、“SPU_ENBL[4:0]”における各ビットには、転送元コアとなる冗長コア１４＃ｚ及びコア１３＃ｘ３〜１３＃ｘ０がそれぞれ割り当てられる。また、“TPU_ENBL[4:0]”における各ビットには、転送先コアとなる冗長コア１４＃ｚ及びコア１３＃ｘ３〜１３＃ｘ０がそれぞれ割り当てられる。
【００７３】
なお、図８では、コア１３を特定する符号部分（例えば「コア１３＃１２」の場合の「１２」）のうち、グループを特定する部分（例えば「１」）を「ｘ」として、コア１３＃ｘ３〜１３＃ｘ０と表記する。「ｘ」は、０以上、且つ、Ｘ未満の整数である。「Ｘ」は、グループ数を示す。同様に、図８では、データ転送制御部１２を特定する符号部分（例えば「データ転送制御部１２＃３」の場合の「３」）をコア１３と同様に「ｘ」としたデータ転送制御部１２＃ｘを示す。また、図８では、冗長コア１４を特定する符号部分（例えば「冗長コア＃０」の場合の「０」）を「ｚ」とした冗長コア１４＃ｚを示す。「ｚ」は、０以上、且つ、Ｚ未満の整数である。「Ｚ」は、未使用コア数を示す。
【００７４】
このように、ＰＵＴ命令では、例えばコア１３Ａ０〜１３Ａ３及び冗長コア１４Ａのように、冗長コア１４も含めたコアグループをビットマップ表記できるため、コアグループ間のデータ転送に十分なフォーマットであるといえる。
【００７５】
なお、データ転送命令としては、ＰＵＴ命令に限定されるものではなく、コア１３とコア１４との間、又は、コア１３間、におけるデータ転送を指示することが可能な種々の命令が用いられてもよい。
【００７６】
〔１−５〕プロセッサの構成例
次に、一実施形態に係るプロセッサ１０の構成例を説明する。なお、以下の説明において、命令及びデータは、プロセッサ１０内部（例えば演算器１５）のクロック周波数に応じたサイクル単位で、プロセッサ１０内部のバッファやセレクタ、ルータ等の論理回路により、保持及び出力等が行なわれて転送されるものとする。
【００７７】
〔１−５−１〕コアの構成例
図９は、一実施形態に係るコア１３のＨＷ構成例を示すブロック図である。図９では、「ｘ」及び「ｚ」の表記に加えて、コア１３を特定する符号部分（例えば「コア１３＃１２」の場合の「１２」）のうち、コアグループ内のコア１３の位置を特定する部分（例えば「２」）を「ｙ」として、コア１３＃ｘｙと表記する。「ｙ」は、０以上、且つ、Ｙ未満の整数である。「Ｙ」は、コアグループ内のコア数を示す。同様に、図９では、データ転送制御部１２を特定する符号部分（例えば「データ転送制御部１２＃３」の場合の「３」）を、コア１３と同様に「ｘ」として、データ転送制御部１２＃ｘと表記する。
【００７８】
図９に示すように、コア１３＃ｘｙは、演算器１５に加えて、例示的に、複数のバッファ（図９中、「BUF」と表記）１３１ｂ、１３１ｄ、１３２ａ、１３２ｂ、１３３ｂ、１３３ｄ、１３４ａ及び１３４ｄを備えてよい。また、コア１３＃ｘｙは、例示的に、複数のセレクタ（図９中、「SEL」と表記）１３１ａ、１３３ｃ及び１３４ｃを備えてよい。さらに、コア１３＃ｘｙは、例示的に、複数のルータ（図９中、「RT」と表記）１３１ｃ、１３２ｃ、１３３ａ及び１３４ｂを備えてよい。以下、コア１３＃ｘｙが備える上記の「バッファ」を総称する場合は、単に「バッファ」と表記し、上記の「セレクタ」を総称する場合は、単に「セレクタ」と表記し、上記の「ルータ」を総称する場合は、単に「ルータ」と表記する。
【００７９】
バッファは、情報を一時的に保持する論理回路である。
【００８０】
セレクタは、ｎ入力１出力（ｎは２以上の整数；図９の例ではｎ＝２）の論理回路である。ｎ入力１出力のセレクタは、例えば、ｎ個の入力端子及び１個の出力端子を備えてよく、マルチプレクサと称されてもよい。マルチプレクサは、ｎ入力端子又は図示しない制御端子からの入力情報に基づき、ｎ入力端子の中から１つの入力端子を選択し、選択した入力端子からの入力情報を、出力端子から出力する。
【００８１】
ルータは、１入力ｎ出力の論理回路である。１入力ｎ出力のルータは、例えば、１個の入力端子及びｎ個の出力端子を備えてよく、デマルチプレクサ又はデコーダと称されてもよい。デマルチプレクサは、入力端子又は図示しない制御端子からの入力情報に基づき、ｎ出力端子の中から１つの出力端子を選択し、入力端子からの入力情報を、選択した出力端子から出力する。
【００８２】
演算器１５は、固定又は可変のクロック周波数によるサイクルで動作する論理回路である。演算器１５は、例えば、メモリ（図９中、「MEM」と表記）１５１を備え、メモリ１５１に対する書き込み及び読み出しを行なう演算回路の一例である。メモリ１５１は、記憶素子又は記憶回路の一例である。
【００８３】
（データ書込動作例）
セレクタ１３１ａには、コア１３＃ｘｙに接続されている（隣接する）コア１３＃ｘ（ｙ−１）、１３＃ｘ（ｙ＋１）、データ転送制御部１２＃ｘ及び冗長コア１４＃ｚのうちのいずれかから、情報、例えばデータの書込命令及び書込対象のデータが入力される。書込命令としては、例えば、ＰＵＴ  ｗｒｉｔｅ命令やＰＵＳＨ命令等が挙げられる。
【００８４】
例えば、セレクタ１３１ａは、情報が入力される入力端子を選択し、当該情報を出力する。セレクタ１３１ａから出力された情報は、バッファ１３１ｂを経由し、ルータ１３１ｃに入力される。ルータ１３１ｃはデコーダとして機能し、書込命令に基づき、自身のコア１３＃ｘｙに対する書込命令か否かを判定する。自身のコア１３＃ｘｙに対する書込命令ではない場合、ルータ１３１ｃは、セレクタ１３３ｃ側の出力端子を選択して情報を出力する。当該情報は、セレクタ１３３ｃ及びバッファ１３３ｄを経由して、コア１３＃ｘ（ｙ＋１）又は冗長コア１４＃ｚに出力される。一方、自身のコア１３＃ｘｙに対する書込命令の場合、ルータ１３１ｃは、バッファ１３１ｄ側の出力端子を選択して情報を出力する。当該情報は、バッファ１３１ｄを経由し、書込命令に従って、演算器１５のメモリ１５１に書き込まれる。
【００８５】
（データ読出動作例）
バッファ１３２ａには、コア１３＃ｘｙに接続されている（隣接する）コア１３＃ｘ（ｙ−１）、１３＃ｘ（ｙ＋１）、データ転送制御部１２＃ｘ及び冗長コア１４＃ｚのうちのいずれかから、情報、例えばデータの読出命令が入力される。読出命令としては、例えば、ＰＵＴ  ｒｅａｄ命令やＰＵＬＬ命令等が挙げられる。
【００８６】
例えば、バッファ１３２ａに保持され出力された情報は、バッファ１３２ｂを経由して、ルータ１３２ｃに入力される。ルータ１３２ｃは、デコーダとして機能し、読出命令に基づき、自身のコア１３＃ｘｙに対する読出命令か否かを判定する。自身のコア１３＃ｘｙに対する読出命令ではない場合、ルータ１３２ｃは、コア１３＃ｘ（ｙ＋１）又は冗長コア１４＃ｚ側の出力端子を選択して情報を出力する。一方、自身のコア１３＃ｘｙに対する読出命令の場合、ルータ１３２ｃは、演算器１５側の出力端子を選択して情報を出力する。演算器１５は、読出命令に従って、メモリ１５１からデータを読み出し、ルータ１３３ａに出力される。
【００８７】
ルータ１３３ａは、デコーダとして機能し、読出命令に基づき、読み出したデータの転送先を判定し、転送先に応じて、セレクタ１３４ｃ側の出力端子又はバッファ１３３ｂ側の出力端子を選択して情報を出力する。セレクタ１３４ｃに出力された情報は、バッファ１３４ｄを経由して、コア１３＃ｘ（ｙ−１）又はデータ転送制御部１２＃ｘに出力される。バッファ１３３ｂに出力された情報は、セレクタ１３３ｃ及びバッファ１３３ｄを経由して、コア１３＃ｘ（ｙ＋１）又は冗長コア１４＃ｚに出力される。
【００８８】
バッファ１３４ａには、コア１３＃ｘ（ｙ＋１）又は冗長コア１４＃ｚから、読出命令に従って読み出されたデータが入力され、ルータ１３４ｂに出力される。ルータ１３４ｂは、デコーダとして機能し、読出命令に基づき、データの転送先が自身のコア１３＃ｘｙか否かを判定する。転送先が自身のコア１３＃ｘｙではない場合、ルータ１３４ｂは、セレクタ１３４ｃ側の出力端子を選択して情報を出力する。一方、転送先が自身のコア１３＃ｘｙの場合、ルータ１３４ｂは、セレクタ１３１ａ側の出力端子を選択して情報を出力する。セレクタ１３１ａに出力された情報は、データ書込動作の説明で既述のように、セレクタ１３１ａで選択されてバッファ１３１ｂに出力される。
【００８９】
〔１−５−２〕冗長コアの構成例
図１０は、一実施形態に係る冗長コア１４のＨＷ構成例を示すブロック図である。図１０に示すように、冗長コア１４＃ｚは、演算器１５に加えて、例示的に、複数のバッファ１４１ｂ、１４１ｃ、１４２ｂ、１４２ｃ及び１４３ａを備えてよい。また、冗長コア１４＃ｚは、例示的に、複数のセレクタ１４１ａ及び１４２ａを備えてよい。さらに、冗長コア１４＃ｚは、例示的に、ルータ１４３ｂを備えてよい。以下、冗長コア１４＃ｚが備える上記の「バッファ」を総称する場合は、単に「バッファ」と表記し、上記の「セレクタ」を総称する場合は、単に「セレクタ」と表記し、上記の「ルータ」を総称する場合は、単に「ルータ」と表記する。
【００９０】
冗長コア１４＃ｚが備えるバッファ、セレクタ、ルータ及び演算器１５の各々は、コア１３＃ｘｙが備えるバッファ、セレクタ、ルータ及び演算器１５の各々と同様の論理回路であってよい。ｍ入力１出力（ｍは２以上の整数；図１０の例ではｍ＝４）のセレクタは、例えば、マルチプレクサと称されてもよく、１入力ｍ出力のルータは、例えば、デマルチプレクサ又はデコーダと称されてもよい。なお、ｍの値は、例えば、冗長コア１４に接続されている（隣接する）コア１３の数に関連してよく、一例として、当該コア１３の数と一致してもよい。
【００９１】
（データ書込動作例）
セレクタ１４１ａは、冗長コア１４＃ｚに接続されている（隣接する）コア１３＃ｘＹ〜１３＃（ｘ＋３）Ｙのうちのいずれかのコア１３から、情報、例えばデータの書込命令及び書込対象のデータを受信する。当該書込命令は、情報をメモリ１５１に書き込むことを指示する第１転送要求の一例である。
【００９２】
ここで、図３に示す比較例においては、冗長コア１４が利用される場合、セレクタ１４１ａには、故障コアの位置（コアグループ）に応じた固定のコア１３から情報が入力される。すなわち、セレクタ１４１ａにより選択される入力端子（コア１３＃ｘＹ〜１３＃（ｘ＋３）Ｙ）が確定している。
【００９３】
これに対し、一実施形態に係る冗長コア１４では、セレクタ１４１ａの全ての入力端子に、接続先からデータが到来し得る。本来、冗長コア１４は、接続されているいずれのコア１３が故障しても代替できるように構成されているため、いずれのコア１３から情報が到来しても、書込対象のデータをメモリ１５１に書込可能である。
【００９４】
従って、例えば、セレクタ１４１ａは、情報が入力されるコア１３に対応する入力端子を選択し、当該情報を出力する。セレクタ１４１ａから出力された情報は、バッファ１４１ｂ及び１４１ｃを経由し、書込命令に従って、演算器１５のメモリ１５１に書き込まれる。
【００９５】
（データ読出動作例）
セレクタ１４２ａは、冗長コア１４＃ｚに接続されている（隣接する）コア１３＃ｘＹ〜１３＃（ｘ＋３）Ｙのうちのいずれかのコア１３から、情報、例えばデータの読出命令を受信する。当該読出命令は、メモリ１５１から情報を読み出すことを指示する第２転送要求の一例である。
【００９６】
セレクタ１４２ａについても、セレクタ１４１ａと同様に、図３に示す比較例においては固定のコア１３から情報が入力されるが、一実施形態に係る冗長コア１４では、セレクタ１４２ａの全ての入力端子に、接続先から読出命令が到来し得る。
【００９７】
例えば、セレクタ１４２ａは、読出命令が入力されるコア１３に対応する入力端子を選択し、当該読出命令を出力する。セレクタ１４２ａから出力された読出命令は、バッファ１４２ｂ及び１４２ｃを経由し、演算器１５に転送される。演算器１５は、読出命令に従って、メモリ１５１から読出対象のデータを読み出す。メモリ１５１から読み出されたデータは、バッファ１４３ａを経由して、ルータ１４３ｂに転送される。
【００９８】
ここで、図３に示す比較例においては、冗長コア１４が利用される場合、メモリ１５１から読み出したデータの転送先は、故障箇所（例えば故障コア）を含む“CHAIN”すなわちコアグループであることが確定している。このため、冗長コア１４は、例えば故障箇所を示す故障通知信号や専用レジスタ等に基づき、読み出したデータの転送先として固定のコア１３を指定することができる。換言すれば、図３に示す比較例においては、読み出したデータの転送先は、故障通知信号や専用レジスタ等により、固定的に指定される。
【００９９】
これに対し、一実施形態に係る冗長コア１４は、予備コアとしてカバーできる範囲内のコア１３が故障していない場合においても、動作を行なう。そこで、一実施形態に係る冗長コア１４は、上述した場合においても動作可能とするために、読み出したデータの転送先を判別する構成を備える。
【０１００】
例えば、冗長コア１４は、情報の転送経路を命令フォーマットに応じて選択的に出力するデコーダ（ルータ）１４３ｂを備える。
【０１０１】
デコーダ１４３ｂは、図２等に示す比較例に対して追加されるパケットデコーダである。デコーダ１４３ｂは、読出命令に基づき、情報の出力ポート（例えば出力端子）を判定し、判定した出力ポートに接続されるコア１３に情報を出力する出力回路の一例である。一実施形態では、読出要求は、例えばＰＵＴ  ｒｅａｄ命令等の転送要求である。
【０１０２】
例えば、デコーダ１４３ｂは、読出命令を参照して、読み出したデータの転送先としてコア１３＃ｘＹ〜１３＃（ｘ＋３）Ｙのうちのいずれかを判別する。一例として、デコーダ１４３ｂは、ＰＵＴ  ｒｅａｄ命令のうち、図８に示す“CHAIN”をデコードすることで、転送先となる“CHAIN”すなわちコアグループを判別し、セレクト信号を生成する。これにより、デコーダ１４３ｂは、データの転送先を選択でき、判別したコアグループのコア１３に対してデータを転送することができる。
【０１０３】
このように、未使用コアの一例としての冗長コア１４は、冗長コア１４と接続された（隣接する）複数のコア１３のそれぞれのコアグループにおいて共有される各アクセスバスを、冗長コア１４においても共有可能である。そして、冗長コア１４は、転送要求に応じて、これらのコアグループのうちのいずれか１つのコアグループを選択して、選択したコアグループに属するように動作することができる。
【０１０４】
〔１−５−３〕データ転送制御部の構成例
図１１は、一実施形態に係るデータ転送制御部１２ＡのＨＷ構成例を示すブロック図である。図１１に示すように、データ転送制御部１２Ａは、例示的に、転送部１２１、分割部１２２及び制御部１２３を備えてよい。なお、図１１では、データ転送制御部１２として、命令制御部１１に接続されたデータ転送制御部１２Ａを例に挙げているが、他のデータ転送制御部１２Ｂ〜１２Ｈも、データ転送制御部１２Ａと同様の構成を備えてよい。
【０１０５】
転送部１２１は、命令制御部１１又は前段のデータ転送制御部１２（接続されたデータ転送制御部１２のうちの転送経路が命令制御部１１に近い側）からの命令の転送先（宛先）を判定し、判定した転送先に当該命令を転送する。例えば、転送部１２１は、ルータ１２１ａ及び複数のバッファ１２１ｂを備えてよい。
【０１０６】
ルータ１２１ａは、命令制御部１１又は前段のデータ転送制御部１２からの命令を入力され、当該命令に基づき転送先（宛先）を判定し、判定した転送先に向けて当該命令を転送する。前段のデータ転送制御部１２とは、例えば、自身に接続されたデータ転送制御部１２のうちの転送経路が命令制御部１１に近い側のデータ転送制御部１２である。
【０１０７】
例えば、ルータ１２１ａは、判定した転送先が自身の管轄するグループであれば、ＰＵＴ、ＰＵＳＨ、ＰＵＬＬ等の命令種ごとに命令を分類してバッファ１２１ｂに転送する。また、ルータ１２１ａは、判定した転送先が他のデータ転送制御部１２の管轄するグループであれば、他のデータ転送制御部１２に命令を転送する。
【０１０８】
複数のバッファ１２１ｂは、例えば命令種ごとに備えられてよい。バッファ１２１ｂは、キューと称されてもよい。バッファ１２１ｂは、自身のデータ転送制御部１２の管轄するグループに対する命令を保持し、分割部１２２に転送する。なお、バッファ１２１ｂと分割部１２２との間のバスは、分岐して命令制御部１１に接続されてよく、これにより、命令が転送されると、完了報告の一例である“completion”が命令制御部１１に出力される。
【０１０９】
分割部１２２は、例えば、バッファ１２２ａ〜１２２ｄ及びセレクタ１２２ｅを備えてよい。バッファ１２２ａ及び１２２ｂは、それぞれ、転送部１２１から入力される、ＥＸＥＣ命令及びＰＵＴ命令を保持し、制御部１２３に転送する。バッファ１２２ｃ及び１２２ｄは、それぞれ、転送部１２１から入力される、ＰＵＳＨ命令及びＰＵＬＬ命令を保持し、セレクタ１２２ｅを経由してＳＷ１６に転送する。
【０１１０】
ここで、バッファ１２２ａ〜１２２ｄは、転送部１２１から入力される命令を、ＳＷ１６のＩＦ（Interface）に合わせて分割して出力してよい。例えば、ＳＷ１６のＩＦが２５６Ｂ（バイト）幅であり、命令のデータ量が５１２Ｂであれば、バッファ１２２ａ〜１２２ｄは、それぞれ、命令を２分割してよい。
【０１１１】
セレクタ１２２ｅは、バッファ１２２ｃ及び１２２ｄのいずれか一方からの出力を選択し、選択した命令を、メモリリクエストとしてＳＷ１６に発行する。例えば、セレクタ１２２ｅは、バッファ１２２ｃからの出力をメモリリードリクエストとしてＳＷ１６に発行してよい。また、例えば、セレクタ１２２ｅは、バッファ１２２ｄからの出力を、後述する制御部１２３からのデータとタイミングの同期して、メモリライトリクエストとしてＳＷ１６に発行してよい。セレクタ１２２ｅによるＳＷ１６への命令の出力は、ＳＷ１６からの完了報告をトリガとして行なわれてよい。
【０１１２】
制御部１２３は、コア１３に発行する命令の調停を行なう。例えば、制御部１２３は、コア１３のライト及び／又はリードのＩＦに合わせて命令を調停する。
【０１１３】
制御部１２３は、例えば、バッファ１２３ａ〜１２３ｄ、１２３ｉ、１２３ｋ、１２３ｌ、１２３ｎ、スケジューラ１２３ｇ、セレクタ１２３ｅ、１２３ｆ、ＲＡＭ１２３ｊ及び１２３ｍを備えてよい。
【０１１４】
バッファ１２３ａ〜１２３ｄは、例えば命令種ごとに備えられてよい。バッファ１２３ａ〜１２３ｄは、キューと称されてもよい。バッファ１２３ａ〜１２３ｄは、それぞれ、分割部１２２から入力される、ＥＸＥＣ命令、ＰＵＴ命令、ＰＵＳＨ命令及びＰＵＬＬ命令を保持し、セレクタ１２３ｅ又は１２３ｆに出力する。バッファ１２３ａ〜１２３ｄは、例えば、コア１３のＩＦに合わせて命令を分割して出力してよい。例えば、コア１３のＩＦが３２Ｂ幅であり、分割部１２２で分割された命令のデータ量が２５６Ｂであれば、バッファ１２３ａ〜１２３ｄは、それぞれ、命令を４分割してよい。
【０１１５】
セレクタ１２３ｅは、バッファ１２３ａ及び１２３ｃから入力されるＥＸＥＣ命令及びＰＵＳＨ命令を、書込命令として調停する。セレクタ１２３ｆは、バッファ１２３ｂ及び１２３ｄから入力されるＰＵＴ命令及びＰＵＬＬ命令を、読出命令として調停する。
【０１１６】
スケジューラ１２３ｇは、コア１３への情報の投入タイミングを調整する。スケジューラ１２３ｇは、例えば、複数（図１１の例では２つ）のバッファ１２３ｈを備えてよく、これらのバッファ１２３ｈに、セレクタ１２３ｅ及び１２３ｆでそれぞれ調停された書込命令及び読出命令を保持する。
【０１１７】
スケジューラ１２３ｇは、例えば、命令種と、コア１３内の命令伝搬状況とに基づき、コア１３への命令の投入タイミングを調整してよい。例えば、コアグループのＰＵＴ命令の経路に他の命令のデータが残っていないか否かを判定し、他の命令のデータが残っていない場合にＰＵＴ命令を出力することで、ＰＵＴ命令の投入タイミングを調整する。
【０１１８】
また、スケジューラ１２３ｇは、コア１３に投入する命令がＰＵＳＨ命令であれば、コア１３への命令投入と同期して、ＲＡＭ１２３ｊからデータを読み出し、バッファ１２３ｋを経由してコア１３へ送出する。ＲＡＭ１２３ｊには、メモリ２から読み出され、ＳＷ１６及びバッファ１２３ｉを経由した読出データが格納される。
【０１１９】
さらに、スケジューラ１２３ｇは、コア１３に投入する命令がＰＵＬＬ命令であれば、ＳＷ１６からの応答に同期して、ＲＡＭ１２３ｍからデータを読み出し、バッファ１２３ｌを経由してＳＷ１６へ送出する。ＲＡＭ１２３ｍには、コア１３から読み出され、バッファ１２３ｎを経由した読出データが格納される。
【０１２０】
なお、分割部１２２又は制御部１２３は、例えば、コア１３に転送するＰＵＴ命令のうち、コア間での転送には不要又は省略可能な情報の省略又は削除等を行ない、ＰＵＴ命令のパケット長の短縮を行なってもよい。
【０１２１】
〔１−６〕動作例
次に、図１２〜図１７を参照して、上述の如く構成された一実施形態に係るサーバ１の動作例を説明する。なお、図１２、図１３、図１５及び図１６、並びに、以下の動作例の説明では、データ転送制御部１２＃ｘ、コア１３＃ｘｙ及び冗長コア１４＃ｚを、それぞれ、データ転送制御部＃ｘ、コア＃ｘｙ及び冗長コア＃ｚと表記する。また、前提として、プロセッサ１０において、冗長コア＃Ｒ１が未使用コアであるものとする。
【０１２２】
〔１−６−１〕コア＃２２から冗長コア＃Ｒ１へのＰＵＴ命令制御
図１２及び図１３は、図５に示す情報転送経路における各構成の動作例を説明するフローチャートである。図１４は、図５に示す情報転送経路におけるコア１３及び冗長コア１４の動作例を示す図である。
【０１２３】
図１２に示すように、プロセッサ１０又は図示しないホスト装置により実行されるソフトウェアが、冗長コア＃Ｒ１へのアクセスがない、例えば冗長コア＃Ｒ１に対する先行する命令がないことを確認し（ステップＳ１）、アクセスがある場合には完了を待つ。
【０１２４】
ソフトウェアは、コア＃２２から冗長コア＃Ｒ１へのＰＵＴ命令を発行する（ステップＳ２）。当該ＰＵＴ命令は、例えば、“CHAIN[7:0]”=“00000100”（データ転送制御部＃２）、“OPCODE[4:0]”=“11100”（ＰＵＴ  ｒｅａｄ命令）、“SPU_ENBL[4:0]”=“00100”（コア＃２２）、“TPU_ENBL[4:0]”=“10000”（冗長コア＃Ｒ１）である。
【０１２５】
命令制御部１１＃０は、ソフトウェアから入力されたＰＵＴ命令をデータ転送制御部＃０へ転送する（ステップＳ３）。
【０１２６】
データ転送制御部＃０の転送部１２１は、ＰＵＴ命令の“CHAIN[0]”の値（図８参照）がＯＦＦ（例えば“０”）であり自身を示していないため、ＰＵＴ命令をデータ転送制御部＃１に転送する（ステップＳ４）。
【０１２７】
データ転送制御部＃１の転送部１２１は、ＰＵＴ命令の“CHAIN[1]”の値がＯＦＦであり自身を示していないため、ＰＵＴ命令をデータ転送制御部＃２に転送する（ステップＳ５）。
【０１２８】
データ転送制御部＃２の転送部１２１は、ＰＵＴ命令の“CHAIN[1]”の値がＯＮ（例えば“１”）であり自身を示すため、分割部１２２を経由してＰＵＴ命令を制御部１２３に転送する。制御部１２３は、ＰＵＴ命令をスケジューリングする（ステップＳ６）。
【０１２９】
制御部１２３は、スケジューリング結果に基づき、コア＃２０にＰＵＴ命令を発行する（ステップＳ７）。
【０１３０】
コア＃２０（例えばルータ１３２ｃ）は、ＰＵＴ命令の“OPCD”（図８参照）がＰＵＴ  ｒｅａｄ命令を示し、且つ、“SPU_ENBL[16]”がＯＦＦ（例えば“０”）であり自身を示していないため、ＰＵＴ命令をコア＃２１に転送する（ステップＳ８）。
【０１３１】
コア＃２１は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｒｅａｄ命令を示し、且つ、“SPU_ENBL[17]”がＯＦＦであり自身を示していないため、ＰＵＴ命令をコア＃２２に転送する（ステップＳ９）。
【０１３２】
図１３に示すように、コア＃２２は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｒｅａｄ命令を示し、且つ、“SPU_ENBL[18]”がＯＮ（例えば“１”）であり自身を示すため、ＰＵＴ  ｒｅａｄ命令を実行する（ステップＳ１０）。
【０１３３】
例えば、ルータ１３２ｃは、ＰＵＴ命令を演算器１５に出力する。演算器１５は、ＰＵＴ命令の“SPU_LINE_ADRS”で示されたアドレスのデータを記憶素子、例えばメモリ１５１から読み出す（ステップＳ１１；図１４参照）。また、コア＃２２は、ＰＵＴ  ｒｅａｄ命令の“OPCD”をＰＵＴ  ｗｒｉｔｅ用に変更する（ステップＳ１２）。
【０１３４】
そして、コア＃２２は、メモリ１５１から読み出したデータと、ＰＵＴ  ｗｒｉｔｅ命令とを、ルータ１３３ａ、バッファ１３３ｂ、セレクタ１３３ｃ及びバッファ１３３ｄを経由して、コア＃２３へ転送する（ステップＳ１３；図１４参照）。
【０１３５】
コア＃２３は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｗｒｉｔｅ命令を示し、且つ、“TPU_ENBL[11]”がＯＦＦ（例えば“０”）であり自身を示していないため、データとＰＵＴ  ｗｒｉｔｅ命令とを冗長コア＃Ｒ１に転送する（ステップＳ１４）。例えば、データ及びＰＵＴ  ｗｒｉｔｅ命令は、コア＃２３のルータ１３１ｃ、セレクタ１３３ｃ及びバッファ１３３ｄを経由して、冗長コア＃Ｒ１に出力される（図１４参照）。
【０１３６】
冗長コア＃Ｒ１は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｗｒｉｔｅ命令を示し、且つ、“TPU_ENBL[12]”がＯＮ（例えば“１”）であり自身を示すため、ＰＵＴ  ｗｒｉｔｅ命令を実行する（ステップＳ１５）。
【０１３７】
例えば、データ及びＰＵＴ  ｗｒｉｔｅ命令は、冗長コア＃Ｒ１のセレクタ１４１ａに入力され、バッファ１４１ｂ及び１４１ｃを経由して演算器１５に出力される。演算器１５は、ＰＵＴ命令の“TPU_LINE_ADRS”で示された記憶素子、例えばメモリ１５１のアドレスに、“LEN”で示された長さのデータを書き込み（ステップＳ１６；図１４参照）、処理が終了する。
【０１３８】
〔１−６−２〕冗長コア＃Ｒ１からコア＃６１へのＰＵＴ命令制御
図１５及び図１６は、図６に示す情報転送経路における各構成の動作例を説明するフローチャートである。図１７は、図６に示す情報転送経路におけるコア１３及び冗長コア１４の動作例を示す図である。なお、図１２及び図１３と同様の動作の説明は省略する。
【０１３９】
図１５に示すように、ソフトウェアが、冗長コア＃Ｒ１へのアクセスがないことを確認し（ステップＳ２１）、アクセスがある場合には完了を待つ。
【０１４０】
ソフトウェアは、冗長コア＃Ｒ１からコア＃６１へのＰＵＴ命令を発行する（ステップＳ２２）。当該ＰＵＴ命令は、例えば、“CHAIN[7:0]”=“01000000”（データ転送制御部＃６）、“OPCODE[4:0]”=“11100”（ＰＵＴ  ｗｒｉｔｅ命令）、“SPU_ENBL[4:0]”=“10000”（冗長コア＃Ｒ１）、“TPU_ENBL[4:0]”=“00100”（コア＃６１）である。
【０１４１】
命令制御部１１＃１は、ソフトウェアから入力されたＰＵＴ命令をデータ転送制御部＃４へ転送する（ステップＳ２３）。
【０１４２】
データ転送制御部＃４は、ＰＵＴ命令の“CHAIN[4]”の値がＯＦＦであり自身を示していないため、ＰＵＴ命令をデータ転送制御部＃５に転送する（ステップＳ２４）。
【０１４３】
データ転送制御部＃５は、ＰＵＴ命令の“CHAIN[5]”の値がＯＦＦであり自身を示していないため、ＰＵＴ命令をデータ転送制御部＃６に転送する（ステップＳ２５）。
【０１４４】
データ転送制御部＃６は、ＰＵＴ命令の“CHAIN[6]”の値がＯＮであり自身を示すため、ＰＵＴ命令をスケジューリングし（ステップＳ２６）、スケジューリング結果に基づき、冗長コア＃Ｒ１にＰＵＴ命令を発行する（ステップＳ２７）。
【０１４５】
コア＃６０は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｒｅａｄ命令を示し、且つ、“SPU_ENBL[16]”がＯＦＦであり自身を示していないため、ＰＵＴ命令をコア＃６１に転送する（ステップＳ２８）。同様に、“SPU_ENBL[17]”〜“SPU_ENBL[19]”がいずれもＯＦＦであるため、ＰＵＴ命令がコア＃６２、＃６３、冗長コア＃Ｒ１の順で後段に転送される（ステップＳ２９〜Ｓ３１）。
【０１４６】
図１６に示すように、冗長コア＃Ｒ１は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｒｅａｄ命令を示し、且つ、“SPU_ENBL[20]”がＯＮであり自身を示すため、ＰＵＴ  ｒｅａｄ命令を実行する（ステップＳ３２）。
【０１４７】
例えば、ＰＵＴ  ｒｅａｄ命令は、冗長コア＃Ｒ１のセレクタ１４２ａに入力され、バッファ１４２ｂ及び１４２ｃを経由して演算器１５に出力される。演算器１５は、ＰＵＴ命令の“SPU_LINE_ADRS”で示されたアドレスのデータをメモリ１５１から読み出す（ステップＳ３３；図１７参照）。
【０１４８】
また、冗長コア＃Ｒ１は、ＰＵＴ  ｒｅａｄ命令の“OPCD”をＰＵＴ  ｗｒｉｔｅ用に変更する（ステップＳ３４）。
【０１４９】
換言すれば、冗長コア＃Ｒ１の演算器１５は、第２転送要求に応じて情報を読み出した場合、読み出した情報を転送先のコア＃６１が備えるメモリ１５１に書き込むことを指示するように第２転送要求を更新する。そして、演算器１５は、更新した第２転送要求と、読み出した情報とを、ルータ１４３ｂの出力端子から出力する。これにより、第２転送要求として既存のＰＵＴ命令のフォーマットを利用して、冗長コア＃Ｒ１を経由するコアグループ間の情報転送を可能にすることができる。
【０１５０】
そして、冗長コア＃Ｒ１は、メモリ１５１から読み出したデータと、ＰＵＴ  ｗｒｉｔｅ命令とを、バッファ１４３ａ及びルータ１４３ｂを経由して、コア＃６３へ転送する（ステップＳ３５；図１７参照）。このとき、ルータ１４３ｂは、ＰＵＴ  ｗｒｉｔｅ命令の“CHAIN”をデコードすることで、転送先としてデータ転送制御部＃６のチェインの出力端子を選択する。
【０１５１】
コア＃６３は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｗｒｉｔｅ命令を示し、且つ、“TPU_ENBL[11]”がＯＦＦであり自身を示していないため、データとＰＵＴ  ｗｒｉｔｅ命令とをコア＃６２に転送する（ステップＳ３６；図１７参照）。
【０１５２】
コア＃６２は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｗｒｉｔｅ命令を示し、且つ、“TPU_ENBL[10]”がＯＦＦであり自身を示していないため、データとＰＵＴ  ｗｒｉｔｅ命令とをコア＃６１に転送する（ステップＳ３７；図１７参照）。
【０１５３】
コア＃６１は、ＰＵＴ命令の“OPCD”がＰＵＴ  ｗｒｉｔｅ命令を示し、且つ、“TPU_ENBL[09]”がＯＮであり自身を示すため、ＰＵＴ  ｗｒｉｔｅ命令を実行する（ステップＳ３８）。
【０１５４】
例えば、データ及びＰＵＴ  ｗｒｉｔｅ命令は、コア＃６１のバッファ１３４ａに入力され、ルータ１３４ｂ、セレクタ１３１ａ、バッファ１３１ｂ、ルータ１３１ｃ及びバッファ１３１ｄを経由して演算器１５に出力される。演算器１５は、ＰＵＴ命令の“TPU_LINE_ADRS”で示されたメモリ１５１のアドレスに、“LEN”で示された長さのデータを書き込み（ステップＳ３９；図１７参照）、処理が終了する。
【０１５５】
〔１−７〕一実施形態の効果
以上のように、一実施形態に係るプロセッサ１０によれば、冗長コア１４を経由する転送経路（図５及び図６参照）により、複数のコアグループの間で情報を転送することができる。
【０１５６】
これにより、メモリ２を経由せずにデータを転送できるコア１３の組み合わせを増加させることができるため、データの転送効率を上昇させ、プロセッサ１０の性能を向上させることが可能となる。
【０１５７】
また、冗長コア１４は、第２転送要求に基づき、メモリ１５１から読み出した情報の出力先を判定し出力するルータ１４３ｂを備えることで、冗長コア１４を経由する転送経路を容易に実現できる。また、ルータ１４３ｂが第２転送要求の“CHAIN”に基づき判定することで、既存のＰＵＴ命令を利用することができ、専用の命令の追加及び当該命令を処理するための回路の変更等を不要とすることができる。
【０１５８】
さらに、冗長コア１４の演算器１５が、第１及び第２転送要求に基づき、メモリ１５１への書き込み及び読み出しを行なうことで、冗長コア１４を経由する転送経路を容易に実現できる。また、演算器１５が、第２転送要求に従い情報を読み出すと、当該第２転送要求を更新し出力することで、既存のＰＵＴ命令を利用することができ、専用の命令の追加及び当該命令を処理するための回路の変更等を不要とすることができる。
【０１５９】
また、未使用コアとして冗長コア１４を利用することで、不良のコア１３が存在しない場合には利用されないＨＷ資源を有効活用できるとともに、不良のコア１３が存在しない（良品である）プロセッサ１０の性能向上を図ることができる。また、良品であるプロセッサ１０の商品価値を高めることができる。
【０１６０】
〔２〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１６１】
一実施形態では、未使用コアとして、冗長コア１４を例に挙げたが、これに限定されるものではない。未使用コアとしては、例えば、様々な理由によって、利用されないように設定された、又は、利用するように設定されていない、種々のコアが挙げられる。
【０１６２】
また、メモリ２、並びに、プロセッサ１０が備える命令制御部１１、データ転送制御部１２、コア１３、冗長コア１４、ＳＷ１６及びＭＣ１７の数は、図１等に示す数に限定されるものではない。なお、サーバ１は、マルチプロセッサとして、２以上のプロセッサ１０を備えてもよい。
【０１６３】
さらに、サーバ１は、例えば、プロセッサ１０及びメモリ２に加えて、ＨＤＤやＳＳＤ等の記憶装置、通信インタフェース（ＩＦ；Interface）、入出力装置、及び、読取装置の少なくともいずれか１つを備えてもよい。ＨＤＤはHard Disk Driveの略称であり、ＳＳＤはSolid State Driveの略称である。入出力装置は、マウスやキーボード、及び、モニタ等を含んでよい。読取装置は、データやプログラム等が記録された記録媒体を読み取る装置である。
【０１６４】
例えば、プロセッサ１０は、記憶装置に格納されたプログラムをメモリ２に展開して実行することにより、サーバ１としての機能を実現してよい。当該プログラムは、一実施形態に係る、ＰＵＴ命令等の命令を発行するソフトウェアを含んでよい。
【０１６５】
〔３〕付記
以上の一実施形態に関し、さらに以下の付記を開示する。
【０１６６】
（付記１）
アクセスバスを共有する複数の第１コアが属する予め設定されたコアグループを、アクセスバスごとに備えるとともに、
複数の前記コアグループの各々における１以上の第１コアとそれぞれ接続される第２コアであって、前記複数のコアグループにおいて共有される各アクセスバスを共有可能である前記第２コアと、
前記複数のコアグループの間で情報を転送するための第１転送要求に応じて、前記情報の転送元の第１コアが属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コアから前記第２コアに前記情報を転送する制御を行なう第１制御部と、
前記複数のコアグループの間で情報を転送するための第２転送要求に応じて、前記情報の転送先の第１コアが属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コアから前記転送先の第１コアに前記情報を転送する制御を行なう第２制御部と、を備える、
演算処理装置。
【０１６７】
（付記２）
前記第２コアは、
前記第２転送要求に基づき、前記情報の出力ポートを判定し、判定した出力ポートに接続される、前記第２コアに接続される複数の第１コアのうちのいずれかの第１コアに、前記情報を出力する出力回路を備える、
付記１に記載の演算処理装置。
【０１６８】
（付記３）
前記第２転送要求は、前記転送先の第１コアが属する前記第２コアグループの識別情報を含み、
前記出力回路は、前記識別情報に基づき、前記情報の出力ポートを判定する、
付記２に記載の演算処理装置。
【０１６９】
（付記４）
前記第２コアは、
記憶回路を備え、前記記憶回路に対する書き込み及び読み出しを行なう演算回路を備え、
前記第２コアは、
前記情報を前記記憶回路に書き込むことを指示する前記第１転送要求を受信し、
前記記憶回路から前記情報を読み出すことを指示する前記第２転送要求を受信する、
付記１〜付記３のいずれか１項に記載の演算処理装置。
【０１７０】
（付記５）
前記演算回路は、前記第２転送要求に応じて前記記憶回路から前記情報を読み出した場合、読み出した前記情報を前記転送先の第１コアが備える記憶回路に書き込むことを指示するように前記第２転送要求を更新し、更新した前記第２転送要求と、読み出した前記情報とを、前記出力ポートから出力する、
付記４に記載の演算処理装置。
【０１７１】
（付記６）
前記第２コアは、前記複数のコアグループの各々に属する複数の第１コアのうちのいずれかの第１コアが不良のコアである場合に、当該不良のコアに代えて、当該不良のコアが属するコアグループに属するように設定される予備コアである、
付記１〜付記５のいずれか１項に記載の演算処理装置。
【０１７２】
（付記７）
前記不良のコアの検出は、前記演算処理装置のチップ診断において行なわれ、
前記チップ診断の結果に応じて設定される、前記不良のコアの有無を示す情報に基づき、前記第１制御部による前記制御及び前記第２制御部による前記制御が行なわれる、
付記６に記載の演算処理装置。
【０１７３】
（付記８）
アクセスバスを共有する複数の第１コアが属する予め設定されたコアグループを、アクセスバスごとに備える演算処理装置を備え、
前記演算処理装置は、
複数の前記コアグループの各々における１以上の第１コアとそれぞれ接続される第２コアであって、前記複数のコアグループにおいて共有される各アクセスバスを共有可能である前記第２コアと、
前記複数のコアグループの間で情報を転送するための第１転送要求に応じて、前記情報の転送元の第１コアが属する第１コアグループにおいて共有されるアクセスバスを経由して、前記転送元の第１コアから前記第２コアに前記情報を転送する制御を行なう第１制御部と、
前記複数のコアグループの間で情報を転送するための第２転送要求に応じて、前記情報の転送先の第１コアが属する第２コアグループにおいて共有されるアクセスバスを経由して、前記第２コアから前記転送先の第１コアに前記情報を転送する制御を行なう第２制御部と、を備える、
情報処理装置。
【０１７４】
（付記９）
前記第２コアは、
前記第２転送要求に基づき、前記情報の出力ポートを判定し、判定した出力ポートに接続される、前記第２コアに接続される複数の第１コアのうちのいずれかの第１コアに、前記情報を出力する出力回路を備える、
付記８に記載の情報処理装置。
【０１７５】
（付記１０）
前記第２転送要求は、前記転送先の第１コアが属する前記第２コアグループの識別情報を含み、
前記出力回路は、前記識別情報に基づき、前記情報の出力ポートを判定する、
付記９に記載の情報処理装置。
【０１７６】
（付記１１）
前記第２コアは、
記憶回路を備え、前記記憶回路に対する書き込み及び読み出しを行なう演算回路を備え、
前記第２コアは、
前記情報を前記記憶回路に書き込むことを指示する前記第１転送要求を受信し、
前記記憶回路から前記情報を読み出すことを指示する前記第２転送要求を受信する、
付記８〜付記１０のいずれか１項に記載の情報処理装置。
【０１７７】
（付記１２）
前記演算回路は、前記第２転送要求に応じて前記記憶回路から前記情報を読み出した場合、読み出した前記情報を前記転送先の第１コアが備える記憶回路に書き込むことを指示するように前記第２転送要求を更新し、更新した前記第２転送要求と、読み出した前記情報とを、前記出力ポートから出力する、
付記１１に記載の情報処理装置。
【０１７８】
（付記１３）
前記第２コアは、前記複数のコアグループの各々に属する複数の第１コアのうちのいずれかの第１コアが不良のコアである場合に、当該不良のコアに代えて、当該不良のコアが属するコアグループに属するように設定される予備コアである、
付記８〜付記１２のいずれか１項に記載の情報処理装置。
【０１７９】
（付記１４）
前記不良のコアの検出は、前記演算処理装置のチップ診断において行なわれ、
前記チップ診断の結果に応じて設定される、前記不良のコアの有無を示す情報に基づき、前記第１制御部による前記制御及び前記第２制御部による前記制御が行なわれる、
付記１３に記載の情報処理装置。
【符号の説明】
【０１８０】
１    サーバ
１０    プロセッサ
１１、１１Ａ、１１Ｂ    命令制御部
１２、１２Ａ〜１２Ｈ    データ転送制御部
１２１    転送部
１２２    分割部
１２３    制御部
１３、１３Ａ０〜１３Ａ３、１３Ｂ０〜１３Ｂ３    コア
１３Ｃ０〜１３Ｃ３、１３Ｄ０〜１３Ｄ３、１３Ｅ０〜１３Ｅ３    コア
１３Ｆ０〜１３Ｆ３、１３Ｇ０〜１３Ｇ３、１３Ｈ０〜１３Ｈ３    コア
１４、１４Ａ、１４Ｂ    冗長コア
１５    演算器
１６、１６Ａ、１６Ｂ    スイッチ
１７、１７Ａ〜１７Ｄ    メモリコントローラ
２、２Ａ〜２Ｄ    メモリ
【図１】
2020204913.tif 000003
【図２】
2020204913.tif 000004
【図３】
2020204913.tif 000005
【図４】
2020204913.tif 000006
【図５】
2020204913.tif 000007
【図６】
2020204913.tif 000008
【図７】
2020204913.tif 000009
【図８】
2020204913.tif 000010
【図９】
2020204913.tif 000011
【図１０】
2020204913.tif 000012
【図１１】
2020204913.tif 000013
【図１２】
2020204913.tif 000014
【図１３】
2020204913.tif 000015
【図１４】
2020204913.tif 000016
【図１５】
2020204913.tif 000017
【図１６】
2020204913.tif 000018
【図１７】
2020204913.tif 000019