JP7172068B2 - 情報処理装置、演算処理装置及び情報処理装置の制御方法 - Google Patents

情報処理装置、演算処理装置及び情報処理装置の制御方法 Download PDF

Info

Publication number
JP7172068B2
JP7172068B2 JP2018044761A JP2018044761A JP7172068B2 JP 7172068 B2 JP7172068 B2 JP 7172068B2 JP 2018044761 A JP2018044761 A JP 2018044761A JP 2018044761 A JP2018044761 A JP 2018044761A JP 7172068 B2 JP7172068 B2 JP 7172068B2
Authority
JP
Japan
Prior art keywords
unit
load
request
instruction
access
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
JP2018044761A
Other languages
English (en)
Other versions
JP2019159722A (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 JP2018044761A priority Critical patent/JP7172068B2/ja
Priority to US16/295,450 priority patent/US10901735B2/en
Publication of JP2019159722A publication Critical patent/JP2019159722A/ja
Application granted granted Critical
Publication of JP7172068B2 publication Critical patent/JP7172068B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、情報処理装置、演算処理装置及び情報処理装置の制御方法に関する。
主記憶装置であるメモリ及びメモリアクセスコントローラ(MAC:Memory Access Controller)ユニットと複数のコアとが1対多結合されたマルチコア演算装置がある。各コアは、インストラクションユニット(IU:Instruction Unit)、ロードストアユニット、レジスタファイル及び演算実行部(EU:Execution Unit)を有する。そして、特に搭載されたコア数が多い場合、回路実装上の都合から主記憶へのアクセスバスを複数コア間で共有することが一般的に行われる。
インストラクションユニットは、メモリに対するデータの読み出し又は書き込み命令であるロードストア命令をロードストアユニットに発行する。ロードストアユニットは、発行されたロードストア命令に応じてメモリに対するデータの読み出し又は書き込みを行う。レジスタファイルは、取得したデータを格納する。演算実行部は、レジスタファイルに格納されたデータを用いて演算を行う。
特に、データの読み出しの場合におけるインストラクションユニット及びロードストアユニットの動作について詳細に説明する。インストラクションユニットは、ソフトウェアから送られたロード命令をデコードする。そして、インストラクションユニットは、ロードストアユニットにロード命令の実行を指示する。ロードストアユニットは、ロード命令をメモリアクセス単位に分割する。例えば、ロードストアユニットは、ロード命令を256Byteに分割する。次に、ロードストアユニットは、ロード命令の分割単位毎にリクエストID(Identifier)を割り当て、且つ、MACユニットが有するバッファの中にデータバッファ領域を獲得する。その後、ロードストアユニットは分割した各ロード命令にリクエストIDを載せて、メモリリードリクエストをMACユニットへ発行する。
その後、ロードストアユニットは、メモリリードリクエストに対する応答であるメモリリードコンプリーションをMACユニットから受信する。そして、ロードストアユニットは、受信したメモリリードコンプリーションに付随するメモリリードデータを自己が有するデータバッファに格納する。次に、ロードストアユニットは、データバッファからメモリリードデータを読み出し、宛先レジスタを記したライトリクエストとともにメモリリードデータをレジスタファイルへ送信する。そして、ロードストアユニットは、リクエストIDとデータバッファを解放する。ロードストアユニットは、この操作を分割されたロードストア命令全てについて行う。そして、分割されたロードストア命令の全てについて上記操作を行った後、ロードストアユニットは、インストラクションユニットへ、ロード命令の完了通知を発行する。ただし、ロードストアユニットは、メモリリードリクエストの順序で、その応答であるメモリリードコンプリーションを受信する保証はない。
ロードストアユニットは、1つのメモリリードリクエストの応答を待たずに、後続のメモリリードリクエストをMACユニットのポートに発行できる。その際、ロードストアユニットとMACユニットのポートとの間では、フロー制御により規定数以上のリクエストがMACユニットのポートに発行されないように制御される。その規定数は、MACユニットのポート毎に配置されたリクエスト受信バッファの段数によって定まる。
ここで、同じメモリデータを複数の演算実行部に対応する複数のレジスタファイルにロードする場合、各ロードストアユニットがそれぞれ独立にメモリリードリクエストをMACユニットに対して発行することが考えられる。そして、MACユニットは、同じメモリ領域に対してメモリリードリクエストの数に相当する回数のリードを行う。この場合、MACユニットは同じ動作を繰り返すことになり、その間、後続命令の処理を待たせることになる。そこで、ロード命令は、複数の演算実行部にそれぞれ対応する複数のレジスタファイルを格納先として一度に指定したロードに対応することが一般的である。以下では、複数の演算実行部にそれぞれ対応する複数のレジスタファイルを格納先として一度に指定したロードを、「マルチキャストロード」という。そして、MACユニット及びロードストアユニットは、複数の演算実行部に対応する複数のレジスタファイルへのデータの読み出しであるメモリリードリクエストに対応することが一般的である。
ここで、マルチキャストロードでは、複数のロードストアユニットの代表となる1つのロードストアユニットがメモリリードリクエストをMACユニットに発行する。その後、マルチキャストロードの対象であるロードストアユニット全てが、メモリリードコンプリーションを受信した後、レジスタファイルにライトリクエストを発行する。このためには、マルチキャストロードの対象であるロードストアユニット全てが、代表のロードストアユニットが発行したメモリリードリクエストと、受信するメモリリードコンプリーションとを対応付けることが好ましい。その方法の一つとして、マルチキャストロードの対象であるロードストアユニット全てで使用可能な全リクエストIDの解放を待ち、マルチキャストロード命令に対して同じメモリリードリクエストのリクエストIDを取得する方法がある。
なお、複数の装置からメモリアクセスを行う場合やDMAアクセスする場合に、アクセスするデータを分割してラウンドロビンでアクセス優先度を与える従来技術がある。
特開2011-113119号公報 特開2002-366507号公報
しかしながら、マルチキャストロード命令を実行する場合、リクエストIDの統一を目的として各ロードストアユニット間で同期をとるために、先行命令の完了までマルチキャストロード命令が保留される。このため、メモリデータ転送のスループットが低下してしまうおそれがある。また、マルチキャストリードリクエストを発行する代表のロードストアユニットの選択に偏りが発生する。また、1つのロードストアユニットが一度に発行できるリードリクエストの数は、MACユニットのリクエスト受信バッファの段数によって制限される。そして、マルチキャストリードリクエストを発行する場合、代表となるロードストアユニットに対応するリクエスト受信バッファは多く使用されるが、それ以外のロードストアユニットに対応するリクエスト受信バッファの使用率は低くなる。このようにリクエスト受信バッファの使用状態に偏りが出るため、ロードストアユニット間で偏りが出てしまい、結果的にメモリデータ転送のスループットが低下するおそれがある。そして、マルチコア演算装置の処理性能は、メモリデータ転送のスループットの大きさに依存するため、従来のマルチキャストロード命令の実行方法では、マルチコア演算装置の処理性能を向上させることは困難である。
また、アクセスするデータを分割してラウンドロビンでアクセス優先度を与える従来技術では、リクエストIDの統一については考慮されておらず、マルチキャストロード命令を実行する場合スループットが低下するおそれがある。そのため、それらの従来技術を用いてもマルチコア演算装置の処理性能を向上させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、処理性能を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供することを目的とする。
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様において、データを記憶する記憶装置、前記記憶装置を制御する制御部、取得した取得データに対する演算をそれぞれ行う複数の演算処理部、及び前記複数の演算処理部のそれぞれに対応する複数のアクセス部を備える。前記複数のアクセス部それぞれは、前記複数の演算処理部のうち、所定数の対象演算処理部に取得させるデータを前記記憶装置から読み出すマルチキャストロード命令を取得して、前記マルチキャストロード命令を分割した分割命令を生成する分割部と、前記分割命令毎に、前記分割命令に基づく読出要求を前記制御部に対して発行する選定アクセス部を、前記複数のアクセス部のうちの前記対象演算処理部に対応する前記対象アクセス部の中から選定する選定部と、前記選定部による選定に対応して、前記分割命令毎に全ての前記対象アクセス部において同一の識別情報を決定し、自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に対して決定した前記同一の識別情報を付与する決定部と、自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に基づく前記読出要求を前記制御部に対して発行するメモリリクエスト管理部と、前記選定アクセス部から出力された前記読出要求に対する応答であって全ての前記対象アクセス部において前記同一の識別情報が付された複数の応答を、前記選定アクセス部を含む前記対象アクセス部それぞれが前記制御部から取得し、取得した応答に基づくデータを、自己に対応する前記対象演算処理部に対して出力する出力部とを有する。
1つの側面では、本発明は、処理性能を向上させることができる。
図1は、情報処理装置のハードウェア構成の一例を表す図である。 図2は、実施例1に係るアクセラレータのブロック図である。 図3は、ロード命令のフォーマットの一例を表す図である。 図4は、ロードストアユニットの詳細を表すブロック図である。 図5は、リクエストIDの決定を説明するための図である。 図6は、マルチキャストリードリクエストのフォーマットの一例を示す図である。 図7は、メモリリードコンプリーションのフォーマットの一例を示す図である。 図8は、ロード命令実行の処理のフローチャートである。 図9は、メモリリードリクエスト発行処理のフローチャートである。 図10は、ライトリクエスト発行処理のフローチャートである。 図11は、従来の情報処理装置のマルチキャストロード命令の処理状態を表す図である。 図12は、実施例1に係る情報処理装置のマルチキャストロード命令の処理状態を表す図である。 図13は、実施例2に係るアクセラレータのブロック図である。 図14は、実施例3に係るアクセラレータのブロック図である。
以下に、本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法が限定されるものではない。
図1は、情報処理装置のハードウェア構成の一例を表す図である。情報処理装置1は、図1に示すように、CPU10、I/O(Input/Output)コントローラ11、アクセラレータ12、ハードディスク13、I/Oデバイス14及びメモリ15を有する。
I/Oコントローラ11は、アクセラレータ12、ハードディスク13及びI/Oデバイス14に接続される。ここで、I/Oデバイス14は、アクセラレータ12及びハードディスク13以外のI/Oデバイスを指す。I/Oコントローラ11は、CPU10からの指示を受けて、アクセラレータ12、ハードディスク13及びI/Oデバイス14を制御する。そして、I/Oコントローラ11は、アクセラレータ12、ハードディスク13及びI/Oデバイス14とCPU10との通信を中継する。
演算処理装置であるCPU10は、I/Oコントローラ11及びメモリ15とバスで接続される。そして、CPU10は、メモリ15とデータの送受信が可能である。また、CPU10は、I/Oコントローラ11を介して、アクセラレータ12、ハードディスク13及びI/Oデバイス14とデータの送受信が可能である。
ハードディスク13は、OS(Operating System)や各種アプリケーションなどの様々なプログラムを格納する。
CPU10は、ハードディスク13からプログラムを読み出し、メモリ15上に展開して実行することで、OSや各種アプリケーションを動作させる。アプリケーションとしては、例えば、ディープラーニングなどを実行するアプリケーションがある。
さらに、CPU10は、アプリケーションを実行する際の特定の処理をアクセラレータ12に行わせる。例えば、CPU10は、ディープラーニングなどにおける演算処理をアクセラレータ12に行わせる。具体的には、CPU10により実行されるソフトウェアが、I/Oコントローラ11を介して演算に用いるデータともに演算命令をアクセラレータ12へ送信する。
図2は、実施例1に係るアクセラレータのブロック図である。図2に示すように、アクセラレータ12は、インストラクションユニット21、ロードストアユニット22、コア23、MACユニット24及びメモリ25を有する。このアクセラレータ12が「演算処理装置」の一例にあたる。
コア23は、レジスタファイル231及び演算実行部232を有する。本実施例では、コア23は、ロードストアユニット22と1対1で対応する。レジスタファイル231は、メモリ25から読み出されたメモリリードデータを対応するロードストアユニット22から受信して格納する。演算実行部232は、レジスタファイル231に格納されたメモリリードデータを用いて演算を実行する。この、コア23が、「演算処理部」の一例にあたる。また、レジスタファイル231が、「格納部」の一例にあたる。
インストラクションユニット21は、例えば、CPU10により実行されるソフトウェアから発行されたロード命令を取得する。インストラクションユニット21が取得するロード命令は、例えば、図3のフォーマット301を有する。図3は、ロード命令のフォーマットの一例を表す図である。この場合、ロード命令は、命令の種別を表すコマンド、ロードの対象となるメモリ25の開始アドレス及びデータのデータ長、並びに、ロードしたデータの宛先を含む。ここで、フォーマット301の各領域に記載された括弧内の数字は領域のビット数を表す。
ロード命令がマルチキャストロード命令の場合、宛先には、複数のコア23が登録される。これに対して、ロード命令がユニキャストロード命令の場合、宛先には、単一のコア23が登録される。
その後、インストラクションユニット21は、ロード命令をデコードする。そして、インストラクションユニット21は、ロード命令の宛先で指定されたコア23に接続するロードストアユニット22へデコードしたロード命令を出力する。ここで、インストラクションユニット21によるデコードの結果、デコードした命令がマルチキャストロード命令の場合、インストラクションユニット21は、複数のロードストアユニット22へマルチキャストロード命令を発行する。このインストラクションユニット21が、「命令出力部」の一例にあたる。
ロードストアユニット22は、複数のコア23にそれぞれ対応して配置される。そして、ロードストアユニット22は、対応する各コア23に接続される。さらに、ロードストアユニット22は、MACユニット24が有するポート240に接続される。このロードストアユニット22が、「アクセス部」の一例にあたる。
次に、図4を参照して、ロードストアユニット22について説明する。図4は、ロードストアユニットの詳細を表すブロック図である。図4示すように、ロードストアユニット22は、命令分割部201、リクエストID制御部202、メモリリクエスト管理部203、レジスタ制御部204及びデータバッファ205を有する。
命令分割部201は、決定部211を有する。命令分割部201は、インストラクションユニット21から発行されたロード命令を取得する。次に、命令分割部201は、取得したロード命令をメモリアクセス単位に分割する。本実施例では、メモリアクセスが256Byte単位で行われる場合を例として説明する。以下では、メモリアクセス単位である256Byteに分割されたロード命令を、「分割ロード命令」という。この命令分割部201が、「分割部」の一例にあたる。
次に、命令分割部201は、ロード命令における宛先を決定部211に通知する。決定部211は、宛先が複数のコア23であるか、それとも、宛先が単一のコア23であるかを判定する。
宛先が単一のコア23である場合、決定部211は、全ての分割ロード命令において自己が搭載されたロードストアユニット22がメモリリードリクエストの発行を行う選定されたロードストアユニット22であると決定する。以下では、メモリリードリクエストの発行を行う選定されたロードストアユニット22を、「選定ロードストアユニット22」という。その後、命令分割部201は、分割ロード命令毎のリクエストIDの取得をリクエストID制御部202のユニキャスト用ID獲得部221に指示する。さらに、命令分割部201は、各分割ロード命令をメモリリクエスト管理部203へ順次発行する。また、命令分割部201は、各分割ロード命令の情報をレジスタ制御部204へ出力する。
これに対して、宛先が複数のコア23である場合、決定部211は、宛先のコア23に接続されたロードストアユニット22の中から、各分割ロード命令における選定ロードストアユニット22を決定する。以下では、宛先のコア23に接続されたロードストアユニット22、すなわちマルチキャストロード命令が発行されたロードストアユニット22を、マルチキャストロードストア命令を実行させる対象であることから「対象ロードストアユニット22」という。
具体的には、決定部211は、各分割ロード命令に対する選定ロードストアユニット22として同じロードストアユニット22が、対象ロードストアユニット22の全てにおいて決定される発行担当決定論理を予め記憶する。そして、決定部211は、その予め決められた発行担当決定論理を用いて、各分割ロード命令における選定ロードストアユニット22を決定する。
例えば、決定部211は、アクセラレータ12に搭載された全てのロードストアユニット22に与えられた識別番号を予め記憶する。そして、決定部211は、分割ロード命令の先頭から順番に、識別番号の若番順に対象ロードストアユニット22の中から選定ロードストアユニット22を割り当てる。これにより、全ての対象ロードストアユニット22における各決定部211は、各分割ロード命令について同じロードストアユニット22を選定ロードストアユニット22として選択できる。この決定部211が、「選定部」の一例にあたる。
ここで、ロードストアユニット#1~#8の8個のロードストアユニット22があり、分割ロード命令##01~##04がある場合を例に説明する。例えば、分割ロード命令##01に対して、ロードストアユニット#1が自己を選定ロードストアユニット22と選定する場合、他のロードストアユニット#2~#8も、ロードストアユニット#1を選定ロードストアユニット22と選定する。次の分割ロード命令##02に対して、ロードストアユニット#1がロードストアユニット#2を選定ロードストアユニット22と選定する場合、他のロードストアユニット#2~#8も、ロードストアユニット#2を選定ロードストアユニット22と選定する。次の分割ロード命令##03に対して、ロードストアユニット#1がロードストアユニット#3を選定ロードストアユニット22と選定する場合、他のロードストアユニット#2~#8も、ロードストアユニット#3を選定ロードストアユニット22と選定する。次の分割ロード命令##04に対して、ロードストアユニット#1がロードストアユニット#4を選定ロードストアユニット22と選定する場合、他のロードストアユニット#2~#8も、ロードストアユニット#4を選定ロードストアユニット22と選定する。
その後、命令分割部201は、ロード命令が分割された各々の分割ロード命令に対する選定ロードストアユニット22の情報とともに、分割ロード命令毎のリクエストIDの取得をリクエストID制御部202のマルチキャスト用ID獲得部222に指示する。さらに、命令分割部201は、マルチキャストロード命令を分割した各分割ロード命令をメモリリクエスト管理部203及びレジスタ制御部204へ順次発行する。さらに、命令分割部201は、自己が搭載されたロードストアユニット22が選定ロードストアユニット22となった分割ロード命令を特定するための情報をレジスタ制御部204へ出力する。
その後、命令分割部201は、各分割ロード命令に対する完了通知をレジスタ制御部204からそれぞれ受ける。そして、命令分割部201は、全ての分割ロード命令の完了通知を取得した後、ロード命令の完了通知をインストラクションユニット21へ発行する。
リクエストID制御部202は、各分割ロード命令に対するリクエストIDの発行及び他のロードストアユニット22におけるリクエストIDの獲得の確認をそれぞれ行う。リクエストID制御部202は、ユニキャスト用ID獲得部221、マルチキャスト用ID獲得部222、ID管理部223及びID獲得確認部224を有する。
ID管理部223は、予め決められた個数のリクエストIDについて、それぞれのリクエストIDの使用状態を管理する。具体的には、ID管理部223は、ユニキャスト用ID獲得部221又はマルチキャスト用ID獲得部222により、特定の分割ロード命令にリクエストIDが割り当てられた場合、そのリクエストIDが使用中であると判定する。また、処理が完了した分割ロード命令に割り当てられたリクエストIDの通知をレジスタ制御部204から受けた場合、ID管理部223は、通知されたリクエストIDを解放して、そのリクエストIDを未使用とする。
そして、ID管理部223は、ユニキャスト用ID獲得部221からの未使用のリクエストIDの通知要求を受ける。そして、ID管理部223は、未使用のリクエストIDの中から適当なリクエストIDをユニキャスト用ID獲得部221に通知する。
また、ID管理部223は、マルチキャスト用ID獲得部222から特定のリクエストIDの使用状態の通知要求を受ける。そして、ID管理部223は、通知要求を受けたリクエストIDが未使用であるか使用中であるかをマルチキャスト用ID獲得部222に通知する。
ID管理部223は、連番で番号が振られた所定の個数の格納領域を有するバッファやフリップフロップなどである。例えば、ID管理部223は、1~15までの番号が割り振られた格納領域を有する。そして、ID管理部223が有する各格納領域は、それぞれに割り振られた番号のリクエストIDが、ユニキャスト用ID獲得部221又はマルチキャスト用ID獲得部222により獲得された場合、フラグを立てることで使用のリクエストIDとなる。次に、ID管理部223の格納領域の中でフラグが立っていない格納領域に割り振られた番号が、未使用のリクエストIDである。すなわち、ID管理部223は、各格納領域のフラグの状態により、その格納領域に振られた番号のリクエストIDが使用中か未使用かを通知する。このID管理部223が、「管理部」の一例にあたる。
ユニキャスト用ID獲得部221は、ロード命令がユニキャストロード命令の場合、分割ロード命令毎のリクエストIDの取得の指示を命令分割部201から順次受ける。次に、ユニキャスト用ID獲得部221は、分割ロード命令の先頭から順番に未使用のリクエストIDの通知要求をID管理部223へ行う。ここで、ユニキャスト用ID獲得部221は、各分割ロード命令に対して以下に説明する処理を順次行う。そこで、以下では、特定の分割ロード命令を例にユニキャスト用ID獲得部221の処理について説明する。
ユニキャスト用ID獲得部221は、ID管理部223から通知された未使用のリクエストIDの中から分割ロード命令のリクエストIDを獲得する。そして、ユニキャスト用ID獲得部221は、獲得したリクエストIDを分割ロード命令に割り当てたリクエストIDとしてメモリリクエスト管理部203に通知する。前述したように、ユニキャスト用ID獲得部221は、このリクエストIDの獲得処理を全ての分割ロード命令に対して行う。
マルチキャスト用ID獲得部222は、ロード命令がマルチキャストロード命令の場合、分割ロード命令毎のリクエストIDの取得の指示を、選定ロードストアユニット22の情報とともに受ける。ここで、マルチキャスト用ID獲得部222は、各分割ロード命令に対して以下に説明する処理を順次行う。そこで、以下では、特定の分割ロード命令を例にマルチキャスト用ID獲得部222の処理について説明する。
マルチキャスト用ID獲得部222は、分割ロード命令に対するリクエストIDとして同じリクエストIDが、対象ロードストアユニット22の全てにおいて獲得されるリクエストID決定論理を予め記憶する。そして、マルチキャスト用ID獲得部222は、その予め決められたリクエストID決定論理を用いて、分割ロード命令に割り当てるリクエストIDを決定する。すなわち、各対象ロードストアユニット22は、元が同じ分割ロード命令に対しては、同じリクエストIDを決定する。例えば、マルチキャスト用ID獲得部222は、リクエストID決定論理として、リクエストIDのうち若番から順に連番で各分割ロード命令のリクエストIDとする論理を記憶する。
ここで、リクエストIDとして使用する番号が0~15である場合で説明する。各対象ロードストアユニット22のそれぞれのマルチキャスト用ID獲得部222は、最初の分割ロード命令のリクエストIDを0と決定し、次の分割ロード命令のリクエストIDを1と決定する。そして、分割ロード命令の数が15を超える場合には、マルチキャスト用ID獲得部222は、番号を巡回させて割り当てを繰り返す。図2において、各ロードストアユニット22の下に記載したリクエストIDは、各ロードストアユニット22それぞれが、各分割ロード命令に対して並んだ数字の左から順にリクエストIDとして決定していくことを表す。
例えば、図5を参照して、対象ロードストアユニット22であるロードストアユニット#1~#8におけるリクエストIDの決定についてさらに説明する。図5は、リクエストIDの決定を説明するための図である。ここでは、分割ロード命令##01~##18があり、リクエストIDとして使用する番号が0~15である場合で説明する。図5に示すように、ロードストアユニット#1~#8は、それぞれが分割ロード命令##01の入力を受けると、同じ分割ロード命令##01に対して同一のリクエストID=0を発行する。次に、ロードストアユニット#1~#8は、それぞれが分割ロード命令##02の入力を受けると、同じ分割ロード命令##02に対して同一のリクエストID=1を発行する。次に、ロードストアユニット#1~#8は、それぞれが分割ロード命令##03の入力を受けると、同じ分割ロード命令##03に対して同一のリクエストID=2を発行する。その後、ロードストアユニット#1~#8は、リクエストIDの決定を繰り替えし、それぞれが分割ロード命令##16の入力を受けると、リクエストIDを0に戻して、同じ分割ロード命令##16に対して同一のリクエストID=0を発行する。最後に、ロードストアユニット#1~#8は、それぞれが分割ロード命令##18の入力を受けると、同じ分割ロード命令##18に対して同一のリクエストID=2を発行する。
次に、マルチキャスト用ID獲得部222は、分割ロード命令に対する割り当てを決定したリクエストIDが使用中か未使用かをID管理部223に確認する。リクエストIDが使用中であれば、マルチキャスト用ID獲得部222は、対象とするリクエストIDが未使用になるまで待機する。これに対して、対象とするリクエストIDが未使用であれば、マルチキャスト用ID獲得部222は、分割ロード命令に割り当てるリクエストIDを獲得する。
また、マルチキャスト用ロード命令を分割した分割ロード命令の数は、マルチキャスト用ロード命令のメモリデータ量に依存する。また、リクエストIDの数は、ハードウェアの資源に依存する。そのため、分割ロード命令の数が、付与可能なリクエストIDの数を超える場合がある。この場合、マルチキャスト用ID獲得部222は、1つのマルチキャスト用ロード命令に対して複数回同じリクエストIDを使用する。その場合も、前の分割ロード命令で使用したリクエストIDは使用中となり、マルチキャスト用ID獲得部222は、前の分割ロード命令で使用したリクエストIDが未使用となったことの確認がID管理部223から取れるまで、そのリクエストIDの発行を待機する。
その後、マルチキャスト用ID獲得部222は、分割ロード命令に割り当てたリクエストIDをメモリリクエスト管理部203へ発行する。ここで、マルチキャスト用ID獲得部222は、自己を搭載したロードストアユニット22が選定ロードストアユニット22か否かに関わらず、リクエストIDをメモリリクエスト管理部203に通知する。さらに、その分割ロード命令において自己が搭載されたロードストアユニット22が選定ロードストアユニット22でない場合、マルチキャスト用ID獲得部222は、リクエストIDの獲得を選定ロードストアユニット22に通知する。前述したように、マルチキャスト用ID獲得部222は、このリクエストIDの獲得処理を全ての分割ロード命令に対して行う。このマルチキャスト用ID獲得部222が、「決定部」の一例にあたる。
ID獲得確認部224は、自己を搭載したロードストアユニット22が選定ロードストアユニット22である分割ロード命令に対して、リクエストIDの獲得完了の通知を他のロードストアユニット22から受ける。そして、ID獲得確認部224は、他の全てのロードストアユニット22からリクエストIDの獲得完了の通知を受けると、そのリクエストIDの他の全ての対象ロードストアユニット22による獲得完了通知をメモリリクエスト管理部203へ送信する。
メモリリクエスト管理部203は、ロード命令がユニキャストロード命令の場合、全ての分割ロード命令の入力を命令分割部201から受ける。さらに、メモリリクエスト管理部203は、各分割ロード命令に割り当てられたリクエストIDの入力をユニキャスト用ID獲得部221から受ける。そして、メモリリクエスト管理部203は、各分割ロード命令に対応するユニキャストリードリクエストを生成する。
この場合、メモリリクエスト管理部203は、その分割ロード命令に割り当てられたリクエストIDをユニキャストリードリクエストに付加する。また、メモリリクエスト管理部203は、ユニキャストリードリクエストにおける応答の宛先欄には、自己が搭載されたロードストアユニット22を登録する。
その後、メモリリクエスト管理部203は、後述するMACユニット24のリクエスト受信バッファ241におけるデータバッファ領域を確保する。ここで、リクエスト受信バッファ241にデータバッファ領域が残っていない場合、メモリリクエスト管理部203は、リクエスト受信バッファ241のデータバッファ領域に空きができるまで待機する。そして、メモリリクエスト管理部203は、リクエスト受信バッファ241の空いたデータバッファ領域を確保する。その後、メモリリクエスト管理部203は、生成したユニキャストリードリクエストをリクエスト受信バッファ241に発行し、確保したデータバッファ領域に格納させる。
その後、メモリリクエスト管理部203は、ユニキャストリードリクエストに対する応答であるメモリリードコンプリーションのヘッダを後述するポート240のコンプリーション送信バッファ242から取得する。そして、メモリリクエスト管理部203は、取得した各メモリリードコンプリーションに格納されたリクエストIDが割り当てられた分割ロード命令を特定する。その後、メモリリクエスト管理部203は、特定した分割ロード命令の情報及びその分割ロード命令に割り当てられたリクエストIDをレジスタ制御部204へ送信する。
一方、マルチキャストロード命令の場合、メモリリクエスト管理部203は、全ての分割ロード命令の入力を命令分割部201から受ける。また、メモリリクエスト管理部203は、各分割ロード命令に割り当てられたリクエストIDの入力をマルチキャスト用ID獲得部222から受ける。これにより、メモリリクエスト管理部203は、分割ロード命令とリクエストIDとの対応情報を取得する。
また、メモリリクエスト管理部203は、自己が搭載されたロードストアユニット22が選定ロードストアユニット22の分割ロード命令を表す情報の入力を命令分割部201から受ける。そして、メモリリクエスト管理部203は、特定のリクエストIDの他の全ての対象ロードストアユニット22による獲得完了通知の入力をID獲得確認部224から受ける。この特定のリクエストIDは、自己が搭載されたロードストアユニット22が選定ロードストアユニット22である分割ロード命令に割り当てられたリクエストIDである。その後、メモリリクエスト管理部203は、自己が搭載されたロードストアユニット22が選定ロードストアユニット22である分割ロード命令に対応するマルチキャストリードリクエストを生成する。
図6は、マルチキャストリードリクエストのフォーマットの一例を示す図である。メモリリクエスト管理部203により生成されるマルチキャストリードリクエストは、図6に示すフォーマット302を有する。マルチキャストリードリクエストは、リクエストの種別を示すコマンド、読み出したデータの送信先を示す宛先、割り当てられたリクエストID及びデータの読み出しアドレスが登録される。例えば、コマンド、宛先及びリクエストIDは、第1サイクルで送られる。そして、アドレスは、第1サイクル及び第2サイクルで送られる。
例えば、メモリリクエスト管理部203は、コマンドとしてデータの読み出し命令であるリードコマンドをマルチキャストリードリクエストに登録する。また、メモリリクエスト管理部203は、ロード命令で宛先として指定されたロードストアユニット22、すなわち対象ロードストアユニット22を宛先としてマルチキャストリードリクエストに登録する。また、メモリリクエスト管理部203は、そのマルチキャストリードリクエストに対応する分割ロード命令に割り当てられたリクエストIDをマルチキャストリードリクエストのリクエストIDとして登録する。さらに、メモリリクエスト管理部203は、データの読み出しの開始アドレスをマルチキャストリードリクエストに登録する。この場合、データ長はメモリアクセス単位なので、メモリリクエスト管理部203は、通常はマルチキャストリードリクエストではデータ長の登録は行わなくてよい。ただし、最初や最後の分割ロード命令では、データがメモリアクセス単位より短いデータ長を読み出す場合があり、その場合、メモリリクエスト管理部203は、開始アドレスの後に、データ長を表す情報を登録するなどしてもよい。
その後、メモリリクエスト管理部203は、MACユニット24のリクエスト受信バッファ241におけるデータバッファ領域を確保する。ここで、リクエスト受信バッファ241にデータバッファ領域が残っていない場合、メモリリクエスト管理部203は、リクエスト受信バッファ241のデータバッファ領域に空きができるまで待機する。そして、メモリリクエスト管理部203は、リクエスト受信バッファ241の空いたデータバッファ領域を確保する。その後、メモリリクエスト管理部203は、生成したマルチキャストリードリクエストをリクエスト受信バッファ241に発行し、確保したデータバッファ領域に格納させる。ここで、メモリリクエスト管理部203は、全てのロードストアユニット22によるリクエストIDの獲得が完了すれば、リクエストIDの順番を無視して処理を行ってよい。
メモリリクエスト管理部203は、発行したマルチキャストリードリクエストに対する応答に対して以下の処理を行う。メモリリクエスト管理部203は、マルチキャストロード命令を分割した分割ロード命令の全てに対するメモリリードコンプリーションのヘッダを後述するポート240のコンプリーション送信バッファ242から取得する。
図7は、メモリリードコンプリーションのフォーマットの一例を示す図である。メモリリクエスト管理部203により取得されるメモリリードリコンプリーションは、図7に示すフォーマット303を有する。メモリリードコンプリーションにおける第1サイクルで送信される領域は、リクエストの種別を示すコマンド、応答の対象であるマルチキャストリードリクエストのリクエストID及び応答のステータス、並びに、リザーブの領域を有するヘッダが格納される。さらに、メモリリードコンプリーションの第2サイクル以降で送信される領域には、メモリリードデータが格納される。
メモリリクエスト管理部203は、取得した各メモリリードコンプリーションに格納されたリクエストIDから、そのリクエストIDが割り当てられた分割ロード命令を特定する。その後、メモリリクエスト管理部203は、特定した分割ロード命令の情報及びその分割ロード命令に割り当てられたリクエストIDをレジスタ制御部204へ出力する。このメモリリクエスト管理部203が、「処理要求実行部」の一例にあたる。
データバッファ205は、ユニキャストリードリクエスト又はマルチキャストリードリクエストに対する応答であるメモリリードコンプリーションに含まれるメモリリードデータをコンプリーション送信バッファ242から取得して格納する。
レジスタ制御部204は、ユニキャストロード命令及びマルチキャストロード命令の何れの場合にも、全ての分割ロード命令の情報の入力を命令分割部201から受ける。その後、レジスタ制御部204は、メモリリードコンプリーションが返ってきた分割ロード命令の情報及びその分割ロード命令に割り当てられたリクエストIDの入力をメモリリクエスト管理部203から受ける。
そして、レジスタ制御部204は、メモリリードコンプリーションが返ってきた分割ロード命令で読み出しが指定されたデータに対応するメモリリードデータをデータバッファ205から読み出す。さらに、レジスタ制御部204は、コア23が有するレジスタファイル231の書き込む領域を決定する。そして、レジスタ制御部204は、取得したメモリリードデータをコア23のレジスタファイル231の決定した領域に書き込むライトリクエストを生成する。そして、レジスタ制御部204は、ライトリクエストともに読み出したメモリリードデータをコア23のレジスタファイル231へ送信する。
その後、レジスタ制御部204は、メモリリードデータを格納するデータバッファ205を解放する。また、レジスタ制御部204は、メモリリードデータの送信が完了した分割ロード命令に割り当てられたリクエストIDをID管理部223に通知する。
さらに、レジスタ制御部204は、メモリリードデータの送信が完了した分割ロード命令の完了通知を命令分割部201へ出力する。ここで、コア23にデータを送信すればその後にデータが処理されることは確実であることから、レジスタ制御部204は、コア23からの応答を待たずに、データの送信を契機として分割ロード命令の完了を確定してよい。このレジスタ制御部204が、「出力部」の一例にあたる。
図2に戻って説明を続ける。MACユニット24は、複数のポート240を有する。各ポート240には、ロードストアユニット22がそれぞれ接続される。ここで、ポート240は、図4に示すように、リクエスト受信バッファ241及びコンプリーション送信バッファ242を有する。
リクエスト受信バッファ241は、格納可能なリクエストの数が予め決まる。例えば、4つのリクエストの格納領域を有するリクエスト受信バッファ241は、4段のリクエスト受信バッファ241と呼ばれる場合がある。リクエスト受信バッファ241には、ロードストアユニット22のメモリリクエスト管理部203から送られたメモリアクセスリクエストが格納される。例えば、リクエスト受信バッファ241には、分割ロード命令に対応するメモリリードリクエストが格納される。4段のリクエスト受信バッファ241は、4つのリクエストを格納した場合、少なくとも1つのリクエストがMACユニット24により処理されるまで新たなリクエストを受け付けない。そして、リクエスト受信バッファ241は、格納されたリクエストがMACユニット24に処理され、そのリクエストを格納した領域が空になった場合、その空になった領域に新たなリクエストを格納することができる。
コンプリーション送信バッファ242は、メモリアクセスリクエストに対する応答であるメモリリードコンプリーションが格納される。コンプリーション送信バッファ242も、格納可能なメモリリードコンプリーションの数に制限がある。そして、コンプリーション送信バッファ242に格納されたメモリリードコンプリーションは、ヘッダがメモリリクエスト管理部203に取得され、メモリリードデータがデータバッファ205に取得される。コンプリーション送信バッファ242は、格納するメモリリードコンプリーションがロードストアユニット22に取得されると、取得されたメモリリードコンプリーションの格納領域が空になり、新たなメモリリードコンプリーションが格納可能となる。
MACユニット24は、リクエスト受信バッファ241に格納されたメモリアクセスリクエストを取得して処理する。例えば、メモリアクセスリクエストがメモリリードリクエストの場合、MACユニット24は、そのメモリリードリクエストで指定されたメモリ25のアドレスからメモリリードデータを読み出す。そして、MACユニット24は、読み出したメモリリードデータを用いてメモリリードコンプリーションを生成してコンプリーション送信バッファ242に格納する。その後、MACユニット24は、コンプリーション送信バッファ242に格納されたメモリリードコンプリーションをロードストアユニット22へ送信する。このMACユニット24が、「制御部」の一例にあたる。
メモリ25は、記憶装置である。メモリ25は、MACユニット24の制御にしたがって、指定されたアドレスからのデータの読み出し及び指定されたアドレスに対するデータの書き込みを行う。このメモリ25が、「記憶装置」の一例にあたる。
次に、図8を参照して、ロード命令実行の処理の流れについて説明する。図8は、ロード命令実行の処理のフローチャートである。
インストラクションユニット21は、取得したロード命令をデコードしてロードストアユニット22に発行する(ステップS101)。ここで、ロード命令がユニキャストロード命令であれば、インストラクションユニット21は、1つのロードストアユニット22にロード命令を発行する。また、ロード命令がマルチキャストロード命令であれば、インストラクションユニット21は、複数の対象ロードストアユニット22にロード命令を発行する。
ロード命令を取得したロードストアユニット22は、メモリリードリクエスト発行処理を実行する(ステップS102)。
MACユニット24は、メモリリードリクエストをポート240に接続するロードストアユニット22から受信し(ステップS103)、リクエスト受信バッファ241に格納する。
次に、MACユニット24は、リクエスト受信バッファ241に格納されたメモリリードリクエストを取得し、取得したメモリリードリクエストにしたがいメモリリードを実行する(ステップS104)。
次に、MACユニット24は、処理したメモリリードリクエストがマルチキャストリードリクエストか否かを判定する(ステップS105)。例えば、MACユニット24は、メモリリードリクエストの宛先フィールドを確認し、宛先が複数であれば処理したメモリリードリクエストがマルチキャストリードリクエストであると判定する。
マルチキャストリードリクエストの場合(ステップS105:肯定)、MACユニット24は、メモリリードデータを付加したメモリリードコンプリーションを、宛先フィールドに記載された各対象ロードストアユニット22へ発行する(ステップS106)。
一方、ユニキャストリードリクエストの場合(ステップS105:否定)、MACユニット24は、メモリリードデータを付加したメモリリードコンプリーションを、宛先フィールドに記載された発行元のロードストアユニット22へ発行する(ステップS107)。
ロードストアユニット22は、MACユニット24からメモリリードコンプリーションを受信してライトリクエスト発行処理を実行する(ステップS108)。
インストラクションユニット21は、ロード命令の発行先の全てのロードストアユニット22から命令完了通知を受信したか否かを判定する(ステップS109)。ここで、ロード命令がマルチキャストロード命令であれば、インストラクションユニット21は、対象ロードストアユニット22の全てから命令完了通知を受信したか否かを判定する。
命令完了通知を受信していないロード命令の発行先のロードストアユニット22がある場合(ステップS109:否定)、インストラクションユニット21は、ロード命令の発行先の全てのロードストアユニット22から命令完了通知を受信するまで待機する。
これに対して、ロード命令の発行先の全てのロードストアユニット22から命令完了通知を受信した場合(ステップS109:肯定)、インストラクションユニット21は、ロード命令の実行を完了する。
次に、図9を参照して、メモリリードリクエスト発行処理の流れについて説明する。図9は、メモリリードリクエスト発行処理のフローチャートである。図9のフローチャートで表す処理は、図8におけるステップS102で実行される処理の一例にあたる。
命令分割部201は、インストラクションユニット21から発行されたロード命令を受信する(ステップS201)。
次に、命令分割部201は、ロード命令の宛先のコア23が複数か否かを判定する(ステップS202)。宛先のコア23が1つの場合(ステップS202:否定)、命令分割部201は、ロード命令がユニキャストロード命令であると判定する。その後、命令分割部201、リクエストID制御部202及びメモリリクエスト管理部203は、ユニキャストロード命令に対する処理を実行する(ステップS203)。
これに対して、宛先のコア23が複数の場合(ステップS202:肯定)、命令分割部201は、ロード命令がマルチキャストロード命令であると判定する。そして、命令分割部201は、ロード命令を分割し分割ロード命令を生成する(ステップS204)。
次に、命令分割部201は、分割ロード命令のうちの未選択の分割ロード命令で先頭の分割ロード命令を1つ選択する(ステップS205)。以下では、選択された分割ロード命令を「対象分割ロード命令」という。
また、命令分割部201は、選定ロードストアユニット22の情報の通知とともに対象分割ロード命令のリクエストIDの獲得をマルチキャスト用ID獲得部222に指示する。マルチキャスト用ID獲得部222は、命令分割部201からの指示を受けて、予め決められたリクエストID決定論理を用いて、獲得するリクエストIDを特定する(ステップS206)。
次に、マルチキャスト用ID獲得部222は、獲得するリクエストIDの空きがあるか否かをID管理部223に確認する(ステップS207)。獲得するリクエストIDが空いていない場合(ステップS207:否定)、マルチキャスト用ID獲得部222は、獲得するリクエストIDが空くまで待機する。
これに対して、獲得するリクエストIDの空きがある場合(ステップS207:肯定)、マルチキャスト用ID獲得部222は、リクエストIDを獲得する(ステップS208)。そして、マルチキャスト用ID獲得部222は、獲得したリクエストIDをメモリリクエスト管理部203に通知する。
次に、決定部211は、予め決められた発行担当決定論理を用いて、対象ロードストアユニット22の中から選定ロードストアユニット22を特定する(ステップS209)。そして、命令分割部201は、選定ロードストアユニット22の情報とともに対象分割ロード命令をメモリリクエスト管理部203へ出力する。
次に、決定部211は、自己が搭載されたロードストアユニット22が選定ロードストアユニット22か否かを判定し、マルチキャスト用ID獲得部222に通知する(ステップS210)。
自己が搭載されたロードストアユニット22が選定ロードストアユニット22でない場合(ステップS210:否定)、マルチキャスト用ID獲得部222は、リクエストIDの獲得通知を選定ロードストアユニット22に送信する(ステップS211)。そして、メモリリードリクエスト発行処理はステップS215へ進む。
一方、自己が搭載されたロードストアユニット22が選定ロードストアユニット22である場合(ステップS210:肯定)、ID獲得確認部224は、全ての対象ロードストアユニット22から獲得通知を受信したか否かを判定する(ステップS212)。獲得通知を受信していない対象ロードストアユニット22がある場合(ステップS212:否定)、ID獲得確認部224は、全ての対象ロードストアユニット22から獲得通知を受信するまで待機する。
これに対して、全ての対象ロードストアユニット22から獲得通知を受信した場合(ステップS212:肯定)、ID獲得確認部224は、全ての対象ロードストアユニット22によるリクエストIDの獲得完了をメモリリクエスト管理部203に通知する。メモリリクエスト管理部203は、全ての対象ロードストアユニット22によるリクエストIDの獲得完了の通知を受けて、リクエスト受信バッファ241に空きがあるか否かを判定する(ステップS213)。リクエスト受信バッファ241に空きが無い場合(ステップS213:否定)、メモリリクエスト管理部203は、リクエスト受信バッファ241に空きができるまで待機する。
これに対して、リクエスト受信バッファ241に空きがある場合(ステップS213:肯定)、メモリリクエスト管理部203は、マルチキャストリードリクエストを発行する(ステップS214)。
そして、命令分割部201は、全ての分割ロード命令に対応するリードリクエストの発行が完了したか否かを判定する(ステップS215)。リードリクエストの発行が行われていない分割ロード命令がある場合(ステップS215:否定)、命令分割部201は、ステップS205へ戻る。
これに対して、全ての分割ロード命令に対応するリードリクエストの発行が完了した場合(ステップS215:肯定)、ロードストアユニット22は、メモリリードリクエスト発行処理を終了する。
次に、図10を参照して、ライトリクエスト発行処理の流れについて説明する。図10は、ライトリクエスト発行処理のフローチャートである。図10のフローチャートで表す処理は、図8におけるステップS108で実行される処理の一例にあたる。
ロードストアユニット22は、メモリリードコンプリーションをMACユニット24が有する接続先のポート240のコンプリーション送信バッファ242から受信する(ステップS301)。そして、メモリリクエスト管理部203は、メモリリードコンプリーションのヘッダを取得する。また、メモリリードコンプリーションに付加されたメモリリードデータは、データバッファ205に格納される。
そして、メモリリクエスト管理部203は、メモリリードコンプリーションのヘッダに格納されたリクエストIDを取得し、対応する分割ロード命令を特定する。そして、メモリリクエスト管理部203は、特定した分割ロード命令の情報及びその分割ロード命令に対応するリクエストIDをレジスタ制御部204へ出力する。レジスタ制御部204は、メモリリードコンプリーションを受信した分割ロード命令の情報を取得する。そして、レジスタ制御部204は、リードデータを付加したライトリクエストをコア23のレジスタファイル231へ発行する(ステップS302)。
その後、レジスタ制御部204は、ライトリクエストを行ったメモリリードデータを格納するデータバッファ205を解放し、且つ、分割ロード命令に割り当てられたリクエストIDをID管理部223に通知してリクエストIDを解放する(ステップS303)。さらに、レジスタ制御部204は、分割ロード命令の完了を命令分割部201に通知する。
レジスタ制御部204は、ロード命令を分割して生成した各分割ロード命令に対応するライトリクエストを全て発行したか否かを判定する(ステップS304)。対応するライトリクエストが発行されていない分割ロード命令が存在する場合(ステップS304:否定)、ライトリクエスト発行処理は、ステップS301へ戻る。
これに対して、各分割ロード命令に対応するライトリクエストの全ての発行が完了した場合(ステップS304:肯定)、命令分割部201は、ロード命令を分割して生成した全ての分割ロード命令の完了通知をレジスタ制御部204から受信する。そして、命令分割部201は、ロード命令の完了をインストラクションユニット21に通知する(ステップS305)。
ここで、図11及び12を参照して、本実施例に係る情報処理装置1のマルチキャストロード命令の処理状態と従来の情報処理装置のマルチキャストロード命令の処理状態との比較について説明する。図11は、従来の情報処理装置のマルチキャストロード命令の処理状態を表す図である。また、図12は、実施例1に係る情報処理装置のマルチキャストロード命令の処理状態を表す図である。
ここでは、ロードストアユニット22として、ロードストアユニット#1~#8が存在する。また、ロード命令として、ロードLD1~LD5が発行される。そして、ロードLD1は、2つの分割ロード命令に分割され且つロードストアユニット#1が送信先であるユニキャストロード命令であり、そのユニキャストリードリクエストは、リード1-01及び1-02である。また、ロードLD2は、1つの分割ロード命令に分割され且つロードストアユニット#2が送信先であるユニキャストロード命令であり、そのユニキャストリードリクエストは、リード2-01である。また、ロードLD3は、16の分割ロード命令に分割され且つロードストアユニット#1~#8が送信先であるマルチキャストロード命令であり、そのマルチキャストリードリクエストはリード3-01~3-16である。また、ロードLD4は、1つの分割ロード命令に分割され且つロードストアユニット#1が送信先であるユニキャストロード命令であり、そのユニキャストリードリクエストは、リード4-01である。また、ロードLD5は、4つの分割ロード命令に分割され且つロードストアユニット#1~#4が送信先であるマルチキャストロード命令であり、そのマルチキャストリードリクエストはリード5-01~5-04である。また、リクエストIDとして00~15を使用する場合で説明する。
従来の情報処理装置では、マルチキャストリードリクエストを発行するロードストアユニット22は、特定のロードストアユニット22が選択される。そのため、従来の情報処理装置では、図11に示すような状態となる。
ロードLD1は、送信先がロードストアユニット#1であるので、ユニキャストリードリクエストは、ロードストアユニット#1が発行する。これらのユニキャストリードリクエストには、リクエストIDとして00及び01が割り当てられ、いずれもロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。そしてこの場合、ロードストアユニット#1が、メモリリードコンプリーションの受信及びライトリクエストの発行を行う。
次に、ロードLD2が処理されるが、この場合、既にリード1-01は処理されており、リクエストIDの00が空なので、リード2-01にリクエストIDとして00が割り当てられる。この場合、ロードストアユニット#2がユニキャストリードリクエストを発行する。このユニキャストリードリクエストは、ロードストアユニット#2に対応するリクエスト受信バッファ241に格納される。そしてこの場合、ロードストアユニット#2が、メモリリードコンプリーションの受信及びライトリクエストの発行を行う。
次に、ロードLD3が処理されるが、マルチキャストロード命令であり、図11に示すように、リード3-01~3-16の発行は全てロードストアユニット#1が代表して行う。この場合、リード3-01~3-16は、いずれもロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。そのため、そのリクエスト受信バッファ241に空きがなくなることが考えられ、その場合、リクエスト受信バッファ241の空きを待つために遅延が発生する。さらに、リード3-01~3-16にリクエストIDを発行するためにロードLD1及びLD2の双方が完了するのを待つので、そのための遅延が発生する。この場合は、ロードストアユニット#1~#8が、メモリリードコンプリーションの受信及びライトリクエストの発行を行う。
次に、ロードLD4が処理されるが、この場合、既にリード3-01が処理された可能性が高い。リクエストIDの00が空いていれば、リード4-01にリクエストIDとして00が割り当てられる。この場合、ロードストアユニット#1がユニキャストリードリクエストを発行する。このユニキャストリードリクエストは、ロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。そしてこの場合、ロードストアユニット#1が、メモリリードコンプリーションの受信及びライトリクエストの発行を行う。
次に、ロードLD5が処理されるが、マルチキャストロード命令であり、図11に示すように、マルチキャストリードリクエストであるリード5-01~5-04の発行は全てロードストアユニット#1が代表して行う。この場合、リード5-01~5-04は、いずれもロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。そのため、そのリクエスト受信バッファ241に空きがなくなることが考えられ、その場合、リクエスト受信バッファ241の空きを待つために遅延が発生する。さらに、リード5-01~5-04にリクエストIDを発行するためにロードLD3が完了するのを待つので、そのための遅延が発生する。この場合は、ロードストアユニット#1~#4が、メモリリードコンプリーションの受信及びライトリクエストの発行を行う。
このように、従来の情報処理装置では、リクエストIDの取得及びリクエスト受信バッファ241への格納時に多くの遅延が発生するおそれがある。
これに対して、本実施例に係る情報処理装置1は、ロードLD1及びLD2の処理は従来と同じであるが、ロードLD3の処理が従来と異なる。まず、リクエストIDは、リード3-01~3-16に対して、それぞれ00~15が獲得されると決定される。そして、全てのリクエストIDの解放を待たずに、ロードストアユニット#1~#8の全てでリクエストIDが獲得されることで、そのリクエストIDの獲得が完了する。
また、図12に示すように、ロードストアユニット#1が、リード3-01を発行する。ロードストアユニット#2が、リード3-02を発行する。ロードストアユニット#3が、リード3-03を発行する。ロードストアユニット#4が、リード3-04を発行する。ロードストアユニット#5が、リード3-05を発行する。ロードストアユニット#6が、リード3-06を発行する。ロードストアユニット#7が、リード3-07を発行する。ロードストアユニット#8が、リード3-08を発行する。さらに、ロードストアユニット#1が、リード3-09を発行する。ロードストアユニット#2が、リード3-10を発行する。ロードストアユニット#3が、リード3-11を発行する。ロードストアユニット#4が、リード3-12を発行する。ロードストアユニット#5が、リード3-13を発行する。ロードストアユニット#6が、リード3-14を発行する。ロードストアユニット#7が、リード3-15を発行する。ロードストアユニット#8が、リード3-16を発行する。
すなわち、リード3-01及び3-09が、ロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。リード3-02及び3-10が、ロードストアユニット#2に対応するリクエスト受信バッファ241に格納される。リード3-03及び3-11が、ロードストアユニット#3に対応するリクエスト受信バッファ241に格納される。リード3-04及び3-12が、ロードストアユニット#4に対応するリクエスト受信バッファ241に格納される。リード3-05及び3-13が、ロードストアユニット#5に対応するリクエスト受信バッファ241に格納される。リード3-06及び3-15が、ロードストアユニット#6に対応するリクエスト受信バッファ241に格納される。リード3-07及び3-15が、ロードストアユニット#7に対応するリクエスト受信バッファ241に格納される。リード3-08及び3-16が、ロードストアユニット#8に対応するリクエスト受信バッファ241に格納される。
したがって、ロードLD3の処理において、マルチキャストリードリクエストを格納するリクエスト受信バッファ241が分散され、各リクエスト受信バッファ241は直ぐに空きが発生する。そのため、リクエスト受信バッファ241の空きを待つことによる遅延の発生を軽減することができる。
続いて、ロードLD4の処理は従来と同じように実行される。そして、ロードLD5の処理では、リクエストIDは、リード5-01~5-04に対して、それぞれ00~03が獲得されると決定される。そして、全てのリクエストIDの解放を待たずに、ロードストアユニット#1~#4の全てでリクエストIDが獲得されることで、そのリクエストIDの獲得が完了する。
また、図12に示すように、ロードストアユニット#1が、リード5-01を発行する。ロードストアユニット#2が、リード5-02を発行する。ロードストアユニット#3が、リード5-03を発行する。ロードストアユニット#4が、リード5-04を発行する。
すなわち、リード5-01が、ロードストアユニット#1に対応するリクエスト受信バッファ241に格納される。リード5-02が、ロードストアユニット#2に対応するリクエスト受信バッファ241に格納される。リード5-03が、ロードストアユニット#3に対応するリクエスト受信バッファ241に格納される。リード5-04が、ロードストアユニット#4に対応するリクエスト受信バッファ241に格納される。
したがって、ロードLD5の処理においても、マルチキャストリードリクエストを格納するリクエスト受信バッファ241が分散され、各リクエスト受信バッファ241は直ぐに空きが発生する。そのため、リクエスト受信バッファ241の空きを待つことによる遅延の発生を軽減することができる。
以上に説明したように、本実施例に係る情報処理装置は、マルチキャストロード命令を分割した分割ロード命令毎に、マルチキャストロード命令が送信されたロードストアユニットの全てにおいて統一されたロードストアユニットを発行担当として選択する。そして、発行担当となるロードストアユニットは、分割命令毎に変更される。また、本実施例に係る情報処理装置は、マルチキャストロード命令を分割ロード命令毎に、マルチキャストロード命令が送信されたロードストアユニットの全てにおいて統一されたリクエストIDを獲得する。そして、マルチキャストロード命令が送信されたロードストアユニットの全てでリクエストIDが獲得された場合に、マルチキャストリードリクエストが発行担当のロードストアユニットから発行される。
これにより、マルチキャストリードリクエストを発行するロードストアユニットが分割ロード命令毎に変更されるので、マルチキャストリードリクエストを発行する処理がロードストアユニット間で分散される。したがって、特定のリクエスト受信バッファに対するマルチキャストリードリクエストの格納の偏りを軽減でき、メモリデータ転送のスループットを向上させることができる。
また、特定のリクエストIDさえ空けばそのリクエストIDが割り当てられた分割ロード命令のマルチキャストリードリクエストが発行できるので、リクエストIDが全て解放されるのを待つことなくマルチキャストリードリクエストを発行することができる。したがって、マルチキャストリードリクエストの発行に掛かる時間を短縮でき、メモリデータ転送のスループットを向上させることができる。
このように、マルチキャストリードリクエストの発行担当の分散及びマルチキャストリードリクエストの発行までの時間の短縮によりメモリデータ転送のスループットを向上させることができ、その結果として情報処理装置の処理性能が向上する。特に、行列演算などの同じデータを用いた計算を多数含む演算を実行する場合には、複数のコアに同じデータを読み込ませるマルチキャスト用ロード命令が発行される場合が多い。そのため、情報処理装置が行列演算などの同じデータを用いた計算を多数含む演算を行う場合に、特に処理性能の向上が見込まれる。
図13は、実施例2に係るアクセラレータのブロック図である。本実施例に係るアクセラレータ12は、コア23の中にインストラクションユニット21及びロードストアユニット22が搭載されることが実施例1と異なる。以下の説明では、実施例1と同様の各部は、特に説明のない限り同様の機能を有する。
本実施例に係るアクセラレータ12では、各コア23に搭載された各インストラクションユニット21は、自己が搭載されたコア23が読み込んだデータの宛先となる場合に、マルチキャストロード命令を取得する。そして、インストラクションユニット21は、自己と同じコア23に搭載されたロードストアユニット22にデコードしたマルチキャストロード命令を発行する。
本実施例に係るロードストアユニット22のブロック図も、図4で表される。決定部211は、データの宛先とされたコア23に搭載されたロードストアユニット22を対象ロードストアユニット22として、分割ロード命令毎に、予め決められた発行担当決定論理にしたがって、選定ロードストアユニット22を決定する。さらに、マルチキャスト用ID獲得部222は、予め決められたリクエストID決定論理にしたがいリクエストIDを決定する。各ロードストアユニット22の下に記載したリクエストIDは、各ロードストアユニット22それぞれが、各分割ロード命令に対して並んだ数字の左から順にリクエストIDとして決定していくことを表す。
そして、マルチキャスト用ID獲得部222は、決定したリクエストIDの獲得を行い、自己が搭載されたロードストアユニット22が選定ロードストアユニット22でなければ、リクエストIDの獲得を選定ロードストアユニット22に通知する。選定ロードストアユニット22のメモリリクエスト管理部203は、全ての対象ロードストアユニット22においてリクエストIDが確保され、リクエスト受信バッファ241に空きがあれば、マルチキャストリードリクエストを発行する。このようにして、対象ロードストアユニット22は、マルチキャストロード命令を処理する。
以上に説明したように、本実施例に係る情報処理装置においても、マルチキャストリードリクエストを発行する処理がロードストアユニット間で分散され、特定のリクエスト受信バッファに対するマルチキャストリードリクエストの格納の偏りを軽減できる。また、特定のリクエストIDさえ空けばそのリクエストIDが割り当てられた分割ロード命令のマルチキャストリードリクエストが発行できるので、リクエストIDが全て解放されるのを待つことなくマルチキャストリードリクエストを発行することができる。
したがって、本実施例に係る情報処理装置のように、各コアがそれぞれインストラクションユニット及びロードストアユニットを有する場合であっても、情報処理装置の処理性能を向上させることができる。
図14は、実施例3に係るアクセラレータのブロック図である。本実施例に係るアクセラレータ12は、1つのロードストアユニット22に対して、複数のコア23が数珠繋ぎで接続されることが実施例1と異なる。以下の説明では、実施例1と同様の各部は、特に説明のない限り同様の機能を有する。
本実施例に係る情報処理装置1におけるロードストアユニット22は、いくつかのコア23が接続される。すなわち、ロードストアユニット22は、複数のコア23のうちのいくつかが対応付けられる。
本実施例に係る情報処理装置1では、マルチキャストロード命令におけるデータの宛先として各ロードストアユニット22に接続するコア23の中から複数のコア23が選択される。ここで、宛先として選択されるコア23が接続されないロードストアユニット22があってもよい。また、ロードストアユニット22は、宛先として選択されたコア23が1つ接続されてもよいし複数接続されてもよい。
インストラクションユニット21は、マルチキャストロード命令のデータの宛先であるコア23が接続されたロードストアユニット22に対して、デコードしたマルチキャストロード命令を発行する。
本実施例に係るロードストアユニット22のブロック図も、図4で表される。決定部211は、データの宛先とされたコア23が接続されたロードストアユニット22を対象ロードストアユニット22として、分割ロード命令毎に、予め決められた発行担当決定論理にしたがって、選定ロードストアユニット22を決定する。さらに、マルチキャスト用ID獲得部222は、予め決められたリクエストID決定論理にしたがいリクエストIDを決定する。各ロードストアユニット22の下に記載したリクエストIDは、各ロードストアユニット22それぞれが、各分割ロード命令に対して並んだ数字の左から順にリクエストIDとして決定していくことを表す。
そして、マルチキャスト用ID獲得部222は、決定したリクエストIDの獲得を行う。そして、選定ロードストアユニット22以外のロードストアユニット22のマルチキャスト用ID獲得部222は、リクエストIDの獲得を選定ロードストアユニット22に通知する。また、選定ロードストアユニット22のメモリリクエスト管理部203は、全ての対象ロードストアユニット22においてリクエストIDが確保され、リクエスト受信バッファ241に空きがあれば、マルチキャストリードリクエストを発行する。
マルチキャストロード命令においてデータの宛先となるコア23が複数接続されたロードストアユニット22であれば、メモリリクエスト管理部203は、その複数のコア23が宛先とされたメモリリードコンプリーションを受信する。そして、レジスタ制御部204は、メモリリードコンプリーションに登録された宛先の中で自己が搭載されたロードストアユニット22に接続するコア23に向けて、メモリリードデータとともにライトリクエストを送信する。
以上に説明したように、本実施例に係る情報処理装置においても、マルチキャストリードリクエストを発行する処理がロードストアユニット間で分散され、特定のリクエスト受信バッファに対するマルチキャストリードリクエストの格納の偏りを軽減できる。また、特定のリクエストIDさえ空けばそのリクエストIDが割り当てられた分割ロード命令のマルチキャストリードリクエストが発行できるので、リクエストIDが全て解放されるのを待つことなくマルチキャストリードリクエストを発行することができる。
したがって、本実施例に係る情報処理装置のように、複数のコアが1つのロードストアユニットに接続される場合であっても、情報処理装置の処理性能を向上させることができる。
ここで、以上の各実施例ではアクセラレータ12に搭載されたロードストアユニット22、コア23及びメモリ25の間のデータの読み込みを例に説明したが、複数の演算処理装置が記憶装置から同じデータを読み込む装置であれば同様の機能が適用可能である。例えば、図1に示す情報処理装置1におけるCPU10が有するCPUコア及びロードストアユニットとメモリ15と間のデータの読み込みにも、以上で説明した機能を適用することができる。その場合、CPU10が、演算処理装置の一例にあたり、CPUコアが演算処理部の一例にあたり、CPU10が有するロードストアユニットが「アクセス部」の一例にあたる。また、メモリ15が、「記憶装置」の一例にあたる。
1 情報処理装置
10 CPU
11 I/Oコントローラ
12 アクセラレータ
13 ハードディスク
14 I/Oデバイス
15 メモリ
21 インストラクションユニット
22 ロードストアユニット
23 コア
24 MACユニット
25 メモリ
201 命令分割部
202 リクエストID制御部
203 メモリリクエスト管理部
204 レジスタ制御部
205 データバッファ
211 決定部
221 ユニキャスト用ID獲得部
222 マルチキャスト用ID獲得部
223 ID管理部
224 ID獲得確認部
231 レジスタファイル
232 演算実行部
240 ポート
241 リクエスト受信バッファ
242 コンプリーション送信バッファ

Claims (10)

  1. データを記憶する記憶装置と、
    前記記憶装置を制御する制御部と、
    取得した取得データに対する演算をそれぞれ行う複数の演算処理部と、
    前記複数の演算処理部のそれぞれに対応する複数のアクセス部とを備え、
    前記複数のアクセス部それぞれは、
    前記複数の演算処理部のうち、所定数の対象演算処理部に取得させるデータを前記記憶装置から読み出すマルチキャストロード命令を取得して、前記マルチキャストロード命令を分割した分割命令を生成する分割部と、
    前記分割命令毎に、前記分割命令に基づく読出要求を前記制御部に対して発行する選定アクセス部を、前記複数のアクセス部のうちの前記対象演算処理部に対応する対象アクセス部の中から選定する選定部と、
    前記選定部による選定に対応して、前記分割命令毎に全ての前記対象アクセス部において同一の識別情報を決定し、自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に対して決定した前記同一の識別情報を付与する決定部と、
    自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に基づく前記読出要求を前記制御部に対して発行するメモリリクエスト管理部と、
    前記選定アクセス部から出力された前記読出要求に対する応答であって全ての前記対象アクセス部において前記同一の識別情報が付された複数の応答を、前記選定アクセス部を含む前記対象アクセス部それぞれが前記制御部から取得し、取得した応答に基づくデータを、自己に対応する前記対象演算処理部に対して出力する出力部とを有する
    ことを特徴とする情報処理装置。
  2. 前記アクセス部が、自己が前記選定アクセス部として選定されなかった非選定アクセス部であり、且つ、識別情報が使用中であるために前記同一の識別情報として決定できない場合において、
    前記決定部は、前記識別情報を付した読出要求に対する前記応答の取得が完了した後、前記選定アクセス部に対して使用可能通知を送信することにより、前記同一の識別情報を使用可能とする
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記アクセス部が、自己が前記選定アクセス部である場合において、
    前記メモリリクエスト管理部は、前記非選定アクセス部から前記使用可能通知を取得したとき、前記分割命令に基づく前記読出要求を前記制御部に対して発行する
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記マルチキャストロード命令を取得して、取得した前記マルチキャストロード命令に基づいて前記対象アクセス部を特定し、前記マルチキャストロード命令を前記対象アクセス部に出力する命令出力部を有する
    ことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
  5. 前記演算処理部は、
    前記出力部が出力した取得データを格納する格納部と、
    前記格納部が格納した取得データを用いて演算を行う演算実行部と
    を備えたことを特徴とする請求項1~4の何れか一つに記載の情報処理装置。
  6. 前記アクセス部はさらに、各識別情報が使用中かを管理する管理部を有し、
    各前記アクセス部は、前記管理部からの通知に基づいて、識別情報が使用中かを判定する
    ことを特徴とする請求項1~5のいずれか一つに記載の情報処理装置。
  7. 前記アクセス部は、複数の前記演算処理部のうちのいくつかが対応付けられることを特徴とする請求項1~6のいずれか一つに記載の情報処理装置。
  8. 前記分割部は、前記出力部が前記マルチキャストロード命令を分割した前記分割命令のそれぞれに基づく各前記読出要求の全てについて前記対象演算処理部に対する出力を行った場合に、前記マルチキャストロード命令の完了通知を前記命令出力部に通知することを特徴とする請求項4に記載の情報処理装置。
  9. データを記憶する記憶装置に接続される演算処理装置であって、
    前記記憶装置を制御する制御部と、
    取得した取得データに対する演算をそれぞれ行う複数の演算処理部と、
    前記複数の演算処理部のそれぞれに対応する複数のアクセス部とを備え、
    前記複数のアクセス部それぞれは、
    前記複数の演算処理部のうち、所定数の対象演算処理部に取得させるデータを前記記憶装置から読み出すマルチキャストロード命令を取得して、前記マルチキャストロード命令を分割した分割命令を生成する分割部と、
    前記分割命令毎に、前記分割命令に基づく読出要求を前記制御部に対して発行する選定アクセス部を、前記複数のアクセス部のうちの前記対象演算処理部に対応する対象アクセス部の中から選定する選定部と、
    前記選定部による選定に対応して、前記分割命令毎に全ての前記対象アクセス部において同一の識別情報を決定し、自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に対して決定した前記同一の識別情報を付与する決定部と、
    自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に基づく前記読出要求を前記制御部に対して発行するメモリリクエスト管理部と、
    前記選定アクセス部から出力された前記読出要求に対する応答であって全ての前記対象アクセス部において前記同一の識別情報が付された複数の応答を、前記選定アクセス部を含む前記対象アクセス部それぞれが前記制御部から取得し、取得した応答に基づくデータを、自己に対応する前記対象演算処理部に対して出力する出力部とを有する
    ことを特徴とする演算処理装置。
  10. データを記憶する記憶装置と、前記記憶装置を制御する制御部と、取得したデータに対する演算をそれぞれ行う複数の演算処理部と、前記複数の演算処理部のそれぞれに対応し、前記複数の演算処理部のうち所定数の対象演算処理部に取得させるデータを前記記憶装置から読み出すマルチキャストロード命令を制御する複数のアクセス部とを有する情報処理装置の制御方法であって、
    複数の前記アクセス部それぞれに
    前記マルチキャストロード命令を取得して、前記マルチキャストロード命令を分割した分割命令を生成し、
    前記分割命令毎に、前記分割命令に基づく読出要求を前記制御部に対して発行するアクセス部を、前記複数のアクセス部のうちの前記対象演算処理部に対応する対象アクセス部の中から選定アクセス部として選定し、
    前記選定に対応して、前記分割命令毎に全ての前記対象アクセス部において同一の識別情報を決定し、自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に対して決定した前記同一の識別情報を付与し、
    自己が前記選定アクセス部として選定された場合、自己を前記選定アクセス部とした選定に対応する1つの前記分割命令に基づく前記読出要求を前記制御部に対して発行し、
    前記選定アクセス部から出力された前記読出要求に対する応答であって全ての前記対象アクセス部において前記同一の識別情報が付された複数の応答を、前記選定アクセス部を含む前記対象アクセス部それぞれが前記制御部から取得し、取得した応答に基づくデータを、自己に対応する前記対象演算処理部に対して出力する
    処理を実行させることを特徴とする情報処理装置の制御方法。
JP2018044761A 2018-03-12 2018-03-12 情報処理装置、演算処理装置及び情報処理装置の制御方法 Active JP7172068B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018044761A JP7172068B2 (ja) 2018-03-12 2018-03-12 情報処理装置、演算処理装置及び情報処理装置の制御方法
US16/295,450 US10901735B2 (en) 2018-03-12 2019-03-07 Apparatus and method to improve performance of memory accesses from plural arithmetic processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018044761A JP7172068B2 (ja) 2018-03-12 2018-03-12 情報処理装置、演算処理装置及び情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2019159722A JP2019159722A (ja) 2019-09-19
JP7172068B2 true JP7172068B2 (ja) 2022-11-16

Family

ID=67843955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018044761A Active JP7172068B2 (ja) 2018-03-12 2018-03-12 情報処理装置、演算処理装置及び情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US10901735B2 (ja)
JP (1) JP7172068B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043198A (ja) 1999-07-30 2001-02-16 Nec Eng Ltd システム間通信制御方式
JP2002335282A (ja) 2001-05-10 2002-11-22 Meidensha Corp マルチキャスト通信方式
JP2004516544A (ja) 2000-12-11 2004-06-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号処理装置および信号処理結果を複数のレジスタに供給する方法
JP2006039790A (ja) 2004-07-26 2006-02-09 Institute Of Physical & Chemical Research ブロードキャスト型並列処理のための演算処理装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198333A (ja) * 1996-01-18 1997-07-31 Nec Eng Ltd 拡張記憶装置アダプタを備えたシステム間通信制御装置
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
JP5040050B2 (ja) 2001-06-12 2012-10-03 富士通株式会社 複数チャネルdmaコントローラおよびプロセッサシステム
US7493511B1 (en) * 2004-08-27 2009-02-17 Xilinx, Inc. Network media access controller embedded in a programmable logic device—transmit-side client interface
US7340591B1 (en) * 2004-10-28 2008-03-04 Altera Corporation Providing parallel operand functions using register file and extra path storage
US20070274341A1 (en) * 2006-05-26 2007-11-29 Tellabs Petaluma, Inc. Method and system for managing software image downloads to ONTs over a PON network
US8117424B2 (en) * 2007-09-21 2012-02-14 Siemens Industry, Inc. Systems, devices, and/or methods for managing programmable logic controller processing
JP5068300B2 (ja) 2009-11-24 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データフロー及びプロセッサのメモリ共有化ための装置、方法及びプログラム
US8630286B2 (en) * 2011-09-30 2014-01-14 Broadcom Corporation System and method for improving multicast performance in banked shared memory architectures
US9047243B2 (en) * 2011-12-14 2015-06-02 Ip Reservoir, Llc Method and apparatus for low latency data distribution
US9026860B2 (en) * 2012-07-31 2015-05-05 International Business Machines Corpoation Securing crash dump files

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043198A (ja) 1999-07-30 2001-02-16 Nec Eng Ltd システム間通信制御方式
JP2004516544A (ja) 2000-12-11 2004-06-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号処理装置および信号処理結果を複数のレジスタに供給する方法
JP2002335282A (ja) 2001-05-10 2002-11-22 Meidensha Corp マルチキャスト通信方式
JP2006039790A (ja) 2004-07-26 2006-02-09 Institute Of Physical & Chemical Research ブロードキャスト型並列処理のための演算処理装置

Also Published As

Publication number Publication date
JP2019159722A (ja) 2019-09-19
US20190278602A1 (en) 2019-09-12
US10901735B2 (en) 2021-01-26

Similar Documents

Publication Publication Date Title
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
JP5309703B2 (ja) 共有メモリの制御回路、制御方法及び制御プログラム
US12019572B2 (en) Bridging module, data transmission system, and data transmission method
JP2007128369A (ja) データ処理システムおよびプログラム
JP2014048965A (ja) 情報処理装置,処理方法及びプログラム
US8775767B2 (en) Method and system for allocating memory to a pipeline
US11093291B2 (en) Resource assignment using CDA protocol in distributed processing environment based on task bid and resource cost
JP7172068B2 (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US20150269098A1 (en) Information processing apparatus, information processing method, storage, storage control method, and storage medium
US11960427B2 (en) Bridging module, data transmission system, and data transmission method
US10162530B2 (en) Computer and computer system for collision determination of a command identifier
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP6817827B2 (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
US20140317627A1 (en) Scheduling apparatus and method of dynamically setting the size of a rotating register
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
JP2005258509A (ja) ストレージ装置
JP6251417B2 (ja) ストレージシステム、及び、記憶制御方法
CN112463217A (zh) 超标量处理器中寄存器堆共享读端口的系统、方法和介质
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
JP2019164510A (ja) ストレージシステム及びio処理の制御方法
JP2005284578A (ja) バス装置
US10423424B2 (en) Replicated stateless copy engine
JP6992616B2 (ja) データ転送装置、データ転送方法、プログラム
JP2019040325A (ja) 電源管理装置,ノード電源管理方法およびノード電源管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220913

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: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221017

R150 Certificate of patent or registration of utility model

Ref document number: 7172068

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150