JP6978670B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP6978670B2
JP6978670B2 JP2017235211A JP2017235211A JP6978670B2 JP 6978670 B2 JP6978670 B2 JP 6978670B2 JP 2017235211 A JP2017235211 A JP 2017235211A JP 2017235211 A JP2017235211 A JP 2017235211A JP 6978670 B2 JP6978670 B2 JP 6978670B2
Authority
JP
Japan
Prior art keywords
pull
request
bus
data
push
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017235211A
Other languages
English (en)
Other versions
JP2019101969A (ja
Inventor
淳 川原
誠之 岡田
雅紀 日下田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017235211A priority Critical patent/JP6978670B2/ja
Priority to US16/174,333 priority patent/US11550576B2/en
Publication of JP2019101969A publication Critical patent/JP2019101969A/ja
Application granted granted Critical
Publication of JP6978670B2 publication Critical patent/JP6978670B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

本発明は,演算処理装置および演算処理装置の制御方法に関する。
演算処理装置は、プロセッサとも称され、複数の演算処理部(プロセッサコアまたは単にコア、コア回路)と、各プロセッサコアとメインメモリとの間に設けられるメモリインターフェースとを有する。各コアは、命令をデコードして命令の実行を制御する命令制御部と、演算命令を実行する演算器ユニットとを有する。プロセッサは、例えば、1つの半導体チップに設けられた集積回路により実現される。
プロセッサ内に多数のコアを設け、特殊な演算命令を多数のコアで並列に実行させて演算処理を高速に実施するプロセッサがある。このようなプロセッサでは、多数のコアがそれぞれ独立してメモリアクセスを実行すると、多数のコア間でメモリインターフェースまでのバスを共有するため、多数のコアとメモリインターフェースとの間のバスのトラフィックが増大する。さらに、多数のコアとメモリインターフェースの間に設けられるバスの配線による回路資源が大きくなる。
以下の特許文献には、マルチコアプロセッサにおける複数のコアによるメモリアクセス構成が開示されている。
特表2009−531746号 特開2001−92772号公報
多数のコアを搭載するプロセッサは、上記のバスの配線量の削減とトラフィック増大によるアクセススループットの低下を回避するために、例えば、複数のコア間をリング状に接続するリングバスを有する。
しかしながら、複数のコア間を接続するリングバスの場合、コアの演算器ユニットのレジスタファイルにデータを書き込むプッシュ要求と、コアの演算器ユニットのレジスタファイルからデータを読み出すプル要求とが、同時に発行されると、リングバス上で衝突することがある。このようなリングバス上での両リクエストの衝突を回避するためには、両リクエストの発行タイミングを適切にずらす必要があり、要求を発行するスケジュールが複雑になる。また、そのような要求発行スケジュールにより、リングバスでのデータ転送のスループットの低下をもたらす。
そこで,本実施の形態の一つの側面の目的は,リングバス上での要求間の衝突を抑制した演算処理装置および演算処理装置の制御方法を提供することにある。
本実施の形態の第1の側面は,それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求およびデータを出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
前記プッシュ要求バスの前記プッシュ要求およびデータを前記自己の演算器ユニットにルーティングする第2のルータと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
演算処理装置である。
第1の側面によれば,リングバス上での要求間の衝突を抑制する。
プル・プッシュ要求およびデータの伝播路の例を示す図である。 本実施の形態におけるプロセッサによるプッシュ命令と演算命令とプル命令の動作例を示すフローチャート図である。 比較例のプロセッサ内のスケジューラとコア回路のコアグループとを示す図である。 プッシュ要求およびデータの伝播路の例を示す図である。 プル要求とプルデータの伝播路の例を示す図である。 プル要求とプッシュ要求を同時に発行した場合の伝播路の例を示す図である。 本実施の形態におけるプロセッサ内のスケジューラと複数のコア回路グループとの構成例を示す図である。 プル要求信号及びプルデータ信号の伝播を説明する図である。 本実施の形態における各要求及びデータのフォーマットとレジスタファイルの構成例を示す図である。 プル・プッシュ要求およびデータの伝播路の例を示す図である。 本実施の形態と比較例のプル要求の処理に要する宛先コア回路PU_0〜PU_4別のクロックサイクル数を示す図である。
図1は、本実施の形態における演算処理装置(プロセッサ)の構成を示す図である。プロセッサ20は、ホストプロセッサ10に接続され、ホストプロセッサ10から特定の演算処理を依頼され、特定の演算処理を実行するアクセラレータとして動作する。
プロセッサ20は、特定の演算処理を高速処理するために、多数のプロセッサコア(演算処理部、コア回路、またはコアと称する。)PU_A0-AN〜PU_Z0-ZNを有する。この複数のコア回路は、例えば、AグループからZグループまで複数のグループに分けられている。そして、各グループ内の複数のコア回路に対して、スケジューラSCH_A〜SCH_Zがそれぞれ設けられる。但し、複数のコア回路が複数のグループに分けられてなく、単一のグループであり、単一のスケジューラが設けられる構成でもよい。
また、プロセッサは、ホストプロセッサ10からの特定の演算処理のための様々な命令を受信する命令制御部21を有する。命令制御部21は、複数のスケジューラに対して各コア回路のためのメモリアクセス命令を発行し、さらに、複数のコア回路に対して演算命令を発行する。
複数のスケジューラSCH_A〜SCH_Zは、外部のメインメモリM_MEMへのアクセスを制御するメモリコントローラMEM_CONに接続され、各グループ内のコア回路のためにメインメモリへのメモリアクセス要求(リード要求及びライト要求など)をメモリコントローラに発行する。
さらに、各スケジューラSCH_A〜SCH_Zと各グループの複数のコア回路PU_A0-AN〜PU_Z0-ZNとの間には、各グループの複数のコア回路に接続される3つのバスが設けられる。3つのバスは、プッシュ要求・データバスPSRD_Bと、プル要求バスPLR_Bと、プルデータ・リターンバス(またはプルデータバス)PLD_RBである。これらの3つのバスを経由して、各グループ内の複数のコア回路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の3つのバスが設けられる。そのため、多数のコア回路に対するメモリアクセスバスの回路資源量、バス配線量、を大幅に抑制することができる。
また、スケジューラは、複数のコア回路のためのプル要求の発行とプッシュ要求の発行をスケジューリングして実行し、さらに、メモリコントローラMEM_CONへのリード要求の発行とライト要求の発行もスケジューリングして実行する。それにより、単一のスケジューラが、複数のコア回路のためのメモリアクセス処理を制御する。そのため、複数のコア回路が独立してメモリアクセスバスを使用する場合のバス調停処理を簡略化することができる。
図2は、本実施の形態におけるプロセッサによるプッシュ命令と演算命令とプル命令の動作例を示すフローチャート図である。図2では、1つのコアグループPU_0-PU_Nと1つのスケジューラSCHとが示される。
まず、命令制御部21は、ホストプロセッサから所定の演算処理の開始指示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)。
一方、命令制御部21は、前述のプッシュ命令の実行指示S12に続いて、コア回路PU_Nに演算命令の実行指示を送信する(S17)。それに応答して、コア回路PU_Nは、レジスタファイルに書き込まれたデータに対して演算命令を実行し(S18)、演算完了時に演算完了通知を命令制御部21に送信する(S19,S20)。
次に、命令制御部21は、スケジューラ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によるコア回路とメモリコントローラとの間のデータ転送制御の概略が理解される。
[プロセッサの比較例]
次に、本実施の形態におけるプロセッサを説明する前に、その比較例を説明する。以下の比較例は必ずしも公知ではない。
図3は、比較例のプロセッサ内のスケジューラとコア回路のコアグループとを示す図である。図3には、スケジューラSCHと、複数のコア回路PU_0〜PU_Nからなるコアグループとが示される。図1と同様に、スケジューラ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にルーティングする第2のルータR2とを有する。さらに、各コア回路は、演算器ユニットALU+REGで読み出されたプルデータが出力されるプルデータバスPLD_Bと、プルデータバスPLD_Bとプッシュ要求・データバスPSRD_Bのいずれかの入力を選択し、選択した出力を後段のプッシュ要求・データバスPSRD_Bに出力する第2のセレクタSL2とを有する。
プル要求信号とプッシュ要求信号は、読み出すべきコア回路の識別子と書き込むべきコア回路も識別子をそれぞれ有し、それらの識別子に基づいて各コア回路内の第1のルータR1及び第2のルータR2がプル要求信号及びプッシュ要求信号を自己の演算器ユニットALU+REGにルーティングする。
スケジューラから最も遠い最終段のコア回路PU_Nには、終端モジュール30が接続され、終端モジュール30は、プッシュ要求・データバスPSRD_Bとプルデータ・リターンバスPLD_RBとを接続する折り返しバスTBを有し、プル要求バスPLR_Bはオープン状態にされる。
また、各コア回路は、プッシュ要求・データバスPSRD_Bと、プル要求バスPLR_B及びプルデータ・リターンバスPLD_RBと、プルデータバスPLD_Bとに挿入された複数のフリップフロップFFが設けられる。これらのフリップフロップFFは、各バスのパイプラインステージを構成するラッチ回路である。
図4は、プッシュ要求の伝播路の例を示す図である。図4(A)は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REGのレジスタファイルREGにデータを書き込むプッシュ要求を発行した場合の伝播路を太線で示す。スケジューラSKは、プッシュ要求Push_reqをデータdataと共にプッシュ要求・データバスPSRD_Bに出力する。プッシュ要求・データバスを伝播してきたプッシュ要求は、コア回路PU_0内の第2のルータR2で演算器ユニットALU+REGにルーティングされ、演算器ユニットは、プッシュ要求のデータを書込み先のレジスタファイル内のレジスタに書き込む。
図4(B)は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REG のレジスタファイルREGにデータを書き込むプッシュ要求を発行した場合の伝播路を太線で示す。この場合、スケジューラにより出力されプッシュ要求・データバスを伝播してきたプッシュ要求は、コア回路PU_0内の第2のルータR2でプッシュ要求・データバスPSRD_B側にルーティングされコア回路PU_0を迂回し、さらに、コア回路PU_1内の第2のルータR2で演算器ユニットALU+REG にルーティングされる。そして演算器ユニットALU+REGは、プッシュ要求のデータを書込み先のレジスタファイル内のレジスタに書き込む。
上記のように、スケジューラSKは、複数のコア回路PU_0〜PU_Nのいずれかに共通のプッシュ要求・データバスPSRD_Bを介してプッシュ要求を出力することができる。したがって、スケジューラSCHは、スケジューリングについては、単に、複数のプッシュ要求をプッシュ要求・データバスのパイプライン回路に連続して出力するだけでよい。
図5は、プル要求とプルデータの伝播路の例を示す図である。図5(A)は、スケジューラSCHがコア回路PU_0内の演算器ユニットALU+REGのレジスタファイルからデータを読み出すプル要求を発行した場合のプル要求とプルデータの伝搬路を太線で示す。スケジューラが発行したプル要求信号は、プル要求バスPLR_Bを伝搬し、コア回路PU_0内の第1のルータR1により演算器ユニットALU+REGにルーティングされ、レジスタファイルからデータが読み出される。読み出されたプルデータは、コア回路PU_0内のプルデータバスPLD_Bを伝播し、第2のセレクタSL2を経由してプッシュ要求・データバスPSRD_Bを伝播し、コア回路PU_1〜PU_Nを迂回する。そして、プルデータは、終端モジュールの折返しバスTBを経由して、プルデータ・リターンバスPLD_RBを伝播し、スケジューラSCHに入力される。
図5(B)は、スケジューラSCHがコア回路PU_1内のレジスタファイルからデータを読み出すプル要求を発行した場合のプル要求とプルデータの伝搬路を太線で示す。スケジューラが発行したプル要求信号は、プル要求バスPLR_Bを伝搬し、コア回路PU_1内の第1のルータR1により演算器ユニットALU+REGにルーティングされ、演算器ユニットALU+REG内のレジスタファイルからデータが読み出される。読み出されたプルデータは、コア回路PU_1内のプルデータバスPLD_Bを伝播し、第2のセレクタ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は、プル要求信号とプッシュ要求信号を同時に発行することも許容されるのが望ましい。
図6は、プル要求とプッシュ要求を同時に発行した場合の伝播路の例を示す図である。図6(A)は、スケジューラSCHがコア回路PU_0へのプッシュ要求とコア回路PU_1へのプル要求を同時に発行した場合の両要求の伝播を示す。この例は、図4(A)と図5(B)が同時に行われた場合である。この場合、プッシュ要求信号は、コア回路PU_0内の第2のルータR2で演算器ユニットALU+REGにルーティングされ、そのレジスタファイルにプッシュデータが書き込まれる。一方、プル要求信号は、コア回路PU_0を迂回し、コア回路PU_1内の第1のルータR1で演算器ユニットALU+REGにルーティングされ、そのレジスタファイルから読み出されたプルデータは、コア回路PU_1内の第2のセレクタSL2を経由してプッシュ要求・データバスPSD_Bを伝播し、更にプッシュデータバスPSD_RBを伝播する。したがって、プッシュ要求信号とプル要求信号及びプルデータとが衝突することはない。
一方、図6(B)は、スケジューラSCHがコア回路PU_1へのプッシュ要求とコア回路PU_0へのプル要求を同時に発行した場合の両要求の伝播を示す。この例は、図4(B)と図5(A)が同時に行われた場合である。この場合、プル要求信号は、コア回路PU_0内の第1のルータR1により演算器ユニットALU+REGにルーティングされ、読み出されたプルデータ信号は、プルデータバスPLD_Bを経由して第2のセレクタSL2に入力される。一方、プッシュ要求信号は、コア回路PU_0を迂回しコア回路PU_1内の第2のルータR2で演算器ユニットALU+REGにルーティングするため、コア回路PU_0内の第2のセレクタSL2に入力される。
その結果、プッシュ要求信号とプルデータ信号は、コア回路PU_0内の第2のセレクタSL2に同時に入力され、第2のセレクタSL2で競合、または第2のセレクタSL2の出力に接続されるプッシュ要求・データバスPSRD_Bで競合する。前述の通り、プッシュ要求・データバスとプル要求バスとがクロックに同期して同じレイテンシでコア回路PU_0を伝播するからである。
上記のプッシュ要求信号とプルデータ信号の衝突を回避するためには、スケジューラSCHがプッシュ要求信号またはプル要求信号のいずれかを所定数のクロックサイクル遅らせて発行する必要がある。そのようなスケジューリングを行うと、プッシュ要求・データバスとプル要求バスのスループットの低下を招いてしまう。
[本実施の形態におけるプロセッサ]
図7は、本実施の形態におけるプロセッサ内のスケジューラと複数のコア回路グループとの構成例を示す図である。図3と同様に、図7(A)の構成では、スケジューラSCHには、プル要求Pull_reqが出力されるプル要求バスPLR_Bと、プルデータPull_dataが入力されるプルデータ・リターンバスPLD_RBと、プッシュ要求Push_reqとデータが出力されるプッシュ要求・データバスPSRD_Bとが接続される。そして、プル要求バス、プルデータ・リターンバス、プッシュ要求・データバスは、複数のコア回路PU_0〜PU_Nそれぞれに接続され、プル要求と、プルデータと、プッシュ要求及びそのデータをそれぞれ伝播する。
各コア回路は、演算器及びレジスタファイルを含む演算器ユニットALU+REGを有する。各コア回路は、プル要求バスPLR_Bのプル要求信号を自己の演算器ユニットALU+REGにルーティングする第1のルータR1と、プッシュ要求・データバスPSRD_Bのプッシュ要求信号を自己の演算器ユニットALU+REGにルーティングする第2のルータR2とを有する。ここまでの構成は、図3と同じである。
本実施の形態では、さらに、各コア回路は、レジスタファイルREGから読み出されたプルデータが出力されるプル・プッシュバスPP_Bと、プル・プッシュバスPP_Bとプッシュ要求・データバスPSRD_Bのいずれかの入力を選択し、選択した入力を後段のプッシュ要求・データバスPSRD_Bに出力する第2のセレクタSL2とを有する。但し、このプル・プッシュバスPP_Bと第2のセレクタSL2は、図3のプロセッサも対応するプルデータバスPLD_Bと第2のセレクタSL2を有する。
そして、本実施の形態のプロセッサは、各コア回路内に、自己のレジスタファイルREGから読み出したプルデータをプルデータ・リターンバスPLD_RBに伝播するプルデータ折り返しバスPLD_TBを有する。さらに、各コア回路内に、プルデータ折り返しバスPLD_TBかプルデータ・リターンバスPLD_RBのいずれかの入力を選択し、選択した入力をプルデータ・リターンバスPLD_RBに出力する第1のセレクタSL1を有する。
また、本実施の形態のプロセッサは、各コア回路内に、プル要求に対するプルデータをプルデータ折返しバスPLD_TBにルーティングし、後述するプル・プッシュ要求及びプルデータをプル・プッシュバスPP_Bにルーティングする第3のルータR3を有する。第3のルータR3は、後述するプル・プッシュ要求を発行するために必要である。
上記の通り、各コア回路内にプルデータ折り返しバスPLD_TBと第1のセレクタSL1を設けて、自己のファイルレジスタで読み出したプルデータを後段のプッシュ要求・データバスPSRD_Bに伝播させずに自身のコア回路内でプルデータ・リターンバスPLD_RBに伝播させる。そのため、最終段のコア回路PU_Nには終端モジュールの折返しバスTBが接続されず、プッシュ要求・データバスPSRD_Bはオープン状態にされ、プルデータ・リターンバスPLD_RBは低レベル(0レベル)にクリップされる。また、プル要求バスPLR_Bは、図3と同様にオープン状態にされる。
図7(B)には、スケジューラSCHがコア回路PU_1へのプッシュ要求とコア回路PU_0へのプル要求を同時に発行した場合の両要求の伝播を示す。この場合、本実施の形態では、プル要求信号Pull_reqは、コア回路PU_0内の第1のルータR1により演算器ユニットALU+REGにルーティングされ、読み出されたプルデータ信号は、第3のルータR3によりプルデータ折返しバスPLD_TBにルーティングされ第1のセレクタSL1に入力される。そして、第1のセレクタSL1を経由して、プルデータ・リターンバスPLD_RBを伝播し、スケジューラSCHに入力する。
一方、プッシュ要求信号Push_req/dataは、コア回路PU_0内の第2のルータによりプッシュ要求・データバスPSRD_Bにルーティングされてコア回路PU_0を迂回し、第2のセレクタSL2を経由し、コア回路PU_1内の第2のルータR2で演算器ユニットALU+REGにルーティングされる。そのため、プッシュ要求信号と、コア回路PU_0内のレジスタファイルで読み出されたプルデータ信号とが、第2のセレクタSL2の入力で競合することは物理的にない。つまり、スケジューラSCHは、プッシュ要求信号とプル要求信号との間の第2のセレクタ及びその出力のプッシュ要求・データバスPSRD_Bでの競合を考慮することなく、それぞれの要求信号を同時にまたは任意のタイミングで発行することができる。
但し、プルデータ・リターンバスPLD_RBに第1のセレクタSL1を設けたため、別のタイミングで発行したプル要求に対するプルデータどうしが、いずれかのコア回路の第1のセレクタSL1で競合する場合がある。この場合、スケジューラSCHは、プル要求間の発行タイミングを調整すればよく、プル要求とプッシュ要求間の発行タイミングの調整は必要ない。
前述したとおり、各コア回路内のレイテンシは全て同じである。したがって、各宛先のコア回路毎にプル要求に対するレイテンシは予測可能であり、スケジューラはそのレイテンシに基づいてプル要求バスに発行スケジュールを調整して競合を避けるようにすればよく、そのスケジュールは比較的容易である。
図8は、プル要求信号及びプルデータ信号の伝播を説明する図である。図8には、図9(A)で示したプル要求先のコア回路PU_xでのプル要求信号及びプルデータ信号の伝播経路と、コア回路PU_x内の第1のルータR1、演算器ユニットALU+REG、第3のルータR3、及び第1のセレクタSL1の動作を示すフローチャートとが示される。
図9は、本実施の形態における各要求及びデータのフォーマットとレジスタファイルの構成例を示す図である。図9を説明した後に図8のフローチャートについて説明する。
プッシュ要求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個のコア回路のうち要求先コア回路に対応するビットが「1」にセットされる。例えば、プッシュ要求がデータを全コア回路のレジスタファイルにブロードキャスト転送する場合、全ビットが「1」にセットされる。また、一部のコア回路のレジスタファイルにデータを転送する場合、一部のコア回路に対応するビットが「1」にセットされる。
そして、各演算器内のレジスタファイルREGは、レジスタファイル識別子RF_ENBLのビット数N5+1と同じ数N5+1個のレジスタファイルRF_ENBL_00〜RF_ENBL_N5を有する。各レジスタファイルは、レジスタファイルアドレスRF_ADRSのビット数N2+1のべき乗(2N2+1)個のレジスタファイルを有する。したがって、プル要求先またはプッシュ要求先のレジスタファイルは、レジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSとにより特定される。
そして、プッシュ要求・データバスPSRD_Bには、プッシュ要求信号とプッシュデータ信号とがシリアルに出力される。また、プル要求バスPLR_Bには、プル要求信号が出力される。そして、レジスタファイルREGで読みだされたプルデータは、プル要求信号に後続してプルデータ折返しバスPLD_TBに出力される。また、読み出されたプルデータは、第1のセレクタSL2により、プル要求信号に後続してプルデータ・リターンバスPLD_RBに出力される。
上記のとおり、プッシュ要求・データバスPSRD_Bには、プッシュ要求Push_reqとプッシュデータdataがシリアルに出力されるので、プッシュ要求またはプッシュデータのうち長いほうのビット数のバス幅を有する。プル要求バスPLR_Bは、プル要求のビット数のバス幅を有する。そして、プルデータ折り返しバスPLD_TBとプルデータ・リターンバスPLD_RBは、プル要求とプルデータがシリアルに出力されるので、プル要求またはプルデータのうち長いほうのビット数のバス幅を有する。
図8に戻り、プル要求に対するコア回路内での制御について説明する。スケジューラSCHによりコア回路PU_xのデータを読み出すプル要求信号Pull_reqがプル要求バスPLR_Bに出力されると、コア回路PU_x内の第1のルータR1は、プル要求内のコア識別子CORE_ENBLが自身のコア回路を示しているか否か判定し、判定結果はYESになる(S30のYES)。この判定結果に基づいて、第1のルータR1はプル要求信号を自身の演算器ユニットALU+REGにルーティングする(S32)。自身のコア回路を示していない場合(S30のNO)、第1のルータR1はプル要求信号をプル要求バスPLR_Bにルーティングして後段のコア回路に転送する(S31)。
次に、コア回路PU_x内の演算器ALUは、要求信号のオペコードOPCODE,レジスタファイルアドレスRF_ADRS、データ長LEN、レジスタファイル識別子RF_ENBLに基づいて、読み出すべきレジスタを決定する(S33)。そして、演算器ALUは、決定したレジスタのデータを読み出して出力する(S34)。この読み出したデータは、プルデータフォーマットに格納され、プル要求信号に後続して出力される。
そして、第3のルータR3は、要求信号のオペコードがPull命令か否か判定し(S35)、Pull命令の場合(S35のYES)、プル要求信号とプルデータとをプルデータ折り返しバスPLD_TBにルーティングし、第1のセレクタSL1に転送する(S37)。Pull命令以外の場合(S35のNO)、第3のルータR3は、要求信号とプルデータ信号とをシリアルにプル・プッシュバスPP_Bに転送する(S36)。
最後に、第1のセレクタSL1は、自身のコア回路のプルデータ折り返しバスPLD_TBまたは後段のコア回路からのプルデータ・リターンバスPLD_RBのいずれかの入力を選択し(S38)、プルデータ・リターンバスPLD_RBにプル要求信号とプルデータとを連続して出力する(S39)。これにより、プル要求信号とプルデータは前段のコア回路またはスケジューラSCHに転送される。
[プル・プッシュ要求]
図10は、プル・プッシュ要求の伝播路の例を示す図である。スケジューラSCHは、プル要求バスPLR_Bにプル・プッシュ要求信号を出力する。図9に示したとおり、プル・プッシュ要求信号には、ターゲットコア番号T_CORE_ENBLとソースコア番号S_CORE_ENBLとが含まれる。ここでは、ターゲットコアはPU_1、ソースコアはPU_0と仮定する。
コア回路PU_0の第1のルータR1は、要求信号のソースコア番号が自身のコア回路PU_0であることを検出し、自身の演算器ユニットALU+REGに要求信号をルーティングする。そして、演算器ALUは、要求信号内のレジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSに基づいて、レジスタファイル内の読み出し先レジスタを特定し、読み出し先レジスタのデータを出力する。
次に、第3のルータR3は、要求信号のオペコードがプル・プッシュ命令であることに基づいて、要求信号とプルデータ信号をプル・プッシュバスPP_Bにルーティングする。そして、第2のセレクタSL2が、要求信号とプルデータ信号をプッシュ要求・データバスPSRD_Bに出力する。
コア回路PU_1内の第2のルータR2は、要求信号のターゲットコア識別子T_CORE_ENBLが自身のコア番号であることに基づいて、要求信号とプルデータ信号を自身の演算器ユニットALU+REGにルーティングする。そして、演算器ALUは、要求信号内のレジスタファイル識別子RF_ENBLとレジスタファイルアドレスRF_ADRSに基づいて、レジスタファイル内の書込み先レジスタにプルデータを書き込む。
図11は、本実施の形態と比較例のプル要求の処理に要する宛先コア回路PU_0〜PU_4別のクロックサイクル数を示す図である。仮に、各コア回路内の演算器ユニットALU+REG内のクロックサイクル数を20、演算ユニット外のサイクル数を3、コア回路数を5個として見積もる。
本実施例では、宛先コア回路がPU_0の場合、プル要求の処理に要するサイクル数は23、比較例では、5個のコア回路を経由してプルデータが返信されるので、プル要求の処理に要するサイクル数は23×5個=115となる。同様に、宛先コア回路がPU_1の場合、実施例ではプル要求の処理に要するサイクル数は23×2=46、比較例では115となる。以下同様にして、以下のとおりである。
宛先コア回路がPU_2の場合、実施例23×3=69、比較例115
宛先コア回路がPU_3の場合、実施例23×4=92、比較例115
宛先コア回路がPU_4の場合、実施例23×5=115、比較例115
したがって、全てのコア回路に対するプル要求に要するサイクル数は、実施例が345、比較例が575となり、実施例は比較例の60%のサイクル数となり、40%のサイクル数少なくなる。
以上のとおり、本実施の形態によれば、複数のコア回路を有するコアグループとスケジューラ回路SCHとの間に、コアグループ内の複数のコア回路にそれぞれ接続されるプル要求バスと、プッシュ要求・データバスと、プル要求でコア回路内の演算器ユニットのファイルレジスタから読み出したプルデータを返信するプルデータ・リターンバスとを設け、さらに、各コア回路内にプル要求のプルデータをプルデータ・リターンバスに転送するプルデータ折り返しバスPLD_TBと、第1のセレクタSL1とを設ける。
この構成により、コア回路内の演算器ユニットから出力されるプルデータと、プッシュ要求・データバスを伝播するプッシュ要求とが第2のセレクタSL2で衝突することを防止できる。それにより、スケジューラ回路SCHによるプル要求とプッシュ要求の発行タイミングを、コア回路内での衝突を避けるよう調整する必要がなくなる。また、プルデータを読み出したコア回路のプルデータ折り返しバスによりプルデータ・リターンバスに転送できるので、プル要求に要するレイテンシを短くできる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングする第2のルータと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
演算処理装置。
(付記2)
前記スケジューラが、前記プル要求バスにプル要求を出力すると、
前記プル要求バスの読み出し先コア回路内の前記第1のルータが前記プル要求を自己の演算器ユニットにルーティングし、前記読み出し先コア回路内の演算器ユニットからプル要求先レジスタファイルのデータがプルデータとして前記プルデータ折り返しバスに出力され、前記第1のセレクタを介して前記プルデータバスに転送される、付記1に記載の演算処理装置。
(付記3)
前記複数の演算処理部それぞれは、さらに、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プッシュ要求バスに伝播するプル・プッシュバスと、
前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータ折り返しバスか前記プル・プッシュバスのいずれかにルーティングする第3のルータと、
前記プル・プッシュバスか前記プッシュ要求バスのいずれかの入力を選択し、前記選択した入力を前記プッシュ要求バスに出力する第2のセレクタとを有する、付記1に記載の演算処理装置。
(付記4)
前記スケジューラが、前記プル要求バスにプル・プッシュ要求を出力した場合、
前記プル・プッシュ要求の読み出し先コア回路の前記演算器ユニットで読み出された読み出しデータを、前記読み出し先コア回路の前記第3のルータが、前記プル・プッシュバスにルーティングし、前記読み出し先コア回路の前記第2のセレクタが前記プル・プッシュバスの読み出しデータを選択し、前記プッシュ要求バスに出力して、後段のコア回路に転送する、付記3に記載の演算処理装置。
(付記5)
さらに、
メインメモリへのアクセスを制御するメモリコントローラを有し、
前記スケジューラは、
前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、付記1または3に記載の演算処理装置。
(付記6)
さらに、
前記スケジューラに、前記プル要求を実行するプル命令と、前記プッシュ要求を実行するプッシュ命令とを発行する命令制御部を有し、
前記スケジューラは、
前記プル命令に応答して、前記プル要求を前記プル要求バスに出力し、前記プル要求に対応する前記プルデータを前記ライト要求と共に前記メモリコントローラに出力し、
前記プッシュ命令に応答して、前記リード要求を前記メモリコントローラに出力し、前記リードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、付記5に記載の演算処理装置。
(付記7)
前記複数の演算処理部が複数の演算処理グループに分割され、
前記複数の演算処理グループそれぞれが、前記スケジューラと、前記プル要求バスと、前記プッシュ要求バスと、前記プルデータバスを有する、付記1に記載の演算処理装置。
(付記8)
さらに、
メインメモリへのアクセスを制御するメモリコントローラを有し、
前記複数の演算処理グループそれぞれのスケジューラは、
前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに送出する、付記7に記載の演算処理装置。
(付記9)
それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
前記複数の演算処理部それぞれは、
第1のルータにより、前記プル要求バスの前記プル要求を自己の演算器ユニットにルーティングし、
第2のルータにより、前記プッシュ要求バスの前記プッシュ要求を前記自己の演算器ユニットにルーティングし、
プルデータ折り返しバスにより、前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播し、
第1のセレクタにより、前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する、
演算処理装置の制御方法。
PLR_B:プル要求バス
PSRD_B:プッシュ要求・データバス、プッシュ要求バス
PLD_RB:プルデータ・リターンバス、プルデータバス
PLD_TB:プルデータ折り返しバス
PP_B:プル・プッシュバス
R1:第1ルータ
R2:第2ルータ
R3:第3ルータ
SL1:第1セレクタ
SL2:第2セレクタ
PU:プロセッサコア、コア、コア回路、演算処理部
ALU:演算器
REG:レジスタファイル(複数のレジスタ)
SCH:スケジューラ、スケジューラ回路
20:プロセッサ、プロセッサチップ、演算処理装置

