(57)【要約】      （修正有）【課題】マルチコアプロセッサの複数コアによるプル要求とプッシュ要求の衝突を回避するメモリアクセス構成を提供する。【解決手段】演算処理装置２０は、複数の演算処理部ＰＵ＿Ａ０〜ＺＮと、複数の演算処理部に共通の、複数の演算処理部のレジスタファイルのデータ読み／書きを指示するプル命令／プッシュ命令を制御するスケジューラＳＣＨ＿Ａ〜Ｚと、スケジューラによるプル命令／プッシュ命令の要求を出力するプル要求バス／プッシュ要求バスと、プル要求に応答してレジスタファイルから読み出したプルデータをスケジューラに入力するプルデータバスを有する。各演算処理部は、プル又はプッシュ要求を自ユニットにルーティングする第１及び第２のルータと、レジスタファイルから読み出したデータをプルデータバスに伝播するプルデータ折り返しバスと、プルデータ折り返しバスかプルデータバスのいずれかを選択・出力する第1のセレクタとを有する。【選択図】図１
2019101969.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングする第２のルータと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
演算処理装置。
【請求項２】
前記スケジューラが、前記プル要求バスにプル要求を出力すると、
前記プル要求バスの読み出し先コア回路内の前記第１のルータが前記プル要求を自己の演算器ユニットにルーティングし、前記読み出し先コア回路内の演算器ユニットからプル要求先レジスタファイルのデータがプルデータとして前記プルデータ折り返しバスに出力され、前記第１のセレクタを介して前記プルデータバスに転送される、請求項１に記載の演算処理装置。
【請求項３】
前記複数の演算処理部それぞれは、さらに、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プッシュ要求バスに伝播するプル・プッシュバスと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータ折り返しバスか前記プル・プッシュバスのいずれかにルーティングする第３のルータと、
前記プル・プッシュバスか前記プッシュ要求バスのいずれかの入力を選択し、前記選択した入力を前記プッシュ要求バスに出力する第２のセレクタとを有する、請求項１に記載の演算処理装置。
【請求項４】
前記スケジューラが、前記プル要求バスにプル・プッシュ要求を出力した場合、
前記プル・プッシュ要求の読み出し先コア回路の前記演算器ユニットで読み出された読み出しデータを、前記読み出し先コア回路の前記第３のルータが、前記プル・プッシュバスにルーティングし、前記読み出し先コア回路の前記第２のセレクタが前記プル・プッシュバスの読み出しデータを選択し、前記プッシュ要求バスに出力して、後段のコア回路に転送する請求項３に記載の演算処理装置。
【請求項５】
さらに、
メインメモリへのアクセスを制御するメモリコントローラを有し、
前記スケジューラは、
前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、請求項１または３に記載の演算処理装置。
【請求項６】
さらに、
前記スケジューラに、前記プル要求を実行するプル命令と、前記プッシュ要求を実行するプッシュ命令とを発行する命令制御部を有し、
前記スケジューラは、
前記プル命令に応答して、前記プル要求を前記プル要求バスに出力し、前記プル要求に対応する前記プルデータを前記ライト要求と共に前記メモリコントローラに出力し、
前記プッシュ命令に応答して、前記リード要求を前記メモリコントローラに出力し、前記リードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、請求項５に記載の演算処理装置。
【請求項７】
前記複数の演算処理部が複数の演算処理グループに分割され、
前記複数の演算処理グループそれぞれが、前記スケジューラと、前記プル要求バスと、前記プッシュ要求バスと、前記プルデータバスを有する、請求項１に記載の演算処理装置。
【請求項８】
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
第１のルータにより、前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングし、
第２のルータにより、前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングし、
プルデータ折り返しバスにより、前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播し、
第１のセレクタにより、前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する、
演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置は、プロセッサとも称され、複数の演算処理部（プロセッサコアまたは単にコア、コア回路）と、各プロセッサコアとメインメモリとの間に設けられるメモリインターフェースとを有する。各コアは、命令をデコードして命令の実行を制御する命令制御部と、演算命令を実行する演算器ユニットとを有する。プロセッサは、例えば、１つの半導体チップに設けられた集積回路により実現される。
【０００３】
プロセッサ内に多数のコアを設け、特殊な演算命令を多数のコアで並列に実行させて演算処理を高速に実施するプロセッサがある。このようなプロセッサでは、多数のコアがそれぞれ独立してメモリアクセスを実行すると、多数のコア間でメモリインターフェースまでのバスを共有するため、多数のコアとメモリインターフェースとの間のバスのトラフィックが増大する。さらに、多数のコアとメモリインターフェースの間に設けられるバスの配線による回路資源が大きくなる。
【０００４】
以下の特許文献には、マルチコアプロセッサにおける複数のコアによるメモリアクセス構成が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００９−５３１７４６号
【特許文献２】特開２００１−９２７７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
多数のコアを搭載するプロセッサは、上記のバスの配線量の削減とトラフィック増大によるアクセススループットの低下を回避するために、例えば、複数のコア間をリング状に接続するリングバスを有する。
【０００７】
しかしながら、複数のコア間を接続するリングバスの場合、コアの演算器ユニットのレジスタファイルにデータを書き込むプッシュ要求と、コアの演算器ユニットのレジスタファイルからデータを読み出すプル要求とが、同時に発行されると、リングバス上で衝突することがある。このようなリングバス上での両リクエストの衝突を回避するためには、両リクエストの発行タイミングを適切にずらす必要があり、要求を発行するスケジュールが複雑になる。また、そのような要求発行スケジュールにより、リングバスでのデータ転送のスループットの低下をもたらす。
【０００８】
そこで，本実施の形態の一つの側面の目的は，リングバス上での要求間の衝突を抑制した演算処理装置および演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
本実施の形態の第１の側面は，それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求およびデータを出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
前記プッシュ要求バスの前記プッシュ要求およびデータを前記自己の演算器ユニットにルーティングする第２のルータと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
演算処理装置である。
【発明の効果】
【００１０】
第１の側面によれば，リングバス上での要求間の衝突を抑制する。
【図面の簡単な説明】
【００１１】
【図１】プル・プッシュ要求およびデータの伝播路の例を示す図である。
【図２】本実施の形態におけるプロセッサによるプッシュ命令と演算命令とプル命令の動作例を示すフローチャート図である。
【図３】比較例のプロセッサ内のスケジューラとコア回路のコアグループとを示す図である。
【図４】プッシュ要求およびデータの伝播路の例を示す図である。
【図５】プル要求とプルデータの伝播路の例を示す図である。
【図６】プル要求とプッシュ要求を同時に発行した場合の伝播路の例を示す図である。
【図７】本実施の形態におけるプロセッサ内のスケジューラと複数のコア回路グループとの構成例を示す図である。
【図８】プル要求信号及びプルデータ信号の伝播を説明する図である。
【図９】本実施の形態における各要求及びデータのフォーマットとレジスタファイルの構成例を示す図である。
【図１０】プル・プッシュ要求およびデータの伝播路の例を示す図である。
【図１１】本実施の形態と比較例のプル要求の処理に要する宛先コア回路PU_0〜PU_4別のクロックサイクル数を示す図である。
【発明を実施するための形態】
【００１２】
図１は、本実施の形態における演算処理装置（プロセッサ）の構成を示す図である。プロセッサ２０は、ホストプロセッサ１０に接続され、ホストプロセッサ１０から特定の演算処理を依頼され、特定の演算処理を実行するアクセラレータとして動作する。
【００１３】
プロセッサ２０は、特定の演算処理を高速処理するために、多数のプロセッサコア（演算処理部、コア回路、またはコアと称する。）PU_A0-AN〜PU_Z0-ZNを有する。この複数のコア回路は、例えば、AグループからZグループまで複数のグループに分けられている。そして、各グループ内の複数のコア回路に対して、スケジューラSCH_A〜SCH_Zがそれぞれ設けられる。但し、複数のコア回路が複数のグループに分けられてなく、単一のグループであり、単一のスケジューラが設けられる構成でもよい。
【００１４】
また、プロセッサは、ホストプロセッサ１０からの特定の演算処理のための様々な命令を受信する命令制御部２１を有する。命令制御部２１は、複数のスケジューラに対して各コア回路のためのメモリアクセス命令を発行し、さらに、複数のコア回路に対して演算命令を発行する。
【００１５】
複数のスケジューラSCH_A〜SCH_Zは、外部のメインメモリM_MEMへのアクセスを制御するメモリコントローラMEM_CONに接続され、各グループ内のコア回路のためにメインメモリへのメモリアクセス要求（リード要求及びライト要求など）をメモリコントローラに発行する。
【００１６】
さらに、各スケジューラSCH_A〜SCH_Zと各グループの複数のコア回路PU_A0-AN〜PU_Z0-ZNとの間には、各グループの複数のコア回路に接続される３つのバスが設けられる。３つのバスは、プッシュ要求・データバスPSRD_Bと、プル要求バスPLR_Bと、プルデータ・リターンバス（またはプルデータバス）PLD_RBである。これらの３つのバスを経由して、各グループ内の複数のコア回路PU_A0-AN〜PU_Z0-ZNによるメモリアクセス処理が実行される。
【００１７】
各スケジューラSCH_A〜SCH_Zは、コア回路PU内の演算器ユニットALUに設けられたレジスタファイルREGのデータ読み出しを要求するプル要求と、レジスタファイルへのデータ書き込みを要求するプッシュ要求などの要求発行制御を行う。各スケジューラは、プル要求をプル要求バスPLR_Bに出力し、要求先のコア回路内のレジスタファイルから読み出されたデータ（プルデータ）を、プルデータ・リターンバスPLD_RBから受信する。
【００１８】
また、各スケジューラは、プッシュ要求をプッシュ要求・データバス（またはプッシュ要求バス）PSRD_Bに出力し、要求先のコア回路内のレジスタファイルにデータを書き込む。プッシュ要求Push_reqと同時に対応するプッシュ用のデータPush_dataが発行される。
【００１９】
上記のように、各スケジューラは、それぞれのグループ内の複数のコア回路とメモリコントローラMEM_CONとの間のデータ転送を制御する。
【００２０】
また、上記のように、プル要求は、プル要求Pull_reqが出力されるプル要求バスPLR_Bと、そのプル要求によってレジスタファイルから読み出されたプルデータを返信するプルデータ・リターンバスPLD_RBとを介して、要求先のコア回路に対して実行される。つまり、プル要求バスとプルデータ・リターンバスとで、スケジューラから複数のコア回路をシリアルにリング状に接続するリングバスが構成される。
【００２１】
さらに、プッシュ要求は、プッシュ要求が出力されるプッシュ要求・データバスPSRD_Bを介して、要求先のコア回路に対して実行される。プッシュ要求の処理は、要求先のコア回路のレジスタファイルにデータを書き込めば完了する。したがって、プッシュ要求・データバスは、スケジューラから複数のコア回路にシリアルに接続する片道バスである。
【００２２】
以上のように、各コアグループに、スケジューラと複数のコア回路との間に、プル要求バスPLR_Bと、プルデータ・リターンバスPLD_RBと、プッシュ要求・データバスPSRD_Bの３つのバスが設けられる。そのため、多数のコア回路に対するメモリアクセスバスの回路資源量、バス配線量、を大幅に抑制することができる。
【００２３】
また、スケジューラは、複数のコア回路のためのプル要求の発行とプッシュ要求の発行をスケジューリングして実行し、さらに、メモリコントローラMEM_CONへのリード要求の発行とライト要求の発行もスケジューリングして実行する。それにより、単一のスケジューラが、複数のコア回路のためのメモリアクセス処理を制御する。そのため、複数のコア回路が独立してメモリアクセスバスを使用する場合のバス調停処理を簡略化することができる。
【００２４】
図２は、本実施の形態におけるプロセッサによるプッシュ命令と演算命令とプル命令の動作例を示すフローチャート図である。図２では、１つのコアグループPU_0-PU_Nと１つのスケジューラSCHとが示される。
【００２５】
まず、命令制御部２１は、ホストプロセッサから所定の演算処理の開始指示S10を受信すると（S11）、スケジューラSCHにプッシュ命令を実行する指示を送信する（S12）。演算処理は、通常、メインメモリ内の命令やデータの読み出し、読み出した命令によるデータの演算、そして、演算結果のメインメモリへの書込みで構成される。
【００２６】
プッシュ命令の指示に応答して、スケジューラSCHは、メモリコントローラMEM_CONにリード要求Read_reqを発行し（S13）、メモリコントローラは、メインメモリにリードアクセスしてデータを取得し、リードデータRead_dataをスケジューラSCHに応答する（S14）。
【００２７】
そこで、スケジューラSCHは、プッシュ要求・データバスPSRD_Bにプッシュ要求Push_reqをリードデータと共に出力する（S15）。このプッシュ要求は例えばコア回路PU_Nのレジスタファイル宛てとする。その場合、プッシュ要求は、プッシュ要求・データバスを伝播し、宛先のコア回路PU_Nの演算器ユニットがプッシュ要求のデータをレジスタファイルに書き込む（S16）。
【００２８】
一方、命令制御部２１は、前述のプッシュ命令の実行指示S12に続いて、コア回路PU_Nに演算命令の実行指示を送信する（S17）。それに応答して、コア回路PU_Nは、レジスタファイルに書き込まれたデータに対して演算命令を実行し（S18）、演算完了時に演算完了通知を命令制御部２１に送信する（S19,S20）。
【００２９】
次に、命令制御部２１は、スケジューラSCHにプル命令を実行する指示を送信する（S21）。スケジューラSCHは、プル命令実行指示に応答して、プル要求バスPLR_Bにコア回路PU_N宛てのプル要求Pull_reqを出力する（S22）。プル要求はプル要求バスPLR_Bを伝播し、宛先のコア回路PU_Nの演算器ユニットはプル要求に応答してレジスタファイルからデータを読み出し、プルデータ・リターンバスPLD_RBにプルデータを返信する（S23）。そして、スケジューラSCHは、メモリコントローラMEM_CONに、プルデータをメインメモリに書込む書き込み要求Write_req/dataを出力する（S24）。これに応答して、メモリコントローラMEM_CONは、メインメモリにライトアクセスを行い、プルデータをメインメモリM_MEMに書込む（S25）。
【００３０】
上記の説明で、スケジューラSCHによるコア回路とメモリコントローラとの間のデータ転送制御の概略が理解される。
【００３１】
［プロセッサの比較例］
次に、本実施の形態におけるプロセッサを説明する前に、その比較例を説明する。以下の比較例は必ずしも公知ではない。
【００３２】
図３は、比較例のプロセッサ内のスケジューラとコア回路のコアグループとを示す図である。図３には、スケジューラSCHと、複数のコア回路PU_0〜PU_Nからなるコアグループとが示される。図１と同様に、スケジューラSCHには、プル要求Pull_reqが出力されるプル要求バスPLR_Bと、プルデータPull_dataが返信されるプルデータ・リターンバスPLD_RBと、プッシュ要求Push_reqとそのデータが出力されるプッシュ要求・データバスPSRD_Bとが接続される。そして、プル要求バス、プルデータ・リターンバス、プッシュ要求・データバスは、複数のコア回路PU_0〜PU_Nそれぞれに接続され、プル要求と、プルデータと、プッシュ要求及びそのデータをそれぞれ伝播する。
【００３３】
各コア回路は、演算器及びレジスタファイルを含む演算器ユニットALU+REGを有する。レジスタファイルは一種のRAM（Random Access Memory）である。各コア回路は、プル要求バスPLR_Bのプル要求信号を自己の演算器ユニットALU+REGにルーティングする第1のルータR1と、プッシュ要求・データバスPSRD_Bのプッシュ要求信号を自己の演算器ユニットALU+REGにルーティングする第２のルータR2とを有する。さらに、各コア回路は、演算器ユニットALU+REGで読み出されたプルデータが出力されるプルデータバスPLD_Bと、プルデータバスPLD_Bとプッシュ要求・データバスPSRD_Bのいずれかの入力を選択し、選択した出力を後段のプッシュ要求・データバスPSRD_Bに出力する第２のセレクタSL2とを有する。
【００３４】
プル要求信号とプッシュ要求信号は、読み出すべきコア回路の識別子と書き込むべきコア回路も識別子をそれぞれ有し、それらの識別子に基づいて各コア回路内の第１のルータR1及び第２のルータR2がプル要求信号及びプッシュ要求信号を自己の演算器ユニットALU+REGにルーティングする。
【００３５】
スケジューラから最も遠い最終段のコア回路PU_Nには、終端モジュール３０が接続され、終端モジュール３０は、プッシュ要求・データバスPSRD_Bとプルデータ・リターンバスPLD_RBとを接続する折り返しバスTBを有し、プル要求バスPLR_Bはオープン状態にされる。
【００３６】
また、各コア回路は、プッシュ要求・データバスPSRD_Bと、プル要求バスPLR_B及びプルデータ・リターンバスPLD_RBと、プルデータバスPLD_Bとに挿入された複数のフリップフロップFFが設けられる。これらのフリップフロップFFは、各バスのパイプラインステージを構成するラッチ回路である。
【００３７】
図４は、プッシュ要求の伝播路の例を示す図である。図４（Ａ）は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REGのレジスタファイルREGにデータを書き込むプッシュ要求を発行した場合の伝播路を太線で示す。スケジューラSKは、プッシュ要求Push_reqをデータdataと共にプッシュ要求・データバスPSRD_Bに出力する。プッシュ要求・データバスを伝播してきたプッシュ要求は、コア回路PU_0内の第２のルータR2で演算器ユニットALU+REGにルーティングされ、演算器ユニットは、プッシュ要求のデータを書込み先のレジスタファイル内のレジスタに書き込む。
【００３８】
図４（Ｂ）は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REG のレジスタファイルREGにデータを書き込むプッシュ要求を発行した場合の伝播路を太線で示す。この場合、スケジューラにより出力されプッシュ要求・データバスを伝播してきたプッシュ要求は、コア回路PU_0内の第２のルータR2でプッシュ要求・データバスPSRD_B側にルーティングされコア回路PU_0を迂回し、さらに、コア回路PU_1内の第２のルータR2で演算器ユニットALU+REG にルーティングされる。そして演算器ユニットALU+REGは、プッシュ要求のデータを書込み先のレジスタファイル内のレジスタに書き込む。
【００３９】
上記のように、スケジューラSKは、複数のコア回路PU_0〜PU_Nのいずれかに共通のプッシュ要求・データバスPSRD_Bを介してプッシュ要求を出力することができる。したがって、スケジューラSCHは、スケジューリングについては、単に、複数のプッシュ要求をプッシュ要求・データバスのパイプライン回路に連続して出力するだけでよい。
【００４０】
図５は、プル要求とプルデータの伝播路の例を示す図である。図５（Ａ）は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REGのレジスタファイルからデータを読み出すプル要求を発行した場合のプル要求とプルデータの伝搬路を太線で示す。スケジューラが発行したプル要求信号は、プル要求バスPLR_Bを伝搬し、コア回路PU_0内の第１のルータR1により演算器ユニットALU+REGにルーティングされ、レジスタファイルからデータが読み出される。読み出されたプルデータは、コア回路PU_0内のプルデータバスPLD_Bを伝播し、第２のセレクタSL2を経由してプッシュ要求・データバスPSRD_Bを伝播し、コア回路PU_1〜PU_Nを迂回する。そして、プルデータは、終端モジュールの折返しバスTBを経由して、プルデータ・リターンバスPLD_RBを伝播し、スケジューラSCHに入力される。
【００４１】
図５（Ｂ）は、スケジューラSCHがコア回路PU_１内のレジスタファイルからデータを読み出すプル要求を発行した場合のプル要求とプルデータの伝搬路を太線で示す。スケジューラが発行したプル要求信号は、プル要求バスPLR_Bを伝搬し、コア回路PU_１内の第１のルータR1により演算器ユニットALU+REGにルーティングされ、演算器ユニットALU+REG内のレジスタファイルからデータが読み出される。読み出されたプルデータは、コア回路PU_１内のプルデータバスPLD_Bを伝播し、第２のセレクタSL2を経由してプッシュ要求・データバスPSRD_Bを伝播し、コア回路PU_2〜PU_Nを迂回する。そして、プルデータは、終端モジュール内の折返しバスTBを経由して、プルデータ・リターンバスPLD_RBを伝播し、スケジューラSCHに入力される。
【００４２】
上記のように、スケジューラSCHは、複数のコア回路PU_0〜PU_Nのいずれかに共通のプル要求バスPLR_Bを介してプル要求を出力することができる。したがって、スケジューラSCHは、スケジューリングについては、単に、複数のプル要求をプル要求バスのパイプライン回路に連続して出力するだけでよい。
【００４３】
コア回路内のプル要求バスPLR_Bとプッシュ要求・データバスPSRD_Bの伝播は、いずれも両バスに設けられたフリップフロップをクロックに同期して行われ、コア回路内の両バスのレイテンシは固定される。したがって、スケジューラSCHは、複数のプル要求Pull_reqをクロックに同期して順番に発行することができ、スケジューリングがシンプルである。
【００４４】
マルチコアプロセッサの性能は、主にメモリのデータ転送のスループットに依存する。したがって、スケジューラSCHとコア回路間のプル要求バス及びプッシュ要求・データバスにできるだけ多くのプル要求信号及びプッシュ要求信号を伝播させることが重要である。プル要求バス及びプッシュ要求・データバスのスループットを向上させるためには、スケジューラSCHは、プル要求信号とプッシュ要求信号を同時に発行することも許容されるのが望ましい。
【００４５】
図６は、プル要求とプッシュ要求を同時に発行した場合の伝播路の例を示す図である。図６（Ａ）は、スケジューラSCHがコア回路PU_0へのプッシュ要求とコア回路PU_1へのプル要求を同時に発行した場合の両要求の伝播を示す。この例は、図４（Ａ）と図５（Ｂ）が同時に行われた場合である。この場合、プッシュ要求信号は、コア回路PU_0内の第２のルータR2で演算器ユニットALU+REGにルーティングされ、そのレジスタファイルにプッシュデータが書き込まれる。一方、プル要求信号は、コア回路PU_0を迂回し、コア回路PU_1内の第１のルータR1で演算器ユニットALU+REGにルーティングされ、そのレジスタファイルから読み出されたプルデータは、コア回路PU_1内の第２のセレクタSL2を経由してプッシュ要求・データバスPSD_Bを伝播し、更にプッシュデータバスPSD_RBを伝播する。したがって、プッシュ要求信号とプル要求信号及びプルデータとが衝突することはない。
【００４６】
一方、図６（Ｂ）は、スケジューラSCHがコア回路PU_1へのプッシュ要求とコア回路PU_0へのプル要求を同時に発行した場合の両要求の伝播を示す。この例は、図４（Ｂ）と図５（Ａ）が同時に行われた場合である。この場合、プル要求信号は、コア回路PU_0内の第１のルータR1により演算器ユニットALU+REGにルーティングされ、読み出されたプルデータ信号は、プルデータバスPLD_Bを経由して第２のセレクタSL2に入力される。一方、プッシュ要求信号は、コア回路PU_0を迂回しコア回路PU_1内の第２のルータR2で演算器ユニットALU+REGにルーティングするため、コア回路PU_0内の第２のセレクタSL2に入力される。
【００４７】
その結果、プッシュ要求信号とプルデータ信号は、コア回路PU_0内の第２のセレクタSL2に同時に入力され、第２のセレクタSL2で競合、または第２のセレクタSL2の出力に接続されるプッシュ要求・データバスPSRD_Bで競合する。前述の通り、プッシュ要求・データバスとプル要求バスとがクロックに同期して同じレイテンシでコア回路PU_0を伝播するからである。
【００４８】
上記のプッシュ要求信号とプルデータ信号の衝突を回避するためには、スケジューラSCHがプッシュ要求信号またはプル要求信号のいずれかを所定数のクロックサイクル遅らせて発行する必要がある。そのようなスケジューリングを行うと、プッシュ要求・データバスとプル要求バスのスループットの低下を招いてしまう。
【００４９】
［本実施の形態におけるプロセッサ］
図７は、本実施の形態におけるプロセッサ内のスケジューラと複数のコア回路グループとの構成例を示す図である。図３と同様に、図７（Ａ）の構成では、スケジューラSCHには、プル要求Pull_reqが出力されるプル要求バスPLR_Bと、プルデータPull_dataが入力されるプルデータ・リターンバスPLD_RBと、プッシュ要求Push_reqとデータが出力されるプッシュ要求・データバスPSRD_Bとが接続される。そして、プル要求バス、プルデータ・リターンバス、プッシュ要求・データバスは、複数のコア回路PU_0〜PU_Nそれぞれに接続され、プル要求と、プルデータと、プッシュ要求及びそのデータをそれぞれ伝播する。
【００５０】
各コア回路は、演算器及びレジスタファイルを含む演算器ユニットALU+REGを有する。各コア回路は、プル要求バスPLR_Bのプル要求信号を自己の演算器ユニットALU+REGにルーティングする第１のルータR1と、プッシュ要求・データバスPSRD_Bのプッシュ要求信号を自己の演算器ユニットALU+REGにルーティングする第２のルータR2とを有する。ここまでの構成は、図３と同じである。
【００５１】
本実施の形態では、さらに、各コア回路は、レジスタファイルREGから読み出されたプルデータが出力されるプル・プッシュバスPP_Bと、プル・プッシュバスPP_Bとプッシュ要求・データバスPSRD_Bのいずれかの入力を選択し、選択した入力を後段のプッシュ要求・データバスPSRD_Bに出力する第２のセレクタSL2とを有する。但し、このプル・プッシュバスPP_Bと第２のセレクタSL2は、図３のプロセッサも対応するプルデータバスPLD_Bと第２のセレクタSL2を有する。
【００５２】
そして、本実施の形態のプロセッサは、各コア回路内に、自己のレジスタファイルREGから読み出したプルデータをプルデータ・リターンバスPLD_RBに伝播するプルデータ折り返しバスPLD_TBを有する。さらに、各コア回路内に、プルデータ折り返しバスPLD_TBかプルデータ・リターンバスPLD_RBのいずれかの入力を選択し、選択した入力をプルデータ・リターンバスPLD_RBに出力する第１のセレクタSL1を有する。
【００５３】
また、本実施の形態のプロセッサは、各コア回路内に、プル要求に対するプルデータをプルデータ折返しバスPLD_TBにルーティングし、後述するプル・プッシュ要求及びプルデータをプル・プッシュバスPP_Bにルーティングする第３のルータR3を有する。第３のルータR3は、後述するプル・プッシュ要求を発行するために必要である。
【００５４】
上記の通り、各コア回路内にプルデータ折り返しバスPLD_TBと第１のセレクタSL１を設けて、自己のファイルレジスタで読み出したプルデータを後段のプッシュ要求・データバスPSRD_Bに伝播させずに自身のコア回路内でプルデータ・リターンバスPLD_RBに伝播させる。そのため、最終段のコア回路PU_Nには終端モジュールの折返しバスTBが接続されず、プッシュ要求・データバスPSRD_Bはオープン状態にされ、プルデータ・リターンバスPLD_RBは低レベル（０レベル）にクリップされる。また、プル要求バスPLR_Bは、図３と同様にオープン状態にされる。
【００５５】
図７（Ｂ）には、スケジューラSCHがコア回路PU_1へのプッシュ要求とコア回路PU_0へのプル要求を同時に発行した場合の両要求の伝播を示す。この場合、本実施の形態では、プル要求信号Pull_reqは、コア回路PU_0内の第１のルータR1により演算器ユニットALU+REGにルーティングされ、読み出されたプルデータ信号は、第３のルータR3によりプルデータ折返しバスPLD_TBにルーティングされ第１のセレクタSL1に入力される。そして、第１のセレクタSL1を経由して、プルデータ・リターンバスPLD_RBを伝播し、スケジューラSCHに入力する。
【００５６】
一方、プッシュ要求信号Push_req/dataは、コア回路PU_0内の第２のルータによりプッシュ要求・データバスPSRD_Bにルーティングされてコア回路PU_0を迂回し、第２のセレクタSL2を経由し、コア回路PU_1内の第２のルータR2で演算器ユニットALU+REGにルーティングされる。そのため、プッシュ要求信号と、コア回路PU_0内のレジスタファイルで読み出されたプルデータ信号とが、第２のセレクタSL2の入力で競合することは物理的にない。つまり、スケジューラSCHは、プッシュ要求信号とプル要求信号との間の第２のセレクタ及びその出力のプッシュ要求・データバスPSRD_Bでの競合を考慮することなく、それぞれの要求信号を同時にまたは任意のタイミングで発行することができる。
【００５７】
但し、プルデータ・リターンバスPLD_RBに第１のセレクタSL1を設けたため、別のタイミングで発行したプル要求に対するプルデータどうしが、いずれかのコア回路の第１のセレクタSL1で競合する場合がある。この場合、スケジューラSCHは、プル要求間の発行タイミングを調整すればよく、プル要求とプッシュ要求間の発行タイミングの調整は必要ない。
【００５８】
前述したとおり、各コア回路内のレイテンシは全て同じである。したがって、各宛先のコア回路毎にプル要求に対するレイテンシは予測可能であり、スケジューラはそのレイテンシに基づいてプル要求バスに発行スケジュールを調整して競合を避けるようにすればよく、そのスケジュールは比較的容易である。
【００５９】
図８は、プル要求信号及びプルデータ信号の伝播を説明する図である。図８には、図９（Ａ）で示したプル要求先のコア回路PU_xでのプル要求信号及びプルデータ信号の伝播経路と、コア回路PU_x内の第１のルータR1、演算器ユニットALU+REG、第３のルータR3、及び第１のセレクタSL1の動作を示すフローチャートとが示される。
【００６０】
図９は、本実施の形態における各要求及びデータのフォーマットとレジスタファイルの構成例を示す図である。図９を説明した後に図８のフローチャートについて説明する。
【００６１】
プッシュ要求Push_reqのフォーマットは、N1+1ビットのオペコードOPCODEと、N2+1ビットのレジスタファイルアドレスRF_ADRSと、N3+1ビットのデータ長LENと、N4+1ビットのコア識別子CORE_ENBLと、N5+1ビットのレジスタファイル識別子RF_ENBLとを有する。
【００６２】
プッシュ要求Push_reqのフォーマットも、N1+1ビットのオペコードOPCODEと、N2+1ビットのレジスタファイルアドレスRF_ADRSと、N3+1ビットのデータ長LENと、N4+1ビットのコア識別子CORE_ENBLと、N5+1ビットのレジスタファイル識別子RF_ENBLとを有する。
【００６３】
プル・プッシュ要求PP_reqのフォーマットは、N1+1ビットのオペコードOPCODEと、N2+1ビットのレジスタファイルアドレスRF_ADRSと、N3+1ビットのターゲットのコア識別子T_CORE_ENBLと、N4+1ビットのソースのコア識別子CORE_ENBLと、N5+1ビットのレジスタファイル識別子RF_ENBLとを有する。ソースのコアは、プル・プッシュ要求の読みだし先コア回路であり、ターゲットのコアは、プル・プッシュ要求のプルデータの書き込み先コア回路である。つまり、プル・プッシュ要求は、あるコア回路のレジスタファイルのデータを読み出し、その隣のまたはその後段のコア回路のレジスタファイルに読みだしたデータを書き込む要求である。
【００６４】
プッシュデータおよびプルデータdataのフォーマットは、Nb+1ビットのデータDATAを有する。このビット数は、例えば、一つのレジスタに書込めるデータ量の整数倍の容量である。したがって、プル要求及びプッシュ要求のデータ長LENで指定される容量のデータがプッシュデータ及びプルデータに格納される。
【００６５】
上記のオペコードOPCODEは、プッシュ要求、プル要求及びその他の要求、例えば、プル・プッシュ要求などの命令を示す。レジスタファイルアドレスRF_ADRSは、RAMなどのレジスタファイル内のレジスタを特定するアドレスである。データ長LENは、プル要求が求めるデータの長さまたはプッシュ要求で書き込むデータの長さである。このデータ長により、プッシュ要求やプル要求に後続して伝播されるプッシュデータまたはプルデータ内のデータ量を知ることができる。コア識別子CORE_ENBLは、複数のコア回路のいずれかを示すコア番号である。また、レジスタファイル識別子RF_ENBLは、ある演算器ALU内に設けられた複数のレジスタファイルのいずれかを識別するレジスタファイル番号である。
【００６６】
N4+1ビットのコア識別子CORE_ENBLは、N4+1個のコア回路のうち要求先コア回路に対応するビットが「１」にセットされる。例えば、プッシュ要求がデータを全コア回路のレジスタファイルにブロードキャスト転送する場合、全ビットが「１」にセットされる。また、一部のコア回路のレジスタファイルにデータを転送する場合、一部のコア回路に対応するビットが「１」にセットされる。
【００６７】
そして、各演算器内のレジスタファイルREGは、レジスタファイル識別子RF_ENBLのビット数N5+1と同じ数N5+1個のレジスタファイルRF_ENBL_00〜RF_ENBL_N5を有する。各レジスタファイルは、レジスタファイルアドレスRF_ADRSのビット数N2+1のべき乗（２N2+1）個のレジスタファイルを有する。したがって、プル要求先またはプッシュ要求先のレジスタファイルは、レジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSとにより特定される。
【００６８】
そして、プッシュ要求・データバスPSRD_Bには、プッシュ要求信号とプッシュデータ信号とがシリアルに出力される。また、プル要求バスPLR_Bには、プル要求信号が出力される。そして、レジスタファイルREGで読みだされたプルデータは、プル要求信号に後続してプルデータ折返しバスPLD_TBに出力される。また、読み出されたプルデータは、第１のセレクタSL2により、プル要求信号に後続してプルデータ・リターンバスPLD_RBに出力される。
【００６９】
上記のとおり、プッシュ要求・データバスPSRD_Bには、プッシュ要求Push_reqとプッシュデータdataがシリアルに出力されるので、プッシュ要求またはプッシュデータのうち長いほうのビット数のバス幅を有する。プル要求バスPLR_Bは、プル要求のビット数のバス幅を有する。そして、プルデータ折り返しバスPLD_TBとプルデータ・リターンバスPLD_RBは、プル要求とプルデータがシリアルに出力されるので、プル要求またはプルデータのうち長いほうのビット数のバス幅を有する。
【００７０】
図８に戻り、プル要求に対するコア回路内での制御について説明する。スケジューラSCHによりコア回路PU_xのデータを読み出すプル要求信号Pull_reqがプル要求バスPLR_Bに出力されると、コア回路PU_x内の第１のルータR1は、プル要求内のコア識別子CORE_ENBLが自身のコア回路を示しているか否か判定し、判定結果はYESになる（S30のYES）。この判定結果に基づいて、第１のルータR1はプル要求信号を自身の演算器ユニットALU+REGにルーティングする（S32）。自身のコア回路を示していない場合（S30のNO）、第１のルータR1はプル要求信号をプル要求バスPLR_Bにルーティングして後段のコア回路に転送する（S31）。
【００７１】
次に、コア回路PU_x内の演算器ALUは、要求信号のオペコードOPCODE,レジスタファイルアドレスRF_ADRS、データ長LEN、レジスタファイル識別子RF_ENBLに基づいて、読み出すべきレジスタを決定する（S33）。そして、演算器ALUは、決定したレジスタのデータを読み出して出力する（S34）。この読み出したデータは、プルデータフォーマットに格納され、プル要求信号に後続して出力される。
【００７２】
そして、第３のルータR3は、要求信号のオペコードがPull命令か否か判定し（S35）、Pull命令の場合（S35のYES）、プル要求信号とプルデータとをプルデータ折り返しバスPLD_TBにルーティングし、第１のセレクタSL1に転送する（S37）。Pull命令以外の場合（S35のNO）、第３のルータR3は、要求信号とプルデータ信号とをシリアルにプル・プッシュバスPP_Bに転送する（S36）。
【００７３】
最後に、第1のセレクタSL1は、自身のコア回路のプルデータ折り返しバスPLD_TBまたは後段のコア回路からのプルデータ・リターンバスPLD_RBのいずれかの入力を選択し（S38）、プルデータ・リターンバスPLD_RBにプル要求信号とプルデータとを連続して出力する（S39）。これにより、プル要求信号とプルデータは前段のコア回路またはスケジューラSCHに転送される。
【００７４】
［プル・プッシュ要求］
図１０は、プル・プッシュ要求の伝播路の例を示す図である。スケジューラSCHは、プル要求バスPLR_Bにプル・プッシュ要求信号を出力する。図９に示したとおり、プル・プッシュ要求信号には、ターゲットコア番号T_CORE_ENBLとソースコア番号S_CORE_ENBLとが含まれる。ここでは、ターゲットコアはPU_1、ソースコアはPU_0と仮定する。
【００７５】
コア回路PU_0の第1のルータR1は、要求信号のソースコア番号が自身のコア回路PU_0であることを検出し、自身の演算器ユニットALU+REGに要求信号をルーティングする。そして、演算器ALUは、要求信号内のレジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSに基づいて、レジスタファイル内の読み出し先レジスタを特定し、読み出し先レジスタのデータを出力する。
【００７６】
次に、第３のルータR3は、要求信号のオペコードがプル・プッシュ命令であることに基づいて、要求信号とプルデータ信号をプル・プッシュバスPP_Bにルーティングする。そして、第２のセレクタSL2が、要求信号とプルデータ信号をプッシュ要求・データバスPSRD_Bに出力する。
【００７７】
コア回路PU_1内の第２のルータR2は、要求信号のターゲットコア識別子T_CORE_ENBLが自身のコア番号であることに基づいて、要求信号とプルデータ信号を自身の演算器ユニットALU+REGにルーティングする。そして、演算器ALUは、要求信号内のレジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSに基づいて、レジスタファイル内の書込み先レジスタにプルデータを書き込む。
【００７８】
図１１は、本実施の形態と比較例のプル要求の処理に要する宛先コア回路PU_0〜PU_4別のクロックサイクル数を示す図である。仮に、各コア回路内の演算器ユニットALU+REG内のクロックサイクル数を２０、演算ユニット外のサイクル数を３、コア回路数を５個として見積もる。
【００７９】
本実施例では、宛先コア回路がPU_0の場合、プル要求の処理に要するサイクル数は２３、比較例では、５個のコア回路を経由してプルデータが返信されるので、プル要求の処理に要するサイクル数は２３×５個＝１１５となる。同様に、宛先コア回路がPU_1の場合、実施例ではプル要求の処理に要するサイクル数は２３×２＝４６、比較例では１１５となる。以下同様にして、以下のとおりである。
宛先コア回路がPU_2の場合、実施例２３×３＝６９、比較例１１５
宛先コア回路がPU_3の場合、実施例２３×４＝９２、比較例１１５
宛先コア回路がPU_4の場合、実施例２３×５＝１１５、比較例１１５
したがって、全てのコア回路に対するプル要求に要するサイクル数は、実施例が３４５、比較例が５７５となり、実施例は比較例の６０％のサイクル数となり、４０％のサイクル数少なくなる。
【００８０】
以上のとおり、本実施の形態によれば、複数のコア回路を有するコアグループとスケジューラ回路SCHとの間に、コアグループ内の複数のコア回路にそれぞれ接続されるプル要求バスと、プッシュ要求・データバスと、プル要求でコア回路内の演算器ユニットのファイルレジスタから読み出したプルデータを返信するプルデータ・リターンバスとを設け、さらに、各コア回路内にプル要求のプルデータをプルデータ・リターンバスに転送するプルデータ折り返しバスPLD_TBと、第１のセレクタSL1とを設ける。
【００８１】
この構成により、コア回路内の演算器ユニットから出力されるプルデータと、プッシュ要求・データバスを伝播するプッシュ要求とが第２のセレクタSL2で衝突することを防止できる。それにより、スケジューラ回路SCHによるプル要求とプッシュ要求の発行タイミングを、コア回路内での衝突を避けるよう調整する必要がなくなる。また、プルデータを読み出したコア回路のプルデータ折り返しバスによりプルデータ・リターンバスに転送できるので、プル要求に要するレイテンシを短くできる。
【００８２】
以上の実施の形態をまとめると，次の付記のとおりである。
【００８３】
（付記１）
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングする第２のルータと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
演算処理装置。
【００８４】
（付記２）
前記スケジューラが、前記プル要求バスにプル要求を出力すると、
前記プル要求バスの読み出し先コア回路内の前記第１のルータが前記プル要求を自己の演算器ユニットにルーティングし、前記読み出し先コア回路内の演算器ユニットからプル要求先レジスタファイルのデータがプルデータとして前記プルデータ折り返しバスに出力され、前記第１のセレクタを介して前記プルデータバスに転送される、付記１に記載の演算処理装置。
【００８５】
（付記３）
前記複数の演算処理部それぞれは、さらに、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プッシュ要求バスに伝播するプル・プッシュバスと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータ折り返しバスか前記プル・プッシュバスのいずれかにルーティングする第３のルータと、
前記プル・プッシュバスか前記プッシュ要求バスのいずれかの入力を選択し、前記選択した入力を前記プッシュ要求バスに出力する第２のセレクタとを有する、付記１に記載の演算処理装置。
【００８６】
（付記４）
前記スケジューラが、前記プル要求バスにプル・プッシュ要求を出力した場合、
前記プル・プッシュ要求の読み出し先コア回路の前記演算器ユニットで読み出された読み出しデータを、前記読み出し先コア回路の前記第３のルータが、前記プル・プッシュバスにルーティングし、前記読み出し先コア回路の前記第２のセレクタが前記プル・プッシュバスの読み出しデータを選択し、前記プッシュ要求バスに出力して、後段のコア回路に転送する、付記３に記載の演算処理装置。
【００８７】
（付記５）
さらに、
メインメモリへのアクセスを制御するメモリコントローラを有し、
前記スケジューラは、
前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、付記１または３に記載の演算処理装置。
【００８８】
（付記６）
さらに、
前記スケジューラに、前記プル要求を実行するプル命令と、前記プッシュ要求を実行するプッシュ命令とを発行する命令制御部を有し、
前記スケジューラは、
前記プル命令に応答して、前記プル要求を前記プル要求バスに出力し、前記プル要求に対応する前記プルデータを前記ライト要求と共に前記メモリコントローラに出力し、
前記プッシュ命令に応答して、前記リード要求を前記メモリコントローラに出力し、前記リードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、付記５に記載の演算処理装置。
【００８９】
（付記７）
前記複数の演算処理部が複数の演算処理グループに分割され、
前記複数の演算処理グループそれぞれが、前記スケジューラと、前記プル要求バスと、前記プッシュ要求バスと、前記プルデータバスを有する、付記１に記載の演算処理装置。
【００９０】
（付記８）
さらに、
メインメモリへのアクセスを制御するメモリコントローラを有し、
前記複数の演算処理グループそれぞれのスケジューラは、
前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに送出する、付記７に記載の演算処理装置。
【００９１】
（付記９）
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
第１のルータにより、前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングし、
第２のルータにより、前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングし、
プルデータ折り返しバスにより、前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播し、
第１のセレクタにより、前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する、
演算処理装置の制御方法。
【符号の説明】
【００９２】
PLR_B：プル要求バス
PSRD_B：プッシュ要求・データバス、プッシュ要求バス
PLD_RB：プルデータ・リターンバス、プルデータバス
PLD_TB：プルデータ折り返しバス
PP_B：プル・プッシュバス
R1：第１ルータ
R2：第２ルータ
R3：第３ルータ
SL1：第１セレクタ
SL2：第２セレクタ
PU：プロセッサコア、コア、コア回路、演算処理部
ALU：演算器
REG：レジスタファイル（複数のレジスタ）
SCH：スケジューラ、スケジューラ回路
２０：プロセッサ、プロセッサチップ、演算処理装置
【図１】
2019101969.tif 000003
【図２】
2019101969.tif 000004
【図３】
2019101969.tif 000005
【図４】
2019101969.tif 000006
【図５】
2019101969.tif 000007
【図６】
2019101969.tif 000008
【図７】
2019101969.tif 000009
【図８】
2019101969.tif 000010
【図９】
2019101969.tif 000011
【図１０】
2019101969.tif 000012
【図１１】
2019101969.tif 000013