Claims (8)

  1. それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
    前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
    前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
    前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
    前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
    前記複数の演算処理部それぞれは、
    前記プル要求バスの自己の演算処理部を読み出し先とする前記プル要求を自己の演算器ユニットにルーティングする第1のルータと、
    前記プッシュ要求バスの自己の演算処理部を書き込み先とする前記プッシュ要求を前記自己の演算器ユニットにルーティングする第2のルータと、
    前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播するプルデータ折り返しバスと、
    前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する第1のセレクタとを有する、
    演算処理装置。
  2. 前記スケジューラが、前記プル要求バスにプル要求を出力すると、
    前記プル要求バスの読み出し先演算処理部内の前記第1のルータが前記プル要求を自己の演算器ユニットにルーティングし、前記読み出し先演算処理部内の演算器ユニットからプル要求先レジスタファイルのデータがプルデータとして前記プルデータ折り返しバスに出力され、前記第1のセレクタを介して前記プルデータバスに転送される、請求項1に記載の演算処理装置。
  3. 前記複数の演算処理部それぞれは、さらに、
    前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プッシュ要求バスに伝播するプル・プッシュバスと、
    前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータ折り返しバスか前記プル・プッシュバスのいずれかにルーティングする第3のルータと、
    前記プル・プッシュバスか前記プッシュ要求バスのいずれかの入力を選択し、前記選択した入力を前記プッシュ要求バスに出力する第2のセレクタとを有する、請求項1に記載の演算処理装置。
  4. 前記スケジューラが、前記プル要求バスにプル・プッシュ要求を出力した場合、
    前記プル・プッシュ要求の読み出し先演算処理部の前記演算器ユニットで読み出された読み出しデータを、前記読み出し先演算処理部の前記第3のルータが、前記プル・プッシュバスにルーティングし、前記読み出し先演算処理部の前記第2のセレクタが前記プル・プッシュバスの読み出しデータを選択し、前記プッシュ要求バスに出力して、後段の演算処理部に転送する請求項3に記載の演算処理装置。
  5. さらに、
    メインメモリへのアクセスを制御するメモリコントローラを有し、
    前記スケジューラは、
    前記メモリコントローラに、前記メインメモリに前記プルデータを書込むライト要求を出力し、
    前記メモリコントローラに、前記メインメモリからデータを読み出すリード要求を出力し、前記メインメモリから読み出されたリードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、請求項1または3に記載の演算処理装置。
  6. さらに、
    前記スケジューラに、前記プル要求を実行するプル命令と、前記プッシュ要求を実行するプッシュ命令とを発行する命令制御部を有し、
    前記スケジューラは、
    前記プル命令に応答して、前記プル要求を前記プル要求バスに出力し、前記プル要求に対応する前記プルデータを前記ライト要求と共に前記メモリコントローラに出力し、
    前記プッシュ命令に応答して、前記リード要求を前記メモリコントローラに出力し、前記リードデータを前記プッシュ要求と共に前記プッシュ要求バスに出力する、請求項5に記載の演算処理装置。
  7. 前記複数の演算処理部が複数の演算処理グループに分割され、
    前記複数の演算処理グループそれぞれが、前記スケジューラと、前記プル要求バスと、前記プッシュ要求バスと、前記プルデータバスを有する、請求項1に記載の演算処理装置。
  8. それぞれ演算器とレジスタファイルを含む演算器ユニットを有する複数の演算処理部と、
    前記複数の演算処理部に共通に設けられ、前記複数の演算処理部のいずれかの演算処理部内の前記レジスタファイルにデータを書き込むプッシュ命令と、前記レジスタファイルからデータを読み出すプル命令とを制御するスケジューラと、
    前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プル命令のプル要求を出力するプル要求バスと、
    前記複数の演算処理部にそれぞれ接続され、前記スケジューラが前記プッシュ命令のプッシュ要求を出力するプッシュ要求バスと、
    前記複数の演算処理部にそれぞれ接続され、前記プル要求に応答して前記レジスタファイルから読み出したプルデータを前記スケジューラに入力するプルデータバスとを有し、
    前記複数の演算処理部それぞれは、
    第1のルータにより、前記プル要求バスの自己の演算処理部を読み出し先とする前記プル要求を自己の演算器ユニットにルーティングし、
    第2のルータにより、前記プッシュ要求バスの自己の演算処理部を書き込み先とする前記プッシュ要求を前記自己の演算器ユニットにルーティングし、
    プルデータ折り返しバスにより、前記自己の演算器ユニットのレジスタファイルから読み出した前記プルデータを前記プルデータバスに伝播し、
    第1のセレクタにより、前記プルデータ折り返しバスか前記プルデータバスのいずれかの入力を選択し、前記選択した入力を前記プルデータバスに出力する、
    演算処理装置の制御方法。
JP2017235211A 2017-12-07 2017-12-07 演算処理装置および演算処理装置の制御方法 Active JP6978670B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017235211A JP6978670B2 (ja) 2017-12-07 2017-12-07 演算処理装置および演算処理装置の制御方法
US16/174,333 US11550576B2 (en) 2017-12-07 2018-10-30 Arithmetic processing device having multicore ring bus structure with turn-back bus for handling register file push/pull requests

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017235211A JP6978670B2 (ja) 2017-12-07 2017-12-07 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2019101969A JP2019101969A (ja) 2019-06-24
JP6978670B2 true JP6978670B2 (ja) 2021-12-08

Family

ID=66696760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017235211A Active JP6978670B2 (ja) 2017-12-07 2017-12-07 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11550576B2 (ja)
JP (1) JP6978670B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321123B2 (en) * 2019-11-21 2022-05-03 International Business Machines Corporation Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58169275A (ja) * 1982-03-31 1983-10-05 Hitachi Ltd 保守支援プロセツサを持つ計算機システム
GB2352144A (en) 1999-07-16 2001-01-17 Texas Instruments Ltd Data transfer between memory nodes
JP2003099249A (ja) * 2001-07-17 2003-04-04 Sanyo Electric Co Ltd データ処理装置
EP2383661A1 (en) * 2005-04-21 2011-11-02 Violin Memory, Inc. Interconnection system
US20070165457A1 (en) 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
US8601181B2 (en) * 2007-11-26 2013-12-03 Spansion Llc System and method for read data buffering wherein an arbitration policy determines whether internal or external buffers are given preference
JP5407633B2 (ja) * 2008-07-28 2014-02-05 株式会社リコー 通信装置及びそれを有する通信システム並びに通信方法
WO2012127619A1 (ja) * 2011-03-22 2012-09-27 富士通株式会社 並列計算機システム及び並列計算機システムの制御方法
JP2018165913A (ja) * 2017-03-28 2018-10-25 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20190179636A1 (en) 2019-06-13
US11550576B2 (en) 2023-01-10
JP2019101969A (ja) 2019-06-24

Similar Documents

Publication Publication Date Title
CA3120683C (en) Configuration load of a reconfigurable data processor
US20240296141A1 (en) Method And System For Unloading Configuration Data In A Reconfigurable Processor Array
US7143221B2 (en) Method of arbitrating between a plurality of transfers to be routed over a corresponding plurality of paths provided by an interconnect circuit of a data processing apparatus
JP5456743B2 (ja) スイッチマトリックス経由のデータ転送を改善するフロー制御方法
US7353310B2 (en) Hierarchical memory access via pipelining with deferred arbitration
JP4621604B2 (ja) バス装置、バスシステムおよび情報転送方法
EP1239374A1 (en) Shared program memory for use in multicore DSP devices
WO2009070324A1 (en) A method for setting parameters and determining latency in a chained device system
JP2010282405A (ja) データ処理システム
JP4007483B2 (ja) 高位合成装置および高位合成方法
CN106021141B (zh) 半导体设备
US20140359195A1 (en) Crossbar switch, information processing apparatus, and information processing apparatus control method
US20070156937A1 (en) Data transfer in multiprocessor system
JP6978670B2 (ja) 演算処理装置および演算処理装置の制御方法
US20090013115A1 (en) Bus communication apparatus that uses shared memory
US7913013B2 (en) Semiconductor integrated circuit
JP6290761B2 (ja) データ転送制御システム、データ転送制御方法、及び、データ転送制御プログラム
JP2011028343A (ja) 演算処理装置、およびデータ転送方法
CN102405466A (zh) 存储控制装置及其控制方法
JP2015103008A (ja) メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
JP4928683B2 (ja) データ処理装置
JPWO2004025478A1 (ja) メモリブロック間のレイテンシ差を活用するデータ処理装置および方法
JP4440181B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
CN116324741A (zh) 用于可配置硬件加速器的方法和装置
US9703730B2 (en) Arbitration circuit and processing method of arbitration circuit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211012

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211025

R150 Certificate of patent or registration of utility model

Ref document number: 6978670

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150